@promptctl/cc-candybar 1.109.1 → 1.111.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
@@ -21,39 +21,39 @@ import{createRequire as e}from"node:module";import t from"node:process";import{j
21
21
  `,this._tabSize=t?.tabSize??8,this._noWrap=t?.noWrap??!1}get plain(){return this._text}set plain(e){let t=Ci(e);this._text=t;let n=t.length;this._spans=this._spans.map(e=>e.end>n?new Mi(e.start,Math.min(e.end,n),e.style):e).filter(e=>e.start<n)}get length(){return this._text.length}get cellLength(){return j(this._text)}get hasContent(){return this._text.length>0}get style(){return this._style}set style(e){this._style=Oi(e)}get justify(){return this._justify}set justify(e){this._justify=e}get overflow(){return this._overflow}set overflow(e){this._overflow=e}get end(){return this._end}set end(e){this._end=e}get noWrap(){return this._noWrap}set noWrap(e){this._noWrap=e}get spans(){return this._spans}resolvedStyle(e){return Ai(e,this._style)}edgeStyle(e,t){let n=this.resolvedStyle(t);if(this._text.length===0)return n;let r=e===`left`?0:this._text.length-1,i=n;for(let e of this._spans)e.start<=r&&r<e.end&&(i=i.add(Ai(t,e.style)));return i}append(t,n){if(t instanceof e){if(n!==void 0)throw Error(`Style argument must not be provided when appending RichText`);let e=this._text.length;this._text+=t._text,this._addSpan(e,this._text.length,t._style);for(let n of t._spans)this._spans.push(n.move(e));return this}let r=Ci(t),i=this._text.length;return this._text+=r,this._addSpan(i,this._text.length,n??``),this}contains(t){let n=t instanceof e?t._text:t;return this._text.includes(n)}at(t){let n=t<0?this._text.length+t:t;return this._text[n]===void 0?new e(``):this.slice(n,n+1)}slice(e,t){let n=this._text,r=n.length,i=e??0,a=t??r,o=i<0?Math.max(0,r+i):Math.min(i,r),s=a<0?Math.max(0,r+a):Math.min(a,r);if(o>=s)return this.blankCopy();let c=n.slice(o,s),l=this.blankCopy(c);for(let e of this._spans){let t=Math.max(e.start,o)-o,n=Math.min(e.end,s)-o;t<n&&l._spans.push(new Mi(t,n,e.style))}return l}_addSpan(e,t,n){let r=Oi(n);ki(r)||this._spans.push(new Mi(e,t,r))}stylize(e,t,n){let r=this._text.length,i=t===void 0?0:t<0?r+t:t,a=n===void 0?r:n<0?r+n:n;if(i>=a||i>=r||a<=0)return this;let o=Math.max(0,i),s=Math.min(r,a);return this._addSpan(o,s,e),this}highlightRegex(e,t){let n=this._text,r=0,i=e.flags.includes(`g`)?e.flags:e.flags+`g`,a=new RegExp(e.source,i),o;for(;(o=a.exec(n))!==null;){if(o[0].length===0){a.lastIndex++;continue}if(o.groups){let e=0;for(let[t,n]of Object.entries(o.groups))if(n!==void 0){let r=o[0].indexOf(n,e);if(r>=0){let i=o.index+r;this._addSpan(i,i+n.length,t),e=r+n.length}}r++;continue}this._addSpan(o.index,o.index+o[0].length,t??``),r++}return r}highlightWords(e,t,n){let r=n?.caseSensitive!==!1,i=0;for(let n of e){if(n.length===0)continue;let e=n.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),a=r?`g`:`gi`,o=RegExp(`\\b${e}\\b`,a),s;for(;(s=o.exec(this._text))!==null;)this._addSpan(s.index,s.index+s[0].length,t),i++}return i}copy(){let t=new e(this._text,{style:this._style,justify:this._justify,overflow:this._overflow,end:this._end,tabSize:this._tabSize,noWrap:this._noWrap});return t._spans=this._spans.slice(),t}blankCopy(t){return new e(t??``,{style:this._style,justify:this._justify,overflow:this._overflow,end:this._end,tabSize:this._tabSize,noWrap:this._noWrap})}split(e){let t=e??`
22
22
  `,n=this._text,r=[],i=0;for(;;){let e=n.indexOf(t,i);if(e===-1){r.push(this.slice(i));break}r.push(this.slice(i,e)),i=e+t.length}return r}divide(e){if(e.length===0)return[this.copy()];let t=[],n=0;for(let r of e)t.push(this.slice(n,r)),n=r;return t.push(this.slice(n)),t}rstrip(){let e=this._text.replace(/\s+$/,``);return e.length<this._text.length&&(this.plain=e),this}pad(e,t){let n=(t??` `).repeat(e);return this._spans=this._spans.map(t=>t.move(e)),this._text=n+this._text+n,this}padLeft(e,t){let n=t??` `;return this._spans=this._spans.map(t=>t.move(e)),this._text=n.repeat(e)+this._text,this}padRight(e,t){let n=t??` `;return this._text+=n.repeat(e),this}setLength(e){return this._text.length<e?this._text+=` `.repeat(e-this._text.length):this._text.length>e&&(this.plain=this._text.slice(0,e)),this}extendStyle(e){let t=this._text.length;return this._text+=` `.repeat(e),this._spans=this._spans.map(n=>n.end===t?n.extend(e):n),this}truncate(e,t){if(this.cellLength<=e)return this;let n=t?.mode??`right`,r=M(e),i=qt(t?.marker??`…`,r),a=Vt(r-j(i));if(n===`right`)return this._cropRightTo(a),i&&(this._text+=i),this;if(n===`left`)return this._cropLeftTo(a),i&&(this._spans=this._spans.map(e=>e.move(i.length)),this._text=i+this._text),this;let o=Vt(Math.floor(a/2)),s=Vt(a-o),c=qt(this._text,o).length,l=this._text.length-Jt(this._text,s).length,u=this._text.slice(0,c),d=this._text.slice(l),f=c,p=l,m=i.length-(p-f),h=[];for(let e of this._spans)e.end<=f?h.push(e):e.start>=p?h.push(e.move(m)):(e.start<f&&h.push(new Mi(e.start,f,e.style)),e.end>p&&h.push(new Mi(p+m,e.end+m,e.style)));return this._text=u+i+d,this._spans=h,this}_cropRightTo(e){this.plain=qt(this._text,e)}_cropLeftTo(e){let t=this._text.length-Jt(this._text,e).length,n=-t;this._spans=this._spans.map(e=>{if(!(e.end<=t))return new Mi(Math.max(0,e.start+n),e.end+n,e.style)}).filter(e=>e!==void 0),this._text=this._text.slice(t)}align(e,t){let n=this.cellLength;if(n>=t)return this;let r=t-n;switch(e){case`left`:this.padRight(r);break;case`right`:this.padLeft(r);break;case`center`:{let e=Math.floor(r/2),t=r-e;this.padLeft(e),this.padRight(t);break}}return this}removeSuffix(e){return this._text.endsWith(e)&&(this.plain=this._text.slice(0,-e.length)),this}appendTokens(e){for(let[t,n]of e)this.append(t,n);return this}static assemble(t,n){let r=new e(``,{style:n?.style});for(let n of t)if(typeof n==`string`)r.append(n);else if(n instanceof e)r.append(n);else{let[e,t]=n;r.append(e,t)}return r}static styled(t,n){let r=new e(t);return r.stylize(n),r}static fromFragments(t,n){let r=new e(``,{end:n?.end??``});for(let e of t)r.append(e);return r}*render(e){let t=this._expandTabs(this._text),n=this.resolvedStyle(e),r=this._buildSegments(t,n,e),i=B.splitLines(r),a=M(di(e,this).maxWidth),o=this._overflow??e.overflow??`fold`,s=this._noWrap||(e.noWrap??!1),c=o===`ignore`?M(1/0):a,l=s?M(1/0):c,u=o===`ignore`?void 0:this._justify??e.justify,d=si(e,`…`,`.`),f=t.endsWith(`
23
23
  `);for(let e=0;e<i.length;e+=1){let t=i[e],r=e<i.length-1||f,s=mi(Ti(t),l,{fold:o===`fold`}),p=B.divide(t,s),m=this._justifyLines(p.map(e=>[...this._fitLine(e,c,o,d)]),a,n,u);for(let e=0;e<m.length;e+=1)yield*m[e],(e<m.length-1||r)&&(yield B.line())}this._end&&(yield new B(this._end))}measure(e){let t=this._expandTabs(this._text).split(`
24
- `),n=0,r=0;for(let e of t){let t=j(e);n=Math.max(n,t);let i=e.split(/\s+/);for(let e of i)e.length>0&&(r=Math.max(r,j(e)))}let i=M(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=Ai(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 B(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=B.adjustLineLength(e,B.getLineLength(e)-Ei(e),void 0,!1),i=Math.max(t-B.getLineLength(r),0),a=n===`center`?Math.floor(i/2):i;a>0&&(yield new B(` `.repeat(a))),yield*r;let o=i-a;o>0&&(yield new B(` `.repeat(o)));break}case`left`:yield*B.adjustLineLength(e,Math.max(t,B.getLineLength(e)));break;default:yield*e;break}}_fillLine(e,t,n){let r=Ti(e),i=r.split(` `);r.endsWith(` `)&&i.pop();let a=i.length-1,o=Array(a).fill(1),s=i.reduce((e,t)=>e+j(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+=j(i[e]),c.push(l),l+=1,e<a&&c.push(l);let u=B.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 B(` `.repeat(o[e]),i.isNull?void 0:i))}return f}*_fitLine(e,t,n,r){let i=B.getLineLength(e);if(i-Ei(e)<=t){yield*B.adjustLineLength(e,Math.min(i,t),void 0,!1);return}if(n===`ellipsis`&&t>0){yield*B.adjustLineLength(e,t-1,void 0,!1),yield new B(r);return}yield*B.adjustLineLength(e,t,void 0,!1)}},H=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 B.line()}}};const Ni={*render(e){}};function Pi(e){return{render:e}}function Fi(e){return new z({color:e.bgcolor})}function Ii(e){return e!==void 0&&!e.isDefault?e:void 0}function Li(e){return new z({bgcolor:e}).drawnColors().bgcolor}function*Ri(e,t){e!==``&&(yield new B(e,new z({color:Li(t)})))}function zi(e,t){let{color:n,bgcolor:r}=e.drawnColors(t??P.TRUECOLOR);if(n===void 0||r===void 0)return!1;let i=n.fixedValue,a=r.fixedValue;return i!==void 0&&a!==void 0?Xn.fromRgba(i).deltaE(Xn.fromRgba(a))<.04:n.number===r.number}const Bi=Object.freeze({glyph:``,divider:``,lead:``,tail:``}),Vi=Object.freeze({glyph:`>`,divider:`>`,lead:``,tail:`>`}),Hi=({glyph:e,divider:t,lead:n,tail:r})=>e+t+n+r;var Ui=class{_glyphs;constructor(e=Bi){this._glyphs=e}join(e,t){let n=this._glyphs;return Pi(function*(r){let{glyph:i,divider:a,lead:o,tail:s}=si(r,n,Vi,Hi),c=e?.edgeStyle(`right`,r),l=Ii(c?.bgcolor),u=Ii(t?.edgeStyle(`left`,r).bgcolor);if(l===void 0){u!==void 0&&(yield*Ri(o,u));return}if(u===void 0){yield*Ri(s,l);return}let d=new z({color:Li(l),bgcolor:u});yield zi(d,r.colorSystem)?new B(a,new z({color:c?.color,bgcolor:l})):new B(i,d)})}};const Wi={left:`(`,right:`)`},Gi=({left:e,right:t})=>e+t;var Ki=class{_caps;_separator;constructor(e){this._caps={left:e?.left??``,right:e?.right??``},this._separator=e?.separator??` `}*_emit(e,t,n){let r=si(n,this._caps,Wi,Gi),i=si(n,this._separator,` `);if(!(e===null&&t===null)){if(e===null){yield new B(r.left,Fi(t.edgeStyle(`left`,n)));return}if(t===null){yield new B(r.right,Fi(e.edgeStyle(`right`,n)));return}yield new B(r.right,Fi(e.edgeStyle(`right`,n))),i.length>0&&(yield new B(i)),yield new B(r.left,Fi(t.edgeStyle(`left`,n)))}}join(e,t){return Pi(n=>this._emit(e,t,n))}},qi=class{_separator;_style;constructor(e){this._separator=e?.separator??` | `,this._style=e?.style??z.parse(`dim`)}join(e,t){if(e===null||t===null)return Ni;let n=this._separator,r=this._style;return Pi(e=>[new B(si(e,n,` | `),r)])}};function Ji(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 Yi(e,t){let n=[];for(let r of e){let e=Ji(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(bi(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=hn(i===void 0?P.TRUECOLOR:i,r),o={colorSystem:t?.noColor?null:a.colorSystem,hyperlinks:t?.hyperlinks??a.hyperlinks},s={maxWidth:n,isTerminal:!1,asciiOnly:t?.asciiOnly??!1,onStyleError:t?.onStyleError,colorSystem:o.colorSystem};return Yi(e.render(s),o)}function Zi(e,t){let n=[...e.render(t)],r=0;for(let e of n)r+=e.cellLength;return{segments:n,width:r}}const Qi={segments:[],width:0},$i={left:()=>0,justify:()=>0,center:e=>Math.floor(e/2),right:e=>e};function ea(e,t){return $i[e](t)}function ta(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 na=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=>Zi(t,e)),o=n=>i?Zi(i.join(null,t[n]),e):Qi,s=n=>i?Zi(i.join(t[n],null),e):Qi,c=(n,r)=>i?Zi(i.join(t[n],t[r]),e):Qi,l=[],u=null,d=r>0?{segments:[new B(` `.repeat(r))],width:r}:Qi;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=ea(p,i),o=ta(p,r,i,t.itemBlockIndices.length),s=new Map;t.itemBlockIndices.forEach((e,t)=>s.set(e,t)),a>0&&(yield new B(` `.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 B(` `.repeat(e)))}yield*t.blocks[e].segments}yield B.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=Zi(t[i],e).width,o=this.joiner?Zi(this.joiner.join(null,t[i]),e).width:0,s=this.joiner?Zi(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+=Zi(this.joiner.join(t[i-1],t[i]),e).width))}return this.joiner&&(r+=Zi(this.joiner.join(null,t[0]),e).width,r+=Zi(this.joiner.join(t[t.length-1],null),e).width),{minimum:n,maximum:r}}};const ra=[`primary`,`secondary`,`accent`],ia={accent:[`secondary`,`accent`],duo:[`primary`,`secondary`],mono:[`primary`]},aa=`accent`,oa=[0,.5,1],sa=e=>e.flatMap(e=>oa.map(t=>({hue:e,tone:t}))),ca=sa(ra.filter(e=>Object.values(ia).some(t=>t.includes(e)))),la=e=>{let t=0,n=.5;for(let r=e;r>0;r>>=1,n/=2)t+=n*(r&1);return t},ua=[`van-der-corput`,`golden-angle`,`ends-interleaved`,`monotonic`,`uniform`],da=e=>typeof e==`string`&&ua.includes(e),fa={"van-der-corput":la,"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},pa=e=>fa[e??`van-der-corput`];function ma(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 ha=(e,t)=>Math.floor(e*t),ga=(e,t)=>Math.round(e*t)%t;function _a(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 va(e,t){let n=t.findIndex(e=>e.axis===`cell`),r=n===-1?t:t.slice(0,n);return{hue:_a(e,r.at(-1),ha),tone:_a(oa,t[r.length],ga)}}function ya(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 ba(e,t){let n=xa.get(e);n===void 0&&(n=new Map,xa.set(e,n));let r=`${t.hue}|${t.tone}`,i=n.get(r);if(i!==void 0)return i;let a=Xn.fromRgba(ya(e,t.hue)),o=Xn.fromRgba(ya(e,`surface`)),s=(e,t)=>e.mixAxes(a,{l:t,c:.8,h:1,alpha:0}),c=s(o.mixAxes(Xn.fromRgba(ya(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 xa=new WeakMap,Sa=(e,t,n)=>ba(e,va(t,n)),Ca=2.2;function wa(e,t,n){let r=Ta(e,t,n);if(`refused`in r)throw Error(r.refused);return r.state}function Ta(e,t,n){let r=Ea.get(e);r===void 0&&(r=new Map,Ea.set(e,r));let i=`${t}|${n}`,a=r.get(i);if(a!==void 0)return a;let o=Da(e,t,n);return r.set(i,o),o}const Ea=new WeakMap;function Da(e,t,n){let r=ca.map(t=>ur(ba(e,t),P.TRUECOLOR)),i=Dn(ya(e,`surface`),ya(e,t),.92),a=ya(e,`foreground`),o=r.reduce((e,t)=>cr(e,t,Ca),a),s=[...Array.from({length:13},(e,t)=>Dn(i,a,t/12)),o].find(e=>r.every(t=>on(ur(e,P.TRUECOLOR),t)>=Ca));if(s===void 0)return{refused:`palette "${e.name}": "${t}" cannot clear the ${Ca} state floor even beyond foreground`};let c=lr(s,n,(e,t)=>r.every(n=>on(e,t(n))>=Ca));return c===void 0?{refused:`palette "${e.name}": "${t}" cannot clear the ${Ca} state floor on the colours drawn at depth ${P[n]}`}:{state:c}}const Oa=4.5;function ka(e,t,n){let r=Aa.get(e);r===void 0&&(r=new Map,Aa.set(e,r));let i=`${t.hex}|${n}`,a=r.get(i);if(a!==void 0)return a;let o=sr(t),s=cr([`background`,`foreground`].map(t=>ya(e,t)).reduce((e,t)=>on(o,t)<on(o,e)?t:e),t,Oa,n);return r.set(i,s),s}const Aa=new WeakMap,ja={base:.42,perDepth:.14,cap:.75},Ma={floor:.12,span:.8};function Na(e,t){return ra[(ra.indexOf(e)+t)%ra.length]}const Pa={triggerPlane:.1,nestedPlane:.035,nestedTriggerPlane:.08};function Fa(e,t,n){let r=`${t.hue}|${t.depth}|${n}`,i=Va.get(e);i===void 0&&(i=new Map,Va.set(e,i));let a=i.get(r);if(a!==void 0)return a;let o=wa(e,Na(t.hue,t.depth),n),s=Ba(e,t,o,n),c=lr(La(e,t).plane,n,(e,t)=>s.every(([n,r])=>Ia(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 ${P[n]}`);let l={state:o,plane:c};return i.set(r,l),l}const Ia=(e,t)=>Xn.fromRgba(e).deltaE(Xn.fromRgba(t));function La(e,t){let n=`${t.hue}|${t.depth}`,r=Ra.get(e);r===void 0&&(r=new Map,Ra.set(e,r));let i=r.get(n);if(i!==void 0)return i;let a=za(e,t);return r.set(n,a),a}const Ra=new WeakMap;function za(e,t){let n=wa(e,Na(t.hue,t.depth),P.TRUECOLOR),r=Math.min(ja.cap,ja.base+ja.perDepth*t.depth);return{state:n,plane:Dn(n,ya(e,`background`),r)}}function Ba(e,t,n,r){let{hue:i,depth:a}=t,o=t=>La(e,{hue:i,depth:t}).state,s=t=>La(e,{hue:i,depth:t}).plane,c=e=>ur(e,P.TRUECOLOR),l=s(a),u=(e,t)=>Ia(c(l),c(t))>=e?e:0,d=Na(i,a+1),f=Ta(e,d,r),p=Ta(e,d,P.TRUECOLOR);return[[n,u(Pa.triggerPlane,o(a))],...`state`in f&&`state`in p?[[f.state,u(Pa.nestedTriggerPlane,p.state)]]:[],...a>0?[[Fa(e,{hue:i,depth:a-1},r).plane,u(Pa.nestedPlane,s(a-1))]]:[]]}const Va=new WeakMap;function Ha(e,t,n,r){let i=Fa(e,t,r),a=La(e,t),o=lr(Dn(a.plane,a.state,Ma.floor+Ma.span*ma(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 ${P[r]}, and nothing that depth draws is neither`);return o}const Ua=e=>({kind:`bar`,variation:e,address:[]}),Wa=(e,t)=>({...e,address:[...e.address,t]}),Ga=e=>({kind:`band`,band:e,address:[]});function Ka(e,t,n){switch(t.kind){case`bar`:return{tint:Sa(e,t.variation,t.address),disclosure:{hue:aa,depth:0}};case`band`:return{tint:Ha(e,t.band,t.address,n),disclosure:{hue:t.band.hue,depth:t.band.depth+1}}}}const qa=new Map([[`dark`,`textual-dark`],[`light`,`textual-light`]]);function Ja(e){let t=typeof e==`string`?qa.get(e):void 0;return t===void 0?``:` — "${e}" was retired; write "${t}", the same palette`}const Ya=`textual-dark`;function Xa(e,t,n,r,i){let a=t===null?null:i(t);return e??a??n??r}function Za(){return Tr()}function Qa(){return[`bar`,...Za()]}let $a;function eo(e){return $a??=new Set(Qa()),$a.has(e)}function to(e,t,n,r,i){let a=e=>Object.prototype.hasOwnProperty.call(i,e)?e:null;return Xa(e===void 0?null:a(e),t,a(n??r),r,a)}const no=[`style`,`palette`];function ro(e){return e!==void 0&&e.includes(`{{`)}function io(e,t,n,r,i){let a=ro(n)?{kind:`expression`,source:n}:i(n??r.name);return Xa(e===void 0?null:i(e),t,a,r,i)}function ao(e,t){return e.kind===`decided`?e:t(e.source)}const oo=`none`;function so(e,t){let n=t[e];return n===void 0?null:{kind:`decided`,name:e,value:n}}function co(e,t){return so(e,t)??so(`none`,t)??{kind:`decided`,name:`none`,value:Bn}}function lo(e,t,n,r){return io(e,t,n,co(oo,r),e=>so(e,r))}const uo=[`powerline`,`capsule`,`plain`];function fo(e){return uo.includes(e)}function po(e,t,n){return Xa(e,t,n,`powerline`,e=>fo(e)?e:null)}const mo=[`unicode`,`ascii`],ho=`unicode`,go=[`truecolor`,`256`,`ansi`,`none`];function _o(e){return gn(e)??P.DEFAULT}const vo=Object.keys(ia);function yo(e){return vo.includes(e)}function bo(e,t,n){return Xa(e,t,n,`accent`,e=>yo(e)?e:null)}const xo=`true`,So=`false`,Co=[xo,So],wo={min:0,max:16};function To(e){return e===`true`?!0:e===`false`?!1:null}function Eo(e){if(!/^\d+$/.test(e))return null;let t=Number(e);return t>=wo.min&&t<=wo.max?t:null}function Do(e,t,n){return Xa(e,t,n,!0,To)}function Oo(e,t,n){return Xa(e,t,n,!0,To)}function ko(e,t,n){return Xa(e,t,n,1,Eo)}var Ao=class extends Error{constructor(e,t){super(`${e} (at offset ${t})`),this.reason=e,this.offset=t,this.name=`Json5EditError`}};const jo=/[A-Za-z_$\p{L}]/u,Mo=/[A-Za-z0-9_$\u200C\u200D\p{L}\p{N}]/u,No=/[A-Za-z0-9_$.+\-\p{L}\p{N}]/u,Po=/[\t\n\v\f\r \u00A0\uFEFF\u2028\u2029\p{Zs}]/u;var Fo=class{pos=0;constructor(e){this.text=e}peek(){return this.text[this.pos]??``}fail(e){throw new Ao(e,this.pos)}skipTrivia(){for(;;){let e=this.peek();if(e===``)return;if(Po.test(e))this.pos++;else if(e===`/`&&this.text[this.pos+1]===`/`){let e=this.text.indexOf(`
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&&No.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 nt.default.parse(this.text.slice(e.start,e.end))}catch(t){throw new Ao(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
24
+ `),n=0,r=0;for(let e of t){let t=j(e);n=Math.max(n,t);let i=e.split(/\s+/);for(let e of i)e.length>0&&(r=Math.max(r,j(e)))}let i=M(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=Ai(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 B(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=B.adjustLineLength(e,B.getLineLength(e)-Ei(e),void 0,!1),i=Math.max(t-B.getLineLength(r),0),a=n===`center`?Math.floor(i/2):i;a>0&&(yield new B(` `.repeat(a))),yield*r;let o=i-a;o>0&&(yield new B(` `.repeat(o)));break}case`left`:yield*B.adjustLineLength(e,Math.max(t,B.getLineLength(e)));break;default:yield*e;break}}_fillLine(e,t,n){let r=Ti(e),i=r.split(` `);r.endsWith(` `)&&i.pop();let a=i.length-1,o=Array(a).fill(1),s=i.reduce((e,t)=>e+j(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+=j(i[e]),c.push(l),l+=1,e<a&&c.push(l);let u=B.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 B(` `.repeat(o[e]),i.isNull?void 0:i))}return f}*_fitLine(e,t,n,r){let i=B.getLineLength(e);if(i-Ei(e)<=t){yield*B.adjustLineLength(e,Math.min(i,t),void 0,!1);return}if(n===`ellipsis`&&t>0){yield*B.adjustLineLength(e,t-1,void 0,!1),yield new B(r);return}yield*B.adjustLineLength(e,t,void 0,!1)}},H=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 B.line()}}};const Ni={*render(e){}};function Pi(e){return{render:e}}function Fi(e){return new z({color:e.bgcolor})}function Ii(e){return e!==void 0&&!e.isDefault?e:void 0}function Li(e){return new z({bgcolor:e}).drawnColors().bgcolor}function*Ri(e,t){e!==``&&(yield new B(e,new z({color:Li(t)})))}function zi(e,t){let{color:n,bgcolor:r}=e.drawnColors(t??P.TRUECOLOR);if(n===void 0||r===void 0)return!1;let i=n.fixedValue,a=r.fixedValue;return i!==void 0&&a!==void 0?Xn.fromRgba(i).deltaE(Xn.fromRgba(a))<.04:n.number===r.number}const Bi=Object.freeze({glyph:``,divider:``,lead:``,tail:``}),Vi=Object.freeze({glyph:`>`,divider:`>`,lead:``,tail:`>`}),Hi=({glyph:e,divider:t,lead:n,tail:r})=>e+t+n+r;var Ui=class{_glyphs;constructor(e=Bi){this._glyphs=e}join(e,t){let n=this._glyphs;return Pi(function*(r){let{glyph:i,divider:a,lead:o,tail:s}=si(r,n,Vi,Hi),c=e?.edgeStyle(`right`,r),l=Ii(c?.bgcolor),u=Ii(t?.edgeStyle(`left`,r).bgcolor);if(l===void 0){u!==void 0&&(yield*Ri(o,u));return}if(u===void 0){yield*Ri(s,l);return}let d=new z({color:Li(l),bgcolor:u});yield zi(d,r.colorSystem)?new B(a,new z({color:c?.color,bgcolor:l})):new B(i,d)})}};const Wi={left:`(`,right:`)`},Gi=({left:e,right:t})=>e+t;var Ki=class{_caps;_separator;constructor(e){this._caps={left:e?.left??``,right:e?.right??``},this._separator=e?.separator??` `}*_emit(e,t,n){let r=si(n,this._caps,Wi,Gi),i=si(n,this._separator,` `);if(!(e===null&&t===null)){if(e===null){yield new B(r.left,Fi(t.edgeStyle(`left`,n)));return}if(t===null){yield new B(r.right,Fi(e.edgeStyle(`right`,n)));return}yield new B(r.right,Fi(e.edgeStyle(`right`,n))),i.length>0&&(yield new B(i)),yield new B(r.left,Fi(t.edgeStyle(`left`,n)))}}join(e,t){return Pi(n=>this._emit(e,t,n))}},qi=class{_separator;_style;constructor(e){this._separator=e?.separator??` | `,this._style=e?.style??z.parse(`dim`)}join(e,t){if(e===null||t===null)return Ni;let n=this._separator,r=this._style;return Pi(e=>[new B(si(e,n,` | `),r)])}};function Ji(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 Yi(e,t){let n=[];for(let r of e){let e=Ji(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(bi(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=hn(i===void 0?P.TRUECOLOR:i,r),o={colorSystem:t?.noColor?null:a.colorSystem,hyperlinks:t?.hyperlinks??a.hyperlinks},s={maxWidth:n,isTerminal:!1,asciiOnly:t?.asciiOnly??!1,onStyleError:t?.onStyleError,colorSystem:o.colorSystem};return Yi(e.render(s),o)}function Zi(e,t){let n=[...e.render(t)],r=0;for(let e of n)r+=e.cellLength;return{segments:n,width:r}}const Qi={segments:[],width:0},$i={left:()=>0,justify:()=>0,center:e=>Math.floor(e/2),right:e=>e};function ea(e,t){return $i[e](t)}function ta(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 na=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=>Zi(t,e)),o=n=>i?Zi(i.join(null,t[n]),e):Qi,s=n=>i?Zi(i.join(t[n],null),e):Qi,c=(n,r)=>i?Zi(i.join(t[n],t[r]),e):Qi,l=[],u=null,d=r>0?{segments:[new B(` `.repeat(r))],width:r}:Qi;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=ea(p,i),o=ta(p,r,i,t.itemBlockIndices.length),s=new Map;t.itemBlockIndices.forEach((e,t)=>s.set(e,t)),a>0&&(yield new B(` `.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 B(` `.repeat(e)))}yield*t.blocks[e].segments}yield B.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=Zi(t[i],e).width,o=this.joiner?Zi(this.joiner.join(null,t[i]),e).width:0,s=this.joiner?Zi(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+=Zi(this.joiner.join(t[i-1],t[i]),e).width))}return this.joiner&&(r+=Zi(this.joiner.join(null,t[0]),e).width,r+=Zi(this.joiner.join(t[t.length-1],null),e).width),{minimum:n,maximum:r}}};const ra=[`primary`,`secondary`,`accent`],ia=[0,.5,1],aa=1/0,oa={accent:{hues:[`secondary`,`accent`],run:aa},duo:{hues:[`primary`,`secondary`],run:aa},mono:{hues:[`primary`],run:aa},alt:{hues:[`secondary`,`accent`],run:3}},sa=`accent`,ca=e=>e.flatMap(e=>ia.map(t=>({hue:e,tone:t}))),la=ca(ra.filter(e=>Object.values(oa).some(({hues:t})=>t.includes(e)))),ua=e=>{let t=0,n=.5;for(let r=e;r>0;r>>=1,n/=2)t+=n*(r&1);return t},da=[`van-der-corput`,`golden-angle`,`ends-interleaved`,`monotonic`,`uniform`],fa=e=>typeof e==`string`&&da.includes(e),pa={"van-der-corput":ua,"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},ma=e=>pa[e??`van-der-corput`];function ha(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 ga=(e,t)=>Math.floor(e*t),_a=(e,t)=>Math.round(e*t)%t;function va(e){return e===void 0?0:e.distribution(e.index,e.count)}function ya(e,t,n){let r=e[n(va(t),e.length)];if(r===void 0)throw Error(`vocabularySelect: empty vocabulary`);return r}function ba(e,t){let n=t.findIndex(e=>e.axis===`cell`),r=n===-1?t:t.slice(0,n),i=t[r.length],{hues:a,run:o}=e,s=a[(ga(va(r.at(-1)),a.length)+(i===void 0?0:Math.floor(i.index/o)))%a.length];if(s===void 0)throw Error(`decorEntryFor: empty variation`);return{hue:s,tone:ya(ia,i,_a)}}function xa(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 Sa(e,t){let n=Ca.get(e);n===void 0&&(n=new Map,Ca.set(e,n));let r=`${t.hue}|${t.tone}`,i=n.get(r);if(i!==void 0)return i;let a=Xn.fromRgba(xa(e,t.hue)),o=Xn.fromRgba(xa(e,`surface`)),s=(e,t)=>e.mixAxes(a,{l:t,c:.8,h:1,alpha:0}),c=s(o.mixAxes(Xn.fromRgba(xa(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 Ca=new WeakMap,wa=(e,t,n)=>Sa(e,ba(t,n)),Ta=2.2;function Ea(e,t,n){let r=Da(e,t,n);if(`refused`in r)throw Error(r.refused);return r.state}function Da(e,t,n){let r=Oa.get(e);r===void 0&&(r=new Map,Oa.set(e,r));let i=`${t}|${n}`,a=r.get(i);if(a!==void 0)return a;let o=ka(e,t,n);return r.set(i,o),o}const Oa=new WeakMap;function ka(e,t,n){let r=la.map(t=>ur(Sa(e,t),P.TRUECOLOR)),i=Dn(xa(e,`surface`),xa(e,t),.92),a=xa(e,`foreground`),o=r.reduce((e,t)=>cr(e,t,Ta),a),s=[...Array.from({length:13},(e,t)=>Dn(i,a,t/12)),o].find(e=>r.every(t=>on(ur(e,P.TRUECOLOR),t)>=Ta));if(s===void 0)return{refused:`palette "${e.name}": "${t}" cannot clear the ${Ta} state floor even beyond foreground`};let c=lr(s,n,(e,t)=>r.every(n=>on(e,t(n))>=Ta));return c===void 0?{refused:`palette "${e.name}": "${t}" cannot clear the ${Ta} state floor on the colours drawn at depth ${P[n]}`}:{state:c}}const Aa=4.5;function ja(e,t,n){let r=Ma.get(e);r===void 0&&(r=new Map,Ma.set(e,r));let i=`${t.hex}|${n}`,a=r.get(i);if(a!==void 0)return a;let o=sr(t),s=cr([`background`,`foreground`].map(t=>xa(e,t)).reduce((e,t)=>on(o,t)<on(o,e)?t:e),t,Aa,n);return r.set(i,s),s}const Ma=new WeakMap,Na={base:.42,perDepth:.14,cap:.75},Pa={floor:.12,span:.8};function Fa(e,t){return ra[(ra.indexOf(e)+t)%ra.length]}const Ia={triggerPlane:.1,nestedPlane:.035,nestedTriggerPlane:.08};function La(e,t,n){let r=`${t.hue}|${t.depth}|${n}`,i=Ua.get(e);i===void 0&&(i=new Map,Ua.set(e,i));let a=i.get(r);if(a!==void 0)return a;let o=Ea(e,Fa(t.hue,t.depth),n),s=Ha(e,t,o,n),c=lr(za(e,t).plane,n,(e,t)=>s.every(([n,r])=>Ra(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 ${P[n]}`);let l={state:o,plane:c};return i.set(r,l),l}const Ra=(e,t)=>Xn.fromRgba(e).deltaE(Xn.fromRgba(t));function za(e,t){let n=`${t.hue}|${t.depth}`,r=Ba.get(e);r===void 0&&(r=new Map,Ba.set(e,r));let i=r.get(n);if(i!==void 0)return i;let a=Va(e,t);return r.set(n,a),a}const Ba=new WeakMap;function Va(e,t){let n=Ea(e,Fa(t.hue,t.depth),P.TRUECOLOR),r=Math.min(Na.cap,Na.base+Na.perDepth*t.depth);return{state:n,plane:Dn(n,xa(e,`background`),r)}}function Ha(e,t,n,r){let{hue:i,depth:a}=t,o=t=>za(e,{hue:i,depth:t}).state,s=t=>za(e,{hue:i,depth:t}).plane,c=e=>ur(e,P.TRUECOLOR),l=s(a),u=(e,t)=>Ra(c(l),c(t))>=e?e:0,d=Fa(i,a+1),f=Da(e,d,r),p=Da(e,d,P.TRUECOLOR);return[[n,u(Ia.triggerPlane,o(a))],...`state`in f&&`state`in p?[[f.state,u(Ia.nestedTriggerPlane,p.state)]]:[],...a>0?[[La(e,{hue:i,depth:a-1},r).plane,u(Ia.nestedPlane,s(a-1))]]:[]]}const Ua=new WeakMap;function Wa(e,t,n,r){let i=La(e,t,r),a=za(e,t),o=lr(Dn(a.plane,a.state,Pa.floor+Pa.span*ha(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 ${P[r]}, and nothing that depth draws is neither`);return o}const Ga=e=>({kind:`bar`,variation:e,address:[]}),Ka=(e,t)=>({...e,address:[...e.address,t]}),qa=e=>({kind:`band`,band:e,address:[]});function Ja(e,t,n){switch(t.kind){case`bar`:return{tint:wa(e,t.variation,t.address),disclosure:{hue:sa,depth:0}};case`band`:return{tint:Wa(e,t.band,t.address,n),disclosure:{hue:t.band.hue,depth:t.band.depth+1}}}}const Ya=new Map([[`dark`,`textual-dark`],[`light`,`textual-light`]]);function Xa(e){let t=typeof e==`string`?Ya.get(e):void 0;return t===void 0?``:` — "${e}" was retired; write "${t}", the same palette`}const Za=`textual-dark`;function Qa(e,t,n,r,i){let a=t===null?null:i(t);return e??a??n??r}function $a(){return Tr()}function eo(){return[`bar`,...$a()]}let to;function no(e){return to??=new Set(eo()),to.has(e)}function ro(e,t,n,r,i){let a=e=>Object.prototype.hasOwnProperty.call(i,e)?e:null;return Qa(e===void 0?null:a(e),t,a(n??r),r,a)}const io=[`style`,`palette`];function ao(e){return e!==void 0&&e.includes(`{{`)}function oo(e,t,n,r,i){let a=ao(n)?{kind:`expression`,source:n}:i(n??r.name);return Qa(e===void 0?null:i(e),t,a,r,i)}function so(e,t){return e.kind===`decided`?e:t(e.source)}const co=`none`;function lo(e,t){let n=t[e];return n===void 0?null:{kind:`decided`,name:e,value:n}}function uo(e,t){return lo(e,t)??lo(`none`,t)??{kind:`decided`,name:`none`,value:Bn}}function fo(e,t,n,r){return oo(e,t,n,uo(co,r),e=>lo(e,r))}const po=[`powerline`,`capsule`,`plain`];function mo(e){return po.includes(e)}function ho(e,t,n){return Qa(e,t,n,`powerline`,e=>mo(e)?e:null)}const go=[`unicode`,`ascii`],_o=`unicode`,vo=[`truecolor`,`256`,`ansi`,`none`];function yo(e){return gn(e)??P.DEFAULT}const bo=Object.keys(oa);function xo(e){return bo.includes(e)}function So(e,t,n){return Qa(e,t,n,`accent`,e=>xo(e)?e:null)}const Co=`true`,wo=`false`,To=[Co,wo],Eo={min:0,max:16};function Do(e){return e===`true`?!0:e===`false`?!1:null}function Oo(e){if(!/^\d+$/.test(e))return null;let t=Number(e);return t>=Eo.min&&t<=Eo.max?t:null}function ko(e,t,n){return Qa(e,t,n,!0,Do)}function Ao(e,t,n){return Qa(e,t,n,!0,Do)}function jo(e,t,n){return Qa(e,t,n,1,Oo)}var Mo=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,Po=/[A-Za-z0-9_$\u200C\u200D\p{L}\p{N}]/u,Fo=/[A-Za-z0-9_$.+\-\p{L}\p{N}]/u,Io=/[\t\n\v\f\r \u00A0\uFEFF\u2028\u2029\p{Zs}]/u;var Lo=class{pos=0;constructor(e){this.text=e}peek(){return this.text[this.pos]??``}fail(e){throw new Mo(e,this.pos)}skipTrivia(){for(;;){let e=this.peek();if(e===``)return;if(Io.test(e))this.pos++;else if(e===`/`&&this.text[this.pos+1]===`/`){let e=this.text.indexOf(`
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&&Fo.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 nt.default.parse(this.text.slice(e.start,e.end))}catch(t){throw new Mo(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(jo.test(e)||this.fail(`expected an object key`);this.pos<this.text.length&&Mo.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 Ao(`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 Io(e){let t=new Fo(e),n=t.value();return t.skipTrivia(),t.pos!==e.length&&t.fail(`trailing content after the document`),n}function Lo(e,t){return e.kind===`object`?e.entries.find(e=>e.key===t):void 0}function Ro(e,t){let n=e;for(let e of t)n=n===void 0?void 0:Lo(n,e)?.value;return n}function zo(e,t){return e.slice(t.span.start,t.span.end)}function Bo(e,t){let n=$o(e,t.span.start),r=Vo(t),i=e=>r.some(t=>t.start<e&&e<t.end),a=t.span.start;return zo(e,t).split(`
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&&Po.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 Mo(`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 Ro(e){let t=new Lo(e),n=t.value();return t.skipTrivia(),t.pos!==e.length&&t.fail(`trailing content after the document`),n}function zo(e,t){return e.kind===`object`?e.entries.find(e=>e.key===t):void 0}function Bo(e,t){let n=e;for(let e of t)n=n===void 0?void 0:zo(n,e)?.value;return n}function Vo(e,t){return e.slice(t.span.start,t.span.end)}function Ho(e,t){let n=ts(e,t.span.start),r=Uo(t),i=e=>r.some(t=>t.start<e&&e<t.end),a=t.span.start;return Vo(e,t).split(`
28
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 Vo(e){switch(e.kind){case`object`:return e.entries.flatMap(e=>[e.keySpan,...Vo(e.value)]);case`array`:return e.elements.flatMap(Vo);case`string`:return[e.span];default:return[]}}const Ho=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function Uo(e){return Ho.test(e)?e:JSON.stringify(e)}const Wo={key:Uo,trailingComma:`,`,parse:e=>nt.default.parse(e)},Go={key:e=>JSON.stringify(e),trailingComma:``,parse:e=>JSON.parse(e)};function Ko(e){if(Array.isArray(e))return e.length===0?`[]`:`[\n${e.map(e=>` ${Jo(Ko(e),` `,`
29
+ `)}function Uo(e){switch(e.kind){case`object`:return e.entries.flatMap(e=>[e.keySpan,...Uo(e.value)]);case`array`:return e.elements.flatMap(Uo);case`string`:return[e.span];default:return[]}}const Wo=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function Go(e){return Wo.test(e)?e:JSON.stringify(e)}const Ko={key:Go,trailingComma:`,`,parse:e=>nt.default.parse(e)},qo={key:e=>JSON.stringify(e),trailingComma:``,parse:e=>JSON.parse(e)};function Jo(e){if(Array.isArray(e))return e.length===0?`[]`:`[\n${e.map(e=>` ${Xo(Jo(e),` `,`
30
30
  `)},`).join(`
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])=>` ${Uo(e)}: ${Jo(Ko(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])=>` ${Go(e)}: ${Xo(Jo(t),` `,`
32
32
  `)},`).join(`
33
- `)}\n}`}return JSON.stringify(e)}function qo(e){return e.includes(`\r
33
+ `)}\n}`}return JSON.stringify(e)}function Yo(e){return e.includes(`\r
34
34
  `)?`\r
35
35
  `:`
36
- `}function Jo(e,t,n){return e.split(`
37
- `).join(`${n}${t}`)}function Yo(e,t,n){let[r,...i]=e,a=i.length===0?t:`{\n ${Jo(Yo(i,t,n),` `,`
38
- `)}${n.trailingComma}\n}`;return`${n.key(r)}: ${a}`}function Xo(e,t,n,r){return e.slice(0,t)+r+e.slice(n)}function Zo(e,t){return e.lastIndexOf(`
39
- `,t-1)+1}function Qo(e){return/^[ \t]*$/.test(e)}function $o(e,t){let n=Zo(e,t);return/^[ \t]*/.exec(e.slice(n))[0]}function es(e,t){return Qo(e.slice(Zo(e,t),t))}const ts=/(?:\/\/[^\n]*?)?(\r\n|\n|$)/y;function ns(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++;ts.lastIndex=n;let i=ts.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 rs(e,t){let{commaEnd:n,line:r}=ns(e,t.end);if(es(e,t.start)&&r!==null)return Xo(e,Zo(e,t.start),r.next,``);if(n!==-1){let r=n;for(;r<e.length&&e[r]===` `;)r++;return Xo(e,t.start,r,``)}let i=t.start;for(;i>0&&(e[i-1]===` `||e[i-1]===` `);)i--;return e[i-1]===`,`?Xo(e,i-1,t.end,``):Xo(e,t.start,t.end,``)}function is(e,t,n,r,i){let a=n.commaEnd!==-1,o=a?e:Xo(e,t.end,t.end,`,`),s=n.line.at+ +!a,c=qo(e);return Xo(o,s,s,`${c}${i}${Jo(r,i,c)}${a?`,`:``}`)}function as(e,t,n,r){let i=t.kind===`object`?t.entries:t.elements,a=i[i.length-1],o=$o(e,t.span.start);if(a===void 0){let i=o+` `,a=qo(e);return Xo(e,t.span.start+1,t.span.end-1,`${a}${i}${Jo(n,i,a)}${r.trailingComma}${a}${o}`)}let{commaEnd:s,line:c}=ns(e,a.span.end);if(es(e,a.span.start)&&c!==null){let t=e.slice(Zo(e,a.span.start),a.span.start);return is(e,a.span,{commaEnd:s,line:c},n,t)}let l=s===-1?a.span.end:s;return Xo(e,l,l,`${s===-1?`, `:` `}${n}${s===-1?``:`,`}`)}function os(e,t,n,r){if(t.length===0)throw new Ao(`setValue needs a non-empty path`,0);if(/^\s*$/.test(e)){let i=qo(e);return`{${i} ${Jo(Yo(t,n,r),` `,i)}${r.trailingComma}${i}}${i}`}return ss(e,Io(e),t,n,r)}function ss(e,t,n,r,i){let a=t;for(let t=0;t<n.length;t++){if(a.kind!==`object`)throw new Ao(`cannot set ${n.join(`.`)}: ${n.slice(0,t).join(`.`)||`the document`} is not an object`,a.span.start);let o=Lo(a,n[t]);if(o===void 0)return as(e,a,Yo(n.slice(t),r,i),i);if(t===n.length-1){let t=$o(e,o.keySpan.start);return Xo(e,o.value.span.start,o.value.span.end,Jo(r,t,qo(e)))}a=o.value}throw new Ao(`unreachable: path exhausted`,0)}function cs(e,t,n=0){if(t.length===0)throw new Ao(`deleteValue needs a non-empty path`,0);if(/^\s*$/.test(e))return e;let r=t.slice(0,-1),i=Ro(Io(e),r),a=i===void 0?void 0:Lo(i,t[t.length-1]);if(a===void 0||i?.kind!==`object`)return e;let o=rs(e,a.span);return r.length>n&&i.entries.length===1?cs(o,r,n):o}const ls=[`h`,`v`,`children`];function us(e){if(e.kind===`string`)return e.value;if(e.kind!==`object`)return;let t=Lo(e,`seg`)?.value,n=Lo(e,`kind`)?.value,r=Lo(e,`name`)?.value,i=t?.kind===`string`?t.value:n?.kind===`string`&&n.value===`segment`&&r?.kind===`string`?r.value:void 0;if(i===void 0)return;let a=Lo(e,`id`)?.value;return a?.kind===`string`?a.value:i}function ds(e){return e.kind===`object`?ls.map(t=>Lo(e,t)?.value).filter(e=>e?.kind===`array`):[]}function fs(e){let t=Lo(e,`rows`)?.value;return t?.kind===`object`?t.entries:null}function ps(e){if(e.kind!==`object`)return!0;let t=fs(e);return t===null||t.length>0||e.entries.some(e=>e.key!==`rows`)}function*ms(e,t){yield{node:e,bareAt:t};for(let t of ds(e))for(let e of t.elements)yield*ms(e,null);for(let n of fs(e)??[])yield*ms(n.value,t===null?null:[...t,`rows`,n.key])}function hs(e,t){for(let{node:n}of ms(e,null))if(us(n)===t)return!0;return!1}function gs(e,t,n){let r=Ro(Io(e),t);if(r===void 0)return null;for(let{node:i,bareAt:a}of ms(r,t))if(us(i)===n)return a===null?{text:e,ref:i}:gs(os(e,a,`{ h: [${zo(e,i)}] }`,Wo),t,n);return null}function _s(e,t,n){let r=gs(e,t,n);return r===null?null:rs(r.text,r.ref.span)}function vs(e,t,n,r,i){let a=gs(e,t,r);if(a===null)return null;let{text:o,ref:s}=a,c=n.id===void 0?JSON.stringify(n.seg):`{ seg: ${JSON.stringify(n.seg)}, id: ${JSON.stringify(n.id)} }`,{commaEnd:l,line:u}=ns(o,s.span.end);if(es(o,s.span.start)&&u!==null){let e=o.slice(Zo(o,s.span.start),s.span.start);return i===`after`?is(o,s.span,{commaEnd:l,line:u},c,e):Xo(o,s.span.start,s.span.start,`${c},${qo(o)}${e}`)}let d=zo(o,s),f=i===`before`?`${c}, ${d}`:`${d}, ${c}`;return Xo(o,s.span.start,s.span.end,f)}function ys(e,t,n,r,i){let a=gs(e,t,n);if(a===null)return null;let{text:o,ref:s}=a,c=`{ ${Uo(r)}: ${i} }`;return s.kind===`string`?Xo(o,s.span.start,s.span.end,`{ seg: ${JSON.stringify(s.value)}, settings: ${c} }`):Lo(s,`settings`)===void 0?ss(o,s,[`settings`],c,Wo):ss(o,s,[`settings`,r],i,Wo)}var bs=class extends Error{file;issues;warnings;constructor(e,t,n=[]){super(ws(e,t)),this.name=`ConfigError`,this.file=e,this.issues=t,this.warnings=n}};function U(e,t){let n=0,r;for(let i of t){if(i===``||/^\d+$/.test(i))continue;let t=xs(e,n,i);if(t===-1)return r===void 0?void 0:Ss(e,r);n=t,r=t}return r===void 0?void 0:Ss(e,r)}function xs(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 Ss(e,t){let n=1;for(let r=0;r<t&&r<e.length;r++)e.charCodeAt(r)===10&&n++;return n}function Cs(e,t){try{return Io(t),null}catch(n){if(!(n instanceof Ao))throw n;return`${e}:${Ss(t,n.offset)}: ${n.reason} — the settings menu cannot edit this file until it is fixed`}}function ws(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 Ts=[`vertical`,`horizontal`],Es={vertical:`row`,horizontal:`cell`};function Ds(e){return e.id??e.name}function Os(e){return[...js(e)].flatMap(e=>e.kind===`segment`?[Ds(e)]:[])}function ks(e,t){if(!t.has(e))return e;let n=2;for(;t.has(`${e}-${n}`);)n++;return`${e}-${n}`}function As(e,t){return e.opens===void 0?e:{...e,opens:{...e.opens,body:t(e.opens.body)}}}function*js(e){yield e;for(let t of Fs(e))yield*js(t)}const Ms=(e,t)=>`${e}.children[${t}]`,Ns=e=>`${e}.opens.body`;function*Ps(e,t){if(yield[e,t],e.kind===`container`)for(let[n,r]of e.children.entries())yield*Ps(r,Ms(t,n));else e.opens!==void 0&&(yield*Ps(e.opens.body,Ns(t)))}function Fs(e){return e.kind===`container`?e.children:e.opens===void 0?[]:[e.opens.body]}function Is(e){return e===void 0||`text`in e?`text`:`regex`in e?`regex`:`json`}const Ls=[`ttl`,`watch_file`,`depends_on`,`key`,`never`];function Rs(e){return e.kind!==`literal`&&e.kind!==`input`&&e.kind!==`env`&&e.kind!==`state`}const zs=[`branch`,`sha`,`dirty`,`ahead`,`behind`,`stash`],Bs=[`file`,`shell`,`git`],Vs=`theme`;function Hs(e){return{...e.settings,[Vs]:{label:Vs,domain:`theme`,default:e.palette??`bar`}}}function Us(e){let t=e?.domain;return typeof t==`object`&&`min`in t?t:void 0}function Ws(e,t){return Object.entries(e).flatMap(([n,r])=>{let i=Us(r)?.atLeast;if(i===void 0)return[];let a=t[n],o=t[i];return a>=o?[]:[{setting:n,message:`"${n}" (${a}) is below "${i}" (${o}) — ${r.label} must be at least ${e[i].label}`}]})}function Gs(e,t){let{domain:n}=e;return n===`bool`?typeof t==`boolean`:n===`theme`?typeof t==`string`&&eo(t):`min`in n?typeof t==`number`&&Number.isInteger(t)&&t>=n.min&&t<=n.max:typeof t==`string`&&n.includes(t)}function Ks(e){return String(e)}function qs(e,t){let{domain:n}=e,r=n===`bool`?t===`true`?!0:t===`false`?!1:t:typeof n==`object`&&`min`in n&&/^-?\d+$/.test(t)?Number(t):t;return Gs(e,r)?r:void 0}function Js(e){let{domain:t}=e;return t===`bool`?`true or false`:t===`theme`?`"bar" (the bar's own theme) or an installed theme name`:`min`in t?`an integer from ${t.min} to ${t.max}`:`one of ${t.map(e=>JSON.stringify(e)).join(`, `)}`}const Ys=[`left`,`center`,`right`],Xs=[`right`,`left`,`middle`];function Zs(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 ${W(i)}`,line:U(e.source,[...t.split(`.`),r])}),null)}function Qs(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 ${W(i)}`,line:U(e.source,[...t.split(`.`),`default`])});return}return i}}function $s(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 ${W(i)}`,line:U(e.source,[...t.split(`.`),r])});return}return i}}function ec(e,t,n){let r=$s(e,t,n,`palette`);if(r!==void 0){if(!e.allowedPalettes.has(r)){e.issues.push({path:`${t}.palette`,message:`Unknown palette "${r}"${Ja(r)}. Expected one of: ${[...e.allowedPalettes].sort().join(`, `)}`,line:U(e.source,[...t.split(`.`),`palette`])});return}return r}}function tc(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:U(e.source,[...t.split(`.`),r])});return}return a}}function nc(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function W(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 rc(e,t,n,r){if(!nc(r))return e.issues.push({path:n,message:`${n} must be an object, got ${W(r)}`,line:U(e.source,n.split(`.`))}),null;let i=Object.entries(t.removed??{}).filter(([e])=>r[e]!==void 0);for(let[t,r]of i)sc(e,`${n}.${t}`,`${n}.${t} was removed: ${r}`);return oc(e,n,r,t.noun,new Set(Object.keys(t.fields)),new Set(i.map(([e])=>`${n}.${e}`))),ic(e,t.fields,n,r)}function ic(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 ac=new Set;function oc(e,t,n,r,i,a=ac){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:U(e.source,[...t.split(`.`),o])})}function sc(e,t,n){return e.issues.push({path:t,message:n,line:U(e.source,t.split(`.`))}),null}function cc(e,t,n,r){if(!nc(r))return e.issues.push({path:n,message:`${t.noun} must be an object, got ${W(r)}`,line:U(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:U(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:U(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:U(e.source,n.split(`.`))}),null;let c=o[0];return i[c].parse(e,`${n}.${c}`,r[c])}function lc(e,t,n,r){if(!nc(r))return e.issues.push({path:n,message:`${n} must be an object, got ${W(r)}`,line:U(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 ${W(i)}`,line:U(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:U(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 oc(e,n,r,`${i} ${t.memberNoun} key`,o.keys,l),c}function uc(e,t,n){return{json:wc(Sc(n),e,t),keys:new Set([e,...Object.keys(n)])}}function dc(e){return(...t)=>e()(...t)}function fc(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:U(n.source,o.split(`.`))}),null}return a}}function pc(){return{required:!1,json:{type:`string`},parse:(e,t,n,r)=>$s(e,t,r,n)}}function mc(){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 ${W(i)}`,line:U(e.source,[n])});return}return i}}}}function hc(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:U(e.source,[i])});return}return o}}}}function gc(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:U(e.source,[r])});return}return a}}}}function _c(){return{required:!1,json:{type:`string`},parse:(e,t,n,r)=>ec(e,t,r)}}function vc(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>Zs(e,t,r,n)??void 0}}function yc(e,t){return d(t)?null:`${e} must be an absolute path (\`~\` and relative paths are not expanded), got ${JSON.stringify(t)}`}function bc(){return{required:!0,json:{type:`string`,pattern:`^/`},parse:(e,t,n,r)=>{let i=Zs(e,t,r,n);if(i===null)return;let a=yc(`${t}.${n}`,i);return a===null?i:sc(e,`${t}.${n}`,a)??void 0}}}function xc(e){return{required:!1,json:{enum:[...e]},parse:(t,n,r,i)=>tc(t,n,i,r,e)}}function Sc(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 Cc(e){return Sc(e.fields)}function wc(e,t,n){let r=e,i={[t]:{const:n},...r.properties},a=[t,...r.required??[]];return{...r,properties:i,required:a}}function Tc(e){let t=e.arms;return{anyOf:Object.values(t).map(e=>e.json)}}function Ec(e){let t=e.arms;return{anyOf:Object.entries(t).map(([e,t])=>({type:`object`,properties:{[e]:t.json},required:[e],additionalProperties:!1}))}}const Dc=/^[A-Za-z_][A-Za-z0-9_]*$/;function Oc(e){return`#${e+1}`}const kc={rows:{}};function Ac(e){return`rows`in e}function jc(e){return Object.fromEntries(e.map((e,t)=>[Oc(t),e]))}function Mc(e){if(e.kind===`container`&&e.direction===`vertical`){let{kind:t,direction:n,children:r,...i}=e;return{...i,rows:jc(r)}}let{when:t,...n}=e;return{...t!==void 0&&{when:t},rows:jc([n])}}function Nc(e){let{rows:t,...n}=e;return{kind:`container`,direction:`vertical`,children:Object.values(t),...n}}function Pc(e){return Ac(e)?Nc(e):e}function*Fc(e,t){if(!Ac(e)){yield*Ps(e,t);return}yield[Nc(e),t];for(let[n,r]of Object.entries(e.rows))yield*Ps(r,`${t}.rows.${n}`)}function Ic(e,t){return Ac(e)?{...t,...e,rows:{...t.rows,...e.rows}}:Mc(e)}function Lc(e){if(!Ac(e))return!0;let{rows:t,...n}=e;return Object.values(n).some(e=>e!==void 0)||Object.keys(t).length>0}function Rc(e,t){return{globals:{...t.globals,...e.globals??{}},variables:{...t.variables,...e.variables??{}},segments:Vc(t.segments,zc(t.segments,e.segments??{})),root:Ic(e.root??kc,t.root),actions:{...t.actions,...e.actions??{}},styles:{...t.styles,...e.styles??{}},presets:Vc(t.presets,Bc(t.presets,e.presets??{})),editGlobals:{...t.editGlobals,...e.editGlobals??{}},helpers:{...t.helpers,...e.helpers??{}}}}function zc(e,t){return Object.fromEntries(Object.entries(t).map(([t,n])=>[t,n.settings===void 0?n:{...n,settings:{...e[t]?.settings,...n.settings}}]))}function Bc(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 Vc(e,t){return{...e,...Object.fromEntries(Object.entries(t).map(([t,n])=>[t,{...e[t],...n}]))}}const Hc=`closed`,Uc=`🍫`;function Wc(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 Gc(e,t,n,r){let i=Wc(e,t.length,n);if(i!==void 0)throw Error(i);return t.length===1?t[0]:t[r]}function Kc(e){return e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}function qc(e,t,n,r,i){return{kind:`segment`,name:e,opens:{ref:t,body:n,placement:r},...i!==void 0&&{when:i}}}function Jc(e,...t){return`{{ and ${[e,...t].map(Yc).join(` `)} }}`}function Yc(e){return`(eq .${e.variable} "${Kc(e.member)}")`}function Xc(e,t,n){return`{{ ${Zc(e,t,n)} }}`}function Zc(e,t,n){return`action "${e}" "${Kc(t)}" "${Kc(n)}"`}function Qc(e,t){return{kind:`state`,key:e,default:t}}function $c(e,t){return{set:e,cycle:[Hc,t]}}const el={required:!1,json:{enum:[...go]},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: ${go.join(`, `)}`,line:U(e.source,[...t.split(`.`),n])});return}return tc(e,t,r,n,go)}},tl={required:!1,json:{type:`string`},parse:(e,t,n,r)=>{let i=$s(e,t,r,n);return ro(i)?i:ec(e,t,r)}},nl=/^[^\r\n]*\S[^\r\n]*$/u,rl=RegExp(`^(?:✖|✕)[\\uFE0E\\uFE0F]?$`,`u`),il={required:!1,json:{type:`string`,pattern:nl.source,not:{pattern:rl.source}},parse:(e,t,n,r)=>{let i=$s(e,t,r,n);if(i===void 0||nl.test(i)&&!rl.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:U(e.source,[...t.split(`.`),n])})}};function al(e){return{spec:xc(e),domain:{from:e}}}function ol(){return{spec:mc(),domain:`bool`}}function sl(e){return{spec:e,domain:`text`}}const cl={default_empty_value:sl(pc()),default_separator:sl(pc()),palette:{spec:tl,domain:{from:`themes`}},style:{spec:pc(),domain:{from:`styles`}},preset:{spec:pc(),domain:{from:`presets`}},endcaps:al(uo),variation:al(vo),autoWrap:ol(),padding:{spec:hc(wo),domain:{...wo,step:1}},charset:al(mo),updateNotice:ol(),colorCompatibility:{spec:el,domain:{from:go}},menuGlyph:sl(il)},ll=Object.fromEntries(Object.entries(cl).map(([e,t])=>[e,t.spec]));function ul(e){return cl[e].domain}function dl(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:U(e.source,[...n.split(`.`),r])})}}}function fl(e){return dl(`${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 pl(e){return dl(`${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.`)}function ml(e,t){return{...e,json:{...e.json,not:{pattern:`\\{\\{`}},parse:(n,r,i,a)=>{let o=a[i];if(typeof o==`string`&&ro(o)){n.issues.push({path:`${r}.${i}`,message:`${r}.${i}: a rule is not allowed here — ${t} is decided later than any rule could be settled, so it names a value. Write the rule in globals.${i} (or a preset's globals.${i}) instead.`,line:U(n.source,[...r.split(`.`),i])});return}return e.parse(n,r,i,a)}}}const hl={default_bg:"nothing reads it — a segment with no `bg:` wears the decoration tint of its place in the bar. Delete the key, and author `bg:` on the segments that need a fixed colour.",default_fg:"nothing reads it — a segment with no `fg:` wears text chosen for contrast against its background. Delete the key, and author `fg:` on the segments that need a fixed colour.",default_truncate_marker:'nothing reads it — a segment clipped to its `width:` always ends in "…". Delete the key.',look:`it was renamed "style" — write the same name as style: "<name>"`,progression:`it was renamed "variation", and its values with it: accent (was secondary-accent), duo (was primary-secondary), mono (was primary)`},gl={noun:`globals key`,fields:ll,removed:hl},_l={preset:fl(`a preset`),menuGlyph:pl(`a preset`)},vl={noun:`preset globals key`,fields:{...ll,..._l},removed:hl};function yl(e){return El(e)&&!(e in _l)}const bl={noun:`editGlobals key`,removed:hl,fields:{...ll,preset:fl(`the editGlobals fragment`),menuGlyph:pl(`the editGlobals fragment`),palette:ml(ll.palette,`the editGlobals fragment`),style:ml(ll.style,`the editGlobals fragment`)}};function xl(e,t,n){return n===void 0?{}:rc(e,gl,t,n)??{}}function Sl(e,t,n){return rc(e,vl,t,n)??{}}function Cl(){return Cc(vl)}function wl(e,t,n){return rc(e,bl,t,n)??{}}const Tl=new Set(Object.keys(ll));function El(e){return Tl.has(e)}function Dl(){return[...Tl]}const Ol={padding:1};function kl(e){let t=new Map;for(let[n,r]of Object.entries(Ol)){let i=e[n];t.set(n,typeof i==`number`?i:r)}return t}function Al(e,t,n,r){return n.cache===void 0?(Bs.includes(r)&&e.issues.push({path:`${t}.cache`,message:`${r} variables must declare a cache policy (one of: ${Ls.join(`, `)})`,line:U(e.source,t.split(`.`))}),null):Fl(e,`${t}.cache`,n.cache)}function jl(e,t,n){if(n.cache!==void 0)return Fl(e,`${t}.cache`,n.cache)??void 0}function Ml(e){return{required:!0,json:Rl(),parse:(t,n,r,i)=>Al(t,n,i,e)??void 0}}function Nl(){return{required:!1,json:Rl(),parse:(e,t,n,r)=>jl(e,t,r)}}const Pl={noun:`cache`,arms:{ttl:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`&&Bl(n)?{ttl:n}:sc(e,t,`cache.ttl must be a duration string like "5s", "100ms", "2m", "1h"; got ${G(n)}`)},watch_file:{json:{type:`string`,pattern:`^/`},parse:(e,t,n)=>{if(typeof n!=`string`)return sc(e,t,`cache.watch_file must be a path string, got ${G(n)}`);let r=yc(`cache.watch_file`,n);return r===null?{watch_file:n}:sc(e,t,r)}},depends_on:{json:{type:`array`,items:{type:`string`}},parse:(e,t,n)=>Array.isArray(n)&&n.every(e=>typeof e==`string`)?{depends_on:n}:sc(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}:sc(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}:sc(e,t,`cache.never must be the literal boolean true, got ${G(n)}`)}}};function Fl(e,t,n){return cc(e,Pl,t,n)}const Il={noun:`time-variable cache`,arms:{ttl:Pl.arms.ttl}};function Ll(){return{required:!1,json:Ec(Il),parse:(e,t,n,r)=>r.cache===void 0?void 0:cc(e,Il,`${t}.cache`,r.cache)??void 0}}function Rl(){return Ec(Pl)}const zl=/^(\d+(?:\.\d+)?)(ms|s|m|h)$/;function Bl(e){return zl.test(e)}function Vl(e,t,n){if(n===void 0)return{};if(!nc(n))return e.issues.push({path:t,message:`${t} must be an object, got ${W(n)}`,line:U(e.source,t.split(`.`))}),{};let r={};for(let[i,a]of Object.entries(n)){let n=lc(e,lu,`${t}.${i}`,a);n!==null&&(r[i]=n)}return r}function Hl(){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 ${W(i)}`,line:U(e.source,t.split(`.`))});return}return i}}}function Ul(){return{required:!0,json:{enum:[...zs]},parse:(e,t,n,r)=>{let i=r.field;if(typeof i!=`string`||!zs.includes(i)){e.issues.push({path:`${t}.field`,message:`git field must be one of: ${zs.join(`, `)}, got ${JSON.stringify(i)}`,line:U(e.source,[...t.split(`.`),`field`])});return}return i}}}function Wl(){return{required:!1,json:{type:[`string`,`number`,`boolean`]},parse:(e,t,n,r)=>{let i=r.type;return Qs(e,t,r,i===`number`||i===`boolean`||i===`string`?i:`string`)}}}const Gl={noun:`parse`,arms:{text:{json:{const:!0},parse:(e,t,n)=>n===!0?{text:!0}:sc(e,t,`parse.text must be the literal boolean true, got ${G(n)}`)},regex:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`?Kl(e,t,n):sc(e,t,`parse.regex must be a pattern string, got ${G(n)}`)},json:{json:{const:!0},parse:(e,t,n)=>n===!0?{json:!0}:sc(e,t,`parse.json must be the literal boolean true, got ${G(n)}`)}}};function Kl(e,t,n){let r;try{new RegExp(n),r=RegExp(`${n}|`).exec(``).length-1}catch(n){return sc(e,t,`parse.regex is not a valid regular expression: ${n.message}`)}return r>=1?{regex:n}:sc(e,t,`parse.regex must contain a capture group — its group 1 is the value; got ${JSON.stringify(n)}`)}function ql(){return{required:!1,json:Ec(Gl),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:U(e.source,[...t.split(`.`),`regex`])}),r.parse===void 0?void 0:cc(e,Gl,`${t}.parse`,r.parse)??void 0)}}function Jl(){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)=>nc(r.parse)&&`json`in r.parse?Yl(e,t,r.default):$s(e,t,r,`default`)}}function Yl(e,t,n){if(n!==void 0)return Xl(n)?n:sc(e,`${t}.default`,`${t}.default must be a JSON value (a json-parsed source's document), got ${G(n)}`)??void 0}function Xl(e){return e!==null&&Zl(e)}function Zl(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(Zl);let t=Object.getPrototypeOf(e);return(t===Object.prototype||t===null)&&Object.values(e).every(Zl)}default:return!1}}const Ql={value:Hl(),default:pc()},$l={path:vc(),type:xc([`string`,`number`,`boolean`]),default:Wl()},eu={name:vc(),default:pc()},tu={path:bc(),readMode:xc([`whole`,`first-line`]),parse:ql(),cache:Ml(`file`),default:Jl()},nu={command:vc(),parse:ql(),cache:Ml(`shell`),default:Jl()},ru={template:vc(),cache:Nl(),default:pc()},iu={layout:vc(),cache:Ll(),default:pc()},au={field:Ul(),cache:Ml(`git`),default:pc()},ou={key:vc(),default:pc()},su=`kind`;function cu(e,t){return{...uc(su,e,t),parse:(n,r,i)=>{let a=ic(n,t,r,i);return a===null?null:{kind:e,...a}}}}const lu={tag:su,noun:`source kind`,memberNoun:`variable`,arms:{literal:cu(`literal`,Ql),input:cu(`input`,$l),env:cu(`env`,eu),file:cu(`file`,tu),shell:cu(`shell`,nu),template:cu(`template`,ru),time:cu(`time`,iu),git:cu(`git`,au),state:cu(`state`,ou)}};function uu(){return Tc(lu)}function du(){return{type:`object`,additionalProperties:uu()}}const fu=[`location`,`git`,`model-context`,`cost-limits`,`activity`,`session-tools`],pu=[...fu,`other`],mu={location:`location`,git:`git`,"model-context":`model & context`,"cost-limits":`cost & limits`,activity:`activity`,"session-tools":`session tools`,other:`other`};function hu(e){return e.replace(/[^A-Za-z0-9]+/g,`_`)}const gu=`groups.`,_u=`menus.`,vu=`edit.`,K=`candybar.`,yu=[gu,_u,vu,K];function bu(e){return yu.some(t=>e.startsWith(t))}function xu(e){let t=hu(e);return yu.find(e=>t.startsWith(hu(e)))}function Su(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:U(e.source,[`root`])})}const Cu=new Map([[`gitTaculous`,`gitaculous`],[`git`,`gitaculous`],[`settings.menu`,`candybar.menu`]]);function wu(e){let t=Cu.get(e);return t===void 0?``:` (the built-in segment "${e}" was renamed to "${t}" — update this reference)`}const Tu=/^[A-Za-z_][A-Za-z0-9_]*$/,Eu={pattern:Tu.source},Du={anyOf:[{type:`boolean`},{type:`string`},{type:`integer`}]},Ou={type:`object`,additionalProperties:!1,required:[`label`,`domain`,`default`],properties:{label:{type:`string`,pattern:`^[^\\n\\r]+$`},domain:{anyOf:[{const:`bool`},{type:`array`,items:{type:`string`,pattern:`^[^/\\n\\r]+$`},minItems:1,uniqueItems:!0},{type:`object`,additionalProperties:!1,required:[`min`,`max`],properties:{min:{type:`integer`},max:{type:`integer`},step:{type:`integer`,minimum:1},atLeast:{type:`string`,...Eu}}}]},default:Du}},ku=[`label`,`domain`,`default`],Au=[`min`,`max`,`step`,`atLeast`];function ju(e,t,n){e.issues.push({path:t,message:n,line:U(e.source,t.split(`.`))})}function Mu(e,t,n){if(n===`bool`)return`bool`;if(Array.isArray(n)){let r=n.filter(e=>typeof e==`string`);if(n.length===0||r.length!==n.length)return ju(e,t,`a list domain must be a non-empty list of words, got ${JSON.stringify(n)}`);if(new Set(r).size!==r.length)return ju(e,t,`a list domain names each word once, got ${JSON.stringify(n)}`);let i=r.filter(e=>e===``||e.includes(`/`)||/[\n\r]/.test(e));return i.length>0?ju(e,t,`a list domain's words must be non-empty, slash-free, and newline-free — configure mode writes each on the set-state wire — got ${JSON.stringify(i)}`):r}if(nc(n)){let{min:r,max:i,step:a=1,atLeast:o}=n;return Object.keys(n).filter(e=>!Au.includes(e)).length===0&&Number.isInteger(r)&&Number.isInteger(i)&&r<=i&&Number.isInteger(a)&&a>=1&&(o===void 0||typeof o==`string`)?{min:r,max:i,step:a,...o!==void 0&&{atLeast:o}}:ju(e,t,`a range domain is { min, max, step?, atLeast? } with integers min ≤ max, a whole step ≥ 1, and atLeast naming another range setting, got ${JSON.stringify(n)}`)}return ju(e,t,`domain must be "bool", a list of words, or { min, max }, got ${G(n)}`)}function Nu(e,t,n){if(!nc(n))return ju(e,t,`${t} must be { label, domain, default }, got ${W(n)}`);for(let r of Object.keys(n))ku.includes(r)||ju(e,`${t}.${r}`,`Unknown setting key "${r}". Expected one of: ${ku.join(`, `)}`);let{label:r}=n,i=typeof r==`string`&&r.length>0&&!/[\n\r]/.test(r);i||ju(e,`${t}.label`,`a setting needs a one-line, non-empty "label" — the name its control shows, spliced into a synthesized template string — got ${G(r)}`);let a=Mu(e,`${t}.domain`,n.domain);if(!i||a===void 0)return;let o={label:r,domain:a,default:n.default};return!Pu(n.default)||!Gs(o,n.default)?ju(e,`${t}.default`,`default must be ${Js(o)}, got ${G(n.default)}`):o}function Pu(e){return typeof e==`boolean`||typeof e==`string`||typeof e==`number`}function Fu(){return{required:!1,json:{type:`object`,propertyNames:{...Eu,not:{const:Vs}},additionalProperties:Ou},parse:(e,t,n,r)=>{let i=r[n];if(i===void 0)return;let a=`${t}.${n}`;if(!nc(i))return ju(e,a,`${a} must be an object of name → { label, domain, default }, got ${W(i)}`);let o=Object.create(null);for(let[t,n]of Object.entries(i)){if(!Tu.test(t)){ju(e,`${a}.${t}`,`setting name "${t}" is read as .settings.${t} in a template, so it must be an identifier (letters, digits, _; not starting with a digit)`);continue}if(t===`theme`){ju(e,`${a}.${t}`,`setting "${Vs}" is one every placement already has — its default for this segment is segments.<name>.palette, and a placement sets its own with settings: { ${Vs}: "<theme>" }`);continue}let r=Nu(e,`${a}.${t}`,n);r!==void 0&&(o[t]=r)}return o}}}function Iu(){return{required:!1,json:{type:`string`,minLength:1,pattern:`^[^:/]+$`},parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0)return typeof i==`string`&&i.length>0&&!/[:/]/.test(i)?i:ju(e,`${t}.${n}`,`a placement "id" must be a non-empty string without "/" or ":", got ${G(i)}`)}}}function Lu(){return{required:!1,json:{type:`object`,propertyNames:Eu,additionalProperties:Du},parse:(e,t,n,r)=>{let i=r[n];if(i===void 0)return;let a=`${t}.${n}`;if(!nc(i))return ju(e,a,`a placement's "settings" must be an object of setting name → value, got ${W(i)}`);let o=Object.create(null);for(let[t,n]of Object.entries(i))Pu(n)?o[t]=n:ju(e,`${a}.${t}`,`setting "${t}" must be a boolean, a word, or a number, got ${W(n)}`);return o}}}function Ru(e){return new Set(Object.keys(e.segments).filter(e=>!bu(e)))}function zu(e,t,n){if(t===void 0)return{};if(!nc(t))return e.issues.push({path:`segments`,message:`segments must be an object, got ${W(t)}`,line:U(e.source,[`segments`])}),{};let r={};for(let[i,a]of Object.entries(t)){let t=rc(e,n.has(i)?Gu:Wu,`segments.${i}`,a);t!==null&&(r[i]=t)}return r}function Bu(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>r[n]===void 0?sc(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${wu(t.slice(9))}`)??void 0:Zs(e,t,r,n)??void 0}}function Vu(){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:U(e.source,[...t.split(`.`),n])})}}}}function Hu(){return{required:!1,json:du(),parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0)return Vl(e,`${t}.${n}`,i)}}}const Uu={template:Bu(),description:pc(),group:xc(fu),width:Vu(),justify:xc(Ys),truncate:xc(Xs),bg:pc(),fg:pc(),when:pc(),palette:_c(),vars:Hu(),settings:Fu()},Wu={noun:`segment key`,fields:Uu},Gu={noun:`segment key`,fields:{...Uu,template:pc()}},Ku=`#/definitions/LayoutNode`,qu={kind:`container`,direction:`vertical`,children:[]};function Ju(e){return{required:!0,json:{const:e},parse:()=>e}}function Yu(){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:U(e.source,[`root`])}),``)}}}function Xu(){return{required:!0,json:{enum:[...Ts]},parse:(e,t,n,r)=>{let i=r[n];return typeof i==`string`&&Ts.includes(i)?i:(e.issues.push({path:`${t}.${n}`,message:`a container "direction" must be one of: ${Ts.join(`, `)} (got ${JSON.stringify(i)})`,line:U(e.source,[`root`])}),`vertical`)}}}function Zu(e){return{required:!0,json:{type:`array`,items:{$ref:Ku}},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 ${W(a)}`,line:U(t.source,[`root`])}),[])}}}const Qu={noun:`layout-node key`,fields:{kind:Ju(`segment`),name:Yu(),when:pc(),id:Iu(),settings:Lu()}},$u=()=>xc(ua),ed={noun:`layout-node key`,fields:{kind:Ju(`container`),direction:Xu(),children:Zu(dc(()=>ad)),when:pc(),distribution:$u()}};function td(){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:U(e.source,[`root`])}),``)}}}const nd={noun:`layout-node key`,fields:{seg:td(),when:pc(),id:Iu(),settings:Lu()}},rd={noun:`layout-node key`,fields:{h:Zu(dc(()=>ad)),when:pc(),distribution:$u()}},id={noun:`layout-node key`,fields:{v:Zu(dc(()=>ad)),when:pc(),distribution:$u()}},ad=(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:U(e.source,[`root`])}),qu):{kind:`segment`,name:n};if(!nc(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 ${W(n)}`,line:U(e.source,[`root`])}),qu;if(n.kind===`container`)return rc(e,ed,t,n)??qu;if(n.kind===`segment`)return rc(e,Qu,t,n)??qu;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 Xo(e,t,n){return e.split(`
37
+ `).join(`${n}${t}`)}function Zo(e,t,n){let[r,...i]=e,a=i.length===0?t:`{\n ${Xo(Zo(i,t,n),` `,`
38
+ `)}${n.trailingComma}\n}`;return`${n.key(r)}: ${a}`}function Qo(e,t,n,r){return e.slice(0,t)+r+e.slice(n)}function $o(e,t){return e.lastIndexOf(`
39
+ `,t-1)+1}function es(e){return/^[ \t]*$/.test(e)}function ts(e,t){let n=$o(e,t);return/^[ \t]*/.exec(e.slice(n))[0]}function ns(e,t){return es(e.slice($o(e,t),t))}const rs=/(?:\/\/[^\n]*?)?(\r\n|\n|$)/y;function is(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++;rs.lastIndex=n;let i=rs.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 as(e,t){let{commaEnd:n,line:r}=is(e,t.end);if(ns(e,t.start)&&r!==null)return Qo(e,$o(e,t.start),r.next,``);if(n!==-1){let r=n;for(;r<e.length&&e[r]===` `;)r++;return Qo(e,t.start,r,``)}let i=t.start;for(;i>0&&(e[i-1]===` `||e[i-1]===` `);)i--;return e[i-1]===`,`?Qo(e,i-1,t.end,``):Qo(e,t.start,t.end,``)}function os(e,t,n,r,i){let a=n.commaEnd!==-1,o=a?e:Qo(e,t.end,t.end,`,`),s=n.line.at+ +!a,c=Yo(e);return Qo(o,s,s,`${c}${i}${Xo(r,i,c)}${a?`,`:``}`)}function ss(e,t,n,r){let i=t.kind===`object`?t.entries:t.elements,a=i[i.length-1],o=ts(e,t.span.start);if(a===void 0){let i=o+` `,a=Yo(e);return Qo(e,t.span.start+1,t.span.end-1,`${a}${i}${Xo(n,i,a)}${r.trailingComma}${a}${o}`)}let{commaEnd:s,line:c}=is(e,a.span.end);if(ns(e,a.span.start)&&c!==null){let t=e.slice($o(e,a.span.start),a.span.start);return os(e,a.span,{commaEnd:s,line:c},n,t)}let l=s===-1?a.span.end:s;return Qo(e,l,l,`${s===-1?`, `:` `}${n}${s===-1?``:`,`}`)}function cs(e,t,n,r){if(t.length===0)throw new Mo(`setValue needs a non-empty path`,0);if(/^\s*$/.test(e)){let i=Yo(e);return`{${i} ${Xo(Zo(t,n,r),` `,i)}${r.trailingComma}${i}}${i}`}return ls(e,Ro(e),t,n,r)}function ls(e,t,n,r,i){let a=t;for(let t=0;t<n.length;t++){if(a.kind!==`object`)throw new Mo(`cannot set ${n.join(`.`)}: ${n.slice(0,t).join(`.`)||`the document`} is not an object`,a.span.start);let o=zo(a,n[t]);if(o===void 0)return ss(e,a,Zo(n.slice(t),r,i),i);if(t===n.length-1){let t=ts(e,o.keySpan.start);return Qo(e,o.value.span.start,o.value.span.end,Xo(r,t,Yo(e)))}a=o.value}throw new Mo(`unreachable: path exhausted`,0)}function us(e,t,n=0){if(t.length===0)throw new Mo(`deleteValue needs a non-empty path`,0);if(/^\s*$/.test(e))return e;let r=t.slice(0,-1),i=Bo(Ro(e),r),a=i===void 0?void 0:zo(i,t[t.length-1]);if(a===void 0||i?.kind!==`object`)return e;let o=as(e,a.span);return r.length>n&&i.entries.length===1?us(o,r,n):o}const ds=[`h`,`v`,`children`];function fs(e){if(e.kind===`string`)return e.value;if(e.kind!==`object`)return;let t=zo(e,`seg`)?.value,n=zo(e,`kind`)?.value,r=zo(e,`name`)?.value,i=t?.kind===`string`?t.value:n?.kind===`string`&&n.value===`segment`&&r?.kind===`string`?r.value:void 0;if(i===void 0)return;let a=zo(e,`id`)?.value;return a?.kind===`string`?a.value:i}function ps(e){return e.kind===`object`?ds.map(t=>zo(e,t)?.value).filter(e=>e?.kind===`array`):[]}function ms(e){let t=zo(e,`rows`)?.value;return t?.kind===`object`?t.entries:null}function hs(e){if(e.kind!==`object`)return!0;let t=ms(e);return t===null||t.length>0||e.entries.some(e=>e.key!==`rows`)}function*gs(e,t){yield{node:e,bareAt:t};for(let t of ps(e))for(let e of t.elements)yield*gs(e,null);for(let n of ms(e)??[])yield*gs(n.value,t===null?null:[...t,`rows`,n.key])}function _s(e,t){for(let{node:n}of gs(e,null))if(fs(n)===t)return!0;return!1}function vs(e,t,n){let r=Bo(Ro(e),t);if(r===void 0)return null;for(let{node:i,bareAt:a}of gs(r,t))if(fs(i)===n)return a===null?{text:e,ref:i}:vs(cs(e,a,`{ h: [${Vo(e,i)}] }`,Ko),t,n);return null}function ys(e,t,n){let r=vs(e,t,n);return r===null?null:as(r.text,r.ref.span)}function bs(e,t,n,r,i){let a=vs(e,t,r);if(a===null)return null;let{text:o,ref:s}=a,c=n.id===void 0?JSON.stringify(n.seg):`{ seg: ${JSON.stringify(n.seg)}, id: ${JSON.stringify(n.id)} }`,{commaEnd:l,line:u}=is(o,s.span.end);if(ns(o,s.span.start)&&u!==null){let e=o.slice($o(o,s.span.start),s.span.start);return i===`after`?os(o,s.span,{commaEnd:l,line:u},c,e):Qo(o,s.span.start,s.span.start,`${c},${Yo(o)}${e}`)}let d=Vo(o,s),f=i===`before`?`${c}, ${d}`:`${d}, ${c}`;return Qo(o,s.span.start,s.span.end,f)}function xs(e,t,n,r,i){let a=vs(e,t,n);if(a===null)return null;let{text:o,ref:s}=a,c=`{ ${Go(r)}: ${i} }`;return s.kind===`string`?Qo(o,s.span.start,s.span.end,`{ seg: ${JSON.stringify(s.value)}, settings: ${c} }`):zo(s,`settings`)===void 0?ls(o,s,[`settings`],c,Ko):ls(o,s,[`settings`,r],i,Ko)}var Ss=class extends Error{file;issues;warnings;constructor(e,t,n=[]){super(Es(e,t)),this.name=`ConfigError`,this.file=e,this.issues=t,this.warnings=n}};function U(e,t){let n=0,r;for(let i of t){if(i===``||/^\d+$/.test(i))continue;let t=Cs(e,n,i);if(t===-1)return r===void 0?void 0:ws(e,r);n=t,r=t}return r===void 0?void 0:ws(e,r)}function Cs(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 ws(e,t){let n=1;for(let r=0;r<t&&r<e.length;r++)e.charCodeAt(r)===10&&n++;return n}function Ts(e,t){try{return Ro(t),null}catch(n){if(!(n instanceof Mo))throw n;return`${e}:${ws(t,n.offset)}: ${n.reason} — the settings menu cannot edit this file until it is fixed`}}function Es(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 Ds=[`vertical`,`horizontal`],Os={vertical:`row`,horizontal:`cell`};function ks(e){return e.id??e.name}function As(e){return[...Ns(e)].flatMap(e=>e.kind===`segment`?[ks(e)]:[])}function js(e,t){if(!t.has(e))return e;let n=2;for(;t.has(`${e}-${n}`);)n++;return`${e}-${n}`}function Ms(e,t){return e.opens===void 0?e:{...e,opens:{...e.opens,body:t(e.opens.body)}}}function*Ns(e){yield e;for(let t of Ls(e))yield*Ns(t)}const Ps=(e,t)=>`${e}.children[${t}]`,Fs=e=>`${e}.opens.body`;function*Is(e,t){if(yield[e,t],e.kind===`container`)for(let[n,r]of e.children.entries())yield*Is(r,Ps(t,n));else e.opens!==void 0&&(yield*Is(e.opens.body,Fs(t)))}function Ls(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 zs=[`ttl`,`watch_file`,`depends_on`,`key`,`never`];function Bs(e){return e.kind!==`literal`&&e.kind!==`input`&&e.kind!==`env`&&e.kind!==`state`}const Vs=[`branch`,`sha`,`dirty`,`ahead`,`behind`,`stash`],Hs=[`file`,`shell`,`git`],Us=`theme`;function Ws(e){return{...e.settings,[Us]:{label:Us,domain:`theme`,default:e.palette??`bar`}}}function Gs(e){let t=e?.domain;return typeof t==`object`&&`min`in t?t:void 0}function Ks(e,t){return Object.entries(e).flatMap(([n,r])=>{let i=Gs(r)?.atLeast;if(i===void 0)return[];let a=t[n],o=t[i];return a>=o?[]:[{setting:n,message:`"${n}" (${a}) is below "${i}" (${o}) — ${r.label} must be at least ${e[i].label}`}]})}function qs(e,t){let{domain:n}=e;return n===`bool`?typeof t==`boolean`:n===`theme`?typeof t==`string`&&no(t):`min`in n?typeof t==`number`&&Number.isInteger(t)&&t>=n.min&&t<=n.max:typeof t==`string`&&n.includes(t)}function Js(e){return String(e)}function Ys(e,t){let{domain:n}=e,r=n===`bool`?t===`true`?!0:t===`false`?!1:t:typeof n==`object`&&`min`in n&&/^-?\d+$/.test(t)?Number(t):t;return qs(e,r)?r:void 0}function Xs(e){let{domain:t}=e;return t===`bool`?`true or false`:t===`theme`?`"bar" (the bar's own theme) or an installed theme name`:`min`in t?`an integer from ${t.min} to ${t.max}`:`one of ${t.map(e=>JSON.stringify(e)).join(`, `)}`}const Zs=[`left`,`center`,`right`],Qs=[`right`,`left`,`middle`];function $s(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 ${W(i)}`,line:U(e.source,[...t.split(`.`),r])}),null)}function ec(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 ${W(i)}`,line:U(e.source,[...t.split(`.`),`default`])});return}return i}}function tc(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 ${W(i)}`,line:U(e.source,[...t.split(`.`),r])});return}return i}}function nc(e,t,n){let r=tc(e,t,n,`palette`);if(r!==void 0){if(!e.allowedPalettes.has(r)){e.issues.push({path:`${t}.palette`,message:`Unknown palette "${r}"${Xa(r)}. Expected one of: ${[...e.allowedPalettes].sort().join(`, `)}`,line:U(e.source,[...t.split(`.`),`palette`])});return}return r}}function rc(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:U(e.source,[...t.split(`.`),r])});return}return a}}function ic(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function W(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 ac(e,t,n,r){if(!ic(r))return e.issues.push({path:n,message:`${n} must be an object, got ${W(r)}`,line:U(e.source,n.split(`.`))}),null;let i=Object.entries(t.removed??{}).filter(([e])=>r[e]!==void 0);for(let[t,r]of i)lc(e,`${n}.${t}`,`${n}.${t} was removed: ${r}`);return cc(e,n,r,t.noun,new Set(Object.keys(t.fields)),new Set(i.map(([e])=>`${n}.${e}`))),oc(e,t.fields,n,r)}function oc(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 sc=new Set;function cc(e,t,n,r,i,a=sc){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:U(e.source,[...t.split(`.`),o])})}function lc(e,t,n){return e.issues.push({path:t,message:n,line:U(e.source,t.split(`.`))}),null}function uc(e,t,n,r){if(!ic(r))return e.issues.push({path:n,message:`${t.noun} must be an object, got ${W(r)}`,line:U(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:U(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:U(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:U(e.source,n.split(`.`))}),null;let c=o[0];return i[c].parse(e,`${n}.${c}`,r[c])}function dc(e,t,n,r){if(!ic(r))return e.issues.push({path:n,message:`${n} must be an object, got ${W(r)}`,line:U(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 ${W(i)}`,line:U(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:U(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 cc(e,n,r,`${i} ${t.memberNoun} key`,o.keys,l),c}function fc(e,t,n){return{json:Ec(wc(n),e,t),keys:new Set([e,...Object.keys(n)])}}function pc(e){return(...t)=>e()(...t)}function mc(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:U(n.source,o.split(`.`))}),null}return a}}function hc(){return{required:!1,json:{type:`string`},parse:(e,t,n,r)=>tc(e,t,r,n)}}function gc(){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 ${W(i)}`,line:U(e.source,[n])});return}return i}}}}function _c(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:U(e.source,[i])});return}return o}}}}function vc(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:U(e.source,[r])});return}return a}}}}function yc(){return{required:!1,json:{type:`string`},parse:(e,t,n,r)=>nc(e,t,r)}}function bc(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>$s(e,t,r,n)??void 0}}function xc(e,t){return d(t)?null:`${e} must be an absolute path (\`~\` and relative paths are not expanded), got ${JSON.stringify(t)}`}function Sc(){return{required:!0,json:{type:`string`,pattern:`^/`},parse:(e,t,n,r)=>{let i=$s(e,t,r,n);if(i===null)return;let a=xc(`${t}.${n}`,i);return a===null?i:lc(e,`${t}.${n}`,a)??void 0}}}function Cc(e){return{required:!1,json:{enum:[...e]},parse:(t,n,r,i)=>rc(t,n,i,r,e)}}function wc(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 Tc(e){return wc(e.fields)}function Ec(e,t,n){let r=e,i={[t]:{const:n},...r.properties},a=[t,...r.required??[]];return{...r,properties:i,required:a}}function Dc(e){let t=e.arms;return{anyOf:Object.values(t).map(e=>e.json)}}function Oc(e){let t=e.arms;return{anyOf:Object.entries(t).map(([e,t])=>({type:`object`,properties:{[e]:t.json},required:[e],additionalProperties:!1}))}}const kc=/^[A-Za-z_][A-Za-z0-9_]*$/;function Ac(e){return`#${e+1}`}const jc={rows:{}};function Mc(e){return`rows`in e}function Nc(e){return Object.fromEntries(e.map((e,t)=>[Ac(t),e]))}function Pc(e){if(e.kind===`container`&&e.direction===`vertical`){let{kind:t,direction:n,children:r,...i}=e;return{...i,rows:Nc(r)}}let{when:t,...n}=e;return{...t!==void 0&&{when:t},rows:Nc([n])}}function Fc(e){let{rows:t,...n}=e;return{kind:`container`,direction:`vertical`,children:Object.values(t),...n}}function Ic(e){return Mc(e)?Fc(e):e}function*Lc(e,t){if(!Mc(e)){yield*Is(e,t);return}yield[Fc(e),t];for(let[n,r]of Object.entries(e.rows))yield*Is(r,`${t}.rows.${n}`)}function Rc(e,t){return Mc(e)?{...t,...e,rows:{...t.rows,...e.rows}}:Pc(e)}function zc(e){if(!Mc(e))return!0;let{rows:t,...n}=e;return Object.values(n).some(e=>e!==void 0)||Object.keys(t).length>0}function Bc(e,t){return{globals:{...t.globals,...e.globals??{}},variables:{...t.variables,...e.variables??{}},segments:Uc(t.segments,Vc(t.segments,e.segments??{})),root:Rc(e.root??jc,t.root),actions:{...t.actions,...e.actions??{}},styles:{...t.styles,...e.styles??{}},presets:Uc(t.presets,Hc(t.presets,e.presets??{})),editGlobals:{...t.editGlobals,...e.editGlobals??{}},helpers:{...t.helpers,...e.helpers??{}}}}function Vc(e,t){return Object.fromEntries(Object.entries(t).map(([t,n])=>[t,n.settings===void 0?n:{...n,settings:{...e[t]?.settings,...n.settings}}]))}function Hc(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 Uc(e,t){return{...e,...Object.fromEntries(Object.entries(t).map(([t,n])=>[t,{...e[t],...n}]))}}const Wc=`closed`,Gc=`🍫`;function Kc(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 qc(e,t,n,r){let i=Kc(e,t.length,n);if(i!==void 0)throw Error(i);return t.length===1?t[0]:t[r]}function Jc(e){return e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}function Yc(e,t,n,r,i){return{kind:`segment`,name:e,opens:{ref:t,body:n,placement:r},...i!==void 0&&{when:i}}}function Xc(e,...t){return`{{ and ${[e,...t].map(Zc).join(` `)} }}`}function Zc(e){return`(eq .${e.variable} "${Jc(e.member)}")`}function Qc(e,t,n){return`{{ ${$c(e,el(t),el(n))} }}`}function $c(e,t,n){return`action "${e}" ${t} ${n}`}function el(e){return`"${Jc(e)}"`}function tl(e,t){return{kind:`state`,key:e,default:t}}function nl(e,t){return{set:e,cycle:[Wc,t]}}const rl={required:!1,json:{enum:[...vo]},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: ${vo.join(`, `)}`,line:U(e.source,[...t.split(`.`),n])});return}return rc(e,t,r,n,vo)}},il={required:!1,json:{type:`string`},parse:(e,t,n,r)=>{let i=tc(e,t,r,n);return ao(i)?i:nc(e,t,r)}},al=/^[^\r\n]*\S[^\r\n]*$/u,ol=RegExp(`^(?:✖|✕)[\\uFE0E\\uFE0F]?$`,`u`),sl={required:!1,json:{type:`string`,pattern:al.source,not:{pattern:ol.source}},parse:(e,t,n,r)=>{let i=tc(e,t,r,n);if(i===void 0||al.test(i)&&!ol.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:U(e.source,[...t.split(`.`),n])})}};function cl(e){return{spec:Cc(e),domain:{from:e}}}function ll(){return{spec:gc(),domain:`bool`}}function ul(e){return{spec:e,domain:`text`}}const dl={default_empty_value:ul(hc()),default_separator:ul(hc()),palette:{spec:il,domain:{from:`themes`}},style:{spec:hc(),domain:{from:`styles`}},preset:{spec:hc(),domain:{from:`presets`}},endcaps:cl(po),variation:cl(bo),autoWrap:ll(),padding:{spec:_c(Eo),domain:{...Eo,step:1}},charset:cl(go),updateNotice:ll(),colorCompatibility:{spec:rl,domain:{from:vo}},menuGlyph:ul(sl)},fl=Object.fromEntries(Object.entries(dl).map(([e,t])=>[e,t.spec]));function pl(e){return dl[e].domain}function ml(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:U(e.source,[...n.split(`.`),r])})}}}function hl(e){return ml(`${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 gl(e){return ml(`${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.`)}function _l(e,t){return{...e,json:{...e.json,not:{pattern:`\\{\\{`}},parse:(n,r,i,a)=>{let o=a[i];if(typeof o==`string`&&ao(o)){n.issues.push({path:`${r}.${i}`,message:`${r}.${i}: a rule is not allowed here — ${t} is decided later than any rule could be settled, so it names a value. Write the rule in globals.${i} (or a preset's globals.${i}) instead.`,line:U(n.source,[...r.split(`.`),i])});return}return e.parse(n,r,i,a)}}}const vl={default_bg:"nothing reads it — a segment with no `bg:` wears the decoration tint of its place in the bar. Delete the key, and author `bg:` on the segments that need a fixed colour.",default_fg:"nothing reads it — a segment with no `fg:` wears text chosen for contrast against its background. Delete the key, and author `fg:` on the segments that need a fixed colour.",default_truncate_marker:'nothing reads it — a segment clipped to its `width:` always ends in "…". Delete the key.',look:`it was renamed "style" — write the same name as style: "<name>"`,progression:`it was renamed "variation", and its values with it: accent (was secondary-accent), duo (was primary-secondary), mono (was primary)`},yl={noun:`globals key`,fields:fl,removed:vl},bl={preset:hl(`a preset`),menuGlyph:gl(`a preset`)},xl={noun:`preset globals key`,fields:{...fl,...bl},removed:vl};function Sl(e){return kl(e)&&!(e in bl)}const Cl={noun:`editGlobals key`,removed:vl,fields:{...fl,preset:hl(`the editGlobals fragment`),menuGlyph:gl(`the editGlobals fragment`),palette:_l(fl.palette,`the editGlobals fragment`),style:_l(fl.style,`the editGlobals fragment`)}};function wl(e,t,n){return n===void 0?{}:ac(e,yl,t,n)??{}}function Tl(e,t,n){return ac(e,xl,t,n)??{}}function El(){return Tc(xl)}function Dl(e,t,n){return ac(e,Cl,t,n)??{}}const Ol=new Set(Object.keys(fl));function kl(e){return Ol.has(e)}function Al(){return[...Ol]}const jl={padding:1};function Ml(e){let t=new Map;for(let[n,r]of Object.entries(jl)){let i=e[n];t.set(n,typeof i==`number`?i:r)}return t}function Nl(e,t,n,r){return n.cache===void 0?(Hs.includes(r)&&e.issues.push({path:`${t}.cache`,message:`${r} variables must declare a cache policy (one of: ${zs.join(`, `)})`,line:U(e.source,t.split(`.`))}),null):Rl(e,`${t}.cache`,n.cache)}function Pl(e,t,n){if(n.cache!==void 0)return Rl(e,`${t}.cache`,n.cache)??void 0}function Fl(e){return{required:!0,json:Vl(),parse:(t,n,r,i)=>Nl(t,n,i,e)??void 0}}function Il(){return{required:!1,json:Vl(),parse:(e,t,n,r)=>Pl(e,t,r)}}const Ll={noun:`cache`,arms:{ttl:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`&&Ul(n)?{ttl:n}:lc(e,t,`cache.ttl must be a duration string like "5s", "100ms", "2m", "1h"; got ${G(n)}`)},watch_file:{json:{type:`string`,pattern:`^/`},parse:(e,t,n)=>{if(typeof n!=`string`)return lc(e,t,`cache.watch_file must be a path string, got ${G(n)}`);let r=xc(`cache.watch_file`,n);return r===null?{watch_file:n}:lc(e,t,r)}},depends_on:{json:{type:`array`,items:{type:`string`}},parse:(e,t,n)=>Array.isArray(n)&&n.every(e=>typeof e==`string`)?{depends_on:n}:lc(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}:lc(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}:lc(e,t,`cache.never must be the literal boolean true, got ${G(n)}`)}}};function Rl(e,t,n){return uc(e,Ll,t,n)}const zl={noun:`time-variable cache`,arms:{ttl:Ll.arms.ttl}};function Bl(){return{required:!1,json:Oc(zl),parse:(e,t,n,r)=>r.cache===void 0?void 0:uc(e,zl,`${t}.cache`,r.cache)??void 0}}function Vl(){return Oc(Ll)}const Hl=/^(\d+(?:\.\d+)?)(ms|s|m|h)$/;function Ul(e){return Hl.test(e)}function Wl(e,t,n){if(n===void 0)return{};if(!ic(n))return e.issues.push({path:t,message:`${t} must be an object, got ${W(n)}`,line:U(e.source,t.split(`.`))}),{};let r={};for(let[i,a]of Object.entries(n)){let n=dc(e,fu,`${t}.${i}`,a);n!==null&&(r[i]=n)}return r}function Gl(){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 ${W(i)}`,line:U(e.source,t.split(`.`))});return}return i}}}function Kl(){return{required:!0,json:{enum:[...Vs]},parse:(e,t,n,r)=>{let i=r.field;if(typeof i!=`string`||!Vs.includes(i)){e.issues.push({path:`${t}.field`,message:`git field must be one of: ${Vs.join(`, `)}, got ${JSON.stringify(i)}`,line:U(e.source,[...t.split(`.`),`field`])});return}return i}}}function ql(){return{required:!1,json:{type:[`string`,`number`,`boolean`]},parse:(e,t,n,r)=>{let i=r.type;return ec(e,t,r,i===`number`||i===`boolean`||i===`string`?i:`string`)}}}const Jl={noun:`parse`,arms:{text:{json:{const:!0},parse:(e,t,n)=>n===!0?{text:!0}:lc(e,t,`parse.text must be the literal boolean true, got ${G(n)}`)},regex:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`?Yl(e,t,n):lc(e,t,`parse.regex must be a pattern string, got ${G(n)}`)},json:{json:{const:!0},parse:(e,t,n)=>n===!0?{json:!0}:lc(e,t,`parse.json must be the literal boolean true, got ${G(n)}`)}}};function Yl(e,t,n){let r;try{new RegExp(n),r=RegExp(`${n}|`).exec(``).length-1}catch(n){return lc(e,t,`parse.regex is not a valid regular expression: ${n.message}`)}return r>=1?{regex:n}:lc(e,t,`parse.regex must contain a capture group — its group 1 is the value; got ${JSON.stringify(n)}`)}function Xl(){return{required:!1,json:Oc(Jl),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:U(e.source,[...t.split(`.`),`regex`])}),r.parse===void 0?void 0:uc(e,Jl,`${t}.parse`,r.parse)??void 0)}}function Zl(){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)=>ic(r.parse)&&`json`in r.parse?Ql(e,t,r.default):tc(e,t,r,`default`)}}function Ql(e,t,n){if(n!==void 0)return $l(n)?n:lc(e,`${t}.default`,`${t}.default must be a JSON value (a json-parsed source's document), got ${G(n)}`)??void 0}function $l(e){return e!==null&&eu(e)}function eu(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(eu);let t=Object.getPrototypeOf(e);return(t===Object.prototype||t===null)&&Object.values(e).every(eu)}default:return!1}}const tu={value:Gl(),default:hc()},nu={path:bc(),type:Cc([`string`,`number`,`boolean`]),default:ql()},ru={name:bc(),default:hc()},iu={path:Sc(),readMode:Cc([`whole`,`first-line`]),parse:Xl(),cache:Fl(`file`),default:Zl()},au={command:bc(),parse:Xl(),cache:Fl(`shell`),default:Zl()},ou={template:bc(),cache:Il(),default:hc()},su={layout:bc(),cache:Bl(),default:hc()},cu={field:Kl(),cache:Fl(`git`),default:hc()},lu={key:bc(),default:hc()},uu=`kind`;function du(e,t){return{...fc(uu,e,t),parse:(n,r,i)=>{let a=oc(n,t,r,i);return a===null?null:{kind:e,...a}}}}const fu={tag:uu,noun:`source kind`,memberNoun:`variable`,arms:{literal:du(`literal`,tu),input:du(`input`,nu),env:du(`env`,ru),file:du(`file`,iu),shell:du(`shell`,au),template:du(`template`,ou),time:du(`time`,su),git:du(`git`,cu),state:du(`state`,lu)}};function pu(){return Dc(fu)}function mu(){return{type:`object`,additionalProperties:pu()}}const hu=[`location`,`git`,`model-context`,`cost-limits`,`activity`,`session-tools`],gu=[...hu,`other`],_u={location:`location`,git:`git`,"model-context":`model & context`,"cost-limits":`cost & limits`,activity:`activity`,"session-tools":`session tools`,other:`other`};function vu(e){return e.replace(/[^A-Za-z0-9]+/g,`_`)}const yu=`groups.`,bu=`menus.`,xu=`edit.`,K=`candybar.`,Su=[yu,bu,xu,K];function Cu(e){return Su.some(t=>e.startsWith(t))}function wu(e){let t=vu(e);return Su.find(e=>t.startsWith(vu(e)))}function Tu(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:U(e.source,[`root`])})}const Eu=new Map([[`gitTaculous`,`gitaculous`],[`git`,`gitaculous`],[`settings.menu`,`candybar.menu`]]);function Du(e){let t=Eu.get(e);return t===void 0?``:` (the built-in segment "${e}" was renamed to "${t}" — update this reference)`}const Ou=/^[A-Za-z_][A-Za-z0-9_]*$/,ku={pattern:Ou.source},Au={anyOf:[{type:`boolean`},{type:`string`},{type:`integer`}]},ju={type:`object`,additionalProperties:!1,required:[`label`,`domain`,`default`],properties:{label:{type:`string`,pattern:`^[^\\n\\r]+$`},domain:{anyOf:[{const:`bool`},{type:`array`,items:{type:`string`,pattern:`^[^/\\n\\r]+$`},minItems:1,uniqueItems:!0},{type:`object`,additionalProperties:!1,required:[`min`,`max`],properties:{min:{type:`integer`},max:{type:`integer`},step:{type:`integer`,minimum:1},atLeast:{type:`string`,...ku}}}]},default:Au}},Mu=[`label`,`domain`,`default`],Nu=[`min`,`max`,`step`,`atLeast`];function Pu(e,t,n){e.issues.push({path:t,message:n,line:U(e.source,t.split(`.`))})}function Fu(e,t,n){if(n===`bool`)return`bool`;if(Array.isArray(n)){let r=n.filter(e=>typeof e==`string`);if(n.length===0||r.length!==n.length)return Pu(e,t,`a list domain must be a non-empty list of words, got ${JSON.stringify(n)}`);if(new Set(r).size!==r.length)return Pu(e,t,`a list domain names each word once, got ${JSON.stringify(n)}`);let i=r.filter(e=>e===``||e.includes(`/`)||/[\n\r]/.test(e));return i.length>0?Pu(e,t,`a list domain's words must be non-empty, slash-free, and newline-free — configure mode writes each on the set-state wire — got ${JSON.stringify(i)}`):r}if(ic(n)){let{min:r,max:i,step:a=1,atLeast:o}=n;return Object.keys(n).filter(e=>!Nu.includes(e)).length===0&&Number.isInteger(r)&&Number.isInteger(i)&&r<=i&&Number.isInteger(a)&&a>=1&&(o===void 0||typeof o==`string`)?{min:r,max:i,step:a,...o!==void 0&&{atLeast:o}}:Pu(e,t,`a range domain is { min, max, step?, atLeast? } with integers min ≤ max, a whole step ≥ 1, and atLeast naming another range setting, got ${JSON.stringify(n)}`)}return Pu(e,t,`domain must be "bool", a list of words, or { min, max }, got ${G(n)}`)}function Iu(e,t,n){if(!ic(n))return Pu(e,t,`${t} must be { label, domain, default }, got ${W(n)}`);for(let r of Object.keys(n))Mu.includes(r)||Pu(e,`${t}.${r}`,`Unknown setting key "${r}". Expected one of: ${Mu.join(`, `)}`);let{label:r}=n,i=typeof r==`string`&&r.length>0&&!/[\n\r]/.test(r);i||Pu(e,`${t}.label`,`a setting needs a one-line, non-empty "label" — the name its control shows, spliced into a synthesized template string — got ${G(r)}`);let a=Fu(e,`${t}.domain`,n.domain);if(!i||a===void 0)return;let o={label:r,domain:a,default:n.default};return!Lu(n.default)||!qs(o,n.default)?Pu(e,`${t}.default`,`default must be ${Xs(o)}, got ${G(n.default)}`):o}function Lu(e){return typeof e==`boolean`||typeof e==`string`||typeof e==`number`}function Ru(){return{required:!1,json:{type:`object`,propertyNames:{...ku,not:{const:Us}},additionalProperties:ju},parse:(e,t,n,r)=>{let i=r[n];if(i===void 0)return;let a=`${t}.${n}`;if(!ic(i))return Pu(e,a,`${a} must be an object of name → { label, domain, default }, got ${W(i)}`);let o=Object.create(null);for(let[t,n]of Object.entries(i)){if(!Ou.test(t)){Pu(e,`${a}.${t}`,`setting name "${t}" is read as .settings.${t} in a template, so it must be an identifier (letters, digits, _; not starting with a digit)`);continue}if(t===`theme`){Pu(e,`${a}.${t}`,`setting "${Us}" is one every placement already has — its default for this segment is segments.<name>.palette, and a placement sets its own with settings: { ${Us}: "<theme>" }`);continue}let r=Iu(e,`${a}.${t}`,n);r!==void 0&&(o[t]=r)}return o}}}function zu(){return{required:!1,json:{type:`string`,minLength:1,pattern:`^[^:/]+$`},parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0)return typeof i==`string`&&i.length>0&&!/[:/]/.test(i)?i:Pu(e,`${t}.${n}`,`a placement "id" must be a non-empty string without "/" or ":", got ${G(i)}`)}}}function Bu(){return{required:!1,json:{type:`object`,propertyNames:ku,additionalProperties:Au},parse:(e,t,n,r)=>{let i=r[n];if(i===void 0)return;let a=`${t}.${n}`;if(!ic(i))return Pu(e,a,`a placement's "settings" must be an object of setting name → value, got ${W(i)}`);let o=Object.create(null);for(let[t,n]of Object.entries(i))Lu(n)?o[t]=n:Pu(e,`${a}.${t}`,`setting "${t}" must be a boolean, a word, or a number, got ${W(n)}`);return o}}}function Vu(e){return new Set(Object.keys(e.segments).filter(e=>!Cu(e)))}function Hu(e,t,n){if(t===void 0)return{};if(!ic(t))return e.issues.push({path:`segments`,message:`segments must be an object, got ${W(t)}`,line:U(e.source,[`segments`])}),{};let r={};for(let[i,a]of Object.entries(t)){let t=ac(e,n.has(i)?Ju:qu,`segments.${i}`,a);t!==null&&(r[i]=t)}return r}function Uu(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>r[n]===void 0?lc(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${Du(t.slice(9))}`)??void 0:$s(e,t,r,n)??void 0}}function Wu(){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:U(e.source,[...t.split(`.`),n])})}}}}function Gu(){return{required:!1,json:mu(),parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0)return Wl(e,`${t}.${n}`,i)}}}const Ku={template:Uu(),description:hc(),group:Cc(hu),width:Wu(),justify:Cc(Zs),truncate:Cc(Qs),bg:hc(),fg:hc(),when:hc(),palette:yc(),vars:Gu(),settings:Ru()},qu={noun:`segment key`,fields:Ku},Ju={noun:`segment key`,fields:{...Ku,template:hc()}},Yu=`#/definitions/LayoutNode`,Xu={kind:`container`,direction:`vertical`,children:[]};function Zu(e){return{required:!0,json:{const:e},parse:()=>e}}function Qu(){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:U(e.source,[`root`])}),``)}}}function $u(){return{required:!0,json:{enum:[...Ds]},parse:(e,t,n,r)=>{let i=r[n];return typeof i==`string`&&Ds.includes(i)?i:(e.issues.push({path:`${t}.${n}`,message:`a container "direction" must be one of: ${Ds.join(`, `)} (got ${JSON.stringify(i)})`,line:U(e.source,[`root`])}),`vertical`)}}}function ed(e){return{required:!0,json:{type:`array`,items:{$ref:Yu}},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 ${W(a)}`,line:U(t.source,[`root`])}),[])}}}const td={noun:`layout-node key`,fields:{kind:Zu(`segment`),name:Qu(),when:hc(),id:zu(),settings:Bu()}},nd=()=>Cc(da),rd={noun:`layout-node key`,fields:{kind:Zu(`container`),direction:$u(),children:ed(pc(()=>cd)),when:hc(),distribution:nd()}};function id(){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:U(e.source,[`root`])}),``)}}}const ad={noun:`layout-node key`,fields:{seg:id(),when:hc(),id:zu(),settings:Bu()}},od={noun:`layout-node key`,fields:{h:ed(pc(()=>cd)),when:hc(),distribution:nd()}},sd={noun:`layout-node key`,fields:{v:ed(pc(()=>cd)),when:hc(),distribution:nd()}},cd=(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:U(e.source,[`root`])}),Xu):{kind:`segment`,name:n};if(!ic(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 ${W(n)}`,line:U(e.source,[`root`])}),Xu;if(n.kind===`container`)return ac(e,rd,t,n)??Xu;if(n.kind===`segment`)return ac(e,td,t,n)??Xu;if(n.kind===`cells`)return e.issues.push({path:t,message:`kind: "cells" is no longer supported — use the h-arm spelling instead:
41
41
  Old: { kind: "cells", segments: ["seg1", "seg2"] }
42
- New: { h: ["seg1", "seg2"] }`,line:U(e.source,[`root`])}),qu;if(n.kind===`group`){let r=rc(e,fd,t,n);return r===null?qu:(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}),md(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:U(e.source,[`root`])}),qu}if(a){let r=rc(e,nd,t,n);return r===null?qu:{kind:`segment`,name:r.seg,...r.when!==void 0&&{when:r.when},...r.id!==void 0&&{id:r.id},...r.settings!==void 0&&{settings:r.settings}}}if(r){let r=rc(e,rd,t,n);return r===null?qu:{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=rc(e,id,t,n);return r===null?qu:{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:U(e.source,[`root`])}),qu};function od(){return{required:!0,json:{type:`object`,propertyNames:{pattern:Dc.source},additionalProperties:{$ref:Ku}},parse:(e,t,n,r)=>{let i=r[n];if(!nc(i))return e.issues.push({path:`${t}.${n}`,message:`"rows" must be an object of row name → layout node, got ${W(i)}`,line:U(e.source,[...t.split(`.`),n])}),{};let a={};for(let[r,o]of Object.entries(i)){if(!Dc.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:U(e.source,[...t.split(`.`),n,r])});continue}a[r]=ad(e,`${t}.${n}.${r}`,o)}return a}}}const sd={noun:`root key`,fields:{rows:od(),when:pc(),distribution:$u()}};function cd(e,t,n){return nc(n)&&`rows`in n?rc(e,sd,t,n)??{rows:{}}:ad(e,t,n)}function ld(){return{required:!0,json:{type:`string`,pattern:Dc.source},parse:(e,t,n,r)=>{let i=r[n];if(typeof i!=`string`||!Dc.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 "${Hc}", got ${G(i)}`,line:U(e.source,[`root`])});return}return i}}}function ud(){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:U(e.source,[`root`])});return}return i}}}}function dd(){return{required:!0,json:{type:`string`,pattern:`^[^\\n\\r]*$`},parse:(e,t,n,r)=>{let i=Zs(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:U(e.source,[...t.split(`.`),n])});return}return i}}}}const fd={noun:`layout-node key`,fields:{kind:Ju(`group`),name:ld(),label:dd(),open:mc(),direction:xc(Ts),key:ud(),bg:pc(),fg:pc(),when:pc(),distribution:$u(),children:Zu(dc(()=>ad))}};function pd(e){return e.key??`groups.`+e.name}function md(e){let t=gu+e.name;return qc(t,{variable:t,key:pd(e),member:e.name},{kind:`container`,direction:e.direction??`vertical`,children:e.children,...e.distribution!==void 0&&{distribution:e.distribution}},`drop`,e.when)}function hd(e,t,n){e.issues.push({path:t,message:n,line:U(e.source,[`root`])})}function gd(e,t){Su(e,t,gu,`group nodes`);let n=e.groups;if(n.length===0)return;let r=new Set;for(let t of n)r.has(t.name)&&hd(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}.`)&&pd(t)===pd(r)&&hd(e,t.path,`group "${t.name}" shares key "${pd(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=pd(t);if(i.has(n)||i.set(n,Hc),t.open===!0){let r=i.get(n);r!==`closed`&&hd(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=gu+e.name,r=pd(e),c=n.filter(t=>t!==e&&e.path.startsWith(t.path+`.`)).length,l=` `.repeat(c);a[t]=Qc(r,i.get(r)),o[t]=$c(r,e.name),s[t]={template:Xc(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 _d=class extends Error{name=`TemplateError`;kind=`EvalError`;pos;source;constructor(e,t,n={}){super(e,{cause:n.cause}),this.pos=t,this.source=n.source}get sourceSnippet(){return this.source?Ed(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}},vd=class extends _d{name=`ParseError`;kind=`ParseError`;expected;found;constructor(e,t,n={}){super(e,t,n),this.expected=n.expected,this.found=n.found}},yd=class extends _d{name=`EvalError`;kind=`EvalError`},bd=class extends yd{name=`FuncNotFoundError`;kind=`FuncNotFoundError`;funcName;suggestions;constructor(e,t,n={}){let r=Dd(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}},xd=class extends yd{name=`ArgCountError`;kind=`ArgCountError`;funcName;accepted;got;constructor(e,t,n,r,i={}){let a=t.minimum===t.maximum?`${t.minimum}`:`at least ${t.minimum}`;super(`wrong number of args for ${e}: want ${a} got ${n}`,r,i),this.funcName=e,this.accepted=t,this.got=n}},Sd=class extends yd{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}},Cd=class extends Sd{constructor(e,t,n,r,i={}){super(e,t,`integer`,String(n),r,i),this.message=Number.isInteger(Number(n))?`integer out of range: ${String(n)}`:`expected integer; found ${String(n)}`}},wd=class extends yd{name=`MissingFieldError`;kind=`MissingFieldError`;path;constructor(e,t,n={}){super(`field "${e.join(`.`)}" not found on receiver`,t,n),this.path=e}},Td=class extends yd{name=`FailError`;kind=`FailError`;constructor(e,t={line:0,column:0,offset:0},n={}){super(e,t,n)}};function Ed(e,t){let n=e.split(`
42
+ New: { h: ["seg1", "seg2"] }`,line:U(e.source,[`root`])}),Xu;if(n.kind===`group`){let r=ac(e,hd,t,n);return r===null?Xu:(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}),_d(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:U(e.source,[`root`])}),Xu}if(a){let r=ac(e,ad,t,n);return r===null?Xu:{kind:`segment`,name:r.seg,...r.when!==void 0&&{when:r.when},...r.id!==void 0&&{id:r.id},...r.settings!==void 0&&{settings:r.settings}}}if(r){let r=ac(e,od,t,n);return r===null?Xu:{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=ac(e,sd,t,n);return r===null?Xu:{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:U(e.source,[`root`])}),Xu};function ld(){return{required:!0,json:{type:`object`,propertyNames:{pattern:kc.source},additionalProperties:{$ref:Yu}},parse:(e,t,n,r)=>{let i=r[n];if(!ic(i))return e.issues.push({path:`${t}.${n}`,message:`"rows" must be an object of row name → layout node, got ${W(i)}`,line:U(e.source,[...t.split(`.`),n])}),{};let a={};for(let[r,o]of Object.entries(i)){if(!kc.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:U(e.source,[...t.split(`.`),n,r])});continue}a[r]=cd(e,`${t}.${n}.${r}`,o)}return a}}}const ud={noun:`root key`,fields:{rows:ld(),when:hc(),distribution:nd()}};function dd(e,t,n){return ic(n)&&`rows`in n?ac(e,ud,t,n)??{rows:{}}:cd(e,t,n)}function fd(){return{required:!0,json:{type:`string`,pattern:kc.source},parse:(e,t,n,r)=>{let i=r[n];if(typeof i!=`string`||!kc.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 "${Wc}", got ${G(i)}`,line:U(e.source,[`root`])});return}return i}}}function pd(){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:U(e.source,[`root`])});return}return i}}}}function md(){return{required:!0,json:{type:`string`,pattern:`^[^\\n\\r]*$`},parse:(e,t,n,r)=>{let i=$s(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:U(e.source,[...t.split(`.`),n])});return}return i}}}}const hd={noun:`layout-node key`,fields:{kind:Zu(`group`),name:fd(),label:md(),open:gc(),direction:Cc(Ds),key:pd(),bg:hc(),fg:hc(),when:hc(),distribution:nd(),children:ed(pc(()=>cd))}};function gd(e){return e.key??`groups.`+e.name}function _d(e){let t=yu+e.name;return Yc(t,{variable:t,key:gd(e),member:e.name},{kind:`container`,direction:e.direction??`vertical`,children:e.children,...e.distribution!==void 0&&{distribution:e.distribution}},`drop`,e.when)}function vd(e,t,n){e.issues.push({path:t,message:n,line:U(e.source,[`root`])})}function yd(e,t){Tu(e,t,yu,`group nodes`);let n=e.groups;if(n.length===0)return;let r=new Set;for(let t of n)r.has(t.name)&&vd(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}.`)&&gd(t)===gd(r)&&vd(e,t.path,`group "${t.name}" shares key "${gd(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=gd(t);if(i.has(n)||i.set(n,Wc),t.open===!0){let r=i.get(n);r!==`closed`&&vd(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=yu+e.name,r=gd(e),c=n.filter(t=>t!==e&&e.path.startsWith(t.path+`.`)).length,l=` `.repeat(c);a[t]=tl(r,i.get(r)),o[t]=nl(r,e.name),s[t]={template:Qc(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 bd=class extends Error{name=`TemplateError`;kind=`EvalError`;pos;source;constructor(e,t,n={}){super(e,{cause:n.cause}),this.pos=t,this.source=n.source}get sourceSnippet(){return this.source?kd(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}},xd=class extends bd{name=`ParseError`;kind=`ParseError`;expected;found;constructor(e,t,n={}){super(e,t,n),this.expected=n.expected,this.found=n.found}},Sd=class extends bd{name=`EvalError`;kind=`EvalError`},Cd=class extends Sd{name=`FuncNotFoundError`;kind=`FuncNotFoundError`;funcName;suggestions;constructor(e,t,n={}){let r=Ad(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}},wd=class extends Sd{name=`ArgCountError`;kind=`ArgCountError`;funcName;accepted;got;constructor(e,t,n,r,i={}){let a=t.minimum===t.maximum?`${t.minimum}`:`at least ${t.minimum}`;super(`wrong number of args for ${e}: want ${a} got ${n}`,r,i),this.funcName=e,this.accepted=t,this.got=n}},Td=class extends Sd{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}},Ed=class extends Td{constructor(e,t,n,r,i={}){super(e,t,`integer`,String(n),r,i),this.message=Number.isInteger(Number(n))?`integer out of range: ${String(n)}`:`expected integer; found ${String(n)}`}},Dd=class extends Sd{name=`MissingFieldError`;kind=`MissingFieldError`;path;constructor(e,t,n={}){super(`field "${e.join(`.`)}" not found on receiver`,t,n),this.path=e}},Od=class extends Sd{name=`FailError`;kind=`FailError`;constructor(e,t={line:0,column:0,offset:0},n={}){super(e,t,n)}};function kd(e,t){let n=e.split(`
43
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(`
44
- `)}function Dd(e,t){if(t.length===0)return[];let n=t.map(t=>({name:t,dist:Od(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 Od(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 kd(e){throw Error(`unhandled node kind: ${JSON.stringify(e)}`)}const Ad=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`]]),jd={left:`{{`,right:`}}`};var Md=class{src;leftDelim;rightDelim;offset=0;line=1;column=1;mode=`text`;pending;constructor(e,t=jd){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 vd(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&&Nd(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);Nd(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);Nd(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(;Nd(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`;Nd(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&&(Fd(e)||Pd(e)&&Fd(this.src[this.offset+1]??``)||e===`.`&&Fd(this.src[this.offset+1]??``)))return this.readNumber(t);if(e===`.`)return this.readDotOrField(t);if(e!==void 0&&Bd(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 Ad(e,t){if(t.length===0)return[];let n=t.map(t=>({name:t,dist:jd(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 jd(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 Md(e){throw Error(`unhandled node kind: ${JSON.stringify(e)}`)}const Nd=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`]]),Pd={left:`{{`,right:`}}`};var Fd=class{src;leftDelim;rightDelim;offset=0;line=1;column=1;mode=`text`;pending;constructor(e,t=Pd){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 xd(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&&Id(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);Id(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);Id(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(;Id(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`;Id(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&&(Rd(e)||Ld(e)&&Rd(this.src[this.offset+1]??``)||e===`.`&&Rd(this.src[this.offset+1]??``)))return this.readNumber(t);if(e===`.`)return this.readDotOrField(t);if(e!==void 0&&Ud(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===`
45
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===`
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(Pd(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);Id(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);Ld(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);Rd(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);return this.finishNumber(t,e)}}for(;Fd(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);if(this.src[this.offset]===`.`)for(this.advanceBy(1);Fd(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),Pd(this.src[this.offset]??``)&&this.advanceBy(1);Fd(this.src[this.offset]??``);)this.advanceBy(1);return this.src[this.offset]===`i`&&this.advanceBy(1),this.finishNumber(t,e)}isHexFloatTail(e){return Id(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);Vd(this.src[this.offset]??``);)this.advanceBy(1);for(;this.src[this.offset]===`.`&&Bd(this.src[this.offset+1]??``);)for(this.advanceBy(1);Vd(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),!Bd(this.src[this.offset]??``))return this.makeToken(`Dot`,`.`,e);for(;Vd(this.src[this.offset]??``);)this.advanceBy(1);for(;this.src[this.offset]===`.`&&Bd(this.src[this.offset+1]??``);)for(this.advanceBy(1);Vd(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(;Vd(this.src[this.offset]??``);)this.advanceBy(1);let n=this.src.slice(t,this.offset),r=Ad.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(Ld(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);zd(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);Bd(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);Vd(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);return this.finishNumber(t,e)}}for(;Rd(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);if(this.src[this.offset]===`.`)for(this.advanceBy(1);Rd(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),Ld(this.src[this.offset]??``)&&this.advanceBy(1);Rd(this.src[this.offset]??``);)this.advanceBy(1);return this.src[this.offset]===`i`&&this.advanceBy(1),this.finishNumber(t,e)}isHexFloatTail(e){return zd(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);Wd(this.src[this.offset]??``);)this.advanceBy(1);for(;this.src[this.offset]===`.`&&Ud(this.src[this.offset+1]??``);)for(this.advanceBy(1);Wd(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),!Ud(this.src[this.offset]??``))return this.makeToken(`Dot`,`.`,e);for(;Wd(this.src[this.offset]??``);)this.advanceBy(1);for(;this.src[this.offset]===`.`&&Ud(this.src[this.offset+1]??``);)for(this.advanceBy(1);Wd(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(;Wd(this.src[this.offset]??``);)this.advanceBy(1);let n=this.src.slice(t,this.offset),r=Nd.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===`
47
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===`
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 Nd(e){return e===` `||e===` `||e===`\r`||e===`
49
- `}function Pd(e){return e===`+`||e===`-`}function Fd(e){return e>=`0`&&e<=`9`}function Id(e){return Fd(e)||e>=`a`&&e<=`f`||e>=`A`&&e<=`F`}function Ld(e){return e>=`0`&&e<=`7`}function Rd(e){return e===`0`||e===`1`}function zd(e){return e>=`a`&&e<=`z`||e>=`A`&&e<=`Z`}function Bd(e){return zd(e)||e===`_`}function Vd(e){return Bd(e)||Fd(e)}let Hd,Ud;function Wd(e,t){return Ud(e,t)}var Gd=class e{static EMPTY=new e(new Map,void 0);#e;#t;constructor(e,t){this.#e=e,this.#t=t}static{Hd=(t,n)=>new e(t,n),Ud=(e,t)=>e.#e.get(t)??(e.#t&&Ud(e.#t,t))}has(e){return Ud(this,e)!==void 0}};function Kd(e,t,n=Gd.EMPTY){return new qd(e,t,n).parseTemplate()}var qd=class{lex;buf=[];defines=new Map;inherit;source;rangeDepth=0;constructor(e,t,n){this.source=e,this.inherit=n,this.lex=t?new Md(e,t):new Md(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:Xd(n)});return n}errAt(e,t,n={}){return new vd(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 ${Xd(e)}`,{found:Xd(e)})}return{root:e,defines:Hd(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=Yd(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 Jd(e,t);let r=this.parseAction();r!==null&&t.push(r);continue}throw this.errAt(n,`unexpected ${Xd(n)} at top level`,{found:Xd(n)})}return Jd(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 vd(`{{${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 vd(`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:Xd(e)});return af(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(!Zd(e.type))throw this.errAt(e,"missing command after `|`",{expected:`command`,found:Xd(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=[Qd(this.next())];for(;this.peek().type===`Comma`;)this.next(),n.push(Qd(this.expect(`Variable`,`$variable`)));return{vars:n,isAssign:this.next().type===`Assign`}}parseCommand(){let e=this.peek().pos,t=[this.parsePrimary()];for(;Zd(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 Qd(e);case`Identifier`:return{type:`Identifier`,pos:e.pos,ident:e.value};case`String`:return{type:`String`,pos:e.pos,raw:e.value,value:af(e.value,e.pos,this.source)};case`Number`:return ef(e);case`Char`:return tf(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 ${Xd(e)}`,{expected:`command argument`,found:Xd(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 Jd(e,t){return{type:`List`,pos:e,nodes:t}}function Yd(e){return{trimLeft:e.trimLeft===!0,trimRight:e.trimRight===!0}}function Xd(e){return e.type===`EOF`?`end of input`:e.value||e.type}function Zd(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 Qd(e){return{type:`Variable`,pos:e.pos,idents:$d(e.value)}}function $d(e){let t=e.indexOf(`.`);return t===-1?[e]:[e.slice(0,t),...e.slice(t+1).split(`.`)]}function ef(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=nf(i);return{...s,intValue:e}}if(a){let e=rf(i);return{...s,floatValue:e}}let c=rf(i);return{...s,complexValue:[0,c]}}function tf(e,t){let n=of(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 nf(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 rf(e){return Number(e)}function af(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 vd(`bad escape sequence \\${o}`,t,{expected:`valid escape sequence`,found:`\\${o}`,source:n})}}return r}function of(e,t,n){let r=af(`"${e.slice(1,-1).replace(/"/g,`\\"`)}"`,t,n);if(r.length===0)throw new vd(`empty rune literal`,t,{source:n});return r.codePointAt(0)??0}function sf(e,t){if(t(e)!==!1)for(let n of cf(e))sf(n,t)}function cf(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 kd(e)}}const lf=Symbol(`go-template-js.MISSING`);function uf(e,t){if(e==null)return lf;if(e instanceof Map)return e.has(t)?e.get(t):lf;if(Array.isArray(e))return lf;if(typeof e==`object`){let n=e;return t in n?n[t]:lf}return lf}function df(e,t){let n=e;for(let e of t){if(n===lf)return lf;n=uf(n,e)}return n}function ff(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)=>ff(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)||!ff(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=>ff(e[n],t[n])):!1}return!1}const pf=new WeakSet;function mf(e){return pf.add(e),e}function hf(e){return pf.has(e)}function gf(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 _f(e,t){return{eq:{fn:(e,...t)=>t.some(t=>bf(e,t)),argTypes:[`comparable`,`comparable`],arity:{kind:`variadic`}},ne:{fn:(e,t)=>!bf(e,t),argTypes:[`comparable`,`comparable`],arity:{kind:`exact`}},lt:{fn:(e,t)=>xf(e,t)<0,argTypes:[`ordered`,`ordered`],arity:{kind:`exact`}},le:{fn:(e,t)=>xf(e,t)<=0,argTypes:[`ordered`,`ordered`],arity:{kind:`exact`}},gt:{fn:(e,t)=>xf(e,t)>0,argTypes:[`ordered`,`ordered`],arity:{kind:`exact`}},ge:{fn:(e,t)=>xf(e,t)>=0,argTypes:[`ordered`,`ordered`],arity:{kind:`exact`}},len:{fn:e=>Sf(e),argTypes:[`sized`],arity:{kind:`exact`}},index:{fn:(e,...t)=>{let n=e;for(let e of t)n=Cf(n,e);return n},argTypes:[`collection`,`index-key`],arity:{kind:`variadic`}},slice:{fn:(e,...t)=>Tf(e,t),argTypes:[`sliceable`,`int`],arity:{kind:`variadic`}},print:{fn:(...t)=>Of(t,e),argTypes:[`stringifiable`],arity:{kind:`variadic`},returnType:`string`},println:{fn:(...t)=>`${Of(t,e)}\n`,argTypes:[`stringifiable`],arity:{kind:`variadic`},returnType:`string`},printf:{fn:(n,...r)=>Lf(n,r,e,t),argTypes:[`string`,`stringifiable`],arity:{kind:`variadic`},returnType:`string`},toString:{fn:n=>Bf(n,e,t),argTypes:[`value`],arity:{kind:`exact`},returnType:`string`},toStrings:{fn:n=>n.map(n=>Bf(n,e,t)),argTypes:[`list`],arity:{kind:`exact`}},call:{fn:(e,...t)=>e(...t),argTypes:[`callable`,`value`],arity:{kind:`variadic`}},html:{fn:(...t)=>jf(Of(t,e)),argTypes:[`stringifiable`],arity:{kind:`variadic`},returnType:`string`},js:{fn:(...t)=>Pf(Of(t,e)),argTypes:[`stringifiable`],arity:{kind:`variadic`},returnType:`string`},urlquery:{fn:(...t)=>If(Of(t,e)),argTypes:[`stringifiable`],arity:{kind:`variadic`},returnType:`string`},not:{fn:e=>!gf(e),argTypes:[`truthy`],arity:{kind:`exact`}}}}function vf(){return{and:mf({argTypes:[`truthy`,`truthy`],arity:{kind:`variadic`},fn:(...e)=>{let t=!0;for(let n of e)if(t=n(),!gf(t))return t;return t}}),or:mf({argTypes:[`truthy`,`truthy`],arity:{kind:`variadic`},fn:(...e)=>{let t=!1;for(let n of e)if(t=n(),gf(t))return t;return t}})}}function yf(e,t){return{..._f(e,t),...vf()}}function bf(e,t){return typeof e==`number`&&typeof t==`bigint`?BigInt(e)===t:typeof e==`bigint`&&typeof t==`number`?e===BigInt(t):ff(e,t)}function xf(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 Sf(e){return typeof e==`string`||Array.isArray(e)?e.length:e instanceof Map||e instanceof Set?e.size:Object.keys(e).length}function Cf(e,t){if(Array.isArray(e)||typeof e==`string`){let n=wf(t,e.length);if(n===e.length)throw Error(`index out of range: ${n}`);return e[n]}if(e instanceof Map)return e.get(t);if(typeof e==`object`&&e){if(typeof t!=`string`)throw Error(`index: object index must be string, got ${Ef(t)}`);return e[t]}throw Error(`index: cannot index ${Ef(e)}`)}function wf(e,t){let n=typeof e==`bigint`?Number(e):e;if(typeof n!=`number`||!Number.isInteger(n))throw Error(`cannot index slice/array with type ${Df(e)}`);if(n<0||n>t)throw Error(`index out of range: ${String(e)}`);return n}function Tf(e,t){if(t.length>3)throw Error(`too many slice indexes: ${t.length}`);if(typeof e==`string`&&t.length>2)throw Error(`cannot 3-index slice a string`);let n=e.length,r=[0,n,n];t.forEach((e,t)=>{r[t]=wf(e,n)});let[i,a,o]=r;if(i>a)throw Error(`invalid slice index: ${i} > ${a}`);if(a>o)throw Error(`invalid slice index: ${a} > ${o}`);return e.slice(i,a)}function Ef(e){return e===null?`null`:e===void 0?`undefined`:Array.isArray(e)?`array`:e instanceof Map?`Map`:typeof e}function Df(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 Of(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+=kf(a,t),r=o}return n}function kf(e,t){return e==null?`<nil>`:typeof e==`string`?e:t(e)}const Af={"\0":`�`,'"':`&#34;`,"'":`&#39;`,"&":`&amp;`,"<":`&lt;`,">":`&gt;`};function jf(e){return e.replace(/[\0"'&<>]/g,e=>Af[e]??e)}const Mf={"\\":`\\\\`,"'":`\\'`,'"':`\\"`,"<":`\\u003C`,">":`\\u003E`,"&":`\\u0026`,"=":`\\u003D`},Nf=/^[\p{L}\p{M}\p{N}\p{P}\p{S}]$/u;function Pf(e){let t=``;for(let n of e){let e=Mf[n];if(e!==void 0){t+=e;continue}let r=n.codePointAt(0);if(r<32||r>=128&&!Nf.test(n)){t+=`\\u${r.toString(16).toUpperCase().padStart(4,`0`)}`;continue}t+=n}return t}const Ff=new TextEncoder;function If(e){let t=``,n=Ff.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 Lf(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+=Rf(l??``,u,d,n,r),o=c+1}return i}function Rf(e,t,n,r,i){switch(e){case`s`:return typeof n==`string`?zf(t,n):zf(t,kf(n,r));case`d`:return typeof n!=`number`&&typeof n!=`bigint`?`%!${e}(${Df(n)}=${kf(n,r)})`:zf(t,String(typeof n==`bigint`?n:Math.trunc(n)));case`v`:return zf(t,Bf(n,r,i));case`q`:return zf(t,JSON.stringify(kf(n,r)));case`f`:{if(typeof n!=`number`&&typeof n!=`bigint`)return`%!${e}(${Df(n)}=${kf(n,r)})`;let i=t.includes(`.`)?Number(t.split(`.`)[1]):6;return zf(t,Number(n).toFixed(i))}case`t`:return zf(t,gf(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 zf(t,r)}return typeof n!=`number`&&typeof n!=`bigint`?`%!${e}(${Df(n)}=${kf(n,r)})`:typeof n==`bigint`?zf(t,n.toString(16)):zf(t,Math.trunc(n).toString(16));default:return`%!${e}(${Df(n)}=${kf(n,r)})`}}function zf(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 Bf(e,t,n){return e==null?`<nil>`:typeof e==`string`?e:n(e)?t(e):Array.isArray(e)?`[${e.map(e=>Bf(e,t,n)).join(` `)}]`:e instanceof Map?Vf([...e.entries()],t,n):Hf(e)?Vf(Object.entries(e),t,n):String(e)}function Vf(e,t,n){let r=e=>Bf(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 Hf(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 Uf(e){return{dot:e,root:e,parent:void 0,vars:new Map}}function Wf(e,t){return{dot:t,root:e.root,parent:e,vars:new Map}}function Gf(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 Kf(e,t,n){e.vars.set(t,n)}const qf=[`string`,`int`,`truncating-int`,`float`,`bool`,`T`,`ordered`,`list`,`dict`,`sized`,`comparable`,`stringifiable`,`liftable`,`callable`,`collection`,`index-key`,`sliceable`,`truthy`,`reflective`,`value`,`serializable`],Jf=new Set([`default`,`zero`,`error`]);function Yf(e){if(e===void 0)return`default`;if(Jf.has(e))return e;throw Error(`EngineConfig.missingKey: expected "default" | "zero" | "error", got ${Xf(e)}`)}function Xf(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 Zf(e){if(e!==void 0){if(typeof e!=`object`||!e)throw Error(`EngineConfig.delims: expected { left, right } object, got ${Xf(e)}`);if(typeof e.left!=`string`||e.left.length===0)throw Error(`EngineConfig.delims.left: expected non-empty string, got ${Xf(e.left)}`);if(typeof e.right!=`string`||e.right.length===0)throw Error(`EngineConfig.delims.right: expected non-empty string, got ${Xf(e.right)}`);return{left:e.left,right:e.right}}}function Qf(e){switch(e.kind){case`exact`:return!1;case`variadic`:return!0;case`alternating`:return!0}}function $f(e){let t=new Set(qf);for(let[n,r]of Object.entries(e)){if(r.argTypes.forEach((e,r)=>{if(!t.has(e))throw Error(`EngineConfig.funcs.${n}: argTypes[${r}] is ${JSON.stringify(e)}, which is not an ArgType; declare one of ${qf.join(`, `)}`)}),Qf(r.arity)&&r.argTypes.length===0)throw Error(`EngineConfig.funcs.${n}: arity ${JSON.stringify(r.arity.kind)} needs at least one declared argType (it reads its repeating slot from the end of argTypes); declare the slots the Go signature has, or use { kind: "exact" }`);if(r.arity.kind===`alternating`&&(!Number.isSafeInteger(r.arity.minimum)||r.arity.minimum<0))throw Error(`EngineConfig.funcs.${n}: arity "alternating" needs a non-negative integer minimum, got ${String(r.arity.minimum)}; the gate rejects every count below it, so a negative or non-finite minimum would disable the lower bound`)}return e}const ep=Object.freeze({kind:`break`}),tp=Object.freeze({kind:`continue`}),np={kind:`none`};let rp;(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{rp=(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 ip(e){let t=new Set,n=e=>{sf(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 ap={kind:`dynamic`};function op(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=Dp(e);return typeof t==`number`||typeof t==`bigint`?{kind:`literal`,value:t}:ap}case`Pipe`:{if(e.decls.length!==0||e.cmds.length!==1)return ap;let t=e.cmds[0];if(t===void 0)return ap;let n=t.args[0];return n===void 0||n.type!==`Identifier`?ap:{kind:`call`,name:n.ident,args:t.args.slice(1).map(op)}}default:return ap}}function sp(e){let t=[],n=e=>{sf(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(op);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 cp=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??gp,this.isT=e.isT??lp,this.missingKey=Yf(e.missingKey),this.delims=Zf(e.delims),this.funcs=$f({...yf(this.toString,this.isT),...e.funcs??{}})}parse(e,t){let n=Kd(e,this.delims,t);return rp(n.source,e=>this.evalParsed(n,e),n.defines,ip(n),sp(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=Uf(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 ep;case`Continue`:throw tp;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 yd(`unexpected ${e.type} at statement position`,e.pos,{source:n.source});default:kd(e)}}evalIf(e,t,n){gf(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(gf(r)){let i=Wf(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=wp(r);try{if(a.length===0){e.elseList&&this.evalList(e.elseList,t,n);return}for(let[r,o]of a){let a=Wf(t,o);if(i.length===1)Kf(a,i[0]?.idents[0]??`$`,o);else if(i.length>=2){let e=i[0]?.idents[0]??`$`,t=i[1]?.idents[0]??`$`;Kf(a,e,r),Kf(a,t,o)}try{this.evalList(e.list,a,n)}catch(e){if(e===tp)continue;throw e}}}catch(e){if(e===ep)return;throw e}}evalTemplateInvoke(e,t,n){let r=Wd(n.defines,e.name);if(!r)throw new yd(`template ${JSON.stringify(e.name)} is not defined`,e.pos,{source:n.source});let i=Wf(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=Wf(t,e.pipe?this.evalPipe(e.pipe,t,n):t.dot),i=Wd(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 yd(`empty pipeline`,e.pos,{source:n.source});let r=this.evalCommand(e.cmds[0],t,n,np);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)Kf(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 yd(`empty command`,e.pos,{source:n.source});let i=e.args[0];if(i.type!==`Identifier`){if(e.args.length>1)throw new yd(`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 bd(i.ident,i.pos,{source:n.source,available:Object.keys(this.funcs)});let o=e.args.slice(1),s=hf(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)}return this.invoke(i.ident,a,c,e.pos,n)}invoke(e,t,n,r,i){dp(e,t,n,r,i.source,this.toString,this.fromString,this.isT);try{return t.fn(...n)}catch(t){throw t instanceof Sd?new Sd(t.funcName,t.argIndex,t.expected,t.receivedSummary,r,{source:i.source}):t instanceof Td?new Td(t.message,r,{source:i.source}):t instanceof _d?t:new yd(`error calling ${e}: ${Sp(t)}`,r,{source:i.source,cause: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 Dp(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 bd(e.ident,e.pos,{source:n.source,available:Object.keys(this.funcs)});return this.invoke(e.ident,t,[],e.pos,n)}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 yd(`cannot evaluate ${e.type} as a value`,e.pos,{source:n.source})}}resolveFieldChain(e,t,n,r){let i=df(e,t);if(i!==lf)return i;if(this.missingKey===`error`)throw new wd(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=Gf(t,i);if(!a.found)throw new yd(`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(Bf(e,this.toString,this.isT)))}};const lp=e=>typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Map);function up(e){return new cp(e)}function dp(e,t,n,r,i,a=gp,o=hp,s=lp){let{argTypes:c,arity:l}=t,u=fp(c,l);if(n.length<u.minimum||n.length>u.maximum)throw new xd(e,u,n.length,r,{source:i});let d=pp(c,l),f=-1,p=-1;for(let t=0;t<n.length;t++){let c=d(t),l=n[t];if(!mp(c,l,a,s))throw(c===`int`||c===`truncating-int`)&&(typeof l==`number`||typeof l==`bigint`)?new Cd(e,t+1,l,r,{source:i}):new Sd(e,t+1,xp(c),Cp(l),r,{source:i});if(c===`liftable`&&typeof l==`string`&&(n[t]=o(l)),c===`truncating-int`?n[t]=Math.trunc(Number(l)):(c===`int`||c===`float`)&&(n[t]=Number(l)),c===`ordered`){if(f===-1)f=t;else if(!vp(n[f],l))throw new Sd(e,t+1,`${xp(`ordered`)} of the same kind as ${Cp(n[f])}`,Cp(l),r,{source:i})}if(c===`comparable`){if(p===-1)p=t;else if(!yp(n[p],l))throw new Sd(e,t+1,`${xp(`comparable`)} of the same kind as ${Cp(n[p])}`,Cp(l),r,{source:i})}}}function fp(e,t){switch(t.kind){case`exact`:return{minimum:e.length,maximum:e.length};case`variadic`:return{minimum:e.length-1,maximum:1/0};case`alternating`:return{minimum:t.minimum,maximum:1/0}}}function pp(e,t){let n=e.length;switch(t.kind){case`exact`:return t=>e[t];case`variadic`:return t=>e[Math.min(t,n-1)];case`alternating`:return t=>e[t%n]}}function mp(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.isSafeInteger(t)||typeof t==`bigint`&&Number.isSafeInteger(Number(t));case`truncating-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 Hf(t);case`sized`:return typeof t==`string`||Array.isArray(t)||t instanceof Map||t instanceof Set||Hf(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||Hf(t);case`callable`:return typeof t==`function`;case`collection`:return typeof t==`string`||Array.isArray(t)||t instanceof Map||Hf(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 _p(t);default:throw Error(`invalid ArgType: ${String(e)}`)}}function hp(e){return e}function gp(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 Sd(`<engine.toString>`,1,`string (or a consumer-supplied toString that flattens T)`,Cp(e),{line:0,column:0,offset:0})}function _p(e){try{return JSON.stringify(e)!==void 0}catch{return!1}}function vp(e,t){return typeof e==typeof t||typeof e==`number`&&typeof t==`bigint`||typeof e==`bigint`&&typeof t==`number`}function yp(e,t){let n=bp(e),r=bp(t);return n===`nil`||r===`nil`?!0:n===r}function bp(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 xp(e){switch(e){case`int`:return`integer (safe-integer number or bigint)`;case`truncating-int`:return`integer (finite number, truncated toward zero, 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 Sp(e){return e instanceof Error?e.message:String(e)}function Cp(e){return e===null?`null`:e===void 0?`undefined`:Array.isArray(e)?`array`:e instanceof Map?`Map`:typeof e}function wp(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?Tp([...e.entries()]):e instanceof Set?[...e.values()].map((e,t)=>[t,e]):typeof e==`object`?Tp(Object.entries(e)):[]}function Tp(e){return[...e].sort((e,t)=>Ep(e[0],t[0]))}function Ep(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 Dp(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 Op(e){if(!/^[+-]?\d+$/.test(e))return 0;let t=Number.parseInt(e,10);return Number.isSafeInteger(t)?t:0}function kp(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 Ap(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 jp(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=Ap(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 Mp(e){if(typeof e==`bigint`)return e;if(typeof e==`number`)return BigInt(Math.trunc(e));if(typeof e==`string`){let t=Ap(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 Np(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 Pp(e){return JSON.stringify(e)??`null`}function Fp(){return{atoi:{fn:e=>Op(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`int`},int:{fn:e=>jp(e),argTypes:[`value`],arity:{kind:`exact`},returnType:`int`},int64:{fn:e=>Mp(e),argTypes:[`value`],arity:{kind:`exact`}},float64:{fn:e=>kp(e),argTypes:[`value`],arity:{kind:`exact`},returnType:`float`},toDecimal:{fn:e=>Np(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`int`},toRawJson:{fn:e=>Pp(e),argTypes:[`serializable`],arity:{kind:`exact`},returnType:`string`}}}const Ip={h:36e11,m:6e10,s:1e9,ms:1e6,us:1e3,µs:1e3,ns:1};function Lp(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*Ip[a],n=n.slice(e[0].length)}return t?-r:r}function Rp(e){if(e===0)return`0s`;let t=!1,n=e;n<0&&(t=!0,n=-n);let r;return r=n<Ip.us?`${Math.floor(n)}ns`:n<Ip.ms?zp(n,Ip.us,3,`µs`):n<Ip.s?zp(n,Ip.ms,6,`ms`):Bp(n),t?`-${r}`:r}function zp(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 Bp(e){let t=Math.floor(e/Ip.h);e-=t*Ip.h;let n=Math.floor(e/Ip.m);e-=n*Ip.m;let r=Math.floor(e/Ip.s),i=e-r*Ip.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 Vp(e){return e*Ip.s}function Hp(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 Up(e,t){let n=t().getTime()-Hp(e).getTime();return Rp(Math.round(n/1e3)*1e9)}const Wp=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],Gp=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],Kp=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],qp=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`];function Jp(e){return e<10?`0${e}`:String(e)}function Yp(e){return e<10?`00${e}`:e<100?`0${e}`:String(e)}function Xp(e){return e<10?` ${e}`:String(e)}function Zp(e){let t=e>=0?`+`:`-`,n=Math.abs(e);return`${t}${Jp(Math.floor(n/60))}${Jp(n%60)}`}function Qp(e){let t=e>=0?`+`:`-`,n=Math.abs(e);return`${t}${Jp(Math.floor(n/60))}:${Jp(n%60)}`}function $p(e){return`${e>=0?`+`:`-`}${Jp(Math.floor(Math.abs(e)/60))}`}function em(e){return e===0?`Z`:Zp(e)}function tm(e){return e===0?`Z`:Qp(e)}function nm(e){return e===0?`Z`:$p(e)}function rm(e,t,n){let r=e*1e6,i=String(r).padStart(9,`0`).slice(0,t);return n?i.replace(/0+$/,``):i}const im=[[`.000000000`,e=>`.${rm(e.ms,9,!1)}`],[`.999999999`,e=>{let t=rm(e.ms,9,!0);return t?`.${t}`:``}],[`.000000`,e=>`.${rm(e.ms,6,!1)}`],[`.999999`,e=>{let t=rm(e.ms,6,!0);return t?`.${t}`:``}],[`.000`,e=>`.${Yp(e.ms)}`],[`.999`,e=>{let t=Yp(e.ms).replace(/0+$/,``);return t?`.${t}`:``}],[`January`,e=>Wp[e.month-1]??`January`],[`Monday`,e=>Kp[e.weekday]??`Monday`],[`Z07:00`,e=>tm(e.offsetMinutes)],[`-07:00`,e=>Qp(e.offsetMinutes)],[`Z0700`,e=>em(e.offsetMinutes)],[`-0700`,e=>Zp(e.offsetMinutes)],[`2006`,e=>String(e.year)],[`Jan`,e=>Gp[e.month-1]??`Jan`],[`Mon`,e=>qp[e.weekday]??`Mon`],[`MST`,e=>e.tzAbbr],[`-07`,e=>$p(e.offsetMinutes)],[`Z07`,e=>nm(e.offsetMinutes)],[`15`,e=>Jp(e.hour)],[`01`,e=>Jp(e.month)],[`02`,e=>Jp(e.day)],[`_2`,e=>Xp(e.day)],[`03`,e=>Jp(e.hour12)],[`04`,e=>Jp(e.minute)],[`05`,e=>Jp(e.second)],[`06`,e=>Jp(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 am(e,t){let n=``,r=0;for(;r<e.length;){let i=!1;for(let[a,o]of im)if(e.startsWith(a,r)){n+=o(t),r+=a.length,i=!0;break}i||(n+=e[r++])}return n}const om={year:`numeric`,month:`2-digit`,day:`2-digit`,weekday:`long`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hour12:!1};function sm(e){let t=new Map;for(let n of e)t.set(n.type,n.value);return t}const cm=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`];function lm(e,t){let n;try{new Intl.DateTimeFormat(`en-US`,{timeZone:t}),n=t}catch{n=`UTC`}let r=sm(new Intl.DateTimeFormat(`en-US`,{...om,timeZone:n}).formatToParts(e)),i=parseInt(r.get(`hour`)??`0`,10)%24,a=sm(new Intl.DateTimeFormat(`en-US`,{timeZone:n,timeZoneName:`short`}).formatToParts(e)).get(`timeZoneName`)??n,o=um(sm(new Intl.DateTimeFormat(`en-US`,{timeZone:n,timeZoneName:`shortOffset`}).formatToParts(e)).get(`timeZoneName`)??`GMT`),s=cm.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 um(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 dm(){return Intl.DateTimeFormat().resolvedOptions().timeZone}function fm(e,t){return am(e,lm(Hp(t),dm()))}function pm(e,t,n){return am(e,lm(Hp(t),n))}function mm(e,t){let n=Hp(t),r=Lp(e);return Number.isNaN(r)?n:new Date(n.getTime()+r/1e6)}function hm(e){if(typeof e==`string`){let t=parseInt(e,10);return Number.isNaN(t)?`0s`:Rp(Vp(t))}return typeof e==`bigint`?Rp(Vp(Number(e))):typeof e==`number`?Rp(Vp(e)):`0s`}const gm=36e11*24*365,_m=36e11*24*30,vm=36e11*24,ym=36e11,bm=6e10,xm=1e9;function Sm(e){let t=Lp(String(e));if(Number.isNaN(t))return`0s`;let n=Math.abs(t);return n>gm?`${Math.floor(n/gm)}y`:n>_m?`${Math.floor(n/_m)}mo`:n>vm?`${Math.floor(n/vm)}d`:n>ym?`${Math.floor(n/ym)}h`:n>bm?`${Math.floor(n/bm)}m`:n>xm?`${Math.floor(n/xm)}s`:`0s`}function Cm(e){let t=lm(Hp(e),dm());return`${t.year}-${String(t.month).padStart(2,`0`)}-${String(t.day).padStart(2,`0`)}`}function wm(e,t){let n=lm(Hp(e),t);return`${n.year}-${String(n.month).padStart(2,`0`)}-${String(n.day).padStart(2,`0`)}`}function Tm(e){return e()}const Em=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],Dm=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`];function Om(){return{year:2e3,month:1,day:1,hour:0,minute:0,second:0,ms:0,offsetMinutes:0,isPM:!1,hour12:!1}}function km(e,t,n){return[e.slice(t,t+n),t+n]}function Am(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 jm(e,t){for(let[n,r]of Em.entries())if(e.startsWith(r,t))return[n+1,t+r.length];throw Error(`sprig toDate: expected month name at pos ${t}`)}function Mm(e,t){for(let[n,r]of Dm.entries())if(e.startsWith(r,t))return[n+1,t+r.length];throw Error(`sprig toDate: expected short month name at pos ${t}`)}function Nm(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 Pm(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 Fm(e,t){if(e[t]===` `){let[n,r]=Am(e,t+1,1,1);return[n,r]}return Am(e,t,1,2)}function Im(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]=Am(e,i,2,2);i=o;let s=0;if(n&&e[i]===`:`){let[t,n]=Am(e,i+1,2,2);s=t,i=n}else if(!n){let[t,n]=Am(e,i,2,2);s=t,i=n}return[r*(a*60+s),i]}function Lm(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]=Am(e,t+1,2,2);return[n*r*60,i]}return Im(e,t,n)}function Rm(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 zm(e,t,n){let[r,i]=km(e,t,n),a=parseInt(r.padEnd(9,`0`),10);return[Math.round(a/1e6),i]}function Bm(e,t,n,r){let i={...r};switch(e){case`January`:{let[e,r]=jm(t,n);return i.month=e,[r,i]}case`Monday`:return[Nm(t,n),i];case`Jan`:{let[e,r]=Mm(t,n);return i.month=e,[r,i]}case`Mon`:return[Pm(t,n),i];case`2006`:{let[e,r]=Am(t,n,4,4);return i.year=e,[r,i]}case`06`:{let[e,r]=Am(t,n,2,2);return i.year=e<70?2e3+e:1900+e,[r,i]}case`01`:{let[e,r]=Am(t,n,2,2);return i.month=e,[r,i]}case`1`:{let[e,r]=Am(t,n,1,2);return i.month=e,[r,i]}case`_2`:{let[e,r]=Fm(t,n);return i.day=e,[r,i]}case`02`:{let[e,r]=Am(t,n,2,2);return i.day=e,[r,i]}case`2`:{let[e,r]=Am(t,n,1,2);return i.day=e,[r,i]}case`15`:{let[e,r]=Am(t,n,2,2);return i.hour=e,[r,i]}case`03`:{let[e,r]=Am(t,n,2,2);return i.hour=e,i.hour12=!0,[r,i]}case`3`:{let[e,r]=Am(t,n,1,2);return i.hour=e,i.hour12=!0,[r,i]}case`04`:{let[e,r]=Am(t,n,2,2);return i.minute=e,[r,i]}case`4`:{let[e,r]=Am(t,n,1,2);return i.minute=e,[r,i]}case`05`:{let[e,r]=Am(t,n,2,2);return i.second=e,[r,i]}case`5`:{let[e,r]=Am(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[Rm(t,n),i];case`-0700`:{let[e,r]=Im(t,n,!1);return i.offsetMinutes=e,[r,i]}case`-07:00`:{let[e,r]=Im(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]=Am(t,n+1,2,2);return i.offsetMinutes=e*r*60,[a,i]}case`Z0700`:{let[e,r]=Lm(t,n,!1,!1);return i.offsetMinutes=e,[r,i]}case`Z07:00`:{let[e,r]=Lm(t,n,!0,!1);return i.offsetMinutes=e,[r,i]}case`Z07`:{let[e,r]=Lm(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]=zm(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]=zm(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]=zm(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 Vm=`.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 Hm(e,t){let n=0,r=0,i=Om();for(;n<e.length;){let a=!1;for(let o of Vm)if(e.startsWith(o,n)){let[e,s]=Bm(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 Um(e,t){return Hm(e,t)}function Wm(e){return String(Math.floor(Hp(e).getTime()/1e3))}function Gm(e=()=>new Date){return{now:{fn:()=>Tm(e),argTypes:[],arity:{kind:`exact`}},date:{fn:(e,t)=>fm(e,t),argTypes:[`string`,`value`],arity:{kind:`exact`}},dateInZone:{fn:(e,t,n)=>pm(e,t,n),argTypes:[`string`,`value`,`string`],arity:{kind:`exact`}},dateModify:{fn:(e,t)=>mm(e,t),argTypes:[`string`,`value`],arity:{kind:`exact`}},htmlDate:{fn:e=>Cm(e),argTypes:[`value`],arity:{kind:`exact`}},htmlDateInZone:{fn:(e,t)=>wm(e,t),argTypes:[`value`,`string`],arity:{kind:`exact`}},duration:{fn:e=>hm(e),argTypes:[`value`],arity:{kind:`exact`}},durationRound:{fn:e=>Sm(e),argTypes:[`value`],arity:{kind:`exact`}},toDate:{fn:(e,t)=>Um(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},ago:{fn:t=>Up(t,e),argTypes:[`value`],arity:{kind:`exact`}},unixEpoch:{fn:e=>Wm(e),argTypes:[`value`],arity:{kind:`exact`}}}}function Km(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 qm(...e){for(let t of e)if(!Km(t))return t}function Jm(e,t){return Km(t)?e:t}function Ym(e){return JSON.parse(e)}function Xm(e,t,n){return gf(n)?e:t}function Zm(e){return JSON.stringify(e)??`null`}function Qm(e){return JSON.stringify(e,null,2)??`null`}function $m(){return{default:{fn:(e,t)=>Jm(e,t),argTypes:[`value`,`truthy`],arity:{kind:`variadic`}},empty:{fn:e=>Km(e),argTypes:[`truthy`],arity:{kind:`exact`}},coalesce:{fn:(...e)=>qm(...e),argTypes:[`truthy`],arity:{kind:`variadic`}},ternary:{fn:(e,t,n)=>Xm(e,t,n),argTypes:[`value`,`value`,`truthy`],arity:{kind:`exact`}},fromJson:{fn:e=>Ym(e),argTypes:[`string`],arity:{kind:`exact`}},toJson:{fn:e=>Zm(e),argTypes:[`serializable`],arity:{kind:`exact`},returnType:`string`},toPrettyJson:{fn:e=>Qm(e),argTypes:[`serializable`],arity:{kind:`exact`},returnType:`string`}}}function eh(...e){let t={};for(let n=0;n<e.length;n+=2)t[e[n]]=e[n+1];return t}function th(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 eh(...t)}function nh(e,t){return e[t]}function rh(e,t){return t in e}function ih(e){return Object.keys(e)}function ah(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 oh(e,...t){let n={...e};for(let e of t)Object.assign(n,e);return n}function sh(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 ch(e,...t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function lh(e,...t){let n=[];for(let r of t)e in r&&n.push(r[e]);return n}function uh(e,t,n){return e[t]=n,e}function dh(e,t){return delete e[t],e}function fh(e){return Object.values(e)}function ph(){return{dict:{fn:(...e)=>eh(...e),argTypes:[`string`,`value`],arity:{kind:`alternating`,minimum:0}},get:{fn:(e,t)=>nh(e,t),argTypes:[`dict`,`string`],arity:{kind:`exact`}},set:{fn:(e,t,n)=>uh(e,t,n),argTypes:[`dict`,`string`,`value`],arity:{kind:`exact`}},unset:{fn:(e,t)=>dh(e,t),argTypes:[`dict`,`string`],arity:{kind:`exact`}},keys:{fn:e=>ih(e),argTypes:[`dict`],arity:{kind:`variadic`}},values:{fn:e=>fh(e),argTypes:[`dict`],arity:{kind:`exact`}},pluck:{fn:(e,...t)=>lh(e,...t),argTypes:[`string`,`dict`],arity:{kind:`variadic`}},pick:{fn:(e,...t)=>ch(e,...t),argTypes:[`dict`,`string`],arity:{kind:`variadic`}},omit:{fn:(e,...t)=>sh(e,...t),argTypes:[`dict`,`string`],arity:{kind:`variadic`}},hasKey:{fn:(e,t)=>rh(e,t),argTypes:[`dict`,`string`],arity:{kind:`exact`}},merge:{fn:(e,...t)=>ah(e,...t),argTypes:[`dict`,`dict`],arity:{kind:`variadic`}},mergeOverwrite:{fn:(e,...t)=>oh(e,...t),argTypes:[`dict`,`dict`],arity:{kind:`variadic`}}}}new TextEncoder,new Map(Array.from(`ABCDEFGHIJKLMNOPQRSTUVWXYZ234567`).map((e,t)=>[e,t])),new TextDecoder,new TextEncoder,new TextDecoder,new TextEncoder;function mh(...e){for(let t of e)if(Km(t))return!1;return!0}function hh(...e){for(let t of e)if(!Km(t))return!0;return!1}function gh(e,t){return[...e,t]}function _h(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 vh(e){return e.filter(e=>!Km(e))}function yh(...e){let t=[];for(let n of e)t.push(...n);return t}const bh={line:0,column:0,offset:0};function xh(e,t,n,r){return new Sd(e,t,n,r,bh)}function Sh(...e){if(e.length<3)throw xh(`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(!wh(t))throw xh(`dig`,e.length-1,`dict`,Th(t));for(let e=0;e<r.length;e++)if(typeof r[e]!=`string`)throw xh(`dig`,e,`string`,Th(r[e]));return Ch(t,n,r,e.length)}function Ch(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(!wh(a))throw xh(`dig`,r-1,`dict at intermediate key`,Th(a));return Ch(a,t,n.slice(1),r)}function wh(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Map)&&!(e instanceof Set)}function Th(e){return e===null?`null`:Array.isArray(e)?`array`:e instanceof Map?`Map`:e instanceof Set?`Set`:typeof e}function Eh(e){return e[0]}function Dh(e,t){return t.some(t=>ff(t,e))}function Oh(e){return e.slice(0,-1)}function kh(e){return e[e.length-1]}function Ah(e){return Array.isArray(e)||typeof e==`string`?e.length:e instanceof Map||e instanceof Set?e.size:Object.keys(e).length}function jh(...e){return e}function Mh(e,t){return[t,...e]}function Nh(e){return e.slice(1)}function Ph(e){return[...e].reverse()}function Fh(e,t,n){let r=t===void 0?0:t,i=n===void 0?e.length:n;return e.slice(r,i)}function Ih(e){let t=[];for(let n of e)n!=null&&t.push(String(n));return t.sort()}function Lh(e){let t=[];for(let n of e)t.some(e=>ff(e,n))||t.push(n);return t}function Rh(e,...t){return e.filter(e=>!t.some(t=>ff(t,e)))}function zh(){return{list:{fn:(...e)=>jh(...e),argTypes:[`value`],arity:{kind:`variadic`}},first:{fn:e=>Eh(e),argTypes:[`list`],arity:{kind:`exact`}},last:{fn:e=>kh(e),argTypes:[`list`],arity:{kind:`exact`}},rest:{fn:e=>Nh(e),argTypes:[`list`],arity:{kind:`exact`}},initial:{fn:e=>Oh(e),argTypes:[`list`],arity:{kind:`exact`}},len:{fn:e=>Ah(e),argTypes:[`sized`],arity:{kind:`exact`}},reverse:{fn:e=>Ph(e),argTypes:[`list`],arity:{kind:`exact`}},uniq:{fn:e=>Lh(e),argTypes:[`list`],arity:{kind:`exact`}},without:{fn:(e,...t)=>Rh(e,...t),argTypes:[`list`,`value`],arity:{kind:`variadic`}},has:{fn:(e,t)=>Dh(e,t),argTypes:[`value`,`list`],arity:{kind:`exact`}},compact:{fn:e=>vh(e),argTypes:[`list`],arity:{kind:`exact`}},slice:{fn:(e,t,n)=>Fh(e,t,n),argTypes:[`list`,`truncating-int`],arity:{kind:`variadic`}},concat:{fn:(...e)=>yh(...e),argTypes:[`list`],arity:{kind:`variadic`}},chunk:{fn:(e,t)=>_h(e,t),argTypes:[`int`,`list`],arity:{kind:`exact`}},prepend:{fn:(e,t)=>Mh(e,t),argTypes:[`list`,`value`],arity:{kind:`exact`}},append:{fn:(e,t)=>gh(e,t),argTypes:[`list`,`value`],arity:{kind:`exact`}},sortAlpha:{fn:e=>Ih(e),argTypes:[`list`],arity:{kind:`exact`},returnType:`list`},push:{fn:(e,t)=>gh(e,t),argTypes:[`list`,`value`],arity:{kind:`exact`}},tuple:{fn:(...e)=>jh(...e),argTypes:[`value`],arity:{kind:`variadic`}},dig:{fn:(...e)=>Sh(...e),argTypes:[`value`],arity:{kind:`variadic`}},all:{fn:(...e)=>mh(...e),argTypes:[`truthy`],arity:{kind:`variadic`},returnType:`bool`},any:{fn:(...e)=>hh(...e),argTypes:[`truthy`],arity:{kind:`variadic`},returnType:`bool`}}}function Bh(...e){return e.reduce((e,t)=>e+t,0)}function Vh(e){return e+1}function Hh(e){return e+1}function Uh(...e){return e.reduce((e,t)=>e+t,0)}function Wh(e){return Math.ceil(e)}function Gh(e,t){return Math.trunc(e/t)}function Kh(e,...t){return t.reduce((e,t)=>e/t,e)}function qh(e){return Math.floor(e)}function Jh(...e){return e.reduce((e,t)=>t>e?t:e,-1/0)}function Yh(...e){return e.reduce((e,t)=>Math.max(e,t),-1/0)}function Xh(...e){return e.reduce((e,t)=>t<e?t:e,1/0)}function Zh(...e){return e.reduce((e,t)=>Math.min(e,t),1/0)}function Qh(e,t){return e%t}function $h(...e){return e.reduce((e,t)=>e*t,1)}function eg(...e){return e.reduce((e,t)=>e*t,1)}function tg(e,t=0){let n=10**t;return Math.sign(e)*Math.round(Math.abs(e)*n)/n}function ng(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 rg(...e){let t=1;switch(e.length){case 0:return``;case 1:{let n=e[0];return n<1&&(t=-1),ng(1,n+t,t).join(` `)}case 2:{let t=e[0],n=e[1],r=n<t?-1:1;return ng(t,n+r,r).join(` `)}case 3:{let n=e[0],r=e[1],i=e[2];return i<n&&(t=-1,r>0)?``:ng(n,i+t,r).join(` `)}default:return``}}function ig(e,t){return e-t}function ag(e,...t){return t.reduce((e,t)=>e-t,e)}function og(e){return ng(0,e,e<0?-1:1)}function sg(){return{add:{fn:(...e)=>Bh(...e),argTypes:[`truncating-int`],arity:{kind:`variadic`}},sub:{fn:(e,t)=>ig(e,t),argTypes:[`truncating-int`,`truncating-int`],arity:{kind:`exact`}},mul:{fn:(...e)=>$h(...e),argTypes:[`truncating-int`,`truncating-int`],arity:{kind:`variadic`}},div:{fn:(e,t)=>Gh(e,t),argTypes:[`truncating-int`,`truncating-int`],arity:{kind:`exact`}},mod:{fn:(e,t)=>Qh(e,t),argTypes:[`truncating-int`,`truncating-int`],arity:{kind:`exact`}},min:{fn:(...e)=>Xh(...e),argTypes:[`truncating-int`,`truncating-int`],arity:{kind:`variadic`}},max:{fn:(...e)=>Jh(...e),argTypes:[`truncating-int`,`truncating-int`],arity:{kind:`variadic`}},floor:{fn:e=>qh(e),argTypes:[`float`],arity:{kind:`exact`}},ceil:{fn:e=>Wh(e),argTypes:[`float`],arity:{kind:`exact`}},round:{fn:(e,t)=>tg(e,t),argTypes:[`float`,`int`,`float`],arity:{kind:`variadic`}},addf:{fn:(...e)=>Uh(...e),argTypes:[`float`],arity:{kind:`variadic`}},subf:{fn:(e,...t)=>ag(e,...t),argTypes:[`float`,`float`],arity:{kind:`variadic`}},mulf:{fn:(...e)=>eg(...e),argTypes:[`float`,`float`],arity:{kind:`variadic`}},divf:{fn:(e,...t)=>Kh(e,...t),argTypes:[`float`,`float`],arity:{kind:`variadic`}},add1:{fn:e=>Vh(e),argTypes:[`truncating-int`],arity:{kind:`exact`}},add1f:{fn:e=>Hh(e),argTypes:[`float`],arity:{kind:`exact`}},maxf:{fn:(...e)=>Yh(...e),argTypes:[`float`,`float`],arity:{kind:`variadic`}},minf:{fn:(...e)=>Zh(...e),argTypes:[`float`,`float`],arity:{kind:`variadic`}},biggest:{fn:(...e)=>Jh(...e),argTypes:[`truncating-int`,`truncating-int`],arity:{kind:`variadic`}},seq:{fn:(...e)=>rg(...e),argTypes:[`int`],arity:{kind:`variadic`},returnType:`string`},until:{fn:e=>og(e),argTypes:[`int`],arity:{kind:`exact`},returnType:`list`},untilStep:{fn:(e,t,n)=>ng(e,t,n),argTypes:[`int`,`int`,`int`],arity:{kind:`exact`},returnType:`list`}}}Array.from({length:95},(e,t)=>String.fromCharCode(t+32)).join(``);function cg(e){return Array.from(e)}function lg(e,t){return e===``?cg(t):t.split(e)}function ug(e,t){let n=cg(t);return n.length<=e||e<4?t:`${n.slice(0,e-3).join(``)}...`}function dg(e,t,n){let r=cg(n);return t<7||r.length<t||e<0||e>r.length-t+1?n:`...${r.slice(e,e+t-6).join(``)}...`}const q={Invalid:0,Number:1,UpperCase:2,Alphabet:3,Connector:4,Punct:5,Other:6},fg=/^[-_\s]$/,pg=/^\p{P}$/u,mg=/^\p{L}$/u,hg=/^\p{Lu}$/u,gg=/^\p{N}$/u;function _g(e){return e!==void 0&&fg.test(e)}function vg(e){return e!==void 0&&mg.test(e)}function yg(e){return e!==void 0&&hg.test(e)}function bg(e){return e!==void 0&&gg.test(e)}function xg(e){return e!==void 0&&pg.test(e)}function Sg(e,t){if(t>=e.length)return{word:{wt:q.Invalid,text:``},next:t};let n=e[t],r=t+1;if(_g(n)){for(;r<e.length&&_g(e[r]);)r++;return{word:{wt:q.Connector,text:e.slice(t,r).join(``)},next:r}}if(xg(n)){for(;r<e.length&&xg(e[r]);)r++;return{word:{wt:q.Punct,text:e.slice(t,r).join(``)},next:r}}if(yg(n)){if(r>=e.length)return{word:{wt:q.UpperCase,text:n},next:r};if(yg(e[r])){let n=r;for(;n<e.length&&yg(e[n]);)n++;return n<e.length&&vg(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(vg(e[r])){let n=r+1;for(;n<e.length&&vg(e[n])&&!yg(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(vg(n)){for(;r<e.length&&vg(e[r])&&!yg(e[r]);)r++;return{word:{wt:q.Alphabet,text:e.slice(t,r).join(``)},next:r}}if(bg(n)){for(;r<e.length&&bg(e[r]);)r++;return{word:{wt:q.Number,text:e.slice(t,r).join(``)},next:r}}for(;r<e.length&&!_g(e[r])&&!vg(e[r])&&!bg(e[r])&&!xg(e[r]);)r++;return{word:{wt:q.Other,text:e.slice(t,r).join(``)},next:r}}function Cg(e,t,n){if(t.wt!==q.UpperCase&&t.wt!==q.Connector){e.push(t.text);return}for(let r of t.text)_g(r)?e.push(n):yg(r)?e.push(r.toLowerCase()):e.push(r)}function wg(e,t){if(e.length===0)return``;let n=cg(e),r=[],{word:i,next:a}=Sg(n,0);for(;a<n.length;){i.wt!==q.Connector&&Cg(r,i,t);let e=i,o=i;if({word:i,next:a}=Sg(n,a),e.wt===q.Number){for(;i.wt===q.Alphabet||i.wt===q.Number;)Cg(r,i,t),{word:i,next:a}=Sg(n,a);i.wt!==q.Invalid&&i.wt!==q.Punct&&i.wt!==q.Connector&&r.push(t);continue}if(e.wt===q.Connector){Cg(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}=Sg(n,a),i.wt!==q.Alphabet){Cg(r,s,t),i.wt!==q.Connector&&i.wt!==q.Punct&&r.push(t);continue}for(r.push(t),Cg(r,s,t);i.wt===q.Alphabet||i.wt===q.Number;)Cg(r,i,t),{word:i,next:a}=Sg(n,a);i.wt!==q.Invalid&&i.wt!==q.Connector&&i.wt!==q.Punct&&r.push(t)}return Cg(r,i,t),r.join(``).toLowerCase()}function Tg(e){if(e.length===0)return``;let t=cg(e),n=[],r=0,i=``;for(;r<t.length;){if(i=t[r],r++,!_g(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++,_g(i)&&_g(e)){n.push(e);continue}_g(e)?i=i.toUpperCase():(i=i.toLowerCase(),n.push(e))}return n.push(i),n.join(``)}function Eg(e){return Tg(e)}function Dg(...e){return e.join(` `)}function Og(e,t){return t.includes(e)}function kg(e,t){return t.startsWith(e)}function Ag(e,t){return t.endsWith(e)}function jg(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 Id(e){return e===` `||e===` `||e===`\r`||e===`
49
+ `}function Ld(e){return e===`+`||e===`-`}function Rd(e){return e>=`0`&&e<=`9`}function zd(e){return Rd(e)||e>=`a`&&e<=`f`||e>=`A`&&e<=`F`}function Bd(e){return e>=`0`&&e<=`7`}function Vd(e){return e===`0`||e===`1`}function Hd(e){return e>=`a`&&e<=`z`||e>=`A`&&e<=`Z`}function Ud(e){return Hd(e)||e===`_`}function Wd(e){return Ud(e)||Rd(e)}let Gd,Kd;function qd(e,t){return Kd(e,t)}var Jd=class e{static EMPTY=new e(new Map,void 0);#e;#t;constructor(e,t){this.#e=e,this.#t=t}static{Gd=(t,n)=>new e(t,n),Kd=(e,t)=>e.#e.get(t)??(e.#t&&Kd(e.#t,t))}has(e){return Kd(this,e)!==void 0}};function Yd(e,t,n=Jd.EMPTY){return new Xd(e,t,n).parseTemplate()}var Xd=class{lex;buf=[];defines=new Map;inherit;source;rangeDepth=0;constructor(e,t,n){this.source=e,this.inherit=n,this.lex=t?new Fd(e,t):new Fd(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:$d(n)});return n}errAt(e,t,n={}){return new xd(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 ${$d(e)}`,{found:$d(e)})}return{root:e,defines:Gd(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=Qd(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 Zd(e,t);let r=this.parseAction();r!==null&&t.push(r);continue}throw this.errAt(n,`unexpected ${$d(n)} at top level`,{found:$d(n)})}return Zd(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 xd(`{{${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 xd(`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:$d(e)});return cf(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(!ef(e.type))throw this.errAt(e,"missing command after `|`",{expected:`command`,found:$d(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=[tf(this.next())];for(;this.peek().type===`Comma`;)this.next(),n.push(tf(this.expect(`Variable`,`$variable`)));return{vars:n,isAssign:this.next().type===`Assign`}}parseCommand(){let e=this.peek().pos,t=[this.parsePrimary()];for(;ef(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 tf(e);case`Identifier`:return{type:`Identifier`,pos:e.pos,ident:e.value};case`String`:return{type:`String`,pos:e.pos,raw:e.value,value:cf(e.value,e.pos,this.source)};case`Number`:return rf(e);case`Char`:return af(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 ${$d(e)}`,{expected:`command argument`,found:$d(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 Zd(e,t){return{type:`List`,pos:e,nodes:t}}function Qd(e){return{trimLeft:e.trimLeft===!0,trimRight:e.trimRight===!0}}function $d(e){return e.type===`EOF`?`end of input`:e.value||e.type}function ef(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 tf(e){return{type:`Variable`,pos:e.pos,idents:nf(e.value)}}function nf(e){let t=e.indexOf(`.`);return t===-1?[e]:[e.slice(0,t),...e.slice(t+1).split(`.`)]}function rf(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=of(i);return{...s,intValue:e}}if(a){let e=sf(i);return{...s,floatValue:e}}let c=sf(i);return{...s,complexValue:[0,c]}}function af(e,t){let n=lf(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 of(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 sf(e){return Number(e)}function cf(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 xd(`bad escape sequence \\${o}`,t,{expected:`valid escape sequence`,found:`\\${o}`,source:n})}}return r}function lf(e,t,n){let r=cf(`"${e.slice(1,-1).replace(/"/g,`\\"`)}"`,t,n);if(r.length===0)throw new xd(`empty rune literal`,t,{source:n});return r.codePointAt(0)??0}function uf(e,t){if(t(e)!==!1)for(let n of df(e))uf(n,t)}function df(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 Md(e)}}const ff=Symbol(`go-template-js.MISSING`);function pf(e,t){if(e==null)return ff;if(e instanceof Map)return e.has(t)?e.get(t):ff;if(Array.isArray(e))return ff;if(typeof e==`object`){let n=e;return t in n?n[t]:ff}return ff}function mf(e,t){let n=e;for(let e of t){if(n===ff)return ff;n=pf(n,e)}return n}function hf(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)=>hf(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)||!hf(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=>hf(e[n],t[n])):!1}return!1}const gf=new WeakSet;function _f(e){return gf.add(e),e}function vf(e){return gf.has(e)}function yf(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 bf(e,t){return{eq:{fn:(e,...t)=>t.some(t=>Cf(e,t)),argTypes:[`comparable`,`comparable`],arity:{kind:`variadic`}},ne:{fn:(e,t)=>!Cf(e,t),argTypes:[`comparable`,`comparable`],arity:{kind:`exact`}},lt:{fn:(e,t)=>wf(e,t)<0,argTypes:[`ordered`,`ordered`],arity:{kind:`exact`}},le:{fn:(e,t)=>wf(e,t)<=0,argTypes:[`ordered`,`ordered`],arity:{kind:`exact`}},gt:{fn:(e,t)=>wf(e,t)>0,argTypes:[`ordered`,`ordered`],arity:{kind:`exact`}},ge:{fn:(e,t)=>wf(e,t)>=0,argTypes:[`ordered`,`ordered`],arity:{kind:`exact`}},len:{fn:e=>Tf(e),argTypes:[`sized`],arity:{kind:`exact`}},index:{fn:(e,...t)=>{let n=e;for(let e of t)n=Ef(n,e);return n},argTypes:[`collection`,`index-key`],arity:{kind:`variadic`}},slice:{fn:(e,...t)=>Of(e,t),argTypes:[`sliceable`,`int`],arity:{kind:`variadic`}},print:{fn:(...t)=>jf(t,e),argTypes:[`stringifiable`],arity:{kind:`variadic`},returnType:`string`},println:{fn:(...t)=>`${jf(t,e)}\n`,argTypes:[`stringifiable`],arity:{kind:`variadic`},returnType:`string`},printf:{fn:(n,...r)=>Bf(n,r,e,t),argTypes:[`string`,`stringifiable`],arity:{kind:`variadic`},returnType:`string`},toString:{fn:n=>Uf(n,e,t),argTypes:[`value`],arity:{kind:`exact`},returnType:`string`},toStrings:{fn:n=>n.map(n=>Uf(n,e,t)),argTypes:[`list`],arity:{kind:`exact`}},call:{fn:(e,...t)=>e(...t),argTypes:[`callable`,`value`],arity:{kind:`variadic`}},html:{fn:(...t)=>Pf(jf(t,e)),argTypes:[`stringifiable`],arity:{kind:`variadic`},returnType:`string`},js:{fn:(...t)=>Lf(jf(t,e)),argTypes:[`stringifiable`],arity:{kind:`variadic`},returnType:`string`},urlquery:{fn:(...t)=>zf(jf(t,e)),argTypes:[`stringifiable`],arity:{kind:`variadic`},returnType:`string`},not:{fn:e=>!yf(e),argTypes:[`truthy`],arity:{kind:`exact`}}}}function xf(){return{and:_f({argTypes:[`truthy`,`truthy`],arity:{kind:`variadic`},fn:(...e)=>{let t=!0;for(let n of e)if(t=n(),!yf(t))return t;return t}}),or:_f({argTypes:[`truthy`,`truthy`],arity:{kind:`variadic`},fn:(...e)=>{let t=!1;for(let n of e)if(t=n(),yf(t))return t;return t}})}}function Sf(e,t){return{...bf(e,t),...xf()}}function Cf(e,t){return typeof e==`number`&&typeof t==`bigint`?BigInt(e)===t:typeof e==`bigint`&&typeof t==`number`?e===BigInt(t):hf(e,t)}function wf(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 Tf(e){return typeof e==`string`||Array.isArray(e)?e.length:e instanceof Map||e instanceof Set?e.size:Object.keys(e).length}function Ef(e,t){if(Array.isArray(e)||typeof e==`string`){let n=Df(t,e.length);if(n===e.length)throw Error(`index out of range: ${n}`);return e[n]}if(e instanceof Map)return e.get(t);if(typeof e==`object`&&e){if(typeof t!=`string`)throw Error(`index: object index must be string, got ${kf(t)}`);return e[t]}throw Error(`index: cannot index ${kf(e)}`)}function Df(e,t){let n=typeof e==`bigint`?Number(e):e;if(typeof n!=`number`||!Number.isInteger(n))throw Error(`cannot index slice/array with type ${Af(e)}`);if(n<0||n>t)throw Error(`index out of range: ${String(e)}`);return n}function Of(e,t){if(t.length>3)throw Error(`too many slice indexes: ${t.length}`);if(typeof e==`string`&&t.length>2)throw Error(`cannot 3-index slice a string`);let n=e.length,r=[0,n,n];t.forEach((e,t)=>{r[t]=Df(e,n)});let[i,a,o]=r;if(i>a)throw Error(`invalid slice index: ${i} > ${a}`);if(a>o)throw Error(`invalid slice index: ${a} > ${o}`);return e.slice(i,a)}function kf(e){return e===null?`null`:e===void 0?`undefined`:Array.isArray(e)?`array`:e instanceof Map?`Map`:typeof e}function Af(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 jf(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+=Mf(a,t),r=o}return n}function Mf(e,t){return e==null?`<nil>`:typeof e==`string`?e:t(e)}const Nf={"\0":`�`,'"':`&#34;`,"'":`&#39;`,"&":`&amp;`,"<":`&lt;`,">":`&gt;`};function Pf(e){return e.replace(/[\0"'&<>]/g,e=>Nf[e]??e)}const Ff={"\\":`\\\\`,"'":`\\'`,'"':`\\"`,"<":`\\u003C`,">":`\\u003E`,"&":`\\u0026`,"=":`\\u003D`},If=/^[\p{L}\p{M}\p{N}\p{P}\p{S}]$/u;function Lf(e){let t=``;for(let n of e){let e=Ff[n];if(e!==void 0){t+=e;continue}let r=n.codePointAt(0);if(r<32||r>=128&&!If.test(n)){t+=`\\u${r.toString(16).toUpperCase().padStart(4,`0`)}`;continue}t+=n}return t}const Rf=new TextEncoder;function zf(e){let t=``,n=Rf.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 Bf(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+=Vf(l??``,u,d,n,r),o=c+1}return i}function Vf(e,t,n,r,i){switch(e){case`s`:return typeof n==`string`?Hf(t,n):Hf(t,Mf(n,r));case`d`:return typeof n!=`number`&&typeof n!=`bigint`?`%!${e}(${Af(n)}=${Mf(n,r)})`:Hf(t,String(typeof n==`bigint`?n:Math.trunc(n)));case`v`:return Hf(t,Uf(n,r,i));case`q`:return Hf(t,JSON.stringify(Mf(n,r)));case`f`:{if(typeof n!=`number`&&typeof n!=`bigint`)return`%!${e}(${Af(n)}=${Mf(n,r)})`;let i=t.includes(`.`)?Number(t.split(`.`)[1]):6;return Hf(t,Number(n).toFixed(i))}case`t`:return Hf(t,yf(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 Hf(t,r)}return typeof n!=`number`&&typeof n!=`bigint`?`%!${e}(${Af(n)}=${Mf(n,r)})`:typeof n==`bigint`?Hf(t,n.toString(16)):Hf(t,Math.trunc(n).toString(16));default:return`%!${e}(${Af(n)}=${Mf(n,r)})`}}function Hf(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 Uf(e,t,n){return e==null?`<nil>`:typeof e==`string`?e:n(e)?t(e):Array.isArray(e)?`[${e.map(e=>Uf(e,t,n)).join(` `)}]`:e instanceof Map?Wf([...e.entries()],t,n):Gf(e)?Wf(Object.entries(e),t,n):String(e)}function Wf(e,t,n){let r=e=>Uf(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 Gf(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 Kf(e){return{dot:e,root:e,parent:void 0,vars:new Map}}function qf(e,t){return{dot:t,root:e.root,parent:e,vars:new Map}}function Jf(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 Yf(e,t,n){e.vars.set(t,n)}const Xf=[`string`,`int`,`truncating-int`,`float`,`bool`,`T`,`ordered`,`list`,`dict`,`sized`,`comparable`,`stringifiable`,`liftable`,`callable`,`collection`,`index-key`,`sliceable`,`truthy`,`reflective`,`value`,`serializable`],Zf=new Set([`default`,`zero`,`error`]);function Qf(e){if(e===void 0)return`default`;if(Zf.has(e))return e;throw Error(`EngineConfig.missingKey: expected "default" | "zero" | "error", got ${$f(e)}`)}function $f(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 ep(e){if(e!==void 0){if(typeof e!=`object`||!e)throw Error(`EngineConfig.delims: expected { left, right } object, got ${$f(e)}`);if(typeof e.left!=`string`||e.left.length===0)throw Error(`EngineConfig.delims.left: expected non-empty string, got ${$f(e.left)}`);if(typeof e.right!=`string`||e.right.length===0)throw Error(`EngineConfig.delims.right: expected non-empty string, got ${$f(e.right)}`);return{left:e.left,right:e.right}}}function tp(e){switch(e.kind){case`exact`:return!1;case`variadic`:return!0;case`alternating`:return!0}}function np(e){let t=new Set(Xf);for(let[n,r]of Object.entries(e)){if(r.argTypes.forEach((e,r)=>{if(!t.has(e))throw Error(`EngineConfig.funcs.${n}: argTypes[${r}] is ${JSON.stringify(e)}, which is not an ArgType; declare one of ${Xf.join(`, `)}`)}),tp(r.arity)&&r.argTypes.length===0)throw Error(`EngineConfig.funcs.${n}: arity ${JSON.stringify(r.arity.kind)} needs at least one declared argType (it reads its repeating slot from the end of argTypes); declare the slots the Go signature has, or use { kind: "exact" }`);if(r.arity.kind===`alternating`&&(!Number.isSafeInteger(r.arity.minimum)||r.arity.minimum<0))throw Error(`EngineConfig.funcs.${n}: arity "alternating" needs a non-negative integer minimum, got ${String(r.arity.minimum)}; the gate rejects every count below it, so a negative or non-finite minimum would disable the lower bound`)}return e}const rp=Object.freeze({kind:`break`}),ip=Object.freeze({kind:`continue`}),ap={kind:`none`};let op;(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{op=(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 sp(e){let t=new Set,n=e=>{uf(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 cp={kind:`dynamic`};function lp(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=Ap(e);return typeof t==`number`||typeof t==`bigint`?{kind:`literal`,value:t}:cp}case`Pipe`:{if(e.decls.length!==0||e.cmds.length!==1)return cp;let t=e.cmds[0];if(t===void 0)return cp;let n=t.args[0];return n===void 0||n.type!==`Identifier`?cp:{kind:`call`,name:n.ident,args:t.args.slice(1).map(lp)}}default:return cp}}function up(e){let t=[],n=e=>{uf(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(lp);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 dp=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??yp,this.isT=e.isT??fp,this.missingKey=Qf(e.missingKey),this.delims=ep(e.delims),this.funcs=np({...Sf(this.toString,this.isT),...e.funcs??{}})}parse(e,t){let n=Yd(e,this.delims,t);return op(n.source,e=>this.evalParsed(n,e),n.defines,sp(n),up(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=Kf(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 rp;case`Continue`:throw ip;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 Sd(`unexpected ${e.type} at statement position`,e.pos,{source:n.source});default:Md(e)}}evalIf(e,t,n){yf(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(yf(r)){let i=qf(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=Dp(r);try{if(a.length===0){e.elseList&&this.evalList(e.elseList,t,n);return}for(let[r,o]of a){let a=qf(t,o);if(i.length===1)Yf(a,i[0]?.idents[0]??`$`,o);else if(i.length>=2){let e=i[0]?.idents[0]??`$`,t=i[1]?.idents[0]??`$`;Yf(a,e,r),Yf(a,t,o)}try{this.evalList(e.list,a,n)}catch(e){if(e===ip)continue;throw e}}}catch(e){if(e===rp)return;throw e}}evalTemplateInvoke(e,t,n){let r=qd(n.defines,e.name);if(!r)throw new Sd(`template ${JSON.stringify(e.name)} is not defined`,e.pos,{source:n.source});let i=qf(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=qf(t,e.pipe?this.evalPipe(e.pipe,t,n):t.dot),i=qd(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 Sd(`empty pipeline`,e.pos,{source:n.source});let r=this.evalCommand(e.cmds[0],t,n,ap);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)Yf(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 Sd(`empty command`,e.pos,{source:n.source});let i=e.args[0];if(i.type!==`Identifier`){if(e.args.length>1)throw new Sd(`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 Cd(i.ident,i.pos,{source:n.source,available:Object.keys(this.funcs)});let o=e.args.slice(1),s=vf(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)}return this.invoke(i.ident,a,c,e.pos,n)}invoke(e,t,n,r,i){mp(e,t,n,r,i.source,this.toString,this.fromString,this.isT);try{return t.fn(...n)}catch(t){throw t instanceof Td?new Td(t.funcName,t.argIndex,t.expected,t.receivedSummary,r,{source:i.source}):t instanceof Od?new Od(t.message,r,{source:i.source}):t instanceof bd?t:new Sd(`error calling ${e}: ${Tp(t)}`,r,{source:i.source,cause: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 Ap(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 Cd(e.ident,e.pos,{source:n.source,available:Object.keys(this.funcs)});return this.invoke(e.ident,t,[],e.pos,n)}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 Sd(`cannot evaluate ${e.type} as a value`,e.pos,{source:n.source})}}resolveFieldChain(e,t,n,r){let i=mf(e,t);if(i!==ff)return i;if(this.missingKey===`error`)throw new Dd(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=Jf(t,i);if(!a.found)throw new Sd(`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(Uf(e,this.toString,this.isT)))}};const fp=e=>typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Map);function pp(e){return new dp(e)}function mp(e,t,n,r,i,a=yp,o=vp,s=fp){let{argTypes:c,arity:l}=t,u=hp(c,l);if(n.length<u.minimum||n.length>u.maximum)throw new wd(e,u,n.length,r,{source:i});let d=gp(c,l),f=-1,p=-1;for(let t=0;t<n.length;t++){let c=d(t),l=n[t];if(!_p(c,l,a,s))throw(c===`int`||c===`truncating-int`)&&(typeof l==`number`||typeof l==`bigint`)?new Ed(e,t+1,l,r,{source:i}):new Td(e,t+1,wp(c),Ep(l),r,{source:i});if(c===`liftable`&&typeof l==`string`&&(n[t]=o(l)),c===`truncating-int`?n[t]=Math.trunc(Number(l)):(c===`int`||c===`float`)&&(n[t]=Number(l)),c===`ordered`){if(f===-1)f=t;else if(!xp(n[f],l))throw new Td(e,t+1,`${wp(`ordered`)} of the same kind as ${Ep(n[f])}`,Ep(l),r,{source:i})}if(c===`comparable`){if(p===-1)p=t;else if(!Sp(n[p],l))throw new Td(e,t+1,`${wp(`comparable`)} of the same kind as ${Ep(n[p])}`,Ep(l),r,{source:i})}}}function hp(e,t){switch(t.kind){case`exact`:return{minimum:e.length,maximum:e.length};case`variadic`:return{minimum:e.length-1,maximum:1/0};case`alternating`:return{minimum:t.minimum,maximum:1/0}}}function gp(e,t){let n=e.length;switch(t.kind){case`exact`:return t=>e[t];case`variadic`:return t=>e[Math.min(t,n-1)];case`alternating`:return t=>e[t%n]}}function _p(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.isSafeInteger(t)||typeof t==`bigint`&&Number.isSafeInteger(Number(t));case`truncating-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 Gf(t);case`sized`:return typeof t==`string`||Array.isArray(t)||t instanceof Map||t instanceof Set||Gf(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||Gf(t);case`callable`:return typeof t==`function`;case`collection`:return typeof t==`string`||Array.isArray(t)||t instanceof Map||Gf(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 bp(t);default:throw Error(`invalid ArgType: ${String(e)}`)}}function vp(e){return e}function yp(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 Td(`<engine.toString>`,1,`string (or a consumer-supplied toString that flattens T)`,Ep(e),{line:0,column:0,offset:0})}function bp(e){try{return JSON.stringify(e)!==void 0}catch{return!1}}function xp(e,t){return typeof e==typeof t||typeof e==`number`&&typeof t==`bigint`||typeof e==`bigint`&&typeof t==`number`}function Sp(e,t){let n=Cp(e),r=Cp(t);return n===`nil`||r===`nil`?!0:n===r}function Cp(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 wp(e){switch(e){case`int`:return`integer (safe-integer number or bigint)`;case`truncating-int`:return`integer (finite number, truncated toward zero, 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 Tp(e){return e instanceof Error?e.message:String(e)}function Ep(e){return e===null?`null`:e===void 0?`undefined`:Array.isArray(e)?`array`:e instanceof Map?`Map`:typeof e}function Dp(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?Op([...e.entries()]):e instanceof Set?[...e.values()].map((e,t)=>[t,e]):typeof e==`object`?Op(Object.entries(e)):[]}function Op(e){return[...e].sort((e,t)=>kp(e[0],t[0]))}function kp(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 Ap(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 jp(e){if(!/^[+-]?\d+$/.test(e))return 0;let t=Number.parseInt(e,10);return Number.isSafeInteger(t)?t:0}function Mp(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 Np(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 Pp(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=Np(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 Fp(e){if(typeof e==`bigint`)return e;if(typeof e==`number`)return BigInt(Math.trunc(e));if(typeof e==`string`){let t=Np(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 Ip(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 Lp(e){return JSON.stringify(e)??`null`}function Rp(){return{atoi:{fn:e=>jp(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`int`},int:{fn:e=>Pp(e),argTypes:[`value`],arity:{kind:`exact`},returnType:`int`},int64:{fn:e=>Fp(e),argTypes:[`value`],arity:{kind:`exact`}},float64:{fn:e=>Mp(e),argTypes:[`value`],arity:{kind:`exact`},returnType:`float`},toDecimal:{fn:e=>Ip(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`int`},toRawJson:{fn:e=>Lp(e),argTypes:[`serializable`],arity:{kind:`exact`},returnType:`string`}}}const zp={h:36e11,m:6e10,s:1e9,ms:1e6,us:1e3,µs:1e3,ns:1};function Bp(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*zp[a],n=n.slice(e[0].length)}return t?-r:r}function Vp(e){if(e===0)return`0s`;let t=!1,n=e;n<0&&(t=!0,n=-n);let r;return r=n<zp.us?`${Math.floor(n)}ns`:n<zp.ms?Hp(n,zp.us,3,`µs`):n<zp.s?Hp(n,zp.ms,6,`ms`):Up(n),t?`-${r}`:r}function Hp(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 Up(e){let t=Math.floor(e/zp.h);e-=t*zp.h;let n=Math.floor(e/zp.m);e-=n*zp.m;let r=Math.floor(e/zp.s),i=e-r*zp.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 Wp(e){return e*zp.s}function Gp(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 Kp(e,t){let n=t().getTime()-Gp(e).getTime();return Vp(Math.round(n/1e3)*1e9)}const qp=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],Jp=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],Yp=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],Xp=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`];function Zp(e){return e<10?`0${e}`:String(e)}function Qp(e){return e<10?`00${e}`:e<100?`0${e}`:String(e)}function $p(e){return e<10?` ${e}`:String(e)}function em(e){let t=e>=0?`+`:`-`,n=Math.abs(e);return`${t}${Zp(Math.floor(n/60))}${Zp(n%60)}`}function tm(e){let t=e>=0?`+`:`-`,n=Math.abs(e);return`${t}${Zp(Math.floor(n/60))}:${Zp(n%60)}`}function nm(e){return`${e>=0?`+`:`-`}${Zp(Math.floor(Math.abs(e)/60))}`}function rm(e){return e===0?`Z`:em(e)}function im(e){return e===0?`Z`:tm(e)}function am(e){return e===0?`Z`:nm(e)}function om(e,t,n){let r=e*1e6,i=String(r).padStart(9,`0`).slice(0,t);return n?i.replace(/0+$/,``):i}const sm=[[`.000000000`,e=>`.${om(e.ms,9,!1)}`],[`.999999999`,e=>{let t=om(e.ms,9,!0);return t?`.${t}`:``}],[`.000000`,e=>`.${om(e.ms,6,!1)}`],[`.999999`,e=>{let t=om(e.ms,6,!0);return t?`.${t}`:``}],[`.000`,e=>`.${Qp(e.ms)}`],[`.999`,e=>{let t=Qp(e.ms).replace(/0+$/,``);return t?`.${t}`:``}],[`January`,e=>qp[e.month-1]??`January`],[`Monday`,e=>Yp[e.weekday]??`Monday`],[`Z07:00`,e=>im(e.offsetMinutes)],[`-07:00`,e=>tm(e.offsetMinutes)],[`Z0700`,e=>rm(e.offsetMinutes)],[`-0700`,e=>em(e.offsetMinutes)],[`2006`,e=>String(e.year)],[`Jan`,e=>Jp[e.month-1]??`Jan`],[`Mon`,e=>Xp[e.weekday]??`Mon`],[`MST`,e=>e.tzAbbr],[`-07`,e=>nm(e.offsetMinutes)],[`Z07`,e=>am(e.offsetMinutes)],[`15`,e=>Zp(e.hour)],[`01`,e=>Zp(e.month)],[`02`,e=>Zp(e.day)],[`_2`,e=>$p(e.day)],[`03`,e=>Zp(e.hour12)],[`04`,e=>Zp(e.minute)],[`05`,e=>Zp(e.second)],[`06`,e=>Zp(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 cm(e,t){let n=``,r=0;for(;r<e.length;){let i=!1;for(let[a,o]of sm)if(e.startsWith(a,r)){n+=o(t),r+=a.length,i=!0;break}i||(n+=e[r++])}return n}const lm={year:`numeric`,month:`2-digit`,day:`2-digit`,weekday:`long`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hour12:!1};function um(e){let t=new Map;for(let n of e)t.set(n.type,n.value);return t}const dm=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`];function fm(e,t){let n;try{new Intl.DateTimeFormat(`en-US`,{timeZone:t}),n=t}catch{n=`UTC`}let r=um(new Intl.DateTimeFormat(`en-US`,{...lm,timeZone:n}).formatToParts(e)),i=parseInt(r.get(`hour`)??`0`,10)%24,a=um(new Intl.DateTimeFormat(`en-US`,{timeZone:n,timeZoneName:`short`}).formatToParts(e)).get(`timeZoneName`)??n,o=pm(um(new Intl.DateTimeFormat(`en-US`,{timeZone:n,timeZoneName:`shortOffset`}).formatToParts(e)).get(`timeZoneName`)??`GMT`),s=dm.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 pm(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 mm(){return Intl.DateTimeFormat().resolvedOptions().timeZone}function hm(e,t){return cm(e,fm(Gp(t),mm()))}function gm(e,t,n){return cm(e,fm(Gp(t),n))}function _m(e,t){let n=Gp(t),r=Bp(e);return Number.isNaN(r)?n:new Date(n.getTime()+r/1e6)}function vm(e){if(typeof e==`string`){let t=parseInt(e,10);return Number.isNaN(t)?`0s`:Vp(Wp(t))}return typeof e==`bigint`?Vp(Wp(Number(e))):typeof e==`number`?Vp(Wp(e)):`0s`}const ym=36e11*24*365,bm=36e11*24*30,xm=36e11*24,Sm=36e11,Cm=6e10,wm=1e9;function Tm(e){let t=Bp(String(e));if(Number.isNaN(t))return`0s`;let n=Math.abs(t);return n>ym?`${Math.floor(n/ym)}y`:n>bm?`${Math.floor(n/bm)}mo`:n>xm?`${Math.floor(n/xm)}d`:n>Sm?`${Math.floor(n/Sm)}h`:n>Cm?`${Math.floor(n/Cm)}m`:n>wm?`${Math.floor(n/wm)}s`:`0s`}function Em(e){let t=fm(Gp(e),mm());return`${t.year}-${String(t.month).padStart(2,`0`)}-${String(t.day).padStart(2,`0`)}`}function Dm(e,t){let n=fm(Gp(e),t);return`${n.year}-${String(n.month).padStart(2,`0`)}-${String(n.day).padStart(2,`0`)}`}function Om(e){return e()}const km=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],Am=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`];function jm(){return{year:2e3,month:1,day:1,hour:0,minute:0,second:0,ms:0,offsetMinutes:0,isPM:!1,hour12:!1}}function Mm(e,t,n){return[e.slice(t,t+n),t+n]}function Nm(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 Pm(e,t){for(let[n,r]of km.entries())if(e.startsWith(r,t))return[n+1,t+r.length];throw Error(`sprig toDate: expected month name at pos ${t}`)}function Fm(e,t){for(let[n,r]of Am.entries())if(e.startsWith(r,t))return[n+1,t+r.length];throw Error(`sprig toDate: expected short month name at pos ${t}`)}function Im(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 Lm(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 Rm(e,t){if(e[t]===` `){let[n,r]=Nm(e,t+1,1,1);return[n,r]}return Nm(e,t,1,2)}function zm(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]=Nm(e,i,2,2);i=o;let s=0;if(n&&e[i]===`:`){let[t,n]=Nm(e,i+1,2,2);s=t,i=n}else if(!n){let[t,n]=Nm(e,i,2,2);s=t,i=n}return[r*(a*60+s),i]}function Bm(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]=Nm(e,t+1,2,2);return[n*r*60,i]}return zm(e,t,n)}function Vm(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 Hm(e,t,n){let[r,i]=Mm(e,t,n),a=parseInt(r.padEnd(9,`0`),10);return[Math.round(a/1e6),i]}function Um(e,t,n,r){let i={...r};switch(e){case`January`:{let[e,r]=Pm(t,n);return i.month=e,[r,i]}case`Monday`:return[Im(t,n),i];case`Jan`:{let[e,r]=Fm(t,n);return i.month=e,[r,i]}case`Mon`:return[Lm(t,n),i];case`2006`:{let[e,r]=Nm(t,n,4,4);return i.year=e,[r,i]}case`06`:{let[e,r]=Nm(t,n,2,2);return i.year=e<70?2e3+e:1900+e,[r,i]}case`01`:{let[e,r]=Nm(t,n,2,2);return i.month=e,[r,i]}case`1`:{let[e,r]=Nm(t,n,1,2);return i.month=e,[r,i]}case`_2`:{let[e,r]=Rm(t,n);return i.day=e,[r,i]}case`02`:{let[e,r]=Nm(t,n,2,2);return i.day=e,[r,i]}case`2`:{let[e,r]=Nm(t,n,1,2);return i.day=e,[r,i]}case`15`:{let[e,r]=Nm(t,n,2,2);return i.hour=e,[r,i]}case`03`:{let[e,r]=Nm(t,n,2,2);return i.hour=e,i.hour12=!0,[r,i]}case`3`:{let[e,r]=Nm(t,n,1,2);return i.hour=e,i.hour12=!0,[r,i]}case`04`:{let[e,r]=Nm(t,n,2,2);return i.minute=e,[r,i]}case`4`:{let[e,r]=Nm(t,n,1,2);return i.minute=e,[r,i]}case`05`:{let[e,r]=Nm(t,n,2,2);return i.second=e,[r,i]}case`5`:{let[e,r]=Nm(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[Vm(t,n),i];case`-0700`:{let[e,r]=zm(t,n,!1);return i.offsetMinutes=e,[r,i]}case`-07:00`:{let[e,r]=zm(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]=Nm(t,n+1,2,2);return i.offsetMinutes=e*r*60,[a,i]}case`Z0700`:{let[e,r]=Bm(t,n,!1,!1);return i.offsetMinutes=e,[r,i]}case`Z07:00`:{let[e,r]=Bm(t,n,!0,!1);return i.offsetMinutes=e,[r,i]}case`Z07`:{let[e,r]=Bm(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]=Hm(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]=Hm(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]=Hm(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 Wm=`.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 Gm(e,t){let n=0,r=0,i=jm();for(;n<e.length;){let a=!1;for(let o of Wm)if(e.startsWith(o,n)){let[e,s]=Um(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 Km(e,t){return Gm(e,t)}function qm(e){return String(Math.floor(Gp(e).getTime()/1e3))}function Jm(e=()=>new Date){return{now:{fn:()=>Om(e),argTypes:[],arity:{kind:`exact`}},date:{fn:(e,t)=>hm(e,t),argTypes:[`string`,`value`],arity:{kind:`exact`}},dateInZone:{fn:(e,t,n)=>gm(e,t,n),argTypes:[`string`,`value`,`string`],arity:{kind:`exact`}},dateModify:{fn:(e,t)=>_m(e,t),argTypes:[`string`,`value`],arity:{kind:`exact`}},htmlDate:{fn:e=>Em(e),argTypes:[`value`],arity:{kind:`exact`}},htmlDateInZone:{fn:(e,t)=>Dm(e,t),argTypes:[`value`,`string`],arity:{kind:`exact`}},duration:{fn:e=>vm(e),argTypes:[`value`],arity:{kind:`exact`}},durationRound:{fn:e=>Tm(e),argTypes:[`value`],arity:{kind:`exact`}},toDate:{fn:(e,t)=>Km(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},ago:{fn:t=>Kp(t,e),argTypes:[`value`],arity:{kind:`exact`}},unixEpoch:{fn:e=>qm(e),argTypes:[`value`],arity:{kind:`exact`}}}}function Ym(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 Xm(...e){for(let t of e)if(!Ym(t))return t}function Zm(e,t){return Ym(t)?e:t}function Qm(e){return JSON.parse(e)}function $m(e,t,n){return yf(n)?e:t}function eh(e){return JSON.stringify(e)??`null`}function th(e){return JSON.stringify(e,null,2)??`null`}function nh(){return{default:{fn:(e,t)=>Zm(e,t),argTypes:[`value`,`truthy`],arity:{kind:`variadic`}},empty:{fn:e=>Ym(e),argTypes:[`truthy`],arity:{kind:`exact`}},coalesce:{fn:(...e)=>Xm(...e),argTypes:[`truthy`],arity:{kind:`variadic`}},ternary:{fn:(e,t,n)=>$m(e,t,n),argTypes:[`value`,`value`,`truthy`],arity:{kind:`exact`}},fromJson:{fn:e=>Qm(e),argTypes:[`string`],arity:{kind:`exact`}},toJson:{fn:e=>eh(e),argTypes:[`serializable`],arity:{kind:`exact`},returnType:`string`},toPrettyJson:{fn:e=>th(e),argTypes:[`serializable`],arity:{kind:`exact`},returnType:`string`}}}function rh(...e){let t={};for(let n=0;n<e.length;n+=2)t[e[n]]=e[n+1];return t}function ih(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 rh(...t)}function ah(e,t){return e[t]}function oh(e,t){return t in e}function sh(e){return Object.keys(e)}function ch(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 lh(e,...t){let n={...e};for(let e of t)Object.assign(n,e);return n}function uh(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 dh(e,...t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function fh(e,...t){let n=[];for(let r of t)e in r&&n.push(r[e]);return n}function ph(e,t,n){return e[t]=n,e}function mh(e,t){return delete e[t],e}function hh(e){return Object.values(e)}function gh(){return{dict:{fn:(...e)=>rh(...e),argTypes:[`string`,`value`],arity:{kind:`alternating`,minimum:0}},get:{fn:(e,t)=>ah(e,t),argTypes:[`dict`,`string`],arity:{kind:`exact`}},set:{fn:(e,t,n)=>ph(e,t,n),argTypes:[`dict`,`string`,`value`],arity:{kind:`exact`}},unset:{fn:(e,t)=>mh(e,t),argTypes:[`dict`,`string`],arity:{kind:`exact`}},keys:{fn:e=>sh(e),argTypes:[`dict`],arity:{kind:`variadic`}},values:{fn:e=>hh(e),argTypes:[`dict`],arity:{kind:`exact`}},pluck:{fn:(e,...t)=>fh(e,...t),argTypes:[`string`,`dict`],arity:{kind:`variadic`}},pick:{fn:(e,...t)=>dh(e,...t),argTypes:[`dict`,`string`],arity:{kind:`variadic`}},omit:{fn:(e,...t)=>uh(e,...t),argTypes:[`dict`,`string`],arity:{kind:`variadic`}},hasKey:{fn:(e,t)=>oh(e,t),argTypes:[`dict`,`string`],arity:{kind:`exact`}},merge:{fn:(e,...t)=>ch(e,...t),argTypes:[`dict`,`dict`],arity:{kind:`variadic`}},mergeOverwrite:{fn:(e,...t)=>lh(e,...t),argTypes:[`dict`,`dict`],arity:{kind:`variadic`}}}}new TextEncoder,new Map(Array.from(`ABCDEFGHIJKLMNOPQRSTUVWXYZ234567`).map((e,t)=>[e,t])),new TextDecoder,new TextEncoder,new TextDecoder,new TextEncoder;function _h(...e){for(let t of e)if(Ym(t))return!1;return!0}function vh(...e){for(let t of e)if(!Ym(t))return!0;return!1}function yh(e,t){return[...e,t]}function bh(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 xh(e){return e.filter(e=>!Ym(e))}function Sh(...e){let t=[];for(let n of e)t.push(...n);return t}const Ch={line:0,column:0,offset:0};function wh(e,t,n,r){return new Td(e,t,n,r,Ch)}function Th(...e){if(e.length<3)throw wh(`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(!Dh(t))throw wh(`dig`,e.length-1,`dict`,Oh(t));for(let e=0;e<r.length;e++)if(typeof r[e]!=`string`)throw wh(`dig`,e,`string`,Oh(r[e]));return Eh(t,n,r,e.length)}function Eh(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(!Dh(a))throw wh(`dig`,r-1,`dict at intermediate key`,Oh(a));return Eh(a,t,n.slice(1),r)}function Dh(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Map)&&!(e instanceof Set)}function Oh(e){return e===null?`null`:Array.isArray(e)?`array`:e instanceof Map?`Map`:e instanceof Set?`Set`:typeof e}function kh(e){return e[0]}function Ah(e,t){return t.some(t=>hf(t,e))}function jh(e){return e.slice(0,-1)}function Mh(e){return e[e.length-1]}function Nh(e){return Array.isArray(e)||typeof e==`string`?e.length:e instanceof Map||e instanceof Set?e.size:Object.keys(e).length}function Ph(...e){return e}function Fh(e,t){return[t,...e]}function Ih(e){return e.slice(1)}function Lh(e){return[...e].reverse()}function Rh(e,t,n){let r=t===void 0?0:t,i=n===void 0?e.length:n;return e.slice(r,i)}function zh(e){let t=[];for(let n of e)n!=null&&t.push(String(n));return t.sort()}function Bh(e){let t=[];for(let n of e)t.some(e=>hf(e,n))||t.push(n);return t}function Vh(e,...t){return e.filter(e=>!t.some(t=>hf(t,e)))}function Hh(){return{list:{fn:(...e)=>Ph(...e),argTypes:[`value`],arity:{kind:`variadic`}},first:{fn:e=>kh(e),argTypes:[`list`],arity:{kind:`exact`}},last:{fn:e=>Mh(e),argTypes:[`list`],arity:{kind:`exact`}},rest:{fn:e=>Ih(e),argTypes:[`list`],arity:{kind:`exact`}},initial:{fn:e=>jh(e),argTypes:[`list`],arity:{kind:`exact`}},len:{fn:e=>Nh(e),argTypes:[`sized`],arity:{kind:`exact`}},reverse:{fn:e=>Lh(e),argTypes:[`list`],arity:{kind:`exact`}},uniq:{fn:e=>Bh(e),argTypes:[`list`],arity:{kind:`exact`}},without:{fn:(e,...t)=>Vh(e,...t),argTypes:[`list`,`value`],arity:{kind:`variadic`}},has:{fn:(e,t)=>Ah(e,t),argTypes:[`value`,`list`],arity:{kind:`exact`}},compact:{fn:e=>xh(e),argTypes:[`list`],arity:{kind:`exact`}},slice:{fn:(e,t,n)=>Rh(e,t,n),argTypes:[`list`,`truncating-int`],arity:{kind:`variadic`}},concat:{fn:(...e)=>Sh(...e),argTypes:[`list`],arity:{kind:`variadic`}},chunk:{fn:(e,t)=>bh(e,t),argTypes:[`int`,`list`],arity:{kind:`exact`}},prepend:{fn:(e,t)=>Fh(e,t),argTypes:[`list`,`value`],arity:{kind:`exact`}},append:{fn:(e,t)=>yh(e,t),argTypes:[`list`,`value`],arity:{kind:`exact`}},sortAlpha:{fn:e=>zh(e),argTypes:[`list`],arity:{kind:`exact`},returnType:`list`},push:{fn:(e,t)=>yh(e,t),argTypes:[`list`,`value`],arity:{kind:`exact`}},tuple:{fn:(...e)=>Ph(...e),argTypes:[`value`],arity:{kind:`variadic`}},dig:{fn:(...e)=>Th(...e),argTypes:[`value`],arity:{kind:`variadic`}},all:{fn:(...e)=>_h(...e),argTypes:[`truthy`],arity:{kind:`variadic`},returnType:`bool`},any:{fn:(...e)=>vh(...e),argTypes:[`truthy`],arity:{kind:`variadic`},returnType:`bool`}}}function Uh(...e){return e.reduce((e,t)=>e+t,0)}function Wh(e){return e+1}function Gh(e){return e+1}function Kh(...e){return e.reduce((e,t)=>e+t,0)}function qh(e){return Math.ceil(e)}function Jh(e,t){return Math.trunc(e/t)}function Yh(e,...t){return t.reduce((e,t)=>e/t,e)}function Xh(e){return Math.floor(e)}function Zh(...e){return e.reduce((e,t)=>t>e?t:e,-1/0)}function Qh(...e){return e.reduce((e,t)=>Math.max(e,t),-1/0)}function $h(...e){return e.reduce((e,t)=>t<e?t:e,1/0)}function eg(...e){return e.reduce((e,t)=>Math.min(e,t),1/0)}function tg(e,t){return e%t}function ng(...e){return e.reduce((e,t)=>e*t,1)}function rg(...e){return e.reduce((e,t)=>e*t,1)}function ig(e,t=0){let n=10**t;return Math.sign(e)*Math.round(Math.abs(e)*n)/n}function ag(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 og(...e){let t=1;switch(e.length){case 0:return``;case 1:{let n=e[0];return n<1&&(t=-1),ag(1,n+t,t).join(` `)}case 2:{let t=e[0],n=e[1],r=n<t?-1:1;return ag(t,n+r,r).join(` `)}case 3:{let n=e[0],r=e[1],i=e[2];return i<n&&(t=-1,r>0)?``:ag(n,i+t,r).join(` `)}default:return``}}function sg(e,t){return e-t}function cg(e,...t){return t.reduce((e,t)=>e-t,e)}function lg(e){return ag(0,e,e<0?-1:1)}function ug(){return{add:{fn:(...e)=>Uh(...e),argTypes:[`truncating-int`],arity:{kind:`variadic`}},sub:{fn:(e,t)=>sg(e,t),argTypes:[`truncating-int`,`truncating-int`],arity:{kind:`exact`}},mul:{fn:(...e)=>ng(...e),argTypes:[`truncating-int`,`truncating-int`],arity:{kind:`variadic`}},div:{fn:(e,t)=>Jh(e,t),argTypes:[`truncating-int`,`truncating-int`],arity:{kind:`exact`}},mod:{fn:(e,t)=>tg(e,t),argTypes:[`truncating-int`,`truncating-int`],arity:{kind:`exact`}},min:{fn:(...e)=>$h(...e),argTypes:[`truncating-int`,`truncating-int`],arity:{kind:`variadic`}},max:{fn:(...e)=>Zh(...e),argTypes:[`truncating-int`,`truncating-int`],arity:{kind:`variadic`}},floor:{fn:e=>Xh(e),argTypes:[`float`],arity:{kind:`exact`}},ceil:{fn:e=>qh(e),argTypes:[`float`],arity:{kind:`exact`}},round:{fn:(e,t)=>ig(e,t),argTypes:[`float`,`int`,`float`],arity:{kind:`variadic`}},addf:{fn:(...e)=>Kh(...e),argTypes:[`float`],arity:{kind:`variadic`}},subf:{fn:(e,...t)=>cg(e,...t),argTypes:[`float`,`float`],arity:{kind:`variadic`}},mulf:{fn:(...e)=>rg(...e),argTypes:[`float`,`float`],arity:{kind:`variadic`}},divf:{fn:(e,...t)=>Yh(e,...t),argTypes:[`float`,`float`],arity:{kind:`variadic`}},add1:{fn:e=>Wh(e),argTypes:[`truncating-int`],arity:{kind:`exact`}},add1f:{fn:e=>Gh(e),argTypes:[`float`],arity:{kind:`exact`}},maxf:{fn:(...e)=>Qh(...e),argTypes:[`float`,`float`],arity:{kind:`variadic`}},minf:{fn:(...e)=>eg(...e),argTypes:[`float`,`float`],arity:{kind:`variadic`}},biggest:{fn:(...e)=>Zh(...e),argTypes:[`truncating-int`,`truncating-int`],arity:{kind:`variadic`}},seq:{fn:(...e)=>og(...e),argTypes:[`int`],arity:{kind:`variadic`},returnType:`string`},until:{fn:e=>lg(e),argTypes:[`int`],arity:{kind:`exact`},returnType:`list`},untilStep:{fn:(e,t,n)=>ag(e,t,n),argTypes:[`int`,`int`,`int`],arity:{kind:`exact`},returnType:`list`}}}Array.from({length:95},(e,t)=>String.fromCharCode(t+32)).join(``);function dg(e){return Array.from(e)}function fg(e,t){return e===``?dg(t):t.split(e)}function pg(e,t){let n=dg(t);return n.length<=e||e<4?t:`${n.slice(0,e-3).join(``)}...`}function mg(e,t,n){let r=dg(n);return t<7||r.length<t||e<0||e>r.length-t+1?n:`...${r.slice(e,e+t-6).join(``)}...`}const q={Invalid:0,Number:1,UpperCase:2,Alphabet:3,Connector:4,Punct:5,Other:6},hg=/^[-_\s]$/,gg=/^\p{P}$/u,_g=/^\p{L}$/u,vg=/^\p{Lu}$/u,yg=/^\p{N}$/u;function bg(e){return e!==void 0&&hg.test(e)}function xg(e){return e!==void 0&&_g.test(e)}function Sg(e){return e!==void 0&&vg.test(e)}function Cg(e){return e!==void 0&&yg.test(e)}function wg(e){return e!==void 0&&gg.test(e)}function Tg(e,t){if(t>=e.length)return{word:{wt:q.Invalid,text:``},next:t};let n=e[t],r=t+1;if(bg(n)){for(;r<e.length&&bg(e[r]);)r++;return{word:{wt:q.Connector,text:e.slice(t,r).join(``)},next:r}}if(wg(n)){for(;r<e.length&&wg(e[r]);)r++;return{word:{wt:q.Punct,text:e.slice(t,r).join(``)},next:r}}if(Sg(n)){if(r>=e.length)return{word:{wt:q.UpperCase,text:n},next:r};if(Sg(e[r])){let n=r;for(;n<e.length&&Sg(e[n]);)n++;return n<e.length&&xg(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(xg(e[r])){let n=r+1;for(;n<e.length&&xg(e[n])&&!Sg(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(xg(n)){for(;r<e.length&&xg(e[r])&&!Sg(e[r]);)r++;return{word:{wt:q.Alphabet,text:e.slice(t,r).join(``)},next:r}}if(Cg(n)){for(;r<e.length&&Cg(e[r]);)r++;return{word:{wt:q.Number,text:e.slice(t,r).join(``)},next:r}}for(;r<e.length&&!bg(e[r])&&!xg(e[r])&&!Cg(e[r])&&!wg(e[r]);)r++;return{word:{wt:q.Other,text:e.slice(t,r).join(``)},next:r}}function Eg(e,t,n){if(t.wt!==q.UpperCase&&t.wt!==q.Connector){e.push(t.text);return}for(let r of t.text)bg(r)?e.push(n):Sg(r)?e.push(r.toLowerCase()):e.push(r)}function Dg(e,t){if(e.length===0)return``;let n=dg(e),r=[],{word:i,next:a}=Tg(n,0);for(;a<n.length;){i.wt!==q.Connector&&Eg(r,i,t);let e=i,o=i;if({word:i,next:a}=Tg(n,a),e.wt===q.Number){for(;i.wt===q.Alphabet||i.wt===q.Number;)Eg(r,i,t),{word:i,next:a}=Tg(n,a);i.wt!==q.Invalid&&i.wt!==q.Punct&&i.wt!==q.Connector&&r.push(t);continue}if(e.wt===q.Connector){Eg(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}=Tg(n,a),i.wt!==q.Alphabet){Eg(r,s,t),i.wt!==q.Connector&&i.wt!==q.Punct&&r.push(t);continue}for(r.push(t),Eg(r,s,t);i.wt===q.Alphabet||i.wt===q.Number;)Eg(r,i,t),{word:i,next:a}=Tg(n,a);i.wt!==q.Invalid&&i.wt!==q.Connector&&i.wt!==q.Punct&&r.push(t)}return Eg(r,i,t),r.join(``).toLowerCase()}function Og(e){if(e.length===0)return``;let t=dg(e),n=[],r=0,i=``;for(;r<t.length;){if(i=t[r],r++,!bg(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++,bg(i)&&bg(e)){n.push(e);continue}bg(e)?i=i.toUpperCase():(i=i.toLowerCase(),n.push(e))}return n.push(i),n.join(``)}function kg(e){return Og(e)}function Ag(...e){return e.join(` `)}function jg(e,t){return t.includes(e)}function Mg(e,t){return t.startsWith(e)}function Ng(e,t){return t.endsWith(e)}function Pg(e,t){let n=` `.repeat(Math.max(0,e));return t.split(`
51
51
  `).map(e=>n+e).join(`
52
- `)}function Mg(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 Ng(e,t){let n=[];for(let e of t){if(typeof e==`object`&&e)throw xh(`join`,2,`list of strings/primitives`,`list element of type ${Pg(e)}`);n.push(String(e))}return n.join(e)}function Pg(e){return Array.isArray(e)?`array`:e instanceof Map?`Map`:e instanceof Set?`Set`:`object`}function Fg(e){return wg(e,`-`)}function Ig(e){return e.toLowerCase()}function Lg(e,t){return`\n${jg(e,t)}`}function Rg(e){return e.replace(/\s+/g,``)}function zg(e,t,n){return n===1?e:t}function Bg(...e){return e.map(e=>`"${e}"`).join(` `)}function Vg(e){return e.replace(/[\\.+*?()|[\]{}^$]/g,`\\$&`)}function Hg(e,t){return t.repeat(Math.max(0,e))}function Ug(e,t,n){return lg(e,n).join(t)}function Wg(e){return wg(e,`_`)}function Gg(e,t){let n=lg(e,t),r={};for(let e=0;e<n.length;e++)r[`_${e}`]=n[e];return r}function Kg(e,t){return lg(e,t)}function qg(e,t,n){let r=Jg(n,e,t),i={};for(let e=0;e<r.length;e++)i[`_${e}`]=r[e]??``;return i}function Jg(e,t,n){if(n===0)return[];let r=lg(t,e);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 Yg(...e){return e.map(e=>`'${e}'`).join(` `)}function Xg(e,t,n){let r=cg(n),i=t<0||t>r.length?r.length:t,a=Math.min(Math.max(0,e),i);return r.slice(a,i).join(``)}function Zg(e){let t=``;for(let n of e)Qg(n)?t+=n.toLowerCase():$g(n)?t+=n.toUpperCase():t+=n;return t}function Qg(e){return e!==e.toLowerCase()&&e===e.toUpperCase()}function $g(e){return e!==e.toUpperCase()&&e===e.toLowerCase()}function e_(e){return e.replace(/\b([a-zA-Z])/g,e=>e.toUpperCase())}function t_(e){return e.trim()}function n_(e,t){if(e.length===0)return t;let n=new Set(cg(e)),r=cg(t),i=0;for(;i<r.length&&n.has(r[i]);)i+=1;let a=r.length;for(;a>i&&n.has(r[a-1]);)--a;return r.slice(i,a).join(``)}function r_(e,t){return t.startsWith(e)?t.slice(e.length):t}function i_(e,t){return t.endsWith(e)?t.slice(0,t.length-e.length):t}function a_(e,t){let n=cg(t);if(e<0){let r=-e;return r>=n.length?t:n.slice(n.length-r).join(``)}return e>=n.length?t:n.slice(0,e).join(``)}function o_(e){return e.replace(/\b([A-Z])/g,e=>e.toLowerCase())}function s_(e){return e.toUpperCase()}function c_(e,t){return l_(e,`
53
- `,t)}function l_(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 u_(e,t,n){return l_(e,t,n)}function d_(){return{abbrev:{fn:(e,t)=>ug(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},abbrevboth:{fn:(e,t,n)=>dg(e,t,n),argTypes:[`int`,`int`,`string`],arity:{kind:`exact`}},camelcase:{fn:e=>Eg(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},cat:{fn:(...e)=>Dg(...e),argTypes:[`string`],arity:{kind:`variadic`}},contains:{fn:(e,t)=>Og(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},hasPrefix:{fn:(e,t)=>kg(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},hasSuffix:{fn:(e,t)=>Ag(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},indent:{fn:(e,t)=>jg(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},initials:{fn:e=>Mg(e),argTypes:[`string`],arity:{kind:`exact`}},join:{fn:(e,t)=>Ng(e,t),argTypes:[`string`,`list`],arity:{kind:`exact`}},kebabcase:{fn:e=>Fg(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},lower:{fn:e=>Ig(e),argTypes:[`string`],arity:{kind:`exact`}},nindent:{fn:(e,t)=>Lg(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},nospace:{fn:e=>Rg(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},plural:{fn:(e,t,n)=>zg(e,t,n),argTypes:[`string`,`string`,`int`],arity:{kind:`exact`},returnType:`string`},quote:{fn:(...e)=>Bg(...e),argTypes:[`string`],arity:{kind:`variadic`}},regexQuoteMeta:{fn:e=>Vg(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},repeat:{fn:(e,t)=>Hg(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},replace:{fn:(e,t,n)=>Ug(e,t,n),argTypes:[`string`,`string`,`string`],arity:{kind:`exact`}},snakecase:{fn:e=>Wg(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},split:{fn:(e,t)=>Gg(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},splitList:{fn:(e,t)=>Kg(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},splitn:{fn:(e,t,n)=>qg(e,t,n),argTypes:[`string`,`int`,`string`],arity:{kind:`exact`},returnType:`dict`},squote:{fn:(...e)=>Yg(...e),argTypes:[`string`],arity:{kind:`variadic`}},substr:{fn:(e,t,n)=>Xg(e,t,n),argTypes:[`int`,`int`,`string`],arity:{kind:`exact`}},swapcase:{fn:e=>Zg(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},title:{fn:e=>e_(e),argTypes:[`string`],arity:{kind:`exact`}},trim:{fn:e=>t_(e),argTypes:[`string`],arity:{kind:`exact`}},trimAll:{fn:(e,t)=>n_(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},trimPrefix:{fn:(e,t)=>r_(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},trimSuffix:{fn:(e,t)=>i_(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},trunc:{fn:(e,t)=>a_(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},untitle:{fn:e=>o_(e),argTypes:[`string`],arity:{kind:`exact`}},upper:{fn:e=>s_(e),argTypes:[`string`],arity:{kind:`exact`}},wrap:{fn:(e,t)=>c_(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},wrapWith:{fn:(e,t,n)=>u_(e,t,n),argTypes:[`int`,`string`,`string`],arity:{kind:`exact`}}}}function f_(e){return e}function p_(e,t,n){return n===void 0?_u+hu(e)+`.`+hu(t):m_(n)}function m_(e){return _u+hu(e)}function h_(e,t){return e+`.`+t}function g_(e){return e+`.page`}const __=[`closeOnPick`,`paged`,`key`,`distribution`],v_=e=>__.includes(e),y_=`"closeOnPick" (bool, default false), "paged" (bool, default true), "key" (string, accordion grouping), "distribution" (one of ${ua.map(e=>`"${e}"`).join(`, `)}; default "van-der-corput")`;function b_(e){for(let t of Object.keys(e))if(!v_(t))throw Error(`unknown {{ menu }} option "${t}" — the options dict takes ${y_}`);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&&!da(r))throw Error(`{{ menu }} option "distribution" must be one of: ${ua.join(`, `)}; got ${JSON.stringify(r)}`);return{closeOnPick:t(`closeOnPick`,!1),paged:t(`paged`,!0),key:n,distribution:pa(r)}}const x_=`default`,S_={};function C_(e){return[...new Set([x_,...Object.keys(e)])]}function w_(e,t,n){return to(void 0,e,t,x_,n)}function T_(e,t){let n={[x_]:S_,...e}[t];if(n===void 0)throw Error(`Preset "${t}" is not declared in this config — effectivePresetName collapses unknown names to "${x_}", which always resolves; a miss here means a raw name reached this function without going through that resolution`);return n}function E_(e,t){let n=T_(e.presets,t).root??kc;return{node:Nc(Ic(n,e.root)),path:Lc(n)?`presets.${t}.root`:`root`}}function D_(e,t){return{...e.globals,...T_(e.presets,t).globals}}const O_=`menu`,k_=`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`,A_=e=>e.kind===`call`&&e.name===`dict`,j_=e=>e.kind===`literal`&&typeof e.value!=`object`,M_=e=>Wc(``,e,2)===void 0;function N_(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&&A_(i)?i:void 0,o=a===void 0?r:r.slice(0,-1);if(o.some(A_))return t(`whose options (dict …) is not its last argument — ${k_}`);if(i!==void 0&&a===void 0&&!j_(i)&&M_(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=Wc(`whose trigger`,o.length,2);if(s!==void 0)return t(`${s} — ${k_}`);let c=a===void 0?{}:th(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=b_(c)}catch(e){return t(`with invalid options — ${e.message}`)}let u=l.key;if(u!==void 0){let e=xu(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 "${m_(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 P_(e){let t=up({fromString:e=>e});try{return t.parse(e).referencedCalls().filter(e=>e.name===O_).map(N_)}catch{return`parse-failed`}}function F_(e){let t=up({fromString:e=>e});try{return t.parse(e).referencedFunctions().has(O_)}catch{return!1}}function I_(e,t,n){e.issues.push({path:t,message:n,line:U(e.source,[`root`])})}function L_(e,t){Su(e,t,_u,`{{ menu }} helpers`);for(let[n,r]of Object.entries(t.helpers??{}))F_(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:U(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`&&F_(i)&&I_(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 js(Pc(t.root)))typeof n.when==`string`&&F_(n.when)&&I_(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.`);for(let[t,{template:r}]of Object.entries(n)){if(r===void 0||!F_(r))continue;let n=P_(r);if(n!==`parse-failed`)for(let r of n){let n=r.kind===`issue`?r.message:R_(r.apply);n!==void 0&&I_(e,`segments.${t}`,`segment "${t}" has a {{ menu }} ${n}.`)}}}function R_(e){if(e===``)return`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`;if(f_(e)===`closed`)return`whose apply action is named "${Hc}", which collides with the menu's closed-state sentinel and leaves it unopenable. Rename the action`}function z_(e,t){let n={},r={},i=new Map,a=new Set,o=(e,n)=>{let r=`segments.${e}`;a.has(`${r}\0${n}`)||(a.add(`${r}\0${n}`),t.push({path:r,message:n}))};for(let t of C_(e.presets)){let a=new Map,s=new Map;for(let c of js(E_(e,t).node)){if(c.kind!==`segment`)continue;let t=e.segments[c.name];if(t===void 0)continue;i.has(c.name)||i.set(c.name,P_(t.template));let l=i.get(c.name);if(l===`parse-failed`)continue;let u=Ds(c);for(let[e,t]of l.entries()){if(t.kind===`issue`||R_(t.apply)!==void 0)continue;let{apply:i,options:l}=t,d=f_(i),f=p_(u,i,l.key),p=g_(f),m=l.key===void 0?`ind ${u} ${i}`:`key ${l.key}`,h=[f,p].find(e=>{let t=a.get(e);return t!==void 0&&t!==m});if(h!==void 0){o(c.name,`two {{ menu }} disclosures normalize to the same state key ("${h}") 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}a.set(f,m),a.set(p,m);let g=h_(f,d),_=`${c.name}\0${e}`,v=s.get(g);if(v!==void 0&&v!==_){o(c.name,`two {{ menu }} disclosures resolve to the same identity ("${g}") — ${l.key===void 0?`a segment cannot contain two menus over the same apply action "${i}"`:`menus sharing key "${l.key}" must have distinct apply actions`}.`);continue}s.set(g,_),r[g]=$c(f,d),n[f]=Qc(f,Hc),n[p]={kind:`state`,key:p,default:`0`},r[p]={set:p,int:!0}}}}return{...e,variables:{...e.variables,...n},actions:{...e.actions,...r}}}const B_=up({fromString:e=>e}),V_=`edit.mode`,H_=`edit.configure`,U_=`edit.toggle`,W_=`edit.unconfigure`,G_=[U_,W_],K_=`arrange`,q_=`${vu}draft.`;function J_(e,t){return`${e}:${t}`}const Y_={variable:V_,key:V_,member:K_},X_=Jc(Y_);function Z_(e){try{return B_.parse(e).referencedCalls().some(e=>e.name===`action`&&e.args[0]===`edit.toggle`)}catch{return!1}}function Q_(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`&&Z_(e))return!0;return!1}function $_(e,t){if(Su(e,t,vu,`edit mode`),!Q_(t))return;let{variables:n,actions:r}=ev();t.variables={...t.variables??{},...n},t.actions={...t.actions??{},...r}}function ev(){return{variables:{[V_]:Qc(V_,Hc),[H_]:Qc(H_,Hc)},actions:{[U_]:$c(V_,K_),[W_]:{set:H_,to:Hc}}}}const tv=/"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|`[^`]*`/g;function*nv(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 rv=`[A-Za-z_]\\w*(?:\\.[A-Za-z_]\\w*)*`,iv=RegExp(`^(?:(\\$)(?:\\.(${rv}))?|\\.(${rv})?)(?=[\\s)]|$)`);function av(e,t,n){let r=iv.exec(e.trimStart());if(r===null)return null;let[i,a]=r[1]===void 0?[t,r[3]]:[n,r[2]];return i===null?null:a===void 0?i:`${i}${a}.`}const ov=/^(\w+)\b\s*([\s\S]*)$/;function*sv(e,t){let n=[t];for(let r of nv(e)){let e=r.replace(/^-(?=\s)/,``).trim(),[,i=``,a=``]=ov.exec(e)??[],o=n[n.length-1],s=n.length>1?n[n.length-2]:o;if(i===`end`){n.length>1&&n.pop();continue}if(i===`else`){yield{code:e,dot:s};let r=/^with\b([\s\S]*)$/.exec(a);n[n.length-1]=r===null?s:av(r[1],s,t);continue}yield{code:e,dot:o},i===`if`&&n.push(o),i===`with`&&n.push(av(a,o,t)),(i===`range`||i===`define`||i===`block`)&&n.push(null)}}const cv=/(?<![.$])\btemplate\s+$/;function*lv(e,t,n){let r=0;for(let i of[...e.matchAll(tv)]){let a=i.index+i[0].length;cv.test(e.slice(r,i.index))&&(yield{name:i[0].slice(1,-1),at:av(e.slice(a),t,n)}),r=a}}function*uv(e,t){let n=new Set;function*r(e,i,a,o){for(let{code:s,dot:c}of[...sv(e,i)]){yield{code:s,dot:c,root:i,via:a};for(let e of[...lv(s,c,i)]){let i=Object.hasOwn(t,e.name)?t[e.name]:void 0,a=`${e.name}\0${e.at??`\0`}`;i===void 0||o.has(e.name)||n.has(a)||(n.add(a),yield*r(i,e.at,e.name,new Set([...o,e.name])))}}}yield*r(e,``,null,new Set)}const dv=RegExp(`(?<![A-Za-z0-9_)$])(\\$?)\\.(${rv})`,`g`);function*fv({code:e,dot:t,root:n}){let r=e.replace(tv,``);for(let e of[...r.matchAll(dv)]){let r=e[1]===`$`?n:t;r!==null&&(yield`${r}${e[2]}`)}}function pv(e,t){let n=new Map;for(let r of uv(e,t))for(let e of fv(r))n.has(e)||n.set(e,r.via);return n}const mv=/(?<![.$])\b(action|picker|menu|carousel)\s+$/,hv={action:1,picker:2,menu:1,carousel:1};function*gv(e){let t=0,n=0,r=`action`;for(let i of[...e.matchAll(tv)]){let a=mv.exec(e.slice(t,i.index));a!==null&&(n=hv[a[1]],r=a[1]===`action`?`action`:`options`),n>0&&(yield{name:i[0].slice(1,-1),site:r},n--),t=i.index+i[0].length}}function _v(e,t){let n=new Map;for(let{code:r,via:i}of uv(e,t))for(let{name:e,site:t}of gv(r)){let r=`${e}\0${i??`\0`}`;n.has(r)||n.set(r,{name:e,site:t,via:i})}return[...n.values()]}function vv(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 yv(e){let t=new Set,n=new Set,r=(e,r)=>{t.add(e),bv(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 bv(e){return(e.kind===`shell`||e.kind===`file`)&&Is(e.parse)===`json`}var xv=ge((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(){ln||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()===un}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(re())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var i=new(e.bind.apply(e,r));return n&&w(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 Fg(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 Ig(e,t){let n=[];for(let e of t){if(typeof e==`object`&&e)throw wh(`join`,2,`list of strings/primitives`,`list element of type ${Lg(e)}`);n.push(String(e))}return n.join(e)}function Lg(e){return Array.isArray(e)?`array`:e instanceof Map?`Map`:e instanceof Set?`Set`:`object`}function Rg(e){return Dg(e,`-`)}function zg(e){return e.toLowerCase()}function Bg(e,t){return`\n${Pg(e,t)}`}function Vg(e){return e.replace(/\s+/g,``)}function Hg(e,t,n){return n===1?e:t}function Ug(...e){return e.map(e=>`"${e}"`).join(` `)}function Wg(e){return e.replace(/[\\.+*?()|[\]{}^$]/g,`\\$&`)}function Gg(e,t){return t.repeat(Math.max(0,e))}function Kg(e,t,n){return fg(e,n).join(t)}function qg(e){return Dg(e,`_`)}function Jg(e,t){let n=fg(e,t),r={};for(let e=0;e<n.length;e++)r[`_${e}`]=n[e];return r}function Yg(e,t){return fg(e,t)}function Xg(e,t,n){let r=Zg(n,e,t),i={};for(let e=0;e<r.length;e++)i[`_${e}`]=r[e]??``;return i}function Zg(e,t,n){if(n===0)return[];let r=fg(t,e);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 Qg(...e){return e.map(e=>`'${e}'`).join(` `)}function $g(e,t,n){let r=dg(n),i=t<0||t>r.length?r.length:t,a=Math.min(Math.max(0,e),i);return r.slice(a,i).join(``)}function e_(e){let t=``;for(let n of e)t_(n)?t+=n.toLowerCase():n_(n)?t+=n.toUpperCase():t+=n;return t}function t_(e){return e!==e.toLowerCase()&&e===e.toUpperCase()}function n_(e){return e!==e.toUpperCase()&&e===e.toLowerCase()}function r_(e){return e.replace(/\b([a-zA-Z])/g,e=>e.toUpperCase())}function i_(e){return e.trim()}function a_(e,t){if(e.length===0)return t;let n=new Set(dg(e)),r=dg(t),i=0;for(;i<r.length&&n.has(r[i]);)i+=1;let a=r.length;for(;a>i&&n.has(r[a-1]);)--a;return r.slice(i,a).join(``)}function o_(e,t){return t.startsWith(e)?t.slice(e.length):t}function s_(e,t){return t.endsWith(e)?t.slice(0,t.length-e.length):t}function c_(e,t){let n=dg(t);if(e<0){let r=-e;return r>=n.length?t:n.slice(n.length-r).join(``)}return e>=n.length?t:n.slice(0,e).join(``)}function l_(e){return e.replace(/\b([A-Z])/g,e=>e.toLowerCase())}function u_(e){return e.toUpperCase()}function d_(e,t){return f_(e,`
53
+ `,t)}function f_(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 p_(e,t,n){return f_(e,t,n)}function m_(){return{abbrev:{fn:(e,t)=>pg(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},abbrevboth:{fn:(e,t,n)=>mg(e,t,n),argTypes:[`int`,`int`,`string`],arity:{kind:`exact`}},camelcase:{fn:e=>kg(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},cat:{fn:(...e)=>Ag(...e),argTypes:[`string`],arity:{kind:`variadic`}},contains:{fn:(e,t)=>jg(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},hasPrefix:{fn:(e,t)=>Mg(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},hasSuffix:{fn:(e,t)=>Ng(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},indent:{fn:(e,t)=>Pg(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},initials:{fn:e=>Fg(e),argTypes:[`string`],arity:{kind:`exact`}},join:{fn:(e,t)=>Ig(e,t),argTypes:[`string`,`list`],arity:{kind:`exact`}},kebabcase:{fn:e=>Rg(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},lower:{fn:e=>zg(e),argTypes:[`string`],arity:{kind:`exact`}},nindent:{fn:(e,t)=>Bg(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},nospace:{fn:e=>Vg(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},plural:{fn:(e,t,n)=>Hg(e,t,n),argTypes:[`string`,`string`,`int`],arity:{kind:`exact`},returnType:`string`},quote:{fn:(...e)=>Ug(...e),argTypes:[`string`],arity:{kind:`variadic`}},regexQuoteMeta:{fn:e=>Wg(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},repeat:{fn:(e,t)=>Gg(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},replace:{fn:(e,t,n)=>Kg(e,t,n),argTypes:[`string`,`string`,`string`],arity:{kind:`exact`}},snakecase:{fn:e=>qg(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},split:{fn:(e,t)=>Jg(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},splitList:{fn:(e,t)=>Yg(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},splitn:{fn:(e,t,n)=>Xg(e,t,n),argTypes:[`string`,`int`,`string`],arity:{kind:`exact`},returnType:`dict`},squote:{fn:(...e)=>Qg(...e),argTypes:[`string`],arity:{kind:`variadic`}},substr:{fn:(e,t,n)=>$g(e,t,n),argTypes:[`int`,`int`,`string`],arity:{kind:`exact`}},swapcase:{fn:e=>e_(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},title:{fn:e=>r_(e),argTypes:[`string`],arity:{kind:`exact`}},trim:{fn:e=>i_(e),argTypes:[`string`],arity:{kind:`exact`}},trimAll:{fn:(e,t)=>a_(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},trimPrefix:{fn:(e,t)=>o_(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},trimSuffix:{fn:(e,t)=>s_(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},trunc:{fn:(e,t)=>c_(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},untitle:{fn:e=>l_(e),argTypes:[`string`],arity:{kind:`exact`}},upper:{fn:e=>u_(e),argTypes:[`string`],arity:{kind:`exact`}},wrap:{fn:(e,t)=>d_(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},wrapWith:{fn:(e,t,n)=>p_(e,t,n),argTypes:[`int`,`string`,`string`],arity:{kind:`exact`}}}}function h_(e){return e}function g_(e,t,n){return n===void 0?bu+vu(e)+`.`+vu(t):__(n)}function __(e){return bu+vu(e)}function v_(e,t){return e+`.`+t}function y_(e){return e+`.page`}const b_=[`closeOnPick`,`paged`,`key`,`distribution`],x_=e=>b_.includes(e),S_=`"closeOnPick" (bool, default false), "paged" (bool, default true), "key" (string, accordion grouping), "distribution" (one of ${da.map(e=>`"${e}"`).join(`, `)}; default "van-der-corput")`;function C_(e){for(let t of Object.keys(e))if(!x_(t))throw Error(`unknown {{ menu }} option "${t}" — the options dict takes ${S_}`);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&&!fa(r))throw Error(`{{ menu }} option "distribution" must be one of: ${da.join(`, `)}; got ${JSON.stringify(r)}`);return{closeOnPick:t(`closeOnPick`,!1),paged:t(`paged`,!0),key:n,distribution:ma(r)}}const w_=`default`,T_={};function E_(e){return[...new Set([w_,...Object.keys(e)])]}function D_(e,t,n){return ro(void 0,e,t,w_,n)}function O_(e,t){let n={[w_]:T_,...e}[t];if(n===void 0)throw Error(`Preset "${t}" is not declared in this config — effectivePresetName collapses unknown names to "${w_}", which always resolves; a miss here means a raw name reached this function without going through that resolution`);return n}function k_(e,t){let n=O_(e.presets,t).root??jc;return{node:Fc(Rc(n,e.root)),path:zc(n)?`presets.${t}.root`:`root`}}function A_(e,t){return{...e.globals,...O_(e.presets,t).globals}}const j_=`menu`,M_=`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`,N_=e=>e.kind===`call`&&e.name===`dict`,P_=e=>e.kind===`literal`&&typeof e.value!=`object`,F_=e=>Kc(``,e,2)===void 0;function I_(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&&N_(i)?i:void 0,o=a===void 0?r:r.slice(0,-1);if(o.some(N_))return t(`whose options (dict …) is not its last argument — ${M_}`);if(i!==void 0&&a===void 0&&!P_(i)&&F_(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=Kc(`whose trigger`,o.length,2);if(s!==void 0)return t(`${s} — ${M_}`);let c=a===void 0?{}:ih(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=C_(c)}catch(e){return t(`with invalid options — ${e.message}`)}let u=l.key;if(u!==void 0){let e=wu(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 "${__(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 L_(e){let t=pp({fromString:e=>e});try{return t.parse(e).referencedCalls().filter(e=>e.name===j_).map(I_)}catch{return`parse-failed`}}function R_(e){let t=pp({fromString:e=>e});try{return t.parse(e).referencedFunctions().has(j_)}catch{return!1}}function z_(e,t,n){e.issues.push({path:t,message:n,line:U(e.source,[`root`])})}function B_(e,t){Tu(e,t,bu,`{{ menu }} helpers`);for(let[n,r]of Object.entries(t.helpers??{}))R_(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:U(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`&&R_(i)&&z_(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 Ns(Ic(t.root)))typeof n.when==`string`&&R_(n.when)&&z_(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.`);for(let[t,{template:r}]of Object.entries(n)){if(r===void 0||!R_(r))continue;let n=L_(r);if(n!==`parse-failed`)for(let r of n){let n=r.kind===`issue`?r.message:V_(r.apply);n!==void 0&&z_(e,`segments.${t}`,`segment "${t}" has a {{ menu }} ${n}.`)}}}function V_(e){if(e===``)return`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`;if(h_(e)===`closed`)return`whose apply action is named "${Wc}", which collides with the menu's closed-state sentinel and leaves it unopenable. Rename the action`}function H_(e,t){let n={},r={},i=new Map,a=new Set,o=(e,n)=>{let r=`segments.${e}`;a.has(`${r}\0${n}`)||(a.add(`${r}\0${n}`),t.push({path:r,message:n}))};for(let t of E_(e.presets)){let a=new Map,s=new Map;for(let c of Ns(k_(e,t).node)){if(c.kind!==`segment`)continue;let t=e.segments[c.name];if(t===void 0)continue;i.has(c.name)||i.set(c.name,L_(t.template));let l=i.get(c.name);if(l===`parse-failed`)continue;let u=ks(c);for(let[e,t]of l.entries()){if(t.kind===`issue`||V_(t.apply)!==void 0)continue;let{apply:i,options:l}=t,d=h_(i),f=g_(u,i,l.key),p=y_(f),m=l.key===void 0?`ind ${u} ${i}`:`key ${l.key}`,h=[f,p].find(e=>{let t=a.get(e);return t!==void 0&&t!==m});if(h!==void 0){o(c.name,`two {{ menu }} disclosures normalize to the same state key ("${h}") 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}a.set(f,m),a.set(p,m);let g=v_(f,d),_=`${c.name}\0${e}`,v=s.get(g);if(v!==void 0&&v!==_){o(c.name,`two {{ menu }} disclosures resolve to the same identity ("${g}") — ${l.key===void 0?`a segment cannot contain two menus over the same apply action "${i}"`:`menus sharing key "${l.key}" must have distinct apply actions`}.`);continue}s.set(g,_),r[g]=nl(f,d),n[f]=tl(f,Wc),n[p]={kind:`state`,key:p,default:`0`},r[p]={set:p,int:!0}}}}return{...e,variables:{...e.variables,...n},actions:{...e.actions,...r}}}const U_=pp({fromString:e=>e}),W_=`edit.mode`,G_=`edit.configure`,K_=`edit.toggle`,q_=`edit.unconfigure`,J_=[K_,q_],Y_=`arrange`,X_=`${xu}draft.`;function Z_(e,t){return`${e}:${t}`}const Q_={variable:W_,key:W_,member:Y_},$_=Xc(Q_);function ev(e){try{return U_.parse(e).referencedCalls().some(e=>e.name===`action`&&e.args[0]===`edit.toggle`)}catch{return!1}}function tv(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`&&ev(e))return!0;return!1}function nv(e,t){if(Tu(e,t,xu,`edit mode`),!tv(t))return;let{variables:n,actions:r}=rv();t.variables={...t.variables??{},...n},t.actions={...t.actions??{},...r}}function rv(){return{variables:{[W_]:tl(W_,Wc),[G_]:tl(G_,Wc)},actions:{[K_]:nl(W_,Y_),[q_]:{set:G_,to:Wc}}}}const iv=/"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|`[^`]*`/g;function*av(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 ov=`[A-Za-z_]\\w*(?:\\.[A-Za-z_]\\w*)*`,sv=RegExp(`^(?:(\\$)(?:\\.(${ov}))?|\\.(${ov})?)(?=[\\s)]|$)`);function cv(e,t,n){let r=sv.exec(e.trimStart());if(r===null)return null;let[i,a]=r[1]===void 0?[t,r[3]]:[n,r[2]];return i===null?null:a===void 0?i:`${i}${a}.`}const lv=/^(\w+)\b\s*([\s\S]*)$/;function*uv(e,t){let n=[t];for(let r of av(e)){let e=r.replace(/^-(?=\s)/,``).trim(),[,i=``,a=``]=lv.exec(e)??[],o=n[n.length-1],s=n.length>1?n[n.length-2]:o;if(i===`end`){n.length>1&&n.pop();continue}if(i===`else`){yield{code:e,dot:s};let r=/^with\b([\s\S]*)$/.exec(a);n[n.length-1]=r===null?s:cv(r[1],s,t);continue}yield{code:e,dot:o},i===`if`&&n.push(o),i===`with`&&n.push(cv(a,o,t)),(i===`range`||i===`define`||i===`block`)&&n.push(null)}}const dv=/(?<![.$])\btemplate\s+$/;function*fv(e,t,n){let r=0;for(let i of[...e.matchAll(iv)]){let a=i.index+i[0].length;dv.test(e.slice(r,i.index))&&(yield{name:i[0].slice(1,-1),at:cv(e.slice(a),t,n)}),r=a}}function*pv(e,t){let n=new Set;function*r(e,i,a,o){for(let{code:s,dot:c}of[...uv(e,i)]){yield{code:s,dot:c,root:i,via:a};for(let e of[...fv(s,c,i)]){let i=Object.hasOwn(t,e.name)?t[e.name]:void 0,a=`${e.name}\0${e.at??`\0`}`;i===void 0||o.has(e.name)||n.has(a)||(n.add(a),yield*r(i,e.at,e.name,new Set([...o,e.name])))}}}yield*r(e,``,null,new Set)}const mv=RegExp(`(?<![A-Za-z0-9_)$])(\\$?)\\.(${ov})`,`g`);function*hv({code:e,dot:t,root:n}){let r=e.replace(iv,``);for(let e of[...r.matchAll(mv)]){let r=e[1]===`$`?n:t;r!==null&&(yield`${r}${e[2]}`)}}function gv(e,t){let n=new Map;for(let r of pv(e,t))for(let e of hv(r))n.has(e)||n.set(e,r.via);return n}const _v=/(?<![.$])\b(action|picker|menu|carousel)\s+$/,vv={action:1,picker:2,menu:1,carousel:1};function*yv(e){let t=0,n=0,r=`action`;for(let i of[...e.matchAll(iv)]){let a=_v.exec(e.slice(t,i.index));a!==null&&(n=vv[a[1]],r=a[1]===`action`?`action`:`options`),n>0&&(yield{name:i[0].slice(1,-1),site:r},n--),t=i.index+i[0].length}}function bv(e,t){let n=new Map;for(let{code:r,via:i}of pv(e,t))for(let{name:e,site:t}of yv(r)){let r=`${e}\0${i??`\0`}`;n.has(r)||n.set(r,{name:e,site:t,via:i})}return[...n.values()]}function xv(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 Sv(e){let t=new Set,n=new Set,r=(e,r)=>{t.add(e),Cv(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 Cv(e){return(e.kind===`shell`||e.kind===`file`)&&Rs(e.parse)===`json`}var wv=ge((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(){ln||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()===un}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(re())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var i=new(e.bind.apply(e,r));return n&&w(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.
55
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 ne(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,w(e,t)}function re(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch{}return(re=function(){return!!e})()}function w(e,t){return(w=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}}),w(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=P),n===void 0&&(n=P);var r=new hn(e);return t!==P&&dt(r,t),n!==P&&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)?ir(e):Qn(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+`):
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=R.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:ge,s:_e,t:ve}}function ge(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,D(e,0,0,n,!1,!1)),2)}function _e(e,t,n,r){var i=D(e,0,0,n,this.u?.bound);return e.l(t,i,r)}function ve(e,t){var n,r=t.name,i=t.addInitializer;return vt(e)||(e=ir(e)),(n=this.u)!=null&&n.bound&&i((function(){var e=this[r].bind(this);e.isMobXFlow=!0,this[r]=e})),e}function D(e,t,n,r,i,a){a===void 0&&(a=R.safeDescriptors);var o=r.value;return vt(o)||(o=ir(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=Vt(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=Vt(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:!R.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?ir.bound:ir).o(e,t,n,r):((a=this.u)!=null&&a.autoBind?Qn.bound:Qn).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:!R.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=R.trackingDerivation,r=!t||!n;$e();var i=R.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&&(R.suppressReactionErrors=!0),ze(e.M),Je(e.V),et(),e.A&&Ke(e.k),R.suppressReactionErrors=!1}function Le(e,t){var n=Re(e);try{return t()}finally{ze(n)}}function Re(e){var t=R.allowStateChanges;return R.allowStateChanges=e,t}function ze(e){R.allowStateChanges=e}function Be(e){return e instanceof zn}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(Rn(o)){if(R.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=++R.runId;var i,a=R.trackingDerivation;if(R.trackingDerivation=e,R.inBatch++,!0===R.disableErrorBoundaries)i=t.call(n);else try{i=t.call(n)}catch(e){i=new zn(e)}return R.inBatch--,R.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=R.trackingDerivation;return R.trackingDerivation=null,e}function Ke(e){R.trackingDerivation=e}function qe(e){var t=R.allowStateReads;return R.allowStateReads=e,t}function Je(e){R.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,R.pendingUnobservations.push(e))}function $e(){R.inBatch++}function et(){if(--R.inBatch==0){rt();for(var e=R.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())}R.pendingUnobservations=[]}}function tt(e){var t=R.trackingDerivation;return t===null?(e.F.size===0&&R.inBatch>0&&Qe(e),!1):(t.q!==e.$&&(e.$=t.q,t.W[t.G++]=e,!e.isBeingObserved&&R.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(){R.inBatch>0||R.isRunningReactions||Gn(it)}function it(){R.isRunningReactions=!0;for(var e=R.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()}R.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?Yn:qn).t(t,n):o(n)?ae(t,n,e?Yn:qn):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 Wn(a,(function(){s||(s=!0,o((function(){s=!1,i.isDisposed||i.track(n)})))}),t.onError,t.requiresObservable)}else i=new Wn(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)}:$n}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`?Jt(t,n):Jt(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 Zt((function(){var t=Vt(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?Rn(e):!1===M(e)||!e[F].j.has(t)?!1:Rn(Jt(e,t))}function bt(e,t){return!!e&&(t===void 0?M(e)||!!e[F]||gn(e)||Kn(e)||Rn(e):!!M(e)&&e[F].j.has(t))}function xt(e){return bt(e)}function St(e){return M(e)?e[F].nt():_r(e)||br(e)?Array.from(e.keys()):zt(e)?e.map((function(e,t){return t})):void t(5)}function Ct(e,n){return M(e)?e[F].it(n):_r(e)||br(e)?e.has(n):zt(e)?n>=0&&n<e.length:void t(10)}function wt(e){if(M(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(),Zt((function(){var r=new lr(n,t,i,!1);d(r.j,F,r);var a=new Proxy(r.j,cr);return r.v=a,e&&e.length&&r.ot(0,0,e),a}))}function k(e,t){typeof Array.prototype[e]==`function`&&(ur[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)&&pr(e[F])}function Bt(e){return e[Symbol.toStringTag]=`MapIterator`,en(e)}function j(e){return e[Symbol.toStringTag]=`SetIterator`,en(e)}function Vt(e,t){if(g(e,F))return e;var n=t?.name??`ObservableObject`;return u(e,F,new Sr(e,new Map,String(n),function(e){return e?e.defaultDecorator??De(e):void 0}(t))),e}function Ht(e){return xr[e]||(xr[e]={get:function(){return this[F].O(e)},set:function(t){return this[F].S(e,t)}})}function M(e){return!!s(e)&&Cr(e[F])}function Ut(e,t,n){var r;(r=e.h[mn])==null||delete r[n]}function Wt(e){return{enumerable:!1,configurable:!0,get:function(){return this[F].ct(e)},set:function(t){this[F].ht(e,t)}}}function Gt(e){an(Or.prototype,``+e,Wt(e))}function Kt(e){if(e>Er){for(var t=Er;t<e+100;t++)Gt(t);Er=e}}function qt(e,t,n){return new Or(e,t,n)}function Jt(e,n){if(typeof e==`object`&&e){if(zt(e))return n!==void 0&&t(23),e[F].st;if(br(e))return e.st;if(_r(e)){if(n===void 0)return e.lt;var r=e.vt.get(n)||e.dt.get(n);return r||t(25,n,Xt(e)),r}if(M(e)){if(!n)return t(26);var i=e[F].j.get(n);return i||t(27,n,Xt(e)),i}if(gn(e)||Rn(e)||Kn(e))return e}else if(a(e)&&Kn(e[F]))return e[F];t(28)}function Yt(e,n){return e||t(29),n===void 0?gn(e)||Rn(e)||Kn(e)||_r(e)||br(e)?e:e[F]?e[F]:void t(24,e):Yt(Jt(e,n))}function Xt(e,t){var n;if(t!==void 0)n=Jt(e,t);else{if(ct(e))return e.name;n=M(e)||_r(e)||br(e)?Yt(e):Jt(e)}return n.tt}function Zt(e){var t=Ge(),n=Re(!0);$e();try{return e()}finally{et(),ze(n),Ke(t)}}function Qt(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=kr.call(t);if(c!==kr.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=$t(t),n=$t(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 $t(e){return zt(e)?e.slice():p(e)||_r(e)||m(e)||br(e)?Array.from(e.entries()):e}function en(e){return e[Symbol.iterator]=tn,Object.assign(Object.create(Ar),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 ln=typeof Proxy<`u`,un=Object.toString(),P=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 Qt(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 Qt(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||M(e)||zt(e)||_r(e)||br(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 Qt(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===R.useProxies||!1===n.proxy?qt:It)(e,O(n),n.name)},map:function(e,t){var n=je(t);return new gr(e,O(n),n.name)},set:function(e,t){var n=je(t);return new yr(e,O(n),n.name)},object:function(e,t,n){return Zt((function(){return mt(!1===R.useProxies||!1===n?.proxy?Vt({},n):function(e,t){var n;return r(),(n=(e=Vt(e,t))[F]).v??(n.v=new Proxy(e,ar))}({},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}ne(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))!==R.UNCHANGED&&this.gt(e)},n.xt=function(e){if(At(this)){var t=Mt(this,{object:this,type:sr,newValue:e});if(!t)return R.UNCHANGED;e=t.newValue}return e=this.enhancer(e,this.Ot,this.tt),this.equals(this.Ot,e)?R.UNCHANGED:e},n.gt=function(e){var t=this.Ot;this.Ot=e,this.reportChanged(),Nt(this)&&Ft(this,{type:sr,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:sr,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 zn(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),R.inBatch!==0||this.F.size!==0||this.Nt){if(tt(this),Ve(this)){var e=R.trackingContext;this.Nt&&!e&&(R.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),R.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===R.disableErrorBoundaries)t=this.derivation.call(this.Et);else try{t=this.derivation.call(this.Et)}catch(e){t=new zn(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:sr,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,Rn=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 zn=function(e){this.cause=void 0,this.cause=e},Bn=[`mobxGuid`,`spyListeners`,`enforceActions`,`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`allowStateReads`,`disableErrorBoundaries`,`runId`,`UNCHANGED`,`useProxies`],Vn=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},Hn=!0,Un=!1,R=function(){var e=n();return e.__mobxInstanceCount>0&&!e.__mobxGlobals&&(Hn=!1),e.__mobxGlobals&&e.__mobxGlobals.version!==new Vn().version&&(Hn=!1),Hn?e.__mobxGlobals?(e.__mobxInstanceCount+=1,e.__mobxGlobals.UNCHANGED||(e.__mobxGlobals.UNCHANGED={}),e.__mobxGlobals):(e.__mobxInstanceCount=1,e.__mobxGlobals=new Vn):(setTimeout((function(){Un||t(35)}),1),new Vn)}(),Wn=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,R.pendingReactions.push(this),rt())},t.J=function(){if(!this.isDisposed){$e(),this.isScheduled=!1;var e=R.trackingContext;if(R.trackingContext=this,Ve(this)){this.isTrackPending=!0;try{this.Pt()}catch(e){this.Dt(e)}}R.trackingContext=e,et()}},t.track=function(e){if(!this.isDisposed){$e(),this.isRunning=!0;var t=R.trackingContext;R.trackingContext=this;var n=He(this,e,void 0);R.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(R.disableErrorBoundaries)throw e;R.suppressReactionErrors||console.error(`[mobx] uncaught error in '`+this+`'`,e),R.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)}}])}();Wn.Wt=1,Wn.qt=2,Wn.Gt=4,Wn.Ht=8,Wn.wt=16;var Gn=function(e){return e()},Kn=f(`Reaction`,Wn),qn=ue(`action`),Jn=ue(`action.bound`,{bound:!0}),Yn=ue(`autoAction`,{autoAction:!0}),Xn=ue(`autoAction.bound`,{autoAction:!0,bound:!0}),Zn=ot(!1);Object.assign(Zn,qn);var Qn=ot(!0);Object.assign(Qn,Yn),Zn.bound=E(Jn),Qn.bound=E(Xn);var $n=function(e){return e()},er=0,tr=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 ne(t,e),t.prototype.toString=function(){return`Error: `+this.message},t}(T(Error)),nr=he(`flow`),rr=he(`flow.bound`,{bound:!0}),ir=Object.assign((function(e,t){if(oe(t))return nr.t(e,t);if(o(t))return ae(e,t,nr);var n=e,r=n.name||`<unnamed flow>`,i=function(){var e,t=this,i=arguments,o=++er,s=Zn(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=Zn(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=Zn(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=Zn(r+` - runid: `+o+` - cancel`,(function(){try{c&&_t(c);var t=s.return(void 0),n=Promise.resolve(t.value);n.then(P,P),_t(n),e(new tr)}catch(t){e(t)}})),l};return i.isMobXFlow=!0,i}),nr);ir.bound=E(rr);var ar={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)}},or=Symbol(`mobx-keys`),sr=`update`,cr={get:function(e,t){var n=e[F];return t===F?n:t===`length`?n.Ft():typeof t!=`string`||isNaN(t)?g(ur,t)?ur[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)}},lr=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&&Kt(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:sr,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:sr,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}(),ur={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 R.trackingDerivation&&t(37,`reverse`),this.replace(this.slice().reverse()),this},sort:function(){R.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 dr,fr,pr=f(`ObservableArrayAdministration`,lr),mr={},hr=`add`,gr=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]=mr,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),Zt((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(!R.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?sr:hr,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))!==R.UNCHANGED){var r=Nt(this),i=r?{observableKind:`map`,debugObjectName:this.tt,type:sr,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:hr,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 _r(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)||_r(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`}}])}(),_r=f(`ObservableMap`,gr),vr={},yr=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]=vr,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)},Zt((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:hr,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:hr,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 j({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 j({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)&&!br(e)?e.intersection(this):new Set(this).intersection(e)},n.union=function(e){return m(e)&&!br(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)&&!br(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)&&!br(e)?e.isDisjointFrom(this):new Set(this).isDisjointFrom(e)},n.replace=function(e){var n=this;return br(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`}}])}(),br=f(`ObservableSet`,yr),xr=Object.create(null),Sr=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:sr,object:this.v||this.h,name:e,newValue:t});if(!r)return null;t=r.newValue}if((t=n.xt(t))!==R.UNCHANGED){var i=Nt(this),a=i?{type:sr,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 R.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(!R.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)}Ut(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&&Ut(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:hr,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:hr,newValue:t});if(!a)return null;t=a.newValue}var o=Ht(e),s={configurable:!R.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:hr,newValue:void 0}))return null;t.name||=`ObservableObject.key`,t.context=this.v||this.h;var i=Ht(e),a={configurable:!R.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:hr,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}(),Cr=f(`ObservableObjectAdministration`,Sr),wr=Wt(0),Tr=function(){var e=!1,t={};return Object.defineProperty(t,`0`,{set:function(){e=!0}}),Object.create(t)[0]=1,!1===e}(),Er=0,Dr=function(){};dr=Dr,fr=Array.prototype,Object.setPrototypeOf?Object.setPrototypeOf(dr.prototype,fr):dr.prototype.__proto__===void 0?dr.prototype=fr:dr.prototype.__proto__=fr;var Or=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,Zt((function(){var e=new lr(r,n,i,!0);e.v=a,d(a,F,e),t&&t.length&&a.spliceWithArray(0,0,t),Tr&&Object.defineProperty(a,`0`,wr)})),a}ne(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`}}])}(Dr);Object.entries(ur).forEach((function(e){var t=e[0];t!==`concat`&&u(Or.prototype,t,e[1])})),Kt(1e3);var kr=on.toString,Ar=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:Xt},$mobx:F}),e.$mobx=F,e.FlowCancellationError=tr,e.ObservableMap=gr,e.ObservableSet=yr,e.Reaction=Wn,e._allowStateChanges=Le,e._allowStateChangesInsideComputed=st,e._allowStateReadsEnd=Je,e._allowStateReadsStart=qe,e._autoAction=Qn,e._endAction=Ie,e._getAdministration=Yt,e._getGlobalState=function(){return R},e._interceptReads=function(e,t,n){var r;return _r(e)||zt(e)||Fn(e)?r=Yt(e):M(e)&&(r=Yt(e,t)),r.dehancer=typeof t==`function`?t:n,function(){r.dehancer=void 0}},e._isComputingDerivation=function(){return R.trackingDerivation!==null},e._resetGlobalState=function(){var e=new Vn;for(var t in e)Bn.indexOf(t)===-1&&(R[t]=e[t]);R.allowStateChanges=!R.enforceActions},e._startAction=Fe,e.action=Zn,e.autorun=lt,e.comparer=_n,e.computed=kn,e.configure=function(e){!0===e.isolateGlobalState&&function(){if((R.pendingReactions.length||R.inBatch||R.isRunningReactions)&&t(36),Un=!0,Hn){var e=n();--e.__mobxInstanceCount==0&&(e.__mobxGlobals=void 0),R=new Vn}}();var r,i,a=e.useProxies,o=e.enforceActions;if(a!==void 0&&(R.useProxies=a===`always`||a!==`never`&&typeof Proxy<`u`),a===`ifavailable`&&(R.verifyProxies=!0),o!==void 0){var s=o===`always`?`always`:o===`observed`;R.enforceActions=s,R.allowStateChanges=!0!==s&&s!==`always`}[`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`disableErrorBoundaries`,`safeDescriptors`].forEach((function(t){t in e&&(R[t]=!!e[t])})),R.allowStateReads=!R.observableRequiresReaction,e.reactionScheduler&&(r=e.reactionScheduler,i=Gn,Gn=function(e){return r((function(){return i(e)}))})},e.createAtom=se,e.defineProperty=function(e,n,r){if(M(e))return e[F].l(n,r);t(39)},e.entries=function(e){return M(e)?St(e).map((function(t){return[t,e[t]]})):_r(e)?St(e).map((function(t){return[t,e.get(t)]})):br(e)?Array.from(e.entries()):zt(e)?e.map((function(e,t){return[t,e]})):void t(7)},e.extendObservable=mt,e.flow=ir,e.flowResult=function(e){return e},e.get=function(e,n){if(Ct(e,n))return M(e)?e[F].ct(n):_r(e)?e.get(n):zt(e)?e[n]:void t(11)},e.getAtom=Jt,e.getDebugName=Xt,e.getDependencyTree=function(e,t){return ht(Jt(e,t))},e.getObserverTree=function(e,t){return gt(Jt(e,t))},e.has=Ct,e.intercept=function(e,t,n){return a(n)?function(e,t,n){return Yt(e,t).St(n)}(e,t,n):function(e,t){return Yt(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 tr},e.isObservable=xt,e.isObservableArray=zt,e.isObservableMap=_r,e.isObservableObject=M,e.isObservableProp=function(e,t){return bt(e,t)},e.isObservableSet=br,e.keys=St,e.makeAutoObservable=function(e,t,n){return c(e)?mt(e,e,t,n):(Zt((function(){var r=Vt(e,n)[F];if(!e[or]){var i=Object.getPrototypeOf(e),a=new Set([].concat(fn(e),fn(i)));a.delete(`constructor`),a.delete(F),u(i,or,a)}e[or].forEach((function(e){return r.o(e,!t||!(e in t)||t[e])}))})),e)},e.makeObservable=function(e,t,n){return Zt((function(){var r=Vt(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 Yt(e,t)._t(n,r)}(e,t,n,r):function(e,t,n){return Yt(e)._t(t,n)}(e,t,n)},e.onBecomeObserved=dt,e.onBecomeUnobserved=ft,e.onReactionError=function(e){return R.globalReactionErrorHandlers.push(e),function(){var t=R.globalReactionErrorHandlers.indexOf(e);t>=0&&R.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=Zn(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 Wn(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){M(e)?e[F].Ut(n):_r(e)||br(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||br(n))M(n)?n[F].ht(r,i):_r(n)?n.set(r,i):br(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)||Rn(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(br(t)){var i=Tt(n,t,new Set);return t.forEach((function(t){i.add(e(t,n))})),i}if(_r(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 M(e)?St(e).map((function(t){return e[t]})):_r(e)?St(e).map((function(t){return e.get(t)})):br(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||{})}})),Sv=ge((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 ne(e){return e!=null&&Object.prototype.toString.call(e)===`[object Map]`}function re(e){return Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(e)))===null}function w(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=R.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:ge,s:_e,t:ve}}function ge(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,D(e,0,0,n,!1,!1)),2)}function _e(e,t,n,r){var i=D(e,0,0,n,this.u?.bound);return e.l(t,i,r)}function ve(e,t){var n,r=t.name,i=t.addInitializer;return vt(e)||(e=ir(e)),(n=this.u)!=null&&n.bound&&i((function(){var e=this[r].bind(this);e.isMobXFlow=!0,this[r]=e})),e}function D(e,t,n,r,i,a){a===void 0&&(a=R.safeDescriptors);var o=r.value;return vt(o)||(o=ir(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=Vt(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=Vt(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:!R.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?ir.bound:ir).o(e,t,n,r):((a=this.u)!=null&&a.autoBind?Qn.bound:Qn).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:!R.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=R.trackingDerivation,r=!t||!n;$e();var i=R.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&&(R.suppressReactionErrors=!0),ze(e.M),Je(e.V),et(),e.A&&Ke(e.k),R.suppressReactionErrors=!1}function Le(e,t){var n=Re(e);try{return t()}finally{ze(n)}}function Re(e){var t=R.allowStateChanges;return R.allowStateChanges=e,t}function ze(e){R.allowStateChanges=e}function Be(e){return e instanceof zn}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(Rn(o)){if(R.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=++R.runId;var i,a=R.trackingDerivation;if(R.trackingDerivation=e,R.inBatch++,!0===R.disableErrorBoundaries)i=t.call(n);else try{i=t.call(n)}catch(e){i=new zn(e)}return R.inBatch--,R.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=R.trackingDerivation;return R.trackingDerivation=null,e}function Ke(e){R.trackingDerivation=e}function qe(e){var t=R.allowStateReads;return R.allowStateReads=e,t}function Je(e){R.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,R.pendingUnobservations.push(e))}function $e(){R.inBatch++}function et(){if(--R.inBatch==0){rt();for(var e=R.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())}R.pendingUnobservations=[]}}function tt(e){var t=R.trackingDerivation;return t===null?(e.F.size===0&&R.inBatch>0&&Qe(e),!1):(t.q!==e.$&&(e.$=t.q,t.W[t.G++]=e,!e.isBeingObserved&&R.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(){R.inBatch>0||R.isRunningReactions||Gn(it)}function it(){R.isRunningReactions=!0;for(var e=R.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()}R.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?Yn:qn).t(t,n):o(n)?ae(t,n,e?Yn:qn):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 Wn(a,(function(){s||(s=!0,o((function(){s=!1,i.isDisposed||i.track(n)})))}),t.onError,t.requiresObservable)}else i=new Wn(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)}:$n}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`?Jt(t,n):Jt(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 Zt((function(){var t=Vt(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?Rn(e):!1===M(e)||!e[F].j.has(t)?!1:Rn(Jt(e,t))}function bt(e,t){return!!e&&(t===void 0?M(e)||!!e[F]||gn(e)||Kn(e)||Rn(e):!!M(e)&&e[F].j.has(t))}function xt(e){return bt(e)}function St(e){return M(e)?e[F].nt():_r(e)||br(e)?Array.from(e.keys()):zt(e)?e.map((function(e,t){return t})):void t(5)}function Ct(e,n){return M(e)?e[F].it(n):_r(e)||br(e)?e.has(n):zt(e)?n>=0&&n<e.length:void t(10)}function wt(e){if(M(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(),Zt((function(){var r=new lr(n,t,i,!1);d(r.j,F,r);var a=new Proxy(r.j,cr);return r.v=a,e&&e.length&&r.ot(0,0,e),a}))}function k(e,t){typeof Array.prototype[e]==`function`&&(ur[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)&&pr(e[F])}function Bt(e){return e[Symbol.toStringTag]=`MapIterator`,en(e)}function j(e){return e[Symbol.toStringTag]=`SetIterator`,en(e)}function Vt(e,t){if(g(e,F))return e;var n=t?.name??`ObservableObject`;return u(e,F,new Sr(e,new Map,String(n),function(e){return e?e.defaultDecorator??De(e):void 0}(t))),e}function Ht(e){return xr[e]||(xr[e]={get:function(){return this[F].O(e)},set:function(t){return this[F].S(e,t)}})}function M(e){return!!s(e)&&Cr(e[F])}function Ut(e,t,n){var r;(r=e.h[mn])==null||delete r[n]}function Wt(e){return{enumerable:!1,configurable:!0,get:function(){return this[F].ct(e)},set:function(t){this[F].ht(e,t)}}}function Gt(e){an(Or.prototype,``+e,Wt(e))}function Kt(e){if(e>Er){for(var t=Er;t<e+100;t++)Gt(t);Er=e}}function qt(e,t,n){return new Or(e,t,n)}function Jt(e,n){if(typeof e==`object`&&e){if(zt(e))return n!==void 0&&t(23),e[F].st;if(br(e))return e.st;if(_r(e)){if(n===void 0)return e.lt;var r=e.vt.get(n)||e.dt.get(n);return r||t(25,n,Xt(e)),r}if(M(e)){if(!n)return t(26);var i=e[F].j.get(n);return i||t(27,n,Xt(e)),i}if(gn(e)||Rn(e)||Kn(e))return e}else if(a(e)&&Kn(e[F]))return e[F];t(28)}function Yt(e,n){return e||t(29),n===void 0?gn(e)||Rn(e)||Kn(e)||_r(e)||br(e)?e:e[F]?e[F]:void t(24,e):Yt(Jt(e,n))}function Xt(e,t){var n;if(t!==void 0)n=Jt(e,t);else{if(ct(e))return e.name;n=M(e)||_r(e)||br(e)?Yt(e):Jt(e)}return n.tt}function Zt(e){var t=Ge(),n=Re(!0);$e();try{return e()}finally{et(),ze(n),Ke(t)}}function Qt(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=kr.call(t);if(c!==kr.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=$t(t),n=$t(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 $t(e){return zt(e)?e.slice():p(e)||_r(e)||m(e)||br(e)?Array.from(e.entries()):e}function en(e){return e[Symbol.iterator]=tn,Object.assign(Object.create(Ar),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 ln=typeof Proxy<`u`,un=Object.toString(),P=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 Qt(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 Qt(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||M(e)||zt(e)||_r(e)||br(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 Qt(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===R.useProxies||!1===n.proxy?qt:It)(e,O(n),n.name)},map:function(e,t){var n=je(t);return new gr(e,O(n),n.name)},set:function(e,t){var n=je(t);return new yr(e,O(n),n.name)},object:function(e,t,n){return Zt((function(){return mt(!1===R.useProxies||!1===n?.proxy?Vt({},n):function(e,t){var n;return r(),(n=(e=Vt(e,t))[F]).v??(n.v=new Proxy(e,ar))}({},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}ne(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))!==R.UNCHANGED&&this.gt(e)},n.xt=function(e){if(At(this)){var t=Mt(this,{object:this,type:sr,newValue:e});if(!t)return R.UNCHANGED;e=t.newValue}return e=this.enhancer(e,this.Ot,this.tt),this.equals(this.Ot,e)?R.UNCHANGED:e},n.gt=function(e){var t=this.Ot;this.Ot=e,this.reportChanged(),Nt(this)&&Ft(this,{type:sr,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:sr,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 zn(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),R.inBatch!==0||this.F.size!==0||this.Nt){if(tt(this),Ve(this)){var e=R.trackingContext;this.Nt&&!e&&(R.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),R.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===R.disableErrorBoundaries)t=this.derivation.call(this.Et);else try{t=this.derivation.call(this.Et)}catch(e){t=new zn(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:sr,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,Rn=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 zn=function(e){this.cause=void 0,this.cause=e},Bn=[`mobxGuid`,`spyListeners`,`enforceActions`,`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`allowStateReads`,`disableErrorBoundaries`,`runId`,`UNCHANGED`,`useProxies`],Vn=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},Hn=!0,Un=!1,R=function(){var e=n();return e.__mobxInstanceCount>0&&!e.__mobxGlobals&&(Hn=!1),e.__mobxGlobals&&e.__mobxGlobals.version!==new Vn().version&&(Hn=!1),Hn?e.__mobxGlobals?(e.__mobxInstanceCount+=1,e.__mobxGlobals.UNCHANGED||(e.__mobxGlobals.UNCHANGED={}),e.__mobxGlobals):(e.__mobxInstanceCount=1,e.__mobxGlobals=new Vn):(setTimeout((function(){Un||t(35)}),1),new Vn)}(),Wn=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,R.pendingReactions.push(this),rt())},t.J=function(){if(!this.isDisposed){$e(),this.isScheduled=!1;var e=R.trackingContext;if(R.trackingContext=this,Ve(this)){this.isTrackPending=!0;try{this.Pt()}catch(e){this.Dt(e)}}R.trackingContext=e,et()}},t.track=function(e){if(!this.isDisposed){$e(),this.isRunning=!0;var t=R.trackingContext;R.trackingContext=this;var n=He(this,e,void 0);R.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(R.disableErrorBoundaries)throw e;R.suppressReactionErrors||console.error(`[mobx] uncaught error in '`+this+`'`,e),R.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)}}])}();Wn.Wt=1,Wn.qt=2,Wn.Gt=4,Wn.Ht=8,Wn.wt=16;var Gn=function(e){return e()},Kn=f(`Reaction`,Wn),qn=ue(`action`),Jn=ue(`action.bound`,{bound:!0}),Yn=ue(`autoAction`,{autoAction:!0}),Xn=ue(`autoAction.bound`,{autoAction:!0,bound:!0}),Zn=ot(!1);Object.assign(Zn,qn);var Qn=ot(!0);Object.assign(Qn,Yn),Zn.bound=E(Jn),Qn.bound=E(Xn);var $n=function(e){return e()},er=0,tr=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 ne(t,e),t.prototype.toString=function(){return`Error: `+this.message},t}(T(Error)),nr=he(`flow`),rr=he(`flow.bound`,{bound:!0}),ir=Object.assign((function(e,t){if(oe(t))return nr.t(e,t);if(o(t))return ae(e,t,nr);var n=e,r=n.name||`<unnamed flow>`,i=function(){var e,t=this,i=arguments,o=++er,s=Zn(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=Zn(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=Zn(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=Zn(r+` - runid: `+o+` - cancel`,(function(){try{c&&_t(c);var t=s.return(void 0),n=Promise.resolve(t.value);n.then(P,P),_t(n),e(new tr)}catch(t){e(t)}})),l};return i.isMobXFlow=!0,i}),nr);ir.bound=E(rr);var ar={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)}},or=Symbol(`mobx-keys`),sr=`update`,cr={get:function(e,t){var n=e[F];return t===F?n:t===`length`?n.Ft():typeof t!=`string`||isNaN(t)?g(ur,t)?ur[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)}},lr=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&&Kt(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:sr,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:sr,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}(),ur={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 R.trackingDerivation&&t(37,`reverse`),this.replace(this.slice().reverse()),this},sort:function(){R.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 dr,fr,pr=f(`ObservableArrayAdministration`,lr),mr={},hr=`add`,gr=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]=mr,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),Zt((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(!R.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?sr:hr,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))!==R.UNCHANGED){var r=Nt(this),i=r?{observableKind:`map`,debugObjectName:this.tt,type:sr,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:hr,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 _r(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)||_r(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`}}])}(),_r=f(`ObservableMap`,gr),vr={},yr=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]=vr,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)},Zt((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:hr,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:hr,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 j({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 j({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)&&!br(e)?e.intersection(this):new Set(this).intersection(e)},n.union=function(e){return m(e)&&!br(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)&&!br(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)&&!br(e)?e.isDisjointFrom(this):new Set(this).isDisjointFrom(e)},n.replace=function(e){var n=this;return br(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`}}])}(),br=f(`ObservableSet`,yr),xr=Object.create(null),Sr=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:sr,object:this.v||this.h,name:e,newValue:t});if(!r)return null;t=r.newValue}if((t=n.xt(t))!==R.UNCHANGED){var i=Nt(this),a=i?{type:sr,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 R.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(!R.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)}Ut(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&&Ut(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:hr,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:hr,newValue:t});if(!a)return null;t=a.newValue}var o=Ht(e),s={configurable:!R.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:hr,newValue:void 0}))return null;t.name||=`ObservableObject.key`,t.context=this.v||this.h;var i=Ht(e),a={configurable:!R.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:hr,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}(),Cr=f(`ObservableObjectAdministration`,Sr),wr=Wt(0),Tr=function(){var e=!1,t={};return Object.defineProperty(t,`0`,{set:function(){e=!0}}),Object.create(t)[0]=1,!1===e}(),Er=0,Dr=function(){};dr=Dr,fr=Array.prototype,Object.setPrototypeOf?Object.setPrototypeOf(dr.prototype,fr):dr.prototype.__proto__===void 0?dr.prototype=fr:dr.prototype.__proto__=fr;var Or=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,Zt((function(){var e=new lr(r,n,i,!0);e.v=a,d(a,F,e),t&&t.length&&a.spliceWithArray(0,0,t),Tr&&Object.defineProperty(a,`0`,wr)})),a}ne(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`}}])}(Dr);Object.entries(ur).forEach((function(e){var t=e[0];t!==`concat`&&u(Or.prototype,t,e[1])})),Kt(1e3);var kr=on.toString,Ar=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:Xt},$mobx:F}),e.$mobx=F,e.FlowCancellationError=tr,e.ObservableMap=gr,e.ObservableSet=yr,e.Reaction=Wn,e._allowStateChanges=Le,e._allowStateChangesInsideComputed=st,e._allowStateReadsEnd=Je,e._allowStateReadsStart=qe,e._autoAction=Qn,e._endAction=Ie,e._getAdministration=Yt,e._getGlobalState=function(){return R},e._interceptReads=function(e,t,n){var r;return _r(e)||zt(e)||Fn(e)?r=Yt(e):M(e)&&(r=Yt(e,t)),r.dehancer=typeof t==`function`?t:n,function(){r.dehancer=void 0}},e._isComputingDerivation=function(){return R.trackingDerivation!==null},e._resetGlobalState=function(){var e=new Vn;for(var t in e)Bn.indexOf(t)===-1&&(R[t]=e[t]);R.allowStateChanges=!R.enforceActions},e._startAction=Fe,e.action=Zn,e.autorun=lt,e.comparer=_n,e.computed=kn,e.configure=function(e){!0===e.isolateGlobalState&&function(){if((R.pendingReactions.length||R.inBatch||R.isRunningReactions)&&t(36),Un=!0,Hn){var e=n();--e.__mobxInstanceCount==0&&(e.__mobxGlobals=void 0),R=new Vn}}();var r,i,a=e.useProxies,o=e.enforceActions;if(a!==void 0&&(R.useProxies=a===`always`||a!==`never`&&typeof Proxy<`u`),a===`ifavailable`&&(R.verifyProxies=!0),o!==void 0){var s=o===`always`?`always`:o===`observed`;R.enforceActions=s,R.allowStateChanges=!0!==s&&s!==`always`}[`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`disableErrorBoundaries`,`safeDescriptors`].forEach((function(t){t in e&&(R[t]=!!e[t])})),R.allowStateReads=!R.observableRequiresReaction,e.reactionScheduler&&(r=e.reactionScheduler,i=Gn,Gn=function(e){return r((function(){return i(e)}))})},e.createAtom=se,e.defineProperty=function(e,n,r){if(M(e))return e[F].l(n,r);t(39)},e.entries=function(e){return M(e)?St(e).map((function(t){return[t,e[t]]})):_r(e)?St(e).map((function(t){return[t,e.get(t)]})):br(e)?Array.from(e.entries()):zt(e)?e.map((function(e,t){return[t,e]})):void t(7)},e.extendObservable=mt,e.flow=ir,e.flowResult=function(e){return e},e.get=function(e,n){if(Ct(e,n))return M(e)?e[F].ct(n):_r(e)?e.get(n):zt(e)?e[n]:void t(11)},e.getAtom=Jt,e.getDebugName=Xt,e.getDependencyTree=function(e,t){return ht(Jt(e,t))},e.getObserverTree=function(e,t){return gt(Jt(e,t))},e.has=Ct,e.intercept=function(e,t,n){return a(n)?function(e,t,n){return Yt(e,t).St(n)}(e,t,n):function(e,t){return Yt(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 tr},e.isObservable=xt,e.isObservableArray=zt,e.isObservableMap=_r,e.isObservableObject=M,e.isObservableProp=function(e,t){return bt(e,t)},e.isObservableSet=br,e.keys=St,e.makeAutoObservable=function(e,t,n){return c(e)?mt(e,e,t,n):(Zt((function(){var r=Vt(e,n)[F];if(!e[or]){var i=Object.getPrototypeOf(e),a=new Set([].concat(fn(e),fn(i)));a.delete(`constructor`),a.delete(F),u(i,or,a)}e[or].forEach((function(e){return r.o(e,!t||!(e in t)||t[e])}))})),e)},e.makeObservable=function(e,t,n){return Zt((function(){var r=Vt(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 Yt(e,t)._t(n,r)}(e,t,n,r):function(e,t,n){return Yt(e)._t(t,n)}(e,t,n)},e.onBecomeObserved=dt,e.onBecomeUnobserved=ft,e.onReactionError=function(e){return R.globalReactionErrorHandlers.push(e),function(){var t=R.globalReactionErrorHandlers.indexOf(e);t>=0&&R.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=Zn(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 Wn(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){M(e)?e[F].Ut(n):_r(e)||br(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||br(n))M(n)?n[F].ht(r,i):_r(n)?n.set(r,i):br(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)||Rn(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(br(t)){var i=Tt(n,t,new Set);return t.forEach((function(t){i.add(e(t,n))})),i}if(_r(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 M(e)?St(e).map((function(t){return e[t]})):_r(e)?St(e).map((function(t){return e.get(t)})):br(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||{})}})),Tv=ge((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 ne(e){return e!=null&&Object.prototype.toString.call(e)===`[object Map]`}function re(e){return Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(e)))===null}function w(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.
57
57
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function ge(){return ge=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},ge.apply(null,arguments)}function _e(e){return _e=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},_e(e)}function ve(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,be(e,t)}function D(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||!D(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,_e(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,ge({},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+`':`+(`
58
58
  The field is already decorated with '@`+a+`'.`)+`
59
59
  Re-decorating fields is not allowed.
@@ -83,18 +83,18 @@ The target is already observable of different type.
83
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 Zi(e,new Map,String(r),It(t))),e}var $i=te(`ObservableObjectAdministration`,Zi);function ea(e){return Yi[e]||(Yi[e]={get:function(){return this[O].getObservablePropValue_(e)},set:function(t){return this[O].setObservablePropValue_(e,t)}})}function ta(e){return b(e)?$i(e[O]):!1}function na(e,t,n){var r;e.appliedAnnotations_[n]=t,(r=e.target_[Te])==null||delete r[n]}function ra(e,t,r){if(Ta(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+`':`+(`
84
84
  The field is already annotated with '`+a+`'.`)+`
85
85
  Re-annotating fields is not allowed.
86
- Use 'override' annotation for methods overridden by subclass.`)}}var ia=ua(0),aa=function(){var e=!1,t={};return Object.defineProperty(t,`0`,{set:function(){e=!0}}),Object.create(t)[0]=1,e===!1}(),oa=0,sa=function(){};function ca(e,t){Object.setPrototypeOf?Object.setPrototypeOf(e.prototype,t):e.prototype.__proto__===void 0?e.prototype=t:e.prototype.__proto__=t}ca(sa,Array.prototype);var la=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,_a(function(){var e=new ji(r,n,i,!0);e.proxy_=a,ee(a,O,e),t&&t.length&&a.spliceWithArray(0,0,t),aa&&Object.defineProperty(a,`0`,ia)}),a}ve(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 Li(e)?e.slice():e}))},n[Symbol.iterator]=function(){var e=this,t=0;return Ca({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`}}])}(sa);Object.entries(V).forEach(function(e){var t=e[0],n=e[1];t!==`concat`&&C(la.prototype,t,n)});function ua(e){return{enumerable:!1,configurable:!0,get:function(){return this[O].get_(e)},set:function(t){this[O].set_(e,t)}}}function da(e){s(la.prototype,``+e,ua(e))}function fa(e){if(e>oa){for(var t=oa;t<e+100;t++)da(t);oa=e}}fa(1e3);function pa(e,t,n){return new la(e,t,n)}function ma(e,t){if(typeof e==`object`&&e){if(Li(e))return t!==void 0&&n(23),e[O].atom_;if(qi(e))return e.atom_;if(Hi(e)){if(t===void 0)return e.keysAtom_;var r=e.data_.get(t)||e.hasMap_.get(t);return r||n(25,t,ga(e)),r}if(ta(e)){if(!t)return n(26);var i=e[O].values_.get(t);return i||n(27,t,ga(e)),i}if(Ne(e)||nn(e)||R(e))return e}else if(v(e)&&R(e[O]))return e[O];n(28)}function ha(e,t){if(e||n(29),t!==void 0)return ha(ma(e,t));if(Ne(e)||nn(e)||R(e)||Hi(e)||qi(e))return e;if(e[O])return e[O];n(24,e)}function ga(e,t){var n;if(t!==void 0)n=ma(e,t);else if(ur(e))return e.name;else n=ta(e)||Hi(e)||qi(e)?ha(e):ma(e);return n.name_}function _a(e){var t=F(),n=Xt(!0);jn();try{return e()}finally{Mn(),Zt(n),hn(t)}}var va=c.toString;function ya(e,t,n){return n===void 0&&(n=-1),ba(e,t,n)}function ba(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=va.call(e);if(o!==va.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=xa(e),t=xa(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(!ba(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)&&ba(e[m],t[m],n-1,r,i)))return!1}}return r.pop(),i.pop(),!0}function xa(e){return Li(e)?e.slice():ne(e)||Hi(e)||w(e)||qi(e)?Array.from(e.entries()):e}var Sa=i().Iterator?.prototype||{};function Ca(e){return e[Symbol.iterator]=wa,Object.assign(Object.create(Sa),e)}function wa(){return this}function Ta(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:Xn,extras:{getDebugName:ga},$mobx:O}),e.$mobx=O,e.FlowCancellationError=Mr,e.ObservableMap=Vi,e.ObservableSet=Ki,e.Reaction=Rn,e._allowStateChanges=Yt,e._allowStateChangesInsideComputed=lr,e._allowStateReadsEnd=_n,e._allowStateReadsStart=gn,e._autoAction=cr,e._endAction=Jt,e._getAdministration=ha,e._getGlobalState=wn,e._interceptReads=Br,e._isComputingDerivation=cn,e._resetGlobalState=Tn,e._startAction=qt,e.action=sr,e.autorun=dr,e.comparer=ze,e.computed=Vt,e.configure=wr,e.createAtom=Pe,e.defineProperty=ni,e.entries=Zr,e.extendObservable=Tr,e.flow=Ir,e.flowResult=Rr,e.get=ti,e.getAtom=ma,e.getDebugName=ga,e.getDependencyTree=Er,e.getObserverTree=Or,e.has=ei,e.intercept=Vr,e.isAction=ur,e.isBoxedObservable=en,e.isComputed=z,e.isComputedProp=Gr,e.isFlow=zr,e.isFlowCancellationError=Nr,e.isObservable=qr,e.isObservableArray=Li,e.isObservableMap=Hi,e.isObservableObject=ta,e.isObservableProp=Jr,e.isObservableSet=qi,e.keys=Yr,e.makeAutoObservable=Ei,e.makeObservable=wi,e.observable=A,e.observe=ii,e.onBecomeObserved=vr,e.onBecomeUnobserved=yr,e.onReactionError=zn,e.override=Ge,e.ownKeys=ri,e.reaction=mr,e.remove=$r,e.runInAction=lr,e.set=Qr,e.spy=Xn,e.toJS=ci,e.trace=li,e.transaction=di,e.untracked=mn,e.values=Xr,e.when=fi})),Cv=ge(((e,t)=>{process.env.NODE_ENV===`production`?t.exports=xv():t.exports=Sv()}))();function wv(e){if(Array.isArray(e))return Object.freeze(e.map(wv));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]=wv(r);return Object.freeze(t)}return e}function Tv(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 Ev(e){return typeof e==`string`?e:String(e)}function Dv(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 Ov(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 kv(e,t){if(!(e instanceof V))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=Av(e.style).add(t),n}function Av(e){if(e instanceof z)return e;try{return z.parse(e)}catch(t){throw t instanceof Ur?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 jv(e){return{fn:(t=>kv(t,e)),argTypes:[`liftable`],arity:{kind:`exact`},returnType:`T`}}function Mv(e){return{fn:((t,n)=>kv(n,new z({[e]:yn.parse(t)}))),argTypes:[`string`,`liftable`],arity:{kind:`exact`},returnType:`T`}}function Nv(e,t){return new z({[e]:t})}function Pv(){let e={};for(let t of Br)e[t]=jv(Nv(t,!0)),e[`not_${t}`]=jv(Nv(t,!1));for(let[t,n]of Object.entries(Hr))e[t]=jv(Nv(n,!0));return e}const Fv={fn:((e,t)=>kv(t,z.parse(e))),argTypes:[`string`,`liftable`],arity:{kind:`exact`},returnType:`T`},Iv={fn:((e,t)=>kv(t,new z({link:e}))),argTypes:[`string`,`liftable`],arity:{kind:`exact`},returnType:`T`};function Lv(){return{fg:Mv(`color`),bg:Mv(`bgcolor`),...Pv(),link:Iv,style:Fv}}function Rv(e,t){if(!Qn.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 $n(e)}function zv(e,t){return{fn:t,argTypes:e,arity:{kind:`exact`},returnType:`string`}}function Bv(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}`)}return e}const Vv=zv([`string`,`int`],((e,t)=>or(Rv(e,`darken`),t).hex)),Hv=zv([`string`,`int`],((e,t)=>or(Rv(e,`lighten`),-t).hex)),Uv={min:0,max:100,note:`0 = from, 100 = toward`},Wv=zv([`string`,`string`,`float`],((e,t,n)=>Dn(Rv(e,`mix`),Rv(t,`mix`),Bv(n,`mix`,`percentage`,Uv)/100).hex)),Gv={min:1,max:21,note:`4.5 = AA body text, 3 = AA large text`},Kv=zv([`string`],(e=>sr(Rv(e,`contrastOn`)).hex)),qv=e=>zv([`string`,`string`,`float`],((t,n,r)=>cr(Rv(t,`readableOn`),Rv(n,`readableOn`),Bv(r,`readableOn`,`ratio`,Gv),e()).hex)),Jv={hueShift:`shiftHue`,chromaScale:`scaleChroma`,lightnessScale:`scaleLightness`,lightnessShift:`shiftLightness`};function Yv(){let e={};for(let[t,n]of Object.entries(Jv)){let r=t;e[n]=zv([`string`,`float`],((e,t)=>{let i={...Bn,[r]:Bv(t,n,`amount`)};return Xn.fromRgba(Rv(e,n)).applyKey(i).toRgba().hex}))}return e}function Xv(e=()=>P.TRUECOLOR){return{darken:Vv,lighten:Hv,mix:Wv,contrastOn:Kv,readableOn:qv(e),...Yv()}}function Zv(e,t){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:er(t,e[r+1])});return n}function Qv(e){return{color:{fn:(t=>er(e(),t).hex),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},ramp:{fn:((t,n,...r)=>new Rr(Lr(n),Zv(r,e())).at(t).hex),argTypes:[`float`,`string`],arity:{kind:`alternating`,minimum:4},returnType:`string`}}}function $v(e){return{...Lv(),...Xv(e)}}new z({color:`red`,dim:!0});const ey=/^(?:(?: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,ty=/^(?<family>opus|sonnet|haiku)\s+(?<major>\d+)(?:\.(?<minor>\d))?$/i;function ny(e){if(!e)return`Claude`;let t=e.trim().replace(/\s*\([^)]*\)\s*$/,``).replace(/\s*\[[^\]]*\]\s*$/,``).trim(),n=t.match(ey);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(ty);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 ry(e){let t=e.match(ty);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 iy(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 ay(e){return e.toLocaleString()}function oy(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 sy(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 cy=[`▁`,`▂`,`▃`,`▄`,`▅`,`▆`,`▇`,`█`],ly=cy.length;function uy(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*(ly-1));o+=cy[t]}return o}function dy(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}function fy(e,t,n){if(n.length!==0)throw Error(`${e}: takes at most ${t.length} optional argument${t.length===1?``:`s`} (${t.join(`, `)}), got ${t.length+n.length}`)}const py=Za(),my=[...uo];function hy(){return{basename:{fn:e=>l(e),argTypes:[`string`],arity:{kind:`exact`}},dirname:{fn:e=>u(e),argTypes:[`string`],arity:{kind:`exact`}},abbreviatePath:{fn:e=>iy(e),argTypes:[`string`],arity:{kind:`exact`}},int:{fn:e=>Math.trunc(Dv(e)),argTypes:[`value`],arity:{kind:`exact`}},string:{fn:e=>Ev(e),argTypes:[`value`],arity:{kind:`exact`}},bool:{fn:e=>Ov(e),argTypes:[`value`],arity:{kind:`exact`}},urlEncode:{fn:e=>encodeURIComponent(e),argTypes:[`string`],arity:{kind:`exact`}},themes:{fn:()=>py,argTypes:[],arity:{kind:`exact`}},endcaps:{fn:()=>my,argTypes:[],arity:{kind:`exact`}},sparkline:{fn:(e,t,...n)=>(fy(`sparkline`,[`width`],n),uy(dy(e),t)),argTypes:[`string`,`int`],arity:{kind:`variadic`}},cascade:{fn:(e,...t)=>sy(e,oy(t)),argTypes:[`float`,`string`],arity:{kind:`variadic`}}}}function gy(e=()=>new Date){return{minutesUntilReset:{fn:t=>Math.round(Math.max(0,t*1e3-e().getTime())/6e4),argTypes:[`int`],arity:{kind:`exact`}},formatInteger:{fn:e=>ay(e),argTypes:[`int`],arity:{kind:`exact`}},round:{fn:e=>Math.round(e),argTypes:[`float`],arity:{kind:`exact`}},formatModelName:{fn:e=>ny(e),argTypes:[`string`],arity:{kind:`exact`}},shortenModelName:{fn:e=>ry(e),argTypes:[`string`],arity:{kind:`exact`}}}}function _y(e,t=()=>new Date,n){return up({fromString:e=>new V(e),toString:e=>e.plain,isT:e=>e instanceof V,clock:t,missingKey:`error`,funcs:{...$m(),...d_(),...zh(),...sg(),...Gm(t),...Fp(),...ph(),...$v(n),...hy(),...gy(t),...e??{}}})}function vy(e){return yy(e,new Set(e.names()),``)}function yy(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`?xy(a,e.readDocument(a)):e.read(a);let o=`${a}.`;for(let n of t)if(n.startsWith(o))return yy(e,t,a)}})}function by(e,t){return new Proxy(e,{has:(e,t)=>t===`settings`||Reflect.has(e,t),get:(e,n)=>n===`settings`?t:Reflect.get(e,n)})}function xy(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 Sy(e,t){return e?.kind===`ok`?e.value:t}function Cy(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??wy(t.stderr)].filter(Boolean).join(`, `)}`)}function wy(e){return e.trim().split(`
87
- `,1)[0]??``}function Ty(e,t){if(e.kind!==`ok`)return e;let n=t(e.value);return n===null?Y:J(n)}function Ey(e){if(e.kind!==`ok`)return e;let t=e.value.trim();return t?J(t):Y}const Dy=/^[A-Za-z]:[\\/]/;function Oy(e){let t=e.trim();if(Dy.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 ky(e){return Oy(e)?.host||null}function Ay(e){let t=ky(e);return t?t===`github.com`||t.endsWith(`.github.com`)?`github`:/(^|\.)gitlab\./.test(t)?`gitlab`:null:null}function jy(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 My(e){return e.urls.find(e=>Ly(e)!==null)??e.urls[0]??null}function Ny(e){return e.find(e=>e.name===`origin`)??e[0]??null}function Py(e){let t=Ny(e);return t?My(t):null}function Fy(e){let t=Ny(e);return t?t.urls.find(e=>Ay(e)!==null)??My(t):null}function Iy(e){let t=(Oy(e)?.path??e.replace(/[\\/]+$/,``)).split(`/`);return(t[t.length-1]??``).replace(/\.git$/,``)||null}function Ly(e){let t=Oy(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 Ry(e){let t=Py(e);return t===null?null:Ly(t)}function zy(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??wy(t.stderr)].filter(Boolean).join(`, `)}`)}function By(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Vy(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 Hy(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(!By(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 Uy(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(!By(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 Wy(e){try{let t=r.statSync(e);return{key:`${t.dev}:${t.ino}`,stamp:`${t.mtimeMs}:${t.size}`}}catch{return null}}var Gy=class{isGitRepo(e){try{return r.existsSync(c.join(e,`.git`))}catch{return!1}}async execGitAsync(e,t){return ke({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=Ty(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=Ty(s,e=>this.repoNameFrom(e,r)),o.isWorktree=i),s!==void 0&&t.showRepoUrl&&(o.repoUrl=Ty(s,Ry)),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 Ey(Cy(`git describe --tags`,await this.execGitAsync([`describe`,`--tags`,`--abbrev=0`],{cwd:e,timeout:2e3}),`absent`))}async timeSinceCommit(e,t){return t.kind===`ok`?Ty(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=Ey(Cy(`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=Wy(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=Cy(`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`?jy(t.value):[])}repoNameFrom(e,t){let n=Py(e);return(n===null?null:Iy(n))??c.basename(t)}async getRepoRemoteUrl(e){let t=await this.getRemotesAsync(e);if(t.kind!==`ok`)return t;let n=Fy(t.value);return n===null?Y:J(n)}async execForgeAsync(e,t,n){return ke({bin:e,args:[...t],cwd:n.cwd,env:{...process.env},timeoutMs:n.timeout,category:`forge`})}async resolvePullRequest(e,t){let n=Ay(t);return n===`github`?zy(`gh pr view`,await this.execForgeAsync(`gh`,[`pr`,`view`,`--json`,`number,state,url`],{cwd:e,timeout:5e3}),/no (open )?pull requests? found/i,Hy):n===`gitlab`?zy(`glab mr view`,await this.execForgeAsync(`glab`,[`mr`,`view`,`--output`,`json`],{cwd:e,timeout:5e3}),/no (open )?merge requests? (found|available)/i,Uy):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=Cy(`git status --porcelain=v2 --branch`,await this.execGitAsync([`status`,`--porcelain=v2`,`--branch`],{cwd:e,timeout:2e3}),`failed`);return t.kind===`ok`?J(Vy(t.value)):t}};const Ky=(e,t)=>D(t);var qy=class{slots=new Map;maxWatchers;counters;logger;closed=!1;constructor(e={}){this.maxWatchers=e.maxWatchers??128,this.counters=e.counters,this.logger=e.logger??Ky}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()}},Jy=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 Yy=(e,t)=>D(t),Xy={showSha:!0,showStashCount:!0};function Zy(e){let t=Object.keys(e).sort(),n={};for(let r of t)n[r]=e[r];return JSON.stringify(n)}function Qy(e){let t=t=>{try{return r.statSync(c.join(e,t)).mtimeMs}catch{return 0}};return{head:t(`HEAD`),index:t(`index`)}}function $y(e,t){return e.head!==t.head||e.index!==t.index}function eb(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 tb=class extends Gy{entries=new Map;subscribersByRepo=new Map;fetchInFlight=new Map;resolutions=new Map;prCache=new Map;prFetchInFlight=new Map;refreshes=new Jy;hits=0;misses=0;invalidations=0;inner;ttlMs;maxEntries;watchers;ownsWatchers;logger;sanityTimer=null;constructor(e={}){super(),this.inner=e.inner??new Gy,this.ttlMs=e.ttlMs??3e4,this.maxEntries=e.maxEntries??64,this.logger=e.logger??Yy,e.watchers?(this.watchers=e.watchers,this.ownsWatchers=!1):(this.watchers=new qy({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}|${Zy(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=Qy(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}`,eb(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}`,eb(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,{...Xy});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,{...Xy}),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=Qy(this.inner.resolveGitDir(t.repoRoot)),e.set(t.repoRoot,n)),$y(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 nb=/\r\n|\r|\n/g,rb=e=>J(e.replace(nb,` `).trim());function ib(e){return t=>{let n=e.exec(t)?.[1];return n===void 0?X(`regex no-match`):J(n.replace(nb,` `))}}const ab=e=>{try{return J(JSON.parse(e))}catch(e){return X(`JSON parse failed: ${e.message}`)}};function ob(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 sb(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 cb=`session.id`;function lb(e,t,n){return{where:`output of "${e}" in ${t}`,read:async()=>{let r=await ke({bin:`/bin/sh`,args:[`-c`,e],cwd:t,category:`user-shell`,signal:n});if(!r.ok&&r.reason===`aborted`)throw n.reason;return r.ok?J(r.stdout):X(`shell "${e}" ${r.exitCode===null?[r.reason,r.error].filter(e=>e!==void 0).join(`: `):`exited with code ${r.exitCode}`} in ${t}`)}}}function ub(e,t,n){return{where:`"${e}"`,read:async()=>{try{let r=await S(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 db(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 fb=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],pb=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],mb=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],hb=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`];function gb(e,t){let n=[[`2006`,e=>String(e.getFullYear())],[`January`,e=>fb[e.getMonth()]],[`Monday`,e=>mb[e.getDay()]],[`Jan`,e=>pb[e.getMonth()]],[`Mon`,e=>hb[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 _b={branch:`string`,sha:`string`,dirty:`boolean`,ahead:`number`,behind:`number`,stash:`number`};function vb(e,t,n,r){if(e===null){if(n!==void 0)return n;let e=_b[t];try{return Sb(r,e)}catch{return Cb(e)}}switch(t){case`branch`:return e.branch===`detached`?``:e.branch;case`sha`:return Sy(e.sha,``);case`dirty`:return e.status!==`clean`;case`ahead`:return Sy(e.aheadBehind,{ahead:0,behind:0}).ahead;case`behind`:return Sy(e.aheadBehind,{ahead:0,behind:0}).behind;case`stash`:return Sy(e.stashCount,0)}}var yb=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}},bb=class{buckets=new Map;subscribe(e,t){let n=this.buckets.get(e);if(!n){let t=new Set;n={timer:ne(()=>{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&&(te(n.timer),this.buckets.delete(e)))}dispose(){for(let{timer:e}of this.buckets.values())te(e);this.buckets.clear()}bucketCount(){return this.buckets.size}};function xb(e,t){let n=e;for(let e of t.split(`.`)){if(typeof n!=`object`||!n)return;n=n[e]}return n}function Sb(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`?Ev(e):t===`number`?Dv(e):Ov(e)}function Cb(e){return e===`number`?0:e===`boolean`?!1:``}var wb=class{inputMetas=new Map;lastErrors=new Map;watchMgr=new yb;ttlMgr=new bb;gitSubscriptions=new Map;cleanups=[];inFlight=new Map;reads=new Jy;abort=new AbortController;drawn=Cv.observable.box(P.TRUECOLOR);drawnAt=()=>this.drawn.get();engine=_y(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 tb({sanityIntervalMs:0}),this.ownsGitProvider=!0),this.sessionState=r}get variableStore(){return this.store}declareLiteral(e,t){this.store.defineBox(e,Tv(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,lb(t,n.cwd,this.abort.signal),ob(e,n.cache),n.parse)}declareFile(e,t,n){this.declareSource(e,ub(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,rb,t.default,n);case`regex`:return this.scalarPublisher(e,ib(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=db(n,t,r);this.noteOutcome(e,a),this.store.setBox(e,Sy(a,i))}}documentPublisher(e,t,n){let r=t===void 0?Y:J(t);return this.store.defineDocument(e,r),i=>{let a=db(i,ab,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=vy(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 gb(t.format,e)}catch{return this.stringInitial(t.varDefault)}})(new Date));let r=this.ttlMgr.subscribe(n,()=>{try{this.store.setBox(e,gb(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=_b[t.field],r=t.varDefault===void 0?Cb(n):Sb(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,vb(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(cb);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=xb(e,n.path),i=this.store.getType(t);if(r!==void 0)try{this.store.setBox(t,Sb(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,Cv.reaction)(()=>{let t=vy(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,Cv.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,Sb(this.defaultEmptyValue,t))}catch{this.store.setBox(e,Cb(t))}}defaultFor(e){try{return Sb(this.defaultEmptyValue,e)}catch{return Cb(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 Tb={project_dir:{kind:`input`,path:`workspace.project_dir`,default:``},[cb]:{kind:`input`,path:`session_id`,default:``},transcript_path:{kind:`input`,path:`transcript_path`,default:``},resume_command:{kind:`input`,path:`resumeCommand`,default:``},config_path:{kind:`input`,path:`configPath`,default:``},"theme.effective":{kind:`input`,path:`theme.effective`,default:``},"style.effective":{kind:`input`,path:`style.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},"endcaps.effective":{kind:`input`,path:`endcaps.effective`,default:``},"variation.effective":{kind:`input`,path:`variation.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},"updateNotice.effective":{kind:`input`,path:`updateNotice.effective`,type:`boolean`,default:!0},"term.cols":{kind:`input`,path:`term.cols`,type:`number`,default:80},"git.repoUrl":{kind:`input`,path:`git.repoUrl`,default:``}},Eb={theme:{configKey:`palette`,sessionKey:`theme`,effectiveVar:`theme.effective`,label:`🎨`},preset:{configKey:`preset`,sessionKey:`preset`,effectiveVar:`preset.effective`,label:`▦`},style:{configKey:`style`,sessionKey:`style`,effectiveVar:`style.effective`,label:`◐`},endcaps:{configKey:`endcaps`,sessionKey:`endcaps`,effectiveVar:`endcaps.effective`,label:`✦`},variation:{configKey:`variation`,sessionKey:`variation`,effectiveVar:`variation.effective`,label:`🎼`},autoWrap:{configKey:`autoWrap`,sessionKey:`autoWrap`,effectiveVar:`autoWrap.effective`,label:`wrap`},padding:{configKey:`padding`,sessionKey:`padding`,effectiveVar:`padding.effective`,label:`padding`},updateNotice:{configKey:`updateNotice`,sessionKey:`updateNotice`,effectiveVar:`updateNotice.effective`,label:`update notice`}},Db=Object.values(Eb),Ob=[{configKey:`charset`,effectiveVar:`charset.effective`},{configKey:`colorCompatibility`,effectiveVar:`colorCompatibility.effective`}],kb=new Set(Ob.map(e=>e.configKey)),Ab=new Map([...Db,...Ob].map(e=>[e.configKey,e.effectiveVar])),jb=new Map(Db.map(e=>[e.sessionKey,e.effectiveVar])),Mb=new Map(Object.keys(Eb).map(e=>[Eb[e].sessionKey,e]));function Nb(e,t,n){let r=new Set,i=e=>{for(let t of pv(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 js(e))i(t.when),t.kind===`segment`&&(i(t.lead),i(t.trail));for(let t of Object.values(e.variables))t.kind===`template`&&i(t.template),t.kind===`state`&&r.add(cb);for(let t of Object.values(e.actions)){r.add(cb),`copy`in t&&i(t.copy),`open`in t&&i(t.open);let e=`set`in t?jb.get(t.set):void 0,n=`persist`in t?Ab.get(t.persist):void 0;e!==void 0&&r.add(e),n!==void 0&&r.add(n)}return r}function Pb(e,t,n){let r=yv({...n,variables:{...n.variables,...e.variables},segments:{...n.segments,...e.segments}}),i={};for(let a of Nb(e,t,n.helpers)){if(vv(a,r))continue;let e=Tb[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}const Fb=new Map,Ib=new Map;function Lb(e){let t=zb(e);if(t===null)throw Error(`Palette "${e}" did not resolve in the theme registry — allowed names and the registry are inconsistent`);return t}function Rb(e,t){return e===`bar`?t:Lb(e)}function zb(e){let t=Fb.get(e);if(t!==void 0)return t;let n=Er(e);return n===null?null:(Fb.set(e,n),n)}function Bb(e,t){let n=`${e.name} ${t.hueShift} ${t.chromaScale} ${t.lightnessScale} ${t.lightnessShift}`,r=Ib.get(n);if(r!==void 0)return r;let i=Pr(e,t);return Ib.set(n,i),i}function Vb(e){let t=zb(e);return t===null?null:{kind:`decided`,name:e,value:t}}function Hb(e,t,n){let r=Vb(e);return r===null?(n(`${t} rendered "${Ya}": "${e}" names no installed theme${Ja(e)}`),Wb()):r}function Ub(e,t,n){return io(e,t,n,Wb(),Vb)}function Wb(){return Vb(Ya)}function Gb(e){return ao(Ub(void 0,null,e),Wb).value}const Kb=new Map;function qb(e,t,n){Kb.set(e,{permanent:!0,resolve:t,paletteOf:n})}qb(`themes`,()=>Za(),e=>Lb(e));const Jb=`placementThemes`;qb(Jb,Qa,(e,t)=>Rb(e,t.palette)),qb(`endcaps`,()=>uo),qb(`variations`,()=>vo),qb(`charsets`,()=>mo),qb(`colorCompatibilities`,()=>go);function Yb(e){return new Map([[`styles`,{members:Object.keys(e.styles),paletteOf:(t,n)=>Bb(n.basePalette,e.styles[t])}],[`presets`,{members:C_(e.presets)}]])}function Xb(e){return[...new Set([...Kb.keys(),...e.keys()])]}function Zb(e,t){if(typeof e!=`string`)return{members:e};let n=t.get(e);if(n)return n;let r=Kb.get(e);if(r)return{members:r.resolve(),paletteOf:r.paletteOf};throw Error(`unknown option domain "${e}" (have: ${Xb(t).join(`, `)})`)}function Qb(e){return{label:e.label,domain:$b(e.domain)}}function $b(e){return e===`theme`?{from:Jb}:e===`bool`||`min`in e?e:{from:e}}function ex(e,t,n,r){let i=Kc(e.label),{domain:a}=e;if(a===`bool`)return{kind:`inline`,template:`{{ action "${r}" "☑ ${i}" "☐ ${i}" }}`,actions:{[r]:{set:t,cycle:[...Co]}}};if(`from`in a)return{kind:`ring`,template:`{{ carousel "${r}" }}`,actions:{[r]:{set:t,from:a.from}}};let o=e=>({set:t,min:a.min,max:a.max,by:e});return{kind:`inline`,template:`{{ action "${r}.down" "◀" }} {{ "${i}" }} {{ .${n} }} {{ action "${r}.up" "▶" }}`,actions:{[`${r}.down`]:o(-a.step),[`${r}.up`]:o(a.step)}}}const tx=/^segments\.([^.]+)\.palette$/,nx=/^presets\.(.+)\.root$/,rx=/^presets\.(.+)\.globals\.([^.]+)$/;function ix(e){return`presets.${e}.root`}function ax(e,t){return`presets.${e}.globals.${t}`}function ox(e){if(El(e))return{scope:`globals`,field:e};let t=tx.exec(e);if(t)return{scope:`segment-palette`,segment:t[1]};let n=rx.exec(e);if(n&&yl(n[2]))return{scope:`preset-globals`,preset:n[1],field:n[2]};let r=nx.exec(e);return r?{scope:`preset-root`,preset:r[1]}:null}function sx(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 cx=`open`;function lx(e,t,n,r){let i={variable:e,key:e,member:cx};return r.variables[e]=Qc(e,Hc),r.actions[e]=$c(e,cx),r.segments[e]={template:Xc(e,`(?)`,`✕`),...ux(n)},qc(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 ux(e){let[t,...n]=e;return t===void 0?{}:{when:Jc(t,...n)}}const dx=`none`;var fx=class extends Error{constructor(e,t,n){super(`Invalid ${t} color ${JSON.stringify(e)}: ${n}`),this.name=`ColorSpecError`}};function px(e,t,n,r,i){let{palette:a,tint:o}=e,s=mx(n,i),c=s!==dx,l=c?s===void 0?o:hx(a,s,`bg`):hx(a,`background`,`bg`);e.bg=l;let u=mx(r,i),d=u===void 0?c?ka(a,l,t):void 0:hx(a,u,`fg`);return new z({...c&&{bgcolor:yn.fromRgba(l)},...d!==void 0&&{color:yn.fromRgba(d)}})}function mx(e,t){if(e!==void 0)return e.evaluate(t).map(e=>e.plain).join(``)}function hx(e,t,n){try{return er(e,t)}catch(e){throw e instanceof Zn?new fx(t,n,e.message):e}}const gx={help:[`-h`,`--help`],version:[`-V`,`--version`]},_x=[`✚ inserts`,`✖ removes`,`⚙️ configures`,`↺ resets layout`],vx=`
86
+ Use 'override' annotation for methods overridden by subclass.`)}}var ia=ua(0),aa=function(){var e=!1,t={};return Object.defineProperty(t,`0`,{set:function(){e=!0}}),Object.create(t)[0]=1,e===!1}(),oa=0,sa=function(){};function ca(e,t){Object.setPrototypeOf?Object.setPrototypeOf(e.prototype,t):e.prototype.__proto__===void 0?e.prototype=t:e.prototype.__proto__=t}ca(sa,Array.prototype);var la=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,_a(function(){var e=new ji(r,n,i,!0);e.proxy_=a,ee(a,O,e),t&&t.length&&a.spliceWithArray(0,0,t),aa&&Object.defineProperty(a,`0`,ia)}),a}ve(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 Li(e)?e.slice():e}))},n[Symbol.iterator]=function(){var e=this,t=0;return Ca({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`}}])}(sa);Object.entries(V).forEach(function(e){var t=e[0],n=e[1];t!==`concat`&&C(la.prototype,t,n)});function ua(e){return{enumerable:!1,configurable:!0,get:function(){return this[O].get_(e)},set:function(t){this[O].set_(e,t)}}}function da(e){s(la.prototype,``+e,ua(e))}function fa(e){if(e>oa){for(var t=oa;t<e+100;t++)da(t);oa=e}}fa(1e3);function pa(e,t,n){return new la(e,t,n)}function ma(e,t){if(typeof e==`object`&&e){if(Li(e))return t!==void 0&&n(23),e[O].atom_;if(qi(e))return e.atom_;if(Hi(e)){if(t===void 0)return e.keysAtom_;var r=e.data_.get(t)||e.hasMap_.get(t);return r||n(25,t,ga(e)),r}if(ta(e)){if(!t)return n(26);var i=e[O].values_.get(t);return i||n(27,t,ga(e)),i}if(Ne(e)||nn(e)||R(e))return e}else if(v(e)&&R(e[O]))return e[O];n(28)}function ha(e,t){if(e||n(29),t!==void 0)return ha(ma(e,t));if(Ne(e)||nn(e)||R(e)||Hi(e)||qi(e))return e;if(e[O])return e[O];n(24,e)}function ga(e,t){var n;if(t!==void 0)n=ma(e,t);else if(ur(e))return e.name;else n=ta(e)||Hi(e)||qi(e)?ha(e):ma(e);return n.name_}function _a(e){var t=F(),n=Xt(!0);jn();try{return e()}finally{Mn(),Zt(n),hn(t)}}var va=c.toString;function ya(e,t,n){return n===void 0&&(n=-1),ba(e,t,n)}function ba(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=va.call(e);if(o!==va.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=xa(e),t=xa(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(!ba(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)&&ba(e[m],t[m],n-1,r,i)))return!1}}return r.pop(),i.pop(),!0}function xa(e){return Li(e)?e.slice():ne(e)||Hi(e)||w(e)||qi(e)?Array.from(e.entries()):e}var Sa=i().Iterator?.prototype||{};function Ca(e){return e[Symbol.iterator]=wa,Object.assign(Object.create(Sa),e)}function wa(){return this}function Ta(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:Xn,extras:{getDebugName:ga},$mobx:O}),e.$mobx=O,e.FlowCancellationError=Mr,e.ObservableMap=Vi,e.ObservableSet=Ki,e.Reaction=Rn,e._allowStateChanges=Yt,e._allowStateChangesInsideComputed=lr,e._allowStateReadsEnd=_n,e._allowStateReadsStart=gn,e._autoAction=cr,e._endAction=Jt,e._getAdministration=ha,e._getGlobalState=wn,e._interceptReads=Br,e._isComputingDerivation=cn,e._resetGlobalState=Tn,e._startAction=qt,e.action=sr,e.autorun=dr,e.comparer=ze,e.computed=Vt,e.configure=wr,e.createAtom=Pe,e.defineProperty=ni,e.entries=Zr,e.extendObservable=Tr,e.flow=Ir,e.flowResult=Rr,e.get=ti,e.getAtom=ma,e.getDebugName=ga,e.getDependencyTree=Er,e.getObserverTree=Or,e.has=ei,e.intercept=Vr,e.isAction=ur,e.isBoxedObservable=en,e.isComputed=z,e.isComputedProp=Gr,e.isFlow=zr,e.isFlowCancellationError=Nr,e.isObservable=qr,e.isObservableArray=Li,e.isObservableMap=Hi,e.isObservableObject=ta,e.isObservableProp=Jr,e.isObservableSet=qi,e.keys=Yr,e.makeAutoObservable=Ei,e.makeObservable=wi,e.observable=A,e.observe=ii,e.onBecomeObserved=vr,e.onBecomeUnobserved=yr,e.onReactionError=zn,e.override=Ge,e.ownKeys=ri,e.reaction=mr,e.remove=$r,e.runInAction=lr,e.set=Qr,e.spy=Xn,e.toJS=ci,e.trace=li,e.transaction=di,e.untracked=mn,e.values=Xr,e.when=fi})),Ev=ge(((e,t)=>{process.env.NODE_ENV===`production`?t.exports=wv():t.exports=Tv()}))();function Dv(e){if(Array.isArray(e))return Object.freeze(e.map(Dv));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]=Dv(r);return Object.freeze(t)}return e}function Ov(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 kv(e){return typeof e==`string`?e:String(e)}function Av(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 jv(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 Mv(e,t){if(!(e instanceof V))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=Nv(e.style).add(t),n}function Nv(e){if(e instanceof z)return e;try{return z.parse(e)}catch(t){throw t instanceof Ur?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 Pv(e){return{fn:(t=>Mv(t,e)),argTypes:[`liftable`],arity:{kind:`exact`},returnType:`T`}}function Fv(e){return{fn:((t,n)=>Mv(n,new z({[e]:yn.parse(t)}))),argTypes:[`string`,`liftable`],arity:{kind:`exact`},returnType:`T`}}function Iv(e,t){return new z({[e]:t})}function Lv(){let e={};for(let t of Br)e[t]=Pv(Iv(t,!0)),e[`not_${t}`]=Pv(Iv(t,!1));for(let[t,n]of Object.entries(Hr))e[t]=Pv(Iv(n,!0));return e}const Rv={fn:((e,t)=>Mv(t,z.parse(e))),argTypes:[`string`,`liftable`],arity:{kind:`exact`},returnType:`T`},zv={fn:((e,t)=>Mv(t,new z({link:e}))),argTypes:[`string`,`liftable`],arity:{kind:`exact`},returnType:`T`};function Bv(){return{fg:Fv(`color`),bg:Fv(`bgcolor`),...Lv(),link:zv,style:Rv}}function Vv(e,t){if(!Qn.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 $n(e)}function Hv(e,t){return{fn:t,argTypes:e,arity:{kind:`exact`},returnType:`string`}}function Uv(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}`)}return e}const Wv=Hv([`string`,`int`],((e,t)=>or(Vv(e,`darken`),t).hex)),Gv=Hv([`string`,`int`],((e,t)=>or(Vv(e,`lighten`),-t).hex)),Kv={min:0,max:100,note:`0 = from, 100 = toward`},qv=Hv([`string`,`string`,`float`],((e,t,n)=>Dn(Vv(e,`mix`),Vv(t,`mix`),Uv(n,`mix`,`percentage`,Kv)/100).hex)),Jv={min:1,max:21,note:`4.5 = AA body text, 3 = AA large text`},Yv=Hv([`string`],(e=>sr(Vv(e,`contrastOn`)).hex)),Xv=e=>Hv([`string`,`string`,`float`],((t,n,r)=>cr(Vv(t,`readableOn`),Vv(n,`readableOn`),Uv(r,`readableOn`,`ratio`,Jv),e()).hex)),Zv={hueShift:`shiftHue`,chromaScale:`scaleChroma`,lightnessScale:`scaleLightness`,lightnessShift:`shiftLightness`};function Qv(){let e={};for(let[t,n]of Object.entries(Zv)){let r=t;e[n]=Hv([`string`,`float`],((e,t)=>{let i={...Bn,[r]:Uv(t,n,`amount`)};return Xn.fromRgba(Vv(e,n)).applyKey(i).toRgba().hex}))}return e}function $v(e=()=>P.TRUECOLOR){return{darken:Wv,lighten:Gv,mix:qv,contrastOn:Yv,readableOn:Xv(e),...Qv()}}function ey(e,t){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:er(t,e[r+1])});return n}function ty(e){return{color:{fn:(t=>er(e(),t).hex),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},ramp:{fn:((t,n,...r)=>new Rr(Lr(n),ey(r,e())).at(t).hex),argTypes:[`float`,`string`],arity:{kind:`alternating`,minimum:4},returnType:`string`}}}function ny(e){return{...Bv(),...$v(e)}}new z({color:`red`,dim:!0});const ry=/^(?:(?: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,iy=/^(?<family>opus|sonnet|haiku)\s+(?<major>\d+)(?:\.(?<minor>\d))?$/i;function ay(e){if(!e)return`Claude`;let t=e.trim().replace(/\s*\([^)]*\)\s*$/,``).replace(/\s*\[[^\]]*\]\s*$/,``).trim(),n=t.match(ry);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(iy);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 oy(e){let t=e.match(iy);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 sy(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 cy(e){return e.toLocaleString()}function ly(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 uy(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 dy=[`▁`,`▂`,`▃`,`▄`,`▅`,`▆`,`▇`,`█`],fy=dy.length;function py(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*(fy-1));o+=dy[t]}return o}function my(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}function hy(e,t,n){if(n.length!==0)throw Error(`${e}: takes at most ${t.length} optional argument${t.length===1?``:`s`} (${t.join(`, `)}), got ${t.length+n.length}`)}const gy=$a(),_y=[...po];function vy(){return{basename:{fn:e=>l(e),argTypes:[`string`],arity:{kind:`exact`}},dirname:{fn:e=>u(e),argTypes:[`string`],arity:{kind:`exact`}},abbreviatePath:{fn:e=>sy(e),argTypes:[`string`],arity:{kind:`exact`}},int:{fn:e=>Math.trunc(Av(e)),argTypes:[`value`],arity:{kind:`exact`}},string:{fn:e=>kv(e),argTypes:[`value`],arity:{kind:`exact`}},bool:{fn:e=>jv(e),argTypes:[`value`],arity:{kind:`exact`}},urlEncode:{fn:e=>encodeURIComponent(e),argTypes:[`string`],arity:{kind:`exact`}},themes:{fn:()=>gy,argTypes:[],arity:{kind:`exact`}},endcaps:{fn:()=>_y,argTypes:[],arity:{kind:`exact`}},sparkline:{fn:(e,t,...n)=>(hy(`sparkline`,[`width`],n),py(my(e),t)),argTypes:[`string`,`int`],arity:{kind:`variadic`}},cascade:{fn:(e,...t)=>uy(e,ly(t)),argTypes:[`float`,`string`],arity:{kind:`variadic`}}}}function yy(e=()=>new Date){return{minutesUntilReset:{fn:t=>Math.round(Math.max(0,t*1e3-e().getTime())/6e4),argTypes:[`int`],arity:{kind:`exact`}},formatInteger:{fn:e=>cy(e),argTypes:[`int`],arity:{kind:`exact`}},round:{fn:e=>Math.round(e),argTypes:[`float`],arity:{kind:`exact`}},formatModelName:{fn:e=>ay(e),argTypes:[`string`],arity:{kind:`exact`}},shortenModelName:{fn:e=>oy(e),argTypes:[`string`],arity:{kind:`exact`}}}}function by(e,t=()=>new Date,n){return pp({fromString:e=>new V(e),toString:e=>e.plain,isT:e=>e instanceof V,clock:t,missingKey:`error`,funcs:{...nh(),...m_(),...Hh(),...ug(),...Jm(t),...Rp(),...gh(),...ny(n),...vy(),...yy(t),...e??{}}})}function xy(e){return Sy(e,new Set(e.names()),``)}function Sy(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`?wy(a,e.readDocument(a)):e.read(a);let o=`${a}.`;for(let n of t)if(n.startsWith(o))return Sy(e,t,a)}})}function Cy(e,t){return new Proxy(e,{has:(e,t)=>t===`settings`||Reflect.has(e,t),get:(e,n)=>n===`settings`?t:Reflect.get(e,n)})}function wy(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 Ty(e,t){return e?.kind===`ok`?e.value:t}function Ey(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??Dy(t.stderr)].filter(Boolean).join(`, `)}`)}function Dy(e){return e.trim().split(`
87
+ `,1)[0]??``}function Oy(e,t){if(e.kind!==`ok`)return e;let n=t(e.value);return n===null?Y:J(n)}function ky(e){if(e.kind!==`ok`)return e;let t=e.value.trim();return t?J(t):Y}const Ay=/^[A-Za-z]:[\\/]/;function jy(e){let t=e.trim();if(Ay.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 My(e){return jy(e)?.host||null}function Ny(e){let t=My(e);return t?t===`github.com`||t.endsWith(`.github.com`)?`github`:/(^|\.)gitlab\./.test(t)?`gitlab`:null:null}function Py(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 Fy(e){return e.urls.find(e=>By(e)!==null)??e.urls[0]??null}function Iy(e){return e.find(e=>e.name===`origin`)??e[0]??null}function Ly(e){let t=Iy(e);return t?Fy(t):null}function Ry(e){let t=Iy(e);return t?t.urls.find(e=>Ny(e)!==null)??Fy(t):null}function zy(e){let t=(jy(e)?.path??e.replace(/[\\/]+$/,``)).split(`/`);return(t[t.length-1]??``).replace(/\.git$/,``)||null}function By(e){let t=jy(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 Vy(e){let t=Ly(e);return t===null?null:By(t)}function Hy(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??Dy(t.stderr)].filter(Boolean).join(`, `)}`)}function Uy(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Wy(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 Gy(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(!Uy(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 Ky(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(!Uy(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 qy(e){try{let t=r.statSync(e);return{key:`${t.dev}:${t.ino}`,stamp:`${t.mtimeMs}:${t.size}`}}catch{return null}}var Jy=class{isGitRepo(e){try{return r.existsSync(c.join(e,`.git`))}catch{return!1}}async execGitAsync(e,t){return ke({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=Oy(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=Oy(s,e=>this.repoNameFrom(e,r)),o.isWorktree=i),s!==void 0&&t.showRepoUrl&&(o.repoUrl=Oy(s,Vy)),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 ky(Ey(`git describe --tags`,await this.execGitAsync([`describe`,`--tags`,`--abbrev=0`],{cwd:e,timeout:2e3}),`absent`))}async timeSinceCommit(e,t){return t.kind===`ok`?Oy(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=ky(Ey(`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=qy(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=Ey(`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`?Py(t.value):[])}repoNameFrom(e,t){let n=Ly(e);return(n===null?null:zy(n))??c.basename(t)}async getRepoRemoteUrl(e){let t=await this.getRemotesAsync(e);if(t.kind!==`ok`)return t;let n=Ry(t.value);return n===null?Y:J(n)}async execForgeAsync(e,t,n){return ke({bin:e,args:[...t],cwd:n.cwd,env:{...process.env},timeoutMs:n.timeout,category:`forge`})}async resolvePullRequest(e,t){let n=Ny(t);return n===`github`?Hy(`gh pr view`,await this.execForgeAsync(`gh`,[`pr`,`view`,`--json`,`number,state,url`],{cwd:e,timeout:5e3}),/no (open )?pull requests? found/i,Gy):n===`gitlab`?Hy(`glab mr view`,await this.execForgeAsync(`glab`,[`mr`,`view`,`--output`,`json`],{cwd:e,timeout:5e3}),/no (open )?merge requests? (found|available)/i,Ky):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=Ey(`git status --porcelain=v2 --branch`,await this.execGitAsync([`status`,`--porcelain=v2`,`--branch`],{cwd:e,timeout:2e3}),`failed`);return t.kind===`ok`?J(Wy(t.value)):t}};const Yy=(e,t)=>D(t);var Xy=class{slots=new Map;maxWatchers;counters;logger;closed=!1;constructor(e={}){this.maxWatchers=e.maxWatchers??128,this.counters=e.counters,this.logger=e.logger??Yy}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()}},Zy=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 Qy=(e,t)=>D(t),$y={showSha:!0,showStashCount:!0};function eb(e){let t=Object.keys(e).sort(),n={};for(let r of t)n[r]=e[r];return JSON.stringify(n)}function tb(e){let t=t=>{try{return r.statSync(c.join(e,t)).mtimeMs}catch{return 0}};return{head:t(`HEAD`),index:t(`index`)}}function nb(e,t){return e.head!==t.head||e.index!==t.index}function rb(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 ib=class extends Jy{entries=new Map;subscribersByRepo=new Map;fetchInFlight=new Map;resolutions=new Map;prCache=new Map;prFetchInFlight=new Map;refreshes=new Zy;hits=0;misses=0;invalidations=0;inner;ttlMs;maxEntries;watchers;ownsWatchers;logger;sanityTimer=null;constructor(e={}){super(),this.inner=e.inner??new Jy,this.ttlMs=e.ttlMs??3e4,this.maxEntries=e.maxEntries??64,this.logger=e.logger??Qy,e.watchers?(this.watchers=e.watchers,this.ownsWatchers=!1):(this.watchers=new Xy({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}|${eb(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=tb(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}`,rb(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}`,rb(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,{...$y});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,{...$y}),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=tb(this.inner.resolveGitDir(t.repoRoot)),e.set(t.repoRoot,n)),nb(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 ab=/\r\n|\r|\n/g,ob=e=>J(e.replace(ab,` `).trim());function sb(e){return t=>{let n=e.exec(t)?.[1];return n===void 0?X(`regex no-match`):J(n.replace(ab,` `))}}const cb=e=>{try{return J(JSON.parse(e))}catch(e){return X(`JSON parse failed: ${e.message}`)}};function lb(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 ub(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 db=`session.id`;function fb(e,t,n){return{where:`output of "${e}" in ${t}`,read:async()=>{let r=await ke({bin:`/bin/sh`,args:[`-c`,e],cwd:t,category:`user-shell`,signal:n});if(!r.ok&&r.reason===`aborted`)throw n.reason;return r.ok?J(r.stdout):X(`shell "${e}" ${r.exitCode===null?[r.reason,r.error].filter(e=>e!==void 0).join(`: `):`exited with code ${r.exitCode}`} in ${t}`)}}}function pb(e,t,n){return{where:`"${e}"`,read:async()=>{try{let r=await S(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 mb(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 hb=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],gb=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],_b=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],vb=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`];function yb(e,t){let n=[[`2006`,e=>String(e.getFullYear())],[`January`,e=>hb[e.getMonth()]],[`Monday`,e=>_b[e.getDay()]],[`Jan`,e=>gb[e.getMonth()]],[`Mon`,e=>vb[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 bb={branch:`string`,sha:`string`,dirty:`boolean`,ahead:`number`,behind:`number`,stash:`number`};function xb(e,t,n,r){if(e===null){if(n!==void 0)return n;let e=bb[t];try{return Tb(r,e)}catch{return Eb(e)}}switch(t){case`branch`:return e.branch===`detached`?``:e.branch;case`sha`:return Ty(e.sha,``);case`dirty`:return e.status!==`clean`;case`ahead`:return Ty(e.aheadBehind,{ahead:0,behind:0}).ahead;case`behind`:return Ty(e.aheadBehind,{ahead:0,behind:0}).behind;case`stash`:return Ty(e.stashCount,0)}}var Sb=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}},Cb=class{buckets=new Map;subscribe(e,t){let n=this.buckets.get(e);if(!n){let t=new Set;n={timer:ne(()=>{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&&(te(n.timer),this.buckets.delete(e)))}dispose(){for(let{timer:e}of this.buckets.values())te(e);this.buckets.clear()}bucketCount(){return this.buckets.size}};function wb(e,t){let n=e;for(let e of t.split(`.`)){if(typeof n!=`object`||!n)return;n=n[e]}return n}function Tb(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`?kv(e):t===`number`?Av(e):jv(e)}function Eb(e){return e===`number`?0:e===`boolean`?!1:``}var Db=class{inputMetas=new Map;lastErrors=new Map;watchMgr=new Sb;ttlMgr=new Cb;gitSubscriptions=new Map;cleanups=[];inFlight=new Map;reads=new Zy;abort=new AbortController;drawn=Ev.observable.box(P.TRUECOLOR);drawnAt=()=>this.drawn.get();engine=by(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 ib({sanityIntervalMs:0}),this.ownsGitProvider=!0),this.sessionState=r}get variableStore(){return this.store}declareLiteral(e,t){this.store.defineBox(e,Ov(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,fb(t,n.cwd,this.abort.signal),lb(e,n.cache),n.parse)}declareFile(e,t,n){this.declareSource(e,pb(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,ob,t.default,n);case`regex`:return this.scalarPublisher(e,sb(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=mb(n,t,r);this.noteOutcome(e,a),this.store.setBox(e,Ty(a,i))}}documentPublisher(e,t,n){let r=t===void 0?Y:J(t);return this.store.defineDocument(e,r),i=>{let a=mb(i,cb,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=xy(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 yb(t.format,e)}catch{return this.stringInitial(t.varDefault)}})(new Date));let r=this.ttlMgr.subscribe(n,()=>{try{this.store.setBox(e,yb(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=bb[t.field],r=t.varDefault===void 0?Eb(n):Tb(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,xb(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(db);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=wb(e,n.path),i=this.store.getType(t);if(r!==void 0)try{this.store.setBox(t,Tb(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,Ev.reaction)(()=>{let t=xy(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,Ev.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,Tb(this.defaultEmptyValue,t))}catch{this.store.setBox(e,Eb(t))}}defaultFor(e){try{return Tb(this.defaultEmptyValue,e)}catch{return Eb(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 Ob={project_dir:{kind:`input`,path:`workspace.project_dir`,default:``},[db]:{kind:`input`,path:`session_id`,default:``},transcript_path:{kind:`input`,path:`transcript_path`,default:``},resume_command:{kind:`input`,path:`resumeCommand`,default:``},config_path:{kind:`input`,path:`configPath`,default:``},"theme.effective":{kind:`input`,path:`theme.effective`,default:``},"style.effective":{kind:`input`,path:`style.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},"endcaps.effective":{kind:`input`,path:`endcaps.effective`,default:``},"variation.effective":{kind:`input`,path:`variation.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},"updateNotice.effective":{kind:`input`,path:`updateNotice.effective`,type:`boolean`,default:!0},"term.cols":{kind:`input`,path:`term.cols`,type:`number`,default:80},"git.repoUrl":{kind:`input`,path:`git.repoUrl`,default:``}},kb={theme:{configKey:`palette`,sessionKey:`theme`,effectiveVar:`theme.effective`,label:`🎨`},preset:{configKey:`preset`,sessionKey:`preset`,effectiveVar:`preset.effective`,label:`▦`},style:{configKey:`style`,sessionKey:`style`,effectiveVar:`style.effective`,label:`◐`},endcaps:{configKey:`endcaps`,sessionKey:`endcaps`,effectiveVar:`endcaps.effective`,label:`✦`},variation:{configKey:`variation`,sessionKey:`variation`,effectiveVar:`variation.effective`,label:`🎼`},autoWrap:{configKey:`autoWrap`,sessionKey:`autoWrap`,effectiveVar:`autoWrap.effective`,label:`wrap`},padding:{configKey:`padding`,sessionKey:`padding`,effectiveVar:`padding.effective`,label:`padding`},updateNotice:{configKey:`updateNotice`,sessionKey:`updateNotice`,effectiveVar:`updateNotice.effective`,label:`update notice`}},Ab=Object.values(kb),jb=[{configKey:`charset`,effectiveVar:`charset.effective`},{configKey:`colorCompatibility`,effectiveVar:`colorCompatibility.effective`}],Mb=new Set(jb.map(e=>e.configKey)),Nb=new Map([...Ab,...jb].map(e=>[e.configKey,e.effectiveVar])),Pb=new Map(Ab.map(e=>[e.sessionKey,e.effectiveVar]));function Fb(e){return Object.fromEntries(Object.keys(kb).map(t=>[t,e(t)]))}const Ib=new Map(Object.keys(kb).map(e=>[kb[e].sessionKey,e]));function Lb(e,t,n){let r=new Set,i=e=>{for(let t of gv(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 Ns(e))i(t.when),t.kind===`segment`&&(i(t.lead),i(t.trail));for(let t of Object.values(e.variables))t.kind===`template`&&i(t.template),t.kind===`state`&&r.add(db);for(let t of Object.values(e.actions)){r.add(db),`copy`in t&&i(t.copy),`open`in t&&i(t.open);let e=`set`in t?Pb.get(t.set):void 0,n=`persist`in t?Nb.get(t.persist):void 0;e!==void 0&&r.add(e),n!==void 0&&r.add(n)}return r}function Rb(e,t,n){let r=Sv({...n,variables:{...n.variables,...e.variables},segments:{...n.segments,...e.segments}}),i={};for(let a of Lb(e,t,n.helpers)){if(xv(a,r))continue;let e=Ob[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}const zb=new Map,Bb=new Map;function Vb(e){let t=Ub(e);if(t===null)throw Error(`Palette "${e}" did not resolve in the theme registry — allowed names and the registry are inconsistent`);return t}function Hb(e,t){return e===`bar`?t:Vb(e)}function Ub(e){let t=zb.get(e);if(t!==void 0)return t;let n=Er(e);return n===null?null:(zb.set(e,n),n)}function Wb(e,t){let n=`${e.name} ${t.hueShift} ${t.chromaScale} ${t.lightnessScale} ${t.lightnessShift}`,r=Bb.get(n);if(r!==void 0)return r;let i=Pr(e,t);return Bb.set(n,i),i}function Gb(e){let t=Ub(e);return t===null?null:{kind:`decided`,name:e,value:t}}function Kb(e,t,n){let r=Gb(e);return r===null?(n(`${t} rendered "${Za}": "${e}" names no installed theme${Xa(e)}`),Jb()):r}function qb(e,t,n){return oo(e,t,n,Jb(),Gb)}function Jb(){return Gb(Za)}function Yb(e){return so(qb(void 0,null,e),Jb).value}const Xb=new Map;function Zb(e,t,n){Xb.set(e,{permanent:!0,resolve:t,paletteOf:n})}Zb(`themes`,()=>$a(),e=>Vb(e));const Qb=`placementThemes`;Zb(Qb,eo,(e,t)=>Hb(e,t.palette)),Zb(`endcaps`,()=>po),Zb(`variations`,()=>bo),Zb(`charsets`,()=>go),Zb(`colorCompatibilities`,()=>vo);function $b(e){return new Map([[`styles`,{members:Object.keys(e.styles),paletteOf:(t,n)=>Wb(n.basePalette,e.styles[t])}],[`presets`,{members:E_(e.presets)}]])}function ex(e){return[...new Set([...Xb.keys(),...e.keys()])]}function tx(e,t){if(typeof e!=`string`)return{members:e};let n=t.get(e);if(n)return n;let r=Xb.get(e);if(r)return{members:r.resolve(),paletteOf:r.paletteOf};throw Error(`unknown option domain "${e}" (have: ${ex(t).join(`, `)})`)}function nx(e){return{label:e.label,domain:rx(e.domain)}}function rx(e){return e===`theme`?{from:Qb}:e===`bool`||`min`in e?e:{from:e}}function ix(e,t,n,r){let i=Jc(e.label),{domain:a}=e;if(a===`bool`)return{kind:`inline`,template:`{{ action "${r}" "☑ ${i}" "☐ ${i}" }}`,actions:{[r]:{set:t,cycle:[...To]}}};if(`from`in a)return{kind:`ring`,template:`{{ carousel "${r}" }}`,actions:{[r]:{set:t,from:a.from}}};let o=e=>({set:t,min:a.min,max:a.max,by:e});return{kind:`inline`,template:`{{ action "${r}.down" "◀" }} {{ "${i}" }} {{ .${n} }} {{ action "${r}.up" "▶" }}`,actions:{[`${r}.down`]:o(-a.step),[`${r}.up`]:o(a.step)}}}const ax=/^segments\.([^.]+)\.palette$/,ox=/^presets\.(.+)\.root$/,sx=/^presets\.(.+)\.globals\.([^.]+)$/;function cx(e){return`presets.${e}.root`}function lx(e,t){return`presets.${e}.globals.${t}`}function ux(e){if(kl(e))return{scope:`globals`,field:e};let t=ax.exec(e);if(t)return{scope:`segment-palette`,segment:t[1]};let n=sx.exec(e);if(n&&Sl(n[2]))return{scope:`preset-globals`,preset:n[1],field:n[2]};let r=ox.exec(e);return r?{scope:`preset-root`,preset:r[1]}:null}function dx(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 fx=`open`;function px(e,t,n,r){let i={variable:e,key:e,member:fx};return r.variables[e]=tl(e,Wc),r.actions[e]=nl(e,fx),r.segments[e]={template:Qc(e,`(?)`,`✕`),...mx(n)},Yc(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 mx(e){let[t,...n]=e;return t===void 0?{}:{when:Xc(t,...n)}}const hx=`none`;var gx=class extends Error{constructor(e,t,n){super(`Invalid ${t} color ${JSON.stringify(e)}: ${n}`),this.name=`ColorSpecError`}};function _x(e,t,n,r,i){let{palette:a,tint:o}=e,s=vx(n,i),c=s!==hx,l=c?s===void 0?o:yx(a,s,`bg`):yx(a,`background`,`bg`);e.bg=l;let u=vx(r,i),d=u===void 0?c?ja(a,l,t):void 0:yx(a,u,`fg`);return new z({...c&&{bgcolor:yn.fromRgba(l)},...d!==void 0&&{color:yn.fromRgba(d)}})}function vx(e,t){if(e!==void 0)return e.evaluate(t).map(e=>e.plain).join(``)}function yx(e,t,n){try{return er(e,t)}catch(e){throw e instanceof Zn?new gx(t,n,e.message):e}}const bx={help:[`-h`,`--help`],version:[`-V`,`--version`]},xx=[`✚ inserts`,`✖ removes`,`⚙️ configures`,`↺ resets layout`],Sx=`
91
91
  cc-candybar - Beautiful powerline statusline for Claude Code
92
92
 
93
93
  Usage: cc-candybar [options]
94
94
 
95
95
  Standalone Commands:
96
- ${gx.help.join(`, `).padEnd(25)}Show this help
97
- ${gx.version.join(`, `).padEnd(25)}Print the version of this runtime (cc-candybar <version>)
96
+ ${bx.help.join(`, `).padEnd(25)}Show this help
97
+ ${bx.version.join(`, `).padEnd(25)}Print the version of this runtime (cc-candybar <version>)
98
98
 
99
99
  Debugging:
100
100
  CC_CANDYBAR_DEBUG=1 Enable debug logging for troubleshooting
@@ -107,7 +107,7 @@ Configuration:
107
107
 
108
108
  Every bar carries a settings menu, whatever your config says — no config
109
109
  needed, and writing your own \`root\` cannot delete it. Click
110
- it on the bar (${Uc} by default; globals.menuGlyph changes it) for
110
+ it on the bar (${Gc} by default; globals.menuGlyph changes it) for
111
111
  preset switching and five tabs: ⚡ session (quick actions and commands),
112
112
  🎨 look (theme/style/variation/endcaps), 📐 layout (new preset, edit mode,
113
113
  wrap, padding), ⚙ config (update notice) and
@@ -117,7 +117,7 @@ Configuration:
117
117
  failed row's [fix] to repair it (the same checks \`cc-candybar doctor\` runs).
118
118
 
119
119
  Anywhere the bar shows (?), clicking it reveals these same instructions
120
- in place. In edit mode: ${_x.join(`, `)}.
120
+ in place. In edit mode: ${xx.join(`, `)}.
121
121
 
122
122
  Subcommands:
123
123
  install One-shot setup: stages the runtime (native render
@@ -155,26 +155,26 @@ Config tooling:
155
155
  config [--json] The effective merged config. (All three query the
156
156
  running daemon; none spawn one.)
157
157
 
158
- `,yx=`readableOn (mix (color "foreground") (bgOf) 60) (bgOf) 3`,bx={socket:`TMUX`,pane:`TMUX_PANE`,truecolor:`CLAUDE_CODE_TMUX_TRUECOLOR`};function xx(e){let t=e[bx.socket]??``,n=e[bx.pane]??``;if(t===``||n===``)return null;let r=e[bx.truecolor]??``;return{socket:t.split(`,`)[0],pane:n,truecolor:r===``?null:r}}const Sx=bx.truecolor,Cx=[{name:`tmuxTruecolor`,label:`tmux truecolor`,probe:({tmux:e,claudeSettings: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.env[Sx];return typeof n==`string`&&n!==``?{ok:!1,reason:`${Sx} is set in ${t.path} — restart Claude Code to apply`}:{ok:!1,reason:`Claude Code renders the bar in 256 colours inside tmux`,fix:{kind:`claude-settings-env`,name:Sx,value:`1`}}}}}}];function wx(e){return Cx.map(t=>({check:t,verdict:t.probe(e)}))}function Tx(e){return Cx.find(t=>t.name===e)}const Ex=`${K}doctor.`;function Dx(e){let t=`${Ex}${e}.`;return{verdict:`${t}verdict`,reason:`${t}reason`,fixable:`${t}fixable`}}function Ox(e){return e.flatMap(({check:e,verdict:t})=>{let n=Dx(e.name);return t.ok?[{key:n.verdict,value:`ok`},{key:n.reason,value:``},{key:n.fixable,value:So}]:[{key:n.verdict,value:`failed`},{key:n.reason,value:t.reason},{key:n.fixable,value:t.fix===void 0?So:xo}]})}const kx={copySession:{copy:`{{ .session.id }}`},copyResume:{copy:`{{ .resume_command }}`},openProject:{open:`{{ .project_dir }}`},openTranscript:{open:`{{ .transcript_path }}`},openConfig:{open:`{{ .config_path }}`}};function Ax(e){let t=t=>`${e}${t}`;return{template:`{{ action "${t(`copySession`)}" "⎘ id" }}{{ if ne .resume_command "" }} {{ action "${t(`copyResume`)}" "⎘ resume" }}{{ end }} {{ action "${t(`openProject`)}" "↗ proj" }} {{ action "${t(`openTranscript`)}" "↗ log" }}{{ if ne .git.repoUrl "" }} {{ link .git.repoUrl "↗ repo" }}{{ end }}{{ if ne .config_path "" }} {{ action "${t(`openConfig`)}" "↗ config" }}{{ end }}`,actions:Object.fromEntries(Object.entries(kx).map(([t,n])=>[`${e}${t}`,n]))}}const jx=`armed`,Mx=`disarmed`,Nx=`.armed`,Px=e=>e.endsWith(Nx);function Fx(e,t,n){let r=`${e}${Nx}`,i=`${e}.arm`,a=`${e}.disarm`,o=`(eq .${e} "${jx}")`;return{template:`{{ if ${o} }}{{ action "${e}" "${t.confirm}" }} {{ action "${a}" "✕" }}{{ else }}{{ action "${i}" "${t.arm}" }}{{ end }}`,actions:{[i]:{set:r,to:jx},[a]:{set:r,to:Mx},[e]:{do:[a,...n]}},armed:o,variables:{[e]:{kind:`state`,key:r,default:Mx}},disarm:a}}const Ix=RegExp(`^/[^\\s\\x00-\\x1f\\x7f-\\x9f/][^\\x00-\\x1f\\x7f-\\x9f]*$`);function Lx(e){return typeof e==`string`&&Ix.test(e)?{kind:`line`,line:e}:{kind:`refused`,reason:`a slash command is "/" then its name, e.g. "/compact" or "/model opus", on one line with no control characters, got ${JSON.stringify(e)}`}}function Rx(e){let t=Lx(e);if(t.kind===`refused`)throw Error(t.reason);return t.line}const zx=[`/compact`,`/model`],Bx=`/clear`;function Vx(e){let t=t=>`${e}${t.slice(1)}`,n=`${e}clear.slash`,r=Fx(`${e}clear`,{arm:Bx,confirm:`${Bx} ✓ confirm`},[n]);return{template:zx.map(e=>`{{ action "${t(e)}" "${e}" }} `).join(``)+r.template,actions:{...Object.fromEntries(zx.map(e=>[t(e),{slash:Rx(e)}])),...r.actions,[n]:{slash:Rx(Bx)}},variables:r.variables,disarm:r.disarm}}const Hx=`${K}menu`,Ux=`open`,Wx=`${K}edit`,Gx=`${K}toolbar`,Kx=Ax(K),qx=`${K}commands`,Jx=Vx(`${qx}.`),Yx=`${K}tab`,Xx=[{member:`session`,label:`⚡ session`},{member:`look`,label:`🎨 look`},{member:`layout`,label:`📐 layout`},{member:`config`,label:`⚙ config`},{member:`tools`,label:`🧰 tools`}],Zx=e=>`${Yx}.${e}`,Qx=e=>`${Zx(e)}.toggle`,$x=e=>({variable:Yx,key:Yx,member:e}),eS=`${K}save`,tS=`${K}unsaved`,nS=`${K}preset.save`,rS=`${K}preset.delete`,iS=`${K}resetAll`,aS=`${Hx}.toggle`,oS={variable:Hx,key:Hx,member:Ux},sS=`${K}undo`,cS=`${K}back`,lS=`${cS}.step`,uS=`${K}navigation.back`,dS=cS,fS={template:`{{ if gt .${uS} 0 }}{{ action "${cS}" "◁" }}{{ else }}{{ fg (${yx}) "◁" }}{{ end }}`},pS=`${K}redo`,mS=`${K}resettable`,hS=`${K}doctor`,gS=`${hS}.run`,_S=e=>`${hS}.fix.${e}`,vS=e=>`${hS}.${e}`,yS=`${K}pickers`,bS=[{template:`{{ themePreview }}`}],xS={template:`{{ layoutPreview }}`},SS={preset:[xS,{when:`{{ not .preset.bundled }}`,template:`{{ action "${rS}" (printf "🗑 delete %s" .${Eb.preset.effectiveVar}) }}`}],theme:bS,style:bS,variation:[xS]},CS=e=>`${K}${e}`,wS=e=>`${K}apply.${e}`,TS=e=>`${K}reset.${e}`,ES=e=>`${K}carousel.${e}`,DS=(e,t)=>`${ES(e)}.${t}`,OS=Object.keys(Eb).map(e=>{let t=Eb[e],n=ul(t.configKey);if(n===`text`)throw Error(`settings menu: globals.${t.configKey} is free text, which no control can change — list it in UNCONTROLLED_GLOBALS instead of SETTINGS`);let r=ex({label:t.label,domain:n},t.sessionKey,t.effectiveVar,wS(e));return{...t,name:e,control:r,beneath:SS[e]??[]}}),kS={preset:`door`,theme:`look`,style:`look`,variation:`look`,endcaps:`look`,autoWrap:`layout`,padding:`layout`,updateNotice:`config`},AS=e=>OS.filter(t=>kS[t.name]===e).map(VS);new Set(OS.flatMap(e=>[e.sessionKey,e.configKey]));const jS=Fx(iS,{arm:`⟲`,confirm:`⟲ reset all?`},OS.map(e=>TS(e.name))),MS=(e,t,n)=>({count:e,path:t,body:n,shown:`(gt .${e} 0)`}),NS=[MS(tS,`unsaved`,`{{ action "${eS}" (printf "💾 save %d" .${tS}) }}`),MS(`${K}history.undo`,`history.undo`,`{{ action "${sS}" "↶" }}`),MS(`${K}history.redo`,`history.redo`,`{{ action "${pS}" "↷" }}`),{count:mS,path:`resettable`,body:jS.template,shown:`(or (gt .${mS} 0) ${jS.armed})`}],PS={when:`{{ or ${NS.map(e=>e.shown).join(` `)} }}`,template:`{{ $sep := "" }}`+NS.map(e=>`{{ if ${e.shown} }}{{ $sep }}${e.body}{{ $sep = " " }}{{ end }}`).join(``)},FS=[{step:jS,place:`door`},{step:Jx,place:`session`}],IS=e=>e.map(e=>e.step.disarm),LS=IS(FS),RS=IS(FS.filter(e=>e.place!==`door`)),zS=m_(yS),BS=e=>({variable:zS,key:zS,member:f_(wS(e))});function VS(e){let t=CS(e.name);return e.control.kind===`inline`?{kind:`segment`,name:t}:qc(t,BS(e.name),{kind:`container`,direction:`vertical`,children:[{kind:`segment`,name:ES(e.name)},...e.beneath.map((t,n)=>({kind:`segment`,name:DS(e.name,n)}))]},`drop`)}function HS(e){return e===Hx}function US(e){let t={kind:`segment`,name:Hx};if(e.kind===`container`&&e.direction===`vertical`){let[n,...r]=e.children;return e.when===void 0&&n!==void 0?{...e,children:[US(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 WS(e){return GS(e)>0?e:US(e)}function GS(e){let t=0;for(let n of js(e))n.kind===`segment`&&HS(n.name)&&(t+=1);return t}function KS(e,t=!1){let n=t||e.when!==void 0;return e.kind===`segment`?n&&HS(e.name)||e.opens!==void 0&&KS(e.opens.body,!0):e.children.some(e=>KS(e,n))}const qS={session:{direction:`vertical`,segments:[Gx,qx]},look:{direction:`horizontal`,segments:[]},layout:{direction:`horizontal`,segments:[nS,Wx]},config:{direction:`horizontal`,segments:[]},tools:{direction:`vertical`,segments:[hS,...Cx.map(e=>vS(e.name))]}},JS=e=>({kind:`container`,direction:qS[e].direction,children:[...qS[e].segments.map(e=>({kind:`segment`,name:e})),...AS(e)]});function YS(e){return e.kind===`segment`?HS(e.name)?qc(e.name,oS,ZS,`above`):e:$S(e)}function XS(){return{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:dS},...AS(`door`),{kind:`segment`,name:eS}]},{kind:`container`,direction:`horizontal`,children:Xx.map(({member:e})=>qc(Zx(e),$x(e),JS(e),`drop`))}]}}const ZS=XS();function QS(e){let t=new Map;for(let e of js(ZS))e.kind===`segment`&&e.opens!==void 0&&t.set(e.opens.ref.key,e.opens.ref.variable);return[...t].map(([t,n])=>{let r=e.variables[n];if(r?.kind!==`state`||r.default===void 0)throw Error(`settings menu: the door folds "${t}", but "${n}" is not a state variable the menu declares with a default`);let i=`${Hx}.fold.${hu(t)}`;return e.actions[i]={set:t,to:r.default},i})}function $S(e){return{...e,children:e.children.map(e=>YS(e))}}function eC(e){let t={variables:{[Hx]:Qc(Hx,Hc)},actions:{[aS]:$c(Hx,Ux),[gS]:{doctor:`run`},[Wx]:{do:[...G_]},...Kx.actions,...Jx.actions,[eS]:{save:!0},[sS]:{undo:!0},[lS]:{back:!0},[cS]:{do:[lS,...LS]},[pS]:{redo:!0},[nS]:{preset:`save`},[rS]:{preset:`delete`,name:`{{ .${Eb.preset.effectiveVar} }}`}},segments:{[Hx]:{template:`{{ $door := ${Zc(Hx,e,`✖`)} }}{{ if ${Yc(oS)} }}{{ fg (color "error") $door }}{{ else }}{{ $door }}{{ end }}`},[Gx]:{template:Kx.template},[qx]:{template:Jx.template},[dS]:fS,[eS]:PS,[nS]:{template:`{{ action "${nS}" "+ preset" }}`},[hS]:{template:`{{ action "${gS}" "🩺 doctor" }}`},[Wx]:{template:`{{ action "${Wx}" "✎ arrange" "✎ done" }}`}}};t.variables[uS]={kind:`input`,path:`navigation.back`,type:`number`,default:0};for(let e of NS)t.variables[e.count]={kind:`input`,path:e.path,type:`number`,default:0};t.variables[Yx]=Qc(Yx,`session`);for(let{member:e,label:n}of Xx)t.actions[Qx(e)]=$c(Yx,e),t.actions[Zx(e)]={do:[Qx(e),...RS]},t.segments[Zx(e)]={template:Xc(Zx(e),n,`▾ ${n}`)};return Object.assign(t.variables,Jx.variables,jS.variables),nC(t),tC(t),t.actions[Hx]={do:[aS,...LS,...QS(t)]},t}function tC(e){for(let t of Cx){let n=Dx(t.name),r=_S(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[vS(t.name)]={when:`{{ ne .${n.verdict} "" }}`,template:`{{ if eq .${n.verdict} "ok" }}✓ ${t.label}{{ else }}✗ ${t.label} — {{ .${n.reason} }}{{ if eq .${n.fixable} "${xo}" }} {{ action "${r}" "[fix]" }}{{ end }}{{ end }}`}}}function nC(e){for(let t of OS){Object.assign(e.actions,t.control.actions);let n=TS(t.name);e.actions[n]={reset:t.configKey};let r=`{{ action "${n}" "↺" }}`;if(t.control.kind===`inline`){e.segments[CS(t.name)]={template:`${t.control.template} ${r}`};continue}let i=BS(t.name),a=h_(i.key,i.member);e.variables[i.key]=Qc(i.key,Hc),e.actions[a]=$c(i.key,i.member),e.segments[CS(t.name)]={template:`${t.label} {{ .${t.effectiveVar} }} ${Xc(a,`▸`,`▾`)} `+r},e.segments[ES(t.name)]={template:t.control.template},t.beneath.forEach((n,r)=>{e.segments[DS(t.name,r)]=n})}Object.assign(e.actions,jS.actions)}function rC(e){let{variables:t,actions:n}=ev();Object.assign(e.variables,t),Object.assign(e.actions,n)}function iC(e){let t=eC(e.globals.menuGlyph??`🍫`);rC(t);let n={...e.presets},r=[];for(let t of C_(e.presets)){let{node:i}=E_(e,t),a=YS(WS(i));r.push(a),n[t]={...T_(e.presets,t),root:a}}let i=Pb(t,r,e);return{...e,variables:{...i,...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:n}}const aC=`${vu}live`,oC=[`☐ live`,`☑ live`],sC=`${vu}done`,cC=`${vu}cancel`,lC=`${vu}rewind`,uC=`${vu}changes`,dC=`(gt .${uC} 0)`,fC=`(or ${dC} (gt .${tS} 0))`,pC={variable:aC,key:aC,member:`open`};function mC(e){return`${vu}configuring.p${e}`}function hC(e){return`and ${Yc(Y_)} (not ${Yc(pC)}) (ne .${mC(e)} "true")`}function gC(e){return{kind:`template`,template:`{{ or ${e.map(e=>`(eq .${H_} "${Kc(e)}")`).join(` `)} false }}`}}function _C(e,t,n){return`{{ if ${hC(e)} }}${t}{{ else }}${n}{{ end }}`}const vC=`{{ and ${Yc(Y_)} .preset.customized }}`,yC=bu,bC=`${vu}addable`;function xC(e){return new Map([[bC,{members:Object.keys(e.segments).filter(e=>!yC(e)),library:{groups:pu.map(e=>({id:e,label:mu[e]})),entry:t=>{let n=e.segments[t];return{group:n.group??`other`,...n.description!==void 0&&{description:n.description}}}}}]])}function SC(e,t,n){return n.segments[e]={template:t,when:X_,bg:dx},{kind:`segment`,name:e}}function CC(e,t,n){let r=`${vu}${e.presetIdent}.remove.${t}`;return e.artifacts.actions[r]={persist:e.rootKey,removeSegment:n},`{{ fg (${`readableOn (color "error") (bgOf) ${Oa}`}) (action "${r}" "✖") }}`}function wC(e){return`{{ if ${Yc(Y_)} }}${e}{{ end }}`}function TC(e,t){return e.reduce((e,t)=>`{{ if and ${Yc(Y_)} ${Yc(t)} }}true{{ else }}${e}{{ end }}`,t)}function EC(e){return e.flatMap(e=>[...js(e)].flatMap(e=>e.kind===`segment`&&e.opens?.ref.key===`edit.configure`?[e.opens.ref]:[]))}function DC(e,t,n){return`${q_}${e}.${t}.${n}`}function OC(e,t,n,r){let i=Ds(n),a=`${vu}${e.presetIdent}`,o=J_(e.presetIdent,i);e.configured.push(o);let s=`${a}.configure.${t}`;e.artifacts.actions[s]={set:H_,to:o};let c={},l=Object.entries(r).map(([r,o])=>{let s=DC(e.presetIdent,i,r),l=`${q_}p${e.presetIdent}.d${t}.${r}`;e.artifacts.variables[l]={kind:`state`,key:s,default:Ks(n.settings?.[r]??o.default)},c[r]={id:i,key:s,variable:l};let u=`${a}.setting.${t}.${r}`,d=ex(Qb(o),s,l,u);return Object.assign(e.artifacts.actions,d.actions),e.artifacts.segments[u]={template:d.kind===`ring`?`{{ "${Kc(o.label)}" }} ${d.template}`:d.template},{kind:`segment`,name:u}});return{term:`{{ action "${s}" "⚙️" }}`,ref:{variable:H_,key:H_,member:o},body:{kind:`container`,direction:`vertical`,children:l},drafts:c}}const kC=`${vu}label:`;function AC(e){if(e.startsWith(kC)){let t=e.slice(kC.length);return t.slice(t.indexOf(`:`)+1)}return e.startsWith(`edit.`)?void 0:e}function jC(e,t,n,r){let{artifacts:i}=n,a=Ds(e),o=`${kC}${a}:${e.name}`;i.segments[o]={template:`{{ "${Kc(a)}" }}`,...t.palette!==void 0&&{palette:t.palette}};let s=e.settings?.[Vs];return{...qc(o,r.ref,r.body,`drop`,TC([r.ref],`{{ ${hC(n.presetIdent)} }}`)),...s!==void 0&&{settings:{theme:s}},drafts:{[Vs]:r.drafts[Vs]}}}function MC(e,t,n,r){let{presetIdent:i,artifacts:a}=e,o=`${vu}${i}.insert.${t}`,s=`${vu}${i}.insertSeg.${t}`;a.actions[o]={persist:e.rootKey,insertSegmentFrom:bC,anchor:n,relation:r};let c=f_(o),l=p_(s,o,void 0),u=g_(l),d=h_(l,c);return a.variables[l]=Qc(l,Hc),a.variables[u]={kind:`state`,key:u,default:`0`},a.actions[d]=$c(l,c),a.actions[u]={set:u,int:!0},{host:s,template:`{{ $m := menu "${o}" "✚" "✕" }}{{ if ${Yc({variable:l,key:l,member:c})} }}{{ $m }}{{ else }}{{ fg (${`readableOn (color "success") (bgOf) ${Oa}`}) $m }}{{ end }}`}}function NC(e,t){let n=[],r=e.children.findIndex(e=>e.kind===`segment`&&!yC(e.name)),i=e=>NC(e,t);for(let[a,o]of e.children.entries()){if(o.kind===`container`){n.push(i(o));continue}let s=As(o,i);if(yC(o.name)){n.push(s);continue}let c=Ds(o),l=a===r?[MC(t,String(t.posCounter.n++),c,`before`)]:[],u=String(t.posCounter.n++),d=MC(t,u,c,`after`),f=CC(t,u,c),p=t.segments[o.name],m=OC(t,u,o,Hs(p)),h=wC(f),g=wC(m.term),_={kind:`container`,direction:`horizontal`,children:[...l.map(e=>SC(e.host,e.template,t.artifacts)),{...jC(o,p,t,m),lead:h,trail:g},{...s,when:_C(t.presetIdent,`false`,o.when??`true`),lead:h,trail:g,drafts:m.drafts},SC(d.host,d.template,t.artifacts)]};n.push(e.direction===`vertical`?{kind:`container`,direction:`horizontal`,children:[_]}:_)}return{...e,children:n,...e.when!==void 0&&{when:TC(EC(n),_C(t.presetIdent,`true`,e.when))}}}function PC(e,t,n,r,i,a,o){let s=`${vu}${t}.resetLayout`,c=`${vu}${t}.customized`;return r.actions[s]={reset:n},r.segments[c]={template:`{{ action "${s}" "↺ reset layout" }}`,when:vC},{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[...i,{kind:`segment`,name:c},a]},FC(e,o)]}}function FC(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),FC(n,t)]}:{...e,children:[...e.children,t]}}function IC(e,t,n,r,i,a){let{node:o}=E_(e,t),s={presetIdent:hu(t),rootKey:ix(t),segments:e.segments,artifacts:n,posCounter:{n:0},configured:[]},c=NC(o,s);return n.variables[mC(s.presetIdent)]=gC(s.configured),PC(c,s.presetIdent,s.rootKey,n,r,i,a)}function LC(e){let t={variables:{},actions:{},segments:{}},n=lx(`${vu}help`,_x,[Y_],t);t.variables[aC]=Qc(aC,Hc),t.actions[aC]=$c(aC,pC.member),t.segments[aC]={template:Xc(aC,...oC),when:X_};let r={kind:`segment`,name:aC},i=n;t.variables[uC]={kind:`input`,path:`history.sinceEdit`,type:`number`,default:0},t.actions[sC]={do:[eS,...G_]},t.segments[sC]={template:`{{ if ${fC} }}{{ action "${sC}" "✓ save" }}{{ else }}{{ action "${sC}" "✓ done" }}{{ end }}`,when:X_},t.actions[lC]={rewind:!0},t.actions[cC]={do:[lC,...G_]},t.segments[cC]={template:`{{ action "${cC}" "↩ cancel" }}`,when:`{{ and ${Yc(Y_)} ${dC} }}`};let a=[{kind:`segment`,name:sC},{kind:`segment`,name:cC}],o={...e.presets},s=[];for(let n of C_(e.presets)){let c=IC(e,n,t,a,r,i);s.push(c),o[n]={...T_(e.presets,n),root:c}}let c=Pb(t,s,e);return{...e,variables:{...c,...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:o}}const RC=[`set`,`persist`,`copy`,`open`,`reset`,`undo`,`redo`,`back`,`rewind`,`save`,`preset`,`doctor`,`ceiling`,`slash`,`do`];function zC(e){return e.ceiling===`set`?[`set`,e.to]:[`clear`]}function BC(e){return`from`in e||`int`in e||`insertSegmentFrom`in e}function VC(e,t){if(t===void 0)return{};if(!nc(t))return Z(e,`actions`,`actions must be an object, got ${W(t)}`),{};let n=Object.create(null);for(let[r,i]of Object.entries(t)){let t=HC(e,`actions.${r}`,i);t!==null&&(n[r]=t)}return n}function Z(e,t,n){e.issues.push({path:t,message:n,line:U(e.source,t.split(`.`))})}function HC(e,t,n){if(!nc(n))return Z(e,t,`${t} must be an action object, got ${W(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=RC.filter(e=>e in n);return r.length===1?UC[r[0]](e,t,n):(Z(e,t,`action must declare exactly one of: ${RC.join(`, `)}${r.length>1?` (found: ${r.join(`, `)})`:``}`),null)}const UC={set:(e,t,n)=>xw(e,t,n,`set`,_w),persist:(e,t,n)=>xw(e,t,n,`persist`,vw),copy:WC(`copy`),open:WC(`open`),reset:GC,undo:qC(`undo`),redo:qC(`redo`),back:qC(`back`),rewind:qC(`rewind`),save:qC(`save`),preset:JC,doctor:YC,ceiling:XC,slash:ZC,do:QC};function WC(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=Zs(t,n,r,e);return i===null?null:{[e]:i}}}function GC(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=$C(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 KC={undo:`it steps the session's settings history`,redo:`it steps the session's settings history`,back:`it steps the session's navigation history`,rewind:`it steps the session's settings history back to where edit mode opened`,save:`it saves the session's unsaved settings`};function qC(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 — ${KC[e]}), got ${G(r[e])}`),null)}}function JC(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=Zs(e,t,n,`name`);return a===null?null:{preset:`delete`,name:a}}function YC(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`||Tx(a)===void 0?(Z(e,`${t}.check`,`doctor fix must name a check (have: ${Cx.map(e=>e.name).join(`, `)}), got ${G(a)}`),null):{doctor:`fix`,check:a}}function XC(e,t,n){let r=n.ceiling,i=r===`clear`?[`ceiling`]:[`ceiling`,`to`];for(let r of Object.keys(n))i.includes(r)||Z(e,`${t}.${r}`,`Unknown key "${r}" on a ceiling action. Expected only: ${i.join(`, `)}`);if(r===`clear`)return{ceiling:`clear`};if(r!==`set`)return Z(e,`${t}.ceiling`,`ceiling must be "set" or "clear", got ${G(r)}`),null;let a=n.to;return typeof a!=`string`||a.trim()===``?(Z(e,`${t}.to`,`ceiling set needs \`to\`: a memento ceiling value such as "+100_000", "400000" or "off", got ${G(a)}`),null):{ceiling:`set`,to:a}}function ZC(e,t,n){for(let r of Object.keys(n))r!==`slash`&&Z(e,`${t}.${r}`,`Unknown key "${r}" on a slash action. Expected only: slash`);let r=Lx(n.slash);return r.kind===`refused`?(Z(e,`${t}.slash`,r.reason),null):{slash:r.line}}function QC(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 $C(e,t,n,r,i,a){let o=Zs(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 ew={set:`the SessionState key to write`,persist:`the config globals field to write`};function tw(e,t,n,r){let i=ew[r],a=$C(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 nw(e){return e===`set`?`set-state`:`set-config`}const rw={to:Sw(`set`)},iw={to:Sw(`persist`)},aw={from:Cw(`set`)},ow={from:Cw(`persist`)},sw={min:Ow(),max:Ow(),by:Ow()},cw={int:Tw()},lw={cycle:ww(`set`)},uw={cycle:ww(`persist`)},dw={removeSegment:Ew(`removeSegment`)},fw={insertSegment:Ew(`insertSegment`),anchor:Ew(`anchor`),relation:Dw()},pw={insertSegmentFrom:Cw(`persist`),anchor:Ew(`anchor`),relation:Dw()},mw={ok:e=>e.min<e.max,issue:e=>({field:`min`,message:`min (${e.min}) must be less than max (${e.max})`})},hw={ok:e=>e.by!==0,issue:()=>({field:`by`,message:`by must be a non-zero integer (the per-click increment; negative steps down)`})};function gw(e,t,n=[],r){let i=Object.keys(t),a=r??i,o=[e],s=(e,n,r)=>ic(e,t,n,r),c=Sc(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?fc(s,...n):s}}const _w=[gw(`set`,rw),gw(`set`,aw),gw(`set`,sw,[mw,hw]),gw(`set`,cw),gw(`set`,lw)],vw=[gw(`persist`,iw),gw(`persist`,ow),gw(`persist`,sw,[mw,hw]),gw(`persist`,uw),gw(`persist`,dw),gw(`persist`,fw,[],[`insertSegment`]),gw(`persist`,pw,[],[`insertSegmentFrom`])];function yw(e){let t=[`"to" (a literal value)`,`"from" (an option domain — a registered domain name like "themes"/"endcaps"/"styles", 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 bw(e){let t=yw(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 xw(e,t,n,r,i){let a=tw(e,t,n,r),o=i.filter(e=>e.detect.some(e=>e in n));if(o.length!==1)return Z(e,t,`${bw(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 Sw(e){let t=nw(e);return{required:!0,json:{type:`string`},parse:(n,r,i,a)=>$C(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 Cw(e){let t=nw(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 ww(e){let t=nw(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 ${W(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 Tw(){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 Ew(e){return{required:!0,json:{type:`string`},parse:(t,n,r,i)=>{let a=Zs(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 Dw(){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 Ow(){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}}}function kw(e,t,n){return`${e}: "${t}" is an endcaps shape, not a style — endcaps were renamed from "style" to "endcaps"; write ${n}: "${t}"`}const Aw={noun:`style key`,fields:{hueShift:gc(),chromaScale:gc({min:0}),lightnessScale:gc(),lightnessShift:gc()}};function jw(e,t){if(!nc(t))return e.issues.push({path:`styles`,message:`styles must be an object mapping style names to adaptation objects, got ${W(t)}`,line:U(e.source,[`styles`])}),{};let n={};for(let[r,i]of Object.entries(t)){if(r===``||r.includes(`/`)){e.issues.push({path:`styles.${r}`,message:`style name ${JSON.stringify(r)} must be non-empty and slash-free — a style picker writes the name on the set-state wire, which rejects empty values and splits on "/"`,line:U(e.source,[`styles`,r])});continue}if(fo(r)){e.issues.push({path:`styles.${r}`,message:kw(`styles.${r}`,r,`globals.endcaps`),line:U(e.source,[`styles`,r])});continue}let t=rc(e,Aw,`styles.${r}`,i);t!==null&&(n[r]={...Bn,...t})}return n}const Mw={noun:`preset key`,fields:{root:{required:!1,json:{$ref:`#/definitions/RootFragment`},parse:(e,t,n,r)=>r[n]===void 0?void 0:cd(e,`${t}.${n}`,r[n])},globals:{required:!1,json:Cl(),parse:(e,t,n,r)=>r[n]===void 0?void 0:Sl(e,`${t}.${n}`,r[n])}}};function Nw(e,t){if(!nc(t))return e.issues.push({path:`presets`,message:`presets must be an object mapping preset names to config fragments, got ${W(t)}`,line:U(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:U(e.source,[`presets`,r])});continue}let t=rc(e,Mw,`presets.${r}`,i);t!==null&&(n[r]=t)}return n}function Pw(e,t){if(t===void 0)return{};if(!nc(t))return e.issues.push({path:`helpers`,message:`helpers must be an object, got ${W(t)}`,line:U(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:U(e.source,[`helpers`,r])});continue}n[r]=i}return n}const Fw=new Map([[`session.budget.amount`,{segment:`session`,setting:`budget`}],[`session.budget.warningThreshold`,{segment:`session`,setting:`warnAt`}],[`today.budget.amount`,{segment:`today`,setting:`budget`}],[`today.budget.warningThreshold`,{segment:`today`,setting:`warnAt`}],[`block.budget.heatThreshold`,{segment:`block`,setting:`warnAt`}],[`block.budget.warningThreshold`,{segment:`block`,setting:`errorAt`}],[`weekly.budget.heatThreshold`,{segment:`weekly`,setting:`warnAt`}],[`weekly.budget.warningThreshold`,{segment:`weekly`,setting:`errorAt`}],[`burn.eta.errorMinutes`,{segment:`burnrate`,setting:`errorWithin`}],[`burn.eta.warnMinutes`,{segment:`burnrate`,setting:`warnWithin`}]]);function Iw(e){return`it became the "${e.setting}" setting of each "${e.segment}" placement — set it on the placement where a row places "${e.segment}" ({ seg: "${e.segment}", settings: { ${e.setting}: <value> } }), or redeclare segments.${e.segment}.settings.${e.setting} with the default every placement should start from`}function Lw(e){let t=Fw.get(e);return t===void 0?void 0:`variables.${e} is no longer read: ${Iw(t)}`}function Rw(e){let t=Fw.get(e);return t===void 0?``:` — ".${e}" is no longer a variable: ${Iw(t)}; a "${t.segment}" template reads it as ".settings.${t.setting}"`}function zw(e,t){let n=new Map;for(let e of Object.keys(t)){let t=hu(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:U(e.source,[`presets`])})}function Bw(e,t,n){let r=[[[`globals`],t.globals.style],[[`editGlobals`],t.editGlobals.style],...Object.entries(t.presets).map(([e,t])=>[[`presets`,e,`globals`],t.globals?.style])];for(let[n,i]of r){if(i===void 0||ro(i)||Object.prototype.hasOwnProperty.call(t.styles,i))continue;let r=`${n.join(`.`)}.style`;e.issues.push({path:r,message:fo(i)?kw(r,i,`${n.join(`.`)}.endcaps`):`${r} "${i}" does not match any declared style (have: ${Object.keys(t.styles).join(`, `)})`,line:U(e.source,[...n,`style`])})}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:U(e.source,[`globals`,`preset`])}),zw(e,t.presets);let i=Yb(t);for(let[n,r]of Object.entries(t.actions))`set`in r&&kb.has(r.set)&&e.issues.push({path:`actions.${n}.set`,message:`actions.${n} sets "${r.set}", which has no session pick — globals.${r.set} is set in the config file only, so a click would change nothing; write it with { persist: "${r.set}", … } instead`,line:U(e.source,[`actions`,n,`set`])}),!(!(`set`in r)||!(`from`in r)||typeof r.from!=`string`)&&(Xb(i).includes(r.from)||e.issues.push({path:`actions.${n}.from`,message:`actions.${n} from: references unknown option domain "${r.from}" (have: ${Xb(i).join(`, `)})`,line:U(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&&BC(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:U(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=ox(i);if(o===null){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" is not a config globals field (have: ${Dl().join(`, `)}), a "segments.<name>.palette" target, a "presets.<name>.globals.<field>" target, or a "presets.<name>.root" target`,line:U(e.source,[`actions`,n,a])});continue}let s=Vw.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:U(e.source,[`actions`,n,a])});continue}if(o.scope===`preset-root`){Hw(e,t,n,a,i,o.preset,r);continue}if(o.scope===`preset-globals`&&!C_(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: ${C_(t.presets).join(`, `)})`,line:U(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(`, `)})${wu(o.segment)}`,line:U(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:U(e.source,[`actions`,n,a])})}}let a=yv(t);for(let t of a.names)t!==`settings`&&!t.startsWith(Uw)||e.issues.push({path:`variables`,message:`variable "${t}" is named under "settings", which a segment's templates read as its placement's own settings (.settings.<name>) — rename it`,line:U(e.source,[`variables`,t])});let o=(t,n,r)=>{GS(t)>1&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${Hx}" ${GS(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}),KS(t)&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${Hx}" 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 js(t)){if(e.kind!==`segment`)continue;let t=Ds(e);i.set(t,[...i.get(t)??[],e])}for(let[t,a]of i){if(a.length<2)continue;let o=a[1].name,s=ks(o,new Set(i.keys()));e.issues.push({path:n,message:`${n} has ${a.length} placements with the id "${t}" — an id names one placement (its settings, its menus' open state, and edit mode all address it), so give each its own: { seg: "${o}", id: "${s}" }. A placement without an "id" takes its segment's name.`,line:r})}};function s(e,t=!1){return e.kind===`segment`?!1:t&&e.distribution!==void 0||e.children.some(n=>s(n,t||Es[e.direction]===`cell`))}let c=(n,r)=>{for(let[i,o]of Fc(n,r)){let n=U(e.source,o.split(`.`));if(i.when!==void 0&&(tT(e,`${o}.when`,i.when,a,{line:n}),eT(e,`${o}.when`,i.when,n)),i.kind===`segment`){if(HS(i.name)){(i.id!==void 0||i.settings!==void 0)&&e.issues.push({path:o,message:`${r} gives the global settings menu anchor "${Hx}" an id or settings — the anchor only marks where the menu goes, so place it as the bare name "${Hx}"`,line:n});continue}Object.prototype.hasOwnProperty.call(t.segments,i.name)||e.issues.push({path:o,message:`${r} entry "${i.name}" does not match any declared segment${wu(i.name)}`,line:n}),Zw(e,t,i,o,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`,Nc(t.root)]]);for(let e of C_(t.presets)){let{node:n,path:r}=E_(t,e);l.set(r,n)}for(let[t,n]of l)o(n,t,U(e.source,t.split(`.`)));for(let[n,r]of Object.entries(t.variables)){Qw(e,`variables.${n}`,r,a);let t=Lw(n);t!==void 0&&e.issues.push({path:`variables.${n}`,message:t,line:U(e.source,[`variables`,n])})}for(let[n,r]of Object.entries(t.segments)){if(r.vars)for(let[t,i]of Object.entries(r.vars))Qw(e,`segments.${n}.vars.${t}`,i,a,n);let i=Hs(r);Gw(e,n,i);let o=Ww(a,i);for(let a of[`template`,`bg`,`fg`,`when`]){let s=r[a];if(typeof s==`string`){tT(e,`segments.${n}.${a}`,s,o,{segCtx:n,settings:i});for(let{name:r,site:i,via:o}of _v(s,t.helpers)){if(Object.prototype.hasOwnProperty.call(t.actions,r))continue;let s=i===`options`?` (in a picker, menu or carousel)`:``;if(o!==null){nT(e,o,`Template references unknown action "${r}"${s}`);continue}e.issues.push({path:`segments.${n}.${a}`,message:`${a} references unknown action "${r}"${s}`,line:U(e.source,[`segments`,n,a])})}}}}for(let[n,r]of Object.entries(t.variables))$w(e,`variables.${n}`,r,a);for(let[n,r]of Object.entries(t.segments))if(r.vars)for(let[t,i]of Object.entries(r.vars))$w(e,`segments.${n}.vars.${t}`,i,a,n)}const Vw=[`removeSegment`,`insertSegment`,`insertSegmentFrom`];function Hw(e,t,n,r,i,a,o){let s=`actions.${n}.${r}`,c=U(e.source,[`actions`,n,r]);if(!C_(t.presets).includes(a)){e.issues.push({path:s,message:`actions.${n}: "${i}" names preset "${a}" which is not declared (have: ${C_(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(`, `)})${wu(i)}`,line:c})},p=new Set(Os(E_(t,a).node)),m=(r,i)=>{!Cu.has(i)||p.has(i)||Object.prototype.hasOwnProperty.call(t.segments,i)||e.issues.push({path:s,message:`actions.${n}: ${r} "${i}" names no placement${wu(i)}`,line:c})};`removeSegment`in o&&m(`removeSegment`,o.removeSegment),`insertSegment`in o&&f(`insertSegment`,o.insertSegment),(`insertSegment`in o||`insertSegmentFrom`in o)&&m(`anchor`,o.anchor)}const Uw=`settings.`;function Ww(e,t){return{...e,names:new Set([...e.names,...Object.keys(t).map(e=>Uw+e)])}}function Gw(e,t,n){let r=e=>`segments.${t}.settings.${e}`,i=(n,i)=>{e.issues.push({path:r(n),message:`${r(n)}: ${i}`,line:U(e.source,[`segments`,t,`settings`,n])})},a=Jw(n);for(let{setting:e,message:t}of a)i(e,t);if(!(a.length>0))for(let{setting:e,message:t}of Ws(n,qw(n)))i(e,`the defaults do not stand together: ${t}`)}function Kw(e){return Jw(e).length>0||Ws(e,qw(e)).length>0}function qw(e){return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,t.default]))}function Jw(e){let t=t=>Us(Yw(e,t))?.atLeast;return Object.keys(e).flatMap(n=>{let r=t(n);if(r===void 0)return[];if(r===n||Us(Yw(e,r))===void 0)return[{setting:n,message:`atLeast "${r}" must name another range setting of this segment (its range settings: ${Xw(e,n).join(`, `)||`none`})`}];let i=[n];for(let e=r;e!==void 0;e=t(e)){if(e===n)return i.every(e=>n<=e)?[{setting:n,message:`atLeast closes a cycle (${[...i,n].join(` ≥ `)}) — every setting on it could only ever equal the rest`}]:[];if(i.includes(e))return[];i.push(e)}return[]})}function Yw(e,t){return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0}function Xw(e,t){return Object.entries(e).filter(([e,n])=>e!==t&&Us(n)!==void 0).map(([e])=>e)}function Zw(e,t,n,r,i){let a=Object.prototype.hasOwnProperty.call(t.segments,n.name)?t.segments[n.name]:void 0;if(a===void 0)return;let o=Hs(a),s=`${r}: placement "${Ds(n)}" of segment "${n.name}"`;for(let[t,a]of Object.entries(n.settings??{})){let c=Object.prototype.hasOwnProperty.call(o,t)?o[t]:void 0,l=c===void 0?`sets "${t}", which segment "${n.name}" does not declare (it has: ${Object.keys(o).join(`, `)})`:Gs(c,a)?void 0:`sets "${t}" to ${JSON.stringify(a)}${c.domain===`theme`?Ja(a):``}, but it must be ${Js(c)}`;l!==void 0&&e.issues.push({path:r,message:`${s} ${l}`,line:i})}let c=Object.fromEntries(Object.entries(o).map(([e,t])=>[e,n.settings?.[e]??t.default]));if(!(!Object.entries(c).every(([e,t])=>Gs(o[e],t))||Kw(o)))for(let{message:t}of Ws(o,c))e.issues.push({path:r,message:`${s}: ${t}`,line:i})}function Qw(e,t,n,r,i){n.kind===`template`&&tT(e,`${t}.template`,n.template,r,{segCtx:i}),Rs(n)&&n.cache&&`key`in n.cache&&tT(e,`${t}.cache.key`,n.cache.key,r,{segCtx:i})}function $w(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:U(e.source,[...t.split(`.`),`cache`,`depends_on`])})}}function eT(e,t,n,r){try{B_.parse(n)}catch(n){e.issues.push({path:t,message:`Template parse error in ${t}: ${n.message}`,line:r})}}function tT(e,t,n,r,i){for(let[a,o]of pv(n,r.helpers)){if(vv(a,r))continue;if(a.startsWith(Uw)){let n=o===null?``:` through helper "${o}"`,r=a.slice(9),s=i?.segCtx===void 0||i.settings===void 0?`Template reads ".${a}"${n}, but only a segment's own templates have settings — call it from a segment that declares "${r}"`:`Template reads ".${a}"${n}, but segment "${i.segCtx}" has no setting "${r}" (it has: ${Object.keys(i.settings).join(`, `)}) — declare it under segments.${i.segCtx}.settings`;e.issues.push({path:t,message:s,line:i?.line??U(e.source,t.split(`.`))});continue}if(o!==null){nT(e,o,`Template references unknown variable ".${a}"${Rw(a)}`);continue}let n=i?.segCtx===void 0?void 0:`${i.segCtx}.${a}`,s=n!==void 0&&vv(n,r)?` (segment-local vars are namespaced — write ".${n}")`:Rw(a);e.issues.push({path:t,message:`Template references unknown variable ".${a}"${s}`,line:i?.line??U(e.source,t.split(`.`))})}}function nT(e,t,n){let r=`helpers.${t}`;e.issues.some(e=>e.path===r&&e.message===n)||e.issues.push({path:r,message:n,line:U(e.source,[`helpers`,t])})}function rT(e,t){let{graph:n,nodeInfo:r}=iT(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:U(e.source,o?.linePathParts??[`variables`,i])}),!0}if(t===0&&o(s))return!0}return i.set(t,2),a.pop(),!1}}function iT(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 pv(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 aT=[`json5`,`json`];function oT(e){try{return r.statSync(e,{throwIfNoEntry:!1})===void 0?`absent`:`present`}catch(t){return{path:e,error:t.message}}}function sT(e){return e===`~`||e.startsWith(`~/`)||e.startsWith(`~\\`)?m.homedir()+e.slice(1):e}function cT(e,t,n){if(n!==void 0)return[n];let r=t??process.cwd();return[...new Set([...e?aT.map(t=>c.join(e,`.cc-candybar.${t}`)):[],...aT.map(e=>c.join(r,`.cc-candybar.${e}`)),...aT.map(e=>`${lT()}.${e}`)])]}function lT(){let e=process.env.XDG_CONFIG_HOME??c.join(m.homedir(),`.config`);return c.join(e,`cc-candybar`,`config`)}function uT(e,t,n){let r=[];for(let i of cT(e,t,n)){let e=oT(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 dT(e,t,n){let r=uT(e,t,n);return r.kind===`default`?`${lT()}.${aT[0]}`:r.path}function fT(e){return pT(e).join(`
159
- `)||null}function pT(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 mT(e,t){let n=cT(e,t).filter(e=>oT(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 hT(e,t,n){return e===null?{..._T,config:Rc(_T.raw,t)}:gT(e,r.readFileSync(e,`utf-8`),t,n)}function gT(e,t,n,r){let i={source:t,...bT(e,t,r,Ru(n))};return{...i,config:Rc(i.raw,n)}}const _T={raw:{},source:``,warnings:[]};function vT({config:e,raw:t,source:n},r=`<config>`,i=new Set(Za())){let a=[],o={source:n,issues:a,allowedPalettes:i,groups:[]};if(Bw(o,e,t),rT(o,e),a.length>0)throw new bs(r,a);let s=z_(e,a);if(a.length>0)throw new bs(r,a);return LC(iC(s))}function yT(e,t,n=new Set(Za()),r=xT){return bT(e,t,n,r).raw}function bT(e,t,n,r){let i=ST(e,t),a=Cs(e,t),o=a===null?[]:[a],s=[],c={source:t,issues:s,allowedPalettes:n??new Set(Za()),groups:[]};if(!nc(i))throw new bs(e,[{path:``,message:`Config root must be an object, got ${W(i)}`}],o);let l=CT(c,i,r);if(s.length>0)throw new bs(e,s,o);return{raw:l,warnings:o}}const xT=new Set;function ST(e,t){try{return nt.default.parse(t)}catch(t){let n=t;throw new bs(e,[{path:``,message:`JSON5 syntax error: ${n.message}`,line:n.lineNumber,col:n.columnNumber}])}}function CT(e,t,n){for(let n of Object.keys(t))wT.has(n)||e.issues.push({path:n,message:`Unknown top-level key "${n}". Expected one of: ${[...wT].join(`, `)}`,line:U(e.source,[n])});let r={};return t.globals!==void 0&&(r.globals=xl(e,`globals`,t.globals)),t.variables!==void 0&&(r.variables=Vl(e,`variables`,t.variables)),t.segments!==void 0&&(r.segments=zu(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.
158
+ `,Cx=`readableOn (mix (color "foreground") (bgOf) 60) (bgOf) 3`,wx={socket:`TMUX`,pane:`TMUX_PANE`,truecolor:`CLAUDE_CODE_TMUX_TRUECOLOR`};function Tx(e){let t=e[wx.socket]??``,n=e[wx.pane]??``;if(t===``||n===``)return null;let r=e[wx.truecolor]??``;return{socket:t.split(`,`)[0],pane:n,truecolor:r===``?null:r}}const Ex=wx.truecolor,Dx=[{name:`tmuxTruecolor`,label:`tmux truecolor`,probe:({tmux:e,claudeSettings: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.env[Ex];return typeof n==`string`&&n!==``?{ok:!1,reason:`${Ex} is set in ${t.path} — restart Claude Code to apply`}:{ok:!1,reason:`Claude Code renders the bar in 256 colours inside tmux`,fix:{kind:`claude-settings-env`,name:Ex,value:`1`}}}}}}];function Ox(e){return Dx.map(t=>({check:t,verdict:t.probe(e)}))}function kx(e){return Dx.find(t=>t.name===e)}const Ax=`${K}doctor.`;function jx(e){let t=`${Ax}${e}.`;return{verdict:`${t}verdict`,reason:`${t}reason`,fixable:`${t}fixable`}}function Mx(e){return e.flatMap(({check:e,verdict:t})=>{let n=jx(e.name);return t.ok?[{key:n.verdict,value:`ok`},{key:n.reason,value:``},{key:n.fixable,value:wo}]:[{key:n.verdict,value:`failed`},{key:n.reason,value:t.reason},{key:n.fixable,value:t.fix===void 0?wo:Co}]})}const Nx={copySession:{copy:`{{ .session.id }}`},copyResume:{copy:`{{ .resume_command }}`},openProject:{open:`{{ .project_dir }}`},openTranscript:{open:`{{ .transcript_path }}`},openConfig:{open:`{{ .config_path }}`}};function Px(e){let t=t=>`${e}${t}`;return{template:`{{ action "${t(`copySession`)}" "⎘ id" }}{{ if ne .resume_command "" }} {{ action "${t(`copyResume`)}" "⎘ resume" }}{{ end }} {{ action "${t(`openProject`)}" "↗ proj" }} {{ action "${t(`openTranscript`)}" "↗ log" }}{{ if ne .git.repoUrl "" }} {{ link .git.repoUrl "↗ repo" }}{{ end }}{{ if ne .config_path "" }} {{ action "${t(`openConfig`)}" "↗ config" }}{{ end }}`,actions:Object.fromEntries(Object.entries(Nx).map(([t,n])=>[`${e}${t}`,n]))}}const Fx=`armed`,Ix=`disarmed`,Lx=`.armed`,Rx=e=>e.endsWith(Lx);function zx(e,t,n){let r=`${e}${Lx}`,i=`${e}.arm`,a=`${e}.disarm`,o=`(eq .${e} "${Fx}")`;return{template:`{{ if ${o} }}{{ action "${e}" "${t.confirm}" }} {{ action "${a}" "✕" }}{{ else }}{{ action "${i}" "${t.arm}" }}{{ end }}`,actions:{[i]:{set:r,to:Fx},[a]:{set:r,to:Ix},[e]:{do:[a,...n]}},armed:o,variables:{[e]:{kind:`state`,key:r,default:Ix}},disarm:a}}const Bx=RegExp(`^/[^\\s\\x00-\\x1f\\x7f-\\x9f/][^\\x00-\\x1f\\x7f-\\x9f]*$`);function Vx(e){return typeof e==`string`&&Bx.test(e)?{kind:`line`,line:e}:{kind:`refused`,reason:`a slash command is "/" then its name, e.g. "/compact" or "/model opus", on one line with no control characters, got ${JSON.stringify(e)}`}}function Hx(e){let t=Vx(e);if(t.kind===`refused`)throw Error(t.reason);return t.line}const Ux=[`/compact`,`/model`],Wx=`/clear`;function Gx(e){let t=t=>`${e}${t.slice(1)}`,n=`${e}clear.slash`,r=zx(`${e}clear`,{arm:Wx,confirm:`${Wx} ✓ confirm`},[n]);return{template:Ux.map(e=>`{{ action "${t(e)}" "${e}" }} `).join(``)+r.template,actions:{...Object.fromEntries(Ux.map(e=>[t(e),{slash:Hx(e)}])),...r.actions,[n]:{slash:Hx(Wx)}},variables:r.variables,disarm:r.disarm}}const Kx=`${K}menu`,qx=`open`,Jx=`${K}edit`,Yx=`${K}toolbar`,Xx=Px(K),Zx=`${K}commands`,Qx=Gx(`${Zx}.`),$x=`${K}tab`,eS=[{member:`session`,label:`⚡ session`},{member:`look`,label:`🎨 look`},{member:`layout`,label:`📐 layout`},{member:`config`,label:`⚙ config`},{member:`tools`,label:`🧰 tools`}],tS=e=>`${$x}.${e}`,nS=e=>`${tS(e)}.toggle`,rS=e=>({variable:$x,key:$x,member:e}),iS=`${K}save`,aS=`${K}preset.save`,oS=`${K}preset.delete`,sS=`${K}resetAll`,cS=`${Kx}.toggle`,lS={variable:Kx,key:Kx,member:qx},uS=`${K}undo`,dS=`${K}back`,fS=`${dS}.step`,pS=`${K}navigation.back`,mS=dS,hS={template:`{{ if gt .${pS} 0 }}{{ action "${dS}" "◁" }}{{ else }}{{ fg (${Cx}) "◁" }}{{ end }}`},gS=`${K}redo`,_S=`${K}doctor`,vS=`${_S}.run`,yS=e=>`${_S}.fix.${e}`,bS=e=>`${_S}.${e}`,xS=`${K}pickers`,SS=[{template:`{{ themePreview }}`}],CS={template:`{{ layoutPreview }}`},wS={preset:[CS,{when:`{{ not .preset.bundled }}`,template:`{{ action "${oS}" (printf "🗑 delete %s" .${kb.preset.effectiveVar}) }}`}],theme:SS,style:SS,variation:[CS]},TS=e=>`${K}${e}`,ES=e=>`${K}apply.${e}`,DS=e=>`${K}reset.${e}`,OS=e=>`${K}carousel.${e}`,kS=(e,t)=>`${OS(e)}.${t}`,AS=e=>`${K}resettable.${e}`,jS=e=>e.length===0?`false`:`(or ${e.map(e=>`.${AS(e)}`).join(` `)})`,MS=Object.keys(kb).map(e=>{let t=kb[e],n=pl(t.configKey);if(n===`text`)throw Error(`settings menu: globals.${t.configKey} is free text, which no control can change — list it in UNCONTROLLED_GLOBALS instead of SETTINGS`);let r=ix({label:t.label,domain:n},t.sessionKey,t.effectiveVar,ES(e));return{...t,name:e,control:r,beneath:wS[e]??[]}}),NS={preset:`door`,theme:`look`,style:`look`,variation:`look`,endcaps:`look`,autoWrap:`layout`,padding:`layout`,updateNotice:`config`},PS=e=>MS.filter(t=>NS[t.name]===e),FS=e=>PS(e).map(YS);new Set(MS.flatMap(e=>[e.sessionKey,e.configKey]));const IS=zx(sS,{arm:`⟲`,confirm:`⟲ reset all?`},MS.map(e=>DS(e.name))),LS=[`unsaved`,`history.undo`,`history.redo`],RS=e=>`${K}${e}`,zS=RS(`unsaved`),BS=(e,t)=>({body:t,shown:`(gt .${RS(e)} 0)`}),VS=[BS(`unsaved`,`{{ action "${iS}" (printf "💾 save %d" .${zS}) }}`),BS(`history.undo`,`{{ action "${uS}" "↶" }}`),BS(`history.redo`,`{{ action "${gS}" "↷" }}`),{body:IS.template,shown:`(or ${jS(MS.map(e=>e.name))} ${IS.armed})`}],HS={when:`{{ or ${VS.map(e=>e.shown).join(` `)} }}`,template:`{{ $sep := "" }}`+VS.map(e=>`{{ if ${e.shown} }}{{ $sep }}${e.body}{{ $sep = " " }}{{ end }}`).join(``)},US=[{step:IS,place:`door`},{step:Qx,place:`session`}],WS=e=>e.map(e=>e.step.disarm),GS=WS(US),KS=WS(US.filter(e=>e.place!==`door`)),qS=__(xS),JS=e=>({variable:qS,key:qS,member:h_(ES(e))});function YS(e){let t=TS(e.name);return e.control.kind===`inline`?{kind:`segment`,name:t}:Yc(t,JS(e.name),{kind:`container`,direction:`vertical`,children:[{kind:`segment`,name:OS(e.name)},...e.beneath.map((t,n)=>({kind:`segment`,name:kS(e.name,n)}))]},`drop`)}function XS(e){return e===Kx}function ZS(e){let t={kind:`segment`,name:Kx};if(e.kind===`container`&&e.direction===`vertical`){let[n,...r]=e.children;return e.when===void 0&&n!==void 0?{...e,children:[ZS(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 QS(e){return $S(e)>0?e:ZS(e)}function $S(e){let t=0;for(let n of Ns(e))n.kind===`segment`&&XS(n.name)&&(t+=1);return t}function eC(e,t=!1){let n=t||e.when!==void 0;return e.kind===`segment`?n&&XS(e.name)||e.opens!==void 0&&eC(e.opens.body,!0):e.children.some(e=>eC(e,n))}const tC={session:{direction:`vertical`,segments:[Yx,Zx]},look:{direction:`horizontal`,segments:[]},layout:{direction:`horizontal`,segments:[aS,Jx]},config:{direction:`horizontal`,segments:[]},tools:{direction:`vertical`,segments:[_S,...Dx.map(e=>bS(e.name))]}},nC=e=>({kind:`container`,direction:tC[e].direction,children:[...tC[e].segments.map(e=>({kind:`segment`,name:e})),...FS(e)]});function rC(e){return e.kind===`segment`?XS(e.name)?Yc(e.name,lS,aC,`above`):e:sC(e)}function iC(){return{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:mS},...FS(`door`),{kind:`segment`,name:iS}]},{kind:`container`,direction:`horizontal`,children:eS.map(({member:e})=>Yc(tS(e),rS(e),nC(e),`drop`))}]}}const aC=iC();function oC(e){let t=new Map;for(let e of Ns(aC))e.kind===`segment`&&e.opens!==void 0&&t.set(e.opens.ref.key,e.opens.ref.variable);return[...t].map(([t,n])=>{let r=e.variables[n];if(r?.kind!==`state`||r.default===void 0)throw Error(`settings menu: the door folds "${t}", but "${n}" is not a state variable the menu declares with a default`);let i=`${Kx}.fold.${vu(t)}`;return e.actions[i]={set:t,to:r.default},i})}function sC(e){return{...e,children:e.children.map(e=>rC(e))}}function cC(e){let t={variables:{[Kx]:tl(Kx,Wc)},actions:{[cS]:nl(Kx,qx),[vS]:{doctor:`run`},[Jx]:{do:[...J_]},...Xx.actions,...Qx.actions,[iS]:{save:!0},[uS]:{undo:!0},[fS]:{back:!0},[dS]:{do:[fS,...GS]},[gS]:{redo:!0},[aS]:{preset:`save`},[oS]:{preset:`delete`,name:`{{ .${kb.preset.effectiveVar} }}`}},segments:{[Kx]:{template:`{{ $door := ${$c(Kx,el(e),el(`✖`))} }}{{ if ${Zc(lS)} }}{{ fg (color "error") $door }}{{ else }}{{ $door }}{{ end }}`},[Yx]:{template:Xx.template},[Zx]:{template:Qx.template},[mS]:hS,[iS]:HS,[aS]:{template:`{{ action "${aS}" "+ preset" }}`},[_S]:{template:`{{ action "${vS}" "🩺 doctor" }}`},[Jx]:{template:`{{ action "${Jx}" "✎ arrange" "✎ done" }}`}}};t.variables[pS]={kind:`input`,path:`navigation.back`,type:`number`,default:0};for(let e of LS)t.variables[RS(e)]={kind:`input`,path:e,type:`number`,default:0};t.variables[$x]=tl($x,`session`);for(let{member:e,label:n}of eS){t.actions[nS(e)]=nl($x,e),t.actions[tS(e)]={do:[nS(e),...KS]};let r=jS(PS(e).map(e=>e.name)),i=`(ternary ${el(` •`)} "" ${r})`,a=e=>`(print ${el(e)} ${i})`;t.segments[tS(e)]={template:`{{ ${$c(tS(e),a(n),a(`▾ ${n}`))} }}`}}return Object.assign(t.variables,Qx.variables,IS.variables),uC(t),lC(t),t.actions[Kx]={do:[cS,...GS,...oC(t)]},t}function lC(e){for(let t of Dx){let n=jx(t.name),r=yS(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[bS(t.name)]={when:`{{ ne .${n.verdict} "" }}`,template:`{{ if eq .${n.verdict} "ok" }}✓ ${t.label}{{ else }}✗ ${t.label} — {{ .${n.reason} }}{{ if eq .${n.fixable} "${Co}" }} {{ action "${r}" "[fix]" }}{{ end }}{{ end }}`}}}function uC(e){for(let t of MS){Object.assign(e.actions,t.control.actions);let n=DS(t.name);e.actions[n]={reset:t.configKey},e.variables[AS(t.name)]={kind:`input`,path:`resettable.${t.name}`,type:`boolean`,default:!1};let r=`{{ if .${AS(t.name)} }} {{ action "${n}" "↺" }}{{ end }}`;if(t.control.kind===`inline`){e.segments[TS(t.name)]={template:`${t.control.template}${r}`};continue}let i=JS(t.name),a=v_(i.key,i.member);e.variables[i.key]=tl(i.key,Wc),e.actions[a]=nl(i.key,i.member),e.segments[TS(t.name)]={template:`${t.label} {{ .${t.effectiveVar} }} `+Qc(a,`▸`,`▾`)+r},e.segments[OS(t.name)]={template:t.control.template},t.beneath.forEach((n,r)=>{e.segments[kS(t.name,r)]=n})}Object.assign(e.actions,IS.actions)}function dC(e){let{variables:t,actions:n}=rv();Object.assign(e.variables,t),Object.assign(e.actions,n)}function fC(e){let t=cC(e.globals.menuGlyph??`🍫`);dC(t);let n={...e.presets},r=[];for(let t of E_(e.presets)){let{node:i}=k_(e,t),a=rC(QS(i));r.push(a),n[t]={...O_(e.presets,t),root:a}}let i=Rb(t,r,e);return{...e,variables:{...i,...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:n}}const pC=`${xu}live`,mC=[`☐ live`,`☑ live`],hC=`${xu}done`,gC=`${xu}cancel`,_C=`${xu}rewind`,vC=`${xu}changes`,yC=`(gt .${vC} 0)`,bC=`(or ${yC} (gt .${zS} 0))`,xC={variable:pC,key:pC,member:`open`};function SC(e){return`${xu}configuring.p${e}`}function CC(e){return`and ${Zc(Q_)} (not ${Zc(xC)}) (ne .${SC(e)} "true")`}function wC(e){return{kind:`template`,template:`{{ or ${e.map(e=>`(eq .${G_} "${Jc(e)}")`).join(` `)} false }}`}}function TC(e,t,n){return`{{ if ${CC(e)} }}${t}{{ else }}${n}{{ end }}`}const EC=`{{ and ${Zc(Q_)} .preset.customized }}`,DC=Cu,OC=`${xu}addable`;function kC(e){return new Map([[OC,{members:Object.keys(e.segments).filter(e=>!DC(e)),library:{groups:gu.map(e=>({id:e,label:_u[e]})),entry:t=>{let n=e.segments[t];return{group:n.group??`other`,...n.description!==void 0&&{description:n.description}}}}}]])}function AC(e,t,n){return n.segments[e]={template:t,when:$_,bg:hx},{kind:`segment`,name:e}}function jC(e,t,n){let r=`${xu}${e.presetIdent}.remove.${t}`;return e.artifacts.actions[r]={persist:e.rootKey,removeSegment:n},`{{ fg (${`readableOn (color "error") (bgOf) ${Aa}`}) (action "${r}" "✖") }}`}function MC(e){return`{{ if ${Zc(Q_)} }}${e}{{ end }}`}function NC(e,t){return e.reduce((e,t)=>`{{ if and ${Zc(Q_)} ${Zc(t)} }}true{{ else }}${e}{{ end }}`,t)}function PC(e){return e.flatMap(e=>[...Ns(e)].flatMap(e=>e.kind===`segment`&&e.opens?.ref.key===`edit.configure`?[e.opens.ref]:[]))}function FC(e,t,n){return`${X_}${e}.${t}.${n}`}function IC(e,t,n,r){let i=ks(n),a=`${xu}${e.presetIdent}`,o=Z_(e.presetIdent,i);e.configured.push(o);let s=`${a}.configure.${t}`;e.artifacts.actions[s]={set:G_,to:o};let c={},l=Object.entries(r).map(([r,o])=>{let s=FC(e.presetIdent,i,r),l=`${X_}p${e.presetIdent}.d${t}.${r}`;e.artifacts.variables[l]={kind:`state`,key:s,default:Js(n.settings?.[r]??o.default)},c[r]={id:i,key:s,variable:l};let u=`${a}.setting.${t}.${r}`,d=ix(nx(o),s,l,u);return Object.assign(e.artifacts.actions,d.actions),e.artifacts.segments[u]={template:d.kind===`ring`?`{{ "${Jc(o.label)}" }} ${d.template}`:d.template},{kind:`segment`,name:u}});return{term:`{{ action "${s}" "⚙️" }}`,ref:{variable:G_,key:G_,member:o},body:{kind:`container`,direction:`vertical`,children:l},drafts:c}}const LC=`${xu}label:`;function RC(e){if(e.startsWith(LC)){let t=e.slice(LC.length);return t.slice(t.indexOf(`:`)+1)}return e.startsWith(`edit.`)?void 0:e}function zC(e,t,n,r){let{artifacts:i}=n,a=ks(e),o=`${LC}${a}:${e.name}`;i.segments[o]={template:`{{ "${Jc(a)}" }}`,...t.palette!==void 0&&{palette:t.palette}};let s=e.settings?.[Us];return{...Yc(o,r.ref,r.body,`drop`,NC([r.ref],`{{ ${CC(n.presetIdent)} }}`)),...s!==void 0&&{settings:{theme:s}},drafts:{[Us]:r.drafts[Us]}}}function BC(e,t,n,r){let{presetIdent:i,artifacts:a}=e,o=`${xu}${i}.insert.${t}`,s=`${xu}${i}.insertSeg.${t}`;a.actions[o]={persist:e.rootKey,insertSegmentFrom:OC,anchor:n,relation:r};let c=h_(o),l=g_(s,o,void 0),u=y_(l),d=v_(l,c);return a.variables[l]=tl(l,Wc),a.variables[u]={kind:`state`,key:u,default:`0`},a.actions[d]=nl(l,c),a.actions[u]={set:u,int:!0},{host:s,template:`{{ $m := menu "${o}" "✚" "✕" }}{{ if ${Zc({variable:l,key:l,member:c})} }}{{ $m }}{{ else }}{{ fg (${`readableOn (color "success") (bgOf) ${Aa}`}) $m }}{{ end }}`}}function VC(e,t){let n=[],r=e.children.findIndex(e=>e.kind===`segment`&&!DC(e.name)),i=e=>VC(e,t);for(let[a,o]of e.children.entries()){if(o.kind===`container`){n.push(i(o));continue}let s=Ms(o,i);if(DC(o.name)){n.push(s);continue}let c=ks(o),l=a===r?[BC(t,String(t.posCounter.n++),c,`before`)]:[],u=String(t.posCounter.n++),d=BC(t,u,c,`after`),f=jC(t,u,c),p=t.segments[o.name],m=IC(t,u,o,Ws(p)),h=MC(f),g=MC(m.term),_={kind:`container`,direction:`horizontal`,children:[...l.map(e=>AC(e.host,e.template,t.artifacts)),{...zC(o,p,t,m),lead:h,trail:g},{...s,when:TC(t.presetIdent,`false`,o.when??`true`),lead:h,trail:g,drafts:m.drafts},AC(d.host,d.template,t.artifacts)]};n.push(e.direction===`vertical`?{kind:`container`,direction:`horizontal`,children:[_]}:_)}return{...e,children:n,...e.when!==void 0&&{when:NC(PC(n),TC(t.presetIdent,`true`,e.when))}}}function HC(e,t,n,r,i,a,o){let s=`${xu}${t}.resetLayout`,c=`${xu}${t}.customized`;return r.actions[s]={reset:n},r.segments[c]={template:`{{ action "${s}" "↺ reset layout" }}`,when:EC},{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[...i,{kind:`segment`,name:c},a]},UC(e,o)]}}function UC(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),UC(n,t)]}:{...e,children:[...e.children,t]}}function WC(e,t,n,r,i,a){let{node:o}=k_(e,t),s={presetIdent:vu(t),rootKey:cx(t),segments:e.segments,artifacts:n,posCounter:{n:0},configured:[]},c=VC(o,s);return n.variables[SC(s.presetIdent)]=wC(s.configured),HC(c,s.presetIdent,s.rootKey,n,r,i,a)}function GC(e){let t={variables:{},actions:{},segments:{}},n=px(`${xu}help`,xx,[Q_],t);t.variables[pC]=tl(pC,Wc),t.actions[pC]=nl(pC,xC.member),t.segments[pC]={template:Qc(pC,...mC),when:$_};let r={kind:`segment`,name:pC},i=n;t.variables[vC]={kind:`input`,path:`history.sinceEdit`,type:`number`,default:0},t.actions[hC]={do:[iS,...J_]},t.segments[hC]={template:`{{ if ${bC} }}{{ action "${hC}" "✓ save" }}{{ else }}{{ action "${hC}" "✓ done" }}{{ end }}`,when:$_},t.actions[_C]={rewind:!0},t.actions[gC]={do:[_C,...J_]},t.segments[gC]={template:`{{ action "${gC}" "↩ cancel" }}`,when:`{{ and ${Zc(Q_)} ${yC} }}`};let a=[{kind:`segment`,name:hC},{kind:`segment`,name:gC}],o={...e.presets},s=[];for(let n of E_(e.presets)){let c=WC(e,n,t,a,r,i);s.push(c),o[n]={...O_(e.presets,n),root:c}}let c=Rb(t,s,e);return{...e,variables:{...c,...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:o}}const KC=[`set`,`persist`,`copy`,`open`,`reset`,`undo`,`redo`,`back`,`rewind`,`save`,`preset`,`doctor`,`ceiling`,`slash`,`do`];function qC(e){return e.ceiling===`set`?[`set`,e.to]:[`clear`]}function JC(e){return`from`in e||`int`in e||`insertSegmentFrom`in e}function YC(e,t){if(t===void 0)return{};if(!ic(t))return Z(e,`actions`,`actions must be an object, got ${W(t)}`),{};let n=Object.create(null);for(let[r,i]of Object.entries(t)){let t=XC(e,`actions.${r}`,i);t!==null&&(n[r]=t)}return n}function Z(e,t,n){e.issues.push({path:t,message:n,line:U(e.source,t.split(`.`))})}function XC(e,t,n){if(!ic(n))return Z(e,t,`${t} must be an action object, got ${W(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=KC.filter(e=>e in n);return r.length===1?ZC[r[0]](e,t,n):(Z(e,t,`action must declare exactly one of: ${KC.join(`, `)}${r.length>1?` (found: ${r.join(`, `)})`:``}`),null)}const ZC={set:(e,t,n)=>kw(e,t,n,`set`,Tw),persist:(e,t,n)=>kw(e,t,n,`persist`,Ew),copy:QC(`copy`),open:QC(`open`),reset:$C,undo:tw(`undo`),redo:tw(`redo`),back:tw(`back`),rewind:tw(`rewind`),save:tw(`save`),preset:nw,doctor:rw,ceiling:iw,slash:aw,do:ow};function QC(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=$s(t,n,r,e);return i===null?null:{[e]:i}}}function $C(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=sw(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 ew={undo:`it steps the session's settings history`,redo:`it steps the session's settings history`,back:`it steps the session's navigation history`,rewind:`it steps the session's settings history back to where edit mode opened`,save:`it saves the session's unsaved settings`};function tw(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 — ${ew[e]}), got ${G(r[e])}`),null)}}function nw(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=$s(e,t,n,`name`);return a===null?null:{preset:`delete`,name:a}}function rw(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`||kx(a)===void 0?(Z(e,`${t}.check`,`doctor fix must name a check (have: ${Dx.map(e=>e.name).join(`, `)}), got ${G(a)}`),null):{doctor:`fix`,check:a}}function iw(e,t,n){let r=n.ceiling,i=r===`clear`?[`ceiling`]:[`ceiling`,`to`];for(let r of Object.keys(n))i.includes(r)||Z(e,`${t}.${r}`,`Unknown key "${r}" on a ceiling action. Expected only: ${i.join(`, `)}`);if(r===`clear`)return{ceiling:`clear`};if(r!==`set`)return Z(e,`${t}.ceiling`,`ceiling must be "set" or "clear", got ${G(r)}`),null;let a=n.to;return typeof a!=`string`||a.trim()===``?(Z(e,`${t}.to`,`ceiling set needs \`to\`: a memento ceiling value such as "+100_000", "400000" or "off", got ${G(a)}`),null):{ceiling:`set`,to:a}}function aw(e,t,n){for(let r of Object.keys(n))r!==`slash`&&Z(e,`${t}.${r}`,`Unknown key "${r}" on a slash action. Expected only: slash`);let r=Vx(n.slash);return r.kind===`refused`?(Z(e,`${t}.slash`,r.reason),null):{slash:r.line}}function ow(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 sw(e,t,n,r,i,a){let o=$s(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 cw={set:`the SessionState key to write`,persist:`the config globals field to write`};function lw(e,t,n,r){let i=cw[r],a=sw(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 uw(e){return e===`set`?`set-state`:`set-config`}const dw={to:Aw(`set`)},fw={to:Aw(`persist`)},pw={from:jw(`set`)},mw={from:jw(`persist`)},hw={min:Iw(),max:Iw(),by:Iw()},gw={int:Nw()},_w={cycle:Mw(`set`)},vw={cycle:Mw(`persist`)},yw={removeSegment:Pw(`removeSegment`)},bw={insertSegment:Pw(`insertSegment`),anchor:Pw(`anchor`),relation:Fw()},xw={insertSegmentFrom:jw(`persist`),anchor:Pw(`anchor`),relation:Fw()},Sw={ok:e=>e.min<e.max,issue:e=>({field:`min`,message:`min (${e.min}) must be less than max (${e.max})`})},Cw={ok:e=>e.by!==0,issue:()=>({field:`by`,message:`by must be a non-zero integer (the per-click increment; negative steps down)`})};function ww(e,t,n=[],r){let i=Object.keys(t),a=r??i,o=[e],s=(e,n,r)=>oc(e,t,n,r),c=wc(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?mc(s,...n):s}}const Tw=[ww(`set`,dw),ww(`set`,pw),ww(`set`,hw,[Sw,Cw]),ww(`set`,gw),ww(`set`,_w)],Ew=[ww(`persist`,fw),ww(`persist`,mw),ww(`persist`,hw,[Sw,Cw]),ww(`persist`,vw),ww(`persist`,yw),ww(`persist`,bw,[],[`insertSegment`]),ww(`persist`,xw,[],[`insertSegmentFrom`])];function Dw(e){let t=[`"to" (a literal value)`,`"from" (an option domain — a registered domain name like "themes"/"endcaps"/"styles", 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 Ow(e){let t=Dw(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 kw(e,t,n,r,i){let a=lw(e,t,n,r),o=i.filter(e=>e.detect.some(e=>e in n));if(o.length!==1)return Z(e,t,`${Ow(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 Aw(e){let t=uw(e);return{required:!0,json:{type:`string`},parse:(n,r,i,a)=>sw(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 jw(e){let t=uw(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 Mw(e){let t=uw(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 ${W(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 Nw(){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 Pw(e){return{required:!0,json:{type:`string`},parse:(t,n,r,i)=>{let a=$s(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 Fw(){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 Iw(){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}}}function Lw(e,t,n){return`${e}: "${t}" is an endcaps shape, not a style — endcaps were renamed from "style" to "endcaps"; write ${n}: "${t}"`}const Rw={noun:`style key`,fields:{hueShift:vc(),chromaScale:vc({min:0}),lightnessScale:vc(),lightnessShift:vc()}};function zw(e,t){if(!ic(t))return e.issues.push({path:`styles`,message:`styles must be an object mapping style names to adaptation objects, got ${W(t)}`,line:U(e.source,[`styles`])}),{};let n={};for(let[r,i]of Object.entries(t)){if(r===``||r.includes(`/`)){e.issues.push({path:`styles.${r}`,message:`style name ${JSON.stringify(r)} must be non-empty and slash-free — a style picker writes the name on the set-state wire, which rejects empty values and splits on "/"`,line:U(e.source,[`styles`,r])});continue}if(mo(r)){e.issues.push({path:`styles.${r}`,message:Lw(`styles.${r}`,r,`globals.endcaps`),line:U(e.source,[`styles`,r])});continue}let t=ac(e,Rw,`styles.${r}`,i);t!==null&&(n[r]={...Bn,...t})}return n}const Bw={noun:`preset key`,fields:{root:{required:!1,json:{$ref:`#/definitions/RootFragment`},parse:(e,t,n,r)=>r[n]===void 0?void 0:dd(e,`${t}.${n}`,r[n])},globals:{required:!1,json:El(),parse:(e,t,n,r)=>r[n]===void 0?void 0:Tl(e,`${t}.${n}`,r[n])}}};function Vw(e,t){if(!ic(t))return e.issues.push({path:`presets`,message:`presets must be an object mapping preset names to config fragments, got ${W(t)}`,line:U(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:U(e.source,[`presets`,r])});continue}let t=ac(e,Bw,`presets.${r}`,i);t!==null&&(n[r]=t)}return n}function Hw(e,t){if(t===void 0)return{};if(!ic(t))return e.issues.push({path:`helpers`,message:`helpers must be an object, got ${W(t)}`,line:U(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:U(e.source,[`helpers`,r])});continue}n[r]=i}return n}const Uw=new Map([[`session.budget.amount`,{segment:`session`,setting:`budget`}],[`session.budget.warningThreshold`,{segment:`session`,setting:`warnAt`}],[`today.budget.amount`,{segment:`today`,setting:`budget`}],[`today.budget.warningThreshold`,{segment:`today`,setting:`warnAt`}],[`block.budget.heatThreshold`,{segment:`block`,setting:`warnAt`}],[`block.budget.warningThreshold`,{segment:`block`,setting:`errorAt`}],[`weekly.budget.heatThreshold`,{segment:`weekly`,setting:`warnAt`}],[`weekly.budget.warningThreshold`,{segment:`weekly`,setting:`errorAt`}],[`burn.eta.errorMinutes`,{segment:`burnrate`,setting:`errorWithin`}],[`burn.eta.warnMinutes`,{segment:`burnrate`,setting:`warnWithin`}]]);function Ww(e){return`it became the "${e.setting}" setting of each "${e.segment}" placement — set it on the placement where a row places "${e.segment}" ({ seg: "${e.segment}", settings: { ${e.setting}: <value> } }), or redeclare segments.${e.segment}.settings.${e.setting} with the default every placement should start from`}function Gw(e){let t=Uw.get(e);return t===void 0?void 0:`variables.${e} is no longer read: ${Ww(t)}`}function Kw(e){let t=Uw.get(e);return t===void 0?``:` — ".${e}" is no longer a variable: ${Ww(t)}; a "${t.segment}" template reads it as ".settings.${t.setting}"`}function qw(e,t){let n=new Map;for(let e of Object.keys(t)){let t=vu(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:U(e.source,[`presets`])})}function Jw(e,t,n){let r=[[[`globals`],t.globals.style],[[`editGlobals`],t.editGlobals.style],...Object.entries(t.presets).map(([e,t])=>[[`presets`,e,`globals`],t.globals?.style])];for(let[n,i]of r){if(i===void 0||ao(i)||Object.prototype.hasOwnProperty.call(t.styles,i))continue;let r=`${n.join(`.`)}.style`;e.issues.push({path:r,message:mo(i)?Lw(r,i,`${n.join(`.`)}.endcaps`):`${r} "${i}" does not match any declared style (have: ${Object.keys(t.styles).join(`, `)})`,line:U(e.source,[...n,`style`])})}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:U(e.source,[`globals`,`preset`])}),qw(e,t.presets);let i=$b(t);for(let[n,r]of Object.entries(t.actions))`set`in r&&Mb.has(r.set)&&e.issues.push({path:`actions.${n}.set`,message:`actions.${n} sets "${r.set}", which has no session pick — globals.${r.set} is set in the config file only, so a click would change nothing; write it with { persist: "${r.set}", … } instead`,line:U(e.source,[`actions`,n,`set`])}),!(!(`set`in r)||!(`from`in r)||typeof r.from!=`string`)&&(ex(i).includes(r.from)||e.issues.push({path:`actions.${n}.from`,message:`actions.${n} from: references unknown option domain "${r.from}" (have: ${ex(i).join(`, `)})`,line:U(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&&JC(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:U(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=ux(i);if(o===null){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" is not a config globals field (have: ${Al().join(`, `)}), a "segments.<name>.palette" target, a "presets.<name>.globals.<field>" target, or a "presets.<name>.root" target`,line:U(e.source,[`actions`,n,a])});continue}let s=Yw.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:U(e.source,[`actions`,n,a])});continue}if(o.scope===`preset-root`){Xw(e,t,n,a,i,o.preset,r);continue}if(o.scope===`preset-globals`&&!E_(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: ${E_(t.presets).join(`, `)})`,line:U(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(`, `)})${Du(o.segment)}`,line:U(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:U(e.source,[`actions`,n,a])})}}let a=Sv(t);for(let t of a.names)t!==`settings`&&!t.startsWith(Zw)||e.issues.push({path:`variables`,message:`variable "${t}" is named under "settings", which a segment's templates read as its placement's own settings (.settings.<name>) — rename it`,line:U(e.source,[`variables`,t])});let o=(t,n,r)=>{$S(t)>1&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${Kx}" ${$S(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}),eC(t)&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${Kx}" 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 Ns(t)){if(e.kind!==`segment`)continue;let t=ks(e);i.set(t,[...i.get(t)??[],e])}for(let[t,a]of i){if(a.length<2)continue;let o=a[1].name,s=js(o,new Set(i.keys()));e.issues.push({path:n,message:`${n} has ${a.length} placements with the id "${t}" — an id names one placement (its settings, its menus' open state, and edit mode all address it), so give each its own: { seg: "${o}", id: "${s}" }. A placement without an "id" takes its segment's name.`,line:r})}};function s(e,t=!1){return e.kind===`segment`?!1:t&&e.distribution!==void 0||e.children.some(n=>s(n,t||Os[e.direction]===`cell`))}let c=(n,r)=>{for(let[i,o]of Lc(n,r)){let n=U(e.source,o.split(`.`));if(i.when!==void 0&&(lT(e,`${o}.when`,i.when,a,{line:n}),cT(e,`${o}.when`,i.when,n)),i.kind===`segment`){if(XS(i.name)){(i.id!==void 0||i.settings!==void 0)&&e.issues.push({path:o,message:`${r} gives the global settings menu anchor "${Kx}" an id or settings — the anchor only marks where the menu goes, so place it as the bare name "${Kx}"`,line:n});continue}Object.prototype.hasOwnProperty.call(t.segments,i.name)||e.issues.push({path:o,message:`${r} entry "${i.name}" does not match any declared segment${Du(i.name)}`,line:n}),aT(e,t,i,o,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`,Fc(t.root)]]);for(let e of E_(t.presets)){let{node:n,path:r}=k_(t,e);l.set(r,n)}for(let[t,n]of l)o(n,t,U(e.source,t.split(`.`)));for(let[n,r]of Object.entries(t.variables)){oT(e,`variables.${n}`,r,a);let t=Gw(n);t!==void 0&&e.issues.push({path:`variables.${n}`,message:t,line:U(e.source,[`variables`,n])})}for(let[n,r]of Object.entries(t.segments)){if(r.vars)for(let[t,i]of Object.entries(r.vars))oT(e,`segments.${n}.vars.${t}`,i,a,n);let i=Ws(r);$w(e,n,i);let o=Qw(a,i);for(let a of[`template`,`bg`,`fg`,`when`]){let s=r[a];if(typeof s==`string`){lT(e,`segments.${n}.${a}`,s,o,{segCtx:n,settings:i});for(let{name:r,site:i,via:o}of bv(s,t.helpers)){if(Object.prototype.hasOwnProperty.call(t.actions,r))continue;let s=i===`options`?` (in a picker, menu or carousel)`:``;if(o!==null){uT(e,o,`Template references unknown action "${r}"${s}`);continue}e.issues.push({path:`segments.${n}.${a}`,message:`${a} references unknown action "${r}"${s}`,line:U(e.source,[`segments`,n,a])})}}}}for(let[n,r]of Object.entries(t.variables))sT(e,`variables.${n}`,r,a);for(let[n,r]of Object.entries(t.segments))if(r.vars)for(let[t,i]of Object.entries(r.vars))sT(e,`segments.${n}.vars.${t}`,i,a,n)}const Yw=[`removeSegment`,`insertSegment`,`insertSegmentFrom`];function Xw(e,t,n,r,i,a,o){let s=`actions.${n}.${r}`,c=U(e.source,[`actions`,n,r]);if(!E_(t.presets).includes(a)){e.issues.push({path:s,message:`actions.${n}: "${i}" names preset "${a}" which is not declared (have: ${E_(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(`, `)})${Du(i)}`,line:c})},p=new Set(As(k_(t,a).node)),m=(r,i)=>{!Eu.has(i)||p.has(i)||Object.prototype.hasOwnProperty.call(t.segments,i)||e.issues.push({path:s,message:`actions.${n}: ${r} "${i}" names no placement${Du(i)}`,line:c})};`removeSegment`in o&&m(`removeSegment`,o.removeSegment),`insertSegment`in o&&f(`insertSegment`,o.insertSegment),(`insertSegment`in o||`insertSegmentFrom`in o)&&m(`anchor`,o.anchor)}const Zw=`settings.`;function Qw(e,t){return{...e,names:new Set([...e.names,...Object.keys(t).map(e=>Zw+e)])}}function $w(e,t,n){let r=e=>`segments.${t}.settings.${e}`,i=(n,i)=>{e.issues.push({path:r(n),message:`${r(n)}: ${i}`,line:U(e.source,[`segments`,t,`settings`,n])})},a=nT(n);for(let{setting:e,message:t}of a)i(e,t);if(!(a.length>0))for(let{setting:e,message:t}of Ks(n,tT(n)))i(e,`the defaults do not stand together: ${t}`)}function eT(e){return nT(e).length>0||Ks(e,tT(e)).length>0}function tT(e){return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,t.default]))}function nT(e){let t=t=>Gs(rT(e,t))?.atLeast;return Object.keys(e).flatMap(n=>{let r=t(n);if(r===void 0)return[];if(r===n||Gs(rT(e,r))===void 0)return[{setting:n,message:`atLeast "${r}" must name another range setting of this segment (its range settings: ${iT(e,n).join(`, `)||`none`})`}];let i=[n];for(let e=r;e!==void 0;e=t(e)){if(e===n)return i.every(e=>n<=e)?[{setting:n,message:`atLeast closes a cycle (${[...i,n].join(` ≥ `)}) — every setting on it could only ever equal the rest`}]:[];if(i.includes(e))return[];i.push(e)}return[]})}function rT(e,t){return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0}function iT(e,t){return Object.entries(e).filter(([e,n])=>e!==t&&Gs(n)!==void 0).map(([e])=>e)}function aT(e,t,n,r,i){let a=Object.prototype.hasOwnProperty.call(t.segments,n.name)?t.segments[n.name]:void 0;if(a===void 0)return;let o=Ws(a),s=`${r}: placement "${ks(n)}" of segment "${n.name}"`;for(let[t,a]of Object.entries(n.settings??{})){let c=Object.prototype.hasOwnProperty.call(o,t)?o[t]:void 0,l=c===void 0?`sets "${t}", which segment "${n.name}" does not declare (it has: ${Object.keys(o).join(`, `)})`:qs(c,a)?void 0:`sets "${t}" to ${JSON.stringify(a)}${c.domain===`theme`?Xa(a):``}, but it must be ${Xs(c)}`;l!==void 0&&e.issues.push({path:r,message:`${s} ${l}`,line:i})}let c=Object.fromEntries(Object.entries(o).map(([e,t])=>[e,n.settings?.[e]??t.default]));if(!(!Object.entries(c).every(([e,t])=>qs(o[e],t))||eT(o)))for(let{message:t}of Ks(o,c))e.issues.push({path:r,message:`${s}: ${t}`,line:i})}function oT(e,t,n,r,i){n.kind===`template`&&lT(e,`${t}.template`,n.template,r,{segCtx:i}),Bs(n)&&n.cache&&`key`in n.cache&&lT(e,`${t}.cache.key`,n.cache.key,r,{segCtx:i})}function sT(e,t,n,r,i){if(Bs(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:U(e.source,[...t.split(`.`),`cache`,`depends_on`])})}}function cT(e,t,n,r){try{U_.parse(n)}catch(n){e.issues.push({path:t,message:`Template parse error in ${t}: ${n.message}`,line:r})}}function lT(e,t,n,r,i){for(let[a,o]of gv(n,r.helpers)){if(xv(a,r))continue;if(a.startsWith(Zw)){let n=o===null?``:` through helper "${o}"`,r=a.slice(9),s=i?.segCtx===void 0||i.settings===void 0?`Template reads ".${a}"${n}, but only a segment's own templates have settings — call it from a segment that declares "${r}"`:`Template reads ".${a}"${n}, but segment "${i.segCtx}" has no setting "${r}" (it has: ${Object.keys(i.settings).join(`, `)}) — declare it under segments.${i.segCtx}.settings`;e.issues.push({path:t,message:s,line:i?.line??U(e.source,t.split(`.`))});continue}if(o!==null){uT(e,o,`Template references unknown variable ".${a}"${Kw(a)}`);continue}let n=i?.segCtx===void 0?void 0:`${i.segCtx}.${a}`,s=n!==void 0&&xv(n,r)?` (segment-local vars are namespaced — write ".${n}")`:Kw(a);e.issues.push({path:t,message:`Template references unknown variable ".${a}"${s}`,line:i?.line??U(e.source,t.split(`.`))})}}function uT(e,t,n){let r=`helpers.${t}`;e.issues.some(e=>e.path===r&&e.message===n)||e.issues.push({path:r,message:n,line:U(e.source,[`helpers`,t])})}function dT(e,t){let{graph:n,nodeInfo:r}=fT(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:U(e.source,o?.linePathParts??[`variables`,i])}),!0}if(t===0&&o(s))return!0}return i.set(t,2),a.pop(),!1}}function fT(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 gv(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),Bs(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 pT=[`json5`,`json`];function mT(e){try{return r.statSync(e,{throwIfNoEntry:!1})===void 0?`absent`:`present`}catch(t){return{path:e,error:t.message}}}function hT(e){return e===`~`||e.startsWith(`~/`)||e.startsWith(`~\\`)?m.homedir()+e.slice(1):e}function gT(e,t,n){if(n!==void 0)return[n];let r=t??process.cwd();return[...new Set([...e?pT.map(t=>c.join(e,`.cc-candybar.${t}`)):[],...pT.map(e=>c.join(r,`.cc-candybar.${e}`)),...pT.map(e=>`${_T()}.${e}`)])]}function _T(){let e=process.env.XDG_CONFIG_HOME??c.join(m.homedir(),`.config`);return c.join(e,`cc-candybar`,`config`)}function vT(e,t,n){let r=[];for(let i of gT(e,t,n)){let e=mT(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 yT(e,t,n){let r=vT(e,t,n);return r.kind===`default`?`${_T()}.${pT[0]}`:r.path}function bT(e){return xT(e).join(`
159
+ `)||null}function xT(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 ST(e,t){let n=gT(e,t).filter(e=>mT(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 CT(e,t,n){return e===null?{...TT,config:Bc(TT.raw,t)}:wT(e,r.readFileSync(e,`utf-8`),t,n)}function wT(e,t,n,r){let i={source:t,...OT(e,t,r,Vu(n))};return{...i,config:Bc(i.raw,n)}}const TT={raw:{},source:``,warnings:[]};function ET({config:e,raw:t,source:n},r=`<config>`,i=new Set($a())){let a=[],o={source:n,issues:a,allowedPalettes:i,groups:[]};if(Jw(o,e,t),dT(o,e),a.length>0)throw new Ss(r,a);let s=H_(e,a);if(a.length>0)throw new Ss(r,a);return GC(fC(s))}function DT(e,t,n=new Set($a()),r=kT){return OT(e,t,n,r).raw}function OT(e,t,n,r){let i=AT(e,t),a=Ts(e,t),o=a===null?[]:[a],s=[],c={source:t,issues:s,allowedPalettes:n??new Set($a()),groups:[]};if(!ic(i))throw new Ss(e,[{path:``,message:`Config root must be an object, got ${W(i)}`}],o);let l=jT(c,i,r);if(s.length>0)throw new Ss(e,s,o);return{raw:l,warnings:o}}const kT=new Set;function AT(e,t){try{return nt.default.parse(t)}catch(t){let n=t;throw new Ss(e,[{path:``,message:`JSON5 syntax error: ${n.message}`,line:n.lineNumber,col:n.columnNumber}])}}function jT(e,t,n){for(let n of Object.keys(t))MT.has(n)||e.issues.push({path:n,message:`Unknown top-level key "${n}". Expected one of: ${[...MT].join(`, `)}`,line:U(e.source,[n])});let r={};return t.globals!==void 0&&(r.globals=wl(e,`globals`,t.globals)),t.variables!==void 0&&(r.variables=Wl(e,`variables`,t.variables)),t.segments!==void 0&&(r.segments=Hu(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.
160
160
  Replace: layout: [["seg1", "seg2"], ["seg3"]]
161
161
  With: root: { v: [{ h: ["seg1", "seg2"] }, "seg3"] }
162
- Single-row example: root: { h: ["seg1", "seg2"] }`,line:U(e.source,[`layout`])}),t.root!==void 0&&(r.root=cd(e,`root`,t.root)),t.actions!==void 0&&(r.actions=VC(e,t.actions)),t.looks!==void 0&&e.issues.push({path:`looks`,message:`"looks" was renamed "styles" — move the block under styles: { … } (and globals.look to globals.style)`,line:U(e.source,[`looks`])}),t.styles!==void 0&&(r.styles=jw(e,t.styles)),t.presets!==void 0&&(r.presets=Nw(e,t.presets)),t.editGlobals!==void 0&&(r.editGlobals=wl(e,`editGlobals`,t.editGlobals)),t.helpers!==void 0&&(r.helpers=Pw(e,t.helpers)),gd(e,r),L_(e,r),$_(e,r),Su(e,r,K,`the global settings menu`),r}const wT=new Set([`globals`,`variables`,`segments`,`layout`,`looks`,`root`,`actions`,`styles`,`presets`,`editGlobals`,`helpers`]);function TT(e){let t=jT(e.termCols),n=jT(e.termRows),r=MT(e.ssh),i=kT(e.tmux),a=OT(e.configEnv),o=DT(e.claudeConfigDir),s=ET(e.mementoEnv);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},...o!==void 0&&{claudeConfigDir:o},...s!==void 0&&{mementoEnv:s}}}function ET(e){if(typeof e!=`object`||!e||Array.isArray(e))return;let t=e,n=Xe.filter(e=>t[e]!==void 0);return n.every(e=>DT(t[e])!==void 0)?Object.fromEntries(n.map(e=>[e,t[e]])):void 0}function DT(e){return typeof e==`string`&&c.isAbsolute(e)?e:void 0}function OT(e){return typeof e==`string`&&e!==``?sT(e):void 0}function kT(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 AT=1e4;function jT(e){if(typeof e!=`number`||!Number.isFinite(e))return;let t=Math.floor(e);if(!(t<=0))return t>AT?AT:t}function MT(e){return typeof e==`boolean`?e:void 0}var NT=class extends Error{constructor(e){super(e),this.name=`ProtocolError`}};function PT(e){let t=Buffer.from(JSON.stringify(e),`utf8`),n=Buffer.alloc(4);return n.writeUInt32BE(t.length,0),Buffer.concat([n,t])}function FT(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 NT(`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 NT(e instanceof Error?e.message:String(e));e instanceof Error&&(n.cause=e),t(n);return}}}}function IT(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=FT(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(PT(t))})}async function LT(e,t,n){let r=null;try{r=await HT(Le(),t.connectMs);let i=await IT(r,{v:3,...e},t.budgetMs);return BT(e.kind,i,n)}catch(e){return VT(e)}finally{r&&r.destroy()}}function RT(e,t){return typeof e==`string`?e:t}function zT(e){return typeof e==`number`&&Number.isInteger(e)&&e>=0?e:0}function BT(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=RT(r.error,`(no error message)`);switch(r.code){case`VERSION_MISMATCH`:return{kind:`permanent`,cause:`version_mismatch`,clientV:3,daemonV:zT(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 VT(e){if(e instanceof NT||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 HT(e,t){return new Promise((n,r)=>{let i=b.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 UT(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 WT={connectMs:50,budgetMs:150},GT={connectMs:50,budgetMs:200};function KT(e){let t=e.output;return typeof t==`string`?t:void 0}function qT(e,t,n,r){return LT({kind:`render`,hookData:e,args:t,cwd:n,...r},WT,KT)}function JT(e,t){return LT({kind:`click`,verb:e,value:t},GT,KT)}let YT=null;function XT(e){if(YT!==null)return YT;r.mkdirSync(c.dirname(e),{recursive:!0});try{YT=r.statSync(e).size}catch{YT=0}return YT}function ZT(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{}YT=0}function Q(e,t){let n=`${new Date().toISOString()} [${e}] ${t}\n`;try{let e=Ye(),t=XT(e);r.appendFileSync(e,n),YT=t+Buffer.byteLength(n,`utf8`),YT>=5242880&&ZT(e)}catch(e){YT=null;try{process.stderr.write(`${n}cc-candybar: daemon.log unwritable: ${e.message}\n`)}catch{}}}function QT(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(`
163
- `)}function $T(e,t){return e===`darwin`?[eE(`footprint`,[`-p`,String(t)]),eE(`vmmap`,[`--summary`,String(t)])]:e===`linux`?[tE(`/proc/self/smaps_rollup`),tE(`/proc/self/status`)]:[]}function eE(e,t){return{name:`${e} ${t.join(` `)}`,read:()=>{let n=Ae({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}`}${nE(n.stderr)}`}}}}function tE(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 nE(e){let t=e.split(`
164
- `).map(e=>e.trim()).find(e=>e.length>0);return t===void 0?``:` (${t})`}const rE=`CC_CANDYBAR_RSS_LIMIT_MB`;function iE(e){let t=e[rE];if(t===void 0)return 512;let n=/^\d+$/.test(t)?Number(t):NaN;if(!Number.isSafeInteger(n)||n<=0)throw Error(`${rE} must be a positive integer (MB), got ${JSON.stringify(t)}`);return n}function aE(e){return iE(e)*2}const oE=1024*1024;function sE(e){return iE(e)*oE}const cE={memoryReport:{prefix:`memory-`,suffix:`.txt`},heapSnapshot:{prefix:`heap-`,suffix:`.heapsnapshot`}};function lE(e,t,n){let{prefix:r,suffix:i}=cE[t];return c.join(e,`${r}${n}${i}`)}function uE(e){for(let t of Object.keys(cE)){let{prefix:n,suffix:r}=cE[t];if(e.startsWith(n)&&e.endsWith(r))return t}return null}function dE(e){let t=e.rssLimitBytes??512*oE,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 fE(e.log,`memory report`,()=>{let t=lE(e.snapshotDir,`memoryReport`,o);e.writeMemoryReport(t,e.captureMemoryReport()),e.log(`info`,`memory report written: ${t}`)}),fE(e.log,`heap snapshot`,()=>{let t=lE(e.snapshotDir,`heapSnapshot`,o);e.log(`info`,`heap snapshot written: ${e.writeHeapSnapshot(t)}`)}),fE(e.log,`artifact rotation`,()=>{mE(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 fE(e,t,n){try{n()}catch(n){e(`warn`,`${t} failed: ${n.message}`)}}function pE(e){let t=e.slice(e.lastIndexOf(`/`)+1),n=uE(t);if(n===null)return t;let{prefix:r,suffix:i}=cE[n];return t.slice(r.length,t.length-i.length)}function mE(e,t,n){let r=new Map;for(let t of e){let e=pE(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 hE(e,t,n={}){let i=Ie();return{now:()=>Date.now(),pid:process.pid,snapshotDir:i,log:Q,memoryBytes:()=>{let e=process.memoryUsage();return{rss:e.rss,heapTotal:e.heapTotal}},captureMemoryReport:()=>QT($T(process.platform,process.pid)),writeMemoryReport:(e,t)=>r.writeFileSync(e,t,{mode:384}),writeHeapSnapshot:e=>re.writeHeapSnapshot(e),listArtifacts:()=>{try{return r.readdirSync(i).filter(e=>uE(e)!==null).map(e=>c.join(i,e))}catch{return[]}},removeFile:e=>r.unlinkSync(e),shutdown:t,startedAtMs:e,...n}}function gE(e={}){if(ME()!==null)return;let n=e.spawn??NE,r=kE();if(r.kind===`contended`){let e=vE();e!==null&&e>2e3&&(t.stderr.write(`cc-candybar: spawn-lock held ${e}ms (likely crashed holder) — spawning unlocked\n`),_E(n));return}if(r.kind===`error`){t.stderr.write(`cc-candybar: spawn-lock unavailable (${r.reason}) — spawning unlocked\n`),_E(n);return}try{_E(n)}finally{jE()}}function _E(e){TE()&&yE(e)}function vE(){try{let e=r.statSync(Ge());return Date.now()-e.mtimeMs}catch{return null}}function yE(e){try{e()||t.stderr.write(`cc-candybar: daemon spawn returned false (unable to resolve script path?)
165
- `)}catch(e){t.stderr.write(`cc-candybar: daemon spawn failed: ${e.message}\n`)}}function bE(e,t){return e===null?{kind:`allow`}:e<-1e4?{kind:`allow-future-garbage`,futureMs:-e}:e<t?{kind:`deny`}:{kind:`allow`}}function xE(e){return Math.min(3e3*2**Math.min(Math.max(e,0),5),6e4)}function SE(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 CE(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 wE(){try{r.unlinkSync(qe())}catch(e){e.code!==`ENOENT`&&t.stderr.write(`cc-candybar: could not reset spawn.backoff: ${e.message}\n`)}}function TE(){let e=Ke(),n=qe(),r=SE(n),i=bE(EE(e),xE(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`),DE(e),CE(n,Math.min(r+1,5)),!0)}function EE(e){try{return Date.now()-r.statSync(e).mtimeMs}catch{return null}}function DE(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 OE=null;function kE(){let e=Ge();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 OE={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(!AE(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 AE(e){try{let t=r.statSync(e);return Date.now()-t.mtimeMs>1e4}catch{return!0}}function jE(){if(!OE)return;let{fd:e,path:t}=OE;OE=null;try{r.closeSync(e)}catch{}try{r.unlinkSync(t)}catch{}}function ME(){try{return r.mkdirSync(Ie(),{recursive:!0}),null}catch(e){return`mkdir ${Ie()}: ${e.message}`}}function NE(){let e=t.execPath,n=t.argv[1];return n?je({bin:e,args:[`--max-old-space-size=${aE(t.env)}`,n,`daemon`],category:`daemon-spawn`}).ok:!1}const PE=`cc-candybar`,FE=`dispatch`,IE=`set-state`,LE=`step-state`,RE=`copy`,zE=`open-vscode`,BE=`toolbar-toggle`,VE=`show-config-error`,HE=`show-config-warning`,UE=`set-config`,WE=`step-config`,GE=`save`,KE=`save-preset`,qE=`delete-preset`,JE=`reset-config`,YE=`apply-layout-op`,XE=`undo`,ZE=`redo`,QE=`back`,$E=`rewind`,eD=`apply-update`,tD=`doctor-run`,nD=`doctor-fix`,rD=`ceiling`,iD=`slash`;function aD(e){return e.map(encodeURIComponent).join(`/`)}function oD(e){return e.length===0?[]:e.split(`/`).map(decodeURIComponent)}function sD(e){return`${PE}://${FE}/${e.map(e=>`e=${encodeURIComponent(`${e.verb}/${aD(e.args)}`)}`).join(`&`)}`}function cD(e){return new ie(e).getAll(`e`).map(fD)}const lD=new Set([IE,JE]);function uD(e){return e.reduce((e,t)=>{let n=e.at(-1),r=n&&dD(n,t);return r?[...e.slice(0,-1),r]:[...e,t]},[])}function dD(e,t){if(e.verb!==t.verb||!lD.has(e.verb))return;let[n,r]=[fD(e.value),fD(t.value)];return n.verb===r.verb?{verb:e.verb,value:`${n.verb}/${n.value}/${r.value}`}:void 0}function fD(e){let t=e.indexOf(`/`);return t===-1?{verb:e,value:``}:{verb:e.slice(0,t),value:e.slice(t+1)}}const pD=`1.109.1`,mD=/^[A-Za-z0-9_./,:@%+-][A-Za-z0-9_./,:@%+=-]*$/;function hD(e){return`'${e.replaceAll(`'`,`'\\''`)}'`}function gD(e){return mD.test(e)?e:hD(e)}function _D(e,t){let n=(e.CLAUDE_CONFIG_DIR??``).split(`,`)[0].trim();return n===``?void 0:c.resolve(t,n)}function vD(e){return e??c.join(m.homedir(),`.claude`)}function yD(e){return c.join(e,`settings.json`)}function bD(e){return c.join(e,`plugins`,`installed_plugins.json`)}function xD(e){return r.existsSync(e)?r.readFileSync(e,`utf8`):``}function SD(e){let t;try{let n=xD(e);if(/^\s*$/.test(n))return{};t=Go.parse(n)}catch(t){throw Error(`cannot read ${e}: ${CD(t)}`,{cause:t})}if(typeof t!=`object`||!t||Array.isArray(t))throw Error(`cannot read ${e}: not a JSON object`);return t}const CD=e=>e instanceof Error?e.message:String(e),wD=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/;function TD(e){let t=wD.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 ED(e){return e.join(`.`)}function DD([e,t,n],[r,i,a]){return e-r||t-i||n-a}const OD=`@promptctl/cc-candybar`;async function kD(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`?TD(n.latest):Y}catch(e){return X(e instanceof Error?e.message:String(e))}}function AD(e,t){let n=TD(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=DD(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 jD(e,t){switch(t.kind){case`current`:return{stream:`stdout`,text:`✓ cc-candybar ${ED(t.installed)} is the latest release.\n`};case`ahead`:return{stream:`stdout`,text:`cc-candybar ${ED(t.installed)} is newer than the registry's latest release (${ED(t.latest)}): an unpublished build.\n`};case`stale`:{let n=ED(t.latest);return{stream:`stderr`,text:`⚠ cc-candybar ${ED(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 MD=`CCCandybarURLHandler`,ND=[],PD={"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 FD(e,t){return[e,...t].map(gD).join(` `)}function ID(){return c.join(m.homedir(),`Applications`,`${MD}.app`)}function LD(){if(process.platform!==`darwin`)throw Error(`URL handler installation requires macOS (found platform: ${process.platform}).`)}function RD(){if(process.platform===`darwin`)return c.join(m.homedir(),`Library`,`Application Support`,`CCCandybar`);let e=process.env.XDG_DATA_HOME??c.join(m.homedir(),`.local`,`share`);return c.join(e,`cc-candybar`)}function zD(){return c.join(RD(),`bin`,`cc-candybar`)}function BD(){return c.join(RD(),`dist`,`index.mjs`)}function VD(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(`
166
- `)}function HD(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 UD(t){let n=PD[`${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 WD(e,t){c.resolve(e)!==c.resolve(t)&&r.copyFileSync(e,t)}function GD(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 ${OD}@latest install`);return n.toString(`latin1`)===`#!`?`node-shim`:`native`}finally{r.closeSync(t)}}function KD(){let e=HD(process.argv[1]);if(!r.existsSync(e))throw Error(`install: bundled dist not found at ${e}. Reinstall the package.`);let t=UD(e);if(!r.existsSync(t.sourcePath))throw Error(`install: render entry not found at ${t.sourcePath}. Reinstall the package.`);r.mkdirSync(c.dirname(BD()),{recursive:!0}),r.mkdirSync(c.dirname(zD()),{recursive:!0}),WD(e,BD()),WD(t.sourcePath,zD()),r.chmodSync(zD(),493),r.rmSync(c.join(RD(),`url-handler.mjs`),{force:!0});let n=GD(zD());return process.stdout.write(`Staged cc-candybar v${pD} runtime at ${RD()}\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:zD(),distPath:BD(),entryKind:n}}function qD(){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>${PE}</string>`,` </array>`,` </dict>`,`</array>`].join(`
167
- `)}]}function JD(e){let t=ID();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=Ae({bin:`/usr/bin/osacompile`,args:[`-o`,t,`-e`,VD(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 qD())Ae({bin:`/usr/bin/plutil`,args:[`-remove`,e,i],category:`install.plutil`});for(let{key:e,xml:t}of qD()){let n=Ae({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 ${PE}:// with Launch Services\n`);let a=Ae({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(`✓ ${MD}.app installed and registered.\n`),process.stdout.write(` Test: open '${PE}://hello-world' && pbpaste\n`)}function YD(){LD(),JD(KD().distPath)}function XD(e,t=PE){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:RE,value:r}:{verb:decodeURIComponent(r.slice(0,i)),value:r.slice(i+1)}}async function ZD(e){e||(process.stderr.write(`url-handle: missing URL argument.
168
- `),process.exit(1));let t;try{t=XD(e)}catch(e){process.stderr.write(`url-handle: ${e instanceof Error?e.message:String(e)}\n`),process.exit(1)}let n=await JT(t.verb,t.value);n.kind===`ok`&&process.exit(0),n.kind===`transient`&&(gE(),process.stderr.write(`url-handle: daemon unavailable (${n.cause}: ${n.message})\n`),process.exit(1)),process.stderr.write(QD(n)+`
169
- `),process.exit(1)}function QD(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 $D(){return`✓ install complete.
162
+ Single-row example: root: { h: ["seg1", "seg2"] }`,line:U(e.source,[`layout`])}),t.root!==void 0&&(r.root=dd(e,`root`,t.root)),t.actions!==void 0&&(r.actions=YC(e,t.actions)),t.looks!==void 0&&e.issues.push({path:`looks`,message:`"looks" was renamed "styles" — move the block under styles: { … } (and globals.look to globals.style)`,line:U(e.source,[`looks`])}),t.styles!==void 0&&(r.styles=zw(e,t.styles)),t.presets!==void 0&&(r.presets=Vw(e,t.presets)),t.editGlobals!==void 0&&(r.editGlobals=Dl(e,`editGlobals`,t.editGlobals)),t.helpers!==void 0&&(r.helpers=Hw(e,t.helpers)),yd(e,r),B_(e,r),nv(e,r),Tu(e,r,K,`the global settings menu`),r}const MT=new Set([`globals`,`variables`,`segments`,`layout`,`looks`,`root`,`actions`,`styles`,`presets`,`editGlobals`,`helpers`]);function NT(e){let t=zT(e.termCols),n=zT(e.termRows),r=BT(e.ssh),i=LT(e.tmux),a=IT(e.configEnv),o=FT(e.claudeConfigDir),s=PT(e.mementoEnv);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},...o!==void 0&&{claudeConfigDir:o},...s!==void 0&&{mementoEnv:s}}}function PT(e){if(typeof e!=`object`||!e||Array.isArray(e))return;let t=e,n=Xe.filter(e=>t[e]!==void 0);return n.every(e=>FT(t[e])!==void 0)?Object.fromEntries(n.map(e=>[e,t[e]])):void 0}function FT(e){return typeof e==`string`&&c.isAbsolute(e)?e:void 0}function IT(e){return typeof e==`string`&&e!==``?hT(e):void 0}function LT(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 RT=1e4;function zT(e){if(typeof e!=`number`||!Number.isFinite(e))return;let t=Math.floor(e);if(!(t<=0))return t>RT?RT:t}function BT(e){return typeof e==`boolean`?e:void 0}var VT=class extends Error{constructor(e){super(e),this.name=`ProtocolError`}};function HT(e){let t=Buffer.from(JSON.stringify(e),`utf8`),n=Buffer.alloc(4);return n.writeUInt32BE(t.length,0),Buffer.concat([n,t])}function UT(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 VT(`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 VT(e instanceof Error?e.message:String(e));e instanceof Error&&(n.cause=e),t(n);return}}}}function WT(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=UT(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(HT(t))})}async function GT(e,t,n){let r=null;try{r=await XT(Le(),t.connectMs);let i=await WT(r,{v:3,...e},t.budgetMs);return JT(e.kind,i,n)}catch(e){return YT(e)}finally{r&&r.destroy()}}function KT(e,t){return typeof e==`string`?e:t}function qT(e){return typeof e==`number`&&Number.isInteger(e)&&e>=0?e:0}function JT(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=KT(r.error,`(no error message)`);switch(r.code){case`VERSION_MISMATCH`:return{kind:`permanent`,cause:`version_mismatch`,clientV:3,daemonV:qT(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 YT(e){if(e instanceof VT||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 XT(e,t){return new Promise((n,r)=>{let i=b.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 ZT(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 QT={connectMs:50,budgetMs:150},$T={connectMs:50,budgetMs:200};function eE(e){let t=e.output;return typeof t==`string`?t:void 0}function tE(e,t,n,r){return GT({kind:`render`,hookData:e,args:t,cwd:n,...r},QT,eE)}function nE(e,t){return GT({kind:`click`,verb:e,value:t},$T,eE)}let rE=null;function iE(e){if(rE!==null)return rE;r.mkdirSync(c.dirname(e),{recursive:!0});try{rE=r.statSync(e).size}catch{rE=0}return rE}function aE(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{}rE=0}function Q(e,t){let n=`${new Date().toISOString()} [${e}] ${t}\n`;try{let e=Ye(),t=iE(e);r.appendFileSync(e,n),rE=t+Buffer.byteLength(n,`utf8`),rE>=5242880&&aE(e)}catch(e){rE=null;try{process.stderr.write(`${n}cc-candybar: daemon.log unwritable: ${e.message}\n`)}catch{}}}function oE(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(`
163
+ `)}function sE(e,t){return e===`darwin`?[cE(`footprint`,[`-p`,String(t)]),cE(`vmmap`,[`--summary`,String(t)])]:e===`linux`?[lE(`/proc/self/smaps_rollup`),lE(`/proc/self/status`)]:[]}function cE(e,t){return{name:`${e} ${t.join(` `)}`,read:()=>{let n=Ae({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}`}${uE(n.stderr)}`}}}}function lE(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 uE(e){let t=e.split(`
164
+ `).map(e=>e.trim()).find(e=>e.length>0);return t===void 0?``:` (${t})`}const dE=`CC_CANDYBAR_RSS_LIMIT_MB`;function fE(e){let t=e[dE];if(t===void 0)return 512;let n=/^\d+$/.test(t)?Number(t):NaN;if(!Number.isSafeInteger(n)||n<=0)throw Error(`${dE} must be a positive integer (MB), got ${JSON.stringify(t)}`);return n}function pE(e){return fE(e)*2}const mE=1024*1024;function hE(e){return fE(e)*mE}const gE={memoryReport:{prefix:`memory-`,suffix:`.txt`},heapSnapshot:{prefix:`heap-`,suffix:`.heapsnapshot`}};function _E(e,t,n){let{prefix:r,suffix:i}=gE[t];return c.join(e,`${r}${n}${i}`)}function vE(e){for(let t of Object.keys(gE)){let{prefix:n,suffix:r}=gE[t];if(e.startsWith(n)&&e.endsWith(r))return t}return null}function yE(e){let t=e.rssLimitBytes??512*mE,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 bE(e.log,`memory report`,()=>{let t=_E(e.snapshotDir,`memoryReport`,o);e.writeMemoryReport(t,e.captureMemoryReport()),e.log(`info`,`memory report written: ${t}`)}),bE(e.log,`heap snapshot`,()=>{let t=_E(e.snapshotDir,`heapSnapshot`,o);e.log(`info`,`heap snapshot written: ${e.writeHeapSnapshot(t)}`)}),bE(e.log,`artifact rotation`,()=>{SE(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 bE(e,t,n){try{n()}catch(n){e(`warn`,`${t} failed: ${n.message}`)}}function xE(e){let t=e.slice(e.lastIndexOf(`/`)+1),n=vE(t);if(n===null)return t;let{prefix:r,suffix:i}=gE[n];return t.slice(r.length,t.length-i.length)}function SE(e,t,n){let r=new Map;for(let t of e){let e=xE(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 CE(e,t,n={}){let i=Ie();return{now:()=>Date.now(),pid:process.pid,snapshotDir:i,log:Q,memoryBytes:()=>{let e=process.memoryUsage();return{rss:e.rss,heapTotal:e.heapTotal}},captureMemoryReport:()=>oE(sE(process.platform,process.pid)),writeMemoryReport:(e,t)=>r.writeFileSync(e,t,{mode:384}),writeHeapSnapshot:e=>re.writeHeapSnapshot(e),listArtifacts:()=>{try{return r.readdirSync(i).filter(e=>vE(e)!==null).map(e=>c.join(i,e))}catch{return[]}},removeFile:e=>r.unlinkSync(e),shutdown:t,startedAtMs:e,...n}}function wE(e={}){if(BE()!==null)return;let n=e.spawn??VE,r=LE();if(r.kind===`contended`){let e=EE();e!==null&&e>2e3&&(t.stderr.write(`cc-candybar: spawn-lock held ${e}ms (likely crashed holder) — spawning unlocked\n`),TE(n));return}if(r.kind===`error`){t.stderr.write(`cc-candybar: spawn-lock unavailable (${r.reason}) — spawning unlocked\n`),TE(n);return}try{TE(n)}finally{zE()}}function TE(e){NE()&&DE(e)}function EE(){try{let e=r.statSync(Ge());return Date.now()-e.mtimeMs}catch{return null}}function DE(e){try{e()||t.stderr.write(`cc-candybar: daemon spawn returned false (unable to resolve script path?)
165
+ `)}catch(e){t.stderr.write(`cc-candybar: daemon spawn failed: ${e.message}\n`)}}function OE(e,t){return e===null?{kind:`allow`}:e<-1e4?{kind:`allow-future-garbage`,futureMs:-e}:e<t?{kind:`deny`}:{kind:`allow`}}function kE(e){return Math.min(3e3*2**Math.min(Math.max(e,0),5),6e4)}function AE(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 jE(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 ME(){try{r.unlinkSync(qe())}catch(e){e.code!==`ENOENT`&&t.stderr.write(`cc-candybar: could not reset spawn.backoff: ${e.message}\n`)}}function NE(){let e=Ke(),n=qe(),r=AE(n),i=OE(PE(e),kE(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`),FE(e),jE(n,Math.min(r+1,5)),!0)}function PE(e){try{return Date.now()-r.statSync(e).mtimeMs}catch{return null}}function FE(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 IE=null;function LE(){let e=Ge();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 IE={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(!RE(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 RE(e){try{let t=r.statSync(e);return Date.now()-t.mtimeMs>1e4}catch{return!0}}function zE(){if(!IE)return;let{fd:e,path:t}=IE;IE=null;try{r.closeSync(e)}catch{}try{r.unlinkSync(t)}catch{}}function BE(){try{return r.mkdirSync(Ie(),{recursive:!0}),null}catch(e){return`mkdir ${Ie()}: ${e.message}`}}function VE(){let e=t.execPath,n=t.argv[1];return n?je({bin:e,args:[`--max-old-space-size=${pE(t.env)}`,n,`daemon`],category:`daemon-spawn`}).ok:!1}const HE=`cc-candybar`,UE=`dispatch`,WE=`set-state`,GE=`step-state`,KE=`copy`,qE=`open-vscode`,JE=`toolbar-toggle`,YE=`show-config-error`,XE=`show-config-warning`,ZE=`set-config`,QE=`step-config`,$E=`save`,eD=`save-preset`,tD=`delete-preset`,nD=`reset-config`,rD=`apply-layout-op`,iD=`undo`,aD=`redo`,oD=`back`,sD=`rewind`,cD=`apply-update`,lD=`doctor-run`,uD=`doctor-fix`,dD=`ceiling`,fD=`slash`;function pD(e){return e.map(encodeURIComponent).join(`/`)}function mD(e){return e.length===0?[]:e.split(`/`).map(decodeURIComponent)}function hD(e){return`${HE}://${UE}/${e.map(e=>`e=${encodeURIComponent(`${e.verb}/${pD(e.args)}`)}`).join(`&`)}`}function gD(e){return new ie(e).getAll(`e`).map(bD)}const _D=new Set([WE,nD]);function vD(e){return e.reduce((e,t)=>{let n=e.at(-1),r=n&&yD(n,t);return r?[...e.slice(0,-1),r]:[...e,t]},[])}function yD(e,t){if(e.verb!==t.verb||!_D.has(e.verb))return;let[n,r]=[bD(e.value),bD(t.value)];return n.verb===r.verb?{verb:e.verb,value:`${n.verb}/${n.value}/${r.value}`}:void 0}function bD(e){let t=e.indexOf(`/`);return t===-1?{verb:e,value:``}:{verb:e.slice(0,t),value:e.slice(t+1)}}const xD=`1.111.0`,SD=/^[A-Za-z0-9_./,:@%+-][A-Za-z0-9_./,:@%+=-]*$/;function CD(e){return`'${e.replaceAll(`'`,`'\\''`)}'`}function wD(e){return SD.test(e)?e:CD(e)}function TD(e,t){let n=(e.CLAUDE_CONFIG_DIR??``).split(`,`)[0].trim();return n===``?void 0:c.resolve(t,n)}function ED(e){return e??c.join(m.homedir(),`.claude`)}function DD(e){return c.join(e,`settings.json`)}function OD(e){return c.join(e,`plugins`,`installed_plugins.json`)}function kD(e){return r.existsSync(e)?r.readFileSync(e,`utf8`):``}function AD(e){let t;try{let n=kD(e);if(/^\s*$/.test(n))return{};t=qo.parse(n)}catch(t){throw Error(`cannot read ${e}: ${jD(t)}`,{cause:t})}if(typeof t!=`object`||!t||Array.isArray(t))throw Error(`cannot read ${e}: not a JSON object`);return t}const jD=e=>e instanceof Error?e.message:String(e),MD=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/;function ND(e){let t=MD.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 PD(e){return e.join(`.`)}function FD([e,t,n],[r,i,a]){return e-r||t-i||n-a}const ID=`@promptctl/cc-candybar`;async function LD(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`?ND(n.latest):Y}catch(e){return X(e instanceof Error?e.message:String(e))}}function RD(e,t){let n=ND(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=FD(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 zD(e,t){switch(t.kind){case`current`:return{stream:`stdout`,text:`✓ cc-candybar ${PD(t.installed)} is the latest release.\n`};case`ahead`:return{stream:`stdout`,text:`cc-candybar ${PD(t.installed)} is newer than the registry's latest release (${PD(t.latest)}): an unpublished build.\n`};case`stale`:{let n=PD(t.latest);return{stream:`stderr`,text:`⚠ cc-candybar ${PD(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 BD=`CCCandybarURLHandler`,VD=[],HD={"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 UD(e,t){return[e,...t].map(wD).join(` `)}function WD(){return c.join(m.homedir(),`Applications`,`${BD}.app`)}function GD(){if(process.platform!==`darwin`)throw Error(`URL handler installation requires macOS (found platform: ${process.platform}).`)}function KD(){if(process.platform===`darwin`)return c.join(m.homedir(),`Library`,`Application Support`,`CCCandybar`);let e=process.env.XDG_DATA_HOME??c.join(m.homedir(),`.local`,`share`);return c.join(e,`cc-candybar`)}function qD(){return c.join(KD(),`bin`,`cc-candybar`)}function JD(){return c.join(KD(),`dist`,`index.mjs`)}function YD(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(`
166
+ `)}function XD(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 ZD(t){let n=HD[`${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 QD(e,t){c.resolve(e)!==c.resolve(t)&&r.copyFileSync(e,t)}function $D(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 ${ID}@latest install`);return n.toString(`latin1`)===`#!`?`node-shim`:`native`}finally{r.closeSync(t)}}function eO(){let e=XD(process.argv[1]);if(!r.existsSync(e))throw Error(`install: bundled dist not found at ${e}. Reinstall the package.`);let t=ZD(e);if(!r.existsSync(t.sourcePath))throw Error(`install: render entry not found at ${t.sourcePath}. Reinstall the package.`);r.mkdirSync(c.dirname(JD()),{recursive:!0}),r.mkdirSync(c.dirname(qD()),{recursive:!0}),QD(e,JD()),QD(t.sourcePath,qD()),r.chmodSync(qD(),493),r.rmSync(c.join(KD(),`url-handler.mjs`),{force:!0});let n=$D(qD());return process.stdout.write(`Staged cc-candybar v${xD} runtime at ${KD()}\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:qD(),distPath:JD(),entryKind:n}}function tO(){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>${HE}</string>`,` </array>`,` </dict>`,`</array>`].join(`
167
+ `)}]}function nO(e){let t=WD();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=Ae({bin:`/usr/bin/osacompile`,args:[`-o`,t,`-e`,YD(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 tO())Ae({bin:`/usr/bin/plutil`,args:[`-remove`,e,i],category:`install.plutil`});for(let{key:e,xml:t}of tO()){let n=Ae({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 ${HE}:// with Launch Services\n`);let a=Ae({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(`✓ ${BD}.app installed and registered.\n`),process.stdout.write(` Test: open '${HE}://hello-world' && pbpaste\n`)}function rO(){GD(),nO(eO().distPath)}function iO(e,t=HE){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:KE,value:r}:{verb:decodeURIComponent(r.slice(0,i)),value:r.slice(i+1)}}async function aO(e){e||(process.stderr.write(`url-handle: missing URL argument.
168
+ `),process.exit(1));let t;try{t=iO(e)}catch(e){process.stderr.write(`url-handle: ${e instanceof Error?e.message:String(e)}\n`),process.exit(1)}let n=await nE(t.verb,t.value);n.kind===`ok`&&process.exit(0),n.kind===`transient`&&(wE(),process.stderr.write(`url-handle: daemon unavailable (${n.cause}: ${n.message})\n`),process.exit(1)),process.stderr.write(oO(n)+`
169
+ `),process.exit(1)}function oO(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 sO(){return`✓ install complete.
170
170
  Restart Claude Code to pick up the new statusline.
171
- Tip: every bar carries a settings menu — click it (${Uc} by\n default) for quick actions, preset switching, edit mode, and clickable\n theme/style/variation/endcaps/wrap/padding controls.\n`}async function eO(e){let t=e.includes(`--force`),n=e.filter(e=>e!==`--force`),r=n.length>0?n:[...ND],i=KD();process.platform===`darwin`?JD(i.distPath):process.stdout.write(`Skipping URL handler (cmd-click verbs are macOS-only).
172
- `),tO(i.binPath,r,t),process.stdout.write($D());let a=jD(OD,AD(pD,await kD(OD,fetch,`https://registry.npmjs.org`)));process[a.stream].write(a.text)}function tO(e,t,n,i){let a=i??yD(vD(_D(process.env,process.cwd())));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,gD(e),hD(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:FD(e,t)},Me(a,JSON.stringify(o,null,2)),process.stdout.write(`Updated ${a}\n`)}function nO(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 rO(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 iO(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 aO(e,t){let n=rO(e);if(n.kind===`owned`&&n.pid===t)try{r.unlinkSync(e)}catch{}}function oO(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 sO(e,t,n,r){let i=cO(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 cO(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 lO(e){let t=!1;function n(){let n=sO(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 uO(e,t=Ae){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 dO(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 fO(e,t=uO){let n=t(e);return n.kind===`start`?n.token:null}const pO=`CC_CANDYBAR_PARENT_PID`;function mO(e){let t=e[pO];if(t===void 0)return{kind:`outlives-nobody`};let n=Number.parseInt(t,10);if(!Number.isInteger(n)||n<=0)throw Error(`${pO} must be a positive integer pid, got ${JSON.stringify(t)}`);return{kind:`anchored`,pid:n}}function hO(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 gO(e){try{return t.kill(e,0),!0}catch(e){return e.code===`EPERM`}}function _O(){let e=Number(process.env.CC_CANDYBAR_DAEMON_CEILING??``);return Number.isInteger(e)&&e>0?e:16}function vO(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 yO(e){try{return r.readdirSync(e).filter(e=>e.endsWith(`.json`)).map(t=>c.join(e,t))}catch{return[]}}function bO(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 xO(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 SO(e){if(!e.isolated)return{decision:vO(!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=vO(!0,xO(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 CO(e,t,n,r){let i=n(e);if(i!==null&&i.pid===t)try{r(e)}catch{}}function wO(e,t={}){return{isolated:!!process.env.CC_CANDYBAR_SOCKET,registryDir:We(),ceiling:_O(),pid:process.pid,startTime:e,isSameLiveProcess:(e,t)=>dO(e,t,{readStartTime:uO,pidAlive:gO}),listFiles:yO,readEntry:bO,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?Re:e=>{Re(c.dirname(e)),Re(e)},...t}}function TO(e){return e<32||e===127||e>=128&&e<=159}function EO(e){let t=``;for(let n of e)t+=TO(n.codePointAt(0)??0)?` `:n;return t.replace(/\s+/g,` `).trim()}function DO(e,t){let n=EO(e),r=``,i=0;for(let e of n){if(i===t)return r.replace(/.$/u,`…`);r+=e,i++}return r}const OO=`\x1B[38;2;255;255;255m`,kO=`\x1B[48;2;200;40;40m`;function AO(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 jO={fg:AO(OO),bg:AO(kO)},MO={fg:AO(`\x1B[38;2;0;0;0m`),bg:AO(`\x1B[48;2;220;160;40m`)},NO={unicode:Bi,ascii:{glyph:`>`,divider:`|`,lead:`<`,tail:`>`}},PO={unicode:{},ascii:{left:`(`,right:`)`}};function FO(e,t,n){switch(e){case`capsule`:return new Ki(PO[t]);case`plain`:return new qi(n===void 0?{}:{separator:n});case`powerline`:return new Ui(NO[t]);default:return e}}const IO=new Map;function LO(e){let t=JSON.stringify([e.endcaps,e.charset,e.separator??null]),n=IO.get(t);if(n!==void 0)return n;let r=FO(e.endcaps,e.charset,e.separator),i=e=>new V(`x`,{end:``,overflow:`ignore`,style:new z({bgcolor:e})}),a=e=>new V(Xi(new H(e,r),{colorSystem:null}).replace(/\n$/,``)).cellLength,o=a([i(`#101010`)]),s={chrome:o-1,seam:a([i(`#101010`),i(`#202020`)])-o-1};return IO.set(t,s),s}function RO(e){return LO(e).chrome}function zO(e){return LO(e).seam}function BO(e,t){if(e.length===0)return``;let n=FO(t.endcaps,t.charset,t.separator),r=t.colorCompatibility,i=t.wrap&&Number.isFinite(t.width)?Xi(new na([...e],{joiner:n}),{width:t.width,colorSystem:r}):Xi(new H([...e],n),{colorSystem:r});if(!i.endsWith(`
173
- `))throw Error(`renderStripCells: rich-js strip output did not end its last line`);return i.slice(0,-1)}function VO(e){return Math.min(20,e??20)}const HO={heading:`ERROR`,glyph:`⚠`,colors:jO},UO={heading:`WARNING`,glyph:`⚠`,colors:MO},WO={heading:`UPDATE`,glyph:`⬆`,colors:MO};function GO(e,t){return{text:EO(e),link:t}}function KO(e,t,n){let[r,...i]=[qO(e,HO,VE),t,qO(n,UO,HE)].flat();return r===void 0?null:{channels:[r,...i]}}function qO(e,t,n){let r=sD([{verb:n,args:[e]}]),[i,...a]=e.split(/\r\n|\r|\n/).map(e=>GO(e,r)).filter(e=>e.text!==``).map(e=>[e]);return i===void 0?[]:[{severity:t,message:e,lines:[i,...a]}]}function JO(e){return e.channels.map(e=>`${e.severity.heading}\n${e.message}\n`).join(`
174
- `)}function YO(e,t,n,r){if(t===null)return e;let i=XO(r),a=t.channels.flatMap(e=>ZO(e,i)),o=n.failedConfigFile!==null||a.length>r.rowCap,s=a.slice(0,r.rowCap-Number(o)),c=o?[QO(t,n,a.length-s.length,i)]:[],l=[...s,...c].join(`
175
- `);return e?`${l}\n${e}`:l}function XO(e){return{endcaps:`plain`,separator:``,width:e.width,wrap:!0,padding:0,charset:`unicode`,colorCompatibility:e.colorCompatibility}}function ZO(e,t){let n=new z({bgcolor:e.severity.colors.bg,color:e.severity.colors.fg}),r=Vt(Math.max(2,t.width-1)),i=(e,t)=>new V(`${e} `,{style:t,end:``,overflow:`ignore`});return e.lines.flatMap((a,o)=>BO([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=>Wt(e,r)).map(e=>i(e,t))})],t).split(`
176
- `))}function QO(e,t,n,r){let{colors:i}=e.channels[0].severity,{fullText:a,failedConfigFile:o}=t,s=new z({bgcolor:i.bg,color:i.fg}),c=(e,t)=>new V(e,{style:t,end:``,overflow:`ignore`}),l=n>0?[c(`${n} more rows · `,s),a.kind===`file`?c(`open full text`,s.withLink(E(a.path).href)):c(`full text unavailable: ${EO(a.reason)}`,s)]:[],u=o===null?[]:[c(`${l.length>0?` · `:``}open `,s),c(EO(o),s.withLink(E(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=V.fromFragments([...d,...p]).truncate(r.width);return m.overflow=`ignore`,BO([m],r)}const $O=e=>!e.startsWith(`.`)&&!e.endsWith(`~`);function ek(e,t){return t.isSymbolicLink()?Buffer.from(r.readlinkSync(e)):r.readFileSync(e)}function tk(e,t){return r.readdirSync(t).filter($O).sort().flatMap(n=>{let i=c.join(t,n),a=r.lstatSync(i,{throwIfNoEntry:!1});return a===void 0?[]:a.isDirectory()?tk(e,i):[[c.relative(e,i).split(c.sep).join(`/`),ek(i,a)]]})}function nk(e){let t=ae.createHash(`sha256`);for(let[n,r]of tk(e,e))t.update(n).update(`\0`).update(r).update(`\0`);return t.digest(`hex`)}const rk=e=>e.slice(0,7);function ik(e){return c.dirname(c.dirname(e))}function ak(){return{version:pD,digest:`a89d9c0b5a5ff99dd366040ae82b25e6f9434ac97fefa26e765a6c06fdc23dfb`}}function ok(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 sk(e,t){try{let n=ik(T(e)),i=c.join(n,`src`);if(!r.existsSync(i))return{kind:`not-source-checkout`};let a=t(),o=nk(i);return o===a.digest?{kind:`current`,root:n,stamp:a}:{kind:`stale`,root:n,source:{version:ok(n),digest:o},running:a}}catch(e){return{kind:`unchecked`,reason:e.message}}}var $=class extends Error{constructor(e){super(e),this.name=`BadVerbArgs`}};function ck(e){return e.op===`remove`?`remove:${e.target}`:`insert:${e.segment}:${e.anchor}:${e.relation}`}function lk(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 uk(e,t,n){let r=ks(e,new Set(n.map(Os).filter(e=>e.includes(t)).flat()));return r===e?{seg:e}:{seg:e,id:r}}const dk=/^-?\d+$/;function fk(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 pk(e){return t=>{if(!t)return{ok:!1,reason:`${e} value is required`};if(!dk.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 mk(e,t,n){return r=>r?dk.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 hk(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=>!dk.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}}return{kind:`int`}}function gk(e){return e===`config`?`set-config`:`set-state`}function _k(e,t,n){return t.kind===`int`?pk(`menu page "${e}"`):t.kind===`range`?mk(t.min,t.max,`${n} stepper "${e}"`):fk(t.allowed,`${n} "${e}"`,gk(n))}function vk(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:hk(e,n,t)}))}function yk(e,t,n,r){let i=new Map(Object.entries(e)),a=new Map,o=new Set(t.map(e=>e.key));for(let{key:e,spec:t}of n)if(o.has(e)&&t.kind!==`allow-list`)throw Error(`${r} gate: key "${e}" is written by the daemon's own links as one of a list of values, and cannot be declared as ${t.kind===`int`?`a paged cursor (int)`:`a bounded value (range)`}. Use a distinct key.`);let s=[...t.map(({key:e,allowed:t})=>({key:e,spec:{kind:`allow-list`,allowed:t}})),...n];for(let{key:t,spec:n}of vk(s,r)){if(!t)throw Error(`${r} gate: key is required`);if(t.includes(`/`))throw Error(`${r} gate: key "${t}" contains "/" — the wire shape splits on "/" so a slash-bearing key cannot be addressed. Use a slash-free key.`);if(Object.hasOwn(e,t))throw Error(`${r} gate: key "${t}" is a built-in ${r} key and cannot be re-claimed (built-in keys: ${Object.keys(e).join(`, `)})`);i.set(t,_k(t,n,r)),n.kind===`range`&&a.set(t,{min:n.min,max:n.max})}return{validate(e,t){let n=i.get(e);return n?n(t):{ok:!1,reason:`unknown ${r} key "${e}" (have: ${[...i.keys()].join(`, `)})`}},listKeys:()=>[...i.keys()],rangeParamsFor:e=>a.get(e)??null}}function bk(e,t,n){let r=[],i=0,a=new WeakMap;return{register(n,a){let o={key:n,allowed:a};yk(e,[o],[],t),r.push(o),i++;let s=!0;return()=>{s&&(s=!1,r.splice(r.indexOf(o),1),i++)}},gateFor(o){let s=a.get(o);if(s?.epoch===i)return s.gate;let c=yk(e,r,n(o),t);return a.set(o,{epoch:i,gate:c}),c}}}const xk=bk({},`config`,Ok);function Sk(e,t){return xk.register(e,t)}function Ck(e){return xk.gateFor(e)}function wk(e,t){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:Zb(e.from,t).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:[ck({op:`remove`,target:e.removeSegment})]}}]:`insertSegment`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:[ck({op:`insert`,segment:e.insertSegment,anchor:e.anchor,relation:e.relation})]}}]:`insertSegmentFrom`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:Zb(e.insertSegmentFrom,t).members.map(t=>ck({op:`insert`,segment:t,anchor:e.anchor,relation:e.relation}))}}]:[{key:e.persist,spec:{kind:`range`,min:e.min,max:e.max}}]:[]}function Tk(e,t){let n=kl(e).get(t);return n===void 0?null:String(n)}function Ek(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?ox(n.persist):null;e?.scope===`preset-root`&&t.add(ix(e.preset))}return[...t].map(e=>({key:e,spec:{kind:`allow-list`,allowed:[]}}))}function Dk(e){let t=new Map([...Yb(e),...xC(e)]);return[...Ek(e),...Object.values(e.actions).flatMap(e=>wk(e,t))]}function Ok(e){return vk(Dk(e),`config`)}const kk=Array.from({length:10},(e,t)=>(t+1)*1e5),Ak=kk[0],jk=kk[kk.length-1];function Mk(e){let t;try{t=SD(e)}catch(e){return X(e instanceof Error?e.message:String(e))}let n=t.autoCompactWindow;return n===void 0?J(`auto`):typeof n==`number`&&Number.isInteger(n)&&n>=Ak&&n<=jk?J(n):X(`${e}: autoCompactWindow is ${JSON.stringify(n)}, not a window /autocompact accepts (${Ak}–${jk} tokens)`)}function Nk(e,t){let n=Math.min(t??jk,jk),r=e===`auto`?n:Math.min(e,n);return{window:e===`auto`?0:e,applied:e===`auto`?0:r,lower:kk.filter(e=>e<r).at(-1)??0,higher:kk.find(e=>e>r&&e<=n)??0}}const Pk=Vx(`commands.`),Fk=`trimPrefix "/" (trimPrefix .project_dir .current_dir)`,Ik=`{{ \$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 (${Fk}) (basename .project_dir) (ne (${Fk}) "") }}{{ end }}{{ end }}{{ abbreviatePath \$dir }}`,Lk=`{{ ${yx} }}`,Rk={min:0,max:100,step:5},zk={warnAt:{label:`warning at %`,domain:Rk,default:50},errorAt:{label:`error at %`,domain:{...Rk,atLeast:`warnAt`},default:80}};function Bk(e){return{budget:{label:`budget $`,domain:{min:0,max:1e4,step:5},default:e},warnAt:{label:`warning at %`,domain:Rk,default:80}}}const Vk={globals:{palette:`tokyo-night`},variables:{...Pk.variables,...Tb,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},"today.cost":{kind:`input`,path:`today.cost`,type:`number`,default:0},"today.tokens":{kind:`input`,path:`today.tokens`,type:`number`,default:0},"block.nativeUtilization":{kind:`input`,path:`block.nativeUtilization`,type:`number`,default:0},"block.resetsAt":{kind:`input`,path:`block.resetsAt`,type:`number`,default:0},"weekly.percentage":{kind:`input`,path:`weekly.percentage`,type:`number`,default:0},"weekly.resetsAt":{kind:`input`,path:`weekly.resetsAt`,type:`number`,default:0},"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},"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},"memento.ceiling":{kind:`input`,path:`memento.ceiling`,type:`number`,default:-1},"memento.off":{kind:`input`,path:`memento.off`,type:`boolean`,default:!1},"memento.session":{kind:`input`,path:`memento.session`,default:``},"memento.error":{kind:`input`,path:`memento.error`,default:``},"autocompact.window":{kind:`input`,path:`autocompact.window`,type:`number`,default:-1},...Object.fromEntries([`applied`,`lower`,`higher`].map(e=>[`autocompact.${e}`,{kind:`input`,path:`autocompact.${e}`,type:`number`,default:0}])),"autocompact.error":{kind:`input`,path:`autocompact.error`,default:``},"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:{group:`location`,description:"The current directory, shortened fish-style — `~` under home, project-relative inside the project.",template:Ik},model:{group:`model-context`,description:`The active model's display name.`,template:`✱ {{ formatModelName .model.display_name }}`,when:`{{ ne .model.display_name "" }}`},sessionId:{group:`session-tools`,description:`The session id, truncated to 8 characters.`,template:`⌗{{ trunc 8 .session.id }}`,when:`{{ ne .session.id "" }}`},version:{group:`model-context`,description:`The Claude Code version reported in the hook payload.`,template:`◈ v{{ .version }}`,when:`{{ ne .version "" }}`},tmux:{group:`location`,description:`The tmux session name; hidden when not inside tmux.`,template:`tmux:{{ .tmux.session | default "none" }}`,when:`{{ ne .tmux.session "" }}`},host:{group:`location`,description:`user@host on a warning background, shown only over SSH.`,template:`⇄ {{ .host.user | default "?" }}@{{ .host.name | default "?" }}`,bg:`warning`,when:`{{ .host.ssh }}`},gitaculous:{group:`git`,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:Lk,when:`{{ ne .git.branch "" }}`,settings:{aheadBehind:{label:`ahead/behind`,domain:`bool`,default:!0},flags:{label:`dirty flags`,domain:`bool`,default:!0},operation:{label:`operation`,domain:`bool`,default:!0},repo:{label:`repo name`,domain:`bool`,default:!0},sha:{label:`commit hash`,domain:`bool`,default:!0},stash:{label:`stash`,domain:`bool`,default:!0},upstream:{label:`upstream`,domain:`bool`,default:!0},age:{label:`time since commit`,domain:`bool`,default:!0}}},gitPr:{group:`git`,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:{group:`session-tools`,description:`Quick actions: copy the session id, and open the project, transcript or repo.`,template:Ax(``).template},commands:{group:`session-tools`,description:`Type /compact, /model or /clear into this session; /clear asks for a second click.`,template:Pk.template},themeSwitcher:{group:`session-tools`,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:{group:`cost-limits`,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" .settings.budget "warn" .settings.warnAt) }}`,settings:Bk(0)},today:{group:`cost-limits`,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" .settings.budget "warn" .settings.warnAt) }}`,settings:Bk(50)},block:{group:`cost-limits`,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) .settings.warnAt "warning" .settings.errorAt "error" }}`,settings:zk,when:`{{ gt .block.resetsAt 0 }}`},weekly:{group:`cost-limits`,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) .settings.warnAt "warning" .settings.errorAt "error" }}`,settings:zk,when:`{{ gt .weekly.resetsAt 0 }}`},burnrate:{group:`cost-limits`,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" .settings.errorWithin "warning" .settings.warnWithin (tint) }}`,settings:{errorWithin:{label:`error within (min)`,domain:{min:0,max:300,step:5},default:30},warnWithin:{label:`warning within (min)`,domain:{min:0,max:300,step:5,atLeast:`errorWithin`},default:60}},when:`{{ or (gt .block.resetsAt 0) (gt .weekly.resetsAt 0) }}`},speed:{group:`activity`,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:{group:`activity`,description:`A sparkline of recent token throughput.`,template:`⚡ {{ sparkline .speed.history 24 }}`,when:`{{ ne .speed.history "" }}`},cacheTimer:{group:`activity`,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) ${Oa} }}`,when:`{{ gt .cache.expiresAt 0 }}`},context:{group:`model-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 }}`},ceiling:{group:`model-context`,description:`The memento plugin's context ceiling for this session: − and + move it by 100K, ∞ lifts it, ↺ drops this session's own setting.`,template:`{{ if ne .memento.error "" }}⌈ ⚠ {{ .memento.error }} {{ action "ceiling.clear" "↺" }}{{ else }}⌈ {{ if .memento.off }}off{{ else }}{{ template "formatTokenCount" .memento.ceiling }} {{ action "ceiling.lower" "−" }} {{ action "ceiling.raise" "+" }} {{ action "ceiling.off" "∞" }}{{ end }}{{ if ne .memento.session "" }} {{ action "ceiling.clear" "↺" }}{{ end }}{{ end }}`,bg:`{{ if ne .memento.error "" }}{{ color "error" }}{{ else }}{{ tint }}{{ end }}`,when:`{{ or (ge .memento.ceiling 0) (ne .memento.error "") }}`},autocompact:{group:`model-context`,description:`Claude Code's auto-compact window: − and + move it by 100K, ↺ returns it to auto. Clicks type /autocompact into this session.`,template:`{{ if ne .autocompact.error "" }}⇲ ⚠ {{ .autocompact.error }}{{ else }}⇲ {{ if eq .autocompact.window 0 }}auto{{ else }}{{ template "formatTokenCount" .autocompact.applied }}{{ end }}{{ if gt .autocompact.lower 0 }} {{ action (printf "autocompact.%d" .autocompact.lower) "−" }}{{ end }}{{ if gt .autocompact.higher 0 }} {{ action (printf "autocompact.%d" .autocompact.higher) "+" }}{{ end }}{{ if gt .autocompact.window 0 }} {{ action "autocompact.auto" "↺" }}{{ end }}{{ end }}`,bg:`{{ if ne .autocompact.error "" }}{{ color "error" }}{{ else }}{{ tint }}{{ end }}`,when:`{{ or (ge .autocompact.window 0) (ne .autocompact.error "") }}`},metrics:{group:`activity`,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:{group:`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:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`context`},{kind:`segment`,name:`ceiling`},{kind:`segment`,name:`autocompact`}]},{kind:`segment`,name:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`activity`}]}}},actions:{...Ax(``).actions,...Pk.actions,copyDir:{copy:`{{ .current_dir }}`},stepTheme:{set:`theme`,from:`themes`},gitDetail:{set:`git-detail`,cycle:[`collapsed`,`expanded`]},"ceiling.raise":{ceiling:`set`,to:`+100_000`},"ceiling.lower":{ceiling:`set`,to:`-100_000`},"ceiling.off":{ceiling:`set`,to:`off`},"ceiling.clear":{ceiling:`clear`},"autocompact.auto":{slash:Rx(`/autocompact auto`)},...Object.fromEntries(kk.map(e=>[`autocompact.${e}`,{slash:Rx(`/autocompact ${e}`)}]))},styles:{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:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`context`},{kind:`segment`,name:`ceiling`},{kind:`segment`,name:`autocompact`}]},{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`}]}]}},zen:{root:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`directory`},{kind:`segment`,name:`context`}]},globals:{endcaps:`plain`,style:`dim`}},git:{root:{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`host`},{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:`activity`}]}]}},usage:{root:{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`context`},{kind:`segment`,name:`ceiling`},{kind:`segment`,name:`autocompact`}]},{kind:`segment`,name:`cacheTimer`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`burnrate`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`session`},{kind:`segment`,name:`today`},{kind:`segment`,name:`speed`},{kind:`segment`,name:`tokenSparkline`}]}]}},dense:{root:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`host`},{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`segment`,name:`model`},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`context`},{kind:`segment`,name:`ceiling`},{kind:`segment`,name:`autocompact`}]},{kind:`segment`,name:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`session`},{kind:`segment`,name:`activity`}]},globals:{padding:0}}},editGlobals:{endcaps:`plain`,default_separator:` | `},helpers:{gitPaint:`{{ fg (readableOn (color .color) (bgOf) ${Oa}) .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 and .settings.repo (ne .git.repoName "") }} {{ .git.repoName }}{{ end }}`,gitOperation:`{{ if and .settings.operation (ne .git.operation "") }} [{{ .git.operation }}]{{ end }}`,gitSha:`{{ if and .settings.sha (ne .git.sha "") }} {{ .git.sha }}{{ end }}`,gitFlags:`{{ if and .settings.flags (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 and .settings.aheadBehind (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 and .settings.upstream (ne .git.upstream "") }} [{{ .git.upstream }}{{ template "gitAheadBehind" . }}]{{ end }}`,gitStash:`{{ if and .settings.stash (gt .git.stash 0) }} {{ template "gitPaint" (dict "color" .git.color.stash "text" (printf "(%v stashed)" .git.stash)) }}{{ end }}`,gitAge:`{{ if and .settings.age (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 .)) }}`}},Hk=new Set([Vk.globals.palette,...Object.values(Vk.segments).map(e=>e.palette)].filter(e=>e!==void 0)),Uk=Rc(yT(`<default>`,JSON.stringify(Vk),Hk),Vk),Wk=C_(Uk.presets);function Gk(e){return Wk.includes(e)}function Kk(e){if(!e)return 0;try{return o(e).mtimeMs}catch{return 0}}const qk=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 Jk(e){return((...t)=>qk.run(()=>e(...t)))}const Yk=Jk(C),Xk=Jk(S),Zk=Jk(ee);async function Qk(e,t){return qk.run(async()=>{let n=null;try{n=await x(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 $k(e,t){return qk.run(async()=>{let n=null;try{n=await x(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 eA=/"(?:cache_read_input_tokens|cache_creation_input_tokens)":[1-9]/;function tA(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 nA(e){let t=await rA(e);return t.kind===`ok`?J(Math.floor((t.value+36e5)/1e3)):t}async function rA(e){for(let t of[65536,1048576]){let n=await $k(e,t);if(n.kind!==`ok`)return n;let r=iA(n.value.buf,n.value.fromStart);if(r!=null)return J(r);if(n.value.fromStart)return Y}return Y}function iA(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||!eA.test(t))continue;let r=tA(t);if(r!=null)return r}return null}function aA(e,t){return{...e,claudeConfigDir:vD(t.claudeConfigDir),env:t.mementoEnv}}const oA=c.join(`lib`,`ceiling_config.py`),sA=c.join(`skills`,`ceiling`,`bin`,`ceiling`);function cA(e,t){let n=typeof e==`object`&&e?e.plugins:void 0;if(typeof n!=`object`||!n)throw Error(`${t} has no "plugins" object`);return Object.entries(n).filter(([e])=>e.split(`@`)[0]===`memento`).flatMap(([e,n])=>{if(!Array.isArray(n))throw Error(`${t}: "${e}" is not a list of installs`);return n.map(n=>{let{scope:r,installPath:i,projectPath:a}=n??{};if(typeof r!=`string`||typeof i!=`string`)throw Error(`${t}: an install of "${e}" has no scope/path`);return typeof a==`string`?{key:e,scope:r,installPath:i,projectPath:a}:{key:e,scope:r,installPath:i}})})}function lA(e,t){let n=!0;for(let i of e){if(!r.existsSync(i))continue;let e;try{e=JSON.parse(r.readFileSync(i,`utf8`))?.enabledPlugins?.[t]}catch(e){return X(`memento lookup: ${i}: ${e.message}`)}typeof e==`boolean`&&(n=e)}return J(n)}function uA(e,t){if(!r.existsSync(e))return Y;let n;try{n=cA(JSON.parse(r.readFileSync(e,`utf8`)),e)}catch(e){return X(`memento lookup: ${e.message}`)}let i=n.find(e=>e.projectPath===t)??n.find(e=>e.scope===`user`);if(i===void 0)return Y;let a=lA([c.join(c.dirname(c.dirname(e)),`settings.json`),c.join(t,`.claude`,`settings.json`),c.join(t,`.claude`,`settings.local.json`)],i.key);if(a.kind!==`ok`)return a;if(!a.value)return Y;let o=[oA,sA].filter(e=>!r.existsSync(c.join(i.installPath,e)));return o.length===0?J(i.installPath):X(`memento at ${i.installPath} has no ${o.join(` or `)} — upgrade the plugin`)}function dA(e,t=process.env){let n=new Set([`CLAUDE_PROJECT_DIR`,`CLAUDE_CODE_SESSION_ID`,...e.env===void 0?[]:Xe]);return{...Object.fromEntries(Object.entries(t).filter(([e])=>!n.has(e))),...e.env,CLAUDE_CODE_SESSION_ID:e.sessionId,CLAUDE_PROJECT_DIR:e.projectDir||e.cwd}}function fA(e){return e.stderr.trim()||e.error||`${e.reason}${e.exitCode===null?``:` (exit ${e.exitCode})`}`}function pA(e){let t;try{t=JSON.parse(e)}catch{return X(`memento read: not JSON: ${e.trim()}`)}let{ceiling:n,session:r}=t??{},i=n===`off`||typeof n==`number`&&n>=0?n:void 0;return i!==void 0&&(r===null||typeof r==`string`)?J({ceiling:i,session:r}):X(`memento read: unexpected answer: ${e.trim()}`)}async function mA(e,t){let n=await ke({bin:`python3`,args:[`-c`,`
171
+ Tip: every bar carries a settings menu — click it (${Gc} by\n default) for quick actions, preset switching, edit mode, and clickable\n theme/style/variation/endcaps/wrap/padding controls.\n`}async function cO(e){let t=e.includes(`--force`),n=e.filter(e=>e!==`--force`),r=n.length>0?n:[...VD],i=eO();process.platform===`darwin`?nO(i.distPath):process.stdout.write(`Skipping URL handler (cmd-click verbs are macOS-only).
172
+ `),lO(i.binPath,r,t),process.stdout.write(sO());let a=zD(ID,RD(xD,await LD(ID,fetch,`https://registry.npmjs.org`)));process[a.stream].write(a.text)}function lO(e,t,n,i){let a=i??DD(ED(TD(process.env,process.cwd())));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,wD(e),CD(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:UD(e,t)},Me(a,JSON.stringify(o,null,2)),process.stdout.write(`Updated ${a}\n`)}function uO(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 dO(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 fO(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 pO(e,t){let n=dO(e);if(n.kind===`owned`&&n.pid===t)try{r.unlinkSync(e)}catch{}}function mO(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 hO(e,t,n,r){let i=gO(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 gO(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 _O(e){let t=!1;function n(){let n=hO(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 vO(e,t=Ae){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 yO(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 bO(e,t=vO){let n=t(e);return n.kind===`start`?n.token:null}const xO=`CC_CANDYBAR_PARENT_PID`;function SO(e){let t=e[xO];if(t===void 0)return{kind:`outlives-nobody`};let n=Number.parseInt(t,10);if(!Number.isInteger(n)||n<=0)throw Error(`${xO} must be a positive integer pid, got ${JSON.stringify(t)}`);return{kind:`anchored`,pid:n}}function CO(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 wO(e){try{return t.kill(e,0),!0}catch(e){return e.code===`EPERM`}}function TO(){let e=Number(process.env.CC_CANDYBAR_DAEMON_CEILING??``);return Number.isInteger(e)&&e>0?e:16}function EO(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 DO(e){try{return r.readdirSync(e).filter(e=>e.endsWith(`.json`)).map(t=>c.join(e,t))}catch{return[]}}function OO(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 kO(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 AO(e){if(!e.isolated)return{decision:EO(!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=EO(!0,kO(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 jO(e,t,n,r){let i=n(e);if(i!==null&&i.pid===t)try{r(e)}catch{}}function MO(e,t={}){return{isolated:!!process.env.CC_CANDYBAR_SOCKET,registryDir:We(),ceiling:TO(),pid:process.pid,startTime:e,isSameLiveProcess:(e,t)=>yO(e,t,{readStartTime:vO,pidAlive:wO}),listFiles:DO,readEntry:OO,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?Re:e=>{Re(c.dirname(e)),Re(e)},...t}}function NO(e){return e<32||e===127||e>=128&&e<=159}function PO(e){let t=``;for(let n of e)t+=NO(n.codePointAt(0)??0)?` `:n;return t.replace(/\s+/g,` `).trim()}function FO(e,t){let n=PO(e),r=``,i=0;for(let e of n){if(i===t)return r.replace(/.$/u,`…`);r+=e,i++}return r}const IO=`\x1B[38;2;255;255;255m`,LO=`\x1B[48;2;200;40;40m`;function RO(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 zO={fg:RO(IO),bg:RO(LO)},BO={fg:RO(`\x1B[38;2;0;0;0m`),bg:RO(`\x1B[48;2;220;160;40m`)},VO={unicode:Bi,ascii:{glyph:`>`,divider:`|`,lead:`<`,tail:`>`}},HO={unicode:{},ascii:{left:`(`,right:`)`}};function UO(e,t,n){switch(e){case`capsule`:return new Ki(HO[t]);case`plain`:return new qi(n===void 0?{}:{separator:n});case`powerline`:return new Ui(VO[t]);default:return e}}const WO=new Map;function GO(e){let t=JSON.stringify([e.endcaps,e.charset,e.separator??null]),n=WO.get(t);if(n!==void 0)return n;let r=UO(e.endcaps,e.charset,e.separator),i=e=>new V(`x`,{end:``,overflow:`ignore`,style:new z({bgcolor:e})}),a=e=>new V(Xi(new H(e,r),{colorSystem:null}).replace(/\n$/,``)).cellLength,o=a([i(`#101010`)]),s={chrome:o-1,seam:a([i(`#101010`),i(`#202020`)])-o-1};return WO.set(t,s),s}function KO(e){return GO(e).chrome}function qO(e){return GO(e).seam}function JO(e,t){if(e.length===0)return``;let n=UO(t.endcaps,t.charset,t.separator),r=t.colorCompatibility,i=t.wrap&&Number.isFinite(t.width)?Xi(new na([...e],{joiner:n}),{width:t.width,colorSystem:r}):Xi(new H([...e],n),{colorSystem:r});if(!i.endsWith(`
173
+ `))throw Error(`renderStripCells: rich-js strip output did not end its last line`);return i.slice(0,-1)}function YO(e){return Math.min(20,e??20)}const XO={heading:`ERROR`,glyph:`⚠`,colors:zO},ZO={heading:`WARNING`,glyph:`⚠`,colors:BO},QO={heading:`UPDATE`,glyph:`⬆`,colors:BO};function $O(e,t){return{text:PO(e),link:t}}function ek(e,t,n){let[r,...i]=[tk(e,XO,YE),t,tk(n,ZO,XE)].flat();return r===void 0?null:{channels:[r,...i]}}function tk(e,t,n){let r=hD([{verb:n,args:[e]}]),[i,...a]=e.split(/\r\n|\r|\n/).map(e=>$O(e,r)).filter(e=>e.text!==``).map(e=>[e]);return i===void 0?[]:[{severity:t,message:e,lines:[i,...a]}]}function nk(e){return e.channels.map(e=>`${e.severity.heading}\n${e.message}\n`).join(`
174
+ `)}function rk(e,t,n,r){if(t===null)return e;let i=ik(r),a=t.channels.flatMap(e=>ak(e,i)),o=n.failedConfigFile!==null||a.length>r.rowCap,s=a.slice(0,r.rowCap-Number(o)),c=o?[ok(t,n,a.length-s.length,i)]:[],l=[...s,...c].join(`
175
+ `);return e?`${l}\n${e}`:l}function ik(e){return{endcaps:`plain`,separator:``,width:e.width,wrap:!0,padding:0,charset:`unicode`,colorCompatibility:e.colorCompatibility}}function ak(e,t){let n=new z({bgcolor:e.severity.colors.bg,color:e.severity.colors.fg}),r=Vt(Math.max(2,t.width-1)),i=(e,t)=>new V(`${e} `,{style:t,end:``,overflow:`ignore`});return e.lines.flatMap((a,o)=>JO([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=>Wt(e,r)).map(e=>i(e,t))})],t).split(`
176
+ `))}function ok(e,t,n,r){let{colors:i}=e.channels[0].severity,{fullText:a,failedConfigFile:o}=t,s=new z({bgcolor:i.bg,color:i.fg}),c=(e,t)=>new V(e,{style:t,end:``,overflow:`ignore`}),l=n>0?[c(`${n} more rows · `,s),a.kind===`file`?c(`open full text`,s.withLink(E(a.path).href)):c(`full text unavailable: ${PO(a.reason)}`,s)]:[],u=o===null?[]:[c(`${l.length>0?` · `:``}open `,s),c(PO(o),s.withLink(E(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=V.fromFragments([...d,...p]).truncate(r.width);return m.overflow=`ignore`,JO([m],r)}const sk=e=>!e.startsWith(`.`)&&!e.endsWith(`~`);function ck(e,t){return t.isSymbolicLink()?Buffer.from(r.readlinkSync(e)):r.readFileSync(e)}function lk(e,t){return r.readdirSync(t).filter(sk).sort().flatMap(n=>{let i=c.join(t,n),a=r.lstatSync(i,{throwIfNoEntry:!1});return a===void 0?[]:a.isDirectory()?lk(e,i):[[c.relative(e,i).split(c.sep).join(`/`),ck(i,a)]]})}function uk(e){let t=ae.createHash(`sha256`);for(let[n,r]of lk(e,e))t.update(n).update(`\0`).update(r).update(`\0`);return t.digest(`hex`)}const dk=e=>e.slice(0,7);function fk(e){return c.dirname(c.dirname(e))}function pk(){return{version:xD,digest:`2888ffc087081065df31f293cd9853406f4ae8f516e6763322abc8e1dc1ea369`}}function mk(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 hk(e,t){try{let n=fk(T(e)),i=c.join(n,`src`);if(!r.existsSync(i))return{kind:`not-source-checkout`};let a=t(),o=uk(i);return o===a.digest?{kind:`current`,root:n,stamp:a}:{kind:`stale`,root:n,source:{version:mk(n),digest:o},running:a}}catch(e){return{kind:`unchecked`,reason:e.message}}}var $=class extends Error{constructor(e){super(e),this.name=`BadVerbArgs`}};function gk(e){return e.op===`remove`?`remove:${e.target}`:`insert:${e.segment}:${e.anchor}:${e.relation}`}function _k(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 vk(e,t,n){let r=js(e,new Set(n.map(As).filter(e=>e.includes(t)).flat()));return r===e?{seg:e}:{seg:e,id:r}}const yk=/^-?\d+$/;function bk(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 xk(e){return t=>{if(!t)return{ok:!1,reason:`${e} value is required`};if(!yk.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 Sk(e,t,n){return r=>r?yk.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 Ck(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=>!yk.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}}return{kind:`int`}}function wk(e){return e===`config`?`set-config`:`set-state`}function Tk(e,t,n){return t.kind===`int`?xk(`menu page "${e}"`):t.kind===`range`?Sk(t.min,t.max,`${n} stepper "${e}"`):bk(t.allowed,`${n} "${e}"`,wk(n))}function Ek(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:Ck(e,n,t)}))}function Dk(e,t,n,r){let i=new Map(Object.entries(e)),a=new Map,o=new Set(t.map(e=>e.key));for(let{key:e,spec:t}of n)if(o.has(e)&&t.kind!==`allow-list`)throw Error(`${r} gate: key "${e}" is written by the daemon's own links as one of a list of values, and cannot be declared as ${t.kind===`int`?`a paged cursor (int)`:`a bounded value (range)`}. Use a distinct key.`);let s=[...t.map(({key:e,allowed:t})=>({key:e,spec:{kind:`allow-list`,allowed:t}})),...n];for(let{key:t,spec:n}of Ek(s,r)){if(!t)throw Error(`${r} gate: key is required`);if(t.includes(`/`))throw Error(`${r} gate: key "${t}" contains "/" — the wire shape splits on "/" so a slash-bearing key cannot be addressed. Use a slash-free key.`);if(Object.hasOwn(e,t))throw Error(`${r} gate: key "${t}" is a built-in ${r} key and cannot be re-claimed (built-in keys: ${Object.keys(e).join(`, `)})`);i.set(t,Tk(t,n,r)),n.kind===`range`&&a.set(t,{min:n.min,max:n.max})}return{validate(e,t){let n=i.get(e);return n?n(t):{ok:!1,reason:`unknown ${r} key "${e}" (have: ${[...i.keys()].join(`, `)})`}},listKeys:()=>[...i.keys()],rangeParamsFor:e=>a.get(e)??null}}function Ok(e,t,n){let r=[],i=0,a=new WeakMap;return{register(n,a){let o={key:n,allowed:a};Dk(e,[o],[],t),r.push(o),i++;let s=!0;return()=>{s&&(s=!1,r.splice(r.indexOf(o),1),i++)}},gateFor(o){let s=a.get(o);if(s?.epoch===i)return s.gate;let c=Dk(e,r,n(o),t);return a.set(o,{epoch:i,gate:c}),c}}}const kk=Ok({},`config`,Ik);function Ak(e,t){return kk.register(e,t)}function jk(e){return kk.gateFor(e)}function Mk(e,t){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:tx(e.from,t).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:[gk({op:`remove`,target:e.removeSegment})]}}]:`insertSegment`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:[gk({op:`insert`,segment:e.insertSegment,anchor:e.anchor,relation:e.relation})]}}]:`insertSegmentFrom`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:tx(e.insertSegmentFrom,t).members.map(t=>gk({op:`insert`,segment:t,anchor:e.anchor,relation:e.relation}))}}]:[{key:e.persist,spec:{kind:`range`,min:e.min,max:e.max}}]:[]}function Nk(e,t){let n=Ml(e).get(t);return n===void 0?null:String(n)}function Pk(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?ux(n.persist):null;e?.scope===`preset-root`&&t.add(cx(e.preset))}return[...t].map(e=>({key:e,spec:{kind:`allow-list`,allowed:[]}}))}function Fk(e){let t=new Map([...$b(e),...kC(e)]);return[...Pk(e),...Object.values(e.actions).flatMap(e=>Mk(e,t))]}function Ik(e){return Ek(Fk(e),`config`)}const Lk=Array.from({length:10},(e,t)=>(t+1)*1e5),Rk=Lk[0],zk=Lk[Lk.length-1];function Bk(e){let t;try{t=AD(e)}catch(e){return X(e instanceof Error?e.message:String(e))}let n=t.autoCompactWindow;return n===void 0?J(`auto`):typeof n==`number`&&Number.isInteger(n)&&n>=Rk&&n<=zk?J(n):X(`${e}: autoCompactWindow is ${JSON.stringify(n)}, not a window /autocompact accepts (${Rk}–${zk} tokens)`)}function Vk(e,t){let n=Math.min(t??zk,zk),r=e===`auto`?n:Math.min(e,n);return{window:e===`auto`?0:e,applied:e===`auto`?0:r,lower:Lk.filter(e=>e<r).at(-1)??0,higher:Lk.find(e=>e>r&&e<=n)??0}}const Hk=Gx(`commands.`),Uk=`trimPrefix "/" (trimPrefix .project_dir .current_dir)`,Wk=`{{ \$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 (${Uk}) (basename .project_dir) (ne (${Uk}) "") }}{{ end }}{{ end }}{{ abbreviatePath \$dir }}`,Gk=`{{ ${Cx} }}`,Kk={min:0,max:100,step:5},qk={warnAt:{label:`warning at %`,domain:Kk,default:50},errorAt:{label:`error at %`,domain:{...Kk,atLeast:`warnAt`},default:80}};function Jk(e){return{budget:{label:`budget $`,domain:{min:0,max:1e4,step:5},default:e},warnAt:{label:`warning at %`,domain:Kk,default:80}}}const Yk={globals:{palette:`tokyo-night`},variables:{...Hk.variables,...Ob,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},"today.cost":{kind:`input`,path:`today.cost`,type:`number`,default:0},"today.tokens":{kind:`input`,path:`today.tokens`,type:`number`,default:0},"block.nativeUtilization":{kind:`input`,path:`block.nativeUtilization`,type:`number`,default:0},"block.resetsAt":{kind:`input`,path:`block.resetsAt`,type:`number`,default:0},"weekly.percentage":{kind:`input`,path:`weekly.percentage`,type:`number`,default:0},"weekly.resetsAt":{kind:`input`,path:`weekly.resetsAt`,type:`number`,default:0},"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},"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},"memento.ceiling":{kind:`input`,path:`memento.ceiling`,type:`number`,default:-1},"memento.off":{kind:`input`,path:`memento.off`,type:`boolean`,default:!1},"memento.session":{kind:`input`,path:`memento.session`,default:``},"memento.error":{kind:`input`,path:`memento.error`,default:``},"autocompact.window":{kind:`input`,path:`autocompact.window`,type:`number`,default:-1},...Object.fromEntries([`applied`,`lower`,`higher`].map(e=>[`autocompact.${e}`,{kind:`input`,path:`autocompact.${e}`,type:`number`,default:0}])),"autocompact.error":{kind:`input`,path:`autocompact.error`,default:``},"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:{group:`location`,description:"The current directory, shortened fish-style — `~` under home, project-relative inside the project.",template:Wk},model:{group:`model-context`,description:`The active model's display name.`,template:`✱ {{ formatModelName .model.display_name }}`,when:`{{ ne .model.display_name "" }}`},sessionId:{group:`session-tools`,description:`The session id, truncated to 8 characters.`,template:`⌗{{ trunc 8 .session.id }}`,when:`{{ ne .session.id "" }}`},version:{group:`model-context`,description:`The Claude Code version reported in the hook payload.`,template:`◈ v{{ .version }}`,when:`{{ ne .version "" }}`},tmux:{group:`location`,description:`The tmux session name; hidden when not inside tmux.`,template:`tmux:{{ .tmux.session | default "none" }}`,when:`{{ ne .tmux.session "" }}`},host:{group:`location`,description:`user@host on a warning background, shown only over SSH.`,template:`⇄ {{ .host.user | default "?" }}@{{ .host.name | default "?" }}`,bg:`warning`,when:`{{ .host.ssh }}`},gitaculous:{group:`git`,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:Gk,when:`{{ ne .git.branch "" }}`,settings:{aheadBehind:{label:`ahead/behind`,domain:`bool`,default:!0},flags:{label:`dirty flags`,domain:`bool`,default:!0},operation:{label:`operation`,domain:`bool`,default:!0},repo:{label:`repo name`,domain:`bool`,default:!0},sha:{label:`commit hash`,domain:`bool`,default:!0},stash:{label:`stash`,domain:`bool`,default:!0},upstream:{label:`upstream`,domain:`bool`,default:!0},age:{label:`time since commit`,domain:`bool`,default:!0}}},gitPr:{group:`git`,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:{group:`session-tools`,description:`Quick actions: copy the session id, and open the project, transcript or repo.`,template:Px(``).template},commands:{group:`session-tools`,description:`Type /compact, /model or /clear into this session; /clear asks for a second click.`,template:Hk.template},themeSwitcher:{group:`session-tools`,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:{group:`cost-limits`,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" .settings.budget "warn" .settings.warnAt) }}`,settings:Jk(0)},today:{group:`cost-limits`,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" .settings.budget "warn" .settings.warnAt) }}`,settings:Jk(50)},block:{group:`cost-limits`,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) .settings.warnAt "warning" .settings.errorAt "error" }}`,settings:qk,when:`{{ gt .block.resetsAt 0 }}`},weekly:{group:`cost-limits`,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) .settings.warnAt "warning" .settings.errorAt "error" }}`,settings:qk,when:`{{ gt .weekly.resetsAt 0 }}`},burnrate:{group:`cost-limits`,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" .settings.errorWithin "warning" .settings.warnWithin (tint) }}`,settings:{errorWithin:{label:`error within (min)`,domain:{min:0,max:300,step:5},default:30},warnWithin:{label:`warning within (min)`,domain:{min:0,max:300,step:5,atLeast:`errorWithin`},default:60}},when:`{{ or (gt .block.resetsAt 0) (gt .weekly.resetsAt 0) }}`},speed:{group:`activity`,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:{group:`activity`,description:`A sparkline of recent token throughput.`,template:`⚡ {{ sparkline .speed.history 24 }}`,when:`{{ ne .speed.history "" }}`},cacheTimer:{group:`activity`,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) ${Aa} }}`,when:`{{ gt .cache.expiresAt 0 }}`},context:{group:`model-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 }}`},ceiling:{group:`model-context`,description:`The memento plugin's context ceiling for this session: − and + move it by 100K, ∞ lifts it, ↺ drops this session's own setting.`,template:`{{ if ne .memento.error "" }}⌈ ⚠ {{ .memento.error }} {{ action "ceiling.clear" "↺" }}{{ else }}⌈ {{ if .memento.off }}off{{ else }}{{ template "formatTokenCount" .memento.ceiling }} {{ action "ceiling.lower" "−" }} {{ action "ceiling.raise" "+" }} {{ action "ceiling.off" "∞" }}{{ end }}{{ if ne .memento.session "" }} {{ action "ceiling.clear" "↺" }}{{ end }}{{ end }}`,bg:`{{ if ne .memento.error "" }}{{ color "error" }}{{ else }}{{ tint }}{{ end }}`,when:`{{ or (ge .memento.ceiling 0) (ne .memento.error "") }}`},autocompact:{group:`model-context`,description:`Claude Code's auto-compact window: − and + move it by 100K, ↺ returns it to auto. Clicks type /autocompact into this session.`,template:`{{ if ne .autocompact.error "" }}⇲ ⚠ {{ .autocompact.error }}{{ else }}⇲ {{ if eq .autocompact.window 0 }}auto{{ else }}{{ template "formatTokenCount" .autocompact.applied }}{{ end }}{{ if gt .autocompact.lower 0 }} {{ action (printf "autocompact.%d" .autocompact.lower) "−" }}{{ end }}{{ if gt .autocompact.higher 0 }} {{ action (printf "autocompact.%d" .autocompact.higher) "+" }}{{ end }}{{ if gt .autocompact.window 0 }} {{ action "autocompact.auto" "↺" }}{{ end }}{{ end }}`,bg:`{{ if ne .autocompact.error "" }}{{ color "error" }}{{ else }}{{ tint }}{{ end }}`,when:`{{ or (ge .autocompact.window 0) (ne .autocompact.error "") }}`},metrics:{group:`activity`,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:{group:`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:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`context`},{kind:`segment`,name:`ceiling`},{kind:`segment`,name:`autocompact`}]},{kind:`segment`,name:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`activity`}]}}},actions:{...Px(``).actions,...Hk.actions,copyDir:{copy:`{{ .current_dir }}`},stepTheme:{set:`theme`,from:`themes`},gitDetail:{set:`git-detail`,cycle:[`collapsed`,`expanded`]},"ceiling.raise":{ceiling:`set`,to:`+100_000`},"ceiling.lower":{ceiling:`set`,to:`-100_000`},"ceiling.off":{ceiling:`set`,to:`off`},"ceiling.clear":{ceiling:`clear`},"autocompact.auto":{slash:Hx(`/autocompact auto`)},...Object.fromEntries(Lk.map(e=>[`autocompact.${e}`,{slash:Hx(`/autocompact ${e}`)}]))},styles:{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:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`context`},{kind:`segment`,name:`ceiling`},{kind:`segment`,name:`autocompact`}]},{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`}]}]}},zen:{root:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`directory`},{kind:`segment`,name:`context`}]},globals:{endcaps:`plain`,style:`dim`}},git:{root:{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`host`},{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:`activity`}]}]}},usage:{root:{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`context`},{kind:`segment`,name:`ceiling`},{kind:`segment`,name:`autocompact`}]},{kind:`segment`,name:`cacheTimer`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`burnrate`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`session`},{kind:`segment`,name:`today`},{kind:`segment`,name:`speed`},{kind:`segment`,name:`tokenSparkline`}]}]}},dense:{root:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`host`},{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`segment`,name:`model`},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`context`},{kind:`segment`,name:`ceiling`},{kind:`segment`,name:`autocompact`}]},{kind:`segment`,name:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`session`},{kind:`segment`,name:`activity`}]},globals:{padding:0}}},editGlobals:{endcaps:`plain`,default_separator:` | `},helpers:{gitPaint:`{{ fg (readableOn (color .color) (bgOf) ${Aa}) .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 and .settings.repo (ne .git.repoName "") }} {{ .git.repoName }}{{ end }}`,gitOperation:`{{ if and .settings.operation (ne .git.operation "") }} [{{ .git.operation }}]{{ end }}`,gitSha:`{{ if and .settings.sha (ne .git.sha "") }} {{ .git.sha }}{{ end }}`,gitFlags:`{{ if and .settings.flags (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 and .settings.aheadBehind (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 and .settings.upstream (ne .git.upstream "") }} [{{ .git.upstream }}{{ template "gitAheadBehind" . }}]{{ end }}`,gitStash:`{{ if and .settings.stash (gt .git.stash 0) }} {{ template "gitPaint" (dict "color" .git.color.stash "text" (printf "(%v stashed)" .git.stash)) }}{{ end }}`,gitAge:`{{ if and .settings.age (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 .)) }}`}},Xk=new Set([Yk.globals.palette,...Object.values(Yk.segments).map(e=>e.palette)].filter(e=>e!==void 0)),Zk=Bc(DT(`<default>`,JSON.stringify(Yk),Xk),Yk),Qk=E_(Zk.presets);function $k(e){return Qk.includes(e)}function eA(e){if(!e)return 0;try{return o(e).mtimeMs}catch{return 0}}const tA=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 nA(e){return((...t)=>tA.run(()=>e(...t)))}const rA=nA(C),iA=nA(S),aA=nA(ee);async function oA(e,t){return tA.run(async()=>{let n=null;try{n=await x(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 sA(e,t){return tA.run(async()=>{let n=null;try{n=await x(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 cA=/"(?:cache_read_input_tokens|cache_creation_input_tokens)":[1-9]/;function lA(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 uA(e){let t=await dA(e);return t.kind===`ok`?J(Math.floor((t.value+36e5)/1e3)):t}async function dA(e){for(let t of[65536,1048576]){let n=await sA(e,t);if(n.kind!==`ok`)return n;let r=fA(n.value.buf,n.value.fromStart);if(r!=null)return J(r);if(n.value.fromStart)return Y}return Y}function fA(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||!cA.test(t))continue;let r=lA(t);if(r!=null)return r}return null}function pA(e,t){return{...e,claudeConfigDir:ED(t.claudeConfigDir),env:t.mementoEnv}}const mA=c.join(`lib`,`ceiling_config.py`),hA=c.join(`skills`,`ceiling`,`bin`,`ceiling`);function gA(e,t){let n=typeof e==`object`&&e?e.plugins:void 0;if(typeof n!=`object`||!n)throw Error(`${t} has no "plugins" object`);return Object.entries(n).filter(([e])=>e.split(`@`)[0]===`memento`).flatMap(([e,n])=>{if(!Array.isArray(n))throw Error(`${t}: "${e}" is not a list of installs`);return n.map(n=>{let{scope:r,installPath:i,projectPath:a}=n??{};if(typeof r!=`string`||typeof i!=`string`)throw Error(`${t}: an install of "${e}" has no scope/path`);return typeof a==`string`?{key:e,scope:r,installPath:i,projectPath:a}:{key:e,scope:r,installPath:i}})})}function _A(e,t){let n=!0;for(let i of e){if(!r.existsSync(i))continue;let e;try{e=JSON.parse(r.readFileSync(i,`utf8`))?.enabledPlugins?.[t]}catch(e){return X(`memento lookup: ${i}: ${e.message}`)}typeof e==`boolean`&&(n=e)}return J(n)}function vA(e,t){if(!r.existsSync(e))return Y;let n;try{n=gA(JSON.parse(r.readFileSync(e,`utf8`)),e)}catch(e){return X(`memento lookup: ${e.message}`)}let i=n.find(e=>e.projectPath===t)??n.find(e=>e.scope===`user`);if(i===void 0)return Y;let a=_A([c.join(c.dirname(c.dirname(e)),`settings.json`),c.join(t,`.claude`,`settings.json`),c.join(t,`.claude`,`settings.local.json`)],i.key);if(a.kind!==`ok`)return a;if(!a.value)return Y;let o=[mA,hA].filter(e=>!r.existsSync(c.join(i.installPath,e)));return o.length===0?J(i.installPath):X(`memento at ${i.installPath} has no ${o.join(` or `)} — upgrade the plugin`)}function yA(e,t=process.env){let n=new Set([`CLAUDE_PROJECT_DIR`,`CLAUDE_CODE_SESSION_ID`,...e.env===void 0?[]:Xe]);return{...Object.fromEntries(Object.entries(t).filter(([e])=>!n.has(e))),...e.env,CLAUDE_CODE_SESSION_ID:e.sessionId,CLAUDE_PROJECT_DIR:e.projectDir||e.cwd}}function bA(e){return e.stderr.trim()||e.error||`${e.reason}${e.exitCode===null?``:` (exit ${e.exitCode})`}`}function xA(e){let t;try{t=JSON.parse(e)}catch{return X(`memento read: not JSON: ${e.trim()}`)}let{ceiling:n,session:r}=t??{},i=n===`off`||typeof n==`number`&&n>=0?n:void 0;return i!==void 0&&(r===null||typeof r==`string`)?J({ceiling:i,session:r}):X(`memento read: unexpected answer: ${e.trim()}`)}async function SA(e,t){let n=await ke({bin:`python3`,args:[`-c`,`
178
178
  import json, math, sys
179
179
  sys.path.insert(0, sys.argv[1])
180
180
  from ceiling_config import CONFIG_NAME, anchored, ceiling_in, in_force, session_directory
@@ -183,38 +183,38 @@ ceiling = in_force(directory, anchored(sys.argv[3]))
183
183
  layer = ceiling_in(directory / CONFIG_NAME)
184
184
  print(json.dumps({"ceiling": "off" if ceiling == math.inf else ceiling,
185
185
  "session": layer.text if layer else None}))
186
- `,c.join(e,`lib`),t.sessionId,t.cwd],env:dA(t),timeoutMs:3e3,category:`memento.read`});return n.ok?pA(n.stdout):X(fA(n))}function hA(e,t,n){let r=Ae({bin:c.join(e,sA),args:n.kind===`set`?[`set`,`session`,n.to]:[`clear`,`session`],env:dA(t),timeoutMs:5e3,category:`memento.move`});if(!r.ok)throw Error(fA(r))}function gA(){return{locate:e=>uA(bD(e.claudeConfigDir),e.projectDir),read:mA,move:hA}}function _A(e,t,n){let r=n===void 0?``:`CLAUDE_CONFIG_DIR=${gD(n)} `,i=e.added_dirs.map(e=>` --add-dir ${gD(e)}`).join(``);return`cd ${gD(e.project_dir)} && ${r}claude --resume ${gD(t)}${i}`}function vA(e,t,n){let r=w_(t(`preset`),e.globals.preset,e.presets),i=D_(e,r),a=t(`edit.mode`)===`arrange`?e.editGlobals:{};return{preset:r,presetCustomized:n(r),theme:Ub(a.palette,t(`theme`),i.palette),style:lo(a.style,t(`style`),i.style,e.styles),endcaps:po(a.endcaps,t(`endcaps`),i.endcaps),variation:bo(a.variation,t(`variation`),i.variation),separator:a.default_separator??i.default_separator,autoWrap:Do(a.autoWrap,t(`autoWrap`),i.autoWrap),padding:ko(a.padding,t(`padding`),i.padding),charset:a.charset??i.charset??`unicode`,updateNotice:Oo(a.updateNotice,t(`updateNotice`),i.updateNotice),colorCompatibility:a.colorCompatibility??i.colorCompatibility??`truecolor`}}function yA(e,t){return{endcaps:e.endcaps,separator:e.separator,colorCompatibility:e.colorCompatibility,wrap:e.autoWrap,padding:e.padding,charset:e.charset,width:t}}function bA(e){return{theme:e.theme,style:e.style,preset:e.preset,variation:e.variation}}function xA(e){return{preset:{effective:e.preset,customized:e.presetCustomized,bundled:Gk(e.preset)},endcaps:{effective:e.endcaps},variation:{effective:e.variation},charset:{effective:e.charset},colorCompatibility:{effective:e.colorCompatibility},autoWrap:{effective:e.autoWrap},padding:{effective:e.padding},updateNotice:{effective:e.updateNotice}}}const SA=10*1e3;function CA(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 wA(e,t){if(!(t<60))return e*3600/t}function TA(e,t,n,r){let i=r-t;if(i<50||i>SA)return;let a=n-e;if(!(a<=0))return a*1e3/i}function EA(e){let{prev:t,cur:n}=e;if(t===void 0)return;let r=TA(t.input,t.atMs,n.input,n.atMs),i=TA(t.output,t.atMs,n.output,n.atMs),a=TA(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 DA(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>SA)continue;let o=TA(r.total,r.atMs,i.total,i.atMs);n.push(o??0)}if(n.length!==0)return n.join(`,`)}function OA(e){let t=e.indexOf(`.`);return t<0?e:e.slice(0,t)}function kA(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`,()=>OA(m.hostname())),i=n(`user`,()=>m.userInfo().username);return{host:{...r!==void 0&&{name:r},...i!==void 0&&{user:i},...e.ssh!==void 0&&{ssh:e.ssh}},failures:t}}function AA(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=>pv(t,e.helpers).keys(),o=D_(e,t);for(let e of no){let t=o[e];if(ro(t))for(let e of a(t))r.push(e)}for(let n of js(E_(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 s=new Set;for(;r.length>0;){let e=r.pop();for(let t of MA(n,e)){if(i.has(t))continue;i.add(t);let e=n.get(t);if(e){if(e.kind===`input`)s.add(e.path);else if(e.kind===`template`)for(let t of a(e.template))r.push(t)}}}return s}function jA(e){let t=new Map;return n=>{let r=t.get(n);if(r!==void 0)return r;let i=AA(e,n);return t.set(n,i),i}}function MA(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 NA(e,t){for(let n of e)if(n===t||n.startsWith(t+`.`))return!0;return!1}function PA(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 FA(e,t,n,r,i,a,{configPath:o,...s}){let c=e=>NA(r,e),l=(t.clock??(()=>new Date))().getTime(),u=(e,t,n)=>t?n().catch(t=>X(`${e}: ${String(t)}`)):Promise.resolve(Y),[d,f,p,m,h,g,_,v,y,b,x]=await Promise.all([u(`git`,c(`git`),()=>t.gitProvider.getGitInfo(n??e.workspace?.current_dir,PA(r),e.workspace?.project_dir)),u(`session`,c(`session.cost`)||c(`session.tokens`)||c(`burn`),()=>t.usageStore.getUsageInfo(e.session_id,e)),u(`today`,c(`today`),()=>t.usageStore.getTodayInfo(e,a.claudeConfigDir)),u(`context`,c(`context`)||c(`autocompact`),()=>t.contextProvider.getContextInfo(e)),u(`metrics`,c(`metrics`)||c(`burn`),()=>t.metricsProvider.getMetricsInfo(e.session_id,e)),u(`activity`,c(`activity`),()=>t.activityProvider.getActivityInfo(e.session_id,e)),u(`tmux`,c(`tmux`),()=>t.tmuxService.getSessionId()),u(`cache`,c(`cache`),()=>nA(e.transcript_path)),u(`speed`,c(`speed`),()=>t.usageStore.observeSpeed(e.session_id,e.transcript_path,l)),u(`memento`,c(`memento`),()=>t.mementoProvider.getCeiling(aA({sessionId:e.session_id,projectDir:e.workspace?.project_dir??``,cwd:n??e.workspace?.current_dir??``},a))),u(`autocompact`,c(`autocompact`),()=>Promise.resolve(t.autoCompact(yD(vD(a.claudeConfigDir)))))]),S=[],C=e=>{if(e.kind===`failed`){S.push(e.reason);return}return e.kind===`ok`?e.value:void 0},ee=UA(d);S.push(...ee.failures);let te=kA(a);S.push(...te.failures);let ne=C(f),re=C(p),w=C(m),ie=C(h),T=C(g),E=C(_),ae=C(v),oe=RA(b);b.kind===`failed`&&S.push(`memento: ${b.reason}`);let se=IA(x,w?.maxTokens);x.kind===`failed`&&S.push(`autocompact: ${x.reason}`);for(let e of S)t.log(`warn`,`provider fetch failed: ${e}`);let ce=e.rate_limits?.five_hour,le=e.rate_limits?.seven_day,ue=ce?CA(ce.used_percentage,ce.resets_at,18e6,l):void 0,de=le?CA(le.used_percentage,le.resets_at,6048e5,l):void 0,fe=ne?.session.cost,pe=ie?.sessionDuration,me=c(`burn`)&&fe!=null&&pe!=null?wA(fe,pe):void 0,he=C(y),ge=he===void 0?void 0:EA(he),_e=he===void 0?void 0:DA(he),ve=ge!==void 0||_e!==void 0?{...ge,..._e!==void 0&&{history:_e}}:void 0,D=HA(process.env.HOME??process.env.USERPROFILE),ye=e.workspace?{...e.workspace,current_dir:HA(e.workspace.current_dir)??``,project_dir:HA(e.workspace.project_dir)??``,added_dirs:(e.workspace.added_dirs??[]).map(e=>HA(e)??e)}:e.workspace,be=ne===void 0?void 0:VA({cost:ne.session.cost,tokens:ne.session.tokens}),xe=re===void 0?void 0:{cost:re.cost,tokens:re.tokens},Se=ie===void 0?void 0:VA({lastResponseTime:ie.lastResponseTime,responseTime:ie.responseTime,sessionDuration:ie.sessionDuration,messageCount:ie.messageCount,linesAdded:ie.linesAdded,linesRemoved:ie.linesRemoved}),Ce=T===void 0?void 0:zA(T);return{...e,...ye!==void 0&&{workspace:ye},...D!==void 0&&{home:D},...ee.git!==void 0&&{git:ee.git},...E!==void 0&&{tmux:{session:E}},host:te.host,...xA(i),history:t.history(e.session_id),navigation:{back:t.navigation(e.session_id)},...s,...o!==null&&{configPath:o},resumeCommand:_A(ye,e.session_id,a.claudeConfigDir),...be!==void 0&&{session:be},...xe!==void 0&&{today:xe},...me!==void 0&&{burn:{costPerHour:me}},...ve!==void 0&&{speed:ve},...c(`block`)&&ce!==void 0&&{block:{nativeUtilization:ce.used_percentage,resetsAt:ce.resets_at,...ue!==void 0&&{etaMinutes:ue}}},...le!==void 0&&{weekly:{percentage:le.used_percentage,resetsAt:le.resets_at,...de!==void 0&&{etaMinutes:de}}},...ae!==void 0&&{cache:{expiresAt:ae}},...w!==void 0&&{context:{totalTokens:w.totalTokens,contextLeft:w.contextLeftPercentage}},...Se!==void 0&&{metrics:Se},...Ce!==void 0&&{activity:Ce},...oe!==void 0&&{memento:oe},...se!==void 0&&{autocompact:se}}}function IA(e,t){switch(e.kind){case`absent`:return;case`failed`:return{error:e.reason};case`ok`:return Nk(e.value,t)}}const LA=e=>e.trim().split(`
187
- `).at(-1).trim();function RA(e){switch(e.kind){case`absent`:return;case`failed`:return{error:LA(e.reason)};case`ok`:{let{ceiling:t,session:n}=e.value;return{ceiling:t===`off`?0:t,off:t===`off`,session:n??``}}}}function zA(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=BA(e.running),i=BA(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 BA(e){return e.length===0?void 0:e.map(e=>`${e.name}:${e.count}`).join(`,`)}function VA(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 HA(e){return e===void 0||e.length===0||c.sep!==`\\`?e:e.replace(/\\/g,`/`)}function UA(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 WA={theme:e=>e.theme.kind===`decided`?e.theme.name:null,preset:e=>e.preset,style:e=>e.style.kind===`decided`?e.style.name:null,endcaps:e=>e.endcaps,variation:e=>e.variation,autoWrap:e=>e.autoWrap?xo:So,padding:e=>String(e.padding),updateNotice:e=>e.updateNotice?xo:So},GA=Object.entries(Eb),KA=new Set(Db.map(e=>e.sessionKey)),qA=()=>!1;function JA(e,t){return vA(e,e=>KA.has(e)?t(e):null,qA)}function YA(e,t,n,r){return e.flatMap(([e,i])=>{let a=WA[e](t);return a===null||a===WA[e](n(e))?[]:[{...i,value:a,target:r(i)}]})}function XA(e,t,n){return WA[n](JA(e,t))}function ZA(e,t){let n=JA(e,t),r=vA(e,()=>null,qA),i=vA(e,e=>e===Eb.preset.sessionKey?n.preset:null,qA);return YA(GA,n,e=>e===`preset`?r:i,t=>QA(e,n.preset,t.configKey))}function QA(e,t,n){return n in(T_(e.presets,t).globals??{})?ax(t,n):n}function $A(e,t,n){let r=w_(t(Eb.preset.sessionKey),e.globals.preset,e.presets),i=ox(n);return{key:i?.scope===`globals`?QA(e,r,i.field):n,globals:D_(e,r)}}function ej(e,t){let{preset:n}=JA(e,t);return rj(e,n).flatMap(({id:e,setting:r,key:i,decl:a,saved:o})=>{let s=t(i),c=s===null?void 0:qs(a,s);return c===void 0||Ks(c)===Ks(o)?[]:[{preset:n,id:e,setting:r,key:i,value:c}]})}function tj(e,t,n){let r=new Map(n.map(e=>[e.key,e.value]));return C_(e.presets).flatMap(n=>{let i=rj(e,n);return[...new Set(i.filter(e=>r.has(e.key)).map(e=>e.id))].flatMap(e=>{let n=i.filter(t=>t.id===e);return Ws(Object.fromEntries(n.map(e=>[e.setting,e.decl])),Object.fromEntries(n.map(e=>{let n=r.get(e.key)??t(e.key),i=n===null?void 0:qs(e.decl,n);return[e.setting,i??e.saved]}))).map(({message:t})=>`placement "${e}": ${t}`)})})}const nj=new WeakMap;function rj(e,t){let n=nj.get(e)??new Map;nj.set(e,n);let r=n.get(t);if(r!==void 0)return r;let i=[...js(E_(e,t).node)].flatMap(t=>t.kind!==`segment`||t.drafts===void 0?[]:Object.entries(t.drafts).map(([n,{id:r,key:i}])=>{let a=Hs(e.segments[t.name])[n];return{id:r,setting:n,key:i,decl:a,saved:t.settings?.[n]??a.default}})),a=[...new Map(i.map(e=>[e.key,e])).values()];return n.set(t,a),a}function ij(e,t){let n=JA(e,t),r=vA(e,e=>e===Eb.preset.sessionKey?n.preset:null,qA);return{from:n.preset,globals:T_(e.presets,n.preset).globals??{},picks:YA(GA.filter(([e])=>e!==`preset`),n,()=>r,e=>e.configKey),placements:ej(e,t)}}function aj(e){return{sessionKeys:Db.filter(t=>t.configKey===e).map(e=>e.sessionKey),fileKeys:[e,...yl(e)?Wk.map(t=>ax(t,e)):[]]}}function oj(e){return new Set(Db.map(e=>e.configKey).filter(t=>aj(t).fileKeys.some(t=>lj(e,cj(t)))))}function sj(e,t,n){let r=ZA(e,n);return{unsaved:r.length+ej(e,n).length,resettable:new Set([...r.map(e=>e.configKey),...t]).size}}function cj(e){let t=ox(e);if(t===null||t.scope===`preset-root`)throw Error(`reset layer "${e}" is not a value path`);return sx(t)}function lj(e,t){let[n,...r]=t;return n===void 0?e!==void 0:typeof e==`object`&&!!e&&lj(e[n],r)}const uj=Za(),dj=new Set(uj),fj=new Set(uo),pj=e=>e?dj.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown theme "${e}" (have: ${uj.join(`, `)})`}:{ok:!1,reason:`theme name is required`},mj=e=>e?fj.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown endcaps "${e}" (have: ${uo.join(`, `)})`}:{ok:!1,reason:`endcaps name is required`},hj=new Set([`1`,`true`]),gj=new Set([`0`,`false`]),_j={endcaps:mj,theme:pj,"toolbar-expanded":e=>hj.has(e)?{ok:!0,value:`1`}:gj.has(e)?{ok:!0,value:``}:{ok:!1,reason:`expected boolean-ish (1, 0, true, false), got "${e}"`}},vj=bk(_j,`state`,Tj);function yj(e,t){return vj.register(e,t)}function bj(e){return vj.gateFor(e)}function xj(e,t){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:Zb(e.from,t).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}}]:[]}function Sj(e){return e.filter(e=>e.spec.kind!==`allow-list`||!Object.hasOwn(_j,e.key))}function Cj(e,t,n){let r=Mb.get(n);if(r!==void 0)return XA(e,t,r);let i=Object.values(e.variables).find(e=>e.kind===`state`&&e.key===n);return i?.kind===`state`?i.default??null:null}function wj(e){let t=Yb(e);return Sj(Object.values(e.actions).flatMap(e=>xj(e,t)))}function Tj(e){return vk(wj(e))}const Ej=`update.dismissed`,Dj=`updateNotice`,Oj=Eb.updateNotice.sessionKey;function kj(e){return e.kind===`source`?e.newer.digest:ED(e.newer)}const Aj=e=>`${e.version} [${rk(e.digest)}]`;function jj(e){switch(e.kind){case`source`:return{headline:`Newer source`,newer:Aj(e.newer),running:Aj(e.running),act:`rebuild`,busy:`rebuilding…`,command:{bin:`pnpm`,args:[`build`],cwd:e.root}};case`release`:return{headline:`Newer release`,newer:ED(e.newer),running:ED(e.running),act:`upgrade`,busy:`upgrading…`,command:{bin:`pnpm`,args:[`dlx`,`${OD}@${ED(e.newer)}`,`install`]}}}}const Mj={kind:`idle`},Nj={kind:`running`};function Pj(e,t,n){if(e===null)return[];let r=kj(e);if(!n.enabled||n.dismissed===r)return[];let i=jj(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(`
188
- `),c=sD([{verb:HE,args:[s]}]),l=t.kind===`running`?GO(`[${i.busy}]`,c):GO(`[${i.act}]`,sD([{verb:eD,args:[n.sessionId]}]));return[{severity:WO,message:s,lines:[[GO(a,c),l,GO(`[dismiss]`,sD([{verb:IE,args:[n.sessionId,Ej,r]}])),GO(`[disable]`,sD([{verb:UE,args:[n.sessionId,Dj,`false`]},{verb:IE,args:[n.sessionId,Oj,`false`]}]))],...o.map(e=>[GO(e,c)])]}]}function Fj(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 Ij(e){switch(e.kind){case`current`:return[`info`,`build: current ${Aj(e.stamp)}`];case`stale`:return[`info`,`build: stale — source ${Aj(e.source)}, running ${Aj(e.running)}`];case`not-source-checkout`:return[`info`,`build: not a source checkout`];case`unchecked`:return[`warn`,`build: unchecked: ${e.reason}`]}}function Lj(e){switch(e.kind){case`current`:return[`info`,`release: current ${ED(e.installed)}`];case`stale`:return[`info`,`release: stale — latest ${ED(e.latest)}, running ${ED(e.installed)}`];case`ahead`:return[`info`,`release: ahead — running ${ED(e.installed)}, latest ${ED(e.latest)}`];case`unchecked`:return[`warn`,`release: unchecked: ${e.reason}`]}}function Rj(e){let t=null;return([n,r])=>{r!==t&&(t=r,e(n,r))}}const zj=e=>e.split(/\r?\n/).map(e=>e.trim()).filter(e=>e!==``).at(-1);function Bj(e){let t=e.exitCode===null?``:` (exit ${e.exitCode})`,n=zj(e.stderr)??e.error??zj(e.stdout)??`no output`;return`${e.reason}${t}: ${n}`}function Vj(){let e=[Sk(Dj,[`false`]),yj(Oj,[`false`]),yj(Ej,[])];return()=>e.forEach(e=>e())}function Hj(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=Mj,d=null,f=Rj(s),p=Rj(s),m=()=>Fj(c,l);function h(){let e=m(),t=e===null?null:kj(e);(d===null?null:d.identity)!==t&&(d?.dispose(),d=t===null?null:{identity:t,dispose:yj(Ej,[t])})}function g(){c=sk(t,ak),f(Ij(c)),h()}async function _(){l=AD(pD,await kD(OD,a,i)),p(Lj(l)),h()}return{arm(){Vj(),g(),setInterval(g,n).unref(),c.kind===`not-source-checkout`&&(_(),setInterval(()=>void _(),r).unref())},notice:e=>Pj(m(),u,e),act(){let e=m();if(e===null)throw new $(`apply-update: nothing newer is known to apply`);let t=jj(e);if(u.kind===`running`)throw new $(`apply-update: already ${t.busy}`);u=Nj,s(`info`,`apply-update: ${t.act} — ${t.command.bin} ${t.command.args?.join(` `)??``}`),ke({...t.command,category:`update.apply`,timeoutMs:6e5}).then(n=>{if(n.ok){u=Mj,s(`info`,`apply-update: ${t.act} succeeded`),g(),o();return}let r=Bj(n);u={kind:`failed`,identity:kj(e),reason:r},s(`error`,`apply-update: ${t.act} failed: ${r}`)})}}}var Uj=class{static CACHE_DIR=Fe();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 ce(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 oe(`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 ce(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 ce(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 Wj={"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 Gj=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 Uj.getUsageCache(`pricing`,e)}static async saveDiskCache(e){await Uj.setUsageCache(`pricing`,e)}static async fetchPricingData(){return new Promise(e=>{let t=new w(this.GITHUB_PRICING_URL),n=se({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(Wj).length} models`),this.executionCache=Wj,D(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(Wj).length} models`),Wj)}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`}};const Kj=/<command-name>\s*([^<\s][^<]*?)\s*<\/command-name>/;function qj(e){if(typeof e==`string`)return Kj.exec(e)?.[1]}function Jj(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 Yj(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=Jj(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?qj(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 Xj(e){if(e!==void 0)return[e];let t=h();return[f(t,`.config`,`claude`),f(t,`.claude`)].filter(e=>a(e))}async function Zj(e){let t=[];for(let n of e){let e=f(n,`projects`);if(a(e))try{let n=await Yk(e,{withFileTypes:!0});for(let r of n)if(r.isDirectory()){let n=f(e,r.name);t.push(n)}}catch(t){D(`Failed to read projects directory ${e}:`,t)}}return t}async function Qj(e,t,n){let r=[],i=f(t,e,`subagents`);try{let t=(await Yk(i)).filter(e=>e.startsWith(`agent-`)&&e.endsWith(`.jsonl`));for(let a of t){let t=f(i,a);if(n?.has(t)){r.push(t);continue}try{let n=(await Xk(t,`utf-8`)).split(`
189
- `)[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 $j(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 eM=new Map;async function tM(e){try{let t=await Zk(e),n=t.size,r=eM.get(e);if(r&&r.mtime===t.mtimeMs&&r.size===n)return D(`[parse-cache] hit ${e}`),eM.delete(e),eM.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 oM(e)):i=await iM(e),D(`Parsed ${i.length} entries from ${e}`),n>5242880?i:(eM.delete(e),eM.size>=16&&eM.delete(eM.keys().next().value),eM.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 nM(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:Yj(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 rM(e){let t=[];for(let n of e.split(`
190
- `))if(n.trim())try{let e=nM(JSON.parse(n));e&&t.push(e)}catch(e){D(`Failed to parse JSONL line: ${e}`);continue}return t}async function iM(e){return rM(await Xk(e,`utf-8`))}async function aM(e,t){let n=await Qk(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:rM(r.subarray(0,c+1).toString(`utf-8`)),cursor:{offset:i+c+1,mtimeMs:a,ino:o},reset:s})}async function oM(e){return new Promise((t,n)=>{let r=[],a=i(e,{encoding:`utf8`}),o=le({input:a,crlfDelay:1/0});o.on(`line`,e=>{let t=e.trim();if(t)try{let e=nM(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 sM=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 cM(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 lM=new Map,uM={cost:0,input:0,output:0,cacheCreation:0,cacheRead:0},dM={cost:null,calculatedCost:null,officialCost:null,tokens:null,tokenBreakdown:null};function fM(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function pM(){let e=new Date;return e.setHours(0,0,0,0),e.setDate(e.getDate()-1),e.getTime()}function mM(){return{input:0,output:0,cacheCreation:0,cacheRead:0}}async function hM(e,t,n,r){let i=fM(new Date(pM())),a=e&&!t?e:void 0,o=a?.entries??0,s=a?.cost??0,c=a?{...a.breakdown}:mM(),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 Gj.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=fM(new Date(e.timestamp));if(r<i)continue;let a=l.get(r)??{...uM};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 gM(e){let t=0,n=0,r=mM(),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)??{...uM};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:dM,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 _M(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 vM=class{entries=new Map;flight=new sM;seeded=new Map;seededDay=``;speedRings=new Map;speedFlight=new sM;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:dM,i=t?.cost?.total_cost_usd??null;return J({session:{...r,cost:i??r.cost,officialCost:i}})}async getTodayInfo(e,t){let n=fM(new Date),r=Xj(t);try{await this.ensureSeeded(n,r)}catch(e){return X(`usage seed: ${e instanceof Error?e.message:String(e)}`)}let i=await this.ingest(e?.session_id??``,e?.transcript_path);if(i.kind===`failed`)return i;let a=r.map(e=>f(e,`projects`)+p),o={...uM},s=!1;for(let[t,r]of this.entries){let i=r.transcriptPath??``,c=t===e?.session_id||a.some(e=>i.startsWith(e))?r.days:lM;s||=c.has(n);let l=c.get(n)??uM;o.cost+=l.cost,o.input+=l.input,o.output+=l.output,o.cacheCreation+=l.cacheCreation,o.cacheRead+=l.cacheRead}return s?J({cost:o.cost,tokens:o.input+o.output+o.cacheCreation+o.cacheRead,tokenBreakdown:{input:o.input,output:o.output,cacheCreation:o.cacheCreation,cacheRead:o.cacheRead},date:n}):Y}async observeSpeed(e,t,n){let r=Kk(t);return this.speedFlight.run(`${e}:${r}`,async()=>{let i=await this.ingest(e,t,r);if(i.kind===`failed`)return i;let a=cM(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??Kk(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 Qj(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 aM(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 hM(r,l,s,c)),e===t&&(a=c.mtimeMs)}return J({files:i,...gM(i),mainMtime:a})}ensureSeeded(e,t){this.seededDay!==e&&(this.seeded.clear(),this.seededDay=e);let n=t.join(`\0`),r=this.seeded.get(n);if(r)return r;let i=this.seed(t);return this.seeded.set(n,i),i.catch(()=>{this.seeded.get(n)===i&&this.seeded.delete(n)}),i}async seed(e){let t=pM(),n=await Zj(e),r=[];for(let e of n){let n;try{n=await Yk(e)}catch{continue}for(let i of n){if(!i.endsWith(`.jsonl`))continue;let n=f(e,i),a;try{a=(await Zk(n)).mtimeMs}catch{continue}a<t||r.push({sessionId:i.slice(0,-6),path:n,mtime:a})}}await _M(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} dirs=${e.join(`,`)}`)}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()}};function yM(e,t){return e===void 0?!0:e.evaluate(t).map(e=>e.plain).join(``)!==`false`}function bM(e,t){let n=V.fromFragments(e);return n.end=``,n.overflow=`ignore`,t!==void 0&&!t.isNull&&(n.style=t),n}function xM(e,t,n){e.cellLength>t?e.truncate(t,{mode:n.truncate,marker:`…`}):e.cellLength<t&&e.align(n.justify,t)}function SM({lead:e,text:t,trail:n}){return[...e===void 0?[]:[e],t,...n===void 0?[]:[n]]}function CM(e){let t=SM(e);if(t.length===1)return e.text;let n=bM(t);return n.style=e.text.style,n}function wM(e,t){let{width:n,justify:r,truncate:i,baseStyle:a,padding:o,lead:s=[],trail:c=[]}=t;if(e.length===0)return[];let l=bM(e,a).pad(o),u=new V(` `.repeat(o)),d={...s.length>0&&{lead:bM([u,...s],a)},...c.length>0&&{trail:bM([...c,u],a)}};if(n===`auto`)return[{text:l,...d}];let f={justify:r,truncate:i};return n===`fill`?[{text:l,fill:f,...d}]:(xM(l,n,f),[{text:l,...d}])}const TM=RegExp(`\\x1b\\[[0-9;]*m|${xi.source}`,`g`);function EM(e){return j(e.replace(TM,``))}function DM(e,t){let n=e.map(CM),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=BO(n,t).split(`
191
- `);if(i.length>1)return n;let a=Math.max(0,t.width-EM(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];xM(l,l.cellLength+c,i),n[t]=CM(e[t])}),n}function OM(e,t){let n=[],r=[],i=()=>{if(!r.length)return;let e=kM(r,t);e.plain.length>0&&n.push(e),r=[]};for(let a of e)if(jM(a.style).link){i();let e=kM([a],t);e.plain.length>0&&n.push(e)}else r.push(a);return i(),n}function kM(e,t){let n=t!==void 0&&!t.isNull?e.map(e=>AM(e,t)):e,r=V.fromFragments(n);return r.end=``,r.overflow=`ignore`,n.length===1?r.style=n[0].style:t!==void 0&&!t.isNull&&(r.style=t),r}function AM(e,t){let n=e.copy();return n.style=t.add(jM(e.style)),n}function jM(e){return e instanceof z?e:z.parse(e)}function MM(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,NM(e,t,o,n,r,i));return i}function NM(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=Zb(n.from,i);return{kind:`set-option`,key:n.set,stateVar:e,options:[...t.members],paletteOf:t.paletteOf,library:t.library}}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=Ab.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=Zb(n.from,i);return{kind:`persist-option`,key:n.persist,stateVar:e,options:[...t.members],paletteOf:t.paletteOf,library:t.library}}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=Zb(n.insertSegmentFrom,i);return{kind:`layout-op-option`,key:n.persist,anchor:n.anchor,relation:n.relation,options:[...e.members],paletteOf:e.paletteOf,library:e.library}}return{kind:`persist-bounded`,key:n.persist,by:n.by}}if(`copy`in n)return{kind:`copy`,text:FM(e,n.copy,t)};if(`open`in n)return{kind:`open`,target:FM(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(`ceiling`in n)return{kind:`ceiling`,args:zC(n)};if(`slash`in n)return{kind:`slash`,line:n.slash};if(`undo`in n)return{kind:`undo`};if(`redo`in n)return{kind:`redo`};if(`back`in n)return{kind:`back`};if(`rewind`in n)return{kind:`rewind`};if(`save`in n)return{kind:`save`};if(`preset`in n)return n.preset===`save`?{kind:`preset-save`}:{kind:`preset-delete`,name:FM(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 PM(e){return e.kind===`do`?PM(e.head):e}function FM(e,t,n){try{return e(t)}catch(e){throw Error(`Template parse error in actions.${n}: ${e.message}`,{cause:e})}}function IM(e,t){return e.has(t)?Ev(e.read(t)):``}function LM(e,t){return e.evaluate(t).map(e=>e.plain).join(``)}function RM(e,t,n,r){let i=new V(e,{style:z.combine([r,new z({link:t,bold:n})])});return i.overflow=`ignore`,i.end=``,i}function zM(e,t){return Math.max(e.members.indexOf(IM(t,e.stateVar)),0)}function BM(e,t,n,r,i){switch(e.kind){case`set-literal`:{let t=IM(r,e.stateVar);return{effects:[{verb:IE,args:[i,e.key,e.value]}],active:t===e.value}}case`set-option`:{let a=n??t,o=IM(r,e.stateVar);return{effects:[{verb:IE,args:[i,e.key,a]}],active:o===a}}case`set-int`:{let a=n??t,o=IM(r,e.stateVar);return{effects:[{verb:IE,args:[i,e.key,a]}],active:o===a}}case`set-cycle`:{let t=e.members[(zM(e,r)+1)%e.members.length];return{effects:[{verb:IE,args:[i,e.key,t]}],active:!1}}case`set-bounded`:return{effects:[{verb:LE,args:[i,e.key,String(e.by)]}],active:!1};case`copy`:return{effects:[{verb:RE,args:[LM(e.text,vy(r))]}],active:!1};case`open`:return{effects:[{verb:zE,args:[LM(e.target,vy(r))]}],active:!1};case`persist-literal`:{let t=IM(r,e.stateVar);return{effects:[{verb:UE,args:[i,e.key,e.value]}],active:t===e.value}}case`persist-option`:{let a=n??t,o=IM(r,e.stateVar);return{effects:[{verb:UE,args:[i,e.key,a]}],active:o===a}}case`persist-cycle`:{let t=e.members[(zM(e,r)+1)%e.members.length];return{effects:[{verb:UE,args:[i,e.key,t]}],active:!1}}case`persist-bounded`:return{effects:[{verb:WE,args:[i,e.key,String(e.by)]}],active:!1};case`reset`:return{effects:[{verb:JE,args:[i,e.key]}],active:!1};case`undo`:return{effects:[{verb:XE,args:[i]}],active:!1};case`redo`:return{effects:[{verb:ZE,args:[i]}],active:!1};case`back`:return{effects:[{verb:QE,args:[i]}],active:!1};case`rewind`:return{effects:[{verb:$E,args:[i]}],active:!1};case`save`:return{effects:[{verb:GE,args:[i]}],active:!1};case`preset-save`:return{effects:[{verb:KE,args:[i]}],active:!1};case`preset-delete`:return{effects:[{verb:qE,args:[i,LM(e.name,vy(r))]}],active:!1};case`doctor-run`:return{effects:[{verb:tD,args:[i]}],active:!1};case`doctor-fix`:return{effects:[{verb:nD,args:[i,e.check]}],active:!1};case`ceiling`:return{effects:[{verb:rD,args:[i,...e.args]}],active:!1};case`slash`:return{effects:[{verb:iD,args:[i,e.line]}],active:!1};case`layout-op`:return{effects:[{verb:YE,args:[i,e.key,ck(e.op)]}],active:!1};case`do`:{let a=BM(e.head,t,n,r,i);return{effects:[...a.effects,...e.rest.flatMap(e=>BM(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:YE,args:[i,e.key,ck(r)]}],active:!1}}}}function VM(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:Gc(`action "${e}"`,n,t.members.length,zM(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 HM(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}=VM(e,PM(r),t,i),{effects:s,active:c}=BM(r,a,o,i,IM(i,`session.id`));return RM(a,sD(s),c)}function UM(e){return{action:{fn:(t,...n)=>HM(t,n,e),argTypes:[`string`,`string`],arity:{kind:`variadic`},returnType:`T`}}}function WM(e,t){return RM(`✕`,sD([{verb:IE,args:[IM(e,`session.id`),t,Hc]}]),!1)}function GM(e,t,n){return new z({bgcolor:yn.fromRgba(t),color:yn.fromRgba(ka(e,t,n))})}function KM(e,t,n){return new z({color:yn.fromRgba(cr(ya(e,`warning`),t,Oa,n))})}function qM(e,t,n){return z.combine([GM(e,t,n),KM(e,t,n)])}function JM(e,t,n){return GM(e.palette,Ha(e.palette,e.disclosure,[t],n),n)}function YM(e,t,n,r,i){return r===void 0?n=>JM(e,{...n,distribution:t},i):(e,t)=>XM(r(t,n),i)}function XM(e,t){let n=ya(e,`background`);return new z({bgcolor:yn.fromRgba(n),color:yn.fromRgba(cr(ya(e,`primary`),n,4.5,t))})}function ZM(e,t,n){let r=t.map(t=>({label:t.label,indices:e.flatMap((e,n)=>e.group===t.id?[n]:[])})).filter(e=>e.indices.length>0);if(r.reduce((e,t)=>e+t.indices.length,0)!==e.length){let n=new Set(t.map(e=>e.id)),r=e.flatMap((e,t)=>n.has(e.group)?[]:[`#${t} (group "${e.group}")`]);throw Error(`library: ${r.join(`, `)} name a group the domain does not list (${[...n].join(`, `)})`)}return n?r.flatMap(e=>QM(e.indices,8).map(t=>[{label:e.label,indices:t}])):[r]}function QM(e,t){return Array.from({length:Math.ceil(e.length/t)},(n,r)=>e.slice(r*t,(r+1)*t))}function $M(e,t){return new V(e).truncate(t,{marker:`…`}).plain}function eN(e){return{current:null,drawnAt:e}}function tN(e,t,n,r,i,a){let o={segName:t,placementId:n,palette:r,disclosure:i,tint:a,bg:void 0,drops:[]};return e.current=o,o}function nN(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 rN(e){return new V(e).cellLength}function iN(e){return Math.max(1,e.width-e.chromeCols-2*e.padding)}function aN(e){return Math.max(1,iN(e)-(rN(`✕`)+2*e.padding+e.seamCols))}function oN(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 sN(e,t){let n=rN(`✕`)+1,r=rN(`←`)+1+rN(`→`)+1,i=oN(e,t,n);return(i.length>1?oN(e,t,n+r):i).map(e=>[{label:``,indices:e}])}function cN(e,t){let n=[];for(let t of e)n.length>0&&n.push(new V(` `)),n.push(t);let r=V.fromFragments(n);return r.overflow=t?`ignore`:void 0,r.end=``,r}function lN(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 uN(e,t,n){let r=e.compiled.get(t),i=r&&PM(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 dN(e,t,n,r,i,a,o,s){let c=uN(a,e,`picker`),l=a.compiled.get(e),u=a.store,d=IM(u,`session.id`),f=`stateVar`in c?IM(u,c.stateVar):void 0,p=i?iN(a):1/0,m=c.library&&{groups:c.library.groups,entries:c.options.map(c.library.entry)},h=m===void 0?sN(c.options.map(rN),p):ZM(m.entries,m.groups,i),g=parseInt(IM(u,t.stateVar),10),_=Number.isInteger(g)?Math.max(0,Math.min(g,h.length-1)):0,v=h[_]??[],y=e=>sD([{verb:IE,args:[d,t.key,String(e)]}]),b=n.flatMap(([e,t])=>[e,t]),x=sD([{verb:IE,args:[d,...b]}]),S=r?[{verb:IE,args:[d,...b]}]:[],C=e=>sD([...BM(l,e,e,u,d).effects,...S]),ee=(e,t)=>{let n=c.options[e];return RM(t,C(n),n===f,o({index:e,count:c.options.length},n))},te=[RM(`✕`,x,!1,s)];_>0&&te.push(RM(`←`,y(_-1),!1));let ne=_<h.length-1?[RM(`→`,y(_+1),!1)]:[];if(m===void 0){let e=v.flatMap(e=>e.indices);return[cN([...te,...e.map(e=>ee(e,c.options[e])),...ne],i)]}let re=new z({bold:!0}),w=h.length>1?` ${_+1}/${h.length}`:``,ie=v.length===1?[new V(`${v[0].label}${w}`,{style:re})]:[],T=[cN([...te,...ie,...ne],i)];for(let e of v){v.length>1&&T.push(cN([new V(e.label,{style:re})],i));let t=Math.max(...e.indices.map(e=>rN(c.options[e])));for(let n of e.indices){let e=c.options[n],r=m.entries[n].description,a=r===void 0?void 0:EO(r),o=` `.repeat(t-rN(e)+2),s=a===void 0?e:`${e}${o}${a}`;T.push(cN([ee(n,$M(s,p))],i))}}return T}function fN(e,t){return{picker:{fn:(n,r,i,a,...o)=>{fy(`picker "${n}"`,[`closeOnPick`,`paged`],o);let s=lN(e,r,`set-int`,`an int action ({ set, int: true })`),c=uN(e,n,`picker`);if(c.library!==void 0)throw Error(`{{ picker "${n}" … }} ranges a catalogue domain, which lays out as one row per member; a catalogue renders in a {{ menu }} body`);let l=nN(t,`{{ picker }}`);if(l.bg===void 0)throw Error(`{{ picker }} is not available while segments.${l.segName}'s own "bg:" is being evaluated — a picker is drawn on that background`);let[u]=dN(n,{key:s.key,stateVar:s.stateVar},[[s.key,`-1`]],i===!0,a===!0,e,YM(l,pa(void 0),e,c.paletteOf,t.drawnAt()),KM(l.palette,l.bg,t.drawnAt()));return u},argTypes:[`string`,`string`,`bool`],arity:{kind:`variadic`},returnType:`T`}}}function pN(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+rN(e(-(s+1)))+1+rN(e(s+1))+1;if(t>r)break;o=t,s+=1}return s}function mN(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=IM(a,`session.id`),{options:c}=t,l=c.length,u=IM(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=sD(BM(o,p(e),p(e),a,s).effects);return m.set(e,n),n},g=e=>RM(p(e),h(e),p(e)===u,r({index:f(e),count:l},p(e))),_=pN(p,l,rN(`◀`)+1+rN(p(0))+1+rN(`▶`),aN(n),i),v=e=>Array.from({length:_},(t,n)=>g(e*(n+1)));return cN([...v(-1).reverse(),RM(`◀`,h(-1),!1),g(0),RM(`▶`,h(1),!1),...v(1)],!0)}function hN(e,t){return{carousel:{fn:(n,r,...i)=>{if(fy(`carousel "${n}"`,[`neighbours`],i),r!==void 0&&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=uN(e,n,`carousel`);return mN(n,o,e,YM(nN(t,`{{ carousel }}`),pa(void 0),e,o.paletteOf,t.drawnAt()),a)},argTypes:[`string`,`int`],arity:{kind:`variadic`},returnType:`T`}}}const gN=[`~/code`,`main`,`opus`,`42%`,`5m`,`$1.20`];function _N(e,t,n){let r=Fa(e,{hue:aa,depth:0},n);return[sa(t).map((t,n)=>({text:gN[n%gN.length],colour:ba(e,t)})),[{text:`▾ open`,colour:r.state},{text:`menu`,colour:r.plane}],[{text:`warn`,colour:ya(e,`warning`)},{text:`error`,colour:ya(e,`error`)}]]}function vN(e,t,n,r){let i=_N(e,t,n).flatMap((t,r)=>t.map(({text:t,colour:i},a)=>({gap:r>0&&a===0?` `:``,cell:new V(` ${t} `,{style:GM(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 V(e)),a.push(t)}let s=V.fromFragments(a);return s.overflow=`ignore`,s.end=``,s}function yN(e,t){return{themePreview:{fn:()=>vN(e.palette,e.variation,t.drawnAt(),aN(e)),argTypes:[],arity:{kind:`exact`},returnType:`T`}}}const bN=e=>e.slice(e.lastIndexOf(`.`)+1),xN=(e,t)=>{let n=new V(bN(e));return n.truncate(t,{marker:`…`}),n.plain};function SN(e,t){let n=e.map(e=>e.map(({name:e})=>rN(bN(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 CN(e,t,n,r){let i=SN(e,r),a=e.map(e=>{let a=[],o=0;for(let{name:s,address:c,palette:l}of e){let e=new V(` ${xN(s,i)} `,{style:GM(l,Ka(l,{kind:`bar`,variation:t,address:c},n).tint,n)});if(o+=e.cellLength,o>r)break;a.push(e)}return a}),o=V.fromFragments(a.flatMap((e,t)=>t===0?e:[new V(`
192
- `),...e]));return o.overflow=`ignore`,o.end=``,o}function wN(e,t){return{layoutPreview:{fn:()=>CN(e.layout(),e.variation,t.drawnAt(),aN(e)),argTypes:[],arity:{kind:`exact`},returnType:`T`}}}function TN(e,t,n,r){let i=nN(r.activeSegment,`{{ menu }}`),a=r.action,o=p_(i.placementId,e,n.key),s=g_(o),c=f_(e),l=IM(a.store,o)===c,u=IM(a.store,`session.id`),d=l?Hc:c,f=RM(Gc(`{{ menu "${e}" }}`,t,2,+!!l),sD([{verb:IE,args:[u,o,d,s,`0`]}]),!1);return i.drops.push(...l?dN(e,{key:s,stateVar:s},[[o,Hc],[s,`0`]],n.closeOnPick,n.paged,a,YM(i,n.distribution,a,uN(a,e,`menu`).paletteOf,r.activeSegment.drawnAt()),KM(i.palette,Fa(i.palette,i.disclosure,r.activeSegment.drawnAt()).plane,r.activeSegment.drawnAt())):[]),f}const EN=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function DN(e,t){let n=t[t.length-1],r=EN(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:b_(r??{})}}function ON(e){return{menu:{fn:(t,...n)=>{let{displays:r,options:i}=DN(t,n);return TN(t,r,i,e)},argTypes:[`string`,`value`],arity:{kind:`variadic`},returnType:`T`}}}function kN(e){let{value:t,max:n,width:r,filled:i,empty:a,colourAt:o}=e,s=AN(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 V(t?i:a,{style:l===void 0?void 0:new z({color:l})}))}let l=V.fromFragments(c);return l.end=``,l.overflow=`ignore`,l}function AN(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 jN(e){let t={fn:(()=>{let t=nN(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:[],arity:{kind:`exact`},returnType:`string`},n={fn:(()=>nN(e,`{{ tint }}`).tint.hex),argTypes:[],arity:{kind:`exact`},returnType:`string`},r=Qv(()=>nN(e,`{{ color }} / {{ ramp }} / {{ gauge }}`).palette),i={fn:((e,t,n,i,a,o,...s)=>{let c=o===void 0?void 0:[o,...MN(s)];return kN({value:e,max:t,width:n,filled:i,empty:a,colourAt:c===void 0?void 0:e=>String(r.ramp.fn(e,...c))})}),argTypes:[`float`,`float`,`int`,`string`,`string`,`string`],arity:{kind:`variadic`},returnType:`T`};return{...r,bgOf:t,tint:n,gauge:i}}function MN(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 NN(e){let t=[],n=[];for(let r of e){if(!r.contains(`
186
+ `,c.join(e,`lib`),t.sessionId,t.cwd],env:yA(t),timeoutMs:3e3,category:`memento.read`});return n.ok?xA(n.stdout):X(bA(n))}function CA(e,t,n){let r=Ae({bin:c.join(e,hA),args:n.kind===`set`?[`set`,`session`,n.to]:[`clear`,`session`],env:yA(t),timeoutMs:5e3,category:`memento.move`});if(!r.ok)throw Error(bA(r))}function wA(){return{locate:e=>vA(OD(e.claudeConfigDir),e.projectDir),read:SA,move:CA}}function TA(e,t,n){let r=n===void 0?``:`CLAUDE_CONFIG_DIR=${wD(n)} `,i=e.added_dirs.map(e=>` --add-dir ${wD(e)}`).join(``);return`cd ${wD(e.project_dir)} && ${r}claude --resume ${wD(t)}${i}`}function EA(e,t,n){let r=D_(t(`preset`),e.globals.preset,e.presets),i=A_(e,r),a=t(`edit.mode`)===`arrange`?e.editGlobals:{};return{preset:r,presetCustomized:n(r),theme:qb(a.palette,t(`theme`),i.palette),style:fo(a.style,t(`style`),i.style,e.styles),endcaps:ho(a.endcaps,t(`endcaps`),i.endcaps),variation:So(a.variation,t(`variation`),i.variation),separator:a.default_separator??i.default_separator,autoWrap:ko(a.autoWrap,t(`autoWrap`),i.autoWrap),padding:jo(a.padding,t(`padding`),i.padding),charset:a.charset??i.charset??`unicode`,updateNotice:Ao(a.updateNotice,t(`updateNotice`),i.updateNotice),colorCompatibility:a.colorCompatibility??i.colorCompatibility??`truecolor`}}function DA(e,t){return{endcaps:e.endcaps,separator:e.separator,colorCompatibility:e.colorCompatibility,wrap:e.autoWrap,padding:e.padding,charset:e.charset,width:t}}function OA(e){return{theme:e.theme,style:e.style,preset:e.preset,variation:e.variation}}function kA(e){return{preset:{effective:e.preset,customized:e.presetCustomized,bundled:$k(e.preset)},endcaps:{effective:e.endcaps},variation:{effective:e.variation},charset:{effective:e.charset},colorCompatibility:{effective:e.colorCompatibility},autoWrap:{effective:e.autoWrap},padding:{effective:e.padding},updateNotice:{effective:e.updateNotice}}}const AA=10*1e3;function jA(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 MA(e,t){if(!(t<60))return e*3600/t}function NA(e,t,n,r){let i=r-t;if(i<50||i>AA)return;let a=n-e;if(!(a<=0))return a*1e3/i}function PA(e){let{prev:t,cur:n}=e;if(t===void 0)return;let r=NA(t.input,t.atMs,n.input,n.atMs),i=NA(t.output,t.atMs,n.output,n.atMs),a=NA(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 FA(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>AA)continue;let o=NA(r.total,r.atMs,i.total,i.atMs);n.push(o??0)}if(n.length!==0)return n.join(`,`)}function IA(e){let t=e.indexOf(`.`);return t<0?e:e.slice(0,t)}function LA(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`,()=>IA(m.hostname())),i=n(`user`,()=>m.userInfo().username);return{host:{...r!==void 0&&{name:r},...i!==void 0&&{user:i},...e.ssh!==void 0&&{ssh:e.ssh}},failures:t}}function RA(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=>gv(t,e.helpers).keys(),o=A_(e,t);for(let e of io){let t=o[e];if(ao(t))for(let e of a(t))r.push(e)}for(let n of Ns(k_(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 s=new Set;for(;r.length>0;){let e=r.pop();for(let t of BA(n,e)){if(i.has(t))continue;i.add(t);let e=n.get(t);if(e){if(e.kind===`input`)s.add(e.path);else if(e.kind===`template`)for(let t of a(e.template))r.push(t)}}}return s}function zA(e){let t=new Map;return n=>{let r=t.get(n);if(r!==void 0)return r;let i=RA(e,n);return t.set(n,i),i}}function BA(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 VA(e,t){for(let n of e)if(n===t||n.startsWith(t+`.`))return!0;return!1}function HA(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 UA(e,t,n,r,i,a,{configPath:o,...s}){let c=e=>VA(r,e),l=(t.clock??(()=>new Date))().getTime(),u=(e,t,n)=>t?n().catch(t=>X(`${e}: ${String(t)}`)):Promise.resolve(Y),[d,f,p,m,h,g,_,v,y,b,x]=await Promise.all([u(`git`,c(`git`),()=>t.gitProvider.getGitInfo(n??e.workspace?.current_dir,HA(r),e.workspace?.project_dir)),u(`session`,c(`session.cost`)||c(`session.tokens`)||c(`burn`),()=>t.usageStore.getUsageInfo(e.session_id,e)),u(`today`,c(`today`),()=>t.usageStore.getTodayInfo(e,a.claudeConfigDir)),u(`context`,c(`context`)||c(`autocompact`),()=>t.contextProvider.getContextInfo(e)),u(`metrics`,c(`metrics`)||c(`burn`),()=>t.metricsProvider.getMetricsInfo(e.session_id,e)),u(`activity`,c(`activity`),()=>t.activityProvider.getActivityInfo(e.session_id,e)),u(`tmux`,c(`tmux`),()=>t.tmuxService.getSessionId()),u(`cache`,c(`cache`),()=>uA(e.transcript_path)),u(`speed`,c(`speed`),()=>t.usageStore.observeSpeed(e.session_id,e.transcript_path,l)),u(`memento`,c(`memento`),()=>t.mementoProvider.getCeiling(pA({sessionId:e.session_id,projectDir:e.workspace?.project_dir??``,cwd:n??e.workspace?.current_dir??``},a))),u(`autocompact`,c(`autocompact`),()=>Promise.resolve(t.autoCompact(DD(ED(a.claudeConfigDir)))))]),S=[],C=e=>{if(e.kind===`failed`){S.push(e.reason);return}return e.kind===`ok`?e.value:void 0},ee=ZA(d);S.push(...ee.failures);let te=LA(a);S.push(...te.failures);let ne=C(f),re=C(p),w=C(m),ie=C(h),T=C(g),E=C(_),ae=C(v),oe=KA(b);b.kind===`failed`&&S.push(`memento: ${b.reason}`);let se=WA(x,w?.maxTokens);x.kind===`failed`&&S.push(`autocompact: ${x.reason}`);for(let e of S)t.log(`warn`,`provider fetch failed: ${e}`);let ce=e.rate_limits?.five_hour,le=e.rate_limits?.seven_day,ue=ce?jA(ce.used_percentage,ce.resets_at,18e6,l):void 0,de=le?jA(le.used_percentage,le.resets_at,6048e5,l):void 0,fe=ne?.session.cost,pe=ie?.sessionDuration,me=c(`burn`)&&fe!=null&&pe!=null?MA(fe,pe):void 0,he=C(y),ge=he===void 0?void 0:PA(he),_e=he===void 0?void 0:FA(he),ve=ge!==void 0||_e!==void 0?{...ge,..._e!==void 0&&{history:_e}}:void 0,D=XA(process.env.HOME??process.env.USERPROFILE),ye=e.workspace?{...e.workspace,current_dir:XA(e.workspace.current_dir)??``,project_dir:XA(e.workspace.project_dir)??``,added_dirs:(e.workspace.added_dirs??[]).map(e=>XA(e)??e)}:e.workspace,be=ne===void 0?void 0:YA({cost:ne.session.cost,tokens:ne.session.tokens}),xe=re===void 0?void 0:{cost:re.cost,tokens:re.tokens},Se=ie===void 0?void 0:YA({lastResponseTime:ie.lastResponseTime,responseTime:ie.responseTime,sessionDuration:ie.sessionDuration,messageCount:ie.messageCount,linesAdded:ie.linesAdded,linesRemoved:ie.linesRemoved}),Ce=T===void 0?void 0:qA(T);return{...e,...ye!==void 0&&{workspace:ye},...D!==void 0&&{home:D},...ee.git!==void 0&&{git:ee.git},...E!==void 0&&{tmux:{session:E}},host:te.host,...kA(i),history:t.history(e.session_id),navigation:{back:t.navigation(e.session_id)},...s,...o!==null&&{configPath:o},resumeCommand:TA(ye,e.session_id,a.claudeConfigDir),...be!==void 0&&{session:be},...xe!==void 0&&{today:xe},...me!==void 0&&{burn:{costPerHour:me}},...ve!==void 0&&{speed:ve},...c(`block`)&&ce!==void 0&&{block:{nativeUtilization:ce.used_percentage,resetsAt:ce.resets_at,...ue!==void 0&&{etaMinutes:ue}}},...le!==void 0&&{weekly:{percentage:le.used_percentage,resetsAt:le.resets_at,...de!==void 0&&{etaMinutes:de}}},...ae!==void 0&&{cache:{expiresAt:ae}},...w!==void 0&&{context:{totalTokens:w.totalTokens,contextLeft:w.contextLeftPercentage}},...Se!==void 0&&{metrics:Se},...Ce!==void 0&&{activity:Ce},...oe!==void 0&&{memento:oe},...se!==void 0&&{autocompact:se}}}function WA(e,t){switch(e.kind){case`absent`:return;case`failed`:return{error:e.reason};case`ok`:return Vk(e.value,t)}}const GA=e=>e.trim().split(`
187
+ `).at(-1).trim();function KA(e){switch(e.kind){case`absent`:return;case`failed`:return{error:GA(e.reason)};case`ok`:{let{ceiling:t,session:n}=e.value;return{ceiling:t===`off`?0:t,off:t===`off`,session:n??``}}}}function qA(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=JA(e.running),i=JA(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 JA(e){return e.length===0?void 0:e.map(e=>`${e.name}:${e.count}`).join(`,`)}function YA(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 XA(e){return e===void 0||e.length===0||c.sep!==`\\`?e:e.replace(/\\/g,`/`)}function ZA(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 QA={theme:e=>e.theme.kind===`decided`?e.theme.name:null,preset:e=>e.preset,style:e=>e.style.kind===`decided`?e.style.name:null,endcaps:e=>e.endcaps,variation:e=>e.variation,autoWrap:e=>e.autoWrap?Co:wo,padding:e=>String(e.padding),updateNotice:e=>e.updateNotice?Co:wo},$A=Object.entries(kb),ej=new Set(Ab.map(e=>e.sessionKey)),tj=()=>!1;function nj(e,t){return EA(e,e=>ej.has(e)?t(e):null,tj)}function rj(e,t,n,r){return e.flatMap(([e,i])=>{let a=QA[e](t);return a===null||a===QA[e](n(e))?[]:[{...i,value:a,target:r(i)}]})}function ij(e,t,n){return QA[n](nj(e,t))}function aj(e,t){let n=nj(e,t),r=EA(e,()=>null,tj),i=EA(e,e=>e===kb.preset.sessionKey?n.preset:null,tj);return rj($A,n,e=>e===`preset`?r:i,t=>oj(e,n.preset,t.configKey))}function oj(e,t,n){return n in(O_(e.presets,t).globals??{})?lx(t,n):n}function sj(e,t,n){let r=D_(t(kb.preset.sessionKey),e.globals.preset,e.presets),i=ux(n);return{key:i?.scope===`globals`?oj(e,r,i.field):n,globals:A_(e,r)}}function cj(e,t){let{preset:n}=nj(e,t);return dj(e,n).flatMap(({id:e,setting:r,key:i,decl:a,saved:o})=>{let s=t(i),c=s===null?void 0:Ys(a,s);return c===void 0||Js(c)===Js(o)?[]:[{preset:n,id:e,setting:r,key:i,value:c}]})}function lj(e,t,n){let r=new Map(n.map(e=>[e.key,e.value]));return E_(e.presets).flatMap(n=>{let i=dj(e,n);return[...new Set(i.filter(e=>r.has(e.key)).map(e=>e.id))].flatMap(e=>{let n=i.filter(t=>t.id===e);return Ks(Object.fromEntries(n.map(e=>[e.setting,e.decl])),Object.fromEntries(n.map(e=>{let n=r.get(e.key)??t(e.key),i=n===null?void 0:Ys(e.decl,n);return[e.setting,i??e.saved]}))).map(({message:t})=>`placement "${e}": ${t}`)})})}const uj=new WeakMap;function dj(e,t){let n=uj.get(e)??new Map;uj.set(e,n);let r=n.get(t);if(r!==void 0)return r;let i=[...Ns(k_(e,t).node)].flatMap(t=>t.kind!==`segment`||t.drafts===void 0?[]:Object.entries(t.drafts).map(([n,{id:r,key:i}])=>{let a=Ws(e.segments[t.name])[n];return{id:r,setting:n,key:i,decl:a,saved:t.settings?.[n]??a.default}})),a=[...new Map(i.map(e=>[e.key,e])).values()];return n.set(t,a),a}function fj(e,t){let n=nj(e,t),r=EA(e,e=>e===kb.preset.sessionKey?n.preset:null,tj);return{from:n.preset,globals:O_(e.presets,n.preset).globals??{},picks:rj($A.filter(([e])=>e!==`preset`),n,()=>r,e=>e.configKey),placements:cj(e,t)}}function pj(e){return{sessionKeys:Ab.filter(t=>t.configKey===e).map(e=>e.sessionKey),fileKeys:[e,...Sl(e)?Qk.map(t=>lx(t,e)):[]]}}function mj(e){return new Set(Ab.map(e=>e.configKey).filter(t=>pj(t).fileKeys.some(t=>_j(e,gj(t)))))}function hj(e,t,n){let r=aj(e,n),i=new Set(r.map(e=>e.configKey)),a=Fb(e=>i.has(kb[e].configKey)||t.has(kb[e].configKey));return{unsaved:r.length+cj(e,n).length,resettable:a}}function gj(e){let t=ux(e);if(t===null||t.scope===`preset-root`)throw Error(`reset layer "${e}" is not a value path`);return dx(t)}function _j(e,t){let[n,...r]=t;return n===void 0?e!==void 0:typeof e==`object`&&!!e&&_j(e[n],r)}const vj=$a(),yj=new Set(vj),bj=new Set(po),xj=e=>e?yj.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown theme "${e}" (have: ${vj.join(`, `)})`}:{ok:!1,reason:`theme name is required`},Sj=e=>e?bj.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown endcaps "${e}" (have: ${po.join(`, `)})`}:{ok:!1,reason:`endcaps name is required`},Cj=new Set([`1`,`true`]),wj=new Set([`0`,`false`]),Tj={endcaps:Sj,theme:xj,"toolbar-expanded":e=>Cj.has(e)?{ok:!0,value:`1`}:wj.has(e)?{ok:!0,value:``}:{ok:!1,reason:`expected boolean-ish (1, 0, true, false), got "${e}"`}},Ej=Ok(Tj,`state`,Nj);function Dj(e,t){return Ej.register(e,t)}function Oj(e){return Ej.gateFor(e)}function kj(e,t){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:tx(e.from,t).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}}]:[]}function Aj(e){return e.filter(e=>e.spec.kind!==`allow-list`||!Object.hasOwn(Tj,e.key))}function jj(e,t,n){let r=Ib.get(n);if(r!==void 0)return ij(e,t,r);let i=Object.values(e.variables).find(e=>e.kind===`state`&&e.key===n);return i?.kind===`state`?i.default??null:null}function Mj(e){let t=$b(e);return Aj(Object.values(e.actions).flatMap(e=>kj(e,t)))}function Nj(e){return Ek(Mj(e))}const Pj=`update.dismissed`,Fj=`updateNotice`,Ij=kb.updateNotice.sessionKey;function Lj(e){return e.kind===`source`?e.newer.digest:PD(e.newer)}const Rj=e=>`${e.version} [${dk(e.digest)}]`;function zj(e){switch(e.kind){case`source`:return{headline:`Newer source`,newer:Rj(e.newer),running:Rj(e.running),act:`rebuild`,busy:`rebuilding…`,command:{bin:`pnpm`,args:[`build`],cwd:e.root}};case`release`:return{headline:`Newer release`,newer:PD(e.newer),running:PD(e.running),act:`upgrade`,busy:`upgrading…`,command:{bin:`pnpm`,args:[`dlx`,`${ID}@${PD(e.newer)}`,`install`]}}}}const Bj={kind:`idle`},Vj={kind:`running`};function Hj(e,t,n){if(e===null)return[];let r=Lj(e);if(!n.enabled||n.dismissed===r)return[];let i=zj(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(`
188
+ `),c=hD([{verb:XE,args:[s]}]),l=t.kind===`running`?$O(`[${i.busy}]`,c):$O(`[${i.act}]`,hD([{verb:cD,args:[n.sessionId]}]));return[{severity:QO,message:s,lines:[[$O(a,c),l,$O(`[dismiss]`,hD([{verb:WE,args:[n.sessionId,Pj,r]}])),$O(`[disable]`,hD([{verb:ZE,args:[n.sessionId,Fj,`false`]},{verb:WE,args:[n.sessionId,Ij,`false`]}]))],...o.map(e=>[$O(e,c)])]}]}function Uj(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 Wj(e){switch(e.kind){case`current`:return[`info`,`build: current ${Rj(e.stamp)}`];case`stale`:return[`info`,`build: stale — source ${Rj(e.source)}, running ${Rj(e.running)}`];case`not-source-checkout`:return[`info`,`build: not a source checkout`];case`unchecked`:return[`warn`,`build: unchecked: ${e.reason}`]}}function Gj(e){switch(e.kind){case`current`:return[`info`,`release: current ${PD(e.installed)}`];case`stale`:return[`info`,`release: stale — latest ${PD(e.latest)}, running ${PD(e.installed)}`];case`ahead`:return[`info`,`release: ahead — running ${PD(e.installed)}, latest ${PD(e.latest)}`];case`unchecked`:return[`warn`,`release: unchecked: ${e.reason}`]}}function Kj(e){let t=null;return([n,r])=>{r!==t&&(t=r,e(n,r))}}const qj=e=>e.split(/\r?\n/).map(e=>e.trim()).filter(e=>e!==``).at(-1);function Jj(e){let t=e.exitCode===null?``:` (exit ${e.exitCode})`,n=qj(e.stderr)??e.error??qj(e.stdout)??`no output`;return`${e.reason}${t}: ${n}`}function Yj(){let e=[Ak(Fj,[`false`]),Dj(Ij,[`false`]),Dj(Pj,[])];return()=>e.forEach(e=>e())}function Xj(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=Bj,d=null,f=Kj(s),p=Kj(s),m=()=>Uj(c,l);function h(){let e=m(),t=e===null?null:Lj(e);(d===null?null:d.identity)!==t&&(d?.dispose(),d=t===null?null:{identity:t,dispose:Dj(Pj,[t])})}function g(){c=hk(t,pk),f(Wj(c)),h()}async function _(){l=RD(xD,await LD(ID,a,i)),p(Gj(l)),h()}return{arm(){Yj(),g(),setInterval(g,n).unref(),c.kind===`not-source-checkout`&&(_(),setInterval(()=>void _(),r).unref())},notice:e=>Hj(m(),u,e),act(){let e=m();if(e===null)throw new $(`apply-update: nothing newer is known to apply`);let t=zj(e);if(u.kind===`running`)throw new $(`apply-update: already ${t.busy}`);u=Vj,s(`info`,`apply-update: ${t.act} — ${t.command.bin} ${t.command.args?.join(` `)??``}`),ke({...t.command,category:`update.apply`,timeoutMs:6e5}).then(n=>{if(n.ok){u=Bj,s(`info`,`apply-update: ${t.act} succeeded`),g(),o();return}let r=Jj(n);u={kind:`failed`,identity:Lj(e),reason:r},s(`error`,`apply-update: ${t.act} failed: ${r}`)})}}}var Zj=class{static CACHE_DIR=Fe();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 ce(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 oe(`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 ce(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 ce(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 Qj={"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 $j=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 Zj.getUsageCache(`pricing`,e)}static async saveDiskCache(e){await Zj.setUsageCache(`pricing`,e)}static async fetchPricingData(){return new Promise(e=>{let t=new w(this.GITHUB_PRICING_URL),n=se({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(Qj).length} models`),this.executionCache=Qj,D(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(Qj).length} models`),Qj)}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`}};const eM=/<command-name>\s*([^<\s][^<]*?)\s*<\/command-name>/;function tM(e){if(typeof e==`string`)return eM.exec(e)?.[1]}function nM(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 rM(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=nM(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?tM(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 iM(e){if(e!==void 0)return[e];let t=h();return[f(t,`.config`,`claude`),f(t,`.claude`)].filter(e=>a(e))}async function aM(e){let t=[];for(let n of e){let e=f(n,`projects`);if(a(e))try{let n=await rA(e,{withFileTypes:!0});for(let r of n)if(r.isDirectory()){let n=f(e,r.name);t.push(n)}}catch(t){D(`Failed to read projects directory ${e}:`,t)}}return t}async function oM(e,t,n){let r=[],i=f(t,e,`subagents`);try{let t=(await rA(i)).filter(e=>e.startsWith(`agent-`)&&e.endsWith(`.jsonl`));for(let a of t){let t=f(i,a);if(n?.has(t)){r.push(t);continue}try{let n=(await iA(t,`utf-8`)).split(`
189
+ `)[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 sM(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 cM=new Map;async function lM(e){try{let t=await aA(e),n=t.size,r=cM.get(e);if(r&&r.mtime===t.mtimeMs&&r.size===n)return D(`[parse-cache] hit ${e}`),cM.delete(e),cM.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 mM(e)):i=await fM(e),D(`Parsed ${i.length} entries from ${e}`),n>5242880?i:(cM.delete(e),cM.size>=16&&cM.delete(cM.keys().next().value),cM.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 uM(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:rM(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 dM(e){let t=[];for(let n of e.split(`
190
+ `))if(n.trim())try{let e=uM(JSON.parse(n));e&&t.push(e)}catch(e){D(`Failed to parse JSONL line: ${e}`);continue}return t}async function fM(e){return dM(await iA(e,`utf-8`))}async function pM(e,t){let n=await oA(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:dM(r.subarray(0,c+1).toString(`utf-8`)),cursor:{offset:i+c+1,mtimeMs:a,ino:o},reset:s})}async function mM(e){return new Promise((t,n)=>{let r=[],a=i(e,{encoding:`utf8`}),o=le({input:a,crlfDelay:1/0});o.on(`line`,e=>{let t=e.trim();if(t)try{let e=uM(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 hM=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 gM(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 _M=new Map,vM={cost:0,input:0,output:0,cacheCreation:0,cacheRead:0},yM={cost:null,calculatedCost:null,officialCost:null,tokens:null,tokenBreakdown:null};function bM(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function xM(){let e=new Date;return e.setHours(0,0,0,0),e.setDate(e.getDate()-1),e.getTime()}function SM(){return{input:0,output:0,cacheCreation:0,cacheRead:0}}async function CM(e,t,n,r){let i=bM(new Date(xM())),a=e&&!t?e:void 0,o=a?.entries??0,s=a?.cost??0,c=a?{...a.breakdown}:SM(),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 $j.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=bM(new Date(e.timestamp));if(r<i)continue;let a=l.get(r)??{...vM};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 wM(e){let t=0,n=0,r=SM(),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)??{...vM};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:yM,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 TM(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 EM=class{entries=new Map;flight=new hM;seeded=new Map;seededDay=``;speedRings=new Map;speedFlight=new hM;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:yM,i=t?.cost?.total_cost_usd??null;return J({session:{...r,cost:i??r.cost,officialCost:i}})}async getTodayInfo(e,t){let n=bM(new Date),r=iM(t);try{await this.ensureSeeded(n,r)}catch(e){return X(`usage seed: ${e instanceof Error?e.message:String(e)}`)}let i=await this.ingest(e?.session_id??``,e?.transcript_path);if(i.kind===`failed`)return i;let a=r.map(e=>f(e,`projects`)+p),o={...vM},s=!1;for(let[t,r]of this.entries){let i=r.transcriptPath??``,c=t===e?.session_id||a.some(e=>i.startsWith(e))?r.days:_M;s||=c.has(n);let l=c.get(n)??vM;o.cost+=l.cost,o.input+=l.input,o.output+=l.output,o.cacheCreation+=l.cacheCreation,o.cacheRead+=l.cacheRead}return s?J({cost:o.cost,tokens:o.input+o.output+o.cacheCreation+o.cacheRead,tokenBreakdown:{input:o.input,output:o.output,cacheCreation:o.cacheCreation,cacheRead:o.cacheRead},date:n}):Y}async observeSpeed(e,t,n){let r=eA(t);return this.speedFlight.run(`${e}:${r}`,async()=>{let i=await this.ingest(e,t,r);if(i.kind===`failed`)return i;let a=gM(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??eA(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 oM(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 pM(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 CM(r,l,s,c)),e===t&&(a=c.mtimeMs)}return J({files:i,...wM(i),mainMtime:a})}ensureSeeded(e,t){this.seededDay!==e&&(this.seeded.clear(),this.seededDay=e);let n=t.join(`\0`),r=this.seeded.get(n);if(r)return r;let i=this.seed(t);return this.seeded.set(n,i),i.catch(()=>{this.seeded.get(n)===i&&this.seeded.delete(n)}),i}async seed(e){let t=xM(),n=await aM(e),r=[];for(let e of n){let n;try{n=await rA(e)}catch{continue}for(let i of n){if(!i.endsWith(`.jsonl`))continue;let n=f(e,i),a;try{a=(await aA(n)).mtimeMs}catch{continue}a<t||r.push({sessionId:i.slice(0,-6),path:n,mtime:a})}}await TM(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} dirs=${e.join(`,`)}`)}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()}};function DM(e,t){return e===void 0?!0:e.evaluate(t).map(e=>e.plain).join(``)!==`false`}function OM(e,t){let n=V.fromFragments(e);return n.end=``,n.overflow=`ignore`,t!==void 0&&!t.isNull&&(n.style=t),n}function kM(e,t,n){e.cellLength>t?e.truncate(t,{mode:n.truncate,marker:`…`}):e.cellLength<t&&e.align(n.justify,t)}function AM({lead:e,text:t,trail:n}){return[...e===void 0?[]:[e],t,...n===void 0?[]:[n]]}function jM(e){let t=AM(e);if(t.length===1)return e.text;let n=OM(t);return n.style=e.text.style,n}function MM(e,t){let{width:n,justify:r,truncate:i,baseStyle:a,padding:o,lead:s=[],trail:c=[]}=t;if(e.length===0)return[];let l=OM(e,a).pad(o),u=new V(` `.repeat(o)),d={...s.length>0&&{lead:OM([u,...s],a)},...c.length>0&&{trail:OM([...c,u],a)}};if(n===`auto`)return[{text:l,...d}];let f={justify:r,truncate:i};return n===`fill`?[{text:l,fill:f,...d}]:(kM(l,n,f),[{text:l,...d}])}const NM=RegExp(`\\x1b\\[[0-9;]*m|${xi.source}`,`g`);function PM(e){return j(e.replace(NM,``))}function FM(e,t){let n=e.map(jM),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=JO(n,t).split(`
191
+ `);if(i.length>1)return n;let a=Math.max(0,t.width-PM(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];kM(l,l.cellLength+c,i),n[t]=jM(e[t])}),n}function IM(e,t){let n=[],r=[],i=()=>{if(!r.length)return;let e=LM(r,t);e.plain.length>0&&n.push(e),r=[]};for(let a of e)if(zM(a.style).link){i();let e=LM([a],t);e.plain.length>0&&n.push(e)}else r.push(a);return i(),n}function LM(e,t){let n=t!==void 0&&!t.isNull?e.map(e=>RM(e,t)):e,r=V.fromFragments(n);return r.end=``,r.overflow=`ignore`,n.length===1?r.style=n[0].style:t!==void 0&&!t.isNull&&(r.style=t),r}function RM(e,t){let n=e.copy();return n.style=t.add(zM(e.style)),n}function zM(e){return e instanceof z?e:z.parse(e)}function BM(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,VM(e,t,o,n,r,i));return i}function VM(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=tx(n.from,i);return{kind:`set-option`,key:n.set,stateVar:e,options:[...t.members],paletteOf:t.paletteOf,library:t.library}}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=Nb.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=tx(n.from,i);return{kind:`persist-option`,key:n.persist,stateVar:e,options:[...t.members],paletteOf:t.paletteOf,library:t.library}}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=tx(n.insertSegmentFrom,i);return{kind:`layout-op-option`,key:n.persist,anchor:n.anchor,relation:n.relation,options:[...e.members],paletteOf:e.paletteOf,library:e.library}}return{kind:`persist-bounded`,key:n.persist,by:n.by}}if(`copy`in n)return{kind:`copy`,text:UM(e,n.copy,t)};if(`open`in n)return{kind:`open`,target:UM(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(`ceiling`in n)return{kind:`ceiling`,args:qC(n)};if(`slash`in n)return{kind:`slash`,line:n.slash};if(`undo`in n)return{kind:`undo`};if(`redo`in n)return{kind:`redo`};if(`back`in n)return{kind:`back`};if(`rewind`in n)return{kind:`rewind`};if(`save`in n)return{kind:`save`};if(`preset`in n)return n.preset===`save`?{kind:`preset-save`}:{kind:`preset-delete`,name:UM(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 HM(e){return e.kind===`do`?HM(e.head):e}function UM(e,t,n){try{return e(t)}catch(e){throw Error(`Template parse error in actions.${n}: ${e.message}`,{cause:e})}}function WM(e,t){return e.has(t)?kv(e.read(t)):``}function GM(e,t){return e.evaluate(t).map(e=>e.plain).join(``)}function KM(e,t,n,r){let i=new V(e,{style:z.combine([r,new z({link:t,bold:n})])});return i.overflow=`ignore`,i.end=``,i}function qM(e,t){return Math.max(e.members.indexOf(WM(t,e.stateVar)),0)}function JM(e,t,n,r,i){switch(e.kind){case`set-literal`:{let t=WM(r,e.stateVar);return{effects:[{verb:WE,args:[i,e.key,e.value]}],active:t===e.value}}case`set-option`:{let a=n??t,o=WM(r,e.stateVar);return{effects:[{verb:WE,args:[i,e.key,a]}],active:o===a}}case`set-int`:{let a=n??t,o=WM(r,e.stateVar);return{effects:[{verb:WE,args:[i,e.key,a]}],active:o===a}}case`set-cycle`:{let t=e.members[(qM(e,r)+1)%e.members.length];return{effects:[{verb:WE,args:[i,e.key,t]}],active:!1}}case`set-bounded`:return{effects:[{verb:GE,args:[i,e.key,String(e.by)]}],active:!1};case`copy`:return{effects:[{verb:KE,args:[GM(e.text,xy(r))]}],active:!1};case`open`:return{effects:[{verb:qE,args:[GM(e.target,xy(r))]}],active:!1};case`persist-literal`:{let t=WM(r,e.stateVar);return{effects:[{verb:ZE,args:[i,e.key,e.value]}],active:t===e.value}}case`persist-option`:{let a=n??t,o=WM(r,e.stateVar);return{effects:[{verb:ZE,args:[i,e.key,a]}],active:o===a}}case`persist-cycle`:{let t=e.members[(qM(e,r)+1)%e.members.length];return{effects:[{verb:ZE,args:[i,e.key,t]}],active:!1}}case`persist-bounded`:return{effects:[{verb:QE,args:[i,e.key,String(e.by)]}],active:!1};case`reset`:return{effects:[{verb:nD,args:[i,e.key]}],active:!1};case`undo`:return{effects:[{verb:iD,args:[i]}],active:!1};case`redo`:return{effects:[{verb:aD,args:[i]}],active:!1};case`back`:return{effects:[{verb:oD,args:[i]}],active:!1};case`rewind`:return{effects:[{verb:sD,args:[i]}],active:!1};case`save`:return{effects:[{verb:$E,args:[i]}],active:!1};case`preset-save`:return{effects:[{verb:eD,args:[i]}],active:!1};case`preset-delete`:return{effects:[{verb:tD,args:[i,GM(e.name,xy(r))]}],active:!1};case`doctor-run`:return{effects:[{verb:lD,args:[i]}],active:!1};case`doctor-fix`:return{effects:[{verb:uD,args:[i,e.check]}],active:!1};case`ceiling`:return{effects:[{verb:dD,args:[i,...e.args]}],active:!1};case`slash`:return{effects:[{verb:fD,args:[i,e.line]}],active:!1};case`layout-op`:return{effects:[{verb:rD,args:[i,e.key,gk(e.op)]}],active:!1};case`do`:{let a=JM(e.head,t,n,r,i);return{effects:[...a.effects,...e.rest.flatMap(e=>JM(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:rD,args:[i,e.key,gk(r)]}],active:!1}}}}function YM(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:qc(`action "${e}"`,n,t.members.length,qM(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 XM(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}=YM(e,HM(r),t,i),{effects:s,active:c}=JM(r,a,o,i,WM(i,`session.id`));return KM(a,hD(s),c)}function ZM(e){return{action:{fn:(t,...n)=>XM(t,n,e),argTypes:[`string`,`string`],arity:{kind:`variadic`},returnType:`T`}}}function QM(e,t){return KM(`✕`,hD([{verb:WE,args:[WM(e,`session.id`),t,Wc]}]),!1)}function $M(e,t,n){return new z({bgcolor:yn.fromRgba(t),color:yn.fromRgba(ja(e,t,n))})}function eN(e,t,n){return new z({color:yn.fromRgba(cr(xa(e,`warning`),t,Aa,n))})}function tN(e,t,n){return z.combine([$M(e,t,n),eN(e,t,n)])}function nN(e,t,n){return $M(e.palette,Wa(e.palette,e.disclosure,[t],n),n)}function rN(e,t,n,r,i){return r===void 0?n=>nN(e,{...n,distribution:t},i):(e,t)=>iN(r(t,n),i)}function iN(e,t){let n=xa(e,`background`);return new z({bgcolor:yn.fromRgba(n),color:yn.fromRgba(cr(xa(e,`primary`),n,4.5,t))})}function aN(e,t,n){let r=t.map(t=>({label:t.label,indices:e.flatMap((e,n)=>e.group===t.id?[n]:[])})).filter(e=>e.indices.length>0);if(r.reduce((e,t)=>e+t.indices.length,0)!==e.length){let n=new Set(t.map(e=>e.id)),r=e.flatMap((e,t)=>n.has(e.group)?[]:[`#${t} (group "${e.group}")`]);throw Error(`library: ${r.join(`, `)} name a group the domain does not list (${[...n].join(`, `)})`)}return n?r.flatMap(e=>oN(e.indices,8).map(t=>[{label:e.label,indices:t}])):[r]}function oN(e,t){return Array.from({length:Math.ceil(e.length/t)},(n,r)=>e.slice(r*t,(r+1)*t))}function sN(e,t){return new V(e).truncate(t,{marker:`…`}).plain}function cN(e){return{current:null,drawnAt:e}}function lN(e,t,n,r,i,a){let o={segName:t,placementId:n,palette:r,disclosure:i,tint:a,bg:void 0,drops:[]};return e.current=o,o}function uN(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 dN(e){return new V(e).cellLength}function fN(e){return Math.max(1,e.width-e.chromeCols-2*e.padding)}function pN(e){return Math.max(1,fN(e)-(dN(`✕`)+2*e.padding+e.seamCols))}function mN(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 hN(e,t){let n=dN(`✕`)+1,r=dN(`←`)+1+dN(`→`)+1,i=mN(e,t,n);return(i.length>1?mN(e,t,n+r):i).map(e=>[{label:``,indices:e}])}function gN(e,t){let n=[];for(let t of e)n.length>0&&n.push(new V(` `)),n.push(t);let r=V.fromFragments(n);return r.overflow=t?`ignore`:void 0,r.end=``,r}function _N(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 vN(e,t,n){let r=e.compiled.get(t),i=r&&HM(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 yN(e,t,n,r,i,a,o,s){let c=vN(a,e,`picker`),l=a.compiled.get(e),u=a.store,d=WM(u,`session.id`),f=`stateVar`in c?WM(u,c.stateVar):void 0,p=i?fN(a):1/0,m=c.library&&{groups:c.library.groups,entries:c.options.map(c.library.entry)},h=m===void 0?hN(c.options.map(dN),p):aN(m.entries,m.groups,i),g=parseInt(WM(u,t.stateVar),10),_=Number.isInteger(g)?Math.max(0,Math.min(g,h.length-1)):0,v=h[_]??[],y=e=>hD([{verb:WE,args:[d,t.key,String(e)]}]),b=n.flatMap(([e,t])=>[e,t]),x=hD([{verb:WE,args:[d,...b]}]),S=r?[{verb:WE,args:[d,...b]}]:[],C=e=>hD([...JM(l,e,e,u,d).effects,...S]),ee=(e,t)=>{let n=c.options[e];return KM(t,C(n),n===f,o({index:e,count:c.options.length},n))},te=[KM(`✕`,x,!1,s)];_>0&&te.push(KM(`←`,y(_-1),!1));let ne=_<h.length-1?[KM(`→`,y(_+1),!1)]:[];if(m===void 0){let e=v.flatMap(e=>e.indices);return[gN([...te,...e.map(e=>ee(e,c.options[e])),...ne],i)]}let re=new z({bold:!0}),w=h.length>1?` ${_+1}/${h.length}`:``,ie=v.length===1?[new V(`${v[0].label}${w}`,{style:re})]:[],T=[gN([...te,...ie,...ne],i)];for(let e of v){v.length>1&&T.push(gN([new V(e.label,{style:re})],i));let t=Math.max(...e.indices.map(e=>dN(c.options[e])));for(let n of e.indices){let e=c.options[n],r=m.entries[n].description,a=r===void 0?void 0:PO(r),o=` `.repeat(t-dN(e)+2),s=a===void 0?e:`${e}${o}${a}`;T.push(gN([ee(n,sN(s,p))],i))}}return T}function bN(e,t){return{picker:{fn:(n,r,i,a,...o)=>{hy(`picker "${n}"`,[`closeOnPick`,`paged`],o);let s=_N(e,r,`set-int`,`an int action ({ set, int: true })`),c=vN(e,n,`picker`);if(c.library!==void 0)throw Error(`{{ picker "${n}" … }} ranges a catalogue domain, which lays out as one row per member; a catalogue renders in a {{ menu }} body`);let l=uN(t,`{{ picker }}`);if(l.bg===void 0)throw Error(`{{ picker }} is not available while segments.${l.segName}'s own "bg:" is being evaluated — a picker is drawn on that background`);let[u]=yN(n,{key:s.key,stateVar:s.stateVar},[[s.key,`-1`]],i===!0,a===!0,e,rN(l,ma(void 0),e,c.paletteOf,t.drawnAt()),eN(l.palette,l.bg,t.drawnAt()));return u},argTypes:[`string`,`string`,`bool`],arity:{kind:`variadic`},returnType:`T`}}}function xN(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+dN(e(-(s+1)))+1+dN(e(s+1))+1;if(t>r)break;o=t,s+=1}return s}function SN(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=WM(a,`session.id`),{options:c}=t,l=c.length,u=WM(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=hD(JM(o,p(e),p(e),a,s).effects);return m.set(e,n),n},g=e=>KM(p(e),h(e),p(e)===u,r({index:f(e),count:l},p(e))),_=xN(p,l,dN(`◀`)+1+dN(p(0))+1+dN(`▶`),pN(n),i),v=e=>Array.from({length:_},(t,n)=>g(e*(n+1)));return gN([...v(-1).reverse(),KM(`◀`,h(-1),!1),g(0),KM(`▶`,h(1),!1),...v(1)],!0)}function CN(e,t){return{carousel:{fn:(n,r,...i)=>{if(hy(`carousel "${n}"`,[`neighbours`],i),r!==void 0&&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=vN(e,n,`carousel`);return SN(n,o,e,rN(uN(t,`{{ carousel }}`),ma(void 0),e,o.paletteOf,t.drawnAt()),a)},argTypes:[`string`,`int`],arity:{kind:`variadic`},returnType:`T`}}}const wN=[`~/code`,`main`,`opus`,`42%`,`5m`,`$1.20`];function TN(e,t,n){let r=La(e,{hue:sa,depth:0},n);return[ca(t.hues).map((t,n)=>({text:wN[n%wN.length],colour:Sa(e,t)})),[{text:`▾ open`,colour:r.state},{text:`menu`,colour:r.plane}],[{text:`warn`,colour:xa(e,`warning`)},{text:`error`,colour:xa(e,`error`)}]]}function EN(e,t,n,r){let i=TN(e,t,n).flatMap((t,r)=>t.map(({text:t,colour:i},a)=>({gap:r>0&&a===0?` `:``,cell:new V(` ${t} `,{style:$M(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 V(e)),a.push(t)}let s=V.fromFragments(a);return s.overflow=`ignore`,s.end=``,s}function DN(e,t){return{themePreview:{fn:()=>EN(e.palette,e.variation,t.drawnAt(),pN(e)),argTypes:[],arity:{kind:`exact`},returnType:`T`}}}const ON=e=>e.slice(e.lastIndexOf(`.`)+1),kN=(e,t)=>{let n=new V(ON(e));return n.truncate(t,{marker:`…`}),n.plain};function AN(e,t){let n=e.map(e=>e.map(({name:e})=>dN(ON(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 jN(e,t,n,r){let i=AN(e,r),a=e.map(e=>{let a=[],o=0;for(let{name:s,address:c,palette:l}of e){let e=new V(` ${kN(s,i)} `,{style:$M(l,Ja(l,{kind:`bar`,variation:t,address:c},n).tint,n)});if(o+=e.cellLength,o>r)break;a.push(e)}return a}),o=V.fromFragments(a.flatMap((e,t)=>t===0?e:[new V(`
192
+ `),...e]));return o.overflow=`ignore`,o.end=``,o}function MN(e,t){return{layoutPreview:{fn:()=>jN(e.layout(),e.variation,t.drawnAt(),pN(e)),argTypes:[],arity:{kind:`exact`},returnType:`T`}}}function NN(e,t,n,r){let i=uN(r.activeSegment,`{{ menu }}`),a=r.action,o=g_(i.placementId,e,n.key),s=y_(o),c=h_(e),l=WM(a.store,o)===c,u=WM(a.store,`session.id`),d=l?Wc:c,f=KM(qc(`{{ menu "${e}" }}`,t,2,+!!l),hD([{verb:WE,args:[u,o,d,s,`0`]}]),!1);return i.drops.push(...l?yN(e,{key:s,stateVar:s},[[o,Wc],[s,`0`]],n.closeOnPick,n.paged,a,rN(i,n.distribution,a,vN(a,e,`menu`).paletteOf,r.activeSegment.drawnAt()),eN(i.palette,La(i.palette,i.disclosure,r.activeSegment.drawnAt()).plane,r.activeSegment.drawnAt())):[]),f}const PN=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function FN(e,t){let n=t[t.length-1],r=PN(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:C_(r??{})}}function IN(e){return{menu:{fn:(t,...n)=>{let{displays:r,options:i}=FN(t,n);return NN(t,r,i,e)},argTypes:[`string`,`value`],arity:{kind:`variadic`},returnType:`T`}}}function LN(e){let{value:t,max:n,width:r,filled:i,empty:a,colourAt:o}=e,s=RN(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 V(t?i:a,{style:l===void 0?void 0:new z({color:l})}))}let l=V.fromFragments(c);return l.end=``,l.overflow=`ignore`,l}function RN(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 zN(e){let t={fn:(()=>{let t=uN(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:[],arity:{kind:`exact`},returnType:`string`},n={fn:(()=>uN(e,`{{ tint }}`).tint.hex),argTypes:[],arity:{kind:`exact`},returnType:`string`},r=ty(()=>uN(e,`{{ color }} / {{ ramp }} / {{ gauge }}`).palette),i={fn:((e,t,n,i,a,o,...s)=>{let c=o===void 0?void 0:[o,...BN(s)];return LN({value:e,max:t,width:n,filled:i,empty:a,colourAt:c===void 0?void 0:e=>String(r.ramp.fn(e,...c))})}),argTypes:[`float`,`float`,`int`,`string`,`string`,`string`],arity:{kind:`variadic`},returnType:`T`};return{...r,bgOf:t,tint:n,gauge:i}}function BN(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 VN(e){let t=[],n=[];for(let r of e){if(!r.contains(`
193
193
  `)){n.push(r);continue}let e=r.split(`
194
- `);n.push(e[0]);for(let r=1;r<e.length;r++)t.push(n),n=[e[r]]}return t.push(n),t}function PN(e,t){let n=t.flatMap(e=>e.filter(e=>e.place===`above`)),r=t.map(e=>e.filter(e=>e.place===`flow`));return[...n,...FN(e,r)]}function FN(e,t){switch(e){case`vertical`:return t.flatMap(e=>e);case`horizontal`:return t.reduce((e,t)=>Math.max(e,t.length),0)===0?[]:[{cells:t.flatMap(e=>e[0]?.cells??[]),band:`own`,place:`flow`},...t.flatMap(e=>e.slice(1))]}}function IN(e,t){let n=(e,r)=>t(e)?e.kind===`segment`?[{cells:[{name:e.name,address:r,settings:e.settings}],band:`own`,place:`flow`}]:PN(e.direction,e.children.map((t,i)=>n(t,[...r,LN(e,i)]))):[];return n(e,[]).map(e=>[...e.cells])}function LN(e,t){return{index:t,count:e.children.length,distribution:e.distribution,axis:Es[e.direction]}}const RN={compile(e,t){return{kind:`container`,direction:e.direction,when:t.when,distribution:pa(e.distribution),children:e.children.map((e,n)=>t.compileChild(e,Ms(t.path,n)))}},render(e,t){return PN(e.direction,e.children.map((n,r)=>t.renderChild(n,t.visible,LN(e,r))))}},zN={drop:e=>e.place,above:()=>`above`},BN={drop:(e,t)=>({lead:t(),stays:e}),above:e=>({lead:e.slice(0,1).flatMap(e=>e.cells),stays:e.slice(1)})},VN={compile(e,t){return{kind:`segment`,when:t.when,name:e.name,id:Ds(e),settings:t.placementSettings(e),...e.opens!==void 0&&{opens:{open:t.parse(Jc(e.opens.ref),`opens`),body:t.compileChild(e.opens.body,Ns(t.path)),key:e.opens.ref.key,placement:e.opens.placement}},...e.lead!==void 0&&{lead:t.parse(e.lead,`lead`)},...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[];let a=by(t.scope,e.settings);try{if(!yM(i.when,a))return[];let n=Rb(e.settings.theme,t.palette),o=e.opens!==void 0&&yM(e.opens.open,t.scope),{styles:s,fragments:c,lead:l,trail:u,drops:d,open:f}=t.evaluateSegment(e,a,n,t.region,{bg:i.bg,fg:i.fg,body:i.template,lead:e.lead,trail:e.trail},o),p=f?s.trigger:s.closed,m={width:r.width??`auto`,justify:r.justify??`left`,truncate:r.truncate??`right`,baseStyle:p,padding:t.padding},h=e.opens,g=h===void 0?[]:t.renderBody(h.body,o,s.disclosure).map(e=>({...e,place:zN[h.placement](e)})),_=NN(OM(c,p)).map((e,t)=>({cells:wM(e,{...m,lead:t===0?OM(l,p):[],trail:t===0?OM(u,p):[]}),band:`own`,place:`flow`})),v=d.map(e=>({cells:wM(OM([e],s.band),{...m,baseStyle:s.band}),band:`deeper`,place:`flow`})),y=(e,t,n)=>wM(OM([e],t),{...m,width:`auto`,baseStyle:t,padding:n}),b=g.findIndex(e=>e.band===`own`),{lead:x,stays:S}=h!==void 0&&b!==-1?BN[h.placement](_,()=>y(t.closeDisclosure(h.key),s.close,t.padding)):{lead:[],stays:_},C=x.flatMap(e=>y(new V(` `.repeat(SM(e).reduce((e,t)=>e+t.cellLength,0))),s.trigger,0)),ee=(e,t)=>e.band===`own`?t===b?x:C:[],te=g.map((e,t)=>({cells:[...ee(e,t),...e.cells],band:`deeper`,place:e.place})),ne=[...S,...v];return t.perSegmentSink!==void 0&&t.perSegmentSink.set(e.id,[...ne.flatMap(e=>e.cells),...g.flatMap(ee)].flatMap(SM)),[...ne,...te]}catch(n){let r=n.message??String(n);t.onSegmentError?.(e.id,r);let i=r.replace(/\s*\n\s*/g,` `);return[{cells:wM([new V(`⚠ ${e.id}: ${i}`,{end:``})],{width:`auto`,justify:`left`,truncate:`right`,padding:0,lead:HN(e.lead,e,a,t),trail:HN(e.trail,e,a,t)}),band:`own`,place:`flow`}]}}};function HN(e,t,n,r){if(e===void 0)return[];try{return r.evaluateSegment(t,n,r.palette,r.region,{bg:void 0,fg:void 0,body:e,lead:void 0,trail:void 0},!1).fragments}catch(e){return r.onSegmentError?.(t.id,e.message??String(e)),[]}}const UN={container:RN,segment:VN};function WN(e){return UN[e]}function GN(e){if(`ttl`in e)return{kind:`ttl`,durationMs:sb(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 KN(e,t){switch(Is(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 qN(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:GN(n.cache),parse:KN(n.parse,n.default)});break;case`shell`:e.declareShell(t,n.command,{cwd:r,cache:GN(n.cache),parse:KN(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?sb(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 JN(e,t){let n=Gd.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 YN=e=>bo(void 0,null,e.globals.variation);function XN(e,t,n){let r=n.cwd,i=Gb(e.globals.palette),a={store:t.variableStore,compiled:new Map,chromeCols:RO({endcaps:`powerline`,charset:ho}),width:80,basePalette:i,palette:i,variation:ia[YN(e)],padding:1,seamCols:zO({endcaps:`powerline`,charset:ho}),layout:()=>[]},o=eN(t.drawnAt),s={action:a,activeSegment:o},c=Object.keys(e.styles),l=C_(e.presets),u=new Map([...Yb(e),...xC(e)]),d=_y({...UM(a),...fN(a,o),...hN(a,o),...yN(a,o),...wN(a,o),...ON(s),...jN(o),styles:{fn:()=>c,argTypes:[],arity:{kind:`exact`}},presets:{fn:()=>l,argTypes:[],arity:{kind:`exact`}}},n.clock,t.drawnAt),f=JN(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 jb)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=MM(p,e.actions,g,u);let _=[];for(let[n,i]of Object.entries(e.variables))try{qN(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{qN(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`)}}let y=(e,t,n)=>{try{return h(e)}catch(e){throw Error(`Template parse error in ${t}.${n}: ${e.message}`,{cause:e})}},b=t.variableStore,x=t=>{let n=Hs(e.segments[t.name]),r=Object.create(null);for(let[e,i]of Object.entries(n)){let n=t.settings?.[e]??i.default,a=t.drafts?.[e];Object.defineProperty(r,e,{enumerable:!0,get:a===void 0?()=>n:()=>qs(i,String(b.read(a.variable)))??n})}return Object.freeze(r)},S=(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:S,placementSettings:x};return WN(e.kind).compile(e,n)},C=new Map;for(let t of l){let{node:n,path:r}=E_(e,t);C.set(t,S(n,r))}let ee=new Map(no.map(e=>[e,new Map])),te=[[`globals`,e.globals],...Object.entries(e.presets).map(([e,t])=>[`presets.${e}.globals`,t.globals??{}])];for(let[e,t]of te)for(let n of no){let r=t[n];if(!ro(r))continue;let i=`${e}.${n}`,a=ee.get(n),o=a.get(r);a.set(r,o===void 0?{where:i,template:ZN(p,i,r)}:{where:`${o.where}, ${i}`,template:o.template})}return{segments:v,roots:C,activeSegment:o,menuRuntime:s,globalExpressions:ee,loadWarnings:_}}function ZN(e,t,n){try{return e(n)}catch(e){throw Error(`${t} is not a valid template: ${e instanceof Error?e.message:String(e)}`)}}function QN(e,t,n){let r=e.globalExpressions.get(t).get(n);if(r===void 0)throw Error(`the ${t} rule ${JSON.stringify(n)} reached the render but no compiled template exists — registerDslConfig and the resolution disagree about isExpression`);return r}function $N(e,t){return e.template.evaluate(t).map(e=>e.plain).join(``)}function eP(e,t){return e.kind===`decided`?e.name:t}function tP(e,t,n,r,i,a,o,s){let{perSegmentSink:c,onSegmentError:l,onRenderWarning:u}=o??{};r.drawAt(_o(a.colorCompatibility));let{preset:d=x_}=s??{},f=D_(e,d),p=ia[s?.variation??bo(void 0,null,f.variation)];t.menuRuntime.action.variation=p;let m=s?.style??co(`none`,e.styles),h=s?.theme??Ub(void 0,null,f.palette),g=(e,t)=>({...i,term:{cols:a.width},theme:{effective:e},style:{effective:t}});r.applyInput(g(eP(h,Ya),eP(m,oo))),t.menuRuntime.action.chromeCols=RO(a),t.menuRuntime.action.padding=a.padding,t.menuRuntime.action.width=a.width,t.menuRuntime.action.seamCols=zO(a);let _=vy(n),v=ao(h,e=>{let n=QN(t,`palette`,e);return Hb($N(n,_),n.where,e=>u?.(e))}),y=ao(m,n=>co($N(QN(t,`style`,n),_),e.styles));(v!==h||y!==m)&&r.applyInput(g(v.name,y.name));let b=v.value;t.menuRuntime.action.basePalette=b;let x=Bb(b,y.value);t.menuRuntime.action.palette=x,c?.clear();let S=n=>{let r=e.segments[n],i=t.segments[n];return r!==void 0&&i!==void 0?{seg:r,compiled:i}:void 0},C=(e,n,i,a,o,s)=>{try{let c=r.drawnAt(),{tint:l,disclosure:u}=Ka(i,a,c),d=tN(t.activeSegment,e.name,e.id,i,u,l),f=px(d,c,o.bg,o.fg,n),p=()=>Fa(i,u,c).state;s&&(d.bg=p());let m=o.body.evaluate(n),h=d.drops.length>0||s;h&&(d.bg=p());let g=o.lead?.evaluate(n)??[],_=o.trail?.evaluate(n)??[];return{styles:{closed:f,get trigger(){return GM(i,p(),c)},get band(){return GM(i,Fa(i,u,c).plane,c)},get close(){return qM(i,p(),c)},disclosure:u},fragments:m,lead:g,trail:_,drops:d.drops,open:h}}finally{t.activeSegment.current=null}},ee=(e,t,r)=>{let i=t&&yM(e.when,_),o={scope:_,palette:x,visible:i,padding:a.padding,region:r,perSegmentSink:c,onSegmentError:l,evaluateSegment:C,lookupSegment:S,renderChild:(e,t,n)=>ee(e,t,Wa(r,n)),renderBody:(e,t,n)=>ee(e,i&&t,Ga(n)),closeDisclosure:e=>WM(n,e)};return WN(e.kind).render(e,o)},te=t.roots.get(d);if(te===void 0)throw Error(`Preset "${d}" has no compiled layout — registerDslConfig compiles one per declared preset and effectivePresetName collapses unknown names to "${x_}"; a miss here is merge/policy drift (have: ${[...t.roots.keys()].join(`, `)})`);let ne=e=>{if(!yM(e.when,_))return!1;if(e.kind===`container`)return!0;if(AC(e.name)===void 0)return!1;try{return yM(t.segments[e.name].when,by(_,e.settings))}catch{return!0}};return t.menuRuntime.action.layout=()=>IN(te,ne).map(e=>e.flatMap(({name:e,address:t,settings:n})=>{let r=AC(e);return r===void 0?[]:[{name:r,address:t,palette:Rb(n.theme,x)}]})),ee(te,!0,Ua(p)).map(e=>BO(DM(e.cells,a),a)).join(`
195
- `)}var nP=class{kind=`box`;cell;lastChangedAt;constructor(e,t,n){this.name=e,this.type=t,cP(e,t,n,`initial value`),this.cell=Cv.observable.box(n,{deep:!1}),this.lastChangedAt=Date.now()}read(){return this.cell.get()}set(e){cP(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}},rP=class{kind=`computed`;cell;constructor(e,t,n){this.name=e,this.type=t,this.cell=(0,Cv.computed)(()=>{let e=n();return cP(this.name,this.type,e,`computed result`),e},{keepAlive:!0})}read(){return this.cell.get()}lastUpdatedMs(){return null}},iP=class{kind=`document`;cell;lastChangedAt;constructor(e,t){this.name=e,this.cell=Cv.observable.box(sP(t),{deep:!1}),this.lastChangedAt=Date.now()}read(){return this.cell.get()}set(e){let t=sP(e);oP(this.cell.get(),t)||(this.cell.set(t),this.lastChangedAt=Date.now())}lastUpdatedMs(){return this.lastChangedAt}};function aP(e){return JSON.stringify(e)}function oP(e,t){return aP(e)===aP(t)}function sP(e){return e.kind===`ok`?{kind:`ok`,value:wv(e.value)}:e}function cP(e,t,n,r){let i=Tv(n);if(i!==t)throw TypeError(`Variable "${e}": ${r} type ${i} does not match declared type ${t}`)}var lP=class{nodes=new Map;defineBox(e,t,n){this.assertNotDefined(e),this.nodes.set(e,new nP(e,t,n))}defineDocument(e,t){this.assertNotDefined(e),this.nodes.set(e,new iP(e,t))}defineComputed(e,t,n){this.assertNotDefined(e);let r=e=>this.read(e);this.nodes.set(e,new rP(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,Cv.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,Cv.runInAction)(()=>n.set(t))}runInAction(e){(0,Cv.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 aP(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 uP(e,t,n){return e+`\0`+t+`\0`+(n??``)}function dP(e,t){return new Set(C_(e.presets).filter(n=>E_(e,n).path===`root`?t.root!==void 0:t.presets?.[n]?.root!==void 0))}function fP(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 pP(e,t){let n=new Map;for(let t of cT(e.projectDir,e.cwd,e.configFile)){let{dir:e,name:r}=fP(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 mP(e){return e.filter(Boolean).join(`
196
- `)||null}var hP=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=uP(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.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=t.state),this.refreshWatcher(e,t.resolvedPath),this.observers.onReload?.(e)}loadFromDisk(e,t,n){let r=uT(e,t,n),i=r.kind===`file`?r.path:null,a=[mT(e,t),fT(r)],o;try{o=this.buildState(t,i,a)}catch(e){return e instanceof bs&&a.push(...e.warnings),{resolvedPath:i,warning:mP(a),state:null,error:e instanceof bs||e instanceof Error?e.message:String(e)}}return{resolvedPath:i,warning:mP(a),state:o,error:null}}buildState(e,t,n){let r=hT(t,Uk),{config:i,raw:a}=r;n.push(...r.warnings);let o=vT(r,t??`<default>`),s=new lP,c=new wb(s,o.globals.default_empty_value??``,this.deps.gitService,this.deps.sessionState),l;try{l=XN(o,c,{cwd:e}),n.push(...l.loadWarnings),bj(o),Ck(o)}catch(e){throw c.dispose(),e}return{config:o,store:s,registry:c,compiled:l,neededInputPaths:jA(o),lastRenderCellsBySegment:new Map,authoredRoots:dP(i,a),fileHeldSettings:oj(a)}}refreshWatcher(e,t){e.configFilePath=t;let n=pP(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 gP=16384;var _P=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<gP){this.rollingTimestamps.push(e);return}this.rollingTimestamps[this.rollingHead]=e,this.rollingHead=(this.rollingHead+1)%gP}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:pD,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}}};function vP(e,t,n){let r=(r,i,a)=>{let o=i.filter(t).map(t=>({key:t,before:e.get(r,t)}));a();for(let{key:t,before:i}of o)n(r,t,i,e.get(r,t))};return{get:(t,n)=>e.get(t,n),set:(t,n,i)=>r(t,[n],()=>e.set(t,n,i)),setBatch:(t,n)=>r(t,n.map(e=>e.key),()=>e.setBatch(t,n)),clear:(t,n)=>r(t,[n],()=>e.clear(t,n))}}const yP={load:()=>({}),save:()=>{},flush:()=>{}};function bP(e){let t=new Map;for(let[n,r]of Object.entries(e))t.set(n,new Map(Object.entries(r)));return t}var xP=class{sessions;storage;atom=(0,Cv.createAtom)(`SessionState`);constructor(e=yP,t=256){this.maxSessions=t,this.storage=e,this.sessions=new Map,this.hydrateFromStorage()}useStorage(e){this.storage=e,this.hydrateFromStorage()}hydrateFromStorage(){this.sessions=bP(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,Cv.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,Cv.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,Cv.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 SP=(e,t)=>D(t);function CP(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 wP=class{timer=null;pending=null;constructor(e,t=500,n=SP){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 CP(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 TP={default_empty_value:`string`,default_separator:`string`,palette:`string`,style:`string`,preset:`string`,endcaps:`string`,variation:`string`,autoWrap:`boolean`,padding:`number`,charset:`string`,updateNotice:`boolean`,colorCompatibility:`string`,menuGlyph:`string`},EP=new Set([`1`,`true`]),DP=new Set([`0`,`false`,``]);function OP(e,t){let n=$P(e),r=n.scope===`segment-palette`?`string`:TP[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(EP.has(t))return`true`;if(DP.has(t))return`false`;throw Error(`persistValueText: "${e}" expects boolean-ish (1, 0, true, false), got "${t}"`)}function kP(e){try{return r.readFileSync(e,`utf8`)}catch(e){if(e.code===`ENOENT`)return null;throw e}}function AP(e,t,n){try{if(t===null){r.rmSync(e,{force:!0});return}r.mkdirSync(c.dirname(e),{recursive:!0}),Me(e,t)}catch(t){let r=`config write failed (${e}): ${t.message}`;throw n(`error`,r),Error(r)}}function jP(e){return/^\s*$/.test(e)?null:Io(e)}function MP(e,t){return e!==null&&Ro(e,t)!==void 0}function NP(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(NP),...i}}return e}function PP(e){if(!Ac(e))return NP(e);let{rows:t,...n}=e;return{rows:Object.fromEntries(Object.entries(t).map(([e,t])=>[e,NP(t)])),...n}}const FP=Vk,IP=FP.segments,LP=FP.presets,RP=FP.root;function zP(e,t,n,r){if(!MP(e,t)&&n===void 0)throw new $(`cannot edit ${r}: neither the config file nor the bundled default declares ${t.join(`.`)}`)}function BP(e,t){let n=sx(t);return t.scope===`segment-palette`&&zP(e,[`segments`,t.segment],IP[t.segment],n.join(`.`)),n}function VP(e){return Io(Ko(e))}function HP(){return Object.entries(RP.rows).map(([e,t])=>{let n=NP(t);return{path:[`root`],fragment:VP({rows:{[e]:n}}),unit:{path:[`root`,`rows`,e],value:n}}})}function UP(e,t){let n=e===null?void 0:Ro(e,t);return n===void 0?null:{path:t,fragment:n,unit:null}}function WP(e,t){if(t===void 0)return null;let n=PP(t);return{path:e,fragment:VP(n),unit:{path:e,value:n}}}function GP(e,t){let n=[`presets`,t],r=[...n,`root`],i=LP[t];zP(e,n,i,r.join(`.`));let a=UP(e,r)??WP(r,i?.root);return a!==null&&ps(a.fragment)?a:null}function KP(e,t){let n=fs(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 qP(e,t){return[...HP(),UP(e,[`root`]),GP(e,t)].filter(e=>e!==null).reduce(KP,new Map)}function JP(e,t,n){for(let{node:r,...i}of qP(e,t).values())if(hs(r,n))return i;throw new $(`${YP(e,t).join(`.`)} holds no placement "${n}" — the bar you clicked is stale (it reloads on the next render), or the action names a placement the layout never held`)}function YP(e,t){return GP(e,t)?.path??[`root`]}function XP(e,t){return t.scope===`preset-root`?YP(e,t.preset):sx(t)}function ZP(e,{unit:t}){return t===null?e:os(e,t.path,Ko(t.value),Wo)}function QP(e){let t=ox(e);if(t===null)throw Error(`"${e}" is not a valid persist target`);return t}function $P(e){let t=QP(e);if(t.scope===`preset-root`)throw Error(`"${e}" names a layout, not a value`);return t}function eF(e,t,n,r){tF(t,r),AP(t,r,e.logger),e.record(t,n,r)}function tF(e,t){try{return vT(gT(e,t,Uk),e)}catch(e){throw e instanceof bs?new $(`refused: the config file would not load after this click — ${e.message}`):e}}function nF(e,t){let n=$P(t),r=jP(kP(e)??``),i=r===null?void 0:Ro(r,sx(n));return i!==void 0&&`value`in i?i.value:void 0}function rF(e,t,n){iF(e,t,n,[])}function iF(e,t,n,r){let i=kP(t);eF(e,t,i,aF(n.reduce((e,[t,n])=>os(e,BP(jP(e),$P(t)),OP(t,n),Wo),i??``),t,r,e=>e))}function aF(e,t,n,r){return n.reduce((e,{preset:n,id:i,setting:a,value:o})=>{let s=r(e,n,i),c=JP(jP(s),n,i),l=ys(ZP(s,c),c.path,i,a,Ko(o));if(l===null)throw new $(`${c.path.join(`.`)} in ${t} has no placement "${i}" — the bar you clicked is stale (it reloads on the next render)`);return l},e)}function oF(e,t,n){let r=jP(e),i=[`presets`,t,`root`];for(let[a,{path:o,unit:s,node:c}]of qP(r,t)){if(!hs(c,n))continue;if(i.every((e,t)=>o[t]===e))return e;let l=s===null?Bo(e,c):Ko(s.value);if(a!==`#`)return os(e,[...i,`rows`,a],l,Wo);if(GP(r,t)!==null)throw new $(`cannot give preset "${t}" its own copy of ${o.join(`.`)}: it already stages rows of its own over that tree`);return os(e,i,l,Wo)}return e}function sF(e,t){return cs(e,t,t[0]===`presets`&&t.length>2&&!Gk(t[1])?2:0)}function cF(e,t,n){let r=n.map(QP),i=kP(t);if(i===null)return;let a=r.reduce((e,t)=>sF(e,XP(jP(e),t)),i);a!==i&&eF(e,t,i,a)}function lF(e){let t=e===null?void 0:Ro(e,[`presets`]),n=new Set([...Wk,...t?.kind===`object`?t.entries.map(e=>e.key):[]].map(hu));return Array.from({length:n.size+1},(e,t)=>`custom-${t+1}`).find(e=>!n.has(hu(e)))}function uF(e,t,n,r,i,a){let o=kP(t),s=jP(o??``),c=lF(s),l=[`presets`,c],u=GP(s,n),d=[...u===null?[]:[[[...l,`root`],u.unit===null?Bo(o??``,u.fragment):Ko(u.unit.value)]],...Object.keys(r).length===0?[]:[[[...l,`globals`],Ko(r)]]],f=i.map(([e,t])=>{let n=ax(c,e);return[BP(s,$P(n)),OP(n,t)]});return eF(e,t,o,aF([...d,...f].reduce((e,[t,n])=>os(e,t,n,Wo),os(o??``,l,`{}`,Wo)),t,a.map(e=>({...e,preset:c})),oF)),c}function dF(e,t,n){if(Gk(n))throw new $(`cannot delete preset "${n}": it is bundled — reset its settings instead`);let r=[`presets`,n],i=kP(t),a=jP(i??``);if(i===null||a===null||Ro(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=Ro(a,[`globals`,`preset`]);eF(e,t,i,[r,...o?.kind===`string`&&o.value===n?[[`globals`,`preset`]]:[]].reduce((e,t)=>sF(e,t),i))}function fF(e,t,n,r){let i=QP(n);if(i.scope!==`preset-root`)throw Error(`"${n}" is not a "presets.<name>.root" target`);let a=kP(t),o=r.op===`remove`?r.target:r.anchor,s=JP(jP(a??``),i.preset,o),c=ZP(a??``,s),{after:l,placed:u}=pF(c,s.path,r,()=>{let e=tF(t,c);return C_(e.presets).map(t=>E_(e,t).node)});if(l===null)throw new $(`${s.path.join(`.`)} in ${t} has no placement "${o}" — the bar you clicked is stale (it reloads on the next render), or the action names a placement the layout never held`);return eF(e,t,a,l),u}function pF(e,t,n,r){switch(n.op){case`remove`:return{after:_s(e,t,n.target),placed:null};case`insert`:{let i=uk(n.segment,n.anchor,r());return{after:vs(e,t,i,n.anchor,n.relation),placed:i}}}}const mF={load:()=>({}),save:()=>{}},hF=new Set(Db.map(e=>e.sessionKey)),gF=e=>hF.has(e)||e.startsWith(q_),_F=8*1024*1024,vF={past:[],future:[]},yF=e=>e.kind===`session`?`session:${e.key}`:`file:${e.file}`;var bF=class{state=new Map;constructor(e,t,n=mF){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,savepoint:r}=this.state.get(e)??vF;return{undo:t.length,redo:n.length,sinceEdit:r?.net.length??0}}history(e){return this.state.get(e)??vF}begin(){let e=new Map,t=(t,n)=>{let r=e.get(t)??new Map,i=r.get(yF(n));r.set(yF(n),i===void 0?n:{...n,before:i.before}),e.set(t,r)},n=new Map;return{sessionState:vP(this.sessionState,e=>gF(e)||e===`edit.mode`,(e,r,i,a)=>{if(r===`edit.mode`){let t=n.get(e);n.set(e,{before:t===void 0?i:t.before,after:a});return}t(e,{kind:`session`,key:r,before:i,after:a})}),file:(e,n,r,i)=>t(e,{kind:`file`,file:n,before:r,after:i}),commit:()=>{let t=new Map(e),r=new Map(n);e.clear(),n.clear();for(let e of new Set([...t.keys(),...r.keys()])){let n=[...t.get(e)?.values()??[]].filter(e=>e.before!==e.after),i=this.history(e),a=n.length===0?i:OF(i,n),o=r.get(e),s=o===void 0?a:MF(a,o);s!==i&&this.put(e,s)}}}}undo(e){let t=this.history(e),n=t.past.at(-1);if(n===void 0)throw new $(`undo: nothing to undo`);return this.apply(e,n,`before`,`undo`,AF(t,n)),n}rewind(e){let t=this.history(e),{savepoint:n}=t;if(n===void 0)throw new $(`rewind: edit mode has no savepoint — nothing to cancel`);let r=n.net.filter(t=>this.read(e,t)!==t.after),i=new Set(r.map(yF)),a=n.net.filter(e=>!i.has(yF(e))),o=CF(NF(jF(t,n),i));if(this.apply(e,a,`before`,`rewind`,{past:o,future:[],savepoint:{at:o.length,net:[],below:[]}}),r.length>0)throw new $(`rewind: ${r.map(FF).join(`, `)} changed since edit mode opened — kept as it is; everything else edit mode changed was put back`);return a}redo(e){let t=this.history(e),{past:n,future:r}=t,i=r.at(-1);if(i===void 0)throw new $(`redo: nothing to redo`);let a=[...n,i],o=CF(a);return this.apply(e,i,`after`,`redo`,{past:o,future:r.slice(0,-1),...TF(t.savepoint,a.length-o.length,i)}),i}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(yF)),{past:n,future:i,savepoint:a}=this.history(e);throw this.put(e,{past:NF(n,t),future:NF(i,t),...a!==void 0&&{savepoint:{at:NF([...n,...[...i].reverse()].slice(0,a.at),t).length,net:a.net.filter(e=>!t.has(yF(e))),below:NF(a.below,t)}}}),new $(`${r}: ${o.map(FF).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):kP(t.file)}write(e,t,n){t.kind===`file`?AP(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||t.savepoint!==void 0)&&n.set(e,t);n.size>32||xF(n)>_F;){let[e,t]=n.entries().next().value;n.size>1?n.delete(e):t.past.length+t.future.length>0?n.set(e,SF(t)):(this.logger(`warn`,`settings-history: edit mode's changes for session ${e} exceed ${_F} bytes; cancel is no longer available`),n.delete(e))}this.storage.save(Object.fromEntries(n)),this.state=n}};function xF(e){let t=0;for(let{past:n,future:r,savepoint:i}of e.values())for(let e of[...n,...r,...i===void 0?[]:[i.net,...i.below]])for(let n of e)t+=(n.before?.length??0)+(n.after?.length??0);return t}function SF({past:e,future:t,savepoint:n}){return e.length>0?{past:e.slice(1),future:t,...TF(n,1,[])}:{past:e,future:t.slice(1),...TF(n,0,[])}}function CF(e){return e.slice(-50)}const wF=e=>e===Y_.member;function TF(e,t,n){return e===void 0?{}:{savepoint:{at:Math.max(0,e.at-t),net:EF(e.net,n),below:e.below}}}function EF(e,t){let n=new Map(e.map(e=>[yF(e),e]));for(let e of t){let t=n.get(yF(e));n.set(yF(e),t===void 0?e:{...t,after:e.after})}return[...n.values()].filter(e=>e.before!==e.after)}const DF=e=>e.map(e=>({...e,before:e.after,after:e.before}));function OF(e,t){let n=[...e.past,t],r=CF(n),{savepoint:i}=e,a=i===void 0?0:Math.max(0,i.at-e.past.length);return{past:r,future:[],...TF(i&&{at:Math.min(i.at,e.past.length),net:i.net,below:[...kF(e.future,a),...i.below]},n.length-r.length,t)}}function kF(e,t){let n=Math.min(t,e.length);return e.slice(e.length-n).reverse()}function AF(e,t){return{past:e.past.slice(0,-1),future:CF([...e.future,t]),...TF(e.savepoint,0,DF(t))}}function jF(e,t){let{past:n,future:r}=e,i=n.slice(0,t.at);return[...i,...kF(r,t.at-i.length),...t.below]}function MF(e,t){if(wF(t.after)&&!wF(t.before))return{...e,savepoint:{at:e.past.length,net:[],below:[]}};if(!wF(t.after)&&wF(t.before)){let{past:t,future:n}=e;return{past:t,future:n}}return e}function NF(e,t){return e.map(e=>e.filter(e=>!t.has(yF(e)))).filter(e=>e.length>0)}function PF(e){return e.map(FF).join(`, `)}function FF(e){return e.kind===`session`?`session setting "${e.key}"`:e.file}function IF(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 LF(e){return Array.isArray(e)&&e.every(e=>Array.isArray(e)&&e.every(IF))}function RF(e){if(typeof e!=`object`||!e)return!1;let t=e;return Number.isInteger(t.at)&&t.at>=0&&Array.isArray(t.net)&&t.net.every(IF)&&LF(t.below)}function zF(e){if(typeof e!=`object`||!e)return!1;let t=e;return LF(t.past)&&LF(t.future)&&(t.savepoint===void 0||RF(t.savepoint))}function BF(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(zF))return e}catch{}return t(`warn`,`settings-history load: unexpected shape, starting empty`),{}},save:n=>{try{r.mkdirSync(c.dirname(e),{recursive:!0}),Me(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 VF=e=>!gF(e)&&!Px(e)&&e!==`update.dismissed`;var HF=class{past=new Map;depth(e,t,n){return this.restorable(e,t,n).length}restorable(e,t,n){let r=new Map,i=n=>r.has(n)?r.get(n):t.get(e,n),a=[];for(let t of[...this.past.get(e)??[]].reverse())if(t.every(e=>i(e.key)===e.after&&(e.before===null||n.validate(e.key,e.before).ok))){a.unshift(t);for(let e of t)r.set(e.key,e.before)}return a}begin(e){let t=new Map;return{sessionState:vP(e,VF,(e,n,r,i)=>{let a=t.get(e)??new Map,o=a.get(n);a.set(n,{key:n,before:o?o.before:r,after:i}),t.set(e,a)}),commit:()=>{for(let[e,n]of t){let t=[...n.values()].filter(e=>e.before!==e.after);t.length>0&&this.push(e,t)}t.clear()}}}back(e,t,n){let r=this.past.get(e)??[],i=this.restorable(e,t,n),a=i.at(-1),o=r.length-i.length;if(a===void 0)throw this.put(e,i),new $(`back: nothing to go back to${o>0?` (${o} step(s) over a view since gone, discarded)`:``}`);return(0,Cv.runInAction)(()=>{let n=a.flatMap(({key:e,before:t})=>t===null?[]:[{key:e,value:t}]);n.length>0&&t.setBatch(e,n);for(let{key:n,before:r}of a)r===null&&t.clear(e,n)}),this.put(e,i.slice(0,-1)),{step:a,discarded:o}}push(e,t){let n=this.past.get(e)??[];this.put(e,[...n,t].slice(-20))}put(e,t){for(this.past.delete(e),t.length>0&&this.past.set(e,t);this.past.size>32;)this.past.delete(this.past.keys().next().value)}};function UF(e,t,n,r){let i=Ae({bin:`tmux`,args:[`-S`,e.socket,...n],timeoutMs:2e3,category:t,stdinInput:r});if(i.ok)return{kind:`ok`,stdout:i.stdout};if(i.reason===`rate-limited`)return{kind:`rate-limited`,reason:i.error??`rate-limited`};let a=i.error??[i.reason,i.stderr.trim()].filter(e=>e!==``).join(`: `);return{kind:`failed`,reason:`tmux ${n[0]} failed (${a})`}}function WF(e){let t=UF(e,`doctor.tmux`,[`display`,`-p`,`-t`,e.pane,`#{client_termfeatures}`]);return t.kind===`ok`?{kind:`ok`,value:t.stdout.trim().split(`,`).filter(e=>e!==``)}:{kind:`failed`,reason:t.reason}}function GF(){return{probeTmux:WF}}function KF(e){let t=SD(e).env;if(t===void 0)return{path:e,env:{}};if(typeof t!=`object`||!t||Array.isArray(t))throw Error(`cannot read ${e}: \`env\` is not an object`);return{path:e,env:t}}function qF(e,t){return t===void 0?{kind:`unreported`}:t===null?{kind:`outside`}:{kind:`inside`,hint:t,termfeatures:e.probeTmux(t)}}function JF(e,t){return{tmux:qF(e,t.tmux),claudeSettings:KF(yD(vD(t.claudeConfigDir)))}}function YF(e,t){let n=t.claudeSettings.path;switch(e.kind){case`claude-settings-env`:{let i=os(xD(n),[`env`,e.name],JSON.stringify(e.value),Go);return r.mkdirSync(c.dirname(n),{recursive:!0}),Me(n,i),{...t,claudeSettings:KF(n)}}default:return e.kind}}const XF=/^─{20,}/,ZF=/^❯(\s|$)/,QF=/›\s*stashed$/;function $F(e){if(e.inMode)return{kind:`in-mode`};let t=e.screen.map(e=>e.trimEnd()),n=t.flatMap((e,t)=>XF.test(e)?[t]:[]).at(-2);return n===void 0||!ZF.test(t[n+1]??``)?{kind:`no-prompt`}:QF.test(t[n-1]??``)?{kind:`stashed`}:{kind:`ready`}}const eI={"in-mode":`the Claude Code pane is in tmux copy mode — leave it (q) and click again`,stashed:`Claude Code is holding a stashed prompt (ctrl+s) — restore or send it, then click again`,"no-prompt":`Claude Code is not at its prompt (a dialog or picker is open) — close it and click again`};function tI(e,t,n){if(t===void 0)return{kind:`refused`,reason:`this session's statusline client reports no tmux facts (it predates this daemon) — rebuild or reinstall cc-candybar`};if(t===null)return{kind:`refused`,reason:`this Claude Code is not running inside tmux — the bar can only type into a tmux pane`};let r=$F(e.read(t));if(r.kind!==`ready`)return{kind:`refused`,reason:eI[r.kind]};let i=e.type(t,n);return i.kind===`typed`?{kind:`typed`,pane:t.pane}:i}const nI=`cc-candybar-slash`;function rI(e,t,n,r){let i=UF(e,t,n,r);if(i.kind===`failed`)throw Error(i.reason);return i}function iI(e){let t=rI(e,`claude-input.read`,[`display`,`-p`,`-t`,e.pane,`#{pane_in_mode}`,`;`,`capture-pane`,`-p`,`-t`,e.pane]);if(t.kind===`rate-limited`)throw Error(t.reason);let[n=``,...r]=t.stdout.split(`
197
- `);return{inMode:n!==`0`,screen:r}}function aI(e,t){let n=rI(e,`claude-input.type`,[`load-buffer`,`-b`,nI,`-`,`;`,`send-keys`,`-t`,e.pane,`C-s`,`;`,`paste-buffer`,`-p`,`-d`,`-b`,nI,`-t`,e.pane,`;`,`send-keys`,`-t`,e.pane,`Enter`],t);return n.kind===`ok`?{kind:`typed`}:{kind:`refused`,reason:`cc-candybar typed a command moments ago — click again in a second (${n.reason})`}}function oI(){return{read:iI,type:aI}}function sI(e){if(!e)throw new $(`session id is required`);if(e.includes(`/`)||e.includes(`..`))throw new $(`invalid session id "${e}"`);return e}function cI(e){return lI(()=>decodeURIComponent(e))}function lI(e){try{return e()}catch(e){throw e instanceof URIError?new $(`malformed wire encoding: ${e.message}`):e}}function uI(e,t){let n=Ae({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 dI=(e,t)=>uI(cI(e),t),fI=(e,t)=>{let n=Ae({bin:`/usr/bin/open`,args:[`-a`,`Visual Studio Code`,cI(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`})`)}},pI=(e,t)=>uI(cI(e),t),mI=(e,t)=>uI(cI(e),t),hI=(e,t)=>{let n=sI(cI(e));t.navigating.get(n,`toolbar-expanded`)?t.navigating.clear(n,`toolbar-expanded`):t.navigating.set(n,`toolbar-expanded`,`1`)},gI=(e,t)=>{let[n=``,...r]=lI(()=>oD(e)),i=sI(n),a=bj(OI(t,i));if(r.length===0)throw new $(`set-state: <key>/<value> is required (have keys: ${a.listKeys().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: ${a.listKeys().join(`, `)})`);let o=[];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=a.validate(t,n);if(!i.ok)throw new $(`set-state: pair ${e/2+1}: ${i.reason}`);o.push({key:t,value:i.value})}bI(t,i,`set-state`,o),t.navigating.setBatch(i,o);let s=o.map(e=>`${e.key}=${e.value}`).join(` `);t.dlog(`info`,`set-state: ${s} (session=${i})`)},_I=/^-?\d+$/;function vI(e,t,n,r){let i=e+t;return i>r?e===r?n:r:i<n?e===n?r:n:i}const yI=(e,t)=>{let[n=``,r=``,i=``]=lI(()=>oD(e)),a=sI(n);if(!r)throw new $(`step-state: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!_I.test(i))throw new $(`step-state: delta must be an integer, got "${i}"`);let o=parseInt(i,10),s=OI(t,a),c=bj(s),l=c.rangeParamsFor(r);if(!l)throw new $(`step-state: key "${r}" is not a bounded (range) state key (have keys: ${c.listKeys().join(`, `)})`);let u=t.sessionState.get(a,r),d=u&&_I.test(u)?xI(l,parseInt(u,10)):SI(`step-state`,r,l,Cj(s,e=>t.sessionState.get(a,e),r)),f=vI(d,o,l.min,l.max),p=c.validate(r,String(f));if(!p.ok)throw new $(`step-state: ${p.reason}`);bI(t,a,`step-state`,[{key:r,value:p.value}]),t.navigating.set(a,r,p.value),t.dlog(`info`,`step-state: ${r} ${d}→${p.value} (by ${o}, session=${a})`)};function bI(e,t,n,r){let i=r.filter(e=>e.key.startsWith(q_));if(i.length===0)return;let a=tj(OI(e,t),n=>e.sessionState.get(t,n),i);if(a.length>0)throw new $(`${n}: refused — ${a.join(`; `)}`)}function xI(e,t){return Math.max(e.min,Math.min(e.max,t))}function SI(e,t,n,r){if(r===null)return n.min;if(!_I.test(r))throw new $(`${e}: "${t}" shows ${JSON.stringify(r)} before any click, not an integer to step`);return xI(n,parseInt(r,10))}const CI=`render-origin`;function wI(e){return JSON.stringify(e)}function TI(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 EI(e,t){let n=e.sessionState.get(t,CI);if(n===null)throw new $(`session ${t} has not rendered yet — no config to act on`);return TI(n)}function DI(e,t,n){let r=e.sessionState.get(t,CI);if(r===null)return;let i=TI(r),a=kI(i);n.some(e=>e.kind===`file`&&e.file===a)&&e.reloadConfig(i)}function OI(e,t){return e.configFor(EI(e,t))}function kI(e){return dT(e.projectDir,e.cwd,e.configFile??void 0)}function AI(e,t){return{record:(n,r,i)=>e.journal.file(t,n,r,i),logger:e.dlog}}const jI=(e,t)=>{let[n=``,r=``,i=``]=lI(()=>oD(e)),a=sI(n),o=EI(t,a),s=t.configFor(o),c=Ck(s);if(!r)throw new $(`set-config: <key>/<value> is required (have keys: ${c.listKeys().join(`, `)})`);let l=c.validate(r,i);if(!l.ok)throw new $(`set-config: ${l.reason}`);let u=kI(o),d=$A(s,e=>t.sessionState.get(a,e),r);rF(AI(t,a),u,[[d.key,l.value]]),t.reloadConfig(o),t.dlog(`info`,`set-config: ${d.key}=${l.value} → ${u} (session=${a})`)},MI=(e,t)=>{let[n=``,r=``,i=``]=lI(()=>oD(e)),a=sI(n);if(!r)throw new $(`step-config: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!_I.test(i))throw new $(`step-config: delta must be an integer, got "${i}"`);let o=parseInt(i,10),s=EI(t,a),c=t.configFor(s),l=Ck(c),u=l.rangeParamsFor(r);if(!u)throw new $(`step-config: key "${r}" is not a bounded (range) config key (have keys: ${l.listKeys().join(`, `)})`);let d=kI(s),f=$A(c,e=>t.sessionState.get(a,e),r),p=nF(d,f.key),m=typeof p==`number`?xI(u,p):SI(`step-config`,r,u,Tk(f.globals,r)),h=vI(m,o,u.min,u.max),g=l.validate(r,String(h));if(!g.ok)throw new $(`step-config: ${g.reason}`);rF(AI(t,a),d,[[f.key,g.value]]),t.reloadConfig(s),t.dlog(`info`,`step-config: ${f.key} ${m}→${g.value} (by ${o}) → ${d} (session=${a})`)},NI=(e,t)=>{let[n=``]=lI(()=>oD(e)),r=sI(n),i=EI(t,r),a=t.configFor(i),o=e=>t.sessionState.get(r,e),s=ZA(a,o),c=ej(a,o);if(s.length+c.length===0){t.dlog(`info`,`save: nothing unsaved (session=${r})`);return}let l=bj(a),u=s.map(e=>{let t=l.validate(e.sessionKey,e.value);if(!t.ok)throw new $(`save: ${t.reason}`);return[e.target,t.value]});FI(`save`,l,c);let d=kI(i);iF(AI(t,r),d,u,c),t.reloadConfig(i);for(let e of[...s.map(e=>e.sessionKey),...c.map(e=>e.key)])t.sessionState.clear(r,e);t.dlog(`info`,`save: ${[...u.map(([e,t])=>`${e}=${t}`),...c.map(PI)].join(` `)} → ${d} (session=${r})`)},PI=e=>`${e.preset}/${e.id}.settings.${e.setting}=${Ks(e.value)}`;function FI(e,t,n){for(let r of n){let n=t.validate(r.key,Ks(r.value));if(!n.ok)throw new $(`${e}: ${n.reason}`)}}const II=(e,t)=>{let[n=``]=lI(()=>oD(e)),r=sI(n),i=EI(t,r),a=t.configFor(i),o=ij(a,e=>t.sessionState.get(r,e)),s=bj(a),c=o.picks.map(e=>{let t=s.validate(e.sessionKey,e.value);if(!t.ok)throw new $(`save-preset: ${t.reason}`);return[e.configKey,t.value]});FI(`save-preset`,s,o.placements);let l=kI(i),u=uF(AI(t,r),l,o.from,o.globals,c,o.placements);t.reloadConfig(i);for(let e of[...Db.map(e=>e.sessionKey),...o.placements.map(e=>e.key)])t.sessionState.clear(r,e);t.sessionState.set(r,Eb.preset.sessionKey,u),t.dlog(`info`,`save-preset: ${[`${u} from=${o.from}`,...c.map(([e,t])=>`${e}=${t}`),...o.placements.map(PI)].join(` `)} → ${l} (session=${r})`)},LI=(e,t)=>{let[n=``,r=``]=lI(()=>oD(e)),i=sI(n);if(!r)throw new $(`delete-preset: <name> is required (shape: <sessionId>/<name>)`);let a=EI(t,i),o=kI(a);dF(AI(t,i),o,r),t.reloadConfig(a);let s=Eb.preset.sessionKey;t.sessionState.get(i,s)===r&&t.sessionState.clear(i,s),t.dlog(`info`,`delete-preset: ${r} ← ${o} (session=${i})`)},RI=(e,t)=>{let[n=``,...r]=lI(()=>oD(e)),i=sI(n),a=EI(t,i),o=Ck(t.configFor(a)).listKeys(),s=r.length===0?[``]:r.filter(e=>!o.includes(e));if(s.length>0)throw new $(`reset-config: unknown config key "${s.join(`", "`)}" (have: ${o.join(`, `)})`);let c=kI(a),l=r.map(aj),u=l.flatMap(e=>e.fileKeys),d=l.flatMap(e=>e.sessionKeys);cF(AI(t,i),c,u),t.reloadConfig(a);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})`)};function zI(e,t){let n=(e,t)=>[...js(E_(e,t).node)].filter(e=>e.kind===`segment`),r=new Set(C_(t.presets).flatMap(e=>n(t,e).map(t=>J_(hu(e),Ds(t)))));return C_(e.presets).flatMap(t=>n(e,t).map(e=>({member:J_(hu(t),Ds(e)),node:e})).filter(({member:e})=>!r.has(e)))}function BI(e,t){return e.flatMap(({member:e,node:n})=>[...Object.values(n.drafts??{}).map(e=>e.key),...e===t?[H_]:[]])}const VI=(e,t)=>{let[n=``,r=``,i=``]=lI(()=>oD(e)),a=sI(n),o=EI(t,a),s=t.configFor(o),c=Ck(s);if(!r)throw new $(`apply-layout-op: <key>/<op> is required (have: ${c.listKeys().join(`, `)})`);let l=c.validate(r,i);if(!l.ok)throw new $(`apply-layout-op: ${l.reason}`);let u=lk(l.value);if(u===null)throw new $(`apply-layout-op: "${l.value}" is not a layout op token`);let d=kI(o),f=fF(AI(t,a),d,r,u);t.reloadConfig(o);let p=BI(zI(s,t.configFor(o)),t.sessionState.get(a,H_)).filter(e=>t.sessionState.get(a,e)!==null);for(let e of p)t.sessionState.clear(a,e);t.dlog(`info`,`apply-layout-op: ${r} ${l.value} → ${d} placed=${JSON.stringify(f)} released=${JSON.stringify(p)} (session=${a})`)},HI=(e,t)=>{let[n=``]=lI(()=>oD(e)),r=sI(n);t.journal.commit();let i=t.history.undo(r);DI(t,r,i),t.dlog(`info`,`undo: restored ${PF(i)} (session=${r})`)},UI=(e,t)=>{let n=sI(cI(e)),{step:r,discarded:i}=t.navigation.back(n,t.sessionState,bj(OI(t,n))),a=r.map(e=>`${e.key}=${e.before??`∅`}`).join(` `);t.dlog(`info`,`back: ${a} discarded=${i} (session=${n})`)},WI=(e,t)=>{let n=sI(cI(e));t.journal.commit();let r=t.history.rewind(n);DI(t,n,r),t.dlog(`info`,`rewind: put back ${PF(r)||`nothing`} as edit mode found it (session=${n})`)},GI=(e,t)=>{let[n=``]=lI(()=>oD(e)),r=sI(n);t.journal.commit();let i=t.history.redo(r);DI(t,r,i),t.dlog(`info`,`redo: re-applied ${PF(i)} (session=${r})`)},KI=(e,t)=>{sI(cI(e)),t.applyUpdate()},qI=`client-hints`;function JI(e,t){let n=e.sessionState.get(t,qI);if(n===null)throw new $(`session ${t} has not rendered yet — no client facts are recorded for it`);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 TT(r)}function YI(e,t,n){let r=wx(n);e.sessionState.setBatch(t,Ox(r)),e.dlog(`info`,`doctor: ${r.map(e=>`${e.check.name}=${e.verdict.ok?`ok`:`failed`}`).join(` `)} (session=${t})`)}const XI=(e,t)=>{let n=sI(cI(e));YI(t,n,JF(t.doctor,JI(t,n)))},ZI=(e,t)=>{let[n=``,r=``]=lI(()=>oD(e)),i=sI(n),a=Tx(r);if(a===void 0)throw new $(`doctor-fix: unknown check "${r}"`);let o=JF(t.doctor,JI(t,i)),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=YF(s.fix,o);t.dlog(`info`,`doctor-fix: ${a.name} → ${s.fix.kind} ${s.fix.name}=${s.fix.value} (session=${i})`),YI(t,i,c)},QI=(e,t)=>{let[n=``,...r]=lI(()=>oD(e)),i=sI(n),a=EI(t,i),o=Object.values(t.configFor(a).actions).filter(e=>`ceiling`in e).find(e=>{let t=zC(e);return t.length===r.length&&t.every((e,t)=>e===r[t])});if(o===void 0)throw new $(`ceiling: "${r.join(` `)}" is not a move this config declares`);let s=o.ceiling===`set`?{kind:`set`,to:o.to}:{kind:`clear`},c=aA({sessionId:i,projectDir:a.projectDir,cwd:a.cwd},JI(t,i));t.memento.move(c,s),t.dlog(`info`,`ceiling: ${r.join(` `)} (session=${i} claudeConfigDir=${c.claudeConfigDir})`)},$I=(e,t)=>{let[n=``,r=``]=lI(()=>oD(e)),i=sI(n),a=Object.values(t.configFor(EI(t,i)).actions).filter(e=>`slash`in e),o=a.find(e=>e.slash===r);if(o===void 0)throw new $(`${JSON.stringify(r)} is not a command this config declares (it declares: ${[...new Set(a.map(e=>e.slash))].join(`, `)||`none`})`);let s=tI(t.claudeInput,JI(t,i).tmux,o.slash);if(s.kind===`refused`)throw t.dlog(`warn`,`slash: ${r} refused — ${s.reason} (session=${i})`),new $(`${r} was not typed: ${s.reason}`);t.dlog(`info`,`slash: typed ${r} into ${s.pane} (session=${i})`)},eL=`config-override`,tL=new Map([[RE,dI],[`load-config`,(e,t)=>{let n=e.indexOf(`/`);if(n===-1)throw new $(`load-config: expected <sessionId>/<path> (missing separator)`);let r=sI(lI(()=>decodeURIComponent(e.slice(0,n)))),i=lI(()=>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,eL),t.dlog(`info`,`load-config: override cleared (session=${r})`)):(t.sessionState.set(r,eL,i),t.dlog(`info`,`load-config: ${i} (session=${r})`))}],[zE,fI],[IE,gI],[LE,yI],[UE,jI],[WE,MI],[JE,RI],[GE,NI],[KE,II],[qE,LI],[YE,VI],[XE,HI],[ZE,GI],[QE,UI],[$E,WI],[VE,pI],[HE,mI],[BE,hI],[eD,KI],[tD,XI],[nD,ZI],[rD,QI],[iD,$I]]),nL=new Set([IE,LE,UE,WE,JE,GE,KE,qE,YE,XE,ZE,QE,$E,BE,eD,tD,nD,rD,iD]),rL=(e,t)=>{let n=[],r=!1,i=null;for(let{verb:a,value:o}of uD(cD(e))){if(!i&&nL.has(a)){let e=oD(o);e.length>0&&e[0]&&(i=e[0])}let e=tL.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(`
198
- `));let e=`dispatch: ${n.join(`; `)}`;throw r?Error(e):new $(e)}};function iL(e){return(t,n)=>{let r=n.history.begin(),i=n.navigation.begin(r.sessionState),a=[];try{e(t,{...n,sessionState:r.sessionState,journal:r,navigating:i.sessionState})}catch(e){a.push(e)}i.commit();try{r.commit()}catch(e){a.push(e)}if(a.length===1)throw a[0];if(a.length>1)throw Error(a.map(e=>String(e.message??e)).join(`; `))}}const aL=new Map([...tL,[FE,rL]].map(([e,t])=>[e,iL(t)]));Object.freeze([...aL.keys()]);const oL=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`]),sL=[[`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`]],cL=[[`workspace.added_dirs`,`string-list`]];function lL(e){let t={missingRequired:[],typeMismatches:[],unknownTopLevelFields:[]},n=typeof e==`object`&&e&&!Array.isArray(e)?e:{};for(let[e,r]of sL){let i=fL(n,e);if(i==null)t.missingRequired.push(e);else{let n=uL(i);n!==r&&t.typeMismatches.push({path:e,expected:r,got:n})}}for(let[e,r]of cL){let i=fL(n,e),a=i===void 0?r:dL(i);a!==r&&t.typeMismatches.push({path:e,expected:r,got:a})}for(let e of Object.keys(n))oL.has(e)||t.unknownTopLevelFields.push(e);return{data:e,report:t}}function uL(e){return Array.isArray(e)?`array`:typeof e==`string`&&!e.isWellFormed()?`ill-formed string`:typeof e}function dL(e){return Array.isArray(e)&&e.every(e=>uL(e)===`string`)?`string-list`:uL(e)}function fL(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 pL(e,t){switch(e){case`vars`:return{what:e,vars:mL(t)};case`segments`:return{what:e,segments:yL(t)};case`config`:return{what:e,config:CL(t)}}}function mL(e){if(e===null)return[];let{store:t,registry:n,config:r}=e,i=_L(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,...hL(r),lastError:a===void 0?null:{timestampMs:a.timestamp,message:a.message},ageMs:gL(r.lastUpdatedMs())})}return o}function hL(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 gL(e){return e===null?null:Math.max(0,Date.now()-e)}function _L(e){let t=new Map;for(let[n,r]of Object.entries(e.variables))t.set(n,vL(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}`,vL(i));return t}function vL(e){return e.kind}function yL(e){if(e===null)return[];let{store:t,config:n,lastRenderBySegment:r}=e,i=new Set(t.names()),a=xL(n),o=bL(n),s=[];for(let e of a){let t=n.segments[e];t&&s.push({name:e,description:t.description??null,template:t.template,referencedVars:SL(t.template,n.helpers,i),placements:(o.get(e)??[]).map(e=>({id:e,lastRender:r.get(e)??null}))})}return s}function bL(e){let t=new Map;for(let n of C_(e.presets))for(let r of js(E_(e,n).node)){if(r.kind!==`segment`)continue;let e=t.get(r.name)??[],n=Ds(r);e.includes(n)||t.set(r.name,[...e,n])}return t}function xL(e){let t=[],n=new Set;for(let r of js(Nc(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 SL(e,t,n){let r=new Set;for(let i of pv(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 CL(e){return e===null?null:e.config}const wL=[`vars`,`segments`,`config`];function TL(e){return typeof e==`string`&&wL.includes(e)}function EL(e){return Math.max(1,e-2)}var DL=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 tM(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)}},OL=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=Kk(t);if(n&&r!==0&&n.cursor.mtimeMs===r)return this.touch(e,n),{kind:`ok`,value:n.value};let i=await aM(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 kL={messageCount:0,recent:[]};function AL(e,t){if(t.isSidechain)return e;let n=[...e.recent,t];return{messageCount:e.messageCount+ +!!$j(t),recent:n.length>20?n.slice(-20):n}}function jL(e){let t=null,n=null;for(let r of e){let e=r.type||r.message?.role||r.message?.type;if($j(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 ML=class{fold=new OL(kL,AL);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:jL(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 NL={command:null,todos:[],pending:[],done:[]};function PL(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 FL(e,t){if(t.isSidechain)return e;let n=$j(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=PL(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 IL(e){return{command:e.command,todos:e.todos,running:e.pending.reduce((e,t)=>PL(e,t.name),[]),done:e.done}}var LL=class{fold=new OL(NL,FL);async getActivityInfo(e,t){let n=await this.fold.read(e,t.transcript_path);return n.kind===`failed`?X(`activity (${e}): ${n.reason}`):J(IL(n.value))}};const RL=new Map;function zL(e){if(!e)return``;let t=e.indexOf(`,`);return t<0?e:e.slice(0,t)}var BL=class{async getSessionId(){if(!process.env.TMUX_PANE)return Y;let e=zL(process.env.TMUX),t=RL.get(e);if(t!==void 0)return t;D(`Getting tmux session ID, TMUX_PANE: ${process.env.TMUX_PANE}`);let n=await ke({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 RL.set(e,r),r}isInTmux(){return!!process.env.TMUX_PANE}};const VL=e=>JSON.stringify([e.sessionId,e.projectDir,e.cwd,e.claudeConfigDir,e.env===void 0?null:Xe.map(t=>e.env?.[t]??null)]);var HL=class{readings=new Map;inFlight=new Map;constructor(e,t=Date.now){this.edge=e,this.now=t}getCeiling(e){let t=VL(e),n=this.readings.get(t);if(n&&this.now()-n.at<1e4)return Promise.resolve(n.outcome);let r=this.inFlight.get(t)??this.fetch(t,e);return n?Promise.resolve(n.outcome):r}fetch(e,t){let n=this.edge.locate(t),r=(n.kind===`ok`?this.edge.read(n.value,t):Promise.resolve(n)).then(t=>{if(this.inFlight.get(e)!==r)return t;for(this.readings.delete(e),this.readings.set(e,{outcome:t,at:this.now()});this.readings.size>64;)this.readings.delete(this.readings.keys().next().value);return t}).finally(()=>{this.inFlight.get(e)===r&&this.inFlight.delete(e)});return this.inFlight.set(e,r),r}move(e,t){let n=this.edge.locate(e);if(n.kind!==`ok`)throw Error(n.kind===`failed`?n.reason:`memento is not installed or not enabled for this project`);let r=VL(e);try{this.edge.move(n.value,e,t)}finally{this.readings.delete(r),this.inFlight.delete(r),this.fetch(r,e)}}},UL=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 WL=new _P;De(WL.launchStats);const GL=new qy({counters:WL,logger:Q}),KL=new tb({watchers:GL,logger:Q}),qL=new vM,JL=new xP,YL=new bF(JL,Q),XL=new HF,ZL=new UL(Je()),QL=new DL,$L=new ML,eR=new LL,tR=new BL,nR=new HL(gA()),rR=new hP({gitService:KL,sessionState:JL,watchers:GL},{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)}`)}}),iR=60*1e3;function aR(){let e=import.meta.url,n=[];e.startsWith(`file://`)&&n.push(T(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),xR(0);return}}catch(e){Q(`warn`,`bin stat failed: ${e.message}`)}};return{arm(){i.size!==0&&(a=setInterval(o,iR),a.unref())},checkNow:o}}const oR=aR(),sR=Hj({entryUrl:import.meta.url,intervalMs:iR,releaseIntervalMs:216e5,registryUrl:t.env.CC_CANDYBAR_REGISTRY_URL??`https://registry.npmjs.org`,fetchImpl:fetch,onApplied:()=>oR.checkNow(),log:Q});let cR=null,lR=null,uR=0;function dR(){t.on(`uncaughtException`,e=>{Q(`error`,`uncaughtException: ${e.stack||e.message}`),xR(1)}),t.on(`unhandledRejection`,e=>{Q(`error`,`unhandledRejection: ${String(e)}`),xR(1)});for(let e of[`SIGINT`,`SIGTERM`,`SIGHUP`])t.on(e,()=>{Q(`info`,`received ${e}, shutting down`),xR(0)});try{uR=sE(t.env)}catch(e){Q(`error`,`refusing to boot: ${e.message}`),xR(1);return}cR=fO(t.pid);let e=SO(wO(cR));if(!e.decision.allow){Q(`warn`,`fork-bomb breaker: ${e.decision.reason}; refusing to boot`),xR(1);return}lR=e.registryPath,r.mkdirSync(Ie(),{recursive:!0}),ze(Le()),JL.useStorage(new wP(He(),500,Q)),YL.useStorage(BF(Ue(),Q)),hO({anchor:mO(t.env),isAlive:gO,onOrphaned:e=>{Q(`info`,`parent watchdog: ${e}; shutting down`),xR(0)}}),fR(b.createServer({allowHalfOpen:!1},e=>{SR(e)}),Le(),!1)}function fR(e,n,r){e.removeAllListeners(`error`),e.removeAllListeners(`listening`),e.once(`error`,i=>{if(i.code!==`EADDRINUSE`){Q(`error`,`server error: ${i.message}`),xR(1);return}if(r){Q(`info`,`lost rebind race; another daemon is alive — exiting`),t.exit(0);return}pR(e,n)}),e.listen(n,()=>mR(n))}function pR(e,n){let i=nO(rO(Be(n)),(e,t)=>dO(e,t,{readStartTime:uO,pidAlive:gO}));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}`),xR(1);return}}fR(e,n,!0)}function mR(e){let n=oO(e);if(n.kind!==`present`){Q(`warn`,`no ownable socket at bind callback (${n.kind}); exiting`),xR(0);return}vR(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(re.getHeapStatistics().heap_size_limit/1048576)}MB rssLimit=${Math.round(uR/1048576)}MB`),wE();let i=ZL.reset();i!==null&&Q(`warn`,`diagnostic dump wipe failed: ${i}`),oR.arm(),sR.arm(),_R(),hR(e,n.identity)}function hR(e,n){lO({bound:n,myPid:t.pid,readIdentity:()=>oO(e),readLease:()=>rO(Be(e)),shutdown:e=>xR(e),log:Q}).arm()}let gR=null;function _R(){gR=dE(hE(WL.startedAt.getTime(),e=>xR(e),{rssLimitBytes:uR})),gR.arm()}function vR(e){let n=iO(Be(e),{pid:t.pid,version:3,binPath:t.argv[1],startTime:cR});n!==null&&Q(`warn`,`lease write failed: ${n}`)}let yR=0,bR=!1;function xR(e){if(!bR){bR=!0,setTimeout(()=>t.kill(t.pid,`SIGKILL`),500);try{KL.close()}catch(e){Q(`warn`,`gitService close failed: ${e.message}`)}try{qL.close()}catch(e){Q(`warn`,`usageStore close failed: ${e.message}`)}try{GL.closeAll()}catch(e){Q(`warn`,`watcherRegistry close failed: ${e.message}`)}try{JL.flush()}catch(e){Q(`warn`,`sessionState flush failed: ${e.message}`)}aO(Ve(),t.pid),lR!==null&&CO(lR,t.pid,bO,e=>r.unlinkSync(e)),t.exit(e)}}function SR(e){yR++,WL.inFlight=yR;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:()=>xR(r);try{e.end(PT(n),i)}catch(e){Q(`warn`,`response write failed: ${e.message}`),i?.()}},r=setTimeout(()=>{WL.requestsTimedOut++,n({ok:!1,error:`request exceeded 200ms`,code:`TIMEOUT`,daemonV:3},null)},200),i=FT(e=>{wR(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),yR=Math.max(0,yR-1),WL.inFlight=yR})}const CR=e=>({resp:e,exitAfterFlush:null});async function wR(e){if(!e||typeof e!=`object`||typeof e.v!=`number`)return CR({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 CR({ok:!0,stats:WL.snapshot({gitCache:KL.getStats(),usageCache:qL.getStats(),renderCacheSize:rR.size,watchersActive:GL.size(),nextRestartReason:gR?.describeNextRestart()??null})});if(e.kind===`render`){WL.requestsTotal++;let t=Date.now();try{let{report:n}=lL(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 WL.requestsErrored++,Q(`warn`,`BAD_REQUEST: ${r.join(`; `)}`),CR({ok:!1,error:`malformed hookData: ${r.join(`; `)}`,code:`BAD_REQUEST`,daemonV:3});let i=e.hookData.workspace.project_dir,{configFile:a,unknownFlagsError:o}=TR(e.args),s=e.hookData.session_id,c=TT(e),l=JSON.stringify(c);JL.get(s,`client-hints`)!==l&&JL.set(s,qI,l);let u=JL.get(s,`config-override`)??a??c.configEnv,d=rR.getOrCreate(i,e.cwd,u),f=wI({projectDir:i,cwd:e.cwd,configFile:u??null});JL.get(s,`render-origin`)!==f&&JL.set(s,CI,f);let p=c.termCols,m=EL(p??120),h=VO(c.termRows),{authoredRoots:g}=d.state,_=t=>JL.get(e.hookData.session_id,t),v=vA(d.state.config,_,e=>g.has(e)),y=await FA(e.hookData,{...AR,navigation:e=>XL.depth(e,JL,bj(d.state.config))},e.cwd,d.state.neededInputPaths(v.preset),v,c,{...sj(d.state.config,d.state.fileHeldSettings,_),configPath:d.configFilePath}),b=[],x=yA(v,m),S=tP(d.state.config,d.state.compiled,d.state.store,d.state.registry,y,x,{perSegmentSink:d.state.lastRenderCellsBySegment,onRenderWarning:e=>b.push(e)},bA(v)),C=JL.get(e.hookData.session_id,`click.error`);C&&JL.clear(e.hookData.session_id,`click.error`);let ee=[o,d.lastError,C].filter(Boolean).join(`
199
- `),te=sR.notice({sessionId:s,dismissed:JL.get(s,Ej),enabled:v.updateNotice}),ne=d.lastError===null?null:d.configFilePath,re=KO(ee,te,[d.lastWarning??``,...b].filter(Boolean).join(`
200
- `)),w=ZL.sync(s,re===null?null:JO(re));w!==null&&Q(`warn`,`diagnostic dump failed: ${w}`);let ie=YO(S,re,{fullText:w===null?{kind:`file`,path:ZL.pathFor(s)}:{kind:`unavailable`,reason:w},failedConfigFile:ne},{width:m,rowCap:h,colorCompatibility:v.colorCompatibility}),T=Date.now()-t,E=KL.getStats(),ae=qL.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`}`),CR({ok:!0,output:ie+`
201
- `})}catch(e){throw WL.requestsErrored++,e}}if(e.kind===`click`)return CR(await jR(e.verb,e.value));if(e.kind===`debug`){if(!TL(e.what))return CR({ok:!1,error:`unknown debug 'what': ${String(e.what)} (have: ${wL.join(`, `)})`,code:`BAD_REQUEST`,daemonV:3});let t=rR.firstState(),n=t===null?null:{store:t.store,registry:t.registry,config:t.config,compiled:t.compiled,lastRenderBySegment:e.what===`segments`?kR(t.lastRenderCellsBySegment,t.config.globals.charset??`unicode`,t.config.globals.colorCompatibility??`truecolor`):OR};return CR({ok:!0,debug:pL(e.what,n)})}return CR({ok:!1,error:`unknown kind`,code:`BAD_REQUEST`,daemonV:3})}function TR(e){let{values:t,tokens:n}=v({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:OT(t.config),unknownFlagsError:r.length>0?`Unknown flags: ${r.join(`, `)}`:null}}const ER={sessionState:JL,dlog:Q,applyUpdate:()=>sR.act(),doctor:GF(),memento:nR,claudeInput:oI(),history:YL,navigation:XL,configFor:e=>rR.getOrCreate(e.projectDir,e.cwd,e.configFile??void 0).state.config,reloadConfig:e=>rR.reload(e.projectDir,e.cwd,e.configFile??void 0)};ER.reloadConfig;const DR={endcaps:`powerline`,colorCompatibility:`truecolor`,wrap:!0,padding:1,charset:ho,width:1/0},OR=new Map;function kR(e,t,n){let r=new Map;for(let[i,a]of e)r.set(i,BO(a,{...DR,charset:t,colorCompatibility:n}));return r}const AR={gitProvider:KL,usageStore:qL,contextProvider:QL,metricsProvider:$L,activityProvider:eR,tmuxService:tR,mementoProvider:nR,autoCompact:Mk,log:Q,clock:()=>new Date,history:e=>YL.depth(e)};function jR(e,t){let n=aL.get(e);if(!n)return{ok:!1,error:`unknown click verb: ${e}`,code:`BAD_REQUEST`,daemonV:3};try{return n(t,ER),{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 MR={connectMs:200,budgetMs:500};async function NR(e){let n=e.includes(`--json`),r=await PR();if(r.kind!==`ok`&&(t.stderr.write(`daemon-stats: ${UT(r)}\n`),t.exit(1)),n){t.stdout.write(JSON.stringify(r.value,null,2)+`
202
- `);return}t.stdout.write(RR(r.value))}function PR(){return LT({kind:`stats`},MR,e=>`stats`in e?e.stats:void 0)}function FR(e){return e<1024?`${e}B`:e<1024*1024?`${(e/1024).toFixed(1)}KB`:`${(e/1024/1024).toFixed(1)}MB`}function IR(e,t){let n=e+t;return n===0?`n/a`:`${(e/n*100).toFixed(1)}%`}function LR(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 RR(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 ${LR(e.uptimeSec)}`),t.push(` rss ${FR(e.rssBytes)}`),t.push(` heapUsed ${FR(e.heapUsedBytes)}`),t.push(` heapTotal ${FR(e.heapTotalBytes)}`),t.push(` external ${FR(e.externalBytes)}`),t.push(` arrayBuffers ${FR(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 ${IR(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 ${IR(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(`
194
+ `);n.push(e[0]);for(let r=1;r<e.length;r++)t.push(n),n=[e[r]]}return t.push(n),t}function HN(e,t){let n=t.flatMap(e=>e.filter(e=>e.place===`above`)),r=t.map(e=>e.filter(e=>e.place===`flow`));return[...n,...UN(e,r)]}function UN(e,t){switch(e){case`vertical`:return t.flatMap(e=>e);case`horizontal`:return t.reduce((e,t)=>Math.max(e,t.length),0)===0?[]:[{cells:t.flatMap(e=>e[0]?.cells??[]),band:`own`,place:`flow`},...t.flatMap(e=>e.slice(1))]}}function WN(e,t){let n=(e,r)=>t(e)?e.kind===`segment`?[{cells:[{name:e.name,address:r,settings:e.settings}],band:`own`,place:`flow`}]:HN(e.direction,e.children.map((t,i)=>n(t,[...r,GN(e,i)]))):[];return n(e,[]).map(e=>[...e.cells])}function GN(e,t){return{index:t,count:e.children.length,distribution:e.distribution,axis:Os[e.direction]}}const KN={compile(e,t){return{kind:`container`,direction:e.direction,when:t.when,distribution:ma(e.distribution),children:e.children.map((e,n)=>t.compileChild(e,Ps(t.path,n)))}},render(e,t){return HN(e.direction,e.children.map((n,r)=>t.renderChild(n,t.visible,GN(e,r))))}},qN={drop:e=>e.place,above:()=>`above`},JN={drop:(e,t)=>({lead:t(),stays:e}),above:e=>({lead:e.slice(0,1).flatMap(e=>e.cells),stays:e.slice(1)})},YN={compile(e,t){return{kind:`segment`,when:t.when,name:e.name,id:ks(e),settings:t.placementSettings(e),...e.opens!==void 0&&{opens:{open:t.parse(Xc(e.opens.ref),`opens`),body:t.compileChild(e.opens.body,Fs(t.path)),key:e.opens.ref.key,placement:e.opens.placement}},...e.lead!==void 0&&{lead:t.parse(e.lead,`lead`)},...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[];let a=Cy(t.scope,e.settings);try{if(!DM(i.when,a))return[];let n=Hb(e.settings.theme,t.palette),o=e.opens!==void 0&&DM(e.opens.open,t.scope),{styles:s,fragments:c,lead:l,trail:u,drops:d,open:f}=t.evaluateSegment(e,a,n,t.region,{bg:i.bg,fg:i.fg,body:i.template,lead:e.lead,trail:e.trail},o),p=f?s.trigger:s.closed,m={width:r.width??`auto`,justify:r.justify??`left`,truncate:r.truncate??`right`,baseStyle:p,padding:t.padding},h=e.opens,g=h===void 0?[]:t.renderBody(h.body,o,s.disclosure).map(e=>({...e,place:qN[h.placement](e)})),_=VN(IM(c,p)).map((e,t)=>({cells:MM(e,{...m,lead:t===0?IM(l,p):[],trail:t===0?IM(u,p):[]}),band:`own`,place:`flow`})),v=d.map(e=>({cells:MM(IM([e],s.band),{...m,baseStyle:s.band}),band:`deeper`,place:`flow`})),y=(e,t,n)=>MM(IM([e],t),{...m,width:`auto`,baseStyle:t,padding:n}),b=g.findIndex(e=>e.band===`own`),{lead:x,stays:S}=h!==void 0&&b!==-1?JN[h.placement](_,()=>y(t.closeDisclosure(h.key),s.close,t.padding)):{lead:[],stays:_},C=x.flatMap(e=>y(new V(` `.repeat(AM(e).reduce((e,t)=>e+t.cellLength,0))),s.trigger,0)),ee=(e,t)=>e.band===`own`?t===b?x:C:[],te=g.map((e,t)=>({cells:[...ee(e,t),...e.cells],band:`deeper`,place:e.place})),ne=[...S,...v];return t.perSegmentSink!==void 0&&t.perSegmentSink.set(e.id,[...ne.flatMap(e=>e.cells),...g.flatMap(ee)].flatMap(AM)),[...ne,...te]}catch(n){let r=n.message??String(n);t.onSegmentError?.(e.id,r);let i=r.replace(/\s*\n\s*/g,` `);return[{cells:MM([new V(`⚠ ${e.id}: ${i}`,{end:``})],{width:`auto`,justify:`left`,truncate:`right`,padding:0,lead:XN(e.lead,e,a,t),trail:XN(e.trail,e,a,t)}),band:`own`,place:`flow`}]}}};function XN(e,t,n,r){if(e===void 0)return[];try{return r.evaluateSegment(t,n,r.palette,r.region,{bg:void 0,fg:void 0,body:e,lead:void 0,trail:void 0},!1).fragments}catch(e){return r.onSegmentError?.(t.id,e.message??String(e)),[]}}const ZN={container:KN,segment:YN};function QN(e){return ZN[e]}function $N(e){if(`ttl`in e)return{kind:`ttl`,durationMs:ub(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 eP(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 tP(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:$N(n.cache),parse:eP(n.parse,n.default)});break;case`shell`:e.declareShell(t,n.command,{cwd:r,cache:$N(n.cache),parse:eP(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?ub(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 nP(e,t){let n=Jd.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 rP=e=>So(void 0,null,e.globals.variation);function iP(e,t,n){let r=n.cwd,i=Yb(e.globals.palette),a={store:t.variableStore,compiled:new Map,chromeCols:KO({endcaps:`powerline`,charset:_o}),width:80,basePalette:i,palette:i,variation:oa[rP(e)],padding:1,seamCols:qO({endcaps:`powerline`,charset:_o}),layout:()=>[]},o=cN(t.drawnAt),s={action:a,activeSegment:o},c=Object.keys(e.styles),l=E_(e.presets),u=new Map([...$b(e),...kC(e)]),d=by({...ZM(a),...bN(a,o),...CN(a,o),...DN(a,o),...MN(a,o),...IN(s),...zN(o),styles:{fn:()=>c,argTypes:[],arity:{kind:`exact`}},presets:{fn:()=>l,argTypes:[],arity:{kind:`exact`}}},n.clock,t.drawnAt),f=nP(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 Pb)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=BM(p,e.actions,g,u);let _=[];for(let[n,i]of Object.entries(e.variables))try{tP(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{tP(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`)}}let y=(e,t,n)=>{try{return h(e)}catch(e){throw Error(`Template parse error in ${t}.${n}: ${e.message}`,{cause:e})}},b=t.variableStore,x=t=>{let n=Ws(e.segments[t.name]),r=Object.create(null);for(let[e,i]of Object.entries(n)){let n=t.settings?.[e]??i.default,a=t.drafts?.[e];Object.defineProperty(r,e,{enumerable:!0,get:a===void 0?()=>n:()=>Ys(i,String(b.read(a.variable)))??n})}return Object.freeze(r)},S=(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:S,placementSettings:x};return QN(e.kind).compile(e,n)},C=new Map;for(let t of l){let{node:n,path:r}=k_(e,t);C.set(t,S(n,r))}let ee=new Map(io.map(e=>[e,new Map])),te=[[`globals`,e.globals],...Object.entries(e.presets).map(([e,t])=>[`presets.${e}.globals`,t.globals??{}])];for(let[e,t]of te)for(let n of io){let r=t[n];if(!ao(r))continue;let i=`${e}.${n}`,a=ee.get(n),o=a.get(r);a.set(r,o===void 0?{where:i,template:aP(p,i,r)}:{where:`${o.where}, ${i}`,template:o.template})}return{segments:v,roots:C,activeSegment:o,menuRuntime:s,globalExpressions:ee,loadWarnings:_}}function aP(e,t,n){try{return e(n)}catch(e){throw Error(`${t} is not a valid template: ${e instanceof Error?e.message:String(e)}`)}}function oP(e,t,n){let r=e.globalExpressions.get(t).get(n);if(r===void 0)throw Error(`the ${t} rule ${JSON.stringify(n)} reached the render but no compiled template exists — registerDslConfig and the resolution disagree about isExpression`);return r}function sP(e,t){return e.template.evaluate(t).map(e=>e.plain).join(``)}function cP(e,t){return e.kind===`decided`?e.name:t}function lP(e,t,n,r,i,a,o,s){let{perSegmentSink:c,onSegmentError:l,onRenderWarning:u}=o??{};r.drawAt(yo(a.colorCompatibility));let{preset:d=w_}=s??{},f=A_(e,d),p=oa[s?.variation??So(void 0,null,f.variation)];t.menuRuntime.action.variation=p;let m=s?.style??uo(`none`,e.styles),h=s?.theme??qb(void 0,null,f.palette),g=(e,t)=>({...i,term:{cols:a.width},theme:{effective:e},style:{effective:t}});r.applyInput(g(cP(h,Za),cP(m,co))),t.menuRuntime.action.chromeCols=KO(a),t.menuRuntime.action.padding=a.padding,t.menuRuntime.action.width=a.width,t.menuRuntime.action.seamCols=qO(a);let _=xy(n),v=so(h,e=>{let n=oP(t,`palette`,e);return Kb(sP(n,_),n.where,e=>u?.(e))}),y=so(m,n=>uo(sP(oP(t,`style`,n),_),e.styles));(v!==h||y!==m)&&r.applyInput(g(v.name,y.name));let b=v.value;t.menuRuntime.action.basePalette=b;let x=Wb(b,y.value);t.menuRuntime.action.palette=x,c?.clear();let S=n=>{let r=e.segments[n],i=t.segments[n];return r!==void 0&&i!==void 0?{seg:r,compiled:i}:void 0},C=(e,n,i,a,o,s)=>{try{let c=r.drawnAt(),{tint:l,disclosure:u}=Ja(i,a,c),d=lN(t.activeSegment,e.name,e.id,i,u,l),f=_x(d,c,o.bg,o.fg,n),p=()=>La(i,u,c).state;s&&(d.bg=p());let m=o.body.evaluate(n),h=d.drops.length>0||s;h&&(d.bg=p());let g=o.lead?.evaluate(n)??[],_=o.trail?.evaluate(n)??[];return{styles:{closed:f,get trigger(){return $M(i,p(),c)},get band(){return $M(i,La(i,u,c).plane,c)},get close(){return tN(i,p(),c)},disclosure:u},fragments:m,lead:g,trail:_,drops:d.drops,open:h}}finally{t.activeSegment.current=null}},ee=(e,t,r)=>{let i=t&&DM(e.when,_),o={scope:_,palette:x,visible:i,padding:a.padding,region:r,perSegmentSink:c,onSegmentError:l,evaluateSegment:C,lookupSegment:S,renderChild:(e,t,n)=>ee(e,t,Ka(r,n)),renderBody:(e,t,n)=>ee(e,i&&t,qa(n)),closeDisclosure:e=>QM(n,e)};return QN(e.kind).render(e,o)},te=t.roots.get(d);if(te===void 0)throw Error(`Preset "${d}" has no compiled layout — registerDslConfig compiles one per declared preset and effectivePresetName collapses unknown names to "${w_}"; a miss here is merge/policy drift (have: ${[...t.roots.keys()].join(`, `)})`);let ne=e=>{if(!DM(e.when,_))return!1;if(e.kind===`container`)return!0;if(RC(e.name)===void 0)return!1;try{return DM(t.segments[e.name].when,Cy(_,e.settings))}catch{return!0}};return t.menuRuntime.action.layout=()=>WN(te,ne).map(e=>e.flatMap(({name:e,address:t,settings:n})=>{let r=RC(e);return r===void 0?[]:[{name:r,address:t,palette:Hb(n.theme,x)}]})),ee(te,!0,Ga(p)).map(e=>JO(FM(e.cells,a),a)).join(`
195
+ `)}var uP=class{kind=`box`;cell;lastChangedAt;constructor(e,t,n){this.name=e,this.type=t,gP(e,t,n,`initial value`),this.cell=Ev.observable.box(n,{deep:!1}),this.lastChangedAt=Date.now()}read(){return this.cell.get()}set(e){gP(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}},dP=class{kind=`computed`;cell;constructor(e,t,n){this.name=e,this.type=t,this.cell=(0,Ev.computed)(()=>{let e=n();return gP(this.name,this.type,e,`computed result`),e},{keepAlive:!0})}read(){return this.cell.get()}lastUpdatedMs(){return null}},fP=class{kind=`document`;cell;lastChangedAt;constructor(e,t){this.name=e,this.cell=Ev.observable.box(hP(t),{deep:!1}),this.lastChangedAt=Date.now()}read(){return this.cell.get()}set(e){let t=hP(e);mP(this.cell.get(),t)||(this.cell.set(t),this.lastChangedAt=Date.now())}lastUpdatedMs(){return this.lastChangedAt}};function pP(e){return JSON.stringify(e)}function mP(e,t){return pP(e)===pP(t)}function hP(e){return e.kind===`ok`?{kind:`ok`,value:Dv(e.value)}:e}function gP(e,t,n,r){let i=Ov(n);if(i!==t)throw TypeError(`Variable "${e}": ${r} type ${i} does not match declared type ${t}`)}var _P=class{nodes=new Map;defineBox(e,t,n){this.assertNotDefined(e),this.nodes.set(e,new uP(e,t,n))}defineDocument(e,t){this.assertNotDefined(e),this.nodes.set(e,new fP(e,t))}defineComputed(e,t,n){this.assertNotDefined(e);let r=e=>this.read(e);this.nodes.set(e,new dP(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,Ev.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,Ev.runInAction)(()=>n.set(t))}runInAction(e){(0,Ev.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 pP(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 vP(e,t,n){return e+`\0`+t+`\0`+(n??``)}function yP(e,t){return new Set(E_(e.presets).filter(n=>k_(e,n).path===`root`?t.root!==void 0:t.presets?.[n]?.root!==void 0))}function bP(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 xP(e,t){let n=new Map;for(let t of gT(e.projectDir,e.cwd,e.configFile)){let{dir:e,name:r}=bP(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 SP(e){return e.filter(Boolean).join(`
196
+ `)||null}var CP=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=vP(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.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=t.state),this.refreshWatcher(e,t.resolvedPath),this.observers.onReload?.(e)}loadFromDisk(e,t,n){let r=vT(e,t,n),i=r.kind===`file`?r.path:null,a=[ST(e,t),bT(r)],o;try{o=this.buildState(t,i,a)}catch(e){return e instanceof Ss&&a.push(...e.warnings),{resolvedPath:i,warning:SP(a),state:null,error:e instanceof Ss||e instanceof Error?e.message:String(e)}}return{resolvedPath:i,warning:SP(a),state:o,error:null}}buildState(e,t,n){let r=CT(t,Zk),{config:i,raw:a}=r;n.push(...r.warnings);let o=ET(r,t??`<default>`),s=new _P,c=new Db(s,o.globals.default_empty_value??``,this.deps.gitService,this.deps.sessionState),l;try{l=iP(o,c,{cwd:e}),n.push(...l.loadWarnings),Oj(o),jk(o)}catch(e){throw c.dispose(),e}return{config:o,store:s,registry:c,compiled:l,neededInputPaths:zA(o),lastRenderCellsBySegment:new Map,authoredRoots:yP(i,a),fileHeldSettings:mj(a)}}refreshWatcher(e,t){e.configFilePath=t;let n=xP(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 wP=16384;var TP=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<wP){this.rollingTimestamps.push(e);return}this.rollingTimestamps[this.rollingHead]=e,this.rollingHead=(this.rollingHead+1)%wP}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:xD,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}}};function EP(e,t,n){let r=(r,i,a)=>{let o=i.filter(t).map(t=>({key:t,before:e.get(r,t)}));a();for(let{key:t,before:i}of o)n(r,t,i,e.get(r,t))};return{get:(t,n)=>e.get(t,n),set:(t,n,i)=>r(t,[n],()=>e.set(t,n,i)),setBatch:(t,n)=>r(t,n.map(e=>e.key),()=>e.setBatch(t,n)),clear:(t,n)=>r(t,[n],()=>e.clear(t,n))}}const DP={load:()=>({}),save:()=>{},flush:()=>{}};function OP(e){let t=new Map;for(let[n,r]of Object.entries(e))t.set(n,new Map(Object.entries(r)));return t}var kP=class{sessions;storage;atom=(0,Ev.createAtom)(`SessionState`);constructor(e=DP,t=256){this.maxSessions=t,this.storage=e,this.sessions=new Map,this.hydrateFromStorage()}useStorage(e){this.storage=e,this.hydrateFromStorage()}hydrateFromStorage(){this.sessions=OP(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,Ev.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,Ev.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,Ev.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 AP=(e,t)=>D(t);function jP(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 MP=class{timer=null;pending=null;constructor(e,t=500,n=AP){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 jP(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 NP={default_empty_value:`string`,default_separator:`string`,palette:`string`,style:`string`,preset:`string`,endcaps:`string`,variation:`string`,autoWrap:`boolean`,padding:`number`,charset:`string`,updateNotice:`boolean`,colorCompatibility:`string`,menuGlyph:`string`},PP=new Set([`1`,`true`]),FP=new Set([`0`,`false`,``]);function IP(e,t){let n=sF(e),r=n.scope===`segment-palette`?`string`:NP[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(PP.has(t))return`true`;if(FP.has(t))return`false`;throw Error(`persistValueText: "${e}" expects boolean-ish (1, 0, true, false), got "${t}"`)}function LP(e){try{return r.readFileSync(e,`utf8`)}catch(e){if(e.code===`ENOENT`)return null;throw e}}function RP(e,t,n){try{if(t===null){r.rmSync(e,{force:!0});return}r.mkdirSync(c.dirname(e),{recursive:!0}),Me(e,t)}catch(t){let r=`config write failed (${e}): ${t.message}`;throw n(`error`,r),Error(r)}}function zP(e){return/^\s*$/.test(e)?null:Ro(e)}function BP(e,t){return e!==null&&Bo(e,t)!==void 0}function VP(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(VP),...i}}return e}function HP(e){if(!Mc(e))return VP(e);let{rows:t,...n}=e;return{rows:Object.fromEntries(Object.entries(t).map(([e,t])=>[e,VP(t)])),...n}}const UP=Yk,WP=UP.segments,GP=UP.presets,KP=UP.root;function qP(e,t,n,r){if(!BP(e,t)&&n===void 0)throw new $(`cannot edit ${r}: neither the config file nor the bundled default declares ${t.join(`.`)}`)}function JP(e,t){let n=dx(t);return t.scope===`segment-palette`&&qP(e,[`segments`,t.segment],WP[t.segment],n.join(`.`)),n}function YP(e){return Ro(Jo(e))}function XP(){return Object.entries(KP.rows).map(([e,t])=>{let n=VP(t);return{path:[`root`],fragment:YP({rows:{[e]:n}}),unit:{path:[`root`,`rows`,e],value:n}}})}function ZP(e,t){let n=e===null?void 0:Bo(e,t);return n===void 0?null:{path:t,fragment:n,unit:null}}function QP(e,t){if(t===void 0)return null;let n=HP(t);return{path:e,fragment:YP(n),unit:{path:e,value:n}}}function $P(e,t){let n=[`presets`,t],r=[...n,`root`],i=GP[t];qP(e,n,i,r.join(`.`));let a=ZP(e,r)??QP(r,i?.root);return a!==null&&hs(a.fragment)?a:null}function eF(e,t){let n=ms(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 tF(e,t){return[...XP(),ZP(e,[`root`]),$P(e,t)].filter(e=>e!==null).reduce(eF,new Map)}function nF(e,t,n){for(let{node:r,...i}of tF(e,t).values())if(_s(r,n))return i;throw new $(`${rF(e,t).join(`.`)} holds no placement "${n}" — the bar you clicked is stale (it reloads on the next render), or the action names a placement the layout never held`)}function rF(e,t){return $P(e,t)?.path??[`root`]}function iF(e,t){return t.scope===`preset-root`?rF(e,t.preset):dx(t)}function aF(e,{unit:t}){return t===null?e:cs(e,t.path,Jo(t.value),Ko)}function oF(e){let t=ux(e);if(t===null)throw Error(`"${e}" is not a valid persist target`);return t}function sF(e){let t=oF(e);if(t.scope===`preset-root`)throw Error(`"${e}" names a layout, not a value`);return t}function cF(e,t,n,r){lF(t,r),RP(t,r,e.logger),e.record(t,n,r)}function lF(e,t){try{return ET(wT(e,t,Zk),e)}catch(e){throw e instanceof Ss?new $(`refused: the config file would not load after this click — ${e.message}`):e}}function uF(e,t){let n=sF(t),r=zP(LP(e)??``),i=r===null?void 0:Bo(r,dx(n));return i!==void 0&&`value`in i?i.value:void 0}function dF(e,t,n){fF(e,t,n,[])}function fF(e,t,n,r){let i=LP(t);cF(e,t,i,pF(n.reduce((e,[t,n])=>cs(e,JP(zP(e),sF(t)),IP(t,n),Ko),i??``),t,r,e=>e))}function pF(e,t,n,r){return n.reduce((e,{preset:n,id:i,setting:a,value:o})=>{let s=r(e,n,i),c=nF(zP(s),n,i),l=xs(aF(s,c),c.path,i,a,Jo(o));if(l===null)throw new $(`${c.path.join(`.`)} in ${t} has no placement "${i}" — the bar you clicked is stale (it reloads on the next render)`);return l},e)}function mF(e,t,n){let r=zP(e),i=[`presets`,t,`root`];for(let[a,{path:o,unit:s,node:c}]of tF(r,t)){if(!_s(c,n))continue;if(i.every((e,t)=>o[t]===e))return e;let l=s===null?Ho(e,c):Jo(s.value);if(a!==`#`)return cs(e,[...i,`rows`,a],l,Ko);if($P(r,t)!==null)throw new $(`cannot give preset "${t}" its own copy of ${o.join(`.`)}: it already stages rows of its own over that tree`);return cs(e,i,l,Ko)}return e}function hF(e,t){return us(e,t,t[0]===`presets`&&t.length>2&&!$k(t[1])?2:0)}function gF(e,t,n){let r=n.map(oF),i=LP(t);if(i===null)return;let a=r.reduce((e,t)=>hF(e,iF(zP(e),t)),i);a!==i&&cF(e,t,i,a)}function _F(e){let t=e===null?void 0:Bo(e,[`presets`]),n=new Set([...Qk,...t?.kind===`object`?t.entries.map(e=>e.key):[]].map(vu));return Array.from({length:n.size+1},(e,t)=>`custom-${t+1}`).find(e=>!n.has(vu(e)))}function vF(e,t,n,r,i,a){let o=LP(t),s=zP(o??``),c=_F(s),l=[`presets`,c],u=$P(s,n),d=[...u===null?[]:[[[...l,`root`],u.unit===null?Ho(o??``,u.fragment):Jo(u.unit.value)]],...Object.keys(r).length===0?[]:[[[...l,`globals`],Jo(r)]]],f=i.map(([e,t])=>{let n=lx(c,e);return[JP(s,sF(n)),IP(n,t)]});return cF(e,t,o,pF([...d,...f].reduce((e,[t,n])=>cs(e,t,n,Ko),cs(o??``,l,`{}`,Ko)),t,a.map(e=>({...e,preset:c})),mF)),c}function yF(e,t,n){if($k(n))throw new $(`cannot delete preset "${n}": it is bundled — reset its settings instead`);let r=[`presets`,n],i=LP(t),a=zP(i??``);if(i===null||a===null||Bo(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=Bo(a,[`globals`,`preset`]);cF(e,t,i,[r,...o?.kind===`string`&&o.value===n?[[`globals`,`preset`]]:[]].reduce((e,t)=>hF(e,t),i))}function bF(e,t,n,r){let i=oF(n);if(i.scope!==`preset-root`)throw Error(`"${n}" is not a "presets.<name>.root" target`);let a=LP(t),o=r.op===`remove`?r.target:r.anchor,s=nF(zP(a??``),i.preset,o),c=aF(a??``,s),{after:l,placed:u}=xF(c,s.path,r,()=>{let e=lF(t,c);return E_(e.presets).map(t=>k_(e,t).node)});if(l===null)throw new $(`${s.path.join(`.`)} in ${t} has no placement "${o}" — the bar you clicked is stale (it reloads on the next render), or the action names a placement the layout never held`);return cF(e,t,a,l),u}function xF(e,t,n,r){switch(n.op){case`remove`:return{after:ys(e,t,n.target),placed:null};case`insert`:{let i=vk(n.segment,n.anchor,r());return{after:bs(e,t,i,n.anchor,n.relation),placed:i}}}}const SF={load:()=>({}),save:()=>{}},CF=new Set(Ab.map(e=>e.sessionKey)),wF=e=>CF.has(e)||e.startsWith(X_),TF=8*1024*1024,EF={past:[],future:[]},DF=e=>e.kind===`session`?`session:${e.key}`:`file:${e.file}`;var OF=class{state=new Map;constructor(e,t,n=SF){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,savepoint:r}=this.state.get(e)??EF;return{undo:t.length,redo:n.length,sinceEdit:r?.net.length??0}}history(e){return this.state.get(e)??EF}begin(){let e=new Map,t=(t,n)=>{let r=e.get(t)??new Map,i=r.get(DF(n));r.set(DF(n),i===void 0?n:{...n,before:i.before}),e.set(t,r)},n=new Map;return{sessionState:EP(this.sessionState,e=>wF(e)||e===`edit.mode`,(e,r,i,a)=>{if(r===`edit.mode`){let t=n.get(e);n.set(e,{before:t===void 0?i:t.before,after:a});return}t(e,{kind:`session`,key:r,before:i,after:a})}),file:(e,n,r,i)=>t(e,{kind:`file`,file:n,before:r,after:i}),commit:()=>{let t=new Map(e),r=new Map(n);e.clear(),n.clear();for(let e of new Set([...t.keys(),...r.keys()])){let n=[...t.get(e)?.values()??[]].filter(e=>e.before!==e.after),i=this.history(e),a=n.length===0?i:IF(i,n),o=r.get(e),s=o===void 0?a:BF(a,o);s!==i&&this.put(e,s)}}}}undo(e){let t=this.history(e),n=t.past.at(-1);if(n===void 0)throw new $(`undo: nothing to undo`);return this.apply(e,n,`before`,`undo`,RF(t,n)),n}rewind(e){let t=this.history(e),{savepoint:n}=t;if(n===void 0)throw new $(`rewind: edit mode has no savepoint — nothing to cancel`);let r=n.net.filter(t=>this.read(e,t)!==t.after),i=new Set(r.map(DF)),a=n.net.filter(e=>!i.has(DF(e))),o=jF(VF(zF(t,n),i));if(this.apply(e,a,`before`,`rewind`,{past:o,future:[],savepoint:{at:o.length,net:[],below:[]}}),r.length>0)throw new $(`rewind: ${r.map(UF).join(`, `)} changed since edit mode opened — kept as it is; everything else edit mode changed was put back`);return a}redo(e){let t=this.history(e),{past:n,future:r}=t,i=r.at(-1);if(i===void 0)throw new $(`redo: nothing to redo`);let a=[...n,i],o=jF(a);return this.apply(e,i,`after`,`redo`,{past:o,future:r.slice(0,-1),...NF(t.savepoint,a.length-o.length,i)}),i}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(DF)),{past:n,future:i,savepoint:a}=this.history(e);throw this.put(e,{past:VF(n,t),future:VF(i,t),...a!==void 0&&{savepoint:{at:VF([...n,...[...i].reverse()].slice(0,a.at),t).length,net:a.net.filter(e=>!t.has(DF(e))),below:VF(a.below,t)}}}),new $(`${r}: ${o.map(UF).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):LP(t.file)}write(e,t,n){t.kind===`file`?RP(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||t.savepoint!==void 0)&&n.set(e,t);n.size>32||kF(n)>TF;){let[e,t]=n.entries().next().value;n.size>1?n.delete(e):t.past.length+t.future.length>0?n.set(e,AF(t)):(this.logger(`warn`,`settings-history: edit mode's changes for session ${e} exceed ${TF} bytes; cancel is no longer available`),n.delete(e))}this.storage.save(Object.fromEntries(n)),this.state=n}};function kF(e){let t=0;for(let{past:n,future:r,savepoint:i}of e.values())for(let e of[...n,...r,...i===void 0?[]:[i.net,...i.below]])for(let n of e)t+=(n.before?.length??0)+(n.after?.length??0);return t}function AF({past:e,future:t,savepoint:n}){return e.length>0?{past:e.slice(1),future:t,...NF(n,1,[])}:{past:e,future:t.slice(1),...NF(n,0,[])}}function jF(e){return e.slice(-50)}const MF=e=>e===Q_.member;function NF(e,t,n){return e===void 0?{}:{savepoint:{at:Math.max(0,e.at-t),net:PF(e.net,n),below:e.below}}}function PF(e,t){let n=new Map(e.map(e=>[DF(e),e]));for(let e of t){let t=n.get(DF(e));n.set(DF(e),t===void 0?e:{...t,after:e.after})}return[...n.values()].filter(e=>e.before!==e.after)}const FF=e=>e.map(e=>({...e,before:e.after,after:e.before}));function IF(e,t){let n=[...e.past,t],r=jF(n),{savepoint:i}=e,a=i===void 0?0:Math.max(0,i.at-e.past.length);return{past:r,future:[],...NF(i&&{at:Math.min(i.at,e.past.length),net:i.net,below:[...LF(e.future,a),...i.below]},n.length-r.length,t)}}function LF(e,t){let n=Math.min(t,e.length);return e.slice(e.length-n).reverse()}function RF(e,t){return{past:e.past.slice(0,-1),future:jF([...e.future,t]),...NF(e.savepoint,0,FF(t))}}function zF(e,t){let{past:n,future:r}=e,i=n.slice(0,t.at);return[...i,...LF(r,t.at-i.length),...t.below]}function BF(e,t){if(MF(t.after)&&!MF(t.before))return{...e,savepoint:{at:e.past.length,net:[],below:[]}};if(!MF(t.after)&&MF(t.before)){let{past:t,future:n}=e;return{past:t,future:n}}return e}function VF(e,t){return e.map(e=>e.filter(e=>!t.has(DF(e)))).filter(e=>e.length>0)}function HF(e){return e.map(UF).join(`, `)}function UF(e){return e.kind===`session`?`session setting "${e.key}"`:e.file}function WF(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 GF(e){return Array.isArray(e)&&e.every(e=>Array.isArray(e)&&e.every(WF))}function KF(e){if(typeof e!=`object`||!e)return!1;let t=e;return Number.isInteger(t.at)&&t.at>=0&&Array.isArray(t.net)&&t.net.every(WF)&&GF(t.below)}function qF(e){if(typeof e!=`object`||!e)return!1;let t=e;return GF(t.past)&&GF(t.future)&&(t.savepoint===void 0||KF(t.savepoint))}function JF(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(qF))return e}catch{}return t(`warn`,`settings-history load: unexpected shape, starting empty`),{}},save:n=>{try{r.mkdirSync(c.dirname(e),{recursive:!0}),Me(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 YF=e=>!wF(e)&&!Rx(e)&&e!==`update.dismissed`;var XF=class{past=new Map;depth(e,t,n){return this.restorable(e,t,n).length}restorable(e,t,n){let r=new Map,i=n=>r.has(n)?r.get(n):t.get(e,n),a=[];for(let t of[...this.past.get(e)??[]].reverse())if(t.every(e=>i(e.key)===e.after&&(e.before===null||n.validate(e.key,e.before).ok))){a.unshift(t);for(let e of t)r.set(e.key,e.before)}return a}begin(e){let t=new Map;return{sessionState:EP(e,YF,(e,n,r,i)=>{let a=t.get(e)??new Map,o=a.get(n);a.set(n,{key:n,before:o?o.before:r,after:i}),t.set(e,a)}),commit:()=>{for(let[e,n]of t){let t=[...n.values()].filter(e=>e.before!==e.after);t.length>0&&this.push(e,t)}t.clear()}}}back(e,t,n){let r=this.past.get(e)??[],i=this.restorable(e,t,n),a=i.at(-1),o=r.length-i.length;if(a===void 0)throw this.put(e,i),new $(`back: nothing to go back to${o>0?` (${o} step(s) over a view since gone, discarded)`:``}`);return(0,Ev.runInAction)(()=>{let n=a.flatMap(({key:e,before:t})=>t===null?[]:[{key:e,value:t}]);n.length>0&&t.setBatch(e,n);for(let{key:n,before:r}of a)r===null&&t.clear(e,n)}),this.put(e,i.slice(0,-1)),{step:a,discarded:o}}push(e,t){let n=this.past.get(e)??[];this.put(e,[...n,t].slice(-20))}put(e,t){for(this.past.delete(e),t.length>0&&this.past.set(e,t);this.past.size>32;)this.past.delete(this.past.keys().next().value)}};function ZF(e,t,n,r){let i=Ae({bin:`tmux`,args:[`-S`,e.socket,...n],timeoutMs:2e3,category:t,stdinInput:r});if(i.ok)return{kind:`ok`,stdout:i.stdout};if(i.reason===`rate-limited`)return{kind:`rate-limited`,reason:i.error??`rate-limited`};let a=i.error??[i.reason,i.stderr.trim()].filter(e=>e!==``).join(`: `);return{kind:`failed`,reason:`tmux ${n[0]} failed (${a})`}}function QF(e){let t=ZF(e,`doctor.tmux`,[`display`,`-p`,`-t`,e.pane,`#{client_termfeatures}`]);return t.kind===`ok`?{kind:`ok`,value:t.stdout.trim().split(`,`).filter(e=>e!==``)}:{kind:`failed`,reason:t.reason}}function $F(){return{probeTmux:QF}}function eI(e){let t=AD(e).env;if(t===void 0)return{path:e,env:{}};if(typeof t!=`object`||!t||Array.isArray(t))throw Error(`cannot read ${e}: \`env\` is not an object`);return{path:e,env:t}}function tI(e,t){return t===void 0?{kind:`unreported`}:t===null?{kind:`outside`}:{kind:`inside`,hint:t,termfeatures:e.probeTmux(t)}}function nI(e,t){return{tmux:tI(e,t.tmux),claudeSettings:eI(DD(ED(t.claudeConfigDir)))}}function rI(e,t){let n=t.claudeSettings.path;switch(e.kind){case`claude-settings-env`:{let i=cs(kD(n),[`env`,e.name],JSON.stringify(e.value),qo);return r.mkdirSync(c.dirname(n),{recursive:!0}),Me(n,i),{...t,claudeSettings:eI(n)}}default:return e.kind}}const iI=/^─{20,}/,aI=/^❯(\s|$)/,oI=/›\s*stashed$/;function sI(e){if(e.inMode)return{kind:`in-mode`};let t=e.screen.map(e=>e.trimEnd()),n=t.flatMap((e,t)=>iI.test(e)?[t]:[]).at(-2);return n===void 0||!aI.test(t[n+1]??``)?{kind:`no-prompt`}:oI.test(t[n-1]??``)?{kind:`stashed`}:{kind:`ready`}}const cI={"in-mode":`the Claude Code pane is in tmux copy mode — leave it (q) and click again`,stashed:`Claude Code is holding a stashed prompt (ctrl+s) — restore or send it, then click again`,"no-prompt":`Claude Code is not at its prompt (a dialog or picker is open) — close it and click again`};function lI(e,t,n){if(t===void 0)return{kind:`refused`,reason:`this session's statusline client reports no tmux facts (it predates this daemon) — rebuild or reinstall cc-candybar`};if(t===null)return{kind:`refused`,reason:`this Claude Code is not running inside tmux — the bar can only type into a tmux pane`};let r=sI(e.read(t));if(r.kind!==`ready`)return{kind:`refused`,reason:cI[r.kind]};let i=e.type(t,n);return i.kind===`typed`?{kind:`typed`,pane:t.pane}:i}const uI=`cc-candybar-slash`;function dI(e,t,n,r){let i=ZF(e,t,n,r);if(i.kind===`failed`)throw Error(i.reason);return i}function fI(e){let t=dI(e,`claude-input.read`,[`display`,`-p`,`-t`,e.pane,`#{pane_in_mode}`,`;`,`capture-pane`,`-p`,`-t`,e.pane]);if(t.kind===`rate-limited`)throw Error(t.reason);let[n=``,...r]=t.stdout.split(`
197
+ `);return{inMode:n!==`0`,screen:r}}function pI(e,t){let n=dI(e,`claude-input.type`,[`load-buffer`,`-b`,uI,`-`,`;`,`send-keys`,`-t`,e.pane,`C-s`,`;`,`paste-buffer`,`-p`,`-d`,`-b`,uI,`-t`,e.pane,`;`,`send-keys`,`-t`,e.pane,`Enter`],t);return n.kind===`ok`?{kind:`typed`}:{kind:`refused`,reason:`cc-candybar typed a command moments ago — click again in a second (${n.reason})`}}function mI(){return{read:fI,type:pI}}function hI(e){if(!e)throw new $(`session id is required`);if(e.includes(`/`)||e.includes(`..`))throw new $(`invalid session id "${e}"`);return e}function gI(e){return _I(()=>decodeURIComponent(e))}function _I(e){try{return e()}catch(e){throw e instanceof URIError?new $(`malformed wire encoding: ${e.message}`):e}}function vI(e,t){let n=Ae({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 yI=(e,t)=>vI(gI(e),t),bI=(e,t)=>{let n=Ae({bin:`/usr/bin/open`,args:[`-a`,`Visual Studio Code`,gI(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`})`)}},xI=(e,t)=>vI(gI(e),t),SI=(e,t)=>vI(gI(e),t),CI=(e,t)=>{let n=hI(gI(e));t.navigating.get(n,`toolbar-expanded`)?t.navigating.clear(n,`toolbar-expanded`):t.navigating.set(n,`toolbar-expanded`,`1`)},wI=(e,t)=>{let[n=``,...r]=_I(()=>mD(e)),i=hI(n),a=Oj(II(t,i));if(r.length===0)throw new $(`set-state: <key>/<value> is required (have keys: ${a.listKeys().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: ${a.listKeys().join(`, `)})`);let o=[];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=a.validate(t,n);if(!i.ok)throw new $(`set-state: pair ${e/2+1}: ${i.reason}`);o.push({key:t,value:i.value})}OI(t,i,`set-state`,o),t.navigating.setBatch(i,o);let s=o.map(e=>`${e.key}=${e.value}`).join(` `);t.dlog(`info`,`set-state: ${s} (session=${i})`)},TI=/^-?\d+$/;function EI(e,t,n,r){let i=e+t;return i>r?e===r?n:r:i<n?e===n?r:n:i}const DI=(e,t)=>{let[n=``,r=``,i=``]=_I(()=>mD(e)),a=hI(n);if(!r)throw new $(`step-state: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!TI.test(i))throw new $(`step-state: delta must be an integer, got "${i}"`);let o=parseInt(i,10),s=II(t,a),c=Oj(s),l=c.rangeParamsFor(r);if(!l)throw new $(`step-state: key "${r}" is not a bounded (range) state key (have keys: ${c.listKeys().join(`, `)})`);let u=t.sessionState.get(a,r),d=u&&TI.test(u)?kI(l,parseInt(u,10)):AI(`step-state`,r,l,jj(s,e=>t.sessionState.get(a,e),r)),f=EI(d,o,l.min,l.max),p=c.validate(r,String(f));if(!p.ok)throw new $(`step-state: ${p.reason}`);OI(t,a,`step-state`,[{key:r,value:p.value}]),t.navigating.set(a,r,p.value),t.dlog(`info`,`step-state: ${r} ${d}→${p.value} (by ${o}, session=${a})`)};function OI(e,t,n,r){let i=r.filter(e=>e.key.startsWith(X_));if(i.length===0)return;let a=lj(II(e,t),n=>e.sessionState.get(t,n),i);if(a.length>0)throw new $(`${n}: refused — ${a.join(`; `)}`)}function kI(e,t){return Math.max(e.min,Math.min(e.max,t))}function AI(e,t,n,r){if(r===null)return n.min;if(!TI.test(r))throw new $(`${e}: "${t}" shows ${JSON.stringify(r)} before any click, not an integer to step`);return kI(n,parseInt(r,10))}const jI=`render-origin`;function MI(e){return JSON.stringify(e)}function NI(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 PI(e,t){let n=e.sessionState.get(t,jI);if(n===null)throw new $(`session ${t} has not rendered yet — no config to act on`);return NI(n)}function FI(e,t,n){let r=e.sessionState.get(t,jI);if(r===null)return;let i=NI(r),a=LI(i);n.some(e=>e.kind===`file`&&e.file===a)&&e.reloadConfig(i)}function II(e,t){return e.configFor(PI(e,t))}function LI(e){return yT(e.projectDir,e.cwd,e.configFile??void 0)}function RI(e,t){return{record:(n,r,i)=>e.journal.file(t,n,r,i),logger:e.dlog}}const zI=(e,t)=>{let[n=``,r=``,i=``]=_I(()=>mD(e)),a=hI(n),o=PI(t,a),s=t.configFor(o),c=jk(s);if(!r)throw new $(`set-config: <key>/<value> is required (have keys: ${c.listKeys().join(`, `)})`);let l=c.validate(r,i);if(!l.ok)throw new $(`set-config: ${l.reason}`);let u=LI(o),d=sj(s,e=>t.sessionState.get(a,e),r);dF(RI(t,a),u,[[d.key,l.value]]),t.reloadConfig(o),t.dlog(`info`,`set-config: ${d.key}=${l.value} → ${u} (session=${a})`)},BI=(e,t)=>{let[n=``,r=``,i=``]=_I(()=>mD(e)),a=hI(n);if(!r)throw new $(`step-config: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!TI.test(i))throw new $(`step-config: delta must be an integer, got "${i}"`);let o=parseInt(i,10),s=PI(t,a),c=t.configFor(s),l=jk(c),u=l.rangeParamsFor(r);if(!u)throw new $(`step-config: key "${r}" is not a bounded (range) config key (have keys: ${l.listKeys().join(`, `)})`);let d=LI(s),f=sj(c,e=>t.sessionState.get(a,e),r),p=uF(d,f.key),m=typeof p==`number`?kI(u,p):AI(`step-config`,r,u,Nk(f.globals,r)),h=EI(m,o,u.min,u.max),g=l.validate(r,String(h));if(!g.ok)throw new $(`step-config: ${g.reason}`);dF(RI(t,a),d,[[f.key,g.value]]),t.reloadConfig(s),t.dlog(`info`,`step-config: ${f.key} ${m}→${g.value} (by ${o}) → ${d} (session=${a})`)},VI=(e,t)=>{let[n=``]=_I(()=>mD(e)),r=hI(n),i=PI(t,r),a=t.configFor(i),o=e=>t.sessionState.get(r,e),s=aj(a,o),c=cj(a,o);if(s.length+c.length===0){t.dlog(`info`,`save: nothing unsaved (session=${r})`);return}let l=Oj(a),u=s.map(e=>{let t=l.validate(e.sessionKey,e.value);if(!t.ok)throw new $(`save: ${t.reason}`);return[e.target,t.value]});UI(`save`,l,c);let d=LI(i);fF(RI(t,r),d,u,c),t.reloadConfig(i);for(let e of[...s.map(e=>e.sessionKey),...c.map(e=>e.key)])t.sessionState.clear(r,e);t.dlog(`info`,`save: ${[...u.map(([e,t])=>`${e}=${t}`),...c.map(HI)].join(` `)} → ${d} (session=${r})`)},HI=e=>`${e.preset}/${e.id}.settings.${e.setting}=${Js(e.value)}`;function UI(e,t,n){for(let r of n){let n=t.validate(r.key,Js(r.value));if(!n.ok)throw new $(`${e}: ${n.reason}`)}}const WI=(e,t)=>{let[n=``]=_I(()=>mD(e)),r=hI(n),i=PI(t,r),a=t.configFor(i),o=fj(a,e=>t.sessionState.get(r,e)),s=Oj(a),c=o.picks.map(e=>{let t=s.validate(e.sessionKey,e.value);if(!t.ok)throw new $(`save-preset: ${t.reason}`);return[e.configKey,t.value]});UI(`save-preset`,s,o.placements);let l=LI(i),u=vF(RI(t,r),l,o.from,o.globals,c,o.placements);t.reloadConfig(i);for(let e of[...Ab.map(e=>e.sessionKey),...o.placements.map(e=>e.key)])t.sessionState.clear(r,e);t.sessionState.set(r,kb.preset.sessionKey,u),t.dlog(`info`,`save-preset: ${[`${u} from=${o.from}`,...c.map(([e,t])=>`${e}=${t}`),...o.placements.map(HI)].join(` `)} → ${l} (session=${r})`)},GI=(e,t)=>{let[n=``,r=``]=_I(()=>mD(e)),i=hI(n);if(!r)throw new $(`delete-preset: <name> is required (shape: <sessionId>/<name>)`);let a=PI(t,i),o=LI(a);yF(RI(t,i),o,r),t.reloadConfig(a);let s=kb.preset.sessionKey;t.sessionState.get(i,s)===r&&t.sessionState.clear(i,s),t.dlog(`info`,`delete-preset: ${r} ← ${o} (session=${i})`)},KI=(e,t)=>{let[n=``,...r]=_I(()=>mD(e)),i=hI(n),a=PI(t,i),o=jk(t.configFor(a)).listKeys(),s=r.length===0?[``]:r.filter(e=>!o.includes(e));if(s.length>0)throw new $(`reset-config: unknown config key "${s.join(`", "`)}" (have: ${o.join(`, `)})`);let c=LI(a),l=r.map(pj),u=l.flatMap(e=>e.fileKeys),d=l.flatMap(e=>e.sessionKeys);gF(RI(t,i),c,u),t.reloadConfig(a);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})`)};function qI(e,t){let n=(e,t)=>[...Ns(k_(e,t).node)].filter(e=>e.kind===`segment`),r=new Set(E_(t.presets).flatMap(e=>n(t,e).map(t=>Z_(vu(e),ks(t)))));return E_(e.presets).flatMap(t=>n(e,t).map(e=>({member:Z_(vu(t),ks(e)),node:e})).filter(({member:e})=>!r.has(e)))}function JI(e,t){return e.flatMap(({member:e,node:n})=>[...Object.values(n.drafts??{}).map(e=>e.key),...e===t?[G_]:[]])}const YI=(e,t)=>{let[n=``,r=``,i=``]=_I(()=>mD(e)),a=hI(n),o=PI(t,a),s=t.configFor(o),c=jk(s);if(!r)throw new $(`apply-layout-op: <key>/<op> is required (have: ${c.listKeys().join(`, `)})`);let l=c.validate(r,i);if(!l.ok)throw new $(`apply-layout-op: ${l.reason}`);let u=_k(l.value);if(u===null)throw new $(`apply-layout-op: "${l.value}" is not a layout op token`);let d=LI(o),f=bF(RI(t,a),d,r,u);t.reloadConfig(o);let p=JI(qI(s,t.configFor(o)),t.sessionState.get(a,G_)).filter(e=>t.sessionState.get(a,e)!==null);for(let e of p)t.sessionState.clear(a,e);t.dlog(`info`,`apply-layout-op: ${r} ${l.value} → ${d} placed=${JSON.stringify(f)} released=${JSON.stringify(p)} (session=${a})`)},XI=(e,t)=>{let[n=``]=_I(()=>mD(e)),r=hI(n);t.journal.commit();let i=t.history.undo(r);FI(t,r,i),t.dlog(`info`,`undo: restored ${HF(i)} (session=${r})`)},ZI=(e,t)=>{let n=hI(gI(e)),{step:r,discarded:i}=t.navigation.back(n,t.sessionState,Oj(II(t,n))),a=r.map(e=>`${e.key}=${e.before??`∅`}`).join(` `);t.dlog(`info`,`back: ${a} discarded=${i} (session=${n})`)},QI=(e,t)=>{let n=hI(gI(e));t.journal.commit();let r=t.history.rewind(n);FI(t,n,r),t.dlog(`info`,`rewind: put back ${HF(r)||`nothing`} as edit mode found it (session=${n})`)},$I=(e,t)=>{let[n=``]=_I(()=>mD(e)),r=hI(n);t.journal.commit();let i=t.history.redo(r);FI(t,r,i),t.dlog(`info`,`redo: re-applied ${HF(i)} (session=${r})`)},eL=(e,t)=>{hI(gI(e)),t.applyUpdate()},tL=`client-hints`;function nL(e,t){let n=e.sessionState.get(t,tL);if(n===null)throw new $(`session ${t} has not rendered yet — no client facts are recorded for it`);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 NT(r)}function rL(e,t,n){let r=Ox(n);e.sessionState.setBatch(t,Mx(r)),e.dlog(`info`,`doctor: ${r.map(e=>`${e.check.name}=${e.verdict.ok?`ok`:`failed`}`).join(` `)} (session=${t})`)}const iL=(e,t)=>{let n=hI(gI(e));rL(t,n,nI(t.doctor,nL(t,n)))},aL=(e,t)=>{let[n=``,r=``]=_I(()=>mD(e)),i=hI(n),a=kx(r);if(a===void 0)throw new $(`doctor-fix: unknown check "${r}"`);let o=nI(t.doctor,nL(t,i)),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=rI(s.fix,o);t.dlog(`info`,`doctor-fix: ${a.name} → ${s.fix.kind} ${s.fix.name}=${s.fix.value} (session=${i})`),rL(t,i,c)},oL=(e,t)=>{let[n=``,...r]=_I(()=>mD(e)),i=hI(n),a=PI(t,i),o=Object.values(t.configFor(a).actions).filter(e=>`ceiling`in e).find(e=>{let t=qC(e);return t.length===r.length&&t.every((e,t)=>e===r[t])});if(o===void 0)throw new $(`ceiling: "${r.join(` `)}" is not a move this config declares`);let s=o.ceiling===`set`?{kind:`set`,to:o.to}:{kind:`clear`},c=pA({sessionId:i,projectDir:a.projectDir,cwd:a.cwd},nL(t,i));t.memento.move(c,s),t.dlog(`info`,`ceiling: ${r.join(` `)} (session=${i} claudeConfigDir=${c.claudeConfigDir})`)},sL=(e,t)=>{let[n=``,r=``]=_I(()=>mD(e)),i=hI(n),a=Object.values(t.configFor(PI(t,i)).actions).filter(e=>`slash`in e),o=a.find(e=>e.slash===r);if(o===void 0)throw new $(`${JSON.stringify(r)} is not a command this config declares (it declares: ${[...new Set(a.map(e=>e.slash))].join(`, `)||`none`})`);let s=lI(t.claudeInput,nL(t,i).tmux,o.slash);if(s.kind===`refused`)throw t.dlog(`warn`,`slash: ${r} refused — ${s.reason} (session=${i})`),new $(`${r} was not typed: ${s.reason}`);t.dlog(`info`,`slash: typed ${r} into ${s.pane} (session=${i})`)},cL=`config-override`,lL=new Map([[KE,yI],[`load-config`,(e,t)=>{let n=e.indexOf(`/`);if(n===-1)throw new $(`load-config: expected <sessionId>/<path> (missing separator)`);let r=hI(_I(()=>decodeURIComponent(e.slice(0,n)))),i=_I(()=>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,cL),t.dlog(`info`,`load-config: override cleared (session=${r})`)):(t.sessionState.set(r,cL,i),t.dlog(`info`,`load-config: ${i} (session=${r})`))}],[qE,bI],[WE,wI],[GE,DI],[ZE,zI],[QE,BI],[nD,KI],[$E,VI],[eD,WI],[tD,GI],[rD,YI],[iD,XI],[aD,$I],[oD,ZI],[sD,QI],[YE,xI],[XE,SI],[JE,CI],[cD,eL],[lD,iL],[uD,aL],[dD,oL],[fD,sL]]),uL=new Set([WE,GE,ZE,QE,nD,$E,eD,tD,rD,iD,aD,oD,sD,JE,cD,lD,uD,dD,fD]),dL=(e,t)=>{let n=[],r=!1,i=null;for(let{verb:a,value:o}of vD(gD(e))){if(!i&&uL.has(a)){let e=mD(o);e.length>0&&e[0]&&(i=e[0])}let e=lL.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(`
198
+ `));let e=`dispatch: ${n.join(`; `)}`;throw r?Error(e):new $(e)}};function fL(e){return(t,n)=>{let r=n.history.begin(),i=n.navigation.begin(r.sessionState),a=[];try{e(t,{...n,sessionState:r.sessionState,journal:r,navigating:i.sessionState})}catch(e){a.push(e)}i.commit();try{r.commit()}catch(e){a.push(e)}if(a.length===1)throw a[0];if(a.length>1)throw Error(a.map(e=>String(e.message??e)).join(`; `))}}const pL=new Map([...lL,[UE,dL]].map(([e,t])=>[e,fL(t)]));Object.freeze([...pL.keys()]);const mL=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`]),hL=[[`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`]],gL=[[`workspace.added_dirs`,`string-list`]];function _L(e){let t={missingRequired:[],typeMismatches:[],unknownTopLevelFields:[]},n=typeof e==`object`&&e&&!Array.isArray(e)?e:{};for(let[e,r]of hL){let i=bL(n,e);if(i==null)t.missingRequired.push(e);else{let n=vL(i);n!==r&&t.typeMismatches.push({path:e,expected:r,got:n})}}for(let[e,r]of gL){let i=bL(n,e),a=i===void 0?r:yL(i);a!==r&&t.typeMismatches.push({path:e,expected:r,got:a})}for(let e of Object.keys(n))mL.has(e)||t.unknownTopLevelFields.push(e);return{data:e,report:t}}function vL(e){return Array.isArray(e)?`array`:typeof e==`string`&&!e.isWellFormed()?`ill-formed string`:typeof e}function yL(e){return Array.isArray(e)&&e.every(e=>vL(e)===`string`)?`string-list`:vL(e)}function bL(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 xL(e,t){switch(e){case`vars`:return{what:e,vars:SL(t)};case`segments`:return{what:e,segments:DL(t)};case`config`:return{what:e,config:jL(t)}}}function SL(e){if(e===null)return[];let{store:t,registry:n,config:r}=e,i=TL(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,...CL(r),lastError:a===void 0?null:{timestampMs:a.timestamp,message:a.message},ageMs:wL(r.lastUpdatedMs())})}return o}function CL(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 wL(e){return e===null?null:Math.max(0,Date.now()-e)}function TL(e){let t=new Map;for(let[n,r]of Object.entries(e.variables))t.set(n,EL(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}`,EL(i));return t}function EL(e){return e.kind}function DL(e){if(e===null)return[];let{store:t,config:n,lastRenderBySegment:r}=e,i=new Set(t.names()),a=kL(n),o=OL(n),s=[];for(let e of a){let t=n.segments[e];t&&s.push({name:e,description:t.description??null,template:t.template,referencedVars:AL(t.template,n.helpers,i),placements:(o.get(e)??[]).map(e=>({id:e,lastRender:r.get(e)??null}))})}return s}function OL(e){let t=new Map;for(let n of E_(e.presets))for(let r of Ns(k_(e,n).node)){if(r.kind!==`segment`)continue;let e=t.get(r.name)??[],n=ks(r);e.includes(n)||t.set(r.name,[...e,n])}return t}function kL(e){let t=[],n=new Set;for(let r of Ns(Fc(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 AL(e,t,n){let r=new Set;for(let i of gv(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 jL(e){return e===null?null:e.config}const ML=[`vars`,`segments`,`config`];function NL(e){return typeof e==`string`&&ML.includes(e)}function PL(e){return Math.max(1,e-2)}var FL=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 lM(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)}},IL=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=eA(t);if(n&&r!==0&&n.cursor.mtimeMs===r)return this.touch(e,n),{kind:`ok`,value:n.value};let i=await pM(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 LL={messageCount:0,recent:[]};function RL(e,t){if(t.isSidechain)return e;let n=[...e.recent,t];return{messageCount:e.messageCount+ +!!sM(t),recent:n.length>20?n.slice(-20):n}}function zL(e){let t=null,n=null;for(let r of e){let e=r.type||r.message?.role||r.message?.type;if(sM(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 BL=class{fold=new IL(LL,RL);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:zL(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 VL={command:null,todos:[],pending:[],done:[]};function HL(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 UL(e,t){if(t.isSidechain)return e;let n=sM(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=HL(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 WL(e){return{command:e.command,todos:e.todos,running:e.pending.reduce((e,t)=>HL(e,t.name),[]),done:e.done}}var GL=class{fold=new IL(VL,UL);async getActivityInfo(e,t){let n=await this.fold.read(e,t.transcript_path);return n.kind===`failed`?X(`activity (${e}): ${n.reason}`):J(WL(n.value))}};const KL=new Map;function qL(e){if(!e)return``;let t=e.indexOf(`,`);return t<0?e:e.slice(0,t)}var JL=class{async getSessionId(){if(!process.env.TMUX_PANE)return Y;let e=qL(process.env.TMUX),t=KL.get(e);if(t!==void 0)return t;D(`Getting tmux session ID, TMUX_PANE: ${process.env.TMUX_PANE}`);let n=await ke({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 KL.set(e,r),r}isInTmux(){return!!process.env.TMUX_PANE}};const YL=e=>JSON.stringify([e.sessionId,e.projectDir,e.cwd,e.claudeConfigDir,e.env===void 0?null:Xe.map(t=>e.env?.[t]??null)]);var XL=class{readings=new Map;inFlight=new Map;constructor(e,t=Date.now){this.edge=e,this.now=t}getCeiling(e){let t=YL(e),n=this.readings.get(t);if(n&&this.now()-n.at<1e4)return Promise.resolve(n.outcome);let r=this.inFlight.get(t)??this.fetch(t,e);return n?Promise.resolve(n.outcome):r}fetch(e,t){let n=this.edge.locate(t),r=(n.kind===`ok`?this.edge.read(n.value,t):Promise.resolve(n)).then(t=>{if(this.inFlight.get(e)!==r)return t;for(this.readings.delete(e),this.readings.set(e,{outcome:t,at:this.now()});this.readings.size>64;)this.readings.delete(this.readings.keys().next().value);return t}).finally(()=>{this.inFlight.get(e)===r&&this.inFlight.delete(e)});return this.inFlight.set(e,r),r}move(e,t){let n=this.edge.locate(e);if(n.kind!==`ok`)throw Error(n.kind===`failed`?n.reason:`memento is not installed or not enabled for this project`);let r=YL(e);try{this.edge.move(n.value,e,t)}finally{this.readings.delete(r),this.inFlight.delete(r),this.fetch(r,e)}}},ZL=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 QL=new TP;De(QL.launchStats);const $L=new Xy({counters:QL,logger:Q}),eR=new ib({watchers:$L,logger:Q}),tR=new EM,nR=new kP,rR=new OF(nR,Q),iR=new XF,aR=new ZL(Je()),oR=new FL,sR=new BL,cR=new GL,lR=new JL,uR=new XL(wA()),dR=new CP({gitService:eR,sessionState:nR,watchers:$L},{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)}`)}}),fR=60*1e3;function pR(){let e=import.meta.url,n=[];e.startsWith(`file://`)&&n.push(T(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),kR(0);return}}catch(e){Q(`warn`,`bin stat failed: ${e.message}`)}};return{arm(){i.size!==0&&(a=setInterval(o,fR),a.unref())},checkNow:o}}const mR=pR(),hR=Xj({entryUrl:import.meta.url,intervalMs:fR,releaseIntervalMs:216e5,registryUrl:t.env.CC_CANDYBAR_REGISTRY_URL??`https://registry.npmjs.org`,fetchImpl:fetch,onApplied:()=>mR.checkNow(),log:Q});let gR=null,_R=null,vR=0;function yR(){t.on(`uncaughtException`,e=>{Q(`error`,`uncaughtException: ${e.stack||e.message}`),kR(1)}),t.on(`unhandledRejection`,e=>{Q(`error`,`unhandledRejection: ${String(e)}`),kR(1)});for(let e of[`SIGINT`,`SIGTERM`,`SIGHUP`])t.on(e,()=>{Q(`info`,`received ${e}, shutting down`),kR(0)});try{vR=hE(t.env)}catch(e){Q(`error`,`refusing to boot: ${e.message}`),kR(1);return}gR=bO(t.pid);let e=AO(MO(gR));if(!e.decision.allow){Q(`warn`,`fork-bomb breaker: ${e.decision.reason}; refusing to boot`),kR(1);return}_R=e.registryPath,r.mkdirSync(Ie(),{recursive:!0}),ze(Le()),nR.useStorage(new MP(He(),500,Q)),rR.useStorage(JF(Ue(),Q)),CO({anchor:SO(t.env),isAlive:wO,onOrphaned:e=>{Q(`info`,`parent watchdog: ${e}; shutting down`),kR(0)}}),bR(b.createServer({allowHalfOpen:!1},e=>{AR(e)}),Le(),!1)}function bR(e,n,r){e.removeAllListeners(`error`),e.removeAllListeners(`listening`),e.once(`error`,i=>{if(i.code!==`EADDRINUSE`){Q(`error`,`server error: ${i.message}`),kR(1);return}if(r){Q(`info`,`lost rebind race; another daemon is alive — exiting`),t.exit(0);return}xR(e,n)}),e.listen(n,()=>SR(n))}function xR(e,n){let i=uO(dO(Be(n)),(e,t)=>yO(e,t,{readStartTime:vO,pidAlive:wO}));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}`),kR(1);return}}bR(e,n,!0)}function SR(e){let n=mO(e);if(n.kind!==`present`){Q(`warn`,`no ownable socket at bind callback (${n.kind}); exiting`),kR(0);return}ER(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(re.getHeapStatistics().heap_size_limit/1048576)}MB rssLimit=${Math.round(vR/1048576)}MB`),ME();let i=aR.reset();i!==null&&Q(`warn`,`diagnostic dump wipe failed: ${i}`),mR.arm(),hR.arm(),TR(),CR(e,n.identity)}function CR(e,n){_O({bound:n,myPid:t.pid,readIdentity:()=>mO(e),readLease:()=>dO(Be(e)),shutdown:e=>kR(e),log:Q}).arm()}let wR=null;function TR(){wR=yE(CE(QL.startedAt.getTime(),e=>kR(e),{rssLimitBytes:vR})),wR.arm()}function ER(e){let n=fO(Be(e),{pid:t.pid,version:3,binPath:t.argv[1],startTime:gR});n!==null&&Q(`warn`,`lease write failed: ${n}`)}let DR=0,OR=!1;function kR(e){if(!OR){OR=!0,setTimeout(()=>t.kill(t.pid,`SIGKILL`),500);try{eR.close()}catch(e){Q(`warn`,`gitService close failed: ${e.message}`)}try{tR.close()}catch(e){Q(`warn`,`usageStore close failed: ${e.message}`)}try{$L.closeAll()}catch(e){Q(`warn`,`watcherRegistry close failed: ${e.message}`)}try{nR.flush()}catch(e){Q(`warn`,`sessionState flush failed: ${e.message}`)}pO(Ve(),t.pid),_R!==null&&jO(_R,t.pid,OO,e=>r.unlinkSync(e)),t.exit(e)}}function AR(e){DR++,QL.inFlight=DR;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:()=>kR(r);try{e.end(HT(n),i)}catch(e){Q(`warn`,`response write failed: ${e.message}`),i?.()}},r=setTimeout(()=>{QL.requestsTimedOut++,n({ok:!1,error:`request exceeded 200ms`,code:`TIMEOUT`,daemonV:3},null)},200),i=UT(e=>{MR(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),DR=Math.max(0,DR-1),QL.inFlight=DR})}const jR=e=>({resp:e,exitAfterFlush:null});async function MR(e){if(!e||typeof e!=`object`||typeof e.v!=`number`)return jR({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 jR({ok:!0,stats:QL.snapshot({gitCache:eR.getStats(),usageCache:tR.getStats(),renderCacheSize:dR.size,watchersActive:$L.size(),nextRestartReason:wR?.describeNextRestart()??null})});if(e.kind===`render`){QL.requestsTotal++;let t=Date.now();try{let{report:n}=_L(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 QL.requestsErrored++,Q(`warn`,`BAD_REQUEST: ${r.join(`; `)}`),jR({ok:!1,error:`malformed hookData: ${r.join(`; `)}`,code:`BAD_REQUEST`,daemonV:3});let i=e.hookData.workspace.project_dir,{configFile:a,unknownFlagsError:o}=NR(e.args),s=e.hookData.session_id,c=NT(e),l=JSON.stringify(c);nR.get(s,`client-hints`)!==l&&nR.set(s,tL,l);let u=nR.get(s,`config-override`)??a??c.configEnv,d=dR.getOrCreate(i,e.cwd,u),f=MI({projectDir:i,cwd:e.cwd,configFile:u??null});nR.get(s,`render-origin`)!==f&&nR.set(s,jI,f);let p=c.termCols,m=PL(p??120),h=YO(c.termRows),{authoredRoots:g}=d.state,_=t=>nR.get(e.hookData.session_id,t),v=EA(d.state.config,_,e=>g.has(e)),y=await UA(e.hookData,{...RR,navigation:e=>iR.depth(e,nR,Oj(d.state.config))},e.cwd,d.state.neededInputPaths(v.preset),v,c,{...hj(d.state.config,d.state.fileHeldSettings,_),configPath:d.configFilePath}),b=[],x=DA(v,m),S=lP(d.state.config,d.state.compiled,d.state.store,d.state.registry,y,x,{perSegmentSink:d.state.lastRenderCellsBySegment,onRenderWarning:e=>b.push(e)},OA(v)),C=nR.get(e.hookData.session_id,`click.error`);C&&nR.clear(e.hookData.session_id,`click.error`);let ee=[o,d.lastError,C].filter(Boolean).join(`
199
+ `),te=hR.notice({sessionId:s,dismissed:nR.get(s,Pj),enabled:v.updateNotice}),ne=d.lastError===null?null:d.configFilePath,re=ek(ee,te,[d.lastWarning??``,...b].filter(Boolean).join(`
200
+ `)),w=aR.sync(s,re===null?null:nk(re));w!==null&&Q(`warn`,`diagnostic dump failed: ${w}`);let ie=rk(S,re,{fullText:w===null?{kind:`file`,path:aR.pathFor(s)}:{kind:`unavailable`,reason:w},failedConfigFile:ne},{width:m,rowCap:h,colorCompatibility:v.colorCompatibility}),T=Date.now()-t,E=eR.getStats(),ae=tR.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`}`),jR({ok:!0,output:ie+`
201
+ `})}catch(e){throw QL.requestsErrored++,e}}if(e.kind===`click`)return jR(await zR(e.verb,e.value));if(e.kind===`debug`){if(!NL(e.what))return jR({ok:!1,error:`unknown debug 'what': ${String(e.what)} (have: ${ML.join(`, `)})`,code:`BAD_REQUEST`,daemonV:3});let t=dR.firstState(),n=t===null?null:{store:t.store,registry:t.registry,config:t.config,compiled:t.compiled,lastRenderBySegment:e.what===`segments`?LR(t.lastRenderCellsBySegment,t.config.globals.charset??`unicode`,t.config.globals.colorCompatibility??`truecolor`):IR};return jR({ok:!0,debug:xL(e.what,n)})}return jR({ok:!1,error:`unknown kind`,code:`BAD_REQUEST`,daemonV:3})}function NR(e){let{values:t,tokens:n}=v({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:IT(t.config),unknownFlagsError:r.length>0?`Unknown flags: ${r.join(`, `)}`:null}}const PR={sessionState:nR,dlog:Q,applyUpdate:()=>hR.act(),doctor:$F(),memento:uR,claudeInput:mI(),history:rR,navigation:iR,configFor:e=>dR.getOrCreate(e.projectDir,e.cwd,e.configFile??void 0).state.config,reloadConfig:e=>dR.reload(e.projectDir,e.cwd,e.configFile??void 0)};PR.reloadConfig;const FR={endcaps:`powerline`,colorCompatibility:`truecolor`,wrap:!0,padding:1,charset:_o,width:1/0},IR=new Map;function LR(e,t,n){let r=new Map;for(let[i,a]of e)r.set(i,JO(a,{...FR,charset:t,colorCompatibility:n}));return r}const RR={gitProvider:eR,usageStore:tR,contextProvider:oR,metricsProvider:sR,activityProvider:cR,tmuxService:lR,mementoProvider:uR,autoCompact:Bk,log:Q,clock:()=>new Date,history:e=>rR.depth(e)};function zR(e,t){let n=pL.get(e);if(!n)return{ok:!1,error:`unknown click verb: ${e}`,code:`BAD_REQUEST`,daemonV:3};try{return n(t,PR),{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 BR={connectMs:200,budgetMs:500};async function VR(e){let n=e.includes(`--json`),r=await HR();if(r.kind!==`ok`&&(t.stderr.write(`daemon-stats: ${ZT(r)}\n`),t.exit(1)),n){t.stdout.write(JSON.stringify(r.value,null,2)+`
202
+ `);return}t.stdout.write(KR(r.value))}function HR(){return GT({kind:`stats`},BR,e=>`stats`in e?e.stats:void 0)}function UR(e){return e<1024?`${e}B`:e<1024*1024?`${(e/1024).toFixed(1)}KB`:`${(e/1024/1024).toFixed(1)}MB`}function WR(e,t){let n=e+t;return n===0?`n/a`:`${(e/n*100).toFixed(1)}%`}function GR(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 KR(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 ${GR(e.uptimeSec)}`),t.push(` rss ${UR(e.rssBytes)}`),t.push(` heapUsed ${UR(e.heapUsedBytes)}`),t.push(` heapTotal ${UR(e.heapTotalBytes)}`),t.push(` external ${UR(e.externalBytes)}`),t.push(` arrayBuffers ${UR(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 ${WR(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 ${WR(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(`
203
203
  `)+`
204
- `}const zR={connectMs:200,budgetMs:500};async function BR(e,n){let r=n.includes(`--json`),i=await VR(e);if(i.kind!==`ok`&&(t.stderr.write(`${e}: ${UT(i)}\n`),t.exit(1)),r){t.stdout.write(JSON.stringify(i.value,null,2)+`
205
- `);return}t.stdout.write(HR(i.value))}function VR(e){return LT({kind:`debug`,what:e},zR,e=>`debug`in e?e.debug:void 0)}function HR(e){switch(e.what){case`vars`:return UR(e.vars);case`segments`:return WR(e.segments);case`config`:return GR(e.config);default:return e}}function UR(e){if(e.length===0)return`no variables (DSL not active)
206
- `;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?``:` ${qR(a.ageMs)}`,o=a.lastError?` ✗ ${a.lastError.message}`:``;t.push(` ${a.name.padEnd(n)} ${(a.source??`—`).padEnd(r)} ${a.type.padEnd(i)} ${KR(a.value)}${e}${o}`)}return t.join(`
204
+ `}const qR={connectMs:200,budgetMs:500};async function JR(e,n){let r=n.includes(`--json`),i=await YR(e);if(i.kind!==`ok`&&(t.stderr.write(`${e}: ${ZT(i)}\n`),t.exit(1)),r){t.stdout.write(JSON.stringify(i.value,null,2)+`
205
+ `);return}t.stdout.write(XR(i.value))}function YR(e){return GT({kind:`debug`,what:e},qR,e=>`debug`in e?e.debug:void 0)}function XR(e){switch(e.what){case`vars`:return ZR(e.vars);case`segments`:return QR(e.segments);case`config`:return $R(e.config);default:return e}}function ZR(e){if(e.length===0)return`no variables (DSL not active)
206
+ `;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?``:` ${tz(a.ageMs)}`,o=a.lastError?` ✗ ${a.lastError.message}`:``;t.push(` ${a.name.padEnd(n)} ${(a.source??`—`).padEnd(r)} ${a.type.padEnd(i)} ${ez(a.value)}${e}${o}`)}return t.join(`
207
207
  `)+`
208
- `}function WR(e){if(e.length===0)return`no segments (DSL not active)
208
+ `}function QR(e){if(e.length===0)return`no segments (DSL not active)
209
209
  `;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(`, `)}`);for(let{id:e,lastRender:r}of n.placements)r!==null&&t.push(` last ${e}: ${r}`)}return t.join(`
210
210
  `)+`
211
- `}function GR(e){return e===null?`config: DSL not active
211
+ `}function $R(e){return e===null?`config: DSL not active
212
212
  `:JSON.stringify(e,null,2)+`
213
- `}function KR(e){let t=typeof e==`string`?e:JSON.stringify(e);return t.length>60?t.slice(0,57)+`…`:t}function qR(e){return e<1e3?`${e}ms`:e<6e4?`${(e/1e3).toFixed(1)}s`:`${Math.floor(e/6e4)}m`}function JR(){let e=XR();return e===null?null:r.readFileSync(e,`utf-8`)}function YR(){let e;try{e=JR()}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 XR(){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 ZR(e){let t=e.CC_CANDYBAR_CONFIG??``;return t===``?void 0:t}const QR=5e3;function $R(e){let t=`/home/tester`,n=Math.floor(Date.now()/1e3),r=`test0a1b-2c3d-4e5f-6a7b-8c9d0e1f2a3b`,i={current_dir:`${t}/code/cc-candybar/src`,project_dir:`${t}/code/cc-candybar`,added_dirs:[]};return{hook_event_name:`Status`,session_id:r,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:i,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},autocompact:Nk(4e5,1e6),...xA(e),history:{undo:1,redo:1,sinceEdit:1},navigation:{back:1},unsaved:1,resettable:1,resumeCommand:_A(i,r,void 0),configPath:`${t}/.config/cc-candybar/config.json5`}}function ez(e,t){let n=uT(e,e),r=fT(n);return r!==null&&t.push(r),n.kind===`file`?n.path:null}async function tz(e,n=t.cwd()){let i=[],a=e===void 0?ez(n,i):c.resolve(sT(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=mT(n,n);o!==null&&i.push(o);try{return{kind:`clean`,configPath:a,warnings:i,rendered:await iz(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 bs&&i.push(...e.warnings),{kind:`fatal`,configPath:a,message:e instanceof bs||e instanceof Error?e.message:String(e),warnings:i})}}async function nz(e,t,n){let r=hT(e,Uk);n.push(...r.warnings);let i=vT(r,e??`<default>`),a=new lP,o=new wb(a,i.globals.default_empty_value??``,void 0,new xP);try{let e=XN(i,o,{cwd:t});n.push(...e.loadWarnings);let r=await o.settled(QR);return r.length>0&&n.push(`source${r.length===1?``:`s`} still running after ${QR} ms, rendered with fallback values: ${r.join(`, `)}`),{config:i,compiled:e,store:a,registry:o}}catch(e){throw o.dispose(),e}}function rz({config:e,compiled:t,store:n,registry:r},i,a){let o=new Map;return{rendered:tP(e,t,n,r,$R(i),yA(i,a),{onSegmentError:(e,t)=>o.set(`segment "${e}"`,t),onRenderWarning:e=>o.set(`theme rule`,e)},bA(i)),failures:o}}async function iz(e,t,n){let r=await nz(e,t,n),{config:i}=r;try{let e=Vj();try{bj(i),Ck(i)}finally{e()}let t=vA(i,()=>null,()=>!1),n=e=>rz(r,e,200),a=n(t),o=n({...t,presetCustomized:!0}),s=[...[...a.failures].map(([e,t])=>`${e}: ${t}`),...[...o.failures].filter(([e])=>!a.failures.has(e)).map(([e,t])=>`${e}: ${t} (under .preset.customized = true)`)];if(s.length>0)throw Error(`config renders with ${s.length} render error${s.length===1?``:`s`} (the daemon would show them on the bar):\n`+s.map(e=>` ${e}`).join(`
214
- `));return a.rendered}finally{r.registry.dispose()}}function az(e){return e.map(e=>`warning: ${e}\n`).join(``)}function oz(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:az(e.warnings),code:0};case`fatal`:return{stdout:``,stderr:az(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 sz=`--render`,cz=`Usage: cc-candybar check [${sz}] [config-file]\n`;function lz(e){let t=e.filter(e=>e.startsWith(`--`)),n=e.filter(e=>!e.startsWith(`--`)),r=t.filter(e=>e!==sz);return r.length>0?{kind:`usage`,message:`check: unknown option ${r.join(` `)}\n${cz}`}:n.length>1||n[0]===``?{kind:`usage`,message:`check: expected at most one non-empty path\n${cz}`}:{kind:`run`,target:n[0],render:t.includes(sz)}}async function uz(e){let n=lz(e),r=n.kind===`usage`?{stdout:``,stderr:n.message,code:2}:oz(await tz(n.target??ZR(t.env)),n.render);t.stdout.write(r.stdout),t.stderr.write(r.stderr),t.exit(r.code)}const dz=`${kO}${OO}`;function fz(e){return`${dz}⚠ cc-candybar: ${pz(e)}\n`}function pz(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: ${DO(e.message,60)}`;case`render_failed`:return`render failed: ${DO(e.message,60)}`;case`malformed_response`:return`malformed daemon response: ${DO(e.message,60)}`}}function mz(e){switch(e.kind){case`ok`:return{output:e.value,kick:!1,debug:null};case`transient`:return{output:`
215
- `,kick:!0,debug:`daemon unavailable (transient: ${e.cause}: ${e.message}) — kicking daemon`};case`permanent`:return{output:fz(e),kick:!1,debug:`daemon refused request (permanent: ${e.cause}) — not kicking`}}}function hz(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 gz=` (fix: click the settings menu (${Uc} by default) › 🧰 tools › 🩺 doctor, then [fix] on the bar)`;function _z({check:e,verdict:t}){return t.ok?`✓ ${e.label}\n`:`✗ ${e.label} — ${t.reason}${t.fix===void 0?``:gz}\n`}function vz(e,t,n){let r;try{r=JF(e,{tmux:xx(t),claudeConfigDir:_D(t,n)})}catch(e){return{stdout:``,stderr:`doctor: ${e instanceof Error?e.message:String(e)}\n`,code:2}}let i=wx(r);return{stdout:i.map(_z).join(``),stderr:``,code:+!i.every(e=>e.verdict.ok)}}function yz(e){e.length>0&&(t.stderr.write(`doctor: takes no arguments
213
+ `}function ez(e){let t=typeof e==`string`?e:JSON.stringify(e);return t.length>60?t.slice(0,57)+`…`:t}function tz(e){return e<1e3?`${e}ms`:e<6e4?`${(e/1e3).toFixed(1)}s`:`${Math.floor(e/6e4)}m`}function nz(){let e=iz();return e===null?null:r.readFileSync(e,`utf-8`)}function rz(){let e;try{e=nz()}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 iz(){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 az(e){let t=e.CC_CANDYBAR_CONFIG??``;return t===``?void 0:t}const oz=5e3;function sz(e){let t=`/home/tester`,n=Math.floor(Date.now()/1e3),r=`test0a1b-2c3d-4e5f-6a7b-8c9d0e1f2a3b`,i={current_dir:`${t}/code/cc-candybar/src`,project_dir:`${t}/code/cc-candybar`,added_dirs:[]};return{hook_event_name:`Status`,session_id:r,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:i,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},autocompact:Vk(4e5,1e6),...kA(e),history:{undo:1,redo:1,sinceEdit:1},navigation:{back:1},unsaved:1,resettable:Fb(()=>!0),resumeCommand:TA(i,r,void 0),configPath:`${t}/.config/cc-candybar/config.json5`}}function cz(e,t){let n=vT(e,e),r=bT(n);return r!==null&&t.push(r),n.kind===`file`?n.path:null}async function lz(e,n=t.cwd()){let i=[],a=e===void 0?cz(n,i):c.resolve(hT(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=ST(n,n);o!==null&&i.push(o);try{return{kind:`clean`,configPath:a,warnings:i,rendered:await fz(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 Ss&&i.push(...e.warnings),{kind:`fatal`,configPath:a,message:e instanceof Ss||e instanceof Error?e.message:String(e),warnings:i})}}async function uz(e,t,n){let r=CT(e,Zk);n.push(...r.warnings);let i=ET(r,e??`<default>`),a=new _P,o=new Db(a,i.globals.default_empty_value??``,void 0,new kP);try{let e=iP(i,o,{cwd:t});n.push(...e.loadWarnings);let r=await o.settled(oz);return r.length>0&&n.push(`source${r.length===1?``:`s`} still running after ${oz} ms, rendered with fallback values: ${r.join(`, `)}`),{config:i,compiled:e,store:a,registry:o}}catch(e){throw o.dispose(),e}}function dz({config:e,compiled:t,store:n,registry:r},i,a){let o=new Map;return{rendered:lP(e,t,n,r,sz(i),DA(i,a),{onSegmentError:(e,t)=>o.set(`segment "${e}"`,t),onRenderWarning:e=>o.set(`theme rule`,e)},OA(i)),failures:o}}async function fz(e,t,n){let r=await uz(e,t,n),{config:i}=r;try{let e=Yj();try{Oj(i),jk(i)}finally{e()}let t=EA(i,()=>null,()=>!1),n=e=>dz(r,e,200),a=n(t),o=n({...t,presetCustomized:!0}),s=[...[...a.failures].map(([e,t])=>`${e}: ${t}`),...[...o.failures].filter(([e])=>!a.failures.has(e)).map(([e,t])=>`${e}: ${t} (under .preset.customized = true)`)];if(s.length>0)throw Error(`config renders with ${s.length} render error${s.length===1?``:`s`} (the daemon would show them on the bar):\n`+s.map(e=>` ${e}`).join(`
214
+ `));return a.rendered}finally{r.registry.dispose()}}function pz(e){return e.map(e=>`warning: ${e}\n`).join(``)}function mz(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:pz(e.warnings),code:0};case`fatal`:return{stdout:``,stderr:pz(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 hz=`--render`,gz=`Usage: cc-candybar check [${hz}] [config-file]\n`;function _z(e){let t=e.filter(e=>e.startsWith(`--`)),n=e.filter(e=>!e.startsWith(`--`)),r=t.filter(e=>e!==hz);return r.length>0?{kind:`usage`,message:`check: unknown option ${r.join(` `)}\n${gz}`}:n.length>1||n[0]===``?{kind:`usage`,message:`check: expected at most one non-empty path\n${gz}`}:{kind:`run`,target:n[0],render:t.includes(hz)}}async function vz(e){let n=_z(e),r=n.kind===`usage`?{stdout:``,stderr:n.message,code:2}:mz(await lz(n.target??az(t.env)),n.render);t.stdout.write(r.stdout),t.stderr.write(r.stderr),t.exit(r.code)}const yz=`${LO}${IO}`;function bz(e){return`${yz}⚠ cc-candybar: ${xz(e)}\n`}function xz(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: ${FO(e.message,60)}`;case`render_failed`:return`render failed: ${FO(e.message,60)}`;case`malformed_response`:return`malformed daemon response: ${FO(e.message,60)}`}}function Sz(e){switch(e.kind){case`ok`:return{output:e.value,kick:!1,debug:null};case`transient`:return{output:`
215
+ `,kick:!0,debug:`daemon unavailable (transient: ${e.cause}: ${e.message}) — kicking daemon`};case`permanent`:return{output:bz(e),kick:!1,debug:`daemon refused request (permanent: ${e.cause}) — not kicking`}}}function Cz(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 wz=` (fix: click the settings menu (${Gc} by default) › 🧰 tools › 🩺 doctor, then [fix] on the bar)`;function Tz({check:e,verdict:t}){return t.ok?`✓ ${e.label}\n`:`✗ ${e.label} — ${t.reason}${t.fix===void 0?``:wz}\n`}function Ez(e,t,n){let r;try{r=nI(e,{tmux:Tx(t),claudeConfigDir:TD(t,n)})}catch(e){return{stdout:``,stderr:`doctor: ${e instanceof Error?e.message:String(e)}\n`,code:2}}let i=Ox(r);return{stdout:i.map(Tz).join(``),stderr:``,code:+!i.every(e=>e.verdict.ok)}}function Dz(e){e.length>0&&(t.stderr.write(`doctor: takes no arguments
216
216
  Usage: cc-candybar doctor
217
- `),t.exit(2));let n=vz(GF(),t.env,t.cwd());t.stdout.write(n.stdout),t.stderr.write(n.stderr),t.exit(n.code)}function bz(){return hz(t.env.COLUMNS,t.stderr.columns)}function xz(){return hz(t.env.LINES,t.stderr.rows)}const Sz=[`SSH_CONNECTION`,`SSH_CLIENT`,`SSH_TTY`],Cz=e=>e.some(e=>t.argv.includes(e));function wz(){return Sz.some(e=>(t.env[e]??``)!==``)}function Tz(){console.log(vx)}async function Ez(){try{Cz(gx.help)&&(Tz(),t.exit(0)),Cz(gx.version)&&(console.log(`cc-candybar ${pD}`),t.exit(0));let e=t.argv[2];if(e===`install`&&(await eO(t.argv.slice(3)),t.exit(0)),e===`install-url-handler`&&(YD(),t.exit(0)),e===`url-handle`){await ZD(t.argv[3]);return}if(e===`daemon`){dR();return}if(e===`daemon-stats`&&(await NR(t.argv.slice(3)),t.exit(0)),e===`check`||e===`lint`){await uz(t.argv.slice(3));return}if(e===`schema`){YR();return}if(e===`doctor`){yz(t.argv.slice(3));return}TL(e)&&(await BR(e,t.argv.slice(3)),t.exit(0)),t.stdin.isTTY===!0&&(console.error(`Error: This tool requires input from Claude Code
217
+ `),t.exit(2));let n=Ez($F(),t.env,t.cwd());t.stdout.write(n.stdout),t.stderr.write(n.stderr),t.exit(n.code)}function Oz(){return Cz(t.env.COLUMNS,t.stderr.columns)}function kz(){return Cz(t.env.LINES,t.stderr.rows)}const Az=[`SSH_CONNECTION`,`SSH_CLIENT`,`SSH_TTY`],jz=e=>e.some(e=>t.argv.includes(e));function Mz(){return Az.some(e=>(t.env[e]??``)!==``)}function Nz(){console.log(Sx)}async function Pz(){try{jz(bx.help)&&(Nz(),t.exit(0)),jz(bx.version)&&(console.log(`cc-candybar ${xD}`),t.exit(0));let e=t.argv[2];if(e===`install`&&(await cO(t.argv.slice(3)),t.exit(0)),e===`install-url-handler`&&(rO(),t.exit(0)),e===`url-handle`){await aO(t.argv[3]);return}if(e===`daemon`){yR();return}if(e===`daemon-stats`&&(await VR(t.argv.slice(3)),t.exit(0)),e===`check`||e===`lint`){await vz(t.argv.slice(3));return}if(e===`schema`){rz();return}if(e===`doctor`){Dz(t.argv.slice(3));return}NL(e)&&(await JR(e,t.argv.slice(3)),t.exit(0)),t.stdin.isTTY===!0&&(console.error(`Error: This tool requires input from Claude Code
218
218
 
219
219
  cc-candybar is designed to be used as a Claude Code statusLine command.
220
220
  It reads hook data from stdin and outputs formatted statusline.
@@ -230,4 +230,4 @@ Add to ~/.claude/settings.json:
230
230
  Run with --help for more options.
231
231
 
232
232
  To test output manually:
233
- 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`),Tz(),t.exit(1));let i=mz(await qT(r,t.argv,t.cwd(),{termCols:bz(),termRows:xz(),ssh:wz(),tmux:xx(t.env),configEnv:ZR(t.env),claudeConfigDir:_D(t.env,t.cwd()),mementoEnv:Ze(t.env,t.cwd())}));i.debug!==null&&D(i.debug),i.kick&&gE(),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)}}Ez();export{};
233
+ 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`),Nz(),t.exit(1));let i=Sz(await tE(r,t.argv,t.cwd(),{termCols:Oz(),termRows:kz(),ssh:Mz(),tmux:Tx(t.env),configEnv:az(t.env),claudeConfigDir:TD(t.env,t.cwd()),mementoEnv:Ze(t.env,t.cwd())}));i.debug!==null&&D(i.debug),i.kick&&wE(),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)}}Pz();export{};