diff --git a/lib/public/css/shell.css b/lib/public/css/shell.css index de8315d..2d9b08e 100644 --- a/lib/public/css/shell.css +++ b/lib/public/css/shell.css @@ -491,3 +491,51 @@ pointer-events: auto; } } + +/* ── Light theme overrides ─────────────────────── */ + +[data-theme="light"] .app-sidebar { + background: + linear-gradient(180deg, rgba(0, 0, 0, 0.01) 0%, rgba(0, 0, 0, 0.03) 100%), + var(--bg-sidebar); +} + +[data-theme="light"] .brand-dropdown { + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12); +} + +[data-theme="light"] .global-restart-banner__content { + background: rgba(254, 243, 199, 0.97); + border-color: rgba(253, 224, 71, 0.6); + box-shadow: 0 18px 46px rgba(0, 0, 0, 0.12); +} + +[data-theme="light"] .global-restart-banner__text { + color: #92400e; +} + +[data-theme="light"] .global-restart-banner__dismiss { + color: #92400e; +} + +[data-theme="light"] .sidebar-update-btn { + border-color: rgba(202, 138, 4, 0.3); + color: #a16207; + background: rgba(202, 138, 4, 0.06); +} + +[data-theme="light"] .sidebar-update-btn:hover { + background: rgba(202, 138, 4, 0.1); + border-color: rgba(202, 138, 4, 0.4); +} + +[data-theme="light"] .sidebar-resizer:hover::after, +[data-theme="light"] .sidebar-resizer.is-resizing::after { + background: rgba(8, 145, 178, 0.55); +} + +@media (max-width: 768px) { + [data-theme="light"] .app-sidebar { + box-shadow: 0 8px 28px rgba(0, 0, 0, 0.15); + } +} diff --git a/lib/public/css/theme.css b/lib/public/css/theme.css index 7cc526b..b6d5fbf 100644 --- a/lib/public/css/theme.css +++ b/lib/public/css/theme.css @@ -52,6 +52,52 @@ --status-info-border: rgba(14, 116, 144, 0.8); } +/* ── Light theme ─────────────────────────────────── */ +[data-theme="light"] { + --bg: #f8f9fb; + --bg-sidebar: #f0f2f5; + --bg-content: #ffffff; + --bg-hover: rgba(0, 0, 0, 0.04); + --bg-active: rgba(8, 145, 178, 0.08); + --border: rgba(0, 0, 0, 0.08); + --border-strong: rgba(0, 0, 0, 0.15); + --text: #1f2937; + --text-muted: #6b7280; + --text-dim: #9ca3af; + --text-bright: #111827; + --card-label-bright: #1f2937; + --accent: #0891b2; + --accent-dim: rgba(8, 145, 178, 0.3); + --accent-link: rgba(8, 145, 178, 0.7); + --orange: #c2410c; + --comment: #9ca3af; + --keyword: #dc2626; + --string: #2563eb; + --number: #0284c7; + --panel-bg-contrast: rgba(0, 0, 0, 0.02); + --panel-border-contrast: rgba(0, 0, 0, 0.1); + --field-bg-contrast: rgba(0, 0, 0, 0.04); + --field-border-contrast: rgba(0, 0, 0, 0.15); + --overlay: rgba(0, 0, 0, 0.5); + + --status-error: #dc2626; + --status-error-muted: #ef4444; + --status-error-bg: rgba(254, 226, 226, 0.95); + --status-error-border: rgba(252, 165, 165, 0.8); + --status-warning: #ca8a04; + --status-warning-muted: #eab308; + --status-warning-bg: rgba(254, 249, 195, 0.95); + --status-warning-border: rgba(253, 224, 71, 0.8); + --status-success: #16a34a; + --status-success-muted: #22c55e; + --status-success-bg: rgba(220, 252, 231, 0.95); + --status-success-border: rgba(134, 239, 172, 0.8); + --status-info: #0891b2; + --status-info-muted: #06b6d4; + --status-info-bg: rgba(207, 250, 254, 0.95); + --status-info-border: rgba(103, 232, 249, 0.8); +} + html, body { height: 100%; } body { @@ -738,3 +784,170 @@ textarea:focus { overflow-y: auto !important; } +/* ── Light theme overrides for hardcoded dark patterns ── */ + +[data-theme="light"] body::before { + background-image: + linear-gradient(rgba(0, 0, 0, 0.03) 1px, transparent 1px), + linear-gradient(90deg, rgba(0, 0, 0, 0.03) 1px, transparent 1px); +} + +[data-theme="light"] .ac-history-item { + background: rgba(0, 0, 0, 0.02); +} + +[data-theme="light"] .ac-history-summary { + color: var(--text); +} + +[data-theme="light"] .ac-history-item[open] > .ac-history-summary .ac-history-toggle { + color: var(--text); +} + +[data-theme="light"] .ac-surface-inset { + background: rgba(0, 0, 0, 0.02); +} + +[data-theme="light"] .snippet-collapse-fade { + background: linear-gradient(to bottom, transparent 0%, rgba(255, 255, 255, 0.85) 70%); +} + +[data-theme="light"] input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):focus, +[data-theme="light"] select:focus, +[data-theme="light"] textarea:focus { + border-color: rgba(0, 0, 0, 0.35); +} + +[data-theme="light"] ::-webkit-scrollbar-thumb { + background: rgba(0, 0, 0, 0.12); +} + +[data-theme="light"] .scope-btn { background: rgba(0, 0, 0, 0.03); } +[data-theme="light"] .scope-btn-read.active, +[data-theme="light"] .scope-btn-write.active { + background: rgba(0, 0, 0, 0.03); + color: var(--text-bright); + border-color: rgba(0, 0, 0, 0.35); +} + +[data-theme="light"] .ac-btn-cyan { + border: 1px solid var(--accent-dim); + background: linear-gradient(180deg, rgba(8, 145, 178, 0.1) 0%, rgba(8, 145, 178, 0.05) 100%); + color: var(--accent); + box-shadow: inset 0 0 0 1px rgba(8, 145, 178, 0.08); +} + +[data-theme="light"] .ac-btn-cyan:hover:not(:disabled) { + border-color: rgba(8, 145, 178, 0.6); + background: linear-gradient(180deg, rgba(8, 145, 178, 0.16) 0%, rgba(8, 145, 178, 0.08) 100%); + color: #065666; + box-shadow: inset 0 0 0 1px rgba(8, 145, 178, 0.15), 0 0 12px rgba(8, 145, 178, 0.1); +} + +[data-theme="light"] .ac-btn-cyan-ghost { + border: 1px solid var(--accent-dim); + color: var(--accent); + background: rgba(8, 145, 178, 0.04); +} + +[data-theme="light"] .ac-btn-cyan-ghost:hover { + border-color: rgba(8, 145, 178, 0.5); + color: #065666; + background: rgba(8, 145, 178, 0.08); +} + +[data-theme="light"] .ac-btn-secondary { + color: var(--text); + background: rgba(0, 0, 0, 0.02); +} + +[data-theme="light"] .ac-btn-secondary:hover:not(:disabled) { + border-color: rgba(0, 0, 0, 0.25); + color: var(--text-bright); + background: rgba(0, 0, 0, 0.04); +} + +[data-theme="light"] .ac-btn-ghost:hover:not(:disabled) { + color: var(--text-bright); +} + +[data-theme="light"] .ac-btn-danger { + border: 1px solid rgba(220, 38, 38, 0.3); + background: rgba(220, 38, 38, 0.06); + color: #dc2626; +} + +[data-theme="light"] .ac-btn-danger:hover:not(:disabled) { + border-color: rgba(220, 38, 38, 0.5); + background: rgba(220, 38, 38, 0.1); + color: #b91c1c; +} + +[data-theme="light"] .ac-btn-green { + border: 1px solid rgba(22, 163, 74, 0.3); + background: linear-gradient(180deg, rgba(22, 163, 74, 0.1) 0%, rgba(22, 163, 74, 0.05) 100%); + color: #16a34a; + box-shadow: inset 0 0 0 1px rgba(22, 163, 74, 0.08); +} + +[data-theme="light"] .ac-btn-green:hover:not(:disabled) { + border-color: rgba(22, 163, 74, 0.5); + background: linear-gradient(180deg, rgba(22, 163, 74, 0.16) 0%, rgba(22, 163, 74, 0.08) 100%); + color: #15803d; + box-shadow: inset 0 0 0 1px rgba(22, 163, 74, 0.15), 0 0 12px rgba(22, 163, 74, 0.08); +} + +[data-theme="light"] .ac-toggle-track { + background: rgba(0, 0, 0, 0.1); +} + +[data-theme="light"] .ac-toggle-thumb { + background: #9ca3af; + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1); +} + +[data-theme="light"] .ac-toggle-input:checked + .ac-toggle-track { + border-color: rgba(8, 145, 178, 0.6); + background: rgba(8, 145, 178, 0.12); + box-shadow: inset 0 0 0 1px rgba(8, 145, 178, 0.15); +} + +[data-theme="light"] .ac-toggle-input:checked + .ac-toggle-track .ac-toggle-thumb { + background: #0891b2; + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.08); +} + +[data-theme="light"] .ac-toggle-label { + color: var(--text); +} + +[data-theme="light"] .ac-path-card { + background: rgba(0, 0, 0, 0.02); +} + +[data-theme="light"] .ac-path-card:hover { + border-color: rgba(8, 145, 178, 0.4); + background: rgba(8, 145, 178, 0.04); + box-shadow: inset 0 0 0 1px rgba(8, 145, 178, 0.08), 0 0 12px rgba(8, 145, 178, 0.06); +} + +[data-theme="light"] .ac-path-card:hover .ac-path-title { + color: #065666; +} + +[data-theme="light"] .ac-path-card:hover .ac-path-desc { + color: var(--text-muted); +} + +[data-theme="light"] .ac-segmented-control { + background: rgba(0, 0, 0, 0.02); +} + +[data-theme="light"] .ac-segmented-control-button:hover { + background: rgba(0, 0, 0, 0.04); +} + +[data-theme="light"] .ac-segmented-control-dark { + background: rgba(0, 0, 0, 0.04); +} + diff --git a/lib/public/dist/app.bundle.js b/lib/public/dist/app.bundle.js index 84e4e33..bb073fa 100644 --- a/lib/public/dist/app.bundle.js +++ b/lib/public/dist/app.bundle.js @@ -1,5 +1,5 @@ -import"./chunks/chunk-72ZECFVW.js";var Tr,Se,Gf,Pr,hs,jf,qf,Jf,Zf,Gc,zc,jc,Yf,oa={},ra=[],Sk=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,Rr=Array.isArray;function _n(t,e){for(var n in e)t[n]=e[n];return t}function qc(t){t&&t.parentNode&&t.parentNode.removeChild(t)}function T(t,e,n){var s,o,r,i={};for(r in e)r=="key"?s=e[r]:r=="ref"?o=e[r]:i[r]=e[r];if(arguments.length>2&&(i.children=arguments.length>3?Tr.call(arguments,2):n),typeof t=="function"&&t.defaultProps!=null)for(r in t.defaultProps)i[r]===void 0&&(i[r]=t.defaultProps[r]);return Ar(t,i,s,o,null)}function Ar(t,e,n,s,o){var r={type:t,props:e,key:n,ref:s,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:o??++Gf,__i:-1,__u:0};return o==null&&Se.vnode!=null&&Se.vnode(r),r}function ln(t){return t.children}function hn(t,e){this.props=t,this.context=e}function $o(t,e){if(e==null)return t.__?$o(t.__,t.__i+1):null;for(var n;ee&&hs.sort(Jf),t=hs.shift(),e=hs.length,Ck(t)}finally{hs.length=ia.__r=0}}function Qf(t,e,n,s,o,r,i,a,l,c,d){var u,p,f,g,m,h,b,x=s&&s.__k||ra,v=e.length;for(l=_k(n,e,x,l,v),u=0;u0?i=t.__k[r]=Ar(i.type,i.props,i.key,i.ref?i.ref:null,i.__v):t.__k[r]=i,l=r+p,i.__=t,i.__b=t.__b+1,a=null,(c=i.__i=Mk(i,n,l,u))!=-1&&(u--,(a=n[c])&&(a.__u|=2)),a==null||a.__v==null?(c==-1&&(o>d?p--:ol?p--:p++,i.__u|=4))):t.__k[r]=null;if(u)for(r=0;r(d?1:0)){for(o=n-1,r=n+1;o>=0||r=0?o--:r++])!=null&&(2&c.__u)==0&&a==c.key&&l==c.type)return i}return-1}function Uf(t,e,n){e[0]=="-"?t.setProperty(e,n??""):t[e]=n==null?"":typeof n!="number"||Sk.test(e)?n:n+"px"}function sa(t,e,n,s,o){var r,i;e:if(e=="style")if(typeof n=="string")t.style.cssText=n;else{if(typeof s=="string"&&(t.style.cssText=s=""),s)for(e in s)n&&e in n||Uf(t.style,e,"");if(n)for(e in n)s&&n[e]==s[e]||Uf(t.style,e,n[e])}else if(e[0]=="o"&&e[1]=="n")r=e!=(e=e.replace(Zf,"$1")),i=e.toLowerCase(),e=i in t||e=="onFocusOut"||e=="onFocusIn"?i.slice(2):e.slice(2),t.l||(t.l={}),t.l[e+r]=n,n?s?n.u=s.u:(n.u=Gc,t.addEventListener(e,r?jc:zc,r)):t.removeEventListener(e,r?jc:zc,r);else{if(o=="http://www.w3.org/2000/svg")e=e.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(e!="width"&&e!="height"&&e!="href"&&e!="list"&&e!="form"&&e!="tabIndex"&&e!="download"&&e!="rowSpan"&&e!="colSpan"&&e!="role"&&e!="popover"&&e in t)try{t[e]=n??"";break e}catch{}typeof n=="function"||(n==null||n===!1&&e[4]!="-"?t.removeAttribute(e):t.setAttribute(e,e=="popover"&&n==1?"":n))}}function Kf(t){return function(e){if(this.l){var n=this.l[e.type+t];if(e.t==null)e.t=Gc++;else if(e.t0?t:Rr(t)?t.map(nh):_n({},t)}function Ak(t,e,n,s,o,r,i,a,l){var c,d,u,p,f,g,m,h=n.props||oa,b=e.props,x=e.type;if(x=="svg"?o="http://www.w3.org/2000/svg":x=="math"?o="http://www.w3.org/1998/Math/MathML":o||(o="http://www.w3.org/1999/xhtml"),r!=null){for(c=0;c2&&(a.children=arguments.length>3?Tr.call(arguments,2):n),Ar(t.type,a,s||t.key,o||t.ref,null)}function ko(t){function e(n){var s,o;return this.getChildContext||(s=new Set,(o={})[e.__c]=this,this.getChildContext=function(){return o},this.componentWillUnmount=function(){s=null},this.shouldComponentUpdate=function(r){this.props.value!=r.value&&s.forEach(function(i){i.__e=!0,Uc(i)})},this.sub=function(r){s.add(r);var i=r.componentWillUnmount;r.componentWillUnmount=function(){s&&s.delete(r),i&&i.call(r)}}),n.children}return e.__c="__cC"+Yf++,e.__=t,e.Provider=e.__l=(e.Consumer=function(n,s){return n.children(s)}).contextType=e,e}Tr=ra.slice,Se={__e:function(t,e,n,s){for(var o,r,i;e=e.__;)if((o=e.__c)&&!o.__)try{if((r=o.constructor)&&r.getDerivedStateFromError!=null&&(o.setState(r.getDerivedStateFromError(t)),i=o.__d),o.componentDidCatch!=null&&(o.componentDidCatch(t,s||{}),i=o.__d),i)return o.__E=o}catch(a){t=a}throw t}},Gf=0,Pr=function(t){return t!=null&&t.constructor===void 0},hn.prototype.setState=function(t,e){var n;n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=_n({},this.state),typeof t=="function"&&(t=t(_n({},n),this.props)),t&&_n(n,t),t!=null&&this.__v&&(e&&this._sb.push(e),Uc(this))},hn.prototype.forceUpdate=function(t){this.__v&&(this.__e=!0,t&&this.__h.push(t),Uc(this))},hn.prototype.render=ln,hs=[],qf=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Jf=function(t,e){return t.__v.__b-e.__v.__b},ia.__r=0,Zf=/(PointerCapture)$|Capture$/i,Gc=0,zc=Kf(!1),jc=Kf(!0),Yf=0;var Ws,tt,Yc,oh,Ir=0,ph=[],ut=Se,rh=ut.__b,ih=ut.__r,ah=ut.diffed,lh=ut.__c,ch=ut.unmount,dh=ut.__;function Dr(t,e){ut.__h&&ut.__h(tt,t,Ir||e),Ir=0;var n=tt.__H||(tt.__H={__:[],__h:[]});return t>=n.__.length&&n.__.push({}),n.__[t]}function y(t){return Ir=1,fh(hh,t)}function fh(t,e,n){var s=Dr(Ws++,2);if(s.t=t,!s.__c&&(s.__=[n?n(e):hh(void 0,e),function(a){var l=s.__N?s.__N[0]:s.__[0],c=s.t(l,a);l!==c&&(s.__N=[c,s.__[1]],s.__c.setState({}))}],s.__c=tt,!tt.__f)){var o=function(a,l,c){if(!s.__c.__H)return!0;var d=s.__c.__H.__.filter(function(p){return p.__c});if(d.every(function(p){return!p.__N}))return!r||r.call(this,a,l,c);var u=s.__c.props!==a;return d.some(function(p){if(p.__N){var f=p.__[0];p.__=p.__N,p.__N=void 0,f!==p.__[0]&&(u=!0)}}),r&&r.call(this,a,l,c)||u};tt.__f=!0;var r=tt.shouldComponentUpdate,i=tt.componentWillUpdate;tt.componentWillUpdate=function(a,l,c){if(this.__e){var d=r;r=void 0,o(a,l,c),r=d}i&&i.call(this,a,l,c)},tt.shouldComponentUpdate=o}return s.__N||s.__}function L(t,e){var n=Dr(Ws++,3);!ut.__s&&Qc(n.__H,e)&&(n.__=t,n.u=e,tt.__H.__h.push(n))}function Vs(t,e){var n=Dr(Ws++,4);!ut.__s&&Qc(n.__H,e)&&(n.__=t,n.u=e,tt.__h.push(n))}function ee(t){return Ir=5,F(function(){return{current:t}},[])}function F(t,e){var n=Dr(Ws++,7);return Qc(n.__H,e)&&(n.__=t(),n.__H=e,n.__h=t),n.__}function q(t,e){return Ir=8,F(function(){return t},e)}function Nr(t){var e=tt.context[t.__c],n=Dr(Ws++,9);return n.c=t,e?(n.__==null&&(n.__=!0,e.sub(tt)),e.props.value):t.__}function Pk(){for(var t;t=ph.shift();){var e=t.__H;if(t.__P&&e)try{e.__h.some(aa),e.__h.some(Xc),e.__h=[]}catch(n){e.__h=[],ut.__e(n,t.__v)}}}ut.__b=function(t){tt=null,rh&&rh(t)},ut.__=function(t,e){t&&e.__k&&e.__k.__m&&(t.__m=e.__k.__m),dh&&dh(t,e)},ut.__r=function(t){ih&&ih(t),Ws=0;var e=(tt=t.__c).__H;e&&(Yc===tt?(e.__h=[],tt.__h=[],e.__.some(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(e.__h.some(aa),e.__h.some(Xc),e.__h=[],Ws=0)),Yc=tt},ut.diffed=function(t){ah&&ah(t);var e=t.__c;e&&e.__H&&(e.__H.__h.length&&(ph.push(e)!==1&&oh===ut.requestAnimationFrame||((oh=ut.requestAnimationFrame)||Rk)(Pk)),e.__H.__.some(function(n){n.u&&(n.__H=n.u),n.u=void 0})),Yc=tt=null},ut.__c=function(t,e){e.some(function(n){try{n.__h.some(aa),n.__h=n.__h.filter(function(s){return!s.__||Xc(s)})}catch(s){e.some(function(o){o.__h&&(o.__h=[])}),e=[],ut.__e(s,n.__v)}}),lh&&lh(t,e)},ut.unmount=function(t){ch&&ch(t);var e,n=t.__c;n&&n.__H&&(n.__H.__.some(function(s){try{aa(s)}catch(o){e=o}}),n.__H=void 0,e&&ut.__e(e,n.__v))};var uh=typeof requestAnimationFrame=="function";function Rk(t){var e,n=function(){clearTimeout(s),uh&&cancelAnimationFrame(e),setTimeout(t)},s=setTimeout(n,35);uh&&(e=requestAnimationFrame(n))}function aa(t){var e=tt,n=t.__c;typeof n=="function"&&(t.__c=void 0,n()),tt=e}function Xc(t){var e=tt;t.__c=t.__(),tt=e}function Qc(t,e){return!t||t.length!==e.length||e.some(function(n,s){return n!==t[s]})}function hh(t,e){return typeof e=="function"?e(t):e}var gh=function(t,e,n,s){var o;e[0]=0;for(var r=1;r=5&&((i||!p&&r===5)&&(l.push(r,0,i,o),r=6),p&&(l.push(r,p,0,o),r=6)),i=""},d=0;d"?(r=1,i=""):i=s+i[0]:a?s===a?a="":i+=s:s==='"'||s==="'"?a=s:s===">"?(c(),r=1):r&&(s==="="?(r=5,o=i,i=""):s==="/"&&(r<5||n[d][u+1]===">")?(c(),r===3&&(l=l[0]),r=l,(l=l[0]).push(2,0,r),r=0):s===" "||s===" "||s===` -`||s==="\r"?(c(),r=2):i+=s),r===3&&i==="!--"&&(r=4,l=l[0])}return c(),l})(t)),e),arguments,[])).length>1?e:e[0]}function bh(t,e){if(t instanceof RegExp)return{keys:!1,pattern:t};var n,s,o,r,i=[],a="",l=t.split("/");for(l[0]||l.shift();o=l.shift();)n=o[0],n==="*"?(i.push(n),a+=o[1]==="?"?"(?:/(.*))?":"/(.*)"):n===":"?(s=o.indexOf("?",1),r=o.indexOf(".",1),i.push(o.substring(1,~s?s:~r?r:o.length)),a+=~s&&!~r?"(?:/([^/]+?))?":"/([^/]+?)",~r&&(a+=(~s?"?":"")+"\\"+o.substring(r))):a+="/"+o;return{keys:i,pattern:new RegExp("^"+a+(e?"(?=$|/)":"/?$"),"i")}}var Lk=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function ed(t,e){return t===e&&(t!==0||1/t===1/e)||t!==t&&e!==e}function xh(t,e,n){n&&!Lk&&(e=n);let s=e(),[{_instance:o},r]=y({_instance:{_value:s,_getSnapshot:e}});return Vs(()=>{o._value=s,o._getSnapshot=e,ed(o._value,e())||r({_instance:o})},[t,s,e]),L(()=>(ed(o._value,o._getSnapshot())||r({_instance:o}),t(()=>{ed(o._value,o._getSnapshot())||r({_instance:o})})),[t]),s}var td=t=>{let e=ee([t,(...n)=>e[0](...n)]).current;return Vs(()=>{e[0]=t}),e[1]};var Ek="popstate",nd="pushState",sd="replaceState",Ik="hashchange",yh=[Ek,nd,sd,Ik],Dk=t=>{for(let e of yh)addEventListener(e,t);return()=>{for(let e of yh)removeEventListener(e,t)}},kh=(t,e)=>xh(Dk,t,e),vh=()=>location.search,Sh=({ssrSearch:t}={})=>kh(vh,t!=null?()=>t:vh),$h=()=>location.pathname,Nk=({ssrPath:t}={})=>kh($h,t!=null?()=>t:$h);var Ok=(t,{replace:e=!1,state:n=null}={})=>history[e?sd:nd](n,"",t),Ch=(t={})=>[Nk(t),Ok],wh=Symbol.for("wouter_v3");if(typeof history<"u"&&typeof window[wh]>"u"){for(let t of[nd,sd]){let e=history[t];history[t]=function(){let n=e.apply(this,arguments),s=new Event(t);return s.arguments=arguments,dispatchEvent(s),n}}Object.defineProperty(window,wh,{value:!0})}var Bk=(t,e)=>e.toLowerCase().indexOf(t.toLowerCase())?"~"+e:e.slice(t.length)||"/",Mh=(t="")=>t==="/"?"":t,Ah=(t,e)=>t[0]==="~"?t.slice(1):Mh(e)+t,Th=(t="",e)=>Bk(_h(Mh(t)),_h(e));var _h=t=>{try{return decodeURI(t)}catch{return t}};var Rh={hook:Ch,searchHook:Sh,parser:bh,base:"",ssrPath:void 0,ssrSearch:void 0,ssrContext:void 0,hrefs:t=>t,aroundNav:(t,e,n)=>t(e,n)},Lh=ko(Rh),Or=()=>Nr(Lh),Eh={},Ih=ko(Eh),Fk=()=>Nr(Ih),la=t=>{let[e,n]=t.hook(t);return[Th(t.base,e),td((s,o)=>t.aroundNav(n,Ah(s,t.base),o))]},ca=()=>la(Or());var Dh=(t,e,n,s)=>{let{pattern:o,keys:r}=e instanceof RegExp?{keys:!1,pattern:e}:t(e||"*",s),i=o.exec(n)||[],[a,...l]=i;return a!==void 0?[!0,(()=>{let c=r!==!1?Object.fromEntries(r.map((u,p)=>[u,l[p]])):i.groups,d={...l};return c&&Object.assign(d,c),d})(),...s?[a]:[]]:[!1,null]};var da=({children:t,...e})=>{let n=Or(),s=e.hook?Rh:n,o=s,[r,i=e.ssrSearch??""]=e.ssrPath?.split("?")??[];r&&(e.ssrSearch=i,e.ssrPath=r),e.hrefs=e.hrefs??e.hook?.hrefs,e.searchHook=e.searchHook??e.hook?.searchHook;let a=ee({}),l=a.current,c=l;for(let d in s){let u=d==="base"?s[d]+(e[d]??""):e[d]??s[d];l===c&&u!==c[d]&&(a.current=c={...c}),c[d]=u,(u!==s[d]||u!==o[d])&&(o=c)}return T(Lh.Provider,{value:o,children:t})},Ph=({children:t,component:e},n)=>e?T(e,{params:n}):typeof t=="function"?t(n):t,Hk=t=>{let e=ee(Eh),n=e.current;return e.current=Object.keys(t).length!==Object.keys(n).length||Object.entries(t).some(([s,o])=>o!==n[s])?t:n};var rt=({path:t,nest:e,match:n,...s})=>{let o=Or(),[r]=la(o),[i,a,l]=n??Dh(o.parser,t,r,e),c=Hk({...Fk(),...a});if(!i)return null;let d=l?T(da,{base:l},Ph(s,c)):Ph(s,c);return T(Ih.Provider,{value:c,children:d})},l4=(t,e)=>{let n=Or(),[s,o]=la(n),{to:r="",href:i=r,onClick:a,asChild:l,children:c,className:d,replace:u,state:p,transition:f,...g}=t,m=td(b=>{b.ctrlKey||b.metaKey||b.altKey||b.shiftKey||b.button!==0||(a?.(b),b.defaultPrevented||(b.preventDefault(),o(i,t)))}),h=n.hrefs(i[0]==="~"?i.slice(1):n.base+i,n);return l&&Pr(c)?Er(c,{onClick:m,href:h}):T("a",{...g,onClick:m,href:h,className:d?.call?d(s===i):d,children:c,ref:e})},Nh=t=>Array.isArray(t)?t.flatMap(e=>Nh(e&&e.type===ln?e.props.children:e)):[t],od=({children:t,location:e})=>{let n=Or(),[s]=la(n);for(let o of Nh(t)){let r=0;if(Pr(o)&&(r=Dh(n.parser,o.props.path,e||s,o.props.nest))[0])return Er(o,{match:r})}return null};var rd=t=>{if(typeof t!="string"||!t.trim())return{};try{return JSON.parse(t)}catch{return{}}},Oh=({url:t="",onMessage:e=()=>{},onError:n=()=>{}})=>{if(typeof window?.EventSource!="function")throw new Error("Server events are not supported in this browser");let s=new window.EventSource(String(t||""),{withCredentials:!0}),o=l=>{e({event:"phase",data:rd(l?.data||"")})},r=l=>{e({event:"done",data:rd(l?.data||"")})},i=l=>{e({event:"error",data:rd(l?.data||"")})},a=l=>{n(l)};return s.addEventListener("phase",o),s.addEventListener("done",r),s.addEventListener("error",i),s.onerror=a,()=>{s.removeEventListener("phase",o),s.removeEventListener("done",r),s.removeEventListener("error",i),s.onerror=null,s.close()}};var Bh="x-client-timezone",Wk=()=>{try{return Intl?.DateTimeFormat?.().resolvedOptions?.().timeZone||""}catch{return""}},Y=async(t,e={})=>{let n={...e},s=new Headers(e?.headers||{});if(!s.has(Bh)){let r=Wk();r&&s.set(Bh,r)}n.headers=s;let o=await fetch(t,n);if(o.status===401){try{window.localStorage?.clear?.()}catch{}throw window.location.href="/setup",new Error("Unauthorized")}return o},Fh=({onMessage:t=()=>{},onOpen:e=()=>{},onError:n=()=>{}}={})=>{if(typeof window?.EventSource!="function")throw new Error("Server events are not supported in this browser");let s=new window.EventSource("/api/events/status",{withCredentials:!0}),o=r=>{let i={};try{i=r?.data?JSON.parse(r.data):{}}catch{}t(i||{})};return s.addEventListener("status",o),s.onopen=()=>e(),s.onerror=r=>n(r),()=>{s.removeEventListener("status",o),s.onopen=null,s.onerror=null,s.close()}};async function So(){return(await Y("/api/status")).json()}async function Co(){return(await Y("/api/pairings")).json()}async function _o(t,e,n=""){return(await Y(`/api/pairings/${t}/approve`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({channel:e,accountId:n})})).json()}async function Mo(t,e,n=""){let s=await Y(`/api/pairings/${t}/reject`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({channel:e,accountId:n})});return fe(s,"Could not reject pairing")}async function Hh(){return(await Y("/api/google/accounts")).json()}async function Wh({accountId:t="",client:e=""}={}){let n=new URLSearchParams;t&&n.set("accountId",String(t)),e&&n.set("client",String(e));let s=n.toString()?`?${n.toString()}`:"";return(await Y(`/api/google/credentials${s}`)).json()}async function Vh(t=""){let e=new URLSearchParams;t&&e.set("accountId",String(t));let n=e.toString()?`?${e.toString()}`:"";return(await Y(`/api/google/check${n}`)).json()}async function zh({clientId:t,clientSecret:e,email:n,services:s=[],client:o="default",personal:r=!1,accountId:i=""}){return(await Y("/api/google/credentials",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({clientId:t,clientSecret:e,email:n,services:s,client:o,personal:r,accountId:i})})).json()}async function jh({email:t,services:e=[],client:n="default",personal:s=!1,accountId:o=""}){return(await Y("/api/google/accounts",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:t,services:e,client:n,personal:s,accountId:o})})).json()}async function Uh(t=""){return(await Y("/api/google/disconnect",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({accountId:t})})).json()}var Kh=async()=>{let t=await Y("/api/gmail/config");return fe(t,"Could not load Gmail watch config")},Gh=async({client:t="default",topicPath:e="",projectId:n="",regeneratePushToken:s=!1}={})=>{let o=await Y("/api/gmail/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({client:t,topicPath:e,projectId:n,regeneratePushToken:s})});return fe(o,"Could not save Gmail watch config")},qh=async(t,{destination:e=null}={})=>{let n=await Y("/api/gmail/watch/start",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({accountId:String(t||""),...e?{destination:e}:{}})});return fe(n,"Could not start Gmail watch")},Jh=async t=>{let e=await Y("/api/gmail/watch/stop",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({accountId:String(t||"")})});return fe(e,"Could not stop Gmail watch")},Zh=async({accountId:t="",force:e=!0}={})=>{let n=await Y("/api/gmail/watch/renew",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({accountId:String(t||""),force:!!e})});return fe(n,"Could not renew Gmail watch")},Yh=async()=>{let t=await Y("/api/agent/sessions");return fe(t,"Could not load agent sessions")},ua=async()=>{let t=await Y("/api/doctor/status");return fe(t,"Could not load Doctor status")},Xh=async()=>{let t=await Y("/api/doctor/run",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({})});return fe(t,"Could not start Doctor run")};var Qh=async(t=10)=>{let e=new URLSearchParams({limit:String(t)}),n=await Y(`/api/doctor/runs?${e.toString()}`);return fe(n,"Could not load Doctor runs")},em=async({runId:t="all"}={})=>{let e=new URLSearchParams;String(t||"").trim()&&e.set("runId",String(t||""));let n=e.toString()?`?${e.toString()}`:"",s=await Y(`/api/doctor/cards${n}`);return fe(s,"Could not load Doctor findings")};var pa=async({cardId:t,status:e})=>{let n=await Y(`/api/doctor/cards/${encodeURIComponent(String(t||""))}/status`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({status:String(e||"")})});return fe(n,"Could not update Doctor card status")},tm=async({cardId:t,sessionId:e="",replyChannel:n="",replyTo:s="",prompt:o=""}={})=>{let r=await Y(`/api/doctor/findings/${encodeURIComponent(String(t||""))}/fix`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionId:String(e||""),replyChannel:String(n||""),replyTo:String(s||""),prompt:String(o||"")})});return fe(r,"Could not send Doctor fix request")},fa=async({message:t="",sessionKey:e=""}={})=>{let n=await Y("/api/agent/message",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:String(t||""),sessionKey:String(e||"")})});return fe(n,"Could not send message to agent")};async function nm(){let t=await Y("/api/gateway/restart",{method:"POST"});return fe(t,"Could not restart gateway")}async function sm(){let t=await Y("/api/restart-status");return fe(t,"Could not load restart status")}async function om(){let t=await Y("/api/restart-status/dismiss",{method:"POST"});return fe(t,"Could not dismiss restart status")}async function rm(){let t=await Y("/api/watchdog/status");return fe(t,"Could not load watchdog status")}async function im(t=30){let e=new URLSearchParams({days:String(t)}),n=await Y(`/api/usage/summary?${e.toString()}`);return fe(n,"Could not load usage summary")}async function am(t=50){let e=new URLSearchParams({limit:String(t)}),n=await Y(`/api/usage/sessions?${e.toString()}`);return fe(n,"Could not load usage sessions")}async function lm(t){let e=await Y(`/api/usage/sessions/${encodeURIComponent(String(t||""))}`);return fe(e,"Could not load usage session detail")}async function cm(t=20){let e=await Y(`/api/watchdog/events?limit=${encodeURIComponent(String(t))}`);return fe(e,"Could not load watchdog events")}async function dm(t=65536){let e=await Y(`/api/watchdog/logs?tail=${encodeURIComponent(String(t))}`);if(!e.ok)throw new Error("Could not load watchdog logs");return e.text()}async function id(t){let e=await Y("/api/watchdog/terminal/close",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionId:String(t||"")})});return fe(e,"Could not close watchdog terminal")}async function ha(){let t=await Y("/api/watchdog/repair",{method:"POST"});return fe(t,"Could not trigger watchdog repair")}async function um(){let t=await Y("/api/watchdog/resources");return fe(t,"Could not load system resources")}async function pm(){let t=await Y("/api/watchdog/settings");return fe(t,"Could not load watchdog settings")}async function ad(t){let e=await Y("/api/watchdog/settings",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t||{})});return fe(e,"Could not update watchdog settings")}async function fm(){return(await Y("/api/gateway/dashboard")).json()}async function hm(t=!1){return(await Y(`/api/openclaw/version${t?"?refresh=1":""}`)).json()}async function ma(){return(await Y("/api/openclaw/update",{method:"POST"})).json()}async function mm(t=!1){return(await Y(`/api/alphaclaw/version${t?"?refresh=1":""}`)).json()}async function gm(t=""){let e=String(t||"").trim(),n=e?`?${new URLSearchParams({tag:e}).toString()}`:"";try{let s=await Y(`/api/alphaclaw/release-notes${n}`);return await fe(s,"Could not load release notes")}catch{let s=e?`https://api.github.com/repos/chrysb/alphaclaw/releases/tags/${encodeURIComponent(e)}`:"https://api.github.com/repos/chrysb/alphaclaw/releases/latest",o=await fetch(s,{headers:{Accept:"application/vnd.github+json"}}),r=await o.text(),i=null;try{i=r?JSON.parse(r):null}catch{throw new Error(r||"Could not load release notes")}if(!o.ok)throw new Error(i?.message||r||"Could not load release notes");return{ok:!0,tag:String(i?.tag_name||e||""),name:String(i?.name||""),body:String(i?.body||""),htmlUrl:String(i?.html_url||""),publishedAt:String(i?.published_at||"")}}}async function bm(){return(await Y("/api/alphaclaw/update",{method:"POST"})).json()}async function xm(t){let e=await Y("/api/sync-cron",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),n=await e.text(),s;try{s=n?JSON.parse(n):{}}catch{throw new Error(n||"Could not parse sync cron response")}if(!e.ok)throw new Error(s.error||n||`HTTP ${e.status}`);return s}async function ym({sortBy:t="nextRunAtMs",sortDir:e="asc"}={}){let n=new URLSearchParams;t&&n.set("sortBy",String(t)),e&&n.set("sortDir",String(e));let s=n.toString()?`?${n.toString()}`:"",o=await Y(`/api/cron/jobs${s}`);return fe(o,"Could not load cron jobs")}async function vm(){let t=await Y("/api/cron/status");return fe(t,"Could not load cron status")}async function ld(t,{limit:e=20,offset:n=0,status:s="all",deliveryStatus:o="all",sortDir:r="desc",query:i=""}={}){let a=new URLSearchParams({limit:String(e),offset:String(n),status:String(s||"all"),deliveryStatus:String(o||"all"),sortDir:String(r||"desc")});String(i||"").trim()&&a.set("query",String(i).trim());let l=encodeURIComponent(String(t||"")),c=await Y(`/api/cron/jobs/${l}/runs?${a.toString()}`);return fe(c,"Could not load cron run history")}async function $m(t,{days:e=30}={}){let n=new URLSearchParams({days:String(e)}),s=encodeURIComponent(String(t||"")),o=await Y(`/api/cron/jobs/${s}/usage?${n.toString()}`);return fe(o,"Could not load cron job usage")}async function wm(t,{range:e="7d"}={}){let n=new URLSearchParams({range:String(e||"7d")}),s=encodeURIComponent(String(t||"")),o=await Y(`/api/cron/jobs/${s}/trends?${n.toString()}`);return fe(o,"Could not load cron job trends")}async function km({days:t=30}={}){let e=new URLSearchParams({days:String(t)}),n=await Y(`/api/cron/usage/bulk?${e.toString()}`);return fe(n,"Could not load cron usage overview")}async function Sm({sinceMs:t=0,limitPerJob:e=20,status:n="all",deliveryStatus:s="all",sortDir:o="desc"}={}){let r=new URLSearchParams({sinceMs:String(t||0),limitPerJob:String(e||20),status:String(n||"all"),deliveryStatus:String(s||"all"),sortDir:String(o||"desc")}),i=await Y(`/api/cron/runs/bulk?${r.toString()}`);return fe(i,"Could not load cron run outcomes")}async function Cm(t){let e=encodeURIComponent(String(t||"")),n=await Y(`/api/cron/jobs/${e}/run`,{method:"POST"});return fe(n,"Could not trigger cron job run")}async function _m(t,e){let n=encodeURIComponent(String(t||"")),o=await Y(`/api/cron/jobs/${n}/${e?"enable":"disable"}`,{method:"POST"});return fe(o,"Could not update cron job state")}async function Mm(t,e){let n=encodeURIComponent(String(t||"")),s=await Y(`/api/cron/jobs/${n}/prompt`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:String(e||"")})});return fe(s,"Could not update cron prompt")}async function Am(t,{sessionTarget:e="",wakeMode:n="",deliveryMode:s="",deliveryChannel:o="",deliveryTo:r=""}={}){let i=encodeURIComponent(String(t||"")),a=await Y(`/api/cron/jobs/${i}/routing`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionTarget:String(e||""),wakeMode:String(n||""),deliveryMode:String(s||""),deliveryChannel:String(o||""),deliveryTo:String(r||"")})});return fe(a,"Could not update cron routing")}async function ga(){return(await Y("/api/devices")).json()}async function ba(t){return(await Y(`/api/devices/${t}/approve`,{method:"POST"})).json()}async function xa(t){return(await Y(`/api/devices/${t}/reject`,{method:"POST"})).json()}var Tm=async()=>{let t=await Y("/api/nodes");return fe(t,"Could not load nodes")};var Pm=async t=>{let e=encodeURIComponent(String(t||"")),n=await Y(`/api/nodes/${e}`,{method:"DELETE"});return fe(n,"Could not remove node")},Rm=async t=>{let e=encodeURIComponent(String(t||"")),n=new AbortController,s=setTimeout(()=>n.abort(),2e4);try{let o=await Y(`/api/nodes/${e}/route`,{method:"POST",signal:n.signal});return fe(o,"Could not route execution to node")}catch(o){throw String(o?.name||"")==="AbortError"?new Error("Routing timed out. Gateway may be restarting or unavailable."):o}finally{clearTimeout(s)}},ya=async()=>{let t=await Y("/api/nodes/connect-info");return fe(t,"Could not load connect info")},Lm=async(t,e="user")=>{let n=encodeURIComponent(String(t||"")),s=new URLSearchParams({profile:String(e||"user")}),o=await Y(`/api/nodes/${n}/browser-status?${s.toString()}`);return fe(o,"Could not load node browser status")};var Em=async()=>(await Y("/api/auth/status")).json(),Im=async()=>(await Y("/api/auth/logout",{method:"POST"})).json();async function Dm(){return(await Y("/api/onboard/status")).json()}async function Nm(t,e,{importMode:n=!1}={}){return(await Y("/api/onboard",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({vars:t,modelKey:e,importMode:n})})).json()}async function va(t,e,n="new"){return(await Y("/api/onboard/github/verify",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({repo:t,token:e,mode:n})})).json()}async function Om(t){return(await Y("/api/onboard/import/scan",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tempDir:t})})).json()}async function Bm({tempDir:t,approvedSecrets:e=[],skipSecretExtraction:n=!1,githubRepo:s="",githubToken:o=""}){return(await Y("/api/onboard/import/apply",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tempDir:t,approvedSecrets:e,skipSecretExtraction:n,githubRepo:s,githubToken:o})})).json()}var Br=async()=>(await Y("/api/models")).json();var Fm=async({agentId:t}={})=>{let e=t?`?agentId=${encodeURIComponent(t)}`:"";return(await Y(`/api/models/config${e}`)).json()},Hm=async({primary:t,configuredModels:e,profiles:n,authOrder:s,agentId:o}={})=>{let r=o?`?agentId=${encodeURIComponent(o)}`:"";return(await Y(`/api/models/config${r}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({primary:t,configuredModels:e,profiles:n,authOrder:s})})).json()};var Ao=async()=>{let t=await Y("/api/agents");return fe(t,"Could not load agents")},To=async()=>{let t=await Y("/api/channels/accounts");return fe(t,"Could not load channel accounts")},Wm=async({provider:t="",accountId:e="default"}={})=>{let n=new URLSearchParams({provider:String(t||""),accountId:String(e||"default")}),s=await Y(`/api/channels/accounts/token?${n.toString()}`);return fe(s,"Could not load channel token")},Vm=async t=>{let e=await Y("/api/channels/accounts",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t||{})});return fe(e,"Could not create channel account")},zm=async t=>{let e=await Y("/api/channels/accounts/jobs",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t||{})});return fe(e,"Could not start channel account operation")},jm=({operationId:t="",onMessage:e=()=>{},onError:n=()=>{}})=>Oh({url:`/api/operations/${encodeURIComponent(String(t||""))}/events`,onMessage:e,onError:n}),Fr=async t=>{let e=await Y("/api/channels/accounts",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t||{})});return fe(e,"Could not update channel account")},$a=async t=>{let e=await Y("/api/channels/accounts",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify(t||{})});return fe(e,"Could not delete channel account")};var Um=async t=>{let e=await Y(`/api/agents/${encodeURIComponent(String(t||""))}/workspace-size`);return fe(e,"Could not load workspace size")},Km=async t=>{let e=await Y(`/api/agents/${encodeURIComponent(String(t||""))}/bindings`);return fe(e,"Could not load agent bindings")},Gm=async t=>{let e=await Y("/api/agents",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t||{})});return fe(e,"Could not create agent")},qm=async(t,e)=>{let n=await Y(`/api/agents/${encodeURIComponent(String(t||""))}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e||{})});return fe(n,"Could not update agent")};var Jm=async(t,{keepWorkspace:e=!0}={})=>{let n=new URLSearchParams({keepWorkspace:e?"true":"false"}),s=await Y(`/api/agents/${encodeURIComponent(String(t||""))}?${n.toString()}`,{method:"DELETE"});return fe(s,"Could not delete agent")},Zm=async t=>{let e=await Y(`/api/agents/${encodeURIComponent(String(t||""))}/default`,{method:"POST"});return fe(e,"Could not set default agent")},Po=async()=>(await Y("/api/codex/status")).json(),Hr=async()=>(await Y("/api/codex/disconnect",{method:"POST"})).json(),Wr=async t=>(await Y("/api/codex/exchange",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({input:t})})).json();async function Vr(){return(await Y("/api/env")).json()}async function cd(t){let e=await Y("/api/env",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({vars:t})}),n=await e.text(),s;try{s=n?JSON.parse(n):{}}catch{throw new Error(n||"Could not parse env save response")}if(!e.ok)throw new Error(s.error||n||`HTTP ${e.status}`);return s}var fe=async(t,e)=>{let n=await t.text(),s;try{s=n?JSON.parse(n):{}}catch{throw new Error(n||e)}if(!t.ok||s?.ok===!1)throw new Error(s.error||n||`HTTP ${t.status}`);return s};async function Ym(){let t=await Y("/api/webhooks");return fe(t,"Could not load webhooks")}async function Xm(t){let e=await Y(`/api/webhooks/${encodeURIComponent(t)}`);return fe(e,"Could not load webhook detail")}async function Qm(t,{destination:e=null,oauthCallback:n=!1}={}){let s=await Y("/api/webhooks",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:t,...e?{destination:e}:{},oauthCallback:!!n})});return fe(s,"Could not create webhook")}async function eg(t,{deleteTransformDir:e=!1}={}){let n=await Y(`/api/webhooks/${encodeURIComponent(t)}`,{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({deleteTransformDir:!!e})});return fe(n,"Could not delete webhook")}async function tg(t,{destination:e=null}={}){let n=await Y(`/api/webhooks/${encodeURIComponent(t)}/destination`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({destination:e})});return fe(n,"Could not update webhook destination")}async function ng(t){let e=await Y(`/api/webhooks/${encodeURIComponent(t)}/oauth-callback/rotate`,{method:"POST"});return fe(e,"Could not rotate OAuth callback")}async function sg(t,{limit:e=50,offset:n=0,status:s="all"}={}){let o=new URLSearchParams({limit:String(e),offset:String(n),status:String(s||"all")}),r=await Y(`/api/webhooks/${encodeURIComponent(t)}/requests?${o.toString()}`);return fe(r,"Could not load webhook requests")}async function og(t,e){let n=await Y(`/api/webhooks/${encodeURIComponent(t)}/requests/${encodeURIComponent(String(e))}`);return fe(n,"Could not load webhook request")}var rg=async(t=10)=>{let e=new URLSearchParams({depth:String(t)}),n=await Y(`/api/browse/tree?${e.toString()}`);return fe(n,"Could not load file tree")},dd=async t=>{let e=new URLSearchParams({path:String(t||"")}),n=await Y(`/api/browse/read?${e.toString()}`);return fe(n,"Could not load file content")},ig=async(t,e)=>{let n=String(t||""),s=typeof e=="string"?e:String(e??""),o=await Y("/api/browse/write",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:n,content:s})});return fe(o,"Could not save file")},ag=async t=>{let e=await Y("/api/browse/create-file",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:String(t||"")})});return fe(e,"Could not create file")},lg=async t=>{let e=await Y("/api/browse/create-folder",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:String(t||"")})});return fe(e,"Could not create folder")},cg=async(t,e)=>{let n=await Y("/api/browse/move",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({from:String(t||""),to:String(e||"")})});return fe(n,"Could not move path")},wa=async t=>{let e=await Y("/api/browse/delete",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:String(t||"")})});return fe(e,"Could not delete file")},dg=async t=>{let e=new URLSearchParams({path:String(t||"")}),n=await Y(`/api/browse/download?${e.toString()}`);if(!n.ok){let a=await n.text();throw new Error(a||"Could not download file")}let s=await n.blob(),o=window?.URL||URL;if(!o?.createObjectURL||!o?.revokeObjectURL)throw new Error("Download is not supported in this browser");let r=o.createObjectURL(s),i=String(t||"").split("/").filter(Boolean).pop()||"download";try{let a=document.createElement("a");a.href=r,a.download=i,document.body?.appendChild(a),a.click(),a.remove()}finally{o.revokeObjectURL(r)}return{ok:!0}},ug=async t=>{let e=await Y("/api/browse/restore",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:String(t||"")})});return fe(e,"Could not restore file")},ud=async()=>{let t=await Y("/api/browse/git-summary");return fe(t,"Could not load git summary")},pg=async t=>{let e=new URLSearchParams({path:String(t||"")}),n=await Y(`/api/browse/git-diff?${e.toString()}`);return fe(n,"Could not load file diff")},fg=async({filePath:t,table:e,limit:n=50,offset:s=0})=>{let o=new URLSearchParams({path:String(t||""),table:String(e||""),limit:String(n),offset:String(s)}),r=await Y(`/api/browse/sqlite-table?${o.toString()}`);return fe(r,"Could not load sqlite table data")},hg=async(t="")=>{let e=await Y("/api/browse/git-sync",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:String(t||"")})});return fe(e,"Could not sync changes")};var zs=t=>String(t||"").split("/")[0]||"",Ro=t=>{let e=String(t||"").trim();return e==="openai-codex"?"openai":e==="volcengine-plan"?"volcengine":e==="byteplus-plan"?"byteplus":e},Vk=[{label:"Opus 4.6",preferredKeys:["anthropic/claude-opus-4-6"]},{label:"Sonnet 4.6",preferredKeys:["anthropic/claude-sonnet-4-6"]},{label:"Codex 5.3",preferredKeys:["openai-codex/gpt-5.3-codex"]},{label:"GPT-5.4",preferredKeys:["openai-codex/gpt-5.4"]},{label:"Gemini 3.1 Pro",preferredKeys:["google/gemini-3.1-pro-preview"]}],Lo=t=>{let e=[],n=new Set;return Vk.forEach(s=>{let o=s.preferredKeys.map(r=>t.find(i=>i.key===r)).find(Boolean);!o||n.has(o.key)||(e.push({...o,featuredLabel:s.label}),n.add(o.key))}),e},Mn={anthropic:[{key:"ANTHROPIC_API_KEY",label:"Anthropic API Key",url:"https://console.anthropic.com",linkText:"Get key",placeholder:"sk-ant-..."},{key:"ANTHROPIC_TOKEN",label:"Anthropic Setup Token",hint:"From claude setup-token (uses your Claude subscription)",linkText:"Get token",placeholder:"Token..."}],openai:[{key:"OPENAI_API_KEY",label:"OpenAI API Key",url:"https://platform.openai.com",linkText:"Get key",placeholder:"sk-..."}],google:[{key:"GEMINI_API_KEY",label:"Gemini API Key",url:"https://aistudio.google.com",linkText:"Get key",placeholder:"AI..."}],opencode:[{key:"OPENCODE_API_KEY",label:"OpenCode API Key",placeholder:"oc-..."}],openrouter:[{key:"OPENROUTER_API_KEY",label:"OpenRouter API Key",url:"https://openrouter.ai",linkText:"Get key",placeholder:"sk-or-..."}],zai:[{key:"ZAI_API_KEY",label:"Z.AI API Key",placeholder:"zai-..."}],"vercel-ai-gateway":[{key:"AI_GATEWAY_API_KEY",label:"AI Gateway API Key",placeholder:"aigw_..."}],kilocode:[{key:"KILOCODE_API_KEY",label:"KiloCode API Key",placeholder:"kilo_..."}],xai:[{key:"XAI_API_KEY",label:"xAI API Key",placeholder:"xai-..."}],mistral:[{key:"MISTRAL_API_KEY",label:"Mistral API Key",url:"https://console.mistral.ai",linkText:"Get key",placeholder:"sk-..."}],voyage:[{key:"VOYAGE_API_KEY",label:"Voyage API Key",url:"https://dash.voyageai.com",linkText:"Get key",placeholder:"pa-..."}],groq:[{key:"GROQ_API_KEY",label:"Groq API Key",url:"https://console.groq.com",linkText:"Get key",placeholder:"gsk_..."}],cerebras:[{key:"CEREBRAS_API_KEY",label:"Cerebras API Key",placeholder:"csk-..."}],moonshot:[{key:"MOONSHOT_API_KEY",label:"Moonshot API Key",placeholder:"sk-..."}],"kimi-coding":[{key:"KIMI_API_KEY",label:"Kimi API Key",placeholder:"sk-..."}],volcengine:[{key:"VOLCANO_ENGINE_API_KEY",label:"Volcano Engine API Key",placeholder:"ve-..."}],byteplus:[{key:"BYTEPLUS_API_KEY",label:"BytePlus API Key",placeholder:"bp-..."}],synthetic:[{key:"SYNTHETIC_API_KEY",label:"Synthetic API Key",placeholder:"syn-..."}],minimax:[{key:"MINIMAX_API_KEY",label:"MiniMax API Key",placeholder:"minimax-..."}],deepgram:[{key:"DEEPGRAM_API_KEY",label:"Deepgram API Key",url:"https://console.deepgram.com",linkText:"Get key",placeholder:"dg-..."}],vllm:[{key:"VLLM_API_KEY",label:"vLLM API Key",placeholder:"vllm-local"}]},js={anthropic:"Anthropic",openai:"OpenAI",google:"Gemini",opencode:"OpenCode Zen",openrouter:"OpenRouter",zai:"Z.AI","vercel-ai-gateway":"Vercel AI Gateway",kilocode:"Kilo Gateway",xai:"xAI",mistral:"Mistral",cerebras:"Cerebras",moonshot:"Moonshot","kimi-coding":"Kimi Coding",volcengine:"Volcano Engine",byteplus:"BytePlus",synthetic:"Synthetic",minimax:"MiniMax",voyage:"Voyage",groq:"Groq",deepgram:"Deepgram",vllm:"vLLM"},zr=["anthropic","openai","google","zai","xai","openrouter","opencode","kilocode","vercel-ai-gateway","minimax","moonshot","kimi-coding","volcengine","byteplus","synthetic","mistral","cerebras","voyage","groq","deepgram","vllm"];var mg=[{id:"embeddings",label:"Memory Embeddings",tag:"Embeddings",providers:["openai","google","voyage","mistral"]},{id:"audio",label:"Audio Transcription",tag:"Audio",hasDefault:!0,providers:["openai","groq","deepgram","google","mistral"]}],gg=t=>{if(t==="openai-codex")return new Set;let e=Ro(t),n=Mn[e]||[];return new Set(n.map(s=>s.key))},bg=Object.values(Mn).flat().filter((t,e,n)=>n.findIndex(s=>s.key===t.key)===e);var Eo=P.bind(T),pd="new",fd="existing",An="fresh",Ot="import",Tn="create",qn="existing-empty",zk=t=>String(t||"").trim().replace(/^git@github\.com:/,"").replace(/^https:\/\/github\.com\//,"").replace(/\.git$/,""),jr=t=>{let e=zk(t);if(!e)return!1;let n=e.split("/").filter(Boolean);return n.length===2&&!n.some(s=>/\s/.test(s))},Ht=[{id:"github",title:"GitHub",description:"Auto-backup your config and workspace",fields:[{key:"_GITHUB_SOURCE_REPO",label:"Source Repo",placeholder:"username/existing-openclaw",isText:!0},{key:"GITHUB_WORKSPACE_REPO",label:"New Workspace Repo",placeholder:"username/my-agent",isText:!0},{key:"GITHUB_TOKEN",label:"Personal Access Token",hint:Eo`Create a${" "}2&&(i.children=arguments.length>3?Tr.call(arguments,2):n),typeof t=="function"&&t.defaultProps!=null)for(r in t.defaultProps)i[r]===void 0&&(i[r]=t.defaultProps[r]);return Ar(t,i,s,o,null)}function Ar(t,e,n,s,o){var r={type:t,props:e,key:n,ref:s,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:o??++Jf,__i:-1,__u:0};return o==null&&Se.vnode!=null&&Se.vnode(r),r}function ln(t){return t.children}function hn(t,e){this.props=t,this.context=e}function $o(t,e){if(e==null)return t.__?$o(t.__,t.__i+1):null;for(var n;ee&&hs.sort(Yf),t=hs.shift(),e=hs.length,Pk(t)}finally{hs.length=ia.__r=0}}function th(t,e,n,s,o,r,i,a,l,c,d){var u,p,f,g,m,h,b,x=s&&s.__k||ra,v=e.length;for(l=Rk(n,e,x,l,v),u=0;u0?i=t.__k[r]=Ar(i.type,i.props,i.key,i.ref?i.ref:null,i.__v):t.__k[r]=i,l=r+p,i.__=t,i.__b=t.__b+1,a=null,(c=i.__i=Lk(i,n,l,u))!=-1&&(u--,(a=n[c])&&(a.__u|=2)),a==null||a.__v==null?(c==-1&&(o>d?p--:ol?p--:p++,i.__u|=4))):t.__k[r]=null;if(u)for(r=0;r(d?1:0)){for(o=n-1,r=n+1;o>=0||r=0?o--:r++])!=null&&(2&c.__u)==0&&a==c.key&&l==c.type)return i}return-1}function Gf(t,e,n){e[0]=="-"?t.setProperty(e,n??""):t[e]=n==null?"":typeof n!="number"||Tk.test(e)?n:n+"px"}function sa(t,e,n,s,o){var r,i;e:if(e=="style")if(typeof n=="string")t.style.cssText=n;else{if(typeof s=="string"&&(t.style.cssText=s=""),s)for(e in s)n&&e in n||Gf(t.style,e,"");if(n)for(e in n)s&&n[e]==s[e]||Gf(t.style,e,n[e])}else if(e[0]=="o"&&e[1]=="n")r=e!=(e=e.replace(Xf,"$1")),i=e.toLowerCase(),e=i in t||e=="onFocusOut"||e=="onFocusIn"?i.slice(2):e.slice(2),t.l||(t.l={}),t.l[e+r]=n,n?s?n.u=s.u:(n.u=Gc,t.addEventListener(e,r?zc:jc,r)):t.removeEventListener(e,r?zc:jc,r);else{if(o=="http://www.w3.org/2000/svg")e=e.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(e!="width"&&e!="height"&&e!="href"&&e!="list"&&e!="form"&&e!="tabIndex"&&e!="download"&&e!="rowSpan"&&e!="colSpan"&&e!="role"&&e!="popover"&&e in t)try{t[e]=n??"";break e}catch{}typeof n=="function"||(n==null||n===!1&&e[4]!="-"?t.removeAttribute(e):t.setAttribute(e,e=="popover"&&n==1?"":n))}}function qf(t){return function(e){if(this.l){var n=this.l[e.type+t];if(e.t==null)e.t=Gc++;else if(e.t0?t:Rr(t)?t.map(oh):_n({},t)}function Ek(t,e,n,s,o,r,i,a,l){var c,d,u,p,f,g,m,h=n.props||oa,b=e.props,x=e.type;if(x=="svg"?o="http://www.w3.org/2000/svg":x=="math"?o="http://www.w3.org/1998/Math/MathML":o||(o="http://www.w3.org/1999/xhtml"),r!=null){for(c=0;c2&&(a.children=arguments.length>3?Tr.call(arguments,2):n),Ar(t.type,a,s||t.key,o||t.ref,null)}function ko(t){function e(n){var s,o;return this.getChildContext||(s=new Set,(o={})[e.__c]=this,this.getChildContext=function(){return o},this.componentWillUnmount=function(){s=null},this.shouldComponentUpdate=function(r){this.props.value!=r.value&&s.forEach(function(i){i.__e=!0,Uc(i)})},this.sub=function(r){s.add(r);var i=r.componentWillUnmount;r.componentWillUnmount=function(){s&&s.delete(r),i&&i.call(r)}}),n.children}return e.__c="__cC"+Qf++,e.__=t,e.Provider=e.__l=(e.Consumer=function(n,s){return n.children(s)}).contextType=e,e}Tr=ra.slice,Se={__e:function(t,e,n,s){for(var o,r,i;e=e.__;)if((o=e.__c)&&!o.__)try{if((r=o.constructor)&&r.getDerivedStateFromError!=null&&(o.setState(r.getDerivedStateFromError(t)),i=o.__d),o.componentDidCatch!=null&&(o.componentDidCatch(t,s||{}),i=o.__d),i)return o.__E=o}catch(a){t=a}throw t}},Jf=0,Pr=function(t){return t!=null&&t.constructor===void 0},hn.prototype.setState=function(t,e){var n;n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=_n({},this.state),typeof t=="function"&&(t=t(_n({},n),this.props)),t&&_n(n,t),t!=null&&this.__v&&(e&&this._sb.push(e),Uc(this))},hn.prototype.forceUpdate=function(t){this.__v&&(this.__e=!0,t&&this.__h.push(t),Uc(this))},hn.prototype.render=ln,hs=[],Zf=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Yf=function(t,e){return t.__v.__b-e.__v.__b},ia.__r=0,Xf=/(PointerCapture)$|Capture$/i,Gc=0,jc=qf(!1),zc=qf(!0),Qf=0;var Ws,tt,Yc,ih,Ir=0,hh=[],ut=Se,ah=ut.__b,lh=ut.__r,ch=ut.diffed,dh=ut.__c,uh=ut.unmount,ph=ut.__;function Dr(t,e){ut.__h&&ut.__h(tt,t,Ir||e),Ir=0;var n=tt.__H||(tt.__H={__:[],__h:[]});return t>=n.__.length&&n.__.push({}),n.__[t]}function y(t){return Ir=1,mh(gh,t)}function mh(t,e,n){var s=Dr(Ws++,2);if(s.t=t,!s.__c&&(s.__=[n?n(e):gh(void 0,e),function(a){var l=s.__N?s.__N[0]:s.__[0],c=s.t(l,a);l!==c&&(s.__N=[c,s.__[1]],s.__c.setState({}))}],s.__c=tt,!tt.__f)){var o=function(a,l,c){if(!s.__c.__H)return!0;var d=s.__c.__H.__.filter(function(p){return p.__c});if(d.every(function(p){return!p.__N}))return!r||r.call(this,a,l,c);var u=s.__c.props!==a;return d.some(function(p){if(p.__N){var f=p.__[0];p.__=p.__N,p.__N=void 0,f!==p.__[0]&&(u=!0)}}),r&&r.call(this,a,l,c)||u};tt.__f=!0;var r=tt.shouldComponentUpdate,i=tt.componentWillUpdate;tt.componentWillUpdate=function(a,l,c){if(this.__e){var d=r;r=void 0,o(a,l,c),r=d}i&&i.call(this,a,l,c)},tt.shouldComponentUpdate=o}return s.__N||s.__}function L(t,e){var n=Dr(Ws++,3);!ut.__s&&Qc(n.__H,e)&&(n.__=t,n.u=e,tt.__H.__h.push(n))}function Vs(t,e){var n=Dr(Ws++,4);!ut.__s&&Qc(n.__H,e)&&(n.__=t,n.u=e,tt.__h.push(n))}function ee(t){return Ir=5,F(function(){return{current:t}},[])}function F(t,e){var n=Dr(Ws++,7);return Qc(n.__H,e)&&(n.__=t(),n.__H=e,n.__h=t),n.__}function q(t,e){return Ir=8,F(function(){return t},e)}function Nr(t){var e=tt.context[t.__c],n=Dr(Ws++,9);return n.c=t,e?(n.__==null&&(n.__=!0,e.sub(tt)),e.props.value):t.__}function Dk(){for(var t;t=hh.shift();){var e=t.__H;if(t.__P&&e)try{e.__h.some(aa),e.__h.some(Xc),e.__h=[]}catch(n){e.__h=[],ut.__e(n,t.__v)}}}ut.__b=function(t){tt=null,ah&&ah(t)},ut.__=function(t,e){t&&e.__k&&e.__k.__m&&(t.__m=e.__k.__m),ph&&ph(t,e)},ut.__r=function(t){lh&&lh(t),Ws=0;var e=(tt=t.__c).__H;e&&(Yc===tt?(e.__h=[],tt.__h=[],e.__.some(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(e.__h.some(aa),e.__h.some(Xc),e.__h=[],Ws=0)),Yc=tt},ut.diffed=function(t){ch&&ch(t);var e=t.__c;e&&e.__H&&(e.__H.__h.length&&(hh.push(e)!==1&&ih===ut.requestAnimationFrame||((ih=ut.requestAnimationFrame)||Nk)(Dk)),e.__H.__.some(function(n){n.u&&(n.__H=n.u),n.u=void 0})),Yc=tt=null},ut.__c=function(t,e){e.some(function(n){try{n.__h.some(aa),n.__h=n.__h.filter(function(s){return!s.__||Xc(s)})}catch(s){e.some(function(o){o.__h&&(o.__h=[])}),e=[],ut.__e(s,n.__v)}}),dh&&dh(t,e)},ut.unmount=function(t){uh&&uh(t);var e,n=t.__c;n&&n.__H&&(n.__H.__.some(function(s){try{aa(s)}catch(o){e=o}}),n.__H=void 0,e&&ut.__e(e,n.__v))};var fh=typeof requestAnimationFrame=="function";function Nk(t){var e,n=function(){clearTimeout(s),fh&&cancelAnimationFrame(e),setTimeout(t)},s=setTimeout(n,35);fh&&(e=requestAnimationFrame(n))}function aa(t){var e=tt,n=t.__c;typeof n=="function"&&(t.__c=void 0,n()),tt=e}function Xc(t){var e=tt;t.__c=t.__(),tt=e}function Qc(t,e){return!t||t.length!==e.length||e.some(function(n,s){return n!==t[s]})}function gh(t,e){return typeof e=="function"?e(t):e}var xh=function(t,e,n,s){var o;e[0]=0;for(var r=1;r=5&&((i||!p&&r===5)&&(l.push(r,0,i,o),r=6),p&&(l.push(r,p,0,o),r=6)),i=""},d=0;d"?(r=1,i=""):i=s+i[0]:a?s===a?a="":i+=s:s==='"'||s==="'"?a=s:s===">"?(c(),r=1):r&&(s==="="?(r=5,o=i,i=""):s==="/"&&(r<5||n[d][u+1]===">")?(c(),r===3&&(l=l[0]),r=l,(l=l[0]).push(2,0,r),r=0):s===" "||s===" "||s===` +`||s==="\r"?(c(),r=2):i+=s),r===3&&i==="!--"&&(r=4,l=l[0])}return c(),l})(t)),e),arguments,[])).length>1?e:e[0]}function yh(t,e){if(t instanceof RegExp)return{keys:!1,pattern:t};var n,s,o,r,i=[],a="",l=t.split("/");for(l[0]||l.shift();o=l.shift();)n=o[0],n==="*"?(i.push(n),a+=o[1]==="?"?"(?:/(.*))?":"/(.*)"):n===":"?(s=o.indexOf("?",1),r=o.indexOf(".",1),i.push(o.substring(1,~s?s:~r?r:o.length)),a+=~s&&!~r?"(?:/([^/]+?))?":"/([^/]+?)",~r&&(a+=(~s?"?":"")+"\\"+o.substring(r))):a+="/"+o;return{keys:i,pattern:new RegExp("^"+a+(e?"(?=$|/)":"/?$"),"i")}}var Ok=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function ed(t,e){return t===e&&(t!==0||1/t===1/e)||t!==t&&e!==e}function vh(t,e,n){n&&!Ok&&(e=n);let s=e(),[{_instance:o},r]=y({_instance:{_value:s,_getSnapshot:e}});return Vs(()=>{o._value=s,o._getSnapshot=e,ed(o._value,e())||r({_instance:o})},[t,s,e]),L(()=>(ed(o._value,o._getSnapshot())||r({_instance:o}),t(()=>{ed(o._value,o._getSnapshot())||r({_instance:o})})),[t]),s}var td=t=>{let e=ee([t,(...n)=>e[0](...n)]).current;return Vs(()=>{e[0]=t}),e[1]};var Bk="popstate",nd="pushState",sd="replaceState",Fk="hashchange",$h=[Bk,nd,sd,Fk],Hk=t=>{for(let e of $h)addEventListener(e,t);return()=>{for(let e of $h)removeEventListener(e,t)}},Ch=(t,e)=>vh(Hk,t,e),wh=()=>location.search,_h=({ssrSearch:t}={})=>Ch(wh,t!=null?()=>t:wh),kh=()=>location.pathname,Wk=({ssrPath:t}={})=>Ch(kh,t!=null?()=>t:kh);var Vk=(t,{replace:e=!1,state:n=null}={})=>history[e?sd:nd](n,"",t),Mh=(t={})=>[Wk(t),Vk],Sh=Symbol.for("wouter_v3");if(typeof history<"u"&&typeof window[Sh]>"u"){for(let t of[nd,sd]){let e=history[t];history[t]=function(){let n=e.apply(this,arguments),s=new Event(t);return s.arguments=arguments,dispatchEvent(s),n}}Object.defineProperty(window,Sh,{value:!0})}var jk=(t,e)=>e.toLowerCase().indexOf(t.toLowerCase())?"~"+e:e.slice(t.length)||"/",Th=(t="")=>t==="/"?"":t,Ph=(t,e)=>t[0]==="~"?t.slice(1):Th(e)+t,Rh=(t="",e)=>jk(Ah(Th(t)),Ah(e));var Ah=t=>{try{return decodeURI(t)}catch{return t}};var Eh={hook:Mh,searchHook:_h,parser:yh,base:"",ssrPath:void 0,ssrSearch:void 0,ssrContext:void 0,hrefs:t=>t,aroundNav:(t,e,n)=>t(e,n)},Ih=ko(Eh),Or=()=>Nr(Ih),Dh={},Nh=ko(Dh),zk=()=>Nr(Nh),la=t=>{let[e,n]=t.hook(t);return[Rh(t.base,e),td((s,o)=>t.aroundNav(n,Ph(s,t.base),o))]},ca=()=>la(Or());var Oh=(t,e,n,s)=>{let{pattern:o,keys:r}=e instanceof RegExp?{keys:!1,pattern:e}:t(e||"*",s),i=o.exec(n)||[],[a,...l]=i;return a!==void 0?[!0,(()=>{let c=r!==!1?Object.fromEntries(r.map((u,p)=>[u,l[p]])):i.groups,d={...l};return c&&Object.assign(d,c),d})(),...s?[a]:[]]:[!1,null]};var da=({children:t,...e})=>{let n=Or(),s=e.hook?Eh:n,o=s,[r,i=e.ssrSearch??""]=e.ssrPath?.split("?")??[];r&&(e.ssrSearch=i,e.ssrPath=r),e.hrefs=e.hrefs??e.hook?.hrefs,e.searchHook=e.searchHook??e.hook?.searchHook;let a=ee({}),l=a.current,c=l;for(let d in s){let u=d==="base"?s[d]+(e[d]??""):e[d]??s[d];l===c&&u!==c[d]&&(a.current=c={...c}),c[d]=u,(u!==s[d]||u!==o[d])&&(o=c)}return T(Ih.Provider,{value:o,children:t})},Lh=({children:t,component:e},n)=>e?T(e,{params:n}):typeof t=="function"?t(n):t,Uk=t=>{let e=ee(Dh),n=e.current;return e.current=Object.keys(t).length!==Object.keys(n).length||Object.entries(t).some(([s,o])=>o!==n[s])?t:n};var rt=({path:t,nest:e,match:n,...s})=>{let o=Or(),[r]=la(o),[i,a,l]=n??Oh(o.parser,t,r,e),c=Uk({...zk(),...a});if(!i)return null;let d=l?T(da,{base:l},Lh(s,c)):Lh(s,c);return T(Nh.Provider,{value:c,children:d})},m4=(t,e)=>{let n=Or(),[s,o]=la(n),{to:r="",href:i=r,onClick:a,asChild:l,children:c,className:d,replace:u,state:p,transition:f,...g}=t,m=td(b=>{b.ctrlKey||b.metaKey||b.altKey||b.shiftKey||b.button!==0||(a?.(b),b.defaultPrevented||(b.preventDefault(),o(i,t)))}),h=n.hrefs(i[0]==="~"?i.slice(1):n.base+i,n);return l&&Pr(c)?Er(c,{onClick:m,href:h}):T("a",{...g,onClick:m,href:h,className:d?.call?d(s===i):d,children:c,ref:e})},Bh=t=>Array.isArray(t)?t.flatMap(e=>Bh(e&&e.type===ln?e.props.children:e)):[t],od=({children:t,location:e})=>{let n=Or(),[s]=la(n);for(let o of Bh(t)){let r=0;if(Pr(o)&&(r=Oh(n.parser,o.props.path,e||s,o.props.nest))[0])return Er(o,{match:r})}return null};var rd=t=>{if(typeof t!="string"||!t.trim())return{};try{return JSON.parse(t)}catch{return{}}},Fh=({url:t="",onMessage:e=()=>{},onError:n=()=>{}})=>{if(typeof window?.EventSource!="function")throw new Error("Server events are not supported in this browser");let s=new window.EventSource(String(t||""),{withCredentials:!0}),o=l=>{e({event:"phase",data:rd(l?.data||"")})},r=l=>{e({event:"done",data:rd(l?.data||"")})},i=l=>{e({event:"error",data:rd(l?.data||"")})},a=l=>{n(l)};return s.addEventListener("phase",o),s.addEventListener("done",r),s.addEventListener("error",i),s.onerror=a,()=>{s.removeEventListener("phase",o),s.removeEventListener("done",r),s.removeEventListener("error",i),s.onerror=null,s.close()}};var Hh="x-client-timezone",Kk=()=>{try{return Intl?.DateTimeFormat?.().resolvedOptions?.().timeZone||""}catch{return""}},Y=async(t,e={})=>{let n={...e},s=new Headers(e?.headers||{});if(!s.has(Hh)){let r=Kk();r&&s.set(Hh,r)}n.headers=s;let o=await fetch(t,n);if(o.status===401){try{window.localStorage?.clear?.()}catch{}throw window.location.href="/setup",new Error("Unauthorized")}return o},Wh=({onMessage:t=()=>{},onOpen:e=()=>{},onError:n=()=>{}}={})=>{if(typeof window?.EventSource!="function")throw new Error("Server events are not supported in this browser");let s=new window.EventSource("/api/events/status",{withCredentials:!0}),o=r=>{let i={};try{i=r?.data?JSON.parse(r.data):{}}catch{}t(i||{})};return s.addEventListener("status",o),s.onopen=()=>e(),s.onerror=r=>n(r),()=>{s.removeEventListener("status",o),s.onopen=null,s.onerror=null,s.close()}};async function So(){return(await Y("/api/status")).json()}async function Co(){return(await Y("/api/pairings")).json()}async function _o(t,e,n=""){return(await Y(`/api/pairings/${t}/approve`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({channel:e,accountId:n})})).json()}async function Mo(t,e,n=""){let s=await Y(`/api/pairings/${t}/reject`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({channel:e,accountId:n})});return fe(s,"Could not reject pairing")}async function Vh(){return(await Y("/api/google/accounts")).json()}async function jh({accountId:t="",client:e=""}={}){let n=new URLSearchParams;t&&n.set("accountId",String(t)),e&&n.set("client",String(e));let s=n.toString()?`?${n.toString()}`:"";return(await Y(`/api/google/credentials${s}`)).json()}async function zh(t=""){let e=new URLSearchParams;t&&e.set("accountId",String(t));let n=e.toString()?`?${e.toString()}`:"";return(await Y(`/api/google/check${n}`)).json()}async function Uh({clientId:t,clientSecret:e,email:n,services:s=[],client:o="default",personal:r=!1,accountId:i=""}){return(await Y("/api/google/credentials",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({clientId:t,clientSecret:e,email:n,services:s,client:o,personal:r,accountId:i})})).json()}async function Kh({email:t,services:e=[],client:n="default",personal:s=!1,accountId:o=""}){return(await Y("/api/google/accounts",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:t,services:e,client:n,personal:s,accountId:o})})).json()}async function Gh(t=""){return(await Y("/api/google/disconnect",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({accountId:t})})).json()}var qh=async()=>{let t=await Y("/api/gmail/config");return fe(t,"Could not load Gmail watch config")},Jh=async({client:t="default",topicPath:e="",projectId:n="",regeneratePushToken:s=!1}={})=>{let o=await Y("/api/gmail/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({client:t,topicPath:e,projectId:n,regeneratePushToken:s})});return fe(o,"Could not save Gmail watch config")},Zh=async(t,{destination:e=null}={})=>{let n=await Y("/api/gmail/watch/start",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({accountId:String(t||""),...e?{destination:e}:{}})});return fe(n,"Could not start Gmail watch")},Yh=async t=>{let e=await Y("/api/gmail/watch/stop",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({accountId:String(t||"")})});return fe(e,"Could not stop Gmail watch")},Xh=async({accountId:t="",force:e=!0}={})=>{let n=await Y("/api/gmail/watch/renew",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({accountId:String(t||""),force:!!e})});return fe(n,"Could not renew Gmail watch")},Qh=async()=>{let t=await Y("/api/agent/sessions");return fe(t,"Could not load agent sessions")},ua=async()=>{let t=await Y("/api/doctor/status");return fe(t,"Could not load Doctor status")},em=async()=>{let t=await Y("/api/doctor/run",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({})});return fe(t,"Could not start Doctor run")};var tm=async(t=10)=>{let e=new URLSearchParams({limit:String(t)}),n=await Y(`/api/doctor/runs?${e.toString()}`);return fe(n,"Could not load Doctor runs")},nm=async({runId:t="all"}={})=>{let e=new URLSearchParams;String(t||"").trim()&&e.set("runId",String(t||""));let n=e.toString()?`?${e.toString()}`:"",s=await Y(`/api/doctor/cards${n}`);return fe(s,"Could not load Doctor findings")};var pa=async({cardId:t,status:e})=>{let n=await Y(`/api/doctor/cards/${encodeURIComponent(String(t||""))}/status`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({status:String(e||"")})});return fe(n,"Could not update Doctor card status")},sm=async({cardId:t,sessionId:e="",replyChannel:n="",replyTo:s="",prompt:o=""}={})=>{let r=await Y(`/api/doctor/findings/${encodeURIComponent(String(t||""))}/fix`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionId:String(e||""),replyChannel:String(n||""),replyTo:String(s||""),prompt:String(o||"")})});return fe(r,"Could not send Doctor fix request")},fa=async({message:t="",sessionKey:e=""}={})=>{let n=await Y("/api/agent/message",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:String(t||""),sessionKey:String(e||"")})});return fe(n,"Could not send message to agent")};async function om(){let t=await Y("/api/gateway/restart",{method:"POST"});return fe(t,"Could not restart gateway")}async function rm(){let t=await Y("/api/restart-status");return fe(t,"Could not load restart status")}async function im(){let t=await Y("/api/restart-status/dismiss",{method:"POST"});return fe(t,"Could not dismiss restart status")}async function am(){let t=await Y("/api/watchdog/status");return fe(t,"Could not load watchdog status")}async function lm(t=30){let e=new URLSearchParams({days:String(t)}),n=await Y(`/api/usage/summary?${e.toString()}`);return fe(n,"Could not load usage summary")}async function cm(t=50){let e=new URLSearchParams({limit:String(t)}),n=await Y(`/api/usage/sessions?${e.toString()}`);return fe(n,"Could not load usage sessions")}async function dm(t){let e=await Y(`/api/usage/sessions/${encodeURIComponent(String(t||""))}`);return fe(e,"Could not load usage session detail")}async function um(t=20){let e=await Y(`/api/watchdog/events?limit=${encodeURIComponent(String(t))}`);return fe(e,"Could not load watchdog events")}async function pm(t=65536){let e=await Y(`/api/watchdog/logs?tail=${encodeURIComponent(String(t))}`);if(!e.ok)throw new Error("Could not load watchdog logs");return e.text()}async function id(t){let e=await Y("/api/watchdog/terminal/close",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionId:String(t||"")})});return fe(e,"Could not close watchdog terminal")}async function ha(){let t=await Y("/api/watchdog/repair",{method:"POST"});return fe(t,"Could not trigger watchdog repair")}async function fm(){let t=await Y("/api/watchdog/resources");return fe(t,"Could not load system resources")}async function hm(){let t=await Y("/api/watchdog/settings");return fe(t,"Could not load watchdog settings")}async function ad(t){let e=await Y("/api/watchdog/settings",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t||{})});return fe(e,"Could not update watchdog settings")}async function mm(){return(await Y("/api/gateway/dashboard")).json()}async function gm(t=!1){return(await Y(`/api/openclaw/version${t?"?refresh=1":""}`)).json()}async function ma(){return(await Y("/api/openclaw/update",{method:"POST"})).json()}async function bm(t=!1){return(await Y(`/api/alphaclaw/version${t?"?refresh=1":""}`)).json()}async function xm(t=""){let e=String(t||"").trim(),n=e?`?${new URLSearchParams({tag:e}).toString()}`:"";try{let s=await Y(`/api/alphaclaw/release-notes${n}`);return await fe(s,"Could not load release notes")}catch{let s=e?`https://api.github.com/repos/chrysb/alphaclaw/releases/tags/${encodeURIComponent(e)}`:"https://api.github.com/repos/chrysb/alphaclaw/releases/latest",o=await fetch(s,{headers:{Accept:"application/vnd.github+json"}}),r=await o.text(),i=null;try{i=r?JSON.parse(r):null}catch{throw new Error(r||"Could not load release notes")}if(!o.ok)throw new Error(i?.message||r||"Could not load release notes");return{ok:!0,tag:String(i?.tag_name||e||""),name:String(i?.name||""),body:String(i?.body||""),htmlUrl:String(i?.html_url||""),publishedAt:String(i?.published_at||"")}}}async function ym(){return(await Y("/api/alphaclaw/update",{method:"POST"})).json()}async function vm(t){let e=await Y("/api/sync-cron",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),n=await e.text(),s;try{s=n?JSON.parse(n):{}}catch{throw new Error(n||"Could not parse sync cron response")}if(!e.ok)throw new Error(s.error||n||`HTTP ${e.status}`);return s}async function $m({sortBy:t="nextRunAtMs",sortDir:e="asc"}={}){let n=new URLSearchParams;t&&n.set("sortBy",String(t)),e&&n.set("sortDir",String(e));let s=n.toString()?`?${n.toString()}`:"",o=await Y(`/api/cron/jobs${s}`);return fe(o,"Could not load cron jobs")}async function wm(){let t=await Y("/api/cron/status");return fe(t,"Could not load cron status")}async function ld(t,{limit:e=20,offset:n=0,status:s="all",deliveryStatus:o="all",sortDir:r="desc",query:i=""}={}){let a=new URLSearchParams({limit:String(e),offset:String(n),status:String(s||"all"),deliveryStatus:String(o||"all"),sortDir:String(r||"desc")});String(i||"").trim()&&a.set("query",String(i).trim());let l=encodeURIComponent(String(t||"")),c=await Y(`/api/cron/jobs/${l}/runs?${a.toString()}`);return fe(c,"Could not load cron run history")}async function km(t,{days:e=30}={}){let n=new URLSearchParams({days:String(e)}),s=encodeURIComponent(String(t||"")),o=await Y(`/api/cron/jobs/${s}/usage?${n.toString()}`);return fe(o,"Could not load cron job usage")}async function Sm(t,{range:e="7d"}={}){let n=new URLSearchParams({range:String(e||"7d")}),s=encodeURIComponent(String(t||"")),o=await Y(`/api/cron/jobs/${s}/trends?${n.toString()}`);return fe(o,"Could not load cron job trends")}async function Cm({days:t=30}={}){let e=new URLSearchParams({days:String(t)}),n=await Y(`/api/cron/usage/bulk?${e.toString()}`);return fe(n,"Could not load cron usage overview")}async function _m({sinceMs:t=0,limitPerJob:e=20,status:n="all",deliveryStatus:s="all",sortDir:o="desc"}={}){let r=new URLSearchParams({sinceMs:String(t||0),limitPerJob:String(e||20),status:String(n||"all"),deliveryStatus:String(s||"all"),sortDir:String(o||"desc")}),i=await Y(`/api/cron/runs/bulk?${r.toString()}`);return fe(i,"Could not load cron run outcomes")}async function Mm(t){let e=encodeURIComponent(String(t||"")),n=await Y(`/api/cron/jobs/${e}/run`,{method:"POST"});return fe(n,"Could not trigger cron job run")}async function Am(t,e){let n=encodeURIComponent(String(t||"")),o=await Y(`/api/cron/jobs/${n}/${e?"enable":"disable"}`,{method:"POST"});return fe(o,"Could not update cron job state")}async function Tm(t,e){let n=encodeURIComponent(String(t||"")),s=await Y(`/api/cron/jobs/${n}/prompt`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:String(e||"")})});return fe(s,"Could not update cron prompt")}async function Pm(t,{sessionTarget:e="",wakeMode:n="",deliveryMode:s="",deliveryChannel:o="",deliveryTo:r=""}={}){let i=encodeURIComponent(String(t||"")),a=await Y(`/api/cron/jobs/${i}/routing`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionTarget:String(e||""),wakeMode:String(n||""),deliveryMode:String(s||""),deliveryChannel:String(o||""),deliveryTo:String(r||"")})});return fe(a,"Could not update cron routing")}async function ga(){return(await Y("/api/devices")).json()}async function ba(t){return(await Y(`/api/devices/${t}/approve`,{method:"POST"})).json()}async function xa(t){return(await Y(`/api/devices/${t}/reject`,{method:"POST"})).json()}var Rm=async()=>{let t=await Y("/api/nodes");return fe(t,"Could not load nodes")};var Lm=async t=>{let e=encodeURIComponent(String(t||"")),n=await Y(`/api/nodes/${e}`,{method:"DELETE"});return fe(n,"Could not remove node")},Em=async t=>{let e=encodeURIComponent(String(t||"")),n=new AbortController,s=setTimeout(()=>n.abort(),2e4);try{let o=await Y(`/api/nodes/${e}/route`,{method:"POST",signal:n.signal});return fe(o,"Could not route execution to node")}catch(o){throw String(o?.name||"")==="AbortError"?new Error("Routing timed out. Gateway may be restarting or unavailable."):o}finally{clearTimeout(s)}},ya=async()=>{let t=await Y("/api/nodes/connect-info");return fe(t,"Could not load connect info")},Im=async(t,e="user")=>{let n=encodeURIComponent(String(t||"")),s=new URLSearchParams({profile:String(e||"user")}),o=await Y(`/api/nodes/${n}/browser-status?${s.toString()}`);return fe(o,"Could not load node browser status")};var Dm=async()=>(await Y("/api/auth/status")).json(),Nm=async()=>(await Y("/api/auth/logout",{method:"POST"})).json();async function Om(){return(await Y("/api/onboard/status")).json()}async function Bm(t,e,{importMode:n=!1}={}){return(await Y("/api/onboard",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({vars:t,modelKey:e,importMode:n})})).json()}async function va(t,e,n="new"){return(await Y("/api/onboard/github/verify",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({repo:t,token:e,mode:n})})).json()}async function Fm(t){return(await Y("/api/onboard/import/scan",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tempDir:t})})).json()}async function Hm({tempDir:t,approvedSecrets:e=[],skipSecretExtraction:n=!1,githubRepo:s="",githubToken:o=""}){return(await Y("/api/onboard/import/apply",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tempDir:t,approvedSecrets:e,skipSecretExtraction:n,githubRepo:s,githubToken:o})})).json()}var Br=async()=>(await Y("/api/models")).json();var Wm=async({agentId:t}={})=>{let e=t?`?agentId=${encodeURIComponent(t)}`:"";return(await Y(`/api/models/config${e}`)).json()},Vm=async({primary:t,configuredModels:e,profiles:n,authOrder:s,agentId:o}={})=>{let r=o?`?agentId=${encodeURIComponent(o)}`:"";return(await Y(`/api/models/config${r}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({primary:t,configuredModels:e,profiles:n,authOrder:s})})).json()};var Ao=async()=>{let t=await Y("/api/agents");return fe(t,"Could not load agents")},To=async()=>{let t=await Y("/api/channels/accounts");return fe(t,"Could not load channel accounts")},jm=async({provider:t="",accountId:e="default"}={})=>{let n=new URLSearchParams({provider:String(t||""),accountId:String(e||"default")}),s=await Y(`/api/channels/accounts/token?${n.toString()}`);return fe(s,"Could not load channel token")},zm=async t=>{let e=await Y("/api/channels/accounts",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t||{})});return fe(e,"Could not create channel account")},Um=async t=>{let e=await Y("/api/channels/accounts/jobs",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t||{})});return fe(e,"Could not start channel account operation")},Km=({operationId:t="",onMessage:e=()=>{},onError:n=()=>{}})=>Fh({url:`/api/operations/${encodeURIComponent(String(t||""))}/events`,onMessage:e,onError:n}),Fr=async t=>{let e=await Y("/api/channels/accounts",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t||{})});return fe(e,"Could not update channel account")},$a=async t=>{let e=await Y("/api/channels/accounts",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify(t||{})});return fe(e,"Could not delete channel account")};var Gm=async t=>{let e=await Y(`/api/agents/${encodeURIComponent(String(t||""))}/workspace-size`);return fe(e,"Could not load workspace size")},qm=async t=>{let e=await Y(`/api/agents/${encodeURIComponent(String(t||""))}/bindings`);return fe(e,"Could not load agent bindings")},Jm=async t=>{let e=await Y("/api/agents",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t||{})});return fe(e,"Could not create agent")},Zm=async(t,e)=>{let n=await Y(`/api/agents/${encodeURIComponent(String(t||""))}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e||{})});return fe(n,"Could not update agent")};var Ym=async(t,{keepWorkspace:e=!0}={})=>{let n=new URLSearchParams({keepWorkspace:e?"true":"false"}),s=await Y(`/api/agents/${encodeURIComponent(String(t||""))}?${n.toString()}`,{method:"DELETE"});return fe(s,"Could not delete agent")},Xm=async t=>{let e=await Y(`/api/agents/${encodeURIComponent(String(t||""))}/default`,{method:"POST"});return fe(e,"Could not set default agent")},Po=async()=>(await Y("/api/codex/status")).json(),Hr=async()=>(await Y("/api/codex/disconnect",{method:"POST"})).json(),Wr=async t=>(await Y("/api/codex/exchange",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({input:t})})).json();async function Vr(){return(await Y("/api/env")).json()}async function cd(t){let e=await Y("/api/env",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({vars:t})}),n=await e.text(),s;try{s=n?JSON.parse(n):{}}catch{throw new Error(n||"Could not parse env save response")}if(!e.ok)throw new Error(s.error||n||`HTTP ${e.status}`);return s}var fe=async(t,e)=>{let n=await t.text(),s;try{s=n?JSON.parse(n):{}}catch{throw new Error(n||e)}if(!t.ok||s?.ok===!1)throw new Error(s.error||n||`HTTP ${t.status}`);return s};async function Qm(){let t=await Y("/api/webhooks");return fe(t,"Could not load webhooks")}async function eg(t){let e=await Y(`/api/webhooks/${encodeURIComponent(t)}`);return fe(e,"Could not load webhook detail")}async function tg(t,{destination:e=null,oauthCallback:n=!1}={}){let s=await Y("/api/webhooks",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:t,...e?{destination:e}:{},oauthCallback:!!n})});return fe(s,"Could not create webhook")}async function ng(t,{deleteTransformDir:e=!1}={}){let n=await Y(`/api/webhooks/${encodeURIComponent(t)}`,{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({deleteTransformDir:!!e})});return fe(n,"Could not delete webhook")}async function sg(t,{destination:e=null}={}){let n=await Y(`/api/webhooks/${encodeURIComponent(t)}/destination`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({destination:e})});return fe(n,"Could not update webhook destination")}async function og(t){let e=await Y(`/api/webhooks/${encodeURIComponent(t)}/oauth-callback/rotate`,{method:"POST"});return fe(e,"Could not rotate OAuth callback")}async function rg(t,{limit:e=50,offset:n=0,status:s="all"}={}){let o=new URLSearchParams({limit:String(e),offset:String(n),status:String(s||"all")}),r=await Y(`/api/webhooks/${encodeURIComponent(t)}/requests?${o.toString()}`);return fe(r,"Could not load webhook requests")}async function ig(t,e){let n=await Y(`/api/webhooks/${encodeURIComponent(t)}/requests/${encodeURIComponent(String(e))}`);return fe(n,"Could not load webhook request")}var ag=async(t=10)=>{let e=new URLSearchParams({depth:String(t)}),n=await Y(`/api/browse/tree?${e.toString()}`);return fe(n,"Could not load file tree")},dd=async t=>{let e=new URLSearchParams({path:String(t||"")}),n=await Y(`/api/browse/read?${e.toString()}`);return fe(n,"Could not load file content")},lg=async(t,e)=>{let n=String(t||""),s=typeof e=="string"?e:String(e??""),o=await Y("/api/browse/write",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:n,content:s})});return fe(o,"Could not save file")},cg=async t=>{let e=await Y("/api/browse/create-file",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:String(t||"")})});return fe(e,"Could not create file")},dg=async t=>{let e=await Y("/api/browse/create-folder",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:String(t||"")})});return fe(e,"Could not create folder")},ug=async(t,e)=>{let n=await Y("/api/browse/move",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({from:String(t||""),to:String(e||"")})});return fe(n,"Could not move path")},wa=async t=>{let e=await Y("/api/browse/delete",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:String(t||"")})});return fe(e,"Could not delete file")},pg=async t=>{let e=new URLSearchParams({path:String(t||"")}),n=await Y(`/api/browse/download?${e.toString()}`);if(!n.ok){let a=await n.text();throw new Error(a||"Could not download file")}let s=await n.blob(),o=window?.URL||URL;if(!o?.createObjectURL||!o?.revokeObjectURL)throw new Error("Download is not supported in this browser");let r=o.createObjectURL(s),i=String(t||"").split("/").filter(Boolean).pop()||"download";try{let a=document.createElement("a");a.href=r,a.download=i,document.body?.appendChild(a),a.click(),a.remove()}finally{o.revokeObjectURL(r)}return{ok:!0}},fg=async t=>{let e=await Y("/api/browse/restore",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:String(t||"")})});return fe(e,"Could not restore file")},ud=async()=>{let t=await Y("/api/browse/git-summary");return fe(t,"Could not load git summary")},hg=async t=>{let e=new URLSearchParams({path:String(t||"")}),n=await Y(`/api/browse/git-diff?${e.toString()}`);return fe(n,"Could not load file diff")},mg=async({filePath:t,table:e,limit:n=50,offset:s=0})=>{let o=new URLSearchParams({path:String(t||""),table:String(e||""),limit:String(n),offset:String(s)}),r=await Y(`/api/browse/sqlite-table?${o.toString()}`);return fe(r,"Could not load sqlite table data")},gg=async(t="")=>{let e=await Y("/api/browse/git-sync",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:String(t||"")})});return fe(e,"Could not sync changes")};var js=t=>String(t||"").split("/")[0]||"",Ro=t=>{let e=String(t||"").trim();return e==="openai-codex"?"openai":e==="volcengine-plan"?"volcengine":e==="byteplus-plan"?"byteplus":e},Gk=[{label:"Opus 4.6",preferredKeys:["anthropic/claude-opus-4-6"]},{label:"Sonnet 4.6",preferredKeys:["anthropic/claude-sonnet-4-6"]},{label:"Codex 5.3",preferredKeys:["openai-codex/gpt-5.3-codex"]},{label:"GPT-5.4",preferredKeys:["openai-codex/gpt-5.4"]},{label:"Gemini 3.1 Pro",preferredKeys:["google/gemini-3.1-pro-preview"]}],Lo=t=>{let e=[],n=new Set;return Gk.forEach(s=>{let o=s.preferredKeys.map(r=>t.find(i=>i.key===r)).find(Boolean);!o||n.has(o.key)||(e.push({...o,featuredLabel:s.label}),n.add(o.key))}),e},Mn={anthropic:[{key:"ANTHROPIC_API_KEY",label:"Anthropic API Key",url:"https://console.anthropic.com",linkText:"Get key",placeholder:"sk-ant-..."},{key:"ANTHROPIC_TOKEN",label:"Anthropic Setup Token",hint:"From claude setup-token (uses your Claude subscription)",linkText:"Get token",placeholder:"Token..."}],openai:[{key:"OPENAI_API_KEY",label:"OpenAI API Key",url:"https://platform.openai.com",linkText:"Get key",placeholder:"sk-..."}],google:[{key:"GEMINI_API_KEY",label:"Gemini API Key",url:"https://aistudio.google.com",linkText:"Get key",placeholder:"AI..."}],opencode:[{key:"OPENCODE_API_KEY",label:"OpenCode API Key",placeholder:"oc-..."}],openrouter:[{key:"OPENROUTER_API_KEY",label:"OpenRouter API Key",url:"https://openrouter.ai",linkText:"Get key",placeholder:"sk-or-..."}],zai:[{key:"ZAI_API_KEY",label:"Z.AI API Key",placeholder:"zai-..."}],"vercel-ai-gateway":[{key:"AI_GATEWAY_API_KEY",label:"AI Gateway API Key",placeholder:"aigw_..."}],kilocode:[{key:"KILOCODE_API_KEY",label:"KiloCode API Key",placeholder:"kilo_..."}],xai:[{key:"XAI_API_KEY",label:"xAI API Key",placeholder:"xai-..."}],mistral:[{key:"MISTRAL_API_KEY",label:"Mistral API Key",url:"https://console.mistral.ai",linkText:"Get key",placeholder:"sk-..."}],voyage:[{key:"VOYAGE_API_KEY",label:"Voyage API Key",url:"https://dash.voyageai.com",linkText:"Get key",placeholder:"pa-..."}],groq:[{key:"GROQ_API_KEY",label:"Groq API Key",url:"https://console.groq.com",linkText:"Get key",placeholder:"gsk_..."}],cerebras:[{key:"CEREBRAS_API_KEY",label:"Cerebras API Key",placeholder:"csk-..."}],moonshot:[{key:"MOONSHOT_API_KEY",label:"Moonshot API Key",placeholder:"sk-..."}],"kimi-coding":[{key:"KIMI_API_KEY",label:"Kimi API Key",placeholder:"sk-..."}],volcengine:[{key:"VOLCANO_ENGINE_API_KEY",label:"Volcano Engine API Key",placeholder:"ve-..."}],byteplus:[{key:"BYTEPLUS_API_KEY",label:"BytePlus API Key",placeholder:"bp-..."}],synthetic:[{key:"SYNTHETIC_API_KEY",label:"Synthetic API Key",placeholder:"syn-..."}],minimax:[{key:"MINIMAX_API_KEY",label:"MiniMax API Key",placeholder:"minimax-..."}],deepgram:[{key:"DEEPGRAM_API_KEY",label:"Deepgram API Key",url:"https://console.deepgram.com",linkText:"Get key",placeholder:"dg-..."}],vllm:[{key:"VLLM_API_KEY",label:"vLLM API Key",placeholder:"vllm-local"}]},zs={anthropic:"Anthropic",openai:"OpenAI",google:"Gemini",opencode:"OpenCode Zen",openrouter:"OpenRouter",zai:"Z.AI","vercel-ai-gateway":"Vercel AI Gateway",kilocode:"Kilo Gateway",xai:"xAI",mistral:"Mistral",cerebras:"Cerebras",moonshot:"Moonshot","kimi-coding":"Kimi Coding",volcengine:"Volcano Engine",byteplus:"BytePlus",synthetic:"Synthetic",minimax:"MiniMax",voyage:"Voyage",groq:"Groq",deepgram:"Deepgram",vllm:"vLLM"},jr=["anthropic","openai","google","zai","xai","openrouter","opencode","kilocode","vercel-ai-gateway","minimax","moonshot","kimi-coding","volcengine","byteplus","synthetic","mistral","cerebras","voyage","groq","deepgram","vllm"];var bg=[{id:"embeddings",label:"Memory Embeddings",tag:"Embeddings",providers:["openai","google","voyage","mistral"]},{id:"audio",label:"Audio Transcription",tag:"Audio",hasDefault:!0,providers:["openai","groq","deepgram","google","mistral"]}],xg=t=>{if(t==="openai-codex")return new Set;let e=Ro(t),n=Mn[e]||[];return new Set(n.map(s=>s.key))},yg=Object.values(Mn).flat().filter((t,e,n)=>n.findIndex(s=>s.key===t.key)===e);var Eo=P.bind(T),pd="new",fd="existing",An="fresh",Ot="import",Tn="create",qn="existing-empty",qk=t=>String(t||"").trim().replace(/^git@github\.com:/,"").replace(/^https:\/\/github\.com\//,"").replace(/\.git$/,""),zr=t=>{let e=qk(t);if(!e)return!1;let n=e.split("/").filter(Boolean);return n.length===2&&!n.some(s=>/\s/.test(s))},Ht=[{id:"github",title:"GitHub",description:"Auto-backup your config and workspace",fields:[{key:"_GITHUB_SOURCE_REPO",label:"Source Repo",placeholder:"username/existing-openclaw",isText:!0},{key:"GITHUB_WORKSPACE_REPO",label:"New Workspace Repo",placeholder:"username/my-agent",isText:!0},{key:"GITHUB_TOKEN",label:"Personal Access Token",hint:Eo`Create a${" "}fine-grained token${" "}with Contents + Metadata access`,placeholder:"ghp_... or github_pat_..."}],validate:t=>{let e=t._GITHUB_FLOW||An,n=jr(t.GITHUB_WORKSPACE_REPO),s=e!==Ot||jr(t._GITHUB_SOURCE_REPO);return!!(t.GITHUB_TOKEN&&n&&s)}},{id:"ai",title:"Primary Agent Model",description:"Choose your main model and authenticate its provider",fields:bg,validate:(t,e={})=>!!(t.MODEL_KEY&&e.hasAi)},{id:"channels",title:"Channels",description:"At least one is required to talk to your agent",fields:[{key:"TELEGRAM_BOT_TOKEN",label:"Telegram Bot Token",hint:Eo`From${" "}${" "}with Contents + Metadata access`,placeholder:"ghp_... or github_pat_..."}],validate:t=>{let e=t._GITHUB_FLOW||An,n=zr(t.GITHUB_WORKSPACE_REPO),s=e!==Ot||zr(t._GITHUB_SOURCE_REPO);return!!(t.GITHUB_TOKEN&&n&&s)}},{id:"ai",title:"Primary Agent Model",description:"Choose your main model and authenticate its provider",fields:yg,validate:(t,e={})=>!!(t.MODEL_KEY&&e.hasAi)},{id:"channels",title:"Channels",description:"At least one is required to talk to your agent",fields:[{key:"TELEGRAM_BOT_TOKEN",label:"Telegram Bot Token",hint:Eo`From${" "}brave.com/search/api${" "}-${" "}free tier available`,placeholder:"BSA..."}],validate:()=>!0}];var jk=P.bind(T),xg=({onSelectFlow:t})=>jk` + >${" "}-${" "}free tier available`,placeholder:"BSA..."}],validate:()=>!0}];var Jk=P.bind(T),vg=({onSelectFlow:t})=>Jk`
- `;var Uk=P.bind(T),Ce=({className:t="h-4 w-4",ariaHidden:e=!0,style:n=""})=>Uk` + `;var Zk=P.bind(T),Ce=({className:t="h-4 w-4",ariaHidden:e=!0,style:n=""})=>Zk` -`;var Io=P.bind(T),yg={primary:"ac-btn-cyan",secondary:"ac-btn-secondary",success:"ac-btn-green",danger:"ac-btn-danger",ghost:"ac-btn-ghost"},Kk=(t,e)=>t==="subtle"||t==="neutral"?e?"border border-border text-fg-muted hover:text-body hover:border-fg-muted":"border border-border text-fg-muted":t==="warning"?e?"border border-yellow-500/35 text-status-warning-muted bg-yellow-500/10 hover:border-yellow-400/60 hover:text-status-warning hover:bg-yellow-500/15":"border border-yellow-500/35 text-status-warning-muted bg-yellow-500/10":yg[t]||yg.primary,vg={sm:"h-7 text-xs leading-none px-2.5 py-1 rounded-lg",md:"h-9 text-sm font-medium leading-none px-4 rounded-xl",lg:"h-10 text-sm font-medium leading-none px-5 rounded-lg"},$g={sm:"h-7 w-7 p-0 rounded-lg",md:"h-9 w-9 p-0 rounded-xl",lg:"h-10 w-10 p-0 rounded-lg"},Z=({onClick:t,type:e="button",disabled:n=!1,loading:s=!1,tone:o="primary",size:r="sm",idleLabel:i="Action",loadingLabel:a="Working...",loadingMode:l="replace",className:c="",idleIcon:d=null,idleIconClassName:u="h-3 w-3",iconOnly:p=!1,title:f="",ariaLabel:g=""})=>{let m=n||s,b=Kk(o,!m),x=p?$g[r]||$g.sm:vg[r]||vg.sm,v=s?`cursor-not-allowed ${o==="warning"?"opacity-90 animate-pulse shadow-[0_0_0_1px_rgba(234,179,8,0.22),0_0_18px_rgba(234,179,8,0.12)]":"opacity-80"}`:"",w=r==="md"||r==="lg"?"h-4 w-4":"h-3 w-3",$=l==="inline",S=d,C=p&&S?Io`<${S} className=${u} />`:S?Io` +`;var Io=P.bind(T),$g={primary:"ac-btn-cyan",secondary:"ac-btn-secondary",success:"ac-btn-green",danger:"ac-btn-danger",ghost:"ac-btn-ghost"},Yk=(t,e)=>t==="subtle"||t==="neutral"?e?"border border-border text-fg-muted hover:text-body hover:border-fg-muted":"border border-border text-fg-muted":t==="warning"?e?"border border-yellow-500/35 text-status-warning-muted bg-yellow-500/10 hover:border-yellow-400/60 hover:text-status-warning hover:bg-yellow-500/15":"border border-yellow-500/35 text-status-warning-muted bg-yellow-500/10":$g[t]||$g.primary,wg={sm:"h-7 text-xs leading-none px-2.5 py-1 rounded-lg",md:"h-9 text-sm font-medium leading-none px-4 rounded-xl",lg:"h-10 text-sm font-medium leading-none px-5 rounded-lg"},kg={sm:"h-7 w-7 p-0 rounded-lg",md:"h-9 w-9 p-0 rounded-xl",lg:"h-10 w-10 p-0 rounded-lg"},Z=({onClick:t,type:e="button",disabled:n=!1,loading:s=!1,tone:o="primary",size:r="sm",idleLabel:i="Action",loadingLabel:a="Working...",loadingMode:l="replace",className:c="",idleIcon:d=null,idleIconClassName:u="h-3 w-3",iconOnly:p=!1,title:f="",ariaLabel:g=""})=>{let m=n||s,b=Yk(o,!m),x=p?kg[r]||kg.sm:wg[r]||wg.sm,v=s?`cursor-not-allowed ${o==="warning"?"opacity-90 animate-pulse shadow-[0_0_0_1px_rgba(234,179,8,0.22),0_0_18px_rgba(234,179,8,0.12)]":"opacity-80"}`:"",w=r==="md"||r==="lg"?"h-4 w-4":"h-3 w-3",$=l==="inline",S=d,C=p&&S?Io`<${S} className=${u} />`:S?Io` <${S} className=${u} /> ${i} @@ -194,7 +194,7 @@ import"./chunks/chunk-72ZECFVW.js";var Tr,Se,Gf,Pr,hs,jf,qf,Jf,Zf,Gc,zc,jc,Yf,oa `:_} - `};var ka=(t=[])=>(Array.isArray(t)?t:[]).filter(e=>e?.confidence==="high").map(e=>({...e,suggestedEnvVar:e?.suggestedEnvVar||""})),wg=(t=[])=>(Array.isArray(t)?t:[]).reduce((e,n)=>{let s=String(n?.suggestedEnvVar||"").trim(),o=String(n?.value||"");return!s||!o||(e[s]=o),e},{});var qt=P.bind(T),Gk=[{key:"gatewayConfig",label:"Gateway Config",icon:"\u2699\uFE0F",description:"openclaw.json configuration",showFiles:!0},{key:"envFiles",label:"Environment Files",icon:"\u{1F510}",description:".env files with variables",showFiles:!0},{key:"workspaceFiles",label:"Workspace Files",icon:"\u{1F4C4}",description:"Prompt files (AGENTS.md, SOUL.md, etc.)",showFiles:!0},{key:"skills",label:"Skills",icon:"\u{1F6E0}",description:"Custom skill definitions",showFiles:!0},{key:"cronJobs",label:"Cron Jobs",icon:"\u23F0",description:"Scheduled tasks",showFiles:!0},{key:"webhooks",label:"Hooks",icon:"\u{1F517}",description:"Webhook mappings and internal hooks",showDirs:!0},{key:"memory",label:"Memory",icon:"\u{1F9E0}",description:"Agent memory and embeddings",showDirs:!0}],qk=({category:t,data:e})=>{let[n,s]=y(!1);if(!e?.found)return null;let o=t.key==="webhooks",r=Array.isArray(e.transformWarnings)?e.transformWarnings:[],i=new Set(r.map(d=>String(d.actualPath||"").trim()).filter(Boolean).map(d=>d.split("/").slice(0,-2).join("/"))),a=[...e.jobNames||[],...e.hookNames||[],...e.files||[],...(e.dirs||[]).filter(d=>!i.has(d)),...e.extraMarkdown||[]],l=typeof e.jobCount=="number"&&e.jobCount>0?e.jobCount:typeof e.hookCount=="number"&&e.hookCount>0?e.hookCount:a.length,c=typeof e.warningCount=="number"?e.warningCount:r.length;return qt` + `};var ka=(t=[])=>(Array.isArray(t)?t:[]).filter(e=>e?.confidence==="high").map(e=>({...e,suggestedEnvVar:e?.suggestedEnvVar||""})),Sg=(t=[])=>(Array.isArray(t)?t:[]).reduce((e,n)=>{let s=String(n?.suggestedEnvVar||"").trim(),o=String(n?.value||"");return!s||!o||(e[s]=o),e},{});var qt=P.bind(T),Xk=[{key:"gatewayConfig",label:"Gateway Config",icon:"\u2699\uFE0F",description:"openclaw.json configuration",showFiles:!0},{key:"envFiles",label:"Environment Files",icon:"\u{1F510}",description:".env files with variables",showFiles:!0},{key:"workspaceFiles",label:"Workspace Files",icon:"\u{1F4C4}",description:"Prompt files (AGENTS.md, SOUL.md, etc.)",showFiles:!0},{key:"skills",label:"Skills",icon:"\u{1F6E0}",description:"Custom skill definitions",showFiles:!0},{key:"cronJobs",label:"Cron Jobs",icon:"\u23F0",description:"Scheduled tasks",showFiles:!0},{key:"webhooks",label:"Hooks",icon:"\u{1F517}",description:"Webhook mappings and internal hooks",showDirs:!0},{key:"memory",label:"Memory",icon:"\u{1F9E0}",description:"Agent memory and embeddings",showDirs:!0}],Qk=({category:t,data:e})=>{let[n,s]=y(!1);if(!e?.found)return null;let o=t.key==="webhooks",r=Array.isArray(e.transformWarnings)?e.transformWarnings:[],i=new Set(r.map(d=>String(d.actualPath||"").trim()).filter(Boolean).map(d=>d.split("/").slice(0,-2).join("/"))),a=[...e.jobNames||[],...e.hookNames||[],...e.files||[],...(e.dirs||[]).filter(d=>!i.has(d)),...e.extraMarkdown||[]],l=typeof e.jobCount=="number"&&e.jobCount>0?e.jobCount:typeof e.hookCount=="number"&&e.hookCount>0?e.hookCount:a.length,c=typeof e.warningCount=="number"?e.warningCount:r.length;return qt`
- `},kg=({scanResult:t,scanning:e,error:n,onApprove:s,onShowSecretReview:o,onBack:r})=>{if(e)return qt` + `},Cg=({scanResult:t,scanning:e,error:n,onApprove:s,onShowSecretReview:o,onBack:r})=>{if(e)return qt`
<${Ce} />

Scanning repository...

@@ -270,8 +270,8 @@ import"./chunks/chunk-72ZECFVW.js";var Tr,Se,Gf,Pr,hs,jf,qf,Jf,Zf,Gc,zc,jc,Yf,oa
- ${Gk.map(l=>qt` - <${qk} + ${Xk.map(l=>qt` + <${Qk} key=${l.key} category=${l} data=${t[l.key]} @@ -383,7 +383,7 @@ import"./chunks/chunk-72ZECFVW.js";var Tr,Se,Gf,Pr,hs,jf,qf,Jf,Zf,Gc,zc,jc,Yf,oa ${l?"Hide":"Show"} `:null}
- `};var md=P.bind(T),Jk=t=>{let e=String(t||"").trim();return!!e&&e!=="placeholder"},Zk=({item:t,value:e,onInput:n})=>md` + `};var md=P.bind(T),eS=t=>{let e=String(t||"").trim();return!!e&&e!=="placeholder"},tS=({item:t,value:e,onInput:n})=>md`
@@ -402,7 +402,7 @@ import"./chunks/chunk-72ZECFVW.js";var Tr,Se,Gf,Pr,hs,jf,qf,Jf,Zf,Gc,zc,jc,Yf,oa inputClass="w-full bg-field border border-border rounded-lg px-3 py-2 text-xs text-body outline-none focus:border-fg-muted font-mono" />
- `,Sg=({placeholderReview:t,vals:e,setValue:n,onContinue:s})=>{let o=Array.isArray(t?.vars)?t.vars:[],i=F(()=>o.filter(a=>!Jk(e[a.key])).map(a=>a.key),[o,e]).length;return o.length===0?null:md` + `,_g=({placeholderReview:t,vals:e,setValue:n,onContinue:s})=>{let o=Array.isArray(t?.vars)?t.vars:[],i=F(()=>o.filter(a=>!eS(e[a.key])).map(a=>a.key),[o,e]).length;return o.length===0?null:md`

Add Missing Env Vars

@@ -410,7 +410,7 @@ import"./chunks/chunk-72ZECFVW.js";var Tr,Se,Gf,Pr,hs,jf,qf,Jf,Zf,Gc,zc,jc,Yf,oa
${o.map(a=>md` - <${Zk} + <${tS} key=${a.key} item=${a} value=${String(e[a.key]||"")==="placeholder"?"":e[a.key]||""} @@ -435,7 +435,7 @@ import"./chunks/chunk-72ZECFVW.js";var Tr,Se,Gf,Pr,hs,jf,qf,Jf,Zf,Gc,zc,jc,Yf,oa />
- `};var Pn=P.bind(T),Yk=({secret:t,selected:e,onToggle:n,envVarName:s,onEnvVarChange:o})=>Pn` + `};var Pn=P.bind(T),nS=({secret:t,selected:e,onToggle:n,envVarName:s,onEnvVarChange:o})=>Pn`
@@ -485,7 +485,7 @@ import"./chunks/chunk-72ZECFVW.js";var Tr,Se,Gf,Pr,hs,jf,qf,Jf,Zf,Gc,zc,jc,Yf,oa
`}
- `,Cg=({secrets:t=[],onApprove:e,onBack:n,loading:s,error:o})=>{let[r,i]=y(()=>{let u={};for(let p of t)u[p.configPath]={selected:p.confidence==="high",envVarName:p.suggestedEnvVar||""};return u}),a=q(u=>{i(p=>({...p,[u]:{...p[u],selected:!p[u]?.selected}}))},[]),l=q((u,p)=>{i(f=>({...f,[u]:{...f[u],envVarName:p}}))},[]),c=Object.values(r).filter(u=>u.selected).length,d=()=>{let u=ka(t.map(p=>({...p,confidence:r[p.configPath]?.selected?"high":"medium",suggestedEnvVar:r[p.configPath]?.envVarName||p.suggestedEnvVar})));e(u)};return s?Pn` + `,Mg=({secrets:t=[],onApprove:e,onBack:n,loading:s,error:o})=>{let[r,i]=y(()=>{let u={};for(let p of t)u[p.configPath]={selected:p.confidence==="high",envVarName:p.suggestedEnvVar||""};return u}),a=q(u=>{i(p=>({...p,[u]:{...p[u],selected:!p[u]?.selected}}))},[]),l=q((u,p)=>{i(f=>({...f,[u]:{...f[u],envVarName:p}}))},[]),c=Object.values(r).filter(u=>u.selected).length,d=()=>{let u=ka(t.map(p=>({...p,confidence:r[p.configPath]?.selected?"high":"medium",suggestedEnvVar:r[p.configPath]?.envVarName||p.suggestedEnvVar})));e(u)};return s?Pn`
<${Ce} />

Applying import...

@@ -510,7 +510,7 @@ import"./chunks/chunk-72ZECFVW.js";var Tr,Se,Gf,Pr,hs,jf,qf,Jf,Zf,Gc,zc,jc,Yf,oa
${t.map(u=>Pn` - <${Yk} + <${nS} key=${u.configPath} secret=${u} selected=${r[u.configPath]?.selected||!1} @@ -538,7 +538,7 @@ import"./chunks/chunk-72ZECFVW.js";var Tr,Se,Gf,Pr,hs,jf,qf,Jf,Zf,Gc,zc,jc,Yf,oa />
- `};var _g=P.bind(T),Mg=({groups:t,step:e,isPreStep:n,isSetupStep:s,isPairingStep:o,stepNumber:r,activeStepLabel:i})=>{let a=[...t,{id:"setup",title:"Initializing"},{id:"pairing",title:"Pairing"}];return _g` + `};var Ag=P.bind(T),Tg=({groups:t,step:e,isPreStep:n,isSetupStep:s,isPairingStep:o,stepNumber:r,activeStepLabel:i})=>{let a=[...t,{id:"setup",title:"Initializing"},{id:"pairing",title:"Pairing"}];return Ag`
- ${a.map((l,c)=>{let d=c===e,u=c{let d=c===e,u=c
`})}
- `};var Ag=P.bind(T),Tg=[{label:"\u{1F6E1}\uFE0F Safety tip",text:"Be careful what you give access to. Read access is always safer than write access."},{label:"\u{1F9E0} Best practice",text:"Trust but verify. Your agent may not always know what it's doing, so check the results."},{label:"\u{1F4A1} Idea",text:"Ask your agent to create a morning briefing for you."},{label:"\u{1F9E0} Best practice",text:"Ask your agent to review its own code and make sure it's doing what you want it to do."},{label:"\u{1F4A1} Idea",text:"Tell your agent to review the latest news and provide a summary."},{label:"\u{1F6E1}\uFE0F Safety tip",text:"Be incredibly careful installing skills from the internet - they may contain malicious code."}],Pg=({error:t,loading:e,onRetry:n,onBack:s})=>{let[o,r]=y(0);if(L(()=>{if(t||!e)return;let a=setInterval(()=>{r(l=>(l+1)%Tg.length)},5200);return()=>clearInterval(a)},[t,e]),t)return Ag` + `};var Pg=P.bind(T),Rg=[{label:"\u{1F6E1}\uFE0F Safety tip",text:"Be careful what you give access to. Read access is always safer than write access."},{label:"\u{1F9E0} Best practice",text:"Trust but verify. Your agent may not always know what it's doing, so check the results."},{label:"\u{1F4A1} Idea",text:"Ask your agent to create a morning briefing for you."},{label:"\u{1F9E0} Best practice",text:"Ask your agent to review its own code and make sure it's doing what you want it to do."},{label:"\u{1F4A1} Idea",text:"Tell your agent to review the latest news and provide a summary."},{label:"\u{1F6E1}\uFE0F Safety tip",text:"Be incredibly careful installing skills from the internet - they may contain malicious code."}],Lg=({error:t,loading:e,onRetry:n,onBack:s})=>{let[o,r]=y(0);if(L(()=>{if(t||!e)return;let a=setInterval(()=>{r(l=>(l+1)%Rg.length)},5200);return()=>clearInterval(a)},[t,e]),t)return Pg`

Setup failed

Fix the values and try again.

@@ -596,7 +596,7 @@ import"./chunks/chunk-72ZECFVW.js";var Tr,Se,Gf,Pr,hs,jf,qf,Jf,Zf,Gc,zc,jc,Yf,oa ${e?"Retrying...":"Retry"}
- `;let i=Tg[o];return Ag` + `;let i=Rg[o];return Pg`
- `};var Xk=P.bind(T),Rg={success:"bg-green-500/10 text-status-success-muted",warning:"bg-yellow-500/10 text-status-warning-muted",danger:"bg-red-500/10 text-status-error-muted",neutral:"bg-gray-500/10 text-fg-muted",info:"bg-blue-500/10 text-blue-400",accent:"bg-purple-500/10 text-purple-400",cyan:"bg-cyan-500/10 text-cyan-400",secondary:"bg-indigo-500/10 text-indigo-300"},ae=({tone:t="neutral",children:e})=>Xk` - + `};var sS=P.bind(T),Eg={success:"bg-green-500/10 text-status-success-muted",warning:"bg-yellow-500/10 text-status-warning-muted",danger:"bg-red-500/10 text-status-error-muted",neutral:"bg-gray-500/10 text-fg-muted",info:"bg-blue-500/10 text-blue-400",accent:"bg-purple-500/10 text-purple-400",cyan:"bg-cyan-500/10 text-cyan-400",secondary:"bg-indigo-500/10 text-indigo-300"},ae=({tone:t="neutral",children:e})=>sS` + ${e} -`;function eS(t,e){for(var n in e)t[n]=e[n];return t}function Lg(t,e){for(var n in t)if(n!=="__source"&&!(n in e))return!0;for(var s in e)if(s!=="__source"&&t[s]!==e[s])return!0;return!1}function Eg(t,e){this.props=t,this.context=e}(Eg.prototype=new hn).isPureReactComponent=!0,Eg.prototype.shouldComponentUpdate=function(t,e){return Lg(this.props,t)||Lg(this.state,e)};var Ig=Se.__b;Se.__b=function(t){t.type&&t.type.__f&&t.ref&&(t.props.ref=t.ref,t.ref=null),Ig&&Ig(t)};var xL=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.forward_ref")||3911;var tS=Se.__e;Se.__e=function(t,e,n,s){if(t.then){for(var o,r=e;r=r.__;)if((o=r.__c)&&o.__c)return e.__e==null&&(e.__e=n.__e,e.__k=n.__k),o.__c(t,e)}tS(t,e,n,s)};var Dg=Se.unmount;function Wg(t,e,n){return t&&(t.__c&&t.__c.__H&&(t.__c.__H.__.forEach(function(s){typeof s.__c=="function"&&s.__c()}),t.__c.__H=null),(t=eS({},t)).__c!=null&&(t.__c.__P===n&&(t.__c.__P=e),t.__c.__e=!0,t.__c=null),t.__k=t.__k&&t.__k.map(function(s){return Wg(s,e,n)})),t}function Vg(t,e,n){return t&&n&&(t.__v=null,t.__k=t.__k&&t.__k.map(function(s){return Vg(s,e,n)}),t.__c&&t.__c.__P===e&&(t.__e&&n.appendChild(t.__e),t.__c.__e=!0,t.__c.__P=n)),t}function gd(){this.__u=0,this.o=null,this.__b=null}function zg(t){var e=t.__&&t.__.__c;return e&&e.__a&&e.__a(t)}function Sa(){this.i=null,this.l=null}Se.unmount=function(t){var e=t.__c;e&&(e.__z=!0),e&&e.__R&&e.__R(),e&&32&t.__u&&(t.type=null),Dg&&Dg(t)},(gd.prototype=new hn).__c=function(t,e){var n=e.__c,s=this;s.o==null&&(s.o=[]),s.o.push(n);var o=zg(s.__v),r=!1,i=function(){r||s.__z||(r=!0,n.__R=null,o?o(l):l())};n.__R=i;var a=n.__P;n.__P=null;var l=function(){if(!--s.__u){if(s.state.__a){var c=s.state.__a;s.__v.__k[0]=Vg(c,c.__c.__P,c.__c.__O)}var d;for(s.setState({__a:s.__b=null});d=s.o.pop();)d.__P=a,d.forceUpdate()}};s.__u++||32&e.__u||s.setState({__a:s.__b=s.__v.__k[0]}),t.then(i,i)},gd.prototype.componentWillUnmount=function(){this.o=[]},gd.prototype.render=function(t,e){if(this.__b){if(this.__v.__k){var n=document.createElement("div"),s=this.__v.__k[0].__c;this.__v.__k[0]=Wg(this.__b,n,s.__O=s.__P)}this.__b=null}var o=e.__a&&T(ln,null,t.fallback);return o&&(o.__u&=-33),[T(ln,null,e.__a?null:t.children),o]};var Ng=function(t,e,n){if(++n[1]===n[0]&&t.l.delete(e),t.props.revealOrder&&(t.props.revealOrder[0]!=="t"||!t.l.size))for(n=t.i;n;){for(;n.length>3;)n.pop()();if(n[1]>>1,1),e.h.removeChild(o)}}}wo(T(nS,{context:e.context},t.__v),e.v)}function Do(t,e){var n=T(sS,{__v:t,h:e});return n.containerInfo=e,n}(Sa.prototype=new hn).__a=function(t){var e=this,n=zg(e.__v),s=e.l.get(t);return s[0]++,function(o){var r=function(){e.props.revealOrder?(s.push(o),Ng(e,t,s)):o()};n?n(r):r()}},Sa.prototype.render=function(t){this.i=null,this.l=new Map;var e=Lr(t.children);t.revealOrder&&t.revealOrder[0]==="b"&&e.reverse();for(var n=e.length;n--;)this.l.set(e[n],this.i=[1,0,this.i]);return t.children},Sa.prototype.componentDidUpdate=Sa.prototype.componentDidMount=function(){var t=this;this.l.forEach(function(e,n){Ng(t,n,e)})};var oS=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.element")||60103,rS=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,iS=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,aS=/[A-Z0-9]/g,lS=typeof document<"u",cS=function(t){return(typeof Symbol<"u"&&typeof Symbol()=="symbol"?/fil|che|rad/:/fil|che|ra/).test(t)};hn.prototype.isReactComponent=!0,["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(t){Object.defineProperty(hn.prototype,t,{configurable:!0,get:function(){return this["UNSAFE_"+t]},set:function(e){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:e})}})});var Og=Se.event;Se.event=function(t){return Og&&(t=Og(t)),t.persist=function(){},t.isPropagationStopped=function(){return this.cancelBubble},t.isDefaultPrevented=function(){return this.defaultPrevented},t.nativeEvent=t};var jg,dS={configurable:!0,get:function(){return this.class}},Bg=Se.vnode;Se.vnode=function(t){typeof t.type=="string"&&(function(e){var n=e.props,s=e.type,o={},r=s.indexOf("-")==-1;for(var i in n){var a=n[i];if(!(i==="value"&&"defaultValue"in n&&a==null||lS&&i==="children"&&s==="noscript"||i==="class"||i==="className")){var l=i.toLowerCase();i==="defaultValue"&&"value"in n&&n.value==null?i="value":i==="download"&&a===!0?a="":l==="translate"&&a==="no"?a=!1:l[0]==="o"&&l[1]==="n"?l==="ondoubleclick"?i="ondblclick":l!=="onchange"||s!=="input"&&s!=="textarea"||cS(n.type)?l==="onfocus"?i="onfocusin":l==="onblur"?i="onfocusout":iS.test(i)&&(i=l):l=i="oninput":r&&rS.test(i)?i=i.replace(aS,"-$&").toLowerCase():a===null&&(a=void 0),l==="oninput"&&o[i=l]&&(i="oninputCapture"),o[i]=a}}s=="select"&&(o.multiple&&Array.isArray(o.value)&&(o.value=Lr(n.children).forEach(function(c){c.props.selected=o.value.indexOf(c.props.value)!=-1})),o.defaultValue!=null&&(o.value=Lr(n.children).forEach(function(c){c.props.selected=o.multiple?o.defaultValue.indexOf(c.props.value)!=-1:o.defaultValue==c.props.value}))),n.class&&!n.className?(o.class=n.class,Object.defineProperty(o,"className",dS)):n.className&&(o.class=o.className=n.className),e.props=o})(t),t.$$typeof=oS,Bg&&Bg(t)};var Fg=Se.__r;Se.__r=function(t){Fg&&Fg(t),jg=t.__c};var Hg=Se.diffed;Se.diffed=function(t){Hg&&Hg(t);var e=t.props,n=t.__e;n!=null&&t.type==="textarea"&&"value"in e&&e.value!==n.value&&(n.value=e.value==null?"":e.value),jg=null};var Ug=P.bind(T),Ur=8,bd=8,uS=400,Kg=0,Gg=t=>{if(!t||typeof document>"u")return!1;let e=document.activeElement;return!e||!t.contains(e)?!1:typeof e.matches=="function"&&e.matches(":focus-visible")},pS=(t,e)=>{if(!t)return null;let n=t.getBoundingClientRect(),s=e?.getBoundingClientRect?.()||{width:0,height:0},o=Ur+s.width/2,r=window.innerWidth-Ur-s.width/2,i=n.left+n.width/2,a=s.width?Math.min(Math.max(i,o),r):i,l=n.bottom+bd,c=n.top-bd-s.height>=Ur;return l+s.height+Ur>window.innerHeight&&c&&(l=n.top-bd-s.height),{left:`${a}px`,top:`${Math.max(Ur,l)}px`}},Bt=({text:t="",widthClass:e="w-64",tooltipClassName:n="",triggerClassName:s="",children:o=null,disabled:r=!1,delay:i=0})=>{let a=ee(null),l=ee(null),c=ee(null),d=ee(!1),[u,p]=y(!1),[f,g]=y(null);L(()=>{if(!u||r||!t)return;let b=()=>{let x=pS(a.current,l.current);x&&g(x)};return b(),window.addEventListener("resize",b),window.addEventListener("scroll",b,!0),()=>{window.removeEventListener("resize",b),window.removeEventListener("scroll",b,!0)}},[u,r,t]);let m=()=>{if(r||!t)return;let b=Date.now()-Kga.current?.matches?.(":hover")||Gg(a.current);if(i>0&&!b)clearTimeout(c.current),c.current=setTimeout(()=>{x()&&p(!0)},i);else{if(!x())return;p(!0)}},h=()=>{clearTimeout(c.current),u&&(Kg=Date.now()),p(!1)};return Ug` +`;function rS(t,e){for(var n in e)t[n]=e[n];return t}function Ig(t,e){for(var n in t)if(n!=="__source"&&!(n in e))return!0;for(var s in e)if(s!=="__source"&&t[s]!==e[s])return!0;return!1}function Dg(t,e){this.props=t,this.context=e}(Dg.prototype=new hn).isPureReactComponent=!0,Dg.prototype.shouldComponentUpdate=function(t,e){return Ig(this.props,t)||Ig(this.state,e)};var Ng=Se.__b;Se.__b=function(t){t.type&&t.type.__f&&t.ref&&(t.props.ref=t.ref,t.ref=null),Ng&&Ng(t)};var CL=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.forward_ref")||3911;var iS=Se.__e;Se.__e=function(t,e,n,s){if(t.then){for(var o,r=e;r=r.__;)if((o=r.__c)&&o.__c)return e.__e==null&&(e.__e=n.__e,e.__k=n.__k),o.__c(t,e)}iS(t,e,n,s)};var Og=Se.unmount;function jg(t,e,n){return t&&(t.__c&&t.__c.__H&&(t.__c.__H.__.forEach(function(s){typeof s.__c=="function"&&s.__c()}),t.__c.__H=null),(t=rS({},t)).__c!=null&&(t.__c.__P===n&&(t.__c.__P=e),t.__c.__e=!0,t.__c=null),t.__k=t.__k&&t.__k.map(function(s){return jg(s,e,n)})),t}function zg(t,e,n){return t&&n&&(t.__v=null,t.__k=t.__k&&t.__k.map(function(s){return zg(s,e,n)}),t.__c&&t.__c.__P===e&&(t.__e&&n.appendChild(t.__e),t.__c.__e=!0,t.__c.__P=n)),t}function gd(){this.__u=0,this.o=null,this.__b=null}function Ug(t){var e=t.__&&t.__.__c;return e&&e.__a&&e.__a(t)}function Sa(){this.i=null,this.l=null}Se.unmount=function(t){var e=t.__c;e&&(e.__z=!0),e&&e.__R&&e.__R(),e&&32&t.__u&&(t.type=null),Og&&Og(t)},(gd.prototype=new hn).__c=function(t,e){var n=e.__c,s=this;s.o==null&&(s.o=[]),s.o.push(n);var o=Ug(s.__v),r=!1,i=function(){r||s.__z||(r=!0,n.__R=null,o?o(l):l())};n.__R=i;var a=n.__P;n.__P=null;var l=function(){if(!--s.__u){if(s.state.__a){var c=s.state.__a;s.__v.__k[0]=zg(c,c.__c.__P,c.__c.__O)}var d;for(s.setState({__a:s.__b=null});d=s.o.pop();)d.__P=a,d.forceUpdate()}};s.__u++||32&e.__u||s.setState({__a:s.__b=s.__v.__k[0]}),t.then(i,i)},gd.prototype.componentWillUnmount=function(){this.o=[]},gd.prototype.render=function(t,e){if(this.__b){if(this.__v.__k){var n=document.createElement("div"),s=this.__v.__k[0].__c;this.__v.__k[0]=jg(this.__b,n,s.__O=s.__P)}this.__b=null}var o=e.__a&&T(ln,null,t.fallback);return o&&(o.__u&=-33),[T(ln,null,e.__a?null:t.children),o]};var Bg=function(t,e,n){if(++n[1]===n[0]&&t.l.delete(e),t.props.revealOrder&&(t.props.revealOrder[0]!=="t"||!t.l.size))for(n=t.i;n;){for(;n.length>3;)n.pop()();if(n[1]>>1,1),e.h.removeChild(o)}}}wo(T(aS,{context:e.context},t.__v),e.v)}function Do(t,e){var n=T(lS,{__v:t,h:e});return n.containerInfo=e,n}(Sa.prototype=new hn).__a=function(t){var e=this,n=Ug(e.__v),s=e.l.get(t);return s[0]++,function(o){var r=function(){e.props.revealOrder?(s.push(o),Bg(e,t,s)):o()};n?n(r):r()}},Sa.prototype.render=function(t){this.i=null,this.l=new Map;var e=Lr(t.children);t.revealOrder&&t.revealOrder[0]==="b"&&e.reverse();for(var n=e.length;n--;)this.l.set(e[n],this.i=[1,0,this.i]);return t.children},Sa.prototype.componentDidUpdate=Sa.prototype.componentDidMount=function(){var t=this;this.l.forEach(function(e,n){Bg(t,n,e)})};var cS=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.element")||60103,dS=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,uS=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,pS=/[A-Z0-9]/g,fS=typeof document<"u",hS=function(t){return(typeof Symbol<"u"&&typeof Symbol()=="symbol"?/fil|che|rad/:/fil|che|ra/).test(t)};hn.prototype.isReactComponent=!0,["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(t){Object.defineProperty(hn.prototype,t,{configurable:!0,get:function(){return this["UNSAFE_"+t]},set:function(e){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:e})}})});var Fg=Se.event;Se.event=function(t){return Fg&&(t=Fg(t)),t.persist=function(){},t.isPropagationStopped=function(){return this.cancelBubble},t.isDefaultPrevented=function(){return this.defaultPrevented},t.nativeEvent=t};var Kg,mS={configurable:!0,get:function(){return this.class}},Hg=Se.vnode;Se.vnode=function(t){typeof t.type=="string"&&(function(e){var n=e.props,s=e.type,o={},r=s.indexOf("-")==-1;for(var i in n){var a=n[i];if(!(i==="value"&&"defaultValue"in n&&a==null||fS&&i==="children"&&s==="noscript"||i==="class"||i==="className")){var l=i.toLowerCase();i==="defaultValue"&&"value"in n&&n.value==null?i="value":i==="download"&&a===!0?a="":l==="translate"&&a==="no"?a=!1:l[0]==="o"&&l[1]==="n"?l==="ondoubleclick"?i="ondblclick":l!=="onchange"||s!=="input"&&s!=="textarea"||hS(n.type)?l==="onfocus"?i="onfocusin":l==="onblur"?i="onfocusout":uS.test(i)&&(i=l):l=i="oninput":r&&dS.test(i)?i=i.replace(pS,"-$&").toLowerCase():a===null&&(a=void 0),l==="oninput"&&o[i=l]&&(i="oninputCapture"),o[i]=a}}s=="select"&&(o.multiple&&Array.isArray(o.value)&&(o.value=Lr(n.children).forEach(function(c){c.props.selected=o.value.indexOf(c.props.value)!=-1})),o.defaultValue!=null&&(o.value=Lr(n.children).forEach(function(c){c.props.selected=o.multiple?o.defaultValue.indexOf(c.props.value)!=-1:o.defaultValue==c.props.value}))),n.class&&!n.className?(o.class=n.class,Object.defineProperty(o,"className",mS)):n.className&&(o.class=o.className=n.className),e.props=o})(t),t.$$typeof=cS,Hg&&Hg(t)};var Wg=Se.__r;Se.__r=function(t){Wg&&Wg(t),Kg=t.__c};var Vg=Se.diffed;Se.diffed=function(t){Vg&&Vg(t);var e=t.props,n=t.__e;n!=null&&t.type==="textarea"&&"value"in e&&e.value!==n.value&&(n.value=e.value==null?"":e.value),Kg=null};var Gg=P.bind(T),Ur=8,bd=8,gS=400,qg=0,Jg=t=>{if(!t||typeof document>"u")return!1;let e=document.activeElement;return!e||!t.contains(e)?!1:typeof e.matches=="function"&&e.matches(":focus-visible")},bS=(t,e)=>{if(!t)return null;let n=t.getBoundingClientRect(),s=e?.getBoundingClientRect?.()||{width:0,height:0},o=Ur+s.width/2,r=window.innerWidth-Ur-s.width/2,i=n.left+n.width/2,a=s.width?Math.min(Math.max(i,o),r):i,l=n.bottom+bd,c=n.top-bd-s.height>=Ur;return l+s.height+Ur>window.innerHeight&&c&&(l=n.top-bd-s.height),{left:`${a}px`,top:`${Math.max(Ur,l)}px`}},Bt=({text:t="",widthClass:e="w-64",tooltipClassName:n="",triggerClassName:s="",children:o=null,disabled:r=!1,delay:i=0})=>{let a=ee(null),l=ee(null),c=ee(null),d=ee(!1),[u,p]=y(!1),[f,g]=y(null);L(()=>{if(!u||r||!t)return;let b=()=>{let x=bS(a.current,l.current);x&&g(x)};return b(),window.addEventListener("resize",b),window.addEventListener("scroll",b,!0),()=>{window.removeEventListener("resize",b),window.removeEventListener("scroll",b,!0)}},[u,r,t]);let m=()=>{if(r||!t)return;let b=Date.now()-qga.current?.matches?.(":hover")||Jg(a.current);if(i>0&&!b)clearTimeout(c.current),c.current=setTimeout(()=>{x()&&p(!0)},i);else{if(!x())return;p(!0)}},h=()=>{clearTimeout(c.current),u&&(qg=Date.now()),p(!1)};return Gg` {d.current=!1}} onMouseEnter=${m} onMouseLeave=${h} - onFocusIn=${()=>{d.current||Gg(a.current)&&m()}} + onFocusIn=${()=>{d.current||Jg(a.current)&&m()}} onFocusOut=${b=>{d.current=!1,!b.currentTarget.contains(b.relatedTarget)&&h()}} > ${o} - ${u&&!r&&t&&typeof document<"u"?Do(Ug` + ${u&&!r&&t&&typeof document<"u"?Do(Gg` `;return i.title?xd`<${Bt} text=${i.title} delay=${1e3} widthClass="w-auto max-w-64 whitespace-normal">${a}`:a})}
-`;var Me=P.bind(T),Ca=({className:t=""})=>Me` +`;var _e=P.bind(T),Ca=({className:t=""})=>_e` -`,nt=({className:t=""})=>Me` +`,nt=({className:t=""})=>_e` -`,No=({className:t=""})=>Me` +`,No=({className:t=""})=>_e` -`;var qg=({className:t=""})=>Me` +`;var Zg=({className:t=""})=>_e` -`,Jg=({className:t=""})=>Me` +`,Yg=({className:t=""})=>_e` -`,Zg=({className:t=""})=>Me` +`,Xg=({className:t=""})=>_e` -`,Yg=({className:t=""})=>Me` +`,Qg=({className:t=""})=>_e` -`,Xg=({className:t=""})=>Me` +`,eb=({className:t=""})=>_e` -`,Qg=({className:t=""})=>Me` +`,tb=({className:t=""})=>_e` -`,eb=({className:t=""})=>Me` +`,nb=({className:t=""})=>_e` -`,tb=({className:t=""})=>Me` +`,sb=({className:t=""})=>_e` -`,_a=({className:t=""})=>Me` +`,_a=({className:t=""})=>_e` -`,nb=({className:t=""})=>Me` +`,ob=({className:t=""})=>_e` -`,sb=({className:t=""})=>Me` +`,rb=({className:t=""})=>_e` -`,ob=({className:t=""})=>Me` +`,ib=({className:t=""})=>_e` -`,rb=({className:t=""})=>Me` +`,ab=({className:t=""})=>_e` -`,Ma=({className:t=""})=>Me` +`,Ma=({className:t=""})=>_e` -`,ib=({className:t=""})=>Me` +`,lb=({className:t=""})=>_e` -`,ab=({className:t=""})=>Me` +`,cb=({className:t=""})=>_e` -`,lb=({className:t=""})=>Me` +`,db=({className:t=""})=>_e` -`,cb=({className:t=""})=>Me` +`,ub=({className:t=""})=>_e` -`,db=({className:t=""})=>Me` +`,pb=({className:t=""})=>_e` -`,ub=({className:t=""})=>Me` +`,fb=({className:t=""})=>_e` -`,yd=({className:t=""})=>Me` +`,yd=({className:t=""})=>_e` -`,pb=({className:t=""})=>Me` +`,hb=({className:t=""})=>_e` -`,Oo=({className:t=""})=>Me` +`,Oo=({className:t=""})=>_e` -`,Aa=({className:t=""})=>Me` +`,Aa=({className:t=""})=>_e` -`,Kr=({className:t=""})=>Me` +`,Kr=({className:t=""})=>_e` -`,Gr=({className:t=""})=>Me` +`,Gr=({className:t=""})=>_e` -`,fb=({className:t=""})=>Me` +`,mb=({className:t=""})=>_e` -`,Us=({className:t=""})=>Me` +`,Us=({className:t=""})=>_e` -`,hb=({className:t=""})=>Me` +`,gb=({className:t=""})=>_e` -`,mb=({className:t=""})=>Me` +`,bb=({className:t=""})=>_e` -`,Ta=({className:t=""})=>Me` +`,Ta=({className:t=""})=>_e` -`;var gb=({className:t=""})=>Me` +`;var xb=({className:t=""})=>_e` -`,bb=({className:t=""})=>Me` +`,yb=({className:t=""})=>_e` -`;var Pa=({className:t=""})=>Me` +`,vb=({className:t=""})=>_e` + +`,$b=({className:t=""})=>_e` + +`;var Pa=({className:t=""})=>_e` -`;var Bo=P.bind(T),fS=({className:t=""})=>Bo` +`;var Bo=P.bind(T),xS=({className:t=""})=>Bo`
{f.target===f.currentTarget&&l?.()}} @@ -1184,21 +1218,21 @@ import"./chunks/chunk-72ZECFVW.js";var Tr,Se,Gf,Pr,hs,jf,qf,Jf,Zf,Gc,zc,jc,Yf,oa
- `:null);var wd=new Map,Gs=new Map,xb=()=>Date.now(),mS=(t,e)=>t?xb()-Number(t.fetchedAt||0){let e=String(t||"");return e?wd.get(e)?.data??null:null},La=(t="",e=null)=>{let n=String(t||"");return n&&wd.set(n,{data:e,fetchedAt:xb()}),e};var yb=async(t,e,{maxAgeMs:n=15e3,force:s=!1,staleWhileRevalidate:o=!0,onRevalidate:r=null}={})=>{let i=String(t||"");if(!i||typeof e!="function")return e();let a=wd.get(i);if(!s&&mS(a,n))return a.data;if(!s&&o&&a){if(!Gs.has(i)){let c=Promise.resolve().then(()=>e()).then(d=>(La(i,d),typeof r=="function"&&r(d),d)).finally(()=>{Gs.delete(i)});Gs.set(i,c)}return a.data}if(Gs.has(i))return Gs.get(i);let l=Promise.resolve().then(()=>e()).then(c=>(La(i,c),c)).finally(()=>{Gs.delete(i)});return Gs.set(i,l),l};var ct=(t,e,{enabled:n=!0,maxAgeMs:s=15e3,staleWhileRevalidate:o=!0}={})=>{let r=F(()=>String(t||""),[t]),i=F(()=>ms(r),[r]),[a,l]=y(i),[c,d]=y(i===null),[u,p]=y(null);L(()=>{l(ms(r))},[r]);let f=q(async({force:g=!1}={})=>{if(!n)return ms(r);ms(r)===null&&d(!0);try{let m=await yb(r,e,{maxAgeMs:s,force:g,staleWhileRevalidate:o,onRevalidate:h=>{l(h),p(null)}});return l(m),p(null),m}catch(m){throw p(m),m}finally{d(!1)}},[n,e,s,r,o]);return L(()=>{n&&f().catch(()=>{})},[n,f]),{data:a,error:u,loading:c,refresh:f}};var qs=({channelId:t,account:e={},providerLabel:n=""})=>{let s=t?t.charAt(0).toUpperCase()+t.slice(1):"Channel",o=String(n||"").trim()||s,r=String(e?.name||"").trim();if(r)return r;let i=String(e?.id||"").trim();return!i||i==="default"?o:`${o} ${i}`},gs=({accountId:t,boundAgentId:e})=>String(t||"").trim()==="default"&&!String(e||"").trim();var Ea=async({payload:t={},onPhase:e=()=>{}})=>{if(e("Loading..."),typeof window?.EventSource!="function")return Vm(t);let n=await zm(t),s=String(n?.operationId||"").trim();if(!s)throw new Error("Could not start channel creation operation");return new Promise((o,r)=>{let i=!1,a="",l=0,c=null,d=null,u={restarting:1200},p=()=>{d&&(clearTimeout(d),d=null)},f=({phase:h="",label:b=""}={})=>{let x=String(h||"").trim(),v=String(b||"").trim();if(!v)return;let w=Number(u[a]||0),$=l>0?Date.now()-l:0;if(w>0&&x&&x!==a&&${d=null;let S=c;c=null,S&&f(S)},w-$);return}p(),c=null,e(v),a=x,l=Date.now()},g=()=>{p(),m()},m=jm({operationId:s,onMessage:h=>{let b=String(h?.event||"").trim();if(b==="phase"){f({phase:String(h?.data?.phase||"").trim(),label:String(h?.data?.label||"").trim()});return}if(b==="done"){if(i)return;i=!0,g(),o(h?.data||{});return}if(b==="error"){if(i)return;i=!0,g(),r(new Error(String(h?.data?.error||"Could not create channel")))}},onError:()=>{i||(i=!0,g(),r(new Error("Channel operation stream disconnected")))}})})};var gS=new Set(["discord","slack"]),bS=({configuredChannelMap:t,provider:e})=>{let n=t instanceof Map?t.get(String(e||"").trim()):null;return Array.isArray(n?.accounts)&&n.accounts.length>0},xS=(t="")=>gS.has(String(t||"").trim()),Ia=({configuredChannelMap:t=new Map,provider:e=""}={})=>xS(e)?bS({configuredChannelMap:t,provider:e}):!1;var yS=P.bind(T),De=({visible:t=!1,onClose:e=()=>{},closeOnOverlayClick:n=!0,closeOnEscape:s=!0,panelClassName:o="bg-modal border border-border rounded-xl p-5 max-w-md w-full space-y-3",children:r=null})=>(L(()=>{if(!t||!s)return;let i=a=>{a.key==="Escape"&&e?.()};return window.addEventListener("keydown",i),()=>window.removeEventListener("keydown",i)},[t,s,e]),t?Do(yS` + `:null);var wd=new Map,Gs=new Map,wb=()=>Date.now(),vS=(t,e)=>t?wb()-Number(t.fetchedAt||0){let e=String(t||"");return e?wd.get(e)?.data??null:null},La=(t="",e=null)=>{let n=String(t||"");return n&&wd.set(n,{data:e,fetchedAt:wb()}),e};var kb=async(t,e,{maxAgeMs:n=15e3,force:s=!1,staleWhileRevalidate:o=!0,onRevalidate:r=null}={})=>{let i=String(t||"");if(!i||typeof e!="function")return e();let a=wd.get(i);if(!s&&vS(a,n))return a.data;if(!s&&o&&a){if(!Gs.has(i)){let c=Promise.resolve().then(()=>e()).then(d=>(La(i,d),typeof r=="function"&&r(d),d)).finally(()=>{Gs.delete(i)});Gs.set(i,c)}return a.data}if(Gs.has(i))return Gs.get(i);let l=Promise.resolve().then(()=>e()).then(c=>(La(i,c),c)).finally(()=>{Gs.delete(i)});return Gs.set(i,l),l};var ct=(t,e,{enabled:n=!0,maxAgeMs:s=15e3,staleWhileRevalidate:o=!0}={})=>{let r=F(()=>String(t||""),[t]),i=F(()=>ms(r),[r]),[a,l]=y(i),[c,d]=y(i===null),[u,p]=y(null);L(()=>{l(ms(r))},[r]);let f=q(async({force:g=!1}={})=>{if(!n)return ms(r);ms(r)===null&&d(!0);try{let m=await kb(r,e,{maxAgeMs:s,force:g,staleWhileRevalidate:o,onRevalidate:h=>{l(h),p(null)}});return l(m),p(null),m}catch(m){throw p(m),m}finally{d(!1)}},[n,e,s,r,o]);return L(()=>{n&&f().catch(()=>{})},[n,f]),{data:a,error:u,loading:c,refresh:f}};var qs=({channelId:t,account:e={},providerLabel:n=""})=>{let s=t?t.charAt(0).toUpperCase()+t.slice(1):"Channel",o=String(n||"").trim()||s,r=String(e?.name||"").trim();if(r)return r;let i=String(e?.id||"").trim();return!i||i==="default"?o:`${o} ${i}`},gs=({accountId:t,boundAgentId:e})=>String(t||"").trim()==="default"&&!String(e||"").trim();var Ea=async({payload:t={},onPhase:e=()=>{}})=>{if(e("Loading..."),typeof window?.EventSource!="function")return zm(t);let n=await Um(t),s=String(n?.operationId||"").trim();if(!s)throw new Error("Could not start channel creation operation");return new Promise((o,r)=>{let i=!1,a="",l=0,c=null,d=null,u={restarting:1200},p=()=>{d&&(clearTimeout(d),d=null)},f=({phase:h="",label:b=""}={})=>{let x=String(h||"").trim(),v=String(b||"").trim();if(!v)return;let w=Number(u[a]||0),$=l>0?Date.now()-l:0;if(w>0&&x&&x!==a&&${d=null;let S=c;c=null,S&&f(S)},w-$);return}p(),c=null,e(v),a=x,l=Date.now()},g=()=>{p(),m()},m=Km({operationId:s,onMessage:h=>{let b=String(h?.event||"").trim();if(b==="phase"){f({phase:String(h?.data?.phase||"").trim(),label:String(h?.data?.label||"").trim()});return}if(b==="done"){if(i)return;i=!0,g(),o(h?.data||{});return}if(b==="error"){if(i)return;i=!0,g(),r(new Error(String(h?.data?.error||"Could not create channel")))}},onError:()=>{i||(i=!0,g(),r(new Error("Channel operation stream disconnected")))}})})};var $S=new Set(["discord","slack"]),wS=({configuredChannelMap:t,provider:e})=>{let n=t instanceof Map?t.get(String(e||"").trim()):null;return Array.isArray(n?.accounts)&&n.accounts.length>0},kS=(t="")=>$S.has(String(t||"").trim()),Ia=({configuredChannelMap:t=new Map,provider:e=""}={})=>kS(e)?wS({configuredChannelMap:t,provider:e}):!1;var SS=P.bind(T),De=({visible:t=!1,onClose:e=()=>{},closeOnOverlayClick:n=!0,closeOnEscape:s=!0,panelClassName:o="bg-modal border border-border rounded-xl p-5 max-w-md w-full space-y-3",children:r=null})=>(L(()=>{if(!t||!s)return;let i=a=>{a.key==="Escape"&&e?.()};return window.addEventListener("keydown",i),()=>window.removeEventListener("keydown",i)},[t,s,e]),t?Do(SS`
{n&&i.target===i.currentTarget&&e?.()}} >
${r}
- `,document.body):null);var vb=P.bind(T),Ne=({title:t="",actions:e=null,leading:n=null})=>vb` + `,document.body):null);var Sb=P.bind(T),Ne=({title:t="",actions:e=null,leading:n=null})=>Sb`
- ${n||vb`

${t}

`} + ${n||Sb`

${t}

`}
${e}
-`;var Js=P.bind(T),vS={telegram:"TELEGRAM_BOT_TOKEN",discord:"DISCORD_BOT_TOKEN",slack:"SLACK_BOT_TOKEN"},$S={slack:"SLACK_APP_TOKEN"},wS=["app_mentions:read","channels:history","channels:read","chat:write","groups:history","im:history","im:read","im:write","mpim:history","reactions:read","reactions:write","users:read"],kS="https://docs.openclaw.ai/channels/slack",SS=t=>String(t||"").toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,""),CS=({provider:t,accountId:e})=>{let n=vS[String(t||"").trim()]||"",s=String(e||"").trim();return n?!s||s==="default"?n:`${n}_${s.replace(/-/g,"_").toUpperCase()}`:""},_S=t=>/^\*+$/.test(String(t||"").trim()),qr=({visible:t=!1,loading:e=!1,createLoadingLabel:n="Creating...",agents:s=[],existingChannels:o=[],mode:r="create",account:i=null,initialAgentId:a="",initialProvider:l="",onClose:c=()=>{},onSubmit:d=async()=>{}})=>{let u=r==="edit",[p,f]=y("telegram"),[g,m]=y(""),[h,b]=y(""),[x,v]=y(""),[w,$]=y(""),[S,C]=y(""),[_,k]=y(""),[A,O]=y(!1),[D,j]=y(!1);L(()=>{if(!t)return;let K=u?String(i?.provider||"").trim()||"telegram":bs.includes(l)?l:bs[0]||"telegram",z=Rt(K).label||"Channel",X=o.find(xe=>String(xe?.channel||"").trim()===String(K||"").trim())||null,de=Array.isArray(X?.accounts)&&X.accounts.length>0,le=u?String(i?.name||"").trim()||z:de?"":z,ie=u?String(i?.ownerAgentId||"").trim()||String(a||"").trim()||String(s[0]?.id||"").trim():String(a||"").trim()||String(s[0]?.id||"").trim();f(K),m(le);let ne=u?(()=>{let xe=String(i?.token||"").trim();return _S(xe)?"":xe})():"";b(ne),v(ne),$(""),C(ie),k(""),O(u)},[t,a,l,s,o,u,i]);let E=F(()=>o.find(K=>String(K?.channel||"").trim()===String(p||"").trim())||null,[o,p]),M=F(()=>Array.isArray(E?.accounts)&&E.accounts.length>0,[E]);L(()=>{if(A)return;let K=Rt(p).label||"Channel";if(!u&&M){m("");return}m(K)},[p,M,A,u]);let R=String(p||"").trim()==="discord"||String(p||"").trim()==="slack",B=String(p||"").trim()==="slack",I=F(()=>u?String(i?.id||"").trim()||"default":R||!M?"default":SS(g),[g,M,u,i,R]),U=F(()=>CS({provider:p,accountId:I}),[p,I]),W=F(()=>Array.isArray(E?.accounts)&&E.accounts.some(K=>String(K?.id||"").trim()===String(I||"").trim()),[E,I]);L(()=>{if(!t||!u)return;let K=!1;return(async()=>{j(!0);try{let X=await Wm({provider:p,accountId:I});if(K)return;let de=String(X?.token||""),le=String(X?.appToken||"");b(de),v(de),$(le)}catch{}finally{K||j(!1)}})(),()=>{K=!0}},[t,u,p,I]);let G=!!String(p||"").trim()&&!!String(g||"").trim()&&!!String(I||"").trim()&&!!String(S||"").trim()&&(u||!!String(h||"").trim())&&(u||!B||!!String(w||"").trim())&&(u||!W)&&!D;if(!t)return null;let se=async()=>{if(!String(g||"").trim()){k("Name is required");return}if(!String(I||"").trim()){k("Channel id could not be derived from the name");return}if(!u&&!String(h||"").trim()){k("Token is required");return}if(!u&&B&&!String(w||"").trim()){k("App Token is required for Slack");return}if(!String(S||"").trim()){k("Agent is required");return}if(!u&&W){k("That channel id is already configured for this provider");return}k("");let K=String(h||"").trim(),z=K&&K!==String(x||"").trim(),X=String(w||"").trim();await d({provider:p,name:String(g||"").trim(),accountId:I,agentId:S,...z?{token:K}:{},...B&&X?{appToken:X}:{}})};return Js` +`;var Js=P.bind(T),CS={telegram:"TELEGRAM_BOT_TOKEN",discord:"DISCORD_BOT_TOKEN",slack:"SLACK_BOT_TOKEN"},_S={slack:"SLACK_APP_TOKEN"},MS=["app_mentions:read","channels:history","channels:read","chat:write","groups:history","im:history","im:read","im:write","mpim:history","reactions:read","reactions:write","users:read"],AS="https://docs.openclaw.ai/channels/slack",TS=t=>String(t||"").toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,""),PS=({provider:t,accountId:e})=>{let n=CS[String(t||"").trim()]||"",s=String(e||"").trim();return n?!s||s==="default"?n:`${n}_${s.replace(/-/g,"_").toUpperCase()}`:""},RS=t=>/^\*+$/.test(String(t||"").trim()),qr=({visible:t=!1,loading:e=!1,createLoadingLabel:n="Creating...",agents:s=[],existingChannels:o=[],mode:r="create",account:i=null,initialAgentId:a="",initialProvider:l="",onClose:c=()=>{},onSubmit:d=async()=>{}})=>{let u=r==="edit",[p,f]=y("telegram"),[g,m]=y(""),[h,b]=y(""),[x,v]=y(""),[w,$]=y(""),[S,C]=y(""),[_,k]=y(""),[A,O]=y(!1),[D,z]=y(!1);L(()=>{if(!t)return;let K=u?String(i?.provider||"").trim()||"telegram":bs.includes(l)?l:bs[0]||"telegram",j=Rt(K).label||"Channel",X=o.find(xe=>String(xe?.channel||"").trim()===String(K||"").trim())||null,de=Array.isArray(X?.accounts)&&X.accounts.length>0,le=u?String(i?.name||"").trim()||j:de?"":j,ie=u?String(i?.ownerAgentId||"").trim()||String(a||"").trim()||String(s[0]?.id||"").trim():String(a||"").trim()||String(s[0]?.id||"").trim();f(K),m(le);let ne=u?(()=>{let xe=String(i?.token||"").trim();return RS(xe)?"":xe})():"";b(ne),v(ne),$(""),C(ie),k(""),O(u)},[t,a,l,s,o,u,i]);let E=F(()=>o.find(K=>String(K?.channel||"").trim()===String(p||"").trim())||null,[o,p]),M=F(()=>Array.isArray(E?.accounts)&&E.accounts.length>0,[E]);L(()=>{if(A)return;let K=Rt(p).label||"Channel";if(!u&&M){m("");return}m(K)},[p,M,A,u]);let R=String(p||"").trim()==="discord"||String(p||"").trim()==="slack",B=String(p||"").trim()==="slack",I=F(()=>u?String(i?.id||"").trim()||"default":R||!M?"default":TS(g),[g,M,u,i,R]),U=F(()=>PS({provider:p,accountId:I}),[p,I]),W=F(()=>Array.isArray(E?.accounts)&&E.accounts.some(K=>String(K?.id||"").trim()===String(I||"").trim()),[E,I]);L(()=>{if(!t||!u)return;let K=!1;return(async()=>{z(!0);try{let X=await jm({provider:p,accountId:I});if(K)return;let de=String(X?.token||""),le=String(X?.appToken||"");b(de),v(de),$(le)}catch{}finally{K||z(!1)}})(),()=>{K=!0}},[t,u,p,I]);let G=!!String(p||"").trim()&&!!String(g||"").trim()&&!!String(I||"").trim()&&!!String(S||"").trim()&&(u||!!String(h||"").trim())&&(u||!B||!!String(w||"").trim())&&(u||!W)&&!D;if(!t)return null;let se=async()=>{if(!String(g||"").trim()){k("Name is required");return}if(!String(I||"").trim()){k("Channel id could not be derived from the name");return}if(!u&&!String(h||"").trim()){k("Token is required");return}if(!u&&B&&!String(w||"").trim()){k("App Token is required for Slack");return}if(!String(S||"").trim()){k("Agent is required");return}if(!u&&W){k("That channel id is already configured for this provider");return}k("");let K=String(h||"").trim(),j=K&&K!==String(x||"").trim(),X=String(w||"").trim();await d({provider:p,name:String(g||"").trim(),accountId:I,agentId:S,...j?{token:K}:{},...B&&X?{appToken:X}:{}})};return Js` <${De} visible=${t} onClose=${c} @@ -1276,7 +1310,7 @@ import"./chunks/chunk-72ZECFVW.js";var Tr,Se,Gf,Pr,hs,jf,qf,Jf,Zf,Gc,zc,jc,Yf,oa

Saved behind the scenes as - ${$S.slack} + ${_S.slack} .

@@ -1315,7 +1349,7 @@ import"./chunks/chunk-72ZECFVW.js";var Tr,Se,Gf,Pr,hs,jf,qf,Jf,Zf,Gc,zc,jc,Yf,oa Create a Bot Token (xoxb-...) with scopes: - ${wS.join(", ")} + ${MS.join(", ")}
  • @@ -1328,7 +1362,7 @@ import"./chunks/chunk-72ZECFVW.js";var Tr,Se,Gf,Pr,hs,jf,qf,Jf,Zf,Gc,zc,jc,Yf,oa
  • - `};var $b=P.bind(T),MS=0,Da=null,AS={success:"success",error:"error",warning:"warning",info:"info",green:"success",red:"error",yellow:"warning",blue:"info"},TS={success:"bg-status-success-bg border border-status-success-border text-status-success",error:"bg-status-error-bg border border-status-error-border text-status-error",warning:"bg-status-warning-bg border border-status-warning-border text-status-warning",info:"bg-status-info-bg border border-status-info-border text-status-info"},wb=t=>{let e=String(t||"").trim().toLowerCase();return AS[e]||"info"};function N(t,e="info"){Da&&Da({id:++MS,text:t,type:wb(e)})}function Na({className:t="fixed bottom-4 right-4 z-50 space-y-2"}){let[e,n]=y([]);return L(()=>(Da=s=>{n(o=>[...o,s]),setTimeout(()=>n(o=>o.filter(r=>r.id!==s.id)),4e3)},()=>{Da=null}),[]),e.length===0?null:Do($b`
    - ${e.map(s=>$b` -
    + `};var Cb=P.bind(T),LS=0,Da=null,ES={success:"success",error:"error",warning:"warning",info:"info",green:"success",red:"error",yellow:"warning",blue:"info"},IS={success:"bg-status-success-bg border border-status-success-border text-status-success",error:"bg-status-error-bg border border-status-error-border text-status-error",warning:"bg-status-warning-bg border border-status-warning-border text-status-warning",info:"bg-status-info-bg border border-status-info-border text-status-info"},_b=t=>{let e=String(t||"").trim().toLowerCase();return ES[e]||"info"};function N(t,e="info"){Da&&Da({id:++LS,text:t,type:_b(e)})}function Na({className:t="fixed bottom-4 right-4 z-50 space-y-2"}){let[e,n]=y([]);return L(()=>(Da=s=>{n(o=>[...o,s]),setTimeout(()=>n(o=>o.filter(r=>r.id!==s.id)),4e3)},()=>{Da=null}),[]),e.length===0?null:Do(Cb`
    + ${e.map(s=>Cb` +
    ${s.text}
    `)} -
    `,document.body)}var en=P.bind(T),bs=["telegram","discord","slack"],PS={telegram:{label:"Telegram",iconSrc:"/assets/icons/telegram.svg"},discord:{label:"Discord",iconSrc:"/assets/icons/discord.svg"},slack:{label:"Slack",iconSrc:"/assets/icons/slack.svg"}},Rt=(t="")=>{let e=String(t||"").trim();return PS[e]||{label:e?e.charAt(0).toUpperCase()+e.slice(1):"Channel",iconSrc:""}},kb=()=>window.dispatchEvent(new CustomEvent("alphaclaw:restart-required")),Oa=({title:t="Channels",items:e=[],loadingLabel:n="Loading...",actions:s=null,renderItem:o=null})=>en` +
    `,document.body)}var en=P.bind(T),bs=["telegram","discord","slack"],DS={telegram:{label:"Telegram",iconSrc:"/assets/icons/telegram.svg"},discord:{label:"Discord",iconSrc:"/assets/icons/discord.svg"},slack:{label:"Slack",iconSrc:"/assets/icons/slack.svg"}},Rt=(t="")=>{let e=String(t||"").trim();return DS[e]||{label:e?e.charAt(0).toUpperCase()+e.slice(1):"Channel",iconSrc:""}},Mb=()=>window.dispatchEvent(new CustomEvent("alphaclaw:restart-required")),Oa=({title:t="Channels",items:e=[],loadingLabel:n="Loading...",actions:s=null,renderItem:o=null})=>en`

    ${t}

    @@ -1448,7 +1482,7 @@ import"./chunks/chunk-72ZECFVW.js";var Tr,Se,Gf,Pr,hs,jf,qf,Jf,Zf,Gc,zc,jc,Yf,oa
    `}
    -`,Sb=({channels:t=null,agents:e=[],onNavigate:n=()=>{},onRefreshStatuses:s=()=>{}})=>{let[o,r]=y(!1),[i,a]=y("Creating..."),[l,c]=y(""),[d,u]=y(null),[p,f]=y(null),{data:g,loading:m,refresh:h}=ct("/api/channels/accounts",To,{maxAgeMs:3e4}),b=Array.isArray(g?.channels)?g.channels:[],x=q(async()=>{try{await h({force:!0})}catch{}},[h]),v=F(()=>new Map(b.map(D=>[String(D?.channel||"").trim(),D])),[b]),w=F(()=>new Map(e.map(D=>[String(D?.id||"").trim(),String(D?.name||"").trim()||String(D?.id||"").trim()])),[e]),$=F(()=>String(e.find(D=>D?.default)?.id||"").trim(),[e]),S=e.length>0,C=async D=>{r(!0);try{let j=await Fr(D);u(null),N("Channel updated","success"),j?.restartRequired&&kb(),await Promise.all([x(),Promise.resolve(s?.())])}catch(j){N(j.message||"Could not update channel","error")}finally{r(!1)}},_=async D=>{r(!0),a("Creating...");try{let j=await Ea({payload:D,onPhase:E=>{a(String(E||"").trim()||"Creating...")}});u(null),N("Channel configured","success"),j?.restartRequired&&kb(),await Promise.all([x(),Promise.resolve(s?.())])}catch(j){N(j.message||"Could not configure channel","error")}finally{r(!1),a("Creating...")}},k=async()=>{if(p){r(!0);try{await $a({provider:p.provider,accountId:p.id}),f(null),N("Channel deleted","success"),await Promise.all([x(),Promise.resolve(s?.())])}catch(D){N(D.message||"Could not delete channel","error")}finally{r(!1)}}},A=D=>{c(""),u({id:"default",provider:D,name:Rt(D).label,ownerAgentId:$,mode:"create"})},O=F(()=>{if(m||!t)return[];let D=new Map(b.map((E,M)=>[String(E?.channel||"").trim(),M])),j=new Map(b.flatMap(E=>(Array.isArray(E?.accounts)?E.accounts:[]).map((M,R)=>[`${String(E?.channel||"").trim()}:${String(M?.id||"").trim()||"default"}`,R])));return Array.from(new Set([...b.map(E=>String(E?.channel||"").trim())])).filter(Boolean).flatMap(E=>{let M=t[E],R=v.get(E),B=Array.isArray(R?.accounts)?R.accounts:[];return R?B.map(I=>{let U=String(I?.id||"").trim()||"default",W=M?.accounts?.[U]||M||null,G=String(W?.status||I?.status||"configured").trim(),se=Number(W?.paired??I?.paired??M?.paired??0),K=E==="telegram"&&G==="paired"&&n,z=String(I?.boundAgentId||"").trim(),X=z||(gs({accountId:U,boundAgentId:z})?$:""),de=w.get(X)||X||"",le={id:U,provider:E,name:qs({channelId:E,account:I,providerLabel:Rt(E).label||"Channel"}),ownerAgentId:X,envKey:String(I?.envKey||"").trim(),token:String(I?.token||"").trim()},ie=en` +`,Ab=({channels:t=null,agents:e=[],onNavigate:n=()=>{},onRefreshStatuses:s=()=>{}})=>{let[o,r]=y(!1),[i,a]=y("Creating..."),[l,c]=y(""),[d,u]=y(null),[p,f]=y(null),{data:g,loading:m,refresh:h}=ct("/api/channels/accounts",To,{maxAgeMs:3e4}),b=Array.isArray(g?.channels)?g.channels:[],x=q(async()=>{try{await h({force:!0})}catch{}},[h]),v=F(()=>new Map(b.map(D=>[String(D?.channel||"").trim(),D])),[b]),w=F(()=>new Map(e.map(D=>[String(D?.id||"").trim(),String(D?.name||"").trim()||String(D?.id||"").trim()])),[e]),$=F(()=>String(e.find(D=>D?.default)?.id||"").trim(),[e]),S=e.length>0,C=async D=>{r(!0);try{let z=await Fr(D);u(null),N("Channel updated","success"),z?.restartRequired&&Mb(),await Promise.all([x(),Promise.resolve(s?.())])}catch(z){N(z.message||"Could not update channel","error")}finally{r(!1)}},_=async D=>{r(!0),a("Creating...");try{let z=await Ea({payload:D,onPhase:E=>{a(String(E||"").trim()||"Creating...")}});u(null),N("Channel configured","success"),z?.restartRequired&&Mb(),await Promise.all([x(),Promise.resolve(s?.())])}catch(z){N(z.message||"Could not configure channel","error")}finally{r(!1),a("Creating...")}},k=async()=>{if(p){r(!0);try{await $a({provider:p.provider,accountId:p.id}),f(null),N("Channel deleted","success"),await Promise.all([x(),Promise.resolve(s?.())])}catch(D){N(D.message||"Could not delete channel","error")}finally{r(!1)}}},A=D=>{c(""),u({id:"default",provider:D,name:Rt(D).label,ownerAgentId:$,mode:"create"})},O=F(()=>{if(m||!t)return[];let D=new Map(b.map((E,M)=>[String(E?.channel||"").trim(),M])),z=new Map(b.flatMap(E=>(Array.isArray(E?.accounts)?E.accounts:[]).map((M,R)=>[`${String(E?.channel||"").trim()}:${String(M?.id||"").trim()||"default"}`,R])));return Array.from(new Set([...b.map(E=>String(E?.channel||"").trim())])).filter(Boolean).flatMap(E=>{let M=t[E],R=v.get(E),B=Array.isArray(R?.accounts)?R.accounts:[];return R?B.map(I=>{let U=String(I?.id||"").trim()||"default",W=M?.accounts?.[U]||M||null,G=String(W?.status||I?.status||"configured").trim(),se=Number(W?.paired??I?.paired??M?.paired??0),K=E==="telegram"&&G==="paired"&&n,j=String(I?.boundAgentId||"").trim(),X=j||(gs({accountId:U,boundAgentId:j})?$:""),de=w.get(X)||X||"",le={id:U,provider:E,name:qs({channelId:E,account:I,providerLabel:Rt(E).label||"Channel"}),ownerAgentId:X,envKey:String(I?.envKey||"").trim(),token:String(I?.token||"").trim()},ie=en`
    ${S&&de&&G==="paired"?en`<${Ks} status=${G} @@ -1490,7 +1524,7 @@ import"./chunks/chunk-72ZECFVW.js";var Tr,Se,Gf,Pr,hs,jf,qf,Jf,Zf,Gc,zc,jc,Yf,oa
    - `;return{id:`${E}:${U}`,channel:E,channelOrder:Number(D.get(E)??9999),accountOrder:Number(j.get(`${E}:${U}`)??9999),label:qs({channelId:E,account:I,providerLabel:Rt(E).label||"Channel"}),isAwaitingPairing:G!=="paired",detailText:K?"Workspace":"",detailChevron:K,clickable:K,onClick:K?()=>n(`telegram/${encodeURIComponent(U)}`):void 0,trailing:ie}}):[]}).sort((E,M)=>{let R=+!!E?.isAwaitingPairing-+!!M?.isAwaitingPairing;if(R!==0)return R;let B=Number(E?.channelOrder??9999)-Number(M?.channelOrder??9999);if(B!==0)return B;let I=Number(E?.accountOrder??9999)-Number(M?.accountOrder??9999);return I!==0?I:String(E?.label||"").localeCompare(String(M?.label||""))})},[w,e.length,b,t,v,$,m,l,n,S]);return en` + `;return{id:`${E}:${U}`,channel:E,channelOrder:Number(D.get(E)??9999),accountOrder:Number(z.get(`${E}:${U}`)??9999),label:qs({channelId:E,account:I,providerLabel:Rt(E).label||"Channel"}),isAwaitingPairing:G!=="paired",detailText:K?"Workspace":"",detailChevron:K,clickable:K,onClick:K?()=>n(`telegram/${encodeURIComponent(U)}`):void 0,trailing:ie}}):[]}).sort((E,M)=>{let R=+!!E?.isAwaitingPairing-+!!M?.isAwaitingPairing;if(R!==0)return R;let B=Number(E?.channelOrder??9999)-Number(M?.channelOrder??9999);if(B!==0)return B;let I=Number(E?.accountOrder??9999)-Number(M?.accountOrder??9999);return I!==0?I:String(E?.label||"").localeCompare(String(M?.label||""))})},[w,e.length,b,t,v,$,m,l,n,S]);return en`
    <${Oa} title="Channels" @@ -1534,14 +1568,14 @@ import"./chunks/chunk-72ZECFVW.js";var Tr,Se,Gf,Pr,hs,jf,qf,Jf,Zf,Gc,zc,jc,Yf,oa onCancel=${()=>{o||f(null)}} />
    - `};var Pe=P.bind(T),RS=[{id:"telegram",title:"Telegram",fieldKeys:["TELEGRAM_BOT_TOKEN"]},{id:"discord",title:"Discord",fieldKeys:["DISCORD_BOT_TOKEN"]},{id:"slack",title:"Slack",fieldKeys:["SLACK_BOT_TOKEN","SLACK_APP_TOKEN"]}],Cb=({activeGroup:t,vals:e,hasAi:n,setValue:s,modelOptions:o,modelsLoading:r,modelsError:i,canToggleFullCatalog:a,showAllModels:l,setShowAllModels:c,selectedProvider:d,codexLoading:u,codexStatus:p,startCodexAuth:f,handleCodexDisconnect:g,codexAuthStarted:m,codexAuthWaiting:h,codexManualInput:b,setCodexManualInput:x,completeCodexAuth:v,codexExchanging:w,visibleAiFieldKeys:$,error:S,step:C,totalGroups:_,currentGroupValid:k,goBack:A,goNext:O,loading:D,githubStepLoading:j,allValid:E,handleSubmit:M})=>{let[R,B]=y(!1),[I,U]=y(!1),[W,G]=y(()=>new Set(["telegram"])),se=e._GITHUB_FLOW||An,K=se===Ot?Tn:e._GITHUB_TARGET_REPO_MODE||Tn,z=se===Ot||K===qn?"ghp_... or github_pat_...":"ghp_...";L(()=>{t.id},[t.id]),L(()=>{C===_-1&&(B(!e.OPENAI_API_KEY),U(!e.GEMINI_API_KEY))},[C===_-1]),L(()=>{t.id==="channels"&&G(ne=>ne.size>0?ne:new Set(["telegram"]))},[t.id]);let X=ne=>Pe` + `};var Pe=P.bind(T),NS=[{id:"telegram",title:"Telegram",fieldKeys:["TELEGRAM_BOT_TOKEN"]},{id:"discord",title:"Discord",fieldKeys:["DISCORD_BOT_TOKEN"]},{id:"slack",title:"Slack",fieldKeys:["SLACK_BOT_TOKEN","SLACK_APP_TOKEN"]}],Tb=({activeGroup:t,vals:e,hasAi:n,setValue:s,modelOptions:o,modelsLoading:r,modelsError:i,canToggleFullCatalog:a,showAllModels:l,setShowAllModels:c,selectedProvider:d,codexLoading:u,codexStatus:p,startCodexAuth:f,handleCodexDisconnect:g,codexAuthStarted:m,codexAuthWaiting:h,codexManualInput:b,setCodexManualInput:x,completeCodexAuth:v,codexExchanging:w,visibleAiFieldKeys:$,error:S,step:C,totalGroups:_,currentGroupValid:k,goBack:A,goNext:O,loading:D,githubStepLoading:z,allValid:E,handleSubmit:M})=>{let[R,B]=y(!1),[I,U]=y(!1),[W,G]=y(()=>new Set(["telegram"])),se=e._GITHUB_FLOW||An,K=se===Ot?Tn:e._GITHUB_TARGET_REPO_MODE||Tn,j=se===Ot||K===qn?"ghp_... or github_pat_...":"ghp_...";L(()=>{t.id},[t.id]),L(()=>{C===_-1&&(B(!e.OPENAI_API_KEY),U(!e.GEMINI_API_KEY))},[C===_-1]),L(()=>{t.id==="channels"&&G(ne=>ne.size>0?ne:new Set(["telegram"]))},[t.id]);let X=ne=>Pe`
    <${Pt} key=${ne.key} value=${e[ne.key]||""} onInput=${xe=>s(ne.key,xe.target.value)} - placeholder=${t.id==="github"&&ne.key==="GITHUB_TOKEN"?z:ne.placeholder||""} + placeholder=${t.id==="github"&&ne.key==="GITHUB_TOKEN"?j:ne.placeholder||""} isSecret=${!ne.isText} inputClass="flex-1 bg-field border border-border rounded-lg px-3 py-2 text-sm text-body outline-none focus:border-fg-muted font-mono" /> @@ -1567,7 +1601,7 @@ import"./chunks/chunk-72ZECFVW.js";var Tr,Se,Gf,Pr,hs,jf,qf,Jf,Zf,Gc,zc,jc,Yf,oa

    `,de=new Map((t.fields||[]).map(ne=>[ne.key,ne])),le=ne=>G(xe=>{let he=new Set(xe);return he.has(ne)?he.delete(ne):he.add(ne),he}),ie=()=>Pe`
    - ${RS.map(ne=>{let xe=W.has(ne.id),he=ne.fieldKeys.map(V=>de.get(V)).filter(Boolean),ue=Rt(ne.id),me=ne.fieldKeys.some(V=>String(e[V]||"").trim());return Pe` + ${NS.map(ne=>{let xe=W.has(ne.id),he=ne.fieldKeys.map(V=>de.get(V)).filter(Boolean),ue=Rt(ne.id),me=ne.fieldKeys.some(V=>String(e[V]||"").trim());return Pe`
    - `};var Rn=P.bind(T),LS={telegram:{label:"Telegram",iconSrc:"/assets/icons/telegram.svg"},discord:{label:"Discord",iconSrc:"/assets/icons/discord.svg"}},ES=({pairing:t,onApprove:e,onReject:n})=>{let[s,o]=y(""),r=async()=>{o("approve");try{await e(t.id,t.channel,t.accountId||"")}finally{o("")}},i=async()=>{o("reject");try{await n(t.id,t.channel,t.accountId||"")}finally{o("")}};return Rn` + `};var Rn=P.bind(T),OS={telegram:{label:"Telegram",iconSrc:"/assets/icons/telegram.svg"},discord:{label:"Discord",iconSrc:"/assets/icons/discord.svg"}},BS=({pairing:t,onApprove:e,onReject:n})=>{let[s,o]=y(""),r=async()=>{o("approve");try{await e(t.id,t.channel,t.accountId||"")}finally{o("")}},i=async()=>{o("reject");try{await n(t.id,t.channel,t.accountId||"")}finally{o("")}};return Rn`
    @@ -1830,7 +1864,7 @@ import"./chunks/chunk-72ZECFVW.js";var Tr,Se,Gf,Pr,hs,jf,qf,Jf,Zf,Gc,zc,jc,Yf,oa
    - `},_b=({channel:t,pairings:e,channels:n,loading:s,error:o,onApprove:r,onReject:i,canFinish:a,onContinue:l,onSkip:c})=>{let d=LS[t]||{label:t?t.charAt(0).toUpperCase()+t.slice(1):"Channel",iconSrc:""},u=n?.[t];return t?a?Rn` + `},Pb=({channel:t,pairings:e,channels:n,loading:s,error:o,onApprove:r,onReject:i,canFinish:a,onContinue:l,onSkip:c})=>{let d=OS[t]||{label:t?t.charAt(0).toUpperCase()+t.slice(1):"Channel",iconSrc:""},u=n?.[t];return t?a?Rn`
    @@ -1864,7 +1898,7 @@ import"./chunks/chunk-72ZECFVW.js";var Tr,Se,Gf,Pr,hs,jf,qf,Jf,Zf,Gc,zc,jc,Yf,oa ${e.length>0?Rn`
    - ${e.map(p=>Rn`<${ES} + ${e.map(p=>Rn`<${BS} key=${p.id} pairing=${p} onApprove=${r} @@ -1911,9 +1945,9 @@ import"./chunks/chunk-72ZECFVW.js";var Tr,Se,Gf,Pr,hs,jf,qf,Jf,Zf,Gc,zc,jc,Yf,oa Missing channel configuration. Go back and add a Telegram or Discord bot token.
    - `};var kd=(t={})=>t.TELEGRAM_BOT_TOKEN?"telegram":t.DISCORD_BOT_TOKEN?"discord":t.SLACK_BOT_TOKEN&&t.SLACK_APP_TOKEN?"slack":"",Mb=(t={},e="")=>{if(!e)return!1;let n=t?.[e];return n?n.status==="paired"&&Number(n.paired||0)>0:!1};var Sd="alphaclaw.ui.settings",Jr="alphaclaw.browse.viewerMode",Ba="alphaclaw.browse.editorSelection",Cd="alphaclaw.browse.expandedFolders",Fa="alphaclaw.browse.draft.",_d="alphaclaw.browse.draftIndex",Zr="alphaclaw.onboarding.state",Ha="alphaclaw.telegram.workspaceState",Wa="alphaclaw.telegram.workspaceCache",Md="alphaclaw.agent.sessionsCache",Ad="alphaclaw.agent.lastSessionKey";var Ab="_step",Td="_pairingChannel",Tb="_lastSetupError",IS=()=>{try{return JSON.parse(localStorage.getItem(Zr)||"{}")}catch{return{}}},Pb=({kSetupStepIndex:t,kPairingStepIndex:e}={})=>{let[n]=y(IS),[s,o]=y(()=>({...n})),[r,i]=y(null),l=!!String(n?.[Tb]||"").trim(),[c,d]=y(()=>{let p=Number.parseInt(String(n?.[Ab]||""),10);if(!Number.isFinite(p))return-1;let f=Math.max(-1,Math.min(e,p));return f===t&&l?0:f});return L(()=>{localStorage.setItem(Zr,JSON.stringify({...s,[Ab]:c,...r?{[Tb]:r}:{}}))},[s,c,r]),{vals:s,setVals:o,setValue:(p,f)=>o(g=>({...g,[p]:f})),step:c,setStep:d,setupError:r,setSetupError:i}};var Rb=({setFormError:t}={})=>{let[e,n]=y({connected:!1}),[s,o]=y(!0),[r,i]=y(""),[a,l]=y(!1),[c,d]=y(!1),[u,p]=y(!1),f=ee(null),g=async()=>{try{let x=await Po();n(x),x?.connected&&(d(!1),p(!1))}catch{n({connected:!1})}finally{o(!1)}};return L(()=>{g()},[]),L(()=>{let x=async v=>{v.data?.codex==="success"&&await g(),v.data?.codex==="error"&&t(`Codex auth failed: ${v.data.message||"unknown error"}`)};return window.addEventListener("message",x),()=>window.removeEventListener("message",x)},[t]),L(()=>()=>{f.current&&(clearInterval(f.current),f.current=null)},[]),{codexStatus:e,codexLoading:s,codexManualInput:r,setCodexManualInput:i,codexExchanging:a,codexAuthStarted:c,codexAuthWaiting:u,startCodexAuth:()=>{if(e.connected)return;d(!0),p(!0);let x="/auth/codex/start",v=window.open(x,"codex-auth","popup=yes,width=640,height=780");if(!v||v.closed){p(!1),window.location.href=x;return}f.current&&clearInterval(f.current),f.current=setInterval(()=>{v.closed&&(clearInterval(f.current),f.current=null,p(!1))},500)},completeCodexAuth:async()=>{if(!(!r.trim()||a)){l(!0),t(null);try{let x=await Wr(r.trim());if(!x.ok)throw new Error(x.error||"Codex OAuth exchange failed");i(""),d(!1),p(!1),await g()}catch(x){t(x.message||"Codex OAuth exchange failed")}finally{l(!1)}}},handleCodexDisconnect:async()=>{let x=await Hr();if(!x.ok){t(x.error||"Failed to disconnect Codex");return}d(!1),p(!1),i(""),await g()}}};var Re=(t,e,{enabled:n=!0,pauseWhenHidden:s=!0,cacheKey:o=""}={})=>{let r=String(o||""),[i,a]=y(()=>r?ms(r):null),[l,c]=y(null),d=ee(t);d.current=t;let u=q(async()=>{try{let p=await d.current();return r&&La(r,p),a(p),c(null),p}catch(p){return c(p),null}},[r]);return L(()=>{if(!r)return;let p=ms(r);p!==null&&a(p)},[r]),L(()=>{if(!n||s&&typeof document<"u"&&document.hidden)return;u();let p=setInterval(u,e);return()=>clearInterval(p)},[n,e,s,u]),L(()=>{if(!n||!s||typeof document>"u")return;let p=()=>{document.hidden||u()};return document.addEventListener("visibilitychange",p),()=>document.removeEventListener("visibilitychange",p)},[n,s,u]),{data:i,error:l,refresh:u}};var Lb=({isPairingStep:t=!1,selectedPairingChannel:e=""}={})=>{let[n,s]=y(null),[o,r]=y(!1),i=Re(So,3e3,{enabled:t}),a=Re(async()=>((await Co()).pending||[]).filter(m=>m.channel===e),1e3,{enabled:t&&!!e}),l=i.data?.channels||{},c=Mb(l,e);return L(()=>{t&&c&&r(!0)},[t,c]),{pairingStatusPoll:i,pairingRequestsPoll:a,pairingChannels:l,canFinishPairing:c,pairingError:n,pairingComplete:o,handlePairingApprove:async(f,g,m="")=>{try{s(null);let h=await _o(f,g,m);if(!h.ok)throw new Error(h.error||"Could not approve pairing");r(!0),a.refresh(),i.refresh()}catch(h){s(h.message||"Could not approve pairing")}},handlePairingReject:async(f,g,m="")=>{try{s(null);let h=await Mo(f,g,m);if(!h.ok)throw new Error(h.error||"Could not reject pairing");a.refresh()}catch(h){s(h.message||"Could not reject pairing")}},resetPairingState:()=>{s(null),r(!1)}}};var Eb=64,DS=128,Ib=4096,Pd="import",Db="secret-review",Va="placeholder-review",Nb="_IMPORT_SUBSTEP",Rd="_IMPORT_PLACEHOLDER_REVIEW",Ob="_IMPORT_PLACEHOLDER_SKIP_CONFIRMED",Bb=(t={})=>{let e=!1,n=Object.entries(t).map(([s,o])=>{let r=typeof o=="string"?o.trim():o;return r!==o&&(e=!0),[s,r]});return{normalizedVals:e?Object.fromEntries(n):t,didChange:e}},Fb=t=>!t||!Array.isArray(t.vars)||t.vars.length===0?{found:!1,count:0,vars:[]}:{found:!0,count:typeof t.count=="number"?t.count:t.vars.length,vars:t.vars.map(e=>({key:String(e?.key||"").trim(),status:String(e?.status||"missing").trim()||"missing"})).filter(e=>e.key)},Hb=({onComplete:t})=>{let e=Ht.length,n=e+1,{vals:s,setVals:o,setValue:r,step:i,setStep:a,setupError:l,setSetupError:c}=Pb({kSetupStepIndex:e,kPairingStepIndex:n}),[d,u]=y([]),[p,f]=y(!0),[g,m]=y(null),[h,b]=y(!1),[x,v]=y(!1),[w,$]=y(!1),[S,C]=y(null),{codexStatus:_,codexLoading:k,codexManualInput:A,setCodexManualInput:O,codexExchanging:D,codexAuthStarted:j,codexAuthWaiting:E,startCodexAuth:M,completeCodexAuth:R,handleCodexDisconnect:B}=Rb({setFormError:C}),[I,U]=y(()=>{let ge=String(s[Nb]||"").trim();return ge===Va?ge:null}),[W,G]=y(null),[se,K]=y(null),[z,X]=y(!1),[de,le]=y(null),ie=ge=>{U(ge),o(bt=>({...bt,[Nb]:ge===Va?ge:""}))},ne=()=>{o(ge=>({...ge,[Rd]:null,[Ob]:!1}))};L(()=>{Br().then(ge=>{let bt=Array.isArray(ge.models)?ge.models:[],Tt=Lo(bt);if(u(bt),!s.MODEL_KEY&&bt.length>0){let xt=Tt[0]||bt[0];o(fn=>({...fn,MODEL_KEY:xt.key}))}}).catch(()=>m("Failed to load models")).finally(()=>f(!1))},[]);let xe=zs(s.MODEL_KEY),he=Fb(s[Rd]),ue=Lo(d),me=h?d:ue.length>0?ue:d,V=d.find(ge=>ge.key===s.MODEL_KEY),J=V&&!me.some(ge=>ge.key===V.key)?[...me,V]:me,oe=ue.length>0&&d.length>ue.length,ce=gg(xe),be=Ro(xe),Ve=Mn[be]||[],et=xe==="openai-codex"?!!_.connected:Ve.some(ge=>!!String(s[ge.key]||"").trim()),wt=Ht.every(ge=>ge.validate(s,{hasAi:et})),Nt=i===-1,Q=i===e,pe=i===n,te=i>=0&&i{let{normalizedVals:ge,didChange:bt}=Bb(s);if(bt&&o(ge),!Ht.every(Ke=>Ke.validate(ge,{hasAi:et}))||x)return;let Tt=Object.entries(ge).filter(([Ke])=>Ke!=="MODEL_KEY"&&!String(Ke||"").startsWith("_")).filter(([,Ke])=>Ke).map(([Ke,kt])=>({key:Ke,value:kt})),xt=(()=>{if(!ge.MODEL_KEY||!String(ge.MODEL_KEY).includes("/"))return"A model selection is required";if(Tt.length>Eb)return`Too many environment variables (max ${Eb})`;for(let Ke of Tt){let kt=String(Ke?.key||""),Gt=String(Ke?.value||"");if(!kt)return"Each variable must include a key";if(kt.length>DS)return`Variable key is too long: ${kt.slice(0,32)}...`;if(Gt.length>Ib)return`Value too long for ${kt} (max ${Ib} chars)`}return!ge.GITHUB_TOKEN||!jr(ge.GITHUB_WORKSPACE_REPO)?'Target repo must be in "owner/repo" format.':(ge._GITHUB_FLOW||An)===Ot&&!jr(ge._GITHUB_SOURCE_REPO)?'Source repo must be in "owner/repo" format.':""})();if(xt){C(xt),c(null),a(Math.max(0,Ht.findIndex(Ke=>Ke.id==="github")));return}a(e),v(!0),C(null),c(null),ea();let fn=(ge._GITHUB_FLOW||An)===Ot;try{let Ke=await Nm(Tt,ge.MODEL_KEY,{importMode:fn});if(!Ke.ok)throw new Error(Ke.error||"Onboarding failed");let kt=kd(ge);if(!kt)throw new Error("No Telegram or Discord bot token configured for pairing.");o(Gt=>({...Gt,[Td]:kt})),v(!1),a(n),ea(),c(null)}catch(Ke){console.error("Onboard error:",Ke),c(Ke.message||"Onboarding failed"),v(!1)}},Cr=()=>{localStorage.removeItem(Zr),t()},Vc=()=>{Q||(C(null),a(ge=>Math.max(-1,ge-1)))},ta=()=>{v(!1),c(null),a(Ht.length-1)},Kt=async()=>{let{normalizedVals:ge,didChange:bt}=Bb(s);if(bt&&o(ge),!(!te||!te.validate(ge,{hasAi:et}))){if(C(null),te.id==="github"){let Tt=ge._GITHUB_FLOW||An,xt=Tt===Ot?Tn:ge._GITHUB_TARGET_REPO_MODE||Tn,fn=xt===qn?fd:pd,Ke=Tt===Ot?ge._GITHUB_SOURCE_REPO:ge.GITHUB_WORKSPACE_REPO;$(!0),ne();try{if(Tt===Ot){let Gt=await va(Ke,ge.GITHUB_TOKEN,fd);if(!Gt?.ok){C(Gt?.error||"GitHub source verification failed");return}if(Gt.repoIsEmpty){C("That source repository is empty. Use Start fresh if you want AlphaClaw to bootstrap a new setup there.");return}let vo=await va(ge.GITHUB_WORKSPACE_REPO,ge.GITHUB_TOKEN,pd);if(!vo?.ok){C(vo?.error||"GitHub target verification failed");return}if(xt===Tn&&vo.repoExists){C("That target repository already exists. Choose Use existing empty repo or pick a new target repo name.");return}if(xt===qn&&!vo.repoExists){C("That target repository does not exist yet. Choose Create new repo or enter an existing empty target repo.");return}if(Gt.tempDir&&!Gt.repoIsEmpty){G(Gt.tempDir),ie(Pd),X(!0),le(null);try{let Hs=await Om(Gt.tempDir);if(!Hs?.ok){le(Hs?.error||"Import scan failed"),X(!1);return}K(Hs)}catch(Hs){le(Hs?.message||"Import scan failed")}finally{X(!1)}return}}let kt=await va(ge.GITHUB_WORKSPACE_REPO,ge.GITHUB_TOKEN,fn);if(!kt?.ok){C(kt?.error||"GitHub verification failed");return}if(xt===Tn&&kt.repoExists){C("That target repository already exists. Choose Use existing empty repo or pick a new target repo name.");return}if(xt===qn&&!kt.repoExists){C("That target repository does not exist yet. Choose Create new repo or enter an existing empty target repo.");return}}catch(kt){C(kt?.message||"GitHub verification failed");return}finally{$(!1)}}a(Tt=>Math.min(Ht.length-1,Tt+1))}},Wf=async(ge=[])=>{X(!0),le(null);try{let bt=ge.length===0,Tt=wg(ge),xt=await Bm({tempDir:W,approvedSecrets:ge,skipSecretExtraction:bt,githubRepo:s.GITHUB_WORKSPACE_REPO,githubToken:s.GITHUB_TOKEN});if(!xt?.ok){le(xt?.error||"Import failed"),X(!1);return}let fn=Fb(xt.placeholderReview);if(o(Ke=>({...Ke,...Tt,...xt.preFill||{},[Rd]:fn,[Ob]:!1})),fn.found){ie(Va);return}ne(),ie(null),a(Ke=>Math.min(Ht.length-1,Ke+1))}catch(bt){le(bt?.message||"Import failed")}finally{X(!1)}},go=()=>{ie(Db)},bo=()=>{ie(Pd)},_r=()=>{ie(null),G(null),K(null),le(null),ne()},na=()=>{ne(),ie(null),a(ge=>Math.min(Ht.length-1,ge+1))},ps=ge=>{r("_GITHUB_FLOW",ge),a(0)},xo=I===Pd,Fs=I===Db,fs=I===Va,Gn=Nt?"Getting Started":xo?"Import":Fs?"Review Secrets":fs?"Review Env Vars":Q?"Initializing":pe?"Pairing":te?.title||"Setup",yo=Nt?0:xo||Fs||fs?i+1:Q?Ht.length+1:pe?Ht.length+2:i+1;return{state:{vals:s,step:i,setupError:l,modelsLoading:p,modelsError:g,showAllModels:h,loading:x,githubStepLoading:w,formError:S,importScanResult:se,importScanning:z,importError:de,selectedProvider:xe,modelOptions:J,canToggleFullCatalog:oe,visibleAiFieldKeys:ce,hasAi:et,allValid:wt,isPreStep:Nt,isSetupStep:Q,isPairingStep:pe,activeGroup:te,currentGroupValid:Ee,selectedPairingChannel:ke,placeholderReview:he,isImportStep:xo,isSecretReviewStep:Fs,isPlaceholderReviewStep:fs,activeStepLabel:Gn,stepNumber:yo,codexStatus:_,codexLoading:k,codexManualInput:A,codexExchanging:D,codexAuthStarted:j,codexAuthWaiting:E,pairingStatusPoll:H,pairingRequestsPoll:re,pairingChannels:ye,canFinishPairing:ve,pairingError:Ie,pairingComplete:gt},actions:{setVals:o,setValue:r,setShowAllModels:b,setCodexManualInput:O,startCodexAuth:M,completeCodexAuth:R,handleCodexDisconnect:B,handleSubmit:Wc,finishOnboarding:Cr,goBack:Vc,goBackFromSetupError:ta,goNext:Kt,handleSelectFlow:ps,handleImportApprove:Wf,handleShowSecretReview:go,handleSecretReviewBack:bo,handleImportBack:_r,handlePlaceholderReviewContinue:na,handlePairingApprove:Fc,handlePairingReject:Hc}}};var Jn=P.bind(T),Wb=({onComplete:t,acVersion:e})=>{let{state:n,actions:s}=Hb({onComplete:t});return Jn` + `};var kd=(t={})=>t.TELEGRAM_BOT_TOKEN?"telegram":t.DISCORD_BOT_TOKEN?"discord":t.SLACK_BOT_TOKEN&&t.SLACK_APP_TOKEN?"slack":"",Rb=(t={},e="")=>{if(!e)return!1;let n=t?.[e];return n?n.status==="paired"&&Number(n.paired||0)>0:!1};var Sd="alphaclaw.ui.settings",Cd="alphaclaw.ui.theme",Jr="alphaclaw.browse.viewerMode",Ba="alphaclaw.browse.editorSelection",_d="alphaclaw.browse.expandedFolders",Fa="alphaclaw.browse.draft.",Md="alphaclaw.browse.draftIndex",Zr="alphaclaw.onboarding.state",Ha="alphaclaw.telegram.workspaceState",Wa="alphaclaw.telegram.workspaceCache",Ad="alphaclaw.agent.sessionsCache",Td="alphaclaw.agent.lastSessionKey";var Lb="_step",Pd="_pairingChannel",Eb="_lastSetupError",FS=()=>{try{return JSON.parse(localStorage.getItem(Zr)||"{}")}catch{return{}}},Ib=({kSetupStepIndex:t,kPairingStepIndex:e}={})=>{let[n]=y(FS),[s,o]=y(()=>({...n})),[r,i]=y(null),l=!!String(n?.[Eb]||"").trim(),[c,d]=y(()=>{let p=Number.parseInt(String(n?.[Lb]||""),10);if(!Number.isFinite(p))return-1;let f=Math.max(-1,Math.min(e,p));return f===t&&l?0:f});return L(()=>{localStorage.setItem(Zr,JSON.stringify({...s,[Lb]:c,...r?{[Eb]:r}:{}}))},[s,c,r]),{vals:s,setVals:o,setValue:(p,f)=>o(g=>({...g,[p]:f})),step:c,setStep:d,setupError:r,setSetupError:i}};var Db=({setFormError:t}={})=>{let[e,n]=y({connected:!1}),[s,o]=y(!0),[r,i]=y(""),[a,l]=y(!1),[c,d]=y(!1),[u,p]=y(!1),f=ee(null),g=async()=>{try{let x=await Po();n(x),x?.connected&&(d(!1),p(!1))}catch{n({connected:!1})}finally{o(!1)}};return L(()=>{g()},[]),L(()=>{let x=async v=>{v.data?.codex==="success"&&await g(),v.data?.codex==="error"&&t(`Codex auth failed: ${v.data.message||"unknown error"}`)};return window.addEventListener("message",x),()=>window.removeEventListener("message",x)},[t]),L(()=>()=>{f.current&&(clearInterval(f.current),f.current=null)},[]),{codexStatus:e,codexLoading:s,codexManualInput:r,setCodexManualInput:i,codexExchanging:a,codexAuthStarted:c,codexAuthWaiting:u,startCodexAuth:()=>{if(e.connected)return;d(!0),p(!0);let x="/auth/codex/start",v=window.open(x,"codex-auth","popup=yes,width=640,height=780");if(!v||v.closed){p(!1),window.location.href=x;return}f.current&&clearInterval(f.current),f.current=setInterval(()=>{v.closed&&(clearInterval(f.current),f.current=null,p(!1))},500)},completeCodexAuth:async()=>{if(!(!r.trim()||a)){l(!0),t(null);try{let x=await Wr(r.trim());if(!x.ok)throw new Error(x.error||"Codex OAuth exchange failed");i(""),d(!1),p(!1),await g()}catch(x){t(x.message||"Codex OAuth exchange failed")}finally{l(!1)}}},handleCodexDisconnect:async()=>{let x=await Hr();if(!x.ok){t(x.error||"Failed to disconnect Codex");return}d(!1),p(!1),i(""),await g()}}};var Re=(t,e,{enabled:n=!0,pauseWhenHidden:s=!0,cacheKey:o=""}={})=>{let r=String(o||""),[i,a]=y(()=>r?ms(r):null),[l,c]=y(null),d=ee(t);d.current=t;let u=q(async()=>{try{let p=await d.current();return r&&La(r,p),a(p),c(null),p}catch(p){return c(p),null}},[r]);return L(()=>{if(!r)return;let p=ms(r);p!==null&&a(p)},[r]),L(()=>{if(!n||s&&typeof document<"u"&&document.hidden)return;u();let p=setInterval(u,e);return()=>clearInterval(p)},[n,e,s,u]),L(()=>{if(!n||!s||typeof document>"u")return;let p=()=>{document.hidden||u()};return document.addEventListener("visibilitychange",p),()=>document.removeEventListener("visibilitychange",p)},[n,s,u]),{data:i,error:l,refresh:u}};var Nb=({isPairingStep:t=!1,selectedPairingChannel:e=""}={})=>{let[n,s]=y(null),[o,r]=y(!1),i=Re(So,3e3,{enabled:t}),a=Re(async()=>((await Co()).pending||[]).filter(m=>m.channel===e),1e3,{enabled:t&&!!e}),l=i.data?.channels||{},c=Rb(l,e);return L(()=>{t&&c&&r(!0)},[t,c]),{pairingStatusPoll:i,pairingRequestsPoll:a,pairingChannels:l,canFinishPairing:c,pairingError:n,pairingComplete:o,handlePairingApprove:async(f,g,m="")=>{try{s(null);let h=await _o(f,g,m);if(!h.ok)throw new Error(h.error||"Could not approve pairing");r(!0),a.refresh(),i.refresh()}catch(h){s(h.message||"Could not approve pairing")}},handlePairingReject:async(f,g,m="")=>{try{s(null);let h=await Mo(f,g,m);if(!h.ok)throw new Error(h.error||"Could not reject pairing");a.refresh()}catch(h){s(h.message||"Could not reject pairing")}},resetPairingState:()=>{s(null),r(!1)}}};var Ob=64,HS=128,Bb=4096,Rd="import",Fb="secret-review",Va="placeholder-review",Hb="_IMPORT_SUBSTEP",Ld="_IMPORT_PLACEHOLDER_REVIEW",Wb="_IMPORT_PLACEHOLDER_SKIP_CONFIRMED",Vb=(t={})=>{let e=!1,n=Object.entries(t).map(([s,o])=>{let r=typeof o=="string"?o.trim():o;return r!==o&&(e=!0),[s,r]});return{normalizedVals:e?Object.fromEntries(n):t,didChange:e}},jb=t=>!t||!Array.isArray(t.vars)||t.vars.length===0?{found:!1,count:0,vars:[]}:{found:!0,count:typeof t.count=="number"?t.count:t.vars.length,vars:t.vars.map(e=>({key:String(e?.key||"").trim(),status:String(e?.status||"missing").trim()||"missing"})).filter(e=>e.key)},zb=({onComplete:t})=>{let e=Ht.length,n=e+1,{vals:s,setVals:o,setValue:r,step:i,setStep:a,setupError:l,setSetupError:c}=Ib({kSetupStepIndex:e,kPairingStepIndex:n}),[d,u]=y([]),[p,f]=y(!0),[g,m]=y(null),[h,b]=y(!1),[x,v]=y(!1),[w,$]=y(!1),[S,C]=y(null),{codexStatus:_,codexLoading:k,codexManualInput:A,setCodexManualInput:O,codexExchanging:D,codexAuthStarted:z,codexAuthWaiting:E,startCodexAuth:M,completeCodexAuth:R,handleCodexDisconnect:B}=Db({setFormError:C}),[I,U]=y(()=>{let ge=String(s[Hb]||"").trim();return ge===Va?ge:null}),[W,G]=y(null),[se,K]=y(null),[j,X]=y(!1),[de,le]=y(null),ie=ge=>{U(ge),o(bt=>({...bt,[Hb]:ge===Va?ge:""}))},ne=()=>{o(ge=>({...ge,[Ld]:null,[Wb]:!1}))};L(()=>{Br().then(ge=>{let bt=Array.isArray(ge.models)?ge.models:[],Tt=Lo(bt);if(u(bt),!s.MODEL_KEY&&bt.length>0){let xt=Tt[0]||bt[0];o(fn=>({...fn,MODEL_KEY:xt.key}))}}).catch(()=>m("Failed to load models")).finally(()=>f(!1))},[]);let xe=js(s.MODEL_KEY),he=jb(s[Ld]),ue=Lo(d),me=h?d:ue.length>0?ue:d,V=d.find(ge=>ge.key===s.MODEL_KEY),J=V&&!me.some(ge=>ge.key===V.key)?[...me,V]:me,oe=ue.length>0&&d.length>ue.length,ce=xg(xe),be=Ro(xe),Ve=Mn[be]||[],et=xe==="openai-codex"?!!_.connected:Ve.some(ge=>!!String(s[ge.key]||"").trim()),wt=Ht.every(ge=>ge.validate(s,{hasAi:et})),Nt=i===-1,Q=i===e,pe=i===n,te=i>=0&&i{let{normalizedVals:ge,didChange:bt}=Vb(s);if(bt&&o(ge),!Ht.every(Ke=>Ke.validate(ge,{hasAi:et}))||x)return;let Tt=Object.entries(ge).filter(([Ke])=>Ke!=="MODEL_KEY"&&!String(Ke||"").startsWith("_")).filter(([,Ke])=>Ke).map(([Ke,kt])=>({key:Ke,value:kt})),xt=(()=>{if(!ge.MODEL_KEY||!String(ge.MODEL_KEY).includes("/"))return"A model selection is required";if(Tt.length>Ob)return`Too many environment variables (max ${Ob})`;for(let Ke of Tt){let kt=String(Ke?.key||""),Gt=String(Ke?.value||"");if(!kt)return"Each variable must include a key";if(kt.length>HS)return`Variable key is too long: ${kt.slice(0,32)}...`;if(Gt.length>Bb)return`Value too long for ${kt} (max ${Bb} chars)`}return!ge.GITHUB_TOKEN||!zr(ge.GITHUB_WORKSPACE_REPO)?'Target repo must be in "owner/repo" format.':(ge._GITHUB_FLOW||An)===Ot&&!zr(ge._GITHUB_SOURCE_REPO)?'Source repo must be in "owner/repo" format.':""})();if(xt){C(xt),c(null),a(Math.max(0,Ht.findIndex(Ke=>Ke.id==="github")));return}a(e),v(!0),C(null),c(null),ea();let fn=(ge._GITHUB_FLOW||An)===Ot;try{let Ke=await Bm(Tt,ge.MODEL_KEY,{importMode:fn});if(!Ke.ok)throw new Error(Ke.error||"Onboarding failed");let kt=kd(ge);if(!kt)throw new Error("No Telegram or Discord bot token configured for pairing.");o(Gt=>({...Gt,[Pd]:kt})),v(!1),a(n),ea(),c(null)}catch(Ke){console.error("Onboard error:",Ke),c(Ke.message||"Onboarding failed"),v(!1)}},Cr=()=>{localStorage.removeItem(Zr),t()},Vc=()=>{Q||(C(null),a(ge=>Math.max(-1,ge-1)))},ta=()=>{v(!1),c(null),a(Ht.length-1)},Kt=async()=>{let{normalizedVals:ge,didChange:bt}=Vb(s);if(bt&&o(ge),!(!te||!te.validate(ge,{hasAi:et}))){if(C(null),te.id==="github"){let Tt=ge._GITHUB_FLOW||An,xt=Tt===Ot?Tn:ge._GITHUB_TARGET_REPO_MODE||Tn,fn=xt===qn?fd:pd,Ke=Tt===Ot?ge._GITHUB_SOURCE_REPO:ge.GITHUB_WORKSPACE_REPO;$(!0),ne();try{if(Tt===Ot){let Gt=await va(Ke,ge.GITHUB_TOKEN,fd);if(!Gt?.ok){C(Gt?.error||"GitHub source verification failed");return}if(Gt.repoIsEmpty){C("That source repository is empty. Use Start fresh if you want AlphaClaw to bootstrap a new setup there.");return}let vo=await va(ge.GITHUB_WORKSPACE_REPO,ge.GITHUB_TOKEN,pd);if(!vo?.ok){C(vo?.error||"GitHub target verification failed");return}if(xt===Tn&&vo.repoExists){C("That target repository already exists. Choose Use existing empty repo or pick a new target repo name.");return}if(xt===qn&&!vo.repoExists){C("That target repository does not exist yet. Choose Create new repo or enter an existing empty target repo.");return}if(Gt.tempDir&&!Gt.repoIsEmpty){G(Gt.tempDir),ie(Rd),X(!0),le(null);try{let Hs=await Fm(Gt.tempDir);if(!Hs?.ok){le(Hs?.error||"Import scan failed"),X(!1);return}K(Hs)}catch(Hs){le(Hs?.message||"Import scan failed")}finally{X(!1)}return}}let kt=await va(ge.GITHUB_WORKSPACE_REPO,ge.GITHUB_TOKEN,fn);if(!kt?.ok){C(kt?.error||"GitHub verification failed");return}if(xt===Tn&&kt.repoExists){C("That target repository already exists. Choose Use existing empty repo or pick a new target repo name.");return}if(xt===qn&&!kt.repoExists){C("That target repository does not exist yet. Choose Create new repo or enter an existing empty target repo.");return}}catch(kt){C(kt?.message||"GitHub verification failed");return}finally{$(!1)}}a(Tt=>Math.min(Ht.length-1,Tt+1))}},jf=async(ge=[])=>{X(!0),le(null);try{let bt=ge.length===0,Tt=Sg(ge),xt=await Hm({tempDir:W,approvedSecrets:ge,skipSecretExtraction:bt,githubRepo:s.GITHUB_WORKSPACE_REPO,githubToken:s.GITHUB_TOKEN});if(!xt?.ok){le(xt?.error||"Import failed"),X(!1);return}let fn=jb(xt.placeholderReview);if(o(Ke=>({...Ke,...Tt,...xt.preFill||{},[Ld]:fn,[Wb]:!1})),fn.found){ie(Va);return}ne(),ie(null),a(Ke=>Math.min(Ht.length-1,Ke+1))}catch(bt){le(bt?.message||"Import failed")}finally{X(!1)}},go=()=>{ie(Fb)},bo=()=>{ie(Rd)},_r=()=>{ie(null),G(null),K(null),le(null),ne()},na=()=>{ne(),ie(null),a(ge=>Math.min(Ht.length-1,ge+1))},ps=ge=>{r("_GITHUB_FLOW",ge),a(0)},xo=I===Rd,Fs=I===Fb,fs=I===Va,Gn=Nt?"Getting Started":xo?"Import":Fs?"Review Secrets":fs?"Review Env Vars":Q?"Initializing":pe?"Pairing":te?.title||"Setup",yo=Nt?0:xo||Fs||fs?i+1:Q?Ht.length+1:pe?Ht.length+2:i+1;return{state:{vals:s,step:i,setupError:l,modelsLoading:p,modelsError:g,showAllModels:h,loading:x,githubStepLoading:w,formError:S,importScanResult:se,importScanning:j,importError:de,selectedProvider:xe,modelOptions:J,canToggleFullCatalog:oe,visibleAiFieldKeys:ce,hasAi:et,allValid:wt,isPreStep:Nt,isSetupStep:Q,isPairingStep:pe,activeGroup:te,currentGroupValid:Ee,selectedPairingChannel:ke,placeholderReview:he,isImportStep:xo,isSecretReviewStep:Fs,isPlaceholderReviewStep:fs,activeStepLabel:Gn,stepNumber:yo,codexStatus:_,codexLoading:k,codexManualInput:A,codexExchanging:D,codexAuthStarted:z,codexAuthWaiting:E,pairingStatusPoll:H,pairingRequestsPoll:re,pairingChannels:ye,canFinishPairing:ve,pairingError:Ie,pairingComplete:gt},actions:{setVals:o,setValue:r,setShowAllModels:b,setCodexManualInput:O,startCodexAuth:M,completeCodexAuth:R,handleCodexDisconnect:B,handleSubmit:Wc,finishOnboarding:Cr,goBack:Vc,goBackFromSetupError:ta,goNext:Kt,handleSelectFlow:ps,handleImportApprove:jf,handleShowSecretReview:go,handleSecretReviewBack:bo,handleImportBack:_r,handlePlaceholderReviewContinue:na,handlePairingApprove:Fc,handlePairingReject:Hc}}};var Jn=P.bind(T),Ub=({onComplete:t,acVersion:e})=>{let{state:n,actions:s}=zb({onComplete:t});return Jn`
    - <${Mg} + <${Tg} groups=${Ht} step=${n.step} isPreStep=${n.isPreStep} @@ -1924,30 +1958,30 @@ import"./chunks/chunk-72ZECFVW.js";var Tr,Se,Gf,Pr,hs,jf,qf,Jf,Zf,Gc,zc,jc,Yf,oa />
    - ${n.isPreStep?Jn`<${xg} onSelectFlow=${s.handleSelectFlow} />`:n.isImportStep?Jn`<${kg} + ${n.isPreStep?Jn`<${vg} onSelectFlow=${s.handleSelectFlow} />`:n.isImportStep?Jn`<${Cg} scanResult=${n.importScanResult} scanning=${n.importScanning} error=${n.importError} onApprove=${s.handleImportApprove} onShowSecretReview=${s.handleShowSecretReview} onBack=${s.handleImportBack} - />`:n.isSecretReviewStep?Jn`<${Cg} + />`:n.isSecretReviewStep?Jn`<${Mg} secrets=${n.importScanResult?.secrets||[]} onApprove=${s.handleImportApprove} onBack=${s.handleSecretReviewBack} loading=${n.importScanning} error=${n.importError} - />`:n.isPlaceholderReviewStep?Jn`<${Sg} + />`:n.isPlaceholderReviewStep?Jn`<${_g} placeholderReview=${n.placeholderReview} vals=${n.vals} setValue=${s.setValue} onContinue=${s.handlePlaceholderReviewContinue} - />`:n.isSetupStep?Jn`<${Pg} + />`:n.isSetupStep?Jn`<${Lg} error=${n.setupError} loading=${n.loading} onRetry=${s.handleSubmit} onBack=${s.goBackFromSetupError} - />`:n.isPairingStep?Jn`<${_b} + />`:n.isPairingStep?Jn`<${Pb} channel=${n.selectedPairingChannel} pairings=${n.pairingRequestsPoll.data||[]} channels=${n.pairingChannels} @@ -1959,7 +1993,7 @@ import"./chunks/chunk-72ZECFVW.js";var Tr,Se,Gf,Pr,hs,jf,qf,Jf,Zf,Gc,zc,jc,Yf,oa onContinue=${s.finishOnboarding} onSkip=${s.finishOnboarding} />`:Jn` - <${Cb} + <${Tb} activeGroup=${n.activeGroup} vals=${n.vals} hasAi=${n.hasAi} @@ -2001,7 +2035,7 @@ import"./chunks/chunk-72ZECFVW.js";var Tr,Se,Gf,Pr,hs,jf,qf,Jf,Zf,Gc,zc,jc,Yf,oa
    `:null}
    - `};var NS=P.bind(T),tn=({onClick:t,disabled:e=!1,loading:n=!1,warning:s=!1,idleLabel:o="Check updates",loadingLabel:r="Checking...",className:i=""})=>NS` + `};var WS=P.bind(T),tn=({onClick:t,disabled:e=!1,loading:n=!1,warning:s=!1,idleLabel:o="Check updates",loadingLabel:r="Checking...",className:i=""})=>WS` <${Z} onClick=${t} disabled=${e} @@ -2012,7 +2046,7 @@ import"./chunks/chunk-72ZECFVW.js";var Tr,Se,Gf,Pr,hs,jf,qf,Jf,Zf,Gc,zc,jc,Yf,oa loadingLabel=${r} className=${i} /> -`;var OS=P.bind(T),Vb=({visible:t=!1,restarting:e=!1,onRestart:n,onDismiss:s=()=>{}})=>t?OS` +`;var VS=P.bind(T),Kb=({visible:t=!1,restarting:e=!1,onRestart:n,onDismiss:s=()=>{}})=>t?VS`

    @@ -2040,7 +2074,7 @@ import"./chunks/chunk-72ZECFVW.js";var Tr,Se,Gf,Pr,hs,jf,qf,Jf,Zf,Gc,zc,jc,Yf,oa

    - `:null;var za="alphaclaw:browse-draft-index-changed",Fo=t=>t||window.localStorage,Ld=t=>`${Fa}${String(t||"").trim()}`,zb=(t,e)=>{try{if(!t)return"";let s=Fo(e).getItem(Ld(t));return typeof s=="string"?s:""}catch{return""}},ja=(t,e,n)=>{try{if(!t)return;Fo(n).setItem(Ld(t),String(e||""))}catch{}},xs=(t,e)=>{try{if(!t)return;Fo(e).removeItem(Ld(t))}catch{}},jb=t=>{try{let n=Fo(t).getItem(_d);if(!n)return new Set;let s=JSON.parse(n);return Array.isArray(s)?new Set(s.map(o=>String(o||"").trim()).filter(Boolean)):new Set}catch{return new Set}},Ub=(t,e={})=>{let{storage:n,dispatchEvent:s}=e;try{let o=Fo(n),r=Array.from(t).sort((i,a)=>i.localeCompare(a));o.setItem(_d,JSON.stringify(r)),s&&s(new CustomEvent(za,{detail:{paths:r}}))}catch{}},mn=(t,e,n={})=>{let{storage:s,dispatchEvent:o}=n;if(!t)return;let r=String(t||"").trim();if(!r)return;let i=jb(s);e?i.add(r):i.delete(r),Ub(i,{storage:s,dispatchEvent:o})},Ed=t=>{try{let e=Fo(t),n=jb(e);if(n.size>0)return n;let s=new Set;for(let o=0;o0&&Ub(s,{storage:e}),s}catch{return new Set}};var BS=new URL("../../shared/browse-file-policies.json",import.meta.url),Yr={protectedPaths:[],lockedPaths:[]};try{let t=await fetch(BS);if(t.ok){let e=await t.json();e&&typeof e=="object"&&(Yr=e)}}catch{}var Ua=new Set(Array.isArray(Yr?.protectedPaths)?Yr.protectedPaths:[]),Zs=new Set(Array.isArray(Yr?.lockedPaths)?Yr.lockedPaths:[]),Ys=t=>String(t||"").replaceAll("\\","/").replace(/^\.\/+/,"").replace(/^\/+/,"").trim().toLowerCase(),Zn=(t,e)=>{let n=String(e||"").trim();if(!n)return!1;for(let s of t)if(n===s||n.endsWith(`/${s}`)||n.startsWith(`${s}/`)||n.includes(`/${s}/`))return!0;return!1};var Kb=t=>{let e=String(t||"").split("/").map(s=>s.trim()).filter(Boolean);if(e.length<=1)return[];let n=[];for(let s=0;s{let e=String(t||"");if(!e)return!1;try{if(navigator?.clipboard?.writeText)return await navigator.clipboard.writeText(e),!0}catch{}let n=null,s=!1;try{return!document?.createElement||!document?.body?.appendChild||!document?.body?.removeChild||typeof document.execCommand!="function"?!1:(n=document.createElement("textarea"),n.value=e,n.setAttribute("readonly",""),n.style.position="fixed",n.style.opacity="0",document.body.appendChild(n),s=!0,n.select(),document.execCommand("copy"))}catch{return!1}finally{n&&s&&document.body.removeChild(n)}};var Ge=P.bind(T),Id=9,FS=10,Gb=14,HS=5e3,WS=()=>{try{let t=window.localStorage.getItem(Cd);if(!t)return null;let e=JSON.parse(t);return Array.isArray(e)?new Set(e.map(n=>String(n))):null}catch{return null}},qb=(t,e)=>{!t||t.type!=="folder"||(t.path&&e.add(t.path),(t.children||[]).forEach(n=>qb(n,e)))},Dd=(t,e)=>{if(t){if(t.type==="file"){t.path&&e.push(t.path);return}(t.children||[]).forEach(n=>Dd(n,e))}},Nd=(t,e)=>{if(!t)return null;let n=String(e||"").trim();if(!n)return t;if(String(t.path||"").trim()===n)return null;if(t.type!=="folder")return t;let o=(t.children||[]).map(r=>Nd(r,n)).filter(Boolean);return o.length===(t.children||[]).length?t:{...t,children:o}},Jb=(t,e)=>{if(!t)return null;let n=String(e||"").trim().toLowerCase();if(!n)return t;let s=String(t.name||"").toLowerCase(),o=String(t.path||"").toLowerCase(),r=s.includes(n)||o.includes(n);if(t.type==="file")return r?t:null;let i=(t.children||[]).map(a=>Jb(a,n)).filter(Boolean);return!r&&i.length===0?null:{...t,children:i}},VS=t=>{let n=String(t||"").toLowerCase().replace(/(\.bak)+$/i,"");return n.endsWith(".md")?{icon:Yg,className:"file-icon file-icon-md"}:n.endsWith(".js")||n.endsWith(".mjs")?{icon:Qg,className:"file-icon file-icon-js"}:n.endsWith(".json")||n.endsWith(".jsonl")?{icon:Ma,className:"file-icon file-icon-json"}:n.endsWith(".css")||n.endsWith(".scss")?{icon:lb,className:"file-icon file-icon-css"}:/\.(html?)$/i.test(n)?{icon:ib,className:"file-icon file-icon-html"}:/\.(png|jpe?g|gif|webp|svg|bmp|ico|avif)$/i.test(n)?{icon:eb,className:"file-icon file-icon-image"}:/\.(mp3|wav|ogg|oga|m4a|aac|flac|opus|weba)$/i.test(n)?{icon:ob,className:"file-icon file-icon-audio"}:/\.(sh|bash|zsh|command)$/i.test(n)||[".bashrc",".zshrc",".profile",".bash_profile",".zprofile",".zshenv"].includes(n)?{icon:rb,className:"file-icon file-icon-shell"}:/\.(db|sqlite|sqlite3|db3|sdb|sqlitedb|duckdb|mdb|accdb)$/i.test(n)?{icon:ab,className:"file-icon file-icon-db"}:{icon:Xg,className:"file-icon file-icon-generic"}},zS=({x:t,y:e,targetPath:n,targetType:s,isLocked:o,onNewFile:r,onNewFolder:i,onCopyPath:a,onDownload:l,onDelete:c,onClose:d})=>{let u=ee(null);L(()=>{let w=C=>{u.current&&!u.current.contains(C.target)&&d()},$=C=>{C.key==="Escape"&&d()},S=()=>d();return window.addEventListener("mousedown",w),window.addEventListener("keydown",$),window.addEventListener("scroll",S,!0),()=>{window.removeEventListener("mousedown",w),window.removeEventListener("keydown",$),window.removeEventListener("scroll",S,!0)}},[d]);let p=s==="folder",f=s==="file",g=s==="root",m=p?n:"",h=!o&&(p||g),b=!!((p||f)&&n),x=f&&n,v=!o&&(p||f)&&n;return Ge` + `:null;var ja="alphaclaw:browse-draft-index-changed",Fo=t=>t||window.localStorage,Ed=t=>`${Fa}${String(t||"").trim()}`,Gb=(t,e)=>{try{if(!t)return"";let s=Fo(e).getItem(Ed(t));return typeof s=="string"?s:""}catch{return""}},za=(t,e,n)=>{try{if(!t)return;Fo(n).setItem(Ed(t),String(e||""))}catch{}},xs=(t,e)=>{try{if(!t)return;Fo(e).removeItem(Ed(t))}catch{}},qb=t=>{try{let n=Fo(t).getItem(Md);if(!n)return new Set;let s=JSON.parse(n);return Array.isArray(s)?new Set(s.map(o=>String(o||"").trim()).filter(Boolean)):new Set}catch{return new Set}},Jb=(t,e={})=>{let{storage:n,dispatchEvent:s}=e;try{let o=Fo(n),r=Array.from(t).sort((i,a)=>i.localeCompare(a));o.setItem(Md,JSON.stringify(r)),s&&s(new CustomEvent(ja,{detail:{paths:r}}))}catch{}},mn=(t,e,n={})=>{let{storage:s,dispatchEvent:o}=n;if(!t)return;let r=String(t||"").trim();if(!r)return;let i=qb(s);e?i.add(r):i.delete(r),Jb(i,{storage:s,dispatchEvent:o})},Id=t=>{try{let e=Fo(t),n=qb(e);if(n.size>0)return n;let s=new Set;for(let o=0;o0&&Jb(s,{storage:e}),s}catch{return new Set}};var jS=new URL("../../shared/browse-file-policies.json",import.meta.url),Yr={protectedPaths:[],lockedPaths:[]};try{let t=await fetch(jS);if(t.ok){let e=await t.json();e&&typeof e=="object"&&(Yr=e)}}catch{}var Ua=new Set(Array.isArray(Yr?.protectedPaths)?Yr.protectedPaths:[]),Zs=new Set(Array.isArray(Yr?.lockedPaths)?Yr.lockedPaths:[]),Ys=t=>String(t||"").replaceAll("\\","/").replace(/^\.\/+/,"").replace(/^\/+/,"").trim().toLowerCase(),Zn=(t,e)=>{let n=String(e||"").trim();if(!n)return!1;for(let s of t)if(n===s||n.endsWith(`/${s}`)||n.startsWith(`${s}/`)||n.includes(`/${s}/`))return!0;return!1};var Zb=t=>{let e=String(t||"").split("/").map(s=>s.trim()).filter(Boolean);if(e.length<=1)return[];let n=[];for(let s=0;s{let e=String(t||"");if(!e)return!1;try{if(navigator?.clipboard?.writeText)return await navigator.clipboard.writeText(e),!0}catch{}let n=null,s=!1;try{return!document?.createElement||!document?.body?.appendChild||!document?.body?.removeChild||typeof document.execCommand!="function"?!1:(n=document.createElement("textarea"),n.value=e,n.setAttribute("readonly",""),n.style.position="fixed",n.style.opacity="0",document.body.appendChild(n),s=!0,n.select(),document.execCommand("copy"))}catch{return!1}finally{n&&s&&document.body.removeChild(n)}};var Ge=P.bind(T),Dd=9,zS=10,Yb=14,US=5e3,KS=()=>{try{let t=window.localStorage.getItem(_d);if(!t)return null;let e=JSON.parse(t);return Array.isArray(e)?new Set(e.map(n=>String(n))):null}catch{return null}},Xb=(t,e)=>{!t||t.type!=="folder"||(t.path&&e.add(t.path),(t.children||[]).forEach(n=>Xb(n,e)))},Nd=(t,e)=>{if(t){if(t.type==="file"){t.path&&e.push(t.path);return}(t.children||[]).forEach(n=>Nd(n,e))}},Od=(t,e)=>{if(!t)return null;let n=String(e||"").trim();if(!n)return t;if(String(t.path||"").trim()===n)return null;if(t.type!=="folder")return t;let o=(t.children||[]).map(r=>Od(r,n)).filter(Boolean);return o.length===(t.children||[]).length?t:{...t,children:o}},Qb=(t,e)=>{if(!t)return null;let n=String(e||"").trim().toLowerCase();if(!n)return t;let s=String(t.name||"").toLowerCase(),o=String(t.path||"").toLowerCase(),r=s.includes(n)||o.includes(n);if(t.type==="file")return r?t:null;let i=(t.children||[]).map(a=>Qb(a,n)).filter(Boolean);return!r&&i.length===0?null:{...t,children:i}},GS=t=>{let n=String(t||"").toLowerCase().replace(/(\.bak)+$/i,"");return n.endsWith(".md")?{icon:Qg,className:"file-icon file-icon-md"}:n.endsWith(".js")||n.endsWith(".mjs")?{icon:tb,className:"file-icon file-icon-js"}:n.endsWith(".json")||n.endsWith(".jsonl")?{icon:Ma,className:"file-icon file-icon-json"}:n.endsWith(".css")||n.endsWith(".scss")?{icon:db,className:"file-icon file-icon-css"}:/\.(html?)$/i.test(n)?{icon:lb,className:"file-icon file-icon-html"}:/\.(png|jpe?g|gif|webp|svg|bmp|ico|avif)$/i.test(n)?{icon:nb,className:"file-icon file-icon-image"}:/\.(mp3|wav|ogg|oga|m4a|aac|flac|opus|weba)$/i.test(n)?{icon:ib,className:"file-icon file-icon-audio"}:/\.(sh|bash|zsh|command)$/i.test(n)||[".bashrc",".zshrc",".profile",".bash_profile",".zprofile",".zshenv"].includes(n)?{icon:ab,className:"file-icon file-icon-shell"}:/\.(db|sqlite|sqlite3|db3|sdb|sqlitedb|duckdb|mdb|accdb)$/i.test(n)?{icon:cb,className:"file-icon file-icon-db"}:{icon:eb,className:"file-icon file-icon-generic"}},qS=({x:t,y:e,targetPath:n,targetType:s,isLocked:o,onNewFile:r,onNewFolder:i,onCopyPath:a,onDownload:l,onDelete:c,onClose:d})=>{let u=ee(null);L(()=>{let w=C=>{u.current&&!u.current.contains(C.target)&&d()},$=C=>{C.key==="Escape"&&d()},S=()=>d();return window.addEventListener("mousedown",w),window.addEventListener("keydown",$),window.addEventListener("scroll",S,!0),()=>{window.removeEventListener("mousedown",w),window.removeEventListener("keydown",$),window.removeEventListener("scroll",S,!0)}},[d]);let p=s==="folder",f=s==="file",g=s==="root",m=p?n:"",h=!o&&(p||g),b=!!((p||f)&&n),x=f&&n,v=!o&&(p||f)&&n;return Ge`
    {l(n),d()}} > - <${fb} className="tree-context-menu-icon" /> + <${mb} className="tree-context-menu-icon" /> Download `:null} @@ -2103,7 +2137,7 @@ import"./chunks/chunk-72ZECFVW.js";var Tr,Se,Gf,Pr,hs,jf,qf,Jf,Zf,Gc,zc,jc,Yf,oa
  • <${c} className="tree-create-icon" />
  • - `},Ga=({node:t,depth:e=0,expandedPaths:n,onSetFolderExpanded:s,onSelectFolder:o,onRequestDelete:r,onSelectFile:i,onContextMenu:a,onDragDrop:l,selectedPath:c="",draftPaths:d,isSearchActive:u=!1,searchActivePath:p="",creatingInFolder:f="",creatingType:g="",onCreationConfirm:m,onCreationCancel:h,dragSourcePath:b=""})=>{if(!t)return null;if(t.type==="file"){let k=c===t.path,A=p===t.path,O=d.has(t.path||""),D=Zn(Zs,Ys(t.path||"")),j=VS(t.name),E=j.icon;return Ge` + `},Ga=({node:t,depth:e=0,expandedPaths:n,onSetFolderExpanded:s,onSelectFolder:o,onRequestDelete:r,onSelectFile:i,onContextMenu:a,onDragDrop:l,selectedPath:c="",draftPaths:d,isSearchActive:u=!1,searchActivePath:p="",creatingInFolder:f="",creatingType:g="",onCreationConfirm:m,onCreationCancel:h,dragSourcePath:b=""})=>{if(!t)return null;if(t.type==="file"){let k=c===t.path,A=p===t.path,O=d.has(t.path||""),D=Zn(Zs,Ys(t.path||"")),z=GS(t.name),E=z.icon;return Ge`
  • {!(M.key==="Delete"||M.key==="Backspace")||!k||(M.preventDefault(),r(t.path))}} tabindex="0" role="button" - style=${{paddingLeft:`${Gb+e*Id}px`}} + style=${{paddingLeft:`${Yb+e*Dd}px`}} title=${t.path||t.name} > - <${E} className=${j.className} /> + <${E} className=${z.className} /> ${t.name} ${D?Ge`<${Oo} className="tree-lock-icon" @@ -2156,7 +2190,7 @@ import"./chunks/chunk-72ZECFVW.js";var Tr,Se,Gf,Pr,hs,jf,qf,Jf,Zf,Gc,zc,jc,Yf,oa onDragEnter=${k=>{$||(k.preventDefault(),_.current+=1,_.current===1&&C(!0))}} onDragLeave=${()=>{_.current-=1,_.current<=0&&(_.current=0,C(!1))}} onDrop=${k=>{if($)return;k.preventDefault(),k.stopPropagation(),C(!1),_.current=0;let A=k.dataTransfer.getData("text/plain");A&&A!==x&&l("drop",A,x)}} - style=${{paddingLeft:`${FS+e*Id}px`}} + style=${{paddingLeft:`${zS+e*Dd}px`}} title=${x||t.name} >
  • - `},Zb=({onSelectFile:t=()=>{},selectedPath:e="",onPreviewFile:n=()=>{},isActive:s=!0})=>{let[o,r]=y(null),[i,a]=y(!0),[l,c]=y(""),[d,u]=y(WS),[p,f]=y(Ed),[g,m]=y(""),[h,b]=y(""),[x,v]=y(""),[w,$]=y(!1),[S,C]=y(""),[_,k]=y(""),[A,O]=y(null),[D,j]=y(""),[E,M]=y(""),R=E||e,B=ee(null),I=ee(""),U=q(async({showLoading:H=!1}={})=>{H&&a(!0),H&&c("");try{let ye=(await rg()).root||null,ve=JSON.stringify(ye||{});I.current!==ve&&(I.current=ve,r(ye)),u(Ie=>Ie instanceof Set?Ie:new Set),H&&c("")}catch(re){H&&c(re.message||"Could not load file tree")}finally{H&&a(!1)}},[]);L(()=>{U({showLoading:!0})},[U]),L(()=>{if(!s)return()=>{};let H=()=>{U({showLoading:!1})},re=ve=>{let Ie=String(ve?.detail?.path||"").trim();Ie&&r(gt=>Nd(gt,Ie))};H();let ye=window.setInterval(H,HS);return window.addEventListener("alphaclaw:browse-file-saved",H),window.addEventListener("alphaclaw:browse-tree-refresh",H),window.addEventListener("alphaclaw:browse-file-deleted",re),()=>{window.clearInterval(ye),window.removeEventListener("alphaclaw:browse-file-saved",H),window.removeEventListener("alphaclaw:browse-tree-refresh",H),window.removeEventListener("alphaclaw:browse-file-deleted",re)}},[s,U]);let W=String(g||"").trim().toLowerCase(),G=F(()=>{let H=o?.children||[];return W?H.map(re=>Jb(re,W)).filter(Boolean):H},[o,W]),se=d instanceof Set?d:new Set,K=W.length>0,z=F(()=>{let H=[];return G.forEach(re=>Dd(re,H)),H},[G]),X=F(()=>{let H=[];return(o?.children||[]).forEach(re=>Dd(re,H)),new Set(H)},[o]),de=F(()=>{let H=new Set;return G.forEach(re=>qb(re,H)),H},[G]);L(()=>{if(d instanceof Set)try{window.localStorage.setItem(Cd,JSON.stringify(Array.from(d)))}catch{}},[d]),L(()=>{e&&M("")},[e]),L(()=>{if(!e)return;let H=Kb(e);H.length&&u(re=>{if(!(re instanceof Set))return re;let ye=!1,ve=new Set(re);return H.forEach(Ie=>{ve.has(Ie)||(ve.add(Ie),ye=!0)}),ye?ve:re})},[e]),L(()=>{let H=re=>{let ye=re?.detail?.paths;if(Array.isArray(ye)){f(new Set(ye.map(ve=>String(ve||"").trim()).filter(Boolean)));return}f(Ed())};return window.addEventListener(za,H),window.addEventListener("storage",H),()=>{window.removeEventListener(za,H),window.removeEventListener("storage",H)}},[]),L(()=>{if(!s)return()=>{};let H=re=>{if(re.key!=="/"||re.metaKey||re.ctrlKey||re.altKey)return;let ye=re.target,ve=String(ye?.tagName||"").toLowerCase();(ve==="input"||ve==="textarea"||ve==="select"||ye?.isContentEditable)&&ye!==B.current||(re.preventDefault(),B.current?.focus(),B.current?.select())};return window.addEventListener("keydown",H),()=>{window.removeEventListener("keydown",H)}},[s]),L(()=>{if(!K){b(""),n("");return}h&&z.includes(h)||(b(""),n(""))},[K,z,h,n]);let le=(H,re)=>{u(ye=>{let ve=ye instanceof Set?new Set(ye):new Set;return re===!0?(ve.add(H),ve):re===!1?(ve.delete(H),ve):(ve.has(H)?ve.delete(H):ve.add(H),ve)})},ie=q((H,re)=>{M(""),t(H,re)},[t]),ne=H=>{M(H)},xe=H=>{let re=Ys(H);if(re){if(Zn(Zs,re)||Zn(Ua,re)){N("Protected or locked paths cannot be deleted","warning");return}v(H)}},he=de.has(x),ue=async()=>{if(!(!x||w)){$(!0);try{await wa(x),window.dispatchEvent(new CustomEvent("alphaclaw:browse-file-saved",{detail:{path:x}})),window.dispatchEvent(new CustomEvent("alphaclaw:browse-file-deleted",{detail:{path:x}})),r(H=>Nd(H,x)),window.dispatchEvent(new CustomEvent("alphaclaw:browse-tree-refresh")),ie(""),N(he?"Folder deleted":"File deleted","success"),v("")}catch(H){N(H.message||"Could not delete","error")}finally{$(!1)}}},me=H=>{if(H!==void 0)return H;if(!R)return"";if(de.has(R))return R;let re=R.lastIndexOf("/");return re>0?R.slice(0,re):""},V=(H,re)=>{let ye=me(H);if(ye&&Zn(Zs,Ys(ye))){N("Cannot create inside a locked folder","warning");return}C(ye),k(re),ye&&u(ve=>{let Ie=ve instanceof Set?new Set(ve):new Set;return Ie.add(ye),Ie})},J=H=>{V(me(),H)},oe=()=>{C(""),k("")},ce=async H=>{let re=S,ye=_;oe();let ve=re?`${re}/${H}`:H;try{ye==="folder"?(await lg(ve),N("Folder created","success")):(await ag(ve),N("File created","success")),window.dispatchEvent(new CustomEvent("alphaclaw:browse-tree-refresh")),re&&u(Ie=>{let gt=Ie instanceof Set?new Set(Ie):new Set;return gt.add(re),gt}),ye==="file"&&ie(ve)}catch(Ie){N(Ie.message||`Could not create ${ye}`,"error")}},be=H=>{O(H)},Ve=()=>{O(null)},et=async H=>{try{await dg(H),N("Download started","success")}catch(re){N(re.message||"Could not download file","error")}},wt=async H=>{if(await Ho(H)){N("Path copied","success");return}N("Could not copy path","error")},Nt=async(H,re,ye)=>{if(H==="start"){j(re);return}if(H==="end"){j("");return}if(H==="drop"){j("");let ve=re.split("/").pop();if(!ve)return;let Ie=ye?`${ye}/${ve}`:ve;if(re===Ie)return;try{await cg(re,Ie),N(`Moved to ${ye||"root"}`,"success"),window.dispatchEvent(new CustomEvent("alphaclaw:browse-tree-refresh")),e===re&&ie(Ie)}catch(gt){N(gt.message||"Could not move","error")}}},Q=H=>{m(H)},pe=()=>{m(""),b(""),n("")},te=H=>{if(!z.length)return;let re=z.indexOf(h),Ie=((re===-1?H==="up"?0:-1:re)+(H==="up"?-1:1)+z.length)%z.length,gt=z[Ie];b(gt),n(gt)},Ee=()=>{let[H=""]=z,re=h||(z.length===1?H:"");re&&(ie(re),pe())},ke=H=>{if(H.key==="ArrowDown"){H.preventDefault(),te("down");return}if(H.key==="ArrowUp"){H.preventDefault(),te("up");return}if(H.key==="Enter"){H.preventDefault(),Ee();return}H.key==="Escape"&&(H.preventDefault(),pe())};return i?Ge` + `},ex=({onSelectFile:t=()=>{},selectedPath:e="",onPreviewFile:n=()=>{},isActive:s=!0})=>{let[o,r]=y(null),[i,a]=y(!0),[l,c]=y(""),[d,u]=y(KS),[p,f]=y(Id),[g,m]=y(""),[h,b]=y(""),[x,v]=y(""),[w,$]=y(!1),[S,C]=y(""),[_,k]=y(""),[A,O]=y(null),[D,z]=y(""),[E,M]=y(""),R=E||e,B=ee(null),I=ee(""),U=q(async({showLoading:H=!1}={})=>{H&&a(!0),H&&c("");try{let ye=(await ag()).root||null,ve=JSON.stringify(ye||{});I.current!==ve&&(I.current=ve,r(ye)),u(Ie=>Ie instanceof Set?Ie:new Set),H&&c("")}catch(re){H&&c(re.message||"Could not load file tree")}finally{H&&a(!1)}},[]);L(()=>{U({showLoading:!0})},[U]),L(()=>{if(!s)return()=>{};let H=()=>{U({showLoading:!1})},re=ve=>{let Ie=String(ve?.detail?.path||"").trim();Ie&&r(gt=>Od(gt,Ie))};H();let ye=window.setInterval(H,US);return window.addEventListener("alphaclaw:browse-file-saved",H),window.addEventListener("alphaclaw:browse-tree-refresh",H),window.addEventListener("alphaclaw:browse-file-deleted",re),()=>{window.clearInterval(ye),window.removeEventListener("alphaclaw:browse-file-saved",H),window.removeEventListener("alphaclaw:browse-tree-refresh",H),window.removeEventListener("alphaclaw:browse-file-deleted",re)}},[s,U]);let W=String(g||"").trim().toLowerCase(),G=F(()=>{let H=o?.children||[];return W?H.map(re=>Qb(re,W)).filter(Boolean):H},[o,W]),se=d instanceof Set?d:new Set,K=W.length>0,j=F(()=>{let H=[];return G.forEach(re=>Nd(re,H)),H},[G]),X=F(()=>{let H=[];return(o?.children||[]).forEach(re=>Nd(re,H)),new Set(H)},[o]),de=F(()=>{let H=new Set;return G.forEach(re=>Xb(re,H)),H},[G]);L(()=>{if(d instanceof Set)try{window.localStorage.setItem(_d,JSON.stringify(Array.from(d)))}catch{}},[d]),L(()=>{e&&M("")},[e]),L(()=>{if(!e)return;let H=Zb(e);H.length&&u(re=>{if(!(re instanceof Set))return re;let ye=!1,ve=new Set(re);return H.forEach(Ie=>{ve.has(Ie)||(ve.add(Ie),ye=!0)}),ye?ve:re})},[e]),L(()=>{let H=re=>{let ye=re?.detail?.paths;if(Array.isArray(ye)){f(new Set(ye.map(ve=>String(ve||"").trim()).filter(Boolean)));return}f(Id())};return window.addEventListener(ja,H),window.addEventListener("storage",H),()=>{window.removeEventListener(ja,H),window.removeEventListener("storage",H)}},[]),L(()=>{if(!s)return()=>{};let H=re=>{if(re.key!=="/"||re.metaKey||re.ctrlKey||re.altKey)return;let ye=re.target,ve=String(ye?.tagName||"").toLowerCase();(ve==="input"||ve==="textarea"||ve==="select"||ye?.isContentEditable)&&ye!==B.current||(re.preventDefault(),B.current?.focus(),B.current?.select())};return window.addEventListener("keydown",H),()=>{window.removeEventListener("keydown",H)}},[s]),L(()=>{if(!K){b(""),n("");return}h&&j.includes(h)||(b(""),n(""))},[K,j,h,n]);let le=(H,re)=>{u(ye=>{let ve=ye instanceof Set?new Set(ye):new Set;return re===!0?(ve.add(H),ve):re===!1?(ve.delete(H),ve):(ve.has(H)?ve.delete(H):ve.add(H),ve)})},ie=q((H,re)=>{M(""),t(H,re)},[t]),ne=H=>{M(H)},xe=H=>{let re=Ys(H);if(re){if(Zn(Zs,re)||Zn(Ua,re)){N("Protected or locked paths cannot be deleted","warning");return}v(H)}},he=de.has(x),ue=async()=>{if(!(!x||w)){$(!0);try{await wa(x),window.dispatchEvent(new CustomEvent("alphaclaw:browse-file-saved",{detail:{path:x}})),window.dispatchEvent(new CustomEvent("alphaclaw:browse-file-deleted",{detail:{path:x}})),r(H=>Od(H,x)),window.dispatchEvent(new CustomEvent("alphaclaw:browse-tree-refresh")),ie(""),N(he?"Folder deleted":"File deleted","success"),v("")}catch(H){N(H.message||"Could not delete","error")}finally{$(!1)}}},me=H=>{if(H!==void 0)return H;if(!R)return"";if(de.has(R))return R;let re=R.lastIndexOf("/");return re>0?R.slice(0,re):""},V=(H,re)=>{let ye=me(H);if(ye&&Zn(Zs,Ys(ye))){N("Cannot create inside a locked folder","warning");return}C(ye),k(re),ye&&u(ve=>{let Ie=ve instanceof Set?new Set(ve):new Set;return Ie.add(ye),Ie})},J=H=>{V(me(),H)},oe=()=>{C(""),k("")},ce=async H=>{let re=S,ye=_;oe();let ve=re?`${re}/${H}`:H;try{ye==="folder"?(await dg(ve),N("Folder created","success")):(await cg(ve),N("File created","success")),window.dispatchEvent(new CustomEvent("alphaclaw:browse-tree-refresh")),re&&u(Ie=>{let gt=Ie instanceof Set?new Set(Ie):new Set;return gt.add(re),gt}),ye==="file"&&ie(ve)}catch(Ie){N(Ie.message||`Could not create ${ye}`,"error")}},be=H=>{O(H)},Ve=()=>{O(null)},et=async H=>{try{await pg(H),N("Download started","success")}catch(re){N(re.message||"Could not download file","error")}},wt=async H=>{if(await Ho(H)){N("Path copied","success");return}N("Could not copy path","error")},Nt=async(H,re,ye)=>{if(H==="start"){z(re);return}if(H==="end"){z("");return}if(H==="drop"){z("");let ve=re.split("/").pop();if(!ve)return;let Ie=ye?`${ye}/${ve}`:ve;if(re===Ie)return;try{await ug(re,Ie),N(`Moved to ${ye||"root"}`,"success"),window.dispatchEvent(new CustomEvent("alphaclaw:browse-tree-refresh")),e===re&&ie(Ie)}catch(gt){N(gt.message||"Could not move","error")}}},Q=H=>{m(H)},pe=()=>{m(""),b(""),n("")},te=H=>{if(!j.length)return;let re=j.indexOf(h),Ie=((re===-1?H==="up"?0:-1:re)+(H==="up"?-1:1)+j.length)%j.length,gt=j[Ie];b(gt),n(gt)},Ee=()=>{let[H=""]=j,re=h||(j.length===1?H:"");re&&(ie(re),pe())},ke=H=>{if(H.key==="ArrowDown"){H.preventDefault(),te("down");return}if(H.key==="ArrowUp"){H.preventDefault(),te("up");return}if(H.key==="Enter"){H.preventDefault(),Ee();return}H.key==="Escape"&&(H.preventDefault(),pe())};return i?Ge`
    <${Ce} className="h-5 w-5 text-fg-muted" /> @@ -2391,7 +2425,7 @@ import"./chunks/chunk-72ZECFVW.js";var Tr,Se,Gf,Pr,hs,jf,qf,Jf,Zf,Gc,zc,jc,Yf,oa
    ${A?Ge` - <${zS} + <${qS} x=${A.x} y=${A.y} targetPath=${A.targetPath} @@ -2419,7 +2453,7 @@ import"./chunks/chunk-72ZECFVW.js";var Tr,Se,Gf,Pr,hs,jf,qf,Jf,Zf,Gc,zc,jc,Yf,oa onConfirm=${ue} />
    - `};var jS=new Intl.NumberFormat("en-US"),US=new Intl.NumberFormat("en-US",{notation:"compact",minimumFractionDigits:1,maximumFractionDigits:1}),KS=new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:2,maximumFractionDigits:3}),Od=(t,{valueIsUnixSeconds:e=!1,valueIsEpochMs:n=!1}={})=>t==null||t===""?null:t instanceof Date?t:e?new Date(Number(t)*1e3):n?new Date(Number(t)):new Date(t),GS=(t,e)=>t.getFullYear()===e.getFullYear()&&t.getMonth()===e.getMonth()&&t.getDate()===e.getDate(),Jt=t=>jS.format(Number(t||0)),qa=t=>{let e=Number(t||0);return Number.isFinite(e)?Math.abs(e)<1e3?Jt(e):US.format(e):"0"},Yb=t=>{let e=Number(t||0);if(!Number.isFinite(e)||e<=0)return"0 B";let n=["B","KB","MB","GB","TB"],s=0,o=e;for(;o>=1024&&s=100||s===0?0:o>=10?1:2;return`${o.toFixed(r)} ${n[s]}`},gn=t=>KS.format(Number(t||0)),Wo=(t,{fallback:e="\u2014",valueIsUnixSeconds:n=!1,valueIsEpochMs:s=!1}={})=>{try{let o=Od(t,{valueIsUnixSeconds:n,valueIsEpochMs:s});return!o||Number.isNaN(o.getTime())?e:o.toLocaleString()}catch{return e}},Yn=(t,{fallback:e="\u2014",valueIsUnixSeconds:n=!1,valueIsEpochMs:s=!1}={})=>{try{let o=Od(t,{valueIsUnixSeconds:n,valueIsEpochMs:s});return!o||Number.isNaN(o.getTime())?e:GS(o,new Date)?o.toLocaleTimeString():o.toLocaleString()}catch{return e}},bn=t=>{let e=Number(t||0);if(!Number.isFinite(e)||e<=0)return"0s";if(e<1e3)return`${Math.round(e)}ms`;let n=Math.round(e/1e3),s=Math.floor(n/60),o=n%60;return s<=0?`${o}s`:`${s}m ${o}s`},qS=(t="")=>{let n=String(t||"").trim().match(/^(\d{4})-(\d{2})-(\d{2})$/);if(!n)return null;let s=Number.parseInt(n[1],10),o=Number.parseInt(n[2],10)-1,r=Number.parseInt(n[3],10);return!Number.isFinite(s)||!Number.isFinite(o)||!Number.isFinite(r)?null:new Date(s,o,r)},Xn=(t,{range:e="7d",valueType:n="epoch-ms"}={})=>{let s=null;if(n==="day-key")s=qS(t);else if(n==="epoch-ms"){let r=Number(t);s=Number.isFinite(r)?new Date(r):null}else s=Od(t);if(!s||Number.isNaN(s.getTime()))return String(t??"");let o=String(e||"").trim().toLowerCase();return o==="24h"?s.toLocaleTimeString([],{hour:"numeric"}):o==="7d"?s.toLocaleDateString([],{weekday:"short",month:"numeric",day:"numeric"}):s.toLocaleDateString([],{month:"numeric",day:"numeric"})};var Wt=P.bind(T),JS=1e4,ZS=4,YS=12,XS=t=>Wo(t,{fallback:"",valueIsUnixSeconds:!0}),Xb=t=>{let e=String(t?.repoSlug||"").trim();return e||String(t?.repoPath||"").split("/").filter(Boolean).pop()||"repo"},QS=t=>{let e=String(t?.statusKind||"M").toUpperCase();return e==="U"?{statusLabel:"U",statusClass:"is-untracked",rowClass:"is-clickable",canOpen:!0}:e==="D"?{statusLabel:"D",statusClass:"is-deleted",rowClass:"is-clickable",canOpen:!0}:{statusLabel:"M",statusClass:"is-modified",rowClass:"is-clickable",canOpen:!0}},Qb=(t,e)=>{if(t==null||t==="")return"";let n=Number(t);return!Number.isFinite(n)||n<=0?"":`${e}${n}`},eC=(t,e)=>{let n=String(t||"").trim(),s=String(e||"").toUpperCase();return n?n.endsWith("/")?!0:s==="U"&&n.endsWith("\\"):!1},tC=t=>{let e=String(t?.syncState||"").trim(),n=Number(t?.aheadCount)||0,s=Number(t?.behindCount)||0;return e==="ahead"?{label:"\u2191",title:`Ahead by ${n}`,className:"is-ahead"}:e==="behind"?{label:"\u2193",title:`Behind by ${s}`,className:"is-behind"}:e==="diverged"?{label:"\u2195",title:`Diverged (${n} ahead, ${s} behind)`,className:"is-diverged"}:e==="upstream-gone"?{label:"!",title:"Upstream missing",className:"is-upstream-gone"}:e==="no-upstream"||!t?.hasUpstream?{label:"!",title:"Not linked",className:"is-no-upstream"}:{label:"",title:"Up to date",className:"is-up-to-date"}},nC=t=>{let e=Array.isArray(t?.changedFiles)?t.changedFiles:[],n=Number(t?.changedFilesCount)||0,s=e.map(u=>String(u?.path||"").trim()).filter(Boolean),o=n||s.length;if(o<=0)return"sync changes";let r=s.map(u=>u.split("/").filter(Boolean).pop()||u),i=Array.from(new Set(r));if(i.length<=0)return`Edited ${o} ${o===1?"file":"files"}`;let a=i.slice(0,ZS),l=Math.max(0,o-a.length),c=o===1?"file":"files",d=l>0?` +${l} more`:"";return`Edited ${o} ${c} - ${a.join(", ")}${d}`},ex=({onSelectFile:t=()=>{},isActive:e=!0})=>{let[n,s]=y(!0),[o,r]=y(!1),[i,a]=y(""),[l,c]=y(null);if(L(()=>{if(!e)return()=>{};let m=!0,h=null,b=async()=>{if(m)try{let v=await ud();if(!m)return;c(v),a("")}catch(v){if(!m)return;a(v.message||"Could not load git summary")}finally{m&&s(!1)}},x=()=>{b()};return b(),h=window.setInterval(b,JS),window.addEventListener("alphaclaw:browse-file-saved",x),()=>{m=!1,h&&window.clearInterval(h),window.removeEventListener("alphaclaw:browse-file-saved",x)}},[e]),n)return Wt` + `};var JS=new Intl.NumberFormat("en-US"),ZS=new Intl.NumberFormat("en-US",{notation:"compact",minimumFractionDigits:1,maximumFractionDigits:1}),YS=new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:2,maximumFractionDigits:3}),Bd=(t,{valueIsUnixSeconds:e=!1,valueIsEpochMs:n=!1}={})=>t==null||t===""?null:t instanceof Date?t:e?new Date(Number(t)*1e3):n?new Date(Number(t)):new Date(t),XS=(t,e)=>t.getFullYear()===e.getFullYear()&&t.getMonth()===e.getMonth()&&t.getDate()===e.getDate(),Jt=t=>JS.format(Number(t||0)),qa=t=>{let e=Number(t||0);return Number.isFinite(e)?Math.abs(e)<1e3?Jt(e):ZS.format(e):"0"},tx=t=>{let e=Number(t||0);if(!Number.isFinite(e)||e<=0)return"0 B";let n=["B","KB","MB","GB","TB"],s=0,o=e;for(;o>=1024&&s=100||s===0?0:o>=10?1:2;return`${o.toFixed(r)} ${n[s]}`},gn=t=>YS.format(Number(t||0)),Wo=(t,{fallback:e="\u2014",valueIsUnixSeconds:n=!1,valueIsEpochMs:s=!1}={})=>{try{let o=Bd(t,{valueIsUnixSeconds:n,valueIsEpochMs:s});return!o||Number.isNaN(o.getTime())?e:o.toLocaleString()}catch{return e}},Yn=(t,{fallback:e="\u2014",valueIsUnixSeconds:n=!1,valueIsEpochMs:s=!1}={})=>{try{let o=Bd(t,{valueIsUnixSeconds:n,valueIsEpochMs:s});return!o||Number.isNaN(o.getTime())?e:XS(o,new Date)?o.toLocaleTimeString():o.toLocaleString()}catch{return e}},bn=t=>{let e=Number(t||0);if(!Number.isFinite(e)||e<=0)return"0s";if(e<1e3)return`${Math.round(e)}ms`;let n=Math.round(e/1e3),s=Math.floor(n/60),o=n%60;return s<=0?`${o}s`:`${s}m ${o}s`},QS=(t="")=>{let n=String(t||"").trim().match(/^(\d{4})-(\d{2})-(\d{2})$/);if(!n)return null;let s=Number.parseInt(n[1],10),o=Number.parseInt(n[2],10)-1,r=Number.parseInt(n[3],10);return!Number.isFinite(s)||!Number.isFinite(o)||!Number.isFinite(r)?null:new Date(s,o,r)},Xn=(t,{range:e="7d",valueType:n="epoch-ms"}={})=>{let s=null;if(n==="day-key")s=QS(t);else if(n==="epoch-ms"){let r=Number(t);s=Number.isFinite(r)?new Date(r):null}else s=Bd(t);if(!s||Number.isNaN(s.getTime()))return String(t??"");let o=String(e||"").trim().toLowerCase();return o==="24h"?s.toLocaleTimeString([],{hour:"numeric"}):o==="7d"?s.toLocaleDateString([],{weekday:"short",month:"numeric",day:"numeric"}):s.toLocaleDateString([],{month:"numeric",day:"numeric"})};var Wt=P.bind(T),eC=1e4,tC=4,nC=12,sC=t=>Wo(t,{fallback:"",valueIsUnixSeconds:!0}),nx=t=>{let e=String(t?.repoSlug||"").trim();return e||String(t?.repoPath||"").split("/").filter(Boolean).pop()||"repo"},oC=t=>{let e=String(t?.statusKind||"M").toUpperCase();return e==="U"?{statusLabel:"U",statusClass:"is-untracked",rowClass:"is-clickable",canOpen:!0}:e==="D"?{statusLabel:"D",statusClass:"is-deleted",rowClass:"is-clickable",canOpen:!0}:{statusLabel:"M",statusClass:"is-modified",rowClass:"is-clickable",canOpen:!0}},sx=(t,e)=>{if(t==null||t==="")return"";let n=Number(t);return!Number.isFinite(n)||n<=0?"":`${e}${n}`},rC=(t,e)=>{let n=String(t||"").trim(),s=String(e||"").toUpperCase();return n?n.endsWith("/")?!0:s==="U"&&n.endsWith("\\"):!1},iC=t=>{let e=String(t?.syncState||"").trim(),n=Number(t?.aheadCount)||0,s=Number(t?.behindCount)||0;return e==="ahead"?{label:"\u2191",title:`Ahead by ${n}`,className:"is-ahead"}:e==="behind"?{label:"\u2193",title:`Behind by ${s}`,className:"is-behind"}:e==="diverged"?{label:"\u2195",title:`Diverged (${n} ahead, ${s} behind)`,className:"is-diverged"}:e==="upstream-gone"?{label:"!",title:"Upstream missing",className:"is-upstream-gone"}:e==="no-upstream"||!t?.hasUpstream?{label:"!",title:"Not linked",className:"is-no-upstream"}:{label:"",title:"Up to date",className:"is-up-to-date"}},aC=t=>{let e=Array.isArray(t?.changedFiles)?t.changedFiles:[],n=Number(t?.changedFilesCount)||0,s=e.map(u=>String(u?.path||"").trim()).filter(Boolean),o=n||s.length;if(o<=0)return"sync changes";let r=s.map(u=>u.split("/").filter(Boolean).pop()||u),i=Array.from(new Set(r));if(i.length<=0)return`Edited ${o} ${o===1?"file":"files"}`;let a=i.slice(0,tC),l=Math.max(0,o-a.length),c=o===1?"file":"files",d=l>0?` +${l} more`:"";return`Edited ${o} ${c} - ${a.join(", ")}${d}`},ox=({onSelectFile:t=()=>{},isActive:e=!0})=>{let[n,s]=y(!0),[o,r]=y(!1),[i,a]=y(""),[l,c]=y(null);if(L(()=>{if(!e)return()=>{};let m=!0,h=null,b=async()=>{if(m)try{let v=await ud();if(!m)return;c(v),a("")}catch(v){if(!m)return;a(v.message||"Could not load git summary")}finally{m&&s(!1)}},x=()=>{b()};return b(),h=window.setInterval(b,eC),window.addEventListener("alphaclaw:browse-file-saved",x),()=>{m=!1,h&&window.clearInterval(h),window.removeEventListener("alphaclaw:browse-file-saved",x)}},[e]),n)return Wt` @@ -2427,7 +2461,7 @@ import"./chunks/chunk-72ZECFVW.js";var Tr,Se,Gf,Pr,hs,jf,qf,Jf,Zf,Gc,zc,jc,Yf,oa - `;let d=(l.changedFiles||[]).length>0,u=Number(l?.aheadCount)||0,p=d||u>0,f=tC(l),g=async()=>{if(!(!p||o))try{r(!0);let m=nC(l),h=await hg(m);h?.committed||h?.pushed?(window.dispatchEvent(new CustomEvent("alphaclaw:browse-git-synced")),N(h.message||"Changes synced","success")):N(h?.message||"No changes to sync","info");let b=await ud();c(b),a("")}catch(m){N(m.message||"Could not sync changes","error")}finally{r(!1)}};return Wt` + `;let d=(l.changedFiles||[]).length>0,u=Number(l?.aheadCount)||0,p=d||u>0,f=iC(l),g=async()=>{if(!(!p||o))try{r(!0);let m=aC(l),h=await gg(m);h?.committed||h?.pushed?(window.dispatchEvent(new CustomEvent("alphaclaw:browse-git-synced")),N(h.message||"Changes synced","success")):N(h?.message||"No changes to sync","info");let b=await ud();c(b),a("")}catch(m){N(m.message||"Could not sync changes","error")}finally{r(!1)}};return Wt`
    - `};function Wd(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var Qs=Wd();function ax(t){Qs=t}var ti={exec:()=>null};function Be(t,e=""){let n=typeof t=="string"?t:t.source,s={replace:(o,r)=>{let i=typeof r=="string"?r:r.source;return i=i.replace(Vt.caret,"$1"),n=n.replace(o,i),s},getRegex:()=>new RegExp(n,e)};return s}var sC=(()=>{try{return!!new RegExp("(?<=1)(?/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] /,listReplaceTask:/^\[[ xX]\] +/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,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:t=>new RegExp(`^( {0,3}${t})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}#`),htmlBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}<(?:[a-z].*>|!--)`,"i")},oC=/^(?:[ \t]*(?:\n|$))+/,rC=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,iC=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,ni=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,aC=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Vd=/(?:[*+-]|\d{1,9}[.)])/,lx=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,cx=Be(lx).replace(/bull/g,Vd).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(),lC=Be(lx).replace(/bull/g,Vd).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(),zd=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,cC=/^[^\n]+/,jd=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,dC=Be(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",jd).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),uC=Be(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,Vd).getRegex(),Qa="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",Ud=/|$))/,pC=Be("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",Ud).replace("tag",Qa).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),dx=Be(zd).replace("hr",ni).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",")|<(?:script|pre|style|textarea|!--)").replace("tag",Qa).getRegex(),fC=Be(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",dx).getRegex(),Kd={blockquote:fC,code:rC,def:dC,fences:iC,heading:aC,hr:ni,html:pC,lheading:cx,list:uC,newline:oC,paragraph:dx,table:ti,text:cC},tx=Be("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",ni).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",")|<(?:script|pre|style|textarea|!--)").replace("tag",Qa).getRegex(),hC={...Kd,lheading:lC,table:tx,paragraph:Be(zd).replace("hr",ni).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",tx).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Qa).getRegex()},mC={...Kd,html:Be(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",Ud).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:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:ti,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:Be(zd).replace("hr",ni).replace("heading",` *#{1,6} *[^ -]`).replace("lheading",cx).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},gC=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,bC=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,ux=/^( {2,}|\\)\n(?!\s*$)/,xC=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\`+)[^`]+\k(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",sC?"(?`+)[^`]+\k(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),hx=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,kC=Be(hx,"u").replace(/punct/g,el).getRegex(),SC=Be(hx,"u").replace(/punct/g,fx).getRegex(),mx="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",CC=Be(mx,"gu").replace(/notPunctSpace/g,px).replace(/punctSpace/g,Gd).replace(/punct/g,el).getRegex(),_C=Be(mx,"gu").replace(/notPunctSpace/g,$C).replace(/punctSpace/g,vC).replace(/punct/g,fx).getRegex(),MC=Be("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,px).replace(/punctSpace/g,Gd).replace(/punct/g,el).getRegex(),AC=Be(/\\(punct)/,"gu").replace(/punct/g,el).getRegex(),TC=Be(/^<(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(),PC=Be(Ud).replace("(?:-->|$)","-->").getRegex(),RC=Be("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",PC).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Za=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+[^`]*?`+(?!`)|[^\[\]\\`])*?/,LC=Be(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",Za).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),gx=Be(/^!?\[(label)\]\[(ref)\]/).replace("label",Za).replace("ref",jd).getRegex(),bx=Be(/^!?\[(ref)\](?:\[\])?/).replace("ref",jd).getRegex(),EC=Be("reflink|nolink(?!\\()","g").replace("reflink",gx).replace("nolink",bx).getRegex(),nx=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,qd={_backpedal:ti,anyPunctuation:AC,autolink:TC,blockSkip:wC,br:ux,code:bC,del:ti,emStrongLDelim:kC,emStrongRDelimAst:CC,emStrongRDelimUnd:MC,escape:gC,link:LC,nolink:bx,punctuation:yC,reflink:gx,reflinkSearch:EC,tag:RC,text:xC,url:ti},IC={...qd,link:Be(/^!?\[(label)\]\((.*?)\)/).replace("label",Za).getRegex(),reflink:Be(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Za).getRegex()},Bd={...qd,emStrongRDelimAst:_C,emStrongLDelim:SC,url:Be(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",nx).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:Be(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},sx=t=>NC[t];function Ln(t,e){if(e){if(Vt.escapeTest.test(t))return t.replace(Vt.escapeReplace,sx)}else if(Vt.escapeTestNoEncode.test(t))return t.replace(Vt.escapeReplaceNoEncode,sx);return t}function ox(t){try{t=encodeURI(t).replace(Vt.percentDecode,"%")}catch{return null}return t}function rx(t,e){let n=t.replace(Vt.findPipe,(r,i,a)=>{let l=!1,c=i;for(;--c>=0&&a[c]==="\\";)l=!l;return l?"|":" |"}),s=n.split(Vt.splitPipe),o=0;if(s[0].trim()||s.shift(),s.length>0&&!s.at(-1)?.trim()&&s.pop(),e)if(s.length>e)s.splice(e);else for(;s.length0?-2:-1}function ix(t,e,n,s,o){let r=e.href,i=e.title||null,a=t[1].replace(o.other.outputLinkReplace,"$1");s.state.inLink=!0;let l={type:t[0].charAt(0)==="!"?"image":"link",raw:n,href:r,title:i,text:a,tokens:s.inlineTokens(a)};return s.state.inLink=!1,l}function BC(t,e,n){let s=t.match(n.other.indentCodeCompensation);if(s===null)return e;let o=s[1];return e.split(` + `};function Vd(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var Qs=Vd();function ux(t){Qs=t}var ti={exec:()=>null};function Be(t,e=""){let n=typeof t=="string"?t:t.source,s={replace:(o,r)=>{let i=typeof r=="string"?r:r.source;return i=i.replace(Vt.caret,"$1"),n=n.replace(o,i),s},getRegex:()=>new RegExp(n,e)};return s}var lC=(()=>{try{return!!new RegExp("(?<=1)(?/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] /,listReplaceTask:/^\[[ xX]\] +/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,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:t=>new RegExp(`^( {0,3}${t})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}#`),htmlBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}<(?:[a-z].*>|!--)`,"i")},cC=/^(?:[ \t]*(?:\n|$))+/,dC=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,uC=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,ni=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,pC=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,jd=/(?:[*+-]|\d{1,9}[.)])/,px=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,fx=Be(px).replace(/bull/g,jd).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(),fC=Be(px).replace(/bull/g,jd).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(),zd=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,hC=/^[^\n]+/,Ud=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,mC=Be(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",Ud).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),gC=Be(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,jd).getRegex(),Qa="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",Kd=/|$))/,bC=Be("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",Kd).replace("tag",Qa).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),hx=Be(zd).replace("hr",ni).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",")|<(?:script|pre|style|textarea|!--)").replace("tag",Qa).getRegex(),xC=Be(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",hx).getRegex(),Gd={blockquote:xC,code:dC,def:mC,fences:uC,heading:pC,hr:ni,html:bC,lheading:fx,list:gC,newline:cC,paragraph:hx,table:ti,text:hC},rx=Be("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",ni).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",")|<(?:script|pre|style|textarea|!--)").replace("tag",Qa).getRegex(),yC={...Gd,lheading:fC,table:rx,paragraph:Be(zd).replace("hr",ni).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",rx).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Qa).getRegex()},vC={...Gd,html:Be(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",Kd).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:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:ti,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:Be(zd).replace("hr",ni).replace("heading",` *#{1,6} *[^ +]`).replace("lheading",fx).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},$C=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,wC=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,mx=/^( {2,}|\\)\n(?!\s*$)/,kC=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\`+)[^`]+\k(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",lC?"(?`+)[^`]+\k(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),xx=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,AC=Be(xx,"u").replace(/punct/g,el).getRegex(),TC=Be(xx,"u").replace(/punct/g,bx).getRegex(),yx="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",PC=Be(yx,"gu").replace(/notPunctSpace/g,gx).replace(/punctSpace/g,qd).replace(/punct/g,el).getRegex(),RC=Be(yx,"gu").replace(/notPunctSpace/g,_C).replace(/punctSpace/g,CC).replace(/punct/g,bx).getRegex(),LC=Be("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,gx).replace(/punctSpace/g,qd).replace(/punct/g,el).getRegex(),EC=Be(/\\(punct)/,"gu").replace(/punct/g,el).getRegex(),IC=Be(/^<(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(),DC=Be(Kd).replace("(?:-->|$)","-->").getRegex(),NC=Be("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",DC).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Za=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+[^`]*?`+(?!`)|[^\[\]\\`])*?/,OC=Be(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",Za).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),vx=Be(/^!?\[(label)\]\[(ref)\]/).replace("label",Za).replace("ref",Ud).getRegex(),$x=Be(/^!?\[(ref)\](?:\[\])?/).replace("ref",Ud).getRegex(),BC=Be("reflink|nolink(?!\\()","g").replace("reflink",vx).replace("nolink",$x).getRegex(),ix=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Jd={_backpedal:ti,anyPunctuation:EC,autolink:IC,blockSkip:MC,br:mx,code:wC,del:ti,emStrongLDelim:AC,emStrongRDelimAst:PC,emStrongRDelimUnd:LC,escape:$C,link:OC,nolink:$x,punctuation:SC,reflink:vx,reflinkSearch:BC,tag:NC,text:kC,url:ti},FC={...Jd,link:Be(/^!?\[(label)\]\((.*?)\)/).replace("label",Za).getRegex(),reflink:Be(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Za).getRegex()},Fd={...Jd,emStrongRDelimAst:RC,emStrongLDelim:TC,url:Be(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",ix).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:Be(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},ax=t=>WC[t];function Ln(t,e){if(e){if(Vt.escapeTest.test(t))return t.replace(Vt.escapeReplace,ax)}else if(Vt.escapeTestNoEncode.test(t))return t.replace(Vt.escapeReplaceNoEncode,ax);return t}function lx(t){try{t=encodeURI(t).replace(Vt.percentDecode,"%")}catch{return null}return t}function cx(t,e){let n=t.replace(Vt.findPipe,(r,i,a)=>{let l=!1,c=i;for(;--c>=0&&a[c]==="\\";)l=!l;return l?"|":" |"}),s=n.split(Vt.splitPipe),o=0;if(s[0].trim()||s.shift(),s.length>0&&!s.at(-1)?.trim()&&s.pop(),e)if(s.length>e)s.splice(e);else for(;s.length0?-2:-1}function dx(t,e,n,s,o){let r=e.href,i=e.title||null,a=t[1].replace(o.other.outputLinkReplace,"$1");s.state.inLink=!0;let l={type:t[0].charAt(0)==="!"?"image":"link",raw:n,href:r,title:i,text:a,tokens:s.inlineTokens(a)};return s.state.inLink=!1,l}function jC(t,e,n){let s=t.match(n.other.indentCodeCompensation);if(s===null)return e;let o=s[1];return e.split(` `).map(r=>{let i=r.match(n.other.beginningSpace);if(i===null)return r;let[a]=i;return a.length>=o.length?r.slice(o.length):r}).join(` `)}var Ya=class{options;rules;lexer;constructor(t){this.options=t||Qs}space(t){let e=this.rules.block.newline.exec(t);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(t){let e=this.rules.block.code.exec(t);if(e){let n=e[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:e[0],codeBlockStyle:"indented",text:this.options.pedantic?n:Qr(n,` -`)}}}fences(t){let e=this.rules.block.fences.exec(t);if(e){let n=e[0],s=BC(n,e[3]||"",this.rules);return{type:"code",raw:n,lang:e[2]?e[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):e[2],text:s}}}heading(t){let e=this.rules.block.heading.exec(t);if(e){let n=e[2].trim();if(this.rules.other.endingHash.test(n)){let s=Qr(n,"#");(this.options.pedantic||!s||this.rules.other.endingSpaceChar.test(s))&&(n=s.trim())}return{type:"heading",raw:e[0],depth:e[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(t){let e=this.rules.block.hr.exec(t);if(e)return{type:"hr",raw:Qr(e[0],` +`)}}}fences(t){let e=this.rules.block.fences.exec(t);if(e){let n=e[0],s=jC(n,e[3]||"",this.rules);return{type:"code",raw:n,lang:e[2]?e[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):e[2],text:s}}}heading(t){let e=this.rules.block.heading.exec(t);if(e){let n=e[2].trim();if(this.rules.other.endingHash.test(n)){let s=Qr(n,"#");(this.options.pedantic||!s||this.rules.other.endingSpaceChar.test(s))&&(n=s.trim())}return{type:"heading",raw:e[0],depth:e[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(t){let e=this.rules.block.hr.exec(t);if(e)return{type:"hr",raw:Qr(e[0],` `)}}blockquote(t){let e=this.rules.block.blockquote.exec(t);if(e){let n=Qr(e[0],` `).split(` `),s="",o="",r=[];for(;n.length>0;){let i=!1,a=[],l;for(l=0;l=g||!p.trim())d+=` `+C.slice(g);else{if(f||u.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||v.test(u)||w.test(u)||x.test(u))break;d+=` `+p}!f&&!p.trim()&&(f=!0),c+=S+` -`,t=t.substring(S.length+1),u=C.slice(g)}}o.loose||(i?o.loose=!0:this.rules.other.doubleBlankLine.test(c)&&(i=!0));let m=null,h;this.options.gfm&&(m=this.rules.other.listIsTask.exec(d),m&&(h=m[0]!=="[ ] ",d=d.replace(this.rules.other.listReplaceTask,""))),o.items.push({type:"list_item",raw:c,task:!!m,checked:h,loose:!1,text:d,tokens:[]}),o.raw+=c}let a=o.items.at(-1);if(a)a.raw=a.raw.trimEnd(),a.text=a.text.trimEnd();else return;o.raw=o.raw.trimEnd();for(let l=0;lu.type==="space"),d=c.length>0&&c.some(u=>this.rules.other.anyLine.test(u.raw));o.loose=d}if(o.loose)for(let l=0;l({text:a,tokens:this.lexer.inline(a),header:!1,align:r.align[l]})));return r}}lheading(t){let e=this.rules.block.lheading.exec(t);if(e)return{type:"heading",raw:e[0],depth:e[2].charAt(0)==="="?1:2,text:e[1],tokens:this.lexer.inline(e[1])}}paragraph(t){let e=this.rules.block.paragraph.exec(t);if(e){let n=e[1].charAt(e[1].length-1)===` -`?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:n,tokens:this.lexer.inline(n)}}}text(t){let e=this.rules.block.text.exec(t);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(t){let e=this.rules.inline.escape.exec(t);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(t){let e=this.rules.inline.tag.exec(t);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(t){let e=this.rules.inline.link.exec(t);if(e){let n=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(n)){if(!this.rules.other.endAngleBracket.test(n))return;let r=Qr(n.slice(0,-1),"\\");if((n.length-r.length)%2===0)return}else{let r=OC(e[2],"()");if(r===-2)return;if(r>-1){let i=(e[0].indexOf("!")===0?5:4)+e[1].length+r;e[2]=e[2].substring(0,r),e[0]=e[0].substring(0,i).trim(),e[3]=""}}let s=e[2],o="";if(this.options.pedantic){let r=this.rules.other.pedanticHrefTitle.exec(s);r&&(s=r[1],o=r[3])}else o=e[3]?e[3].slice(1,-1):"";return s=s.trim(),this.rules.other.startAngleBracket.test(s)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(n)?s=s.slice(1):s=s.slice(1,-1)),ix(e,{href:s&&s.replace(this.rules.inline.anyPunctuation,"$1"),title:o&&o.replace(this.rules.inline.anyPunctuation,"$1")},e[0],this.lexer,this.rules)}}reflink(t,e){let n;if((n=this.rules.inline.reflink.exec(t))||(n=this.rules.inline.nolink.exec(t))){let s=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal," "),o=e[s.toLowerCase()];if(!o){let r=n[0].charAt(0);return{type:"text",raw:r,text:r}}return ix(n,o,n[0],this.lexer,this.rules)}}emStrong(t,e,n=""){let s=this.rules.inline.emStrongLDelim.exec(t);if(!(!s||s[3]&&n.match(this.rules.other.unicodeAlphaNumeric))&&(!(s[1]||s[2])||!n||this.rules.inline.punctuation.exec(n))){let o=[...s[0]].length-1,r,i,a=o,l=0,c=s[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(c.lastIndex=0,e=e.slice(-1*t.length+o);(s=c.exec(e))!=null;){if(r=s[1]||s[2]||s[3]||s[4]||s[5]||s[6],!r)continue;if(i=[...r].length,s[3]||s[4]){a+=i;continue}else if((s[5]||s[6])&&o%3&&!((o+i)%3)){l+=i;continue}if(a-=i,a>0)continue;i=Math.min(i,i+a+l);let d=[...s[0]][0].length,u=t.slice(0,o+s.index+d+i);if(Math.min(o,i)%2){let f=u.slice(1,-1);return{type:"em",raw:u,text:f,tokens:this.lexer.inlineTokens(f)}}let p=u.slice(2,-2);return{type:"strong",raw:u,text:p,tokens:this.lexer.inlineTokens(p)}}}}codespan(t){let e=this.rules.inline.code.exec(t);if(e){let n=e[2].replace(this.rules.other.newLineCharGlobal," "),s=this.rules.other.nonSpaceChar.test(n),o=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return s&&o&&(n=n.substring(1,n.length-1)),{type:"codespan",raw:e[0],text:n}}}br(t){let e=this.rules.inline.br.exec(t);if(e)return{type:"br",raw:e[0]}}del(t){let e=this.rules.inline.del.exec(t);if(e)return{type:"del",raw:e[0],text:e[2],tokens:this.lexer.inlineTokens(e[2])}}autolink(t){let e=this.rules.inline.autolink.exec(t);if(e){let n,s;return e[2]==="@"?(n=e[1],s="mailto:"+n):(n=e[1],s=n),{type:"link",raw:e[0],text:n,href:s,tokens:[{type:"text",raw:n,text:n}]}}}url(t){let e;if(e=this.rules.inline.url.exec(t)){let n,s;if(e[2]==="@")n=e[0],s="mailto:"+n;else{let o;do o=e[0],e[0]=this.rules.inline._backpedal.exec(e[0])?.[0]??"";while(o!==e[0]);n=e[0],e[1]==="www."?s="http://"+e[0]:s=e[0]}return{type:"link",raw:e[0],text:n,href:s,tokens:[{type:"text",raw:n,text:n}]}}}inlineText(t){let e=this.rules.inline.text.exec(t);if(e){let n=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:e[0],escaped:n}}}},xn=class Fd{tokens;options;state;tokenizer;inlineQueue;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||Qs,this.options.tokenizer=this.options.tokenizer||new Ya,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:Vt,block:Ja.normal,inline:Xr.normal};this.options.pedantic?(n.block=Ja.pedantic,n.inline=Xr.pedantic):this.options.gfm&&(n.block=Ja.gfm,this.options.breaks?n.inline=Xr.breaks:n.inline=Xr.gfm),this.tokenizer.rules=n}static get rules(){return{block:Ja,inline:Xr}}static lex(e,n){return new Fd(n).lex(e)}static lexInline(e,n){return new Fd(n).inlineTokens(e)}lex(e){e=e.replace(Vt.carriageReturn,` +`,t=t.substring(S.length+1),u=C.slice(g)}}o.loose||(i?o.loose=!0:this.rules.other.doubleBlankLine.test(c)&&(i=!0));let m=null,h;this.options.gfm&&(m=this.rules.other.listIsTask.exec(d),m&&(h=m[0]!=="[ ] ",d=d.replace(this.rules.other.listReplaceTask,""))),o.items.push({type:"list_item",raw:c,task:!!m,checked:h,loose:!1,text:d,tokens:[]}),o.raw+=c}let a=o.items.at(-1);if(a)a.raw=a.raw.trimEnd(),a.text=a.text.trimEnd();else return;o.raw=o.raw.trimEnd();for(let l=0;lu.type==="space"),d=c.length>0&&c.some(u=>this.rules.other.anyLine.test(u.raw));o.loose=d}if(o.loose)for(let l=0;l({text:a,tokens:this.lexer.inline(a),header:!1,align:r.align[l]})));return r}}lheading(t){let e=this.rules.block.lheading.exec(t);if(e)return{type:"heading",raw:e[0],depth:e[2].charAt(0)==="="?1:2,text:e[1],tokens:this.lexer.inline(e[1])}}paragraph(t){let e=this.rules.block.paragraph.exec(t);if(e){let n=e[1].charAt(e[1].length-1)===` +`?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:n,tokens:this.lexer.inline(n)}}}text(t){let e=this.rules.block.text.exec(t);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(t){let e=this.rules.inline.escape.exec(t);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(t){let e=this.rules.inline.tag.exec(t);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(t){let e=this.rules.inline.link.exec(t);if(e){let n=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(n)){if(!this.rules.other.endAngleBracket.test(n))return;let r=Qr(n.slice(0,-1),"\\");if((n.length-r.length)%2===0)return}else{let r=VC(e[2],"()");if(r===-2)return;if(r>-1){let i=(e[0].indexOf("!")===0?5:4)+e[1].length+r;e[2]=e[2].substring(0,r),e[0]=e[0].substring(0,i).trim(),e[3]=""}}let s=e[2],o="";if(this.options.pedantic){let r=this.rules.other.pedanticHrefTitle.exec(s);r&&(s=r[1],o=r[3])}else o=e[3]?e[3].slice(1,-1):"";return s=s.trim(),this.rules.other.startAngleBracket.test(s)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(n)?s=s.slice(1):s=s.slice(1,-1)),dx(e,{href:s&&s.replace(this.rules.inline.anyPunctuation,"$1"),title:o&&o.replace(this.rules.inline.anyPunctuation,"$1")},e[0],this.lexer,this.rules)}}reflink(t,e){let n;if((n=this.rules.inline.reflink.exec(t))||(n=this.rules.inline.nolink.exec(t))){let s=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal," "),o=e[s.toLowerCase()];if(!o){let r=n[0].charAt(0);return{type:"text",raw:r,text:r}}return dx(n,o,n[0],this.lexer,this.rules)}}emStrong(t,e,n=""){let s=this.rules.inline.emStrongLDelim.exec(t);if(!(!s||s[3]&&n.match(this.rules.other.unicodeAlphaNumeric))&&(!(s[1]||s[2])||!n||this.rules.inline.punctuation.exec(n))){let o=[...s[0]].length-1,r,i,a=o,l=0,c=s[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(c.lastIndex=0,e=e.slice(-1*t.length+o);(s=c.exec(e))!=null;){if(r=s[1]||s[2]||s[3]||s[4]||s[5]||s[6],!r)continue;if(i=[...r].length,s[3]||s[4]){a+=i;continue}else if((s[5]||s[6])&&o%3&&!((o+i)%3)){l+=i;continue}if(a-=i,a>0)continue;i=Math.min(i,i+a+l);let d=[...s[0]][0].length,u=t.slice(0,o+s.index+d+i);if(Math.min(o,i)%2){let f=u.slice(1,-1);return{type:"em",raw:u,text:f,tokens:this.lexer.inlineTokens(f)}}let p=u.slice(2,-2);return{type:"strong",raw:u,text:p,tokens:this.lexer.inlineTokens(p)}}}}codespan(t){let e=this.rules.inline.code.exec(t);if(e){let n=e[2].replace(this.rules.other.newLineCharGlobal," "),s=this.rules.other.nonSpaceChar.test(n),o=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return s&&o&&(n=n.substring(1,n.length-1)),{type:"codespan",raw:e[0],text:n}}}br(t){let e=this.rules.inline.br.exec(t);if(e)return{type:"br",raw:e[0]}}del(t){let e=this.rules.inline.del.exec(t);if(e)return{type:"del",raw:e[0],text:e[2],tokens:this.lexer.inlineTokens(e[2])}}autolink(t){let e=this.rules.inline.autolink.exec(t);if(e){let n,s;return e[2]==="@"?(n=e[1],s="mailto:"+n):(n=e[1],s=n),{type:"link",raw:e[0],text:n,href:s,tokens:[{type:"text",raw:n,text:n}]}}}url(t){let e;if(e=this.rules.inline.url.exec(t)){let n,s;if(e[2]==="@")n=e[0],s="mailto:"+n;else{let o;do o=e[0],e[0]=this.rules.inline._backpedal.exec(e[0])?.[0]??"";while(o!==e[0]);n=e[0],e[1]==="www."?s="http://"+e[0]:s=e[0]}return{type:"link",raw:e[0],text:n,href:s,tokens:[{type:"text",raw:n,text:n}]}}}inlineText(t){let e=this.rules.inline.text.exec(t);if(e){let n=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:e[0],escaped:n}}}},xn=class Hd{tokens;options;state;tokenizer;inlineQueue;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||Qs,this.options.tokenizer=this.options.tokenizer||new Ya,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:Vt,block:Ja.normal,inline:Xr.normal};this.options.pedantic?(n.block=Ja.pedantic,n.inline=Xr.pedantic):this.options.gfm&&(n.block=Ja.gfm,this.options.breaks?n.inline=Xr.breaks:n.inline=Xr.gfm),this.tokenizer.rules=n}static get rules(){return{block:Ja,inline:Xr}}static lex(e,n){return new Hd(n).lex(e)}static lexInline(e,n){return new Hd(n).inlineTokens(e)}lex(e){e=e.replace(Vt.carriageReturn,` `),this.blockTokens(e,this.tokens);for(let n=0;n(o=i.call({lexer:this},e,n))?(e=e.substring(o.raw.length),n.push(o),!0):!1))continue;if(o=this.tokenizer.space(e)){e=e.substring(o.raw.length);let i=n.at(-1);o.raw.length===1&&i!==void 0?i.raw+=` `:n.push(o);continue}if(o=this.tokenizer.code(e)){e=e.substring(o.raw.length);let i=n.at(-1);i?.type==="paragraph"||i?.type==="text"?(i.raw+=(i.raw.endsWith(` `)?"":` @@ -2580,9 +2614,9 @@ ${this.parser.parse(t)} `}tablerow({text:t}){return` ${t} `}tablecell(t){let e=this.parser.parseInline(t.tokens),n=t.header?"th":"td";return(t.align?`<${n} align="${t.align}">`:`<${n}>`)+e+` -`}strong({tokens:t}){return`${this.parser.parseInline(t)}`}em({tokens:t}){return`${this.parser.parseInline(t)}`}codespan({text:t}){return`${Ln(t,!0)}`}br(t){return"
    "}del({tokens:t}){return`${this.parser.parseInline(t)}`}link({href:t,title:e,tokens:n}){let s=this.parser.parseInline(n),o=ox(t);if(o===null)return s;t=o;let r='
    ",r}image({href:t,title:e,text:n,tokens:s}){s&&(n=this.parser.parseInline(s,this.parser.textRenderer));let o=ox(t);if(o===null)return Ln(n);t=o;let r=`${n}{let i=o[r].flat(1/0);n=n.concat(this.walkTokens(i,e))}):o.tokens&&(n=n.concat(this.walkTokens(o.tokens,e)))}}return n}use(...t){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return t.forEach(n=>{let s={...n};if(s.async=this.defaults.async||s.async||!1,n.extensions&&(n.extensions.forEach(o=>{if(!o.name)throw new Error("extension name required");if("renderer"in o){let r=e.renderers[o.name];r?e.renderers[o.name]=function(...i){let a=o.renderer.apply(this,i);return a===!1&&(a=r.apply(this,i)),a}:e.renderers[o.name]=o.renderer}if("tokenizer"in o){if(!o.level||o.level!=="block"&&o.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let r=e[o.level];r?r.unshift(o.tokenizer):e[o.level]=[o.tokenizer],o.start&&(o.level==="block"?e.startBlock?e.startBlock.push(o.start):e.startBlock=[o.start]:o.level==="inline"&&(e.startInline?e.startInline.push(o.start):e.startInline=[o.start]))}"childTokens"in o&&o.childTokens&&(e.childTokens[o.name]=o.childTokens)}),s.extensions=e),n.renderer){let o=this.defaults.renderer||new Xa(this.defaults);for(let r in n.renderer){if(!(r in o))throw new Error(`renderer '${r}' does not exist`);if(["options","parser"].includes(r))continue;let i=r,a=n.renderer[i],l=o[i];o[i]=(...c)=>{let d=a.apply(o,c);return d===!1&&(d=l.apply(o,c)),d||""}}s.renderer=o}if(n.tokenizer){let o=this.defaults.tokenizer||new Ya(this.defaults);for(let r in n.tokenizer){if(!(r in o))throw new Error(`tokenizer '${r}' does not exist`);if(["options","rules","lexer"].includes(r))continue;let i=r,a=n.tokenizer[i],l=o[i];o[i]=(...c)=>{let d=a.apply(o,c);return d===!1&&(d=l.apply(o,c)),d}}s.tokenizer=o}if(n.hooks){let o=this.defaults.hooks||new ei;for(let r in n.hooks){if(!(r in o))throw new Error(`hook '${r}' does not exist`);if(["options","block"].includes(r))continue;let i=r,a=n.hooks[i],l=o[i];ei.passThroughHooks.has(r)?o[i]=c=>{if(this.defaults.async&&ei.passThroughHooksRespectAsync.has(r))return(async()=>{let u=await a.call(o,c);return l.call(o,u)})();let d=a.call(o,c);return l.call(o,d)}:o[i]=(...c)=>{if(this.defaults.async)return(async()=>{let u=await a.apply(o,c);return u===!1&&(u=await l.apply(o,c)),u})();let d=a.apply(o,c);return d===!1&&(d=l.apply(o,c)),d}}s.hooks=o}if(n.walkTokens){let o=this.defaults.walkTokens,r=n.walkTokens;s.walkTokens=function(i){let a=[];return a.push(r.call(this,i)),o&&(a=a.concat(o.call(this,i))),a}}this.defaults={...this.defaults,...s}}),this}setOptions(t){return this.defaults={...this.defaults,...t},this}lexer(t,e){return xn.lex(t,e??this.defaults)}parser(t,e){return yn.parse(t,e??this.defaults)}parseMarkdown(t){return(e,n)=>{let s={...n},o={...this.defaults,...s},r=this.onError(!!o.silent,!!o.async);if(this.defaults.async===!0&&s.async===!1)return r(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||e===null)return r(new Error("marked(): input parameter is undefined or null"));if(typeof e!="string")return r(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));if(o.hooks&&(o.hooks.options=o,o.hooks.block=t),o.async)return(async()=>{let i=o.hooks?await o.hooks.preprocess(e):e,a=await(o.hooks?await o.hooks.provideLexer():t?xn.lex:xn.lexInline)(i,o),l=o.hooks?await o.hooks.processAllTokens(a):a;o.walkTokens&&await Promise.all(this.walkTokens(l,o.walkTokens));let c=await(o.hooks?await o.hooks.provideParser():t?yn.parse:yn.parseInline)(l,o);return o.hooks?await o.hooks.postprocess(c):c})().catch(r);try{o.hooks&&(e=o.hooks.preprocess(e));let i=(o.hooks?o.hooks.provideLexer():t?xn.lex:xn.lexInline)(e,o);o.hooks&&(i=o.hooks.processAllTokens(i)),o.walkTokens&&this.walkTokens(i,o.walkTokens);let a=(o.hooks?o.hooks.provideParser():t?yn.parse:yn.parseInline)(i,o);return o.hooks&&(a=o.hooks.postprocess(a)),a}catch(i){return r(i)}}}onError(t,e){return n=>{if(n.message+=` -Please report this to https://github.com/markedjs/marked.`,t){let s="

    An error occurred:

    "+Ln(n.message+"",!0)+"
    ";return e?Promise.resolve(s):s}if(e)return Promise.reject(n);throw n}}},Xs=new FC;function Le(t,e){return Xs.parse(t,e)}Le.options=Le.setOptions=function(t){return Xs.setOptions(t),Le.defaults=Xs.defaults,ax(Le.defaults),Le};Le.getDefaults=Wd;Le.defaults=Qs;Le.use=function(...t){return Xs.use(...t),Le.defaults=Xs.defaults,ax(Le.defaults),Le};Le.walkTokens=function(t,e){return Xs.walkTokens(t,e)};Le.parseInline=Xs.parseInline;Le.Parser=yn;Le.parser=yn.parse;Le.Renderer=Xa;Le.TextRenderer=Jd;Le.Lexer=xn;Le.lexer=xn.lex;Le.Tokenizer=Ya;Le.Hooks=ei;Le.parse=Le;var LD=Le.options,ED=Le.setOptions,ID=Le.use,DD=Le.walkTokens,ND=Le.parseInline;var OD=yn.parse,BD=xn.lex;var Vo=P.bind(T),HC=t=>{let e=String(t||"").trim();return e?e.startsWith("v")?e:`v${e}`:""},WC=t=>{let e=Date.parse(String(t||""));if(!Number.isFinite(e))return"";try{return new Intl.DateTimeFormat(void 0,{dateStyle:"medium",timeStyle:"short"}).format(new Date(e))}catch{return""}},VC=t=>t?`https://github.com/chrysb/alphaclaw/releases/tag/${encodeURIComponent(t)}`:"https://github.com/chrysb/alphaclaw/releases",xx=({visible:t=!1,onClose:e=()=>{},version:n="",onUpdate:s=()=>{},updating:o=!1})=>{let r=F(()=>HC(n),[n]),[i,a]=y(!1),[l,c]=y(""),[d,u]=y(null);L(()=>{if(!t)return;let x=!0;return(async()=>{a(!0),c("");try{let w=await gm(r);if(!x)return;if(!w?.ok){c(w?.error||"Could not load release notes"),u(null);return}u(w)}catch(w){if(!x)return;c(w?.message||"Could not load release notes"),u(null)}finally{if(!x)return;a(!1)}})(),()=>{x=!1}},[t,r]);let p=String(d?.tag||r||"").trim(),f=String(d?.htmlUrl||"").trim()||VC(p),g=p?`Update to ${p}`:"Update now",m=WC(d?.publishedAt),h=String(d?.body||"").trim(),b=F(()=>Le.parse(h,{gfm:!0,breaks:!0}),[h]);return Vo` +`}strong({tokens:t}){return`${this.parser.parseInline(t)}`}em({tokens:t}){return`${this.parser.parseInline(t)}`}codespan({text:t}){return`${Ln(t,!0)}`}br(t){return"
    "}del({tokens:t}){return`${this.parser.parseInline(t)}`}link({href:t,title:e,tokens:n}){let s=this.parser.parseInline(n),o=lx(t);if(o===null)return s;t=o;let r='
    ",r}image({href:t,title:e,text:n,tokens:s}){s&&(n=this.parser.parseInline(s,this.parser.textRenderer));let o=lx(t);if(o===null)return Ln(n);t=o;let r=`${n}{let i=o[r].flat(1/0);n=n.concat(this.walkTokens(i,e))}):o.tokens&&(n=n.concat(this.walkTokens(o.tokens,e)))}}return n}use(...t){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return t.forEach(n=>{let s={...n};if(s.async=this.defaults.async||s.async||!1,n.extensions&&(n.extensions.forEach(o=>{if(!o.name)throw new Error("extension name required");if("renderer"in o){let r=e.renderers[o.name];r?e.renderers[o.name]=function(...i){let a=o.renderer.apply(this,i);return a===!1&&(a=r.apply(this,i)),a}:e.renderers[o.name]=o.renderer}if("tokenizer"in o){if(!o.level||o.level!=="block"&&o.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let r=e[o.level];r?r.unshift(o.tokenizer):e[o.level]=[o.tokenizer],o.start&&(o.level==="block"?e.startBlock?e.startBlock.push(o.start):e.startBlock=[o.start]:o.level==="inline"&&(e.startInline?e.startInline.push(o.start):e.startInline=[o.start]))}"childTokens"in o&&o.childTokens&&(e.childTokens[o.name]=o.childTokens)}),s.extensions=e),n.renderer){let o=this.defaults.renderer||new Xa(this.defaults);for(let r in n.renderer){if(!(r in o))throw new Error(`renderer '${r}' does not exist`);if(["options","parser"].includes(r))continue;let i=r,a=n.renderer[i],l=o[i];o[i]=(...c)=>{let d=a.apply(o,c);return d===!1&&(d=l.apply(o,c)),d||""}}s.renderer=o}if(n.tokenizer){let o=this.defaults.tokenizer||new Ya(this.defaults);for(let r in n.tokenizer){if(!(r in o))throw new Error(`tokenizer '${r}' does not exist`);if(["options","rules","lexer"].includes(r))continue;let i=r,a=n.tokenizer[i],l=o[i];o[i]=(...c)=>{let d=a.apply(o,c);return d===!1&&(d=l.apply(o,c)),d}}s.tokenizer=o}if(n.hooks){let o=this.defaults.hooks||new ei;for(let r in n.hooks){if(!(r in o))throw new Error(`hook '${r}' does not exist`);if(["options","block"].includes(r))continue;let i=r,a=n.hooks[i],l=o[i];ei.passThroughHooks.has(r)?o[i]=c=>{if(this.defaults.async&&ei.passThroughHooksRespectAsync.has(r))return(async()=>{let u=await a.call(o,c);return l.call(o,u)})();let d=a.call(o,c);return l.call(o,d)}:o[i]=(...c)=>{if(this.defaults.async)return(async()=>{let u=await a.apply(o,c);return u===!1&&(u=await l.apply(o,c)),u})();let d=a.apply(o,c);return d===!1&&(d=l.apply(o,c)),d}}s.hooks=o}if(n.walkTokens){let o=this.defaults.walkTokens,r=n.walkTokens;s.walkTokens=function(i){let a=[];return a.push(r.call(this,i)),o&&(a=a.concat(o.call(this,i))),a}}this.defaults={...this.defaults,...s}}),this}setOptions(t){return this.defaults={...this.defaults,...t},this}lexer(t,e){return xn.lex(t,e??this.defaults)}parser(t,e){return yn.parse(t,e??this.defaults)}parseMarkdown(t){return(e,n)=>{let s={...n},o={...this.defaults,...s},r=this.onError(!!o.silent,!!o.async);if(this.defaults.async===!0&&s.async===!1)return r(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||e===null)return r(new Error("marked(): input parameter is undefined or null"));if(typeof e!="string")return r(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));if(o.hooks&&(o.hooks.options=o,o.hooks.block=t),o.async)return(async()=>{let i=o.hooks?await o.hooks.preprocess(e):e,a=await(o.hooks?await o.hooks.provideLexer():t?xn.lex:xn.lexInline)(i,o),l=o.hooks?await o.hooks.processAllTokens(a):a;o.walkTokens&&await Promise.all(this.walkTokens(l,o.walkTokens));let c=await(o.hooks?await o.hooks.provideParser():t?yn.parse:yn.parseInline)(l,o);return o.hooks?await o.hooks.postprocess(c):c})().catch(r);try{o.hooks&&(e=o.hooks.preprocess(e));let i=(o.hooks?o.hooks.provideLexer():t?xn.lex:xn.lexInline)(e,o);o.hooks&&(i=o.hooks.processAllTokens(i)),o.walkTokens&&this.walkTokens(i,o.walkTokens);let a=(o.hooks?o.hooks.provideParser():t?yn.parse:yn.parseInline)(i,o);return o.hooks&&(a=o.hooks.postprocess(a)),a}catch(i){return r(i)}}}onError(t,e){return n=>{if(n.message+=` +Please report this to https://github.com/markedjs/marked.`,t){let s="

    An error occurred:

    "+Ln(n.message+"",!0)+"
    ";return e?Promise.resolve(s):s}if(e)return Promise.reject(n);throw n}}},Xs=new zC;function Le(t,e){return Xs.parse(t,e)}Le.options=Le.setOptions=function(t){return Xs.setOptions(t),Le.defaults=Xs.defaults,ux(Le.defaults),Le};Le.getDefaults=Vd;Le.defaults=Qs;Le.use=function(...t){return Xs.use(...t),Le.defaults=Xs.defaults,ux(Le.defaults),Le};Le.walkTokens=function(t,e){return Xs.walkTokens(t,e)};Le.parseInline=Xs.parseInline;Le.Parser=yn;Le.parser=yn.parse;Le.Renderer=Xa;Le.TextRenderer=Zd;Le.Lexer=xn;Le.lexer=xn.lex;Le.Tokenizer=Ya;Le.Hooks=ei;Le.parse=Le;var FD=Le.options,HD=Le.setOptions,WD=Le.use,VD=Le.walkTokens,jD=Le.parseInline;var zD=yn.parse,UD=xn.lex;var Vo=P.bind(T),UC=t=>{let e=String(t||"").trim();return e?e.startsWith("v")?e:`v${e}`:""},KC=t=>{let e=Date.parse(String(t||""));if(!Number.isFinite(e))return"";try{return new Intl.DateTimeFormat(void 0,{dateStyle:"medium",timeStyle:"short"}).format(new Date(e))}catch{return""}},GC=t=>t?`https://github.com/chrysb/alphaclaw/releases/tag/${encodeURIComponent(t)}`:"https://github.com/chrysb/alphaclaw/releases",wx=({visible:t=!1,onClose:e=()=>{},version:n="",onUpdate:s=()=>{},updating:o=!1})=>{let r=F(()=>UC(n),[n]),[i,a]=y(!1),[l,c]=y(""),[d,u]=y(null);L(()=>{if(!t)return;let x=!0;return(async()=>{a(!0),c("");try{let w=await xm(r);if(!x)return;if(!w?.ok){c(w?.error||"Could not load release notes"),u(null);return}u(w)}catch(w){if(!x)return;c(w?.message||"Could not load release notes"),u(null)}finally{if(!x)return;a(!1)}})(),()=>{x=!1}},[t,r]);let p=String(d?.tag||r||"").trim(),f=String(d?.htmlUrl||"").trim()||GC(p),g=p?`Update to ${p}`:"Update now",m=KC(d?.publishedAt),h=String(d?.body||"").trim(),b=F(()=>Le.parse(h,{gfm:!0,breaks:!0}),[h]);return Vo` <${De} visible=${t} onClose=${e} @@ -2652,7 +2686,20 @@ Please report this to https://github.com/markedjs/marked.`,t){let s="

    An error />

    - `};var zC=t=>{if(!t)return{};try{let e=JSON.parse(t);return e&&typeof e=="object"?e:{}}catch{return{}}},Fe=()=>{try{let t=window.localStorage.getItem(Sd);return zC(t)}catch{return{}}},St=t=>{try{window.localStorage.setItem(Sd,JSON.stringify(t&&typeof t=="object"?t:{}))}catch{}},yx=t=>{let e=Fe(),n=t(e);return St(n),n};var En=P.bind(T),kx="browseBottomPanelHeightPx",jC=120,vx=120,UC=6,$x=260,KC={cron:Ta,usage:cb,doctor:gb,watchdog:bb,models:_a,envars:Ma,webhooks:db,nodes:Pa},GC=()=>{try{let t=Fe(),e=Number.parseInt(String(t?.[kx]||""),10);return Number.isFinite(e)&&e>0?e:$x}catch{return $x}},wx=({item:t,selectedNavId:e,onSelectNavItem:n})=>{let s=KC[t.id]||null;return En` + `};var qC=t=>{if(!t)return{};try{let e=JSON.parse(t);return e&&typeof e=="object"?e:{}}catch{return{}}},Fe=()=>{try{let t=window.localStorage.getItem(Sd);return qC(t)}catch{return{}}},St=t=>{try{window.localStorage.setItem(Sd,JSON.stringify(t&&typeof t=="object"?t:{}))}catch{}},kx=t=>{let e=Fe(),n=t(e);return St(n),n};var Yd=P.bind(T),JC=()=>{try{let t=localStorage.getItem(Cd);if(t)return t}catch{}return window.matchMedia("(prefers-color-scheme: light)").matches?"light":"dark"},ZC=t=>{document.documentElement.dataset.theme=t;try{localStorage.setItem(Cd,t)}catch{}},Sx=()=>{let[t,e]=y(JC);return Yd` + + `};var En=P.bind(T),Ax="browseBottomPanelHeightPx",YC=120,Cx=120,XC=6,_x=260,QC={cron:Ta,usage:ub,doctor:xb,watchdog:yb,models:_a,envars:Ma,webhooks:pb,nodes:Pa},e2=()=>{try{let t=Fe(),e=Number.parseInt(String(t?.[Ax]||""),10);return Number.isFinite(e)&&e>0?e:_x}catch{return _x}},Mx=({item:t,selectedNavId:e,onSelectNavItem:n})=>{let s=QC[t.id]||null;return En` n(t.id)} @@ -2660,11 +2707,13 @@ Please report this to https://github.com/markedjs/marked.`,t){let s="

    An error ${s?En`<${s} className="sidebar-nav-icon" />`:null} ${t.label} - `},qC=t=>String(t?.identity?.emoji||"").trim(),Sx=({mobileSidebarOpen:t=!1,authEnabled:e=!1,menuRef:n=null,menuOpen:s=!1,onToggleMenu:o=()=>{},onLogout:r=()=>{},sidebarTab:i="menu",onSelectSidebarTab:a=()=>{},navSections:l=[],selectedNavId:c="",onSelectNavItem:d=()=>{},selectedBrowsePath:u="",onSelectBrowseFile:p=()=>{},onPreviewBrowseFile:f=()=>{},acHasUpdate:g=!1,acLatest:m="",acUpdating:h=!1,onAcUpdate:b=()=>{},agents:x=[],selectedAgentId:v="",onSelectAgent:w=()=>{},onAddAgent:$=()=>{}})=>{let S=ee(null),C=ee(null),_=ee({startY:0,startHeight:0}),[k,A]=y(GC),[O,D]=y(!1),[j,E]=y(!1);L(()=>{let W=Fe();W[kx]=k,St(W)},[k]);let M=W=>{let G=S.current;if(!G)return W;let se=G.getBoundingClientRect(),K=Math.max(vx,se.height-jC-UC);return Math.max(vx,Math.min(K,W))},R=W=>{let{startY:G,startHeight:se}=_.current,K=se+(G-W);A(M(K))};L(()=>{let W=S.current;if(!W||typeof ResizeObserver>"u")return()=>{};let G=new ResizeObserver(()=>{W.getBoundingClientRect().height<=0||A(K=>M(K))});return G.observe(W),()=>G.disconnect()},[]),L(()=>{if(!O)return()=>{};let W=se=>R(se.clientY),G=()=>D(!1);return window.addEventListener("pointermove",W),window.addEventListener("pointerup",G),()=>{window.removeEventListener("pointermove",W),window.removeEventListener("pointerup",G)}},[O]);let B=W=>{W.preventDefault();let G=C.current?.getBoundingClientRect().height||k;_.current={startY:W.clientY,startHeight:G},A(M(G)),D(!0)},I=l.find(W=>W.label==="Setup")||null,U=l.filter(W=>W.label!=="Setup");return En` + `},t2=t=>String(t?.identity?.emoji||"").trim(),Tx=({mobileSidebarOpen:t=!1,authEnabled:e=!1,menuRef:n=null,menuOpen:s=!1,onToggleMenu:o=()=>{},onLogout:r=()=>{},sidebarTab:i="menu",onSelectSidebarTab:a=()=>{},navSections:l=[],selectedNavId:c="",onSelectNavItem:d=()=>{},selectedBrowsePath:u="",onSelectBrowseFile:p=()=>{},onPreviewBrowseFile:f=()=>{},acHasUpdate:g=!1,acLatest:m="",acUpdating:h=!1,onAcUpdate:b=()=>{},agents:x=[],selectedAgentId:v="",onSelectAgent:w=()=>{},onAddAgent:$=()=>{}})=>{let S=ee(null),C=ee(null),_=ee({startY:0,startHeight:0}),[k,A]=y(e2),[O,D]=y(!1),[z,E]=y(!1);L(()=>{let W=Fe();W[Ax]=k,St(W)},[k]);let M=W=>{let G=S.current;if(!G)return W;let se=G.getBoundingClientRect(),K=Math.max(Cx,se.height-YC-XC);return Math.max(Cx,Math.min(K,W))},R=W=>{let{startY:G,startHeight:se}=_.current,K=se+(G-W);A(M(K))};L(()=>{let W=S.current;if(!W||typeof ResizeObserver>"u")return()=>{};let G=new ResizeObserver(()=>{W.getBoundingClientRect().height<=0||A(K=>M(K))});return G.observe(W),()=>G.disconnect()},[]),L(()=>{if(!O)return()=>{};let W=se=>R(se.clientY),G=()=>D(!1);return window.addEventListener("pointermove",W),window.addEventListener("pointerup",G),()=>{window.removeEventListener("pointermove",W),window.removeEventListener("pointerup",G)}},[O]);let B=W=>{W.preventDefault();let G=C.current?.getBoundingClientRect().height||k;_.current={startY:W.clientY,startHeight:G},A(M(G)),D(!0)},I=l.find(W=>W.label==="Setup")||null,U=l.filter(W=>W.label!=="Setup");return En`

    Menu
    `:null} - <${xx} - visible=${j} + <${wx} + visible=${z} onClose=${()=>{h||E(!1)}} version=${m} onUpdate=${b} updating=${h} />
    -`};var Cx=P.bind(T),JC="inline-flex items-center rounded-full border px-3 py-1.5 text-xs font-medium transition-colors",ZC="border-cyan-500/40 bg-cyan-500/10 text-status-info shadow-[0_0_0_1px_rgba(34,211,238,0.08)]",YC="border-border bg-field text-fg-muted hover:border-fg-muted hover:text-body",_x=({tabs:t=[],activeTab:e="",onSelectTab:n=()=>{},className:s="flex items-center gap-2"}={})=>Cx` +`};var Px=P.bind(T),n2="inline-flex items-center rounded-full border px-3 py-1.5 text-xs font-medium transition-colors",s2="border-cyan-500/40 bg-cyan-500/10 text-status-info shadow-[0_0_0_1px_rgba(34,211,238,0.08)]",o2="border-border bg-field text-fg-muted hover:border-fg-muted hover:text-body",Rx=({tabs:t=[],activeTab:e="",onSelectTab:n=()=>{},className:s="flex items-center gap-2"}={})=>Px`
    - ${t.map(o=>Cx` + ${t.map(o=>Px` `)}
    -`;var XC=P.bind(T),QC=260,e2=200,Qn=({visible:t=!1,className:e="",children:n})=>{let[s,o]=y(t?"visible":"hidden"),r=ee(null),i=ee(null);return L(()=>(clearTimeout(r.current),clearTimeout(i.current),t?s!=="visible"&&(o("entering"),r.current=setTimeout(()=>o("visible"),QC)):s!=="hidden"&&(o("exiting"),i.current=setTimeout(()=>o("hidden"),e2)),()=>{clearTimeout(r.current),clearTimeout(i.current)}),[t,s]),XC` +`;var r2=P.bind(T),i2=260,a2=200,Qn=({visible:t=!1,className:e="",children:n})=>{let[s,o]=y(t?"visible":"hidden"),r=ee(null),i=ee(null);return L(()=>(clearTimeout(r.current),clearTimeout(i.current),t?s!=="visible"&&(o("entering"),r.current=setTimeout(()=>o("visible"),i2)):s!=="hidden"&&(o("exiting"),i.current=setTimeout(()=>o("hidden"),a2)),()=>{clearTimeout(r.current),clearTimeout(i.current)}),[t,s]),r2`
    ${n}
    - `};var nn=P.bind(T),t2=({item:t={},menuOpenId:e="",setMenuOpenId:n=()=>{},openDeleteChannelDialog:s=()=>{},openEditChannelModal:o=()=>{},requestBindAccount:r=()=>{},onSetLocation:i=()=>{}})=>{let{accountData:a={},accountId:l="",accountStatusInfo:c={},canNavigateToOwnerAgent:d=!1,channel:u="",ownerAgentId:p="",ownerAgentName:f="",isAvailable:g=!1,isOwned:m=!1}=t,h=null;m?h=c?.status==="paired"?nn`<${Ks} + `};var nn=P.bind(T),l2=({item:t={},menuOpenId:e="",setMenuOpenId:n=()=>{},openDeleteChannelDialog:s=()=>{},openEditChannelModal:o=()=>{},requestBindAccount:r=()=>{},onSetLocation:i=()=>{}})=>{let{accountData:a={},accountId:l="",accountStatusInfo:c={},canNavigateToOwnerAgent:d=!1,channel:u="",ownerAgentId:p="",ownerAgentName:f="",isAvailable:g=!1,isOwned:m=!1}=t,h=null;m?h=c?.status==="paired"?nn`<${Ks} status=${c?.status} ownerAgentName=${f} showAgentBadge=${!0} @@ -2876,7 +2926,7 @@ Please report this to https://github.com/markedjs/marked.`,t){let s="

    An error `:null}

    - `},Mx=({item:t={},channelMeta:e={},menuOpenId:n="",setMenuOpenId:s=()=>{},openDeleteChannelDialog:o=()=>{},openEditChannelModal:r=()=>{},requestBindAccount:i=()=>{},onSetLocation:a=()=>{}})=>{let l=!!t?.canOpenWorkspace,c=String(t?.accountId||"").trim()||"default";return nn` + `},Lx=({item:t={},channelMeta:e={},menuOpenId:n="",setMenuOpenId:s=()=>{},openDeleteChannelDialog:o=()=>{},openEditChannelModal:r=()=>{},requestBindAccount:i=()=>{},onSetLocation:a=()=>{}})=>{let l=!!t?.canOpenWorkspace,c=String(t?.accountId||"").trim()||"default";return nn`
    - <${t2} + <${l2} item=${t} menuOpenId=${n} setMenuOpenId=${s} @@ -2925,18 +2975,18 @@ Please report this to https://github.com/markedjs/marked.`,t){let s="

    An error />

    - `};var si=t=>{window.dispatchEvent(new CustomEvent("alphaclaw:agent-bindings-changed",{detail:{agentId:String(t||"").trim()}}))},Ax=()=>{window.dispatchEvent(new CustomEvent("alphaclaw:restart-required"))};var Zd=(t={})=>t.isAwaitingPairing?99:t.isOwned?0:t.isUnconfigured?3:t.isAvailable?1:2,n2=({statusInfo:t,accountId:e})=>{let n=String(e||"").trim()||"default",s=t?.accounts&&typeof t.accounts=="object"?t.accounts:null;return s?.[n]?s[n]:n==="default"&&t?t:null},Tx=({account:t,statusInfo:e,accountId:n})=>{let s=String(t?.status||"").trim();return s?{status:s,paired:Number(t?.paired||0)}:n2({statusInfo:e,accountId:n})};var Px=({accountId:t,boundAgentId:e,agentId:n,isDefaultAgent:s})=>{let o=String(e||"").trim();return o?o===String(n||"").trim():gs({accountId:t,boundAgentId:e})?!!s:!0};var Rx=({agent:t={},agents:e=[]})=>{let[n,s]=y([]),[o,r]=y({}),[i,a]=y(!0),[l,c]=y(!1),[d,u]=y("Creating..."),[p,f]=y(!1),[g,m]=y(""),[h,b]=y(""),[x,v]=y(null),[w,$]=y(null),[S,C]=y(null),_=String(t?.id||"").trim(),k=!!t?.default,A=F(()=>String(e.find(K=>K?.default)?.id||"").trim(),[e]),O=F(()=>new Map(e.map(K=>[String(K?.id||"").trim(),String(K?.name||"").trim()||String(K?.id||"").trim()])),[e]),D=q(async({includeStatus:K=!0}={})=>{a(!0);try{let z=[To(),K?So():Promise.resolve(null)],[X,de]=await Promise.all(z);s(Array.isArray(X?.channels)?X.channels:[]),K&&de&&r(de?.channels||{})}finally{a(!1)}},[]);L(()=>{_&&D().catch(()=>{})},[_,D]),L(()=>{let K=z=>{let X=String(z?.detail?.agentId||"").trim();X&&X!==_||D({includeStatus:!0}).catch(()=>{})};return window.addEventListener("alphaclaw:pairings-changed",K),()=>{window.removeEventListener("alphaclaw:pairings-changed",K)}},[_,D]);let j=F(()=>n.filter(K=>String(K?.channel||"").trim()&&Array.isArray(K?.accounts)&&K.accounts.length>0),[n]),E=F(()=>new Map(j.map(K=>[String(K.channel||"").trim(),K])),[j]),M=(K="")=>{b(""),m(String(K||"").trim()),f(!0)},R=K=>{b(""),v(K)},B=K=>{b(""),$(K)},I=async K=>{c(!0),u("Creating...");try{let z=await Ea({payload:K,onPhase:X=>{u(String(X||"").trim()||"Creating...")}});si(String(z?.binding?.agentId||K.agentId||"").trim()),N("Channel added","success"),await D({includeStatus:!1}),f(!1),m("")}catch(z){N(z.message||"Could not add channel","error")}finally{c(!1),u("Creating...")}},U=async K=>{c(!0);try{let z=await Fr(K);v(null),si(String(K.agentId||"").trim()),N("Channel updated","success"),z?.restartRequired&&Ax(),await D()}catch(z){N(z.message||"Could not update channel","error")}finally{c(!1)}},W=async()=>{if(w){c(!0);try{await $a({provider:w.provider,accountId:w.id}),$(null),si(_),N("Channel deleted","success"),await D({includeStatus:!1})}catch(K){N(K.message||"Could not delete channel","error")}finally{c(!1)}}},G=async K=>{if(K){c(!0);try{await Fr({provider:K.provider,accountId:K.id,name:K.name,agentId:_}),b(""),C(null),si(_),N("Channel bound","success"),await D()}catch(z){N(z.message||"Could not bind channel","error")}finally{c(!1)}}};return{agentId:_,agentNameMap:O,channelStatus:o,channels:n,configuredChannelMap:E,configuredChannels:j,createLoadingLabel:d,createProvider:g,defaultAgentId:A,deletingAccount:w,editingAccount:x,handleCreateChannel:I,handleDeleteChannel:W,handleQuickBind:G,handleUpdateChannel:U,isDefaultAgent:k,loading:i,menuOpenId:h,openCreateChannelModal:M,openDeleteChannelDialog:B,openEditChannelModal:R,pendingBindAccount:S,requestBindAccount:K=>{if(!K)return;let z=String(K?.ownerAgentId||"").trim(),X=String(K?.ownerAgentName||"").trim();if(z&&z!==_&&X){b(""),C(K);return}G(K)},saving:l,setCreateProvider:m,setDeletingAccount:$,setEditingAccount:v,setMenuOpenId:b,setPendingBindAccount:C,setShowCreateModal:f,showCreateModal:p}};var Lx=P.bind(T),Ex=({agentId:t="",agentNameMap:e=new Map,channelStatus:n={},configuredChannelMap:s=new Map,configuredChannels:o=[],defaultAgentId:r="",isDefaultAgent:i=!1})=>{let[a,l]=y(!1),c=F(()=>{let f=new Map(o.map((h,b)=>[String(h?.channel||"").trim(),b])),g=new Map(o.flatMap(h=>(Array.isArray(h?.accounts)?h.accounts:[]).map((b,x)=>[`${String(h?.channel||"").trim()}:${String(b?.id||"").trim()||"default"}`,x])));return Array.from(new Set([...o.map(h=>String(h.channel||"").trim())])).filter(Boolean).flatMap(h=>{let b=s.get(h),x=n?.[h]||null,v=Array.isArray(b?.accounts)?b.accounts:[];return!b&&!x?[]:v.map(w=>{let $=String(w?.id||"").trim()||"default",S=String(w?.boundAgentId||"").trim(),C=Tx({account:w,statusInfo:x,accountId:$}),_=i&&gs({accountId:$,boundAgentId:S}),k=S===t||_,A=!i&&gs({accountId:$,boundAgentId:S}),O=Px({accountId:$,boundAgentId:S,agentId:t,isDefaultAgent:i}),D=S||(gs({accountId:$,boundAgentId:S})?r:""),j=String(e.get(D)||D||"").trim(),E=!!D&&D!==t&&!!j,M=h==="telegram"&&k&&C?.status==="paired",R={id:$,provider:h,name:qs({channelId:h,account:w}),rawName:String(w?.name||"").trim(),ownerAgentId:D,ownerAgentName:j,boundAgentId:S,isOwned:k,envKey:String(w?.envKey||"").trim(),token:String(w?.token||"").trim(),isAvailable:O,isBoundElsewhere:!k&&(!O||A||!!D)};return{id:`${h}:${$}`,channel:h,accountId:$,channelOrder:Number(f.get(h)??9999),accountOrder:Number(g.get(`${h}:${$}`)??9999),label:qs({channelId:h,account:w}),isAwaitingPairing:C?.status!=="paired",canOpenWorkspace:M,canNavigateToOwnerAgent:E,ownerAgentId:D,ownerAgentName:j,accountStatusInfo:C,accountData:R,isOwned:k,isAvailable:O,dimmedLabel:R.isBoundElsewhere,isBoundElsewhere:R.isBoundElsewhere}})}).filter(Boolean).sort((h,b)=>{let x=Zd(h)-Zd(b);if(x!==0)return x;let v=Number(h?.channelOrder??9999)-Number(b?.channelOrder??9999);if(v!==0)return v;let w=Number(h?.accountOrder??9999)-Number(b?.accountOrder??9999);return w!==0?w:String(h?.label||"").localeCompare(String(b?.label||""))})},[t,e,n,s,o,r,i]),d=c.filter(f=>!f?.isBoundElsewhere),u=c.filter(f=>!!f?.isBoundElsewhere);return L(()=>{if(u.length===0){l(!1);return}d.length===0&&l(!0)},[t,u.length,d.length]),{mergedChannelItems:F(()=>{let f=[...d];return u.length===0||(f.push({id:"__assigned_elsewhere_toggle",label:Lx` + `};var si=t=>{window.dispatchEvent(new CustomEvent("alphaclaw:agent-bindings-changed",{detail:{agentId:String(t||"").trim()}}))},Ex=()=>{window.dispatchEvent(new CustomEvent("alphaclaw:restart-required"))};var Xd=(t={})=>t.isAwaitingPairing?99:t.isOwned?0:t.isUnconfigured?3:t.isAvailable?1:2,c2=({statusInfo:t,accountId:e})=>{let n=String(e||"").trim()||"default",s=t?.accounts&&typeof t.accounts=="object"?t.accounts:null;return s?.[n]?s[n]:n==="default"&&t?t:null},Ix=({account:t,statusInfo:e,accountId:n})=>{let s=String(t?.status||"").trim();return s?{status:s,paired:Number(t?.paired||0)}:c2({statusInfo:e,accountId:n})};var Dx=({accountId:t,boundAgentId:e,agentId:n,isDefaultAgent:s})=>{let o=String(e||"").trim();return o?o===String(n||"").trim():gs({accountId:t,boundAgentId:e})?!!s:!0};var Nx=({agent:t={},agents:e=[]})=>{let[n,s]=y([]),[o,r]=y({}),[i,a]=y(!0),[l,c]=y(!1),[d,u]=y("Creating..."),[p,f]=y(!1),[g,m]=y(""),[h,b]=y(""),[x,v]=y(null),[w,$]=y(null),[S,C]=y(null),_=String(t?.id||"").trim(),k=!!t?.default,A=F(()=>String(e.find(K=>K?.default)?.id||"").trim(),[e]),O=F(()=>new Map(e.map(K=>[String(K?.id||"").trim(),String(K?.name||"").trim()||String(K?.id||"").trim()])),[e]),D=q(async({includeStatus:K=!0}={})=>{a(!0);try{let j=[To(),K?So():Promise.resolve(null)],[X,de]=await Promise.all(j);s(Array.isArray(X?.channels)?X.channels:[]),K&&de&&r(de?.channels||{})}finally{a(!1)}},[]);L(()=>{_&&D().catch(()=>{})},[_,D]),L(()=>{let K=j=>{let X=String(j?.detail?.agentId||"").trim();X&&X!==_||D({includeStatus:!0}).catch(()=>{})};return window.addEventListener("alphaclaw:pairings-changed",K),()=>{window.removeEventListener("alphaclaw:pairings-changed",K)}},[_,D]);let z=F(()=>n.filter(K=>String(K?.channel||"").trim()&&Array.isArray(K?.accounts)&&K.accounts.length>0),[n]),E=F(()=>new Map(z.map(K=>[String(K.channel||"").trim(),K])),[z]),M=(K="")=>{b(""),m(String(K||"").trim()),f(!0)},R=K=>{b(""),v(K)},B=K=>{b(""),$(K)},I=async K=>{c(!0),u("Creating...");try{let j=await Ea({payload:K,onPhase:X=>{u(String(X||"").trim()||"Creating...")}});si(String(j?.binding?.agentId||K.agentId||"").trim()),N("Channel added","success"),await D({includeStatus:!1}),f(!1),m("")}catch(j){N(j.message||"Could not add channel","error")}finally{c(!1),u("Creating...")}},U=async K=>{c(!0);try{let j=await Fr(K);v(null),si(String(K.agentId||"").trim()),N("Channel updated","success"),j?.restartRequired&&Ex(),await D()}catch(j){N(j.message||"Could not update channel","error")}finally{c(!1)}},W=async()=>{if(w){c(!0);try{await $a({provider:w.provider,accountId:w.id}),$(null),si(_),N("Channel deleted","success"),await D({includeStatus:!1})}catch(K){N(K.message||"Could not delete channel","error")}finally{c(!1)}}},G=async K=>{if(K){c(!0);try{await Fr({provider:K.provider,accountId:K.id,name:K.name,agentId:_}),b(""),C(null),si(_),N("Channel bound","success"),await D()}catch(j){N(j.message||"Could not bind channel","error")}finally{c(!1)}}};return{agentId:_,agentNameMap:O,channelStatus:o,channels:n,configuredChannelMap:E,configuredChannels:z,createLoadingLabel:d,createProvider:g,defaultAgentId:A,deletingAccount:w,editingAccount:x,handleCreateChannel:I,handleDeleteChannel:W,handleQuickBind:G,handleUpdateChannel:U,isDefaultAgent:k,loading:i,menuOpenId:h,openCreateChannelModal:M,openDeleteChannelDialog:B,openEditChannelModal:R,pendingBindAccount:S,requestBindAccount:K=>{if(!K)return;let j=String(K?.ownerAgentId||"").trim(),X=String(K?.ownerAgentName||"").trim();if(j&&j!==_&&X){b(""),C(K);return}G(K)},saving:l,setCreateProvider:m,setDeletingAccount:$,setEditingAccount:v,setMenuOpenId:b,setPendingBindAccount:C,setShowCreateModal:f,showCreateModal:p}};var Ox=P.bind(T),Bx=({agentId:t="",agentNameMap:e=new Map,channelStatus:n={},configuredChannelMap:s=new Map,configuredChannels:o=[],defaultAgentId:r="",isDefaultAgent:i=!1})=>{let[a,l]=y(!1),c=F(()=>{let f=new Map(o.map((h,b)=>[String(h?.channel||"").trim(),b])),g=new Map(o.flatMap(h=>(Array.isArray(h?.accounts)?h.accounts:[]).map((b,x)=>[`${String(h?.channel||"").trim()}:${String(b?.id||"").trim()||"default"}`,x])));return Array.from(new Set([...o.map(h=>String(h.channel||"").trim())])).filter(Boolean).flatMap(h=>{let b=s.get(h),x=n?.[h]||null,v=Array.isArray(b?.accounts)?b.accounts:[];return!b&&!x?[]:v.map(w=>{let $=String(w?.id||"").trim()||"default",S=String(w?.boundAgentId||"").trim(),C=Ix({account:w,statusInfo:x,accountId:$}),_=i&&gs({accountId:$,boundAgentId:S}),k=S===t||_,A=!i&&gs({accountId:$,boundAgentId:S}),O=Dx({accountId:$,boundAgentId:S,agentId:t,isDefaultAgent:i}),D=S||(gs({accountId:$,boundAgentId:S})?r:""),z=String(e.get(D)||D||"").trim(),E=!!D&&D!==t&&!!z,M=h==="telegram"&&k&&C?.status==="paired",R={id:$,provider:h,name:qs({channelId:h,account:w}),rawName:String(w?.name||"").trim(),ownerAgentId:D,ownerAgentName:z,boundAgentId:S,isOwned:k,envKey:String(w?.envKey||"").trim(),token:String(w?.token||"").trim(),isAvailable:O,isBoundElsewhere:!k&&(!O||A||!!D)};return{id:`${h}:${$}`,channel:h,accountId:$,channelOrder:Number(f.get(h)??9999),accountOrder:Number(g.get(`${h}:${$}`)??9999),label:qs({channelId:h,account:w}),isAwaitingPairing:C?.status!=="paired",canOpenWorkspace:M,canNavigateToOwnerAgent:E,ownerAgentId:D,ownerAgentName:z,accountStatusInfo:C,accountData:R,isOwned:k,isAvailable:O,dimmedLabel:R.isBoundElsewhere,isBoundElsewhere:R.isBoundElsewhere}})}).filter(Boolean).sort((h,b)=>{let x=Xd(h)-Xd(b);if(x!==0)return x;let v=Number(h?.channelOrder??9999)-Number(b?.channelOrder??9999);if(v!==0)return v;let w=Number(h?.accountOrder??9999)-Number(b?.accountOrder??9999);return w!==0?w:String(h?.label||"").localeCompare(String(b?.label||""))})},[t,e,n,s,o,r,i]),d=c.filter(f=>!f?.isBoundElsewhere),u=c.filter(f=>!!f?.isBoundElsewhere);return L(()=>{if(u.length===0){l(!1);return}d.length===0&&l(!0)},[t,u.length,d.length]),{mergedChannelItems:F(()=>{let f=[...d];return u.length===0||(f.push({id:"__assigned_elsewhere_toggle",label:Ox` Assigned elsewhere - `,labelClassName:"text-xs",clickable:!0,onClick:()=>l(g=>!g),dimmedLabel:!0,trailing:Lx` + `,labelClassName:"text-xs",clickable:!0,onClick:()=>l(g=>!g),dimmedLabel:!0,trailing:Ox` ${u.length} - `}),a&&f.push(...u)),f},[u,a,d])}};var eo=P.bind(T),Ix=({agent:t={},agents:e=[],onSetLocation:n=()=>{}})=>{let{agentId:s,agentNameMap:o,channelStatus:r,channels:i,configuredChannelMap:a,configuredChannels:l,createLoadingLabel:c,createProvider:d,defaultAgentId:u,deletingAccount:p,editingAccount:f,handleCreateChannel:g,handleDeleteChannel:m,handleQuickBind:h,handleUpdateChannel:b,isDefaultAgent:x,loading:v,menuOpenId:w,openCreateChannelModal:$,openDeleteChannelDialog:S,openEditChannelModal:C,pendingBindAccount:_,requestBindAccount:k,saving:A,setCreateProvider:O,setDeletingAccount:D,setEditingAccount:j,setMenuOpenId:E,setPendingBindAccount:M,setShowCreateModal:R,showCreateModal:B}=Rx({agent:t,agents:e}),{mergedChannelItems:I}=Ex({agentId:s,agentNameMap:o,channelStatus:r,configuredChannelMap:a,configuredChannels:l,defaultAgentId:u,isDefaultAgent:x});return eo` + `}),a&&f.push(...u)),f},[u,a,d])}};var eo=P.bind(T),Fx=({agent:t={},agents:e=[],onSetLocation:n=()=>{}})=>{let{agentId:s,agentNameMap:o,channelStatus:r,channels:i,configuredChannelMap:a,configuredChannels:l,createLoadingLabel:c,createProvider:d,defaultAgentId:u,deletingAccount:p,editingAccount:f,handleCreateChannel:g,handleDeleteChannel:m,handleQuickBind:h,handleUpdateChannel:b,isDefaultAgent:x,loading:v,menuOpenId:w,openCreateChannelModal:$,openDeleteChannelDialog:S,openEditChannelModal:C,pendingBindAccount:_,requestBindAccount:k,saving:A,setCreateProvider:O,setDeletingAccount:D,setEditingAccount:z,setMenuOpenId:E,setPendingBindAccount:M,setShowCreateModal:R,showCreateModal:B}=Nx({agent:t,agents:e}),{mergedChannelItems:I}=Bx({agentId:s,agentNameMap:o,channelStatus:r,configuredChannelMap:a,configuredChannels:l,defaultAgentId:u,isDefaultAgent:x});return eo`
    ${v?eo` <${Oa} @@ -2966,7 +3016,7 @@ Please report this to https://github.com/markedjs/marked.`,t){let s="

    An error title="Channels" items=${I} loadingLabel="No channels assigned to this agent." - renderItem=${({item:U,channelMeta:W})=>String(U?.id||"").trim()==="__assigned_elsewhere_toggle"?null:eo`<${Mx} + renderItem=${({item:U,channelMeta:W})=>String(U?.id||"").trim()==="__assigned_elsewhere_toggle"?null:eo`<${Lx} item=${U} channelMeta=${W} menuOpenId=${w} @@ -3011,7 +3061,7 @@ Please report this to https://github.com/markedjs/marked.`,t){let s="

    An error account=${f} initialAgentId=${String(f?.ownerAgentId||s||"").trim()} initialProvider=${String(f?.provider||"").trim()} - onClose=${()=>j(null)} + onClose=${()=>z(null)} onSubmit=${b} /> <${st} @@ -3042,7 +3092,7 @@ Please report this to https://github.com/markedjs/marked.`,t){let s="

    An error onCancel=${()=>{A||D(null)}} />

    - `};var ys=P.bind(T),s2=({p:t,onApprove:e,onReject:n})=>{let[s,o]=y(null),r=async d=>{o(d);try{d==="approve"?await e(t.id,t.channel,t.accountId):await n(t.id,t.channel,t.accountId)}catch{o(null)}},i=(t.channel||"unknown").charAt(0).toUpperCase()+(t.channel||"").slice(1),a=String(t.accountId||"").trim(),l=String(t.accountName||"").trim(),c=a&&a!=="default"?` \xB7 ${l||a}`:"";return s==="approve"?ys` + `};var ys=P.bind(T),d2=({p:t,onApprove:e,onReject:n})=>{let[s,o]=y(null),r=async d=>{o(d);try{d==="approve"?await e(t.id,t.channel,t.accountId):await n(t.id,t.channel,t.accountId)}catch{o(null)}},i=(t.channel||"unknown").charAt(0).toUpperCase()+(t.channel||"").slice(1),a=String(t.accountId||"").trim(),l=String(t.accountName||"").trim(),c=a&&a!=="default"?` \xB7 ${l||a}`:"";return s==="approve"?ys`
    Approved ${i}${c} · ${t.code||t.id||"?"} @@ -3069,11 +3119,11 @@ Please report this to https://github.com/markedjs/marked.`,t){let s="

    An error className="font-medium px-3 py-1.5" />

    -
    `},o2=["telegram","discord","slack"],r2=t=>t.charAt(0).toUpperCase()+t.slice(1);function tl({pending:t,channels:e,visible:n,onApprove:s,onReject:o,statusRefreshing:r=!1}){if(!n)return null;let i=o2.filter(l=>{let c=e?.[l];if(!c)return!1;let d=c.accounts&&typeof c.accounts=="object"?c.accounts:{};return Object.keys(d).length>0?Object.values(d).some(u=>u&&u.status!=="paired"):c.status!=="paired"}).map(r2),a=i.length<=2?i.join(" or "):i.slice(0,-1).join(", ")+", or "+i[i.length-1];return ys` +
    `},u2=["telegram","discord","slack"],p2=t=>t.charAt(0).toUpperCase()+t.slice(1);function tl({pending:t,channels:e,visible:n,onApprove:s,onReject:o,statusRefreshing:r=!1}){if(!n)return null;let i=u2.filter(l=>{let c=e?.[l];if(!c)return!1;let d=c.accounts&&typeof c.accounts=="object"?c.accounts:{};return Object.keys(d).length>0?Object.values(d).some(u=>u&&u.status!=="paired"):c.status!=="paired"}).map(p2),a=i.length<=2?i.join(" or "):i.slice(0,-1).join(", ")+", or "+i[i.length-1];return ys`

    Pending Pairings

    ${t.length>0?ys`
    - ${t.map(l=>ys`<${s2} key=${l.id} p=${l} onApprove=${s} onReject=${o} />`)} + ${t.map(l=>ys`<${d2} key=${l.id} p=${l} onApprove=${s} onReject=${o} />`)}
    `:r?ys`

    Updating pairing status...

    `:ys`
    @@ -3081,39 +3131,39 @@ Please report this to https://github.com/markedjs/marked.`,t){let s="

    An error

    Send a message to your bot on ${a}

    The pairing request will appear here — it may take a few moments

    `} -
    `}var Dx=P.bind(T),to=(t,e)=>{let n=String(t||"").trim(),s=String(e||"").trim()||"default";return n?`${n}:${s}`:""},i2=t=>{window.dispatchEvent(new CustomEvent("alphaclaw:pairings-changed",{detail:{agentId:String(t||"").trim()}}))},Nx=({agent:t={}})=>{let[e,n]=y([]),[s,o]=y([]),[r,i]=y(!0),[a,l]=y(!1),c=ee(null),d=ee([]),u=String(t?.id||"").trim(),p=!!t?.default,{data:f,loading:g,refresh:m}=ct(`/api/agents/${encodeURIComponent(String(u||""))}/bindings`,()=>Km(t.id),{enabled:!!u,maxAgeMs:3e4}),{data:h,loading:b,refresh:x}=ct("/api/channels/accounts",To,{maxAgeMs:3e4}),v=q(async()=>{i(!0);try{let[M,R]=await Promise.all([m({force:!0}),x({force:!0})]);n(Array.isArray(M?.bindings)?M.bindings:[]),o(Array.isArray(R?.channels)?R.channels:[])}catch{n([]),o([])}finally{i(!1)}},[m,x]);L(()=>{n(Array.isArray(f?.bindings)?f.bindings:[]),o(Array.isArray(h?.channels)?h.channels:[]),i(!!(g||b))},[g,f,b,h]),L(()=>{let M=R=>{String(R?.detail?.agentId||"").trim()===u&&v()};return window.addEventListener("alphaclaw:agent-bindings-changed",M),()=>{window.removeEventListener("alphaclaw:agent-bindings-changed",M)}},[u,v]),L(()=>()=>{c.current&&clearTimeout(c.current);for(let M of d.current)clearTimeout(M);d.current=[]},[]);let w=F(()=>{let M=new Map;for(let R of e){let B=String(R?.match?.channel||"").trim();if(!B)continue;let I=String(R?.match?.accountId||"").trim()||"default",U=to(B,I);U&&M.set(U,{channel:B,accountId:I})}for(let R of s){let B=String(R?.channel||"").trim(),U=(Array.isArray(R?.accounts)?R.accounts:[]).find(W=>String(W?.id||"").trim()==="default");if(p&&B&&U&&!String(U?.boundAgentId||"").trim()){let W=to(B,"default");M.set(W,{channel:B,accountId:"default"})}}return Array.from(M.values())},[e,s,p]),$=F(()=>Array.from(new Set(w.map(M=>M.channel))).filter(Boolean),[w]),S=F(()=>new Set(w.map(M=>to(M.channel,M.accountId)).filter(Boolean)),[w]),C=F(()=>{let M=new Map;for(let R of s){let B=String(R?.channel||"").trim(),I=Array.isArray(R?.accounts)?R.accounts:[];for(let U of I){let W=String(U?.id||"").trim()||"default",G=to(B,W);if(!G)continue;let se=String(U?.name||"").trim();M.set(G,se||W)}}return M},[s]),_=F(()=>{let M={};for(let R of w){let B=String(R?.channel||"").trim();if(!B)continue;let I=to(B,R?.accountId),U=s.find(G=>String(G?.channel||"").trim()===B)?.accounts?.find(G=>(String(G?.id||"").trim()||"default")===(String(R?.accountId||"").trim()||"default")),W=String(U?.status||"").trim()||"configured";(!M[B]||W!=="paired")&&(M[B]={status:W==="paired"?"paired":"configured",accountName:C.get(I)||""})}return M},[C,s,w]),k=F(()=>Object.values(_).some(M=>String(M?.status||"").trim()!=="paired"),[_]),A=Re(async()=>{let M=await Co();return(Array.isArray(M?.pending)?M.pending:[]).filter(B=>S.has(to(String(B?.channel||"").trim(),String(B?.accountId||"").trim()||"default"))).map(B=>{let I=to(B?.channel,B?.accountId);return{...B,accountName:C.get(I)||""}})},3e3,{enabled:k&&w.length>0,cacheKey:`/api/pairings?agent=${encodeURIComponent(u)}`}),O=A.data||[],D=q(()=>{l(!0),c.current&&clearTimeout(c.current),c.current=setTimeout(()=>{l(!1),c.current=null},2800);for(let R of d.current)clearTimeout(R);d.current=[];let M=()=>{A.refresh(),v(),i2(u)};M(),d.current.push(setTimeout(M,500)),d.current.push(setTimeout(M,2e3))},[u,v,A]),j=async(M,R,B="")=>{try{await _o(M,R,B),D()}catch(I){N(I.message||"Could not approve pairing","error")}},E=async(M,R,B="")=>{try{await Mo(M,R,B),D()}catch(I){N(I.message||"Could not reject pairing","error")}};return r?Dx` +
    `}var Hx=P.bind(T),to=(t,e)=>{let n=String(t||"").trim(),s=String(e||"").trim()||"default";return n?`${n}:${s}`:""},f2=t=>{window.dispatchEvent(new CustomEvent("alphaclaw:pairings-changed",{detail:{agentId:String(t||"").trim()}}))},Wx=({agent:t={}})=>{let[e,n]=y([]),[s,o]=y([]),[r,i]=y(!0),[a,l]=y(!1),c=ee(null),d=ee([]),u=String(t?.id||"").trim(),p=!!t?.default,{data:f,loading:g,refresh:m}=ct(`/api/agents/${encodeURIComponent(String(u||""))}/bindings`,()=>qm(t.id),{enabled:!!u,maxAgeMs:3e4}),{data:h,loading:b,refresh:x}=ct("/api/channels/accounts",To,{maxAgeMs:3e4}),v=q(async()=>{i(!0);try{let[M,R]=await Promise.all([m({force:!0}),x({force:!0})]);n(Array.isArray(M?.bindings)?M.bindings:[]),o(Array.isArray(R?.channels)?R.channels:[])}catch{n([]),o([])}finally{i(!1)}},[m,x]);L(()=>{n(Array.isArray(f?.bindings)?f.bindings:[]),o(Array.isArray(h?.channels)?h.channels:[]),i(!!(g||b))},[g,f,b,h]),L(()=>{let M=R=>{String(R?.detail?.agentId||"").trim()===u&&v()};return window.addEventListener("alphaclaw:agent-bindings-changed",M),()=>{window.removeEventListener("alphaclaw:agent-bindings-changed",M)}},[u,v]),L(()=>()=>{c.current&&clearTimeout(c.current);for(let M of d.current)clearTimeout(M);d.current=[]},[]);let w=F(()=>{let M=new Map;for(let R of e){let B=String(R?.match?.channel||"").trim();if(!B)continue;let I=String(R?.match?.accountId||"").trim()||"default",U=to(B,I);U&&M.set(U,{channel:B,accountId:I})}for(let R of s){let B=String(R?.channel||"").trim(),U=(Array.isArray(R?.accounts)?R.accounts:[]).find(W=>String(W?.id||"").trim()==="default");if(p&&B&&U&&!String(U?.boundAgentId||"").trim()){let W=to(B,"default");M.set(W,{channel:B,accountId:"default"})}}return Array.from(M.values())},[e,s,p]),$=F(()=>Array.from(new Set(w.map(M=>M.channel))).filter(Boolean),[w]),S=F(()=>new Set(w.map(M=>to(M.channel,M.accountId)).filter(Boolean)),[w]),C=F(()=>{let M=new Map;for(let R of s){let B=String(R?.channel||"").trim(),I=Array.isArray(R?.accounts)?R.accounts:[];for(let U of I){let W=String(U?.id||"").trim()||"default",G=to(B,W);if(!G)continue;let se=String(U?.name||"").trim();M.set(G,se||W)}}return M},[s]),_=F(()=>{let M={};for(let R of w){let B=String(R?.channel||"").trim();if(!B)continue;let I=to(B,R?.accountId),U=s.find(G=>String(G?.channel||"").trim()===B)?.accounts?.find(G=>(String(G?.id||"").trim()||"default")===(String(R?.accountId||"").trim()||"default")),W=String(U?.status||"").trim()||"configured";(!M[B]||W!=="paired")&&(M[B]={status:W==="paired"?"paired":"configured",accountName:C.get(I)||""})}return M},[C,s,w]),k=F(()=>Object.values(_).some(M=>String(M?.status||"").trim()!=="paired"),[_]),A=Re(async()=>{let M=await Co();return(Array.isArray(M?.pending)?M.pending:[]).filter(B=>S.has(to(String(B?.channel||"").trim(),String(B?.accountId||"").trim()||"default"))).map(B=>{let I=to(B?.channel,B?.accountId);return{...B,accountName:C.get(I)||""}})},3e3,{enabled:k&&w.length>0,cacheKey:`/api/pairings?agent=${encodeURIComponent(u)}`}),O=A.data||[],D=q(()=>{l(!0),c.current&&clearTimeout(c.current),c.current=setTimeout(()=>{l(!1),c.current=null},2800);for(let R of d.current)clearTimeout(R);d.current=[];let M=()=>{A.refresh(),v(),f2(u)};M(),d.current.push(setTimeout(M,500)),d.current.push(setTimeout(M,2e3))},[u,v,A]),z=async(M,R,B="")=>{try{await _o(M,R,B),D()}catch(I){N(I.message||"Could not approve pairing","error")}},E=async(M,R,B="")=>{try{await Mo(M,R,B),D()}catch(I){N(I.message||"Could not reject pairing","error")}};return r?Hx`

    Pairing

    Loading pairing status...

    - `:k?Dx` + `:k?Hx` <${tl} pending=${O} channels=${_} visible=${k} statusRefreshing=${a} - onApprove=${j} + onApprove=${z} onReject=${E} /> - `:null};var Ox=P.bind(T),nl=({agent:t=null,agents:e=[],onSetLocation:n=()=>{},channelsSection:s=null,pairingsSection:o=null})=>t?Ox` + `:null};var Vx=P.bind(T),nl=({agent:t=null,agents:e=[],onSetLocation:n=()=>{},channelsSection:s=null,pairingsSection:o=null})=>t?Vx`
    - <${Ix} + <${Fx} agent=${t} agents=${e} onSetLocation=${n} /> - <${Nx} agent=${t} /> + <${Wx} agent=${t} />
    - `:Ox` + `:Vx`
    ${s} ${o}
    - `;var Yd=P.bind(T),Bx=({agent:t={},saving:e=!1,onSetDefault:n=()=>{},onDelete:s=()=>{}})=>{let o=String(t.id||"")==="main";return Yd` + `;var Qd=P.bind(T),jx=({agent:t={},saving:e=!1,onSetDefault:n=()=>{},onDelete:s=()=>{}})=>{let o=String(t.id||"")==="main";return Qd`

    Manage

    - ${t.default?null:Yd` + ${t.default?null:Qd` <${Z} onClick=${()=>n(t.id)} disabled=${e} @@ -3122,7 +3172,7 @@ Please report this to https://github.com/markedjs/marked.`,t){let s="

    An error idleLabel="Set as default" /> `} - ${o?null:Yd` + ${o?null:Qd` <${Z} onClick=${()=>s(t)} disabled=${e} @@ -3133,7 +3183,7 @@ Please report this to https://github.com/markedjs/marked.`,t){let s="

    An error `}

    - `};var oi=P.bind(T),a2=["anthropic","openai","openai-codex",...zr.filter(t=>!["anthropic","openai"].includes(t))],ri=t=>{let e=zs(t);return e==="openai-codex"?"openai-codex":Ro(e)},vs=t=>String(t?.provider||zs(t?.key)).trim(),zo=t=>{let e=a2.indexOf(t);return e>=0?e:Number.MAX_SAFE_INTEGER},l2=t=>String(js[t]||t).toUpperCase(),c2=t=>String(t||"").trim().toLowerCase(),Xd=t=>t?.featuredLabel||t?.label||t?.key,d2=t=>[t?.featuredLabel||"",t?.label||"",t?.key||"",t?.provider||zs(t?.key)].join(" ").toLowerCase(),sl=({authProfiles:t=[],codexStatus:e={connected:!1}}={})=>{let n={};for(let s of t)(s?.key||s?.token||s?.access)&&(n[s.provider]=!0);return e?.connected&&(n["openai-codex"]=!0),n},ol=({options:t=[],popularModels:e=[],placeholder:n="Add model...",onSelect:s=()=>{},disabled:o=!1})=>{let[r,i]=y(""),[a,l]=y(!1),c=ee(null),d=c2(r),u=F(()=>d?t.filter(m=>d2(m).includes(d)):t,[t,d]),p=F(()=>{let m=[],h=!d,b=new Set(u.map(v=>v.key)),x=e.filter(v=>b.has(v.key));h&&x.length>0&&m.push({provider:"popular",label:"POPULAR",options:x});for(let v of u){let w=vs(v),$=l2(w),S=m[m.length-1];if(!S||S.provider!==w){m.push({provider:w,label:$,options:[v]});continue}S.options.push(v)}return m},[u,e,d]);L(()=>{let m=h=>{c.current?.contains(h.target)||l(!1)};return document.addEventListener("mousedown",m),()=>document.removeEventListener("mousedown",m)},[]);let f=m=>{!m||o||(s(m),i(""),l(!1))};return oi` + `};var oi=P.bind(T),h2=["anthropic","openai","openai-codex",...jr.filter(t=>!["anthropic","openai"].includes(t))],ri=t=>{let e=js(t);return e==="openai-codex"?"openai-codex":Ro(e)},vs=t=>String(t?.provider||js(t?.key)).trim(),jo=t=>{let e=h2.indexOf(t);return e>=0?e:Number.MAX_SAFE_INTEGER},m2=t=>String(zs[t]||t).toUpperCase(),g2=t=>String(t||"").trim().toLowerCase(),eu=t=>t?.featuredLabel||t?.label||t?.key,b2=t=>[t?.featuredLabel||"",t?.label||"",t?.key||"",t?.provider||js(t?.key)].join(" ").toLowerCase(),sl=({authProfiles:t=[],codexStatus:e={connected:!1}}={})=>{let n={};for(let s of t)(s?.key||s?.token||s?.access)&&(n[s.provider]=!0);return e?.connected&&(n["openai-codex"]=!0),n},ol=({options:t=[],popularModels:e=[],placeholder:n="Add model...",onSelect:s=()=>{},disabled:o=!1})=>{let[r,i]=y(""),[a,l]=y(!1),c=ee(null),d=g2(r),u=F(()=>d?t.filter(m=>b2(m).includes(d)):t,[t,d]),p=F(()=>{let m=[],h=!d,b=new Set(u.map(v=>v.key)),x=e.filter(v=>b.has(v.key));h&&x.length>0&&m.push({provider:"popular",label:"POPULAR",options:x});for(let v of u){let w=vs(v),$=m2(w),S=m[m.length-1];if(!S||S.provider!==w){m.push({provider:w,label:$,options:[v]});continue}S.options.push(v)}return m},[u,e,d]);L(()=>{let m=h=>{c.current?.contains(h.target)||l(!1)};return document.addEventListener("mousedown",m),()=>document.removeEventListener("mousedown",m)},[]);let f=m=>{!m||o||(s(m),i(""),l(!1))};return oi`
    - ${Xd(b)} + ${eu(b)}
    ${b.key} @@ -3185,7 +3235,7 @@ Please report this to https://github.com/markedjs/marked.`,t){let s="

    An error

    `:null}
    - `};var cn=null,jo=t=>String(t?.key||t?.token||t?.access||"").trim(),rl=t=>{let e=!!t,n=String(t||"").trim(),s=!e,[o,r]=y(()=>s&&cn?.catalog||[]),[i,a]=y(()=>s&&cn?.primary||""),[l,c]=y(()=>s&&cn?.configuredModels||{}),[d,u]=y(()=>s&&cn?.authProfiles||[]),[p,f]=y(()=>s&&cn?.authOrder||{}),[g,m]=y(()=>s&&cn?.codexStatus||{connected:!1}),[h,b]=y(()=>!(s&&cn)),[x,v]=y(!1),[w,$]=y(()=>!!(s&&cn)),[S,C]=y(""),[_,k]=y({}),[A,O]=y({}),D=ee(cn?.primary||""),j=ee(cn?.configuredModels||{}),E=q(V=>{e||(cn={...cn||{},...V})},[e]),M=n?`/api/models/config?agentId=${encodeURIComponent(n)}`:"/api/models/config",R=ct("/api/models",Br,{maxAgeMs:3e4}),B=ct(M,()=>Fm(e?{agentId:t}:void 0),{maxAgeMs:3e4}),I=ct("/api/codex/status",Po,{maxAgeMs:15e3}),U=q(async()=>{w||b(!0),C("");try{let[V,J,oe]=await Promise.all([R.refresh({force:!0}),B.refresh({force:!0}),I.refresh({force:!0})]),ce=Array.isArray(V.models)?V.models:[];r(ce);let be=J.primary||"",Ve=J.configuredModels||{},et=J.authProfiles||[],wt=J.authOrder||{};a(be),c(Ve),u(et),f(wt),m(oe||{connected:!1}),k({}),O({}),D.current=be,j.current=Ve,E({catalog:ce,primary:be,configuredModels:Ve,authProfiles:et,authOrder:wt,codexStatus:oe||{connected:!1}}),ce.length||C("No models found")}catch(V){C("Failed to load model settings"),N(`Failed to load model settings: ${V.message}`,"error")}finally{$(!0),b(!1)}},[R,I,B,w,E,t,e]);L(()=>{U()},[t]);let W=V=>JSON.stringify(Object.keys(V).sort().reduce((J,oe)=>(J[oe]=V[oe],J),{})),G=i!==D.current||W(l)!==W(j.current),se=(()=>{let V=Object.entries(_).some(([oe,ce])=>{let be=d.find(Ve=>Ve.id===oe);return jo(ce)!==jo(be)}),J=Object.entries(A).some(([oe,ce])=>{let be=p[oe];return JSON.stringify(ce)!==JSON.stringify(be)});return V||J})(),K=G||se,z=q(V=>{V&&c(J=>{let oe={...J,[V]:{}};return E({configuredModels:oe}),oe})},[E]),X=q(V=>{if(c(J=>{let oe={...J};return delete oe[V],E({configuredModels:oe}),oe}),i===V){let oe=Object.keys(l).filter(ce=>ce!==V)[0]||"";a(oe),E({primary:oe})}},[i,l,E]),de=q(V=>{a(V),E({primary:V})},[E]),le=q((V,J)=>{let oe=d.find(ce=>ce.id===V);if(jo(J)===jo(oe)){k(ce=>{let be={...ce};return delete be[V],be});return}k(ce=>({...ce,[V]:J}))},[d]),ie=q((V,J)=>{let oe=p[V]||null;if(JSON.stringify(J)===JSON.stringify(oe)){O(ce=>{let be={...ce};return delete be[V],be});return}O(ce=>({...ce,[V]:J}))},[p]),ne=q(V=>_[V]!==void 0?_[V]:d.find(oe=>oe.id===V)||null,[_,d]),xe=q(V=>A[V]!==void 0?A[V]:p[V]||null,[A,p]),he=q(()=>{let V=D.current||"",J=j.current||{};a(V),c(J),k({}),O({}),E({primary:V,configuredModels:J})},[E]),ue=q(async()=>{if(!x){v(!0);try{let V=Object.entries(_).filter(([oe,ce])=>{let be=d.find(Ve=>Ve.id===oe);return jo(ce)!==jo(be)}).map(([oe,ce])=>({id:oe,...ce})),J=await Hm({primary:i,configuredModels:l,profiles:V.length>0?V:void 0,authOrder:Object.keys(A).length>0?A:void 0,...e?{agentId:t}:{}});if(!J.ok)throw new Error(J.error||"Failed to save config");N("Changes saved","success"),J.syncWarning&&N(`Saved, but git-sync failed: ${J.syncWarning}`,"warning"),await U()}catch(V){N(V.message||"Failed to save changes","error")}finally{v(!1)}}},[x,i,l,_,A,d,U]),me=q(async()=>{try{let V=await Po();m(V||{connected:!1}),E({codexStatus:V||{connected:!1}})}catch{m({connected:!1}),E({codexStatus:{connected:!1}})}},[E]);return{catalog:o,primary:i,configuredModels:l,authProfiles:d,authOrder:p,codexStatus:g,loading:h,saving:x,ready:w,error:S,isDirty:K,refresh:U,addModel:z,removeModel:X,setPrimaryModel:de,editProfile:le,editAuthOrder:ie,getProfileValue:ne,getEffectiveOrder:xe,cancelChanges:he,saveAll:ue,refreshCodexStatus:me}};var u2=t=>t?typeof t=="string"?t:t.primary||null:null,Fx=(t=[],e="")=>t.find(n=>String(n?.key||"").trim()===String(e||"").trim())||null,Hx=({agent:t={},onUpdateAgent:e=async()=>{}})=>{let[n,s]=y(!1),[o,r]=y(!1),{catalog:i,primary:a,configuredModels:l,authProfiles:c,codexStatus:d,loading:u,ready:p}=rl(),f=u2(t.model),g=f||a||"",m=!!f&&String(f).trim()!==String(a||"").trim(),h=F(()=>sl({authProfiles:c,codexStatus:d}),[c,d]),b=F(()=>Object.keys(l||{}).map(k=>Fx(i,k)||{key:k,label:k}).filter(k=>{let A=ri(k.key);return!!h[A]}).sort((k,A)=>{let O=zo(vs(k))-zo(vs(A));return O!==0?O:String(k?.label||k?.key).localeCompare(String(A?.label||A?.key))}),[i,l,h]),x=F(()=>Fx(i,g)||(g?{key:g,label:g}:null),[i,g]),v=F(()=>b.filter(k=>{let A=vs(k);return A==="anthropic"||A==="openai"}),[b]),w=F(()=>{if(!x)return[];let k=String(x?.key||"").trim(),A=b.filter(O=>String(O?.key||"").trim()!==k);return[x,...A]},[b,x]),$=F(()=>new Set(w.map(k=>String(k?.key||"").trim()).filter(Boolean)),[w]),S=F(()=>b.filter(k=>!$.has(String(k?.key||"").trim())),[b,$]);return{authorizedModelOptions:b,canEditModel:p&&!u,effectiveModel:g,effectiveModelEntry:x,handleClearModelOverride:async()=>{if(m){s(!0);try{await e(String(t.id||"").trim(),{model:null},"Agent model reset to default")}finally{s(!1)}}},handleSelectModel:async k=>{let A=String(k||"").trim();if(!(!A||A===g)){s(!0);try{await e(String(t.id||"").trim(),{model:{primary:A}},"Agent model updated")}finally{s(!1)}}},hasDistinctModelOverride:m,loading:!p||u,menuOpen:o,modelEntries:w,popularModels:v,remainingModelOptions:S,setMenuOpen:r,updatingModel:n}};var sn=P.bind(T),Wx=({agent:t={},saving:e=!1,onUpdateAgent:n=async()=>{},onSwitchToModels:s=()=>{}})=>{let{authorizedModelOptions:o,canEditModel:r,effectiveModel:i,effectiveModelEntry:a,handleClearModelOverride:l,handleSelectModel:c,hasDistinctModelOverride:d,loading:u,menuOpen:p,modelEntries:f,popularModels:g,remainingModelOptions:m,setMenuOpen:h,updatingModel:b}=Hx({agent:t,onUpdateAgent:n});return sn` + `};var cn=null,zo=t=>String(t?.key||t?.token||t?.access||"").trim(),rl=t=>{let e=!!t,n=String(t||"").trim(),s=!e,[o,r]=y(()=>s&&cn?.catalog||[]),[i,a]=y(()=>s&&cn?.primary||""),[l,c]=y(()=>s&&cn?.configuredModels||{}),[d,u]=y(()=>s&&cn?.authProfiles||[]),[p,f]=y(()=>s&&cn?.authOrder||{}),[g,m]=y(()=>s&&cn?.codexStatus||{connected:!1}),[h,b]=y(()=>!(s&&cn)),[x,v]=y(!1),[w,$]=y(()=>!!(s&&cn)),[S,C]=y(""),[_,k]=y({}),[A,O]=y({}),D=ee(cn?.primary||""),z=ee(cn?.configuredModels||{}),E=q(V=>{e||(cn={...cn||{},...V})},[e]),M=n?`/api/models/config?agentId=${encodeURIComponent(n)}`:"/api/models/config",R=ct("/api/models",Br,{maxAgeMs:3e4}),B=ct(M,()=>Wm(e?{agentId:t}:void 0),{maxAgeMs:3e4}),I=ct("/api/codex/status",Po,{maxAgeMs:15e3}),U=q(async()=>{w||b(!0),C("");try{let[V,J,oe]=await Promise.all([R.refresh({force:!0}),B.refresh({force:!0}),I.refresh({force:!0})]),ce=Array.isArray(V.models)?V.models:[];r(ce);let be=J.primary||"",Ve=J.configuredModels||{},et=J.authProfiles||[],wt=J.authOrder||{};a(be),c(Ve),u(et),f(wt),m(oe||{connected:!1}),k({}),O({}),D.current=be,z.current=Ve,E({catalog:ce,primary:be,configuredModels:Ve,authProfiles:et,authOrder:wt,codexStatus:oe||{connected:!1}}),ce.length||C("No models found")}catch(V){C("Failed to load model settings"),N(`Failed to load model settings: ${V.message}`,"error")}finally{$(!0),b(!1)}},[R,I,B,w,E,t,e]);L(()=>{U()},[t]);let W=V=>JSON.stringify(Object.keys(V).sort().reduce((J,oe)=>(J[oe]=V[oe],J),{})),G=i!==D.current||W(l)!==W(z.current),se=(()=>{let V=Object.entries(_).some(([oe,ce])=>{let be=d.find(Ve=>Ve.id===oe);return zo(ce)!==zo(be)}),J=Object.entries(A).some(([oe,ce])=>{let be=p[oe];return JSON.stringify(ce)!==JSON.stringify(be)});return V||J})(),K=G||se,j=q(V=>{V&&c(J=>{let oe={...J,[V]:{}};return E({configuredModels:oe}),oe})},[E]),X=q(V=>{if(c(J=>{let oe={...J};return delete oe[V],E({configuredModels:oe}),oe}),i===V){let oe=Object.keys(l).filter(ce=>ce!==V)[0]||"";a(oe),E({primary:oe})}},[i,l,E]),de=q(V=>{a(V),E({primary:V})},[E]),le=q((V,J)=>{let oe=d.find(ce=>ce.id===V);if(zo(J)===zo(oe)){k(ce=>{let be={...ce};return delete be[V],be});return}k(ce=>({...ce,[V]:J}))},[d]),ie=q((V,J)=>{let oe=p[V]||null;if(JSON.stringify(J)===JSON.stringify(oe)){O(ce=>{let be={...ce};return delete be[V],be});return}O(ce=>({...ce,[V]:J}))},[p]),ne=q(V=>_[V]!==void 0?_[V]:d.find(oe=>oe.id===V)||null,[_,d]),xe=q(V=>A[V]!==void 0?A[V]:p[V]||null,[A,p]),he=q(()=>{let V=D.current||"",J=z.current||{};a(V),c(J),k({}),O({}),E({primary:V,configuredModels:J})},[E]),ue=q(async()=>{if(!x){v(!0);try{let V=Object.entries(_).filter(([oe,ce])=>{let be=d.find(Ve=>Ve.id===oe);return zo(ce)!==zo(be)}).map(([oe,ce])=>({id:oe,...ce})),J=await Vm({primary:i,configuredModels:l,profiles:V.length>0?V:void 0,authOrder:Object.keys(A).length>0?A:void 0,...e?{agentId:t}:{}});if(!J.ok)throw new Error(J.error||"Failed to save config");N("Changes saved","success"),J.syncWarning&&N(`Saved, but git-sync failed: ${J.syncWarning}`,"warning"),await U()}catch(V){N(V.message||"Failed to save changes","error")}finally{v(!1)}}},[x,i,l,_,A,d,U]),me=q(async()=>{try{let V=await Po();m(V||{connected:!1}),E({codexStatus:V||{connected:!1}})}catch{m({connected:!1}),E({codexStatus:{connected:!1}})}},[E]);return{catalog:o,primary:i,configuredModels:l,authProfiles:d,authOrder:p,codexStatus:g,loading:h,saving:x,ready:w,error:S,isDirty:K,refresh:U,addModel:j,removeModel:X,setPrimaryModel:de,editProfile:le,editAuthOrder:ie,getProfileValue:ne,getEffectiveOrder:xe,cancelChanges:he,saveAll:ue,refreshCodexStatus:me}};var x2=t=>t?typeof t=="string"?t:t.primary||null:null,zx=(t=[],e="")=>t.find(n=>String(n?.key||"").trim()===String(e||"").trim())||null,Ux=({agent:t={},onUpdateAgent:e=async()=>{}})=>{let[n,s]=y(!1),[o,r]=y(!1),{catalog:i,primary:a,configuredModels:l,authProfiles:c,codexStatus:d,loading:u,ready:p}=rl(),f=x2(t.model),g=f||a||"",m=!!f&&String(f).trim()!==String(a||"").trim(),h=F(()=>sl({authProfiles:c,codexStatus:d}),[c,d]),b=F(()=>Object.keys(l||{}).map(k=>zx(i,k)||{key:k,label:k}).filter(k=>{let A=ri(k.key);return!!h[A]}).sort((k,A)=>{let O=jo(vs(k))-jo(vs(A));return O!==0?O:String(k?.label||k?.key).localeCompare(String(A?.label||A?.key))}),[i,l,h]),x=F(()=>zx(i,g)||(g?{key:g,label:g}:null),[i,g]),v=F(()=>b.filter(k=>{let A=vs(k);return A==="anthropic"||A==="openai"}),[b]),w=F(()=>{if(!x)return[];let k=String(x?.key||"").trim(),A=b.filter(O=>String(O?.key||"").trim()!==k);return[x,...A]},[b,x]),$=F(()=>new Set(w.map(k=>String(k?.key||"").trim()).filter(Boolean)),[w]),S=F(()=>b.filter(k=>!$.has(String(k?.key||"").trim())),[b,$]);return{authorizedModelOptions:b,canEditModel:p&&!u,effectiveModel:g,effectiveModelEntry:x,handleClearModelOverride:async()=>{if(m){s(!0);try{await e(String(t.id||"").trim(),{model:null},"Agent model reset to default")}finally{s(!1)}}},handleSelectModel:async k=>{let A=String(k||"").trim();if(!(!A||A===g)){s(!0);try{await e(String(t.id||"").trim(),{model:{primary:A}},"Agent model updated")}finally{s(!1)}}},hasDistinctModelOverride:m,loading:!p||u,menuOpen:o,modelEntries:w,popularModels:v,remainingModelOptions:S,setMenuOpen:r,updatingModel:n}};var sn=P.bind(T),Kx=({agent:t={},saving:e=!1,onUpdateAgent:n=async()=>{},onSwitchToModels:s=()=>{}})=>{let{authorizedModelOptions:o,canEditModel:r,effectiveModel:i,effectiveModelEntry:a,handleClearModelOverride:l,handleSelectModel:c,hasDistinctModelOverride:d,loading:u,menuOpen:p,modelEntries:f,popularModels:g,remainingModelOptions:m,setMenuOpen:h,updatingModel:b}=Ux({agent:t,onUpdateAgent:n});return sn`

    Model

    @@ -3232,7 +3282,7 @@ Please report this to https://github.com/markedjs/marked.`,t){let s="

    An error >

    - ${Xd(x)} + ${eu(x)} ${x.key===i?sn`<${ae} tone="cyan">Primary`:sn`
    - ${n?"Calculating size...":s!=null?Yb(s):o?"Size unavailable":"Workspace directory not found"} + ${n?"Calculating size...":s!=null?tx(s):o?"Size unavailable":"Workspace directory not found"}
    - `:eu`

    No workspace configured

    `} + `:nu`

    No workspace configured

    `}
    - `};var Jx=P.bind(T),Zx=({agent:t={},agents:e=[],saving:n=!1,toolsSummary:s={},onUpdateAgent:o=async()=>{},onSetLocation:r=()=>{},onOpenWorkspace:i=()=>{},onSwitchToModels:a=()=>{},onSwitchToTools:l=()=>{},onSetDefault:c=()=>{},onDelete:d=()=>{}})=>{let u=String(t.id||"")==="main",p=!t.default||!u;return Jx` + `};var ey=P.bind(T),ty=({agent:t={},agents:e=[],saving:n=!1,toolsSummary:s={},onUpdateAgent:o=async()=>{},onSetLocation:r=()=>{},onOpenWorkspace:i=()=>{},onSwitchToModels:a=()=>{},onSwitchToTools:l=()=>{},onSetDefault:c=()=>{},onDelete:d=()=>{}})=>{let u=String(t.id||"")==="main",p=!t.default||!u;return ey`
    - <${qx} + <${Qx} agent=${t} onOpenWorkspace=${i} /> - <${Wx} + <${Kx} agent=${t} saving=${n} onUpdateAgent=${o} onSwitchToModels=${a} /> - <${Kx} + <${Yx} profile=${s.profile||"full"} enabledCount=${s.enabledCount||0} totalCount=${s.totalCount||0} @@ -3347,8 +3397,8 @@ Please report this to https://github.com/markedjs/marked.`,t){let s="

    An error agents=${e} onSetLocation=${r} /> - ${p?Jx` - <${Bx} + ${p?ey` + <${jx} agent=${t} saving=${n} onSetDefault=${c} @@ -3356,7 +3406,7 @@ Please report this to https://github.com/markedjs/marked.`,t){let s="

    An error /> `:null}

    - `};var Yx=P.bind(T),vn=({checked:t=!1,disabled:e=!1,onChange:n=()=>{},label:s="Enabled"})=>Yx` + `};var ny=P.bind(T),vn=({checked:t=!1,disabled:e=!1,onChange:n=()=>{},label:s="Enabled"})=>ny` -`;var f2=P.bind(T),no=({text:t="",widthClass:e="w-64"})=>f2` +`;var v2=P.bind(T),no=({text:t="",widthClass:e="w-64"})=>v2` <${Bt} text=${t} widthClass=${e}> ({label:il[t],value:t,title:h2[t]})),g2=({tool:t,onToggle:e})=>Uo` +`;var Uo=P.bind(T),$2={minimal:"Only session status \u2014 grant specific tools with alsoAllow",messaging:"Session access and messaging \u2014 ideal for notification agents",coding:"File I/O, shell, memory, sessions, cron, and image generation",full:"All tools enabled, no restrictions"},w2=Gx.map(t=>({label:il[t],value:t,title:$2[t]})),k2=({tool:t,onToggle:e})=>Uo`
    @@ -3393,18 +3443,18 @@ Please report this to https://github.com/markedjs/marked.`,t){let s="

    An error label=${null} />

    -`,b2=({section:t,toolStates:e,onToggle:n})=>{let s=e.filter(o=>o.section===t.id);return s.length?Uo` +`,S2=({section:t,toolStates:e,onToggle:n})=>{let s=e.filter(o=>o.section===t.id);return s.length?Uo`

    ${t.label}

    - ${s.map(o=>Uo`<${g2} + ${s.map(o=>Uo`<${k2} key=${o.id} tool=${o} onToggle=${n} />`)}
    - `:null},Xx=({agent:t={},tools:e={}})=>{let{profile:n,toolStates:s,setProfile:o,toggleTool:r}=e,i=(s||[]).filter(l=>l.enabled).length,a=(s||[]).length;return Uo` + `:null},sy=({agent:t={},tools:e={}})=>{let{profile:n,toolStates:s,setProfile:o,toggleTool:r}=e,i=(s||[]).filter(l=>l.enabled).length,a=(s||[]).length;return Uo`
    @@ -3415,7 +3465,7 @@ Please report this to https://github.com/markedjs/marked.`,t){let s="

    An error >

    <${Xe} - options=${m2} + options=${w2} value=${n} onChange=${o} fullWidth @@ -3425,9 +3475,9 @@ Please report this to https://github.com/markedjs/marked.`,t){let s="

    An error

    - ${zx.map(l=>Uo` + ${qx.map(l=>Uo`
    - <${b2} + <${S2} key=${l.id} section=${l} toolStates=${s||[]} @@ -3437,7 +3487,7 @@ Please report this to https://github.com/markedjs/marked.`,t){let s="

    An error `)}

    - `};var tu=(t=[],e=[])=>{let n={};for(let s of t)n[s]=!0;for(let s of e)n[s]=!1;return n},nu=({profile:t="full",alsoAllow:e=[],deny:n=[]}={})=>({profile:String(t||"full"),alsoAllow:[...Array.isArray(e)?e:[]].map(String).filter(Boolean).sort(),deny:[...Array.isArray(n)?n:[]].map(String).filter(Boolean).sort()}),Qx=({agent:t={}}={})=>{let e=t.tools||{},n=nu(e),s=n.profile,o=n.alsoAllow,r=n.deny,[i,a]=y(s),[l,c]=y(()=>tu(o,r)),[d,u]=y(n),p=JSON.stringify([t.id,e]),f=ee(p);L(()=>{f.current!==p&&(f.current=p,a(s),c(tu(o,r)),u(n))},[p,s,o,r,n]);let g=F(()=>{let $=new Set(ii(i)),S=[],C=[];for(let[_,k]of Object.entries(l))k&&!$.has(_)?S.push(_):!k&&$.has(_)&&C.push(_);return jx({profile:i,alsoAllow:S,deny:C})},[i,l]),m=F(()=>Ux({profile:i,toolStates:g}),[i,g]),h=F(()=>{let $=nu(m);return JSON.stringify(d)!==JSON.stringify($)},[d,m]),b=q($=>{a($),c({})},[]),x=q(($,S)=>{c(C=>{let _={...C};return new Set(ii(i)).has($)===S?delete _[$]:_[$]=S,_})},[i]),v=q(()=>{a(d.profile);let $={};for(let S of d.alsoAllow)$[S]=!0;for(let S of d.deny)$[S]=!1;c($)},[d]),w=q(($={})=>{let S=nu($);u(S),a(S.profile),c(tu(S.alsoAllow,S.deny))},[]);return{profile:i,toolStates:g,toolsConfig:m,dirty:h,setProfile:b,toggleTool:x,reset:v,markSaved:w}};var Ko=P.bind(T),x2=[{label:"Overview",value:"overview"},{label:"Tools",value:"tools"}],y2=({className:t="w-3.5 h-3.5"})=>Ko` + `};var su=(t=[],e=[])=>{let n={};for(let s of t)n[s]=!0;for(let s of e)n[s]=!1;return n},ou=({profile:t="full",alsoAllow:e=[],deny:n=[]}={})=>({profile:String(t||"full"),alsoAllow:[...Array.isArray(e)?e:[]].map(String).filter(Boolean).sort(),deny:[...Array.isArray(n)?n:[]].map(String).filter(Boolean).sort()}),oy=({agent:t={}}={})=>{let e=t.tools||{},n=ou(e),s=n.profile,o=n.alsoAllow,r=n.deny,[i,a]=y(s),[l,c]=y(()=>su(o,r)),[d,u]=y(n),p=JSON.stringify([t.id,e]),f=ee(p);L(()=>{f.current!==p&&(f.current=p,a(s),c(su(o,r)),u(n))},[p,s,o,r,n]);let g=F(()=>{let $=new Set(ii(i)),S=[],C=[];for(let[_,k]of Object.entries(l))k&&!$.has(_)?S.push(_):!k&&$.has(_)&&C.push(_);return Jx({profile:i,alsoAllow:S,deny:C})},[i,l]),m=F(()=>Zx({profile:i,toolStates:g}),[i,g]),h=F(()=>{let $=ou(m);return JSON.stringify(d)!==JSON.stringify($)},[d,m]),b=q($=>{a($),c({})},[]),x=q(($,S)=>{c(C=>{let _={...C};return new Set(ii(i)).has($)===S?delete _[$]:_[$]=S,_})},[i]),v=q(()=>{a(d.profile);let $={};for(let S of d.alsoAllow)$[S]=!0;for(let S of d.deny)$[S]=!1;c($)},[d]),w=q(($={})=>{let S=ou($);u(S),a(S.profile),c(su(S.alsoAllow,S.deny))},[]);return{profile:i,toolStates:g,toolsConfig:m,dirty:h,setProfile:b,toggleTool:x,reset:v,markSaved:w}};var Ko=P.bind(T),C2=[{label:"Overview",value:"overview"},{label:"Tools",value:"tools"}],_2=({className:t="w-3.5 h-3.5"})=>Ko` -`,ey=({agent:t=null,agents:e=[],activeTab:n="overview",saving:s=!1,onUpdateAgent:o=async()=>{},onSetLocation:r=()=>{},onSelectTab:i=()=>{},onEdit:a=()=>{},onDelete:l=()=>{},onSetDefault:c=()=>{},onOpenWorkspace:d=()=>{}})=>{let u=Qx({agent:t||{}}),[p,f]=y(!1),g=q(async()=>{if(t){f(!0);try{let b=await o(t.id,{tools:u.toolsConfig},"Tool access updated");u.markSaved(b?.tools||u.toolsConfig)}catch{}finally{f(!1)}}},[t,u.toolsConfig,u.markSaved,o]),m=s||p,h=F(()=>({profile:u.profile,enabledCount:(u.toolStates||[]).filter(b=>b.enabled).length,totalCount:(u.toolStates||[]).length}),[u.profile,u.toolStates]);return t?Ko` +`,ry=({agent:t=null,agents:e=[],activeTab:n="overview",saving:s=!1,onUpdateAgent:o=async()=>{},onSetLocation:r=()=>{},onSelectTab:i=()=>{},onEdit:a=()=>{},onDelete:l=()=>{},onSetDefault:c=()=>{},onOpenWorkspace:d=()=>{}})=>{let u=oy({agent:t||{}}),[p,f]=y(!1),g=q(async()=>{if(t){f(!0);try{let b=await o(t.id,{tools:u.toolsConfig},"Tool access updated");u.markSaved(b?.tools||u.toolsConfig)}catch{}finally{f(!1)}}},[t,u.toolsConfig,u.markSaved,o]),m=s||p,h=F(()=>({profile:u.profile,enabledCount:(u.toolStates||[]).filter(b=>b.enabled).length,totalCount:(u.toolStates||[]).length}),[u.profile,u.toolStates]);return t?Ko`
    @@ -3464,7 +3514,7 @@ Please report this to https://github.com/markedjs/marked.`,t){let s="

    An error onclick=${()=>a(t)} title="Edit agent name" > - <${y2} /> + <${_2} /> ${t.default?Ko`<${ae} tone="cyan">Default`:null}

    @@ -3494,8 +3544,8 @@ Please report this to https://github.com/markedjs/marked.`,t){let s="

    An error />

    - <${_x} - tabs=${x2} + <${Rx} + tabs=${C2} activeTab=${n} onSelectTab=${i} className="flex items-center gap-2 pt-6" @@ -3505,7 +3555,7 @@ Please report this to https://github.com/markedjs/marked.`,t){let s="

    An error

    ${n==="overview"?Ko` - <${Zx} + <${ty} agent=${t} agents=${e} saving=${s} @@ -3519,7 +3569,7 @@ Please report this to https://github.com/markedjs/marked.`,t){let s="

    An error onDelete=${l} /> `:Ko` - <${Xx} + <${sy} agent=${t} tools=${u} /> @@ -3533,7 +3583,7 @@ Please report this to https://github.com/markedjs/marked.`,t){let s="

    An error Select an agent to view details

    - `};var su=P.bind(T),ty=/^[a-z0-9]+(?:-[a-z0-9]+)*$/,ny=/^[a-z0-9]+(?:-[a-z0-9]+)*$/,ou=t=>String(t||"").toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,""),sy=({visible:t=!1,loading:e=!1,onClose:n=()=>{},onSubmit:s=()=>{}})=>{let[o,r]=y(""),[i,a]=y(""),[l,c]=y(""),[d,u]=y(""),[p,f]=y(!1),[g,m]=y(!1);L(()=>{t&&(r(""),a(""),c(""),u(""),f(!1),m(!1))},[t]),L(()=>{if(p)return;let v=ou(o);a(v)},[o,p]),L(()=>{if(g)return;let v=String(i||"").trim();if(!v){c("");return}c(v)},[i,g]);let h=F(()=>`workspace-${String(l||"").trim()}`,[l]),b=String(o||"").trim().length>0&&ty.test(String(i||"").trim())&&ny.test(String(l||"").trim());if(!t)return null;let x=async()=>{let v=String(o||"").trim(),w=String(i||"").trim(),$=String(l||"").trim(),S=`workspace-${$}`;if(!v){u("Display name is required");return}if(!ty.test(w)){u("Agent ID must be lowercase letters, numbers, and hyphens");return}if(!ny.test($)){u("Workspace folder must be lowercase letters, numbers, and hyphens");return}u(""),await s({name:v,id:w,workspaceFolder:S})};return su` + `};var ru=P.bind(T),iy=/^[a-z0-9]+(?:-[a-z0-9]+)*$/,ay=/^[a-z0-9]+(?:-[a-z0-9]+)*$/,iu=t=>String(t||"").toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,""),ly=({visible:t=!1,loading:e=!1,onClose:n=()=>{},onSubmit:s=()=>{}})=>{let[o,r]=y(""),[i,a]=y(""),[l,c]=y(""),[d,u]=y(""),[p,f]=y(!1),[g,m]=y(!1);L(()=>{t&&(r(""),a(""),c(""),u(""),f(!1),m(!1))},[t]),L(()=>{if(p)return;let v=iu(o);a(v)},[o,p]),L(()=>{if(g)return;let v=String(i||"").trim();if(!v){c("");return}c(v)},[i,g]);let h=F(()=>`workspace-${String(l||"").trim()}`,[l]),b=String(o||"").trim().length>0&&iy.test(String(i||"").trim())&&ay.test(String(l||"").trim());if(!t)return null;let x=async()=>{let v=String(o||"").trim(),w=String(i||"").trim(),$=String(l||"").trim(),S=`workspace-${$}`;if(!v){u("Display name is required");return}if(!iy.test(w)){u("Agent ID must be lowercase letters, numbers, and hyphens");return}if(!ay.test($)){u("Workspace folder must be lowercase letters, numbers, and hyphens");return}u(""),await s({name:v,id:w,workspaceFolder:S})};return ru` <${De} visible=${t} onClose=${n} @@ -3541,7 +3591,7 @@ Please report this to https://github.com/markedjs/marked.`,t){let s="

    An error > <${Ne} title="Add Agent" - actions=${su` + actions=${ru`

    - ${d?su`

    ${d}

    `:null} + ${d?ru`

    ${d}

    `:null}
    @@ -3615,12 +3665,12 @@ Please report this to https://github.com/markedjs/marked.`,t){let s="

    An error />

    - `};var oy=P.bind(T),ry=({visible:t=!1,loading:e=!1,agent:n=null,onCancel:s=()=>{},onConfirm:o=()=>{}})=>{let[r,i]=y(!0);return L(()=>{t&&i(!0)},[t]),oy` + `};var cy=P.bind(T),dy=({visible:t=!1,loading:e=!1,agent:n=null,onCancel:s=()=>{},onConfirm:o=()=>{}})=>{let[r,i]=y(!0);return L(()=>{t&&i(!0)},[t]),cy` <${st} visible=${t} title="Delete agent" message=${`Delete "${String(n?.name||n?.id||"agent")}"?`} - details=${oy` + details=${cy`
    <${vn} checked=${r} @@ -3637,7 +3687,7 @@ Please report this to https://github.com/markedjs/marked.`,t){let s="

    An error onCancel=${s} onConfirm=${()=>o({id:String(n?.id||"").trim(),keepWorkspace:r})} /> - `};var ru=P.bind(T),iy=({visible:t=!1,loading:e=!1,agent:n=null,onClose:s=()=>{},onSubmit:o=()=>{}})=>{let[r,i]=y(""),[a,l]=y("");if(L(()=>{t&&(i(String(n?.name||"")),l(""))},[t,n]),!t)return null;let c=async()=>{let d=String(r||"").trim();if(!d){l("Display name is required");return}l(""),await o({id:String(n?.id||"").trim(),patch:{name:d}})};return ru` + `};var au=P.bind(T),uy=({visible:t=!1,loading:e=!1,agent:n=null,onClose:s=()=>{},onSubmit:o=()=>{}})=>{let[r,i]=y(""),[a,l]=y("");if(L(()=>{t&&(i(String(n?.name||"")),l(""))},[t,n]),!t)return null;let c=async()=>{let d=String(r||"").trim();if(!d){l("Display name is required");return}l(""),await o({id:String(n?.id||"").trim(),patch:{name:d}})};return au` <${De} visible=${t} onClose=${s} @@ -3645,7 +3695,7 @@ Please report this to https://github.com/markedjs/marked.`,t){let s="

    An error > <${Ne} title="Edit Agent" - actions=${ru` + actions=${au`

    @@ -3701,14 +3751,14 @@ Please report this to https://github.com/markedjs/marked.`,t){let s="

    An error />

    - `};var ay=P.bind(T),v2=t=>{let e=String(t||"").trim();if(!e)return"";let n=e.match(/[\\/]\.openclaw[\\/](.+)$/);if(n?.[1])return String(n[1]).replace(/\\/g,"/");let s=e.split(/[\\/]/).filter(Boolean);return s[s.length-1]||""},ly=({agents:t=[],loading:e=!1,saving:n=!1,agentsActions:s={},selectedAgentId:o="",activeTab:r="overview",onSelectAgent:i=()=>{},onSelectTab:a=()=>{},onNavigateToBrowseFile:l=()=>{},onSetLocation:c=()=>{}})=>{let{create:d,remove:u,setDefault:p,update:f}=s,[g,m]=y(!1),[h,b]=y(null),[x,v]=y(null);L(()=>{let O=()=>m(!0);return window.addEventListener("alphaclaw:create-agent",O),()=>window.removeEventListener("alphaclaw:create-agent",O)},[]);let w=t.find(O=>O.id===o)||null,$=async({id:O,name:D,workspaceFolder:j})=>{try{let E=await d({id:O,name:D,workspaceFolder:j});m(!1),i(E.id),N("Agent created","success")}catch(E){N(E.message||"Could not create agent","error")}},S=async O=>{try{await p(O),N("Default agent updated","success")}catch(D){N(D.message||"Could not set default agent","error")}},C=async(O,D,j="Agent updated")=>{try{let E=await f(O,D);return N(j,"success"),E}catch(E){throw N(E.message||"Could not update agent","error"),E}},_=async({id:O,patch:D})=>{try{await C(O,D),b(null)}catch{return}},k=async({id:O,keepWorkspace:D})=>{try{await u(O,{keepWorkspace:D}),v(null),N("Agent deleted","success")}catch(j){N(j.message||"Could not delete agent","error")}},A=O=>{let D=v2(O);D&&l(D,{view:"edit",directory:!0})};return e?ay` + `};var py=P.bind(T),M2=t=>{let e=String(t||"").trim();if(!e)return"";let n=e.match(/[\\/]\.openclaw[\\/](.+)$/);if(n?.[1])return String(n[1]).replace(/\\/g,"/");let s=e.split(/[\\/]/).filter(Boolean);return s[s.length-1]||""},fy=({agents:t=[],loading:e=!1,saving:n=!1,agentsActions:s={},selectedAgentId:o="",activeTab:r="overview",onSelectAgent:i=()=>{},onSelectTab:a=()=>{},onNavigateToBrowseFile:l=()=>{},onSetLocation:c=()=>{}})=>{let{create:d,remove:u,setDefault:p,update:f}=s,[g,m]=y(!1),[h,b]=y(null),[x,v]=y(null);L(()=>{let O=()=>m(!0);return window.addEventListener("alphaclaw:create-agent",O),()=>window.removeEventListener("alphaclaw:create-agent",O)},[]);let w=t.find(O=>O.id===o)||null,$=async({id:O,name:D,workspaceFolder:z})=>{try{let E=await d({id:O,name:D,workspaceFolder:z});m(!1),i(E.id),N("Agent created","success")}catch(E){N(E.message||"Could not create agent","error")}},S=async O=>{try{await p(O),N("Default agent updated","success")}catch(D){N(D.message||"Could not set default agent","error")}},C=async(O,D,z="Agent updated")=>{try{let E=await f(O,D);return N(z,"success"),E}catch(E){throw N(E.message||"Could not update agent","error"),E}},_=async({id:O,patch:D})=>{try{await C(O,D),b(null)}catch{return}},k=async({id:O,keepWorkspace:D})=>{try{await u(O,{keepWorkspace:D}),v(null),N("Agent deleted","success")}catch(z){N(z.message||"Could not delete agent","error")}},A=O=>{let D=M2(O);D&&l(D,{view:"edit",directory:!0})};return e?py`
    <${Ce} className="h-5 w-5" />
    - `:ay` - <${ey} + `:py` + <${ry} agent=${w} agents=${t} activeTab=${r} @@ -3722,28 +3772,28 @@ Please report this to https://github.com/markedjs/marked.`,t){let s="

    An error onOpenWorkspace=${A} /> - <${sy} + <${ly} visible=${g} loading=${n} onClose=${()=>m(!1)} onSubmit=${$} /> - <${iy} + <${uy} visible=${!!h} loading=${n} agent=${h} onClose=${()=>b(null)} onSubmit=${_} /> - <${ry} + <${dy} visible=${!!x} loading=${n} agent=${x} onCancel=${()=>v(null)} onConfirm=${k} /> - `};var $2=P.bind(T),iu=({agents:t=[],loading:e=!1,saving:n=!1,agentsActions:s={},selectedAgentId:o="",activeTab:r="overview",onSelectAgent:i=()=>{},onSelectTab:a=()=>{},onNavigateToBrowseFile:l=()=>{},onSetLocation:c=()=>{}})=>$2` - <${ly} + `};var A2=P.bind(T),lu=({agents:t=[],loading:e=!1,saving:n=!1,agentsActions:s={},selectedAgentId:o="",activeTab:r="overview",onSelectAgent:i=()=>{},onSelectTab:a=()=>{},onNavigateToBrowseFile:l=()=>{},onSetLocation:c=()=>{}})=>A2` + <${fy} agents=${t} loading=${e} saving=${n} @@ -3755,7 +3805,7 @@ Please report this to https://github.com/markedjs/marked.`,t){let s="

    An error onNavigateToBrowseFile=${l} onSetLocation=${c} /> -`;var on=P.bind(T),cy=({sqliteSummary:t,sqliteSelectedTable:e,setSqliteSelectedTable:n,sqliteTableOffset:s,setSqliteTableOffset:o,sqliteTableLoading:r,sqliteTableError:i,sqliteTableData:a,kSqlitePageSize:l})=>{let c=Array.isArray(a?.rows)?a.rows:[],d=Array.isArray(a?.columns)&&a.columns.length?a.columns:(t?.objects||[]).find(g=>g?.name===e)?.columns||[],u=Number(a?.totalRows||0),p=s>0,f=s+l{let c=Array.isArray(a?.rows)?a.rows:[],d=Array.isArray(a?.columns)&&a.columns.length?a.columns:(t?.objects||[]).find(g=>g?.name===e)?.columns||[],u=Number(a?.totalRows||0),p=s>0,f=s+l ${t?.objects?.length?on`

    @@ -3853,7 +3903,7 @@ Please report this to https://github.com/markedjs/marked.`,t){let s="

    An error

    `}
    - `};var In=P.bind(T),dy=({pathSegments:t,isDirty:e,isPreviewOnly:n,isDiffView:s,isMarkdownFile:o,viewMode:r,handleChangeViewMode:i,handleSave:a,handleDiscard:l,loading:c,canEditFile:d,isEditBlocked:u,isImageFile:p,isAudioFile:f,isSqliteFile:g,saving:m,deleting:h,restoring:b,canDeleteFile:x,isDeleteBlocked:v,isProtectedFile:w,canRestoreDeletedDiff:$,onRequestDelete:S,onRequestRestore:C})=>In` + `};var In=P.bind(T),my=({pathSegments:t,isDirty:e,isPreviewOnly:n,isDiffView:s,isMarkdownFile:o,viewMode:r,handleChangeViewMode:i,handleSave:a,handleDiscard:l,loading:c,canEditFile:d,isEditBlocked:u,isImageFile:p,isAudioFile:f,isSqliteFile:g,saving:m,deleting:h,restoring:b,canDeleteFile:x,isDeleteBlocked:v,isProtectedFile:w,canRestoreDeletedDiff:$,onRequestDelete:S,onRequestRestore:C})=>In`
    f @@ -3915,7 +3965,7 @@ Please report this to https://github.com/markedjs/marked.`,t){let s="

    An error size="sm" idleLabel="Save" loadingLabel="Saving..." - idleIcon=${pb} + idleIcon=${hb} idleIconClassName="file-viewer-save-icon" className="file-viewer-save-action" /> @@ -3929,13 +3979,13 @@ Please report this to https://github.com/markedjs/marked.`,t){let s="

    An error size="sm" idleLabel="Restore" loadingLabel="Restoring..." - idleIcon=${hb} + idleIcon=${gb} idleIconClassName="file-viewer-save-icon" className="file-viewer-save-action" /> `:null}

    -`;var Go=P.bind(T),uy=({isDiffView:t,onRequestEdit:e,normalizedPath:n,isDeletedDiff:s=!1,isLockedFile:o,isProtectedFile:r,isProtectedLocked:i,handleEditProtectedFile:a})=>Go` +`;var Go=P.bind(T),gy=({isDiffView:t,onRequestEdit:e,normalizedPath:n,isDeletedDiff:s=!1,isLockedFile:o,isProtectedFile:r,isProtectedLocked:i,handleEditProtectedFile:a})=>Go` ${t?Go`
    Viewing unsynced changes
    @@ -3972,14 +4022,14 @@ Please report this to https://github.com/markedjs/marked.`,t){let s="

    An error `:null}

    `:null} -`;var au=t=>{let e=String(t||"");if(!(e.startsWith(`--- +`;var cu=t=>{let e=String(t||"");if(!(e.startsWith(`--- `)||e==="---"))return{entries:[],body:e};let n=e.split(` `);if(n[0]!=="---")return{entries:[],body:e};let s=n.findIndex((a,l)=>l>0&&a==="---");if(s===-1)return{entries:[],body:e};let o=n.slice(1,s),r=n.slice(s+1);return{entries:o.map(a=>{let l=a.indexOf(":");if(l<=0)return null;let c=a.slice(0,l).trim(),d=a.slice(l+1).trim();return c?{key:c,rawValue:d}:null}).filter(a=>a!==null),body:r.join(` -`).replace(/^\n+/,"")}},lu=t=>{let e=String(t||"").trim();if(!e)return e;if(e.startsWith("{")&&e.endsWith("}")||e.startsWith("[")&&e.endsWith("]"))try{let n=JSON.parse(e);return JSON.stringify(n,null,2)}catch{return e}return e};var He=t=>String(t||"").replaceAll("&","&").replaceAll("<","<").replaceAll(">",">"),qo=(t,e)=>String(t||"").split(` -`).map((n,s)=>({lineNumber:s+1,html:e(n)}));var w2=/(^|[^\w.#-])(-?\d+(?:\.\d+)?(?:px|em|rem|vh|vw|%|deg|s|ms)?)(?=$|[^\w-])/g,k2=t=>{let e=He(t);return e=e.replace(/@[a-zA-Z-]+/g,'$&'),e=e.replace(/#[0-9a-fA-F]{3,8}\b/g,'$&'),e=e.replace(w2,'$1$2'),e=e.replace(/(^|[;{\s])([a-zA-Z-]+)(\s*:)/g,'$1$2$3'),e},S2=(t,e,n)=>{let s=e+1;for(;s{let n=String(t||""),s=[],o=0,r=e;for(;of!==-1);if(c.length===0){s.push({kind:"text",value:n.slice(o)});break}let d=Math.min(...c);if(d>o&&(s.push({kind:"text",value:n.slice(o,d)}),o=d),i===d){let f=n.indexOf("*/",d+2);if(f===-1){s.push({kind:"comment",value:n.slice(d)}),r=!0;break}s.push({kind:"comment",value:n.slice(d,f+2)}),o=f+2;continue}let u=n[d],p=S2(n,d,u);if(p===-1){s.push({kind:"string",value:n.slice(d)});break}s.push({kind:"string",value:n.slice(d,p+1)}),o=p+1}return{parts:s,inBlockComment:r}},al=(t,e={inBlockComment:!1})=>{let n=C2(t,!!e?.inBlockComment);return{html:n.parts.map(o=>o.kind==="comment"?`${He(o.value)}`:o.kind==="string"?`${He(o.value)}`:k2(o.value)).join(""),state:{inBlockComment:n.inBlockComment}}},py=t=>{let e=String(t||"").split(` -`),n={inBlockComment:!1};return e.map((s,o)=>{let r=al(s,n);return n=r.state,{lineNumber:o+1,html:r.html}})};var _2=/\b(await|break|case|catch|class|const|continue|debugger|default|delete|do|else|export|extends|finally|for|from|function|if|import|in|instanceof|let|new|of|return|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/g,M2=/(^|[^\w.])(-?(?:0x[a-fA-F0-9]+|\d+(?:\.\d+)?(?:[eE][+-]?\d+)?))(?=$|[^\w.])/g,A2=t=>{let e=He(t);return e=e.replace(_2,'$1'),e=e.replace(/\b(true|false)\b/g,'$1'),e=e.replace(/\b(null|undefined)\b/g,'$1'),e=e.replace(M2,'$1$2'),e},T2=(t,e,n)=>{let s=e+1;for(;s{let n=String(t||""),s=[],o=0,r=e;for(;om!==-1);if(u.length===0){s.push({kind:"text",value:n.slice(o)});break}let p=Math.min(...u);if(p>o&&(s.push({kind:"text",value:n.slice(o,p)}),o=p),i===p){s.push({kind:"comment",value:n.slice(p)});break}if(a===p){let m=n.indexOf("*/",p+2);if(m===-1){s.push({kind:"comment",value:n.slice(p)}),r=!0;break}s.push({kind:"comment",value:n.slice(p,m+2)}),o=m+2;continue}let f=n[p],g=T2(n,p,f);if(g===-1){s.push({kind:"string",value:n.slice(p)});break}s.push({kind:"string",value:n.slice(p,g+1)}),o=g+1}return{parts:s,inBlockComment:r}},ll=(t,e={inBlockComment:!1})=>{let n=P2(t,!!e?.inBlockComment);return{html:n.parts.map(o=>o.kind==="comment"?`${He(o.value)}`:o.kind==="string"?`${He(o.value)}`:A2(o.value)).join(""),state:{inBlockComment:n.inBlockComment}}},fy=t=>{let e=String(t||"").split(` -`),n={inBlockComment:!1};return e.map((s,o)=>{let r=ll(s,n);return n=r.state,{lineNumber:o+1,html:r.html}})};var hy=t=>He(t).replace(/(&[a-zA-Z][a-zA-Z0-9]+;|&#\d+;|&#x[0-9a-fA-F]+;)/g,'$1'),R2=t=>{let e=t.match(/^\s*/)?.[0]||"",n=t.slice(e.length);return`${He(e)}${He(n)}`},L2=t=>{let e=/([:@A-Za-z_][\w:.-]*)(\s*=\s*(?:"[^"]*"|'[^']*'|[^\s"'=<>`]+))?/g,n="",s=0,o=e.exec(t);for(;o;){let r=o[0],i=o[1],a=o[2]||"",l=o.index,c=l+r.length;if(l>s&&(n+=He(t.slice(s,l))),n+=`${He(i)}`,a){let d=a.indexOf("=");if(d!==-1){let u=a.slice(0,d),p=a.slice(d+1);n+=`${He(u)}=${R2(p)}`}else n+=He(a)}s=c,o=e.exec(t)}return s{if(/^$/.test(t)||/^${He(t)}`;let e=t.match(/^<\s*(\/?)\s*([A-Za-z][\w:-]*)([\s\S]*?)(\/?)\s*>$/);if(!e)return`${He(t)}`;let n=e[1]==="/",s=e[2],o=e[3]||"",r=e[4]==="/",i=n?"</":"<",a=n?"":L2(o),l=r?"/>":">";return`${i}${He(s)}${a}${l}`},ai=t=>{let e=/|]*>|<\/?[A-Za-z][^>]*>/gi,n=String(t||""),s="",o=0,r=e.exec(n);for(;r;){let i=r[0],a=r.index,l=a+i.length;a>o&&(s+=hy(n.slice(o,a))),s+=E2(i),o=l,r=e.exec(n)}return o{let s=new RegExp(`<\\/?\\s*${e}\\b[^>]*>`,"ig").exec(t);return s?{text:s[0],start:s.index,end:s.index+s[0].length,isClosing:/^<\s*\//.test(s[0])}:null},I2=(t,e)=>{let n="",s=0,o=e.mode,r=e.languageState;for(;sf&&!f.isClosing).sort((f,g)=>f.start-g.start);if(c.length===0){n+=ai(i),s=t.length;break}let d=c[0],u=s+d.start,p=s+d.end;n+=ai(t.slice(s,u)),n+=ai(t.slice(u,p)),o=/<\s*script\b/i.test(d.text)?"script":"style",r={inBlockComment:!1},s=p}return{html:n,state:{mode:o,languageState:r}}},my=t=>{let e=String(t||"").split(` -`),n={mode:"html",languageState:{inBlockComment:!1}};return e.map((s,o)=>{let r=I2(s,n);return n=r.state,{lineNumber:o+1,html:r.html}})};var D2=t=>{let e=[],n=String(t||""),s=/"([^"\\]|\\.)*"/g,o=0,r=s.exec(n);for(;r;){let i=r.index,a=s.lastIndex,l=r[0],c=n.slice(a),d=/^\s*:/.test(c);i>o&&e.push({kind:"text",value:n.slice(o,i)}),e.push({kind:d?"key":"string",value:l}),o=a,r=s.exec(n)}return o{let e=He(t);return e=e.replace(/(^|[^\w.])(-?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?)(?=$|[^\w.])/g,'$1$2'),e=e.replace(/\b(true|false)\b/g,'$1'),e=e.replace(/\bnull\b/g,'null'),e=e.replace(/([{}\[\],:])/g,'$1'),e},O2=t=>D2(t).map(e=>e.kind==="key"?`${He(e.value)}`:e.kind==="string"?`${He(e.value)}`:N2(e.value)).join(""),gy=t=>qo(t,O2);var by=t=>{let e=He(t);return e=e.replace(/`([^`]+)`/g,'`$1`'),e=e.replace(/\*\*([^*]+)\*\*/g,'**$1**'),e=e.replace(/\[([^\]]+)\]\(([^)]+)\)/g,'[$1]($2)'),e},B2=t=>/^#{1,6}\s/.test(t)?`${He(t)}`:/^>\s/.test(t)?`${He(t)}`:/^```/.test(t)?`${He(t)}`:/^\|[-\s|]+\|$/.test(t)?`${He(t)}`:/^\s*[-*]\s/.test(t)?by(t).replace(/^(\s*)([-*])/,'$1$2'):by(t),xy=t=>qo(t,B2);var yy=t=>{let n=String(t||"").toLowerCase().replace(/(\.bak)+$/i,"");return/\.(md|markdown|mdx)$/i.test(n)?"markdown":/\.(json|jsonl)$/i.test(n)?"json":/\.(html|htm)$/i.test(n)?"html":/\.(js|mjs|cjs)$/i.test(n)?"javascript":/\.(css|scss)$/i.test(n)?"css":"plain"},dl=(t,e)=>e==="markdown"?xy(t):e==="json"?gy(t):e==="html"?my(t):e==="javascript"?fy(t):e==="css"?py(t):qo(t,n=>He(n));var li=P.bind(T),vy=({isMarkdownFile:t,parsedFrontmatter:e,frontmatterCollapsed:n,setFrontmatterCollapsed:s})=>!t||e.entries.length<=0?null:li` +`).replace(/^\n+/,"")}},du=t=>{let e=String(t||"").trim();if(!e)return e;if(e.startsWith("{")&&e.endsWith("}")||e.startsWith("[")&&e.endsWith("]"))try{let n=JSON.parse(e);return JSON.stringify(n,null,2)}catch{return e}return e};var He=t=>String(t||"").replaceAll("&","&").replaceAll("<","<").replaceAll(">",">"),qo=(t,e)=>String(t||"").split(` +`).map((n,s)=>({lineNumber:s+1,html:e(n)}));var T2=/(^|[^\w.#-])(-?\d+(?:\.\d+)?(?:px|em|rem|vh|vw|%|deg|s|ms)?)(?=$|[^\w-])/g,P2=t=>{let e=He(t);return e=e.replace(/@[a-zA-Z-]+/g,'$&'),e=e.replace(/#[0-9a-fA-F]{3,8}\b/g,'$&'),e=e.replace(T2,'$1$2'),e=e.replace(/(^|[;{\s])([a-zA-Z-]+)(\s*:)/g,'$1$2$3'),e},R2=(t,e,n)=>{let s=e+1;for(;s{let n=String(t||""),s=[],o=0,r=e;for(;of!==-1);if(c.length===0){s.push({kind:"text",value:n.slice(o)});break}let d=Math.min(...c);if(d>o&&(s.push({kind:"text",value:n.slice(o,d)}),o=d),i===d){let f=n.indexOf("*/",d+2);if(f===-1){s.push({kind:"comment",value:n.slice(d)}),r=!0;break}s.push({kind:"comment",value:n.slice(d,f+2)}),o=f+2;continue}let u=n[d],p=R2(n,d,u);if(p===-1){s.push({kind:"string",value:n.slice(d)});break}s.push({kind:"string",value:n.slice(d,p+1)}),o=p+1}return{parts:s,inBlockComment:r}},al=(t,e={inBlockComment:!1})=>{let n=L2(t,!!e?.inBlockComment);return{html:n.parts.map(o=>o.kind==="comment"?`${He(o.value)}`:o.kind==="string"?`${He(o.value)}`:P2(o.value)).join(""),state:{inBlockComment:n.inBlockComment}}},by=t=>{let e=String(t||"").split(` +`),n={inBlockComment:!1};return e.map((s,o)=>{let r=al(s,n);return n=r.state,{lineNumber:o+1,html:r.html}})};var E2=/\b(await|break|case|catch|class|const|continue|debugger|default|delete|do|else|export|extends|finally|for|from|function|if|import|in|instanceof|let|new|of|return|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/g,I2=/(^|[^\w.])(-?(?:0x[a-fA-F0-9]+|\d+(?:\.\d+)?(?:[eE][+-]?\d+)?))(?=$|[^\w.])/g,D2=t=>{let e=He(t);return e=e.replace(E2,'$1'),e=e.replace(/\b(true|false)\b/g,'$1'),e=e.replace(/\b(null|undefined)\b/g,'$1'),e=e.replace(I2,'$1$2'),e},N2=(t,e,n)=>{let s=e+1;for(;s{let n=String(t||""),s=[],o=0,r=e;for(;om!==-1);if(u.length===0){s.push({kind:"text",value:n.slice(o)});break}let p=Math.min(...u);if(p>o&&(s.push({kind:"text",value:n.slice(o,p)}),o=p),i===p){s.push({kind:"comment",value:n.slice(p)});break}if(a===p){let m=n.indexOf("*/",p+2);if(m===-1){s.push({kind:"comment",value:n.slice(p)}),r=!0;break}s.push({kind:"comment",value:n.slice(p,m+2)}),o=m+2;continue}let f=n[p],g=N2(n,p,f);if(g===-1){s.push({kind:"string",value:n.slice(p)});break}s.push({kind:"string",value:n.slice(p,g+1)}),o=g+1}return{parts:s,inBlockComment:r}},ll=(t,e={inBlockComment:!1})=>{let n=O2(t,!!e?.inBlockComment);return{html:n.parts.map(o=>o.kind==="comment"?`${He(o.value)}`:o.kind==="string"?`${He(o.value)}`:D2(o.value)).join(""),state:{inBlockComment:n.inBlockComment}}},xy=t=>{let e=String(t||"").split(` +`),n={inBlockComment:!1};return e.map((s,o)=>{let r=ll(s,n);return n=r.state,{lineNumber:o+1,html:r.html}})};var yy=t=>He(t).replace(/(&[a-zA-Z][a-zA-Z0-9]+;|&#\d+;|&#x[0-9a-fA-F]+;)/g,'$1'),B2=t=>{let e=t.match(/^\s*/)?.[0]||"",n=t.slice(e.length);return`${He(e)}${He(n)}`},F2=t=>{let e=/([:@A-Za-z_][\w:.-]*)(\s*=\s*(?:"[^"]*"|'[^']*'|[^\s"'=<>`]+))?/g,n="",s=0,o=e.exec(t);for(;o;){let r=o[0],i=o[1],a=o[2]||"",l=o.index,c=l+r.length;if(l>s&&(n+=He(t.slice(s,l))),n+=`${He(i)}`,a){let d=a.indexOf("=");if(d!==-1){let u=a.slice(0,d),p=a.slice(d+1);n+=`${He(u)}=${B2(p)}`}else n+=He(a)}s=c,o=e.exec(t)}return s{if(/^$/.test(t)||/^${He(t)}`;let e=t.match(/^<\s*(\/?)\s*([A-Za-z][\w:-]*)([\s\S]*?)(\/?)\s*>$/);if(!e)return`${He(t)}`;let n=e[1]==="/",s=e[2],o=e[3]||"",r=e[4]==="/",i=n?"</":"<",a=n?"":F2(o),l=r?"/>":">";return`${i}${He(s)}${a}${l}`},ai=t=>{let e=/|]*>|<\/?[A-Za-z][^>]*>/gi,n=String(t||""),s="",o=0,r=e.exec(n);for(;r;){let i=r[0],a=r.index,l=a+i.length;a>o&&(s+=yy(n.slice(o,a))),s+=H2(i),o=l,r=e.exec(n)}return o{let s=new RegExp(`<\\/?\\s*${e}\\b[^>]*>`,"ig").exec(t);return s?{text:s[0],start:s.index,end:s.index+s[0].length,isClosing:/^<\s*\//.test(s[0])}:null},W2=(t,e)=>{let n="",s=0,o=e.mode,r=e.languageState;for(;sf&&!f.isClosing).sort((f,g)=>f.start-g.start);if(c.length===0){n+=ai(i),s=t.length;break}let d=c[0],u=s+d.start,p=s+d.end;n+=ai(t.slice(s,u)),n+=ai(t.slice(u,p)),o=/<\s*script\b/i.test(d.text)?"script":"style",r={inBlockComment:!1},s=p}return{html:n,state:{mode:o,languageState:r}}},vy=t=>{let e=String(t||"").split(` +`),n={mode:"html",languageState:{inBlockComment:!1}};return e.map((s,o)=>{let r=W2(s,n);return n=r.state,{lineNumber:o+1,html:r.html}})};var V2=t=>{let e=[],n=String(t||""),s=/"([^"\\]|\\.)*"/g,o=0,r=s.exec(n);for(;r;){let i=r.index,a=s.lastIndex,l=r[0],c=n.slice(a),d=/^\s*:/.test(c);i>o&&e.push({kind:"text",value:n.slice(o,i)}),e.push({kind:d?"key":"string",value:l}),o=a,r=s.exec(n)}return o{let e=He(t);return e=e.replace(/(^|[^\w.])(-?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?)(?=$|[^\w.])/g,'$1$2'),e=e.replace(/\b(true|false)\b/g,'$1'),e=e.replace(/\bnull\b/g,'null'),e=e.replace(/([{}\[\],:])/g,'$1'),e},z2=t=>V2(t).map(e=>e.kind==="key"?`${He(e.value)}`:e.kind==="string"?`${He(e.value)}`:j2(e.value)).join(""),$y=t=>qo(t,z2);var wy=t=>{let e=He(t);return e=e.replace(/`([^`]+)`/g,'`$1`'),e=e.replace(/\*\*([^*]+)\*\*/g,'**$1**'),e=e.replace(/\[([^\]]+)\]\(([^)]+)\)/g,'[$1]($2)'),e},U2=t=>/^#{1,6}\s/.test(t)?`${He(t)}`:/^>\s/.test(t)?`${He(t)}`:/^```/.test(t)?`${He(t)}`:/^\|[-\s|]+\|$/.test(t)?`${He(t)}`:/^\s*[-*]\s/.test(t)?wy(t).replace(/^(\s*)([-*])/,'$1$2'):wy(t),ky=t=>qo(t,U2);var Sy=t=>{let n=String(t||"").toLowerCase().replace(/(\.bak)+$/i,"");return/\.(md|markdown|mdx)$/i.test(n)?"markdown":/\.(json|jsonl)$/i.test(n)?"json":/\.(html|htm)$/i.test(n)?"html":/\.(js|mjs|cjs)$/i.test(n)?"javascript":/\.(css|scss)$/i.test(n)?"css":"plain"},dl=(t,e)=>e==="markdown"?ky(t):e==="json"?$y(t):e==="html"?vy(t):e==="javascript"?xy(t):e==="css"?by(t):qo(t,n=>He(n));var li=P.bind(T),Cy=({isMarkdownFile:t,parsedFrontmatter:e,frontmatterCollapsed:n,setFrontmatterCollapsed:s})=>!t||e.entries.length<=0?null:li`