@promptctl/cc-candybar 1.85.0 → 1.87.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -24,34 +24,36 @@ import{createRequire as e}from"node:module";import t from"node:process";import{j
24
24
  `),n=0,r=0;for(let e of t){let t=k(e);n=Math.max(n,t);let i=e.split(/\s+/);for(let e of i)e.length>0&&(r=Math.max(r,k(e)))}let i=Rt(e.maxWidth);return{minimum:Math.min(r,i),maximum:Math.min(n,i)}}_expandTabs(e){return e.includes(` `)?e.replace(/\t/g,` `.repeat(this._tabSize)):e}_buildSegments(e,t,n){let r=t=>Math.max(0,Math.min(t,e.length)),i=new Set([0,e.length]);for(let e of this._spans)i.add(r(e.start)),i.add(r(e.end));let a=[...i].sort((e,t)=>e-t),o=new Map(a.map((e,t)=>[e,t])),s=a.slice(0,-1).map(()=>t);for(let e of this._spans){let t=r(e.end),i=ri(n,e.style),c=o.get(r(e.start));for(let e=c;a[e]<t;e++)s[e]=s[e].add(i)}return s.map((t,n)=>new V(e.slice(a[n],a[n+1]),t.isNull?void 0:t))}_justifyLines(e,t,n,r){return r===`full`?e.map((r,i)=>i===e.length-1?r:this._fillLine(r,t,n)):e.map(e=>[...this._justifyLine(e,t,r)])}*_justifyLine(e,t,n){switch(n){case`center`:case`right`:{let r=V.adjustLineLength(e,V.getLineLength(e)-$r(e),void 0,!1),i=Math.max(t-V.getLineLength(r),0),a=n===`center`?Math.floor(i/2):i;a>0&&(yield new V(` `.repeat(a))),yield*r;let o=i-a;o>0&&(yield new V(` `.repeat(o)));break}case`left`:yield*V.adjustLineLength(e,Math.max(t,V.getLineLength(e)));break;default:yield*e;break}}_fillLine(e,t,n){let r=Qr(e),i=r.split(` `);r.endsWith(` `)&&i.pop();let a=i.length-1,o=Array(a).fill(1),s=i.reduce((e,t)=>e+k(t),0)+a;for(let e=0;s<t&&a>0;e=(e+1)%a)o[a-1-e]+=1,s+=1;let c=[],l=0;for(let e=0;e<i.length;e+=1)l+=k(i[e]),c.push(l),l+=1,e<a&&c.push(l);let u=V.divide(e,c),d=(e,t)=>e.filter(e=>e.hasText).at(t)?.style??n,f=[];for(let e=0;e<i.length;e+=1)if(f.push(...u[e*2]),e<a){let t=d(u[e*2],-1),r=d(u[e*2+2],0),i=t.equals(r)?t:n;f.push(new V(` `.repeat(o[e]),i.isNull?void 0:i))}return f}*_fitLine(e,t,n){let r=V.getLineLength(e);if(r-$r(e)<=t){yield*V.adjustLineLength(e,Math.min(r,t),void 0,!1);return}if(n===`ellipsis`&&t>0){yield*V.adjustLineLength(e,t-1,void 0,!1),yield new V(`…`);return}yield*V.adjustLineLength(e,t,void 0,!1)}},oi=class{items;joiner;constructor(e,t){this.items=e,this.joiner=t}*render(e){let t=this.items;if(t.length!==0){yield*this.joiner.join(null,t[0]).render(e);for(let n=0;n<t.length;n++){let r=t[n];yield*r.render(e);let i=n+1<t.length?t[n+1]:null;yield*this.joiner.join(r,i).render(e)}yield V.line()}}};const si={*render(e){}};var ci=class{_text;_style;constructor(e,t){this._text=e,this._style=t}*render(e){yield new V(this._text,this._style)}};function li(e){return{render:e}}function ui(e){return new B({color:e.bgcolor})}function di(e){return e!==void 0&&!e.isDefault?e:void 0}function fi(e){return new B({bgcolor:e}).drawnColors().bgcolor}function*pi(e,t){e!==``&&(yield new V(e,new B({color:fi(t)})))}function mi(e,t){let{color:n,bgcolor:r}=e.drawnColors(t??M.TRUECOLOR);if(n===void 0||r===void 0)return!1;let i=n.fixedValue,a=r.fixedValue;return i!==void 0&&a!==void 0?R.fromRgba(i).deltaE(R.fromRgba(a))<.04:n.number===r.number}const hi=Object.freeze({glyph:``,divider:``,lead:``,tail:``});var gi=class{_glyph;_divider;_lead;_tail;constructor(e=hi){this._glyph=e.glyph,this._divider=e.divider,this._lead=e.lead,this._tail=e.tail}join(e,t){let n=this._glyph,r=this._divider,i=this._lead,a=this._tail;return li(function*(o){let s=e?.edgeStyle(`right`,o),c=di(s?.bgcolor),l=di(t?.edgeStyle(`left`,o).bgcolor);if(c===void 0){l!==void 0&&(yield*pi(i,l));return}if(l===void 0){yield*pi(a,c);return}let u=new B({color:fi(c),bgcolor:l});yield mi(u,o.colorSystem)?new V(r,new B({color:s?.color,bgcolor:c})):new V(n,u)})}},_i=class{_left;_right;_separator;constructor(e){this._left=e?.left??``,this._right=e?.right??``,this._separator=e?.separator??` `}*_emit(e,t,n){if(!(e===null&&t===null)){if(e===null){yield new V(this._left,ui(t.edgeStyle(`left`,n)));return}if(t===null){yield new V(this._right,ui(e.edgeStyle(`right`,n)));return}yield new V(this._right,ui(e.edgeStyle(`right`,n))),this._separator.length>0&&(yield new V(this._separator)),yield new V(this._left,ui(t.edgeStyle(`left`,n)))}}join(e,t){return li(n=>this._emit(e,t,n))}},vi=class{_separator;_style;constructor(e){this._separator=e?.separator??` | `,this._style=e?.style??B.parse(`dim`)}join(e,t){return e===null||t===null?si:new ci(this._separator,this._style)}};function yi(e,t){if(e.isControl||e.text.length===0)return;let n=e.style;return!n||n.isNull?{text:e.text,sgrCodes:``,link:void 0}:{text:e.text,sgrCodes:t.colorSystem===null?``:n.toSgrCodes(t.colorSystem),link:t.hyperlinks?n.link:void 0}}function bi(e,t){let n=[];for(let r of e){let e=yi(r,t);e&&n.push(e)}if(n.length===0)return``;let r=[],i=0;for(;i<n.length;){let e=n[i].sgrCodes,t=i+1;for(;t<n.length&&n[t].sgrCodes===e;)t++;e.length>0&&r.push(`\x1b[${e}m`);let a=i;for(;a<t;){let e=n[a].link,i=a+1;for(;i<t&&n[i].link===e;)i++;if(e){r.push(qr(e));for(let e=a;e<i;e++)r.push(n[e].text);r.push(`\x1B]8;;\x1B\\`)}else for(let e=a;e<i;e++)r.push(n[e].text);a=i}e.length>0&&r.push(`\x1B[0m`),i=t}return r.join(``)}function xi(e,t){let n=t?.width??80,r={};t?.env!==void 0&&(r.env=t.env),t?.isTTY!==void 0&&(r.isTTY=t.isTTY);let i=t?.colorSystem,a=an(i===void 0?M.TRUECOLOR:i,r),o={colorSystem:t?.noColor?null:a.colorSystem,hyperlinks:t?.hyperlinks??a.hyperlinks},s={maxWidth:n,isTerminal:!1,encoding:`utf-8`,asciiOnly:!1,colorSystem:o.colorSystem};return bi(e.render(s),o)}function Si(e,t){let n=[...e.render(t)],r=0;for(let e of n)r+=e.cellLength;return{segments:n,width:r}}const Ci={segments:[],width:0},wi={left:()=>0,justify:()=>0,center:e=>Math.floor(e/2),right:e=>e};function Ti(e,t){return wi[e](t)}function Ei(e,t,n,r){let i=Math.max(0,r-1),a=e===`justify`&&!t&&i>0&&n>0?n:0,o=i>0?Math.floor(a/i):0,s=a-o*i;return Array.from({length:i},(e,t)=>o+ +(t<s))}var Di=class{items;joiner;gap;align;constructor(e,t){this.items=e,this.joiner=t?.joiner,this.gap=t?.gap??0,this.align=t?.align??`left`}*render(e){let t=this.items;if(t.length===0)return;let n=Math.max(1,e.maxWidth),r=this.gap,i=this.joiner,a=t.map(t=>Si(t,e)),o=n=>i?Si(i.join(null,t[n]),e):Ci,s=n=>i?Si(i.join(t[n],null),e):Ci,c=(n,r)=>i?Si(i.join(t[n],t[r]),e):Ci,l=[],u=null,d=r>0?{segments:[new V(` `.repeat(r))],width:r}:Ci;for(let e=0;e<t.length;e++){let t=a[e];if(u===null){let n=o(e),r=s(e),i=n.width>0?[n,t]:[t],a=[i.length-1];u={blocks:i,width:n.width+t.width,lastIndex:e,itemBlockIndices:a},u.endCap=r;continue}let i=u.lastIndex,f=c(i,e),p=s(e),m=(r>0?r:0)+f.width+(r>0?r:0)+t.width;if(u.width+m+p.width<=n)r>0&&u.blocks.push(d),f.width>0&&u.blocks.push(f),r>0&&u.blocks.push(d),u.blocks.push(t),u.itemBlockIndices.push(u.blocks.length-1),u.width+=m,u.lastIndex=e,u.endCap=p;else{let n=u.endCap;n.width>0&&u.blocks.push(n),u.width+=n.width,l.push(u);let r=o(e),i=s(e),a=r.width>0?[r,t]:[t],c=[a.length-1];u={blocks:a,width:r.width+t.width,lastIndex:e,itemBlockIndices:c},u.endCap=i}}let f=u;{let e=f.endCap;e.width>0&&f.blocks.push(e),f.width+=e.width,l.push(f)}let p=this.align;for(let e=0;e<l.length;e++){let t=l[e],r=e===l.length-1,i=Math.max(0,n-t.width),a=Ti(p,i),o=Ei(p,r,i,t.itemBlockIndices.length),s=new Map;t.itemBlockIndices.forEach((e,t)=>s.set(e,t)),a>0&&(yield new V(` `.repeat(a)));for(let e=0;e<t.blocks.length;e++){let n=s.get(e);if(n!==void 0&&n>0){let e=o[n-1];e>0&&(yield new V(` `.repeat(e)))}yield*t.blocks[e].segments}yield V.line()}}measure(e){let t=this.items;if(t.length===0)return{minimum:0,maximum:0};let n=0,r=0;for(let i=0;i<t.length;i++){let a=Si(t[i],e).width,o=this.joiner?Si(this.joiner.join(null,t[i]),e).width:0,s=this.joiner?Si(this.joiner.join(t[i],null),e).width:0;n=Math.max(n,a+o+s),r+=a,i>0&&(r+=this.gap*2,this.joiner&&(r+=Si(this.joiner.join(t[i-1],t[i]),e).width))}return this.joiner&&(r+=Si(this.joiner.join(null,t[0]),e).width,r+=Si(this.joiner.join(t[t.length-1],null),e).width),{minimum:n,maximum:r}}};const Oi=[`primary`,`secondary`,`accent`],ki={"secondary-accent":[`secondary`,`accent`],"primary-secondary":[`primary`,`secondary`],primary:[`primary`]},Ai=`accent`,ji=[0,.5,1],U=e=>e.flatMap(e=>ji.map(t=>({hue:e,tone:t}))),Mi=U(Oi.filter(e=>Object.values(ki).some(t=>t.includes(e)))),Ni=e=>{let t=0,n=.5;for(let r=e;r>0;r>>=1,n/=2)t+=n*(r&1);return t},Pi=[`van-der-corput`,`golden-angle`,`ends-interleaved`,`monotonic`,`uniform`],Fi=e=>typeof e==`string`&&Pi.includes(e),Ii={"van-der-corput":Ni,"golden-angle":e=>e*.6180339887498949%1,"ends-interleaved":(e,t)=>((e%2==0?e/2:t-1-(e-1)/2)+.5)/t,monotonic:(e,t)=>(e+.5)/t,uniform:()=>.5},Li=e=>Ii[e??`van-der-corput`];function Ri(e){let t=0,n=1;for(let{index:r,count:i,distribution:a}of e)t+=a(r,i)*n,n*=.37;return t%1}const zi=(e,t)=>Math.floor(e*t),Bi=(e,t)=>Math.round(e*t)%t;function Vi(e,t,n){let r=e[n(t===void 0?0:t.distribution(t.index,t.count),e.length)];if(r===void 0)throw Error(`vocabularySelect: empty vocabulary`);return r}function Hi(e,t){let n=t.findIndex(e=>e.axis===`cell`),r=n===-1?t:t.slice(0,n);return{hue:Vi(e,r.at(-1),zi),tone:Vi(ji,t[r.length],Bi)}}function Ui(e,t){let n=e.get(t);if(n===void 0)throw Error(`palette "${e.name}" has no "${t}" role; decoration needs it`);return n}function Wi(e,t){let n=Gi.get(e);n===void 0&&(n=new Map,Gi.set(e,n));let r=`${t.hue}|${t.tone}`,i=n.get(r);if(i!==void 0)return i;let a=R.fromRgba(Ui(e,t.hue)),o=R.fromRgba(Ui(e,`surface`)),s=(e,t)=>e.mixAxes(a,{l:t,c:.8,h:1,alpha:0}),c=s(o.mixAxes(R.fromRgba(Ui(e,`background`)),{l:.5,c:0,h:0,alpha:0}),0).mixAxes(s(o,.35),{l:t.tone,c:t.tone,h:t.tone,alpha:0}).toRgba();return n.set(r,c),c}const Gi=new WeakMap,Ki=(e,t,n)=>Wi(e,Hi(t,n)),qi=2.2;function Ji(e,t,n){let r=Yi(e,t,n);if(`refused`in r)throw Error(r.refused);return r.state}function Yi(e,t,n){let r=Xi.get(e);r===void 0&&(r=new Map,Xi.set(e,r));let i=`${t}|${n}`,a=r.get(i);if(a!==void 0)return a;let o=Zi(e,t,n);return r.set(i,o),o}const Xi=new WeakMap;function Zi(e,t,n){let r=Mi.map(t=>Xn(Wi(e,t),M.TRUECOLOR)),i=hn(Ui(e,`surface`),Ui(e,t),.92),a=Ui(e,`foreground`),o=r.reduce((e,t)=>Jn(e,t,qi),a),s=[...Array.from({length:13},(e,t)=>hn(i,a,t/12)),o].find(e=>r.every(t=>Yt(Xn(e,M.TRUECOLOR),t)>=qi));if(s===void 0)return{refused:`palette "${e.name}": "${t}" cannot clear the ${qi} state floor even beyond foreground`};let c=Yn(s,n,(e,t)=>r.every(n=>Yt(e,t(n))>=qi));return c===void 0?{refused:`palette "${e.name}": "${t}" cannot clear the ${qi} state floor on the colours drawn at depth ${M[n]}`}:{state:c}}const Qi=4.5;function $i(e,t,n){let r=ea.get(e);r===void 0&&(r=new Map,ea.set(e,r));let i=`${t.hex}|${n}`,a=r.get(i);if(a!==void 0)return a;let o=qn(t),s=Jn([`background`,`foreground`].map(t=>Ui(e,t)).reduce((e,t)=>Yt(o,t)<Yt(o,e)?t:e),t,Qi,n);return r.set(i,s),s}const ea=new WeakMap,ta={base:.42,perDepth:.14,cap:.75},na={floor:.12,span:.8};function ra(e,t){return Oi[(Oi.indexOf(e)+t)%Oi.length]}const ia={triggerPlane:.1,nestedPlane:.035,nestedTriggerPlane:.08};function aa(e,t,n){let r=`${t.hue}|${t.depth}|${n}`,i=da.get(e);i===void 0&&(i=new Map,da.set(e,i));let a=i.get(r);if(a!==void 0)return a;let o=Ji(e,ra(t.hue,t.depth),n),s=ua(e,t,o,n),c=Yn(sa(e,t).plane,n,(e,t)=>s.every(([n,r])=>oa(e,t(n))>=r));if(c===void 0)throw Error(`palette "${e.name}": the ${t.hue} band at depth ${t.depth} cannot keep its floors on the colours drawn at depth ${M[n]}`);let l={state:o,plane:c};return i.set(r,l),l}const oa=(e,t)=>R.fromRgba(e).deltaE(R.fromRgba(t));function sa(e,t){let n=`${t.hue}|${t.depth}`,r=ca.get(e);r===void 0&&(r=new Map,ca.set(e,r));let i=r.get(n);if(i!==void 0)return i;let a=la(e,t);return r.set(n,a),a}const ca=new WeakMap;function la(e,t){let n=Ji(e,ra(t.hue,t.depth),M.TRUECOLOR),r=Math.min(ta.cap,ta.base+ta.perDepth*t.depth);return{state:n,plane:hn(n,Ui(e,`background`),r)}}function ua(e,t,n,r){let{hue:i,depth:a}=t,o=t=>sa(e,{hue:i,depth:t}).state,s=t=>sa(e,{hue:i,depth:t}).plane,c=e=>Xn(e,M.TRUECOLOR),l=s(a),u=(e,t)=>oa(c(l),c(t))>=e?e:0,d=ra(i,a+1),f=Yi(e,d,r),p=Yi(e,d,M.TRUECOLOR);return[[n,u(ia.triggerPlane,o(a))],...`state`in f&&`state`in p?[[f.state,u(ia.nestedTriggerPlane,p.state)]]:[],...a>0?[[aa(e,{hue:i,depth:a-1},r).plane,u(ia.nestedPlane,s(a-1))]]:[]]}const da=new WeakMap;function fa(e,t,n,r){let i=aa(e,t,r),a=sa(e,t),o=Yn(hn(a.plane,a.state,na.floor+na.span*Ri(n)),r,(e,t)=>e.hex!==t(i.plane).hex&&e.hex!==t(i.state).hex);if(o===void 0)throw Error(`palette "${e.name}": a ${t.hue} band item at depth ${t.depth} is drawn as its plane or its trigger at depth ${M[r]}, and nothing that depth draws is neither`);return o}const pa=e=>({kind:`bar`,progression:e,address:[]}),ma=(e,t)=>({...e,address:[...e.address,t]}),ha=e=>({kind:`band`,band:e,address:[]});function ga(e,t,n){switch(t.kind){case`bar`:return{tint:Ki(e,t.progression,t.address),disclosure:{hue:Ai,depth:0}};case`band`:return{tint:fa(e,t.band,t.address,n),disclosure:{hue:t.band.hue,depth:t.band.depth+1}}}}const _a={dark:`textual-dark`,light:`textual-light`};function va(e){return _a[e]??e}const ya=`textual-dark`;function ba(e,t,n,r,i){let a=t===null?null:i(t);return e??a??n??r}function xa(){return Object.keys(_a)}function Sa(){return[...rr(),...xa()]}function Ca(e,t,n,r,i){let a=e=>Object.prototype.hasOwnProperty.call(i,e)?e:null;return ba(e===void 0?null:a(e),t,a(n??r),r,a)}const wa=[`look`,`palette`];function Ta(e){return e!==void 0&&e.includes(`{{`)}function Ea(e,t,n,r,i){let a=Ta(n)?{kind:`expression`,source:n}:i(n??r.name);return ba(e===void 0?null:i(e),t,a,r,i)}function Da(e,t,n){return e.kind===`decided`?e:n(t())}const Oa=`none`;function ka(e,t){let n=t[e];return n===void 0?null:{kind:`decided`,name:e,value:n}}function Aa(e,t){return ka(e,t)??ka(`none`,t)??{kind:`decided`,name:`none`,value:On}}function ja(e,t,n,r){return Ea(e,t,n,Aa(Oa,r),e=>ka(e,r))}const Ma=[`powerline`,`capsule`,`plain`];function Na(e){return Ma.includes(e)}function Pa(e,t,n){return ba(e,t,n,`powerline`,e=>Na(e)?e:null)}const Fa=[`unicode`,`ascii`],Ia=`unicode`;function La(e){return Fa.includes(e)}function Ra(e,t,n){return ba(e,t,n,Ia,e=>La(e)?e:null)}const za=[`truecolor`,`256`,`ansi`,`none`],Ba=`truecolor`;function Va(e){return za.includes(e)}function Ha(e,t,n){return ba(e,t,n,Ba,e=>Va(e)?e:null)}function Ua(e){return on(e)??M.DEFAULT}const Wa=Object.keys(ki);function Ga(e){return Wa.includes(e)}function Ka(e,t,n){return ba(e,t,n,`secondary-accent`,e=>Ga(e)?e:null)}const qa=`true`,Ja=`false`,Ya=[qa,Ja],Xa={min:0,max:16};function Za(e){return e===`true`?!0:e===`false`?!1:null}function Qa(e){if(!/^\d+$/.test(e))return null;let t=Number(e);return t>=Xa.min&&t<=Xa.max?t:null}function $a(e,t,n){return ba(e,t,n,!0,Za)}function eo(e,t,n){return ba(e,t,n,1,Qa)}var to=class extends Error{constructor(e,t){super(`${e} (at offset ${t})`),this.reason=e,this.offset=t,this.name=`Json5EditError`}};const no=/[A-Za-z_$\p{L}]/u,ro=/[A-Za-z0-9_$\u200C\u200D\p{L}\p{N}]/u,io=/[A-Za-z0-9_$.+\-\p{L}\p{N}]/u,ao=/[\t\n\v\f\r \u00A0\uFEFF\u2028\u2029\p{Zs}]/u;var oo=class{pos=0;constructor(e){this.text=e}peek(){return this.text[this.pos]??``}fail(e){throw new to(e,this.pos)}skipTrivia(){for(;;){let e=this.peek();if(e===``)return;if(ao.test(e))this.pos++;else if(e===`/`&&this.text[this.pos+1]===`/`){let e=this.text.indexOf(`
25
25
  `,this.pos);this.pos=e===-1?this.text.length:e}else if(e===`/`&&this.text[this.pos+1]===`*`){let e=this.text.indexOf(`*/`,this.pos+2);e===-1&&this.fail(`unterminated block comment`),this.pos=e+2}else return}}expect(e){this.peek()!==e&&this.fail(`expected "${e}"`),this.pos++}value(){this.skipTrivia();let e=this.peek();if(e===`{`)return this.object();if(e===`[`)return this.array();if(e===`"`||e===`'`){let e=this.stringSpan();return{kind:`string`,span:e,value:this.decode(e)}}e===``&&this.fail(`unexpected end of input`);let t=this.pos;for(;this.pos<this.text.length&&io.test(this.peek());)this.pos++;this.pos===t&&this.fail(`unexpected character "${e}"`);let n={start:t,end:this.pos},r=this.decode(n);return r===null?{kind:`null`,span:n}:typeof r==`boolean`?{kind:`boolean`,span:n,value:r}:typeof r==`number`?{kind:`number`,span:n,value:r}:this.fail(`unexpected word "${this.text.slice(t,this.pos)}"`)}decode(e){try{return Xe.default.parse(this.text.slice(e.start,e.end))}catch(t){throw new to(t.message,e.start)}}stringSpan(){let e=this.pos,t=this.peek();for(this.pos++;;){let n=this.peek();if(n===``&&this.fail(`unterminated string`),n===`\\`){let e=this.text.startsWith(`\r
26
26
  `,this.pos+1);this.pos+=e?3:2;continue}if(this.pos++,n===t)return{start:e,end:this.pos};n===`
27
- `&&this.fail(`unterminated string`)}}key(){let e=this.peek();if(e===`"`||e===`'`){let e=this.stringSpan();return{key:this.decode(e),span:e}}let t=this.pos;for(no.test(e)||this.fail(`expected an object key`);this.pos<this.text.length&&ro.test(this.peek());)this.pos++;return{key:this.text.slice(t,this.pos),span:{start:t,end:this.pos}}}object(){let e=this.pos;this.expect(`{`);let t=[];for(;this.skipTrivia(),this.peek()!==`}`;){let{key:e,span:n}=this.key();if(t.some(t=>t.key===e))throw new to(`duplicate key "${e}"`,n.start);this.skipTrivia(),this.expect(`:`);let r=this.value();if(t.push({key:e,keySpan:n,value:r,span:{start:n.start,end:r.span.end}}),this.skipTrivia(),this.peek()===`,`){this.pos++;continue}this.peek()!==`}`&&this.fail(`expected "," or "}"`)}return this.expect(`}`),{kind:`object`,span:{start:e,end:this.pos},entries:t}}array(){let e=this.pos;this.expect(`[`);let t=[];for(;this.skipTrivia(),this.peek()!==`]`;){if(t.push(this.value()),this.skipTrivia(),this.peek()===`,`){this.pos++;continue}this.peek()!==`]`&&this.fail(`expected "," or "]"`)}return this.expect(`]`),{kind:`array`,span:{start:e,end:this.pos},elements:t}}};function so(e){let t=new oo(e),n=t.value();return t.skipTrivia(),t.pos!==e.length&&t.fail(`trailing content after the document`),n}function co(e,t){return e.kind===`object`?e.entries.find(e=>e.key===t):void 0}function lo(e,t){let n=e;for(let e of t)n=n===void 0?void 0:co(n,e)?.value;return n}function uo(e,t){return e.slice(t.span.start,t.span.end)}const fo=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function po(e){return fo.test(e)?e:JSON.stringify(e)}const mo={key:po,trailingComma:`,`,parse:e=>Xe.default.parse(e)},ho={key:e=>JSON.stringify(e),trailingComma:``,parse:e=>JSON.parse(e)};function go(e){if(Array.isArray(e))return e.length===0?`[]`:`[\n${e.map(e=>` ${vo(go(e),` `,`
27
+ `&&this.fail(`unterminated string`)}}key(){let e=this.peek();if(e===`"`||e===`'`){let e=this.stringSpan();return{key:this.decode(e),span:e}}let t=this.pos;for(no.test(e)||this.fail(`expected an object key`);this.pos<this.text.length&&ro.test(this.peek());)this.pos++;return{key:this.text.slice(t,this.pos),span:{start:t,end:this.pos}}}object(){let e=this.pos;this.expect(`{`);let t=[];for(;this.skipTrivia(),this.peek()!==`}`;){let{key:e,span:n}=this.key();if(t.some(t=>t.key===e))throw new to(`duplicate key "${e}"`,n.start);this.skipTrivia(),this.expect(`:`);let r=this.value();if(t.push({key:e,keySpan:n,value:r,span:{start:n.start,end:r.span.end}}),this.skipTrivia(),this.peek()===`,`){this.pos++;continue}this.peek()!==`}`&&this.fail(`expected "," or "}"`)}return this.expect(`}`),{kind:`object`,span:{start:e,end:this.pos},entries:t}}array(){let e=this.pos;this.expect(`[`);let t=[];for(;this.skipTrivia(),this.peek()!==`]`;){if(t.push(this.value()),this.skipTrivia(),this.peek()===`,`){this.pos++;continue}this.peek()!==`]`&&this.fail(`expected "," or "]"`)}return this.expect(`]`),{kind:`array`,span:{start:e,end:this.pos},elements:t}}};function so(e){let t=new oo(e),n=t.value();return t.skipTrivia(),t.pos!==e.length&&t.fail(`trailing content after the document`),n}function co(e,t){return e.kind===`object`?e.entries.find(e=>e.key===t):void 0}function lo(e,t){let n=e;for(let e of t)n=n===void 0?void 0:co(n,e)?.value;return n}function uo(e,t){return e.slice(t.span.start,t.span.end)}function fo(e,t){let n=To(e,t.span.start),r=po(t),i=e=>r.some(t=>t.start<e&&e<t.end),a=t.span.start;return uo(e,t).split(`
28
+ `).map((e,t)=>{let r=a;return a+=e.length+1,(t>0&&!i(r-1)&&e.startsWith(n)?e.slice(n.length):e).replace(/\r$/,``)}).join(`
29
+ `)}function po(e){switch(e.kind){case`object`:return e.entries.flatMap(e=>[e.keySpan,...po(e.value)]);case`array`:return e.elements.flatMap(po);case`string`:return[e.span];default:return[]}}const mo=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function ho(e){return mo.test(e)?e:JSON.stringify(e)}const go={key:ho,trailingComma:`,`,parse:e=>Xe.default.parse(e)},_o={key:e=>JSON.stringify(e),trailingComma:``,parse:e=>JSON.parse(e)};function vo(e){if(Array.isArray(e))return e.length===0?`[]`:`[\n${e.map(e=>` ${bo(vo(e),` `,`
28
30
  `)},`).join(`
29
- `)}\n]`;if(typeof e==`object`&&e){let t=Object.entries(e).filter(([,e])=>e!==void 0);return t.length===0?`{}`:`{\n${t.map(([e,t])=>` ${po(e)}: ${vo(go(t),` `,`
31
+ `)}\n]`;if(typeof e==`object`&&e){let t=Object.entries(e).filter(([,e])=>e!==void 0);return t.length===0?`{}`:`{\n${t.map(([e,t])=>` ${ho(e)}: ${bo(vo(t),` `,`
30
32
  `)},`).join(`
31
- `)}\n}`}return JSON.stringify(e)}function _o(e){return e.includes(`\r
33
+ `)}\n}`}return JSON.stringify(e)}function yo(e){return e.includes(`\r
32
34
  `)?`\r
33
35
  `:`
34
- `}function vo(e,t,n){return e.split(`
35
- `).join(`${n}${t}`)}function yo(e,t,n){let[r,...i]=e,a=i.length===0?t:`{\n ${vo(yo(i,t,n),` `,`
36
- `)}${n.trailingComma}\n}`;return`${n.key(r)}: ${a}`}function bo(e,t,n,r){return e.slice(0,t)+r+e.slice(n)}function xo(e,t){return e.lastIndexOf(`
37
- `,t-1)+1}function So(e){return/^[ \t]*$/.test(e)}function Co(e,t){let n=xo(e,t);return/^[ \t]*/.exec(e.slice(n))[0]}function wo(e,t){return So(e.slice(xo(e,t),t))}const To=/(?:\/\/[^\n]*?)?(\r\n|\n|$)/y;function Eo(e,t){let n=t;for(;n<e.length&&(e[n]===` `||e[n]===` `);)n++;let r=e[n]===`,`?n+1:-1;for(r!==-1&&(n=r);n<e.length&&(e[n]===` `||e[n]===` `);)n++;To.lastIndex=n;let i=To.exec(e);if(i===null)return{commaEnd:r,line:null};let a=n+i[0].length;return{commaEnd:r,line:{at:a-i[1].length,next:a}}}function Do(e,t){let{commaEnd:n,line:r}=Eo(e,t.end);if(wo(e,t.start)&&r!==null)return bo(e,xo(e,t.start),r.next,``);if(n!==-1){let r=n;for(;r<e.length&&e[r]===` `;)r++;return bo(e,t.start,r,``)}let i=t.start;for(;i>0&&(e[i-1]===` `||e[i-1]===` `);)i--;return e[i-1]===`,`?bo(e,i-1,t.end,``):bo(e,t.start,t.end,``)}function Oo(e,t,n,r,i){let a=n.commaEnd!==-1,o=a?e:bo(e,t.end,t.end,`,`),s=n.line.at+ +!a,c=_o(e);return bo(o,s,s,`${c}${i}${vo(r,i,c)}${a?`,`:``}`)}function ko(e,t,n,r){let i=t.kind===`object`?t.entries:t.elements,a=i[i.length-1],o=Co(e,t.span.start);if(a===void 0){let i=o+` `,a=_o(e);return bo(e,t.span.start+1,t.span.end-1,`${a}${i}${vo(n,i,a)}${r.trailingComma}${a}${o}`)}let{commaEnd:s,line:c}=Eo(e,a.span.end);if(wo(e,a.span.start)&&c!==null){let t=e.slice(xo(e,a.span.start),a.span.start);return Oo(e,a.span,{commaEnd:s,line:c},n,t)}let l=s===-1?a.span.end:s;return bo(e,l,l,`${s===-1?`, `:` `}${n}${s===-1?``:`,`}`)}function Ao(e,t,n,r){if(t.length===0)throw new to(`setValue needs a non-empty path`,0);if(/^\s*$/.test(e)){let i=_o(e);return`{${i} ${vo(yo(t,n,r),` `,i)}${r.trailingComma}${i}}${i}`}let i=so(e);for(let a=0;a<t.length;a++){if(i.kind!==`object`)throw new to(`cannot set ${t.join(`.`)}: ${t.slice(0,a).join(`.`)||`the document`} is not an object`,i.span.start);let o=co(i,t[a]);if(o===void 0)return ko(e,i,yo(t.slice(a),n,r),r);if(a===t.length-1){let t=Co(e,o.keySpan.start);return bo(e,o.value.span.start,o.value.span.end,vo(n,t,_o(e)))}i=o.value}throw new to(`unreachable: path exhausted`,0)}function jo(e,t){if(t.length===0)throw new to(`deleteValue needs a non-empty path`,0);if(/^\s*$/.test(e))return e;let n=t.slice(0,-1),r=lo(so(e),n),i=r===void 0?void 0:co(r,t[t.length-1]);if(i===void 0||r?.kind!==`object`)return e;let a=Do(e,i.span);return n.length>0&&r.entries.length===1?jo(a,n):a}const Mo=[`h`,`v`,`children`];function No(e){if(e.kind===`string`)return e.value;if(e.kind!==`object`)return;let t=co(e,`seg`)?.value;if(t?.kind===`string`)return t.value;let n=co(e,`kind`)?.value,r=co(e,`name`)?.value;return n?.kind===`string`&&n.value===`segment`&&r?.kind===`string`?r.value:void 0}function Po(e){return e.kind===`object`?Mo.map(t=>co(e,t)?.value).filter(e=>e?.kind===`array`):[]}function Fo(e){let t=co(e,`rows`)?.value;return t?.kind===`object`?t.entries:null}function Io(e){if(e.kind!==`object`)return!0;let t=Fo(e);return t===null||t.length>0||e.entries.some(e=>e.key!==`rows`)}function*Lo(e,t){yield{node:e,bareAt:t};for(let t of Po(e))for(let e of t.elements)yield*Lo(e,null);for(let n of Fo(e)??[])yield*Lo(n.value,t===null?null:[...t,`rows`,n.key])}function Ro(e,t){for(let{node:n}of Lo(e,null))if(No(n)===t)return!0;return!1}function zo(e,t,n){let r=lo(so(e),t);if(r===void 0)return null;for(let{node:i,bareAt:a}of Lo(r,t))if(No(i)===n)return a===null?{text:e,ref:i}:zo(Ao(e,a,`{ h: [${uo(e,i)}] }`,mo),t,n);return null}function Bo(e,t,n){let r=zo(e,t,n);return r===null?null:Do(r.text,r.ref.span)}function Vo(e,t,n,r,i){let a=zo(e,t,r);if(a===null)return null;let{text:o,ref:s}=a,c=JSON.stringify(n),{commaEnd:l,line:u}=Eo(o,s.span.end);if(wo(o,s.span.start)&&u!==null){let e=o.slice(xo(o,s.span.start),s.span.start);return i===`after`?Oo(o,s.span,{commaEnd:l,line:u},c,e):bo(o,s.span.start,s.span.start,`${c},${_o(o)}${e}`)}let d=uo(o,s),f=i===`before`?`${c}, ${d}`:`${d}, ${c}`;return bo(o,s.span.start,s.span.end,f)}var Ho=class extends Error{file;issues;warnings;constructor(e,t,n=[]){super(Ko(e,t)),this.name=`ConfigError`,this.file=e,this.issues=t,this.warnings=n}};function W(e,t){let n=0,r;for(let i of t){if(i===``||/^\d+$/.test(i))continue;let t=Uo(e,n,i);if(t===-1)return r===void 0?void 0:Wo(e,r);n=t,r=t}return r===void 0?void 0:Wo(e,r)}function Uo(e,t,n){let r=n.replace(/[\\^$.*+?()[\]{}|]/g,`\\$&`),i=RegExp(`(?:["']${r}["']|\\b${r}\\b)\\s*:`,`g`);i.lastIndex=t;let a=i.exec(e);return a?a.index:-1}function Wo(e,t){let n=1;for(let r=0;r<t&&r<e.length;r++)e.charCodeAt(r)===10&&n++;return n}function Go(e,t){try{return so(t),null}catch(n){if(!(n instanceof to))throw n;return`${e}:${Wo(t,n.offset)}: ${n.reason} — the settings menu cannot edit this file until it is fixed`}}function Ko(e,t){if(t.length===0)return`${e}: invalid config (no details)`;let n=[`Invalid config in ${e} (${t.length} issue${t.length===1?``:`s`}):`];for(let e of t){let t=[];e.line!==void 0&&t.push(`line ${e.line}${e.col===void 0?``:`:${e.col}`}`),e.path&&t.push(e.path);let r=t.length>0?`[${t.join(` • `)}] `:``;n.push(` ${r}${e.message}`)}return n.join(`
38
- `)}const qo=[`vertical`,`horizontal`],Jo={vertical:`row`,horizontal:`cell`};function Yo(e,t){return e.opens===void 0?e:{...e,opens:{...e.opens,body:t(e.opens.body)}}}function*Xo(e){yield e;for(let t of es(e))yield*Xo(t)}const Zo=(e,t)=>`${e}.children[${t}]`,Qo=e=>`${e}.opens.body`;function*$o(e,t){if(yield[e,t],e.kind===`container`)for(let[n,r]of e.children.entries())yield*$o(r,Zo(t,n));else e.opens!==void 0&&(yield*$o(e.opens.body,Qo(t)))}function es(e){return e.kind===`container`?e.children:e.opens===void 0?[]:[e.opens.body]}function ts(e){return e===void 0||`text`in e?`text`:`regex`in e?`regex`:`json`}const ns=[`ttl`,`watch_file`,`depends_on`,`key`,`never`];function rs(e){return e.kind!==`literal`&&e.kind!==`input`&&e.kind!==`env`&&e.kind!==`state`}const is=[`branch`,`sha`,`dirty`,`ahead`,`behind`,`stash`],as=[`file`,`shell`,`git`],os=[`left`,`center`,`right`],ss=[`right`,`left`,`middle`];function cs(e,t,n,r){let i=n[r];return typeof i==`string`?i:(e.issues.push({path:`${t}.${r}`,message:`${t}.${r} must be a string, got ${ms(i)}`,line:W(e.source,[...t.split(`.`),r])}),null)}function ls(e,t,n,r){let i=n.default;if(i!==void 0){if(!(r===`string`&&typeof i==`string`||r===`number`&&typeof i==`number`||r===`boolean`&&typeof i==`boolean`)){e.issues.push({path:`${t}.default`,message:`default must be a ${r}, got ${ms(i)}`,line:W(e.source,[...t.split(`.`),`default`])});return}return i}}function us(e,t,n,r){let i=n[r];if(i!==void 0){if(typeof i!=`string`){e.issues.push({path:`${t}.${r}`,message:`${t}.${r} must be a string, got ${ms(i)}`,line:W(e.source,[...t.split(`.`),r])});return}return i}}function ds(e,t,n){let r=us(e,t,n,`palette`);if(r!==void 0){if(!e.allowedPalettes.has(r)){e.issues.push({path:`${t}.palette`,message:`Unknown palette "${r}". Expected one of: ${[...e.allowedPalettes].sort().join(`, `)}`,line:W(e.source,[...t.split(`.`),`palette`])});return}return r}}function fs(e,t,n,r,i){let a=n[r];if(a!==void 0){if(typeof a!=`string`||!i.includes(a)){e.issues.push({path:`${t}.${r}`,message:`${t}.${r} must be one of: ${i.join(`, `)}; got ${G(a)}`,line:W(e.source,[...t.split(`.`),r])});return}return a}}function ps(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function ms(e){return e===null?`null`:Array.isArray(e)?`array`:typeof e}function G(e){return typeof e==`string`?JSON.stringify(e):e===void 0?`undefined`:String(e)}function hs(e,t,n,r){return ps(r)?(vs(e,n,r,t.noun,new Set(Object.keys(t.fields))),gs(e,t.fields,n,r)):(e.issues.push({path:n,message:`${n} must be an object, got ${ms(r)}`,line:W(e.source,n.split(`.`))}),null)}function gs(e,t,n,r){let i=t,a={},o=!0;for(let[t,s]of Object.entries(i)){let i=s.parse(e,n,t,r);i===void 0?s.required&&(o=!1):a[t]=i}return o?a:null}const _s=new Set;function vs(e,t,n,r,i,a=_s){for(let o of Object.keys(n))!i.has(o)&&!a.has(`${t}.${o}`)&&e.issues.push({path:`${t}.${o}`,message:`Unknown ${r} "${o}". Expected one of: ${[...i].join(`, `)}`,line:W(e.source,[...t.split(`.`),o])})}function ys(e,t,n){return e.issues.push({path:t,message:n,line:W(e.source,t.split(`.`))}),null}function bs(e,t,n,r){if(!ps(r))return e.issues.push({path:n,message:`${t.noun} must be an object, got ${ms(r)}`,line:W(e.source,n.split(`.`))}),null;let i=t.arms,a=Object.keys(i),o=Object.keys(r).filter(e=>e in i),s=Object.keys(r).filter(e=>!(e in i));for(let r of s)e.issues.push({path:`${n}.${r}`,message:`Unknown ${t.noun} key "${r}". Expected exactly one of: ${a.join(`, `)}`,line:W(e.source,[...n.split(`.`),r])});if(o.length===0)return e.issues.push({path:n,message:`${t.noun} must declare exactly one of: ${a.join(`, `)}`,line:W(e.source,n.split(`.`))}),null;if(o.length>1)return e.issues.push({path:n,message:`${t.noun} must declare exactly one of: ${a.join(`, `)} (found: ${o.join(`, `)})`,line:W(e.source,n.split(`.`))}),null;let c=o[0];return i[c].parse(e,`${n}.${c}`,r[c])}function xs(e,t,n,r){if(!ps(r))return e.issues.push({path:n,message:`${n} must be an object, got ${ms(r)}`,line:W(e.source,n.split(`.`))}),null;let i=r[t.tag];if(typeof i!=`string`)return e.issues.push({path:`${n}.${t.tag}`,message:`${n}.${t.tag} must be a string, got ${ms(i)}`,line:W(e.source,n.split(`.`))}),null;let a=t.arms;if(!(i in a))return e.issues.push({path:`${n}.${t.tag}`,message:`Unknown ${t.noun} "${i}". Expected one of: ${Object.keys(a).join(`, `)}`,line:W(e.source,[...n.split(`.`),t.tag])}),null;let o=a[i],s=e.issues.length,c=o.parse(e,n,r),l=new Set(e.issues.slice(s).map(e=>e.path));return vs(e,n,r,`${i} ${t.memberNoun} key`,o.keys,l),c}function Ss(e,t,n){return{json:Ns(js(n),e,t),keys:new Set([e,...Object.keys(n)])}}function Cs(e){return(...t)=>e()(...t)}function ws(e,...t){return(n,r,i)=>{let a=e(n,r,i);if(a===null)return null;for(let e of t){if(e.ok(a))continue;let{field:t,message:i}=e.issue(a),o=t===``?r:`${r}.${t}`;return n.issues.push({path:o,message:i,line:W(n.source,o.split(`.`))}),null}return a}}function K(){return{required:!1,json:{type:`string`},parse:(e,t,n,r)=>us(e,t,r,n)}}function Ts(){return{required:!1,json:{type:`boolean`},parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0){if(typeof i!=`boolean`){e.issues.push({path:`${t}.${n}`,message:`${n} must be a boolean, got ${ms(i)}`,line:W(e.source,[n])});return}return i}}}}function Es(e){let{min:t,max:n}=e;return{required:!1,json:{type:`integer`,minimum:t,maximum:n},parse:(e,r,i,a)=>{let o=a[i];if(o!==void 0){if(typeof o!=`number`||!Number.isInteger(o)||o<t||o>n){e.issues.push({path:`${r}.${i}`,message:`${i} must be an integer between ${t} and ${n}, got ${G(o)}`,line:W(e.source,[i])});return}return o}}}}function Ds(e={}){let{min:t}=e;return{required:!1,json:{type:`number`,...t!==void 0&&{minimum:t}},parse:(e,n,r,i)=>{let a=i[r];if(a!==void 0){if(typeof a!=`number`||!Number.isFinite(a)||t!==void 0&&a<t){let i=t===void 0?`a finite number`:`a finite number >= ${t}`;e.issues.push({path:`${n}.${r}`,message:`${r} must be ${i}, got ${G(a)}`,line:W(e.source,[r])});return}return a}}}}function Os(){return{required:!1,json:{type:`string`},parse:(e,t,n,r)=>ds(e,t,r)}}function ks(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>cs(e,t,r,n)??void 0}}function As(e){return{required:!1,json:{enum:[...e]},parse:(t,n,r,i)=>fs(t,n,i,r,e)}}function js(e,t={closed:!0}){let n=e,r={},i=[];for(let[e,t]of Object.entries(n))r[e]=t.json,t.required&&i.push(e);return{type:`object`,properties:r,...i.length>0&&{required:i},...t.closed&&{additionalProperties:!1}}}function Ms(e){return js(e.fields)}function Ns(e,t,n){let r=e,i={[t]:{const:n},...r.properties},a=[t,...r.required??[]];return{...r,properties:i,required:a}}function Ps(e){let t=e.arms;return{anyOf:Object.values(t).map(e=>e.json)}}function Fs(e){let t=e.arms;return{anyOf:Object.entries(t).map(([e,t])=>({type:`object`,properties:{[e]:t.json},required:[e],additionalProperties:!1}))}}const Is=/^[A-Za-z_][A-Za-z0-9_]*$/;function Ls(e){return`#${e+1}`}const Rs={rows:{}};function zs(e){return`rows`in e}function Bs(e){return Object.fromEntries(e.map((e,t)=>[Ls(t),e]))}function Vs(e){if(e.kind===`container`&&e.direction===`vertical`){let{kind:t,direction:n,children:r,...i}=e;return{...i,rows:Bs(r)}}let{when:t,...n}=e;return{...t!==void 0&&{when:t},rows:Bs([n])}}function Hs(e){let{rows:t,...n}=e;return{kind:`container`,direction:`vertical`,children:Object.values(t),...n}}function Us(e){return zs(e)?Hs(e):e}function*Ws(e,t){if(!zs(e)){yield*$o(e,t);return}yield[Hs(e),t];for(let[n,r]of Object.entries(e.rows))yield*$o(r,`${t}.rows.${n}`)}function Gs(e,t){return zs(e)?{...t,...e,rows:{...t.rows,...e.rows}}:Vs(e)}function Ks(e){if(!zs(e))return!0;let{rows:t,...n}=e;return Object.values(n).some(e=>e!==void 0)||Object.keys(t).length>0}function qs(e,t){return{globals:{...t.globals,...e.globals??{}},variables:{...t.variables,...e.variables??{}},segments:Ys(t.segments,e.segments??{}),root:Gs(e.root??Rs,t.root),actions:{...t.actions,...e.actions??{}},looks:{...t.looks,...e.looks??{}},presets:Ys(t.presets,Js(t.presets,e.presets??{})),editGlobals:{...t.editGlobals,...e.editGlobals??{}},helpers:{...t.helpers,...e.helpers??{}}}}function Js(e,t){return Object.fromEntries(Object.entries(t).map(([t,n])=>[t,n.globals===void 0?n:{...n,globals:{...e[t]?.globals,...n.globals}}]))}function Ys(e,t){return{...e,...Object.fromEntries(Object.entries(t).map(([t,n])=>[t,{...e[t],...n}]))}}const Xs=`closed`,Zs=`🍫`;function Qs(e,t,n){if(t===0)return`${e} needs a display (the clickable text)`;if(t!==1&&t!==n)return`${e} cycles ${n} members; bind one display per member (${n}) or one static display, got ${t}`}function $s(e,t,n,r){let i=Qs(e,t.length,n);if(i!==void 0)throw Error(i);return t.length===1?t[0]:t[r]}function ec(e){return e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}function tc(e,t,n,r,i){return{kind:`segment`,name:e,opens:{ref:t,body:n,placement:r},...i!==void 0&&{when:i}}}function nc(e,...t){return`{{ and ${[e,...t].map(rc).join(` `)} }}`}function rc(e){return`(eq .${e.variable} "${ec(e.member)}")`}function ic(e,t,n){return`{{ action "${e}" "${ec(t)}" "${ec(n)}" }}`}function ac(e,t){return{kind:`state`,key:e,default:t}}function oc(e,t){return{set:e,cycle:[Xs,t]}}const sc={required:!1,json:{enum:[...za]},parse:(e,t,n,r)=>{if(r[n]===`auto`){e.issues.push({path:`${t}.${n}`,message:`${t}.${n}: "auto" is not supported — the render daemon runs detached, so terminal detection would read the daemon's environment, not your terminal's. Pick an explicit depth: ${za.join(`, `)}`,line:W(e.source,[...t.split(`.`),n])});return}return fs(e,t,r,n,za)}},cc={required:!1,json:{type:`string`},parse:(e,t,n,r)=>{let i=us(e,t,r,n);return Ta(i)?i:ds(e,t,r)}},lc=/^[^\r\n]*\S[^\r\n]*$/u,uc=RegExp(`^(?:❌|✕)[\\uFE0E\\uFE0F]?$`,`u`),dc={required:!1,json:{type:`string`,pattern:lc.source,not:{pattern:uc.source}},parse:(e,t,n,r)=>{let i=us(e,t,r,n);if(i===void 0||lc.test(i)&&!uc.test(i))return i;e.issues.push({path:`${t}.${n}`,message:`${t}.${n}: must be one line of visible text other than a close glyph ("❌", "✕") — the settings menu needs a glyph to click`,line:W(e.source,[...t.split(`.`),n])})}},fc={default_bg:K(),default_fg:K(),default_empty_value:K(),default_separator:K(),default_truncate_marker:K(),palette:cc,look:K(),preset:K(),style:As(Ma),progression:As(Wa),autoWrap:Ts(),padding:Es(Xa),charset:As(Fa),updateNotice:Ts(),colorCompatibility:sc,menuGlyph:dc},pc={noun:`globals key`,fields:fc};function mc(e,t){return{required:!1,json:{not:{},description:`not allowed here — ${e}`},parse:(e,n,r,i)=>{i[r]!==void 0&&e.issues.push({path:`${n}.${r}`,message:t(`${n}.${r}`),line:W(e.source,[...n.split(`.`),r])})}}}function hc(e){return mc(`${e} cannot select a preset`,t=>`${t}: ${e} cannot select a preset. Which preset is active is resolved once, as session pick over globals.preset over "default"; a fragment naming another would be a second authority over that. Set the default arrangement in the top-level globals.preset instead.`)}function gc(e){return mc(`${e} cannot change the settings menu glyph`,t=>`${t}: ${e} cannot change the settings menu glyph — one menu is shared by every preset. Set it in the top-level globals.menuGlyph instead.`)}const _c={preset:hc(`a preset`),menuGlyph:gc(`a preset`)},vc={noun:`preset globals key`,fields:{...fc,..._c}};function yc(e){return Ec(e)&&!(e in _c)}const bc={noun:`editGlobals key`,fields:{...fc,preset:hc(`the editGlobals fragment`),menuGlyph:gc(`the editGlobals fragment`)}};function xc(e,t,n){return n===void 0?{}:hs(e,pc,t,n)??{}}function Sc(e,t,n){return hs(e,vc,t,n)??{}}function Cc(){return Ms(vc)}function wc(e,t,n){return hs(e,bc,t,n)??{}}const Tc=new Set(Object.keys(pc.fields));function Ec(e){return Tc.has(e)}function Dc(){return[...Tc]}const Oc={padding:1};function kc(e){let t=new Map;for(let[n,r]of Object.entries(Oc)){let i=e[n];t.set(n,typeof i==`number`?i:r)}return t}function Ac(e,t,n,r){return n.cache===void 0?(as.includes(r)&&e.issues.push({path:`${t}.cache`,message:`${r} variables must declare a cache policy (one of: ${ns.join(`, `)})`,line:W(e.source,t.split(`.`))}),null):Fc(e,`${t}.cache`,n.cache)}function jc(e,t,n){if(n.cache!==void 0)return Fc(e,`${t}.cache`,n.cache)??void 0}function Mc(e){return{required:!0,json:Rc(),parse:(t,n,r,i)=>Ac(t,n,i,e)??void 0}}function Nc(){return{required:!1,json:Rc(),parse:(e,t,n,r)=>jc(e,t,r)}}const Pc={noun:`cache`,arms:{ttl:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`&&Bc(n)?{ttl:n}:ys(e,t,`cache.ttl must be a duration string like "5s", "100ms", "2m", "1h"; got ${G(n)}`)},watch_file:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`&&n!==``?{watch_file:n}:ys(e,t,`cache.watch_file must be a non-empty path string, got ${G(n)}`)},depends_on:{json:{type:`array`,items:{type:`string`}},parse:(e,t,n)=>Array.isArray(n)&&n.every(e=>typeof e==`string`)?{depends_on:n}:ys(e,t,`cache.depends_on must be an array of variable-name strings, got ${G(n)}`)},key:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`&&n!==``?{key:n}:ys(e,t,`cache.key must be a non-empty template string, got ${G(n)}`)},never:{json:{const:!0},parse:(e,t,n)=>n===!0?{never:!0}:ys(e,t,`cache.never must be the literal boolean true, got ${G(n)}`)}}};function Fc(e,t,n){return bs(e,Pc,t,n)}const Ic={noun:`time-variable cache`,arms:{ttl:Pc.arms.ttl}};function Lc(){return{required:!1,json:Fs(Ic),parse:(e,t,n,r)=>r.cache===void 0?void 0:bs(e,Ic,`${t}.cache`,r.cache)??void 0}}function Rc(){return Fs(Pc)}const zc=/^(\d+(?:\.\d+)?)(ms|s|m|h)$/;function Bc(e){return zc.test(e)}function Vc(e,t,n){if(n===void 0)return{};if(!ps(n))return e.issues.push({path:t,message:`${t} must be an object, got ${ms(n)}`,line:W(e.source,t.split(`.`))}),{};let r={};for(let[i,a]of Object.entries(n)){let n=xs(e,ll,`${t}.${i}`,a);n!==null&&(r[i]=n)}return r}function Hc(){return{required:!0,json:{type:[`string`,`number`,`boolean`]},parse:(e,t,n,r)=>{let i=r.value;if(typeof i!=`string`&&typeof i!=`number`&&typeof i!=`boolean`){e.issues.push({path:`${t}.value`,message:`literal value must be string|number|boolean, got ${ms(i)}`,line:W(e.source,t.split(`.`))});return}return i}}}function Uc(){return{required:!0,json:{enum:[...is]},parse:(e,t,n,r)=>{let i=r.field;if(typeof i!=`string`||!is.includes(i)){e.issues.push({path:`${t}.field`,message:`git field must be one of: ${is.join(`, `)}, got ${JSON.stringify(i)}`,line:W(e.source,[...t.split(`.`),`field`])});return}return i}}}function Wc(){return{required:!1,json:{type:[`string`,`number`,`boolean`]},parse:(e,t,n,r)=>{let i=r.type;return ls(e,t,r,i===`number`||i===`boolean`||i===`string`?i:`string`)}}}const Gc={noun:`parse`,arms:{text:{json:{const:!0},parse:(e,t,n)=>n===!0?{text:!0}:ys(e,t,`parse.text must be the literal boolean true, got ${G(n)}`)},regex:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`?Kc(e,t,n):ys(e,t,`parse.regex must be a pattern string, got ${G(n)}`)},json:{json:{const:!0},parse:(e,t,n)=>n===!0?{json:!0}:ys(e,t,`parse.json must be the literal boolean true, got ${G(n)}`)}}};function Kc(e,t,n){let r;try{new RegExp(n),r=RegExp(`${n}|`).exec(``).length-1}catch(n){return ys(e,t,`parse.regex is not a valid regular expression: ${n.message}`)}return r>=1?{regex:n}:ys(e,t,`parse.regex must contain a capture group — its group 1 is the value; got ${JSON.stringify(n)}`)}function qc(){return{required:!1,json:Fs(Gc),parse:(e,t,n,r)=>(r.regex!==void 0&&e.issues.push({path:`${t}.regex`,message:`${t}.regex was retired; the regex is the parse step's regex arm now: parse: { regex: ${JSON.stringify(r.regex)} }`,line:W(e.source,[...t.split(`.`),`regex`])}),r.parse===void 0?void 0:bs(e,Gc,`${t}.parse`,r.parse)??void 0)}}function Jc(){return{required:!1,json:{type:[`string`,`number`,`boolean`,`array`,`object`],description:`The value published when the source fails: a string under the text/regex parse arms, any non-null JSON value under the json arm`},parse:(e,t,n,r)=>ps(r.parse)&&`json`in r.parse?Yc(e,t,r.default):us(e,t,r,`default`)}}function Yc(e,t,n){if(n!==void 0)return Xc(n)?n:ys(e,`${t}.default`,`${t}.default must be a JSON value (a json-parsed source's document), got ${G(n)}`)??void 0}function Xc(e){return e!==null&&Zc(e)}function Zc(e){if(e===null)return!0;switch(typeof e){case`string`:case`boolean`:return!0;case`number`:return Number.isFinite(e);case`object`:{if(Array.isArray(e))return e.every(Zc);let t=Object.getPrototypeOf(e);return(t===Object.prototype||t===null)&&Object.values(e).every(Zc)}default:return!1}}const Qc={value:Hc(),default:K()},$c={path:ks(),type:As([`string`,`number`,`boolean`]),default:Wc()},el={name:ks(),default:K()},tl={path:ks(),readMode:As([`whole`,`first-line`]),parse:qc(),cache:Mc(`file`),default:Jc()},nl={command:ks(),parse:qc(),cache:Mc(`shell`),default:Jc()},rl={template:ks(),cache:Nc(),default:K()},il={layout:ks(),cache:Lc(),default:K()},al={field:Uc(),cache:Mc(`git`),default:K()},ol={key:ks(),default:K()},sl=`kind`;function cl(e,t){return{...Ss(sl,e,t),parse:(n,r,i)=>{let a=gs(n,t,r,i);return a===null?null:{kind:e,...a}}}}const ll={tag:sl,noun:`source kind`,memberNoun:`variable`,arms:{literal:cl(`literal`,Qc),input:cl(`input`,$c),env:cl(`env`,el),file:cl(`file`,tl),shell:cl(`shell`,nl),template:cl(`template`,rl),time:cl(`time`,il),git:cl(`git`,al),state:cl(`state`,ol)}};function ul(){return Ps(ll)}function dl(){return{type:`object`,additionalProperties:ul()}}function fl(e){return e.replace(/[^A-Za-z0-9]+/g,`_`)}const pl=`groups.`,ml=`menus.`,hl=`edit.`,gl=`settings.`,_l=[pl,ml,hl,gl];function vl(e){return _l.some(t=>e.startsWith(t))}function yl(e){let t=fl(e);return _l.find(e=>t.startsWith(fl(e)))}function bl(e,t,n,r){for(let i of[`variables`,`actions`,`segments`])for(let a of Object.keys(t[i]??{}))a.startsWith(n)&&e.issues.push({path:`${i}.${a}`,message:`"${a}" is in the reserved "${n}" namespace (synthesized by ${r}) — rename it`,line:W(e.source,[`root`])})}function xl(e){return new Set(Object.keys(e.segments).filter(e=>!vl(e)))}function Sl(e,t,n){if(t===void 0)return{};if(!ps(t))return e.issues.push({path:`segments`,message:`segments must be an object, got ${ms(t)}`,line:W(e.source,[`segments`])}),{};let r={};for(let[i,a]of Object.entries(t)){let t=hs(e,n.has(i)?Ol:Dl,`segments.${i}`,a);t!==null&&(r[i]=t)}return r}function Cl(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>r[n]===void 0?ys(e,`${t}.${n}`,`${t} declares no template — only a segment the bundled default declares may omit it (inheriting the bundled template); a segment of your own needs its own`)??void 0:cs(e,t,r,n)??void 0}}function wl(){return{required:!1,json:{anyOf:[{const:`auto`},{const:`fill`},{type:`integer`,minimum:1}]},parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0){if(i===`auto`)return`auto`;if(i===`fill`)return`fill`;if(typeof i==`number`&&Number.isInteger(i)&&i>0)return i;e.issues.push({path:`${t}.${n}`,message:`width must be "auto", "fill", or a positive integer, got ${G(i)}`,line:W(e.source,[...t.split(`.`),n])})}}}}function Tl(){return{required:!1,json:dl(),parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0)return Vc(e,`${t}.${n}`,i)}}}const El={template:Cl(),description:K(),width:wl(),justify:As(os),truncate:As(ss),bg:K(),fg:K(),when:K(),palette:Os(),vars:Tl()},Dl={noun:`segment key`,fields:El},Ol={noun:`segment key`,fields:{...El,template:K()}},kl=`#/definitions/LayoutNode`,Al={kind:`container`,direction:`vertical`,children:[]};function jl(e){return{required:!0,json:{const:e},parse:()=>e}}function Ml(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>{let i=r[n];return typeof i==`string`&&i.length>0?i:(e.issues.push({path:`${t}.${n}`,message:`a segment node must have a non-empty "name" (a segment name), got ${G(i)}`,line:W(e.source,[`root`])}),``)}}}function Nl(){return{required:!0,json:{enum:[...qo]},parse:(e,t,n,r)=>{let i=r[n];return typeof i==`string`&&qo.includes(i)?i:(e.issues.push({path:`${t}.${n}`,message:`a container "direction" must be one of: ${qo.join(`, `)} (got ${JSON.stringify(i)})`,line:W(e.source,[`root`])}),`vertical`)}}}function Pl(e){return{required:!0,json:{type:`array`,items:{$ref:kl}},parse:(t,n,r,i)=>{let a=i[r];return Array.isArray(a)?a.map((i,a)=>e(t,`${n}.${r}[${a}]`,i)):(t.issues.push({path:`${n}.${r}`,message:`a container must have a "children" array of layout nodes, got ${ms(a)}`,line:W(t.source,[`root`])}),[])}}}const Fl={noun:`layout-node key`,fields:{kind:jl(`segment`),name:Ml(),when:K()}},Il=()=>As(Pi),Ll={noun:`layout-node key`,fields:{kind:jl(`container`),direction:Nl(),children:Pl(Cs(()=>Hl)),when:K(),distribution:Il()}};function Rl(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>{let i=r[n];return typeof i==`string`&&i.length>0?i:(e.issues.push({path:`${t}.${n}`,message:`a "seg" node must have a non-empty segment name, got ${G(i)}`,line:W(e.source,[`root`])}),``)}}}const zl={noun:`layout-node key`,fields:{seg:Rl(),when:K()}},Bl={noun:`layout-node key`,fields:{h:Pl(Cs(()=>Hl)),when:K(),distribution:Il()}},Vl={noun:`layout-node key`,fields:{v:Pl(Cs(()=>Hl)),when:K(),distribution:Il()}},Hl=(e,t,n)=>{if(typeof n==`string`)return n.length===0?(e.issues.push({path:t,message:`a bare-string layout node must be a non-empty segment name`,line:W(e.source,[`root`])}),Al):{kind:`segment`,name:n};if(!ps(n))return e.issues.push({path:t,message:`a layout node must be a string (segment name) or an object with "kind" / "seg" / "h" / "v", got ${ms(n)}`,line:W(e.source,[`root`])}),Al;if(n.kind===`container`)return hs(e,Ll,t,n)??Al;if(n.kind===`segment`)return hs(e,Fl,t,n)??Al;if(n.kind===`cells`)return e.issues.push({path:t,message:`kind: "cells" is no longer supported — use the h-arm spelling instead:
36
+ `}function bo(e,t,n){return e.split(`
37
+ `).join(`${n}${t}`)}function xo(e,t,n){let[r,...i]=e,a=i.length===0?t:`{\n ${bo(xo(i,t,n),` `,`
38
+ `)}${n.trailingComma}\n}`;return`${n.key(r)}: ${a}`}function So(e,t,n,r){return e.slice(0,t)+r+e.slice(n)}function Co(e,t){return e.lastIndexOf(`
39
+ `,t-1)+1}function wo(e){return/^[ \t]*$/.test(e)}function To(e,t){let n=Co(e,t);return/^[ \t]*/.exec(e.slice(n))[0]}function Eo(e,t){return wo(e.slice(Co(e,t),t))}const Do=/(?:\/\/[^\n]*?)?(\r\n|\n|$)/y;function Oo(e,t){let n=t;for(;n<e.length&&(e[n]===` `||e[n]===` `);)n++;let r=e[n]===`,`?n+1:-1;for(r!==-1&&(n=r);n<e.length&&(e[n]===` `||e[n]===` `);)n++;Do.lastIndex=n;let i=Do.exec(e);if(i===null)return{commaEnd:r,line:null};let a=n+i[0].length;return{commaEnd:r,line:{at:a-i[1].length,next:a}}}function ko(e,t){let{commaEnd:n,line:r}=Oo(e,t.end);if(Eo(e,t.start)&&r!==null)return So(e,Co(e,t.start),r.next,``);if(n!==-1){let r=n;for(;r<e.length&&e[r]===` `;)r++;return So(e,t.start,r,``)}let i=t.start;for(;i>0&&(e[i-1]===` `||e[i-1]===` `);)i--;return e[i-1]===`,`?So(e,i-1,t.end,``):So(e,t.start,t.end,``)}function Ao(e,t,n,r,i){let a=n.commaEnd!==-1,o=a?e:So(e,t.end,t.end,`,`),s=n.line.at+ +!a,c=yo(e);return So(o,s,s,`${c}${i}${bo(r,i,c)}${a?`,`:``}`)}function jo(e,t,n,r){let i=t.kind===`object`?t.entries:t.elements,a=i[i.length-1],o=To(e,t.span.start);if(a===void 0){let i=o+` `,a=yo(e);return So(e,t.span.start+1,t.span.end-1,`${a}${i}${bo(n,i,a)}${r.trailingComma}${a}${o}`)}let{commaEnd:s,line:c}=Oo(e,a.span.end);if(Eo(e,a.span.start)&&c!==null){let t=e.slice(Co(e,a.span.start),a.span.start);return Ao(e,a.span,{commaEnd:s,line:c},n,t)}let l=s===-1?a.span.end:s;return So(e,l,l,`${s===-1?`, `:` `}${n}${s===-1?``:`,`}`)}function Mo(e,t,n,r){if(t.length===0)throw new to(`setValue needs a non-empty path`,0);if(/^\s*$/.test(e)){let i=yo(e);return`{${i} ${bo(xo(t,n,r),` `,i)}${r.trailingComma}${i}}${i}`}let i=so(e);for(let a=0;a<t.length;a++){if(i.kind!==`object`)throw new to(`cannot set ${t.join(`.`)}: ${t.slice(0,a).join(`.`)||`the document`} is not an object`,i.span.start);let o=co(i,t[a]);if(o===void 0)return jo(e,i,xo(t.slice(a),n,r),r);if(a===t.length-1){let t=To(e,o.keySpan.start);return So(e,o.value.span.start,o.value.span.end,bo(n,t,yo(e)))}i=o.value}throw new to(`unreachable: path exhausted`,0)}function No(e,t,n=0){if(t.length===0)throw new to(`deleteValue needs a non-empty path`,0);if(/^\s*$/.test(e))return e;let r=t.slice(0,-1),i=lo(so(e),r),a=i===void 0?void 0:co(i,t[t.length-1]);if(a===void 0||i?.kind!==`object`)return e;let o=ko(e,a.span);return r.length>n&&i.entries.length===1?No(o,r,n):o}const Po=[`h`,`v`,`children`];function Fo(e){if(e.kind===`string`)return e.value;if(e.kind!==`object`)return;let t=co(e,`seg`)?.value;if(t?.kind===`string`)return t.value;let n=co(e,`kind`)?.value,r=co(e,`name`)?.value;return n?.kind===`string`&&n.value===`segment`&&r?.kind===`string`?r.value:void 0}function Io(e){return e.kind===`object`?Po.map(t=>co(e,t)?.value).filter(e=>e?.kind===`array`):[]}function Lo(e){let t=co(e,`rows`)?.value;return t?.kind===`object`?t.entries:null}function Ro(e){if(e.kind!==`object`)return!0;let t=Lo(e);return t===null||t.length>0||e.entries.some(e=>e.key!==`rows`)}function*zo(e,t){yield{node:e,bareAt:t};for(let t of Io(e))for(let e of t.elements)yield*zo(e,null);for(let n of Lo(e)??[])yield*zo(n.value,t===null?null:[...t,`rows`,n.key])}function Bo(e,t){for(let{node:n}of zo(e,null))if(Fo(n)===t)return!0;return!1}function Vo(e,t,n){let r=lo(so(e),t);if(r===void 0)return null;for(let{node:i,bareAt:a}of zo(r,t))if(Fo(i)===n)return a===null?{text:e,ref:i}:Vo(Mo(e,a,`{ h: [${uo(e,i)}] }`,go),t,n);return null}function Ho(e,t,n){let r=Vo(e,t,n);return r===null?null:ko(r.text,r.ref.span)}function Uo(e,t,n,r,i){let a=Vo(e,t,r);if(a===null)return null;let{text:o,ref:s}=a,c=JSON.stringify(n),{commaEnd:l,line:u}=Oo(o,s.span.end);if(Eo(o,s.span.start)&&u!==null){let e=o.slice(Co(o,s.span.start),s.span.start);return i===`after`?Ao(o,s.span,{commaEnd:l,line:u},c,e):So(o,s.span.start,s.span.start,`${c},${yo(o)}${e}`)}let d=uo(o,s),f=i===`before`?`${c}, ${d}`:`${d}, ${c}`;return So(o,s.span.start,s.span.end,f)}var Wo=class extends Error{file;issues;warnings;constructor(e,t,n=[]){super(Jo(e,t)),this.name=`ConfigError`,this.file=e,this.issues=t,this.warnings=n}};function W(e,t){let n=0,r;for(let i of t){if(i===``||/^\d+$/.test(i))continue;let t=Go(e,n,i);if(t===-1)return r===void 0?void 0:Ko(e,r);n=t,r=t}return r===void 0?void 0:Ko(e,r)}function Go(e,t,n){let r=n.replace(/[\\^$.*+?()[\]{}|]/g,`\\$&`),i=RegExp(`(?:["']${r}["']|\\b${r}\\b)\\s*:`,`g`);i.lastIndex=t;let a=i.exec(e);return a?a.index:-1}function Ko(e,t){let n=1;for(let r=0;r<t&&r<e.length;r++)e.charCodeAt(r)===10&&n++;return n}function qo(e,t){try{return so(t),null}catch(n){if(!(n instanceof to))throw n;return`${e}:${Ko(t,n.offset)}: ${n.reason} — the settings menu cannot edit this file until it is fixed`}}function Jo(e,t){if(t.length===0)return`${e}: invalid config (no details)`;let n=[`Invalid config in ${e} (${t.length} issue${t.length===1?``:`s`}):`];for(let e of t){let t=[];e.line!==void 0&&t.push(`line ${e.line}${e.col===void 0?``:`:${e.col}`}`),e.path&&t.push(e.path);let r=t.length>0?`[${t.join(` • `)}] `:``;n.push(` ${r}${e.message}`)}return n.join(`
40
+ `)}const Yo=[`vertical`,`horizontal`],Xo={vertical:`row`,horizontal:`cell`};function Zo(e,t){return e.opens===void 0?e:{...e,opens:{...e.opens,body:t(e.opens.body)}}}function*Qo(e){yield e;for(let t of ns(e))yield*Qo(t)}const $o=(e,t)=>`${e}.children[${t}]`,es=e=>`${e}.opens.body`;function*ts(e,t){if(yield[e,t],e.kind===`container`)for(let[n,r]of e.children.entries())yield*ts(r,$o(t,n));else e.opens!==void 0&&(yield*ts(e.opens.body,es(t)))}function ns(e){return e.kind===`container`?e.children:e.opens===void 0?[]:[e.opens.body]}function rs(e){return e===void 0||`text`in e?`text`:`regex`in e?`regex`:`json`}const is=[`ttl`,`watch_file`,`depends_on`,`key`,`never`];function as(e){return e.kind!==`literal`&&e.kind!==`input`&&e.kind!==`env`&&e.kind!==`state`}const os=[`branch`,`sha`,`dirty`,`ahead`,`behind`,`stash`],ss=[`file`,`shell`,`git`],cs=[`left`,`center`,`right`],ls=[`right`,`left`,`middle`];function us(e,t,n,r){let i=n[r];return typeof i==`string`?i:(e.issues.push({path:`${t}.${r}`,message:`${t}.${r} must be a string, got ${gs(i)}`,line:W(e.source,[...t.split(`.`),r])}),null)}function ds(e,t,n,r){let i=n.default;if(i!==void 0){if(!(r===`string`&&typeof i==`string`||r===`number`&&typeof i==`number`||r===`boolean`&&typeof i==`boolean`)){e.issues.push({path:`${t}.default`,message:`default must be a ${r}, got ${gs(i)}`,line:W(e.source,[...t.split(`.`),`default`])});return}return i}}function fs(e,t,n,r){let i=n[r];if(i!==void 0){if(typeof i!=`string`){e.issues.push({path:`${t}.${r}`,message:`${t}.${r} must be a string, got ${gs(i)}`,line:W(e.source,[...t.split(`.`),r])});return}return i}}function ps(e,t,n){let r=fs(e,t,n,`palette`);if(r!==void 0){if(!e.allowedPalettes.has(r)){e.issues.push({path:`${t}.palette`,message:`Unknown palette "${r}". Expected one of: ${[...e.allowedPalettes].sort().join(`, `)}`,line:W(e.source,[...t.split(`.`),`palette`])});return}return r}}function ms(e,t,n,r,i){let a=n[r];if(a!==void 0){if(typeof a!=`string`||!i.includes(a)){e.issues.push({path:`${t}.${r}`,message:`${t}.${r} must be one of: ${i.join(`, `)}; got ${G(a)}`,line:W(e.source,[...t.split(`.`),r])});return}return a}}function hs(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function gs(e){return e===null?`null`:Array.isArray(e)?`array`:typeof e}function G(e){return typeof e==`string`?JSON.stringify(e):e===void 0?`undefined`:String(e)}function _s(e,t,n,r){return hs(r)?(bs(e,n,r,t.noun,new Set(Object.keys(t.fields))),vs(e,t.fields,n,r)):(e.issues.push({path:n,message:`${n} must be an object, got ${gs(r)}`,line:W(e.source,n.split(`.`))}),null)}function vs(e,t,n,r){let i=t,a={},o=!0;for(let[t,s]of Object.entries(i)){let i=s.parse(e,n,t,r);i===void 0?s.required&&(o=!1):a[t]=i}return o?a:null}const ys=new Set;function bs(e,t,n,r,i,a=ys){for(let o of Object.keys(n))!i.has(o)&&!a.has(`${t}.${o}`)&&e.issues.push({path:`${t}.${o}`,message:`Unknown ${r} "${o}". Expected one of: ${[...i].join(`, `)}`,line:W(e.source,[...t.split(`.`),o])})}function xs(e,t,n){return e.issues.push({path:t,message:n,line:W(e.source,t.split(`.`))}),null}function Ss(e,t,n,r){if(!hs(r))return e.issues.push({path:n,message:`${t.noun} must be an object, got ${gs(r)}`,line:W(e.source,n.split(`.`))}),null;let i=t.arms,a=Object.keys(i),o=Object.keys(r).filter(e=>e in i),s=Object.keys(r).filter(e=>!(e in i));for(let r of s)e.issues.push({path:`${n}.${r}`,message:`Unknown ${t.noun} key "${r}". Expected exactly one of: ${a.join(`, `)}`,line:W(e.source,[...n.split(`.`),r])});if(o.length===0)return e.issues.push({path:n,message:`${t.noun} must declare exactly one of: ${a.join(`, `)}`,line:W(e.source,n.split(`.`))}),null;if(o.length>1)return e.issues.push({path:n,message:`${t.noun} must declare exactly one of: ${a.join(`, `)} (found: ${o.join(`, `)})`,line:W(e.source,n.split(`.`))}),null;let c=o[0];return i[c].parse(e,`${n}.${c}`,r[c])}function Cs(e,t,n,r){if(!hs(r))return e.issues.push({path:n,message:`${n} must be an object, got ${gs(r)}`,line:W(e.source,n.split(`.`))}),null;let i=r[t.tag];if(typeof i!=`string`)return e.issues.push({path:`${n}.${t.tag}`,message:`${n}.${t.tag} must be a string, got ${gs(i)}`,line:W(e.source,n.split(`.`))}),null;let a=t.arms;if(!(i in a))return e.issues.push({path:`${n}.${t.tag}`,message:`Unknown ${t.noun} "${i}". Expected one of: ${Object.keys(a).join(`, `)}`,line:W(e.source,[...n.split(`.`),t.tag])}),null;let o=a[i],s=e.issues.length,c=o.parse(e,n,r),l=new Set(e.issues.slice(s).map(e=>e.path));return bs(e,n,r,`${i} ${t.memberNoun} key`,o.keys,l),c}function ws(e,t,n){return{json:Fs(Ns(n),e,t),keys:new Set([e,...Object.keys(n)])}}function Ts(e){return(...t)=>e()(...t)}function Es(e,...t){return(n,r,i)=>{let a=e(n,r,i);if(a===null)return null;for(let e of t){if(e.ok(a))continue;let{field:t,message:i}=e.issue(a),o=t===``?r:`${r}.${t}`;return n.issues.push({path:o,message:i,line:W(n.source,o.split(`.`))}),null}return a}}function K(){return{required:!1,json:{type:`string`},parse:(e,t,n,r)=>fs(e,t,r,n)}}function Ds(){return{required:!1,json:{type:`boolean`},parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0){if(typeof i!=`boolean`){e.issues.push({path:`${t}.${n}`,message:`${n} must be a boolean, got ${gs(i)}`,line:W(e.source,[n])});return}return i}}}}function Os(e){let{min:t,max:n}=e;return{required:!1,json:{type:`integer`,minimum:t,maximum:n},parse:(e,r,i,a)=>{let o=a[i];if(o!==void 0){if(typeof o!=`number`||!Number.isInteger(o)||o<t||o>n){e.issues.push({path:`${r}.${i}`,message:`${i} must be an integer between ${t} and ${n}, got ${G(o)}`,line:W(e.source,[i])});return}return o}}}}function ks(e={}){let{min:t}=e;return{required:!1,json:{type:`number`,...t!==void 0&&{minimum:t}},parse:(e,n,r,i)=>{let a=i[r];if(a!==void 0){if(typeof a!=`number`||!Number.isFinite(a)||t!==void 0&&a<t){let i=t===void 0?`a finite number`:`a finite number >= ${t}`;e.issues.push({path:`${n}.${r}`,message:`${r} must be ${i}, got ${G(a)}`,line:W(e.source,[r])});return}return a}}}}function As(){return{required:!1,json:{type:`string`},parse:(e,t,n,r)=>ps(e,t,r)}}function js(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>us(e,t,r,n)??void 0}}function Ms(e){return{required:!1,json:{enum:[...e]},parse:(t,n,r,i)=>ms(t,n,i,r,e)}}function Ns(e,t={closed:!0}){let n=e,r={},i=[];for(let[e,t]of Object.entries(n))r[e]=t.json,t.required&&i.push(e);return{type:`object`,properties:r,...i.length>0&&{required:i},...t.closed&&{additionalProperties:!1}}}function Ps(e){return Ns(e.fields)}function Fs(e,t,n){let r=e,i={[t]:{const:n},...r.properties},a=[t,...r.required??[]];return{...r,properties:i,required:a}}function Is(e){let t=e.arms;return{anyOf:Object.values(t).map(e=>e.json)}}function Ls(e){let t=e.arms;return{anyOf:Object.entries(t).map(([e,t])=>({type:`object`,properties:{[e]:t.json},required:[e],additionalProperties:!1}))}}const Rs=/^[A-Za-z_][A-Za-z0-9_]*$/;function zs(e){return`#${e+1}`}const Bs={rows:{}};function Vs(e){return`rows`in e}function Hs(e){return Object.fromEntries(e.map((e,t)=>[zs(t),e]))}function Us(e){if(e.kind===`container`&&e.direction===`vertical`){let{kind:t,direction:n,children:r,...i}=e;return{...i,rows:Hs(r)}}let{when:t,...n}=e;return{...t!==void 0&&{when:t},rows:Hs([n])}}function Ws(e){let{rows:t,...n}=e;return{kind:`container`,direction:`vertical`,children:Object.values(t),...n}}function Gs(e){return Vs(e)?Ws(e):e}function*Ks(e,t){if(!Vs(e)){yield*ts(e,t);return}yield[Ws(e),t];for(let[n,r]of Object.entries(e.rows))yield*ts(r,`${t}.rows.${n}`)}function qs(e,t){return Vs(e)?{...t,...e,rows:{...t.rows,...e.rows}}:Us(e)}function Js(e){if(!Vs(e))return!0;let{rows:t,...n}=e;return Object.values(n).some(e=>e!==void 0)||Object.keys(t).length>0}function Ys(e,t){return{globals:{...t.globals,...e.globals??{}},variables:{...t.variables,...e.variables??{}},segments:Zs(t.segments,e.segments??{}),root:qs(e.root??Bs,t.root),actions:{...t.actions,...e.actions??{}},looks:{...t.looks,...e.looks??{}},presets:Zs(t.presets,Xs(t.presets,e.presets??{})),editGlobals:{...t.editGlobals,...e.editGlobals??{}},helpers:{...t.helpers,...e.helpers??{}}}}function Xs(e,t){return Object.fromEntries(Object.entries(t).map(([t,n])=>[t,n.globals===void 0?n:{...n,globals:{...e[t]?.globals,...n.globals}}]))}function Zs(e,t){return{...e,...Object.fromEntries(Object.entries(t).map(([t,n])=>[t,{...e[t],...n}]))}}const Qs=`closed`,$s=`🍫`;function ec(e,t,n){if(t===0)return`${e} needs a display (the clickable text)`;if(t!==1&&t!==n)return`${e} cycles ${n} members; bind one display per member (${n}) or one static display, got ${t}`}function tc(e,t,n,r){let i=ec(e,t.length,n);if(i!==void 0)throw Error(i);return t.length===1?t[0]:t[r]}function nc(e){return e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}function rc(e,t,n,r,i){return{kind:`segment`,name:e,opens:{ref:t,body:n,placement:r},...i!==void 0&&{when:i}}}function ic(e,...t){return`{{ and ${[e,...t].map(ac).join(` `)} }}`}function ac(e){return`(eq .${e.variable} "${nc(e.member)}")`}function oc(e,t,n){return`{{ action "${e}" "${nc(t)}" "${nc(n)}" }}`}function sc(e,t){return{kind:`state`,key:e,default:t}}function cc(e,t){return{set:e,cycle:[Qs,t]}}const lc={required:!1,json:{enum:[...za]},parse:(e,t,n,r)=>{if(r[n]===`auto`){e.issues.push({path:`${t}.${n}`,message:`${t}.${n}: "auto" is not supported — the render daemon runs detached, so terminal detection would read the daemon's environment, not your terminal's. Pick an explicit depth: ${za.join(`, `)}`,line:W(e.source,[...t.split(`.`),n])});return}return ms(e,t,r,n,za)}},uc={required:!1,json:{type:`string`},parse:(e,t,n,r)=>{let i=fs(e,t,r,n);return Ta(i)?i:ps(e,t,r)}},dc=/^[^\r\n]*\S[^\r\n]*$/u,fc=RegExp(`^(?:❌|✕)[\\uFE0E\\uFE0F]?$`,`u`),pc={required:!1,json:{type:`string`,pattern:dc.source,not:{pattern:fc.source}},parse:(e,t,n,r)=>{let i=fs(e,t,r,n);if(i===void 0||dc.test(i)&&!fc.test(i))return i;e.issues.push({path:`${t}.${n}`,message:`${t}.${n}: must be one line of visible text other than a close glyph ("❌", "✕") — the settings menu needs a glyph to click`,line:W(e.source,[...t.split(`.`),n])})}},mc={default_bg:K(),default_fg:K(),default_empty_value:K(),default_separator:K(),default_truncate_marker:K(),palette:uc,look:K(),preset:K(),style:Ms(Ma),progression:Ms(Wa),autoWrap:Ds(),padding:Os(Xa),charset:Ms(Fa),updateNotice:Ds(),colorCompatibility:lc,menuGlyph:pc},hc={noun:`globals key`,fields:mc};function gc(e,t){return{required:!1,json:{not:{},description:`not allowed here — ${e}`},parse:(e,n,r,i)=>{i[r]!==void 0&&e.issues.push({path:`${n}.${r}`,message:t(`${n}.${r}`),line:W(e.source,[...n.split(`.`),r])})}}}function _c(e){return gc(`${e} cannot select a preset`,t=>`${t}: ${e} cannot select a preset. Which preset is active is resolved once, as session pick over globals.preset over "default"; a fragment naming another would be a second authority over that. Set the default arrangement in the top-level globals.preset instead.`)}function vc(e){return gc(`${e} cannot change the settings menu glyph`,t=>`${t}: ${e} cannot change the settings menu glyph — one menu is shared by every preset. Set it in the top-level globals.menuGlyph instead.`)}const yc={preset:_c(`a preset`),menuGlyph:vc(`a preset`)},bc={noun:`preset globals key`,fields:{...mc,...yc}};function xc(e){return Oc(e)&&!(e in yc)}const Sc={noun:`editGlobals key`,fields:{...mc,preset:_c(`the editGlobals fragment`),menuGlyph:vc(`the editGlobals fragment`)}};function Cc(e,t,n){return n===void 0?{}:_s(e,hc,t,n)??{}}function wc(e,t,n){return _s(e,bc,t,n)??{}}function Tc(){return Ps(bc)}function Ec(e,t,n){return _s(e,Sc,t,n)??{}}const Dc=new Set(Object.keys(hc.fields));function Oc(e){return Dc.has(e)}function kc(){return[...Dc]}const Ac={padding:1};function jc(e){let t=new Map;for(let[n,r]of Object.entries(Ac)){let i=e[n];t.set(n,typeof i==`number`?i:r)}return t}function Mc(e,t,n,r){return n.cache===void 0?(ss.includes(r)&&e.issues.push({path:`${t}.cache`,message:`${r} variables must declare a cache policy (one of: ${is.join(`, `)})`,line:W(e.source,t.split(`.`))}),null):Lc(e,`${t}.cache`,n.cache)}function Nc(e,t,n){if(n.cache!==void 0)return Lc(e,`${t}.cache`,n.cache)??void 0}function Pc(e){return{required:!0,json:Bc(),parse:(t,n,r,i)=>Mc(t,n,i,e)??void 0}}function Fc(){return{required:!1,json:Bc(),parse:(e,t,n,r)=>Nc(e,t,r)}}const Ic={noun:`cache`,arms:{ttl:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`&&Hc(n)?{ttl:n}:xs(e,t,`cache.ttl must be a duration string like "5s", "100ms", "2m", "1h"; got ${G(n)}`)},watch_file:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`&&n!==``?{watch_file:n}:xs(e,t,`cache.watch_file must be a non-empty path string, got ${G(n)}`)},depends_on:{json:{type:`array`,items:{type:`string`}},parse:(e,t,n)=>Array.isArray(n)&&n.every(e=>typeof e==`string`)?{depends_on:n}:xs(e,t,`cache.depends_on must be an array of variable-name strings, got ${G(n)}`)},key:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`&&n!==``?{key:n}:xs(e,t,`cache.key must be a non-empty template string, got ${G(n)}`)},never:{json:{const:!0},parse:(e,t,n)=>n===!0?{never:!0}:xs(e,t,`cache.never must be the literal boolean true, got ${G(n)}`)}}};function Lc(e,t,n){return Ss(e,Ic,t,n)}const Rc={noun:`time-variable cache`,arms:{ttl:Ic.arms.ttl}};function zc(){return{required:!1,json:Ls(Rc),parse:(e,t,n,r)=>r.cache===void 0?void 0:Ss(e,Rc,`${t}.cache`,r.cache)??void 0}}function Bc(){return Ls(Ic)}const Vc=/^(\d+(?:\.\d+)?)(ms|s|m|h)$/;function Hc(e){return Vc.test(e)}function Uc(e,t,n){if(n===void 0)return{};if(!hs(n))return e.issues.push({path:t,message:`${t} must be an object, got ${gs(n)}`,line:W(e.source,t.split(`.`))}),{};let r={};for(let[i,a]of Object.entries(n)){let n=Cs(e,dl,`${t}.${i}`,a);n!==null&&(r[i]=n)}return r}function Wc(){return{required:!0,json:{type:[`string`,`number`,`boolean`]},parse:(e,t,n,r)=>{let i=r.value;if(typeof i!=`string`&&typeof i!=`number`&&typeof i!=`boolean`){e.issues.push({path:`${t}.value`,message:`literal value must be string|number|boolean, got ${gs(i)}`,line:W(e.source,t.split(`.`))});return}return i}}}function Gc(){return{required:!0,json:{enum:[...os]},parse:(e,t,n,r)=>{let i=r.field;if(typeof i!=`string`||!os.includes(i)){e.issues.push({path:`${t}.field`,message:`git field must be one of: ${os.join(`, `)}, got ${JSON.stringify(i)}`,line:W(e.source,[...t.split(`.`),`field`])});return}return i}}}function Kc(){return{required:!1,json:{type:[`string`,`number`,`boolean`]},parse:(e,t,n,r)=>{let i=r.type;return ds(e,t,r,i===`number`||i===`boolean`||i===`string`?i:`string`)}}}const qc={noun:`parse`,arms:{text:{json:{const:!0},parse:(e,t,n)=>n===!0?{text:!0}:xs(e,t,`parse.text must be the literal boolean true, got ${G(n)}`)},regex:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`?Jc(e,t,n):xs(e,t,`parse.regex must be a pattern string, got ${G(n)}`)},json:{json:{const:!0},parse:(e,t,n)=>n===!0?{json:!0}:xs(e,t,`parse.json must be the literal boolean true, got ${G(n)}`)}}};function Jc(e,t,n){let r;try{new RegExp(n),r=RegExp(`${n}|`).exec(``).length-1}catch(n){return xs(e,t,`parse.regex is not a valid regular expression: ${n.message}`)}return r>=1?{regex:n}:xs(e,t,`parse.regex must contain a capture group — its group 1 is the value; got ${JSON.stringify(n)}`)}function Yc(){return{required:!1,json:Ls(qc),parse:(e,t,n,r)=>(r.regex!==void 0&&e.issues.push({path:`${t}.regex`,message:`${t}.regex was retired; the regex is the parse step's regex arm now: parse: { regex: ${JSON.stringify(r.regex)} }`,line:W(e.source,[...t.split(`.`),`regex`])}),r.parse===void 0?void 0:Ss(e,qc,`${t}.parse`,r.parse)??void 0)}}function Xc(){return{required:!1,json:{type:[`string`,`number`,`boolean`,`array`,`object`],description:`The value published when the source fails: a string under the text/regex parse arms, any non-null JSON value under the json arm`},parse:(e,t,n,r)=>hs(r.parse)&&`json`in r.parse?Zc(e,t,r.default):fs(e,t,r,`default`)}}function Zc(e,t,n){if(n!==void 0)return Qc(n)?n:xs(e,`${t}.default`,`${t}.default must be a JSON value (a json-parsed source's document), got ${G(n)}`)??void 0}function Qc(e){return e!==null&&$c(e)}function $c(e){if(e===null)return!0;switch(typeof e){case`string`:case`boolean`:return!0;case`number`:return Number.isFinite(e);case`object`:{if(Array.isArray(e))return e.every($c);let t=Object.getPrototypeOf(e);return(t===Object.prototype||t===null)&&Object.values(e).every($c)}default:return!1}}const el={value:Wc(),default:K()},tl={path:js(),type:Ms([`string`,`number`,`boolean`]),default:Kc()},nl={name:js(),default:K()},rl={path:js(),readMode:Ms([`whole`,`first-line`]),parse:Yc(),cache:Pc(`file`),default:Xc()},il={command:js(),parse:Yc(),cache:Pc(`shell`),default:Xc()},al={template:js(),cache:Fc(),default:K()},ol={layout:js(),cache:zc(),default:K()},sl={field:Gc(),cache:Pc(`git`),default:K()},cl={key:js(),default:K()},ll=`kind`;function ul(e,t){return{...ws(ll,e,t),parse:(n,r,i)=>{let a=vs(n,t,r,i);return a===null?null:{kind:e,...a}}}}const dl={tag:ll,noun:`source kind`,memberNoun:`variable`,arms:{literal:ul(`literal`,el),input:ul(`input`,tl),env:ul(`env`,nl),file:ul(`file`,rl),shell:ul(`shell`,il),template:ul(`template`,al),time:ul(`time`,ol),git:ul(`git`,sl),state:ul(`state`,cl)}};function fl(){return Is(dl)}function pl(){return{type:`object`,additionalProperties:fl()}}function ml(e){return e.replace(/[^A-Za-z0-9]+/g,`_`)}const hl=`groups.`,gl=`menus.`,_l=`edit.`,vl=`settings.`,yl=[hl,gl,_l,vl];function bl(e){return yl.some(t=>e.startsWith(t))}function xl(e){let t=ml(e);return yl.find(e=>t.startsWith(ml(e)))}function Sl(e,t,n,r){for(let i of[`variables`,`actions`,`segments`])for(let a of Object.keys(t[i]??{}))a.startsWith(n)&&e.issues.push({path:`${i}.${a}`,message:`"${a}" is in the reserved "${n}" namespace (synthesized by ${r}) — rename it`,line:W(e.source,[`root`])})}const Cl=new Map([[`gitTaculous`,`gitaculous`],[`git`,`gitaculous`]]);function wl(e){let t=Cl.get(e);return t===void 0?``:` (the built-in segment "${e}" was renamed to "${t}" — update this reference)`}function Tl(e){return new Set(Object.keys(e.segments).filter(e=>!bl(e)))}function El(e,t,n){if(t===void 0)return{};if(!hs(t))return e.issues.push({path:`segments`,message:`segments must be an object, got ${gs(t)}`,line:W(e.source,[`segments`])}),{};let r={};for(let[i,a]of Object.entries(t)){let t=_s(e,n.has(i)?Ml:jl,`segments.${i}`,a);t!==null&&(r[i]=t)}return r}function Dl(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>r[n]===void 0?xs(e,`${t}.${n}`,`${t} declares no template — only a segment the bundled default declares may omit it (inheriting the bundled template); a segment of your own needs its own${wl(t.slice(9))}`)??void 0:us(e,t,r,n)??void 0}}function Ol(){return{required:!1,json:{anyOf:[{const:`auto`},{const:`fill`},{type:`integer`,minimum:1}]},parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0){if(i===`auto`)return`auto`;if(i===`fill`)return`fill`;if(typeof i==`number`&&Number.isInteger(i)&&i>0)return i;e.issues.push({path:`${t}.${n}`,message:`width must be "auto", "fill", or a positive integer, got ${G(i)}`,line:W(e.source,[...t.split(`.`),n])})}}}}function kl(){return{required:!1,json:pl(),parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0)return Uc(e,`${t}.${n}`,i)}}}const Al={template:Dl(),description:K(),width:Ol(),justify:Ms(cs),truncate:Ms(ls),bg:K(),fg:K(),when:K(),palette:As(),vars:kl()},jl={noun:`segment key`,fields:Al},Ml={noun:`segment key`,fields:{...Al,template:K()}},Nl=`#/definitions/LayoutNode`,Pl={kind:`container`,direction:`vertical`,children:[]};function Fl(e){return{required:!0,json:{const:e},parse:()=>e}}function Il(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>{let i=r[n];return typeof i==`string`&&i.length>0?i:(e.issues.push({path:`${t}.${n}`,message:`a segment node must have a non-empty "name" (a segment name), got ${G(i)}`,line:W(e.source,[`root`])}),``)}}}function Ll(){return{required:!0,json:{enum:[...Yo]},parse:(e,t,n,r)=>{let i=r[n];return typeof i==`string`&&Yo.includes(i)?i:(e.issues.push({path:`${t}.${n}`,message:`a container "direction" must be one of: ${Yo.join(`, `)} (got ${JSON.stringify(i)})`,line:W(e.source,[`root`])}),`vertical`)}}}function Rl(e){return{required:!0,json:{type:`array`,items:{$ref:Nl}},parse:(t,n,r,i)=>{let a=i[r];return Array.isArray(a)?a.map((i,a)=>e(t,`${n}.${r}[${a}]`,i)):(t.issues.push({path:`${n}.${r}`,message:`a container must have a "children" array of layout nodes, got ${gs(a)}`,line:W(t.source,[`root`])}),[])}}}const zl={noun:`layout-node key`,fields:{kind:Fl(`segment`),name:Il(),when:K()}},Bl=()=>Ms(Pi),Vl={noun:`layout-node key`,fields:{kind:Fl(`container`),direction:Ll(),children:Rl(Ts(()=>Kl)),when:K(),distribution:Bl()}};function Hl(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>{let i=r[n];return typeof i==`string`&&i.length>0?i:(e.issues.push({path:`${t}.${n}`,message:`a "seg" node must have a non-empty segment name, got ${G(i)}`,line:W(e.source,[`root`])}),``)}}}const Ul={noun:`layout-node key`,fields:{seg:Hl(),when:K()}},Wl={noun:`layout-node key`,fields:{h:Rl(Ts(()=>Kl)),when:K(),distribution:Bl()}},Gl={noun:`layout-node key`,fields:{v:Rl(Ts(()=>Kl)),when:K(),distribution:Bl()}},Kl=(e,t,n)=>{if(typeof n==`string`)return n.length===0?(e.issues.push({path:t,message:`a bare-string layout node must be a non-empty segment name`,line:W(e.source,[`root`])}),Pl):{kind:`segment`,name:n};if(!hs(n))return e.issues.push({path:t,message:`a layout node must be a string (segment name) or an object with "kind" / "seg" / "h" / "v", got ${gs(n)}`,line:W(e.source,[`root`])}),Pl;if(n.kind===`container`)return _s(e,Vl,t,n)??Pl;if(n.kind===`segment`)return _s(e,zl,t,n)??Pl;if(n.kind===`cells`)return e.issues.push({path:t,message:`kind: "cells" is no longer supported — use the h-arm spelling instead:
39
41
  Old: { kind: "cells", segments: ["seg1", "seg2"] }
40
- New: { h: ["seg1", "seg2"] }`,line:W(e.source,[`root`])}),Al;if(n.kind===`group`){let r=hs(e,Yl,t,n);return r===null?Al:(e.groups.push({name:r.name,label:r.label,...r.open!==void 0&&{open:r.open},...r.direction!==void 0&&{direction:r.direction},...r.key!==void 0&&{key:r.key},...r.bg!==void 0&&{bg:r.bg},...r.fg!==void 0&&{fg:r.fg},...r.when!==void 0&&{when:r.when},path:t}),Zl(r))}let r=`h`in n,i=`v`in n,a=`seg`in n;if(+!!r+ +!!i+ +!!a>1){let r=[`seg`,`h`,`v`].filter(e=>e in n);return e.issues.push({path:t,message:`a layout node may have exactly one of "seg", "h", or "v" — got ${r.map(e=>`"${e}"`).join(` and `)} together`,line:W(e.source,[`root`])}),Al}if(a){let r=hs(e,zl,t,n);return r===null?Al:{kind:`segment`,name:r.seg,...r.when!==void 0&&{when:r.when}}}if(r){let r=hs(e,Bl,t,n);return r===null?Al:{kind:`container`,direction:`horizontal`,children:r.h,...r.when!==void 0&&{when:r.when},...r.distribution!==void 0&&{distribution:r.distribution}}}if(i){let r=hs(e,Vl,t,n);return r===null?Al:{kind:`container`,direction:`vertical`,children:r.v,...r.when!==void 0&&{when:r.when},...r.distribution!==void 0&&{distribution:r.distribution}}}return e.issues.push({path:`${t}.kind`,message:`a layout node "kind" must be "container", "segment", or "group", or use the terse A-grammar: a bare string, or an object with "seg", "h", or "v" (got ${JSON.stringify(n.kind)})`,line:W(e.source,[`root`])}),Al};function Ul(){return{required:!0,json:{type:`object`,propertyNames:{pattern:Is.source},additionalProperties:{$ref:kl}},parse:(e,t,n,r)=>{let i=r[n];if(!ps(i))return e.issues.push({path:`${t}.${n}`,message:`"rows" must be an object of row name → layout node, got ${ms(i)}`,line:W(e.source,[...t.split(`.`),n])}),{};let a={};for(let[r,o]of Object.entries(i)){if(!Is.test(r)){e.issues.push({path:`${t}.${n}.${r}`,message:`row name "${r}" must be an identifier (letters, digits, _; not starting with a digit) — it names the row in the config file and merges by name over the bundled default's rows`,line:W(e.source,[...t.split(`.`),n,r])});continue}a[r]=Hl(e,`${t}.${n}.${r}`,o)}return a}}}const Wl={noun:`root key`,fields:{rows:Ul(),when:K(),distribution:Il()}};function Gl(e,t,n){return ps(n)&&`rows`in n?hs(e,Wl,t,n)??{rows:{}}:Hl(e,t,n)}function Kl(){return{required:!0,json:{type:`string`,pattern:Is.source},parse:(e,t,n,r)=>{let i=r[n];if(typeof i!=`string`||!Is.test(i)||i===`closed`){e.issues.push({path:`${t}.${n}`,message:`a group "name" must be an identifier (letters, digits, _; not starting with a digit) and not the reserved "${Xs}", got ${G(i)}`,line:W(e.source,[`root`])});return}return i}}}function ql(){return{required:!1,json:{type:`string`,minLength:1},parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0){if(typeof i!=`string`||i===``||i.includes(`/`)){e.issues.push({path:`${t}.${n}`,message:`a group "key" must be a non-empty, slash-free SessionState key, got ${G(i)}`,line:W(e.source,[`root`])});return}return i}}}}function Jl(){return{required:!0,json:{type:`string`,pattern:`^[^\\n\\r]*$`},parse:(e,t,n,r)=>{let i=cs(e,t,r,n);if(i!==null){if(/[\n\r]/.test(i)){e.issues.push({path:`${t}.${n}`,message:`${t}.${n}: group label must not contain newlines`,line:W(e.source,[...t.split(`.`),n])});return}return i}}}}const Yl={noun:`layout-node key`,fields:{kind:jl(`group`),name:Kl(),label:Jl(),open:Ts(),direction:As(qo),key:ql(),bg:K(),fg:K(),when:K(),distribution:Il(),children:Pl(Cs(()=>Hl))}};function Xl(e){return e.key??`groups.`+e.name}function Zl(e){let t=pl+e.name;return tc(t,{variable:t,key:Xl(e),member:e.name},{kind:`container`,direction:e.direction??`vertical`,children:e.children,...e.distribution!==void 0&&{distribution:e.distribution}},`drop`,e.when)}function Ql(e,t,n){e.issues.push({path:t,message:n,line:W(e.source,[`root`])})}function $l(e,t){bl(e,t,pl,`group nodes`);let n=e.groups;if(n.length===0)return;let r=new Set;for(let t of n)r.has(t.name)&&Ql(e,t.path,`duplicate group name "${t.name}" — group names must be unique (they name the synthesized state var, action, and toggle segment)`),r.add(t.name);for(let t of n)for(let r of n)t!==r&&t.path.startsWith(`${r.path}.`)&&Xl(t)===Xl(r)&&Ql(e,t.path,`group "${t.name}" shares key "${Xl(t)}" with its ancestor group "${r.name}" — a shared key holds ONE open group, so an ancestor and a descendant cannot share one. Sibling accordions share a key; nested groups use distinct keys.`);let i=new Map;for(let t of n){let n=Xl(t);if(i.has(n)||i.set(n,Xs),t.open===!0){let r=i.get(n);r!==`closed`&&Ql(e,t.path,`groups "${r}" and "${t.name}" share key "${n}" and both declare open: true — a shared key holds one open group; pick one`),i.set(n,t.name)}}let a={},o={},s={};for(let e of n){let t=pl+e.name,r=Xl(e),c=n.filter(t=>t!==e&&e.path.startsWith(t.path+`.`)).length,l=` `.repeat(c);a[t]=ac(r,i.get(r)),o[t]=oc(r,e.name),s[t]={template:ic(t,`${l}${e.label} ▸`,`${l}${e.label} ▾`),...e.bg!==void 0&&{bg:e.bg},...e.fg!==void 0&&{fg:e.fg}}}t.variables={...t.variables??{},...a},t.actions={...t.actions??{},...o},t.segments={...t.segments??{},...s}}var eu=class extends Error{name=`TemplateError`;kind=`EvalError`;pos;source;constructor(e,t,n={}){super(e),this.pos=t,this.source=n.source}get sourceSnippet(){return this.source?su(this.source,this.pos):``}toString(){let e=`${this.name}: ${this.message}\n at line ${this.pos.line}, column ${this.pos.column}`,t=this.sourceSnippet;return t?`${e}\n\n${t}`:e}},tu=class extends eu{name=`ParseError`;kind=`ParseError`;expected;found;constructor(e,t,n={}){super(e,t,n),this.expected=n.expected,this.found=n.found}},nu=class extends eu{name=`EvalError`;kind=`EvalError`},ru=class extends nu{name=`FuncNotFoundError`;kind=`FuncNotFoundError`;funcName;suggestions;constructor(e,t,n={}){let r=cu(e,n.available??[]),i=r.length===0?``:` (did you mean: ${r.join(`, `)}?)`;super(`function ${JSON.stringify(e)} is not registered${i}`,t,n),this.funcName=e,this.suggestions=r}},iu=class extends nu{name=`TypeMismatchError`;kind=`TypeMismatchError`;funcName;argIndex;expected;receivedSummary;constructor(e,t,n,r,i,a={}){super(`function ${JSON.stringify(e)} arg ${t}: expected ${n}, but a ${r} flowed in. Pass it through \`unstyled\` (or your engine's flatten function) to convert.`,i,a),this.funcName=e,this.argIndex=t,this.expected=n,this.receivedSummary=r}},au=class extends nu{name=`MissingFieldError`;kind=`MissingFieldError`;path;constructor(e,t,n={}){super(`field "${e.join(`.`)}" not found on receiver`,t,n),this.path=e}},ou=class extends nu{name=`FailError`;kind=`FailError`;constructor(e,t={line:0,column:0,offset:0},n={}){super(e,t,n)}};function su(e,t){let n=e.split(`
42
+ New: { h: ["seg1", "seg2"] }`,line:W(e.source,[`root`])}),Pl;if(n.kind===`group`){let r=_s(e,$l,t,n);return r===null?Pl:(e.groups.push({name:r.name,label:r.label,...r.open!==void 0&&{open:r.open},...r.direction!==void 0&&{direction:r.direction},...r.key!==void 0&&{key:r.key},...r.bg!==void 0&&{bg:r.bg},...r.fg!==void 0&&{fg:r.fg},...r.when!==void 0&&{when:r.when},path:t}),tu(r))}let r=`h`in n,i=`v`in n,a=`seg`in n;if(+!!r+ +!!i+ +!!a>1){let r=[`seg`,`h`,`v`].filter(e=>e in n);return e.issues.push({path:t,message:`a layout node may have exactly one of "seg", "h", or "v" — got ${r.map(e=>`"${e}"`).join(` and `)} together`,line:W(e.source,[`root`])}),Pl}if(a){let r=_s(e,Ul,t,n);return r===null?Pl:{kind:`segment`,name:r.seg,...r.when!==void 0&&{when:r.when}}}if(r){let r=_s(e,Wl,t,n);return r===null?Pl:{kind:`container`,direction:`horizontal`,children:r.h,...r.when!==void 0&&{when:r.when},...r.distribution!==void 0&&{distribution:r.distribution}}}if(i){let r=_s(e,Gl,t,n);return r===null?Pl:{kind:`container`,direction:`vertical`,children:r.v,...r.when!==void 0&&{when:r.when},...r.distribution!==void 0&&{distribution:r.distribution}}}return e.issues.push({path:`${t}.kind`,message:`a layout node "kind" must be "container", "segment", or "group", or use the terse A-grammar: a bare string, or an object with "seg", "h", or "v" (got ${JSON.stringify(n.kind)})`,line:W(e.source,[`root`])}),Pl};function ql(){return{required:!0,json:{type:`object`,propertyNames:{pattern:Rs.source},additionalProperties:{$ref:Nl}},parse:(e,t,n,r)=>{let i=r[n];if(!hs(i))return e.issues.push({path:`${t}.${n}`,message:`"rows" must be an object of row name → layout node, got ${gs(i)}`,line:W(e.source,[...t.split(`.`),n])}),{};let a={};for(let[r,o]of Object.entries(i)){if(!Rs.test(r)){e.issues.push({path:`${t}.${n}.${r}`,message:`row name "${r}" must be an identifier (letters, digits, _; not starting with a digit) — it names the row in the config file and merges by name over the bundled default's rows`,line:W(e.source,[...t.split(`.`),n,r])});continue}a[r]=Kl(e,`${t}.${n}.${r}`,o)}return a}}}const Jl={noun:`root key`,fields:{rows:ql(),when:K(),distribution:Bl()}};function Yl(e,t,n){return hs(n)&&`rows`in n?_s(e,Jl,t,n)??{rows:{}}:Kl(e,t,n)}function Xl(){return{required:!0,json:{type:`string`,pattern:Rs.source},parse:(e,t,n,r)=>{let i=r[n];if(typeof i!=`string`||!Rs.test(i)||i===`closed`){e.issues.push({path:`${t}.${n}`,message:`a group "name" must be an identifier (letters, digits, _; not starting with a digit) and not the reserved "${Qs}", got ${G(i)}`,line:W(e.source,[`root`])});return}return i}}}function Zl(){return{required:!1,json:{type:`string`,minLength:1},parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0){if(typeof i!=`string`||i===``||i.includes(`/`)){e.issues.push({path:`${t}.${n}`,message:`a group "key" must be a non-empty, slash-free SessionState key, got ${G(i)}`,line:W(e.source,[`root`])});return}return i}}}}function Ql(){return{required:!0,json:{type:`string`,pattern:`^[^\\n\\r]*$`},parse:(e,t,n,r)=>{let i=us(e,t,r,n);if(i!==null){if(/[\n\r]/.test(i)){e.issues.push({path:`${t}.${n}`,message:`${t}.${n}: group label must not contain newlines`,line:W(e.source,[...t.split(`.`),n])});return}return i}}}}const $l={noun:`layout-node key`,fields:{kind:Fl(`group`),name:Xl(),label:Ql(),open:Ds(),direction:Ms(Yo),key:Zl(),bg:K(),fg:K(),when:K(),distribution:Bl(),children:Rl(Ts(()=>Kl))}};function eu(e){return e.key??`groups.`+e.name}function tu(e){let t=hl+e.name;return rc(t,{variable:t,key:eu(e),member:e.name},{kind:`container`,direction:e.direction??`vertical`,children:e.children,...e.distribution!==void 0&&{distribution:e.distribution}},`drop`,e.when)}function nu(e,t,n){e.issues.push({path:t,message:n,line:W(e.source,[`root`])})}function ru(e,t){Sl(e,t,hl,`group nodes`);let n=e.groups;if(n.length===0)return;let r=new Set;for(let t of n)r.has(t.name)&&nu(e,t.path,`duplicate group name "${t.name}" — group names must be unique (they name the synthesized state var, action, and toggle segment)`),r.add(t.name);for(let t of n)for(let r of n)t!==r&&t.path.startsWith(`${r.path}.`)&&eu(t)===eu(r)&&nu(e,t.path,`group "${t.name}" shares key "${eu(t)}" with its ancestor group "${r.name}" — a shared key holds ONE open group, so an ancestor and a descendant cannot share one. Sibling accordions share a key; nested groups use distinct keys.`);let i=new Map;for(let t of n){let n=eu(t);if(i.has(n)||i.set(n,Qs),t.open===!0){let r=i.get(n);r!==`closed`&&nu(e,t.path,`groups "${r}" and "${t.name}" share key "${n}" and both declare open: true — a shared key holds one open group; pick one`),i.set(n,t.name)}}let a={},o={},s={};for(let e of n){let t=hl+e.name,r=eu(e),c=n.filter(t=>t!==e&&e.path.startsWith(t.path+`.`)).length,l=` `.repeat(c);a[t]=sc(r,i.get(r)),o[t]=cc(r,e.name),s[t]={template:oc(t,`${l}${e.label} ▸`,`${l}${e.label} ▾`),...e.bg!==void 0&&{bg:e.bg},...e.fg!==void 0&&{fg:e.fg}}}t.variables={...t.variables??{},...a},t.actions={...t.actions??{},...o},t.segments={...t.segments??{},...s}}var iu=class extends Error{name=`TemplateError`;kind=`EvalError`;pos;source;constructor(e,t,n={}){super(e),this.pos=t,this.source=n.source}get sourceSnippet(){return this.source?du(this.source,this.pos):``}toString(){let e=`${this.name}: ${this.message}\n at line ${this.pos.line}, column ${this.pos.column}`,t=this.sourceSnippet;return t?`${e}\n\n${t}`:e}},au=class extends iu{name=`ParseError`;kind=`ParseError`;expected;found;constructor(e,t,n={}){super(e,t,n),this.expected=n.expected,this.found=n.found}},ou=class extends iu{name=`EvalError`;kind=`EvalError`},su=class extends ou{name=`FuncNotFoundError`;kind=`FuncNotFoundError`;funcName;suggestions;constructor(e,t,n={}){let r=fu(e,n.available??[]),i=r.length===0?``:` (did you mean: ${r.join(`, `)}?)`;super(`function ${JSON.stringify(e)} is not registered${i}`,t,n),this.funcName=e,this.suggestions=r}},cu=class extends ou{name=`TypeMismatchError`;kind=`TypeMismatchError`;funcName;argIndex;expected;receivedSummary;constructor(e,t,n,r,i,a={}){super(`function ${JSON.stringify(e)} arg ${t}: expected ${n}, but a ${r} flowed in. Pass it through \`unstyled\` (or your engine's flatten function) to convert.`,i,a),this.funcName=e,this.argIndex=t,this.expected=n,this.receivedSummary=r}},lu=class extends ou{name=`MissingFieldError`;kind=`MissingFieldError`;path;constructor(e,t,n={}){super(`field "${e.join(`.`)}" not found on receiver`,t,n),this.path=e}},uu=class extends ou{name=`FailError`;kind=`FailError`;constructor(e,t={line:0,column:0,offset:0},n={}){super(e,t,n)}};function du(e,t){let n=e.split(`
41
43
  `),r=t.line-1,i=[];if(r-1>=0&&r-1<n.length&&i.push({num:r,text:n[r-1]??``}),r>=0&&r<n.length&&i.push({num:r+1,text:n[r]??``}),r+1<n.length&&i.push({num:r+2,text:n[r+1]??``}),i.length===0)return``;let a=String(i[i.length-1]?.num??1).length,o=[];for(let e of i)if(o.push(` ${String(e.num).padStart(a,` `)} | ${e.text}`),e.num===t.line){let e=` ${` `.repeat(a)} | `,n=` `.repeat(Math.max(0,t.column-1));o.push(`${e}${n}^`)}return o.join(`
42
- `)}function cu(e,t){if(t.length===0)return[];let n=t.map(t=>({name:t,dist:lu(e,t)})).sort((e,t)=>e.dist-t.dist),r=Math.max(2,Math.floor(e.length/2));return n.filter(e=>e.dist<=r).slice(0,3).map(e=>e.name)}function lu(e,t){if(e===t)return 0;let n=e.length,r=t.length;if(n===0)return r;if(r===0)return n;let i=Array(r+1),a=Array(r+1);for(let e=0;e<=r;e++)i[e]=e;for(let o=1;o<=n;o++){a[0]=o;for(let n=1;n<=r;n++){let r=e[o-1]===t[n-1]?0:1;a[n]=Math.min((a[n-1]??0)+1,(i[n]??0)+1,(i[n-1]??0)+r)}for(let e=0;e<=r;e++)i[e]=a[e]??0}return i[r]??0}function uu(e){throw Error(`unhandled node kind: ${JSON.stringify(e)}`)}const du=new Map([[`if`,`If`],[`else`,`Else`],[`end`,`End`],[`range`,`Range`],[`with`,`With`],[`break`,`Break`],[`continue`,`Continue`],[`define`,`Define`],[`template`,`Template`],[`block`,`Block`],[`true`,`Bool`],[`false`,`Bool`],[`nil`,`Nil`]]),fu={left:`{{`,right:`}}`};var pu=class{src;leftDelim;rightDelim;offset=0;line=1;column=1;mode=`text`;pending;constructor(e,t=fu){this.src=e,this.leftDelim=t.left,this.rightDelim=t.right}pos(){return{line:this.line,column:this.column,offset:this.offset}}err(e,t,n={}){return new tu(e,t,{...n,source:this.src})}next(){if(this.pending){let e=this.pending;return this.pending=void 0,e}return this.read()}peek(){return this.pending||=this.read(),this.pending}read(){switch(this.mode){case`text`:return this.readText();case`action`:return this.readAction();case`done`:return this.makeToken(`EOF`,``,this.pos())}}readText(){if(this.offset>=this.src.length)return this.mode=`done`,this.makeToken(`EOF`,``,this.pos());let e=this.pos(),t=this.offset;for(;t<this.src.length&&!this.src.startsWith(this.leftDelim,t);)t+=1;let n=t<this.src.length&&this.src[t+this.leftDelim.length]===`-`,r=t;if(n)for(;r>this.offset&&mu(this.src[r-1]??``);)--r;if(r>this.offset){let t=this.src.slice(this.offset,r);return this.advanceTo(r),this.makeToken(`Text`,t,e)}return this.advanceTo(t),this.emitLeftDelim(n)}emitLeftDelim(e){let t=this.pos();if(this.advanceBy(this.leftDelim.length),e)for(this.advanceBy(1);mu(this.src[this.offset]??``);)this.advanceBy(1);return this.mode=`action`,this.src.startsWith(`/*`,this.offset)?this.readComment(t,e):this.makeToken(`LeftDelim`,e?`${this.leftDelim}-`:this.leftDelim,t,e?{trimLeft:!0}:{})}readComment(e,t){this.advanceBy(2);let n=this.offset,r=this.src.indexOf(`*/`,this.offset);if(r===-1)throw this.err(`unclosed comment`,e,{expected:`*/${this.rightDelim}`,found:`end of input`});this.advanceTo(r);let i=this.src.slice(n,r).trim();for(this.advanceBy(2);mu(this.src[this.offset]??``);)this.advanceBy(1);let a=!1;if(this.src[this.offset]===`-`&&(a=!0,this.advanceBy(1)),!this.src.startsWith(this.rightDelim,this.offset))throw this.err(`expected \`${this.rightDelim}\` to close comment`,this.pos(),{expected:this.rightDelim,found:this.src[this.offset]??`end of input`});if(this.advanceBy(this.rightDelim.length),a)for(;mu(this.src[this.offset]??``);)this.advanceBy(1);return this.mode=`text`,this.makeToken(`Comment`,i,e,{...t?{trimLeft:!0}:{},...a?{trimRight:!0}:{}})}readAction(){if(this.skipActionSpaces(),this.src.startsWith(`-${this.rightDelim}`,this.offset)){let e=this.pos();for(this.advanceBy(1+this.rightDelim.length),this.mode=`text`;mu(this.src[this.offset]??``);)this.advanceBy(1);return this.makeToken(`RightDelim`,`-${this.rightDelim}`,e,{trimRight:!0})}if(this.src.startsWith(this.rightDelim,this.offset)){let e=this.pos();return this.advanceBy(this.rightDelim.length),this.mode=`text`,this.makeToken(`RightDelim`,this.rightDelim,e)}if(this.offset>=this.src.length)throw this.err(`unclosed action`,this.pos(),{expected:this.rightDelim,found:`end of input`});let e=this.src[this.offset],t=this.pos();switch(e){case`(`:return this.advanceBy(1),this.makeToken(`LeftParen`,`(`,t);case`)`:return this.advanceBy(1),this.makeToken(`RightParen`,`)`,t);case`|`:return this.advanceBy(1),this.makeToken(`Pipe`,`|`,t);case`,`:return this.advanceBy(1),this.makeToken(`Comma`,`,`,t);case`:`:if(this.src[this.offset+1]===`=`)return this.advanceBy(2),this.makeToken(`Declare`,`:=`,t);throw this.err("expected `:=`",t,{expected:`:=`,found:`:`});case`=`:return this.advanceBy(1),this.makeToken(`Assign`,`=`,t);case`"`:return this.readQuotedString(t);case"`":return this.readRawString(t);case`'`:return this.readChar(t)}if(e===`$`)return this.readVariable(t);if(e!==void 0&&(gu(e)||hu(e)&&gu(this.src[this.offset+1]??``)||e===`.`&&gu(this.src[this.offset+1]??``)))return this.readNumber(t);if(e===`.`)return this.readDotOrField(t);if(e!==void 0&&xu(e))return this.readIdentifier(t);throw this.err(`unexpected character ${JSON.stringify(e)}`,t,{found:e??`end of input`})}readQuotedString(e){let t=this.offset;for(this.advanceBy(1);this.offset<this.src.length;){let n=this.src[this.offset];if(n===`\\`){this.advanceBy(1),this.offset<this.src.length&&this.advanceBy(1);continue}if(n===`
44
+ `)}function fu(e,t){if(t.length===0)return[];let n=t.map(t=>({name:t,dist:pu(e,t)})).sort((e,t)=>e.dist-t.dist),r=Math.max(2,Math.floor(e.length/2));return n.filter(e=>e.dist<=r).slice(0,3).map(e=>e.name)}function pu(e,t){if(e===t)return 0;let n=e.length,r=t.length;if(n===0)return r;if(r===0)return n;let i=Array(r+1),a=Array(r+1);for(let e=0;e<=r;e++)i[e]=e;for(let o=1;o<=n;o++){a[0]=o;for(let n=1;n<=r;n++){let r=e[o-1]===t[n-1]?0:1;a[n]=Math.min((a[n-1]??0)+1,(i[n]??0)+1,(i[n-1]??0)+r)}for(let e=0;e<=r;e++)i[e]=a[e]??0}return i[r]??0}function mu(e){throw Error(`unhandled node kind: ${JSON.stringify(e)}`)}const hu=new Map([[`if`,`If`],[`else`,`Else`],[`end`,`End`],[`range`,`Range`],[`with`,`With`],[`break`,`Break`],[`continue`,`Continue`],[`define`,`Define`],[`template`,`Template`],[`block`,`Block`],[`true`,`Bool`],[`false`,`Bool`],[`nil`,`Nil`]]),gu={left:`{{`,right:`}}`};var _u=class{src;leftDelim;rightDelim;offset=0;line=1;column=1;mode=`text`;pending;constructor(e,t=gu){this.src=e,this.leftDelim=t.left,this.rightDelim=t.right}pos(){return{line:this.line,column:this.column,offset:this.offset}}err(e,t,n={}){return new au(e,t,{...n,source:this.src})}next(){if(this.pending){let e=this.pending;return this.pending=void 0,e}return this.read()}peek(){return this.pending||=this.read(),this.pending}read(){switch(this.mode){case`text`:return this.readText();case`action`:return this.readAction();case`done`:return this.makeToken(`EOF`,``,this.pos())}}readText(){if(this.offset>=this.src.length)return this.mode=`done`,this.makeToken(`EOF`,``,this.pos());let e=this.pos(),t=this.offset;for(;t<this.src.length&&!this.src.startsWith(this.leftDelim,t);)t+=1;let n=t<this.src.length&&this.src[t+this.leftDelim.length]===`-`,r=t;if(n)for(;r>this.offset&&vu(this.src[r-1]??``);)--r;if(r>this.offset){let t=this.src.slice(this.offset,r);return this.advanceTo(r),this.makeToken(`Text`,t,e)}return this.advanceTo(t),this.emitLeftDelim(n)}emitLeftDelim(e){let t=this.pos();if(this.advanceBy(this.leftDelim.length),e)for(this.advanceBy(1);vu(this.src[this.offset]??``);)this.advanceBy(1);return this.mode=`action`,this.src.startsWith(`/*`,this.offset)?this.readComment(t,e):this.makeToken(`LeftDelim`,e?`${this.leftDelim}-`:this.leftDelim,t,e?{trimLeft:!0}:{})}readComment(e,t){this.advanceBy(2);let n=this.offset,r=this.src.indexOf(`*/`,this.offset);if(r===-1)throw this.err(`unclosed comment`,e,{expected:`*/${this.rightDelim}`,found:`end of input`});this.advanceTo(r);let i=this.src.slice(n,r).trim();for(this.advanceBy(2);vu(this.src[this.offset]??``);)this.advanceBy(1);let a=!1;if(this.src[this.offset]===`-`&&(a=!0,this.advanceBy(1)),!this.src.startsWith(this.rightDelim,this.offset))throw this.err(`expected \`${this.rightDelim}\` to close comment`,this.pos(),{expected:this.rightDelim,found:this.src[this.offset]??`end of input`});if(this.advanceBy(this.rightDelim.length),a)for(;vu(this.src[this.offset]??``);)this.advanceBy(1);return this.mode=`text`,this.makeToken(`Comment`,i,e,{...t?{trimLeft:!0}:{},...a?{trimRight:!0}:{}})}readAction(){if(this.skipActionSpaces(),this.src.startsWith(`-${this.rightDelim}`,this.offset)){let e=this.pos();for(this.advanceBy(1+this.rightDelim.length),this.mode=`text`;vu(this.src[this.offset]??``);)this.advanceBy(1);return this.makeToken(`RightDelim`,`-${this.rightDelim}`,e,{trimRight:!0})}if(this.src.startsWith(this.rightDelim,this.offset)){let e=this.pos();return this.advanceBy(this.rightDelim.length),this.mode=`text`,this.makeToken(`RightDelim`,this.rightDelim,e)}if(this.offset>=this.src.length)throw this.err(`unclosed action`,this.pos(),{expected:this.rightDelim,found:`end of input`});let e=this.src[this.offset],t=this.pos();switch(e){case`(`:return this.advanceBy(1),this.makeToken(`LeftParen`,`(`,t);case`)`:return this.advanceBy(1),this.makeToken(`RightParen`,`)`,t);case`|`:return this.advanceBy(1),this.makeToken(`Pipe`,`|`,t);case`,`:return this.advanceBy(1),this.makeToken(`Comma`,`,`,t);case`:`:if(this.src[this.offset+1]===`=`)return this.advanceBy(2),this.makeToken(`Declare`,`:=`,t);throw this.err("expected `:=`",t,{expected:`:=`,found:`:`});case`=`:return this.advanceBy(1),this.makeToken(`Assign`,`=`,t);case`"`:return this.readQuotedString(t);case"`":return this.readRawString(t);case`'`:return this.readChar(t)}if(e===`$`)return this.readVariable(t);if(e!==void 0&&(bu(e)||yu(e)&&bu(this.src[this.offset+1]??``)||e===`.`&&bu(this.src[this.offset+1]??``)))return this.readNumber(t);if(e===`.`)return this.readDotOrField(t);if(e!==void 0&&Tu(e))return this.readIdentifier(t);throw this.err(`unexpected character ${JSON.stringify(e)}`,t,{found:e??`end of input`})}readQuotedString(e){let t=this.offset;for(this.advanceBy(1);this.offset<this.src.length;){let n=this.src[this.offset];if(n===`\\`){this.advanceBy(1),this.offset<this.src.length&&this.advanceBy(1);continue}if(n===`
43
45
  `)throw this.err(`newline in interpreted string`,e,{found:`\\n`});if(n===`"`)return this.advanceBy(1),this.makeToken(`String`,this.src.slice(t,this.offset),e);this.advanceBy(1)}throw this.err(`unterminated string literal`,e,{expected:`"`,found:`end of input`})}readRawString(e){let t=this.offset;for(this.advanceBy(1);this.offset<this.src.length;){if(this.src[this.offset]==="`")return this.advanceBy(1),this.makeToken(`String`,this.src.slice(t,this.offset),e);this.advanceBy(1)}throw this.err(`unterminated raw string literal`,e,{expected:"`",found:`end of input`})}readChar(e){let t=this.offset;for(this.advanceBy(1);this.offset<this.src.length;){let n=this.src[this.offset];if(n===`\\`){this.advanceBy(1),this.offset<this.src.length&&this.advanceBy(1);continue}if(n===`
44
- `)throw this.err(`newline in rune literal`,e,{found:`\\n`});if(n===`'`)return this.advanceBy(1),this.makeToken(`Char`,this.src.slice(t,this.offset),e);this.advanceBy(1)}throw this.err(`unterminated rune literal`,e,{expected:`'`,found:`end of input`})}readNumber(e){let t=this.offset;if(hu(this.src[this.offset]??``)&&this.advanceBy(1),this.src[this.offset]===`0`&&this.offset+1<this.src.length){let n=this.src[this.offset+1];if(n===`x`||n===`X`){for(this.advanceBy(2);_u(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);if(this.src[this.offset]===`.`||this.src[this.offset]===`p`||this.src[this.offset]===`P`)for(;this.isHexFloatTail(this.src[this.offset]??``);)this.advanceBy(1);return this.finishNumber(t,e)}if(n===`o`||n===`O`){for(this.advanceBy(2);vu(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);return this.finishNumber(t,e)}if(n===`b`||n===`B`){for(this.advanceBy(2);yu(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);return this.finishNumber(t,e)}}for(;gu(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);if(this.src[this.offset]===`.`)for(this.advanceBy(1);gu(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);if(this.src[this.offset]===`e`||this.src[this.offset]===`E`)for(this.advanceBy(1),hu(this.src[this.offset]??``)&&this.advanceBy(1);gu(this.src[this.offset]??``);)this.advanceBy(1);return this.src[this.offset]===`i`&&this.advanceBy(1),this.finishNumber(t,e)}isHexFloatTail(e){return _u(e)||e===`.`||e===`p`||e===`P`||e===`+`||e===`-`||e===`_`}finishNumber(e,t){if(this.offset===e)throw this.err(`expected number`,t,{expected:`digit`});return this.makeToken(`Number`,this.src.slice(e,this.offset),t)}readVariable(e){let t=this.offset;for(this.advanceBy(1);Su(this.src[this.offset]??``);)this.advanceBy(1);for(;this.src[this.offset]===`.`&&xu(this.src[this.offset+1]??``);)for(this.advanceBy(1);Su(this.src[this.offset]??``);)this.advanceBy(1);return this.makeToken(`Variable`,this.src.slice(t,this.offset),e)}readDotOrField(e){let t=this.offset;if(this.advanceBy(1),!xu(this.src[this.offset]??``))return this.makeToken(`Dot`,`.`,e);for(;Su(this.src[this.offset]??``);)this.advanceBy(1);for(;this.src[this.offset]===`.`&&xu(this.src[this.offset+1]??``);)for(this.advanceBy(1);Su(this.src[this.offset]??``);)this.advanceBy(1);return this.makeToken(`Field`,this.src.slice(t,this.offset),e)}readIdentifier(e){let t=this.offset;for(;Su(this.src[this.offset]??``);)this.advanceBy(1);let n=this.src.slice(t,this.offset),r=du.get(n);return r?this.makeToken(r,n,e):this.makeToken(`Identifier`,n,e)}skipActionSpaces(){for(;this.offset<this.src.length;){let e=this.src[this.offset];if(e===` `||e===` `||e===`\r`||e===`
46
+ `)throw this.err(`newline in rune literal`,e,{found:`\\n`});if(n===`'`)return this.advanceBy(1),this.makeToken(`Char`,this.src.slice(t,this.offset),e);this.advanceBy(1)}throw this.err(`unterminated rune literal`,e,{expected:`'`,found:`end of input`})}readNumber(e){let t=this.offset;if(yu(this.src[this.offset]??``)&&this.advanceBy(1),this.src[this.offset]===`0`&&this.offset+1<this.src.length){let n=this.src[this.offset+1];if(n===`x`||n===`X`){for(this.advanceBy(2);xu(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);if(this.src[this.offset]===`.`||this.src[this.offset]===`p`||this.src[this.offset]===`P`)for(;this.isHexFloatTail(this.src[this.offset]??``);)this.advanceBy(1);return this.finishNumber(t,e)}if(n===`o`||n===`O`){for(this.advanceBy(2);Su(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);return this.finishNumber(t,e)}if(n===`b`||n===`B`){for(this.advanceBy(2);Cu(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);return this.finishNumber(t,e)}}for(;bu(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);if(this.src[this.offset]===`.`)for(this.advanceBy(1);bu(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);if(this.src[this.offset]===`e`||this.src[this.offset]===`E`)for(this.advanceBy(1),yu(this.src[this.offset]??``)&&this.advanceBy(1);bu(this.src[this.offset]??``);)this.advanceBy(1);return this.src[this.offset]===`i`&&this.advanceBy(1),this.finishNumber(t,e)}isHexFloatTail(e){return xu(e)||e===`.`||e===`p`||e===`P`||e===`+`||e===`-`||e===`_`}finishNumber(e,t){if(this.offset===e)throw this.err(`expected number`,t,{expected:`digit`});return this.makeToken(`Number`,this.src.slice(e,this.offset),t)}readVariable(e){let t=this.offset;for(this.advanceBy(1);Eu(this.src[this.offset]??``);)this.advanceBy(1);for(;this.src[this.offset]===`.`&&Tu(this.src[this.offset+1]??``);)for(this.advanceBy(1);Eu(this.src[this.offset]??``);)this.advanceBy(1);return this.makeToken(`Variable`,this.src.slice(t,this.offset),e)}readDotOrField(e){let t=this.offset;if(this.advanceBy(1),!Tu(this.src[this.offset]??``))return this.makeToken(`Dot`,`.`,e);for(;Eu(this.src[this.offset]??``);)this.advanceBy(1);for(;this.src[this.offset]===`.`&&Tu(this.src[this.offset+1]??``);)for(this.advanceBy(1);Eu(this.src[this.offset]??``);)this.advanceBy(1);return this.makeToken(`Field`,this.src.slice(t,this.offset),e)}readIdentifier(e){let t=this.offset;for(;Eu(this.src[this.offset]??``);)this.advanceBy(1);let n=this.src.slice(t,this.offset),r=hu.get(n);return r?this.makeToken(r,n,e):this.makeToken(`Identifier`,n,e)}skipActionSpaces(){for(;this.offset<this.src.length;){let e=this.src[this.offset];if(e===` `||e===` `||e===`\r`||e===`
45
47
  `)this.advanceBy(1);else return}}advanceBy(e){for(let t=0;t<e;t++){let e=this.src[this.offset];this.offset+=1,e===`
46
- `?(this.line+=1,this.column=1):this.column+=1}}advanceTo(e){for(;this.offset<e;)this.advanceBy(1)}makeToken(e,t,n,r={}){return Object.freeze({type:e,value:t,pos:n,...r.trimLeft===void 0?{}:{trimLeft:r.trimLeft},...r.trimRight===void 0?{}:{trimRight:r.trimRight}})}};function mu(e){return e===` `||e===` `||e===`\r`||e===`
47
- `}function hu(e){return e===`+`||e===`-`}function gu(e){return e>=`0`&&e<=`9`}function _u(e){return gu(e)||e>=`a`&&e<=`f`||e>=`A`&&e<=`F`}function vu(e){return e>=`0`&&e<=`7`}function yu(e){return e===`0`||e===`1`}function bu(e){return e>=`a`&&e<=`z`||e>=`A`&&e<=`Z`}function xu(e){return bu(e)||e===`_`}function Su(e){return xu(e)||gu(e)}let Cu,wu;function Tu(e,t){return wu(e,t)}var Eu=class e{static EMPTY=new e(new Map,void 0);#e;#t;constructor(e,t){this.#e=e,this.#t=t}static{Cu=(t,n)=>new e(t,n),wu=(e,t)=>e.#e.get(t)??(e.#t&&wu(e.#t,t))}has(e){return wu(this,e)!==void 0}};function Du(e,t,n=Eu.EMPTY){return new Ou(e,t,n).parseTemplate()}var Ou=class{lex;buf=[];defines=new Map;inherit;source;rangeDepth=0;constructor(e,t,n){this.source=e,this.inherit=n,this.lex=t?new pu(e,t):new pu(e)}peek(e=0){for(;this.buf.length<=e;)this.buf.push(this.lex.next());return this.buf[e]}next(){return this.buf.length>0?this.buf.shift():this.lex.next()}expect(e,t){let n=this.next();if(n.type!==e)throw this.errAt(n,`expected ${t}`,{expected:t,found:ju(n)});return n}errAt(e,t,n={}){return new tu(t,e.pos,{...n,source:this.source})}parseTemplate(){let e=this.parseList();if(this.peek().type!==`EOF`){let e=this.peek(),t=this.peek(1);if(e.type===`LeftDelim`&&(t.type===`Else`||t.type===`End`)){let n=t.type===`Else`?`else`:`end`;throw this.errAt(e,`unexpected \`{{${n}}}\` outside of \`if\`, \`range\`, \`with\`, or \`block\``,{found:`{{${n}}}`})}throw this.errAt(e,`unexpected ${ju(e)}`,{found:ju(e)})}return{root:e,defines:Cu(this.defines,this.inherit),ownDefines:this.defines,source:this.source}}parseList(){let e=this.peek().pos,t=[];for(;;){let n=this.peek();if(n.type===`EOF`)break;if(n.type===`Text`){this.next(),t.push({type:`Text`,pos:n.pos,text:n.value});continue}if(n.type===`Comment`){this.next();let e=Au(n);t.push({type:`Comment`,pos:n.pos,text:n.value,trim:e});continue}if(n.type===`LeftDelim`){let n=this.peek(1).type;if(n===`Else`||n===`End`)return ku(e,t);let r=this.parseAction();r!==null&&t.push(r);continue}throw this.errAt(n,`unexpected ${ju(n)} at top level`,{found:ju(n)})}return ku(e,t)}parseAction(){let e=this.expect(`LeftDelim`,"`{{`"),t=e.trimLeft===!0,n=this.peek();switch(n.type){case`If`:return this.next(),this.parseBranch(`If`,e.pos,t);case`Range`:return this.next(),this.parseBranch(`Range`,e.pos,t);case`With`:return this.next(),this.parseBranch(`With`,e.pos,t);case`Break`:return this.next(),this.parseBreakOrContinue(`Break`,e.pos,t);case`Continue`:return this.next(),this.parseBreakOrContinue(`Continue`,e.pos,t);case`Template`:return this.next(),this.parseTemplateInvocation(e.pos,t);case`Block`:return this.next(),this.parseBlock(e.pos,t);case`Define`:return this.next(),this.parseDefine(e.pos,t),null;case`RightDelim`:throw this.errAt(n,`empty action`,{expected:`pipeline`});default:{let n=this.parsePipeline(),r=this.expect(`RightDelim`,"`}}`");return{type:`Action`,pos:e.pos,pipe:n,trim:{trimLeft:t,trimRight:r.trimRight===!0}}}}}parseBranch(e,t,n){let r=this.parsePipeline();this.expect(`RightDelim`,"`}}`"),e===`Range`&&(this.rangeDepth+=1);let i=this.parseList();e===`Range`&&--this.rangeDepth;let a=this.parseElsePart(),o={trimLeft:n,trimRight:a.endConsumed?a.endRight:this.consumeEnd()},s=a.list?{pipe:r,list:i,elseList:a.list,trim:o}:{pipe:r,list:i,trim:o};switch(e){case`If`:return{type:`If`,pos:t,...s};case`Range`:return{type:`Range`,pos:t,...s};case`With`:return{type:`With`,pos:t,...s}}}parseBreakOrContinue(e,t,n){if(this.rangeDepth===0)throw new tu(`{{${e===`Break`?`break`:`continue`}}} outside of {{range}}`,t,{source:this.source});let r={trimLeft:n,trimRight:this.expect(`RightDelim`,"`}}`").trimRight===!0};return e===`Break`?{type:`Break`,pos:t,trim:r}:{type:`Continue`,pos:t,trim:r}}parseElsePart(){if(this.peek().type!==`LeftDelim`||this.peek(1).type!==`Else`)return{list:void 0,endRight:!1,endConsumed:!1};let e=this.next();if(this.next(),this.peek().type===`If`){this.next();let t=this.parseBranch(`If`,e.pos,e.trimLeft===!0);return{list:{type:`List`,pos:e.pos,nodes:[t]},endRight:t.trim.trimRight,endConsumed:!0}}return this.expect(`RightDelim`,"`}}`"),{list:this.parseList(),endRight:!1,endConsumed:!1}}consumeEnd(){return this.expect(`LeftDelim`,"`{{end}}`"),this.expect(`End`,"`end`"),this.expect(`RightDelim`,"`}}`").trimRight===!0}parseTemplateInvocation(e,t){let n=this.parseQuotedName(),r=this.peek().type===`RightDelim`?void 0:this.parsePipeline(),i={trimLeft:t,trimRight:this.expect(`RightDelim`,"`}}`").trimRight===!0};return r?{type:`Template`,pos:e,name:n,pipe:r,trim:i}:{type:`Template`,pos:e,name:n,trim:i}}parseBlock(e,t){let n=this.parseQuotedName(),r=this.peek().type===`RightDelim`?void 0:this.parsePipeline();this.expect(`RightDelim`,"`}}`");let i=this.rangeDepth;this.rangeDepth=0;let a=this.parseList();this.rangeDepth=i;let o={trimLeft:t,trimRight:this.consumeEnd()};return!this.defines.has(n)&&!this.inherit.has(n)&&this.defines.set(n,{list:a,source:this.source}),r?{type:`Block`,pos:e,name:n,pipe:r,list:a,trim:o}:{type:`Block`,pos:e,name:n,list:a,trim:o}}parseDefine(e,t){let n=this.parseQuotedName();this.expect(`RightDelim`,"`}}`");let r=this.rangeDepth;this.rangeDepth=0;let i=this.parseList();if(this.rangeDepth=r,this.consumeEnd(),this.defines.has(n)||this.inherit.has(n))throw new tu(`redefinition of template ${JSON.stringify(n)}`,i.pos,{source:this.source});this.defines.set(n,{list:i,source:this.source})}parseQuotedName(){let e=this.next();if(e.type!==`String`)throw this.errAt(e,`expected template name (quoted string)`,{expected:`string`,found:ju(e)});return zu(e.value,e.pos,this.source)}parsePipeline(){let e=this.peek().pos,t=this.tryParseDecls(),n=[this.parseCommand()];for(;this.peek().type===`Pipe`;){this.next();let e=this.peek();if(!Mu(e.type))throw this.errAt(e,"missing command after `|`",{expected:`command`,found:ju(e)});n.push(this.parseCommand())}return{type:`Pipe`,pos:e,decls:t?.vars??[],isAssign:t?.isAssign??!1,cmds:n}}tryParseDecls(){if(this.peek().type!==`Variable`)return;let e=1;for(;this.peek(e).type===`Comma`;){if(this.peek(e+1).type!==`Variable`)return;e+=2}let t=this.peek(e).type;if(t!==`Declare`&&t!==`Assign`)return;let n=[Nu(this.next())];for(;this.peek().type===`Comma`;)this.next(),n.push(Nu(this.expect(`Variable`,`$variable`)));return{vars:n,isAssign:this.next().type===`Assign`}}parseCommand(){let e=this.peek().pos,t=[this.parsePrimary()];for(;Mu(this.peek().type);)t.push(this.parsePrimary());return{type:`Command`,pos:e,args:t}}parsePrimary(){let e=this.next();switch(e.type){case`Dot`:return{type:`Dot`,pos:e.pos};case`Field`:return{type:`Field`,pos:e.pos,idents:e.value.slice(1).split(`.`)};case`Variable`:return Nu(e);case`Identifier`:return{type:`Identifier`,pos:e.pos,ident:e.value};case`String`:return{type:`String`,pos:e.pos,raw:e.value,value:zu(e.value,e.pos,this.source)};case`Number`:return Fu(e);case`Char`:return Iu(e,this.source);case`Bool`:return{type:`Bool`,pos:e.pos,value:e.value===`true`};case`Nil`:return{type:`Nil`,pos:e.pos};case`LeftParen`:return this.parseChainOrPipe(e.pos);default:throw this.errAt(e,`expected command argument, found ${ju(e)}`,{expected:`command argument`,found:ju(e)})}}parseChainOrPipe(e){let t=this.parsePipeline(),n=this.expect(`RightParen`,"`)`"),r=[],i=n.pos.offset+1,a=this.peek();return a.type===`Field`&&a.pos.offset===i&&(this.next(),r.push(...a.value.slice(1).split(`.`))),r.length===0?t:{type:`Chain`,pos:e,node:t,fields:r}}};function ku(e,t){return{type:`List`,pos:e,nodes:t}}function Au(e){return{trimLeft:e.trimLeft===!0,trimRight:e.trimRight===!0}}function ju(e){return e.type===`EOF`?`end of input`:e.value||e.type}function Mu(e){switch(e){case`Dot`:case`Field`:case`Variable`:case`Identifier`:case`String`:case`Number`:case`Char`:case`Bool`:case`Nil`:case`LeftParen`:return!0;default:return!1}}function Nu(e){return{type:`Variable`,pos:e.pos,idents:Pu(e.value)}}function Pu(e){let t=e.indexOf(`.`);return t===-1?[e]:[e.slice(0,t),...e.slice(t+1).split(`.`)]}function Fu(e){let t=e.value,n=t.replace(/_/g,``),r=n.toLowerCase().endsWith(`i`),i=r?n.slice(0,-1):n,a=!r&&(i.includes(`.`)||!i.startsWith(`0x`)&&!i.startsWith(`0X`)&&/[eE]/.test(i)||(i.startsWith(`0x`)||i.startsWith(`0X`))&&/[pP]/.test(i)),o=!r&&!a,s={type:`Number`,pos:e.pos,text:t,isInt:o,isUint:!1,isFloat:a,isComplex:r};if(o){let e=Lu(i);return{...s,intValue:e}}if(a){let e=Ru(i);return{...s,floatValue:e}}let c=Ru(i);return{...s,complexValue:[0,c]}}function Iu(e,t){let n=Bu(e.value,e.pos,t);return{type:`Number`,pos:e.pos,text:e.value,isInt:!0,isUint:!1,isFloat:!1,isComplex:!1,intValue:BigInt(n)}}function Lu(e){let t=1n,n=e;return n.startsWith(`+`)?n=n.slice(1):n.startsWith(`-`)&&(t=-1n,n=n.slice(1)),t*BigInt(n)}function Ru(e){return Number(e)}function zu(e,t,n){if(e.startsWith("`"))return e.slice(1,-1);let r=``;for(let i=1;i<e.length-1;i++){let a=e[i];if(a!==`\\`){r+=a;continue}let o=e[++i];switch(o){case`n`:r+=`
48
- `;break;case`t`:r+=` `;break;case`r`:r+=`\r`;break;case`\\`:r+=`\\`;break;case`"`:r+=`"`;break;case`'`:r+=`'`;break;case`a`:r+=`\x07`;break;case`b`:r+=`\b`;break;case`f`:r+=`\f`;break;case`v`:r+=`\v`;break;case`0`:case`1`:case`2`:case`3`:case`4`:case`5`:case`6`:case`7`:{let t=o+(e[i+1]??``)+(e[i+2]??``);i+=2,r+=String.fromCodePoint(Number.parseInt(t,8));break}case`x`:{let t=(e[i+1]??``)+(e[i+2]??``);i+=2,r+=String.fromCodePoint(Number.parseInt(t,16));break}case`u`:{let t=e.slice(i+1,i+5);i+=4,r+=String.fromCodePoint(Number.parseInt(t,16));break}case`U`:{let t=e.slice(i+1,i+9);i+=8,r+=String.fromCodePoint(Number.parseInt(t,16));break}default:throw new tu(`bad escape sequence \\${o}`,t,{expected:`valid escape sequence`,found:`\\${o}`,source:n})}}return r}function Bu(e,t,n){let r=zu(`"${e.slice(1,-1).replace(/"/g,`\\"`)}"`,t,n);if(r.length===0)throw new tu(`empty rune literal`,t,{source:n});return r.codePointAt(0)??0}function Vu(e,t){if(t(e)!==!1)for(let n of Hu(e))Vu(n,t)}function Hu(e){switch(e.type){case`Text`:case`Comment`:case`Dot`:case`Nil`:case`Bool`:case`Number`:case`String`:case`Identifier`:case`Field`:case`Variable`:case`Break`:case`Continue`:return[];case`List`:return e.nodes;case`Chain`:return[e.node];case`Command`:return e.args;case`Pipe`:return[...e.decls,...e.cmds];case`Action`:return[e.pipe];case`If`:case`Range`:case`With`:return e.elseList?[e.pipe,e.list,e.elseList]:[e.pipe,e.list];case`Template`:return e.pipe?[e.pipe]:[];case`Block`:return e.pipe?[e.pipe,e.list]:[e.list];default:return uu(e)}}const Uu=Symbol(`go-template-js.MISSING`);function Wu(e,t){if(e==null)return Uu;if(e instanceof Map)return e.has(t)?e.get(t):Uu;if(Array.isArray(e))return Uu;if(typeof e==`object`){let n=e;return t in n?n[t]:Uu}return Uu}function Gu(e,t){let n=e;for(let e of t){if(n===Uu)return Uu;n=Wu(n,e)}return n}function Ku(e,t){if(Object.is(e,t))return!0;if(e===null||t===null||e===void 0||t===void 0||typeof e!=typeof t)return!1;if(Array.isArray(e)&&Array.isArray(t))return e.length===t.length?e.every((e,n)=>Ku(e,t[n])):!1;if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(let[n,r]of e)if(!t.has(n)||!Ku(r,t.get(n)))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}if(typeof e==`object`&&typeof t==`object`){let n=Object.keys(e),r=Object.keys(t);return n.length===r.length?n.every(n=>Ku(e[n],t[n])):!1}return!1}const qu=new WeakSet;function Ju(e){return qu.add(e),e}function Yu(e){return qu.has(e)}function Xu(e){return e==null||e===!1?!1:typeof e==`number`?e!==0&&!Number.isNaN(e):typeof e==`bigint`?e!==0n:typeof e==`string`||Array.isArray(e)?e.length>0:e instanceof Map||e instanceof Set?e.size>0:typeof e==`object`?Object.keys(e).length>0:!!e}function Zu(e,t){return{eq:{fn:(e,...t)=>t.some(t=>ed(e,t)),argTypes:[`comparable`]},ne:{fn:(e,t)=>!ed(e,t),argTypes:[`comparable`,`comparable`]},lt:{fn:(e,t)=>td(e,t)<0,argTypes:[`ordered`,`ordered`]},le:{fn:(e,t)=>td(e,t)<=0,argTypes:[`ordered`,`ordered`]},gt:{fn:(e,t)=>td(e,t)>0,argTypes:[`ordered`,`ordered`]},ge:{fn:(e,t)=>td(e,t)>=0,argTypes:[`ordered`,`ordered`]},len:{fn:e=>nd(e),argTypes:[`sized`]},index:{fn:(e,...t)=>{let n=e;for(let e of t)n=rd(n,e);return n},argTypes:[`collection`,`index-key`]},slice:{fn:(e,...t)=>{let n=t.length>=1?t[0]:0,r=t.length>=2?t[1]:void 0;return e.slice(n,r)},argTypes:[`sliceable`,`int`]},print:{fn:(...t)=>od(t,e),argTypes:[`stringifiable`],returnType:`string`},println:{fn:(...t)=>`${od(t,e)}\n`,argTypes:[`stringifiable`],returnType:`string`},printf:{fn:(n,...r)=>hd(n,r,e,t),argTypes:[`string`,`stringifiable`],returnType:`string`},toString:{fn:n=>vd(n,e,t),argTypes:[`value`],returnType:`string`},toStrings:{fn:n=>n.map(n=>vd(n,e,t)),argTypes:[`list`]},call:{fn:(e,...t)=>e(...t),argTypes:[`callable`,`value`]},html:{fn:(...t)=>ld(od(t,e)),argTypes:[`stringifiable`],returnType:`string`},js:{fn:(...t)=>fd(od(t,e)),argTypes:[`stringifiable`],returnType:`string`},urlquery:{fn:(...t)=>md(od(t,e)),argTypes:[`stringifiable`],returnType:`string`},not:{fn:e=>!Xu(e),argTypes:[`truthy`]}}}function Qu(){return{and:Ju({argTypes:[`truthy`],fn:(...e)=>{let t=!0;for(let n of e)if(t=n(),!Xu(t))return t;return t}}),or:Ju({argTypes:[`truthy`],fn:(...e)=>{let t=!1;for(let n of e)if(t=n(),Xu(t))return t;return t}})}}function $u(e,t){return{...Zu(e,t),...Qu()}}function ed(e,t){return typeof e==`number`&&typeof t==`bigint`?BigInt(e)===t:typeof e==`bigint`&&typeof t==`number`?e===BigInt(t):Ku(e,t)}function td(e,t){if(typeof e==`bigint`&&typeof t==`bigint`)return e===t?0:e<t?-1:1;if(typeof e==`bigint`||typeof t==`bigint`){let n=typeof e==`bigint`?e:BigInt(Math.trunc(Number(e))),r=typeof t==`bigint`?t:BigInt(Math.trunc(Number(t)));return n===r?0:n<r?-1:1}let n=e,r=t;return n===r?0:n<r?-1:1}function nd(e){return typeof e==`string`||Array.isArray(e)?e.length:e instanceof Map||e instanceof Set?e.size:Object.keys(e).length}function rd(e,t){if(Array.isArray(e)){let n=Number(t);if(!Number.isInteger(n))throw Error(`index: array index must be integer, got ${id(t)}`);if(n<0||n>=e.length)throw Error(`index: out of range [${n}] with length ${e.length}`);return e[n]}if(e instanceof Map)return e.get(t);if(typeof e==`string`)return e[Number(t)];if(typeof e==`object`&&e){if(typeof t!=`string`)throw Error(`index: object index must be string, got ${id(t)}`);return e[t]}throw Error(`index: cannot index ${id(e)}`)}function id(e){return e===null?`null`:e===void 0?`undefined`:Array.isArray(e)?`array`:e instanceof Map?`Map`:typeof e}function ad(e){return e==null?`<nil>`:typeof e==`string`?`string`:typeof e==`boolean`?`bool`:typeof e==`bigint`?`int64`:typeof e==`number`?Number.isInteger(e)?`int`:`float64`:Array.isArray(e)?`[]interface {}`:e instanceof Map||typeof e==`object`?`map[string]interface {}`:typeof e}function od(e,t){let n=``,r=!1;for(let i=0;i<e.length;i++){let a=e[i],o=typeof a==`string`;i>0&&!r&&!o&&(n+=` `),n+=sd(a,t),r=o}return n}function sd(e,t){return e==null?`<nil>`:typeof e==`string`?e:t(e)}const cd={"\0":`�`,'"':`&#34;`,"'":`&#39;`,"&":`&amp;`,"<":`&lt;`,">":`&gt;`};function ld(e){return e.replace(/[\0"'&<>]/g,e=>cd[e]??e)}const ud={"\\":`\\\\`,"'":`\\'`,'"':`\\"`,"<":`\\u003C`,">":`\\u003E`,"&":`\\u0026`,"=":`\\u003D`},dd=/^[\p{L}\p{M}\p{N}\p{P}\p{S}]$/u;function fd(e){let t=``;for(let n of e){let e=ud[n];if(e!==void 0){t+=e;continue}let r=n.codePointAt(0);if(r<32||r>=128&&!dd.test(n)){t+=`\\u${r.toString(16).toUpperCase().padStart(4,`0`)}`;continue}t+=n}return t}const pd=new TextEncoder;function md(e){let t=``,n=pd.encode(e);for(let e of n)e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===45||e===46||e===95||e===126?t+=String.fromCharCode(e):e===32?t+=`+`:t+=`%${e.toString(16).toUpperCase().padStart(2,`0`)}`;return t}function hd(e,t,n,r){let i=``,a=0,o=0;for(;o<e.length;){let s=e[o];if(s!==`%`){i+=s,o+=1;continue}if(e[o+1]===`%`){i+=`%`,o+=2;continue}let c=o+1;for(;c<e.length&&`+-# 0`.includes(e[c]??``);)c+=1;for(;c<e.length&&e[c]!==void 0&&/[0-9]/.test(e[c]);)c+=1;if(e[c]===`.`)for(c+=1;c<e.length&&e[c]!==void 0&&/[0-9]/.test(e[c]);)c+=1;let l=e[c],u=e.slice(o+1,c),d=t[a++];i+=gd(l??``,u,d,n,r),o=c+1}return i}function gd(e,t,n,r,i){switch(e){case`s`:return typeof n==`string`?_d(t,n):_d(t,sd(n,r));case`d`:return typeof n!=`number`&&typeof n!=`bigint`?`%!${e}(${ad(n)}=${sd(n,r)})`:_d(t,String(typeof n==`bigint`?n:Math.trunc(n)));case`v`:return _d(t,vd(n,r,i));case`q`:return _d(t,JSON.stringify(sd(n,r)));case`f`:{if(typeof n!=`number`&&typeof n!=`bigint`)return`%!${e}(${ad(n)}=${sd(n,r)})`;let i=t.includes(`.`)?Number(t.split(`.`)[1]):6;return _d(t,Number(n).toFixed(i))}case`t`:return _d(t,Xu(n)?`true`:`false`);case`x`:if(typeof n==`string`){let e=new TextEncoder().encode(n),r=``;for(let t of e)r+=t.toString(16).padStart(2,`0`);return _d(t,r)}return typeof n!=`number`&&typeof n!=`bigint`?`%!${e}(${ad(n)}=${sd(n,r)})`:typeof n==`bigint`?_d(t,n.toString(16)):_d(t,Math.trunc(n).toString(16));default:return`%!${e}(${ad(n)}=${sd(n,r)})`}}function _d(e,t){let n=e.match(/^([+\-# 0]*)/)?.[1]??``,r=e.slice(n.length).match(/^(\d+)/);if(!r)return t;let i=Number(r[1]);if(t.length>=i)return t;let a=` `.repeat(i-t.length);return n.includes(`-`)?t+a:a+t}function vd(e,t,n){return e==null?`<nil>`:typeof e==`string`?e:n(e)?t(e):Array.isArray(e)?`[${e.map(e=>vd(e,t,n)).join(` `)}]`:e instanceof Map?yd([...e.entries()],t,n):bd(e)?yd(Object.entries(e),t,n):String(e)}function yd(e,t,n){let r=e=>vd(e,t,n),i=e=>typeof e==`number`||typeof e==`bigint`,a=([e],[t])=>{if(i(e)&&i(t))return e<t?-1:+(e>t);if(i(e)!==i(t))return i(e)?-1:1;let[n,a]=[r(e),r(t)];return n<a?-1:+(n>a)};return`map[${[...e].sort(a).map(([e,t])=>`${r(e)}:${r(t)}`).join(` `)}]`}function bd(e){if(typeof e!=`object`||!e||Array.isArray(e)||e instanceof Map||e instanceof Set)return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype}function xd(e){return{dot:e,root:e,parent:void 0,vars:new Map}}function Sd(e,t){return{dot:t,root:e.root,parent:e,vars:new Map}}function Cd(e,t){let n=e;for(;n!==void 0;){if(n.vars.has(t))return{found:!0,value:n.vars.get(t)};n=n.parent}return{found:!1}}function wd(e,t,n){e.vars.set(t,n)}const Td=new Set([`default`,`zero`,`error`]);function Ed(e){if(e===void 0)return`default`;if(Td.has(e))return e;throw Error(`EngineConfig.missingKey: expected "default" | "zero" | "error", got ${Dd(e)}`)}function Dd(e){return typeof e==`string`?JSON.stringify(e):e===null?`null`:e===void 0?`undefined`:typeof e==`bigint`?`${e}n`:typeof e==`number`||typeof e==`boolean`?String(e):typeof e==`symbol`?e.toString():typeof e==`function`?`[Function]`:`[${typeof e}]`}function Od(e){if(e!==void 0){if(typeof e!=`object`||!e)throw Error(`EngineConfig.delims: expected { left, right } object, got ${Dd(e)}`);if(typeof e.left!=`string`||e.left.length===0)throw Error(`EngineConfig.delims.left: expected non-empty string, got ${Dd(e.left)}`);if(typeof e.right!=`string`||e.right.length===0)throw Error(`EngineConfig.delims.right: expected non-empty string, got ${Dd(e.right)}`);return{left:e.left,right:e.right}}}const kd=Object.freeze({kind:`break`}),Ad=Object.freeze({kind:`continue`}),jd={kind:`none`};let Md;(class e{source;_evaluate;_defines;_referencedFunctions;_referencedCalls;constructor(e,t,n,r,i){this.source=e,this._evaluate=t,this._defines=n,this._referencedFunctions=r,this._referencedCalls=i}static{Md=(t,n,r,i,a)=>new e(t,n,r,i,a)}defines(){return this._defines}evaluate(e){return this._evaluate(e)}referencedFunctions(){return this._referencedFunctions}referencedCalls(){return this._referencedCalls}});function Nd(e){let t=new Set,n=e=>{Vu(e,e=>{e.type===`Identifier`&&t.add(e.ident)})};n(e.root);for(let t of e.ownDefines.values())n(t.list);return t}const Pd={kind:`dynamic`};function Fd(e){switch(e.type){case`String`:return{kind:`literal`,value:e.value};case`Bool`:return{kind:`literal`,value:e.value};case`Nil`:return{kind:`literal`,value:null};case`Number`:{let t=ef(e);return typeof t==`number`||typeof t==`bigint`?{kind:`literal`,value:t}:Pd}case`Pipe`:{if(e.decls.length!==0||e.cmds.length!==1)return Pd;let t=e.cmds[0];if(t===void 0)return Pd;let n=t.args[0];return n===void 0||n.type!==`Identifier`?Pd:{kind:`call`,name:n.ident,args:t.args.slice(1).map(Fd)}}default:return Pd}}function Id(e){let t=[],n=e=>{Vu(e,e=>{if(e.type!==`Command`)return;let n=e.args[0];if(n===void 0||n.type!==`Identifier`)return;let r=e.args.slice(1).map(Fd);t.push({name:n.ident,args:r.map(e=>e.kind===`literal`&&typeof e.value==`string`?e.value:null),argExprs:r})})};n(e.root);for(let t of e.ownDefines.values())n(t.list);return t}var Ld=class{fromString;toString;isT;funcs;missingKey;delims;constructor(e){this.fromString=e.fromString;let t=Object.hasOwn(e,`toString`)?e.toString:void 0;this.toString=t??Wd,this.isT=e.isT??Rd,this.missingKey=Ed(e.missingKey),this.delims=Od(e.delims),this.funcs={...$u(this.toString,this.isT),...e.funcs??{}}}parse(e,t){let n=Du(e,this.delims,t);return Md(n.source,e=>this.evalParsed(n,e),n.defines,Nd(n),Id(n))}compile(e){let t=this.parse(e);return e=>t.evaluate(e)}evaluate(e,t){return e.evaluate(t)}evalParsed(e,t){let n=[],r=xd(t),i={out:n,defines:e.defines,source:e.source};return this.evalList(e.root,r,i),n}evalList(e,t,n){for(let r of e.nodes)this.evalNode(r,t,n)}evalNode(e,t,n){switch(e.type){case`Text`:n.out.push(this.fromString(e.text));return;case`Comment`:return;case`Action`:{let r=this.evalAction(e,t,n);e.pipe.decls.length===0&&this.emitFromValue(r,n);return}case`List`:this.evalList(e,t,n);return;case`If`:this.evalIf(e,t,n);return;case`Range`:this.evalRange(e,t,n);return;case`With`:this.evalWith(e,t,n);return;case`Break`:throw kd;case`Continue`:throw Ad;case`Template`:this.evalTemplateInvoke(e,t,n);return;case`Block`:this.evalBlock(e,t,n);return;case`Pipe`:case`Command`:case`Identifier`:case`Field`:case`Variable`:case`Chain`:case`Dot`:case`Nil`:case`Bool`:case`Number`:case`String`:throw new nu(`unexpected ${e.type} at statement position`,e.pos,{source:n.source});default:uu(e)}}evalIf(e,t,n){Xu(this.evalPipe(e.pipe,t,n))?this.evalList(e.list,t,n):e.elseList&&this.evalList(e.elseList,t,n)}evalWith(e,t,n){let r=this.evalPipe(e.pipe,t,n);if(Xu(r)){let i=Sd(t,r);this.evalList(e.list,i,n)}else e.elseList&&this.evalList(e.elseList,t,n)}evalRange(e,t,n){let r=this.evalPipeWithoutDecls(e.pipe,t,n),i=e.pipe.decls,a=Zd(r);try{if(a.length===0){e.elseList&&this.evalList(e.elseList,t,n);return}for(let[r,o]of a){let a=Sd(t,o);if(i.length===1)wd(a,i[0]?.idents[0]??`$`,o);else if(i.length>=2){let e=i[0]?.idents[0]??`$`,t=i[1]?.idents[0]??`$`;wd(a,e,r),wd(a,t,o)}try{this.evalList(e.list,a,n)}catch(e){if(e===Ad)continue;throw e}}}catch(e){if(e===kd)return;throw e}}evalTemplateInvoke(e,t,n){let r=Tu(n.defines,e.name);if(!r)throw new nu(`template ${JSON.stringify(e.name)} is not defined`,e.pos,{source:n.source});let i=Sd(t,e.pipe?this.evalPipe(e.pipe,t,n):t.dot);this.evalList(r.list,i,{out:n.out,defines:n.defines,source:r.source})}evalBlock(e,t,n){let r=Sd(t,e.pipe?this.evalPipe(e.pipe,t,n):t.dot),i=Tu(n.defines,e.name)??{list:e.list,source:n.source};this.evalList(i.list,r,{out:n.out,defines:n.defines,source:i.source})}evalAction(e,t,n){return this.evalPipe(e.pipe,t,n)}evalPipe(e,t,n){if(e.cmds.length===0)throw new nu(`empty pipeline`,e.pos,{source:n.source});let r=this.evalCommand(e.cmds[0],t,n,jd);for(let i=1;i<e.cmds.length;i++){let a=e.cmds[i];r=this.evalCommand(a,t,n,{kind:`value`,value:r})}if(e.decls.length>0)for(let n of e.decls)wd(t,n.idents[0]??`$`,r);return r}evalPipeWithoutDecls(e,t,n){let r={type:`Pipe`,pos:e.pos,decls:[],isAssign:!1,cmds:e.cmds};return this.evalPipe(r,t,n)}evalCommand(e,t,n,r){if(e.args.length===0)throw new nu(`empty command`,e.pos,{source:n.source});let i=e.args[0];if(i.type!==`Identifier`){if(e.args.length>1)throw new nu(`cannot apply arguments to a ${i.type} primary; only functions take arguments`,e.pos,{source:n.source});return this.evalPrimary(i,t,n)}let a=this.funcs[i.ident];if(!a)throw new ru(i.ident,i.pos,{source:n.source,available:Object.keys(this.funcs)});let o=e.args.slice(1),s=Yu(a),c=o.map(e=>s?()=>this.evalPrimary(e,t,n):this.evalPrimary(e,t,n));if(r.kind===`value`){let e=r.value;c.push(s?()=>e:e)}Bd(i.ident,a.argTypes,c,e.pos,n.source,this.toString,a.argTypePattern,this.fromString,this.isT);try{return a.fn(...c)}catch(t){throw t instanceof iu?new iu(t.funcName,t.argIndex,t.expected,t.receivedSummary,e.pos,{source:n.source}):t instanceof ou?new ou(t.message,e.pos,{source:n.source}):t}}evalPrimary(e,t,n){switch(e.type){case`Dot`:return t.dot;case`Nil`:return null;case`Bool`:return e.value;case`Number`:return ef(e);case`String`:return e.value;case`Field`:return this.resolveFieldChain(t.dot,e.idents,e.pos,n);case`Variable`:return this.resolveVariable(e.idents,t,e.pos,n);case`Identifier`:{let t=this.funcs[e.ident];if(!t)throw new ru(e.ident,e.pos,{source:n.source,available:Object.keys(this.funcs)});return Bd(e.ident,t.argTypes,[],e.pos,n.source,this.toString,t.argTypePattern,this.fromString,this.isT),t.fn()}case`Chain`:return this.resolveFieldChain(this.evalPrimary(e.node,t,n),e.fields,e.pos,n);case`Pipe`:return this.evalPipe(e,t,n);default:throw new nu(`cannot evaluate ${e.type} as a value`,e.pos,{source:n.source})}}resolveFieldChain(e,t,n,r){let i=Gu(e,t);if(i!==Uu)return i;if(this.missingKey===`error`)throw new au(t,n,{source:r.source})}resolveVariable(e,t,n,r){let i=e[0]??`$`;if(i===`$`){let i=e.slice(1);return i.length===0?t.root:this.resolveFieldChain(t.root,i,n,r)}let a=Cd(t,i);if(!a.found)throw new nu(`undefined variable ${i}`,n,{source:r.source});let o=e.slice(1);return o.length===0?a.value:this.resolveFieldChain(a.value,o,n,r)}emitFromValue(e,t){if(e==null){t.out.push(this.fromString(`<no value>`));return}if(typeof e==`string`){t.out.push(this.fromString(e));return}if(typeof e==`number`||typeof e==`boolean`||typeof e==`bigint`){t.out.push(this.fromString(String(e)));return}if(this.isT(e)){t.out.push(e);return}t.out.push(this.fromString(vd(e,this.toString,this.isT)))}};const Rd=e=>typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Map);function zd(e){return new Ld(e)}function Bd(e,t,n,r,i,a=Wd,o,s=Ud,c=Rd){let l=Vd(t,o),u=-1,d=-1;for(let t=0;t<n.length;t++){let o=l(t),f=n[t];if(!Hd(o,f,a,c))throw new iu(e,t+1,Yd(o),Xd(f),r,{source:i});if(o===`liftable`&&typeof f==`string`&&(n[t]=s(f)),o===`int`?n[t]=Math.trunc(Number(f)):o===`float`&&(n[t]=Number(f)),o===`ordered`){if(u===-1)u=t;else if(!Kd(n[u],f))throw new iu(e,t+1,`${Yd(`ordered`)} of the same kind as ${Xd(n[u])}`,Xd(f),r,{source:i})}if(o===`comparable`){if(d===-1)d=t;else if(!qd(n[d],f))throw new iu(e,t+1,`${Yd(`comparable`)} of the same kind as ${Xd(n[d])}`,Xd(f),r,{source:i})}}}function Vd(e,t){if(e.length===0)return()=>`value`;if(t===`alternating`){let t=e.length;return n=>e[n%t]}let n=e[e.length-1];return t=>t<e.length?e[t]:n}function Hd(e,t,n,r){switch(e){case`truthy`:case`reflective`:case`value`:return!0;case`string`:return typeof t==`string`;case`int`:return typeof t==`number`&&Number.isFinite(t)||typeof t==`bigint`&&Number.isSafeInteger(Number(t));case`float`:return typeof t==`number`||typeof t==`bigint`&&Number.isFinite(Number(t));case`bool`:return typeof t==`boolean`;case`ordered`:return typeof t==`string`||typeof t==`number`||typeof t==`bigint`||typeof t==`boolean`;case`T`:return r(t);case`list`:return Array.isArray(t);case`dict`:return bd(t);case`sized`:return typeof t==`string`||Array.isArray(t)||t instanceof Map||t instanceof Set||bd(t);case`comparable`:return t==null||typeof t==`string`||typeof t==`number`||typeof t==`bigint`||typeof t==`boolean`||Array.isArray(t)||t instanceof Map||t instanceof Set||bd(t);case`callable`:return typeof t==`function`;case`collection`:return typeof t==`string`||Array.isArray(t)||t instanceof Map||bd(t);case`index-key`:return typeof t==`string`||typeof t==`number`||typeof t==`bigint`;case`sliceable`:return typeof t==`string`||Array.isArray(t);case`stringifiable`:if(typeof t==`string`)return!0;try{return n(t),!0}catch{return!1}case`liftable`:return typeof t==`string`||r(t);case`serializable`:return Gd(t);default:throw Error(`invalid ArgType: ${String(e)}`)}}function Ud(e){return e}function Wd(e){if(typeof e==`string`)return e;if(e==null)return`<nil>`;if(typeof e==`number`||typeof e==`bigint`||typeof e==`boolean`)return String(e);throw new iu(`<engine.toString>`,1,`string (or a consumer-supplied toString that flattens T)`,Xd(e),{line:0,column:0,offset:0})}function Gd(e){try{return JSON.stringify(e)!==void 0}catch{return!1}}function Kd(e,t){return typeof e==typeof t||typeof e==`number`&&typeof t==`bigint`||typeof e==`bigint`&&typeof t==`number`}function qd(e,t){let n=Jd(e),r=Jd(t);return n===`nil`||r===`nil`?!0:n===r}function Jd(e){return e==null?`nil`:typeof e==`string`?`string`:typeof e==`number`||typeof e==`bigint`?`number`:typeof e==`boolean`?`boolean`:Array.isArray(e)?`array`:e instanceof Map?`map`:e instanceof Set?`set`:`object`}function Yd(e){switch(e){case`int`:return`integer (finite number or safe-integer bigint)`;case`float`:return`float (number, including NaN/Infinity, or finite-convertible bigint)`;case`T`:return`T (consumer-defined fragment)`;case`ordered`:return`orderable primitive`;case`list`:return`list`;case`dict`:return`dict (plain object)`;case`sized`:return`sized value (string, list, map, set, or dict)`;case`comparable`:return`comparable value (orderable primitive, nil, list, dict, Map, or Set)`;case`stringifiable`:return`stringifiable value (string or convertible via the engine's toString)`;case`liftable`:return`liftable value (T or string, the latter lifted via the engine's fromString)`;case`callable`:return`callable (function value)`;case`collection`:return`collection (string, array, Map, or dict)`;case`index-key`:return`index key (number, bigint, or string)`;case`sliceable`:return`sliceable value (string or array)`;case`serializable`:return`JSON-serializable value`;case`truthy`:case`reflective`:case`value`:case`string`:case`bool`:return e;default:throw Error(`invalid ArgType: ${String(e)}`)}}function Xd(e){return e===null?`null`:e===void 0?`undefined`:Array.isArray(e)?`array`:e instanceof Map?`Map`:typeof e}function Zd(e){return e==null?[]:Array.isArray(e)?e.map((e,t)=>[t,e]):typeof e==`string`?[...e].map((e,t)=>[t,e]):e instanceof Map?Qd([...e.entries()]):e instanceof Set?[...e.values()].map((e,t)=>[t,e]):typeof e==`object`?Qd(Object.entries(e)):[]}function Qd(e){return[...e].sort((e,t)=>$d(e[0],t[0]))}function $d(e,t){if((typeof e==`number`||typeof e==`bigint`)&&(typeof t==`number`||typeof t==`bigint`)){let n=typeof e==`bigint`?Number(e):e,r=typeof t==`bigint`?Number(t):t;return n===r?0:n<r?-1:1}let n=String(e),r=String(t);return n===r?0:n<r?-1:1}function ef(e){if(e.intValue!==void 0){let t=e.intValue;return t>=BigInt(-(2**53-1))&&t<=BigInt(2**53-1)?Number(t):t}if(e.floatValue!==void 0)return e.floatValue;if(e.complexValue!==void 0)return e.complexValue;throw Error(`internal: NumberNode has none of intValue/floatValue/complexValue — parser invariant violated`)}function tf(e){if(!/^[+-]?\d+$/.test(e))return 0;let t=Number.parseInt(e,10);return Number.isSafeInteger(t)?t:0}function nf(e){if(typeof e==`number`)return e;if(typeof e==`bigint`)return Number(e);if(typeof e==`string`){let t=Number.parseFloat(e);return Number.isNaN(t)?0:t}return typeof e==`boolean`?+!!e:0}function rf(e){if(e===``)return null;let t=1,n=e;return n[0]===`+`?n=n.slice(1):n[0]===`-`&&(t=-1,n=n.slice(1)),n===``?null:/^0x[0-9a-fA-F]+$/i.test(n)?{sign:t,digits:n.slice(2),base:16}:/^0b[01]+$/i.test(n)?{sign:t,digits:n.slice(2),base:2}:/^0o[0-7]+$/i.test(n)?{sign:t,digits:n.slice(2),base:8}:n===`0`?{sign:t,digits:`0`,base:10}:n[0]===`0`?/^0[0-7]+$/.test(n)?{sign:t,digits:n.slice(1),base:8}:null:/^[0-9]+$/.test(n)?{sign:t,digits:n,base:10}:null}function af(e){if(typeof e==`number`){let t=Math.trunc(e);return Number.isSafeInteger(t)?t:0}if(typeof e==`bigint`){let t=Number(e);return Number.isSafeInteger(t)?t:0}if(typeof e==`string`){let t=rf(e);if(t===null)return 0;let n=t.sign*Number.parseInt(t.digits,t.base);return Number.isSafeInteger(n)?n:0}return typeof e==`boolean`?+!!e:0}function of(e){if(typeof e==`bigint`)return e;if(typeof e==`number`)return BigInt(Math.trunc(e));if(typeof e==`string`){let t=rf(e);if(t===null)return 0n;let n=t.base===16?`0x`:t.base===2?`0b`:t.base===8?`0o`:``,r=BigInt(n+t.digits);return t.sign===-1?-r:r}return typeof e==`boolean`&&e?1n:0n}function sf(e){if(!/^[+-]?[0-7]+$/.test(e))return 0;let t=e[0]===`-`?-1:1,n=e[0]===`+`||e[0]===`-`?e.slice(1):e,r=t*Number.parseInt(n,8);return Number.isSafeInteger(r)?r:0}function cf(e){return JSON.stringify(e)??`null`}function lf(){return{atoi:{fn:e=>tf(e),argTypes:[`string`],returnType:`int`},int:{fn:e=>af(e),argTypes:[`value`],returnType:`int`},int64:{fn:e=>of(e),argTypes:[`value`]},float64:{fn:e=>nf(e),argTypes:[`value`],returnType:`float`},toDecimal:{fn:e=>sf(e),argTypes:[`string`],returnType:`int`},toRawJson:{fn:e=>cf(e),argTypes:[`serializable`],returnType:`string`}}}const uf={h:36e11,m:6e10,s:1e9,ms:1e6,us:1e3,µs:1e3,ns:1};function df(e){if(e===`0`)return 0;let t=!1,n=e;if(n.startsWith(`-`)?(t=!0,n=n.slice(1)):n.startsWith(`+`)&&(n=n.slice(1)),!n)return NaN;let r=0,i=/^(\d+(?:\.\d+)?)(ns|µs|us|ms|[smh])/;for(;n.length>0;){let e=i.exec(n);if(!e)return NaN;let t=parseFloat(e[1]??`0`),a=e[2];r+=t*uf[a],n=n.slice(e[0].length)}return t?-r:r}function ff(e){if(e===0)return`0s`;let t=!1,n=e;n<0&&(t=!0,n=-n);let r;return r=n<uf.us?`${Math.floor(n)}ns`:n<uf.ms?pf(n,uf.us,3,`µs`):n<uf.s?pf(n,uf.ms,6,`ms`):mf(n),t?`-${r}`:r}function pf(e,t,n,r){let i=Math.floor(e/t),a=Math.round(e%t);return a===0?`${i}${r}`:`${i}.${String(a).padStart(n,`0`).replace(/0+$/,``)}${r}`}function mf(e){let t=Math.floor(e/uf.h);e-=t*uf.h;let n=Math.floor(e/uf.m);e-=n*uf.m;let r=Math.floor(e/uf.s),i=e-r*uf.s,a=i===0?`${r}s`:`${r}.${String(Math.round(i)).padStart(9,`0`).replace(/0+$/,``)}s`;return t>0?`${t}h${n}m${a}`:n>0?`${n}m${a}`:a}function hf(e){return e*uf.s}function gf(e){if(e instanceof Date)return e;if(typeof e==`bigint`)return new Date(Number(e)*1e3);if(typeof e==`number`)return new Date(e*1e3);if(typeof e==`string`){let t=new Date(e);if(!Number.isNaN(t.getTime()))return t;throw Error(`sprig: cannot parse date value ${JSON.stringify(e)}`)}throw Error(`sprig: unsupported date type: ${typeof e}`)}function _f(e,t){let n=t().getTime()-gf(e).getTime();return ff(Math.round(n/1e3)*1e9)}const vf=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],yf=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],bf=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],xf=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`];function Sf(e){return e<10?`0${e}`:String(e)}function Cf(e){return e<10?`00${e}`:e<100?`0${e}`:String(e)}function wf(e){return e<10?` ${e}`:String(e)}function Tf(e){let t=e>=0?`+`:`-`,n=Math.abs(e);return`${t}${Sf(Math.floor(n/60))}${Sf(n%60)}`}function Ef(e){let t=e>=0?`+`:`-`,n=Math.abs(e);return`${t}${Sf(Math.floor(n/60))}:${Sf(n%60)}`}function Df(e){return`${e>=0?`+`:`-`}${Sf(Math.floor(Math.abs(e)/60))}`}function Of(e){return e===0?`Z`:Tf(e)}function kf(e){return e===0?`Z`:Ef(e)}function Af(e){return e===0?`Z`:Df(e)}function jf(e,t,n){let r=e*1e6,i=String(r).padStart(9,`0`).slice(0,t);return n?i.replace(/0+$/,``):i}const Mf=[[`.000000000`,e=>`.${jf(e.ms,9,!1)}`],[`.999999999`,e=>{let t=jf(e.ms,9,!0);return t?`.${t}`:``}],[`.000000`,e=>`.${jf(e.ms,6,!1)}`],[`.999999`,e=>{let t=jf(e.ms,6,!0);return t?`.${t}`:``}],[`.000`,e=>`.${Cf(e.ms)}`],[`.999`,e=>{let t=Cf(e.ms).replace(/0+$/,``);return t?`.${t}`:``}],[`January`,e=>vf[e.month-1]??`January`],[`Monday`,e=>bf[e.weekday]??`Monday`],[`Z07:00`,e=>kf(e.offsetMinutes)],[`-07:00`,e=>Ef(e.offsetMinutes)],[`Z0700`,e=>Of(e.offsetMinutes)],[`-0700`,e=>Tf(e.offsetMinutes)],[`2006`,e=>String(e.year)],[`Jan`,e=>yf[e.month-1]??`Jan`],[`Mon`,e=>xf[e.weekday]??`Mon`],[`MST`,e=>e.tzAbbr],[`-07`,e=>Df(e.offsetMinutes)],[`Z07`,e=>Af(e.offsetMinutes)],[`15`,e=>Sf(e.hour)],[`01`,e=>Sf(e.month)],[`02`,e=>Sf(e.day)],[`_2`,e=>wf(e.day)],[`03`,e=>Sf(e.hour12)],[`04`,e=>Sf(e.minute)],[`05`,e=>Sf(e.second)],[`06`,e=>Sf(e.year%100)],[`PM`,e=>e.hour>=12?`PM`:`AM`],[`pm`,e=>e.hour>=12?`pm`:`am`],[`1`,e=>String(e.month)],[`2`,e=>String(e.day)],[`3`,e=>String(e.hour12)],[`4`,e=>String(e.minute)],[`5`,e=>String(e.second)]];function Nf(e,t){let n=``,r=0;for(;r<e.length;){let i=!1;for(let[a,o]of Mf)if(e.startsWith(a,r)){n+=o(t),r+=a.length,i=!0;break}i||(n+=e[r++])}return n}const Pf={year:`numeric`,month:`2-digit`,day:`2-digit`,weekday:`long`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hour12:!1};function Ff(e){let t=new Map;for(let n of e)t.set(n.type,n.value);return t}const If=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`];function Lf(e,t){let n;try{new Intl.DateTimeFormat(`en-US`,{timeZone:t}),n=t}catch{n=`UTC`}let r=Ff(new Intl.DateTimeFormat(`en-US`,{...Pf,timeZone:n}).formatToParts(e)),i=parseInt(r.get(`hour`)??`0`,10)%24,a=Ff(new Intl.DateTimeFormat(`en-US`,{timeZone:n,timeZoneName:`short`}).formatToParts(e)).get(`timeZoneName`)??n,o=Rf(Ff(new Intl.DateTimeFormat(`en-US`,{timeZone:n,timeZoneName:`shortOffset`}).formatToParts(e)).get(`timeZoneName`)??`GMT`),s=If.indexOf(r.get(`weekday`)??`Sunday`);return{year:parseInt(r.get(`year`)??`2000`,10),month:parseInt(r.get(`month`)??`1`,10),day:parseInt(r.get(`day`)??`1`,10),weekday:s===-1?0:s,hour:i,hour12:i%12||12,minute:parseInt(r.get(`minute`)??`0`,10),second:parseInt(r.get(`second`)??`0`,10),ms:e.getUTCMilliseconds(),tzAbbr:a,offsetMinutes:o}}function Rf(e){if(e===`GMT`||e===`UTC`)return 0;let t=e.match(/^GMT([+-])(\d{1,2})(?::(\d{2}))?$/);if(!t)return 0;let n=t[1]===`+`?1:-1,r=parseInt(t[2]??`0`,10),i=parseInt(t[3]??`0`,10);return n*(r*60+i)}function zf(){return Intl.DateTimeFormat().resolvedOptions().timeZone}function Bf(e,t){return Nf(e,Lf(gf(t),zf()))}function Vf(e,t,n){return Nf(e,Lf(gf(t),n))}function Hf(e,t){let n=gf(t),r=df(e);return Number.isNaN(r)?n:new Date(n.getTime()+r/1e6)}function Uf(e){if(typeof e==`string`){let t=parseInt(e,10);return Number.isNaN(t)?`0s`:ff(hf(t))}return typeof e==`bigint`?ff(hf(Number(e))):typeof e==`number`?ff(hf(e)):`0s`}const Wf=36e11*24*365,Gf=36e11*24*30,Kf=36e11*24,qf=36e11,Jf=6e10,Yf=1e9;function Xf(e){let t=df(String(e));if(Number.isNaN(t))return`0s`;let n=Math.abs(t);return n>Wf?`${Math.floor(n/Wf)}y`:n>Gf?`${Math.floor(n/Gf)}mo`:n>Kf?`${Math.floor(n/Kf)}d`:n>qf?`${Math.floor(n/qf)}h`:n>Jf?`${Math.floor(n/Jf)}m`:n>Yf?`${Math.floor(n/Yf)}s`:`0s`}function Zf(e){let t=Lf(gf(e),zf());return`${t.year}-${String(t.month).padStart(2,`0`)}-${String(t.day).padStart(2,`0`)}`}function Qf(e,t){let n=Lf(gf(e),t);return`${n.year}-${String(n.month).padStart(2,`0`)}-${String(n.day).padStart(2,`0`)}`}function $f(e){return e()}const ep=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],tp=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`];function np(){return{year:2e3,month:1,day:1,hour:0,minute:0,second:0,ms:0,offsetMinutes:0,isPM:!1,hour12:!1}}function rp(e,t,n){return[e.slice(t,t+n),t+n]}function ip(e,t,n,r){let i=t;for(;i<e.length&&i-t<r&&e.charCodeAt(i)>=48&&e.charCodeAt(i)<=57;)i++;if(i-t<n)throw Error(`sprig toDate: expected ${n}-${r} digits at pos ${t}`);return[parseInt(e.slice(t,i),10),i]}function ap(e,t){for(let[n,r]of ep.entries())if(e.startsWith(r,t))return[n+1,t+r.length];throw Error(`sprig toDate: expected month name at pos ${t}`)}function op(e,t){for(let[n,r]of tp.entries())if(e.startsWith(r,t))return[n+1,t+r.length];throw Error(`sprig toDate: expected short month name at pos ${t}`)}function sp(e,t){for(let n of[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`])if(e.startsWith(n,t))return t+n.length;throw Error(`sprig toDate: expected weekday name at pos ${t}`)}function cp(e,t){for(let n of[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`])if(e.startsWith(n,t))return t+n.length;throw Error(`sprig toDate: expected short weekday name at pos ${t}`)}function lp(e,t){if(e[t]===` `){let[n,r]=ip(e,t+1,1,1);return[n,r]}return ip(e,t,1,2)}function up(e,t,n){let r=e[t]===`+`?1:e[t]===`-`?-1:0;if(r===0)throw Error(`sprig toDate: expected +/- at pos ${t}`);let i=t+1,[a,o]=ip(e,i,2,2);i=o;let s=0;if(n&&e[i]===`:`){let[t,n]=ip(e,i+1,2,2);s=t,i=n}else if(!n){let[t,n]=ip(e,i,2,2);s=t,i=n}return[r*(a*60+s),i]}function dp(e,t,n,r){if(e[t]===`Z`)return[0,t+1];if(r){let n=e[t]===`+`?1:e[t]===`-`?-1:0;if(n===0)throw Error(`sprig toDate: expected Z or +/- at pos ${t}`);let[r,i]=ip(e,t+1,2,2);return[n*r*60,i]}return up(e,t,n)}function fp(e,t){let n=t;for(;n<e.length&&e.charCodeAt(n)>=65&&e.charCodeAt(n)<=90;)n++;if(n===t)throw Error(`sprig toDate: expected timezone abbreviation at pos ${t}`);return n}function pp(e,t,n){let[r,i]=rp(e,t,n),a=parseInt(r.padEnd(9,`0`),10);return[Math.round(a/1e6),i]}function mp(e,t,n,r){let i={...r};switch(e){case`January`:{let[e,r]=ap(t,n);return i.month=e,[r,i]}case`Monday`:return[sp(t,n),i];case`Jan`:{let[e,r]=op(t,n);return i.month=e,[r,i]}case`Mon`:return[cp(t,n),i];case`2006`:{let[e,r]=ip(t,n,4,4);return i.year=e,[r,i]}case`06`:{let[e,r]=ip(t,n,2,2);return i.year=e<70?2e3+e:1900+e,[r,i]}case`01`:{let[e,r]=ip(t,n,2,2);return i.month=e,[r,i]}case`1`:{let[e,r]=ip(t,n,1,2);return i.month=e,[r,i]}case`_2`:{let[e,r]=lp(t,n);return i.day=e,[r,i]}case`02`:{let[e,r]=ip(t,n,2,2);return i.day=e,[r,i]}case`2`:{let[e,r]=ip(t,n,1,2);return i.day=e,[r,i]}case`15`:{let[e,r]=ip(t,n,2,2);return i.hour=e,[r,i]}case`03`:{let[e,r]=ip(t,n,2,2);return i.hour=e,i.hour12=!0,[r,i]}case`3`:{let[e,r]=ip(t,n,1,2);return i.hour=e,i.hour12=!0,[r,i]}case`04`:{let[e,r]=ip(t,n,2,2);return i.minute=e,[r,i]}case`4`:{let[e,r]=ip(t,n,1,2);return i.minute=e,[r,i]}case`05`:{let[e,r]=ip(t,n,2,2);return i.second=e,[r,i]}case`5`:{let[e,r]=ip(t,n,1,2);return i.second=e,[r,i]}case`PM`:case`pm`:{let e=t.slice(n,n+2).toLowerCase();if(e!==`am`&&e!==`pm`)throw Error(`sprig toDate: expected AM/PM at pos ${n}, got ${JSON.stringify(t.slice(n,n+2))}`);return i.isPM=e===`pm`,i.hour12=!0,[n+2,i]}case`MST`:return[fp(t,n),i];case`-0700`:{let[e,r]=up(t,n,!1);return i.offsetMinutes=e,[r,i]}case`-07:00`:{let[e,r]=up(t,n,!0);return i.offsetMinutes=e,[r,i]}case`-07`:{let e=t[n]===`+`?1:t[n]===`-`?-1:0;if(e===0)throw Error(`sprig toDate: expected +/- at pos ${n}`);let[r,a]=ip(t,n+1,2,2);return i.offsetMinutes=e*r*60,[a,i]}case`Z0700`:{let[e,r]=dp(t,n,!1,!1);return i.offsetMinutes=e,[r,i]}case`Z07:00`:{let[e,r]=dp(t,n,!0,!1);return i.offsetMinutes=e,[r,i]}case`Z07`:{let[e,r]=dp(t,n,!1,!0);return i.offsetMinutes=e,[r,i]}case`.000000000`:{if(t[n]!==`.`)throw Error(`sprig toDate: expected . at pos ${n}`);let[e,r]=pp(t,n+1,9);return i.ms=e,[r,i]}case`.999999999`:{if(t[n]!==`.`)return[n,i];let e=n+1,r=e;for(;r<t.length&&t.charCodeAt(r)>=48&&t.charCodeAt(r)<=57;)r++;let a=t.slice(e,r).padEnd(9,`0`);return i.ms=Math.round(parseInt(a,10)/1e6),[r,i]}case`.000000`:{if(t[n]!==`.`)throw Error(`sprig toDate: expected . at pos ${n}`);let[e,r]=pp(t,n+1,6);return i.ms=e,[r,i]}case`.999999`:{if(t[n]!==`.`)return[n,i];let e=n+1,r=e;for(;r<t.length&&t.charCodeAt(r)>=48&&t.charCodeAt(r)<=57;)r++;let a=t.slice(e,r).padEnd(9,`0`);return i.ms=Math.round(parseInt(a,10)/1e6),[r,i]}case`.000`:{if(t[n]!==`.`)throw Error(`sprig toDate: expected . at pos ${n}`);let[e,r]=pp(t,n+1,3);return i.ms=e,[r,i]}case`.999`:{if(t[n]!==`.`)return[n,i];let e=n+1,r=e;for(;r<t.length&&t.charCodeAt(r)>=48&&t.charCodeAt(r)<=57;)r++;let a=t.slice(e,r).padEnd(3,`0`);return i.ms=parseInt(a,10),[r,i]}}throw Error(`sprig toDate: unhandled token ${e}`)}const hp=`.000000000,.999999999,.000000,.999999,.000,.999,January,Monday,Z07:00,-07:00,Z0700,-0700,2006,Jan,Mon,MST,-07,Z07,15,01,02,_2,03,04,05,06,PM,pm,1,2,3,4,5`.split(`,`);function gp(e,t){let n=0,r=0,i=np();for(;n<e.length;){let a=!1;for(let o of hp)if(e.startsWith(o,n)){let[e,s]=mp(o,t,r,i);r=e,i=s,n+=o.length,a=!0;break}if(!a){let i=e.charAt(n);if(t[r]!==i)throw Error(`sprig toDate: expected ${JSON.stringify(i)} at pos ${r}, got ${JSON.stringify(t[r])}`);n++,r++}}if(r!==t.length)throw Error(`sprig toDate: extra characters at pos ${r}: ${JSON.stringify(t.slice(r))}`);if(i.hour12){let e=i.hour%12;i.hour=i.isPM?e+12:e}let a=Date.UTC(i.year,i.month-1,i.day,i.hour,i.minute,i.second,i.ms)-i.offsetMinutes*60*1e3;return new Date(a)}function _p(e,t){return gp(e,t)}function vp(e){return String(Math.floor(gf(e).getTime()/1e3))}function yp(e=()=>new Date){return{now:{fn:()=>$f(e),argTypes:[]},date:{fn:(e,t)=>Bf(e,t),argTypes:[`string`,`value`]},dateInZone:{fn:(e,t,n)=>Vf(e,t,n),argTypes:[`string`,`value`,`string`]},dateModify:{fn:(e,t)=>Hf(e,t),argTypes:[`string`,`value`]},htmlDate:{fn:e=>Zf(e),argTypes:[`value`]},htmlDateInZone:{fn:(e,t)=>Qf(e,t),argTypes:[`value`,`string`]},duration:{fn:e=>Uf(e),argTypes:[`value`]},durationRound:{fn:e=>Xf(e),argTypes:[`value`]},toDate:{fn:(e,t)=>_p(e,t),argTypes:[`string`,`string`]},ago:{fn:t=>_f(t,e),argTypes:[`value`]},unixEpoch:{fn:e=>vp(e),argTypes:[`value`]}}}function bp(e){return e==null||e===!1?!0:typeof e==`number`?e===0||Number.isNaN(e):typeof e==`bigint`?e===0n:typeof e==`string`||Array.isArray(e)?e.length===0:e instanceof Map||e instanceof Set?e.size===0:typeof e==`object`?Object.keys(e).length===0:!1}function xp(...e){for(let t of e)if(!bp(t))return t}function Sp(e,t){return bp(t)?e:t}function Cp(e){return JSON.parse(e)}function wp(e,t,n){return Xu(n)?e:t}function Tp(e){return JSON.stringify(e)??`null`}function Ep(e){return JSON.stringify(e,null,2)??`null`}function Dp(){return{default:{fn:(e,t)=>Sp(e,t),argTypes:[`value`,`truthy`]},empty:{fn:e=>bp(e),argTypes:[`truthy`]},coalesce:{fn:(...e)=>xp(...e),argTypes:[`truthy`]},ternary:{fn:(e,t,n)=>wp(e,t,n),argTypes:[`value`,`value`,`truthy`]},fromJson:{fn:e=>Cp(e),argTypes:[`string`]},toJson:{fn:e=>Tp(e),argTypes:[`serializable`],returnType:`string`},toPrettyJson:{fn:e=>Ep(e),argTypes:[`serializable`],returnType:`string`}}}function Op(...e){let t={};for(let n=0;n<e.length;n+=2)t[e[n]]=e[n+1];return t}function kp(e){if(e.kind!==`call`||e.name!==`dict`||e.args.length%2!=0)return null;let t=[];for(let[n,r]of e.args.entries()){if(r.kind!==`literal`||n%2==0&&typeof r.value!=`string`)return null;t.push(r.value)}return Op(...t)}function Ap(e,t){return e[t]}function jp(e,t){return t in e}function Mp(e){return Object.keys(e)}function Np(e,...t){let n={...e};for(let e of t)for(let[t,r]of Object.entries(e))t in n||(n[t]=r);return n}function Pp(e,...t){let n={...e};for(let e of t)Object.assign(n,e);return n}function Fp(e,...t){let n=new Set(t),r={};for(let[t,i]of Object.entries(e))n.has(t)||(r[t]=i);return r}function Ip(e,...t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function Lp(e,...t){let n=[];for(let r of t)e in r&&n.push(r[e]);return n}function Rp(e,t,n){return e[t]=n,e}function zp(e,t){return delete e[t],e}function Bp(e){return Object.values(e)}function Vp(){return{dict:{fn:(...e)=>Op(...e),argTypes:[`string`,`value`],argTypePattern:`alternating`},get:{fn:(e,t)=>Ap(e,t),argTypes:[`dict`,`string`]},set:{fn:(e,t,n)=>Rp(e,t,n),argTypes:[`dict`,`string`,`value`]},unset:{fn:(e,t)=>zp(e,t),argTypes:[`dict`,`string`]},keys:{fn:e=>Mp(e),argTypes:[`dict`]},values:{fn:e=>Bp(e),argTypes:[`dict`]},pluck:{fn:(e,...t)=>Lp(e,...t),argTypes:[`string`,`dict`]},pick:{fn:(e,...t)=>Ip(e,...t),argTypes:[`dict`,`string`]},omit:{fn:(e,...t)=>Fp(e,...t),argTypes:[`dict`,`string`]},hasKey:{fn:(e,t)=>jp(e,t),argTypes:[`dict`,`string`]},merge:{fn:(e,...t)=>Np(e,...t),argTypes:[`dict`]},mergeOverwrite:{fn:(e,...t)=>Pp(e,...t),argTypes:[`dict`]}}}new TextEncoder,new Map(Array.from(`ABCDEFGHIJKLMNOPQRSTUVWXYZ234567`).map((e,t)=>[e,t])),new TextDecoder,new TextEncoder,new TextDecoder,new TextEncoder;function Hp(...e){for(let t of e)if(bp(t))return!1;return!0}function Up(...e){for(let t of e)if(!bp(t))return!0;return!1}function Wp(e,t){return[...e,t]}function Gp(e,t){let n=Math.max(1,e),r=[];for(let e=0;e<t.length;e+=n)r.push(t.slice(e,e+n));return r}function Kp(e){return e.filter(e=>!bp(e))}function qp(...e){let t=[];for(let n of e)t.push(...n);return t}const Jp={line:0,column:0,offset:0};function Yp(e,t,n,r){return new iu(e,t,n,r,Jp)}function Xp(...e){if(e.length<3)throw Yp(`dig`,0,`at least 3 arguments (...keys, default, dict)`,`${e.length} argument${e.length===1?``:`s`}`);let t=e[e.length-1],n=e[e.length-2],r=e.slice(0,-2);if(!Qp(t))throw Yp(`dig`,e.length-1,`dict`,$p(t));for(let e=0;e<r.length;e++)if(typeof r[e]!=`string`)throw Yp(`dig`,e,`string`,$p(r[e]));return Zp(t,n,r,e.length)}function Zp(e,t,n,r){let i=n[0];if(!Object.hasOwn(e,i))return t;let a=e[i];if(n.length===1)return a;if(!Qp(a))throw Yp(`dig`,r-1,`dict at intermediate key`,$p(a));return Zp(a,t,n.slice(1),r)}function Qp(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Map)&&!(e instanceof Set)}function $p(e){return e===null?`null`:Array.isArray(e)?`array`:e instanceof Map?`Map`:e instanceof Set?`Set`:typeof e}function em(e){return e[0]}function tm(e,t){return t.some(t=>Ku(t,e))}function nm(e){return e.slice(0,-1)}function rm(e){return e[e.length-1]}function im(e){return Array.isArray(e)||typeof e==`string`?e.length:e instanceof Map||e instanceof Set?e.size:Object.keys(e).length}function am(...e){return e}function om(e,t){return[t,...e]}function sm(e){return e.slice(1)}function cm(e){return[...e].reverse()}function lm(e,t,n){let r=t===void 0?0:t,i=n===void 0?e.length:n;return e.slice(r,i)}function um(e){let t=[];for(let n of e)n!=null&&t.push(String(n));return t.sort()}function dm(e){let t=[];for(let n of e)t.some(e=>Ku(e,n))||t.push(n);return t}function fm(e,...t){return e.filter(e=>!t.some(t=>Ku(t,e)))}function pm(){return{list:{fn:(...e)=>am(...e),argTypes:[`value`]},first:{fn:e=>em(e),argTypes:[`list`]},last:{fn:e=>rm(e),argTypes:[`list`]},rest:{fn:e=>sm(e),argTypes:[`list`]},initial:{fn:e=>nm(e),argTypes:[`list`]},len:{fn:e=>im(e),argTypes:[`sized`]},reverse:{fn:e=>cm(e),argTypes:[`list`]},uniq:{fn:e=>dm(e),argTypes:[`list`]},without:{fn:(e,...t)=>fm(e,...t),argTypes:[`list`,`value`]},has:{fn:(e,t)=>tm(e,t),argTypes:[`value`,`list`]},compact:{fn:e=>Kp(e),argTypes:[`list`]},slice:{fn:(e,t,n)=>lm(e,t,n),argTypes:[`list`,`int`,`int`]},concat:{fn:(...e)=>qp(...e),argTypes:[`list`]},chunk:{fn:(e,t)=>Gp(e,t),argTypes:[`int`,`list`]},prepend:{fn:(e,t)=>om(e,t),argTypes:[`list`,`value`]},append:{fn:(e,t)=>Wp(e,t),argTypes:[`list`,`value`]},sortAlpha:{fn:e=>um(e),argTypes:[`list`],returnType:`list`},push:{fn:(e,t)=>Wp(e,t),argTypes:[`list`,`value`]},tuple:{fn:(...e)=>am(...e),argTypes:[`value`]},dig:{fn:(...e)=>Xp(...e),argTypes:[`value`]},all:{fn:(...e)=>Hp(...e),argTypes:[`truthy`],returnType:`bool`},any:{fn:(...e)=>Up(...e),argTypes:[`truthy`],returnType:`bool`}}}function mm(...e){return e.reduce((e,t)=>e+t,0)}function hm(e){return e+1}function gm(e){return e+1}function _m(...e){return e.reduce((e,t)=>e+t,0)}function vm(e){return Math.ceil(e)}function ym(e,t){return Math.trunc(e/t)}function bm(e,t){return e/t}function xm(e){return Math.floor(e)}function Sm(...e){return e.reduce((e,t)=>t>e?t:e,-1/0)}function Cm(...e){return e.reduce((e,t)=>Math.max(e,t),-1/0)}function wm(...e){return e.reduce((e,t)=>t<e?t:e,1/0)}function Tm(...e){return e.reduce((e,t)=>Math.min(e,t),1/0)}function Em(e,t){return e%t}function Dm(...e){return e.reduce((e,t)=>e*t,1)}function Om(...e){return e.reduce((e,t)=>e*t,1)}function km(e,t=0){let n=10**t;return Math.sign(e)*Math.round(Math.abs(e)*n)/n}function Am(e,t,n){let r=[];if(t<e){if(n>=0)return r;for(let i=e;i>t;i+=n)r.push(i);return r}if(n<=0)return r;for(let i=e;i<t;i+=n)r.push(i);return r}function jm(...e){let t=1;switch(e.length){case 0:return``;case 1:{let n=e[0];return n<1&&(t=-1),Am(1,n+t,t).join(` `)}case 2:{let t=e[0],n=e[1],r=n<t?-1:1;return Am(t,n+r,r).join(` `)}case 3:{let n=e[0],r=e[1],i=e[2];return i<n&&(t=-1,r>0)?``:Am(n,i+t,r).join(` `)}default:return``}}function Mm(e,t){return e-t}function Nm(e,t){return e-t}function Pm(e){return Am(0,e,e<0?-1:1)}function Fm(){return{add:{fn:(...e)=>mm(...e),argTypes:[`int`]},sub:{fn:(e,t)=>Mm(e,t),argTypes:[`int`,`int`]},mul:{fn:(...e)=>Dm(...e),argTypes:[`int`]},div:{fn:(e,t)=>ym(e,t),argTypes:[`int`,`int`]},mod:{fn:(e,t)=>Em(e,t),argTypes:[`int`,`int`]},min:{fn:(...e)=>wm(...e),argTypes:[`int`]},max:{fn:(...e)=>Sm(...e),argTypes:[`int`]},floor:{fn:e=>xm(e),argTypes:[`float`]},ceil:{fn:e=>vm(e),argTypes:[`float`]},round:{fn:(e,t)=>km(e,t),argTypes:[`float`,`int`]},addf:{fn:(...e)=>_m(...e),argTypes:[`float`]},subf:{fn:(e,t)=>Nm(e,t),argTypes:[`float`,`float`]},mulf:{fn:(...e)=>Om(...e),argTypes:[`float`]},divf:{fn:(e,t)=>bm(e,t),argTypes:[`float`,`float`]},add1:{fn:e=>hm(e),argTypes:[`int`]},add1f:{fn:e=>gm(e),argTypes:[`float`]},maxf:{fn:(...e)=>Cm(...e),argTypes:[`float`]},minf:{fn:(...e)=>Tm(...e),argTypes:[`float`]},biggest:{fn:(...e)=>Sm(...e),argTypes:[`int`]},seq:{fn:(...e)=>jm(...e),argTypes:[`int`],returnType:`string`},until:{fn:e=>Pm(e),argTypes:[`int`],returnType:`list`},untilStep:{fn:(e,t,n)=>Am(e,t,n),argTypes:[`int`,`int`,`int`],returnType:`list`}}}Array.from({length:95},(e,t)=>String.fromCharCode(t+32)).join(``);function Im(e,t){return t.length<=e||e<4?t:`${t.slice(0,e-3)}...`}function Lm(e,t,n){return t<7||n.length<t||e<0||e>n.length-t+1?n:`...${n.slice(e,e+t-6)}...`}const q={Invalid:0,Number:1,UpperCase:2,Alphabet:3,Connector:4,Punct:5,Other:6},Rm=/^[-_\s]$/,zm=/^\p{P}$/u,Bm=/^\p{L}$/u,Vm=/^\p{Lu}$/u,Hm=/^\p{N}$/u;function Um(e){return e!==void 0&&Rm.test(e)}function Wm(e){return e!==void 0&&Bm.test(e)}function Gm(e){return e!==void 0&&Vm.test(e)}function Km(e){return e!==void 0&&Hm.test(e)}function qm(e){return e!==void 0&&zm.test(e)}function Jm(e,t){if(t>=e.length)return{word:{wt:q.Invalid,text:``},next:t};let n=e[t],r=t+1;if(Um(n)){for(;r<e.length&&Um(e[r]);)r++;return{word:{wt:q.Connector,text:e.slice(t,r).join(``)},next:r}}if(qm(n)){for(;r<e.length&&qm(e[r]);)r++;return{word:{wt:q.Punct,text:e.slice(t,r).join(``)},next:r}}if(Gm(n)){if(r>=e.length)return{word:{wt:q.UpperCase,text:n},next:r};if(Gm(e[r])){let n=r;for(;n<e.length&&Gm(e[n]);)n++;return n<e.length&&Wm(e[n])?{word:{wt:q.UpperCase,text:e.slice(t,n-1).join(``)},next:n-1}:{word:{wt:q.UpperCase,text:e.slice(t,n).join(``)},next:n}}if(Wm(e[r])){let n=r+1;for(;n<e.length&&Wm(e[n])&&!Gm(e[n]);)n++;return{word:{wt:q.UpperCase,text:e.slice(t,n).join(``)},next:n}}return{word:{wt:q.UpperCase,text:n},next:r}}if(Wm(n)){for(;r<e.length&&Wm(e[r])&&!Gm(e[r]);)r++;return{word:{wt:q.Alphabet,text:e.slice(t,r).join(``)},next:r}}if(Km(n)){for(;r<e.length&&Km(e[r]);)r++;return{word:{wt:q.Number,text:e.slice(t,r).join(``)},next:r}}for(;r<e.length&&!Um(e[r])&&!Wm(e[r])&&!Km(e[r])&&!qm(e[r]);)r++;return{word:{wt:q.Other,text:e.slice(t,r).join(``)},next:r}}function Ym(e,t,n){if(t.wt!==q.UpperCase&&t.wt!==q.Connector){e.push(t.text);return}for(let r of t.text)Um(r)?e.push(n):Gm(r)?e.push(r.toLowerCase()):e.push(r)}function Xm(e,t){if(e.length===0)return``;let n=Array.from(e),r=[],{word:i,next:a}=Jm(n,0);for(;a<n.length;){i.wt!==q.Connector&&Ym(r,i,t);let e=i,o=i;if({word:i,next:a}=Jm(n,a),e.wt===q.Number){for(;i.wt===q.Alphabet||i.wt===q.Number;)Ym(r,i,t),{word:i,next:a}=Jm(n,a);i.wt!==q.Invalid&&i.wt!==q.Punct&&i.wt!==q.Connector&&r.push(t);continue}if(e.wt===q.Connector){Ym(r,o,t);continue}if(e.wt===q.Punct)continue;if(i.wt!==q.Number){i.wt!==q.Connector&&i.wt!==q.Punct&&r.push(t);continue}if(a>=n.length)continue;let s=i;if({word:i,next:a}=Jm(n,a),i.wt!==q.Alphabet){Ym(r,s,t),i.wt!==q.Connector&&i.wt!==q.Punct&&r.push(t);continue}for(r.push(t),Ym(r,s,t);i.wt===q.Alphabet||i.wt===q.Number;)Ym(r,i,t),{word:i,next:a}=Jm(n,a);i.wt!==q.Invalid&&i.wt!==q.Connector&&i.wt!==q.Punct&&r.push(t)}return Ym(r,i,t),r.join(``).toLowerCase()}function Zm(e){if(e.length===0)return``;let t=Array.from(e),n=[],r=0,i=``;for(;r<t.length;){if(i=t[r],r++,!Um(i)){i=i.toUpperCase();break}n.push(i)}if(r>=t.length)return t.length>0&&n.push(i),n.join(``);for(;r<t.length;){let e=i;if(i=t[r],r++,Um(i)&&Um(e)){n.push(e);continue}Um(e)?i=i.toUpperCase():(i=i.toLowerCase(),n.push(e))}return n.push(i),n.join(``)}function Qm(e){return Zm(e)}function $m(...e){return e.join(` `)}function eh(e,t){return t.includes(e)}function th(e,t){return t.startsWith(e)}function nh(e,t){return t.endsWith(e)}function rh(e,t){let n=` `.repeat(Math.max(0,e));return t.split(`
48
+ `?(this.line+=1,this.column=1):this.column+=1}}advanceTo(e){for(;this.offset<e;)this.advanceBy(1)}makeToken(e,t,n,r={}){return Object.freeze({type:e,value:t,pos:n,...r.trimLeft===void 0?{}:{trimLeft:r.trimLeft},...r.trimRight===void 0?{}:{trimRight:r.trimRight}})}};function vu(e){return e===` `||e===` `||e===`\r`||e===`
49
+ `}function yu(e){return e===`+`||e===`-`}function bu(e){return e>=`0`&&e<=`9`}function xu(e){return bu(e)||e>=`a`&&e<=`f`||e>=`A`&&e<=`F`}function Su(e){return e>=`0`&&e<=`7`}function Cu(e){return e===`0`||e===`1`}function wu(e){return e>=`a`&&e<=`z`||e>=`A`&&e<=`Z`}function Tu(e){return wu(e)||e===`_`}function Eu(e){return Tu(e)||bu(e)}let Du,Ou;function ku(e,t){return Ou(e,t)}var Au=class e{static EMPTY=new e(new Map,void 0);#e;#t;constructor(e,t){this.#e=e,this.#t=t}static{Du=(t,n)=>new e(t,n),Ou=(e,t)=>e.#e.get(t)??(e.#t&&Ou(e.#t,t))}has(e){return Ou(this,e)!==void 0}};function ju(e,t,n=Au.EMPTY){return new Mu(e,t,n).parseTemplate()}var Mu=class{lex;buf=[];defines=new Map;inherit;source;rangeDepth=0;constructor(e,t,n){this.source=e,this.inherit=n,this.lex=t?new _u(e,t):new _u(e)}peek(e=0){for(;this.buf.length<=e;)this.buf.push(this.lex.next());return this.buf[e]}next(){return this.buf.length>0?this.buf.shift():this.lex.next()}expect(e,t){let n=this.next();if(n.type!==e)throw this.errAt(n,`expected ${t}`,{expected:t,found:Fu(n)});return n}errAt(e,t,n={}){return new au(t,e.pos,{...n,source:this.source})}parseTemplate(){let e=this.parseList();if(this.peek().type!==`EOF`){let e=this.peek(),t=this.peek(1);if(e.type===`LeftDelim`&&(t.type===`Else`||t.type===`End`)){let n=t.type===`Else`?`else`:`end`;throw this.errAt(e,`unexpected \`{{${n}}}\` outside of \`if\`, \`range\`, \`with\`, or \`block\``,{found:`{{${n}}}`})}throw this.errAt(e,`unexpected ${Fu(e)}`,{found:Fu(e)})}return{root:e,defines:Du(this.defines,this.inherit),ownDefines:this.defines,source:this.source}}parseList(){let e=this.peek().pos,t=[];for(;;){let n=this.peek();if(n.type===`EOF`)break;if(n.type===`Text`){this.next(),t.push({type:`Text`,pos:n.pos,text:n.value});continue}if(n.type===`Comment`){this.next();let e=Pu(n);t.push({type:`Comment`,pos:n.pos,text:n.value,trim:e});continue}if(n.type===`LeftDelim`){let n=this.peek(1).type;if(n===`Else`||n===`End`)return Nu(e,t);let r=this.parseAction();r!==null&&t.push(r);continue}throw this.errAt(n,`unexpected ${Fu(n)} at top level`,{found:Fu(n)})}return Nu(e,t)}parseAction(){let e=this.expect(`LeftDelim`,"`{{`"),t=e.trimLeft===!0,n=this.peek();switch(n.type){case`If`:return this.next(),this.parseBranch(`If`,e.pos,t);case`Range`:return this.next(),this.parseBranch(`Range`,e.pos,t);case`With`:return this.next(),this.parseBranch(`With`,e.pos,t);case`Break`:return this.next(),this.parseBreakOrContinue(`Break`,e.pos,t);case`Continue`:return this.next(),this.parseBreakOrContinue(`Continue`,e.pos,t);case`Template`:return this.next(),this.parseTemplateInvocation(e.pos,t);case`Block`:return this.next(),this.parseBlock(e.pos,t);case`Define`:return this.next(),this.parseDefine(e.pos,t),null;case`RightDelim`:throw this.errAt(n,`empty action`,{expected:`pipeline`});default:{let n=this.parsePipeline(),r=this.expect(`RightDelim`,"`}}`");return{type:`Action`,pos:e.pos,pipe:n,trim:{trimLeft:t,trimRight:r.trimRight===!0}}}}}parseBranch(e,t,n){let r=this.parsePipeline();this.expect(`RightDelim`,"`}}`"),e===`Range`&&(this.rangeDepth+=1);let i=this.parseList();e===`Range`&&--this.rangeDepth;let a=this.parseElsePart(),o={trimLeft:n,trimRight:a.endConsumed?a.endRight:this.consumeEnd()},s=a.list?{pipe:r,list:i,elseList:a.list,trim:o}:{pipe:r,list:i,trim:o};switch(e){case`If`:return{type:`If`,pos:t,...s};case`Range`:return{type:`Range`,pos:t,...s};case`With`:return{type:`With`,pos:t,...s}}}parseBreakOrContinue(e,t,n){if(this.rangeDepth===0)throw new au(`{{${e===`Break`?`break`:`continue`}}} outside of {{range}}`,t,{source:this.source});let r={trimLeft:n,trimRight:this.expect(`RightDelim`,"`}}`").trimRight===!0};return e===`Break`?{type:`Break`,pos:t,trim:r}:{type:`Continue`,pos:t,trim:r}}parseElsePart(){if(this.peek().type!==`LeftDelim`||this.peek(1).type!==`Else`)return{list:void 0,endRight:!1,endConsumed:!1};let e=this.next();if(this.next(),this.peek().type===`If`){this.next();let t=this.parseBranch(`If`,e.pos,e.trimLeft===!0);return{list:{type:`List`,pos:e.pos,nodes:[t]},endRight:t.trim.trimRight,endConsumed:!0}}return this.expect(`RightDelim`,"`}}`"),{list:this.parseList(),endRight:!1,endConsumed:!1}}consumeEnd(){return this.expect(`LeftDelim`,"`{{end}}`"),this.expect(`End`,"`end`"),this.expect(`RightDelim`,"`}}`").trimRight===!0}parseTemplateInvocation(e,t){let n=this.parseQuotedName(),r=this.peek().type===`RightDelim`?void 0:this.parsePipeline(),i={trimLeft:t,trimRight:this.expect(`RightDelim`,"`}}`").trimRight===!0};return r?{type:`Template`,pos:e,name:n,pipe:r,trim:i}:{type:`Template`,pos:e,name:n,trim:i}}parseBlock(e,t){let n=this.parseQuotedName(),r=this.peek().type===`RightDelim`?void 0:this.parsePipeline();this.expect(`RightDelim`,"`}}`");let i=this.rangeDepth;this.rangeDepth=0;let a=this.parseList();this.rangeDepth=i;let o={trimLeft:t,trimRight:this.consumeEnd()};return!this.defines.has(n)&&!this.inherit.has(n)&&this.defines.set(n,{list:a,source:this.source}),r?{type:`Block`,pos:e,name:n,pipe:r,list:a,trim:o}:{type:`Block`,pos:e,name:n,list:a,trim:o}}parseDefine(e,t){let n=this.parseQuotedName();this.expect(`RightDelim`,"`}}`");let r=this.rangeDepth;this.rangeDepth=0;let i=this.parseList();if(this.rangeDepth=r,this.consumeEnd(),this.defines.has(n)||this.inherit.has(n))throw new au(`redefinition of template ${JSON.stringify(n)}`,i.pos,{source:this.source});this.defines.set(n,{list:i,source:this.source})}parseQuotedName(){let e=this.next();if(e.type!==`String`)throw this.errAt(e,`expected template name (quoted string)`,{expected:`string`,found:Fu(e)});return Uu(e.value,e.pos,this.source)}parsePipeline(){let e=this.peek().pos,t=this.tryParseDecls(),n=[this.parseCommand()];for(;this.peek().type===`Pipe`;){this.next();let e=this.peek();if(!Iu(e.type))throw this.errAt(e,"missing command after `|`",{expected:`command`,found:Fu(e)});n.push(this.parseCommand())}return{type:`Pipe`,pos:e,decls:t?.vars??[],isAssign:t?.isAssign??!1,cmds:n}}tryParseDecls(){if(this.peek().type!==`Variable`)return;let e=1;for(;this.peek(e).type===`Comma`;){if(this.peek(e+1).type!==`Variable`)return;e+=2}let t=this.peek(e).type;if(t!==`Declare`&&t!==`Assign`)return;let n=[Lu(this.next())];for(;this.peek().type===`Comma`;)this.next(),n.push(Lu(this.expect(`Variable`,`$variable`)));return{vars:n,isAssign:this.next().type===`Assign`}}parseCommand(){let e=this.peek().pos,t=[this.parsePrimary()];for(;Iu(this.peek().type);)t.push(this.parsePrimary());return{type:`Command`,pos:e,args:t}}parsePrimary(){let e=this.next();switch(e.type){case`Dot`:return{type:`Dot`,pos:e.pos};case`Field`:return{type:`Field`,pos:e.pos,idents:e.value.slice(1).split(`.`)};case`Variable`:return Lu(e);case`Identifier`:return{type:`Identifier`,pos:e.pos,ident:e.value};case`String`:return{type:`String`,pos:e.pos,raw:e.value,value:Uu(e.value,e.pos,this.source)};case`Number`:return zu(e);case`Char`:return Bu(e,this.source);case`Bool`:return{type:`Bool`,pos:e.pos,value:e.value===`true`};case`Nil`:return{type:`Nil`,pos:e.pos};case`LeftParen`:return this.parseChainOrPipe(e.pos);default:throw this.errAt(e,`expected command argument, found ${Fu(e)}`,{expected:`command argument`,found:Fu(e)})}}parseChainOrPipe(e){let t=this.parsePipeline(),n=this.expect(`RightParen`,"`)`"),r=[],i=n.pos.offset+1,a=this.peek();return a.type===`Field`&&a.pos.offset===i&&(this.next(),r.push(...a.value.slice(1).split(`.`))),r.length===0?t:{type:`Chain`,pos:e,node:t,fields:r}}};function Nu(e,t){return{type:`List`,pos:e,nodes:t}}function Pu(e){return{trimLeft:e.trimLeft===!0,trimRight:e.trimRight===!0}}function Fu(e){return e.type===`EOF`?`end of input`:e.value||e.type}function Iu(e){switch(e){case`Dot`:case`Field`:case`Variable`:case`Identifier`:case`String`:case`Number`:case`Char`:case`Bool`:case`Nil`:case`LeftParen`:return!0;default:return!1}}function Lu(e){return{type:`Variable`,pos:e.pos,idents:Ru(e.value)}}function Ru(e){let t=e.indexOf(`.`);return t===-1?[e]:[e.slice(0,t),...e.slice(t+1).split(`.`)]}function zu(e){let t=e.value,n=t.replace(/_/g,``),r=n.toLowerCase().endsWith(`i`),i=r?n.slice(0,-1):n,a=!r&&(i.includes(`.`)||!i.startsWith(`0x`)&&!i.startsWith(`0X`)&&/[eE]/.test(i)||(i.startsWith(`0x`)||i.startsWith(`0X`))&&/[pP]/.test(i)),o=!r&&!a,s={type:`Number`,pos:e.pos,text:t,isInt:o,isUint:!1,isFloat:a,isComplex:r};if(o){let e=Vu(i);return{...s,intValue:e}}if(a){let e=Hu(i);return{...s,floatValue:e}}let c=Hu(i);return{...s,complexValue:[0,c]}}function Bu(e,t){let n=Wu(e.value,e.pos,t);return{type:`Number`,pos:e.pos,text:e.value,isInt:!0,isUint:!1,isFloat:!1,isComplex:!1,intValue:BigInt(n)}}function Vu(e){let t=1n,n=e;return n.startsWith(`+`)?n=n.slice(1):n.startsWith(`-`)&&(t=-1n,n=n.slice(1)),t*BigInt(n)}function Hu(e){return Number(e)}function Uu(e,t,n){if(e.startsWith("`"))return e.slice(1,-1);let r=``;for(let i=1;i<e.length-1;i++){let a=e[i];if(a!==`\\`){r+=a;continue}let o=e[++i];switch(o){case`n`:r+=`
50
+ `;break;case`t`:r+=` `;break;case`r`:r+=`\r`;break;case`\\`:r+=`\\`;break;case`"`:r+=`"`;break;case`'`:r+=`'`;break;case`a`:r+=`\x07`;break;case`b`:r+=`\b`;break;case`f`:r+=`\f`;break;case`v`:r+=`\v`;break;case`0`:case`1`:case`2`:case`3`:case`4`:case`5`:case`6`:case`7`:{let t=o+(e[i+1]??``)+(e[i+2]??``);i+=2,r+=String.fromCodePoint(Number.parseInt(t,8));break}case`x`:{let t=(e[i+1]??``)+(e[i+2]??``);i+=2,r+=String.fromCodePoint(Number.parseInt(t,16));break}case`u`:{let t=e.slice(i+1,i+5);i+=4,r+=String.fromCodePoint(Number.parseInt(t,16));break}case`U`:{let t=e.slice(i+1,i+9);i+=8,r+=String.fromCodePoint(Number.parseInt(t,16));break}default:throw new au(`bad escape sequence \\${o}`,t,{expected:`valid escape sequence`,found:`\\${o}`,source:n})}}return r}function Wu(e,t,n){let r=Uu(`"${e.slice(1,-1).replace(/"/g,`\\"`)}"`,t,n);if(r.length===0)throw new au(`empty rune literal`,t,{source:n});return r.codePointAt(0)??0}function Gu(e,t){if(t(e)!==!1)for(let n of Ku(e))Gu(n,t)}function Ku(e){switch(e.type){case`Text`:case`Comment`:case`Dot`:case`Nil`:case`Bool`:case`Number`:case`String`:case`Identifier`:case`Field`:case`Variable`:case`Break`:case`Continue`:return[];case`List`:return e.nodes;case`Chain`:return[e.node];case`Command`:return e.args;case`Pipe`:return[...e.decls,...e.cmds];case`Action`:return[e.pipe];case`If`:case`Range`:case`With`:return e.elseList?[e.pipe,e.list,e.elseList]:[e.pipe,e.list];case`Template`:return e.pipe?[e.pipe]:[];case`Block`:return e.pipe?[e.pipe,e.list]:[e.list];default:return mu(e)}}const qu=Symbol(`go-template-js.MISSING`);function Ju(e,t){if(e==null)return qu;if(e instanceof Map)return e.has(t)?e.get(t):qu;if(Array.isArray(e))return qu;if(typeof e==`object`){let n=e;return t in n?n[t]:qu}return qu}function Yu(e,t){let n=e;for(let e of t){if(n===qu)return qu;n=Ju(n,e)}return n}function Xu(e,t){if(Object.is(e,t))return!0;if(e===null||t===null||e===void 0||t===void 0||typeof e!=typeof t)return!1;if(Array.isArray(e)&&Array.isArray(t))return e.length===t.length?e.every((e,n)=>Xu(e,t[n])):!1;if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(let[n,r]of e)if(!t.has(n)||!Xu(r,t.get(n)))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}if(typeof e==`object`&&typeof t==`object`){let n=Object.keys(e),r=Object.keys(t);return n.length===r.length?n.every(n=>Xu(e[n],t[n])):!1}return!1}const Zu=new WeakSet;function Qu(e){return Zu.add(e),e}function $u(e){return Zu.has(e)}function ed(e){return e==null||e===!1?!1:typeof e==`number`?e!==0&&!Number.isNaN(e):typeof e==`bigint`?e!==0n:typeof e==`string`||Array.isArray(e)?e.length>0:e instanceof Map||e instanceof Set?e.size>0:typeof e==`object`?Object.keys(e).length>0:!!e}function td(e,t){return{eq:{fn:(e,...t)=>t.some(t=>id(e,t)),argTypes:[`comparable`]},ne:{fn:(e,t)=>!id(e,t),argTypes:[`comparable`,`comparable`]},lt:{fn:(e,t)=>ad(e,t)<0,argTypes:[`ordered`,`ordered`]},le:{fn:(e,t)=>ad(e,t)<=0,argTypes:[`ordered`,`ordered`]},gt:{fn:(e,t)=>ad(e,t)>0,argTypes:[`ordered`,`ordered`]},ge:{fn:(e,t)=>ad(e,t)>=0,argTypes:[`ordered`,`ordered`]},len:{fn:e=>od(e),argTypes:[`sized`]},index:{fn:(e,...t)=>{let n=e;for(let e of t)n=sd(n,e);return n},argTypes:[`collection`,`index-key`]},slice:{fn:(e,...t)=>{let n=t.length>=1?t[0]:0,r=t.length>=2?t[1]:void 0;return e.slice(n,r)},argTypes:[`sliceable`,`int`]},print:{fn:(...t)=>ud(t,e),argTypes:[`stringifiable`],returnType:`string`},println:{fn:(...t)=>`${ud(t,e)}\n`,argTypes:[`stringifiable`],returnType:`string`},printf:{fn:(n,...r)=>yd(n,r,e,t),argTypes:[`string`,`stringifiable`],returnType:`string`},toString:{fn:n=>Sd(n,e,t),argTypes:[`value`],returnType:`string`},toStrings:{fn:n=>n.map(n=>Sd(n,e,t)),argTypes:[`list`]},call:{fn:(e,...t)=>e(...t),argTypes:[`callable`,`value`]},html:{fn:(...t)=>pd(ud(t,e)),argTypes:[`stringifiable`],returnType:`string`},js:{fn:(...t)=>gd(ud(t,e)),argTypes:[`stringifiable`],returnType:`string`},urlquery:{fn:(...t)=>vd(ud(t,e)),argTypes:[`stringifiable`],returnType:`string`},not:{fn:e=>!ed(e),argTypes:[`truthy`]}}}function nd(){return{and:Qu({argTypes:[`truthy`],fn:(...e)=>{let t=!0;for(let n of e)if(t=n(),!ed(t))return t;return t}}),or:Qu({argTypes:[`truthy`],fn:(...e)=>{let t=!1;for(let n of e)if(t=n(),ed(t))return t;return t}})}}function rd(e,t){return{...td(e,t),...nd()}}function id(e,t){return typeof e==`number`&&typeof t==`bigint`?BigInt(e)===t:typeof e==`bigint`&&typeof t==`number`?e===BigInt(t):Xu(e,t)}function ad(e,t){if(typeof e==`bigint`&&typeof t==`bigint`)return e===t?0:e<t?-1:1;if(typeof e==`bigint`||typeof t==`bigint`){let n=typeof e==`bigint`?e:BigInt(Math.trunc(Number(e))),r=typeof t==`bigint`?t:BigInt(Math.trunc(Number(t)));return n===r?0:n<r?-1:1}let n=e,r=t;return n===r?0:n<r?-1:1}function od(e){return typeof e==`string`||Array.isArray(e)?e.length:e instanceof Map||e instanceof Set?e.size:Object.keys(e).length}function sd(e,t){if(Array.isArray(e)){let n=Number(t);if(!Number.isInteger(n))throw Error(`index: array index must be integer, got ${cd(t)}`);if(n<0||n>=e.length)throw Error(`index: out of range [${n}] with length ${e.length}`);return e[n]}if(e instanceof Map)return e.get(t);if(typeof e==`string`)return e[Number(t)];if(typeof e==`object`&&e){if(typeof t!=`string`)throw Error(`index: object index must be string, got ${cd(t)}`);return e[t]}throw Error(`index: cannot index ${cd(e)}`)}function cd(e){return e===null?`null`:e===void 0?`undefined`:Array.isArray(e)?`array`:e instanceof Map?`Map`:typeof e}function ld(e){return e==null?`<nil>`:typeof e==`string`?`string`:typeof e==`boolean`?`bool`:typeof e==`bigint`?`int64`:typeof e==`number`?Number.isInteger(e)?`int`:`float64`:Array.isArray(e)?`[]interface {}`:e instanceof Map||typeof e==`object`?`map[string]interface {}`:typeof e}function ud(e,t){let n=``,r=!1;for(let i=0;i<e.length;i++){let a=e[i],o=typeof a==`string`;i>0&&!r&&!o&&(n+=` `),n+=dd(a,t),r=o}return n}function dd(e,t){return e==null?`<nil>`:typeof e==`string`?e:t(e)}const fd={"\0":`�`,'"':`&#34;`,"'":`&#39;`,"&":`&amp;`,"<":`&lt;`,">":`&gt;`};function pd(e){return e.replace(/[\0"'&<>]/g,e=>fd[e]??e)}const md={"\\":`\\\\`,"'":`\\'`,'"':`\\"`,"<":`\\u003C`,">":`\\u003E`,"&":`\\u0026`,"=":`\\u003D`},hd=/^[\p{L}\p{M}\p{N}\p{P}\p{S}]$/u;function gd(e){let t=``;for(let n of e){let e=md[n];if(e!==void 0){t+=e;continue}let r=n.codePointAt(0);if(r<32||r>=128&&!hd.test(n)){t+=`\\u${r.toString(16).toUpperCase().padStart(4,`0`)}`;continue}t+=n}return t}const _d=new TextEncoder;function vd(e){let t=``,n=_d.encode(e);for(let e of n)e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===45||e===46||e===95||e===126?t+=String.fromCharCode(e):e===32?t+=`+`:t+=`%${e.toString(16).toUpperCase().padStart(2,`0`)}`;return t}function yd(e,t,n,r){let i=``,a=0,o=0;for(;o<e.length;){let s=e[o];if(s!==`%`){i+=s,o+=1;continue}if(e[o+1]===`%`){i+=`%`,o+=2;continue}let c=o+1;for(;c<e.length&&`+-# 0`.includes(e[c]??``);)c+=1;for(;c<e.length&&e[c]!==void 0&&/[0-9]/.test(e[c]);)c+=1;if(e[c]===`.`)for(c+=1;c<e.length&&e[c]!==void 0&&/[0-9]/.test(e[c]);)c+=1;let l=e[c],u=e.slice(o+1,c),d=t[a++];i+=bd(l??``,u,d,n,r),o=c+1}return i}function bd(e,t,n,r,i){switch(e){case`s`:return typeof n==`string`?xd(t,n):xd(t,dd(n,r));case`d`:return typeof n!=`number`&&typeof n!=`bigint`?`%!${e}(${ld(n)}=${dd(n,r)})`:xd(t,String(typeof n==`bigint`?n:Math.trunc(n)));case`v`:return xd(t,Sd(n,r,i));case`q`:return xd(t,JSON.stringify(dd(n,r)));case`f`:{if(typeof n!=`number`&&typeof n!=`bigint`)return`%!${e}(${ld(n)}=${dd(n,r)})`;let i=t.includes(`.`)?Number(t.split(`.`)[1]):6;return xd(t,Number(n).toFixed(i))}case`t`:return xd(t,ed(n)?`true`:`false`);case`x`:if(typeof n==`string`){let e=new TextEncoder().encode(n),r=``;for(let t of e)r+=t.toString(16).padStart(2,`0`);return xd(t,r)}return typeof n!=`number`&&typeof n!=`bigint`?`%!${e}(${ld(n)}=${dd(n,r)})`:typeof n==`bigint`?xd(t,n.toString(16)):xd(t,Math.trunc(n).toString(16));default:return`%!${e}(${ld(n)}=${dd(n,r)})`}}function xd(e,t){let n=e.match(/^([+\-# 0]*)/)?.[1]??``,r=e.slice(n.length).match(/^(\d+)/);if(!r)return t;let i=Number(r[1]);if(t.length>=i)return t;let a=` `.repeat(i-t.length);return n.includes(`-`)?t+a:a+t}function Sd(e,t,n){return e==null?`<nil>`:typeof e==`string`?e:n(e)?t(e):Array.isArray(e)?`[${e.map(e=>Sd(e,t,n)).join(` `)}]`:e instanceof Map?Cd([...e.entries()],t,n):wd(e)?Cd(Object.entries(e),t,n):String(e)}function Cd(e,t,n){let r=e=>Sd(e,t,n),i=e=>typeof e==`number`||typeof e==`bigint`,a=([e],[t])=>{if(i(e)&&i(t))return e<t?-1:+(e>t);if(i(e)!==i(t))return i(e)?-1:1;let[n,a]=[r(e),r(t)];return n<a?-1:+(n>a)};return`map[${[...e].sort(a).map(([e,t])=>`${r(e)}:${r(t)}`).join(` `)}]`}function wd(e){if(typeof e!=`object`||!e||Array.isArray(e)||e instanceof Map||e instanceof Set)return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype}function Td(e){return{dot:e,root:e,parent:void 0,vars:new Map}}function Ed(e,t){return{dot:t,root:e.root,parent:e,vars:new Map}}function Dd(e,t){let n=e;for(;n!==void 0;){if(n.vars.has(t))return{found:!0,value:n.vars.get(t)};n=n.parent}return{found:!1}}function Od(e,t,n){e.vars.set(t,n)}const kd=new Set([`default`,`zero`,`error`]);function Ad(e){if(e===void 0)return`default`;if(kd.has(e))return e;throw Error(`EngineConfig.missingKey: expected "default" | "zero" | "error", got ${jd(e)}`)}function jd(e){return typeof e==`string`?JSON.stringify(e):e===null?`null`:e===void 0?`undefined`:typeof e==`bigint`?`${e}n`:typeof e==`number`||typeof e==`boolean`?String(e):typeof e==`symbol`?e.toString():typeof e==`function`?`[Function]`:`[${typeof e}]`}function Md(e){if(e!==void 0){if(typeof e!=`object`||!e)throw Error(`EngineConfig.delims: expected { left, right } object, got ${jd(e)}`);if(typeof e.left!=`string`||e.left.length===0)throw Error(`EngineConfig.delims.left: expected non-empty string, got ${jd(e.left)}`);if(typeof e.right!=`string`||e.right.length===0)throw Error(`EngineConfig.delims.right: expected non-empty string, got ${jd(e.right)}`);return{left:e.left,right:e.right}}}const Nd=Object.freeze({kind:`break`}),Pd=Object.freeze({kind:`continue`}),Fd={kind:`none`};let Id;(class e{source;_evaluate;_defines;_referencedFunctions;_referencedCalls;constructor(e,t,n,r,i){this.source=e,this._evaluate=t,this._defines=n,this._referencedFunctions=r,this._referencedCalls=i}static{Id=(t,n,r,i,a)=>new e(t,n,r,i,a)}defines(){return this._defines}evaluate(e){return this._evaluate(e)}referencedFunctions(){return this._referencedFunctions}referencedCalls(){return this._referencedCalls}});function Ld(e){let t=new Set,n=e=>{Gu(e,e=>{e.type===`Identifier`&&t.add(e.ident)})};n(e.root);for(let t of e.ownDefines.values())n(t.list);return t}const Rd={kind:`dynamic`};function zd(e){switch(e.type){case`String`:return{kind:`literal`,value:e.value};case`Bool`:return{kind:`literal`,value:e.value};case`Nil`:return{kind:`literal`,value:null};case`Number`:{let t=af(e);return typeof t==`number`||typeof t==`bigint`?{kind:`literal`,value:t}:Rd}case`Pipe`:{if(e.decls.length!==0||e.cmds.length!==1)return Rd;let t=e.cmds[0];if(t===void 0)return Rd;let n=t.args[0];return n===void 0||n.type!==`Identifier`?Rd:{kind:`call`,name:n.ident,args:t.args.slice(1).map(zd)}}default:return Rd}}function Bd(e){let t=[],n=e=>{Gu(e,e=>{if(e.type!==`Command`)return;let n=e.args[0];if(n===void 0||n.type!==`Identifier`)return;let r=e.args.slice(1).map(zd);t.push({name:n.ident,args:r.map(e=>e.kind===`literal`&&typeof e.value==`string`?e.value:null),argExprs:r})})};n(e.root);for(let t of e.ownDefines.values())n(t.list);return t}var Vd=class{fromString;toString;isT;funcs;missingKey;delims;constructor(e){this.fromString=e.fromString;let t=Object.hasOwn(e,`toString`)?e.toString:void 0;this.toString=t??Jd,this.isT=e.isT??Hd,this.missingKey=Ad(e.missingKey),this.delims=Md(e.delims),this.funcs={...rd(this.toString,this.isT),...e.funcs??{}}}parse(e,t){let n=ju(e,this.delims,t);return Id(n.source,e=>this.evalParsed(n,e),n.defines,Ld(n),Bd(n))}compile(e){let t=this.parse(e);return e=>t.evaluate(e)}evaluate(e,t){return e.evaluate(t)}evalParsed(e,t){let n=[],r=Td(t),i={out:n,defines:e.defines,source:e.source};return this.evalList(e.root,r,i),n}evalList(e,t,n){for(let r of e.nodes)this.evalNode(r,t,n)}evalNode(e,t,n){switch(e.type){case`Text`:n.out.push(this.fromString(e.text));return;case`Comment`:return;case`Action`:{let r=this.evalAction(e,t,n);e.pipe.decls.length===0&&this.emitFromValue(r,n);return}case`List`:this.evalList(e,t,n);return;case`If`:this.evalIf(e,t,n);return;case`Range`:this.evalRange(e,t,n);return;case`With`:this.evalWith(e,t,n);return;case`Break`:throw Nd;case`Continue`:throw Pd;case`Template`:this.evalTemplateInvoke(e,t,n);return;case`Block`:this.evalBlock(e,t,n);return;case`Pipe`:case`Command`:case`Identifier`:case`Field`:case`Variable`:case`Chain`:case`Dot`:case`Nil`:case`Bool`:case`Number`:case`String`:throw new ou(`unexpected ${e.type} at statement position`,e.pos,{source:n.source});default:mu(e)}}evalIf(e,t,n){ed(this.evalPipe(e.pipe,t,n))?this.evalList(e.list,t,n):e.elseList&&this.evalList(e.elseList,t,n)}evalWith(e,t,n){let r=this.evalPipe(e.pipe,t,n);if(ed(r)){let i=Ed(t,r);this.evalList(e.list,i,n)}else e.elseList&&this.evalList(e.elseList,t,n)}evalRange(e,t,n){let r=this.evalPipeWithoutDecls(e.pipe,t,n),i=e.pipe.decls,a=tf(r);try{if(a.length===0){e.elseList&&this.evalList(e.elseList,t,n);return}for(let[r,o]of a){let a=Ed(t,o);if(i.length===1)Od(a,i[0]?.idents[0]??`$`,o);else if(i.length>=2){let e=i[0]?.idents[0]??`$`,t=i[1]?.idents[0]??`$`;Od(a,e,r),Od(a,t,o)}try{this.evalList(e.list,a,n)}catch(e){if(e===Pd)continue;throw e}}}catch(e){if(e===Nd)return;throw e}}evalTemplateInvoke(e,t,n){let r=ku(n.defines,e.name);if(!r)throw new ou(`template ${JSON.stringify(e.name)} is not defined`,e.pos,{source:n.source});let i=Ed(t,e.pipe?this.evalPipe(e.pipe,t,n):t.dot);this.evalList(r.list,i,{out:n.out,defines:n.defines,source:r.source})}evalBlock(e,t,n){let r=Ed(t,e.pipe?this.evalPipe(e.pipe,t,n):t.dot),i=ku(n.defines,e.name)??{list:e.list,source:n.source};this.evalList(i.list,r,{out:n.out,defines:n.defines,source:i.source})}evalAction(e,t,n){return this.evalPipe(e.pipe,t,n)}evalPipe(e,t,n){if(e.cmds.length===0)throw new ou(`empty pipeline`,e.pos,{source:n.source});let r=this.evalCommand(e.cmds[0],t,n,Fd);for(let i=1;i<e.cmds.length;i++){let a=e.cmds[i];r=this.evalCommand(a,t,n,{kind:`value`,value:r})}if(e.decls.length>0)for(let n of e.decls)Od(t,n.idents[0]??`$`,r);return r}evalPipeWithoutDecls(e,t,n){let r={type:`Pipe`,pos:e.pos,decls:[],isAssign:!1,cmds:e.cmds};return this.evalPipe(r,t,n)}evalCommand(e,t,n,r){if(e.args.length===0)throw new ou(`empty command`,e.pos,{source:n.source});let i=e.args[0];if(i.type!==`Identifier`){if(e.args.length>1)throw new ou(`cannot apply arguments to a ${i.type} primary; only functions take arguments`,e.pos,{source:n.source});return this.evalPrimary(i,t,n)}let a=this.funcs[i.ident];if(!a)throw new su(i.ident,i.pos,{source:n.source,available:Object.keys(this.funcs)});let o=e.args.slice(1),s=$u(a),c=o.map(e=>s?()=>this.evalPrimary(e,t,n):this.evalPrimary(e,t,n));if(r.kind===`value`){let e=r.value;c.push(s?()=>e:e)}Wd(i.ident,a.argTypes,c,e.pos,n.source,this.toString,a.argTypePattern,this.fromString,this.isT);try{return a.fn(...c)}catch(t){throw t instanceof cu?new cu(t.funcName,t.argIndex,t.expected,t.receivedSummary,e.pos,{source:n.source}):t instanceof uu?new uu(t.message,e.pos,{source:n.source}):t}}evalPrimary(e,t,n){switch(e.type){case`Dot`:return t.dot;case`Nil`:return null;case`Bool`:return e.value;case`Number`:return af(e);case`String`:return e.value;case`Field`:return this.resolveFieldChain(t.dot,e.idents,e.pos,n);case`Variable`:return this.resolveVariable(e.idents,t,e.pos,n);case`Identifier`:{let t=this.funcs[e.ident];if(!t)throw new su(e.ident,e.pos,{source:n.source,available:Object.keys(this.funcs)});return Wd(e.ident,t.argTypes,[],e.pos,n.source,this.toString,t.argTypePattern,this.fromString,this.isT),t.fn()}case`Chain`:return this.resolveFieldChain(this.evalPrimary(e.node,t,n),e.fields,e.pos,n);case`Pipe`:return this.evalPipe(e,t,n);default:throw new ou(`cannot evaluate ${e.type} as a value`,e.pos,{source:n.source})}}resolveFieldChain(e,t,n,r){let i=Yu(e,t);if(i!==qu)return i;if(this.missingKey===`error`)throw new lu(t,n,{source:r.source})}resolveVariable(e,t,n,r){let i=e[0]??`$`;if(i===`$`){let i=e.slice(1);return i.length===0?t.root:this.resolveFieldChain(t.root,i,n,r)}let a=Dd(t,i);if(!a.found)throw new ou(`undefined variable ${i}`,n,{source:r.source});let o=e.slice(1);return o.length===0?a.value:this.resolveFieldChain(a.value,o,n,r)}emitFromValue(e,t){if(e==null){t.out.push(this.fromString(`<no value>`));return}if(typeof e==`string`){t.out.push(this.fromString(e));return}if(typeof e==`number`||typeof e==`boolean`||typeof e==`bigint`){t.out.push(this.fromString(String(e)));return}if(this.isT(e)){t.out.push(e);return}t.out.push(this.fromString(Sd(e,this.toString,this.isT)))}};const Hd=e=>typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Map);function Ud(e){return new Vd(e)}function Wd(e,t,n,r,i,a=Jd,o,s=qd,c=Hd){let l=Gd(t,o),u=-1,d=-1;for(let t=0;t<n.length;t++){let o=l(t),f=n[t];if(!Kd(o,f,a,c))throw new cu(e,t+1,$d(o),ef(f),r,{source:i});if(o===`liftable`&&typeof f==`string`&&(n[t]=s(f)),o===`int`?n[t]=Math.trunc(Number(f)):o===`float`&&(n[t]=Number(f)),o===`ordered`){if(u===-1)u=t;else if(!Xd(n[u],f))throw new cu(e,t+1,`${$d(`ordered`)} of the same kind as ${ef(n[u])}`,ef(f),r,{source:i})}if(o===`comparable`){if(d===-1)d=t;else if(!Zd(n[d],f))throw new cu(e,t+1,`${$d(`comparable`)} of the same kind as ${ef(n[d])}`,ef(f),r,{source:i})}}}function Gd(e,t){if(e.length===0)return()=>`value`;if(t===`alternating`){let t=e.length;return n=>e[n%t]}let n=e[e.length-1];return t=>t<e.length?e[t]:n}function Kd(e,t,n,r){switch(e){case`truthy`:case`reflective`:case`value`:return!0;case`string`:return typeof t==`string`;case`int`:return typeof t==`number`&&Number.isFinite(t)||typeof t==`bigint`&&Number.isSafeInteger(Number(t));case`float`:return typeof t==`number`||typeof t==`bigint`&&Number.isFinite(Number(t));case`bool`:return typeof t==`boolean`;case`ordered`:return typeof t==`string`||typeof t==`number`||typeof t==`bigint`||typeof t==`boolean`;case`T`:return r(t);case`list`:return Array.isArray(t);case`dict`:return wd(t);case`sized`:return typeof t==`string`||Array.isArray(t)||t instanceof Map||t instanceof Set||wd(t);case`comparable`:return t==null||typeof t==`string`||typeof t==`number`||typeof t==`bigint`||typeof t==`boolean`||Array.isArray(t)||t instanceof Map||t instanceof Set||wd(t);case`callable`:return typeof t==`function`;case`collection`:return typeof t==`string`||Array.isArray(t)||t instanceof Map||wd(t);case`index-key`:return typeof t==`string`||typeof t==`number`||typeof t==`bigint`;case`sliceable`:return typeof t==`string`||Array.isArray(t);case`stringifiable`:if(typeof t==`string`)return!0;try{return n(t),!0}catch{return!1}case`liftable`:return typeof t==`string`||r(t);case`serializable`:return Yd(t);default:throw Error(`invalid ArgType: ${String(e)}`)}}function qd(e){return e}function Jd(e){if(typeof e==`string`)return e;if(e==null)return`<nil>`;if(typeof e==`number`||typeof e==`bigint`||typeof e==`boolean`)return String(e);throw new cu(`<engine.toString>`,1,`string (or a consumer-supplied toString that flattens T)`,ef(e),{line:0,column:0,offset:0})}function Yd(e){try{return JSON.stringify(e)!==void 0}catch{return!1}}function Xd(e,t){return typeof e==typeof t||typeof e==`number`&&typeof t==`bigint`||typeof e==`bigint`&&typeof t==`number`}function Zd(e,t){let n=Qd(e),r=Qd(t);return n===`nil`||r===`nil`?!0:n===r}function Qd(e){return e==null?`nil`:typeof e==`string`?`string`:typeof e==`number`||typeof e==`bigint`?`number`:typeof e==`boolean`?`boolean`:Array.isArray(e)?`array`:e instanceof Map?`map`:e instanceof Set?`set`:`object`}function $d(e){switch(e){case`int`:return`integer (finite number or safe-integer bigint)`;case`float`:return`float (number, including NaN/Infinity, or finite-convertible bigint)`;case`T`:return`T (consumer-defined fragment)`;case`ordered`:return`orderable primitive`;case`list`:return`list`;case`dict`:return`dict (plain object)`;case`sized`:return`sized value (string, list, map, set, or dict)`;case`comparable`:return`comparable value (orderable primitive, nil, list, dict, Map, or Set)`;case`stringifiable`:return`stringifiable value (string or convertible via the engine's toString)`;case`liftable`:return`liftable value (T or string, the latter lifted via the engine's fromString)`;case`callable`:return`callable (function value)`;case`collection`:return`collection (string, array, Map, or dict)`;case`index-key`:return`index key (number, bigint, or string)`;case`sliceable`:return`sliceable value (string or array)`;case`serializable`:return`JSON-serializable value`;case`truthy`:case`reflective`:case`value`:case`string`:case`bool`:return e;default:throw Error(`invalid ArgType: ${String(e)}`)}}function ef(e){return e===null?`null`:e===void 0?`undefined`:Array.isArray(e)?`array`:e instanceof Map?`Map`:typeof e}function tf(e){return e==null?[]:Array.isArray(e)?e.map((e,t)=>[t,e]):typeof e==`string`?[...e].map((e,t)=>[t,e]):e instanceof Map?nf([...e.entries()]):e instanceof Set?[...e.values()].map((e,t)=>[t,e]):typeof e==`object`?nf(Object.entries(e)):[]}function nf(e){return[...e].sort((e,t)=>rf(e[0],t[0]))}function rf(e,t){if((typeof e==`number`||typeof e==`bigint`)&&(typeof t==`number`||typeof t==`bigint`)){let n=typeof e==`bigint`?Number(e):e,r=typeof t==`bigint`?Number(t):t;return n===r?0:n<r?-1:1}let n=String(e),r=String(t);return n===r?0:n<r?-1:1}function af(e){if(e.intValue!==void 0){let t=e.intValue;return t>=BigInt(-(2**53-1))&&t<=BigInt(2**53-1)?Number(t):t}if(e.floatValue!==void 0)return e.floatValue;if(e.complexValue!==void 0)return e.complexValue;throw Error(`internal: NumberNode has none of intValue/floatValue/complexValue — parser invariant violated`)}function of(e){if(!/^[+-]?\d+$/.test(e))return 0;let t=Number.parseInt(e,10);return Number.isSafeInteger(t)?t:0}function sf(e){if(typeof e==`number`)return e;if(typeof e==`bigint`)return Number(e);if(typeof e==`string`){let t=Number.parseFloat(e);return Number.isNaN(t)?0:t}return typeof e==`boolean`?+!!e:0}function cf(e){if(e===``)return null;let t=1,n=e;return n[0]===`+`?n=n.slice(1):n[0]===`-`&&(t=-1,n=n.slice(1)),n===``?null:/^0x[0-9a-fA-F]+$/i.test(n)?{sign:t,digits:n.slice(2),base:16}:/^0b[01]+$/i.test(n)?{sign:t,digits:n.slice(2),base:2}:/^0o[0-7]+$/i.test(n)?{sign:t,digits:n.slice(2),base:8}:n===`0`?{sign:t,digits:`0`,base:10}:n[0]===`0`?/^0[0-7]+$/.test(n)?{sign:t,digits:n.slice(1),base:8}:null:/^[0-9]+$/.test(n)?{sign:t,digits:n,base:10}:null}function lf(e){if(typeof e==`number`){let t=Math.trunc(e);return Number.isSafeInteger(t)?t:0}if(typeof e==`bigint`){let t=Number(e);return Number.isSafeInteger(t)?t:0}if(typeof e==`string`){let t=cf(e);if(t===null)return 0;let n=t.sign*Number.parseInt(t.digits,t.base);return Number.isSafeInteger(n)?n:0}return typeof e==`boolean`?+!!e:0}function uf(e){if(typeof e==`bigint`)return e;if(typeof e==`number`)return BigInt(Math.trunc(e));if(typeof e==`string`){let t=cf(e);if(t===null)return 0n;let n=t.base===16?`0x`:t.base===2?`0b`:t.base===8?`0o`:``,r=BigInt(n+t.digits);return t.sign===-1?-r:r}return typeof e==`boolean`&&e?1n:0n}function df(e){if(!/^[+-]?[0-7]+$/.test(e))return 0;let t=e[0]===`-`?-1:1,n=e[0]===`+`||e[0]===`-`?e.slice(1):e,r=t*Number.parseInt(n,8);return Number.isSafeInteger(r)?r:0}function ff(e){return JSON.stringify(e)??`null`}function pf(){return{atoi:{fn:e=>of(e),argTypes:[`string`],returnType:`int`},int:{fn:e=>lf(e),argTypes:[`value`],returnType:`int`},int64:{fn:e=>uf(e),argTypes:[`value`]},float64:{fn:e=>sf(e),argTypes:[`value`],returnType:`float`},toDecimal:{fn:e=>df(e),argTypes:[`string`],returnType:`int`},toRawJson:{fn:e=>ff(e),argTypes:[`serializable`],returnType:`string`}}}const mf={h:36e11,m:6e10,s:1e9,ms:1e6,us:1e3,µs:1e3,ns:1};function hf(e){if(e===`0`)return 0;let t=!1,n=e;if(n.startsWith(`-`)?(t=!0,n=n.slice(1)):n.startsWith(`+`)&&(n=n.slice(1)),!n)return NaN;let r=0,i=/^(\d+(?:\.\d+)?)(ns|µs|us|ms|[smh])/;for(;n.length>0;){let e=i.exec(n);if(!e)return NaN;let t=parseFloat(e[1]??`0`),a=e[2];r+=t*mf[a],n=n.slice(e[0].length)}return t?-r:r}function gf(e){if(e===0)return`0s`;let t=!1,n=e;n<0&&(t=!0,n=-n);let r;return r=n<mf.us?`${Math.floor(n)}ns`:n<mf.ms?_f(n,mf.us,3,`µs`):n<mf.s?_f(n,mf.ms,6,`ms`):vf(n),t?`-${r}`:r}function _f(e,t,n,r){let i=Math.floor(e/t),a=Math.round(e%t);return a===0?`${i}${r}`:`${i}.${String(a).padStart(n,`0`).replace(/0+$/,``)}${r}`}function vf(e){let t=Math.floor(e/mf.h);e-=t*mf.h;let n=Math.floor(e/mf.m);e-=n*mf.m;let r=Math.floor(e/mf.s),i=e-r*mf.s,a=i===0?`${r}s`:`${r}.${String(Math.round(i)).padStart(9,`0`).replace(/0+$/,``)}s`;return t>0?`${t}h${n}m${a}`:n>0?`${n}m${a}`:a}function yf(e){return e*mf.s}function bf(e){if(e instanceof Date)return e;if(typeof e==`bigint`)return new Date(Number(e)*1e3);if(typeof e==`number`)return new Date(e*1e3);if(typeof e==`string`){let t=new Date(e);if(!Number.isNaN(t.getTime()))return t;throw Error(`sprig: cannot parse date value ${JSON.stringify(e)}`)}throw Error(`sprig: unsupported date type: ${typeof e}`)}function xf(e,t){let n=t().getTime()-bf(e).getTime();return gf(Math.round(n/1e3)*1e9)}const Sf=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],Cf=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],wf=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],Tf=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`];function Ef(e){return e<10?`0${e}`:String(e)}function Df(e){return e<10?`00${e}`:e<100?`0${e}`:String(e)}function Of(e){return e<10?` ${e}`:String(e)}function kf(e){let t=e>=0?`+`:`-`,n=Math.abs(e);return`${t}${Ef(Math.floor(n/60))}${Ef(n%60)}`}function Af(e){let t=e>=0?`+`:`-`,n=Math.abs(e);return`${t}${Ef(Math.floor(n/60))}:${Ef(n%60)}`}function jf(e){return`${e>=0?`+`:`-`}${Ef(Math.floor(Math.abs(e)/60))}`}function Mf(e){return e===0?`Z`:kf(e)}function Nf(e){return e===0?`Z`:Af(e)}function Pf(e){return e===0?`Z`:jf(e)}function Ff(e,t,n){let r=e*1e6,i=String(r).padStart(9,`0`).slice(0,t);return n?i.replace(/0+$/,``):i}const If=[[`.000000000`,e=>`.${Ff(e.ms,9,!1)}`],[`.999999999`,e=>{let t=Ff(e.ms,9,!0);return t?`.${t}`:``}],[`.000000`,e=>`.${Ff(e.ms,6,!1)}`],[`.999999`,e=>{let t=Ff(e.ms,6,!0);return t?`.${t}`:``}],[`.000`,e=>`.${Df(e.ms)}`],[`.999`,e=>{let t=Df(e.ms).replace(/0+$/,``);return t?`.${t}`:``}],[`January`,e=>Sf[e.month-1]??`January`],[`Monday`,e=>wf[e.weekday]??`Monday`],[`Z07:00`,e=>Nf(e.offsetMinutes)],[`-07:00`,e=>Af(e.offsetMinutes)],[`Z0700`,e=>Mf(e.offsetMinutes)],[`-0700`,e=>kf(e.offsetMinutes)],[`2006`,e=>String(e.year)],[`Jan`,e=>Cf[e.month-1]??`Jan`],[`Mon`,e=>Tf[e.weekday]??`Mon`],[`MST`,e=>e.tzAbbr],[`-07`,e=>jf(e.offsetMinutes)],[`Z07`,e=>Pf(e.offsetMinutes)],[`15`,e=>Ef(e.hour)],[`01`,e=>Ef(e.month)],[`02`,e=>Ef(e.day)],[`_2`,e=>Of(e.day)],[`03`,e=>Ef(e.hour12)],[`04`,e=>Ef(e.minute)],[`05`,e=>Ef(e.second)],[`06`,e=>Ef(e.year%100)],[`PM`,e=>e.hour>=12?`PM`:`AM`],[`pm`,e=>e.hour>=12?`pm`:`am`],[`1`,e=>String(e.month)],[`2`,e=>String(e.day)],[`3`,e=>String(e.hour12)],[`4`,e=>String(e.minute)],[`5`,e=>String(e.second)]];function Lf(e,t){let n=``,r=0;for(;r<e.length;){let i=!1;for(let[a,o]of If)if(e.startsWith(a,r)){n+=o(t),r+=a.length,i=!0;break}i||(n+=e[r++])}return n}const Rf={year:`numeric`,month:`2-digit`,day:`2-digit`,weekday:`long`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hour12:!1};function zf(e){let t=new Map;for(let n of e)t.set(n.type,n.value);return t}const Bf=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`];function Vf(e,t){let n;try{new Intl.DateTimeFormat(`en-US`,{timeZone:t}),n=t}catch{n=`UTC`}let r=zf(new Intl.DateTimeFormat(`en-US`,{...Rf,timeZone:n}).formatToParts(e)),i=parseInt(r.get(`hour`)??`0`,10)%24,a=zf(new Intl.DateTimeFormat(`en-US`,{timeZone:n,timeZoneName:`short`}).formatToParts(e)).get(`timeZoneName`)??n,o=Hf(zf(new Intl.DateTimeFormat(`en-US`,{timeZone:n,timeZoneName:`shortOffset`}).formatToParts(e)).get(`timeZoneName`)??`GMT`),s=Bf.indexOf(r.get(`weekday`)??`Sunday`);return{year:parseInt(r.get(`year`)??`2000`,10),month:parseInt(r.get(`month`)??`1`,10),day:parseInt(r.get(`day`)??`1`,10),weekday:s===-1?0:s,hour:i,hour12:i%12||12,minute:parseInt(r.get(`minute`)??`0`,10),second:parseInt(r.get(`second`)??`0`,10),ms:e.getUTCMilliseconds(),tzAbbr:a,offsetMinutes:o}}function Hf(e){if(e===`GMT`||e===`UTC`)return 0;let t=e.match(/^GMT([+-])(\d{1,2})(?::(\d{2}))?$/);if(!t)return 0;let n=t[1]===`+`?1:-1,r=parseInt(t[2]??`0`,10),i=parseInt(t[3]??`0`,10);return n*(r*60+i)}function Uf(){return Intl.DateTimeFormat().resolvedOptions().timeZone}function Wf(e,t){return Lf(e,Vf(bf(t),Uf()))}function Gf(e,t,n){return Lf(e,Vf(bf(t),n))}function Kf(e,t){let n=bf(t),r=hf(e);return Number.isNaN(r)?n:new Date(n.getTime()+r/1e6)}function qf(e){if(typeof e==`string`){let t=parseInt(e,10);return Number.isNaN(t)?`0s`:gf(yf(t))}return typeof e==`bigint`?gf(yf(Number(e))):typeof e==`number`?gf(yf(e)):`0s`}const Jf=36e11*24*365,Yf=36e11*24*30,Xf=36e11*24,Zf=36e11,Qf=6e10,$f=1e9;function ep(e){let t=hf(String(e));if(Number.isNaN(t))return`0s`;let n=Math.abs(t);return n>Jf?`${Math.floor(n/Jf)}y`:n>Yf?`${Math.floor(n/Yf)}mo`:n>Xf?`${Math.floor(n/Xf)}d`:n>Zf?`${Math.floor(n/Zf)}h`:n>Qf?`${Math.floor(n/Qf)}m`:n>$f?`${Math.floor(n/$f)}s`:`0s`}function tp(e){let t=Vf(bf(e),Uf());return`${t.year}-${String(t.month).padStart(2,`0`)}-${String(t.day).padStart(2,`0`)}`}function np(e,t){let n=Vf(bf(e),t);return`${n.year}-${String(n.month).padStart(2,`0`)}-${String(n.day).padStart(2,`0`)}`}function rp(e){return e()}const ip=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],ap=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`];function op(){return{year:2e3,month:1,day:1,hour:0,minute:0,second:0,ms:0,offsetMinutes:0,isPM:!1,hour12:!1}}function sp(e,t,n){return[e.slice(t,t+n),t+n]}function cp(e,t,n,r){let i=t;for(;i<e.length&&i-t<r&&e.charCodeAt(i)>=48&&e.charCodeAt(i)<=57;)i++;if(i-t<n)throw Error(`sprig toDate: expected ${n}-${r} digits at pos ${t}`);return[parseInt(e.slice(t,i),10),i]}function lp(e,t){for(let[n,r]of ip.entries())if(e.startsWith(r,t))return[n+1,t+r.length];throw Error(`sprig toDate: expected month name at pos ${t}`)}function up(e,t){for(let[n,r]of ap.entries())if(e.startsWith(r,t))return[n+1,t+r.length];throw Error(`sprig toDate: expected short month name at pos ${t}`)}function dp(e,t){for(let n of[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`])if(e.startsWith(n,t))return t+n.length;throw Error(`sprig toDate: expected weekday name at pos ${t}`)}function fp(e,t){for(let n of[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`])if(e.startsWith(n,t))return t+n.length;throw Error(`sprig toDate: expected short weekday name at pos ${t}`)}function pp(e,t){if(e[t]===` `){let[n,r]=cp(e,t+1,1,1);return[n,r]}return cp(e,t,1,2)}function mp(e,t,n){let r=e[t]===`+`?1:e[t]===`-`?-1:0;if(r===0)throw Error(`sprig toDate: expected +/- at pos ${t}`);let i=t+1,[a,o]=cp(e,i,2,2);i=o;let s=0;if(n&&e[i]===`:`){let[t,n]=cp(e,i+1,2,2);s=t,i=n}else if(!n){let[t,n]=cp(e,i,2,2);s=t,i=n}return[r*(a*60+s),i]}function hp(e,t,n,r){if(e[t]===`Z`)return[0,t+1];if(r){let n=e[t]===`+`?1:e[t]===`-`?-1:0;if(n===0)throw Error(`sprig toDate: expected Z or +/- at pos ${t}`);let[r,i]=cp(e,t+1,2,2);return[n*r*60,i]}return mp(e,t,n)}function gp(e,t){let n=t;for(;n<e.length&&e.charCodeAt(n)>=65&&e.charCodeAt(n)<=90;)n++;if(n===t)throw Error(`sprig toDate: expected timezone abbreviation at pos ${t}`);return n}function _p(e,t,n){let[r,i]=sp(e,t,n),a=parseInt(r.padEnd(9,`0`),10);return[Math.round(a/1e6),i]}function vp(e,t,n,r){let i={...r};switch(e){case`January`:{let[e,r]=lp(t,n);return i.month=e,[r,i]}case`Monday`:return[dp(t,n),i];case`Jan`:{let[e,r]=up(t,n);return i.month=e,[r,i]}case`Mon`:return[fp(t,n),i];case`2006`:{let[e,r]=cp(t,n,4,4);return i.year=e,[r,i]}case`06`:{let[e,r]=cp(t,n,2,2);return i.year=e<70?2e3+e:1900+e,[r,i]}case`01`:{let[e,r]=cp(t,n,2,2);return i.month=e,[r,i]}case`1`:{let[e,r]=cp(t,n,1,2);return i.month=e,[r,i]}case`_2`:{let[e,r]=pp(t,n);return i.day=e,[r,i]}case`02`:{let[e,r]=cp(t,n,2,2);return i.day=e,[r,i]}case`2`:{let[e,r]=cp(t,n,1,2);return i.day=e,[r,i]}case`15`:{let[e,r]=cp(t,n,2,2);return i.hour=e,[r,i]}case`03`:{let[e,r]=cp(t,n,2,2);return i.hour=e,i.hour12=!0,[r,i]}case`3`:{let[e,r]=cp(t,n,1,2);return i.hour=e,i.hour12=!0,[r,i]}case`04`:{let[e,r]=cp(t,n,2,2);return i.minute=e,[r,i]}case`4`:{let[e,r]=cp(t,n,1,2);return i.minute=e,[r,i]}case`05`:{let[e,r]=cp(t,n,2,2);return i.second=e,[r,i]}case`5`:{let[e,r]=cp(t,n,1,2);return i.second=e,[r,i]}case`PM`:case`pm`:{let e=t.slice(n,n+2).toLowerCase();if(e!==`am`&&e!==`pm`)throw Error(`sprig toDate: expected AM/PM at pos ${n}, got ${JSON.stringify(t.slice(n,n+2))}`);return i.isPM=e===`pm`,i.hour12=!0,[n+2,i]}case`MST`:return[gp(t,n),i];case`-0700`:{let[e,r]=mp(t,n,!1);return i.offsetMinutes=e,[r,i]}case`-07:00`:{let[e,r]=mp(t,n,!0);return i.offsetMinutes=e,[r,i]}case`-07`:{let e=t[n]===`+`?1:t[n]===`-`?-1:0;if(e===0)throw Error(`sprig toDate: expected +/- at pos ${n}`);let[r,a]=cp(t,n+1,2,2);return i.offsetMinutes=e*r*60,[a,i]}case`Z0700`:{let[e,r]=hp(t,n,!1,!1);return i.offsetMinutes=e,[r,i]}case`Z07:00`:{let[e,r]=hp(t,n,!0,!1);return i.offsetMinutes=e,[r,i]}case`Z07`:{let[e,r]=hp(t,n,!1,!0);return i.offsetMinutes=e,[r,i]}case`.000000000`:{if(t[n]!==`.`)throw Error(`sprig toDate: expected . at pos ${n}`);let[e,r]=_p(t,n+1,9);return i.ms=e,[r,i]}case`.999999999`:{if(t[n]!==`.`)return[n,i];let e=n+1,r=e;for(;r<t.length&&t.charCodeAt(r)>=48&&t.charCodeAt(r)<=57;)r++;let a=t.slice(e,r).padEnd(9,`0`);return i.ms=Math.round(parseInt(a,10)/1e6),[r,i]}case`.000000`:{if(t[n]!==`.`)throw Error(`sprig toDate: expected . at pos ${n}`);let[e,r]=_p(t,n+1,6);return i.ms=e,[r,i]}case`.999999`:{if(t[n]!==`.`)return[n,i];let e=n+1,r=e;for(;r<t.length&&t.charCodeAt(r)>=48&&t.charCodeAt(r)<=57;)r++;let a=t.slice(e,r).padEnd(9,`0`);return i.ms=Math.round(parseInt(a,10)/1e6),[r,i]}case`.000`:{if(t[n]!==`.`)throw Error(`sprig toDate: expected . at pos ${n}`);let[e,r]=_p(t,n+1,3);return i.ms=e,[r,i]}case`.999`:{if(t[n]!==`.`)return[n,i];let e=n+1,r=e;for(;r<t.length&&t.charCodeAt(r)>=48&&t.charCodeAt(r)<=57;)r++;let a=t.slice(e,r).padEnd(3,`0`);return i.ms=parseInt(a,10),[r,i]}}throw Error(`sprig toDate: unhandled token ${e}`)}const yp=`.000000000,.999999999,.000000,.999999,.000,.999,January,Monday,Z07:00,-07:00,Z0700,-0700,2006,Jan,Mon,MST,-07,Z07,15,01,02,_2,03,04,05,06,PM,pm,1,2,3,4,5`.split(`,`);function bp(e,t){let n=0,r=0,i=op();for(;n<e.length;){let a=!1;for(let o of yp)if(e.startsWith(o,n)){let[e,s]=vp(o,t,r,i);r=e,i=s,n+=o.length,a=!0;break}if(!a){let i=e.charAt(n);if(t[r]!==i)throw Error(`sprig toDate: expected ${JSON.stringify(i)} at pos ${r}, got ${JSON.stringify(t[r])}`);n++,r++}}if(r!==t.length)throw Error(`sprig toDate: extra characters at pos ${r}: ${JSON.stringify(t.slice(r))}`);if(i.hour12){let e=i.hour%12;i.hour=i.isPM?e+12:e}let a=Date.UTC(i.year,i.month-1,i.day,i.hour,i.minute,i.second,i.ms)-i.offsetMinutes*60*1e3;return new Date(a)}function xp(e,t){return bp(e,t)}function Sp(e){return String(Math.floor(bf(e).getTime()/1e3))}function Cp(e=()=>new Date){return{now:{fn:()=>rp(e),argTypes:[]},date:{fn:(e,t)=>Wf(e,t),argTypes:[`string`,`value`]},dateInZone:{fn:(e,t,n)=>Gf(e,t,n),argTypes:[`string`,`value`,`string`]},dateModify:{fn:(e,t)=>Kf(e,t),argTypes:[`string`,`value`]},htmlDate:{fn:e=>tp(e),argTypes:[`value`]},htmlDateInZone:{fn:(e,t)=>np(e,t),argTypes:[`value`,`string`]},duration:{fn:e=>qf(e),argTypes:[`value`]},durationRound:{fn:e=>ep(e),argTypes:[`value`]},toDate:{fn:(e,t)=>xp(e,t),argTypes:[`string`,`string`]},ago:{fn:t=>xf(t,e),argTypes:[`value`]},unixEpoch:{fn:e=>Sp(e),argTypes:[`value`]}}}function wp(e){return e==null||e===!1?!0:typeof e==`number`?e===0||Number.isNaN(e):typeof e==`bigint`?e===0n:typeof e==`string`||Array.isArray(e)?e.length===0:e instanceof Map||e instanceof Set?e.size===0:typeof e==`object`?Object.keys(e).length===0:!1}function Tp(...e){for(let t of e)if(!wp(t))return t}function Ep(e,t){return wp(t)?e:t}function Dp(e){return JSON.parse(e)}function Op(e,t,n){return ed(n)?e:t}function kp(e){return JSON.stringify(e)??`null`}function Ap(e){return JSON.stringify(e,null,2)??`null`}function jp(){return{default:{fn:(e,t)=>Ep(e,t),argTypes:[`value`,`truthy`]},empty:{fn:e=>wp(e),argTypes:[`truthy`]},coalesce:{fn:(...e)=>Tp(...e),argTypes:[`truthy`]},ternary:{fn:(e,t,n)=>Op(e,t,n),argTypes:[`value`,`value`,`truthy`]},fromJson:{fn:e=>Dp(e),argTypes:[`string`]},toJson:{fn:e=>kp(e),argTypes:[`serializable`],returnType:`string`},toPrettyJson:{fn:e=>Ap(e),argTypes:[`serializable`],returnType:`string`}}}function Mp(...e){let t={};for(let n=0;n<e.length;n+=2)t[e[n]]=e[n+1];return t}function Np(e){if(e.kind!==`call`||e.name!==`dict`||e.args.length%2!=0)return null;let t=[];for(let[n,r]of e.args.entries()){if(r.kind!==`literal`||n%2==0&&typeof r.value!=`string`)return null;t.push(r.value)}return Mp(...t)}function Pp(e,t){return e[t]}function Fp(e,t){return t in e}function Ip(e){return Object.keys(e)}function Lp(e,...t){let n={...e};for(let e of t)for(let[t,r]of Object.entries(e))t in n||(n[t]=r);return n}function Rp(e,...t){let n={...e};for(let e of t)Object.assign(n,e);return n}function zp(e,...t){let n=new Set(t),r={};for(let[t,i]of Object.entries(e))n.has(t)||(r[t]=i);return r}function Bp(e,...t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function Vp(e,...t){let n=[];for(let r of t)e in r&&n.push(r[e]);return n}function Hp(e,t,n){return e[t]=n,e}function Up(e,t){return delete e[t],e}function Wp(e){return Object.values(e)}function Gp(){return{dict:{fn:(...e)=>Mp(...e),argTypes:[`string`,`value`],argTypePattern:`alternating`},get:{fn:(e,t)=>Pp(e,t),argTypes:[`dict`,`string`]},set:{fn:(e,t,n)=>Hp(e,t,n),argTypes:[`dict`,`string`,`value`]},unset:{fn:(e,t)=>Up(e,t),argTypes:[`dict`,`string`]},keys:{fn:e=>Ip(e),argTypes:[`dict`]},values:{fn:e=>Wp(e),argTypes:[`dict`]},pluck:{fn:(e,...t)=>Vp(e,...t),argTypes:[`string`,`dict`]},pick:{fn:(e,...t)=>Bp(e,...t),argTypes:[`dict`,`string`]},omit:{fn:(e,...t)=>zp(e,...t),argTypes:[`dict`,`string`]},hasKey:{fn:(e,t)=>Fp(e,t),argTypes:[`dict`,`string`]},merge:{fn:(e,...t)=>Lp(e,...t),argTypes:[`dict`]},mergeOverwrite:{fn:(e,...t)=>Rp(e,...t),argTypes:[`dict`]}}}new TextEncoder,new Map(Array.from(`ABCDEFGHIJKLMNOPQRSTUVWXYZ234567`).map((e,t)=>[e,t])),new TextDecoder,new TextEncoder,new TextDecoder,new TextEncoder;function Kp(...e){for(let t of e)if(wp(t))return!1;return!0}function qp(...e){for(let t of e)if(!wp(t))return!0;return!1}function Jp(e,t){return[...e,t]}function Yp(e,t){let n=Math.max(1,e),r=[];for(let e=0;e<t.length;e+=n)r.push(t.slice(e,e+n));return r}function Xp(e){return e.filter(e=>!wp(e))}function Zp(...e){let t=[];for(let n of e)t.push(...n);return t}const Qp={line:0,column:0,offset:0};function $p(e,t,n,r){return new cu(e,t,n,r,Qp)}function em(...e){if(e.length<3)throw $p(`dig`,0,`at least 3 arguments (...keys, default, dict)`,`${e.length} argument${e.length===1?``:`s`}`);let t=e[e.length-1],n=e[e.length-2],r=e.slice(0,-2);if(!nm(t))throw $p(`dig`,e.length-1,`dict`,rm(t));for(let e=0;e<r.length;e++)if(typeof r[e]!=`string`)throw $p(`dig`,e,`string`,rm(r[e]));return tm(t,n,r,e.length)}function tm(e,t,n,r){let i=n[0];if(!Object.hasOwn(e,i))return t;let a=e[i];if(n.length===1)return a;if(!nm(a))throw $p(`dig`,r-1,`dict at intermediate key`,rm(a));return tm(a,t,n.slice(1),r)}function nm(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Map)&&!(e instanceof Set)}function rm(e){return e===null?`null`:Array.isArray(e)?`array`:e instanceof Map?`Map`:e instanceof Set?`Set`:typeof e}function im(e){return e[0]}function am(e,t){return t.some(t=>Xu(t,e))}function om(e){return e.slice(0,-1)}function sm(e){return e[e.length-1]}function cm(e){return Array.isArray(e)||typeof e==`string`?e.length:e instanceof Map||e instanceof Set?e.size:Object.keys(e).length}function lm(...e){return e}function um(e,t){return[t,...e]}function dm(e){return e.slice(1)}function fm(e){return[...e].reverse()}function pm(e,t,n){let r=t===void 0?0:t,i=n===void 0?e.length:n;return e.slice(r,i)}function mm(e){let t=[];for(let n of e)n!=null&&t.push(String(n));return t.sort()}function hm(e){let t=[];for(let n of e)t.some(e=>Xu(e,n))||t.push(n);return t}function gm(e,...t){return e.filter(e=>!t.some(t=>Xu(t,e)))}function _m(){return{list:{fn:(...e)=>lm(...e),argTypes:[`value`]},first:{fn:e=>im(e),argTypes:[`list`]},last:{fn:e=>sm(e),argTypes:[`list`]},rest:{fn:e=>dm(e),argTypes:[`list`]},initial:{fn:e=>om(e),argTypes:[`list`]},len:{fn:e=>cm(e),argTypes:[`sized`]},reverse:{fn:e=>fm(e),argTypes:[`list`]},uniq:{fn:e=>hm(e),argTypes:[`list`]},without:{fn:(e,...t)=>gm(e,...t),argTypes:[`list`,`value`]},has:{fn:(e,t)=>am(e,t),argTypes:[`value`,`list`]},compact:{fn:e=>Xp(e),argTypes:[`list`]},slice:{fn:(e,t,n)=>pm(e,t,n),argTypes:[`list`,`int`,`int`]},concat:{fn:(...e)=>Zp(...e),argTypes:[`list`]},chunk:{fn:(e,t)=>Yp(e,t),argTypes:[`int`,`list`]},prepend:{fn:(e,t)=>um(e,t),argTypes:[`list`,`value`]},append:{fn:(e,t)=>Jp(e,t),argTypes:[`list`,`value`]},sortAlpha:{fn:e=>mm(e),argTypes:[`list`],returnType:`list`},push:{fn:(e,t)=>Jp(e,t),argTypes:[`list`,`value`]},tuple:{fn:(...e)=>lm(...e),argTypes:[`value`]},dig:{fn:(...e)=>em(...e),argTypes:[`value`]},all:{fn:(...e)=>Kp(...e),argTypes:[`truthy`],returnType:`bool`},any:{fn:(...e)=>qp(...e),argTypes:[`truthy`],returnType:`bool`}}}function vm(...e){return e.reduce((e,t)=>e+t,0)}function ym(e){return e+1}function bm(e){return e+1}function xm(...e){return e.reduce((e,t)=>e+t,0)}function Sm(e){return Math.ceil(e)}function Cm(e,t){return Math.trunc(e/t)}function wm(e,t){return e/t}function Tm(e){return Math.floor(e)}function Em(...e){return e.reduce((e,t)=>t>e?t:e,-1/0)}function Dm(...e){return e.reduce((e,t)=>Math.max(e,t),-1/0)}function Om(...e){return e.reduce((e,t)=>t<e?t:e,1/0)}function km(...e){return e.reduce((e,t)=>Math.min(e,t),1/0)}function Am(e,t){return e%t}function jm(...e){return e.reduce((e,t)=>e*t,1)}function Mm(...e){return e.reduce((e,t)=>e*t,1)}function Nm(e,t=0){let n=10**t;return Math.sign(e)*Math.round(Math.abs(e)*n)/n}function Pm(e,t,n){let r=[];if(t<e){if(n>=0)return r;for(let i=e;i>t;i+=n)r.push(i);return r}if(n<=0)return r;for(let i=e;i<t;i+=n)r.push(i);return r}function Fm(...e){let t=1;switch(e.length){case 0:return``;case 1:{let n=e[0];return n<1&&(t=-1),Pm(1,n+t,t).join(` `)}case 2:{let t=e[0],n=e[1],r=n<t?-1:1;return Pm(t,n+r,r).join(` `)}case 3:{let n=e[0],r=e[1],i=e[2];return i<n&&(t=-1,r>0)?``:Pm(n,i+t,r).join(` `)}default:return``}}function Im(e,t){return e-t}function Lm(e,t){return e-t}function Rm(e){return Pm(0,e,e<0?-1:1)}function zm(){return{add:{fn:(...e)=>vm(...e),argTypes:[`int`]},sub:{fn:(e,t)=>Im(e,t),argTypes:[`int`,`int`]},mul:{fn:(...e)=>jm(...e),argTypes:[`int`]},div:{fn:(e,t)=>Cm(e,t),argTypes:[`int`,`int`]},mod:{fn:(e,t)=>Am(e,t),argTypes:[`int`,`int`]},min:{fn:(...e)=>Om(...e),argTypes:[`int`]},max:{fn:(...e)=>Em(...e),argTypes:[`int`]},floor:{fn:e=>Tm(e),argTypes:[`float`]},ceil:{fn:e=>Sm(e),argTypes:[`float`]},round:{fn:(e,t)=>Nm(e,t),argTypes:[`float`,`int`]},addf:{fn:(...e)=>xm(...e),argTypes:[`float`]},subf:{fn:(e,t)=>Lm(e,t),argTypes:[`float`,`float`]},mulf:{fn:(...e)=>Mm(...e),argTypes:[`float`]},divf:{fn:(e,t)=>wm(e,t),argTypes:[`float`,`float`]},add1:{fn:e=>ym(e),argTypes:[`int`]},add1f:{fn:e=>bm(e),argTypes:[`float`]},maxf:{fn:(...e)=>Dm(...e),argTypes:[`float`]},minf:{fn:(...e)=>km(...e),argTypes:[`float`]},biggest:{fn:(...e)=>Em(...e),argTypes:[`int`]},seq:{fn:(...e)=>Fm(...e),argTypes:[`int`],returnType:`string`},until:{fn:e=>Rm(e),argTypes:[`int`],returnType:`list`},untilStep:{fn:(e,t,n)=>Pm(e,t,n),argTypes:[`int`,`int`,`int`],returnType:`list`}}}Array.from({length:95},(e,t)=>String.fromCharCode(t+32)).join(``);function Bm(e,t){return t.length<=e||e<4?t:`${t.slice(0,e-3)}...`}function Vm(e,t,n){return t<7||n.length<t||e<0||e>n.length-t+1?n:`...${n.slice(e,e+t-6)}...`}const q={Invalid:0,Number:1,UpperCase:2,Alphabet:3,Connector:4,Punct:5,Other:6},Hm=/^[-_\s]$/,Um=/^\p{P}$/u,Wm=/^\p{L}$/u,Gm=/^\p{Lu}$/u,Km=/^\p{N}$/u;function qm(e){return e!==void 0&&Hm.test(e)}function Jm(e){return e!==void 0&&Wm.test(e)}function Ym(e){return e!==void 0&&Gm.test(e)}function Xm(e){return e!==void 0&&Km.test(e)}function Zm(e){return e!==void 0&&Um.test(e)}function Qm(e,t){if(t>=e.length)return{word:{wt:q.Invalid,text:``},next:t};let n=e[t],r=t+1;if(qm(n)){for(;r<e.length&&qm(e[r]);)r++;return{word:{wt:q.Connector,text:e.slice(t,r).join(``)},next:r}}if(Zm(n)){for(;r<e.length&&Zm(e[r]);)r++;return{word:{wt:q.Punct,text:e.slice(t,r).join(``)},next:r}}if(Ym(n)){if(r>=e.length)return{word:{wt:q.UpperCase,text:n},next:r};if(Ym(e[r])){let n=r;for(;n<e.length&&Ym(e[n]);)n++;return n<e.length&&Jm(e[n])?{word:{wt:q.UpperCase,text:e.slice(t,n-1).join(``)},next:n-1}:{word:{wt:q.UpperCase,text:e.slice(t,n).join(``)},next:n}}if(Jm(e[r])){let n=r+1;for(;n<e.length&&Jm(e[n])&&!Ym(e[n]);)n++;return{word:{wt:q.UpperCase,text:e.slice(t,n).join(``)},next:n}}return{word:{wt:q.UpperCase,text:n},next:r}}if(Jm(n)){for(;r<e.length&&Jm(e[r])&&!Ym(e[r]);)r++;return{word:{wt:q.Alphabet,text:e.slice(t,r).join(``)},next:r}}if(Xm(n)){for(;r<e.length&&Xm(e[r]);)r++;return{word:{wt:q.Number,text:e.slice(t,r).join(``)},next:r}}for(;r<e.length&&!qm(e[r])&&!Jm(e[r])&&!Xm(e[r])&&!Zm(e[r]);)r++;return{word:{wt:q.Other,text:e.slice(t,r).join(``)},next:r}}function $m(e,t,n){if(t.wt!==q.UpperCase&&t.wt!==q.Connector){e.push(t.text);return}for(let r of t.text)qm(r)?e.push(n):Ym(r)?e.push(r.toLowerCase()):e.push(r)}function eh(e,t){if(e.length===0)return``;let n=Array.from(e),r=[],{word:i,next:a}=Qm(n,0);for(;a<n.length;){i.wt!==q.Connector&&$m(r,i,t);let e=i,o=i;if({word:i,next:a}=Qm(n,a),e.wt===q.Number){for(;i.wt===q.Alphabet||i.wt===q.Number;)$m(r,i,t),{word:i,next:a}=Qm(n,a);i.wt!==q.Invalid&&i.wt!==q.Punct&&i.wt!==q.Connector&&r.push(t);continue}if(e.wt===q.Connector){$m(r,o,t);continue}if(e.wt===q.Punct)continue;if(i.wt!==q.Number){i.wt!==q.Connector&&i.wt!==q.Punct&&r.push(t);continue}if(a>=n.length)continue;let s=i;if({word:i,next:a}=Qm(n,a),i.wt!==q.Alphabet){$m(r,s,t),i.wt!==q.Connector&&i.wt!==q.Punct&&r.push(t);continue}for(r.push(t),$m(r,s,t);i.wt===q.Alphabet||i.wt===q.Number;)$m(r,i,t),{word:i,next:a}=Qm(n,a);i.wt!==q.Invalid&&i.wt!==q.Connector&&i.wt!==q.Punct&&r.push(t)}return $m(r,i,t),r.join(``).toLowerCase()}function th(e){if(e.length===0)return``;let t=Array.from(e),n=[],r=0,i=``;for(;r<t.length;){if(i=t[r],r++,!qm(i)){i=i.toUpperCase();break}n.push(i)}if(r>=t.length)return t.length>0&&n.push(i),n.join(``);for(;r<t.length;){let e=i;if(i=t[r],r++,qm(i)&&qm(e)){n.push(e);continue}qm(e)?i=i.toUpperCase():(i=i.toLowerCase(),n.push(e))}return n.push(i),n.join(``)}function nh(e){return th(e)}function rh(...e){return e.join(` `)}function ih(e,t){return t.includes(e)}function ah(e,t){return t.startsWith(e)}function oh(e,t){return t.endsWith(e)}function sh(e,t){let n=` `.repeat(Math.max(0,e));return t.split(`
49
51
  `).map(e=>n+e).join(`
50
- `)}function ih(e){let t=new TextEncoder;return e.split(/\s+/).filter(e=>e.length>0).map(e=>String.fromCharCode(...t.encode(e).slice(0,1))).join(``)}function ah(e,t){let n=[];for(let e of t){if(typeof e==`object`&&e)throw Yp(`join`,2,`list of strings/primitives`,`list element of type ${oh(e)}`);n.push(String(e))}return n.join(e)}function oh(e){return Array.isArray(e)?`array`:e instanceof Map?`Map`:e instanceof Set?`Set`:`object`}function sh(e){return Xm(e,`-`)}function ch(e){return e.toLowerCase()}function lh(e,t){return`\n${rh(e,t)}`}function uh(e){return e.replace(/\s+/g,``)}function dh(e,t,n){return n===1?e:t}function fh(...e){return e.map(e=>`"${e}"`).join(` `)}function ph(e){return e.replace(/[\\.+*?()|[\]{}^$]/g,`\\$&`)}function mh(e,t){return t.repeat(Math.max(0,e))}function hh(e,t,n){return n.split(e).join(t)}function gh(e){return Xm(e,`_`)}function _h(e,t){let n=t.split(e),r={};for(let e=0;e<n.length;e++)r[`_${e}`]=n[e];return r}function vh(e,t){return t.split(e)}function yh(e,t,n){let r=bh(n,e,t),i={};for(let e=0;e<r.length;e++)i[`_${e}`]=r[e]??``;return i}function bh(e,t,n){if(n===0)return[];let r=t===``?Array.from(e):e.split(t);if(n<0||r.length<=n)return r;let i=r.slice(0,n-1),a=r.slice(n-1).join(t);return[...i,a]}function xh(...e){return e.map(e=>`'${e}'`).join(` `)}function Sh(e,t,n){let r=t<0||t>n.length?n.length:t,i=Math.min(Math.max(0,e),r);return n.slice(i,r)}function Ch(e){let t=``;for(let n of e)wh(n)?t+=n.toLowerCase():Th(n)?t+=n.toUpperCase():t+=n;return t}function wh(e){return e!==e.toLowerCase()&&e===e.toUpperCase()}function Th(e){return e!==e.toUpperCase()&&e===e.toLowerCase()}function Eh(e){return e.replace(/\b([a-zA-Z])/g,e=>e.toUpperCase())}function Dh(e){return e.trim()}function Oh(e,t){if(e.length===0)return t;let n=new Set([...e]),r=0;for(;r<t.length&&n.has(t[r]);)r+=1;let i=t.length;for(;i>r&&n.has(t[i-1]);)--i;return t.slice(r,i)}function kh(e,t){return t.startsWith(e)?t.slice(e.length):t}function Ah(e,t){return t.endsWith(e)?t.slice(0,t.length-e.length):t}function jh(e,t){if(e<0){let n=-e;return n>=t.length?t:t.slice(t.length-n)}return e>=t.length?t:t.slice(0,e)}function Mh(e){return e.replace(/\b([A-Z])/g,e=>e.toLowerCase())}function Nh(e){return e.toUpperCase()}function Ph(e,t){return Fh(e,`
51
- `,t)}function Fh(e,t,n){if(e<=0)return n;let r=[];for(let t of n.split(`
52
- `)){let n=``;for(let i of t.split(/\s+/))i.length!==0&&(n.length===0?n=i:n.length+1+i.length<=e?n+=` ${i}`:(r.push(n),n=i));n.length>0&&r.push(n)}return r.join(t)}function Ih(e,t,n){return Fh(e,t,n)}function Lh(){return{abbrev:{fn:(e,t)=>Im(e,t),argTypes:[`int`,`string`]},abbrevboth:{fn:(e,t,n)=>Lm(e,t,n),argTypes:[`int`,`int`,`string`]},camelcase:{fn:e=>Qm(e),argTypes:[`string`],returnType:`string`},cat:{fn:(...e)=>$m(...e),argTypes:[`string`]},contains:{fn:(e,t)=>eh(e,t),argTypes:[`string`,`string`]},hasPrefix:{fn:(e,t)=>th(e,t),argTypes:[`string`,`string`]},hasSuffix:{fn:(e,t)=>nh(e,t),argTypes:[`string`,`string`]},indent:{fn:(e,t)=>rh(e,t),argTypes:[`int`,`string`]},initials:{fn:e=>ih(e),argTypes:[`string`]},join:{fn:(e,t)=>ah(e,t),argTypes:[`string`,`list`]},kebabcase:{fn:e=>sh(e),argTypes:[`string`],returnType:`string`},lower:{fn:e=>ch(e),argTypes:[`string`]},nindent:{fn:(e,t)=>lh(e,t),argTypes:[`int`,`string`]},nospace:{fn:e=>uh(e),argTypes:[`string`],returnType:`string`},plural:{fn:(e,t,n)=>dh(e,t,n),argTypes:[`string`,`string`,`int`],returnType:`string`},quote:{fn:(...e)=>fh(...e),argTypes:[`string`]},regexQuoteMeta:{fn:e=>ph(e),argTypes:[`string`],returnType:`string`},repeat:{fn:(e,t)=>mh(e,t),argTypes:[`int`,`string`]},replace:{fn:(e,t,n)=>hh(e,t,n),argTypes:[`string`,`string`,`string`]},snakecase:{fn:e=>gh(e),argTypes:[`string`],returnType:`string`},split:{fn:(e,t)=>_h(e,t),argTypes:[`string`,`string`]},splitList:{fn:(e,t)=>vh(e,t),argTypes:[`string`,`string`]},splitn:{fn:(e,t,n)=>yh(e,t,n),argTypes:[`string`,`int`,`string`],returnType:`dict`},squote:{fn:(...e)=>xh(...e),argTypes:[`string`]},substr:{fn:(e,t,n)=>Sh(e,t,n),argTypes:[`int`,`int`,`string`]},swapcase:{fn:e=>Ch(e),argTypes:[`string`],returnType:`string`},title:{fn:e=>Eh(e),argTypes:[`string`]},trim:{fn:e=>Dh(e),argTypes:[`string`]},trimAll:{fn:(e,t)=>Oh(e,t),argTypes:[`string`,`string`]},trimPrefix:{fn:(e,t)=>kh(e,t),argTypes:[`string`,`string`]},trimSuffix:{fn:(e,t)=>Ah(e,t),argTypes:[`string`,`string`]},trunc:{fn:(e,t)=>jh(e,t),argTypes:[`int`,`string`]},untitle:{fn:e=>Mh(e),argTypes:[`string`]},upper:{fn:e=>Nh(e),argTypes:[`string`]},wrap:{fn:(e,t)=>Ph(e,t),argTypes:[`int`,`string`]},wrapWith:{fn:(e,t,n)=>Ih(e,t,n),argTypes:[`int`,`string`,`string`]}}}function Rh(e){return e}function zh(e,t,n){return n===void 0?ml+fl(e)+`.`+fl(t):Bh(n)}function Bh(e){return ml+fl(e)}function Vh(e,t){return e+`.`+t}function Hh(e){return e+`.page`}const Uh=[`closeOnPick`,`paged`,`key`,`distribution`],Wh=e=>Uh.includes(e),Gh=`"closeOnPick" (bool, default false), "paged" (bool, default true), "key" (string, accordion grouping), "distribution" (one of ${Pi.map(e=>`"${e}"`).join(`, `)}; default "van-der-corput")`;function Kh(e){for(let t of Object.keys(e))if(!Wh(t))throw Error(`unknown {{ menu }} option "${t}" — the options dict takes ${Gh}`);let t=(t,n)=>{let r=e[t];if(r===void 0)return n;if(typeof r!=`boolean`)throw Error(`{{ menu }} option "${t}" must be a boolean, got ${JSON.stringify(r)} (e.g. (dict "${t}" ${String(!n)}))`);return r},n=e.key;if(n!==void 0&&typeof n!=`string`)throw Error(`{{ menu }} option "key" must be a string naming the accordion group, got ${JSON.stringify(n)}`);if(n===``)throw Error(`{{ menu }} has an empty accordion key — a shared key must be a non-empty name (or omit "key" for an independent menu)`);let r=e.distribution;if(r!==void 0&&!Fi(r))throw Error(`{{ menu }} option "distribution" must be one of: ${Pi.join(`, `)}; got ${JSON.stringify(r)}`);return{closeOnPick:t(`closeOnPick`,!1),paged:t(`paged`,!0),key:n,distribution:Li(r)}}const qh=`menu`,Jh=`a menu binds its trigger text the way a cycle action binds a display — write {{ menu "applyTheme" "▸" "▾" }} (one per state) or {{ menu "insertHere" "+" }} (one static display for both), with the rare knobs in ONE trailing dict: {{ menu "applyTheme" "▸" "▾" (dict "closeOnPick" true "paged" false "key" "pickers") }} (defaults: closeOnPick false, paged true, no key). The renderer no longer appends ▸/▾ of its own (candybar-settings-ui-aok.4), and the older positional tail ("pageAction" closeOnPick paged "key") was removed — the page cursor is synthesized from the menu's identity`,Yh=e=>e.kind===`call`&&e.name===`dict`,Xh=e=>e.kind===`literal`&&typeof e.value!=`object`,Zh=e=>Qs(``,e,2)===void 0;function Qh(e){let t=e=>({kind:`issue`,message:e}),[n,...r]=e.argExprs;if(n===void 0)return t(`with no arguments — it takes an apply-action name and its trigger text (e.g. {{ menu "applyTheme" "▸" "▾" }})`);if(n.kind!==`literal`||typeof n.value!=`string`)return t(`whose apply action is not a string literal — a menu's identity is its apply-action name, which must be a literal so it can be gated at load (e.g. {{ menu "applyTheme" "▸" "▾" }})`);let i=r[r.length-1],a=i!==void 0&&Yh(i)?i:void 0,o=a===void 0?r:r.slice(0,-1);if(o.some(Yh))return t(`whose options (dict …) is not its last argument — ${Jh}`);if(i!==void 0&&a===void 0&&!Xh(i)&&Zh(o.length-1))return t(`whose last argument is neither a literal nor a literal (dict …) — the renderer tells a display from the options dict by the value it evaluates to, so this call could be read as ${o.length} displays or as ${o.length-1} plus options, and both are legal. Make the options explicit as a trailing (dict …) — {{ menu "${n.value}" (printf "…") (printf "…") (dict) }} binds dynamic displays unambiguously — or bind the trigger text as literals`);let s=Qs(`whose trigger`,o.length,2);if(s!==void 0)return t(`${s} — ${Jh}`);let c=a===void 0?{}:kp(a);if(c===null)return t(`whose options (dict …) is not fully literal — every option value must be a literal so the menu can be gated at load (a dynamic entry like (dict "key" .x) cannot)`);let l;try{l=Kh(c)}catch(e){return t(`with invalid options — ${e.message}`)}let u=l.key;if(u!==void 0){let e=yl(u);if(e!==void 0)return t(`whose accordion key "${u}" lands in the reserved "${e}" namespace — a key is collapsed to an identifier (${JSON.stringify(u)} becomes "${Bh(u)}"), so it would share one open-state key with the synthesized accordion that owns that namespace instead of grouping only your own menus. Name the group without the reserved prefix`)}return{kind:`ok`,apply:n.value,options:l}}function $h(e){let t=zd({fromString:e=>e});try{return t.parse(e).referencedCalls().filter(e=>e.name===qh).map(Qh)}catch{return`parse-failed`}}function eg(e){let t=zd({fromString:e=>e});try{return t.parse(e).referencedFunctions().has(qh)}catch{return!1}}function tg(e,t,n){e.issues.push({path:t,message:n,line:W(e.source,[`root`])})}function ng(e,t){bl(e,t,ml,`{{ menu }} helpers`);for(let[n,r]of Object.entries(t.helpers??{}))eg(r)&&e.issues.push({path:`helpers.${n}`,message:`helper "${n}" uses {{ menu }}, but a menu must live directly in a segment template — its identity is derived from the segment it sits in, which a shared helper does not have. Inline the {{ menu }} call into each segment that needs it.`,line:W(e.source,[`helpers`,n])});let n=t.segments??{};for(let[t,r]of Object.entries(n))for(let n of[`bg`,`fg`,`when`]){let i=r[n];typeof i==`string`&&eg(i)&&tg(e,`segments.${t}.${n}`,`segment "${t}" uses {{ menu }} in its "${n}" — a menu is only valid in a segment's "template" (its placement is published only there; "${n}" needs a ${n===`when`?`predicate`:`color`}). Move the {{ menu }} into the template.`)}if(t.root!==void 0)for(let n of Xo(Us(t.root)))typeof n.when==`string`&&eg(n.when)&&tg(e,`root`,`a layout node's "when" predicate uses {{ menu }} — a menu is only valid in a segment's "template", not a node predicate. Move it into a segment.`);let r=new Set,i={},a=new Set,o=new Map;for(let[t,{template:s}]of Object.entries(n)){if(s===void 0||!eg(s))continue;let n=$h(s);if(n!==`parse-failed`)for(let s of n){if(s.kind===`issue`){tg(e,`segments.${t}`,`segment "${t}" has a {{ menu }} ${s.message}.`);continue}let{apply:n,options:c}=s;if(n===``){tg(e,`segments.${t}`,`segment "${t}" has a {{ menu }} with an empty apply-action name — an empty member aliases the absent-state sentinel ("") so the menu would render open before any click. Name the apply action.`);continue}let l=Rh(n);if(l===`closed`){tg(e,`segments.${t}`,`segment "${t}" has a {{ menu }} whose apply action is named "${Xs}", which collides with the menu's closed-state sentinel and leaves it unopenable. Rename the action.`);continue}let u=zh(t,n,c.key),d=Hh(u),f=c.key===void 0?`ind${t}${n}`:`key${c.key}`,p=[u,d].find(e=>{let t=o.get(e);return t!==void 0&&t!==f});if(p!==void 0){tg(e,`segments.${t}`,`two {{ menu }} disclosures normalize to the same state key ("${p}") but were declared differently — distinct names that differ only by non-alphanumeric characters (e.g. "a-b" vs "a_b") collapse to one key and would silently share open-state. Rename so they don't collide.`);continue}o.set(u,f),o.set(d,f);let m=Vh(u,l);if(a.has(m)){tg(e,`segments.${t}`,`two {{ menu }} disclosures resolve to the same identity ("${m}") — ${c.key===void 0?`a segment cannot contain two menus over the same apply action "${n}"`:`menus sharing key "${c.key}" must have distinct apply actions`}.`);continue}a.add(m),r.add(u),i[m]=oc(u,l)}}if(r.size===0)return;let s={};for(let e of r){s[e]=ac(e,Xs);let t=Hh(e);s[t]={kind:`state`,key:t,default:`0`},i[t]={set:t,int:!0}}t.variables={...t.variables??{},...s},t.actions={...t.actions??{},...i}}const rg=zd({fromString:e=>e}),ig=`edit.mode`,ag=`edit.toggle`,og=`open`,sg={variable:ig,key:ig,member:og},cg=nc(sg);function lg(e){try{return rg.parse(e).referencedCalls().some(e=>e.name===`action`&&e.args[0]===`edit.toggle`)}catch{return!1}}function ug(e){if(Object.values(e.actions??{}).some(e=>`do`in e&&e.do.includes(`edit.toggle`)))return!0;for(let t of Object.values(e.segments??{}))for(let e of[t.template,t.bg,t.fg])if(typeof e==`string`&&lg(e))return!0;return!1}function dg(e,t){if(bl(e,t,hl,`edit mode`),!ug(t))return;let n={[ig]:ac(ig,Xs)},r={[ag]:oc(ig,og)};t.variables={...t.variables??{},...n},t.actions={...t.actions??{},...r}}const fg=/"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|`[^`]*`/g;function*pg(e){let t=e.indexOf(`{{`);for(;t!==-1;){let n=``,r=t+2;for(;r<e.length&&!e.startsWith(`}}`,r);){if(e.startsWith(`/*`,r)){let t=e.indexOf(`*/`,r+2);r=t===-1?e.length:t+2;continue}let t=r,i=e[r];if(r+=1,i===`"`||i===`'`||i==="`"){for(;r<e.length&&e[r]!==i;)r+=e[r]===`\\`&&i!=="`"?2:1;r+=1}n+=e.slice(t,r)}if(r>=e.length)return;yield n,t=e.indexOf(`{{`,r+2)}}const mg=`[A-Za-z_]\\w*(?:\\.[A-Za-z_]\\w*)*`,hg=RegExp(`^(?:(\\$)(?:\\.(${mg}))?|\\.(${mg})?)(?=[\\s)]|$)`);function gg(e,t){let n=hg.exec(e.trimStart());return n===null?null:n[1]===void 0?t===null?null:n[3]===void 0?t:`${t}${n[3]}.`:n[2]===void 0?``:`${n[2]}.`}const _g=/^(\w+)\b\s*([\s\S]*)$/;function*vg(e){let t=[``];for(let n of pg(e)){let e=n.replace(/^-(?=\s)/,``).trim(),[,r=``,i=``]=_g.exec(e)??[],a=t[t.length-1],o=t.length>1?t[t.length-2]:a;if(r===`end`){t.length>1&&t.pop();continue}if(r===`else`){yield{code:e,dot:o};let n=/^with\b([\s\S]*)$/.exec(i);t[t.length-1]=n===null?o:gg(n[1],o);continue}yield{code:e,dot:a},r===`if`&&t.push(a),r===`with`&&t.push(gg(i,a)),(r===`range`||r===`define`||r===`block`)&&t.push(null)}}const yg=RegExp(`(?<![A-Za-z0-9_)$])(\\$?)\\.(${mg})`,`g`);function*bg(e,t){let n=e.replace(fg,``);for(let e of[...n.matchAll(yg)])e[1]===`$`?yield e[2]:t!==null&&(yield`${t}${e[2]}`)}const xg=/\btemplate\s+$/;function*Sg(e,t){let n=0;for(let r of[...e.matchAll(fg)]){let i=r.index+r[0].length;if(xg.test(e.slice(n,r.index))){let n=gg(e.slice(i),t);n!==null&&(yield{name:r[0].slice(1,-1),at:n})}n=i}}function Cg(e,t){let n=new Map,r=new Set,i=(e,a,o,s)=>{for(let{code:c,dot:l}of[...vg(e)]){for(let e of bg(c,l))n.has(a+e)||n.set(a+e,o);for(let e of[...Sg(c,l)]){let n=t[e.name],o=a+e.at,c=`${e.name}\0${o}`;n===void 0||s.has(e.name)||r.has(c)||(r.add(c),i(n,o,e.name,new Set([...s,e.name])))}}};return i(e,``,null,new Set),n}const wg=/\baction\s+$/;function Tg(e){let t=new Set;for(let n of pg(e)){let e=0,r;for(fg.lastIndex=0;(r=fg.exec(n))!==null;)wg.test(n.slice(e,r.index))&&t.add(r[0].slice(1,-1)),e=r.index+r[0].length}return t}const Eg=/\b(picker|menu|carousel)\s+$/;function Dg(e){let t=new Set;for(let n of pg(e)){let e=0,r=0,i;for(fg.lastIndex=0;(i=fg.exec(n))!==null;){let a=Eg.exec(n.slice(e,i.index));a!==null&&(r=a[1]===`picker`?2:1),r>0&&(t.add(i[0].slice(1,-1)),r--),e=i.index+i[0].length}}return t}function Og(e,t){if(t.names.has(e))return!0;let n=`${e}.`;for(let e of t.names)if(e.startsWith(n))return!0;for(let n of t.documents)if(e.startsWith(`${n}.`))return!0;return!1}function kg(e){let t=new Set,n=new Set,r=(e,r)=>{t.add(e),Ag(r)&&n.add(e)};for(let[t,n]of Object.entries(e.variables))r(t,n);for(let[t,n]of Object.entries(e.segments))for(let[e,i]of Object.entries(n.vars??{}))r(`${t}.${e}`,i);return{names:t,documents:n,helpers:e.helpers}}function Ag(e){return(e.kind===`shell`||e.kind===`file`)&&ts(e.parse)===`json`}var jg=pe((e=>{function t(e){var t=[...arguments].slice(1);throw Error(typeof e==`number`?`[MobX] minified error nr: `+e+(t.length?` `+t.map(String).join(`,`):``)+`. Find the full error at: https://github.com/mobxjs/mobx/blob/main/packages/mobx/src/errors.ts`:`[MobX] `+e)}function n(){return typeof globalThis<`u`?globalThis:typeof window<`u`?window:typeof global<`u`?global:typeof self<`u`?self:nn}function r(){P||t(`Proxy not available`)}function i(e){var t=!1;return function(){if(!t)return t=!0,e.apply(this,arguments)}}function a(e){return typeof e==`function`}function o(e){switch(typeof e){case`string`:case`symbol`:case`number`:return!0}return!1}function s(e){return typeof e==`object`&&!!e}function c(e){if(!s(e))return!1;var t=Object.getPrototypeOf(e);if(t==null)return!0;var n=Object.hasOwnProperty.call(t,`constructor`)&&t.constructor;return typeof n==`function`&&n.toString()===ln}function l(e){var t=e?.constructor;return!!t&&(t.name===`GeneratorFunction`||t.displayName===`GeneratorFunction`)}function u(e,t,n){an(e,t,{enumerable:!1,writable:!0,configurable:!0,value:n})}function d(e,t,n){an(e,t,{enumerable:!1,writable:!1,configurable:!0,value:n})}function f(e,t){var n=`isMobX`+e;return t.prototype[n]=!0,function(e){return s(e)&&!0===e[n]}}function p(e){return e!=null&&Object.prototype.toString.call(e)===`[object Map]`}function m(e){return e!=null&&Object.prototype.toString.call(e)===`[object Set]`}function h(e){return e===null?null:typeof e==`object`?``+e:e}function g(e,t){return on.hasOwnProperty.call(e,t)}function _(e,t){return!!(e&t)}function v(e,t,n){return n?e|=t:e&=~t,e}function y(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function b(e,t,n){if(ne())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var i=new(e.bind.apply(e,r));return n&&re(i,n.prototype),i}function x(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,ie(r.key),r)}}function S(e,t,n){return t&&x(e.prototype,t),n&&x(e,n),Object.defineProperty(e,`prototype`,{writable:!1}),e}function C(e,t){var n=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if(typeof e==`string`)return y(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(e,t):void 0}}(e))||t&&e&&typeof e.length==`number`){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw TypeError(`Invalid attempt to iterate non-iterable instance.
52
+ `)}function ch(e){let t=new TextEncoder;return e.split(/\s+/).filter(e=>e.length>0).map(e=>String.fromCharCode(...t.encode(e).slice(0,1))).join(``)}function lh(e,t){let n=[];for(let e of t){if(typeof e==`object`&&e)throw $p(`join`,2,`list of strings/primitives`,`list element of type ${uh(e)}`);n.push(String(e))}return n.join(e)}function uh(e){return Array.isArray(e)?`array`:e instanceof Map?`Map`:e instanceof Set?`Set`:`object`}function dh(e){return eh(e,`-`)}function fh(e){return e.toLowerCase()}function ph(e,t){return`\n${sh(e,t)}`}function mh(e){return e.replace(/\s+/g,``)}function hh(e,t,n){return n===1?e:t}function gh(...e){return e.map(e=>`"${e}"`).join(` `)}function _h(e){return e.replace(/[\\.+*?()|[\]{}^$]/g,`\\$&`)}function vh(e,t){return t.repeat(Math.max(0,e))}function yh(e,t,n){return n.split(e).join(t)}function bh(e){return eh(e,`_`)}function xh(e,t){let n=t.split(e),r={};for(let e=0;e<n.length;e++)r[`_${e}`]=n[e];return r}function Sh(e,t){return t.split(e)}function Ch(e,t,n){let r=wh(n,e,t),i={};for(let e=0;e<r.length;e++)i[`_${e}`]=r[e]??``;return i}function wh(e,t,n){if(n===0)return[];let r=t===``?Array.from(e):e.split(t);if(n<0||r.length<=n)return r;let i=r.slice(0,n-1),a=r.slice(n-1).join(t);return[...i,a]}function Th(...e){return e.map(e=>`'${e}'`).join(` `)}function Eh(e,t,n){let r=t<0||t>n.length?n.length:t,i=Math.min(Math.max(0,e),r);return n.slice(i,r)}function Dh(e){let t=``;for(let n of e)Oh(n)?t+=n.toLowerCase():kh(n)?t+=n.toUpperCase():t+=n;return t}function Oh(e){return e!==e.toLowerCase()&&e===e.toUpperCase()}function kh(e){return e!==e.toUpperCase()&&e===e.toLowerCase()}function Ah(e){return e.replace(/\b([a-zA-Z])/g,e=>e.toUpperCase())}function jh(e){return e.trim()}function Mh(e,t){if(e.length===0)return t;let n=new Set([...e]),r=0;for(;r<t.length&&n.has(t[r]);)r+=1;let i=t.length;for(;i>r&&n.has(t[i-1]);)--i;return t.slice(r,i)}function Nh(e,t){return t.startsWith(e)?t.slice(e.length):t}function Ph(e,t){return t.endsWith(e)?t.slice(0,t.length-e.length):t}function Fh(e,t){if(e<0){let n=-e;return n>=t.length?t:t.slice(t.length-n)}return e>=t.length?t:t.slice(0,e)}function Ih(e){return e.replace(/\b([A-Z])/g,e=>e.toLowerCase())}function Lh(e){return e.toUpperCase()}function Rh(e,t){return zh(e,`
53
+ `,t)}function zh(e,t,n){if(e<=0)return n;let r=[];for(let t of n.split(`
54
+ `)){let n=``;for(let i of t.split(/\s+/))i.length!==0&&(n.length===0?n=i:n.length+1+i.length<=e?n+=` ${i}`:(r.push(n),n=i));n.length>0&&r.push(n)}return r.join(t)}function Bh(e,t,n){return zh(e,t,n)}function Vh(){return{abbrev:{fn:(e,t)=>Bm(e,t),argTypes:[`int`,`string`]},abbrevboth:{fn:(e,t,n)=>Vm(e,t,n),argTypes:[`int`,`int`,`string`]},camelcase:{fn:e=>nh(e),argTypes:[`string`],returnType:`string`},cat:{fn:(...e)=>rh(...e),argTypes:[`string`]},contains:{fn:(e,t)=>ih(e,t),argTypes:[`string`,`string`]},hasPrefix:{fn:(e,t)=>ah(e,t),argTypes:[`string`,`string`]},hasSuffix:{fn:(e,t)=>oh(e,t),argTypes:[`string`,`string`]},indent:{fn:(e,t)=>sh(e,t),argTypes:[`int`,`string`]},initials:{fn:e=>ch(e),argTypes:[`string`]},join:{fn:(e,t)=>lh(e,t),argTypes:[`string`,`list`]},kebabcase:{fn:e=>dh(e),argTypes:[`string`],returnType:`string`},lower:{fn:e=>fh(e),argTypes:[`string`]},nindent:{fn:(e,t)=>ph(e,t),argTypes:[`int`,`string`]},nospace:{fn:e=>mh(e),argTypes:[`string`],returnType:`string`},plural:{fn:(e,t,n)=>hh(e,t,n),argTypes:[`string`,`string`,`int`],returnType:`string`},quote:{fn:(...e)=>gh(...e),argTypes:[`string`]},regexQuoteMeta:{fn:e=>_h(e),argTypes:[`string`],returnType:`string`},repeat:{fn:(e,t)=>vh(e,t),argTypes:[`int`,`string`]},replace:{fn:(e,t,n)=>yh(e,t,n),argTypes:[`string`,`string`,`string`]},snakecase:{fn:e=>bh(e),argTypes:[`string`],returnType:`string`},split:{fn:(e,t)=>xh(e,t),argTypes:[`string`,`string`]},splitList:{fn:(e,t)=>Sh(e,t),argTypes:[`string`,`string`]},splitn:{fn:(e,t,n)=>Ch(e,t,n),argTypes:[`string`,`int`,`string`],returnType:`dict`},squote:{fn:(...e)=>Th(...e),argTypes:[`string`]},substr:{fn:(e,t,n)=>Eh(e,t,n),argTypes:[`int`,`int`,`string`]},swapcase:{fn:e=>Dh(e),argTypes:[`string`],returnType:`string`},title:{fn:e=>Ah(e),argTypes:[`string`]},trim:{fn:e=>jh(e),argTypes:[`string`]},trimAll:{fn:(e,t)=>Mh(e,t),argTypes:[`string`,`string`]},trimPrefix:{fn:(e,t)=>Nh(e,t),argTypes:[`string`,`string`]},trimSuffix:{fn:(e,t)=>Ph(e,t),argTypes:[`string`,`string`]},trunc:{fn:(e,t)=>Fh(e,t),argTypes:[`int`,`string`]},untitle:{fn:e=>Ih(e),argTypes:[`string`]},upper:{fn:e=>Lh(e),argTypes:[`string`]},wrap:{fn:(e,t)=>Rh(e,t),argTypes:[`int`,`string`]},wrapWith:{fn:(e,t,n)=>Bh(e,t,n),argTypes:[`int`,`string`,`string`]}}}function Hh(e){return e}function Uh(e,t,n){return n===void 0?gl+ml(e)+`.`+ml(t):Wh(n)}function Wh(e){return gl+ml(e)}function Gh(e,t){return e+`.`+t}function Kh(e){return e+`.page`}const qh=[`closeOnPick`,`paged`,`key`,`distribution`],Jh=e=>qh.includes(e),Yh=`"closeOnPick" (bool, default false), "paged" (bool, default true), "key" (string, accordion grouping), "distribution" (one of ${Pi.map(e=>`"${e}"`).join(`, `)}; default "van-der-corput")`;function Xh(e){for(let t of Object.keys(e))if(!Jh(t))throw Error(`unknown {{ menu }} option "${t}" — the options dict takes ${Yh}`);let t=(t,n)=>{let r=e[t];if(r===void 0)return n;if(typeof r!=`boolean`)throw Error(`{{ menu }} option "${t}" must be a boolean, got ${JSON.stringify(r)} (e.g. (dict "${t}" ${String(!n)}))`);return r},n=e.key;if(n!==void 0&&typeof n!=`string`)throw Error(`{{ menu }} option "key" must be a string naming the accordion group, got ${JSON.stringify(n)}`);if(n===``)throw Error(`{{ menu }} has an empty accordion key — a shared key must be a non-empty name (or omit "key" for an independent menu)`);let r=e.distribution;if(r!==void 0&&!Fi(r))throw Error(`{{ menu }} option "distribution" must be one of: ${Pi.join(`, `)}; got ${JSON.stringify(r)}`);return{closeOnPick:t(`closeOnPick`,!1),paged:t(`paged`,!0),key:n,distribution:Li(r)}}const Zh=`menu`,Qh=`a menu binds its trigger text the way a cycle action binds a display — write {{ menu "applyTheme" "▸" "▾" }} (one per state) or {{ menu "insertHere" "+" }} (one static display for both), with the rare knobs in ONE trailing dict: {{ menu "applyTheme" "▸" "▾" (dict "closeOnPick" true "paged" false "key" "pickers") }} (defaults: closeOnPick false, paged true, no key). The renderer no longer appends ▸/▾ of its own (candybar-settings-ui-aok.4), and the older positional tail ("pageAction" closeOnPick paged "key") was removed — the page cursor is synthesized from the menu's identity`,$h=e=>e.kind===`call`&&e.name===`dict`,eg=e=>e.kind===`literal`&&typeof e.value!=`object`,tg=e=>ec(``,e,2)===void 0;function ng(e){let t=e=>({kind:`issue`,message:e}),[n,...r]=e.argExprs;if(n===void 0)return t(`with no arguments — it takes an apply-action name and its trigger text (e.g. {{ menu "applyTheme" "▸" "▾" }})`);if(n.kind!==`literal`||typeof n.value!=`string`)return t(`whose apply action is not a string literal — a menu's identity is its apply-action name, which must be a literal so it can be gated at load (e.g. {{ menu "applyTheme" "▸" "▾" }})`);let i=r[r.length-1],a=i!==void 0&&$h(i)?i:void 0,o=a===void 0?r:r.slice(0,-1);if(o.some($h))return t(`whose options (dict …) is not its last argument — ${Qh}`);if(i!==void 0&&a===void 0&&!eg(i)&&tg(o.length-1))return t(`whose last argument is neither a literal nor a literal (dict …) — the renderer tells a display from the options dict by the value it evaluates to, so this call could be read as ${o.length} displays or as ${o.length-1} plus options, and both are legal. Make the options explicit as a trailing (dict …) — {{ menu "${n.value}" (printf "…") (printf "…") (dict) }} binds dynamic displays unambiguously — or bind the trigger text as literals`);let s=ec(`whose trigger`,o.length,2);if(s!==void 0)return t(`${s} — ${Qh}`);let c=a===void 0?{}:Np(a);if(c===null)return t(`whose options (dict …) is not fully literal — every option value must be a literal so the menu can be gated at load (a dynamic entry like (dict "key" .x) cannot)`);let l;try{l=Xh(c)}catch(e){return t(`with invalid options — ${e.message}`)}let u=l.key;if(u!==void 0){let e=xl(u);if(e!==void 0)return t(`whose accordion key "${u}" lands in the reserved "${e}" namespace — a key is collapsed to an identifier (${JSON.stringify(u)} becomes "${Wh(u)}"), so it would share one open-state key with the synthesized accordion that owns that namespace instead of grouping only your own menus. Name the group without the reserved prefix`)}return{kind:`ok`,apply:n.value,options:l}}function rg(e){let t=Ud({fromString:e=>e});try{return t.parse(e).referencedCalls().filter(e=>e.name===Zh).map(ng)}catch{return`parse-failed`}}function ig(e){let t=Ud({fromString:e=>e});try{return t.parse(e).referencedFunctions().has(Zh)}catch{return!1}}function ag(e,t,n){e.issues.push({path:t,message:n,line:W(e.source,[`root`])})}function og(e,t){Sl(e,t,gl,`{{ menu }} helpers`);for(let[n,r]of Object.entries(t.helpers??{}))ig(r)&&e.issues.push({path:`helpers.${n}`,message:`helper "${n}" uses {{ menu }}, but a menu must live directly in a segment template — its identity is derived from the segment it sits in, which a shared helper does not have. Inline the {{ menu }} call into each segment that needs it.`,line:W(e.source,[`helpers`,n])});let n=t.segments??{};for(let[t,r]of Object.entries(n))for(let n of[`bg`,`fg`,`when`]){let i=r[n];typeof i==`string`&&ig(i)&&ag(e,`segments.${t}.${n}`,`segment "${t}" uses {{ menu }} in its "${n}" — a menu is only valid in a segment's "template" (its placement is published only there; "${n}" needs a ${n===`when`?`predicate`:`color`}). Move the {{ menu }} into the template.`)}if(t.root!==void 0)for(let n of Qo(Gs(t.root)))typeof n.when==`string`&&ig(n.when)&&ag(e,`root`,`a layout node's "when" predicate uses {{ menu }} — a menu is only valid in a segment's "template", not a node predicate. Move it into a segment.`);let r=new Set,i={},a=new Set,o=new Map;for(let[t,{template:s}]of Object.entries(n)){if(s===void 0||!ig(s))continue;let n=rg(s);if(n!==`parse-failed`)for(let s of n){if(s.kind===`issue`){ag(e,`segments.${t}`,`segment "${t}" has a {{ menu }} ${s.message}.`);continue}let{apply:n,options:c}=s;if(n===``){ag(e,`segments.${t}`,`segment "${t}" has a {{ menu }} with an empty apply-action name — an empty member aliases the absent-state sentinel ("") so the menu would render open before any click. Name the apply action.`);continue}let l=Hh(n);if(l===`closed`){ag(e,`segments.${t}`,`segment "${t}" has a {{ menu }} whose apply action is named "${Qs}", which collides with the menu's closed-state sentinel and leaves it unopenable. Rename the action.`);continue}let u=Uh(t,n,c.key),d=Kh(u),f=c.key===void 0?`ind${t}${n}`:`key${c.key}`,p=[u,d].find(e=>{let t=o.get(e);return t!==void 0&&t!==f});if(p!==void 0){ag(e,`segments.${t}`,`two {{ menu }} disclosures normalize to the same state key ("${p}") but were declared differently — distinct names that differ only by non-alphanumeric characters (e.g. "a-b" vs "a_b") collapse to one key and would silently share open-state. Rename so they don't collide.`);continue}o.set(u,f),o.set(d,f);let m=Gh(u,l);if(a.has(m)){ag(e,`segments.${t}`,`two {{ menu }} disclosures resolve to the same identity ("${m}") — ${c.key===void 0?`a segment cannot contain two menus over the same apply action "${n}"`:`menus sharing key "${c.key}" must have distinct apply actions`}.`);continue}a.add(m),r.add(u),i[m]=cc(u,l)}}if(r.size===0)return;let s={};for(let e of r){s[e]=sc(e,Qs);let t=Kh(e);s[t]={kind:`state`,key:t,default:`0`},i[t]={set:t,int:!0}}t.variables={...t.variables??{},...s},t.actions={...t.actions??{},...i}}const sg=Ud({fromString:e=>e}),cg=`edit.mode`,lg=`edit.toggle`,ug=`open`,dg={variable:cg,key:cg,member:ug},fg=ic(dg);function pg(e){try{return sg.parse(e).referencedCalls().some(e=>e.name===`action`&&e.args[0]===`edit.toggle`)}catch{return!1}}function mg(e){if(Object.values(e.actions??{}).some(e=>`do`in e&&e.do.includes(`edit.toggle`)))return!0;for(let t of Object.values(e.segments??{}))for(let e of[t.template,t.bg,t.fg])if(typeof e==`string`&&pg(e))return!0;return!1}function hg(e,t){if(Sl(e,t,_l,`edit mode`),!mg(t))return;let n={[cg]:sc(cg,Qs)},r={[lg]:cc(cg,ug)};t.variables={...t.variables??{},...n},t.actions={...t.actions??{},...r}}const gg=/"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|`[^`]*`/g;function*_g(e){let t=e.indexOf(`{{`);for(;t!==-1;){let n=``,r=t+2;for(;r<e.length&&!e.startsWith(`}}`,r);){if(e.startsWith(`/*`,r)){let t=e.indexOf(`*/`,r+2);r=t===-1?e.length:t+2;continue}let t=r,i=e[r];if(r+=1,i===`"`||i===`'`||i==="`"){for(;r<e.length&&e[r]!==i;)r+=e[r]===`\\`&&i!=="`"?2:1;r+=1}n+=e.slice(t,r)}if(r>=e.length)return;yield n,t=e.indexOf(`{{`,r+2)}}const vg=`[A-Za-z_]\\w*(?:\\.[A-Za-z_]\\w*)*`,yg=RegExp(`^(?:(\\$)(?:\\.(${vg}))?|\\.(${vg})?)(?=[\\s)]|$)`);function bg(e,t){let n=yg.exec(e.trimStart());return n===null?null:n[1]===void 0?t===null?null:n[3]===void 0?t:`${t}${n[3]}.`:n[2]===void 0?``:`${n[2]}.`}const xg=/^(\w+)\b\s*([\s\S]*)$/;function*Sg(e){let t=[``];for(let n of _g(e)){let e=n.replace(/^-(?=\s)/,``).trim(),[,r=``,i=``]=xg.exec(e)??[],a=t[t.length-1],o=t.length>1?t[t.length-2]:a;if(r===`end`){t.length>1&&t.pop();continue}if(r===`else`){yield{code:e,dot:o};let n=/^with\b([\s\S]*)$/.exec(i);t[t.length-1]=n===null?o:bg(n[1],o);continue}yield{code:e,dot:a},r===`if`&&t.push(a),r===`with`&&t.push(bg(i,a)),(r===`range`||r===`define`||r===`block`)&&t.push(null)}}const Cg=RegExp(`(?<![A-Za-z0-9_)$])(\\$?)\\.(${vg})`,`g`);function*wg(e,t){let n=e.replace(gg,``);for(let e of[...n.matchAll(Cg)])e[1]===`$`?yield e[2]:t!==null&&(yield`${t}${e[2]}`)}const Tg=/\btemplate\s+$/;function*Eg(e,t){let n=0;for(let r of[...e.matchAll(gg)]){let i=r.index+r[0].length;if(Tg.test(e.slice(n,r.index))){let n=bg(e.slice(i),t);n!==null&&(yield{name:r[0].slice(1,-1),at:n})}n=i}}function Dg(e,t){let n=new Map,r=new Set,i=(e,a,o,s)=>{for(let{code:c,dot:l}of[...Sg(e)]){for(let e of wg(c,l))n.has(a+e)||n.set(a+e,o);for(let e of[...Eg(c,l)]){let n=t[e.name],o=a+e.at,c=`${e.name}\0${o}`;n===void 0||s.has(e.name)||r.has(c)||(r.add(c),i(n,o,e.name,new Set([...s,e.name])))}}};return i(e,``,null,new Set),n}const Og=/\baction\s+$/;function kg(e){let t=new Set;for(let n of _g(e)){let e=0,r;for(gg.lastIndex=0;(r=gg.exec(n))!==null;)Og.test(n.slice(e,r.index))&&t.add(r[0].slice(1,-1)),e=r.index+r[0].length}return t}const Ag=/\b(picker|menu|carousel)\s+$/;function jg(e){let t=new Set;for(let n of _g(e)){let e=0,r=0,i;for(gg.lastIndex=0;(i=gg.exec(n))!==null;){let a=Ag.exec(n.slice(e,i.index));a!==null&&(r=a[1]===`picker`?2:1),r>0&&(t.add(i[0].slice(1,-1)),r--),e=i.index+i[0].length}}return t}function Mg(e,t){if(t.names.has(e))return!0;let n=`${e}.`;for(let e of t.names)if(e.startsWith(n))return!0;for(let n of t.documents)if(e.startsWith(`${n}.`))return!0;return!1}function Ng(e){let t=new Set,n=new Set,r=(e,r)=>{t.add(e),Pg(r)&&n.add(e)};for(let[t,n]of Object.entries(e.variables))r(t,n);for(let[t,n]of Object.entries(e.segments))for(let[e,i]of Object.entries(n.vars??{}))r(`${t}.${e}`,i);return{names:t,documents:n,helpers:e.helpers}}function Pg(e){return(e.kind===`shell`||e.kind===`file`)&&rs(e.parse)===`json`}var Fg=pe((e=>{function t(e){var t=[...arguments].slice(1);throw Error(typeof e==`number`?`[MobX] minified error nr: `+e+(t.length?` `+t.map(String).join(`,`):``)+`. Find the full error at: https://github.com/mobxjs/mobx/blob/main/packages/mobx/src/errors.ts`:`[MobX] `+e)}function n(){return typeof globalThis<`u`?globalThis:typeof window<`u`?window:typeof global<`u`?global:typeof self<`u`?self:nn}function r(){P||t(`Proxy not available`)}function i(e){var t=!1;return function(){if(!t)return t=!0,e.apply(this,arguments)}}function a(e){return typeof e==`function`}function o(e){switch(typeof e){case`string`:case`symbol`:case`number`:return!0}return!1}function s(e){return typeof e==`object`&&!!e}function c(e){if(!s(e))return!1;var t=Object.getPrototypeOf(e);if(t==null)return!0;var n=Object.hasOwnProperty.call(t,`constructor`)&&t.constructor;return typeof n==`function`&&n.toString()===ln}function l(e){var t=e?.constructor;return!!t&&(t.name===`GeneratorFunction`||t.displayName===`GeneratorFunction`)}function u(e,t,n){an(e,t,{enumerable:!1,writable:!0,configurable:!0,value:n})}function d(e,t,n){an(e,t,{enumerable:!1,writable:!1,configurable:!0,value:n})}function f(e,t){var n=`isMobX`+e;return t.prototype[n]=!0,function(e){return s(e)&&!0===e[n]}}function p(e){return e!=null&&Object.prototype.toString.call(e)===`[object Map]`}function m(e){return e!=null&&Object.prototype.toString.call(e)===`[object Set]`}function h(e){return e===null?null:typeof e==`object`?``+e:e}function g(e,t){return on.hasOwnProperty.call(e,t)}function _(e,t){return!!(e&t)}function v(e,t,n){return n?e|=t:e&=~t,e}function y(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function b(e,t,n){if(ne())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var i=new(e.bind.apply(e,r));return n&&re(i,n.prototype),i}function x(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,ie(r.key),r)}}function S(e,t,n){return t&&x(e.prototype,t),n&&x(e,n),Object.defineProperty(e,`prototype`,{writable:!1}),e}function C(e,t){var n=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if(typeof e==`string`)return y(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(e,t):void 0}}(e))||t&&e&&typeof e.length==`number`){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw TypeError(`Invalid attempt to iterate non-iterable instance.
53
55
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function ee(){return(ee=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(null,arguments)}function te(e){return(te=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function w(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,re(e,t)}function ne(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch{}return(ne=function(){return!!e})()}function re(e,t){return(re=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function ie(e){var t=function(e){if(typeof e!=`object`||!e)return e;var t=e[Symbol.toPrimitive];if(t!==void 0){var n=t.call(e,`string`);if(typeof n!=`object`)return n;throw TypeError(`@@toPrimitive must return a primitive value.`)}return String(e)}(e);return typeof t==`symbol`?t:t+``}function T(e){var t=typeof Map==`function`?new Map:void 0;return(T=function(e){function n(){return b(e,arguments,te(this).constructor)}if(e===null||!function(e){try{return Function.toString.call(e).indexOf(`[native code]`)!==-1}catch{return typeof e==`function`}}(e))return e;if(typeof e!=`function`)throw TypeError(`Super expression must either be null or a function`);if(t!==void 0){if(t.has(e))return t.get(e);t.set(e,n)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),re(n,e)})(e)}function E(e){return Object.assign((function(t,n){if(oe(n))return e.t(t,n);ae(t,n,e)}),e)}function ae(e,t,n){g(e,mn)||u(e,mn,ee({},e[mn])),function(e){return e.i===`override`}(n)||(e[mn][t]=n)}function oe(e){return typeof e==`object`&&typeof e.kind==`string`}function se(e,t,n){t===void 0&&(t=un),n===void 0&&(n=un);var r=new hn(e);return t!==un&&dt(r,t),n!==un&&ft(r,n),r}function ce(e,t,n){return xt(e)?e:Array.isArray(e)?En.array(e,{name:n}):c(e)?En.object(e,void 0,{name:n}):p(e)?En.map(e,{name:n}):m(e)?En.set(e,{name:n}):typeof e!=`function`||ct(e)||vt(e)?e:l(e)?rr(e):Zn(n,e)}function le(e){return e}function ue(e,t){return{i:e,u:t,o:de,s:fe,t:pe}}function de(e,t,n,r){var i;return(i=this.u)!=null&&i.bound?this.s(e,t,n,!1)===null?0:1:r===e.h?this.s(e,t,n,!1)===null?0:2:ct(n.value)?1:(an(r,t,me(e,this,t,n,!1)),2)}function fe(e,t,n,r){var i=me(e,this,t,n);return e.l(t,i,r)}function pe(e,n){var r,i=n.kind,a=n.name,o=n.addInitializer,s=this,c=function(e){var t;return Ne(s.u?.name??a.toString(),e,(t=s.u?.autoAction)!=null&&t)};return i==`field`?function(e){var t,n=e;return ct(n)||(n=c(n)),(t=s.u)!=null&&t.bound&&((n=n.bind(this)).isMobxAction=!0),n}:i==`method`?(ct(e)||(e=c(e)),(r=this.u)!=null&&r.bound&&o((function(){var e=this[a].bind(this);e.isMobxAction=!0,this[a]=e})),e):void t(`Cannot apply '`+s.i+`' to '`+String(a)+`' (kind: `+i+`):
54
- '`+s.i+`' can only be used on properties with a function value.`)}function me(e,t,n,r,i){var a,o,s;i===void 0&&(i=z.safeDescriptors);var c=r.value;return(a=t.u)!=null&&a.bound&&(c=c.bind(e.v??e.h)),{value:Ne(t.u?.name??n.toString(),c,(o=t.u?.autoAction)!=null&&o,(s=t.u)!=null&&s.bound?e.v??e.h:void 0),configurable:!i||e.p,enumerable:!1,writable:!i}}function he(e,t){return{i:e,u:t,o:D,s:ge,t:_e}}function D(e,t,n,r){var i;return r===e.h?this.s(e,t,n,!1)===null?0:2:(i=this.u)!=null&&i.bound&&(!g(e.h,t)||!vt(e.h[t]))&&this.s(e,t,n,!1)===null?0:vt(n.value)?1:(an(r,t,ve(e,0,0,n,!1,!1)),2)}function ge(e,t,n,r){var i=ve(e,0,0,n,this.u?.bound);return e.l(t,i,r)}function _e(e,t){var n,r=t.name,i=t.addInitializer;return vt(e)||(e=rr(e)),(n=this.u)!=null&&n.bound&&i((function(){var e=this[r].bind(this);e.isMobXFlow=!0,this[r]=e})),e}function ve(e,t,n,r,i,a){a===void 0&&(a=z.safeDescriptors);var o=r.value;return vt(o)||(o=rr(o)),i&&((o=o.bind(e.v??e.h)).isMobXFlow=!0),{value:o,configurable:!a||e.p,enumerable:!1,writable:!a}}function ye(e,t){return{i:e,u:t,o:be,s:xe,t:Se}}function be(e,t,n){return this.s(e,t,n,!1)===null?0:1}function xe(e,t,n,r){return e.m(t,ee({},this.u,{get:n.get,set:n.set}),r)}function Se(e,t){var n=this,r=t.name;return(0,t.addInitializer)((function(){var t=Ht(this)[F],i=ee({},n.u,{get:e,context:this});i.name||=`ObservableObject.`+r.toString(),t.j.set(r,new In(i))})),function(){return this[F].O(r)}}function Ce(e,t){return{i:e,u:t,o:we,s:Te,t:Ee}}function we(e,t,n){return this.s(e,t,n,!1)===null?0:1}function Te(e,t,n,r){return e.g(t,n.value,this.u?.enhancer??ce,r)}function Ee(e,t){function n(e,t){var n=Ht(e)[F],i=new Pn(t,r.u?.enhancer??ce,`ObservableObject.`+a.toString(),!1);n.j.set(a,i),o.add(e)}var r=this,i=t.kind,a=t.name,o=new WeakSet;if(i==`accessor`)return{get:function(){return o.has(this)||n(this,e.get.call(this)),this[F].O(a)},set:function(e){return o.has(this)||n(this,e),this[F].S(a,e)},init:function(e){return o.has(this)||n(this,e),e}}}function De(e){return{i:`true`,u:e,o:Oe,s:ke,t:Ae}}function Oe(e,t,n,r){var i,a,o;if(n.get)return kn.o(e,t,n,r);if(n.set){var s=ct(n.set)?n.set:Ne(t.toString(),n.set);return r===e.h?e.l(t,{configurable:!z.safeDescriptors||e.p,set:s})===null?0:2:(an(r,t,{configurable:!0,set:s}),2)}if(r!==e.h&&typeof n.value==`function`)return l(n.value)?((o=this.u)!=null&&o.autoBind?rr.bound:rr).o(e,t,n,r):((a=this.u)!=null&&a.autoBind?Zn.bound:Zn).o(e,t,n,r);var c=!1===this.u?.deep?En.ref:En;return typeof n.value==`function`&&(i=this.u)!=null&&i.autoBind&&(n.value=n.value.bind(e.v??e.h)),c.o(e,t,n,r)}function ke(e,t,n,r){var i;return n.get?kn.s(e,t,n,r):n.set?e.l(t,{configurable:!z.safeDescriptors||e.p,set:Ne(t.toString(),n.set)},r):(typeof n.value==`function`&&(i=this.u)!=null&&i.autoBind&&(n.value=n.value.bind(e.v??e.h)),(!1===this.u?.deep?En.ref:En).s(e,t,n,r))}function Ae(){t(`'`+this.i+`' cannot be used as a decorator`)}function je(e){return e||bn}function O(e){return!0===e.deep?ce:!1===e.deep?le:(t=e.defaultDecorator)&&(n=(r=t.u)?.enhancer)!=null?n:ce;var t,n,r}function Me(e,t,n){return oe(t)?xn.t(e,t):o(t)?void ae(e,t,xn):xt(e)?e:c(e)?En.object(e,t,n):Array.isArray(e)?En.array(e,t):p(e)?En.map(e,t):m(e)?En.set(e,t):typeof e==`object`&&e?e:En.box(e,t)}function Ne(e,t,n,r){function i(){return Pe(0,n,t,r||this,arguments)}return n===void 0&&(n=!1),i.isMobxAction=!0,i.toString=function(){return t.toString()},Mn&&(Nn.value=e,an(i,`name`,Nn)),i}function Pe(e,t,n,r,i){var a=Fe(0,t);try{return n.apply(r,i)}catch(e){throw a._=e,e}finally{Ie(a)}}function Fe(e,t){var n=z.trackingDerivation,r=!t||!n;$e();var i=z.allowStateChanges;r&&(Ge(),i=Re(!0));var a={A:r,k:n,M:i,V:qe(!0),R:!1,N:0,T:jn++,C:An};return An=a.T,a}function Ie(e){An!==e.T&&t(30),An=e.C,e._!==void 0&&(z.suppressReactionErrors=!0),ze(e.M),Je(e.V),et(),e.A&&Ke(e.k),z.suppressReactionErrors=!1}function Le(e,t){var n=Re(e);try{return t()}finally{ze(n)}}function Re(e){var t=z.allowStateChanges;return z.allowStateChanges=e,t}function ze(e){z.allowStateChanges=e}function Be(e){return e instanceof Rn}function Ve(e){switch(e.I){case L.L:return!1;case L.P:case L.K:return!0;case L.B:for(var t=qe(!0),n=Ge(),r=e.D,i=r.length,a=0;a<i;a++){var o=r[a];if(R(o)){if(z.disableErrorBoundaries)o.get();else try{o.get()}catch{return Ke(n),Je(t),!0}if(e.I===L.K)return Ke(n),Je(t),!0}}return Ye(e),Ke(n),Je(t),!1}}function He(e,t,n){var r=qe(!0);Ye(e),e.W=Array(e.q===0?100:e.D.length),e.G=0,e.q=++z.runId;var i,a=z.trackingDerivation;if(z.trackingDerivation=e,z.inBatch++,!0===z.disableErrorBoundaries)i=t.call(n);else try{i=t.call(n)}catch(e){i=new Rn(e)}return z.inBatch--,z.trackingDerivation=a,function(e){for(var t=e.D,n=e.D=e.W,r=L.L,i=0,a=e.G,o=0;o<a;o++){var s=n[o];s.diffValue===0&&(s.diffValue=1,i!==o&&(n[i]=s),i++),s.I>r&&(r=s.I)}for(n.length=i,e.W=null,a=t.length;a--;){var c=t[a];c.diffValue===0&&Ze(c,e),c.diffValue=0}for(;i--;){var l=n[i];l.diffValue===1&&(l.diffValue=0,Xe(l,e))}r!==L.L&&(e.I=r,e.H())}(e),Je(r),i}function Ue(e){var t=e.D;e.D=[];for(var n=t.length;n--;)Ze(t[n],e);e.I=L.P}function We(e){var t=Ge();try{return e()}finally{Ke(t)}}function Ge(){var e=z.trackingDerivation;return z.trackingDerivation=null,e}function Ke(e){z.trackingDerivation=e}function qe(e){var t=z.allowStateReads;return z.allowStateReads=e,t}function Je(e){z.allowStateReads=e}function Ye(e){if(e.I!==L.L){e.I=L.L;for(var t=e.D,n=t.length;n--;)t[n].U=L.L}}function Xe(e,t){e.F.add(t),e.U>t.I&&(e.U=t.I)}function Ze(e,t){e.F.delete(t),e.F.size===0&&Qe(e)}function Qe(e){!1===e.isPendingUnobservation&&(e.isPendingUnobservation=!0,z.pendingUnobservations.push(e))}function $e(){z.inBatch++}function et(){if(--z.inBatch==0){rt();for(var e=z.pendingUnobservations,t=0;t<e.length;t++){var n=e[t];n.isPendingUnobservation=!1,n.F.size===0&&(n.isBeingObserved&&(n.isBeingObserved=!1,n.onBUO()),n instanceof In&&n.X())}z.pendingUnobservations=[]}}function tt(e){var t=z.trackingDerivation;return t===null?(e.F.size===0&&z.inBatch>0&&Qe(e),!1):(t.q!==e.$&&(e.$=t.q,t.W[t.G++]=e,!e.isBeingObserved&&z.trackingContext&&(e.isBeingObserved=!0,e.onBO())),e.isBeingObserved)}function nt(e){e.U!==L.K&&(e.U=L.K,e.F.forEach((function(e){e.I===L.L&&e.H(),e.I=L.K})))}function rt(){z.inBatch>0||z.isRunningReactions||Wn(it)}function it(){z.isRunningReactions=!0;for(var e=z.pendingReactions,t=0;e.length>0;){++t==100&&(console.error(`[mobx] cycle in reaction: `+e[0]),e.splice(0));for(var n=e.splice(0),r=0,i=n.length;r<i;r++)n[r].J()}z.isRunningReactions=!1}function at(){return console.warn(`[mobx.spy] Is a no-op in production builds`),function(){}}function ot(e){return function(t,n){return a(t)?Ne(t.name||`<unnamed action>`,t,e):a(n)?Ne(t,n,e):oe(n)?(e?Jn:Kn).t(t,n):o(n)?ae(t,n,e?Jn:Kn):o(t)?E(ue(e?`autoAction`:`action`,{name:t,autoAction:e})):void 0}}function st(e){return Pe(0,!1,e,this,void 0)}function ct(e){return a(e)&&!0===e.isMobxAction}function lt(e,t){function n(){e(i)}var r;t===void 0&&(t=cn);var i,a=t?.name??`Autorun`;if(t.scheduler||t.delay){var o=ut(t),s=!1;i=new Un(a,(function(){s||(s=!0,o((function(){s=!1,i.isDisposed||i.track(n)})))}),t.onError,t.requiresObservable)}else i=new Un(a,(function(){this.track(n)}),t.onError,t.requiresObservable);return(r=t)!=null&&(r=r.signal)!=null&&r.aborted||i.Y(),i.Z(t?.signal)}function ut(e){return e.scheduler?e.scheduler:e.delay?function(t){return setTimeout(t,e.delay)}:Qn}function dt(e,t,n){return pt(`onBO`,e,t,n)}function ft(e,t,n){return pt(`onBUO`,e,t,n)}function pt(e,t,n,r){var i=typeof r==`function`?Yt(t,n):Yt(t),o=a(r)?r:n,s=e+`L`;return i[s]?i[s].add(o):i[s]=new Set([o]),function(){var e=i[s];e&&(e.delete(o),e.size===0&&delete i[s])}}function mt(e,t,n,r){var i=pn(t);return Qt((function(){var t=Ht(e,r)[F];fn(i).forEach((function(e){t.s(e,i[e],!n||!(e in n)||n[e])}))})),e}function ht(e){var t,n={name:e.tt};return e.D&&e.D.length>0&&(n.dependencies=(t=e.D,Array.from(new Set(t))).map(ht)),n}function gt(e){var t={name:e.tt};return function(e){return e.F&&e.F.size>0}(e)&&(t.observers=Array.from(function(e){return e.F}(e)).map(gt)),t}function _t(e){a(e.cancel)&&e.cancel()}function vt(e){return!0===e?.isMobXFlow}function yt(e,t){return t===void 0?R(e):!1===Wt(e)||!e[F].j.has(t)?!1:R(Yt(e,t))}function bt(e,t){return!!e&&(t===void 0?Wt(e)||!!e[F]||gn(e)||Gn(e)||R(e):!!Wt(e)&&e[F].j.has(t))}function xt(e){return bt(e)}function St(e){return Wt(e)?e[F].nt():gr(e)||yr(e)?Array.from(e.keys()):zt(e)?e.map((function(e,t){return t})):void t(5)}function Ct(e,n){return Wt(e)?e[F].it(n):gr(e)||yr(e)?e.has(n):zt(e)?n>=0&&n<e.length:void t(10)}function wt(e){if(Wt(e))return e[F].rt();t(38)}function Tt(e,t,n){return e.set(t,n),n}function Et(e,t){t===void 0&&(t=void 0),$e();try{return e.apply(t)}finally{et()}}function Dt(e,t,n){var r;if(typeof n.timeout==`number`){var i=Error(`WHEN_TIMEOUT`);r=setTimeout((function(){if(!o[F].isDisposed){if(o(),!n.onError)throw i;n.onError(i)}}),n.timeout)}n.name=`When`;var a=Ne(`When-effect`,t),o=lt((function(t){Le(!1,e)&&(t.dispose(),r&&clearTimeout(r),a())}),n);return o}function Ot(e,t){var n,r,i;if(t!=null&&(n=t.signal)!=null&&n.aborted)return Object.assign(Promise.reject(Error(`WHEN_ABORTED`)),{cancel:function(){return null}});var a=new Promise((function(n,a){var o,s=Dt(e,n,ee({},t,{onError:a}));r=function(){s(),a(Error(`WHEN_CANCELLED`))},i=function(){s(),a(Error(`WHEN_ABORTED`))},t==null||(o=t.signal)==null||o.addEventListener==null||o.addEventListener(`abort`,i)})).finally((function(){var e;return t==null||(e=t.signal)==null||e.removeEventListener==null?void 0:e.removeEventListener(`abort`,i)}));return a.cancel=r,a}function kt(e){return e[F]}function At(e){return e.et!==void 0&&e.et.length>0}function jt(e,t){var n=e.et||=[];return n.push(t),i((function(){var e=n.indexOf(t);e!==-1&&n.splice(e,1)}))}function Mt(e,n){var r=Ge();try{for(var i=[].concat(e.et||[]),a=0,o=i.length;a<o&&((n=i[a](n))&&!n.type&&t(14),n);a++);return n}finally{Ke(r)}}function Nt(e){return e.ut!==void 0&&e.ut.length>0}function Pt(e,t){var n=e.ut||=[];return n.push(t),i((function(){var e=n.indexOf(t);e!==-1&&n.splice(e,1)}))}function Ft(e,t){var n=Ge(),r=e.ut;if(r){for(var i=0,a=(r=r.slice()).length;i<a;i++)r[i](t);Ke(n)}}function It(e,t,n,i){return n===void 0&&(n=`ObservableArray`),i===void 0&&(i=!1),r(),Qt((function(){var r=new cr(n,t,i,!1);d(r.j,F,r);var a=new Proxy(r.j,sr);return r.v=a,e&&e.length&&r.ot(0,0,e),a}))}function k(e,t){typeof Array.prototype[e]==`function`&&(lr[e]=t(e))}function Lt(e){return function(){var t=this[F];t.st.reportObserved();var n=t.ft(t.j);return n[e].apply(n,arguments)}}function A(e){return function(t,n){var r=this,i=this[F];return i.st.reportObserved(),i.ft(i.j)[e]((function(e,i){return t.call(n,e,i,r)}))}}function Rt(e){return function(){var t=this,n=this[F];n.st.reportObserved();var r=n.ft(n.j),i=arguments[0];return arguments[0]=function(e,n,r){return i(e,n,r,t)},r[e].apply(r,arguments)}}function zt(e){return s(e)&&fr(e[F])}function Bt(e){return e[Symbol.toStringTag]=`MapIterator`,en(e)}function Vt(e){return e[Symbol.toStringTag]=`SetIterator`,en(e)}function Ht(e,t){if(g(e,F))return e;var n=t?.name??`ObservableObject`;return u(e,F,new xr(e,new Map,String(n),function(e){return e?e.defaultDecorator??De(e):void 0}(t))),e}function Ut(e){return br[e]||(br[e]={get:function(){return this[F].O(e)},set:function(t){return this[F].S(e,t)}})}function Wt(e){return!!s(e)&&B(e[F])}function Gt(e,t,n){var r;(r=e.h[mn])==null||delete r[n]}function Kt(e){return{enumerable:!1,configurable:!0,get:function(){return this[F].ct(e)},set:function(t){this[F].ht(e,t)}}}function j(e){an(Er.prototype,``+e,Kt(e))}function qt(e){if(e>wr){for(var t=wr;t<e+100;t++)j(t);wr=e}}function Jt(e,t,n){return new Er(e,t,n)}function Yt(e,n){if(typeof e==`object`&&e){if(zt(e))return n!==void 0&&t(23),e[F].st;if(yr(e))return e.st;if(gr(e)){if(n===void 0)return e.lt;var r=e.vt.get(n)||e.dt.get(n);return r||t(25,n,Zt(e)),r}if(Wt(e)){if(!n)return t(26);var i=e[F].j.get(n);return i||t(27,n,Zt(e)),i}if(gn(e)||R(e)||Gn(e))return e}else if(a(e)&&Gn(e[F]))return e[F];t(28)}function Xt(e,n){return e||t(29),n===void 0?gn(e)||R(e)||Gn(e)||gr(e)||yr(e)?e:e[F]?e[F]:void t(24,e):Xt(Yt(e,n))}function Zt(e,t){var n;if(t!==void 0)n=Yt(e,t);else{if(ct(e))return e.name;n=Wt(e)||gr(e)||yr(e)?Xt(e):Yt(e)}return n.tt}function Qt(e){var t=Ge(),n=Re(!0);$e();try{return e()}finally{et(),ze(n),Ke(t)}}function $t(e,t,n){return n===void 0&&(n=-1),function e(t,n,r,i,o){if(t===n)return t!==0||1/t==1/n;if(t==null||n==null)return!1;if(t!=t)return n!=n;var s=typeof t;if(s!==`function`&&s!==`object`&&typeof n!=`object`)return!1;var c=Dr.call(t);if(c!==Dr.call(n))return!1;switch(c){case`[object RegExp]`:case`[object String]`:return``+t==``+n;case`[object Number]`:return+t==+t?+t==0?1/t==1/n:+t==+n:+n!=+n;case`[object Date]`:case`[object Boolean]`:return+t==+n;case`[object Symbol]`:return typeof Symbol<`u`&&Symbol.valueOf.call(t)===Symbol.valueOf.call(n);case`[object Map]`:case`[object Set]`:r>=0&&r++}t=M(t),n=M(n);var l=c===`[object Array]`;if(!l){if(typeof t!=`object`||typeof n!=`object`)return!1;var u=t.constructor,d=n.constructor;if(u!==d&&!(a(u)&&u instanceof u&&a(d)&&d instanceof d)&&`constructor`in t&&`constructor`in n)return!1}if(r===0)return!1;r<0&&(r=-1),o||=[];for(var f=(i||=[]).length;f--;)if(i[f]===t)return o[f]===n;if(i.push(t),o.push(n),l){if((f=t.length)!==n.length)return!1;for(;f--;)if(!e(t[f],n[f],r-1,i,o))return!1}else{var p=Object.keys(t),m=p.length;if(Object.keys(n).length!==m)return!1;for(var h=0;h<m;h++){var _=p[h];if(!g(n,_)||!e(t[_],n[_],r-1,i,o))return!1}}return i.pop(),o.pop(),!0}(e,t,n)}function M(e){return zt(e)?e.slice():p(e)||gr(e)||m(e)||yr(e)?Array.from(e.entries()):e}function en(e){return e[Symbol.iterator]=tn,Object.assign(Object.create(Or),e)}function tn(){return this}Object.defineProperty(e,`__esModule`,{value:!0});var nn={},N=Object.assign,rn=Object.getOwnPropertyDescriptor,an=Object.defineProperty,on=Object.prototype,sn=[];Object.freeze(sn);var cn={};Object.freeze(cn);var P=typeof Proxy<`u`,ln=Object.toString(),un=function(){},dn=Object.getOwnPropertySymbols!==void 0,fn=typeof Reflect<`u`&&Reflect.ownKeys?Reflect.ownKeys:dn?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames,pn=Object.getOwnPropertyDescriptors||function(e){var t={};return fn(e).forEach((function(n){t[n]=rn(e,n)})),t},mn=Symbol(`mobx-stored-annotations`),F=Symbol(`mobx administration`),hn=function(){function e(e){e===void 0&&(e=`Atom`),this.tt=void 0,this.bt=0,this.F=new Set,this.$=0,this.U=L.P,this.onBOL=void 0,this.onBUOL=void 0,this.tt=e}var t=e.prototype;return t.onBO=function(){this.onBOL&&this.onBOL.forEach((function(e){return e()}))},t.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(e){return e()}))},t.reportObserved=function(){return tt(this)},t.reportChanged=function(){$e(),nt(this),et()},t.toString=function(){return this.tt},S(e,[{key:`isBeingObserved`,get:function(){return _(this.bt,e.pt)},set:function(t){this.bt=v(this.bt,e.pt,t)}},{key:`isPendingUnobservation`,get:function(){return _(this.bt,e.yt)},set:function(t){this.bt=v(this.bt,e.yt,t)}},{key:`diffValue`,get:function(){return+!!_(this.bt,e.wt)},set:function(t){this.bt=v(this.bt,e.wt,t===1)}}])}();hn.pt=1,hn.yt=2,hn.wt=4;var gn=f(`Atom`,hn),_n={identity:function(e,t){return e===t},structural:function(e,t){return $t(e,t)},default:function(e,t){return Object.is?Object.is(e,t):e===t?e!==0||1/e==1/t:e!=e&&t!=t},shallow:function(e,t){return $t(e,t,1)}},vn=E({i:`override`,o:function(){return 0},s:function(){t(`'`+this.i+`' can only be used with 'makeObservable'`)},t:function(){console.warn(`'`+this.i+`' cannot be used with decorators - this is a no-op`)}}),yn=De(),bn={deep:!0,name:void 0,defaultDecorator:void 0,proxy:!0};Object.freeze(bn);var xn=Ce(`observable`),Sn=Ce(`observable.ref`,{enhancer:le}),I=Ce(`observable.shallow`,{enhancer:function(e,t,n){return e==null||Wt(e)||zt(e)||gr(e)||yr(e)?e:Array.isArray(e)?En.array(e,{name:n,deep:!1}):c(e)?En.object(e,void 0,{name:n,deep:!1}):p(e)?En.map(e,{name:n,deep:!1}):m(e)?En.set(e,{name:n,deep:!1}):void 0}}),Cn=Ce(`observable.struct`,{enhancer:function(e,t){return $t(e,t)?t:e}}),wn=E(xn);N(Me,wn);var Tn,En=N(Me,{box:function(e,t){var n=je(t);return new Pn(e,O(n),n.name,!0,n.equals)},array:function(e,t){var n=je(t);return(!1===z.useProxies||!1===n.proxy?Jt:It)(e,O(n),n.name)},map:function(e,t){var n=je(t);return new hr(e,O(n),n.name)},set:function(e,t){var n=je(t);return new vr(e,O(n),n.name)},object:function(e,t,n){return Qt((function(){return mt(!1===z.useProxies||!1===n?.proxy?Ht({},n):function(e,t){var n;return r(),(n=(e=Ht(e,t))[F]).v??(n.v=new Proxy(e,ir))}({},n),e,t)}))},ref:E(Sn),shallow:E(I),deep:wn,struct:E(Cn)}),Dn=ye(`computed`),On=ye(`computed.struct`,{equals:_n.structural}),kn=function(e,t){if(oe(t))return Dn.t(e,t);if(o(t))return ae(e,t,Dn);if(c(e))return E(ye(`computed`,e));var n=c(t)?t:{};return n.get=e,n.name||=e.name||``,new In(n)};Object.assign(kn,Dn),kn.struct=E(On);var An=0,jn=1,Mn=(Tn=rn((function(){}),`name`)?.configurable)!=null&&Tn,Nn={value:`action`,configurable:!0,writable:!1,enumerable:!1},Pn=function(e){function t(t,n,r,i,a){var o;return r===void 0&&(r=`ObservableValue`),a===void 0&&(a=_n.default),(o=e.call(this,r)||this).enhancer=void 0,o.tt=void 0,o.equals=void 0,o.jt=!1,o.et=void 0,o.ut=void 0,o.Ot=void 0,o.dehancer=void 0,o.enhancer=n,o.tt=r,o.equals=a,o.Ot=n(t,void 0,r),o}w(t,e);var n=t.prototype;return n.dehanceValue=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.set=function(e){(e=this.xt(e))!==z.UNCHANGED&&this.gt(e)},n.xt=function(e){if(At(this)){var t=Mt(this,{object:this,type:or,newValue:e});if(!t)return z.UNCHANGED;e=t.newValue}return e=this.enhancer(e,this.Ot,this.tt),this.equals(this.Ot,e)?z.UNCHANGED:e},n.gt=function(e){var t=this.Ot;this.Ot=e,this.reportChanged(),Nt(this)&&Ft(this,{type:or,object:this,newValue:e,oldValue:t})},n.get=function(){return this.reportObserved(),this.dehanceValue(this.Ot)},n.St=function(e){return jt(this,e)},n._t=function(e,t){return t&&e({observableKind:`value`,debugObjectName:this.tt,object:this,type:or,newValue:this.Ot,oldValue:void 0}),Pt(this,e)},n.raw=function(){return this.Ot},n.toJSON=function(){return this.get()},n.toString=function(){return this.tt+`[`+this.Ot+`]`},n.valueOf=function(){return h(this.get())},n[Symbol.toPrimitive]=function(){return this.valueOf()},t}(hn),Fn=f(`ObservableValue`,Pn),In=function(){function e(e){this.I=L.P,this.D=[],this.W=null,this.F=new Set,this.q=0,this.$=0,this.U=L.L,this.G=0,this.Ot=new Rn(null),this.tt=void 0,this.At=void 0,this.bt=0,this.derivation=void 0,this.kt=void 0,this.Mt=Ln.NONE,this.Et=void 0,this.Vt=void 0,this.Rt=void 0,this.Nt=void 0,this.onBOL=void 0,this.onBUOL=void 0,e.get||t(31),this.derivation=e.get,this.tt=e.name||`ComputedValue`,e.set&&(this.kt=Ne(`ComputedValue-setter`,e.set)),this.Vt=e.equals||(e.compareStructural||e.struct?_n.structural:_n.default),this.Et=e.context,this.Rt=e.requiresReaction,this.Nt=!!e.keepAlive}var n=e.prototype;return n.H=function(){(function(e){e.U===L.L&&(e.U=L.B,e.F.forEach((function(e){e.I===L.L&&(e.I=L.B,e.H())})))})(this)},n.onBO=function(){this.onBOL&&this.onBOL.forEach((function(e){return e()}))},n.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(e){return e()}))},n.get=function(){if(this.isComputing&&t(32,this.tt,this.derivation),z.inBatch!==0||this.F.size!==0||this.Nt){if(tt(this),Ve(this)){var e=z.trackingContext;this.Nt&&!e&&(z.trackingContext=this),this.trackAndCompute()&&function(e){e.U!==L.K&&(e.U=L.K,e.F.forEach((function(t){t.I===L.B?t.I=L.K:t.I===L.L&&(e.U=L.L)})))}(this),z.trackingContext=e}}else Ve(this)&&(this.Tt(),$e(),this.Ot=this.Ct(!1),et());var n=this.Ot;if(Be(n))throw n.cause;return n},n.set=function(e){if(this.kt){this.isRunningSetter&&t(33,this.tt),this.isRunningSetter=!0;try{this.kt.call(this.Et,e)}finally{this.isRunningSetter=!1}}else t(34,this.tt)},n.trackAndCompute=function(){var e=this.Ot,t=this.I===L.P,n=this.Ct(!0),r=t||Be(e)||Be(n)||!this.Vt(e,n);return r&&(this.Ot=n),r},n.Ct=function(e){this.isComputing=!0;var t,n=Re(!1);if(e)t=He(this,this.derivation,this.Et);else if(!0===z.disableErrorBoundaries)t=this.derivation.call(this.Et);else try{t=this.derivation.call(this.Et)}catch(e){t=new Rn(e)}return ze(n),this.isComputing=!1,t},n.X=function(){this.Nt||(Ue(this),this.Ot=void 0)},n._t=function(e,t){var n=this,r=!0,i=void 0;return lt((function(){var a=n.get();if(!r||t){var o=Ge();e({observableKind:`computed`,debugObjectName:n.tt,type:or,object:n,newValue:a,oldValue:i}),Ke(o)}r=!1,i=a}))},n.Tt=function(){},n.toString=function(){return this.tt+`[`+this.derivation.toString()+`]`},n.valueOf=function(){return h(this.get())},n[Symbol.toPrimitive]=function(){return this.valueOf()},S(e,[{key:`isComputing`,get:function(){return _(this.bt,e.It)},set:function(t){this.bt=v(this.bt,e.It,t)}},{key:`isRunningSetter`,get:function(){return _(this.bt,e.Lt)},set:function(t){this.bt=v(this.bt,e.Lt,t)}},{key:`isBeingObserved`,get:function(){return _(this.bt,e.pt)},set:function(t){this.bt=v(this.bt,e.pt,t)}},{key:`isPendingUnobservation`,get:function(){return _(this.bt,e.yt)},set:function(t){this.bt=v(this.bt,e.yt,t)}},{key:`diffValue`,get:function(){return+!!_(this.bt,e.wt)},set:function(t){this.bt=v(this.bt,e.wt,t===1)}}])}();In.It=1,In.Lt=2,In.pt=4,In.yt=8,In.wt=16;var L,Ln,R=f(`ComputedValue`,In);(function(e){e[e.P=-1]=`NOT_TRACKING_`,e[e.L=0]=`UP_TO_DATE_`,e[e.B=1]=`POSSIBLY_STALE_`,e[e.K=2]=`STALE_`})(L||={}),function(e){e[e.NONE=0]=`NONE`,e[e.LOG=1]=`LOG`,e[e.BREAK=2]=`BREAK`}(Ln||={});var Rn=function(e){this.cause=void 0,this.cause=e},zn=[`mobxGuid`,`spyListeners`,`enforceActions`,`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`allowStateReads`,`disableErrorBoundaries`,`runId`,`UNCHANGED`,`useProxies`],Bn=function(){this.version=6,this.UNCHANGED={},this.trackingDerivation=null,this.trackingContext=null,this.runId=0,this.mobxGuid=0,this.inBatch=0,this.pendingUnobservations=[],this.pendingReactions=[],this.isRunningReactions=!1,this.allowStateChanges=!1,this.allowStateReads=!0,this.enforceActions=!0,this.spyListeners=[],this.globalReactionErrorHandlers=[],this.computedRequiresReaction=!1,this.reactionRequiresObservable=!1,this.observableRequiresReaction=!1,this.disableErrorBoundaries=!1,this.suppressReactionErrors=!1,this.useProxies=!0,this.verifyProxies=!1,this.safeDescriptors=!0},Vn=!0,Hn=!1,z=function(){var e=n();return e.__mobxInstanceCount>0&&!e.__mobxGlobals&&(Vn=!1),e.__mobxGlobals&&e.__mobxGlobals.version!==new Bn().version&&(Vn=!1),Vn?e.__mobxGlobals?(e.__mobxInstanceCount+=1,e.__mobxGlobals.UNCHANGED||(e.__mobxGlobals.UNCHANGED={}),e.__mobxGlobals):(e.__mobxInstanceCount=1,e.__mobxGlobals=new Bn):(setTimeout((function(){Hn||t(35)}),1),new Bn)}(),Un=function(){function e(e,t,n,r){e===void 0&&(e=`Reaction`),this.tt=void 0,this.Pt=void 0,this.Kt=void 0,this.Bt=void 0,this.D=[],this.W=[],this.I=L.P,this.q=0,this.G=0,this.bt=0,this.Mt=Ln.NONE,this.tt=e,this.Pt=t,this.Kt=n,this.Bt=r}var t=e.prototype;return t.H=function(){this.Y()},t.Y=function(){this.isScheduled||(this.isScheduled=!0,z.pendingReactions.push(this),rt())},t.J=function(){if(!this.isDisposed){$e(),this.isScheduled=!1;var e=z.trackingContext;if(z.trackingContext=this,Ve(this)){this.isTrackPending=!0;try{this.Pt()}catch(e){this.Dt(e)}}z.trackingContext=e,et()}},t.track=function(e){if(!this.isDisposed){$e(),this.isRunning=!0;var t=z.trackingContext;z.trackingContext=this;var n=He(this,e,void 0);z.trackingContext=t,this.isRunning=!1,this.isTrackPending=!1,this.isDisposed&&Ue(this),Be(n)&&this.Dt(n.cause),et()}},t.Dt=function(e){var t=this;if(this.Kt)this.Kt(e,this);else{if(z.disableErrorBoundaries)throw e;z.suppressReactionErrors||console.error(`[mobx] uncaught error in '`+this+`'`,e),z.globalReactionErrorHandlers.forEach((function(n){return n(e,t)}))}},t.dispose=function(){this.isDisposed||(this.isDisposed=!0,this.isRunning||($e(),Ue(this),et()))},t.Z=function(e){var t=this,n=function n(){t.dispose(),e==null||e.removeEventListener==null||e.removeEventListener(`abort`,n)};return e==null||e.addEventListener==null||e.addEventListener(`abort`,n),n[F]=this,`dispose`in Symbol&&typeof Symbol.dispose==`symbol`&&(n[Symbol.dispose]=n),n},t.toString=function(){return`Reaction[`+this.tt+`]`},t.trace=function(){},S(e,[{key:`isDisposed`,get:function(){return _(this.bt,e.Wt)},set:function(t){this.bt=v(this.bt,e.Wt,t)}},{key:`isScheduled`,get:function(){return _(this.bt,e.qt)},set:function(t){this.bt=v(this.bt,e.qt,t)}},{key:`isTrackPending`,get:function(){return _(this.bt,e.Gt)},set:function(t){this.bt=v(this.bt,e.Gt,t)}},{key:`isRunning`,get:function(){return _(this.bt,e.Ht)},set:function(t){this.bt=v(this.bt,e.Ht,t)}},{key:`diffValue`,get:function(){return+!!_(this.bt,e.wt)},set:function(t){this.bt=v(this.bt,e.wt,t===1)}}])}();Un.Wt=1,Un.qt=2,Un.Gt=4,Un.Ht=8,Un.wt=16;var Wn=function(e){return e()},Gn=f(`Reaction`,Un),Kn=ue(`action`),qn=ue(`action.bound`,{bound:!0}),Jn=ue(`autoAction`,{autoAction:!0}),Yn=ue(`autoAction.bound`,{autoAction:!0,bound:!0}),Xn=ot(!1);Object.assign(Xn,Kn);var Zn=ot(!0);Object.assign(Zn,Jn),Xn.bound=E(qn),Zn.bound=E(Yn);var Qn=function(e){return e()},$n=0,er=function(e){function t(){var n;return n=e.call(this,`FLOW_CANCELLED`)||this,Object.setPrototypeOf(n,(this instanceof t?this.constructor:void 0).prototype),n.name=`FlowCancellationError`,n}return w(t,e),t.prototype.toString=function(){return`Error: `+this.message},t}(T(Error)),tr=he(`flow`),nr=he(`flow.bound`,{bound:!0}),rr=Object.assign((function(e,t){if(oe(t))return tr.t(e,t);if(o(t))return ae(e,t,tr);var n=e,r=n.name||`<unnamed flow>`,i=function(){var e,t=this,i=arguments,o=++$n,s=Xn(r+` - runid: `+o+` - init`,n).apply(t,i),c=void 0,l=new Promise((function(t,n){function i(e){var t;c=void 0;try{t=Xn(r+` - runid: `+o+` - yield `+ d++,s.next).call(s,e)}catch(e){return n(e)}u(t)}function l(e){var t;c=void 0;try{t=Xn(r+` - runid: `+o+` - yield `+ d++,s.throw).call(s,e)}catch(e){return n(e)}u(t)}function u(e){if(!a(e?.then))return e.done?t(e.value):(c=Promise.resolve(e.value)).then(i,l);e.then(u,n)}var d=0;e=n,i(void 0)}));return l.cancel=Xn(r+` - runid: `+o+` - cancel`,(function(){try{c&&_t(c);var t=s.return(void 0),n=Promise.resolve(t.value);n.then(un,un),_t(n),e(new er)}catch(t){e(t)}})),l};return i.isMobXFlow=!0,i}),tr);rr.bound=E(nr);var ir={has:function(e,t){return kt(e).it(t)},get:function(e,t){return kt(e).ct(t)},set:function(e,t,n){var r;return!!o(t)&&((r=kt(e).ht(t,n,!0))==null||r)},deleteProperty:function(e,t){var n;return!!o(t)&&((n=kt(e).Ut(t,!0))==null||n)},defineProperty:function(e,t,n){var r;return(r=kt(e).l(t,n))==null||r},ownKeys:function(e){return kt(e).rt()},preventExtensions:function(){t(13)}},ar=Symbol(`mobx-keys`),or=`update`,sr={get:function(e,t){var n=e[F];return t===F?n:t===`length`?n.Ft():typeof t!=`string`||isNaN(t)?g(lr,t)?lr[t]:e[t]:n.ct(parseInt(t))},set:function(e,t,n){var r=e[F];return t===`length`&&r.Xt(n),typeof t==`symbol`||isNaN(t)?e[t]=n:r.ht(parseInt(t),n),!0},preventExtensions:function(){t(15)}},cr=function(){function e(e,t,n,r){e===void 0&&(e=`ObservableArray`),this.zt=void 0,this.$t=void 0,this.st=void 0,this.j=[],this.et=void 0,this.ut=void 0,this.Jt=void 0,this.dehancer=void 0,this.v=void 0,this.Yt=0,this.zt=n,this.$t=r,this.st=new hn(e),this.Jt=function(e,n){return t(e,n,`ObservableArray[..]`)}}var n=e.prototype;return n.Qt=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.ft=function(e){return this.dehancer!==void 0&&e.length>0?e.map(this.dehancer):e},n.St=function(e){return jt(this,e)},n._t=function(e,t){return t===void 0&&(t=!1),t&&e({observableKind:`array`,object:this.v,debugObjectName:this.st.tt,type:`splice`,index:0,added:this.j.slice(),addedCount:this.j.length,removed:[],removedCount:0}),Pt(this,e)},n.Ft=function(){return this.st.reportObserved(),this.j.length},n.Xt=function(e){(typeof e!=`number`||isNaN(e)||e<0)&&t(`Out of range: `+e);var n=this.j.length;if(e!==n)if(e>n){for(var r=Array(e-n),i=0;i<e-n;i++)r[i]=void 0;this.ot(n,0,r)}else this.ot(e,n-e)},n.Zt=function(e,n){e!==this.Yt&&t(16),this.Yt+=n,this.$t&&n>0&&qt(e+n+1)},n.ot=function(e,t,n){var r=this,i=this.j.length;if(e===void 0?e=0:e>i?e=i:e<0&&(e=Math.max(0,i+e)),t=arguments.length===1?i-e:t==null?0:Math.max(0,Math.min(t,i-e)),n===void 0&&(n=sn),At(this)){var a=Mt(this,{object:this.v,type:`splice`,index:e,removedCount:t,added:n});if(!a)return sn;t=a.removedCount,n=a.added}if(n=n.length===0?n:n.map((function(e){return r.Jt(e,void 0)})),this.$t){var o=n.length-t;this.Zt(i,o)}var s=this.tn(e,t,n);return t===0&&n.length===0||this.nn(e,n,s),this.ft(s)},n.tn=function(e,t,n){var r;if(n.length<1e4)return(r=this.j).splice.apply(r,[e,t].concat(n));var i=this.j.slice(e,e+t),a=this.j.slice(e+t);this.j.length+=n.length-t;for(var o=0;o<n.length;o++)this.j[e+o]=n[o];for(var s=0;s<a.length;s++)this.j[e+n.length+s]=a[s];return i},n.in=function(e,t,n){var r=!this.zt&&!1,i=Nt(this),a=i||r?{observableKind:`array`,object:this.v,type:or,debugObjectName:this.st.tt,index:e,newValue:t,oldValue:n}:null;this.st.reportChanged(),i&&Ft(this,a)},n.nn=function(e,t,n){var r=!this.zt&&!1,i=Nt(this),a=i||r?{observableKind:`array`,object:this.v,debugObjectName:this.st.tt,type:`splice`,index:e,removed:n,added:t,removedCount:n.length,addedCount:t.length}:null;this.st.reportChanged(),i&&Ft(this,a)},n.ct=function(e){if(!(this.$t&&e>=this.j.length))return this.st.reportObserved(),this.Qt(this.j[e]);console.warn(`[mobx] Out of bounds read: `+e)},n.ht=function(e,n){var r=this.j;if(this.$t&&e>r.length&&t(17,e,r.length),e<r.length){var i=r[e];if(At(this)){var a=Mt(this,{type:or,object:this.v,index:e,newValue:n});if(!a)return;n=a.newValue}(n=this.Jt(n,i))!==i&&(r[e]=n,this.in(e,n,i))}else{for(var o=Array(e+1-r.length),s=0;s<o.length-1;s++)o[s]=void 0;o[o.length-1]=n,this.ot(r.length,0,o)}},e}(),lr={clear:function(){return this.splice(0)},replace:function(e){var t=this[F];return t.ot(0,t.j.length,e)},toJSON:function(){return this.slice()},splice:function(e,t){var n=[...arguments].slice(2),r=this[F];switch(arguments.length){case 0:return[];case 1:return r.ot(e);case 2:return r.ot(e,t)}return r.ot(e,t,n)},spliceWithArray:function(e,t,n){return this[F].ot(e,t,n)},push:function(){for(var e=this[F],t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];return e.ot(e.j.length,0,n),e.j.length},pop:function(){return this.splice(Math.max(this[F].j.length-1,0),1)[0]},shift:function(){return this.splice(0,1)[0]},unshift:function(){for(var e=this[F],t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];return e.ot(0,0,n),e.j.length},reverse:function(){return z.trackingDerivation&&t(37,`reverse`),this.replace(this.slice().reverse()),this},sort:function(){z.trackingDerivation&&t(37,`sort`);var e=this.slice();return e.sort.apply(e,arguments),this.replace(e),this},remove:function(e){var t=this[F],n=t.ft(t.j).indexOf(e);return n>-1&&(this.splice(n,1),!0)}};k(`at`,Lt),k(`concat`,Lt),k(`flat`,Lt),k(`includes`,Lt),k(`indexOf`,Lt),k(`join`,Lt),k(`lastIndexOf`,Lt),k(`slice`,Lt),k(`toString`,Lt),k(`toLocaleString`,Lt),k(`toSorted`,Lt),k(`toSpliced`,Lt),k(`with`,Lt),k(`every`,A),k(`filter`,A),k(`find`,A),k(`findIndex`,A),k(`findLast`,A),k(`findLastIndex`,A),k(`flatMap`,A),k(`forEach`,A),k(`map`,A),k(`some`,A),k(`toReversed`,A),k(`reduce`,Rt),k(`reduceRight`,Rt);var ur,dr,fr=f(`ObservableArrayAdministration`,cr),pr={},mr=`add`,hr=function(){function e(e,n,r){var i=this;n===void 0&&(n=ce),r===void 0&&(r=`ObservableMap`),this.Jt=void 0,this.tt=void 0,this[F]=pr,this.vt=void 0,this.dt=void 0,this.lt=void 0,this.et=void 0,this.ut=void 0,this.dehancer=void 0,this.Jt=n,this.tt=r,a(Map)||t(18),Qt((function(){i.lt=se(`ObservableMap.keys()`),i.vt=new Map,i.dt=new Map,e&&i.merge(e)}))}var n=e.prototype;return n.it=function(e){return this.vt.has(e)},n.has=function(e){var t=this;if(!z.trackingDerivation)return this.it(e);var n=this.dt.get(e);if(!n){var r=n=new Pn(this.it(e),le,`ObservableMap.key?`,!1);this.dt.set(e,r),ft(r,(function(){return t.dt.delete(e)}))}return n.get()},n.set=function(e,t){var n=this.it(e);if(At(this)){var r=Mt(this,{type:n?or:mr,object:this,newValue:t,name:e});if(!r)return this;t=r.newValue}return n?this.rn(e,t):this.en(e,t),this},n.delete=function(e){var t=this;if(At(this)&&!Mt(this,{type:`delete`,object:this,name:e}))return!1;if(this.it(e)){var n=Nt(this),r=n?{observableKind:`map`,debugObjectName:this.tt,type:`delete`,object:this,oldValue:this.vt.get(e).Ot,name:e}:null;return Et((function(){var n;t.lt.reportChanged(),(n=t.dt.get(e))==null||n.gt(!1),t.vt.get(e).gt(void 0),t.vt.delete(e)})),n&&Ft(this,r),!0}return!1},n.rn=function(e,t){var n=this.vt.get(e);if((t=n.xt(t))!==z.UNCHANGED){var r=Nt(this),i=r?{observableKind:`map`,debugObjectName:this.tt,type:or,object:this,oldValue:n.Ot,name:e,newValue:t}:null;n.gt(t),r&&Ft(this,i)}},n.en=function(e,t){var n=this;Et((function(){var r,i=new Pn(t,n.Jt,`ObservableMap.key`,!1);n.vt.set(e,i),t=i.Ot,(r=n.dt.get(e))==null||r.gt(!0),n.lt.reportChanged()}));var r=Nt(this);r&&Ft(this,r?{observableKind:`map`,debugObjectName:this.tt,type:mr,object:this,name:e,newValue:t}:null)},n.get=function(e){return this.has(e)?this.Qt(this.vt.get(e).get()):this.Qt(void 0)},n.Qt=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.keys=function(){return this.lt.reportObserved(),this.vt.keys()},n.values=function(){var e=this,t=this.keys();return Bt({next:function(){var n=t.next(),r=n.done;return{done:r,value:r?void 0:e.get(n.value)}}})},n.entries=function(){var e=this,t=this.keys();return Bt({next:function(){var n=t.next(),r=n.done,i=n.value;return{done:r,value:r?void 0:[i,e.get(i)]}}})},n[Symbol.iterator]=function(){return this.entries()},n.forEach=function(e,t){for(var n,r=C(this);!(n=r()).done;){var i=n.value;e.call(t,i[1],i[0],this)}},n.merge=function(e){var n=this;return gr(e)&&(e=new Map(e)),Et((function(){var r,i;c(e)?function(e){var t=Object.keys(e);if(!dn)return t;var n=Object.getOwnPropertySymbols(e);return n.length?[].concat(t,n.filter((function(t){return on.propertyIsEnumerable.call(e,t)}))):t}(e).forEach((function(t){return n.set(t,e[t])})):Array.isArray(e)?e.forEach((function(e){return n.set(e[0],e[1])})):p(e)?(r=Object.getPrototypeOf(e),i=Object.getPrototypeOf(r),Object.getPrototypeOf(i)!==null&&t(19,e),e.forEach((function(e,t){return n.set(t,e)}))):e!=null&&t(20,e)})),this},n.clear=function(){var e=this;Et((function(){We((function(){for(var t,n=C(e.keys());!(t=n()).done;)e.delete(t.value)}))}))},n.replace=function(e){var n=this;return Et((function(){for(var r,i=function(e){if(p(e)||gr(e))return e;if(Array.isArray(e))return new Map(e);if(c(e)){var n=new Map;for(var r in e)n.set(r,e[r]);return n}return t(21,e)}(e),a=new Map,o=!1,s=C(n.vt.keys());!(r=s()).done;){var l=r.value;if(!i.has(l))if(n.delete(l))o=!0;else{var u=n.vt.get(l);a.set(l,u)}}for(var d,f=C(i.entries());!(d=f()).done;){var m=d.value,h=m[0],g=m[1],_=n.vt.has(h);if(n.set(h,g),n.vt.has(h)){var v=n.vt.get(h);a.set(h,v),_||(o=!0)}}if(!o)if(n.vt.size!==a.size)n.lt.reportChanged();else for(var y=n.vt.keys(),b=a.keys(),x=y.next(),S=b.next();!x.done;){if(x.value!==S.value){n.lt.reportChanged();break}x=y.next(),S=b.next()}n.vt=a})),this},n.toString=function(){return`[object ObservableMap]`},n.toJSON=function(){return Array.from(this)},n._t=function(e){return Pt(this,e)},n.St=function(e){return jt(this,e)},S(e,[{key:`size`,get:function(){return this.lt.reportObserved(),this.vt.size}},{key:Symbol.toStringTag,get:function(){return`Map`}}])}(),gr=f(`ObservableMap`,hr),_r={},vr=function(){function e(e,n,r){var i=this;n===void 0&&(n=ce),r===void 0&&(r=`ObservableSet`),this.tt=void 0,this[F]=_r,this.vt=new Set,this.st=void 0,this.ut=void 0,this.et=void 0,this.dehancer=void 0,this.Jt=void 0,this.tt=r,a(Set)||t(22),this.Jt=function(e,t){return n(e,t,r)},Qt((function(){i.st=se(i.tt),e&&i.replace(e)}))}var n=e.prototype;return n.Qt=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.clear=function(){var e=this;Et((function(){We((function(){for(var t,n=C(e.vt.values());!(t=n()).done;)e.delete(t.value)}))}))},n.forEach=function(e,t){for(var n,r=C(this);!(n=r()).done;){var i=n.value;e.call(t,i,i,this)}},n.add=function(e){var t=this;if(At(this)){var n=Mt(this,{type:mr,object:this,newValue:e});if(!n)return this;e=n.newValue}if(!this.has(e)){Et((function(){t.vt.add(t.Jt(e,void 0)),t.st.reportChanged()}));var r=Nt(this);r&&Ft(this,r?{observableKind:`set`,debugObjectName:this.tt,type:mr,object:this,newValue:e}:null)}return this},n.delete=function(e){var t=this;if(At(this)&&!Mt(this,{type:`delete`,object:this,oldValue:e}))return!1;if(this.has(e)){var n=Nt(this),r=n?{observableKind:`set`,debugObjectName:this.tt,type:`delete`,object:this,oldValue:e}:null;return Et((function(){t.st.reportChanged(),t.vt.delete(e)})),n&&Ft(this,r),!0}return!1},n.has=function(e){return this.st.reportObserved(),this.vt.has(this.Qt(e))},n.entries=function(){var e=this.values();return Vt({next:function(){var t=e.next(),n=t.value,r=t.done;return r?{value:void 0,done:r}:{value:[n,n],done:r}}})},n.keys=function(){return this.values()},n.values=function(){this.st.reportObserved();var e=this,t=this.vt.values();return Vt({next:function(){var n=t.next(),r=n.done;return r?{value:void 0,done:r}:{value:e.Qt(n.value),done:r}}})},n.intersection=function(e){return m(e)&&!yr(e)?e.intersection(this):new Set(this).intersection(e)},n.union=function(e){return m(e)&&!yr(e)?e.union(this):new Set(this).union(e)},n.difference=function(e){return new Set(this).difference(e)},n.symmetricDifference=function(e){return m(e)&&!yr(e)?e.symmetricDifference(this):new Set(this).symmetricDifference(e)},n.isSubsetOf=function(e){return new Set(this).isSubsetOf(e)},n.isSupersetOf=function(e){return new Set(this).isSupersetOf(e)},n.isDisjointFrom=function(e){return m(e)&&!yr(e)?e.isDisjointFrom(this):new Set(this).isDisjointFrom(e)},n.replace=function(e){var n=this;return yr(e)&&(e=new Set(e)),Et((function(){Array.isArray(e)||m(e)?(n.clear(),e.forEach((function(e){return n.add(e)}))):e!=null&&t(`Cannot initialize set from `+e)})),this},n._t=function(e){return Pt(this,e)},n.St=function(e){return jt(this,e)},n.toJSON=function(){return Array.from(this)},n.toString=function(){return`[object ObservableSet]`},n[Symbol.iterator]=function(){return this.values()},S(e,[{key:`size`,get:function(){return this.st.reportObserved(),this.vt.size}},{key:Symbol.toStringTag,get:function(){return`Set`}}])}(),yr=f(`ObservableSet`,vr),br=Object.create(null),xr=function(){function e(e,t,n,r){t===void 0&&(t=new Map),r===void 0&&(r=yn),this.h=void 0,this.j=void 0,this.tt=void 0,this.un=void 0,this.lt=void 0,this.ut=void 0,this.et=void 0,this.v=void 0,this.p=void 0,this.on=void 0,this.sn=void 0,this.h=e,this.j=t,this.tt=n,this.un=r,this.lt=new hn(`ObservableObject.keys`),this.p=c(this.h)}var n=e.prototype;return n.O=function(e){return this.j.get(e).get()},n.S=function(e,t){var n=this.j.get(e);if(n instanceof In)return n.set(t),!0;if(At(this)){var r=Mt(this,{type:or,object:this.v||this.h,name:e,newValue:t});if(!r)return null;t=r.newValue}if((t=n.xt(t))!==z.UNCHANGED){var i=Nt(this),a=i?{type:or,observableKind:`object`,debugObjectName:this.tt,object:this.v||this.h,oldValue:n.Ot,name:e,newValue:t}:null;n.gt(t),i&&Ft(this,a)}return!0},n.ct=function(e){return z.trackingDerivation&&!g(this.h,e)&&this.it(e),this.h[e]},n.ht=function(e,t,n){return n===void 0&&(n=!1),g(this.h,e)?this.j.has(e)?this.S(e,t):n?Reflect.set(this.h,e,t):(this.h[e]=t,!0):this.s(e,{value:t,enumerable:!0,writable:!0,configurable:!0},this.un,n)},n.it=function(e){if(!z.trackingDerivation)return e in this.h;this.sn||=new Map;var t=this.sn.get(e);return t||(t=new Pn(e in this.h,le,`ObservableObject.key?`,!1),this.sn.set(e,t)),t.get()},n.o=function(e,n){if(!0===n&&(n=this.un),!1!==n){if(!(e in this.h)){var r;if((r=this.h[mn])!=null&&r[e])return;t(1,n.i,this.tt+`.`+e.toString())}for(var i=this.h;i&&i!==on;){var a=rn(i,e);if(a){var o=n.o(this,e,a,i);if(o===0)return;if(o===1)break}i=Object.getPrototypeOf(i)}Gt(this,0,e)}},n.s=function(e,t,n,r){if(r===void 0&&(r=!1),!0===n&&(n=this.un),!1===n)return this.l(e,t,r);var i=n.s(this,e,t,r);return i&&Gt(this,0,e),i},n.l=function(e,t,n){n===void 0&&(n=!1);try{$e();var r=this.Ut(e);if(!r)return r;if(At(this)){var i=Mt(this,{object:this.v||this.h,name:e,type:mr,newValue:t.value});if(!i)return null;var a=i.newValue;t.value!==a&&(t=ee({},t,{value:a}))}if(n){if(!Reflect.defineProperty(this.h,e,t))return!1}else an(this.h,e,t);this.fn(e,t.value)}finally{et()}return!0},n.g=function(e,t,n,r){r===void 0&&(r=!1);try{$e();var i=this.Ut(e);if(!i)return i;if(At(this)){var a=Mt(this,{object:this.v||this.h,name:e,type:mr,newValue:t});if(!a)return null;t=a.newValue}var o=Ut(e),s={configurable:!z.safeDescriptors||this.p,enumerable:!0,get:o.get,set:o.set};if(r){if(!Reflect.defineProperty(this.h,e,s))return!1}else an(this.h,e,s);var c=new Pn(t,n,`ObservableObject.key`,!1);this.j.set(e,c),this.fn(e,c.Ot)}finally{et()}return!0},n.m=function(e,t,n){n===void 0&&(n=!1);try{$e();var r=this.Ut(e);if(!r)return r;if(At(this)&&!Mt(this,{object:this.v||this.h,name:e,type:mr,newValue:void 0}))return null;t.name||=`ObservableObject.key`,t.context=this.v||this.h;var i=Ut(e),a={configurable:!z.safeDescriptors||this.p,enumerable:!1,get:i.get,set:i.set};if(n){if(!Reflect.defineProperty(this.h,e,a))return!1}else an(this.h,e,a);this.j.set(e,new In(t)),this.fn(e,void 0)}finally{et()}return!0},n.Ut=function(e,t){if(t===void 0&&(t=!1),!g(this.h,e))return!0;if(At(this)&&!Mt(this,{object:this.v||this.h,name:e,type:`remove`}))return null;try{var n;$e();var r=Nt(this),i=this.j.get(e),a=void 0;if(!i&&r&&(a=rn(this.h,e)?.value),t){if(!Reflect.deleteProperty(this.h,e))return!1}else delete this.h[e];i&&(this.j.delete(e),i instanceof Pn&&(a=i.Ot),nt(i)),this.lt.reportChanged(),(n=this.sn)==null||(n=n.get(e))==null||n.set(e in this.h),r&&r&&Ft(this,{type:`remove`,observableKind:`object`,object:this.v||this.h,debugObjectName:this.tt,oldValue:a,name:e})}finally{et()}return!0},n._t=function(e){return Pt(this,e)},n.St=function(e){return jt(this,e)},n.fn=function(e,t){var n,r=Nt(this);r&&r&&Ft(this,r?{type:mr,observableKind:`object`,debugObjectName:this.tt,object:this.v||this.h,name:e,newValue:t}:null),(n=this.sn)==null||(n=n.get(e))==null||n.set(!0),this.lt.reportChanged()},n.rt=function(){return this.lt.reportObserved(),fn(this.h)},n.nt=function(){return this.lt.reportObserved(),Object.keys(this.h)},e}(),B=f(`ObservableObjectAdministration`,xr),Sr=Kt(0),Cr=function(){var e=!1,t={};return Object.defineProperty(t,`0`,{set:function(){e=!0}}),Object.create(t)[0]=1,!1===e}(),wr=0,Tr=function(){};ur=Tr,dr=Array.prototype,Object.setPrototypeOf?Object.setPrototypeOf(ur.prototype,dr):ur.prototype.__proto__===void 0?ur.prototype=dr:ur.prototype.__proto__=dr;var Er=function(e){function t(t,n,r,i){var a;return r===void 0&&(r=`ObservableArray`),i===void 0&&(i=!1),a=e.call(this)||this,Qt((function(){var e=new cr(r,n,i,!0);e.v=a,d(a,F,e),t&&t.length&&a.spliceWithArray(0,0,t),Cr&&Object.defineProperty(a,`0`,Sr)})),a}w(t,e);var n=t.prototype;return n.concat=function(){this[F].st.reportObserved();var e=[...arguments];return Array.prototype.concat.apply(this.slice(),e.map((function(e){return zt(e)?e.slice():e})))},n[Symbol.iterator]=function(){var e=this,t=0;return en({next:function(){return t<e.length?{value:e[t++],done:!1}:{done:!0,value:void 0}}})},S(t,[{key:`length`,get:function(){return this[F].Ft()},set:function(e){this[F].Xt(e)}},{key:Symbol.toStringTag,get:function(){return`Array`}}])}(Tr);Object.entries(lr).forEach((function(e){var t=e[0];t!==`concat`&&u(Er.prototype,t,e[1])})),qt(1e3);var Dr=on.toString,Or=n().Iterator?.prototype||{};[`Symbol`,`Map`,`Set`].forEach((function(e){n()[e]===void 0&&t(`MobX requires global '`+e+`' to be available or polyfilled`)})),typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__==`object`&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:at,extras:{getDebugName:Zt},$mobx:F}),e.$mobx=F,e.FlowCancellationError=er,e.ObservableMap=hr,e.ObservableSet=vr,e.Reaction=Un,e._allowStateChanges=Le,e._allowStateChangesInsideComputed=st,e._allowStateReadsEnd=Je,e._allowStateReadsStart=qe,e._autoAction=Zn,e._endAction=Ie,e._getAdministration=Xt,e._getGlobalState=function(){return z},e._interceptReads=function(e,t,n){var r;return gr(e)||zt(e)||Fn(e)?r=Xt(e):Wt(e)&&(r=Xt(e,t)),r.dehancer=typeof t==`function`?t:n,function(){r.dehancer=void 0}},e._isComputingDerivation=function(){return z.trackingDerivation!==null},e._resetGlobalState=function(){var e=new Bn;for(var t in e)zn.indexOf(t)===-1&&(z[t]=e[t]);z.allowStateChanges=!z.enforceActions},e._startAction=Fe,e.action=Xn,e.autorun=lt,e.comparer=_n,e.computed=kn,e.configure=function(e){!0===e.isolateGlobalState&&function(){if((z.pendingReactions.length||z.inBatch||z.isRunningReactions)&&t(36),Hn=!0,Vn){var e=n();--e.__mobxInstanceCount==0&&(e.__mobxGlobals=void 0),z=new Bn}}();var r,i,a=e.useProxies,o=e.enforceActions;if(a!==void 0&&(z.useProxies=a===`always`||a!==`never`&&typeof Proxy<`u`),a===`ifavailable`&&(z.verifyProxies=!0),o!==void 0){var s=o===`always`?`always`:o===`observed`;z.enforceActions=s,z.allowStateChanges=!0!==s&&s!==`always`}[`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`disableErrorBoundaries`,`safeDescriptors`].forEach((function(t){t in e&&(z[t]=!!e[t])})),z.allowStateReads=!z.observableRequiresReaction,e.reactionScheduler&&(r=e.reactionScheduler,i=Wn,Wn=function(e){return r((function(){return i(e)}))})},e.createAtom=se,e.defineProperty=function(e,n,r){if(Wt(e))return e[F].l(n,r);t(39)},e.entries=function(e){return Wt(e)?St(e).map((function(t){return[t,e[t]]})):gr(e)?St(e).map((function(t){return[t,e.get(t)]})):yr(e)?Array.from(e.entries()):zt(e)?e.map((function(e,t){return[t,e]})):void t(7)},e.extendObservable=mt,e.flow=rr,e.flowResult=function(e){return e},e.get=function(e,n){if(Ct(e,n))return Wt(e)?e[F].ct(n):gr(e)?e.get(n):zt(e)?e[n]:void t(11)},e.getAtom=Yt,e.getDebugName=Zt,e.getDependencyTree=function(e,t){return ht(Yt(e,t))},e.getObserverTree=function(e,t){return gt(Yt(e,t))},e.has=Ct,e.intercept=function(e,t,n){return a(n)?function(e,t,n){return Xt(e,t).St(n)}(e,t,n):function(e,t){return Xt(e).St(t)}(e,t)},e.isAction=ct,e.isBoxedObservable=Fn,e.isComputed=function(e){return yt(e)},e.isComputedProp=function(e,t){return yt(e,t)},e.isFlow=vt,e.isFlowCancellationError=function(e){return e instanceof er},e.isObservable=xt,e.isObservableArray=zt,e.isObservableMap=gr,e.isObservableObject=Wt,e.isObservableProp=function(e,t){return bt(e,t)},e.isObservableSet=yr,e.keys=St,e.makeAutoObservable=function(e,t,n){return c(e)?mt(e,e,t,n):(Qt((function(){var r=Ht(e,n)[F];if(!e[ar]){var i=Object.getPrototypeOf(e),a=new Set([].concat(fn(e),fn(i)));a.delete(`constructor`),a.delete(F),u(i,ar,a)}e[ar].forEach((function(e){return r.o(e,!t||!(e in t)||t[e])}))})),e)},e.makeObservable=function(e,t,n){return Qt((function(){var r=Ht(e,n)[F];t??=function(e){return g(e,mn)||u(e,mn,ee({},e[mn])),e[mn]}(e),fn(t).forEach((function(e){return r.o(e,t[e])}))})),e},e.observable=En,e.observe=function(e,t,n,r){return a(n)?function(e,t,n,r){return Xt(e,t)._t(n,r)}(e,t,n,r):function(e,t,n){return Xt(e)._t(t,n)}(e,t,n)},e.onBecomeObserved=dt,e.onBecomeUnobserved=ft,e.onReactionError=function(e){return z.globalReactionErrorHandlers.push(e),function(){var t=z.globalReactionErrorHandlers.indexOf(e);t>=0&&z.globalReactionErrorHandlers.splice(t,1)}},e.override=vn,e.ownKeys=wt,e.reaction=function(e,t,n){function r(){if(p=!1,!h.isDisposed){var t=!1,r=s;h.track((function(){var n=Le(!1,(function(){return e(h)}));t=f||!m(s,n),s=n})),(f&&n.fireImmediately||!f&&t)&&l(s,r,h),f=!1}}var i;n===void 0&&(n=cn);var a,o,s,c=n.name??`Reaction`,l=Xn(c,n.onError?(a=n.onError,o=t,function(){try{return o.apply(this,arguments)}catch(e){a.call(this,e)}}):t),u=!n.scheduler&&!n.delay,d=ut(n),f=!0,p=!1,m=n.compareStructural?_n.structural:n.equals||_n.default,h=new Un(c,(function(){f||u?r():p||(p=!0,d(r))}),n.onError,n.requiresObservable);return(i=n)!=null&&(i=i.signal)!=null&&i.aborted||h.Y(),h.Z(n?.signal)},e.remove=function(e,n){Wt(e)?e[F].Ut(n):gr(e)||yr(e)?e.delete(n):zt(e)?(typeof n!=`number`&&(n=parseInt(n,10)),e.splice(n,1)):t(9)},e.runInAction=st,e.set=function e(n,r,i){if(arguments.length!==2||yr(n))Wt(n)?n[F].ht(r,i):gr(n)?n.set(r,i):yr(n)?n.add(r):zt(n)?(typeof r!=`number`&&(r=parseInt(r,10)),r<0&&t(`Invalid index: '`+r+`'`),$e(),r>=n.length&&(n.length=r+1),n[r]=i,et()):t(8);else{$e();var a=r;try{for(var o in a)e(n,o,a[o])}finally{et()}}},e.spy=at,e.toJS=function(e){return function e(t,n){if(typeof t!=`object`||!t||t instanceof Date||!xt(t))return t;if(Fn(t)||R(t))return e(t.get(),n);if(n.has(t))return n.get(t);if(zt(t)){var r=Tt(n,t,Array(t.length));return t.forEach((function(t,i){r[i]=e(t,n)})),r}if(yr(t)){var i=Tt(n,t,new Set);return t.forEach((function(t){i.add(e(t,n))})),i}if(gr(t)){var a=Tt(n,t,new Map);return t.forEach((function(t,r){a.set(r,e(t,n))})),a}var o=Tt(n,t,{});return wt(t).forEach((function(r){on.propertyIsEnumerable.call(t,r)&&(o[r]=e(t[r],n))})),o}(e,new Map)},e.trace=function(){},e.transaction=Et,e.untracked=We,e.values=function(e){return Wt(e)?St(e).map((function(t){return e[t]})):gr(e)?St(e).map((function(t){return e.get(t)})):yr(e)?Array.from(e.values()):zt(e)?e.slice():void t(6)},e.when=function(e,t,n){return arguments.length===1||t&&typeof t==`object`?Ot(e,t):Dt(e,t,n||{})}})),Mg=pe((e=>{Object.defineProperty(e,`__esModule`,{value:!0});var t={0:`Invalid value for configuration 'enforceActions', expected 'never', 'always' or 'observed'`,1:function(e,t){return`Cannot apply '`+e+`' to '`+t.toString()+`': Field not found.`},5:`'keys()' can only be used on observable objects, arrays, sets and maps`,6:`'values()' can only be used on observable objects, arrays, sets and maps`,7:`'entries()' can only be used on observable objects, arrays and maps`,8:`'set()' can only be used on observable objects, arrays and maps`,9:`'remove()' can only be used on observable objects, arrays and maps`,10:`'has()' can only be used on observable objects, arrays and maps`,11:`'get()' can only be used on observable objects, arrays and maps`,12:`Invalid annotation`,13:`Dynamic observable objects cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)`,14:`Intercept handlers should return nothing or a change object`,15:`Observable arrays cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)`,16:`Modification exception: the internal structure of an observable array was changed.`,17:function(e,t){return`[mobx.array] Index out of bounds, `+e+` is larger than `+t},18:`mobx.map requires Map polyfill for the current browser. Check babel-polyfill or core-js/es6/map.js`,19:function(e){return`Cannot initialize from classes that inherit from Map: `+e.constructor.name},20:function(e){return`Cannot initialize map from `+e},21:function(e){return`Cannot convert to map from '`+e+`'`},22:`mobx.set requires Set polyfill for the current browser. Check babel-polyfill or core-js/es6/set.js`,23:`It is not possible to get index atoms from arrays`,24:function(e){return`Cannot obtain administration from `+e},25:function(e,t){return`the entry '`+e+`' does not exist in the observable map '`+t+`'`},26:`please specify a property`,27:function(e,t){return`no observable property '`+e.toString()+`' found on the observable object '`+t+`'`},28:function(e){return`Cannot obtain atom from `+e},29:`Expecting some object`,30:`invalid action stack. did you forget to finish an action?`,31:`missing option for computed: get`,32:function(e,t){return`Cycle detected in computation `+e+`: `+t},33:function(e){return`The setter of computed value '`+e+`' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?`},34:function(e){return`[ComputedValue '`+e+`'] It is not possible to assign a new value to a computed value.`},35:"There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`",36:`isolateGlobalState should be called before MobX is running any reactions`,37:function(e){return"[mobx] `observableArray."+e+"()` mutates the array in-place, which is not allowed inside a derivation. Use `array.slice()."+e+"()` instead"},38:`'ownKeys()' can only be used on observable objects`,39:`'defineProperty()' can only be used on observable objects`};function n(e){var n=[...arguments].slice(1),r=typeof e==`string`?e:t[e];throw typeof r==`function`&&(r=r.apply(null,n)),Error(`[MobX] `+r)}var r={};function i(){return typeof globalThis<`u`?globalThis:typeof window<`u`?window:typeof global<`u`?global:typeof self<`u`?self:r}var a=Object.assign,o=Object.getOwnPropertyDescriptor,s=Object.defineProperty,c=Object.prototype,l=[];Object.freeze(l);var u={};Object.freeze(u);var d=typeof Proxy<`u`,f=Object.toString();function p(){d||n("`Proxy` objects are not available in the current environment. Please configure MobX to enable a fallback implementation.`")}function m(e){I.verifyProxies&&n(`MobX is currently configured to be able to run in ES5 mode, but in ES5 MobX won't be able to `+e)}function h(){return++I.mobxGuid}function g(e){var t=!1;return function(){if(!t)return t=!0,e.apply(this,arguments)}}var _=function(){};function v(e){return typeof e==`function`}function y(e){switch(typeof e){case`string`:case`symbol`:case`number`:return!0}return!1}function b(e){return typeof e==`object`&&!!e}function x(e){if(!b(e))return!1;var t=Object.getPrototypeOf(e);if(t==null)return!0;var n=Object.hasOwnProperty.call(t,`constructor`)&&t.constructor;return typeof n==`function`&&n.toString()===f}function S(e){var t=e?.constructor;return t?t.name===`GeneratorFunction`||t.displayName===`GeneratorFunction`:!1}function C(e,t,n){s(e,t,{enumerable:!1,writable:!0,configurable:!0,value:n})}function ee(e,t,n){s(e,t,{enumerable:!1,writable:!1,configurable:!0,value:n})}function te(e,t){var n=`isMobX`+e;return t.prototype[n]=!0,function(e){return b(e)&&e[n]===!0}}function w(e){return e!=null&&Object.prototype.toString.call(e)===`[object Map]`}function ne(e){return Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(e)))===null}function re(e){return e!=null&&Object.prototype.toString.call(e)===`[object Set]`}var ie=Object.getOwnPropertySymbols!==void 0;function T(e){var t=Object.keys(e);if(!ie)return t;var n=Object.getOwnPropertySymbols(e);return n.length?[].concat(t,n.filter(function(t){return c.propertyIsEnumerable.call(e,t)})):t}var E=typeof Reflect<`u`&&Reflect.ownKeys?Reflect.ownKeys:ie?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames;function ae(e){return typeof e==`string`?e:typeof e==`symbol`?e.toString():new String(e).toString()}function oe(e){return e===null?null:typeof e==`object`?``+e:e}function se(e,t){return c.hasOwnProperty.call(e,t)}var ce=Object.getOwnPropertyDescriptors||function(e){var t={};return E(e).forEach(function(n){t[n]=o(e,n)}),t};function le(e,t){return!!(e&t)}function ue(e,t,n){return n?e|=t:e&=~t,e}function de(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function fe(e,t,n){if(ye())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var i=new(e.bind.apply(e,r));return n&&be(i,n.prototype),i}function pe(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,Se(r.key),r)}}function me(e,t,n){return t&&pe(e.prototype,t),n&&pe(e,n),Object.defineProperty(e,`prototype`,{writable:!1}),e}function he(e,t){var n=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=Ce(e))||t&&e&&typeof e.length==`number`){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw TypeError(`Invalid attempt to iterate non-iterable instance.
56
+ '`+s.i+`' can only be used on properties with a function value.`)}function me(e,t,n,r,i){var a,o,s;i===void 0&&(i=z.safeDescriptors);var c=r.value;return(a=t.u)!=null&&a.bound&&(c=c.bind(e.v??e.h)),{value:Ne(t.u?.name??n.toString(),c,(o=t.u?.autoAction)!=null&&o,(s=t.u)!=null&&s.bound?e.v??e.h:void 0),configurable:!i||e.p,enumerable:!1,writable:!i}}function he(e,t){return{i:e,u:t,o:D,s:ge,t:_e}}function D(e,t,n,r){var i;return r===e.h?this.s(e,t,n,!1)===null?0:2:(i=this.u)!=null&&i.bound&&(!g(e.h,t)||!vt(e.h[t]))&&this.s(e,t,n,!1)===null?0:vt(n.value)?1:(an(r,t,ve(e,0,0,n,!1,!1)),2)}function ge(e,t,n,r){var i=ve(e,0,0,n,this.u?.bound);return e.l(t,i,r)}function _e(e,t){var n,r=t.name,i=t.addInitializer;return vt(e)||(e=rr(e)),(n=this.u)!=null&&n.bound&&i((function(){var e=this[r].bind(this);e.isMobXFlow=!0,this[r]=e})),e}function ve(e,t,n,r,i,a){a===void 0&&(a=z.safeDescriptors);var o=r.value;return vt(o)||(o=rr(o)),i&&((o=o.bind(e.v??e.h)).isMobXFlow=!0),{value:o,configurable:!a||e.p,enumerable:!1,writable:!a}}function ye(e,t){return{i:e,u:t,o:be,s:xe,t:Se}}function be(e,t,n){return this.s(e,t,n,!1)===null?0:1}function xe(e,t,n,r){return e.m(t,ee({},this.u,{get:n.get,set:n.set}),r)}function Se(e,t){var n=this,r=t.name;return(0,t.addInitializer)((function(){var t=Ht(this)[F],i=ee({},n.u,{get:e,context:this});i.name||=`ObservableObject.`+r.toString(),t.j.set(r,new In(i))})),function(){return this[F].O(r)}}function Ce(e,t){return{i:e,u:t,o:we,s:Te,t:Ee}}function we(e,t,n){return this.s(e,t,n,!1)===null?0:1}function Te(e,t,n,r){return e.g(t,n.value,this.u?.enhancer??ce,r)}function Ee(e,t){function n(e,t){var n=Ht(e)[F],i=new Pn(t,r.u?.enhancer??ce,`ObservableObject.`+a.toString(),!1);n.j.set(a,i),o.add(e)}var r=this,i=t.kind,a=t.name,o=new WeakSet;if(i==`accessor`)return{get:function(){return o.has(this)||n(this,e.get.call(this)),this[F].O(a)},set:function(e){return o.has(this)||n(this,e),this[F].S(a,e)},init:function(e){return o.has(this)||n(this,e),e}}}function De(e){return{i:`true`,u:e,o:Oe,s:ke,t:Ae}}function Oe(e,t,n,r){var i,a,o;if(n.get)return kn.o(e,t,n,r);if(n.set){var s=ct(n.set)?n.set:Ne(t.toString(),n.set);return r===e.h?e.l(t,{configurable:!z.safeDescriptors||e.p,set:s})===null?0:2:(an(r,t,{configurable:!0,set:s}),2)}if(r!==e.h&&typeof n.value==`function`)return l(n.value)?((o=this.u)!=null&&o.autoBind?rr.bound:rr).o(e,t,n,r):((a=this.u)!=null&&a.autoBind?Zn.bound:Zn).o(e,t,n,r);var c=!1===this.u?.deep?En.ref:En;return typeof n.value==`function`&&(i=this.u)!=null&&i.autoBind&&(n.value=n.value.bind(e.v??e.h)),c.o(e,t,n,r)}function ke(e,t,n,r){var i;return n.get?kn.s(e,t,n,r):n.set?e.l(t,{configurable:!z.safeDescriptors||e.p,set:Ne(t.toString(),n.set)},r):(typeof n.value==`function`&&(i=this.u)!=null&&i.autoBind&&(n.value=n.value.bind(e.v??e.h)),(!1===this.u?.deep?En.ref:En).s(e,t,n,r))}function Ae(){t(`'`+this.i+`' cannot be used as a decorator`)}function je(e){return e||bn}function O(e){return!0===e.deep?ce:!1===e.deep?le:(t=e.defaultDecorator)&&(n=(r=t.u)?.enhancer)!=null?n:ce;var t,n,r}function Me(e,t,n){return oe(t)?xn.t(e,t):o(t)?void ae(e,t,xn):xt(e)?e:c(e)?En.object(e,t,n):Array.isArray(e)?En.array(e,t):p(e)?En.map(e,t):m(e)?En.set(e,t):typeof e==`object`&&e?e:En.box(e,t)}function Ne(e,t,n,r){function i(){return Pe(0,n,t,r||this,arguments)}return n===void 0&&(n=!1),i.isMobxAction=!0,i.toString=function(){return t.toString()},Mn&&(Nn.value=e,an(i,`name`,Nn)),i}function Pe(e,t,n,r,i){var a=Fe(0,t);try{return n.apply(r,i)}catch(e){throw a._=e,e}finally{Ie(a)}}function Fe(e,t){var n=z.trackingDerivation,r=!t||!n;$e();var i=z.allowStateChanges;r&&(Ge(),i=Re(!0));var a={A:r,k:n,M:i,V:qe(!0),R:!1,N:0,T:jn++,C:An};return An=a.T,a}function Ie(e){An!==e.T&&t(30),An=e.C,e._!==void 0&&(z.suppressReactionErrors=!0),ze(e.M),Je(e.V),et(),e.A&&Ke(e.k),z.suppressReactionErrors=!1}function Le(e,t){var n=Re(e);try{return t()}finally{ze(n)}}function Re(e){var t=z.allowStateChanges;return z.allowStateChanges=e,t}function ze(e){z.allowStateChanges=e}function Be(e){return e instanceof Rn}function Ve(e){switch(e.I){case L.L:return!1;case L.P:case L.K:return!0;case L.B:for(var t=qe(!0),n=Ge(),r=e.D,i=r.length,a=0;a<i;a++){var o=r[a];if(R(o)){if(z.disableErrorBoundaries)o.get();else try{o.get()}catch{return Ke(n),Je(t),!0}if(e.I===L.K)return Ke(n),Je(t),!0}}return Ye(e),Ke(n),Je(t),!1}}function He(e,t,n){var r=qe(!0);Ye(e),e.W=Array(e.q===0?100:e.D.length),e.G=0,e.q=++z.runId;var i,a=z.trackingDerivation;if(z.trackingDerivation=e,z.inBatch++,!0===z.disableErrorBoundaries)i=t.call(n);else try{i=t.call(n)}catch(e){i=new Rn(e)}return z.inBatch--,z.trackingDerivation=a,function(e){for(var t=e.D,n=e.D=e.W,r=L.L,i=0,a=e.G,o=0;o<a;o++){var s=n[o];s.diffValue===0&&(s.diffValue=1,i!==o&&(n[i]=s),i++),s.I>r&&(r=s.I)}for(n.length=i,e.W=null,a=t.length;a--;){var c=t[a];c.diffValue===0&&Ze(c,e),c.diffValue=0}for(;i--;){var l=n[i];l.diffValue===1&&(l.diffValue=0,Xe(l,e))}r!==L.L&&(e.I=r,e.H())}(e),Je(r),i}function Ue(e){var t=e.D;e.D=[];for(var n=t.length;n--;)Ze(t[n],e);e.I=L.P}function We(e){var t=Ge();try{return e()}finally{Ke(t)}}function Ge(){var e=z.trackingDerivation;return z.trackingDerivation=null,e}function Ke(e){z.trackingDerivation=e}function qe(e){var t=z.allowStateReads;return z.allowStateReads=e,t}function Je(e){z.allowStateReads=e}function Ye(e){if(e.I!==L.L){e.I=L.L;for(var t=e.D,n=t.length;n--;)t[n].U=L.L}}function Xe(e,t){e.F.add(t),e.U>t.I&&(e.U=t.I)}function Ze(e,t){e.F.delete(t),e.F.size===0&&Qe(e)}function Qe(e){!1===e.isPendingUnobservation&&(e.isPendingUnobservation=!0,z.pendingUnobservations.push(e))}function $e(){z.inBatch++}function et(){if(--z.inBatch==0){rt();for(var e=z.pendingUnobservations,t=0;t<e.length;t++){var n=e[t];n.isPendingUnobservation=!1,n.F.size===0&&(n.isBeingObserved&&(n.isBeingObserved=!1,n.onBUO()),n instanceof In&&n.X())}z.pendingUnobservations=[]}}function tt(e){var t=z.trackingDerivation;return t===null?(e.F.size===0&&z.inBatch>0&&Qe(e),!1):(t.q!==e.$&&(e.$=t.q,t.W[t.G++]=e,!e.isBeingObserved&&z.trackingContext&&(e.isBeingObserved=!0,e.onBO())),e.isBeingObserved)}function nt(e){e.U!==L.K&&(e.U=L.K,e.F.forEach((function(e){e.I===L.L&&e.H(),e.I=L.K})))}function rt(){z.inBatch>0||z.isRunningReactions||Wn(it)}function it(){z.isRunningReactions=!0;for(var e=z.pendingReactions,t=0;e.length>0;){++t==100&&(console.error(`[mobx] cycle in reaction: `+e[0]),e.splice(0));for(var n=e.splice(0),r=0,i=n.length;r<i;r++)n[r].J()}z.isRunningReactions=!1}function at(){return console.warn(`[mobx.spy] Is a no-op in production builds`),function(){}}function ot(e){return function(t,n){return a(t)?Ne(t.name||`<unnamed action>`,t,e):a(n)?Ne(t,n,e):oe(n)?(e?Jn:Kn).t(t,n):o(n)?ae(t,n,e?Jn:Kn):o(t)?E(ue(e?`autoAction`:`action`,{name:t,autoAction:e})):void 0}}function st(e){return Pe(0,!1,e,this,void 0)}function ct(e){return a(e)&&!0===e.isMobxAction}function lt(e,t){function n(){e(i)}var r;t===void 0&&(t=cn);var i,a=t?.name??`Autorun`;if(t.scheduler||t.delay){var o=ut(t),s=!1;i=new Un(a,(function(){s||(s=!0,o((function(){s=!1,i.isDisposed||i.track(n)})))}),t.onError,t.requiresObservable)}else i=new Un(a,(function(){this.track(n)}),t.onError,t.requiresObservable);return(r=t)!=null&&(r=r.signal)!=null&&r.aborted||i.Y(),i.Z(t?.signal)}function ut(e){return e.scheduler?e.scheduler:e.delay?function(t){return setTimeout(t,e.delay)}:Qn}function dt(e,t,n){return pt(`onBO`,e,t,n)}function ft(e,t,n){return pt(`onBUO`,e,t,n)}function pt(e,t,n,r){var i=typeof r==`function`?Yt(t,n):Yt(t),o=a(r)?r:n,s=e+`L`;return i[s]?i[s].add(o):i[s]=new Set([o]),function(){var e=i[s];e&&(e.delete(o),e.size===0&&delete i[s])}}function mt(e,t,n,r){var i=pn(t);return Qt((function(){var t=Ht(e,r)[F];fn(i).forEach((function(e){t.s(e,i[e],!n||!(e in n)||n[e])}))})),e}function ht(e){var t,n={name:e.tt};return e.D&&e.D.length>0&&(n.dependencies=(t=e.D,Array.from(new Set(t))).map(ht)),n}function gt(e){var t={name:e.tt};return function(e){return e.F&&e.F.size>0}(e)&&(t.observers=Array.from(function(e){return e.F}(e)).map(gt)),t}function _t(e){a(e.cancel)&&e.cancel()}function vt(e){return!0===e?.isMobXFlow}function yt(e,t){return t===void 0?R(e):!1===Wt(e)||!e[F].j.has(t)?!1:R(Yt(e,t))}function bt(e,t){return!!e&&(t===void 0?Wt(e)||!!e[F]||gn(e)||Gn(e)||R(e):!!Wt(e)&&e[F].j.has(t))}function xt(e){return bt(e)}function St(e){return Wt(e)?e[F].nt():gr(e)||yr(e)?Array.from(e.keys()):zt(e)?e.map((function(e,t){return t})):void t(5)}function Ct(e,n){return Wt(e)?e[F].it(n):gr(e)||yr(e)?e.has(n):zt(e)?n>=0&&n<e.length:void t(10)}function wt(e){if(Wt(e))return e[F].rt();t(38)}function Tt(e,t,n){return e.set(t,n),n}function Et(e,t){t===void 0&&(t=void 0),$e();try{return e.apply(t)}finally{et()}}function Dt(e,t,n){var r;if(typeof n.timeout==`number`){var i=Error(`WHEN_TIMEOUT`);r=setTimeout((function(){if(!o[F].isDisposed){if(o(),!n.onError)throw i;n.onError(i)}}),n.timeout)}n.name=`When`;var a=Ne(`When-effect`,t),o=lt((function(t){Le(!1,e)&&(t.dispose(),r&&clearTimeout(r),a())}),n);return o}function Ot(e,t){var n,r,i;if(t!=null&&(n=t.signal)!=null&&n.aborted)return Object.assign(Promise.reject(Error(`WHEN_ABORTED`)),{cancel:function(){return null}});var a=new Promise((function(n,a){var o,s=Dt(e,n,ee({},t,{onError:a}));r=function(){s(),a(Error(`WHEN_CANCELLED`))},i=function(){s(),a(Error(`WHEN_ABORTED`))},t==null||(o=t.signal)==null||o.addEventListener==null||o.addEventListener(`abort`,i)})).finally((function(){var e;return t==null||(e=t.signal)==null||e.removeEventListener==null?void 0:e.removeEventListener(`abort`,i)}));return a.cancel=r,a}function kt(e){return e[F]}function At(e){return e.et!==void 0&&e.et.length>0}function jt(e,t){var n=e.et||=[];return n.push(t),i((function(){var e=n.indexOf(t);e!==-1&&n.splice(e,1)}))}function Mt(e,n){var r=Ge();try{for(var i=[].concat(e.et||[]),a=0,o=i.length;a<o&&((n=i[a](n))&&!n.type&&t(14),n);a++);return n}finally{Ke(r)}}function Nt(e){return e.ut!==void 0&&e.ut.length>0}function Pt(e,t){var n=e.ut||=[];return n.push(t),i((function(){var e=n.indexOf(t);e!==-1&&n.splice(e,1)}))}function Ft(e,t){var n=Ge(),r=e.ut;if(r){for(var i=0,a=(r=r.slice()).length;i<a;i++)r[i](t);Ke(n)}}function It(e,t,n,i){return n===void 0&&(n=`ObservableArray`),i===void 0&&(i=!1),r(),Qt((function(){var r=new cr(n,t,i,!1);d(r.j,F,r);var a=new Proxy(r.j,sr);return r.v=a,e&&e.length&&r.ot(0,0,e),a}))}function k(e,t){typeof Array.prototype[e]==`function`&&(lr[e]=t(e))}function Lt(e){return function(){var t=this[F];t.st.reportObserved();var n=t.ft(t.j);return n[e].apply(n,arguments)}}function A(e){return function(t,n){var r=this,i=this[F];return i.st.reportObserved(),i.ft(i.j)[e]((function(e,i){return t.call(n,e,i,r)}))}}function Rt(e){return function(){var t=this,n=this[F];n.st.reportObserved();var r=n.ft(n.j),i=arguments[0];return arguments[0]=function(e,n,r){return i(e,n,r,t)},r[e].apply(r,arguments)}}function zt(e){return s(e)&&fr(e[F])}function Bt(e){return e[Symbol.toStringTag]=`MapIterator`,en(e)}function Vt(e){return e[Symbol.toStringTag]=`SetIterator`,en(e)}function Ht(e,t){if(g(e,F))return e;var n=t?.name??`ObservableObject`;return u(e,F,new xr(e,new Map,String(n),function(e){return e?e.defaultDecorator??De(e):void 0}(t))),e}function Ut(e){return br[e]||(br[e]={get:function(){return this[F].O(e)},set:function(t){return this[F].S(e,t)}})}function Wt(e){return!!s(e)&&B(e[F])}function Gt(e,t,n){var r;(r=e.h[mn])==null||delete r[n]}function Kt(e){return{enumerable:!1,configurable:!0,get:function(){return this[F].ct(e)},set:function(t){this[F].ht(e,t)}}}function j(e){an(Er.prototype,``+e,Kt(e))}function qt(e){if(e>wr){for(var t=wr;t<e+100;t++)j(t);wr=e}}function Jt(e,t,n){return new Er(e,t,n)}function Yt(e,n){if(typeof e==`object`&&e){if(zt(e))return n!==void 0&&t(23),e[F].st;if(yr(e))return e.st;if(gr(e)){if(n===void 0)return e.lt;var r=e.vt.get(n)||e.dt.get(n);return r||t(25,n,Zt(e)),r}if(Wt(e)){if(!n)return t(26);var i=e[F].j.get(n);return i||t(27,n,Zt(e)),i}if(gn(e)||R(e)||Gn(e))return e}else if(a(e)&&Gn(e[F]))return e[F];t(28)}function Xt(e,n){return e||t(29),n===void 0?gn(e)||R(e)||Gn(e)||gr(e)||yr(e)?e:e[F]?e[F]:void t(24,e):Xt(Yt(e,n))}function Zt(e,t){var n;if(t!==void 0)n=Yt(e,t);else{if(ct(e))return e.name;n=Wt(e)||gr(e)||yr(e)?Xt(e):Yt(e)}return n.tt}function Qt(e){var t=Ge(),n=Re(!0);$e();try{return e()}finally{et(),ze(n),Ke(t)}}function $t(e,t,n){return n===void 0&&(n=-1),function e(t,n,r,i,o){if(t===n)return t!==0||1/t==1/n;if(t==null||n==null)return!1;if(t!=t)return n!=n;var s=typeof t;if(s!==`function`&&s!==`object`&&typeof n!=`object`)return!1;var c=Dr.call(t);if(c!==Dr.call(n))return!1;switch(c){case`[object RegExp]`:case`[object String]`:return``+t==``+n;case`[object Number]`:return+t==+t?+t==0?1/t==1/n:+t==+n:+n!=+n;case`[object Date]`:case`[object Boolean]`:return+t==+n;case`[object Symbol]`:return typeof Symbol<`u`&&Symbol.valueOf.call(t)===Symbol.valueOf.call(n);case`[object Map]`:case`[object Set]`:r>=0&&r++}t=M(t),n=M(n);var l=c===`[object Array]`;if(!l){if(typeof t!=`object`||typeof n!=`object`)return!1;var u=t.constructor,d=n.constructor;if(u!==d&&!(a(u)&&u instanceof u&&a(d)&&d instanceof d)&&`constructor`in t&&`constructor`in n)return!1}if(r===0)return!1;r<0&&(r=-1),o||=[];for(var f=(i||=[]).length;f--;)if(i[f]===t)return o[f]===n;if(i.push(t),o.push(n),l){if((f=t.length)!==n.length)return!1;for(;f--;)if(!e(t[f],n[f],r-1,i,o))return!1}else{var p=Object.keys(t),m=p.length;if(Object.keys(n).length!==m)return!1;for(var h=0;h<m;h++){var _=p[h];if(!g(n,_)||!e(t[_],n[_],r-1,i,o))return!1}}return i.pop(),o.pop(),!0}(e,t,n)}function M(e){return zt(e)?e.slice():p(e)||gr(e)||m(e)||yr(e)?Array.from(e.entries()):e}function en(e){return e[Symbol.iterator]=tn,Object.assign(Object.create(Or),e)}function tn(){return this}Object.defineProperty(e,`__esModule`,{value:!0});var nn={},N=Object.assign,rn=Object.getOwnPropertyDescriptor,an=Object.defineProperty,on=Object.prototype,sn=[];Object.freeze(sn);var cn={};Object.freeze(cn);var P=typeof Proxy<`u`,ln=Object.toString(),un=function(){},dn=Object.getOwnPropertySymbols!==void 0,fn=typeof Reflect<`u`&&Reflect.ownKeys?Reflect.ownKeys:dn?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames,pn=Object.getOwnPropertyDescriptors||function(e){var t={};return fn(e).forEach((function(n){t[n]=rn(e,n)})),t},mn=Symbol(`mobx-stored-annotations`),F=Symbol(`mobx administration`),hn=function(){function e(e){e===void 0&&(e=`Atom`),this.tt=void 0,this.bt=0,this.F=new Set,this.$=0,this.U=L.P,this.onBOL=void 0,this.onBUOL=void 0,this.tt=e}var t=e.prototype;return t.onBO=function(){this.onBOL&&this.onBOL.forEach((function(e){return e()}))},t.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(e){return e()}))},t.reportObserved=function(){return tt(this)},t.reportChanged=function(){$e(),nt(this),et()},t.toString=function(){return this.tt},S(e,[{key:`isBeingObserved`,get:function(){return _(this.bt,e.pt)},set:function(t){this.bt=v(this.bt,e.pt,t)}},{key:`isPendingUnobservation`,get:function(){return _(this.bt,e.yt)},set:function(t){this.bt=v(this.bt,e.yt,t)}},{key:`diffValue`,get:function(){return+!!_(this.bt,e.wt)},set:function(t){this.bt=v(this.bt,e.wt,t===1)}}])}();hn.pt=1,hn.yt=2,hn.wt=4;var gn=f(`Atom`,hn),_n={identity:function(e,t){return e===t},structural:function(e,t){return $t(e,t)},default:function(e,t){return Object.is?Object.is(e,t):e===t?e!==0||1/e==1/t:e!=e&&t!=t},shallow:function(e,t){return $t(e,t,1)}},vn=E({i:`override`,o:function(){return 0},s:function(){t(`'`+this.i+`' can only be used with 'makeObservable'`)},t:function(){console.warn(`'`+this.i+`' cannot be used with decorators - this is a no-op`)}}),yn=De(),bn={deep:!0,name:void 0,defaultDecorator:void 0,proxy:!0};Object.freeze(bn);var xn=Ce(`observable`),Sn=Ce(`observable.ref`,{enhancer:le}),I=Ce(`observable.shallow`,{enhancer:function(e,t,n){return e==null||Wt(e)||zt(e)||gr(e)||yr(e)?e:Array.isArray(e)?En.array(e,{name:n,deep:!1}):c(e)?En.object(e,void 0,{name:n,deep:!1}):p(e)?En.map(e,{name:n,deep:!1}):m(e)?En.set(e,{name:n,deep:!1}):void 0}}),Cn=Ce(`observable.struct`,{enhancer:function(e,t){return $t(e,t)?t:e}}),wn=E(xn);N(Me,wn);var Tn,En=N(Me,{box:function(e,t){var n=je(t);return new Pn(e,O(n),n.name,!0,n.equals)},array:function(e,t){var n=je(t);return(!1===z.useProxies||!1===n.proxy?Jt:It)(e,O(n),n.name)},map:function(e,t){var n=je(t);return new hr(e,O(n),n.name)},set:function(e,t){var n=je(t);return new vr(e,O(n),n.name)},object:function(e,t,n){return Qt((function(){return mt(!1===z.useProxies||!1===n?.proxy?Ht({},n):function(e,t){var n;return r(),(n=(e=Ht(e,t))[F]).v??(n.v=new Proxy(e,ir))}({},n),e,t)}))},ref:E(Sn),shallow:E(I),deep:wn,struct:E(Cn)}),Dn=ye(`computed`),On=ye(`computed.struct`,{equals:_n.structural}),kn=function(e,t){if(oe(t))return Dn.t(e,t);if(o(t))return ae(e,t,Dn);if(c(e))return E(ye(`computed`,e));var n=c(t)?t:{};return n.get=e,n.name||=e.name||``,new In(n)};Object.assign(kn,Dn),kn.struct=E(On);var An=0,jn=1,Mn=(Tn=rn((function(){}),`name`)?.configurable)!=null&&Tn,Nn={value:`action`,configurable:!0,writable:!1,enumerable:!1},Pn=function(e){function t(t,n,r,i,a){var o;return r===void 0&&(r=`ObservableValue`),a===void 0&&(a=_n.default),(o=e.call(this,r)||this).enhancer=void 0,o.tt=void 0,o.equals=void 0,o.jt=!1,o.et=void 0,o.ut=void 0,o.Ot=void 0,o.dehancer=void 0,o.enhancer=n,o.tt=r,o.equals=a,o.Ot=n(t,void 0,r),o}w(t,e);var n=t.prototype;return n.dehanceValue=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.set=function(e){(e=this.xt(e))!==z.UNCHANGED&&this.gt(e)},n.xt=function(e){if(At(this)){var t=Mt(this,{object:this,type:or,newValue:e});if(!t)return z.UNCHANGED;e=t.newValue}return e=this.enhancer(e,this.Ot,this.tt),this.equals(this.Ot,e)?z.UNCHANGED:e},n.gt=function(e){var t=this.Ot;this.Ot=e,this.reportChanged(),Nt(this)&&Ft(this,{type:or,object:this,newValue:e,oldValue:t})},n.get=function(){return this.reportObserved(),this.dehanceValue(this.Ot)},n.St=function(e){return jt(this,e)},n._t=function(e,t){return t&&e({observableKind:`value`,debugObjectName:this.tt,object:this,type:or,newValue:this.Ot,oldValue:void 0}),Pt(this,e)},n.raw=function(){return this.Ot},n.toJSON=function(){return this.get()},n.toString=function(){return this.tt+`[`+this.Ot+`]`},n.valueOf=function(){return h(this.get())},n[Symbol.toPrimitive]=function(){return this.valueOf()},t}(hn),Fn=f(`ObservableValue`,Pn),In=function(){function e(e){this.I=L.P,this.D=[],this.W=null,this.F=new Set,this.q=0,this.$=0,this.U=L.L,this.G=0,this.Ot=new Rn(null),this.tt=void 0,this.At=void 0,this.bt=0,this.derivation=void 0,this.kt=void 0,this.Mt=Ln.NONE,this.Et=void 0,this.Vt=void 0,this.Rt=void 0,this.Nt=void 0,this.onBOL=void 0,this.onBUOL=void 0,e.get||t(31),this.derivation=e.get,this.tt=e.name||`ComputedValue`,e.set&&(this.kt=Ne(`ComputedValue-setter`,e.set)),this.Vt=e.equals||(e.compareStructural||e.struct?_n.structural:_n.default),this.Et=e.context,this.Rt=e.requiresReaction,this.Nt=!!e.keepAlive}var n=e.prototype;return n.H=function(){(function(e){e.U===L.L&&(e.U=L.B,e.F.forEach((function(e){e.I===L.L&&(e.I=L.B,e.H())})))})(this)},n.onBO=function(){this.onBOL&&this.onBOL.forEach((function(e){return e()}))},n.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(e){return e()}))},n.get=function(){if(this.isComputing&&t(32,this.tt,this.derivation),z.inBatch!==0||this.F.size!==0||this.Nt){if(tt(this),Ve(this)){var e=z.trackingContext;this.Nt&&!e&&(z.trackingContext=this),this.trackAndCompute()&&function(e){e.U!==L.K&&(e.U=L.K,e.F.forEach((function(t){t.I===L.B?t.I=L.K:t.I===L.L&&(e.U=L.L)})))}(this),z.trackingContext=e}}else Ve(this)&&(this.Tt(),$e(),this.Ot=this.Ct(!1),et());var n=this.Ot;if(Be(n))throw n.cause;return n},n.set=function(e){if(this.kt){this.isRunningSetter&&t(33,this.tt),this.isRunningSetter=!0;try{this.kt.call(this.Et,e)}finally{this.isRunningSetter=!1}}else t(34,this.tt)},n.trackAndCompute=function(){var e=this.Ot,t=this.I===L.P,n=this.Ct(!0),r=t||Be(e)||Be(n)||!this.Vt(e,n);return r&&(this.Ot=n),r},n.Ct=function(e){this.isComputing=!0;var t,n=Re(!1);if(e)t=He(this,this.derivation,this.Et);else if(!0===z.disableErrorBoundaries)t=this.derivation.call(this.Et);else try{t=this.derivation.call(this.Et)}catch(e){t=new Rn(e)}return ze(n),this.isComputing=!1,t},n.X=function(){this.Nt||(Ue(this),this.Ot=void 0)},n._t=function(e,t){var n=this,r=!0,i=void 0;return lt((function(){var a=n.get();if(!r||t){var o=Ge();e({observableKind:`computed`,debugObjectName:n.tt,type:or,object:n,newValue:a,oldValue:i}),Ke(o)}r=!1,i=a}))},n.Tt=function(){},n.toString=function(){return this.tt+`[`+this.derivation.toString()+`]`},n.valueOf=function(){return h(this.get())},n[Symbol.toPrimitive]=function(){return this.valueOf()},S(e,[{key:`isComputing`,get:function(){return _(this.bt,e.It)},set:function(t){this.bt=v(this.bt,e.It,t)}},{key:`isRunningSetter`,get:function(){return _(this.bt,e.Lt)},set:function(t){this.bt=v(this.bt,e.Lt,t)}},{key:`isBeingObserved`,get:function(){return _(this.bt,e.pt)},set:function(t){this.bt=v(this.bt,e.pt,t)}},{key:`isPendingUnobservation`,get:function(){return _(this.bt,e.yt)},set:function(t){this.bt=v(this.bt,e.yt,t)}},{key:`diffValue`,get:function(){return+!!_(this.bt,e.wt)},set:function(t){this.bt=v(this.bt,e.wt,t===1)}}])}();In.It=1,In.Lt=2,In.pt=4,In.yt=8,In.wt=16;var L,Ln,R=f(`ComputedValue`,In);(function(e){e[e.P=-1]=`NOT_TRACKING_`,e[e.L=0]=`UP_TO_DATE_`,e[e.B=1]=`POSSIBLY_STALE_`,e[e.K=2]=`STALE_`})(L||={}),function(e){e[e.NONE=0]=`NONE`,e[e.LOG=1]=`LOG`,e[e.BREAK=2]=`BREAK`}(Ln||={});var Rn=function(e){this.cause=void 0,this.cause=e},zn=[`mobxGuid`,`spyListeners`,`enforceActions`,`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`allowStateReads`,`disableErrorBoundaries`,`runId`,`UNCHANGED`,`useProxies`],Bn=function(){this.version=6,this.UNCHANGED={},this.trackingDerivation=null,this.trackingContext=null,this.runId=0,this.mobxGuid=0,this.inBatch=0,this.pendingUnobservations=[],this.pendingReactions=[],this.isRunningReactions=!1,this.allowStateChanges=!1,this.allowStateReads=!0,this.enforceActions=!0,this.spyListeners=[],this.globalReactionErrorHandlers=[],this.computedRequiresReaction=!1,this.reactionRequiresObservable=!1,this.observableRequiresReaction=!1,this.disableErrorBoundaries=!1,this.suppressReactionErrors=!1,this.useProxies=!0,this.verifyProxies=!1,this.safeDescriptors=!0},Vn=!0,Hn=!1,z=function(){var e=n();return e.__mobxInstanceCount>0&&!e.__mobxGlobals&&(Vn=!1),e.__mobxGlobals&&e.__mobxGlobals.version!==new Bn().version&&(Vn=!1),Vn?e.__mobxGlobals?(e.__mobxInstanceCount+=1,e.__mobxGlobals.UNCHANGED||(e.__mobxGlobals.UNCHANGED={}),e.__mobxGlobals):(e.__mobxInstanceCount=1,e.__mobxGlobals=new Bn):(setTimeout((function(){Hn||t(35)}),1),new Bn)}(),Un=function(){function e(e,t,n,r){e===void 0&&(e=`Reaction`),this.tt=void 0,this.Pt=void 0,this.Kt=void 0,this.Bt=void 0,this.D=[],this.W=[],this.I=L.P,this.q=0,this.G=0,this.bt=0,this.Mt=Ln.NONE,this.tt=e,this.Pt=t,this.Kt=n,this.Bt=r}var t=e.prototype;return t.H=function(){this.Y()},t.Y=function(){this.isScheduled||(this.isScheduled=!0,z.pendingReactions.push(this),rt())},t.J=function(){if(!this.isDisposed){$e(),this.isScheduled=!1;var e=z.trackingContext;if(z.trackingContext=this,Ve(this)){this.isTrackPending=!0;try{this.Pt()}catch(e){this.Dt(e)}}z.trackingContext=e,et()}},t.track=function(e){if(!this.isDisposed){$e(),this.isRunning=!0;var t=z.trackingContext;z.trackingContext=this;var n=He(this,e,void 0);z.trackingContext=t,this.isRunning=!1,this.isTrackPending=!1,this.isDisposed&&Ue(this),Be(n)&&this.Dt(n.cause),et()}},t.Dt=function(e){var t=this;if(this.Kt)this.Kt(e,this);else{if(z.disableErrorBoundaries)throw e;z.suppressReactionErrors||console.error(`[mobx] uncaught error in '`+this+`'`,e),z.globalReactionErrorHandlers.forEach((function(n){return n(e,t)}))}},t.dispose=function(){this.isDisposed||(this.isDisposed=!0,this.isRunning||($e(),Ue(this),et()))},t.Z=function(e){var t=this,n=function n(){t.dispose(),e==null||e.removeEventListener==null||e.removeEventListener(`abort`,n)};return e==null||e.addEventListener==null||e.addEventListener(`abort`,n),n[F]=this,`dispose`in Symbol&&typeof Symbol.dispose==`symbol`&&(n[Symbol.dispose]=n),n},t.toString=function(){return`Reaction[`+this.tt+`]`},t.trace=function(){},S(e,[{key:`isDisposed`,get:function(){return _(this.bt,e.Wt)},set:function(t){this.bt=v(this.bt,e.Wt,t)}},{key:`isScheduled`,get:function(){return _(this.bt,e.qt)},set:function(t){this.bt=v(this.bt,e.qt,t)}},{key:`isTrackPending`,get:function(){return _(this.bt,e.Gt)},set:function(t){this.bt=v(this.bt,e.Gt,t)}},{key:`isRunning`,get:function(){return _(this.bt,e.Ht)},set:function(t){this.bt=v(this.bt,e.Ht,t)}},{key:`diffValue`,get:function(){return+!!_(this.bt,e.wt)},set:function(t){this.bt=v(this.bt,e.wt,t===1)}}])}();Un.Wt=1,Un.qt=2,Un.Gt=4,Un.Ht=8,Un.wt=16;var Wn=function(e){return e()},Gn=f(`Reaction`,Un),Kn=ue(`action`),qn=ue(`action.bound`,{bound:!0}),Jn=ue(`autoAction`,{autoAction:!0}),Yn=ue(`autoAction.bound`,{autoAction:!0,bound:!0}),Xn=ot(!1);Object.assign(Xn,Kn);var Zn=ot(!0);Object.assign(Zn,Jn),Xn.bound=E(qn),Zn.bound=E(Yn);var Qn=function(e){return e()},$n=0,er=function(e){function t(){var n;return n=e.call(this,`FLOW_CANCELLED`)||this,Object.setPrototypeOf(n,(this instanceof t?this.constructor:void 0).prototype),n.name=`FlowCancellationError`,n}return w(t,e),t.prototype.toString=function(){return`Error: `+this.message},t}(T(Error)),tr=he(`flow`),nr=he(`flow.bound`,{bound:!0}),rr=Object.assign((function(e,t){if(oe(t))return tr.t(e,t);if(o(t))return ae(e,t,tr);var n=e,r=n.name||`<unnamed flow>`,i=function(){var e,t=this,i=arguments,o=++$n,s=Xn(r+` - runid: `+o+` - init`,n).apply(t,i),c=void 0,l=new Promise((function(t,n){function i(e){var t;c=void 0;try{t=Xn(r+` - runid: `+o+` - yield `+ d++,s.next).call(s,e)}catch(e){return n(e)}u(t)}function l(e){var t;c=void 0;try{t=Xn(r+` - runid: `+o+` - yield `+ d++,s.throw).call(s,e)}catch(e){return n(e)}u(t)}function u(e){if(!a(e?.then))return e.done?t(e.value):(c=Promise.resolve(e.value)).then(i,l);e.then(u,n)}var d=0;e=n,i(void 0)}));return l.cancel=Xn(r+` - runid: `+o+` - cancel`,(function(){try{c&&_t(c);var t=s.return(void 0),n=Promise.resolve(t.value);n.then(un,un),_t(n),e(new er)}catch(t){e(t)}})),l};return i.isMobXFlow=!0,i}),tr);rr.bound=E(nr);var ir={has:function(e,t){return kt(e).it(t)},get:function(e,t){return kt(e).ct(t)},set:function(e,t,n){var r;return!!o(t)&&((r=kt(e).ht(t,n,!0))==null||r)},deleteProperty:function(e,t){var n;return!!o(t)&&((n=kt(e).Ut(t,!0))==null||n)},defineProperty:function(e,t,n){var r;return(r=kt(e).l(t,n))==null||r},ownKeys:function(e){return kt(e).rt()},preventExtensions:function(){t(13)}},ar=Symbol(`mobx-keys`),or=`update`,sr={get:function(e,t){var n=e[F];return t===F?n:t===`length`?n.Ft():typeof t!=`string`||isNaN(t)?g(lr,t)?lr[t]:e[t]:n.ct(parseInt(t))},set:function(e,t,n){var r=e[F];return t===`length`&&r.Xt(n),typeof t==`symbol`||isNaN(t)?e[t]=n:r.ht(parseInt(t),n),!0},preventExtensions:function(){t(15)}},cr=function(){function e(e,t,n,r){e===void 0&&(e=`ObservableArray`),this.zt=void 0,this.$t=void 0,this.st=void 0,this.j=[],this.et=void 0,this.ut=void 0,this.Jt=void 0,this.dehancer=void 0,this.v=void 0,this.Yt=0,this.zt=n,this.$t=r,this.st=new hn(e),this.Jt=function(e,n){return t(e,n,`ObservableArray[..]`)}}var n=e.prototype;return n.Qt=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.ft=function(e){return this.dehancer!==void 0&&e.length>0?e.map(this.dehancer):e},n.St=function(e){return jt(this,e)},n._t=function(e,t){return t===void 0&&(t=!1),t&&e({observableKind:`array`,object:this.v,debugObjectName:this.st.tt,type:`splice`,index:0,added:this.j.slice(),addedCount:this.j.length,removed:[],removedCount:0}),Pt(this,e)},n.Ft=function(){return this.st.reportObserved(),this.j.length},n.Xt=function(e){(typeof e!=`number`||isNaN(e)||e<0)&&t(`Out of range: `+e);var n=this.j.length;if(e!==n)if(e>n){for(var r=Array(e-n),i=0;i<e-n;i++)r[i]=void 0;this.ot(n,0,r)}else this.ot(e,n-e)},n.Zt=function(e,n){e!==this.Yt&&t(16),this.Yt+=n,this.$t&&n>0&&qt(e+n+1)},n.ot=function(e,t,n){var r=this,i=this.j.length;if(e===void 0?e=0:e>i?e=i:e<0&&(e=Math.max(0,i+e)),t=arguments.length===1?i-e:t==null?0:Math.max(0,Math.min(t,i-e)),n===void 0&&(n=sn),At(this)){var a=Mt(this,{object:this.v,type:`splice`,index:e,removedCount:t,added:n});if(!a)return sn;t=a.removedCount,n=a.added}if(n=n.length===0?n:n.map((function(e){return r.Jt(e,void 0)})),this.$t){var o=n.length-t;this.Zt(i,o)}var s=this.tn(e,t,n);return t===0&&n.length===0||this.nn(e,n,s),this.ft(s)},n.tn=function(e,t,n){var r;if(n.length<1e4)return(r=this.j).splice.apply(r,[e,t].concat(n));var i=this.j.slice(e,e+t),a=this.j.slice(e+t);this.j.length+=n.length-t;for(var o=0;o<n.length;o++)this.j[e+o]=n[o];for(var s=0;s<a.length;s++)this.j[e+n.length+s]=a[s];return i},n.in=function(e,t,n){var r=!this.zt&&!1,i=Nt(this),a=i||r?{observableKind:`array`,object:this.v,type:or,debugObjectName:this.st.tt,index:e,newValue:t,oldValue:n}:null;this.st.reportChanged(),i&&Ft(this,a)},n.nn=function(e,t,n){var r=!this.zt&&!1,i=Nt(this),a=i||r?{observableKind:`array`,object:this.v,debugObjectName:this.st.tt,type:`splice`,index:e,removed:n,added:t,removedCount:n.length,addedCount:t.length}:null;this.st.reportChanged(),i&&Ft(this,a)},n.ct=function(e){if(!(this.$t&&e>=this.j.length))return this.st.reportObserved(),this.Qt(this.j[e]);console.warn(`[mobx] Out of bounds read: `+e)},n.ht=function(e,n){var r=this.j;if(this.$t&&e>r.length&&t(17,e,r.length),e<r.length){var i=r[e];if(At(this)){var a=Mt(this,{type:or,object:this.v,index:e,newValue:n});if(!a)return;n=a.newValue}(n=this.Jt(n,i))!==i&&(r[e]=n,this.in(e,n,i))}else{for(var o=Array(e+1-r.length),s=0;s<o.length-1;s++)o[s]=void 0;o[o.length-1]=n,this.ot(r.length,0,o)}},e}(),lr={clear:function(){return this.splice(0)},replace:function(e){var t=this[F];return t.ot(0,t.j.length,e)},toJSON:function(){return this.slice()},splice:function(e,t){var n=[...arguments].slice(2),r=this[F];switch(arguments.length){case 0:return[];case 1:return r.ot(e);case 2:return r.ot(e,t)}return r.ot(e,t,n)},spliceWithArray:function(e,t,n){return this[F].ot(e,t,n)},push:function(){for(var e=this[F],t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];return e.ot(e.j.length,0,n),e.j.length},pop:function(){return this.splice(Math.max(this[F].j.length-1,0),1)[0]},shift:function(){return this.splice(0,1)[0]},unshift:function(){for(var e=this[F],t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];return e.ot(0,0,n),e.j.length},reverse:function(){return z.trackingDerivation&&t(37,`reverse`),this.replace(this.slice().reverse()),this},sort:function(){z.trackingDerivation&&t(37,`sort`);var e=this.slice();return e.sort.apply(e,arguments),this.replace(e),this},remove:function(e){var t=this[F],n=t.ft(t.j).indexOf(e);return n>-1&&(this.splice(n,1),!0)}};k(`at`,Lt),k(`concat`,Lt),k(`flat`,Lt),k(`includes`,Lt),k(`indexOf`,Lt),k(`join`,Lt),k(`lastIndexOf`,Lt),k(`slice`,Lt),k(`toString`,Lt),k(`toLocaleString`,Lt),k(`toSorted`,Lt),k(`toSpliced`,Lt),k(`with`,Lt),k(`every`,A),k(`filter`,A),k(`find`,A),k(`findIndex`,A),k(`findLast`,A),k(`findLastIndex`,A),k(`flatMap`,A),k(`forEach`,A),k(`map`,A),k(`some`,A),k(`toReversed`,A),k(`reduce`,Rt),k(`reduceRight`,Rt);var ur,dr,fr=f(`ObservableArrayAdministration`,cr),pr={},mr=`add`,hr=function(){function e(e,n,r){var i=this;n===void 0&&(n=ce),r===void 0&&(r=`ObservableMap`),this.Jt=void 0,this.tt=void 0,this[F]=pr,this.vt=void 0,this.dt=void 0,this.lt=void 0,this.et=void 0,this.ut=void 0,this.dehancer=void 0,this.Jt=n,this.tt=r,a(Map)||t(18),Qt((function(){i.lt=se(`ObservableMap.keys()`),i.vt=new Map,i.dt=new Map,e&&i.merge(e)}))}var n=e.prototype;return n.it=function(e){return this.vt.has(e)},n.has=function(e){var t=this;if(!z.trackingDerivation)return this.it(e);var n=this.dt.get(e);if(!n){var r=n=new Pn(this.it(e),le,`ObservableMap.key?`,!1);this.dt.set(e,r),ft(r,(function(){return t.dt.delete(e)}))}return n.get()},n.set=function(e,t){var n=this.it(e);if(At(this)){var r=Mt(this,{type:n?or:mr,object:this,newValue:t,name:e});if(!r)return this;t=r.newValue}return n?this.rn(e,t):this.en(e,t),this},n.delete=function(e){var t=this;if(At(this)&&!Mt(this,{type:`delete`,object:this,name:e}))return!1;if(this.it(e)){var n=Nt(this),r=n?{observableKind:`map`,debugObjectName:this.tt,type:`delete`,object:this,oldValue:this.vt.get(e).Ot,name:e}:null;return Et((function(){var n;t.lt.reportChanged(),(n=t.dt.get(e))==null||n.gt(!1),t.vt.get(e).gt(void 0),t.vt.delete(e)})),n&&Ft(this,r),!0}return!1},n.rn=function(e,t){var n=this.vt.get(e);if((t=n.xt(t))!==z.UNCHANGED){var r=Nt(this),i=r?{observableKind:`map`,debugObjectName:this.tt,type:or,object:this,oldValue:n.Ot,name:e,newValue:t}:null;n.gt(t),r&&Ft(this,i)}},n.en=function(e,t){var n=this;Et((function(){var r,i=new Pn(t,n.Jt,`ObservableMap.key`,!1);n.vt.set(e,i),t=i.Ot,(r=n.dt.get(e))==null||r.gt(!0),n.lt.reportChanged()}));var r=Nt(this);r&&Ft(this,r?{observableKind:`map`,debugObjectName:this.tt,type:mr,object:this,name:e,newValue:t}:null)},n.get=function(e){return this.has(e)?this.Qt(this.vt.get(e).get()):this.Qt(void 0)},n.Qt=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.keys=function(){return this.lt.reportObserved(),this.vt.keys()},n.values=function(){var e=this,t=this.keys();return Bt({next:function(){var n=t.next(),r=n.done;return{done:r,value:r?void 0:e.get(n.value)}}})},n.entries=function(){var e=this,t=this.keys();return Bt({next:function(){var n=t.next(),r=n.done,i=n.value;return{done:r,value:r?void 0:[i,e.get(i)]}}})},n[Symbol.iterator]=function(){return this.entries()},n.forEach=function(e,t){for(var n,r=C(this);!(n=r()).done;){var i=n.value;e.call(t,i[1],i[0],this)}},n.merge=function(e){var n=this;return gr(e)&&(e=new Map(e)),Et((function(){var r,i;c(e)?function(e){var t=Object.keys(e);if(!dn)return t;var n=Object.getOwnPropertySymbols(e);return n.length?[].concat(t,n.filter((function(t){return on.propertyIsEnumerable.call(e,t)}))):t}(e).forEach((function(t){return n.set(t,e[t])})):Array.isArray(e)?e.forEach((function(e){return n.set(e[0],e[1])})):p(e)?(r=Object.getPrototypeOf(e),i=Object.getPrototypeOf(r),Object.getPrototypeOf(i)!==null&&t(19,e),e.forEach((function(e,t){return n.set(t,e)}))):e!=null&&t(20,e)})),this},n.clear=function(){var e=this;Et((function(){We((function(){for(var t,n=C(e.keys());!(t=n()).done;)e.delete(t.value)}))}))},n.replace=function(e){var n=this;return Et((function(){for(var r,i=function(e){if(p(e)||gr(e))return e;if(Array.isArray(e))return new Map(e);if(c(e)){var n=new Map;for(var r in e)n.set(r,e[r]);return n}return t(21,e)}(e),a=new Map,o=!1,s=C(n.vt.keys());!(r=s()).done;){var l=r.value;if(!i.has(l))if(n.delete(l))o=!0;else{var u=n.vt.get(l);a.set(l,u)}}for(var d,f=C(i.entries());!(d=f()).done;){var m=d.value,h=m[0],g=m[1],_=n.vt.has(h);if(n.set(h,g),n.vt.has(h)){var v=n.vt.get(h);a.set(h,v),_||(o=!0)}}if(!o)if(n.vt.size!==a.size)n.lt.reportChanged();else for(var y=n.vt.keys(),b=a.keys(),x=y.next(),S=b.next();!x.done;){if(x.value!==S.value){n.lt.reportChanged();break}x=y.next(),S=b.next()}n.vt=a})),this},n.toString=function(){return`[object ObservableMap]`},n.toJSON=function(){return Array.from(this)},n._t=function(e){return Pt(this,e)},n.St=function(e){return jt(this,e)},S(e,[{key:`size`,get:function(){return this.lt.reportObserved(),this.vt.size}},{key:Symbol.toStringTag,get:function(){return`Map`}}])}(),gr=f(`ObservableMap`,hr),_r={},vr=function(){function e(e,n,r){var i=this;n===void 0&&(n=ce),r===void 0&&(r=`ObservableSet`),this.tt=void 0,this[F]=_r,this.vt=new Set,this.st=void 0,this.ut=void 0,this.et=void 0,this.dehancer=void 0,this.Jt=void 0,this.tt=r,a(Set)||t(22),this.Jt=function(e,t){return n(e,t,r)},Qt((function(){i.st=se(i.tt),e&&i.replace(e)}))}var n=e.prototype;return n.Qt=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.clear=function(){var e=this;Et((function(){We((function(){for(var t,n=C(e.vt.values());!(t=n()).done;)e.delete(t.value)}))}))},n.forEach=function(e,t){for(var n,r=C(this);!(n=r()).done;){var i=n.value;e.call(t,i,i,this)}},n.add=function(e){var t=this;if(At(this)){var n=Mt(this,{type:mr,object:this,newValue:e});if(!n)return this;e=n.newValue}if(!this.has(e)){Et((function(){t.vt.add(t.Jt(e,void 0)),t.st.reportChanged()}));var r=Nt(this);r&&Ft(this,r?{observableKind:`set`,debugObjectName:this.tt,type:mr,object:this,newValue:e}:null)}return this},n.delete=function(e){var t=this;if(At(this)&&!Mt(this,{type:`delete`,object:this,oldValue:e}))return!1;if(this.has(e)){var n=Nt(this),r=n?{observableKind:`set`,debugObjectName:this.tt,type:`delete`,object:this,oldValue:e}:null;return Et((function(){t.st.reportChanged(),t.vt.delete(e)})),n&&Ft(this,r),!0}return!1},n.has=function(e){return this.st.reportObserved(),this.vt.has(this.Qt(e))},n.entries=function(){var e=this.values();return Vt({next:function(){var t=e.next(),n=t.value,r=t.done;return r?{value:void 0,done:r}:{value:[n,n],done:r}}})},n.keys=function(){return this.values()},n.values=function(){this.st.reportObserved();var e=this,t=this.vt.values();return Vt({next:function(){var n=t.next(),r=n.done;return r?{value:void 0,done:r}:{value:e.Qt(n.value),done:r}}})},n.intersection=function(e){return m(e)&&!yr(e)?e.intersection(this):new Set(this).intersection(e)},n.union=function(e){return m(e)&&!yr(e)?e.union(this):new Set(this).union(e)},n.difference=function(e){return new Set(this).difference(e)},n.symmetricDifference=function(e){return m(e)&&!yr(e)?e.symmetricDifference(this):new Set(this).symmetricDifference(e)},n.isSubsetOf=function(e){return new Set(this).isSubsetOf(e)},n.isSupersetOf=function(e){return new Set(this).isSupersetOf(e)},n.isDisjointFrom=function(e){return m(e)&&!yr(e)?e.isDisjointFrom(this):new Set(this).isDisjointFrom(e)},n.replace=function(e){var n=this;return yr(e)&&(e=new Set(e)),Et((function(){Array.isArray(e)||m(e)?(n.clear(),e.forEach((function(e){return n.add(e)}))):e!=null&&t(`Cannot initialize set from `+e)})),this},n._t=function(e){return Pt(this,e)},n.St=function(e){return jt(this,e)},n.toJSON=function(){return Array.from(this)},n.toString=function(){return`[object ObservableSet]`},n[Symbol.iterator]=function(){return this.values()},S(e,[{key:`size`,get:function(){return this.st.reportObserved(),this.vt.size}},{key:Symbol.toStringTag,get:function(){return`Set`}}])}(),yr=f(`ObservableSet`,vr),br=Object.create(null),xr=function(){function e(e,t,n,r){t===void 0&&(t=new Map),r===void 0&&(r=yn),this.h=void 0,this.j=void 0,this.tt=void 0,this.un=void 0,this.lt=void 0,this.ut=void 0,this.et=void 0,this.v=void 0,this.p=void 0,this.on=void 0,this.sn=void 0,this.h=e,this.j=t,this.tt=n,this.un=r,this.lt=new hn(`ObservableObject.keys`),this.p=c(this.h)}var n=e.prototype;return n.O=function(e){return this.j.get(e).get()},n.S=function(e,t){var n=this.j.get(e);if(n instanceof In)return n.set(t),!0;if(At(this)){var r=Mt(this,{type:or,object:this.v||this.h,name:e,newValue:t});if(!r)return null;t=r.newValue}if((t=n.xt(t))!==z.UNCHANGED){var i=Nt(this),a=i?{type:or,observableKind:`object`,debugObjectName:this.tt,object:this.v||this.h,oldValue:n.Ot,name:e,newValue:t}:null;n.gt(t),i&&Ft(this,a)}return!0},n.ct=function(e){return z.trackingDerivation&&!g(this.h,e)&&this.it(e),this.h[e]},n.ht=function(e,t,n){return n===void 0&&(n=!1),g(this.h,e)?this.j.has(e)?this.S(e,t):n?Reflect.set(this.h,e,t):(this.h[e]=t,!0):this.s(e,{value:t,enumerable:!0,writable:!0,configurable:!0},this.un,n)},n.it=function(e){if(!z.trackingDerivation)return e in this.h;this.sn||=new Map;var t=this.sn.get(e);return t||(t=new Pn(e in this.h,le,`ObservableObject.key?`,!1),this.sn.set(e,t)),t.get()},n.o=function(e,n){if(!0===n&&(n=this.un),!1!==n){if(!(e in this.h)){var r;if((r=this.h[mn])!=null&&r[e])return;t(1,n.i,this.tt+`.`+e.toString())}for(var i=this.h;i&&i!==on;){var a=rn(i,e);if(a){var o=n.o(this,e,a,i);if(o===0)return;if(o===1)break}i=Object.getPrototypeOf(i)}Gt(this,0,e)}},n.s=function(e,t,n,r){if(r===void 0&&(r=!1),!0===n&&(n=this.un),!1===n)return this.l(e,t,r);var i=n.s(this,e,t,r);return i&&Gt(this,0,e),i},n.l=function(e,t,n){n===void 0&&(n=!1);try{$e();var r=this.Ut(e);if(!r)return r;if(At(this)){var i=Mt(this,{object:this.v||this.h,name:e,type:mr,newValue:t.value});if(!i)return null;var a=i.newValue;t.value!==a&&(t=ee({},t,{value:a}))}if(n){if(!Reflect.defineProperty(this.h,e,t))return!1}else an(this.h,e,t);this.fn(e,t.value)}finally{et()}return!0},n.g=function(e,t,n,r){r===void 0&&(r=!1);try{$e();var i=this.Ut(e);if(!i)return i;if(At(this)){var a=Mt(this,{object:this.v||this.h,name:e,type:mr,newValue:t});if(!a)return null;t=a.newValue}var o=Ut(e),s={configurable:!z.safeDescriptors||this.p,enumerable:!0,get:o.get,set:o.set};if(r){if(!Reflect.defineProperty(this.h,e,s))return!1}else an(this.h,e,s);var c=new Pn(t,n,`ObservableObject.key`,!1);this.j.set(e,c),this.fn(e,c.Ot)}finally{et()}return!0},n.m=function(e,t,n){n===void 0&&(n=!1);try{$e();var r=this.Ut(e);if(!r)return r;if(At(this)&&!Mt(this,{object:this.v||this.h,name:e,type:mr,newValue:void 0}))return null;t.name||=`ObservableObject.key`,t.context=this.v||this.h;var i=Ut(e),a={configurable:!z.safeDescriptors||this.p,enumerable:!1,get:i.get,set:i.set};if(n){if(!Reflect.defineProperty(this.h,e,a))return!1}else an(this.h,e,a);this.j.set(e,new In(t)),this.fn(e,void 0)}finally{et()}return!0},n.Ut=function(e,t){if(t===void 0&&(t=!1),!g(this.h,e))return!0;if(At(this)&&!Mt(this,{object:this.v||this.h,name:e,type:`remove`}))return null;try{var n;$e();var r=Nt(this),i=this.j.get(e),a=void 0;if(!i&&r&&(a=rn(this.h,e)?.value),t){if(!Reflect.deleteProperty(this.h,e))return!1}else delete this.h[e];i&&(this.j.delete(e),i instanceof Pn&&(a=i.Ot),nt(i)),this.lt.reportChanged(),(n=this.sn)==null||(n=n.get(e))==null||n.set(e in this.h),r&&r&&Ft(this,{type:`remove`,observableKind:`object`,object:this.v||this.h,debugObjectName:this.tt,oldValue:a,name:e})}finally{et()}return!0},n._t=function(e){return Pt(this,e)},n.St=function(e){return jt(this,e)},n.fn=function(e,t){var n,r=Nt(this);r&&r&&Ft(this,r?{type:mr,observableKind:`object`,debugObjectName:this.tt,object:this.v||this.h,name:e,newValue:t}:null),(n=this.sn)==null||(n=n.get(e))==null||n.set(!0),this.lt.reportChanged()},n.rt=function(){return this.lt.reportObserved(),fn(this.h)},n.nt=function(){return this.lt.reportObserved(),Object.keys(this.h)},e}(),B=f(`ObservableObjectAdministration`,xr),Sr=Kt(0),Cr=function(){var e=!1,t={};return Object.defineProperty(t,`0`,{set:function(){e=!0}}),Object.create(t)[0]=1,!1===e}(),wr=0,Tr=function(){};ur=Tr,dr=Array.prototype,Object.setPrototypeOf?Object.setPrototypeOf(ur.prototype,dr):ur.prototype.__proto__===void 0?ur.prototype=dr:ur.prototype.__proto__=dr;var Er=function(e){function t(t,n,r,i){var a;return r===void 0&&(r=`ObservableArray`),i===void 0&&(i=!1),a=e.call(this)||this,Qt((function(){var e=new cr(r,n,i,!0);e.v=a,d(a,F,e),t&&t.length&&a.spliceWithArray(0,0,t),Cr&&Object.defineProperty(a,`0`,Sr)})),a}w(t,e);var n=t.prototype;return n.concat=function(){this[F].st.reportObserved();var e=[...arguments];return Array.prototype.concat.apply(this.slice(),e.map((function(e){return zt(e)?e.slice():e})))},n[Symbol.iterator]=function(){var e=this,t=0;return en({next:function(){return t<e.length?{value:e[t++],done:!1}:{done:!0,value:void 0}}})},S(t,[{key:`length`,get:function(){return this[F].Ft()},set:function(e){this[F].Xt(e)}},{key:Symbol.toStringTag,get:function(){return`Array`}}])}(Tr);Object.entries(lr).forEach((function(e){var t=e[0];t!==`concat`&&u(Er.prototype,t,e[1])})),qt(1e3);var Dr=on.toString,Or=n().Iterator?.prototype||{};[`Symbol`,`Map`,`Set`].forEach((function(e){n()[e]===void 0&&t(`MobX requires global '`+e+`' to be available or polyfilled`)})),typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__==`object`&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:at,extras:{getDebugName:Zt},$mobx:F}),e.$mobx=F,e.FlowCancellationError=er,e.ObservableMap=hr,e.ObservableSet=vr,e.Reaction=Un,e._allowStateChanges=Le,e._allowStateChangesInsideComputed=st,e._allowStateReadsEnd=Je,e._allowStateReadsStart=qe,e._autoAction=Zn,e._endAction=Ie,e._getAdministration=Xt,e._getGlobalState=function(){return z},e._interceptReads=function(e,t,n){var r;return gr(e)||zt(e)||Fn(e)?r=Xt(e):Wt(e)&&(r=Xt(e,t)),r.dehancer=typeof t==`function`?t:n,function(){r.dehancer=void 0}},e._isComputingDerivation=function(){return z.trackingDerivation!==null},e._resetGlobalState=function(){var e=new Bn;for(var t in e)zn.indexOf(t)===-1&&(z[t]=e[t]);z.allowStateChanges=!z.enforceActions},e._startAction=Fe,e.action=Xn,e.autorun=lt,e.comparer=_n,e.computed=kn,e.configure=function(e){!0===e.isolateGlobalState&&function(){if((z.pendingReactions.length||z.inBatch||z.isRunningReactions)&&t(36),Hn=!0,Vn){var e=n();--e.__mobxInstanceCount==0&&(e.__mobxGlobals=void 0),z=new Bn}}();var r,i,a=e.useProxies,o=e.enforceActions;if(a!==void 0&&(z.useProxies=a===`always`||a!==`never`&&typeof Proxy<`u`),a===`ifavailable`&&(z.verifyProxies=!0),o!==void 0){var s=o===`always`?`always`:o===`observed`;z.enforceActions=s,z.allowStateChanges=!0!==s&&s!==`always`}[`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`disableErrorBoundaries`,`safeDescriptors`].forEach((function(t){t in e&&(z[t]=!!e[t])})),z.allowStateReads=!z.observableRequiresReaction,e.reactionScheduler&&(r=e.reactionScheduler,i=Wn,Wn=function(e){return r((function(){return i(e)}))})},e.createAtom=se,e.defineProperty=function(e,n,r){if(Wt(e))return e[F].l(n,r);t(39)},e.entries=function(e){return Wt(e)?St(e).map((function(t){return[t,e[t]]})):gr(e)?St(e).map((function(t){return[t,e.get(t)]})):yr(e)?Array.from(e.entries()):zt(e)?e.map((function(e,t){return[t,e]})):void t(7)},e.extendObservable=mt,e.flow=rr,e.flowResult=function(e){return e},e.get=function(e,n){if(Ct(e,n))return Wt(e)?e[F].ct(n):gr(e)?e.get(n):zt(e)?e[n]:void t(11)},e.getAtom=Yt,e.getDebugName=Zt,e.getDependencyTree=function(e,t){return ht(Yt(e,t))},e.getObserverTree=function(e,t){return gt(Yt(e,t))},e.has=Ct,e.intercept=function(e,t,n){return a(n)?function(e,t,n){return Xt(e,t).St(n)}(e,t,n):function(e,t){return Xt(e).St(t)}(e,t)},e.isAction=ct,e.isBoxedObservable=Fn,e.isComputed=function(e){return yt(e)},e.isComputedProp=function(e,t){return yt(e,t)},e.isFlow=vt,e.isFlowCancellationError=function(e){return e instanceof er},e.isObservable=xt,e.isObservableArray=zt,e.isObservableMap=gr,e.isObservableObject=Wt,e.isObservableProp=function(e,t){return bt(e,t)},e.isObservableSet=yr,e.keys=St,e.makeAutoObservable=function(e,t,n){return c(e)?mt(e,e,t,n):(Qt((function(){var r=Ht(e,n)[F];if(!e[ar]){var i=Object.getPrototypeOf(e),a=new Set([].concat(fn(e),fn(i)));a.delete(`constructor`),a.delete(F),u(i,ar,a)}e[ar].forEach((function(e){return r.o(e,!t||!(e in t)||t[e])}))})),e)},e.makeObservable=function(e,t,n){return Qt((function(){var r=Ht(e,n)[F];t??=function(e){return g(e,mn)||u(e,mn,ee({},e[mn])),e[mn]}(e),fn(t).forEach((function(e){return r.o(e,t[e])}))})),e},e.observable=En,e.observe=function(e,t,n,r){return a(n)?function(e,t,n,r){return Xt(e,t)._t(n,r)}(e,t,n,r):function(e,t,n){return Xt(e)._t(t,n)}(e,t,n)},e.onBecomeObserved=dt,e.onBecomeUnobserved=ft,e.onReactionError=function(e){return z.globalReactionErrorHandlers.push(e),function(){var t=z.globalReactionErrorHandlers.indexOf(e);t>=0&&z.globalReactionErrorHandlers.splice(t,1)}},e.override=vn,e.ownKeys=wt,e.reaction=function(e,t,n){function r(){if(p=!1,!h.isDisposed){var t=!1,r=s;h.track((function(){var n=Le(!1,(function(){return e(h)}));t=f||!m(s,n),s=n})),(f&&n.fireImmediately||!f&&t)&&l(s,r,h),f=!1}}var i;n===void 0&&(n=cn);var a,o,s,c=n.name??`Reaction`,l=Xn(c,n.onError?(a=n.onError,o=t,function(){try{return o.apply(this,arguments)}catch(e){a.call(this,e)}}):t),u=!n.scheduler&&!n.delay,d=ut(n),f=!0,p=!1,m=n.compareStructural?_n.structural:n.equals||_n.default,h=new Un(c,(function(){f||u?r():p||(p=!0,d(r))}),n.onError,n.requiresObservable);return(i=n)!=null&&(i=i.signal)!=null&&i.aborted||h.Y(),h.Z(n?.signal)},e.remove=function(e,n){Wt(e)?e[F].Ut(n):gr(e)||yr(e)?e.delete(n):zt(e)?(typeof n!=`number`&&(n=parseInt(n,10)),e.splice(n,1)):t(9)},e.runInAction=st,e.set=function e(n,r,i){if(arguments.length!==2||yr(n))Wt(n)?n[F].ht(r,i):gr(n)?n.set(r,i):yr(n)?n.add(r):zt(n)?(typeof r!=`number`&&(r=parseInt(r,10)),r<0&&t(`Invalid index: '`+r+`'`),$e(),r>=n.length&&(n.length=r+1),n[r]=i,et()):t(8);else{$e();var a=r;try{for(var o in a)e(n,o,a[o])}finally{et()}}},e.spy=at,e.toJS=function(e){return function e(t,n){if(typeof t!=`object`||!t||t instanceof Date||!xt(t))return t;if(Fn(t)||R(t))return e(t.get(),n);if(n.has(t))return n.get(t);if(zt(t)){var r=Tt(n,t,Array(t.length));return t.forEach((function(t,i){r[i]=e(t,n)})),r}if(yr(t)){var i=Tt(n,t,new Set);return t.forEach((function(t){i.add(e(t,n))})),i}if(gr(t)){var a=Tt(n,t,new Map);return t.forEach((function(t,r){a.set(r,e(t,n))})),a}var o=Tt(n,t,{});return wt(t).forEach((function(r){on.propertyIsEnumerable.call(t,r)&&(o[r]=e(t[r],n))})),o}(e,new Map)},e.trace=function(){},e.transaction=Et,e.untracked=We,e.values=function(e){return Wt(e)?St(e).map((function(t){return e[t]})):gr(e)?St(e).map((function(t){return e.get(t)})):yr(e)?Array.from(e.values()):zt(e)?e.slice():void t(6)},e.when=function(e,t,n){return arguments.length===1||t&&typeof t==`object`?Ot(e,t):Dt(e,t,n||{})}})),Ig=pe((e=>{Object.defineProperty(e,`__esModule`,{value:!0});var t={0:`Invalid value for configuration 'enforceActions', expected 'never', 'always' or 'observed'`,1:function(e,t){return`Cannot apply '`+e+`' to '`+t.toString()+`': Field not found.`},5:`'keys()' can only be used on observable objects, arrays, sets and maps`,6:`'values()' can only be used on observable objects, arrays, sets and maps`,7:`'entries()' can only be used on observable objects, arrays and maps`,8:`'set()' can only be used on observable objects, arrays and maps`,9:`'remove()' can only be used on observable objects, arrays and maps`,10:`'has()' can only be used on observable objects, arrays and maps`,11:`'get()' can only be used on observable objects, arrays and maps`,12:`Invalid annotation`,13:`Dynamic observable objects cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)`,14:`Intercept handlers should return nothing or a change object`,15:`Observable arrays cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)`,16:`Modification exception: the internal structure of an observable array was changed.`,17:function(e,t){return`[mobx.array] Index out of bounds, `+e+` is larger than `+t},18:`mobx.map requires Map polyfill for the current browser. Check babel-polyfill or core-js/es6/map.js`,19:function(e){return`Cannot initialize from classes that inherit from Map: `+e.constructor.name},20:function(e){return`Cannot initialize map from `+e},21:function(e){return`Cannot convert to map from '`+e+`'`},22:`mobx.set requires Set polyfill for the current browser. Check babel-polyfill or core-js/es6/set.js`,23:`It is not possible to get index atoms from arrays`,24:function(e){return`Cannot obtain administration from `+e},25:function(e,t){return`the entry '`+e+`' does not exist in the observable map '`+t+`'`},26:`please specify a property`,27:function(e,t){return`no observable property '`+e.toString()+`' found on the observable object '`+t+`'`},28:function(e){return`Cannot obtain atom from `+e},29:`Expecting some object`,30:`invalid action stack. did you forget to finish an action?`,31:`missing option for computed: get`,32:function(e,t){return`Cycle detected in computation `+e+`: `+t},33:function(e){return`The setter of computed value '`+e+`' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?`},34:function(e){return`[ComputedValue '`+e+`'] It is not possible to assign a new value to a computed value.`},35:"There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`",36:`isolateGlobalState should be called before MobX is running any reactions`,37:function(e){return"[mobx] `observableArray."+e+"()` mutates the array in-place, which is not allowed inside a derivation. Use `array.slice()."+e+"()` instead"},38:`'ownKeys()' can only be used on observable objects`,39:`'defineProperty()' can only be used on observable objects`};function n(e){var n=[...arguments].slice(1),r=typeof e==`string`?e:t[e];throw typeof r==`function`&&(r=r.apply(null,n)),Error(`[MobX] `+r)}var r={};function i(){return typeof globalThis<`u`?globalThis:typeof window<`u`?window:typeof global<`u`?global:typeof self<`u`?self:r}var a=Object.assign,o=Object.getOwnPropertyDescriptor,s=Object.defineProperty,c=Object.prototype,l=[];Object.freeze(l);var u={};Object.freeze(u);var d=typeof Proxy<`u`,f=Object.toString();function p(){d||n("`Proxy` objects are not available in the current environment. Please configure MobX to enable a fallback implementation.`")}function m(e){I.verifyProxies&&n(`MobX is currently configured to be able to run in ES5 mode, but in ES5 MobX won't be able to `+e)}function h(){return++I.mobxGuid}function g(e){var t=!1;return function(){if(!t)return t=!0,e.apply(this,arguments)}}var _=function(){};function v(e){return typeof e==`function`}function y(e){switch(typeof e){case`string`:case`symbol`:case`number`:return!0}return!1}function b(e){return typeof e==`object`&&!!e}function x(e){if(!b(e))return!1;var t=Object.getPrototypeOf(e);if(t==null)return!0;var n=Object.hasOwnProperty.call(t,`constructor`)&&t.constructor;return typeof n==`function`&&n.toString()===f}function S(e){var t=e?.constructor;return t?t.name===`GeneratorFunction`||t.displayName===`GeneratorFunction`:!1}function C(e,t,n){s(e,t,{enumerable:!1,writable:!0,configurable:!0,value:n})}function ee(e,t,n){s(e,t,{enumerable:!1,writable:!1,configurable:!0,value:n})}function te(e,t){var n=`isMobX`+e;return t.prototype[n]=!0,function(e){return b(e)&&e[n]===!0}}function w(e){return e!=null&&Object.prototype.toString.call(e)===`[object Map]`}function ne(e){return Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(e)))===null}function re(e){return e!=null&&Object.prototype.toString.call(e)===`[object Set]`}var ie=Object.getOwnPropertySymbols!==void 0;function T(e){var t=Object.keys(e);if(!ie)return t;var n=Object.getOwnPropertySymbols(e);return n.length?[].concat(t,n.filter(function(t){return c.propertyIsEnumerable.call(e,t)})):t}var E=typeof Reflect<`u`&&Reflect.ownKeys?Reflect.ownKeys:ie?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames;function ae(e){return typeof e==`string`?e:typeof e==`symbol`?e.toString():new String(e).toString()}function oe(e){return e===null?null:typeof e==`object`?``+e:e}function se(e,t){return c.hasOwnProperty.call(e,t)}var ce=Object.getOwnPropertyDescriptors||function(e){var t={};return E(e).forEach(function(n){t[n]=o(e,n)}),t};function le(e,t){return!!(e&t)}function ue(e,t,n){return n?e|=t:e&=~t,e}function de(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function fe(e,t,n){if(ye())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var i=new(e.bind.apply(e,r));return n&&be(i,n.prototype),i}function pe(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,Se(r.key),r)}}function me(e,t,n){return t&&pe(e.prototype,t),n&&pe(e,n),Object.defineProperty(e,`prototype`,{writable:!1}),e}function he(e,t){var n=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=Ce(e))||t&&e&&typeof e.length==`number`){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw TypeError(`Invalid attempt to iterate non-iterable instance.
55
57
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function D(){return D=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},D.apply(null,arguments)}function ge(e){return ge=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},ge(e)}function _e(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,be(e,t)}function ve(e){try{return Function.toString.call(e).indexOf(`[native code]`)!==-1}catch{return typeof e==`function`}}function ye(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(ye=function(){return!!e})()}function be(e,t){return be=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},be(e,t)}function xe(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function Se(e){var t=xe(e,`string`);return typeof t==`symbol`?t:t+``}function Ce(e,t){if(e){if(typeof e==`string`)return de(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?de(e,t):void 0}}function we(e){var t=typeof Map==`function`?new Map:void 0;return we=function(e){if(e===null||!ve(e))return e;if(typeof e!=`function`)throw TypeError(`Super expression must either be null or a function`);if(t!==void 0){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return fe(e,arguments,ge(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),be(n,e)},we(e)}var Te=Symbol(`mobx-stored-annotations`);function Ee(e){function t(t,n){if(Ae(n))return e.decorate_20223_(t,n);De(t,n,e)}return Object.assign(t,e)}function De(e,t,r){se(e,Te)||C(e,Te,D({},e[Te])),Ke(r)&&!se(e[Te],t)&&n(`'`+(e.constructor.name+`.prototype.`+t.toString())+`' is decorated with 'override', but no such decorated member was found on prototype.`),Oe(e,r,t),Ke(r)||(e[Te][t]=r)}function Oe(e,t,r){if(!Ke(t)&&se(e[Te],r)){var i=e.constructor.name+`.prototype.`+r.toString(),a=e[Te][r].annotationType_,o=t.annotationType_;n(`Cannot apply '@`+o+`' to '`+i+`':`+(`
56
58
  The field is already decorated with '@`+a+`'.`)+`
57
59
  Re-decorating fields is not allowed.
@@ -81,18 +83,18 @@ The target is already observable of different type.
81
83
  Extending builtins is not supported.`),e;Object.isExtensible(e)||n(`Cannot make the designated object observable; it is not extensible`);var r=t?.name??(x(e)?`ObservableObject`:e.constructor.name)+`@`+h();return C(e,O,new Xi(e,new Map,String(r),It(t))),e}var Qi=te(`ObservableObjectAdministration`,Xi);function $i(e){return Ji[e]||(Ji[e]={get:function(){return this[O].getObservablePropValue_(e)},set:function(t){return this[O].setObservablePropValue_(e,t)}})}function ea(e){return b(e)?Qi(e[O]):!1}function ta(e,t,n){var r;e.appliedAnnotations_[n]=t,(r=e.target_[Te])==null||delete r[n]}function na(e,t,r){if(wa(t)||n(`Cannot annotate '`+e.name_+`.`+r.toString()+`': Invalid annotation.`),!Ke(t)&&se(e.appliedAnnotations_,r)){var i=e.name_+`.`+r.toString(),a=e.appliedAnnotations_[r].annotationType_,o=t.annotationType_;n(`Cannot apply '`+o+`' to '`+i+`':`+(`
82
84
  The field is already annotated with '`+a+`'.`)+`
83
85
  Re-annotating fields is not allowed.
84
- Use 'override' annotation for methods overridden by subclass.`)}}var ra=la(0),ia=function(){var e=!1,t={};return Object.defineProperty(t,`0`,{set:function(){e=!0}}),Object.create(t)[0]=1,e===!1}(),aa=0,oa=function(){};function sa(e,t){Object.setPrototypeOf?Object.setPrototypeOf(e.prototype,t):e.prototype.__proto__===void 0?e.prototype=t:e.prototype.__proto__=t}sa(oa,Array.prototype);var ca=function(e){function t(t,n,r,i){var a;return r===void 0&&(r=`ObservableArray@`+h()),i===void 0&&(i=!1),a=e.call(this)||this,ga(function(){var e=new ki(r,n,i,!0);e.proxy_=a,ee(a,O,e),t&&t.length&&a.spliceWithArray(0,0,t),ia&&Object.defineProperty(a,`0`,ra)}),a}_e(t,e);var n=t.prototype;return n.concat=function(){this[O].atom_.reportObserved();var e=[...arguments];return Array.prototype.concat.apply(this.slice(),e.map(function(e){return Ii(e)?e.slice():e}))},n[Symbol.iterator]=function(){var e=this,t=0;return Sa({next:function(){return t<e.length?{value:e[t++],done:!1}:{done:!0,value:void 0}}})},me(t,[{key:`length`,get:function(){return this[O].getArrayLength_()},set:function(e){this[O].setArrayLength_(e)}},{key:Symbol.toStringTag,get:function(){return`Array`}}])}(oa);Object.entries(ji).forEach(function(e){var t=e[0],n=e[1];t!==`concat`&&C(ca.prototype,t,n)});function la(e){return{enumerable:!1,configurable:!0,get:function(){return this[O].get_(e)},set:function(t){this[O].set_(e,t)}}}function ua(e){s(ca.prototype,``+e,la(e))}function da(e){if(e>aa){for(var t=aa;t<e+100;t++)ua(t);aa=e}}da(1e3);function fa(e,t,n){return new ca(e,t,n)}function pa(e,t){if(typeof e==`object`&&e){if(Ii(e))return t!==void 0&&n(23),e[O].atom_;if(Ki(e))return e.atom_;if(Vi(e)){if(t===void 0)return e.keysAtom_;var r=e.data_.get(t)||e.hasMap_.get(t);return r||n(25,t,ha(e)),r}if(ea(e)){if(!t)return n(26);var i=e[O].values_.get(t);return i||n(27,t,ha(e)),i}if(Ne(e)||nn(e)||z(e))return e}else if(v(e)&&z(e[O]))return e[O];n(28)}function ma(e,t){if(e||n(29),t!==void 0)return ma(pa(e,t));if(Ne(e)||nn(e)||z(e)||Vi(e)||Ki(e))return e;if(e[O])return e[O];n(24,e)}function ha(e,t){var n;if(t!==void 0)n=pa(e,t);else if(lr(e))return e.name;else n=ea(e)||Vi(e)||Ki(e)?ma(e):pa(e);return n.name_}function ga(e){var t=F(),n=Zt(!0);jn();try{return e()}finally{Mn(),Qt(n),hn(t)}}var _a=c.toString;function va(e,t,n){return n===void 0&&(n=-1),ya(e,t,n)}function ya(e,t,n,r,i){if(e===t)return e!==0||1/e==1/t;if(e==null||t==null)return!1;if(e!==e)return t!==t;var a=typeof e;if(a!==`function`&&a!==`object`&&typeof t!=`object`)return!1;var o=_a.call(e);if(o!==_a.call(t))return!1;switch(o){case`[object RegExp]`:case`[object String]`:return``+e==``+t;case`[object Number]`:return+e==+e?+e==0?1/e==1/t:+e==+t:+t!=+t;case`[object Date]`:case`[object Boolean]`:return+e==+t;case`[object Symbol]`:return typeof Symbol<`u`&&Symbol.valueOf.call(e)===Symbol.valueOf.call(t);case`[object Map]`:case`[object Set]`:n>=0&&n++;break}e=ba(e),t=ba(t);var s=o===`[object Array]`;if(!s){if(typeof e!=`object`||typeof t!=`object`)return!1;var c=e.constructor,l=t.constructor;if(c!==l&&!(v(c)&&c instanceof c&&v(l)&&l instanceof l)&&`constructor`in e&&`constructor`in t)return!1}if(n===0)return!1;n<0&&(n=-1),r||=[],i||=[];for(var u=r.length;u--;)if(r[u]===e)return i[u]===t;if(r.push(e),i.push(t),s){if(u=e.length,u!==t.length)return!1;for(;u--;)if(!ya(e[u],t[u],n-1,r,i))return!1}else{var d=Object.keys(e),f=d.length;if(Object.keys(t).length!==f)return!1;for(var p=0;p<f;p++){var m=d[p];if(!(se(t,m)&&ya(e[m],t[m],n-1,r,i)))return!1}}return r.pop(),i.pop(),!0}function ba(e){return Ii(e)?e.slice():w(e)||Vi(e)||re(e)||Ki(e)?Array.from(e.entries()):e}var xa=i().Iterator?.prototype||{};function Sa(e){return e[Symbol.iterator]=Ca,Object.assign(Object.create(xa),e)}function Ca(){return this}function wa(e){return e instanceof Object&&typeof e.annotationType_==`string`&&v(e.make_)&&v(e.extend_)}[`Symbol`,`Map`,`Set`].forEach(function(e){i()[e]===void 0&&n(`MobX requires global '`+e+`' to be available or polyfilled`)}),typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__==`object`&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:Yn,extras:{getDebugName:ha},$mobx:O}),e.$mobx=O,e.FlowCancellationError=Ar,e.ObservableMap=Bi,e.ObservableSet=Gi,e.Reaction=R,e._allowStateChanges=Xt,e._allowStateChangesInsideComputed=cr,e._allowStateReadsEnd=_n,e._allowStateReadsStart=gn,e._autoAction=sr,e._endAction=Yt,e._getAdministration=ma,e._getGlobalState=wn,e._interceptReads=Lr,e._isComputingDerivation=cn,e._resetGlobalState=Tn,e._startAction=Jt,e.action=or,e.autorun=ur,e.comparer=ze,e.computed=Ht,e.configure=Sr,e.createAtom=Pe,e.defineProperty=ei,e.entries=Yr,e.extendObservable=Cr,e.flow=Pr,e.flowResult=Fr,e.get=$r,e.getAtom=pa,e.getDebugName=ha,e.getDependencyTree=wr,e.getObserverTree=Er,e.has=Qr,e.intercept=Rr,e.isAction=lr,e.isBoxedObservable=en,e.isComputed=Hr,e.isComputedProp=Ur,e.isFlow=Ir,e.isFlowCancellationError=jr,e.isObservable=Gr,e.isObservableArray=Ii,e.isObservableMap=Vi,e.isObservableObject=ea,e.isObservableProp=Kr,e.isObservableSet=Ki,e.keys=qr,e.makeAutoObservable=wi,e.makeObservable=Si,e.observable=A,e.observe=ni,e.onBecomeObserved=_r,e.onBecomeUnobserved=vr,e.onReactionError=Rn,e.override=Ge,e.ownKeys=ti,e.reaction=pr,e.remove=Zr,e.runInAction=cr,e.set=Xr,e.spy=Yn,e.toJS=oi,e.trace=si,e.transaction=li,e.untracked=mn,e.values=Jr,e.when=ui})),Ng=pe(((e,t)=>{process.env.NODE_ENV===`production`?t.exports=jg():t.exports=Mg()}))();function Pg(e){if(Array.isArray(e))return Object.freeze(e.map(Pg));if(typeof e==`object`&&e){let t=Object.create(null),n=Object.entries(e).sort(([e],[t])=>e<t?-1:+(e>t));for(let[e,r]of n)t[e]=Pg(r);return Object.freeze(t)}return e}function Fg(e){let t=typeof e;if(t===`string`||t===`number`||t===`boolean`)return t;throw TypeError(`Variable values must be string|number|boolean (got ${t})`)}function Ig(e){return typeof e==`string`?e:String(e)}function Lg(e){if(typeof e==`number`)return e;if(typeof e==`boolean`)return+!!e;let t=e.trim();if(t===``)throw TypeError(`Cannot cast empty string to number`);let n=Number(t);if(!Number.isFinite(n))throw TypeError(`Cannot cast ${JSON.stringify(e)} to number`);return n}function Rg(e){if(typeof e==`boolean`)return e;if(typeof e==`number`){if(e===0||e===1)return e===1;throw TypeError(`Cannot cast number ${e} to bool (only 0 and 1 are accepted)`)}if(e===`true`)return!0;if(e===`false`)return!1;throw TypeError(`Cannot cast ${JSON.stringify(e)} to bool (expected "true" or "false")`)}function zg(e,t){if(!(e instanceof H))throw TypeError(`template function expected a RichText fragment, got ${typeof e==`object`?Object.prototype.toString.call(e):typeof e}`);let n=e.copy();return n.style=Bg(e.style).add(t),n}function Bg(e){if(e instanceof B)return e;try{return B.parse(e)}catch(t){throw t instanceof br?TypeError(`template function cannot style a fragment whose base style "${e}" is not a style definition: a style name resolves only against the theme of a render`,{cause:t}):t}}function Vg(e){return{fn:(t=>zg(t,e)),argTypes:[`liftable`],returnType:`T`}}function Hg(e){return{fn:((t,n)=>zg(n,new B({[e]:P.parse(t)}))),argTypes:[`string`,`liftable`],returnType:`T`}}function Ug(e,t){return new B({[e]:t})}function Wg(){let e={};for(let t of _r)e[t]=Vg(Ug(t,!0)),e[`not_${t}`]=Vg(Ug(t,!1));for(let[t,n]of Object.entries(yr))e[t]=Vg(Ug(n,!0));return e}const Gg={fn:((e,t)=>zg(t,B.parse(e))),argTypes:[`string`,`liftable`],returnType:`T`},Kg={fn:((e,t)=>zg(t,new B({link:e}))),argTypes:[`string`,`liftable`],returnType:`T`};function qg(){return{fg:Hg(`color`),bg:Hg(`bgcolor`),...Wg(),link:Kg,style:Gg}}function Jg(e,t){if(!zn.test(e.trim()))throw TypeError(`${t} expected a color (#RRGGBB or #RRGGBBAA), got ${JSON.stringify(e)} — to use a palette name here, wrap it: ${t} (color ${JSON.stringify(e)}) …`);return Bn(e)}function Yg(e,t){return{fn:t,argTypes:e,returnType:`string`}}function Xg(e,t,n,r){let i=r===void 0||e>=r.min&&e<=r.max;if(!Number.isFinite(e)||!i){let i=r===void 0?`a finite number`:`within ${r.min}..${r.max} (${r.note})`;throw RangeError(`${t}'s ${n} must be ${i}, got ${e}`+(e===void 0?` — ${t} takes it as its last argument`:``))}return e}const Zg=Yg([`string`,`int`],((e,t)=>Kn(Jg(e,`darken`),Xg(t,`darken`,`levels`)).hex)),Qg=Yg([`string`,`int`],((e,t)=>Kn(Jg(e,`lighten`),-Xg(t,`lighten`,`levels`)).hex)),$g={min:0,max:100,note:`0 = from, 100 = toward`},e_=Yg([`string`,`string`,`float`],((e,t,n)=>hn(Jg(e,`mix`),Jg(t,`mix`),Xg(n,`mix`,`percentage`,$g)/100).hex)),t_={min:1,max:21,note:`4.5 = AA body text, 3 = AA large text`},n_=Yg([`string`],(e=>qn(Jg(e,`contrastOn`)).hex)),r_=e=>Yg([`string`,`string`,`float`],((t,n,r)=>Jn(Jg(t,`readableOn`),Jg(n,`readableOn`),Xg(r,`readableOn`,`ratio`,t_),e()).hex)),i_={hueShift:`shiftHue`,chromaScale:`scaleChroma`,lightnessScale:`scaleLightness`,lightnessShift:`shiftLightness`};function a_(){let e={};for(let[t,n]of Object.entries(i_)){let r=t;e[n]=Yg([`string`,`float`],((e,t)=>{let i={...On,[r]:Xg(t,n,`amount`)};return R.fromRgba(Jg(e,n)).applyKey(i).toRgba().hex}))}return e}function o_(e=()=>M.TRUECOLOR){return{darken:Zg,lighten:Qg,mix:e_,contrastOn:n_,readableOn:r_(e),...a_()}}function s_(e,t){if(e.length===0)throw RangeError(`ramp needs at least one stop after the easing: ramp <value> <easing> <position> <color> …`);if(e.length%2!=0)throw RangeError(`ramp's last stop (position ${String(e[e.length-1])}) has no color — stops are <position> <color> pairs`);let n=[];for(let r=0;r<e.length;r+=2)n.push({at:e[r],color:Vn(t,e[r+1])});return n}function c_(e){return{color:{fn:(t=>Vn(e(),t).hex),argTypes:[`string`],returnType:`string`},ramp:{fn:((...t)=>{if(t.length<2)throw RangeError(`ramp needs a value and an easing before its stops (got ${t.length}): ramp <value> "linear"|"step" <position> <color> …`);let[n,r,...i]=t;return new gr(hr(r),s_(i,e())).at(n).hex}),argTypes:[`float`,`string`],argTypePattern:`alternating`,returnType:`string`}}}function l_(e){return{...qg(),...o_(e)}}new B({color:`red`,dim:!0});const u_=/^(?:(?:global|apac|au|eu|us|us-east-\d|us-west-\d|eu-west-\d|eu-central-\d)\.)?(?:anthropic\.|azure_ai\/|bedrock\/|vertex_ai\/)?claude-(?:(?<family>opus|sonnet|haiku)-(?<newMajor>\d+)(?:-(?<newMinor>\d))?|(?<oldMajor>\d+)(?:-(?<oldMinor>\d))?-(?<oldFamily>opus|sonnet|haiku))(?:[-@]\d{8})?(?:-v\d+:\d+)?(?:-latest)?$/i,d_=/^(?<family>opus|sonnet|haiku)\s+(?<major>\d+)(?:\.(?<minor>\d))?$/i;function f_(e){if(!e)return`Claude`;let t=e.trim().replace(/\s*\([^)]*\)\s*$/,``).replace(/\s*\[[^\]]*\]\s*$/,``).trim(),n=t.match(u_);if(n?.groups){let{family:e,newMajor:t,newMinor:r,oldMajor:i,oldMinor:a,oldFamily:o}=n.groups,s=e||o,c=t||i,l=r||a;if(s&&c)return`${s.charAt(0).toUpperCase()+s.slice(1).toLowerCase()} ${l?`${c}.${l}`:c}`}let r=t.match(d_);if(r?.groups){let e=r.groups.family,t=r.groups.major,n=r.groups.minor;return`${e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()} ${n?`${t}.${n}`:t}`}return t||e}function p_(e){let t=e.match(d_);if(!t?.groups)return e;let n=t.groups.family,r=t.groups.major,i=t.groups.minor;return`${n.charAt(0).toUpperCase()}${i?`${r}.${i}`:r}`}function m_(e){let t=e.split(`/`),n=t.length-1;return t.map((e,t)=>{if(t===n)return e;let r=e.match(/^\.*./);return r?r[0]:e}).join(`/`)}function h_(e){return e.toLocaleString()}function g_(e){if(e.length===0)throw Error(`a cascade needs at least one stop, e.g. "0:calm"`);let t=[];for(let[n,r]of e.entries()){let e=r.indexOf(`:`),i=e<0?NaN:Number(r.slice(0,e));if(!Number.isFinite(i))throw Error(`cascade stop ${n} ("${r}") must be "<position>:<result>", e.g. "80:hot" — the position must be a number`);let a=t[n-1];if(a!==void 0&&i<a.at)throw Error(`cascade stops must be in ascending position order; stop ${n} at ${i} follows stop ${n-1} at ${a.at}`);t.push({at:i,text:r.slice(e+1)})}return t}function __(e,t){if(!Number.isFinite(e))throw Error(`a cascade needs a finite value, got ${e}`);let n=-1;for(;n+1<t.length&&t[n+1].at<=e;)n++;return(n<0?t[0]:t[n]).text}const v_=[`▁`,`▂`,`▃`,`▄`,`▅`,`▆`,`▇`,`█`],y_=v_.length;function b_(e,t){let n=t===void 0?e:t<=0?[]:e.slice(-t);if(n.length===0)return``;let r=n[0],i=n[0];for(let e of n)e<r&&(r=e),e>i&&(i=e);let a=i-r,o=``;for(let e of n){let t=a===0?0:Math.round((e-r)/a*(y_-1));o+=v_[t]}return o}function x_(e){let t=[];for(let n of e.split(`,`)){let e=n.trim();if(e===``)continue;let r=Number(e);if(!Number.isFinite(r))throw TypeError(`sparkline: non-numeric series element ${JSON.stringify(n)}`);t.push(r)}return t}const S_=Sa(),C_=[...Ma];function w_(){return{basename:{fn:e=>l(e),argTypes:[`string`]},dirname:{fn:e=>u(e),argTypes:[`string`]},abbreviatePath:{fn:e=>m_(e),argTypes:[`string`]},int:{fn:e=>Lg(e),argTypes:[`value`]},string:{fn:e=>Ig(e),argTypes:[`value`]},bool:{fn:e=>Rg(e),argTypes:[`value`]},urlEncode:{fn:e=>encodeURIComponent(e),argTypes:[`string`]},themes:{fn:()=>S_,argTypes:[]},styles:{fn:()=>C_,argTypes:[]},sparkline:{fn:(e,t)=>b_(x_(e),t),argTypes:[`string`,`int`]},cascade:{fn:(e,...t)=>__(e,g_(t)),argTypes:[`float`,`string`]}}}function T_(e=()=>new Date){return{minutesUntilReset:{fn:t=>Math.round(Math.max(0,t*1e3-e().getTime())/6e4),argTypes:[`int`]},formatInteger:{fn:e=>h_(e),argTypes:[`int`]},round:{fn:e=>Math.round(e),argTypes:[`float`]},formatModelName:{fn:e=>f_(e),argTypes:[`string`]},shortenModelName:{fn:e=>p_(e),argTypes:[`string`]}}}function E_(e,t=()=>new Date,n){return zd({fromString:e=>new H(e),toString:e=>e.plain,isT:e=>e instanceof H,clock:t,missingKey:`error`,funcs:{...Dp(),...Lh(),...pm(),...Fm(),...yp(t),...lf(),...Vp(),...l_(n),...w_(),...T_(t),...e??{}}})}function D_(e){return O_(e,new Set(e.names()),``)}function O_(e,t,n){return new Proxy(Object.create(null),{has(e,r){if(typeof r!=`string`)return!1;let i=n?`${n}.${r}`:r;if(t.has(i))return!0;let a=`${i}.`;for(let e of t)if(e.startsWith(a))return!0;return!1},get(r,i){if(typeof i!=`string`)return;let a=n?`${n}.${i}`:i;if(t.has(a))return e.getKind(a)===`document`?k_(a,e.readDocument(a)):e.read(a);let o=`${a}.`;for(let n of t)if(n.startsWith(o))return O_(e,t,a)}})}function k_(e,t){switch(t.kind){case`ok`:return t.value;case`absent`:throw Error(`variable "${e}" has no value yet: its source has not completed a scan`);case`failed`:throw Error(`variable "${e}": ${t.reason}`)}}function J(e){return{kind:`ok`,value:e}}const Y={kind:`absent`};function X(e){return{kind:`failed`,reason:e}}function A_(e,t){return e?.kind===`ok`?e.value:t}function j_(e,t,n){return t.ok?J(t.stdout):t.reason===`non-zero`&&n===`absent`||t.reason===`non-zero`&&n===t.exitCode?Y:X(`${e}: ${[t.reason,t.exitCode==null?null:`exit ${t.exitCode}`,t.error??M_(t.stderr)].filter(Boolean).join(`, `)}`)}function M_(e){return e.trim().split(`
85
- `,1)[0]??``}function N_(e,t){if(e.kind!==`ok`)return e;let n=t(e.value);return n===null?Y:J(n)}function P_(e){if(e.kind!==`ok`)return e;let t=e.value.trim();return t?J(t):Y}const F_=/^[A-Za-z]:[\\/]/;function I_(e){let t=e.trim();if(F_.test(t))return null;let n=t.match(/^(?:[^@/]+@)?(\[[^\]]+\]):(.*)$/)??t.match(/^(?:[^@/:]+@)?([^/:]+):(?!\/\/)(.*)$/),r=n?`ssh://${n[1]}/${n[2].replace(/^\/+/,``)}`:t,i;try{i=new URL(r)}catch{return null}return{scheme:i.protocol.replace(/:$/,``),host:i.hostname.toLowerCase(),port:i.port,path:i.pathname.replace(/^\/+/,``).replace(/\/+$/,``)}}function L_(e){return I_(e)?.host||null}function R_(e){let t=L_(e);return t?t===`github.com`||t.endsWith(`.github.com`)?`github`:/(^|\.)gitlab\./.test(t)?`gitlab`:null:null}function z_(e){let t=new Map;for(let n of e.split(`
86
- `)){let e=n.match(/^remote\.(.+)\.url\s+(\S.*)$/);if(!e)continue;let r=t.get(e[1])??[];r.push(e[2].trim()),t.set(e[1],r)}return[...t].map(([e,t])=>({name:e,urls:t}))}function B_(e){return e.urls.find(e=>G_(e)!==null)??e.urls[0]??null}function V_(e){return e.find(e=>e.name===`origin`)??e[0]??null}function H_(e){let t=V_(e);return t?B_(t):null}function U_(e){let t=V_(e);return t?t.urls.find(e=>R_(e)!==null)??B_(t):null}function W_(e){let t=(I_(e)?.path??e.replace(/[\\/]+$/,``)).split(`/`);return(t[t.length-1]??``).replace(/\.git$/,``)||null}function G_(e){let t=I_(e);if(!t)return null;let n=t.scheme===`https`?{scheme:`https`,port:t.port}:t.scheme===`http`?{scheme:`http`,port:t.port}:t.scheme===`ssh`||t.scheme===`git`?{scheme:`https`,port:``}:null;if(!n||!t.host)return null;let r=t.path.replace(/\.git$/,``);if(!r)return null;let i=n.port?`${t.host}:${n.port}`:t.host;return`${n.scheme}://${i}/${r}`}function K_(e){let t=H_(e);return t===null?null:G_(t)}function q_(e,t,n,r){return t.ok?r(t.stdout):t.reason===`spawn-error`&&/ENOENT/i.test(t.error??``)||t.reason===`non-zero`&&n.test(t.stderr)?Y:X(`${e}: ${[t.reason,t.exitCode==null?null:`exit ${t.exitCode}`,t.error??M_(t.stderr)].filter(Boolean).join(`, `)}`)}function J_(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Y_(e){let t=`detached`,n=Y,r=Y,i=Y,a=0,o=0,s=0,c=0;for(let l of e.split(`
87
- `)){if(!l)continue;if(l.startsWith(`# `)){let e=l.slice(2);if(e.startsWith(`branch.oid `)){let t=e.slice(11).trim();n=t===`(initial)`?Y:J(t)}else if(e.startsWith(`branch.head `)){let n=e.slice(12).trim();t=n===`(detached)`?`detached`:n}else if(e.startsWith(`branch.upstream `))r=J(e.slice(16).trim());else if(e.startsWith(`branch.ab `)){let t=e.slice(10).trim().match(/^\+(\d+)\s+-(\d+)$/);t&&(i=J({ahead:parseInt(t[1],10),behind:parseInt(t[2],10)}))}continue}let e=l[0];if(e===`1`||e===`2`){let e=l.slice(2,4);e[0]!==`.`&&a++,e[1]!==`.`&&o++}else e===`u`?c++:e===`?`&&s++}let l=`clean`;return c>0?l=`conflicts`:(a||o||s)&&(l=`dirty`),{branch:t,status:l,aheadBehind:i,oid:n,upstream:r,workingTree:{staged:a,unstaged:o,untracked:s,conflicts:c}}}function X_(e){let t;try{t=JSON.parse(e)}catch(e){return X(`gh pr view: unparseable JSON (${e instanceof Error?e.message:String(e)})`)}if(!J_(t))return X(`gh pr view: JSON is not an object`);let{number:n,state:r,url:i}=t;return typeof n!=`number`||typeof r!=`string`||typeof i!=`string`?X(`gh pr view: missing number/state/url`):r.toUpperCase()===`OPEN`?J({number:n,state:r,url:i}):Y}function Z_(e){let t;try{t=JSON.parse(e)}catch(e){return X(`glab mr view: unparseable JSON (${e instanceof Error?e.message:String(e)})`)}if(!J_(t))return X(`glab mr view: JSON is not an object`);let n=t.iid,r=t.state,i=t.web_url;return typeof n!=`number`||typeof r!=`string`||typeof i!=`string`?X(`glab mr view: missing iid/state/web_url`):r.toLowerCase()===`opened`?J({number:n,state:r,url:i}):Y}function Q_(e){try{let t=r.statSync(e);return{key:`${t.dev}:${t.ino}`,stamp:`${t.mtimeMs}:${t.size}`}}catch{return null}}var $_=class{isGitRepo(e){try{return r.existsSync(c.join(e,`.git`))}catch{return!1}}async execGitAsync(e,t){return Te({bin:`git`,args:[...e],cwd:t.cwd,env:{...process.env,GIT_OPTIONAL_LOCKS:`0`},timeoutMs:t.timeout,category:`git`})}async resolveEffectiveGitDir(e,t){return this.isWorktree(e)?J(e):t&&this.isGitRepo(t)?J(t):this.isGitRepo(e)?J(e):this.findGitRoot(e)}async findGitRoot(e){let t=c.resolve(e);for(;;){if(this.isGitRepo(t))return J(t);let e=c.dirname(t);if(e===t)return Y;t=e}}async getGitInfo(e,t={},n){try{return await this.computeGitInfo(e,t,n)}catch(e){return X(`git: ${e instanceof Error?e.message:String(e)}`)}}async computeGitInfo(e,t={},n){let r,i=this.isWorktree(e);if(i)r=e;else if(n&&this.isGitRepo(n))r=n;else if(this.isGitRepo(e))r=e;else{let t=await this.findGitRoot(e);if(t.kind!==`ok`)return t;r=t.value}let a=await this.getCoreAsync(r);if(a.kind!==`ok`)return a;let o={branch:a.value.branch,status:a.value.status,aheadBehind:a.value.aheadBehind};t.showWorkingTree&&(o.workingTree=a.value.workingTree),t.showSha&&(o.sha=N_(a.value.oid,e=>e.slice(0,7))),t.showUpstream&&(o.upstream=a.value.upstream),t.showTag&&(o.tag=await this.getNearestTagAsync(r)),t.showTimeSinceCommit&&(o.timeSinceCommit=await this.timeSinceCommit(r,a.value.oid)),t.showStashCount&&(o.stashCount=this.getStashCount(r));let s=t.showRepoName||t.showRepoUrl?await this.getRemotesAsync(r):void 0;return s!==void 0&&t.showRepoName&&(o.repoName=N_(s,e=>this.repoNameFrom(e,r)),o.isWorktree=i),s!==void 0&&t.showRepoUrl&&(o.repoUrl=N_(s,K_)),t.showOperation&&(o.operation=this.getOngoingOperation(r)),J(o)}resolveGitDir(e){let t=c.join(e,`.git`);try{if(r.existsSync(t)&&r.statSync(t).isFile()){let n=r.readFileSync(t,`utf-8`).match(/^gitdir:\s*(.+)$/m);if(n?.[1])return c.resolve(e,n[1].trim())}}catch{}return t}getOngoingOperation(e){try{let t=this.resolveGitDir(e);return r.existsSync(c.join(t,`MERGE_HEAD`))?J(`MERGE`):r.existsSync(c.join(t,`CHERRY_PICK_HEAD`))?J(`CHERRY-PICK`):r.existsSync(c.join(t,`REVERT_HEAD`))?J(`REVERT`):r.existsSync(c.join(t,`BISECT_LOG`))?J(`BISECT`):r.existsSync(c.join(t,`rebase-merge`))||r.existsSync(c.join(t,`rebase-apply`))?J(`REBASE`):Y}catch(e){return X(`git operation probe: ${e instanceof Error?e.message:String(e)}`)}}async getNearestTagAsync(e){return P_(j_(`git describe --tags`,await this.execGitAsync([`describe`,`--tags`,`--abbrev=0`],{cwd:e,timeout:2e3}),`absent`))}async timeSinceCommit(e,t){return t.kind===`ok`?N_(await this.commitTimestampMs(e,t.value),e=>Math.floor((Date.now()-e)/1e3)):t}commitTimes=new Map;async commitTimestampMs(e,t){let n=this.commitTimes.get(t);if(n!==void 0)return this.commitTimes.delete(t),this.commitTimes.set(t,n),n;let r=this.readCommitTimestampMs(e,t);for(this.commitTimes.set(t,r),r.then(e=>{e.kind!==`ok`&&this.commitTimes.get(t)===r&&this.commitTimes.delete(t)},()=>{this.commitTimes.get(t)===r&&this.commitTimes.delete(t)});this.commitTimes.size>256;){let e=this.commitTimes.keys().next().value;if(e===void 0)break;this.commitTimes.delete(e)}return r}async readCommitTimestampMs(e,t){let n=P_(j_(`git log -1`,await this.execGitAsync([`log`,`-1`,`--format=%ct`,t,`--`],{cwd:e,timeout:2e3}),`absent`));if(n.kind!==`ok`)return n;let r=parseInt(n.value,10)*1e3;return Number.isNaN(r)?X(`git log -1: unparseable timestamp "${n.value}"`):J(r)}resolveCommonGitDir(e){let t=this.resolveGitDir(e);try{let e=r.readFileSync(c.join(t,`commondir`),`utf-8`).trim();if(e)return c.resolve(t,e)}catch{}return t}getStashCount(e){let t=c.join(this.resolveCommonGitDir(e),`logs`,`refs`,`stash`),n;try{n=r.readFileSync(t,`utf-8`)}catch(e){return e.code===`ENOENT`?J(0):X(`git stash reflog ${t}: ${e instanceof Error?e.message:String(e)}`)}let i=n.trim();return J(i?i.split(`
88
- `).length:0)}async getRemotesAsync(e){let t=Q_(c.join(this.resolveCommonGitDir(e),`config`));if(t===null)return this.readRemotes(e);let{key:n,stamp:r}=t,i=this.remotesByConfig.get(n);if(i!==void 0&&i.stamp===r)return this.remotesByConfig.delete(n),this.remotesByConfig.set(n,i),i.remotes;let a=this.readRemotes(e);for(this.remotesByConfig.set(n,{stamp:r,remotes:a}),a.then(e=>{let t=this.remotesByConfig.get(n);e.kind!==`ok`&&t?.remotes===a&&this.remotesByConfig.delete(n)},()=>{this.remotesByConfig.get(n)?.remotes===a&&this.remotesByConfig.delete(n)});this.remotesByConfig.size>256;){let e=this.remotesByConfig.keys().next().value;if(e===void 0)break;this.remotesByConfig.delete(e)}return a}remotesByConfig=new Map;async readRemotes(e){let t=j_(`git config --get-regexp remote url`,await this.execGitAsync([`config`,`--local`,`--get-regexp`,`^remote\\..*\\.url$`],{cwd:e,timeout:2e3}),1);return t.kind===`failed`?t:J(t.kind===`ok`?z_(t.value):[])}repoNameFrom(e,t){let n=H_(e);return(n===null?null:W_(n))??c.basename(t)}async getRepoRemoteUrl(e){let t=await this.getRemotesAsync(e);if(t.kind!==`ok`)return t;let n=U_(t.value);return n===null?Y:J(n)}async execForgeAsync(e,t,n){return Te({bin:e,args:[...t],cwd:n.cwd,env:{...process.env},timeoutMs:n.timeout,category:`forge`})}async resolvePullRequest(e,t){let n=R_(t);return n===`github`?q_(`gh pr view`,await this.execForgeAsync(`gh`,[`pr`,`view`,`--json`,`number,state,url`],{cwd:e,timeout:5e3}),/no (open )?pull requests? found/i,X_):n===`gitlab`?q_(`glab mr view`,await this.execForgeAsync(`glab`,[`mr`,`view`,`--output`,`json`],{cwd:e,timeout:5e3}),/no (open )?merge requests? (found|available)/i,Z_):Y}isWorktree(e){try{let t=c.join(e,`.git`);return!!(r.existsSync(t)&&r.statSync(t).isFile())}catch{return!1}}async getCoreAsync(e){D(`[GIT-EXEC] Running git status --porcelain=v2 in ${e}`);let t=j_(`git status --porcelain=v2 --branch`,await this.execGitAsync([`status`,`--porcelain=v2`,`--branch`],{cwd:e,timeout:2e3}),`failed`);return t.kind===`ok`?J(Y_(t.value)):t}};const ev=(e,t)=>D(t);var tv=class{slots=new Map;maxWatchers;counters;logger;closed=!1;constructor(e={}){this.maxWatchers=e.maxWatchers??128,this.counters=e.counters,this.logger=e.logger??ev}acquire(e,t,n){if(this.closed)return{release:()=>{}};let r=this.slots.get(e);if(r)return r.refcount++,r.onInvalidate=n,r.lastTouched=Date.now(),this.slots.delete(e),this.slots.set(e,r),this.makeHandle(e);let i={key:e,watchers:[],refcount:1,debounceTimer:null,onInvalidate:n,targets:t,lastTouched:Date.now()};return this.openWatchers(i),this.slots.set(e,i),this.counters&&this.counters.watchersOpened++,this.evictIfNeeded(),this.makeHandle(e)}makeHandle(e){let t=!1;return{release:()=>{if(t)return;t=!0;let n=this.slots.get(e);n&&(n.refcount=Math.max(0,n.refcount-1),n.refcount===0&&(this.closeSlot(n),this.slots.delete(e)))}}}openWatchers(e){let t=()=>{e.debounceTimer||(e.debounceTimer=setTimeout(()=>{e.debounceTimer=null;try{e.onInvalidate()}catch(e){this.logger(`warn`,`watcher invalidate threw: ${e.message}`)}},50),e.debounceTimer.unref())};for(let n of e.targets.files)try{let i=r.watch(n,{persistent:!1},t);i.on(`error`,e=>{this.logger(`warn`,`watcher error ${n}: ${e.message}`)}),e.watchers.push(i)}catch(e){this.logger(`warn`,`watch failed ${n}: ${e.message}`)}for(let n of e.targets.dirs)try{let i=n.filenames?new Set(n.filenames):null,a=r.watch(n.path,{persistent:!1},(e,n)=>{i&&(!n||!i.has(n))||t()});a.on(`error`,e=>{this.logger(`warn`,`watcher error ${n.path}: ${e.message}`)}),e.watchers.push(a)}catch(e){this.logger(`warn`,`watch failed ${n.path}: ${e.message}`)}}closeSlot(e){e.debounceTimer&&=(clearTimeout(e.debounceTimer),null);for(let t of e.watchers)try{t.close()}catch{}e.watchers=[],this.counters&&this.counters.watchersClosed++}evictIfNeeded(){for(;this.slots.size>this.maxWatchers;){let e=this.slots.keys().next().value;if(e===void 0)break;let t=this.slots.get(e);this.closeSlot(t),this.slots.delete(e),this.counters&&this.counters.watchersEvicted++;try{t.onInvalidate()}catch{}this.logger(`info`,`watcher LRU evict ${e}`)}}size(){return this.slots.size}closeAll(){this.closed=!0;for(let e of this.slots.values())this.closeSlot(e);this.slots.clear()}},nv=class{running=new Set;again=new Set;run(e,t){return this.again.add(e),this.running.has(e)?{kind:`queued`}:(this.running.add(e),{kind:`started`,done:this.loop(e,t)})}async loop(e,t){try{do this.again.delete(e),await t();while(this.again.has(e))}finally{this.running.delete(e),this.again.delete(e)}}clear(){this.running.clear(),this.again.clear()}get size(){return this.running.size}};const rv=(e,t)=>D(t),iv={showSha:!0,showStashCount:!0};function av(e){let t=Object.keys(e).sort(),n={};for(let r of t)n[r]=e[r];return JSON.stringify(n)}function ov(e){let t=t=>{try{return r.statSync(c.join(e,t)).mtimeMs}catch{return 0}};return{head:t(`HEAD`),index:t(`index`)}}function sv(e,t){return e.head!==t.head||e.index!==t.index}function cv(e){let t=[],n=c.join(e,`refs/heads`);try{r.statSync(n).isDirectory()&&t.push({path:n})}catch{}return{files:[c.join(e,`HEAD`),c.join(e,`index`)],dirs:t}}var lv=class extends $_{entries=new Map;subscribersByRepo=new Map;fetchInFlight=new Map;resolutions=new Map;prCache=new Map;prFetchInFlight=new Map;refreshes=new nv;hits=0;misses=0;invalidations=0;inner;ttlMs;maxEntries;watchers;ownsWatchers;logger;sanityTimer=null;constructor(e={}){super(),this.inner=e.inner??new $_,this.ttlMs=e.ttlMs??3e4,this.maxEntries=e.maxEntries??64,this.logger=e.logger??rv,e.watchers?(this.watchers=e.watchers,this.ownsWatchers=!1):(this.watchers=new tv({logger:this.logger}),this.ownsWatchers=!0);let t=e.sanityIntervalMs??3e5;t>0&&(this.sanityTimer=setInterval(()=>this.runSanityCheck(),t),this.sanityTimer.unref())}getWatcherRegistry(){return this.watchers}getStats(){return{size:this.entries.size,hits:this.hits,misses:this.misses,invalidations:this.invalidations,watchers:this.watchers.size()}}resolveEffectiveGitDir(e,t){let n=`${e}|${t??``}`,r=Date.now(),i=this.resolutions.get(n);if(i&&r-i.computedAt<this.ttlMs)return this.resolutions.delete(n),this.resolutions.set(n,i),i.dir;let a=this.inner.resolveEffectiveGitDir(e,t);return this.resolutions.set(n,{dir:a,computedAt:r}),a.catch(()=>{this.resolutions.get(n)?.dir===a&&this.resolutions.delete(n)}),this.evictResolutionsIfNeeded(),a}evictResolutionsIfNeeded(){for(;this.resolutions.size>this.maxEntries;){let e=this.resolutions.keys().next().value;if(e===void 0)break;this.resolutions.delete(e)}}async getGitInfo(e,t={},n){let r=await this.resolveEffectiveGitDir(e,n);return r.kind===`ok`?this.getGitInfoForRoot(r.value,t):r}getGitInfoForRoot(e,t){let n=`${e}|${av(t)}`,r=Date.now(),i=this.entries.get(n);if(i&&r-i.computedAt<this.ttlMs)return this.entries.delete(n),this.entries.set(n,i),this.hits++,Promise.resolve(J(i.info));let a=this.fetchInFlight.get(n);if(a)return a;let o=this.doFetch(e,n,t,r).finally(()=>{this.fetchInFlight.delete(n)});return this.fetchInFlight.set(n,o),o}async doFetch(e,t,n,r){this.misses++;let i=this.inner.resolveGitDir(e),a=ov(i),o=await this.inner.getGitInfo(e,n);if(o.kind!==`ok`)return o;let s=o.value;n.showPullRequest&&(s.pullRequest=await this.getPullRequestCached(e,s.branch)),this.dropEntry(t);let c=this.watchers.acquire(`git:${e}`,cv(i),()=>this.invalidateRepo(e));return this.entries.set(t,{info:s,computedAt:r,mtime:a,watcher:c,repoRoot:e}),this.evictIfNeeded(),o}async getPullRequestCached(e,t){let n=await this.inner.getRepoRemoteUrl(e);if(n.kind===`failed`)return n;if(n.kind===`absent`)return Y;let r=n.value,i=`${e}|${t}|${r}`,a=Date.now(),o=this.prCache.get(i);if(o){let e=o.pr.kind===`failed`?45e3:3e5;if(a-o.computedAt<e)return this.prCache.delete(i),this.prCache.set(i,o),o.pr}let s=this.prFetchInFlight.get(i);if(s)return s;let c=this.inner.resolvePullRequest(e,r).then(e=>(this.prCache.set(i,{pr:e,computedAt:Date.now()}),this.evictPrIfNeeded(),e)).finally(()=>{this.prFetchInFlight.delete(i)});return this.prFetchInFlight.set(i,c),c}evictPrIfNeeded(){for(;this.prCache.size>this.maxEntries;){let e=this.prCache.keys().next().value;if(e===void 0)break;this.prCache.delete(e)}}deliverable(e,t){return e.kind===`failed`?(this.logger(`warn`,`git fetch failed (${t}): ${e.reason}`),null):e.kind===`ok`?e.value:null}subscribe(e,t){let n=!1,r=null;return{firstDelivery:(async()=>{let i=await this.resolveEffectiveGitDir(e);if(n)return;if(i.kind!==`ok`){i.kind===`failed`&&this.logger(`warn`,`git resolve failed (subscribe ${e}): ${i.reason}`),this.safeInvoke(t,null);return}let a=i.value,o=this.subscribersByRepo.get(a);if(!o){let t=this.inner.resolveGitDir(a),n=this.watchers.acquire(`git:${a}`,cv(t),()=>this.invalidateRepo(a));o={workingDir:e,repoRoot:a,callbacks:new Set,watcher:n},this.subscribersByRepo.set(a,o)}o.callbacks.add(t),r={repoRoot:a,entry:o};let s=await this.getGitInfoForRoot(a,{...iv});n||this.safeInvoke(t,this.deliverable(s,a))})(),unsubscribe:()=>{if(n=!0,!r)return;let{repoRoot:e,entry:i}=r;i.callbacks.delete(t),i.callbacks.size===0&&(i.watcher.release(),this.subscribersByRepo.delete(e))}}}invalidateRepo(e){let t=0;for(let[n,r]of this.entries)r.repoRoot===e&&(r.watcher.release(),this.entries.delete(n),t++);t>0&&(this.invalidations+=t,this.logger(`info`,`gitCache invalidate ${e} dropped=${t}`)),this.refreshSubscribers(e)}refreshSubscribers(e){let t=this.subscribersByRepo.get(e);!t||t.callbacks.size===0||this.refreshes.run(e,()=>this.refreshOnce(e))}async refreshOnce(e){let t=this.subscribersByRepo.get(e);if(!t||t.callbacks.size===0)return;let n=await this.getGitInfoForRoot(e,{...iv}),r=this.deliverable(n,e),i=this.subscribersByRepo.get(e);if(!(!i||i.callbacks.size===0))for(let e of[...i.callbacks])i.callbacks.has(e)&&this.safeInvoke(e,r)}safeInvoke(e,t){try{e(t)}catch(e){this.logger(`warn`,`git subscriber threw: ${e.message??String(e)}`)}}dropEntry(e){let t=this.entries.get(e);t&&(t.watcher.release(),this.entries.delete(e))}evictIfNeeded(){for(;this.entries.size>this.maxEntries;){let e=this.entries.keys().next().value;if(e===void 0)break;this.dropEntry(e),this.logger(`info`,`gitCache evict ${e}`)}}runSanityCheck(){let e=new Map;for(let t of this.entries.values()){let n=e.get(t.repoRoot);n||(n=ov(this.inner.resolveGitDir(t.repoRoot)),e.set(t.repoRoot,n)),sv(t.mtime,n)&&this.invalidateRepo(t.repoRoot)}}runSanityCheckNow(){this.runSanityCheck()}close(){this.sanityTimer&&=(clearInterval(this.sanityTimer),null);for(let e of this.entries.values())e.watcher.release();this.entries.clear();for(let e of this.subscribersByRepo.values())e.callbacks.clear(),e.watcher.release();this.subscribersByRepo.clear(),this.refreshes.clear(),this.fetchInFlight.clear(),this.prCache.clear(),this.prFetchInFlight.clear(),this.resolutions.clear(),this.ownsWatchers&&this.watchers.closeAll()}};const uv=/\r\n|\r|\n/g,dv=e=>J(e.replace(uv,` `).trim());function fv(e){return t=>{let n=e.exec(t)?.[1];return n===void 0?X(`regex no-match`):J(n.replace(uv,` `))}}const pv=e=>{try{return J(JSON.parse(e))}catch(e){return X(`JSON parse failed: ${e.message}`)}};function mv(e,t){return t.kind!==`ttl`||t.durationMs>=500?t:(D(`declareShell "${e}": ttl ${t.durationMs}ms below floor 500ms; clamping`),{kind:`ttl`,durationMs:500})}function hv(e){let t=/^(\d+(?:\.\d+)?)(ms|s|m|h)$/.exec(e);if(!t)throw RangeError(`Invalid duration: "${e}"`);let n=parseFloat(t[1]);switch(t[2]){case`ms`:return n;case`s`:return n*1e3;case`m`:return n*6e4;case`h`:return n*36e5;default:throw RangeError(`Unexpected duration unit: "${t[2]}"`)}}const gv=`session.id`;function _v(e,t){return{where:`output of "${e}"`,read:async()=>{let n=await Te({bin:`/bin/sh`,args:[`-c`,e],category:`user-shell`,signal:t});if(!n.ok&&n.reason===`aborted`)throw t.reason;return n.ok?J(n.stdout):X(`shell "${e}" ${n.exitCode===null?[n.reason,n.error].filter(e=>e!==void 0).join(`: `):`exited with code ${n.exitCode}`}`)}}}function vv(e,t,n){return{where:`"${e}"`,read:async()=>{try{let r=await v(e,{encoding:`utf8`,signal:n});return J(t===`first-line`?r.split(/\r?\n/)[0]??``:r)}catch{if(n.aborted)throw n.reason;return X(`file unreadable: ${e}`)}}}}function yv(e,t,n){if(e.kind!==`ok`)return e;let r=t(e.value);return r.kind===`failed`?X(`${r.reason} in ${n}`):r}const bv=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],xv=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],Sv=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],Cv=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`];function wv(e,t){let n=[[`2006`,e=>String(e.getFullYear())],[`January`,e=>bv[e.getMonth()]],[`Monday`,e=>Sv[e.getDay()]],[`Jan`,e=>xv[e.getMonth()]],[`Mon`,e=>Cv[e.getDay()]],[`15`,e=>String(e.getHours()).padStart(2,`0`)],[`06`,e=>String(e.getFullYear()%100).padStart(2,`0`)],[`01`,e=>String(e.getMonth()+1).padStart(2,`0`)],[`02`,e=>String(e.getDate()).padStart(2,`0`)],[`04`,e=>String(e.getMinutes()).padStart(2,`0`)],[`05`,e=>String(e.getSeconds()).padStart(2,`0`)],[`PM`,e=>e.getHours()<12?`AM`:`PM`],[`pm`,e=>e.getHours()<12?`am`:`pm`],[`1`,e=>String(e.getMonth()+1)],[`2`,e=>String(e.getDate())],[`3`,e=>String(e.getHours()%12||12)],[`4`,e=>String(e.getMinutes())],[`5`,e=>String(e.getSeconds())]],r=``,i=0;for(;i<e.length;){let a=!1;for(let[o,s]of n)if(e.startsWith(o,i)){r+=s(t),i+=o.length,a=!0;break}a||(r+=e[i],i++)}return r}const Tv={branch:`string`,sha:`string`,dirty:`boolean`,ahead:`number`,behind:`number`,stash:`number`};function Ev(e,t,n,r){if(e===null){if(n!==void 0)return n;let e=Tv[t];try{return Av(r,e)}catch{return jv(e)}}switch(t){case`branch`:return e.branch===`detached`?``:e.branch;case`sha`:return A_(e.sha,``);case`dirty`:return e.status!==`clean`;case`ahead`:return A_(e.aheadBehind,{ahead:0,behind:0}).ahead;case`behind`:return A_(e.aheadBehind,{ahead:0,behind:0}).behind;case`stash`:return A_(e.stashCount,0)}}var Dv=class{watchers=new Map;subscribe(e,t){let n=this.watchers.get(e);if(!n){let t=new Set,r;try{r=s(e,()=>{for(let e of t)e()})}catch{return()=>{}}n={watcher:r,callbacks:t},this.watchers.set(e,n)}return n.callbacks.add(t),()=>this.unsubscribe(e,t)}unsubscribe(e,t){let n=this.watchers.get(e);n&&(n.callbacks.delete(t),n.callbacks.size===0&&(n.watcher.close(),this.watchers.delete(e)))}dispose(){for(let{watcher:e}of this.watchers.values())e.close();this.watchers.clear()}size(){return this.watchers.size}},Ov=class{buckets=new Map;subscribe(e,t){let n=this.buckets.get(e);if(!n){let t=new Set;n={timer:S(()=>{for(let e of t)e()},e),callbacks:t},this.buckets.set(e,n)}return n.callbacks.add(t),()=>this.unsubscribe(e,t)}unsubscribe(e,t){let n=this.buckets.get(e);n&&(n.callbacks.delete(t),n.callbacks.size===0&&(x(n.timer),this.buckets.delete(e)))}dispose(){for(let{timer:e}of this.buckets.values())x(e);this.buckets.clear()}bucketCount(){return this.buckets.size}};function kv(e,t){let n=e;for(let e of t.split(`.`)){if(typeof n!=`object`||!n)return;n=n[e]}return n}function Av(e,t){if(typeof e!=`string`&&typeof e!=`number`&&typeof e!=`boolean`)throw TypeError(`Expected string|number|boolean from payload, got ${typeof e}`);return t===`string`?Ig(e):t===`number`?Lg(e):Rg(e)}function jv(e){return e===`number`?0:e===`boolean`?!1:``}var Mv=class{inputMetas=new Map;lastErrors=new Map;watchMgr=new Dv;ttlMgr=new Ov;gitSubscriptions=new Map;cleanups=[];inFlight=new Map;reads=new nv;abort=new AbortController;drawn=Ng.observable.box(M.TRUECOLOR);drawnAt=()=>this.drawn.get();engine=E_(void 0,void 0,this.drawnAt);gitProvider;ownsGitProvider;sessionState;constructor(e,t=``,n,r){this.store=e,this.defaultEmptyValue=t,n?(this.gitProvider=n,this.ownsGitProvider=!1):(this.gitProvider=new lv({sanityIntervalMs:0}),this.ownsGitProvider=!0),this.sessionState=r}get variableStore(){return this.store}declareLiteral(e,t){this.store.defineBox(e,Fg(t),t)}declareInput(e,t,n,r){let i=r===void 0?this.defaultFor(n):r;this.store.defineBox(e,n,i),this.inputMetas.set(e,{path:t,varDefault:r})}declareEnv(e,t,n){let r=process.env[t];if(r!==void 0){this.store.defineBox(e,`string`,r);return}let i=n===void 0?typeof this.defaultEmptyValue==`string`?this.defaultEmptyValue:``:n;this.store.defineBox(e,`string`,i),this.recordError(e,`env var "${t}" is not set`)}declareShell(e,t,n){this.declareSource(e,_v(t,this.abort.signal),mv(e,n.cache),n.parse)}declareFile(e,t,n){this.declareSource(e,vv(t,n.readMode??`whole`,this.abort.signal),n.cache,n.parse)}declareSource(e,t,n,r){let i=this.publisherFor(e,r,t.where),a=()=>this.runSource(e,t,i);a(),this.registerCachePolicy(e,n,a)}publisherFor(e,t,n){switch(t.kind){case`text`:return this.scalarPublisher(e,dv,t.default,n);case`regex`:return this.scalarPublisher(e,fv(t.regex),t.default,n);case`json`:return this.documentPublisher(e,t.default,n)}}scalarPublisher(e,t,n,r){let i=this.stringInitial(n);return this.store.defineBox(e,`string`,i),n=>{let a=yv(n,t,r);this.noteOutcome(e,a),this.store.setBox(e,A_(a,i))}}documentPublisher(e,t,n){let r=t===void 0?Y:J(t);return this.store.defineDocument(e,r),i=>{let a=yv(i,pv,n);this.noteOutcome(e,a),this.store.setDocument(e,a.kind===`ok`||t===void 0?a:r)}}runSource(e,t,n){let r=this.reads.run(e,()=>t.read().then(n,e=>{if(e!==this.abort.signal.reason)throw e}));r.kind===`started`&&this.track(e,r.done)}track(e,t){let n=t.finally(()=>{this.inFlight.get(e)===n&&this.inFlight.delete(e)});this.inFlight.set(e,n)}async settled(e){let t=Date.now()+e;for(;this.inFlight.size>0;){let e=t-Date.now();if(e<=0)break;let n,r=await Promise.race([Promise.all(this.inFlight.values()).then(()=>`settled`),new Promise(t=>{n=setTimeout(()=>t(`deadline`),e)})]);if(clearTimeout(n),r===`deadline`)break}return[...this.inFlight.keys()]}declareTemplate(e,t,n={}){let r=this.engine.parse(t);this.store.defineComputed(e,`string`,t=>{let i=D_(this.store);try{let t=r.evaluate(i).map(e=>e.plain).join(``);return this.lastErrors.delete(e),t}catch(t){let r=t instanceof Error?t.message:String(t);if(this.recordError(e,r),n.varDefault===void 0)throw Error(`variable "${e}": ${r}`);return n.varDefault}});try{this.store.read(e)}catch{}}declareTime(e,t){let n=t.ttlMs??1e3;this.store.defineBox(e,`string`,(e=>{try{return wv(t.format,e)}catch{return this.stringInitial(t.varDefault)}})(new Date));let r=this.ttlMgr.subscribe(n,()=>{try{this.store.setBox(e,wv(t.format,new Date)),this.lastErrors.delete(e)}catch(n){this.applyFallback(e,`string`,t.varDefault,n instanceof Error?n.message:String(n))}});this.cleanups.push(r)}declareGit(e,t){let n=Tv[t.field],r=t.varDefault===void 0?jv(n):Av(t.varDefault,n);this.store.defineBox(e,n,r);let i=this.gitSubscriptions.get(t.cwd);if(!i){let e=new Map,n=this.gitProvider.subscribe(t.cwd,t=>{this.store.runInAction(()=>{for(let[n,r]of e)for(let{name:e,varDefault:i}of r)this.store.setBox(e,Ev(t,n,i,this.defaultEmptyValue))})});i={fieldSubs:e,firstDelivery:n.firstDelivery,unsubscribe:n.unsubscribe},this.gitSubscriptions.set(t.cwd,i)}let a=i.fieldSubs.get(t.field);a||(a=[],i.fieldSubs.set(t.field,a)),a.push({name:e,varDefault:t.varDefault}),this.track(e,i.firstDelivery)}declareState(e,t){if(!this.sessionState)throw Error(`declareState("${e}"): SourceRegistry was constructed without a SessionState — state-kind variables require a SessionState (the daemon provides one; tests must supply one)`);let n=this.sessionState,r=t.varDefault??this.stringInitial(void 0);this.store.defineComputed(e,`string`,e=>{let i=e(gv);if(typeof i!=`string`||!i)return r;let a=n.get(i,t.key);return a===null?r:a})}applyInput(e){this.store.runInAction(()=>{for(let[t,n]of this.inputMetas){let r=kv(e,n.path),i=this.store.getType(t);if(r!==void 0)try{this.store.setBox(t,Av(r,i)),this.lastErrors.delete(t)}catch(e){this.applyFallback(t,i,n.varDefault,e instanceof Error?e.message:String(e))}else this.applyFallback(t,i,n.varDefault,`input path "${n.path}" not found in payload`)}})}drawAt(e){this.store.runInAction(()=>this.drawn.set(e))}getLastError(e){return this.lastErrors.get(e)}dispose(){this.abort.abort();for(let e of this.cleanups)e();this.cleanups.length=0;for(let e of this.gitSubscriptions.values())e.unsubscribe();this.gitSubscriptions.clear(),this.reads.clear(),this.watchMgr.dispose(),this.ttlMgr.dispose(),this.ownsGitProvider&&this.gitProvider.close()}registerCachePolicy(e,t,n){switch(t.kind){case`never`:break;case`ttl`:{let e=this.ttlMgr.subscribe(t.durationMs,n);this.cleanups.push(e);break}case`watch_file`:{let e=this.watchMgr.subscribe(t.path,n);this.cleanups.push(e);break}case`key`:{let e=this.engine.parse(t.template),r=(0,Ng.reaction)(()=>{let t=D_(this.store);try{return e.evaluate(t).map(e=>e.plain).join(``)}catch{return``}},n);this.cleanups.push(r);break}case`depends_on`:{let e=(0,Ng.reaction)(()=>t.varNames.map(e=>this.store.changeKey(e)).join(`,`),n);this.cleanups.push(e);break}}}applyFallback(e,t,n,r){if(this.recordError(e,r),n!==void 0){this.store.setBox(e,n);return}try{this.store.setBox(e,Av(this.defaultEmptyValue,t))}catch{this.store.setBox(e,jv(t))}}defaultFor(e){try{return Av(this.defaultEmptyValue,e)}catch{return jv(e)}}stringInitial(e){return e===void 0?typeof this.defaultEmptyValue==`string`?this.defaultEmptyValue:``:e}recordError(e,t){this.lastErrors.set(e,{timestamp:Date.now(),message:t})}noteOutcome(e,t){t.kind===`ok`?this.lastErrors.delete(e):this.recordError(e,t.kind===`failed`?t.reason:`no value`)}};const Nv={project_dir:{kind:`input`,path:`workspace.project_dir`,default:``},[gv]:{kind:`input`,path:`session_id`,default:``},transcript_path:{kind:`input`,path:`transcript_path`,default:``},"theme.effective":{kind:`input`,path:`theme.effective`,default:``},"look.effective":{kind:`input`,path:`look.effective`,default:``},"preset.effective":{kind:`input`,path:`preset.effective`,default:``},"preset.customized":{kind:`input`,path:`preset.customized`,type:`boolean`,default:!1},"style.effective":{kind:`input`,path:`style.effective`,default:``},"progression.effective":{kind:`input`,path:`progression.effective`,default:``},"charset.effective":{kind:`input`,path:`charset.effective`,default:``},"colorCompatibility.effective":{kind:`input`,path:`colorCompatibility.effective`,default:``},"autoWrap.effective":{kind:`input`,path:`autoWrap.effective`,type:`boolean`,default:!0},"padding.effective":{kind:`input`,path:`padding.effective`,type:`number`,default:1},"term.cols":{kind:`input`,path:`term.cols`,type:`number`,default:80},"git.repoUrl":{kind:`input`,path:`git.repoUrl`,default:``}},Pv={theme:{configKey:`palette`,sessionKey:`theme`,effectiveVar:`theme.effective`},preset:{configKey:`preset`,sessionKey:`preset`,effectiveVar:`preset.effective`},look:{configKey:`look`,sessionKey:`look`,effectiveVar:`look.effective`},style:{configKey:`style`,sessionKey:`style`,effectiveVar:`style.effective`},progression:{configKey:`progression`,sessionKey:`progression`,effectiveVar:`progression.effective`},charset:{configKey:`charset`,sessionKey:`charset`,effectiveVar:`charset.effective`},colorCompatibility:{configKey:`colorCompatibility`,sessionKey:`colorCompatibility`,effectiveVar:`colorCompatibility.effective`},autoWrap:{configKey:`autoWrap`,sessionKey:`autoWrap`,effectiveVar:`autoWrap.effective`},padding:{configKey:`padding`,sessionKey:`padding`,effectiveVar:`padding.effective`}},Fv=Object.values(Pv),Iv=new Map(Fv.map(e=>[e.configKey,e.effectiveVar])),Lv=new Map(Fv.map(e=>[e.sessionKey,e.effectiveVar]));function Rv(e,t,n){let r=new Set,i=e=>{for(let t of Cg(e??``,n).keys())r.add(t)};for(let t of Object.values(e.segments))i(t.template),i(t.bg),i(t.fg),i(t.when);for(let e of t)for(let t of Xo(e))i(t.when);for(let t of Object.values(e.variables))t.kind===`template`&&i(t.template),t.kind===`state`&&r.add(gv);for(let t of Object.values(e.actions)){r.add(gv),`copy`in t&&i(t.copy),`open`in t&&i(t.open);let e=`set`in t?Lv.get(t.set):void 0,n=`persist`in t?Iv.get(t.persist):void 0;e!==void 0&&r.add(e),n!==void 0&&r.add(n)}return r}function zv(e,t,n){let r=kg({...n,variables:{...n.variables,...e.variables},segments:{...n.segments,...e.segments}}),i={};for(let a of Rv(e,t,n.helpers)){if(Og(a,r))continue;let e=Nv[a];if(e===void 0)throw Error(`synthesized chrome reads ".${a}", which it does not declare and PAYLOAD_INPUTS does not supply`);i[a]=e}return i}function Bv(e){return e.op===`remove`?`remove:${e.target}`:`insert:${e.segment}:${e.anchor}:${e.relation}`}function Vv(e){let t=e.split(`:`);return t[0]===`remove`&&t.length===2&&t[1]?{op:`remove`,target:t[1]}:t[0]===`insert`&&t.length===4&&t[1]&&t[2]&&(t[3]===`before`||t[3]===`after`)?{op:`insert`,segment:t[1],anchor:t[2],relation:t[3]}:null}function Hv(e){let t=new Set;for(let n of Xo(e))n.kind===`segment`&&t.add(n.name);return t}const Uv=`default`,Wv={};function Gv(e){return[...new Set([Uv,...Object.keys(e)])]}function Kv(e,t,n){return Ca(void 0,e,t,Uv,n)}function qv(e,t){let n={[Uv]:Wv,...e}[t];if(n===void 0)throw Error(`Preset "${t}" is not declared in this config — effectivePresetName collapses unknown names to "${Uv}", which always resolves; a miss here means a raw name reached this function without going through that resolution`);return n}function Jv(e,t){let n=qv(e.presets,t).root??Rs;return{node:Hs(Gs(n,e.root)),path:Ks(n)?`presets.${t}.root`:`root`}}function Yv(e,t){return{...e.globals,...qv(e.presets,t).globals}}const Xv=/^segments\.([^.]+)\.palette$/,Zv=/^presets\.(.+)\.root$/,Qv=/^presets\.(.+)\.globals\.([^.]+)$/;function $v(e){return`presets.${e}.root`}function ey(e,t){return`presets.${e}.globals.${t}`}function ty(e){if(Ec(e))return{scope:`globals`,field:e};let t=Xv.exec(e);if(t)return{scope:`segment-palette`,segment:t[1]};let n=Qv.exec(e);if(n&&yc(n[2]))return{scope:`preset-globals`,preset:n[1],field:n[2]};let r=Zv.exec(e);return r?{scope:`preset-root`,preset:r[1]}:null}function ny(e){switch(e.scope){case`globals`:return[`globals`,e.field];case`preset-globals`:return[`presets`,e.preset,`globals`,e.field];case`segment-palette`:return[`segments`,e.segment,`palette`]}}const ry=`open`;function iy(e,t,n,r){let i={variable:e,key:e,member:ry};return r.variables[e]=ac(e,Xs),r.actions[e]=oc(e,ry),r.segments[e]={template:ic(e,`(?)`,`✕`),...ay(n)},tc(e,i,{kind:`container`,direction:`horizontal`,children:t.map((t,n)=>{let i=`${e}.${n}`;return r.segments[i]={template:t},{kind:`segment`,name:i}})},`drop`)}function ay(e){let[t,...n]=e;return t===void 0?{}:{when:nc(t,...n)}}const oy={help:[`-h`,`--help`],version:[`-V`,`--version`]},sy=[`✚ inserts here`,`🚫 removes its segment`,`↺ resets layout`],cy=`
86
+ Use 'override' annotation for methods overridden by subclass.`)}}var ra=la(0),ia=function(){var e=!1,t={};return Object.defineProperty(t,`0`,{set:function(){e=!0}}),Object.create(t)[0]=1,e===!1}(),aa=0,oa=function(){};function sa(e,t){Object.setPrototypeOf?Object.setPrototypeOf(e.prototype,t):e.prototype.__proto__===void 0?e.prototype=t:e.prototype.__proto__=t}sa(oa,Array.prototype);var ca=function(e){function t(t,n,r,i){var a;return r===void 0&&(r=`ObservableArray@`+h()),i===void 0&&(i=!1),a=e.call(this)||this,ga(function(){var e=new ki(r,n,i,!0);e.proxy_=a,ee(a,O,e),t&&t.length&&a.spliceWithArray(0,0,t),ia&&Object.defineProperty(a,`0`,ra)}),a}_e(t,e);var n=t.prototype;return n.concat=function(){this[O].atom_.reportObserved();var e=[...arguments];return Array.prototype.concat.apply(this.slice(),e.map(function(e){return Ii(e)?e.slice():e}))},n[Symbol.iterator]=function(){var e=this,t=0;return Sa({next:function(){return t<e.length?{value:e[t++],done:!1}:{done:!0,value:void 0}}})},me(t,[{key:`length`,get:function(){return this[O].getArrayLength_()},set:function(e){this[O].setArrayLength_(e)}},{key:Symbol.toStringTag,get:function(){return`Array`}}])}(oa);Object.entries(ji).forEach(function(e){var t=e[0],n=e[1];t!==`concat`&&C(ca.prototype,t,n)});function la(e){return{enumerable:!1,configurable:!0,get:function(){return this[O].get_(e)},set:function(t){this[O].set_(e,t)}}}function ua(e){s(ca.prototype,``+e,la(e))}function da(e){if(e>aa){for(var t=aa;t<e+100;t++)ua(t);aa=e}}da(1e3);function fa(e,t,n){return new ca(e,t,n)}function pa(e,t){if(typeof e==`object`&&e){if(Ii(e))return t!==void 0&&n(23),e[O].atom_;if(Ki(e))return e.atom_;if(Vi(e)){if(t===void 0)return e.keysAtom_;var r=e.data_.get(t)||e.hasMap_.get(t);return r||n(25,t,ha(e)),r}if(ea(e)){if(!t)return n(26);var i=e[O].values_.get(t);return i||n(27,t,ha(e)),i}if(Ne(e)||nn(e)||z(e))return e}else if(v(e)&&z(e[O]))return e[O];n(28)}function ma(e,t){if(e||n(29),t!==void 0)return ma(pa(e,t));if(Ne(e)||nn(e)||z(e)||Vi(e)||Ki(e))return e;if(e[O])return e[O];n(24,e)}function ha(e,t){var n;if(t!==void 0)n=pa(e,t);else if(lr(e))return e.name;else n=ea(e)||Vi(e)||Ki(e)?ma(e):pa(e);return n.name_}function ga(e){var t=F(),n=Zt(!0);jn();try{return e()}finally{Mn(),Qt(n),hn(t)}}var _a=c.toString;function va(e,t,n){return n===void 0&&(n=-1),ya(e,t,n)}function ya(e,t,n,r,i){if(e===t)return e!==0||1/e==1/t;if(e==null||t==null)return!1;if(e!==e)return t!==t;var a=typeof e;if(a!==`function`&&a!==`object`&&typeof t!=`object`)return!1;var o=_a.call(e);if(o!==_a.call(t))return!1;switch(o){case`[object RegExp]`:case`[object String]`:return``+e==``+t;case`[object Number]`:return+e==+e?+e==0?1/e==1/t:+e==+t:+t!=+t;case`[object Date]`:case`[object Boolean]`:return+e==+t;case`[object Symbol]`:return typeof Symbol<`u`&&Symbol.valueOf.call(e)===Symbol.valueOf.call(t);case`[object Map]`:case`[object Set]`:n>=0&&n++;break}e=ba(e),t=ba(t);var s=o===`[object Array]`;if(!s){if(typeof e!=`object`||typeof t!=`object`)return!1;var c=e.constructor,l=t.constructor;if(c!==l&&!(v(c)&&c instanceof c&&v(l)&&l instanceof l)&&`constructor`in e&&`constructor`in t)return!1}if(n===0)return!1;n<0&&(n=-1),r||=[],i||=[];for(var u=r.length;u--;)if(r[u]===e)return i[u]===t;if(r.push(e),i.push(t),s){if(u=e.length,u!==t.length)return!1;for(;u--;)if(!ya(e[u],t[u],n-1,r,i))return!1}else{var d=Object.keys(e),f=d.length;if(Object.keys(t).length!==f)return!1;for(var p=0;p<f;p++){var m=d[p];if(!(se(t,m)&&ya(e[m],t[m],n-1,r,i)))return!1}}return r.pop(),i.pop(),!0}function ba(e){return Ii(e)?e.slice():w(e)||Vi(e)||re(e)||Ki(e)?Array.from(e.entries()):e}var xa=i().Iterator?.prototype||{};function Sa(e){return e[Symbol.iterator]=Ca,Object.assign(Object.create(xa),e)}function Ca(){return this}function wa(e){return e instanceof Object&&typeof e.annotationType_==`string`&&v(e.make_)&&v(e.extend_)}[`Symbol`,`Map`,`Set`].forEach(function(e){i()[e]===void 0&&n(`MobX requires global '`+e+`' to be available or polyfilled`)}),typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__==`object`&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:Yn,extras:{getDebugName:ha},$mobx:O}),e.$mobx=O,e.FlowCancellationError=Ar,e.ObservableMap=Bi,e.ObservableSet=Gi,e.Reaction=R,e._allowStateChanges=Xt,e._allowStateChangesInsideComputed=cr,e._allowStateReadsEnd=_n,e._allowStateReadsStart=gn,e._autoAction=sr,e._endAction=Yt,e._getAdministration=ma,e._getGlobalState=wn,e._interceptReads=Lr,e._isComputingDerivation=cn,e._resetGlobalState=Tn,e._startAction=Jt,e.action=or,e.autorun=ur,e.comparer=ze,e.computed=Ht,e.configure=Sr,e.createAtom=Pe,e.defineProperty=ei,e.entries=Yr,e.extendObservable=Cr,e.flow=Pr,e.flowResult=Fr,e.get=$r,e.getAtom=pa,e.getDebugName=ha,e.getDependencyTree=wr,e.getObserverTree=Er,e.has=Qr,e.intercept=Rr,e.isAction=lr,e.isBoxedObservable=en,e.isComputed=Hr,e.isComputedProp=Ur,e.isFlow=Ir,e.isFlowCancellationError=jr,e.isObservable=Gr,e.isObservableArray=Ii,e.isObservableMap=Vi,e.isObservableObject=ea,e.isObservableProp=Kr,e.isObservableSet=Ki,e.keys=qr,e.makeAutoObservable=wi,e.makeObservable=Si,e.observable=A,e.observe=ni,e.onBecomeObserved=_r,e.onBecomeUnobserved=vr,e.onReactionError=Rn,e.override=Ge,e.ownKeys=ti,e.reaction=pr,e.remove=Zr,e.runInAction=cr,e.set=Xr,e.spy=Yn,e.toJS=oi,e.trace=si,e.transaction=li,e.untracked=mn,e.values=Jr,e.when=ui})),Lg=pe(((e,t)=>{process.env.NODE_ENV===`production`?t.exports=Fg():t.exports=Ig()}))();function Rg(e){if(Array.isArray(e))return Object.freeze(e.map(Rg));if(typeof e==`object`&&e){let t=Object.create(null),n=Object.entries(e).sort(([e],[t])=>e<t?-1:+(e>t));for(let[e,r]of n)t[e]=Rg(r);return Object.freeze(t)}return e}function zg(e){let t=typeof e;if(t===`string`||t===`number`||t===`boolean`)return t;throw TypeError(`Variable values must be string|number|boolean (got ${t})`)}function Bg(e){return typeof e==`string`?e:String(e)}function Vg(e){if(typeof e==`number`)return e;if(typeof e==`boolean`)return+!!e;let t=e.trim();if(t===``)throw TypeError(`Cannot cast empty string to number`);let n=Number(t);if(!Number.isFinite(n))throw TypeError(`Cannot cast ${JSON.stringify(e)} to number`);return n}function Hg(e){if(typeof e==`boolean`)return e;if(typeof e==`number`){if(e===0||e===1)return e===1;throw TypeError(`Cannot cast number ${e} to bool (only 0 and 1 are accepted)`)}if(e===`true`)return!0;if(e===`false`)return!1;throw TypeError(`Cannot cast ${JSON.stringify(e)} to bool (expected "true" or "false")`)}function Ug(e,t){if(!(e instanceof H))throw TypeError(`template function expected a RichText fragment, got ${typeof e==`object`?Object.prototype.toString.call(e):typeof e}`);let n=e.copy();return n.style=Wg(e.style).add(t),n}function Wg(e){if(e instanceof B)return e;try{return B.parse(e)}catch(t){throw t instanceof br?TypeError(`template function cannot style a fragment whose base style "${e}" is not a style definition: a style name resolves only against the theme of a render`,{cause:t}):t}}function Gg(e){return{fn:(t=>Ug(t,e)),argTypes:[`liftable`],returnType:`T`}}function Kg(e){return{fn:((t,n)=>Ug(n,new B({[e]:P.parse(t)}))),argTypes:[`string`,`liftable`],returnType:`T`}}function qg(e,t){return new B({[e]:t})}function Jg(){let e={};for(let t of _r)e[t]=Gg(qg(t,!0)),e[`not_${t}`]=Gg(qg(t,!1));for(let[t,n]of Object.entries(yr))e[t]=Gg(qg(n,!0));return e}const Yg={fn:((e,t)=>Ug(t,B.parse(e))),argTypes:[`string`,`liftable`],returnType:`T`},Xg={fn:((e,t)=>Ug(t,new B({link:e}))),argTypes:[`string`,`liftable`],returnType:`T`};function Zg(){return{fg:Kg(`color`),bg:Kg(`bgcolor`),...Jg(),link:Xg,style:Yg}}function Qg(e,t){if(!zn.test(e.trim()))throw TypeError(`${t} expected a color (#RRGGBB or #RRGGBBAA), got ${JSON.stringify(e)} — to use a palette name here, wrap it: ${t} (color ${JSON.stringify(e)}) …`);return Bn(e)}function $g(e,t){return{fn:t,argTypes:e,returnType:`string`}}function e_(e,t,n,r){let i=r===void 0||e>=r.min&&e<=r.max;if(!Number.isFinite(e)||!i){let i=r===void 0?`a finite number`:`within ${r.min}..${r.max} (${r.note})`;throw RangeError(`${t}'s ${n} must be ${i}, got ${e}`+(e===void 0?` — ${t} takes it as its last argument`:``))}return e}const t_=$g([`string`,`int`],((e,t)=>Kn(Qg(e,`darken`),e_(t,`darken`,`levels`)).hex)),n_=$g([`string`,`int`],((e,t)=>Kn(Qg(e,`lighten`),-e_(t,`lighten`,`levels`)).hex)),r_={min:0,max:100,note:`0 = from, 100 = toward`},i_=$g([`string`,`string`,`float`],((e,t,n)=>hn(Qg(e,`mix`),Qg(t,`mix`),e_(n,`mix`,`percentage`,r_)/100).hex)),a_={min:1,max:21,note:`4.5 = AA body text, 3 = AA large text`},o_=$g([`string`],(e=>qn(Qg(e,`contrastOn`)).hex)),s_=e=>$g([`string`,`string`,`float`],((t,n,r)=>Jn(Qg(t,`readableOn`),Qg(n,`readableOn`),e_(r,`readableOn`,`ratio`,a_),e()).hex)),c_={hueShift:`shiftHue`,chromaScale:`scaleChroma`,lightnessScale:`scaleLightness`,lightnessShift:`shiftLightness`};function l_(){let e={};for(let[t,n]of Object.entries(c_)){let r=t;e[n]=$g([`string`,`float`],((e,t)=>{let i={...On,[r]:e_(t,n,`amount`)};return R.fromRgba(Qg(e,n)).applyKey(i).toRgba().hex}))}return e}function u_(e=()=>M.TRUECOLOR){return{darken:t_,lighten:n_,mix:i_,contrastOn:o_,readableOn:s_(e),...l_()}}function d_(e,t){if(e.length===0)throw RangeError(`ramp needs at least one stop after the easing: ramp <value> <easing> <position> <color> …`);if(e.length%2!=0)throw RangeError(`ramp's last stop (position ${String(e[e.length-1])}) has no color — stops are <position> <color> pairs`);let n=[];for(let r=0;r<e.length;r+=2)n.push({at:e[r],color:Vn(t,e[r+1])});return n}function f_(e){return{color:{fn:(t=>Vn(e(),t).hex),argTypes:[`string`],returnType:`string`},ramp:{fn:((...t)=>{if(t.length<2)throw RangeError(`ramp needs a value and an easing before its stops (got ${t.length}): ramp <value> "linear"|"step" <position> <color> …`);let[n,r,...i]=t;return new gr(hr(r),d_(i,e())).at(n).hex}),argTypes:[`float`,`string`],argTypePattern:`alternating`,returnType:`string`}}}function p_(e){return{...Zg(),...u_(e)}}new B({color:`red`,dim:!0});const m_=/^(?:(?:global|apac|au|eu|us|us-east-\d|us-west-\d|eu-west-\d|eu-central-\d)\.)?(?:anthropic\.|azure_ai\/|bedrock\/|vertex_ai\/)?claude-(?:(?<family>opus|sonnet|haiku)-(?<newMajor>\d+)(?:-(?<newMinor>\d))?|(?<oldMajor>\d+)(?:-(?<oldMinor>\d))?-(?<oldFamily>opus|sonnet|haiku))(?:[-@]\d{8})?(?:-v\d+:\d+)?(?:-latest)?$/i,h_=/^(?<family>opus|sonnet|haiku)\s+(?<major>\d+)(?:\.(?<minor>\d))?$/i;function g_(e){if(!e)return`Claude`;let t=e.trim().replace(/\s*\([^)]*\)\s*$/,``).replace(/\s*\[[^\]]*\]\s*$/,``).trim(),n=t.match(m_);if(n?.groups){let{family:e,newMajor:t,newMinor:r,oldMajor:i,oldMinor:a,oldFamily:o}=n.groups,s=e||o,c=t||i,l=r||a;if(s&&c)return`${s.charAt(0).toUpperCase()+s.slice(1).toLowerCase()} ${l?`${c}.${l}`:c}`}let r=t.match(h_);if(r?.groups){let e=r.groups.family,t=r.groups.major,n=r.groups.minor;return`${e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()} ${n?`${t}.${n}`:t}`}return t||e}function __(e){let t=e.match(h_);if(!t?.groups)return e;let n=t.groups.family,r=t.groups.major,i=t.groups.minor;return`${n.charAt(0).toUpperCase()}${i?`${r}.${i}`:r}`}function v_(e){let t=e.split(`/`),n=t.length-1;return t.map((e,t)=>{if(t===n)return e;let r=e.match(/^\.*./);return r?r[0]:e}).join(`/`)}function y_(e){return e.toLocaleString()}function b_(e){if(e.length===0)throw Error(`a cascade needs at least one stop, e.g. "0:calm"`);let t=[];for(let[n,r]of e.entries()){let e=r.indexOf(`:`),i=e<0?NaN:Number(r.slice(0,e));if(!Number.isFinite(i))throw Error(`cascade stop ${n} ("${r}") must be "<position>:<result>", e.g. "80:hot" — the position must be a number`);let a=t[n-1];if(a!==void 0&&i<a.at)throw Error(`cascade stops must be in ascending position order; stop ${n} at ${i} follows stop ${n-1} at ${a.at}`);t.push({at:i,text:r.slice(e+1)})}return t}function x_(e,t){if(!Number.isFinite(e))throw Error(`a cascade needs a finite value, got ${e}`);let n=-1;for(;n+1<t.length&&t[n+1].at<=e;)n++;return(n<0?t[0]:t[n]).text}const S_=[`▁`,`▂`,`▃`,`▄`,`▅`,`▆`,`▇`,`█`],C_=S_.length;function w_(e,t){let n=t===void 0?e:t<=0?[]:e.slice(-t);if(n.length===0)return``;let r=n[0],i=n[0];for(let e of n)e<r&&(r=e),e>i&&(i=e);let a=i-r,o=``;for(let e of n){let t=a===0?0:Math.round((e-r)/a*(C_-1));o+=S_[t]}return o}function T_(e){let t=[];for(let n of e.split(`,`)){let e=n.trim();if(e===``)continue;let r=Number(e);if(!Number.isFinite(r))throw TypeError(`sparkline: non-numeric series element ${JSON.stringify(n)}`);t.push(r)}return t}const E_=Sa(),D_=[...Ma];function O_(){return{basename:{fn:e=>l(e),argTypes:[`string`]},dirname:{fn:e=>u(e),argTypes:[`string`]},abbreviatePath:{fn:e=>v_(e),argTypes:[`string`]},int:{fn:e=>Vg(e),argTypes:[`value`]},string:{fn:e=>Bg(e),argTypes:[`value`]},bool:{fn:e=>Hg(e),argTypes:[`value`]},urlEncode:{fn:e=>encodeURIComponent(e),argTypes:[`string`]},themes:{fn:()=>E_,argTypes:[]},styles:{fn:()=>D_,argTypes:[]},sparkline:{fn:(e,t)=>w_(T_(e),t),argTypes:[`string`,`int`]},cascade:{fn:(e,...t)=>x_(e,b_(t)),argTypes:[`float`,`string`]}}}function k_(e=()=>new Date){return{minutesUntilReset:{fn:t=>Math.round(Math.max(0,t*1e3-e().getTime())/6e4),argTypes:[`int`]},formatInteger:{fn:e=>y_(e),argTypes:[`int`]},round:{fn:e=>Math.round(e),argTypes:[`float`]},formatModelName:{fn:e=>g_(e),argTypes:[`string`]},shortenModelName:{fn:e=>__(e),argTypes:[`string`]}}}function A_(e,t=()=>new Date,n){return Ud({fromString:e=>new H(e),toString:e=>e.plain,isT:e=>e instanceof H,clock:t,missingKey:`error`,funcs:{...jp(),...Vh(),..._m(),...zm(),...Cp(t),...pf(),...Gp(),...p_(n),...O_(),...k_(t),...e??{}}})}function j_(e){return M_(e,new Set(e.names()),``)}function M_(e,t,n){return new Proxy(Object.create(null),{has(e,r){if(typeof r!=`string`)return!1;let i=n?`${n}.${r}`:r;if(t.has(i))return!0;let a=`${i}.`;for(let e of t)if(e.startsWith(a))return!0;return!1},get(r,i){if(typeof i!=`string`)return;let a=n?`${n}.${i}`:i;if(t.has(a))return e.getKind(a)===`document`?N_(a,e.readDocument(a)):e.read(a);let o=`${a}.`;for(let n of t)if(n.startsWith(o))return M_(e,t,a)}})}function N_(e,t){switch(t.kind){case`ok`:return t.value;case`absent`:throw Error(`variable "${e}" has no value yet: its source has not completed a scan`);case`failed`:throw Error(`variable "${e}": ${t.reason}`)}}function J(e){return{kind:`ok`,value:e}}const Y={kind:`absent`};function X(e){return{kind:`failed`,reason:e}}function P_(e,t){return e?.kind===`ok`?e.value:t}function F_(e,t,n){return t.ok?J(t.stdout):t.reason===`non-zero`&&n===`absent`||t.reason===`non-zero`&&n===t.exitCode?Y:X(`${e}: ${[t.reason,t.exitCode==null?null:`exit ${t.exitCode}`,t.error??I_(t.stderr)].filter(Boolean).join(`, `)}`)}function I_(e){return e.trim().split(`
87
+ `,1)[0]??``}function L_(e,t){if(e.kind!==`ok`)return e;let n=t(e.value);return n===null?Y:J(n)}function R_(e){if(e.kind!==`ok`)return e;let t=e.value.trim();return t?J(t):Y}const z_=/^[A-Za-z]:[\\/]/;function B_(e){let t=e.trim();if(z_.test(t))return null;let n=t.match(/^(?:[^@/]+@)?(\[[^\]]+\]):(.*)$/)??t.match(/^(?:[^@/:]+@)?([^/:]+):(?!\/\/)(.*)$/),r=n?`ssh://${n[1]}/${n[2].replace(/^\/+/,``)}`:t,i;try{i=new URL(r)}catch{return null}return{scheme:i.protocol.replace(/:$/,``),host:i.hostname.toLowerCase(),port:i.port,path:i.pathname.replace(/^\/+/,``).replace(/\/+$/,``)}}function V_(e){return B_(e)?.host||null}function H_(e){let t=V_(e);return t?t===`github.com`||t.endsWith(`.github.com`)?`github`:/(^|\.)gitlab\./.test(t)?`gitlab`:null:null}function U_(e){let t=new Map;for(let n of e.split(`
88
+ `)){let e=n.match(/^remote\.(.+)\.url\s+(\S.*)$/);if(!e)continue;let r=t.get(e[1])??[];r.push(e[2].trim()),t.set(e[1],r)}return[...t].map(([e,t])=>({name:e,urls:t}))}function W_(e){return e.urls.find(e=>Y_(e)!==null)??e.urls[0]??null}function G_(e){return e.find(e=>e.name===`origin`)??e[0]??null}function K_(e){let t=G_(e);return t?W_(t):null}function q_(e){let t=G_(e);return t?t.urls.find(e=>H_(e)!==null)??W_(t):null}function J_(e){let t=(B_(e)?.path??e.replace(/[\\/]+$/,``)).split(`/`);return(t[t.length-1]??``).replace(/\.git$/,``)||null}function Y_(e){let t=B_(e);if(!t)return null;let n=t.scheme===`https`?{scheme:`https`,port:t.port}:t.scheme===`http`?{scheme:`http`,port:t.port}:t.scheme===`ssh`||t.scheme===`git`?{scheme:`https`,port:``}:null;if(!n||!t.host)return null;let r=t.path.replace(/\.git$/,``);if(!r)return null;let i=n.port?`${t.host}:${n.port}`:t.host;return`${n.scheme}://${i}/${r}`}function X_(e){let t=K_(e);return t===null?null:Y_(t)}function Z_(e,t,n,r){return t.ok?r(t.stdout):t.reason===`spawn-error`&&/ENOENT/i.test(t.error??``)||t.reason===`non-zero`&&n.test(t.stderr)?Y:X(`${e}: ${[t.reason,t.exitCode==null?null:`exit ${t.exitCode}`,t.error??I_(t.stderr)].filter(Boolean).join(`, `)}`)}function Q_(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function $_(e){let t=`detached`,n=Y,r=Y,i=Y,a=0,o=0,s=0,c=0;for(let l of e.split(`
89
+ `)){if(!l)continue;if(l.startsWith(`# `)){let e=l.slice(2);if(e.startsWith(`branch.oid `)){let t=e.slice(11).trim();n=t===`(initial)`?Y:J(t)}else if(e.startsWith(`branch.head `)){let n=e.slice(12).trim();t=n===`(detached)`?`detached`:n}else if(e.startsWith(`branch.upstream `))r=J(e.slice(16).trim());else if(e.startsWith(`branch.ab `)){let t=e.slice(10).trim().match(/^\+(\d+)\s+-(\d+)$/);t&&(i=J({ahead:parseInt(t[1],10),behind:parseInt(t[2],10)}))}continue}let e=l[0];if(e===`1`||e===`2`){let e=l.slice(2,4);e[0]!==`.`&&a++,e[1]!==`.`&&o++}else e===`u`?c++:e===`?`&&s++}let l=`clean`;return c>0?l=`conflicts`:(a||o||s)&&(l=`dirty`),{branch:t,status:l,aheadBehind:i,oid:n,upstream:r,workingTree:{staged:a,unstaged:o,untracked:s,conflicts:c}}}function ev(e){let t;try{t=JSON.parse(e)}catch(e){return X(`gh pr view: unparseable JSON (${e instanceof Error?e.message:String(e)})`)}if(!Q_(t))return X(`gh pr view: JSON is not an object`);let{number:n,state:r,url:i}=t;return typeof n!=`number`||typeof r!=`string`||typeof i!=`string`?X(`gh pr view: missing number/state/url`):r.toUpperCase()===`OPEN`?J({number:n,state:r,url:i}):Y}function tv(e){let t;try{t=JSON.parse(e)}catch(e){return X(`glab mr view: unparseable JSON (${e instanceof Error?e.message:String(e)})`)}if(!Q_(t))return X(`glab mr view: JSON is not an object`);let n=t.iid,r=t.state,i=t.web_url;return typeof n!=`number`||typeof r!=`string`||typeof i!=`string`?X(`glab mr view: missing iid/state/web_url`):r.toLowerCase()===`opened`?J({number:n,state:r,url:i}):Y}function nv(e){try{let t=r.statSync(e);return{key:`${t.dev}:${t.ino}`,stamp:`${t.mtimeMs}:${t.size}`}}catch{return null}}var rv=class{isGitRepo(e){try{return r.existsSync(c.join(e,`.git`))}catch{return!1}}async execGitAsync(e,t){return Te({bin:`git`,args:[...e],cwd:t.cwd,env:{...process.env,GIT_OPTIONAL_LOCKS:`0`},timeoutMs:t.timeout,category:`git`})}async resolveEffectiveGitDir(e,t){return this.isWorktree(e)?J(e):t&&this.isGitRepo(t)?J(t):this.isGitRepo(e)?J(e):this.findGitRoot(e)}async findGitRoot(e){let t=c.resolve(e);for(;;){if(this.isGitRepo(t))return J(t);let e=c.dirname(t);if(e===t)return Y;t=e}}async getGitInfo(e,t={},n){try{return await this.computeGitInfo(e,t,n)}catch(e){return X(`git: ${e instanceof Error?e.message:String(e)}`)}}async computeGitInfo(e,t={},n){let r,i=this.isWorktree(e);if(i)r=e;else if(n&&this.isGitRepo(n))r=n;else if(this.isGitRepo(e))r=e;else{let t=await this.findGitRoot(e);if(t.kind!==`ok`)return t;r=t.value}let a=await this.getCoreAsync(r);if(a.kind!==`ok`)return a;let o={branch:a.value.branch,status:a.value.status,aheadBehind:a.value.aheadBehind};t.showWorkingTree&&(o.workingTree=a.value.workingTree),t.showSha&&(o.sha=L_(a.value.oid,e=>e.slice(0,7))),t.showUpstream&&(o.upstream=a.value.upstream),t.showTag&&(o.tag=await this.getNearestTagAsync(r)),t.showTimeSinceCommit&&(o.timeSinceCommit=await this.timeSinceCommit(r,a.value.oid)),t.showStashCount&&(o.stashCount=this.getStashCount(r));let s=t.showRepoName||t.showRepoUrl?await this.getRemotesAsync(r):void 0;return s!==void 0&&t.showRepoName&&(o.repoName=L_(s,e=>this.repoNameFrom(e,r)),o.isWorktree=i),s!==void 0&&t.showRepoUrl&&(o.repoUrl=L_(s,X_)),t.showOperation&&(o.operation=this.getOngoingOperation(r)),J(o)}resolveGitDir(e){let t=c.join(e,`.git`);try{if(r.existsSync(t)&&r.statSync(t).isFile()){let n=r.readFileSync(t,`utf-8`).match(/^gitdir:\s*(.+)$/m);if(n?.[1])return c.resolve(e,n[1].trim())}}catch{}return t}getOngoingOperation(e){try{let t=this.resolveGitDir(e);return r.existsSync(c.join(t,`MERGE_HEAD`))?J(`MERGE`):r.existsSync(c.join(t,`CHERRY_PICK_HEAD`))?J(`CHERRY-PICK`):r.existsSync(c.join(t,`REVERT_HEAD`))?J(`REVERT`):r.existsSync(c.join(t,`BISECT_LOG`))?J(`BISECT`):r.existsSync(c.join(t,`rebase-merge`))||r.existsSync(c.join(t,`rebase-apply`))?J(`REBASE`):Y}catch(e){return X(`git operation probe: ${e instanceof Error?e.message:String(e)}`)}}async getNearestTagAsync(e){return R_(F_(`git describe --tags`,await this.execGitAsync([`describe`,`--tags`,`--abbrev=0`],{cwd:e,timeout:2e3}),`absent`))}async timeSinceCommit(e,t){return t.kind===`ok`?L_(await this.commitTimestampMs(e,t.value),e=>Math.floor((Date.now()-e)/1e3)):t}commitTimes=new Map;async commitTimestampMs(e,t){let n=this.commitTimes.get(t);if(n!==void 0)return this.commitTimes.delete(t),this.commitTimes.set(t,n),n;let r=this.readCommitTimestampMs(e,t);for(this.commitTimes.set(t,r),r.then(e=>{e.kind!==`ok`&&this.commitTimes.get(t)===r&&this.commitTimes.delete(t)},()=>{this.commitTimes.get(t)===r&&this.commitTimes.delete(t)});this.commitTimes.size>256;){let e=this.commitTimes.keys().next().value;if(e===void 0)break;this.commitTimes.delete(e)}return r}async readCommitTimestampMs(e,t){let n=R_(F_(`git log -1`,await this.execGitAsync([`log`,`-1`,`--format=%ct`,t,`--`],{cwd:e,timeout:2e3}),`absent`));if(n.kind!==`ok`)return n;let r=parseInt(n.value,10)*1e3;return Number.isNaN(r)?X(`git log -1: unparseable timestamp "${n.value}"`):J(r)}resolveCommonGitDir(e){let t=this.resolveGitDir(e);try{let e=r.readFileSync(c.join(t,`commondir`),`utf-8`).trim();if(e)return c.resolve(t,e)}catch{}return t}getStashCount(e){let t=c.join(this.resolveCommonGitDir(e),`logs`,`refs`,`stash`),n;try{n=r.readFileSync(t,`utf-8`)}catch(e){return e.code===`ENOENT`?J(0):X(`git stash reflog ${t}: ${e instanceof Error?e.message:String(e)}`)}let i=n.trim();return J(i?i.split(`
90
+ `).length:0)}async getRemotesAsync(e){let t=nv(c.join(this.resolveCommonGitDir(e),`config`));if(t===null)return this.readRemotes(e);let{key:n,stamp:r}=t,i=this.remotesByConfig.get(n);if(i!==void 0&&i.stamp===r)return this.remotesByConfig.delete(n),this.remotesByConfig.set(n,i),i.remotes;let a=this.readRemotes(e);for(this.remotesByConfig.set(n,{stamp:r,remotes:a}),a.then(e=>{let t=this.remotesByConfig.get(n);e.kind!==`ok`&&t?.remotes===a&&this.remotesByConfig.delete(n)},()=>{this.remotesByConfig.get(n)?.remotes===a&&this.remotesByConfig.delete(n)});this.remotesByConfig.size>256;){let e=this.remotesByConfig.keys().next().value;if(e===void 0)break;this.remotesByConfig.delete(e)}return a}remotesByConfig=new Map;async readRemotes(e){let t=F_(`git config --get-regexp remote url`,await this.execGitAsync([`config`,`--local`,`--get-regexp`,`^remote\\..*\\.url$`],{cwd:e,timeout:2e3}),1);return t.kind===`failed`?t:J(t.kind===`ok`?U_(t.value):[])}repoNameFrom(e,t){let n=K_(e);return(n===null?null:J_(n))??c.basename(t)}async getRepoRemoteUrl(e){let t=await this.getRemotesAsync(e);if(t.kind!==`ok`)return t;let n=q_(t.value);return n===null?Y:J(n)}async execForgeAsync(e,t,n){return Te({bin:e,args:[...t],cwd:n.cwd,env:{...process.env},timeoutMs:n.timeout,category:`forge`})}async resolvePullRequest(e,t){let n=H_(t);return n===`github`?Z_(`gh pr view`,await this.execForgeAsync(`gh`,[`pr`,`view`,`--json`,`number,state,url`],{cwd:e,timeout:5e3}),/no (open )?pull requests? found/i,ev):n===`gitlab`?Z_(`glab mr view`,await this.execForgeAsync(`glab`,[`mr`,`view`,`--output`,`json`],{cwd:e,timeout:5e3}),/no (open )?merge requests? (found|available)/i,tv):Y}isWorktree(e){try{let t=c.join(e,`.git`);return!!(r.existsSync(t)&&r.statSync(t).isFile())}catch{return!1}}async getCoreAsync(e){D(`[GIT-EXEC] Running git status --porcelain=v2 in ${e}`);let t=F_(`git status --porcelain=v2 --branch`,await this.execGitAsync([`status`,`--porcelain=v2`,`--branch`],{cwd:e,timeout:2e3}),`failed`);return t.kind===`ok`?J($_(t.value)):t}};const iv=(e,t)=>D(t);var av=class{slots=new Map;maxWatchers;counters;logger;closed=!1;constructor(e={}){this.maxWatchers=e.maxWatchers??128,this.counters=e.counters,this.logger=e.logger??iv}acquire(e,t,n){if(this.closed)return{release:()=>{}};let r=this.slots.get(e);if(r)return r.refcount++,r.onInvalidate=n,r.lastTouched=Date.now(),this.slots.delete(e),this.slots.set(e,r),this.makeHandle(e);let i={key:e,watchers:[],refcount:1,debounceTimer:null,onInvalidate:n,targets:t,lastTouched:Date.now()};return this.openWatchers(i),this.slots.set(e,i),this.counters&&this.counters.watchersOpened++,this.evictIfNeeded(),this.makeHandle(e)}makeHandle(e){let t=!1;return{release:()=>{if(t)return;t=!0;let n=this.slots.get(e);n&&(n.refcount=Math.max(0,n.refcount-1),n.refcount===0&&(this.closeSlot(n),this.slots.delete(e)))}}}openWatchers(e){let t=()=>{e.debounceTimer||(e.debounceTimer=setTimeout(()=>{e.debounceTimer=null;try{e.onInvalidate()}catch(e){this.logger(`warn`,`watcher invalidate threw: ${e.message}`)}},50),e.debounceTimer.unref())};for(let n of e.targets.files)try{let i=r.watch(n,{persistent:!1},t);i.on(`error`,e=>{this.logger(`warn`,`watcher error ${n}: ${e.message}`)}),e.watchers.push(i)}catch(e){this.logger(`warn`,`watch failed ${n}: ${e.message}`)}for(let n of e.targets.dirs)try{let i=n.filenames?new Set(n.filenames):null,a=r.watch(n.path,{persistent:!1},(e,n)=>{i&&(!n||!i.has(n))||t()});a.on(`error`,e=>{this.logger(`warn`,`watcher error ${n.path}: ${e.message}`)}),e.watchers.push(a)}catch(e){this.logger(`warn`,`watch failed ${n.path}: ${e.message}`)}}closeSlot(e){e.debounceTimer&&=(clearTimeout(e.debounceTimer),null);for(let t of e.watchers)try{t.close()}catch{}e.watchers=[],this.counters&&this.counters.watchersClosed++}evictIfNeeded(){for(;this.slots.size>this.maxWatchers;){let e=this.slots.keys().next().value;if(e===void 0)break;let t=this.slots.get(e);this.closeSlot(t),this.slots.delete(e),this.counters&&this.counters.watchersEvicted++;try{t.onInvalidate()}catch{}this.logger(`info`,`watcher LRU evict ${e}`)}}size(){return this.slots.size}closeAll(){this.closed=!0;for(let e of this.slots.values())this.closeSlot(e);this.slots.clear()}},ov=class{running=new Set;again=new Set;run(e,t){return this.again.add(e),this.running.has(e)?{kind:`queued`}:(this.running.add(e),{kind:`started`,done:this.loop(e,t)})}async loop(e,t){try{do this.again.delete(e),await t();while(this.again.has(e))}finally{this.running.delete(e),this.again.delete(e)}}clear(){this.running.clear(),this.again.clear()}get size(){return this.running.size}};const sv=(e,t)=>D(t),cv={showSha:!0,showStashCount:!0};function lv(e){let t=Object.keys(e).sort(),n={};for(let r of t)n[r]=e[r];return JSON.stringify(n)}function uv(e){let t=t=>{try{return r.statSync(c.join(e,t)).mtimeMs}catch{return 0}};return{head:t(`HEAD`),index:t(`index`)}}function dv(e,t){return e.head!==t.head||e.index!==t.index}function fv(e){let t=[],n=c.join(e,`refs/heads`);try{r.statSync(n).isDirectory()&&t.push({path:n})}catch{}return{files:[c.join(e,`HEAD`),c.join(e,`index`)],dirs:t}}var pv=class extends rv{entries=new Map;subscribersByRepo=new Map;fetchInFlight=new Map;resolutions=new Map;prCache=new Map;prFetchInFlight=new Map;refreshes=new ov;hits=0;misses=0;invalidations=0;inner;ttlMs;maxEntries;watchers;ownsWatchers;logger;sanityTimer=null;constructor(e={}){super(),this.inner=e.inner??new rv,this.ttlMs=e.ttlMs??3e4,this.maxEntries=e.maxEntries??64,this.logger=e.logger??sv,e.watchers?(this.watchers=e.watchers,this.ownsWatchers=!1):(this.watchers=new av({logger:this.logger}),this.ownsWatchers=!0);let t=e.sanityIntervalMs??3e5;t>0&&(this.sanityTimer=setInterval(()=>this.runSanityCheck(),t),this.sanityTimer.unref())}getWatcherRegistry(){return this.watchers}getStats(){return{size:this.entries.size,hits:this.hits,misses:this.misses,invalidations:this.invalidations,watchers:this.watchers.size()}}resolveEffectiveGitDir(e,t){let n=`${e}|${t??``}`,r=Date.now(),i=this.resolutions.get(n);if(i&&r-i.computedAt<this.ttlMs)return this.resolutions.delete(n),this.resolutions.set(n,i),i.dir;let a=this.inner.resolveEffectiveGitDir(e,t);return this.resolutions.set(n,{dir:a,computedAt:r}),a.catch(()=>{this.resolutions.get(n)?.dir===a&&this.resolutions.delete(n)}),this.evictResolutionsIfNeeded(),a}evictResolutionsIfNeeded(){for(;this.resolutions.size>this.maxEntries;){let e=this.resolutions.keys().next().value;if(e===void 0)break;this.resolutions.delete(e)}}async getGitInfo(e,t={},n){let r=await this.resolveEffectiveGitDir(e,n);return r.kind===`ok`?this.getGitInfoForRoot(r.value,t):r}getGitInfoForRoot(e,t){let n=`${e}|${lv(t)}`,r=Date.now(),i=this.entries.get(n);if(i&&r-i.computedAt<this.ttlMs)return this.entries.delete(n),this.entries.set(n,i),this.hits++,Promise.resolve(J(i.info));let a=this.fetchInFlight.get(n);if(a)return a;let o=this.doFetch(e,n,t,r).finally(()=>{this.fetchInFlight.delete(n)});return this.fetchInFlight.set(n,o),o}async doFetch(e,t,n,r){this.misses++;let i=this.inner.resolveGitDir(e),a=uv(i),o=await this.inner.getGitInfo(e,n);if(o.kind!==`ok`)return o;let s=o.value;n.showPullRequest&&(s.pullRequest=await this.getPullRequestCached(e,s.branch)),this.dropEntry(t);let c=this.watchers.acquire(`git:${e}`,fv(i),()=>this.invalidateRepo(e));return this.entries.set(t,{info:s,computedAt:r,mtime:a,watcher:c,repoRoot:e}),this.evictIfNeeded(),o}async getPullRequestCached(e,t){let n=await this.inner.getRepoRemoteUrl(e);if(n.kind===`failed`)return n;if(n.kind===`absent`)return Y;let r=n.value,i=`${e}|${t}|${r}`,a=Date.now(),o=this.prCache.get(i);if(o){let e=o.pr.kind===`failed`?45e3:3e5;if(a-o.computedAt<e)return this.prCache.delete(i),this.prCache.set(i,o),o.pr}let s=this.prFetchInFlight.get(i);if(s)return s;let c=this.inner.resolvePullRequest(e,r).then(e=>(this.prCache.set(i,{pr:e,computedAt:Date.now()}),this.evictPrIfNeeded(),e)).finally(()=>{this.prFetchInFlight.delete(i)});return this.prFetchInFlight.set(i,c),c}evictPrIfNeeded(){for(;this.prCache.size>this.maxEntries;){let e=this.prCache.keys().next().value;if(e===void 0)break;this.prCache.delete(e)}}deliverable(e,t){return e.kind===`failed`?(this.logger(`warn`,`git fetch failed (${t}): ${e.reason}`),null):e.kind===`ok`?e.value:null}subscribe(e,t){let n=!1,r=null;return{firstDelivery:(async()=>{let i=await this.resolveEffectiveGitDir(e);if(n)return;if(i.kind!==`ok`){i.kind===`failed`&&this.logger(`warn`,`git resolve failed (subscribe ${e}): ${i.reason}`),this.safeInvoke(t,null);return}let a=i.value,o=this.subscribersByRepo.get(a);if(!o){let t=this.inner.resolveGitDir(a),n=this.watchers.acquire(`git:${a}`,fv(t),()=>this.invalidateRepo(a));o={workingDir:e,repoRoot:a,callbacks:new Set,watcher:n},this.subscribersByRepo.set(a,o)}o.callbacks.add(t),r={repoRoot:a,entry:o};let s=await this.getGitInfoForRoot(a,{...cv});n||this.safeInvoke(t,this.deliverable(s,a))})(),unsubscribe:()=>{if(n=!0,!r)return;let{repoRoot:e,entry:i}=r;i.callbacks.delete(t),i.callbacks.size===0&&(i.watcher.release(),this.subscribersByRepo.delete(e))}}}invalidateRepo(e){let t=0;for(let[n,r]of this.entries)r.repoRoot===e&&(r.watcher.release(),this.entries.delete(n),t++);t>0&&(this.invalidations+=t,this.logger(`info`,`gitCache invalidate ${e} dropped=${t}`)),this.refreshSubscribers(e)}refreshSubscribers(e){let t=this.subscribersByRepo.get(e);!t||t.callbacks.size===0||this.refreshes.run(e,()=>this.refreshOnce(e))}async refreshOnce(e){let t=this.subscribersByRepo.get(e);if(!t||t.callbacks.size===0)return;let n=await this.getGitInfoForRoot(e,{...cv}),r=this.deliverable(n,e),i=this.subscribersByRepo.get(e);if(!(!i||i.callbacks.size===0))for(let e of[...i.callbacks])i.callbacks.has(e)&&this.safeInvoke(e,r)}safeInvoke(e,t){try{e(t)}catch(e){this.logger(`warn`,`git subscriber threw: ${e.message??String(e)}`)}}dropEntry(e){let t=this.entries.get(e);t&&(t.watcher.release(),this.entries.delete(e))}evictIfNeeded(){for(;this.entries.size>this.maxEntries;){let e=this.entries.keys().next().value;if(e===void 0)break;this.dropEntry(e),this.logger(`info`,`gitCache evict ${e}`)}}runSanityCheck(){let e=new Map;for(let t of this.entries.values()){let n=e.get(t.repoRoot);n||(n=uv(this.inner.resolveGitDir(t.repoRoot)),e.set(t.repoRoot,n)),dv(t.mtime,n)&&this.invalidateRepo(t.repoRoot)}}runSanityCheckNow(){this.runSanityCheck()}close(){this.sanityTimer&&=(clearInterval(this.sanityTimer),null);for(let e of this.entries.values())e.watcher.release();this.entries.clear();for(let e of this.subscribersByRepo.values())e.callbacks.clear(),e.watcher.release();this.subscribersByRepo.clear(),this.refreshes.clear(),this.fetchInFlight.clear(),this.prCache.clear(),this.prFetchInFlight.clear(),this.resolutions.clear(),this.ownsWatchers&&this.watchers.closeAll()}};const mv=/\r\n|\r|\n/g,hv=e=>J(e.replace(mv,` `).trim());function gv(e){return t=>{let n=e.exec(t)?.[1];return n===void 0?X(`regex no-match`):J(n.replace(mv,` `))}}const _v=e=>{try{return J(JSON.parse(e))}catch(e){return X(`JSON parse failed: ${e.message}`)}};function vv(e,t){return t.kind!==`ttl`||t.durationMs>=500?t:(D(`declareShell "${e}": ttl ${t.durationMs}ms below floor 500ms; clamping`),{kind:`ttl`,durationMs:500})}function yv(e){let t=/^(\d+(?:\.\d+)?)(ms|s|m|h)$/.exec(e);if(!t)throw RangeError(`Invalid duration: "${e}"`);let n=parseFloat(t[1]);switch(t[2]){case`ms`:return n;case`s`:return n*1e3;case`m`:return n*6e4;case`h`:return n*36e5;default:throw RangeError(`Unexpected duration unit: "${t[2]}"`)}}const bv=`session.id`;function xv(e,t){return{where:`output of "${e}"`,read:async()=>{let n=await Te({bin:`/bin/sh`,args:[`-c`,e],category:`user-shell`,signal:t});if(!n.ok&&n.reason===`aborted`)throw t.reason;return n.ok?J(n.stdout):X(`shell "${e}" ${n.exitCode===null?[n.reason,n.error].filter(e=>e!==void 0).join(`: `):`exited with code ${n.exitCode}`}`)}}}function Sv(e,t,n){return{where:`"${e}"`,read:async()=>{try{let r=await v(e,{encoding:`utf8`,signal:n});return J(t===`first-line`?r.split(/\r?\n/)[0]??``:r)}catch{if(n.aborted)throw n.reason;return X(`file unreadable: ${e}`)}}}}function Cv(e,t,n){if(e.kind!==`ok`)return e;let r=t(e.value);return r.kind===`failed`?X(`${r.reason} in ${n}`):r}const wv=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],Tv=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],Ev=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],Dv=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`];function Ov(e,t){let n=[[`2006`,e=>String(e.getFullYear())],[`January`,e=>wv[e.getMonth()]],[`Monday`,e=>Ev[e.getDay()]],[`Jan`,e=>Tv[e.getMonth()]],[`Mon`,e=>Dv[e.getDay()]],[`15`,e=>String(e.getHours()).padStart(2,`0`)],[`06`,e=>String(e.getFullYear()%100).padStart(2,`0`)],[`01`,e=>String(e.getMonth()+1).padStart(2,`0`)],[`02`,e=>String(e.getDate()).padStart(2,`0`)],[`04`,e=>String(e.getMinutes()).padStart(2,`0`)],[`05`,e=>String(e.getSeconds()).padStart(2,`0`)],[`PM`,e=>e.getHours()<12?`AM`:`PM`],[`pm`,e=>e.getHours()<12?`am`:`pm`],[`1`,e=>String(e.getMonth()+1)],[`2`,e=>String(e.getDate())],[`3`,e=>String(e.getHours()%12||12)],[`4`,e=>String(e.getMinutes())],[`5`,e=>String(e.getSeconds())]],r=``,i=0;for(;i<e.length;){let a=!1;for(let[o,s]of n)if(e.startsWith(o,i)){r+=s(t),i+=o.length,a=!0;break}a||(r+=e[i],i++)}return r}const kv={branch:`string`,sha:`string`,dirty:`boolean`,ahead:`number`,behind:`number`,stash:`number`};function Av(e,t,n,r){if(e===null){if(n!==void 0)return n;let e=kv[t];try{return Pv(r,e)}catch{return Fv(e)}}switch(t){case`branch`:return e.branch===`detached`?``:e.branch;case`sha`:return P_(e.sha,``);case`dirty`:return e.status!==`clean`;case`ahead`:return P_(e.aheadBehind,{ahead:0,behind:0}).ahead;case`behind`:return P_(e.aheadBehind,{ahead:0,behind:0}).behind;case`stash`:return P_(e.stashCount,0)}}var jv=class{watchers=new Map;subscribe(e,t){let n=this.watchers.get(e);if(!n){let t=new Set,r;try{r=s(e,()=>{for(let e of t)e()})}catch{return()=>{}}n={watcher:r,callbacks:t},this.watchers.set(e,n)}return n.callbacks.add(t),()=>this.unsubscribe(e,t)}unsubscribe(e,t){let n=this.watchers.get(e);n&&(n.callbacks.delete(t),n.callbacks.size===0&&(n.watcher.close(),this.watchers.delete(e)))}dispose(){for(let{watcher:e}of this.watchers.values())e.close();this.watchers.clear()}size(){return this.watchers.size}},Mv=class{buckets=new Map;subscribe(e,t){let n=this.buckets.get(e);if(!n){let t=new Set;n={timer:S(()=>{for(let e of t)e()},e),callbacks:t},this.buckets.set(e,n)}return n.callbacks.add(t),()=>this.unsubscribe(e,t)}unsubscribe(e,t){let n=this.buckets.get(e);n&&(n.callbacks.delete(t),n.callbacks.size===0&&(x(n.timer),this.buckets.delete(e)))}dispose(){for(let{timer:e}of this.buckets.values())x(e);this.buckets.clear()}bucketCount(){return this.buckets.size}};function Nv(e,t){let n=e;for(let e of t.split(`.`)){if(typeof n!=`object`||!n)return;n=n[e]}return n}function Pv(e,t){if(typeof e!=`string`&&typeof e!=`number`&&typeof e!=`boolean`)throw TypeError(`Expected string|number|boolean from payload, got ${typeof e}`);return t===`string`?Bg(e):t===`number`?Vg(e):Hg(e)}function Fv(e){return e===`number`?0:e===`boolean`?!1:``}var Iv=class{inputMetas=new Map;lastErrors=new Map;watchMgr=new jv;ttlMgr=new Mv;gitSubscriptions=new Map;cleanups=[];inFlight=new Map;reads=new ov;abort=new AbortController;drawn=Lg.observable.box(M.TRUECOLOR);drawnAt=()=>this.drawn.get();engine=A_(void 0,void 0,this.drawnAt);gitProvider;ownsGitProvider;sessionState;constructor(e,t=``,n,r){this.store=e,this.defaultEmptyValue=t,n?(this.gitProvider=n,this.ownsGitProvider=!1):(this.gitProvider=new pv({sanityIntervalMs:0}),this.ownsGitProvider=!0),this.sessionState=r}get variableStore(){return this.store}declareLiteral(e,t){this.store.defineBox(e,zg(t),t)}declareInput(e,t,n,r){let i=r===void 0?this.defaultFor(n):r;this.store.defineBox(e,n,i),this.inputMetas.set(e,{path:t,varDefault:r})}declareEnv(e,t,n){let r=process.env[t];if(r!==void 0){this.store.defineBox(e,`string`,r);return}let i=n===void 0?typeof this.defaultEmptyValue==`string`?this.defaultEmptyValue:``:n;this.store.defineBox(e,`string`,i),this.recordError(e,`env var "${t}" is not set`)}declareShell(e,t,n){this.declareSource(e,xv(t,this.abort.signal),vv(e,n.cache),n.parse)}declareFile(e,t,n){this.declareSource(e,Sv(t,n.readMode??`whole`,this.abort.signal),n.cache,n.parse)}declareSource(e,t,n,r){let i=this.publisherFor(e,r,t.where),a=()=>this.runSource(e,t,i);a(),this.registerCachePolicy(e,n,a)}publisherFor(e,t,n){switch(t.kind){case`text`:return this.scalarPublisher(e,hv,t.default,n);case`regex`:return this.scalarPublisher(e,gv(t.regex),t.default,n);case`json`:return this.documentPublisher(e,t.default,n)}}scalarPublisher(e,t,n,r){let i=this.stringInitial(n);return this.store.defineBox(e,`string`,i),n=>{let a=Cv(n,t,r);this.noteOutcome(e,a),this.store.setBox(e,P_(a,i))}}documentPublisher(e,t,n){let r=t===void 0?Y:J(t);return this.store.defineDocument(e,r),i=>{let a=Cv(i,_v,n);this.noteOutcome(e,a),this.store.setDocument(e,a.kind===`ok`||t===void 0?a:r)}}runSource(e,t,n){let r=this.reads.run(e,()=>t.read().then(n,e=>{if(e!==this.abort.signal.reason)throw e}));r.kind===`started`&&this.track(e,r.done)}track(e,t){let n=t.finally(()=>{this.inFlight.get(e)===n&&this.inFlight.delete(e)});this.inFlight.set(e,n)}async settled(e){let t=Date.now()+e;for(;this.inFlight.size>0;){let e=t-Date.now();if(e<=0)break;let n,r=await Promise.race([Promise.all(this.inFlight.values()).then(()=>`settled`),new Promise(t=>{n=setTimeout(()=>t(`deadline`),e)})]);if(clearTimeout(n),r===`deadline`)break}return[...this.inFlight.keys()]}declareTemplate(e,t,n={}){let r=this.engine.parse(t);this.store.defineComputed(e,`string`,t=>{let i=j_(this.store);try{let t=r.evaluate(i).map(e=>e.plain).join(``);return this.lastErrors.delete(e),t}catch(t){let r=t instanceof Error?t.message:String(t);if(this.recordError(e,r),n.varDefault===void 0)throw Error(`variable "${e}": ${r}`);return n.varDefault}});try{this.store.read(e)}catch{}}declareTime(e,t){let n=t.ttlMs??1e3;this.store.defineBox(e,`string`,(e=>{try{return Ov(t.format,e)}catch{return this.stringInitial(t.varDefault)}})(new Date));let r=this.ttlMgr.subscribe(n,()=>{try{this.store.setBox(e,Ov(t.format,new Date)),this.lastErrors.delete(e)}catch(n){this.applyFallback(e,`string`,t.varDefault,n instanceof Error?n.message:String(n))}});this.cleanups.push(r)}declareGit(e,t){let n=kv[t.field],r=t.varDefault===void 0?Fv(n):Pv(t.varDefault,n);this.store.defineBox(e,n,r);let i=this.gitSubscriptions.get(t.cwd);if(!i){let e=new Map,n=this.gitProvider.subscribe(t.cwd,t=>{this.store.runInAction(()=>{for(let[n,r]of e)for(let{name:e,varDefault:i}of r)this.store.setBox(e,Av(t,n,i,this.defaultEmptyValue))})});i={fieldSubs:e,firstDelivery:n.firstDelivery,unsubscribe:n.unsubscribe},this.gitSubscriptions.set(t.cwd,i)}let a=i.fieldSubs.get(t.field);a||(a=[],i.fieldSubs.set(t.field,a)),a.push({name:e,varDefault:t.varDefault}),this.track(e,i.firstDelivery)}declareState(e,t){if(!this.sessionState)throw Error(`declareState("${e}"): SourceRegistry was constructed without a SessionState — state-kind variables require a SessionState (the daemon provides one; tests must supply one)`);let n=this.sessionState,r=t.varDefault??this.stringInitial(void 0);this.store.defineComputed(e,`string`,e=>{let i=e(bv);if(typeof i!=`string`||!i)return r;let a=n.get(i,t.key);return a===null?r:a})}applyInput(e){this.store.runInAction(()=>{for(let[t,n]of this.inputMetas){let r=Nv(e,n.path),i=this.store.getType(t);if(r!==void 0)try{this.store.setBox(t,Pv(r,i)),this.lastErrors.delete(t)}catch(e){this.applyFallback(t,i,n.varDefault,e instanceof Error?e.message:String(e))}else this.applyFallback(t,i,n.varDefault,`input path "${n.path}" not found in payload`)}})}drawAt(e){this.store.runInAction(()=>this.drawn.set(e))}getLastError(e){return this.lastErrors.get(e)}dispose(){this.abort.abort();for(let e of this.cleanups)e();this.cleanups.length=0;for(let e of this.gitSubscriptions.values())e.unsubscribe();this.gitSubscriptions.clear(),this.reads.clear(),this.watchMgr.dispose(),this.ttlMgr.dispose(),this.ownsGitProvider&&this.gitProvider.close()}registerCachePolicy(e,t,n){switch(t.kind){case`never`:break;case`ttl`:{let e=this.ttlMgr.subscribe(t.durationMs,n);this.cleanups.push(e);break}case`watch_file`:{let e=this.watchMgr.subscribe(t.path,n);this.cleanups.push(e);break}case`key`:{let e=this.engine.parse(t.template),r=(0,Lg.reaction)(()=>{let t=j_(this.store);try{return e.evaluate(t).map(e=>e.plain).join(``)}catch{return``}},n);this.cleanups.push(r);break}case`depends_on`:{let e=(0,Lg.reaction)(()=>t.varNames.map(e=>this.store.changeKey(e)).join(`,`),n);this.cleanups.push(e);break}}}applyFallback(e,t,n,r){if(this.recordError(e,r),n!==void 0){this.store.setBox(e,n);return}try{this.store.setBox(e,Pv(this.defaultEmptyValue,t))}catch{this.store.setBox(e,Fv(t))}}defaultFor(e){try{return Pv(this.defaultEmptyValue,e)}catch{return Fv(e)}}stringInitial(e){return e===void 0?typeof this.defaultEmptyValue==`string`?this.defaultEmptyValue:``:e}recordError(e,t){this.lastErrors.set(e,{timestamp:Date.now(),message:t})}noteOutcome(e,t){t.kind===`ok`?this.lastErrors.delete(e):this.recordError(e,t.kind===`failed`?t.reason:`no value`)}};const Lv={project_dir:{kind:`input`,path:`workspace.project_dir`,default:``},[bv]:{kind:`input`,path:`session_id`,default:``},transcript_path:{kind:`input`,path:`transcript_path`,default:``},"theme.effective":{kind:`input`,path:`theme.effective`,default:``},"look.effective":{kind:`input`,path:`look.effective`,default:``},"preset.effective":{kind:`input`,path:`preset.effective`,default:``},"preset.customized":{kind:`input`,path:`preset.customized`,type:`boolean`,default:!1},"preset.bundled":{kind:`input`,path:`preset.bundled`,type:`boolean`,default:!0},"style.effective":{kind:`input`,path:`style.effective`,default:``},"progression.effective":{kind:`input`,path:`progression.effective`,default:``},"charset.effective":{kind:`input`,path:`charset.effective`,default:``},"colorCompatibility.effective":{kind:`input`,path:`colorCompatibility.effective`,default:``},"autoWrap.effective":{kind:`input`,path:`autoWrap.effective`,type:`boolean`,default:!0},"padding.effective":{kind:`input`,path:`padding.effective`,type:`number`,default:1},"term.cols":{kind:`input`,path:`term.cols`,type:`number`,default:80},"git.repoUrl":{kind:`input`,path:`git.repoUrl`,default:``}},Rv={theme:{configKey:`palette`,sessionKey:`theme`,effectiveVar:`theme.effective`},preset:{configKey:`preset`,sessionKey:`preset`,effectiveVar:`preset.effective`},look:{configKey:`look`,sessionKey:`look`,effectiveVar:`look.effective`},style:{configKey:`style`,sessionKey:`style`,effectiveVar:`style.effective`},progression:{configKey:`progression`,sessionKey:`progression`,effectiveVar:`progression.effective`},charset:{configKey:`charset`,sessionKey:`charset`,effectiveVar:`charset.effective`},colorCompatibility:{configKey:`colorCompatibility`,sessionKey:`colorCompatibility`,effectiveVar:`colorCompatibility.effective`},autoWrap:{configKey:`autoWrap`,sessionKey:`autoWrap`,effectiveVar:`autoWrap.effective`},padding:{configKey:`padding`,sessionKey:`padding`,effectiveVar:`padding.effective`}},zv=Object.values(Rv),Bv=new Map(zv.map(e=>[e.configKey,e.effectiveVar])),Vv=new Map(zv.map(e=>[e.sessionKey,e.effectiveVar]));function Hv(e,t,n){let r=new Set,i=e=>{for(let t of Dg(e??``,n).keys())r.add(t)};for(let t of Object.values(e.segments))i(t.template),i(t.bg),i(t.fg),i(t.when);for(let e of t)for(let t of Qo(e))i(t.when);for(let t of Object.values(e.variables))t.kind===`template`&&i(t.template),t.kind===`state`&&r.add(bv);for(let t of Object.values(e.actions)){r.add(bv),`copy`in t&&i(t.copy),`open`in t&&i(t.open);let e=`set`in t?Vv.get(t.set):void 0,n=`persist`in t?Bv.get(t.persist):void 0;e!==void 0&&r.add(e),n!==void 0&&r.add(n)}return r}function Uv(e,t,n){let r=Ng({...n,variables:{...n.variables,...e.variables},segments:{...n.segments,...e.segments}}),i={};for(let a of Hv(e,t,n.helpers)){if(Mg(a,r))continue;let e=Lv[a];if(e===void 0)throw Error(`synthesized chrome reads ".${a}", which it does not declare and PAYLOAD_INPUTS does not supply`);i[a]=e}return i}function Wv(e){return e.op===`remove`?`remove:${e.target}`:`insert:${e.segment}:${e.anchor}:${e.relation}`}function Gv(e){let t=e.split(`:`);return t[0]===`remove`&&t.length===2&&t[1]?{op:`remove`,target:t[1]}:t[0]===`insert`&&t.length===4&&t[1]&&t[2]&&(t[3]===`before`||t[3]===`after`)?{op:`insert`,segment:t[1],anchor:t[2],relation:t[3]}:null}function Kv(e){let t=new Set;for(let n of Qo(e))n.kind===`segment`&&t.add(n.name);return t}const qv=`default`,Jv={};function Yv(e){return[...new Set([qv,...Object.keys(e)])]}function Xv(e,t,n){return Ca(void 0,e,t,qv,n)}function Zv(e,t){let n={[qv]:Jv,...e}[t];if(n===void 0)throw Error(`Preset "${t}" is not declared in this config — effectivePresetName collapses unknown names to "${qv}", which always resolves; a miss here means a raw name reached this function without going through that resolution`);return n}function Qv(e,t){let n=Zv(e.presets,t).root??Bs;return{node:Ws(qs(n,e.root)),path:Js(n)?`presets.${t}.root`:`root`}}function $v(e,t){return{...e.globals,...Zv(e.presets,t).globals}}const ey=/^segments\.([^.]+)\.palette$/,ty=/^presets\.(.+)\.root$/,ny=/^presets\.(.+)\.globals\.([^.]+)$/;function ry(e){return`presets.${e}.root`}function iy(e,t){return`presets.${e}.globals.${t}`}function ay(e){if(Oc(e))return{scope:`globals`,field:e};let t=ey.exec(e);if(t)return{scope:`segment-palette`,segment:t[1]};let n=ny.exec(e);if(n&&xc(n[2]))return{scope:`preset-globals`,preset:n[1],field:n[2]};let r=ty.exec(e);return r?{scope:`preset-root`,preset:r[1]}:null}function oy(e){switch(e.scope){case`globals`:return[`globals`,e.field];case`preset-globals`:return[`presets`,e.preset,`globals`,e.field];case`segment-palette`:return[`segments`,e.segment,`palette`]}}const sy=`open`;function cy(e,t,n,r){let i={variable:e,key:e,member:sy};return r.variables[e]=sc(e,Qs),r.actions[e]=cc(e,sy),r.segments[e]={template:oc(e,`(?)`,`✕`),...ly(n)},rc(e,i,{kind:`container`,direction:`horizontal`,children:t.map((t,n)=>{let i=`${e}.${n}`;return r.segments[i]={template:t},{kind:`segment`,name:i}})},`drop`)}function ly(e){let[t,...n]=e;return t===void 0?{}:{when:ic(t,...n)}}const uy={help:[`-h`,`--help`],version:[`-V`,`--version`]},dy=[`✚ inserts here`,`🚫 removes its segment`,`↺ resets layout`],fy=`
89
91
  cc-candybar - Beautiful powerline statusline for Claude Code
90
92
 
91
93
  Usage: cc-candybar [options]
92
94
 
93
95
  Standalone Commands:
94
- ${oy.help.join(`, `).padEnd(25)}Show this help
95
- ${oy.version.join(`, `).padEnd(25)}Print the version of this runtime (cc-candybar <version>)
96
+ ${uy.help.join(`, `).padEnd(25)}Show this help
97
+ ${uy.version.join(`, `).padEnd(25)}Print the version of this runtime (cc-candybar <version>)
96
98
 
97
99
  Debugging:
98
100
  CC_CANDYBAR_DEBUG=1 Enable debug logging for troubleshooting
@@ -105,7 +107,7 @@ Configuration:
105
107
 
106
108
  Every bar carries a settings menu, whatever your config says — no config
107
109
  needed, and writing your own \`root\` cannot delete it. Click
108
- it on the bar (${Zs} by default; globals.menuGlyph changes it) for
110
+ it on the bar (${$s} by default; globals.menuGlyph changes it) for
109
111
  quick actions, preset switching, edit mode, and a config menu of
110
112
  clickable theme/look/style/progression/charset/colour-depth/wrap/padding
111
113
  controls. A change applies to this session at once; 💾 save appears while
@@ -114,7 +116,7 @@ Configuration:
114
116
  failed row's [fix] to repair it (the same checks \`cc-candybar doctor\` runs).
115
117
 
116
118
  Anywhere the bar shows (?), clicking it reveals these same instructions
117
- in place. In edit mode: ${sy.join(`, `)}.
119
+ in place. In edit mode: ${dy.join(`, `)}.
118
120
 
119
121
  Subcommands:
120
122
  install One-shot setup: stages the runtime (native render
@@ -152,55 +154,55 @@ Config tooling:
152
154
  config [--json] The effective merged config. (All three query the
153
155
  running daemon; none spawn one.)
154
156
 
155
- `,ly=`${hl}live`,uy=[`☐ live`,`☑ live`],dy=`${hl}done`,fy={variable:ly,key:ly,member:`open`},py=`and ${rc(sg)} (not ${rc(fy)})`,my=`{{ ${py} }}`;function hy(e,t){return`{{ if ${py} }}${e}{{ else }}${t}{{ end }}`}const gy=`{{ and ${rc(sg)} .preset.customized }}`,_y=vl;function vy(e){return`${hl}addable.${e}`}function yy(e){let t=Object.keys(e.segments).filter(e=>!_y(e)),n=new Map;for(let r of Gv(e.presets)){let{node:i}=Jv(e,r),a=Hv(i);n.set(vy(r),{members:t.filter(e=>!a.has(e))})}return n}function by(e,t,n){return n.segments[e]={template:t,when:cg},{kind:`segment`,name:e}}function xy(e,t,n,r){let i=`${hl}${e}.remove.${fl(n)}`;return r.actions[i]={persist:t,removeSegment:n},`{{ if ${rc(sg)} }}{{ action "${i}" "🚫" }}{{ end }}`}const Sy=`${hl}label:`;function Cy(e){return e.startsWith(Sy)?e.slice(Sy.length):e.startsWith(`edit.`)?void 0:e}function wy(e,t){let n=`${Sy}${e}`;return t.segments[n]={template:`{{ "${ec(e)}" }}`,when:my},{kind:`segment`,name:n}}function Ty(e,t,n,r,i,a,o){let s=`${hl}${e}.insert.${n}`,c=`${hl}${e}.insertSeg.${n}`;o.actions[s]={persist:t,insertSegmentFrom:r,anchor:i,relation:a};let l=Rh(s),u=zh(c,s,void 0),d=Hh(u),f=Vh(u,l);return o.variables[u]=ac(u,Xs),o.variables[d]={kind:`state`,key:d,default:`0`},o.actions[f]=oc(u,l),o.actions[d]={set:d,int:!0},{host:c,template:`{{ $m := menu "${s}" "✚" "✕" }}{{ if ${rc({variable:u,key:u,member:l})} }}{{ $m }}{{ else }}{{ fg (${`readableOn (color "success") (bgOf) ${Qi}`}) $m }}{{ end }}`}}function Ey(e,t,n,r,i,a){let o=[],s=e.children.findIndex(e=>e.kind===`segment`&&!_y(e.name)),c=e=>Ey(e,t,n,r,i,a);for(let[l,u]of e.children.entries()){if(u.kind===`container`){o.push(c(u));continue}let d=Yo(u,c);if(_y(u.name)){o.push(d);continue}let f=e=>Ty(t,n,String(a.n++),r,u.name,e,i),p=l===s?[f(`before`)]:[],m=f(`after`),h=xy(t,n,u.name,i),g={kind:`container`,direction:`horizontal`,children:[...p.map(e=>by(e.host,e.template,i)),{...wy(u.name,i),trail:h},{...d,when:hy(`false`,u.when??`true`),trail:h},by(m.host,m.template,i)]};o.push(e.direction===`vertical`?{kind:`container`,direction:`horizontal`,children:[g]}:g)}return{...e,children:o,...e.when!==void 0&&{when:hy(`true`,e.when)}}}function Dy(e,t,n,r,i,a,o){let s=`${hl}${n}.resetLayout`,c=`${hl}${n}.customized`;i.actions[s]={reset:r};let l=ec(t);return i.segments[c]={template:`{{ action "${s}" "↺ ${l} customized" }}`,when:gy},{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[a,{kind:`segment`,name:c}]},Oy(e,o)]}}function Oy(e,t){if(e.kind===`segment`)return{kind:`container`,direction:`horizontal`,children:[e,t]};let n=e.children.at(-1);return e.direction===`vertical`&&n!==void 0&&(n.kind===`segment`||n.when===void 0)?{...e,children:[...e.children.slice(0,-1),Oy(n,t)]}:{...e,children:[...e.children,t]}}function ky(e,t,n,r,i){let{node:a}=Jv(e,t),o=$v(t),s=vy(t),c=fl(t);return Dy(Ey(a,c,o,s,n,{n:0}),t,c,o,n,r,i)}function Ay(e){let t={variables:{},actions:{},segments:{}},n=iy(`${hl}help`,sy,[sg],t);t.variables[ly]=ac(ly,Xs),t.actions[ly]=oc(ly,fy.member),t.segments[ly]={template:ic(ly,...uy),when:cg};let r={kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:ly},n]};t.segments[dy]={template:`{{ action "${ag}" "✎ done" }}`,when:cg};let i={kind:`segment`,name:dy},a={...e.presets},o=[];for(let n of Gv(e.presets)){let s=ky(e,n,t,i,r);o.push(s),a[n]={...qv(e.presets,n),root:s}}let s=zv(t,o,e);return{...e,variables:{...s,...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:a}}const jy={socket:`TMUX`,pane:`TMUX_PANE`,truecolor:`CLAUDE_CODE_TMUX_TRUECOLOR`};function My(e){let t=e[jy.socket]??``,n=e[jy.pane]??``;if(t===``||n===``)return null;let r=e[jy.truecolor]??``;return{socket:t.split(`,`)[0],pane:n,truecolor:r===``?null:r}}const Ny=jy.truecolor,Py=[{name:`tmuxTruecolor`,label:`tmux truecolor`,probe:({tmux:e,claudeSettingsEnv:t})=>{switch(e.kind){case`unreported`:return{ok:!1,reason:"the client reported no tmux facts — re-run `cc-candybar install` to stage a current client"};case`outside`:return{ok:!0};case`inside`:{if(e.termfeatures.kind===`failed`)return{ok:!1,reason:`tmux could not be asked: ${e.termfeatures.reason}`};if(!e.termfeatures.value.includes(`RGB`)||e.hint.truecolor!==null)return{ok:!0};let n=t[Ny];return typeof n==`string`&&n!==``?{ok:!1,reason:`${Ny} is set in ~/.claude/settings.json — restart Claude Code to apply`}:{ok:!1,reason:`Claude Code renders the bar in 256 colours inside tmux`,fix:{kind:`claude-settings-env`,name:Ny,value:`1`}}}}}}];function Fy(e){return Py.map(t=>({check:t,verdict:t.probe(e)}))}function Iy(e){return Py.find(t=>t.name===e)}function Ly(e){let t=`settings.doctor.${e}.`;return{verdict:`${t}verdict`,reason:`${t}reason`,fixable:`${t}fixable`}}function Ry(e){return e.flatMap(({check:e,verdict:t})=>{let n=Ly(e.name);return t.ok?[{key:n.verdict,value:`ok`},{key:n.reason,value:``},{key:n.fixable,value:Ja}]:[{key:n.verdict,value:`failed`},{key:n.reason,value:t.reason},{key:n.fixable,value:t.fix===void 0?Ja:qa}]})}const zy={copySession:{copy:`{{ .session.id }}`},openProject:{open:`{{ .project_dir }}`},openTranscript:{open:`{{ .transcript_path }}`}};function By(e){let t=t=>`${e}${t}`;return{template:`{{ action "${t(`copySession`)}" "⎘ id" }} {{ action "${t(`openProject`)}" "↗ proj" }} {{ action "${t(`openTranscript`)}" "↗ log" }}{{ if ne .git.repoUrl "" }} {{ link .git.repoUrl "↗ repo" }}{{ end }}`,actions:Object.fromEntries(Object.entries(zy).map(([t,n])=>[`${e}${t}`,n]))}}const Vy=`${gl}menu`,Hy=og,Uy=`${gl}edit`,Wy=`${gl}close`,Gy=`${gl}toolbar`,Ky=By(gl),qy=`${gl}config`,Jy=`${gl}save`,Yy=`${gl}unsaved`,Xy={variable:Vy,key:Vy,member:Hy},Zy={variable:qy,key:qy,member:Hy},Qy=`${gl}tools`,$y={variable:Qy,key:Qy,member:Hy},eb=[{seg:`${gl}undo`,depth:`undo`,action:{undo:!0},display:`↶ undo`},{seg:`${gl}redo`,depth:`redo`,action:{redo:!0},display:`↷ redo`}],tb=e=>`${gl}history.${e}`,nb=`${gl}doctor`,rb=`${nb}.run`,ib=e=>`${nb}.fix.${e}`,ab=e=>`${nb}.${e}`,ob=`${gl}pickers`,sb=[`{{ themePreview }}`],cb=[{name:`preset`,...Pv.preset,glyph:`▦`,domain:`presets`,beneath:[`{{ layoutPreview }}`]}],lb=[{name:`theme`,...Pv.theme,glyph:`🎨`,domain:`themes`,beneath:sb},{name:`look`,...Pv.look,glyph:`◐`,domain:`looks`,beneath:sb},{name:`style`,...Pv.style,glyph:`✦`,domain:`styles`,beneath:[]},{name:`progression`,...Pv.progression,glyph:`🎼`,domain:`progressions`,beneath:[`{{ layoutPreview }}`]},{name:`charset`,...Pv.charset,glyph:`🔣`,domain:`charsets`,beneath:[]},{name:`colorCompatibility`,...Pv.colorCompatibility,glyph:`🌈`,domain:`colorCompatibilities`,beneath:[]}],ub={name:`wrap`,...Pv.autoWrap},db={name:`padding`,...Pv.padding},fb=`${gl}${ub.name}`,pb=`${gl}${db.name}`,mb=[...cb,...lb];new Set([...mb,ub,db].flatMap(e=>[e.sessionKey,e.configKey]));const hb=e=>`${gl}${e}`,gb=e=>`${gl}apply.${e}`,_b=e=>`${gl}reset.${e}`,vb=e=>`${gl}carousel.${e}`,yb=(e,t)=>`${vb(e)}.${t}`,bb=Bh(ob),xb=e=>({variable:bb,key:bb,member:Rh(gb(e.name))});function Sb(e){return tc(hb(e.name),xb(e),{kind:`container`,direction:`vertical`,children:[{kind:`segment`,name:vb(e.name)},...e.beneath.map((t,n)=>({kind:`segment`,name:yb(e.name,n)}))]},`drop`)}function Cb(e){return e===Vy}function wb(e){let t={kind:`segment`,name:Vy};if(e.kind===`container`&&e.direction===`vertical`){let[n,...r]=e.children;return e.when===void 0&&n!==void 0?{...e,children:[wb(n),...r]}:{kind:`container`,direction:`vertical`,children:[t,e]}}return e.kind===`container`&&e.when===void 0?{...e,children:[t,...e.children]}:{kind:`container`,direction:`horizontal`,children:[t,e]}}function Tb(e){return Eb(e)>0?e:wb(e)}function Eb(e){let t=0;for(let n of Xo(e))n.kind===`segment`&&Cb(n.name)&&(t+=1);return t}function Db(e,t=!1){let n=t||e.when!==void 0;return e.kind===`segment`?n&&Cb(e.name)||e.opens!==void 0&&Db(e.opens.body,!0):e.children.some(e=>Db(e,n))}function Ob(e){return e.kind===`segment`?Cb(e.name)?tc(e.name,Xy,{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:Gy},...cb.map(Sb),{kind:`segment`,name:Jy},tc(qy,Zy,{kind:`container`,direction:`horizontal`,children:[...lb.map(Sb),{kind:`segment`,name:fb},{kind:`segment`,name:pb}]},`drop`),tc(Qy,$y,{kind:`container`,direction:`vertical`,children:[{kind:`segment`,name:nb},...Py.map(e=>({kind:`segment`,name:ab(e.name)}))]},`drop`),{kind:`segment`,name:Uy},...eb.map(e=>({kind:`segment`,name:e.seg}))]},`inline`):e:kb(e)}function kb(e){return{...e,children:e.children.map(e=>Ob(e))}}function Ab(e){let t={variables:{[Vy]:ac(Vy,Xs)},actions:{[Vy]:oc(Vy,Hy),[qy]:oc(qy,Hy),[Qy]:oc(Qy,Hy),[rb]:{doctor:`run`},[Wy]:{set:Xy.key,to:Xs},[Uy]:{do:[ag,Wy]},...Ky.actions,[Jy]:{save:!0}},segments:{[Vy]:{template:ic(Vy,e,`❌`)},[Gy]:{template:Ky.template},[Jy]:{when:`{{ gt .${Yy} 0 }}`,template:`{{ action "${Jy}" (printf "💾 save %d" .${Yy}) }}`},[qy]:{template:ic(qy,`⚙ config ▸`,`⚙ config ▾`)},[Qy]:{template:ic(Qy,`🧰 tools ▸`,`🧰 tools ▾`)},[nb]:{template:`{{ action "${rb}" "🩺 doctor" }}`},[fb]:{template:`{{ action "${gb(`wrap`)}" "wrap: on" "wrap: off" }} {{ action "${_b(`wrap`)}" "↺" }}`},[pb]:{template:`{{ action "${gb(`padding`)}.down" "◀" }} padding {{ .${db.effectiveVar} }} {{ action "${gb(`padding`)}.up" "▶" }} {{ action "${_b(`padding`)}" "↺" }}`},[Uy]:{template:`{{ action "${Uy}" "✎ edit" "✎ done" }}`}}};return t.variables[Yy]={kind:`input`,path:`unsaved`,type:`number`,default:0},t.variables[qy]=ac(qy,Xs),t.variables[Qy]=ac(Qy,Xs),Nb(t),Mb(t),jb(t),t}function jb(e){for(let t of eb){let n=tb(t.depth);e.variables[n]={kind:`input`,path:`history.${t.depth}`,type:`number`,default:0},e.actions[t.seg]=t.action,e.segments[t.seg]={when:`{{ gt .${n} 0 }}`,template:`{{ action "${t.seg}" "${t.display}" }}`}}}function Mb(e){for(let t of Py){let n=Ly(t.name),r=ib(t.name);for(let t of Object.values(n))e.variables[t]={kind:`state`,key:t,default:``};e.actions[r]={doctor:`fix`,check:t.name},e.segments[ab(t.name)]={when:`{{ ne .${n.verdict} "" }}`,template:`{{ if eq .${n.verdict} "ok" }}✓ ${t.label}{{ else }}✗ ${t.label} — {{ .${n.reason} }}{{ if eq .${n.fixable} "${qa}" }} {{ action "${r}" "[fix]" }}{{ end }}{{ end }}`}}}function Nb(e){for(let t of mb){let n=gb(t.name);e.actions[n]={set:t.sessionKey,from:t.domain},e.actions[_b(t.name)]={reset:t.configKey},Pb(t,e)}e.actions[gb(ub.name)]={set:ub.sessionKey,cycle:[...Ya]},e.actions[_b(ub.name)]={reset:ub.configKey};for(let t of[-1,1])e.actions[`${gb(db.name)}.${t<0?`down`:`up`}`]={set:db.sessionKey,...Xa,by:t};e.actions[_b(db.name)]={reset:db.configKey}}function Pb(e,t){let n=gb(e.name),r=xb(e),i=Vh(r.key,r.member);t.variables[r.key]=ac(r.key,Xs),t.actions[i]=oc(r.key,r.member),t.segments[hb(e.name)]={template:`${e.glyph} {{ .${e.effectiveVar} }} ${ic(i,`▸`,`▾`)} {{ action "${_b(e.name)}" "↺" }}`},t.segments[vb(e.name)]={template:`{{ carousel "${n}" }}`},e.beneath.forEach((n,r)=>{t.segments[yb(e.name,r)]={template:n}})}function Fb(e){e.variables[ig]=ac(ig,Xs),e.actions[ag]=oc(ig,og)}function Ib(e){let t=Ab(e.globals.menuGlyph??`🍫`);Fb(t);let n={...e.presets},r=[];for(let t of Gv(e.presets)){let{node:i}=Jv(e,t),a=Ob(Tb(i));r.push(a),n[t]={...qv(e.presets,t),root:a}}let i=zv(t,r,e);return{...e,variables:{...i,...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:n}}const Lb=[`set`,`persist`,`copy`,`open`,`reset`,`undo`,`redo`,`save`,`doctor`,`do`];function Rb(e){return`from`in e||`int`in e||`insertSegmentFrom`in e}function zb(e,t){if(t===void 0)return{};if(!ps(t))return Z(e,`actions`,`actions must be an object, got ${ms(t)}`),{};let n=Object.create(null);for(let[r,i]of Object.entries(t)){let t=Bb(e,`actions.${r}`,i);t!==null&&(n[r]=t)}return n}function Z(e,t,n){e.issues.push({path:t,message:n,line:W(e.source,t.split(`.`))})}function Bb(e,t,n){if(!ps(n))return Z(e,t,`${t} must be an action object, got ${ms(n)}`),null;if(`persistWhen`in n)return Z(e,t,`${t}.persistWhen was removed: declare the \`set\` alone — a session pick is a draft until a \`{ save: true }\` action writes every unsaved setting to the config file`),null;let r=Lb.filter(e=>e in n);return r.length===1?Vb[r[0]](e,t,n):(Z(e,t,`action must declare exactly one of: ${Lb.join(`, `)}${r.length>1?` (found: ${r.join(`, `)})`:``}`),null)}const Vb={set:(e,t,n)=>gx(e,t,n,`set`,fx),persist:(e,t,n)=>gx(e,t,n,`persist`,px),copy:Hb(`copy`),open:Hb(`open`),reset:Ub,undo:Gb(`undo`),redo:Gb(`redo`),save:Gb(`save`),doctor:Kb,do:qb};function Hb(e){return(t,n,r)=>{for(let i of Object.keys(r))i!==e&&Z(t,`${n}.${i}`,`Unknown key "${i}" on a ${e} action. Expected only: ${e}`);let i=cs(t,n,r,e);return i===null?null:{[e]:i}}}function Ub(e,t,n){for(let r of Object.keys(n))r!==`reset`&&Z(e,`${t}.${r}`,`Unknown key "${r}" on a reset action. Expected only: reset`);let r=Jb(e,t,`reset`,n,`reset key must be non-empty (the config globals field to clear)`,e=>`reset key "${e}" contains "/" — keys must be slash-free`);return r===null?null:{reset:r}}const Wb={undo:`it steps the session's settings history`,redo:`it steps the session's settings history`,save:`it saves the session's unsaved settings`};function Gb(e){return(t,n,r)=>{for(let i of Object.keys(r))i!==e&&Z(t,`${n}.${i}`,`Unknown key "${i}" on a ${e} action. Expected only: ${e}`);return r[e]===!0?{[e]:!0}:(Z(t,`${n}.${e}`,`${e} must be the literal true (it takes no key — ${Wb[e]}), got ${G(r[e])}`),null)}}function Kb(e,t,n){let r=n.doctor,i=r===`run`?[`doctor`]:[`doctor`,`check`];for(let r of Object.keys(n))i.includes(r)||Z(e,`${t}.${r}`,`Unknown key "${r}" on a doctor action. Expected only: ${i.join(`, `)}`);if(r!==`run`&&r!==`fix`)return Z(e,`${t}.doctor`,`doctor must be "run" or "fix", got ${G(r)}`),null;if(r===`run`)return{doctor:`run`};let a=n.check;return typeof a!=`string`||Iy(a)===void 0?(Z(e,`${t}.check`,`doctor fix must name a check (have: ${Py.map(e=>e.name).join(`, `)}), got ${G(a)}`),null):{doctor:`fix`,check:a}}function qb(e,t,n){for(let r of Object.keys(n))r!==`do`&&Z(e,`${t}.${r}`,`Unknown key "${r}" on a do action. Expected only: do`);let r=n.do;return!Array.isArray(r)||r.length<2||r.some(e=>typeof e!=`string`||e===``)?(Z(e,`${t}.do`,`do must list at least two action names (the first is the click's face, the rest ride along in the same click), got ${G(r)}`),null):{do:r}}function Jb(e,t,n,r,i,a){let o=cs(e,t,r,n);if(o===null)return null;let s=`${t}.${n}`;return o===``?(Z(e,s,i),null):o.includes(`/`)?(Z(e,s,a(o)),null):o}const Yb={set:`the SessionState key to write`,persist:`the config globals field to write`};function Xb(e,t,n,r){let i=Yb[r],a=Jb(e,t,r,n,`${r} key must be non-empty (${i})`,e=>`${r} key "${e}" contains "/" — keys must be slash-free`);return a===null?null:{[r]:a}}function Zb(e){return e===`set`?`set-state`:`set-config`}const Qb={to:_x(`set`)},$b={to:_x(`persist`)},ex={from:vx(`set`)},tx={from:vx(`persist`)},nx={min:Cx(),max:Cx(),by:Cx()},rx={int:bx()},ix={cycle:yx(`set`)},ax={cycle:yx(`persist`)},ox={removeSegment:xx(`removeSegment`)},sx={insertSegment:xx(`insertSegment`),anchor:xx(`anchor`),relation:Sx()},cx={insertSegmentFrom:vx(`persist`),anchor:xx(`anchor`),relation:Sx()},lx={ok:e=>e.min<e.max,issue:e=>({field:`min`,message:`min (${e.min}) must be less than max (${e.max})`})},ux={ok:e=>e.by!==0,issue:()=>({field:`by`,message:`by must be a non-zero integer (the per-click increment; negative steps down)`})};function dx(e,t,n=[],r){let i=Object.keys(t),a=r??i,o=[e],s=(e,n,r)=>gs(e,t,n,r),c=js(t);return{detect:a,allowed:[...o,...i],label:i.join(`/`),json:{type:`object`,properties:{...Object.fromEntries(o.map(e=>[e,{type:`string`}])),...c.properties},required:[...o,...c.required??[]],additionalProperties:!1},parse:n.length?ws(s,...n):s}}const fx=[dx(`set`,Qb),dx(`set`,ex),dx(`set`,nx,[lx,ux]),dx(`set`,rx),dx(`set`,ix)],px=[dx(`persist`,$b),dx(`persist`,tx),dx(`persist`,nx,[lx,ux]),dx(`persist`,ax),dx(`persist`,ox),dx(`persist`,sx,[],[`insertSegment`]),dx(`persist`,cx,[],[`insertSegmentFrom`])];function mx(e){let t=[`"to" (a literal value)`,`"from" (an option domain — a registered domain name like "themes"/"styles"/"looks", or an inline array of literal values)`,`"min"/"max"/"by" (a bounded step)`];return e===`set`&&t.push(`"int" (an unbounded integer cursor)`),t.push(`"cycle" (an enumerated domain stepped in order)`),e===`persist`&&t.push(`"removeSegment" (remove a named segment from the layout)`,`"insertSegment"/"anchor"/"relation" (insert a named segment before/after an existing one)`,`"insertSegmentFrom"/"anchor"/"relation" (insert a segment PICKED from an option domain before/after an existing one)`),t}function hx(e){let t=mx(e),n=t[t.length-1];return`a ${e} action declares exactly one value source: ${t.length===1?n:`${t.slice(0,-1).join(`, `)}, or ${n}`}`}function gx(e,t,n,r,i){let a=Xb(e,t,n,r),o=i.filter(e=>e.detect.some(e=>e in n));if(o.length!==1)return Z(e,t,`${hx(r)}${o.length>1?` — found: ${o.map(e=>e.label).join(`, `)}`:``}`),null;let s=o[0];for(let i of Object.keys(n))s.allowed.includes(i)||Z(e,`${t}.${i}`,`Unknown key "${i}" on this ${r} action. Expected one of: ${s.allowed.join(`, `)}`);let c=s.parse(e,t,n);return a===null||c===null?null:{...a,...c}}function _x(e){let t=Zb(e);return{required:!0,json:{type:`string`},parse:(n,r,i,a)=>Jb(n,r,i,a,`${e} value must be non-empty — an empty value cannot be delivered on the ${t} wire`,t=>`${e} value "${t}" contains "/" — ${e} values must be slash-free`)??void 0}}function vx(e){let t=Zb(e);return{required:!0,json:{anyOf:[{type:`string`,minLength:1},{type:`array`,items:{type:`string`,minLength:1},minItems:1,uniqueItems:!0}]},parse:(n,r,i,a)=>{let o=a[i],s=`${r}.${i}`;if(typeof o==`string`){if(o===``){Z(n,s,`${i} must be a non-empty domain name`);return}return o}if(Array.isArray(o)&&o.every(e=>typeof e==`string`)){let r=o;if(r.length===0){Z(n,s,`${i} must name a domain (a non-empty string) or declare an inline domain (a non-empty array of values)`);return}if(r.some(e=>e===``)){Z(n,s,`${i} array members must be non-empty — an empty value cannot be delivered on the ${t} wire`);return}let a=r.filter(e=>e.includes(`/`));if(a.length>0){Z(n,s,`${i} array member(s) ${a.map(e=>`"${e}"`).join(`, `)} contain "/" — ${e} values must be slash-free`);return}if(new Set(r).size!==r.length){Z(n,s,`${i} array members must be unique — a duplicated value would render the same picker option twice`);return}return r}Z(n,s,`${i} must be a domain name (a string) or an inline domain (an array of strings), got ${G(o)}`)}}}function yx(e){let t=Zb(e);return{required:!0,json:{type:`array`,items:{type:`string`,minLength:1},minItems:2,uniqueItems:!0},parse:(n,r,i,a)=>{let o=a[i],s=`${r}.${i}`;if(!Array.isArray(o)||o.some(e=>typeof e!=`string`)){Z(n,s,`cycle must be an array of strings (the enumerated values a click steps through), got ${ms(o)}`);return}let c=o;if(c.length<2){Z(n,s,`cycle needs at least two members (one member has no successor — use a literal "to")`);return}let l=c.some(e=>e===``),u=c.filter(e=>e.includes(`/`));if(l){Z(n,s,`cycle members must be non-empty — an empty value cannot be delivered on the ${t} wire`);return}if(u.length>0){Z(n,s,`cycle member(s) ${u.map(e=>`"${e}"`).join(`, `)} contain "/" — ${e} values must be slash-free`);return}if(new Set(c).size!==c.length){Z(n,s,`cycle members must be unique — the successor of a duplicated member is ambiguous`);return}return c}}}function bx(){return{required:!0,json:{const:!0},parse:(e,t,n,r)=>{if(r[n]!==!0){Z(e,`${t}.${n}`,`int must be the literal true (declares the key an unbounded integer cursor — a paged picker's page key), got ${G(r[n])}`);return}return!0}}}function xx(e){return{required:!0,json:{type:`string`},parse:(t,n,r,i)=>{let a=cs(t,n,i,r);if(a===null)return;let o=`${n}.${r}`;if(a===``){Z(t,o,`${e} must be non-empty (a segment name)`);return}if(a.includes(`/`)||a.includes(`:`)){Z(t,o,`${e} "${a}" contains "/" or ":" — segment names in a layout op must be free of both (the click wire's own delimiter and layout-ops.ts's op-token delimiter)`);return}return a}}}function Sx(){return{required:!0,json:{enum:[`before`,`after`]},parse:(e,t,n,r)=>{let i=r[n];if(i!==`before`&&i!==`after`){Z(e,`${t}.${n}`,`relation must be "before" or "after", got ${G(i)}`);return}return i}}}function Cx(){return{required:!0,json:{type:`integer`},parse:(e,t,n,r)=>{let i=r[n];if(typeof i!=`number`||!Number.isInteger(i)){Z(e,`${t}.${n}`,`${n} must be an integer, got ${G(i)}`);return}return i}}}const wx={noun:`look key`,fields:{hueShift:Ds(),chromaScale:Ds({min:0}),lightnessScale:Ds(),lightnessShift:Ds()}};function Tx(e,t){if(!ps(t))return e.issues.push({path:`looks`,message:`looks must be an object mapping look names to adaptation objects, got ${ms(t)}`,line:W(e.source,[`looks`])}),{};let n={};for(let[r,i]of Object.entries(t)){if(r===``||r.includes(`/`)){e.issues.push({path:`looks.${r}`,message:`look name ${JSON.stringify(r)} must be non-empty and slash-free — a look picker writes the name on the set-state wire, which rejects empty values and splits on "/"`,line:W(e.source,[`looks`,r])});continue}let t=hs(e,wx,`looks.${r}`,i);t!==null&&(n[r]={...On,...t})}return n}const Ex={noun:`preset key`,fields:{root:{required:!1,json:{$ref:`#/definitions/RootFragment`},parse:(e,t,n,r)=>r[n]===void 0?void 0:Gl(e,`${t}.${n}`,r[n])},globals:{required:!1,json:Cc(),parse:(e,t,n,r)=>r[n]===void 0?void 0:Sc(e,`${t}.${n}`,r[n])}}};function Dx(e,t){if(!ps(t))return e.issues.push({path:`presets`,message:`presets must be an object mapping preset names to config fragments, got ${ms(t)}`,line:W(e.source,[`presets`])}),{};let n={};for(let[r,i]of Object.entries(t)){if(r===``||r.includes(`/`)||/[\n\r]/.test(r)){e.issues.push({path:`presets.${r}`,message:`preset name ${JSON.stringify(r)} must be non-empty, slash-free, and newline-free — a preset picker writes the name on the set-state wire (which rejects empty values and splits on "/"), and edit mode splices it into a synthesized template string`,line:W(e.source,[`presets`,r])});continue}let t=hs(e,Ex,`presets.${r}`,i);t!==null&&(n[r]=t)}return n}function Ox(e,t){if(t===void 0)return{};if(!ps(t))return e.issues.push({path:`helpers`,message:`helpers must be an object, got ${ms(t)}`,line:W(e.source,[`helpers`])}),{};let n=Object.create(null);for(let[r,i]of Object.entries(t)){if(typeof i!=`string`){e.issues.push({path:`helpers.${r}`,message:`helpers.${r} must be a string template body, got ${G(i)}`,line:W(e.source,[`helpers`,r])});continue}n[r]=i}return n}const kx=new Map,Ax=new Map;function jx(e){let t=Mx(e);if(t===null)throw Error(`Palette "${e}" (resolved "${va(e)}") did not resolve in the theme registry — allowed names and the registry are inconsistent`);return t}function Mx(e){let t=va(e),n=kx.get(t);if(n!==void 0)return n;let r=ir(t);return r===null?null:(kx.set(t,r),r)}function Nx(e,t){let n=`${e.name} ${t.hueShift} ${t.chromaScale} ${t.lightnessScale} ${t.lightnessShift}`,r=Ax.get(n);if(r!==void 0)return r;let i=fr(e,t);return Ax.set(n,i),i}function Px(e){let t=Mx(e);return t===null?null:{kind:`decided`,name:e,value:t}}function Fx(e,t){let n=Px(e);return n===null?(t(`globals.palette rendered "${ya}": "${e}" names no installed theme`),Lx()):n}function Ix(e,t,n){return Ea(e,t,n,Lx(),Px)}function Lx(){return Px(ya)}function Rx(e){return Da(Ix(void 0,null,e),()=>ya,Lx).value}const zx=new Map;function Bx(e,t,n){zx.set(e,{permanent:!0,resolve:t,paletteOf:n})}Bx(`themes`,()=>Sa(),e=>jx(e)),Bx(`styles`,()=>Ma),Bx(`progressions`,()=>Wa),Bx(`charsets`,()=>Fa),Bx(`colorCompatibilities`,()=>za);function Vx(e){return new Map([[`looks`,{members:Object.keys(e.looks),paletteOf:(t,n)=>Nx(n,e.looks[t])}],[`presets`,{members:Gv(e.presets)}]])}function Hx(e){return[...new Set([...zx.keys(),...e.keys()])]}function Ux(e,t){if(typeof e!=`string`)return{members:e};let n=t.get(e);if(n)return n;let r=zx.get(e);if(r)return{members:r.resolve(),paletteOf:r.paletteOf};throw Error(`unknown option domain "${e}" (have: ${Hx(t).join(`, `)})`)}const Wx={gitTaculous:`gitaculous`};function Gx(e,t){let n=new Map;for(let e of Object.keys(t)){let t=fl(e),r=n.get(t);r?r.push(e):n.set(t,[e])}for(let[t,r]of n)r.length<2||e.issues.push({path:`presets`,message:`preset names ${r.map(e=>JSON.stringify(e)).join(` and `)} both collapse to the same synthesis identifier "${t}" — edit mode's synthesized reset affordance would silently steal one preset's action for the other. Rename one.`,line:W(e.source,[`presets`])})}function Kx(e,t,n){t.globals.look!==void 0&&!Ta(t.globals.look)&&!Object.prototype.hasOwnProperty.call(t.looks,t.globals.look)&&e.issues.push({path:`globals.look`,message:`globals.look "${t.globals.look}" does not match any declared look (have: ${Object.keys(t.looks).join(`, `)})`,line:W(e.source,[`globals`,`look`])}),t.globals.preset!==void 0&&!Object.prototype.hasOwnProperty.call(t.presets,t.globals.preset)&&e.issues.push({path:`globals.preset`,message:`globals.preset "${t.globals.preset}" does not match any declared preset (have: ${Object.keys(t.presets).join(`, `)})`,line:W(e.source,[`globals`,`preset`])}),Gx(e,t.presets);let r=Vx(t);for(let[n,i]of Object.entries(t.actions))!(`set`in i)||!(`from`in i)||typeof i.from!=`string`||Hx(r).includes(i.from)||e.issues.push({path:`actions.${n}.from`,message:`actions.${n} from: references unknown option domain "${i.from}" (have: ${Hx(r).join(`, `)})`,line:W(e.source,[`actions`,n,`from`])});for(let[n,r]of Object.entries(t.actions))`do`in r&&r.do.forEach((i,a)=>{let o=Object.prototype.hasOwnProperty.call(t.actions,i)?t.actions[i]:void 0,s=o===void 0?`references unknown action "${i}"`:`do`in o?`"${i}" is itself a do action — list its members here instead`:r.do.indexOf(i)===a?a>0&&Rb(o)?`"${i}" takes its value from the template (from/int/insertSegmentFrom), so it can only be the first member — only the first is bound the region's display`:void 0:`"${i}" is listed twice — each member fires once per click`;s!==void 0&&e.issues.push({path:`actions.${n}.do`,message:`actions.${n} do: ${s}`,line:W(e.source,[`actions`,n,`do`])})});for(let[n,r]of Object.entries(t.actions)){let i=`persist`in r?r.persist:`reset`in r?r.reset:null;if(i===null)continue;let a=`persist`in r?`persist`:`reset`,o=ty(i);if(o===null){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" is not a config globals field (have: ${Dc().join(`, `)}), a "segments.<name>.palette" target, a "presets.<name>.globals.<field>" target, or a "presets.<name>.root" target`,line:W(e.source,[`actions`,n,a])});continue}let s=qx.filter(e=>e in r);if(o.scope!==`preset-root`&&s.length>0){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" is not a "presets.<name>.root" target — ${s.map(e=>`"${e}"`).join(`/`)} is a tree op and applies only to one`,line:W(e.source,[`actions`,n,a])});continue}if(o.scope===`preset-root`){Jx(e,t,n,a,i,o.preset,r);continue}if(o.scope===`preset-globals`&&!Gv(t.presets).includes(o.preset)){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" names preset "${o.preset}" which is not declared (have: ${Gv(t.presets).join(`, `)})`,line:W(e.source,[`actions`,n,a])});continue}if(o.scope===`segment-palette`){if(!Object.prototype.hasOwnProperty.call(t.segments,o.segment)){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" names segment "${o.segment}" which is not declared (have segments: ${Object.keys(t.segments).join(`, `)})`,line:W(e.source,[`actions`,n,a])});continue}`min`in r&&e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" is a segment palette target and cannot use a bounded stepper (min/max/by) — use "to", "from", or "cycle" instead`,line:W(e.source,[`actions`,n,a])})}}let i=kg(t),a=Object.entries(t.segments).filter(([,e])=>eg(e.template)).map(([e])=>e),o=(t,n,r)=>{Eb(t)>1&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${Vy}" ${Eb(t)} times — it may appear at most once per layout (it is one disclosure, and one state key holds one open state). Remove all but the placement you want; removing every placement puts the menu at its default position.`,line:r}),Db(t)&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${Vy}" under a \`when\` or inside a disclosure body — the menu is visible under every condition, so its placement may not be gated. Move it to an ungated position, or remove it to put the menu at its default position.`,line:r}),s(t)&&e.issues.push({path:n,message:`${n} sets "distribution" on a container inside a bar cell — everything inside a cell wears that cell's hue and tone, so it would place nothing. Set it on the row whose children are the cells (the horizontal container) or on the root, which places the rows.`,line:r});let i=new Map;for(let e of Xo(t))e.kind===`segment`&&i.set(e.name,(i.get(e.name)??0)+1);for(let t of a)(i.get(t)??0)>1&&e.issues.push({path:n,message:`segment "${t}" hosts a {{ menu }} and is placed in the layout more than once — a menu's open-state is keyed by segment name, so the copies would share one state (clicking one would toggle both). Give each placement its own named segment.`,line:r})};function s(e,t=!1){return e.kind===`segment`?!1:t&&e.distribution!==void 0||e.children.some(n=>s(n,t||Jo[e.direction]===`cell`))}let c=(n,r)=>{for(let[a,o]of Ws(n,r)){let n=W(e.source,o.split(`.`));if(a.when!==void 0&&(Qx(e,`${o}.when`,a.when,i,{line:n}),Zx(e,`${o}.when`,a.when,n)),a.kind===`segment`&&!Cb(a.name)&&!Object.prototype.hasOwnProperty.call(t.segments,a.name)){let t=Wx[a.name],i=t===void 0?``:` (the built-in segment "${a.name}" was renamed to "${t}" — update this reference)`;e.issues.push({path:o,message:`${r} entry "${a.name}" does not match any declared segment${i}`,line:n})}}};n.root!==void 0&&c(n.root,`root`);for(let[e,t]of Object.entries(n.presets??{}))t.root!==void 0&&c(t.root,`presets.${e}.root`);let l=new Map([[`root`,Hs(t.root)]]);for(let e of Gv(t.presets)){let{node:n,path:r}=Jv(t,e);l.set(r,n)}for(let[t,n]of l)o(n,t,W(e.source,t.split(`.`)));for(let[n,r]of Object.entries(t.variables))Yx(e,`variables.${n}`,r,i);for(let[n,r]of Object.entries(t.segments)){if(r.vars)for(let[t,a]of Object.entries(r.vars))Yx(e,`segments.${n}.vars.${t}`,a,i,n);for(let a of[`template`,`bg`,`fg`,`when`]){let o=r[a];if(typeof o==`string`){Qx(e,`segments.${n}.${a}`,o,i,{segCtx:n});for(let r of Tg(o))Object.prototype.hasOwnProperty.call(t.actions,r)||e.issues.push({path:`segments.${n}.${a}`,message:`${a} references unknown action "${r}"`,line:W(e.source,[`segments`,n,a])});for(let r of Dg(o))Object.prototype.hasOwnProperty.call(t.actions,r)||e.issues.push({path:`segments.${n}.${a}`,message:`${a} references unknown action "${r}" (in a picker, menu or carousel)`,line:W(e.source,[`segments`,n,a])})}}}for(let[n,r]of Object.entries(t.variables))Xx(e,`variables.${n}`,r,i);for(let[n,r]of Object.entries(t.segments))if(r.vars)for(let[t,a]of Object.entries(r.vars))Xx(e,`segments.${n}.vars.${t}`,a,i,n)}const qx=[`removeSegment`,`insertSegment`,`insertSegmentFrom`];function Jx(e,t,n,r,i,a,o){let s=`actions.${n}.${r}`,c=W(e.source,[`actions`,n,r]);if(!Gv(t.presets).includes(a)){e.issues.push({path:s,message:`actions.${n}: "${i}" names preset "${a}" which is not declared (have: ${Gv(t.presets).join(`, `)})`,line:c});return}if(r===`reset`)return;let l=`removeSegment`in o,u=`insertSegment`in o,d=`insertSegmentFrom`in o;if(!l&&!u&&!d){e.issues.push({path:s,message:`actions.${n}: "${i}" is a "presets.<name>.root" target and can only be paired with "removeSegment", "insertSegment", or "insertSegmentFrom" (not "to"/"from"/"cycle"/bounded — those have no meaning as a tree op)`,line:c});return}let f=e=>!Object.prototype.hasOwnProperty.call(t.segments,e);l&&`removeSegment`in o&&f(o.removeSegment)&&e.issues.push({path:s,message:`actions.${n}: removeSegment "${o.removeSegment}" is not a declared segment (have: ${Object.keys(t.segments).join(`, `)})`,line:c}),u&&`insertSegment`in o&&(f(o.insertSegment)&&e.issues.push({path:s,message:`actions.${n}: insertSegment "${o.insertSegment}" is not a declared segment (have: ${Object.keys(t.segments).join(`, `)})`,line:c}),f(o.anchor)&&e.issues.push({path:s,message:`actions.${n}: anchor "${o.anchor}" is not a declared segment (have: ${Object.keys(t.segments).join(`, `)})`,line:c})),d&&`insertSegmentFrom`in o&&f(o.anchor)&&e.issues.push({path:s,message:`actions.${n}: anchor "${o.anchor}" is not a declared segment (have: ${Object.keys(t.segments).join(`, `)})`,line:c})}function Yx(e,t,n,r,i){n.kind===`template`&&Qx(e,`${t}.template`,n.template,r,{segCtx:i}),rs(n)&&n.cache&&`key`in n.cache&&Qx(e,`${t}.cache.key`,n.cache.key,r,{segCtx:i})}function Xx(e,t,n,r,i){if(rs(n)&&n.cache&&`depends_on`in n.cache)for(let a=0;a<n.cache.depends_on.length;a++){let o=n.cache.depends_on[a];if(r.names.has(o))continue;let s=i===void 0?void 0:`${i}.${o}`,c=s!==void 0&&r.names.has(s)?` (segment-local vars are namespaced — write "${s}")`:``;e.issues.push({path:`${t}.cache.depends_on[${a}]`,message:`cache.depends_on references unknown variable "${o}"${c}`,line:W(e.source,[...t.split(`.`),`cache`,`depends_on`])})}}function Zx(e,t,n,r){try{rg.parse(n)}catch(n){e.issues.push({path:t,message:`Template parse error in ${t}: ${n.message}`,line:r})}}function Qx(e,t,n,r,i){for(let[a,o]of Cg(n,r.helpers)){if(Og(a,r))continue;if(o!==null){$x(e,o,a);continue}let n=i?.segCtx===void 0?void 0:`${i.segCtx}.${a}`,s=n!==void 0&&Og(n,r)?` (segment-local vars are namespaced — write ".${n}")`:``;e.issues.push({path:t,message:`Template references unknown variable ".${a}"${s}`,line:i?.line??W(e.source,t.split(`.`))})}}function $x(e,t,n){let r=`helpers.${t}`,i=`Template references unknown variable ".${n}"`;e.issues.some(e=>e.path===r&&e.message===i)||e.issues.push({path:r,message:i,line:W(e.source,[`helpers`,t])})}function eS(e,t){let{graph:n,nodeInfo:r}=tS(t),i=new Map,a=[];for(let e of n.keys())i.set(e,0);for(let e of n.keys())if(i.get(e)===0&&o(e))return;function o(t){i.set(t,1),a.push(t);for(let s of n.get(t)??[]){let t=i.get(s);if(t===1){let t=a.indexOf(s),n=[...a.slice(t),s],i=n[0],o=r.get(i);return e.issues.push({path:o?.declarationPath??`variables.${i}`,message:`Dependency cycle: ${n.join(` → `)}`,line:W(e.source,o?.linePathParts??[`variables`,i])}),!0}if(t===0&&o(s))return!0}return i.set(t,2),a.pop(),!1}}function tS(e){let t=new Set(Object.keys(e.variables)),n=new Map;for(let t of Object.keys(e.variables))n.set(t,{declarationPath:`variables.${t}`,linePathParts:[`variables`,t]});for(let[r,i]of Object.entries(e.segments))if(i.vars)for(let e of Object.keys(i.vars)){let i=`${r}.${e}`;t.add(i),n.set(i,{declarationPath:`segments.${r}.vars.${e}`,linePathParts:[`segments`,r,`vars`,e]})}let r=new Map;for(let e of t)r.set(e,new Set);let i=(n,i)=>{for(let a of Cg(i,e.helpers).keys()){if(t.has(a)){r.get(n).add(a);continue}let e=a.split(`.`)[0];e!==a&&t.has(e)&&r.get(n).add(e)}},a=(e,n)=>{if(n.kind===`template`&&i(e,n.template),rs(n)&&(n.cache&&`key`in n.cache&&i(e,n.cache.key),n.cache&&`depends_on`in n.cache))for(let i of n.cache.depends_on)t.has(i)&&r.get(e).add(i)};for(let[t,n]of Object.entries(e.variables))a(t,n);for(let[t,n]of Object.entries(e.segments))if(n.vars)for(let[e,r]of Object.entries(n.vars))a(`${t}.${e}`,r);return{graph:r,nodeInfo:n}}const nS=[`json5`,`json`];function rS(e){try{return r.statSync(e,{throwIfNoEntry:!1})===void 0?`absent`:`present`}catch(t){return{path:e,error:t.message}}}function iS(e){return e===`~`||e.startsWith(`~/`)||e.startsWith(`~\\`)?f.homedir()+e.slice(1):e}function aS(e,t,n){if(n!==void 0)return[n];let r=t??process.cwd();return[...new Set([...e?nS.map(t=>c.join(e,`.cc-candybar.${t}`)):[],...nS.map(e=>c.join(r,`.cc-candybar.${e}`)),...nS.map(e=>`${oS()}.${e}`)])]}function oS(){let e=process.env.XDG_CONFIG_HOME??c.join(f.homedir(),`.config`);return c.join(e,`cc-candybar`,`config`)}function sS(e,t,n){let r=[];for(let i of aS(e,t,n)){let e=rS(i);if(e===`present`)return{kind:`file`,path:i,unchecked:r};e!==`absent`&&r.push(e)}if(n===void 0)return{kind:`default`,unchecked:r};let[i]=r;return i===void 0?{kind:`missing`,path:n}:{kind:`unreadable`,...i}}function cS(e,t,n){let r=sS(e,t,n);return r.kind===`default`?`${oS()}.${nS[0]}`:r.path}function lS(e){return uS(e).join(`
156
- `)||null}function uS(e){switch(e.kind){case`file`:case`default`:return e.unchecked.map(e=>`Config location could not be checked: ${e.path} — ${e.error}`);case`missing`:return[`Config file not found: ${e.path} — rendering the bundled default until it appears`];case`unreadable`:return[`Config file could not be read: ${e.path} — ${e.error} — rendering the bundled default until it can be`]}}function dS(e,t){let n=aS(e,t).filter(e=>rS(e)===`present`),r=new Map;for(let e of n){let t=c.dirname(e),n=c.basename(e).replace(/\.(json5|json)$/,``),i=c.join(t,n);r.has(i)||r.set(i,[]),r.get(i).push(e)}let i=[...r.values()].filter(e=>e.length>1);return i.length===0?null:`config-extension collision: ${i.map(e=>{let[t,...n]=e;return`${t} shadows ${n.join(`, `)}`}).join(`; `)} — remove the duplicate`}function fS(e,t,n){let r=e===null?pS:mS(e,t,n);return{...r,config:qs(r.raw,t)}}const pS={raw:{},source:``,warnings:[]};function mS(e,t,n){let i=r.readFileSync(e,`utf-8`);return{source:i,..._S(e,i,n,xl(t))}}function hS({config:e,raw:t,source:n},r=`<config>`,i=new Set(Sa())){let a=[],o={source:n,issues:a,allowedPalettes:i,groups:[]};if(Kx(o,e,t),eS(o,e),a.length>0)throw new Ho(r,a);return Ay(Ib(e))}function gS(e,t,n=new Set(Sa()),r=vS){return _S(e,t,n,r).raw}function _S(e,t,n,r){let i=yS(e,t),a=Go(e,t),o=a===null?[]:[a],s=[],c={source:t,issues:s,allowedPalettes:n??new Set(Sa()),groups:[]};if(!ps(i))throw new Ho(e,[{path:``,message:`Config root must be an object, got ${ms(i)}`}],o);let l=bS(c,i,r);if(s.length>0)throw new Ho(e,s,o);return{raw:l,warnings:o}}const vS=new Set;function yS(e,t){try{return Xe.default.parse(t)}catch(t){let n=t;throw new Ho(e,[{path:``,message:`JSON5 syntax error: ${n.message}`,line:n.lineNumber,col:n.columnNumber}])}}function bS(e,t,n){for(let n of Object.keys(t))xS.has(n)||e.issues.push({path:n,message:`Unknown top-level key "${n}". Expected one of: ${[...xS].join(`, `)}`,line:W(e.source,[n])});let r={};return t.globals!==void 0&&(r.globals=xc(e,`globals`,t.globals)),t.variables!==void 0&&(r.variables=Vc(e,`variables`,t.variables)),t.segments!==void 0&&(r.segments=Sl(e,t.segments,n)),t.layout!==void 0&&e.issues.push({path:`layout`,message:`"layout" is no longer supported — use "root" with the A-grammar instead.
157
+ `,py=`${_l}live`,my=[`☐ live`,`☑ live`],hy=`${_l}done`,gy={variable:py,key:py,member:`open`},_y=`and ${ac(dg)} (not ${ac(gy)})`,vy=`{{ ${_y} }}`;function yy(e,t){return`{{ if ${_y} }}${e}{{ else }}${t}{{ end }}`}const by=`{{ and ${ac(dg)} .preset.customized }}`,xy=bl;function Sy(e){return`${_l}addable.${e}`}function Cy(e){let t=Object.keys(e.segments).filter(e=>!xy(e)),n=new Map;for(let r of Yv(e.presets)){let{node:i}=Qv(e,r),a=Kv(i);n.set(Sy(r),{members:t.filter(e=>!a.has(e))})}return n}function wy(e,t,n){return n.segments[e]={template:t,when:fg},{kind:`segment`,name:e}}function Ty(e,t,n,r){let i=`${_l}${e}.remove.${ml(n)}`;return r.actions[i]={persist:t,removeSegment:n},`{{ if ${ac(dg)} }}{{ action "${i}" "🚫" }}{{ end }}`}const Ey=`${_l}label:`;function Dy(e){return e.startsWith(Ey)?e.slice(Ey.length):e.startsWith(`edit.`)?void 0:e}function Oy(e,t){let n=`${Ey}${e}`;return t.segments[n]={template:`{{ "${nc(e)}" }}`,when:vy},{kind:`segment`,name:n}}function ky(e,t,n,r,i,a,o){let s=`${_l}${e}.insert.${n}`,c=`${_l}${e}.insertSeg.${n}`;o.actions[s]={persist:t,insertSegmentFrom:r,anchor:i,relation:a};let l=Hh(s),u=Uh(c,s,void 0),d=Kh(u),f=Gh(u,l);return o.variables[u]=sc(u,Qs),o.variables[d]={kind:`state`,key:d,default:`0`},o.actions[f]=cc(u,l),o.actions[d]={set:d,int:!0},{host:c,template:`{{ $m := menu "${s}" "✚" "✕" }}{{ if ${ac({variable:u,key:u,member:l})} }}{{ $m }}{{ else }}{{ fg (${`readableOn (color "success") (bgOf) ${Qi}`}) $m }}{{ end }}`}}function Ay(e,t,n,r,i,a){let o=[],s=e.children.findIndex(e=>e.kind===`segment`&&!xy(e.name)),c=e=>Ay(e,t,n,r,i,a);for(let[l,u]of e.children.entries()){if(u.kind===`container`){o.push(c(u));continue}let d=Zo(u,c);if(xy(u.name)){o.push(d);continue}let f=e=>ky(t,n,String(a.n++),r,u.name,e,i),p=l===s?[f(`before`)]:[],m=f(`after`),h=Ty(t,n,u.name,i),g={kind:`container`,direction:`horizontal`,children:[...p.map(e=>wy(e.host,e.template,i)),{...Oy(u.name,i),trail:h},{...d,when:yy(`false`,u.when??`true`),trail:h},wy(m.host,m.template,i)]};o.push(e.direction===`vertical`?{kind:`container`,direction:`horizontal`,children:[g]}:g)}return{...e,children:o,...e.when!==void 0&&{when:yy(`true`,e.when)}}}function jy(e,t,n,r,i,a,o){let s=`${_l}${n}.resetLayout`,c=`${_l}${n}.customized`;i.actions[s]={reset:r};let l=nc(t);return i.segments[c]={template:`{{ action "${s}" "↺ ${l} customized" }}`,when:by},{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[a,{kind:`segment`,name:c}]},My(e,o)]}}function My(e,t){if(e.kind===`segment`)return{kind:`container`,direction:`horizontal`,children:[e,t]};let n=e.children.at(-1);return e.direction===`vertical`&&n!==void 0&&(n.kind===`segment`||n.when===void 0)?{...e,children:[...e.children.slice(0,-1),My(n,t)]}:{...e,children:[...e.children,t]}}function Ny(e,t,n,r,i){let{node:a}=Qv(e,t),o=ry(t),s=Sy(t),c=ml(t);return jy(Ay(a,c,o,s,n,{n:0}),t,c,o,n,r,i)}function Py(e){let t={variables:{},actions:{},segments:{}},n=cy(`${_l}help`,dy,[dg],t);t.variables[py]=sc(py,Qs),t.actions[py]=cc(py,gy.member),t.segments[py]={template:oc(py,...my),when:fg};let r={kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:py},n]};t.segments[hy]={template:`{{ action "${lg}" "✎ done" }}`,when:fg};let i={kind:`segment`,name:hy},a={...e.presets},o=[];for(let n of Yv(e.presets)){let s=Ny(e,n,t,i,r);o.push(s),a[n]={...Zv(e.presets,n),root:s}}let s=Uv(t,o,e);return{...e,variables:{...s,...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:a}}const Fy={socket:`TMUX`,pane:`TMUX_PANE`,truecolor:`CLAUDE_CODE_TMUX_TRUECOLOR`};function Iy(e){let t=e[Fy.socket]??``,n=e[Fy.pane]??``;if(t===``||n===``)return null;let r=e[Fy.truecolor]??``;return{socket:t.split(`,`)[0],pane:n,truecolor:r===``?null:r}}const Ly=Fy.truecolor,Ry=[{name:`tmuxTruecolor`,label:`tmux truecolor`,probe:({tmux:e,claudeSettingsEnv:t})=>{switch(e.kind){case`unreported`:return{ok:!1,reason:"the client reported no tmux facts — re-run `cc-candybar install` to stage a current client"};case`outside`:return{ok:!0};case`inside`:{if(e.termfeatures.kind===`failed`)return{ok:!1,reason:`tmux could not be asked: ${e.termfeatures.reason}`};if(!e.termfeatures.value.includes(`RGB`)||e.hint.truecolor!==null)return{ok:!0};let n=t[Ly];return typeof n==`string`&&n!==``?{ok:!1,reason:`${Ly} is set in ~/.claude/settings.json — restart Claude Code to apply`}:{ok:!1,reason:`Claude Code renders the bar in 256 colours inside tmux`,fix:{kind:`claude-settings-env`,name:Ly,value:`1`}}}}}}];function zy(e){return Ry.map(t=>({check:t,verdict:t.probe(e)}))}function By(e){return Ry.find(t=>t.name===e)}function Vy(e){let t=`settings.doctor.${e}.`;return{verdict:`${t}verdict`,reason:`${t}reason`,fixable:`${t}fixable`}}function Hy(e){return e.flatMap(({check:e,verdict:t})=>{let n=Vy(e.name);return t.ok?[{key:n.verdict,value:`ok`},{key:n.reason,value:``},{key:n.fixable,value:Ja}]:[{key:n.verdict,value:`failed`},{key:n.reason,value:t.reason},{key:n.fixable,value:t.fix===void 0?Ja:qa}]})}const Uy={copySession:{copy:`{{ .session.id }}`},openProject:{open:`{{ .project_dir }}`},openTranscript:{open:`{{ .transcript_path }}`}};function Wy(e){let t=t=>`${e}${t}`;return{template:`{{ action "${t(`copySession`)}" "⎘ id" }} {{ action "${t(`openProject`)}" "↗ proj" }} {{ action "${t(`openTranscript`)}" "↗ log" }}{{ if ne .git.repoUrl "" }} {{ link .git.repoUrl "↗ repo" }}{{ end }}`,actions:Object.fromEntries(Object.entries(Uy).map(([t,n])=>[`${e}${t}`,n]))}}const Gy=`${vl}menu`,Ky=ug,qy=`${vl}edit`,Jy=`${vl}close`,Yy=`${vl}toolbar`,Xy=Wy(vl),Zy=`${vl}config`,Qy=`${vl}save`,$y=`${vl}unsaved`,eb=`${vl}preset.save`,tb=`${vl}preset.delete`,nb=`${vl}resetAll`,rb=`${nb}.arm`,ib=`${nb}.disarm`,ab=`armed`,ob=`disarmed`,sb=`${Gy}.toggle`,cb=`${Zy}.toggle`,lb={variable:Gy,key:Gy,member:Ky},ub={variable:Zy,key:Zy,member:Ky},db=`${vl}tools`,fb={variable:db,key:db,member:Ky},pb=[{seg:`${vl}undo`,depth:`undo`,action:{undo:!0},display:`↶ undo`},{seg:`${vl}redo`,depth:`redo`,action:{redo:!0},display:`↷ redo`}],mb=e=>`${vl}history.${e}`,hb=`${vl}doctor`,gb=`${hb}.run`,_b=e=>`${hb}.fix.${e}`,vb=e=>`${hb}.${e}`,yb=`${vl}pickers`,bb=[`{{ themePreview }}`],xb=[{name:`preset`,...Rv.preset,glyph:`▦`,domain:`presets`,beneath:[`{{ layoutPreview }}`,`{{ action "${eb}" "⊕ save as preset" }}{{ if not .preset.bundled }} {{ action "${tb}" (printf "🗑 delete %s" .${Rv.preset.effectiveVar}) }}{{ end }}`]}],Sb=[{name:`theme`,...Rv.theme,glyph:`🎨`,domain:`themes`,beneath:bb},{name:`look`,...Rv.look,glyph:`◐`,domain:`looks`,beneath:bb},{name:`style`,...Rv.style,glyph:`✦`,domain:`styles`,beneath:[]},{name:`progression`,...Rv.progression,glyph:`🎼`,domain:`progressions`,beneath:[`{{ layoutPreview }}`]},{name:`charset`,...Rv.charset,glyph:`🔣`,domain:`charsets`,beneath:[]},{name:`colorCompatibility`,...Rv.colorCompatibility,glyph:`🌈`,domain:`colorCompatibilities`,beneath:[]}],Cb={name:`wrap`,...Rv.autoWrap},wb={name:`padding`,...Rv.padding},Tb=`${vl}${Cb.name}`,Eb=`${vl}${wb.name}`,Db=[...xb,...Sb],Ob=[...Db,Cb,wb];new Set(Ob.flatMap(e=>[e.sessionKey,e.configKey]));const kb=e=>`${vl}${e}`,Ab=e=>`${vl}apply.${e}`,jb=e=>`${vl}reset.${e}`,Mb=e=>`${vl}carousel.${e}`,Nb=(e,t)=>`${Mb(e)}.${t}`,Pb=Wh(yb),Fb=e=>({variable:Pb,key:Pb,member:Hh(Ab(e.name))});function Ib(e){return rc(kb(e.name),Fb(e),{kind:`container`,direction:`vertical`,children:[{kind:`segment`,name:Mb(e.name)},...e.beneath.map((t,n)=>({kind:`segment`,name:Nb(e.name,n)}))]},`drop`)}function Lb(e){return e===Gy}function Rb(e){let t={kind:`segment`,name:Gy};if(e.kind===`container`&&e.direction===`vertical`){let[n,...r]=e.children;return e.when===void 0&&n!==void 0?{...e,children:[Rb(n),...r]}:{kind:`container`,direction:`vertical`,children:[t,e]}}return e.kind===`container`&&e.when===void 0?{...e,children:[t,...e.children]}:{kind:`container`,direction:`horizontal`,children:[t,e]}}function zb(e){return Bb(e)>0?e:Rb(e)}function Bb(e){let t=0;for(let n of Qo(e))n.kind===`segment`&&Lb(n.name)&&(t+=1);return t}function Vb(e,t=!1){let n=t||e.when!==void 0;return e.kind===`segment`?n&&Lb(e.name)||e.opens!==void 0&&Vb(e.opens.body,!0):e.children.some(e=>Vb(e,n))}function Hb(e){return e.kind===`segment`?Lb(e.name)?rc(e.name,lb,{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:Yy},...xb.map(Ib),{kind:`segment`,name:Qy},rc(Zy,ub,{kind:`container`,direction:`horizontal`,children:[...Sb.map(Ib),{kind:`segment`,name:Tb},{kind:`segment`,name:Eb},{kind:`segment`,name:nb}]},`drop`),rc(db,fb,{kind:`container`,direction:`vertical`,children:[{kind:`segment`,name:hb},...Ry.map(e=>({kind:`segment`,name:vb(e.name)}))]},`drop`),{kind:`segment`,name:qy},...pb.map(e=>({kind:`segment`,name:e.seg}))]},`inline`):e:Ub(e)}function Ub(e){return{...e,children:e.children.map(e=>Hb(e))}}function Wb(e){let t={variables:{[Gy]:sc(Gy,Qs)},actions:{[sb]:cc(Gy,Ky),[Gy]:{do:[sb,ib]},[cb]:cc(Zy,Ky),[Zy]:{do:[cb,ib]},[db]:cc(db,Ky),[gb]:{doctor:`run`},[Jy]:{set:lb.key,to:Qs},[qy]:{do:[lg,Jy]},...Xy.actions,[Qy]:{save:!0},[eb]:{preset:`save`},[tb]:{preset:`delete`,name:`{{ .${Rv.preset.effectiveVar} }}`}},segments:{[Gy]:{template:oc(Gy,e,`❌`)},[Yy]:{template:Xy.template},[Qy]:{when:`{{ gt .${$y} 0 }}`,template:`{{ action "${Qy}" (printf "💾 save %d" .${$y}) }}`},[Zy]:{template:oc(Zy,`⚙ config ▸`,`⚙ config ▾`)},[db]:{template:oc(db,`🧰 tools ▸`,`🧰 tools ▾`)},[hb]:{template:`{{ action "${gb}" "🩺 doctor" }}`},[Tb]:{template:`{{ action "${Ab(`wrap`)}" "wrap: on" "wrap: off" }} {{ action "${jb(`wrap`)}" "↺" }}`},[Eb]:{template:`{{ action "${Ab(`padding`)}.down" "◀" }} padding {{ .${wb.effectiveVar} }} {{ action "${Ab(`padding`)}.up" "▶" }} {{ action "${jb(`padding`)}" "↺" }}`},[qy]:{template:`{{ action "${qy}" "✎ edit" "✎ done" }}`},[nb]:{template:`{{ if eq .${nb} "${ab}" }}{{ action "${nb}" "⟲ confirm reset all" }}{{ else }}{{ action "${rb}" "⟲ reset all" }}{{ end }}`}}};return t.variables[$y]={kind:`input`,path:`unsaved`,type:`number`,default:0},t.variables[Zy]=sc(Zy,Qs),t.variables[db]=sc(db,Qs),t.variables[nb]={kind:`state`,key:nb,default:ob},qb(t),Kb(t),Gb(t),t}function Gb(e){for(let t of pb){let n=mb(t.depth);e.variables[n]={kind:`input`,path:`history.${t.depth}`,type:`number`,default:0},e.actions[t.seg]=t.action,e.segments[t.seg]={when:`{{ gt .${n} 0 }}`,template:`{{ action "${t.seg}" "${t.display}" }}`}}}function Kb(e){for(let t of Ry){let n=Vy(t.name),r=_b(t.name);for(let t of Object.values(n))e.variables[t]={kind:`state`,key:t,default:``};e.actions[r]={doctor:`fix`,check:t.name},e.segments[vb(t.name)]={when:`{{ ne .${n.verdict} "" }}`,template:`{{ if eq .${n.verdict} "ok" }}✓ ${t.label}{{ else }}✗ ${t.label} — {{ .${n.reason} }}{{ if eq .${n.fixable} "${qa}" }} {{ action "${r}" "[fix]" }}{{ end }}{{ end }}`}}}function qb(e){for(let t of Db){let n=Ab(t.name);e.actions[n]={set:t.sessionKey,from:t.domain},e.actions[jb(t.name)]={reset:t.configKey},Jb(t,e)}e.actions[Ab(Cb.name)]={set:Cb.sessionKey,cycle:[...Ya]},e.actions[jb(Cb.name)]={reset:Cb.configKey};for(let t of[-1,1])e.actions[`${Ab(wb.name)}.${t<0?`down`:`up`}`]={set:wb.sessionKey,...Xa,by:t};e.actions[jb(wb.name)]={reset:wb.configKey},e.actions[rb]={set:nb,to:ab},e.actions[ib]={set:nb,to:ob},e.actions[nb]={do:[ib,...Ob.map(e=>jb(e.name))]}}function Jb(e,t){let n=Ab(e.name),r=Fb(e),i=Gh(r.key,r.member);t.variables[r.key]=sc(r.key,Qs),t.actions[i]=cc(r.key,r.member),t.segments[kb(e.name)]={template:`${e.glyph} {{ .${e.effectiveVar} }} ${oc(i,`▸`,`▾`)} {{ action "${jb(e.name)}" "↺" }}`},t.segments[Mb(e.name)]={template:`{{ carousel "${n}" }}`},e.beneath.forEach((n,r)=>{t.segments[Nb(e.name,r)]={template:n}})}function Yb(e){e.variables[cg]=sc(cg,Qs),e.actions[lg]=cc(cg,ug)}function Xb(e){let t=Wb(e.globals.menuGlyph??`🍫`);Yb(t);let n={...e.presets},r=[];for(let t of Yv(e.presets)){let{node:i}=Qv(e,t),a=Hb(zb(i));r.push(a),n[t]={...Zv(e.presets,t),root:a}}let i=Uv(t,r,e);return{...e,variables:{...i,...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:n}}const Zb=[`set`,`persist`,`copy`,`open`,`reset`,`undo`,`redo`,`save`,`preset`,`doctor`,`do`];function Qb(e){return`from`in e||`int`in e||`insertSegmentFrom`in e}function $b(e,t){if(t===void 0)return{};if(!hs(t))return Z(e,`actions`,`actions must be an object, got ${gs(t)}`),{};let n=Object.create(null);for(let[r,i]of Object.entries(t)){let t=ex(e,`actions.${r}`,i);t!==null&&(n[r]=t)}return n}function Z(e,t,n){e.issues.push({path:t,message:n,line:W(e.source,t.split(`.`))})}function ex(e,t,n){if(!hs(n))return Z(e,t,`${t} must be an action object, got ${gs(n)}`),null;if(`persistWhen`in n)return Z(e,t,`${t}.persistWhen was removed: declare the \`set\` alone — a session pick is a draft until a \`{ save: true }\` action writes every unsaved setting to the config file`),null;let r=Zb.filter(e=>e in n);return r.length===1?tx[r[0]](e,t,n):(Z(e,t,`action must declare exactly one of: ${Zb.join(`, `)}${r.length>1?` (found: ${r.join(`, `)})`:``}`),null)}const tx={set:(e,t,n)=>jx(e,t,n,`set`,Dx),persist:(e,t,n)=>jx(e,t,n,`persist`,Ox),copy:nx(`copy`),open:nx(`open`),reset:rx,undo:ax(`undo`),redo:ax(`redo`),save:ax(`save`),preset:ox,doctor:sx,do:cx};function nx(e){return(t,n,r)=>{for(let i of Object.keys(r))i!==e&&Z(t,`${n}.${i}`,`Unknown key "${i}" on a ${e} action. Expected only: ${e}`);let i=us(t,n,r,e);return i===null?null:{[e]:i}}}function rx(e,t,n){for(let r of Object.keys(n))r!==`reset`&&Z(e,`${t}.${r}`,`Unknown key "${r}" on a reset action. Expected only: reset`);let r=lx(e,t,`reset`,n,`reset key must be non-empty (the config globals field to clear)`,e=>`reset key "${e}" contains "/" — keys must be slash-free`);return r===null?null:{reset:r}}const ix={undo:`it steps the session's settings history`,redo:`it steps the session's settings history`,save:`it saves the session's unsaved settings`};function ax(e){return(t,n,r)=>{for(let i of Object.keys(r))i!==e&&Z(t,`${n}.${i}`,`Unknown key "${i}" on a ${e} action. Expected only: ${e}`);return r[e]===!0?{[e]:!0}:(Z(t,`${n}.${e}`,`${e} must be the literal true (it takes no key — ${ix[e]}), got ${G(r[e])}`),null)}}function ox(e,t,n){let r=n.preset,i=r===`save`?[`preset`]:[`preset`,`name`];for(let r of Object.keys(n))i.includes(r)||Z(e,`${t}.${r}`,`Unknown key "${r}" on a preset action. Expected only: ${i.join(`, `)}`);if(r!==`save`&&r!==`delete`)return Z(e,`${t}.preset`,`preset must be "save" or "delete", got ${G(r)}`),null;if(r===`save`)return{preset:`save`};let a=us(e,t,n,`name`);return a===null?null:{preset:`delete`,name:a}}function sx(e,t,n){let r=n.doctor,i=r===`run`?[`doctor`]:[`doctor`,`check`];for(let r of Object.keys(n))i.includes(r)||Z(e,`${t}.${r}`,`Unknown key "${r}" on a doctor action. Expected only: ${i.join(`, `)}`);if(r!==`run`&&r!==`fix`)return Z(e,`${t}.doctor`,`doctor must be "run" or "fix", got ${G(r)}`),null;if(r===`run`)return{doctor:`run`};let a=n.check;return typeof a!=`string`||By(a)===void 0?(Z(e,`${t}.check`,`doctor fix must name a check (have: ${Ry.map(e=>e.name).join(`, `)}), got ${G(a)}`),null):{doctor:`fix`,check:a}}function cx(e,t,n){for(let r of Object.keys(n))r!==`do`&&Z(e,`${t}.${r}`,`Unknown key "${r}" on a do action. Expected only: do`);let r=n.do;return!Array.isArray(r)||r.length<2||r.some(e=>typeof e!=`string`||e===``)?(Z(e,`${t}.do`,`do must list at least two action names (the first is the click's face, the rest ride along in the same click), got ${G(r)}`),null):{do:r}}function lx(e,t,n,r,i,a){let o=us(e,t,r,n);if(o===null)return null;let s=`${t}.${n}`;return o===``?(Z(e,s,i),null):o.includes(`/`)?(Z(e,s,a(o)),null):o}const ux={set:`the SessionState key to write`,persist:`the config globals field to write`};function dx(e,t,n,r){let i=ux[r],a=lx(e,t,r,n,`${r} key must be non-empty (${i})`,e=>`${r} key "${e}" contains "/" — keys must be slash-free`);return a===null?null:{[r]:a}}function fx(e){return e===`set`?`set-state`:`set-config`}const px={to:Mx(`set`)},mx={to:Mx(`persist`)},hx={from:Nx(`set`)},gx={from:Nx(`persist`)},_x={min:Rx(),max:Rx(),by:Rx()},vx={int:Fx()},yx={cycle:Px(`set`)},bx={cycle:Px(`persist`)},xx={removeSegment:Ix(`removeSegment`)},Sx={insertSegment:Ix(`insertSegment`),anchor:Ix(`anchor`),relation:Lx()},Cx={insertSegmentFrom:Nx(`persist`),anchor:Ix(`anchor`),relation:Lx()},wx={ok:e=>e.min<e.max,issue:e=>({field:`min`,message:`min (${e.min}) must be less than max (${e.max})`})},Tx={ok:e=>e.by!==0,issue:()=>({field:`by`,message:`by must be a non-zero integer (the per-click increment; negative steps down)`})};function Ex(e,t,n=[],r){let i=Object.keys(t),a=r??i,o=[e],s=(e,n,r)=>vs(e,t,n,r),c=Ns(t);return{detect:a,allowed:[...o,...i],label:i.join(`/`),json:{type:`object`,properties:{...Object.fromEntries(o.map(e=>[e,{type:`string`}])),...c.properties},required:[...o,...c.required??[]],additionalProperties:!1},parse:n.length?Es(s,...n):s}}const Dx=[Ex(`set`,px),Ex(`set`,hx),Ex(`set`,_x,[wx,Tx]),Ex(`set`,vx),Ex(`set`,yx)],Ox=[Ex(`persist`,mx),Ex(`persist`,gx),Ex(`persist`,_x,[wx,Tx]),Ex(`persist`,bx),Ex(`persist`,xx),Ex(`persist`,Sx,[],[`insertSegment`]),Ex(`persist`,Cx,[],[`insertSegmentFrom`])];function kx(e){let t=[`"to" (a literal value)`,`"from" (an option domain — a registered domain name like "themes"/"styles"/"looks", or an inline array of literal values)`,`"min"/"max"/"by" (a bounded step)`];return e===`set`&&t.push(`"int" (an unbounded integer cursor)`),t.push(`"cycle" (an enumerated domain stepped in order)`),e===`persist`&&t.push(`"removeSegment" (remove a named segment from the layout)`,`"insertSegment"/"anchor"/"relation" (insert a named segment before/after an existing one)`,`"insertSegmentFrom"/"anchor"/"relation" (insert a segment PICKED from an option domain before/after an existing one)`),t}function Ax(e){let t=kx(e),n=t[t.length-1];return`a ${e} action declares exactly one value source: ${t.length===1?n:`${t.slice(0,-1).join(`, `)}, or ${n}`}`}function jx(e,t,n,r,i){let a=dx(e,t,n,r),o=i.filter(e=>e.detect.some(e=>e in n));if(o.length!==1)return Z(e,t,`${Ax(r)}${o.length>1?` — found: ${o.map(e=>e.label).join(`, `)}`:``}`),null;let s=o[0];for(let i of Object.keys(n))s.allowed.includes(i)||Z(e,`${t}.${i}`,`Unknown key "${i}" on this ${r} action. Expected one of: ${s.allowed.join(`, `)}`);let c=s.parse(e,t,n);return a===null||c===null?null:{...a,...c}}function Mx(e){let t=fx(e);return{required:!0,json:{type:`string`},parse:(n,r,i,a)=>lx(n,r,i,a,`${e} value must be non-empty — an empty value cannot be delivered on the ${t} wire`,t=>`${e} value "${t}" contains "/" — ${e} values must be slash-free`)??void 0}}function Nx(e){let t=fx(e);return{required:!0,json:{anyOf:[{type:`string`,minLength:1},{type:`array`,items:{type:`string`,minLength:1},minItems:1,uniqueItems:!0}]},parse:(n,r,i,a)=>{let o=a[i],s=`${r}.${i}`;if(typeof o==`string`){if(o===``){Z(n,s,`${i} must be a non-empty domain name`);return}return o}if(Array.isArray(o)&&o.every(e=>typeof e==`string`)){let r=o;if(r.length===0){Z(n,s,`${i} must name a domain (a non-empty string) or declare an inline domain (a non-empty array of values)`);return}if(r.some(e=>e===``)){Z(n,s,`${i} array members must be non-empty — an empty value cannot be delivered on the ${t} wire`);return}let a=r.filter(e=>e.includes(`/`));if(a.length>0){Z(n,s,`${i} array member(s) ${a.map(e=>`"${e}"`).join(`, `)} contain "/" — ${e} values must be slash-free`);return}if(new Set(r).size!==r.length){Z(n,s,`${i} array members must be unique — a duplicated value would render the same picker option twice`);return}return r}Z(n,s,`${i} must be a domain name (a string) or an inline domain (an array of strings), got ${G(o)}`)}}}function Px(e){let t=fx(e);return{required:!0,json:{type:`array`,items:{type:`string`,minLength:1},minItems:2,uniqueItems:!0},parse:(n,r,i,a)=>{let o=a[i],s=`${r}.${i}`;if(!Array.isArray(o)||o.some(e=>typeof e!=`string`)){Z(n,s,`cycle must be an array of strings (the enumerated values a click steps through), got ${gs(o)}`);return}let c=o;if(c.length<2){Z(n,s,`cycle needs at least two members (one member has no successor — use a literal "to")`);return}let l=c.some(e=>e===``),u=c.filter(e=>e.includes(`/`));if(l){Z(n,s,`cycle members must be non-empty — an empty value cannot be delivered on the ${t} wire`);return}if(u.length>0){Z(n,s,`cycle member(s) ${u.map(e=>`"${e}"`).join(`, `)} contain "/" — ${e} values must be slash-free`);return}if(new Set(c).size!==c.length){Z(n,s,`cycle members must be unique — the successor of a duplicated member is ambiguous`);return}return c}}}function Fx(){return{required:!0,json:{const:!0},parse:(e,t,n,r)=>{if(r[n]!==!0){Z(e,`${t}.${n}`,`int must be the literal true (declares the key an unbounded integer cursor — a paged picker's page key), got ${G(r[n])}`);return}return!0}}}function Ix(e){return{required:!0,json:{type:`string`},parse:(t,n,r,i)=>{let a=us(t,n,i,r);if(a===null)return;let o=`${n}.${r}`;if(a===``){Z(t,o,`${e} must be non-empty (a segment name)`);return}if(a.includes(`/`)||a.includes(`:`)){Z(t,o,`${e} "${a}" contains "/" or ":" — segment names in a layout op must be free of both (the click wire's own delimiter and layout-ops.ts's op-token delimiter)`);return}return a}}}function Lx(){return{required:!0,json:{enum:[`before`,`after`]},parse:(e,t,n,r)=>{let i=r[n];if(i!==`before`&&i!==`after`){Z(e,`${t}.${n}`,`relation must be "before" or "after", got ${G(i)}`);return}return i}}}function Rx(){return{required:!0,json:{type:`integer`},parse:(e,t,n,r)=>{let i=r[n];if(typeof i!=`number`||!Number.isInteger(i)){Z(e,`${t}.${n}`,`${n} must be an integer, got ${G(i)}`);return}return i}}}const zx={noun:`look key`,fields:{hueShift:ks(),chromaScale:ks({min:0}),lightnessScale:ks(),lightnessShift:ks()}};function Bx(e,t){if(!hs(t))return e.issues.push({path:`looks`,message:`looks must be an object mapping look names to adaptation objects, got ${gs(t)}`,line:W(e.source,[`looks`])}),{};let n={};for(let[r,i]of Object.entries(t)){if(r===``||r.includes(`/`)){e.issues.push({path:`looks.${r}`,message:`look name ${JSON.stringify(r)} must be non-empty and slash-free — a look picker writes the name on the set-state wire, which rejects empty values and splits on "/"`,line:W(e.source,[`looks`,r])});continue}let t=_s(e,zx,`looks.${r}`,i);t!==null&&(n[r]={...On,...t})}return n}const Vx={noun:`preset key`,fields:{root:{required:!1,json:{$ref:`#/definitions/RootFragment`},parse:(e,t,n,r)=>r[n]===void 0?void 0:Yl(e,`${t}.${n}`,r[n])},globals:{required:!1,json:Tc(),parse:(e,t,n,r)=>r[n]===void 0?void 0:wc(e,`${t}.${n}`,r[n])}}};function Hx(e,t){if(!hs(t))return e.issues.push({path:`presets`,message:`presets must be an object mapping preset names to config fragments, got ${gs(t)}`,line:W(e.source,[`presets`])}),{};let n={};for(let[r,i]of Object.entries(t)){if(r===``||r.includes(`/`)||/[\n\r]/.test(r)){e.issues.push({path:`presets.${r}`,message:`preset name ${JSON.stringify(r)} must be non-empty, slash-free, and newline-free — a preset picker writes the name on the set-state wire (which rejects empty values and splits on "/"), and edit mode splices it into a synthesized template string`,line:W(e.source,[`presets`,r])});continue}let t=_s(e,Vx,`presets.${r}`,i);t!==null&&(n[r]=t)}return n}function Ux(e,t){if(t===void 0)return{};if(!hs(t))return e.issues.push({path:`helpers`,message:`helpers must be an object, got ${gs(t)}`,line:W(e.source,[`helpers`])}),{};let n=Object.create(null);for(let[r,i]of Object.entries(t)){if(typeof i!=`string`){e.issues.push({path:`helpers.${r}`,message:`helpers.${r} must be a string template body, got ${G(i)}`,line:W(e.source,[`helpers`,r])});continue}n[r]=i}return n}const Wx=new Map,Gx=new Map;function Kx(e){let t=qx(e);if(t===null)throw Error(`Palette "${e}" (resolved "${va(e)}") did not resolve in the theme registry — allowed names and the registry are inconsistent`);return t}function qx(e){let t=va(e),n=Wx.get(t);if(n!==void 0)return n;let r=ir(t);return r===null?null:(Wx.set(t,r),r)}function Jx(e,t){let n=`${e.name} ${t.hueShift} ${t.chromaScale} ${t.lightnessScale} ${t.lightnessShift}`,r=Gx.get(n);if(r!==void 0)return r;let i=fr(e,t);return Gx.set(n,i),i}function Yx(e){let t=qx(e);return t===null?null:{kind:`decided`,name:e,value:t}}function Xx(e,t){let n=Yx(e);return n===null?(t(`globals.palette rendered "${ya}": "${e}" names no installed theme`),Qx()):n}function Zx(e,t,n){return Ea(e,t,n,Qx(),Yx)}function Qx(){return Yx(ya)}function $x(e){return Da(Zx(void 0,null,e),()=>ya,Qx).value}const eS=new Map;function tS(e,t,n){eS.set(e,{permanent:!0,resolve:t,paletteOf:n})}tS(`themes`,()=>Sa(),e=>Kx(e)),tS(`styles`,()=>Ma),tS(`progressions`,()=>Wa),tS(`charsets`,()=>Fa),tS(`colorCompatibilities`,()=>za);function nS(e){return new Map([[`looks`,{members:Object.keys(e.looks),paletteOf:(t,n)=>Jx(n,e.looks[t])}],[`presets`,{members:Yv(e.presets)}]])}function rS(e){return[...new Set([...eS.keys(),...e.keys()])]}function iS(e,t){if(typeof e!=`string`)return{members:e};let n=t.get(e);if(n)return n;let r=eS.get(e);if(r)return{members:r.resolve(),paletteOf:r.paletteOf};throw Error(`unknown option domain "${e}" (have: ${rS(t).join(`, `)})`)}function aS(e,t){let n=new Map;for(let e of Object.keys(t)){let t=ml(e),r=n.get(t);r?r.push(e):n.set(t,[e])}for(let[t,r]of n)r.length<2||e.issues.push({path:`presets`,message:`preset names ${r.map(e=>JSON.stringify(e)).join(` and `)} both collapse to the same synthesis identifier "${t}" — edit mode's synthesized reset affordance would silently steal one preset's action for the other. Rename one.`,line:W(e.source,[`presets`])})}function oS(e,t,n){t.globals.look!==void 0&&!Ta(t.globals.look)&&!Object.prototype.hasOwnProperty.call(t.looks,t.globals.look)&&e.issues.push({path:`globals.look`,message:`globals.look "${t.globals.look}" does not match any declared look (have: ${Object.keys(t.looks).join(`, `)})`,line:W(e.source,[`globals`,`look`])}),t.globals.preset!==void 0&&!Object.prototype.hasOwnProperty.call(t.presets,t.globals.preset)&&e.issues.push({path:`globals.preset`,message:`globals.preset "${t.globals.preset}" does not match any declared preset (have: ${Object.keys(t.presets).join(`, `)})`,line:W(e.source,[`globals`,`preset`])}),aS(e,t.presets);let r=nS(t);for(let[n,i]of Object.entries(t.actions))!(`set`in i)||!(`from`in i)||typeof i.from!=`string`||rS(r).includes(i.from)||e.issues.push({path:`actions.${n}.from`,message:`actions.${n} from: references unknown option domain "${i.from}" (have: ${rS(r).join(`, `)})`,line:W(e.source,[`actions`,n,`from`])});for(let[n,r]of Object.entries(t.actions))`do`in r&&r.do.forEach((i,a)=>{let o=Object.prototype.hasOwnProperty.call(t.actions,i)?t.actions[i]:void 0,s=o===void 0?`references unknown action "${i}"`:`do`in o?`"${i}" is itself a do action — list its members here instead`:r.do.indexOf(i)===a?a>0&&Qb(o)?`"${i}" takes its value from the template (from/int/insertSegmentFrom), so it can only be the first member — only the first is bound the region's display`:void 0:`"${i}" is listed twice — each member fires once per click`;s!==void 0&&e.issues.push({path:`actions.${n}.do`,message:`actions.${n} do: ${s}`,line:W(e.source,[`actions`,n,`do`])})});for(let[n,r]of Object.entries(t.actions)){let i=`persist`in r?r.persist:`reset`in r?r.reset:null;if(i===null)continue;let a=`persist`in r?`persist`:`reset`,o=ay(i);if(o===null){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" is not a config globals field (have: ${kc().join(`, `)}), a "segments.<name>.palette" target, a "presets.<name>.globals.<field>" target, or a "presets.<name>.root" target`,line:W(e.source,[`actions`,n,a])});continue}let s=sS.filter(e=>e in r);if(o.scope!==`preset-root`&&s.length>0){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" is not a "presets.<name>.root" target — ${s.map(e=>`"${e}"`).join(`/`)} is a tree op and applies only to one`,line:W(e.source,[`actions`,n,a])});continue}if(o.scope===`preset-root`){cS(e,t,n,a,i,o.preset,r);continue}if(o.scope===`preset-globals`&&!Yv(t.presets).includes(o.preset)){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" names preset "${o.preset}" which is not declared (have: ${Yv(t.presets).join(`, `)})`,line:W(e.source,[`actions`,n,a])});continue}if(o.scope===`segment-palette`){if(!Object.prototype.hasOwnProperty.call(t.segments,o.segment)){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" names segment "${o.segment}" which is not declared (have segments: ${Object.keys(t.segments).join(`, `)})${wl(o.segment)}`,line:W(e.source,[`actions`,n,a])});continue}`min`in r&&e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" is a segment palette target and cannot use a bounded stepper (min/max/by) — use "to", "from", or "cycle" instead`,line:W(e.source,[`actions`,n,a])})}}let i=Ng(t),a=Object.entries(t.segments).filter(([,e])=>ig(e.template)).map(([e])=>e),o=(t,n,r)=>{Bb(t)>1&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${Gy}" ${Bb(t)} times — it may appear at most once per layout (it is one disclosure, and one state key holds one open state). Remove all but the placement you want; removing every placement puts the menu at its default position.`,line:r}),Vb(t)&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${Gy}" under a \`when\` or inside a disclosure body — the menu is visible under every condition, so its placement may not be gated. Move it to an ungated position, or remove it to put the menu at its default position.`,line:r}),s(t)&&e.issues.push({path:n,message:`${n} sets "distribution" on a container inside a bar cell — everything inside a cell wears that cell's hue and tone, so it would place nothing. Set it on the row whose children are the cells (the horizontal container) or on the root, which places the rows.`,line:r});let i=new Map;for(let e of Qo(t))e.kind===`segment`&&i.set(e.name,(i.get(e.name)??0)+1);for(let t of a)(i.get(t)??0)>1&&e.issues.push({path:n,message:`segment "${t}" hosts a {{ menu }} and is placed in the layout more than once — a menu's open-state is keyed by segment name, so the copies would share one state (clicking one would toggle both). Give each placement its own named segment.`,line:r})};function s(e,t=!1){return e.kind===`segment`?!1:t&&e.distribution!==void 0||e.children.some(n=>s(n,t||Xo[e.direction]===`cell`))}let c=(n,r)=>{for(let[a,o]of Ks(n,r)){let n=W(e.source,o.split(`.`));a.when!==void 0&&(fS(e,`${o}.when`,a.when,i,{line:n}),dS(e,`${o}.when`,a.when,n)),a.kind===`segment`&&(Lb(a.name)||Object.prototype.hasOwnProperty.call(t.segments,a.name)||e.issues.push({path:o,message:`${r} entry "${a.name}" does not match any declared segment${wl(a.name)}`,line:n}))}};n.root!==void 0&&c(n.root,`root`);for(let[e,t]of Object.entries(n.presets??{}))t.root!==void 0&&c(t.root,`presets.${e}.root`);let l=new Map([[`root`,Ws(t.root)]]);for(let e of Yv(t.presets)){let{node:n,path:r}=Qv(t,e);l.set(r,n)}for(let[t,n]of l)o(n,t,W(e.source,t.split(`.`)));for(let[n,r]of Object.entries(t.variables))lS(e,`variables.${n}`,r,i);for(let[n,r]of Object.entries(t.segments)){if(r.vars)for(let[t,a]of Object.entries(r.vars))lS(e,`segments.${n}.vars.${t}`,a,i,n);for(let a of[`template`,`bg`,`fg`,`when`]){let o=r[a];if(typeof o==`string`){fS(e,`segments.${n}.${a}`,o,i,{segCtx:n});for(let r of kg(o))Object.prototype.hasOwnProperty.call(t.actions,r)||e.issues.push({path:`segments.${n}.${a}`,message:`${a} references unknown action "${r}"`,line:W(e.source,[`segments`,n,a])});for(let r of jg(o))Object.prototype.hasOwnProperty.call(t.actions,r)||e.issues.push({path:`segments.${n}.${a}`,message:`${a} references unknown action "${r}" (in a picker, menu or carousel)`,line:W(e.source,[`segments`,n,a])})}}}for(let[n,r]of Object.entries(t.variables))uS(e,`variables.${n}`,r,i);for(let[n,r]of Object.entries(t.segments))if(r.vars)for(let[t,a]of Object.entries(r.vars))uS(e,`segments.${n}.vars.${t}`,a,i,n)}const sS=[`removeSegment`,`insertSegment`,`insertSegmentFrom`];function cS(e,t,n,r,i,a,o){let s=`actions.${n}.${r}`,c=W(e.source,[`actions`,n,r]);if(!Yv(t.presets).includes(a)){e.issues.push({path:s,message:`actions.${n}: "${i}" names preset "${a}" which is not declared (have: ${Yv(t.presets).join(`, `)})`,line:c});return}if(r===`reset`)return;let l=`removeSegment`in o,u=`insertSegment`in o,d=`insertSegmentFrom`in o;if(!l&&!u&&!d){e.issues.push({path:s,message:`actions.${n}: "${i}" is a "presets.<name>.root" target and can only be paired with "removeSegment", "insertSegment", or "insertSegmentFrom" (not "to"/"from"/"cycle"/bounded — those have no meaning as a tree op)`,line:c});return}let f=(r,i)=>{Object.prototype.hasOwnProperty.call(t.segments,i)||e.issues.push({path:s,message:`actions.${n}: ${r} "${i}" is not a declared segment (have: ${Object.keys(t.segments).join(`, `)})${wl(i)}`,line:c})};`removeSegment`in o&&f(`removeSegment`,o.removeSegment),`insertSegment`in o&&f(`insertSegment`,o.insertSegment),(`insertSegment`in o||`insertSegmentFrom`in o)&&f(`anchor`,o.anchor)}function lS(e,t,n,r,i){n.kind===`template`&&fS(e,`${t}.template`,n.template,r,{segCtx:i}),as(n)&&n.cache&&`key`in n.cache&&fS(e,`${t}.cache.key`,n.cache.key,r,{segCtx:i})}function uS(e,t,n,r,i){if(as(n)&&n.cache&&`depends_on`in n.cache)for(let a=0;a<n.cache.depends_on.length;a++){let o=n.cache.depends_on[a];if(r.names.has(o))continue;let s=i===void 0?void 0:`${i}.${o}`,c=s!==void 0&&r.names.has(s)?` (segment-local vars are namespaced — write "${s}")`:``;e.issues.push({path:`${t}.cache.depends_on[${a}]`,message:`cache.depends_on references unknown variable "${o}"${c}`,line:W(e.source,[...t.split(`.`),`cache`,`depends_on`])})}}function dS(e,t,n,r){try{sg.parse(n)}catch(n){e.issues.push({path:t,message:`Template parse error in ${t}: ${n.message}`,line:r})}}function fS(e,t,n,r,i){for(let[a,o]of Dg(n,r.helpers)){if(Mg(a,r))continue;if(o!==null){pS(e,o,a);continue}let n=i?.segCtx===void 0?void 0:`${i.segCtx}.${a}`,s=n!==void 0&&Mg(n,r)?` (segment-local vars are namespaced — write ".${n}")`:``;e.issues.push({path:t,message:`Template references unknown variable ".${a}"${s}`,line:i?.line??W(e.source,t.split(`.`))})}}function pS(e,t,n){let r=`helpers.${t}`,i=`Template references unknown variable ".${n}"`;e.issues.some(e=>e.path===r&&e.message===i)||e.issues.push({path:r,message:i,line:W(e.source,[`helpers`,t])})}function mS(e,t){let{graph:n,nodeInfo:r}=hS(t),i=new Map,a=[];for(let e of n.keys())i.set(e,0);for(let e of n.keys())if(i.get(e)===0&&o(e))return;function o(t){i.set(t,1),a.push(t);for(let s of n.get(t)??[]){let t=i.get(s);if(t===1){let t=a.indexOf(s),n=[...a.slice(t),s],i=n[0],o=r.get(i);return e.issues.push({path:o?.declarationPath??`variables.${i}`,message:`Dependency cycle: ${n.join(` → `)}`,line:W(e.source,o?.linePathParts??[`variables`,i])}),!0}if(t===0&&o(s))return!0}return i.set(t,2),a.pop(),!1}}function hS(e){let t=new Set(Object.keys(e.variables)),n=new Map;for(let t of Object.keys(e.variables))n.set(t,{declarationPath:`variables.${t}`,linePathParts:[`variables`,t]});for(let[r,i]of Object.entries(e.segments))if(i.vars)for(let e of Object.keys(i.vars)){let i=`${r}.${e}`;t.add(i),n.set(i,{declarationPath:`segments.${r}.vars.${e}`,linePathParts:[`segments`,r,`vars`,e]})}let r=new Map;for(let e of t)r.set(e,new Set);let i=(n,i)=>{for(let a of Dg(i,e.helpers).keys()){if(t.has(a)){r.get(n).add(a);continue}let e=a.split(`.`)[0];e!==a&&t.has(e)&&r.get(n).add(e)}},a=(e,n)=>{if(n.kind===`template`&&i(e,n.template),as(n)&&(n.cache&&`key`in n.cache&&i(e,n.cache.key),n.cache&&`depends_on`in n.cache))for(let i of n.cache.depends_on)t.has(i)&&r.get(e).add(i)};for(let[t,n]of Object.entries(e.variables))a(t,n);for(let[t,n]of Object.entries(e.segments))if(n.vars)for(let[e,r]of Object.entries(n.vars))a(`${t}.${e}`,r);return{graph:r,nodeInfo:n}}const gS=[`json5`,`json`];function _S(e){try{return r.statSync(e,{throwIfNoEntry:!1})===void 0?`absent`:`present`}catch(t){return{path:e,error:t.message}}}function vS(e){return e===`~`||e.startsWith(`~/`)||e.startsWith(`~\\`)?f.homedir()+e.slice(1):e}function yS(e,t,n){if(n!==void 0)return[n];let r=t??process.cwd();return[...new Set([...e?gS.map(t=>c.join(e,`.cc-candybar.${t}`)):[],...gS.map(e=>c.join(r,`.cc-candybar.${e}`)),...gS.map(e=>`${bS()}.${e}`)])]}function bS(){let e=process.env.XDG_CONFIG_HOME??c.join(f.homedir(),`.config`);return c.join(e,`cc-candybar`,`config`)}function xS(e,t,n){let r=[];for(let i of yS(e,t,n)){let e=_S(i);if(e===`present`)return{kind:`file`,path:i,unchecked:r};e!==`absent`&&r.push(e)}if(n===void 0)return{kind:`default`,unchecked:r};let[i]=r;return i===void 0?{kind:`missing`,path:n}:{kind:`unreadable`,...i}}function SS(e,t,n){let r=xS(e,t,n);return r.kind===`default`?`${bS()}.${gS[0]}`:r.path}function CS(e){return wS(e).join(`
158
+ `)||null}function wS(e){switch(e.kind){case`file`:case`default`:return e.unchecked.map(e=>`Config location could not be checked: ${e.path} — ${e.error}`);case`missing`:return[`Config file not found: ${e.path} — rendering the bundled default until it appears`];case`unreadable`:return[`Config file could not be read: ${e.path} — ${e.error} — rendering the bundled default until it can be`]}}function TS(e,t){let n=yS(e,t).filter(e=>_S(e)===`present`),r=new Map;for(let e of n){let t=c.dirname(e),n=c.basename(e).replace(/\.(json5|json)$/,``),i=c.join(t,n);r.has(i)||r.set(i,[]),r.get(i).push(e)}let i=[...r.values()].filter(e=>e.length>1);return i.length===0?null:`config-extension collision: ${i.map(e=>{let[t,...n]=e;return`${t} shadows ${n.join(`, `)}`}).join(`; `)} — remove the duplicate`}function ES(e,t,n){return e===null?{...OS,config:Ys(OS.raw,t)}:DS(e,r.readFileSync(e,`utf-8`),t,n)}function DS(e,t,n,r){let i={source:t,...jS(e,t,r,Tl(n))};return{...i,config:Ys(i.raw,n)}}const OS={raw:{},source:``,warnings:[]};function kS({config:e,raw:t,source:n},r=`<config>`,i=new Set(Sa())){let a=[],o={source:n,issues:a,allowedPalettes:i,groups:[]};if(oS(o,e,t),mS(o,e),a.length>0)throw new Wo(r,a);return Py(Xb(e))}function AS(e,t,n=new Set(Sa()),r=MS){return jS(e,t,n,r).raw}function jS(e,t,n,r){let i=NS(e,t),a=qo(e,t),o=a===null?[]:[a],s=[],c={source:t,issues:s,allowedPalettes:n??new Set(Sa()),groups:[]};if(!hs(i))throw new Wo(e,[{path:``,message:`Config root must be an object, got ${gs(i)}`}],o);let l=PS(c,i,r);if(s.length>0)throw new Wo(e,s,o);return{raw:l,warnings:o}}const MS=new Set;function NS(e,t){try{return Xe.default.parse(t)}catch(t){let n=t;throw new Wo(e,[{path:``,message:`JSON5 syntax error: ${n.message}`,line:n.lineNumber,col:n.columnNumber}])}}function PS(e,t,n){for(let n of Object.keys(t))FS.has(n)||e.issues.push({path:n,message:`Unknown top-level key "${n}". Expected one of: ${[...FS].join(`, `)}`,line:W(e.source,[n])});let r={};return t.globals!==void 0&&(r.globals=Cc(e,`globals`,t.globals)),t.variables!==void 0&&(r.variables=Uc(e,`variables`,t.variables)),t.segments!==void 0&&(r.segments=El(e,t.segments,n)),t.layout!==void 0&&e.issues.push({path:`layout`,message:`"layout" is no longer supported — use "root" with the A-grammar instead.
157
159
  Replace: layout: [["seg1", "seg2"], ["seg3"]]
158
160
  With: root: { v: [{ h: ["seg1", "seg2"] }, "seg3"] }
159
- Single-row example: root: { h: ["seg1", "seg2"] }`,line:W(e.source,[`layout`])}),t.root!==void 0&&(r.root=Gl(e,`root`,t.root)),t.actions!==void 0&&(r.actions=zb(e,t.actions)),t.looks!==void 0&&(r.looks=Tx(e,t.looks)),t.presets!==void 0&&(r.presets=Dx(e,t.presets)),t.editGlobals!==void 0&&(r.editGlobals=wc(e,`editGlobals`,t.editGlobals)),t.helpers!==void 0&&(r.helpers=Ox(e,t.helpers)),$l(e,r),ng(e,r),dg(e,r),bl(e,r,gl,`the global settings menu`),r}const xS=new Set([`globals`,`variables`,`segments`,`layout`,`root`,`actions`,`looks`,`presets`,`editGlobals`,`helpers`]);function SS(e){let t=ES(e.termCols),n=ES(e.termRows),r=DS(e.ssh),i=wS(e.tmux),a=CS(e.configEnv);return{...t!==void 0&&{termCols:t},...n!==void 0&&{termRows:n},...r!==void 0&&{ssh:r},...i!==void 0&&{tmux:i},...a!==void 0&&{configEnv:a}}}function CS(e){return typeof e==`string`&&e!==``?iS(e):void 0}function wS(e){if(e===null)return null;if(typeof e!=`object`)return;let{socket:t,pane:n,truecolor:r}=e;if(!(typeof t!=`string`||t===``)&&!(typeof n!=`string`||n===``)&&!(r!==null&&(typeof r!=`string`||r===``)))return{socket:t,pane:n,truecolor:r}}const TS=1e4;function ES(e){if(typeof e!=`number`||!Number.isFinite(e))return;let t=Math.floor(e);if(!(t<=0))return t>TS?TS:t}function DS(e){return typeof e==`boolean`?e:void 0}var OS=class extends Error{constructor(e){super(e),this.name=`ProtocolError`}};function kS(e){let t=Buffer.from(JSON.stringify(e),`utf8`),n=Buffer.alloc(4);return n.writeUInt32BE(t.length,0),Buffer.concat([n,t])}function AS(e,t){let n=Buffer.alloc(0);return function(r){for(n=Buffer.concat([n,r]);n.length>=4;){let r=n.readUInt32BE(0);if(r>16777216){t(new OS(`frame too large: ${r}`));return}if(n.length<4+r)return;let i=n.subarray(4,4+r);n=n.subarray(4+r);try{e(JSON.parse(i.toString(`utf8`)))}catch(e){let n=new OS(e instanceof Error?e.message:String(e));e instanceof Error&&(n.cause=e),t(n);return}}}}function jS(e,t,n){return new Promise((r,i)=>{let a=!1,o=t=>{if(!a){a=!0,clearTimeout(s),e.removeAllListeners();try{t()}catch{}}},s=setTimeout(()=>{o(()=>{e.destroy(),i(Error(`TIMEOUT`))})},n),c=AS(e=>o(()=>r(e)),e=>o(()=>i(e)));e.on(`data`,c),e.on(`error`,e=>o(()=>i(e))),e.on(`close`,()=>o(()=>i(Error(`socket closed before response`)))),e.write(kS(t))})}async function MS(e,t,n){let r=null;try{r=await LS(Ne(),t.connectMs);let i=await jS(r,{v:3,...e},t.budgetMs);return FS(e.kind,i,n)}catch(e){return IS(e)}finally{r&&r.destroy()}}function NS(e,t){return typeof e==`string`?e:t}function PS(e){return typeof e==`number`&&Number.isInteger(e)&&e>=0?e:0}function FS(e,t,n){let r=t;if(r.ok===!0){let r=n(t);return r===void 0?{kind:`permanent`,cause:`malformed_response`,message:`ok response without payload for "${e}" request`}:{kind:`ok`,value:r}}let i=NS(r.error,`(no error message)`);switch(r.code){case`VERSION_MISMATCH`:return{kind:`permanent`,cause:`version_mismatch`,clientV:3,daemonV:PS(r.daemonV)};case`TIMEOUT`:return{kind:`transient`,cause:`timeout`,message:i};case`BAD_REQUEST`:return{kind:`permanent`,cause:`bad_request`,message:i};case`RENDER_FAILED`:return{kind:`permanent`,cause:`render_failed`,message:i};default:return{kind:`permanent`,cause:`malformed_response`,message:`unknown error code: ${String(r.code)}`}}}function IS(e){if(e instanceof OS||e instanceof SyntaxError)return{kind:`permanent`,cause:`malformed_response`,message:e instanceof Error?e.message:String(e)};let t=e instanceof Error?e.message:String(e);return t===`CONNECT_TIMEOUT`||t===`TIMEOUT`?{kind:`transient`,cause:`timeout`,message:t}:t.includes(`ECONNREFUSED`)||t.includes(`ENOENT`)||t.includes(`ENOTSOCK`)?{kind:`transient`,cause:`unreachable`,message:t}:{kind:`transient`,cause:`io_error`,message:t}}function LS(e,t){return new Promise((n,r)=>{let i=g.createConnection({path:e}),a=setTimeout(()=>{i.destroy(),r(Error(`CONNECT_TIMEOUT`))},t);i.once(`connect`,()=>{clearTimeout(a),n(i)}),i.once(`error`,e=>{clearTimeout(a),r(e)})})}function RS(e){if(e.kind===`transient`)return`daemon unavailable (${e.cause}: ${e.message})\nHint: daemon may not be running. Run \`cc-candybar\` once to spawn it.`;switch(e.cause){case`version_mismatch`:{let t=e.daemonV===0?`unknown`:`v${e.daemonV}`;return`daemon protocol mismatch (client v${e.clientV} ≠ daemon ${t})`}case`bad_request`:case`render_failed`:case`malformed_response`:return`daemon error (${e.cause}): ${e.message}`}}const zS={connectMs:50,budgetMs:150},BS={connectMs:50,budgetMs:200};function VS(e){let t=e.output;return typeof t==`string`?t:void 0}function HS(e,t,n,r){return MS({kind:`render`,hookData:e,args:t,cwd:n,...r},zS,VS)}function US(e,t){return MS({kind:`click`,verb:e,value:t},BS,VS)}let WS=null;function GS(e){if(WS!==null)return WS;r.mkdirSync(c.dirname(e),{recursive:!0});try{WS=r.statSync(e).size}catch{WS=0}return WS}function KS(e){for(let t=2;t>=1;t--){let n=`${e}.${t}`,i=`${e}.${t+1}`;try{r.renameSync(n,i)}catch{}}try{r.renameSync(e,`${e}.1`)}catch{}WS=0}function Q(e,t){let n=`${new Date().toISOString()} [${e}] ${t}\n`;try{let e=Ge(),t=GS(e);r.appendFileSync(e,n),WS=t+Buffer.byteLength(n,`utf8`),WS>=5242880&&KS(e)}catch(e){WS=null;try{process.stderr.write(`${n}cc-candybar: daemon.log unwritable: ${e.message}\n`)}catch{}}}function qS(e){let t=[];for(let n of e){let e=n.read();if(e.kind===`text`)return`# memory report from: ${n.name}\n${e.text}`;t.push(`# ${n.name}: unavailable — ${e.reason}`)}return[`# memory report: no probe answered`,...t.length>0?t:[`# no probe is known for this platform`]].join(`
160
- `)}function JS(e,t){return e===`darwin`?[YS(`footprint`,[`-p`,String(t)]),YS(`vmmap`,[`--summary`,String(t)])]:e===`linux`?[XS(`/proc/self/smaps_rollup`),XS(`/proc/self/status`)]:[]}function YS(e,t){return{name:`${e} ${t.join(` `)}`,read:()=>{let n=Ee({bin:e,args:[...t],timeoutMs:5e3,category:`limits.memory-report`});return n.ok?n.stdout.trim().length>0?{kind:`text`,text:n.stdout}:{kind:`unavailable`,reason:`exited 0 but printed nothing`}:{kind:`unavailable`,reason:`${n.reason}${n.error===void 0?``:`: ${n.error}`}${ZS(n.stderr)}`}}}}function XS(e){return{name:e,read:()=>{try{let t=r.readFileSync(e,`utf8`);return t.trim().length>0?{kind:`text`,text:t}:{kind:`unavailable`,reason:`empty file`}}catch(e){return{kind:`unavailable`,reason:e.message}}}}}function ZS(e){let t=e.split(`
161
- `).map(e=>e.trim()).find(e=>e.length>0);return t===void 0?``:` (${t})`}const QS=`CC_CANDYBAR_RSS_LIMIT_MB`;function $S(e){let t=e[QS];if(t===void 0)return 512;let n=/^\d+$/.test(t)?Number(t):NaN;if(!Number.isSafeInteger(n)||n<=0)throw Error(`${QS} must be a positive integer (MB), got ${JSON.stringify(t)}`);return n}function eC(e){return $S(e)*2}const tC=1024*1024;function nC(e){return $S(e)*tC}const rC={memoryReport:{prefix:`memory-`,suffix:`.txt`},heapSnapshot:{prefix:`heap-`,suffix:`.heapsnapshot`}};function iC(e,t,n){let{prefix:r,suffix:i}=rC[t];return c.join(e,`${r}${n}${i}`)}function aC(e){for(let t of Object.keys(rC)){let{prefix:n,suffix:r}=rC[t];if(e.startsWith(n)&&e.endsWith(r))return t}return null}function oC(e){let t=e.rssLimitBytes??512*tC,n=e.snapshotsKeep??3,r=!1;function i(){if(r)return!0;let{rss:i,heapTotal:a}=e.memoryBytes();if(i<=t)return!1;r=!0,e.log(`warn`,`RSS ${i} > limit ${t} (v8 heap ${a}); recording memory then shutting down`);let o=`${new Date(e.now()).toISOString().replace(/[:.]/g,`-`)}-${e.pid}`;return sC(e.log,`memory report`,()=>{let t=iC(e.snapshotDir,`memoryReport`,o);e.writeMemoryReport(t,e.captureMemoryReport()),e.log(`info`,`memory report written: ${t}`)}),sC(e.log,`heap snapshot`,()=>{let t=iC(e.snapshotDir,`heapSnapshot`,o);e.log(`info`,`heap snapshot written: ${e.writeHeapSnapshot(t)}`)}),sC(e.log,`artifact rotation`,()=>{lC(e.listArtifacts(),n,e.removeFile)}),e.shutdown(0),!0}function a(){let{rss:n,heapTotal:r}=e.memoryBytes();return n>t*.75?`rss ${n} approaching limit ${t} (v8 heap ${r})`:null}function o(e=6e4){let t=setInterval(()=>{i()},e);return t.unref(),{disarm:()=>clearInterval(t)}}return{checkRss:i,describeNextRestart:a,arm:o}}function sC(e,t,n){try{n()}catch(n){e(`warn`,`${t} failed: ${n.message}`)}}function cC(e){let t=e.slice(e.lastIndexOf(`/`)+1),n=aC(t);if(n===null)return t;let{prefix:r,suffix:i}=rC[n];return t.slice(r.length,t.length-i.length)}function lC(e,t,n){let r=new Map;for(let t of e){let e=cC(t),n=r.get(e);n===void 0?r.set(e,[t]):n.push(t)}let i=[...r.keys()].sort((e,t)=>t.localeCompare(e));for(let e of i.slice(t))for(let t of r.get(e)??[])try{n(t)}catch{}}function uC(e,t,n={}){let i=Me();return{now:()=>Date.now(),pid:process.pid,snapshotDir:i,log:Q,memoryBytes:()=>{let e=process.memoryUsage();return{rss:e.rss,heapTotal:e.heapTotal}},captureMemoryReport:()=>qS(JS(process.platform,process.pid)),writeMemoryReport:(e,t)=>r.writeFileSync(e,t,{mode:384}),writeHeapSnapshot:e=>C.writeHeapSnapshot(e),listArtifacts:()=>{try{return r.readdirSync(i).filter(e=>aC(e)!==null).map(e=>c.join(i,e))}catch{return[]}},removeFile:e=>r.unlinkSync(e),shutdown:t,startedAtMs:e,...n}}function dC(e={}){if(DC()!==null)return;let n=e.spawn??OC,r=wC();if(r.kind===`contended`){let e=pC();e!==null&&e>2e3&&(t.stderr.write(`cc-candybar: spawn-lock held ${e}ms (likely crashed holder) — spawning unlocked\n`),fC(n));return}if(r.kind===`error`){t.stderr.write(`cc-candybar: spawn-lock unavailable (${r.reason}) — spawning unlocked\n`),fC(n);return}try{fC(n)}finally{EC()}}function fC(e){bC()&&mC(e)}function pC(){try{let e=r.statSync(Ve());return Date.now()-e.mtimeMs}catch{return null}}function mC(e){try{e()||t.stderr.write(`cc-candybar: daemon spawn returned false (unable to resolve script path?)
162
- `)}catch(e){t.stderr.write(`cc-candybar: daemon spawn failed: ${e.message}\n`)}}function hC(e,t){return e===null?{kind:`allow`}:e<-1e4?{kind:`allow-future-garbage`,futureMs:-e}:e<t?{kind:`deny`}:{kind:`allow`}}function gC(e){return Math.min(3e3*2**Math.min(Math.max(e,0),5),6e4)}function _C(e){try{let t=r.readFileSync(e,`utf8`).trim(),n=Number(t);return!Number.isInteger(n)||n<0?0:Math.min(n,5)}catch{return 0}}function vC(e,n){try{r.mkdirSync(c.dirname(e),{recursive:!0}),r.writeFileSync(e,String(n),{mode:384})}catch(e){t.stderr.write(`cc-candybar: could not record spawn.backoff: ${e.message}\n`)}}function yC(){try{r.unlinkSync(Ue())}catch(e){e.code!==`ENOENT`&&t.stderr.write(`cc-candybar: could not reset spawn.backoff: ${e.message}\n`)}}function bC(){let e=He(),n=Ue(),r=_C(n),i=hC(xC(e),gC(r));return i.kind===`deny`?!1:(i.kind===`allow-future-garbage`&&t.stderr.write(`cc-candybar: spawn.cooldown mtime is ${i.futureMs}ms in the future — ignoring and spawning\n`),SC(e),vC(n,Math.min(r+1,5)),!0)}function xC(e){try{return Date.now()-r.statSync(e).mtimeMs}catch{return null}}function SC(e){try{r.mkdirSync(c.dirname(e),{recursive:!0}),r.writeFileSync(e,`${t.pid} ${Date.now()}\n`,{mode:384})}catch(e){t.stderr.write(`cc-candybar: could not record spawn.cooldown: ${e.message}\n`)}}let CC=null;function wC(){let e=Ve();for(let n=0;n<2;n++){try{let n=r.openSync(e,`wx`,384);try{r.writeSync(n,JSON.stringify({pid:t.pid,ts:Date.now()}))}catch{}return CC={fd:n,path:e},{kind:`held`}}catch(t){let n=t.code;if(n!==`EEXIST`)return{kind:`error`,reason:`openSync(${e}): ${n??t.message}`}}if(!TC(e))return{kind:`contended`};try{r.unlinkSync(e)}catch(e){if(e.code!==`ENOENT`)return{kind:`error`,reason:`unlink stale spawn.lock: ${e.message}`}}}return{kind:`contended`}}function TC(e){try{let t=r.statSync(e);return Date.now()-t.mtimeMs>1e4}catch{return!0}}function EC(){if(!CC)return;let{fd:e,path:t}=CC;CC=null;try{r.closeSync(e)}catch{}try{r.unlinkSync(t)}catch{}}function DC(){try{return r.mkdirSync(Me(),{recursive:!0}),null}catch(e){return`mkdir ${Me()}: ${e.message}`}}function OC(){let e=t.execPath,n=t.argv[1];return n?De({bin:e,args:[`--max-old-space-size=${eC(t.env)}`,n,`daemon`],category:`daemon-spawn`}).ok:!1}const kC=`cc-candybar`,AC=`dispatch`,jC=`set-state`,MC=`step-state`,NC=`copy`,PC=`open-vscode`,FC=`toolbar-toggle`,IC=`show-config-error`,LC=`show-config-warning`,RC=`set-config`,zC=`step-config`,BC=`save`,VC=`reset-config`,HC=`apply-layout-op`,UC=`undo`,WC=`redo`,GC=`apply-update`,KC=`doctor-run`,qC=`doctor-fix`;function JC(e){return e.map(encodeURIComponent).join(`/`)}function YC(e){return e.length===0?[]:e.split(`/`).map(decodeURIComponent)}function XC(e){return`${kC}://${AC}/${e.map(e=>`e=${encodeURIComponent(`${e.verb}/${JC(e.args)}`)}`).join(`&`)}`}function ZC(e){return new te(e).getAll(`e`).map(ew)}function QC(e){return e.reduce((e,t)=>{let n=e.at(-1),r=n&&$C(n,t);return r?[...e.slice(0,-1),r]:[...e,t]},[])}function $C(e,t){if(e.verb!==`set-state`||t.verb!==`set-state`)return;let[n,r]=[ew(e.value),ew(t.value)];return n.verb===r.verb?{verb:jC,value:`${n.verb}/${n.value}/${r.value}`}:void 0}function ew(e){let t=e.indexOf(`/`);return t===-1?{verb:e,value:``}:{verb:e.slice(0,t),value:e.slice(t+1)}}const tw=`1.85.0`;function nw(){return c.join(f.homedir(),`.claude`,`settings.json`)}const rw=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/;function iw(e){let t=rw.exec(e);return t?{kind:`ok`,value:[Number(t[1]),Number(t[2]),Number(t[3])]}:{kind:`failed`,reason:`"${e}" is not a release version (expected MAJOR.MINOR.PATCH)`}}function aw(e){return e.join(`.`)}function ow([e,t,n],[r,i,a]){return e-r||t-i||n-a}const sw=`@promptctl/cc-candybar`;async function cw(e,t,n){let r=`${n}/-/package/${encodeURIComponent(e)}/dist-tags`;try{let e=await t(r,{signal:AbortSignal.timeout(5e3)});if(!e.ok)return X(`registry responded ${e.status} for ${r}`);let n=await e.json();return typeof n.latest==`string`?iw(n.latest):Y}catch(e){return X(e instanceof Error?e.message:String(e))}}function lw(e,t){let n=iw(e);if(n.kind===`failed`)return{kind:`unchecked`,installed:e,reason:n.reason};switch(t.kind){case`failed`:return{kind:`unchecked`,installed:e,reason:t.reason};case`absent`:return{kind:`unchecked`,installed:e,reason:"the registry lists no `latest` dist-tag"};case`ok`:{let e=ow(n.value,t.value);return e<0?{kind:`stale`,installed:n.value,latest:t.value}:e>0?{kind:`ahead`,installed:n.value,latest:t.value}:{kind:`current`,installed:n.value}}}}function uw(e,t){switch(t.kind){case`current`:return{stream:`stdout`,text:`✓ cc-candybar ${aw(t.installed)} is the latest release.\n`};case`ahead`:return{stream:`stdout`,text:`cc-candybar ${aw(t.installed)} is newer than the registry's latest release (${aw(t.latest)}): an unpublished build.\n`};case`stale`:{let n=aw(t.latest);return{stream:`stderr`,text:`⚠ cc-candybar ${aw(t.installed)} was staged, but the latest release is ${n}.\n pnpm's release-age gate (minimumReleaseAge) and its dlx cache can both\n resolve \`@latest\` to an older release without saying so.\n To install ${n} now, name it explicitly:\n pnpm dlx ${e}@${n} install\n`}}case`unchecked`:return{stream:`stderr`,text:`⚠ Could not check for a cc-candybar release newer than ${t.installed} (${t.reason}); the registry check was skipped.\n`}}}const dw=`CCCandybarURLHandler`,fw=[],pw={"darwin-arm64":`@promptctl/cc-candybar-darwin-arm64`,"darwin-x64":`@promptctl/cc-candybar-darwin-x64`,"linux-x64":`@promptctl/cc-candybar-linux-x64`,"linux-arm64":`@promptctl/cc-candybar-linux-arm64`};function mw(e){return/^[A-Za-z0-9_./=,:-]+$/.test(e)?e:`'${e.replace(/'/g,`'\\''`)}'`}function hw(e,t){return[e,...t].map(mw).join(` `)}function gw(){return c.join(f.homedir(),`Applications`,`${dw}.app`)}function _w(){if(process.platform!==`darwin`)throw Error(`URL handler installation requires macOS (found platform: ${process.platform}).`)}function vw(){if(process.platform===`darwin`)return c.join(f.homedir(),`Library`,`Application Support`,`CCCandybar`);let e=process.env.XDG_DATA_HOME??c.join(f.homedir(),`.local`,`share`);return c.join(e,`cc-candybar`)}function yw(){return c.join(vw(),`bin`,`cc-candybar`)}function bw(){return c.join(vw(),`dist`,`index.mjs`)}function xw(e,t){return[`on open location L`,`\tdo shell script "'${e.replace(/"/g,`\\"`)}' '${t.replace(/"/g,`\\"`)}' url-handle " & quoted form of L`,`end open location`].join(`
163
- `)}function Sw(e){if(!e)throw Error(`install: process.argv[1] not set`);return e.endsWith(`.mjs`)||e.endsWith(`.js`)?e:c.resolve(c.dirname(e),`..`,`dist`,`index.mjs`)}function Cw(t){let n=pw[`${process.platform}-${process.arch}`];if(n){let r=e(t);try{return{kind:`native`,sourcePath:r.resolve(`${n}/bin/cc-candybar`)}}catch{}}return{kind:`node-shim`,sourcePath:c.resolve(c.dirname(t),`..`,`bin`,`cc-candybar`)}}function ww(e,t){c.resolve(e)!==c.resolve(t)&&r.copyFileSync(e,t)}function Tw(e){let t=r.openSync(e,`r`);try{let n=Buffer.alloc(2),i=r.readSync(t,n,0,2,0);if(i<2)throw Error(`install: staged render entry at ${e} is truncated (${i} byte(s)). Re-run: pnpm dlx ${sw}@latest install`);return n.toString(`latin1`)===`#!`?`node-shim`:`native`}finally{r.closeSync(t)}}function Ew(){let e=Sw(process.argv[1]);if(!r.existsSync(e))throw Error(`install: bundled dist not found at ${e}. Reinstall the package.`);let t=Cw(e);if(!r.existsSync(t.sourcePath))throw Error(`install: render entry not found at ${t.sourcePath}. Reinstall the package.`);r.mkdirSync(c.dirname(bw()),{recursive:!0}),r.mkdirSync(c.dirname(yw()),{recursive:!0}),ww(e,bw()),ww(t.sourcePath,yw()),r.chmodSync(yw(),493),r.rmSync(c.join(vw(),`url-handler.mjs`),{force:!0});let n=Tw(yw());return process.stdout.write(`Staged cc-candybar v${tw} runtime at ${vw()}\n`+(n===`native`?` render entry: native binary (${process.platform}-${process.arch})\n`:` render entry: node shim (no native binary for ${process.platform}-${process.arch}; renders are correct but pay node startup)\n`)),{binPath:yw(),distPath:bw(),entryKind:n}}function Dw(){return[{key:`CFBundleIdentifier`,xml:`<string>com.cccandybar.url-handler</string>`},{key:`CFBundleURLTypes`,xml:[`<array>`,` <dict>`,` <key>CFBundleURLName</key>`,` <string>Claude Powerline Click Action</string>`,` <key>CFBundleURLSchemes</key>`,` <array>`,` <string>${kC}</string>`,` </array>`,` </dict>`,`</array>`].join(`
164
- `)}]}function Ow(e){let t=gw();r.mkdirSync(c.dirname(t),{recursive:!0}),r.existsSync(t)&&r.rmSync(t,{recursive:!0,force:!0}),process.stdout.write(`Building ${t}\n`);let n=Ee({bin:`/usr/bin/osacompile`,args:[`-o`,t,`-e`,xw(process.execPath,e)],category:`install.osacompile`});if(!n.ok)throw process.stderr.write(n.stderr),Error(`osacompile failed (${n.reason})`);let i=c.join(t,`Contents`,`Info.plist`);for(let{key:e}of Dw())Ee({bin:`/usr/bin/plutil`,args:[`-remove`,e,i],category:`install.plutil`});for(let{key:e,xml:t}of Dw()){let n=Ee({bin:`/usr/bin/plutil`,args:[`-insert`,e,`-xml`,t,i],category:`install.plutil`});if(!n.ok)throw process.stderr.write(n.stderr),Error(`plutil -insert ${e} failed (${n.reason})`)}process.stdout.write(`Registering ${kC}:// with Launch Services\n`);let a=Ee({bin:`/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister`,args:[`-f`,t],category:`install.lsregister`});if(!a.ok)throw process.stderr.write(a.stderr),Error(`lsregister failed (${a.reason})`);process.stdout.write(`✓ ${dw}.app installed and registered.\n`),process.stdout.write(` Test: open '${kC}://hello-world' && pbpaste\n`)}function kw(){_w(),Ow(Ew().distPath)}function Aw(e,t=kC){let n=`${t}://`;if(!e.startsWith(n))throw Error(`expected ${n} scheme, got: ${e}`);let r=e.slice(n.length),i=r.indexOf(`/`);return i===-1?{verb:NC,value:r}:{verb:decodeURIComponent(r.slice(0,i)),value:r.slice(i+1)}}async function jw(e){e||(process.stderr.write(`url-handle: missing URL argument.
165
- `),process.exit(1));let t;try{t=Aw(e)}catch(e){process.stderr.write(`url-handle: ${e instanceof Error?e.message:String(e)}\n`),process.exit(1)}let n=await US(t.verb,t.value);n.kind===`ok`&&process.exit(0),n.kind===`transient`&&(dC(),process.stderr.write(`url-handle: daemon unavailable (${n.cause}: ${n.message})\n`),process.exit(1)),process.stderr.write(Mw(n)+`
166
- `),process.exit(1)}function Mw(e){switch(e.cause){case`version_mismatch`:return`url-handle: daemon rejected click (version mismatch: client v${e.clientV} ≠ daemon v${e.daemonV})`;case`bad_request`:return`url-handle: daemon rejected click (bad request: ${e.message})`;case`render_failed`:return`url-handle: daemon rejected click (handler failed: ${e.message})`;case`malformed_response`:return`url-handle: daemon rejected click (malformed response: ${e.message})`}}function Nw(){return`✓ install complete.
161
+ Single-row example: root: { h: ["seg1", "seg2"] }`,line:W(e.source,[`layout`])}),t.root!==void 0&&(r.root=Yl(e,`root`,t.root)),t.actions!==void 0&&(r.actions=$b(e,t.actions)),t.looks!==void 0&&(r.looks=Bx(e,t.looks)),t.presets!==void 0&&(r.presets=Hx(e,t.presets)),t.editGlobals!==void 0&&(r.editGlobals=Ec(e,`editGlobals`,t.editGlobals)),t.helpers!==void 0&&(r.helpers=Ux(e,t.helpers)),ru(e,r),og(e,r),hg(e,r),Sl(e,r,vl,`the global settings menu`),r}const FS=new Set([`globals`,`variables`,`segments`,`layout`,`root`,`actions`,`looks`,`presets`,`editGlobals`,`helpers`]);function IS(e){let t=BS(e.termCols),n=BS(e.termRows),r=VS(e.ssh),i=RS(e.tmux),a=LS(e.configEnv);return{...t!==void 0&&{termCols:t},...n!==void 0&&{termRows:n},...r!==void 0&&{ssh:r},...i!==void 0&&{tmux:i},...a!==void 0&&{configEnv:a}}}function LS(e){return typeof e==`string`&&e!==``?vS(e):void 0}function RS(e){if(e===null)return null;if(typeof e!=`object`)return;let{socket:t,pane:n,truecolor:r}=e;if(!(typeof t!=`string`||t===``)&&!(typeof n!=`string`||n===``)&&!(r!==null&&(typeof r!=`string`||r===``)))return{socket:t,pane:n,truecolor:r}}const zS=1e4;function BS(e){if(typeof e!=`number`||!Number.isFinite(e))return;let t=Math.floor(e);if(!(t<=0))return t>zS?zS:t}function VS(e){return typeof e==`boolean`?e:void 0}var HS=class extends Error{constructor(e){super(e),this.name=`ProtocolError`}};function US(e){let t=Buffer.from(JSON.stringify(e),`utf8`),n=Buffer.alloc(4);return n.writeUInt32BE(t.length,0),Buffer.concat([n,t])}function WS(e,t){let n=Buffer.alloc(0);return function(r){for(n=Buffer.concat([n,r]);n.length>=4;){let r=n.readUInt32BE(0);if(r>16777216){t(new HS(`frame too large: ${r}`));return}if(n.length<4+r)return;let i=n.subarray(4,4+r);n=n.subarray(4+r);try{e(JSON.parse(i.toString(`utf8`)))}catch(e){let n=new HS(e instanceof Error?e.message:String(e));e instanceof Error&&(n.cause=e),t(n);return}}}}function GS(e,t,n){return new Promise((r,i)=>{let a=!1,o=t=>{if(!a){a=!0,clearTimeout(s),e.removeAllListeners();try{t()}catch{}}},s=setTimeout(()=>{o(()=>{e.destroy(),i(Error(`TIMEOUT`))})},n),c=WS(e=>o(()=>r(e)),e=>o(()=>i(e)));e.on(`data`,c),e.on(`error`,e=>o(()=>i(e))),e.on(`close`,()=>o(()=>i(Error(`socket closed before response`)))),e.write(US(t))})}async function KS(e,t,n){let r=null;try{r=await ZS(Ne(),t.connectMs);let i=await GS(r,{v:3,...e},t.budgetMs);return YS(e.kind,i,n)}catch(e){return XS(e)}finally{r&&r.destroy()}}function qS(e,t){return typeof e==`string`?e:t}function JS(e){return typeof e==`number`&&Number.isInteger(e)&&e>=0?e:0}function YS(e,t,n){let r=t;if(r.ok===!0){let r=n(t);return r===void 0?{kind:`permanent`,cause:`malformed_response`,message:`ok response without payload for "${e}" request`}:{kind:`ok`,value:r}}let i=qS(r.error,`(no error message)`);switch(r.code){case`VERSION_MISMATCH`:return{kind:`permanent`,cause:`version_mismatch`,clientV:3,daemonV:JS(r.daemonV)};case`TIMEOUT`:return{kind:`transient`,cause:`timeout`,message:i};case`BAD_REQUEST`:return{kind:`permanent`,cause:`bad_request`,message:i};case`RENDER_FAILED`:return{kind:`permanent`,cause:`render_failed`,message:i};default:return{kind:`permanent`,cause:`malformed_response`,message:`unknown error code: ${String(r.code)}`}}}function XS(e){if(e instanceof HS||e instanceof SyntaxError)return{kind:`permanent`,cause:`malformed_response`,message:e instanceof Error?e.message:String(e)};let t=e instanceof Error?e.message:String(e);return t===`CONNECT_TIMEOUT`||t===`TIMEOUT`?{kind:`transient`,cause:`timeout`,message:t}:t.includes(`ECONNREFUSED`)||t.includes(`ENOENT`)||t.includes(`ENOTSOCK`)?{kind:`transient`,cause:`unreachable`,message:t}:{kind:`transient`,cause:`io_error`,message:t}}function ZS(e,t){return new Promise((n,r)=>{let i=g.createConnection({path:e}),a=setTimeout(()=>{i.destroy(),r(Error(`CONNECT_TIMEOUT`))},t);i.once(`connect`,()=>{clearTimeout(a),n(i)}),i.once(`error`,e=>{clearTimeout(a),r(e)})})}function QS(e){if(e.kind===`transient`)return`daemon unavailable (${e.cause}: ${e.message})\nHint: daemon may not be running. Run \`cc-candybar\` once to spawn it.`;switch(e.cause){case`version_mismatch`:{let t=e.daemonV===0?`unknown`:`v${e.daemonV}`;return`daemon protocol mismatch (client v${e.clientV} ≠ daemon ${t})`}case`bad_request`:case`render_failed`:case`malformed_response`:return`daemon error (${e.cause}): ${e.message}`}}const $S={connectMs:50,budgetMs:150},eC={connectMs:50,budgetMs:200};function tC(e){let t=e.output;return typeof t==`string`?t:void 0}function nC(e,t,n,r){return KS({kind:`render`,hookData:e,args:t,cwd:n,...r},$S,tC)}function rC(e,t){return KS({kind:`click`,verb:e,value:t},eC,tC)}let iC=null;function aC(e){if(iC!==null)return iC;r.mkdirSync(c.dirname(e),{recursive:!0});try{iC=r.statSync(e).size}catch{iC=0}return iC}function oC(e){for(let t=2;t>=1;t--){let n=`${e}.${t}`,i=`${e}.${t+1}`;try{r.renameSync(n,i)}catch{}}try{r.renameSync(e,`${e}.1`)}catch{}iC=0}function Q(e,t){let n=`${new Date().toISOString()} [${e}] ${t}\n`;try{let e=Ge(),t=aC(e);r.appendFileSync(e,n),iC=t+Buffer.byteLength(n,`utf8`),iC>=5242880&&oC(e)}catch(e){iC=null;try{process.stderr.write(`${n}cc-candybar: daemon.log unwritable: ${e.message}\n`)}catch{}}}function sC(e){let t=[];for(let n of e){let e=n.read();if(e.kind===`text`)return`# memory report from: ${n.name}\n${e.text}`;t.push(`# ${n.name}: unavailable — ${e.reason}`)}return[`# memory report: no probe answered`,...t.length>0?t:[`# no probe is known for this platform`]].join(`
162
+ `)}function cC(e,t){return e===`darwin`?[lC(`footprint`,[`-p`,String(t)]),lC(`vmmap`,[`--summary`,String(t)])]:e===`linux`?[uC(`/proc/self/smaps_rollup`),uC(`/proc/self/status`)]:[]}function lC(e,t){return{name:`${e} ${t.join(` `)}`,read:()=>{let n=Ee({bin:e,args:[...t],timeoutMs:5e3,category:`limits.memory-report`});return n.ok?n.stdout.trim().length>0?{kind:`text`,text:n.stdout}:{kind:`unavailable`,reason:`exited 0 but printed nothing`}:{kind:`unavailable`,reason:`${n.reason}${n.error===void 0?``:`: ${n.error}`}${dC(n.stderr)}`}}}}function uC(e){return{name:e,read:()=>{try{let t=r.readFileSync(e,`utf8`);return t.trim().length>0?{kind:`text`,text:t}:{kind:`unavailable`,reason:`empty file`}}catch(e){return{kind:`unavailable`,reason:e.message}}}}}function dC(e){let t=e.split(`
163
+ `).map(e=>e.trim()).find(e=>e.length>0);return t===void 0?``:` (${t})`}const fC=`CC_CANDYBAR_RSS_LIMIT_MB`;function pC(e){let t=e[fC];if(t===void 0)return 512;let n=/^\d+$/.test(t)?Number(t):NaN;if(!Number.isSafeInteger(n)||n<=0)throw Error(`${fC} must be a positive integer (MB), got ${JSON.stringify(t)}`);return n}function mC(e){return pC(e)*2}const hC=1024*1024;function gC(e){return pC(e)*hC}const _C={memoryReport:{prefix:`memory-`,suffix:`.txt`},heapSnapshot:{prefix:`heap-`,suffix:`.heapsnapshot`}};function vC(e,t,n){let{prefix:r,suffix:i}=_C[t];return c.join(e,`${r}${n}${i}`)}function yC(e){for(let t of Object.keys(_C)){let{prefix:n,suffix:r}=_C[t];if(e.startsWith(n)&&e.endsWith(r))return t}return null}function bC(e){let t=e.rssLimitBytes??512*hC,n=e.snapshotsKeep??3,r=!1;function i(){if(r)return!0;let{rss:i,heapTotal:a}=e.memoryBytes();if(i<=t)return!1;r=!0,e.log(`warn`,`RSS ${i} > limit ${t} (v8 heap ${a}); recording memory then shutting down`);let o=`${new Date(e.now()).toISOString().replace(/[:.]/g,`-`)}-${e.pid}`;return xC(e.log,`memory report`,()=>{let t=vC(e.snapshotDir,`memoryReport`,o);e.writeMemoryReport(t,e.captureMemoryReport()),e.log(`info`,`memory report written: ${t}`)}),xC(e.log,`heap snapshot`,()=>{let t=vC(e.snapshotDir,`heapSnapshot`,o);e.log(`info`,`heap snapshot written: ${e.writeHeapSnapshot(t)}`)}),xC(e.log,`artifact rotation`,()=>{CC(e.listArtifacts(),n,e.removeFile)}),e.shutdown(0),!0}function a(){let{rss:n,heapTotal:r}=e.memoryBytes();return n>t*.75?`rss ${n} approaching limit ${t} (v8 heap ${r})`:null}function o(e=6e4){let t=setInterval(()=>{i()},e);return t.unref(),{disarm:()=>clearInterval(t)}}return{checkRss:i,describeNextRestart:a,arm:o}}function xC(e,t,n){try{n()}catch(n){e(`warn`,`${t} failed: ${n.message}`)}}function SC(e){let t=e.slice(e.lastIndexOf(`/`)+1),n=yC(t);if(n===null)return t;let{prefix:r,suffix:i}=_C[n];return t.slice(r.length,t.length-i.length)}function CC(e,t,n){let r=new Map;for(let t of e){let e=SC(t),n=r.get(e);n===void 0?r.set(e,[t]):n.push(t)}let i=[...r.keys()].sort((e,t)=>t.localeCompare(e));for(let e of i.slice(t))for(let t of r.get(e)??[])try{n(t)}catch{}}function wC(e,t,n={}){let i=Me();return{now:()=>Date.now(),pid:process.pid,snapshotDir:i,log:Q,memoryBytes:()=>{let e=process.memoryUsage();return{rss:e.rss,heapTotal:e.heapTotal}},captureMemoryReport:()=>sC(cC(process.platform,process.pid)),writeMemoryReport:(e,t)=>r.writeFileSync(e,t,{mode:384}),writeHeapSnapshot:e=>C.writeHeapSnapshot(e),listArtifacts:()=>{try{return r.readdirSync(i).filter(e=>yC(e)!==null).map(e=>c.join(i,e))}catch{return[]}},removeFile:e=>r.unlinkSync(e),shutdown:t,startedAtMs:e,...n}}function TC(e={}){if(VC()!==null)return;let n=e.spawn??HC,r=RC();if(r.kind===`contended`){let e=DC();e!==null&&e>2e3&&(t.stderr.write(`cc-candybar: spawn-lock held ${e}ms (likely crashed holder) — spawning unlocked\n`),EC(n));return}if(r.kind===`error`){t.stderr.write(`cc-candybar: spawn-lock unavailable (${r.reason}) — spawning unlocked\n`),EC(n);return}try{EC(n)}finally{BC()}}function EC(e){PC()&&OC(e)}function DC(){try{let e=r.statSync(Ve());return Date.now()-e.mtimeMs}catch{return null}}function OC(e){try{e()||t.stderr.write(`cc-candybar: daemon spawn returned false (unable to resolve script path?)
164
+ `)}catch(e){t.stderr.write(`cc-candybar: daemon spawn failed: ${e.message}\n`)}}function kC(e,t){return e===null?{kind:`allow`}:e<-1e4?{kind:`allow-future-garbage`,futureMs:-e}:e<t?{kind:`deny`}:{kind:`allow`}}function AC(e){return Math.min(3e3*2**Math.min(Math.max(e,0),5),6e4)}function jC(e){try{let t=r.readFileSync(e,`utf8`).trim(),n=Number(t);return!Number.isInteger(n)||n<0?0:Math.min(n,5)}catch{return 0}}function MC(e,n){try{r.mkdirSync(c.dirname(e),{recursive:!0}),r.writeFileSync(e,String(n),{mode:384})}catch(e){t.stderr.write(`cc-candybar: could not record spawn.backoff: ${e.message}\n`)}}function NC(){try{r.unlinkSync(Ue())}catch(e){e.code!==`ENOENT`&&t.stderr.write(`cc-candybar: could not reset spawn.backoff: ${e.message}\n`)}}function PC(){let e=He(),n=Ue(),r=jC(n),i=kC(FC(e),AC(r));return i.kind===`deny`?!1:(i.kind===`allow-future-garbage`&&t.stderr.write(`cc-candybar: spawn.cooldown mtime is ${i.futureMs}ms in the future — ignoring and spawning\n`),IC(e),MC(n,Math.min(r+1,5)),!0)}function FC(e){try{return Date.now()-r.statSync(e).mtimeMs}catch{return null}}function IC(e){try{r.mkdirSync(c.dirname(e),{recursive:!0}),r.writeFileSync(e,`${t.pid} ${Date.now()}\n`,{mode:384})}catch(e){t.stderr.write(`cc-candybar: could not record spawn.cooldown: ${e.message}\n`)}}let LC=null;function RC(){let e=Ve();for(let n=0;n<2;n++){try{let n=r.openSync(e,`wx`,384);try{r.writeSync(n,JSON.stringify({pid:t.pid,ts:Date.now()}))}catch{}return LC={fd:n,path:e},{kind:`held`}}catch(t){let n=t.code;if(n!==`EEXIST`)return{kind:`error`,reason:`openSync(${e}): ${n??t.message}`}}if(!zC(e))return{kind:`contended`};try{r.unlinkSync(e)}catch(e){if(e.code!==`ENOENT`)return{kind:`error`,reason:`unlink stale spawn.lock: ${e.message}`}}}return{kind:`contended`}}function zC(e){try{let t=r.statSync(e);return Date.now()-t.mtimeMs>1e4}catch{return!0}}function BC(){if(!LC)return;let{fd:e,path:t}=LC;LC=null;try{r.closeSync(e)}catch{}try{r.unlinkSync(t)}catch{}}function VC(){try{return r.mkdirSync(Me(),{recursive:!0}),null}catch(e){return`mkdir ${Me()}: ${e.message}`}}function HC(){let e=t.execPath,n=t.argv[1];return n?De({bin:e,args:[`--max-old-space-size=${mC(t.env)}`,n,`daemon`],category:`daemon-spawn`}).ok:!1}const UC=`cc-candybar`,WC=`dispatch`,GC=`set-state`,KC=`step-state`,qC=`copy`,JC=`open-vscode`,YC=`toolbar-toggle`,XC=`show-config-error`,ZC=`show-config-warning`,QC=`set-config`,$C=`step-config`,ew=`save`,tw=`save-preset`,nw=`delete-preset`,rw=`reset-config`,iw=`apply-layout-op`,aw=`undo`,ow=`redo`,sw=`apply-update`,cw=`doctor-run`,lw=`doctor-fix`;function uw(e){return e.map(encodeURIComponent).join(`/`)}function dw(e){return e.length===0?[]:e.split(`/`).map(decodeURIComponent)}function fw(e){return`${UC}://${WC}/${e.map(e=>`e=${encodeURIComponent(`${e.verb}/${uw(e.args)}`)}`).join(`&`)}`}function pw(e){return new te(e).getAll(`e`).map(_w)}const mw=new Set([GC,rw]);function hw(e){return e.reduce((e,t)=>{let n=e.at(-1),r=n&&gw(n,t);return r?[...e.slice(0,-1),r]:[...e,t]},[])}function gw(e,t){if(e.verb!==t.verb||!mw.has(e.verb))return;let[n,r]=[_w(e.value),_w(t.value)];return n.verb===r.verb?{verb:e.verb,value:`${n.verb}/${n.value}/${r.value}`}:void 0}function _w(e){let t=e.indexOf(`/`);return t===-1?{verb:e,value:``}:{verb:e.slice(0,t),value:e.slice(t+1)}}const vw=`1.87.0`;function yw(){return c.join(f.homedir(),`.claude`,`settings.json`)}const bw=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/;function xw(e){let t=bw.exec(e);return t?{kind:`ok`,value:[Number(t[1]),Number(t[2]),Number(t[3])]}:{kind:`failed`,reason:`"${e}" is not a release version (expected MAJOR.MINOR.PATCH)`}}function Sw(e){return e.join(`.`)}function Cw([e,t,n],[r,i,a]){return e-r||t-i||n-a}const ww=`@promptctl/cc-candybar`;async function Tw(e,t,n){let r=`${n}/-/package/${encodeURIComponent(e)}/dist-tags`;try{let e=await t(r,{signal:AbortSignal.timeout(5e3)});if(!e.ok)return X(`registry responded ${e.status} for ${r}`);let n=await e.json();return typeof n.latest==`string`?xw(n.latest):Y}catch(e){return X(e instanceof Error?e.message:String(e))}}function Ew(e,t){let n=xw(e);if(n.kind===`failed`)return{kind:`unchecked`,installed:e,reason:n.reason};switch(t.kind){case`failed`:return{kind:`unchecked`,installed:e,reason:t.reason};case`absent`:return{kind:`unchecked`,installed:e,reason:"the registry lists no `latest` dist-tag"};case`ok`:{let e=Cw(n.value,t.value);return e<0?{kind:`stale`,installed:n.value,latest:t.value}:e>0?{kind:`ahead`,installed:n.value,latest:t.value}:{kind:`current`,installed:n.value}}}}function Dw(e,t){switch(t.kind){case`current`:return{stream:`stdout`,text:`✓ cc-candybar ${Sw(t.installed)} is the latest release.\n`};case`ahead`:return{stream:`stdout`,text:`cc-candybar ${Sw(t.installed)} is newer than the registry's latest release (${Sw(t.latest)}): an unpublished build.\n`};case`stale`:{let n=Sw(t.latest);return{stream:`stderr`,text:`⚠ cc-candybar ${Sw(t.installed)} was staged, but the latest release is ${n}.\n pnpm's release-age gate (minimumReleaseAge) and its dlx cache can both\n resolve \`@latest\` to an older release without saying so.\n To install ${n} now, name it explicitly:\n pnpm dlx ${e}@${n} install\n`}}case`unchecked`:return{stream:`stderr`,text:`⚠ Could not check for a cc-candybar release newer than ${t.installed} (${t.reason}); the registry check was skipped.\n`}}}const Ow=`CCCandybarURLHandler`,kw=[],Aw={"darwin-arm64":`@promptctl/cc-candybar-darwin-arm64`,"darwin-x64":`@promptctl/cc-candybar-darwin-x64`,"linux-x64":`@promptctl/cc-candybar-linux-x64`,"linux-arm64":`@promptctl/cc-candybar-linux-arm64`};function jw(e){return/^[A-Za-z0-9_./=,:-]+$/.test(e)?e:`'${e.replace(/'/g,`'\\''`)}'`}function Mw(e,t){return[e,...t].map(jw).join(` `)}function Nw(){return c.join(f.homedir(),`Applications`,`${Ow}.app`)}function Pw(){if(process.platform!==`darwin`)throw Error(`URL handler installation requires macOS (found platform: ${process.platform}).`)}function Fw(){if(process.platform===`darwin`)return c.join(f.homedir(),`Library`,`Application Support`,`CCCandybar`);let e=process.env.XDG_DATA_HOME??c.join(f.homedir(),`.local`,`share`);return c.join(e,`cc-candybar`)}function Iw(){return c.join(Fw(),`bin`,`cc-candybar`)}function Lw(){return c.join(Fw(),`dist`,`index.mjs`)}function Rw(e,t){return[`on open location L`,`\tdo shell script "'${e.replace(/"/g,`\\"`)}' '${t.replace(/"/g,`\\"`)}' url-handle " & quoted form of L`,`end open location`].join(`
165
+ `)}function zw(e){if(!e)throw Error(`install: process.argv[1] not set`);return e.endsWith(`.mjs`)||e.endsWith(`.js`)?e:c.resolve(c.dirname(e),`..`,`dist`,`index.mjs`)}function Bw(t){let n=Aw[`${process.platform}-${process.arch}`];if(n){let r=e(t);try{return{kind:`native`,sourcePath:r.resolve(`${n}/bin/cc-candybar`)}}catch{}}return{kind:`node-shim`,sourcePath:c.resolve(c.dirname(t),`..`,`bin`,`cc-candybar`)}}function Vw(e,t){c.resolve(e)!==c.resolve(t)&&r.copyFileSync(e,t)}function Hw(e){let t=r.openSync(e,`r`);try{let n=Buffer.alloc(2),i=r.readSync(t,n,0,2,0);if(i<2)throw Error(`install: staged render entry at ${e} is truncated (${i} byte(s)). Re-run: pnpm dlx ${ww}@latest install`);return n.toString(`latin1`)===`#!`?`node-shim`:`native`}finally{r.closeSync(t)}}function Uw(){let e=zw(process.argv[1]);if(!r.existsSync(e))throw Error(`install: bundled dist not found at ${e}. Reinstall the package.`);let t=Bw(e);if(!r.existsSync(t.sourcePath))throw Error(`install: render entry not found at ${t.sourcePath}. Reinstall the package.`);r.mkdirSync(c.dirname(Lw()),{recursive:!0}),r.mkdirSync(c.dirname(Iw()),{recursive:!0}),Vw(e,Lw()),Vw(t.sourcePath,Iw()),r.chmodSync(Iw(),493),r.rmSync(c.join(Fw(),`url-handler.mjs`),{force:!0});let n=Hw(Iw());return process.stdout.write(`Staged cc-candybar v${vw} runtime at ${Fw()}\n`+(n===`native`?` render entry: native binary (${process.platform}-${process.arch})\n`:` render entry: node shim (no native binary for ${process.platform}-${process.arch}; renders are correct but pay node startup)\n`)),{binPath:Iw(),distPath:Lw(),entryKind:n}}function Ww(){return[{key:`CFBundleIdentifier`,xml:`<string>com.cccandybar.url-handler</string>`},{key:`CFBundleURLTypes`,xml:[`<array>`,` <dict>`,` <key>CFBundleURLName</key>`,` <string>Claude Powerline Click Action</string>`,` <key>CFBundleURLSchemes</key>`,` <array>`,` <string>${UC}</string>`,` </array>`,` </dict>`,`</array>`].join(`
166
+ `)}]}function Gw(e){let t=Nw();r.mkdirSync(c.dirname(t),{recursive:!0}),r.existsSync(t)&&r.rmSync(t,{recursive:!0,force:!0}),process.stdout.write(`Building ${t}\n`);let n=Ee({bin:`/usr/bin/osacompile`,args:[`-o`,t,`-e`,Rw(process.execPath,e)],category:`install.osacompile`});if(!n.ok)throw process.stderr.write(n.stderr),Error(`osacompile failed (${n.reason})`);let i=c.join(t,`Contents`,`Info.plist`);for(let{key:e}of Ww())Ee({bin:`/usr/bin/plutil`,args:[`-remove`,e,i],category:`install.plutil`});for(let{key:e,xml:t}of Ww()){let n=Ee({bin:`/usr/bin/plutil`,args:[`-insert`,e,`-xml`,t,i],category:`install.plutil`});if(!n.ok)throw process.stderr.write(n.stderr),Error(`plutil -insert ${e} failed (${n.reason})`)}process.stdout.write(`Registering ${UC}:// with Launch Services\n`);let a=Ee({bin:`/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister`,args:[`-f`,t],category:`install.lsregister`});if(!a.ok)throw process.stderr.write(a.stderr),Error(`lsregister failed (${a.reason})`);process.stdout.write(`✓ ${Ow}.app installed and registered.\n`),process.stdout.write(` Test: open '${UC}://hello-world' && pbpaste\n`)}function Kw(){Pw(),Gw(Uw().distPath)}function qw(e,t=UC){let n=`${t}://`;if(!e.startsWith(n))throw Error(`expected ${n} scheme, got: ${e}`);let r=e.slice(n.length),i=r.indexOf(`/`);return i===-1?{verb:qC,value:r}:{verb:decodeURIComponent(r.slice(0,i)),value:r.slice(i+1)}}async function Jw(e){e||(process.stderr.write(`url-handle: missing URL argument.
167
+ `),process.exit(1));let t;try{t=qw(e)}catch(e){process.stderr.write(`url-handle: ${e instanceof Error?e.message:String(e)}\n`),process.exit(1)}let n=await rC(t.verb,t.value);n.kind===`ok`&&process.exit(0),n.kind===`transient`&&(TC(),process.stderr.write(`url-handle: daemon unavailable (${n.cause}: ${n.message})\n`),process.exit(1)),process.stderr.write(Yw(n)+`
168
+ `),process.exit(1)}function Yw(e){switch(e.cause){case`version_mismatch`:return`url-handle: daemon rejected click (version mismatch: client v${e.clientV} ≠ daemon v${e.daemonV})`;case`bad_request`:return`url-handle: daemon rejected click (bad request: ${e.message})`;case`render_failed`:return`url-handle: daemon rejected click (handler failed: ${e.message})`;case`malformed_response`:return`url-handle: daemon rejected click (malformed response: ${e.message})`}}function Xw(){return`✓ install complete.
167
169
  Restart Claude Code to pick up the new statusline.
168
- Tip: every bar carries a settings menu — click it (${Zs} by\n default) for quick actions, preset switching, edit mode, and clickable\n theme/look/style/wrap/padding controls.\n`}async function Pw(e){let t=e.includes(`--force`),n=e.filter(e=>e!==`--force`),r=n.length>0?n:[...fw],i=Ew();process.platform===`darwin`?Ow(i.distPath):process.stdout.write(`Skipping URL handler (cmd-click verbs are macOS-only).
169
- `),Fw(i.binPath,r,t),process.stdout.write(Nw());let a=uw(sw,lw(tw,await cw(sw,fetch,`https://registry.npmjs.org`)));process[a.stream].write(a.text)}function Fw(e,t,n,i){let a=i??nw();r.mkdirSync(c.dirname(a),{recursive:!0});let o={};if(r.existsSync(a))try{o=JSON.parse(r.readFileSync(a,`utf-8`))}catch(e){throw Error(`Could not parse ${a}: ${e instanceof Error?e.message:String(e)}`)}let s=o.statusLine?.command,l=[e,mw(e)],u=typeof s==`string`&&(s.startsWith(`pnpm dlx @promptctl/cc-candybar@`)||l.some(e=>s===e||s.startsWith(`${e} `)));if(s&&!u&&!n){process.stderr.write(`Skipping settings.json update: existing statusLine.command appears customized.\n Current: ${s}\n To overwrite, re-run with --force.\n`);return}o.statusLine={type:`command`,command:hw(e,t)},ke(a,JSON.stringify(o,null,2)),process.stdout.write(`Updated ${a}\n`)}function Iw(e,t){return e.kind===`owned`?t(e.pid,e.startTime)?{kind:`attach-and-exit`,reason:`live owner pid=${e.pid} holds the socket`}:{kind:`reclaim`,reason:`owner pid=${e.pid} is gone or recycled`}:e.kind===`absent`?{kind:`reclaim`,reason:`no lease — stale socket, no live owner`}:{kind:`reclaim`,reason:`unreadable lease (${e.detail}) — cannot prove a live owner`}}function Lw(e){let t;try{t=r.readFileSync(e,`utf8`)}catch(e){return e.code===`ENOENT`?{kind:`absent`}:{kind:`unreadable`,detail:`read failed: ${e.message}`}}let n;try{n=JSON.parse(t)}catch(e){return{kind:`unreadable`,detail:`bad JSON: ${e.message}`}}let i=n,a=i?.pid;if(typeof a!=`number`||!Number.isInteger(a)||a<=0)return{kind:`unreadable`,detail:`no valid pid (got ${JSON.stringify(a)})`};let o=i?.startTime;return o!=null&&typeof o!=`string`?{kind:`unreadable`,detail:`invalid startTime (got ${JSON.stringify(o)})`}:{kind:`owned`,pid:a,startTime:o??null}}function Rw(e,n){let i=`${e}.${t.pid}.tmp`;try{return r.writeFileSync(i,JSON.stringify(n),{mode:384}),r.renameSync(i,e),null}catch(e){let t=e.message;try{r.unlinkSync(i)}catch(e){if(e.code!==`ENOENT`)return`${t}; also failed to remove temp ${i}: ${e.message}`}return t}}function zw(e,t){let n=Lw(e);if(n.kind===`owned`&&n.pid===t)try{r.unlinkSync(e)}catch{}}function Bw(e){try{let t=r.statSync(e);return{kind:`present`,identity:{dev:t.dev,ino:t.ino}}}catch(e){return e.code===`ENOENT`?{kind:`absent`}:{kind:`unreadable`,detail:e.message}}}function Vw(e,t,n,r){let i=Hw(e,t);return i===null?r.kind===`owned`?r.pid===n?{kind:`owned`}:{kind:`displaced`,reason:`lease reassigned (names pid=${r.pid}, we are pid=${n}) — a reclaimer overwrote it`}:{kind:`displaced`,reason:`lease not held (${r.kind}) — no longer the socket owner`}:{kind:`displaced`,reason:i}}function Hw(e,t){return t.kind===`present`?t.identity.dev===e.dev&&t.identity.ino===e.ino?null:`socket replaced (bound dev=${e.dev} ino=${e.ino}, now dev=${t.identity.dev} ino=${t.identity.ino})`:t.kind===`absent`?`socket path gone (ENOENT) — unlinked by a reclaimer`:`socket path unreadable (${t.detail}) — cannot prove ownership`}function Uw(e){let t=!1;function n(){let n=Vw(e.bound,e.readIdentity(),e.myPid,e.readLease());return n.kind===`displaced`&&!t&&(t=!0,e.log(`warn`,`ownership self-check: ${n.reason}; shutting down`),e.shutdown(0)),n}function r(t=e.intervalMs??5e3){let r=setInterval(()=>{n().kind===`displaced`&&clearInterval(r)},t);return r.unref(),{disarm:()=>clearInterval(r)}}return{check:n,arm:r}}function Ww(e,t=Ee){let n=t({bin:`ps`,args:[`-o`,`lstart=`,`-p`,String(e)],category:`process-fingerprint`,timeoutMs:2e3,env:{...process.env,LC_ALL:`C`,TZ:`UTC`}});if(n.ok){let e=n.stdout.trim();return e.length>0?{kind:`start`,token:e}:{kind:`unavailable`,detail:`ps produced no start-time`}}return{kind:`unavailable`,detail:n.reason===`spawn-error`?n.error??`ps spawn failed`:`ps ${n.reason} (exit ${n.exitCode})`}}function Gw(e,t,n){if(t===null)return n.pidAlive(e);let r=n.readStartTime(e);switch(r.kind){case`start`:return r.token===t;case`unavailable`:return n.pidAlive(e)}}function Kw(e,t=Ww){let n=t(e);return n.kind===`start`?n.token:null}const qw=`CC_CANDYBAR_PARENT_PID`;function Jw(e){let t=e[qw];if(t===void 0)return{kind:`outlives-nobody`};let n=Number.parseInt(t,10);if(!Number.isInteger(n)||n<=0)throw Error(`${qw} must be a positive integer pid, got ${JSON.stringify(t)}`);return{kind:`anchored`,pid:n}}function Yw(e){if(e.anchor.kind===`outlives-nobody`)return{disarm:()=>{}};let{pid:t}=e.anchor,n=setInterval(()=>{e.isAlive(t)||e.onOrphaned(`spawner pid ${t} gone`)},e.intervalMs??250);return n.unref(),{disarm:()=>clearInterval(n)}}function Xw(e){try{return t.kill(e,0),!0}catch(e){return e.code===`EPERM`}}function Zw(){let e=Number(process.env.CC_CANDYBAR_DAEMON_CEILING??``);return Number.isInteger(e)&&e>0?e:16}function Qw(e,t,n){return e?t>=n?{allow:!1,reason:`${t} live isolated daemons registered >= ceiling ${n}`}:{allow:!0,reason:`${t} live isolated daemons registered < ceiling ${n}`}:{allow:!0,reason:`canonical production socket — exempt (bind() already caps it to one)`}}function $w(e){try{return r.readdirSync(e).filter(e=>e.endsWith(`.json`)).map(t=>c.join(e,t))}catch{return[]}}function eT(e){let t;try{t=r.readFileSync(e,`utf8`)}catch{return null}try{let e=JSON.parse(t),n=e?.pid;return typeof n!=`number`||!Number.isInteger(n)||n<=0?null:{pid:n,startTime:typeof e?.startTime==`string`?e.startTime:null}}catch{return null}}function tT(e,t,n){let r=0;for(let i of e)t(i.identity.pid,i.identity.startTime)?r++:n(i.path);return r}function nT(e){if(!e.isolated)return{decision:Qw(!1,0,e.ceiling),registryPath:null};e.ensureDirSafe(e.registryDir);let t=[];for(let n of e.listFiles(e.registryDir)){let r=e.readEntry(n);r!==null&&r.pid!==e.pid&&t.push({path:n,identity:r})}let n=Qw(!0,tT(t,e.isSameLiveProcess,e.removeFile),e.ceiling);if(!n.allow)return{decision:n,registryPath:null};let r=c.join(e.registryDir,`pid-${e.pid}.json`);return e.writeEntry(r,{pid:e.pid,startTime:e.startTime}),{decision:n,registryPath:r}}function rT(e,t,n,r){let i=n(e);if(i!==null&&i.pid===t)try{r(e)}catch{}}function iT(e,t={}){return{isolated:!!process.env.CC_CANDYBAR_SOCKET,registryDir:Be(),ceiling:Zw(),pid:process.pid,startTime:e,isSameLiveProcess:(e,t)=>Gw(e,t,{readStartTime:Ww,pidAlive:Xw}),listFiles:$w,readEntry:eT,removeFile:e=>{try{r.unlinkSync(e)}catch{}},writeEntry:(e,t)=>{let n=`${e}.${t.pid}.tmp`;try{r.writeFileSync(n,JSON.stringify(t),{mode:384}),r.renameSync(n,e)}catch(e){try{r.unlinkSync(n)}catch(e){e.code}throw e}},ensureDirSafe:process.env.CC_CANDYBAR_DAEMON_REGISTRY_DIR?Pe:e=>{Pe(c.dirname(e)),Pe(e)},...t}}function aT(e){return e<32||e===127||e>=128&&e<=159}function oT(e){let t=``;for(let n of e)t+=aT(n.codePointAt(0)??0)?` `:n;return t.replace(/\s+/g,` `).trim()}function sT(e,t){let n=oT(e),r=``,i=0;for(let e of n){if(i===t)return r.replace(/.$/u,`…`);r+=e,i++}return r}const cT=`\x1B[38;2;255;255;255m`,lT=`\x1B[48;2;200;40;40m`;function uT(e){let t=/;2;(\d+);(\d+);(\d+)m$/.exec(e);if(t===null)throw Error(`diagnostic-style: not a 24-bit SGR: ${e}`);return`#`+t.slice(1,4).map(e=>Number(e).toString(16).padStart(2,`0`)).join(``)}const dT={fg:uT(cT),bg:uT(lT)},fT={fg:uT(`\x1B[38;2;0;0;0m`),bg:uT(`\x1B[48;2;220;160;40m`)},pT={unicode:hi,ascii:{glyph:`>`,divider:`|`,lead:`<`,tail:`>`}},mT={unicode:{},ascii:{left:`(`,right:`)`}};function hT(e,t,n){switch(e){case`capsule`:return new _i(mT[t]);case`plain`:return new vi(n===void 0?{}:{separator:n});case`powerline`:return new gi(pT[t]);default:return e}}const gT=new Map;function _T(e){let t=JSON.stringify([e.style,e.charset,e.separator??null]),n=gT.get(t);if(n!==void 0)return n;let r=hT(e.style,e.charset,e.separator),i=e=>new H(`x`,{end:``,noWrap:!0,style:new B({bgcolor:e})}),a=e=>new H(xi(new oi(e,r),{colorSystem:null}).replace(/\n$/,``)).cellLength,o=a([i(`#101010`)]),s={chrome:o-1,seam:a([i(`#101010`),i(`#202020`)])-o-1};return gT.set(t,s),s}function vT(e){return _T(e).chrome}function yT(e){return _T(e).seam}function bT(e,t){if(e.length===0)return``;let n=hT(t.style,t.charset,t.separator),r=t.colorCompatibility,i=t.wrap&&Number.isFinite(t.width)?xi(new Di([...e],{joiner:n}),{width:t.width,colorSystem:r}):xi(new oi([...e],n),{colorSystem:r});if(!i.endsWith(`
170
- `))throw Error(`renderStripCells: rich-js strip output did not end its last line`);return i.slice(0,-1)}function xT(e){return Math.min(20,e??20)}const ST={heading:`ERROR`,glyph:`⚠`,colors:dT},CT={heading:`WARNING`,glyph:`⚠`,colors:fT},wT={heading:`UPDATE`,glyph:`⬆`,colors:fT};function TT(e,t){return{text:oT(e),link:t}}function ET(e,t,n){let[r,...i]=[DT(e,ST,IC),t,DT(n,CT,LC)].flat();return r===void 0?null:{channels:[r,...i]}}function DT(e,t,n){let r=XC([{verb:n,args:[e]}]),[i,...a]=e.split(/\r\n|\r|\n/).map(e=>TT(e,r)).filter(e=>e.text!==``).map(e=>[e]);return i===void 0?[]:[{severity:t,message:e,lines:[i,...a]}]}function OT(e){return e.channels.map(e=>`${e.severity.heading}\n${e.message}\n`).join(`
171
- `)}function kT(e,t,n,r){if(t===null)return e;let i=AT(r),a=t.channels.flatMap(e=>jT(e,i)),o=n.failedConfigFile!==null||a.length>r.rowCap,s=a.slice(0,r.rowCap-Number(o)),c=o?[MT(t,n,a.length-s.length,i)]:[],l=[...s,...c].join(`
172
- `);return e?`${l}\n${e}`:l}function AT(e){return{style:`plain`,separator:``,width:e.width,wrap:!0,padding:0,charset:`unicode`,colorCompatibility:e.colorCompatibility}}function jT(e,t){let n=new B({bgcolor:e.severity.colors.bg,color:e.severity.colors.fg}),r=Lt(Math.max(2,t.width-1)),i=(e,t)=>new H(`${e} `,{style:t,end:``,noWrap:!0});return e.lines.flatMap((a,o)=>bT([i(o===0?e.severity.glyph:` `,n.withLink(a[0].link)),...a.flatMap(e=>{let t=n.withLink(e.link);return e.text.split(` `).flatMap(e=>Bt(e,r)).map(e=>i(e,t))})],t).split(`
173
- `))}function MT(e,t,n,r){let{colors:i}=e.channels[0].severity,{fullText:a,failedConfigFile:o}=t,s=new B({bgcolor:i.bg,color:i.fg}),c=(e,t)=>new H(e,{style:t,end:``,noWrap:!0}),l=n>0?[c(`${n} more rows · `,s),a.kind===`file`?c(`open full text`,s.withLink(ne(a.path).href)):c(`full text unavailable: ${oT(a.reason)}`,s)]:[],u=o===null?[]:[c(`${l.length>0?` · `:``}open `,s),c(oT(o),s.withLink(ne(o).href))],d=[c(`↳ `,s),...l,...u.slice(0,-1)],f=d.reduce((e,t)=>e+t.cellLength,0),p=u.slice(-1).map(e=>e.truncate(Math.max(1,r.width-f),{mode:`middle`})),m=H.fromFragments([...d,...p]).truncate(r.width);return m.noWrap=!0,bT([m],r)}const NT=e=>!e.startsWith(`.`)&&!e.endsWith(`~`);function PT(e,t){return t.isSymbolicLink()?Buffer.from(r.readlinkSync(e)):r.readFileSync(e)}function FT(e,t){return r.readdirSync(t).filter(NT).sort().flatMap(n=>{let i=c.join(t,n),a=r.lstatSync(i,{throwIfNoEntry:!1});return a===void 0?[]:a.isDirectory()?FT(e,i):[[c.relative(e,i).split(c.sep).join(`/`),PT(i,a)]]})}function IT(e){let t=ie.createHash(`sha256`);for(let[n,r]of FT(e,e))t.update(n).update(`\0`).update(r).update(`\0`);return t.digest(`hex`)}const LT=e=>e.slice(0,7);function RT(e){return c.dirname(c.dirname(e))}function zT(){return{version:tw,digest:`cb264621902cf98fa9464c94e1deceabcee43b74bf3e88f17d71a3e10dcfd69b`}}function BT(e){let t=JSON.parse(r.readFileSync(c.join(e,`package.json`),`utf8`)),n=typeof t==`object`&&t?t.version:void 0;if(typeof n!=`string`)throw Error(`${c.join(e,`package.json`)} has no version string`);return n}function VT(e,t){try{let n=RT(w(e)),i=c.join(n,`src`);if(!r.existsSync(i))return{kind:`not-source-checkout`};let a=t(),o=IT(i);return o===a.digest?{kind:`current`,root:n,stamp:a}:{kind:`stale`,root:n,source:{version:BT(n),digest:o},running:a}}catch(e){return{kind:`unchecked`,reason:e.message}}}var $=class extends Error{constructor(e){super(e),this.name=`BadVerbArgs`}};const HT=/^-?\d+$/;function UT(e,t,n){return e===void 0?t:Math.max(t,Math.min(n,e))}function WT(e,t,n=`set-state`){let r=e.filter(e=>e.includes(`/`));if(r.length>0)throw Error(`makeAllowListValidator(${t}): values contain "/" — the ${n} wire shape splits values on "/" so slash-bearing options cannot be addressed. Offending values: ${r.join(`, `)}`);if(e.includes(``))throw Error(`makeAllowListValidator(${t}): empty string is not a writable option — the validator rejects empty input before the allow-list check, so an "" in the allowed list could be rendered but never delivered. Remove "" from the allowed list.`);let i=new Set(e),a=[...e];return e=>e?i.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown ${t} "${e}" (have: ${a.join(`, `)})`}:{ok:!1,reason:`${t} value is required`}}function GT(e){return t=>{if(!t)return{ok:!1,reason:`${e} value is required`};if(!HT.test(t))return{ok:!1,reason:`${e} must be an integer, got "${t}"`};let n=t[0]===`-`,r=(n?t.slice(1):t).replace(/^0+/,``);return r===``?{ok:!0,value:`0`}:{ok:!0,value:n?`-${r}`:r}}}function KT(e,t,n){return r=>r?HT.test(r)?{ok:!0,value:String(Math.max(e,Math.min(t,parseInt(r,10))))}:{ok:!1,reason:`${n} must be an integer, got "${r}"`}:{ok:!1,reason:`${n} value is required`}}function qT(e,t,n=`state`){let r=t.filter(e=>e.kind===`range`),i=t.some(e=>e.kind===`int`),a=t.flatMap(e=>e.kind===`allow-list`?e.allowed:[]);if(r.length===0&&!i)return{kind:`allow-list`,allowed:[...new Set(a)]};let o=a.filter(e=>!HT.test(e));if(o.length>0)throw Error(`${n} action table: key "${e}" is an integer spec (a paged cursor or a bounded value) but a click writes non-integer value(s) to it (${o.join(`, `)}). A ${n} key has one key shape — point that click at a distinct key, or write an integer.`);if(i&&r.length>0)throw Error(`${n} action table: key "${e}" is declared as both a paged cursor (int) and a bounded value (range) — a ${n} key has one key shape. Use distinct keys.`);if(r.length>0){let t=Math.min(...r.map(e=>e.min)),i=Math.max(...r.map(e=>e.max)),o=a.filter(e=>{let n=parseInt(e,10);return n<t||n>i});if(o.length>0)throw Error(`${n} action table: key "${e}" is a bounded range [${t},${i}] but a click writes out-of-range value(s) to it (${o.join(`, `)}). The range gate would clamp them, storing a different value than the click renders — write an in-range integer, or point that click at a distinct key.`);return{kind:`range`,min:t,max:i,seed:UT(r[0].seed,t,i)}}return{kind:`int`}}function JT(e){return e===`config`?`set-config`:`set-state`}function YT(e,t,n){return t.kind===`int`?GT(`menu page "${e}"`):t.kind===`range`?KT(t.min,t.max,`${n} stepper "${e}"`):WT(t.allowed,`${n} "${e}"`,JT(n))}function XT(e,t=`state`){let n=new Map;for(let{key:t,spec:r}of e){let e=n.get(t);e?e.push(r):n.set(t,[r])}return[...n].map(([e,n])=>({key:e,spec:qT(e,n,t)}))}function ZT(e,t=`state`){let n=new Map(Object.entries(e).map(([e,t])=>[e,{validator:t,permanent:!0}]));function r(){let e=[];for(let[t,r]of n)r.permanent&&e.push(t);return e}return{register(e,i){if(!e)throw Error(`register: key is required`);if(e.includes(`/`))throw Error(`register: key "${e}" contains "/" — the wire shape splits on "/" so a slash-bearing key cannot be addressed. Use a slash-free key.`);let a=n.get(e);if(a){if(a.permanent)throw Error(`register: key "${e}" is a built-in ${t} key and cannot be re-claimed (built-in keys: ${[...r()].join(`, `)})`);let n=qT(e,[...a.specs,i],t);a.specs.push(i),a.merged=n,a.validator=YT(e,n,t)}else{let r=qT(e,[i],t);n.set(e,{permanent:!1,specs:[i],merged:r,validator:YT(e,r,t)})}let o=!0;return()=>{if(!o)return;o=!1;let r=n.get(e);if(!r||r.permanent)return;let a=r.specs.indexOf(i);a>=0&&r.specs.splice(a,1),r.specs.length===0?n.delete(e):(r.merged=qT(e,r.specs,t),r.validator=YT(e,r.merged,t))}},validate(e,r){let i=n.get(e);return i?i.validator(r):{ok:!1,reason:`unknown ${t} key "${e}" (have: ${[...n.keys()].join(`, `)})`}},listKeys(){return[...n.keys()]},listBaselineKeys(){return r()},rangeParamsFor(e){let t=n.get(e);if(!t||t.permanent||t.merged.kind!==`range`)return null;let{min:r,max:i,seed:a}=t.merged;return{min:r,max:i,seed:a}}}}const QT=ZT({},`config`);function $T(){return QT.listKeys()}function eE(e,t){return QT.validate(e,t)}function tE(e){return QT.rangeParamsFor(e)}function nE(e,t,n){return`persist`in e?`to`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:[e.to]}}]:`from`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:Ux(e.from,n).members}}]:`cycle`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:e.cycle}}]:`removeSegment`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:[Bv({op:`remove`,target:e.removeSegment})]}}]:`insertSegment`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:[Bv({op:`insert`,segment:e.insertSegment,anchor:e.anchor,relation:e.relation})]}}]:`insertSegmentFrom`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:Ux(e.insertSegmentFrom,n).members.map(t=>Bv({op:`insert`,segment:t,anchor:e.anchor,relation:e.relation}))}}]:[{key:e.persist,spec:{kind:`range`,min:e.min,max:e.max,seed:UT(t.get(e.persist),e.min,e.max)}}]:[]}function rE(e){return kc(e.globals)}function iE(e){let t=new Set;for(let n of Object.values(e.actions)){`reset`in n&&t.add(n.reset);let e=`persist`in n?ty(n.persist):null;e?.scope===`preset-root`&&t.add($v(e.preset))}return[...t].map(e=>({key:e,spec:{kind:`allow-list`,allowed:[]}}))}function aE(e){let t=rE(e),n=new Map([...Vx(e),...yy(e)]);return[...iE(e),...Object.values(e.actions).flatMap(e=>nE(e,t,n))]}function oE(e){return XT(aE(e),`config`)}function sE(e,t){return QT.register(e,t)}const cE=Sa(),lE=new Set(cE),uE=new Set(Ma),dE=e=>e?lE.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown theme "${e}" (have: ${cE.join(`, `)})`}:{ok:!1,reason:`theme name is required`},fE=e=>e?uE.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown style "${e}" (have: ${Ma.join(`, `)})`}:{ok:!1,reason:`style name is required`},pE=new Set([`1`,`true`]),mE=new Set([`0`,`false`]),hE=ZT({style:fE,theme:dE,"toolbar-expanded":e=>pE.has(e)?{ok:!0,value:`1`}:mE.has(e)?{ok:!0,value:``}:{ok:!1,reason:`expected boolean-ish (1, 0, true, false), got "${e}"`}});function gE(){return hE.listKeys()}function _E(e,t){return hE.register(e,t)}function vE(e,t){return hE.validate(e,t)}function yE(e){return hE.rangeParamsFor(e)}function bE(e,t,n){return`set`in e?`to`in e?[{key:e.set,spec:{kind:`allow-list`,allowed:[e.to]}}]:`from`in e?[{key:e.set,spec:{kind:`allow-list`,allowed:Ux(e.from,n).members}}]:`int`in e?[{key:e.set,spec:{kind:`int`}}]:`cycle`in e?[{key:e.set,spec:{kind:`allow-list`,allowed:e.cycle}}]:[{key:e.set,spec:{kind:`range`,min:e.min,max:e.max,seed:UT(t.get(e.set),e.min,e.max)}}]:[]}function xE(e){let t=new Set(hE.listBaselineKeys());return e.filter(e=>e.spec.kind!==`allow-list`||!t.has(e.key))}function SE(e){let t=new Map,n=/^-?\d+$/;for(let r of Object.values(e.variables)){if(r.kind!==`state`)continue;let e=r.default;e!==void 0&&n.test(e)&&t.set(r.key,parseInt(e,10))}for(let[n,r]of kc(e.globals))t.set(n,r);return t}function CE(e){let t=SE(e),n=Vx(e);return xE(Object.values(e.actions).flatMap(e=>bE(e,t,n)))}function wE(e){return XT(CE(e))}const TE=`update.dismissed`,EE=`updateNotice`;function DE(e){return e.kind===`source`?e.newer.digest:aw(e.newer)}const OE=e=>`${e.version} [${LT(e.digest)}]`;function kE(e){switch(e.kind){case`source`:return{headline:`Newer source`,newer:OE(e.newer),running:OE(e.running),act:`rebuild`,busy:`rebuilding…`,command:{bin:`pnpm`,args:[`build`],cwd:e.root}};case`release`:return{headline:`Newer release`,newer:aw(e.newer),running:aw(e.running),act:`upgrade`,busy:`upgrading…`,command:{bin:`pnpm`,args:[`dlx`,`${sw}@${aw(e.newer)}`,`install`]}}}}const AE={kind:`idle`},jE={kind:`running`};function ME(e,t,n){if(e===null)return[];let r=DE(e);if(!n.enabled||n.dismissed===r)return[];let i=kE(e),a=`${i.headline}: ${i.newer}. You're on ${i.running}.`,o=t.kind===`failed`&&t.identity===r?[`${i.act} failed: ${t.reason}`]:[],s=[a,...o].join(`
174
- `),c=XC([{verb:LC,args:[s]}]),l=t.kind===`running`?TT(`[${i.busy}]`,c):TT(`[${i.act}]`,XC([{verb:GC,args:[n.sessionId]}]));return[{severity:wT,message:s,lines:[[TT(a,c),l,TT(`[dismiss]`,XC([{verb:jC,args:[n.sessionId,TE,r]}])),TT(`[disable]`,XC([{verb:RC,args:[n.sessionId,EE,`false`]}]))],...o.map(e=>[TT(e,c)])]}]}function NE(e,t){return e.kind===`stale`?{kind:`source`,root:e.root,newer:e.source,running:e.running}:e.kind===`not-source-checkout`&&t!==null&&t.kind===`stale`?{kind:`release`,newer:t.latest,running:t.installed}:null}function PE(e){switch(e.kind){case`current`:return[`info`,`build: current ${OE(e.stamp)}`];case`stale`:return[`info`,`build: stale — source ${OE(e.source)}, running ${OE(e.running)}`];case`not-source-checkout`:return[`info`,`build: not a source checkout`];case`unchecked`:return[`warn`,`build: unchecked: ${e.reason}`]}}function FE(e){switch(e.kind){case`current`:return[`info`,`release: current ${aw(e.installed)}`];case`stale`:return[`info`,`release: stale — latest ${aw(e.latest)}, running ${aw(e.installed)}`];case`ahead`:return[`info`,`release: ahead — running ${aw(e.installed)}, latest ${aw(e.latest)}`];case`unchecked`:return[`warn`,`release: unchecked: ${e.reason}`]}}function IE(e){let t=null;return([n,r])=>{r!==t&&(t=r,e(n,r))}}const LE=e=>e.split(/\r?\n/).map(e=>e.trim()).filter(e=>e!==``).at(-1);function RE(e){let t=e.exitCode===null?``:` (exit ${e.exitCode})`,n=LE(e.stderr)??e.error??LE(e.stdout)??`no output`;return`${e.reason}${t}: ${n}`}function zE(e){let{entryUrl:t,intervalMs:n,releaseIntervalMs:r,registryUrl:i,fetchImpl:a,onApplied:o,log:s}=e,c={kind:`unchecked`,reason:`not sampled yet`},l=null,u=AE,d=null,f=IE(s),p=IE(s),m=()=>NE(c,l);function h(){let e=m(),t=e===null?null:DE(e);(d===null?null:d.identity)!==t&&(d?.dispose(),d=t===null?null:{identity:t,dispose:_E(TE,{kind:`allow-list`,allowed:[t]})})}function g(){c=VT(t,zT),f(PE(c)),h()}async function _(){l=lw(tw,await cw(sw,a,i)),p(FE(l)),h()}return{arm(){sE(EE,{kind:`allow-list`,allowed:[`false`]}),g(),setInterval(g,n).unref(),c.kind===`not-source-checkout`&&(_(),setInterval(()=>void _(),r).unref())},notice:e=>ME(m(),u,e),act(){let e=m();if(e===null)throw new $(`apply-update: nothing newer is known to apply`);let t=kE(e);if(u.kind===`running`)throw new $(`apply-update: already ${t.busy}`);u=jE,s(`info`,`apply-update: ${t.act} — ${t.command.bin} ${t.command.args?.join(` `)??``}`),Te({...t.command,category:`update.apply`,timeoutMs:6e5}).then(n=>{if(n.ok){u=AE,s(`info`,`apply-update: ${t.act} succeeded`),g(),o();return}let r=RE(n);u={kind:`failed`,identity:DE(e),reason:r},s(`error`,`apply-update: ${t.act} failed: ${r}`)})}}}var BE=class{static CACHE_DIR=O();static USAGE_CACHE_DIR=c.join(this.CACHE_DIR,`usage`);static LOCKS_DIR=c.join(this.CACHE_DIR,`locks`);static isLocked(e){let t=c.join(this.LOCKS_DIR,e);if(!r.existsSync(t))return!1;try{let n=r.readFileSync(t,`utf-8`),i=parseInt(n.trim(),10);if(isNaN(i))return D(`Invalid PID in lock file ${e}, removing stale lock`),r.unlinkSync(t),!1;try{return process.kill(i,0),!0}catch(n){return n.code===`ESRCH`?(D(`Removing stale lock file ${e} for dead process ${i}`),r.unlinkSync(t),!1):(D(`Error checking process ${i} for lock ${e}:`,n),!0)}}catch(t){return D(`Error reading lock file ${e}:`,t),!0}}static async acquireLock(e,t=5e3){await this.ensureCacheDirectories();let n=c.join(this.LOCKS_DIR,e),i=Date.now(),a=String(process.pid);for(;Date.now()-i<t;)try{return await r.promises.writeFile(n,a,{flag:`wx`}),D(`Lock acquired for ${e}`),!0}catch(e){if(e.code===`EEXIST`)await ae(50);else throw e}return D(`Failed to acquire lock for ${e} within ${t}ms`),!1}static async releaseLock(e){let t=c.join(this.LOCKS_DIR,e);try{await r.promises.unlink(t),D(`Lock released for ${e}`)}catch(t){t.code!==`ENOENT`&&D(`Error releasing lock for ${e}:`,t)}}static async ensureCacheDirectories(){try{await Promise.all([r.promises.mkdir(this.CACHE_DIR,{recursive:!0}),r.promises.mkdir(this.USAGE_CACHE_DIR,{recursive:!0}),r.promises.mkdir(this.LOCKS_DIR,{recursive:!0})])}catch(e){D(`Failed to create cache directories:`,e)}}static createProjectHash(e){return T(`md5`).update(e).digest(`hex`).substring(0,8)}static async getUsageCache(e,t){await this.ensureCacheDirectories();let n=c.join(this.USAGE_CACHE_DIR,`${e}.json`),i=`${e}.usage.lock`;for(let a=0;a<3;a++){if(this.isLocked(i)){D(`Cache for ${e} is locked, waiting...`),await ae(75);continue}try{let i=await r.promises.readFile(n,`utf-8`),a=JSON.parse(i);return!t||a.timestamp>=t?(D(`[CACHE-HIT] ${e} disk cache: found`),this.deserializeDates(a.data)):(D(`${e} cache outdated: cache=${a.timestamp}, latest=${t}`),null)}catch(t){if(t.code===`ENOENT`)return D(`No shared ${e} usage cache found`),null;D(`Attempt ${a+1} failed to read ${e} cache: ${t.message}. Retrying...`),await ae(75)}}return D(`Failed to read ${e} cache after 3 attempts.`),null}static deserializeDates(e){return Array.isArray(e)?e.map(e=>({...e,timestamp:new Date(e.timestamp)})):e}static async setUsageCache(e,t,n){let i=`${e}.usage.lock`;if(!await this.acquireLock(i)){D(`Could not acquire lock to set usage cache for ${e}`);return}try{await this.ensureCacheDirectories();let i=c.join(this.USAGE_CACHE_DIR,`${e}.json`),a=JSON.stringify({data:t,timestamp:n||Date.now()});await r.promises.writeFile(i,a,`utf-8`),D(`[CACHE-SET] ${e} disk cache stored`)}catch(t){D(`Failed to save ${e} usage cache:`,t)}finally{await this.releaseLock(i)}}};const VE={"claude-haiku-4-5-20251001":{name:`Claude Haiku 4.5`,input:1,output:5,cache_write_5m:1.25,cache_write_1h:2,cache_read:.1},"claude-haiku-4-5":{name:`Claude Haiku 4.5`,input:1,output:5,cache_write_5m:1.25,cache_write_1h:2,cache_read:.1},"claude-opus-4-20250514":{name:`Claude Opus 4`,input:15,output:75,cache_write_5m:18.75,cache_write_1h:30,cache_read:1.5},"claude-opus-4-1":{name:`Claude Opus 4.1`,input:15,output:75,cache_write_5m:18.75,cache_write_1h:30,cache_read:1.5},"claude-opus-4-1-20250805":{name:`Claude Opus 4.1`,input:15,output:75,cache_write_5m:18.75,cache_write_1h:30,cache_read:1.5},"claude-sonnet-4-20250514":{name:`Claude Sonnet 4`,input:3,output:15,cache_write_5m:3.75,cache_write_1h:6,cache_read:.3},"claude-4-opus-20250514":{name:`Claude 4 Opus`,input:15,output:75,cache_write_5m:18.75,cache_write_1h:30,cache_read:1.5},"claude-4-sonnet-20250514":{name:`Claude 4 Sonnet`,input:3,output:15,cache_write_5m:3.75,cache_write_1h:6,cache_read:.3},"claude-sonnet-4-5":{name:`Claude Sonnet 4.5`,input:3,output:15,cache_write_5m:3.75,cache_write_1h:6,cache_read:.3},"claude-sonnet-4-5-20250929":{name:`Claude Sonnet 4.5`,input:3,output:15,cache_write_5m:3.75,cache_write_1h:6,cache_read:.3},"claude-opus-4-5":{name:`Claude Opus 4.5`,input:5,output:25,cache_write_5m:6.25,cache_write_1h:10,cache_read:.5},"claude-opus-4-5-20251101":{name:`Claude Opus 4.5`,input:5,output:25,cache_write_5m:6.25,cache_write_1h:10,cache_read:.5},"claude-opus-4-6":{name:`Claude Opus 4.6`,input:5,output:25,cache_write_5m:6.25,cache_write_1h:10,cache_read:.5},"claude-opus-4-6-20260205":{name:`Claude Opus 4.6`,input:5,output:25,cache_write_5m:6.25,cache_write_1h:10,cache_read:.5},"claude-sonnet-4-6":{name:`Claude Sonnet 4.6`,input:3,output:15,cache_write_5m:3.75,cache_write_1h:6,cache_read:.3}};var HE=class{static executionCache=null;static modelPricingCache=new Map;static GITHUB_PRICING_URL=`https://raw.githubusercontent.com/promptctl/cc-candybar/main/pricing.json`;static async loadDiskCache(){let e=Date.now()-1440*60*1e3;return await BE.getUsageCache(`pricing`,e)}static async saveDiskCache(e){await BE.setUsageCache(`pricing`,e)}static async fetchPricingData(){return new Promise(e=>{let t=new ee(this.GITHUB_PRICING_URL),n=E({hostname:t.hostname,path:t.pathname,headers:{"User-Agent":`cc-candybar`,"Cache-Control":`no-cache`},timeout:5e3},t=>{if(t.statusCode!==200){D(`HTTP ${t.statusCode}: ${t.statusMessage}`),e(null);return}let r=``,i=0;t.on(`data`,t=>{if(i+=t.length,i>1048576){D(`Response too large`),n.destroy(),e(null);return}r+=t}),t.on(`end`,()=>{try{let t=JSON.parse(r),n=t._meta,i={};for(let[e,n]of Object.entries(t))e!==`_meta`&&(i[e]=n);this.validatePricingData(i)?(D(`Fetched fresh pricing from GitHub for ${Object.keys(i).length} models`),D(`Pricing last updated: ${n?.updated||`unknown`}`),e(i)):(D(`Invalid pricing data structure`),e(null))}catch(t){D(`Failed to parse JSON:`,t),e(null)}}),t.on(`error`,t=>{D(`Response error:`,t),e(null)})});n.on(`error`,t=>{D(`Request error:`,t),e(null)}),n.on(`timeout`,()=>{D(`Request timeout`),n.destroy(),e(null)}),n.end()})}static async getCurrentPricing(){if(this.executionCache!==null)return D(`[CACHE-HIT] Pricing execution cache: ${Object.keys(this.executionCache).length} models`),this.executionCache;let e=await this.loadDiskCache();if(e)return D(`[CACHE-HIT] Pricing disk cache: ${Object.keys(e).length} models`),this.executionCache=e,D(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(e).length} models`),e;let t=await this.fetchPricingData();return t?(await this.saveDiskCache(t),D(`[CACHE-SET] Pricing disk cache stored: ${Object.keys(t).length} models`),this.executionCache=t,D(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(t).length} models`),t):(D(`[CACHE-FALLBACK] Using offline pricing data: ${Object.keys(VE).length} models`),this.executionCache=VE,D(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(VE).length} models`),VE)}static validatePricingData(e){if(!e||typeof e!=`object`)return!1;for(let[,t]of Object.entries(e)){if(!t||typeof t!=`object`)return!1;let e=t;if(typeof e.input!=`number`||typeof e.output!=`number`||typeof e.cache_read!=`number`)return!1}return!0}static async getModelPricing(e){if(this.modelPricingCache.has(e))return D(`[CACHE-HIT] Model pricing cache: ${e}`),this.modelPricingCache.get(e);let t=await this.getCurrentPricing(),n;return n=t[e]?t[e]:this.fuzzyMatchModel(e,t),this.modelPricingCache.set(e,n),D(`[CACHE-SET] Model pricing cache: ${e}`),n}static fuzzyMatchModel(e,t){let n=e.toLowerCase();for(let[e,r]of Object.entries(t))if(e.toLowerCase()===n)return r;for(let{pattern:e,fallback:r}of[{pattern:[`opus-4-6`,`claude-opus-4-6`],fallback:`claude-opus-4-6-20260205`},{pattern:[`opus-4-5`,`claude-opus-4-5`],fallback:`claude-opus-4-5-20251101`},{pattern:[`opus-4-1`,`claude-opus-4-1`],fallback:`claude-opus-4-1-20250805`},{pattern:[`opus-4`,`claude-opus-4`],fallback:`claude-opus-4-20250514`},{pattern:[`sonnet-4-6`,`sonnet-4.6`,`claude-sonnet-4-6`],fallback:`claude-sonnet-4-6`},{pattern:[`sonnet-4.5`,`4-5-sonnet`,`sonnet-4-5`],fallback:`claude-sonnet-4-5-20250929`},{pattern:[`sonnet-4`,`claude-sonnet-4`],fallback:`claude-sonnet-4-20250514`},{pattern:[`haiku-4.5`,`4-5-haiku`,`haiku-4-5`],fallback:`claude-haiku-4-5-20251001`},{pattern:[`haiku`],fallback:`claude-haiku-4-5-20251001`},{pattern:[`opus`],fallback:`claude-opus-4-20250514`},{pattern:[`sonnet`],fallback:`claude-sonnet-4-5-20250929`}])if(e.some(e=>n.includes(e))&&t[r])return t[r];return t[`claude-sonnet-4-5-20250929`]||{name:`${e} (Unknown Model)`,input:3,cache_write_5m:3.75,cache_write_1h:6,cache_read:.3,output:15}}static async calculateCostForEntry(e){let t=e.message?.usage;if(!t)return 0;let n=this.extractModelId(e),r=await this.getModelPricing(n),i=t.input_tokens||0,a=t.output_tokens||0,o=t.cache_creation_input_tokens||0,s=t.cache_read_input_tokens||0,c=i/1e6*r.input,l=a/1e6*r.output,u=s/1e6*r.cache_read,d=o/1e6*r.cache_write_5m;return c+l+d+u}static extractModelId(e){if(e.model&&typeof e.model==`string`)return e.model;let t=e.message;if(t?.model){let e=t.model;if(typeof e==`string`)return e;let n=e;return(typeof n?.id==`string`?n.id:null)||`claude-sonnet-4-5-20250929`}return e.model_id&&typeof e.model_id==`string`?e.model_id:`claude-sonnet-4-5-20250929`}};function UE(e){if(!e)return 0;try{return o(e).mtimeMs}catch{return 0}}const WE=new class{slots;head=null;tail=null;constructor(e){this.slots=e}async run(e){await this.acquire();try{return await e()}finally{this.release()}}async acquire(){if(this.slots>0){this.slots--;return}await new Promise(e=>{let t={wake:e,next:null};this.tail?this.tail.next=t:this.head=t,this.tail=t})}release(){let e=this.head;if(!e){this.slots++;return}this.head=e.next,this.head||(this.tail=null),e.wake()}}(8);function GE(e){return((...t)=>WE.run(()=>e(...t)))}const KE=GE(y),qE=GE(v),JE=GE(b);async function YE(e,t){return WE.run(async()=>{let n=null;try{n=await _(e,`r`);let{size:r,mtimeMs:i,ino:a}=await n.stat(),o=t!==void 0&&(a!==t.ino||r<t.offset),s=o||t===void 0?0:t.offset;if(s>=r)return J({buf:Buffer.alloc(0),start:s,size:r,mtimeMs:i,ino:a,reset:o});let c=Buffer.alloc(r-s),l=0;for(;l<c.length;){let{bytesRead:e}=await n.read(c,l,c.length-l,s+l);if(e===0)break;l+=e}return J({buf:l===c.length?c:c.subarray(0,l),start:s,size:r,mtimeMs:i,ino:a,reset:o})}catch(t){return t.code===`ENOENT`?Y:X(`readAppended ${e}: ${t instanceof Error?t.message:String(t)}`)}finally{await n?.close().catch(e=>{D(`transcript-fs: close failed: ${e instanceof Error?e.message:String(e)}`)})}})}async function XE(e,t){return WE.run(async()=>{let n=null;try{n=await _(e,`r`);let{size:r}=await n.stat(),i=Math.max(0,r-t),a=Buffer.alloc(r-i),o=0;for(;o<a.length;){let{bytesRead:e}=await n.read(a,o,a.length-o,i+o);if(e===0)break;o+=e}return J({buf:o===a.length?a:a.subarray(0,o),fromStart:i===0})}catch(t){return t.code===`ENOENT`?Y:X(`readTail ${e}: ${t instanceof Error?t.message:String(t)}`)}finally{await n?.close().catch(e=>{D(`transcript-fs: close failed: ${e instanceof Error?e.message:String(e)}`)})}})}const ZE=/<command-name>\s*([^<\s][^<]*?)\s*<\/command-name>/;function QE(e){if(typeof e==`string`)return ZE.exec(e)?.[1]}function $E(e){let t=e?.todos;if(!Array.isArray(t))return;let n=[];for(let e of t){if(typeof e!=`object`||!e)continue;let{content:t,activeForm:r,status:i}=e,a=i===`in_progress`,o=a&&typeof r==`string`?r:t;typeof o==`string`&&n.push({text:o,active:a,done:i===`completed`})}return n}function eD(e){let t=e.message?.content,n=e.type===`user`,r=[],i=[],a,o;if(typeof t==`string`)o=t;else if(Array.isArray(t))for(let e of t){if(typeof e!=`object`||!e)continue;let t=e;switch(t.type){case`tool_use`:{let{id:e,name:n}=t;if(typeof e!=`string`||typeof n!=`string`)break;r.push({id:e,name:n}),n===`TodoWrite`&&(a=$E(t.input)??a);break}case`tool_result`:{let e=t.tool_use_id;typeof e==`string`&&i.push(e);break}case`text`:o??=t.text;break;default:break}}let s=n?QE(o):void 0;if(!(r.length===0&&i.length===0&&a===void 0&&s===void 0))return{...r.length>0&&{started:r},...i.length>0&&{finished:i},...a!==void 0&&{todos:a},...s!==void 0&&{command:s}}}function tD(){let e=[],t=process.env.CLAUDE_CONFIG_DIR;if(t&&t.split(`,`).forEach(t=>{let n=t.trim();a(n)&&e.push(n)}),e.length===0){let t=p(),n=d(t,`.config`,`claude`),r=d(t,`.claude`);a(n)&&e.push(n),a(r)&&e.push(r)}return e}async function nD(e){let t=[];for(let n of e){let e=d(n,`projects`);if(a(e))try{let n=await KE(e,{withFileTypes:!0});for(let r of n)if(r.isDirectory()){let n=d(e,r.name);t.push(n)}}catch(t){D(`Failed to read projects directory ${e}:`,t)}}return t}async function rD(e,t,n){let r=[],i=d(t,e,`subagents`);try{let t=(await KE(i)).filter(e=>e.startsWith(`agent-`)&&e.endsWith(`.jsonl`));for(let a of t){let t=d(i,a);if(n?.has(t)){r.push(t);continue}try{let n=(await qE(t,`utf-8`)).split(`
175
- `)[0];n&&JSON.parse(n).sessionId===e&&r.push(t)}catch{D(`Failed to check agent file ${t}`)}}}catch(e){D(`Failed to read subagents directory ${i}:`,e)}return r}function iD(e){let t=e.type||e.message?.role||e.message?.type,n=e.type===`user`&&e.message?.firstContentType===`tool_result`;return t===`user`&&!n}const aD=new Map;async function oD(e){try{let t=await JE(e),n=t.size,r=aD.get(e);if(r&&r.mtime===t.mtimeMs&&r.size===n)return D(`[parse-cache] hit ${e}`),aD.delete(e),aD.set(e,r),r.entries;let i;return n>1048576?(D(`Using streaming parser for large file ${e} (${Math.round(n/1024)}KB)`),i=await dD(e)):i=await lD(e),D(`Parsed ${i.length} entries from ${e}`),n>5242880?i:(aD.delete(e),aD.size>=16&&aD.delete(aD.keys().next().value),aD.set(e,{mtime:t.mtimeMs,size:n,entries:i}),i)}catch(t){if(t.code===`ENOENT`)return D(`Transcript not present yet: ${e}`),[];throw t}}function sD(e){if(!e.timestamp)return null;let t=e.message,n=t?.usage,r=t?.content,i=Array.isArray(r)&&typeof r[0]==`object`&&r[0]?r[0]:void 0;return{timestamp:new Date(e.timestamp),type:typeof e.type==`string`?e.type:void 0,message:t?{id:typeof t.id==`string`?t.id:void 0,model:typeof t.model==`string`?t.model:void 0,usage:n,role:typeof t.role==`string`?t.role:void 0,type:typeof t.type==`string`?t.type:void 0,firstContentType:typeof i?.type==`string`?i.type:void 0}:void 0,costUSD:typeof e.costUSD==`number`?e.costUSD:void 0,isSidechain:e.isSidechain===!0,activity:eD(e),raw:{model:typeof e.model==`string`?e.model:void 0,message:t?{id:typeof t.id==`string`?t.id:void 0,model:typeof t.model==`string`?t.model:void 0,usage:n}:void 0,requestId:typeof e.requestId==`string`?e.requestId:void 0}}}function cD(e){let t=[];for(let n of e.split(`
176
- `))if(n.trim())try{let e=sD(JSON.parse(n));e&&t.push(e)}catch(e){D(`Failed to parse JSONL line: ${e}`);continue}return t}async function lD(e){return cD(await qE(e,`utf-8`))}async function uD(e,t){let n=await YE(e,t===void 0?void 0:{offset:t.offset,ino:t.ino});if(n.kind!==`ok`)return n;let{buf:r,start:i,mtimeMs:a,ino:o,reset:s}=n.value,c=r.lastIndexOf(10);return J(c<0?{entries:[],cursor:{offset:i,mtimeMs:a,ino:o},reset:s}:{entries:cD(r.subarray(0,c+1).toString(`utf-8`)),cursor:{offset:i+c+1,mtimeMs:a,ino:o},reset:s})}async function dD(e){return new Promise((t,n)=>{let r=[],a=i(e,{encoding:`utf8`}),o=oe({input:a,crlfDelay:1/0});o.on(`line`,e=>{let t=e.trim();if(t)try{let e=sD(JSON.parse(t));e&&r.push(e)}catch(e){D(`Failed to parse JSONL line: ${e}`)}}),o.on(`close`,()=>{t(r)}),o.on(`error`,t=>{D(`Streaming parser error for ${e}:`,t),n(t)}),a.on(`error`,t=>{D(`File stream error for ${e}:`,t),n(t)})})}var fD=class{inflight=new Map;run(e,t){return this.inflight.get(e)??this.start(e,t)}start(e,t){let n=t();this.inflight.set(e,n);let r=()=>{this.inflight.get(e)===n&&this.inflight.delete(e)};return n.then(r,r),n}get size(){return this.inflight.size}};function pD(e,t){let n=e?e.input+e.cacheCreation+e.cacheRead:0,r=e?e.output:0;return{input:n,output:r,total:n+r,atMs:t}}const mD={cost:0,input:0,output:0,cacheCreation:0,cacheRead:0},hD={cost:null,calculatedCost:null,officialCost:null,tokens:null,tokenBreakdown:null};function gD(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function _D(){let e=new Date;return e.setHours(0,0,0,0),e.setDate(e.getDate()-1),e.getTime()}function vD(){return{input:0,output:0,cacheCreation:0,cacheRead:0}}async function yD(e,t,n,r){let i=gD(new Date(_D())),a=e&&!t?e:void 0,o=a?.entries??0,s=a?.cost??0,c=a?{...a.breakdown}:vD(),l=new Map;if(a)for(let[e,t]of a.days)e>=i&&l.set(e,{...t});for(let e of n){let t=e.message?.usage;if(!t)continue;o++;let n=e.costUSD??await HE.calculateCostForEntry(e.raw);s+=n,c.input+=t.input_tokens||0,c.output+=t.output_tokens||0,c.cacheCreation+=t.cache_creation_input_tokens||0,c.cacheRead+=t.cache_read_input_tokens||0;let r=gD(new Date(e.timestamp));if(r<i)continue;let a=l.get(r)??{...mD};a.cost+=n,a.input+=t.input_tokens||0,a.output+=t.output_tokens||0,a.cacheCreation+=t.cache_creation_input_tokens||0,a.cacheRead+=t.cache_read_input_tokens||0,l.set(r,a)}return{cursor:r,entries:o,cost:s,breakdown:c,days:l}}function bD(e){let t=0,n=0,r=vD(),i=new Map;for(let a of e.values()){t+=a.entries,n+=a.cost,r.input+=a.breakdown.input,r.output+=a.breakdown.output,r.cacheCreation+=a.breakdown.cacheCreation,r.cacheRead+=a.breakdown.cacheRead;for(let[e,t]of a.days){let n=i.get(e)??{...mD};n.cost+=t.cost,n.input+=t.input,n.output+=t.output,n.cacheCreation+=t.cacheCreation,n.cacheRead+=t.cacheRead,i.set(e,n)}}if(t===0)return{sessionInfo:hD,days:i};let a=r.input+r.output+r.cacheCreation+r.cacheRead;return{sessionInfo:{cost:n,calculatedCost:n,officialCost:null,tokens:a,tokenBreakdown:r},days:i}}async function xD(e,t,n){let r=0,i=async()=>{for(;r<e.length;){let t=e[r++];await n(t)}},a=Math.min(t,e.length);await Promise.all(Array.from({length:a},i))}var SD=class{entries=new Map;flight=new fD;seeded=new Map;speedRings=new Map;speedFlight=new fD;maxEntries;staleAgeMs;hits=0;misses=0;sweeps=0;seeds=0;sweepTimer=null;constructor(e={}){this.maxEntries=e.maxEntries??256,this.staleAgeMs=e.staleAgeMs??864e5;let t=e.sweepIntervalMs??3e5;t>0&&(this.sweepTimer=setInterval(()=>this.sweepStale(),t),this.sweepTimer.unref())}getStats(){return{size:this.entries.size,hits:this.hits,misses:this.misses,sweeps:this.sweeps,seeds:this.seeds}}async getUsageInfo(e,t){let n=await this.ingest(e,t?.transcript_path);if(n.kind===`failed`)return n;let r=n.kind===`ok`?n.value.sessionInfo:hD,i=t?.cost?.total_cost_usd??null;return J({session:{...r,cost:i??r.cost,officialCost:i}})}async getTodayInfo(e){let t=gD(new Date);try{await this.ensureSeeded(t)}catch(e){return X(`usage seed: ${e instanceof Error?e.message:String(e)}`)}let n=await this.ingest(e?.session_id??``,e?.transcript_path);if(n.kind===`failed`)return n;let r={...mD},i=!1;for(let e of this.entries.values()){i||=e.days.has(t);let n=e.days.get(t)??mD;r.cost+=n.cost,r.input+=n.input,r.output+=n.output,r.cacheCreation+=n.cacheCreation,r.cacheRead+=n.cacheRead}return i?J({cost:r.cost,tokens:r.input+r.output+r.cacheCreation+r.cacheRead,tokenBreakdown:{input:r.input,output:r.output,cacheCreation:r.cacheCreation,cacheRead:r.cacheRead},date:t}):Y}async observeSpeed(e,t,n){let r=UE(t);return this.speedFlight.run(`${e}:${r}`,async()=>{let i=await this.ingest(e,t,r);if(i.kind===`failed`)return i;let a=pD(i.kind===`ok`?i.value.sessionInfo.tokenBreakdown:null,n),o=this.speedRings.get(e)??[],s;for(let e of o)e.atMs<a.atMs&&(s===void 0||e.atMs>s.atMs)&&(s=e);return o.push(a),o.sort((e,t)=>e.atMs-t.atMs),o.length>64&&o.shift(),this.speedRings.set(e,o),J({...s!==void 0&&{prev:s},cur:a,samples:[...o]})})}async ingest(e,t,n){if(!e)return Y;let r=n??UE(t),i=this.entries.get(e);if(i&&r!==0&&i.transcriptMtime===r)return i.lastSeenAt=Date.now(),this.entries.delete(e),this.entries.set(e,i),this.hits++,J(i);if(!t)return i?J(i):Y;this.misses++;let a;try{a=await this.flight.run(`${e}:${r}`,()=>this.refold(e,t,this.entries.get(e)))}catch(t){return X(`usage refold (${e}): ${t instanceof Error?t.message:String(t)}`)}if(a.kind!==`ok`)return a;let o={files:a.value.files,sessionInfo:a.value.sessionInfo,days:a.value.days,transcriptMtime:a.value.mainMtime,transcriptPath:t,lastSeenAt:Date.now()};return this.entries.delete(e),this.entries.set(e,o),this.evictIfNeeded(),J(o)}async refold(e,t,n){let r=await rD(e,u(t),n===void 0?void 0:new Set(n.files.keys())),i=new Map,a=0;for(let e of[t,...r]){let r=n?.files.get(e),o=await uD(e,r?.cursor);if(o.kind===`failed`)return o;if(o.kind===`absent`){r&&i.set(e,r);continue}let{entries:s,cursor:c,reset:l}=o.value;i.set(e,await yD(r,l,s,c)),e===t&&(a=c.mtimeMs)}return J({files:i,...bD(i),mainMtime:a})}ensureSeeded(e){let t=this.seeded.get(e);if(t)return t;this.seeded.clear();let n=this.seed(e);return this.seeded.set(e,n),n.catch(()=>{this.seeded.get(e)===n&&this.seeded.delete(e)}),n}async seed(e){let t=_D(),n=await nD(tD()),r=[];for(let e of n){let n;try{n=await KE(e)}catch{continue}for(let i of n){if(!i.endsWith(`.jsonl`))continue;let n=d(e,i),a;try{a=(await JE(n)).mtimeMs}catch{continue}a<t||r.push({sessionId:i.slice(0,-6),path:n,mtime:a})}}await xD(r,8,async e=>{let t=await this.ingest(e.sessionId,e.path,e.mtime);t.kind===`failed`&&Q(`warn`,`usageStore seed: ${t.reason}`)}),this.seeds++,Q(`info`,`usageStore seed sessions=${r.length}`)}sweepStale(){let e=Date.now(),t=0;for(let[n,r]of this.entries)e-r.lastSeenAt>this.staleAgeMs&&(this.entries.delete(n),this.speedRings.delete(n),t++);return t>0&&(this.sweeps++,Q(`info`,`usageStore sweep dropped=${t}`)),t}evictIfNeeded(){for(;this.entries.size>this.maxEntries;){let e=this.entries.keys().next().value;if(e===void 0)break;this.entries.delete(e),this.speedRings.delete(e),Q(`info`,`usageStore evict ${e}`)}}close(){this.sweepTimer&&=(clearInterval(this.sweepTimer),null),this.entries.clear(),this.seeded.clear(),this.speedRings.clear()}};const CD=/"(?:cache_read_input_tokens|cache_creation_input_tokens)":[1-9]/;function wD(e){let t;try{t=JSON.parse(e)}catch{return null}let n=t.message?.usage;if(!((n?.cache_read_input_tokens??0)>0||(n?.cache_creation_input_tokens??0)>0))return null;let r=t.timestamp==null?NaN:Date.parse(t.timestamp);return Number.isNaN(r)?null:r}async function TD(e){let t=await ED(e);return t.kind===`ok`?J(Math.floor((t.value+36e5)/1e3)):t}async function ED(e){for(let t of[65536,1048576]){let n=await XE(e,t);if(n.kind!==`ok`)return n;let r=DD(n.value.buf,n.value.fromStart);if(r!=null)return J(r);if(n.value.fromStart)return Y}return Y}function DD(e,t){let n=e.toString(`utf8`).split(`
177
- `),r=+!t;for(let e=n.length-1;e>=r;e--){let t=n[e];if(!t||!CD.test(t))continue;let r=wD(t);if(r!=null)return r}return null}function OD(e,t,n){let r=Kv(t(`preset`),e.globals.preset,e.presets),i=Yv(e,r),a=t(`edit.mode`)===`open`?e.editGlobals:{};return{preset:r,presetCustomized:n(r),theme:Ix(a.palette,t(`theme`),i.palette),look:ja(a.look,t(`look`),i.look,e.looks),style:Pa(a.style,t(`style`),i.style),progression:Ka(a.progression,t(`progression`),i.progression),separator:a.default_separator??i.default_separator,autoWrap:$a(a.autoWrap,t(`autoWrap`),i.autoWrap),padding:eo(a.padding,t(`padding`),i.padding),charset:Ra(a.charset,t(`charset`),i.charset),updateNotice:a.updateNotice??i.updateNotice??!0,colorCompatibility:Ha(a.colorCompatibility,t(`colorCompatibility`),i.colorCompatibility)}}function kD(e){return{preset:{effective:e.preset,customized:e.presetCustomized},style:{effective:e.style},progression:{effective:e.progression},charset:{effective:e.charset},colorCompatibility:{effective:e.colorCompatibility},autoWrap:{effective:e.autoWrap},padding:{effective:e.padding}}}const AD=10*1e3;function jD(e,t,n,r){let i=n-(t*1e3-r);if(i<3e5||e<=0)return;let a=e/i,o=(100-e)/a;return Math.max(0,Math.round(o/6e4))}function MD(e,t){if(!(t<60))return e*3600/t}function ND(e,t,n,r){let i=r-t;if(i<50||i>AD)return;let a=n-e;if(!(a<=0))return a*1e3/i}function PD(e){let{prev:t,cur:n}=e;if(t===void 0)return;let r=ND(t.input,t.atMs,n.input,n.atMs),i=ND(t.output,t.atMs,n.output,n.atMs),a=ND(t.total,t.atMs,n.total,n.atMs);if(!(r===void 0&&i===void 0&&a===void 0))return{...r!==void 0&&{input:r},...i!==void 0&&{output:i},...a!==void 0&&{total:a}}}function FD(e){let{samples:t}=e,n=[];for(let e=1;e<t.length;e++){let r=t[e-1],i=t[e],a=i.atMs-r.atMs;if(a<50||a>AD)continue;let o=ND(r.total,r.atMs,i.total,i.atMs);n.push(o??0)}if(n.length!==0)return n.join(`,`)}function ID(e){let t=e.indexOf(`.`);return t<0?e:e.slice(0,t)}function LD(e){let t=[],n=(e,n)=>{try{let e=n();return e===``?void 0:e}catch(n){t.push(`host.${e}: ${String(n)}`);return}},r=n(`name`,()=>ID(f.hostname())),i=n(`user`,()=>f.userInfo().username);return{host:{...r!==void 0&&{name:r},...i!==void 0&&{user:i},...e.ssh!==void 0&&{ssh:e.ssh}},failures:t}}function RD(e,t){let n=new Map;for(let[t,r]of Object.entries(e.variables))n.set(t,r);for(let[t,r]of Object.entries(e.segments))if(r.vars)for(let[e,i]of Object.entries(r.vars))n.set(`${t}.${e}`,i);let r=[],i=new Set,a=t=>Cg(t,e.helpers).keys();for(let n of Xo(Jv(e,t).node)){if(n.when)for(let e of a(n.when))r.push(e);if(n.kind!==`segment`)continue;let t=e.segments[n.name];if(t){for(let e of[t.template,t.when,t.bg,t.fg])if(e)for(let t of a(e))r.push(t)}}let o=new Set;for(;r.length>0;){let e=r.pop();for(let t of BD(n,e)){if(i.has(t))continue;i.add(t);let e=n.get(t);if(e){if(e.kind===`input`)o.add(e.path);else if(e.kind===`template`)for(let t of a(e.template))r.push(t)}}}return o}function zD(e){let t=new Map;return n=>{let r=t.get(n);if(r!==void 0)return r;let i=RD(e,n);return t.set(n,i),i}}function BD(e,t){let n=t;for(;n.length>0;){if(e.has(n))return[n];let t=n.lastIndexOf(`.`);if(t<0)break;n=n.slice(0,t)}let r=`${t}.`,i=[];for(let t of e.keys())t.startsWith(r)&&i.push(t);return i}function VD(e,t){for(let n of e)if(n===t||n.startsWith(t+`.`))return!0;return!1}function HD(e){let t=t=>e.has(t),n=t(`git.staged`)||t(`git.unstaged`)||t(`git.untracked`)||t(`git.conflicts`);return{...t(`git.sha`)&&{showSha:!0},...n&&{showWorkingTree:!0},...t(`git.stash`)&&{showStashCount:!0},...t(`git.upstream`)&&{showUpstream:!0},...t(`git.repoName`)&&{showRepoName:!0},...t(`git.repoUrl`)&&{showRepoUrl:!0},...t(`git.operation`)&&{showOperation:!0},...t(`git.timeSinceCommit`)&&{showTimeSinceCommit:!0},...(t(`git.prNumber`)||t(`git.prState`)||t(`git.prUrl`)||t(`git.prError`))&&{showPullRequest:!0}}}async function UD(e,t,n,r,i,a,o){let s=e=>VD(r,e),c=(t.clock??(()=>new Date))().getTime(),l=(e,t,n)=>t?n().catch(t=>X(`${e}: ${String(t)}`)):Promise.resolve(Y),[u,d,f,p,m,h,g,_,v]=await Promise.all([l(`git`,s(`git`),()=>t.gitProvider.getGitInfo(n??e.workspace?.current_dir,HD(r),e.workspace?.project_dir)),l(`session`,s(`session.cost`)||s(`session.tokens`)||s(`burn`),()=>t.usageStore.getUsageInfo(e.session_id,e)),l(`today`,s(`today`),()=>t.usageStore.getTodayInfo(e)),l(`context`,s(`context`),()=>t.contextProvider.getContextInfo(e)),l(`metrics`,s(`metrics`)||s(`burn`),()=>t.metricsProvider.getMetricsInfo(e.session_id,e)),l(`activity`,s(`activity`),()=>t.activityProvider.getActivityInfo(e.session_id,e)),l(`tmux`,s(`tmux`),()=>t.tmuxService.getSessionId()),l(`cache`,s(`cache`),()=>TD(e.transcript_path)),l(`speed`,s(`speed`),()=>t.usageStore.observeSpeed(e.session_id,e.transcript_path,c))]),y=[],b=e=>{if(e.kind===`failed`){y.push(e.reason);return}return e.kind===`ok`?e.value:void 0},x=JD(u);y.push(...x.failures);let S=LD(a);y.push(...S.failures);let C=b(d),ee=b(f),te=b(p),w=b(m),ne=b(h),re=b(g),ie=b(_);for(let e of y)t.log(`warn`,`provider fetch failed: ${e}`);let T=e.rate_limits?.five_hour,E=e.rate_limits?.seven_day,ae=T?jD(T.used_percentage,T.resets_at,18e6,c):void 0,oe=E?jD(E.used_percentage,E.resets_at,6048e5,c):void 0,se=C?.session.cost,ce=w?.sessionDuration,le=s(`burn`)&&se!=null&&ce!=null?MD(se,ce):void 0,ue=b(v),de=ue===void 0?void 0:PD(ue),fe=ue===void 0?void 0:FD(ue),pe=de!==void 0||fe!==void 0?{...de,...fe!==void 0&&{history:fe}}:void 0,me=qD(process.env.HOME??process.env.USERPROFILE),he=e.workspace?{...e.workspace,current_dir:qD(e.workspace.current_dir)??``,project_dir:qD(e.workspace.project_dir)??``}:e.workspace,D=C===void 0?void 0:KD({cost:C.session.cost,tokens:C.session.tokens}),ge=ee===void 0?void 0:{cost:ee.cost,tokens:ee.tokens},_e=w===void 0?void 0:KD({lastResponseTime:w.lastResponseTime,responseTime:w.responseTime,sessionDuration:w.sessionDuration,messageCount:w.messageCount,linesAdded:w.linesAdded,linesRemoved:w.linesRemoved}),ve=ne===void 0?void 0:WD(ne);return{...e,...he!==void 0&&{workspace:he},...me!==void 0&&{home:me},...x.git!==void 0&&{git:x.git},...re!==void 0&&{tmux:{session:re}},host:S.host,...kD(i),history:t.history(e.session_id),unsaved:o,...D!==void 0&&{session:D},...ge!==void 0&&{today:ge},...le!==void 0&&{burn:{costPerHour:le}},...pe!==void 0&&{speed:pe},...s(`block`)&&T!==void 0&&{block:{nativeUtilization:T.used_percentage,resetsAt:T.resets_at,...ae!==void 0&&{etaMinutes:ae}}},...E!==void 0&&{weekly:{percentage:E.used_percentage,resetsAt:E.resets_at,...oe!==void 0&&{etaMinutes:oe}}},...ie!==void 0&&{cache:{expiresAt:ie}},...te!==void 0&&{context:{totalTokens:te.totalTokens,contextLeft:te.contextLeftPercentage}},..._e!==void 0&&{metrics:_e},...ve!==void 0&&{activity:ve}}}function WD(e){let t=e.todos.findIndex(e=>e.active),n=e.todos.length===0?void 0:{total:e.todos.length,completed:e.todos.filter(e=>e.done).length,...t>=0&&{position:t+1,active:e.todos[t].text}},r=GD(e.running),i=GD(e.done),a=r===void 0&&i===void 0?void 0:{...r!==void 0&&{running:r},...i!==void 0&&{done:i}};if(!(e.command===null&&n===void 0&&a===void 0))return{...e.command!==null&&{command:e.command},...n!==void 0&&{todo:n},...a!==void 0&&{tool:a}}}function GD(e){return e.length===0?void 0:e.map(e=>`${e.name}:${e.count}`).join(`,`)}function KD(e){let t={},n=!1;for(let r of Object.keys(e)){let i=e[r];i!=null&&(t[r]=i,n=!0)}return n?t:void 0}function qD(e){return e===void 0||e.length===0||c.sep!==`\\`?e:e.replace(/\\/g,`/`)}function JD(e){if(e.kind===`absent`)return{failures:[]};if(e.kind===`failed`)return{failures:[e.reason]};let t=e.value,n=[],r=(e,t)=>{if(!(t===void 0||t.kind===`absent`)){if(t.kind===`failed`){n.push(`git.${e}: ${t.reason}`);return}return t.value}},i=r(`aheadBehind`,t.aheadBehind),a=r(`sha`,t.sha),o=r(`operation`,t.operation),s=r(`timeSinceCommit`,t.timeSinceCommit),c=r(`stash`,t.stashCount),l=r(`upstream`,t.upstream),u=r(`repoName`,t.repoName),d=r(`repoUrl`,t.repoUrl),f=t.pullRequest,p={};return f?.kind===`ok`?(p.prNumber=f.value.number,p.prState=f.value.state,p.prUrl=f.value.url):f?.kind===`failed`&&(n.push(`git.pr: ${f.reason}`),p.prError=f.reason),{git:{branch:t.branch,status:t.status,...i!==void 0&&{ahead:i.ahead,behind:i.behind},...t.workingTree!==void 0&&{staged:t.workingTree.staged,unstaged:t.workingTree.unstaged,untracked:t.workingTree.untracked,conflicts:t.workingTree.conflicts},...a!==void 0&&{sha:a},...o!==void 0&&{operation:o},...s!==void 0&&{timeSinceCommit:s},...c!==void 0&&{stash:c},...l!==void 0&&{upstream:l},...u!==void 0&&{repoName:u},...d!==void 0&&{repoUrl:d},...p},failures:n}}const YD=`trimPrefix "/" (trimPrefix .project_dir .current_dir)`,XD=`{{ \$dir := .current_dir }}{{ if and (ne .home "") (or (eq .home .current_dir) (hasPrefix (printf "%s/" .home) .current_dir)) }}{{ \$dir = printf "~%s" (trimPrefix .home .current_dir) }}{{ else }}{{ if or (eq .project_dir .current_dir) (hasPrefix (printf "%s/" .project_dir) .current_dir) }}{{ $dir = ternary (${YD}) (basename .project_dir) (ne (${YD}) "") }}{{ end }}{{ end }}{{ abbreviatePath \$dir }}`,ZD=`{{ readableOn (mix (color "foreground") (bgOf) 60) (bgOf) 3 }}`,QD={globals:{palette:`tokyo-night`},variables:{...Nv,current_dir:{kind:`input`,path:`workspace.current_dir`,default:`?`},"model.display_name":{kind:`input`,path:`model.display_name`,default:``},version:{kind:`input`,path:`version`,default:``},home:{kind:`input`,path:`home`,default:``},"tmux.session":{kind:`input`,path:`tmux.session`,default:``},"host.name":{kind:`input`,path:`host.name`,default:``},"host.user":{kind:`input`,path:`host.user`,default:``},"host.ssh":{kind:`input`,path:`host.ssh`,type:`boolean`,default:!1},"git.repoName":{kind:`input`,path:`git.repoName`,default:``},"git.branch":{kind:`input`,path:`git.branch`,default:``},"git.sha":{kind:`input`,path:`git.sha`,default:``},"git.ahead":{kind:`input`,path:`git.ahead`,type:`number`,default:0},"git.behind":{kind:`input`,path:`git.behind`,type:`number`,default:0},"git.staged":{kind:`input`,path:`git.staged`,type:`number`,default:0},"git.unstaged":{kind:`input`,path:`git.unstaged`,type:`number`,default:0},"git.untracked":{kind:`input`,path:`git.untracked`,type:`number`,default:0},"git.conflicts":{kind:`input`,path:`git.conflicts`,type:`number`,default:0},"git.upstream":{kind:`input`,path:`git.upstream`,default:``},"git.stash":{kind:`input`,path:`git.stash`,type:`number`,default:0},"git.status":{kind:`input`,path:`git.status`,default:`clean`},"git.operation":{kind:`input`,path:`git.operation`,default:``},"git.timeSinceCommit":{kind:`input`,path:`git.timeSinceCommit`,type:`number`,default:0},"git.color.branch":{kind:`literal`,value:`primary`},"git.color.staged":{kind:`literal`,value:`success`},"git.color.unstaged":{kind:`literal`,value:`warning`},"git.color.untracked":{kind:`literal`,value:`accent`},"git.color.conflicts":{kind:`literal`,value:`error`},"git.color.ahead":{kind:`literal`,value:`success`},"git.color.behind":{kind:`literal`,value:`warning`},"git.color.stash":{kind:`literal`,value:`accent`},"git.prNumber":{kind:`input`,path:`git.prNumber`,type:`number`,default:0},"git.prState":{kind:`input`,path:`git.prState`,default:``},"git.prUrl":{kind:`input`,path:`git.prUrl`,default:``},"git.prError":{kind:`input`,path:`git.prError`,default:``},"cache.expiresAt":{kind:`input`,path:`cache.expiresAt`,type:`number`,default:0},"session.cost":{kind:`input`,path:`session.cost`,type:`number`,default:0},"session.tokens":{kind:`input`,path:`session.tokens`,type:`number`,default:0},"session.budget.amount":{kind:`literal`,value:0},"session.budget.warningThreshold":{kind:`literal`,value:80},"today.cost":{kind:`input`,path:`today.cost`,type:`number`,default:0},"today.tokens":{kind:`input`,path:`today.tokens`,type:`number`,default:0},"today.budget.amount":{kind:`literal`,value:50},"today.budget.warningThreshold":{kind:`literal`,value:80},"block.nativeUtilization":{kind:`input`,path:`block.nativeUtilization`,type:`number`,default:0},"block.resetsAt":{kind:`input`,path:`block.resetsAt`,type:`number`,default:0},"block.budget.warningThreshold":{kind:`literal`,value:80},"block.budget.heatThreshold":{kind:`literal`,value:50},"weekly.percentage":{kind:`input`,path:`weekly.percentage`,type:`number`,default:0},"weekly.resetsAt":{kind:`input`,path:`weekly.resetsAt`,type:`number`,default:0},"weekly.budget.warningThreshold":{kind:`literal`,value:80},"weekly.budget.heatThreshold":{kind:`literal`,value:50},"burn.costPerHour":{kind:`input`,path:`burn.costPerHour`,type:`number`,default:-1},"block.etaMinutes":{kind:`input`,path:`block.etaMinutes`,type:`number`,default:-1},"weekly.etaMinutes":{kind:`input`,path:`weekly.etaMinutes`,type:`number`,default:-1},"burn.eta.warnMinutes":{kind:`literal`,value:60},"burn.eta.errorMinutes":{kind:`literal`,value:30},"speed.input":{kind:`input`,path:`speed.input`,type:`number`,default:-1},"speed.output":{kind:`input`,path:`speed.output`,type:`number`,default:-1},"speed.total":{kind:`input`,path:`speed.total`,type:`number`,default:-1},"speed.history":{kind:`input`,path:`speed.history`,type:`string`,default:``},"context.totalTokens":{kind:`input`,path:`context.totalTokens`,type:`number`,default:0},"context.contextLeft":{kind:`input`,path:`context.contextLeft`,type:`number`,default:100},"metrics.lastResponseTime":{kind:`input`,path:`metrics.lastResponseTime`,type:`number`,default:0},"metrics.responseTime":{kind:`input`,path:`metrics.responseTime`,type:`number`,default:0},"metrics.sessionDuration":{kind:`input`,path:`metrics.sessionDuration`,type:`number`,default:0},"metrics.messageCount":{kind:`input`,path:`metrics.messageCount`,type:`number`,default:0},"metrics.linesAdded":{kind:`input`,path:`metrics.linesAdded`,type:`number`,default:0},"metrics.linesRemoved":{kind:`input`,path:`metrics.linesRemoved`,type:`number`,default:0},"activity.command":{kind:`input`,path:`activity.command`,type:`string`,default:``},"activity.todo.total":{kind:`input`,path:`activity.todo.total`,type:`number`,default:0},"activity.todo.completed":{kind:`input`,path:`activity.todo.completed`,type:`number`,default:0},"activity.todo.position":{kind:`input`,path:`activity.todo.position`,type:`number`,default:0},"activity.todo.active":{kind:`input`,path:`activity.todo.active`,type:`string`,default:``},"activity.tool.running":{kind:`input`,path:`activity.tool.running`,type:`string`,default:``},"activity.tool.done":{kind:`input`,path:`activity.tool.done`,type:`string`,default:``}},segments:{directory:{description:"The current directory, shortened fish-style — `~` under home, project-relative inside the project.",template:XD},model:{description:`The active model's display name.`,template:`✱ {{ formatModelName .model.display_name }}`,when:`{{ ne .model.display_name "" }}`},sessionId:{description:`The session id, truncated to 8 characters.`,template:`⌗{{ trunc 8 .session.id }}`,when:`{{ ne .session.id "" }}`},version:{description:`The Claude Code version reported in the hook payload.`,template:`◈ v{{ .version }}`,when:`{{ ne .version "" }}`},tmux:{description:`The tmux session name; hidden when not inside tmux.`,template:`tmux:{{ .tmux.session | default "none" }}`,when:`{{ ne .tmux.session "" }}`},host:{description:`user@host on a warning background, shown only over SSH.`,template:`⇄ {{ .host.user | default "?" }}@{{ .host.name | default "?" }}`,bg:`warning`,when:`{{ .host.ssh }}`},git:{description:"The one-line git summary: branch, ahead/behind, and S/U/? flags — the same pieces `gitaculous` composes.",template:`{{ template "gitBranch" . }}{{ template "gitAheadBehind" . }}{{ template "gitFlags" . }}`,fg:ZD,when:`{{ ne .git.branch "" }}`},gitaculous:{description:`The full git state in asyncgit's compact spelling: repo, in-progress operation, sha, S/U/? flags, branch, upstream ±, stash count, and time since the last commit.`,template:`(git){{ template "gitRepo" . }}{{ template "gitOperation" . }}{{ template "gitSha" . }}{{ template "gitFlags" . }} {{ template "gitBranch" . }}{{ template "gitUpstream" . }}{{ template "gitStash" . }}{{ template "gitAge" . }}`,fg:ZD,when:`{{ ne .git.branch "" }}`},gitPr:{description:"The pull request open for this branch, as a link; `⚠ PR` when the forge lookup failed.",template:`{{ if ne .git.prUrl "" }}{{ link .git.prUrl (printf "⇆ #%v" .git.prNumber) }}{{ else }}⚠ PR{{ end }}`,when:`{{ or (ne .git.prUrl "") (ne .git.prError "") }}`},toolbar:{description:`Quick actions: copy the session id, and open the project, transcript or repo.`,template:By(``).template},themeSwitcher:{description:"`◀ <theme> ▶`: the theme the bar is wearing; ◀ and ▶ switch this session to the previous or next theme, wrapping at the ends.",template:`{{ carousel "stepTheme" 0 }}`},session:{description:`This session's cost and token total, with a budget warning once a budget is configured.`,template:`§ {{ template "formatCost" .session.cost }} ({{ template "formatTokens" .session.tokens }}){{ template "budgetStatus" (dict "cost" .session.cost "budget" .session.budget.amount "warn" .session.budget.warningThreshold) }}`},today:{description:`Today's cost and tokens across every session, with a budget warning once a budget is configured.`,template:`☉ {{ template "formatCost" .today.cost }} ({{ template "formatTokens" .today.tokens }}){{ template "budgetStatus" (dict "cost" .today.cost "budget" .today.budget.amount "warn" .today.budget.warningThreshold) }}`},block:{description:`The 5-hour rate-limit block: percent used and time to reset, heating to warning then error.`,template:`◱ {{ round .block.nativeUtilization }}% ({{ template "formatResetCountdown" .block.resetsAt }})`,bg:`{{ ramp (round .block.nativeUtilization) "step" 0 (tint) .block.budget.heatThreshold "warning" .block.budget.warningThreshold "error" }}`,when:`{{ gt .block.resetsAt 0 }}`},weekly:{description:`The weekly rate-limit quota: percent used and time to reset, heating to warning then error.`,template:`◑ {{ round .weekly.percentage }}% ({{ template "formatResetCountdown" .weekly.resetsAt }})`,bg:`{{ ramp (round .weekly.percentage) "step" 0 (tint) .weekly.budget.heatThreshold "warning" .weekly.budget.warningThreshold "error" }}`,when:`{{ gt .weekly.resetsAt 0 }}`},burnrate:{description:`Spend per hour, with the projected time to the 5-hour and weekly limits.`,template:`⚡ {{ template "formatRate" .burn.costPerHour }} · {{ template "formatEta" .block.etaMinutes }} to 5h · {{ template "formatEta" .weekly.etaMinutes }} to wk`,bg:`{{ ramp .block.etaMinutes "step" -1 (tint) 0 "error" .burn.eta.errorMinutes "warning" .burn.eta.warnMinutes (tint) }}`,when:`{{ or (gt .block.resetsAt 0) (gt .weekly.resetsAt 0) }}`},speed:{description:`Token throughput for the latest exchange: output, input, and total.`,template:`⇅ out {{ template "formatSpeed" .speed.output }} · in {{ template "formatSpeed" .speed.input }} · tot {{ template "formatSpeed" .speed.total }}`,when:`{{ gt .session.tokens 0 }}`},tokenSparkline:{description:`A sparkline of recent token throughput.`,template:`⚡ {{ sparkline .speed.history 24 }}`,when:`{{ ne .speed.history "" }}`},cacheTimer:{description:"Minutes until the prompt cache expires, or `cold` once it has.",template:`◴ {{ if le (minutesUntilReset .cache.expiresAt) 0 }}cold{{ else }}{{ minutesUntilReset .cache.expiresAt }}m{{ end }}`,fg:`{{ readableOn (color (cascade (minutesUntilReset .cache.expiresAt) "0:error" "9:warning" "21:foreground")) (bgOf) ${Qi} }}`,when:`{{ gt .cache.expiresAt 0 }}`},context:{description:`Context used, in tokens and percent remaining, heating as it fills.`,template:`◔ {{ formatInteger .context.totalTokens }} ({{ .context.contextLeft }}%)`,bg:`{{ ramp .context.contextLeft "step" 0 "error" 21 "warning" 41 (tint) }}`,when:`{{ gt .context.totalTokens 0 }}`},metrics:{description:`Response times, session duration, message count, and lines added/removed.`,template:`{{ if .metrics.lastResponseTime }} Δ {{ template "formatResponseTime" .metrics.lastResponseTime }}{{ end }}{{ if .metrics.responseTime }} ⧖ {{ template "formatResponseTime" .metrics.responseTime }}{{ end }}{{ if .metrics.sessionDuration }} ⧗ {{ template "formatDuration" .metrics.sessionDuration }}{{ end }}{{ if .metrics.messageCount }} ◆ {{ .metrics.messageCount }}{{ end }}{{ if .metrics.linesAdded }} + {{ .metrics.linesAdded }}{{ end }}{{ if .metrics.linesRemoved }} - {{ .metrics.linesRemoved }}{{ end }} `,when:`{{ or (gt .metrics.lastResponseTime 0.0) (gt .metrics.responseTime 0.0) (gt .metrics.sessionDuration 0.0) (gt .metrics.messageCount 0) (gt .metrics.linesAdded 0) (gt .metrics.linesRemoved 0) }}`},activity:{description:`What Claude is doing: the slash command that opened the turn, the in-progress todo, and the tools in flight.`,template:`{{ if .activity.command }} ⌘ {{ .activity.command }}{{ end }}{{ if .activity.todo.total }}{{ if .activity.todo.active }} ☐ {{ .activity.todo.position }}/{{ .activity.todo.total }} {{ abbrev 32 .activity.todo.active }}{{ else }} ☑ {{ .activity.todo.completed }}/{{ .activity.todo.total }}{{ end }}{{ end }}{{ if .activity.tool.running }} ⟳ {{ template "formatToolTally" .activity.tool.running }}{{ end }}{{ if .activity.tool.done }} ✓ {{ template "formatToolTally" .activity.tool.done }}{{ end }} `,when:`{{ or (ne .activity.command "") (gt .activity.todo.total 0) (ne .activity.tool.running "") (ne .activity.tool.done "") }}`}},root:{rows:{identity:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`host`},{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`}]},status:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`segment`,name:`context`},{kind:`segment`,name:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`activity`}]}}},actions:{...By(``).actions,copyDir:{copy:`{{ .current_dir }}`},stepTheme:{set:`theme`,from:`themes`}},looks:{none:{hueShift:0,chromaScale:1,lightnessScale:1,lightnessShift:0},vivid:{hueShift:0,chromaScale:1.35,lightnessScale:1,lightnessShift:0},muted:{hueShift:0,chromaScale:.55,lightnessScale:1,lightnessShift:0},dim:{hueShift:0,chromaScale:1,lightnessScale:.85,lightnessShift:0},bright:{hueShift:0,chromaScale:1,lightnessScale:1,lightnessShift:.08},inverted:{hueShift:0,chromaScale:1,lightnessScale:-1,lightnessShift:1}},presets:{default:{},compact:{root:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`directory`},{kind:`segment`,name:`git`},{kind:`segment`,name:`context`}]},globals:{padding:0}},verbose:{root:{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`segment`,name:`gitPr`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`segment`,name:`context`},{kind:`segment`,name:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`burnrate`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`speed`},{kind:`segment`,name:`tokenSparkline`}]}]}}},editGlobals:{style:`plain`,default_separator:` | `},helpers:{gitPaint:`{{ fg (readableOn (color .color) (bgOf) ${Qi}) .text }}`,gitBranch:`⎇ {{ template "gitPaint" (dict "color" .git.color.branch "text" .git.branch) }}`,gitRepo:`{{ if ne .git.repoName "" }} {{ .git.repoName }}{{ end }}`,gitOperation:`{{ if ne .git.operation "" }} [{{ .git.operation }}]{{ end }}`,gitSha:`{{ if ne .git.sha "" }} {{ .git.sha }}{{ end }}`,gitFlags:`{{ if or (gt .git.staged 0) (gt .git.unstaged 0) (gt .git.untracked 0) (gt .git.conflicts 0) }} {{ if gt .git.staged 0 }}{{ template "gitPaint" (dict "color" .git.color.staged "text" "S") }}{{ end }}{{ if gt .git.unstaged 0 }}{{ template "gitPaint" (dict "color" .git.color.unstaged "text" "U") }}{{ end }}{{ if gt .git.untracked 0 }}{{ template "gitPaint" (dict "color" .git.color.untracked "text" "?") }}{{ end }}{{ if gt .git.conflicts 0 }}{{ template "gitPaint" (dict "color" .git.color.conflicts "text" (printf "!%v" .git.conflicts)) }}{{ end }}{{ end }}`,gitAheadBehind:`{{ if or (gt .git.ahead 0) (gt .git.behind 0) }} {{ if gt .git.ahead 0 }}{{ template "gitPaint" (dict "color" .git.color.ahead "text" (printf "+%v" .git.ahead)) }}{{ end }}{{ if and (gt .git.ahead 0) (gt .git.behind 0) }}/{{ end }}{{ if gt .git.behind 0 }}{{ template "gitPaint" (dict "color" .git.color.behind "text" (printf "-%v" .git.behind)) }}{{ end }}{{ end }}`,gitUpstream:`{{ if ne .git.upstream "" }} [{{ .git.upstream }}{{ template "gitAheadBehind" . }}]{{ end }}`,gitStash:`{{ if gt .git.stash 0 }} {{ template "gitPaint" (dict "color" .git.color.stash "text" (printf "(%v stashed)" .git.stash)) }}{{ end }}`,gitAge:`{{ if gt .git.timeSinceCommit 0 }} ◷ {{ template "formatTimeSince" .git.timeSinceCommit }}{{ end }}`,formatCost:'{{ if lt . 0.01 }}<$0.01{{ else }}${{ printf "%.2f" . }}{{ end }}',formatTokenCount:`{{ if ge . 1000000 }}{{ printf "%.1f" (divf . 1000000) }}M{{ else if ge . 1000 }}{{ printf "%.1f" (divf . 1000) }}K{{ else }}{{ . }}{{ end }}`,formatTokens:`{{ template "formatTokenCount" . }} tokens`,formatToolTally:`{{ $names := splitList "," . }}{{ range $i, $pair := $names }}{{ if lt $i 2 }}{{ if $i }} {{ end }}{{ $kv := splitList ":" $pair }}{{ index $kv 0 }}{{ if ne (index $kv 1) "1" }}×{{ index $kv 1 }}{{ end }}{{ end }}{{ end }}{{ if gt (len $names) 2 }} +{{ sub (len $names) 2 }}{{ end }}`,formatRate:`{{ if lt . 0 }}—/hr{{ else }}{{ template "formatCost" . }}/hr{{ end }}`,formatEta:`{{ if lt . 0 }}—{{ else }}{{ template "formatLongTimeRemaining" . }}{{ end }}`,formatSpeed:`{{ if lt . 0 }}—{{ else }}{{ template "formatTokenCount" (round .) }}/s{{ end }}`,formatTokenBreakdown:`{{ $first := true }}{{ if gt .input 0 }}{{ template "formatTokenCount" .input }} in{{ $first = false }}{{ end }}{{ if gt .output 0 }}{{ if not $first }} + {{ end }}{{ template "formatTokenCount" .output }} out{{ $first = false }}{{ end }}{{ if or (gt .cacheCreation 0) (gt .cacheRead 0) }}{{ if not $first }} + {{ end }}{{ template "formatTokenCount" (add .cacheCreation .cacheRead) }} cached{{ $first = false }}{{ end }}{{ if $first }}0 tokens{{ end }}`,budgetStatus:`{{ if or (le .budget 0) (lt .cost 0) }}{{ else }}{{ $pct := minf 100 (mulf (divf .cost .budget) 100) }}{{ $p := printf "%.0f%%" $pct }}{{ if ge $pct .warn }} !{{ $p }}{{ else }}{{ if ge $pct 50 }} +{{ $p }}{{ else }} {{ $p }}{{ end }}{{ end }}{{ end }}`,formatTimeSince:`{{ if lt . 60 }}{{ . }}s{{ else if lt . 3600 }}{{ div . 60 }}m{{ else if lt . 86400 }}{{ div . 3600 }}h{{ else if lt . 604800 }}{{ div . 86400 }}d{{ else }}{{ div . 604800 }}w{{ end }}`,formatDuration:`{{ if lt . 60 }}{{ printf "%.0f" . }}s{{ else if lt . 3600 }}{{ printf "%.0f" (divf . 60) }}m{{ else if lt . 86400 }}{{ printf "%.1f" (divf . 3600) }}h{{ else }}{{ printf "%.1f" (divf . 86400) }}d{{ end }}`,formatResponseTime:`{{ if lt . 60 }}{{ printf "%.1f" . }}s{{ else }}{{ printf "%.1f" (divf . 60) }}m{{ end }}`,formatLongTimeRemaining:`{{ if ge . 1440 }}{{ $d := div . 1440 }}{{ $h := div (mod . 1440) 60 }}{{ if gt $h 0 }}{{ $d }}d {{ $h }}h{{ else }}{{ $d }}d{{ end }}{{ else if ge . 60 }}{{ $h := div . 60 }}{{ $m := mod . 60 }}{{ if gt $m 0 }}{{ $h }}h {{ $m }}m{{ else }}{{ $h }}h{{ end }}{{ else }}{{ . }}m{{ end }}`,formatResetCountdown:`{{ template "formatLongTimeRemaining" (add 1 (minutesUntilReset .)) }}`}},$D=new Set([QD.globals.palette,...Object.values(QD.segments).map(e=>e.palette)].filter(e=>e!==void 0)),eO=qs(gS(`<default>`,JSON.stringify(QD),$D),QD);function tO(e,t){return e===void 0?!0:e.evaluate(t).map(e=>e.plain).join(``)!==`false`}function nO(e,t){let n=H.fromFragments(e);return n.end=``,n.noWrap=!0,t!==void 0&&!t.isNull&&(n.style=t),n}function rO(e,t,n){e.cellLength>t?e.truncate(t,{mode:n.truncate,marker:n.truncateMarker}):e.cellLength<t&&e.align(n.justify,t)}function iO({text:e,trail:t}){if(t===void 0)return e;let n=nO([e,t]);return n.style=e.style,n}function aO(e,t){let{width:n,justify:r,truncate:i,truncateMarker:a=`…`,baseStyle:o,padding:s,trail:c=[]}=t;if(e.length===0)return[];let l=nO(e,o).pad(s),u=c.length===0?{}:{trail:nO([...c,new H(` `.repeat(s))],o)};if(n===`auto`)return[{text:l,...u}];let d={justify:r,truncate:i,truncateMarker:a};return n===`fill`?[{text:l,fill:d,...u}]:(rO(l,n,d),[{text:l,...u}])}const oO=RegExp(`\\x1b\\[[0-9;]*m|${Jr.source}`,`g`);function sO(e){return k(e.replace(oO,``))}function cO(e,t){let n=e.map(iO),r=[];if(e.forEach(({fill:e},t)=>{e!==void 0&&r.push({at:t,how:e})}),r.length===0||!Number.isFinite(t.width))return n;let i=bT(n,t).split(`
178
- `);if(i.length>1)return n;let a=Math.max(0,t.width-sO(i[0]??``)),o=Math.floor(a/r.length),s=a-o*r.length;return r.forEach(({at:t,how:i},a)=>{let c=o+(a===r.length-1?s:0),{text:l}=e[t];rO(l,l.cellLength+c,i),n[t]=iO(e[t])}),n}function lO(e,t){let n=[],r=[],i=()=>{if(!r.length)return;let e=uO(r,t);e.plain.length>0&&n.push(e),r=[]};for(let a of e)if(fO(a.style).link){i();let e=uO([a],t);e.plain.length>0&&n.push(e)}else r.push(a);return i(),n}function uO(e,t){let n=t!==void 0&&!t.isNull?e.map(e=>dO(e,t)):e,r=H.fromFragments(n);return r.end=``,r.noWrap=!0,n.length===1?r.style=n[0].style:t!==void 0&&!t.isNull&&(r.style=t),r}function dO(e,t){let n=e.copy();return n.style=t.add(fO(e.style)),n}function fO(e){return e instanceof B?e:B.parse(e)}var pO=class extends Error{constructor(e,t,n){super(`Invalid ${t} color ${JSON.stringify(e)}: ${n}`),this.name=`ColorSpecError`}};function mO(e,t,n,r,i){let{palette:a,tint:o}=e,s=hO(n,i),c=s===void 0?o:gO(a,s,`bg`);e.bg=c;let l=hO(r,i),u=l===void 0?$i(a,c,t):gO(a,l,`fg`);return new B({bgcolor:P.fromRgba(c),color:P.fromRgba(u)})}function hO(e,t){if(e!==void 0)return e.evaluate(t).map(e=>e.plain).join(``)}function gO(e,t,n){try{return Vn(e,t)}catch(e){throw e instanceof Rn?new pO(t,n,e.message):e}}function _O(e,t,n,r){let i=new Map,a=Object.entries(t);for(let[t,o]of[...a.filter(([,e])=>!(`do`in e)),...a.filter(([,e])=>`do`in e)])i.set(t,vO(e,t,o,n,r,i));return i}function vO(e,t,n,r,i,a){if(`set`in n){let e=r.get(n.set)??n.set;if(`to`in n)return{kind:`set-literal`,key:n.set,value:n.to,stateVar:e};if(`from`in n){let t=Ux(n.from,i);return{kind:`set-option`,key:n.set,stateVar:e,options:[...t.members],paletteOf:t.paletteOf}}return`int`in n?{kind:`set-int`,key:n.set,stateVar:e}:`cycle`in n?{kind:`set-cycle`,key:n.set,stateVar:e,members:n.cycle}:{kind:`set-bounded`,key:n.set,by:n.by}}if(`persist`in n){let e=Iv.get(n.persist)??n.persist;if(`to`in n)return{kind:`persist-literal`,key:n.persist,value:n.to,stateVar:e};if(`from`in n){let t=Ux(n.from,i);return{kind:`persist-option`,key:n.persist,stateVar:e,options:[...t.members],paletteOf:t.paletteOf}}if(`cycle`in n)return{kind:`persist-cycle`,key:n.persist,stateVar:e,members:n.cycle};if(`removeSegment`in n)return{kind:`layout-op`,key:n.persist,op:{op:`remove`,target:n.removeSegment}};if(`insertSegment`in n)return{kind:`layout-op`,key:n.persist,op:{op:`insert`,segment:n.insertSegment,anchor:n.anchor,relation:n.relation}};if(`insertSegmentFrom`in n){let e=Ux(n.insertSegmentFrom,i);return{kind:`layout-op-option`,key:n.persist,anchor:n.anchor,relation:n.relation,options:[...e.members],paletteOf:e.paletteOf}}return{kind:`persist-bounded`,key:n.persist,by:n.by}}if(`copy`in n)return{kind:`copy`,text:bO(e,n.copy,t)};if(`open`in n)return{kind:`open`,target:bO(e,n.open,t)};if(`reset`in n)return{kind:`reset`,key:n.reset};if(`doctor`in n)return n.doctor===`run`?{kind:`doctor-run`}:{kind:`doctor-fix`,check:n.check};if(`undo`in n)return{kind:`undo`};if(`redo`in n)return{kind:`redo`};if(`save`in n)return{kind:`save`};let[o,...s]=n.do.map(e=>{let n=a.get(e);if(n===void 0)throw Error(`action "${t}" fires "${e}", which is not declared in this config`);return n});return{kind:`do`,head:o,rest:s}}function yO(e){return e.kind===`do`?yO(e.head):e}function bO(e,t,n){try{return e(t)}catch(e){throw Error(`Template parse error in actions.${n}: ${e.message}`,{cause:e})}}function xO(e,t){return e.has(t)?Ig(e.read(t)):``}function SO(e,t){return e.evaluate(t).map(e=>e.plain).join(``)}function CO(e,t,n,r){let i=new H(e,{style:B.combine([r,new B({link:t,bold:n})])});return i.noWrap=!0,i.end=``,i}function wO(e,t){return Math.max(e.members.indexOf(xO(t,e.stateVar)),0)}function TO(e,t,n,r,i){switch(e.kind){case`set-literal`:{let t=xO(r,e.stateVar);return{effects:[{verb:jC,args:[i,e.key,e.value]}],active:t===e.value}}case`set-option`:{let a=n??t,o=xO(r,e.stateVar);return{effects:[{verb:jC,args:[i,e.key,a]}],active:o===a}}case`set-int`:{let a=n??t,o=xO(r,e.stateVar);return{effects:[{verb:jC,args:[i,e.key,a]}],active:o===a}}case`set-cycle`:{let t=e.members[(wO(e,r)+1)%e.members.length];return{effects:[{verb:jC,args:[i,e.key,t]}],active:!1}}case`set-bounded`:return{effects:[{verb:MC,args:[i,e.key,String(e.by)]}],active:!1};case`copy`:return{effects:[{verb:NC,args:[SO(e.text,D_(r))]}],active:!1};case`open`:return{effects:[{verb:PC,args:[SO(e.target,D_(r))]}],active:!1};case`persist-literal`:{let t=xO(r,e.stateVar);return{effects:[{verb:RC,args:[i,e.key,e.value]}],active:t===e.value}}case`persist-option`:{let a=n??t,o=xO(r,e.stateVar);return{effects:[{verb:RC,args:[i,e.key,a]}],active:o===a}}case`persist-cycle`:{let t=e.members[(wO(e,r)+1)%e.members.length];return{effects:[{verb:RC,args:[i,e.key,t]}],active:!1}}case`persist-bounded`:return{effects:[{verb:zC,args:[i,e.key,String(e.by)]}],active:!1};case`reset`:return{effects:[{verb:VC,args:[i,e.key]}],active:!1};case`undo`:return{effects:[{verb:UC,args:[i]}],active:!1};case`redo`:return{effects:[{verb:WC,args:[i]}],active:!1};case`save`:return{effects:[{verb:BC,args:[i]}],active:!1};case`doctor-run`:return{effects:[{verb:KC,args:[i]}],active:!1};case`doctor-fix`:return{effects:[{verb:qC,args:[i,e.check]}],active:!1};case`layout-op`:return{effects:[{verb:HC,args:[i,e.key,Bv(e.op)]}],active:!1};case`do`:{let a=TO(e.head,t,n,r,i);return{effects:[...a.effects,...e.rest.flatMap(e=>TO(e,t,void 0,r,i).effects)],active:a.active}}case`layout-op-option`:{let r={op:`insert`,segment:n??t,anchor:e.anchor,relation:e.relation};return{effects:[{verb:HC,args:[i,e.key,Bv(r)]}],active:!1}}}}function EO(e,t,n,r){if(n.length===0)throw Error(`action "${e}" needs a display (the clickable text)`);if(t.kind===`set-cycle`||t.kind===`persist-cycle`)return{display:$s(`action "${e}"`,n,t.members.length,wO(t,r)),boundValue:void 0};if(n.length>2)throw Error(`action "${e}" takes a display and an optional bound value, got ${n.length} arguments (per-state displays are a cycle action's form)`);return{display:n[0],boundValue:n[1]}}function DO(e,t,n){let r=n.compiled.get(e);if(!r)throw Error(`action "${e}" is not declared in this config`);let i=n.store,{display:a,boundValue:o}=EO(e,yO(r),t,i),{effects:s,active:c}=TO(r,a,o,i,xO(i,`session.id`));return CO(a,XC(s),c)}function OO(e){return{action:{fn:(t,...n)=>DO(t,n,e),argTypes:[`string`,`string`],returnType:`T`}}}function kO(e,t){return CO(`✕`,XC([{verb:jC,args:[xO(e,`session.id`),t,Xs]}]),!1)}function AO(e,t,n){return new B({bgcolor:P.fromRgba(t),color:P.fromRgba($i(e,t,n))})}function jO(e,t,n){return AO(e.palette,fa(e.palette,e.disclosure,[t],n),n)}function MO(e,t,n,r,i){return r===void 0?n=>jO(e,{...n,distribution:t},i):(e,t)=>NO(r(t,n),i)}function NO(e,t){let n=Ui(e,`background`);return new B({bgcolor:P.fromRgba(n),color:P.fromRgba(Jn(Ui(e,`primary`),n,4.5,t))})}function PO(e){return{current:null,drawnAt:e}}function FO(e,t,n,r,i){let a={segName:t,palette:n,disclosure:r,tint:i,bg:void 0,drops:[]};return e.current=a,a}function IO(e,t){let n=e.current;if(n===null)throw Error(`${t} is only available inside a segment's templates — there is no active segment here. Segment-scoped functions cannot be used in variable declarations or layout-node "when" predicates, which are evaluated outside any segment.`);return n}function LO(e){return new H(e).cellLength}function RO(e){return Math.max(1,e.width-e.chromeCols-2*e.padding)}function zO(e){return Math.max(1,RO(e)-(LO(`✕`)+2*e.padding+e.seamCols))}function BO(e,t,n){if(!Number.isFinite(t))return e.length>0?[e.map((e,t)=>t)]:[];let r=Math.max(1,t-n),i=[],a=[],o=0;for(let t=0;t<e.length;t++){let n=e[t];a.length===0?(a=[t],o=n):o+1+n<=r?(a.push(t),o+=1+n):(i.push(a),a=[t],o=n)}return a.length>0&&i.push(a),i}function VO(e,t){let n=[];for(let t of e)n.length>0&&n.push(new H(` `)),n.push(t);let r=H.fromFragments(n);return r.noWrap=t,r.end=``,r}function HO(e,t,n,r){let i=e.compiled.get(t);if(!i||i.kind!==n)throw Error(`picker references action "${t}" which must be ${r}, got ${i?`a ${i.kind} action`:`no such action`}`);return i}function UO(e,t,n){let r=e.compiled.get(t),i=r&&yO(r);if(!i||i.kind!==`set-option`&&i.kind!==`persist-option`&&i.kind!==`layout-op-option`)throw Error(`${n} references action "${t}" which must be a set-option, persist-option, or layout-op-option action ({ set, from }, { persist, from }, or { persist, insertSegmentFrom, anchor, relation }), got ${i?`a ${i.kind} action`:`no such action`}`);return i}function WO(e,t,n,r,i,a,o){let s=UO(a,e,`picker`),c=a.compiled.get(e),l=a.store,u=xO(l,`session.id`),d=`stateVar`in s?xO(l,s.stateVar):void 0,f=s.options.map(LO),p=i?RO(a):1/0,m=LO(`✕`)+1,h=LO(`←`)+1+LO(`→`)+1,g=BO(f,p,m),_=g.length>1?BO(f,p,m+h):g,v=parseInt(xO(l,t.stateVar),10),y=Number.isInteger(v)?Math.max(0,Math.min(v,_.length-1)):0,b=_[y]??[],x=e=>XC([{verb:jC,args:[u,t.key,String(e)]}]),S=n.flatMap(([e,t])=>[e,t]),C=XC([{verb:jC,args:[u,...S]}]),ee=r?[{verb:jC,args:[u,...S]}]:[],te=e=>XC([...TO(c,e,e,l,u).effects,...ee]),w=[CO(`✕`,C,!1)];y>0&&w.push(CO(`←`,x(y-1),!1));for(let e of b){let t=s.options[e];w.push(CO(t,te(t),t===d,o({index:e,count:s.options.length},t)))}return y<_.length-1&&w.push(CO(`→`,x(y+1),!1)),VO(w,i)}function GO(e,t){return{picker:{fn:(n,r,i,a)=>{let o=HO(e,r,`set-int`,`an int action ({ set, int: true })`);return WO(n,{key:o.key,stateVar:o.stateVar},[[o.key,`-1`]],i===!0,a===!0,e,MO(IO(t,`{{ picker }}`),Li(void 0),e.basePalette,UO(e,n,`picker`).paletteOf,t.drawnAt()))},argTypes:[`string`,`string`,`bool`,`bool`],returnType:`T`}}}function KO(e,t,n,r,i){let a=Math.min(Math.floor((t-1)/2),i),o=n,s=0;for(;s<a;){let t=o+LO(e(-(s+1)))+1+LO(e(s+1))+1;if(t>r)break;o=t,s+=1}return s}function qO(e,t,n,r,i){if(!(`stateVar`in t))throw Error(`carousel references action "${e}", which inserts a segment and holds no current value to centre on — a carousel needs a { set, from } or { persist, from } action`);let a=n.store;if(!a.has(t.stateVar))throw Error(`carousel references action "${e}", whose key "${t.stateVar}" no variable reads back, so there is no current value to centre on — declare { kind: "state", key: "${t.stateVar}" } among the variables`);let o=n.compiled.get(e),s=xO(a,`session.id`),{options:c}=t,l=c.length,u=xO(a,t.stateVar),d=Math.max(c.indexOf(u),0),f=e=>((d+e)%l+l)%l,p=e=>c[f(e)],m=new Map,h=e=>{let t=m.get(e);if(t!==void 0)return t;let n=XC(TO(o,p(e),p(e),a,s).effects);return m.set(e,n),n},g=e=>CO(p(e),h(e),p(e)===u,r({index:f(e),count:l},p(e))),_=KO(p,l,LO(`◀`)+1+LO(p(0))+1+LO(`▶`),zO(n),i),v=e=>Array.from({length:_},(t,n)=>g(e*(n+1)));return VO([...v(-1).reverse(),CO(`◀`,h(-1),!1),g(0),CO(`▶`,h(1),!1),...v(1)],!0)}function JO(e,t){return{carousel:{fn:(n,r,...i)=>{if(i.length>0)throw Error(`carousel "${n}": takes at most one neighbours count after the action name, got ${1+i.length}`);if(r!==void 0&&!(Number.isInteger(r)&&r>=0))throw Error(`carousel "${n}": neighbours must be a whole number ≥ 0 (0 shows only ◀ CURRENT ▶), got ${String(r)}`);let a=r??1/0,o=UO(e,n,`carousel`);return qO(n,o,e,MO(IO(t,`{{ carousel }}`),Li(void 0),e.basePalette,o.paletteOf,t.drawnAt()),a)},argTypes:[`string`,`float`],returnType:`T`}}}const YO=[`~/code`,`main`,`opus`,`42%`,`5m`,`$1.20`];function XO(e,t,n){let r=aa(e,{hue:Ai,depth:0},n);return[U(t).map((t,n)=>({text:YO[n%YO.length],colour:Wi(e,t)})),[{text:`▾ open`,colour:r.state},{text:`menu`,colour:r.plane}],[{text:`warn`,colour:Ui(e,`warning`)},{text:`error`,colour:Ui(e,`error`)}]]}function ZO(e,t,n,r){let i=XO(e,t,n).flatMap((t,r)=>t.map(({text:t,colour:i},a)=>({gap:r>0&&a===0?` `:``,cell:new H(` ${t} `,{style:AO(e,i,n)})}))),a=[],o=0;for(let{gap:e,cell:t}of i){if(o+=e.length+t.cellLength,o>r)break;e!==``&&a.push(new H(e)),a.push(t)}let s=H.fromFragments(a);return s.noWrap=!0,s.end=``,s}function QO(e,t){return{themePreview:{fn:()=>ZO(e.palette,e.progression,t.drawnAt(),zO(e)),argTypes:[],returnType:`T`}}}const $O=e=>e.slice(e.lastIndexOf(`.`)+1),ek=(e,t)=>{let n=new H($O(e));return n.truncate(t,{marker:`…`}),n.plain};function tk(e,t){let n=e.map(e=>e.map(({name:e})=>LO($O(e)))),r=e=>n.every(n=>n.reduce((t,n)=>t+Math.min(n,e)+2,0)<=t),i=Math.max(1,...n.flat());for(;i>1&&!r(i);)--i;return i}function nk(e,t,n,r){let i=tk(e,r),a=e.map(e=>{let a=[],o=0;for(let{name:s,address:c,palette:l}of e){let e=new H(` ${ek(s,i)} `,{style:AO(l,ga(l,{kind:`bar`,progression:t,address:c},n).tint,n)});if(o+=e.cellLength,o>r)break;a.push(e)}return a}),o=H.fromFragments(a.flatMap((e,t)=>t===0?e:[new H(`
179
- `),...e]));return o.noWrap=!0,o.end=``,o}function rk(e,t){return{layoutPreview:{fn:()=>nk(e.layout(),e.progression,t.drawnAt(),zO(e)),argTypes:[],returnType:`T`}}}function ik(e,t,n,r){let i=IO(r.activeSegment,`{{ menu }}`),a=r.action,o=zh(i.segName,e,n.key),s=Hh(o),c=Rh(e),l=xO(a.store,o)===c,u=xO(a.store,`session.id`),d=l?Xs:c,f=CO($s(`{{ menu "${e}" }}`,t,2,+!!l),XC([{verb:jC,args:[u,o,d,s,`0`]}]),!1);return i.drops.push(...l?[WO(e,{key:s,stateVar:s},[[o,Xs],[s,`0`]],n.closeOnPick,n.paged,a,MO(i,n.distribution,a.basePalette,UO(a,e,`menu`).paletteOf,r.activeSegment.drawnAt()))]:[]),f}const ak=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function ok(e,t){let n=t[t.length-1],r=ak(n)?n:void 0,i=r===void 0?t:t.slice(0,-1),a=i.findIndex(e=>typeof e!=`string`);if(a!==-1)throw Error(`{{ menu "${e}" }} display #${a+1} is not text (${JSON.stringify(i[a])}) — a menu binds its trigger text, then an optional trailing (dict …) of options`);return{displays:i,options:Kh(r??{})}}function sk(e){return{menu:{fn:(t,...n)=>{let{displays:r,options:i}=ok(t,n);return ik(t,r,i,e)},argTypes:[`string`,`value`],returnType:`T`}}}function ck(e){let{value:t,max:n,width:r,filled:i,empty:a,colourAt:o}=e,s=lk(t,n,r),c=[];for(let e=0;e<r;e++){let t=e<s,l=t&&o!==void 0?o(e*n/r):void 0;c.push(new H(t?i:a,{style:l===void 0?void 0:new B({color:l})}))}let l=H.fromFragments(c);return l.end=``,l.noWrap=!0,l}function lk(e,t,n){return!Number.isFinite(e)||!Number.isFinite(t)||t<=0?0:Math.min(n,Math.max(0,Math.round(e/t*n)))}function uk(e){let t={fn:(()=>{let t=IO(e,`{{ bgOf }}`);if(t.bg===void 0)throw Error(`{{ bgOf }} is not available while segments.${t.segName}'s own "bg:" is being evaluated — the background is what that template computes. Reach for a palette color there instead, e.g. bg: '{{ darken (color "surface") 1 }}'.`);return t.bg.hex}),argTypes:[],returnType:`string`},n={fn:(()=>IO(e,`{{ tint }}`).tint.hex),argTypes:[],returnType:`string`},r=c_(()=>IO(e,`{{ color }} / {{ ramp }} / {{ gauge }}`).palette),i={fn:((e,t,n,i,a,o,...s)=>ck({value:e,max:t,width:n,filled:i,empty:a,colourAt:o===void 0||s.length===0?void 0:e=>String(r.ramp.fn(e,o,...dk(s)))})),argTypes:[`float`,`float`,`int`,`string`,`string`,`string`,`string`],returnType:`T`};return{...r,bgOf:t,tint:n,gauge:i}}function dk(e){return e.flatMap(e=>{let t=e.indexOf(`:`),n=t<0?NaN:Number(e.slice(0,t));if(!Number.isFinite(n))throw Error(`{{ gauge }} stop "${e}" must be "<position>:<colour>", e.g. "80:error" or "80:#ff0000"`);return[n,e.slice(t+1)]})}function fk(e){let t=[],n=[];for(let r of e){if(!r.contains(`
170
+ Tip: every bar carries a settings menu — click it (${$s} by\n default) for quick actions, preset switching, edit mode, and clickable\n theme/look/style/wrap/padding controls.\n`}async function Zw(e){let t=e.includes(`--force`),n=e.filter(e=>e!==`--force`),r=n.length>0?n:[...kw],i=Uw();process.platform===`darwin`?Gw(i.distPath):process.stdout.write(`Skipping URL handler (cmd-click verbs are macOS-only).
171
+ `),Qw(i.binPath,r,t),process.stdout.write(Xw());let a=Dw(ww,Ew(vw,await Tw(ww,fetch,`https://registry.npmjs.org`)));process[a.stream].write(a.text)}function Qw(e,t,n,i){let a=i??yw();r.mkdirSync(c.dirname(a),{recursive:!0});let o={};if(r.existsSync(a))try{o=JSON.parse(r.readFileSync(a,`utf-8`))}catch(e){throw Error(`Could not parse ${a}: ${e instanceof Error?e.message:String(e)}`)}let s=o.statusLine?.command,l=[e,jw(e)],u=typeof s==`string`&&(s.startsWith(`pnpm dlx @promptctl/cc-candybar@`)||l.some(e=>s===e||s.startsWith(`${e} `)));if(s&&!u&&!n){process.stderr.write(`Skipping settings.json update: existing statusLine.command appears customized.\n Current: ${s}\n To overwrite, re-run with --force.\n`);return}o.statusLine={type:`command`,command:Mw(e,t)},ke(a,JSON.stringify(o,null,2)),process.stdout.write(`Updated ${a}\n`)}function $w(e,t){return e.kind===`owned`?t(e.pid,e.startTime)?{kind:`attach-and-exit`,reason:`live owner pid=${e.pid} holds the socket`}:{kind:`reclaim`,reason:`owner pid=${e.pid} is gone or recycled`}:e.kind===`absent`?{kind:`reclaim`,reason:`no lease — stale socket, no live owner`}:{kind:`reclaim`,reason:`unreadable lease (${e.detail}) — cannot prove a live owner`}}function eT(e){let t;try{t=r.readFileSync(e,`utf8`)}catch(e){return e.code===`ENOENT`?{kind:`absent`}:{kind:`unreadable`,detail:`read failed: ${e.message}`}}let n;try{n=JSON.parse(t)}catch(e){return{kind:`unreadable`,detail:`bad JSON: ${e.message}`}}let i=n,a=i?.pid;if(typeof a!=`number`||!Number.isInteger(a)||a<=0)return{kind:`unreadable`,detail:`no valid pid (got ${JSON.stringify(a)})`};let o=i?.startTime;return o!=null&&typeof o!=`string`?{kind:`unreadable`,detail:`invalid startTime (got ${JSON.stringify(o)})`}:{kind:`owned`,pid:a,startTime:o??null}}function tT(e,n){let i=`${e}.${t.pid}.tmp`;try{return r.writeFileSync(i,JSON.stringify(n),{mode:384}),r.renameSync(i,e),null}catch(e){let t=e.message;try{r.unlinkSync(i)}catch(e){if(e.code!==`ENOENT`)return`${t}; also failed to remove temp ${i}: ${e.message}`}return t}}function nT(e,t){let n=eT(e);if(n.kind===`owned`&&n.pid===t)try{r.unlinkSync(e)}catch{}}function rT(e){try{let t=r.statSync(e);return{kind:`present`,identity:{dev:t.dev,ino:t.ino}}}catch(e){return e.code===`ENOENT`?{kind:`absent`}:{kind:`unreadable`,detail:e.message}}}function iT(e,t,n,r){let i=aT(e,t);return i===null?r.kind===`owned`?r.pid===n?{kind:`owned`}:{kind:`displaced`,reason:`lease reassigned (names pid=${r.pid}, we are pid=${n}) — a reclaimer overwrote it`}:{kind:`displaced`,reason:`lease not held (${r.kind}) — no longer the socket owner`}:{kind:`displaced`,reason:i}}function aT(e,t){return t.kind===`present`?t.identity.dev===e.dev&&t.identity.ino===e.ino?null:`socket replaced (bound dev=${e.dev} ino=${e.ino}, now dev=${t.identity.dev} ino=${t.identity.ino})`:t.kind===`absent`?`socket path gone (ENOENT) — unlinked by a reclaimer`:`socket path unreadable (${t.detail}) — cannot prove ownership`}function oT(e){let t=!1;function n(){let n=iT(e.bound,e.readIdentity(),e.myPid,e.readLease());return n.kind===`displaced`&&!t&&(t=!0,e.log(`warn`,`ownership self-check: ${n.reason}; shutting down`),e.shutdown(0)),n}function r(t=e.intervalMs??5e3){let r=setInterval(()=>{n().kind===`displaced`&&clearInterval(r)},t);return r.unref(),{disarm:()=>clearInterval(r)}}return{check:n,arm:r}}function sT(e,t=Ee){let n=t({bin:`ps`,args:[`-o`,`lstart=`,`-p`,String(e)],category:`process-fingerprint`,timeoutMs:2e3,env:{...process.env,LC_ALL:`C`,TZ:`UTC`}});if(n.ok){let e=n.stdout.trim();return e.length>0?{kind:`start`,token:e}:{kind:`unavailable`,detail:`ps produced no start-time`}}return{kind:`unavailable`,detail:n.reason===`spawn-error`?n.error??`ps spawn failed`:`ps ${n.reason} (exit ${n.exitCode})`}}function cT(e,t,n){if(t===null)return n.pidAlive(e);let r=n.readStartTime(e);switch(r.kind){case`start`:return r.token===t;case`unavailable`:return n.pidAlive(e)}}function lT(e,t=sT){let n=t(e);return n.kind===`start`?n.token:null}const uT=`CC_CANDYBAR_PARENT_PID`;function dT(e){let t=e[uT];if(t===void 0)return{kind:`outlives-nobody`};let n=Number.parseInt(t,10);if(!Number.isInteger(n)||n<=0)throw Error(`${uT} must be a positive integer pid, got ${JSON.stringify(t)}`);return{kind:`anchored`,pid:n}}function fT(e){if(e.anchor.kind===`outlives-nobody`)return{disarm:()=>{}};let{pid:t}=e.anchor,n=setInterval(()=>{e.isAlive(t)||e.onOrphaned(`spawner pid ${t} gone`)},e.intervalMs??250);return n.unref(),{disarm:()=>clearInterval(n)}}function pT(e){try{return t.kill(e,0),!0}catch(e){return e.code===`EPERM`}}function mT(){let e=Number(process.env.CC_CANDYBAR_DAEMON_CEILING??``);return Number.isInteger(e)&&e>0?e:16}function hT(e,t,n){return e?t>=n?{allow:!1,reason:`${t} live isolated daemons registered >= ceiling ${n}`}:{allow:!0,reason:`${t} live isolated daemons registered < ceiling ${n}`}:{allow:!0,reason:`canonical production socket — exempt (bind() already caps it to one)`}}function gT(e){try{return r.readdirSync(e).filter(e=>e.endsWith(`.json`)).map(t=>c.join(e,t))}catch{return[]}}function _T(e){let t;try{t=r.readFileSync(e,`utf8`)}catch{return null}try{let e=JSON.parse(t),n=e?.pid;return typeof n!=`number`||!Number.isInteger(n)||n<=0?null:{pid:n,startTime:typeof e?.startTime==`string`?e.startTime:null}}catch{return null}}function vT(e,t,n){let r=0;for(let i of e)t(i.identity.pid,i.identity.startTime)?r++:n(i.path);return r}function yT(e){if(!e.isolated)return{decision:hT(!1,0,e.ceiling),registryPath:null};e.ensureDirSafe(e.registryDir);let t=[];for(let n of e.listFiles(e.registryDir)){let r=e.readEntry(n);r!==null&&r.pid!==e.pid&&t.push({path:n,identity:r})}let n=hT(!0,vT(t,e.isSameLiveProcess,e.removeFile),e.ceiling);if(!n.allow)return{decision:n,registryPath:null};let r=c.join(e.registryDir,`pid-${e.pid}.json`);return e.writeEntry(r,{pid:e.pid,startTime:e.startTime}),{decision:n,registryPath:r}}function bT(e,t,n,r){let i=n(e);if(i!==null&&i.pid===t)try{r(e)}catch{}}function xT(e,t={}){return{isolated:!!process.env.CC_CANDYBAR_SOCKET,registryDir:Be(),ceiling:mT(),pid:process.pid,startTime:e,isSameLiveProcess:(e,t)=>cT(e,t,{readStartTime:sT,pidAlive:pT}),listFiles:gT,readEntry:_T,removeFile:e=>{try{r.unlinkSync(e)}catch{}},writeEntry:(e,t)=>{let n=`${e}.${t.pid}.tmp`;try{r.writeFileSync(n,JSON.stringify(t),{mode:384}),r.renameSync(n,e)}catch(e){try{r.unlinkSync(n)}catch(e){e.code}throw e}},ensureDirSafe:process.env.CC_CANDYBAR_DAEMON_REGISTRY_DIR?Pe:e=>{Pe(c.dirname(e)),Pe(e)},...t}}function ST(e){return e<32||e===127||e>=128&&e<=159}function CT(e){let t=``;for(let n of e)t+=ST(n.codePointAt(0)??0)?` `:n;return t.replace(/\s+/g,` `).trim()}function wT(e,t){let n=CT(e),r=``,i=0;for(let e of n){if(i===t)return r.replace(/.$/u,`…`);r+=e,i++}return r}const TT=`\x1B[38;2;255;255;255m`,ET=`\x1B[48;2;200;40;40m`;function DT(e){let t=/;2;(\d+);(\d+);(\d+)m$/.exec(e);if(t===null)throw Error(`diagnostic-style: not a 24-bit SGR: ${e}`);return`#`+t.slice(1,4).map(e=>Number(e).toString(16).padStart(2,`0`)).join(``)}const OT={fg:DT(TT),bg:DT(ET)},kT={fg:DT(`\x1B[38;2;0;0;0m`),bg:DT(`\x1B[48;2;220;160;40m`)},AT={unicode:hi,ascii:{glyph:`>`,divider:`|`,lead:`<`,tail:`>`}},jT={unicode:{},ascii:{left:`(`,right:`)`}};function MT(e,t,n){switch(e){case`capsule`:return new _i(jT[t]);case`plain`:return new vi(n===void 0?{}:{separator:n});case`powerline`:return new gi(AT[t]);default:return e}}const NT=new Map;function PT(e){let t=JSON.stringify([e.style,e.charset,e.separator??null]),n=NT.get(t);if(n!==void 0)return n;let r=MT(e.style,e.charset,e.separator),i=e=>new H(`x`,{end:``,noWrap:!0,style:new B({bgcolor:e})}),a=e=>new H(xi(new oi(e,r),{colorSystem:null}).replace(/\n$/,``)).cellLength,o=a([i(`#101010`)]),s={chrome:o-1,seam:a([i(`#101010`),i(`#202020`)])-o-1};return NT.set(t,s),s}function FT(e){return PT(e).chrome}function IT(e){return PT(e).seam}function LT(e,t){if(e.length===0)return``;let n=MT(t.style,t.charset,t.separator),r=t.colorCompatibility,i=t.wrap&&Number.isFinite(t.width)?xi(new Di([...e],{joiner:n}),{width:t.width,colorSystem:r}):xi(new oi([...e],n),{colorSystem:r});if(!i.endsWith(`
172
+ `))throw Error(`renderStripCells: rich-js strip output did not end its last line`);return i.slice(0,-1)}function RT(e){return Math.min(20,e??20)}const zT={heading:`ERROR`,glyph:`⚠`,colors:OT},BT={heading:`WARNING`,glyph:`⚠`,colors:kT},VT={heading:`UPDATE`,glyph:`⬆`,colors:kT};function HT(e,t){return{text:CT(e),link:t}}function UT(e,t,n){let[r,...i]=[WT(e,zT,XC),t,WT(n,BT,ZC)].flat();return r===void 0?null:{channels:[r,...i]}}function WT(e,t,n){let r=fw([{verb:n,args:[e]}]),[i,...a]=e.split(/\r\n|\r|\n/).map(e=>HT(e,r)).filter(e=>e.text!==``).map(e=>[e]);return i===void 0?[]:[{severity:t,message:e,lines:[i,...a]}]}function GT(e){return e.channels.map(e=>`${e.severity.heading}\n${e.message}\n`).join(`
173
+ `)}function KT(e,t,n,r){if(t===null)return e;let i=qT(r),a=t.channels.flatMap(e=>JT(e,i)),o=n.failedConfigFile!==null||a.length>r.rowCap,s=a.slice(0,r.rowCap-Number(o)),c=o?[YT(t,n,a.length-s.length,i)]:[],l=[...s,...c].join(`
174
+ `);return e?`${l}\n${e}`:l}function qT(e){return{style:`plain`,separator:``,width:e.width,wrap:!0,padding:0,charset:`unicode`,colorCompatibility:e.colorCompatibility}}function JT(e,t){let n=new B({bgcolor:e.severity.colors.bg,color:e.severity.colors.fg}),r=Lt(Math.max(2,t.width-1)),i=(e,t)=>new H(`${e} `,{style:t,end:``,noWrap:!0});return e.lines.flatMap((a,o)=>LT([i(o===0?e.severity.glyph:` `,n.withLink(a[0].link)),...a.flatMap(e=>{let t=n.withLink(e.link);return e.text.split(` `).flatMap(e=>Bt(e,r)).map(e=>i(e,t))})],t).split(`
175
+ `))}function YT(e,t,n,r){let{colors:i}=e.channels[0].severity,{fullText:a,failedConfigFile:o}=t,s=new B({bgcolor:i.bg,color:i.fg}),c=(e,t)=>new H(e,{style:t,end:``,noWrap:!0}),l=n>0?[c(`${n} more rows · `,s),a.kind===`file`?c(`open full text`,s.withLink(ne(a.path).href)):c(`full text unavailable: ${CT(a.reason)}`,s)]:[],u=o===null?[]:[c(`${l.length>0?` · `:``}open `,s),c(CT(o),s.withLink(ne(o).href))],d=[c(`↳ `,s),...l,...u.slice(0,-1)],f=d.reduce((e,t)=>e+t.cellLength,0),p=u.slice(-1).map(e=>e.truncate(Math.max(1,r.width-f),{mode:`middle`})),m=H.fromFragments([...d,...p]).truncate(r.width);return m.noWrap=!0,LT([m],r)}const XT=e=>!e.startsWith(`.`)&&!e.endsWith(`~`);function ZT(e,t){return t.isSymbolicLink()?Buffer.from(r.readlinkSync(e)):r.readFileSync(e)}function QT(e,t){return r.readdirSync(t).filter(XT).sort().flatMap(n=>{let i=c.join(t,n),a=r.lstatSync(i,{throwIfNoEntry:!1});return a===void 0?[]:a.isDirectory()?QT(e,i):[[c.relative(e,i).split(c.sep).join(`/`),ZT(i,a)]]})}function $T(e){let t=ie.createHash(`sha256`);for(let[n,r]of QT(e,e))t.update(n).update(`\0`).update(r).update(`\0`);return t.digest(`hex`)}const eE=e=>e.slice(0,7);function tE(e){return c.dirname(c.dirname(e))}function nE(){return{version:vw,digest:`b8af4ab11d8997a8c414cc61cd82328a3626d2da694db6319db2d45a75a04a27`}}function rE(e){let t=JSON.parse(r.readFileSync(c.join(e,`package.json`),`utf8`)),n=typeof t==`object`&&t?t.version:void 0;if(typeof n!=`string`)throw Error(`${c.join(e,`package.json`)} has no version string`);return n}function iE(e,t){try{let n=tE(w(e)),i=c.join(n,`src`);if(!r.existsSync(i))return{kind:`not-source-checkout`};let a=t(),o=$T(i);return o===a.digest?{kind:`current`,root:n,stamp:a}:{kind:`stale`,root:n,source:{version:rE(n),digest:o},running:a}}catch(e){return{kind:`unchecked`,reason:e.message}}}var $=class extends Error{constructor(e){super(e),this.name=`BadVerbArgs`}};const aE=/^-?\d+$/;function oE(e,t,n){return e===void 0?t:Math.max(t,Math.min(n,e))}function sE(e,t,n=`set-state`){let r=e.filter(e=>e.includes(`/`));if(r.length>0)throw Error(`makeAllowListValidator(${t}): values contain "/" — the ${n} wire shape splits values on "/" so slash-bearing options cannot be addressed. Offending values: ${r.join(`, `)}`);if(e.includes(``))throw Error(`makeAllowListValidator(${t}): empty string is not a writable option — the validator rejects empty input before the allow-list check, so an "" in the allowed list could be rendered but never delivered. Remove "" from the allowed list.`);let i=new Set(e),a=[...e];return e=>e?i.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown ${t} "${e}" (have: ${a.join(`, `)})`}:{ok:!1,reason:`${t} value is required`}}function cE(e){return t=>{if(!t)return{ok:!1,reason:`${e} value is required`};if(!aE.test(t))return{ok:!1,reason:`${e} must be an integer, got "${t}"`};let n=t[0]===`-`,r=(n?t.slice(1):t).replace(/^0+/,``);return r===``?{ok:!0,value:`0`}:{ok:!0,value:n?`-${r}`:r}}}function lE(e,t,n){return r=>r?aE.test(r)?{ok:!0,value:String(Math.max(e,Math.min(t,parseInt(r,10))))}:{ok:!1,reason:`${n} must be an integer, got "${r}"`}:{ok:!1,reason:`${n} value is required`}}function uE(e,t,n=`state`){let r=t.filter(e=>e.kind===`range`),i=t.some(e=>e.kind===`int`),a=t.flatMap(e=>e.kind===`allow-list`?e.allowed:[]);if(r.length===0&&!i)return{kind:`allow-list`,allowed:[...new Set(a)]};let o=a.filter(e=>!aE.test(e));if(o.length>0)throw Error(`${n} action table: key "${e}" is an integer spec (a paged cursor or a bounded value) but a click writes non-integer value(s) to it (${o.join(`, `)}). A ${n} key has one key shape — point that click at a distinct key, or write an integer.`);if(i&&r.length>0)throw Error(`${n} action table: key "${e}" is declared as both a paged cursor (int) and a bounded value (range) — a ${n} key has one key shape. Use distinct keys.`);if(r.length>0){let t=Math.min(...r.map(e=>e.min)),i=Math.max(...r.map(e=>e.max)),o=a.filter(e=>{let n=parseInt(e,10);return n<t||n>i});if(o.length>0)throw Error(`${n} action table: key "${e}" is a bounded range [${t},${i}] but a click writes out-of-range value(s) to it (${o.join(`, `)}). The range gate would clamp them, storing a different value than the click renders — write an in-range integer, or point that click at a distinct key.`);return{kind:`range`,min:t,max:i,seed:oE(r[0].seed,t,i)}}return{kind:`int`}}function dE(e){return e===`config`?`set-config`:`set-state`}function fE(e,t,n){return t.kind===`int`?cE(`menu page "${e}"`):t.kind===`range`?lE(t.min,t.max,`${n} stepper "${e}"`):sE(t.allowed,`${n} "${e}"`,dE(n))}function pE(e,t=`state`){let n=new Map;for(let{key:t,spec:r}of e){let e=n.get(t);e?e.push(r):n.set(t,[r])}return[...n].map(([e,n])=>({key:e,spec:uE(e,n,t)}))}function mE(e,t=`state`){let n=new Map(Object.entries(e).map(([e,t])=>[e,{validator:t,permanent:!0}]));function r(){let e=[];for(let[t,r]of n)r.permanent&&e.push(t);return e}return{register(e,i){if(!e)throw Error(`register: key is required`);if(e.includes(`/`))throw Error(`register: key "${e}" contains "/" — the wire shape splits on "/" so a slash-bearing key cannot be addressed. Use a slash-free key.`);let a=n.get(e);if(a){if(a.permanent)throw Error(`register: key "${e}" is a built-in ${t} key and cannot be re-claimed (built-in keys: ${[...r()].join(`, `)})`);let n=uE(e,[...a.specs,i],t);a.specs.push(i),a.merged=n,a.validator=fE(e,n,t)}else{let r=uE(e,[i],t);n.set(e,{permanent:!1,specs:[i],merged:r,validator:fE(e,r,t)})}let o=!0;return()=>{if(!o)return;o=!1;let r=n.get(e);if(!r||r.permanent)return;let a=r.specs.indexOf(i);a>=0&&r.specs.splice(a,1),r.specs.length===0?n.delete(e):(r.merged=uE(e,r.specs,t),r.validator=fE(e,r.merged,t))}},validate(e,r){let i=n.get(e);return i?i.validator(r):{ok:!1,reason:`unknown ${t} key "${e}" (have: ${[...n.keys()].join(`, `)})`}},listKeys(){return[...n.keys()]},listBaselineKeys(){return r()},rangeParamsFor(e){let t=n.get(e);if(!t||t.permanent||t.merged.kind!==`range`)return null;let{min:r,max:i,seed:a}=t.merged;return{min:r,max:i,seed:a}}}}const hE=mE({},`config`);function gE(){return hE.listKeys()}function _E(e,t){return hE.validate(e,t)}function vE(e){return hE.rangeParamsFor(e)}function yE(e,t,n){return`persist`in e?`to`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:[e.to]}}]:`from`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:iS(e.from,n).members}}]:`cycle`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:e.cycle}}]:`removeSegment`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:[Wv({op:`remove`,target:e.removeSegment})]}}]:`insertSegment`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:[Wv({op:`insert`,segment:e.insertSegment,anchor:e.anchor,relation:e.relation})]}}]:`insertSegmentFrom`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:iS(e.insertSegmentFrom,n).members.map(t=>Wv({op:`insert`,segment:t,anchor:e.anchor,relation:e.relation}))}}]:[{key:e.persist,spec:{kind:`range`,min:e.min,max:e.max,seed:oE(t.get(e.persist),e.min,e.max)}}]:[]}function bE(e){return jc(e.globals)}function xE(e){let t=new Set;for(let n of Object.values(e.actions)){`reset`in n&&t.add(n.reset);let e=`persist`in n?ay(n.persist):null;e?.scope===`preset-root`&&t.add(ry(e.preset))}return[...t].map(e=>({key:e,spec:{kind:`allow-list`,allowed:[]}}))}function SE(e){let t=bE(e),n=new Map([...nS(e),...Cy(e)]);return[...xE(e),...Object.values(e.actions).flatMap(e=>yE(e,t,n))]}function CE(e){return pE(SE(e),`config`)}function wE(e,t){return hE.register(e,t)}const TE=Sa(),EE=new Set(TE),DE=new Set(Ma),OE=e=>e?EE.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown theme "${e}" (have: ${TE.join(`, `)})`}:{ok:!1,reason:`theme name is required`},kE=e=>e?DE.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown style "${e}" (have: ${Ma.join(`, `)})`}:{ok:!1,reason:`style name is required`},AE=new Set([`1`,`true`]),jE=new Set([`0`,`false`]),ME=mE({style:kE,theme:OE,"toolbar-expanded":e=>AE.has(e)?{ok:!0,value:`1`}:jE.has(e)?{ok:!0,value:``}:{ok:!1,reason:`expected boolean-ish (1, 0, true, false), got "${e}"`}});function NE(){return ME.listKeys()}function PE(e,t){return ME.register(e,t)}function FE(e,t){return ME.validate(e,t)}function IE(e){return ME.rangeParamsFor(e)}function LE(e,t,n){return`set`in e?`to`in e?[{key:e.set,spec:{kind:`allow-list`,allowed:[e.to]}}]:`from`in e?[{key:e.set,spec:{kind:`allow-list`,allowed:iS(e.from,n).members}}]:`int`in e?[{key:e.set,spec:{kind:`int`}}]:`cycle`in e?[{key:e.set,spec:{kind:`allow-list`,allowed:e.cycle}}]:[{key:e.set,spec:{kind:`range`,min:e.min,max:e.max,seed:oE(t.get(e.set),e.min,e.max)}}]:[]}function RE(e){let t=new Set(ME.listBaselineKeys());return e.filter(e=>e.spec.kind!==`allow-list`||!t.has(e.key))}function zE(e){let t=new Map,n=/^-?\d+$/;for(let r of Object.values(e.variables)){if(r.kind!==`state`)continue;let e=r.default;e!==void 0&&n.test(e)&&t.set(r.key,parseInt(e,10))}for(let[n,r]of jc(e.globals))t.set(n,r);return t}function BE(e){let t=zE(e),n=nS(e);return RE(Object.values(e.actions).flatMap(e=>LE(e,t,n)))}function VE(e){return pE(BE(e))}const HE=`update.dismissed`,UE=`updateNotice`;function WE(e){return e.kind===`source`?e.newer.digest:Sw(e.newer)}const GE=e=>`${e.version} [${eE(e.digest)}]`;function KE(e){switch(e.kind){case`source`:return{headline:`Newer source`,newer:GE(e.newer),running:GE(e.running),act:`rebuild`,busy:`rebuilding…`,command:{bin:`pnpm`,args:[`build`],cwd:e.root}};case`release`:return{headline:`Newer release`,newer:Sw(e.newer),running:Sw(e.running),act:`upgrade`,busy:`upgrading…`,command:{bin:`pnpm`,args:[`dlx`,`${ww}@${Sw(e.newer)}`,`install`]}}}}const qE={kind:`idle`},JE={kind:`running`};function YE(e,t,n){if(e===null)return[];let r=WE(e);if(!n.enabled||n.dismissed===r)return[];let i=KE(e),a=`${i.headline}: ${i.newer}. You're on ${i.running}.`,o=t.kind===`failed`&&t.identity===r?[`${i.act} failed: ${t.reason}`]:[],s=[a,...o].join(`
176
+ `),c=fw([{verb:ZC,args:[s]}]),l=t.kind===`running`?HT(`[${i.busy}]`,c):HT(`[${i.act}]`,fw([{verb:sw,args:[n.sessionId]}]));return[{severity:VT,message:s,lines:[[HT(a,c),l,HT(`[dismiss]`,fw([{verb:GC,args:[n.sessionId,HE,r]}])),HT(`[disable]`,fw([{verb:QC,args:[n.sessionId,UE,`false`]}]))],...o.map(e=>[HT(e,c)])]}]}function XE(e,t){return e.kind===`stale`?{kind:`source`,root:e.root,newer:e.source,running:e.running}:e.kind===`not-source-checkout`&&t!==null&&t.kind===`stale`?{kind:`release`,newer:t.latest,running:t.installed}:null}function ZE(e){switch(e.kind){case`current`:return[`info`,`build: current ${GE(e.stamp)}`];case`stale`:return[`info`,`build: stale — source ${GE(e.source)}, running ${GE(e.running)}`];case`not-source-checkout`:return[`info`,`build: not a source checkout`];case`unchecked`:return[`warn`,`build: unchecked: ${e.reason}`]}}function QE(e){switch(e.kind){case`current`:return[`info`,`release: current ${Sw(e.installed)}`];case`stale`:return[`info`,`release: stale — latest ${Sw(e.latest)}, running ${Sw(e.installed)}`];case`ahead`:return[`info`,`release: ahead — running ${Sw(e.installed)}, latest ${Sw(e.latest)}`];case`unchecked`:return[`warn`,`release: unchecked: ${e.reason}`]}}function $E(e){let t=null;return([n,r])=>{r!==t&&(t=r,e(n,r))}}const eD=e=>e.split(/\r?\n/).map(e=>e.trim()).filter(e=>e!==``).at(-1);function tD(e){let t=e.exitCode===null?``:` (exit ${e.exitCode})`,n=eD(e.stderr)??e.error??eD(e.stdout)??`no output`;return`${e.reason}${t}: ${n}`}function nD(e){let{entryUrl:t,intervalMs:n,releaseIntervalMs:r,registryUrl:i,fetchImpl:a,onApplied:o,log:s}=e,c={kind:`unchecked`,reason:`not sampled yet`},l=null,u=qE,d=null,f=$E(s),p=$E(s),m=()=>XE(c,l);function h(){let e=m(),t=e===null?null:WE(e);(d===null?null:d.identity)!==t&&(d?.dispose(),d=t===null?null:{identity:t,dispose:PE(HE,{kind:`allow-list`,allowed:[t]})})}function g(){c=iE(t,nE),f(ZE(c)),h()}async function _(){l=Ew(vw,await Tw(ww,a,i)),p(QE(l)),h()}return{arm(){wE(UE,{kind:`allow-list`,allowed:[`false`]}),g(),setInterval(g,n).unref(),c.kind===`not-source-checkout`&&(_(),setInterval(()=>void _(),r).unref())},notice:e=>YE(m(),u,e),act(){let e=m();if(e===null)throw new $(`apply-update: nothing newer is known to apply`);let t=KE(e);if(u.kind===`running`)throw new $(`apply-update: already ${t.busy}`);u=JE,s(`info`,`apply-update: ${t.act} — ${t.command.bin} ${t.command.args?.join(` `)??``}`),Te({...t.command,category:`update.apply`,timeoutMs:6e5}).then(n=>{if(n.ok){u=qE,s(`info`,`apply-update: ${t.act} succeeded`),g(),o();return}let r=tD(n);u={kind:`failed`,identity:WE(e),reason:r},s(`error`,`apply-update: ${t.act} failed: ${r}`)})}}}var rD=class{static CACHE_DIR=O();static USAGE_CACHE_DIR=c.join(this.CACHE_DIR,`usage`);static LOCKS_DIR=c.join(this.CACHE_DIR,`locks`);static isLocked(e){let t=c.join(this.LOCKS_DIR,e);if(!r.existsSync(t))return!1;try{let n=r.readFileSync(t,`utf-8`),i=parseInt(n.trim(),10);if(isNaN(i))return D(`Invalid PID in lock file ${e}, removing stale lock`),r.unlinkSync(t),!1;try{return process.kill(i,0),!0}catch(n){return n.code===`ESRCH`?(D(`Removing stale lock file ${e} for dead process ${i}`),r.unlinkSync(t),!1):(D(`Error checking process ${i} for lock ${e}:`,n),!0)}}catch(t){return D(`Error reading lock file ${e}:`,t),!0}}static async acquireLock(e,t=5e3){await this.ensureCacheDirectories();let n=c.join(this.LOCKS_DIR,e),i=Date.now(),a=String(process.pid);for(;Date.now()-i<t;)try{return await r.promises.writeFile(n,a,{flag:`wx`}),D(`Lock acquired for ${e}`),!0}catch(e){if(e.code===`EEXIST`)await ae(50);else throw e}return D(`Failed to acquire lock for ${e} within ${t}ms`),!1}static async releaseLock(e){let t=c.join(this.LOCKS_DIR,e);try{await r.promises.unlink(t),D(`Lock released for ${e}`)}catch(t){t.code!==`ENOENT`&&D(`Error releasing lock for ${e}:`,t)}}static async ensureCacheDirectories(){try{await Promise.all([r.promises.mkdir(this.CACHE_DIR,{recursive:!0}),r.promises.mkdir(this.USAGE_CACHE_DIR,{recursive:!0}),r.promises.mkdir(this.LOCKS_DIR,{recursive:!0})])}catch(e){D(`Failed to create cache directories:`,e)}}static createProjectHash(e){return T(`md5`).update(e).digest(`hex`).substring(0,8)}static async getUsageCache(e,t){await this.ensureCacheDirectories();let n=c.join(this.USAGE_CACHE_DIR,`${e}.json`),i=`${e}.usage.lock`;for(let a=0;a<3;a++){if(this.isLocked(i)){D(`Cache for ${e} is locked, waiting...`),await ae(75);continue}try{let i=await r.promises.readFile(n,`utf-8`),a=JSON.parse(i);return!t||a.timestamp>=t?(D(`[CACHE-HIT] ${e} disk cache: found`),this.deserializeDates(a.data)):(D(`${e} cache outdated: cache=${a.timestamp}, latest=${t}`),null)}catch(t){if(t.code===`ENOENT`)return D(`No shared ${e} usage cache found`),null;D(`Attempt ${a+1} failed to read ${e} cache: ${t.message}. Retrying...`),await ae(75)}}return D(`Failed to read ${e} cache after 3 attempts.`),null}static deserializeDates(e){return Array.isArray(e)?e.map(e=>({...e,timestamp:new Date(e.timestamp)})):e}static async setUsageCache(e,t,n){let i=`${e}.usage.lock`;if(!await this.acquireLock(i)){D(`Could not acquire lock to set usage cache for ${e}`);return}try{await this.ensureCacheDirectories();let i=c.join(this.USAGE_CACHE_DIR,`${e}.json`),a=JSON.stringify({data:t,timestamp:n||Date.now()});await r.promises.writeFile(i,a,`utf-8`),D(`[CACHE-SET] ${e} disk cache stored`)}catch(t){D(`Failed to save ${e} usage cache:`,t)}finally{await this.releaseLock(i)}}};const iD={"claude-haiku-4-5-20251001":{name:`Claude Haiku 4.5`,input:1,output:5,cache_write_5m:1.25,cache_write_1h:2,cache_read:.1},"claude-haiku-4-5":{name:`Claude Haiku 4.5`,input:1,output:5,cache_write_5m:1.25,cache_write_1h:2,cache_read:.1},"claude-opus-4-20250514":{name:`Claude Opus 4`,input:15,output:75,cache_write_5m:18.75,cache_write_1h:30,cache_read:1.5},"claude-opus-4-1":{name:`Claude Opus 4.1`,input:15,output:75,cache_write_5m:18.75,cache_write_1h:30,cache_read:1.5},"claude-opus-4-1-20250805":{name:`Claude Opus 4.1`,input:15,output:75,cache_write_5m:18.75,cache_write_1h:30,cache_read:1.5},"claude-sonnet-4-20250514":{name:`Claude Sonnet 4`,input:3,output:15,cache_write_5m:3.75,cache_write_1h:6,cache_read:.3},"claude-4-opus-20250514":{name:`Claude 4 Opus`,input:15,output:75,cache_write_5m:18.75,cache_write_1h:30,cache_read:1.5},"claude-4-sonnet-20250514":{name:`Claude 4 Sonnet`,input:3,output:15,cache_write_5m:3.75,cache_write_1h:6,cache_read:.3},"claude-sonnet-4-5":{name:`Claude Sonnet 4.5`,input:3,output:15,cache_write_5m:3.75,cache_write_1h:6,cache_read:.3},"claude-sonnet-4-5-20250929":{name:`Claude Sonnet 4.5`,input:3,output:15,cache_write_5m:3.75,cache_write_1h:6,cache_read:.3},"claude-opus-4-5":{name:`Claude Opus 4.5`,input:5,output:25,cache_write_5m:6.25,cache_write_1h:10,cache_read:.5},"claude-opus-4-5-20251101":{name:`Claude Opus 4.5`,input:5,output:25,cache_write_5m:6.25,cache_write_1h:10,cache_read:.5},"claude-opus-4-6":{name:`Claude Opus 4.6`,input:5,output:25,cache_write_5m:6.25,cache_write_1h:10,cache_read:.5},"claude-opus-4-6-20260205":{name:`Claude Opus 4.6`,input:5,output:25,cache_write_5m:6.25,cache_write_1h:10,cache_read:.5},"claude-sonnet-4-6":{name:`Claude Sonnet 4.6`,input:3,output:15,cache_write_5m:3.75,cache_write_1h:6,cache_read:.3}};var aD=class{static executionCache=null;static modelPricingCache=new Map;static GITHUB_PRICING_URL=`https://raw.githubusercontent.com/promptctl/cc-candybar/main/pricing.json`;static async loadDiskCache(){let e=Date.now()-1440*60*1e3;return await rD.getUsageCache(`pricing`,e)}static async saveDiskCache(e){await rD.setUsageCache(`pricing`,e)}static async fetchPricingData(){return new Promise(e=>{let t=new ee(this.GITHUB_PRICING_URL),n=E({hostname:t.hostname,path:t.pathname,headers:{"User-Agent":`cc-candybar`,"Cache-Control":`no-cache`},timeout:5e3},t=>{if(t.statusCode!==200){D(`HTTP ${t.statusCode}: ${t.statusMessage}`),e(null);return}let r=``,i=0;t.on(`data`,t=>{if(i+=t.length,i>1048576){D(`Response too large`),n.destroy(),e(null);return}r+=t}),t.on(`end`,()=>{try{let t=JSON.parse(r),n=t._meta,i={};for(let[e,n]of Object.entries(t))e!==`_meta`&&(i[e]=n);this.validatePricingData(i)?(D(`Fetched fresh pricing from GitHub for ${Object.keys(i).length} models`),D(`Pricing last updated: ${n?.updated||`unknown`}`),e(i)):(D(`Invalid pricing data structure`),e(null))}catch(t){D(`Failed to parse JSON:`,t),e(null)}}),t.on(`error`,t=>{D(`Response error:`,t),e(null)})});n.on(`error`,t=>{D(`Request error:`,t),e(null)}),n.on(`timeout`,()=>{D(`Request timeout`),n.destroy(),e(null)}),n.end()})}static async getCurrentPricing(){if(this.executionCache!==null)return D(`[CACHE-HIT] Pricing execution cache: ${Object.keys(this.executionCache).length} models`),this.executionCache;let e=await this.loadDiskCache();if(e)return D(`[CACHE-HIT] Pricing disk cache: ${Object.keys(e).length} models`),this.executionCache=e,D(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(e).length} models`),e;let t=await this.fetchPricingData();return t?(await this.saveDiskCache(t),D(`[CACHE-SET] Pricing disk cache stored: ${Object.keys(t).length} models`),this.executionCache=t,D(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(t).length} models`),t):(D(`[CACHE-FALLBACK] Using offline pricing data: ${Object.keys(iD).length} models`),this.executionCache=iD,D(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(iD).length} models`),iD)}static validatePricingData(e){if(!e||typeof e!=`object`)return!1;for(let[,t]of Object.entries(e)){if(!t||typeof t!=`object`)return!1;let e=t;if(typeof e.input!=`number`||typeof e.output!=`number`||typeof e.cache_read!=`number`)return!1}return!0}static async getModelPricing(e){if(this.modelPricingCache.has(e))return D(`[CACHE-HIT] Model pricing cache: ${e}`),this.modelPricingCache.get(e);let t=await this.getCurrentPricing(),n;return n=t[e]?t[e]:this.fuzzyMatchModel(e,t),this.modelPricingCache.set(e,n),D(`[CACHE-SET] Model pricing cache: ${e}`),n}static fuzzyMatchModel(e,t){let n=e.toLowerCase();for(let[e,r]of Object.entries(t))if(e.toLowerCase()===n)return r;for(let{pattern:e,fallback:r}of[{pattern:[`opus-4-6`,`claude-opus-4-6`],fallback:`claude-opus-4-6-20260205`},{pattern:[`opus-4-5`,`claude-opus-4-5`],fallback:`claude-opus-4-5-20251101`},{pattern:[`opus-4-1`,`claude-opus-4-1`],fallback:`claude-opus-4-1-20250805`},{pattern:[`opus-4`,`claude-opus-4`],fallback:`claude-opus-4-20250514`},{pattern:[`sonnet-4-6`,`sonnet-4.6`,`claude-sonnet-4-6`],fallback:`claude-sonnet-4-6`},{pattern:[`sonnet-4.5`,`4-5-sonnet`,`sonnet-4-5`],fallback:`claude-sonnet-4-5-20250929`},{pattern:[`sonnet-4`,`claude-sonnet-4`],fallback:`claude-sonnet-4-20250514`},{pattern:[`haiku-4.5`,`4-5-haiku`,`haiku-4-5`],fallback:`claude-haiku-4-5-20251001`},{pattern:[`haiku`],fallback:`claude-haiku-4-5-20251001`},{pattern:[`opus`],fallback:`claude-opus-4-20250514`},{pattern:[`sonnet`],fallback:`claude-sonnet-4-5-20250929`}])if(e.some(e=>n.includes(e))&&t[r])return t[r];return t[`claude-sonnet-4-5-20250929`]||{name:`${e} (Unknown Model)`,input:3,cache_write_5m:3.75,cache_write_1h:6,cache_read:.3,output:15}}static async calculateCostForEntry(e){let t=e.message?.usage;if(!t)return 0;let n=this.extractModelId(e),r=await this.getModelPricing(n),i=t.input_tokens||0,a=t.output_tokens||0,o=t.cache_creation_input_tokens||0,s=t.cache_read_input_tokens||0,c=i/1e6*r.input,l=a/1e6*r.output,u=s/1e6*r.cache_read,d=o/1e6*r.cache_write_5m;return c+l+d+u}static extractModelId(e){if(e.model&&typeof e.model==`string`)return e.model;let t=e.message;if(t?.model){let e=t.model;if(typeof e==`string`)return e;let n=e;return(typeof n?.id==`string`?n.id:null)||`claude-sonnet-4-5-20250929`}return e.model_id&&typeof e.model_id==`string`?e.model_id:`claude-sonnet-4-5-20250929`}};function oD(e){if(!e)return 0;try{return o(e).mtimeMs}catch{return 0}}const sD=new class{slots;head=null;tail=null;constructor(e){this.slots=e}async run(e){await this.acquire();try{return await e()}finally{this.release()}}async acquire(){if(this.slots>0){this.slots--;return}await new Promise(e=>{let t={wake:e,next:null};this.tail?this.tail.next=t:this.head=t,this.tail=t})}release(){let e=this.head;if(!e){this.slots++;return}this.head=e.next,this.head||(this.tail=null),e.wake()}}(8);function cD(e){return((...t)=>sD.run(()=>e(...t)))}const lD=cD(y),uD=cD(v),dD=cD(b);async function fD(e,t){return sD.run(async()=>{let n=null;try{n=await _(e,`r`);let{size:r,mtimeMs:i,ino:a}=await n.stat(),o=t!==void 0&&(a!==t.ino||r<t.offset),s=o||t===void 0?0:t.offset;if(s>=r)return J({buf:Buffer.alloc(0),start:s,size:r,mtimeMs:i,ino:a,reset:o});let c=Buffer.alloc(r-s),l=0;for(;l<c.length;){let{bytesRead:e}=await n.read(c,l,c.length-l,s+l);if(e===0)break;l+=e}return J({buf:l===c.length?c:c.subarray(0,l),start:s,size:r,mtimeMs:i,ino:a,reset:o})}catch(t){return t.code===`ENOENT`?Y:X(`readAppended ${e}: ${t instanceof Error?t.message:String(t)}`)}finally{await n?.close().catch(e=>{D(`transcript-fs: close failed: ${e instanceof Error?e.message:String(e)}`)})}})}async function pD(e,t){return sD.run(async()=>{let n=null;try{n=await _(e,`r`);let{size:r}=await n.stat(),i=Math.max(0,r-t),a=Buffer.alloc(r-i),o=0;for(;o<a.length;){let{bytesRead:e}=await n.read(a,o,a.length-o,i+o);if(e===0)break;o+=e}return J({buf:o===a.length?a:a.subarray(0,o),fromStart:i===0})}catch(t){return t.code===`ENOENT`?Y:X(`readTail ${e}: ${t instanceof Error?t.message:String(t)}`)}finally{await n?.close().catch(e=>{D(`transcript-fs: close failed: ${e instanceof Error?e.message:String(e)}`)})}})}const mD=/<command-name>\s*([^<\s][^<]*?)\s*<\/command-name>/;function hD(e){if(typeof e==`string`)return mD.exec(e)?.[1]}function gD(e){let t=e?.todos;if(!Array.isArray(t))return;let n=[];for(let e of t){if(typeof e!=`object`||!e)continue;let{content:t,activeForm:r,status:i}=e,a=i===`in_progress`,o=a&&typeof r==`string`?r:t;typeof o==`string`&&n.push({text:o,active:a,done:i===`completed`})}return n}function _D(e){let t=e.message?.content,n=e.type===`user`,r=[],i=[],a,o;if(typeof t==`string`)o=t;else if(Array.isArray(t))for(let e of t){if(typeof e!=`object`||!e)continue;let t=e;switch(t.type){case`tool_use`:{let{id:e,name:n}=t;if(typeof e!=`string`||typeof n!=`string`)break;r.push({id:e,name:n}),n===`TodoWrite`&&(a=gD(t.input)??a);break}case`tool_result`:{let e=t.tool_use_id;typeof e==`string`&&i.push(e);break}case`text`:o??=t.text;break;default:break}}let s=n?hD(o):void 0;if(!(r.length===0&&i.length===0&&a===void 0&&s===void 0))return{...r.length>0&&{started:r},...i.length>0&&{finished:i},...a!==void 0&&{todos:a},...s!==void 0&&{command:s}}}function vD(){let e=[],t=process.env.CLAUDE_CONFIG_DIR;if(t&&t.split(`,`).forEach(t=>{let n=t.trim();a(n)&&e.push(n)}),e.length===0){let t=p(),n=d(t,`.config`,`claude`),r=d(t,`.claude`);a(n)&&e.push(n),a(r)&&e.push(r)}return e}async function yD(e){let t=[];for(let n of e){let e=d(n,`projects`);if(a(e))try{let n=await lD(e,{withFileTypes:!0});for(let r of n)if(r.isDirectory()){let n=d(e,r.name);t.push(n)}}catch(t){D(`Failed to read projects directory ${e}:`,t)}}return t}async function bD(e,t,n){let r=[],i=d(t,e,`subagents`);try{let t=(await lD(i)).filter(e=>e.startsWith(`agent-`)&&e.endsWith(`.jsonl`));for(let a of t){let t=d(i,a);if(n?.has(t)){r.push(t);continue}try{let n=(await uD(t,`utf-8`)).split(`
177
+ `)[0];n&&JSON.parse(n).sessionId===e&&r.push(t)}catch{D(`Failed to check agent file ${t}`)}}}catch(e){D(`Failed to read subagents directory ${i}:`,e)}return r}function xD(e){let t=e.type||e.message?.role||e.message?.type,n=e.type===`user`&&e.message?.firstContentType===`tool_result`;return t===`user`&&!n}const SD=new Map;async function CD(e){try{let t=await dD(e),n=t.size,r=SD.get(e);if(r&&r.mtime===t.mtimeMs&&r.size===n)return D(`[parse-cache] hit ${e}`),SD.delete(e),SD.set(e,r),r.entries;let i;return n>1048576?(D(`Using streaming parser for large file ${e} (${Math.round(n/1024)}KB)`),i=await OD(e)):i=await ED(e),D(`Parsed ${i.length} entries from ${e}`),n>5242880?i:(SD.delete(e),SD.size>=16&&SD.delete(SD.keys().next().value),SD.set(e,{mtime:t.mtimeMs,size:n,entries:i}),i)}catch(t){if(t.code===`ENOENT`)return D(`Transcript not present yet: ${e}`),[];throw t}}function wD(e){if(!e.timestamp)return null;let t=e.message,n=t?.usage,r=t?.content,i=Array.isArray(r)&&typeof r[0]==`object`&&r[0]?r[0]:void 0;return{timestamp:new Date(e.timestamp),type:typeof e.type==`string`?e.type:void 0,message:t?{id:typeof t.id==`string`?t.id:void 0,model:typeof t.model==`string`?t.model:void 0,usage:n,role:typeof t.role==`string`?t.role:void 0,type:typeof t.type==`string`?t.type:void 0,firstContentType:typeof i?.type==`string`?i.type:void 0}:void 0,costUSD:typeof e.costUSD==`number`?e.costUSD:void 0,isSidechain:e.isSidechain===!0,activity:_D(e),raw:{model:typeof e.model==`string`?e.model:void 0,message:t?{id:typeof t.id==`string`?t.id:void 0,model:typeof t.model==`string`?t.model:void 0,usage:n}:void 0,requestId:typeof e.requestId==`string`?e.requestId:void 0}}}function TD(e){let t=[];for(let n of e.split(`
178
+ `))if(n.trim())try{let e=wD(JSON.parse(n));e&&t.push(e)}catch(e){D(`Failed to parse JSONL line: ${e}`);continue}return t}async function ED(e){return TD(await uD(e,`utf-8`))}async function DD(e,t){let n=await fD(e,t===void 0?void 0:{offset:t.offset,ino:t.ino});if(n.kind!==`ok`)return n;let{buf:r,start:i,mtimeMs:a,ino:o,reset:s}=n.value,c=r.lastIndexOf(10);return J(c<0?{entries:[],cursor:{offset:i,mtimeMs:a,ino:o},reset:s}:{entries:TD(r.subarray(0,c+1).toString(`utf-8`)),cursor:{offset:i+c+1,mtimeMs:a,ino:o},reset:s})}async function OD(e){return new Promise((t,n)=>{let r=[],a=i(e,{encoding:`utf8`}),o=oe({input:a,crlfDelay:1/0});o.on(`line`,e=>{let t=e.trim();if(t)try{let e=wD(JSON.parse(t));e&&r.push(e)}catch(e){D(`Failed to parse JSONL line: ${e}`)}}),o.on(`close`,()=>{t(r)}),o.on(`error`,t=>{D(`Streaming parser error for ${e}:`,t),n(t)}),a.on(`error`,t=>{D(`File stream error for ${e}:`,t),n(t)})})}var kD=class{inflight=new Map;run(e,t){return this.inflight.get(e)??this.start(e,t)}start(e,t){let n=t();this.inflight.set(e,n);let r=()=>{this.inflight.get(e)===n&&this.inflight.delete(e)};return n.then(r,r),n}get size(){return this.inflight.size}};function AD(e,t){let n=e?e.input+e.cacheCreation+e.cacheRead:0,r=e?e.output:0;return{input:n,output:r,total:n+r,atMs:t}}const jD={cost:0,input:0,output:0,cacheCreation:0,cacheRead:0},MD={cost:null,calculatedCost:null,officialCost:null,tokens:null,tokenBreakdown:null};function ND(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function PD(){let e=new Date;return e.setHours(0,0,0,0),e.setDate(e.getDate()-1),e.getTime()}function FD(){return{input:0,output:0,cacheCreation:0,cacheRead:0}}async function ID(e,t,n,r){let i=ND(new Date(PD())),a=e&&!t?e:void 0,o=a?.entries??0,s=a?.cost??0,c=a?{...a.breakdown}:FD(),l=new Map;if(a)for(let[e,t]of a.days)e>=i&&l.set(e,{...t});for(let e of n){let t=e.message?.usage;if(!t)continue;o++;let n=e.costUSD??await aD.calculateCostForEntry(e.raw);s+=n,c.input+=t.input_tokens||0,c.output+=t.output_tokens||0,c.cacheCreation+=t.cache_creation_input_tokens||0,c.cacheRead+=t.cache_read_input_tokens||0;let r=ND(new Date(e.timestamp));if(r<i)continue;let a=l.get(r)??{...jD};a.cost+=n,a.input+=t.input_tokens||0,a.output+=t.output_tokens||0,a.cacheCreation+=t.cache_creation_input_tokens||0,a.cacheRead+=t.cache_read_input_tokens||0,l.set(r,a)}return{cursor:r,entries:o,cost:s,breakdown:c,days:l}}function LD(e){let t=0,n=0,r=FD(),i=new Map;for(let a of e.values()){t+=a.entries,n+=a.cost,r.input+=a.breakdown.input,r.output+=a.breakdown.output,r.cacheCreation+=a.breakdown.cacheCreation,r.cacheRead+=a.breakdown.cacheRead;for(let[e,t]of a.days){let n=i.get(e)??{...jD};n.cost+=t.cost,n.input+=t.input,n.output+=t.output,n.cacheCreation+=t.cacheCreation,n.cacheRead+=t.cacheRead,i.set(e,n)}}if(t===0)return{sessionInfo:MD,days:i};let a=r.input+r.output+r.cacheCreation+r.cacheRead;return{sessionInfo:{cost:n,calculatedCost:n,officialCost:null,tokens:a,tokenBreakdown:r},days:i}}async function RD(e,t,n){let r=0,i=async()=>{for(;r<e.length;){let t=e[r++];await n(t)}},a=Math.min(t,e.length);await Promise.all(Array.from({length:a},i))}var zD=class{entries=new Map;flight=new kD;seeded=new Map;speedRings=new Map;speedFlight=new kD;maxEntries;staleAgeMs;hits=0;misses=0;sweeps=0;seeds=0;sweepTimer=null;constructor(e={}){this.maxEntries=e.maxEntries??256,this.staleAgeMs=e.staleAgeMs??864e5;let t=e.sweepIntervalMs??3e5;t>0&&(this.sweepTimer=setInterval(()=>this.sweepStale(),t),this.sweepTimer.unref())}getStats(){return{size:this.entries.size,hits:this.hits,misses:this.misses,sweeps:this.sweeps,seeds:this.seeds}}async getUsageInfo(e,t){let n=await this.ingest(e,t?.transcript_path);if(n.kind===`failed`)return n;let r=n.kind===`ok`?n.value.sessionInfo:MD,i=t?.cost?.total_cost_usd??null;return J({session:{...r,cost:i??r.cost,officialCost:i}})}async getTodayInfo(e){let t=ND(new Date);try{await this.ensureSeeded(t)}catch(e){return X(`usage seed: ${e instanceof Error?e.message:String(e)}`)}let n=await this.ingest(e?.session_id??``,e?.transcript_path);if(n.kind===`failed`)return n;let r={...jD},i=!1;for(let e of this.entries.values()){i||=e.days.has(t);let n=e.days.get(t)??jD;r.cost+=n.cost,r.input+=n.input,r.output+=n.output,r.cacheCreation+=n.cacheCreation,r.cacheRead+=n.cacheRead}return i?J({cost:r.cost,tokens:r.input+r.output+r.cacheCreation+r.cacheRead,tokenBreakdown:{input:r.input,output:r.output,cacheCreation:r.cacheCreation,cacheRead:r.cacheRead},date:t}):Y}async observeSpeed(e,t,n){let r=oD(t);return this.speedFlight.run(`${e}:${r}`,async()=>{let i=await this.ingest(e,t,r);if(i.kind===`failed`)return i;let a=AD(i.kind===`ok`?i.value.sessionInfo.tokenBreakdown:null,n),o=this.speedRings.get(e)??[],s;for(let e of o)e.atMs<a.atMs&&(s===void 0||e.atMs>s.atMs)&&(s=e);return o.push(a),o.sort((e,t)=>e.atMs-t.atMs),o.length>64&&o.shift(),this.speedRings.set(e,o),J({...s!==void 0&&{prev:s},cur:a,samples:[...o]})})}async ingest(e,t,n){if(!e)return Y;let r=n??oD(t),i=this.entries.get(e);if(i&&r!==0&&i.transcriptMtime===r)return i.lastSeenAt=Date.now(),this.entries.delete(e),this.entries.set(e,i),this.hits++,J(i);if(!t)return i?J(i):Y;this.misses++;let a;try{a=await this.flight.run(`${e}:${r}`,()=>this.refold(e,t,this.entries.get(e)))}catch(t){return X(`usage refold (${e}): ${t instanceof Error?t.message:String(t)}`)}if(a.kind!==`ok`)return a;let o={files:a.value.files,sessionInfo:a.value.sessionInfo,days:a.value.days,transcriptMtime:a.value.mainMtime,transcriptPath:t,lastSeenAt:Date.now()};return this.entries.delete(e),this.entries.set(e,o),this.evictIfNeeded(),J(o)}async refold(e,t,n){let r=await bD(e,u(t),n===void 0?void 0:new Set(n.files.keys())),i=new Map,a=0;for(let e of[t,...r]){let r=n?.files.get(e),o=await DD(e,r?.cursor);if(o.kind===`failed`)return o;if(o.kind===`absent`){r&&i.set(e,r);continue}let{entries:s,cursor:c,reset:l}=o.value;i.set(e,await ID(r,l,s,c)),e===t&&(a=c.mtimeMs)}return J({files:i,...LD(i),mainMtime:a})}ensureSeeded(e){let t=this.seeded.get(e);if(t)return t;this.seeded.clear();let n=this.seed(e);return this.seeded.set(e,n),n.catch(()=>{this.seeded.get(e)===n&&this.seeded.delete(e)}),n}async seed(e){let t=PD(),n=await yD(vD()),r=[];for(let e of n){let n;try{n=await lD(e)}catch{continue}for(let i of n){if(!i.endsWith(`.jsonl`))continue;let n=d(e,i),a;try{a=(await dD(n)).mtimeMs}catch{continue}a<t||r.push({sessionId:i.slice(0,-6),path:n,mtime:a})}}await RD(r,8,async e=>{let t=await this.ingest(e.sessionId,e.path,e.mtime);t.kind===`failed`&&Q(`warn`,`usageStore seed: ${t.reason}`)}),this.seeds++,Q(`info`,`usageStore seed sessions=${r.length}`)}sweepStale(){let e=Date.now(),t=0;for(let[n,r]of this.entries)e-r.lastSeenAt>this.staleAgeMs&&(this.entries.delete(n),this.speedRings.delete(n),t++);return t>0&&(this.sweeps++,Q(`info`,`usageStore sweep dropped=${t}`)),t}evictIfNeeded(){for(;this.entries.size>this.maxEntries;){let e=this.entries.keys().next().value;if(e===void 0)break;this.entries.delete(e),this.speedRings.delete(e),Q(`info`,`usageStore evict ${e}`)}}close(){this.sweepTimer&&=(clearInterval(this.sweepTimer),null),this.entries.clear(),this.seeded.clear(),this.speedRings.clear()}};const BD=/"(?:cache_read_input_tokens|cache_creation_input_tokens)":[1-9]/;function VD(e){let t;try{t=JSON.parse(e)}catch{return null}let n=t.message?.usage;if(!((n?.cache_read_input_tokens??0)>0||(n?.cache_creation_input_tokens??0)>0))return null;let r=t.timestamp==null?NaN:Date.parse(t.timestamp);return Number.isNaN(r)?null:r}async function HD(e){let t=await UD(e);return t.kind===`ok`?J(Math.floor((t.value+36e5)/1e3)):t}async function UD(e){for(let t of[65536,1048576]){let n=await pD(e,t);if(n.kind!==`ok`)return n;let r=WD(n.value.buf,n.value.fromStart);if(r!=null)return J(r);if(n.value.fromStart)return Y}return Y}function WD(e,t){let n=e.toString(`utf8`).split(`
179
+ `),r=+!t;for(let e=n.length-1;e>=r;e--){let t=n[e];if(!t||!BD.test(t))continue;let r=VD(t);if(r!=null)return r}return null}const GD=`trimPrefix "/" (trimPrefix .project_dir .current_dir)`,KD=`{{ \$dir := .current_dir }}{{ if and (ne .home "") (or (eq .home .current_dir) (hasPrefix (printf "%s/" .home) .current_dir)) }}{{ \$dir = printf "~%s" (trimPrefix .home .current_dir) }}{{ else }}{{ if or (eq .project_dir .current_dir) (hasPrefix (printf "%s/" .project_dir) .current_dir) }}{{ $dir = ternary (${GD}) (basename .project_dir) (ne (${GD}) "") }}{{ end }}{{ end }}{{ abbreviatePath \$dir }}`,qD={globals:{palette:`tokyo-night`},variables:{...Lv,current_dir:{kind:`input`,path:`workspace.current_dir`,default:`?`},"model.display_name":{kind:`input`,path:`model.display_name`,default:``},version:{kind:`input`,path:`version`,default:``},home:{kind:`input`,path:`home`,default:``},"tmux.session":{kind:`input`,path:`tmux.session`,default:``},"host.name":{kind:`input`,path:`host.name`,default:``},"host.user":{kind:`input`,path:`host.user`,default:``},"host.ssh":{kind:`input`,path:`host.ssh`,type:`boolean`,default:!1},"git.repoName":{kind:`input`,path:`git.repoName`,default:``},"git.branch":{kind:`input`,path:`git.branch`,default:``},"git.sha":{kind:`input`,path:`git.sha`,default:``},"git.ahead":{kind:`input`,path:`git.ahead`,type:`number`,default:0},"git.behind":{kind:`input`,path:`git.behind`,type:`number`,default:0},"git.staged":{kind:`input`,path:`git.staged`,type:`number`,default:0},"git.unstaged":{kind:`input`,path:`git.unstaged`,type:`number`,default:0},"git.untracked":{kind:`input`,path:`git.untracked`,type:`number`,default:0},"git.conflicts":{kind:`input`,path:`git.conflicts`,type:`number`,default:0},"git.upstream":{kind:`input`,path:`git.upstream`,default:``},"git.stash":{kind:`input`,path:`git.stash`,type:`number`,default:0},"git.status":{kind:`input`,path:`git.status`,default:`clean`},"git.operation":{kind:`input`,path:`git.operation`,default:``},"git.timeSinceCommit":{kind:`input`,path:`git.timeSinceCommit`,type:`number`,default:0},"git.color.branch":{kind:`literal`,value:`primary`},"git.color.staged":{kind:`literal`,value:`success`},"git.color.unstaged":{kind:`literal`,value:`warning`},"git.color.untracked":{kind:`literal`,value:`accent`},"git.color.conflicts":{kind:`literal`,value:`error`},"git.color.ahead":{kind:`literal`,value:`success`},"git.color.behind":{kind:`literal`,value:`warning`},"git.color.stash":{kind:`literal`,value:`accent`},"git.detail":{kind:`state`,key:`git-detail`,default:`collapsed`},"git.prNumber":{kind:`input`,path:`git.prNumber`,type:`number`,default:0},"git.prState":{kind:`input`,path:`git.prState`,default:``},"git.prUrl":{kind:`input`,path:`git.prUrl`,default:``},"git.prError":{kind:`input`,path:`git.prError`,default:``},"cache.expiresAt":{kind:`input`,path:`cache.expiresAt`,type:`number`,default:0},"session.cost":{kind:`input`,path:`session.cost`,type:`number`,default:0},"session.tokens":{kind:`input`,path:`session.tokens`,type:`number`,default:0},"session.budget.amount":{kind:`literal`,value:0},"session.budget.warningThreshold":{kind:`literal`,value:80},"today.cost":{kind:`input`,path:`today.cost`,type:`number`,default:0},"today.tokens":{kind:`input`,path:`today.tokens`,type:`number`,default:0},"today.budget.amount":{kind:`literal`,value:50},"today.budget.warningThreshold":{kind:`literal`,value:80},"block.nativeUtilization":{kind:`input`,path:`block.nativeUtilization`,type:`number`,default:0},"block.resetsAt":{kind:`input`,path:`block.resetsAt`,type:`number`,default:0},"block.budget.warningThreshold":{kind:`literal`,value:80},"block.budget.heatThreshold":{kind:`literal`,value:50},"weekly.percentage":{kind:`input`,path:`weekly.percentage`,type:`number`,default:0},"weekly.resetsAt":{kind:`input`,path:`weekly.resetsAt`,type:`number`,default:0},"weekly.budget.warningThreshold":{kind:`literal`,value:80},"weekly.budget.heatThreshold":{kind:`literal`,value:50},"burn.costPerHour":{kind:`input`,path:`burn.costPerHour`,type:`number`,default:-1},"block.etaMinutes":{kind:`input`,path:`block.etaMinutes`,type:`number`,default:-1},"weekly.etaMinutes":{kind:`input`,path:`weekly.etaMinutes`,type:`number`,default:-1},"burn.eta.warnMinutes":{kind:`literal`,value:60},"burn.eta.errorMinutes":{kind:`literal`,value:30},"speed.input":{kind:`input`,path:`speed.input`,type:`number`,default:-1},"speed.output":{kind:`input`,path:`speed.output`,type:`number`,default:-1},"speed.total":{kind:`input`,path:`speed.total`,type:`number`,default:-1},"speed.history":{kind:`input`,path:`speed.history`,type:`string`,default:``},"context.totalTokens":{kind:`input`,path:`context.totalTokens`,type:`number`,default:0},"context.contextLeft":{kind:`input`,path:`context.contextLeft`,type:`number`,default:100},"metrics.lastResponseTime":{kind:`input`,path:`metrics.lastResponseTime`,type:`number`,default:0},"metrics.responseTime":{kind:`input`,path:`metrics.responseTime`,type:`number`,default:0},"metrics.sessionDuration":{kind:`input`,path:`metrics.sessionDuration`,type:`number`,default:0},"metrics.messageCount":{kind:`input`,path:`metrics.messageCount`,type:`number`,default:0},"metrics.linesAdded":{kind:`input`,path:`metrics.linesAdded`,type:`number`,default:0},"metrics.linesRemoved":{kind:`input`,path:`metrics.linesRemoved`,type:`number`,default:0},"activity.command":{kind:`input`,path:`activity.command`,type:`string`,default:``},"activity.todo.total":{kind:`input`,path:`activity.todo.total`,type:`number`,default:0},"activity.todo.completed":{kind:`input`,path:`activity.todo.completed`,type:`number`,default:0},"activity.todo.position":{kind:`input`,path:`activity.todo.position`,type:`number`,default:0},"activity.todo.active":{kind:`input`,path:`activity.todo.active`,type:`string`,default:``},"activity.tool.running":{kind:`input`,path:`activity.tool.running`,type:`string`,default:``},"activity.tool.done":{kind:`input`,path:`activity.tool.done`,type:`string`,default:``}},segments:{directory:{description:"The current directory, shortened fish-style — `~` under home, project-relative inside the project.",template:KD},model:{description:`The active model's display name.`,template:`✱ {{ formatModelName .model.display_name }}`,when:`{{ ne .model.display_name "" }}`},sessionId:{description:`The session id, truncated to 8 characters.`,template:`⌗{{ trunc 8 .session.id }}`,when:`{{ ne .session.id "" }}`},version:{description:`The Claude Code version reported in the hook payload.`,template:`◈ v{{ .version }}`,when:`{{ ne .version "" }}`},tmux:{description:`The tmux session name; hidden when not inside tmux.`,template:`tmux:{{ .tmux.session | default "none" }}`,when:`{{ ne .tmux.session "" }}`},host:{description:`user@host on a warning background, shown only over SSH.`,template:`⇄ {{ .host.user | default "?" }}@{{ .host.name | default "?" }}`,bg:`warning`,when:`{{ .host.ssh }}`},gitaculous:{description:`The git state: a summary (branch, ahead/behind, S/U/? flags) that the arrow at its right edge expands to every fact — repo, in-progress operation, sha, upstream ±, stash count, time since the last commit.`,template:`{{ if eq .git.detail "expanded" }}{{ template "gitExpanded" . }}{{ else }}{{ template "gitCollapsed" . }}{{ end }} {{ action "gitDetail" "▸" "◂" }}`,fg:`{{ readableOn (mix (color "foreground") (bgOf) 60) (bgOf) 3 }}`,when:`{{ ne .git.branch "" }}`},gitPr:{description:"The pull request open for this branch, as a link; `⚠ PR` when the forge lookup failed.",template:`{{ if ne .git.prUrl "" }}{{ link .git.prUrl (printf "⇆ #%v" .git.prNumber) }}{{ else }}⚠ PR{{ end }}`,when:`{{ or (ne .git.prUrl "") (ne .git.prError "") }}`},toolbar:{description:`Quick actions: copy the session id, and open the project, transcript or repo.`,template:Wy(``).template},themeSwitcher:{description:"`◀ <theme> ▶`: the theme the bar is wearing; ◀ and ▶ switch this session to the previous or next theme, wrapping at the ends.",template:`{{ carousel "stepTheme" 0 }}`},session:{description:`This session's cost and token total, with a budget warning once a budget is configured.`,template:`§ {{ template "formatCost" .session.cost }} ({{ template "formatTokens" .session.tokens }}){{ template "budgetStatus" (dict "cost" .session.cost "budget" .session.budget.amount "warn" .session.budget.warningThreshold) }}`},today:{description:`Today's cost and tokens across every session, with a budget warning once a budget is configured.`,template:`☉ {{ template "formatCost" .today.cost }} ({{ template "formatTokens" .today.tokens }}){{ template "budgetStatus" (dict "cost" .today.cost "budget" .today.budget.amount "warn" .today.budget.warningThreshold) }}`},block:{description:`The 5-hour rate-limit block: percent used and time to reset, heating to warning then error.`,template:`◱ {{ round .block.nativeUtilization }}% ({{ template "formatResetCountdown" .block.resetsAt }})`,bg:`{{ ramp (round .block.nativeUtilization) "step" 0 (tint) .block.budget.heatThreshold "warning" .block.budget.warningThreshold "error" }}`,when:`{{ gt .block.resetsAt 0 }}`},weekly:{description:`The weekly rate-limit quota: percent used and time to reset, heating to warning then error.`,template:`◑ {{ round .weekly.percentage }}% ({{ template "formatResetCountdown" .weekly.resetsAt }})`,bg:`{{ ramp (round .weekly.percentage) "step" 0 (tint) .weekly.budget.heatThreshold "warning" .weekly.budget.warningThreshold "error" }}`,when:`{{ gt .weekly.resetsAt 0 }}`},burnrate:{description:`Spend per hour, with the projected time to the 5-hour and weekly limits.`,template:`⚡ {{ template "formatRate" .burn.costPerHour }} · {{ template "formatEta" .block.etaMinutes }} to 5h · {{ template "formatEta" .weekly.etaMinutes }} to wk`,bg:`{{ ramp .block.etaMinutes "step" -1 (tint) 0 "error" .burn.eta.errorMinutes "warning" .burn.eta.warnMinutes (tint) }}`,when:`{{ or (gt .block.resetsAt 0) (gt .weekly.resetsAt 0) }}`},speed:{description:`Token throughput for the latest exchange: output, input, and total.`,template:`⇅ out {{ template "formatSpeed" .speed.output }} · in {{ template "formatSpeed" .speed.input }} · tot {{ template "formatSpeed" .speed.total }}`,when:`{{ gt .session.tokens 0 }}`},tokenSparkline:{description:`A sparkline of recent token throughput.`,template:`⚡ {{ sparkline .speed.history 24 }}`,when:`{{ ne .speed.history "" }}`},cacheTimer:{description:"Minutes until the prompt cache expires, or `cold` once it has.",template:`◴ {{ if le (minutesUntilReset .cache.expiresAt) 0 }}cold{{ else }}{{ minutesUntilReset .cache.expiresAt }}m{{ end }}`,fg:`{{ readableOn (color (cascade (minutesUntilReset .cache.expiresAt) "0:error" "9:warning" "21:foreground")) (bgOf) ${Qi} }}`,when:`{{ gt .cache.expiresAt 0 }}`},context:{description:`Context used, in tokens and percent remaining, heating as it fills.`,template:`◔ {{ formatInteger .context.totalTokens }} ({{ .context.contextLeft }}%)`,bg:`{{ ramp .context.contextLeft "step" 0 "error" 21 "warning" 41 (tint) }}`,when:`{{ gt .context.totalTokens 0 }}`},metrics:{description:`Response times, session duration, message count, and lines added/removed.`,template:`{{ if .metrics.lastResponseTime }} Δ {{ template "formatResponseTime" .metrics.lastResponseTime }}{{ end }}{{ if .metrics.responseTime }} ⧖ {{ template "formatResponseTime" .metrics.responseTime }}{{ end }}{{ if .metrics.sessionDuration }} ⧗ {{ template "formatDuration" .metrics.sessionDuration }}{{ end }}{{ if .metrics.messageCount }} ◆ {{ .metrics.messageCount }}{{ end }}{{ if .metrics.linesAdded }} + {{ .metrics.linesAdded }}{{ end }}{{ if .metrics.linesRemoved }} - {{ .metrics.linesRemoved }}{{ end }} `,when:`{{ or (gt .metrics.lastResponseTime 0.0) (gt .metrics.responseTime 0.0) (gt .metrics.sessionDuration 0.0) (gt .metrics.messageCount 0) (gt .metrics.linesAdded 0) (gt .metrics.linesRemoved 0) }}`},activity:{description:`What Claude is doing: the slash command that opened the turn, the in-progress todo, and the tools in flight.`,template:`{{ if .activity.command }} ⌘ {{ .activity.command }}{{ end }}{{ if .activity.todo.total }}{{ if .activity.todo.active }} ☐ {{ .activity.todo.position }}/{{ .activity.todo.total }} {{ abbrev 32 .activity.todo.active }}{{ else }} ☑ {{ .activity.todo.completed }}/{{ .activity.todo.total }}{{ end }}{{ end }}{{ if .activity.tool.running }} ⟳ {{ template "formatToolTally" .activity.tool.running }}{{ end }}{{ if .activity.tool.done }} ✓ {{ template "formatToolTally" .activity.tool.done }}{{ end }} `,when:`{{ or (ne .activity.command "") (gt .activity.todo.total 0) (ne .activity.tool.running "") (ne .activity.tool.done "") }}`}},root:{rows:{identity:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`host`},{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`}]},status:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`segment`,name:`context`},{kind:`segment`,name:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`activity`}]}}},actions:{...Wy(``).actions,copyDir:{copy:`{{ .current_dir }}`},stepTheme:{set:`theme`,from:`themes`},gitDetail:{set:`git-detail`,cycle:[`collapsed`,`expanded`]}},looks:{none:{hueShift:0,chromaScale:1,lightnessScale:1,lightnessShift:0},vivid:{hueShift:0,chromaScale:1.35,lightnessScale:1,lightnessShift:0},muted:{hueShift:0,chromaScale:.55,lightnessScale:1,lightnessShift:0},dim:{hueShift:0,chromaScale:1,lightnessScale:.85,lightnessShift:0},bright:{hueShift:0,chromaScale:1,lightnessScale:1,lightnessShift:.08},inverted:{hueShift:0,chromaScale:1,lightnessScale:-1,lightnessShift:1}},presets:{default:{},compact:{root:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`segment`,name:`context`}]},globals:{padding:0}},verbose:{root:{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`segment`,name:`gitPr`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`segment`,name:`context`},{kind:`segment`,name:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`burnrate`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`speed`},{kind:`segment`,name:`tokenSparkline`}]}]}}},editGlobals:{style:`plain`,default_separator:` | `},helpers:{gitPaint:`{{ fg (readableOn (color .color) (bgOf) ${Qi}) .text }}`,gitCollapsed:`{{ template "gitBranch" . }}{{ template "gitAheadBehind" . }}{{ template "gitFlags" . }}`,gitExpanded:`(git){{ template "gitRepo" . }}{{ template "gitOperation" . }}{{ template "gitSha" . }}{{ template "gitFlags" . }} {{ template "gitBranch" . }}{{ template "gitUpstream" . }}{{ template "gitStash" . }}{{ template "gitAge" . }}`,gitBranch:`⎇ {{ template "gitPaint" (dict "color" .git.color.branch "text" .git.branch) }}`,gitRepo:`{{ if ne .git.repoName "" }} {{ .git.repoName }}{{ end }}`,gitOperation:`{{ if ne .git.operation "" }} [{{ .git.operation }}]{{ end }}`,gitSha:`{{ if ne .git.sha "" }} {{ .git.sha }}{{ end }}`,gitFlags:`{{ if or (gt .git.staged 0) (gt .git.unstaged 0) (gt .git.untracked 0) (gt .git.conflicts 0) }} {{ if gt .git.staged 0 }}{{ template "gitPaint" (dict "color" .git.color.staged "text" "S") }}{{ end }}{{ if gt .git.unstaged 0 }}{{ template "gitPaint" (dict "color" .git.color.unstaged "text" "U") }}{{ end }}{{ if gt .git.untracked 0 }}{{ template "gitPaint" (dict "color" .git.color.untracked "text" "?") }}{{ end }}{{ if gt .git.conflicts 0 }}{{ template "gitPaint" (dict "color" .git.color.conflicts "text" (printf "!%v" .git.conflicts)) }}{{ end }}{{ end }}`,gitAheadBehind:`{{ if or (gt .git.ahead 0) (gt .git.behind 0) }} {{ if gt .git.ahead 0 }}{{ template "gitPaint" (dict "color" .git.color.ahead "text" (printf "+%v" .git.ahead)) }}{{ end }}{{ if and (gt .git.ahead 0) (gt .git.behind 0) }}/{{ end }}{{ if gt .git.behind 0 }}{{ template "gitPaint" (dict "color" .git.color.behind "text" (printf "-%v" .git.behind)) }}{{ end }}{{ end }}`,gitUpstream:`{{ if ne .git.upstream "" }} [{{ .git.upstream }}{{ template "gitAheadBehind" . }}]{{ end }}`,gitStash:`{{ if gt .git.stash 0 }} {{ template "gitPaint" (dict "color" .git.color.stash "text" (printf "(%v stashed)" .git.stash)) }}{{ end }}`,gitAge:`{{ if gt .git.timeSinceCommit 0 }} ◷ {{ template "formatTimeSince" .git.timeSinceCommit }}{{ end }}`,formatCost:'{{ if lt . 0.01 }}<$0.01{{ else }}${{ printf "%.2f" . }}{{ end }}',formatTokenCount:`{{ if ge . 1000000 }}{{ printf "%.1f" (divf . 1000000) }}M{{ else if ge . 1000 }}{{ printf "%.1f" (divf . 1000) }}K{{ else }}{{ . }}{{ end }}`,formatTokens:`{{ template "formatTokenCount" . }} tokens`,formatToolTally:`{{ $names := splitList "," . }}{{ range $i, $pair := $names }}{{ if lt $i 2 }}{{ if $i }} {{ end }}{{ $kv := splitList ":" $pair }}{{ index $kv 0 }}{{ if ne (index $kv 1) "1" }}×{{ index $kv 1 }}{{ end }}{{ end }}{{ end }}{{ if gt (len $names) 2 }} +{{ sub (len $names) 2 }}{{ end }}`,formatRate:`{{ if lt . 0 }}—/hr{{ else }}{{ template "formatCost" . }}/hr{{ end }}`,formatEta:`{{ if lt . 0 }}—{{ else }}{{ template "formatLongTimeRemaining" . }}{{ end }}`,formatSpeed:`{{ if lt . 0 }}—{{ else }}{{ template "formatTokenCount" (round .) }}/s{{ end }}`,formatTokenBreakdown:`{{ $first := true }}{{ if gt .input 0 }}{{ template "formatTokenCount" .input }} in{{ $first = false }}{{ end }}{{ if gt .output 0 }}{{ if not $first }} + {{ end }}{{ template "formatTokenCount" .output }} out{{ $first = false }}{{ end }}{{ if or (gt .cacheCreation 0) (gt .cacheRead 0) }}{{ if not $first }} + {{ end }}{{ template "formatTokenCount" (add .cacheCreation .cacheRead) }} cached{{ $first = false }}{{ end }}{{ if $first }}0 tokens{{ end }}`,budgetStatus:`{{ if or (le .budget 0) (lt .cost 0) }}{{ else }}{{ $pct := minf 100 (mulf (divf .cost .budget) 100) }}{{ $p := printf "%.0f%%" $pct }}{{ if ge $pct .warn }} !{{ $p }}{{ else }}{{ if ge $pct 50 }} +{{ $p }}{{ else }} {{ $p }}{{ end }}{{ end }}{{ end }}`,formatTimeSince:`{{ if lt . 60 }}{{ . }}s{{ else if lt . 3600 }}{{ div . 60 }}m{{ else if lt . 86400 }}{{ div . 3600 }}h{{ else if lt . 604800 }}{{ div . 86400 }}d{{ else }}{{ div . 604800 }}w{{ end }}`,formatDuration:`{{ if lt . 60 }}{{ printf "%.0f" . }}s{{ else if lt . 3600 }}{{ printf "%.0f" (divf . 60) }}m{{ else if lt . 86400 }}{{ printf "%.1f" (divf . 3600) }}h{{ else }}{{ printf "%.1f" (divf . 86400) }}d{{ end }}`,formatResponseTime:`{{ if lt . 60 }}{{ printf "%.1f" . }}s{{ else }}{{ printf "%.1f" (divf . 60) }}m{{ end }}`,formatLongTimeRemaining:`{{ if ge . 1440 }}{{ $d := div . 1440 }}{{ $h := div (mod . 1440) 60 }}{{ if gt $h 0 }}{{ $d }}d {{ $h }}h{{ else }}{{ $d }}d{{ end }}{{ else if ge . 60 }}{{ $h := div . 60 }}{{ $m := mod . 60 }}{{ if gt $m 0 }}{{ $h }}h {{ $m }}m{{ else }}{{ $h }}h{{ end }}{{ else }}{{ . }}m{{ end }}`,formatResetCountdown:`{{ template "formatLongTimeRemaining" (add 1 (minutesUntilReset .)) }}`}},JD=new Set([qD.globals.palette,...Object.values(qD.segments).map(e=>e.palette)].filter(e=>e!==void 0)),YD=Ys(AS(`<default>`,JSON.stringify(qD),JD),qD),XD=Yv(YD.presets);function ZD(e){return XD.includes(e)}function QD(e,t,n){let r=Xv(t(`preset`),e.globals.preset,e.presets),i=$v(e,r),a=t(`edit.mode`)===`open`?e.editGlobals:{};return{preset:r,presetCustomized:n(r),theme:Zx(a.palette,t(`theme`),i.palette),look:ja(a.look,t(`look`),i.look,e.looks),style:Pa(a.style,t(`style`),i.style),progression:Ka(a.progression,t(`progression`),i.progression),separator:a.default_separator??i.default_separator,autoWrap:$a(a.autoWrap,t(`autoWrap`),i.autoWrap),padding:eo(a.padding,t(`padding`),i.padding),charset:Ra(a.charset,t(`charset`),i.charset),updateNotice:a.updateNotice??i.updateNotice??!0,colorCompatibility:Ha(a.colorCompatibility,t(`colorCompatibility`),i.colorCompatibility)}}function $D(e,t){return{style:e.style,separator:e.separator,colorCompatibility:e.colorCompatibility,wrap:e.autoWrap,padding:e.padding,charset:e.charset,width:t}}function eO(e){return{theme:e.theme,look:e.look,preset:e.preset,progression:e.progression}}function tO(e){return{preset:{effective:e.preset,customized:e.presetCustomized,bundled:ZD(e.preset)},style:{effective:e.style},progression:{effective:e.progression},charset:{effective:e.charset},colorCompatibility:{effective:e.colorCompatibility},autoWrap:{effective:e.autoWrap},padding:{effective:e.padding}}}const nO=10*1e3;function rO(e,t,n,r){let i=n-(t*1e3-r);if(i<3e5||e<=0)return;let a=e/i,o=(100-e)/a;return Math.max(0,Math.round(o/6e4))}function iO(e,t){if(!(t<60))return e*3600/t}function aO(e,t,n,r){let i=r-t;if(i<50||i>nO)return;let a=n-e;if(!(a<=0))return a*1e3/i}function oO(e){let{prev:t,cur:n}=e;if(t===void 0)return;let r=aO(t.input,t.atMs,n.input,n.atMs),i=aO(t.output,t.atMs,n.output,n.atMs),a=aO(t.total,t.atMs,n.total,n.atMs);if(!(r===void 0&&i===void 0&&a===void 0))return{...r!==void 0&&{input:r},...i!==void 0&&{output:i},...a!==void 0&&{total:a}}}function sO(e){let{samples:t}=e,n=[];for(let e=1;e<t.length;e++){let r=t[e-1],i=t[e],a=i.atMs-r.atMs;if(a<50||a>nO)continue;let o=aO(r.total,r.atMs,i.total,i.atMs);n.push(o??0)}if(n.length!==0)return n.join(`,`)}function cO(e){let t=e.indexOf(`.`);return t<0?e:e.slice(0,t)}function lO(e){let t=[],n=(e,n)=>{try{let e=n();return e===``?void 0:e}catch(n){t.push(`host.${e}: ${String(n)}`);return}},r=n(`name`,()=>cO(f.hostname())),i=n(`user`,()=>f.userInfo().username);return{host:{...r!==void 0&&{name:r},...i!==void 0&&{user:i},...e.ssh!==void 0&&{ssh:e.ssh}},failures:t}}function uO(e,t){let n=new Map;for(let[t,r]of Object.entries(e.variables))n.set(t,r);for(let[t,r]of Object.entries(e.segments))if(r.vars)for(let[e,i]of Object.entries(r.vars))n.set(`${t}.${e}`,i);let r=[],i=new Set,a=t=>Dg(t,e.helpers).keys();for(let n of Qo(Qv(e,t).node)){if(n.when)for(let e of a(n.when))r.push(e);if(n.kind!==`segment`)continue;let t=e.segments[n.name];if(t){for(let e of[t.template,t.when,t.bg,t.fg])if(e)for(let t of a(e))r.push(t)}}let o=new Set;for(;r.length>0;){let e=r.pop();for(let t of fO(n,e)){if(i.has(t))continue;i.add(t);let e=n.get(t);if(e){if(e.kind===`input`)o.add(e.path);else if(e.kind===`template`)for(let t of a(e.template))r.push(t)}}}return o}function dO(e){let t=new Map;return n=>{let r=t.get(n);if(r!==void 0)return r;let i=uO(e,n);return t.set(n,i),i}}function fO(e,t){let n=t;for(;n.length>0;){if(e.has(n))return[n];let t=n.lastIndexOf(`.`);if(t<0)break;n=n.slice(0,t)}let r=`${t}.`,i=[];for(let t of e.keys())t.startsWith(r)&&i.push(t);return i}function pO(e,t){for(let n of e)if(n===t||n.startsWith(t+`.`))return!0;return!1}function mO(e){let t=t=>e.has(t),n=t(`git.staged`)||t(`git.unstaged`)||t(`git.untracked`)||t(`git.conflicts`);return{...t(`git.sha`)&&{showSha:!0},...n&&{showWorkingTree:!0},...t(`git.stash`)&&{showStashCount:!0},...t(`git.upstream`)&&{showUpstream:!0},...t(`git.repoName`)&&{showRepoName:!0},...t(`git.repoUrl`)&&{showRepoUrl:!0},...t(`git.operation`)&&{showOperation:!0},...t(`git.timeSinceCommit`)&&{showTimeSinceCommit:!0},...(t(`git.prNumber`)||t(`git.prState`)||t(`git.prUrl`)||t(`git.prError`))&&{showPullRequest:!0}}}async function hO(e,t,n,r,i,a,o){let s=e=>pO(r,e),c=(t.clock??(()=>new Date))().getTime(),l=(e,t,n)=>t?n().catch(t=>X(`${e}: ${String(t)}`)):Promise.resolve(Y),[u,d,f,p,m,h,g,_,v]=await Promise.all([l(`git`,s(`git`),()=>t.gitProvider.getGitInfo(n??e.workspace?.current_dir,mO(r),e.workspace?.project_dir)),l(`session`,s(`session.cost`)||s(`session.tokens`)||s(`burn`),()=>t.usageStore.getUsageInfo(e.session_id,e)),l(`today`,s(`today`),()=>t.usageStore.getTodayInfo(e)),l(`context`,s(`context`),()=>t.contextProvider.getContextInfo(e)),l(`metrics`,s(`metrics`)||s(`burn`),()=>t.metricsProvider.getMetricsInfo(e.session_id,e)),l(`activity`,s(`activity`),()=>t.activityProvider.getActivityInfo(e.session_id,e)),l(`tmux`,s(`tmux`),()=>t.tmuxService.getSessionId()),l(`cache`,s(`cache`),()=>HD(e.transcript_path)),l(`speed`,s(`speed`),()=>t.usageStore.observeSpeed(e.session_id,e.transcript_path,c))]),y=[],b=e=>{if(e.kind===`failed`){y.push(e.reason);return}return e.kind===`ok`?e.value:void 0},x=bO(u);y.push(...x.failures);let S=lO(a);y.push(...S.failures);let C=b(d),ee=b(f),te=b(p),w=b(m),ne=b(h),re=b(g),ie=b(_);for(let e of y)t.log(`warn`,`provider fetch failed: ${e}`);let T=e.rate_limits?.five_hour,E=e.rate_limits?.seven_day,ae=T?rO(T.used_percentage,T.resets_at,18e6,c):void 0,oe=E?rO(E.used_percentage,E.resets_at,6048e5,c):void 0,se=C?.session.cost,ce=w?.sessionDuration,le=s(`burn`)&&se!=null&&ce!=null?iO(se,ce):void 0,ue=b(v),de=ue===void 0?void 0:oO(ue),fe=ue===void 0?void 0:sO(ue),pe=de!==void 0||fe!==void 0?{...de,...fe!==void 0&&{history:fe}}:void 0,me=yO(process.env.HOME??process.env.USERPROFILE),he=e.workspace?{...e.workspace,current_dir:yO(e.workspace.current_dir)??``,project_dir:yO(e.workspace.project_dir)??``}:e.workspace,D=C===void 0?void 0:vO({cost:C.session.cost,tokens:C.session.tokens}),ge=ee===void 0?void 0:{cost:ee.cost,tokens:ee.tokens},_e=w===void 0?void 0:vO({lastResponseTime:w.lastResponseTime,responseTime:w.responseTime,sessionDuration:w.sessionDuration,messageCount:w.messageCount,linesAdded:w.linesAdded,linesRemoved:w.linesRemoved}),ve=ne===void 0?void 0:gO(ne);return{...e,...he!==void 0&&{workspace:he},...me!==void 0&&{home:me},...x.git!==void 0&&{git:x.git},...re!==void 0&&{tmux:{session:re}},host:S.host,...tO(i),history:t.history(e.session_id),unsaved:o,...D!==void 0&&{session:D},...ge!==void 0&&{today:ge},...le!==void 0&&{burn:{costPerHour:le}},...pe!==void 0&&{speed:pe},...s(`block`)&&T!==void 0&&{block:{nativeUtilization:T.used_percentage,resetsAt:T.resets_at,...ae!==void 0&&{etaMinutes:ae}}},...E!==void 0&&{weekly:{percentage:E.used_percentage,resetsAt:E.resets_at,...oe!==void 0&&{etaMinutes:oe}}},...ie!==void 0&&{cache:{expiresAt:ie}},...te!==void 0&&{context:{totalTokens:te.totalTokens,contextLeft:te.contextLeftPercentage}},..._e!==void 0&&{metrics:_e},...ve!==void 0&&{activity:ve}}}function gO(e){let t=e.todos.findIndex(e=>e.active),n=e.todos.length===0?void 0:{total:e.todos.length,completed:e.todos.filter(e=>e.done).length,...t>=0&&{position:t+1,active:e.todos[t].text}},r=_O(e.running),i=_O(e.done),a=r===void 0&&i===void 0?void 0:{...r!==void 0&&{running:r},...i!==void 0&&{done:i}};if(!(e.command===null&&n===void 0&&a===void 0))return{...e.command!==null&&{command:e.command},...n!==void 0&&{todo:n},...a!==void 0&&{tool:a}}}function _O(e){return e.length===0?void 0:e.map(e=>`${e.name}:${e.count}`).join(`,`)}function vO(e){let t={},n=!1;for(let r of Object.keys(e)){let i=e[r];i!=null&&(t[r]=i,n=!0)}return n?t:void 0}function yO(e){return e===void 0||e.length===0||c.sep!==`\\`?e:e.replace(/\\/g,`/`)}function bO(e){if(e.kind===`absent`)return{failures:[]};if(e.kind===`failed`)return{failures:[e.reason]};let t=e.value,n=[],r=(e,t)=>{if(!(t===void 0||t.kind===`absent`)){if(t.kind===`failed`){n.push(`git.${e}: ${t.reason}`);return}return t.value}},i=r(`aheadBehind`,t.aheadBehind),a=r(`sha`,t.sha),o=r(`operation`,t.operation),s=r(`timeSinceCommit`,t.timeSinceCommit),c=r(`stash`,t.stashCount),l=r(`upstream`,t.upstream),u=r(`repoName`,t.repoName),d=r(`repoUrl`,t.repoUrl),f=t.pullRequest,p={};return f?.kind===`ok`?(p.prNumber=f.value.number,p.prState=f.value.state,p.prUrl=f.value.url):f?.kind===`failed`&&(n.push(`git.pr: ${f.reason}`),p.prError=f.reason),{git:{branch:t.branch,status:t.status,...i!==void 0&&{ahead:i.ahead,behind:i.behind},...t.workingTree!==void 0&&{staged:t.workingTree.staged,unstaged:t.workingTree.unstaged,untracked:t.workingTree.untracked,conflicts:t.workingTree.conflicts},...a!==void 0&&{sha:a},...o!==void 0&&{operation:o},...s!==void 0&&{timeSinceCommit:s},...c!==void 0&&{stash:c},...l!==void 0&&{upstream:l},...u!==void 0&&{repoName:u},...d!==void 0&&{repoUrl:d},...p},failures:n}}function xO(e,t){return e===void 0?!0:e.evaluate(t).map(e=>e.plain).join(``)!==`false`}function SO(e,t){let n=H.fromFragments(e);return n.end=``,n.noWrap=!0,t!==void 0&&!t.isNull&&(n.style=t),n}function CO(e,t,n){e.cellLength>t?e.truncate(t,{mode:n.truncate,marker:n.truncateMarker}):e.cellLength<t&&e.align(n.justify,t)}function wO({text:e,trail:t}){if(t===void 0)return e;let n=SO([e,t]);return n.style=e.style,n}function TO(e,t){let{width:n,justify:r,truncate:i,truncateMarker:a=`…`,baseStyle:o,padding:s,trail:c=[]}=t;if(e.length===0)return[];let l=SO(e,o).pad(s),u=c.length===0?{}:{trail:SO([...c,new H(` `.repeat(s))],o)};if(n===`auto`)return[{text:l,...u}];let d={justify:r,truncate:i,truncateMarker:a};return n===`fill`?[{text:l,fill:d,...u}]:(CO(l,n,d),[{text:l,...u}])}const EO=RegExp(`\\x1b\\[[0-9;]*m|${Jr.source}`,`g`);function DO(e){return k(e.replace(EO,``))}function OO(e,t){let n=e.map(wO),r=[];if(e.forEach(({fill:e},t)=>{e!==void 0&&r.push({at:t,how:e})}),r.length===0||!Number.isFinite(t.width))return n;let i=LT(n,t).split(`
180
+ `);if(i.length>1)return n;let a=Math.max(0,t.width-DO(i[0]??``)),o=Math.floor(a/r.length),s=a-o*r.length;return r.forEach(({at:t,how:i},a)=>{let c=o+(a===r.length-1?s:0),{text:l}=e[t];CO(l,l.cellLength+c,i),n[t]=wO(e[t])}),n}function kO(e,t){let n=[],r=[],i=()=>{if(!r.length)return;let e=AO(r,t);e.plain.length>0&&n.push(e),r=[]};for(let a of e)if(MO(a.style).link){i();let e=AO([a],t);e.plain.length>0&&n.push(e)}else r.push(a);return i(),n}function AO(e,t){let n=t!==void 0&&!t.isNull?e.map(e=>jO(e,t)):e,r=H.fromFragments(n);return r.end=``,r.noWrap=!0,n.length===1?r.style=n[0].style:t!==void 0&&!t.isNull&&(r.style=t),r}function jO(e,t){let n=e.copy();return n.style=t.add(MO(e.style)),n}function MO(e){return e instanceof B?e:B.parse(e)}var NO=class extends Error{constructor(e,t,n){super(`Invalid ${t} color ${JSON.stringify(e)}: ${n}`),this.name=`ColorSpecError`}};function PO(e,t,n,r,i){let{palette:a,tint:o}=e,s=FO(n,i),c=s===void 0?o:IO(a,s,`bg`);e.bg=c;let l=FO(r,i),u=l===void 0?$i(a,c,t):IO(a,l,`fg`);return new B({bgcolor:P.fromRgba(c),color:P.fromRgba(u)})}function FO(e,t){if(e!==void 0)return e.evaluate(t).map(e=>e.plain).join(``)}function IO(e,t,n){try{return Vn(e,t)}catch(e){throw e instanceof Rn?new NO(t,n,e.message):e}}function LO(e,t,n,r){let i=new Map,a=Object.entries(t);for(let[t,o]of[...a.filter(([,e])=>!(`do`in e)),...a.filter(([,e])=>`do`in e)])i.set(t,RO(e,t,o,n,r,i));return i}function RO(e,t,n,r,i,a){if(`set`in n){let e=r.get(n.set)??n.set;if(`to`in n)return{kind:`set-literal`,key:n.set,value:n.to,stateVar:e};if(`from`in n){let t=iS(n.from,i);return{kind:`set-option`,key:n.set,stateVar:e,options:[...t.members],paletteOf:t.paletteOf}}return`int`in n?{kind:`set-int`,key:n.set,stateVar:e}:`cycle`in n?{kind:`set-cycle`,key:n.set,stateVar:e,members:n.cycle}:{kind:`set-bounded`,key:n.set,by:n.by}}if(`persist`in n){let e=Bv.get(n.persist)??n.persist;if(`to`in n)return{kind:`persist-literal`,key:n.persist,value:n.to,stateVar:e};if(`from`in n){let t=iS(n.from,i);return{kind:`persist-option`,key:n.persist,stateVar:e,options:[...t.members],paletteOf:t.paletteOf}}if(`cycle`in n)return{kind:`persist-cycle`,key:n.persist,stateVar:e,members:n.cycle};if(`removeSegment`in n)return{kind:`layout-op`,key:n.persist,op:{op:`remove`,target:n.removeSegment}};if(`insertSegment`in n)return{kind:`layout-op`,key:n.persist,op:{op:`insert`,segment:n.insertSegment,anchor:n.anchor,relation:n.relation}};if(`insertSegmentFrom`in n){let e=iS(n.insertSegmentFrom,i);return{kind:`layout-op-option`,key:n.persist,anchor:n.anchor,relation:n.relation,options:[...e.members],paletteOf:e.paletteOf}}return{kind:`persist-bounded`,key:n.persist,by:n.by}}if(`copy`in n)return{kind:`copy`,text:BO(e,n.copy,t)};if(`open`in n)return{kind:`open`,target:BO(e,n.open,t)};if(`reset`in n)return{kind:`reset`,key:n.reset};if(`doctor`in n)return n.doctor===`run`?{kind:`doctor-run`}:{kind:`doctor-fix`,check:n.check};if(`undo`in n)return{kind:`undo`};if(`redo`in n)return{kind:`redo`};if(`save`in n)return{kind:`save`};if(`preset`in n)return n.preset===`save`?{kind:`preset-save`}:{kind:`preset-delete`,name:BO(e,n.name,t)};let[o,...s]=n.do.map(e=>{let n=a.get(e);if(n===void 0)throw Error(`action "${t}" fires "${e}", which is not declared in this config`);return n});return{kind:`do`,head:o,rest:s}}function zO(e){return e.kind===`do`?zO(e.head):e}function BO(e,t,n){try{return e(t)}catch(e){throw Error(`Template parse error in actions.${n}: ${e.message}`,{cause:e})}}function VO(e,t){return e.has(t)?Bg(e.read(t)):``}function HO(e,t){return e.evaluate(t).map(e=>e.plain).join(``)}function UO(e,t,n,r){let i=new H(e,{style:B.combine([r,new B({link:t,bold:n})])});return i.noWrap=!0,i.end=``,i}function WO(e,t){return Math.max(e.members.indexOf(VO(t,e.stateVar)),0)}function GO(e,t,n,r,i){switch(e.kind){case`set-literal`:{let t=VO(r,e.stateVar);return{effects:[{verb:GC,args:[i,e.key,e.value]}],active:t===e.value}}case`set-option`:{let a=n??t,o=VO(r,e.stateVar);return{effects:[{verb:GC,args:[i,e.key,a]}],active:o===a}}case`set-int`:{let a=n??t,o=VO(r,e.stateVar);return{effects:[{verb:GC,args:[i,e.key,a]}],active:o===a}}case`set-cycle`:{let t=e.members[(WO(e,r)+1)%e.members.length];return{effects:[{verb:GC,args:[i,e.key,t]}],active:!1}}case`set-bounded`:return{effects:[{verb:KC,args:[i,e.key,String(e.by)]}],active:!1};case`copy`:return{effects:[{verb:qC,args:[HO(e.text,j_(r))]}],active:!1};case`open`:return{effects:[{verb:JC,args:[HO(e.target,j_(r))]}],active:!1};case`persist-literal`:{let t=VO(r,e.stateVar);return{effects:[{verb:QC,args:[i,e.key,e.value]}],active:t===e.value}}case`persist-option`:{let a=n??t,o=VO(r,e.stateVar);return{effects:[{verb:QC,args:[i,e.key,a]}],active:o===a}}case`persist-cycle`:{let t=e.members[(WO(e,r)+1)%e.members.length];return{effects:[{verb:QC,args:[i,e.key,t]}],active:!1}}case`persist-bounded`:return{effects:[{verb:$C,args:[i,e.key,String(e.by)]}],active:!1};case`reset`:return{effects:[{verb:rw,args:[i,e.key]}],active:!1};case`undo`:return{effects:[{verb:aw,args:[i]}],active:!1};case`redo`:return{effects:[{verb:ow,args:[i]}],active:!1};case`save`:return{effects:[{verb:ew,args:[i]}],active:!1};case`preset-save`:return{effects:[{verb:tw,args:[i]}],active:!1};case`preset-delete`:return{effects:[{verb:nw,args:[i,HO(e.name,j_(r))]}],active:!1};case`doctor-run`:return{effects:[{verb:cw,args:[i]}],active:!1};case`doctor-fix`:return{effects:[{verb:lw,args:[i,e.check]}],active:!1};case`layout-op`:return{effects:[{verb:iw,args:[i,e.key,Wv(e.op)]}],active:!1};case`do`:{let a=GO(e.head,t,n,r,i);return{effects:[...a.effects,...e.rest.flatMap(e=>GO(e,t,void 0,r,i).effects)],active:a.active}}case`layout-op-option`:{let r={op:`insert`,segment:n??t,anchor:e.anchor,relation:e.relation};return{effects:[{verb:iw,args:[i,e.key,Wv(r)]}],active:!1}}}}function KO(e,t,n,r){if(n.length===0)throw Error(`action "${e}" needs a display (the clickable text)`);if(t.kind===`set-cycle`||t.kind===`persist-cycle`)return{display:tc(`action "${e}"`,n,t.members.length,WO(t,r)),boundValue:void 0};if(n.length>2)throw Error(`action "${e}" takes a display and an optional bound value, got ${n.length} arguments (per-state displays are a cycle action's form)`);return{display:n[0],boundValue:n[1]}}function qO(e,t,n){let r=n.compiled.get(e);if(!r)throw Error(`action "${e}" is not declared in this config`);let i=n.store,{display:a,boundValue:o}=KO(e,zO(r),t,i),{effects:s,active:c}=GO(r,a,o,i,VO(i,`session.id`));return UO(a,fw(s),c)}function JO(e){return{action:{fn:(t,...n)=>qO(t,n,e),argTypes:[`string`,`string`],returnType:`T`}}}function YO(e,t){return UO(`✕`,fw([{verb:GC,args:[VO(e,`session.id`),t,Qs]}]),!1)}function XO(e,t,n){return new B({bgcolor:P.fromRgba(t),color:P.fromRgba($i(e,t,n))})}function ZO(e,t,n){return XO(e.palette,fa(e.palette,e.disclosure,[t],n),n)}function QO(e,t,n,r,i){return r===void 0?n=>ZO(e,{...n,distribution:t},i):(e,t)=>$O(r(t,n),i)}function $O(e,t){let n=Ui(e,`background`);return new B({bgcolor:P.fromRgba(n),color:P.fromRgba(Jn(Ui(e,`primary`),n,4.5,t))})}function ek(e){return{current:null,drawnAt:e}}function tk(e,t,n,r,i){let a={segName:t,palette:n,disclosure:r,tint:i,bg:void 0,drops:[]};return e.current=a,a}function nk(e,t){let n=e.current;if(n===null)throw Error(`${t} is only available inside a segment's templates — there is no active segment here. Segment-scoped functions cannot be used in variable declarations or layout-node "when" predicates, which are evaluated outside any segment.`);return n}function rk(e){return new H(e).cellLength}function ik(e){return Math.max(1,e.width-e.chromeCols-2*e.padding)}function ak(e){return Math.max(1,ik(e)-(rk(`✕`)+2*e.padding+e.seamCols))}function ok(e,t,n){if(!Number.isFinite(t))return e.length>0?[e.map((e,t)=>t)]:[];let r=Math.max(1,t-n),i=[],a=[],o=0;for(let t=0;t<e.length;t++){let n=e[t];a.length===0?(a=[t],o=n):o+1+n<=r?(a.push(t),o+=1+n):(i.push(a),a=[t],o=n)}return a.length>0&&i.push(a),i}function sk(e,t){let n=[];for(let t of e)n.length>0&&n.push(new H(` `)),n.push(t);let r=H.fromFragments(n);return r.noWrap=t,r.end=``,r}function ck(e,t,n,r){let i=e.compiled.get(t);if(!i||i.kind!==n)throw Error(`picker references action "${t}" which must be ${r}, got ${i?`a ${i.kind} action`:`no such action`}`);return i}function lk(e,t,n){let r=e.compiled.get(t),i=r&&zO(r);if(!i||i.kind!==`set-option`&&i.kind!==`persist-option`&&i.kind!==`layout-op-option`)throw Error(`${n} references action "${t}" which must be a set-option, persist-option, or layout-op-option action ({ set, from }, { persist, from }, or { persist, insertSegmentFrom, anchor, relation }), got ${i?`a ${i.kind} action`:`no such action`}`);return i}function uk(e,t,n,r,i,a,o){let s=lk(a,e,`picker`),c=a.compiled.get(e),l=a.store,u=VO(l,`session.id`),d=`stateVar`in s?VO(l,s.stateVar):void 0,f=s.options.map(rk),p=i?ik(a):1/0,m=rk(`✕`)+1,h=rk(`←`)+1+rk(`→`)+1,g=ok(f,p,m),_=g.length>1?ok(f,p,m+h):g,v=parseInt(VO(l,t.stateVar),10),y=Number.isInteger(v)?Math.max(0,Math.min(v,_.length-1)):0,b=_[y]??[],x=e=>fw([{verb:GC,args:[u,t.key,String(e)]}]),S=n.flatMap(([e,t])=>[e,t]),C=fw([{verb:GC,args:[u,...S]}]),ee=r?[{verb:GC,args:[u,...S]}]:[],te=e=>fw([...GO(c,e,e,l,u).effects,...ee]),w=[UO(`✕`,C,!1)];y>0&&w.push(UO(`←`,x(y-1),!1));for(let e of b){let t=s.options[e];w.push(UO(t,te(t),t===d,o({index:e,count:s.options.length},t)))}return y<_.length-1&&w.push(UO(`→`,x(y+1),!1)),sk(w,i)}function dk(e,t){return{picker:{fn:(n,r,i,a)=>{let o=ck(e,r,`set-int`,`an int action ({ set, int: true })`);return uk(n,{key:o.key,stateVar:o.stateVar},[[o.key,`-1`]],i===!0,a===!0,e,QO(nk(t,`{{ picker }}`),Li(void 0),e.basePalette,lk(e,n,`picker`).paletteOf,t.drawnAt()))},argTypes:[`string`,`string`,`bool`,`bool`],returnType:`T`}}}function fk(e,t,n,r,i){let a=Math.min(Math.floor((t-1)/2),i),o=n,s=0;for(;s<a;){let t=o+rk(e(-(s+1)))+1+rk(e(s+1))+1;if(t>r)break;o=t,s+=1}return s}function pk(e,t,n,r,i){if(!(`stateVar`in t))throw Error(`carousel references action "${e}", which inserts a segment and holds no current value to centre on — a carousel needs a { set, from } or { persist, from } action`);let a=n.store;if(!a.has(t.stateVar))throw Error(`carousel references action "${e}", whose key "${t.stateVar}" no variable reads back, so there is no current value to centre on — declare { kind: "state", key: "${t.stateVar}" } among the variables`);let o=n.compiled.get(e),s=VO(a,`session.id`),{options:c}=t,l=c.length,u=VO(a,t.stateVar),d=Math.max(c.indexOf(u),0),f=e=>((d+e)%l+l)%l,p=e=>c[f(e)],m=new Map,h=e=>{let t=m.get(e);if(t!==void 0)return t;let n=fw(GO(o,p(e),p(e),a,s).effects);return m.set(e,n),n},g=e=>UO(p(e),h(e),p(e)===u,r({index:f(e),count:l},p(e))),_=fk(p,l,rk(`◀`)+1+rk(p(0))+1+rk(`▶`),ak(n),i),v=e=>Array.from({length:_},(t,n)=>g(e*(n+1)));return sk([...v(-1).reverse(),UO(`◀`,h(-1),!1),g(0),UO(`▶`,h(1),!1),...v(1)],!0)}function mk(e,t){return{carousel:{fn:(n,r,...i)=>{if(i.length>0)throw Error(`carousel "${n}": takes at most one neighbours count after the action name, got ${1+i.length}`);if(r!==void 0&&!(Number.isInteger(r)&&r>=0))throw Error(`carousel "${n}": neighbours must be a whole number ≥ 0 (0 shows only ◀ CURRENT ▶), got ${String(r)}`);let a=r??1/0,o=lk(e,n,`carousel`);return pk(n,o,e,QO(nk(t,`{{ carousel }}`),Li(void 0),e.basePalette,o.paletteOf,t.drawnAt()),a)},argTypes:[`string`,`float`],returnType:`T`}}}const hk=[`~/code`,`main`,`opus`,`42%`,`5m`,`$1.20`];function gk(e,t,n){let r=aa(e,{hue:Ai,depth:0},n);return[U(t).map((t,n)=>({text:hk[n%hk.length],colour:Wi(e,t)})),[{text:`▾ open`,colour:r.state},{text:`menu`,colour:r.plane}],[{text:`warn`,colour:Ui(e,`warning`)},{text:`error`,colour:Ui(e,`error`)}]]}function _k(e,t,n,r){let i=gk(e,t,n).flatMap((t,r)=>t.map(({text:t,colour:i},a)=>({gap:r>0&&a===0?` `:``,cell:new H(` ${t} `,{style:XO(e,i,n)})}))),a=[],o=0;for(let{gap:e,cell:t}of i){if(o+=e.length+t.cellLength,o>r)break;e!==``&&a.push(new H(e)),a.push(t)}let s=H.fromFragments(a);return s.noWrap=!0,s.end=``,s}function vk(e,t){return{themePreview:{fn:()=>_k(e.palette,e.progression,t.drawnAt(),ak(e)),argTypes:[],returnType:`T`}}}const yk=e=>e.slice(e.lastIndexOf(`.`)+1),bk=(e,t)=>{let n=new H(yk(e));return n.truncate(t,{marker:`…`}),n.plain};function xk(e,t){let n=e.map(e=>e.map(({name:e})=>rk(yk(e)))),r=e=>n.every(n=>n.reduce((t,n)=>t+Math.min(n,e)+2,0)<=t),i=Math.max(1,...n.flat());for(;i>1&&!r(i);)--i;return i}function Sk(e,t,n,r){let i=xk(e,r),a=e.map(e=>{let a=[],o=0;for(let{name:s,address:c,palette:l}of e){let e=new H(` ${bk(s,i)} `,{style:XO(l,ga(l,{kind:`bar`,progression:t,address:c},n).tint,n)});if(o+=e.cellLength,o>r)break;a.push(e)}return a}),o=H.fromFragments(a.flatMap((e,t)=>t===0?e:[new H(`
181
+ `),...e]));return o.noWrap=!0,o.end=``,o}function Ck(e,t){return{layoutPreview:{fn:()=>Sk(e.layout(),e.progression,t.drawnAt(),ak(e)),argTypes:[],returnType:`T`}}}function wk(e,t,n,r){let i=nk(r.activeSegment,`{{ menu }}`),a=r.action,o=Uh(i.segName,e,n.key),s=Kh(o),c=Hh(e),l=VO(a.store,o)===c,u=VO(a.store,`session.id`),d=l?Qs:c,f=UO(tc(`{{ menu "${e}" }}`,t,2,+!!l),fw([{verb:GC,args:[u,o,d,s,`0`]}]),!1);return i.drops.push(...l?[uk(e,{key:s,stateVar:s},[[o,Qs],[s,`0`]],n.closeOnPick,n.paged,a,QO(i,n.distribution,a.basePalette,lk(a,e,`menu`).paletteOf,r.activeSegment.drawnAt()))]:[]),f}const Tk=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function Ek(e,t){let n=t[t.length-1],r=Tk(n)?n:void 0,i=r===void 0?t:t.slice(0,-1),a=i.findIndex(e=>typeof e!=`string`);if(a!==-1)throw Error(`{{ menu "${e}" }} display #${a+1} is not text (${JSON.stringify(i[a])}) — a menu binds its trigger text, then an optional trailing (dict …) of options`);return{displays:i,options:Xh(r??{})}}function Dk(e){return{menu:{fn:(t,...n)=>{let{displays:r,options:i}=Ek(t,n);return wk(t,r,i,e)},argTypes:[`string`,`value`],returnType:`T`}}}function Ok(e){let{value:t,max:n,width:r,filled:i,empty:a,colourAt:o}=e,s=kk(t,n,r),c=[];for(let e=0;e<r;e++){let t=e<s,l=t&&o!==void 0?o(e*n/r):void 0;c.push(new H(t?i:a,{style:l===void 0?void 0:new B({color:l})}))}let l=H.fromFragments(c);return l.end=``,l.noWrap=!0,l}function kk(e,t,n){return!Number.isFinite(e)||!Number.isFinite(t)||t<=0?0:Math.min(n,Math.max(0,Math.round(e/t*n)))}function Ak(e){let t={fn:(()=>{let t=nk(e,`{{ bgOf }}`);if(t.bg===void 0)throw Error(`{{ bgOf }} is not available while segments.${t.segName}'s own "bg:" is being evaluated — the background is what that template computes. Reach for a palette color there instead, e.g. bg: '{{ darken (color "surface") 1 }}'.`);return t.bg.hex}),argTypes:[],returnType:`string`},n={fn:(()=>nk(e,`{{ tint }}`).tint.hex),argTypes:[],returnType:`string`},r=f_(()=>nk(e,`{{ color }} / {{ ramp }} / {{ gauge }}`).palette),i={fn:((e,t,n,i,a,o,...s)=>Ok({value:e,max:t,width:n,filled:i,empty:a,colourAt:o===void 0||s.length===0?void 0:e=>String(r.ramp.fn(e,o,...jk(s)))})),argTypes:[`float`,`float`,`int`,`string`,`string`,`string`,`string`],returnType:`T`};return{...r,bgOf:t,tint:n,gauge:i}}function jk(e){return e.flatMap(e=>{let t=e.indexOf(`:`),n=t<0?NaN:Number(e.slice(0,t));if(!Number.isFinite(n))throw Error(`{{ gauge }} stop "${e}" must be "<position>:<colour>", e.g. "80:error" or "80:#ff0000"`);return[n,e.slice(t+1)]})}function Mk(e){let t=[],n=[];for(let r of e){if(!r.contains(`
180
182
  `)){n.push(r);continue}let e=r.split(`
181
- `);n.push(e[0]);for(let r=1;r<e.length;r++)t.push(n),n=[e[r]]}return t.push(n),t}const pk=({text:e,trail:t})=>t===void 0?[e]:[e,t];function mk(e,t){switch(e){case`vertical`:return gk(t.flatMap(e=>e));case`horizontal`:{let e=t.find(e=>e[0]?.span===`row`);return e===void 0?t.reduce((e,t)=>Math.max(e,t.length),0)===0?[]:[{cells:t.flatMap(e=>e[0]?.cells??[]),band:`own`,span:`shared`},...t.flatMap(e=>e.slice(1))]:gk(e)}}}function hk(e,t){let n=(e,r)=>t(e)?e.kind===`segment`?[{cells:[{name:e.name,address:r}],band:`own`,span:`shared`}]:mk(e.direction,e.children.map((t,i)=>n(t,[...r,_k(e,i)]))):[];return n(e,[]).map(e=>[...e.cells])}function gk(e){return e.map(e=>e.span===`row`?{...e,span:`shared`}:e)}function _k(e,t){return{index:t,count:e.children.length,distribution:e.distribution,axis:Jo[e.direction]}}const vk={compile(e,t){return{kind:`container`,direction:e.direction,when:t.when,distribution:Li(e.distribution),children:e.children.map((e,n)=>t.compileChild(e,Zo(t.path,n)))}},render(e,t){return mk(e.direction,e.children.map((n,r)=>t.renderChild(n,t.visible,_k(e,r))))}},yk={compile(e,t){return{kind:`segment`,when:t.when,name:e.name,...e.opens!==void 0&&{opens:{open:t.parse(nc(e.opens.ref),`opens`),body:t.compileChild(e.opens.body,Qo(t.path)),key:e.opens.ref.key,placement:e.opens.placement}},...e.trail!==void 0&&{trail:t.parse(e.trail,`trail`)}}},render(e,t){let n=t.lookupSegment(e.name);if(!n)throw Error(`Layout segment "${e.name}" has no matching segment`);let{seg:r,compiled:i}=n;if(!t.visible)return[];try{if(!tO(i.when,t.scope))return[];let n=i.palette??t.palette,{styles:a,fragments:o,trail:s,drops:c}=t.evaluateSegment(e.name,n,t.region,{bg:i.bg,fg:i.fg,body:i.template,trail:e.trail}),l=e.opens!==void 0&&tO(e.opens.open,t.scope),u=c.length>0||l?a.trigger:a.closed,d={width:r.width??`auto`,justify:r.justify??`left`,truncate:r.truncate??`right`,baseStyle:u,padding:t.padding},f=e.opens===void 0?[]:t.renderBody(e.opens.body,l,a.disclosure),p=f.slice(0,+(e.opens?.placement===`inline`)),m=f.slice(p.length),h=e.opens!==void 0&&m.some(e=>e.band===`own`)?aO(lO([t.closeDisclosure(e.opens.key)],a.trigger),{...d,width:`auto`,baseStyle:a.trigger}):[],g=e=>e.band===`own`?h:[],_=m.map(e=>({cells:[...g(e),...e.cells],band:`deeper`,span:`shared`})),v=fk(lO(o,u)).map((e,t)=>({cells:aO(e,{...d,trail:t===0?lO(s,u):[]}),band:`own`,span:`shared`})),y=c.map(e=>({cells:aO(lO([e],a.band),{...d,baseStyle:a.band}),band:`deeper`,span:`shared`})),b=[...v,...y];return t.perSegmentSink!==void 0&&t.perSegmentSink.set(e.name,[...b.flatMap(e=>e.cells),...m.flatMap(g)].flatMap(pk)),[...b.map((e,t)=>t===0&&p.length>0?{cells:[...e.cells,...p.flatMap(e=>e.cells)],band:`own`,span:`row`}:e),..._]}catch(n){let r=n.message??String(n);t.onSegmentError?.(e.name,r);let i=r.replace(/\s*\n\s*/g,` `);return[{cells:aO([new H(`⚠ ${e.name}: ${i}`,{end:``})],{width:`auto`,justify:`left`,truncate:`right`,padding:0,trail:bk(e,t)}),band:`own`,span:`shared`}]}}};function bk(e,t){if(e.trail===void 0)return[];try{return t.evaluateSegment(e.name,t.palette,t.region,{bg:void 0,fg:void 0,body:e.trail,trail:void 0}).fragments}catch(n){return t.onSegmentError?.(e.name,n.message??String(n)),[]}}const xk={container:vk,segment:yk};function Sk(e){return xk[e]}function Ck(e){if(`ttl`in e)return{kind:`ttl`,durationMs:hv(e.ttl)};if(`watch_file`in e)return{kind:`watch_file`,path:e.watch_file};if(`depends_on`in e)return{kind:`depends_on`,varNames:e.depends_on};if(`key`in e)return{kind:`key`,template:e.key};if(`never`in e)return{kind:`never`};throw Error(`Unknown CacheDecl discriminator — loader invariant violated: ${JSON.stringify(e)}`)}function wk(e,t){switch(ts(e)){case`json`:return{kind:`json`,default:t};case`regex`:return{kind:`regex`,regex:new RegExp(e.regex),default:t};case`text`:return{kind:`text`,default:t}}}function Tk(e,t,n,r){switch(n.kind){case`literal`:e.declareLiteral(t,n.value);break;case`input`:e.declareInput(t,n.path,n.type??`string`,n.default);break;case`env`:e.declareEnv(t,n.name,n.default);break;case`file`:e.declareFile(t,n.path,{readMode:n.readMode,cache:Ck(n.cache),parse:wk(n.parse,n.default)});break;case`shell`:e.declareShell(t,n.command,{cache:Ck(n.cache),parse:wk(n.parse,n.default)});break;case`template`:e.declareTemplate(t,n.template,{varDefault:n.default});break;case`time`:e.declareTime(t,{format:n.layout,ttlMs:n.cache?hv(n.cache.ttl):void 0,varDefault:n.default});break;case`git`:e.declareGit(t,{field:n.field,cwd:r,varDefault:n.default});break;case`state`:e.declareState(t,{key:n.key,...n.default!==void 0&&{varDefault:n.default}});break}}function Ek(e,t){let n=Eu.EMPTY;for(let[r,i]of Object.entries(t))try{n=e.parse(`{{ define "${r}" }}${i}{{ end }}`,n).defines()}catch(e){throw Error(`Template parse error in helpers.${r}: ${e.message}`,{cause:e})}return n}const Dk=e=>Ka(void 0,null,e.globals.progression);function Ok(e,t,n){let r=n?.cwd??process.cwd(),i=Rx(e.globals.palette),a={store:t.variableStore,compiled:new Map,chromeCols:vT({style:`powerline`,charset:Ia}),width:80,basePalette:i,palette:i,progression:ki[Dk(e)],padding:1,seamCols:yT({style:`powerline`,charset:Ia}),layout:()=>[]},o=PO(t.drawnAt),s={action:a,activeSegment:o},c=Object.keys(e.looks),l=Gv(e.presets),u=new Map([...Vx(e),...yy(e)]),d=E_({...OO(a),...GO(a,o),...JO(a,o),...QO(a,o),...rk(a,o),...sk(s),...uk(o),looks:{fn:()=>c,argTypes:[]},presets:{fn:()=>l,argTypes:[]}},n?.clock,t.drawnAt),f=Ek(d,e.helpers),p=e=>d.parse(e,f),m=new Map,h=e=>{let t=m.get(e);if(t!==void 0)return t;let n=p(e);return m.set(e,n),n},g=new Map;for(let[t,n]of Lv)n in e.variables&&g.set(t,n);for(let[t,n]of Object.entries(e.variables))n.kind===`state`&&!g.has(n.key)&&g.set(n.key,t);for(let[t,n]of Object.entries(e.segments))if(n.vars)for(let[e,r]of Object.entries(n.vars))r.kind===`state`&&!g.has(r.key)&&g.set(r.key,`${t}.${e}`);a.compiled=_O(p,e.actions,g,u);let _=[];for(let[n,i]of Object.entries(e.variables))try{Tk(t,n,i,r)}catch(e){_.push(`Variable "${n}": ${e.message??String(e)}`)}for(let[n,i]of Object.entries(e.segments))if(i.vars)for(let[e,a]of Object.entries(i.vars))try{Tk(t,`${n}.${e}`,a,r)}catch(t){_.push(`Variable "${n}.${e}": ${t.message??String(t)}`)}let v=Object.create(null);for(let[t,n]of Object.entries(e.segments)){let e=(e,n,r=p)=>{try{return r(e)}catch(e){throw Error(`Template parse error in segments.${t}.${n}: ${e.message}`,{cause:e})}};v[t]={when:n.when===void 0?void 0:e(n.when,`when`,h),template:e(n.template,`template`),bg:n.bg===void 0?void 0:e(n.bg,`bg`),fg:n.fg===void 0?void 0:e(n.fg,`fg`),palette:n.palette===void 0?void 0:jx(n.palette)}}let y=(e,t,n)=>{try{return h(e)}catch(e){throw Error(`Template parse error in ${t}.${n}: ${e.message}`,{cause:e})}},b=(e,t)=>{let n={path:t,when:e.when===void 0?void 0:y(e.when,t,`when`),parse:(e,n)=>y(e,t,n),compileChild:b};return Sk(e.kind).compile(e,n)},x=new Map;for(let t of l){let{node:n,path:r}=Jv(e,t);x.set(t,b(n,r))}let S=new Map;for(let t of wa){let n=e.globals[t];Ta(n)&&S.set(t,kk(p,t,n))}return{segments:v,roots:x,activeSegment:o,menuRuntime:s,globalExpressions:S,loadWarnings:_}}function kk(e,t,n){try{return e(n)}catch(e){throw Error(`globals.${t} is not a valid template: ${e instanceof Error?e.message:String(e)}`)}}function Ak(e,t,n){let r=e.globalExpressions.get(t);if(r===void 0)throw Error(`globals.${t} is an expression but no compiled template exists — registerDslConfig and the resolution disagree about isExpression`);return r.evaluate(n).map(e=>e.plain).join(``)}function jk(e,t){return e.kind===`decided`?e.name:t}function Mk(e,t,n,r,i,a,o,s){let{perSegmentSink:c,onSegmentError:l,onRenderWarning:u}=o??{};r.drawAt(Ua(a.colorCompatibility));let{preset:d=Uv}=s??{},f=ki[s?.progression??Dk(e)];t.menuRuntime.action.progression=f;let p=s?.look??Aa(`none`,e.looks),m=s?.theme??Ix(void 0,null,e.globals.palette),h=(e,t)=>({...i,term:{cols:a.width},theme:{effective:e},look:{effective:t}});r.applyInput(h(jk(m,ya),jk(p,Oa))),t.menuRuntime.action.chromeCols=vT(a),t.menuRuntime.action.padding=a.padding,t.menuRuntime.action.width=a.width,t.menuRuntime.action.seamCols=yT(a);let g=D_(n),_=Da(m,()=>Ak(t,`palette`,g),e=>Fx(e,e=>u?.(e))),v=Da(p,()=>Ak(t,`look`,g),t=>Aa(t,e.looks));(_!==m||v!==p)&&r.applyInput(h(_.name,v.name));let y=_.value;t.menuRuntime.action.basePalette=y;let b=Nx(y,v.value);t.menuRuntime.action.palette=b,c?.clear();let x=n=>{let r=e.segments[n],i=t.segments[n];return r!==void 0&&i!==void 0?{seg:r,compiled:i}:void 0},S=(e,n,i,a)=>{try{let o=r.drawnAt(),{tint:s,disclosure:c}=ga(n,i,o),l=FO(t.activeSegment,e,n,c,s),u=mO(l,o,a.bg,a.fg,g),d=a.body.evaluate(g),f=a.trail?.evaluate(g)??[];return{styles:{closed:u,get trigger(){return AO(n,aa(n,c,o).state,o)},get band(){return AO(n,aa(n,c,o).plane,o)},disclosure:c},fragments:d,trail:f,drops:l.drops}}finally{t.activeSegment.current=null}},C=(e,t,r)=>{let i=t&&tO(e.when,g),o={scope:g,palette:b,visible:i,padding:a.padding,region:r,perSegmentSink:c,onSegmentError:l,evaluateSegment:S,lookupSegment:x,renderChild:(e,t,n)=>C(e,t,ma(r,n)),renderBody:(e,t,n)=>C(e,i&&t,ha(n)),closeDisclosure:e=>kO(n,e)};return Sk(e.kind).render(e,o)},ee=t.roots.get(d);if(ee===void 0)throw Error(`Preset "${d}" has no compiled layout — registerDslConfig compiles one per declared preset and effectivePresetName collapses unknown names to "${Uv}"; a miss here is merge/policy drift (have: ${[...t.roots.keys()].join(`, `)})`);let te=e=>{if(!tO(e.when,g))return!1;if(e.kind===`container`)return!0;if(Cy(e.name)===void 0)return!1;try{return tO(t.segments[e.name].when,g)}catch{return!0}};return t.menuRuntime.action.layout=()=>hk(ee,te).map(e=>e.flatMap(e=>{let n=Cy(e.name);return n===void 0?[]:[{...e,name:n,palette:t.segments[n].palette??b}]})),C(ee,!0,pa(f)).map(e=>bT(cO(e.cells,a),a)).join(`
182
- `)}var Nk=class{kind=`box`;cell;lastChangedAt;constructor(e,t,n){this.name=e,this.type=t,zk(e,t,n,`initial value`),this.cell=Ng.observable.box(n,{deep:!1}),this.lastChangedAt=Date.now()}read(){return this.cell.get()}set(e){zk(this.name,this.type,e,`set value`),!Object.is(this.cell.get(),e)&&(this.cell.set(e),this.lastChangedAt=Date.now())}lastUpdatedMs(){return this.lastChangedAt}},Pk=class{kind=`computed`;cell;constructor(e,t,n){this.name=e,this.type=t,this.cell=(0,Ng.computed)(()=>{let e=n();return zk(this.name,this.type,e,`computed result`),e},{keepAlive:!0})}read(){return this.cell.get()}lastUpdatedMs(){return null}},Fk=class{kind=`document`;cell;lastChangedAt;constructor(e,t){this.name=e,this.cell=Ng.observable.box(Rk(t),{deep:!1}),this.lastChangedAt=Date.now()}read(){return this.cell.get()}set(e){let t=Rk(e);Lk(this.cell.get(),t)||(this.cell.set(t),this.lastChangedAt=Date.now())}lastUpdatedMs(){return this.lastChangedAt}};function Ik(e){return JSON.stringify(e)}function Lk(e,t){return Ik(e)===Ik(t)}function Rk(e){return e.kind===`ok`?{kind:`ok`,value:Pg(e.value)}:e}function zk(e,t,n,r){let i=Fg(n);if(i!==t)throw TypeError(`Variable "${e}": ${r} type ${i} does not match declared type ${t}`)}var Bk=class{nodes=new Map;defineBox(e,t,n){this.assertNotDefined(e),this.nodes.set(e,new Nk(e,t,n))}defineDocument(e,t){this.assertNotDefined(e),this.nodes.set(e,new Fk(e,t))}defineComputed(e,t,n){this.assertNotDefined(e);let r=e=>this.read(e);this.nodes.set(e,new Pk(e,t,()=>n(r)))}read(e){return this.requireVar(e).read()}readDocument(e){let t=this.requireNode(e);if(t.kind!==`document`)throw TypeError(`Variable "${e}" is a ${t.kind}, not a document`);return t.read()}setDocument(e,t){let n=this.requireNode(e);if(n.kind!==`document`)throw TypeError(`Variable "${e}" is a ${n.kind}, not a document (use defineDocument to create one)`);(0,Ng.runInAction)(()=>n.set(t))}setBox(e,t){let n=this.requireNode(e);if(n.kind!==`box`)throw TypeError(`Variable "${e}" is a ${n.kind}, not a box (use defineBox to create a settable variable)`);(0,Ng.runInAction)(()=>n.set(t))}runInAction(e){(0,Ng.runInAction)(e)}has(e){return this.nodes.has(e)}getType(e){return this.requireVar(e).type}getKind(e){return this.requireNode(e).kind}changeKey(e){let t=this.requireNode(e);if(t.kind===`document`)return Ik(t.read());try{return String(t.read())}catch(e){return`failed:${e instanceof Error?e.message:String(e)}`}}getNode(e){let t=this.requireNode(e);return t.kind===`document`?{name:t.name,kind:t.kind,read:()=>t.read(),lastUpdatedMs:()=>t.lastUpdatedMs()}:{name:t.name,type:t.type,kind:t.kind,read:()=>t.read(),lastUpdatedMs:()=>t.lastUpdatedMs()}}names(){return[...this.nodes.keys()]}requireNode(e){let t=this.nodes.get(e);if(!t)throw ReferenceError(`Unknown variable "${e}"`);return t}requireVar(e){let t=this.requireNode(e);if(t.kind===`document`)throw TypeError(`Variable "${e}" is a document; read its fields by path (.${e}.<field>)`);return t}assertNotDefined(e){if(this.nodes.has(e))throw Error(`Variable "${e}" is already declared`)}};function Vk(e,t,n){return e+`\0`+t+`\0`+(n??``)}function Hk(e,t){return new Set(Gv(e.presets).filter(n=>Jv(e,n).path===`root`?t.root!==void 0:t.presets?.[n]?.root!==void 0))}function Uk(e){let t=c.basename(e),n=c.dirname(e);for(;!r.existsSync(n);)t=c.basename(n),n=c.dirname(n);return{dir:n,name:t}}function Wk(e,t){let n=new Map;for(let t of aS(e.projectDir,e.cwd,e.configFile)){let{dir:e,name:r}=Uk(t);n.has(e)||n.set(e,new Set),n.get(e).add(r)}return{files:t===null?[]:[t],dirs:[...n.entries()].sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>({path:e,filenames:[...t].sort()}))}}function Gk(e){return e.filter(Boolean).join(`
183
- `)||null}var Kk=class{entries=new Map;deps;maxEntries;observers;constructor(e,t={}){this.deps=e,this.maxEntries=t.maxEntries??256,this.observers=t.observers??{}}getOrCreate(e,t,n){let r=Vk(e,t,n),i=this.entries.get(r);if(i)return this.entries.delete(r),this.entries.set(r,i),i;let a=this.loadFromDisk(e,t,n),o={projectDir:e,cwd:t,configFile:n,configFilePath:null,lastError:a.error,lastWarning:a.warning,state:a.state??this.buildState(t,null,[]),watcher:null,watcherKey:null};if(this.entries.set(r,o),this.entries.size>this.maxEntries){let e=this.entries.entries().next().value;if(e!==void 0){let[t,n]=e;n.state.registry.dispose(),n.state.validatorDisposers.forEach(e=>e()),n.watcher?.release(),this.entries.delete(t)}}return this.refreshWatcher(o,a.resolvedPath),this.observers.onReload?.(o),o}reload(e,t,n){this.reloadInto(this.getOrCreate(e,t,n))}reloadInto(e){let t=this.loadFromDisk(e.projectDir,e.cwd,e.configFile);e.lastWarning=t.warning,e.lastError=t.error,t.state!==null&&(e.state.registry.dispose(),e.state.validatorDisposers.forEach(e=>e()),e.state=t.state),this.refreshWatcher(e,t.resolvedPath),this.observers.onReload?.(e)}loadFromDisk(e,t,n){let r=sS(e,t,n),i=r.kind===`file`?r.path:null,a=[dS(e,t),lS(r)],o;try{o=this.buildState(t,i,a)}catch(e){return e instanceof Ho&&a.push(...e.warnings),{resolvedPath:i,warning:Gk(a),state:null,error:e instanceof Ho||e instanceof Error?e.message:String(e)}}return{resolvedPath:i,warning:Gk(a),state:o,error:null}}buildState(e,t,n){let r=fS(t,eO),{config:i,raw:a}=r;n.push(...r.warnings);let o=hS(r,t??`<default>`),s=new Bk,c=new Mv(s,o.globals.default_empty_value??``,this.deps.gitService,this.deps.sessionState),l,u=[];try{l=Ok(o,c,{cwd:e}),n.push(...l.loadWarnings);for(let{key:e,spec:t}of wE(o))u.push(_E(e,t));for(let{key:e,spec:t}of oE(o))u.push(sE(e,t))}catch(e){for(let e of u)e();throw c.dispose(),e}return{config:o,store:s,registry:c,compiled:l,neededInputPaths:zD(o),lastRenderCellsBySegment:new Map,validatorDisposers:u,authoredRoots:Hk(i,a)}}refreshWatcher(e,t){e.configFilePath=t;let n=Wk(e,t),r=`config:${e.projectDir}:${e.cwd}:${e.configFile??``}:${JSON.stringify(n)}`;e.watcher!==null&&e.watcherKey===r||(e.watcher?.release(),e.watcherKey=r,e.watcher=this.deps.watchers.acquire(r,n,()=>this.onConfigChanged(e)))}onConfigChanged(e){Q(`info`,`config change detected for entry projectDir=${e.projectDir} cwd=${e.cwd}`),this.reloadInto(e)}get size(){return this.entries.size}firstState(){return this.entries.values().next().value?.state??null}};const qk=16384;var Jk=class{startedAt=new Date;requestsTotal=0;requestsErrored=0;requestsTimedOut=0;inFlight=0;watchersOpened=0;watchersClosed=0;watchersEvicted=0;subprocessTotal=0;subprocessInFlight=0;subprocessCount=new Map;subprocessHistogram=new Map;subprocessHistogramRotator=new Map;rollingTimestamps=[];rollingHead=0;launchStats={onStart:e=>{this.subprocessTotal++,this.subprocessInFlight++,this.subprocessCount.set(e,(this.subprocessCount.get(e)??0)+1),this.recordRollingNow()},onEnd:(e,t)=>{this.subprocessInFlight=Math.max(0,this.subprocessInFlight-1),this.recordDuration(e,t)}};recordRollingNow(){let e=Date.now();if(this.rollingTimestamps.length<qk){this.rollingTimestamps.push(e);return}this.rollingTimestamps[this.rollingHead]=e,this.rollingHead=(this.rollingHead+1)%qk}recordDuration(e,t){let n=this.subprocessHistogram.get(e);if(n||(n=[],this.subprocessHistogram.set(e,n)),n.length<16){n.push(t);return}let r=(this.subprocessHistogramRotator.get(e)??0)%16;n[r]=t,this.subprocessHistogramRotator.set(e,r+1)}snapshotSubprocesses(){let e=Date.now()-6e4,t=0;for(let n of this.rollingTimestamps)n>=e&&t++;let n={};for(let[e,t]of this.subprocessCount)t>0&&(n[e]=t);let r={},i={};for(let[e,t]of this.subprocessHistogram){if(t.length===0)continue;let n=[...t].sort((e,t)=>e-t),a=Math.floor(n.length*.5),o=Math.min(n.length-1,Math.floor(n.length*.99)),s=n[a],c=n[o];s!==void 0&&(r[e]=s),c!==void 0&&(i[e]=c)}return{total:this.subprocessTotal,inFlight:this.subprocessInFlight,lastMinute:t,byCategory:n,p50DurationMs:r,p99DurationMs:i}}snapshot(e){let t=process.memoryUsage();return{pid:process.pid,version:tw,protocolVersion:3,startedAt:this.startedAt.toISOString(),uptimeSec:Math.floor((Date.now()-this.startedAt.getTime())/1e3),rssBytes:t.rss,heapUsedBytes:t.heapUsed,heapTotalBytes:t.heapTotal,externalBytes:t.external,arrayBuffersBytes:t.arrayBuffers,requests:{total:this.requestsTotal,errored:this.requestsErrored,timedOut:this.requestsTimedOut,inFlight:this.inFlight},gitCache:e.gitCache,usageCache:e.usageCache,renderCache:{size:e.renderCacheSize},watchers:{active:e.watchersActive,opened:this.watchersOpened,closed:this.watchersClosed,evicted:this.watchersEvicted},subprocesses:this.snapshotSubprocesses(),nextRestartReason:e.nextRestartReason??null}}};const Yk={load:()=>({}),save:()=>{},flush:()=>{}};function Xk(e){let t=new Map;for(let[n,r]of Object.entries(e))t.set(n,new Map(Object.entries(r)));return t}var Zk=class{sessions;storage;atom=(0,Ng.createAtom)(`SessionState`);constructor(e=Yk,t=256){this.maxSessions=t,this.storage=e,this.sessions=new Map,this.hydrateFromStorage()}useStorage(e){this.storage=e,this.hydrateFromStorage()}hydrateFromStorage(){this.sessions=Xk(this.storage.load()),this.evictOldest(),this.persist()}get(e,t){this.atom.reportObserved();let n=this.sessions.get(e);return n?(this.touch(e,n),n.get(t)??null):null}set(e,t,n){this.setBatch(e,[{key:t,value:n}])}setBatch(e,t){t.length!==0&&(0,Ng.runInAction)(()=>{let n=this.sessions.get(e)??new Map;for(let{key:e,value:r}of t)n.set(e,r);this.touch(e,n),this.evictOldest(),this.persist(),this.atom.reportChanged()})}clear(e,t){(0,Ng.runInAction)(()=>{let n=this.sessions.get(e);n&&(n.delete(t),n.size===0?this.sessions.delete(e):this.touch(e,n)),this.persist(),this.atom.reportChanged()})}prune(e){(0,Ng.runInAction)(()=>{for(let t of this.sessions.keys())e.has(t)||this.sessions.delete(t);this.persist(),this.atom.reportChanged()})}touch(e,t){this.sessions.delete(e),this.sessions.set(e,t)}evictOldest(){let e=this.sessions.size-this.maxSessions;if(!(e<=0)){for(let t of this.sessions.keys())if(this.sessions.delete(t),--e===0)break}}flush(){this.storage.flush()}persist(){this.storage.save(this.serialize())}serialize(){let e=Object.create(null);for(let[t,n]of this.sessions)e[t]=Object.fromEntries(n);return e}};const Qk=(e,t)=>D(t);function $k(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;for(let t of Object.values(e)){if(typeof t!=`object`||!t||Array.isArray(t))return!1;for(let e of Object.values(t))if(typeof e!=`string`)return!1}return!0}var eA=class{timer=null;pending=null;constructor(e,t=500,n=Qk){this.filePath=e,this.debounceMs=t,this.logger=n}load(){let e;try{e=r.readFileSync(this.filePath,`utf8`)}catch(e){let t=e.code;return t!==`ENOENT`&&this.logger(`warn`,`session-state read failed (${t}); starting empty`),{}}try{let t=JSON.parse(e);return $k(t)?t:(this.logger(`warn`,`session-state load: unexpected shape, starting empty`),{})}catch{return this.logger(`warn`,`session-state load: corrupt JSON, starting empty`),{}}}save(e){this.pending=e,!this.timer&&(this.timer=setTimeout(()=>this.flush(),this.debounceMs),this.timer.unref())}flush(){if(this.timer&&=(clearTimeout(this.timer),null),this.pending===null)return;let e=this.pending;try{r.mkdirSync(c.dirname(this.filePath),{recursive:!0});let t=`${this.filePath}.tmp`;r.writeFileSync(t,JSON.stringify(e),{mode:384}),r.chmodSync(t,384),r.renameSync(t,this.filePath),this.pending=null}catch(e){this.logger(`warn`,`session-state save failed: ${e.message}`)}}};const tA={default_bg:`string`,default_fg:`string`,default_empty_value:`string`,default_separator:`string`,default_truncate_marker:`string`,palette:`string`,look:`string`,preset:`string`,style:`string`,progression:`string`,autoWrap:`boolean`,padding:`number`,charset:`string`,updateNotice:`boolean`,colorCompatibility:`string`,menuGlyph:`string`},nA=new Set([`1`,`true`]),rA=new Set([`0`,`false`,``]);function iA(e,t){let n=kA(e),r=n.scope===`segment-palette`?`string`:tA[n.field];if(r===`string`)return JSON.stringify(t);if(r===`number`){let n=Number(t);if(!Number.isFinite(n))throw Error(`persistValueText: "${e}" expects a number, got "${t}"`);return String(n)}if(nA.has(t))return`true`;if(rA.has(t))return`false`;throw Error(`persistValueText: "${e}" expects boolean-ish (1, 0, true, false), got "${t}"`)}function aA(e){try{return r.readFileSync(e,`utf8`)}catch(e){if(e.code===`ENOENT`)return null;throw e}}function oA(e,t,n){try{if(t===null){r.rmSync(e,{force:!0});return}r.mkdirSync(c.dirname(e),{recursive:!0}),ke(e,t)}catch(t){let r=`config write failed (${e}): ${t.message}`;throw n(`error`,r),Error(r)}}function sA(e){return/^\s*$/.test(e)?null:so(e)}function cA(e,t){return e!==null&&lo(e,t)!==void 0}function lA(e){if(e.kind===`segment`)return e.when===void 0?e.name:{seg:e.name,when:e.when};if(e.kind===`container`){let{kind:t,direction:n,children:r,...i}=e;return{[n===`horizontal`?`h`:`v`]:r.map(lA),...i}}return e}function uA(e){if(!zs(e))return lA(e);let{rows:t,...n}=e;return{rows:Object.fromEntries(Object.entries(t).map(([e,t])=>[e,lA(t)])),...n}}const dA=QD,fA=dA.segments,pA=dA.presets,mA=dA.root;function hA(e,t,n,r){if(!cA(e,t)&&n===void 0)throw new $(`cannot edit ${r}: neither the config file nor the bundled default declares ${t.join(`.`)}`)}function gA(e,t){let n=ny(t);return t.scope===`segment-palette`&&hA(e,[`segments`,t.segment],fA[t.segment],n.join(`.`)),n}function _A(e){return so(go(e))}function vA(){return Object.entries(mA.rows).map(([e,t])=>{let n=lA(t);return{path:[`root`],fragment:_A({rows:{[e]:n}}),unit:{path:[`root`,`rows`,e],value:n}}})}function yA(e,t){let n=e===null?void 0:lo(e,t);return n===void 0?null:{path:t,fragment:n,unit:null}}function bA(e,t){if(t===void 0)return null;let n=uA(t);return{path:e,fragment:_A(n),unit:{path:e,value:n}}}function xA(e,t){let n=[`presets`,t],r=[...n,`root`],i=pA[t];hA(e,n,i,r.join(`.`));let a=yA(e,r)??bA(r,i?.root);return a!==null&&Io(a.fragment)?a:null}function SA(e,t){let n=Fo(t.fragment);return n===null?new Map([[`#`,{path:t.path,unit:t.unit,node:t.fragment}]]):new Map([...e,...n.map(e=>[e.key,{path:[...t.path,`rows`,e.key],unit:t.unit,node:e.value}])])}function CA(e,t){return[...vA(),yA(e,[`root`]),xA(e,t)].filter(e=>e!==null).reduce(SA,new Map)}function wA(e,t,n){for(let{node:r,...i}of CA(e,t).values())if(Ro(r,n))return i;throw new $(`${TA(e,t).join(`.`)} holds no segment "${n}" — the bar you clicked is stale; it reloads on the next render`)}function TA(e,t){return xA(e,t)?.path??[`root`]}function EA(e,t){return t.scope===`preset-root`?TA(e,t.preset):ny(t)}function DA(e,{unit:t}){return t===null?e:Ao(e,t.path,go(t.value),mo)}function OA(e){let t=ty(e);if(t===null)throw Error(`"${e}" is not a valid persist target`);return t}function kA(e){let t=OA(e);if(t.scope===`preset-root`)throw Error(`"${e}" names a layout, not a value`);return t}function AA(e,t,n,r){oA(t,r,e.logger),e.record(t,n,r)}function jA(e,t){let n=kA(t),r=sA(aA(e)??``),i=r===null?void 0:lo(r,ny(n));return i!==void 0&&`value`in i?i.value:void 0}function MA(e,t,n){let r=aA(t);AA(e,t,r,n.reduce((e,[t,n])=>Ao(e,gA(sA(e),kA(t)),iA(t,n),mo),r??``))}function NA(e,t,n){let r=OA(n),i=aA(t);if(i===null)return;let a=jo(i,EA(sA(i),r));a!==i&&AA(e,t,i,a)}function PA(e,t,n,r){let i=OA(n);if(i.scope!==`preset-root`)throw Error(`"${n}" is not a "presets.<name>.root" target`);let a=aA(t),o=r.op===`remove`?r.target:r.anchor,s=wA(sA(a??``),i.preset,o),c=DA(a??``,s),l=r.op===`remove`?Bo(c,s.path,r.target):Vo(c,s.path,r.segment,r.anchor,r.relation);if(l===null)throw new $(`${s.path.join(`.`)} in ${t} has no segment "${o}" — the bar you clicked is stale; it reloads on the next render`);AA(e,t,a,l)}const FA={load:()=>({}),save:()=>{}},IA=new Set(Fv.map(e=>e.sessionKey)),LA={past:[],future:[]},RA=e=>e.kind===`session`?`session:${e.key}`:`file:${e.file}`;var zA=class{state=new Map;constructor(e,t,n=FA){this.sessionState=e,this.logger=t,this.storage=n,this.state=new Map(Object.entries(n.load()))}useStorage(e){this.storage=e,this.state=new Map(Object.entries(e.load()))}depth(e){let{past:t,future:n}=this.state.get(e)??LA;return{undo:t.length,redo:n.length}}history(e){return this.state.get(e)??LA}begin(){let e=new Map,t=(t,n)=>{let r=e.get(t)??new Map,i=r.get(RA(n));r.set(RA(n),i===void 0?n:{...n,before:i.before}),e.set(t,r)},n=this.sessionState,r=(e,r,i)=>{let a=r.filter(e=>IA.has(e)).map(t=>({key:t,before:n.get(e,t)}));i();for(let{key:r,before:i}of a)t(e,{kind:`session`,key:r,before:i,after:n.get(e,r)})};return{sessionState:{get:(e,t)=>n.get(e,t),set:(e,t,i)=>r(e,[t],()=>n.set(e,t,i)),setBatch:(e,t)=>r(e,t.map(e=>e.key),()=>n.setBatch(e,t)),clear:(e,t)=>r(e,[t],()=>n.clear(e,t))},file:(e,n,r,i)=>t(e,{kind:`file`,file:n,before:r,after:i}),commit:()=>{let t=[...e];e.clear();for(let[e,n]of t){let t=[...n.values()].filter(e=>e.before!==e.after);t.length!==0&&this.put(e,{past:HA([...this.history(e).past,t]),future:[]})}}}}undo(e){let{past:t,future:n}=this.history(e),r=t.at(-1);if(r===void 0)throw new $(`undo: nothing to undo`);return this.apply(e,r,`before`,`undo`,{past:t.slice(0,-1),future:HA([...n,r])}),r}redo(e){let{past:t,future:n}=this.history(e),r=n.at(-1);if(r===void 0)throw new $(`redo: nothing to redo`);return this.apply(e,r,`after`,`redo`,{past:HA([...t,r]),future:n.slice(0,-1)}),r}apply(e,t,n,r,i){let a=n===`before`?`after`:`before`,o=t.filter(t=>this.read(e,t)!==t[a]);if(o.length>0){let t=new Set(o.map(RA));throw this.put(e,{past:UA(this.history(e).past,t),future:UA(this.history(e).future,t)}),new $(`${r}: ${o.map(GA).join(`, `)} changed since that edit — refusing to overwrite it; this session's undo history no longer steps it`)}let s=[];try{for(let r of t)this.write(e,r,r[n]),s.push(r);this.put(e,i)}catch(t){try{for(let t of s.reverse())this.write(e,t,t[a])}catch(e){throw Error(`${t.message}; and putting the step back failed, so it is half-applied: ${e.message}`)}throw t}}read(e,t){return t.kind===`session`?this.sessionState.get(e,t.key):aA(t.file)}write(e,t,n){t.kind===`file`?oA(t.file,n,this.logger):n===null?this.sessionState.clear(e,t.key):this.sessionState.set(e,t.key,n)}put(e,t){let n=new Map(this.state);for(n.delete(e),(t.past.length>0||t.future.length>0)&&n.set(e,t);n.size>32||BA(n)>8388608;){let[e,t]=n.entries().next().value;n.size>1?n.delete(e):n.set(e,VA(t))}this.storage.save(Object.fromEntries(n)),this.state=n}};function BA(e){let t=0;for(let{past:n,future:r}of e.values())for(let e of[...n,...r])for(let n of e)t+=(n.before?.length??0)+(n.after?.length??0);return t}function VA({past:e,future:t}){return e.length>0?{past:e.slice(1),future:t}:{past:e,future:t.slice(1)}}function HA(e){return e.slice(-50)}function UA(e,t){return e.map(e=>e.filter(e=>!t.has(RA(e)))).filter(e=>e.length>0)}function WA(e){return e.map(GA).join(`, `)}function GA(e){return e.kind===`session`?`session setting "${e.key}"`:e.file}function KA(e){if(typeof e!=`object`||!e)return!1;let t=e,n=e=>e===null||typeof e==`string`;return(t.kind===`session`&&typeof t.key==`string`||t.kind===`file`&&typeof t.file==`string`)&&n(t.before)&&n(t.after)}function qA(e){return Array.isArray(e)&&e.every(e=>Array.isArray(e)&&e.every(KA))}function JA(e){if(typeof e!=`object`||!e)return!1;let t=e;return qA(t.past)&&qA(t.future)}function YA(e,t){return{load:()=>{let n;try{n=r.readFileSync(e,`utf8`)}catch(e){let n=e.code;return n!==`ENOENT`&&t(`warn`,`settings-history read failed (${n}); starting empty`),{}}try{let e=JSON.parse(n);if(typeof e==`object`&&e&&!Array.isArray(e)&&Object.values(e).every(JA))return e}catch{}return t(`warn`,`settings-history load: unexpected shape, starting empty`),{}},save:n=>{try{r.mkdirSync(c.dirname(e),{recursive:!0}),ke(e,JSON.stringify(n),384)}catch(e){let n=`settings-history write failed — the change landed but is not undoable: ${e.message}`;throw t(`error`,n),Error(n)}}}}const XA={theme:e=>e.theme.kind===`decided`?e.theme.name:null,preset:e=>e.preset,look:e=>e.look.kind===`decided`?e.look.name:null,style:e=>e.style,progression:e=>e.progression,charset:e=>e.charset,colorCompatibility:e=>e.colorCompatibility,autoWrap:e=>e.autoWrap?qa:Ja,padding:e=>String(e.padding)},ZA=Object.entries(Pv),QA=new Set(Fv.map(e=>e.sessionKey)),$A=()=>!1;function ej(e,t){let n=OD(e,e=>QA.has(e)?t(e):null,$A),r=OD(e,()=>null,$A),i=OD(e,e=>e===Pv.preset.sessionKey?n.preset:null,$A),a=qv(e.presets,n.preset).globals??{};return ZA.flatMap(([e,t])=>{let o=XA[e](n),s=XA[e](e===`preset`?r:i);return o===null||o===s?[]:[{...t,value:o,target:t.configKey in a?ey(n.preset,t.configKey):t.configKey}]})}function tj(e){let t=Ee({bin:`tmux`,args:[`-S`,e.socket,`display`,`-p`,`-t`,e.pane,`#{client_termfeatures}`],timeoutMs:2e3,category:`doctor.tmux`});return t.ok?{kind:`ok`,value:t.stdout.trim().split(`,`).filter(e=>e!==``)}:{kind:`failed`,reason:`tmux display -p failed (${t.error??[t.reason,t.stderr.trim()].filter(e=>e!==``).join(`: `)})`}}function nj(){return{probeTmux:tj,claudeSettingsPath:nw()}}function rj(e){return r.existsSync(e.claudeSettingsPath)?r.readFileSync(e.claudeSettingsPath,`utf8`):``}function ij(e){if(/^\s*$/.test(e))return{};let t=ho.parse(e);if(typeof t!=`object`||!t||Array.isArray(t))throw Error(`not a JSON object`);let n=t.env;if(n===void 0)return{};if(typeof n!=`object`||!n||Array.isArray(n))throw Error("`env` is not an object");return n}function aj(e,t){return t===void 0?{kind:`unreported`}:t===null?{kind:`outside`}:{kind:`inside`,hint:t,termfeatures:e.probeTmux(t)}}function oj(e){try{return ij(rj(e))}catch(t){throw Error(`cannot read ${e.claudeSettingsPath}: ${t instanceof Error?t.message:String(t)}`,{cause:t})}}function sj(e,t){return{tmux:aj(e,t),claudeSettingsEnv:oj(e)}}function cj(e,t,n){switch(t.kind){case`claude-settings-env`:{let i=Ao(rj(e),[`env`,t.name],JSON.stringify(t.value),ho);return r.mkdirSync(c.dirname(e.claudeSettingsPath),{recursive:!0}),ke(e.claudeSettingsPath,i),{...n,claudeSettingsEnv:oj(e)}}default:return t.kind}}function lj(e){if(!e)throw new $(`session id is required`);if(e.includes(`/`)||e.includes(`..`))throw new $(`invalid session id "${e}"`);return e}function uj(e){return dj(()=>decodeURIComponent(e))}function dj(e){try{return e()}catch(e){throw e instanceof URIError?new $(`malformed wire encoding: ${e.message}`):e}}function fj(e,t){let n=Ee({bin:`/usr/bin/pbcopy`,stdinInput:e,category:`click.pbcopy`});if(!n.ok){if(n.reason===`rate-limited`){t.dlog(`warn`,`click.pbcopy rate-limited: ${n.error??``}`);return}throw Error(`pbcopy failed (${n.reason}, exit ${n.exitCode??`null`})`)}}const pj=(e,t)=>fj(uj(e),t),mj=(e,t)=>{let n=Ee({bin:`/usr/bin/open`,args:[`-a`,`Visual Studio Code`,uj(e)],category:`click.open`});if(!n.ok){if(n.reason===`rate-limited`){t.dlog(`warn`,`click.open rate-limited: ${n.error??``}`);return}throw Error(`open -a "Visual Studio Code" failed (${n.reason}, exit ${n.exitCode??`null`})`)}},hj=(e,t)=>fj(uj(e),t),gj=(e,t)=>fj(uj(e),t),_j=(e,t)=>{let n=lj(uj(e));t.sessionState.get(n,`toolbar-expanded`)?t.sessionState.clear(n,`toolbar-expanded`):t.sessionState.set(n,`toolbar-expanded`,`1`)},vj=(e,t)=>{let[n=``,...r]=dj(()=>YC(e)),i=lj(n);if(r.length===0)throw new $(`set-state: <key>/<value> is required (have keys: ${gE().join(`, `)})`);if(r.length%2!=0)throw new $(`set-state: expected even-count <key>/<value> pairs, got ${r.length} segment(s) after session id (have keys: ${gE().join(`, `)})`);let a=[];for(let e=0;e<r.length;e+=2){let t=r[e],n=r[e+1];if(!t)throw new $(`set-state: empty key at pair ${e/2+1} (expected <sessionId>/<key>/<value>[/<key>/<value>...] segments)`);let i=vE(t,n);if(!i.ok)throw new $(`set-state: pair ${e/2+1}: ${i.reason}`);a.push({key:t,value:i.value})}t.sessionState.setBatch(i,a);let o=a.map(e=>`${e.key}=${e.value}`).join(` `);t.dlog(`info`,`set-state: ${o} (session=${i})`)},yj=/^-?\d+$/;function bj(e,t,n){return e>n?t:e<t?n:e}const xj=(e,t)=>{let[n=``,r=``,i=``]=dj(()=>YC(e)),a=lj(n);if(!r)throw new $(`step-state: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!yj.test(i))throw new $(`step-state: delta must be an integer, got "${i}"`);let o=parseInt(i,10),s=yE(r);if(!s)throw new $(`step-state: key "${r}" is not a bounded (range) state key (have keys: ${gE().join(`, `)})`);let c=t.sessionState.get(a,r),l=c&&yj.test(c)?Math.max(s.min,Math.min(s.max,parseInt(c,10))):s.seed,u=bj(l+o,s.min,s.max),d=vE(r,String(u));if(!d.ok)throw new $(`step-state: ${d.reason}`);t.sessionState.set(a,r,d.value),t.dlog(`info`,`step-state: ${r} ${l}→${d.value} (by ${o}, session=${a})`)},Sj=`render-origin`;function Cj(e){return JSON.stringify(e)}function wj(e){let t;try{t=JSON.parse(e)}catch{throw new $(`render origin is not JSON: ${e}`)}if(typeof t!=`object`||!t)throw new $(`render origin is not an object: ${e}`);let{projectDir:n,cwd:r,configFile:i}=t;if(typeof n!=`string`||typeof r!=`string`||i!==null&&typeof i!=`string`)throw new $(`render origin has the wrong shape: ${e}`);return{projectDir:n,cwd:r,configFile:i}}function Tj(e,t){let n=e.sessionState.get(t,Sj);if(n===null)throw new $(`session ${t} has not rendered yet — no config file to write`);return wj(n)}function Ej(e){return cS(e.projectDir,e.cwd,e.configFile??void 0)}function Dj(e,t){return Ej(Tj(e,t))}function Oj(e,t){return{record:(n,r,i)=>e.journal.file(t,n,r,i),logger:e.dlog}}const kj=(e,t)=>{let[n=``,r=``,i=``]=dj(()=>YC(e)),a=lj(n);if(!r)throw new $(`set-config: <key>/<value> is required (have keys: ${$T().join(`, `)})`);let o=eE(r,i);if(!o.ok)throw new $(`set-config: ${o.reason}`);let s=Dj(t,a);MA(Oj(t,a),s,[[r,o.value]]),t.dlog(`info`,`set-config: ${r}=${o.value} → ${s} (session=${a})`)},Aj=(e,t)=>{let[n=``,r=``,i=``]=dj(()=>YC(e)),a=lj(n);if(!r)throw new $(`step-config: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!yj.test(i))throw new $(`step-config: delta must be an integer, got "${i}"`);let o=parseInt(i,10),s=tE(r);if(!s)throw new $(`step-config: key "${r}" is not a bounded (range) config key (have keys: ${$T().join(`, `)})`);let c=Dj(t,a),l=jA(c,r),u=typeof l==`number`?Math.max(s.min,Math.min(s.max,l)):s.seed,d=bj(u+o,s.min,s.max),f=eE(r,String(d));if(!f.ok)throw new $(`step-config: ${f.reason}`);MA(Oj(t,a),c,[[r,f.value]]),t.dlog(`info`,`step-config: ${r} ${u}→${f.value} (by ${o}) → ${c} (session=${a})`)},jj=(e,t)=>{let[n=``]=dj(()=>YC(e)),r=lj(n),i=Tj(t,r),a=ej(t.configFor(i),e=>t.sessionState.get(r,e));if(a.length===0){t.dlog(`info`,`save: nothing unsaved (session=${r})`);return}let o=a.map(e=>{let t=vE(e.sessionKey,e.value);if(!t.ok)throw new $(`save: ${t.reason}`);return[e.target,t.value]}),s=Ej(i);MA(Oj(t,r),s,o),t.reloadConfig(i);for(let e of a)t.sessionState.clear(r,e.sessionKey);t.dlog(`info`,`save: ${o.map(([e,t])=>`${e}=${t}`).join(` `)} → ${s} (session=${r})`)},Mj=(e,t)=>{let[n=``,r=``]=dj(()=>YC(e)),i=lj(n);if(!r||!$T().includes(r))throw new $(`reset-config: unknown config key "${r}" (have: ${$T().join(`, `)})`);let a=Dj(t,i);NA(Oj(t,i),a,r),t.dlog(`info`,`reset-config: ${r} ← ${a} (session=${i})`)},Nj=(e,t)=>{let[n=``,r=``,i=``]=dj(()=>YC(e)),a=lj(n);if(!r)throw new $(`apply-layout-op: <key>/<op> is required (have: ${$T().join(`, `)})`);let o=eE(r,i);if(!o.ok)throw new $(`apply-layout-op: ${o.reason}`);let s=Vv(o.value);if(s===null)throw new $(`apply-layout-op: "${o.value}" is not a layout op token`);let c=Dj(t,a);PA(Oj(t,a),c,r,s),t.dlog(`info`,`apply-layout-op: ${r} ${o.value} → ${c} (session=${a})`)},Pj=(e,t)=>{let[n=``]=dj(()=>YC(e)),r=lj(n);t.journal.commit();let i=t.history.undo(r);t.dlog(`info`,`undo: restored ${WA(i)} (session=${r})`)},Fj=(e,t)=>{let[n=``]=dj(()=>YC(e)),r=lj(n);t.journal.commit();let i=t.history.redo(r);t.dlog(`info`,`redo: re-applied ${WA(i)} (session=${r})`)},Ij=(e,t)=>{lj(uj(e)),t.applyUpdate()},Lj=`client-hints`;function Rj(e,t){let n=e.sessionState.get(t,Lj);if(n===null)throw new $(`session ${t} has not rendered yet — no client facts to diagnose`);let r;try{r=JSON.parse(n)}catch{throw new $(`client hints record is not JSON: ${n}`)}if(typeof r!=`object`||!r)throw new $(`client hints record is not an object: ${n}`);return SS(r)}function zj(e,t,n){let r=Fy(n);e.sessionState.setBatch(t,Ry(r)),e.dlog(`info`,`doctor: ${r.map(e=>`${e.check.name}=${e.verdict.ok?`ok`:`failed`}`).join(` `)} (session=${t})`)}const Bj=(e,t)=>{let n=lj(uj(e));zj(t,n,sj(t.doctor,Rj(t,n).tmux))},Vj=(e,t)=>{let[n=``,r=``]=dj(()=>YC(e)),i=lj(n),a=Iy(r);if(a===void 0)throw new $(`doctor-fix: unknown check "${r}"`);let o=sj(t.doctor,Rj(t,i).tmux),s=a.probe(o);if(s.ok||s.fix===void 0)throw new $(`doctor-fix: ${a.label} — ${s.ok?`nothing to fix`:s.reason}`);let c=cj(t.doctor,s.fix,o);t.dlog(`info`,`doctor-fix: ${a.name} → ${s.fix.kind} ${s.fix.name}=${s.fix.value} (session=${i})`),zj(t,i,c)},Hj=`config-override`,Uj=new Map([[NC,pj],[`load-config`,(e,t)=>{let n=e.indexOf(`/`);if(n===-1)throw new $(`load-config: expected <sessionId>/<path> (missing separator)`);let r=lj(dj(()=>decodeURIComponent(e.slice(0,n)))),i=dj(()=>decodeURIComponent(e.slice(n+1))).trim();if(i!==``){if(!i.startsWith(`/`))throw new $(`load-config: path must be absolute, got "${i}"`);if(!/\.(json5?|json)$/.test(i))throw new $(`load-config: path must end with .json5 or .json, got "${i}"`)}i===``?(t.sessionState.clear(r,Hj),t.dlog(`info`,`load-config: override cleared (session=${r})`)):(t.sessionState.set(r,Hj,i),t.dlog(`info`,`load-config: ${i} (session=${r})`))}],[PC,mj],[jC,vj],[MC,xj],[RC,kj],[zC,Aj],[VC,Mj],[BC,jj],[HC,Nj],[UC,Pj],[WC,Fj],[IC,hj],[LC,gj],[FC,_j],[GC,Ij],[KC,Bj],[qC,Vj]]),Wj=new Set([jC,MC,RC,zC,VC,BC,HC,UC,WC,FC,GC,KC,qC]),Gj=(e,t)=>{let n=[],r=!1,i=null;for(let{verb:a,value:o}of QC(ZC(e))){if(!i&&Wj.has(a)){let e=YC(o);e.length>0&&e[0]&&(i=e[0])}let e=Uj.get(a);if(!e){n.push(`unknown effect verb "${a}"`);continue}try{e(o,t)}catch(e){e instanceof $||(r=!0),n.push(`${a}: ${e instanceof Error?e.message:String(e)}`)}}if(n.length>0){i&&t.sessionState.set(i,`click.error`,n.join(`
184
- `));let e=`dispatch: ${n.join(`; `)}`;throw r?Error(e):new $(e)}};function Kj(e){return(t,n)=>{let r=n.history.begin(),i=[];try{e(t,{...n,sessionState:r.sessionState,journal:r})}catch(e){i.push(e)}try{r.commit()}catch(e){i.push(e)}if(i.length===1)throw i[0];if(i.length>1)throw Error(i.map(e=>String(e.message??e)).join(`; `))}}const qj=new Map([...Uj,[AC,Gj]].map(([e,t])=>[e,Kj(t)]));Object.freeze([...qj.keys()]);const Jj=new Set([`hook_event_name`,`session_id`,`session_name`,`transcript_path`,`cwd`,`model`,`workspace`,`version`,`output_style`,`cost`,`context_window`,`exceeds_200k_tokens`,`effort`,`thinking`,`rate_limits`,`vim`,`agent`,`worktree`]),Yj=[[`session_id`,`string`],[`transcript_path`,`string`],[`cwd`,`string`],[`model`,`object`],[`model.id`,`string`],[`model.display_name`,`string`],[`workspace`,`object`],[`workspace.current_dir`,`string`],[`workspace.project_dir`,`string`]];function Xj(e){let t={missingRequired:[],typeMismatches:[],unknownTopLevelFields:[]},n=typeof e==`object`&&e&&!Array.isArray(e)?e:{};for(let[e,r]of Yj){let i=Qj(n,e);if(i==null)t.missingRequired.push(e);else{let n=Zj(i);n!==r&&t.typeMismatches.push({path:e,expected:r,got:n})}}for(let e of Object.keys(n))Jj.has(e)||t.unknownTopLevelFields.push(e);return{data:e,report:t}}function Zj(e){return Array.isArray(e)?`array`:typeof e==`string`&&!e.isWellFormed()?`ill-formed string`:typeof e}function Qj(e,t){let n=e;for(let e of t.split(`.`)){if(typeof n!=`object`||!n||Array.isArray(n))return;n=n[e]}return n}function $j(e,t){switch(e){case`vars`:return{what:e,vars:eM(t)};case`segments`:return{what:e,segments:aM(t)};case`config`:return{what:e,config:cM(t)}}}function eM(e){if(e===null)return[];let{store:t,registry:n,config:r}=e,i=rM(r),a=t.names().sort(),o=[];for(let e of a){let r=t.getNode(e),a=n.getLastError(e);o.push({name:e,source:i.get(e)??null,...tM(r),lastError:a===void 0?null:{timestampMs:a.timestamp,message:a.message},ageMs:nM(r.lastUpdatedMs())})}return o}function tM(e){if(e.kind!==`document`)try{return{type:e.type,value:e.read()}}catch(t){return{type:e.type,value:t instanceof Error?t.message:String(t)}}let t=e.read();switch(t.kind){case`ok`:return{type:`document`,value:JSON.stringify(t.value)};case`absent`:return{type:`document`,value:`(not yet scanned)`};case`failed`:return{type:`document`,value:t.reason}}}function nM(e){return e===null?null:Math.max(0,Date.now()-e)}function rM(e){let t=new Map;for(let[n,r]of Object.entries(e.variables))t.set(n,iM(r));for(let[n,r]of Object.entries(e.segments))if(r.vars)for(let[e,i]of Object.entries(r.vars))t.set(`${n}.${e}`,iM(i));return t}function iM(e){return e.kind}function aM(e){if(e===null)return[];let{store:t,config:n,lastRenderBySegment:r}=e,i=new Set(t.names()),a=oM(n),o=[];for(let e of a){let t=n.segments[e];t&&o.push({name:e,description:t.description??null,template:t.template,referencedVars:sM(t.template,n.helpers,i),lastRender:r.get(e)??null})}return o}function oM(e){let t=[],n=new Set;for(let r of Xo(Hs(e.root)))r.kind===`segment`&&e.segments[r.name]&&!n.has(r.name)&&(t.push(r.name),n.add(r.name));for(let r of Object.keys(e.segments))n.has(r)||(t.push(r),n.add(r));return t}function sM(e,t,n){let r=new Set;for(let i of Cg(e,t).keys()){if(n.has(i)){r.add(i);continue}let e=i.split(`.`);for(;e.length>1;){e.pop();let t=e.join(`.`);if(n.has(t)){r.add(t);break}}}return Array.from(r).sort()}function cM(e){return e===null?null:e.config}const lM=[`vars`,`segments`,`config`];function uM(e){return typeof e==`string`&&lM.includes(e)}function dM(e){return Math.max(1,e-2)}var fM=class{thresholds={LOW:50,MEDIUM:80};getContextUsageThresholds(){return this.thresholds}ratioPercentages(e,t){let n=Math.min(100,Math.max(0,Math.round(e/t*100)));return{percentage:n,contextLeftPercentage:Math.max(0,100-n)}}calculateContextFromHookData(e){let t=e.context_window;if(!t?.current_usage)return D(`No current_usage in hook data, falling back to transcript parsing`),null;let n=t.current_usage,r=t.context_window_size,i=(n.input_tokens||0)+(n.cache_creation_input_tokens||0)+(n.cache_read_input_tokens||0);D(`Native current_usage: input=${n.input_tokens}, cache_create=${n.cache_creation_input_tokens}, cache_read=${n.cache_read_input_tokens}, total=${i} (limit: ${r})`);let a=this.ratioPercentages(i,r);return{totalTokens:i,maxTokens:r,percentage:t.used_percentage==null?a.percentage:Math.round(t.used_percentage),contextLeftPercentage:t.remaining_percentage==null?a.contextLeftPercentage:Math.round(t.remaining_percentage)}}async calculateContextTokensFromTranscript(e,t){try{D(`Calculating context tokens from transcript: ${e}`);let n=await oD(e);if(n.length===0)return D(`No entries in transcript`),Y;let r=null;for(let e=n.length-1;e>=0;e--){let t=n[e];if(t&&t.message?.usage?.input_tokens&&t.isSidechain!==!0){r=t,D(`Context segment: Found most recent entry at ${t.timestamp.toISOString()}, stopping search`);break}}if(r?.message?.usage){let e=r.message.usage,n=(e.input_tokens||0)+(e.cache_read_input_tokens||0)+(e.cache_creation_input_tokens||0);return D(`Most recent main chain context: ${n} tokens (limit: ${t})`),J({totalTokens:n,maxTokens:t,...this.ratioPercentages(n,t)})}return D(`No main chain entries with usage data found`),Y}catch(e){return X(`context transcript: ${e instanceof Error?e.message:String(e)}`)}}async getContextInfo(e){let t=this.calculateContextFromHookData(e);if(t)return J(t);let n=e.context_window?.context_window_size??2e5;return this.calculateContextTokensFromTranscript(e.transcript_path,n)}},pM=class{states=new Map;constructor(e,t,n=256){this.empty=e,this.step=t,this.maxSessions=n}async read(e,t){let n=this.states.get(e),r=UE(t);if(n&&r!==0&&n.cursor.mtimeMs===r)return this.touch(e,n),{kind:`ok`,value:n.value};let i=await uD(t,n?.cursor);if(i.kind===`failed`)return i;if(i.kind===`absent`)return{kind:`ok`,value:n?.value??this.empty};let{entries:a,cursor:o,reset:s}=i.value,c=s||n===void 0?this.empty:n.value;for(let e of a)c=this.step(c,e);for(this.touch(e,{cursor:o,value:c});this.states.size>this.maxSessions;){let e=this.states.keys().next().value;if(e===void 0)break;this.states.delete(e)}return{kind:`ok`,value:c}}touch(e,t){this.states.delete(e),this.states.set(e,t)}};const mM={messageCount:0,recent:[]};function hM(e,t){if(t.isSidechain)return e;let n=[...e.recent,t];return{messageCount:e.messageCount+ +!!iD(t),recent:n.length>20?n.slice(-20):n}}function gM(e){let t=null,n=null;for(let r of e){let e=r.type||r.message?.role||r.message?.type;if(iD(r))t=r.timestamp;else if(e===`assistant`&&t){let e=(r.timestamp.getTime()-t.getTime())/1e3;e>.1&&e<300&&(n=e)}}return n}var _M=class{fold=new pM(mM,hM);async getMetricsInfo(e,t){if(D(`Getting metrics from hook data for session: ${e}`),!t.cost)return Y;let n=await this.fold.read(e,t.transcript_path);return n.kind===`failed`?X(`metrics (${e}): ${n.reason}`):J({responseTime:t.cost.total_api_duration_ms/1e3,lastResponseTime:gM(n.value.recent),sessionDuration:t.cost.total_duration_ms/1e3,messageCount:n.value.messageCount,linesAdded:t.cost.total_lines_added,linesRemoved:t.cost.total_lines_removed})}};const vM={command:null,todos:[],pending:[],done:[]};function yM(e,t){let n=e.findIndex(e=>e.name===t);return n<0?[...e,{name:t,count:1}]:e.map((e,t)=>t===n?{name:e.name,count:e.count+1}:e)}function bM(e,t){if(t.isSidechain)return e;let n=iD(t)?{...e,command:t.activity?.command??null,pending:[],done:[]}:e,r=t.activity;if(r===void 0)return n;let i=n.pending,a=n.done;r.started!==void 0&&(i=[...i,...r.started]);for(let e of r.finished??[]){let t=i.findIndex(t=>t.id===e);t<0||(a=yM(a,i[t].name),i=[...i.slice(0,t),...i.slice(t+1)])}return{...n,pending:i,done:a,todos:r.todos??n.todos}}function xM(e){return{command:e.command,todos:e.todos,running:e.pending.reduce((e,t)=>yM(e,t.name),[]),done:e.done}}var SM=class{fold=new pM(vM,bM);async getActivityInfo(e,t){let n=await this.fold.read(e,t.transcript_path);return n.kind===`failed`?X(`activity (${e}): ${n.reason}`):J(xM(n.value))}};const CM=new Map;function wM(e){if(!e)return``;let t=e.indexOf(`,`);return t<0?e:e.slice(0,t)}var TM=class{async getSessionId(){if(!process.env.TMUX_PANE)return Y;let e=wM(process.env.TMUX),t=CM.get(e);if(t!==void 0)return t;D(`Getting tmux session ID, TMUX_PANE: ${process.env.TMUX_PANE}`);let n=await Te({bin:`tmux`,args:[`display-message`,`-p`,`#S`],timeoutMs:1e3,category:`tmux`}),r=n.ok?n.stdout.trim()?J(n.stdout.trim()):Y:X(`tmux display-message: ${n.reason}`);return CM.set(e,r),r}isInTmux(){return!!process.env.TMUX_PANE}},EM=class{written=new Map;constructor(e){this.dir=e}pathFor(e){return c.join(this.dir,`${encodeURIComponent(e)}.txt`)}sync(e,t){let n=this.pathFor(e);if(t===(this.written.get(e)??null))return null;try{return t===null?(r.rmSync(n,{force:!0}),this.written.delete(e)):(r.mkdirSync(this.dir,{recursive:!0,mode:448}),r.writeFileSync(n,t,{mode:384}),this.written.set(e,t)),null}catch(e){return`${n}: ${e.message}`}}reset(){this.written.clear();try{return r.rmSync(this.dir,{recursive:!0,force:!0}),null}catch(e){return`${this.dir}: ${e.message}`}}};const DM=new Jk;Ce(DM.launchStats);const OM=new tv({counters:DM,logger:Q}),kM=new lv({watchers:OM,logger:Q}),AM=new SD,jM=new Zk,MM=new zA(jM,Q),NM=new EM(We()),PM=new fM,FM=new _M,IM=new SM,LM=new TM,RM=new Kk({gitService:kM,sessionState:jM,watchers:OM},{observers:{onReload:e=>Q(`info`,`config loaded projectDir=${e.projectDir} cwd=${e.cwd} file=${e.configFilePath??`<bundled default>`} error=${e.lastError===null?`none`:JSON.stringify(e.lastError)} warning=${e.lastWarning===null?`none`:JSON.stringify(e.lastWarning)}`)}}),zM=60*1e3;function BM(){let e=import.meta.url,n=[];e.startsWith(`file://`)&&n.push(w(e)),t.argv[1]&&n.push(t.argv[1]);let i=new Map;for(let e of n)try{i.set(e,r.statSync(e).mtimeMs)}catch{}let a=null,o=()=>{for(let[e,t]of i)try{if(r.statSync(e).mtimeMs!==t){Q(`info`,`binary mtime changed (${e}); shutting down`),a&&clearInterval(a),nN(0);return}}catch(e){Q(`warn`,`bin stat failed: ${e.message}`)}};return{arm(){i.size!==0&&(a=setInterval(o,zM),a.unref())},checkNow:o}}const VM=BM(),HM=zE({entryUrl:import.meta.url,intervalMs:zM,releaseIntervalMs:216e5,registryUrl:t.env.CC_CANDYBAR_REGISTRY_URL??`https://registry.npmjs.org`,fetchImpl:fetch,onApplied:()=>VM.checkNow(),log:Q});let UM=null,WM=null,GM=0;function KM(){t.on(`uncaughtException`,e=>{Q(`error`,`uncaughtException: ${e.stack||e.message}`),nN(1)}),t.on(`unhandledRejection`,e=>{Q(`error`,`unhandledRejection: ${String(e)}`),nN(1)});for(let e of[`SIGINT`,`SIGTERM`,`SIGHUP`])t.on(e,()=>{Q(`info`,`received ${e}, shutting down`),nN(0)});try{GM=nC(t.env)}catch(e){Q(`error`,`refusing to boot: ${e.message}`),nN(1);return}UM=Kw(t.pid);let e=nT(iT(UM));if(!e.decision.allow){Q(`warn`,`fork-bomb breaker: ${e.decision.reason}; refusing to boot`),nN(1);return}WM=e.registryPath,r.mkdirSync(Me(),{recursive:!0}),Fe(Ne()),jM.useStorage(new eA(Re(),500,Q)),MM.useStorage(YA(ze(),Q)),Yw({anchor:Jw(t.env),isAlive:Xw,onOrphaned:e=>{Q(`info`,`parent watchdog: ${e}; shutting down`),nN(0)}}),qM(g.createServer({allowHalfOpen:!1},e=>{rN(e)}),Ne(),!1)}function qM(e,n,r){e.removeAllListeners(`error`),e.removeAllListeners(`listening`),e.once(`error`,i=>{if(i.code!==`EADDRINUSE`){Q(`error`,`server error: ${i.message}`),nN(1);return}if(r){Q(`info`,`lost rebind race; another daemon is alive — exiting`),t.exit(0);return}JM(e,n)}),e.listen(n,()=>YM(n))}function JM(e,n){let i=Iw(Lw(Ie(n)),(e,t)=>Gw(e,t,{readStartTime:Ww,pidAlive:Xw}));if(i.kind===`attach-and-exit`){Q(`info`,`EADDRINUSE: ${i.reason} — exiting`),t.exit(0);return}Q(`warn`,`EADDRINUSE: ${i.reason} — unlinking stale socket and rebinding`);try{r.unlinkSync(n)}catch(e){if(e.code!==`ENOENT`){Q(`error`,`cannot unlink stale socket ${n}: ${e.message}`),nN(1);return}}qM(e,n,!0)}function YM(e){let n=Bw(e);if(n.kind!==`present`){Q(`warn`,`no ownable socket at bind callback (${n.kind}); exiting`),nN(0);return}$M(e);try{r.chmodSync(e,384)}catch(e){Q(`warn`,`chmod socket failed: ${e.message}`)}Q(`info`,`daemon up: pid=${t.pid} v=3 sock=${e} heapCap=${Math.round(C.getHeapStatistics().heap_size_limit/1048576)}MB rssLimit=${Math.round(GM/1048576)}MB`),yC();let i=NM.reset();i!==null&&Q(`warn`,`diagnostic dump wipe failed: ${i}`),VM.arm(),HM.arm(),QM(),XM(e,n.identity)}function XM(e,n){Uw({bound:n,myPid:t.pid,readIdentity:()=>Bw(e),readLease:()=>Lw(Ie(e)),shutdown:e=>nN(e),log:Q}).arm()}let ZM=null;function QM(){ZM=oC(uC(DM.startedAt.getTime(),e=>nN(e),{rssLimitBytes:GM})),ZM.arm()}function $M(e){let n=Rw(Ie(e),{pid:t.pid,version:3,binPath:t.argv[1],startTime:UM});n!==null&&Q(`warn`,`lease write failed: ${n}`)}let eN=0,tN=!1;function nN(e){if(!tN){tN=!0,setTimeout(()=>t.kill(t.pid,`SIGKILL`),500);try{kM.close()}catch(e){Q(`warn`,`gitService close failed: ${e.message}`)}try{AM.close()}catch(e){Q(`warn`,`usageStore close failed: ${e.message}`)}try{OM.closeAll()}catch(e){Q(`warn`,`watcherRegistry close failed: ${e.message}`)}try{jM.flush()}catch(e){Q(`warn`,`sessionState flush failed: ${e.message}`)}zw(Le(),t.pid),WM!==null&&rT(WM,t.pid,eT,e=>r.unlinkSync(e)),t.exit(e)}}function rN(e){eN++,DM.inFlight=eN;let t=!1,n=(n,r)=>{if(t){r!==null&&Q(`warn`,`exit-after-flush dropped: an earlier responder settled this socket`);return}t=!0;let i=r===null?void 0:()=>nN(r);try{e.end(kS(n),i)}catch(e){Q(`warn`,`response write failed: ${e.message}`),i?.()}},r=setTimeout(()=>{DM.requestsTimedOut++,n({ok:!1,error:`request exceeded 200ms`,code:`TIMEOUT`,daemonV:3},null)},200),i=AS(e=>{aN(e).then(e=>n(e.resp,e.exitAfterFlush)).catch(e=>{Q(`error`,`handler threw: ${e?.stack||e}`),n({ok:!1,error:String(e?.message||e),code:`RENDER_FAILED`,daemonV:3},null)})},e=>{Q(`warn`,`frame parse failed: ${e.message}`),n({ok:!1,error:e.message,code:`BAD_REQUEST`,daemonV:3},null)});e.on(`data`,i),e.on(`error`,e=>{Q(`warn`,`socket error: ${e.message}`)}),e.on(`close`,()=>{clearTimeout(r),eN=Math.max(0,eN-1),DM.inFlight=eN})}const iN=e=>({resp:e,exitAfterFlush:null});async function aN(e){if(!e||typeof e!=`object`||typeof e.v!=`number`)return iN({ok:!1,error:`malformed request`,code:`BAD_REQUEST`,daemonV:3});if(e.v!==3)return e.v>3?Q(`info`,`version mismatch: client=${e.v} > daemon=3; binary likely upgraded — exiting after the response flushes`):Q(`info`,`version mismatch: client=${e.v} < daemon=3; client is stale — staying up`),{resp:{ok:!1,error:`protocol v${e.v} not supported (daemon at v3)`,code:`VERSION_MISMATCH`,daemonV:3},exitAfterFlush:e.v>3?0:null};if(e.kind===`shutdown`)return{resp:{ok:!0,output:``},exitAfterFlush:0};if(e.kind===`stats`)return iN({ok:!0,stats:DM.snapshot({gitCache:kM.getStats(),usageCache:AM.getStats(),renderCacheSize:RM.size,watchersActive:OM.size(),nextRestartReason:ZM?.describeNextRestart()??null})});if(e.kind===`render`){DM.requestsTotal++;let t=Date.now();try{let{report:n}=Xj(e.hookData);for(let e of n.unknownTopLevelFields)Q(`info`,`schema: unknown field '${e}' — Anthropic may have added it`);let r=[];for(let e of n.missingRequired)r.push(`missing required field '${e}'`);for(let{path:e,expected:t,got:i}of n.typeMismatches)r.push(`field '${e}' expected ${t}, got ${i}`);if(e.cwd===``&&r.push(`request 'cwd' is empty`),r.length>0)return DM.requestsErrored++,Q(`warn`,`BAD_REQUEST: ${r.join(`; `)}`),iN({ok:!1,error:`malformed hookData: ${r.join(`; `)}`,code:`BAD_REQUEST`,daemonV:3});let i=e.hookData.workspace.project_dir,{configFile:a,unknownFlagsError:o}=oN(e.args),s=e.hookData.session_id,c=SS(e),l=JSON.stringify(c);jM.get(s,`client-hints`)!==l&&jM.set(s,Lj,l);let u=jM.get(s,`config-override`)??a??c.configEnv,d=RM.getOrCreate(i,e.cwd,u),f=Cj({projectDir:i,cwd:e.cwd,configFile:u??null});jM.get(s,`render-origin`)!==f&&jM.set(s,Sj,f);let p=c.termCols,m=dM(p??120),h=xT(c.termRows),g={...cN,width:m},{authoredRoots:_}=d.state,v=t=>jM.get(e.hookData.session_id,t),y=OD(d.state.config,v,e=>_.has(e)),b=await UD(e.hookData,fN,e.cwd,d.state.neededInputPaths(y.preset),y,c,ej(d.state.config,v).length),x=[];g.style=y.style,g.separator=y.separator,g.wrap=y.autoWrap,g.padding=y.padding,g.charset=y.charset,g.colorCompatibility=y.colorCompatibility;let S=Mk(d.state.config,d.state.compiled,d.state.store,d.state.registry,b,g,{perSegmentSink:d.state.lastRenderCellsBySegment,onRenderWarning:e=>x.push(e)},{theme:y.theme,look:y.look,preset:y.preset,progression:y.progression}),C=jM.get(e.hookData.session_id,`click.error`);C&&jM.clear(e.hookData.session_id,`click.error`);let ee=[o,d.lastError,C].filter(Boolean).join(`
185
- `),te=HM.notice({sessionId:s,dismissed:jM.get(s,TE),enabled:y.updateNotice}),w=d.lastError===null?null:d.configFilePath,ne=ET(ee,te,[d.lastWarning??``,...x].filter(Boolean).join(`
186
- `)),re=NM.sync(s,ne===null?null:OT(ne));re!==null&&Q(`warn`,`diagnostic dump failed: ${re}`);let ie=kT(S,ne,{fullText:re===null?{kind:`file`,path:NM.pathFor(s)}:{kind:`unavailable`,reason:re},failedConfigFile:w},{width:m,rowCap:h,colorCompatibility:y.colorCompatibility}),T=Date.now()-t,E=kM.getStats(),ae=AM.getStats();return Q(`info`,`render sid=${e.hookData.session_id??`?`} took=${T}ms termCols=${p??`?`} termRows=${c.termRows??`?`} width=${m} git=${E.size}/${E.hits}h/${E.misses}m usage=${ae.size}/${ae.hits}h/${ae.misses}m err=${ee?`Y`:`N`} upd=${te.length} warn=${d.lastWarning?`Y`:`N`}`),iN({ok:!0,output:ie+`
187
- `})}catch(e){throw DM.requestsErrored++,e}}if(e.kind===`click`)return iN(await pN(e.verb,e.value));if(e.kind===`debug`){if(!uM(e.what))return iN({ok:!1,error:`unknown debug 'what': ${String(e.what)} (have: ${lM.join(`, `)})`,code:`BAD_REQUEST`,daemonV:3});let t=RM.firstState(),n=t===null?null:{store:t.store,registry:t.registry,config:t.config,compiled:t.compiled,lastRenderBySegment:e.what===`segments`?dN(t.lastRenderCellsBySegment,t.config.globals.charset??`unicode`,t.config.globals.colorCompatibility??`truecolor`):uN};return iN({ok:!0,debug:$j(e.what,n)})}return iN({ok:!1,error:`unknown kind`,code:`BAD_REQUEST`,daemonV:3})}function oN(e){let{values:t,tokens:n}=re({args:e.slice(1),options:{config:{type:`string`}},strict:!1,tokens:!0,allowPositionals:!0}),r=[...new Set((n??[]).filter(e=>e.kind===`option`&&e.name!==`config`).map(e=>`--${e.name}`))];return{configFile:CS(t.config),unknownFlagsError:r.length>0?`Unknown flags: ${r.join(`, `)}`:null}}const sN={sessionState:jM,dlog:Q,applyUpdate:()=>HM.act(),doctor:nj(),history:MM,configFor:e=>RM.getOrCreate(e.projectDir,e.cwd,e.configFile??void 0).state.config,reloadConfig:e=>RM.reload(e.projectDir,e.cwd,e.configFile??void 0)},cN={style:`powerline`,colorCompatibility:Ba,wrap:!0,padding:1,charset:Ia},lN={...cN,width:1/0},uN=new Map;function dN(e,t,n){let r=new Map;for(let[i,a]of e)r.set(i,bT(a,{...lN,charset:t,colorCompatibility:n}));return r}const fN={gitProvider:kM,usageStore:AM,contextProvider:PM,metricsProvider:FM,activityProvider:IM,tmuxService:LM,log:Q,clock:()=>new Date,history:e=>MM.depth(e)};function pN(e,t){let n=qj.get(e);if(!n)return{ok:!1,error:`unknown click verb: ${e}`,code:`BAD_REQUEST`,daemonV:3};try{return n(t,sN),{ok:!0,output:``}}catch(e){let t=e instanceof $?`BAD_REQUEST`:`RENDER_FAILED`;return{ok:!1,error:String(e instanceof Error?e.message:e),code:t,daemonV:3}}}const mN={connectMs:200,budgetMs:500};async function hN(e){let n=e.includes(`--json`),r=await gN();if(r.kind!==`ok`&&(t.stderr.write(`daemon-stats: ${RS(r)}\n`),t.exit(1)),n){t.stdout.write(JSON.stringify(r.value,null,2)+`
188
- `);return}t.stdout.write(bN(r.value))}function gN(){return MS({kind:`stats`},mN,e=>`stats`in e?e.stats:void 0)}function _N(e){return e<1024?`${e}B`:e<1024*1024?`${(e/1024).toFixed(1)}KB`:`${(e/1024/1024).toFixed(1)}MB`}function vN(e,t){let n=e+t;return n===0?`n/a`:`${(e/n*100).toFixed(1)}%`}function yN(e){return e<60?`${e}s`:e<3600?`${Math.floor(e/60)}m${e%60}s`:`${Math.floor(e/3600)}h${Math.floor(e%3600/60)}m`}function bN(e){let t=[];t.push(`cc-candybar daemon stats`),t.push(``),t.push(`process`),t.push(` pid ${e.pid}`),t.push(` version ${e.version}`),t.push(` protocol ${e.protocolVersion}`),t.push(` startedAt ${e.startedAt}`),t.push(` uptime ${yN(e.uptimeSec)}`),t.push(` rss ${_N(e.rssBytes)}`),t.push(` heapUsed ${_N(e.heapUsedBytes)}`),t.push(` heapTotal ${_N(e.heapTotalBytes)}`),t.push(` external ${_N(e.externalBytes)}`),t.push(` arrayBuffers ${_N(e.arrayBuffersBytes)}`),t.push(``),t.push(`requests`),t.push(` total ${e.requests.total}`),t.push(` errored ${e.requests.errored}`),t.push(` timedOut ${e.requests.timedOut}`),t.push(` inFlight ${e.requests.inFlight}`),t.push(``),t.push(`gitCache`),t.push(` size ${e.gitCache.size}`),t.push(` hit rate ${vN(e.gitCache.hits,e.gitCache.misses)} (${e.gitCache.hits} / ${e.gitCache.hits+e.gitCache.misses})`),t.push(` invalidations ${e.gitCache.invalidations}`),t.push(``),t.push(`usageCache`),t.push(` size ${e.usageCache.size}`),t.push(` hit rate ${vN(e.usageCache.hits,e.usageCache.misses)} (${e.usageCache.hits} / ${e.usageCache.hits+e.usageCache.misses})`),t.push(` sweeps ${e.usageCache.sweeps}`),t.push(``),t.push(`renderCache`),t.push(` size ${e.renderCache.size}`),t.push(`watchers`),t.push(` active ${e.watchers.active}`),t.push(` opened ${e.watchers.opened}`),t.push(` closed ${e.watchers.closed}`),t.push(` evicted ${e.watchers.evicted}`),t.push(``),t.push(`subprocesses`),t.push(` total ${e.subprocesses.total}`),t.push(` inFlight ${e.subprocesses.inFlight}`),t.push(` lastMinute ${e.subprocesses.lastMinute}`);let n=Object.entries(e.subprocesses.byCategory),r=n.reduce((e,[t])=>Math.max(e,t.length),13);for(let[i,a]of n){let n=e.subprocesses.p50DurationMs[i],o=e.subprocesses.p99DurationMs[i],s=n!==void 0&&o!==void 0?` (p50 ${n}ms · p99 ${o}ms)`:``;t.push(` ${i.padEnd(r)} ${a}${s}`)}return e.nextRestartReason&&(t.push(``),t.push(`nextRestart ${e.nextRestartReason}`)),t.join(`
183
+ `);n.push(e[0]);for(let r=1;r<e.length;r++)t.push(n),n=[e[r]]}return t.push(n),t}const Nk=({text:e,trail:t})=>t===void 0?[e]:[e,t];function Pk(e,t){switch(e){case`vertical`:return Ik(t.flatMap(e=>e));case`horizontal`:{let e=t.find(e=>e[0]?.span===`row`);return e===void 0?t.reduce((e,t)=>Math.max(e,t.length),0)===0?[]:[{cells:t.flatMap(e=>e[0]?.cells??[]),band:`own`,span:`shared`},...t.flatMap(e=>e.slice(1))]:Ik(e)}}}function Fk(e,t){let n=(e,r)=>t(e)?e.kind===`segment`?[{cells:[{name:e.name,address:r}],band:`own`,span:`shared`}]:Pk(e.direction,e.children.map((t,i)=>n(t,[...r,Lk(e,i)]))):[];return n(e,[]).map(e=>[...e.cells])}function Ik(e){return e.map(e=>e.span===`row`?{...e,span:`shared`}:e)}function Lk(e,t){return{index:t,count:e.children.length,distribution:e.distribution,axis:Xo[e.direction]}}const Rk={compile(e,t){return{kind:`container`,direction:e.direction,when:t.when,distribution:Li(e.distribution),children:e.children.map((e,n)=>t.compileChild(e,$o(t.path,n)))}},render(e,t){return Pk(e.direction,e.children.map((n,r)=>t.renderChild(n,t.visible,Lk(e,r))))}},zk={compile(e,t){return{kind:`segment`,when:t.when,name:e.name,...e.opens!==void 0&&{opens:{open:t.parse(ic(e.opens.ref),`opens`),body:t.compileChild(e.opens.body,es(t.path)),key:e.opens.ref.key,placement:e.opens.placement}},...e.trail!==void 0&&{trail:t.parse(e.trail,`trail`)}}},render(e,t){let n=t.lookupSegment(e.name);if(!n)throw Error(`Layout segment "${e.name}" has no matching segment`);let{seg:r,compiled:i}=n;if(!t.visible)return[];try{if(!xO(i.when,t.scope))return[];let n=i.palette??t.palette,{styles:a,fragments:o,trail:s,drops:c}=t.evaluateSegment(e.name,n,t.region,{bg:i.bg,fg:i.fg,body:i.template,trail:e.trail}),l=e.opens!==void 0&&xO(e.opens.open,t.scope),u=c.length>0||l?a.trigger:a.closed,d={width:r.width??`auto`,justify:r.justify??`left`,truncate:r.truncate??`right`,baseStyle:u,padding:t.padding},f=e.opens===void 0?[]:t.renderBody(e.opens.body,l,a.disclosure),p=f.slice(0,+(e.opens?.placement===`inline`)),m=f.slice(p.length),h=e.opens!==void 0&&m.some(e=>e.band===`own`)?TO(kO([t.closeDisclosure(e.opens.key)],a.trigger),{...d,width:`auto`,baseStyle:a.trigger}):[],g=e=>e.band===`own`?h:[],_=m.map(e=>({cells:[...g(e),...e.cells],band:`deeper`,span:`shared`})),v=Mk(kO(o,u)).map((e,t)=>({cells:TO(e,{...d,trail:t===0?kO(s,u):[]}),band:`own`,span:`shared`})),y=c.map(e=>({cells:TO(kO([e],a.band),{...d,baseStyle:a.band}),band:`deeper`,span:`shared`})),b=[...v,...y];return t.perSegmentSink!==void 0&&t.perSegmentSink.set(e.name,[...b.flatMap(e=>e.cells),...m.flatMap(g)].flatMap(Nk)),[...b.map((e,t)=>t===0&&p.length>0?{cells:[...e.cells,...p.flatMap(e=>e.cells)],band:`own`,span:`row`}:e),..._]}catch(n){let r=n.message??String(n);t.onSegmentError?.(e.name,r);let i=r.replace(/\s*\n\s*/g,` `);return[{cells:TO([new H(`⚠ ${e.name}: ${i}`,{end:``})],{width:`auto`,justify:`left`,truncate:`right`,padding:0,trail:Bk(e,t)}),band:`own`,span:`shared`}]}}};function Bk(e,t){if(e.trail===void 0)return[];try{return t.evaluateSegment(e.name,t.palette,t.region,{bg:void 0,fg:void 0,body:e.trail,trail:void 0}).fragments}catch(n){return t.onSegmentError?.(e.name,n.message??String(n)),[]}}const Vk={container:Rk,segment:zk};function Hk(e){return Vk[e]}function Uk(e){if(`ttl`in e)return{kind:`ttl`,durationMs:yv(e.ttl)};if(`watch_file`in e)return{kind:`watch_file`,path:e.watch_file};if(`depends_on`in e)return{kind:`depends_on`,varNames:e.depends_on};if(`key`in e)return{kind:`key`,template:e.key};if(`never`in e)return{kind:`never`};throw Error(`Unknown CacheDecl discriminator — loader invariant violated: ${JSON.stringify(e)}`)}function Wk(e,t){switch(rs(e)){case`json`:return{kind:`json`,default:t};case`regex`:return{kind:`regex`,regex:new RegExp(e.regex),default:t};case`text`:return{kind:`text`,default:t}}}function Gk(e,t,n,r){switch(n.kind){case`literal`:e.declareLiteral(t,n.value);break;case`input`:e.declareInput(t,n.path,n.type??`string`,n.default);break;case`env`:e.declareEnv(t,n.name,n.default);break;case`file`:e.declareFile(t,n.path,{readMode:n.readMode,cache:Uk(n.cache),parse:Wk(n.parse,n.default)});break;case`shell`:e.declareShell(t,n.command,{cache:Uk(n.cache),parse:Wk(n.parse,n.default)});break;case`template`:e.declareTemplate(t,n.template,{varDefault:n.default});break;case`time`:e.declareTime(t,{format:n.layout,ttlMs:n.cache?yv(n.cache.ttl):void 0,varDefault:n.default});break;case`git`:e.declareGit(t,{field:n.field,cwd:r,varDefault:n.default});break;case`state`:e.declareState(t,{key:n.key,...n.default!==void 0&&{varDefault:n.default}});break}}function Kk(e,t){let n=Au.EMPTY;for(let[r,i]of Object.entries(t))try{n=e.parse(`{{ define "${r}" }}${i}{{ end }}`,n).defines()}catch(e){throw Error(`Template parse error in helpers.${r}: ${e.message}`,{cause:e})}return n}const qk=e=>Ka(void 0,null,e.globals.progression);function Jk(e,t,n){let r=n?.cwd??process.cwd(),i=$x(e.globals.palette),a={store:t.variableStore,compiled:new Map,chromeCols:FT({style:`powerline`,charset:Ia}),width:80,basePalette:i,palette:i,progression:ki[qk(e)],padding:1,seamCols:IT({style:`powerline`,charset:Ia}),layout:()=>[]},o=ek(t.drawnAt),s={action:a,activeSegment:o},c=Object.keys(e.looks),l=Yv(e.presets),u=new Map([...nS(e),...Cy(e)]),d=A_({...JO(a),...dk(a,o),...mk(a,o),...vk(a,o),...Ck(a,o),...Dk(s),...Ak(o),looks:{fn:()=>c,argTypes:[]},presets:{fn:()=>l,argTypes:[]}},n?.clock,t.drawnAt),f=Kk(d,e.helpers),p=e=>d.parse(e,f),m=new Map,h=e=>{let t=m.get(e);if(t!==void 0)return t;let n=p(e);return m.set(e,n),n},g=new Map;for(let[t,n]of Vv)n in e.variables&&g.set(t,n);for(let[t,n]of Object.entries(e.variables))n.kind===`state`&&!g.has(n.key)&&g.set(n.key,t);for(let[t,n]of Object.entries(e.segments))if(n.vars)for(let[e,r]of Object.entries(n.vars))r.kind===`state`&&!g.has(r.key)&&g.set(r.key,`${t}.${e}`);a.compiled=LO(p,e.actions,g,u);let _=[];for(let[n,i]of Object.entries(e.variables))try{Gk(t,n,i,r)}catch(e){_.push(`Variable "${n}": ${e.message??String(e)}`)}for(let[n,i]of Object.entries(e.segments))if(i.vars)for(let[e,a]of Object.entries(i.vars))try{Gk(t,`${n}.${e}`,a,r)}catch(t){_.push(`Variable "${n}.${e}": ${t.message??String(t)}`)}let v=Object.create(null);for(let[t,n]of Object.entries(e.segments)){let e=(e,n,r=p)=>{try{return r(e)}catch(e){throw Error(`Template parse error in segments.${t}.${n}: ${e.message}`,{cause:e})}};v[t]={when:n.when===void 0?void 0:e(n.when,`when`,h),template:e(n.template,`template`),bg:n.bg===void 0?void 0:e(n.bg,`bg`),fg:n.fg===void 0?void 0:e(n.fg,`fg`),palette:n.palette===void 0?void 0:Kx(n.palette)}}let y=(e,t,n)=>{try{return h(e)}catch(e){throw Error(`Template parse error in ${t}.${n}: ${e.message}`,{cause:e})}},b=(e,t)=>{let n={path:t,when:e.when===void 0?void 0:y(e.when,t,`when`),parse:(e,n)=>y(e,t,n),compileChild:b};return Hk(e.kind).compile(e,n)},x=new Map;for(let t of l){let{node:n,path:r}=Qv(e,t);x.set(t,b(n,r))}let S=new Map;for(let t of wa){let n=e.globals[t];Ta(n)&&S.set(t,Yk(p,t,n))}return{segments:v,roots:x,activeSegment:o,menuRuntime:s,globalExpressions:S,loadWarnings:_}}function Yk(e,t,n){try{return e(n)}catch(e){throw Error(`globals.${t} is not a valid template: ${e instanceof Error?e.message:String(e)}`)}}function Xk(e,t,n){let r=e.globalExpressions.get(t);if(r===void 0)throw Error(`globals.${t} is an expression but no compiled template exists — registerDslConfig and the resolution disagree about isExpression`);return r.evaluate(n).map(e=>e.plain).join(``)}function Zk(e,t){return e.kind===`decided`?e.name:t}function Qk(e,t,n,r,i,a,o,s){let{perSegmentSink:c,onSegmentError:l,onRenderWarning:u}=o??{};r.drawAt(Ua(a.colorCompatibility));let{preset:d=qv}=s??{},f=ki[s?.progression??qk(e)];t.menuRuntime.action.progression=f;let p=s?.look??Aa(`none`,e.looks),m=s?.theme??Zx(void 0,null,e.globals.palette),h=(e,t)=>({...i,term:{cols:a.width},theme:{effective:e},look:{effective:t}});r.applyInput(h(Zk(m,ya),Zk(p,Oa))),t.menuRuntime.action.chromeCols=FT(a),t.menuRuntime.action.padding=a.padding,t.menuRuntime.action.width=a.width,t.menuRuntime.action.seamCols=IT(a);let g=j_(n),_=Da(m,()=>Xk(t,`palette`,g),e=>Xx(e,e=>u?.(e))),v=Da(p,()=>Xk(t,`look`,g),t=>Aa(t,e.looks));(_!==m||v!==p)&&r.applyInput(h(_.name,v.name));let y=_.value;t.menuRuntime.action.basePalette=y;let b=Jx(y,v.value);t.menuRuntime.action.palette=b,c?.clear();let x=n=>{let r=e.segments[n],i=t.segments[n];return r!==void 0&&i!==void 0?{seg:r,compiled:i}:void 0},S=(e,n,i,a)=>{try{let o=r.drawnAt(),{tint:s,disclosure:c}=ga(n,i,o),l=tk(t.activeSegment,e,n,c,s),u=PO(l,o,a.bg,a.fg,g),d=a.body.evaluate(g),f=a.trail?.evaluate(g)??[];return{styles:{closed:u,get trigger(){return XO(n,aa(n,c,o).state,o)},get band(){return XO(n,aa(n,c,o).plane,o)},disclosure:c},fragments:d,trail:f,drops:l.drops}}finally{t.activeSegment.current=null}},C=(e,t,r)=>{let i=t&&xO(e.when,g),o={scope:g,palette:b,visible:i,padding:a.padding,region:r,perSegmentSink:c,onSegmentError:l,evaluateSegment:S,lookupSegment:x,renderChild:(e,t,n)=>C(e,t,ma(r,n)),renderBody:(e,t,n)=>C(e,i&&t,ha(n)),closeDisclosure:e=>YO(n,e)};return Hk(e.kind).render(e,o)},ee=t.roots.get(d);if(ee===void 0)throw Error(`Preset "${d}" has no compiled layout — registerDslConfig compiles one per declared preset and effectivePresetName collapses unknown names to "${qv}"; a miss here is merge/policy drift (have: ${[...t.roots.keys()].join(`, `)})`);let te=e=>{if(!xO(e.when,g))return!1;if(e.kind===`container`)return!0;if(Dy(e.name)===void 0)return!1;try{return xO(t.segments[e.name].when,g)}catch{return!0}};return t.menuRuntime.action.layout=()=>Fk(ee,te).map(e=>e.flatMap(e=>{let n=Dy(e.name);return n===void 0?[]:[{...e,name:n,palette:t.segments[n].palette??b}]})),C(ee,!0,pa(f)).map(e=>LT(OO(e.cells,a),a)).join(`
184
+ `)}var $k=class{kind=`box`;cell;lastChangedAt;constructor(e,t,n){this.name=e,this.type=t,aA(e,t,n,`initial value`),this.cell=Lg.observable.box(n,{deep:!1}),this.lastChangedAt=Date.now()}read(){return this.cell.get()}set(e){aA(this.name,this.type,e,`set value`),!Object.is(this.cell.get(),e)&&(this.cell.set(e),this.lastChangedAt=Date.now())}lastUpdatedMs(){return this.lastChangedAt}},eA=class{kind=`computed`;cell;constructor(e,t,n){this.name=e,this.type=t,this.cell=(0,Lg.computed)(()=>{let e=n();return aA(this.name,this.type,e,`computed result`),e},{keepAlive:!0})}read(){return this.cell.get()}lastUpdatedMs(){return null}},tA=class{kind=`document`;cell;lastChangedAt;constructor(e,t){this.name=e,this.cell=Lg.observable.box(iA(t),{deep:!1}),this.lastChangedAt=Date.now()}read(){return this.cell.get()}set(e){let t=iA(e);rA(this.cell.get(),t)||(this.cell.set(t),this.lastChangedAt=Date.now())}lastUpdatedMs(){return this.lastChangedAt}};function nA(e){return JSON.stringify(e)}function rA(e,t){return nA(e)===nA(t)}function iA(e){return e.kind===`ok`?{kind:`ok`,value:Rg(e.value)}:e}function aA(e,t,n,r){let i=zg(n);if(i!==t)throw TypeError(`Variable "${e}": ${r} type ${i} does not match declared type ${t}`)}var oA=class{nodes=new Map;defineBox(e,t,n){this.assertNotDefined(e),this.nodes.set(e,new $k(e,t,n))}defineDocument(e,t){this.assertNotDefined(e),this.nodes.set(e,new tA(e,t))}defineComputed(e,t,n){this.assertNotDefined(e);let r=e=>this.read(e);this.nodes.set(e,new eA(e,t,()=>n(r)))}read(e){return this.requireVar(e).read()}readDocument(e){let t=this.requireNode(e);if(t.kind!==`document`)throw TypeError(`Variable "${e}" is a ${t.kind}, not a document`);return t.read()}setDocument(e,t){let n=this.requireNode(e);if(n.kind!==`document`)throw TypeError(`Variable "${e}" is a ${n.kind}, not a document (use defineDocument to create one)`);(0,Lg.runInAction)(()=>n.set(t))}setBox(e,t){let n=this.requireNode(e);if(n.kind!==`box`)throw TypeError(`Variable "${e}" is a ${n.kind}, not a box (use defineBox to create a settable variable)`);(0,Lg.runInAction)(()=>n.set(t))}runInAction(e){(0,Lg.runInAction)(e)}has(e){return this.nodes.has(e)}getType(e){return this.requireVar(e).type}getKind(e){return this.requireNode(e).kind}changeKey(e){let t=this.requireNode(e);if(t.kind===`document`)return nA(t.read());try{return String(t.read())}catch(e){return`failed:${e instanceof Error?e.message:String(e)}`}}getNode(e){let t=this.requireNode(e);return t.kind===`document`?{name:t.name,kind:t.kind,read:()=>t.read(),lastUpdatedMs:()=>t.lastUpdatedMs()}:{name:t.name,type:t.type,kind:t.kind,read:()=>t.read(),lastUpdatedMs:()=>t.lastUpdatedMs()}}names(){return[...this.nodes.keys()]}requireNode(e){let t=this.nodes.get(e);if(!t)throw ReferenceError(`Unknown variable "${e}"`);return t}requireVar(e){let t=this.requireNode(e);if(t.kind===`document`)throw TypeError(`Variable "${e}" is a document; read its fields by path (.${e}.<field>)`);return t}assertNotDefined(e){if(this.nodes.has(e))throw Error(`Variable "${e}" is already declared`)}};function sA(e,t,n){return e+`\0`+t+`\0`+(n??``)}function cA(e,t){return new Set(Yv(e.presets).filter(n=>Qv(e,n).path===`root`?t.root!==void 0:t.presets?.[n]?.root!==void 0))}function lA(e){let t=c.basename(e),n=c.dirname(e);for(;!r.existsSync(n);)t=c.basename(n),n=c.dirname(n);return{dir:n,name:t}}function uA(e,t){let n=new Map;for(let t of yS(e.projectDir,e.cwd,e.configFile)){let{dir:e,name:r}=lA(t);n.has(e)||n.set(e,new Set),n.get(e).add(r)}return{files:t===null?[]:[t],dirs:[...n.entries()].sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>({path:e,filenames:[...t].sort()}))}}function dA(e){return e.filter(Boolean).join(`
185
+ `)||null}var fA=class{entries=new Map;deps;maxEntries;observers;constructor(e,t={}){this.deps=e,this.maxEntries=t.maxEntries??256,this.observers=t.observers??{}}getOrCreate(e,t,n){let r=sA(e,t,n),i=this.entries.get(r);if(i)return this.entries.delete(r),this.entries.set(r,i),i;let a=this.loadFromDisk(e,t,n),o={projectDir:e,cwd:t,configFile:n,configFilePath:null,lastError:a.error,lastWarning:a.warning,state:a.state??this.buildState(t,null,[]),watcher:null,watcherKey:null};if(this.entries.set(r,o),this.entries.size>this.maxEntries){let e=this.entries.entries().next().value;if(e!==void 0){let[t,n]=e;n.state.registry.dispose(),n.state.validatorDisposers.forEach(e=>e()),n.watcher?.release(),this.entries.delete(t)}}return this.refreshWatcher(o,a.resolvedPath),this.observers.onReload?.(o),o}reload(e,t,n){this.reloadInto(this.getOrCreate(e,t,n))}reloadInto(e){let t=this.loadFromDisk(e.projectDir,e.cwd,e.configFile);e.lastWarning=t.warning,e.lastError=t.error,t.state!==null&&(e.state.registry.dispose(),e.state.validatorDisposers.forEach(e=>e()),e.state=t.state),this.refreshWatcher(e,t.resolvedPath),this.observers.onReload?.(e)}loadFromDisk(e,t,n){let r=xS(e,t,n),i=r.kind===`file`?r.path:null,a=[TS(e,t),CS(r)],o;try{o=this.buildState(t,i,a)}catch(e){return e instanceof Wo&&a.push(...e.warnings),{resolvedPath:i,warning:dA(a),state:null,error:e instanceof Wo||e instanceof Error?e.message:String(e)}}return{resolvedPath:i,warning:dA(a),state:o,error:null}}buildState(e,t,n){let r=ES(t,YD),{config:i,raw:a}=r;n.push(...r.warnings);let o=kS(r,t??`<default>`),s=new oA,c=new Iv(s,o.globals.default_empty_value??``,this.deps.gitService,this.deps.sessionState),l,u=[];try{l=Jk(o,c,{cwd:e}),n.push(...l.loadWarnings);for(let{key:e,spec:t}of VE(o))u.push(PE(e,t));for(let{key:e,spec:t}of CE(o))u.push(wE(e,t))}catch(e){for(let e of u)e();throw c.dispose(),e}return{config:o,store:s,registry:c,compiled:l,neededInputPaths:dO(o),lastRenderCellsBySegment:new Map,validatorDisposers:u,authoredRoots:cA(i,a)}}refreshWatcher(e,t){e.configFilePath=t;let n=uA(e,t),r=`config:${e.projectDir}:${e.cwd}:${e.configFile??``}:${JSON.stringify(n)}`;e.watcher!==null&&e.watcherKey===r||(e.watcher?.release(),e.watcherKey=r,e.watcher=this.deps.watchers.acquire(r,n,()=>this.onConfigChanged(e)))}onConfigChanged(e){Q(`info`,`config change detected for entry projectDir=${e.projectDir} cwd=${e.cwd}`),this.reloadInto(e)}get size(){return this.entries.size}firstState(){return this.entries.values().next().value?.state??null}};const pA=16384;var mA=class{startedAt=new Date;requestsTotal=0;requestsErrored=0;requestsTimedOut=0;inFlight=0;watchersOpened=0;watchersClosed=0;watchersEvicted=0;subprocessTotal=0;subprocessInFlight=0;subprocessCount=new Map;subprocessHistogram=new Map;subprocessHistogramRotator=new Map;rollingTimestamps=[];rollingHead=0;launchStats={onStart:e=>{this.subprocessTotal++,this.subprocessInFlight++,this.subprocessCount.set(e,(this.subprocessCount.get(e)??0)+1),this.recordRollingNow()},onEnd:(e,t)=>{this.subprocessInFlight=Math.max(0,this.subprocessInFlight-1),this.recordDuration(e,t)}};recordRollingNow(){let e=Date.now();if(this.rollingTimestamps.length<pA){this.rollingTimestamps.push(e);return}this.rollingTimestamps[this.rollingHead]=e,this.rollingHead=(this.rollingHead+1)%pA}recordDuration(e,t){let n=this.subprocessHistogram.get(e);if(n||(n=[],this.subprocessHistogram.set(e,n)),n.length<16){n.push(t);return}let r=(this.subprocessHistogramRotator.get(e)??0)%16;n[r]=t,this.subprocessHistogramRotator.set(e,r+1)}snapshotSubprocesses(){let e=Date.now()-6e4,t=0;for(let n of this.rollingTimestamps)n>=e&&t++;let n={};for(let[e,t]of this.subprocessCount)t>0&&(n[e]=t);let r={},i={};for(let[e,t]of this.subprocessHistogram){if(t.length===0)continue;let n=[...t].sort((e,t)=>e-t),a=Math.floor(n.length*.5),o=Math.min(n.length-1,Math.floor(n.length*.99)),s=n[a],c=n[o];s!==void 0&&(r[e]=s),c!==void 0&&(i[e]=c)}return{total:this.subprocessTotal,inFlight:this.subprocessInFlight,lastMinute:t,byCategory:n,p50DurationMs:r,p99DurationMs:i}}snapshot(e){let t=process.memoryUsage();return{pid:process.pid,version:vw,protocolVersion:3,startedAt:this.startedAt.toISOString(),uptimeSec:Math.floor((Date.now()-this.startedAt.getTime())/1e3),rssBytes:t.rss,heapUsedBytes:t.heapUsed,heapTotalBytes:t.heapTotal,externalBytes:t.external,arrayBuffersBytes:t.arrayBuffers,requests:{total:this.requestsTotal,errored:this.requestsErrored,timedOut:this.requestsTimedOut,inFlight:this.inFlight},gitCache:e.gitCache,usageCache:e.usageCache,renderCache:{size:e.renderCacheSize},watchers:{active:e.watchersActive,opened:this.watchersOpened,closed:this.watchersClosed,evicted:this.watchersEvicted},subprocesses:this.snapshotSubprocesses(),nextRestartReason:e.nextRestartReason??null}}};const hA={load:()=>({}),save:()=>{},flush:()=>{}};function gA(e){let t=new Map;for(let[n,r]of Object.entries(e))t.set(n,new Map(Object.entries(r)));return t}var _A=class{sessions;storage;atom=(0,Lg.createAtom)(`SessionState`);constructor(e=hA,t=256){this.maxSessions=t,this.storage=e,this.sessions=new Map,this.hydrateFromStorage()}useStorage(e){this.storage=e,this.hydrateFromStorage()}hydrateFromStorage(){this.sessions=gA(this.storage.load()),this.evictOldest(),this.persist()}get(e,t){this.atom.reportObserved();let n=this.sessions.get(e);return n?(this.touch(e,n),n.get(t)??null):null}set(e,t,n){this.setBatch(e,[{key:t,value:n}])}setBatch(e,t){t.length!==0&&(0,Lg.runInAction)(()=>{let n=this.sessions.get(e)??new Map;for(let{key:e,value:r}of t)n.set(e,r);this.touch(e,n),this.evictOldest(),this.persist(),this.atom.reportChanged()})}clear(e,t){(0,Lg.runInAction)(()=>{let n=this.sessions.get(e);n&&(n.delete(t),n.size===0?this.sessions.delete(e):this.touch(e,n)),this.persist(),this.atom.reportChanged()})}prune(e){(0,Lg.runInAction)(()=>{for(let t of this.sessions.keys())e.has(t)||this.sessions.delete(t);this.persist(),this.atom.reportChanged()})}touch(e,t){this.sessions.delete(e),this.sessions.set(e,t)}evictOldest(){let e=this.sessions.size-this.maxSessions;if(!(e<=0)){for(let t of this.sessions.keys())if(this.sessions.delete(t),--e===0)break}}flush(){this.storage.flush()}persist(){this.storage.save(this.serialize())}serialize(){let e=Object.create(null);for(let[t,n]of this.sessions)e[t]=Object.fromEntries(n);return e}};const vA=(e,t)=>D(t);function yA(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;for(let t of Object.values(e)){if(typeof t!=`object`||!t||Array.isArray(t))return!1;for(let e of Object.values(t))if(typeof e!=`string`)return!1}return!0}var bA=class{timer=null;pending=null;constructor(e,t=500,n=vA){this.filePath=e,this.debounceMs=t,this.logger=n}load(){let e;try{e=r.readFileSync(this.filePath,`utf8`)}catch(e){let t=e.code;return t!==`ENOENT`&&this.logger(`warn`,`session-state read failed (${t}); starting empty`),{}}try{let t=JSON.parse(e);return yA(t)?t:(this.logger(`warn`,`session-state load: unexpected shape, starting empty`),{})}catch{return this.logger(`warn`,`session-state load: corrupt JSON, starting empty`),{}}}save(e){this.pending=e,!this.timer&&(this.timer=setTimeout(()=>this.flush(),this.debounceMs),this.timer.unref())}flush(){if(this.timer&&=(clearTimeout(this.timer),null),this.pending===null)return;let e=this.pending;try{r.mkdirSync(c.dirname(this.filePath),{recursive:!0});let t=`${this.filePath}.tmp`;r.writeFileSync(t,JSON.stringify(e),{mode:384}),r.chmodSync(t,384),r.renameSync(t,this.filePath),this.pending=null}catch(e){this.logger(`warn`,`session-state save failed: ${e.message}`)}}};const xA={default_bg:`string`,default_fg:`string`,default_empty_value:`string`,default_separator:`string`,default_truncate_marker:`string`,palette:`string`,look:`string`,preset:`string`,style:`string`,progression:`string`,autoWrap:`boolean`,padding:`number`,charset:`string`,updateNotice:`boolean`,colorCompatibility:`string`,menuGlyph:`string`},SA=new Set([`1`,`true`]),CA=new Set([`0`,`false`,``]);function wA(e,t){let n=YA(e),r=n.scope===`segment-palette`?`string`:xA[n.field];if(r===`string`)return JSON.stringify(t);if(r===`number`){let n=Number(t);if(!Number.isFinite(n))throw Error(`persistValueText: "${e}" expects a number, got "${t}"`);return String(n)}if(SA.has(t))return`true`;if(CA.has(t))return`false`;throw Error(`persistValueText: "${e}" expects boolean-ish (1, 0, true, false), got "${t}"`)}function TA(e){try{return r.readFileSync(e,`utf8`)}catch(e){if(e.code===`ENOENT`)return null;throw e}}function EA(e,t,n){try{if(t===null){r.rmSync(e,{force:!0});return}r.mkdirSync(c.dirname(e),{recursive:!0}),ke(e,t)}catch(t){let r=`config write failed (${e}): ${t.message}`;throw n(`error`,r),Error(r)}}function DA(e){return/^\s*$/.test(e)?null:so(e)}function OA(e,t){return e!==null&&lo(e,t)!==void 0}function kA(e){if(e.kind===`segment`)return e.when===void 0?e.name:{seg:e.name,when:e.when};if(e.kind===`container`){let{kind:t,direction:n,children:r,...i}=e;return{[n===`horizontal`?`h`:`v`]:r.map(kA),...i}}return e}function AA(e){if(!Vs(e))return kA(e);let{rows:t,...n}=e;return{rows:Object.fromEntries(Object.entries(t).map(([e,t])=>[e,kA(t)])),...n}}const jA=qD,MA=jA.segments,NA=jA.presets,PA=jA.root;function FA(e,t,n,r){if(!OA(e,t)&&n===void 0)throw new $(`cannot edit ${r}: neither the config file nor the bundled default declares ${t.join(`.`)}`)}function IA(e,t){let n=oy(t);return t.scope===`segment-palette`&&FA(e,[`segments`,t.segment],MA[t.segment],n.join(`.`)),n}function LA(e){return so(vo(e))}function RA(){return Object.entries(PA.rows).map(([e,t])=>{let n=kA(t);return{path:[`root`],fragment:LA({rows:{[e]:n}}),unit:{path:[`root`,`rows`,e],value:n}}})}function zA(e,t){let n=e===null?void 0:lo(e,t);return n===void 0?null:{path:t,fragment:n,unit:null}}function BA(e,t){if(t===void 0)return null;let n=AA(t);return{path:e,fragment:LA(n),unit:{path:e,value:n}}}function VA(e,t){let n=[`presets`,t],r=[...n,`root`],i=NA[t];FA(e,n,i,r.join(`.`));let a=zA(e,r)??BA(r,i?.root);return a!==null&&Ro(a.fragment)?a:null}function HA(e,t){let n=Lo(t.fragment);return n===null?new Map([[`#`,{path:t.path,unit:t.unit,node:t.fragment}]]):new Map([...e,...n.map(e=>[e.key,{path:[...t.path,`rows`,e.key],unit:t.unit,node:e.value}])])}function UA(e,t){return[...RA(),zA(e,[`root`]),VA(e,t)].filter(e=>e!==null).reduce(HA,new Map)}function WA(e,t,n){for(let{node:r,...i}of UA(e,t).values())if(Bo(r,n))return i;throw new $(`${GA(e,t).join(`.`)} holds no segment "${n}" — the bar you clicked is stale; it reloads on the next render`)}function GA(e,t){return VA(e,t)?.path??[`root`]}function KA(e,t){return t.scope===`preset-root`?GA(e,t.preset):oy(t)}function qA(e,{unit:t}){return t===null?e:Mo(e,t.path,vo(t.value),go)}function JA(e){let t=ay(e);if(t===null)throw Error(`"${e}" is not a valid persist target`);return t}function YA(e){let t=JA(e);if(t.scope===`preset-root`)throw Error(`"${e}" names a layout, not a value`);return t}function XA(e,t,n,r){try{kS(DS(t,r,YD),t)}catch(e){throw e instanceof Wo?new $(`refused: the config file would not load after this click — ${e.message}`):e}EA(t,r,e.logger),e.record(t,n,r)}function ZA(e,t){let n=YA(t),r=DA(TA(e)??``),i=r===null?void 0:lo(r,oy(n));return i!==void 0&&`value`in i?i.value:void 0}function QA(e,t,n){let r=TA(t);XA(e,t,r,n.reduce((e,[t,n])=>Mo(e,IA(DA(e),YA(t)),wA(t,n),go),r??``))}function $A(e,t){return No(e,t,t[0]===`presets`&&t.length>2&&!ZD(t[1])?2:0)}function ej(e,t,n){let r=n.map(JA),i=TA(t);if(i===null)return;let a=r.reduce((e,t)=>$A(e,KA(DA(e),t)),i);a!==i&&XA(e,t,i,a)}function tj(e){let t=e===null?void 0:lo(e,[`presets`]),n=new Set([...XD,...t?.kind===`object`?t.entries.map(e=>e.key):[]].map(ml));return Array.from({length:n.size+1},(e,t)=>`custom-${t+1}`).find(e=>!n.has(ml(e)))}function nj(e,t,n,r,i){let a=TA(t),o=DA(a??``),s=tj(o),c=[`presets`,s],l=VA(o,n),u=[...l===null?[]:[[[...c,`root`],l.unit===null?fo(a??``,l.fragment):vo(l.unit.value)]],...Object.keys(r).length===0?[]:[[[...c,`globals`],vo(r)]]],d=i.map(([e,t])=>{let n=iy(s,e);return[IA(o,YA(n)),wA(n,t)]});return XA(e,t,a,[...u,...d].reduce((e,[t,n])=>Mo(e,t,n,go),Mo(a??``,c,`{}`,go))),s}function rj(e,t,n){if(ZD(n))throw new $(`cannot delete preset "${n}": it is bundled — reset its settings instead`);let r=[`presets`,n],i=TA(t),a=DA(i??``);if(i===null||a===null||lo(a,r)===void 0)throw new $(`cannot delete preset "${n}": ${t} declares no ${r.join(`.`)} — the bar you clicked is stale; it reloads on the next render`);let o=lo(a,[`globals`,`preset`]);XA(e,t,i,[r,...o?.kind===`string`&&o.value===n?[[`globals`,`preset`]]:[]].reduce((e,t)=>$A(e,t),i))}function ij(e,t,n,r){let i=JA(n);if(i.scope!==`preset-root`)throw Error(`"${n}" is not a "presets.<name>.root" target`);let a=TA(t),o=r.op===`remove`?r.target:r.anchor,s=WA(DA(a??``),i.preset,o),c=qA(a??``,s),l=r.op===`remove`?Ho(c,s.path,r.target):Uo(c,s.path,r.segment,r.anchor,r.relation);if(l===null)throw new $(`${s.path.join(`.`)} in ${t} has no segment "${o}" — the bar you clicked is stale; it reloads on the next render`);XA(e,t,a,l)}const aj={load:()=>({}),save:()=>{}},oj=new Set(zv.map(e=>e.sessionKey)),sj={past:[],future:[]},cj=e=>e.kind===`session`?`session:${e.key}`:`file:${e.file}`;var lj=class{state=new Map;constructor(e,t,n=aj){this.sessionState=e,this.logger=t,this.storage=n,this.state=new Map(Object.entries(n.load()))}useStorage(e){this.storage=e,this.state=new Map(Object.entries(e.load()))}depth(e){let{past:t,future:n}=this.state.get(e)??sj;return{undo:t.length,redo:n.length}}history(e){return this.state.get(e)??sj}begin(){let e=new Map,t=(t,n)=>{let r=e.get(t)??new Map,i=r.get(cj(n));r.set(cj(n),i===void 0?n:{...n,before:i.before}),e.set(t,r)},n=this.sessionState,r=(e,r,i)=>{let a=r.filter(e=>oj.has(e)).map(t=>({key:t,before:n.get(e,t)}));i();for(let{key:r,before:i}of a)t(e,{kind:`session`,key:r,before:i,after:n.get(e,r)})};return{sessionState:{get:(e,t)=>n.get(e,t),set:(e,t,i)=>r(e,[t],()=>n.set(e,t,i)),setBatch:(e,t)=>r(e,t.map(e=>e.key),()=>n.setBatch(e,t)),clear:(e,t)=>r(e,[t],()=>n.clear(e,t))},file:(e,n,r,i)=>t(e,{kind:`file`,file:n,before:r,after:i}),commit:()=>{let t=[...e];e.clear();for(let[e,n]of t){let t=[...n.values()].filter(e=>e.before!==e.after);t.length!==0&&this.put(e,{past:fj([...this.history(e).past,t]),future:[]})}}}}undo(e){let{past:t,future:n}=this.history(e),r=t.at(-1);if(r===void 0)throw new $(`undo: nothing to undo`);return this.apply(e,r,`before`,`undo`,{past:t.slice(0,-1),future:fj([...n,r])}),r}redo(e){let{past:t,future:n}=this.history(e),r=n.at(-1);if(r===void 0)throw new $(`redo: nothing to redo`);return this.apply(e,r,`after`,`redo`,{past:fj([...t,r]),future:n.slice(0,-1)}),r}apply(e,t,n,r,i){let a=n===`before`?`after`:`before`,o=t.filter(t=>this.read(e,t)!==t[a]);if(o.length>0){let t=new Set(o.map(cj));throw this.put(e,{past:pj(this.history(e).past,t),future:pj(this.history(e).future,t)}),new $(`${r}: ${o.map(hj).join(`, `)} changed since that edit — refusing to overwrite it; this session's undo history no longer steps it`)}let s=[];try{for(let r of t)this.write(e,r,r[n]),s.push(r);this.put(e,i)}catch(t){try{for(let t of s.reverse())this.write(e,t,t[a])}catch(e){throw Error(`${t.message}; and putting the step back failed, so it is half-applied: ${e.message}`)}throw t}}read(e,t){return t.kind===`session`?this.sessionState.get(e,t.key):TA(t.file)}write(e,t,n){t.kind===`file`?EA(t.file,n,this.logger):n===null?this.sessionState.clear(e,t.key):this.sessionState.set(e,t.key,n)}put(e,t){let n=new Map(this.state);for(n.delete(e),(t.past.length>0||t.future.length>0)&&n.set(e,t);n.size>32||uj(n)>8388608;){let[e,t]=n.entries().next().value;n.size>1?n.delete(e):n.set(e,dj(t))}this.storage.save(Object.fromEntries(n)),this.state=n}};function uj(e){let t=0;for(let{past:n,future:r}of e.values())for(let e of[...n,...r])for(let n of e)t+=(n.before?.length??0)+(n.after?.length??0);return t}function dj({past:e,future:t}){return e.length>0?{past:e.slice(1),future:t}:{past:e,future:t.slice(1)}}function fj(e){return e.slice(-50)}function pj(e,t){return e.map(e=>e.filter(e=>!t.has(cj(e)))).filter(e=>e.length>0)}function mj(e){return e.map(hj).join(`, `)}function hj(e){return e.kind===`session`?`session setting "${e.key}"`:e.file}function gj(e){if(typeof e!=`object`||!e)return!1;let t=e,n=e=>e===null||typeof e==`string`;return(t.kind===`session`&&typeof t.key==`string`||t.kind===`file`&&typeof t.file==`string`)&&n(t.before)&&n(t.after)}function _j(e){return Array.isArray(e)&&e.every(e=>Array.isArray(e)&&e.every(gj))}function vj(e){if(typeof e!=`object`||!e)return!1;let t=e;return _j(t.past)&&_j(t.future)}function yj(e,t){return{load:()=>{let n;try{n=r.readFileSync(e,`utf8`)}catch(e){let n=e.code;return n!==`ENOENT`&&t(`warn`,`settings-history read failed (${n}); starting empty`),{}}try{let e=JSON.parse(n);if(typeof e==`object`&&e&&!Array.isArray(e)&&Object.values(e).every(vj))return e}catch{}return t(`warn`,`settings-history load: unexpected shape, starting empty`),{}},save:n=>{try{r.mkdirSync(c.dirname(e),{recursive:!0}),ke(e,JSON.stringify(n),384)}catch(e){let n=`settings-history write failed — the change landed but is not undoable: ${e.message}`;throw t(`error`,n),Error(n)}}}}const bj={theme:e=>e.theme.kind===`decided`?e.theme.name:null,preset:e=>e.preset,look:e=>e.look.kind===`decided`?e.look.name:null,style:e=>e.style,progression:e=>e.progression,charset:e=>e.charset,colorCompatibility:e=>e.colorCompatibility,autoWrap:e=>e.autoWrap?qa:Ja,padding:e=>String(e.padding)},xj=Object.entries(Rv),Sj=new Set(zv.map(e=>e.sessionKey)),Cj=()=>!1;function wj(e,t){return QD(e,e=>Sj.has(e)?t(e):null,Cj)}function Tj(e,t,n,r){return e.flatMap(([e,i])=>{let a=bj[e](t);return a===null||a===bj[e](n(e))?[]:[{...i,value:a,target:r(i)}]})}function Ej(e,t){let n=wj(e,t),r=QD(e,()=>null,Cj),i=QD(e,e=>e===Rv.preset.sessionKey?n.preset:null,Cj),a=Zv(e.presets,n.preset).globals??{};return Tj(xj,n,e=>e===`preset`?r:i,e=>e.configKey in a?iy(n.preset,e.configKey):e.configKey)}function Dj(e,t){let n=wj(e,t),r=QD(e,e=>e===Rv.preset.sessionKey?n.preset:null,Cj);return{from:n.preset,globals:Zv(e.presets,n.preset).globals??{},picks:Tj(xj.filter(([e])=>e!==`preset`),n,()=>r,e=>e.configKey)}}function Oj(e){return{sessionKeys:zv.filter(t=>t.configKey===e).map(e=>e.sessionKey),fileKeys:[e,...xc(e)?XD.map(t=>iy(t,e)):[]]}}function kj(e){let t=Ee({bin:`tmux`,args:[`-S`,e.socket,`display`,`-p`,`-t`,e.pane,`#{client_termfeatures}`],timeoutMs:2e3,category:`doctor.tmux`});return t.ok?{kind:`ok`,value:t.stdout.trim().split(`,`).filter(e=>e!==``)}:{kind:`failed`,reason:`tmux display -p failed (${t.error??[t.reason,t.stderr.trim()].filter(e=>e!==``).join(`: `)})`}}function Aj(){return{probeTmux:kj,claudeSettingsPath:yw()}}function jj(e){return r.existsSync(e.claudeSettingsPath)?r.readFileSync(e.claudeSettingsPath,`utf8`):``}function Mj(e){if(/^\s*$/.test(e))return{};let t=_o.parse(e);if(typeof t!=`object`||!t||Array.isArray(t))throw Error(`not a JSON object`);let n=t.env;if(n===void 0)return{};if(typeof n!=`object`||!n||Array.isArray(n))throw Error("`env` is not an object");return n}function Nj(e,t){return t===void 0?{kind:`unreported`}:t===null?{kind:`outside`}:{kind:`inside`,hint:t,termfeatures:e.probeTmux(t)}}function Pj(e){try{return Mj(jj(e))}catch(t){throw Error(`cannot read ${e.claudeSettingsPath}: ${t instanceof Error?t.message:String(t)}`,{cause:t})}}function Fj(e,t){return{tmux:Nj(e,t),claudeSettingsEnv:Pj(e)}}function Ij(e,t,n){switch(t.kind){case`claude-settings-env`:{let i=Mo(jj(e),[`env`,t.name],JSON.stringify(t.value),_o);return r.mkdirSync(c.dirname(e.claudeSettingsPath),{recursive:!0}),ke(e.claudeSettingsPath,i),{...n,claudeSettingsEnv:Pj(e)}}default:return t.kind}}function Lj(e){if(!e)throw new $(`session id is required`);if(e.includes(`/`)||e.includes(`..`))throw new $(`invalid session id "${e}"`);return e}function Rj(e){return zj(()=>decodeURIComponent(e))}function zj(e){try{return e()}catch(e){throw e instanceof URIError?new $(`malformed wire encoding: ${e.message}`):e}}function Bj(e,t){let n=Ee({bin:`/usr/bin/pbcopy`,stdinInput:e,category:`click.pbcopy`});if(!n.ok){if(n.reason===`rate-limited`){t.dlog(`warn`,`click.pbcopy rate-limited: ${n.error??``}`);return}throw Error(`pbcopy failed (${n.reason}, exit ${n.exitCode??`null`})`)}}const Vj=(e,t)=>Bj(Rj(e),t),Hj=(e,t)=>{let n=Ee({bin:`/usr/bin/open`,args:[`-a`,`Visual Studio Code`,Rj(e)],category:`click.open`});if(!n.ok){if(n.reason===`rate-limited`){t.dlog(`warn`,`click.open rate-limited: ${n.error??``}`);return}throw Error(`open -a "Visual Studio Code" failed (${n.reason}, exit ${n.exitCode??`null`})`)}},Uj=(e,t)=>Bj(Rj(e),t),Wj=(e,t)=>Bj(Rj(e),t),Gj=(e,t)=>{let n=Lj(Rj(e));t.sessionState.get(n,`toolbar-expanded`)?t.sessionState.clear(n,`toolbar-expanded`):t.sessionState.set(n,`toolbar-expanded`,`1`)},Kj=(e,t)=>{let[n=``,...r]=zj(()=>dw(e)),i=Lj(n);if(r.length===0)throw new $(`set-state: <key>/<value> is required (have keys: ${NE().join(`, `)})`);if(r.length%2!=0)throw new $(`set-state: expected even-count <key>/<value> pairs, got ${r.length} segment(s) after session id (have keys: ${NE().join(`, `)})`);let a=[];for(let e=0;e<r.length;e+=2){let t=r[e],n=r[e+1];if(!t)throw new $(`set-state: empty key at pair ${e/2+1} (expected <sessionId>/<key>/<value>[/<key>/<value>...] segments)`);let i=FE(t,n);if(!i.ok)throw new $(`set-state: pair ${e/2+1}: ${i.reason}`);a.push({key:t,value:i.value})}t.sessionState.setBatch(i,a);let o=a.map(e=>`${e.key}=${e.value}`).join(` `);t.dlog(`info`,`set-state: ${o} (session=${i})`)},qj=/^-?\d+$/;function Jj(e,t,n){return e>n?t:e<t?n:e}const Yj=(e,t)=>{let[n=``,r=``,i=``]=zj(()=>dw(e)),a=Lj(n);if(!r)throw new $(`step-state: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!qj.test(i))throw new $(`step-state: delta must be an integer, got "${i}"`);let o=parseInt(i,10),s=IE(r);if(!s)throw new $(`step-state: key "${r}" is not a bounded (range) state key (have keys: ${NE().join(`, `)})`);let c=t.sessionState.get(a,r),l=c&&qj.test(c)?Math.max(s.min,Math.min(s.max,parseInt(c,10))):s.seed,u=Jj(l+o,s.min,s.max),d=FE(r,String(u));if(!d.ok)throw new $(`step-state: ${d.reason}`);t.sessionState.set(a,r,d.value),t.dlog(`info`,`step-state: ${r} ${l}→${d.value} (by ${o}, session=${a})`)},Xj=`render-origin`;function Zj(e){return JSON.stringify(e)}function Qj(e){let t;try{t=JSON.parse(e)}catch{throw new $(`render origin is not JSON: ${e}`)}if(typeof t!=`object`||!t)throw new $(`render origin is not an object: ${e}`);let{projectDir:n,cwd:r,configFile:i}=t;if(typeof n!=`string`||typeof r!=`string`||i!==null&&typeof i!=`string`)throw new $(`render origin has the wrong shape: ${e}`);return{projectDir:n,cwd:r,configFile:i}}function $j(e,t){let n=e.sessionState.get(t,Xj);if(n===null)throw new $(`session ${t} has not rendered yet — no config file to write`);return Qj(n)}function eM(e){return SS(e.projectDir,e.cwd,e.configFile??void 0)}function tM(e,t){return eM($j(e,t))}function nM(e,t){return{record:(n,r,i)=>e.journal.file(t,n,r,i),logger:e.dlog}}const rM=(e,t)=>{let[n=``,r=``,i=``]=zj(()=>dw(e)),a=Lj(n);if(!r)throw new $(`set-config: <key>/<value> is required (have keys: ${gE().join(`, `)})`);let o=_E(r,i);if(!o.ok)throw new $(`set-config: ${o.reason}`);let s=tM(t,a);QA(nM(t,a),s,[[r,o.value]]),t.dlog(`info`,`set-config: ${r}=${o.value} → ${s} (session=${a})`)},iM=(e,t)=>{let[n=``,r=``,i=``]=zj(()=>dw(e)),a=Lj(n);if(!r)throw new $(`step-config: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!qj.test(i))throw new $(`step-config: delta must be an integer, got "${i}"`);let o=parseInt(i,10),s=vE(r);if(!s)throw new $(`step-config: key "${r}" is not a bounded (range) config key (have keys: ${gE().join(`, `)})`);let c=tM(t,a),l=ZA(c,r),u=typeof l==`number`?Math.max(s.min,Math.min(s.max,l)):s.seed,d=Jj(u+o,s.min,s.max),f=_E(r,String(d));if(!f.ok)throw new $(`step-config: ${f.reason}`);QA(nM(t,a),c,[[r,f.value]]),t.dlog(`info`,`step-config: ${r} ${u}→${f.value} (by ${o}) → ${c} (session=${a})`)},aM=(e,t)=>{let[n=``]=zj(()=>dw(e)),r=Lj(n),i=$j(t,r),a=Ej(t.configFor(i),e=>t.sessionState.get(r,e));if(a.length===0){t.dlog(`info`,`save: nothing unsaved (session=${r})`);return}let o=a.map(e=>{let t=FE(e.sessionKey,e.value);if(!t.ok)throw new $(`save: ${t.reason}`);return[e.target,t.value]}),s=eM(i);QA(nM(t,r),s,o),t.reloadConfig(i);for(let e of a)t.sessionState.clear(r,e.sessionKey);t.dlog(`info`,`save: ${o.map(([e,t])=>`${e}=${t}`).join(` `)} → ${s} (session=${r})`)},oM=(e,t)=>{let[n=``]=zj(()=>dw(e)),r=Lj(n),i=$j(t,r),a=Dj(t.configFor(i),e=>t.sessionState.get(r,e)),o=a.picks.map(e=>{let t=FE(e.sessionKey,e.value);if(!t.ok)throw new $(`save-preset: ${t.reason}`);return[e.configKey,t.value]}),s=eM(i),c=nj(nM(t,r),s,a.from,a.globals,o);t.reloadConfig(i);for(let e of zv)t.sessionState.clear(r,e.sessionKey);t.sessionState.set(r,Rv.preset.sessionKey,c),t.dlog(`info`,`save-preset: ${[`${c} from=${a.from}`,...o.map(([e,t])=>`${e}=${t}`)].join(` `)} → ${s} (session=${r})`)},sM=(e,t)=>{let[n=``,r=``]=zj(()=>dw(e)),i=Lj(n);if(!r)throw new $(`delete-preset: <name> is required (shape: <sessionId>/<name>)`);let a=$j(t,i),o=eM(a);rj(nM(t,i),o,r),t.reloadConfig(a);let s=Rv.preset.sessionKey;t.sessionState.get(i,s)===r&&t.sessionState.clear(i,s),t.dlog(`info`,`delete-preset: ${r} ← ${o} (session=${i})`)},cM=(e,t)=>{let[n=``,...r]=zj(()=>dw(e)),i=Lj(n),a=gE(),o=r.length===0?[``]:r.filter(e=>!a.includes(e));if(o.length>0)throw new $(`reset-config: unknown config key "${o.join(`", "`)}" (have: ${a.join(`, `)})`);let s=$j(t,i),c=eM(s),l=r.map(Oj),u=l.flatMap(e=>e.fileKeys),d=l.flatMap(e=>e.sessionKeys);ej(nM(t,i),c,u),t.reloadConfig(s);for(let e of d)t.sessionState.clear(i,e);t.dlog(`info`,`reset-config: ${[...u,...d.map(e=>`session:${e}`)].join(` `)} ← ${c} (session=${i})`)},lM=(e,t)=>{let[n=``,r=``,i=``]=zj(()=>dw(e)),a=Lj(n);if(!r)throw new $(`apply-layout-op: <key>/<op> is required (have: ${gE().join(`, `)})`);let o=_E(r,i);if(!o.ok)throw new $(`apply-layout-op: ${o.reason}`);let s=Gv(o.value);if(s===null)throw new $(`apply-layout-op: "${o.value}" is not a layout op token`);let c=tM(t,a);ij(nM(t,a),c,r,s),t.dlog(`info`,`apply-layout-op: ${r} ${o.value} → ${c} (session=${a})`)},uM=(e,t)=>{let[n=``]=zj(()=>dw(e)),r=Lj(n);t.journal.commit();let i=t.history.undo(r);t.dlog(`info`,`undo: restored ${mj(i)} (session=${r})`)},dM=(e,t)=>{let[n=``]=zj(()=>dw(e)),r=Lj(n);t.journal.commit();let i=t.history.redo(r);t.dlog(`info`,`redo: re-applied ${mj(i)} (session=${r})`)},fM=(e,t)=>{Lj(Rj(e)),t.applyUpdate()},pM=`client-hints`;function mM(e,t){let n=e.sessionState.get(t,pM);if(n===null)throw new $(`session ${t} has not rendered yet — no client facts to diagnose`);let r;try{r=JSON.parse(n)}catch{throw new $(`client hints record is not JSON: ${n}`)}if(typeof r!=`object`||!r)throw new $(`client hints record is not an object: ${n}`);return IS(r)}function hM(e,t,n){let r=zy(n);e.sessionState.setBatch(t,Hy(r)),e.dlog(`info`,`doctor: ${r.map(e=>`${e.check.name}=${e.verdict.ok?`ok`:`failed`}`).join(` `)} (session=${t})`)}const gM=(e,t)=>{let n=Lj(Rj(e));hM(t,n,Fj(t.doctor,mM(t,n).tmux))},_M=(e,t)=>{let[n=``,r=``]=zj(()=>dw(e)),i=Lj(n),a=By(r);if(a===void 0)throw new $(`doctor-fix: unknown check "${r}"`);let o=Fj(t.doctor,mM(t,i).tmux),s=a.probe(o);if(s.ok||s.fix===void 0)throw new $(`doctor-fix: ${a.label} — ${s.ok?`nothing to fix`:s.reason}`);let c=Ij(t.doctor,s.fix,o);t.dlog(`info`,`doctor-fix: ${a.name} → ${s.fix.kind} ${s.fix.name}=${s.fix.value} (session=${i})`),hM(t,i,c)},vM=`config-override`,yM=new Map([[qC,Vj],[`load-config`,(e,t)=>{let n=e.indexOf(`/`);if(n===-1)throw new $(`load-config: expected <sessionId>/<path> (missing separator)`);let r=Lj(zj(()=>decodeURIComponent(e.slice(0,n)))),i=zj(()=>decodeURIComponent(e.slice(n+1))).trim();if(i!==``){if(!i.startsWith(`/`))throw new $(`load-config: path must be absolute, got "${i}"`);if(!/\.(json5?|json)$/.test(i))throw new $(`load-config: path must end with .json5 or .json, got "${i}"`)}i===``?(t.sessionState.clear(r,vM),t.dlog(`info`,`load-config: override cleared (session=${r})`)):(t.sessionState.set(r,vM,i),t.dlog(`info`,`load-config: ${i} (session=${r})`))}],[JC,Hj],[GC,Kj],[KC,Yj],[QC,rM],[$C,iM],[rw,cM],[ew,aM],[tw,oM],[nw,sM],[iw,lM],[aw,uM],[ow,dM],[XC,Uj],[ZC,Wj],[YC,Gj],[sw,fM],[cw,gM],[lw,_M]]),bM=new Set([GC,KC,QC,$C,rw,ew,tw,nw,iw,aw,ow,YC,sw,cw,lw]),xM=(e,t)=>{let n=[],r=!1,i=null;for(let{verb:a,value:o}of hw(pw(e))){if(!i&&bM.has(a)){let e=dw(o);e.length>0&&e[0]&&(i=e[0])}let e=yM.get(a);if(!e){n.push(`unknown effect verb "${a}"`);continue}try{e(o,t)}catch(e){e instanceof $||(r=!0),n.push(`${a}: ${e instanceof Error?e.message:String(e)}`)}}if(n.length>0){i&&t.sessionState.set(i,`click.error`,n.join(`
186
+ `));let e=`dispatch: ${n.join(`; `)}`;throw r?Error(e):new $(e)}};function SM(e){return(t,n)=>{let r=n.history.begin(),i=[];try{e(t,{...n,sessionState:r.sessionState,journal:r})}catch(e){i.push(e)}try{r.commit()}catch(e){i.push(e)}if(i.length===1)throw i[0];if(i.length>1)throw Error(i.map(e=>String(e.message??e)).join(`; `))}}const CM=new Map([...yM,[WC,xM]].map(([e,t])=>[e,SM(t)]));Object.freeze([...CM.keys()]);const wM=new Set([`hook_event_name`,`session_id`,`session_name`,`transcript_path`,`cwd`,`model`,`workspace`,`version`,`output_style`,`cost`,`context_window`,`exceeds_200k_tokens`,`effort`,`thinking`,`rate_limits`,`vim`,`agent`,`worktree`]),TM=[[`session_id`,`string`],[`transcript_path`,`string`],[`cwd`,`string`],[`model`,`object`],[`model.id`,`string`],[`model.display_name`,`string`],[`workspace`,`object`],[`workspace.current_dir`,`string`],[`workspace.project_dir`,`string`]];function EM(e){let t={missingRequired:[],typeMismatches:[],unknownTopLevelFields:[]},n=typeof e==`object`&&e&&!Array.isArray(e)?e:{};for(let[e,r]of TM){let i=OM(n,e);if(i==null)t.missingRequired.push(e);else{let n=DM(i);n!==r&&t.typeMismatches.push({path:e,expected:r,got:n})}}for(let e of Object.keys(n))wM.has(e)||t.unknownTopLevelFields.push(e);return{data:e,report:t}}function DM(e){return Array.isArray(e)?`array`:typeof e==`string`&&!e.isWellFormed()?`ill-formed string`:typeof e}function OM(e,t){let n=e;for(let e of t.split(`.`)){if(typeof n!=`object`||!n||Array.isArray(n))return;n=n[e]}return n}function kM(e,t){switch(e){case`vars`:return{what:e,vars:AM(t)};case`segments`:return{what:e,segments:FM(t)};case`config`:return{what:e,config:RM(t)}}}function AM(e){if(e===null)return[];let{store:t,registry:n,config:r}=e,i=NM(r),a=t.names().sort(),o=[];for(let e of a){let r=t.getNode(e),a=n.getLastError(e);o.push({name:e,source:i.get(e)??null,...jM(r),lastError:a===void 0?null:{timestampMs:a.timestamp,message:a.message},ageMs:MM(r.lastUpdatedMs())})}return o}function jM(e){if(e.kind!==`document`)try{return{type:e.type,value:e.read()}}catch(t){return{type:e.type,value:t instanceof Error?t.message:String(t)}}let t=e.read();switch(t.kind){case`ok`:return{type:`document`,value:JSON.stringify(t.value)};case`absent`:return{type:`document`,value:`(not yet scanned)`};case`failed`:return{type:`document`,value:t.reason}}}function MM(e){return e===null?null:Math.max(0,Date.now()-e)}function NM(e){let t=new Map;for(let[n,r]of Object.entries(e.variables))t.set(n,PM(r));for(let[n,r]of Object.entries(e.segments))if(r.vars)for(let[e,i]of Object.entries(r.vars))t.set(`${n}.${e}`,PM(i));return t}function PM(e){return e.kind}function FM(e){if(e===null)return[];let{store:t,config:n,lastRenderBySegment:r}=e,i=new Set(t.names()),a=IM(n),o=[];for(let e of a){let t=n.segments[e];t&&o.push({name:e,description:t.description??null,template:t.template,referencedVars:LM(t.template,n.helpers,i),lastRender:r.get(e)??null})}return o}function IM(e){let t=[],n=new Set;for(let r of Qo(Ws(e.root)))r.kind===`segment`&&e.segments[r.name]&&!n.has(r.name)&&(t.push(r.name),n.add(r.name));for(let r of Object.keys(e.segments))n.has(r)||(t.push(r),n.add(r));return t}function LM(e,t,n){let r=new Set;for(let i of Dg(e,t).keys()){if(n.has(i)){r.add(i);continue}let e=i.split(`.`);for(;e.length>1;){e.pop();let t=e.join(`.`);if(n.has(t)){r.add(t);break}}}return Array.from(r).sort()}function RM(e){return e===null?null:e.config}const zM=[`vars`,`segments`,`config`];function BM(e){return typeof e==`string`&&zM.includes(e)}function VM(e){return Math.max(1,e-2)}var HM=class{thresholds={LOW:50,MEDIUM:80};getContextUsageThresholds(){return this.thresholds}ratioPercentages(e,t){let n=Math.min(100,Math.max(0,Math.round(e/t*100)));return{percentage:n,contextLeftPercentage:Math.max(0,100-n)}}calculateContextFromHookData(e){let t=e.context_window;if(!t?.current_usage)return D(`No current_usage in hook data, falling back to transcript parsing`),null;let n=t.current_usage,r=t.context_window_size,i=(n.input_tokens||0)+(n.cache_creation_input_tokens||0)+(n.cache_read_input_tokens||0);D(`Native current_usage: input=${n.input_tokens}, cache_create=${n.cache_creation_input_tokens}, cache_read=${n.cache_read_input_tokens}, total=${i} (limit: ${r})`);let a=this.ratioPercentages(i,r);return{totalTokens:i,maxTokens:r,percentage:t.used_percentage==null?a.percentage:Math.round(t.used_percentage),contextLeftPercentage:t.remaining_percentage==null?a.contextLeftPercentage:Math.round(t.remaining_percentage)}}async calculateContextTokensFromTranscript(e,t){try{D(`Calculating context tokens from transcript: ${e}`);let n=await CD(e);if(n.length===0)return D(`No entries in transcript`),Y;let r=null;for(let e=n.length-1;e>=0;e--){let t=n[e];if(t&&t.message?.usage?.input_tokens&&t.isSidechain!==!0){r=t,D(`Context segment: Found most recent entry at ${t.timestamp.toISOString()}, stopping search`);break}}if(r?.message?.usage){let e=r.message.usage,n=(e.input_tokens||0)+(e.cache_read_input_tokens||0)+(e.cache_creation_input_tokens||0);return D(`Most recent main chain context: ${n} tokens (limit: ${t})`),J({totalTokens:n,maxTokens:t,...this.ratioPercentages(n,t)})}return D(`No main chain entries with usage data found`),Y}catch(e){return X(`context transcript: ${e instanceof Error?e.message:String(e)}`)}}async getContextInfo(e){let t=this.calculateContextFromHookData(e);if(t)return J(t);let n=e.context_window?.context_window_size??2e5;return this.calculateContextTokensFromTranscript(e.transcript_path,n)}},UM=class{states=new Map;constructor(e,t,n=256){this.empty=e,this.step=t,this.maxSessions=n}async read(e,t){let n=this.states.get(e),r=oD(t);if(n&&r!==0&&n.cursor.mtimeMs===r)return this.touch(e,n),{kind:`ok`,value:n.value};let i=await DD(t,n?.cursor);if(i.kind===`failed`)return i;if(i.kind===`absent`)return{kind:`ok`,value:n?.value??this.empty};let{entries:a,cursor:o,reset:s}=i.value,c=s||n===void 0?this.empty:n.value;for(let e of a)c=this.step(c,e);for(this.touch(e,{cursor:o,value:c});this.states.size>this.maxSessions;){let e=this.states.keys().next().value;if(e===void 0)break;this.states.delete(e)}return{kind:`ok`,value:c}}touch(e,t){this.states.delete(e),this.states.set(e,t)}};const WM={messageCount:0,recent:[]};function GM(e,t){if(t.isSidechain)return e;let n=[...e.recent,t];return{messageCount:e.messageCount+ +!!xD(t),recent:n.length>20?n.slice(-20):n}}function KM(e){let t=null,n=null;for(let r of e){let e=r.type||r.message?.role||r.message?.type;if(xD(r))t=r.timestamp;else if(e===`assistant`&&t){let e=(r.timestamp.getTime()-t.getTime())/1e3;e>.1&&e<300&&(n=e)}}return n}var qM=class{fold=new UM(WM,GM);async getMetricsInfo(e,t){if(D(`Getting metrics from hook data for session: ${e}`),!t.cost)return Y;let n=await this.fold.read(e,t.transcript_path);return n.kind===`failed`?X(`metrics (${e}): ${n.reason}`):J({responseTime:t.cost.total_api_duration_ms/1e3,lastResponseTime:KM(n.value.recent),sessionDuration:t.cost.total_duration_ms/1e3,messageCount:n.value.messageCount,linesAdded:t.cost.total_lines_added,linesRemoved:t.cost.total_lines_removed})}};const JM={command:null,todos:[],pending:[],done:[]};function YM(e,t){let n=e.findIndex(e=>e.name===t);return n<0?[...e,{name:t,count:1}]:e.map((e,t)=>t===n?{name:e.name,count:e.count+1}:e)}function XM(e,t){if(t.isSidechain)return e;let n=xD(t)?{...e,command:t.activity?.command??null,pending:[],done:[]}:e,r=t.activity;if(r===void 0)return n;let i=n.pending,a=n.done;r.started!==void 0&&(i=[...i,...r.started]);for(let e of r.finished??[]){let t=i.findIndex(t=>t.id===e);t<0||(a=YM(a,i[t].name),i=[...i.slice(0,t),...i.slice(t+1)])}return{...n,pending:i,done:a,todos:r.todos??n.todos}}function ZM(e){return{command:e.command,todos:e.todos,running:e.pending.reduce((e,t)=>YM(e,t.name),[]),done:e.done}}var QM=class{fold=new UM(JM,XM);async getActivityInfo(e,t){let n=await this.fold.read(e,t.transcript_path);return n.kind===`failed`?X(`activity (${e}): ${n.reason}`):J(ZM(n.value))}};const $M=new Map;function eN(e){if(!e)return``;let t=e.indexOf(`,`);return t<0?e:e.slice(0,t)}var tN=class{async getSessionId(){if(!process.env.TMUX_PANE)return Y;let e=eN(process.env.TMUX),t=$M.get(e);if(t!==void 0)return t;D(`Getting tmux session ID, TMUX_PANE: ${process.env.TMUX_PANE}`);let n=await Te({bin:`tmux`,args:[`display-message`,`-p`,`#S`],timeoutMs:1e3,category:`tmux`}),r=n.ok?n.stdout.trim()?J(n.stdout.trim()):Y:X(`tmux display-message: ${n.reason}`);return $M.set(e,r),r}isInTmux(){return!!process.env.TMUX_PANE}},nN=class{written=new Map;constructor(e){this.dir=e}pathFor(e){return c.join(this.dir,`${encodeURIComponent(e)}.txt`)}sync(e,t){let n=this.pathFor(e);if(t===(this.written.get(e)??null))return null;try{return t===null?(r.rmSync(n,{force:!0}),this.written.delete(e)):(r.mkdirSync(this.dir,{recursive:!0,mode:448}),r.writeFileSync(n,t,{mode:384}),this.written.set(e,t)),null}catch(e){return`${n}: ${e.message}`}}reset(){this.written.clear();try{return r.rmSync(this.dir,{recursive:!0,force:!0}),null}catch(e){return`${this.dir}: ${e.message}`}}};const rN=new mA;Ce(rN.launchStats);const iN=new av({counters:rN,logger:Q}),aN=new pv({watchers:iN,logger:Q}),oN=new zD,sN=new _A,cN=new lj(sN,Q),lN=new nN(We()),uN=new HM,dN=new qM,fN=new QM,pN=new tN,mN=new fA({gitService:aN,sessionState:sN,watchers:iN},{observers:{onReload:e=>Q(`info`,`config loaded projectDir=${e.projectDir} cwd=${e.cwd} file=${e.configFilePath??`<bundled default>`} error=${e.lastError===null?`none`:JSON.stringify(e.lastError)} warning=${e.lastWarning===null?`none`:JSON.stringify(e.lastWarning)}`)}}),hN=60*1e3;function gN(){let e=import.meta.url,n=[];e.startsWith(`file://`)&&n.push(w(e)),t.argv[1]&&n.push(t.argv[1]);let i=new Map;for(let e of n)try{i.set(e,r.statSync(e).mtimeMs)}catch{}let a=null,o=()=>{for(let[e,t]of i)try{if(r.statSync(e).mtimeMs!==t){Q(`info`,`binary mtime changed (${e}); shutting down`),a&&clearInterval(a),MN(0);return}}catch(e){Q(`warn`,`bin stat failed: ${e.message}`)}};return{arm(){i.size!==0&&(a=setInterval(o,hN),a.unref())},checkNow:o}}const _N=gN(),vN=nD({entryUrl:import.meta.url,intervalMs:hN,releaseIntervalMs:216e5,registryUrl:t.env.CC_CANDYBAR_REGISTRY_URL??`https://registry.npmjs.org`,fetchImpl:fetch,onApplied:()=>_N.checkNow(),log:Q});let yN=null,bN=null,xN=0;function SN(){t.on(`uncaughtException`,e=>{Q(`error`,`uncaughtException: ${e.stack||e.message}`),MN(1)}),t.on(`unhandledRejection`,e=>{Q(`error`,`unhandledRejection: ${String(e)}`),MN(1)});for(let e of[`SIGINT`,`SIGTERM`,`SIGHUP`])t.on(e,()=>{Q(`info`,`received ${e}, shutting down`),MN(0)});try{xN=gC(t.env)}catch(e){Q(`error`,`refusing to boot: ${e.message}`),MN(1);return}yN=lT(t.pid);let e=yT(xT(yN));if(!e.decision.allow){Q(`warn`,`fork-bomb breaker: ${e.decision.reason}; refusing to boot`),MN(1);return}bN=e.registryPath,r.mkdirSync(Me(),{recursive:!0}),Fe(Ne()),sN.useStorage(new bA(Re(),500,Q)),cN.useStorage(yj(ze(),Q)),fT({anchor:dT(t.env),isAlive:pT,onOrphaned:e=>{Q(`info`,`parent watchdog: ${e}; shutting down`),MN(0)}}),CN(g.createServer({allowHalfOpen:!1},e=>{NN(e)}),Ne(),!1)}function CN(e,n,r){e.removeAllListeners(`error`),e.removeAllListeners(`listening`),e.once(`error`,i=>{if(i.code!==`EADDRINUSE`){Q(`error`,`server error: ${i.message}`),MN(1);return}if(r){Q(`info`,`lost rebind race; another daemon is alive — exiting`),t.exit(0);return}wN(e,n)}),e.listen(n,()=>TN(n))}function wN(e,n){let i=$w(eT(Ie(n)),(e,t)=>cT(e,t,{readStartTime:sT,pidAlive:pT}));if(i.kind===`attach-and-exit`){Q(`info`,`EADDRINUSE: ${i.reason} — exiting`),t.exit(0);return}Q(`warn`,`EADDRINUSE: ${i.reason} — unlinking stale socket and rebinding`);try{r.unlinkSync(n)}catch(e){if(e.code!==`ENOENT`){Q(`error`,`cannot unlink stale socket ${n}: ${e.message}`),MN(1);return}}CN(e,n,!0)}function TN(e){let n=rT(e);if(n.kind!==`present`){Q(`warn`,`no ownable socket at bind callback (${n.kind}); exiting`),MN(0);return}kN(e);try{r.chmodSync(e,384)}catch(e){Q(`warn`,`chmod socket failed: ${e.message}`)}Q(`info`,`daemon up: pid=${t.pid} v=3 sock=${e} heapCap=${Math.round(C.getHeapStatistics().heap_size_limit/1048576)}MB rssLimit=${Math.round(xN/1048576)}MB`),NC();let i=lN.reset();i!==null&&Q(`warn`,`diagnostic dump wipe failed: ${i}`),_N.arm(),vN.arm(),ON(),EN(e,n.identity)}function EN(e,n){oT({bound:n,myPid:t.pid,readIdentity:()=>rT(e),readLease:()=>eT(Ie(e)),shutdown:e=>MN(e),log:Q}).arm()}let DN=null;function ON(){DN=bC(wC(rN.startedAt.getTime(),e=>MN(e),{rssLimitBytes:xN})),DN.arm()}function kN(e){let n=tT(Ie(e),{pid:t.pid,version:3,binPath:t.argv[1],startTime:yN});n!==null&&Q(`warn`,`lease write failed: ${n}`)}let AN=0,jN=!1;function MN(e){if(!jN){jN=!0,setTimeout(()=>t.kill(t.pid,`SIGKILL`),500);try{aN.close()}catch(e){Q(`warn`,`gitService close failed: ${e.message}`)}try{oN.close()}catch(e){Q(`warn`,`usageStore close failed: ${e.message}`)}try{iN.closeAll()}catch(e){Q(`warn`,`watcherRegistry close failed: ${e.message}`)}try{sN.flush()}catch(e){Q(`warn`,`sessionState flush failed: ${e.message}`)}nT(Le(),t.pid),bN!==null&&bT(bN,t.pid,_T,e=>r.unlinkSync(e)),t.exit(e)}}function NN(e){AN++,rN.inFlight=AN;let t=!1,n=(n,r)=>{if(t){r!==null&&Q(`warn`,`exit-after-flush dropped: an earlier responder settled this socket`);return}t=!0;let i=r===null?void 0:()=>MN(r);try{e.end(US(n),i)}catch(e){Q(`warn`,`response write failed: ${e.message}`),i?.()}},r=setTimeout(()=>{rN.requestsTimedOut++,n({ok:!1,error:`request exceeded 200ms`,code:`TIMEOUT`,daemonV:3},null)},200),i=WS(e=>{FN(e).then(e=>n(e.resp,e.exitAfterFlush)).catch(e=>{Q(`error`,`handler threw: ${e?.stack||e}`),n({ok:!1,error:String(e?.message||e),code:`RENDER_FAILED`,daemonV:3},null)})},e=>{Q(`warn`,`frame parse failed: ${e.message}`),n({ok:!1,error:e.message,code:`BAD_REQUEST`,daemonV:3},null)});e.on(`data`,i),e.on(`error`,e=>{Q(`warn`,`socket error: ${e.message}`)}),e.on(`close`,()=>{clearTimeout(r),AN=Math.max(0,AN-1),rN.inFlight=AN})}const PN=e=>({resp:e,exitAfterFlush:null});async function FN(e){if(!e||typeof e!=`object`||typeof e.v!=`number`)return PN({ok:!1,error:`malformed request`,code:`BAD_REQUEST`,daemonV:3});if(e.v!==3)return e.v>3?Q(`info`,`version mismatch: client=${e.v} > daemon=3; binary likely upgraded — exiting after the response flushes`):Q(`info`,`version mismatch: client=${e.v} < daemon=3; client is stale — staying up`),{resp:{ok:!1,error:`protocol v${e.v} not supported (daemon at v3)`,code:`VERSION_MISMATCH`,daemonV:3},exitAfterFlush:e.v>3?0:null};if(e.kind===`shutdown`)return{resp:{ok:!0,output:``},exitAfterFlush:0};if(e.kind===`stats`)return PN({ok:!0,stats:rN.snapshot({gitCache:aN.getStats(),usageCache:oN.getStats(),renderCacheSize:mN.size,watchersActive:iN.size(),nextRestartReason:DN?.describeNextRestart()??null})});if(e.kind===`render`){rN.requestsTotal++;let t=Date.now();try{let{report:n}=EM(e.hookData);for(let e of n.unknownTopLevelFields)Q(`info`,`schema: unknown field '${e}' — Anthropic may have added it`);let r=[];for(let e of n.missingRequired)r.push(`missing required field '${e}'`);for(let{path:e,expected:t,got:i}of n.typeMismatches)r.push(`field '${e}' expected ${t}, got ${i}`);if(e.cwd===``&&r.push(`request 'cwd' is empty`),r.length>0)return rN.requestsErrored++,Q(`warn`,`BAD_REQUEST: ${r.join(`; `)}`),PN({ok:!1,error:`malformed hookData: ${r.join(`; `)}`,code:`BAD_REQUEST`,daemonV:3});let i=e.hookData.workspace.project_dir,{configFile:a,unknownFlagsError:o}=IN(e.args),s=e.hookData.session_id,c=IS(e),l=JSON.stringify(c);sN.get(s,`client-hints`)!==l&&sN.set(s,pM,l);let u=sN.get(s,`config-override`)??a??c.configEnv,d=mN.getOrCreate(i,e.cwd,u),f=Zj({projectDir:i,cwd:e.cwd,configFile:u??null});sN.get(s,`render-origin`)!==f&&sN.set(s,Xj,f);let p=c.termCols,m=VM(p??120),h=RT(c.termRows),{authoredRoots:g}=d.state,_=t=>sN.get(e.hookData.session_id,t),v=QD(d.state.config,_,e=>g.has(e)),y=await hO(e.hookData,VN,e.cwd,d.state.neededInputPaths(v.preset),v,c,Ej(d.state.config,_).length),b=[],x=$D(v,m),S=Qk(d.state.config,d.state.compiled,d.state.store,d.state.registry,y,x,{perSegmentSink:d.state.lastRenderCellsBySegment,onRenderWarning:e=>b.push(e)},eO(v)),C=sN.get(e.hookData.session_id,`click.error`);C&&sN.clear(e.hookData.session_id,`click.error`);let ee=[o,d.lastError,C].filter(Boolean).join(`
187
+ `),te=vN.notice({sessionId:s,dismissed:sN.get(s,HE),enabled:v.updateNotice}),w=d.lastError===null?null:d.configFilePath,ne=UT(ee,te,[d.lastWarning??``,...b].filter(Boolean).join(`
188
+ `)),re=lN.sync(s,ne===null?null:GT(ne));re!==null&&Q(`warn`,`diagnostic dump failed: ${re}`);let ie=KT(S,ne,{fullText:re===null?{kind:`file`,path:lN.pathFor(s)}:{kind:`unavailable`,reason:re},failedConfigFile:w},{width:m,rowCap:h,colorCompatibility:v.colorCompatibility}),T=Date.now()-t,E=aN.getStats(),ae=oN.getStats();return Q(`info`,`render sid=${e.hookData.session_id??`?`} took=${T}ms termCols=${p??`?`} termRows=${c.termRows??`?`} width=${m} git=${E.size}/${E.hits}h/${E.misses}m usage=${ae.size}/${ae.hits}h/${ae.misses}m err=${ee?`Y`:`N`} upd=${te.length} warn=${d.lastWarning?`Y`:`N`}`),PN({ok:!0,output:ie+`
189
+ `})}catch(e){throw rN.requestsErrored++,e}}if(e.kind===`click`)return PN(await HN(e.verb,e.value));if(e.kind===`debug`){if(!BM(e.what))return PN({ok:!1,error:`unknown debug 'what': ${String(e.what)} (have: ${zM.join(`, `)})`,code:`BAD_REQUEST`,daemonV:3});let t=mN.firstState(),n=t===null?null:{store:t.store,registry:t.registry,config:t.config,compiled:t.compiled,lastRenderBySegment:e.what===`segments`?BN(t.lastRenderCellsBySegment,t.config.globals.charset??`unicode`,t.config.globals.colorCompatibility??`truecolor`):zN};return PN({ok:!0,debug:kM(e.what,n)})}return PN({ok:!1,error:`unknown kind`,code:`BAD_REQUEST`,daemonV:3})}function IN(e){let{values:t,tokens:n}=re({args:e.slice(1),options:{config:{type:`string`}},strict:!1,tokens:!0,allowPositionals:!0}),r=[...new Set((n??[]).filter(e=>e.kind===`option`&&e.name!==`config`).map(e=>`--${e.name}`))];return{configFile:LS(t.config),unknownFlagsError:r.length>0?`Unknown flags: ${r.join(`, `)}`:null}}const LN={sessionState:sN,dlog:Q,applyUpdate:()=>vN.act(),doctor:Aj(),history:cN,configFor:e=>mN.getOrCreate(e.projectDir,e.cwd,e.configFile??void 0).state.config,reloadConfig:e=>mN.reload(e.projectDir,e.cwd,e.configFile??void 0)},RN={style:`powerline`,colorCompatibility:Ba,wrap:!0,padding:1,charset:Ia,width:1/0},zN=new Map;function BN(e,t,n){let r=new Map;for(let[i,a]of e)r.set(i,LT(a,{...RN,charset:t,colorCompatibility:n}));return r}const VN={gitProvider:aN,usageStore:oN,contextProvider:uN,metricsProvider:dN,activityProvider:fN,tmuxService:pN,log:Q,clock:()=>new Date,history:e=>cN.depth(e)};function HN(e,t){let n=CM.get(e);if(!n)return{ok:!1,error:`unknown click verb: ${e}`,code:`BAD_REQUEST`,daemonV:3};try{return n(t,LN),{ok:!0,output:``}}catch(e){let t=e instanceof $?`BAD_REQUEST`:`RENDER_FAILED`;return{ok:!1,error:String(e instanceof Error?e.message:e),code:t,daemonV:3}}}const UN={connectMs:200,budgetMs:500};async function WN(e){let n=e.includes(`--json`),r=await GN();if(r.kind!==`ok`&&(t.stderr.write(`daemon-stats: ${QS(r)}\n`),t.exit(1)),n){t.stdout.write(JSON.stringify(r.value,null,2)+`
190
+ `);return}t.stdout.write(YN(r.value))}function GN(){return KS({kind:`stats`},UN,e=>`stats`in e?e.stats:void 0)}function KN(e){return e<1024?`${e}B`:e<1024*1024?`${(e/1024).toFixed(1)}KB`:`${(e/1024/1024).toFixed(1)}MB`}function qN(e,t){let n=e+t;return n===0?`n/a`:`${(e/n*100).toFixed(1)}%`}function JN(e){return e<60?`${e}s`:e<3600?`${Math.floor(e/60)}m${e%60}s`:`${Math.floor(e/3600)}h${Math.floor(e%3600/60)}m`}function YN(e){let t=[];t.push(`cc-candybar daemon stats`),t.push(``),t.push(`process`),t.push(` pid ${e.pid}`),t.push(` version ${e.version}`),t.push(` protocol ${e.protocolVersion}`),t.push(` startedAt ${e.startedAt}`),t.push(` uptime ${JN(e.uptimeSec)}`),t.push(` rss ${KN(e.rssBytes)}`),t.push(` heapUsed ${KN(e.heapUsedBytes)}`),t.push(` heapTotal ${KN(e.heapTotalBytes)}`),t.push(` external ${KN(e.externalBytes)}`),t.push(` arrayBuffers ${KN(e.arrayBuffersBytes)}`),t.push(``),t.push(`requests`),t.push(` total ${e.requests.total}`),t.push(` errored ${e.requests.errored}`),t.push(` timedOut ${e.requests.timedOut}`),t.push(` inFlight ${e.requests.inFlight}`),t.push(``),t.push(`gitCache`),t.push(` size ${e.gitCache.size}`),t.push(` hit rate ${qN(e.gitCache.hits,e.gitCache.misses)} (${e.gitCache.hits} / ${e.gitCache.hits+e.gitCache.misses})`),t.push(` invalidations ${e.gitCache.invalidations}`),t.push(``),t.push(`usageCache`),t.push(` size ${e.usageCache.size}`),t.push(` hit rate ${qN(e.usageCache.hits,e.usageCache.misses)} (${e.usageCache.hits} / ${e.usageCache.hits+e.usageCache.misses})`),t.push(` sweeps ${e.usageCache.sweeps}`),t.push(``),t.push(`renderCache`),t.push(` size ${e.renderCache.size}`),t.push(`watchers`),t.push(` active ${e.watchers.active}`),t.push(` opened ${e.watchers.opened}`),t.push(` closed ${e.watchers.closed}`),t.push(` evicted ${e.watchers.evicted}`),t.push(``),t.push(`subprocesses`),t.push(` total ${e.subprocesses.total}`),t.push(` inFlight ${e.subprocesses.inFlight}`),t.push(` lastMinute ${e.subprocesses.lastMinute}`);let n=Object.entries(e.subprocesses.byCategory),r=n.reduce((e,[t])=>Math.max(e,t.length),13);for(let[i,a]of n){let n=e.subprocesses.p50DurationMs[i],o=e.subprocesses.p99DurationMs[i],s=n!==void 0&&o!==void 0?` (p50 ${n}ms · p99 ${o}ms)`:``;t.push(` ${i.padEnd(r)} ${a}${s}`)}return e.nextRestartReason&&(t.push(``),t.push(`nextRestart ${e.nextRestartReason}`)),t.join(`
189
191
  `)+`
190
- `}const xN={connectMs:200,budgetMs:500};async function SN(e,n){let r=n.includes(`--json`),i=await CN(e);if(i.kind!==`ok`&&(t.stderr.write(`${e}: ${RS(i)}\n`),t.exit(1)),r){t.stdout.write(JSON.stringify(i.value,null,2)+`
191
- `);return}t.stdout.write(wN(i.value))}function CN(e){return MS({kind:`debug`,what:e},xN,e=>`debug`in e?e.debug:void 0)}function wN(e){switch(e.what){case`vars`:return TN(e.vars);case`segments`:return EN(e.segments);case`config`:return DN(e.config);default:return e}}function TN(e){if(e.length===0)return`no variables (DSL not active)
192
- `;let t=[`variables (${e.length})`,``],n=e.reduce((e,t)=>Math.max(e,t.name.length),4),r=e.reduce((e,t)=>Math.max(e,(t.source??`—`).length),6),i=e.reduce((e,t)=>Math.max(e,t.type.length),4);for(let a of e){let e=a.ageMs===null?``:` ${kN(a.ageMs)}`,o=a.lastError?` ✗ ${a.lastError.message}`:``;t.push(` ${a.name.padEnd(n)} ${(a.source??`—`).padEnd(r)} ${a.type.padEnd(i)} ${ON(a.value)}${e}${o}`)}return t.join(`
192
+ `}const XN={connectMs:200,budgetMs:500};async function ZN(e,n){let r=n.includes(`--json`),i=await QN(e);if(i.kind!==`ok`&&(t.stderr.write(`${e}: ${QS(i)}\n`),t.exit(1)),r){t.stdout.write(JSON.stringify(i.value,null,2)+`
193
+ `);return}t.stdout.write($N(i.value))}function QN(e){return KS({kind:`debug`,what:e},XN,e=>`debug`in e?e.debug:void 0)}function $N(e){switch(e.what){case`vars`:return eP(e.vars);case`segments`:return tP(e.segments);case`config`:return nP(e.config);default:return e}}function eP(e){if(e.length===0)return`no variables (DSL not active)
194
+ `;let t=[`variables (${e.length})`,``],n=e.reduce((e,t)=>Math.max(e,t.name.length),4),r=e.reduce((e,t)=>Math.max(e,(t.source??`—`).length),6),i=e.reduce((e,t)=>Math.max(e,t.type.length),4);for(let a of e){let e=a.ageMs===null?``:` ${iP(a.ageMs)}`,o=a.lastError?` ✗ ${a.lastError.message}`:``;t.push(` ${a.name.padEnd(n)} ${(a.source??`—`).padEnd(r)} ${a.type.padEnd(i)} ${rP(a.value)}${e}${o}`)}return t.join(`
193
195
  `)+`
194
- `}function EN(e){if(e.length===0)return`no segments (DSL not active)
196
+ `}function tP(e){if(e.length===0)return`no segments (DSL not active)
195
197
  `;let t=[`segments (${e.length})`,``];for(let n of e)t.push(` ${n.name}`),n.description!==null&&t.push(` shows ${n.description}`),t.push(` template ${n.template}`),n.referencedVars.length>0&&t.push(` vars ${n.referencedVars.join(`, `)}`),n.lastRender!==null&&t.push(` last ${n.lastRender}`);return t.join(`
196
198
  `)+`
197
- `}function DN(e){return e===null?`config: DSL not active
199
+ `}function nP(e){return e===null?`config: DSL not active
198
200
  `:JSON.stringify(e,null,2)+`
199
- `}function ON(e){let t=typeof e==`string`?e:JSON.stringify(e);return t.length>60?t.slice(0,57)+`…`:t}function kN(e){return e<1e3?`${e}ms`:e<6e4?`${(e/1e3).toFixed(1)}s`:`${Math.floor(e/6e4)}m`}function AN(){let e=MN();return e===null?null:r.readFileSync(e,`utf-8`)}function jN(){let e;try{e=AN()}catch(e){t.stderr.write(`schema: cannot read bundled schema: ${e instanceof Error?e.message:String(e)}\n`),t.exit(2)}e===null&&(t.stderr.write("schema: bundled schema not found (expected schema/cc-candybar.schema.json). Run `pnpm gen:schema` from a source checkout.\n"),t.exit(2)),t.stdout.write(e),t.exit(0)}function MN(){let e=c.join(`schema`,`cc-candybar.schema.json`),n=t.argv[1];if(n===void 0)return null;let i=c.dirname(c.resolve(n));for(;;){let t=c.join(i,e);if(r.existsSync(t))return t;let n=c.dirname(i);if(n===i)return null;i=n}}function NN(e){let t=e.CC_CANDYBAR_CONFIG??``;return t===``?void 0:t}const PN=5e3;function FN(e){let t=`/home/tester`,n=Math.floor(Date.now()/1e3);return{hook_event_name:`Status`,session_id:`test0a1b-2c3d-4e5f-6a7b-8c9d0e1f2a3b`,version:`1.15.0`,home:t,cwd:`${t}/code/cc-candybar/src`,transcript_path:`${t}/.claude/projects/x/test.jsonl`,model:{id:`claude-opus-4-8`,display_name:`Opus 4.8`},workspace:{current_dir:`${t}/code/cc-candybar/src`,project_dir:`${t}/code/cc-candybar`},git:{repoName:`cc-candybar`,repoUrl:`https://github.com/promptctl/cc-candybar`,branch:`main`,sha:`abc1234`,ahead:2,behind:1,staged:3,unstaged:2,untracked:1,conflicts:0,upstream:`origin/main`,stash:1,status:`dirty`,operation:`rebase`,timeSinceCommit:780},session:{cost:.39,tokens:241400},today:{cost:12.5,tokens:34e5},context:{totalTokens:48487,contextLeft:24},metrics:{lastResponseTime:8.2,responseTime:4.2,sessionDuration:930,messageCount:8,linesAdded:512,linesRemoved:88},block:{nativeUtilization:63,resetsAt:n+2*3600},weekly:{percentage:21,resetsAt:n+5*86400},cache:{expiresAt:n+900},tmux:{session:`work`},host:{name:`tester-box`,user:`tester`,ssh:!0},...kD(e),history:{undo:1,redo:1},unsaved:1}}function IN(e,t){let n=sS(e,e),r=lS(n);return r!==null&&t.push(r),n.kind===`file`?n.path:null}async function LN(e,n=t.cwd()){let i=[],a=e===void 0?IN(n,i):c.resolve(iS(e));if(e!==void 0&&a!==null){let e;try{e=r.statSync(a,{throwIfNoEntry:!1})}catch(e){return{kind:`unreadable`,path:a,message:e instanceof Error?e.message:String(e)}}if(e!==void 0&&!e.isFile())return{kind:`unreadable`,path:a,message:`not a file`}}let o=dS(n,n);o!==null&&i.push(o);try{return{kind:`clean`,configPath:a,warnings:i,rendered:await BN(a,n,i)}}catch(e){let t=e;return a!==null&&typeof t==`object`&&t&&typeof t.code==`string`&&t.path===a&&typeof t.message==`string`?{kind:`unreadable`,path:a,message:t.message}:(e instanceof Ho&&i.push(...e.warnings),{kind:`fatal`,configPath:a,message:e instanceof Ho||e instanceof Error?e.message:String(e),warnings:i})}}async function RN(e,t,n){let r=fS(e,eO);n.push(...r.warnings);let i=hS(r,e??`<default>`),a=new Bk,o=new Mv(a,i.globals.default_empty_value??``,void 0,new Zk);try{let e=Ok(i,o,{cwd:t});n.push(...e.loadWarnings);let r=await o.settled(PN);return r.length>0&&n.push(`source${r.length===1?``:`s`} still running after ${PN} ms, rendered with fallback values: ${r.join(`, `)}`),{config:i,compiled:e,store:a,registry:o}}catch(e){throw o.dispose(),e}}function zN({config:e,compiled:t,store:n,registry:r},i,a){let o=new Map;return{rendered:Mk(e,t,n,r,FN(i),{style:i.style,separator:i.separator,width:a,colorCompatibility:i.colorCompatibility,wrap:i.autoWrap,padding:i.padding,charset:i.charset},{onSegmentError:(e,t)=>o.set(`segment "${e}"`,t),onRenderWarning:e=>o.set(`globals.palette`,e)},{theme:i.theme,look:i.look,preset:i.preset,progression:i.progression}),failures:o}}async function BN(e,t,n){let r=await RN(e,t,n),{config:i}=r;try{wE(i);let e=OD(i,()=>null,()=>!1),t=e=>zN(r,e,200),n=t(e),a=t({...e,presetCustomized:!0}),o=[...[...n.failures].map(([e,t])=>`${e}: ${t}`),...[...a.failures].filter(([e])=>!n.failures.has(e)).map(([e,t])=>`${e}: ${t} (under .preset.customized = true)`)];if(o.length>0)throw Error(`config renders with ${o.length} render error${o.length===1?``:`s`} (the daemon would show them on the bar):\n`+o.map(e=>` ${e}`).join(`
200
- `));return n.rendered}finally{r.registry.dispose()}}function VN(e){return e.map(e=>`warning: ${e}\n`).join(``)}function HN(e,t=!1){switch(e.kind){case`clean`:return{stdout:`✓ ${e.configPath??`bundled default (no config file found)`}: config OK${e.warnings.length>0?` (${e.warnings.length} warning${e.warnings.length===1?``:`s`})`:``}\n`+(t?`${e.rendered}\n`:``),stderr:VN(e.warnings),code:0};case`fatal`:return{stdout:``,stderr:VN(e.warnings)+`✗ ${e.configPath??`<default>`}\n${e.message}\n`,code:1};case`unreadable`:return{stdout:``,stderr:`check: cannot read ${e.path}: ${e.message}\n`,code:2}}}const UN=`--render`,WN=`Usage: cc-candybar check [${UN}] [config-file]\n`;function GN(e){let t=e.filter(e=>e.startsWith(`--`)),n=e.filter(e=>!e.startsWith(`--`)),r=t.filter(e=>e!==UN);return r.length>0?{kind:`usage`,message:`check: unknown option ${r.join(` `)}\n${WN}`}:n.length>1||n[0]===``?{kind:`usage`,message:`check: expected at most one non-empty path\n${WN}`}:{kind:`run`,target:n[0],render:t.includes(UN)}}async function KN(e){let n=GN(e),r=n.kind===`usage`?{stdout:``,stderr:n.message,code:2}:HN(await LN(n.target??NN(t.env)),n.render);t.stdout.write(r.stdout),t.stderr.write(r.stderr),t.exit(r.code)}const qN=`${lT}${cT}`;function JN(e){return`${qN}⚠ cc-candybar: ${YN(e)}\n`}function YN(e){switch(e.cause){case`version_mismatch`:{let t=e.daemonV===0?`unknown`:`v${e.daemonV}`;return`protocol mismatch (client v${e.clientV} ≠ daemon ${t})`}case`bad_request`:return`daemon rejected request: ${sT(e.message,60)}`;case`render_failed`:return`render failed: ${sT(e.message,60)}`;case`malformed_response`:return`malformed daemon response: ${sT(e.message,60)}`}}function XN(e){switch(e.kind){case`ok`:return{output:e.value,kick:!1,debug:null};case`transient`:return{output:`
201
- `,kick:!0,debug:`daemon unavailable (transient: ${e.cause}: ${e.message}) — kicking daemon`};case`permanent`:return{output:JN(e),kick:!1,debug:`daemon refused request (permanent: ${e.cause}) — not kicking`}}}function ZN(e,t){if(e!==void 0&&/^\+?\d+$/.test(e)){let t=Number(e);if(t>0&&t<=4294967295)return t}if(t&&t>0)return t}const QN=` (fix: click the settings menu (${Zs} by default) › 🧰 tools ▸ 🩺 doctor, then [fix] on the bar)`;function $N({check:e,verdict:t}){return t.ok?`✓ ${e.label}\n`:`✗ ${e.label} — ${t.reason}${t.fix===void 0?``:QN}\n`}function eP(e,t){let n;try{n=sj(e,My(t))}catch(e){return{stdout:``,stderr:`doctor: ${e instanceof Error?e.message:String(e)}\n`,code:2}}let r=Fy(n);return{stdout:r.map($N).join(``),stderr:``,code:+!r.every(e=>e.verdict.ok)}}function tP(e){e.length>0&&(t.stderr.write(`doctor: takes no arguments
201
+ `}function rP(e){let t=typeof e==`string`?e:JSON.stringify(e);return t.length>60?t.slice(0,57)+`…`:t}function iP(e){return e<1e3?`${e}ms`:e<6e4?`${(e/1e3).toFixed(1)}s`:`${Math.floor(e/6e4)}m`}function aP(){let e=sP();return e===null?null:r.readFileSync(e,`utf-8`)}function oP(){let e;try{e=aP()}catch(e){t.stderr.write(`schema: cannot read bundled schema: ${e instanceof Error?e.message:String(e)}\n`),t.exit(2)}e===null&&(t.stderr.write("schema: bundled schema not found (expected schema/cc-candybar.schema.json). Run `pnpm gen:schema` from a source checkout.\n"),t.exit(2)),t.stdout.write(e),t.exit(0)}function sP(){let e=c.join(`schema`,`cc-candybar.schema.json`),n=t.argv[1];if(n===void 0)return null;let i=c.dirname(c.resolve(n));for(;;){let t=c.join(i,e);if(r.existsSync(t))return t;let n=c.dirname(i);if(n===i)return null;i=n}}function cP(e){let t=e.CC_CANDYBAR_CONFIG??``;return t===``?void 0:t}const lP=5e3;function uP(e){let t=`/home/tester`,n=Math.floor(Date.now()/1e3);return{hook_event_name:`Status`,session_id:`test0a1b-2c3d-4e5f-6a7b-8c9d0e1f2a3b`,version:`1.15.0`,home:t,cwd:`${t}/code/cc-candybar/src`,transcript_path:`${t}/.claude/projects/x/test.jsonl`,model:{id:`claude-opus-4-8`,display_name:`Opus 4.8`},workspace:{current_dir:`${t}/code/cc-candybar/src`,project_dir:`${t}/code/cc-candybar`},git:{repoName:`cc-candybar`,repoUrl:`https://github.com/promptctl/cc-candybar`,branch:`main`,sha:`abc1234`,ahead:2,behind:1,staged:3,unstaged:2,untracked:1,conflicts:0,upstream:`origin/main`,stash:1,status:`dirty`,operation:`rebase`,timeSinceCommit:780},session:{cost:.39,tokens:241400},today:{cost:12.5,tokens:34e5},context:{totalTokens:48487,contextLeft:24},metrics:{lastResponseTime:8.2,responseTime:4.2,sessionDuration:930,messageCount:8,linesAdded:512,linesRemoved:88},block:{nativeUtilization:63,resetsAt:n+2*3600},weekly:{percentage:21,resetsAt:n+5*86400},cache:{expiresAt:n+900},tmux:{session:`work`},host:{name:`tester-box`,user:`tester`,ssh:!0},...tO(e),history:{undo:1,redo:1},unsaved:1}}function dP(e,t){let n=xS(e,e),r=CS(n);return r!==null&&t.push(r),n.kind===`file`?n.path:null}async function fP(e,n=t.cwd()){let i=[],a=e===void 0?dP(n,i):c.resolve(vS(e));if(e!==void 0&&a!==null){let e;try{e=r.statSync(a,{throwIfNoEntry:!1})}catch(e){return{kind:`unreadable`,path:a,message:e instanceof Error?e.message:String(e)}}if(e!==void 0&&!e.isFile())return{kind:`unreadable`,path:a,message:`not a file`}}let o=TS(n,n);o!==null&&i.push(o);try{return{kind:`clean`,configPath:a,warnings:i,rendered:await hP(a,n,i)}}catch(e){let t=e;return a!==null&&typeof t==`object`&&t&&typeof t.code==`string`&&t.path===a&&typeof t.message==`string`?{kind:`unreadable`,path:a,message:t.message}:(e instanceof Wo&&i.push(...e.warnings),{kind:`fatal`,configPath:a,message:e instanceof Wo||e instanceof Error?e.message:String(e),warnings:i})}}async function pP(e,t,n){let r=ES(e,YD);n.push(...r.warnings);let i=kS(r,e??`<default>`),a=new oA,o=new Iv(a,i.globals.default_empty_value??``,void 0,new _A);try{let e=Jk(i,o,{cwd:t});n.push(...e.loadWarnings);let r=await o.settled(lP);return r.length>0&&n.push(`source${r.length===1?``:`s`} still running after ${lP} ms, rendered with fallback values: ${r.join(`, `)}`),{config:i,compiled:e,store:a,registry:o}}catch(e){throw o.dispose(),e}}function mP({config:e,compiled:t,store:n,registry:r},i,a){let o=new Map;return{rendered:Qk(e,t,n,r,uP(i),$D(i,a),{onSegmentError:(e,t)=>o.set(`segment "${e}"`,t),onRenderWarning:e=>o.set(`globals.palette`,e)},eO(i)),failures:o}}async function hP(e,t,n){let r=await pP(e,t,n),{config:i}=r;try{VE(i);let e=QD(i,()=>null,()=>!1),t=e=>mP(r,e,200),n=t(e),a=t({...e,presetCustomized:!0}),o=[...[...n.failures].map(([e,t])=>`${e}: ${t}`),...[...a.failures].filter(([e])=>!n.failures.has(e)).map(([e,t])=>`${e}: ${t} (under .preset.customized = true)`)];if(o.length>0)throw Error(`config renders with ${o.length} render error${o.length===1?``:`s`} (the daemon would show them on the bar):\n`+o.map(e=>` ${e}`).join(`
202
+ `));return n.rendered}finally{r.registry.dispose()}}function gP(e){return e.map(e=>`warning: ${e}\n`).join(``)}function _P(e,t=!1){switch(e.kind){case`clean`:return{stdout:`✓ ${e.configPath??`bundled default (no config file found)`}: config OK${e.warnings.length>0?` (${e.warnings.length} warning${e.warnings.length===1?``:`s`})`:``}\n`+(t?`${e.rendered}\n`:``),stderr:gP(e.warnings),code:0};case`fatal`:return{stdout:``,stderr:gP(e.warnings)+`✗ ${e.configPath??`<default>`}\n${e.message}\n`,code:1};case`unreadable`:return{stdout:``,stderr:`check: cannot read ${e.path}: ${e.message}\n`,code:2}}}const vP=`--render`,yP=`Usage: cc-candybar check [${vP}] [config-file]\n`;function bP(e){let t=e.filter(e=>e.startsWith(`--`)),n=e.filter(e=>!e.startsWith(`--`)),r=t.filter(e=>e!==vP);return r.length>0?{kind:`usage`,message:`check: unknown option ${r.join(` `)}\n${yP}`}:n.length>1||n[0]===``?{kind:`usage`,message:`check: expected at most one non-empty path\n${yP}`}:{kind:`run`,target:n[0],render:t.includes(vP)}}async function xP(e){let n=bP(e),r=n.kind===`usage`?{stdout:``,stderr:n.message,code:2}:_P(await fP(n.target??cP(t.env)),n.render);t.stdout.write(r.stdout),t.stderr.write(r.stderr),t.exit(r.code)}const SP=`${ET}${TT}`;function CP(e){return`${SP}⚠ cc-candybar: ${wP(e)}\n`}function wP(e){switch(e.cause){case`version_mismatch`:{let t=e.daemonV===0?`unknown`:`v${e.daemonV}`;return`protocol mismatch (client v${e.clientV} ≠ daemon ${t})`}case`bad_request`:return`daemon rejected request: ${wT(e.message,60)}`;case`render_failed`:return`render failed: ${wT(e.message,60)}`;case`malformed_response`:return`malformed daemon response: ${wT(e.message,60)}`}}function TP(e){switch(e.kind){case`ok`:return{output:e.value,kick:!1,debug:null};case`transient`:return{output:`
203
+ `,kick:!0,debug:`daemon unavailable (transient: ${e.cause}: ${e.message}) — kicking daemon`};case`permanent`:return{output:CP(e),kick:!1,debug:`daemon refused request (permanent: ${e.cause}) — not kicking`}}}function EP(e,t){if(e!==void 0&&/^\+?\d+$/.test(e)){let t=Number(e);if(t>0&&t<=4294967295)return t}if(t&&t>0)return t}const DP=` (fix: click the settings menu (${$s} by default) › 🧰 tools ▸ 🩺 doctor, then [fix] on the bar)`;function OP({check:e,verdict:t}){return t.ok?`✓ ${e.label}\n`:`✗ ${e.label} — ${t.reason}${t.fix===void 0?``:DP}\n`}function kP(e,t){let n;try{n=Fj(e,Iy(t))}catch(e){return{stdout:``,stderr:`doctor: ${e instanceof Error?e.message:String(e)}\n`,code:2}}let r=zy(n);return{stdout:r.map(OP).join(``),stderr:``,code:+!r.every(e=>e.verdict.ok)}}function AP(e){e.length>0&&(t.stderr.write(`doctor: takes no arguments
202
204
  Usage: cc-candybar doctor
203
- `),t.exit(2));let n=eP(nj(),t.env);t.stdout.write(n.stdout),t.stderr.write(n.stderr),t.exit(n.code)}function nP(){return ZN(t.env.COLUMNS,t.stderr.columns)}function rP(){return ZN(t.env.LINES,t.stderr.rows)}const iP=[`SSH_CONNECTION`,`SSH_CLIENT`,`SSH_TTY`],aP=e=>e.some(e=>t.argv.includes(e));function oP(){return iP.some(e=>(t.env[e]??``)!==``)}function sP(){console.log(cy)}async function cP(){try{aP(oy.help)&&(sP(),t.exit(0)),aP(oy.version)&&(console.log(`cc-candybar ${tw}`),t.exit(0));let e=t.argv[2];if(e===`install`&&(await Pw(t.argv.slice(3)),t.exit(0)),e===`install-url-handler`&&(kw(),t.exit(0)),e===`url-handle`){await jw(t.argv[3]);return}if(e===`daemon`){KM();return}if(e===`daemon-stats`&&(await hN(t.argv.slice(3)),t.exit(0)),e===`check`||e===`lint`){await KN(t.argv.slice(3));return}if(e===`schema`){jN();return}if(e===`doctor`){tP(t.argv.slice(3));return}uM(e)&&(await SN(e,t.argv.slice(3)),t.exit(0)),t.stdin.isTTY===!0&&(console.error(`Error: This tool requires input from Claude Code
205
+ `),t.exit(2));let n=kP(Aj(),t.env);t.stdout.write(n.stdout),t.stderr.write(n.stderr),t.exit(n.code)}function jP(){return EP(t.env.COLUMNS,t.stderr.columns)}function MP(){return EP(t.env.LINES,t.stderr.rows)}const NP=[`SSH_CONNECTION`,`SSH_CLIENT`,`SSH_TTY`],PP=e=>e.some(e=>t.argv.includes(e));function FP(){return NP.some(e=>(t.env[e]??``)!==``)}function IP(){console.log(fy)}async function LP(){try{PP(uy.help)&&(IP(),t.exit(0)),PP(uy.version)&&(console.log(`cc-candybar ${vw}`),t.exit(0));let e=t.argv[2];if(e===`install`&&(await Zw(t.argv.slice(3)),t.exit(0)),e===`install-url-handler`&&(Kw(),t.exit(0)),e===`url-handle`){await Jw(t.argv[3]);return}if(e===`daemon`){SN();return}if(e===`daemon-stats`&&(await WN(t.argv.slice(3)),t.exit(0)),e===`check`||e===`lint`){await xP(t.argv.slice(3));return}if(e===`schema`){oP();return}if(e===`doctor`){AP(t.argv.slice(3));return}BM(e)&&(await ZN(e,t.argv.slice(3)),t.exit(0)),t.stdin.isTTY===!0&&(console.error(`Error: This tool requires input from Claude Code
204
206
 
205
207
  cc-candybar is designed to be used as a Claude Code statusLine command.
206
208
  It reads hook data from stdin and outputs formatted statusline.
@@ -216,4 +218,4 @@ Add to ~/.claude/settings.json:
216
218
  Run with --help for more options.
217
219
 
218
220
  To test output manually:
219
- echo '{"session_id":"test-session","workspace":{"project_dir":"/path/to/project"},"model":{"id":"claude-sonnet-4-5","display_name":"Claude"}}' | cc-candybar --style=powerline`),t.exit(1)),D(`Working directory: ${t.cwd()}`),D(`Process args:`,t.argv);let r=await n(t.stdin);D(`Received hook data:`,JSON.stringify(r,null,2)),r||(console.error(`Error: No input data received from stdin`),sP(),t.exit(1));let i=XN(await HS(r,t.argv,t.cwd(),{termCols:nP(),termRows:rP(),ssh:oP(),tmux:My(t.env),configEnv:NN(t.env)}));i.debug!==null&&D(i.debug),i.kick&&dC(),t.stdout.write(i.output),t.exit(0)}catch(e){let n=e instanceof Error?e.message:String(e);console.error(`Error generating statusline:`,n),t.exit(1)}}cP();export{};
221
+ echo '{"session_id":"test-session","workspace":{"project_dir":"/path/to/project"},"model":{"id":"claude-sonnet-4-5","display_name":"Claude"}}' | cc-candybar --style=powerline`),t.exit(1)),D(`Working directory: ${t.cwd()}`),D(`Process args:`,t.argv);let r=await n(t.stdin);D(`Received hook data:`,JSON.stringify(r,null,2)),r||(console.error(`Error: No input data received from stdin`),IP(),t.exit(1));let i=TP(await nC(r,t.argv,t.cwd(),{termCols:jP(),termRows:MP(),ssh:FP(),tmux:Iy(t.env),configEnv:cP(t.env)}));i.debug!==null&&D(i.debug),i.kick&&TC(),t.stdout.write(i.output),t.exit(0)}catch(e){let n=e instanceof Error?e.message:String(e);console.error(`Error generating statusline:`,n),t.exit(1)}}LP();export{};