@rubytech/taskmaster 1.4.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agents/tool-policy.js +4 -12
- package/dist/build-info.json +3 -3
- package/dist/cli/daemon-cli/status.gather.js +7 -1
- package/dist/commands/doctor-config-flow.js +13 -1
- package/dist/config/agent-tools-reconcile.js +67 -0
- package/dist/control-ui/assets/{index-BDETQp97.js → index-D-PHW4mO.js} +340 -334
- package/dist/control-ui/assets/index-D-PHW4mO.js.map +1 -0
- package/dist/control-ui/assets/index-D6WTmXJM.css +1 -0
- package/dist/control-ui/index.html +2 -2
- package/dist/gateway/call.js +18 -3
- package/dist/gateway/server.impl.js +15 -1
- package/dist/infra/heartbeat-runner.js +8 -5
- package/dist/media/ptt-normalize.js +56 -0
- package/dist/memory/manager.js +42 -8
- package/dist/tts/tts.js +8 -0
- package/dist/web/auto-reply/deliver-reply.js +9 -3
- package/dist/web/outbound.js +2 -0
- package/extensions/diagnostics-otel/node_modules/.bin/acorn +0 -0
- package/extensions/googlechat/node_modules/.bin/taskmaster +0 -0
- package/extensions/line/node_modules/.bin/taskmaster +0 -0
- package/extensions/matrix/node_modules/.bin/markdown-it +0 -0
- package/extensions/matrix/node_modules/.bin/taskmaster +0 -0
- package/extensions/memory-lancedb/node_modules/.bin/arrow2csv +0 -0
- package/extensions/memory-lancedb/node_modules/.bin/openai +0 -0
- package/extensions/msteams/node_modules/.bin/taskmaster +0 -0
- package/extensions/nostr/node_modules/.bin/taskmaster +0 -0
- package/extensions/nostr/node_modules/.bin/tsc +0 -0
- package/extensions/nostr/node_modules/.bin/tsserver +0 -0
- package/extensions/zalo/node_modules/.bin/taskmaster +0 -0
- package/extensions/zalouser/node_modules/.bin/taskmaster +0 -0
- package/package.json +66 -54
- package/scripts/install.sh +5 -0
- package/scripts/postinstall.js +5 -0
- package/dist/control-ui/assets/index-BDETQp97.js.map +0 -1
- package/dist/control-ui/assets/index-CPawOl_z.css +0 -1
- package/templates/.DS_Store +0 -0
- package/templates/customer/.DS_Store +0 -0
- package/templates/customer/agents/.DS_Store +0 -0
- package/templates/maxy/.DS_Store +0 -0
- package/templates/maxy/.gitignore +0 -1
- package/templates/maxy/agents/.DS_Store +0 -0
- package/templates/maxy/agents/admin/.DS_Store +0 -0
- package/templates/maxy/memory/.DS_Store +0 -0
- package/templates/maxy/skills/.DS_Store +0 -0
- package/templates/taskmaster/.gitignore +0 -1
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
var kd=Object.defineProperty;var Sd=(e,t,n)=>t in e?kd(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var W=(e,t,n)=>Sd(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 o of s)if(o.type==="childList")for(const r of o.addedNodes)r.tagName==="LINK"&&r.rel==="modulepreload"&&i(r)}).observe(document,{childList:!0,subtree:!0});function n(s){const o={};return s.integrity&&(o.integrity=s.integrity),s.referrerPolicy&&(o.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?o.credentials="include":s.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function i(s){if(s.ep)return;s.ep=!0;const o=n(s);fetch(s.href,o)}})();const $d="modulepreload",Ad=function(e,t){return new URL(e,t).href},Er={},oe=function(t,n,i){let s=Promise.resolve();if(n&&n.length>0){let c=function(l){return Promise.all(l.map(p=>Promise.resolve(p).then(f=>({status:"fulfilled",value:f}),f=>({status:"rejected",reason:f}))))};const r=document.getElementsByTagName("link"),a=document.querySelector("meta[property=csp-nonce]"),u=(a==null?void 0:a.nonce)||(a==null?void 0:a.getAttribute("nonce"));s=c(n.map(l=>{if(l=Ad(l,i),l in Er)return;Er[l]=!0;const p=l.endsWith(".css"),f=p?'[rel="stylesheet"]':"";if(i)for(let h=r.length-1;h>=0;h--){const v=r[h];if(v.href===l&&(!p||v.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${l}"]${f}`))return;const b=document.createElement("link");if(b.rel=p?"stylesheet":$d,p||(b.as="script"),b.crossOrigin="",b.href=l,u&&b.setAttribute("nonce",u),document.head.appendChild(b),p)return new Promise((h,v)=>{b.addEventListener("load",h),b.addEventListener("error",()=>v(new Error(`Unable to preload CSS for ${l}`)))})}))}function o(r){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=r,window.dispatchEvent(a),!a.defaultPrevented)throw r}return s.then(r=>{for(const a of r||[])a.status==="rejected"&&o(a.reason);return t().catch(o)})};const ai=globalThis,mo=ai.ShadowRoot&&(ai.ShadyCSS===void 0||ai.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,yo=Symbol(),Cr=new WeakMap;let wl=class{constructor(t,n,i){if(this._$cssResult$=!0,i!==yo)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(mo&&t===void 0){const i=n!==void 0&&n.length===1;i&&(t=Cr.get(n)),t===void 0&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),i&&Cr.set(n,t))}return t}toString(){return this.cssText}};const xd=e=>new wl(typeof e=="string"?e:e+"",void 0,yo),Ed=(e,...t)=>{const n=e.length===1?e[0]:t.reduce((i,s,o)=>i+(r=>{if(r._$cssResult$===!0)return r.cssText;if(typeof r=="number")return r;throw Error("Value passed to 'css' function must be a 'css' function result: "+r+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(s)+e[o+1],e[0]);return new wl(n,e,yo)},Cd=(e,t)=>{if(mo)e.adoptedStyleSheets=t.map(n=>n instanceof CSSStyleSheet?n:n.styleSheet);else for(const n of t){const i=document.createElement("style"),s=ai.litNonce;s!==void 0&&i.setAttribute("nonce",s),i.textContent=n.cssText,e.appendChild(i)}},Tr=mo?e=>e:e=>e instanceof CSSStyleSheet?(t=>{let n="";for(const i of t.cssRules)n+=i.cssText;return xd(n)})(e):e;const{is:Td,defineProperty:_d,getOwnPropertyDescriptor:Md,getOwnPropertyNames:Pd,getOwnPropertySymbols:Ld,getPrototypeOf:Id}=Object,et=globalThis,_r=et.trustedTypes,Rd=_r?_r.emptyScript:"",rs=et.reactiveElementPolyfillSupport,mn=(e,t)=>e,hi={toAttribute(e,t){switch(t){case Boolean:e=e?Rd: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}},vo=(e,t)=>!Td(e,t),Mr={attribute:!0,type:String,converter:hi,reflect:!1,useDefault:!1,hasChanged:vo};Symbol.metadata??(Symbol.metadata=Symbol("metadata")),et.litPropertyMetadata??(et.litPropertyMetadata=new WeakMap);let Bt=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=Mr){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&&_d(this.prototype,t,s)}}static getPropertyDescriptor(t,n,i){const{get:s,set:o}=Md(this.prototype,t)??{get(){return this[n]},set(r){this[n]=r}};return{get:s,set(r){const a=s==null?void 0:s.call(this);o==null||o.call(this,r),this.requestUpdate(t,a,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??Mr}static _$Ei(){if(this.hasOwnProperty(mn("elementProperties")))return;const t=Id(this);t.finalize(),t.l!==void 0&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(mn("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(mn("properties"))){const n=this.properties,i=[...Pd(n),...Ld(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(Tr(s))}else t!==void 0&&n.push(Tr(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 Cd(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 o;const i=this.constructor.elementProperties.get(t),s=this.constructor._$Eu(t,i);if(s!==void 0&&i.reflect===!0){const r=(((o=i.converter)==null?void 0:o.toAttribute)!==void 0?i.converter:hi).toAttribute(n,i.type);this._$Em=t,r==null?this.removeAttribute(s):this.setAttribute(s,r),this._$Em=null}}_$AK(t,n){var o,r;const i=this.constructor,s=i._$Eh.get(t);if(s!==void 0&&this._$Em!==s){const a=i.getPropertyOptions(s),u=typeof a.converter=="function"?{fromAttribute:a.converter}:((o=a.converter)==null?void 0:o.fromAttribute)!==void 0?a.converter:hi;this._$Em=s;const c=u.fromAttribute(n,a.type);this[s]=c??((r=this._$Ej)==null?void 0:r.get(s))??c,this._$Em=null}}requestUpdate(t,n,i,s=!1,o){var r;if(t!==void 0){const a=this.constructor;if(s===!1&&(o=this[t]),i??(i=a.getPropertyOptions(t)),!((i.hasChanged??vo)(o,n)||i.useDefault&&i.reflect&&o===((r=this._$Ej)==null?void 0:r.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:o},r){i&&!(this._$Ej??(this._$Ej=new Map)).has(t)&&(this._$Ej.set(t,r??n??this[t]),o!==!0||r!==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[o,r]of this._$Ep)this[o]=r;this._$Ep=void 0}const s=this.constructor.elementProperties;if(s.size>0)for(const[o,r]of s){const{wrapped:a}=r,u=this[o];a!==!0||this._$AL.has(o)||u===void 0||this.C(o,void 0,r,u)}}let t=!1;const n=this._$AL;try{t=this.shouldUpdate(n),t?(this.willUpdate(n),(i=this._$EO)==null||i.forEach(s=>{var o;return(o=s.hostUpdate)==null?void 0:o.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){}};Bt.elementStyles=[],Bt.shadowRootOptions={mode:"open"},Bt[mn("elementProperties")]=new Map,Bt[mn("finalized")]=new Map,rs==null||rs({ReactiveElement:Bt}),(et.reactiveElementVersions??(et.reactiveElementVersions=[])).push("2.1.2");const yn=globalThis,Pr=e=>e,fi=yn.trustedTypes,Lr=fi?fi.createPolicy("lit-html",{createHTML:e=>e}):void 0,kl="$lit$",Ze=`lit$${Math.random().toFixed(9).slice(2)}$`,Sl="?"+Ze,Dd=`<${Sl}>`,vt=document,En=()=>vt.createComment(""),Cn=e=>e===null||typeof e!="object"&&typeof e!="function",bo=Array.isArray,Bd=e=>bo(e)||typeof(e==null?void 0:e[Symbol.iterator])=="function",as=`[
|
|
2
|
-
\f\r]`,
|
|
3
|
-
\f\r"'\`<>=]|("|')|))|$)`,"g"),Dr=/'/g,Br=/"/g,$l=/^(?:script|style|textarea|title)$/i,Nd=e=>(t,...n)=>({_$litType$:e,strings:t,values:n}),d=Nd(1),nt=Symbol.for("lit-noChange"),k=Symbol.for("lit-nothing"),Nr=new WeakMap,ht=vt.createTreeWalker(vt,129);function Al(e,t){if(!bo(e)||!e.hasOwnProperty("raw"))throw Error("invalid template strings array");return Lr!==void 0?Lr.createHTML(t):t}const Od=(e,t)=>{const n=e.length-1,i=[];let s,o=t===2?"<svg>":t===3?"<math>":"",r=nn;for(let a=0;a<n;a++){const u=e[a];let c,l,p=-1,f=0;for(;f<u.length&&(r.lastIndex=f,l=r.exec(u),l!==null);)f=r.lastIndex,r===nn?l[1]==="!--"?r=Ir:l[1]!==void 0?r=Rr:l[2]!==void 0?($l.test(l[2])&&(s=RegExp("</"+l[2],"g")),r=lt):l[3]!==void 0&&(r=lt):r===lt?l[0]===">"?(r=s??nn,p=-1):l[1]===void 0?p=-2:(p=r.lastIndex-l[2].length,c=l[1],r=l[3]===void 0?lt:l[3]==='"'?Br:Dr):r===Br||r===Dr?r=lt:r===Ir||r===Rr?r=nn:(r=lt,s=void 0);const b=r===lt&&e[a+1].startsWith("/>")?" ":"";o+=r===nn?u+Dd:p>=0?(i.push(c),u.slice(0,p)+kl+u.slice(p)+Ze+b):u+Ze+(p===-2?a:b)}return[Al(e,o+(e[n]||"<?>")+(t===2?"</svg>":t===3?"</math>":"")),i]};let Ks=class xl{constructor({strings:t,_$litType$:n},i){let s;this.parts=[];let o=0,r=0;const a=t.length-1,u=this.parts,[c,l]=Od(t,n);if(this.el=xl.createElement(c,i),ht.currentNode=this.el.content,n===2||n===3){const p=this.el.content.firstChild;p.replaceWith(...p.childNodes)}for(;(s=ht.nextNode())!==null&&u.length<a;){if(s.nodeType===1){if(s.hasAttributes())for(const p of s.getAttributeNames())if(p.endsWith(kl)){const f=l[r++],b=s.getAttribute(p).split(Ze),h=/([.?@])?(.*)/.exec(f);u.push({type:1,index:o,name:h[2],strings:b,ctor:h[1]==="."?Ud:h[1]==="?"?Wd:h[1]==="@"?Kd:Bi}),s.removeAttribute(p)}else p.startsWith(Ze)&&(u.push({type:6,index:o}),s.removeAttribute(p));if($l.test(s.tagName)){const p=s.textContent.split(Ze),f=p.length-1;if(f>0){s.textContent=fi?fi.emptyScript:"";for(let b=0;b<f;b++)s.append(p[b],En()),ht.nextNode(),u.push({type:2,index:++o});s.append(p[f],En())}}}else if(s.nodeType===8)if(s.data===Sl)u.push({type:2,index:o});else{let p=-1;for(;(p=s.data.indexOf(Ze,p+1))!==-1;)u.push({type:7,index:o}),p+=Ze.length-1}o++}}static createElement(t,n){const i=vt.createElement("template");return i.innerHTML=t,i}};function Wt(e,t,n=e,i){var r,a;if(t===nt)return t;let s=i!==void 0?(r=n._$Co)==null?void 0:r[i]:n._$Cl;const o=Cn(t)?void 0:t._$litDirective$;return(s==null?void 0:s.constructor)!==o&&((a=s==null?void 0:s._$AO)==null||a.call(s,!1),o===void 0?s=void 0:(s=new o(e),s._$AT(e,n,i)),i!==void 0?(n._$Co??(n._$Co=[]))[i]=s:n._$Cl=s),s!==void 0&&(t=Wt(e,s._$AS(e,t.values),s,i)),t}class Fd{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)??vt).importNode(n,!0);ht.currentNode=s;let o=ht.nextNode(),r=0,a=0,u=i[0];for(;u!==void 0;){if(r===u.index){let c;u.type===2?c=new Di(o,o.nextSibling,this,t):u.type===1?c=new u.ctor(o,u.name,u.strings,this,t):u.type===6&&(c=new zd(o,this,t)),this._$AV.push(c),u=i[++a]}r!==(u==null?void 0:u.index)&&(o=ht.nextNode(),r++)}return ht.currentNode=vt,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 Di=class El{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=Wt(this,t,n),Cn(t)?t===k||t==null||t===""?(this._$AH!==k&&this._$AR(),this._$AH=k):t!==this._$AH&&t!==nt&&this._(t):t._$litType$!==void 0?this.$(t):t.nodeType!==void 0?this.T(t):Bd(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&&Cn(this._$AH)?this._$AA.nextSibling.data=t:this.T(vt.createTextNode(t)),this._$AH=t}$(t){var o;const{values:n,_$litType$:i}=t,s=typeof i=="number"?this._$AC(t):(i.el===void 0&&(i.el=Ks.createElement(Al(i.h,i.h[0]),this.options)),i);if(((o=this._$AH)==null?void 0:o._$AD)===s)this._$AH.p(n);else{const r=new Fd(s,this),a=r.u(this.options);r.p(n),this.T(a),this._$AH=r}}_$AC(t){let n=Nr.get(t.strings);return n===void 0&&Nr.set(t.strings,n=new Ks(t)),n}k(t){bo(this._$AH)||(this._$AH=[],this._$AR());const n=this._$AH;let i,s=0;for(const o of t)s===n.length?n.push(i=new El(this.O(En()),this.O(En()),this,this.options)):i=n[s],i._$AI(o),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=Pr(t).nextSibling;Pr(t).remove(),t=s}}setConnected(t){var n;this._$AM===void 0&&(this._$Cv=t,(n=this._$AP)==null||n.call(this,t))}};class Bi{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,n,i,s,o){this.type=1,this._$AH=k,this._$AN=void 0,this.element=t,this.name=n,this._$AM=s,this.options=o,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 o=this.strings;let r=!1;if(o===void 0)t=Wt(this,t,n,0),r=!Cn(t)||t!==this._$AH&&t!==nt,r&&(this._$AH=t);else{const a=t;let u,c;for(t=o[0],u=0;u<o.length-1;u++)c=Wt(this,a[i+u],n,u),c===nt&&(c=this._$AH[u]),r||(r=!Cn(c)||c!==this._$AH[u]),c===k?t=k:t!==k&&(t+=(c??"")+o[u+1]),this._$AH[u]=c}r&&!s&&this.j(t)}j(t){t===k?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??"")}}let Ud=class extends Bi{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===k?void 0:t}},Wd=class extends Bi{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==k)}},Kd=class extends Bi{constructor(t,n,i,s,o){super(t,n,i,s,o),this.type=5}_$AI(t,n=this){if((t=Wt(this,t,n,0)??k)===nt)return;const i=this._$AH,s=t===k&&i!==k||t.capture!==i.capture||t.once!==i.once||t.passive!==i.passive,o=t!==k&&(i===k||s);s&&this.element.removeEventListener(this.name,this,i),o&&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)}},zd=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){Wt(this,t)}};const qd={I:Di},ls=yn.litHtmlPolyfillSupport;ls==null||ls(Ks,Di),(yn.litHtmlVersions??(yn.litHtmlVersions=[])).push("3.3.2");const Hd=(e,t,n)=>{const i=(n==null?void 0:n.renderBefore)??t;let s=i._$litPart$;if(s===void 0){const o=(n==null?void 0:n.renderBefore)??null;i._$litPart$=s=new Di(t.insertBefore(En(),o),o,void 0,n??{})}return s._$AI(e),s};const gt=globalThis;let Ot=class extends Bt{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=Hd(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 nt}};var bl;Ot._$litElement$=!0,Ot.finalized=!0,(bl=gt.litElementHydrateSupport)==null||bl.call(gt,{LitElement:Ot});const cs=gt.litElementPolyfillSupport;cs==null||cs({LitElement:Ot});(gt.litElementVersions??(gt.litElementVersions=[])).push("4.2.2");const Cl=e=>(t,n)=>{n!==void 0?n.addInitializer(()=>{customElements.define(e,t)}):customElements.define(e,t)};const jd={attribute:!0,type:String,converter:hi,reflect:!1,hasChanged:vo},Vd=(e=jd,t,n)=>{const{kind:i,metadata:s}=n;let o=globalThis.litPropertyMetadata.get(s);if(o===void 0&&globalThis.litPropertyMetadata.set(s,o=new Map),i==="setter"&&((e=Object.create(e)).wrapped=!0),o.set(n.name,e),i==="accessor"){const{name:r}=n;return{set(a){const u=t.get.call(this);t.set.call(this,a),this.requestUpdate(r,u,e,!0,a)},init(a){return a!==void 0&&this.C(r,void 0,e,a),a}}}if(i==="setter"){const{name:r}=n;return function(a){const u=this[r];t.call(this,a),this.requestUpdate(r,u,e,!0,a)}}throw Error("Unsupported decorator location: "+i)};function Ni(e){return(t,n)=>typeof n=="object"?Vd(e,t,n):((i,s,o)=>{const r=s.hasOwnProperty(o);return s.constructor.createProperty(o,i),r?Object.getOwnPropertyDescriptor(s,o):void 0})(e,t,n)}function y(e){return Ni({...e,state:!0,attribute:!1})}const Gd=50,Qd=200,Yd="Assistant";function Or(e,t){if(typeof e!="string")return;const n=e.trim();if(n)return n.length<=t?n:n.slice(0,t)}function zs(e){const t=Or(e==null?void 0:e.name,Gd)??Yd,n=Or((e==null?void 0:e.avatar)??void 0,Qd)??null;return{agentId:typeof(e==null?void 0:e.agentId)=="string"&&e.agentId.trim()?e.agentId.trim():null,name:t,avatar:n}}function Xd(){return zs(typeof window>"u"?{}:{name:window.__TASKMASTER_ASSISTANT_NAME__,avatar:window.__TASKMASTER_ASSISTANT_AVATAR__})}const Jd="Taskmaster",Zd="/taskmaster-icon.png",ep="#00d4ff",tp="";let qn=null;function He(){return qn||(qn={name:window.__TASKMASTER_BRAND_NAME__||Jd,iconUrl:window.__TASKMASTER_BRAND_ICON_URL__||Zd,accentColor:window.__TASKMASTER_ACCENT_COLOR__||ep,backgroundColor:window.__TASKMASTER_BACKGROUND_COLOR__||tp},qn)}function Le(){return window.__TASKMASTER_WORKSPACE_BRANDS__??{}}function Tl(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 np(e){const t=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(e);if(!t)return 0;const[n,i,s]=[t[1],t[2],t[3]].map(o=>{const r=parseInt(o,16)/255;return r<=.03928?r/12.92:Math.pow((r+.055)/1.055,2.4)});return .2126*n+.7152*i+.0722*s}function _l(e){const t=Tl(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 i=np(e)>.4?"#111111":"#ffffff";n.style.setProperty("--accent-foreground",i),n.style.setProperty("--primary-foreground",i)}function Hn(e,t,n){const i=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(e),s=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(t);if(!i||!s)return e;const o=(c,l)=>Math.round(parseInt(i[c],16)*(1-n)+parseInt(s[l],16)*n),r=o(1,1),a=o(2,2),u=o(3,3);return`#${r.toString(16).padStart(2,"0")}${a.toString(16).padStart(2,"0")}${u.toString(16).padStart(2,"0")}`}const sn={"--bg":"#12141a","--bg-muted":"#262a35","--card":"#181b22","--secondary":"#1e2028"};function Ml(e){const t=document.documentElement;if(!e){for(const[i,s]of Object.entries(sn))t.style.setProperty(i,s);t.style.removeProperty("--brand-bg"),t.style.removeProperty("--brand-bg-subtle"),t.style.removeProperty("--brand-bg-card");return}const n=Tl(e);n&&(t.style.setProperty("--bg",Hn(sn["--bg"],e,.08)),t.style.setProperty("--bg-muted",Hn(sn["--bg-muted"],e,.1)),t.style.setProperty("--card",Hn(sn["--card"],e,.12)),t.style.setProperty("--secondary",Hn(sn["--secondary"],e,.1)),t.style.setProperty("--brand-bg",e),t.style.setProperty("--brand-bg-subtle",`rgba(${n}, 0.08)`),t.style.setProperty("--brand-bg-card",`rgba(${n}, 0.12)`))}function vn(e){const t=He(),n=Le(),i=e?n[e]:void 0,s=(i==null?void 0:i.accentColor)??t.accentColor;_l(s);const o=(i==null?void 0:i.backgroundColor)??t.backgroundColor;Ml(o)}const gi="taskmaster.control.settings.v1",Pl="taskmaster.account.settings.";function bn(){return`${location.protocol==="https:"?"wss":"ws"}://${location.host}`}const Dt={gatewayUrl:bn(),token:"",theme:"system",navCollapsed:!1,navGroupsCollapsed:{}},Je={sessionKey:"main",lastActiveSessionKey:"main",chatFocusMode:!1,chatShowThinking:!1,splitRatio:.6};function ip(){try{const e=localStorage.getItem(gi);if(!e)return{...Dt,gatewayUrl:bn()};const t=JSON.parse(e);return{gatewayUrl:typeof t.gatewayUrl=="string"&&t.gatewayUrl.trim()?t.gatewayUrl.trim():bn(),token:typeof t.token=="string"?t.token:Dt.token,theme:t.theme==="light"||t.theme==="dark"||t.theme==="system"?t.theme:Dt.theme,navCollapsed:typeof t.navCollapsed=="boolean"?t.navCollapsed:Dt.navCollapsed,navGroupsCollapsed:typeof t.navGroupsCollapsed=="object"&&t.navGroupsCollapsed!==null?t.navGroupsCollapsed:Dt.navGroupsCollapsed}}catch{return{...Dt,gatewayUrl:bn()}}}function sp(e){if(!e)return{...Je};try{const t=localStorage.getItem(Pl+e);if(!t)return{...Je};const n=JSON.parse(t);return{sessionKey:typeof n.sessionKey=="string"&&n.sessionKey.trim()?n.sessionKey.trim():Je.sessionKey,lastActiveSessionKey:typeof n.lastActiveSessionKey=="string"&&n.lastActiveSessionKey.trim()?n.lastActiveSessionKey.trim():typeof n.sessionKey=="string"&&n.sessionKey.trim()||Je.lastActiveSessionKey,chatFocusMode:typeof n.chatFocusMode=="boolean"?n.chatFocusMode:Je.chatFocusMode,chatShowThinking:typeof n.chatShowThinking=="boolean"?n.chatShowThinking:Je.chatShowThinking,splitRatio:typeof n.splitRatio=="number"&&n.splitRatio>=.4&&n.splitRatio<=.7?n.splitRatio:Je.splitRatio}}catch{return{...Je}}}let mi=null;function Fr(e){mi=e}function us(){return{...ip(),...sp(mi)}}function op(e){const t={gatewayUrl:e.gatewayUrl,token:e.token,theme:e.theme,navCollapsed:e.navCollapsed,navGroupsCollapsed:e.navGroupsCollapsed};if(localStorage.setItem(gi,JSON.stringify(t)),mi){const n={sessionKey:e.sessionKey,lastActiveSessionKey:e.lastActiveSessionKey,chatFocusMode:e.chatFocusMode,chatShowThinking:e.chatShowThinking,splitRatio:e.splitRatio};localStorage.setItem(Pl+mi,JSON.stringify(n))}}(function(){try{const t=localStorage.getItem(gi);if(!t)return;const n=JSON.parse(t);if(!("sessionKey"in n))return;const i={gatewayUrl:typeof n.gatewayUrl=="string"?n.gatewayUrl:bn(),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(gi,JSON.stringify(i))}catch{}})();function Ll(e){var o;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=(o=n[1])==null?void 0:o.trim(),s=n.slice(2).join(":");return!i||!s?null:{agentId:i,rest:s}}const rp=/<\s*\/?\s*(?:think(?:ing)?|thought|antthinking|final)\b/i,jn=/<\s*\/?\s*final\b[^>]*>/gi,Ur=/<\s*(\/?)\s*(?:think(?:ing)?|thought|antthinking)\b[^>]*>/gi;function ap(e,t){return e.trimStart()}function lp(e,t){if(!e||!rp.test(e))return e;let n=e;jn.test(n)?(jn.lastIndex=0,n=n.replace(jn,"")):jn.lastIndex=0,Ur.lastIndex=0;let i="",s=0,o=!1;for(const r of n.matchAll(Ur)){const a=r.index??0,u=r[1]==="/";o?u&&(o=!1):(i+=n.slice(s,a),u||(o=!0)),s=a+r[0].length}return i+=n.slice(s),ap(i)}function Il(e){return!e&&e!==0?"n/a":new Date(e).toLocaleString(void 0,{dateStyle:"medium",timeStyle:"medium"})}function Oi(e){if(!e&&e!==0)return"n/a";const t=Date.now()-e;if(t<0){const r=-t,a=Math.round(r/1e3);if(a<60)return`in ${a}s`;const u=Math.round(a/60);if(u<60)return`in ${u}m`;const c=Math.round(u/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 Rl(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 cp(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 yi(e,t){const n=Number(e);return Number.isFinite(n)?n:t}function ds(e){return lp(e)}const up=/^\[([^\]]+)\]\s*/,dp=["WebChat","WhatsApp","Telegram","Signal","Slack","Discord","iMessage","Teams","Matrix","Zalo","Zalo Personal","BlueBubbles"],ps=new WeakMap,hs=new WeakMap;function pp(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:dp.some(t=>e.startsWith(`${t} `))}function fs(e){const t=e.match(up);if(!t)return e;const n=t[1]??"";return pp(n)?e.slice(t[0].length):e}function wn(e){const t=e,n=typeof t.role=="string"?t.role:"",i=t.content;if(typeof i=="string")return n==="assistant"?ds(i):fs(i);if(Array.isArray(i)){const s=i.map(o=>{const r=o;return r.type==="text"&&typeof r.text=="string"?r.text:null}).filter(o=>typeof o=="string");if(s.length>0){const o=s.join(`
|
|
4
|
-
`);return n==="assistant"?
|
|
5
|
-
`);const s=
|
|
6
|
-
`):null}function
|
|
7
|
-
`)}return typeof t.text=="string"?t.text:null}function
|
|
8
|
-
`):""}const
|
|
1
|
+
var Fd=Object.defineProperty;var Ud=(e,t,n)=>t in e?Fd(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var W=(e,t,n)=>Ud(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 o of s)if(o.type==="childList")for(const r of o.addedNodes)r.tagName==="LINK"&&r.rel==="modulepreload"&&i(r)}).observe(document,{childList:!0,subtree:!0});function n(s){const o={};return s.integrity&&(o.integrity=s.integrity),s.referrerPolicy&&(o.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?o.credentials="include":s.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function i(s){if(s.ep)return;s.ep=!0;const o=n(s);fetch(s.href,o)}})();const Wd="modulepreload",Kd=function(e,t){return new URL(e,t).href},Wr={},oe=function(t,n,i){let s=Promise.resolve();if(n&&n.length>0){let c=function(l){return Promise.all(l.map(p=>Promise.resolve(p).then(f=>({status:"fulfilled",value:f}),f=>({status:"rejected",reason:f}))))};const r=document.getElementsByTagName("link"),a=document.querySelector("meta[property=csp-nonce]"),u=(a==null?void 0:a.nonce)||(a==null?void 0:a.getAttribute("nonce"));s=c(n.map(l=>{if(l=Kd(l,i),l in Wr)return;Wr[l]=!0;const p=l.endsWith(".css"),f=p?'[rel="stylesheet"]':"";if(i)for(let h=r.length-1;h>=0;h--){const v=r[h];if(v.href===l&&(!p||v.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${l}"]${f}`))return;const b=document.createElement("link");if(b.rel=p?"stylesheet":Wd,p||(b.as="script"),b.crossOrigin="",b.href=l,u&&b.setAttribute("nonce",u),document.head.appendChild(b),p)return new Promise((h,v)=>{b.addEventListener("load",h),b.addEventListener("error",()=>v(new Error(`Unable to preload CSS for ${l}`)))})}))}function o(r){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=r,window.dispatchEvent(a),!a.defaultPrevented)throw r}return s.then(r=>{for(const a of r||[])a.status==="rejected"&&o(a.reason);return t().catch(o)})};const fi=globalThis,Mo=fi.ShadowRoot&&(fi.ShadyCSS===void 0||fi.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,Po=Symbol(),Kr=new WeakMap;let Nl=class{constructor(t,n,i){if(this._$cssResult$=!0,i!==Po)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(Mo&&t===void 0){const i=n!==void 0&&n.length===1;i&&(t=Kr.get(n)),t===void 0&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),i&&Kr.set(n,t))}return t}toString(){return this.cssText}};const zd=e=>new Nl(typeof e=="string"?e:e+"",void 0,Po),qd=(e,...t)=>{const n=e.length===1?e[0]:t.reduce((i,s,o)=>i+(r=>{if(r._$cssResult$===!0)return r.cssText;if(typeof r=="number")return r;throw Error("Value passed to 'css' function must be a 'css' function result: "+r+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(s)+e[o+1],e[0]);return new Nl(n,e,Po)},Hd=(e,t)=>{if(Mo)e.adoptedStyleSheets=t.map(n=>n instanceof CSSStyleSheet?n:n.styleSheet);else for(const n of t){const i=document.createElement("style"),s=fi.litNonce;s!==void 0&&i.setAttribute("nonce",s),i.textContent=n.cssText,e.appendChild(i)}},zr=Mo?e=>e:e=>e instanceof CSSStyleSheet?(t=>{let n="";for(const i of t.cssRules)n+=i.cssText;return zd(n)})(e):e;const{is:jd,defineProperty:Vd,getOwnPropertyDescriptor:Gd,getOwnPropertyNames:Qd,getOwnPropertySymbols:Yd,getPrototypeOf:Xd}=Object,tt=globalThis,qr=tt.trustedTypes,Jd=qr?qr.emptyScript:"",gs=tt.reactiveElementPolyfillSupport,bn=(e,t)=>e,wi={toAttribute(e,t){switch(t){case Boolean:e=e?Jd: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}},Lo=(e,t)=>!jd(e,t),Hr={attribute:!0,type:String,converter:wi,reflect:!1,useDefault:!1,hasChanged:Lo};Symbol.metadata??(Symbol.metadata=Symbol("metadata")),tt.litPropertyMetadata??(tt.litPropertyMetadata=new WeakMap);let Ot=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=Hr){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&&Vd(this.prototype,t,s)}}static getPropertyDescriptor(t,n,i){const{get:s,set:o}=Gd(this.prototype,t)??{get(){return this[n]},set(r){this[n]=r}};return{get:s,set(r){const a=s==null?void 0:s.call(this);o==null||o.call(this,r),this.requestUpdate(t,a,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??Hr}static _$Ei(){if(this.hasOwnProperty(bn("elementProperties")))return;const t=Xd(this);t.finalize(),t.l!==void 0&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(bn("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(bn("properties"))){const n=this.properties,i=[...Qd(n),...Yd(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(zr(s))}else t!==void 0&&n.push(zr(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 Hd(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 o;const i=this.constructor.elementProperties.get(t),s=this.constructor._$Eu(t,i);if(s!==void 0&&i.reflect===!0){const r=(((o=i.converter)==null?void 0:o.toAttribute)!==void 0?i.converter:wi).toAttribute(n,i.type);this._$Em=t,r==null?this.removeAttribute(s):this.setAttribute(s,r),this._$Em=null}}_$AK(t,n){var o,r;const i=this.constructor,s=i._$Eh.get(t);if(s!==void 0&&this._$Em!==s){const a=i.getPropertyOptions(s),u=typeof a.converter=="function"?{fromAttribute:a.converter}:((o=a.converter)==null?void 0:o.fromAttribute)!==void 0?a.converter:wi;this._$Em=s;const c=u.fromAttribute(n,a.type);this[s]=c??((r=this._$Ej)==null?void 0:r.get(s))??c,this._$Em=null}}requestUpdate(t,n,i,s=!1,o){var r;if(t!==void 0){const a=this.constructor;if(s===!1&&(o=this[t]),i??(i=a.getPropertyOptions(t)),!((i.hasChanged??Lo)(o,n)||i.useDefault&&i.reflect&&o===((r=this._$Ej)==null?void 0:r.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:o},r){i&&!(this._$Ej??(this._$Ej=new Map)).has(t)&&(this._$Ej.set(t,r??n??this[t]),o!==!0||r!==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[o,r]of this._$Ep)this[o]=r;this._$Ep=void 0}const s=this.constructor.elementProperties;if(s.size>0)for(const[o,r]of s){const{wrapped:a}=r,u=this[o];a!==!0||this._$AL.has(o)||u===void 0||this.C(o,void 0,r,u)}}let t=!1;const n=this._$AL;try{t=this.shouldUpdate(n),t?(this.willUpdate(n),(i=this._$EO)==null||i.forEach(s=>{var o;return(o=s.hostUpdate)==null?void 0:o.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){}};Ot.elementStyles=[],Ot.shadowRootOptions={mode:"open"},Ot[bn("elementProperties")]=new Map,Ot[bn("finalized")]=new Map,gs==null||gs({ReactiveElement:Ot}),(tt.reactiveElementVersions??(tt.reactiveElementVersions=[])).push("2.1.2");const wn=globalThis,jr=e=>e,ki=wn.trustedTypes,Vr=ki?ki.createPolicy("lit-html",{createHTML:e=>e}):void 0,Ol="$lit$",et=`lit$${Math.random().toFixed(9).slice(2)}$`,Fl="?"+et,Zd=`<${Fl}>`,wt=document,Pn=()=>wt.createComment(""),Ln=e=>e===null||typeof e!="object"&&typeof e!="function",Io=Array.isArray,ep=e=>Io(e)||typeof(e==null?void 0:e[Symbol.iterator])=="function",ms=`[
|
|
2
|
+
\f\r]`,rn=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,Gr=/-->/g,Qr=/>/g,ct=RegExp(`>|${ms}(?:([^\\s"'>=/]+)(${ms}*=${ms}*(?:[^
|
|
3
|
+
\f\r"'\`<>=]|("|')|))|$)`,"g"),Yr=/'/g,Xr=/"/g,Ul=/^(?:script|style|textarea|title)$/i,tp=e=>(t,...n)=>({_$litType$:e,strings:t,values:n}),d=tp(1),it=Symbol.for("lit-noChange"),k=Symbol.for("lit-nothing"),Jr=new WeakMap,ft=wt.createTreeWalker(wt,129);function Wl(e,t){if(!Io(e)||!e.hasOwnProperty("raw"))throw Error("invalid template strings array");return Vr!==void 0?Vr.createHTML(t):t}const np=(e,t)=>{const n=e.length-1,i=[];let s,o=t===2?"<svg>":t===3?"<math>":"",r=rn;for(let a=0;a<n;a++){const u=e[a];let c,l,p=-1,f=0;for(;f<u.length&&(r.lastIndex=f,l=r.exec(u),l!==null);)f=r.lastIndex,r===rn?l[1]==="!--"?r=Gr:l[1]!==void 0?r=Qr:l[2]!==void 0?(Ul.test(l[2])&&(s=RegExp("</"+l[2],"g")),r=ct):l[3]!==void 0&&(r=ct):r===ct?l[0]===">"?(r=s??rn,p=-1):l[1]===void 0?p=-2:(p=r.lastIndex-l[2].length,c=l[1],r=l[3]===void 0?ct:l[3]==='"'?Xr:Yr):r===Xr||r===Yr?r=ct:r===Gr||r===Qr?r=rn:(r=ct,s=void 0);const b=r===ct&&e[a+1].startsWith("/>")?" ":"";o+=r===rn?u+Zd:p>=0?(i.push(c),u.slice(0,p)+Ol+u.slice(p)+et+b):u+et+(p===-2?a:b)}return[Wl(e,o+(e[n]||"<?>")+(t===2?"</svg>":t===3?"</math>":"")),i]};let to=class Kl{constructor({strings:t,_$litType$:n},i){let s;this.parts=[];let o=0,r=0;const a=t.length-1,u=this.parts,[c,l]=np(t,n);if(this.el=Kl.createElement(c,i),ft.currentNode=this.el.content,n===2||n===3){const p=this.el.content.firstChild;p.replaceWith(...p.childNodes)}for(;(s=ft.nextNode())!==null&&u.length<a;){if(s.nodeType===1){if(s.hasAttributes())for(const p of s.getAttributeNames())if(p.endsWith(Ol)){const f=l[r++],b=s.getAttribute(p).split(et),h=/([.?@])?(.*)/.exec(f);u.push({type:1,index:o,name:h[2],strings:b,ctor:h[1]==="."?sp:h[1]==="?"?op:h[1]==="@"?rp:Hi}),s.removeAttribute(p)}else p.startsWith(et)&&(u.push({type:6,index:o}),s.removeAttribute(p));if(Ul.test(s.tagName)){const p=s.textContent.split(et),f=p.length-1;if(f>0){s.textContent=ki?ki.emptyScript:"";for(let b=0;b<f;b++)s.append(p[b],Pn()),ft.nextNode(),u.push({type:2,index:++o});s.append(p[f],Pn())}}}else if(s.nodeType===8)if(s.data===Fl)u.push({type:2,index:o});else{let p=-1;for(;(p=s.data.indexOf(et,p+1))!==-1;)u.push({type:7,index:o}),p+=et.length-1}o++}}static createElement(t,n){const i=wt.createElement("template");return i.innerHTML=t,i}};function qt(e,t,n=e,i){var r,a;if(t===it)return t;let s=i!==void 0?(r=n._$Co)==null?void 0:r[i]:n._$Cl;const o=Ln(t)?void 0:t._$litDirective$;return(s==null?void 0:s.constructor)!==o&&((a=s==null?void 0:s._$AO)==null||a.call(s,!1),o===void 0?s=void 0:(s=new o(e),s._$AT(e,n,i)),i!==void 0?(n._$Co??(n._$Co=[]))[i]=s:n._$Cl=s),s!==void 0&&(t=qt(e,s._$AS(e,t.values),s,i)),t}class ip{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)??wt).importNode(n,!0);ft.currentNode=s;let o=ft.nextNode(),r=0,a=0,u=i[0];for(;u!==void 0;){if(r===u.index){let c;u.type===2?c=new qi(o,o.nextSibling,this,t):u.type===1?c=new u.ctor(o,u.name,u.strings,this,t):u.type===6&&(c=new ap(o,this,t)),this._$AV.push(c),u=i[++a]}r!==(u==null?void 0:u.index)&&(o=ft.nextNode(),r++)}return ft.currentNode=wt,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 qi=class zl{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=qt(this,t,n),Ln(t)?t===k||t==null||t===""?(this._$AH!==k&&this._$AR(),this._$AH=k):t!==this._$AH&&t!==it&&this._(t):t._$litType$!==void 0?this.$(t):t.nodeType!==void 0?this.T(t):ep(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&&Ln(this._$AH)?this._$AA.nextSibling.data=t:this.T(wt.createTextNode(t)),this._$AH=t}$(t){var o;const{values:n,_$litType$:i}=t,s=typeof i=="number"?this._$AC(t):(i.el===void 0&&(i.el=to.createElement(Wl(i.h,i.h[0]),this.options)),i);if(((o=this._$AH)==null?void 0:o._$AD)===s)this._$AH.p(n);else{const r=new ip(s,this),a=r.u(this.options);r.p(n),this.T(a),this._$AH=r}}_$AC(t){let n=Jr.get(t.strings);return n===void 0&&Jr.set(t.strings,n=new to(t)),n}k(t){Io(this._$AH)||(this._$AH=[],this._$AR());const n=this._$AH;let i,s=0;for(const o of t)s===n.length?n.push(i=new zl(this.O(Pn()),this.O(Pn()),this,this.options)):i=n[s],i._$AI(o),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=jr(t).nextSibling;jr(t).remove(),t=s}}setConnected(t){var n;this._$AM===void 0&&(this._$Cv=t,(n=this._$AP)==null||n.call(this,t))}};class Hi{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,n,i,s,o){this.type=1,this._$AH=k,this._$AN=void 0,this.element=t,this.name=n,this._$AM=s,this.options=o,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 o=this.strings;let r=!1;if(o===void 0)t=qt(this,t,n,0),r=!Ln(t)||t!==this._$AH&&t!==it,r&&(this._$AH=t);else{const a=t;let u,c;for(t=o[0],u=0;u<o.length-1;u++)c=qt(this,a[i+u],n,u),c===it&&(c=this._$AH[u]),r||(r=!Ln(c)||c!==this._$AH[u]),c===k?t=k:t!==k&&(t+=(c??"")+o[u+1]),this._$AH[u]=c}r&&!s&&this.j(t)}j(t){t===k?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??"")}}let sp=class extends Hi{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===k?void 0:t}},op=class extends Hi{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==k)}},rp=class extends Hi{constructor(t,n,i,s,o){super(t,n,i,s,o),this.type=5}_$AI(t,n=this){if((t=qt(this,t,n,0)??k)===it)return;const i=this._$AH,s=t===k&&i!==k||t.capture!==i.capture||t.once!==i.once||t.passive!==i.passive,o=t!==k&&(i===k||s);s&&this.element.removeEventListener(this.name,this,i),o&&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)}},ap=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){qt(this,t)}};const lp={I:qi},ys=wn.litHtmlPolyfillSupport;ys==null||ys(to,qi),(wn.litHtmlVersions??(wn.litHtmlVersions=[])).push("3.3.2");const cp=(e,t,n)=>{const i=(n==null?void 0:n.renderBefore)??t;let s=i._$litPart$;if(s===void 0){const o=(n==null?void 0:n.renderBefore)??null;i._$litPart$=s=new qi(t.insertBefore(Pn(),o),o,void 0,n??{})}return s._$AI(e),s};const yt=globalThis;let Wt=class extends Ot{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=cp(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 it}};var Bl;Wt._$litElement$=!0,Wt.finalized=!0,(Bl=yt.litElementHydrateSupport)==null||Bl.call(yt,{LitElement:Wt});const vs=yt.litElementPolyfillSupport;vs==null||vs({LitElement:Wt});(yt.litElementVersions??(yt.litElementVersions=[])).push("4.2.2");const ql=e=>(t,n)=>{n!==void 0?n.addInitializer(()=>{customElements.define(e,t)}):customElements.define(e,t)};const up={attribute:!0,type:String,converter:wi,reflect:!1,hasChanged:Lo},dp=(e=up,t,n)=>{const{kind:i,metadata:s}=n;let o=globalThis.litPropertyMetadata.get(s);if(o===void 0&&globalThis.litPropertyMetadata.set(s,o=new Map),i==="setter"&&((e=Object.create(e)).wrapped=!0),o.set(n.name,e),i==="accessor"){const{name:r}=n;return{set(a){const u=t.get.call(this);t.set.call(this,a),this.requestUpdate(r,u,e,!0,a)},init(a){return a!==void 0&&this.C(r,void 0,e,a),a}}}if(i==="setter"){const{name:r}=n;return function(a){const u=this[r];t.call(this,a),this.requestUpdate(r,u,e,!0,a)}}throw Error("Unsupported decorator location: "+i)};function ji(e){return(t,n)=>typeof n=="object"?dp(e,t,n):((i,s,o)=>{const r=s.hasOwnProperty(o);return s.constructor.createProperty(o,i),r?Object.getOwnPropertyDescriptor(s,o):void 0})(e,t,n)}function y(e){return ji({...e,state:!0,attribute:!1})}const pp=50,hp=200,fp="Assistant";function Zr(e,t){if(typeof e!="string")return;const n=e.trim();if(n)return n.length<=t?n:n.slice(0,t)}function no(e){const t=Zr(e==null?void 0:e.name,pp)??fp,n=Zr((e==null?void 0:e.avatar)??void 0,hp)??null;return{agentId:typeof(e==null?void 0:e.agentId)=="string"&&e.agentId.trim()?e.agentId.trim():null,name:t,avatar:n}}function gp(){return no(typeof window>"u"?{}:{name:window.__TASKMASTER_ASSISTANT_NAME__,avatar:window.__TASKMASTER_ASSISTANT_AVATAR__})}const mp="Taskmaster",yp="/taskmaster-icon.png",vp="#00d4ff",bp="";let Xn=null;function je(){return Xn||(Xn={name:window.__TASKMASTER_BRAND_NAME__||mp,iconUrl:window.__TASKMASTER_BRAND_ICON_URL__||yp,accentColor:window.__TASKMASTER_ACCENT_COLOR__||vp,backgroundColor:window.__TASKMASTER_BACKGROUND_COLOR__||bp},Xn)}function Ie(){return window.__TASKMASTER_WORKSPACE_BRANDS__??{}}function Hl(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 wp(e){const t=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(e);if(!t)return 0;const[n,i,s]=[t[1],t[2],t[3]].map(o=>{const r=parseInt(o,16)/255;return r<=.03928?r/12.92:Math.pow((r+.055)/1.055,2.4)});return .2126*n+.7152*i+.0722*s}function jl(e){const t=Hl(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 i=wp(e)>.4?"#111111":"#ffffff";n.style.setProperty("--accent-foreground",i),n.style.setProperty("--primary-foreground",i)}function Jn(e,t,n){const i=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(e),s=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(t);if(!i||!s)return e;const o=(c,l)=>Math.round(parseInt(i[c],16)*(1-n)+parseInt(s[l],16)*n),r=o(1,1),a=o(2,2),u=o(3,3);return`#${r.toString(16).padStart(2,"0")}${a.toString(16).padStart(2,"0")}${u.toString(16).padStart(2,"0")}`}const an={"--bg":"#12141a","--bg-muted":"#262a35","--card":"#181b22","--secondary":"#1e2028"};function Vl(e){const t=document.documentElement;if(!e){for(const[i,s]of Object.entries(an))t.style.setProperty(i,s);t.style.removeProperty("--brand-bg"),t.style.removeProperty("--brand-bg-subtle"),t.style.removeProperty("--brand-bg-card");return}const n=Hl(e);n&&(t.style.setProperty("--bg",Jn(an["--bg"],e,.08)),t.style.setProperty("--bg-muted",Jn(an["--bg-muted"],e,.1)),t.style.setProperty("--card",Jn(an["--card"],e,.12)),t.style.setProperty("--secondary",Jn(an["--secondary"],e,.1)),t.style.setProperty("--brand-bg",e),t.style.setProperty("--brand-bg-subtle",`rgba(${n}, 0.08)`),t.style.setProperty("--brand-bg-card",`rgba(${n}, 0.12)`))}function kn(e){const t=je(),n=Ie(),i=e?n[e]:void 0,s=(i==null?void 0:i.accentColor)??t.accentColor;jl(s);const o=(i==null?void 0:i.backgroundColor)??t.backgroundColor;Vl(o)}const Si="taskmaster.control.settings.v1",Gl="taskmaster.account.settings.";function Sn(){return`${location.protocol==="https:"?"wss":"ws"}://${location.host}`}const Nt={gatewayUrl:Sn(),token:"",theme:"system",navCollapsed:!1,navGroupsCollapsed:{}},Ze={sessionKey:"main",lastActiveSessionKey:"main",chatFocusMode:!1,chatShowThinking:!1,splitRatio:.6};function kp(){try{const e=localStorage.getItem(Si);if(!e)return{...Nt,gatewayUrl:Sn()};const t=JSON.parse(e);return{gatewayUrl:typeof t.gatewayUrl=="string"&&t.gatewayUrl.trim()?t.gatewayUrl.trim():Sn(),token:typeof t.token=="string"?t.token:Nt.token,theme:t.theme==="light"||t.theme==="dark"||t.theme==="system"?t.theme:Nt.theme,navCollapsed:typeof t.navCollapsed=="boolean"?t.navCollapsed:Nt.navCollapsed,navGroupsCollapsed:typeof t.navGroupsCollapsed=="object"&&t.navGroupsCollapsed!==null?t.navGroupsCollapsed:Nt.navGroupsCollapsed}}catch{return{...Nt,gatewayUrl:Sn()}}}function Sp(e){if(!e)return{...Ze};try{const t=localStorage.getItem(Gl+e);if(!t)return{...Ze};const n=JSON.parse(t);return{sessionKey:typeof n.sessionKey=="string"&&n.sessionKey.trim()?n.sessionKey.trim():Ze.sessionKey,lastActiveSessionKey:typeof n.lastActiveSessionKey=="string"&&n.lastActiveSessionKey.trim()?n.lastActiveSessionKey.trim():typeof n.sessionKey=="string"&&n.sessionKey.trim()||Ze.lastActiveSessionKey,chatFocusMode:typeof n.chatFocusMode=="boolean"?n.chatFocusMode:Ze.chatFocusMode,chatShowThinking:typeof n.chatShowThinking=="boolean"?n.chatShowThinking:Ze.chatShowThinking,splitRatio:typeof n.splitRatio=="number"&&n.splitRatio>=.4&&n.splitRatio<=.7?n.splitRatio:Ze.splitRatio}}catch{return{...Ze}}}let $i=null;function ea(e){$i=e}function bs(){return{...kp(),...Sp($i)}}function $p(e){const t={gatewayUrl:e.gatewayUrl,token:e.token,theme:e.theme,navCollapsed:e.navCollapsed,navGroupsCollapsed:e.navGroupsCollapsed};if(localStorage.setItem(Si,JSON.stringify(t)),$i){const n={sessionKey:e.sessionKey,lastActiveSessionKey:e.lastActiveSessionKey,chatFocusMode:e.chatFocusMode,chatShowThinking:e.chatShowThinking,splitRatio:e.splitRatio};localStorage.setItem(Gl+$i,JSON.stringify(n))}}const Ap="taskmaster.draft.";function Ro(e,t){return Ap+e+"."+t}function In(e,t,n){try{const i=Ro(e,t);n?localStorage.setItem(i,n):localStorage.removeItem(i)}catch{}}function Rn(e,t){try{return localStorage.getItem(Ro(e,t))??""}catch{return""}}function xp(e,t){try{localStorage.removeItem(Ro(e,t))}catch{}}let gt=null,ke=null;function ta(e,t,n){ke={workspace:e,sessionKey:t,text:n},gt!=null&&clearTimeout(gt),gt=setTimeout(()=>{ke&&In(ke.workspace,ke.sessionKey,ke.text),ke=null,gt=null},300)}function io(){gt!=null&&clearTimeout(gt),gt=null,ke&&(In(ke.workspace,ke.sessionKey,ke.text),ke=null)}(function(){try{const t=localStorage.getItem(Si);if(!t)return;const n=JSON.parse(t);if(!("sessionKey"in n))return;const i={gatewayUrl:typeof n.gatewayUrl=="string"?n.gatewayUrl:Sn(),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(Si,JSON.stringify(i))}catch{}})();function Ql(e){var o;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=(o=n[1])==null?void 0:o.trim(),s=n.slice(2).join(":");return!i||!s?null:{agentId:i,rest:s}}const Ep=/<\s*\/?\s*(?:think(?:ing)?|thought|antthinking|final)\b/i,Zn=/<\s*\/?\s*final\b[^>]*>/gi,na=/<\s*(\/?)\s*(?:think(?:ing)?|thought|antthinking)\b[^>]*>/gi;function Cp(e,t){return e.trimStart()}function Tp(e,t){if(!e||!Ep.test(e))return e;let n=e;Zn.test(n)?(Zn.lastIndex=0,n=n.replace(Zn,"")):Zn.lastIndex=0,na.lastIndex=0;let i="",s=0,o=!1;for(const r of n.matchAll(na)){const a=r.index??0,u=r[1]==="/";o?u&&(o=!1):(i+=n.slice(s,a),u||(o=!0)),s=a+r[0].length}return i+=n.slice(s),Cp(i)}function Yl(e){return!e&&e!==0?"n/a":new Date(e).toLocaleString(void 0,{dateStyle:"medium",timeStyle:"medium"})}function Vi(e){if(!e&&e!==0)return"n/a";const t=Date.now()-e;if(t<0){const r=-t,a=Math.round(r/1e3);if(a<60)return`in ${a}s`;const u=Math.round(a/60);if(u<60)return`in ${u}m`;const c=Math.round(u/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 Xl(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 _p(e,t=120){return e.length<=t?e:`${e.slice(0,Math.max(0,t-1))}…`}function Jl(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 Ai(e,t){const n=Number(e);return Number.isFinite(n)?n:t}function ws(e){return Tp(e)}const Mp=/^\[([^\]]+)\]\s*/,Pp=["WebChat","WhatsApp","Telegram","Signal","Slack","Discord","iMessage","Teams","Matrix","Zalo","Zalo Personal","BlueBubbles"],ks=new WeakMap,Ss=new WeakMap;function Lp(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:Pp.some(t=>e.startsWith(`${t} `))}function $s(e){const t=e.match(Mp);if(!t)return e;const n=t[1]??"";return Lp(n)?e.slice(t[0].length):e}function $n(e){const t=e,n=typeof t.role=="string"?t.role:"",i=t.content;if(typeof i=="string")return n==="assistant"?ws(i):$s(i);if(Array.isArray(i)){const s=i.map(o=>{const r=o;return r.type==="text"&&typeof r.text=="string"?r.text:null}).filter(o=>typeof o=="string");if(s.length>0){const o=s.join(`
|
|
4
|
+
`);return n==="assistant"?ws(o):$s(o)}}return typeof t.text=="string"?n==="assistant"?ws(t.text):$s(t.text):null}function Zl(e){if(!e||typeof e!="object")return $n(e);const t=e;if(ks.has(t))return ks.get(t)??null;const n=$n(e);return ks.set(t,n),n}function ia(e){const n=e.content,i=[];if(Array.isArray(n))for(const a of n){const u=a;if(u.type==="thinking"&&typeof u.thinking=="string"){const c=u.thinking.trim();c&&i.push(c)}}if(i.length>0)return i.join(`
|
|
5
|
+
`);const s=Rp(e);if(!s)return null;const r=[...s.matchAll(/<\s*think(?:ing)?\s*>([\s\S]*?)<\s*\/\s*think(?:ing)?\s*>/gi)].map(a=>(a[1]??"").trim()).filter(Boolean);return r.length>0?r.join(`
|
|
6
|
+
`):null}function Ip(e){if(!e||typeof e!="object")return ia(e);const t=e;if(Ss.has(t))return Ss.get(t)??null;const n=ia(e);return Ss.set(t,n),n}function Rp(e){const t=e,n=t.content;if(typeof n=="string")return n;if(Array.isArray(n)){const i=n.map(s=>{const o=s;return o.type==="text"&&typeof o.text=="string"?o.text:null}).filter(s=>typeof s=="string");if(i.length>0)return i.join(`
|
|
7
|
+
`)}return typeof t.text=="string"?t.text:null}function Dp(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 Bp=/Read HEARTBEAT\.md if it exists|reply HEARTBEAT_OK/i,Np=/^[\s*`_]*HEARTBEAT_OK[\s*`_]*$/i,Op=/^[\s*`_]*NO_REPLY[\s*`_]*$/i,Fp=/^A new session was started via \/new or \/reset\./;function Up(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(o=>typeof o=="object"&&o!==null).map(o=>o.text??"").join(" "):typeof t.text=="string"&&(i=t.text);const s=i.trim();return s?!!(n==="user"&&Bp.test(s)||n==="assistant"&&Np.test(s)||n==="user"&&Fp.test(s)||n==="assistant"&&Op.test(s)):!1}function ec(e){return e.filter(t=>!Up(t))}function tc(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,o=Array.isArray(s)?s:null,r=Array.isArray(o)&&o.some(p=>{const b=String(p.type??"").toLowerCase();return b==="toolresult"||b==="tool_result"}),a=typeof t.toolName=="string"||typeof t.tool_name=="string";(i||r||a)&&(n="toolResult");let u=[];typeof t.content=="string"?u=[{type:"text",text:t.content}]:Array.isArray(t.content)?u=t.content.map(p=>({type:p.type||"text",text:p.text,name:p.name,args:p.args||p.arguments})):typeof t.text=="string"&&(u=[{type:"text",text:t.text}]);const c=typeof t.timestamp=="number"?t.timestamp:Date.now(),l=typeof t.id=="string"?t.id:void 0;return{role:n,content:u,timestamp:c,id:l}}function nc(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 ic(e){const t=e,n=typeof t.role=="string"?t.role.toLowerCase():"";return n==="toolresult"||n==="tool_result"}function sa(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 Wp(){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 Gi(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),sa(t)}return sa(Wp())}const Be=50;async function De(e,t){if(!e.client||!e.connected)return;e.chatLoading=!0,e.lastError=null;const n=(t==null?void 0:t.limit)??Be;try{const i=await e.client.request("chat.history",{sessionKey:e.sessionKey,limit:n}),s=Array.isArray(i.messages)?i.messages:[],o=typeof i.totalMessages=="number"?i.totalMessages:s.length,r=ec(s);e.chatMessages=r,e.chatHistoryTotal=o,e.chatHistoryHasMore=o>s.length,e.chatThinkingLevel=i.thinkingLevel??null,e.chatModelProvider=typeof i.modelProvider=="string"?i.modelProvider:null,e.chatModel=typeof i.model=="string"?i.model:null,e.chatVerboseLevel=typeof i.verboseLevel=="string"?i.verboseLevel:null,e.chatFillerEnabled=typeof i.fillerEnabled=="boolean"?i.fillerEnabled:null}catch(i){e.lastError=String(i)}finally{e.chatLoading=!1}}async function Kp(e){if(!e.client||!e.connected||e.chatLoadingOlder||!e.chatHistoryHasMore)return!1;e.chatLoadingOlder=!0;try{const t=e.chatMessages.length,n=await e.client.request("chat.history",{sessionKey:e.sessionKey,limit:Be,offset:t}),i=Array.isArray(n.messages)?n.messages:[],s=typeof n.totalMessages=="number"?n.totalMessages:0;if(i.length===0)return e.chatHistoryHasMore=!1,!1;const o=ec(i);return e.chatMessages=[...o,...e.chatMessages],e.chatHistoryTotal=s,e.chatHistoryHasMore=s>t+i.length,!0}catch(t){return e.lastError=String(t),!1}finally{e.chatLoadingOlder=!1}}function zp(e){const t=/^data:(.+?);base64,(.+)$/.exec(e);return t?{mimeType:t[1],content:t[2]}:null}async function sc(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 o=Date.now(),r=(n??[]).filter(b=>!b.fileName),a=(n??[]).filter(b=>b.fileName),u=[],c=a.map(b=>b.fileName).filter(Boolean);if(c.length>0){const b=i?`${c.join(", ")}
|
|
9
9
|
|
|
10
|
-
${i}`:c.join(", ");u.push({type:"text",text:b})}else i&&u.push({type:"text",text:i});for(const b of r)u.push({type:"image",source:{type:"base64",media_type:b.mimeType,data:b.dataUrl}});e.chatMessages=[...e.chatMessages,{role:"user",content:u,timestamp:o}],e.chatSending=!0,e.lastError=null;const l=
|
|
10
|
+
${i}`:c.join(", ");u.push({type:"text",text:b})}else i&&u.push({type:"text",text:i});for(const b of r)u.push({type:"image",source:{type:"base64",media_type:b.mimeType,data:b.dataUrl}});e.chatMessages=[...e.chatMessages,{role:"user",content:u,timestamp:o}],e.chatSending=!0,e.lastError=null;const l=Gi();e.chatRunId=l,e.chatStream="",e.chatStreamStartedAt=o;const p=[...r,...a],f=p.length>0?p.map(b=>{if(b.textContent)return{type:"document",mimeType:b.mimeType||"text/plain",fileName:b.fileName,content:btoa(unescape(encodeURIComponent(b.textContent)))};const h=zp(b.dataUrl);return h?{type:b.fileName?"document":"image",mimeType:h.mimeType,fileName:b.fileName,content:h.content}:null}).filter(b=>b!==null):void 0;try{return await e.client.request("chat.send",{sessionKey:e.sessionKey,message:i,deliver:!1,idempotencyKey:l,attachments:f}),!0}catch(b){const h=String(b);return e.chatRunId=null,e.chatStream=null,e.chatStreamStartedAt=null,e.lastError=h,e.chatMessages=[...e.chatMessages,{role:"assistant",content:[{type:"text",text:"Error: "+h}],timestamp:Date.now()}],!1}finally{e.chatSending=!1}}async function oc(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 rc(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 o=(t.message?(n=$n(t.message))==null?void 0:n.trim():void 0)||((i=e.chatStream)==null?void 0:i.trim());if(o)if(!e.chatInterimText)e.chatInterimText=o;else{const r=o.trim(),a=e.chatInterimText.trim();r===a||a.endsWith(r)||(r.startsWith(a)?e.chatInterimText=o:e.chatInterimText=`${e.chatInterimText}
|
|
11
11
|
|
|
12
|
-
${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s
|
|
13
|
-
`)}function
|
|
12
|
+
${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=$n(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=$n(t.message);if(typeof s=="string"){if(s.trim()==="NO_REPLY")return null;const o=e.chatStream??"";(!o||s.length>=o.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 xi=Object.freeze(Object.defineProperty({__proto__:null,CHAT_PAGE_SIZE:Be,abortChatRun:oc,handleChatEvent:rc,loadChatHistory:De,loadOlderChatHistory:Kp,sendChatMessage:sc},Symbol.toStringTag,{value:"Module"}));async function Do(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=Ai(e.sessionsFilterActive??"",0),i=Ai(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 ei(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 Do(e)}catch(s){e.sessionsError=String(s)}}const oa=50,qp=80,Hp=12e4;function jp(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 o=s;return o.type==="text"&&typeof o.text=="string"?o.text:null}).filter(s=>!!s);return i.length===0?null:i.join(`
|
|
13
|
+
`)}function ra(e){if(e==null)return null;if(typeof e=="number"||typeof e=="boolean")return String(e);const t=jp(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=Jl(n,Hp);return i.truncated?`${i.text}
|
|
14
14
|
|
|
15
|
-
… truncated (${i.total} chars, showing first ${i.text.length}).`:i.text}function
|
|
15
|
+
… truncated (${i.total} chars, showing first ${i.text.length}).`:i.text}function Vp(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 Gp(e){if(e.toolStreamOrder.length<=oa)return;const t=e.toolStreamOrder.length-oa,n=e.toolStreamOrder.splice(0,t);for(const i of n)e.toolStreamById.delete(i)}function Qp(e){e.chatToolMessages=e.toolStreamOrder.map(t=>{var n;return(n=e.toolStreamById.get(t))==null?void 0:n.message}).filter(t=>!!t)}function so(e){e.toolStreamSyncTimer!=null&&(clearTimeout(e.toolStreamSyncTimer),e.toolStreamSyncTimer=null),Qp(e)}function Yp(e,t=!1){if(t){so(e);return}e.toolStreamSyncTimer==null&&(e.toolStreamSyncTimer=window.setTimeout(()=>so(e),qp))}function Bo(e){e.toolStreamById.clear(),e.toolStreamOrder=[],e.chatToolMessages=[],so(e)}const Xp=5e3;function Jp(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},Xp))}function Zp(e,t){if(!t)return;if(t.stream==="compaction"){Jp(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 o=typeof i.name=="string"?i.name:"tool",r=typeof i.phase=="string"?i.phase:"",a=r==="start"?i.args:void 0,u=r==="update"?ra(i.partialResult):r==="result"?ra(i.result):void 0,c=Date.now();let l=e.toolStreamById.get(s);l?(l.name=o,a!==void 0&&(l.args=a),u!==void 0&&(l.output=u),l.updatedAt=c):(l={toolCallId:s,runId:t.runId,sessionKey:n,name:o,args:a,output:u,startedAt:typeof t.ts=="number"?t.ts:c,updatedAt:c,message:{}},e.toolStreamById.set(s,l),e.toolStreamOrder.push(s)),l.message=Vp(l),Gp(e),Yp(e,r==="result")}let ti=0;function Qt(e,t=!1){e.chatScrollFrame&&cancelAnimationFrame(e.chatScrollFrame),e.chatScrollTimeout!=null&&(clearTimeout(e.chatScrollTimeout),e.chatScrollTimeout=null);const n=++ti,i=()=>{const s=e.querySelector(".chat-thread");if(s){const o=getComputedStyle(s).overflowY;if(o==="auto"||o==="scroll"||s.scrollHeight-s.clientHeight>1)return s}return document.scrollingElement??document.documentElement};e.updateComplete.then(()=>{n===ti&&(e.chatScrollFrame=requestAnimationFrame(()=>{if(e.chatScrollFrame=null,n!==ti)return;const s=i();if(!s)return;const o=s.scrollHeight-s.scrollTop-s.clientHeight;if(!(t||e.chatUserNearBottom||o<200))return;t&&(e.chatHasAutoScrolled=!0),s.scrollTop=s.scrollHeight,e.chatUserNearBottom=!0;const a=t?150:120;e.chatScrollTimeout=window.setTimeout(()=>{if(e.chatScrollTimeout=null,n!==ti)return;const u=i();if(!u)return;const c=u.scrollHeight-u.scrollTop-u.clientHeight;(t||e.chatUserNearBottom||c<200)&&(u.scrollTop=u.scrollHeight,e.chatUserNearBottom=!0)},a)}))})}function ac(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 eh(e,t){const n=t.currentTarget;if(!n)return;const i=n.scrollHeight-n.scrollTop-n.clientHeight;e.chatUserNearBottom=i<200,n.scrollTop<100&&e.onLoadOlder&&e.onLoadOlder()}function th(e){const t=e.querySelector(".chat-thread");if(!t)return null;const n=t.scrollHeight,i=t.scrollTop;return()=>{const s=t.scrollHeight-n;t.scrollTop=i+s}}function nh(e,t){const n=t.currentTarget;n&&(e.logsAtBottom=n.scrollTop<80)}function ih(e,t){const n=t.currentTarget;n&&(e.logsAtBottom=n.scrollTop<80)}function sh(e){e.chatHasAutoScrolled=!1,e.chatUserNearBottom=!0}function oh(e,t){if(e.length===0)return;const n=new Blob([`${e.join(`
|
|
16
16
|
`)}
|
|
17
|
-
`],{type:"text/plain"}),i=URL.createObjectURL(n),s=document.createElement("a"),o=new Date().toISOString().slice(0,19).replace(/[:T]/g,"-");s.href=i,s.download=`taskmaster-logs-${t}-${o}.log`,s.click(),URL.revokeObjectURL(i)}function
|
|
17
|
+
`],{type:"text/plain"}),i=URL.createObjectURL(n),s=document.createElement("a"),o=new Date().toISOString().slice(0,19).replace(/[:T]/g,"-");s.href=i,s.download=`taskmaster-logs-${t}-${o}.log`,s.click(),URL.revokeObjectURL(i)}function rh(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"),o=new Date().toISOString().slice(0,19).replace(/[:T]/g,"-");s.href=i,s.download=`taskmaster-session-logs-${t}-${o}.log`,s.click(),URL.revokeObjectURL(i)}function
|
|
20
|
-
`}function Hl(e,t,n){if(t.length===0)return;let i=e;for(let o=0;o<t.length-1;o+=1){const r=t[o],a=t[o+1];if(typeof r=="number"){if(!Array.isArray(i))return;i[r]==null&&(i[r]=typeof a=="number"?[]:{}),i=i[r]}else{if(typeof i!="object"||i==null)return;const u=i;u[r]==null&&(u[r]=typeof a=="number"?[]:{}),i=u[r]}}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 Be(e){if(!(!e.client||!e.connected)){e.configLoading=!0,e.lastError=null;try{const t=await e.client.request("config.get",{});zp(e,t)}catch(t){e.lastError=String(t)}finally{e.configLoading=!1}}}async function jl(e){if(!(!e.client||!e.connected)&&!e.configSchemaLoading){e.configSchemaLoading=!0;try{const t=await e.client.request("config.schema",{});Kp(e,t)}catch(t){e.lastError=String(t)}finally{e.configSchemaLoading=!1}}}function Kp(e,t){e.configSchema=t.schema??null,e.configUiHints=t.uiHints??{},e.configSchemaVersion=t.version??null}function zp(e,t){e.configSnapshot=t;const n=typeof t.raw=="string"?t.raw:t.config&&typeof t.config=="object"?bt(t.config):e.configRaw;!e.configFormDirty||e.configFormMode==="raw"?e.configRaw=n:e.configForm?e.configRaw=bt(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=it(t.config??{}),e.configFormOriginal=it(t.config??{}),e.configRawOriginal=n)}async function qp(e){var t;if(!(!e.client||!e.connected)){e.configSaving=!0,e.lastError=null;try{const n=e.configFormMode==="form"&&e.configForm?bt(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 Be(e)}catch(n){e.lastError=String(n)}finally{e.configSaving=!1}}}async function Vt(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 Mn(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 Vl(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=yi(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 Gl(e){if(e.payloadKind==="systemEvent"){const o=e.payloadText.trim();if(!o)throw new Error("System event text required.");return{kind:"systemEvent",text:o}}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);const i=[];e.toAdmins&&i.push("admins");for(const o of e.recipients){const r=o.trim();r&&i.push(r)}i.length>0&&(n.to=i.join(","));const s=yi(e.timeoutSeconds,0);return s>0&&(n.timeoutSeconds=s),n}async function Hp(e){var t;if(!(!e.client||!e.connected||e.cronBusy)){e.cronBusy=!0,e.cronError=null;try{const n=Vl(e.cronForm),i=Gl(e.cronForm),s=e.cronForm.agentId.trim(),o=(t=e.cronForm.accountId)==null?void 0:t.trim(),r={name:e.cronForm.name.trim(),description:e.cronForm.description.trim()||void 0,agentId:s||void 0,accountId:o||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(!r.name)throw new Error("Name required.");await e.client.request("cron.add",r),e.cronForm={...e.cronForm,name:"",description:"",payloadText:""},await Mn(e),await Vt(e)}catch(n){e.cronError=String(n)}finally{e.cronBusy=!1}}}async function jp(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 Mn(e),await Vt(e)}catch(i){e.cronError=String(i)}finally{e.cronBusy=!1}}}async function Vp(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 Hs(e,t.id)}catch(n){e.cronError=String(n)}finally{e.cronBusy=!1}}}async function Gp(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 Mn(e),await Vt(e)}catch(n){e.cronError=String(n)}finally{e.cronBusy=!1}}}function Qp(e){var n;const t={name:e.name||"",description:e.description||"",agentId:e.agentId||"",enabled:e.enabled,scheduleKind:e.schedule.kind,scheduleAt:"",everyAmount:"30",everyUnit:"minutes",cronExpr:"",cronTz:"",sessionTarget:e.sessionTarget||"main",wakeMode:e.wakeMode||"next-heartbeat",payloadKind:e.payload.kind,payloadText:"",deliver:!1,channel:"last",recipients:[],toAdmins:!1,timeoutSeconds:"",postToMainPrefix:""};if(e.schedule.kind==="at"){const i=new Date(e.schedule.atMs),s=o=>String(o).padStart(2,"0");t.scheduleAt=`${i.getFullYear()}-${s(i.getMonth()+1)}-${s(i.getDate())}T${s(i.getHours())}:${s(i.getMinutes())}`}else if(e.schedule.kind==="every"){const i=e.schedule.everyMs;i%864e5===0?(t.everyAmount=String(i/864e5),t.everyUnit="days"):i%36e5===0?(t.everyAmount=String(i/36e5),t.everyUnit="hours"):(t.everyAmount=String(i/6e4),t.everyUnit="minutes")}else e.schedule.kind==="cron"&&(t.cronExpr=e.schedule.expr,t.cronTz=e.schedule.tz||"");if(e.payload.kind==="systemEvent")t.payloadText=e.payload.text;else if(e.payload.kind==="agentTurn"){t.payloadText=e.payload.message,t.deliver=e.payload.deliver??!1,t.timeoutSeconds=e.payload.timeoutSeconds?String(e.payload.timeoutSeconds):"";const i=e.payload.channel??e.payload.provider;t.channel=i||"last";const s=e.payload.to||"";if(s){const o=s.split(",").map(r=>r.trim()).filter(Boolean);t.toAdmins=o.some(r=>r.toLowerCase()==="admins"),t.recipients=o.filter(r=>r.toLowerCase()!=="admins")}}return(n=e.isolation)!=null&&n.postToMainPrefix&&(t.postToMainPrefix=e.isolation.postToMainPrefix),t}async function Yp(e,t){if(!(!e.client||!e.connected||e.cronBusy)){e.cronBusy=!0,e.cronError=null;try{const n=Vl(e.cronForm),i=Gl(e.cronForm),s={name:e.cronForm.name.trim(),description:e.cronForm.description.trim()||void 0,agentId:e.cronForm.agentId.trim()||void 0,enabled:e.cronForm.enabled,schedule:n,sessionTarget:e.cronForm.sessionTarget,wakeMode:e.cronForm.wakeMode,payload:i};if(e.cronForm.postToMainPrefix.trim()&&e.cronForm.sessionTarget==="isolated"?s.isolation={postToMainPrefix:e.cronForm.postToMainPrefix.trim()}:s.isolation=void 0,!s.name)throw new Error("Name required.");await e.client.request("cron.update",{id:t,patch:s}),await Mn(e),await Vt(e)}catch(n){e.cronError=String(n)}finally{e.cronBusy=!1}}}async function Hs(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 Y(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 So(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 Ql(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 Yl(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 o=it(s.config??{});(!o.channels||typeof o.channels!="object")&&(o.channels={});const r=o.channels;(!r.whatsapp||typeof r.whatsapp!="object")&&(r.whatsapp={});const a=r.whatsapp;(!a.accounts||typeof a.accounts!="object")&&(a.accounts={});const u=a.accounts;if(u[i]){e.whatsappAccountError=`Account "${i}" already exists.`;return}u[i]={name:n,provider:"baileys"};const c=s.hash;if(!c){e.whatsappAccountError="Config hash missing; reload and retry.";return}const l=bt(o);await e.client.request("config.set",{raw:l,baseHash:c}),e.addingWhatsAppAccount=!1,e.newWhatsAppAccountName="",await Y(e,!0),await So(e,!0,i)}catch(s){e.whatsappAccountError=String(s)}finally{e.whatsappAccountSaving=!1}}async function Jl(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=it(n.config??{}),s=i.channels,o=s==null?void 0:s.whatsapp,r=o==null?void 0:o.accounts;if(!r){e.whatsappAccountError="No accounts found in config.";return}if(Object.keys(r).length<=1){e.whatsappAccountError="Cannot remove the last account.";return}if(!r[t]){e.whatsappAccountError=`Account "${t}" not found.`;return}try{await e.client.request("channels.logout",{channel:"whatsapp",accountId:t})}catch{}delete r[t],Array.isArray(i.bindings)&&(i.bindings=i.bindings.filter(l=>{const p=l.match;return!p||p.channel!=="whatsapp"?!0:p.accountId!==t}));const u=n.hash;if(!u){e.whatsappAccountError="Config hash missing; reload and retry.";return}const c=bt(i);await e.client.request("config.set",{raw:c,baseHash:u}),e.whatsappActiveQrAccountId===t&&(e.whatsappActiveQrAccountId=null,e.whatsappLoginQrDataUrl=null,e.whatsappLoginMessage=null),await Y(e,!0)}catch(n){e.whatsappAccountError=String(n)}finally{e.whatsappAccountSaving=!1}}}const Xp=Object.freeze(Object.defineProperty({__proto__:null,addWhatsAppAccount:Xl,loadChannels:Y,logoutWhatsApp:Yl,removeWhatsAppAccount:Jl,startWhatsAppLogin:So,waitWhatsAppLogin:Ql},Symbol.toStringTag,{value:"Module"}));async function $o(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 o=i;e.debugModels=Array.isArray(o==null?void 0:o.models)?o==null?void 0:o.models:[],e.debugHeartbeat=s}catch(t){e.debugCallError=String(t)}finally{e.debugLoading=!1}}}const Jp=2e3,Zp=new Set(["trace","debug","info","warn","error","fatal"]);function eh(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 th(e){if(typeof e!="string")return null;const t=e.toLowerCase();return Zp.has(t)?t:null}function Zl(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=th((n==null?void 0:n.logLevelName)??(n==null?void 0:n.level)),o=typeof t[0]=="string"?t[0]:typeof(n==null?void 0:n.name)=="string"?n==null?void 0:n.name:null,r=eh(o);let a=null;r&&(typeof r.subsystem=="string"?a=r.subsystem:typeof r.module=="string"&&(a=r.module)),!a&&o&&o.length<120&&(a=o);let u=null;return typeof t[1]=="string"?u=t[1]:!r&&typeof t[0]=="string"?u=t[0]:typeof t.message=="string"&&(u=t.message),{raw:e,time:i,level:s,subsystem:a,message:u??e,meta:n??void 0}}catch{return{raw:e,message:e}}}async function Ft(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}),o=(Array.isArray(i.lines)?i.lines.filter(a=>typeof a=="string"):[]).map(Zl),r=!!(t!=null&&t.reset||i.reset||e.logsCursor==null);e.logsEntries=r?o:[...e.logsEntries,...o].slice(-Jp),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 nh=Object.freeze(Object.defineProperty({__proto__:null,loadLogs:Ft,parseLogLine:Zl},Symbol.toStringTag,{value:"Module"}));const ec={p:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedn,n:0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3edn,h:8n,a:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffecn,d:0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3n,Gx:0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an,Gy:0x6666666666666666666666666666666666666666666666666666666666666658n},{p:le,n:li,Gx:Hr,Gy:jr,a:gs,d:ms,h:ih}=ec,wt=32,Ao=64,sh=(...e)=>{"captureStackTrace"in Error&&typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(...e)},ie=(e="")=>{const t=new Error(e);throw sh(t,ie),t},oh=e=>typeof e=="bigint",rh=e=>typeof e=="string",ah=e=>e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name==="Uint8Array",st=(e,t,n="")=>{const i=ah(e),s=e==null?void 0:e.length,o=t!==void 0;if(!i||o&&s!==t){const r=n&&`"${n}" `,a=o?` of length ${t}`:"",u=i?`length=${s}`:`type=${typeof e}`;ie(r+"expected Uint8Array"+a+", got "+u)}return e},Ui=e=>new Uint8Array(e),tc=e=>Uint8Array.from(e),nc=(e,t)=>e.toString(16).padStart(t,"0"),ic=e=>Array.from(st(e)).map(t=>nc(t,2)).join(""),We={_0:48,_9:57,A:65,F:70,a:97,f:102},Vr=e=>{if(e>=We._0&&e<=We._9)return e-We._0;if(e>=We.A&&e<=We.F)return e-(We.A-10);if(e>=We.a&&e<=We.f)return e-(We.a-10)},sc=e=>{const t="hex invalid";if(!rh(e))return ie(t);const n=e.length,i=n/2;if(n%2)return ie(t);const s=Ui(i);for(let o=0,r=0;o<i;o++,r+=2){const a=Vr(e.charCodeAt(r)),u=Vr(e.charCodeAt(r+1));if(a===void 0||u===void 0)return ie(t);s[o]=a*16+u}return s},oc=()=>globalThis==null?void 0:globalThis.crypto,lh=()=>{var e;return((e=oc())==null?void 0:e.subtle)??ie("crypto.subtle must be defined, consider polyfill")},Tn=(...e)=>{const t=Ui(e.reduce((i,s)=>i+st(s).length,0));let n=0;return e.forEach(i=>{t.set(i,n),n+=i.length}),t},ch=(e=wt)=>oc().getRandomValues(Ui(e)),bi=BigInt,dt=(e,t,n,i="bad number: out of range")=>oh(e)&&t<=e&&e<n?e:ie(i),P=(e,t=le)=>{const n=e%t;return n>=0n?n:t+n},rc=e=>P(e,li),uh=(e,t)=>{(e===0n||t<=0n)&&ie("no inverse n="+e+" mod="+t);let n=P(e,t),i=t,s=0n,o=1n;for(;n!==0n;){const r=i/n,a=i%n,u=s-o*r;i=n,n=a,s=o,o=u}return i===1n?P(s,t):ie("no inverse")},dh=e=>{const t=uc[e];return typeof t!="function"&&ie("hashes."+e+" not set"),t},ys=e=>e instanceof kt?e:ie("Point expected"),js=2n**256n,Ie=class Ie{constructor(t,n,i,s){W(this,"X");W(this,"Y");W(this,"Z");W(this,"T");const o=js;this.X=dt(t,0n,o),this.Y=dt(n,0n,o),this.Z=dt(i,1n,o),this.T=dt(s,0n,o),Object.freeze(this)}static CURVE(){return ec}static fromAffine(t){return new Ie(t.x,t.y,1n,P(t.x*t.y))}static fromBytes(t,n=!1){const i=ms,s=tc(st(t,wt)),o=t[31];s[31]=o&-129;const r=lc(s);dt(r,0n,n?js:le);const u=P(r*r),c=P(u-1n),l=P(i*u+1n);let{isValid:p,value:f}=hh(c,l);p||ie("bad point: y not sqrt");const b=(f&1n)===1n,h=(o&128)!==0;return!n&&f===0n&&h&&ie("bad point: x==0, isLastByteOdd"),h!==b&&(f=P(-f)),new Ie(f,r,1n,P(f*r))}static fromHex(t,n){return Ie.fromBytes(sc(t),n)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}assertValidity(){const t=gs,n=ms,i=this;if(i.is0())return ie("bad point: ZERO");const{X:s,Y:o,Z:r,T:a}=i,u=P(s*s),c=P(o*o),l=P(r*r),p=P(l*l),f=P(u*t),b=P(l*P(f+c)),h=P(p+P(n*P(u*c)));if(b!==h)return ie("bad point: equation left != right (1)");const v=P(s*o),S=P(r*a);return v!==S?ie("bad point: equation left != right (2)"):this}equals(t){const{X:n,Y:i,Z:s}=this,{X:o,Y:r,Z:a}=ys(t),u=P(n*a),c=P(o*s),l=P(i*a),p=P(r*s);return u===c&&l===p}is0(){return this.equals(Nt)}negate(){return new Ie(P(-this.X),this.Y,this.Z,P(-this.T))}double(){const{X:t,Y:n,Z:i}=this,s=gs,o=P(t*t),r=P(n*n),a=P(2n*P(i*i)),u=P(s*o),c=t+n,l=P(P(c*c)-o-r),p=u+r,f=p-a,b=u-r,h=P(l*f),v=P(p*b),S=P(l*b),$=P(f*p);return new Ie(h,v,$,S)}add(t){const{X:n,Y:i,Z:s,T:o}=this,{X:r,Y:a,Z:u,T:c}=ys(t),l=gs,p=ms,f=P(n*r),b=P(i*a),h=P(o*p*c),v=P(s*u),S=P((n+i)*(r+a)-f-b),$=P(v-h),A=P(v+h),E=P(b-l*f),T=P(S*$),_=P(A*E),D=P(S*E),F=P($*A);return new Ie(T,_,F,D)}subtract(t){return this.add(ys(t).negate())}multiply(t,n=!0){if(!n&&(t===0n||this.is0()))return Nt;if(dt(t,1n,li),t===1n)return this;if(this.equals(St))return Ah(t).p;let i=Nt,s=St;for(let o=this;t>0n;o=o.double(),t>>=1n)t&1n?i=i.add(o):n&&(s=s.add(o));return i}multiplyUnsafe(t){return this.multiply(t,!1)}toAffine(){const{X:t,Y:n,Z:i}=this;if(this.equals(Nt))return{x:0n,y:1n};const s=uh(i,le);P(i*s)!==1n&&ie("invalid inverse");const o=P(t*s),r=P(n*s);return{x:o,y:r}}toBytes(){const{x:t,y:n}=this.assertValidity().toAffine(),i=ac(n);return i[31]|=t&1n?128:0,i}toHex(){return ic(this.toBytes())}clearCofactor(){return this.multiply(bi(ih),!1)}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){let t=this.multiply(li/2n,!1).double();return li%2n&&(t=t.add(this)),t.is0()}};W(Ie,"BASE"),W(Ie,"ZERO");let kt=Ie;const St=new kt(Hr,jr,1n,P(Hr*jr)),Nt=new kt(0n,1n,1n,0n);kt.BASE=St;kt.ZERO=Nt;const ac=e=>sc(nc(dt(e,0n,js),Ao)).reverse(),lc=e=>bi("0x"+ic(tc(st(e)).reverse())),Te=(e,t)=>{let n=e;for(;t-- >0n;)n*=n,n%=le;return n},ph=e=>{const n=e*e%le*e%le,i=Te(n,2n)*n%le,s=Te(i,1n)*e%le,o=Te(s,5n)*s%le,r=Te(o,10n)*o%le,a=Te(r,20n)*r%le,u=Te(a,40n)*a%le,c=Te(u,80n)*u%le,l=Te(c,80n)*u%le,p=Te(l,10n)*o%le;return{pow_p_5_8:Te(p,2n)*e%le,b2:n}},Gr=0x2b8324804fc1df0b2b4d00993dfbd7a72f431806ad2fe478c4ee1b274a0ea0b0n,hh=(e,t)=>{const n=P(t*t*t),i=P(n*n*t),s=ph(e*i).pow_p_5_8;let o=P(e*n*s);const r=P(t*o*o),a=o,u=P(o*Gr),c=r===e,l=r===P(-e),p=r===P(-e*Gr);return c&&(o=a),(l||p)&&(o=u),(P(o)&1n)===1n&&(o=P(-o)),{isValid:c||l,value:o}},Vs=e=>rc(lc(e)),xo=(...e)=>uc.sha512Async(Tn(...e)),fh=(...e)=>dh("sha512")(Tn(...e)),cc=e=>{const t=e.slice(0,wt);t[0]&=248,t[31]&=127,t[31]|=64;const n=e.slice(wt,Ao),i=Vs(t),s=St.multiply(i),o=s.toBytes();return{head:t,prefix:n,scalar:i,point:s,pointBytes:o}},Eo=e=>xo(st(e,wt)).then(cc),gh=e=>cc(fh(st(e,wt))),mh=e=>Eo(e).then(t=>t.pointBytes),yh=e=>xo(e.hashable).then(e.finish),vh=(e,t,n)=>{const{pointBytes:i,scalar:s}=e,o=Vs(t),r=St.multiply(o).toBytes();return{hashable:Tn(r,i,n),finish:c=>{const l=rc(o+Vs(c)*s);return st(Tn(r,ac(l)),Ao)}}},bh=async(e,t)=>{const n=st(e),i=await Eo(t),s=await xo(i.prefix,n);return yh(vh(i,s,n))},uc={sha512Async:async e=>{const t=lh(),n=Tn(e);return Ui(await t.digest("SHA-512",n.buffer))},sha512:void 0},wh=(e=ch(wt))=>e,kh={getExtendedPublicKeyAsync:Eo,getExtendedPublicKey:gh,randomSecretKey:wh},wi=8,Sh=256,dc=Math.ceil(Sh/wi)+1,Gs=2**(wi-1),$h=()=>{const e=[];let t=St,n=t;for(let i=0;i<dc;i++){n=t,e.push(n);for(let s=1;s<Gs;s++)n=n.add(t),e.push(n);t=n.double()}return e};let Qr;const Yr=(e,t)=>{const n=t.negate();return e?n:t},Ah=e=>{const t=Qr||(Qr=$h());let n=Nt,i=St;const s=2**wi,o=s,r=bi(s-1),a=bi(wi);for(let u=0;u<dc;u++){let c=Number(e&r);e>>=a,c>Gs&&(c-=o,e+=1n);const l=u*Gs,p=l,f=l+Math.abs(c)-1,b=u%2!==0,h=c<0;c===0?i=i.add(Yr(b,t[p])):n=n.add(Yr(h,t[f]))}return e!==0n&&ie("invalid wnaf"),{p:n,f:i}},vs="taskmaster-device-identity-v1";function Qs(e){let t="";for(const n of e)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}function pc(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 o=0;o<i.length;o+=1)s[o]=i.charCodeAt(o);return s}function xh(e){return Array.from(e).map(t=>t.toString(16).padStart(2,"0")).join("")}async function hc(e){const t=await crypto.subtle.digest("SHA-256",e);return xh(new Uint8Array(t))}async function Eh(){const e=kh.randomSecretKey(),t=await mh(e);return{deviceId:await hc(t),publicKey:Qs(t),privateKey:Qs(e)}}async function Ch(){try{const n=localStorage.getItem(vs);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 hc(pc(i.publicKey));if(s!==i.deviceId){const o={...i,deviceId:s};return localStorage.setItem(vs,JSON.stringify(o)),{deviceId:s,publicKey:i.publicKey,privateKey:i.privateKey}}return{deviceId:i.deviceId,publicKey:i.publicKey,privateKey:i.privateKey}}}}catch{}const e=await Eh(),t={version:1,deviceId:e.deviceId,publicKey:e.publicKey,privateKey:e.privateKey,createdAtMs:Date.now()};return localStorage.setItem(vs,JSON.stringify(t)),e}async function Th(e,t){const n=pc(e),i=new TextEncoder().encode(t),s=await bh(i,n);return Qs(s)}const fc="taskmaster.device.auth.v1";function Co(e){return e.trim()}function _h(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 To(){try{const e=window.localStorage.getItem(fc);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 gc(e){try{window.localStorage.setItem(fc,JSON.stringify(e))}catch{}}function Mh(e){const t=To();if(!t||t.deviceId!==e.deviceId)return null;const n=Co(e.role),i=t.tokens[n];return!i||typeof i.token!="string"?null:i}function Ph(e){const t=Co(e.role),n={version:1,deviceId:e.deviceId,tokens:{}},i=To();i&&i.deviceId===e.deviceId&&(n.tokens={...i.tokens});const s={token:e.token,role:t,scopes:_h(e.scopes),updatedAtMs:Date.now()};return n.tokens[t]=s,gc(n),s}function Lh(e){const t=To();if(!t||t.deviceId!==e.deviceId)return;const n=Co(e.role);if(!t.tokens[n])return;const i={...t,tokens:{...t.tokens}};delete i.tokens[n],gc(i)}async function _o(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 Mo(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 Ih(e){return{method:"exec.approvals.get",params:{}}}async function Rh(e,t){if(!(!e.client||!e.connected)&&!e.execApprovalsLoading){e.execApprovalsLoading=!0,e.lastError=null;try{const n=Ih(t);if(!n){e.lastError="Select a node before loading exec approvals.";return}const i=await e.client.request(n.method,n.params);Dh(e,i)}catch(n){e.lastError=String(n)}finally{e.execApprovalsLoading=!1}}}function Dh(e,t){e.execApprovalsSnapshot=t,e.execApprovalsDirty||(e.execApprovalsForm=it(t.file??{}))}async function mc(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 Kt(e,t,n){if(!t.trim())return;const i={...e.skillMessages};n?i[t]=n:delete i[t],e.skillMessages=i}function Ve(e){return e instanceof Error?e.message:String(e)}function Wi(){return{name:"",skillContent:"",references:[]}}async function je(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=Ve(n)}finally{e.skillsLoading=!1}}}function yc(e,t,n){e.skillEdits={...e.skillEdits,[t]:n}}async function vc(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 je(e),Kt(e,t,{kind:"success",message:n?"Skill enabled":"Skill disabled"})}catch(i){const s=Ve(i);e.skillsError=s,Kt(e,t,{kind:"error",message:s})}finally{e.skillsBusyKey=null}}}async function bc(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 je(e),Kt(e,t,{kind:"success",message:"API key saved"})}catch(n){const i=Ve(n);e.skillsError=i,Kt(e,t,{kind:"error",message:i})}finally{e.skillsBusyKey=null}}}async function wc(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 je(e),Kt(e,t,{kind:"success",message:(s==null?void 0:s.message)??"Installed"})}catch(s){const o=Ve(s);e.skillsError=o,Kt(e,t,{kind:"error",message:o})}finally{e.skillsBusyKey=null}}}async function kc(e,t){if(!(!e.client||!e.connected))try{const n=await e.client.request("skills.read",{name:t});n&&(e.skillDetail=n,e.skillDetailTab="SKILL.md")}catch(n){e.skillsError=Ve(n)}}function Sc(e){e.skillDetail=null,e.skillDetailTab=""}function $c(e,t){e.skillDetailTab=t}async function Ac(e){if(e.skillAddModal=!0,e.skillAddForm=Wi(),e.skillDrafts=[],!(!e.client||!e.connected))try{const t=await e.client.request("skills.drafts",{});t&&(e.skillDrafts=t.drafts)}catch{}}function xc(e){e.skillAddModal=!1,e.skillAddForm=Wi(),e.skillDrafts=[]}function Ec(e,t){e.skillAddForm={name:t.name,skillContent:t.skillContent,references:t.references.map(n=>({...n}))}}async function Cc(e){if(!e.client||!e.connected)return;const t=e.skillAddForm;if(!(!t.name.trim()||!t.skillContent.trim())){e.skillsBusyKey="__add__",e.skillsError=null;try{const n=t.references.filter(i=>i.name.trim()&&i.content.trim()).map(i=>({name:i.name.trim(),content:i.content}));await e.client.request("skills.create",{name:t.name.trim(),skillContent:t.skillContent,references:n.length>0?n:void 0}),e.skillAddModal=!1,e.skillAddForm=Wi(),e.skillDrafts=[],await je(e)}catch(n){e.skillsError=Ve(n)}finally{e.skillsBusyKey=null}}}async function Tc(e,t){if(!(!e.client||!e.connected))try{await e.client.request("skills.deleteDraft",{name:t}),e.skillDrafts=e.skillDrafts.filter(n=>n.name!==t)}catch(n){e.skillsError=Ve(n)}}async function _c(e,t){if(!(!e.client||!e.connected))try{const n=await e.client.request("skills.read",{name:t});if(!n)return;e.skillAddForm={name:n.name,skillContent:n.content,references:n.references.map(i=>({...i}))},e.skillAddModal=!0,e.skillDrafts=[]}catch(n){e.skillsError=Ve(n)}}async function Mc(e,t){if(!(!e.client||!e.connected)){e.skillsBusyKey=t,e.skillsError=null;try{await e.client.request("skills.delete",{name:t}),await je(e)}catch(n){e.skillsError=Ve(n)}finally{e.skillsBusyKey=null}}}const Bh=Object.freeze(Object.defineProperty({__proto__:null,closeAddSkillModal:xc,closeSkillDetail:Sc,deleteDraft:Tc,deleteSkill:Mc,editSkill:_c,emptyAddForm:Wi,importDraft:Ec,installSkill:wc,loadSkills:je,openAddSkillModal:Ac,saveNewSkill:Cc,saveSkillApiKey:bc,setSkillDetailTab:$c,updateSkillEdit:yc,updateSkillEnabled:vc,viewSkillDetail:kc},Symbol.toStringTag,{value:"Module"})),Pc={overview:"/overview",channels:"/channels",instances:"/instances",cron:"/cron",skills:"/skills",nodes:"/nodes",chat:"/chat",admins:"/admins",config:"/config",debug:"/debug",logs:"/logs"},Lc=new Map(Object.entries(Pc).map(([e,t])=>[t,e]));function Ki(e){if(!e)return"";let t=e.trim();return t.startsWith("/")||(t=`/${t}`),t==="/"?"":(t.endsWith("/")&&(t=t.slice(0,-1)),t)}function _n(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 Nh(e,t=""){const n=Ki(t),i=Pc[e];return n?`${n}${i}`:i}function Ic(e,t=""){const n=Ki(t);let i=e||"/";n&&(i===n?i="/":i.startsWith(`${n}/`)&&(i=i.slice(n.length)));let s=_n(i).toLowerCase();return s.endsWith("/index.html")&&(s="/"),s==="/"?"chat":Lc.get(s)??null}function Oh(e){let t=_n(e);if(t.endsWith("/index.html")&&(t=_n(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(Lc.has(s)){const o=n.slice(0,i);return o.length?`/${o.join("/")}`:""}}return`/${n.join("/")}`}function Fh(){return typeof window>"u"||typeof window.matchMedia!="function"||window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function Po(e){return e==="system"?Fh():e}const Qn=e=>Number.isNaN(e)?.5:e<=0?0:e>=1?1:e,Uh=()=>typeof window>"u"||typeof window.matchMedia!="function"?!1:window.matchMedia("(prefers-reduced-motion: reduce)").matches??!1,Yn=e=>{e.classList.remove("theme-transition"),e.style.removeProperty("--theme-switch-x"),e.style.removeProperty("--theme-switch-y")},Wh=({nextTheme:e,applyTheme:t,context:n,currentTheme:i})=>{var c;if(i===e)return;const s=globalThis.document??null;if(!s){t();return}const o=s.documentElement,r=s,a=Uh();if(!!r.startViewTransition&&!a){let l=.5,p=.5;if((n==null?void 0:n.pointerClientX)!==void 0&&(n==null?void 0:n.pointerClientY)!==void 0&&typeof window<"u")l=Qn(n.pointerClientX/window.innerWidth),p=Qn(n.pointerClientY/window.innerHeight);else if(n!=null&&n.element){const f=n.element.getBoundingClientRect();f.width>0&&f.height>0&&typeof window<"u"&&(l=Qn((f.left+f.width/2)/window.innerWidth),p=Qn((f.top+f.height/2)/window.innerHeight))}o.style.setProperty("--theme-switch-x",`${l*100}%`),o.style.setProperty("--theme-switch-y",`${p*100}%`),o.classList.add("theme-transition");try{const f=(c=r.startViewTransition)==null?void 0:c.call(r,()=>{t()});f!=null&&f.finished?f.finished.finally(()=>Yn(o)):Yn(o)}catch{Yn(o),t()}return}t(),Yn(o)},Kh=2e3;async function kn(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),o=Array.isArray(s.entries)?s.entries:[],r=!!(t!=null&&t.reset||Object.keys(e.sessionLogsCursors).length===0);e.sessionLogsEntries=r?o:[...e.sessionLogsEntries,...o].slice(-Kh),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 Rc=Object.freeze(Object.defineProperty({__proto__:null,loadSessionLogs:kn},Symbol.toStringTag,{value:"Module"}));async function Dc(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 zh(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 Xn=null;function Gt(e,t){Xn&&clearTimeout(Xn),e.filesMessage={kind:"success",text:t},Xn=setTimeout(()=>{e.filesMessage=null,Xn=null},3e3)}async function Qt(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 qh(e,t,n){e.filesSelectedPaths=new Set([t]),await Bc(e,t,n)}async function Hh(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 Bc(e,s,n)}else e.filesSelectedPath=null,e.filesPreviewContent=null,e.filesPreviewSize=null,e.filesPreviewBinary=!1}async function jh(e,t){if(!e.client||!e.connected)return;const n=[...e.filesSelectedPaths];if(n.length===0)return;let i=0,s="";for(const o of n)try{await Nc(e,o,t),i++}catch(r){s=Ne(r)}s?e.filesMessage={kind:"error",text:`${i} downloaded, error: ${s}`}:Gt(e,`${i} file${i!==1?"s":""} downloaded`)}async function Vh(e,t,n,i){const s=t.split("/").pop()??t,o=n==="."?s:`${n}/${s}`;o!==t&&await Xh(e,t,o,i)}async function Bc(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 Nc(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 o=Uint8Array.from(atob(s.base64),c=>c.charCodeAt(0)),r=new Blob([o]),a=URL.createObjectURL(r),u=document.createElement("a");u.href=a,u.download=s.name??t.split("/").pop()??"download",document.body.appendChild(u),u.click(),document.body.removeChild(u),URL.revokeObjectURL(a)}catch(i){e.filesMessage={kind:"error",text:Ne(i)}}}async function Gh(e,t,n,i){if(!e.client||!e.connected)return;e.filesUploadBusy=!0,e.filesMessage=null;let s=0,o="";for(const r of n)try{const a=await r.arrayBuffer(),u=btoa(new Uint8Array(a).reduce((l,p)=>l+String.fromCharCode(p),"")),c={path:t,name:r.name,data:u};i&&(c.agentId=i),await e.client.request("files.upload",c),s++}catch(a){o=Ne(a)}e.filesUploadBusy=!1,o?e.filesMessage={kind:"error",text:s>0?`${s} uploaded, error: ${o}`:o}:Gt(e,`${s} file${s!==1?"s":""} uploaded`),await Qt(e,i)}async function Qh(e,t,n,i){if(!e.client||!e.connected)return;e.filesMessage=null;const s=t==="."?n:`${t}/${n}`;try{const o={path:s};i&&(o.agentId=i),await e.client.request("files.mkdir",o),Gt(e,`Created ${s}`),await Qt(e,i),e.filesExpandedDirs=new Set([...e.filesExpandedDirs,s]),e.filesCurrentDir=s}catch(o){e.filesMessage={kind:"error",text:Ne(o)}}}async function Yh(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),Gt(e,"File deleted"),e.filesSelectedPath===t&&(e.filesSelectedPath=null,e.filesPreviewContent=null),await Qt(e,n)}catch(i){e.filesMessage={kind:"error",text:Ne(i)}}}}async function Xh(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),Gt(e,"File moved"),e.filesSelectedPath===t&&(e.filesSelectedPath=n),await Qt(e,i)}catch(s){e.filesMessage={kind:"error",text:Ne(s)}}}}async function Lo(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 Jh(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,o=(i==null?void 0:i.chunks)??0;Gt(e,`Re-indexed: ${s} files, ${o} chunks`),await Lo(e,t)}catch(n){e.filesMessage={kind:"error",text:Ne(n)}}finally{e.filesReindexBusy=!1}}}function Zh(e,t){const n=new Set(e.filesExpandedDirs);n.has(t)?n.delete(t):n.add(t),e.filesExpandedDirs=n,e.filesCurrentDir=t}async function ef(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 tf(e){e.filesSearchQuery="",e.filesSearchResults=null}function nf(e){e.nodesPollInterval==null&&(e.nodesPollInterval=window.setInterval(()=>{Mo(e,{quiet:!0})},5e3))}function sf(e){e.nodesPollInterval!=null&&(clearInterval(e.nodesPollInterval),e.nodesPollInterval=null)}function Io(e){e.logsPollInterval==null&&(e.logsPollInterval=window.setInterval(()=>{e.tab==="logs"&&Ft(e,{quiet:!0})},2e3))}function Ro(e){e.logsPollInterval!=null&&(clearInterval(e.logsPollInterval),e.logsPollInterval=null)}function Do(e){e.sessionLogsPollInterval==null&&(e.sessionLogsPollInterval=window.setInterval(()=>{!(e.advancedPage?e.advancedTab==="logs":e.tab==="logs")||e.logsSubTab!=="session"||kn(e,{quiet:!0})},2e3))}function Bo(e){e.sessionLogsPollInterval!=null&&(clearInterval(e.sessionLogsPollInterval),e.sessionLogsPollInterval=null)}function No(e){e.debugPollInterval==null&&(e.debugPollInterval=window.setInterval(()=>{e.tab==="debug"&&$o(e)},3e3))}function Oo(e){e.debugPollInterval!=null&&(clearInterval(e.debugPollInterval),e.debugPollInterval=null)}function of(e){e.auditPollInterval==null&&(e.auditPollInterval=window.setInterval(()=>{Dc(e)},3e4))}function rf(e){e.auditPollInterval!=null&&(clearInterval(e.auditPollInterval),e.auditPollInterval=null)}function af(e){e.memoryStatusPollInterval==null&&(e.memoryStatusPollInterval=window.setInterval(()=>{if(e.tab!=="files")return;const t=e;Lo(t,t.filesResolvedAgentId)},3e3))}function lf(e){e.memoryStatusPollInterval!=null&&(clearInterval(e.memoryStatusPollInterval),e.memoryStatusPollInterval=null)}function tt(e,t){var i;const n={...t,lastActiveSessionKey:((i=t.lastActiveSessionKey)==null?void 0:i.trim())||t.sessionKey.trim()||"main"};e.settings=n,op(n),t.theme!==e.theme&&(e.theme=t.theme,zi(e,Po(t.theme))),e.applySessionKey=e.settings.lastActiveSessionKey}function Oc(e,t){const n=t.trim();n&&e.settings.lastActiveSessionKey!==n&&tt(e,{...e.settings,lastActiveSessionKey:n})}function cf(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"),o=t.get("gatewayUrl");let r=!1;if(n!=null){const u=n.trim();u&&u!==e.settings.token&&tt(e,{...e.settings,token:u}),t.delete("token"),r=!0}if(i!=null){const u=i.trim();u&&(e.password=u),t.delete("password"),r=!0}if(s!=null){const u=s.trim();u&&(e.sessionKey=u,tt(e,{...e.settings,sessionKey:u,lastActiveSessionKey:u}))}if(o!=null){const u=o.trim();u&&u!==e.settings.gatewayUrl&&tt(e,{...e.settings,gatewayUrl:u}),t.delete("gatewayUrl"),r=!0}if(!r)return;const a=new URL(window.location.href);a.search=t.toString(),window.history.replaceState({},"",a.toString())}function uf(e,t){e.tab!==t&&(e.tab=t),t==="chat"&&(e.chatHasAutoScrolled=!1),t==="logs"?e.logsSubTab==="session"?Do(e):Io(e):(Ro(e),Bo(e)),t==="debug"?No(e):Oo(e),ki(e),Uc(e,t,!1)}function df(e,t,n){Wh({nextTheme:t,applyTheme:()=>{e.theme=t,tt(e,{...e.settings,theme:t}),zi(e,Po(t))},context:n,currentTheme:e.theme})}async function ki(e){if(e.tab==="overview"&&await Wc(e),e.tab==="channels"&&await vf(e),e.tab==="instances"&&await mc(e),e.tab==="cron"&&await Fo(e),e.tab==="skills"&&await je(e),e.tab==="nodes"&&(await Mo(e),await _o(e),await Be(e),await Rh(e)),e.tab==="chat"&&!e.advancedPage&&!e.chatPage&&(await $f(e),jt(e,!e.chatHasAutoScrolled)),e.tab==="config"&&(await jl(e),await Be(e)),e.tab==="debug"&&(await $o(e),e.eventLog=e.eventLogBuffer),e.tab==="logs"){if(e.logsAtBottom=!0,e.logsSubTab==="session"){const{loadSessionLogs:n}=await oe(async()=>{const{loadSessionLogs:i}=await Promise.resolve().then(()=>Rc);return{loadSessionLogs:i}},void 0,import.meta.url);await n(e,{reset:!0})}else await Ft(e,{reset:!0});ql(e,!0)}}function pf(){if(typeof window>"u")return"";const e=window.__TASKMASTER_CONTROL_UI_BASE_PATH__;return typeof e=="string"&&e.trim()?Ki(e):Oh(window.location.pathname)}function hf(e){e.theme=e.settings.theme??"system",zi(e,Po(e.theme))}function zi(e,t){if(e.themeResolved=t,typeof document>"u")return;const n=document.documentElement;n.dataset.theme=t,n.style.colorScheme=t}function ff(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"&&zi(e,n.matches?"dark":"light")},typeof e.themeMedia.addEventListener=="function"){e.themeMedia.addEventListener("change",e.themeMediaHandler);return}e.themeMedia.addListener(e.themeMediaHandler)}function gf(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 mf(e,t){if(typeof window>"u")return;const n=Ic(window.location.pathname,e.basePath)??"chat";Fc(e,n),Uc(e,n,t)}function yf(e){var s;if(typeof window>"u")return;const t=Ic(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,tt(e,{...e.settings,sessionKey:i,lastActiveSessionKey:i})),Fc(e,t)}function Fc(e,t){e.tab!==t&&(e.tab=t),t==="chat"&&(e.chatHasAutoScrolled=!1),t==="logs"?e.logsSubTab==="session"?Do(e):Io(e):(Ro(e),Bo(e)),t==="debug"?No(e):Oo(e),e.connected&&ki(e)}function Uc(e,t,n){if(typeof window>"u")return;const i=_n(Nh(t,e.basePath)),s=_n(window.location.pathname),o=new URL(window.location.href);t==="chat"&&e.sessionKey?o.searchParams.set("session",e.sessionKey):o.searchParams.delete("session"),s!==i&&(o.pathname=i),n?window.history.replaceState({},"",o.toString()):window.history.pushState({},"",o.toString())}async function Wc(e){await Promise.all([Y(e,!1),mc(e),wo(e),Vt(e),$o(e)])}async function vf(e){await Promise.all([Y(e,!0),jl(e),Be(e)])}async function Fo(e){await Promise.all([Y(e,!1),Vt(e),Mn(e)])}function Kc(e){return e.chatSending||!!e.chatRunId}function bf(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 zc(e){e.connected&&(e.chatMessage="",await Kl(e))}function wf(e,t,n){const i=t.trim(),s=!!(n&&n.length>0);!i&&!s||(e.chatQueue=[...e.chatQueue,{id:Fi(),text:i,createdAt:Date.now(),attachments:s?n==null?void 0:n.map(o=>({...o})):void 0}],jt(e))}async function qc(e,t,n){var s,o;ko(e);const i=await Wl(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&&Oc(e,e.sessionKey),i&&(n!=null&&n.restoreDraft)&&((s=n.previousDraft)!=null&&s.trim())&&(e.chatMessage=n.previousDraft),i&&(n!=null&&n.restoreAttachments)&&((o=n.previousAttachments)!=null&&o.length)&&(e.chatAttachments=n.previousAttachments),jt(e),i&&!e.chatRunId&&Hc(e),i}async function Hc(e){if(!e.connected||Kc(e))return;const[t,...n]=e.chatQueue;if(!t)return;e.chatQueue=n,await qc(e,t.text,{attachments:t.attachments})||(e.chatQueue=[t,...e.chatQueue])}function kf(e,t){e.chatQueue=e.chatQueue.filter(n=>n.id!==t)}async function Sf(e,t,n){if(!e.connected)return;const i=e.chatMessage,s=(t??e.chatMessage).trim(),o=e.chatAttachments??[],r=t==null?o:[],a=r.length>0;if(!(!s&&!a)){if(bf(s)){await zc(e);return}if(t==null&&(e.chatMessage="",e.chatAttachments=[]),Kc(e)){wf(e,s,r);return}await qc(e,s,{previousDraft:t==null?i:void 0,restoreDraft:!!(t&&(n!=null&&n.restoreDraft)),attachments:a?r:void 0,previousAttachments:t==null?o:void 0,restoreAttachments:!!(t&&(n!=null&&n.restoreDraft))})}}async function $f(e){var i;const t=e,n=Math.max((((i=t.chatMessages)==null?void 0:i.length)??0)+10,De);await Promise.all([Re(t,{limit:n}),wo(t),Ys(e)]),jt(e,!0)}const Af=Hc;function xf(e){var s,o,r;const t=Ll(e.sessionKey);if(t!=null&&t.agentId)return t.agentId;const n=(s=e.hello)==null?void 0:s.snapshot;return((r=(o=n==null?void 0:n.sessionDefaults)==null?void 0:o.defaultAgentId)==null?void 0:r.trim())||"main"}function Ef(e,t){const n=Ki(e),i=encodeURIComponent(t);return n?`${n}/avatar/${i}?meta=1`:`/avatar/${i}?meta=1`}async function Ys(e){if(!e.connected){e.chatAvatarUrl=null;return}const t=xf(e);if(!t){e.chatAvatarUrl=null;return}e.chatAvatarUrl=null;const n=Ef(e.basePath,t);try{const i=await fetch(n,{method:"GET"});if(!i.ok){e.chatAvatarUrl=null;return}const s=await i.json(),o=typeof s.avatarUrl=="string"?s.avatarUrl.trim():"";e.chatAvatarUrl=o||null}catch{e.chatAvatarUrl=null}}const L={messageSquare:d`<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:d`<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:d`<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>`,unlink:d`<svg viewBox="0 0 24 24"><path d="m18.84 12.25 1.72-1.71h-.02a5.004 5.004 0 0 0-.12-7.07 5.006 5.006 0 0 0-6.95 0l-1.72 1.71"/><path d="m5.17 11.75-1.71 1.71a5.004 5.004 0 0 0 .12 7.07 5.006 5.006 0 0 0 6.95 0l1.71-1.71"/><line x1="8" x2="8" y1="2" y2="5"/><line x1="2" x2="5" y1="8" y2="8"/><line x1="16" x2="16" y1="19" y2="22"/><line x1="19" x2="22" y1="16" y2="16"/></svg>`,radio:d`<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:d`<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:d`<svg viewBox="0 0 24 24"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"/></svg>`,monitor:d`<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:d`<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:d`<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:d`<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:d`<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:d`<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:d`<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:d`<svg viewBox="0 0 24 24"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg>`,check:d`<svg viewBox="0 0 24 24"><path d="M20 6 9 17l-5-5"/></svg>`,copy:d`<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:d`<svg viewBox="0 0 24 24"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/></svg>`,brain:d`<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:d`<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:d`<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:d`<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:d`<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:d`<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:d`<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:d`<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:d`<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:d`<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:d`<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:d`<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:d`<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:d`<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:d`<svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/></svg>`,circleCheck:d`<svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/><path d="m9 12 2 2 4-4"/></svg>`,circleX:d`<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:d`<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:d`<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:d`<svg viewBox="0 0 24 24"><path d="m22 2-7 20-4-9-9-4Z"/><path d="M22 2 11 13"/></svg>`,smile:d`<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:d`<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:d`<svg viewBox="0 0 24 24"><rect width="14" height="14" x="5" y="5" rx="2"/></svg>`,eye:d`<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:d`<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:d`<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>`,mic:d`<svg viewBox="0 0 24 24"><path d="M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z"/><path d="M19 10v2a7 7 0 0 1-14 0v-2"/><line x1="12" x2="12" y1="19" y2="22"/></svg>`,chevronDown:d`<svg viewBox="0 0 24 24"><path d="m6 9 6 6 6-6"/></svg>`,film:d`<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>`,wifi:d`<svg viewBox="0 0 24 24"><path d="M12 20h.01"/><path d="M2 8.82a15 15 0 0 1 20 0"/><path d="M5 12.859a10 10 0 0 1 14 0"/><path d="M8.5 16.429a5 5 0 0 1 7 0"/></svg>`,wifiOff:d`<svg viewBox="0 0 24 24"><path d="M12 20h.01"/><path d="M8.5 16.429a5 5 0 0 1 7 0"/><path d="M5 12.859a10 10 0 0 1 5.17-2.69"/><path d="M13.41 10.28a10 10 0 0 1 5.59 2.58"/><path d="M2 8.82a15 15 0 0 1 4.17-2.65"/><path d="M10.66 5c4.01-.36 8.14.9 11.34 3.76"/><line x1="2" x2="22" y1="2" y2="22"/></svg>`,power:d`<svg viewBox="0 0 24 24"><path d="M18.36 6.64a9 9 0 1 1-12.73 0"/><line x1="12" x2="12" y1="2" y2="12"/></svg>`},Cf=d`<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>`,Tf=d`<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 Xr=!1;function _f(){Xr||(Xr=!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 Et(e,t){var l;const n=(p,f)=>p===e?d`<span class="sp-page-nav-current">${p}</span>`:d`<a href=${f}>${p}</a>`,i=d`
|
|
19
|
+
`],{type:"text/plain"}),i=URL.createObjectURL(n),s=document.createElement("a"),o=new Date().toISOString().slice(0,19).replace(/[:T]/g,"-");s.href=i,s.download=`taskmaster-session-logs-${t}-${o}.log`,s.click(),URL.revokeObjectURL(i)}function ah(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 st(e){return typeof structuredClone=="function"?structuredClone(e):JSON.parse(JSON.stringify(e))}function kt(e){return`${JSON.stringify(e,null,2).trimEnd()}
|
|
20
|
+
`}function lc(e,t,n){if(t.length===0)return;let i=e;for(let o=0;o<t.length-1;o+=1){const r=t[o],a=t[o+1];if(typeof r=="number"){if(!Array.isArray(i))return;i[r]==null&&(i[r]=typeof a=="number"?[]:{}),i=i[r]}else{if(typeof i!="object"||i==null)return;const u=i;u[r]==null&&(u[r]=typeof a=="number"?[]:{}),i=u[r]}}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 Ne(e){if(!(!e.client||!e.connected)){e.configLoading=!0,e.lastError=null;try{const t=await e.client.request("config.get",{});ch(e,t)}catch(t){e.lastError=String(t)}finally{e.configLoading=!1}}}async function cc(e){if(!(!e.client||!e.connected)&&!e.configSchemaLoading){e.configSchemaLoading=!0;try{const t=await e.client.request("config.schema",{});lh(e,t)}catch(t){e.lastError=String(t)}finally{e.configSchemaLoading=!1}}}function lh(e,t){e.configSchema=t.schema??null,e.configUiHints=t.uiHints??{},e.configSchemaVersion=t.version??null}function ch(e,t){e.configSnapshot=t;const n=typeof t.raw=="string"?t.raw:t.config&&typeof t.config=="object"?kt(t.config):e.configRaw;!e.configFormDirty||e.configFormMode==="raw"?e.configRaw=n:e.configForm?e.configRaw=kt(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=st(t.config??{}),e.configFormOriginal=st(t.config??{}),e.configRawOriginal=n)}async function uh(e){var t;if(!(!e.client||!e.connected)){e.configSaving=!0,e.lastError=null;try{const n=e.configFormMode==="form"&&e.configForm?kt(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 Ne(e)}catch(n){e.lastError=String(n)}finally{e.configSaving=!1}}}async function Yt(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 Nn(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 uc(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=Ai(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 dc(e){if(e.payloadKind==="systemEvent"){const o=e.payloadText.trim();if(!o)throw new Error("System event text required.");return{kind:"systemEvent",text:o}}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);const i=[];e.toAdmins&&i.push("admins");for(const o of e.recipients){const r=o.trim();r&&i.push(r)}i.length>0&&(n.to=i.join(","));const s=Ai(e.timeoutSeconds,0);return s>0&&(n.timeoutSeconds=s),n}async function dh(e){var t;if(!(!e.client||!e.connected||e.cronBusy)){e.cronBusy=!0,e.cronError=null;try{const n=uc(e.cronForm),i=dc(e.cronForm),s=e.cronForm.agentId.trim(),o=(t=e.cronForm.accountId)==null?void 0:t.trim(),r={name:e.cronForm.name.trim(),description:e.cronForm.description.trim()||void 0,agentId:s||void 0,accountId:o||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(!r.name)throw new Error("Name required.");await e.client.request("cron.add",r),e.cronForm={...e.cronForm,name:"",description:"",payloadText:""},await Nn(e),await Yt(e)}catch(n){e.cronError=String(n)}finally{e.cronBusy=!1}}}async function ph(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 Nn(e),await Yt(e)}catch(i){e.cronError=String(i)}finally{e.cronBusy=!1}}}async function hh(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 oo(e,t.id)}catch(n){e.cronError=String(n)}finally{e.cronBusy=!1}}}async function fh(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 Nn(e),await Yt(e)}catch(n){e.cronError=String(n)}finally{e.cronBusy=!1}}}function gh(e){var n;const t={name:e.name||"",description:e.description||"",agentId:e.agentId||"",enabled:e.enabled,scheduleKind:e.schedule.kind,scheduleAt:"",everyAmount:"30",everyUnit:"minutes",cronExpr:"",cronTz:"",sessionTarget:e.sessionTarget||"main",wakeMode:e.wakeMode||"next-heartbeat",payloadKind:e.payload.kind,payloadText:"",deliver:!1,channel:"last",recipients:[],toAdmins:!1,timeoutSeconds:"",postToMainPrefix:""};if(e.schedule.kind==="at"){const i=new Date(e.schedule.atMs),s=o=>String(o).padStart(2,"0");t.scheduleAt=`${i.getFullYear()}-${s(i.getMonth()+1)}-${s(i.getDate())}T${s(i.getHours())}:${s(i.getMinutes())}`}else if(e.schedule.kind==="every"){const i=e.schedule.everyMs;i%864e5===0?(t.everyAmount=String(i/864e5),t.everyUnit="days"):i%36e5===0?(t.everyAmount=String(i/36e5),t.everyUnit="hours"):(t.everyAmount=String(i/6e4),t.everyUnit="minutes")}else e.schedule.kind==="cron"&&(t.cronExpr=e.schedule.expr,t.cronTz=e.schedule.tz||"");if(e.payload.kind==="systemEvent")t.payloadText=e.payload.text;else if(e.payload.kind==="agentTurn"){t.payloadText=e.payload.message,t.deliver=e.payload.deliver??!1,t.timeoutSeconds=e.payload.timeoutSeconds?String(e.payload.timeoutSeconds):"";const i=e.payload.channel??e.payload.provider;t.channel=i||"last";const s=e.payload.to||"";if(s){const o=s.split(",").map(r=>r.trim()).filter(Boolean);t.toAdmins=o.some(r=>r.toLowerCase()==="admins"),t.recipients=o.filter(r=>r.toLowerCase()!=="admins")}}return(n=e.isolation)!=null&&n.postToMainPrefix&&(t.postToMainPrefix=e.isolation.postToMainPrefix),t}async function mh(e,t){if(!(!e.client||!e.connected||e.cronBusy)){e.cronBusy=!0,e.cronError=null;try{const n=uc(e.cronForm),i=dc(e.cronForm),s={name:e.cronForm.name.trim(),description:e.cronForm.description.trim()||void 0,agentId:e.cronForm.agentId.trim()||void 0,enabled:e.cronForm.enabled,schedule:n,sessionTarget:e.cronForm.sessionTarget,wakeMode:e.cronForm.wakeMode,payload:i};if(e.cronForm.postToMainPrefix.trim()&&e.cronForm.sessionTarget==="isolated"?s.isolation={postToMainPrefix:e.cronForm.postToMainPrefix.trim()}:s.isolation=void 0,!s.name)throw new Error("Name required.");await e.client.request("cron.update",{id:t,patch:s}),await Nn(e),await Yt(e)}catch(n){e.cronError=String(n)}finally{e.cronBusy=!1}}}async function oo(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 Y(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 No(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 pc(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 hc(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 fc(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 o=st(s.config??{});(!o.channels||typeof o.channels!="object")&&(o.channels={});const r=o.channels;(!r.whatsapp||typeof r.whatsapp!="object")&&(r.whatsapp={});const a=r.whatsapp;(!a.accounts||typeof a.accounts!="object")&&(a.accounts={});const u=a.accounts;if(u[i]){e.whatsappAccountError=`Account "${i}" already exists.`;return}u[i]={name:n,provider:"baileys"};const c=s.hash;if(!c){e.whatsappAccountError="Config hash missing; reload and retry.";return}const l=kt(o);await e.client.request("config.set",{raw:l,baseHash:c}),e.addingWhatsAppAccount=!1,e.newWhatsAppAccountName="",await Y(e,!0),await No(e,!0,i)}catch(s){e.whatsappAccountError=String(s)}finally{e.whatsappAccountSaving=!1}}async function gc(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=st(n.config??{}),s=i.channels,o=s==null?void 0:s.whatsapp,r=o==null?void 0:o.accounts;if(!r){e.whatsappAccountError="No accounts found in config.";return}if(Object.keys(r).length<=1){e.whatsappAccountError="Cannot remove the last account.";return}if(!r[t]){e.whatsappAccountError=`Account "${t}" not found.`;return}try{await e.client.request("channels.logout",{channel:"whatsapp",accountId:t})}catch{}delete r[t],Array.isArray(i.bindings)&&(i.bindings=i.bindings.filter(l=>{const p=l.match;return!p||p.channel!=="whatsapp"?!0:p.accountId!==t}));const u=n.hash;if(!u){e.whatsappAccountError="Config hash missing; reload and retry.";return}const c=kt(i);await e.client.request("config.set",{raw:c,baseHash:u}),e.whatsappActiveQrAccountId===t&&(e.whatsappActiveQrAccountId=null,e.whatsappLoginQrDataUrl=null,e.whatsappLoginMessage=null),await Y(e,!0)}catch(n){e.whatsappAccountError=String(n)}finally{e.whatsappAccountSaving=!1}}}const yh=Object.freeze(Object.defineProperty({__proto__:null,addWhatsAppAccount:fc,loadChannels:Y,logoutWhatsApp:hc,removeWhatsAppAccount:gc,startWhatsAppLogin:No,waitWhatsAppLogin:pc},Symbol.toStringTag,{value:"Module"}));async function Oo(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 o=i;e.debugModels=Array.isArray(o==null?void 0:o.models)?o==null?void 0:o.models:[],e.debugHeartbeat=s}catch(t){e.debugCallError=String(t)}finally{e.debugLoading=!1}}}const vh=2e3,bh=new Set(["trace","debug","info","warn","error","fatal"]);function wh(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 kh(e){if(typeof e!="string")return null;const t=e.toLowerCase();return bh.has(t)?t:null}function mc(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=kh((n==null?void 0:n.logLevelName)??(n==null?void 0:n.level)),o=typeof t[0]=="string"?t[0]:typeof(n==null?void 0:n.name)=="string"?n==null?void 0:n.name:null,r=wh(o);let a=null;r&&(typeof r.subsystem=="string"?a=r.subsystem:typeof r.module=="string"&&(a=r.module)),!a&&o&&o.length<120&&(a=o);let u=null;return typeof t[1]=="string"?u=t[1]:!r&&typeof t[0]=="string"?u=t[0]:typeof t.message=="string"&&(u=t.message),{raw:e,time:i,level:s,subsystem:a,message:u??e,meta:n??void 0}}catch{return{raw:e,message:e}}}async function Kt(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}),o=(Array.isArray(i.lines)?i.lines.filter(a=>typeof a=="string"):[]).map(mc),r=!!(t!=null&&t.reset||i.reset||e.logsCursor==null);e.logsEntries=r?o:[...e.logsEntries,...o].slice(-vh),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 Sh=Object.freeze(Object.defineProperty({__proto__:null,loadLogs:Kt,parseLogLine:mc},Symbol.toStringTag,{value:"Module"}));const yc={p:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedn,n:0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3edn,h:8n,a:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffecn,d:0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3n,Gx:0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an,Gy:0x6666666666666666666666666666666666666666666666666666666666666658n},{p:le,n:gi,Gx:aa,Gy:la,a:As,d:xs,h:$h}=yc,St=32,Fo=64,Ah=(...e)=>{"captureStackTrace"in Error&&typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(...e)},ie=(e="")=>{const t=new Error(e);throw Ah(t,ie),t},xh=e=>typeof e=="bigint",Eh=e=>typeof e=="string",Ch=e=>e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name==="Uint8Array",ot=(e,t,n="")=>{const i=Ch(e),s=e==null?void 0:e.length,o=t!==void 0;if(!i||o&&s!==t){const r=n&&`"${n}" `,a=o?` of length ${t}`:"",u=i?`length=${s}`:`type=${typeof e}`;ie(r+"expected Uint8Array"+a+", got "+u)}return e},Qi=e=>new Uint8Array(e),vc=e=>Uint8Array.from(e),bc=(e,t)=>e.toString(16).padStart(t,"0"),wc=e=>Array.from(ot(e)).map(t=>bc(t,2)).join(""),Ke={_0:48,_9:57,A:65,F:70,a:97,f:102},ca=e=>{if(e>=Ke._0&&e<=Ke._9)return e-Ke._0;if(e>=Ke.A&&e<=Ke.F)return e-(Ke.A-10);if(e>=Ke.a&&e<=Ke.f)return e-(Ke.a-10)},kc=e=>{const t="hex invalid";if(!Eh(e))return ie(t);const n=e.length,i=n/2;if(n%2)return ie(t);const s=Qi(i);for(let o=0,r=0;o<i;o++,r+=2){const a=ca(e.charCodeAt(r)),u=ca(e.charCodeAt(r+1));if(a===void 0||u===void 0)return ie(t);s[o]=a*16+u}return s},Sc=()=>globalThis==null?void 0:globalThis.crypto,Th=()=>{var e;return((e=Sc())==null?void 0:e.subtle)??ie("crypto.subtle must be defined, consider polyfill")},Dn=(...e)=>{const t=Qi(e.reduce((i,s)=>i+ot(s).length,0));let n=0;return e.forEach(i=>{t.set(i,n),n+=i.length}),t},_h=(e=St)=>Sc().getRandomValues(Qi(e)),Ei=BigInt,pt=(e,t,n,i="bad number: out of range")=>xh(e)&&t<=e&&e<n?e:ie(i),P=(e,t=le)=>{const n=e%t;return n>=0n?n:t+n},$c=e=>P(e,gi),Mh=(e,t)=>{(e===0n||t<=0n)&&ie("no inverse n="+e+" mod="+t);let n=P(e,t),i=t,s=0n,o=1n;for(;n!==0n;){const r=i/n,a=i%n,u=s-o*r;i=n,n=a,s=o,o=u}return i===1n?P(s,t):ie("no inverse")},Ph=e=>{const t=Cc[e];return typeof t!="function"&&ie("hashes."+e+" not set"),t},Es=e=>e instanceof $t?e:ie("Point expected"),ro=2n**256n,Re=class Re{constructor(t,n,i,s){W(this,"X");W(this,"Y");W(this,"Z");W(this,"T");const o=ro;this.X=pt(t,0n,o),this.Y=pt(n,0n,o),this.Z=pt(i,1n,o),this.T=pt(s,0n,o),Object.freeze(this)}static CURVE(){return yc}static fromAffine(t){return new Re(t.x,t.y,1n,P(t.x*t.y))}static fromBytes(t,n=!1){const i=xs,s=vc(ot(t,St)),o=t[31];s[31]=o&-129;const r=xc(s);pt(r,0n,n?ro:le);const u=P(r*r),c=P(u-1n),l=P(i*u+1n);let{isValid:p,value:f}=Ih(c,l);p||ie("bad point: y not sqrt");const b=(f&1n)===1n,h=(o&128)!==0;return!n&&f===0n&&h&&ie("bad point: x==0, isLastByteOdd"),h!==b&&(f=P(-f)),new Re(f,r,1n,P(f*r))}static fromHex(t,n){return Re.fromBytes(kc(t),n)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}assertValidity(){const t=As,n=xs,i=this;if(i.is0())return ie("bad point: ZERO");const{X:s,Y:o,Z:r,T:a}=i,u=P(s*s),c=P(o*o),l=P(r*r),p=P(l*l),f=P(u*t),b=P(l*P(f+c)),h=P(p+P(n*P(u*c)));if(b!==h)return ie("bad point: equation left != right (1)");const v=P(s*o),S=P(r*a);return v!==S?ie("bad point: equation left != right (2)"):this}equals(t){const{X:n,Y:i,Z:s}=this,{X:o,Y:r,Z:a}=Es(t),u=P(n*a),c=P(o*s),l=P(i*a),p=P(r*s);return u===c&&l===p}is0(){return this.equals(Ut)}negate(){return new Re(P(-this.X),this.Y,this.Z,P(-this.T))}double(){const{X:t,Y:n,Z:i}=this,s=As,o=P(t*t),r=P(n*n),a=P(2n*P(i*i)),u=P(s*o),c=t+n,l=P(P(c*c)-o-r),p=u+r,f=p-a,b=u-r,h=P(l*f),v=P(p*b),S=P(l*b),$=P(f*p);return new Re(h,v,$,S)}add(t){const{X:n,Y:i,Z:s,T:o}=this,{X:r,Y:a,Z:u,T:c}=Es(t),l=As,p=xs,f=P(n*r),b=P(i*a),h=P(o*p*c),v=P(s*u),S=P((n+i)*(r+a)-f-b),$=P(v-h),A=P(v+h),E=P(b-l*f),T=P(S*$),_=P(A*E),D=P(S*E),F=P($*A);return new Re(T,_,F,D)}subtract(t){return this.add(Es(t).negate())}multiply(t,n=!0){if(!n&&(t===0n||this.is0()))return Ut;if(pt(t,1n,gi),t===1n)return this;if(this.equals(At))return qh(t).p;let i=Ut,s=At;for(let o=this;t>0n;o=o.double(),t>>=1n)t&1n?i=i.add(o):n&&(s=s.add(o));return i}multiplyUnsafe(t){return this.multiply(t,!1)}toAffine(){const{X:t,Y:n,Z:i}=this;if(this.equals(Ut))return{x:0n,y:1n};const s=Mh(i,le);P(i*s)!==1n&&ie("invalid inverse");const o=P(t*s),r=P(n*s);return{x:o,y:r}}toBytes(){const{x:t,y:n}=this.assertValidity().toAffine(),i=Ac(n);return i[31]|=t&1n?128:0,i}toHex(){return wc(this.toBytes())}clearCofactor(){return this.multiply(Ei($h),!1)}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){let t=this.multiply(gi/2n,!1).double();return gi%2n&&(t=t.add(this)),t.is0()}};W(Re,"BASE"),W(Re,"ZERO");let $t=Re;const At=new $t(aa,la,1n,P(aa*la)),Ut=new $t(0n,1n,1n,0n);$t.BASE=At;$t.ZERO=Ut;const Ac=e=>kc(bc(pt(e,0n,ro),Fo)).reverse(),xc=e=>Ei("0x"+wc(vc(ot(e)).reverse())),_e=(e,t)=>{let n=e;for(;t-- >0n;)n*=n,n%=le;return n},Lh=e=>{const n=e*e%le*e%le,i=_e(n,2n)*n%le,s=_e(i,1n)*e%le,o=_e(s,5n)*s%le,r=_e(o,10n)*o%le,a=_e(r,20n)*r%le,u=_e(a,40n)*a%le,c=_e(u,80n)*u%le,l=_e(c,80n)*u%le,p=_e(l,10n)*o%le;return{pow_p_5_8:_e(p,2n)*e%le,b2:n}},ua=0x2b8324804fc1df0b2b4d00993dfbd7a72f431806ad2fe478c4ee1b274a0ea0b0n,Ih=(e,t)=>{const n=P(t*t*t),i=P(n*n*t),s=Lh(e*i).pow_p_5_8;let o=P(e*n*s);const r=P(t*o*o),a=o,u=P(o*ua),c=r===e,l=r===P(-e),p=r===P(-e*ua);return c&&(o=a),(l||p)&&(o=u),(P(o)&1n)===1n&&(o=P(-o)),{isValid:c||l,value:o}},ao=e=>$c(xc(e)),Uo=(...e)=>Cc.sha512Async(Dn(...e)),Rh=(...e)=>Ph("sha512")(Dn(...e)),Ec=e=>{const t=e.slice(0,St);t[0]&=248,t[31]&=127,t[31]|=64;const n=e.slice(St,Fo),i=ao(t),s=At.multiply(i),o=s.toBytes();return{head:t,prefix:n,scalar:i,point:s,pointBytes:o}},Wo=e=>Uo(ot(e,St)).then(Ec),Dh=e=>Ec(Rh(ot(e,St))),Bh=e=>Wo(e).then(t=>t.pointBytes),Nh=e=>Uo(e.hashable).then(e.finish),Oh=(e,t,n)=>{const{pointBytes:i,scalar:s}=e,o=ao(t),r=At.multiply(o).toBytes();return{hashable:Dn(r,i,n),finish:c=>{const l=$c(o+ao(c)*s);return ot(Dn(r,Ac(l)),Fo)}}},Fh=async(e,t)=>{const n=ot(e),i=await Wo(t),s=await Uo(i.prefix,n);return Nh(Oh(i,s,n))},Cc={sha512Async:async e=>{const t=Th(),n=Dn(e);return Qi(await t.digest("SHA-512",n.buffer))},sha512:void 0},Uh=(e=_h(St))=>e,Wh={getExtendedPublicKeyAsync:Wo,getExtendedPublicKey:Dh,randomSecretKey:Uh},Ci=8,Kh=256,Tc=Math.ceil(Kh/Ci)+1,lo=2**(Ci-1),zh=()=>{const e=[];let t=At,n=t;for(let i=0;i<Tc;i++){n=t,e.push(n);for(let s=1;s<lo;s++)n=n.add(t),e.push(n);t=n.double()}return e};let da;const pa=(e,t)=>{const n=t.negate();return e?n:t},qh=e=>{const t=da||(da=zh());let n=Ut,i=At;const s=2**Ci,o=s,r=Ei(s-1),a=Ei(Ci);for(let u=0;u<Tc;u++){let c=Number(e&r);e>>=a,c>lo&&(c-=o,e+=1n);const l=u*lo,p=l,f=l+Math.abs(c)-1,b=u%2!==0,h=c<0;c===0?i=i.add(pa(b,t[p])):n=n.add(pa(h,t[f]))}return e!==0n&&ie("invalid wnaf"),{p:n,f:i}},Cs="taskmaster-device-identity-v1";function co(e){let t="";for(const n of e)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}function _c(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 o=0;o<i.length;o+=1)s[o]=i.charCodeAt(o);return s}function Hh(e){return Array.from(e).map(t=>t.toString(16).padStart(2,"0")).join("")}async function Mc(e){const t=await crypto.subtle.digest("SHA-256",e);return Hh(new Uint8Array(t))}async function jh(){const e=Wh.randomSecretKey(),t=await Bh(e);return{deviceId:await Mc(t),publicKey:co(t),privateKey:co(e)}}async function Vh(){try{const n=localStorage.getItem(Cs);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 Mc(_c(i.publicKey));if(s!==i.deviceId){const o={...i,deviceId:s};return localStorage.setItem(Cs,JSON.stringify(o)),{deviceId:s,publicKey:i.publicKey,privateKey:i.privateKey}}return{deviceId:i.deviceId,publicKey:i.publicKey,privateKey:i.privateKey}}}}catch{}const e=await jh(),t={version:1,deviceId:e.deviceId,publicKey:e.publicKey,privateKey:e.privateKey,createdAtMs:Date.now()};return localStorage.setItem(Cs,JSON.stringify(t)),e}async function Gh(e,t){const n=_c(e),i=new TextEncoder().encode(t),s=await Fh(i,n);return co(s)}const Pc="taskmaster.device.auth.v1";function Ko(e){return e.trim()}function Qh(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 zo(){try{const e=window.localStorage.getItem(Pc);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 Lc(e){try{window.localStorage.setItem(Pc,JSON.stringify(e))}catch{}}function Yh(e){const t=zo();if(!t||t.deviceId!==e.deviceId)return null;const n=Ko(e.role),i=t.tokens[n];return!i||typeof i.token!="string"?null:i}function Xh(e){const t=Ko(e.role),n={version:1,deviceId:e.deviceId,tokens:{}},i=zo();i&&i.deviceId===e.deviceId&&(n.tokens={...i.tokens});const s={token:e.token,role:t,scopes:Qh(e.scopes),updatedAtMs:Date.now()};return n.tokens[t]=s,Lc(n),s}function Jh(e){const t=zo();if(!t||t.deviceId!==e.deviceId)return;const n=Ko(e.role);if(!t.tokens[n])return;const i={...t,tokens:{...t.tokens}};delete i.tokens[n],Lc(i)}async function qo(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 Ho(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 Zh(e){return{method:"exec.approvals.get",params:{}}}async function ef(e,t){if(!(!e.client||!e.connected)&&!e.execApprovalsLoading){e.execApprovalsLoading=!0,e.lastError=null;try{const n=Zh(t);if(!n){e.lastError="Select a node before loading exec approvals.";return}const i=await e.client.request(n.method,n.params);tf(e,i)}catch(n){e.lastError=String(n)}finally{e.execApprovalsLoading=!1}}}function tf(e,t){e.execApprovalsSnapshot=t,e.execApprovalsDirty||(e.execApprovalsForm=st(t.file??{}))}async function Ic(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 Ht(e,t,n){if(!t.trim())return;const i={...e.skillMessages};n?i[t]=n:delete i[t],e.skillMessages=i}function Ge(e){return e instanceof Error?e.message:String(e)}function Yi(){return{name:"",skillContent:"",references:[]}}async function Ve(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=Ge(n)}finally{e.skillsLoading=!1}}}function Rc(e,t,n){e.skillEdits={...e.skillEdits,[t]:n}}async function Dc(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 Ve(e),Ht(e,t,{kind:"success",message:n?"Skill enabled":"Skill disabled"})}catch(i){const s=Ge(i);e.skillsError=s,Ht(e,t,{kind:"error",message:s})}finally{e.skillsBusyKey=null}}}async function Bc(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 Ve(e),Ht(e,t,{kind:"success",message:"API key saved"})}catch(n){const i=Ge(n);e.skillsError=i,Ht(e,t,{kind:"error",message:i})}finally{e.skillsBusyKey=null}}}async function Nc(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 Ve(e),Ht(e,t,{kind:"success",message:(s==null?void 0:s.message)??"Installed"})}catch(s){const o=Ge(s);e.skillsError=o,Ht(e,t,{kind:"error",message:o})}finally{e.skillsBusyKey=null}}}async function Oc(e,t){if(!(!e.client||!e.connected))try{const n=await e.client.request("skills.read",{name:t});n&&(e.skillDetail=n,e.skillDetailTab="SKILL.md")}catch(n){e.skillsError=Ge(n)}}function Fc(e){e.skillDetail=null,e.skillDetailTab=""}function Uc(e,t){e.skillDetailTab=t}async function Wc(e){if(e.skillAddModal=!0,e.skillAddForm=Yi(),e.skillDrafts=[],!(!e.client||!e.connected))try{const t=await e.client.request("skills.drafts",{});t&&(e.skillDrafts=t.drafts)}catch{}}function Kc(e){e.skillAddModal=!1,e.skillAddForm=Yi(),e.skillDrafts=[]}function zc(e,t){e.skillAddForm={name:t.name,skillContent:t.skillContent,references:t.references.map(n=>({...n}))}}async function qc(e){if(!e.client||!e.connected)return;const t=e.skillAddForm;if(!(!t.name.trim()||!t.skillContent.trim())){e.skillsBusyKey="__add__",e.skillsError=null;try{const n=t.references.filter(i=>i.name.trim()&&i.content.trim()).map(i=>({name:i.name.trim(),content:i.content}));await e.client.request("skills.create",{name:t.name.trim(),skillContent:t.skillContent,references:n.length>0?n:void 0}),e.skillAddModal=!1,e.skillAddForm=Yi(),e.skillDrafts=[],await Ve(e)}catch(n){e.skillsError=Ge(n)}finally{e.skillsBusyKey=null}}}async function Hc(e,t){if(!(!e.client||!e.connected))try{await e.client.request("skills.deleteDraft",{name:t}),e.skillDrafts=e.skillDrafts.filter(n=>n.name!==t)}catch(n){e.skillsError=Ge(n)}}async function jc(e,t){if(!(!e.client||!e.connected))try{const n=await e.client.request("skills.read",{name:t});if(!n)return;e.skillAddForm={name:n.name,skillContent:n.content,references:n.references.map(i=>({...i}))},e.skillAddModal=!0,e.skillDrafts=[]}catch(n){e.skillsError=Ge(n)}}async function Vc(e,t){if(!(!e.client||!e.connected)){e.skillsBusyKey=t,e.skillsError=null;try{await e.client.request("skills.delete",{name:t}),await Ve(e)}catch(n){e.skillsError=Ge(n)}finally{e.skillsBusyKey=null}}}const nf=Object.freeze(Object.defineProperty({__proto__:null,closeAddSkillModal:Kc,closeSkillDetail:Fc,deleteDraft:Hc,deleteSkill:Vc,editSkill:jc,emptyAddForm:Yi,importDraft:zc,installSkill:Nc,loadSkills:Ve,openAddSkillModal:Wc,saveNewSkill:qc,saveSkillApiKey:Bc,setSkillDetailTab:Uc,updateSkillEdit:Rc,updateSkillEnabled:Dc,viewSkillDetail:Oc},Symbol.toStringTag,{value:"Module"})),Gc={overview:"/overview",channels:"/channels",instances:"/instances",cron:"/cron",skills:"/skills",nodes:"/nodes",chat:"/chat",admins:"/admins",config:"/config",debug:"/debug",logs:"/logs"},Qc=new Map(Object.entries(Gc).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 Bn(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 sf(e,t=""){const n=Xi(t),i=Gc[e];return n?`${n}${i}`:i}function Yc(e,t=""){const n=Xi(t);let i=e||"/";n&&(i===n?i="/":i.startsWith(`${n}/`)&&(i=i.slice(n.length)));let s=Bn(i).toLowerCase();return s.endsWith("/index.html")&&(s="/"),s==="/"?"chat":Qc.get(s)??null}function of(e){let t=Bn(e);if(t.endsWith("/index.html")&&(t=Bn(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(Qc.has(s)){const o=n.slice(0,i);return o.length?`/${o.join("/")}`:""}}return`/${n.join("/")}`}function rf(){return typeof window>"u"||typeof window.matchMedia!="function"||window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function jo(e){return e==="system"?rf():e}const ni=e=>Number.isNaN(e)?.5:e<=0?0:e>=1?1:e,af=()=>typeof window>"u"||typeof window.matchMedia!="function"?!1:window.matchMedia("(prefers-reduced-motion: reduce)").matches??!1,ii=e=>{e.classList.remove("theme-transition"),e.style.removeProperty("--theme-switch-x"),e.style.removeProperty("--theme-switch-y")},lf=({nextTheme:e,applyTheme:t,context:n,currentTheme:i})=>{var c;if(i===e)return;const s=globalThis.document??null;if(!s){t();return}const o=s.documentElement,r=s,a=af();if(!!r.startViewTransition&&!a){let l=.5,p=.5;if((n==null?void 0:n.pointerClientX)!==void 0&&(n==null?void 0:n.pointerClientY)!==void 0&&typeof window<"u")l=ni(n.pointerClientX/window.innerWidth),p=ni(n.pointerClientY/window.innerHeight);else if(n!=null&&n.element){const f=n.element.getBoundingClientRect();f.width>0&&f.height>0&&typeof window<"u"&&(l=ni((f.left+f.width/2)/window.innerWidth),p=ni((f.top+f.height/2)/window.innerHeight))}o.style.setProperty("--theme-switch-x",`${l*100}%`),o.style.setProperty("--theme-switch-y",`${p*100}%`),o.classList.add("theme-transition");try{const f=(c=r.startViewTransition)==null?void 0:c.call(r,()=>{t()});f!=null&&f.finished?f.finished.finally(()=>ii(o)):ii(o)}catch{ii(o),t()}return}t(),ii(o)},cf=2e3;async function An(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),o=Array.isArray(s.entries)?s.entries:[],r=!!(t!=null&&t.reset||Object.keys(e.sessionLogsCursors).length===0);e.sessionLogsEntries=r?o:[...e.sessionLogsEntries,...o].slice(-cf),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 Xc=Object.freeze(Object.defineProperty({__proto__:null,loadSessionLogs:An},Symbol.toStringTag,{value:"Module"}));async function Jc(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 uf(e,t){if(!(!e.client||!e.connected))try{const n={};await e.client.request("memory.auditClear",n),e.auditEntries=[]}catch{}}function Oe(e){return e instanceof Error?e.message:String(e)}let si=null;function Xt(e,t){si&&clearTimeout(si),e.filesMessage={kind:"success",text:t},si=setTimeout(()=>{e.filesMessage=null,si=null},3e3)}async function Jt(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=Oe(n)}finally{e.filesLoading=!1}}}}async function df(e,t,n){e.filesSelectedPaths=new Set([t]),await Zc(e,t,n)}async function pf(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 Zc(e,s,n)}else e.filesSelectedPath=null,e.filesPreviewContent=null,e.filesPreviewSize=null,e.filesPreviewBinary=!1}async function hf(e,t){if(!e.client||!e.connected)return;const n=[...e.filesSelectedPaths];if(n.length===0)return;let i=0,s="";for(const o of n)try{await eu(e,o,t),i++}catch(r){s=Oe(r)}s?e.filesMessage={kind:"error",text:`${i} downloaded, error: ${s}`}:Xt(e,`${i} file${i!==1?"s":""} downloaded`)}async function ff(e,t,n,i){const s=t.split("/").pop()??t,o=n==="."?s:`${n}/${s}`;o!==t&&await vf(e,t,o,i)}async function Zc(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=Oe(i)}finally{e.filesPreviewLoading=!1}}}async function eu(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 o=Uint8Array.from(atob(s.base64),c=>c.charCodeAt(0)),r=new Blob([o]),a=URL.createObjectURL(r),u=document.createElement("a");u.href=a,u.download=s.name??t.split("/").pop()??"download",document.body.appendChild(u),u.click(),document.body.removeChild(u),URL.revokeObjectURL(a)}catch(i){e.filesMessage={kind:"error",text:Oe(i)}}}async function gf(e,t,n,i){if(!e.client||!e.connected)return;e.filesUploadBusy=!0,e.filesMessage=null;let s=0,o="";for(const r of n)try{const a=await r.arrayBuffer(),u=btoa(new Uint8Array(a).reduce((l,p)=>l+String.fromCharCode(p),"")),c={path:t,name:r.name,data:u};i&&(c.agentId=i),await e.client.request("files.upload",c),s++}catch(a){o=Oe(a)}e.filesUploadBusy=!1,o?e.filesMessage={kind:"error",text:s>0?`${s} uploaded, error: ${o}`:o}:Xt(e,`${s} file${s!==1?"s":""} uploaded`),await Jt(e,i)}async function mf(e,t,n,i){if(!e.client||!e.connected)return;e.filesMessage=null;const s=t==="."?n:`${t}/${n}`;try{const o={path:s};i&&(o.agentId=i),await e.client.request("files.mkdir",o),Xt(e,`Created ${s}`),await Jt(e,i),e.filesExpandedDirs=new Set([...e.filesExpandedDirs,s]),e.filesCurrentDir=s}catch(o){e.filesMessage={kind:"error",text:Oe(o)}}}async function yf(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),Xt(e,"File deleted"),e.filesSelectedPath===t&&(e.filesSelectedPath=null,e.filesPreviewContent=null),await Jt(e,n)}catch(i){e.filesMessage={kind:"error",text:Oe(i)}}}}async function vf(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),Xt(e,"File moved"),e.filesSelectedPath===t&&(e.filesSelectedPath=n),await Jt(e,i)}catch(s){e.filesMessage={kind:"error",text:Oe(s)}}}}async function Vo(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 bf(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,o=(i==null?void 0:i.chunks)??0;Xt(e,`Re-indexed: ${s} files, ${o} chunks`),await Vo(e,t)}catch(n){e.filesMessage={kind:"error",text:Oe(n)}}finally{e.filesReindexBusy=!1}}}function wf(e,t){const n=new Set(e.filesExpandedDirs);n.has(t)?n.delete(t):n.add(t),e.filesExpandedDirs=n,e.filesCurrentDir=t}async function kf(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:Oe(i)},e.filesSearchResults=null}finally{e.filesSearchLoading=!1}}}function Sf(e){e.filesSearchQuery="",e.filesSearchResults=null}function $f(e){e.nodesPollInterval==null&&(e.nodesPollInterval=window.setInterval(()=>{Ho(e,{quiet:!0})},5e3))}function Af(e){e.nodesPollInterval!=null&&(clearInterval(e.nodesPollInterval),e.nodesPollInterval=null)}function Go(e){e.logsPollInterval==null&&(e.logsPollInterval=window.setInterval(()=>{e.tab==="logs"&&Kt(e,{quiet:!0})},2e3))}function Qo(e){e.logsPollInterval!=null&&(clearInterval(e.logsPollInterval),e.logsPollInterval=null)}function Yo(e){e.sessionLogsPollInterval==null&&(e.sessionLogsPollInterval=window.setInterval(()=>{!(e.advancedPage?e.advancedTab==="logs":e.tab==="logs")||e.logsSubTab!=="session"||An(e,{quiet:!0})},2e3))}function Xo(e){e.sessionLogsPollInterval!=null&&(clearInterval(e.sessionLogsPollInterval),e.sessionLogsPollInterval=null)}function Jo(e){e.debugPollInterval==null&&(e.debugPollInterval=window.setInterval(()=>{e.tab==="debug"&&Oo(e)},3e3))}function Zo(e){e.debugPollInterval!=null&&(clearInterval(e.debugPollInterval),e.debugPollInterval=null)}function xf(e){e.auditPollInterval==null&&(e.auditPollInterval=window.setInterval(()=>{Jc(e)},3e4))}function Ef(e){e.auditPollInterval!=null&&(clearInterval(e.auditPollInterval),e.auditPollInterval=null)}function Cf(e){e.memoryStatusPollInterval==null&&(e.memoryStatusPollInterval=window.setInterval(()=>{if(e.tab!=="files")return;const t=e;Vo(t,t.filesResolvedAgentId)},3e3))}function Tf(e){e.memoryStatusPollInterval!=null&&(clearInterval(e.memoryStatusPollInterval),e.memoryStatusPollInterval=null)}function nt(e,t){var i;const n={...t,lastActiveSessionKey:((i=t.lastActiveSessionKey)==null?void 0:i.trim())||t.sessionKey.trim()||"main"};e.settings=n,$p(n),t.theme!==e.theme&&(e.theme=t.theme,Ji(e,jo(t.theme))),e.applySessionKey=e.settings.lastActiveSessionKey}function tu(e,t){const n=t.trim();n&&e.settings.lastActiveSessionKey!==n&&nt(e,{...e.settings,lastActiveSessionKey:n})}function _f(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"),o=t.get("gatewayUrl");let r=!1;if(n!=null){const u=n.trim();u&&u!==e.settings.token&&nt(e,{...e.settings,token:u}),t.delete("token"),r=!0}if(i!=null){const u=i.trim();u&&(e.password=u),t.delete("password"),r=!0}if(s!=null){const u=s.trim();u&&(e.sessionKey=u,nt(e,{...e.settings,sessionKey:u,lastActiveSessionKey:u}))}if(o!=null){const u=o.trim();u&&u!==e.settings.gatewayUrl&&nt(e,{...e.settings,gatewayUrl:u}),t.delete("gatewayUrl"),r=!0}if(!r)return;const a=new URL(window.location.href);a.search=t.toString(),window.history.replaceState({},"",a.toString())}function Mf(e,t){e.tab!==t&&(e.tab=t),t==="chat"&&(e.chatHasAutoScrolled=!1),t==="logs"?e.logsSubTab==="session"?Yo(e):Go(e):(Qo(e),Xo(e)),t==="debug"?Jo(e):Zo(e),Ti(e),iu(e,t,!1)}function Pf(e,t,n){lf({nextTheme:t,applyTheme:()=>{e.theme=t,nt(e,{...e.settings,theme:t}),Ji(e,jo(t))},context:n,currentTheme:e.theme})}async function Ti(e){if(e.tab==="overview"&&await su(e),e.tab==="channels"&&await Of(e),e.tab==="instances"&&await Ic(e),e.tab==="cron"&&await er(e),e.tab==="skills"&&await Ve(e),e.tab==="nodes"&&(await Ho(e),await qo(e),await Ne(e),await ef(e)),e.tab==="chat"&&!e.advancedPage&&!e.chatPage&&(await zf(e),Qt(e,!e.chatHasAutoScrolled)),e.tab==="config"&&(await cc(e),await Ne(e)),e.tab==="debug"&&(await Oo(e),e.eventLog=e.eventLogBuffer),e.tab==="logs"){if(e.logsAtBottom=!0,e.logsSubTab==="session"){const{loadSessionLogs:n}=await oe(async()=>{const{loadSessionLogs:i}=await Promise.resolve().then(()=>Xc);return{loadSessionLogs:i}},void 0,import.meta.url);await n(e,{reset:!0})}else await Kt(e,{reset:!0});ac(e,!0)}}function Lf(){if(typeof window>"u")return"";const e=window.__TASKMASTER_CONTROL_UI_BASE_PATH__;return typeof e=="string"&&e.trim()?Xi(e):of(window.location.pathname)}function If(e){e.theme=e.settings.theme??"system",Ji(e,jo(e.theme))}function Ji(e,t){if(e.themeResolved=t,typeof document>"u")return;const n=document.documentElement;n.dataset.theme=t,n.style.colorScheme=t}function Rf(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"&&Ji(e,n.matches?"dark":"light")},typeof e.themeMedia.addEventListener=="function"){e.themeMedia.addEventListener("change",e.themeMediaHandler);return}e.themeMedia.addListener(e.themeMediaHandler)}function Df(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 Bf(e,t){if(typeof window>"u")return;const n=Yc(window.location.pathname,e.basePath)??"chat";nu(e,n),iu(e,n,t)}function Nf(e){var s;if(typeof window>"u")return;const t=Yc(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,nt(e,{...e.settings,sessionKey:i,lastActiveSessionKey:i})),nu(e,t)}function nu(e,t){e.tab!==t&&(e.tab=t),t==="chat"&&(e.chatHasAutoScrolled=!1),t==="logs"?e.logsSubTab==="session"?Yo(e):Go(e):(Qo(e),Xo(e)),t==="debug"?Jo(e):Zo(e),e.connected&&Ti(e)}function iu(e,t,n){if(typeof window>"u")return;const i=Bn(sf(t,e.basePath)),s=Bn(window.location.pathname),o=new URL(window.location.href);t==="chat"&&e.sessionKey?o.searchParams.set("session",e.sessionKey):o.searchParams.delete("session"),s!==i&&(o.pathname=i),n?window.history.replaceState({},"",o.toString()):window.history.pushState({},"",o.toString())}async function su(e){await Promise.all([Y(e,!1),Ic(e),Do(e),Yt(e),Oo(e)])}async function Of(e){await Promise.all([Y(e,!0),cc(e),Ne(e)])}async function er(e){await Promise.all([Y(e,!1),Yt(e),Nn(e)])}function ou(e){return e.chatSending||!!e.chatRunId}function Ff(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 ru(e){e.connected&&(e.chatMessage="",await oc(e))}function Uf(e,t,n){const i=t.trim(),s=!!(n&&n.length>0);!i&&!s||(e.chatQueue=[...e.chatQueue,{id:Gi(),text:i,createdAt:Date.now(),attachments:s?n==null?void 0:n.map(o=>({...o})):void 0}],Qt(e))}async function au(e,t,n){var s,o;Bo(e);const i=await sc(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&&tu(e,e.sessionKey),i&&(n!=null&&n.restoreDraft)&&((s=n.previousDraft)!=null&&s.trim())&&(e.chatMessage=n.previousDraft),i&&(n!=null&&n.restoreAttachments)&&((o=n.previousAttachments)!=null&&o.length)&&(e.chatAttachments=n.previousAttachments),Qt(e),i&&!e.chatRunId&&lu(e),i}async function lu(e){if(!e.connected||ou(e))return;const[t,...n]=e.chatQueue;if(!t)return;e.chatQueue=n,await au(e,t.text,{attachments:t.attachments})||(e.chatQueue=[t,...e.chatQueue])}function Wf(e,t){e.chatQueue=e.chatQueue.filter(n=>n.id!==t)}async function Kf(e,t,n){if(!e.connected)return;const i=e.chatMessage,s=(t??e.chatMessage).trim(),o=e.chatAttachments??[],r=t==null?o:[],a=r.length>0;if(!(!s&&!a)){if(Ff(s)){await ru(e);return}if(t==null&&(e.chatMessage="",e.chatAttachments=[],xp(e.selectedWorkspace??"",e.sessionKey)),ou(e)){Uf(e,s,r);return}await au(e,s,{previousDraft:t==null?i:void 0,restoreDraft:!!(t&&(n!=null&&n.restoreDraft)),attachments:a?r:void 0,previousAttachments:t==null?o:void 0,restoreAttachments:!!(t&&(n!=null&&n.restoreDraft))})}}async function zf(e){var i;const t=e,n=Math.max((((i=t.chatMessages)==null?void 0:i.length)??0)+10,Be);await Promise.all([De(t,{limit:n}),Do(t),uo(e)]),Qt(e,!0)}const qf=lu;function Hf(e){var s,o,r;const t=Ql(e.sessionKey);if(t!=null&&t.agentId)return t.agentId;const n=(s=e.hello)==null?void 0:s.snapshot;return((r=(o=n==null?void 0:n.sessionDefaults)==null?void 0:o.defaultAgentId)==null?void 0:r.trim())||"main"}function jf(e,t){const n=Xi(e),i=encodeURIComponent(t);return n?`${n}/avatar/${i}?meta=1`:`/avatar/${i}?meta=1`}async function uo(e){if(!e.connected){e.chatAvatarUrl=null;return}const t=Hf(e);if(!t){e.chatAvatarUrl=null;return}e.chatAvatarUrl=null;const n=jf(e.basePath,t);try{const i=await fetch(n,{method:"GET"});if(!i.ok){e.chatAvatarUrl=null;return}const s=await i.json(),o=typeof s.avatarUrl=="string"?s.avatarUrl.trim():"";e.chatAvatarUrl=o||null}catch{e.chatAvatarUrl=null}}const L={messageSquare:d`<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:d`<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:d`<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>`,unlink:d`<svg viewBox="0 0 24 24"><path d="m18.84 12.25 1.72-1.71h-.02a5.004 5.004 0 0 0-.12-7.07 5.006 5.006 0 0 0-6.95 0l-1.72 1.71"/><path d="m5.17 11.75-1.71 1.71a5.004 5.004 0 0 0 .12 7.07 5.006 5.006 0 0 0 6.95 0l1.71-1.71"/><line x1="8" x2="8" y1="2" y2="5"/><line x1="2" x2="5" y1="8" y2="8"/><line x1="16" x2="16" y1="19" y2="22"/><line x1="19" x2="22" y1="16" y2="16"/></svg>`,radio:d`<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:d`<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:d`<svg viewBox="0 0 24 24"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"/></svg>`,monitor:d`<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:d`<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:d`<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:d`<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:d`<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:d`<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:d`<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:d`<svg viewBox="0 0 24 24"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg>`,check:d`<svg viewBox="0 0 24 24"><path d="M20 6 9 17l-5-5"/></svg>`,copy:d`<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:d`<svg viewBox="0 0 24 24"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/></svg>`,brain:d`<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:d`<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:d`<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:d`<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:d`<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:d`<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:d`<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:d`<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:d`<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:d`<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:d`<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:d`<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:d`<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:d`<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:d`<svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/></svg>`,circleCheck:d`<svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/><path d="m9 12 2 2 4-4"/></svg>`,circleX:d`<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:d`<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:d`<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:d`<svg viewBox="0 0 24 24"><path d="m22 2-7 20-4-9-9-4Z"/><path d="M22 2 11 13"/></svg>`,smile:d`<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:d`<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:d`<svg viewBox="0 0 24 24"><rect width="14" height="14" x="5" y="5" rx="2"/></svg>`,eye:d`<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:d`<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:d`<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>`,mic:d`<svg viewBox="0 0 24 24"><path d="M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z"/><path d="M19 10v2a7 7 0 0 1-14 0v-2"/><line x1="12" x2="12" y1="19" y2="22"/></svg>`,chevronDown:d`<svg viewBox="0 0 24 24"><path d="m6 9 6 6 6-6"/></svg>`,film:d`<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>`,wifi:d`<svg viewBox="0 0 24 24"><path d="M12 20h.01"/><path d="M2 8.82a15 15 0 0 1 20 0"/><path d="M5 12.859a10 10 0 0 1 14 0"/><path d="M8.5 16.429a5 5 0 0 1 7 0"/></svg>`,wifiOff:d`<svg viewBox="0 0 24 24"><path d="M12 20h.01"/><path d="M8.5 16.429a5 5 0 0 1 7 0"/><path d="M5 12.859a10 10 0 0 1 5.17-2.69"/><path d="M13.41 10.28a10 10 0 0 1 5.59 2.58"/><path d="M2 8.82a15 15 0 0 1 4.17-2.65"/><path d="M10.66 5c4.01-.36 8.14.9 11.34 3.76"/><line x1="2" x2="22" y1="2" y2="22"/></svg>`,power:d`<svg viewBox="0 0 24 24"><path d="M18.36 6.64a9 9 0 1 1-12.73 0"/><line x1="12" x2="12" y1="2" y2="12"/></svg>`},Vf=d`<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>`,Gf=d`<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 ha=!1;function Qf(){ha||(ha=!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 Tt(e,t){var l;const n=(p,f)=>p===e?d`<span class="sp-page-nav-current">${p}</span>`:d`<a href=${f}>${p}</a>`,i=d`
|
|
21
21
|
${n("Setup","/setup")}
|
|
22
22
|
${n("Chat","/chat")}
|
|
23
23
|
${n("Admins","/admins")}
|
|
@@ -25,14 +25,14 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
25
25
|
${n("Files","/files")}
|
|
26
26
|
${n("Browser","/browser")}
|
|
27
27
|
${n("Advanced","/advanced")}
|
|
28
|
-
`,o=t&&(t.isMaster!==!1||!t.hasPins)?
|
|
29
|
-
${
|
|
28
|
+
`,o=t&&(t.isMaster!==!1||!t.hasPins)?Yf(t):k,r=t!=null&&t.hasPins&&t.onLogout?d`<button class="nav-logout-btn" @click=${t.onLogout} title="Lock">${Vf}</button>`:k,a=(t==null?void 0:t.auditCount)??0,u=a>0&&(t!=null&&t.onAuditClick)?d`<button class="nav-audit-btn" @click=${t.onAuditClick} title="Memory writes to review">
|
|
29
|
+
${Gf}
|
|
30
30
|
<span class="nav-audit-badge">${a>99?"99+":a}</span>
|
|
31
|
-
</button>`:k,c=()=>{const p=document.getElementById("nav-burger-toggle");p&&(p.checked=!1)};return
|
|
31
|
+
</button>`:k,c=()=>{const p=document.getElementById("nav-burger-toggle");p&&(p.checked=!1)};return Qf(),d`
|
|
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="${(t==null?void 0:t.selectedWorkspace)&&((l=
|
|
35
|
+
<img class="setup-header-logo" src="${(t==null?void 0:t.selectedWorkspace)&&((l=Ie()[t.selectedWorkspace])==null?void 0:l.logoUrl)||je().iconUrl}" alt="${je().name}" />
|
|
36
36
|
<nav class="setup-header-nav">
|
|
37
37
|
${i}
|
|
38
38
|
</nav>
|
|
@@ -50,7 +50,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
50
50
|
${i}
|
|
51
51
|
</nav>
|
|
52
52
|
</div>
|
|
53
|
-
`}function
|
|
53
|
+
`}function Yf(e){const{workspaces:t,selectedWorkspace:n,onWorkspaceSelect:i}=e;return d`
|
|
54
54
|
<select
|
|
55
55
|
class="sp-workspace-selector"
|
|
56
56
|
.value=${n??""}
|
|
@@ -64,7 +64,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
64
64
|
<option disabled>───</option>
|
|
65
65
|
<option value="__add__">+ Add Account</option>
|
|
66
66
|
</select>
|
|
67
|
-
`}function
|
|
67
|
+
`}function Xf(e){return e.connected?e.fullscreen&&e.active?d`
|
|
68
68
|
<div class="sp-fullscreen-overlay">
|
|
69
69
|
<div class="sp-fullscreen-toolbar">
|
|
70
70
|
<button
|
|
@@ -106,7 +106,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
106
106
|
</div>
|
|
107
107
|
`:d`
|
|
108
108
|
<div class="setup-container">
|
|
109
|
-
${
|
|
109
|
+
${Tt("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>
|
|
@@ -196,14 +196,14 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
196
196
|
<p>Connecting to gateway...</p>
|
|
197
197
|
</div>
|
|
198
198
|
</div>
|
|
199
|
-
`}const
|
|
199
|
+
`}const _i="application/x-taskmaster-file-path";let ut=null;function cu(e){return e==null?"":e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function uu(e){const t=e.split("/");return t.length>1?t.slice(0,-1).join("/"):"."}function Jf(e,t,n){var o,r;e.preventDefault(),e.stopPropagation(),e.currentTarget.classList.remove("sp-drop-target");const i=(o=e.dataTransfer)==null?void 0:o.getData(_i);if(i){uu(i)!==t&&n.onMoveToDir(i,t);return}const s=(r=e.dataTransfer)==null?void 0:r.files;if(s&&s.length>0){const a=Array.from(s).filter(u=>u.name.toLowerCase().endsWith(".md"));a.length>0&&n.onUpload(t,a)}}function du(e,t,n){var u;const i=e.type==="directory"||e.type==="symlink"&&e.children!=null,s=t.expandedDirs.has(e.path),o=t.selectedPaths.has(e.path),r=t.currentDir===e.path,a=n*20+12;return i?d`
|
|
200
200
|
<div
|
|
201
201
|
class="sp-tree-item sp-tree-dir ${s?"expanded":""} ${r?"current":""}"
|
|
202
202
|
style="padding-left: ${a}px;"
|
|
203
203
|
@click=${()=>t.onToggleDir(e.path)}
|
|
204
204
|
@dragover=${c=>{c.preventDefault(),c.stopPropagation(),c.dataTransfer&&(c.dataTransfer.dropEffect="move"),c.currentTarget.classList.add("sp-drop-target")}}
|
|
205
205
|
@dragleave=${c=>{c.currentTarget.classList.remove("sp-drop-target")}}
|
|
206
|
-
@drop=${c=>
|
|
206
|
+
@drop=${c=>Jf(c,e.path,t)}
|
|
207
207
|
>
|
|
208
208
|
<span class="sp-tree-chevron">${s?"−":"+"}</span>
|
|
209
209
|
<span class="sp-tree-icon">${L.folder}</span>
|
|
@@ -214,20 +214,20 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
214
214
|
@click=${c=>{c.stopPropagation(),t.onDelete(e.path)}}
|
|
215
215
|
>×</span>`:k}
|
|
216
216
|
</div>
|
|
217
|
-
${s&&e.children?e.children.map(c=>
|
|
217
|
+
${s&&e.children?e.children.map(c=>du(c,t,n+1)):k}
|
|
218
218
|
`:d`
|
|
219
219
|
<div
|
|
220
220
|
class="sp-tree-item sp-tree-file ${o?"selected":""}"
|
|
221
221
|
style="padding-left: ${a}px;"
|
|
222
222
|
draggable="true"
|
|
223
223
|
@click=${c=>{c.metaKey||c.ctrlKey?t.onToggleSelectFile(e.path):t.onSelectFile(e.path)}}
|
|
224
|
-
@dragstart=${c=>{c.dataTransfer&&(c.dataTransfer.effectAllowed="move",c.dataTransfer.setData(
|
|
224
|
+
@dragstart=${c=>{c.dataTransfer&&(c.dataTransfer.effectAllowed="move",c.dataTransfer.setData(_i,e.path),c.dataTransfer.setData("text/plain",e.name))}}
|
|
225
225
|
>
|
|
226
226
|
<span class="sp-tree-icon">${L.fileText}</span>
|
|
227
227
|
<span class="sp-tree-name">${e.name}</span>
|
|
228
|
-
<span class="sp-tree-size">${
|
|
228
|
+
<span class="sp-tree-size">${cu(e.size)}</span>
|
|
229
229
|
</div>
|
|
230
|
-
`}function
|
|
230
|
+
`}function Zf(e){const t=e.selectedPaths.size;return t<2?k:d`
|
|
231
231
|
<div class="sp-bulk-actions">
|
|
232
232
|
<span style="color: var(--tasker-muted-grey); font-size: 13px;">${t} files selected</span>
|
|
233
233
|
<button
|
|
@@ -238,7 +238,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
238
238
|
Download ${t} files
|
|
239
239
|
</button>
|
|
240
240
|
</div>
|
|
241
|
-
`}function
|
|
241
|
+
`}function eg(e){if(e.selectedPaths.size!==1||!e.selectedPath)return k;if(e.previewLoading)return d`
|
|
242
242
|
<div class="sp-file-preview">
|
|
243
243
|
<div class="setup-spinner" style="width: 32px; height: 32px; margin: 24px auto;"></div>
|
|
244
244
|
</div>
|
|
@@ -248,21 +248,21 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
248
248
|
<div>
|
|
249
249
|
<strong>${t}</strong>
|
|
250
250
|
<div class="sp-file-preview-meta">
|
|
251
|
-
${e.selectedPath}${e.previewSize!=null?` — ${
|
|
251
|
+
${e.selectedPath}${e.previewSize!=null?` — ${cu(e.previewSize)}`:""}
|
|
252
252
|
</div>
|
|
253
253
|
</div>
|
|
254
254
|
<div class="sp-file-actions">
|
|
255
255
|
<button class="setup-button secondary" style="padding: 8px 16px; font-size: 13px;" @click=${()=>e.onDownload(e.selectedPath)}>
|
|
256
256
|
Download
|
|
257
257
|
</button>
|
|
258
|
-
<button class="setup-button danger" style="padding: 8px 16px; font-size: 13px;" @click=${()=>{e.pendingDeletePath===e.selectedPath?(
|
|
258
|
+
<button class="setup-button danger" style="padding: 8px 16px; font-size: 13px;" @click=${()=>{e.pendingDeletePath===e.selectedPath?(ut&&clearTimeout(ut),ut=null,e.onDelete(e.selectedPath)):(e.onArmDelete(e.selectedPath),ut&&clearTimeout(ut),ut=setTimeout(()=>{e.onArmDelete(""),ut=null},3e3))}}>
|
|
259
259
|
${e.pendingDeletePath===e.selectedPath?"Confirm delete?":"Delete"}
|
|
260
260
|
</button>
|
|
261
261
|
</div>
|
|
262
262
|
</div>
|
|
263
263
|
${e.previewBinary?d`<div class="sp-file-preview-body"><p style="color: var(--tasker-muted-grey);">Binary file — use Download to view.</p></div>`:e.previewContent!=null?d`<div class="sp-file-preview-body"><pre class="sp-file-code">${e.previewContent}</pre></div>`:d`<div class="sp-file-preview-body"><p style="color: var(--tasker-muted-grey);">File too large for preview — use Download.</p></div>`}
|
|
264
264
|
</div>
|
|
265
|
-
`}function
|
|
265
|
+
`}function tg(e){return d`
|
|
266
266
|
<div class="sp-search-bar">
|
|
267
267
|
<input
|
|
268
268
|
type="text"
|
|
@@ -294,7 +294,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
294
294
|
Clear
|
|
295
295
|
</button>`:k}
|
|
296
296
|
</div>
|
|
297
|
-
`}function
|
|
297
|
+
`}function ng(e){return e.searchResults?e.searchResults.length===0?d`<div class="sp-search-results">
|
|
298
298
|
<div style="padding: 24px; color: var(--tasker-muted-grey); text-align: center;">No results found.</div>
|
|
299
299
|
</div>`:d`
|
|
300
300
|
<div class="sp-search-results">
|
|
@@ -314,9 +314,9 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
314
314
|
</div>
|
|
315
315
|
`)}
|
|
316
316
|
</div>
|
|
317
|
-
`:k}function
|
|
317
|
+
`:k}function ig(e){const t=e.currentDir;return e.connected?d`
|
|
318
318
|
<div class="setup-container">
|
|
319
|
-
${
|
|
319
|
+
${Tt("Files",e.wsProps)}
|
|
320
320
|
<div class="setup-card sp-card-wide">
|
|
321
321
|
<h1>Workspace Files</h1>
|
|
322
322
|
<p style="margin-bottom: 16px;">Browse, upload, and manage files in your workspace. Drag files between folders to move them.</p>
|
|
@@ -378,18 +378,18 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
378
378
|
|
|
379
379
|
${e.uploadBusy?d`<div style="margin-top: 12px; color: var(--tasker-orange); font-weight: 600; font-size: 14px;">Uploading...</div>`:k}
|
|
380
380
|
|
|
381
|
-
${
|
|
381
|
+
${tg(e)}
|
|
382
382
|
|
|
383
|
-
${e.searchResults!==null?
|
|
383
|
+
${e.searchResults!==null?ng(e):d`<div
|
|
384
384
|
class="sp-file-tree"
|
|
385
|
-
@dragover=${n=>{n.preventDefault(),n.dataTransfer&&(n.dataTransfer.dropEffect=n.dataTransfer.types.includes(
|
|
386
|
-
@drop=${n=>{var o,r;n.preventDefault();const i=(o=n.dataTransfer)==null?void 0:o.getData(
|
|
385
|
+
@dragover=${n=>{n.preventDefault(),n.dataTransfer&&(n.dataTransfer.dropEffect=n.dataTransfer.types.includes(_i)?"move":"copy")}}
|
|
386
|
+
@drop=${n=>{var o,r;n.preventDefault();const i=(o=n.dataTransfer)==null?void 0:o.getData(_i);if(i){uu(i)!=="."&&e.onMoveToDir(i,".");return}const s=(r=n.dataTransfer)==null?void 0:r.files;if(s&&s.length>0){const a=Array.from(s).filter(u=>u.name.toLowerCase().endsWith(".md"));a.length>0&&e.onUpload(t,a)}}}
|
|
387
387
|
>
|
|
388
|
-
${e.tree.length===0&&!e.loading?d`<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=>
|
|
388
|
+
${e.tree.length===0&&!e.loading?d`<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=>du(n,e,0))}
|
|
389
389
|
</div>`}
|
|
390
390
|
|
|
391
|
-
${
|
|
392
|
-
${
|
|
391
|
+
${Zf(e)}
|
|
392
|
+
${eg(e)}
|
|
393
393
|
</div>
|
|
394
394
|
</div>
|
|
395
395
|
`:d`
|
|
@@ -399,7 +399,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
399
399
|
<p>Connecting to gateway...</p>
|
|
400
400
|
</div>
|
|
401
401
|
</div>
|
|
402
|
-
`}const
|
|
402
|
+
`}const tr="taskmaster_uninstall_done";async function sg(e){var t,n;if(!(!e.client||!e.connected)&&!e.uninstallBusy){e.uninstallBusy=!0,e.uninstallError=null,(t=e.requestUpdate)==null||t.call(e),og();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 Mi(){try{return localStorage.getItem(tr)==="1"}catch{return!1}}function nr(){try{localStorage.removeItem(tr)}catch{}}function og(){try{localStorage.setItem(tr,"1")}catch{}}const fa=Object.freeze(Object.defineProperty({__proto__:null,checkUninstallDone:Mi,clearUninstallDone:nr,runUninstall:sg},Symbol.toStringTag,{value:"Module"}));function V(e){return d`
|
|
403
403
|
<span
|
|
404
404
|
class="setup-status-light"
|
|
405
405
|
style="background: ${{good:"#22c55e",bad:"#ef4444",partial:"#eab308",unknown:"#6b7280"}[e]}"
|
|
@@ -412,7 +412,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
412
412
|
>
|
|
413
413
|
${L.info}
|
|
414
414
|
</button>
|
|
415
|
-
`}function
|
|
415
|
+
`}function rg(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 o="N/A";if(s!=null&&s>0)if(s>60){const r=Math.floor(s/60),a=s%60;o=a>0?`${r}h ${a}m`:`${r}h`}else o=`${s}m`;t="Claude",n=[{label:"Connected",value:e.authConnected?"Yes":"No"},{label:"Token Expiry",value:o},{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=Zt(e),o=s?ir(s,e):null;t="WhatsApp",n=[{label:"Account",value:(o==null?void 0:o.name)||(o==null?void 0:o.accountId)||"Default"},{label:"Phone",value:((i=o==null?void 0:o.self)==null?void 0:i.e164)||"Not paired"},{label:"Connected",value:o!=null&&o.connected?"Yes":"No"},{label:"Linked",value:o!=null&&o.linked?"Yes":"No"},...o!=null&&o.lastError?[{label:"Last Error",value:pu(o.lastError)}]:[]];break}case"imessage":{const{thisWsOwns:s}=sr(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}case"internet":{const s=e.tailscaleStatus,o=s?s.installed?s.loggedIn?s.funnelEnabled&&s.funnelActive?"Active":s.funnelEnabled&&!s.funnelActive?"Enabled but not active":"Connected (not public)":"Not connected":"Not installed":"Checking...";t="Internet Access",n=[{label:"Status",value:o},{label:"What",value:"Makes your public chat and API reachable from the internet, not just your local network"},{label:"How",value:"Uses Tailscale Funnel — a free, secure tunnel that gives your device a public HTTPS address"},{label:"Security",value:"Only the /public/* paths are exposed. The control panel stays LAN-only."},...s!=null&&s.publicUrl?[{label:"Public URL",value:s.publicUrl}]:[],...s!=null&&s.hostname?[{label:"Hostname",value:s.hostname}]:[]];break}case"public-chat":{t="Public Chat",n=[{label:"Status",value:e.publicChatEnabled?"Enabled":"Disabled"},{label:"What",value:"A chat widget anyone can use to message your business from a web browser"},{label:"Access mode",value:fg[e.publicChatAuthMode]??"Open access"},{label:"Open access",value:"Anyone can chat without identifying themselves"},{label:"WhatsApp OTP",value:"Visitors verify their phone number before chatting"},{label:"Visitor chooses",value:"Visitors can chat anonymously or verify via WhatsApp"}];break}case"account-pin":{t="Account PIN",n=[{label:"Status",value:e.accountHasPin?"Set":"Not set"},{label:"What",value:"A numeric PIN that protects this account on the control panel"},{label:"When needed",value:"Required when switching to this account or after the session expires"},{label:"Format",value:"4 to 6 digits"}];break}case"branding":{const s=!!(e.brandAccentColor||e.brandBackgroundColor||e.brandHasLogo);t="Branding",n=[{label:"Status",value:s?"Customised":"Default"},{label:"What",value:"Your business logo and colour scheme, displayed on the control panel and public chat pages"},{label:"Logo",value:"Shown on public chat pages alongside your business name"},{label:"Accent colour",value:"Used for buttons, links, and interactive elements"},{label:"Background tint",value:"A subtle colour wash applied to page and card backgrounds"},{label:"Scope",value:"Each account has its own branding — switch accounts to customise each one separately"}];break}default:return k}return d`
|
|
416
416
|
<div class="setup-info-overlay" @click=${s=>{s.target.classList.contains("setup-info-overlay")&&e.onInfoModalClose()}}>
|
|
417
417
|
<div class="setup-info-card">
|
|
418
418
|
<h3>${t}</h3>
|
|
@@ -431,7 +431,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
431
431
|
</button>
|
|
432
432
|
</div>
|
|
433
433
|
</div>
|
|
434
|
-
`}function
|
|
434
|
+
`}function Ae(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 d`
|
|
435
435
|
<div class="setup-steps">
|
|
436
436
|
${t.map(s=>{const o=n.indexOf(s.id),r=e===s.id,a=i>o;return d`
|
|
437
437
|
<div
|
|
@@ -442,10 +442,10 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
442
442
|
</div>
|
|
443
443
|
`})}
|
|
444
444
|
</div>
|
|
445
|
-
`}function
|
|
445
|
+
`}function ga(e){const{licenseKey:t,licenseBusy:n,licenseValid:i,licenseMessage:s,licenseDeviceId:o,onLicenseKeyChange:r,onLicenseActivate:a}=e;return i===!0?d`
|
|
446
446
|
<div class="setup-container">
|
|
447
447
|
<div class="setup-card setup-success">
|
|
448
|
-
${
|
|
448
|
+
${Ae("license")}
|
|
449
449
|
<div class="setup-status-row">
|
|
450
450
|
${V("good")}
|
|
451
451
|
<span>License Activated</span>
|
|
@@ -456,7 +456,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
456
456
|
`:n&&!t?d`
|
|
457
457
|
<div class="setup-container">
|
|
458
458
|
<div class="setup-card">
|
|
459
|
-
${
|
|
459
|
+
${Ae("license")}
|
|
460
460
|
<div class="setup-spinner"></div>
|
|
461
461
|
<p>Checking license...</p>
|
|
462
462
|
</div>
|
|
@@ -464,7 +464,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
464
464
|
`:d`
|
|
465
465
|
<div class="setup-container">
|
|
466
466
|
<div class="setup-card">
|
|
467
|
-
${
|
|
467
|
+
${Ae("license")}
|
|
468
468
|
<h1>Activate License</h1>
|
|
469
469
|
<p>Enter your license key to get started.</p>
|
|
470
470
|
${o?d`
|
|
@@ -511,10 +511,10 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
511
511
|
</p>
|
|
512
512
|
</div>
|
|
513
513
|
</div>
|
|
514
|
-
`}function
|
|
514
|
+
`}function ag(e){const{authConnected:t,authBusy:n,authMessage:i,authUrl:s,authCodeInput:o,authExpiresIn:r,onStartAuth:a,onSubmitAuthCode:u,onAuthCodeChange:c,onSkipToWhatsApp:l}=e;return t===!0?d`
|
|
515
515
|
<div class="setup-container">
|
|
516
516
|
<div class="setup-card setup-success">
|
|
517
|
-
${
|
|
517
|
+
${Ae("auth")}
|
|
518
518
|
<div class="setup-status-row">
|
|
519
519
|
${V("good")}
|
|
520
520
|
<span>Claude Connected</span>
|
|
@@ -536,7 +536,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
536
536
|
`:n&&!s?d`
|
|
537
537
|
<div class="setup-container">
|
|
538
538
|
<div class="setup-card">
|
|
539
|
-
${
|
|
539
|
+
${Ae("auth")}
|
|
540
540
|
<div class="setup-spinner"></div>
|
|
541
541
|
<p>Starting Claude connection...</p>
|
|
542
542
|
</div>
|
|
@@ -544,7 +544,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
544
544
|
`:s?d`
|
|
545
545
|
<div class="setup-container">
|
|
546
546
|
<div class="setup-card">
|
|
547
|
-
${
|
|
547
|
+
${Ae("auth")}
|
|
548
548
|
<h1>Connect to Claude</h1>
|
|
549
549
|
<p>Click the button below to sign in with your Claude Pro account.</p>
|
|
550
550
|
<a
|
|
@@ -585,7 +585,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
585
585
|
`:e.authApiKeyMode?d`
|
|
586
586
|
<div class="setup-container">
|
|
587
587
|
<div class="setup-card">
|
|
588
|
-
${
|
|
588
|
+
${Ae("auth")}
|
|
589
589
|
<h1>Enter API Key</h1>
|
|
590
590
|
<p>Paste your Anthropic API key below.</p>
|
|
591
591
|
<div class="setup-code-input">
|
|
@@ -621,7 +621,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
621
621
|
`:d`
|
|
622
622
|
<div class="setup-container">
|
|
623
623
|
<div class="setup-card">
|
|
624
|
-
${
|
|
624
|
+
${Ae("auth")}
|
|
625
625
|
<h1>Connect to Claude</h1>
|
|
626
626
|
${t===!1&&i?d`<p class="setup-error">${i}</p>`:d`<p>
|
|
627
627
|
First, let's connect your Claude Pro subscription.<br />
|
|
@@ -643,7 +643,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
643
643
|
</p>
|
|
644
644
|
</div>
|
|
645
645
|
</div>
|
|
646
|
-
`}function
|
|
646
|
+
`}function ir(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 Zt(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 ma(e){const t=Zt(e),n=(t==null?void 0:t.displayName)??(t==null?void 0:t.name)??je().name,i=e.whatsappBusy||e.gatewayHealthLoading;if(e.renamingWorkspace&&t){const s=()=>{const o=e.renameWorkspaceName.trim();o&&e.onWorkspaceRename(t.name,o)};return d`
|
|
647
647
|
<div style="display: flex; align-items: center; gap: 6px; margin-bottom: 4px;">
|
|
648
648
|
<input
|
|
649
649
|
type="text"
|
|
@@ -685,7 +685,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
685
685
|
${L.rotateCw}
|
|
686
686
|
</button>
|
|
687
687
|
</div>
|
|
688
|
-
`}function
|
|
688
|
+
`}function ya(e){return d`
|
|
689
689
|
<div class="setup-status-item">
|
|
690
690
|
${V(e.gatewayHealthy===!1?"bad":"good")}
|
|
691
691
|
<div class="setup-status-info">
|
|
@@ -702,7 +702,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
702
702
|
${L.rotateCw}
|
|
703
703
|
</button>
|
|
704
704
|
</div>
|
|
705
|
-
`}function
|
|
705
|
+
`}function va(e){const t=e.authConnected===!0;return d`
|
|
706
706
|
<div class="setup-status-item">
|
|
707
707
|
${V(t?"good":"bad")}
|
|
708
708
|
<div class="setup-status-info">
|
|
@@ -731,7 +731,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
731
731
|
</button>
|
|
732
732
|
`}
|
|
733
733
|
</div>
|
|
734
|
-
`}function
|
|
734
|
+
`}function ba(e){return d`
|
|
735
735
|
<div class="setup-status-item" style="flex-wrap: wrap;">
|
|
736
736
|
${V("good")}
|
|
737
737
|
<div class="setup-status-info">
|
|
@@ -749,7 +749,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
749
749
|
${e.licenseRemoveConfirm?d`
|
|
750
750
|
<div style="width: 100%; margin-top: 8px; margin-left: 30px;">
|
|
751
751
|
<p style="color: var(--tasker-text-grey); font-size: 13px; margin: 0 0 8px;">
|
|
752
|
-
Removing your license will disable ${
|
|
752
|
+
Removing your license will disable ${je().name} until you enter a new key.
|
|
753
753
|
</p>
|
|
754
754
|
<div style="display: flex; gap: 8px;">
|
|
755
755
|
<button
|
|
@@ -771,7 +771,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
771
771
|
</div>
|
|
772
772
|
`:k}
|
|
773
773
|
</div>
|
|
774
|
-
`}function
|
|
774
|
+
`}function pu(e){var t,n;try{const i=JSON.parse(e),s=(i==null?void 0:i.error)??i,o=((n=(t=s==null?void 0:s.output)==null?void 0:t.payload)==null?void 0:n.message)??(s==null?void 0:s.message)??(i==null?void 0:i.message);if(o&&typeof o=="string")return o}catch{}return e.length>80?e.slice(0,77)+"…":e}function wa(e){var p;const t=Zt(e);if(!t)return k;const n=ir(t,e),i=(n==null?void 0:n.running)&&(n==null?void 0:n.connected),s=(n==null?void 0:n.linked)&&!i,o=!!n,r=i?"good":s?"partial":o?"bad":"unknown",a=i?"Connected":s?"Linked, not connected":o?n!=null&&n.lastError?pu(n.lastError):"Not connected":"Not paired",u=!(n!=null&&n.provider)||(n==null?void 0:n.provider)==="baileys",c=t.whatsappAccountId??(t.isDefault&&e.whatsappAccounts.length===1?(p=e.whatsappAccounts[0])==null?void 0:p.accountId:void 0),l=c!=null&&e.whatsappActiveQrAccountId===c;return d`
|
|
775
775
|
<div class="setup-status-item" style="flex-wrap: wrap;">
|
|
776
776
|
${V(r)}
|
|
777
777
|
<div class="setup-status-info">
|
|
@@ -832,7 +832,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
832
832
|
</div>
|
|
833
833
|
`:k}
|
|
834
834
|
</div>
|
|
835
|
-
`}const
|
|
835
|
+
`}const lg=[{id:"claude-opus-4-6",shortName:"Opus"},{id:"claude-sonnet-4-5-20250929",shortName:"Sonnet"},{id:"claude-haiku-4-5-20251001",shortName:"Haiku"}],cg="anthropic/claude-sonnet-4-5-20250929",ug=[{value:"off",label:"Off"},{value:"minimal",label:"Minimal"},{value:"low",label:"Low"},{value:"medium",label:"Medium"},{value:"high",label:"High"}];function dg(e){if(!e.whatsappSettingsOpen)return k;const t=Zt(e);if(!t)return k;const n=ir(t,e),i=(n==null?void 0:n.running)&&(n==null?void 0:n.connected);if(!n||!i)return k;const s=()=>e.onWhatsAppSettingsClose(),o=e.whatsappModelCatalog??[],r=new Set(o.filter(l=>l.provider==="anthropic").map(l=>l.id)),a=lg.filter(l=>r.has(l.id)),u=e.whatsappModel??cg,c=e.whatsappThinkingLevel??"off";return d`
|
|
836
836
|
<div class="setup-info-overlay" @click=${l=>{l.target.classList.contains("setup-info-overlay")&&s()}}>
|
|
837
837
|
<div class="setup-info-card" style="max-width: 360px;">
|
|
838
838
|
<h3>Public Agent Settings</h3>
|
|
@@ -918,7 +918,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
918
918
|
.value=${c}
|
|
919
919
|
@change=${l=>{e.onWhatsAppThinkingChange(l.target.value)}}
|
|
920
920
|
>
|
|
921
|
-
${
|
|
921
|
+
${ug.map(l=>d`
|
|
922
922
|
<option value=${l.value} ?selected=${c===l.value}>
|
|
923
923
|
${l.label}
|
|
924
924
|
</option>
|
|
@@ -935,7 +935,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
935
935
|
</button>
|
|
936
936
|
</div>
|
|
937
937
|
</div>
|
|
938
|
-
`}function
|
|
938
|
+
`}function sr(e){const t=Zt(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 ka(e){const{ownerWs:t,thisWsOwns:n,anotherWsOwns:i}=sr(e);let s,o;return i?(s="partial",o=`Connected to ${t}`):n&&e.imessageConnected?(s="good",o="Connected"):n&&e.imessageRunning?(s="partial",o="Running, not connected"):n?(s="bad",o="Not running"):e.imessageConfigured?(s="unknown",o="Not connected"):(s="bad",o="Not configured"),d`
|
|
939
939
|
<div class="setup-status-item" style="flex-wrap: wrap;">
|
|
940
940
|
${V(s)}
|
|
941
941
|
<div class="setup-status-info">
|
|
@@ -953,7 +953,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
953
953
|
</button>
|
|
954
954
|
${k}
|
|
955
955
|
</div>
|
|
956
|
-
`}function
|
|
956
|
+
`}function pg(e){if(!e.imessageEnableConfirm)return k;const{ownerWs:t,thisWsOwns:n,anotherWsOwns:i}=sr(e),s=()=>{e.onIMessageEnableCancel()};return n?d`
|
|
957
957
|
<div class="setup-info-overlay" @click=${o=>{o.target.classList.contains("setup-info-overlay")&&s()}}>
|
|
958
958
|
<div class="setup-info-card" style="text-align: center;">
|
|
959
959
|
<h3>iMessage</h3>
|
|
@@ -1010,7 +1010,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
1010
1010
|
<div class="setup-info-card" style="text-align: center;">
|
|
1011
1011
|
<h3>Enable iMessage</h3>
|
|
1012
1012
|
<p style="color: var(--tasker-text-grey); font-size: 13px; margin: 8px 0 16px;">
|
|
1013
|
-
${
|
|
1013
|
+
${je().name} will respond to messages in Messages.app for this business.
|
|
1014
1014
|
</p>
|
|
1015
1015
|
<button
|
|
1016
1016
|
class="setup-button primary"
|
|
@@ -1029,7 +1029,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
1029
1029
|
</button>
|
|
1030
1030
|
</div>
|
|
1031
1031
|
</div>
|
|
1032
|
-
`}function
|
|
1032
|
+
`}function Sa(e){if(!e.isMaster)return k;const n=e.apiKeyProviders.filter(i=>i.hasKey).length;return d`
|
|
1033
1033
|
<div style="margin-top: 16px; border-top: 1px solid var(--tasker-border, rgba(255,255,255,0.1)); padding-top: 16px;">
|
|
1034
1034
|
<div class="setup-status-item">
|
|
1035
1035
|
${V(n>0?"good":"bad")}
|
|
@@ -1043,8 +1043,8 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
1043
1043
|
>Manage</button>
|
|
1044
1044
|
</div>
|
|
1045
1045
|
</div>
|
|
1046
|
-
${
|
|
1047
|
-
`}function
|
|
1046
|
+
${hg(e)}
|
|
1047
|
+
`}function hg(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,l)=>{const p=l==null?void 0:l.closest(".setup-apikey-input"),f=p==null?void 0:p.querySelector("input"),b=f==null?void 0:f.value.trim();!b||b===n[c]||e.onApiKeySave(c,b)},s=c=>{const l=c.currentTarget,p=l.closest(".setup-apikey-input"),f=p==null?void 0:p.querySelector("input");if(!f)return;const b=f.type==="text";f.type=b?"password":"text",l.classList.toggle("active",!b)},o=(c,l)=>{const p=l.target,f=p.closest(".setup-apikey-input"),b=p.value.trim(),h=b.length>0&&b!==n[c],v=f==null?void 0:f.querySelector(".setup-apikey-save");v&&(v.style.display=h?"":"none");const S=f==null?void 0:f.querySelector(".setup-apikey-eye");S&&(S.style.display=b.length>0?"":"none")},r=t.filter(c=>c.primary),a=t.filter(c=>!c.primary),u=c=>{const l=e.apiKeySavingProvider===c.id&&e.apiKeyBusy,p=!e.apiKeyBusy&&e.apiKeySuccess===`${c.id} key saved`,f=!e.apiKeyBusy&&e.apiKeySuccess===`${c.id} key removed`,b=!e.apiKeyBusy&&e.apiKeySuccess===`${c.id} disabled`,h=!e.apiKeyBusy&&e.apiKeySuccess===`${c.id} enabled`;return d`
|
|
1048
1048
|
<div class="setup-apikey-row ${c.disabled?"disabled":""}">
|
|
1049
1049
|
<div class="setup-apikey-info">
|
|
1050
1050
|
<strong>${c.name}</strong>
|
|
@@ -1108,7 +1108,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
1108
1108
|
</div>
|
|
1109
1109
|
</div>
|
|
1110
1110
|
</div>
|
|
1111
|
-
`}function
|
|
1111
|
+
`}function $a(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 d`
|
|
1112
1112
|
<div class="setup-status-item">
|
|
1113
1113
|
${V(t)}
|
|
1114
1114
|
<div class="setup-status-info">
|
|
@@ -1136,7 +1136,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
1136
1136
|
</button>
|
|
1137
1137
|
`}
|
|
1138
1138
|
</div>
|
|
1139
|
-
`}const
|
|
1139
|
+
`}const fg={anonymous:"Open access",verified:"WhatsApp OTP",choice:"Visitor chooses"};function Aa(e){const t=e.publicChatEnabled;return d`
|
|
1140
1140
|
<div class="setup-status-item">
|
|
1141
1141
|
${V(t?"good":"unknown")}
|
|
1142
1142
|
<div class="setup-status-info">
|
|
@@ -1160,7 +1160,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
1160
1160
|
@click=${e.onPublicChatToggle}
|
|
1161
1161
|
>${e.publicChatBusy?"...":t?"Disable":"Enable"}</button>
|
|
1162
1162
|
</div>
|
|
1163
|
-
`}function
|
|
1163
|
+
`}function xa(e){const t=!!(e.brandAccentColor||e.brandBackgroundColor||e.brandHasLogo),n=t?"good":"unknown",i=e.brandingBusy;return d`
|
|
1164
1164
|
<div class="setup-status-item">
|
|
1165
1165
|
${V(n)}
|
|
1166
1166
|
<div class="setup-status-info">
|
|
@@ -1174,7 +1174,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
1174
1174
|
@click=${e.onBrandingToggle}
|
|
1175
1175
|
>${i?"...":"Edit"}</button>
|
|
1176
1176
|
</div>
|
|
1177
|
-
`}function
|
|
1177
|
+
`}function Ea(e){var s;if(!e.brandingExpanded)return k;const t=e.brandingBusy,n=(s=e.wsProps)==null?void 0:s.selectedWorkspace,i=e.brandHasLogo&&n?`/brand-logo/${encodeURIComponent(n)}`:"";return d`
|
|
1178
1178
|
<div class="setup-info-overlay" @click=${o=>{o.target.classList.contains("setup-info-overlay")&&e.onBrandingToggle()}}>
|
|
1179
1179
|
<div class="setup-info-card" style="max-width: 400px; position: relative;">
|
|
1180
1180
|
<h3 style="margin-right: 24px;">Branding</h3>
|
|
@@ -1255,7 +1255,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
1255
1255
|
|
|
1256
1256
|
</div>
|
|
1257
1257
|
</div>
|
|
1258
|
-
`}function
|
|
1258
|
+
`}function gg(e){if(!e.isMaster)return k;const t=e.tailscaleStatus,n=e.tailscaleBusy,i=e.tailscaleAuthUrl;if(!t)return d`
|
|
1259
1259
|
<div class="setup-status-item">
|
|
1260
1260
|
${V("unknown")}
|
|
1261
1261
|
<div class="setup-status-info">
|
|
@@ -1402,7 +1402,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
1402
1402
|
@click=${e.onTailscaleFunnelDisable}
|
|
1403
1403
|
>${n?"...":"Disable"}</button>
|
|
1404
1404
|
</div>
|
|
1405
|
-
`}function
|
|
1405
|
+
`}function Ca(e){const t=e>=70?4:e>=50?3:e>=30?2:1;return d`
|
|
1406
1406
|
<span style="display: inline-flex; align-items: flex-end; gap: 2px; height: 14px; vertical-align: middle;">
|
|
1407
1407
|
${[4,7,10,14].map((i,s)=>d`<span style="
|
|
1408
1408
|
width: 3px;
|
|
@@ -1411,7 +1411,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
1411
1411
|
background: ${s<t?"var(--tasker-accent, #00e5ff)":"rgba(255,255,255,0.15)"};
|
|
1412
1412
|
"></span>`)}
|
|
1413
1413
|
</span>
|
|
1414
|
-
`}function
|
|
1414
|
+
`}function Ta(e){if(e.serverPlatform!=="linux")return k;const t=e.wifiStatus,n=e.wifiBusy;if(!t)return d`
|
|
1415
1415
|
<div class="setup-status-item">
|
|
1416
1416
|
${V("unknown")}
|
|
1417
1417
|
<div class="setup-status-info">
|
|
@@ -1427,7 +1427,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
1427
1427
|
<span>NetworkManager not available</span>
|
|
1428
1428
|
</div>
|
|
1429
1429
|
</div>
|
|
1430
|
-
`;const i=e.wifiNetworks,s=e.wifiSelectedSsid,o=i.length>0,r=!!t.savedSsid&&!t.connected,a=t.connected?"good":"partial",u=t.connected?d`${t.ssid} ${t.signal!=null?d`<span style="margin-left: 4px;">${
|
|
1430
|
+
`;const i=e.wifiNetworks,s=e.wifiSelectedSsid,o=i.length>0,r=!!t.savedSsid&&!t.connected,a=t.connected?"good":"partial",u=t.connected?d`${t.ssid} ${t.signal!=null?d`<span style="margin-left: 4px;">${Ca(t.signal)}</span>`:k}`:r?d`${t.savedSsid} <span style="opacity: 0.4;">\u2014 reconnecting\u2026</span>`:"Not connected";return d`
|
|
1431
1431
|
<div>
|
|
1432
1432
|
<div class="setup-status-item">
|
|
1433
1433
|
${V(a)}
|
|
@@ -1487,7 +1487,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
1487
1487
|
</span>
|
|
1488
1488
|
<span style="display: flex; align-items: center; gap: 8px;">
|
|
1489
1489
|
${c.security!=="Open"?d`<span style="opacity: 0.4; font-size: 11px;" title="${c.security}">\uD83D\uDD12</span>`:k}
|
|
1490
|
-
<span title="Signal: ${c.signal}%">${
|
|
1490
|
+
<span title="Signal: ${c.signal}%">${Ca(c.signal)}</span>
|
|
1491
1491
|
</span>
|
|
1492
1492
|
</button>
|
|
1493
1493
|
`})}
|
|
@@ -1531,7 +1531,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
1531
1531
|
</div>
|
|
1532
1532
|
`:k}
|
|
1533
1533
|
</div>
|
|
1534
|
-
`}function
|
|
1534
|
+
`}function mg(e){var i,s,o;const t=e.updateRunning,n=e.updateLastResult;if(!t&&!n)return k;if(t)return d`
|
|
1535
1535
|
<div class="setup-info-overlay">
|
|
1536
1536
|
<div class="setup-info-card" style="max-width: 400px;">
|
|
1537
1537
|
<h3>Software Update</h3>
|
|
@@ -1543,7 +1543,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
1543
1543
|
${r.status==="running"?d`<span class="setup-update-spinner"></span>`:r.status==="done"?d`<span class="setup-update-icon-ok">${L.check}</span>`:d`<span class="setup-update-icon-fail">${L.x}</span>`}
|
|
1544
1544
|
</span>
|
|
1545
1545
|
<span class="setup-update-step-name">${r.name}</span>
|
|
1546
|
-
${r.durationMs!=null?d`<span class="setup-update-step-time">${
|
|
1546
|
+
${r.durationMs!=null?d`<span class="setup-update-step-time">${_a(r.durationMs)}</span>`:k}
|
|
1547
1547
|
</div>
|
|
1548
1548
|
`)}
|
|
1549
1549
|
</div>
|
|
@@ -1551,7 +1551,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
1551
1551
|
${e.updateMessage?d`<p style="text-align: center; color: var(--tasker-text-grey); font-size: 13px; margin: 12px 0 0;">${e.updateMessage}</p>`:k}
|
|
1552
1552
|
</div>
|
|
1553
1553
|
</div>
|
|
1554
|
-
`;if(n){const r=n.status==="ok";let a;if(r){const c=(i=n.before)==null?void 0:i.version,l=((s=n.after)==null?void 0:s.version)??n.currentVersion;a=c?`v${c} → v${l}`:`Updated to v${l}`}else a=n.reason??((o=n.failedStep)==null?void 0:o.name)??"unknown error";const u=n.durationMs!=null?
|
|
1554
|
+
`;if(n){const r=n.status==="ok";let a;if(r){const c=(i=n.before)==null?void 0:i.version,l=((s=n.after)==null?void 0:s.version)??n.currentVersion;a=c?`v${c} → v${l}`:`Updated to v${l}`}else a=n.reason??((o=n.failedStep)==null?void 0:o.name)??"unknown error";const u=n.durationMs!=null?_a(n.durationMs):null;return d`
|
|
1555
1555
|
<div class="setup-info-overlay" @click=${c=>{c.target.classList.contains("setup-info-overlay")&&e.onUpdateDismissResult()}}>
|
|
1556
1556
|
<div class="setup-info-card" style="max-width: 360px; text-align: center;">
|
|
1557
1557
|
<div class="setup-update-result-icon ${r?"ok":"fail"}">${r?L.circleCheck:L.circleX}</div>
|
|
@@ -1571,7 +1571,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
1571
1571
|
</button>
|
|
1572
1572
|
</div>
|
|
1573
1573
|
</div>
|
|
1574
|
-
`}return k}function
|
|
1574
|
+
`}return k}function _a(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 Ma(e){const t=e.accountHasPin;return d`
|
|
1575
1575
|
<div class="setup-status-item">
|
|
1576
1576
|
${V(t?"good":"bad")}
|
|
1577
1577
|
<div class="setup-status-info">
|
|
@@ -1584,7 +1584,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
1584
1584
|
@click=${()=>e.onAccountPinModalOpen()}
|
|
1585
1585
|
>${t?"Change":"Set PIN"}</button>
|
|
1586
1586
|
</div>
|
|
1587
|
-
`}function
|
|
1587
|
+
`}function Pa(e){if(!e.accountPinModalOpen)return k;const t=e.accountHasPin,n=e.accountPinBusy;let i="",s="",o="";const r=c=>l=>{const p=l.target;p.value=p.value.replace(/\D/g,"").slice(0,6),c(p.value)},a=(c,l)=>{var f;let p=c.querySelector(".pin-modal-validation");p||(p=document.createElement("p"),p.className="login-error pin-modal-validation",(f=c.querySelector("button[type=submit]"))==null||f.before(p)),p.textContent=l},u=c=>{c.preventDefault();const l=c.target;if(!n){if(t&&!i){a(l,"Enter your current PIN");return}if(!s){a(l,"Enter a new PIN");return}if(!o){a(l,"Confirm your new PIN");return}if(s!==o){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 d`
|
|
1588
1588
|
<div class="setup-info-overlay" @click=${c=>{c.target.classList.contains("setup-info-overlay")&&e.onAccountPinModalClose()}}>
|
|
1589
1589
|
<div class="setup-info-card" style="max-width: 340px;">
|
|
1590
1590
|
<div class="setup-info-header">
|
|
@@ -1641,7 +1641,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
1641
1641
|
</form>
|
|
1642
1642
|
</div>
|
|
1643
1643
|
</div>
|
|
1644
|
-
`}function
|
|
1644
|
+
`}function La(e){if(!e.addingWorkspace)return k;const{workspaceSaving:t}=e;return d`
|
|
1645
1645
|
<div style="margin-top: 16px; border-top: 1px solid var(--tasker-border, rgba(255,255,255,0.1)); padding-top: 16px;">
|
|
1646
1646
|
<div class="setup-add-account">
|
|
1647
1647
|
<strong>New Account</strong>
|
|
@@ -1694,7 +1694,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
1694
1694
|
</div>
|
|
1695
1695
|
</div>
|
|
1696
1696
|
</div>
|
|
1697
|
-
`}function
|
|
1697
|
+
`}function Ia(e){const t=Zt(e);return!t||t.isDefault?k:e.workspaceRemoveConfirm===t.name?d`
|
|
1698
1698
|
<div style="margin-top: 16px; border-top: 1px solid var(--tasker-border, rgba(255,255,255,0.1)); padding-top: 12px;">
|
|
1699
1699
|
<div style="font-size: 13px; display: flex; align-items: center; gap: 8px; flex-wrap: wrap;">
|
|
1700
1700
|
<span style="color: var(--tasker-danger, #ef4444);">Remove "${t.displayName??t.name}" and its WhatsApp account?</span>
|
|
@@ -1723,7 +1723,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
1723
1723
|
@click=${i=>{i.preventDefault(),e.onSetWorkspaceRemoveConfirm(t.name)}}
|
|
1724
1724
|
>Remove Account</a>
|
|
1725
1725
|
</p>
|
|
1726
|
-
`}function
|
|
1726
|
+
`}function Ra(e){if(e.uninstallDone)return d`
|
|
1727
1727
|
<div style="margin-top: 24px; border-top: 1px solid var(--tasker-border, rgba(255,255,255,0.1)); padding-top: 16px;">
|
|
1728
1728
|
<p style="color: var(--tasker-danger, #ef4444); font-size: 13px; font-weight: 600; margin: 0 0 8px 0;">
|
|
1729
1729
|
Taskmaster has been uninstalled.
|
|
@@ -1778,11 +1778,11 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
1778
1778
|
@click=${t=>{t.preventDefault(),e.onUninstallConfirm()}}
|
|
1779
1779
|
>Uninstall Taskmaster</a>
|
|
1780
1780
|
</p>
|
|
1781
|
-
`}function
|
|
1781
|
+
`}function Da(){return d`
|
|
1782
1782
|
<p class="setup-hint" style="margin-top: 4px; font-size: 12px; opacity: 0.6;">
|
|
1783
1783
|
Need help? <a href="https://wa.me/447591215452" target="_blank" rel="noopener" style="color: var(--tasker-orange);">Message Dave on WhatsApp</a>
|
|
1784
1784
|
</p>
|
|
1785
|
-
`}function
|
|
1785
|
+
`}function yg(e){const{whatsappBusy:t,whatsappLoginMessage:n,whatsappLoginQrDataUrl:i,whatsappLoginConnected:s,whatsappChannelStatus:o}=e;if(i)return d`
|
|
1786
1786
|
<div class="setup-container">
|
|
1787
1787
|
<div class="setup-card">
|
|
1788
1788
|
<h1>Scan with WhatsApp</h1>
|
|
@@ -1796,7 +1796,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
1796
1796
|
Scan the code above with your phone
|
|
1797
1797
|
</p>`}
|
|
1798
1798
|
<p class="setup-hint" style="margin-top: 16px;">
|
|
1799
|
-
<strong>Important:</strong> If you see "${
|
|
1799
|
+
<strong>Important:</strong> If you see "${je().name}" in your Linked
|
|
1800
1800
|
Devices, remove it first before scanning.
|
|
1801
1801
|
</p>
|
|
1802
1802
|
<div class="setup-actions" style="margin-top: 24px;">
|
|
@@ -1819,62 +1819,62 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
1819
1819
|
`;const r=(o==null?void 0:o.running)&&(o==null?void 0:o.connected);return o?(e.whatsappAccounts.length>1?e.whatsappAccounts.every(l=>l.running&&l.connected):r)&&e.authConnected?d`
|
|
1820
1820
|
<div class="setup-container">
|
|
1821
1821
|
<div class="setup-card setup-success setup-dashboard-wide">
|
|
1822
|
-
${
|
|
1822
|
+
${ma(e)}
|
|
1823
1823
|
<div class="setup-status-dashboard">
|
|
1824
|
-
${
|
|
1825
|
-
${
|
|
1826
|
-
${
|
|
1827
|
-
${
|
|
1828
|
-
${e.serverPlatform==="darwin"?
|
|
1829
|
-
${
|
|
1830
|
-
${
|
|
1831
|
-
${
|
|
1832
|
-
${
|
|
1833
|
-
${
|
|
1834
|
-
${
|
|
1824
|
+
${ya(e)}
|
|
1825
|
+
${va(e)}
|
|
1826
|
+
${ba(e)}
|
|
1827
|
+
${wa(e)}
|
|
1828
|
+
${e.serverPlatform==="darwin"?ka(e):k}
|
|
1829
|
+
${Ma(e)}
|
|
1830
|
+
${$a(e)}
|
|
1831
|
+
${Aa(e)}
|
|
1832
|
+
${xa(e)}
|
|
1833
|
+
${gg(e)}
|
|
1834
|
+
${Ta(e)}
|
|
1835
1835
|
</div>
|
|
1836
1836
|
|
|
1837
|
-
${
|
|
1838
|
-
${
|
|
1839
|
-
${
|
|
1840
|
-
${
|
|
1841
|
-
${
|
|
1842
|
-
${
|
|
1843
|
-
${
|
|
1837
|
+
${Pa(e)}
|
|
1838
|
+
${Ea(e)}
|
|
1839
|
+
${Sa(e)}
|
|
1840
|
+
${La(e)}
|
|
1841
|
+
${Ia(e)}
|
|
1842
|
+
${Ra(e)}
|
|
1843
|
+
${Da()}
|
|
1844
1844
|
${e.workspacesError?d`<p class="setup-error" style="margin-top: 8px;">${e.workspacesError}</p>`:k}
|
|
1845
1845
|
</div>
|
|
1846
1846
|
</div>
|
|
1847
1847
|
`:d`
|
|
1848
1848
|
<div class="setup-container">
|
|
1849
1849
|
<div class="setup-card setup-dashboard-wide">
|
|
1850
|
-
${
|
|
1850
|
+
${ma(e)}
|
|
1851
1851
|
<div class="setup-status-dashboard">
|
|
1852
|
-
${
|
|
1853
|
-
${
|
|
1854
|
-
${
|
|
1855
|
-
${
|
|
1856
|
-
${e.serverPlatform==="darwin"?
|
|
1857
|
-
${
|
|
1858
|
-
${
|
|
1859
|
-
${
|
|
1860
|
-
${
|
|
1861
|
-
${
|
|
1852
|
+
${ya(e)}
|
|
1853
|
+
${va(e)}
|
|
1854
|
+
${ba(e)}
|
|
1855
|
+
${wa(e)}
|
|
1856
|
+
${e.serverPlatform==="darwin"?ka(e):k}
|
|
1857
|
+
${Ma(e)}
|
|
1858
|
+
${$a(e)}
|
|
1859
|
+
${Aa(e)}
|
|
1860
|
+
${xa(e)}
|
|
1861
|
+
${Ta(e)}
|
|
1862
1862
|
</div>
|
|
1863
1863
|
|
|
1864
|
-
${
|
|
1865
|
-
${
|
|
1866
|
-
${
|
|
1867
|
-
${
|
|
1868
|
-
${
|
|
1869
|
-
${
|
|
1870
|
-
${
|
|
1864
|
+
${Pa(e)}
|
|
1865
|
+
${Ea(e)}
|
|
1866
|
+
${Sa(e)}
|
|
1867
|
+
${La(e)}
|
|
1868
|
+
${Ia(e)}
|
|
1869
|
+
${Ra(e)}
|
|
1870
|
+
${Da()}
|
|
1871
1871
|
${e.workspacesError?d`<p class="setup-error" style="margin-top: 8px;">${e.workspacesError}</p>`:k}
|
|
1872
1872
|
</div>
|
|
1873
1873
|
</div>
|
|
1874
1874
|
`:o?s===!1&&n&&!t?d`
|
|
1875
1875
|
<div class="setup-container">
|
|
1876
1876
|
<div class="setup-card">
|
|
1877
|
-
${
|
|
1877
|
+
${Ae("whatsapp")}
|
|
1878
1878
|
<div class="setup-status-row">
|
|
1879
1879
|
${V("bad")}
|
|
1880
1880
|
<span>Connection Failed</span>
|
|
@@ -1892,7 +1892,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
1892
1892
|
`:d`
|
|
1893
1893
|
<div class="setup-container">
|
|
1894
1894
|
<div class="setup-card">
|
|
1895
|
-
${
|
|
1895
|
+
${Ae("whatsapp")}
|
|
1896
1896
|
${n?d`<p class="setup-error">${n}</p>`:d`<div class="setup-spinner"></div>
|
|
1897
1897
|
<p>Preparing...</p>`}
|
|
1898
1898
|
</div>
|
|
@@ -1900,7 +1900,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
1900
1900
|
`:d`
|
|
1901
1901
|
<div class="setup-container">
|
|
1902
1902
|
<div class="setup-card">
|
|
1903
|
-
${
|
|
1903
|
+
${Ae("whatsapp")}
|
|
1904
1904
|
<div class="setup-spinner"></div>
|
|
1905
1905
|
<p>Checking connection status...</p>
|
|
1906
1906
|
<button
|
|
@@ -1912,7 +1912,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
1912
1912
|
</button>
|
|
1913
1913
|
</div>
|
|
1914
1914
|
</div>
|
|
1915
|
-
`}function
|
|
1915
|
+
`}function vg(e){const{connected:t,currentStep:n}=e;if(t&&Mi()&&nr(),e.uninstallDone||!t&&Mi())return d`
|
|
1916
1916
|
<div class="setup-container">
|
|
1917
1917
|
<div class="setup-card">
|
|
1918
1918
|
<p style="color: var(--tasker-danger, #ef4444); font-size: 16px; font-weight: 600; margin: 0 0 12px 0;">
|
|
@@ -1935,7 +1935,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
1935
1935
|
<p>${o?"Restarting gateway after update…":"Connecting to gateway..."}</p>
|
|
1936
1936
|
</div>
|
|
1937
1937
|
</div>
|
|
1938
|
-
`}let i;switch(n){case"license":i=
|
|
1938
|
+
`}let i;switch(n){case"license":i=ga(e);break;case"auth":i=ag(e);break;case"whatsapp":case"complete":i=yg(e);break;default:i=ga(e)}const s=Tt("Setup",e.wsProps);return d`${i}${rg(e)}${pg(e)}${dg(e)}${mg(e)}${s}`}function bg(e,t){const n=e.paired?"Paired phone (used to link WhatsApp)":"Admin access via WhatsApp DM";return d`
|
|
1939
1939
|
<div class="sp-list-item">
|
|
1940
1940
|
<div class="sp-list-item-main">
|
|
1941
1941
|
<div class="sp-list-item-title">${e.phone}</div>
|
|
@@ -1950,7 +1950,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
1950
1950
|
Remove
|
|
1951
1951
|
</button>`}
|
|
1952
1952
|
</div>
|
|
1953
|
-
`}function
|
|
1953
|
+
`}function wg(e){if(!e.connected)return d`
|
|
1954
1954
|
<div class="setup-container">
|
|
1955
1955
|
<div class="setup-card">
|
|
1956
1956
|
<div class="setup-spinner"></div>
|
|
@@ -1959,7 +1959,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
1959
1959
|
</div>
|
|
1960
1960
|
`;const t=n=>{n.preventDefault(),e.newPhone.trim()&&e.onAdd(e.newPhone)};return d`
|
|
1961
1961
|
<div class="setup-container">
|
|
1962
|
-
${
|
|
1962
|
+
${Tt("Admins",e.wsProps)}
|
|
1963
1963
|
<div class="setup-card" style="max-width: 520px;">
|
|
1964
1964
|
<h1>Admin Phones</h1>
|
|
1965
1965
|
<p style="margin-bottom: 16px;">
|
|
@@ -1999,7 +1999,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
1999
1999
|
</form>
|
|
2000
2000
|
|
|
2001
2001
|
<div class="sp-list" style="margin-top: 20px;">
|
|
2002
|
-
${e.phones.length===0?d`<div class="sp-list-empty">No admin phones configured yet.</div>`:e.phones.map(n=>
|
|
2002
|
+
${e.phones.length===0?d`<div class="sp-list-empty">No admin phones configured yet.</div>`:e.phones.map(n=>bg(n,e))}
|
|
2003
2003
|
</div>
|
|
2004
2004
|
|
|
2005
2005
|
<div class="setup-hint" style="margin-top: 20px; padding: 14px; background: rgba(0, 0, 0, 0.2); border-radius: 8px; text-align: left;">
|
|
@@ -2010,13 +2010,13 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
2010
2010
|
|
|
2011
2011
|
</div>
|
|
2012
2012
|
</div>
|
|
2013
|
-
`}const
|
|
2013
|
+
`}const hu=d`<svg viewBox="0 0 24 24"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg>`;function kg(e){return Object.keys(e.fields).length}function Sg(e,t){return d`
|
|
2014
2014
|
<div class="event-modal-overlay" @click=${t.onDeleteConfirmClose}>
|
|
2015
2015
|
<div class="event-modal" style="width: min(400px, 100%);" @click=${n=>n.stopPropagation()}>
|
|
2016
2016
|
<div class="event-modal__header">
|
|
2017
2017
|
<div class="event-modal__title">Delete Contact</div>
|
|
2018
2018
|
<button class="event-modal__close" @click=${t.onDeleteConfirmClose}>
|
|
2019
|
-
${
|
|
2019
|
+
${hu}
|
|
2020
2020
|
</button>
|
|
2021
2021
|
</div>
|
|
2022
2022
|
<p style="margin: 0 0 8px; color: rgba(255,255,255,0.7); font-size: 14px; line-height: 1.5;">
|
|
@@ -2042,13 +2042,13 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
2042
2042
|
</div>
|
|
2043
2043
|
</div>
|
|
2044
2044
|
</div>
|
|
2045
|
-
`}function
|
|
2045
|
+
`}function $g(e,t){const n=t.addFieldKey.trim().length>0,i=s=>{s.preventDefault(),n&&t.onAddFieldSubmit()};return d`
|
|
2046
2046
|
<div class="event-modal-overlay" @click=${t.onAddFieldClose}>
|
|
2047
2047
|
<div class="event-modal" style="width: min(400px, 100%);" @click=${s=>s.stopPropagation()}>
|
|
2048
2048
|
<div class="event-modal__header">
|
|
2049
2049
|
<div class="event-modal__title">Add Field</div>
|
|
2050
2050
|
<button class="event-modal__close" @click=${t.onAddFieldClose}>
|
|
2051
|
-
${
|
|
2051
|
+
${hu}
|
|
2052
2052
|
</button>
|
|
2053
2053
|
</div>
|
|
2054
2054
|
<p style="margin: 0 0 16px; color: rgba(255,255,255,0.5); font-size: 13px;">
|
|
@@ -2093,7 +2093,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
2093
2093
|
</form>
|
|
2094
2094
|
</div>
|
|
2095
2095
|
</div>
|
|
2096
|
-
`}function
|
|
2096
|
+
`}function Ag(e,t){const n=Object.entries(e.fields);return d`
|
|
2097
2097
|
<div class="contacts-record-fields">
|
|
2098
2098
|
${n.length===0?d`<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])=>d`
|
|
2099
2099
|
<div class="contacts-field-row">
|
|
@@ -2140,7 +2140,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
2140
2140
|
</button>
|
|
2141
2141
|
</div>
|
|
2142
2142
|
</div>
|
|
2143
|
-
`}function
|
|
2143
|
+
`}function xg(e,t){const n=t.editingId===e.id,i=kg(e),s=i===0?"No fields":`${i} field${i>1?"s":""}`;return d`
|
|
2144
2144
|
<div class="contacts-record">
|
|
2145
2145
|
<div
|
|
2146
2146
|
class="contacts-record-header"
|
|
@@ -2152,9 +2152,9 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
2152
2152
|
</div>
|
|
2153
2153
|
<span class="contacts-record-meta">${s}</span>
|
|
2154
2154
|
</div>
|
|
2155
|
-
${n?
|
|
2155
|
+
${n?Ag(e,t):k}
|
|
2156
2156
|
</div>
|
|
2157
|
-
`}function
|
|
2157
|
+
`}function Eg(e){if(!e.connected)return d`
|
|
2158
2158
|
<div class="setup-container">
|
|
2159
2159
|
<div class="setup-card">
|
|
2160
2160
|
<div class="setup-spinner"></div>
|
|
@@ -2163,7 +2163,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
2163
2163
|
</div>
|
|
2164
2164
|
`;const t=o=>{o.preventDefault(),e.onSearchSubmit()},n=o=>{o.preventDefault(),e.newRecordPhone.trim()&&e.newRecordName.trim()&&e.onAdd(e.newRecordPhone,e.newRecordName)},i=e.deleteConfirmId?e.records.find(o=>o.id===e.deleteConfirmId):null,s=e.addFieldForId?e.records.find(o=>o.id===e.addFieldForId):null;return d`
|
|
2165
2165
|
<div class="setup-container">
|
|
2166
|
-
${
|
|
2166
|
+
${Tt("Contacts",e.wsProps)}
|
|
2167
2167
|
<div class="setup-card" style="max-width: 620px;">
|
|
2168
2168
|
<h1>Contact Records</h1>
|
|
2169
2169
|
<p style="margin-bottom: 16px;">
|
|
@@ -2250,7 +2250,7 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
2250
2250
|
<div style="margin-top: 16px;">
|
|
2251
2251
|
${e.records.length===0?d`<div class="contacts-empty">
|
|
2252
2252
|
${e.searchQuery.trim()?`No records matching "${e.searchQuery}".`:"No contact records yet. Add one to get started."}
|
|
2253
|
-
</div>`:e.records.map(o=>
|
|
2253
|
+
</div>`:e.records.map(o=>xg(o,e))}
|
|
2254
2254
|
</div>
|
|
2255
2255
|
|
|
2256
2256
|
<div class="setup-hint" style="margin-top: 20px; padding: 14px; background: rgba(0, 0, 0, 0.2); border-radius: 8px; text-align: left;">
|
|
@@ -2262,15 +2262,15 @@ ${o}`)}return e.chatStream="","working"}else if(t.state==="block"){const s=wn(t.
|
|
|
2262
2262
|
</div>
|
|
2263
2263
|
</div>
|
|
2264
2264
|
|
|
2265
|
-
${i?
|
|
2266
|
-
${s
|
|
2267
|
-
`}const Xc={CHILD:2},Jc=e=>(...t)=>({_$litDirective$:e,values:t});let Zc=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:ag}=qd,wa=e=>e,ka=()=>document.createComment(""),on=(e,t,n)=>{var o;const i=e._$AA.parentNode,s=t===void 0?e._$AB:t._$AA;if(n===void 0){const r=i.insertBefore(ka(),s),a=i.insertBefore(ka(),s);n=new ag(r,a,e,e.options)}else{const r=n._$AB.nextSibling,a=n._$AM,u=a!==e;if(u){let c;(o=n._$AQ)==null||o.call(n,e),n._$AM=e,n._$AP!==void 0&&(c=e._$AU)!==a._$AU&&n._$AP(c)}if(r!==s||u){let c=n._$AA;for(;c!==r;){const l=wa(c).nextSibling;wa(i).insertBefore(c,s),c=l}}}return n},ut=(e,t,n=e)=>(e._$AI(t,n),e),lg={},cg=(e,t=lg)=>e._$AH=t,ug=e=>e._$AH,bs=e=>{e._$AR(),e._$AA.remove()};const Sa=(e,t,n)=>{const i=new Map;for(let s=t;s<=n;s++)i.set(e[s],s);return i},dg=Jc(class extends Zc{constructor(e){if(super(e),e.type!==Xc.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=[],o=[];let r=0;for(const a of e)s[r]=i?i(a,r):r,o[r]=n(a,r),r++;return{values:o,keys:s}}render(e,t,n){return this.dt(e,t,n).values}update(e,[t,n,i]){const s=ug(e),{values:o,keys:r}=this.dt(t,n,i);if(!Array.isArray(s))return this.ut=r,o;const a=this.ut??(this.ut=[]),u=[];let c,l,p=0,f=s.length-1,b=0,h=o.length-1;for(;p<=f&&b<=h;)if(s[p]===null)p++;else if(s[f]===null)f--;else if(a[p]===r[b])u[b]=ut(s[p],o[b]),p++,b++;else if(a[f]===r[h])u[h]=ut(s[f],o[h]),f--,h--;else if(a[p]===r[h])u[h]=ut(s[p],o[h]),on(e,u[h+1],s[p]),p++,h--;else if(a[f]===r[b])u[b]=ut(s[f],o[b]),on(e,s[p],s[f]),f--,b++;else if(c===void 0&&(c=Sa(r,b,h),l=Sa(a,p,f)),c.has(a[p]))if(c.has(a[f])){const v=l.get(r[b]),S=v!==void 0?s[v]:null;if(S===null){const $=on(e,s[p]);ut($,o[b]),u[b]=$}else u[b]=ut(S,o[b]),on(e,s[p],S),s[v]=null;b++}else bs(s[f]),f--;else bs(s[p]),p++;for(;b<=h;){const v=on(e,u[h+1]);ut(v,o[b]),u[b++]=v}for(;p<=f;){const v=s[p++];v!==null&&bs(v)}return this.ut=r,cg(e,u),nt}});class Xs extends Zc{constructor(t){if(super(t),this.it=k,t.type!==Xc.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===nt)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:[]}}}Xs.directiveName="unsafeHTML",Xs.resultType=1;const Ai=Jc(Xs);const{entries:eu,setPrototypeOf:$a,isFrozen:pg,getPrototypeOf:hg,getOwnPropertyDescriptor:fg}=Object;let{freeze:fe,seal:ve,create:Js}=Object,{apply:Zs,construct:eo}=typeof Reflect<"u"&&Reflect;fe||(fe=function(t){return t});ve||(ve=function(t){return t});Zs||(Zs=function(t,n){for(var i=arguments.length,s=new Array(i>2?i-2:0),o=2;o<i;o++)s[o-2]=arguments[o];return t.apply(n,s)});eo||(eo=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 Jn=ge(Array.prototype.forEach),gg=ge(Array.prototype.lastIndexOf),Aa=ge(Array.prototype.pop),rn=ge(Array.prototype.push),mg=ge(Array.prototype.splice),ci=ge(String.prototype.toLowerCase),ws=ge(String.prototype.toString),ks=ge(String.prototype.match),an=ge(String.prototype.replace),yg=ge(String.prototype.indexOf),vg=ge(String.prototype.trim),we=ge(Object.prototype.hasOwnProperty),de=ge(RegExp.prototype.test),ln=bg(TypeError);function ge(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 Zs(e,t,i)}}function bg(e){return function(){for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return eo(e,n)}}function U(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:ci;$a&&$a(e,null);let i=t.length;for(;i--;){let s=t[i];if(typeof s=="string"){const o=n(s);o!==s&&(pg(t)||(t[i]=o),s=o)}e[s]=!0}return e}function wg(e){for(let t=0;t<e.length;t++)we(e,t)||(e[t]=null);return e}function Me(e){const t=Js(null);for(const[n,i]of eu(e))we(e,n)&&(Array.isArray(i)?t[n]=wg(i):i&&typeof i=="object"&&i.constructor===Object?t[n]=Me(i):t[n]=i);return t}function cn(e,t){for(;e!==null;){const i=fg(e,t);if(i){if(i.get)return ge(i.get);if(typeof i.value=="function")return ge(i.value)}e=hg(e)}function n(){return null}return n}const xa=fe(["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=fe(["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"]),$s=fe(["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"]),kg=fe(["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"]),As=fe(["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"]),Sg=fe(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),Ea=fe(["#text"]),Ca=fe(["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"]),xs=fe(["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"]),Ta=fe(["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"]),Zn=fe(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),$g=ve(/\{\{[\w\W]*|[\w\W]*\}\}/gm),Ag=ve(/<%[\w\W]*|[\w\W]*%>/gm),xg=ve(/\$\{[\w\W]*/gm),Eg=ve(/^data-[\-\w.\u00B7-\uFFFF]+$/),Cg=ve(/^aria-[\-\w]+$/),tu=ve(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Tg=ve(/^(?:\w+script|data):/i),_g=ve(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),nu=ve(/^html$/i),Mg=ve(/^[a-z][.\w]*(-[.\w]+)+$/i);var _a=Object.freeze({__proto__:null,ARIA_ATTR:Cg,ATTR_WHITESPACE:_g,CUSTOM_ELEMENT:Mg,DATA_ATTR:Eg,DOCTYPE_NAME:nu,ERB_EXPR:Ag,IS_ALLOWED_URI:tu,IS_SCRIPT_OR_DATA:Tg,MUSTACHE_EXPR:$g,TMPLIT_EXPR:xg});const un={element:1,text:3,progressingInstruction:7,comment:8,document:9},Pg=function(){return typeof window>"u"?null:window},Lg=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 o="dompurify"+(i?"#"+i:"");try{return t.createPolicy(o,{createHTML(r){return r},createScriptURL(r){return r}})}catch{return console.warn("TrustedTypes policy "+o+" could not be created."),null}},Ma=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function iu(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Pg();const t=R=>iu(R);if(t.version="3.3.1",t.removed=[],!e||!e.document||e.document.nodeType!==un.document||!e.Element)return t.isSupported=!1,t;let{document:n}=e;const i=n,s=i.currentScript,{DocumentFragment:o,HTMLTemplateElement:r,Node:a,Element:u,NodeFilter:c,NamedNodeMap:l=e.NamedNodeMap||e.MozNamedAttrMap,HTMLFormElement:p,DOMParser:f,trustedTypes:b}=e,h=u.prototype,v=cn(h,"cloneNode"),S=cn(h,"remove"),$=cn(h,"nextSibling"),A=cn(h,"childNodes"),E=cn(h,"parentNode");if(typeof r=="function"){const R=n.createElement("template");R.content&&R.content.ownerDocument&&(n=R.content.ownerDocument)}let T,_="";const{implementation:D,createNodeIterator:F,createDocumentFragment:ne,getElementsByTagName:be}=n,{importNode:Qe}=i;let ee=Ma();t.isSupported=typeof eu=="function"&&typeof E=="function"&&D&&D.createHTMLDocument!==void 0;const{MUSTACHE_EXPR:Jt,ERB_EXPR:_t,TMPLIT_EXPR:ot,DATA_ATTR:Gi,ARIA_ATTR:Qi,IS_SCRIPT_OR_DATA:Yi,ATTR_WHITESPACE:In,CUSTOM_ELEMENT:Xi}=_a;let{IS_ALLOWED_URI:Rn}=_a,X=null;const Dn=U({},[...xa,...Ss,...$s,...As,...Ea]);let J=null;const Bn=U({},[...Ca,...xs,...Ta,...Zn]);let G=Object.seal(Js(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}})),rt=null,Zt=null;const Ye=Object.seal(Js(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}}));let Nn=!0,x=!0,M=!1,N=!0,O=!1,Q=!0,H=!1,ue=!1,Xe=!1,Mt=!1,On=!1,Fn=!1,cr=!0,ur=!1;const hd="user-content-";let Ji=!0,en=!1,Pt={},Ee=null;const Zi=U({},["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 dr=null;const pr=U({},["audio","video","img","source","image","track"]);let es=null;const hr=U({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Un="http://www.w3.org/1998/Math/MathML",Wn="http://www.w3.org/2000/svg",Oe="http://www.w3.org/1999/xhtml";let Lt=Oe,ts=!1,ns=null;const fd=U({},[Un,Wn,Oe],ws);let Kn=U({},["mi","mo","mn","ms","mtext"]),zn=U({},["annotation-xml"]);const gd=U({},["title","style","font","a","script"]);let tn=null;const md=["application/xhtml+xml","text/html"],yd="text/html";let te=null,It=null;const vd=n.createElement("form"),fr=function(w){return w instanceof RegExp||w instanceof Function},is=function(){let w=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(It&&It===w)){if((!w||typeof w!="object")&&(w={}),w=Me(w),tn=md.indexOf(w.PARSER_MEDIA_TYPE)===-1?yd:w.PARSER_MEDIA_TYPE,te=tn==="application/xhtml+xml"?ws:ci,X=we(w,"ALLOWED_TAGS")?U({},w.ALLOWED_TAGS,te):Dn,J=we(w,"ALLOWED_ATTR")?U({},w.ALLOWED_ATTR,te):Bn,ns=we(w,"ALLOWED_NAMESPACES")?U({},w.ALLOWED_NAMESPACES,ws):fd,es=we(w,"ADD_URI_SAFE_ATTR")?U(Me(hr),w.ADD_URI_SAFE_ATTR,te):hr,dr=we(w,"ADD_DATA_URI_TAGS")?U(Me(pr),w.ADD_DATA_URI_TAGS,te):pr,Ee=we(w,"FORBID_CONTENTS")?U({},w.FORBID_CONTENTS,te):Zi,rt=we(w,"FORBID_TAGS")?U({},w.FORBID_TAGS,te):Me({}),Zt=we(w,"FORBID_ATTR")?U({},w.FORBID_ATTR,te):Me({}),Pt=we(w,"USE_PROFILES")?w.USE_PROFILES:!1,Nn=w.ALLOW_ARIA_ATTR!==!1,x=w.ALLOW_DATA_ATTR!==!1,M=w.ALLOW_UNKNOWN_PROTOCOLS||!1,N=w.ALLOW_SELF_CLOSE_IN_ATTR!==!1,O=w.SAFE_FOR_TEMPLATES||!1,Q=w.SAFE_FOR_XML!==!1,H=w.WHOLE_DOCUMENT||!1,Mt=w.RETURN_DOM||!1,On=w.RETURN_DOM_FRAGMENT||!1,Fn=w.RETURN_TRUSTED_TYPE||!1,Xe=w.FORCE_BODY||!1,cr=w.SANITIZE_DOM!==!1,ur=w.SANITIZE_NAMED_PROPS||!1,Ji=w.KEEP_CONTENT!==!1,en=w.IN_PLACE||!1,Rn=w.ALLOWED_URI_REGEXP||tu,Lt=w.NAMESPACE||Oe,Kn=w.MATHML_TEXT_INTEGRATION_POINTS||Kn,zn=w.HTML_INTEGRATION_POINTS||zn,G=w.CUSTOM_ELEMENT_HANDLING||{},w.CUSTOM_ELEMENT_HANDLING&&fr(w.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(G.tagNameCheck=w.CUSTOM_ELEMENT_HANDLING.tagNameCheck),w.CUSTOM_ELEMENT_HANDLING&&fr(w.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(G.attributeNameCheck=w.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),w.CUSTOM_ELEMENT_HANDLING&&typeof w.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(G.allowCustomizedBuiltInElements=w.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),O&&(x=!1),On&&(Mt=!0),Pt&&(X=U({},Ea),J=[],Pt.html===!0&&(U(X,xa),U(J,Ca)),Pt.svg===!0&&(U(X,Ss),U(J,xs),U(J,Zn)),Pt.svgFilters===!0&&(U(X,$s),U(J,xs),U(J,Zn)),Pt.mathMl===!0&&(U(X,As),U(J,Ta),U(J,Zn))),w.ADD_TAGS&&(typeof w.ADD_TAGS=="function"?Ye.tagCheck=w.ADD_TAGS:(X===Dn&&(X=Me(X)),U(X,w.ADD_TAGS,te))),w.ADD_ATTR&&(typeof w.ADD_ATTR=="function"?Ye.attributeCheck=w.ADD_ATTR:(J===Bn&&(J=Me(J)),U(J,w.ADD_ATTR,te))),w.ADD_URI_SAFE_ATTR&&U(es,w.ADD_URI_SAFE_ATTR,te),w.FORBID_CONTENTS&&(Ee===Zi&&(Ee=Me(Ee)),U(Ee,w.FORBID_CONTENTS,te)),w.ADD_FORBID_CONTENTS&&(Ee===Zi&&(Ee=Me(Ee)),U(Ee,w.ADD_FORBID_CONTENTS,te)),Ji&&(X["#text"]=!0),H&&U(X,["html","head","body"]),X.table&&(U(X,["tbody"]),delete rt.tbody),w.TRUSTED_TYPES_POLICY){if(typeof w.TRUSTED_TYPES_POLICY.createHTML!="function")throw ln('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof w.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw ln('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');T=w.TRUSTED_TYPES_POLICY,_=T.createHTML("")}else T===void 0&&(T=Lg(b,s)),T!==null&&typeof _=="string"&&(_=T.createHTML(""));fe&&fe(w),It=w}},gr=U({},[...Ss,...$s,...kg]),mr=U({},[...As,...Sg]),bd=function(w){let C=E(w);(!C||!C.tagName)&&(C={namespaceURI:Lt,tagName:"template"});const I=ci(w.tagName),j=ci(C.tagName);return ns[w.namespaceURI]?w.namespaceURI===Wn?C.namespaceURI===Oe?I==="svg":C.namespaceURI===Un?I==="svg"&&(j==="annotation-xml"||Kn[j]):!!gr[I]:w.namespaceURI===Un?C.namespaceURI===Oe?I==="math":C.namespaceURI===Wn?I==="math"&&zn[j]:!!mr[I]:w.namespaceURI===Oe?C.namespaceURI===Wn&&!zn[j]||C.namespaceURI===Un&&!Kn[j]?!1:!mr[I]&&(gd[I]||!gr[I]):!!(tn==="application/xhtml+xml"&&ns[w.namespaceURI]):!1},Ce=function(w){rn(t.removed,{element:w});try{E(w).removeChild(w)}catch{S(w)}},at=function(w,C){try{rn(t.removed,{attribute:C.getAttributeNode(w),from:C})}catch{rn(t.removed,{attribute:null,from:C})}if(C.removeAttribute(w),w==="is")if(Mt||On)try{Ce(C)}catch{}else try{C.setAttribute(w,"")}catch{}},yr=function(w){let C=null,I=null;if(Xe)w="<remove></remove>"+w;else{const Z=ks(w,/^[\r\n\t ]+/);I=Z&&Z[0]}tn==="application/xhtml+xml"&&Lt===Oe&&(w='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+w+"</body></html>");const j=T?T.createHTML(w):w;if(Lt===Oe)try{C=new f().parseFromString(j,tn)}catch{}if(!C||!C.documentElement){C=D.createDocument(Lt,"template",null);try{C.documentElement.innerHTML=ts?_:j}catch{}}const re=C.body||C.documentElement;return w&&I&&re.insertBefore(n.createTextNode(I),re.childNodes[0]||null),Lt===Oe?be.call(C,H?"html":"body")[0]:H?C.documentElement:re},vr=function(w){return F.call(w.ownerDocument||w,w,c.SHOW_ELEMENT|c.SHOW_COMMENT|c.SHOW_TEXT|c.SHOW_PROCESSING_INSTRUCTION|c.SHOW_CDATA_SECTION,null)},ss=function(w){return w instanceof p&&(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")},br=function(w){return typeof a=="function"&&w instanceof a};function Fe(R,w,C){Jn(R,I=>{I.call(t,w,C,It)})}const wr=function(w){let C=null;if(Fe(ee.beforeSanitizeElements,w,null),ss(w))return Ce(w),!0;const I=te(w.nodeName);if(Fe(ee.uponSanitizeElement,w,{tagName:I,allowedTags:X}),Q&&w.hasChildNodes()&&!br(w.firstElementChild)&&de(/<[/\w!]/g,w.innerHTML)&&de(/<[/\w!]/g,w.textContent)||w.nodeType===un.progressingInstruction||Q&&w.nodeType===un.comment&&de(/<[/\w]/g,w.data))return Ce(w),!0;if(!(Ye.tagCheck instanceof Function&&Ye.tagCheck(I))&&(!X[I]||rt[I])){if(!rt[I]&&Sr(I)&&(G.tagNameCheck instanceof RegExp&&de(G.tagNameCheck,I)||G.tagNameCheck instanceof Function&&G.tagNameCheck(I)))return!1;if(Ji&&!Ee[I]){const j=E(w)||w.parentNode,re=A(w)||w.childNodes;if(re&&j){const Z=re.length;for(let me=Z-1;me>=0;--me){const Ue=v(re[me],!0);Ue.__removalCount=(w.__removalCount||0)+1,j.insertBefore(Ue,$(w))}}}return Ce(w),!0}return w instanceof u&&!bd(w)||(I==="noscript"||I==="noembed"||I==="noframes")&&de(/<\/no(script|embed|frames)/i,w.innerHTML)?(Ce(w),!0):(O&&w.nodeType===un.text&&(C=w.textContent,Jn([Jt,_t,ot],j=>{C=an(C,j," ")}),w.textContent!==C&&(rn(t.removed,{element:w.cloneNode()}),w.textContent=C)),Fe(ee.afterSanitizeElements,w,null),!1)},kr=function(w,C,I){if(cr&&(C==="id"||C==="name")&&(I in n||I in vd))return!1;if(!(x&&!Zt[C]&&de(Gi,C))){if(!(Nn&&de(Qi,C))){if(!(Ye.attributeCheck instanceof Function&&Ye.attributeCheck(C,w))){if(!J[C]||Zt[C]){if(!(Sr(w)&&(G.tagNameCheck instanceof RegExp&&de(G.tagNameCheck,w)||G.tagNameCheck instanceof Function&&G.tagNameCheck(w))&&(G.attributeNameCheck instanceof RegExp&&de(G.attributeNameCheck,C)||G.attributeNameCheck instanceof Function&&G.attributeNameCheck(C,w))||C==="is"&&G.allowCustomizedBuiltInElements&&(G.tagNameCheck instanceof RegExp&&de(G.tagNameCheck,I)||G.tagNameCheck instanceof Function&&G.tagNameCheck(I))))return!1}else if(!es[C]){if(!de(Rn,an(I,In,""))){if(!((C==="src"||C==="xlink:href"||C==="href")&&w!=="script"&&yg(I,"data:")===0&&dr[w])){if(!(M&&!de(Yi,an(I,In,"")))){if(I)return!1}}}}}}}return!0},Sr=function(w){return w!=="annotation-xml"&&ks(w,Xi)},$r=function(w){Fe(ee.beforeSanitizeAttributes,w,null);const{attributes:C}=w;if(!C||ss(w))return;const I={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:J,forceKeepAttr:void 0};let j=C.length;for(;j--;){const re=C[j],{name:Z,namespaceURI:me,value:Ue}=re,Rt=te(Z),os=Ue;let se=Z==="value"?os:vg(os);if(I.attrName=Rt,I.attrValue=se,I.keepAttr=!0,I.forceKeepAttr=void 0,Fe(ee.uponSanitizeAttribute,w,I),se=I.attrValue,ur&&(Rt==="id"||Rt==="name")&&(at(Z,w),se=hd+se),Q&&de(/((--!?|])>)|<\/(style|title|textarea)/i,se)){at(Z,w);continue}if(Rt==="attributename"&&ks(se,"href")){at(Z,w);continue}if(I.forceKeepAttr)continue;if(!I.keepAttr){at(Z,w);continue}if(!N&&de(/\/>/i,se)){at(Z,w);continue}O&&Jn([Jt,_t,ot],xr=>{se=an(se,xr," ")});const Ar=te(w.nodeName);if(!kr(Ar,Rt,se)){at(Z,w);continue}if(T&&typeof b=="object"&&typeof b.getAttributeType=="function"&&!me)switch(b.getAttributeType(Ar,Rt)){case"TrustedHTML":{se=T.createHTML(se);break}case"TrustedScriptURL":{se=T.createScriptURL(se);break}}if(se!==os)try{me?w.setAttributeNS(me,Z,se):w.setAttribute(Z,se),ss(w)?Ce(w):Aa(t.removed)}catch{at(Z,w)}}Fe(ee.afterSanitizeAttributes,w,null)},wd=function R(w){let C=null;const I=vr(w);for(Fe(ee.beforeSanitizeShadowDOM,w,null);C=I.nextNode();)Fe(ee.uponSanitizeShadowNode,C,null),wr(C),$r(C),C.content instanceof o&&R(C.content);Fe(ee.afterSanitizeShadowDOM,w,null)};return t.sanitize=function(R){let w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},C=null,I=null,j=null,re=null;if(ts=!R,ts&&(R="<!-->"),typeof R!="string"&&!br(R))if(typeof R.toString=="function"){if(R=R.toString(),typeof R!="string")throw ln("dirty is not a string, aborting")}else throw ln("toString is not a function");if(!t.isSupported)return R;if(ue||is(w),t.removed=[],typeof R=="string"&&(en=!1),en){if(R.nodeName){const Ue=te(R.nodeName);if(!X[Ue]||rt[Ue])throw ln("root node is forbidden and cannot be sanitized in-place")}}else if(R instanceof a)C=yr("<!---->"),I=C.ownerDocument.importNode(R,!0),I.nodeType===un.element&&I.nodeName==="BODY"||I.nodeName==="HTML"?C=I:C.appendChild(I);else{if(!Mt&&!O&&!H&&R.indexOf("<")===-1)return T&&Fn?T.createHTML(R):R;if(C=yr(R),!C)return Mt?null:Fn?_:""}C&&Xe&&Ce(C.firstChild);const Z=vr(en?R:C);for(;j=Z.nextNode();)wr(j),$r(j),j.content instanceof o&&wd(j.content);if(en)return R;if(Mt){if(On)for(re=ne.call(C.ownerDocument);C.firstChild;)re.appendChild(C.firstChild);else re=C;return(J.shadowroot||J.shadowrootmode)&&(re=Qe.call(i,re,!0)),re}let me=H?C.outerHTML:C.innerHTML;return H&&X["!doctype"]&&C.ownerDocument&&C.ownerDocument.doctype&&C.ownerDocument.doctype.name&&de(nu,C.ownerDocument.doctype.name)&&(me="<!DOCTYPE "+C.ownerDocument.doctype.name+`>
|
|
2268
|
-
`+me),O&&
|
|
2269
|
-
]`).replace("lheading"
|
|
2265
|
+
${i?Sg(i,e):k}
|
|
2266
|
+
${s?$g(s,e):k}
|
|
2267
|
+
`}const fu={CHILD:2},gu=e=>(...t)=>({_$litDirective$:e,values:t});let mu=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:Cg}=lp,Ba=e=>e,Na=()=>document.createComment(""),ln=(e,t,n)=>{var o;const i=e._$AA.parentNode,s=t===void 0?e._$AB:t._$AA;if(n===void 0){const r=i.insertBefore(Na(),s),a=i.insertBefore(Na(),s);n=new Cg(r,a,e,e.options)}else{const r=n._$AB.nextSibling,a=n._$AM,u=a!==e;if(u){let c;(o=n._$AQ)==null||o.call(n,e),n._$AM=e,n._$AP!==void 0&&(c=e._$AU)!==a._$AU&&n._$AP(c)}if(r!==s||u){let c=n._$AA;for(;c!==r;){const l=Ba(c).nextSibling;Ba(i).insertBefore(c,s),c=l}}}return n},dt=(e,t,n=e)=>(e._$AI(t,n),e),Tg={},_g=(e,t=Tg)=>e._$AH=t,Mg=e=>e._$AH,Ts=e=>{e._$AR(),e._$AA.remove()};const Oa=(e,t,n)=>{const i=new Map;for(let s=t;s<=n;s++)i.set(e[s],s);return i},Pg=gu(class extends mu{constructor(e){if(super(e),e.type!==fu.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=[],o=[];let r=0;for(const a of e)s[r]=i?i(a,r):r,o[r]=n(a,r),r++;return{values:o,keys:s}}render(e,t,n){return this.dt(e,t,n).values}update(e,[t,n,i]){const s=Mg(e),{values:o,keys:r}=this.dt(t,n,i);if(!Array.isArray(s))return this.ut=r,o;const a=this.ut??(this.ut=[]),u=[];let c,l,p=0,f=s.length-1,b=0,h=o.length-1;for(;p<=f&&b<=h;)if(s[p]===null)p++;else if(s[f]===null)f--;else if(a[p]===r[b])u[b]=dt(s[p],o[b]),p++,b++;else if(a[f]===r[h])u[h]=dt(s[f],o[h]),f--,h--;else if(a[p]===r[h])u[h]=dt(s[p],o[h]),ln(e,u[h+1],s[p]),p++,h--;else if(a[f]===r[b])u[b]=dt(s[f],o[b]),ln(e,s[p],s[f]),f--,b++;else if(c===void 0&&(c=Oa(r,b,h),l=Oa(a,p,f)),c.has(a[p]))if(c.has(a[f])){const v=l.get(r[b]),S=v!==void 0?s[v]:null;if(S===null){const $=ln(e,s[p]);dt($,o[b]),u[b]=$}else u[b]=dt(S,o[b]),ln(e,s[p],S),s[v]=null;b++}else Ts(s[f]),f--;else Ts(s[p]),p++;for(;b<=h;){const v=ln(e,u[h+1]);dt(v,o[b]),u[b++]=v}for(;p<=f;){const v=s[p++];v!==null&&Ts(v)}return this.ut=r,_g(e,u),it}});class po extends mu{constructor(t){if(super(t),this.it=k,t.type!==fu.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===it)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:[]}}}po.directiveName="unsafeHTML",po.resultType=1;const Pi=gu(po);const{entries:yu,setPrototypeOf:Fa,isFrozen:Lg,getPrototypeOf:Ig,getOwnPropertyDescriptor:Rg}=Object;let{freeze:fe,seal:ve,create:ho}=Object,{apply:fo,construct:go}=typeof Reflect<"u"&&Reflect;fe||(fe=function(t){return t});ve||(ve=function(t){return t});fo||(fo=function(t,n){for(var i=arguments.length,s=new Array(i>2?i-2:0),o=2;o<i;o++)s[o-2]=arguments[o];return t.apply(n,s)});go||(go=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 oi=ge(Array.prototype.forEach),Dg=ge(Array.prototype.lastIndexOf),Ua=ge(Array.prototype.pop),cn=ge(Array.prototype.push),Bg=ge(Array.prototype.splice),mi=ge(String.prototype.toLowerCase),_s=ge(String.prototype.toString),Ms=ge(String.prototype.match),un=ge(String.prototype.replace),Ng=ge(String.prototype.indexOf),Og=ge(String.prototype.trim),we=ge(Object.prototype.hasOwnProperty),de=ge(RegExp.prototype.test),dn=Fg(TypeError);function ge(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 fo(e,t,i)}}function Fg(e){return function(){for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return go(e,n)}}function U(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:mi;Fa&&Fa(e,null);let i=t.length;for(;i--;){let s=t[i];if(typeof s=="string"){const o=n(s);o!==s&&(Lg(t)||(t[i]=o),s=o)}e[s]=!0}return e}function Ug(e){for(let t=0;t<e.length;t++)we(e,t)||(e[t]=null);return e}function Pe(e){const t=ho(null);for(const[n,i]of yu(e))we(e,n)&&(Array.isArray(i)?t[n]=Ug(i):i&&typeof i=="object"&&i.constructor===Object?t[n]=Pe(i):t[n]=i);return t}function pn(e,t){for(;e!==null;){const i=Rg(e,t);if(i){if(i.get)return ge(i.get);if(typeof i.value=="function")return ge(i.value)}e=Ig(e)}function n(){return null}return n}const Wa=fe(["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"]),Ps=fe(["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"]),Ls=fe(["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"]),Wg=fe(["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"]),Is=fe(["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"]),Kg=fe(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),Ka=fe(["#text"]),za=fe(["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"]),Rs=fe(["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"]),qa=fe(["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"]),ri=fe(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),zg=ve(/\{\{[\w\W]*|[\w\W]*\}\}/gm),qg=ve(/<%[\w\W]*|[\w\W]*%>/gm),Hg=ve(/\$\{[\w\W]*/gm),jg=ve(/^data-[\-\w.\u00B7-\uFFFF]+$/),Vg=ve(/^aria-[\-\w]+$/),vu=ve(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Gg=ve(/^(?:\w+script|data):/i),Qg=ve(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),bu=ve(/^html$/i),Yg=ve(/^[a-z][.\w]*(-[.\w]+)+$/i);var Ha=Object.freeze({__proto__:null,ARIA_ATTR:Vg,ATTR_WHITESPACE:Qg,CUSTOM_ELEMENT:Yg,DATA_ATTR:jg,DOCTYPE_NAME:bu,ERB_EXPR:qg,IS_ALLOWED_URI:vu,IS_SCRIPT_OR_DATA:Gg,MUSTACHE_EXPR:zg,TMPLIT_EXPR:Hg});const hn={element:1,text:3,progressingInstruction:7,comment:8,document:9},Xg=function(){return typeof window>"u"?null:window},Jg=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 o="dompurify"+(i?"#"+i:"");try{return t.createPolicy(o,{createHTML(r){return r},createScriptURL(r){return r}})}catch{return console.warn("TrustedTypes policy "+o+" could not be created."),null}},ja=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function wu(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Xg();const t=R=>wu(R);if(t.version="3.3.1",t.removed=[],!e||!e.document||e.document.nodeType!==hn.document||!e.Element)return t.isSupported=!1,t;let{document:n}=e;const i=n,s=i.currentScript,{DocumentFragment:o,HTMLTemplateElement:r,Node:a,Element:u,NodeFilter:c,NamedNodeMap:l=e.NamedNodeMap||e.MozNamedAttrMap,HTMLFormElement:p,DOMParser:f,trustedTypes:b}=e,h=u.prototype,v=pn(h,"cloneNode"),S=pn(h,"remove"),$=pn(h,"nextSibling"),A=pn(h,"childNodes"),E=pn(h,"parentNode");if(typeof r=="function"){const R=n.createElement("template");R.content&&R.content.ownerDocument&&(n=R.content.ownerDocument)}let T,_="";const{implementation:D,createNodeIterator:F,createDocumentFragment:ne,getElementsByTagName:be}=n,{importNode:Ye}=i;let ee=ja();t.isSupported=typeof yu=="function"&&typeof E=="function"&&D&&D.createHTMLDocument!==void 0;const{MUSTACHE_EXPR:tn,ERB_EXPR:Pt,TMPLIT_EXPR:rt,DATA_ATTR:is,ARIA_ATTR:ss,IS_SCRIPT_OR_DATA:os,ATTR_WHITESPACE:Un,CUSTOM_ELEMENT:rs}=Ha;let{IS_ALLOWED_URI:Wn}=Ha,X=null;const Kn=U({},[...Wa,...Ps,...Ls,...Is,...Ka]);let J=null;const zn=U({},[...za,...Rs,...qa,...ri]);let G=Object.seal(ho(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}})),at=null,nn=null;const Xe=Object.seal(ho(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}}));let qn=!0,x=!0,M=!1,N=!0,O=!1,Q=!0,H=!1,ue=!1,Je=!1,Lt=!1,Hn=!1,jn=!1,Ar=!0,xr=!1;const Pd="user-content-";let as=!0,sn=!1,It={},Ce=null;const ls=U({},["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 Er=null;const Cr=U({},["audio","video","img","source","image","track"]);let cs=null;const Tr=U({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Vn="http://www.w3.org/1998/Math/MathML",Gn="http://www.w3.org/2000/svg",Fe="http://www.w3.org/1999/xhtml";let Rt=Fe,us=!1,ds=null;const Ld=U({},[Vn,Gn,Fe],_s);let Qn=U({},["mi","mo","mn","ms","mtext"]),Yn=U({},["annotation-xml"]);const Id=U({},["title","style","font","a","script"]);let on=null;const Rd=["application/xhtml+xml","text/html"],Dd="text/html";let te=null,Dt=null;const Bd=n.createElement("form"),_r=function(w){return w instanceof RegExp||w instanceof Function},ps=function(){let w=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(Dt&&Dt===w)){if((!w||typeof w!="object")&&(w={}),w=Pe(w),on=Rd.indexOf(w.PARSER_MEDIA_TYPE)===-1?Dd:w.PARSER_MEDIA_TYPE,te=on==="application/xhtml+xml"?_s:mi,X=we(w,"ALLOWED_TAGS")?U({},w.ALLOWED_TAGS,te):Kn,J=we(w,"ALLOWED_ATTR")?U({},w.ALLOWED_ATTR,te):zn,ds=we(w,"ALLOWED_NAMESPACES")?U({},w.ALLOWED_NAMESPACES,_s):Ld,cs=we(w,"ADD_URI_SAFE_ATTR")?U(Pe(Tr),w.ADD_URI_SAFE_ATTR,te):Tr,Er=we(w,"ADD_DATA_URI_TAGS")?U(Pe(Cr),w.ADD_DATA_URI_TAGS,te):Cr,Ce=we(w,"FORBID_CONTENTS")?U({},w.FORBID_CONTENTS,te):ls,at=we(w,"FORBID_TAGS")?U({},w.FORBID_TAGS,te):Pe({}),nn=we(w,"FORBID_ATTR")?U({},w.FORBID_ATTR,te):Pe({}),It=we(w,"USE_PROFILES")?w.USE_PROFILES:!1,qn=w.ALLOW_ARIA_ATTR!==!1,x=w.ALLOW_DATA_ATTR!==!1,M=w.ALLOW_UNKNOWN_PROTOCOLS||!1,N=w.ALLOW_SELF_CLOSE_IN_ATTR!==!1,O=w.SAFE_FOR_TEMPLATES||!1,Q=w.SAFE_FOR_XML!==!1,H=w.WHOLE_DOCUMENT||!1,Lt=w.RETURN_DOM||!1,Hn=w.RETURN_DOM_FRAGMENT||!1,jn=w.RETURN_TRUSTED_TYPE||!1,Je=w.FORCE_BODY||!1,Ar=w.SANITIZE_DOM!==!1,xr=w.SANITIZE_NAMED_PROPS||!1,as=w.KEEP_CONTENT!==!1,sn=w.IN_PLACE||!1,Wn=w.ALLOWED_URI_REGEXP||vu,Rt=w.NAMESPACE||Fe,Qn=w.MATHML_TEXT_INTEGRATION_POINTS||Qn,Yn=w.HTML_INTEGRATION_POINTS||Yn,G=w.CUSTOM_ELEMENT_HANDLING||{},w.CUSTOM_ELEMENT_HANDLING&&_r(w.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(G.tagNameCheck=w.CUSTOM_ELEMENT_HANDLING.tagNameCheck),w.CUSTOM_ELEMENT_HANDLING&&_r(w.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(G.attributeNameCheck=w.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),w.CUSTOM_ELEMENT_HANDLING&&typeof w.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(G.allowCustomizedBuiltInElements=w.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),O&&(x=!1),Hn&&(Lt=!0),It&&(X=U({},Ka),J=[],It.html===!0&&(U(X,Wa),U(J,za)),It.svg===!0&&(U(X,Ps),U(J,Rs),U(J,ri)),It.svgFilters===!0&&(U(X,Ls),U(J,Rs),U(J,ri)),It.mathMl===!0&&(U(X,Is),U(J,qa),U(J,ri))),w.ADD_TAGS&&(typeof w.ADD_TAGS=="function"?Xe.tagCheck=w.ADD_TAGS:(X===Kn&&(X=Pe(X)),U(X,w.ADD_TAGS,te))),w.ADD_ATTR&&(typeof w.ADD_ATTR=="function"?Xe.attributeCheck=w.ADD_ATTR:(J===zn&&(J=Pe(J)),U(J,w.ADD_ATTR,te))),w.ADD_URI_SAFE_ATTR&&U(cs,w.ADD_URI_SAFE_ATTR,te),w.FORBID_CONTENTS&&(Ce===ls&&(Ce=Pe(Ce)),U(Ce,w.FORBID_CONTENTS,te)),w.ADD_FORBID_CONTENTS&&(Ce===ls&&(Ce=Pe(Ce)),U(Ce,w.ADD_FORBID_CONTENTS,te)),as&&(X["#text"]=!0),H&&U(X,["html","head","body"]),X.table&&(U(X,["tbody"]),delete at.tbody),w.TRUSTED_TYPES_POLICY){if(typeof w.TRUSTED_TYPES_POLICY.createHTML!="function")throw dn('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof w.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw dn('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');T=w.TRUSTED_TYPES_POLICY,_=T.createHTML("")}else T===void 0&&(T=Jg(b,s)),T!==null&&typeof _=="string"&&(_=T.createHTML(""));fe&&fe(w),Dt=w}},Mr=U({},[...Ps,...Ls,...Wg]),Pr=U({},[...Is,...Kg]),Nd=function(w){let C=E(w);(!C||!C.tagName)&&(C={namespaceURI:Rt,tagName:"template"});const I=mi(w.tagName),j=mi(C.tagName);return ds[w.namespaceURI]?w.namespaceURI===Gn?C.namespaceURI===Fe?I==="svg":C.namespaceURI===Vn?I==="svg"&&(j==="annotation-xml"||Qn[j]):!!Mr[I]:w.namespaceURI===Vn?C.namespaceURI===Fe?I==="math":C.namespaceURI===Gn?I==="math"&&Yn[j]:!!Pr[I]:w.namespaceURI===Fe?C.namespaceURI===Gn&&!Yn[j]||C.namespaceURI===Vn&&!Qn[j]?!1:!Pr[I]&&(Id[I]||!Mr[I]):!!(on==="application/xhtml+xml"&&ds[w.namespaceURI]):!1},Te=function(w){cn(t.removed,{element:w});try{E(w).removeChild(w)}catch{S(w)}},lt=function(w,C){try{cn(t.removed,{attribute:C.getAttributeNode(w),from:C})}catch{cn(t.removed,{attribute:null,from:C})}if(C.removeAttribute(w),w==="is")if(Lt||Hn)try{Te(C)}catch{}else try{C.setAttribute(w,"")}catch{}},Lr=function(w){let C=null,I=null;if(Je)w="<remove></remove>"+w;else{const Z=Ms(w,/^[\r\n\t ]+/);I=Z&&Z[0]}on==="application/xhtml+xml"&&Rt===Fe&&(w='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+w+"</body></html>");const j=T?T.createHTML(w):w;if(Rt===Fe)try{C=new f().parseFromString(j,on)}catch{}if(!C||!C.documentElement){C=D.createDocument(Rt,"template",null);try{C.documentElement.innerHTML=us?_:j}catch{}}const re=C.body||C.documentElement;return w&&I&&re.insertBefore(n.createTextNode(I),re.childNodes[0]||null),Rt===Fe?be.call(C,H?"html":"body")[0]:H?C.documentElement:re},Ir=function(w){return F.call(w.ownerDocument||w,w,c.SHOW_ELEMENT|c.SHOW_COMMENT|c.SHOW_TEXT|c.SHOW_PROCESSING_INSTRUCTION|c.SHOW_CDATA_SECTION,null)},hs=function(w){return w instanceof p&&(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")},Rr=function(w){return typeof a=="function"&&w instanceof a};function Ue(R,w,C){oi(R,I=>{I.call(t,w,C,Dt)})}const Dr=function(w){let C=null;if(Ue(ee.beforeSanitizeElements,w,null),hs(w))return Te(w),!0;const I=te(w.nodeName);if(Ue(ee.uponSanitizeElement,w,{tagName:I,allowedTags:X}),Q&&w.hasChildNodes()&&!Rr(w.firstElementChild)&&de(/<[/\w!]/g,w.innerHTML)&&de(/<[/\w!]/g,w.textContent)||w.nodeType===hn.progressingInstruction||Q&&w.nodeType===hn.comment&&de(/<[/\w]/g,w.data))return Te(w),!0;if(!(Xe.tagCheck instanceof Function&&Xe.tagCheck(I))&&(!X[I]||at[I])){if(!at[I]&&Nr(I)&&(G.tagNameCheck instanceof RegExp&&de(G.tagNameCheck,I)||G.tagNameCheck instanceof Function&&G.tagNameCheck(I)))return!1;if(as&&!Ce[I]){const j=E(w)||w.parentNode,re=A(w)||w.childNodes;if(re&&j){const Z=re.length;for(let me=Z-1;me>=0;--me){const We=v(re[me],!0);We.__removalCount=(w.__removalCount||0)+1,j.insertBefore(We,$(w))}}}return Te(w),!0}return w instanceof u&&!Nd(w)||(I==="noscript"||I==="noembed"||I==="noframes")&&de(/<\/no(script|embed|frames)/i,w.innerHTML)?(Te(w),!0):(O&&w.nodeType===hn.text&&(C=w.textContent,oi([tn,Pt,rt],j=>{C=un(C,j," ")}),w.textContent!==C&&(cn(t.removed,{element:w.cloneNode()}),w.textContent=C)),Ue(ee.afterSanitizeElements,w,null),!1)},Br=function(w,C,I){if(Ar&&(C==="id"||C==="name")&&(I in n||I in Bd))return!1;if(!(x&&!nn[C]&&de(is,C))){if(!(qn&&de(ss,C))){if(!(Xe.attributeCheck instanceof Function&&Xe.attributeCheck(C,w))){if(!J[C]||nn[C]){if(!(Nr(w)&&(G.tagNameCheck instanceof RegExp&&de(G.tagNameCheck,w)||G.tagNameCheck instanceof Function&&G.tagNameCheck(w))&&(G.attributeNameCheck instanceof RegExp&&de(G.attributeNameCheck,C)||G.attributeNameCheck instanceof Function&&G.attributeNameCheck(C,w))||C==="is"&&G.allowCustomizedBuiltInElements&&(G.tagNameCheck instanceof RegExp&&de(G.tagNameCheck,I)||G.tagNameCheck instanceof Function&&G.tagNameCheck(I))))return!1}else if(!cs[C]){if(!de(Wn,un(I,Un,""))){if(!((C==="src"||C==="xlink:href"||C==="href")&&w!=="script"&&Ng(I,"data:")===0&&Er[w])){if(!(M&&!de(os,un(I,Un,"")))){if(I)return!1}}}}}}}return!0},Nr=function(w){return w!=="annotation-xml"&&Ms(w,rs)},Or=function(w){Ue(ee.beforeSanitizeAttributes,w,null);const{attributes:C}=w;if(!C||hs(w))return;const I={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:J,forceKeepAttr:void 0};let j=C.length;for(;j--;){const re=C[j],{name:Z,namespaceURI:me,value:We}=re,Bt=te(Z),fs=We;let se=Z==="value"?fs:Og(fs);if(I.attrName=Bt,I.attrValue=se,I.keepAttr=!0,I.forceKeepAttr=void 0,Ue(ee.uponSanitizeAttribute,w,I),se=I.attrValue,xr&&(Bt==="id"||Bt==="name")&&(lt(Z,w),se=Pd+se),Q&&de(/((--!?|])>)|<\/(style|title|textarea)/i,se)){lt(Z,w);continue}if(Bt==="attributename"&&Ms(se,"href")){lt(Z,w);continue}if(I.forceKeepAttr)continue;if(!I.keepAttr){lt(Z,w);continue}if(!N&&de(/\/>/i,se)){lt(Z,w);continue}O&&oi([tn,Pt,rt],Ur=>{se=un(se,Ur," ")});const Fr=te(w.nodeName);if(!Br(Fr,Bt,se)){lt(Z,w);continue}if(T&&typeof b=="object"&&typeof b.getAttributeType=="function"&&!me)switch(b.getAttributeType(Fr,Bt)){case"TrustedHTML":{se=T.createHTML(se);break}case"TrustedScriptURL":{se=T.createScriptURL(se);break}}if(se!==fs)try{me?w.setAttributeNS(me,Z,se):w.setAttribute(Z,se),hs(w)?Te(w):Ua(t.removed)}catch{lt(Z,w)}}Ue(ee.afterSanitizeAttributes,w,null)},Od=function R(w){let C=null;const I=Ir(w);for(Ue(ee.beforeSanitizeShadowDOM,w,null);C=I.nextNode();)Ue(ee.uponSanitizeShadowNode,C,null),Dr(C),Or(C),C.content instanceof o&&R(C.content);Ue(ee.afterSanitizeShadowDOM,w,null)};return t.sanitize=function(R){let w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},C=null,I=null,j=null,re=null;if(us=!R,us&&(R="<!-->"),typeof R!="string"&&!Rr(R))if(typeof R.toString=="function"){if(R=R.toString(),typeof R!="string")throw dn("dirty is not a string, aborting")}else throw dn("toString is not a function");if(!t.isSupported)return R;if(ue||ps(w),t.removed=[],typeof R=="string"&&(sn=!1),sn){if(R.nodeName){const We=te(R.nodeName);if(!X[We]||at[We])throw dn("root node is forbidden and cannot be sanitized in-place")}}else if(R instanceof a)C=Lr("<!---->"),I=C.ownerDocument.importNode(R,!0),I.nodeType===hn.element&&I.nodeName==="BODY"||I.nodeName==="HTML"?C=I:C.appendChild(I);else{if(!Lt&&!O&&!H&&R.indexOf("<")===-1)return T&&jn?T.createHTML(R):R;if(C=Lr(R),!C)return Lt?null:jn?_:""}C&&Je&&Te(C.firstChild);const Z=Ir(sn?R:C);for(;j=Z.nextNode();)Dr(j),Or(j),j.content instanceof o&&Od(j.content);if(sn)return R;if(Lt){if(Hn)for(re=ne.call(C.ownerDocument);C.firstChild;)re.appendChild(C.firstChild);else re=C;return(J.shadowroot||J.shadowrootmode)&&(re=Ye.call(i,re,!0)),re}let me=H?C.outerHTML:C.innerHTML;return H&&X["!doctype"]&&C.ownerDocument&&C.ownerDocument.doctype&&C.ownerDocument.doctype.name&&de(bu,C.ownerDocument.doctype.name)&&(me="<!DOCTYPE "+C.ownerDocument.doctype.name+`>
|
|
2268
|
+
`+me),O&&oi([tn,Pt,rt],We=>{me=un(me,We," ")}),T&&jn?T.createHTML(me):me},t.setConfig=function(){let R=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};ps(R),ue=!0},t.clearConfig=function(){Dt=null,ue=!1},t.isValidAttribute=function(R,w,C){Dt||ps({});const I=te(R),j=te(w);return Br(I,j,C)},t.addHook=function(R,w){typeof w=="function"&&cn(ee[R],w)},t.removeHook=function(R,w){if(w!==void 0){const C=Dg(ee[R],w);return C===-1?void 0:Bg(ee[R],C,1)[0]}return Ua(ee[R])},t.removeHooks=function(R){ee[R]=[]},t.removeAllHooks=function(){ee=ja()},t}var mo=wu();function or(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var _t=or();function ku(e){_t=e}var xn={exec:()=>null};function K(e,t=""){let n=typeof e=="string"?e:e.source,i={replace:(s,o)=>{let r=typeof o=="string"?o:o.source;return r=r.replace(pe.caret,"$1"),n=n.replace(s,r),i},getRegex:()=>new RegExp(n,t)};return i}var Zg=(()=>{try{return!!new RegExp("(?<=1)(?<!1)")}catch{return!1}})(),pe={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")},em=/^(?:[ \t]*(?:\n|$))+/,tm=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,nm=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,On=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,im=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,rr=/(?:[*+-]|\d{1,9}[.)])/,Su=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,$u=K(Su).replace(/bull/g,rr).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(),sm=K(Su).replace(/bull/g,rr).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(),ar=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,om=/^[^\n]+/,lr=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,rm=K(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",lr).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),am=K(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,rr).getRegex(),Zi="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",cr=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,lm=K("^ {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",cr).replace("tag",Zi).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Au=K(ar).replace("hr",On).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",Zi).getRegex(),cm=K(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",Au).getRegex(),ur={blockquote:cm,code:tm,def:rm,fences:nm,heading:im,hr:On,html:lm,lheading:$u,list:am,newline:em,paragraph:Au,table:xn,text:om},Va=K("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",On).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",Zi).getRegex(),um={...ur,lheading:sm,table:Va,paragraph:K(ar).replace("hr",On).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",Va).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",Zi).getRegex()},dm={...ur,html:K(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",cr).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:xn,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:K(ar).replace("hr",On).replace("heading",` *#{1,6} *[^
|
|
2269
|
+
]`).replace("lheading",$u).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},pm=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,hm=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,xu=/^( {2,}|\\)\n(?!\s*$)/,fm=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,es=/[\p{P}\p{S}]/u,dr=/[\s\p{P}\p{S}]/u,Eu=/[^\s\p{P}\p{S}]/u,gm=K(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,dr).getRegex(),Cu=/(?!~)[\p{P}\p{S}]/u,mm=/(?!~)[\s\p{P}\p{S}]/u,ym=/(?:[^\s\p{P}\p{S}]|~)/u,vm=K(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",Zg?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),Tu=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,bm=K(Tu,"u").replace(/punct/g,es).getRegex(),wm=K(Tu,"u").replace(/punct/g,Cu).getRegex(),_u="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",km=K(_u,"gu").replace(/notPunctSpace/g,Eu).replace(/punctSpace/g,dr).replace(/punct/g,es).getRegex(),Sm=K(_u,"gu").replace(/notPunctSpace/g,ym).replace(/punctSpace/g,mm).replace(/punct/g,Cu).getRegex(),$m=K("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,Eu).replace(/punctSpace/g,dr).replace(/punct/g,es).getRegex(),Am=K(/\\(punct)/,"gu").replace(/punct/g,es).getRegex(),xm=K(/^<(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(),Em=K(cr).replace("(?:-->|$)","-->").getRegex(),Cm=K("^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",Em).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Li=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+[^`]*?`+(?!`)|[^\[\]\\`])*?/,Tm=K(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",Li).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Mu=K(/^!?\[(label)\]\[(ref)\]/).replace("label",Li).replace("ref",lr).getRegex(),Pu=K(/^!?\[(ref)\](?:\[\])?/).replace("ref",lr).getRegex(),_m=K("reflink|nolink(?!\\()","g").replace("reflink",Mu).replace("nolink",Pu).getRegex(),Ga=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,pr={_backpedal:xn,anyPunctuation:Am,autolink:xm,blockSkip:vm,br:xu,code:hm,del:xn,emStrongLDelim:bm,emStrongRDelimAst:km,emStrongRDelimUnd:$m,escape:pm,link:Tm,nolink:Pu,punctuation:gm,reflink:Mu,reflinkSearch:_m,tag:Cm,text:fm,url:xn},Mm={...pr,link:K(/^!?\[(label)\]\((.*?)\)/).replace("label",Li).getRegex(),reflink:K(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Li).getRegex()},yo={...pr,emStrongRDelimAst:Sm,emStrongLDelim:wm,url:K(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",Ga).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:K(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace("protocol",Ga).getRegex()},Pm={...yo,br:K(xu).replace("{2,}","*").getRegex(),text:K(yo.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},ai={normal:ur,gfm:um,pedantic:dm},fn={normal:pr,gfm:yo,breaks:Pm,pedantic:Mm},Lm={"&":"&","<":"<",">":">",'"':""","'":"'"},Qa=e=>Lm[e];function ze(e,t){if(t){if(pe.escapeTest.test(e))return e.replace(pe.escapeReplace,Qa)}else if(pe.escapeTestNoEncode.test(e))return e.replace(pe.escapeReplaceNoEncode,Qa);return e}function Ya(e){try{e=encodeURI(e).replace(pe.percentDecode,"%")}catch{return null}return e}function Xa(e,t){var o;let n=e.replace(pe.findPipe,(r,a,u)=>{let c=!1,l=a;for(;--l>=0&&u[l]==="\\";)c=!c;return c?"|":" |"}),i=n.split(pe.splitPipe),s=0;if(i[0].trim()||i.shift(),i.length>0&&!((o=i.at(-1))!=null&&o.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(pe.slashPipe,"|");return i}function gn(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 Im(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 Ja(e,t,n,i,s){let o=t.href,r=t.title||null,a=e[1].replace(s.other.outputLinkReplace,"$1");i.state.inLink=!0;let u={type:e[0].charAt(0)==="!"?"image":"link",raw:n,href:o,title:r,text:a,tokens:i.inlineTokens(a)};return i.state.inLink=!1,u}function Rm(e,t,n){let i=e.match(n.other.indentCodeCompensation);if(i===null)return t;let s=i[1];return t.split(`
|
|
2270
2270
|
`).map(o=>{let r=o.match(n.other.beginningSpace);if(r===null)return o;let[a]=r;return a.length>=s.length?o.slice(s.length):o}).join(`
|
|
2271
|
-
`)}var
|
|
2272
|
-
`)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let n=t[0],i=
|
|
2273
|
-
`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n=
|
|
2271
|
+
`)}var Ii=class{constructor(e){W(this,"options");W(this,"rules");W(this,"lexer");this.options=e||_t}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:gn(n,`
|
|
2272
|
+
`)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let n=t[0],i=Rm(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=gn(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:gn(t[0],`
|
|
2273
|
+
`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n=gn(t[0],`
|
|
2274
2274
|
`).split(`
|
|
2275
2275
|
`),i="",s="",o=[];for(;n.length>0;){let r=!1,a=[],u;for(u=0;u<n.length;u++)if(this.rules.other.blockquoteStart.test(n[u]))a.push(n[u]),r=!0;else if(!r)a.push(n[u]);else break;n=n.slice(u);let c=a.join(`
|
|
2276
2276
|
`),l=c.replace(this.rules.other.blockquoteSetextReplace,`
|
|
@@ -2288,9 +2288,9 @@ ${l}`:l;let p=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTo
|
|
|
2288
2288
|
`,1)[0],F;if(h=D,this.options.pedantic?(h=h.replace(this.rules.other.listReplaceNesting," "),F=h):F=h.replace(this.rules.other.tabCharGlobal," "),E.test(h)||T.test(h)||_.test(h)||$.test(h)||A.test(h))break;if(F.search(this.rules.other.nonSpaceChar)>=S||!h.trim())f+=`
|
|
2289
2289
|
`+F.slice(S);else{if(v||b.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||E.test(b)||T.test(b)||A.test(b))break;f+=`
|
|
2290
2290
|
`+h}!v&&!h.trim()&&(v=!0),p+=D+`
|
|
2291
|
-
`,e=e.substring(D.length+1),b=F.slice(S)}}r.loose||(u?r.loose=!0:this.rules.other.doubleBlankLine.test(p)&&(u=!0)),r.items.push({type:"list_item",raw:p,task:!!this.options.gfm&&this.rules.other.listIsTask.test(f),loose:!1,text:f,tokens:[]}),r.raw+=p}let c=r.items.at(-1);if(c)c.raw=c.raw.trimEnd(),c.text=c.text.trimEnd();else return;r.raw=r.raw.trimEnd();for(let l of r.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 f=this.lexer.inlineQueue.length-1;f>=0;f--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[f].src)){this.lexer.inlineQueue[f].src=this.lexer.inlineQueue[f].src.replace(this.rules.other.listReplaceTask,"");break}}let p=this.rules.other.listTaskCheckbox.exec(l.raw);if(p){let f={type:"checkbox",raw:p[0]+" ",checked:p[0]!=="[ ]"};l.checked=f.checked,r.loose?l.tokens[0]&&["paragraph","text"].includes(l.tokens[0].type)&&"tokens"in l.tokens[0]&&l.tokens[0].tokens?(l.tokens[0].raw=f.raw+l.tokens[0].raw,l.tokens[0].text=f.raw+l.tokens[0].text,l.tokens[0].tokens.unshift(f)):l.tokens.unshift({type:"paragraph",raw:f.raw,text:f.raw,tokens:[f]}):l.tokens.unshift(f)}}if(!r.loose){let p=l.tokens.filter(b=>b.type==="space"),f=p.length>0&&p.some(b=>this.rules.other.anyLine.test(b.raw));r.loose=f}}if(r.loose)for(let l of r.items){l.loose=!0;for(let p of l.tokens)p.type==="text"&&(p.type="paragraph")}return r}}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 r;let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=
|
|
2292
|
-
`):[],o={type:"table",raw:t[0],header:[],align:[],rows:[]};if(n.length===i.length){for(let a of i)this.rules.other.tableAlignRight.test(a)?o.align.push("right"):this.rules.other.tableAlignCenter.test(a)?o.align.push("center"):this.rules.other.tableAlignLeft.test(a)?o.align.push("left"):o.align.push(null);for(let a=0;a<n.length;a++)o.header.push({text:n[a],tokens:this.lexer.inline(n[a]),header:!0,align:o.align[a]});for(let a of s)o.rows.push(
|
|
2293
|
-
`?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 o=
|
|
2291
|
+
`,e=e.substring(D.length+1),b=F.slice(S)}}r.loose||(u?r.loose=!0:this.rules.other.doubleBlankLine.test(p)&&(u=!0)),r.items.push({type:"list_item",raw:p,task:!!this.options.gfm&&this.rules.other.listIsTask.test(f),loose:!1,text:f,tokens:[]}),r.raw+=p}let c=r.items.at(-1);if(c)c.raw=c.raw.trimEnd(),c.text=c.text.trimEnd();else return;r.raw=r.raw.trimEnd();for(let l of r.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 f=this.lexer.inlineQueue.length-1;f>=0;f--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[f].src)){this.lexer.inlineQueue[f].src=this.lexer.inlineQueue[f].src.replace(this.rules.other.listReplaceTask,"");break}}let p=this.rules.other.listTaskCheckbox.exec(l.raw);if(p){let f={type:"checkbox",raw:p[0]+" ",checked:p[0]!=="[ ]"};l.checked=f.checked,r.loose?l.tokens[0]&&["paragraph","text"].includes(l.tokens[0].type)&&"tokens"in l.tokens[0]&&l.tokens[0].tokens?(l.tokens[0].raw=f.raw+l.tokens[0].raw,l.tokens[0].text=f.raw+l.tokens[0].text,l.tokens[0].tokens.unshift(f)):l.tokens.unshift({type:"paragraph",raw:f.raw,text:f.raw,tokens:[f]}):l.tokens.unshift(f)}}if(!r.loose){let p=l.tokens.filter(b=>b.type==="space"),f=p.length>0&&p.some(b=>this.rules.other.anyLine.test(b.raw));r.loose=f}}if(r.loose)for(let l of r.items){l.loose=!0;for(let p of l.tokens)p.type==="text"&&(p.type="paragraph")}return r}}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 r;let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=Xa(t[1]),i=t[2].replace(this.rules.other.tableAlignChars,"").split("|"),s=(r=t[3])!=null&&r.trim()?t[3].replace(this.rules.other.tableRowBlankLine,"").split(`
|
|
2292
|
+
`):[],o={type:"table",raw:t[0],header:[],align:[],rows:[]};if(n.length===i.length){for(let a of i)this.rules.other.tableAlignRight.test(a)?o.align.push("right"):this.rules.other.tableAlignCenter.test(a)?o.align.push("center"):this.rules.other.tableAlignLeft.test(a)?o.align.push("left"):o.align.push(null);for(let a=0;a<n.length;a++)o.header.push({text:n[a],tokens:this.lexer.inline(n[a]),header:!0,align:o.align[a]});for(let a of s)o.rows.push(Xa(a,o.header.length).map((u,c)=>({text:u,tokens:this.lexer.inline(u),header:!1,align:o.align[c]})));return o}}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)===`
|
|
2293
|
+
`?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 o=gn(n.slice(0,-1),"\\");if((n.length-o.length)%2===0)return}else{let o=Im(t[2],"()");if(o===-2)return;if(o>-1){let r=(t[0].indexOf("!")===0?5:4)+t[1].length+o;t[2]=t[2].substring(0,o),t[0]=t[0].substring(0,r).trim(),t[3]=""}}let i=t[2],s="";if(this.options.pedantic){let o=this.rules.other.pedanticHrefTitle.exec(i);o&&(i=o[1],s=o[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)),Ja(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 o=n[0].charAt(0);return{type:"text",raw:o,text:o}}return Ja(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,o,r,a=s,u=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(o=i[1]||i[2]||i[3]||i[4]||i[5]||i[6],!o)continue;if(r=[...o].length,i[3]||i[4]){a+=r;continue}else if((i[5]||i[6])&&s%3&&!((s+r)%3)){u+=r;continue}if(a-=r,a>0)continue;r=Math.min(r,r+a+u);let l=[...i[0]][0].length,p=e.slice(0,s+i.index+l+r);if(Math.min(s,r)%2){let b=p.slice(1,-1);return{type:"em",raw:p,text:b,tokens:this.lexer.inlineTokens(b)}}let f=p.slice(2,-2);return{type:"strong",raw:p,text:f,tokens:this.lexer.inlineTokens(f)}}}}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 o;do o=t[0],t[0]=((n=this.rules.inline._backpedal.exec(t[0]))==null?void 0:n[0])??"";while(o!==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}}}},Se=class vo{constructor(t){W(this,"tokens");W(this,"options");W(this,"state");W(this,"inlineQueue");W(this,"tokenizer");this.tokens=[],this.tokens.links=Object.create(null),this.options=t||_t,this.options.tokenizer=this.options.tokenizer||new Ii,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:pe,block:ai.normal,inline:fn.normal};this.options.pedantic?(n.block=ai.pedantic,n.inline=fn.pedantic):this.options.gfm&&(n.block=ai.gfm,this.options.breaks?n.inline=fn.breaks:n.inline=fn.gfm),this.tokenizer.rules=n}static get rules(){return{block:ai,inline:fn}}static lex(t,n){return new vo(n).lex(t)}static lexInline(t,n){return new vo(n).inlineTokens(t)}lex(t){t=t.replace(pe.carriageReturn,`
|
|
2294
2294
|
`),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,o,r;for(this.options.pedantic&&(t=t.replace(pe.tabCharGlobal," ").replace(pe.spaceLine,""));t;){let a;if((o=(s=this.options.extensions)==null?void 0:s.block)!=null&&o.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+=`
|
|
2295
2295
|
`: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(`
|
|
2296
2296
|
`)?"":`
|
|
@@ -2304,9 +2304,9 @@ ${l}`:l;let p=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTo
|
|
|
2304
2304
|
`+a.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=c.text):n.push(a),i=u.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(`
|
|
2305
2305
|
`)?"":`
|
|
2306
2306
|
`)+a.raw,c.text+=`
|
|
2307
|
-
`+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 u,c,l,p,f;let i=t,s=null;if(this.tokens.links){let b=Object.keys(this.tokens.links);if(b.length>0)for(;(s=this.tokenizer.rules.inline.reflinkSearch.exec(i))!=null;)b.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 o;for(;(s=this.tokenizer.rules.inline.blockSkip.exec(i))!=null;)o=s[2]?s[2].length:0,i=i.slice(0,s.index+o)+"["+"a".repeat(s[0].length-o-2)+"]"+i.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);i=((c=(u=this.options.hooks)==null?void 0:u.emStrongMask)==null?void 0:c.call({lexer:this},i))??i;let r=!1,a="";for(;t;){r||(a=""),r=!1;let b;if((p=(l=this.options.extensions)==null?void 0:l.inline)!=null&&p.some(v=>(b=v.call({lexer:this},t,n))?(t=t.substring(b.raw.length),n.push(b),!0):!1))continue;if(b=this.tokenizer.escape(t)){t=t.substring(b.raw.length),n.push(b);continue}if(b=this.tokenizer.tag(t)){t=t.substring(b.raw.length),n.push(b);continue}if(b=this.tokenizer.link(t)){t=t.substring(b.raw.length),n.push(b);continue}if(b=this.tokenizer.reflink(t,this.tokens.links)){t=t.substring(b.raw.length);let v=n.at(-1);b.type==="text"&&(v==null?void 0:v.type)==="text"?(v.raw+=b.raw,v.text+=b.text):n.push(b);continue}if(b=this.tokenizer.emStrong(t,i,a)){t=t.substring(b.raw.length),n.push(b);continue}if(b=this.tokenizer.codespan(t)){t=t.substring(b.raw.length),n.push(b);continue}if(b=this.tokenizer.br(t)){t=t.substring(b.raw.length),n.push(b);continue}if(b=this.tokenizer.del(t)){t=t.substring(b.raw.length),n.push(b);continue}if(b=this.tokenizer.autolink(t)){t=t.substring(b.raw.length),n.push(b);continue}if(!this.state.inLink&&(b=this.tokenizer.url(t))){t=t.substring(b.raw.length),n.push(b);continue}let h=t;if((f=this.options.extensions)!=null&&f.startInline){let v=1/0,S=t.slice(1),$;this.options.extensions.startInline.forEach(A=>{$=A.call({lexer:this},S),typeof $=="number"&&$>=0&&(v=Math.min(v,$))}),v<1/0&&v>=0&&(h=t.substring(0,v+1))}if(b=this.tokenizer.inlineText(h)){t=t.substring(b.raw.length),b.raw.slice(-1)!=="_"&&(a=b.raw.slice(-1)),r=!0;let v=n.at(-1);(v==null?void 0:v.type)==="text"?(v.raw+=b.raw,v.text+=b.text):n.push(b);continue}if(t){let v="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(v);break}else throw new Error(v)}}return n}},
|
|
2308
|
-
`;return i?'<pre><code class="language-'+
|
|
2309
|
-
`:"<pre><code>"+(n?s:
|
|
2307
|
+
`+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 u,c,l,p,f;let i=t,s=null;if(this.tokens.links){let b=Object.keys(this.tokens.links);if(b.length>0)for(;(s=this.tokenizer.rules.inline.reflinkSearch.exec(i))!=null;)b.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 o;for(;(s=this.tokenizer.rules.inline.blockSkip.exec(i))!=null;)o=s[2]?s[2].length:0,i=i.slice(0,s.index+o)+"["+"a".repeat(s[0].length-o-2)+"]"+i.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);i=((c=(u=this.options.hooks)==null?void 0:u.emStrongMask)==null?void 0:c.call({lexer:this},i))??i;let r=!1,a="";for(;t;){r||(a=""),r=!1;let b;if((p=(l=this.options.extensions)==null?void 0:l.inline)!=null&&p.some(v=>(b=v.call({lexer:this},t,n))?(t=t.substring(b.raw.length),n.push(b),!0):!1))continue;if(b=this.tokenizer.escape(t)){t=t.substring(b.raw.length),n.push(b);continue}if(b=this.tokenizer.tag(t)){t=t.substring(b.raw.length),n.push(b);continue}if(b=this.tokenizer.link(t)){t=t.substring(b.raw.length),n.push(b);continue}if(b=this.tokenizer.reflink(t,this.tokens.links)){t=t.substring(b.raw.length);let v=n.at(-1);b.type==="text"&&(v==null?void 0:v.type)==="text"?(v.raw+=b.raw,v.text+=b.text):n.push(b);continue}if(b=this.tokenizer.emStrong(t,i,a)){t=t.substring(b.raw.length),n.push(b);continue}if(b=this.tokenizer.codespan(t)){t=t.substring(b.raw.length),n.push(b);continue}if(b=this.tokenizer.br(t)){t=t.substring(b.raw.length),n.push(b);continue}if(b=this.tokenizer.del(t)){t=t.substring(b.raw.length),n.push(b);continue}if(b=this.tokenizer.autolink(t)){t=t.substring(b.raw.length),n.push(b);continue}if(!this.state.inLink&&(b=this.tokenizer.url(t))){t=t.substring(b.raw.length),n.push(b);continue}let h=t;if((f=this.options.extensions)!=null&&f.startInline){let v=1/0,S=t.slice(1),$;this.options.extensions.startInline.forEach(A=>{$=A.call({lexer:this},S),typeof $=="number"&&$>=0&&(v=Math.min(v,$))}),v<1/0&&v>=0&&(h=t.substring(0,v+1))}if(b=this.tokenizer.inlineText(h)){t=t.substring(b.raw.length),b.raw.slice(-1)!=="_"&&(a=b.raw.slice(-1)),r=!0;let v=n.at(-1);(v==null?void 0:v.type)==="text"?(v.raw+=b.raw,v.text+=b.text):n.push(b);continue}if(t){let v="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(v);break}else throw new Error(v)}}return n}},Ri=class{constructor(e){W(this,"options");W(this,"parser");this.options=e||_t}space(e){return""}code({text:e,lang:t,escaped:n}){var o;let i=(o=(t||"").match(pe.notSpaceStart))==null?void 0:o[0],s=e.replace(pe.endingNewline,"")+`
|
|
2308
|
+
`;return i?'<pre><code class="language-'+ze(i)+'">'+(n?s:ze(s,!0))+`</code></pre>
|
|
2309
|
+
`:"<pre><code>"+(n?s:ze(s,!0))+`</code></pre>
|
|
2310
2310
|
`}blockquote({tokens:e}){return`<blockquote>
|
|
2311
2311
|
${this.parser.parse(e)}</blockquote>
|
|
2312
2312
|
`}html({text:e}){return e}def(e){return""}heading({tokens:e,depth:t}){return`<h${t}>${this.parser.parseInline(e)}</h${t}>
|
|
@@ -2322,23 +2322,39 @@ ${this.parser.parse(e)}</blockquote>
|
|
|
2322
2322
|
`}tablerow({text:e}){return`<tr>
|
|
2323
2323
|
${e}</tr>
|
|
2324
2324
|
`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?"th":"td";return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+`</${n}>
|
|
2325
|
-
`}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>${
|
|
2326
|
-
Please report this to https://github.com/markedjs/marked.`,e){let i="<p>An error occurred:</p><pre>"+
|
|
2325
|
+
`}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>${ze(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=Ya(e);if(s===null)return i;e=s;let o='<a href="'+e+'"';return t&&(o+=' title="'+ze(t)+'"'),o+=">"+i+"</a>",o}image({href:e,title:t,text:n,tokens:i}){i&&(n=this.parser.parseInline(i,this.parser.textRenderer));let s=Ya(e);if(s===null)return ze(n);e=s;let o=`<img src="${e}" alt="${n}"`;return t&&(o+=` title="${ze(t)}"`),o+=">",o}text(e){return"tokens"in e&&e.tokens?this.parser.parseInline(e.tokens):"escaped"in e&&e.escaped?e.text:ze(e.text)}},hr=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}},$e=class bo{constructor(t){W(this,"options");W(this,"renderer");W(this,"textRenderer");this.options=t||_t,this.options.renderer=this.options.renderer||new Ri,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new hr}static parse(t,n){return new bo(n).parse(t)}static parseInline(t,n){return new bo(n).parseInline(t)}parse(t){var i,s;let n="";for(let o=0;o<t.length;o++){let r=t[o];if((s=(i=this.options.extensions)==null?void 0:i.renderers)!=null&&s[r.type]){let u=r,c=this.options.extensions.renderers[u.type].call({parser:this},u);if(c!==!1||!["space","hr","heading","code","table","blockquote","list","html","def","paragraph","text"].includes(u.type)){n+=c||"";continue}}let a=r;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 u='Token with "'+a.type+'" type was not found.';if(this.options.silent)return console.error(u),"";throw new Error(u)}}}return n}parseInline(t,n=this.renderer){var s,o;let i="";for(let r=0;r<t.length;r++){let a=t[r];if((o=(s=this.options.extensions)==null?void 0:s.renderers)!=null&&o[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 u=a;switch(u.type){case"escape":{i+=n.text(u);break}case"html":{i+=n.html(u);break}case"link":{i+=n.link(u);break}case"image":{i+=n.image(u);break}case"checkbox":{i+=n.checkbox(u);break}case"strong":{i+=n.strong(u);break}case"em":{i+=n.em(u);break}case"codespan":{i+=n.codespan(u);break}case"br":{i+=n.br(u);break}case"del":{i+=n.del(u);break}case"text":{i+=n.text(u);break}default:{let c='Token with "'+u.type+'" type was not found.';if(this.options.silent)return console.error(c),"";throw new Error(c)}}}return i}},hi,vn=(hi=class{constructor(e){W(this,"options");W(this,"block");this.options=e||_t}preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(){return this.block?Se.lex:Se.lexInline}provideParser(){return this.block?$e.parse:$e.parseInline}},W(hi,"passThroughHooks",new Set(["preprocess","postprocess","processAllTokens","emStrongMask"])),W(hi,"passThroughHooksRespectAsync",new Set(["preprocess","postprocess","processAllTokens"])),hi),Dm=class{constructor(...e){W(this,"defaults",or());W(this,"options",this.setOptions);W(this,"parse",this.parseMarkdown(!0));W(this,"parseInline",this.parseMarkdown(!1));W(this,"Parser",$e);W(this,"Renderer",Ri);W(this,"TextRenderer",hr);W(this,"Lexer",Se);W(this,"Tokenizer",Ii);W(this,"Hooks",vn);this.use(...e)}walkTokens(e,t){var i,s;let n=[];for(let o of e)switch(n=n.concat(t.call(this,o)),o.type){case"table":{let r=o;for(let a of r.header)n=n.concat(this.walkTokens(a.tokens,t));for(let a of r.rows)for(let u of a)n=n.concat(this.walkTokens(u.tokens,t));break}case"list":{let r=o;n=n.concat(this.walkTokens(r.items,t));break}default:{let r=o;(s=(i=this.defaults.extensions)==null?void 0:i.childTokens)!=null&&s[r.type]?this.defaults.extensions.childTokens[r.type].forEach(a=>{let u=r[a].flat(1/0);n=n.concat(this.walkTokens(u,t))}):r.tokens&&(n=n.concat(this.walkTokens(r.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 o=t.renderers[s.name];o?t.renderers[s.name]=function(...r){let a=s.renderer.apply(this,r);return a===!1&&(a=o.apply(this,r)),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 o=t[s.level];o?o.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 Ri(this.defaults);for(let o in n.renderer){if(!(o in s))throw new Error(`renderer '${o}' does not exist`);if(["options","parser"].includes(o))continue;let r=o,a=n.renderer[r],u=s[r];s[r]=(...c)=>{let l=a.apply(s,c);return l===!1&&(l=u.apply(s,c)),l||""}}i.renderer=s}if(n.tokenizer){let s=this.defaults.tokenizer||new Ii(this.defaults);for(let o in n.tokenizer){if(!(o in s))throw new Error(`tokenizer '${o}' does not exist`);if(["options","rules","lexer"].includes(o))continue;let r=o,a=n.tokenizer[r],u=s[r];s[r]=(...c)=>{let l=a.apply(s,c);return l===!1&&(l=u.apply(s,c)),l}}i.tokenizer=s}if(n.hooks){let s=this.defaults.hooks||new vn;for(let o in n.hooks){if(!(o in s))throw new Error(`hook '${o}' does not exist`);if(["options","block"].includes(o))continue;let r=o,a=n.hooks[r],u=s[r];vn.passThroughHooks.has(o)?s[r]=c=>{if(this.defaults.async&&vn.passThroughHooksRespectAsync.has(o))return(async()=>{let p=await a.call(s,c);return u.call(s,p)})();let l=a.call(s,c);return u.call(s,l)}:s[r]=(...c)=>{if(this.defaults.async)return(async()=>{let p=await a.apply(s,c);return p===!1&&(p=await u.apply(s,c)),p})();let l=a.apply(s,c);return l===!1&&(l=u.apply(s,c)),l}}i.hooks=s}if(n.walkTokens){let s=this.defaults.walkTokens,o=n.walkTokens;i.walkTokens=function(r){let a=[];return a.push(o.call(this,r)),s&&(a=a.concat(s.call(this,r))),a}}this.defaults={...this.defaults,...i}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return Se.lex(e,t??this.defaults)}parser(e,t){return $e.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{let i={...n},s={...this.defaults,...i},o=this.onError(!!s.silent,!!s.async);if(this.defaults.async===!0&&i.async===!1)return o(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 o(new Error("marked(): input parameter is undefined or null"));if(typeof t!="string")return o(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 r=s.hooks?await s.hooks.preprocess(t):t,a=await(s.hooks?await s.hooks.provideLexer():e?Se.lex:Se.lexInline)(r,s),u=s.hooks?await s.hooks.processAllTokens(a):a;s.walkTokens&&await Promise.all(this.walkTokens(u,s.walkTokens));let c=await(s.hooks?await s.hooks.provideParser():e?$e.parse:$e.parseInline)(u,s);return s.hooks?await s.hooks.postprocess(c):c})().catch(o);try{s.hooks&&(t=s.hooks.preprocess(t));let r=(s.hooks?s.hooks.provideLexer():e?Se.lex:Se.lexInline)(t,s);s.hooks&&(r=s.hooks.processAllTokens(r)),s.walkTokens&&this.walkTokens(r,s.walkTokens);let a=(s.hooks?s.hooks.provideParser():e?$e.parse:$e.parseInline)(r,s);return s.hooks&&(a=s.hooks.postprocess(a)),a}catch(r){return o(r)}}}onError(e,t){return n=>{if(n.message+=`
|
|
2326
|
+
Please report this to https://github.com/markedjs/marked.`,e){let i="<p>An error occurred:</p><pre>"+ze(n.message+"",!0)+"</pre>";return t?Promise.resolve(i):i}if(t)return Promise.reject(n);throw n}}},xt=new Dm;function q(e,t){return xt.parse(e,t)}q.options=q.setOptions=function(e){return xt.setOptions(e),q.defaults=xt.defaults,ku(q.defaults),q};q.getDefaults=or;q.defaults=_t;q.use=function(...e){return xt.use(...e),q.defaults=xt.defaults,ku(q.defaults),q};q.walkTokens=function(e,t){return xt.walkTokens(e,t)};q.parseInline=xt.parseInline;q.Parser=$e;q.parser=$e.parse;q.Renderer=Ri;q.TextRenderer=hr;q.Lexer=Se;q.lexer=Se.lex;q.Tokenizer=Ii;q.Hooks=vn;q.parse=q;q.options;q.setOptions;q.use;q.walkTokens;q.parseInline;$e.parse;Se.lex;q.setOptions({gfm:!0,breaks:!0,mangle:!1});const Za=["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"],el=["class","href","rel","target","title","start"];let tl=!1;const Bm=14e4,Nm=4e4,Om=200,Ds=5e4,mt=new Map;function Fm(e){const t=mt.get(e);return t===void 0?null:(mt.delete(e),mt.set(e,t),t)}function nl(e,t){if(mt.set(e,t),mt.size<=Om)return;const n=mt.keys().next().value;n&&mt.delete(n)}function Um(){tl||(tl=!0,mo.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(Um(),t.length<=Ds){const r=Fm(t);if(r!==null)return r}const n=Jl(t,Bm),i=n.truncated?`
|
|
2327
2327
|
|
|
2328
|
-
… truncated (${n.total} chars, showing first ${n.text.length}).`:"";if(n.text.length>
|
|
2328
|
+
… truncated (${n.total} chars, showing first ${n.text.length}).`:"";if(n.text.length>Nm){const a=`<pre class="code-block">${Wm(`${n.text}${i}`)}</pre>`,u=mo.sanitize(a,{ALLOWED_TAGS:Za,ALLOWED_ATTR:el});return t.length<=Ds&&nl(t,u),u}const s=q.parse(`${n.text}${i}`),o=mo.sanitize(s,{ALLOWED_TAGS:Za,ALLOWED_ATTR:el});return t.length<=Ds&&nl(t,o),o}function Wm(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}const Km=1500,zm=2e3,Lu="Copy as markdown",qm="Copied",Hm="Copy failed";async function jm(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 li(e,t){e.title=t,e.setAttribute("aria-label",t)}function Vm(e){const t=e.label??Lu;return d`
|
|
2329
2329
|
<button
|
|
2330
2330
|
class="chat-copy-btn"
|
|
2331
2331
|
type="button"
|
|
2332
2332
|
title=${t}
|
|
2333
2333
|
aria-label=${t}
|
|
2334
|
-
@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
|
|
2334
|
+
@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 jm(e.text());if(i.isConnected){if(delete i.dataset.copying,i.removeAttribute("aria-busy"),i.disabled=!1,!s){i.dataset.error="1",li(i,Hm),window.setTimeout(()=>{i.isConnected&&(delete i.dataset.error,li(i,t))},zm);return}i.dataset.copied="1",li(i,qm),window.setTimeout(()=>{i.isConnected&&(delete i.dataset.copied,li(i,t))},Km)}}}
|
|
2335
2335
|
>
|
|
2336
2336
|
<span class="chat-copy-btn__icon" aria-hidden="true">
|
|
2337
2337
|
<span class="chat-copy-btn__icon-copy">${L.copy}</span>
|
|
2338
2338
|
<span class="chat-copy-btn__icon-check">${L.check}</span>
|
|
2339
2339
|
</span>
|
|
2340
2340
|
</button>
|
|
2341
|
-
`}function
|
|
2341
|
+
`}function Gm(e){return Vm({text:()=>e,label:Lu})}function Qm(e){const t=e,n=Ym(t.content),i=[];for(const s of n){const o=String(s.type??"").toLowerCase();(["toolcall","tool_call","tooluse","tool_use"].includes(o)||typeof s.name=="string"&&s.arguments!=null)&&i.push({kind:"call",name:s.name??"tool",args:Xm(s.arguments??s.args)})}for(const s of n){const o=String(s.type??"").toLowerCase();if(o!=="toolresult"&&o!=="tool_result")continue;const r=Jm(s),a=typeof s.name=="string"?s.name:"tool";i.push({kind:"result",name:a,text:r})}if(ic(e)&&!i.some(s=>s.kind==="result")){const s=typeof t.toolName=="string"&&t.toolName||typeof t.tool_name=="string"&&t.tool_name||"tool",o=Zl(e)??void 0;i.push({kind:"result",name:s,text:o})}return i}function Ym(e){return Array.isArray(e)?e.filter(Boolean):[]}function Xm(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 Jm(e){if(typeof e.text=="string")return e.text;if(typeof e.content=="string")return e.content}const Bs=40,Ns=new Map;async function Zm(e){const t=Ns.get(e);if(t)return t;try{const n=new(window.AudioContext||window.webkitAudioContext),s=await(await fetch(e)).arrayBuffer(),r=(await n.decodeAudioData(s)).getChannelData(0),a=Math.floor(r.length/Bs),u=[];for(let p=0;p<Bs;p++){let f=0;const b=p*a,h=Math.min(b+a,r.length);for(let v=b;v<h;v++){const S=Math.abs(r[v]);S>f&&(f=S)}u.push(f)}const c=Math.max(...u,.01),l=u.map(p=>Math.max(p/c,.08));return Ns.set(e,l),n.close(),l}catch{const n=Array.from(e).reduce((s,o)=>(s<<5)-s+o.charCodeAt(0)|0,0),i=[];for(let s=0;s<Bs;s++){const o=Math.abs((n*(s+1)*9301+49297)%233280/233280);i.push(.15+o*.85)}return Ns.set(e,i),i}}const Os=[1,1.5,2],Bi=new Map;function ey(e){let t=Bi.get(e);if(t)return t;const n=new Audio;return n.preload="metadata",n.src=e,t={audio:n,playing:!1,currentTime:0,duration:0,speed:1,waveform:[]},Bi.set(e,t),Zm(e).then(i=>{t.waveform=i,Iu(e)}),t}const En="http://www.w3.org/2000/svg";function ty(){const e=document.createElementNS(En,"svg");e.setAttribute("viewBox","0 0 24 24"),e.setAttribute("fill","currentColor");const t=document.createElementNS(En,"polygon");return t.setAttribute("points","6,3 20,12 6,21"),e.appendChild(t),e}function ny(){const e=document.createElementNS(En,"svg");e.setAttribute("viewBox","0 0 24 24"),e.setAttribute("fill","currentColor");const t=document.createElementNS(En,"rect");t.setAttribute("x","5"),t.setAttribute("y","3"),t.setAttribute("width","4"),t.setAttribute("height","18"),t.setAttribute("rx","1");const n=document.createElementNS(En,"rect");return n.setAttribute("x","15"),n.setAttribute("y","3"),n.setAttribute("width","4"),n.setAttribute("height","18"),n.setAttribute("rx","1"),e.append(t,n),e}function Ft(e){return document.querySelector(`.vnp[data-url="${CSS.escape(e)}"]`)}function Iu(e){const t=Ft(e);if(!t)return;const n=Bi.get(e);if(!n||n.waveform.length===0)return;const i=t.querySelector(".vnp__waveform");if(i){if(i.children.length===0){const s=document.createDocumentFragment();for(const o of n.waveform){const r=document.createElement("span");r.className="vnp__bar",r.style.height=`${Math.round(o*100)}%`,s.appendChild(r)}i.appendChild(s)}Cn(t,n)}}function Cn(e,t){const n=t.duration>0?t.currentTime/t.duration:0,i=e.querySelectorAll(".vnp__bar"),s=i.length;i.forEach((r,a)=>{r.classList.toggle("vnp__bar--active",a/s<n)});const o=e.querySelector(".vnp__time");o&&(o.textContent=t.playing||t.currentTime>0?Ni(t.currentTime):Ni(t.duration))}function Fs(e,t){const n=e.querySelector(".vnp__play");if(!n)return;const i=n.querySelector("svg"),s=t?ny():ty();i?n.replaceChild(s,i):n.appendChild(s)}function Ni(e){if(!isFinite(e)||e<0)return"0:00";const t=Math.floor(e/60),n=Math.floor(e%60);return`${t}:${n.toString().padStart(2,"0")}`}const il=new Set;function iy(e){if(il.has(e))return;il.add(e);const t=Bi.get(e);if(!t)return;const{audio:n}=t;n.addEventListener("loadedmetadata",()=>{t.duration=n.duration;const i=Ft(e);i&&Cn(i,t)}),n.addEventListener("timeupdate",()=>{t.currentTime=n.currentTime;const i=Ft(e);i&&Cn(i,t)}),n.addEventListener("ended",()=>{t.playing=!1,n.currentTime=0,t.currentTime=0;const i=Ft(e);i&&(Cn(i,t),Fs(i,!1))}),n.addEventListener("pause",()=>{t.playing=!1;const i=Ft(e);i&&Fs(i,!1)}),n.addEventListener("play",()=>{t.playing=!0;const i=Ft(e);i&&Fs(i,!0)})}function sy(e,t){const n=ey(e);iy(e);const i=a=>{a.stopPropagation(),n.playing?n.audio.pause():n.audio.play()},s=a=>{a.stopPropagation();const u=Os.indexOf(n.speed),c=Os[(u+1)%Os.length];n.speed=c,n.audio.playbackRate=c;const l=a.target.closest(".vnp__speed");l&&(l.textContent=`${c}×`)},o=a=>{a.stopPropagation();const u=a.target.closest(".vnp__waveform");if(!u)return;const c=u.getBoundingClientRect(),l=Math.max(0,Math.min(1,(a.clientX-c.left)/c.width));if(n.duration>0){n.audio.currentTime=l*n.duration,n.currentTime=n.audio.currentTime;const p=u.closest(".vnp");p&&Cn(p,n)}},r=n.playing||n.currentTime>0?Ni(n.currentTime):Ni(n.duration);return queueMicrotask(()=>Iu(e)),d`
|
|
2342
|
+
<div class="vnp" data-url=${e} @click=${a=>a.stopPropagation()}>
|
|
2343
|
+
<button class="vnp__play" @click=${i} aria-label=${n.playing?"Pause":"Play"}>
|
|
2344
|
+
${n.playing?ry():oy()}
|
|
2345
|
+
</button>
|
|
2346
|
+
|
|
2347
|
+
<div class="vnp__body">
|
|
2348
|
+
<div class="vnp__waveform" @click=${o}></div>
|
|
2349
|
+
|
|
2350
|
+
<div class="vnp__meta">
|
|
2351
|
+
<span class="vnp__time">${r}</span>
|
|
2352
|
+
<button class="vnp__speed" @click=${s}>${n.speed}×</button>
|
|
2353
|
+
${t?d`<a class="vnp__name" href=${e} target="_blank" rel="noreferrer noopener">${t}</a>`:k}
|
|
2354
|
+
</div>
|
|
2355
|
+
</div>
|
|
2356
|
+
</div>
|
|
2357
|
+
`}function oy(){return d`<svg viewBox="0 0 24 24" fill="currentColor"><polygon points="6,3 20,12 6,21" /></svg>`}function ry(){return d`<svg viewBox="0 0 24 24" fill="currentColor"><rect x="5" y="3" width="4" height="18" rx="1"/><rect x="15" y="3" width="4" height="18" rx="1"/></svg>`}function ay(e){var s;const n=e.content,i=[];if(Array.isArray(n))for(const o of n){if(typeof o!="object"||o===null)continue;const r=o;if(r.type==="image")if(((s=r.source)==null?void 0:s.type)==="base64"){const a=r.source,u=a.data,c=a.media_type||"image/png",l=u.startsWith("data:")?u:`data:${c};base64,${u}`;i.push({url:l})}else if(typeof r.data=="string"&&r.data){const a=r.data,u=r.mimeType||r.media_type||"image/png",c=a.startsWith("data:")?a:`data:${u};base64,${a}`;i.push({url:c})}else typeof r.url=="string"&&i.push({url:r.url});else if(r.type==="image_url"){const a=r.image_url;typeof(a==null?void 0:a.url)=="string"&&i.push({url:a.url})}}return i}function ly(e){const n=e.content,i=[];if(Array.isArray(n))for(const s of n){if(typeof s!="object"||s===null)continue;const o=s;o.type==="file"&&typeof o.url=="string"&&typeof o.name=="string"&&i.push({url:o.url,name:o.name,mimeType:o.mimeType??"application/octet-stream"})}return i}function cy(e){return e==="application/pdf"?"📄":e.startsWith("audio/")?"🎵":"📎"}function uy(e){return d`
|
|
2342
2358
|
<div class="chat-group assistant">
|
|
2343
2359
|
<div class="chat-group-messages">
|
|
2344
2360
|
<div class="chat-bubble chat-reading-indicator" aria-hidden="true">
|
|
@@ -2348,30 +2364,30 @@ Please report this to https://github.com/markedjs/marked.`,e){let i="<p>An error
|
|
|
2348
2364
|
</div>
|
|
2349
2365
|
</div>
|
|
2350
2366
|
</div>
|
|
2351
|
-
`}function
|
|
2367
|
+
`}function dy(e){return d`
|
|
2352
2368
|
<div class="chat-group assistant">
|
|
2353
2369
|
<div class="chat-group-messages">
|
|
2354
2370
|
<div class="chat-interim fade-in">
|
|
2355
|
-
${
|
|
2371
|
+
${Pi(Di(e))}
|
|
2356
2372
|
</div>
|
|
2357
2373
|
</div>
|
|
2358
2374
|
</div>
|
|
2359
|
-
`}function
|
|
2375
|
+
`}function py(e,t,n,i){return d`
|
|
2360
2376
|
<div class="chat-group assistant">
|
|
2361
2377
|
<div class="chat-group-messages">
|
|
2362
|
-
${
|
|
2378
|
+
${Ru({role:"assistant",content:[{type:"text",text:e}],timestamp:t},{isStreaming:!1,showReasoning:!1})}
|
|
2363
2379
|
</div>
|
|
2364
2380
|
</div>
|
|
2365
|
-
`}function
|
|
2381
|
+
`}function hy(e,t){const n=nc(e.role),i=n==="user"?"user":n==="assistant"?"assistant":"other",s=new Date(e.timestamp).toLocaleString(void 0,{dateStyle:"medium",timeStyle:"medium"});return d`
|
|
2366
2382
|
<div class="chat-group ${i}">
|
|
2367
2383
|
<div class="chat-group-messages">
|
|
2368
|
-
${e.messages.map((o,r)=>
|
|
2384
|
+
${e.messages.map((o,r)=>Ru(o.message,{isStreaming:e.isStreaming&&r===e.messages.length-1,showReasoning:t.showReasoning}))}
|
|
2369
2385
|
<div class="chat-group-footer">
|
|
2370
2386
|
<span class="chat-group-timestamp">${s}</span>
|
|
2371
2387
|
</div>
|
|
2372
2388
|
</div>
|
|
2373
2389
|
</div>
|
|
2374
|
-
`}function
|
|
2390
|
+
`}function fy(e){return e.length===0?k:d`
|
|
2375
2391
|
<div class="chat-message-images">
|
|
2376
2392
|
${e.map(t=>d`
|
|
2377
2393
|
<img
|
|
@@ -2382,12 +2398,12 @@ Please report this to https://github.com/markedjs/marked.`,e){let i="<p>An error
|
|
|
2382
2398
|
/>
|
|
2383
2399
|
`)}
|
|
2384
2400
|
</div>
|
|
2385
|
-
`}function
|
|
2401
|
+
`}function gy(e){return e.length===0?k:d`
|
|
2386
2402
|
<div class="chat-message-files">
|
|
2387
|
-
${e.map(t=>t.mimeType==="application/pdf"?
|
|
2403
|
+
${e.map(t=>t.mimeType==="application/pdf"?yy(t):t.mimeType.startsWith("audio/")?sy(t.url,t.name):vy(t))}
|
|
2388
2404
|
</div>
|
|
2389
|
-
`}function
|
|
2390
|
-
<div class="chat-pdf-preview" @click=${()=>
|
|
2405
|
+
`}function my(e,t){const n=document.createElement("div");n.className="chat-pdf-modal-overlay";const i=document.createElement("div");i.className="chat-pdf-modal";const s=document.createElement("div");s.className="chat-pdf-modal__header";const o=document.createElement("span");o.className="chat-pdf-modal__title",o.textContent=t;const r=document.createElement("a");r.className="chat-pdf-modal__open",r.href=e,r.target="_blank",r.rel="noreferrer noopener",r.textContent="Open in new tab";const a=document.createElement("button");a.className="chat-pdf-modal__close",a.setAttribute("aria-label","Close");const u=document.createElementNS("http://www.w3.org/2000/svg","svg");u.setAttribute("viewBox","0 0 24 24");const c=document.createElementNS("http://www.w3.org/2000/svg","line");c.setAttribute("x1","18"),c.setAttribute("y1","6"),c.setAttribute("x2","6"),c.setAttribute("y2","18");const l=document.createElementNS("http://www.w3.org/2000/svg","line");l.setAttribute("x1","6"),l.setAttribute("y1","6"),l.setAttribute("x2","18"),l.setAttribute("y2","18"),u.append(c,l),a.appendChild(u),s.append(o,r,a);const p=document.createElement("iframe");p.className="chat-pdf-modal__frame",p.src=e,p.title=t,i.append(s,p),n.appendChild(i),n.addEventListener("click",f=>{f.target===n&&n.remove()}),a.addEventListener("click",()=>n.remove()),document.body.appendChild(n)}function yy(e){return d`
|
|
2406
|
+
<div class="chat-pdf-preview" @click=${()=>my(e.url,e.name)}>
|
|
2391
2407
|
<iframe
|
|
2392
2408
|
src=${e.url}
|
|
2393
2409
|
class="chat-pdf-preview__frame"
|
|
@@ -2401,49 +2417,39 @@ Please report this to https://github.com/markedjs/marked.`,e){let i="<p>An error
|
|
|
2401
2417
|
@click=${t=>t.stopPropagation()}
|
|
2402
2418
|
>${e.name}</a>
|
|
2403
2419
|
</div>
|
|
2404
|
-
`}function
|
|
2405
|
-
<div class="chat-audio-player">
|
|
2406
|
-
<audio controls preload="metadata" src=${e.url}></audio>
|
|
2407
|
-
<a
|
|
2408
|
-
class="chat-audio-player__name"
|
|
2409
|
-
href=${e.url}
|
|
2410
|
-
target="_blank"
|
|
2411
|
-
rel="noreferrer noopener"
|
|
2412
|
-
>${e.name}</a>
|
|
2413
|
-
</div>
|
|
2414
|
-
`}function Hm(e){return d`
|
|
2420
|
+
`}function vy(e){return d`
|
|
2415
2421
|
<a
|
|
2416
2422
|
class="chat-file-card"
|
|
2417
2423
|
href=${e.url}
|
|
2418
2424
|
target="_blank"
|
|
2419
2425
|
rel="noreferrer noopener"
|
|
2420
2426
|
>
|
|
2421
|
-
<span class="chat-file-card__icon">${
|
|
2427
|
+
<span class="chat-file-card__icon">${cy(e.mimeType)}</span>
|
|
2422
2428
|
<span class="chat-file-card__name">${e.name}</span>
|
|
2423
2429
|
</a>
|
|
2424
|
-
`}function
|
|
2430
|
+
`}function Ru(e,t,n){const i=e,s=typeof i.role=="string"?i.role:"unknown",o=ic(e)||s.toLowerCase()==="toolresult"||s.toLowerCase()==="tool_result"||typeof i.toolCallId=="string"||typeof i.tool_call_id=="string",a=Qm(e).length>0,u=ay(e),c=u.length>0,l=ly(e),p=l.length>0,f=Zl(e),b=t.showReasoning&&s==="assistant"?Ip(e):null,h=f!=null&&f.trim()?f:null,v=b?Dp(b):null,S=h,$=(s==="assistant"||s==="user")&&!!(S!=null&&S.trim()),A=["chat-bubble",$?"has-copy":"",t.isStreaming?"streaming":"","fade-in"].filter(Boolean).join(" ");return!S&&(a||o)||!S&&!c&&!p?k:d`
|
|
2425
2431
|
<div class="${A}">
|
|
2426
|
-
${$?
|
|
2427
|
-
${
|
|
2428
|
-
${
|
|
2429
|
-
${v?d`<div class="chat-thinking">${
|
|
2430
|
-
${S?d`<div class="chat-text">${
|
|
2432
|
+
${$?Gm(S):k}
|
|
2433
|
+
${fy(u)}
|
|
2434
|
+
${gy(l)}
|
|
2435
|
+
${v?d`<div class="chat-thinking">${Pi(Di(v))}</div>`:k}
|
|
2436
|
+
${S?d`<div class="chat-text">${Pi(Di(S))}</div>`:k}
|
|
2431
2437
|
</div>
|
|
2432
|
-
`}const B={active:!1,mode:"tap",startTime:0,elapsed:0,mediaRecorder:null,audioChunks:[],stream:null,timerId:null,startX:0,cancelled:!1};let z=null,
|
|
2438
|
+
`}const B={active:!1,mode:"tap",startTime:0,elapsed:0,mediaRecorder:null,audioChunks:[],stream:null,timerId:null,startX:0,cancelled:!1};let z=null,vt=null,bt=!1;function sl(e){const t=Math.floor(e/60),n=e%60;return`${t}:${n.toString().padStart(2,"0")}`}function ht(){if(B.timerId&&(clearInterval(B.timerId),B.timerId=null),B.stream){for(const e of B.stream.getTracks())e.stop();B.stream=null}vt&&(clearTimeout(vt),vt=null),Oi(),B.mediaRecorder=null,B.audioChunks=[],B.active=!1,B.cancelled=!1,bt=!1}async function Du(e){var t;try{if(!((t=navigator.mediaDevices)!=null&&t.getUserMedia))return console.warn("[voice] getUserMedia unavailable (requires secure context)"),ht(),!1;const n=await navigator.mediaDevices.getUserMedia({audio:!0});B.stream=n;const i=MediaRecorder.isTypeSupported("audio/webm;codecs=opus")?"audio/webm;codecs=opus":MediaRecorder.isTypeSupported("audio/mp4")?"audio/mp4":"",s=i?new MediaRecorder(n,{mimeType:i}):new MediaRecorder(n);return B.mediaRecorder=s,B.audioChunks=[],B.mode=e,B.startTime=Date.now(),B.elapsed=0,B.active=!0,B.cancelled=!1,s.ondataavailable=o=>{o.data.size>0&&B.audioChunks.push(o.data)},s.onstop=()=>{if(B.cancelled){ht(),z==null||z.onRequestRender();return}const o=new Blob(B.audioChunks,{type:s.mimeType});if(o.size===0){ht(),z==null||z.onRequestRender();return}const r=new FileReader;r.onload=()=>{const a=r.result,u=s.mimeType.includes("mp4")?"m4a":"webm",c={id:Gi(),dataUrl:a,mimeType:s.mimeType||"audio/webm",fileName:`voice-note-${Date.now()}.${u}`};ht(),z==null||z.onSend(c),z==null||z.onRequestRender()},r.onerror=()=>{ht(),z==null||z.onRequestRender()},r.readAsDataURL(o)},s.start(250),B.timerId=setInterval(()=>{B.elapsed=Math.floor((Date.now()-B.startTime)/1e3),z==null||z.onRequestRender()},1e3),z==null||z.onRequestRender(),!0}catch(n){return console.warn("[voice] startRecording failed:",n),ht(),!1}}function Bu(){!B.active||!B.mediaRecorder||(B.cancelled=!1,B.mediaRecorder.state==="recording"&&B.mediaRecorder.stop())}function Nu(){!B.active||!B.mediaRecorder||(B.cancelled=!0,B.mediaRecorder.state==="recording"?B.mediaRecorder.stop():(ht(),z==null||z.onRequestRender()))}function by(){document.addEventListener("pointerup",Ou)}function Oi(){document.removeEventListener("pointerup",Ou)}function Ou(e){if(!bt&&!B.active){Oi();return}if(bt=!1,Oi(),vt&&(clearTimeout(vt),vt=null,!B.active)){Du("tap");return}B.active&&B.mode==="hold"&&(B.cancelled?Nu():Bu()),e.preventDefault()}function wy(e){B.active||(bt=!0,B.startX=e.clientX,by(),vt=setTimeout(async()=>{if(!bt)return;await Du("hold")||(bt=!1,Oi())},300))}function ol(e){if(!B.active||B.mode!=="hold"||!bt)return;const t=B.startX-e.clientX;t>80?(B.cancelled=!0,z==null||z.onRequestRender()):B.cancelled&&t<=60&&(B.cancelled=!1,z==null||z.onRequestRender())}function ky(){return B.active}function Sy(e){z=e}function $y(e){return d`
|
|
2433
2439
|
<button
|
|
2434
2440
|
class="btn btn--icon chat-compose__mic"
|
|
2435
2441
|
?disabled=${!e}
|
|
2436
|
-
@pointerdown=${
|
|
2442
|
+
@pointerdown=${wy}
|
|
2437
2443
|
aria-label="Record voice note"
|
|
2438
2444
|
title="Tap to record, hold to send on release"
|
|
2439
2445
|
>
|
|
2440
2446
|
${L.mic}
|
|
2441
2447
|
</button>
|
|
2442
|
-
`}function
|
|
2443
|
-
<div class="chat-voice-recording" @pointermove=${
|
|
2448
|
+
`}function Ay(){return B.active?B.mode==="tap"?d`
|
|
2449
|
+
<div class="chat-voice-recording" @pointermove=${ol}>
|
|
2444
2450
|
<button
|
|
2445
2451
|
class="btn btn--icon chat-voice-recording__trash"
|
|
2446
|
-
@click=${
|
|
2452
|
+
@click=${Nu}
|
|
2447
2453
|
aria-label="Cancel recording"
|
|
2448
2454
|
title="Discard"
|
|
2449
2455
|
>
|
|
@@ -2451,11 +2457,11 @@ Please report this to https://github.com/markedjs/marked.`,e){let i="<p>An error
|
|
|
2451
2457
|
</button>
|
|
2452
2458
|
<div class="chat-voice-recording__indicator">
|
|
2453
2459
|
<span class="chat-voice-recording__dot"></span>
|
|
2454
|
-
<span class="chat-voice-recording__timer">${
|
|
2460
|
+
<span class="chat-voice-recording__timer">${sl(B.elapsed)}</span>
|
|
2455
2461
|
</div>
|
|
2456
2462
|
<button
|
|
2457
2463
|
class="btn btn--icon chat-voice-recording__send primary"
|
|
2458
|
-
@click=${
|
|
2464
|
+
@click=${Bu}
|
|
2459
2465
|
aria-label="Send voice note"
|
|
2460
2466
|
title="Send"
|
|
2461
2467
|
>
|
|
@@ -2463,16 +2469,16 @@ Please report this to https://github.com/markedjs/marked.`,e){let i="<p>An error
|
|
|
2463
2469
|
</button>
|
|
2464
2470
|
</div>
|
|
2465
2471
|
`:d`
|
|
2466
|
-
<div class="chat-voice-recording hold" @pointermove=${
|
|
2472
|
+
<div class="chat-voice-recording hold" @pointermove=${ol}>
|
|
2467
2473
|
<div class="chat-voice-recording__indicator">
|
|
2468
2474
|
<span class="chat-voice-recording__dot"></span>
|
|
2469
|
-
<span class="chat-voice-recording__timer">${
|
|
2475
|
+
<span class="chat-voice-recording__timer">${sl(B.elapsed)}</span>
|
|
2470
2476
|
<span class="chat-voice-recording__slide ${B.cancelled?"cancelled":""}">
|
|
2471
2477
|
${B.cancelled?"Release to cancel":"← Slide to cancel"}
|
|
2472
2478
|
</span>
|
|
2473
2479
|
</div>
|
|
2474
2480
|
</div>
|
|
2475
|
-
`:k}function
|
|
2481
|
+
`:k}function xy(e){return d`
|
|
2476
2482
|
<div class="sidebar-panel">
|
|
2477
2483
|
<div class="sidebar-header">
|
|
2478
2484
|
<div class="sidebar-title">Tool Output</div>
|
|
@@ -2486,10 +2492,10 @@ Please report this to https://github.com/markedjs/marked.`,e){let i="<p>An error
|
|
|
2486
2492
|
<button @click=${e.onViewRawText} class="btn" style="margin-top: 12px;">
|
|
2487
2493
|
View Raw Text
|
|
2488
2494
|
</button>
|
|
2489
|
-
`:e.content?d`<div class="sidebar-markdown">${
|
|
2495
|
+
`:e.content?d`<div class="sidebar-markdown">${Pi(Di(e.content))}</div>`:d`<div class="muted">No content available</div>`}
|
|
2490
2496
|
</div>
|
|
2491
2497
|
</div>
|
|
2492
|
-
`}var
|
|
2498
|
+
`}var Ey=Object.defineProperty,Cy=Object.getOwnPropertyDescriptor,ts=(e,t,n,i)=>{for(var s=i>1?void 0:i?Cy(t,n):t,o=e.length-1,r;o>=0;o--)(r=e[o])&&(s=(i?r(t,n,s):r(s))||s);return i&&s&&Ey(t,n,s),s};let jt=class extends Wt{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 o=this.startRatio+s;o=Math.max(this.minRatio,Math.min(this.maxRatio,o)),this.dispatchEvent(new CustomEvent("resize",{detail:{splitRatio:o},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 d``}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)}};jt.styles=qd`
|
|
2493
2499
|
:host {
|
|
2494
2500
|
width: 4px;
|
|
2495
2501
|
cursor: col-resize;
|
|
@@ -2515,21 +2521,21 @@ Please report this to https://github.com/markedjs/marked.`,e){let i="<p>An error
|
|
|
2515
2521
|
:host(.dragging) {
|
|
2516
2522
|
background: var(--accent, #007bff);
|
|
2517
2523
|
}
|
|
2518
|
-
`;ji([Ni({type:Number})],zt.prototype,"splitRatio",2);ji([Ni({type:Number})],zt.prototype,"minRatio",2);ji([Ni({type:Number})],zt.prototype,"maxRatio",2);zt=ji([Cl("resizable-divider")],zt);function ni(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 ty=1,ny=1,Tt="emoji",qt="keyvalue",Zo="favorites",iy="tokens",ku="tokens",sy="unicode",Su="count",oy="group",ry="order",$u="group-order",oo="eTag",Mi="url",za="skinTone",Xt="readonly",er="readwrite",Au="skinUnicodes",ay="skinUnicodes",ly="https://cdn.jsdelivr.net/npm/emoji-picker-element-data@^1/en/emojibase/data.json",cy="en";function uy(e,t){const n=new Set,i=[];for(const s of e){const o=t(s);n.has(o)||(n.add(o),i.push(s))}return i}function qa(e){return uy(e,t=>t.unicode)}function dy(e){function t(n,i,s){const o=i?e.createObjectStore(n,{keyPath:i}):e.createObjectStore(n);if(s)for(const[r,[a,u]]of Object.entries(s))o.createIndex(r,a,{multiEntry:u});return o}t(qt),t(Tt,sy,{[ku]:[iy,!0],[$u]:[[oy,ry]],[Au]:[ay,!0]}),t(Zo,void 0,{[Su]:[""]})}const ro={},ui={},Pi={};function xu(e,t,n){n.onerror=()=>t(n.error),n.onblocked=()=>t(new Error("IDB blocked")),n.onsuccess=()=>e(n.result)}async function py(e){const t=await new Promise((n,i)=>{const s=indexedDB.open(e,ty);ro[e]=s,s.onupgradeneeded=o=>{o.oldVersion<ny&&dy(s.result)},xu(n,i,s)});return t.onclose=()=>tr(e),t}function hy(e){return ui[e]||(ui[e]=py(e)),ui[e]}function Ge(e,t,n,i){return new Promise((s,o)=>{const r=e.transaction(t,n,{durability:"relaxed"}),a=typeof t=="string"?r.objectStore(t):t.map(c=>r.objectStore(c));let u;i(a,r,c=>{u=c}),r.oncomplete=()=>s(u),r.onerror=()=>o(r.error)})}function tr(e){const t=ro[e],n=t&&t.result;if(n){n.close();const i=Pi[e];if(i)for(const s of i)s()}delete ro[e],delete ui[e],delete Pi[e]}function fy(e){return new Promise((t,n)=>{tr(e);const i=indexedDB.deleteDatabase(e);xu(t,n,i)})}function gy(e,t){let n=Pi[e];n||(n=Pi[e]=[]),n.push(t)}const my=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 Ut(e){return e.split(/[\s_]+/).map(t=>!t.match(/\w/)||my.has(t)?t.toLowerCase():t.replace(/[)(:,]/g,"").replace(/’/g,"'").toLowerCase()).filter(Boolean)}const yy=2;function Eu(e){return e.filter(Boolean).map(t=>t.toLowerCase()).filter(t=>t.length>=yy)}function vy(e){return e.map(({annotation:n,emoticon:i,group:s,order:o,shortcodes:r,skins:a,tags:u,emoji:c,version:l})=>{const p=[...new Set(Eu([...(r||[]).map(Ut).flat(),...(u||[]).map(Ut).flat(),...Ut(n),i]))].sort(),f={annotation:n,group:s,order:o,tags:u,tokens:p,unicode:c,version:l};if(i&&(f.emoticon=i),r&&(f.shortcodes=r),a){f.skinTones=[],f.skinUnicodes=[],f.skinVersions=[];for(const{tone:b,emoji:h,version:v}of a)f.skinTones.push(b),f.skinUnicodes.push(h),f.skinVersions.push(v)}return f})}function Cu(e,t,n,i){e[t](n).onsuccess=s=>i&&i(s.target.result)}function At(e,t,n){Cu(e,"get",t,n)}function Tu(e,t,n){Cu(e,"getAll",t,n)}function nr(e){e.commit&&e.commit()}function by(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 _u(e,t){const n=by(e,s=>s.length),i=[];for(const s of n)e.some(o=>o.findIndex(r=>t(r)===t(s))===-1)||i.push(s);return i}async function wy(e){return!await ir(e,qt,Mi)}async function ky(e,t,n){const[i,s]=await Promise.all([oo,Mi].map(o=>ir(e,qt,o)));return i===n&&s===t}async function Sy(e,t){return Ge(e,Tt,Xt,(i,s,o)=>{let r;const a=()=>{i.getAll(r&&IDBKeyRange.lowerBound(r,!0),50).onsuccess=u=>{const c=u.target.result;for(const l of c)if(r=l.unicode,t(l))return o(l);if(c.length<50)return o();a()}};a()})}async function Mu(e,t,n,i){{const s=vy(t);await Ge(e,[Tt,qt],er,([o,r],a)=>{let u,c,l=0;function p(){++l===2&&f()}function f(){if(!(u===i&&c===n)){o.clear();for(const b of s)o.put(b);r.put(i,oo),r.put(n,Mi),nr(a)}}At(r,oo,b=>{u=b,p()}),At(r,Mi,b=>{c=b,p()})})}}async function $y(e,t){return Ge(e,Tt,Xt,(n,i,s)=>{const o=IDBKeyRange.bound([t,0],[t+1,0],!1,!0);Tu(n.index($u),o,s)})}async function Pu(e,t){const n=Eu(Ut(t));return n.length?Ge(e,Tt,Xt,(i,s,o)=>{const r=[],a=()=>{r.length===n.length&&u()},u=()=>{const c=_u(r,l=>l.unicode);o(c.sort((l,p)=>l.order<p.order?-1:1))};for(let c=0;c<n.length;c++){const l=n[c],p=c===n.length-1?IDBKeyRange.bound(l,l+"",!1,!0):IDBKeyRange.only(l);Tu(i.index(ku),p,f=>{r.push(f),a()})}}):[]}async function Ay(e,t){const n=await Pu(e,t);return n.length?n.filter(i=>(i.shortcodes||[]).map(o=>o.toLowerCase()).includes(t.toLowerCase()))[0]||null:await Sy(e,s=>(s.shortcodes||[]).includes(t.toLowerCase()))||null}async function xy(e,t){return Ge(e,Tt,Xt,(n,i,s)=>At(n,t,o=>{if(o)return s(o);At(n.index(Au),t,r=>s(r||null))}))}function ir(e,t,n){return Ge(e,t,Xt,(i,s,o)=>At(i,n,o))}function Ey(e,t,n,i){return Ge(e,t,er,(s,o)=>{s.put(i,n),nr(o)})}function Cy(e,t){return Ge(e,Zo,er,(n,i)=>At(n,t,s=>{n.put((s||0)+1,t),nr(i)}))}function Ty(e,t,n){return n===0?[]:Ge(e,[Zo,Tt],Xt,([i,s],o,r)=>{const a=[];i.index(Su).openCursor(void 0,"prev").onsuccess=u=>{const c=u.target.result;if(!c)return r(a);function l(b){if(a.push(b),a.length===n)return r(a);c.continue()}const p=c.primaryKey,f=t.byName(p);if(f)return l(f);At(s,p,b=>{if(b)return l(b);c.continue()})}})}const ii="";function _y(e,t){const n=new Map;for(const s of e){const o=t(s);for(const r of o){let a=n;for(let c=0;c<r.length;c++){const l=r.charAt(c);let p=a.get(l);p||(p=new Map,a.set(l,p)),a=p}let u=a.get(ii);u||(u=[],a.set(ii,u)),u.push(s)}}return(s,o)=>{let r=n;for(let c=0;c<s.length;c++){const l=s.charAt(c),p=r.get(l);if(p)r=p;else return[]}if(o)return r.get(ii)||[];const a=[],u=[r];for(;u.length;){const l=[...u.shift().entries()].sort((p,f)=>p[0]<f[0]?-1:1);for(const[p,f]of l)p===ii?a.push(...f):u.push(f)}return a}}const My=["name","url"];function Py(e){const t=e&&Array.isArray(e),n=t&&e.length&&(!e[0]||My.some(i=>!(i in e[0])));if(!t||n)throw new Error("Custom emojis are in the wrong format")}function Ha(e){Py(e);const t=(f,b)=>f.name.toLowerCase()<b.name.toLowerCase()?-1:1,n=e.sort(t),s=_y(e,f=>{const b=new Set;if(f.shortcodes)for(const h of f.shortcodes)for(const v of Ut(h))b.add(v);return b}),o=f=>s(f,!0),r=f=>s(f,!1),a=f=>{const b=Ut(f),h=b.map((v,S)=>(S<b.length-1?o:r)(v));return _u(h,v=>v.name).sort(t)},u=new Map,c=new Map;for(const f of e){c.set(f.name.toLowerCase(),f);for(const b of f.shortcodes||[])u.set(b.toLowerCase(),f)}return{all:n,search:a,byShortcode:f=>u.get(f.toLowerCase()),byName:f=>c.get(f.toLowerCase())}}const Ly=typeof wrappedJSObject<"u";function hn(e){if(!e)return e;if(Ly&&(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 Lu(e){e||console.warn("emoji-picker-element is more efficient if the dataSource server exposes an ETag header.")}const Iy=["annotation","emoji","group","order","version"];function Ry(e){if(!e||!Array.isArray(e)||!e[0]||typeof e[0]!="object"||Iy.some(t=>!(t in e[0])))throw new Error("Emoji data is in the wrong format")}function Iu(e,t){if(Math.floor(e.status/100)!==2)throw new Error("Failed to fetch: "+t+": "+e.status)}async function Dy(e){const t=await fetch(e,{method:"HEAD"});Iu(t,e);const n=t.headers.get("etag");return Lu(n),n}async function ao(e){const t=await fetch(e);Iu(t,e);const n=t.headers.get("etag");Lu(n);const i=await t.json();return Ry(i),[n,i]}function By(e){for(var t="",n=new Uint8Array(e),i=n.byteLength,s=-1;++s<i;)t+=String.fromCharCode(n[s]);return t}function Ny(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 Ru(e){const t=JSON.stringify(e);let n=Ny(t);const i=await crypto.subtle.digest("SHA-1",n),s=By(i);return btoa(s)}async function Oy(e,t){let n,i=await Dy(t);if(!i){const s=await ao(t);i=s[0],n=s[1],i||(i=await Ru(n))}await ky(e,t,i)||(n||(n=(await ao(t))[1]),await Mu(e,n,t,i))}async function Fy(e,t){let[n,i]=await ao(t);n||(n=await Ru(i)),await Mu(e,i,t,n)}async function Uy(e,t){try{await Oy(e,t)}catch(n){if(n.name!=="InvalidStateError")throw n}}class Wy{constructor({dataSource:t=ly,locale:n=cy,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=Ha(i),this._clear=this._clear.bind(this),this._ready=this._init()}async _init(){const t=this._db=await hy(this._dbName);gy(this._dbName,this._clear);const n=this.dataSource;await wy(t)?await Fy(t,n):this._lazyUpdate=Uy(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(),qa(await $y(this._db,t)).map(hn)}async getEmojiBySearchQuery(t){ni(t),await this.ready();const n=this._custom.search(t),i=qa(await Pu(this._db,t)).map(hn);return[...n,...i]}async getEmojiByShortcode(t){ni(t),await this.ready();const n=this._custom.byShortcode(t);return n||hn(await Ay(this._db,t))}async getEmojiByUnicodeOrName(t){ni(t),await this.ready();const n=this._custom.byName(t);return n||hn(await xy(this._db,t))}async getPreferredSkinTone(){return await this.ready(),await ir(this._db,qt,za)||0}async setPreferredSkinTone(t){return Cs(t),await this.ready(),Ey(this._db,qt,za,t)}async incrementFavoriteEmojiCount(t){return ni(t),await this.ready(),Cy(this._db,t)}async getTopFavoriteEmoji(t){return Cs(t),await this.ready(),(await Ty(this._db,this._custom,t)).map(hn)}set customEmoji(t){this._custom=Ha(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 tr(this._dbName)}async delete(){await this._shutdown(),await fy(this._dbName)}}const lo=[[-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})),Ts=lo.slice(1),Ky=2,ja=6,Du=typeof requestIdleCallback=="function"?requestIdleCallback:setTimeout;function Va(e){return e.unicode.includes("")}const zy={"":17,"":16,"🫨":15.1,"🫠":14,"🥲":13.1,"🥻":12.1,"🥰":11,"🤩":5,"👱♀️":4,"🤣":3,"👁️🗨️":2,"😀":1,"😐️":.7,"😃":.6},qy=1e3,Hy="🖐️",jy=8,Vy=["😊","😒","❤️","👍️","😍","😂","😭","☺️","😔","😩","😏","💕","🙌","😘"],Bu='"Twemoji Mozilla","Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji","EmojiOne Color","Android Emoji",sans-serif',Gy=(e,t)=>e<t?-1:e>t?1:0,Ga=(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 ${Bu}`,i.fillStyle=t,i.scale(.01,.01),i.fillText(e,0,0),i.getImageData(0,0,1,1).data},Qy=(e,t)=>{const n=[...e].join(","),i=[...t].join(",");return n===i&&!n.startsWith("0,0,0,")};function Yy(e){const t=Ga(e,"#000"),n=Ga(e,"#fff");return t&&n&&Qy(t,n)}function Xy(){const e=Object.entries(zy);try{for(const[t,n]of e)if(Yy(t))return n}catch{}return e[0][1]}let _s;const Ms=()=>(_s||(_s=new Promise(e=>Du(()=>e(Xy())))),_s),co=new Map,Jy="️",Zy="\uD83C",ev="",tv=127995,nv=57339;function iv(e,t){if(t===0)return e;const n=e.indexOf(ev);return n!==-1?e.substring(0,n)+String.fromCodePoint(tv+t-1)+e.substring(n):(e.endsWith(Jy)&&(e=e.substring(0,e.length-1)),e+Zy+String.fromCodePoint(nv+t-1))}function _e(e){e.preventDefault(),e.stopPropagation()}function Ps(e,t,n){return t+=e?-1:1,t<0?t=n.length-1:t>=n.length&&(t=0),t}function Nu(e,t){const n=new Set,i=[];for(const s of e){const o=t(s);n.has(o)||(n.add(o),i.push(s))}return i}function sv(e,t){const n=i=>{const s={};for(const o of i)typeof o.tone=="number"&&o.version<=t&&(s[o.tone]=o.unicode);return s};return e.map(({unicode:i,skins:s,shortcodes:o,url:r,name:a,category:u,annotation:c})=>({unicode:i,name:a,shortcodes:o,url:r,category:u,annotation:c,id:i||a,skins:s&&n(s)}))}const di=requestAnimationFrame;let ov=typeof ResizeObserver=="function";function rv(e,t,n){let i;ov?(i=new ResizeObserver(n),i.observe(e)):di(n),t.addEventListener("abort",()=>{i&&i.disconnect()})}function Qa(e){{const t=document.createRange();return t.selectNode(e.firstChild),t.getBoundingClientRect().width}}let Ls;function av(e,t,n){let i=!0,s=!1;for(const o of e){const r=n(o);if(!r)continue;const a=Qa(r);a===0&&(s=!0),typeof Ls>"u"&&(Ls=Qa(t));const u=a/1.8<Ls;co.set(o.unicode,u),u||(i=!1)}return s&&console.warn(`Emoji support detection failed - emoji character is 0 width.
|
|
2524
|
+
`;ts([ji({type:Number})],jt.prototype,"splitRatio",2);ts([ji({type:Number})],jt.prototype,"minRatio",2);ts([ji({type:Number})],jt.prototype,"maxRatio",2);jt=ts([ql("resizable-divider")],jt);function ci(e){if(typeof e!="string"||!e)throw new Error("expected a non-empty string, got: "+e)}function Us(e){if(typeof e!="number")throw new Error("expected a number, got: "+e)}const Ty=1,_y=1,Mt="emoji",Vt="keyvalue",fr="favorites",My="tokens",Fu="tokens",Py="unicode",Uu="count",Ly="group",Iy="order",Wu="group-order",wo="eTag",Fi="url",rl="skinTone",en="readonly",gr="readwrite",Ku="skinUnicodes",Ry="skinUnicodes",Dy="https://cdn.jsdelivr.net/npm/emoji-picker-element-data@^1/en/emojibase/data.json",By="en";function Ny(e,t){const n=new Set,i=[];for(const s of e){const o=t(s);n.has(o)||(n.add(o),i.push(s))}return i}function al(e){return Ny(e,t=>t.unicode)}function Oy(e){function t(n,i,s){const o=i?e.createObjectStore(n,{keyPath:i}):e.createObjectStore(n);if(s)for(const[r,[a,u]]of Object.entries(s))o.createIndex(r,a,{multiEntry:u});return o}t(Vt),t(Mt,Py,{[Fu]:[My,!0],[Wu]:[[Ly,Iy]],[Ku]:[Ry,!0]}),t(fr,void 0,{[Uu]:[""]})}const ko={},yi={},Ui={};function zu(e,t,n){n.onerror=()=>t(n.error),n.onblocked=()=>t(new Error("IDB blocked")),n.onsuccess=()=>e(n.result)}async function Fy(e){const t=await new Promise((n,i)=>{const s=indexedDB.open(e,Ty);ko[e]=s,s.onupgradeneeded=o=>{o.oldVersion<_y&&Oy(s.result)},zu(n,i,s)});return t.onclose=()=>mr(e),t}function Uy(e){return yi[e]||(yi[e]=Fy(e)),yi[e]}function Qe(e,t,n,i){return new Promise((s,o)=>{const r=e.transaction(t,n,{durability:"relaxed"}),a=typeof t=="string"?r.objectStore(t):t.map(c=>r.objectStore(c));let u;i(a,r,c=>{u=c}),r.oncomplete=()=>s(u),r.onerror=()=>o(r.error)})}function mr(e){const t=ko[e],n=t&&t.result;if(n){n.close();const i=Ui[e];if(i)for(const s of i)s()}delete ko[e],delete yi[e],delete Ui[e]}function Wy(e){return new Promise((t,n)=>{mr(e);const i=indexedDB.deleteDatabase(e);zu(t,n,i)})}function Ky(e,t){let n=Ui[e];n||(n=Ui[e]=[]),n.push(t)}const zy=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 zt(e){return e.split(/[\s_]+/).map(t=>!t.match(/\w/)||zy.has(t)?t.toLowerCase():t.replace(/[)(:,]/g,"").replace(/’/g,"'").toLowerCase()).filter(Boolean)}const qy=2;function qu(e){return e.filter(Boolean).map(t=>t.toLowerCase()).filter(t=>t.length>=qy)}function Hy(e){return e.map(({annotation:n,emoticon:i,group:s,order:o,shortcodes:r,skins:a,tags:u,emoji:c,version:l})=>{const p=[...new Set(qu([...(r||[]).map(zt).flat(),...(u||[]).map(zt).flat(),...zt(n),i]))].sort(),f={annotation:n,group:s,order:o,tags:u,tokens:p,unicode:c,version:l};if(i&&(f.emoticon=i),r&&(f.shortcodes=r),a){f.skinTones=[],f.skinUnicodes=[],f.skinVersions=[];for(const{tone:b,emoji:h,version:v}of a)f.skinTones.push(b),f.skinUnicodes.push(h),f.skinVersions.push(v)}return f})}function Hu(e,t,n,i){e[t](n).onsuccess=s=>i&&i(s.target.result)}function Et(e,t,n){Hu(e,"get",t,n)}function ju(e,t,n){Hu(e,"getAll",t,n)}function yr(e){e.commit&&e.commit()}function jy(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 Vu(e,t){const n=jy(e,s=>s.length),i=[];for(const s of n)e.some(o=>o.findIndex(r=>t(r)===t(s))===-1)||i.push(s);return i}async function Vy(e){return!await vr(e,Vt,Fi)}async function Gy(e,t,n){const[i,s]=await Promise.all([wo,Fi].map(o=>vr(e,Vt,o)));return i===n&&s===t}async function Qy(e,t){return Qe(e,Mt,en,(i,s,o)=>{let r;const a=()=>{i.getAll(r&&IDBKeyRange.lowerBound(r,!0),50).onsuccess=u=>{const c=u.target.result;for(const l of c)if(r=l.unicode,t(l))return o(l);if(c.length<50)return o();a()}};a()})}async function Gu(e,t,n,i){{const s=Hy(t);await Qe(e,[Mt,Vt],gr,([o,r],a)=>{let u,c,l=0;function p(){++l===2&&f()}function f(){if(!(u===i&&c===n)){o.clear();for(const b of s)o.put(b);r.put(i,wo),r.put(n,Fi),yr(a)}}Et(r,wo,b=>{u=b,p()}),Et(r,Fi,b=>{c=b,p()})})}}async function Yy(e,t){return Qe(e,Mt,en,(n,i,s)=>{const o=IDBKeyRange.bound([t,0],[t+1,0],!1,!0);ju(n.index(Wu),o,s)})}async function Qu(e,t){const n=qu(zt(t));return n.length?Qe(e,Mt,en,(i,s,o)=>{const r=[],a=()=>{r.length===n.length&&u()},u=()=>{const c=Vu(r,l=>l.unicode);o(c.sort((l,p)=>l.order<p.order?-1:1))};for(let c=0;c<n.length;c++){const l=n[c],p=c===n.length-1?IDBKeyRange.bound(l,l+"",!1,!0):IDBKeyRange.only(l);ju(i.index(Fu),p,f=>{r.push(f),a()})}}):[]}async function Xy(e,t){const n=await Qu(e,t);return n.length?n.filter(i=>(i.shortcodes||[]).map(o=>o.toLowerCase()).includes(t.toLowerCase()))[0]||null:await Qy(e,s=>(s.shortcodes||[]).includes(t.toLowerCase()))||null}async function Jy(e,t){return Qe(e,Mt,en,(n,i,s)=>Et(n,t,o=>{if(o)return s(o);Et(n.index(Ku),t,r=>s(r||null))}))}function vr(e,t,n){return Qe(e,t,en,(i,s,o)=>Et(i,n,o))}function Zy(e,t,n,i){return Qe(e,t,gr,(s,o)=>{s.put(i,n),yr(o)})}function ev(e,t){return Qe(e,fr,gr,(n,i)=>Et(n,t,s=>{n.put((s||0)+1,t),yr(i)}))}function tv(e,t,n){return n===0?[]:Qe(e,[fr,Mt],en,([i,s],o,r)=>{const a=[];i.index(Uu).openCursor(void 0,"prev").onsuccess=u=>{const c=u.target.result;if(!c)return r(a);function l(b){if(a.push(b),a.length===n)return r(a);c.continue()}const p=c.primaryKey,f=t.byName(p);if(f)return l(f);Et(s,p,b=>{if(b)return l(b);c.continue()})}})}const ui="";function nv(e,t){const n=new Map;for(const s of e){const o=t(s);for(const r of o){let a=n;for(let c=0;c<r.length;c++){const l=r.charAt(c);let p=a.get(l);p||(p=new Map,a.set(l,p)),a=p}let u=a.get(ui);u||(u=[],a.set(ui,u)),u.push(s)}}return(s,o)=>{let r=n;for(let c=0;c<s.length;c++){const l=s.charAt(c),p=r.get(l);if(p)r=p;else return[]}if(o)return r.get(ui)||[];const a=[],u=[r];for(;u.length;){const l=[...u.shift().entries()].sort((p,f)=>p[0]<f[0]?-1:1);for(const[p,f]of l)p===ui?a.push(...f):u.push(f)}return a}}const iv=["name","url"];function sv(e){const t=e&&Array.isArray(e),n=t&&e.length&&(!e[0]||iv.some(i=>!(i in e[0])));if(!t||n)throw new Error("Custom emojis are in the wrong format")}function ll(e){sv(e);const t=(f,b)=>f.name.toLowerCase()<b.name.toLowerCase()?-1:1,n=e.sort(t),s=nv(e,f=>{const b=new Set;if(f.shortcodes)for(const h of f.shortcodes)for(const v of zt(h))b.add(v);return b}),o=f=>s(f,!0),r=f=>s(f,!1),a=f=>{const b=zt(f),h=b.map((v,S)=>(S<b.length-1?o:r)(v));return Vu(h,v=>v.name).sort(t)},u=new Map,c=new Map;for(const f of e){c.set(f.name.toLowerCase(),f);for(const b of f.shortcodes||[])u.set(b.toLowerCase(),f)}return{all:n,search:a,byShortcode:f=>u.get(f.toLowerCase()),byName:f=>c.get(f.toLowerCase())}}const ov=typeof wrappedJSObject<"u";function mn(e){if(!e)return e;if(ov&&(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 Yu(e){e||console.warn("emoji-picker-element is more efficient if the dataSource server exposes an ETag header.")}const rv=["annotation","emoji","group","order","version"];function av(e){if(!e||!Array.isArray(e)||!e[0]||typeof e[0]!="object"||rv.some(t=>!(t in e[0])))throw new Error("Emoji data is in the wrong format")}function Xu(e,t){if(Math.floor(e.status/100)!==2)throw new Error("Failed to fetch: "+t+": "+e.status)}async function lv(e){const t=await fetch(e,{method:"HEAD"});Xu(t,e);const n=t.headers.get("etag");return Yu(n),n}async function So(e){const t=await fetch(e);Xu(t,e);const n=t.headers.get("etag");Yu(n);const i=await t.json();return av(i),[n,i]}function cv(e){for(var t="",n=new Uint8Array(e),i=n.byteLength,s=-1;++s<i;)t+=String.fromCharCode(n[s]);return t}function uv(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 Ju(e){const t=JSON.stringify(e);let n=uv(t);const i=await crypto.subtle.digest("SHA-1",n),s=cv(i);return btoa(s)}async function dv(e,t){let n,i=await lv(t);if(!i){const s=await So(t);i=s[0],n=s[1],i||(i=await Ju(n))}await Gy(e,t,i)||(n||(n=(await So(t))[1]),await Gu(e,n,t,i))}async function pv(e,t){let[n,i]=await So(t);n||(n=await Ju(i)),await Gu(e,i,t,n)}async function hv(e,t){try{await dv(e,t)}catch(n){if(n.name!=="InvalidStateError")throw n}}class fv{constructor({dataSource:t=Dy,locale:n=By,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=ll(i),this._clear=this._clear.bind(this),this._ready=this._init()}async _init(){const t=this._db=await Uy(this._dbName);Ky(this._dbName,this._clear);const n=this.dataSource;await Vy(t)?await pv(t,n):this._lazyUpdate=hv(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 Us(t),await this.ready(),al(await Yy(this._db,t)).map(mn)}async getEmojiBySearchQuery(t){ci(t),await this.ready();const n=this._custom.search(t),i=al(await Qu(this._db,t)).map(mn);return[...n,...i]}async getEmojiByShortcode(t){ci(t),await this.ready();const n=this._custom.byShortcode(t);return n||mn(await Xy(this._db,t))}async getEmojiByUnicodeOrName(t){ci(t),await this.ready();const n=this._custom.byName(t);return n||mn(await Jy(this._db,t))}async getPreferredSkinTone(){return await this.ready(),await vr(this._db,Vt,rl)||0}async setPreferredSkinTone(t){return Us(t),await this.ready(),Zy(this._db,Vt,rl,t)}async incrementFavoriteEmojiCount(t){return ci(t),await this.ready(),ev(this._db,t)}async getTopFavoriteEmoji(t){return Us(t),await this.ready(),(await tv(this._db,this._custom,t)).map(mn)}set customEmoji(t){this._custom=ll(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 mr(this._dbName)}async delete(){await this._shutdown(),await Wy(this._dbName)}}const $o=[[-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})),Ws=$o.slice(1),gv=2,cl=6,Zu=typeof requestIdleCallback=="function"?requestIdleCallback:setTimeout;function ul(e){return e.unicode.includes("")}const mv={"":17,"":16,"🫨":15.1,"🫠":14,"🥲":13.1,"🥻":12.1,"🥰":11,"🤩":5,"👱♀️":4,"🤣":3,"👁️🗨️":2,"😀":1,"😐️":.7,"😃":.6},yv=1e3,vv="🖐️",bv=8,wv=["😊","😒","❤️","👍️","😍","😂","😭","☺️","😔","😩","😏","💕","🙌","😘"],ed='"Twemoji Mozilla","Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji","EmojiOne Color","Android Emoji",sans-serif',kv=(e,t)=>e<t?-1:e>t?1:0,dl=(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 ${ed}`,i.fillStyle=t,i.scale(.01,.01),i.fillText(e,0,0),i.getImageData(0,0,1,1).data},Sv=(e,t)=>{const n=[...e].join(","),i=[...t].join(",");return n===i&&!n.startsWith("0,0,0,")};function $v(e){const t=dl(e,"#000"),n=dl(e,"#fff");return t&&n&&Sv(t,n)}function Av(){const e=Object.entries(mv);try{for(const[t,n]of e)if($v(t))return n}catch{}return e[0][1]}let Ks;const zs=()=>(Ks||(Ks=new Promise(e=>Zu(()=>e(Av())))),Ks),Ao=new Map,xv="️",Ev="\uD83C",Cv="",Tv=127995,_v=57339;function Mv(e,t){if(t===0)return e;const n=e.indexOf(Cv);return n!==-1?e.substring(0,n)+String.fromCodePoint(Tv+t-1)+e.substring(n):(e.endsWith(xv)&&(e=e.substring(0,e.length-1)),e+Ev+String.fromCodePoint(_v+t-1))}function Me(e){e.preventDefault(),e.stopPropagation()}function qs(e,t,n){return t+=e?-1:1,t<0?t=n.length-1:t>=n.length&&(t=0),t}function td(e,t){const n=new Set,i=[];for(const s of e){const o=t(s);n.has(o)||(n.add(o),i.push(s))}return i}function Pv(e,t){const n=i=>{const s={};for(const o of i)typeof o.tone=="number"&&o.version<=t&&(s[o.tone]=o.unicode);return s};return e.map(({unicode:i,skins:s,shortcodes:o,url:r,name:a,category:u,annotation:c})=>({unicode:i,name:a,shortcodes:o,url:r,category:u,annotation:c,id:i||a,skins:s&&n(s)}))}const vi=requestAnimationFrame;let Lv=typeof ResizeObserver=="function";function Iv(e,t,n){let i;Lv?(i=new ResizeObserver(n),i.observe(e)):vi(n),t.addEventListener("abort",()=>{i&&i.disconnect()})}function pl(e){{const t=document.createRange();return t.selectNode(e.firstChild),t.getBoundingClientRect().width}}let Hs;function Rv(e,t,n){let i=!0,s=!1;for(const o of e){const r=n(o);if(!r)continue;const a=pl(r);a===0&&(s=!0),typeof Hs>"u"&&(Hs=pl(t));const u=a/1.8<Hs;Ao.set(o.unicode,u),u||(i=!1)}return s&&console.warn(`Emoji support detection failed - emoji character is 0 width.
|
|
2519
2525
|
This is likely due to using \`display:none\` which is unsupported.
|
|
2520
2526
|
If this is a Jest/Vitest environment, you can ignore this warning.
|
|
2521
|
-
For details see: https://github.com/nolanlawson/emoji-picker-element/issues/514`),i}function lv(e){return Nu(e,t=>t)}function cv(e){e&&(e.scrollTop=0)}function $n(e,t,n){let i=e.get(t);return i||(i=n(),e.set(t,i)),i}function Ya(e){return""+e}function uv(e){const t=document.createElement("template");return t.innerHTML=e,t}const dv=new WeakMap,pv=new WeakMap,hv=Symbol("un-keyed"),fv="replaceChildren"in Element.prototype;function gv(e,t){fv?e.replaceChildren(...t):(e.innerHTML="",e.append(...t))}function mv(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 yv(e,t){const{targetNode:n}=t;let{targetParentNode:i}=t,s=!1;i?s=mv(i,e):(s=!0,t.targetNode=void 0,t.targetParentNode=i=n.parentNode),s&&gv(i,e)}function vv(e,t){for(const n of t){const{targetNode:i,currentExpression:s,binding:{expressionIndex:o,attributeName:r,attributeValuePre:a,attributeValuePost:u}}=n,c=e[o];if(s!==c)if(n.currentExpression=c,r)if(c===null)i.removeAttribute(r);else{const l=a+Ya(c)+u;i.setAttribute(r,l)}else{let l;Array.isArray(c)?yv(c,n):c instanceof Element?(l=c,i.replaceWith(l)):i.nodeValue=Ya(c),l&&(n.targetNode=l)}}}function bv(e){let t="",n=!1,i=!1,s=-1;const o=new Map,r=[];let a=0;for(let c=0,l=e.length;c<l;c++){const p=e[c];if(t+=p.slice(a),c===l-1)break;for(let A=0;A<p.length;A++)switch(p.charAt(A)){case"<":{p.charAt(A+1)==="/"?r.pop():(n=!0,r.push(++s));break}case">":{n=!1,i=!1;break}case"=":{i=!0;break}}const f=r[r.length-1],b=$n(o,f,()=>[]);let h,v,S;if(i){const A=/(\S+)="?([^"=]*)$/.exec(p);h=A[1],v=A[2];const E=/^([^">]*)("?)/.exec(e[c+1]);S=E[1],t=t.slice(0,-1*A[0].length),a=E[0].length}else a=0;const $={attributeName:h,attributeValuePre:v,attributeValuePost:S,expressionIndex:c};b.push($),!n&&!i&&(t+=" ")}return{template:uv(t),elementsToBindings:o}}function Xa(e,t,n){for(let i=0;i<e.length;i++){const s=e[i],o=s.attributeName?t:t.firstChild,r={binding:s,targetNode:o,targetParentNode:void 0,currentExpression:void 0};n.push(r)}}function wv(e,t){const n=[];let i;if(t.size===1&&(i=t.get(0)))Xa(i,e,n);else{const s=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT);let o=e,r=-1;do{const a=t.get(++r);a&&Xa(a,o,n)}while(o=s.nextNode())}return n}function kv(e){const{template:t,elementsToBindings:n}=$n(dv,e,()=>bv(e)),i=t.cloneNode(!0).content.firstElementChild,s=wv(i,n);return function(r){return vv(r,s),i}}function Sv(e){const t=$n(pv,e,()=>new Map);let n=hv;function i(o,...r){const a=$n(t,o,()=>new Map);return $n(a,n,()=>kv(o))(r)}function s(o,r,a){return o.map((u,c)=>{const l=n;n=a(u);try{return r(u,c)}finally{n=l}})}return{map:s,html:i}}function $v(e,t,n,i,s,o,r,a,u){const{labelWithSkin:c,titleForEmoji:l,unicodeWithSkin:p}=n,{html:f,map:b}=Sv(t);function h(A,E,T){return b(A,(_,D)=>f`<button role="${E?"option":"menuitem"}" aria-selected="${E?D===t.activeSearchItem:null}" aria-label="${c(_,t.currentSkinTone)}" title="${l(_)}" class="${"emoji"+(E&&D===t.activeSearchItem?" active":"")+(_.unicode?"":" custom-emoji")}" id="${`${T}-${_.id}`}" style="${_.unicode?null:`--custom-emoji-background: url(${JSON.stringify(_.url)})`}">${_.unicode?p(_,t.currentSkinTone):""}</button>`,_=>`${T}-${_.id}`)}const S=f`<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">${b(t.skinTones,(A,E)=>f`<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]}">${A}</div>`,A=>A)}</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">${b(t.groups,A=>f`<button role="tab" class="nav-button" aria-controls="tab-${A.id}" aria-label="${t.i18n.categories[A.name]}" aria-selected="${!t.searchMode&&t.currentGroup.id===A.id}" title="${t.i18n.categories[A.name]}" data-group-id="${A.id}"><div class="nav-emoji emoji">${A.emoji}</div></button>`,A=>A.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">${b(t.currentEmojisWithCategories,(A,E)=>f`<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:A.category?A.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(A.emojis.length/t.numColumns)}`}" data-action="updateOnIntersection" role="${t.searchMode?"listbox":"menu"}" aria-labelledby="menu-label-${E}" id="${t.searchMode?"search-results":null}">${h(A.emojis,t.searchMode,"emo")}</div></div>`,A=>A.category)}</div></div><div class="favorites onscreen emoji-menu ${t.message?"gone":""}" role="menu" aria-label="${t.i18n.favoritesLabel}" data-on-click="onEmojiClick">${h(t.currentFavorites,!1,"fav")}</div><button data-ref="baselineEmoji" aria-hidden="true" tabindex="-1" class="abs-pos hidden emoji baseline-emoji">😀</button></section>`,$=(A,E)=>{for(const T of e.querySelectorAll(`[${A}]`))E(T,T.getAttribute(A))};if(u){e.appendChild(S);for(const A of["click","focusout","input","keydown","keyup"])$(`data-on-${A}`,(E,T)=>{E.addEventListener(A,i[T])});$("data-ref",(A,E)=>{o[E]=A}),r.addEventListener("abort",()=>{e.removeChild(S)})}$("data-action",(A,E)=>{let T=a.get(E);T||a.set(E,T=new WeakSet),T.has(A)||(T.add(A),s[E](A))})}const Li=typeof queueMicrotask=="function"?queueMicrotask:e=>Promise.resolve().then(e);function Av(e){let t=!1,n;const i=new Map,s=new Set;let o;const r=()=>{if(t)return;const c=[...s];s.clear();try{for(const l of c)l()}finally{o=!1,s.size&&(o=!0,Li(r))}},a=new Proxy({},{get(c,l){if(n){let p=i.get(l);p||(p=new Set,i.set(l,p)),p.add(n)}return c[l]},set(c,l,p){if(c[l]!==p){c[l]=p;const f=i.get(l);if(f){for(const b of f)s.add(b);o||(o=!0,Li(r))}}return!0}}),u=c=>{const l=()=>{const p=n;n=l;try{return c()}finally{n=p}};return l()};return e.addEventListener("abort",()=>{t=!0}),{state:a,createEffect:u}}function Is(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 Ja=new WeakMap;function xv(e,t,n){{const i=e.closest(".tabpanel");let s=Ja.get(i);s||(s=new IntersectionObserver(n,{root:i,rootMargin:"50% 0px 50% 0px",threshold:0}),Ja.set(i,s),t.addEventListener("abort",()=>{s.disconnect()})),s.observe(e)}}const Rs=[],{assign:si}=Object;function Ev(e,t){const n={},i=new AbortController,s=i.signal,{state:o,createEffect:r}=Av(s),a=new Map;si(o,{skinToneEmoji:void 0,i18n:void 0,database:void 0,customEmoji:void 0,customCategorySorting:void 0,emojiVersion:void 0}),si(o,t),si(o,{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:jy,isRtl:!1,currentGroupIndex:0,groups:Ts,databaseLoaded:!1,activeSearchItemId:void 0}),r(()=>{o.currentGroup!==o.groups[o.currentGroupIndex]&&(o.currentGroup=o.groups[o.currentGroupIndex])});const u=x=>{e.getElementById(x).focus()},c=x=>e.getElementById(`emo-${x.id}`),l=(x,M)=>{n.rootElement.dispatchEvent(new CustomEvent(x,{detail:M,bubbles:!0,composed:!0}))},p=(x,M)=>x.id===M.id,f=(x,M)=>{const{category:N,emojis:O}=x,{category:Q,emojis:H}=M;return N!==Q?!1:Is(O,H,p)},b=x=>{Is(o.currentEmojis,x,p)||(o.currentEmojis=x)},h=x=>{o.searchMode!==x&&(o.searchMode=x)},v=x=>{Is(o.currentEmojisWithCategories,x,f)||(o.currentEmojisWithCategories=x)},S=(x,M)=>M&&x.skins&&x.skins[M]||x.unicode,E={labelWithSkin:(x,M)=>lv([x.name||S(x,M),x.annotation,...x.shortcodes||Rs].filter(Boolean)).join(", "),titleForEmoji:x=>x.annotation||(x.shortcodes||Rs).join(", "),unicodeWithSkin:S},T={onClickSkinToneButton:G,onEmojiClick:Dn,onNavClick:In,onNavKeydown:Xi,onSearchKeydown:Yi,onSkinToneOptionsClick:Bn,onSkinToneOptionsFocusOut:Ye,onSkinToneOptionsKeydown:rt,onSkinToneOptionsKeyup:Zt,onSearchInput:Nn},_={calculateEmojiGridStyle:ne,updateOnIntersection:be};let D=!0;r(()=>{$v(e,o,E,T,_,n,s,a,D),D=!1}),o.emojiVersion||Ms().then(x=>{x||(o.message=o.i18n.emojiUnsupportedMessage)}),r(()=>{async function x(){let M=!1;const N=setTimeout(()=>{M=!0,o.message=o.i18n.loadingMessage},qy);try{await o.database.ready(),o.databaseLoaded=!0}catch(O){console.error(O),o.message=o.i18n.networkErrorMessage}finally{clearTimeout(N),M&&(M=!1,o.message="")}}o.database&&x()}),r(()=>{o.pickerStyle=`
|
|
2527
|
+
For details see: https://github.com/nolanlawson/emoji-picker-element/issues/514`),i}function Dv(e){return td(e,t=>t)}function Bv(e){e&&(e.scrollTop=0)}function Tn(e,t,n){let i=e.get(t);return i||(i=n(),e.set(t,i)),i}function hl(e){return""+e}function Nv(e){const t=document.createElement("template");return t.innerHTML=e,t}const Ov=new WeakMap,Fv=new WeakMap,Uv=Symbol("un-keyed"),Wv="replaceChildren"in Element.prototype;function Kv(e,t){Wv?e.replaceChildren(...t):(e.innerHTML="",e.append(...t))}function zv(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 qv(e,t){const{targetNode:n}=t;let{targetParentNode:i}=t,s=!1;i?s=zv(i,e):(s=!0,t.targetNode=void 0,t.targetParentNode=i=n.parentNode),s&&Kv(i,e)}function Hv(e,t){for(const n of t){const{targetNode:i,currentExpression:s,binding:{expressionIndex:o,attributeName:r,attributeValuePre:a,attributeValuePost:u}}=n,c=e[o];if(s!==c)if(n.currentExpression=c,r)if(c===null)i.removeAttribute(r);else{const l=a+hl(c)+u;i.setAttribute(r,l)}else{let l;Array.isArray(c)?qv(c,n):c instanceof Element?(l=c,i.replaceWith(l)):i.nodeValue=hl(c),l&&(n.targetNode=l)}}}function jv(e){let t="",n=!1,i=!1,s=-1;const o=new Map,r=[];let a=0;for(let c=0,l=e.length;c<l;c++){const p=e[c];if(t+=p.slice(a),c===l-1)break;for(let A=0;A<p.length;A++)switch(p.charAt(A)){case"<":{p.charAt(A+1)==="/"?r.pop():(n=!0,r.push(++s));break}case">":{n=!1,i=!1;break}case"=":{i=!0;break}}const f=r[r.length-1],b=Tn(o,f,()=>[]);let h,v,S;if(i){const A=/(\S+)="?([^"=]*)$/.exec(p);h=A[1],v=A[2];const E=/^([^">]*)("?)/.exec(e[c+1]);S=E[1],t=t.slice(0,-1*A[0].length),a=E[0].length}else a=0;const $={attributeName:h,attributeValuePre:v,attributeValuePost:S,expressionIndex:c};b.push($),!n&&!i&&(t+=" ")}return{template:Nv(t),elementsToBindings:o}}function fl(e,t,n){for(let i=0;i<e.length;i++){const s=e[i],o=s.attributeName?t:t.firstChild,r={binding:s,targetNode:o,targetParentNode:void 0,currentExpression:void 0};n.push(r)}}function Vv(e,t){const n=[];let i;if(t.size===1&&(i=t.get(0)))fl(i,e,n);else{const s=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT);let o=e,r=-1;do{const a=t.get(++r);a&&fl(a,o,n)}while(o=s.nextNode())}return n}function Gv(e){const{template:t,elementsToBindings:n}=Tn(Ov,e,()=>jv(e)),i=t.cloneNode(!0).content.firstElementChild,s=Vv(i,n);return function(r){return Hv(r,s),i}}function Qv(e){const t=Tn(Fv,e,()=>new Map);let n=Uv;function i(o,...r){const a=Tn(t,o,()=>new Map);return Tn(a,n,()=>Gv(o))(r)}function s(o,r,a){return o.map((u,c)=>{const l=n;n=a(u);try{return r(u,c)}finally{n=l}})}return{map:s,html:i}}function Yv(e,t,n,i,s,o,r,a,u){const{labelWithSkin:c,titleForEmoji:l,unicodeWithSkin:p}=n,{html:f,map:b}=Qv(t);function h(A,E,T){return b(A,(_,D)=>f`<button role="${E?"option":"menuitem"}" aria-selected="${E?D===t.activeSearchItem:null}" aria-label="${c(_,t.currentSkinTone)}" title="${l(_)}" class="${"emoji"+(E&&D===t.activeSearchItem?" active":"")+(_.unicode?"":" custom-emoji")}" id="${`${T}-${_.id}`}" style="${_.unicode?null:`--custom-emoji-background: url(${JSON.stringify(_.url)})`}">${_.unicode?p(_,t.currentSkinTone):""}</button>`,_=>`${T}-${_.id}`)}const S=f`<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">${b(t.skinTones,(A,E)=>f`<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]}">${A}</div>`,A=>A)}</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">${b(t.groups,A=>f`<button role="tab" class="nav-button" aria-controls="tab-${A.id}" aria-label="${t.i18n.categories[A.name]}" aria-selected="${!t.searchMode&&t.currentGroup.id===A.id}" title="${t.i18n.categories[A.name]}" data-group-id="${A.id}"><div class="nav-emoji emoji">${A.emoji}</div></button>`,A=>A.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">${b(t.currentEmojisWithCategories,(A,E)=>f`<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:A.category?A.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(A.emojis.length/t.numColumns)}`}" data-action="updateOnIntersection" role="${t.searchMode?"listbox":"menu"}" aria-labelledby="menu-label-${E}" id="${t.searchMode?"search-results":null}">${h(A.emojis,t.searchMode,"emo")}</div></div>`,A=>A.category)}</div></div><div class="favorites onscreen emoji-menu ${t.message?"gone":""}" role="menu" aria-label="${t.i18n.favoritesLabel}" data-on-click="onEmojiClick">${h(t.currentFavorites,!1,"fav")}</div><button data-ref="baselineEmoji" aria-hidden="true" tabindex="-1" class="abs-pos hidden emoji baseline-emoji">😀</button></section>`,$=(A,E)=>{for(const T of e.querySelectorAll(`[${A}]`))E(T,T.getAttribute(A))};if(u){e.appendChild(S);for(const A of["click","focusout","input","keydown","keyup"])$(`data-on-${A}`,(E,T)=>{E.addEventListener(A,i[T])});$("data-ref",(A,E)=>{o[E]=A}),r.addEventListener("abort",()=>{e.removeChild(S)})}$("data-action",(A,E)=>{let T=a.get(E);T||a.set(E,T=new WeakSet),T.has(A)||(T.add(A),s[E](A))})}const Wi=typeof queueMicrotask=="function"?queueMicrotask:e=>Promise.resolve().then(e);function Xv(e){let t=!1,n;const i=new Map,s=new Set;let o;const r=()=>{if(t)return;const c=[...s];s.clear();try{for(const l of c)l()}finally{o=!1,s.size&&(o=!0,Wi(r))}},a=new Proxy({},{get(c,l){if(n){let p=i.get(l);p||(p=new Set,i.set(l,p)),p.add(n)}return c[l]},set(c,l,p){if(c[l]!==p){c[l]=p;const f=i.get(l);if(f){for(const b of f)s.add(b);o||(o=!0,Wi(r))}}return!0}}),u=c=>{const l=()=>{const p=n;n=l;try{return c()}finally{n=p}};return l()};return e.addEventListener("abort",()=>{t=!0}),{state:a,createEffect:u}}function js(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 gl=new WeakMap;function Jv(e,t,n){{const i=e.closest(".tabpanel");let s=gl.get(i);s||(s=new IntersectionObserver(n,{root:i,rootMargin:"50% 0px 50% 0px",threshold:0}),gl.set(i,s),t.addEventListener("abort",()=>{s.disconnect()})),s.observe(e)}}const Vs=[],{assign:di}=Object;function Zv(e,t){const n={},i=new AbortController,s=i.signal,{state:o,createEffect:r}=Xv(s),a=new Map;di(o,{skinToneEmoji:void 0,i18n:void 0,database:void 0,customEmoji:void 0,customCategorySorting:void 0,emojiVersion:void 0}),di(o,t),di(o,{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:bv,isRtl:!1,currentGroupIndex:0,groups:Ws,databaseLoaded:!1,activeSearchItemId:void 0}),r(()=>{o.currentGroup!==o.groups[o.currentGroupIndex]&&(o.currentGroup=o.groups[o.currentGroupIndex])});const u=x=>{e.getElementById(x).focus()},c=x=>e.getElementById(`emo-${x.id}`),l=(x,M)=>{n.rootElement.dispatchEvent(new CustomEvent(x,{detail:M,bubbles:!0,composed:!0}))},p=(x,M)=>x.id===M.id,f=(x,M)=>{const{category:N,emojis:O}=x,{category:Q,emojis:H}=M;return N!==Q?!1:js(O,H,p)},b=x=>{js(o.currentEmojis,x,p)||(o.currentEmojis=x)},h=x=>{o.searchMode!==x&&(o.searchMode=x)},v=x=>{js(o.currentEmojisWithCategories,x,f)||(o.currentEmojisWithCategories=x)},S=(x,M)=>M&&x.skins&&x.skins[M]||x.unicode,E={labelWithSkin:(x,M)=>Dv([x.name||S(x,M),x.annotation,...x.shortcodes||Vs].filter(Boolean)).join(", "),titleForEmoji:x=>x.annotation||(x.shortcodes||Vs).join(", "),unicodeWithSkin:S},T={onClickSkinToneButton:G,onEmojiClick:Kn,onNavClick:Un,onNavKeydown:rs,onSearchKeydown:os,onSkinToneOptionsClick:zn,onSkinToneOptionsFocusOut:Xe,onSkinToneOptionsKeydown:at,onSkinToneOptionsKeyup:nn,onSearchInput:qn},_={calculateEmojiGridStyle:ne,updateOnIntersection:be};let D=!0;r(()=>{Yv(e,o,E,T,_,n,s,a,D),D=!1}),o.emojiVersion||zs().then(x=>{x||(o.message=o.i18n.emojiUnsupportedMessage)}),r(()=>{async function x(){let M=!1;const N=setTimeout(()=>{M=!0,o.message=o.i18n.loadingMessage},yv);try{await o.database.ready(),o.databaseLoaded=!0}catch(O){console.error(O),o.message=o.i18n.networkErrorMessage}finally{clearTimeout(N),M&&(M=!1,o.message="")}}o.database&&x()}),r(()=>{o.pickerStyle=`
|
|
2522
2528
|
--num-groups: ${o.groups.length};
|
|
2523
2529
|
--indicator-opacity: ${o.searchMode?0:1};
|
|
2524
|
-
--num-skintones: ${ja};`}),r(()=>{o.customEmoji&&o.database&&F()}),r(()=>{o.customEmoji&&o.customEmoji.length?o.groups!==lo&&(o.groups=lo):o.groups!==Ts&&(o.currentGroupIndex&&o.currentGroupIndex--,o.groups=Ts)}),r(()=>{async function x(){o.databaseLoaded&&(o.currentSkinTone=await o.database.getPreferredSkinTone())}x()}),r(()=>{o.skinTones=Array(ja).fill().map((x,M)=>iv(o.skinToneEmoji,M))}),r(()=>{o.skinToneButtonText=o.skinTones[o.currentSkinTone]}),r(()=>{o.skinToneButtonLabel=o.i18n.skinToneLabel.replace("{skinTone}",o.i18n.skinTones[o.currentSkinTone])}),r(()=>{async function x(){const{database:M}=o,N=(await Promise.all(Vy.map(O=>M.getEmojiByUnicodeOrName(O)))).filter(Boolean);o.defaultFavoriteEmojis=N}o.databaseLoaded&&x()});function F(){const{customEmoji:x,database:M}=o,N=x||Rs;M.customEmoji!==N&&(M.customEmoji=N)}r(()=>{async function x(){F();const{database:M,defaultFavoriteEmojis:N,numColumns:O}=o,Q=await M.getTopFavoriteEmoji(O),H=await ot(Nu([...Q,...N],ue=>ue.unicode||ue.name).slice(0,O));o.currentFavorites=H}o.databaseLoaded&&o.defaultFavoriteEmojis&&x()});function ne(x){rv(x,s,()=>{{const M=getComputedStyle(n.rootElement),N=parseInt(M.getPropertyValue("--num-columns"),10),O=M.getPropertyValue("direction")==="rtl";o.numColumns=N,o.isRtl=O}})}function be(x){xv(x,s,M=>{for(const{target:N,isIntersecting:O}of M)N.classList.toggle("onscreen",O)})}r(()=>{async function x(){const{searchText:M,currentGroup:N,databaseLoaded:O,customEmoji:Q}=o;if(!O)o.currentEmojis=[],o.searchMode=!1;else if(M.length>=Ky){const H=await Qi(M);o.searchText===M&&(b(H),h(!0))}else{const{id:H}=N;if(H!==-1||Q&&Q.length){const ue=await Gi(H);o.currentGroup.id===H&&(b(ue),h(!1))}}}x()});const Qe=()=>{di(()=>cv(n.tabpanelElement))};r(()=>{const{currentEmojis:x,emojiVersion:M}=o,N=x.filter(O=>O.unicode).filter(O=>Va(O)&&!co.has(O.unicode));if(!M&&N.length)b(x),di(()=>ee(N));else{const O=M?x:x.filter(Jt);b(O),Qe()}});function ee(x){av(x,n.baselineEmoji,c)?Qe():o.currentEmojis=[...o.currentEmojis]}function Jt(x){return!x.unicode||!Va(x)||co.get(x.unicode)}async function _t(x){const M=o.emojiVersion||await Ms();return x.filter(({version:N})=>!N||N<=M)}async function ot(x){return sv(x,o.emojiVersion||await Ms())}async function Gi(x){const M=x===-1?o.customEmoji:await o.database.getEmojiByGroup(x);return ot(await _t(M))}async function Qi(x){return ot(await _t(await o.database.getEmojiBySearchQuery(x)))}r(()=>{}),r(()=>{function x(){const{searchMode:N,currentEmojis:O}=o;if(N)return[{category:"",emojis:O}];const Q=new Map;for(const H of O){const ue=H.category||"";let Xe=Q.get(ue);Xe||(Xe=[],Q.set(ue,Xe)),Xe.push(H)}return[...Q.entries()].map(([H,ue])=>({category:H,emojis:ue})).sort((H,ue)=>o.customCategorySorting(H.category,ue.category))}const M=x();v(M)}),r(()=>{o.activeSearchItemId=o.activeSearchItem!==-1&&o.currentEmojis[o.activeSearchItem].id}),r(()=>{const{rawSearchText:x}=o;Du(()=>{o.searchText=(x||"").trim(),o.activeSearchItem=-1})});function Yi(x){if(!o.searchMode||!o.currentEmojis.length)return;const M=N=>{_e(x),o.activeSearchItem=Ps(N,o.activeSearchItem,o.currentEmojis)};switch(x.key){case"ArrowDown":return M(!1);case"ArrowUp":return M(!0);case"Enter":if(o.activeSearchItem===-1)o.activeSearchItem=0;else return _e(x),X(o.currentEmojis[o.activeSearchItem].id)}}function In(x){const{target:M}=x,N=M.closest(".nav-button");if(!N)return;const O=parseInt(N.dataset.groupId,10);n.searchElement.value="",o.rawSearchText="",o.searchText="",o.activeSearchItem=-1,o.currentGroupIndex=o.groups.findIndex(Q=>Q.id===O)}function Xi(x){const{target:M,key:N}=x,O=Q=>{Q&&(_e(x),Q.focus())};switch(N){case"ArrowLeft":return O(M.previousElementSibling);case"ArrowRight":return O(M.nextElementSibling);case"Home":return O(M.parentElement.firstElementChild);case"End":return O(M.parentElement.lastElementChild)}}async function Rn(x){const M=await o.database.getEmojiByUnicodeOrName(x),N=[...o.currentEmojis,...o.currentFavorites].find(Q=>Q.id===x),O=N.unicode&&S(N,o.currentSkinTone);return await o.database.incrementFavoriteEmojiCount(x),{emoji:M,skinTone:o.currentSkinTone,...O&&{unicode:O},...N.name&&{name:N.name}}}async function X(x){const M=Rn(x);l("emoji-click-sync",M),l("emoji-click",await M)}function Dn(x){const{target:M}=x;if(!M.classList.contains("emoji"))return;_e(x);const N=M.id.substring(4);X(N)}function J(x){o.currentSkinTone=x,o.skinTonePickerExpanded=!1,u("skintone-button"),l("skin-tone-change",{skinTone:x}),o.database.setPreferredSkinTone(x)}function Bn(x){const{target:{id:M}}=x,N=M&&M.match(/^skintone-(\d)/);if(!N)return;_e(x);const O=parseInt(N[1],10);J(O)}function G(x){o.skinTonePickerExpanded=!o.skinTonePickerExpanded,o.activeSkinTone=o.currentSkinTone,o.skinTonePickerExpanded&&(_e(x),di(()=>u("skintone-list")))}r(()=>{o.skinTonePickerExpanded?n.skinToneDropdown.addEventListener("transitionend",()=>{o.skinTonePickerExpandedAfterAnimation=!0},{once:!0}):o.skinTonePickerExpandedAfterAnimation=!1});function rt(x){if(!o.skinTonePickerExpanded)return;const M=async N=>{_e(x),o.activeSkinTone=N};switch(x.key){case"ArrowUp":return M(Ps(!0,o.activeSkinTone,o.skinTones));case"ArrowDown":return M(Ps(!1,o.activeSkinTone,o.skinTones));case"Home":return M(0);case"End":return M(o.skinTones.length-1);case"Enter":return _e(x),J(o.activeSkinTone);case"Escape":return _e(x),o.skinTonePickerExpanded=!1,u("skintone-button")}}function Zt(x){if(o.skinTonePickerExpanded&&x.key===" ")return _e(x),J(o.activeSkinTone)}async function Ye(x){const{relatedTarget:M}=x;(!M||M.id!=="skintone-list")&&(o.skinTonePickerExpanded=!1)}function Nn(x){o.rawSearchText=x.target.value}return{$set(x){si(o,x)},$destroy(){i.abort()}}}const Cv="https://cdn.jsdelivr.net/npm/emoji-picker-element-data@^1/en/emojibase/data.json",Tv="en";var _v={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"}},Mv=':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 Ou=["customEmoji","customCategorySorting","database","dataSource","i18n","locale","skinToneEmoji","emojiVersion"],Pv=`:host{--emoji-font-family:${Bu}}`;class sr extends HTMLElement{constructor(t){super(),this.attachShadow({mode:"open"});const n=document.createElement("style");n.textContent=Mv+Pv,this.shadowRoot.appendChild(n),this._ctx={locale:Tv,dataSource:Cv,skinToneEmoji:Hy,customCategorySorting:Gy,customEmoji:null,i18n:_v,emojiVersion:null,...t};for(const i of Ou)i!=="database"&&Object.prototype.hasOwnProperty.call(this,i)&&(this._ctx[i]=this[i],delete this[i]);this._dbFlush()}connectedCallback(){Za(this),this._cmp||(this._cmp=Ev(this.shadowRoot,this._ctx))}disconnectedCallback(){Za(this),Li(()=>{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,o)=>o.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 Wy({locale:t,dataSource:n}))}_dbFlush(){Li(()=>this._dbCreate())}}const Fu={};for(const e of Ou)Fu[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(sr.prototype,Fu);function Za(e){e instanceof sr||Object.setPrototypeOf(e,customElements.get(e.tagName.toLowerCase()).prototype)}customElements.get("emoji-picker")||customElements.define("emoji-picker",sr);function Lv(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 el(e){e.style.height="44px",e.style.overflowY="hidden"}const Iv=5e3;function Rv(e){return e?e.active?d`
|
|
2530
|
+
--num-skintones: ${cl};`}),r(()=>{o.customEmoji&&o.database&&F()}),r(()=>{o.customEmoji&&o.customEmoji.length?o.groups!==$o&&(o.groups=$o):o.groups!==Ws&&(o.currentGroupIndex&&o.currentGroupIndex--,o.groups=Ws)}),r(()=>{async function x(){o.databaseLoaded&&(o.currentSkinTone=await o.database.getPreferredSkinTone())}x()}),r(()=>{o.skinTones=Array(cl).fill().map((x,M)=>Mv(o.skinToneEmoji,M))}),r(()=>{o.skinToneButtonText=o.skinTones[o.currentSkinTone]}),r(()=>{o.skinToneButtonLabel=o.i18n.skinToneLabel.replace("{skinTone}",o.i18n.skinTones[o.currentSkinTone])}),r(()=>{async function x(){const{database:M}=o,N=(await Promise.all(wv.map(O=>M.getEmojiByUnicodeOrName(O)))).filter(Boolean);o.defaultFavoriteEmojis=N}o.databaseLoaded&&x()});function F(){const{customEmoji:x,database:M}=o,N=x||Vs;M.customEmoji!==N&&(M.customEmoji=N)}r(()=>{async function x(){F();const{database:M,defaultFavoriteEmojis:N,numColumns:O}=o,Q=await M.getTopFavoriteEmoji(O),H=await rt(td([...Q,...N],ue=>ue.unicode||ue.name).slice(0,O));o.currentFavorites=H}o.databaseLoaded&&o.defaultFavoriteEmojis&&x()});function ne(x){Iv(x,s,()=>{{const M=getComputedStyle(n.rootElement),N=parseInt(M.getPropertyValue("--num-columns"),10),O=M.getPropertyValue("direction")==="rtl";o.numColumns=N,o.isRtl=O}})}function be(x){Jv(x,s,M=>{for(const{target:N,isIntersecting:O}of M)N.classList.toggle("onscreen",O)})}r(()=>{async function x(){const{searchText:M,currentGroup:N,databaseLoaded:O,customEmoji:Q}=o;if(!O)o.currentEmojis=[],o.searchMode=!1;else if(M.length>=gv){const H=await ss(M);o.searchText===M&&(b(H),h(!0))}else{const{id:H}=N;if(H!==-1||Q&&Q.length){const ue=await is(H);o.currentGroup.id===H&&(b(ue),h(!1))}}}x()});const Ye=()=>{vi(()=>Bv(n.tabpanelElement))};r(()=>{const{currentEmojis:x,emojiVersion:M}=o,N=x.filter(O=>O.unicode).filter(O=>ul(O)&&!Ao.has(O.unicode));if(!M&&N.length)b(x),vi(()=>ee(N));else{const O=M?x:x.filter(tn);b(O),Ye()}});function ee(x){Rv(x,n.baselineEmoji,c)?Ye():o.currentEmojis=[...o.currentEmojis]}function tn(x){return!x.unicode||!ul(x)||Ao.get(x.unicode)}async function Pt(x){const M=o.emojiVersion||await zs();return x.filter(({version:N})=>!N||N<=M)}async function rt(x){return Pv(x,o.emojiVersion||await zs())}async function is(x){const M=x===-1?o.customEmoji:await o.database.getEmojiByGroup(x);return rt(await Pt(M))}async function ss(x){return rt(await Pt(await o.database.getEmojiBySearchQuery(x)))}r(()=>{}),r(()=>{function x(){const{searchMode:N,currentEmojis:O}=o;if(N)return[{category:"",emojis:O}];const Q=new Map;for(const H of O){const ue=H.category||"";let Je=Q.get(ue);Je||(Je=[],Q.set(ue,Je)),Je.push(H)}return[...Q.entries()].map(([H,ue])=>({category:H,emojis:ue})).sort((H,ue)=>o.customCategorySorting(H.category,ue.category))}const M=x();v(M)}),r(()=>{o.activeSearchItemId=o.activeSearchItem!==-1&&o.currentEmojis[o.activeSearchItem].id}),r(()=>{const{rawSearchText:x}=o;Zu(()=>{o.searchText=(x||"").trim(),o.activeSearchItem=-1})});function os(x){if(!o.searchMode||!o.currentEmojis.length)return;const M=N=>{Me(x),o.activeSearchItem=qs(N,o.activeSearchItem,o.currentEmojis)};switch(x.key){case"ArrowDown":return M(!1);case"ArrowUp":return M(!0);case"Enter":if(o.activeSearchItem===-1)o.activeSearchItem=0;else return Me(x),X(o.currentEmojis[o.activeSearchItem].id)}}function Un(x){const{target:M}=x,N=M.closest(".nav-button");if(!N)return;const O=parseInt(N.dataset.groupId,10);n.searchElement.value="",o.rawSearchText="",o.searchText="",o.activeSearchItem=-1,o.currentGroupIndex=o.groups.findIndex(Q=>Q.id===O)}function rs(x){const{target:M,key:N}=x,O=Q=>{Q&&(Me(x),Q.focus())};switch(N){case"ArrowLeft":return O(M.previousElementSibling);case"ArrowRight":return O(M.nextElementSibling);case"Home":return O(M.parentElement.firstElementChild);case"End":return O(M.parentElement.lastElementChild)}}async function Wn(x){const M=await o.database.getEmojiByUnicodeOrName(x),N=[...o.currentEmojis,...o.currentFavorites].find(Q=>Q.id===x),O=N.unicode&&S(N,o.currentSkinTone);return await o.database.incrementFavoriteEmojiCount(x),{emoji:M,skinTone:o.currentSkinTone,...O&&{unicode:O},...N.name&&{name:N.name}}}async function X(x){const M=Wn(x);l("emoji-click-sync",M),l("emoji-click",await M)}function Kn(x){const{target:M}=x;if(!M.classList.contains("emoji"))return;Me(x);const N=M.id.substring(4);X(N)}function J(x){o.currentSkinTone=x,o.skinTonePickerExpanded=!1,u("skintone-button"),l("skin-tone-change",{skinTone:x}),o.database.setPreferredSkinTone(x)}function zn(x){const{target:{id:M}}=x,N=M&&M.match(/^skintone-(\d)/);if(!N)return;Me(x);const O=parseInt(N[1],10);J(O)}function G(x){o.skinTonePickerExpanded=!o.skinTonePickerExpanded,o.activeSkinTone=o.currentSkinTone,o.skinTonePickerExpanded&&(Me(x),vi(()=>u("skintone-list")))}r(()=>{o.skinTonePickerExpanded?n.skinToneDropdown.addEventListener("transitionend",()=>{o.skinTonePickerExpandedAfterAnimation=!0},{once:!0}):o.skinTonePickerExpandedAfterAnimation=!1});function at(x){if(!o.skinTonePickerExpanded)return;const M=async N=>{Me(x),o.activeSkinTone=N};switch(x.key){case"ArrowUp":return M(qs(!0,o.activeSkinTone,o.skinTones));case"ArrowDown":return M(qs(!1,o.activeSkinTone,o.skinTones));case"Home":return M(0);case"End":return M(o.skinTones.length-1);case"Enter":return Me(x),J(o.activeSkinTone);case"Escape":return Me(x),o.skinTonePickerExpanded=!1,u("skintone-button")}}function nn(x){if(o.skinTonePickerExpanded&&x.key===" ")return Me(x),J(o.activeSkinTone)}async function Xe(x){const{relatedTarget:M}=x;(!M||M.id!=="skintone-list")&&(o.skinTonePickerExpanded=!1)}function qn(x){o.rawSearchText=x.target.value}return{$set(x){di(o,x)},$destroy(){i.abort()}}}const eb="https://cdn.jsdelivr.net/npm/emoji-picker-element-data@^1/en/emojibase/data.json",tb="en";var nb={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"}},ib=':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 nd=["customEmoji","customCategorySorting","database","dataSource","i18n","locale","skinToneEmoji","emojiVersion"],sb=`:host{--emoji-font-family:${ed}}`;class br extends HTMLElement{constructor(t){super(),this.attachShadow({mode:"open"});const n=document.createElement("style");n.textContent=ib+sb,this.shadowRoot.appendChild(n),this._ctx={locale:tb,dataSource:eb,skinToneEmoji:vv,customCategorySorting:kv,customEmoji:null,i18n:nb,emojiVersion:null,...t};for(const i of nd)i!=="database"&&Object.prototype.hasOwnProperty.call(this,i)&&(this._ctx[i]=this[i],delete this[i]);this._dbFlush()}connectedCallback(){ml(this),this._cmp||(this._cmp=Zv(this.shadowRoot,this._ctx))}disconnectedCallback(){ml(this),Wi(()=>{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,o)=>o.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 fv({locale:t,dataSource:n}))}_dbFlush(){Wi(()=>this._dbCreate())}}const id={};for(const e of nd)id[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(br.prototype,id);function ml(e){e instanceof br||Object.setPrototypeOf(e,customElements.get(e.tagName.toLowerCase()).prototype)}customElements.get("emoji-picker")||customElements.define("emoji-picker",br);function ob(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 yl(e){e.style.height="44px",e.style.overflowY="hidden"}const rb=5e3;function ab(e){return e?e.active?d`
|
|
2525
2531
|
<div class="callout info compaction-indicator compaction-indicator--active">
|
|
2526
2532
|
${L.loader} Compacting context...
|
|
2527
2533
|
</div>
|
|
2528
|
-
`:e.completedAt&&Date.now()-e.completedAt<
|
|
2534
|
+
`:e.completedAt&&Date.now()-e.completedAt<rb?d`
|
|
2529
2535
|
<div class="callout success compaction-indicator compaction-indicator--complete">
|
|
2530
2536
|
${L.check} Context compacted
|
|
2531
2537
|
</div>
|
|
2532
|
-
`:k:k}const
|
|
2538
|
+
`:k:k}const qe=5*1024*1024;function He(){return`att-${Date.now()}-${Math.random().toString(36).slice(2,9)}`}function xe(e,t){var i,s,o;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 r=(s=e.closest(".chat"))==null?void 0:s.querySelector(".chat-compose");(o=r==null?void 0:r.parentElement)==null||o.insertBefore(n,r)}n.textContent=t,setTimeout(()=>n==null?void 0:n.remove(),4e3)}const lb=/\.(md|txt|csv|json|xml|html|css|js|ts|py|sh|yaml|yml|toml|ini|cfg|log|sql)$/i;function sd(e){return e.type.startsWith("image/")||/\.(png|jpe?g|gif|webp|bmp|svg)$/i.test(e.name)}function od(e){return e.type.startsWith("text/")||e.type==="application/json"||e.type==="application/xml"||lb.test(e.name)}function rd(e){return e.type==="application/pdf"||/\.pdf$/i.test(e.name)}function ad(e){return e.type.startsWith("video/")||/\.(mp4|webm|mov|avi|mkv|m4v)$/i.test(e.name)}function cb(e,t){if(!t.onAttachmentsChange)return;const n=document.querySelector(".chat");if(sd(e)){if(e.size>qe){n&&xe(n,`Image too large (${(e.size/1024/1024).toFixed(1)} MB). Maximum is 5 MB.`);return}const i=new FileReader;i.onload=()=>{var o;const s={id:He(),dataUrl:i.result,mimeType:e.type};(o=t.onAttachmentsChange)==null||o.call(t,[...t.attachments??[],s])},i.readAsDataURL(e)}else if(od(e)){if(e.size>qe){n&&xe(n,`File too large (${(e.size/1024/1024).toFixed(1)} MB). Maximum is 5 MB.`);return}const i=new FileReader;i.onload=()=>{var o;const s={id:He(),dataUrl:"",mimeType:e.type||"text/plain",fileName:e.name,textContent:i.result};(o=t.onAttachmentsChange)==null||o.call(t,[...t.attachments??[],s])},i.readAsText(e)}else if(rd(e)){if(e.size>qe){n&&xe(n,`PDF too large (${(e.size/1024/1024).toFixed(1)} MB). Maximum is 5 MB.`);return}const i=new FileReader;i.onload=()=>{var o;const s={id:He(),dataUrl:i.result,mimeType:"application/pdf",fileName:e.name};(o=t.onAttachmentsChange)==null||o.call(t,[...t.attachments??[],s])},i.readAsDataURL(e)}else if(ad(e)){if(e.size>qe){n&&xe(n,`Video too large (${(e.size/1024/1024).toFixed(1)} MB). Maximum is 5 MB.`);return}const i=new FileReader;i.onload=()=>{var o;const s={id:He(),dataUrl:i.result,mimeType:e.type||"video/mp4",fileName:e.name};(o=t.onAttachmentsChange)==null||o.call(t,[...t.attachments??[],s])},i.readAsDataURL(e)}else n&&xe(n,`Unsupported file type: ${e.name}. Use the Files page to upload to workspace.`)}function ub(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 o=0;o<i.length;o++){const r=i[o];if(sd(r)){if(!t.onAttachmentsChange)continue;if(r.size>qe){xe(n,`Image too large (${(r.size/1024/1024).toFixed(1)} MB). Maximum is 5 MB.`);continue}const a=new FileReader;a.onload=()=>{var p;const u=a.result,c={id:He(),dataUrl:u,mimeType:r.type},l=t.attachments??[];(p=t.onAttachmentsChange)==null||p.call(t,[...l,c])},a.readAsDataURL(r)}else if(od(r)){if(!t.onAttachmentsChange)continue;if(r.size>qe){xe(n,`File too large (${(r.size/1024/1024).toFixed(1)} MB). Maximum is 5 MB.`);continue}const a=new FileReader;a.onload=()=>{var p;const u=a.result,c={id:He(),dataUrl:"",mimeType:r.type||"text/plain",fileName:r.name,textContent:u},l=t.attachments??[];(p=t.onAttachmentsChange)==null||p.call(t,[...l,c])},a.readAsText(r)}else if(rd(r)){if(!t.onAttachmentsChange)continue;if(r.size>qe){xe(n,`PDF too large (${(r.size/1024/1024).toFixed(1)} MB). Maximum is 5 MB.`);continue}const a=new FileReader;a.onload=()=>{var p;const u=a.result,c={id:He(),dataUrl:u,mimeType:"application/pdf",fileName:r.name},l=t.attachments??[];(p=t.onAttachmentsChange)==null||p.call(t,[...l,c])},a.readAsDataURL(r)}else if(ad(r)){if(!t.onAttachmentsChange)continue;if(r.size>qe){xe(n,`Video too large (${(r.size/1024/1024).toFixed(1)} MB). Maximum is 5 MB.`);continue}const a=new FileReader;a.onload=()=>{var p;const u=a.result,c={id:He(),dataUrl:u,mimeType:r.type||"video/mp4",fileName:r.name},l=t.attachments??[];(p=t.onAttachmentsChange)==null||p.call(t,[...l,c])},a.readAsDataURL(r)}else xe(n,`Unsupported file type: ${r.name}. Use the Files page to upload to workspace.`)}}function db(e){e.preventDefault(),e.stopPropagation(),e.dataTransfer&&(e.dataTransfer.dropEffect="copy"),e.currentTarget.classList.add("chat--dragover")}function pb(e){e.preventDefault(),e.stopPropagation();const t=e.currentTarget,n=e.relatedTarget;(!n||!t.contains(n))&&t.classList.remove("chat--dragover")}function hb(e,t){var s,o,r;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 u=n[a];(u.type.startsWith("image/")||u.type.startsWith("video/"))&&i.push(u)}if(i.length!==0){e.preventDefault();for(const a of i){const u=a.getAsFile();if(!u)continue;const c=u.type.startsWith("video/")?"Video":"Image";if(u.size>qe){const p=((r=(o=e.target)==null?void 0:o.closest)==null?void 0:r.call(o,".chat"))??document.querySelector(".chat");p&&xe(p,`${c} too large (${(u.size/1024/1024).toFixed(1)} MB). Maximum is 5 MB.`);continue}const l=new FileReader;l.onload=()=>{var v;const p=l.result,f=u.type.startsWith("video/"),b={id:He(),dataUrl:p,mimeType:u.type,fileName:f?u.name||"video.mp4":void 0},h=t.attachments??[];(v=t.onAttachmentsChange)==null||v.call(t,[...h,b])},l.readAsDataURL(u)}}}function fb(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 o=r=>{i.contains(r.target)||t.contains(r.target)||(i.classList.remove("active"),t.classList.remove("active"),document.removeEventListener("click",o,!0))};requestAnimationFrame(()=>document.addEventListener("click",o,!0))}}function gb(e,t){const n=e.detail,i=n==null?void 0:n.unicode;if(!i)return;const s=e.currentTarget.closest(".chat-compose"),o=s==null?void 0:s.querySelector("textarea");if(!o)return;const r=o.selectionStart??t.draft.length,a=o.selectionEnd??r,u=t.draft.slice(0,r),c=t.draft.slice(a);t.onDraftChange(u+i+c);const l=s==null?void 0:s.querySelector(".emoji-picker-popup"),p=s==null?void 0:s.querySelector(".chat-compose__emoji");l==null||l.classList.remove("active"),p==null||p.classList.remove("active"),requestAnimationFrame(()=>{o.focus();const f=r+i.length;o.setSelectionRange(f,f)})}function mb(e){const t=e.attachments??[];return t.length===0?k:d`
|
|
2533
2539
|
<div class="chat-attachments">
|
|
2534
2540
|
${t.map(n=>{var i;return n.fileName?d`
|
|
2535
2541
|
<div class="chat-attachment chat-attachment--file">
|
|
@@ -2562,7 +2568,7 @@ For details see: https://github.com/nolanlawson/emoji-picker-element/issues/514`
|
|
|
2562
2568
|
</div>
|
|
2563
2569
|
`})}
|
|
2564
2570
|
</div>
|
|
2565
|
-
`}function
|
|
2571
|
+
`}function ld(e){var h,v,S;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($=>$.key===e.sessionKey),o=(s==null?void 0:s.reasoningLevel)??"off",r=e.showThinking&&o!=="off";e.assistantName,e.assistantAvatar??e.assistantAvatarUrl;const a=(((S=e.attachments)==null?void 0:S.length)??0)>0,u=e.connected?a?"Add a message...":"Message...":"Connecting…";Sy({onSend:$=>{e.onAttachmentsChange&&e.onAttachmentsChange([...e.attachments??[],$]),requestAnimationFrame(()=>e.onSend())},onRequestRender:()=>{var $;($=e.requestUpdate)==null||$.call(e)}});const c=ky(),l=!c&&!e.draft.trim()&&!a&&!n,p=e.splitRatio??.6,f=!!(e.sidebarOpen&&e.onCloseSidebar),b=d`
|
|
2566
2572
|
<div
|
|
2567
2573
|
class="chat-thread"
|
|
2568
2574
|
role="log"
|
|
@@ -2573,20 +2579,20 @@ For details see: https://github.com/nolanlawson/emoji-picker-element/issues/514`
|
|
|
2573
2579
|
${e.loadingOlder?d`<span class="chat-load-more__spinner">${L.loader}</span> Loading older messages…`:d`<button class="chat-load-more__btn" type="button" @click=${e.onLoadOlder}>Load older messages</button>`}
|
|
2574
2580
|
</div>`:k}
|
|
2575
2581
|
${e.loading?d`<div class="muted">Loading chat…</div>`:k}
|
|
2576
|
-
${
|
|
2582
|
+
${Pg($b(e),$=>$.key,$=>$.kind==="interim"?dy($.text):$.kind==="reading-indicator"?uy():$.kind==="stream"?py($.text,$.startedAt,e.onOpenSidebar):$.kind==="group"?hy($,{onOpenSidebar:e.onOpenSidebar,showReasoning:r,assistantName:e.assistantName}):k)}
|
|
2577
2583
|
</div>
|
|
2578
2584
|
`;return d`
|
|
2579
2585
|
<section
|
|
2580
2586
|
class="card chat"
|
|
2581
|
-
@drop=${$=>
|
|
2582
|
-
@dragover=${
|
|
2583
|
-
@dragleave=${
|
|
2587
|
+
@drop=${$=>ub($,e)}
|
|
2588
|
+
@dragover=${db}
|
|
2589
|
+
@dragleave=${pb}
|
|
2584
2590
|
>
|
|
2585
2591
|
${e.disabledReason?d`<div class="callout">${e.disabledReason}</div>`:k}
|
|
2586
2592
|
|
|
2587
2593
|
${e.error?d`<div class="callout danger">${e.error}</div>`:k}
|
|
2588
2594
|
|
|
2589
|
-
${
|
|
2595
|
+
${ab(e.compactionStatus)}
|
|
2590
2596
|
|
|
2591
2597
|
${e.focusMode?d`
|
|
2592
2598
|
<button
|
|
@@ -2627,7 +2633,7 @@ For details see: https://github.com/nolanlawson/emoji-picker-element/issues/514`
|
|
|
2627
2633
|
@resize=${$=>{var A;return(A=e.onSplitRatioChange)==null?void 0:A.call(e,$.detail.splitRatio)}}
|
|
2628
2634
|
></resizable-divider>
|
|
2629
2635
|
<div class="chat-sidebar">
|
|
2630
|
-
${
|
|
2636
|
+
${xy({content:e.sidebarContent??null,error:e.sidebarError??null,onClose:e.onCloseSidebar,onViewRawText:()=>{!e.sidebarContent||!e.onOpenSidebar||e.onOpenSidebar(`\`\`\`
|
|
2631
2637
|
${e.sidebarContent}
|
|
2632
2638
|
\`\`\``)}})}
|
|
2633
2639
|
</div>
|
|
@@ -2647,13 +2653,13 @@ ${e.sidebarContent}
|
|
|
2647
2653
|
`:k}
|
|
2648
2654
|
|
|
2649
2655
|
<div class="chat-compose">
|
|
2650
|
-
${
|
|
2651
|
-
${c?
|
|
2656
|
+
${mb(e)}
|
|
2657
|
+
${c?Ay():d`
|
|
2652
2658
|
<div class="chat-compose__row">
|
|
2653
2659
|
<button
|
|
2654
2660
|
class="chat-compose__emoji"
|
|
2655
2661
|
type="button"
|
|
2656
|
-
@click=${
|
|
2662
|
+
@click=${fb}
|
|
2657
2663
|
aria-label="Emoji"
|
|
2658
2664
|
title="Emoji"
|
|
2659
2665
|
>
|
|
@@ -2674,16 +2680,16 @@ ${e.sidebarContent}
|
|
|
2674
2680
|
multiple
|
|
2675
2681
|
accept="image/*,video/*,.pdf,.md,.txt,.csv,.json,.xml,.html,.css,.js,.ts,.py,.sh,.yaml,.yml,.toml,.ini,.cfg,.log,.sql"
|
|
2676
2682
|
style="display:none"
|
|
2677
|
-
@change=${$=>{const A=$.target,E=A.files;if(!(!E||E.length===0||!e.onAttachmentsChange)){for(let T=0;T<E.length;T++)
|
|
2683
|
+
@change=${$=>{const A=$.target,E=A.files;if(!(!E||E.length===0||!e.onAttachmentsChange)){for(let T=0;T<E.length;T++)cb(E[T],e);A.value=""}}}
|
|
2678
2684
|
/>
|
|
2679
2685
|
<label class="field chat-compose__field">
|
|
2680
2686
|
<span>Message</span>
|
|
2681
2687
|
<textarea
|
|
2682
2688
|
.value=${e.draft}
|
|
2683
2689
|
?disabled=${!e.connected}
|
|
2684
|
-
@keydown=${$=>{$.key==="Enter"&&($.isComposing||$.keyCode===229||$.shiftKey||e.connected&&($.preventDefault(),t&&(e.onSend(),
|
|
2685
|
-
@input=${$=>{const A=$.target;e.onDraftChange(A.value),
|
|
2686
|
-
@paste=${$=>
|
|
2690
|
+
@keydown=${$=>{$.key==="Enter"&&($.isComposing||$.keyCode===229||$.shiftKey||e.connected&&($.preventDefault(),t&&(e.onSend(),yl($.target))))}}
|
|
2691
|
+
@input=${$=>{const A=$.target;e.onDraftChange(A.value),ob(A)}}
|
|
2692
|
+
@paste=${$=>hb($,e)}
|
|
2687
2693
|
placeholder=${u}
|
|
2688
2694
|
></textarea>
|
|
2689
2695
|
</label>
|
|
@@ -2697,11 +2703,11 @@ ${e.sidebarContent}
|
|
|
2697
2703
|
${L.square}
|
|
2698
2704
|
</button>
|
|
2699
2705
|
`:k}
|
|
2700
|
-
${l
|
|
2706
|
+
${l?$y(e.connected):d`
|
|
2701
2707
|
<button
|
|
2702
2708
|
class="btn btn--icon chat-compose__send primary"
|
|
2703
2709
|
?disabled=${!e.connected}
|
|
2704
|
-
@click=${$=>{var E;e.onSend();const A=(E=$.target.closest(".chat-compose"))==null?void 0:E.querySelector("textarea");A&&
|
|
2710
|
+
@click=${$=>{var E;e.onSend();const A=(E=$.target.closest(".chat-compose"))==null?void 0:E.querySelector("textarea");A&&yl(A)}}
|
|
2705
2711
|
aria-label="${n?"Queue":"Send"}"
|
|
2706
2712
|
title="${n?"Queue message":"Send (Enter)"}"
|
|
2707
2713
|
>
|
|
@@ -2710,13 +2716,13 @@ ${e.sidebarContent}
|
|
|
2710
2716
|
</div>`}
|
|
2711
2717
|
<div class="emoji-picker-popup">
|
|
2712
2718
|
<emoji-picker
|
|
2713
|
-
@emoji-click=${$=>
|
|
2719
|
+
@emoji-click=${$=>gb($,e)}
|
|
2714
2720
|
></emoji-picker>
|
|
2715
2721
|
</div>
|
|
2716
|
-
${e.publicMode?k:
|
|
2722
|
+
${e.publicMode?k:kb(e)}
|
|
2717
2723
|
</div>
|
|
2718
2724
|
</section>
|
|
2719
|
-
`}const
|
|
2725
|
+
`}const yb=[{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 vb(e){const t=new Set(e.filter(n=>n.provider==="anthropic").map(n=>n.id));return yb.filter(n=>t.has(n.id)).map(n=>({key:`anthropic/${n.id}`,...n}))}const bb=[{value:"off",label:"Off"},{value:"minimal",label:"Minimal"},{value:"low",label:"Low"},{value:"medium",label:"Medium"},{value:"high",label:"High"}];function wb(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(o=>o.classList.remove("active")),!i){n.classList.add("active");const o=r=>{!n.contains(r.target)&&r.target!==t&&!t.contains(r.target)&&(n.classList.remove("active"),document.removeEventListener("click",o))};requestAnimationFrame(()=>document.addEventListener("click",o))}}function kb(e){if(!e.connected)return k;const t=e.modelCatalog??[],n=vb(t);if(n.length===0)return k;const i=e.modelProvider&&e.model?`${e.modelProvider}/${e.model}`:null,s=e.thinkingLevel??"off",o=e.verboseLevel==="on"||e.verboseLevel==="full",r=e.fillerEnabled===!0;return d`
|
|
2720
2726
|
<div class="chat-model-bar">
|
|
2721
2727
|
<div class="chat-model-bar__select">
|
|
2722
2728
|
<select
|
|
@@ -2737,7 +2743,7 @@ ${e.sidebarContent}
|
|
|
2737
2743
|
.value=${s}
|
|
2738
2744
|
@change=${a=>{const u=a.target.value;e.onThinkingLevelChange&&e.onThinkingLevelChange(u)}}
|
|
2739
2745
|
>
|
|
2740
|
-
${
|
|
2746
|
+
${bb.map(a=>d`
|
|
2741
2747
|
<option value=${a.value} ?selected=${a.value===s}>
|
|
2742
2748
|
Thinking: ${a.label}
|
|
2743
2749
|
</option>
|
|
@@ -2747,7 +2753,7 @@ ${e.sidebarContent}
|
|
|
2747
2753
|
<button
|
|
2748
2754
|
class="chat-model-bar__settings-btn"
|
|
2749
2755
|
type="button"
|
|
2750
|
-
@click=${
|
|
2756
|
+
@click=${wb}
|
|
2751
2757
|
aria-label="Message settings"
|
|
2752
2758
|
title="Message settings"
|
|
2753
2759
|
>
|
|
@@ -2774,9 +2780,9 @@ ${e.sidebarContent}
|
|
|
2774
2780
|
</label>
|
|
2775
2781
|
</div>
|
|
2776
2782
|
</div>
|
|
2777
|
-
`}function
|
|
2783
|
+
`}function Sb(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=tc(i.message),o=nc(s.role),r=s.timestamp||Date.now();!n||n.role!==o?(n&&t.push(n),n={kind:"group",key:`group:${o}:${i.key}`,role:o,messages:[{message:i.message,key:i.key}],timestamp:r,isStreaming:!1}):n.messages.push({message:i.message,key:i.key})}return n&&t.push(n),t}function $b(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";for(let r=0;r<n.length;r++){const a=n[r],u=tc(a);if(!s&&u.role.toLowerCase()==="toolresult"){const c=a,p=(Array.isArray(c.content)?c.content:[]).filter(f=>{const b=f.type;return b==="image"||b==="file"});p.length>0&&t.push({kind:"message",key:Gs(a,r),message:{role:"assistant",content:p,timestamp:u.timestamp}});continue}t.push({kind:"message",key:Gs(a,r),message:a})}if(s)for(let r=0;r<i.length;r++)t.push({kind:"message",key:Gs(i[r],r+n.length),message:i[r]});if(e.interimText&&t.push({kind:"interim",key:"interim:thinking",text:e.interimText}),e.stream!==null){const r=`stream:${e.sessionKey}:${e.streamStartedAt??"live"}`;e.stream.trim().length>0?t.push({kind:"stream",key:r,text:e.stream,startedAt:e.streamStartedAt??Date.now()}):t.push({kind:"reading-indicator",key:r})}for(const r of e.queue){const a=((o=r.attachments)==null?void 0:o.filter(c=>c.fileName).map(c=>c.fileName))??[],u=a.length>0?r.text?`${a.join(", ")}
|
|
2778
2784
|
|
|
2779
|
-
${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,message:{role:"user",content:[{type:"text",text:u}],timestamp:r.createdAt}})}return
|
|
2785
|
+
${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,message:{role:"user",content:[{type:"text",text:u}],timestamp:r.createdAt}})}return Sb(t)}function Gs(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 o=typeof n.messageId=="string"?n.messageId:"";if(o)return`msg:${o}`;const r=typeof n.timestamp=="number"?n.timestamp:null,a=typeof n.role=="string"?n.role:"unknown";return r!=null?`msg:${a}:${r}:${t}`:`msg:${a}:${t}`}const Ab=d`<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 xb(e){if(!e.connected)return d`
|
|
2780
2786
|
<div class="setup-container">
|
|
2781
2787
|
<div class="setup-card">
|
|
2782
2788
|
<div class="setup-spinner"></div>
|
|
@@ -2789,20 +2795,20 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
2789
2795
|
target="_blank"
|
|
2790
2796
|
rel="noopener"
|
|
2791
2797
|
title="Open public chat in new tab"
|
|
2792
|
-
>Public ${
|
|
2798
|
+
>Public ${Ab}</a>`:k;return d`
|
|
2793
2799
|
<div class="setup-container setup-container--full chat-page">
|
|
2794
|
-
${
|
|
2800
|
+
${Tt("Chat",e.wsProps)}
|
|
2795
2801
|
${t}
|
|
2796
2802
|
<div class="chat-viewport">
|
|
2797
|
-
${
|
|
2803
|
+
${ld(e)}
|
|
2798
2804
|
</div>
|
|
2799
2805
|
</div>
|
|
2800
|
-
`}function
|
|
2801
|
-
${
|
|
2802
|
-
${
|
|
2803
|
-
${n?
|
|
2804
|
-
${t?
|
|
2805
|
-
`}function
|
|
2806
|
+
`}function Eb(e){return e?`${Yl(e)} (${Vi(e)})`:"n/a"}function cd(e){const t=e.state??{},n=t.lastStatus??"n/a",i=t.lastRunAtMs?Vi(t.lastRunAtMs):"never";return`${n} · last ${i}`}function ud(e){const t=e.schedule;return t.kind==="at"?`One-time: ${Yl(t.atMs)}`:t.kind==="every"?`Every ${Xl(t.everyMs)}`:Cb(t.expr,t.tz)}function Cb(e,t){const n=e.trim().split(/\s+/);if(n.length!==5)return e;const[i,s,o,r,a]=n,u=t?` (${t.replace(/^.*\//,"").replace(/_/g," ")})`:"",c=(v,S)=>new Date(2e3,0,1,v,S).toLocaleTimeString(void 0,{hour:"numeric",minute:"2-digit"}),l=/^\d{1,2}$/.test(i)?parseInt(i,10):null,p=vl(s);if(l===null||!p)return`${e}${t?` (${t})`:""}`;const f=p.map(v=>c(v,l)),b=f.length<=3?f.join(" & "):`${f.slice(0,-1).join(", ")} & ${f[f.length-1]}`,h=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];if(o==="*"&&r==="*"){if(a==="*")return`Daily at ${b}${u}`;if(a==="1-5")return`Weekdays at ${b}${u}`;if(a==="0,6"||a==="6,0")return`Weekends at ${b}${u}`;const v=vl(a);if(v)return`${v.map($=>h[$%7]??String($)).join(", ")} at ${b}${u}`}return`${e}${t?` (${t})`:""}`}function vl(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 Tb(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 bl(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=[];if(i){const r=i.split(",").map(a=>a.trim()).filter(Boolean).map(a=>a.toLowerCase()==="admins"?"All admins":a);s.push(r.join(", "))}return n&&n!=="last"&&s.push(`via ${n}`),s.join(" ")||null}let ye=null;function _b(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(o=>i.has(o)?!1:(i.add(o),!0))}function Mb(e,t){var i,s;if(t==="last")return"last";const n=(i=e.channelMeta)==null?void 0:i.find(o=>o.id===t);return n!=null&&n.label?n.label:((s=e.channelLabels)==null?void 0:s[t])??t}function Pb(e){return e.split(",").map(n=>n.trim()).filter(Boolean).map(n=>n.toLowerCase()==="admins"?"All admins":n).join(", ")}function Lb(e){return e||"Default"}const Ib=d`<svg viewBox="0 0 24 24"><polygon points="5 3 19 12 5 21 5 3"/></svg>`,Rb=d`<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>`,Db=d`<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>`,wr=d`<svg viewBox="0 0 24 24"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg>`,Bb=d`<svg viewBox="0 0 24 24"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"/></svg>`,dd=d`<svg viewBox="0 0 24 24"><path d="M12 5v14"/><path d="M5 12h14"/></svg>`,Nb=d`<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>`;function wl(e){const t=e.detailJobId?e.jobs.find(i=>i.id===e.detailJobId)??null:null,n=e.newEventModalOpen||!!e.editJobId;return d`
|
|
2807
|
+
${Ob(e)}
|
|
2808
|
+
${Fb(e)}
|
|
2809
|
+
${n?Wb(e):k}
|
|
2810
|
+
${t?qb(t,e):k}
|
|
2811
|
+
`}function Ob(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 d`
|
|
2806
2812
|
<div class="event-status-bar">
|
|
2807
2813
|
<div class="event-status-bar__info">
|
|
2808
2814
|
<span class="statusDot ${n?"ok":""}"></span>
|
|
@@ -2811,7 +2817,7 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
2811
2817
|
<span>${i} event${i!==1?"s":""}</span>
|
|
2812
2818
|
${s?d`
|
|
2813
2819
|
<span class="event-status-bar__sep">\u00b7</span>
|
|
2814
|
-
<span>Next: ${
|
|
2820
|
+
<span>Next: ${Vi(s)}</span>
|
|
2815
2821
|
`:k}
|
|
2816
2822
|
<button
|
|
2817
2823
|
class="btn btn--sm"
|
|
@@ -2824,14 +2830,14 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
2824
2830
|
${e.error?d`<span class="muted">${e.error}</span>`:k}
|
|
2825
2831
|
</div>
|
|
2826
2832
|
<button class="btn primary btn--sm" @click=${e.onNewEventModalOpen}>
|
|
2827
|
-
${
|
|
2833
|
+
${dd} New Event
|
|
2828
2834
|
</button>
|
|
2829
2835
|
</div>
|
|
2830
|
-
`}function
|
|
2836
|
+
`}function Fb(e){return e.jobs.length===0?d`<div class="muted" style="padding: 20px 0;">No events yet. Create one to get started.</div>`:d`
|
|
2831
2837
|
<div class="event-grid">
|
|
2832
|
-
${e.jobs.map(t=>
|
|
2838
|
+
${e.jobs.map(t=>Ub(t,e))}
|
|
2833
2839
|
</div>
|
|
2834
|
-
`}function
|
|
2840
|
+
`}function Ub(e,t){return d`
|
|
2835
2841
|
<div
|
|
2836
2842
|
class="event-card ${e.enabled?"":"disabled"}"
|
|
2837
2843
|
@click=${()=>t.onDetailOpen(e)}
|
|
@@ -2842,12 +2848,12 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
2842
2848
|
${e.enabled?"On":"Off"}
|
|
2843
2849
|
</span>
|
|
2844
2850
|
</div>
|
|
2845
|
-
<div class="event-card__schedule">${
|
|
2846
|
-
${e.agentId?d`<div class="event-card__agent">${
|
|
2847
|
-
${
|
|
2851
|
+
<div class="event-card__schedule">${ud(e)}</div>
|
|
2852
|
+
${e.agentId?d`<div class="event-card__agent">${Lb(e.agentId)}</div>`:k}
|
|
2853
|
+
${bl(e)?d`<div class="event-card__agent muted" style="font-size: 11px;">\u2192 ${bl(e)}</div>`:k}
|
|
2848
2854
|
<div class="event-card__footer">
|
|
2849
2855
|
<div class="event-card__status">
|
|
2850
|
-
<span class="muted" style="font-size: 11px;">${
|
|
2856
|
+
<span class="muted" style="font-size: 11px;">${cd(e)}</span>
|
|
2851
2857
|
</div>
|
|
2852
2858
|
<div class="event-card__actions" @click=${n=>n.stopPropagation()}>
|
|
2853
2859
|
<button
|
|
@@ -2856,7 +2862,7 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
2856
2862
|
?disabled=${t.busy}
|
|
2857
2863
|
@click=${()=>t.onToggle(e,!e.enabled)}
|
|
2858
2864
|
>
|
|
2859
|
-
${e.enabled?
|
|
2865
|
+
${e.enabled?Rb:Ib}
|
|
2860
2866
|
</button>
|
|
2861
2867
|
<button
|
|
2862
2868
|
class="btn-icon"
|
|
@@ -2864,7 +2870,7 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
2864
2870
|
?disabled=${t.busy}
|
|
2865
2871
|
@click=${()=>t.onRun(e)}
|
|
2866
2872
|
>
|
|
2867
|
-
${
|
|
2873
|
+
${Bb}
|
|
2868
2874
|
</button>
|
|
2869
2875
|
${t.pendingDeleteId===e.id?d`<button
|
|
2870
2876
|
class="btn danger btn--sm"
|
|
@@ -2875,17 +2881,17 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
2875
2881
|
title="Delete"
|
|
2876
2882
|
?disabled=${t.busy}
|
|
2877
2883
|
@click=${()=>{t.onArmDelete(e.id),ye&&clearTimeout(ye),ye=setTimeout(()=>{t.onArmDelete(""),ye=null},3e3)}}
|
|
2878
|
-
>${
|
|
2884
|
+
>${Db}</button>`}
|
|
2879
2885
|
</div>
|
|
2880
2886
|
</div>
|
|
2881
2887
|
</div>
|
|
2882
|
-
`}function
|
|
2888
|
+
`}function Wb(e){const t=!!e.editJobId,n=_b(e),i=()=>{e.onNewEventModalClose()};return d`
|
|
2883
2889
|
<div class="event-modal-overlay" @click=${i}>
|
|
2884
2890
|
<div class="event-modal" @click=${s=>s.stopPropagation()}>
|
|
2885
2891
|
<div class="event-modal__header">
|
|
2886
2892
|
<div class="event-modal__title">${t?"Edit Event":"New Event"}</div>
|
|
2887
2893
|
<button class="event-modal__close" @click=${i}>
|
|
2888
|
-
${
|
|
2894
|
+
${wr}
|
|
2889
2895
|
</button>
|
|
2890
2896
|
</div>
|
|
2891
2897
|
|
|
@@ -2937,7 +2943,7 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
2937
2943
|
</label>
|
|
2938
2944
|
</div>
|
|
2939
2945
|
|
|
2940
|
-
${
|
|
2946
|
+
${zb(e)}
|
|
2941
2947
|
|
|
2942
2948
|
<div class="form-grid" style="margin-top: 12px;">
|
|
2943
2949
|
<label class="field">
|
|
@@ -2999,7 +3005,7 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
2999
3005
|
@change=${s=>e.onFormChange({channel:s.target.value})}
|
|
3000
3006
|
>
|
|
3001
3007
|
${n.map(s=>d`<option value=${s}>
|
|
3002
|
-
${
|
|
3008
|
+
${Mb(e,s)}
|
|
3003
3009
|
</option>`)}
|
|
3004
3010
|
</select>
|
|
3005
3011
|
</label>
|
|
@@ -3012,7 +3018,7 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
3012
3018
|
/>
|
|
3013
3019
|
</label>
|
|
3014
3020
|
</div>
|
|
3015
|
-
${
|
|
3021
|
+
${Kb(e)}
|
|
3016
3022
|
<div class="form-grid" style="margin-top: 12px;">
|
|
3017
3023
|
<label class="field">
|
|
3018
3024
|
<span>Timeout (seconds)</span>
|
|
@@ -3043,7 +3049,7 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
3043
3049
|
</div>
|
|
3044
3050
|
</div>
|
|
3045
3051
|
</div>
|
|
3046
|
-
`}function
|
|
3052
|
+
`}function Kb(e){const t=e.form.recipients;return d`
|
|
3047
3053
|
<div style="margin-top: 8px;">
|
|
3048
3054
|
<div style="display: flex; align-items: center; gap: 8px; margin-bottom: 8px;">
|
|
3049
3055
|
<span style="font-size: 13px; color: var(--muted);">Recipients</span>
|
|
@@ -3051,7 +3057,7 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
3051
3057
|
class="btn btn--sm"
|
|
3052
3058
|
@click=${()=>{e.onFormChange({recipients:[...t,""]})}}
|
|
3053
3059
|
>
|
|
3054
|
-
${
|
|
3060
|
+
${dd} Add
|
|
3055
3061
|
</button>
|
|
3056
3062
|
</div>
|
|
3057
3063
|
${t.length===0&&!e.form.toAdmins?d`<div class="muted" style="font-size: 12px; padding: 4px 0;">No recipients. Add a phone number or enable "All admins".</div>`:k}
|
|
@@ -3068,12 +3074,12 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
3068
3074
|
title="Remove"
|
|
3069
3075
|
@click=${()=>{const s=t.filter((o,r)=>r!==i);e.onFormChange({recipients:s})}}
|
|
3070
3076
|
>
|
|
3071
|
-
${
|
|
3077
|
+
${wr}
|
|
3072
3078
|
</button>
|
|
3073
3079
|
</div>
|
|
3074
3080
|
`)}
|
|
3075
3081
|
</div>
|
|
3076
|
-
`}function
|
|
3082
|
+
`}function zb(e){const t=e.form;return t.scheduleKind==="at"?d`
|
|
3077
3083
|
<label class="field" style="margin-top: 12px;">
|
|
3078
3084
|
<span>Run at</span>
|
|
3079
3085
|
<input
|
|
@@ -3122,13 +3128,13 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
3122
3128
|
/>
|
|
3123
3129
|
</label>
|
|
3124
3130
|
</div>
|
|
3125
|
-
`}function
|
|
3131
|
+
`}function qb(e,t){var n;return d`
|
|
3126
3132
|
<div class="event-modal-overlay" @click=${t.onDetailClose}>
|
|
3127
3133
|
<div class="event-modal" @click=${i=>i.stopPropagation()}>
|
|
3128
3134
|
<div class="event-modal__header">
|
|
3129
3135
|
<div class="event-modal__title">${e.name||"Untitled Event"}</div>
|
|
3130
3136
|
<button class="event-modal__close" @click=${t.onDetailClose}>
|
|
3131
|
-
${
|
|
3137
|
+
${wr}
|
|
3132
3138
|
</button>
|
|
3133
3139
|
</div>
|
|
3134
3140
|
|
|
@@ -3140,7 +3146,7 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
3140
3146
|
?disabled=${t.busy}
|
|
3141
3147
|
@click=${()=>t.onEdit(e)}
|
|
3142
3148
|
>
|
|
3143
|
-
${
|
|
3149
|
+
${Nb} Edit
|
|
3144
3150
|
</button>
|
|
3145
3151
|
<button
|
|
3146
3152
|
class="btn"
|
|
@@ -3176,7 +3182,7 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
3176
3182
|
</div>
|
|
3177
3183
|
<div class="event-detail-row">
|
|
3178
3184
|
<span class="event-detail-label">Schedule</span>
|
|
3179
|
-
<span class="event-detail-value">${
|
|
3185
|
+
<span class="event-detail-value">${ud(e)}</span>
|
|
3180
3186
|
</div>
|
|
3181
3187
|
${e.agentId?d`
|
|
3182
3188
|
<div class="event-detail-row">
|
|
@@ -3198,12 +3204,12 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
3198
3204
|
</div>
|
|
3199
3205
|
<div class="event-detail-row" style="flex-direction: column; align-items: stretch; gap: 4px;">
|
|
3200
3206
|
<span class="event-detail-label">Action</span>
|
|
3201
|
-
<span class="event-detail-value" style="text-align: left; white-space: pre-wrap; font-size: 12px; color: var(--muted); line-height: 1.5;">${
|
|
3207
|
+
<span class="event-detail-value" style="text-align: left; white-space: pre-wrap; font-size: 12px; color: var(--muted); line-height: 1.5;">${Tb(e,!1)}</span>
|
|
3202
3208
|
</div>
|
|
3203
3209
|
${e.payload.kind==="agentTurn"&&e.payload.to?d`
|
|
3204
3210
|
<div class="event-detail-row">
|
|
3205
3211
|
<span class="event-detail-label">Send to</span>
|
|
3206
|
-
<span class="event-detail-value mono">${
|
|
3212
|
+
<span class="event-detail-value mono">${Pb(e.payload.to)}</span>
|
|
3207
3213
|
</div>
|
|
3208
3214
|
`:k}
|
|
3209
3215
|
${e.payload.kind==="agentTurn"&&(e.payload.channel??e.payload.provider)?d`
|
|
@@ -3223,12 +3229,12 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
3223
3229
|
<div class="event-detail-section">
|
|
3224
3230
|
<div class="event-detail-row">
|
|
3225
3231
|
<span class="event-detail-label">Last run</span>
|
|
3226
|
-
<span class="event-detail-value">${
|
|
3232
|
+
<span class="event-detail-value">${cd(e)}</span>
|
|
3227
3233
|
</div>
|
|
3228
3234
|
${(n=e.state)!=null&&n.nextRunAtMs?d`
|
|
3229
3235
|
<div class="event-detail-row">
|
|
3230
3236
|
<span class="event-detail-label">Next run</span>
|
|
3231
|
-
<span class="event-detail-value">${
|
|
3237
|
+
<span class="event-detail-value">${Eb(e.state.nextRunAtMs)}</span>
|
|
3232
3238
|
</div>
|
|
3233
3239
|
`:k}
|
|
3234
3240
|
</div>
|
|
@@ -3239,21 +3245,21 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
3239
3245
|
</div>
|
|
3240
3246
|
${t.runs.length===0?d`<div class="muted" style="font-size: 13px;">No runs recorded yet.</div>`:d`
|
|
3241
3247
|
<div class="list">
|
|
3242
|
-
${[...t.runs].sort((i,s)=>s.ts-i.ts).map(i=>
|
|
3248
|
+
${[...t.runs].sort((i,s)=>s.ts-i.ts).map(i=>jb(i))}
|
|
3243
3249
|
</div>
|
|
3244
3250
|
`}
|
|
3245
3251
|
</div>
|
|
3246
3252
|
|
|
3247
3253
|
</div>
|
|
3248
3254
|
</div>
|
|
3249
|
-
`}function
|
|
3255
|
+
`}function Hb(e){const t=e.toLowerCase();return t==="ok"||t==="success"?"chip chip-ok":t==="error"||t==="fail"||t==="failed"?"chip chip-warn":"chip"}function jb(e){return d`
|
|
3250
3256
|
<div class="list-item" style="grid-template-columns: 1fr; gap: 6px;">
|
|
3251
3257
|
<div style="display: flex; align-items: center; gap: 8px; flex-wrap: wrap;">
|
|
3252
|
-
<span class=${
|
|
3258
|
+
<span class=${Hb(e.status)} style="font-size: 11px; padding: 2px 8px;">
|
|
3253
3259
|
${e.status}
|
|
3254
3260
|
</span>
|
|
3255
|
-
<span class="muted" style="font-size: 12px;">${
|
|
3256
|
-
<span class="muted" style="font-size: 12px;">${
|
|
3261
|
+
<span class="muted" style="font-size: 12px;">${Vi(e.ts)}</span>
|
|
3262
|
+
<span class="muted" style="font-size: 12px;">${Xl(e.durationMs)}</span>
|
|
3257
3263
|
</div>
|
|
3258
3264
|
${e.summary?d`<div class="muted" style="font-size: 12px;">${e.summary}</div>`:k}
|
|
3259
3265
|
${e.error?d`
|
|
@@ -3263,7 +3269,7 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
3263
3269
|
</details>
|
|
3264
3270
|
`:k}
|
|
3265
3271
|
</div>
|
|
3266
|
-
`}function
|
|
3272
|
+
`}function Vb(e){var s;const t=((s=e.report)==null?void 0:s.skills)??[],n=e.filter.trim().toLowerCase(),i=n?t.filter(o=>[o.name,o.description,o.preloaded?"preloaded":"user"].join(" ").toLowerCase().includes(n)):t;return d`
|
|
3267
3273
|
<section class="card">
|
|
3268
3274
|
<div class="row" style="justify-content: space-between;">
|
|
3269
3275
|
<div>
|
|
@@ -3294,20 +3300,20 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
3294
3300
|
|
|
3295
3301
|
${i.length===0?d`<div class="muted" style="margin-top: 16px;">No skills found.</div>`:d`
|
|
3296
3302
|
<div class="list" style="margin-top: 16px;">
|
|
3297
|
-
${i.map(o=>
|
|
3303
|
+
${i.map(o=>Gb(o,e))}
|
|
3298
3304
|
</div>
|
|
3299
3305
|
`}
|
|
3300
3306
|
</section>
|
|
3301
3307
|
|
|
3302
|
-
${e.detail?
|
|
3303
|
-
${e.addModal
|
|
3304
|
-
`}function
|
|
3308
|
+
${e.detail?Qb(e):k}
|
|
3309
|
+
${e.addModal?Yb(e):k}
|
|
3310
|
+
`}function Gb(e,t){const n=t.busyKey===e.skillKey,i=t.edits[e.skillKey]??"",s=t.messages[e.skillKey]??null,o=e.install.length>0&&e.missing.bins.length>0,r=[...e.missing.bins.map(u=>`bin:${u}`),...e.missing.env.map(u=>`env:${u}`),...e.missing.config.map(u=>`config:${u}`),...e.missing.os.map(u=>`os:${u}`)],a=[];return e.disabled&&a.push("disabled"),e.blockedByAllowlist&&a.push("blocked by allowlist"),d`
|
|
3305
3311
|
<div class="list-item" style="cursor: pointer;" @click=${()=>t.onViewDetail(e.name)}>
|
|
3306
3312
|
<div class="list-main">
|
|
3307
3313
|
<div class="list-title">
|
|
3308
3314
|
${e.emoji?`${e.emoji} `:""}${e.name}
|
|
3309
3315
|
</div>
|
|
3310
|
-
<div class="list-sub">${
|
|
3316
|
+
<div class="list-sub">${_p(e.description,140)}</div>
|
|
3311
3317
|
<div class="chip-row" style="margin-top: 6px;">
|
|
3312
3318
|
<span class="chip ${e.preloaded?"chip-ok":""}">
|
|
3313
3319
|
${e.preloaded?"Preloaded":"User"}
|
|
@@ -3382,7 +3388,7 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
3382
3388
|
`:k}
|
|
3383
3389
|
</div>
|
|
3384
3390
|
</div>
|
|
3385
|
-
`}function
|
|
3391
|
+
`}function Qb(e){var r;const t=e.detail,n=["SKILL.md",...t.references.map(a=>a.name)],i=e.detailTab||"SKILL.md",s=i==="SKILL.md"?t.content:((r=t.references.find(a=>a.name===i))==null?void 0:r.content)??"";return d`
|
|
3386
3392
|
<div class="event-modal-overlay" @click=${a=>{a.target.classList.contains("event-modal-overlay")&&e.onDetailClose()}}>
|
|
3387
3393
|
<div class="event-modal" style="width: min(720px, 100%);" @click=${a=>a.stopPropagation()}>
|
|
3388
3394
|
<div class="event-modal__header">
|
|
@@ -3405,7 +3411,7 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
3405
3411
|
<pre style="white-space: pre-wrap; word-break: break-word; font-size: 12px; line-height: 1.5; max-height: 60vh; overflow-y: auto; background: var(--bg, #111); padding: 16px; border-radius: 8px; border: 1px solid var(--border);">${s}</pre>
|
|
3406
3412
|
</div>
|
|
3407
3413
|
</div>
|
|
3408
|
-
`}function
|
|
3414
|
+
`}function Yb(e){const t=e.drafts.length>0,n=e.busyKey==="__add__";return d`
|
|
3409
3415
|
<div class="event-modal-overlay" @click=${s=>{s.target.classList.contains("event-modal-overlay")&&e.onAddClose()}}>
|
|
3410
3416
|
<div class="event-modal" style="width: min(520px, 100%);" @click=${s=>s.stopPropagation()}>
|
|
3411
3417
|
<div class="event-modal__header">
|
|
@@ -3454,17 +3460,17 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
3454
3460
|
`}
|
|
3455
3461
|
</div>
|
|
3456
3462
|
</div>
|
|
3457
|
-
`}const
|
|
3463
|
+
`}const Xb=["user","assistant","tool_call","tool_result","thinking","error"],kl={user:"User",assistant:"Assistant",tool:"Tool",tool_call:"Call",tool_result:"Result",thinking:"Thinking",error:"Error",system:"System"};function pd(e){return e==="tool"?"tool_call":e}function Jb(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 Zb(e){return e.split(":").slice(2).join(":")||e}function ew(e,t){return t?[e.content,e.agentId,e.sessionKey,e.sessionId,e.toolName,e.toolCallId].filter(Boolean).join(" ").toLowerCase().includes(t):!0}function tw(e,t){return`${e.sessionId}:${e.timestamp}:${t}`}const Sl=300;function nw(e,t){const n=pd(e);return t[n]??!0}function iw(e){const t=e.filterText.trim().toLowerCase(),n=e.entries.filter(i=>!nw(i.type,e.typeFilters)||e.agents.length>0&&!(e.agentFilters[i.agentId]??!0)?!1:ew(i,t));return d`
|
|
3458
3464
|
<div>
|
|
3459
3465
|
<div class="chip-row" style="margin-top: 10px;">
|
|
3460
|
-
${
|
|
3466
|
+
${Xb.map(i=>d`
|
|
3461
3467
|
<label class="chip session-log-chip ${i}">
|
|
3462
3468
|
<input
|
|
3463
3469
|
type="checkbox"
|
|
3464
3470
|
.checked=${e.typeFilters[i]}
|
|
3465
3471
|
@change=${s=>e.onTypeToggle(i,s.target.checked)}
|
|
3466
3472
|
/>
|
|
3467
|
-
<span>${
|
|
3473
|
+
<span>${kl[i]}</span>
|
|
3468
3474
|
</label>
|
|
3469
3475
|
`)}
|
|
3470
3476
|
${e.agents.map(i=>d`
|
|
@@ -3490,13 +3496,13 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
3490
3496
|
${e.error?d`<div class="callout danger" style="margin-top: 10px;">${e.error}</div>`:k}
|
|
3491
3497
|
|
|
3492
3498
|
<div class="log-stream" style="margin-top: 10px;" @scroll=${e.onScroll}>
|
|
3493
|
-
${n.length===0?d`<div class="muted" style="padding: 12px;">No session log entries.</div>`:n.map((i,s)=>{const o=
|
|
3499
|
+
${n.length===0?d`<div class="muted" style="padding: 12px;">No session log entries.</div>`:n.map((i,s)=>{const o=pd(i.type),r=tw(i,s),a=e.expandedIds.has(r),u=i.content.length>Sl,c=a||!u?i.content:i.content.slice(0,Sl)+"…";return d`
|
|
3494
3500
|
<div class="log-row session-entry ${o}">
|
|
3495
3501
|
<div class="log-row-header">
|
|
3496
|
-
<span class="log-time mono">${
|
|
3497
|
-
<span class="session-log-type ${o}">${
|
|
3502
|
+
<span class="log-time mono">${Jb(i.timestamp)}</span>
|
|
3503
|
+
<span class="session-log-type ${o}">${kl[o]}</span>
|
|
3498
3504
|
<span class="log-subsystem mono">${i.agentId}</span>
|
|
3499
|
-
<span class="session-label mono">${
|
|
3505
|
+
<span class="session-label mono">${Zb(i.sessionKey)}</span>
|
|
3500
3506
|
${i.toolName?d`<span class="session-tool mono">${i.toolName}</span>`:k}
|
|
3501
3507
|
${i.toolCallId?d`<span class="session-call-id mono">${i.toolCallId.slice(0,12)}</span>`:k}
|
|
3502
3508
|
${i.model?d`<span class="session-model mono">${i.model}</span>`:k}
|
|
@@ -3510,7 +3516,7 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
3510
3516
|
`})}
|
|
3511
3517
|
</div>
|
|
3512
3518
|
</div>
|
|
3513
|
-
`}const
|
|
3519
|
+
`}const xo=["trace","debug","info","warn","error","fatal"];function sw(e){if(!e)return"";const t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleTimeString()}function hd(e,t){return t?[e.message,e.subsystem,e.raw].filter(Boolean).join(" ").toLowerCase().includes(t):!0}function ow(e){const t=e.logsSubTab==="session";return d`
|
|
3514
3520
|
<section class="card">
|
|
3515
3521
|
<div class="logs-toolbar">
|
|
3516
3522
|
<div class="sp-tabs" style="margin: 0;">
|
|
@@ -3559,7 +3565,7 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
3559
3565
|
<button
|
|
3560
3566
|
class="btn btn-sm"
|
|
3561
3567
|
?disabled=${e.entries.length===0}
|
|
3562
|
-
@click=${()=>{const n=e.filterText.trim().toLowerCase(),i=
|
|
3568
|
+
@click=${()=>{const n=e.filterText.trim().toLowerCase(),i=xo.some(r=>!e.levelFilters[r]),s=e.entries.filter(r=>r.level&&!e.levelFilters[r.level]?!1:hd(r,n)),o=n||i?"filtered":"visible";e.onExport(s.map(r=>r.raw),o)}}
|
|
3563
3569
|
>
|
|
3564
3570
|
Export
|
|
3565
3571
|
</button>
|
|
@@ -3567,11 +3573,11 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
3567
3573
|
</div>
|
|
3568
3574
|
</div>
|
|
3569
3575
|
|
|
3570
|
-
${t?
|
|
3576
|
+
${t?iw(e.sessionLogsProps):rw(e)}
|
|
3571
3577
|
</section>
|
|
3572
|
-
`}function
|
|
3578
|
+
`}function rw(e){const t=e.filterText.trim().toLowerCase();xo.some(i=>!e.levelFilters[i]);const n=e.entries.filter(i=>i.level&&!e.levelFilters[i.level]?!1:hd(i,t));return d`
|
|
3573
3579
|
<div class="chip-row" style="margin-top: 10px; align-items: center;">
|
|
3574
|
-
${
|
|
3580
|
+
${xo.map(i=>d`
|
|
3575
3581
|
<label class="chip log-chip ${i}">
|
|
3576
3582
|
<input
|
|
3577
3583
|
type="checkbox"
|
|
@@ -3601,7 +3607,7 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
3601
3607
|
${n.length===0?d`<div class="muted" style="padding: 12px;">No log entries.</div>`:[...n].reverse().map(i=>d`
|
|
3602
3608
|
<div class="log-row">
|
|
3603
3609
|
<div class="log-row-header">
|
|
3604
|
-
<span class="log-time mono">${
|
|
3610
|
+
<span class="log-time mono">${sw(i.time)}</span>
|
|
3605
3611
|
<span class="log-level ${i.level??""}">${i.level??""}</span>
|
|
3606
3612
|
<span class="log-subsystem mono">${i.subsystem??""}</span>
|
|
3607
3613
|
</div>
|
|
@@ -3609,12 +3615,12 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
3609
3615
|
</div>
|
|
3610
3616
|
`)}
|
|
3611
3617
|
</div>
|
|
3612
|
-
`}const
|
|
3618
|
+
`}const aw=[{id:"cron",label:"Events"},{id:"skills",label:"Skills"},{id:"logs",label:"Logs"}];function lw(e){switch(e.activeTab){case"cron":return wl(e.cronProps);case"skills":return Vb(e.skillsProps);case"logs":return ow(e.logsProps);default:return wl(e.cronProps)}}function cw(e){return e.connected?d`
|
|
3613
3619
|
<div class="setup-container">
|
|
3614
|
-
${
|
|
3620
|
+
${Tt("Advanced",e.wsProps)}
|
|
3615
3621
|
<div class="setup-card sp-card-advanced" style="text-align: left;">
|
|
3616
3622
|
<div class="sp-tabs">
|
|
3617
|
-
${
|
|
3623
|
+
${aw.map(t=>d`
|
|
3618
3624
|
<button
|
|
3619
3625
|
class="sp-tab ${e.activeTab===t.id?"active":""}"
|
|
3620
3626
|
@click=${()=>e.onTabChange(t.id)}
|
|
@@ -3623,7 +3629,7 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
3623
3629
|
</button>
|
|
3624
3630
|
`)}
|
|
3625
3631
|
</div>
|
|
3626
|
-
${
|
|
3632
|
+
${lw(e)}
|
|
3627
3633
|
</div>
|
|
3628
3634
|
</div>
|
|
3629
3635
|
`:d`
|
|
@@ -3633,7 +3639,7 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
3633
3639
|
<p>Connecting to gateway...</p>
|
|
3634
3640
|
</div>
|
|
3635
3641
|
</div>
|
|
3636
|
-
`}function
|
|
3642
|
+
`}function $l(e){if(!e.show)return k;const t=je(),n=e.isFirstTime,i=e.changePinMode===!0&&!n,s=e.changePinBusy===!0;let o=e.accounts.length>0?e.accounts[0].id:"";const r=b=>{var v;o=b.target.value;const h=(v=b.target.closest(".login-card"))==null?void 0:v.querySelector(".login-change-pin");h&&(h.style.display=o==="__master__"?"":"none")},a=b=>h=>{const v=h.target;v.value=v.value.replace(/\D/g,"").slice(0,6),b(v.value)},u=b=>{const h=b.currentTarget,v=h.closest(".login-pin-wrapper"),S=v==null?void 0:v.querySelector("input");if(!S)return;const $=S.type==="text";S.type=$?"password":"text",h.classList.toggle("active",!$)},c=!n&&e.accounts.length>1?d`
|
|
3637
3643
|
<select
|
|
3638
3644
|
class="login-account-select"
|
|
3639
3645
|
@change=${r}
|
|
@@ -3787,7 +3793,7 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
3787
3793
|
</p>`:k}
|
|
3788
3794
|
</div>
|
|
3789
3795
|
</div>
|
|
3790
|
-
`}function
|
|
3796
|
+
`}function uw(e){if(!e.connected)return d`
|
|
3791
3797
|
<div class="setup-container">
|
|
3792
3798
|
<div class="setup-card">
|
|
3793
3799
|
<div class="setup-spinner"></div>
|
|
@@ -3800,17 +3806,17 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
3800
3806
|
<span class="public-chat-header__name">${n}</span>
|
|
3801
3807
|
</div>
|
|
3802
3808
|
<div class="chat-viewport">
|
|
3803
|
-
${
|
|
3809
|
+
${ld(t)}
|
|
3804
3810
|
</div>
|
|
3805
3811
|
</div>
|
|
3806
|
-
`}async function Ob(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 Ln(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 Fb(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 o=await e.client.request("config.get",{});e.configSnapshot=o;const r=o.hash;if(!r){e.workspacesError="Config hash missing; reload and retry.";return}const a={name:n,baseHash:r,whatsappAccountName:n};(i=t.workspacePath)!=null&&i.trim()&&(a.workspaceDir=t.workspacePath.trim());const u=await e.client.request("workspaces.create",a);e.addingWorkspace=!1,e.newWorkspaceName="",e.newWorkspacePath="",await Ln(e),(s=t.onCreated)==null||s.call(t,u)}catch(o){e.workspacesError=String(o)}finally{e.workspaceSaving=!1}}async function Ub(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 Ln(e)}catch(n){e.workspacesError=String(n)}finally{e.workspaceSaving=!1}}}async function Wb(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 Ln(e)}catch(i){e.workspacesError=String(i)}}}const oi=Object.freeze(Object.defineProperty({__proto__:null,createWorkspace:Fb,loadWorkspaces:Ln,removeWorkspace:Ub,renameWorkspace:Wb},Symbol.toStringTag,{value:"Module"})),Yu={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"},al=Yu,po={WEBCHAT:"webchat",CLI:"cli",UI:"ui",BACKEND:"backend",NODE:"node",PROBE:"probe",TEST:"test"};new Set(Object.values(Yu));new Set(Object.values(po));function Kb(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 zb=4008;class qb{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 p;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 o=null,r=!1,a=this.opts.token;if(s){o=await Ch();const f=(p=Mh({deviceId:o.deviceId,role:t}))==null?void 0:p.token;a=f??this.opts.token,r=!!(f&&this.opts.token)}const u=a||this.opts.password?{token:a,password:this.opts.password}:void 0;let c;if(s&&o){const f=Date.now(),b=this.connectNonce??void 0,h=Kb({deviceId:o.deviceId,clientId:this.opts.clientName??al.CONTROL_UI,clientMode:this.opts.mode??po.WEBCHAT,role:t,scopes:n,signedAtMs:f,token:a??null,nonce:b}),v=await Th(o.privateKey,h);c={id:o.deviceId,publicKey:o.publicKey,signature:v,signedAt:f,nonce:b}}const l={minProtocol:3,maxProtocol:3,client:{id:this.opts.clientName??al.CONTROL_UI,version:this.opts.clientVersion??"dev",platform:this.opts.platform??navigator.platform??"web",mode:this.opts.mode??po.WEBCHAT,instanceId:this.opts.instanceId},role:t,scopes:n,device:c,caps:[],auth:u,userAgent:navigator.userAgent,locale:navigator.language};this.request("connect",l).then(f=>{var b,h,v;(b=f==null?void 0:f.auth)!=null&&b.deviceToken&&o&&Ph({deviceId:o.deviceId,role:f.auth.role??t,token:f.auth.deviceToken,scopes:f.auth.scopes??[]}),this.backoffMs=800,(v=(h=this.opts).onHello)==null||v.call(h,f)}).catch(()=>{var f;r&&o&&Lh({deviceId:o.deviceId,role:t}),(f=this.ws)==null||f.close(zb,"connect failed")})}handleMessage(t){var s,o,r,a,u,c;let n;try{n=JSON.parse(t)}catch{return}const i=n;if(i.type==="event"){const l=n;if(l.event==="connect.challenge"){const f=l.payload,b=f&&typeof f.nonce=="string"?f.nonce:null;b&&(this.connectNonce=b,this.sendConnect());return}const p=typeof l.seq=="number"?l.seq:null;p!==null&&(this.lastSeq!==null&&p>this.lastSeq+1&&((o=(s=this.opts).onGap)==null||o.call(s,{expected:this.lastSeq+1,received:p})),this.lastSeq=p);try{(a=(r=this.opts).onEvent)==null||a.call(r,l)}catch(f){console.error("[gateway] event handler error:",f)}return}if(i.type==="res"){const l=n,p=this.pending.get(l.id);if(!p)return;if(this.pending.delete(l.id),l.ok)p.resolve(l.payload);else{const f=new Error(((u=l.error)==null?void 0:u.message)??"request failed");f.payload=l.payload,f.details=(c=l.error)==null?void 0:c.details,p.reject(f)}return}}request(t,n){if(!this.ws||this.ws.readyState!==WebSocket.OPEN)return Promise.reject(new Error("gateway not connected"));const i=Fi(),s={type:"req",id:i,method:t,params:n},o=new Promise((r,a)=>{this.pending.set(i,{resolve:u=>r(u),reject:a})});return this.ws.send(JSON.stringify(s)),o}queueConnect(){this.connectNonce=null,this.connectSent=!1,this.connectTimer!==null&&window.clearTimeout(this.connectTimer),this.connectTimer=window.setTimeout(()=>{this.sendConnect()},750)}}function ho(e){return typeof e=="object"&&e!==null}function Hb(e){if(!ho(e))return null;const t=typeof e.id=="string"?e.id.trim():"",n=e.request;if(!t||!ho(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,o=typeof e.expiresAtMs=="number"?e.expiresAtMs:0;return!s||!o?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:o}}function jb(e){if(!ho(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 Xu(e){const t=Date.now();return e.filter(n=>n.expiresAtMs>t)}function Vb(e,t){const n=Xu(e).filter(i=>i.id!==t.id);return n.push(t),n}function ll(e,t){return Xu(e).filter(n=>n.id!==t)}class Gb{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,o=this.canvas.height/i.height,r=this.deviceWidth/this.canvas.width,a=this.deviceHeight/this.canvas.height;return{x:Math.round(t*s*r),y:Math.round(n*o*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 Bs=null;function An(){return Bs||(Bs=new Gb),Bs}function rr(e){return e instanceof Error?e.message:String(e)}async function Qb(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=rr(t)}finally{e.browserLoading=!1}}async function Yb(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=rr(t)}finally{e.browserLoading=!1}}}async function Ns(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 Os(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 Xb(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=rr(t)}}function Jb(e){e.browserInputMode=!e.browserInputMode}function Zb(e){e.browserFullscreen=!e.browserFullscreen,An().detach()}function ew(e,t){if(!(t!=null&&t.data))return;e.browserScreencastFrame=t.data,e.browserScreencastMetadata=t.metadata??null,An().updateFrame(t.data,t.metadata)}function tw(e,t){t&&(e.browserHandoffPending=!0,e.browserHandoffReason=t.reason??"Action required",e.browserHandoffId=t.id??null)}function nw(e){e.browserHandoffPending=!1,e.browserHandoffReason=null,e.browserHandoffId=null}async function fo(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 o=zs(s);e.assistantName=o.name,e.assistantAvatar=o.avatar,e.assistantAgentId=o.agentId??null}catch{}}async function pi(e){return(await e.request("apikeys.list")).providers??[]}async function cl(e,t,n){await e.request("apikeys.set",{provider:t,apiKey:n})}async function iw(e,t){await e.request("apikeys.remove",{provider:t})}async function sw(e,t,n){await e.request("apikeys.disable",{provider:t,disabled:n})}const Ii="taskmaster_update_pending";async function Ju(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 ow(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(Ii,String(Date.now())),localStorage.removeItem(ar)}catch{}try{const o=await e.client.request("update.run",{restartDelayMs:2e3,note:"Update from setup page"});if(o.ok&&o.result.status==="ok")e.updateMessage="Updated — restarting gateway...",(n=e.requestUpdate)==null||n.call(e);else if(o.ok&&o.result.status==="skipped")xn(),e.updateMessage=o.result.reason||"Update skipped",e.updateRunning=!1,(i=e.requestUpdate)==null||i.call(e);else throw xn(),new Error(o.result.reason||"Update failed")}catch(o){xn(),e.updateMessage=`Update failed: ${String(o)}`,e.updateRunning=!1,e.updateProgressSteps=[],(s=e.requestUpdate)==null||s.call(e)}}}function rw(e,t){var i,s,o;const n=t.phase;if(n==="step-start"){const r=t.name,a=t.index,u=t.total;e.updateMessage=`Updating: ${r} (${a+1}/${u})`;const c=e.updateProgressSteps.find(l=>l.index===a);c?(c.status="running",c.name=r):e.updateProgressSteps=[...e.updateProgressSteps,{name:r,index:a,total:u,status:"running"}],(i=e.requestUpdate)==null||i.call(e)}else if(n==="step-done"){const r=t.name,a=t.index,u=t.total,c=t.ok,l=t.durationMs,p=e.updateProgressSteps.find(b=>b.index===a);p?(p.status=c?"done":"failed",p.durationMs=l):e.updateProgressSteps=[...e.updateProgressSteps,{name:r,index:a,total:u,status:c?"done":"failed",durationMs:l}];const f=!c&&t.error?`: ${t.error.slice(0,200)}`:"";e.updateMessage=c?`Updating: ${r} done (${a+1}/${u})`:`Update step failed: ${r}${f}`,(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,xn()}(o=e.requestUpdate)==null||o.call(e)}}async function aw(e){var n,i,s,o;if(!e.client||!e.connected)return;const t=cw();xn();try{const r=await e.client.request("update.lastResult",{});if(!r.ok||!r.result)return;const a=5*6e4,u=Date.now()-r.result.ts<a;if(!t&&!u||uw(r.result.ts))return;e.updateLastResult=r.result;const c=(n=r.result.after)==null?void 0:n.version;if(r.result.status==="ok"&&c&&(e.currentVersion=c),e.updateAvailable=!1,r.result.status==="ok"){const l=(i=r.result.before)==null?void 0:i.version,p=c??r.result.currentVersion;e.updateMessage=l?`Updated: v${l} → v${p}`:`Updated to v${p}`}else{const l=r.result.reason??((s=r.result.failedStep)==null?void 0:s.name)??"unknown error";e.updateMessage=`Update failed: ${l}`}}catch{}finally{e.updateRunning=!1,e.updateProgressSteps=[],(o=e.requestUpdate)==null||o.call(e)}}const ar="taskmaster_update_dismissed";function lw(e){var t;e.updateLastResult=null,e.updateMessage=null;try{localStorage.setItem(ar,String(Date.now()))}catch{}(t=e.requestUpdate)==null||t.call(e)}function cw(){try{const e=localStorage.getItem(Ii);return e?Date.now()-Number(e)>30*6e4?(localStorage.removeItem(Ii),!1):!0:!1}catch{return!1}}function xn(){try{localStorage.removeItem(Ii)}catch{}}function uw(e){try{const t=localStorage.getItem(ar);return t?Number(t)>=e:!1}catch{return!1}}function Fs(e,t){var a,u,c;const n=(e??"").trim(),i=(a=t.mainSessionKey)==null?void 0:a.trim();if(!i)return n;if(!n)return i;const s=((u=t.mainKey)==null?void 0:u.trim())||"main",o=(c=t.defaultAgentId)==null?void 0:c.trim();return n==="main"||n===s||o&&(n===`agent:${o}:main`||n===`agent:${o}:${s}`)?i:n}function dw(e,t){if(!(t!=null&&t.mainSessionKey))return;const n=Fs(e.sessionKey,t),i=Fs(e.settings.sessionKey,t),s=Fs(e.settings.lastActiveSessionKey,t),o=n||i||e.sessionKey,r={...e.settings,sessionKey:i||o,lastActiveSessionKey:s||o},a=r.sessionKey!==e.settings.sessionKey||r.lastActiveSessionKey!==e.settings.lastActiveSessionKey;o!==e.sessionKey&&(e.sessionKey=o),a&&tt(e,r)}function Pe(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.contactsPage||e.advancedPage,i=t?"public-chat":n?"setup-ui":"taskmaster-control-ui";(s=e.client)==null||s.stop(),e.client=new qb({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:o=>{var r;if(e.connected=!0,e.lastError=null,e.hello=o,t){ul(e,o),fo(e),(((r=e.publicChatConfig)==null?void 0:r.auth)??"anonymous")==="anonymous"&&vw(e);return}$i()&&(Wo(),e.uninstallDone=!1),ul(e,o),e.handleAccessCheck(),aw(e).then(()=>{Ju(e)}),fo(e),Ob(e),(e.chatPage||e.setup)&&fw(e),Mo(e,{quiet:!0}),_o(e,{quiet:!0}),Ln(e).then(()=>{e.initWorkspaceSelection()}),e.startEmbeddingPoll(),(e.setup||e.chatPage)&&Be(e),e.setup&&(gw(e),mw(e),yw(e)),ki(e)},onClose:({code:o,reason:r})=>{e.connected=!1,o!==1012&&(e.lastError=`disconnected (${o}): ${r||"no reason"}`)},onEvent:o=>pw(e,o),onGap:({expected:o,received:r})=>{console.warn(`[gateway] event gap: expected seq ${o}, got ${r}`),ki(e)}}),e.client.start()}function pw(e,t){try{hw(e,t)}catch(n){console.error("[gateway] handleGatewayEvent error:",t.event,n)}}function hw(e,t){var n;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;Ip(e,t.payload);return}if(t.event==="chat"){const i=t.payload;i!=null&&i.sessionKey&&Oc(e,i.sessionKey);const s=zl(e,i);if((s==="final"||s==="error"||s==="aborted")&&(ko(e),Af(e)),s==="final"){const o=e,r=Math.max((((n=o.chatMessages)==null?void 0:n.length)??0)+10,De);Re(o,{limit:r})}return}if(t.event==="suggestions"){const i=t.payload;(i==null?void 0:i.sessionKey)===e.sessionKey&&Array.isArray(i.suggestions)&&i.suggestions.length>0&&(e.chatSuggestion=i.suggestions[0]);return}if(t.event==="presence"){const i=t.payload;i!=null&&i.presence&&Array.isArray(i.presence)&&(e.presenceEntries=i.presence,e.presenceError=null,e.presenceStatus=null);return}if(t.event==="cron"&&e.tab==="cron"&&Fo(e),(t.event==="device.pair.requested"||t.event==="device.pair.resolved")&&_o(e,{quiet:!0}),t.event==="exec.approval.requested"){const i=Hb(t.payload);if(i){e.execApprovalQueue=Vb(e.execApprovalQueue,i),e.execApprovalError=null;const s=Math.max(0,i.expiresAtMs-Date.now()+500);window.setTimeout(()=>{e.execApprovalQueue=ll(e.execApprovalQueue,i.id)},s)}return}if(t.event==="browser.screencast.frame"){ew(e,t.payload);return}if(t.event==="browser.handoff"){tw(e,t.payload),e.browserPage||(window.location.href="/browser");return}if(t.event==="browser.handoff.resolved"){nw(e);return}if(t.event==="exec.approval.resolved"){const i=jb(t.payload);i&&(e.execApprovalQueue=ll(e.execApprovalQueue,i.id));return}if(t.event==="update.progress"){rw(e,t.payload);return}}function ul(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&&dw(e,n.sessionDefaults)}async function fw(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 gw(e){if(!(!e.client||!e.connected))try{e.apiKeyProviders=await pi(e.client)}catch{}}async function mw(e){if(!(!e.client||!e.connected))try{e.tailscaleStatus=await e.client.request("tailscale.status")}catch{}}async function yw(e){if(!(!e.client||!e.connected))try{e.wifiStatus=await e.client.request("wifi.status")}catch{}}const dl="taskmaster_public_id";function Zu(e=30){var s;const t=document.cookie.split(";").map(o=>o.trim()).find(o=>o.startsWith(`${dl}=`));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=`${dl}=${n}; path=/; expires=${i}; SameSite=Lax`,n}async function vw(e){var n,i;if(!e.client||!e.connected)return;const t=Zu((n=e.publicChatConfig)==null?void 0:n.cookieTtlDays);try{const s=(i=e.publicChatConfig)==null?void 0:i.accountId,o=await e.client.request("public.session",{cookieId:t,accountId:s});o!=null&&o.sessionKey&&(e.publicChatSessionKey=o.sessionKey,e.sessionKey=o.sessionKey,e.publicChatAuthenticated=!0,e.publicChatAuthStep="ready",Re(e))}catch(s){console.error("[public-chat] failed to resolve anonymous session:",s),e.lastError="Failed to start chat session"}}let xe=!1,he=null,Ht="",Ri="";function ed(e){return e.replace(/[\s\-()]/g,"")}function td(){xe=!1,he=null,Ht="",Ri=""}async function bw(e){if(!e.client||!e.connected)return;const t=Zu(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){he=n instanceof Error?n.message:"Failed to start session",e.requestUpdate()}}async function pl(e){if(!e.client||xe)return;const t=ed(Ht);if(!t){he="Please enter your phone number",e.requestUpdate();return}xe=!0,he=null,e.requestUpdate();try{const n=await e.client.request("public.otp.request",{phone:t,name:Ri.trim()||void 0,accountId:e.accountId});n!=null&&n.ok?e.onAuthStepChange("otp"):he=(n==null?void 0:n.error)??"Failed to send verification code"}catch(n){he=n instanceof Error?n.message:"Failed to send verification code"}finally{xe=!1,e.requestUpdate()}}async function hl(e,t){if(!(!e.client||xe)){if(!t.trim()){he="Please enter the verification code",e.requestUpdate();return}xe=!0,he=null,e.requestUpdate();try{const n=await e.client.request("public.otp.verify",{phone:ed(Ht),code:t.trim(),accountId:e.accountId});n!=null&&n.ok&&n.sessionKey?(td(),e.onAuthenticated(n.sessionKey)):he=(n==null?void 0:n.error)??"Invalid verification code"}catch(n){he=n instanceof Error?n.message:"Verification failed"}finally{xe=!1,e.requestUpdate()}}}function Us(e){return k}function fl(e){return d`
|
|
3812
|
+
`}async function dw(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 Fn(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 pw(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 o=await e.client.request("config.get",{});e.configSnapshot=o;const r=o.hash;if(!r){e.workspacesError="Config hash missing; reload and retry.";return}const a={name:n,baseHash:r,whatsappAccountName:n};(i=t.workspacePath)!=null&&i.trim()&&(a.workspaceDir=t.workspacePath.trim());const u=await e.client.request("workspaces.create",a);e.addingWorkspace=!1,e.newWorkspaceName="",e.newWorkspacePath="",await Fn(e),(s=t.onCreated)==null||s.call(t,u)}catch(o){e.workspacesError=String(o)}finally{e.workspaceSaving=!1}}async function hw(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 Fn(e)}catch(n){e.workspacesError=String(n)}finally{e.workspaceSaving=!1}}}async function fw(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 Fn(e)}catch(i){e.workspacesError=String(i)}}}const pi=Object.freeze(Object.defineProperty({__proto__:null,createWorkspace:pw,loadWorkspaces:Fn,removeWorkspace:hw,renameWorkspace:fw},Symbol.toStringTag,{value:"Module"})),fd={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"},Al=fd,Eo={WEBCHAT:"webchat",CLI:"cli",UI:"ui",BACKEND:"backend",NODE:"node",PROBE:"probe",TEST:"test"};new Set(Object.values(fd));new Set(Object.values(Eo));function gw(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 mw=4008;class yw{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 p;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 o=null,r=!1,a=this.opts.token;if(s){o=await Vh();const f=(p=Yh({deviceId:o.deviceId,role:t}))==null?void 0:p.token;a=f??this.opts.token,r=!!(f&&this.opts.token)}const u=a||this.opts.password?{token:a,password:this.opts.password}:void 0;let c;if(s&&o){const f=Date.now(),b=this.connectNonce??void 0,h=gw({deviceId:o.deviceId,clientId:this.opts.clientName??Al.CONTROL_UI,clientMode:this.opts.mode??Eo.WEBCHAT,role:t,scopes:n,signedAtMs:f,token:a??null,nonce:b}),v=await Gh(o.privateKey,h);c={id:o.deviceId,publicKey:o.publicKey,signature:v,signedAt:f,nonce:b}}const l={minProtocol:3,maxProtocol:3,client:{id:this.opts.clientName??Al.CONTROL_UI,version:this.opts.clientVersion??"dev",platform:this.opts.platform??navigator.platform??"web",mode:this.opts.mode??Eo.WEBCHAT,instanceId:this.opts.instanceId},role:t,scopes:n,device:c,caps:[],auth:u,userAgent:navigator.userAgent,locale:navigator.language};this.request("connect",l).then(f=>{var b,h,v;(b=f==null?void 0:f.auth)!=null&&b.deviceToken&&o&&Xh({deviceId:o.deviceId,role:f.auth.role??t,token:f.auth.deviceToken,scopes:f.auth.scopes??[]}),this.backoffMs=800,(v=(h=this.opts).onHello)==null||v.call(h,f)}).catch(()=>{var f;r&&o&&Jh({deviceId:o.deviceId,role:t}),(f=this.ws)==null||f.close(mw,"connect failed")})}handleMessage(t){var s,o,r,a,u,c;let n;try{n=JSON.parse(t)}catch{return}const i=n;if(i.type==="event"){const l=n;if(l.event==="connect.challenge"){const f=l.payload,b=f&&typeof f.nonce=="string"?f.nonce:null;b&&(this.connectNonce=b,this.sendConnect());return}const p=typeof l.seq=="number"?l.seq:null;p!==null&&(this.lastSeq!==null&&p>this.lastSeq+1&&((o=(s=this.opts).onGap)==null||o.call(s,{expected:this.lastSeq+1,received:p})),this.lastSeq=p);try{(a=(r=this.opts).onEvent)==null||a.call(r,l)}catch(f){console.error("[gateway] event handler error:",f)}return}if(i.type==="res"){const l=n,p=this.pending.get(l.id);if(!p)return;if(this.pending.delete(l.id),l.ok)p.resolve(l.payload);else{const f=new Error(((u=l.error)==null?void 0:u.message)??"request failed");f.payload=l.payload,f.details=(c=l.error)==null?void 0:c.details,p.reject(f)}return}}request(t,n){if(!this.ws||this.ws.readyState!==WebSocket.OPEN)return Promise.reject(new Error("gateway not connected"));const i=Gi(),s={type:"req",id:i,method:t,params:n},o=new Promise((r,a)=>{this.pending.set(i,{resolve:u=>r(u),reject:a})});return this.ws.send(JSON.stringify(s)),o}queueConnect(){this.connectNonce=null,this.connectSent=!1,this.connectTimer!==null&&window.clearTimeout(this.connectTimer),this.connectTimer=window.setTimeout(()=>{this.sendConnect()},750)}}function Co(e){return typeof e=="object"&&e!==null}function vw(e){if(!Co(e))return null;const t=typeof e.id=="string"?e.id.trim():"",n=e.request;if(!t||!Co(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,o=typeof e.expiresAtMs=="number"?e.expiresAtMs:0;return!s||!o?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:o}}function bw(e){if(!Co(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 gd(e){const t=Date.now();return e.filter(n=>n.expiresAtMs>t)}function ww(e,t){const n=gd(e).filter(i=>i.id!==t.id);return n.push(t),n}function xl(e,t){return gd(e).filter(n=>n.id!==t)}class kw{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,o=this.canvas.height/i.height,r=this.deviceWidth/this.canvas.width,a=this.deviceHeight/this.canvas.height;return{x:Math.round(t*s*r),y:Math.round(n*o*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 Qs=null;function _n(){return Qs||(Qs=new kw),Qs}function kr(e){return e instanceof Error?e.message:String(e)}async function Sw(e){if(!e.client){console.error("[browser] startScreencast: no client"),e.browserError="Not connected to gateway";return}if(!e.connected){console.error("[browser] startScreencast: client exists but not connected"),e.browserError="Not connected to gateway";return}console.log("[browser] startScreencast: sending request"),e.browserLoading=!0,e.browserError=null;try{const t=await e.client.request("browser.screencast.start",{quality:60,maxWidth:1280,maxHeight:720});console.log("[browser] startScreencast response:",t),t!=null&&t.ok?e.browserScreencastActive=!0:(console.warn("[browser] startScreencast: response did not have ok=true",t),e.browserError="Screencast start failed (no ok in response)")}catch(t){console.error("[browser] startScreencast error:",t),e.browserError=kr(t)}finally{e.browserLoading=!1}}async function $w(e){if(!(!e.client||!e.connected)){e.browserLoading=!0,e.browserFullscreen=!1;try{await e.client.request("browser.screencast.stop",{}),e.browserScreencastActive=!1,e.browserScreencastFrame=null,e.browserScreencastMetadata=null}catch(t){e.browserError=kr(t)}finally{e.browserLoading=!1}}}async function Ys(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 Xs(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 Aw(e){if(!(!e.client||!e.connected))try{await e.client.request("browser.handoff.complete",{}),e.browserHandoffPending=!1,e.browserHandoffReason=null,e.browserHandoffId=null}catch(t){e.browserError=kr(t)}}function xw(e){e.browserInputMode=!e.browserInputMode}function Ew(e){e.browserFullscreen=!e.browserFullscreen,_n().detach()}function Cw(e,t){if(!(t!=null&&t.data))return;e.browserScreencastFrame=t.data,e.browserScreencastMetadata=t.metadata??null,_n().updateFrame(t.data,t.metadata)}function Tw(e,t){t&&(e.browserHandoffPending=!0,e.browserHandoffReason=t.reason??"Action required",e.browserHandoffId=t.id??null)}function _w(e){e.browserHandoffPending=!1,e.browserHandoffReason=null,e.browserHandoffId=null}async function To(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 o=no(s);e.assistantName=o.name,e.assistantAvatar=o.avatar,e.assistantAgentId=o.agentId??null}catch{}}async function bi(e){return(await e.request("apikeys.list")).providers??[]}async function El(e,t,n){await e.request("apikeys.set",{provider:t,apiKey:n})}async function Mw(e,t){await e.request("apikeys.remove",{provider:t})}async function Pw(e,t,n){await e.request("apikeys.disable",{provider:t,disabled:n})}const Ki="taskmaster_update_pending";async function md(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 Lw(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(Ki,String(Date.now())),localStorage.removeItem(Sr)}catch{}try{const o=await e.client.request("update.run",{restartDelayMs:2e3,note:"Update from setup page"});if(o.ok&&o.result.status==="ok")e.updateMessage="Updated — restarting gateway...",(n=e.requestUpdate)==null||n.call(e);else if(o.ok&&o.result.status==="skipped")Mn(),e.updateMessage=o.result.reason||"Update skipped",e.updateRunning=!1,(i=e.requestUpdate)==null||i.call(e);else throw Mn(),new Error(o.result.reason||"Update failed")}catch(o){Mn(),e.updateMessage=`Update failed: ${String(o)}`,e.updateRunning=!1,e.updateProgressSteps=[],(s=e.requestUpdate)==null||s.call(e)}}}function Iw(e,t){var i,s,o;const n=t.phase;if(n==="step-start"){const r=t.name,a=t.index,u=t.total;e.updateMessage=`Updating: ${r} (${a+1}/${u})`;const c=e.updateProgressSteps.find(l=>l.index===a);c?(c.status="running",c.name=r):e.updateProgressSteps=[...e.updateProgressSteps,{name:r,index:a,total:u,status:"running"}],(i=e.requestUpdate)==null||i.call(e)}else if(n==="step-done"){const r=t.name,a=t.index,u=t.total,c=t.ok,l=t.durationMs,p=e.updateProgressSteps.find(b=>b.index===a);p?(p.status=c?"done":"failed",p.durationMs=l):e.updateProgressSteps=[...e.updateProgressSteps,{name:r,index:a,total:u,status:c?"done":"failed",durationMs:l}];const f=!c&&t.error?`: ${t.error.slice(0,200)}`:"";e.updateMessage=c?`Updating: ${r} done (${a+1}/${u})`:`Update step failed: ${r}${f}`,(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,Mn()}(o=e.requestUpdate)==null||o.call(e)}}async function Rw(e){var n,i,s,o;if(!e.client||!e.connected)return;const t=Bw();Mn();try{const r=await e.client.request("update.lastResult",{});if(!r.ok||!r.result)return;const a=5*6e4,u=Date.now()-r.result.ts<a;if(!t&&!u||Nw(r.result.ts))return;e.updateLastResult=r.result;const c=(n=r.result.after)==null?void 0:n.version;if(r.result.status==="ok"&&c&&(e.currentVersion=c),e.updateAvailable=!1,r.result.status==="ok"){const l=(i=r.result.before)==null?void 0:i.version,p=c??r.result.currentVersion;e.updateMessage=l?`Updated: v${l} → v${p}`:`Updated to v${p}`}else{const l=r.result.reason??((s=r.result.failedStep)==null?void 0:s.name)??"unknown error";e.updateMessage=`Update failed: ${l}`}}catch{}finally{e.updateRunning=!1,e.updateProgressSteps=[],(o=e.requestUpdate)==null||o.call(e)}}const Sr="taskmaster_update_dismissed";function Dw(e){var t;e.updateLastResult=null,e.updateMessage=null;try{localStorage.setItem(Sr,String(Date.now()))}catch{}(t=e.requestUpdate)==null||t.call(e)}function Bw(){try{const e=localStorage.getItem(Ki);return e?Date.now()-Number(e)>30*6e4?(localStorage.removeItem(Ki),!1):!0:!1}catch{return!1}}function Mn(){try{localStorage.removeItem(Ki)}catch{}}function Nw(e){try{const t=localStorage.getItem(Sr);return t?Number(t)>=e:!1}catch{return!1}}function Js(e,t){var a,u,c;const n=(e??"").trim(),i=(a=t.mainSessionKey)==null?void 0:a.trim();if(!i)return n;if(!n)return i;const s=((u=t.mainKey)==null?void 0:u.trim())||"main",o=(c=t.defaultAgentId)==null?void 0:c.trim();return n==="main"||n===s||o&&(n===`agent:${o}:main`||n===`agent:${o}:${s}`)?i:n}function Ow(e,t){if(!(t!=null&&t.mainSessionKey))return;const n=Js(e.sessionKey,t),i=Js(e.settings.sessionKey,t),s=Js(e.settings.lastActiveSessionKey,t),o=n||i||e.sessionKey,r={...e.settings,sessionKey:i||o,lastActiveSessionKey:s||o},a=r.sessionKey!==e.settings.sessionKey||r.lastActiveSessionKey!==e.settings.lastActiveSessionKey;o!==e.sessionKey&&(e.sessionKey=o),a&&nt(e,r)}function Le(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.contactsPage||e.advancedPage,i=t?"public-chat":n?"setup-ui":"taskmaster-control-ui";(s=e.client)==null||s.stop(),e.client=new yw({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:o=>{var r;if(e.connected=!0,e.lastError=null,e.hello=o,t){Cl(e,o),To(e),(((r=e.publicChatConfig)==null?void 0:r.auth)??"anonymous")==="anonymous"&&Hw(e);return}Mi()&&(nr(),e.uninstallDone=!1),Cl(e,o),e.handleAccessCheck(),Rw(e).then(()=>{md(e)}),To(e),dw(e),(e.chatPage||e.setup)&&Ww(e),Ho(e,{quiet:!0}),qo(e,{quiet:!0}),Fn(e).then(()=>{e.initWorkspaceSelection()}),e.startEmbeddingPoll(),(e.setup||e.chatPage)&&Ne(e),e.setup&&(Kw(e),zw(e),qw(e)),Ti(e)},onClose:({code:o,reason:r})=>{e.connected=!1,o!==1012&&(e.lastError=`disconnected (${o}): ${r||"no reason"}`)},onEvent:o=>Fw(e,o),onGap:({expected:o,received:r})=>{console.warn(`[gateway] event gap: expected seq ${o}, got ${r}`),Ti(e)}}),e.client.start()}function Fw(e,t){try{Uw(e,t)}catch(n){console.error("[gateway] handleGatewayEvent error:",t.event,n)}}function Uw(e,t){var n;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;Zp(e,t.payload);return}if(t.event==="chat"){const i=t.payload;i!=null&&i.sessionKey&&tu(e,i.sessionKey);const s=rc(e,i);if((s==="final"||s==="error"||s==="aborted")&&(Bo(e),qf(e)),s==="final"){const o=e,r=Math.max((((n=o.chatMessages)==null?void 0:n.length)??0)+10,Be);De(o,{limit:r})}return}if(t.event==="suggestions"){const i=t.payload;(i==null?void 0:i.sessionKey)===e.sessionKey&&Array.isArray(i.suggestions)&&i.suggestions.length>0&&(e.chatSuggestion=i.suggestions[0]);return}if(t.event==="presence"){const i=t.payload;i!=null&&i.presence&&Array.isArray(i.presence)&&(e.presenceEntries=i.presence,e.presenceError=null,e.presenceStatus=null);return}if(t.event==="cron"&&e.tab==="cron"&&er(e),(t.event==="device.pair.requested"||t.event==="device.pair.resolved")&&qo(e,{quiet:!0}),t.event==="exec.approval.requested"){const i=vw(t.payload);if(i){e.execApprovalQueue=ww(e.execApprovalQueue,i),e.execApprovalError=null;const s=Math.max(0,i.expiresAtMs-Date.now()+500);window.setTimeout(()=>{e.execApprovalQueue=xl(e.execApprovalQueue,i.id)},s)}return}if(t.event==="browser.screencast.frame"){Cw(e,t.payload);return}if(t.event==="browser.handoff"){Tw(e,t.payload),e.browserPage||(window.location.href="/browser");return}if(t.event==="browser.handoff.resolved"){_w(e);return}if(t.event==="exec.approval.resolved"){const i=bw(t.payload);i&&(e.execApprovalQueue=xl(e.execApprovalQueue,i.id));return}if(t.event==="update.progress"){Iw(e,t.payload);return}}function Cl(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&&Ow(e,n.sessionDefaults)}async function Ww(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 Kw(e){if(!(!e.client||!e.connected))try{e.apiKeyProviders=await bi(e.client)}catch{}}async function zw(e){if(!(!e.client||!e.connected))try{e.tailscaleStatus=await e.client.request("tailscale.status")}catch{}}async function qw(e){if(!(!e.client||!e.connected))try{e.wifiStatus=await e.client.request("wifi.status")}catch{}}const Tl="taskmaster_public_id";function yd(e=30){var s;const t=document.cookie.split(";").map(o=>o.trim()).find(o=>o.startsWith(`${Tl}=`));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=`${Tl}=${n}; path=/; expires=${i}; SameSite=Lax`,n}async function Hw(e){var n,i,s;if(!e.client||!e.connected)return;const t=yd((n=e.publicChatConfig)==null?void 0:n.cookieTtlDays);try{const o=(i=e.publicChatConfig)==null?void 0:i.accountId,r=await e.client.request("public.session",{cookieId:t,accountId:o});if(r!=null&&r.sessionKey){e.publicChatSessionKey=r.sessionKey,e.sessionKey=r.sessionKey,e.publicChatAuthenticated=!0,e.publicChatAuthStep="ready";const a=((s=e.publicChatConfig)==null?void 0:s.accountId)??"";e.chatMessage=Rn(a,r.sessionKey),De(e)}}catch(o){console.error("[public-chat] failed to resolve anonymous session:",o),e.lastError="Failed to start chat session"}}let Ee=!1,he=null,Gt="",zi="";function vd(e){return e.replace(/[\s\-()]/g,"")}function bd(){Ee=!1,he=null,Gt="",zi=""}async function jw(e){if(!e.client||!e.connected)return;const t=yd(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){he=n instanceof Error?n.message:"Failed to start session",e.requestUpdate()}}async function _l(e){if(!e.client||Ee)return;const t=vd(Gt);if(!t){he="Please enter your phone number",e.requestUpdate();return}Ee=!0,he=null,e.requestUpdate();try{const n=await e.client.request("public.otp.request",{phone:t,name:zi.trim()||void 0,accountId:e.accountId});n!=null&&n.ok?e.onAuthStepChange("otp"):he=(n==null?void 0:n.error)??"Failed to send verification code"}catch(n){he=n instanceof Error?n.message:"Failed to send verification code"}finally{Ee=!1,e.requestUpdate()}}async function Ml(e,t){if(!(!e.client||Ee)){if(!t.trim()){he="Please enter the verification code",e.requestUpdate();return}Ee=!0,he=null,e.requestUpdate();try{const n=await e.client.request("public.otp.verify",{phone:vd(Gt),code:t.trim(),accountId:e.accountId});n!=null&&n.ok&&n.sessionKey?(bd(),e.onAuthenticated(n.sessionKey)):he=(n==null?void 0:n.error)??"Invalid verification code"}catch(n){he=n instanceof Error?n.message:"Verification failed"}finally{Ee=!1,e.requestUpdate()}}}function Zs(e){return k}function Pl(e){return d`
|
|
3807
3813
|
<div class="public-auth__form">
|
|
3808
3814
|
<label class="field public-auth__field">
|
|
3809
3815
|
<span>Your name (optional)</span>
|
|
3810
3816
|
<input
|
|
3811
3817
|
type="text"
|
|
3812
|
-
.value=${
|
|
3813
|
-
@input=${t=>{
|
|
3818
|
+
.value=${zi}
|
|
3819
|
+
@input=${t=>{zi=t.target.value}}
|
|
3814
3820
|
placeholder="Name"
|
|
3815
3821
|
/>
|
|
3816
3822
|
</label>
|
|
@@ -3818,9 +3824,9 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
3818
3824
|
<span>WhatsApp number</span>
|
|
3819
3825
|
<input
|
|
3820
3826
|
type="tel"
|
|
3821
|
-
.value=${
|
|
3822
|
-
@input=${t=>{
|
|
3823
|
-
@keydown=${t=>{t.key==="Enter"&&(t.preventDefault(),
|
|
3827
|
+
.value=${Gt}
|
|
3828
|
+
@input=${t=>{Gt=t.target.value}}
|
|
3829
|
+
@keydown=${t=>{t.key==="Enter"&&(t.preventDefault(),_l(e))}}
|
|
3824
3830
|
placeholder="+44 7123 456789"
|
|
3825
3831
|
required
|
|
3826
3832
|
/>
|
|
@@ -3828,16 +3834,16 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
3828
3834
|
${he?d`<div class="public-auth__error">${he}</div>`:k}
|
|
3829
3835
|
<button
|
|
3830
3836
|
class="btn primary public-auth__btn"
|
|
3831
|
-
?disabled=${
|
|
3832
|
-
@click=${()=>{
|
|
3837
|
+
?disabled=${Ee}
|
|
3838
|
+
@click=${()=>{_l(e)}}
|
|
3833
3839
|
>
|
|
3834
|
-
${
|
|
3840
|
+
${Ee?"Sending...":"Send verification code"}
|
|
3835
3841
|
</button>
|
|
3836
3842
|
</div>
|
|
3837
|
-
`}function
|
|
3843
|
+
`}function Ll(e){let t="";return d`
|
|
3838
3844
|
<div class="public-auth__form">
|
|
3839
3845
|
<p class="public-auth__hint">
|
|
3840
|
-
We sent a verification code to <strong>${
|
|
3846
|
+
We sent a verification code to <strong>${Gt}</strong> via WhatsApp.
|
|
3841
3847
|
</p>
|
|
3842
3848
|
<label class="field public-auth__field">
|
|
3843
3849
|
<span>Verification code</span>
|
|
@@ -3846,7 +3852,7 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
3846
3852
|
inputmode="numeric"
|
|
3847
3853
|
maxlength="6"
|
|
3848
3854
|
@input=${n=>{t=n.target.value}}
|
|
3849
|
-
@keydown=${n=>{n.key==="Enter"&&(n.preventDefault(),
|
|
3855
|
+
@keydown=${n=>{n.key==="Enter"&&(n.preventDefault(),Ml(e,t))}}
|
|
3850
3856
|
placeholder="123456"
|
|
3851
3857
|
required
|
|
3852
3858
|
/>
|
|
@@ -3854,10 +3860,10 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
3854
3860
|
${he?d`<div class="public-auth__error">${he}</div>`:k}
|
|
3855
3861
|
<button
|
|
3856
3862
|
class="btn primary public-auth__btn"
|
|
3857
|
-
?disabled=${
|
|
3858
|
-
@click=${()=>{
|
|
3863
|
+
?disabled=${Ee}
|
|
3864
|
+
@click=${()=>{Ml(e,t)}}
|
|
3859
3865
|
>
|
|
3860
|
-
${
|
|
3866
|
+
${Ee?"Verifying...":"Verify"}
|
|
3861
3867
|
</button>
|
|
3862
3868
|
<button
|
|
3863
3869
|
class="btn public-auth__btn public-auth__btn--link"
|
|
@@ -3866,7 +3872,7 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
3866
3872
|
Use a different number
|
|
3867
3873
|
</button>
|
|
3868
3874
|
</div>
|
|
3869
|
-
`}function
|
|
3875
|
+
`}function Vw(e){const{authMode:t,authStep:n}=e;return t==="anonymous"?d`
|
|
3870
3876
|
<div class="setup-container">
|
|
3871
3877
|
<div class="setup-card">
|
|
3872
3878
|
<div class="setup-spinner"></div>
|
|
@@ -3876,37 +3882,37 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
3876
3882
|
`:t==="verified"?d`
|
|
3877
3883
|
<div class="setup-container">
|
|
3878
3884
|
<div class="public-auth">
|
|
3879
|
-
${
|
|
3885
|
+
${Zs()}
|
|
3880
3886
|
<h2 class="public-auth__title">Chat with ${e.assistantName}</h2>
|
|
3881
3887
|
<p class="public-auth__subtitle">Verify your WhatsApp number to get started.</p>
|
|
3882
|
-
${n==="otp"?
|
|
3888
|
+
${n==="otp"?Ll(e):Pl(e)}
|
|
3883
3889
|
</div>
|
|
3884
3890
|
</div>
|
|
3885
3891
|
`:n==="phone"||n==="otp"?d`
|
|
3886
3892
|
<div class="setup-container">
|
|
3887
3893
|
<div class="public-auth">
|
|
3888
|
-
${
|
|
3894
|
+
${Zs()}
|
|
3889
3895
|
<h2 class="public-auth__title">Chat with ${e.assistantName}</h2>
|
|
3890
3896
|
<p class="public-auth__subtitle">Verify your WhatsApp number to continue your conversation across devices.</p>
|
|
3891
|
-
${n==="otp"?
|
|
3897
|
+
${n==="otp"?Ll(e):Pl(e)}
|
|
3892
3898
|
</div>
|
|
3893
3899
|
</div>
|
|
3894
3900
|
`:d`
|
|
3895
3901
|
<div class="setup-container">
|
|
3896
3902
|
<div class="public-auth">
|
|
3897
|
-
${
|
|
3903
|
+
${Zs()}
|
|
3898
3904
|
<h2 class="public-auth__title">Chat with ${e.assistantName}</h2>
|
|
3899
3905
|
<p class="public-auth__subtitle">How would you like to get started?</p>
|
|
3900
3906
|
<div class="public-auth__choices">
|
|
3901
3907
|
<button
|
|
3902
3908
|
class="btn primary public-auth__btn"
|
|
3903
|
-
@click=${()=>{
|
|
3909
|
+
@click=${()=>{jw(e)}}
|
|
3904
3910
|
>
|
|
3905
3911
|
Chat now
|
|
3906
3912
|
</button>
|
|
3907
3913
|
<button
|
|
3908
3914
|
class="btn public-auth__btn"
|
|
3909
|
-
@click=${()=>{
|
|
3915
|
+
@click=${()=>{bd(),e.onAuthStepChange("phone")}}
|
|
3910
3916
|
>
|
|
3911
3917
|
Verify with WhatsApp
|
|
3912
3918
|
</button>
|
|
@@ -3916,7 +3922,7 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
3916
3922
|
</p>
|
|
3917
3923
|
</div>
|
|
3918
3924
|
</div>
|
|
3919
|
-
`}const lr="taskmaster-access-session",nd={checked:!1,hasPins:!1,hasMasterPin:!1,authenticated:!1,workspace:null,master:!1,accounts:[],error:null,busy:!1};function id(){try{return localStorage.getItem(lr)}catch{return null}}function sd(e){try{localStorage.setItem(lr,e)}catch{}}function kw(){try{localStorage.removeItem(lr)}catch{}}async function ml(e){if(e.client)try{const t=id(),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 Sw(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?(sd(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 $w(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?(sd(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 Aw(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 xw(e){const t=id();if(e.client&&t)try{await e.client.request("access.logout",{token:t})}catch{}kw(),e.accessState={...nd,checked:!0,hasPins:!0,hasMasterPin:e.accessState.hasMasterPin,accounts:e.accessState.accounts}}function Ew(e,t="admin"){var s;if(!e)return[];const n=e.bindings;if(!Array.isArray(n))return[];const i=[];for(const o of n){if(!o||typeof o!="object"||o.agentId!==t&&o.agentId!=="management")continue;const r=o.match;if(!r||typeof r!="object"||(r.channel??"").toLowerCase()!=="whatsapp")continue;const u=r.peer;if(!u||typeof u!="object"||u.kind!=="dm")continue;const c=u.id??"";c&&i.push({phone:c,paired:((s=o.meta)==null?void 0:s.paired)===!0})}return i.sort((o,r)=>o.paired&&!r.paired?-1:!o.paired&&r.paired?1:0),i}function od(e,t,n="admin",i){const s=c=>c===n||c==="management",o=new Map,r=new Map;for(const c of e){if(!c||typeof c!="object"||!s(c.agentId))continue;const l=c.match;if(!l||typeof l!="object"||(l.channel??"").toLowerCase()!=="whatsapp")continue;const f=l.peer;if(!f||typeof f!="object"||f.kind!=="dm")continue;const b=f.id??"";b&&(c.meta&&o.set(b,c.meta),l.accountId&&r.set(b,l.accountId))}const a=e.filter(c=>{if(!c||typeof c!="object"||!s(c.agentId))return!0;const l=c.match;if(!l||typeof l!="object"||(l.channel??"").toLowerCase()!=="whatsapp")return!0;const f=l.peer;return!f||typeof f!="object"?!0:f.kind!=="dm"}),u=t.map(c=>{const l=i??r.get(c.phone),p={channel:"whatsapp",peer:{kind:"dm",id:c.phone}};l&&(p.accountId=l);const f={agentId:n,match:p},b=o.get(c.phone);return b?f.meta=b:c.paired&&(f.meta={paired:!0}),f});return[...a,...u]}async function Vi(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=it(s??{}),e.adminPhones=Ew(s,n),e.configFormDirty=!1}catch(i){e.adminsError=String(i)}finally{e.adminsLoading=!1}}async function rd(e,t,n,i){var r,a;if(!e.client||!e.connected)return;if(!n){e.adminsError="No business selected.";return}if(e.adminsSaving)return;const s=n;let o=t.replace(/[\s\-\(\)]/g,"");if(!o){e.adminsError="Phone number is required";return}if(o.startsWith("+")||(o="+"+o),!/^\+[1-9]\d{6,14}$/.test(o)){e.adminsError="Invalid phone number. Use international format (e.g., +44 7504 472444)";return}if(e.adminPhones.some(u=>u.phone===o)){e.adminsError="Phone number already exists";return}e.adminsSaving=!0,e.adminsError=null;try{const u=it(e.configForm??((r=e.configSnapshot)==null?void 0:r.config)??{}),c=u.bindings??[],l=[...e.adminPhones,{phone:o}],p=od(c,l,s,i);Hl(u,["bindings"],p);const f=(a=e.configSnapshot)==null?void 0:a.hash;if(!f){e.adminsError="Config hash missing; reload and retry.";return}const b=bt(u);await e.client.request("config.set",{raw:b,baseHash:f}),await Vi(e,n)}catch(u){e.adminsError=String(u)}finally{e.adminsSaving=!1}}async function ad(e,t,n,i){var r,a;if(!e.client||!e.connected)return;if(!n){e.adminsError="No business selected.";return}if(e.adminsSaving)return;const s=n,o=e.adminPhones.find(u=>u.phone===t);if(o!=null&&o.paired){e.adminsError="Cannot remove the paired phone. Unlink WhatsApp first.";return}e.adminsSaving=!0,e.adminsError=null;try{const u=it(e.configForm??((r=e.configSnapshot)==null?void 0:r.config)??{}),c=u.bindings??[],l=e.adminPhones.filter(h=>h.phone!==t),p=od(c,l,s,i);Hl(u,["bindings"],p);const f=(a=e.configSnapshot)==null?void 0:a.hash;if(!f){e.adminsError="Config hash missing; reload and retry.";return}const b=bt(u);await e.client.request("config.set",{raw:b,baseHash:f}),await Vi(e,n)}catch(u){e.adminsError=String(u)}finally{e.adminsSaving=!1}}const Cw=Object.freeze(Object.defineProperty({__proto__:null,addAdmin:rd,loadAdmins:Vi,removeAdmin:ad},Symbol.toStringTag,{value:"Module"}));async function xt(e,t){if(!(!e.client||!e.connected)){if(!t){e.contactsRecords=[];return}if(!e.contactsLoading){e.contactsLoading=!0,e.contactsError=null;try{const n=e.contactsSearchQuery.trim(),i=n?await e.client.request("records.search",{query:n,workspace:t}):await e.client.request("records.list",{workspace:t});e.contactsRecords=i.records??[]}catch(n){e.contactsError=String(n)}finally{e.contactsLoading=!1}}}}async function ld(e,t,n,i){if(!e.client||!e.connected||e.contactsSaving)return;let s=t.replace(/[\s\-\(\)]/g,"");const o=n.trim();if(!s){e.contactsError="Phone number is required";return}if(!o){e.contactsError="Name is required";return}if(s.startsWith("+")||(s="+"+s),!/^\+[1-9]\d{6,14}$/.test(s)){e.contactsError="Invalid phone number. Use international format (e.g., +44 7490 553305)";return}e.contactsSaving=!0,e.contactsError=null;try{await e.client.request("records.set",{id:s,name:o,fields:{},workspace:i}),e.contactsShowAddForm=!1,e.contactsNewPhone="",e.contactsNewName="",await xt(e,i)}catch(r){e.contactsError=String(r)}finally{e.contactsSaving=!1}}async function cd(e,t,n){if(!(!e.client||!e.connected)&&!e.contactsSaving){e.contactsSaving=!0,e.contactsError=null;try{await e.client.request("records.delete",{id:t}),e.contactsEditingId===t&&(e.contactsEditingId=null),await xt(e,n)}catch(i){e.contactsError=String(i)}finally{e.contactsSaving=!1}}}async function go(e,t,n,i,s){if(!(!e.client||!e.connected)&&!e.contactsSaving){e.contactsSaving=!0,e.contactsError=null;try{await e.client.request("records.setField",{id:t,key:n,value:i}),await xt(e,s)}catch(o){e.contactsError=String(o)}finally{e.contactsSaving=!1}}}async function ud(e,t,n,i){if(!(!e.client||!e.connected)&&!e.contactsSaving){e.contactsSaving=!0,e.contactsError=null;try{await e.client.request("records.deleteField",{id:t,key:n}),await xt(e,i)}catch(s){e.contactsError=String(s)}finally{e.contactsSaving=!1}}}const Tw=Object.freeze(Object.defineProperty({__proto__:null,addContact:ld,deleteContact:cd,deleteContactField:ud,loadContacts:xt,setContactField:go},Symbol.toStringTag,{value:"Module"}));function fn(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 _w(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 Mw(e){const t=ae(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 Pw(e){const t=ae(e);return(t==null?void 0:t.whatsappAccountId)??void 0}function Lw(e){var i;const t=ae(e);if(!t)return;const n=t.agents.find(s=>s.id.endsWith("-admin")||s.id==="admin");return(n==null?void 0:n.id)??((i=t.agents[0])==null?void 0:i.id)}function Iw(e){return e.selectedWorkspace??void 0}function ae(e){return e.selectedWorkspace?e.workspaces.find(t=>t.name===e.selectedWorkspace)??null:null}const Rw=/^data:/i,Dw=/^https?:\/\//i;function yl(e){var a,u;const t=((a=e.agentsList)==null?void 0:a.agents)??[],n=Ll(e.sessionKey),i=(n==null?void 0:n.agentId)??((u=e.agentsList)==null?void 0:u.defaultId)??"main",s=t.find(c=>c.id===i),o=s==null?void 0:s.identity,r=(o==null?void 0:o.avatarUrl)??(o==null?void 0:o.avatar);if(r)return Rw.test(r)||Dw.test(r)?r:o==null?void 0:o.avatarUrl}function Bw(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 Nw(e){var r;if(!e)return{configured:!1,running:!1,connected:!1,lastError:null,selfChatMode:!1,dmPolicy:null,cliPath:null};const t=(r=e.channelAccounts)==null?void 0:r.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,o=s!=null?s.ok===!0:i;return{configured:n.configured??!1,running:i,connected:o,lastError:n.lastError??null,selfChatMode:n.mode==="self-chat"||!!n.selfChatMode,dmPolicy:n.dmPolicy??null,cliPath:n.cliPath??null}}function Ow(e){var r;const t=(r=e.configSnapshot)==null?void 0:r.config;if(!t)return null;const n=t.bindings;if(!Array.isArray(n))return null;const i=n.find(a=>{var u,c;return((u=a.match)==null?void 0:u.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(u=>u.id===s))return a.name;if(s==="admin"||s==="public"){const a=e.workspaces.find(u=>u.isDefault);return(a==null?void 0:a.name)??null}const o=s.replace(/-(admin|public)$/,"");if(o!==s){const a=e.workspaces.find(u=>u.name===o);return(a==null?void 0:a.name)??null}return null}function Fw(e){var t,n,i,s,o,r,a,u,c;if(e.embeddingDownloading&&!e.publicChat)return d`
|
|
3925
|
+
`}const $r="taskmaster-access-session",wd={checked:!1,hasPins:!1,hasMasterPin:!1,authenticated:!1,workspace:null,master:!1,accounts:[],error:null,busy:!1};function kd(){try{return localStorage.getItem($r)}catch{return null}}function Sd(e){try{localStorage.setItem($r,e)}catch{}}function Gw(){try{localStorage.removeItem($r)}catch{}}async function Il(e){if(e.client)try{const t=kd(),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 Qw(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?(Sd(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 Yw(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?(Sd(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 Xw(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 Jw(e){const t=kd();if(e.client&&t)try{await e.client.request("access.logout",{token:t})}catch{}Gw(),e.accessState={...wd,checked:!0,hasPins:!0,hasMasterPin:e.accessState.hasMasterPin,accounts:e.accessState.accounts}}function Zw(e,t="admin"){var s;if(!e)return[];const n=e.bindings;if(!Array.isArray(n))return[];const i=[];for(const o of n){if(!o||typeof o!="object"||o.agentId!==t&&o.agentId!=="management")continue;const r=o.match;if(!r||typeof r!="object"||(r.channel??"").toLowerCase()!=="whatsapp")continue;const u=r.peer;if(!u||typeof u!="object"||u.kind!=="dm")continue;const c=u.id??"";c&&i.push({phone:c,paired:((s=o.meta)==null?void 0:s.paired)===!0})}return i.sort((o,r)=>o.paired&&!r.paired?-1:!o.paired&&r.paired?1:0),i}function $d(e,t,n="admin",i){const s=c=>c===n||c==="management",o=new Map,r=new Map;for(const c of e){if(!c||typeof c!="object"||!s(c.agentId))continue;const l=c.match;if(!l||typeof l!="object"||(l.channel??"").toLowerCase()!=="whatsapp")continue;const f=l.peer;if(!f||typeof f!="object"||f.kind!=="dm")continue;const b=f.id??"";b&&(c.meta&&o.set(b,c.meta),l.accountId&&r.set(b,l.accountId))}const a=e.filter(c=>{if(!c||typeof c!="object"||!s(c.agentId))return!0;const l=c.match;if(!l||typeof l!="object"||(l.channel??"").toLowerCase()!=="whatsapp")return!0;const f=l.peer;return!f||typeof f!="object"?!0:f.kind!=="dm"}),u=t.map(c=>{const l=i??r.get(c.phone),p={channel:"whatsapp",peer:{kind:"dm",id:c.phone}};l&&(p.accountId=l);const f={agentId:n,match:p},b=o.get(c.phone);return b?f.meta=b:c.paired&&(f.meta={paired:!0}),f});return[...a,...u]}async function ns(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=st(s??{}),e.adminPhones=Zw(s,n),e.configFormDirty=!1}catch(i){e.adminsError=String(i)}finally{e.adminsLoading=!1}}async function Ad(e,t,n,i){var r,a;if(!e.client||!e.connected)return;if(!n){e.adminsError="No business selected.";return}if(e.adminsSaving)return;const s=n;let o=t.replace(/[\s\-\(\)]/g,"");if(!o){e.adminsError="Phone number is required";return}if(o.startsWith("+")||(o="+"+o),!/^\+[1-9]\d{6,14}$/.test(o)){e.adminsError="Invalid phone number. Use international format (e.g., +44 7504 472444)";return}if(e.adminPhones.some(u=>u.phone===o)){e.adminsError="Phone number already exists";return}e.adminsSaving=!0,e.adminsError=null;try{const u=st(e.configForm??((r=e.configSnapshot)==null?void 0:r.config)??{}),c=u.bindings??[],l=[...e.adminPhones,{phone:o}],p=$d(c,l,s,i);lc(u,["bindings"],p);const f=(a=e.configSnapshot)==null?void 0:a.hash;if(!f){e.adminsError="Config hash missing; reload and retry.";return}const b=kt(u);await e.client.request("config.set",{raw:b,baseHash:f}),await ns(e,n)}catch(u){e.adminsError=String(u)}finally{e.adminsSaving=!1}}async function xd(e,t,n,i){var r,a;if(!e.client||!e.connected)return;if(!n){e.adminsError="No business selected.";return}if(e.adminsSaving)return;const s=n,o=e.adminPhones.find(u=>u.phone===t);if(o!=null&&o.paired){e.adminsError="Cannot remove the paired phone. Unlink WhatsApp first.";return}e.adminsSaving=!0,e.adminsError=null;try{const u=st(e.configForm??((r=e.configSnapshot)==null?void 0:r.config)??{}),c=u.bindings??[],l=e.adminPhones.filter(h=>h.phone!==t),p=$d(c,l,s,i);lc(u,["bindings"],p);const f=(a=e.configSnapshot)==null?void 0:a.hash;if(!f){e.adminsError="Config hash missing; reload and retry.";return}const b=kt(u);await e.client.request("config.set",{raw:b,baseHash:f}),await ns(e,n)}catch(u){e.adminsError=String(u)}finally{e.adminsSaving=!1}}const ek=Object.freeze(Object.defineProperty({__proto__:null,addAdmin:Ad,loadAdmins:ns,removeAdmin:xd},Symbol.toStringTag,{value:"Module"}));async function Ct(e,t){if(!(!e.client||!e.connected)){if(!t){e.contactsRecords=[];return}if(!e.contactsLoading){e.contactsLoading=!0,e.contactsError=null;try{const n=e.contactsSearchQuery.trim(),i=n?await e.client.request("records.search",{query:n,workspace:t}):await e.client.request("records.list",{workspace:t});e.contactsRecords=i.records??[]}catch(n){e.contactsError=String(n)}finally{e.contactsLoading=!1}}}}async function Ed(e,t,n,i){if(!e.client||!e.connected||e.contactsSaving)return;let s=t.replace(/[\s\-\(\)]/g,"");const o=n.trim();if(!s){e.contactsError="Phone number is required";return}if(!o){e.contactsError="Name is required";return}if(s.startsWith("+")||(s="+"+s),!/^\+[1-9]\d{6,14}$/.test(s)){e.contactsError="Invalid phone number. Use international format (e.g., +44 7490 553305)";return}e.contactsSaving=!0,e.contactsError=null;try{await e.client.request("records.set",{id:s,name:o,fields:{},workspace:i}),e.contactsShowAddForm=!1,e.contactsNewPhone="",e.contactsNewName="",await Ct(e,i)}catch(r){e.contactsError=String(r)}finally{e.contactsSaving=!1}}async function Cd(e,t,n){if(!(!e.client||!e.connected)&&!e.contactsSaving){e.contactsSaving=!0,e.contactsError=null;try{await e.client.request("records.delete",{id:t}),e.contactsEditingId===t&&(e.contactsEditingId=null),await Ct(e,n)}catch(i){e.contactsError=String(i)}finally{e.contactsSaving=!1}}}async function _o(e,t,n,i,s){if(!(!e.client||!e.connected)&&!e.contactsSaving){e.contactsSaving=!0,e.contactsError=null;try{await e.client.request("records.setField",{id:t,key:n,value:i}),await Ct(e,s)}catch(o){e.contactsError=String(o)}finally{e.contactsSaving=!1}}}async function Td(e,t,n,i){if(!(!e.client||!e.connected)&&!e.contactsSaving){e.contactsSaving=!0,e.contactsError=null;try{await e.client.request("records.deleteField",{id:t,key:n}),await Ct(e,i)}catch(s){e.contactsError=String(s)}finally{e.contactsSaving=!1}}}const tk=Object.freeze(Object.defineProperty({__proto__:null,addContact:Ed,deleteContact:Cd,deleteContactField:Td,loadContacts:Ct,setContactField:_o},Symbol.toStringTag,{value:"Module"}));function yn(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 nk(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 ik(e){const t=ae(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 sk(e){const t=ae(e);return(t==null?void 0:t.whatsappAccountId)??void 0}function ok(e){var i;const t=ae(e);if(!t)return;const n=t.agents.find(s=>s.id.endsWith("-admin")||s.id==="admin");return(n==null?void 0:n.id)??((i=t.agents[0])==null?void 0:i.id)}function rk(e){return e.selectedWorkspace??void 0}function ae(e){return e.selectedWorkspace?e.workspaces.find(t=>t.name===e.selectedWorkspace)??null:null}const ak=/^data:/i,lk=/^https?:\/\//i;function Rl(e){var a,u;const t=((a=e.agentsList)==null?void 0:a.agents)??[],n=Ql(e.sessionKey),i=(n==null?void 0:n.agentId)??((u=e.agentsList)==null?void 0:u.defaultId)??"main",s=t.find(c=>c.id===i),o=s==null?void 0:s.identity,r=(o==null?void 0:o.avatarUrl)??(o==null?void 0:o.avatar);if(r)return ak.test(r)||lk.test(r)?r:o==null?void 0:o.avatarUrl}function ck(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 uk(e){var r;if(!e)return{configured:!1,running:!1,connected:!1,lastError:null,selfChatMode:!1,dmPolicy:null,cliPath:null};const t=(r=e.channelAccounts)==null?void 0:r.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,o=s!=null?s.ok===!0:i;return{configured:n.configured??!1,running:i,connected:o,lastError:n.lastError??null,selfChatMode:n.mode==="self-chat"||!!n.selfChatMode,dmPolicy:n.dmPolicy??null,cliPath:n.cliPath??null}}function dk(e){var r;const t=(r=e.configSnapshot)==null?void 0:r.config;if(!t)return null;const n=t.bindings;if(!Array.isArray(n))return null;const i=n.find(a=>{var u,c;return((u=a.match)==null?void 0:u.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(u=>u.id===s))return a.name;if(s==="admin"||s==="public"){const a=e.workspaces.find(u=>u.isDefault);return(a==null?void 0:a.name)??null}const o=s.replace(/-(admin|public)$/,"");if(o!==s){const a=e.workspaces.find(u=>u.name===o);return(a==null?void 0:a.name)??null}return null}function pk(e){var t,n,i,s,o,r,a,u,c;if(e.embeddingDownloading&&!e.publicChat)return d`
|
|
3920
3926
|
<div class="setup-container">
|
|
3921
3927
|
<div class="setup-card" style="text-align:center; max-width:420px;">
|
|
3922
3928
|
<div class="setup-spinner"></div>
|
|
@@ -3930,14 +3936,14 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
3930
3936
|
</p>
|
|
3931
3937
|
</div>
|
|
3932
3938
|
</div>
|
|
3933
|
-
`;if(e.publicChat)return e.connected?e.publicChatAuthenticated?
|
|
3939
|
+
`;if(e.publicChat)return e.connected?e.publicChatAuthenticated?uw({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??Rl(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(),oe(async()=>{const{loadChatHistory:l}=await Promise.resolve().then(()=>xi);return{loadChatHistory:l}},void 0,import.meta.url).then(({loadChatHistory:l})=>{l(e)})),onDraftChange:l=>{var f;e.chatMessage=l;const p=((f=e.publicChatConfig)==null?void 0:f.accountId)??"";ta(p,e.sessionKey,l)},requestUpdate:()=>e.requestUpdate(),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,hasMore:e.chatHistoryHasMore,loadingOlder:e.chatLoadingOlder,onLoadOlder:()=>{e.handleLoadOlderChat()}}):Vw({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=>{var f;e.publicChatSessionKey=l,e.sessionKey=l,e.publicChatAuthenticated=!0,e.publicChatAuthStep="ready";const p=((f=e.publicChatConfig)==null?void 0:f.accountId)??"";e.chatMessage=Rn(p,l),oe(async()=>{const{loadChatHistory:b}=await Promise.resolve().then(()=>xi);return{loadChatHistory:b}},void 0,import.meta.url).then(({loadChatHistory:b})=>{b(e)})},onAuthStepChange:l=>{e.publicChatAuthStep=l},requestUpdate:()=>{e.requestUpdate()}}):d`
|
|
3934
3940
|
<div class="setup-container">
|
|
3935
3941
|
<div class="setup-card">
|
|
3936
3942
|
<div class="setup-spinner"></div>
|
|
3937
3943
|
<p>Connecting...</p>
|
|
3938
3944
|
</div>
|
|
3939
3945
|
</div>
|
|
3940
|
-
`;if(e.connected&&e.accessState.checked){const{accessState:l}=e;if(l.hasPins&&!l.authenticated)return rl({show:!0,isFirstTime:!1,accounts:l.accounts,error:l.error,busy:l.busy,onSubmit:(p,f)=>{f!=null&&e.handlePinSubmit(p,f)},changePinMode:e.loginChangePinMode,onToggleChangePinMode:()=>e.toggleChangePinMode(),changePinBusy:e.changePinBusy,changePinError:e.changePinError,changePinSuccess:e.changePinSuccess,onChangePin:(p,f,b)=>e.handleChangePin(p,f,b)});if(!l.hasMasterPin&&!l.authenticated&&e.setup)return rl({show:!0,isFirstTime:!0,accounts:[],error:l.error,busy:l.busy,onSubmit:p=>e.handleSetMasterPin(p)});if(!l.hasMasterPin&&!l.authenticated&&!e.setup)return window.location.href="/setup",k}if(e.setup){const l=Bw(e.channelsSnapshot),p=((n=(t=e.channelsSnapshot)==null?void 0:t.channelAccounts)==null?void 0:n.whatsapp)??[],f=Nw(e.channelsSnapshot),b=Ow(e);return Jf({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:h=>e.handleLicenseKeyChange(h),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:p,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:h=>e.handleUninstallConfirmTextChange(h),onUninstallRun:()=>e.handleUninstallRun(),onUninstallDismiss:()=>e.handleUninstallDismiss(),onStartAuth:()=>e.handleAuthStart(),onSubmitAuthCode:h=>e.handleAuthSubmitCode(h),onAuthCodeChange:h=>e.handleAuthCodeChange(h),onSkipToWhatsApp:()=>e.handleSkipToWhatsApp(),onWhatsAppRelink:async h=>{await e.handleWhatsAppStart(!0,h),e.whatsappLoginQrDataUrl&&(await e.handleWhatsAppWait(h),await Y(e,!0),e.requestUpdate())},onWhatsAppUnlink:async h=>{await e.handleWhatsAppLogout(h)},onWhatsAppReset:async h=>{await e.handleWhatsAppLogout(h),await e.handleWhatsAppStart(!0,h),e.whatsappLoginQrDataUrl&&(await e.handleWhatsAppWait(h),await Y(e,!0),e.requestUpdate())},onRefreshStatus:async()=>{await Y(e,!0),await e.handleGatewayHealthCheck()},onWhatsAppBack:()=>{e.whatsappLoginQrDataUrl=null,e.whatsappLoginMessage=null,e.whatsappLoginConnected=null,e.whatsappActiveQrAccountId=null,e.requestUpdate(),Y(e,!0)},onRestartGateway:()=>e.handleGatewayRestart(),onRemoveWhatsAppAccount:h=>e.handleRemoveWhatsAppAccount(h),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:h=>{e.newWorkspacePin=h},onWorkspaceCreate:async(h,v)=>{const S=e.newWorkspacePin;await e.handleWorkspaceCreate(h,v),S.match(/^\d{4,6}$/)&&(await Aw(e,h,S),e.newWorkspacePin="")},onWorkspaceRemove:h=>e.handleWorkspaceRemove(h),onSetAddingWorkspace:h=>{e.addingWorkspace=h},onSetNewWorkspaceName:h=>{e.newWorkspaceName=h},onSetNewWorkspacePath:h=>{e.newWorkspacePath=h},onSetWorkspaceRemoveConfirm:h=>{e.workspaceRemoveConfirm=h},renamingWorkspace:e.renamingWorkspace,renameWorkspaceName:e.renameWorkspaceName,onWorkspaceRenameStart:()=>e.handleWorkspaceRenameStart(),onWorkspaceRenameCancel:()=>e.handleWorkspaceRenameCancel(),onWorkspaceRename:(h,v)=>e.handleWorkspaceRename(h,v),whatsappDmPolicy:(()=>{const h=ae(e),v=h==null?void 0:h.whatsappAccountId,S=v?p.find($=>$.accountId===v):p[0];return(S==null?void 0:S.dmPolicy)??null})(),onWhatsAppDmToggle:async()=>{var T;const h=ae(e),v=h==null?void 0:h.whatsappAccountId,S=v?p.find(_=>_.accountId===v):p[0];if(!S)return;const A=S.dmPolicy!=null&&S.dmPolicy!=="disabled"?"disabled":"open",E=A==="open"?{dmPolicy:A,allowFrom:["*"]}:{dmPolicy:A};try{const _=await e.client.request("config.get"),D=_.config,F=(T=D==null?void 0:D.channels)==null?void 0:T.whatsapp,be=((F==null?void 0:F.accounts)??{})[S.accountId]?{channels:{whatsapp:{accounts:{[S.accountId]:E}}}}:{channels:{whatsapp:E}};await e.client.request("config.patch",{raw:JSON.stringify(be),baseHash:_.hash,note:`WhatsApp DM policy → ${A}`,skipRestart:!0}),await Y(e,!1)}catch(_){console.error("DM toggle failed:",_)}},whatsappModel:(()=>{var T,_;const h=ae(e);if(!h)return null;const v=h.agents.find(D=>D.id.endsWith("-public")||D.id==="public");if(!v)return null;const S=(T=e.configSnapshot)==null?void 0:T.config,$=(_=S==null?void 0:S.agents)==null?void 0:_.list;if(!Array.isArray($))return null;const A=$.find(D=>D.id===v.id);if(!(A!=null&&A.model))return null;const E=typeof A.model=="string"?A.model:A.model.primary;return(E==null?void 0:E.trim())||null})(),whatsappModelCatalog:e.chatModelCatalog??[],onWhatsAppModelChange:async h=>{const v=ae(e);if(!v)return;const S=v.agents.find($=>$.id.endsWith("-public")||$.id==="public");if(S)try{const $=await e.client.request("config.get"),A=$.config,E=(A==null?void 0:A.agents)??{},T=Array.isArray(E.list)?[...E.list]:[],_=T.findIndex(F=>F.id===S.id);if(h)_>=0?T[_]={...T[_],model:h}:T.push({id:S.id,model:h});else if(_>=0){const{model:F,...ne}=T[_];Object.keys(ne).length<=1?T.splice(_,1):T[_]=ne}const D=T.length>0?{agents:{list:T}}:{agents:{list:null}};await e.client.request("config.patch",{raw:JSON.stringify(D),baseHash:$.hash,note:`Public agent model → ${h||"default"}`,skipRestart:!0}),e.configSnapshot=await e.client.request("config.get")}catch($){console.error("Model change failed:",$)}},whatsappThinkingLevel:(()=>{var E,T,_;const h=ae(e);if(!h)return null;const v=h.agents.find(D=>D.id.endsWith("-public")||D.id==="public");if(!v)return null;const S=(E=e.configSnapshot)==null?void 0:E.config,$=(T=S==null?void 0:S.agents)==null?void 0:T.list;if(!Array.isArray($))return null;const A=$.find(D=>D.id===v.id);return((_=A==null?void 0:A.thinkingLevel)==null?void 0:_.trim())||null})(),onWhatsAppThinkingChange:async h=>{const v=ae(e);if(!v)return;const S=v.agents.find($=>$.id.endsWith("-public")||$.id==="public");if(S)try{const $=await e.client.request("config.get"),A=$.config,E=(A==null?void 0:A.agents)??{},T=Array.isArray(E.list)?[...E.list]:[],_=T.findIndex(ne=>ne.id===S.id),D=h==="off"?void 0:h;if(D)_>=0?T[_]={...T[_],thinkingLevel:D}:T.push({id:S.id,thinkingLevel:D});else if(_>=0){const{thinkingLevel:ne,...be}=T[_];Object.keys(be).length<=1?T.splice(_,1):T[_]=be}const F=T.length>0?{agents:{list:T}}:{agents:{list:null}};await e.client.request("config.patch",{raw:JSON.stringify(F),baseHash:$.hash,note:`Public agent thinking → ${D||"default"}`,skipRestart:!0}),e.configSnapshot=await e.client.request("config.get")}catch($){console.error("Thinking change failed:",$)}},whatsappGroupPolicy:(()=>{var _,D;const h=(_=e.configSnapshot)==null?void 0:_.config,v=(D=h==null?void 0:h.channels)==null?void 0:D.whatsapp,S=ae(e),$=S==null?void 0:S.whatsappAccountId,A=(v==null?void 0:v.accounts)??{},E=$?A[$]:void 0;return(E==null?void 0:E.groupPolicy)??(v==null?void 0:v.groupPolicy)??"allowlist"})(),whatsappGroupRequireMention:(()=>{var D,F;const h=(D=e.configSnapshot)==null?void 0:D.config,v=(F=h==null?void 0:h.channels)==null?void 0:F.whatsapp,S=ae(e),$=S==null?void 0:S.whatsappAccountId,A=(v==null?void 0:v.accounts)??{},E=$?A[$]:void 0,_=((E==null?void 0:E.groups)??(v==null?void 0:v.groups)??{})["*"];return(_==null?void 0:_.requireMention)!==!1})(),onWhatsAppGroupToggle:async()=>{var S;const h=ae(e),v=h==null?void 0:h.whatsappAccountId;try{const $=await e.client.request("config.get"),A=$.config,E=((S=A==null?void 0:A.channels)==null?void 0:S.whatsapp)??{},T=E.accounts??{},_=v?T[v]:void 0,D=(_==null?void 0:_.groupPolicy)??E.groupPolicy??"allowlist",F=D==="disabled"||D==="allowlist",ne=F?"open":"disabled",be=F?{"*":{}}:void 0,Qe={groupPolicy:ne};be&&(Qe.groups=be);const ee=_?{channels:{whatsapp:{accounts:{[v]:Qe}}}}:{channels:{whatsapp:Qe}};await e.client.request("config.patch",{raw:JSON.stringify(ee),baseHash:$.hash,note:`WhatsApp groups → ${ne}`,skipRestart:!0}),e.configSnapshot=await e.client.request("config.get")}catch($){console.error("Group toggle failed:",$)}},onWhatsAppGroupMentionChange:async h=>{var $;const v=ae(e),S=v==null?void 0:v.whatsappAccountId;try{const A=await e.client.request("config.get"),E=A.config,_=((($=E==null?void 0:E.channels)==null?void 0:$.whatsapp)??{}).accounts??{},D=S?_[S]:void 0,F={"*":{requireMention:h}},ne=D?{channels:{whatsapp:{accounts:{[S]:{groups:F}}}}}:{channels:{whatsapp:{groups:F}}};await e.client.request("config.patch",{raw:JSON.stringify(ne),baseHash:A.hash,note:`WhatsApp group mention → ${h?"when mentioned":"always"}`,skipRestart:!0}),e.configSnapshot=await e.client.request("config.get")}catch(A){console.error("Group mention change failed:",A)}},whatsappSettingsOpen:e.whatsappSettingsOpen??!1,onWhatsAppSettingsOpen:()=>{e.whatsappSettingsOpen=!0},onWhatsAppSettingsClose:()=>{e.whatsappSettingsOpen=!1},imessageConfigured:f.configured,imessageRunning:f.running,imessageConnected:f.connected,imessageLastError:f.lastError,imessageSelfChatMode:f.selfChatMode,imessageCliPath:f.cliPath,imessageEnabling:e.imessageEnabling,imessageEnableConfirm:e.imessageEnableConfirm,imessageOwnerWorkspace:b,onIMessageEnable:()=>{e.imessageEnableConfirm=!0},onIMessageEnableConfirm:async()=>{e.imessageEnabling=!0;try{const h=await e.client.request("config.get"),v=h.config,S=(v==null?void 0:v.bindings)??[],$=ae(e),A=$==null?void 0:$.agents.find(F=>F.id.endsWith("-admin")||F.id==="admin"),E=(A==null?void 0:A.id)??"admin",T=S.filter(F=>{var ne;return((ne=F.match)==null?void 0:ne.channel)!=="imessage"}),_=[{agentId:E,match:{channel:"imessage",peer:{kind:"dm",id:"__self__"}},meta:{imessageOwner:!0}}],D=[...T,..._];await e.client.request("config.patch",{raw:JSON.stringify({channels:{imessage:{selfChatMode:!0,dmPolicy:"disabled",allowFrom:["*"]}},bindings:D}),baseHash:h.hash,note:"Enable iMessage (self-chat) for "+(($==null?void 0:$.name)??"default")}),e.imessageEnableConfirm=!1,setTimeout(()=>{Promise.all([Y(e,!0),Be(e)]).then(()=>{e.imessageEnabling=!1})},3e3)}catch{e.imessageEnabling=!1}},onIMessageEnableCancel:()=>{e.imessageEnableConfirm=!1},onIMessageProbe:async()=>{e.imessageEnabling=!0,e.requestUpdate();try{await Y(e,!0)}finally{e.imessageEnabling=!1}},onIMessageDisconnect:async()=>{e.imessageEnabling=!0;try{const h=await e.client.request("config.get"),v=h.config,$=((v==null?void 0:v.bindings)??[]).filter(A=>{var E;return((E=A.match)==null?void 0:E.channel)!=="imessage"});await e.client.request("config.patch",{raw:JSON.stringify({channels:{imessage:{selfChatMode:!1,dmPolicy:"disabled"}},bindings:$}),baseHash:h.hash,note:"Disconnect iMessage"}),e.imessageEnableConfirm=!1,setTimeout(()=>{Promise.all([Y(e,!0),Be(e)]).then(()=>{e.imessageEnabling=!1})},3e3)}catch{e.imessageEnabling=!1}},onIMessageReassign:async()=>{e.imessageEnabling=!0;try{const h=await e.client.request("config.get"),v=h.config,S=(v==null?void 0:v.bindings)??[],$=ae(e),A=$==null?void 0:$.agents.find(D=>D.id.endsWith("-admin")||D.id==="admin"),E=(A==null?void 0:A.id)??"admin",T=S.filter(D=>{var F;return((F=D.match)==null?void 0:F.channel)!=="imessage"}),_=[{agentId:E,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,..._]}),baseHash:h.hash,note:"Reassign iMessage to "+(($==null?void 0:$.name)??"default")}),e.imessageEnableConfirm=!1,setTimeout(()=>{Promise.all([Y(e,!0),Be(e)]).then(()=>{e.imessageEnabling=!1})},3e3)}catch{e.imessageEnabling=!1}},infoModalOpen:e.infoModalOpen,onInfoModalOpen:h=>{e.infoModalOpen=h},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(h,v)=>{e.apiKeySavingProvider=h,e.apiKeyBusy=!0,e.apiKeyError=null,e.apiKeySuccess=null;try{await cl(e.client,h,v);const S=`${h} key saved`;e.apiKeySuccess=S,e.apiKeySavingProvider=null;try{e.apiKeyProviders=await pi(e.client)}catch{}h==="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 h=>{e.apiKeySavingProvider=h,e.apiKeyBusy=!0,e.apiKeyError=null,e.apiKeySuccess=null;try{await iw(e.client,h);const v=`${h} key removed`;e.apiKeySuccess=v,e.apiKeySavingProvider=null;try{e.apiKeyProviders=await pi(e.client)}catch{}setTimeout(()=>{e.apiKeySuccess===v&&(e.apiKeySuccess=null)},2500)}catch(v){e.apiKeyError=v instanceof Error?v.message:"Failed to remove key",e.apiKeySavingProvider=null}finally{e.apiKeyBusy=!1}},onApiKeyDisable:async(h,v)=>{e.apiKeySavingProvider=h,e.apiKeyBusy=!0,e.apiKeyError=null,e.apiKeySuccess=null;try{await sw(e.client,h,v);const S=`${h} ${v?"disabled":"enabled"}`;e.apiKeySuccess=S,e.apiKeySavingProvider=null;try{e.apiKeyProviders=await pi(e.client)}catch{}setTimeout(()=>{e.apiKeySuccess===S&&(e.apiKeySuccess=null)},2500)}catch(S){e.apiKeyError=S instanceof Error?S.message:`Failed to ${v?"disable":"enable"} 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:h=>{e.authApiKeyInput=h},onAuthApiKeySubmit:async()=>{const h=e.authApiKeyInput.trim();if(h){e.authApiKeyBusy=!0,e.authApiKeyError=null;try{await cl(e.client,"anthropic",h),await e.handleAuthStatusCheck(),e.authApiKeyMode=!1,e.authApiKeyInput=""}catch(v){e.authApiKeyError=v instanceof Error?v.message:"Failed to save API key"}finally{e.authApiKeyBusy=!1}}},accountHasPin:(()=>{var v;const h=e.selectedWorkspace??((v=e.workspaces[0])==null?void 0:v.name);return h?e.accessState.accounts.some(S=>S.id===h):!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:(h,v)=>{var $;const S=e.selectedWorkspace??(($=e.workspaces[0])==null?void 0:$.name);S&&e.handleAccountPinSave(S,h,v)},publicChatEnabled:(()=>{var S;const h=(S=e.configSnapshot)==null?void 0:S.config,v=h==null?void 0:h.publicChat;return(v==null?void 0:v.enabled)===!0})(),publicChatAuthMode:(()=>{var $;const h=($=e.configSnapshot)==null?void 0:$.config,v=h==null?void 0:h.publicChat,S=v==null?void 0:v.auth;return S==="verified"||S==="choice"?S:"anonymous"})(),publicChatBusy:e.publicChatToggleBusy,onPublicChatToggle:async()=>{var h;if(!e.publicChatToggleBusy){e.publicChatToggleBusy=!0;try{const v=await e.client.request("config.get"),S=v.config,$=((h=S==null?void 0:S.publicChat)==null?void 0:h.enabled)===!0;await e.client.request("config.patch",{raw:JSON.stringify({publicChat:{enabled:!$}}),baseHash:v.hash,note:`Public chat → ${$?"disabled":"enabled"}`}),e.configSnapshot=await e.client.request("config.get")}catch(v){console.error("Public chat toggle failed:",v)}finally{e.publicChatToggleBusy=!1}}},onPublicChatAuthModeChange:async h=>{if(!e.publicChatToggleBusy){e.publicChatToggleBusy=!0;try{const v=await e.client.request("config.get");await e.client.request("config.patch",{raw:JSON.stringify({publicChat:{auth:h}}),baseHash:v.hash,note:`Public chat auth → ${h}`}),e.configSnapshot=await e.client.request("config.get")}catch(v){console.error("Public chat auth mode change failed:",v)}finally{e.publicChatToggleBusy=!1}}},brandAccentColor:(()=>{var S;const h=e.selectedWorkspace;return h?((S=Le()[h])==null?void 0:S.accentColor)??"":""})(),brandBackgroundColor:(()=>{var S;const h=e.selectedWorkspace;return h?((S=Le()[h])==null?void 0:S.backgroundColor)??"":""})(),brandHasLogo:(()=>{var S;const h=e.selectedWorkspace;return h?!!((S=Le()[h])!=null&&S.logoUrl):!1})(),brandingBusy:e.brandingBusy,brandingExpanded:e.brandingExpanded,onBrandingToggle:()=>{e.brandingExpanded=!e.brandingExpanded},onBrandAccentColorChange:async h=>{var S;const v=e.selectedWorkspace;if(!(!v||e.brandingBusy)){e.brandingBusy=!0;try{const $=await e.client.request("config.get"),A=$.config,E=((S=A==null?void 0:A.workspaces)==null?void 0:S[v])??{},T=E.brand??{};await e.client.request("config.patch",{raw:JSON.stringify({workspaces:{[v]:{...E,brand:{...T,accentColor:h}}}}),baseHash:$.hash,note:`Brand accent → ${h}`,skipRestart:!0}),e.configSnapshot=await e.client.request("config.get");const _=Le();_[v]||(_[v]={}),_[v].accentColor=h,vn(v)}catch($){console.error("Brand accent change failed:",$)}finally{e.brandingBusy=!1}}},onBrandBackgroundColorChange:async h=>{var S;const v=e.selectedWorkspace;if(!(!v||e.brandingBusy)){e.brandingBusy=!0;try{const $=await e.client.request("config.get"),A=$.config,E=((S=A==null?void 0:A.workspaces)==null?void 0:S[v])??{},T=E.brand??{};await e.client.request("config.patch",{raw:JSON.stringify({workspaces:{[v]:{...E,brand:{...T,backgroundColor:h}}}}),baseHash:$.hash,note:`Brand background → ${h}`,skipRestart:!0}),e.configSnapshot=await e.client.request("config.get");const _=Le();_[v]||(_[v]={}),_[v].backgroundColor=h,vn(v)}catch($){console.error("Brand background change failed:",$)}finally{e.brandingBusy=!1}}},onBrandLogoUpload:async h=>{const v=e.selectedWorkspace;if(!(!v||e.brandingBusy)){e.brandingBusy=!0;try{const S=await h.arrayBuffer(),$=new Uint8Array(S);let A="";for(let _=0;_<$.length;_++)A+=String.fromCharCode($[_]);const E=btoa(A);await e.client.request("brand.uploadLogo",{workspace:v,data:E,mimeType:h.type});const T=Le();T[v]||(T[v]={}),T[v].logoUrl=`/brand-logo/${encodeURIComponent(v)}`}catch(S){console.error("Brand logo upload failed:",S)}finally{e.brandingBusy=!1}}},onBrandLogoRemove:async()=>{const h=e.selectedWorkspace;if(!(!h||e.brandingBusy)){e.brandingBusy=!0;try{await e.client.request("brand.removeLogo",{workspace:h});const v=Le();v[h]&&delete v[h].logoUrl}catch(v){console.error("Brand logo remove failed:",v)}finally{e.brandingBusy=!1}}},onBrandReset:async()=>{var v;const h=e.selectedWorkspace;if(!(!h||e.brandingBusy)){e.brandingBusy=!0;try{const S=await e.client.request("config.get"),$=S.config,A=((v=$==null?void 0:$.workspaces)==null?void 0:v[h])??{},{brand:E,...T}=A;await e.client.request("config.patch",{raw:JSON.stringify({workspaces:{[h]:{...T,brand:null}}}),baseHash:S.hash,note:"Brand reset to defaults",skipRestart:!0}),e.configSnapshot=await e.client.request("config.get");try{await e.client.request("brand.removeLogo",{workspace:h})}catch{}const _=Le();delete _[h],vn(h)}catch(S){console.error("Brand reset failed:",S)}finally{e.brandingBusy=!1}}},tailscaleStatus:e.tailscaleStatus,tailscaleBusy:e.tailscaleBusy,tailscaleAuthUrl:e.tailscaleAuthUrl,tailscaleError:e.tailscaleError,tailscaleFunnelEnableUrl:e.tailscaleFunnelEnableUrl,onTailscaleEnable:async()=>{if(!e.tailscaleBusy){e.tailscaleBusy=!0,e.tailscaleAuthUrl=null;try{const h=await e.client.request("tailscale.enable");if(h.authUrl){e.tailscaleAuthUrl=h.authUrl;const v=setInterval(async()=>{try{const S=await e.client.request("tailscale.status");e.tailscaleStatus=S,S.loggedIn&&(clearInterval(v),e.tailscaleAuthUrl=null,e.tailscaleBusy=!1)}catch{}},3e3);setTimeout(()=>{clearInterval(v),e.tailscaleBusy&&(e.tailscaleBusy=!1)},3e5)}else h.alreadyLoggedIn&&(e.tailscaleStatus=await e.client.request("tailscale.status")),e.tailscaleBusy=!1}catch(h){console.error("Tailscale enable failed:",h),e.tailscaleBusy=!1}}},onTailscaleFunnelEnable:async()=>{var h;if(!e.tailscaleBusy){e.tailscaleBusy=!0,e.tailscaleError=null,e.tailscaleFunnelEnableUrl=null;try{await e.client.request("tailscale.funnel.enable")}catch(v){console.error("Tailscale funnel enable failed:",v);const S=v;(h=S.payload)!=null&&h.enableUrl&&(e.tailscaleFunnelEnableUrl=S.payload.enableUrl),e.tailscaleError=S.message||"Failed to enable Funnel",e.tailscaleBusy=!1}}},onTailscaleFunnelDisable:async()=>{if(!e.tailscaleBusy){e.tailscaleBusy=!0;try{await e.client.request("tailscale.funnel.disable")}catch(h){console.error("Tailscale funnel disable failed:",h),e.tailscaleBusy=!1}}},wifiStatus:e.wifiStatus,wifiNetworks:e.wifiNetworks,wifiBusy:e.wifiBusy,wifiError:e.wifiError,wifiPassword:e.wifiPassword,wifiSelectedSsid:e.wifiSelectedSsid,onWifiScan:async()=>{if(!e.wifiBusy){e.wifiBusy=!0,e.wifiError=null;try{const[h,v]=await Promise.all([e.client.request("wifi.scan"),e.client.request("wifi.status")]);e.wifiNetworks=h.networks,e.wifiStatus=v}catch(h){console.error("WiFi scan failed:",h),e.wifiError=h.message||"Failed to scan networks"}finally{e.wifiBusy=!1}}},onWifiConnect:async()=>{if(e.wifiBusy||!e.wifiSelectedSsid)return;const h=e.wifiSelectedSsid;e.wifiBusy=!0,e.wifiError=null;try{const v=await e.client.request("wifi.connect",{ssid:h,password:e.wifiPassword});e.wifiPassword="",e.wifiSelectedSsid=null,e.wifiNetworks=[],e.wifiStatus={available:!0,connected:v.connected,ssid:v.ssid,signal:null,ip:v.ip,savedSsid:v.ssid,autoconnect:!0},e.wifiBusy=!1;try{const S=await e.client.request("wifi.status");e.wifiStatus=S}catch{}}catch(v){console.error("WiFi connect failed:",v),e.wifiError=v.message||"Failed to connect",e.wifiBusy=!1}},onWifiDisconnect:async()=>{if(!e.wifiBusy){e.wifiBusy=!0,e.wifiError=null;try{await e.client.request("wifi.disconnect"),e.wifiNetworks=[],e.wifiSelectedSsid=null,e.wifiPassword="";const h=await e.client.request("wifi.status");e.wifiStatus=h}catch(h){console.error("WiFi disconnect failed:",h),e.wifiError=h.message||"Failed to disconnect"}finally{e.wifiBusy=!1}}},onWifiForget:async()=>{if(!e.wifiBusy){e.wifiBusy=!0,e.wifiError=null;try{await e.client.request("wifi.forget"),e.wifiNetworks=[],e.wifiSelectedSsid=null,e.wifiPassword="";const h=await e.client.request("wifi.status");e.wifiStatus=h}catch(h){console.error("WiFi forget failed:",h),e.wifiError=h.message||"Failed to forget network"}finally{e.wifiBusy=!1}}},onWifiDismiss:()=>{e.wifiNetworks=[],e.wifiSelectedSsid=null,e.wifiPassword="",e.wifiError=null},onWifiSelectSsid:h=>{e.wifiSelectedSsid=h,e.wifiPassword="",e.wifiError=null},onWifiPasswordChange:h=>{e.wifiPassword=h},wsProps:_w(e)})}if(e.filesPage){const l=Lw(e);return Nf({connected:e.connected,wsProps:fn(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,currentDir:e.filesCurrentDir,message:e.filesMessage,uploadBusy:e.filesUploadBusy,reindexBusy:e.filesReindexBusy,memoryStatus:e.filesMemoryStatus,onRefresh:()=>Qt(e,l),onReindex:()=>Jh(e,l),onSelectFile:p=>{e.filesPendingDeletePath=null,qh(e,p,l)},onToggleSelectFile:p=>Hh(e,p,l),onToggleDir:p=>Zh(e,p),onUpload:(p,f)=>Gh(e,p,f,l),onNewFolder:(p,f)=>Qh(e,p,f,l),onDownload:p=>Nc(e,p,l),onBulkDownload:()=>jh(e,l),onDelete:p=>{e.filesPendingDeletePath=null,Yh(e,p,l)},pendingDeletePath:e.filesPendingDeletePath,onArmDelete:p=>{e.filesPendingDeletePath=p||null},onMoveToDir:(p,f)=>Vh(e,p,f,l),searchQuery:e.filesSearchQuery,searchResults:e.filesSearchResults,searchLoading:e.filesSearchLoading,searchAgentId:e.filesSearchAgentId,agentIds:e.workspaceAgentIds??[],onSearch:p=>{const f=e.filesSearchAgentId??l;ef(e,p,f)},onSearchAgentChange:p=>{e.filesSearchAgentId=p},onSearchClear:()=>{tf(e)},onSearchQueryChange:p=>{e.filesSearchQuery=p}})}if(e.browserPage)return Pf({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:()=>Qb(e),onStop:()=>Yb(e),onToggleInput:()=>Jb(e),onToggleFullscreen:()=>Zb(e),onCompleteHandoff:()=>Xb(e),onCanvasMouseDown:l=>{const f=l.target.getBoundingClientRect(),h=An().translateCoordinates(l.clientX-f.left,l.clientY-f.top);Ns(e,"mousePressed",h.x,h.y,l.button===2?"right":l.button===1?"middle":"left")},onCanvasMouseUp:l=>{const f=l.target.getBoundingClientRect(),h=An().translateCoordinates(l.clientX-f.left,l.clientY-f.top);Ns(e,"mouseReleased",h.x,h.y)},onCanvasMouseMove:l=>{const p=An();if(p.shouldThrottleMouseMove())return;const b=l.target.getBoundingClientRect(),h=p.translateCoordinates(l.clientX-b.left,l.clientY-b.top);Ns(e,"mouseMoved",h.x,h.y)},onCanvasKeyDown:l=>{let p=0;l.altKey&&(p|=1),l.ctrlKey&&(p|=2),l.metaKey&&(p|=4),l.shiftKey&&(p|=8),Os(e,"keyDown",l.key,{code:l.code,modifiers:p||void 0}),l.key.length===1&&Os(e,"char",l.key,{text:l.key})},onCanvasKeyUp:l=>{Os(e,"keyUp",l.key,{code:l.code})}});if(e.adminsPage){const l=Mw(e),p=Pw(e);return eg({connected:e.connected,wsProps:fn(e),loading:e.adminsLoading,saving:e.adminsSaving,phones:e.adminPhones,error:e.adminsError,newPhone:e.adminsNewPhone,onRefresh:()=>Vi(e,l),onAdd:f=>{rd(e,f,l,p).then(()=>{e.adminsError||(e.adminsNewPhone="")})},onRemove:f=>ad(e,f,l,p),onNewPhoneChange:f=>e.handleAdminsNewPhoneChange(f)})}if(e.contactsPage){const l=Iw(e);return rg({connected:e.connected,wsProps:fn(e),loading:e.contactsLoading,saving:e.contactsSaving,records:e.contactsRecords,error:e.contactsError,searchQuery:e.contactsSearchQuery,editingId:e.contactsEditingId,showAddForm:e.contactsShowAddForm,newRecordPhone:e.contactsNewPhone,newRecordName:e.contactsNewName,deleteConfirmId:e.contactsDeleteConfirmId,addFieldForId:e.contactsAddFieldForId,addFieldKey:e.contactsAddFieldKey,addFieldValue:e.contactsAddFieldValue,onSearch:p=>e.contactsSearchQuery=p,onSearchSubmit:()=>xt(e,l),onAdd:(p,f)=>ld(e,p,f,l),onDelete:p=>cd(e,p,l),onSetField:(p,f,b)=>go(e,p,f,b,l),onDeleteField:(p,f)=>ud(e,p,f,l),onToggleExpand:p=>{e.contactsEditingId=e.contactsEditingId===p?null:p},onShowAddForm:()=>e.contactsShowAddForm=!0,onCancelAddForm:()=>{e.contactsShowAddForm=!1,e.contactsNewPhone="",e.contactsNewName=""},onNewRecordPhoneChange:p=>e.handleContactsNewPhoneChange(p),onNewRecordNameChange:p=>e.handleContactsNewNameChange(p),onRefresh:()=>xt(e,l),onDeleteConfirmOpen:p=>e.contactsDeleteConfirmId=p,onDeleteConfirmClose:()=>e.contactsDeleteConfirmId=null,onAddFieldOpen:p=>{e.contactsAddFieldForId=p,e.contactsAddFieldKey="",e.contactsAddFieldValue=""},onAddFieldClose:()=>{e.contactsAddFieldForId=null,e.contactsAddFieldKey="",e.contactsAddFieldValue=""},onAddFieldKeyChange:p=>e.contactsAddFieldKey=p,onAddFieldValueChange:p=>e.contactsAddFieldValue=p,onAddFieldSubmit:()=>{const p=e.contactsAddFieldForId,f=e.contactsAddFieldKey.trim();!p||!f||(go(e,p,f,e.contactsAddFieldValue,l),e.contactsAddFieldForId=null,e.contactsAddFieldKey="",e.contactsAddFieldValue="")}})}if(e.chatPage){const l=e.connected?null:"Disconnected from gateway.",p=yl(e),f=e.chatAvatarUrl??p??null,b=(()=>{var S;const h=(S=e.configSnapshot)==null?void 0:S.config,v=h==null?void 0:h.publicChat;return(v==null?void 0:v.enabled)===!0})();return Jv({connected:e.connected,wsProps:fn(e),publicChatEnabled:b,publicChatAccountId:e.selectedWorkspace??void 0,sessionKey:e.sessionKey,onSessionKeyChange:h=>{e.sessionKey=h,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:h,lastActiveSessionKey:h}),e.loadAssistantIdentity(),Re(e),Ys(e)},thinkingLevel:e.chatThinkingLevel,showThinking:e.settings.chatShowThinking??!1,modelProvider:e.chatModelProvider,model:e.chatModel,modelCatalog:e.chatModelCatalog,onModelChange:h=>{const v=Math.max(e.chatMessages.length+10,De);Vn(e,e.sessionKey,{model:h}).then(()=>{Re(e,{limit:v})})},onThinkingLevelChange:h=>{const v=Math.max(e.chatMessages.length+10,De);Vn(e,e.sessionKey,{thinkingLevel:h==="off"?null:h}).then(()=>{Re(e,{limit:v})})},verboseLevel:e.chatVerboseLevel,fillerEnabled:e.chatFillerEnabled,suggestion:e.chatSuggestion,onSuggestionClick:h=>{e.chatMessage=h,e.chatSuggestion=null,e.handleSendChat()},onVerboseChange:h=>{const v=Math.max(e.chatMessages.length+10,De);Vn(e,e.sessionKey,{verboseLevel:h==="off"?null:h}).then(()=>{Re(e,{limit:v})})},onFillerChange:h=>{const v=Math.max(e.chatMessages.length+10,De);Vn(e,e.sessionKey,{fillerEnabled:h}).then(()=>{Re(e,{limit:v})})},loading:e.chatLoading,sending:e.chatSending,compactionStatus:e.compactionStatus,assistantAvatarUrl:f,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();const h=Math.max(e.chatMessages.length+10,De);return Promise.all([Re(e,{limit:h}),Ys(e)])},onToggleFocusMode:()=>{},onChatScroll:h=>e.handleChatScroll(h),nearBottom:e.chatUserNearBottom,hasMore:e.chatHistoryHasMore,loadingOlder:e.chatLoadingOlder,onLoadOlder:()=>{e.handleLoadOlderChat()},onDraftChange:h=>e.chatMessage=h,requestUpdate:()=>e.requestUpdate(),attachments:e.chatAttachments,onAttachmentsChange:h=>e.chatAttachments=h,onSend:()=>e.handleSendChat(),canAbort:!!e.chatRunId,onAbort:()=>{e.handleAbortChat()},onQueueRemove:h=>e.removeQueuedMessage(h),onNewSession:()=>e.handleSendChat("/new",{restoreDraft:!0}),sidebarOpen:e.sidebarOpen,sidebarContent:e.sidebarContent,sidebarError:e.sidebarError,splitRatio:e.splitRatio,onOpenSidebar:h=>e.handleOpenSidebar(h),onCloseSidebar:()=>e.handleCloseSidebar(),onSplitRatioChange:h=>e.handleSplitRatioChange(h),assistantName:e.assistantName,assistantAvatar:e.assistantAvatar})}return e.advancedPage?Bb({connected:e.connected,wsProps:fn(e),activeTab:e.advancedTab,onTabChange:l=>{e.advancedTab=l,l==="cron"&&e.loadCron(),l==="skills"&&je(e,{clearMessages:!0}),l==="logs"&&(e.logsSubTab==="session"?kn(e,{reset:!0}):Ft(e,{reset:!0}))},cronProps:{loading:e.cronLoading,status:e.cronStatus,jobs:e.cronJobs,error:e.cronError,busy:e.cronBusy,form:e.cronForm,channels:(r=(o=e.channelsSnapshot)==null?void 0:o.channelMeta)!=null&&r.length?e.channelsSnapshot.channelMeta.map(l=>l.id):((a=e.channelsSnapshot)==null?void 0:a.channelOrder)??[],channelLabels:((u=e.channelsSnapshot)==null?void 0:u.channelLabels)??{},channelMeta:((c=e.channelsSnapshot)==null?void 0:c.channelMeta)??[],agentIds:(()=>{var p;const l=ae(e);return((p=l==null?void 0:l.agents)==null?void 0:p.map(f=>f.id))??[]})(),runsJobId:e.cronRunsJobId,runs:e.cronRuns,newEventModalOpen:e.cronNewEventModal,onNewEventModalOpen:()=>{e.cronNewEventModal=!0},onNewEventModalClose:()=>{e.cronNewEventModal=!1,e.cronEditJobId=null},detailJobId:e.cronDetailJobId,editJobId:e.cronEditJobId,onDetailOpen:l=>{e.cronDetailJobId=l.id,Hs(e,l.id)},onDetailClose:()=>{e.cronDetailJobId=null},onEdit:l=>{e.cronForm=Qp(l),e.cronEditJobId=l.id,e.cronDetailJobId=null},onEditSave:()=>{const l=e.cronEditJobId;l&&Yp(e,l).then(()=>{e.cronEditJobId=null})},onFormChange:l=>e.cronForm={...e.cronForm,...l},onRefresh:()=>e.loadCron(),onAdd:()=>{Hp(e).then(()=>{e.cronNewEventModal=!1})},onToggle:(l,p)=>jp(e,l,p),onRun:l=>Vp(e,l),onRemove:l=>{e.cronPendingDeleteId=null,Gp(e,l)},pendingDeleteId:e.cronPendingDeleteId,onArmDelete:l=>{e.cronPendingDeleteId=l||null},onLoadRuns:l=>Hs(e,l)},skillsProps:{loading:e.skillsLoading,report:e.skillsReport,error:e.skillsError,filter:e.skillsFilter,edits:e.skillEdits,messages:e.skillMessages,busyKey:e.skillsBusyKey,detail:e.skillDetail,detailTab:e.skillDetailTab,addModal:e.skillAddModal,drafts:e.skillDrafts,onFilterChange:l=>e.skillsFilter=l,onRefresh:()=>je(e,{clearMessages:!0}),onToggle:(l,p)=>vc(e,l,p),onEdit:(l,p)=>yc(e,l,p),onSaveKey:l=>bc(e,l),onInstall:(l,p,f)=>wc(e,l,p,f),onViewDetail:l=>kc(e,l),onDetailClose:()=>Sc(e),onDetailTab:l=>$c(e,l),onAddOpen:()=>Ac(e),onAddClose:()=>xc(e),onImportDraft:l=>Ec(e,l),onDeleteDraft:l=>Tc(e,l),onAddSave:()=>Cc(e),onDelete:l=>Mc(e,l),onEditSkill:l=>_c(e,l)},logsProps:{logsSubTab:e.logsSubTab,onSubTabChange:l=>{e.logsSubTab=l,l==="session"?kn(e,{reset:!0}):Ft(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,expandedIds:e.sessionLogsExpandedIds,onFilterTextChange:l=>e.sessionLogsFilterText=l,onTypeToggle:(l,p)=>{const f=e;f.sessionLogsTypeFilters={...f.sessionLogsTypeFilters,[l]:p}},onAgentToggle:(l,p)=>{const f=e;f.sessionLogsAgentFilters={...f.sessionLogsAgentFilters,[l]:p}},onToggleAutoFollow:l=>e.sessionLogsAutoFollow=l,onToggleExpand:l=>{const p=e,f=new Set(p.sessionLogsExpandedIds);f.has(l)?f.delete(l):f.add(l),p.sessionLogsExpandedIds=f,p.requestUpdate()},onRefresh:()=>{kn(e,{reset:!0})},onExport:(l,p)=>e.exportSessionLogs(l,p),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,p)=>{e.logsLevelFilters={...e.logsLevelFilters,[l]:p}},onToggleAutoFollow:l=>e.logsAutoFollow=l,onRefresh:()=>Ft(e,{reset:!0}),onExport:(l,p)=>e.exportSessionLogs(l,p),onScroll:l=>e.handleLogsScroll(l)}}):(window.location.replace("/chat"),d``)}function Uw(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 vl(e){return e.startsWith("memory/public/")?"public":e.startsWith("memory/shared/")?"shared":"other"}function Ww(e,t,n){return d`
|
|
3946
|
+
`;if(e.connected&&e.accessState.checked){const{accessState:l}=e;if(l.hasPins&&!l.authenticated)return $l({show:!0,isFirstTime:!1,accounts:l.accounts,error:l.error,busy:l.busy,onSubmit:(p,f)=>{f!=null&&e.handlePinSubmit(p,f)},changePinMode:e.loginChangePinMode,onToggleChangePinMode:()=>e.toggleChangePinMode(),changePinBusy:e.changePinBusy,changePinError:e.changePinError,changePinSuccess:e.changePinSuccess,onChangePin:(p,f,b)=>e.handleChangePin(p,f,b)});if(!l.hasMasterPin&&!l.authenticated&&e.setup)return $l({show:!0,isFirstTime:!0,accounts:[],error:l.error,busy:l.busy,onSubmit:p=>e.handleSetMasterPin(p)});if(!l.hasMasterPin&&!l.authenticated&&!e.setup)return window.location.href="/setup",k}if(e.setup){const l=ck(e.channelsSnapshot),p=((n=(t=e.channelsSnapshot)==null?void 0:t.channelAccounts)==null?void 0:n.whatsapp)??[],f=uk(e.channelsSnapshot),b=dk(e);return vg({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:h=>e.handleLicenseKeyChange(h),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:p,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:h=>e.handleUninstallConfirmTextChange(h),onUninstallRun:()=>e.handleUninstallRun(),onUninstallDismiss:()=>e.handleUninstallDismiss(),onStartAuth:()=>e.handleAuthStart(),onSubmitAuthCode:h=>e.handleAuthSubmitCode(h),onAuthCodeChange:h=>e.handleAuthCodeChange(h),onSkipToWhatsApp:()=>e.handleSkipToWhatsApp(),onWhatsAppRelink:async h=>{await e.handleWhatsAppStart(!0,h),e.whatsappLoginQrDataUrl&&(await e.handleWhatsAppWait(h),await Y(e,!0),e.requestUpdate())},onWhatsAppUnlink:async h=>{await e.handleWhatsAppLogout(h)},onWhatsAppReset:async h=>{await e.handleWhatsAppLogout(h),await e.handleWhatsAppStart(!0,h),e.whatsappLoginQrDataUrl&&(await e.handleWhatsAppWait(h),await Y(e,!0),e.requestUpdate())},onRefreshStatus:async()=>{await Y(e,!0),await e.handleGatewayHealthCheck()},onWhatsAppBack:()=>{e.whatsappLoginQrDataUrl=null,e.whatsappLoginMessage=null,e.whatsappLoginConnected=null,e.whatsappActiveQrAccountId=null,e.requestUpdate(),Y(e,!0)},onRestartGateway:()=>e.handleGatewayRestart(),onRemoveWhatsAppAccount:h=>e.handleRemoveWhatsAppAccount(h),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:h=>{e.newWorkspacePin=h},onWorkspaceCreate:async(h,v)=>{const S=e.newWorkspacePin;await e.handleWorkspaceCreate(h,v),S.match(/^\d{4,6}$/)&&(await Xw(e,h,S),e.newWorkspacePin="")},onWorkspaceRemove:h=>e.handleWorkspaceRemove(h),onSetAddingWorkspace:h=>{e.addingWorkspace=h},onSetNewWorkspaceName:h=>{e.newWorkspaceName=h},onSetNewWorkspacePath:h=>{e.newWorkspacePath=h},onSetWorkspaceRemoveConfirm:h=>{e.workspaceRemoveConfirm=h},renamingWorkspace:e.renamingWorkspace,renameWorkspaceName:e.renameWorkspaceName,onWorkspaceRenameStart:()=>e.handleWorkspaceRenameStart(),onWorkspaceRenameCancel:()=>e.handleWorkspaceRenameCancel(),onWorkspaceRename:(h,v)=>e.handleWorkspaceRename(h,v),whatsappDmPolicy:(()=>{const h=ae(e),v=h==null?void 0:h.whatsappAccountId,S=v?p.find($=>$.accountId===v):p[0];return(S==null?void 0:S.dmPolicy)??null})(),onWhatsAppDmToggle:async()=>{var T;const h=ae(e),v=h==null?void 0:h.whatsappAccountId,S=v?p.find(_=>_.accountId===v):p[0];if(!S)return;const A=S.dmPolicy!=null&&S.dmPolicy!=="disabled"?"disabled":"open",E=A==="open"?{dmPolicy:A,allowFrom:["*"]}:{dmPolicy:A};try{const _=await e.client.request("config.get"),D=_.config,F=(T=D==null?void 0:D.channels)==null?void 0:T.whatsapp,be=((F==null?void 0:F.accounts)??{})[S.accountId]?{channels:{whatsapp:{accounts:{[S.accountId]:E}}}}:{channels:{whatsapp:E}};await e.client.request("config.patch",{raw:JSON.stringify(be),baseHash:_.hash,note:`WhatsApp DM policy → ${A}`,skipRestart:!0}),await Y(e,!1)}catch(_){console.error("DM toggle failed:",_)}},whatsappModel:(()=>{var T,_;const h=ae(e);if(!h)return null;const v=h.agents.find(D=>D.id.endsWith("-public")||D.id==="public");if(!v)return null;const S=(T=e.configSnapshot)==null?void 0:T.config,$=(_=S==null?void 0:S.agents)==null?void 0:_.list;if(!Array.isArray($))return null;const A=$.find(D=>D.id===v.id);if(!(A!=null&&A.model))return null;const E=typeof A.model=="string"?A.model:A.model.primary;return(E==null?void 0:E.trim())||null})(),whatsappModelCatalog:e.chatModelCatalog??[],onWhatsAppModelChange:async h=>{const v=ae(e);if(!v)return;const S=v.agents.find($=>$.id.endsWith("-public")||$.id==="public");if(S)try{const $=await e.client.request("config.get"),A=$.config,E=(A==null?void 0:A.agents)??{},T=Array.isArray(E.list)?[...E.list]:[],_=T.findIndex(F=>F.id===S.id);if(h)_>=0?T[_]={...T[_],model:h}:T.push({id:S.id,model:h});else if(_>=0){const{model:F,...ne}=T[_];Object.keys(ne).length<=1?T.splice(_,1):T[_]=ne}const D=T.length>0?{agents:{list:T}}:{agents:{list:null}};await e.client.request("config.patch",{raw:JSON.stringify(D),baseHash:$.hash,note:`Public agent model → ${h||"default"}`,skipRestart:!0}),e.configSnapshot=await e.client.request("config.get")}catch($){console.error("Model change failed:",$)}},whatsappThinkingLevel:(()=>{var E,T,_;const h=ae(e);if(!h)return null;const v=h.agents.find(D=>D.id.endsWith("-public")||D.id==="public");if(!v)return null;const S=(E=e.configSnapshot)==null?void 0:E.config,$=(T=S==null?void 0:S.agents)==null?void 0:T.list;if(!Array.isArray($))return null;const A=$.find(D=>D.id===v.id);return((_=A==null?void 0:A.thinkingLevel)==null?void 0:_.trim())||null})(),onWhatsAppThinkingChange:async h=>{const v=ae(e);if(!v)return;const S=v.agents.find($=>$.id.endsWith("-public")||$.id==="public");if(S)try{const $=await e.client.request("config.get"),A=$.config,E=(A==null?void 0:A.agents)??{},T=Array.isArray(E.list)?[...E.list]:[],_=T.findIndex(ne=>ne.id===S.id),D=h==="off"?void 0:h;if(D)_>=0?T[_]={...T[_],thinkingLevel:D}:T.push({id:S.id,thinkingLevel:D});else if(_>=0){const{thinkingLevel:ne,...be}=T[_];Object.keys(be).length<=1?T.splice(_,1):T[_]=be}const F=T.length>0?{agents:{list:T}}:{agents:{list:null}};await e.client.request("config.patch",{raw:JSON.stringify(F),baseHash:$.hash,note:`Public agent thinking → ${D||"default"}`,skipRestart:!0}),e.configSnapshot=await e.client.request("config.get")}catch($){console.error("Thinking change failed:",$)}},whatsappGroupPolicy:(()=>{var _,D;const h=(_=e.configSnapshot)==null?void 0:_.config,v=(D=h==null?void 0:h.channels)==null?void 0:D.whatsapp,S=ae(e),$=S==null?void 0:S.whatsappAccountId,A=(v==null?void 0:v.accounts)??{},E=$?A[$]:void 0;return(E==null?void 0:E.groupPolicy)??(v==null?void 0:v.groupPolicy)??"allowlist"})(),whatsappGroupRequireMention:(()=>{var D,F;const h=(D=e.configSnapshot)==null?void 0:D.config,v=(F=h==null?void 0:h.channels)==null?void 0:F.whatsapp,S=ae(e),$=S==null?void 0:S.whatsappAccountId,A=(v==null?void 0:v.accounts)??{},E=$?A[$]:void 0,_=((E==null?void 0:E.groups)??(v==null?void 0:v.groups)??{})["*"];return(_==null?void 0:_.requireMention)!==!1})(),onWhatsAppGroupToggle:async()=>{var S;const h=ae(e),v=h==null?void 0:h.whatsappAccountId;try{const $=await e.client.request("config.get"),A=$.config,E=((S=A==null?void 0:A.channels)==null?void 0:S.whatsapp)??{},T=E.accounts??{},_=v?T[v]:void 0,D=(_==null?void 0:_.groupPolicy)??E.groupPolicy??"allowlist",F=D==="disabled"||D==="allowlist",ne=F?"open":"disabled",be=F?{"*":{}}:void 0,Ye={groupPolicy:ne};be&&(Ye.groups=be);const ee=_?{channels:{whatsapp:{accounts:{[v]:Ye}}}}:{channels:{whatsapp:Ye}};await e.client.request("config.patch",{raw:JSON.stringify(ee),baseHash:$.hash,note:`WhatsApp groups → ${ne}`,skipRestart:!0}),e.configSnapshot=await e.client.request("config.get")}catch($){console.error("Group toggle failed:",$)}},onWhatsAppGroupMentionChange:async h=>{var $;const v=ae(e),S=v==null?void 0:v.whatsappAccountId;try{const A=await e.client.request("config.get"),E=A.config,_=((($=E==null?void 0:E.channels)==null?void 0:$.whatsapp)??{}).accounts??{},D=S?_[S]:void 0,F={"*":{requireMention:h}},ne=D?{channels:{whatsapp:{accounts:{[S]:{groups:F}}}}}:{channels:{whatsapp:{groups:F}}};await e.client.request("config.patch",{raw:JSON.stringify(ne),baseHash:A.hash,note:`WhatsApp group mention → ${h?"when mentioned":"always"}`,skipRestart:!0}),e.configSnapshot=await e.client.request("config.get")}catch(A){console.error("Group mention change failed:",A)}},whatsappSettingsOpen:e.whatsappSettingsOpen??!1,onWhatsAppSettingsOpen:()=>{e.whatsappSettingsOpen=!0},onWhatsAppSettingsClose:()=>{e.whatsappSettingsOpen=!1},imessageConfigured:f.configured,imessageRunning:f.running,imessageConnected:f.connected,imessageLastError:f.lastError,imessageSelfChatMode:f.selfChatMode,imessageCliPath:f.cliPath,imessageEnabling:e.imessageEnabling,imessageEnableConfirm:e.imessageEnableConfirm,imessageOwnerWorkspace:b,onIMessageEnable:()=>{e.imessageEnableConfirm=!0},onIMessageEnableConfirm:async()=>{e.imessageEnabling=!0;try{const h=await e.client.request("config.get"),v=h.config,S=(v==null?void 0:v.bindings)??[],$=ae(e),A=$==null?void 0:$.agents.find(F=>F.id.endsWith("-admin")||F.id==="admin"),E=(A==null?void 0:A.id)??"admin",T=S.filter(F=>{var ne;return((ne=F.match)==null?void 0:ne.channel)!=="imessage"}),_=[{agentId:E,match:{channel:"imessage",peer:{kind:"dm",id:"__self__"}},meta:{imessageOwner:!0}}],D=[...T,..._];await e.client.request("config.patch",{raw:JSON.stringify({channels:{imessage:{selfChatMode:!0,dmPolicy:"disabled",allowFrom:["*"]}},bindings:D}),baseHash:h.hash,note:"Enable iMessage (self-chat) for "+(($==null?void 0:$.name)??"default")}),e.imessageEnableConfirm=!1,setTimeout(()=>{Promise.all([Y(e,!0),Ne(e)]).then(()=>{e.imessageEnabling=!1})},3e3)}catch{e.imessageEnabling=!1}},onIMessageEnableCancel:()=>{e.imessageEnableConfirm=!1},onIMessageProbe:async()=>{e.imessageEnabling=!0,e.requestUpdate();try{await Y(e,!0)}finally{e.imessageEnabling=!1}},onIMessageDisconnect:async()=>{e.imessageEnabling=!0;try{const h=await e.client.request("config.get"),v=h.config,$=((v==null?void 0:v.bindings)??[]).filter(A=>{var E;return((E=A.match)==null?void 0:E.channel)!=="imessage"});await e.client.request("config.patch",{raw:JSON.stringify({channels:{imessage:{selfChatMode:!1,dmPolicy:"disabled"}},bindings:$}),baseHash:h.hash,note:"Disconnect iMessage"}),e.imessageEnableConfirm=!1,setTimeout(()=>{Promise.all([Y(e,!0),Ne(e)]).then(()=>{e.imessageEnabling=!1})},3e3)}catch{e.imessageEnabling=!1}},onIMessageReassign:async()=>{e.imessageEnabling=!0;try{const h=await e.client.request("config.get"),v=h.config,S=(v==null?void 0:v.bindings)??[],$=ae(e),A=$==null?void 0:$.agents.find(D=>D.id.endsWith("-admin")||D.id==="admin"),E=(A==null?void 0:A.id)??"admin",T=S.filter(D=>{var F;return((F=D.match)==null?void 0:F.channel)!=="imessage"}),_=[{agentId:E,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,..._]}),baseHash:h.hash,note:"Reassign iMessage to "+(($==null?void 0:$.name)??"default")}),e.imessageEnableConfirm=!1,setTimeout(()=>{Promise.all([Y(e,!0),Ne(e)]).then(()=>{e.imessageEnabling=!1})},3e3)}catch{e.imessageEnabling=!1}},infoModalOpen:e.infoModalOpen,onInfoModalOpen:h=>{e.infoModalOpen=h},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(h,v)=>{e.apiKeySavingProvider=h,e.apiKeyBusy=!0,e.apiKeyError=null,e.apiKeySuccess=null;try{await El(e.client,h,v);const S=`${h} key saved`;e.apiKeySuccess=S,e.apiKeySavingProvider=null;try{e.apiKeyProviders=await bi(e.client)}catch{}h==="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 h=>{e.apiKeySavingProvider=h,e.apiKeyBusy=!0,e.apiKeyError=null,e.apiKeySuccess=null;try{await Mw(e.client,h);const v=`${h} key removed`;e.apiKeySuccess=v,e.apiKeySavingProvider=null;try{e.apiKeyProviders=await bi(e.client)}catch{}setTimeout(()=>{e.apiKeySuccess===v&&(e.apiKeySuccess=null)},2500)}catch(v){e.apiKeyError=v instanceof Error?v.message:"Failed to remove key",e.apiKeySavingProvider=null}finally{e.apiKeyBusy=!1}},onApiKeyDisable:async(h,v)=>{e.apiKeySavingProvider=h,e.apiKeyBusy=!0,e.apiKeyError=null,e.apiKeySuccess=null;try{await Pw(e.client,h,v);const S=`${h} ${v?"disabled":"enabled"}`;e.apiKeySuccess=S,e.apiKeySavingProvider=null;try{e.apiKeyProviders=await bi(e.client)}catch{}setTimeout(()=>{e.apiKeySuccess===S&&(e.apiKeySuccess=null)},2500)}catch(S){e.apiKeyError=S instanceof Error?S.message:`Failed to ${v?"disable":"enable"} 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:h=>{e.authApiKeyInput=h},onAuthApiKeySubmit:async()=>{const h=e.authApiKeyInput.trim();if(h){e.authApiKeyBusy=!0,e.authApiKeyError=null;try{await El(e.client,"anthropic",h),await e.handleAuthStatusCheck(),e.authApiKeyMode=!1,e.authApiKeyInput=""}catch(v){e.authApiKeyError=v instanceof Error?v.message:"Failed to save API key"}finally{e.authApiKeyBusy=!1}}},accountHasPin:(()=>{var v;const h=e.selectedWorkspace??((v=e.workspaces[0])==null?void 0:v.name);return h?e.accessState.accounts.some(S=>S.id===h):!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:(h,v)=>{var $;const S=e.selectedWorkspace??(($=e.workspaces[0])==null?void 0:$.name);S&&e.handleAccountPinSave(S,h,v)},publicChatEnabled:(()=>{var S;const h=(S=e.configSnapshot)==null?void 0:S.config,v=h==null?void 0:h.publicChat;return(v==null?void 0:v.enabled)===!0})(),publicChatAuthMode:(()=>{var $;const h=($=e.configSnapshot)==null?void 0:$.config,v=h==null?void 0:h.publicChat,S=v==null?void 0:v.auth;return S==="verified"||S==="choice"?S:"anonymous"})(),publicChatBusy:e.publicChatToggleBusy,onPublicChatToggle:async()=>{var h;if(!e.publicChatToggleBusy){e.publicChatToggleBusy=!0;try{const v=await e.client.request("config.get"),S=v.config,$=((h=S==null?void 0:S.publicChat)==null?void 0:h.enabled)===!0;await e.client.request("config.patch",{raw:JSON.stringify({publicChat:{enabled:!$}}),baseHash:v.hash,note:`Public chat → ${$?"disabled":"enabled"}`}),e.configSnapshot=await e.client.request("config.get")}catch(v){console.error("Public chat toggle failed:",v)}finally{e.publicChatToggleBusy=!1}}},onPublicChatAuthModeChange:async h=>{if(!e.publicChatToggleBusy){e.publicChatToggleBusy=!0;try{const v=await e.client.request("config.get");await e.client.request("config.patch",{raw:JSON.stringify({publicChat:{auth:h}}),baseHash:v.hash,note:`Public chat auth → ${h}`}),e.configSnapshot=await e.client.request("config.get")}catch(v){console.error("Public chat auth mode change failed:",v)}finally{e.publicChatToggleBusy=!1}}},brandAccentColor:(()=>{var S;const h=e.selectedWorkspace;return h?((S=Ie()[h])==null?void 0:S.accentColor)??"":""})(),brandBackgroundColor:(()=>{var S;const h=e.selectedWorkspace;return h?((S=Ie()[h])==null?void 0:S.backgroundColor)??"":""})(),brandHasLogo:(()=>{var S;const h=e.selectedWorkspace;return h?!!((S=Ie()[h])!=null&&S.logoUrl):!1})(),brandingBusy:e.brandingBusy,brandingExpanded:e.brandingExpanded,onBrandingToggle:()=>{e.brandingExpanded=!e.brandingExpanded},onBrandAccentColorChange:async h=>{var S;const v=e.selectedWorkspace;if(!(!v||e.brandingBusy)){e.brandingBusy=!0;try{const $=await e.client.request("config.get"),A=$.config,E=((S=A==null?void 0:A.workspaces)==null?void 0:S[v])??{},T=E.brand??{};await e.client.request("config.patch",{raw:JSON.stringify({workspaces:{[v]:{...E,brand:{...T,accentColor:h}}}}),baseHash:$.hash,note:`Brand accent → ${h}`,skipRestart:!0}),e.configSnapshot=await e.client.request("config.get");const _=Ie();_[v]||(_[v]={}),_[v].accentColor=h,kn(v)}catch($){console.error("Brand accent change failed:",$)}finally{e.brandingBusy=!1}}},onBrandBackgroundColorChange:async h=>{var S;const v=e.selectedWorkspace;if(!(!v||e.brandingBusy)){e.brandingBusy=!0;try{const $=await e.client.request("config.get"),A=$.config,E=((S=A==null?void 0:A.workspaces)==null?void 0:S[v])??{},T=E.brand??{};await e.client.request("config.patch",{raw:JSON.stringify({workspaces:{[v]:{...E,brand:{...T,backgroundColor:h}}}}),baseHash:$.hash,note:`Brand background → ${h}`,skipRestart:!0}),e.configSnapshot=await e.client.request("config.get");const _=Ie();_[v]||(_[v]={}),_[v].backgroundColor=h,kn(v)}catch($){console.error("Brand background change failed:",$)}finally{e.brandingBusy=!1}}},onBrandLogoUpload:async h=>{const v=e.selectedWorkspace;if(!(!v||e.brandingBusy)){e.brandingBusy=!0;try{const S=await h.arrayBuffer(),$=new Uint8Array(S);let A="";for(let _=0;_<$.length;_++)A+=String.fromCharCode($[_]);const E=btoa(A);await e.client.request("brand.uploadLogo",{workspace:v,data:E,mimeType:h.type});const T=Ie();T[v]||(T[v]={}),T[v].logoUrl=`/brand-logo/${encodeURIComponent(v)}`}catch(S){console.error("Brand logo upload failed:",S)}finally{e.brandingBusy=!1}}},onBrandLogoRemove:async()=>{const h=e.selectedWorkspace;if(!(!h||e.brandingBusy)){e.brandingBusy=!0;try{await e.client.request("brand.removeLogo",{workspace:h});const v=Ie();v[h]&&delete v[h].logoUrl}catch(v){console.error("Brand logo remove failed:",v)}finally{e.brandingBusy=!1}}},onBrandReset:async()=>{var v;const h=e.selectedWorkspace;if(!(!h||e.brandingBusy)){e.brandingBusy=!0;try{const S=await e.client.request("config.get"),$=S.config,A=((v=$==null?void 0:$.workspaces)==null?void 0:v[h])??{},{brand:E,...T}=A;await e.client.request("config.patch",{raw:JSON.stringify({workspaces:{[h]:{...T,brand:null}}}),baseHash:S.hash,note:"Brand reset to defaults",skipRestart:!0}),e.configSnapshot=await e.client.request("config.get");try{await e.client.request("brand.removeLogo",{workspace:h})}catch{}const _=Ie();delete _[h],kn(h)}catch(S){console.error("Brand reset failed:",S)}finally{e.brandingBusy=!1}}},tailscaleStatus:e.tailscaleStatus,tailscaleBusy:e.tailscaleBusy,tailscaleAuthUrl:e.tailscaleAuthUrl,tailscaleError:e.tailscaleError,tailscaleFunnelEnableUrl:e.tailscaleFunnelEnableUrl,onTailscaleEnable:async()=>{if(!e.tailscaleBusy){e.tailscaleBusy=!0,e.tailscaleAuthUrl=null;try{const h=await e.client.request("tailscale.enable");if(h.authUrl){e.tailscaleAuthUrl=h.authUrl;const v=setInterval(async()=>{try{const S=await e.client.request("tailscale.status");e.tailscaleStatus=S,S.loggedIn&&(clearInterval(v),e.tailscaleAuthUrl=null,e.tailscaleBusy=!1)}catch{}},3e3);setTimeout(()=>{clearInterval(v),e.tailscaleBusy&&(e.tailscaleBusy=!1)},3e5)}else h.alreadyLoggedIn&&(e.tailscaleStatus=await e.client.request("tailscale.status")),e.tailscaleBusy=!1}catch(h){console.error("Tailscale enable failed:",h),e.tailscaleBusy=!1}}},onTailscaleFunnelEnable:async()=>{var h;if(!e.tailscaleBusy){e.tailscaleBusy=!0,e.tailscaleError=null,e.tailscaleFunnelEnableUrl=null;try{await e.client.request("tailscale.funnel.enable")}catch(v){console.error("Tailscale funnel enable failed:",v);const S=v;(h=S.payload)!=null&&h.enableUrl&&(e.tailscaleFunnelEnableUrl=S.payload.enableUrl),e.tailscaleError=S.message||"Failed to enable Funnel",e.tailscaleBusy=!1}}},onTailscaleFunnelDisable:async()=>{if(!e.tailscaleBusy){e.tailscaleBusy=!0;try{await e.client.request("tailscale.funnel.disable")}catch(h){console.error("Tailscale funnel disable failed:",h),e.tailscaleBusy=!1}}},wifiStatus:e.wifiStatus,wifiNetworks:e.wifiNetworks,wifiBusy:e.wifiBusy,wifiError:e.wifiError,wifiPassword:e.wifiPassword,wifiSelectedSsid:e.wifiSelectedSsid,onWifiScan:async()=>{if(!e.wifiBusy){e.wifiBusy=!0,e.wifiError=null;try{const[h,v]=await Promise.all([e.client.request("wifi.scan"),e.client.request("wifi.status")]);e.wifiNetworks=h.networks,e.wifiStatus=v}catch(h){console.error("WiFi scan failed:",h),e.wifiError=h.message||"Failed to scan networks"}finally{e.wifiBusy=!1}}},onWifiConnect:async()=>{if(e.wifiBusy||!e.wifiSelectedSsid)return;const h=e.wifiSelectedSsid;e.wifiBusy=!0,e.wifiError=null;try{const v=await e.client.request("wifi.connect",{ssid:h,password:e.wifiPassword});e.wifiPassword="",e.wifiSelectedSsid=null,e.wifiNetworks=[],e.wifiStatus={available:!0,connected:v.connected,ssid:v.ssid,signal:null,ip:v.ip,savedSsid:v.ssid,autoconnect:!0},e.wifiBusy=!1;try{const S=await e.client.request("wifi.status");e.wifiStatus=S}catch{}}catch(v){console.error("WiFi connect failed:",v),e.wifiError=v.message||"Failed to connect",e.wifiBusy=!1}},onWifiDisconnect:async()=>{if(!e.wifiBusy){e.wifiBusy=!0,e.wifiError=null;try{await e.client.request("wifi.disconnect"),e.wifiNetworks=[],e.wifiSelectedSsid=null,e.wifiPassword="";const h=await e.client.request("wifi.status");e.wifiStatus=h}catch(h){console.error("WiFi disconnect failed:",h),e.wifiError=h.message||"Failed to disconnect"}finally{e.wifiBusy=!1}}},onWifiForget:async()=>{if(!e.wifiBusy){e.wifiBusy=!0,e.wifiError=null;try{await e.client.request("wifi.forget"),e.wifiNetworks=[],e.wifiSelectedSsid=null,e.wifiPassword="";const h=await e.client.request("wifi.status");e.wifiStatus=h}catch(h){console.error("WiFi forget failed:",h),e.wifiError=h.message||"Failed to forget network"}finally{e.wifiBusy=!1}}},onWifiDismiss:()=>{e.wifiNetworks=[],e.wifiSelectedSsid=null,e.wifiPassword="",e.wifiError=null},onWifiSelectSsid:h=>{e.wifiSelectedSsid=h,e.wifiPassword="",e.wifiError=null},onWifiPasswordChange:h=>{e.wifiPassword=h},wsProps:nk(e)})}if(e.filesPage){const l=ok(e);return ig({connected:e.connected,wsProps:yn(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,currentDir:e.filesCurrentDir,message:e.filesMessage,uploadBusy:e.filesUploadBusy,reindexBusy:e.filesReindexBusy,memoryStatus:e.filesMemoryStatus,onRefresh:()=>Jt(e,l),onReindex:()=>bf(e,l),onSelectFile:p=>{e.filesPendingDeletePath=null,df(e,p,l)},onToggleSelectFile:p=>pf(e,p,l),onToggleDir:p=>wf(e,p),onUpload:(p,f)=>gf(e,p,f,l),onNewFolder:(p,f)=>mf(e,p,f,l),onDownload:p=>eu(e,p,l),onBulkDownload:()=>hf(e,l),onDelete:p=>{e.filesPendingDeletePath=null,yf(e,p,l)},pendingDeletePath:e.filesPendingDeletePath,onArmDelete:p=>{e.filesPendingDeletePath=p||null},onMoveToDir:(p,f)=>ff(e,p,f,l),searchQuery:e.filesSearchQuery,searchResults:e.filesSearchResults,searchLoading:e.filesSearchLoading,searchAgentId:e.filesSearchAgentId,agentIds:e.workspaceAgentIds??[],onSearch:p=>{const f=e.filesSearchAgentId??l;kf(e,p,f)},onSearchAgentChange:p=>{e.filesSearchAgentId=p},onSearchClear:()=>{Sf(e)},onSearchQueryChange:p=>{e.filesSearchQuery=p}})}if(e.browserPage)return Xf({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:()=>Sw(e),onStop:()=>$w(e),onToggleInput:()=>xw(e),onToggleFullscreen:()=>Ew(e),onCompleteHandoff:()=>Aw(e),onCanvasMouseDown:l=>{const f=l.target.getBoundingClientRect(),h=_n().translateCoordinates(l.clientX-f.left,l.clientY-f.top);Ys(e,"mousePressed",h.x,h.y,l.button===2?"right":l.button===1?"middle":"left")},onCanvasMouseUp:l=>{const f=l.target.getBoundingClientRect(),h=_n().translateCoordinates(l.clientX-f.left,l.clientY-f.top);Ys(e,"mouseReleased",h.x,h.y)},onCanvasMouseMove:l=>{const p=_n();if(p.shouldThrottleMouseMove())return;const b=l.target.getBoundingClientRect(),h=p.translateCoordinates(l.clientX-b.left,l.clientY-b.top);Ys(e,"mouseMoved",h.x,h.y)},onCanvasKeyDown:l=>{let p=0;l.altKey&&(p|=1),l.ctrlKey&&(p|=2),l.metaKey&&(p|=4),l.shiftKey&&(p|=8),Xs(e,"keyDown",l.key,{code:l.code,modifiers:p||void 0}),l.key.length===1&&Xs(e,"char",l.key,{text:l.key})},onCanvasKeyUp:l=>{Xs(e,"keyUp",l.key,{code:l.code})}});if(e.adminsPage){const l=ik(e),p=sk(e);return wg({connected:e.connected,wsProps:yn(e),loading:e.adminsLoading,saving:e.adminsSaving,phones:e.adminPhones,error:e.adminsError,newPhone:e.adminsNewPhone,onRefresh:()=>ns(e,l),onAdd:f=>{Ad(e,f,l,p).then(()=>{e.adminsError||(e.adminsNewPhone="")})},onRemove:f=>xd(e,f,l,p),onNewPhoneChange:f=>e.handleAdminsNewPhoneChange(f)})}if(e.contactsPage){const l=rk(e);return Eg({connected:e.connected,wsProps:yn(e),loading:e.contactsLoading,saving:e.contactsSaving,records:e.contactsRecords,error:e.contactsError,searchQuery:e.contactsSearchQuery,editingId:e.contactsEditingId,showAddForm:e.contactsShowAddForm,newRecordPhone:e.contactsNewPhone,newRecordName:e.contactsNewName,deleteConfirmId:e.contactsDeleteConfirmId,addFieldForId:e.contactsAddFieldForId,addFieldKey:e.contactsAddFieldKey,addFieldValue:e.contactsAddFieldValue,onSearch:p=>e.contactsSearchQuery=p,onSearchSubmit:()=>Ct(e,l),onAdd:(p,f)=>Ed(e,p,f,l),onDelete:p=>Cd(e,p,l),onSetField:(p,f,b)=>_o(e,p,f,b,l),onDeleteField:(p,f)=>Td(e,p,f,l),onToggleExpand:p=>{e.contactsEditingId=e.contactsEditingId===p?null:p},onShowAddForm:()=>e.contactsShowAddForm=!0,onCancelAddForm:()=>{e.contactsShowAddForm=!1,e.contactsNewPhone="",e.contactsNewName=""},onNewRecordPhoneChange:p=>e.handleContactsNewPhoneChange(p),onNewRecordNameChange:p=>e.handleContactsNewNameChange(p),onRefresh:()=>Ct(e,l),onDeleteConfirmOpen:p=>e.contactsDeleteConfirmId=p,onDeleteConfirmClose:()=>e.contactsDeleteConfirmId=null,onAddFieldOpen:p=>{e.contactsAddFieldForId=p,e.contactsAddFieldKey="",e.contactsAddFieldValue=""},onAddFieldClose:()=>{e.contactsAddFieldForId=null,e.contactsAddFieldKey="",e.contactsAddFieldValue=""},onAddFieldKeyChange:p=>e.contactsAddFieldKey=p,onAddFieldValueChange:p=>e.contactsAddFieldValue=p,onAddFieldSubmit:()=>{const p=e.contactsAddFieldForId,f=e.contactsAddFieldKey.trim();!p||!f||(_o(e,p,f,e.contactsAddFieldValue,l),e.contactsAddFieldForId=null,e.contactsAddFieldKey="",e.contactsAddFieldValue="")}})}if(e.chatPage){const l=e.connected?null:"Disconnected from gateway.",p=Rl(e),f=e.chatAvatarUrl??p??null,b=(()=>{var S;const h=(S=e.configSnapshot)==null?void 0:S.config,v=h==null?void 0:h.publicChat;return(v==null?void 0:v.enabled)===!0})();return xb({connected:e.connected,wsProps:yn(e),publicChatEnabled:b,publicChatAccountId:e.selectedWorkspace??void 0,sessionKey:e.sessionKey,onSessionKeyChange:h=>{const v=e.selectedWorkspace??"";io(),In(v,e.sessionKey,e.chatMessage),e.sessionKey=h,e.chatMessage=Rn(v,h),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:h,lastActiveSessionKey:h}),e.loadAssistantIdentity(),De(e),uo(e)},thinkingLevel:e.chatThinkingLevel,showThinking:e.settings.chatShowThinking??!1,modelProvider:e.chatModelProvider,model:e.chatModel,modelCatalog:e.chatModelCatalog,onModelChange:h=>{const v=Math.max(e.chatMessages.length+10,Be);ei(e,e.sessionKey,{model:h}).then(()=>{De(e,{limit:v})})},onThinkingLevelChange:h=>{const v=Math.max(e.chatMessages.length+10,Be);ei(e,e.sessionKey,{thinkingLevel:h==="off"?null:h}).then(()=>{De(e,{limit:v})})},verboseLevel:e.chatVerboseLevel,fillerEnabled:e.chatFillerEnabled,suggestion:e.chatSuggestion,onSuggestionClick:h=>{e.chatMessage=h,e.chatSuggestion=null,e.handleSendChat()},onVerboseChange:h=>{const v=Math.max(e.chatMessages.length+10,Be);ei(e,e.sessionKey,{verboseLevel:h==="off"?null:h}).then(()=>{De(e,{limit:v})})},onFillerChange:h=>{const v=Math.max(e.chatMessages.length+10,Be);ei(e,e.sessionKey,{fillerEnabled:h}).then(()=>{De(e,{limit:v})})},loading:e.chatLoading,sending:e.chatSending,compactionStatus:e.compactionStatus,assistantAvatarUrl:f,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();const h=Math.max(e.chatMessages.length+10,Be);return Promise.all([De(e,{limit:h}),uo(e)])},onToggleFocusMode:()=>{},onChatScroll:h=>e.handleChatScroll(h),nearBottom:e.chatUserNearBottom,hasMore:e.chatHistoryHasMore,loadingOlder:e.chatLoadingOlder,onLoadOlder:()=>{e.handleLoadOlderChat()},onDraftChange:h=>{e.chatMessage=h,ta(e.selectedWorkspace??"",e.sessionKey,h)},requestUpdate:()=>e.requestUpdate(),attachments:e.chatAttachments,onAttachmentsChange:h=>e.chatAttachments=h,onSend:()=>e.handleSendChat(),canAbort:!!e.chatRunId,onAbort:()=>{e.handleAbortChat()},onQueueRemove:h=>e.removeQueuedMessage(h),onNewSession:()=>e.handleSendChat("/new",{restoreDraft:!0}),sidebarOpen:e.sidebarOpen,sidebarContent:e.sidebarContent,sidebarError:e.sidebarError,splitRatio:e.splitRatio,onOpenSidebar:h=>e.handleOpenSidebar(h),onCloseSidebar:()=>e.handleCloseSidebar(),onSplitRatioChange:h=>e.handleSplitRatioChange(h),assistantName:e.assistantName,assistantAvatar:e.assistantAvatar})}return e.advancedPage?cw({connected:e.connected,wsProps:yn(e),activeTab:e.advancedTab,onTabChange:l=>{e.advancedTab=l,l==="cron"&&e.loadCron(),l==="skills"&&Ve(e,{clearMessages:!0}),l==="logs"&&(e.logsSubTab==="session"?An(e,{reset:!0}):Kt(e,{reset:!0}))},cronProps:{loading:e.cronLoading,status:e.cronStatus,jobs:e.cronJobs,error:e.cronError,busy:e.cronBusy,form:e.cronForm,channels:(r=(o=e.channelsSnapshot)==null?void 0:o.channelMeta)!=null&&r.length?e.channelsSnapshot.channelMeta.map(l=>l.id):((a=e.channelsSnapshot)==null?void 0:a.channelOrder)??[],channelLabels:((u=e.channelsSnapshot)==null?void 0:u.channelLabels)??{},channelMeta:((c=e.channelsSnapshot)==null?void 0:c.channelMeta)??[],agentIds:(()=>{var p;const l=ae(e);return((p=l==null?void 0:l.agents)==null?void 0:p.map(f=>f.id))??[]})(),runsJobId:e.cronRunsJobId,runs:e.cronRuns,newEventModalOpen:e.cronNewEventModal,onNewEventModalOpen:()=>{e.cronNewEventModal=!0},onNewEventModalClose:()=>{e.cronNewEventModal=!1,e.cronEditJobId=null},detailJobId:e.cronDetailJobId,editJobId:e.cronEditJobId,onDetailOpen:l=>{e.cronDetailJobId=l.id,oo(e,l.id)},onDetailClose:()=>{e.cronDetailJobId=null},onEdit:l=>{e.cronForm=gh(l),e.cronEditJobId=l.id,e.cronDetailJobId=null},onEditSave:()=>{const l=e.cronEditJobId;l&&mh(e,l).then(()=>{e.cronEditJobId=null})},onFormChange:l=>e.cronForm={...e.cronForm,...l},onRefresh:()=>e.loadCron(),onAdd:()=>{dh(e).then(()=>{e.cronNewEventModal=!1})},onToggle:(l,p)=>ph(e,l,p),onRun:l=>hh(e,l),onRemove:l=>{e.cronPendingDeleteId=null,fh(e,l)},pendingDeleteId:e.cronPendingDeleteId,onArmDelete:l=>{e.cronPendingDeleteId=l||null},onLoadRuns:l=>oo(e,l)},skillsProps:{loading:e.skillsLoading,report:e.skillsReport,error:e.skillsError,filter:e.skillsFilter,edits:e.skillEdits,messages:e.skillMessages,busyKey:e.skillsBusyKey,detail:e.skillDetail,detailTab:e.skillDetailTab,addModal:e.skillAddModal,drafts:e.skillDrafts,onFilterChange:l=>e.skillsFilter=l,onRefresh:()=>Ve(e,{clearMessages:!0}),onToggle:(l,p)=>Dc(e,l,p),onEdit:(l,p)=>Rc(e,l,p),onSaveKey:l=>Bc(e,l),onInstall:(l,p,f)=>Nc(e,l,p,f),onViewDetail:l=>Oc(e,l),onDetailClose:()=>Fc(e),onDetailTab:l=>Uc(e,l),onAddOpen:()=>Wc(e),onAddClose:()=>Kc(e),onImportDraft:l=>zc(e,l),onDeleteDraft:l=>Hc(e,l),onAddSave:()=>qc(e),onDelete:l=>Vc(e,l),onEditSkill:l=>jc(e,l)},logsProps:{logsSubTab:e.logsSubTab,onSubTabChange:l=>{e.logsSubTab=l,l==="session"?An(e,{reset:!0}):Kt(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,expandedIds:e.sessionLogsExpandedIds,onFilterTextChange:l=>e.sessionLogsFilterText=l,onTypeToggle:(l,p)=>{const f=e;f.sessionLogsTypeFilters={...f.sessionLogsTypeFilters,[l]:p}},onAgentToggle:(l,p)=>{const f=e;f.sessionLogsAgentFilters={...f.sessionLogsAgentFilters,[l]:p}},onToggleAutoFollow:l=>e.sessionLogsAutoFollow=l,onToggleExpand:l=>{const p=e,f=new Set(p.sessionLogsExpandedIds);f.has(l)?f.delete(l):f.add(l),p.sessionLogsExpandedIds=f,p.requestUpdate()},onRefresh:()=>{An(e,{reset:!0})},onExport:(l,p)=>e.exportSessionLogs(l,p),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,p)=>{e.logsLevelFilters={...e.logsLevelFilters,[l]:p}},onToggleAutoFollow:l=>e.logsAutoFollow=l,onRefresh:()=>Kt(e,{reset:!0}),onExport:(l,p)=>e.exportSessionLogs(l,p),onScroll:l=>e.handleLogsScroll(l)}}):(window.location.replace("/chat"),d``)}function hk(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 Dl(e){return e.startsWith("memory/public/")?"public":e.startsWith("memory/shared/")?"shared":"other"}function fk(e,t,n){return d`
|
|
3941
3947
|
<div class="audit-modal-overlay" @click=${s=>{s.target.classList.contains("audit-modal-overlay")&&n()}}>
|
|
3942
3948
|
<div class="audit-modal-card">
|
|
3943
3949
|
<div class="audit-modal-header">
|
|
@@ -3953,11 +3959,11 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
3953
3959
|
${e.map(s=>d`
|
|
3954
3960
|
<div class="audit-modal-entry">
|
|
3955
3961
|
<div class="audit-modal-entry-path">
|
|
3956
|
-
<span class="audit-modal-folder audit-modal-folder--${
|
|
3962
|
+
<span class="audit-modal-folder audit-modal-folder--${Dl(s.path)}">${Dl(s.path)}</span>
|
|
3957
3963
|
<a href="/files" class="audit-modal-path-link">${s.path}</a>
|
|
3958
3964
|
</div>
|
|
3959
3965
|
<div class="audit-modal-entry-meta">
|
|
3960
|
-
${
|
|
3966
|
+
${hk(s.timestamp)}
|
|
3961
3967
|
<span class="audit-modal-agent">${s.agentId}</span>
|
|
3962
3968
|
</div>
|
|
3963
3969
|
</div>
|
|
@@ -3969,7 +3975,7 @@ ${r.text}`:a.join(", "):r.text;t.push({kind:"message",key:`queue:${r.id}`,messag
|
|
|
3969
3975
|
`}
|
|
3970
3976
|
</div>
|
|
3971
3977
|
</div>
|
|
3972
|
-
`}const Kw={trace:!0,debug:!0,info:!0,warn:!0,error:!0,fatal:!0},zw={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",recipients:[],toAdmins:!1,timeoutSeconds:"",postToMainPrefix:""};function qw(e){e.basePath=pf();const t=He();if(_l(t.accentColor),Ml(t.backgroundColor),window.scrollTo(0,0),of(e),e.publicChat){const n=window.__TASKMASTER_PUBLIC_CHAT_CONFIG__,i=(n==null?void 0:n.accountId)??"",s=i?i.charAt(0).toUpperCase()+i.slice(1):"Assistant";document.title=`Chat with ${s}`,Pe(e);return}if(e.setup){document.title=`${t.name} Setup`,Pe(e);return}if(e.filesPage){document.title=`${t.name} Files`,af(e),Pe(e);return}if(e.browserPage){document.title=`${t.name} Browser`,Pe(e);return}if(e.adminsPage){document.title=`${t.name} Admins`,Pe(e);return}if(e.contactsPage){document.title=`${t.name} Contacts`,Pe(e);return}if(e.chatPage){document.title=`${t.name} Chat`,Pe(e);return}if(e.advancedPage){document.title=`${t.name} Advanced`,Pe(e);return}mf(e,!0),hf(e),ff(e),window.addEventListener("popstate",e.popStateHandler),cf(e),Pe(e),nf(e),e.tab==="logs"&&(e.logsSubTab==="session"?Do(e):Io(e)),e.tab==="debug"&&No(e)}function Hw(e){Wp(e)}function jw(e){var t;window.removeEventListener("popstate",e.popStateHandler),sf(e),Ro(e),Bo(e),Oo(e),rf(e),lf(e),gf(e),(t=e.topbarObserver)==null||t.disconnect(),e.topbarObserver=null}function Vw(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.contactsPage&&e.connected&&t.has("connected")&&t.get("connected")===!1&&e.handleContactsLoad&&e.handleContactsLoad(),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(o=>{e.channelsSnapshot=o,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;jt(e,n||i||!e.chatHasAutoScrolled)}e.tab==="logs"&&!e.advancedPage&&(t.has("logsEntries")||t.has("logsAutoFollow")||t.has("tab"))&&e.logsAutoFollow&&e.logsAtBottom&&ql(e,t.has("tab")||t.has("logsAutoFollow"))}}function Gw(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 Qw(e,t,n){await So(e,t,n),await Y(e,!0)}async function Yw(e,t){await Ql(e,t),await Y(e,!0)}async function Xw(e,t){await Yl(e,t),await Y(e,!0)}async function Jw(e,t){await Xl(e,t)}async function Zw(e,t){await Jl(e,t)}async function ek(e){await qp(e),await Be(e),await Y(e,!0)}async function tk(e){await Be(e),await Y(e,!0)}function nk(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 o=i.trim(),r=s.join(":").trim();o&&r&&(t[o]=r)}return t}function dd(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 pd(e,t=""){return`/api/channels/nostr/${encodeURIComponent(e)}/profile${t}`}function ik(e,t,n){e.nostrProfileAccountId=t,e.nostrProfileFormState=Gw(n??void 0)}function sk(e){e.nostrProfileFormState=null,e.nostrProfileAccountId=null}function ok(e,t,n){const i=e.nostrProfileFormState;i&&(e.nostrProfileFormState={...i,values:{...i.values,[t]:n},fieldErrors:{...i.fieldErrors,[t]:""}})}function rk(e){const t=e.nostrProfileFormState;t&&(e.nostrProfileFormState={...t,showAdvanced:!t.showAdvanced})}async function ak(e){const t=e.nostrProfileFormState;if(!t||t.saving)return;const n=dd(e);e.nostrProfileFormState={...t,saving:!0,error:null,success:null,fieldErrors:{}};try{const i=await fetch(pd(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 o=(s==null?void 0:s.error)??`Profile update failed (${i.status})`;e.nostrProfileFormState={...t,saving:!1,error:o,success:null,fieldErrors:nk(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 Y(e,!0)}catch(i){e.nostrProfileFormState={...t,saving:!1,error:`Profile update failed: ${String(i)}`,success:null}}}async function lk(e){const t=e.nostrProfileFormState;if(!t||t.importing)return;const n=dd(e);e.nostrProfileFormState={...t,importing:!0,error:null,success:null};try{const i=await fetch(pd(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 u=(s==null?void 0:s.error)??`Profile import failed (${i.status})`;e.nostrProfileFormState={...t,importing:!1,error:u,success:null};return}const o=s.merged??s.imported??null,r=o?{...t.values,...o}:t.values,a=!!(r.banner||r.website||r.nip05||r.lud16);e.nostrProfileFormState={...t,importing:!1,values:r,error:null,success:s.saved?"Profile imported from relays. Review and publish.":"Profile imported. Review and publish.",showAdvanced:a},s.saved&&await Y(e,!0)}catch(i){e.nostrProfileFormState={...t,importing:!1,error:`Profile import failed: ${String(i)}`,success:null}}}async function ck(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 uk(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 dk(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 pk(e,t){e.authCodeInput=t}function hk(e){e.setupStep="whatsapp"}async function fk(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 gk(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 mk(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 yk(e,t){e.licenseKey=t}async function vk(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 bk(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 wk=Object.defineProperty,kk=Object.getOwnPropertyDescriptor,m=(e,t,n,i)=>{for(var s=i>1?void 0:i?kk(t,n):t,o=e.length-1,r;o>=0;o--)(r=e[o])&&(s=(i?r(t,n,s):r(s))||s);return i&&s&&wk(t,n,s),s};const Ws=Xd();function Sk(){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 $k(){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 Ak(){const e=window.location.pathname;return e==="/files"||e.endsWith("/files")}function xk(){const e=window.location.pathname;return e==="/browser"||e.endsWith("/browser")}function Ek(){const e=window.location.pathname;return e==="/admins"||e.endsWith("/admins")}function Ck(){const e=window.location.pathname;return e==="/contacts"||e.endsWith("/contacts")}function Tk(){const e=window.location.pathname;return e==="/chat"||e.endsWith("/chat")}function _k(){const e=window.location.pathname;return e==="/advanced"||e.endsWith("/advanced")}let g=class extends Ot{constructor(){super(...arguments),this.settings=us(),this.password="",this.tab="chat",this.onboarding=Sk(),this.setup=$k(),this.filesPage=Ak(),this.browserPage=xk(),this.adminsPage=Ek(),this.contactsPage=Ck(),this.chatPage=Tk(),this.advancedPage=_k(),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=nd,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=Ws.name,this.assistantAvatar=Ws.avatar,this.assistantAgentId=Ws.agentId??null,this.sessionKey=this.settings.sessionKey,this.chatLoading=!1,this.chatSending=!1,this.chatMessage="",this.chatMessages=[],this.chatHistoryTotal=0,this.chatHistoryHasMore=!1,this.chatLoadingOlder=!1,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=`{
|
|
3978
|
+
`}const gk={trace:!0,debug:!0,info:!0,warn:!0,error:!0,fatal:!0},mk={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",recipients:[],toAdmins:!1,timeoutSeconds:"",postToMainPrefix:""};function yk(e){e.basePath=Lf();const t=je();if(jl(t.accentColor),Vl(t.backgroundColor),window.scrollTo(0,0),xf(e),e.publicChat){const n=window.__TASKMASTER_PUBLIC_CHAT_CONFIG__,i=(n==null?void 0:n.accountId)??"",s=i?i.charAt(0).toUpperCase()+i.slice(1):"Assistant";document.title=`Chat with ${s}`,Le(e);return}if(e.setup){document.title=`${t.name} Setup`,Le(e);return}if(e.filesPage){document.title=`${t.name} Files`,Cf(e),Le(e);return}if(e.browserPage){document.title=`${t.name} Browser`,Le(e);return}if(e.adminsPage){document.title=`${t.name} Admins`,Le(e);return}if(e.contactsPage){document.title=`${t.name} Contacts`,Le(e);return}if(e.chatPage){document.title=`${t.name} Chat`,Le(e);return}if(e.advancedPage){document.title=`${t.name} Advanced`,Le(e);return}Bf(e,!0),If(e),Rf(e),window.addEventListener("popstate",e.popStateHandler),_f(e),Le(e),$f(e),e.tab==="logs"&&(e.logsSubTab==="session"?Yo(e):Go(e)),e.tab==="debug"&&Jo(e)}function vk(e){ah(e)}function bk(e){var t;window.removeEventListener("popstate",e.popStateHandler),Af(e),Qo(e),Xo(e),Zo(e),Ef(e),Tf(e),Df(e),(t=e.topbarObserver)==null||t.disconnect(),e.topbarObserver=null}function wk(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.contactsPage&&e.connected&&t.has("connected")&&t.get("connected")===!1&&e.handleContactsLoad&&e.handleContactsLoad(),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(o=>{e.channelsSnapshot=o,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;Qt(e,n||i||!e.chatHasAutoScrolled)}e.tab==="logs"&&!e.advancedPage&&(t.has("logsEntries")||t.has("logsAutoFollow")||t.has("tab"))&&e.logsAutoFollow&&e.logsAtBottom&&ac(e,t.has("tab")||t.has("logsAutoFollow"))}}function kk(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 Sk(e,t,n){await No(e,t,n),await Y(e,!0)}async function $k(e,t){await pc(e,t),await Y(e,!0)}async function Ak(e,t){await hc(e,t),await Y(e,!0)}async function xk(e,t){await fc(e,t)}async function Ek(e,t){await gc(e,t)}async function Ck(e){await uh(e),await Ne(e),await Y(e,!0)}async function Tk(e){await Ne(e),await Y(e,!0)}function _k(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 o=i.trim(),r=s.join(":").trim();o&&r&&(t[o]=r)}return t}function _d(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 Md(e,t=""){return`/api/channels/nostr/${encodeURIComponent(e)}/profile${t}`}function Mk(e,t,n){e.nostrProfileAccountId=t,e.nostrProfileFormState=kk(n??void 0)}function Pk(e){e.nostrProfileFormState=null,e.nostrProfileAccountId=null}function Lk(e,t,n){const i=e.nostrProfileFormState;i&&(e.nostrProfileFormState={...i,values:{...i.values,[t]:n},fieldErrors:{...i.fieldErrors,[t]:""}})}function Ik(e){const t=e.nostrProfileFormState;t&&(e.nostrProfileFormState={...t,showAdvanced:!t.showAdvanced})}async function Rk(e){const t=e.nostrProfileFormState;if(!t||t.saving)return;const n=_d(e);e.nostrProfileFormState={...t,saving:!0,error:null,success:null,fieldErrors:{}};try{const i=await fetch(Md(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 o=(s==null?void 0:s.error)??`Profile update failed (${i.status})`;e.nostrProfileFormState={...t,saving:!1,error:o,success:null,fieldErrors:_k(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 Y(e,!0)}catch(i){e.nostrProfileFormState={...t,saving:!1,error:`Profile update failed: ${String(i)}`,success:null}}}async function Dk(e){const t=e.nostrProfileFormState;if(!t||t.importing)return;const n=_d(e);e.nostrProfileFormState={...t,importing:!0,error:null,success:null};try{const i=await fetch(Md(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 u=(s==null?void 0:s.error)??`Profile import failed (${i.status})`;e.nostrProfileFormState={...t,importing:!1,error:u,success:null};return}const o=s.merged??s.imported??null,r=o?{...t.values,...o}:t.values,a=!!(r.banner||r.website||r.nip05||r.lud16);e.nostrProfileFormState={...t,importing:!1,values:r,error:null,success:s.saved?"Profile imported from relays. Review and publish.":"Profile imported. Review and publish.",showAdvanced:a},s.saved&&await Y(e,!0)}catch(i){e.nostrProfileFormState={...t,importing:!1,error:`Profile import failed: ${String(i)}`,success:null}}}async function Bk(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 Nk(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 Ok(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 Fk(e,t){e.authCodeInput=t}function Uk(e){e.setupStep="whatsapp"}async function Wk(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 Kk(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 zk(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 qk(e,t){e.licenseKey=t}async function Hk(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 jk(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 Vk=Object.defineProperty,Gk=Object.getOwnPropertyDescriptor,m=(e,t,n,i)=>{for(var s=i>1?void 0:i?Gk(t,n):t,o=e.length-1,r;o>=0;o--)(r=e[o])&&(s=(i?r(t,n,s):r(s))||s);return i&&s&&Vk(t,n,s),s};const eo=gp();function Qk(){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 Yk(){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 Xk(){const e=window.location.pathname;return e==="/files"||e.endsWith("/files")}function Jk(){const e=window.location.pathname;return e==="/browser"||e.endsWith("/browser")}function Zk(){const e=window.location.pathname;return e==="/admins"||e.endsWith("/admins")}function e0(){const e=window.location.pathname;return e==="/contacts"||e.endsWith("/contacts")}function t0(){const e=window.location.pathname;return e==="/chat"||e.endsWith("/chat")}function n0(){const e=window.location.pathname;return e==="/advanced"||e.endsWith("/advanced")}let g=class extends Wt{constructor(){super(...arguments),this.settings=bs(),this.password="",this.tab="chat",this.onboarding=Qk(),this.setup=Yk(),this.filesPage=Xk(),this.browserPage=Jk(),this.adminsPage=Zk(),this.contactsPage=e0(),this.chatPage=t0(),this.advancedPage=n0(),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=wd,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=eo.name,this.assistantAvatar=eo.avatar,this.assistantAgentId=eo.agentId??null,this.sessionKey=this.settings.sessionKey,this.chatLoading=!1,this.chatSending=!1,this.chatMessage="",this.chatMessages=[],this.chatHistoryTotal=0,this.chatHistoryHasMore=!1,this.chatLoadingOlder=!1,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=`{
|
|
3973
3979
|
}
|
|
3974
|
-
`,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.brandingBusy=!1,this.brandingExpanded=!1,this.tailscaleStatus=null,this.tailscaleBusy=!1,this.tailscaleAuthUrl=null,this.tailscaleError=null,this.tailscaleFunnelEnableUrl=null,this.wifiStatus=null,this.wifiNetworks=[],this.wifiBusy=!1,this.wifiError=null,this.wifiPassword="",this.wifiSelectedSsid=null,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={...zw},this.cronRunsJobId=null,this.cronRuns=[],this.cronBusy=!1,this.cronNewEventModal=!1,this.cronDetailJobId=null,this.cronEditJobId=null,this.cronPendingDeleteId=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.filesCurrentDir=".",this.filesPendingDeletePath=null,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.filesResolvedAgentId=void 0,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.skillDetail=null,this.skillDetailTab="",this.skillAddModal=!1,this.skillAddForm={name:"",skillContent:"",references:[]},this.skillDrafts=[],this.adminsLoading=!1,this.adminPhones=[],this.adminsError=null,this.adminsSaving=!1,this.adminsNewPhone="",this.contactsLoading=!1,this.contactsSaving=!1,this.contactsRecords=[],this.contactsError=null,this.contactsSearchQuery="",this.contactsEditingId=null,this.contactsShowAddForm=!1,this.contactsNewPhone="",this.contactsNewName="",this.contactsDeleteConfirmId=null,this.contactsAddFieldForId=null,this.contactsAddFieldKey="",this.contactsAddFieldValue="",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={...Kw},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,tool_call:!0,tool_result:!0,thinking:!0,error:!0,system:!0},this.sessionLogsAgentFilters={},this.sessionLogsAgents=[],this.sessionLogsAutoFollow=!0,this.sessionLogsExpandedIds=new Set,this.sessionLogsCursors={},this.sessionLogsLastFetchAt=null,this.sessionLogsAtBottom=!0,this.client=null,this.chatScrollFrame=null,this.chatScrollTimeout=null,this.chatHasAutoScrolled=!1,this.chatUserNearBottom=!0,this.onLoadOlder=()=>this.handleLoadOlderChat(),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=()=>yf(this),this.themeMedia=null,this.themeMediaHandler=null,this.topbarObserver=null}createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),qw(this)}firstUpdated(){Hw(this)}disconnectedCallback(){this.stopEmbeddingPoll(),jw(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){Vw(this,e)}connect(){Pe(this)}handleChatScroll(e){Rp(this,e)}handleLogsScroll(e){Bp(this,e)}handleSessionLogsScroll(e){Np(this,e)}exportLogs(e,t){Fp(e,t)}exportSessionLogs(e,t){Up(e,t)}resetToolStream(){ko(this)}resetChatScroll(){Op(this)}async loadAssistantIdentity(){await fo(this)}applySettings(e){tt(this,e)}setTab(e){uf(this,e)}setTheme(e,t){df(this,e,t)}async loadOverview(){await Wc(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 Fo(this)}async handleAbortChat(){await zc(this)}removeQueuedMessage(e){kf(this,e)}async handleSendChat(e,t){await Sf(this,e,t)}async handleWhatsAppStart(e,t){await Qw(this,e,t)}async handleWhatsAppWait(e){await Yw(this,e)}async handleWhatsAppLogout(e){await Xw(this,e)}async handleAddWhatsAppAccount(e){await Jw(this,e)}async handleRemoveWhatsAppAccount(e){await Zw(this,e)}async handleAccessCheck(){await ml(this)}async handlePinSubmit(e,t){await Sw(this,e,t),this.accessState.authenticated&&this.accessState.workspace&&this.handleWorkspaceSelect(this.accessState.workspace)}async handleSetMasterPin(e){await $w(this,e)}async handleLogout(){await xw(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 ml(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 fk(this)}async handleLicenseActivate(){await gk(this)}async handleLicenseRemove(){await mk(this)}handleLicenseKeyChange(e){yk(this,e)}async handleAuthStatusCheck(){await ck(this)}async handleAuthStart(){await uk(this)}async handleAuthSubmitCode(e){await dk(this,e)}handleAuthCodeChange(e){pk(this,e)}handleSkipToWhatsApp(){hk(this)}async handleGatewayHealthCheck(){await vk(this)}async handleGatewayRestart(){await bk(this)}async handleUpdateCheck(){await Ju(this)}async handleUpdateRun(){await ow(this)}handleUpdateDismissResult(){lw(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 oe(async()=>{const{runUninstall:t}=await Promise.resolve().then(()=>Jr);return{runUninstall:t}},void 0,import.meta.url);await e(this)}handleUninstallDismiss(){oe(async()=>{const{clearUninstallDone:e}=await Promise.resolve().then(()=>Jr);return{clearUninstallDone:e}},void 0,import.meta.url).then(({clearUninstallDone:e})=>{e()}),this.uninstallDone=!1,this.uninstallConfirm=!1,this.uninstallConfirmText=""}async loadAuditEntries(){await Dc(this)}async clearAudit(){await zh(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();this.filesResolvedAgentId=t,Qt(this,t),Lo(this,t)}handleAdminsLoad(){const e=this.resolveAdminAgentId();oe(async()=>{const{loadAdmins:t}=await Promise.resolve().then(()=>Cw);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 n;const e=this.getSelectedWorkspaceInfo();if(!e)return;const t=e.agents.find(i=>i.id.endsWith("-admin")||i.id==="admin");return(t==null?void 0:t.id)??((n=e.agents[0])==null?void 0:n.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.resetChatScroll(),this.applySettings({...this.settings,sessionKey:t,lastActiveSessionKey:t}),this.loadAssistantIdentity())}oe(async()=>{const{loadChatHistory:t}=await Promise.resolve().then(()=>vi);return{loadChatHistory:t}},void 0,import.meta.url).then(({loadChatHistory:t})=>{t(this).then(()=>{jt(this,!0)})})}async handleLoadOlderChat(){if(this.chatLoadingOlder||!this.chatHistoryHasMore)return;const e=Dp(this),{loadOlderChatHistory:t}=await oe(async()=>{const{loadOlderChatHistory:i}=await Promise.resolve().then(()=>vi);return{loadOlderChatHistory:i}},void 0,import.meta.url);await t(this)&&e&&(await this.updateComplete,e())}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"?oe(async()=>{const{loadSessionLogs:n}=await Promise.resolve().then(()=>Rc);return{loadSessionLogs:n}},void 0,import.meta.url).then(({loadSessionLogs:n})=>{n(this,{reset:!0})}):oe(async()=>{const{loadLogs:n}=await Promise.resolve().then(()=>nh);return{loadLogs:n}},void 0,import.meta.url).then(({loadLogs:n})=>{n(this,{reset:!0})})),this.advancedTab==="skills"&&oe(async()=>{const{loadSkills:n}=await Promise.resolve().then(()=>Bh);return{loadSkills:n}},void 0,import.meta.url).then(({loadSkills:n})=>{n(this,{clearMessages:!0})})}async handleChannelConfigSave(){await ek(this)}async handleChannelConfigReload(){await tk(this)}handleNostrProfileEdit(e,t){ik(this,e,t)}handleNostrProfileCancel(){sk(this)}handleNostrProfileFieldChange(e,t){ok(this,e,t)}async handleNostrProfileSave(){await ak(this)}async handleNostrProfileImport(){await lk(this)}handleNostrProfileToggleAdvanced(){rk(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)}handleContactsLoad(){const e=this.selectedWorkspace??void 0;oe(async()=>{const{loadContacts:t}=await Promise.resolve().then(()=>Tw);return{loadContacts:t}},void 0,import.meta.url).then(({loadContacts:t})=>{t(this,e)})}handleContactsNewPhoneChange(e){this.contactsNewPhone=e,this.contactsError&&(this.contactsError=null)}handleContactsNewNameChange(e){this.contactsNewName=e,this.contactsError&&(this.contactsError=null)}async handleWorkspacesLoad(){const{loadWorkspaces:e}=await oe(async()=>{const{loadWorkspaces:t}=await Promise.resolve().then(()=>oi);return{loadWorkspaces:t}},void 0,import.meta.url);await e(this)}async handleWorkspaceCreate(e,t){const{createWorkspace:n}=await oe(async()=>{const{createWorkspace:s}=await Promise.resolve().then(()=>oi);return{createWorkspace:s}},void 0,import.meta.url),{loadChannels:i}=await oe(async()=>{const{loadChannels:s}=await Promise.resolve().then(()=>Xp);return{loadChannels:s}},void 0,import.meta.url);await n(this,{name:e,workspacePath:t,onCreated:s=>{if(!s.whatsappAccountId)return;const o=s.whatsappAccountId;this.handleWorkspaceSelect(e),setTimeout(async()=>{try{await i(this,!0),await this.handleWhatsAppStart(!0,o),this.whatsappLoginQrDataUrl&&(await this.handleWhatsAppWait(o),await i(this,!0),await this.handleWorkspacesLoad())}catch{}this.requestUpdate()},3e3)}})}async handleWorkspaceRemove(e){const{removeWorkspace:t}=await oe(async()=>{const{removeWorkspace:n}=await Promise.resolve().then(()=>oi);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 oe(async()=>{const{renameWorkspace:i}=await Promise.resolve().then(()=>oi);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),vn(e),Fr(e),this.settings=us(),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.contactsPage?this.handleContactsLoad():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)}vn(this.selectedWorkspace),Fr(this.selectedWorkspace),this.settings=us(),this.reloadCurrentPageData()}render(){return d`${Fw(this)}${this.auditModalOpen?Ww(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,"contactsPage",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,"chatHistoryTotal",2);m([y()],g.prototype,"chatHistoryHasMore",2);m([y()],g.prototype,"chatLoadingOlder",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,"brandingBusy",2);m([y()],g.prototype,"brandingExpanded",2);m([y()],g.prototype,"tailscaleStatus",2);m([y()],g.prototype,"tailscaleBusy",2);m([y()],g.prototype,"tailscaleAuthUrl",2);m([y()],g.prototype,"tailscaleError",2);m([y()],g.prototype,"tailscaleFunnelEnableUrl",2);m([y()],g.prototype,"wifiStatus",2);m([y()],g.prototype,"wifiNetworks",2);m([y()],g.prototype,"wifiBusy",2);m([y()],g.prototype,"wifiError",2);m([y()],g.prototype,"wifiPassword",2);m([y()],g.prototype,"wifiSelectedSsid",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,"cronEditJobId",2);m([y()],g.prototype,"cronPendingDeleteId",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,"filesCurrentDir",2);m([y()],g.prototype,"filesPendingDeletePath",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,"skillDetail",2);m([y()],g.prototype,"skillDetailTab",2);m([y()],g.prototype,"skillAddModal",2);m([y()],g.prototype,"skillAddForm",2);m([y()],g.prototype,"skillDrafts",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,"contactsLoading",2);m([y()],g.prototype,"contactsSaving",2);m([y()],g.prototype,"contactsRecords",2);m([y()],g.prototype,"contactsError",2);m([y()],g.prototype,"contactsSearchQuery",2);m([y()],g.prototype,"contactsEditingId",2);m([y()],g.prototype,"contactsShowAddForm",2);m([y()],g.prototype,"contactsNewPhone",2);m([y()],g.prototype,"contactsNewName",2);m([y()],g.prototype,"contactsDeleteConfirmId",2);m([y()],g.prototype,"contactsAddFieldForId",2);m([y()],g.prototype,"contactsAddFieldKey",2);m([y()],g.prototype,"contactsAddFieldValue",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([Cl("taskmaster-app")],g);
|
|
3975
|
-
//# sourceMappingURL=index-
|
|
3980
|
+
`,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.brandingBusy=!1,this.brandingExpanded=!1,this.tailscaleStatus=null,this.tailscaleBusy=!1,this.tailscaleAuthUrl=null,this.tailscaleError=null,this.tailscaleFunnelEnableUrl=null,this.wifiStatus=null,this.wifiNetworks=[],this.wifiBusy=!1,this.wifiError=null,this.wifiPassword="",this.wifiSelectedSsid=null,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={...mk},this.cronRunsJobId=null,this.cronRuns=[],this.cronBusy=!1,this.cronNewEventModal=!1,this.cronDetailJobId=null,this.cronEditJobId=null,this.cronPendingDeleteId=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.filesCurrentDir=".",this.filesPendingDeletePath=null,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.filesResolvedAgentId=void 0,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.skillDetail=null,this.skillDetailTab="",this.skillAddModal=!1,this.skillAddForm={name:"",skillContent:"",references:[]},this.skillDrafts=[],this.adminsLoading=!1,this.adminPhones=[],this.adminsError=null,this.adminsSaving=!1,this.adminsNewPhone="",this.contactsLoading=!1,this.contactsSaving=!1,this.contactsRecords=[],this.contactsError=null,this.contactsSearchQuery="",this.contactsEditingId=null,this.contactsShowAddForm=!1,this.contactsNewPhone="",this.contactsNewName="",this.contactsDeleteConfirmId=null,this.contactsAddFieldForId=null,this.contactsAddFieldKey="",this.contactsAddFieldValue="",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={...gk},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,tool_call:!0,tool_result:!0,thinking:!0,error:!0,system:!0},this.sessionLogsAgentFilters={},this.sessionLogsAgents=[],this.sessionLogsAutoFollow=!0,this.sessionLogsExpandedIds=new Set,this.sessionLogsCursors={},this.sessionLogsLastFetchAt=null,this.sessionLogsAtBottom=!0,this.client=null,this.chatScrollFrame=null,this.chatScrollTimeout=null,this.chatHasAutoScrolled=!1,this.chatUserNearBottom=!0,this.onLoadOlder=()=>this.handleLoadOlderChat(),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=()=>Nf(this),this.themeMedia=null,this.themeMediaHandler=null,this.topbarObserver=null,this._beforeUnloadHandler=()=>{var t;io();const e=this.selectedWorkspace??((t=this.publicChatConfig)==null?void 0:t.accountId)??"";e&&In(e,this.sessionKey,this.chatMessage)}}createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),yk(this),window.addEventListener("beforeunload",this._beforeUnloadHandler)}firstUpdated(){vk(this)}disconnectedCallback(){window.removeEventListener("beforeunload",this._beforeUnloadHandler),this.stopEmbeddingPoll(),bk(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){wk(this,e)}connect(){Le(this)}handleChatScroll(e){eh(this,e)}handleLogsScroll(e){nh(this,e)}handleSessionLogsScroll(e){ih(this,e)}exportLogs(e,t){oh(e,t)}exportSessionLogs(e,t){rh(e,t)}resetToolStream(){Bo(this)}resetChatScroll(){sh(this)}async loadAssistantIdentity(){await To(this)}applySettings(e){nt(this,e)}setTab(e){Mf(this,e)}setTheme(e,t){Pf(this,e,t)}async loadOverview(){await su(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 er(this)}async handleAbortChat(){await ru(this)}removeQueuedMessage(e){Wf(this,e)}async handleSendChat(e,t){await Kf(this,e,t)}async handleWhatsAppStart(e,t){await Sk(this,e,t)}async handleWhatsAppWait(e){await $k(this,e)}async handleWhatsAppLogout(e){await Ak(this,e)}async handleAddWhatsAppAccount(e){await xk(this,e)}async handleRemoveWhatsAppAccount(e){await Ek(this,e)}async handleAccessCheck(){await Il(this)}async handlePinSubmit(e,t){await Qw(this,e,t),this.accessState.authenticated&&this.accessState.workspace&&this.handleWorkspaceSelect(this.accessState.workspace)}async handleSetMasterPin(e){await Yw(this,e)}async handleLogout(){await Jw(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 Il(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 Wk(this)}async handleLicenseActivate(){await Kk(this)}async handleLicenseRemove(){await zk(this)}handleLicenseKeyChange(e){qk(this,e)}async handleAuthStatusCheck(){await Bk(this)}async handleAuthStart(){await Nk(this)}async handleAuthSubmitCode(e){await Ok(this,e)}handleAuthCodeChange(e){Fk(this,e)}handleSkipToWhatsApp(){Uk(this)}async handleGatewayHealthCheck(){await Hk(this)}async handleGatewayRestart(){await jk(this)}async handleUpdateCheck(){await md(this)}async handleUpdateRun(){await Lw(this)}handleUpdateDismissResult(){Dw(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 oe(async()=>{const{runUninstall:t}=await Promise.resolve().then(()=>fa);return{runUninstall:t}},void 0,import.meta.url);await e(this)}handleUninstallDismiss(){oe(async()=>{const{clearUninstallDone:e}=await Promise.resolve().then(()=>fa);return{clearUninstallDone:e}},void 0,import.meta.url).then(({clearUninstallDone:e})=>{e()}),this.uninstallDone=!1,this.uninstallConfirm=!1,this.uninstallConfirmText=""}async loadAuditEntries(){await Jc(this)}async clearAudit(){await uf(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();this.filesResolvedAgentId=t,Jt(this,t),Vo(this,t)}handleAdminsLoad(){const e=this.resolveAdminAgentId();oe(async()=>{const{loadAdmins:t}=await Promise.resolve().then(()=>ek);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 n;const e=this.getSelectedWorkspaceInfo();if(!e)return;const t=e.agents.find(i=>i.id.endsWith("-admin")||i.id==="admin");return(t==null?void 0:t.id)??((n=e.agents[0])==null?void 0:n.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.resetChatScroll(),this.applySettings({...this.settings,sessionKey:t,lastActiveSessionKey:t}),this.loadAssistantIdentity())}oe(async()=>{const{loadChatHistory:t}=await Promise.resolve().then(()=>xi);return{loadChatHistory:t}},void 0,import.meta.url).then(({loadChatHistory:t})=>{t(this).then(()=>{Qt(this,!0)})})}async handleLoadOlderChat(){if(this.chatLoadingOlder||!this.chatHistoryHasMore)return;const e=th(this),{loadOlderChatHistory:t}=await oe(async()=>{const{loadOlderChatHistory:i}=await Promise.resolve().then(()=>xi);return{loadOlderChatHistory:i}},void 0,import.meta.url);await t(this)&&e&&(await this.updateComplete,e())}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"?oe(async()=>{const{loadSessionLogs:n}=await Promise.resolve().then(()=>Xc);return{loadSessionLogs:n}},void 0,import.meta.url).then(({loadSessionLogs:n})=>{n(this,{reset:!0})}):oe(async()=>{const{loadLogs:n}=await Promise.resolve().then(()=>Sh);return{loadLogs:n}},void 0,import.meta.url).then(({loadLogs:n})=>{n(this,{reset:!0})})),this.advancedTab==="skills"&&oe(async()=>{const{loadSkills:n}=await Promise.resolve().then(()=>nf);return{loadSkills:n}},void 0,import.meta.url).then(({loadSkills:n})=>{n(this,{clearMessages:!0})})}async handleChannelConfigSave(){await Ck(this)}async handleChannelConfigReload(){await Tk(this)}handleNostrProfileEdit(e,t){Mk(this,e,t)}handleNostrProfileCancel(){Pk(this)}handleNostrProfileFieldChange(e,t){Lk(this,e,t)}async handleNostrProfileSave(){await Rk(this)}async handleNostrProfileImport(){await Dk(this)}handleNostrProfileToggleAdvanced(){Ik(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)}handleContactsLoad(){const e=this.selectedWorkspace??void 0;oe(async()=>{const{loadContacts:t}=await Promise.resolve().then(()=>tk);return{loadContacts:t}},void 0,import.meta.url).then(({loadContacts:t})=>{t(this,e)})}handleContactsNewPhoneChange(e){this.contactsNewPhone=e,this.contactsError&&(this.contactsError=null)}handleContactsNewNameChange(e){this.contactsNewName=e,this.contactsError&&(this.contactsError=null)}async handleWorkspacesLoad(){const{loadWorkspaces:e}=await oe(async()=>{const{loadWorkspaces:t}=await Promise.resolve().then(()=>pi);return{loadWorkspaces:t}},void 0,import.meta.url);await e(this)}async handleWorkspaceCreate(e,t){const{createWorkspace:n}=await oe(async()=>{const{createWorkspace:s}=await Promise.resolve().then(()=>pi);return{createWorkspace:s}},void 0,import.meta.url),{loadChannels:i}=await oe(async()=>{const{loadChannels:s}=await Promise.resolve().then(()=>yh);return{loadChannels:s}},void 0,import.meta.url);await n(this,{name:e,workspacePath:t,onCreated:s=>{if(!s.whatsappAccountId)return;const o=s.whatsappAccountId;this.handleWorkspaceSelect(e),setTimeout(async()=>{try{await i(this,!0),await this.handleWhatsAppStart(!0,o),this.whatsappLoginQrDataUrl&&(await this.handleWhatsAppWait(o),await i(this,!0),await this.handleWorkspacesLoad())}catch{}this.requestUpdate()},3e3)}})}async handleWorkspaceRemove(e){const{removeWorkspace:t}=await oe(async()=>{const{removeWorkspace:n}=await Promise.resolve().then(()=>pi);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 oe(async()=>{const{renameWorkspace:i}=await Promise.resolve().then(()=>pi);return{renameWorkspace:i}},void 0,import.meta.url);await n(this,e,t),this.renamingWorkspace=!1,this.renameWorkspaceName=""}handleWorkspaceSelect(e){io(),this.selectedWorkspace&&In(this.selectedWorkspace,this.sessionKey,this.chatMessage),this.selectedWorkspace=e,localStorage.setItem("taskmaster-selected-workspace",e),kn(e),ea(e),this.settings=bs(),this.chatMessage=Rn(e,this.settings.sessionKey),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.contactsPage?this.handleContactsLoad():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)}kn(this.selectedWorkspace),ea(this.selectedWorkspace),this.settings=bs(),this.chatMessage=Rn(this.selectedWorkspace,this.settings.sessionKey),this.reloadCurrentPageData()}render(){return d`${pk(this)}${this.auditModalOpen?fk(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,"contactsPage",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,"chatHistoryTotal",2);m([y()],g.prototype,"chatHistoryHasMore",2);m([y()],g.prototype,"chatLoadingOlder",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,"brandingBusy",2);m([y()],g.prototype,"brandingExpanded",2);m([y()],g.prototype,"tailscaleStatus",2);m([y()],g.prototype,"tailscaleBusy",2);m([y()],g.prototype,"tailscaleAuthUrl",2);m([y()],g.prototype,"tailscaleError",2);m([y()],g.prototype,"tailscaleFunnelEnableUrl",2);m([y()],g.prototype,"wifiStatus",2);m([y()],g.prototype,"wifiNetworks",2);m([y()],g.prototype,"wifiBusy",2);m([y()],g.prototype,"wifiError",2);m([y()],g.prototype,"wifiPassword",2);m([y()],g.prototype,"wifiSelectedSsid",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,"cronEditJobId",2);m([y()],g.prototype,"cronPendingDeleteId",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,"filesCurrentDir",2);m([y()],g.prototype,"filesPendingDeletePath",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,"skillDetail",2);m([y()],g.prototype,"skillDetailTab",2);m([y()],g.prototype,"skillAddModal",2);m([y()],g.prototype,"skillAddForm",2);m([y()],g.prototype,"skillDrafts",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,"contactsLoading",2);m([y()],g.prototype,"contactsSaving",2);m([y()],g.prototype,"contactsRecords",2);m([y()],g.prototype,"contactsError",2);m([y()],g.prototype,"contactsSearchQuery",2);m([y()],g.prototype,"contactsEditingId",2);m([y()],g.prototype,"contactsShowAddForm",2);m([y()],g.prototype,"contactsNewPhone",2);m([y()],g.prototype,"contactsNewName",2);m([y()],g.prototype,"contactsDeleteConfirmId",2);m([y()],g.prototype,"contactsAddFieldForId",2);m([y()],g.prototype,"contactsAddFieldKey",2);m([y()],g.prototype,"contactsAddFieldValue",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([ql("taskmaster-app")],g);
|
|
3981
|
+
//# sourceMappingURL=index-D-PHW4mO.js.map
|