@promptctl/cc-candybar 1.76.0 → 1.78.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,42 +21,42 @@ 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=Xr(e);this._text=t;let n=t.length;this._spans=this._spans.map(e=>e.end>n?new ai(e.start,Math.min(e.end,n),e.style):e).filter(e=>e.start<n)}get length(){return this._text.length}get cellLength(){return A(this._text)}get hasContent(){return this._text.length>0}get style(){return this._style}set style(e){this._style=ti(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 ri(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(ri(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;for(let n of t._spans)this._spans.push(n.move(e));return this}let r=Xr(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 ai(t,n,e.style))}return l}_addSpan(e,t,n){ni(n)||this._spans.push(new ai(e,t,ti(n)))}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=t?.marker??`…`,i=A(r);if(e<=0)return this.plain=``,this;let a=Math.max(0,e-i);if(n===`right`)return this._cropRightTo(a),r&&(this._text+=r),this;if(n===`left`)return this._cropLeftTo(a),r&&(this._spans=this._spans.map(e=>e.move(r.length)),this._text=r+this._text),this;let o=Math.floor(a/2),s=a-o,c=this._cellPrefixCharLength(o),l=this._cellSuffixStartCharIndex(s),u=this._text.slice(0,c),d=this._text.slice(l),f=c,p=l,m=r.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 ai(e.start,f,e.style)),e.end>p&&h.push(new ai(p+m,e.end+m,e.style)));return this._text=u+r+d,this._spans=h,this}_cropRightTo(e){let t=this._cellPrefixCharLength(e);this.plain=this._text.slice(0,t)}_cropLeftTo(e){let t=this._cellSuffixStartCharIndex(e),n=-t;this._spans=this._spans.map(e=>{if(!(e.end<=t))return new ai(Math.max(0,e.start+n),e.end+n,e.style)}).filter(e=>e!==void 0),this._text=this._text.slice(t)}_cellPrefixCharLength(e){let t=0,n=0;for(let r of this._text){let i=A(r);if(t+i>e)break;t+=i,n+=r.length}return n}_cellSuffixStartCharIndex(e){let t=[...this._text],n=0,r=0;for(let i=t.length-1;i>=0;i--){let a=A(t[i]);if(n+a>e)break;n+=a,r+=t[i].length}return this._text.length-r}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){let t=r.length;r.append(e.plain),r.stylize(e.style,t,r.length);for(let n of e.spans)r.stylize(n.style,t+n.start,t+n.end)}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=Bt(Gr(e,this).maxWidth),o=this._overflow??e.overflow??`fold`,s=this._justify??e.justify,c=this._noWrap||(e.noWrap??!1)?Bt(1/0):a,l=t.endsWith(`
23
23
  `);for(let e=0;e<i.length;e+=1){let t=i[e],r=e<i.length-1||l,u=Jr(Qr(t),c,{fold:o===`fold`}),d=B.divide(t,u),f=this._justifyLines(d.map(e=>[...this._fitLine(e,c,o)]),a,n,s);for(let e=0;e<f.length;e+=1)yield*f[e],(e<f.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=A(e);n=Math.max(n,t);let i=e.split(/\s+/);for(let e of i)e.length>0&&(r=Math.max(r,A(e)))}let i=Bt(e.maxWidth);return{minimum:Math.min(r,i),maximum:Math.min(n,i)}}_expandTabs(e){return e.includes(` `)?e.replace(/\t/g,` `.repeat(this._tabSize)):e}_buildSegments(e,t,n){let r=t=>Math.max(0,Math.min(t,e.length)),i=new Set([0,e.length]);for(let e of this._spans)i.add(r(e.start)),i.add(r(e.end));let a=[...i].sort((e,t)=>e-t),o=new Map(a.map((e,t)=>[e,t])),s=a.slice(0,-1).map(()=>t);for(let e of this._spans){let t=r(e.end),i=ri(n,e.style),c=o.get(r(e.start));for(let e=c;a[e]<t;e++)s[e]=s[e].add(i)}return s.map((t,n)=>new 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)-$r(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=Qr(e),i=r.split(` `);r.endsWith(` `)&&i.pop();let a=i.length-1,o=Array(a).fill(1),s=i.reduce((e,t)=>e+A(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+=A(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){let r=B.getLineLength(e);if(r-$r(e)<=t){yield*B.adjustLineLength(e,Math.min(r,t),void 0,!1);return}if(n===`ellipsis`&&t>0){yield*B.adjustLineLength(e,t-1,void 0,!1),yield new B(`…`);return}yield*B.adjustLineLength(e,t,void 0,!1)}},oi=class{items;joiner;constructor(e,t){this.items=e,this.joiner=t}*render(e){let t=this.items;if(t.length!==0){yield*this.joiner.join(null,t[0]).render(e);for(let n=0;n<t.length;n++){let r=t[n];yield*r.render(e);let i=n+1<t.length?t[n+1]:null;yield*this.joiner.join(r,i).render(e)}yield B.line()}}};const si={*render(e){}};var ci=class{_text;_style;constructor(e,t){this._text=e,this._style=t}*render(e){yield new B(this._text,this._style)}};function li(e){return{render:e}}function ui(e){return new z({color:e.bgcolor})}function di(e){return e!==void 0&&!e.isDefault?e:void 0}function fi(e,t){let{color:n,bgcolor:r}=e.drawnColors(t??M.TRUECOLOR);if(n===void 0||r===void 0)return!1;let i=n.fixedValue,a=r.fixedValue;return i!==void 0&&a!==void 0?L.fromRgba(i).deltaE(L.fromRgba(a))<.04:n.number===r.number}const pi=Object.freeze({glyph:``,divider:``});var mi=class{_glyph;_divider;constructor(e=pi){this._glyph=e.glyph,this._divider=e.divider}join(e,t){let n=this._glyph,r=this._divider;return li(function*(i){let a=e?.edgeStyle(`right`,i),o=di(a?.bgcolor);if(o===void 0)return;let s=di(t?.edgeStyle(`left`,i).bgcolor),c=new z({bgcolor:o}).drawnColors().bgcolor,l=new z({color:c,bgcolor:s});yield fi(l,i.colorSystem)?new B(r,new z({color:a?.color,bgcolor:o})):new B(n,l)})}},hi=class{_left;_right;_separator;constructor(e){this._left=e?.left??``,this._right=e?.right??``,this._separator=e?.separator??` `}*_emit(e,t,n){if(!(e===null&&t===null)){if(e===null){yield new B(this._left,ui(t.edgeStyle(`left`,n)));return}if(t===null){yield new B(this._right,ui(e.edgeStyle(`right`,n)));return}yield new B(this._right,ui(e.edgeStyle(`right`,n))),this._separator.length>0&&(yield new B(this._separator)),yield new B(this._left,ui(t.edgeStyle(`left`,n)))}}join(e,t){return li(n=>this._emit(e,t,n))}},gi=class{_separator;_style;constructor(e){this._separator=e?.separator??` | `,this._style=e?.style??z.parse(`dim`)}join(e,t){return e===null||t===null?si:new ci(this._separator,this._style)}};function _i(e,t){if(e.isControl||e.text.length===0)return;let n=e.style;return!n||n.isNull||t===null?{text:e.text,sgrCodes:``,link:void 0}:{text:e.text,sgrCodes:n.toSgrCodes(t),link:n.link}}function vi(e,t){let n=[];for(let r of e){let e=_i(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(xr(e));for(let e=a;e<i;e++)r.push(n[e].text);r.push(Sr)}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 yi(e,t){let n=t?.width??80,r=t?.colorSystem,i={};t?.env!==void 0&&(i.env=t.env),t?.isTTY!==void 0&&(i.isTTY=t.isTTY);let a=t?.noColor?null:r===void 0?M.TRUECOLOR:typeof r==`string`?rn(r,i):r,o={maxWidth:n,isTerminal:!1,encoding:`utf-8`,asciiOnly:!1,colorSystem:a};return vi(e.render(o),a)}function bi(e,t){let n=[...e.render(t)],r=0;for(let e of n)r+=e.cellLength;return{segments:n,width:r}}const xi={segments:[],width:0},Si={left:()=>0,justify:()=>0,center:e=>Math.floor(e/2),right:e=>e};function Ci(e,t){return Si[e](t)}function wi(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 Ti=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=>bi(t,e)),o=n=>i?bi(i.join(null,t[n]),e):xi,s=n=>i?bi(i.join(t[n],null),e):xi,c=(n,r)=>i?bi(i.join(t[n],t[r]),e):xi,l=[],u=null,d=r>0?{segments:[new B(` `.repeat(r))],width:r}:xi;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=Ci(p,i),o=wi(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=bi(t[i],e).width,o=this.joiner?bi(this.joiner.join(null,t[i]),e).width:0,s=this.joiner?bi(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+=bi(this.joiner.join(t[i-1],t[i]),e).width))}return this.joiner&&(r+=bi(this.joiner.join(null,t[0]),e).width,r+=bi(this.joiner.join(t[t.length-1],null),e).width),{minimum:n,maximum:r}}};const Ei={dark:`textual-dark`,light:`textual-light`};function Di(e){return Ei[e]??e}const Oi=`textual-dark`;function ki(e,t,n,r,i){let a=t===null?null:i(t);return e??a??n??r}function Ai(){return Object.keys(Ei)}function ji(){return[...nr(),...Ai()]}function Mi(e,t,n,r,i){let a=e=>Object.prototype.hasOwnProperty.call(i,e)?e:null;return ki(e===void 0?null:a(e),t,a(n??r),r,a)}const H=[`look`,`palette`];function Ni(e){return e!==void 0&&e.includes(`{{`)}function Pi(e,t,n,r,i){let a=Ni(n)?{kind:`expression`,source:n}:i(n??r.name);return ki(e===void 0?null:i(e),t,a,r,i)}function Fi(e,t,n){return e.kind===`decided`?e:n(t())}const Ii=`none`;function Li(e,t){let n=t[e];return n===void 0?null:{kind:`decided`,name:e,value:n}}function Ri(e,t){return Li(e,t)??Li(`none`,t)??{kind:`decided`,name:`none`,value:En}}function zi(e,t,n,r){return Pi(e,t,n,Ri(Ii,r),e=>Li(e,r))}const Bi=[`powerline`,`capsule`,`plain`];function Vi(e){return Bi.includes(e)}function Hi(e,t,n){return ki(e,t,n,`powerline`,e=>Vi(e)?e:null)}const Ui=[`unicode`,`ascii`],Wi=[`truecolor`,`256`,`ansi`,`none`];function Gi(e){return rn(e)??M.DEFAULT}const Ki=`true`,U=`false`,qi=[Ki,U],Ji={min:0,max:16};function Yi(e){return e===`true`?!0:e===`false`?!1:null}function Xi(e){if(!/^\d+$/.test(e))return null;let t=Number(e);return t>=Ji.min&&t<=Ji.max?t:null}function Zi(e,t,n){return ki(e,t,n,!0,Yi)}function Qi(e,t,n){return ki(e,t,n,1,Xi)}var $i=class extends Error{constructor(e,t){super(`${e} (at offset ${t})`),this.reason=e,this.offset=t,this.name=`Json5EditError`}};const ea=/[A-Za-z_$\p{L}]/u,ta=/[A-Za-z0-9_$\u200C\u200D\p{L}\p{N}]/u,na=/[A-Za-z0-9_$.+\-\p{L}\p{N}]/u,ra=/[\t\n\v\f\r \u00A0\uFEFF\u2028\u2029\p{Zs}]/u;var ia=class{pos=0;constructor(e){this.text=e}peek(){return this.text[this.pos]??``}fail(e){throw new $i(e,this.pos)}skipTrivia(){for(;;){let e=this.peek();if(e===``)return;if(ra.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&&na.test(this.peek());)this.pos++;this.pos===t&&this.fail(`unexpected character "${e}"`);let n={start:t,end:this.pos},r=this.decode(n);return r===null?{kind:`null`,span:n}:typeof r==`boolean`?{kind:`boolean`,span:n,value:r}:typeof r==`number`?{kind:`number`,span:n,value:r}:this.fail(`unexpected word "${this.text.slice(t,this.pos)}"`)}decode(e){try{return Xe.default.parse(this.text.slice(e.start,e.end))}catch(t){throw new $i(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=A(e);n=Math.max(n,t);let i=e.split(/\s+/);for(let e of i)e.length>0&&(r=Math.max(r,A(e)))}let i=Bt(e.maxWidth);return{minimum:Math.min(r,i),maximum:Math.min(n,i)}}_expandTabs(e){return e.includes(` `)?e.replace(/\t/g,` `.repeat(this._tabSize)):e}_buildSegments(e,t,n){let r=t=>Math.max(0,Math.min(t,e.length)),i=new Set([0,e.length]);for(let e of this._spans)i.add(r(e.start)),i.add(r(e.end));let a=[...i].sort((e,t)=>e-t),o=new Map(a.map((e,t)=>[e,t])),s=a.slice(0,-1).map(()=>t);for(let e of this._spans){let t=r(e.end),i=ri(n,e.style),c=o.get(r(e.start));for(let e=c;a[e]<t;e++)s[e]=s[e].add(i)}return s.map((t,n)=>new 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)-$r(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=Qr(e),i=r.split(` `);r.endsWith(` `)&&i.pop();let a=i.length-1,o=Array(a).fill(1),s=i.reduce((e,t)=>e+A(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+=A(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){let r=B.getLineLength(e);if(r-$r(e)<=t){yield*B.adjustLineLength(e,Math.min(r,t),void 0,!1);return}if(n===`ellipsis`&&t>0){yield*B.adjustLineLength(e,t-1,void 0,!1),yield new B(`…`);return}yield*B.adjustLineLength(e,t,void 0,!1)}},oi=class{items;joiner;constructor(e,t){this.items=e,this.joiner=t}*render(e){let t=this.items;if(t.length!==0){yield*this.joiner.join(null,t[0]).render(e);for(let n=0;n<t.length;n++){let r=t[n];yield*r.render(e);let i=n+1<t.length?t[n+1]:null;yield*this.joiner.join(r,i).render(e)}yield B.line()}}};const si={*render(e){}};var ci=class{_text;_style;constructor(e,t){this._text=e,this._style=t}*render(e){yield new B(this._text,this._style)}};function li(e){return{render:e}}function ui(e){return new z({color:e.bgcolor})}function di(e){return e!==void 0&&!e.isDefault?e:void 0}function fi(e,t){let{color:n,bgcolor:r}=e.drawnColors(t??M.TRUECOLOR);if(n===void 0||r===void 0)return!1;let i=n.fixedValue,a=r.fixedValue;return i!==void 0&&a!==void 0?L.fromRgba(i).deltaE(L.fromRgba(a))<.04:n.number===r.number}const pi=Object.freeze({glyph:``,divider:``});var mi=class{_glyph;_divider;constructor(e=pi){this._glyph=e.glyph,this._divider=e.divider}join(e,t){let n=this._glyph,r=this._divider;return li(function*(i){let a=e?.edgeStyle(`right`,i),o=di(a?.bgcolor);if(o===void 0)return;let s=di(t?.edgeStyle(`left`,i).bgcolor),c=new z({bgcolor:o}).drawnColors().bgcolor,l=new z({color:c,bgcolor:s});yield fi(l,i.colorSystem)?new B(r,new z({color:a?.color,bgcolor:o})):new B(n,l)})}},hi=class{_left;_right;_separator;constructor(e){this._left=e?.left??``,this._right=e?.right??``,this._separator=e?.separator??` `}*_emit(e,t,n){if(!(e===null&&t===null)){if(e===null){yield new B(this._left,ui(t.edgeStyle(`left`,n)));return}if(t===null){yield new B(this._right,ui(e.edgeStyle(`right`,n)));return}yield new B(this._right,ui(e.edgeStyle(`right`,n))),this._separator.length>0&&(yield new B(this._separator)),yield new B(this._left,ui(t.edgeStyle(`left`,n)))}}join(e,t){return li(n=>this._emit(e,t,n))}},gi=class{_separator;_style;constructor(e){this._separator=e?.separator??` | `,this._style=e?.style??z.parse(`dim`)}join(e,t){return e===null||t===null?si:new ci(this._separator,this._style)}};function _i(e,t){if(e.isControl||e.text.length===0)return;let n=e.style;return!n||n.isNull||t===null?{text:e.text,sgrCodes:``,link:void 0}:{text:e.text,sgrCodes:n.toSgrCodes(t),link:n.link}}function vi(e,t){let n=[];for(let r of e){let e=_i(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(xr(e));for(let e=a;e<i;e++)r.push(n[e].text);r.push(Sr)}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 yi(e,t){let n=t?.width??80,r=t?.colorSystem,i={};t?.env!==void 0&&(i.env=t.env),t?.isTTY!==void 0&&(i.isTTY=t.isTTY);let a=t?.noColor?null:r===void 0?M.TRUECOLOR:typeof r==`string`?rn(r,i):r,o={maxWidth:n,isTerminal:!1,encoding:`utf-8`,asciiOnly:!1,colorSystem:a};return vi(e.render(o),a)}function bi(e,t){let n=[...e.render(t)],r=0;for(let e of n)r+=e.cellLength;return{segments:n,width:r}}const xi={segments:[],width:0},Si={left:()=>0,justify:()=>0,center:e=>Math.floor(e/2),right:e=>e};function Ci(e,t){return Si[e](t)}function wi(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 Ti=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=>bi(t,e)),o=n=>i?bi(i.join(null,t[n]),e):xi,s=n=>i?bi(i.join(t[n],null),e):xi,c=(n,r)=>i?bi(i.join(t[n],t[r]),e):xi,l=[],u=null,d=r>0?{segments:[new B(` `.repeat(r))],width:r}:xi;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=Ci(p,i),o=wi(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=bi(t[i],e).width,o=this.joiner?bi(this.joiner.join(null,t[i]),e).width:0,s=this.joiner?bi(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+=bi(this.joiner.join(t[i-1],t[i]),e).width))}return this.joiner&&(r+=bi(this.joiner.join(null,t[0]),e).width,r+=bi(this.joiner.join(t[t.length-1],null),e).width),{minimum:n,maximum:r}}};const Ei={dark:`textual-dark`,light:`textual-light`};function Di(e){return Ei[e]??e}const Oi=`textual-dark`;function ki(e,t,n,r,i){let a=t===null?null:i(t);return e??a??n??r}function Ai(){return Object.keys(Ei)}function ji(){return[...nr(),...Ai()]}function Mi(e,t,n,r,i){let a=e=>Object.prototype.hasOwnProperty.call(i,e)?e:null;return ki(e===void 0?null:a(e),t,a(n??r),r,a)}const H=[`look`,`palette`];function Ni(e){return e!==void 0&&e.includes(`{{`)}function Pi(e,t,n,r,i){let a=Ni(n)?{kind:`expression`,source:n}:i(n??r.name);return ki(e===void 0?null:i(e),t,a,r,i)}function Fi(e,t,n){return e.kind===`decided`?e:n(t())}const Ii=`none`;function Li(e,t){let n=t[e];return n===void 0?null:{kind:`decided`,name:e,value:n}}function Ri(e,t){return Li(e,t)??Li(`none`,t)??{kind:`decided`,name:`none`,value:En}}function zi(e,t,n,r){return Pi(e,t,n,Ri(Ii,r),e=>Li(e,r))}const Bi=[`powerline`,`capsule`,`plain`];function Vi(e){return Bi.includes(e)}function Hi(e,t,n){return ki(e,t,n,`powerline`,e=>Vi(e)?e:null)}const Ui=[`unicode`,`ascii`],Wi=`unicode`;function Gi(e){return Ui.includes(e)}function Ki(e,t,n){return ki(e,t,n,Wi,e=>Gi(e)?e:null)}const U=[`truecolor`,`256`,`ansi`,`none`],qi=`truecolor`;function Ji(e){return U.includes(e)}function Yi(e,t,n){return ki(e,t,n,qi,e=>Ji(e)?e:null)}function Xi(e){return rn(e)??M.DEFAULT}const Zi=`true`,Qi=`false`,$i=[Zi,Qi],ea={min:0,max:16};function ta(e){return e===`true`?!0:e===`false`?!1:null}function na(e){if(!/^\d+$/.test(e))return null;let t=Number(e);return t>=ea.min&&t<=ea.max?t:null}function ra(e,t,n){return ki(e,t,n,!0,ta)}function ia(e,t,n){return ki(e,t,n,1,na)}var aa=class extends Error{constructor(e,t){super(`${e} (at offset ${t})`),this.reason=e,this.offset=t,this.name=`Json5EditError`}};const oa=/[A-Za-z_$\p{L}]/u,sa=/[A-Za-z0-9_$\u200C\u200D\p{L}\p{N}]/u,ca=/[A-Za-z0-9_$.+\-\p{L}\p{N}]/u,la=/[\t\n\v\f\r \u00A0\uFEFF\u2028\u2029\p{Zs}]/u;var ua=class{pos=0;constructor(e){this.text=e}peek(){return this.text[this.pos]??``}fail(e){throw new aa(e,this.pos)}skipTrivia(){for(;;){let e=this.peek();if(e===``)return;if(la.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&&ca.test(this.peek());)this.pos++;this.pos===t&&this.fail(`unexpected character "${e}"`);let n={start:t,end:this.pos},r=this.decode(n);return r===null?{kind:`null`,span:n}:typeof r==`boolean`?{kind:`boolean`,span:n,value:r}:typeof r==`number`?{kind:`number`,span:n,value:r}:this.fail(`unexpected word "${this.text.slice(t,this.pos)}"`)}decode(e){try{return Xe.default.parse(this.text.slice(e.start,e.end))}catch(t){throw new aa(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(ea.test(e)||this.fail(`expected an object key`);this.pos<this.text.length&&ta.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 $i(`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 aa(e){let t=new ia(e),n=t.value();return t.skipTrivia(),t.pos!==e.length&&t.fail(`trailing content after the document`),n}function oa(e,t){return e.kind===`object`?e.entries.find(e=>e.key===t):void 0}function sa(e,t){let n=e;for(let e of t)n=n===void 0?void 0:oa(n,e)?.value;return n}function ca(e,t){return e.slice(t.span.start,t.span.end)}const la=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function ua(e){return la.test(e)?e:JSON.stringify(e)}const da={key:ua,trailingComma:`,`,parse:e=>Xe.default.parse(e)},fa={key:e=>JSON.stringify(e),trailingComma:``,parse:e=>JSON.parse(e)};function pa(e){if(Array.isArray(e))return e.length===0?`[]`:`[\n${e.map(e=>` ${ha(pa(e),` `,`
27
+ `&&this.fail(`unterminated string`)}}key(){let e=this.peek();if(e===`"`||e===`'`){let e=this.stringSpan();return{key:this.decode(e),span:e}}let t=this.pos;for(oa.test(e)||this.fail(`expected an object key`);this.pos<this.text.length&&sa.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 aa(`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 da(e){let t=new ua(e),n=t.value();return t.skipTrivia(),t.pos!==e.length&&t.fail(`trailing content after the document`),n}function fa(e,t){return e.kind===`object`?e.entries.find(e=>e.key===t):void 0}function pa(e,t){let n=e;for(let e of t)n=n===void 0?void 0:fa(n,e)?.value;return n}function ma(e,t){return e.slice(t.span.start,t.span.end)}const ha=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function ga(e){return ha.test(e)?e:JSON.stringify(e)}const _a={key:ga,trailingComma:`,`,parse:e=>Xe.default.parse(e)},va={key:e=>JSON.stringify(e),trailingComma:``,parse:e=>JSON.parse(e)};function ya(e){if(Array.isArray(e))return e.length===0?`[]`:`[\n${e.map(e=>` ${xa(ya(e),` `,`
28
28
  `)},`).join(`
29
- `)}\n]`;if(typeof e==`object`&&e){let t=Object.entries(e).filter(([,e])=>e!==void 0);return t.length===0?`{}`:`{\n${t.map(([e,t])=>` ${ua(e)}: ${ha(pa(t),` `,`
29
+ `)}\n]`;if(typeof e==`object`&&e){let t=Object.entries(e).filter(([,e])=>e!==void 0);return t.length===0?`{}`:`{\n${t.map(([e,t])=>` ${ga(e)}: ${xa(ya(t),` `,`
30
30
  `)},`).join(`
31
- `)}\n}`}return JSON.stringify(e)}function ma(e){return e.includes(`\r
31
+ `)}\n}`}return JSON.stringify(e)}function ba(e){return e.includes(`\r
32
32
  `)?`\r
33
33
  `:`
34
- `}function ha(e,t,n){return e.split(`
35
- `).join(`${n}${t}`)}function ga(e,t,n){let[r,...i]=e,a=i.length===0?t:`{\n ${ha(ga(i,t,n),` `,`
36
- `)}${n.trailingComma}\n}`;return`${n.key(r)}: ${a}`}function _a(e,t,n,r){return e.slice(0,t)+r+e.slice(n)}function va(e,t){return e.lastIndexOf(`
37
- `,t-1)+1}function ya(e){return/^[ \t]*$/.test(e)}function ba(e,t){let n=va(e,t);return/^[ \t]*/.exec(e.slice(n))[0]}function xa(e,t){return ya(e.slice(va(e,t),t))}const Sa=/(?:\/\/[^\n]*?)?(\r\n|\n|$)/y;function Ca(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++;Sa.lastIndex=n;let i=Sa.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 wa(e,t){let{commaEnd:n,line:r}=Ca(e,t.end);if(xa(e,t.start)&&r!==null)return _a(e,va(e,t.start),r.next,``);if(n!==-1){let r=n;for(;r<e.length&&e[r]===` `;)r++;return _a(e,t.start,r,``)}let i=t.start;for(;i>0&&(e[i-1]===` `||e[i-1]===` `);)i--;return e[i-1]===`,`?_a(e,i-1,t.end,``):_a(e,t.start,t.end,``)}function Ta(e,t,n,r,i){let a=n.commaEnd!==-1,o=a?e:_a(e,t.end,t.end,`,`),s=n.line.at+ +!a,c=ma(e);return _a(o,s,s,`${c}${i}${ha(r,i,c)}${a?`,`:``}`)}function Ea(e,t,n,r){let i=t.kind===`object`?t.entries:t.elements,a=i[i.length-1],o=ba(e,t.span.start);if(a===void 0){let i=o+` `,a=ma(e);return _a(e,t.span.start+1,t.span.end-1,`${a}${i}${ha(n,i,a)}${r.trailingComma}${a}${o}`)}let{commaEnd:s,line:c}=Ca(e,a.span.end);if(xa(e,a.span.start)&&c!==null){let t=e.slice(va(e,a.span.start),a.span.start);return Ta(e,a.span,{commaEnd:s,line:c},n,t)}let l=s===-1?a.span.end:s;return _a(e,l,l,`${s===-1?`, `:` `}${n}${s===-1?``:`,`}`)}function Da(e,t,n,r){if(t.length===0)throw new $i(`setValue needs a non-empty path`,0);if(/^\s*$/.test(e)){let i=ma(e);return`{${i} ${ha(ga(t,n,r),` `,i)}${r.trailingComma}${i}}${i}`}let i=aa(e);for(let a=0;a<t.length;a++){if(i.kind!==`object`)throw new $i(`cannot set ${t.join(`.`)}: ${t.slice(0,a).join(`.`)||`the document`} is not an object`,i.span.start);let o=oa(i,t[a]);if(o===void 0)return Ea(e,i,ga(t.slice(a),n,r),r);if(a===t.length-1){let t=ba(e,o.keySpan.start);return _a(e,o.value.span.start,o.value.span.end,ha(n,t,ma(e)))}i=o.value}throw new $i(`unreachable: path exhausted`,0)}function Oa(e,t){if(t.length===0)throw new $i(`deleteValue needs a non-empty path`,0);if(/^\s*$/.test(e))return e;let n=t.slice(0,-1),r=sa(aa(e),n),i=r===void 0?void 0:oa(r,t[t.length-1]);if(i===void 0||r?.kind!==`object`)return e;let a=wa(e,i.span);return n.length>0&&r.entries.length===1?Oa(a,n):a}const ka=[`h`,`v`,`children`];function Aa(e){if(e.kind===`string`)return e.value;if(e.kind!==`object`)return;let t=oa(e,`seg`)?.value;if(t?.kind===`string`)return t.value;let n=oa(e,`kind`)?.value,r=oa(e,`name`)?.value;return n?.kind===`string`&&n.value===`segment`&&r?.kind===`string`?r.value:void 0}function ja(e){return e.kind===`object`?ka.map(t=>oa(e,t)?.value).filter(e=>e?.kind===`array`):[]}function Ma(e){let t=oa(e,`rows`)?.value;return t?.kind===`object`?t.entries:null}function Na(e){if(e.kind!==`object`)return!0;let t=Ma(e);return t===null||t.length>0||e.entries.some(e=>e.key!==`rows`)}function*Pa(e,t){yield{node:e,bareAt:t};for(let t of ja(e))for(let e of t.elements)yield*Pa(e,null);for(let n of Ma(e)??[])yield*Pa(n.value,t===null?null:[...t,`rows`,n.key])}function Fa(e,t){for(let{node:n}of Pa(e,null))if(Aa(n)===t)return!0;return!1}function Ia(e,t,n){let r=sa(aa(e),t);if(r===void 0)return null;for(let{node:i,bareAt:a}of Pa(r,t))if(Aa(i)===n)return a===null?{text:e,ref:i}:Ia(Da(e,a,`{ h: [${ca(e,i)}] }`,da),t,n);return null}function La(e,t,n){let r=Ia(e,t,n);return r===null?null:wa(r.text,r.ref.span)}function Ra(e,t,n,r,i){let a=Ia(e,t,r);if(a===null)return null;let{text:o,ref:s}=a,c=JSON.stringify(n),{commaEnd:l,line:u}=Ca(o,s.span.end);if(xa(o,s.span.start)&&u!==null){let e=o.slice(va(o,s.span.start),s.span.start);return i===`after`?Ta(o,s.span,{commaEnd:l,line:u},c,e):_a(o,s.span.start,s.span.start,`${c},${ma(o)}${e}`)}let d=ca(o,s),f=i===`before`?`${c}, ${d}`:`${d}, ${c}`;return _a(o,s.span.start,s.span.end,f)}var za=class extends Error{file;issues;warnings;constructor(e,t,n=[]){super(Ua(e,t)),this.name=`ConfigError`,this.file=e,this.issues=t,this.warnings=n}};function W(e,t){let n=0,r;for(let i of t){if(i===``||/^\d+$/.test(i))continue;let t=Ba(e,n,i);if(t===-1)return r===void 0?void 0:Va(e,r);n=t,r=t}return r===void 0?void 0:Va(e,r)}function Ba(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 Va(e,t){let n=1;for(let r=0;r<t&&r<e.length;r++)e.charCodeAt(r)===10&&n++;return n}function Ha(e,t){try{return aa(t),null}catch(n){if(!(n instanceof $i))throw n;return`${e}:${Va(t,n.offset)}: ${n.reason} — the settings menu cannot edit this file until it is fixed`}}function Ua(e,t){if(t.length===0)return`${e}: invalid config (no details)`;let n=[`Invalid config in ${e} (${t.length} issue${t.length===1?``:`s`}):`];for(let e of t){let t=[];e.line!==void 0&&t.push(`line ${e.line}${e.col===void 0?``:`:${e.col}`}`),e.path&&t.push(e.path);let r=t.length>0?`[${t.join(` • `)}] `:``;n.push(` ${r}${e.message}`)}return n.join(`
38
- `)}const Wa=[`vertical`,`horizontal`],Ga={vertical:`row`,horizontal:`cell`};function Ka(e,t){return e.opens===void 0?e:{...e,opens:{...e.opens,body:t(e.opens.body)}}}function*qa(e){yield e;for(let t of Ja(e))yield*qa(t)}function Ja(e){return e.kind===`container`?e.children:e.opens===void 0?[]:[e.opens.body]}function Ya(e){return e===void 0||`text`in e?`text`:`regex`in e?`regex`:`json`}const Xa=[`ttl`,`watch_file`,`depends_on`,`key`,`never`];function Za(e){return e.kind!==`literal`&&e.kind!==`input`&&e.kind!==`env`&&e.kind!==`state`}const Qa=[`branch`,`sha`,`dirty`,`ahead`,`behind`,`stash`],$a=[`file`,`shell`,`git`],eo=[`left`,`center`,`right`],to=[`right`,`left`,`middle`];function no(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 ${co(i)}`,line:W(e.source,[...t.split(`.`),r])}),null)}function ro(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 ${co(i)}`,line:W(e.source,[...t.split(`.`),`default`])});return}return i}}function io(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 ${co(i)}`,line:W(e.source,[...t.split(`.`),r])});return}return i}}function ao(e,t,n){let r=io(e,t,n,`palette`);if(r!==void 0){if(!e.allowedPalettes.has(r)){e.issues.push({path:`${t}.palette`,message:`Unknown palette "${r}". Expected one of: ${[...e.allowedPalettes].sort().join(`, `)}`,line:W(e.source,[...t.split(`.`),`palette`])});return}return r}}function oo(e,t,n,r,i){let a=n[r];if(a!==void 0){if(typeof a!=`string`||!i.includes(a)){e.issues.push({path:`${t}.${r}`,message:`${t}.${r} must be one of: ${i.join(`, `)}; got ${G(a)}`,line:W(e.source,[...t.split(`.`),r])});return}return a}}function so(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function co(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 lo(e,t,n,r){return so(r)?(po(e,n,r,t.noun,new Set(Object.keys(t.fields))),uo(e,t.fields,n,r)):(e.issues.push({path:n,message:`${n} must be an object, got ${co(r)}`,line:W(e.source,n.split(`.`))}),null)}function uo(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 fo=new Set;function po(e,t,n,r,i,a=fo){for(let o of Object.keys(n))!i.has(o)&&!a.has(`${t}.${o}`)&&e.issues.push({path:`${t}.${o}`,message:`Unknown ${r} "${o}". Expected one of: ${[...i].join(`, `)}`,line:W(e.source,[...t.split(`.`),o])})}function mo(e,t,n){return e.issues.push({path:t,message:n,line:W(e.source,t.split(`.`))}),null}function ho(e,t,n,r){if(!so(r))return e.issues.push({path:n,message:`${t.noun} must be an object, got ${co(r)}`,line:W(e.source,n.split(`.`))}),null;let i=t.arms,a=Object.keys(i),o=Object.keys(r).filter(e=>e in i),s=Object.keys(r).filter(e=>!(e in i));for(let r of s)e.issues.push({path:`${n}.${r}`,message:`Unknown ${t.noun} key "${r}". Expected exactly one of: ${a.join(`, `)}`,line:W(e.source,[...n.split(`.`),r])});if(o.length===0)return e.issues.push({path:n,message:`${t.noun} must declare exactly one of: ${a.join(`, `)}`,line:W(e.source,n.split(`.`))}),null;if(o.length>1)return e.issues.push({path:n,message:`${t.noun} must declare exactly one of: ${a.join(`, `)} (found: ${o.join(`, `)})`,line:W(e.source,n.split(`.`))}),null;let c=o[0];return i[c].parse(e,`${n}.${c}`,r[c])}function go(e,t,n,r){if(!so(r))return e.issues.push({path:n,message:`${n} must be an object, got ${co(r)}`,line:W(e.source,n.split(`.`))}),null;let i=r[t.tag];if(typeof i!=`string`)return e.issues.push({path:`${n}.${t.tag}`,message:`${n}.${t.tag} must be a string, got ${co(i)}`,line:W(e.source,n.split(`.`))}),null;let a=t.arms;if(!(i in a))return e.issues.push({path:`${n}.${t.tag}`,message:`Unknown ${t.noun} "${i}". Expected one of: ${Object.keys(a).join(`, `)}`,line:W(e.source,[...n.split(`.`),t.tag])}),null;let o=a[i],s=e.issues.length,c=o.parse(e,n,r),l=new Set(e.issues.slice(s).map(e=>e.path));return po(e,n,r,`${i} ${t.memberNoun} key`,o.keys,l),c}function _o(e,t,n){return{json:Oo(Eo(n),e,t),keys:new Set([e,...Object.keys(n)])}}function vo(e){return(...t)=>e()(...t)}function yo(e,...t){return(n,r,i)=>{let a=e(n,r,i);if(a===null)return null;for(let e of t){if(e.ok(a))continue;let{field:t,message:i}=e.issue(a),o=t===``?r:`${r}.${t}`;return n.issues.push({path:o,message:i,line:W(n.source,o.split(`.`))}),null}return a}}function K(){return{required:!1,json:{type:`string`},parse:(e,t,n,r)=>io(e,t,r,n)}}function bo(){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 ${co(i)}`,line:W(e.source,[n])});return}return i}}}}function xo(e){let{min:t,max:n}=e;return{required:!1,json:{type:`integer`,minimum:t,maximum:n},parse:(e,r,i,a)=>{let o=a[i];if(o!==void 0){if(typeof o!=`number`||!Number.isInteger(o)||o<t||o>n){e.issues.push({path:`${r}.${i}`,message:`${i} must be an integer between ${t} and ${n}, got ${G(o)}`,line:W(e.source,[i])});return}return o}}}}function So(e={}){let{min:t}=e;return{required:!1,json:{type:`number`,...t!==void 0&&{minimum:t}},parse:(e,n,r,i)=>{let a=i[r];if(a!==void 0){if(typeof a!=`number`||!Number.isFinite(a)||t!==void 0&&a<t){let i=t===void 0?`a finite number`:`a finite number >= ${t}`;e.issues.push({path:`${n}.${r}`,message:`${r} must be ${i}, got ${G(a)}`,line:W(e.source,[r])});return}return a}}}}function Co(){return{required:!1,json:{type:`string`},parse:(e,t,n,r)=>ao(e,t,r)}}function wo(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>no(e,t,r,n)??void 0}}function To(e){return{required:!1,json:{enum:[...e]},parse:(t,n,r,i)=>oo(t,n,i,r,e)}}function Eo(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 Do(e){return Eo(e.fields)}function Oo(e,t,n){let r=e,i={[t]:{const:n},...r.properties},a=[t,...r.required??[]];return{...r,properties:i,required:a}}function ko(e){let t=e.arms;return{anyOf:Object.values(t).map(e=>e.json)}}function Ao(e){let t=e.arms;return{anyOf:Object.entries(t).map(([e,t])=>({type:`object`,properties:{[e]:t.json},required:[e],additionalProperties:!1}))}}const jo=/^[A-Za-z_][A-Za-z0-9_]*$/;function Mo(e){return`#${e+1}`}const No={rows:{}};function Po(e){return`rows`in e}function Fo(e){return Object.fromEntries(e.map((e,t)=>[Mo(t),e]))}function Io(e){if(e.kind===`container`&&e.direction===`vertical`){let{kind:t,direction:n,children:r,...i}=e;return{...i,rows:Fo(r)}}let{when:t,...n}=e;return{...t!==void 0&&{when:t},rows:Fo([n])}}function Lo(e){let{rows:t,...n}=e;return{kind:`container`,direction:`vertical`,children:Object.values(t),...n}}function Ro(e){return Po(e)?Lo(e):e}function zo(e,t){return Po(e)?{...t,...e,rows:{...t.rows,...e.rows}}:Io(e)}function Bo(e){if(!Po(e))return!0;let{rows:t,...n}=e;return Object.values(n).some(e=>e!==void 0)||Object.keys(t).length>0}function Vo(e,t){return{globals:{...t.globals,...e.globals??{}},variables:{...t.variables,...e.variables??{}},segments:Ho(t.segments,e.segments??{}),root:zo(e.root??No,t.root),actions:{...t.actions,...e.actions??{}},looks:{...t.looks,...e.looks??{}},presets:Ho(t.presets,e.presets??{}),editGlobals:{...t.editGlobals,...e.editGlobals??{}},helpers:{...t.helpers,...e.helpers??{}}}}function Ho(e,t){return{...e,...Object.fromEntries(Object.entries(t).map(([t,n])=>[t,{...e[t],...n}]))}}const Uo=`closed`,Wo=`🍫`;function Go(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 Ko(e,t,n,r){let i=Go(e,t.length,n);if(i!==void 0)throw Error(i);return t.length===1?t[0]:t[r]}function qo(e){return e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}function Jo(e,t,n,r,i){return{kind:`segment`,name:e,opens:{ref:t,body:n,placement:r},...i!==void 0&&{when:i}}}function Yo(e,...t){return`{{ and ${[e,...t].map(Xo).join(` `)} }}`}function Xo(e){return`(eq .${e.variable} "${qo(e.member)}")`}function Zo(e,t,n){return`{{ action "${e}" "${qo(t)}" "${qo(n)}" }}`}function Qo(e,t){return{kind:`state`,key:e,default:t}}function $o(e,t){return{set:e,cycle:[Uo,t]}}const es={required:!1,json:{enum:[...Wi]},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: ${Wi.join(`, `)}`,line:W(e.source,[...t.split(`.`),n])});return}return oo(e,t,r,n,Wi)}},ts={required:!1,json:{type:`string`},parse:(e,t,n,r)=>{let i=io(e,t,r,n);return Ni(i)?i:ao(e,t,r)}},ns=/^[^\r\n]*\S[^\r\n]*$/u,rs=RegExp(`^(?:❌|✕)[\\uFE0E\\uFE0F]?$`,`u`),is={required:!1,json:{type:`string`,pattern:ns.source,not:{pattern:rs.source}},parse:(e,t,n,r)=>{let i=io(e,t,r,n);if(i===void 0||ns.test(i)&&!rs.test(i))return i;e.issues.push({path:`${t}.${n}`,message:`${t}.${n}: must be one line of visible text other than a close glyph ("❌", "✕") — the settings menu needs a glyph to click`,line:W(e.source,[...t.split(`.`),n])})}},as={default_bg:K(),default_fg:K(),default_empty_value:K(),default_separator:K(),default_truncate_marker:K(),palette:ts,look:K(),preset:K(),style:To(Bi),autoWrap:bo(),padding:xo(Ji),charset:To(Ui),updateNotice:bo(),colorCompatibility:es,menuGlyph:is},os={noun:`globals key`,fields:as};function ss(e,t){return{required:!1,json:{not:{},description:`not allowed here — ${e}`},parse:(e,n,r,i)=>{i[r]!==void 0&&e.issues.push({path:`${n}.${r}`,message:t(`${n}.${r}`),line:W(e.source,[...n.split(`.`),r])})}}}function cs(e){return ss(`${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 ls(e){return ss(`${e} cannot change the settings menu glyph`,t=>`${t}: ${e} cannot change the settings menu glyph — one menu is shared by every preset. Set it in the top-level globals.menuGlyph instead.`)}const us={noun:`preset globals key`,fields:{...as,preset:cs(`a preset`),menuGlyph:ls(`a preset`)}},ds={noun:`editGlobals key`,fields:{...as,preset:cs(`the editGlobals fragment`),menuGlyph:ls(`the editGlobals fragment`)}};function fs(e,t,n){return n===void 0?{}:lo(e,os,t,n)??{}}function ps(e,t,n){return lo(e,us,t,n)??{}}function ms(){return Do(us)}function hs(e,t,n){return lo(e,ds,t,n)??{}}const gs=new Set(Object.keys(os.fields));function _s(e){return gs.has(e)}function vs(){return[...gs]}const ys={padding:1};function bs(e){let t=new Map;for(let[n,r]of Object.entries(ys)){let i=e[n];t.set(n,typeof i==`number`?i:r)}return t}function xs(e,t,n,r){return n.cache===void 0?($a.includes(r)&&e.issues.push({path:`${t}.cache`,message:`${r} variables must declare a cache policy (one of: ${Xa.join(`, `)})`,line:W(e.source,t.split(`.`))}),null):Es(e,`${t}.cache`,n.cache)}function Ss(e,t,n){if(n.cache!==void 0)return Es(e,`${t}.cache`,n.cache)??void 0}function Cs(e){return{required:!0,json:ks(),parse:(t,n,r,i)=>xs(t,n,i,e)??void 0}}function ws(){return{required:!1,json:ks(),parse:(e,t,n,r)=>Ss(e,t,r)}}const Ts={noun:`cache`,arms:{ttl:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`&&js(n)?{ttl:n}:mo(e,t,`cache.ttl must be a duration string like "5s", "100ms", "2m", "1h"; got ${G(n)}`)},watch_file:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`&&n!==``?{watch_file:n}:mo(e,t,`cache.watch_file must be a non-empty path string, got ${G(n)}`)},depends_on:{json:{type:`array`,items:{type:`string`}},parse:(e,t,n)=>Array.isArray(n)&&n.every(e=>typeof e==`string`)?{depends_on:n}:mo(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}:mo(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}:mo(e,t,`cache.never must be the literal boolean true, got ${G(n)}`)}}};function Es(e,t,n){return ho(e,Ts,t,n)}const Ds={noun:`time-variable cache`,arms:{ttl:Ts.arms.ttl}};function Os(){return{required:!1,json:Ao(Ds),parse:(e,t,n,r)=>r.cache===void 0?void 0:ho(e,Ds,`${t}.cache`,r.cache)??void 0}}function ks(){return Ao(Ts)}const As=/^(\d+(?:\.\d+)?)(ms|s|m|h)$/;function js(e){return As.test(e)}function Ms(e,t,n){if(n===void 0)return{};if(!so(n))return e.issues.push({path:t,message:`${t} must be an object, got ${co(n)}`,line:W(e.source,t.split(`.`))}),{};let r={};for(let[i,a]of Object.entries(n)){let n=go(e,ec,`${t}.${i}`,a);n!==null&&(r[i]=n)}return r}function Ns(){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 ${co(i)}`,line:W(e.source,t.split(`.`))});return}return i}}}function Ps(){return{required:!0,json:{enum:[...Qa]},parse:(e,t,n,r)=>{let i=r.field;if(typeof i!=`string`||!Qa.includes(i)){e.issues.push({path:`${t}.field`,message:`git field must be one of: ${Qa.join(`, `)}, got ${JSON.stringify(i)}`,line:W(e.source,[...t.split(`.`),`field`])});return}return i}}}function Fs(){return{required:!1,json:{type:[`string`,`number`,`boolean`]},parse:(e,t,n,r)=>{let i=r.type;return ro(e,t,r,i===`number`||i===`boolean`||i===`string`?i:`string`)}}}const Is={noun:`parse`,arms:{text:{json:{const:!0},parse:(e,t,n)=>n===!0?{text:!0}:mo(e,t,`parse.text must be the literal boolean true, got ${G(n)}`)},regex:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`?Ls(e,t,n):mo(e,t,`parse.regex must be a pattern string, got ${G(n)}`)},json:{json:{const:!0},parse:(e,t,n)=>n===!0?{json:!0}:mo(e,t,`parse.json must be the literal boolean true, got ${G(n)}`)}}};function Ls(e,t,n){let r;try{new RegExp(n),r=RegExp(`${n}|`).exec(``).length-1}catch(n){return mo(e,t,`parse.regex is not a valid regular expression: ${n.message}`)}return r>=1?{regex:n}:mo(e,t,`parse.regex must contain a capture group — its group 1 is the value; got ${JSON.stringify(n)}`)}function Rs(){return{required:!1,json:Ao(Is),parse:(e,t,n,r)=>(r.regex!==void 0&&e.issues.push({path:`${t}.regex`,message:`${t}.regex was retired; the regex is the parse step's regex arm now: parse: { regex: ${JSON.stringify(r.regex)} }`,line:W(e.source,[...t.split(`.`),`regex`])}),r.parse===void 0?void 0:ho(e,Is,`${t}.parse`,r.parse)??void 0)}}function zs(){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)=>so(r.parse)&&`json`in r.parse?Bs(e,t,r.default):io(e,t,r,`default`)}}function Bs(e,t,n){if(n!==void 0)return Vs(n)?n:mo(e,`${t}.default`,`${t}.default must be a JSON value (a json-parsed source's document), got ${G(n)}`)??void 0}function Vs(e){return e!==null&&Hs(e)}function Hs(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(Hs);let t=Object.getPrototypeOf(e);return(t===Object.prototype||t===null)&&Object.values(e).every(Hs)}default:return!1}}const Us={value:Ns(),default:K()},Ws={path:wo(),type:To([`string`,`number`,`boolean`]),default:Fs()},Gs={name:wo(),default:K()},Ks={path:wo(),readMode:To([`whole`,`first-line`]),parse:Rs(),cache:Cs(`file`),default:zs()},qs={command:wo(),parse:Rs(),cache:Cs(`shell`),default:zs()},Js={template:wo(),cache:ws(),default:K()},Ys={layout:wo(),cache:Os(),default:K()},Xs={field:Ps(),cache:Cs(`git`),default:K()},Zs={key:wo(),default:K()},Qs=`kind`;function $s(e,t){return{..._o(Qs,e,t),parse:(n,r,i)=>{let a=uo(n,t,r,i);return a===null?null:{kind:e,...a}}}}const ec={tag:Qs,noun:`source kind`,memberNoun:`variable`,arms:{literal:$s(`literal`,Us),input:$s(`input`,Ws),env:$s(`env`,Gs),file:$s(`file`,Ks),shell:$s(`shell`,qs),template:$s(`template`,Js),time:$s(`time`,Ys),git:$s(`git`,Xs),state:$s(`state`,Zs)}};function tc(){return ko(ec)}function nc(){return{type:`object`,additionalProperties:tc()}}function rc(e){return e.replace(/[^A-Za-z0-9]+/g,`_`)}const ic=`groups.`,ac=`menus.`,oc=`edit.`,sc=`settings.`,cc=[ic,ac,oc,sc];function lc(e){return cc.some(t=>e.startsWith(t))}function uc(e){let t=rc(e);return cc.find(e=>t.startsWith(rc(e)))}function dc(e,t,n,r){for(let i of[`variables`,`actions`,`segments`])for(let a of Object.keys(t[i]??{}))a.startsWith(n)&&e.issues.push({path:`${i}.${a}`,message:`"${a}" is in the reserved "${n}" namespace (synthesized by ${r}) — rename it`,line:W(e.source,[`root`])})}function fc(e){return new Set(Object.keys(e.segments).filter(e=>!lc(e)))}function pc(e,t,n){if(t===void 0)return{};if(!so(t))return e.issues.push({path:`segments`,message:`segments must be an object, got ${co(t)}`,line:W(e.source,[`segments`])}),{};let r={};for(let[i,a]of Object.entries(t)){let t=lo(e,n.has(i)?yc:vc,`segments.${i}`,a);t!==null&&(r[i]=t)}return r}function mc(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>r[n]===void 0?mo(e,`${t}.${n}`,`${t} declares no template — only a segment the bundled default declares may omit it (inheriting the bundled template); a segment of your own needs its own`)??void 0:no(e,t,r,n)??void 0}}function hc(){return{required:!1,json:{anyOf:[{const:`auto`},{const:`fill`},{type:`integer`,minimum:1}]},parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0){if(i===`auto`)return`auto`;if(i===`fill`)return`fill`;if(typeof i==`number`&&Number.isInteger(i)&&i>0)return i;e.issues.push({path:`${t}.${n}`,message:`width must be "auto", "fill", or a positive integer, got ${G(i)}`,line:W(e.source,[...t.split(`.`),n])})}}}}function gc(){return{required:!1,json:nc(),parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0)return Ms(e,`${t}.${n}`,i)}}}const _c={template:mc(),description:K(),width:hc(),justify:To(eo),truncate:To(to),bg:K(),fg:K(),when:K(),palette:Co(),vars:gc()},vc={noun:`segment key`,fields:_c},yc={noun:`segment key`,fields:{..._c,template:K()}},bc=[`primary`,`secondary`,`accent`],xc=[`primary`,`secondary`],Sc=`accent`,Cc=[0,.5,1],wc=xc.flatMap(e=>Cc.map(t=>({hue:e,tone:t}))),Tc=e=>{let t=0,n=.5;for(let r=e;r>0;r>>=1,n/=2)t+=n*(r&1);return t},Ec=[`van-der-corput`,`golden-angle`,`ends-interleaved`,`monotonic`,`uniform`],Dc=e=>typeof e==`string`&&Ec.includes(e),Oc={"van-der-corput":Tc,"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},kc=e=>Oc[e??`van-der-corput`];function Ac(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 jc=(e,t)=>Math.floor(e*t),Mc=(e,t)=>Math.round(e*t)%t;function Nc(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 Pc(e){let t=e.findIndex(e=>e.axis===`cell`),n=t===-1?e:e.slice(0,t);return{hue:Nc(xc,n.at(-1),jc),tone:Nc(Cc,e[n.length],Mc)}}function Fc(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 Ic(e,t){let n=Lc.get(e);n===void 0&&(n=new Map,Lc.set(e,n));let r=`${t.hue}|${t.tone}`,i=n.get(r);if(i!==void 0)return i;let a=L.fromRgba(Fc(e,t.hue)),o=L.fromRgba(Fc(e,`surface`)),s=(e,t)=>e.mixAxes(a,{l:t,c:.8,h:1,alpha:0}),c=s(o.mixAxes(L.fromRgba(Fc(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 Lc=new WeakMap,Rc=(e,t)=>Ic(e,Pc(t)),zc=2.2;function Bc(e,t,n){let r=Vc(e,t,n);if(`refused`in r)throw Error(r.refused);return r.state}function Vc(e,t,n){let r=Hc.get(e);r===void 0&&(r=new Map,Hc.set(e,r));let i=`${t}|${n}`,a=r.get(i);if(a!==void 0)return a;let o=Uc(e,t,n);return r.set(i,o),o}const Hc=new WeakMap;function Uc(e,t,n){let r=wc.map(t=>Yn(Ic(e,t),M.TRUECOLOR)),i=mn(Fc(e,`surface`),Fc(e,t),.92),a=Fc(e,`foreground`),o=r.reduce((e,t)=>qn(e,t,zc),a),s=[...Array.from({length:13},(e,t)=>mn(i,a,t/12)),o].find(e=>r.every(t=>Zt(Yn(e,M.TRUECOLOR),t)>=zc));if(s===void 0)return{refused:`palette "${e.name}": "${t}" cannot clear the ${zc} state floor even beyond foreground`};let c=Jn(s,n,(e,t)=>r.every(n=>Zt(e,t(n))>=zc));return c===void 0?{refused:`palette "${e.name}": "${t}" cannot clear the ${zc} state floor on the colours drawn at depth ${M[n]}`}:{state:c}}const Wc=4.5;function Gc(e,t,n){let r=Kc.get(e);r===void 0&&(r=new Map,Kc.set(e,r));let i=`${t.hex}|${n}`,a=r.get(i);if(a!==void 0)return a;let o=Kn(t),s=qn([`background`,`foreground`].map(t=>Fc(e,t)).reduce((e,t)=>Zt(o,t)<Zt(o,e)?t:e),t,Wc,n);return r.set(i,s),s}const Kc=new WeakMap,qc={base:.42,perDepth:.14,cap:.75},Jc={floor:.12,span:.8};function Yc(e,t){return bc[(bc.indexOf(e)+t)%bc.length]}const Xc={triggerPlane:.1,nestedPlane:.035,nestedTriggerPlane:.08};function Zc(e,t,n){let r=`${t.hue}|${t.depth}|${n}`,i=rl.get(e);i===void 0&&(i=new Map,rl.set(e,i));let a=i.get(r);if(a!==void 0)return a;let o=Bc(e,Yc(t.hue,t.depth),n),s=nl(e,t,o,n),c=Jn($c(e,t).plane,n,(e,t)=>s.every(([n,r])=>Qc(e,t(n))>=r));if(c===void 0)throw Error(`palette "${e.name}": the ${t.hue} band at depth ${t.depth} cannot keep its floors on the colours drawn at depth ${M[n]}`);let l={state:o,plane:c};return i.set(r,l),l}const Qc=(e,t)=>L.fromRgba(e).deltaE(L.fromRgba(t));function $c(e,t){let n=`${t.hue}|${t.depth}`,r=el.get(e);r===void 0&&(r=new Map,el.set(e,r));let i=r.get(n);if(i!==void 0)return i;let a=tl(e,t);return r.set(n,a),a}const el=new WeakMap;function tl(e,t){let n=Bc(e,Yc(t.hue,t.depth),M.TRUECOLOR),r=Math.min(qc.cap,qc.base+qc.perDepth*t.depth);return{state:n,plane:mn(n,Fc(e,`background`),r)}}function nl(e,t,n,r){let{hue:i,depth:a}=t,o=t=>$c(e,{hue:i,depth:t}).state,s=t=>$c(e,{hue:i,depth:t}).plane,c=e=>Yn(e,M.TRUECOLOR),l=s(a),u=(e,t)=>Qc(c(l),c(t))>=e?e:0,d=Yc(i,a+1),f=Vc(e,d,r),p=Vc(e,d,M.TRUECOLOR);return[[n,u(Xc.triggerPlane,o(a))],...`state`in f&&`state`in p?[[f.state,u(Xc.nestedTriggerPlane,p.state)]]:[],...a>0?[[Zc(e,{hue:i,depth:a-1},r).plane,u(Xc.nestedPlane,s(a-1))]]:[]]}const rl=new WeakMap;function il(e,t,n,r){let i=Zc(e,t,r),a=$c(e,t),o=Jn(mn(a.plane,a.state,Jc.floor+Jc.span*Ac(n)),r,(e,t)=>e.hex!==t(i.plane).hex&&e.hex!==t(i.state).hex);if(o===void 0)throw Error(`palette "${e.name}": a ${t.hue} band item at depth ${t.depth} is drawn as its plane or its trigger at depth ${M[r]}, and nothing that depth draws is neither`);return o}const al={kind:`bar`,address:[]},ol=(e,t)=>({...e,address:[...e.address,t]}),sl=e=>({kind:`band`,band:e,address:[]});function cl(e,t,n){switch(t.kind){case`bar`:return{tint:Rc(e,t.address),disclosure:{hue:Sc,depth:0}};case`band`:return{tint:il(e,t.band,t.address,n),disclosure:{hue:t.band.hue,depth:t.band.depth+1}}}}const ll=`#/definitions/LayoutNode`,ul={kind:`container`,direction:`vertical`,children:[]};function dl(e){return{required:!0,json:{const:e},parse:()=>e}}function fl(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>{let i=r[n];return typeof i==`string`&&i.length>0?i:(e.issues.push({path:`${t}.${n}`,message:`a segment node must have a non-empty "name" (a segment name), got ${G(i)}`,line:W(e.source,[`root`])}),``)}}}function pl(){return{required:!0,json:{enum:[...Wa]},parse:(e,t,n,r)=>{let i=r[n];return typeof i==`string`&&Wa.includes(i)?i:(e.issues.push({path:`${t}.${n}`,message:`a container "direction" must be one of: ${Wa.join(`, `)} (got ${JSON.stringify(i)})`,line:W(e.source,[`root`])}),`vertical`)}}}function ml(e){return{required:!0,json:{type:`array`,items:{$ref:ll}},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 ${co(a)}`,line:W(t.source,[`root`])}),[])}}}const hl={noun:`layout-node key`,fields:{kind:dl(`segment`),name:fl(),when:K()}},gl=()=>To(Ec),_l={noun:`layout-node key`,fields:{kind:dl(`container`),direction:pl(),children:ml(vo(()=>Sl)),when:K(),distribution:gl()}};function vl(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>{let i=r[n];return typeof i==`string`&&i.length>0?i:(e.issues.push({path:`${t}.${n}`,message:`a "seg" node must have a non-empty segment name, got ${G(i)}`,line:W(e.source,[`root`])}),``)}}}const yl={noun:`layout-node key`,fields:{seg:vl(),when:K()}},bl={noun:`layout-node key`,fields:{h:ml(vo(()=>Sl)),when:K(),distribution:gl()}},xl={noun:`layout-node key`,fields:{v:ml(vo(()=>Sl)),when:K(),distribution:gl()}},Sl=(e,t,n)=>{if(typeof n==`string`)return n.length===0?(e.issues.push({path:t,message:`a bare-string layout node must be a non-empty segment name`,line:W(e.source,[`root`])}),ul):{kind:`segment`,name:n};if(!so(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 ${co(n)}`,line:W(e.source,[`root`])}),ul;if(n.kind===`container`)return lo(e,_l,t,n)??ul;if(n.kind===`segment`)return lo(e,hl,t,n)??ul;if(n.kind===`cells`)return e.issues.push({path:t,message:`kind: "cells" is no longer supported — use the h-arm spelling instead:
34
+ `}function xa(e,t,n){return e.split(`
35
+ `).join(`${n}${t}`)}function Sa(e,t,n){let[r,...i]=e,a=i.length===0?t:`{\n ${xa(Sa(i,t,n),` `,`
36
+ `)}${n.trailingComma}\n}`;return`${n.key(r)}: ${a}`}function Ca(e,t,n,r){return e.slice(0,t)+r+e.slice(n)}function wa(e,t){return e.lastIndexOf(`
37
+ `,t-1)+1}function Ta(e){return/^[ \t]*$/.test(e)}function Ea(e,t){let n=wa(e,t);return/^[ \t]*/.exec(e.slice(n))[0]}function Da(e,t){return Ta(e.slice(wa(e,t),t))}const Oa=/(?:\/\/[^\n]*?)?(\r\n|\n|$)/y;function ka(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++;Oa.lastIndex=n;let i=Oa.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 Aa(e,t){let{commaEnd:n,line:r}=ka(e,t.end);if(Da(e,t.start)&&r!==null)return Ca(e,wa(e,t.start),r.next,``);if(n!==-1){let r=n;for(;r<e.length&&e[r]===` `;)r++;return Ca(e,t.start,r,``)}let i=t.start;for(;i>0&&(e[i-1]===` `||e[i-1]===` `);)i--;return e[i-1]===`,`?Ca(e,i-1,t.end,``):Ca(e,t.start,t.end,``)}function ja(e,t,n,r,i){let a=n.commaEnd!==-1,o=a?e:Ca(e,t.end,t.end,`,`),s=n.line.at+ +!a,c=ba(e);return Ca(o,s,s,`${c}${i}${xa(r,i,c)}${a?`,`:``}`)}function Ma(e,t,n,r){let i=t.kind===`object`?t.entries:t.elements,a=i[i.length-1],o=Ea(e,t.span.start);if(a===void 0){let i=o+` `,a=ba(e);return Ca(e,t.span.start+1,t.span.end-1,`${a}${i}${xa(n,i,a)}${r.trailingComma}${a}${o}`)}let{commaEnd:s,line:c}=ka(e,a.span.end);if(Da(e,a.span.start)&&c!==null){let t=e.slice(wa(e,a.span.start),a.span.start);return ja(e,a.span,{commaEnd:s,line:c},n,t)}let l=s===-1?a.span.end:s;return Ca(e,l,l,`${s===-1?`, `:` `}${n}${s===-1?``:`,`}`)}function Na(e,t,n,r){if(t.length===0)throw new aa(`setValue needs a non-empty path`,0);if(/^\s*$/.test(e)){let i=ba(e);return`{${i} ${xa(Sa(t,n,r),` `,i)}${r.trailingComma}${i}}${i}`}let i=da(e);for(let a=0;a<t.length;a++){if(i.kind!==`object`)throw new aa(`cannot set ${t.join(`.`)}: ${t.slice(0,a).join(`.`)||`the document`} is not an object`,i.span.start);let o=fa(i,t[a]);if(o===void 0)return Ma(e,i,Sa(t.slice(a),n,r),r);if(a===t.length-1){let t=Ea(e,o.keySpan.start);return Ca(e,o.value.span.start,o.value.span.end,xa(n,t,ba(e)))}i=o.value}throw new aa(`unreachable: path exhausted`,0)}function Pa(e,t){if(t.length===0)throw new aa(`deleteValue needs a non-empty path`,0);if(/^\s*$/.test(e))return e;let n=t.slice(0,-1),r=pa(da(e),n),i=r===void 0?void 0:fa(r,t[t.length-1]);if(i===void 0||r?.kind!==`object`)return e;let a=Aa(e,i.span);return n.length>0&&r.entries.length===1?Pa(a,n):a}const Fa=[`h`,`v`,`children`];function Ia(e){if(e.kind===`string`)return e.value;if(e.kind!==`object`)return;let t=fa(e,`seg`)?.value;if(t?.kind===`string`)return t.value;let n=fa(e,`kind`)?.value,r=fa(e,`name`)?.value;return n?.kind===`string`&&n.value===`segment`&&r?.kind===`string`?r.value:void 0}function La(e){return e.kind===`object`?Fa.map(t=>fa(e,t)?.value).filter(e=>e?.kind===`array`):[]}function Ra(e){let t=fa(e,`rows`)?.value;return t?.kind===`object`?t.entries:null}function za(e){if(e.kind!==`object`)return!0;let t=Ra(e);return t===null||t.length>0||e.entries.some(e=>e.key!==`rows`)}function*Ba(e,t){yield{node:e,bareAt:t};for(let t of La(e))for(let e of t.elements)yield*Ba(e,null);for(let n of Ra(e)??[])yield*Ba(n.value,t===null?null:[...t,`rows`,n.key])}function Va(e,t){for(let{node:n}of Ba(e,null))if(Ia(n)===t)return!0;return!1}function Ha(e,t,n){let r=pa(da(e),t);if(r===void 0)return null;for(let{node:i,bareAt:a}of Ba(r,t))if(Ia(i)===n)return a===null?{text:e,ref:i}:Ha(Na(e,a,`{ h: [${ma(e,i)}] }`,_a),t,n);return null}function Ua(e,t,n){let r=Ha(e,t,n);return r===null?null:Aa(r.text,r.ref.span)}function Wa(e,t,n,r,i){let a=Ha(e,t,r);if(a===null)return null;let{text:o,ref:s}=a,c=JSON.stringify(n),{commaEnd:l,line:u}=ka(o,s.span.end);if(Da(o,s.span.start)&&u!==null){let e=o.slice(wa(o,s.span.start),s.span.start);return i===`after`?ja(o,s.span,{commaEnd:l,line:u},c,e):Ca(o,s.span.start,s.span.start,`${c},${ba(o)}${e}`)}let d=ma(o,s),f=i===`before`?`${c}, ${d}`:`${d}, ${c}`;return Ca(o,s.span.start,s.span.end,f)}var Ga=class extends Error{file;issues;warnings;constructor(e,t,n=[]){super(Ya(e,t)),this.name=`ConfigError`,this.file=e,this.issues=t,this.warnings=n}};function W(e,t){let n=0,r;for(let i of t){if(i===``||/^\d+$/.test(i))continue;let t=Ka(e,n,i);if(t===-1)return r===void 0?void 0:qa(e,r);n=t,r=t}return r===void 0?void 0:qa(e,r)}function Ka(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 qa(e,t){let n=1;for(let r=0;r<t&&r<e.length;r++)e.charCodeAt(r)===10&&n++;return n}function Ja(e,t){try{return da(t),null}catch(n){if(!(n instanceof aa))throw n;return`${e}:${qa(t,n.offset)}: ${n.reason} — the settings menu cannot edit this file until it is fixed`}}function Ya(e,t){if(t.length===0)return`${e}: invalid config (no details)`;let n=[`Invalid config in ${e} (${t.length} issue${t.length===1?``:`s`}):`];for(let e of t){let t=[];e.line!==void 0&&t.push(`line ${e.line}${e.col===void 0?``:`:${e.col}`}`),e.path&&t.push(e.path);let r=t.length>0?`[${t.join(` • `)}] `:``;n.push(` ${r}${e.message}`)}return n.join(`
38
+ `)}const Xa=[`vertical`,`horizontal`],Za={vertical:`row`,horizontal:`cell`};function Qa(e,t){return e.opens===void 0?e:{...e,opens:{...e.opens,body:t(e.opens.body)}}}function*$a(e){yield e;for(let t of eo(e))yield*$a(t)}function eo(e){return e.kind===`container`?e.children:e.opens===void 0?[]:[e.opens.body]}function to(e){return e===void 0||`text`in e?`text`:`regex`in e?`regex`:`json`}const no=[`ttl`,`watch_file`,`depends_on`,`key`,`never`];function ro(e){return e.kind!==`literal`&&e.kind!==`input`&&e.kind!==`env`&&e.kind!==`state`}const io=[`branch`,`sha`,`dirty`,`ahead`,`behind`,`stash`],ao=[`file`,`shell`,`git`],oo=[`left`,`center`,`right`],so=[`right`,`left`,`middle`];function co(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 ${ho(i)}`,line:W(e.source,[...t.split(`.`),r])}),null)}function lo(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 ${ho(i)}`,line:W(e.source,[...t.split(`.`),`default`])});return}return i}}function uo(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 ${ho(i)}`,line:W(e.source,[...t.split(`.`),r])});return}return i}}function fo(e,t,n){let r=uo(e,t,n,`palette`);if(r!==void 0){if(!e.allowedPalettes.has(r)){e.issues.push({path:`${t}.palette`,message:`Unknown palette "${r}". Expected one of: ${[...e.allowedPalettes].sort().join(`, `)}`,line:W(e.source,[...t.split(`.`),`palette`])});return}return r}}function po(e,t,n,r,i){let a=n[r];if(a!==void 0){if(typeof a!=`string`||!i.includes(a)){e.issues.push({path:`${t}.${r}`,message:`${t}.${r} must be one of: ${i.join(`, `)}; got ${G(a)}`,line:W(e.source,[...t.split(`.`),r])});return}return a}}function mo(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function ho(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 go(e,t,n,r){return mo(r)?(yo(e,n,r,t.noun,new Set(Object.keys(t.fields))),_o(e,t.fields,n,r)):(e.issues.push({path:n,message:`${n} must be an object, got ${ho(r)}`,line:W(e.source,n.split(`.`))}),null)}function _o(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 vo=new Set;function yo(e,t,n,r,i,a=vo){for(let o of Object.keys(n))!i.has(o)&&!a.has(`${t}.${o}`)&&e.issues.push({path:`${t}.${o}`,message:`Unknown ${r} "${o}". Expected one of: ${[...i].join(`, `)}`,line:W(e.source,[...t.split(`.`),o])})}function bo(e,t,n){return e.issues.push({path:t,message:n,line:W(e.source,t.split(`.`))}),null}function xo(e,t,n,r){if(!mo(r))return e.issues.push({path:n,message:`${t.noun} must be an object, got ${ho(r)}`,line:W(e.source,n.split(`.`))}),null;let i=t.arms,a=Object.keys(i),o=Object.keys(r).filter(e=>e in i),s=Object.keys(r).filter(e=>!(e in i));for(let r of s)e.issues.push({path:`${n}.${r}`,message:`Unknown ${t.noun} key "${r}". Expected exactly one of: ${a.join(`, `)}`,line:W(e.source,[...n.split(`.`),r])});if(o.length===0)return e.issues.push({path:n,message:`${t.noun} must declare exactly one of: ${a.join(`, `)}`,line:W(e.source,n.split(`.`))}),null;if(o.length>1)return e.issues.push({path:n,message:`${t.noun} must declare exactly one of: ${a.join(`, `)} (found: ${o.join(`, `)})`,line:W(e.source,n.split(`.`))}),null;let c=o[0];return i[c].parse(e,`${n}.${c}`,r[c])}function So(e,t,n,r){if(!mo(r))return e.issues.push({path:n,message:`${n} must be an object, got ${ho(r)}`,line:W(e.source,n.split(`.`))}),null;let i=r[t.tag];if(typeof i!=`string`)return e.issues.push({path:`${n}.${t.tag}`,message:`${n}.${t.tag} must be a string, got ${ho(i)}`,line:W(e.source,n.split(`.`))}),null;let a=t.arms;if(!(i in a))return e.issues.push({path:`${n}.${t.tag}`,message:`Unknown ${t.noun} "${i}". Expected one of: ${Object.keys(a).join(`, `)}`,line:W(e.source,[...n.split(`.`),t.tag])}),null;let o=a[i],s=e.issues.length,c=o.parse(e,n,r),l=new Set(e.issues.slice(s).map(e=>e.path));return yo(e,n,r,`${i} ${t.memberNoun} key`,o.keys,l),c}function Co(e,t,n){return{json:Po(Mo(n),e,t),keys:new Set([e,...Object.keys(n)])}}function wo(e){return(...t)=>e()(...t)}function To(e,...t){return(n,r,i)=>{let a=e(n,r,i);if(a===null)return null;for(let e of t){if(e.ok(a))continue;let{field:t,message:i}=e.issue(a),o=t===``?r:`${r}.${t}`;return n.issues.push({path:o,message:i,line:W(n.source,o.split(`.`))}),null}return a}}function K(){return{required:!1,json:{type:`string`},parse:(e,t,n,r)=>uo(e,t,r,n)}}function Eo(){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 ${ho(i)}`,line:W(e.source,[n])});return}return i}}}}function Do(e){let{min:t,max:n}=e;return{required:!1,json:{type:`integer`,minimum:t,maximum:n},parse:(e,r,i,a)=>{let o=a[i];if(o!==void 0){if(typeof o!=`number`||!Number.isInteger(o)||o<t||o>n){e.issues.push({path:`${r}.${i}`,message:`${i} must be an integer between ${t} and ${n}, got ${G(o)}`,line:W(e.source,[i])});return}return o}}}}function Oo(e={}){let{min:t}=e;return{required:!1,json:{type:`number`,...t!==void 0&&{minimum:t}},parse:(e,n,r,i)=>{let a=i[r];if(a!==void 0){if(typeof a!=`number`||!Number.isFinite(a)||t!==void 0&&a<t){let i=t===void 0?`a finite number`:`a finite number >= ${t}`;e.issues.push({path:`${n}.${r}`,message:`${r} must be ${i}, got ${G(a)}`,line:W(e.source,[r])});return}return a}}}}function ko(){return{required:!1,json:{type:`string`},parse:(e,t,n,r)=>fo(e,t,r)}}function Ao(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>co(e,t,r,n)??void 0}}function jo(e){return{required:!1,json:{enum:[...e]},parse:(t,n,r,i)=>po(t,n,i,r,e)}}function Mo(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 No(e){return Mo(e.fields)}function Po(e,t,n){let r=e,i={[t]:{const:n},...r.properties},a=[t,...r.required??[]];return{...r,properties:i,required:a}}function Fo(e){let t=e.arms;return{anyOf:Object.values(t).map(e=>e.json)}}function Io(e){let t=e.arms;return{anyOf:Object.entries(t).map(([e,t])=>({type:`object`,properties:{[e]:t.json},required:[e],additionalProperties:!1}))}}const Lo=/^[A-Za-z_][A-Za-z0-9_]*$/;function Ro(e){return`#${e+1}`}const zo={rows:{}};function Bo(e){return`rows`in e}function Vo(e){return Object.fromEntries(e.map((e,t)=>[Ro(t),e]))}function Ho(e){if(e.kind===`container`&&e.direction===`vertical`){let{kind:t,direction:n,children:r,...i}=e;return{...i,rows:Vo(r)}}let{when:t,...n}=e;return{...t!==void 0&&{when:t},rows:Vo([n])}}function Uo(e){let{rows:t,...n}=e;return{kind:`container`,direction:`vertical`,children:Object.values(t),...n}}function Wo(e){return Bo(e)?Uo(e):e}function Go(e,t){return Bo(e)?{...t,...e,rows:{...t.rows,...e.rows}}:Ho(e)}function Ko(e){if(!Bo(e))return!0;let{rows:t,...n}=e;return Object.values(n).some(e=>e!==void 0)||Object.keys(t).length>0}function qo(e,t){return{globals:{...t.globals,...e.globals??{}},variables:{...t.variables,...e.variables??{}},segments:Jo(t.segments,e.segments??{}),root:Go(e.root??zo,t.root),actions:{...t.actions,...e.actions??{}},looks:{...t.looks,...e.looks??{}},presets:Jo(t.presets,e.presets??{}),editGlobals:{...t.editGlobals,...e.editGlobals??{}},helpers:{...t.helpers,...e.helpers??{}}}}function Jo(e,t){return{...e,...Object.fromEntries(Object.entries(t).map(([t,n])=>[t,{...e[t],...n}]))}}const Yo=`closed`,Xo=`🍫`;function Zo(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 Qo(e,t,n,r){let i=Zo(e,t.length,n);if(i!==void 0)throw Error(i);return t.length===1?t[0]:t[r]}function $o(e){return e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}function es(e,t,n,r,i){return{kind:`segment`,name:e,opens:{ref:t,body:n,placement:r},...i!==void 0&&{when:i}}}function ts(e,...t){return`{{ and ${[e,...t].map(ns).join(` `)} }}`}function ns(e){return`(eq .${e.variable} "${$o(e.member)}")`}function rs(e,t,n){return`{{ action "${e}" "${$o(t)}" "${$o(n)}" }}`}function is(e,t){return{kind:`state`,key:e,default:t}}function as(e,t){return{set:e,cycle:[Yo,t]}}const os={required:!1,json:{enum:[...U]},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: ${U.join(`, `)}`,line:W(e.source,[...t.split(`.`),n])});return}return po(e,t,r,n,U)}},ss={required:!1,json:{type:`string`},parse:(e,t,n,r)=>{let i=uo(e,t,r,n);return Ni(i)?i:fo(e,t,r)}},cs=/^[^\r\n]*\S[^\r\n]*$/u,ls=RegExp(`^(?:❌|✕)[\\uFE0E\\uFE0F]?$`,`u`),us={required:!1,json:{type:`string`,pattern:cs.source,not:{pattern:ls.source}},parse:(e,t,n,r)=>{let i=uo(e,t,r,n);if(i===void 0||cs.test(i)&&!ls.test(i))return i;e.issues.push({path:`${t}.${n}`,message:`${t}.${n}: must be one line of visible text other than a close glyph ("❌", "✕") — the settings menu needs a glyph to click`,line:W(e.source,[...t.split(`.`),n])})}},ds={default_bg:K(),default_fg:K(),default_empty_value:K(),default_separator:K(),default_truncate_marker:K(),palette:ss,look:K(),preset:K(),style:jo(Bi),autoWrap:Eo(),padding:Do(ea),charset:jo(Ui),updateNotice:Eo(),colorCompatibility:os,menuGlyph:us},fs={noun:`globals key`,fields:ds};function ps(e,t){return{required:!1,json:{not:{},description:`not allowed here — ${e}`},parse:(e,n,r,i)=>{i[r]!==void 0&&e.issues.push({path:`${n}.${r}`,message:t(`${n}.${r}`),line:W(e.source,[...n.split(`.`),r])})}}}function ms(e){return ps(`${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 hs(e){return ps(`${e} cannot change the settings menu glyph`,t=>`${t}: ${e} cannot change the settings menu glyph — one menu is shared by every preset. Set it in the top-level globals.menuGlyph instead.`)}const gs={noun:`preset globals key`,fields:{...ds,preset:ms(`a preset`),menuGlyph:hs(`a preset`)}},_s={noun:`editGlobals key`,fields:{...ds,preset:ms(`the editGlobals fragment`),menuGlyph:hs(`the editGlobals fragment`)}};function vs(e,t,n){return n===void 0?{}:go(e,fs,t,n)??{}}function ys(e,t,n){return go(e,gs,t,n)??{}}function bs(){return No(gs)}function xs(e,t,n){return go(e,_s,t,n)??{}}const Ss=new Set(Object.keys(fs.fields));function Cs(e){return Ss.has(e)}function ws(){return[...Ss]}const Ts={padding:1};function Es(e){let t=new Map;for(let[n,r]of Object.entries(Ts)){let i=e[n];t.set(n,typeof i==`number`?i:r)}return t}function Ds(e,t,n,r){return n.cache===void 0?(ao.includes(r)&&e.issues.push({path:`${t}.cache`,message:`${r} variables must declare a cache policy (one of: ${no.join(`, `)})`,line:W(e.source,t.split(`.`))}),null):Ms(e,`${t}.cache`,n.cache)}function Os(e,t,n){if(n.cache!==void 0)return Ms(e,`${t}.cache`,n.cache)??void 0}function ks(e){return{required:!0,json:Fs(),parse:(t,n,r,i)=>Ds(t,n,i,e)??void 0}}function As(){return{required:!1,json:Fs(),parse:(e,t,n,r)=>Os(e,t,r)}}const js={noun:`cache`,arms:{ttl:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`&&Ls(n)?{ttl:n}:bo(e,t,`cache.ttl must be a duration string like "5s", "100ms", "2m", "1h"; got ${G(n)}`)},watch_file:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`&&n!==``?{watch_file:n}:bo(e,t,`cache.watch_file must be a non-empty path string, got ${G(n)}`)},depends_on:{json:{type:`array`,items:{type:`string`}},parse:(e,t,n)=>Array.isArray(n)&&n.every(e=>typeof e==`string`)?{depends_on:n}:bo(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}:bo(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}:bo(e,t,`cache.never must be the literal boolean true, got ${G(n)}`)}}};function Ms(e,t,n){return xo(e,js,t,n)}const Ns={noun:`time-variable cache`,arms:{ttl:js.arms.ttl}};function Ps(){return{required:!1,json:Io(Ns),parse:(e,t,n,r)=>r.cache===void 0?void 0:xo(e,Ns,`${t}.cache`,r.cache)??void 0}}function Fs(){return Io(js)}const Is=/^(\d+(?:\.\d+)?)(ms|s|m|h)$/;function Ls(e){return Is.test(e)}function Rs(e,t,n){if(n===void 0)return{};if(!mo(n))return e.issues.push({path:t,message:`${t} must be an object, got ${ho(n)}`,line:W(e.source,t.split(`.`))}),{};let r={};for(let[i,a]of Object.entries(n)){let n=So(e,oc,`${t}.${i}`,a);n!==null&&(r[i]=n)}return r}function zs(){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 ${ho(i)}`,line:W(e.source,t.split(`.`))});return}return i}}}function Bs(){return{required:!0,json:{enum:[...io]},parse:(e,t,n,r)=>{let i=r.field;if(typeof i!=`string`||!io.includes(i)){e.issues.push({path:`${t}.field`,message:`git field must be one of: ${io.join(`, `)}, got ${JSON.stringify(i)}`,line:W(e.source,[...t.split(`.`),`field`])});return}return i}}}function Vs(){return{required:!1,json:{type:[`string`,`number`,`boolean`]},parse:(e,t,n,r)=>{let i=r.type;return lo(e,t,r,i===`number`||i===`boolean`||i===`string`?i:`string`)}}}const Hs={noun:`parse`,arms:{text:{json:{const:!0},parse:(e,t,n)=>n===!0?{text:!0}:bo(e,t,`parse.text must be the literal boolean true, got ${G(n)}`)},regex:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`?Us(e,t,n):bo(e,t,`parse.regex must be a pattern string, got ${G(n)}`)},json:{json:{const:!0},parse:(e,t,n)=>n===!0?{json:!0}:bo(e,t,`parse.json must be the literal boolean true, got ${G(n)}`)}}};function Us(e,t,n){let r;try{new RegExp(n),r=RegExp(`${n}|`).exec(``).length-1}catch(n){return bo(e,t,`parse.regex is not a valid regular expression: ${n.message}`)}return r>=1?{regex:n}:bo(e,t,`parse.regex must contain a capture group — its group 1 is the value; got ${JSON.stringify(n)}`)}function Ws(){return{required:!1,json:Io(Hs),parse:(e,t,n,r)=>(r.regex!==void 0&&e.issues.push({path:`${t}.regex`,message:`${t}.regex was retired; the regex is the parse step's regex arm now: parse: { regex: ${JSON.stringify(r.regex)} }`,line:W(e.source,[...t.split(`.`),`regex`])}),r.parse===void 0?void 0:xo(e,Hs,`${t}.parse`,r.parse)??void 0)}}function Gs(){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)=>mo(r.parse)&&`json`in r.parse?Ks(e,t,r.default):uo(e,t,r,`default`)}}function Ks(e,t,n){if(n!==void 0)return qs(n)?n:bo(e,`${t}.default`,`${t}.default must be a JSON value (a json-parsed source's document), got ${G(n)}`)??void 0}function qs(e){return e!==null&&Js(e)}function Js(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(Js);let t=Object.getPrototypeOf(e);return(t===Object.prototype||t===null)&&Object.values(e).every(Js)}default:return!1}}const Ys={value:zs(),default:K()},Xs={path:Ao(),type:jo([`string`,`number`,`boolean`]),default:Vs()},Zs={name:Ao(),default:K()},Qs={path:Ao(),readMode:jo([`whole`,`first-line`]),parse:Ws(),cache:ks(`file`),default:Gs()},$s={command:Ao(),parse:Ws(),cache:ks(`shell`),default:Gs()},ec={template:Ao(),cache:As(),default:K()},tc={layout:Ao(),cache:Ps(),default:K()},nc={field:Bs(),cache:ks(`git`),default:K()},rc={key:Ao(),default:K()},ic=`kind`;function ac(e,t){return{...Co(ic,e,t),parse:(n,r,i)=>{let a=_o(n,t,r,i);return a===null?null:{kind:e,...a}}}}const oc={tag:ic,noun:`source kind`,memberNoun:`variable`,arms:{literal:ac(`literal`,Ys),input:ac(`input`,Xs),env:ac(`env`,Zs),file:ac(`file`,Qs),shell:ac(`shell`,$s),template:ac(`template`,ec),time:ac(`time`,tc),git:ac(`git`,nc),state:ac(`state`,rc)}};function sc(){return Fo(oc)}function cc(){return{type:`object`,additionalProperties:sc()}}function lc(e){return e.replace(/[^A-Za-z0-9]+/g,`_`)}const uc=`groups.`,dc=`menus.`,fc=`edit.`,pc=`settings.`,mc=[uc,dc,fc,pc];function hc(e){return mc.some(t=>e.startsWith(t))}function gc(e){let t=lc(e);return mc.find(e=>t.startsWith(lc(e)))}function _c(e,t,n,r){for(let i of[`variables`,`actions`,`segments`])for(let a of Object.keys(t[i]??{}))a.startsWith(n)&&e.issues.push({path:`${i}.${a}`,message:`"${a}" is in the reserved "${n}" namespace (synthesized by ${r}) — rename it`,line:W(e.source,[`root`])})}function vc(e){return new Set(Object.keys(e.segments).filter(e=>!hc(e)))}function yc(e,t,n){if(t===void 0)return{};if(!mo(t))return e.issues.push({path:`segments`,message:`segments must be an object, got ${ho(t)}`,line:W(e.source,[`segments`])}),{};let r={};for(let[i,a]of Object.entries(t)){let t=go(e,n.has(i)?Tc:wc,`segments.${i}`,a);t!==null&&(r[i]=t)}return r}function bc(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>r[n]===void 0?bo(e,`${t}.${n}`,`${t} declares no template — only a segment the bundled default declares may omit it (inheriting the bundled template); a segment of your own needs its own`)??void 0:co(e,t,r,n)??void 0}}function xc(){return{required:!1,json:{anyOf:[{const:`auto`},{const:`fill`},{type:`integer`,minimum:1}]},parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0){if(i===`auto`)return`auto`;if(i===`fill`)return`fill`;if(typeof i==`number`&&Number.isInteger(i)&&i>0)return i;e.issues.push({path:`${t}.${n}`,message:`width must be "auto", "fill", or a positive integer, got ${G(i)}`,line:W(e.source,[...t.split(`.`),n])})}}}}function Sc(){return{required:!1,json:cc(),parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0)return Rs(e,`${t}.${n}`,i)}}}const Cc={template:bc(),description:K(),width:xc(),justify:jo(oo),truncate:jo(so),bg:K(),fg:K(),when:K(),palette:ko(),vars:Sc()},wc={noun:`segment key`,fields:Cc},Tc={noun:`segment key`,fields:{...Cc,template:K()}},Ec=[`primary`,`secondary`,`accent`],Dc=[`primary`,`secondary`],Oc=`accent`,kc=[0,.5,1],Ac=Dc.flatMap(e=>kc.map(t=>({hue:e,tone:t}))),jc=e=>{let t=0,n=.5;for(let r=e;r>0;r>>=1,n/=2)t+=n*(r&1);return t},Mc=[`van-der-corput`,`golden-angle`,`ends-interleaved`,`monotonic`,`uniform`],Nc=e=>typeof e==`string`&&Mc.includes(e),Pc={"van-der-corput":jc,"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},Fc=e=>Pc[e??`van-der-corput`];function Ic(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 Lc=(e,t)=>Math.floor(e*t),Rc=(e,t)=>Math.round(e*t)%t;function zc(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 Bc(e){let t=e.findIndex(e=>e.axis===`cell`),n=t===-1?e:e.slice(0,t);return{hue:zc(Dc,n.at(-1),Lc),tone:zc(kc,e[n.length],Rc)}}function Vc(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 Hc(e,t){let n=Uc.get(e);n===void 0&&(n=new Map,Uc.set(e,n));let r=`${t.hue}|${t.tone}`,i=n.get(r);if(i!==void 0)return i;let a=L.fromRgba(Vc(e,t.hue)),o=L.fromRgba(Vc(e,`surface`)),s=(e,t)=>e.mixAxes(a,{l:t,c:.8,h:1,alpha:0}),c=s(o.mixAxes(L.fromRgba(Vc(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 Uc=new WeakMap,Wc=(e,t)=>Hc(e,Bc(t)),Gc=2.2;function Kc(e,t,n){let r=qc(e,t,n);if(`refused`in r)throw Error(r.refused);return r.state}function qc(e,t,n){let r=Jc.get(e);r===void 0&&(r=new Map,Jc.set(e,r));let i=`${t}|${n}`,a=r.get(i);if(a!==void 0)return a;let o=Yc(e,t,n);return r.set(i,o),o}const Jc=new WeakMap;function Yc(e,t,n){let r=Ac.map(t=>Yn(Hc(e,t),M.TRUECOLOR)),i=mn(Vc(e,`surface`),Vc(e,t),.92),a=Vc(e,`foreground`),o=r.reduce((e,t)=>qn(e,t,Gc),a),s=[...Array.from({length:13},(e,t)=>mn(i,a,t/12)),o].find(e=>r.every(t=>Zt(Yn(e,M.TRUECOLOR),t)>=Gc));if(s===void 0)return{refused:`palette "${e.name}": "${t}" cannot clear the ${Gc} state floor even beyond foreground`};let c=Jn(s,n,(e,t)=>r.every(n=>Zt(e,t(n))>=Gc));return c===void 0?{refused:`palette "${e.name}": "${t}" cannot clear the ${Gc} state floor on the colours drawn at depth ${M[n]}`}:{state:c}}const Xc=4.5;function Zc(e,t,n){let r=Qc.get(e);r===void 0&&(r=new Map,Qc.set(e,r));let i=`${t.hex}|${n}`,a=r.get(i);if(a!==void 0)return a;let o=Kn(t),s=qn([`background`,`foreground`].map(t=>Vc(e,t)).reduce((e,t)=>Zt(o,t)<Zt(o,e)?t:e),t,Xc,n);return r.set(i,s),s}const Qc=new WeakMap,$c={base:.42,perDepth:.14,cap:.75},el={floor:.12,span:.8};function tl(e,t){return Ec[(Ec.indexOf(e)+t)%Ec.length]}const nl={triggerPlane:.1,nestedPlane:.035,nestedTriggerPlane:.08};function rl(e,t,n){let r=`${t.hue}|${t.depth}|${n}`,i=ll.get(e);i===void 0&&(i=new Map,ll.set(e,i));let a=i.get(r);if(a!==void 0)return a;let o=Kc(e,tl(t.hue,t.depth),n),s=cl(e,t,o,n),c=Jn(al(e,t).plane,n,(e,t)=>s.every(([n,r])=>il(e,t(n))>=r));if(c===void 0)throw Error(`palette "${e.name}": the ${t.hue} band at depth ${t.depth} cannot keep its floors on the colours drawn at depth ${M[n]}`);let l={state:o,plane:c};return i.set(r,l),l}const il=(e,t)=>L.fromRgba(e).deltaE(L.fromRgba(t));function al(e,t){let n=`${t.hue}|${t.depth}`,r=ol.get(e);r===void 0&&(r=new Map,ol.set(e,r));let i=r.get(n);if(i!==void 0)return i;let a=sl(e,t);return r.set(n,a),a}const ol=new WeakMap;function sl(e,t){let n=Kc(e,tl(t.hue,t.depth),M.TRUECOLOR),r=Math.min($c.cap,$c.base+$c.perDepth*t.depth);return{state:n,plane:mn(n,Vc(e,`background`),r)}}function cl(e,t,n,r){let{hue:i,depth:a}=t,o=t=>al(e,{hue:i,depth:t}).state,s=t=>al(e,{hue:i,depth:t}).plane,c=e=>Yn(e,M.TRUECOLOR),l=s(a),u=(e,t)=>il(c(l),c(t))>=e?e:0,d=tl(i,a+1),f=qc(e,d,r),p=qc(e,d,M.TRUECOLOR);return[[n,u(nl.triggerPlane,o(a))],...`state`in f&&`state`in p?[[f.state,u(nl.nestedTriggerPlane,p.state)]]:[],...a>0?[[rl(e,{hue:i,depth:a-1},r).plane,u(nl.nestedPlane,s(a-1))]]:[]]}const ll=new WeakMap;function ul(e,t,n,r){let i=rl(e,t,r),a=al(e,t),o=Jn(mn(a.plane,a.state,el.floor+el.span*Ic(n)),r,(e,t)=>e.hex!==t(i.plane).hex&&e.hex!==t(i.state).hex);if(o===void 0)throw Error(`palette "${e.name}": a ${t.hue} band item at depth ${t.depth} is drawn as its plane or its trigger at depth ${M[r]}, and nothing that depth draws is neither`);return o}const dl={kind:`bar`,address:[]},fl=(e,t)=>({...e,address:[...e.address,t]}),pl=e=>({kind:`band`,band:e,address:[]});function ml(e,t,n){switch(t.kind){case`bar`:return{tint:Wc(e,t.address),disclosure:{hue:Oc,depth:0}};case`band`:return{tint:ul(e,t.band,t.address,n),disclosure:{hue:t.band.hue,depth:t.band.depth+1}}}}const hl=`#/definitions/LayoutNode`,gl={kind:`container`,direction:`vertical`,children:[]};function _l(e){return{required:!0,json:{const:e},parse:()=>e}}function vl(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>{let i=r[n];return typeof i==`string`&&i.length>0?i:(e.issues.push({path:`${t}.${n}`,message:`a segment node must have a non-empty "name" (a segment name), got ${G(i)}`,line:W(e.source,[`root`])}),``)}}}function yl(){return{required:!0,json:{enum:[...Xa]},parse:(e,t,n,r)=>{let i=r[n];return typeof i==`string`&&Xa.includes(i)?i:(e.issues.push({path:`${t}.${n}`,message:`a container "direction" must be one of: ${Xa.join(`, `)} (got ${JSON.stringify(i)})`,line:W(e.source,[`root`])}),`vertical`)}}}function bl(e){return{required:!0,json:{type:`array`,items:{$ref:hl}},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 ${ho(a)}`,line:W(t.source,[`root`])}),[])}}}const xl={noun:`layout-node key`,fields:{kind:_l(`segment`),name:vl(),when:K()}},Sl=()=>jo(Mc),Cl={noun:`layout-node key`,fields:{kind:_l(`container`),direction:yl(),children:bl(wo(()=>Ol)),when:K(),distribution:Sl()}};function wl(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>{let i=r[n];return typeof i==`string`&&i.length>0?i:(e.issues.push({path:`${t}.${n}`,message:`a "seg" node must have a non-empty segment name, got ${G(i)}`,line:W(e.source,[`root`])}),``)}}}const Tl={noun:`layout-node key`,fields:{seg:wl(),when:K()}},El={noun:`layout-node key`,fields:{h:bl(wo(()=>Ol)),when:K(),distribution:Sl()}},Dl={noun:`layout-node key`,fields:{v:bl(wo(()=>Ol)),when:K(),distribution:Sl()}},Ol=(e,t,n)=>{if(typeof n==`string`)return n.length===0?(e.issues.push({path:t,message:`a bare-string layout node must be a non-empty segment name`,line:W(e.source,[`root`])}),gl):{kind:`segment`,name:n};if(!mo(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 ${ho(n)}`,line:W(e.source,[`root`])}),gl;if(n.kind===`container`)return go(e,Cl,t,n)??gl;if(n.kind===`segment`)return go(e,xl,t,n)??gl;if(n.kind===`cells`)return e.issues.push({path:t,message:`kind: "cells" is no longer supported — use the h-arm spelling instead:
39
39
  Old: { kind: "cells", segments: ["seg1", "seg2"] }
40
- New: { h: ["seg1", "seg2"] }`,line:W(e.source,[`root`])}),ul;if(n.kind===`group`){let r=lo(e,kl,t,n);return r===null?ul:(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}),jl(r))}let r=`h`in n,i=`v`in n,a=`seg`in n;if(+!!r+ +!!i+ +!!a>1){let r=[`seg`,`h`,`v`].filter(e=>e in n);return e.issues.push({path:t,message:`a layout node may have exactly one of "seg", "h", or "v" — got ${r.map(e=>`"${e}"`).join(` and `)} together`,line:W(e.source,[`root`])}),ul}if(a){let r=lo(e,yl,t,n);return r===null?ul:{kind:`segment`,name:r.seg,...r.when!==void 0&&{when:r.when}}}if(r){let r=lo(e,bl,t,n);return r===null?ul:{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=lo(e,xl,t,n);return r===null?ul:{kind:`container`,direction:`vertical`,children:r.v,...r.when!==void 0&&{when:r.when},...r.distribution!==void 0&&{distribution:r.distribution}}}return e.issues.push({path:`${t}.kind`,message:`a layout node "kind" must be "container", "segment", or "group", or use the terse A-grammar: a bare string, or an object with "seg", "h", or "v" (got ${JSON.stringify(n.kind)})`,line:W(e.source,[`root`])}),ul};function Cl(){return{required:!0,json:{type:`object`,propertyNames:{pattern:jo.source},additionalProperties:{$ref:ll}},parse:(e,t,n,r)=>{let i=r[n];if(!so(i))return e.issues.push({path:`${t}.${n}`,message:`"rows" must be an object of row name → layout node, got ${co(i)}`,line:W(e.source,[...t.split(`.`),n])}),{};let a={};for(let[r,o]of Object.entries(i)){if(!jo.test(r)){e.issues.push({path:`${t}.${n}.${r}`,message:`row name "${r}" must be an identifier (letters, digits, _; not starting with a digit) — it names the row in the config file and merges by name over the bundled default's rows`,line:W(e.source,[...t.split(`.`),n,r])});continue}a[r]=Sl(e,`${t}.${n}.${r}`,o)}return a}}}const wl={noun:`root key`,fields:{rows:Cl(),when:K(),distribution:gl()}};function Tl(e,t,n){return so(n)&&`rows`in n?lo(e,wl,t,n)??{rows:{}}:Sl(e,t,n)}function El(){return{required:!0,json:{type:`string`,pattern:jo.source},parse:(e,t,n,r)=>{let i=r[n];if(typeof i!=`string`||!jo.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 "${Uo}", got ${G(i)}`,line:W(e.source,[`root`])});return}return i}}}function Dl(){return{required:!1,json:{type:`string`,minLength:1},parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0){if(typeof i!=`string`||i===``||i.includes(`/`)){e.issues.push({path:`${t}.${n}`,message:`a group "key" must be a non-empty, slash-free SessionState key, got ${G(i)}`,line:W(e.source,[`root`])});return}return i}}}}function Ol(){return{required:!0,json:{type:`string`,pattern:`^[^\\n\\r]*$`},parse:(e,t,n,r)=>{let i=no(e,t,r,n);if(i!==null){if(/[\n\r]/.test(i)){e.issues.push({path:`${t}.${n}`,message:`${t}.${n}: group label must not contain newlines`,line:W(e.source,[...t.split(`.`),n])});return}return i}}}}const kl={noun:`layout-node key`,fields:{kind:dl(`group`),name:El(),label:Ol(),open:bo(),direction:To(Wa),key:Dl(),bg:K(),fg:K(),when:K(),distribution:gl(),children:ml(vo(()=>Sl))}};function Al(e){return e.key??`groups.`+e.name}function jl(e){let t=ic+e.name;return Jo(t,{variable:t,key:Al(e),member:e.name},{kind:`container`,direction:e.direction??`vertical`,children:e.children,...e.distribution!==void 0&&{distribution:e.distribution}},`drop`,e.when)}function Ml(e,t,n){e.issues.push({path:t,message:n,line:W(e.source,[`root`])})}function Nl(e,t){dc(e,t,ic,`group nodes`);let n=e.groups;if(n.length===0)return;let r=new Set;for(let t of n)r.has(t.name)&&Ml(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}.`)&&Al(t)===Al(r)&&Ml(e,t.path,`group "${t.name}" shares key "${Al(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=Al(t);if(i.has(n)||i.set(n,Uo),t.open===!0){let r=i.get(n);r!==`closed`&&Ml(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=ic+e.name,r=Al(e),c=n.filter(t=>t!==e&&e.path.startsWith(t.path+`.`)).length,l=` `.repeat(c);a[t]=Qo(r,i.get(r)),o[t]=$o(r,e.name),s[t]={template:Zo(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 Pl=class extends Error{name=`TemplateError`;kind=`EvalError`;pos;source;constructor(e,t,n={}){super(e),this.pos=t,this.source=n.source}get sourceSnippet(){return this.source?Vl(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}},Fl=class extends Pl{name=`ParseError`;kind=`ParseError`;expected;found;constructor(e,t,n={}){super(e,t,n),this.expected=n.expected,this.found=n.found}},Il=class extends Pl{name=`EvalError`;kind=`EvalError`},Ll=class extends Il{name=`FuncNotFoundError`;kind=`FuncNotFoundError`;funcName;suggestions;constructor(e,t,n={}){let r=Hl(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}},Rl=class extends Il{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}},zl=class extends Il{name=`MissingFieldError`;kind=`MissingFieldError`;path;constructor(e,t,n={}){super(`field "${e.join(`.`)}" not found on receiver`,t,n),this.path=e}},Bl=class extends Il{name=`FailError`;kind=`FailError`;constructor(e,t={line:0,column:0,offset:0},n={}){super(e,t,n)}};function Vl(e,t){let n=e.split(`
40
+ New: { h: ["seg1", "seg2"] }`,line:W(e.source,[`root`])}),gl;if(n.kind===`group`){let r=go(e,Fl,t,n);return r===null?gl:(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}),Ll(r))}let r=`h`in n,i=`v`in n,a=`seg`in n;if(+!!r+ +!!i+ +!!a>1){let r=[`seg`,`h`,`v`].filter(e=>e in n);return e.issues.push({path:t,message:`a layout node may have exactly one of "seg", "h", or "v" — got ${r.map(e=>`"${e}"`).join(` and `)} together`,line:W(e.source,[`root`])}),gl}if(a){let r=go(e,Tl,t,n);return r===null?gl:{kind:`segment`,name:r.seg,...r.when!==void 0&&{when:r.when}}}if(r){let r=go(e,El,t,n);return r===null?gl:{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=go(e,Dl,t,n);return r===null?gl:{kind:`container`,direction:`vertical`,children:r.v,...r.when!==void 0&&{when:r.when},...r.distribution!==void 0&&{distribution:r.distribution}}}return e.issues.push({path:`${t}.kind`,message:`a layout node "kind" must be "container", "segment", or "group", or use the terse A-grammar: a bare string, or an object with "seg", "h", or "v" (got ${JSON.stringify(n.kind)})`,line:W(e.source,[`root`])}),gl};function kl(){return{required:!0,json:{type:`object`,propertyNames:{pattern:Lo.source},additionalProperties:{$ref:hl}},parse:(e,t,n,r)=>{let i=r[n];if(!mo(i))return e.issues.push({path:`${t}.${n}`,message:`"rows" must be an object of row name → layout node, got ${ho(i)}`,line:W(e.source,[...t.split(`.`),n])}),{};let a={};for(let[r,o]of Object.entries(i)){if(!Lo.test(r)){e.issues.push({path:`${t}.${n}.${r}`,message:`row name "${r}" must be an identifier (letters, digits, _; not starting with a digit) — it names the row in the config file and merges by name over the bundled default's rows`,line:W(e.source,[...t.split(`.`),n,r])});continue}a[r]=Ol(e,`${t}.${n}.${r}`,o)}return a}}}const Al={noun:`root key`,fields:{rows:kl(),when:K(),distribution:Sl()}};function jl(e,t,n){return mo(n)&&`rows`in n?go(e,Al,t,n)??{rows:{}}:Ol(e,t,n)}function Ml(){return{required:!0,json:{type:`string`,pattern:Lo.source},parse:(e,t,n,r)=>{let i=r[n];if(typeof i!=`string`||!Lo.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 "${Yo}", got ${G(i)}`,line:W(e.source,[`root`])});return}return i}}}function Nl(){return{required:!1,json:{type:`string`,minLength:1},parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0){if(typeof i!=`string`||i===``||i.includes(`/`)){e.issues.push({path:`${t}.${n}`,message:`a group "key" must be a non-empty, slash-free SessionState key, got ${G(i)}`,line:W(e.source,[`root`])});return}return i}}}}function Pl(){return{required:!0,json:{type:`string`,pattern:`^[^\\n\\r]*$`},parse:(e,t,n,r)=>{let i=co(e,t,r,n);if(i!==null){if(/[\n\r]/.test(i)){e.issues.push({path:`${t}.${n}`,message:`${t}.${n}: group label must not contain newlines`,line:W(e.source,[...t.split(`.`),n])});return}return i}}}}const Fl={noun:`layout-node key`,fields:{kind:_l(`group`),name:Ml(),label:Pl(),open:Eo(),direction:jo(Xa),key:Nl(),bg:K(),fg:K(),when:K(),distribution:Sl(),children:bl(wo(()=>Ol))}};function Il(e){return e.key??`groups.`+e.name}function Ll(e){let t=uc+e.name;return es(t,{variable:t,key:Il(e),member:e.name},{kind:`container`,direction:e.direction??`vertical`,children:e.children,...e.distribution!==void 0&&{distribution:e.distribution}},`drop`,e.when)}function Rl(e,t,n){e.issues.push({path:t,message:n,line:W(e.source,[`root`])})}function zl(e,t){_c(e,t,uc,`group nodes`);let n=e.groups;if(n.length===0)return;let r=new Set;for(let t of n)r.has(t.name)&&Rl(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}.`)&&Il(t)===Il(r)&&Rl(e,t.path,`group "${t.name}" shares key "${Il(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=Il(t);if(i.has(n)||i.set(n,Yo),t.open===!0){let r=i.get(n);r!==`closed`&&Rl(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=uc+e.name,r=Il(e),c=n.filter(t=>t!==e&&e.path.startsWith(t.path+`.`)).length,l=` `.repeat(c);a[t]=is(r,i.get(r)),o[t]=as(r,e.name),s[t]={template:rs(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 Bl=class extends Error{name=`TemplateError`;kind=`EvalError`;pos;source;constructor(e,t,n={}){super(e),this.pos=t,this.source=n.source}get sourceSnippet(){return this.source?ql(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}},Vl=class extends Bl{name=`ParseError`;kind=`ParseError`;expected;found;constructor(e,t,n={}){super(e,t,n),this.expected=n.expected,this.found=n.found}},Hl=class extends Bl{name=`EvalError`;kind=`EvalError`},Ul=class extends Hl{name=`FuncNotFoundError`;kind=`FuncNotFoundError`;funcName;suggestions;constructor(e,t,n={}){let r=Jl(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}},Wl=class extends Hl{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}},Gl=class extends Hl{name=`MissingFieldError`;kind=`MissingFieldError`;path;constructor(e,t,n={}){super(`field "${e.join(`.`)}" not found on receiver`,t,n),this.path=e}},Kl=class extends Hl{name=`FailError`;kind=`FailError`;constructor(e,t={line:0,column:0,offset:0},n={}){super(e,t,n)}};function ql(e,t){let n=e.split(`
41
41
  `),r=t.line-1,i=[];if(r-1>=0&&r-1<n.length&&i.push({num:r,text:n[r-1]??``}),r>=0&&r<n.length&&i.push({num:r+1,text:n[r]??``}),r+1<n.length&&i.push({num:r+2,text:n[r+1]??``}),i.length===0)return``;let a=String(i[i.length-1]?.num??1).length,o=[];for(let e of i)if(o.push(` ${String(e.num).padStart(a,` `)} | ${e.text}`),e.num===t.line){let e=` ${` `.repeat(a)} | `,n=` `.repeat(Math.max(0,t.column-1));o.push(`${e}${n}^`)}return o.join(`
42
- `)}function Hl(e,t){if(t.length===0)return[];let n=t.map(t=>({name:t,dist:Ul(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 Ul(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 Wl(e){throw Error(`unhandled node kind: ${JSON.stringify(e)}`)}const Gl=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`]]),Kl={left:`{{`,right:`}}`};var ql=class{src;leftDelim;rightDelim;offset=0;line=1;column=1;mode=`text`;pending;constructor(e,t=Kl){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 Fl(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&&Jl(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);Jl(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);Jl(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(;Jl(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`;Jl(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&&(Xl(e)||Yl(e)&&Xl(this.src[this.offset+1]??``)||e===`.`&&Xl(this.src[this.offset+1]??``)))return this.readNumber(t);if(e===`.`)return this.readDotOrField(t);if(e!==void 0&&tu(e))return this.readIdentifier(t);throw this.err(`unexpected character ${JSON.stringify(e)}`,t,{found:e??`end of input`})}readQuotedString(e){let t=this.offset;for(this.advanceBy(1);this.offset<this.src.length;){let n=this.src[this.offset];if(n===`\\`){this.advanceBy(1),this.offset<this.src.length&&this.advanceBy(1);continue}if(n===`
42
+ `)}function Jl(e,t){if(t.length===0)return[];let n=t.map(t=>({name:t,dist:Yl(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 Yl(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 Xl(e){throw Error(`unhandled node kind: ${JSON.stringify(e)}`)}const Zl=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`]]),Ql={left:`{{`,right:`}}`};var $l=class{src;leftDelim;rightDelim;offset=0;line=1;column=1;mode=`text`;pending;constructor(e,t=Ql){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 Vl(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&&eu(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);eu(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);eu(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(;eu(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`;eu(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&&(nu(e)||tu(e)&&nu(this.src[this.offset+1]??``)||e===`.`&&nu(this.src[this.offset+1]??``)))return this.readNumber(t);if(e===`.`)return this.readDotOrField(t);if(e!==void 0&&su(e))return this.readIdentifier(t);throw this.err(`unexpected character ${JSON.stringify(e)}`,t,{found:e??`end of input`})}readQuotedString(e){let t=this.offset;for(this.advanceBy(1);this.offset<this.src.length;){let n=this.src[this.offset];if(n===`\\`){this.advanceBy(1),this.offset<this.src.length&&this.advanceBy(1);continue}if(n===`
43
43
  `)throw this.err(`newline in interpreted string`,e,{found:`\\n`});if(n===`"`)return this.advanceBy(1),this.makeToken(`String`,this.src.slice(t,this.offset),e);this.advanceBy(1)}throw this.err(`unterminated string literal`,e,{expected:`"`,found:`end of input`})}readRawString(e){let t=this.offset;for(this.advanceBy(1);this.offset<this.src.length;){if(this.src[this.offset]==="`")return this.advanceBy(1),this.makeToken(`String`,this.src.slice(t,this.offset),e);this.advanceBy(1)}throw this.err(`unterminated raw string literal`,e,{expected:"`",found:`end of input`})}readChar(e){let t=this.offset;for(this.advanceBy(1);this.offset<this.src.length;){let n=this.src[this.offset];if(n===`\\`){this.advanceBy(1),this.offset<this.src.length&&this.advanceBy(1);continue}if(n===`
44
- `)throw this.err(`newline in rune literal`,e,{found:`\\n`});if(n===`'`)return this.advanceBy(1),this.makeToken(`Char`,this.src.slice(t,this.offset),e);this.advanceBy(1)}throw this.err(`unterminated rune literal`,e,{expected:`'`,found:`end of input`})}readNumber(e){let t=this.offset;if(Yl(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);Zl(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);Ql(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);$l(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);return this.finishNumber(t,e)}}for(;Xl(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);if(this.src[this.offset]===`.`)for(this.advanceBy(1);Xl(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),Yl(this.src[this.offset]??``)&&this.advanceBy(1);Xl(this.src[this.offset]??``);)this.advanceBy(1);return this.src[this.offset]===`i`&&this.advanceBy(1),this.finishNumber(t,e)}isHexFloatTail(e){return Zl(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);nu(this.src[this.offset]??``);)this.advanceBy(1);for(;this.src[this.offset]===`.`&&tu(this.src[this.offset+1]??``);)for(this.advanceBy(1);nu(this.src[this.offset]??``);)this.advanceBy(1);return this.makeToken(`Variable`,this.src.slice(t,this.offset),e)}readDotOrField(e){let t=this.offset;if(this.advanceBy(1),!tu(this.src[this.offset]??``))return this.makeToken(`Dot`,`.`,e);for(;nu(this.src[this.offset]??``);)this.advanceBy(1);for(;this.src[this.offset]===`.`&&tu(this.src[this.offset+1]??``);)for(this.advanceBy(1);nu(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(;nu(this.src[this.offset]??``);)this.advanceBy(1);let n=this.src.slice(t,this.offset),r=Gl.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===`
44
+ `)throw this.err(`newline in rune literal`,e,{found:`\\n`});if(n===`'`)return this.advanceBy(1),this.makeToken(`Char`,this.src.slice(t,this.offset),e);this.advanceBy(1)}throw this.err(`unterminated rune literal`,e,{expected:`'`,found:`end of input`})}readNumber(e){let t=this.offset;if(tu(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);ru(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);iu(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);au(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);return this.finishNumber(t,e)}}for(;nu(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);if(this.src[this.offset]===`.`)for(this.advanceBy(1);nu(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),tu(this.src[this.offset]??``)&&this.advanceBy(1);nu(this.src[this.offset]??``);)this.advanceBy(1);return this.src[this.offset]===`i`&&this.advanceBy(1),this.finishNumber(t,e)}isHexFloatTail(e){return ru(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);cu(this.src[this.offset]??``);)this.advanceBy(1);for(;this.src[this.offset]===`.`&&su(this.src[this.offset+1]??``);)for(this.advanceBy(1);cu(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),!su(this.src[this.offset]??``))return this.makeToken(`Dot`,`.`,e);for(;cu(this.src[this.offset]??``);)this.advanceBy(1);for(;this.src[this.offset]===`.`&&su(this.src[this.offset+1]??``);)for(this.advanceBy(1);cu(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(;cu(this.src[this.offset]??``);)this.advanceBy(1);let n=this.src.slice(t,this.offset),r=Zl.get(n);return r?this.makeToken(r,n,e):this.makeToken(`Identifier`,n,e)}skipActionSpaces(){for(;this.offset<this.src.length;){let e=this.src[this.offset];if(e===` `||e===` `||e===`\r`||e===`
45
45
  `)this.advanceBy(1);else return}}advanceBy(e){for(let t=0;t<e;t++){let e=this.src[this.offset];this.offset+=1,e===`
46
- `?(this.line+=1,this.column=1):this.column+=1}}advanceTo(e){for(;this.offset<e;)this.advanceBy(1)}makeToken(e,t,n,r={}){return Object.freeze({type:e,value:t,pos:n,...r.trimLeft===void 0?{}:{trimLeft:r.trimLeft},...r.trimRight===void 0?{}:{trimRight:r.trimRight}})}};function Jl(e){return e===` `||e===` `||e===`\r`||e===`
47
- `}function Yl(e){return e===`+`||e===`-`}function Xl(e){return e>=`0`&&e<=`9`}function Zl(e){return Xl(e)||e>=`a`&&e<=`f`||e>=`A`&&e<=`F`}function Ql(e){return e>=`0`&&e<=`7`}function $l(e){return e===`0`||e===`1`}function eu(e){return e>=`a`&&e<=`z`||e>=`A`&&e<=`Z`}function tu(e){return eu(e)||e===`_`}function nu(e){return tu(e)||Xl(e)}let ru,iu;function au(e,t){return iu(e,t)}var ou=class e{static EMPTY=new e(new Map,void 0);#e;#t;constructor(e,t){this.#e=e,this.#t=t}static{ru=(t,n)=>new e(t,n),iu=(e,t)=>e.#e.get(t)??(e.#t&&iu(e.#t,t))}has(e){return iu(this,e)!==void 0}};function su(e,t,n=ou.EMPTY){return new cu(e,t,n).parseTemplate()}var cu=class{lex;buf=[];defines=new Map;inherit;source;rangeDepth=0;constructor(e,t,n){this.source=e,this.inherit=n,this.lex=t?new ql(e,t):new ql(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:du(n)});return n}errAt(e,t,n={}){return new Fl(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 ${du(e)}`,{found:du(e)})}return{root:e,defines:ru(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=uu(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 lu(e,t);let r=this.parseAction();r!==null&&t.push(r);continue}throw this.errAt(n,`unexpected ${du(n)} at top level`,{found:du(n)})}return lu(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 Fl(`{{${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 Fl(`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:du(e)});return yu(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(!fu(e.type))throw this.errAt(e,"missing command after `|`",{expected:`command`,found:du(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=[pu(this.next())];for(;this.peek().type===`Comma`;)this.next(),n.push(pu(this.expect(`Variable`,`$variable`)));return{vars:n,isAssign:this.next().type===`Assign`}}parseCommand(){let e=this.peek().pos,t=[this.parsePrimary()];for(;fu(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 pu(e);case`Identifier`:return{type:`Identifier`,pos:e.pos,ident:e.value};case`String`:return{type:`String`,pos:e.pos,raw:e.value,value:yu(e.value,e.pos,this.source)};case`Number`:return hu(e);case`Char`:return gu(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 ${du(e)}`,{expected:`command argument`,found:du(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 lu(e,t){return{type:`List`,pos:e,nodes:t}}function uu(e){return{trimLeft:e.trimLeft===!0,trimRight:e.trimRight===!0}}function du(e){return e.type===`EOF`?`end of input`:e.value||e.type}function fu(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 pu(e){return{type:`Variable`,pos:e.pos,idents:mu(e.value)}}function mu(e){let t=e.indexOf(`.`);return t===-1?[e]:[e.slice(0,t),...e.slice(t+1).split(`.`)]}function hu(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=_u(i);return{...s,intValue:e}}if(a){let e=vu(i);return{...s,floatValue:e}}let c=vu(i);return{...s,complexValue:[0,c]}}function gu(e,t){let n=bu(e.value,e.pos,t);return{type:`Number`,pos:e.pos,text:e.value,isInt:!0,isUint:!1,isFloat:!1,isComplex:!1,intValue:BigInt(n)}}function _u(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 vu(e){return Number(e)}function yu(e,t,n){if(e.startsWith("`"))return e.slice(1,-1);let r=``;for(let i=1;i<e.length-1;i++){let a=e[i];if(a!==`\\`){r+=a;continue}let o=e[++i];switch(o){case`n`:r+=`
48
- `;break;case`t`:r+=` `;break;case`r`:r+=`\r`;break;case`\\`:r+=`\\`;break;case`"`:r+=`"`;break;case`'`:r+=`'`;break;case`a`:r+=`\x07`;break;case`b`:r+=`\b`;break;case`f`:r+=`\f`;break;case`v`:r+=`\v`;break;case`0`:case`1`:case`2`:case`3`:case`4`:case`5`:case`6`:case`7`:{let t=o+(e[i+1]??``)+(e[i+2]??``);i+=2,r+=String.fromCodePoint(Number.parseInt(t,8));break}case`x`:{let t=(e[i+1]??``)+(e[i+2]??``);i+=2,r+=String.fromCodePoint(Number.parseInt(t,16));break}case`u`:{let t=e.slice(i+1,i+5);i+=4,r+=String.fromCodePoint(Number.parseInt(t,16));break}case`U`:{let t=e.slice(i+1,i+9);i+=8,r+=String.fromCodePoint(Number.parseInt(t,16));break}default:throw new Fl(`bad escape sequence \\${o}`,t,{expected:`valid escape sequence`,found:`\\${o}`,source:n})}}return r}function bu(e,t,n){let r=yu(`"${e.slice(1,-1).replace(/"/g,`\\"`)}"`,t,n);if(r.length===0)throw new Fl(`empty rune literal`,t,{source:n});return r.codePointAt(0)??0}function xu(e,t){if(t(e)!==!1)for(let n of Su(e))xu(n,t)}function Su(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 Wl(e)}}const Cu=Symbol(`go-template-js.MISSING`);function wu(e,t){if(e==null)return Cu;if(e instanceof Map)return e.has(t)?e.get(t):Cu;if(Array.isArray(e))return Cu;if(typeof e==`object`){let n=e;return t in n?n[t]:Cu}return Cu}function Tu(e,t){let n=e;for(let e of t){if(n===Cu)return Cu;n=wu(n,e)}return n}function Eu(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)=>Eu(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)||!Eu(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=>Eu(e[n],t[n])):!1}return!1}const Du=new WeakSet;function Ou(e){return Du.add(e),e}function ku(e){return Du.has(e)}function Au(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 ju(e,t){return{eq:{fn:(e,...t)=>t.some(t=>Pu(e,t)),argTypes:[`comparable`]},ne:{fn:(e,t)=>!Pu(e,t),argTypes:[`comparable`,`comparable`]},lt:{fn:(e,t)=>Fu(e,t)<0,argTypes:[`ordered`,`ordered`]},le:{fn:(e,t)=>Fu(e,t)<=0,argTypes:[`ordered`,`ordered`]},gt:{fn:(e,t)=>Fu(e,t)>0,argTypes:[`ordered`,`ordered`]},ge:{fn:(e,t)=>Fu(e,t)>=0,argTypes:[`ordered`,`ordered`]},len:{fn:e=>Iu(e),argTypes:[`sized`]},index:{fn:(e,...t)=>{let n=e;for(let e of t)n=Lu(n,e);return n},argTypes:[`collection`,`index-key`]},slice:{fn:(e,...t)=>{let n=t.length>=1?t[0]:0,r=t.length>=2?t[1]:void 0;return e.slice(n,r)},argTypes:[`sliceable`,`int`]},print:{fn:(...t)=>Bu(t,e),argTypes:[`stringifiable`],returnType:`string`},println:{fn:(...t)=>`${Bu(t,e)}\n`,argTypes:[`stringifiable`],returnType:`string`},printf:{fn:(n,...r)=>Yu(n,r,e,t),argTypes:[`string`,`stringifiable`],returnType:`string`},toString:{fn:n=>Qu(n,e,t),argTypes:[`value`],returnType:`string`},toStrings:{fn:n=>n.map(n=>Qu(n,e,t)),argTypes:[`list`]},call:{fn:(e,...t)=>e(...t),argTypes:[`callable`,`value`]},html:{fn:(...t)=>Uu(Bu(t,e)),argTypes:[`stringifiable`],returnType:`string`},js:{fn:(...t)=>Ku(Bu(t,e)),argTypes:[`stringifiable`],returnType:`string`},urlquery:{fn:(...t)=>Ju(Bu(t,e)),argTypes:[`stringifiable`],returnType:`string`},not:{fn:e=>!Au(e),argTypes:[`truthy`]}}}function Mu(){return{and:Ou({argTypes:[`truthy`],fn:(...e)=>{let t=!0;for(let n of e)if(t=n(),!Au(t))return t;return t}}),or:Ou({argTypes:[`truthy`],fn:(...e)=>{let t=!1;for(let n of e)if(t=n(),Au(t))return t;return t}})}}function Nu(e,t){return{...ju(e,t),...Mu()}}function Pu(e,t){return typeof e==`number`&&typeof t==`bigint`?BigInt(e)===t:typeof e==`bigint`&&typeof t==`number`?e===BigInt(t):Eu(e,t)}function Fu(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 Iu(e){return typeof e==`string`||Array.isArray(e)?e.length:e instanceof Map||e instanceof Set?e.size:Object.keys(e).length}function Lu(e,t){if(Array.isArray(e)){let n=Number(t);if(!Number.isInteger(n))throw Error(`index: array index must be integer, got ${Ru(t)}`);if(n<0||n>=e.length)throw Error(`index: out of range [${n}] with length ${e.length}`);return e[n]}if(e instanceof Map)return e.get(t);if(typeof e==`string`)return e[Number(t)];if(typeof e==`object`&&e){if(typeof t!=`string`)throw Error(`index: object index must be string, got ${Ru(t)}`);return e[t]}throw Error(`index: cannot index ${Ru(e)}`)}function Ru(e){return e===null?`null`:e===void 0?`undefined`:Array.isArray(e)?`array`:e instanceof Map?`Map`:typeof e}function zu(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 Bu(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+=Vu(a,t),r=o}return n}function Vu(e,t){return e==null?`<nil>`:typeof e==`string`?e:t(e)}const Hu={"\0":`�`,'"':`&#34;`,"'":`&#39;`,"&":`&amp;`,"<":`&lt;`,">":`&gt;`};function Uu(e){return e.replace(/[\0"'&<>]/g,e=>Hu[e]??e)}const Wu={"\\":`\\\\`,"'":`\\'`,'"':`\\"`,"<":`\\u003C`,">":`\\u003E`,"&":`\\u0026`,"=":`\\u003D`},Gu=/^[\p{L}\p{M}\p{N}\p{P}\p{S}]$/u;function Ku(e){let t=``;for(let n of e){let e=Wu[n];if(e!==void 0){t+=e;continue}let r=n.codePointAt(0);if(r<32||r>=128&&!Gu.test(n)){t+=`\\u${r.toString(16).toUpperCase().padStart(4,`0`)}`;continue}t+=n}return t}const qu=new TextEncoder;function Ju(e){let t=``,n=qu.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 Yu(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+=Xu(l??``,u,d,n,r),o=c+1}return i}function Xu(e,t,n,r,i){switch(e){case`s`:return typeof n==`string`?Zu(t,n):Zu(t,Vu(n,r));case`d`:return typeof n!=`number`&&typeof n!=`bigint`?`%!${e}(${zu(n)}=${Vu(n,r)})`:Zu(t,String(typeof n==`bigint`?n:Math.trunc(n)));case`v`:return Zu(t,Qu(n,r,i));case`q`:return Zu(t,JSON.stringify(Vu(n,r)));case`f`:{if(typeof n!=`number`&&typeof n!=`bigint`)return`%!${e}(${zu(n)}=${Vu(n,r)})`;let i=t.includes(`.`)?Number(t.split(`.`)[1]):6;return Zu(t,Number(n).toFixed(i))}case`t`:return Zu(t,Au(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 Zu(t,r)}return typeof n!=`number`&&typeof n!=`bigint`?`%!${e}(${zu(n)}=${Vu(n,r)})`:typeof n==`bigint`?Zu(t,n.toString(16)):Zu(t,Math.trunc(n).toString(16));default:return`%!${e}(${zu(n)}=${Vu(n,r)})`}}function Zu(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 Qu(e,t,n){return e==null?`<nil>`:typeof e==`string`?e:n(e)?t(e):Array.isArray(e)?`[${e.map(e=>Qu(e,t,n)).join(` `)}]`:e instanceof Map?$u([...e.entries()],t,n):ed(e)?$u(Object.entries(e),t,n):String(e)}function $u(e,t,n){let r=e=>Qu(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 ed(e){if(typeof e!=`object`||!e||Array.isArray(e)||e instanceof Map||e instanceof Set)return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype}function td(e){return{dot:e,root:e,parent:void 0,vars:new Map}}function nd(e,t){return{dot:t,root:e.root,parent:e,vars:new Map}}function rd(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 id(e,t,n){e.vars.set(t,n)}const ad=new Set([`default`,`zero`,`error`]);function od(e){if(e===void 0)return`default`;if(ad.has(e))return e;throw Error(`EngineConfig.missingKey: expected "default" | "zero" | "error", got ${sd(e)}`)}function sd(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 cd(e){if(e!==void 0){if(typeof e!=`object`||!e)throw Error(`EngineConfig.delims: expected { left, right } object, got ${sd(e)}`);if(typeof e.left!=`string`||e.left.length===0)throw Error(`EngineConfig.delims.left: expected non-empty string, got ${sd(e.left)}`);if(typeof e.right!=`string`||e.right.length===0)throw Error(`EngineConfig.delims.right: expected non-empty string, got ${sd(e.right)}`);return{left:e.left,right:e.right}}}const ld=Object.freeze({kind:`break`}),ud=Object.freeze({kind:`continue`}),dd={kind:`none`};let fd;(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{fd=(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 pd(e){let t=new Set,n=e=>{xu(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 md={kind:`dynamic`};function hd(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=Pd(e);return typeof t==`number`||typeof t==`bigint`?{kind:`literal`,value:t}:md}case`Pipe`:{if(e.decls.length!==0||e.cmds.length!==1)return md;let t=e.cmds[0];if(t===void 0)return md;let n=t.args[0];return n===void 0||n.type!==`Identifier`?md:{kind:`call`,name:n.ident,args:t.args.slice(1).map(hd)}}default:return md}}function gd(e){let t=[],n=e=>{xu(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(hd);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 _d=class{fromString;toString;isT;funcs;missingKey;delims;constructor(e){this.fromString=e.fromString;let t=Object.hasOwn(e,`toString`)?e.toString:void 0;this.toString=t??wd,this.isT=e.isT??vd,this.missingKey=od(e.missingKey),this.delims=cd(e.delims),this.funcs={...Nu(this.toString,this.isT),...e.funcs??{}}}parse(e,t){let n=su(e,this.delims,t);return fd(n.source,e=>this.evalParsed(n,e),n.defines,pd(n),gd(n))}compile(e){let t=this.parse(e);return e=>t.evaluate(e)}evaluate(e,t){return e.evaluate(t)}evalParsed(e,t){let n=[],r=td(t),i={out:n,defines:e.defines,source:e.source};return this.evalList(e.root,r,i),n}evalList(e,t,n){for(let r of e.nodes)this.evalNode(r,t,n)}evalNode(e,t,n){switch(e.type){case`Text`:n.out.push(this.fromString(e.text));return;case`Comment`:return;case`Action`:{let r=this.evalAction(e,t,n);e.pipe.decls.length===0&&this.emitFromValue(r,n);return}case`List`:this.evalList(e,t,n);return;case`If`:this.evalIf(e,t,n);return;case`Range`:this.evalRange(e,t,n);return;case`With`:this.evalWith(e,t,n);return;case`Break`:throw ld;case`Continue`:throw ud;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 Il(`unexpected ${e.type} at statement position`,e.pos,{source:n.source});default:Wl(e)}}evalIf(e,t,n){Au(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(Au(r)){let i=nd(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=jd(r);try{if(a.length===0){e.elseList&&this.evalList(e.elseList,t,n);return}for(let[r,o]of a){let a=nd(t,o);if(i.length===1)id(a,i[0]?.idents[0]??`$`,o);else if(i.length>=2){let e=i[0]?.idents[0]??`$`,t=i[1]?.idents[0]??`$`;id(a,e,r),id(a,t,o)}try{this.evalList(e.list,a,n)}catch(e){if(e===ud)continue;throw e}}}catch(e){if(e===ld)return;throw e}}evalTemplateInvoke(e,t,n){let r=au(n.defines,e.name);if(!r)throw new Il(`template ${JSON.stringify(e.name)} is not defined`,e.pos,{source:n.source});let i=nd(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=nd(t,e.pipe?this.evalPipe(e.pipe,t,n):t.dot),i=au(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 Il(`empty pipeline`,e.pos,{source:n.source});let r=this.evalCommand(e.cmds[0],t,n,dd);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)id(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 Il(`empty command`,e.pos,{source:n.source});let i=e.args[0];if(i.type!==`Identifier`){if(e.args.length>1)throw new Il(`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 Ll(i.ident,i.pos,{source:n.source,available:Object.keys(this.funcs)});let o=e.args.slice(1),s=ku(a),c=o.map(e=>s?()=>this.evalPrimary(e,t,n):this.evalPrimary(e,t,n));if(r.kind===`value`){let e=r.value;c.push(s?()=>e:e)}bd(i.ident,a.argTypes,c,e.pos,n.source,this.toString,a.argTypePattern,this.fromString,this.isT);try{return a.fn(...c)}catch(t){throw t instanceof Rl?new Rl(t.funcName,t.argIndex,t.expected,t.receivedSummary,e.pos,{source:n.source}):t instanceof Bl?new Bl(t.message,e.pos,{source:n.source}):t}}evalPrimary(e,t,n){switch(e.type){case`Dot`:return t.dot;case`Nil`:return null;case`Bool`:return e.value;case`Number`:return Pd(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 Ll(e.ident,e.pos,{source:n.source,available:Object.keys(this.funcs)});return bd(e.ident,t.argTypes,[],e.pos,n.source,this.toString,t.argTypePattern,this.fromString,this.isT),t.fn()}case`Chain`:return this.resolveFieldChain(this.evalPrimary(e.node,t,n),e.fields,e.pos,n);case`Pipe`:return this.evalPipe(e,t,n);default:throw new Il(`cannot evaluate ${e.type} as a value`,e.pos,{source:n.source})}}resolveFieldChain(e,t,n,r){let i=Tu(e,t);if(i!==Cu)return i;if(this.missingKey===`error`)throw new zl(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=rd(t,i);if(!a.found)throw new Il(`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(Qu(e,this.toString,this.isT)))}};const vd=e=>typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Map);function yd(e){return new _d(e)}function bd(e,t,n,r,i,a=wd,o,s=Cd,c=vd){let l=xd(t,o),u=-1,d=-1;for(let t=0;t<n.length;t++){let o=l(t),f=n[t];if(!Sd(o,f,a,c))throw new Rl(e,t+1,kd(o),Ad(f),r,{source:i});if(o===`liftable`&&typeof f==`string`&&(n[t]=s(f)),o===`int`?n[t]=Math.trunc(Number(f)):o===`float`&&(n[t]=Number(f)),o===`ordered`){if(u===-1)u=t;else if(!Ed(n[u],f))throw new Rl(e,t+1,`${kd(`ordered`)} of the same kind as ${Ad(n[u])}`,Ad(f),r,{source:i})}if(o===`comparable`){if(d===-1)d=t;else if(!Dd(n[d],f))throw new Rl(e,t+1,`${kd(`comparable`)} of the same kind as ${Ad(n[d])}`,Ad(f),r,{source:i})}}}function xd(e,t){if(e.length===0)return()=>`value`;if(t===`alternating`){let t=e.length;return n=>e[n%t]}let n=e[e.length-1];return t=>t<e.length?e[t]:n}function Sd(e,t,n,r){switch(e){case`truthy`:case`reflective`:case`value`:return!0;case`string`:return typeof t==`string`;case`int`:return typeof t==`number`&&Number.isFinite(t)||typeof t==`bigint`&&Number.isSafeInteger(Number(t));case`float`:return typeof t==`number`||typeof t==`bigint`&&Number.isFinite(Number(t));case`bool`:return typeof t==`boolean`;case`ordered`:return typeof t==`string`||typeof t==`number`||typeof t==`bigint`||typeof t==`boolean`;case`T`:return r(t);case`list`:return Array.isArray(t);case`dict`:return ed(t);case`sized`:return typeof t==`string`||Array.isArray(t)||t instanceof Map||t instanceof Set||ed(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||ed(t);case`callable`:return typeof t==`function`;case`collection`:return typeof t==`string`||Array.isArray(t)||t instanceof Map||ed(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 Td(t);default:throw Error(`invalid ArgType: ${String(e)}`)}}function Cd(e){return e}function wd(e){if(typeof e==`string`)return e;if(e==null)return`<nil>`;if(typeof e==`number`||typeof e==`bigint`||typeof e==`boolean`)return String(e);throw new Rl(`<engine.toString>`,1,`string (or a consumer-supplied toString that flattens T)`,Ad(e),{line:0,column:0,offset:0})}function Td(e){try{return JSON.stringify(e)!==void 0}catch{return!1}}function Ed(e,t){return typeof e==typeof t||typeof e==`number`&&typeof t==`bigint`||typeof e==`bigint`&&typeof t==`number`}function Dd(e,t){let n=Od(e),r=Od(t);return n===`nil`||r===`nil`?!0:n===r}function Od(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 kd(e){switch(e){case`int`:return`integer (finite number or safe-integer bigint)`;case`float`:return`float (number, including NaN/Infinity, or finite-convertible bigint)`;case`T`:return`T (consumer-defined fragment)`;case`ordered`:return`orderable primitive`;case`list`:return`list`;case`dict`:return`dict (plain object)`;case`sized`:return`sized value (string, list, map, set, or dict)`;case`comparable`:return`comparable value (orderable primitive, nil, list, dict, Map, or Set)`;case`stringifiable`:return`stringifiable value (string or convertible via the engine's toString)`;case`liftable`:return`liftable value (T or string, the latter lifted via the engine's fromString)`;case`callable`:return`callable (function value)`;case`collection`:return`collection (string, array, Map, or dict)`;case`index-key`:return`index key (number, bigint, or string)`;case`sliceable`:return`sliceable value (string or array)`;case`serializable`:return`JSON-serializable value`;case`truthy`:case`reflective`:case`value`:case`string`:case`bool`:return e;default:throw Error(`invalid ArgType: ${String(e)}`)}}function Ad(e){return e===null?`null`:e===void 0?`undefined`:Array.isArray(e)?`array`:e instanceof Map?`Map`:typeof e}function jd(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?Md([...e.entries()]):e instanceof Set?[...e.values()].map((e,t)=>[t,e]):typeof e==`object`?Md(Object.entries(e)):[]}function Md(e){return[...e].sort((e,t)=>Nd(e[0],t[0]))}function Nd(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 Pd(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 Fd(e){if(!/^[+-]?\d+$/.test(e))return 0;let t=Number.parseInt(e,10);return Number.isSafeInteger(t)?t:0}function Id(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 Ld(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 Rd(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=Ld(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 zd(e){if(typeof e==`bigint`)return e;if(typeof e==`number`)return BigInt(Math.trunc(e));if(typeof e==`string`){let t=Ld(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 Bd(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 Vd(e){return JSON.stringify(e)??`null`}function Hd(){return{atoi:{fn:e=>Fd(e),argTypes:[`string`],returnType:`int`},int:{fn:e=>Rd(e),argTypes:[`value`],returnType:`int`},int64:{fn:e=>zd(e),argTypes:[`value`]},float64:{fn:e=>Id(e),argTypes:[`value`],returnType:`float`},toDecimal:{fn:e=>Bd(e),argTypes:[`string`],returnType:`int`},toRawJson:{fn:e=>Vd(e),argTypes:[`serializable`],returnType:`string`}}}const Ud={h:36e11,m:6e10,s:1e9,ms:1e6,us:1e3,µs:1e3,ns:1};function Wd(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*Ud[a],n=n.slice(e[0].length)}return t?-r:r}function Gd(e){if(e===0)return`0s`;let t=!1,n=e;n<0&&(t=!0,n=-n);let r;return r=n<Ud.us?`${Math.floor(n)}ns`:n<Ud.ms?Kd(n,Ud.us,3,`µs`):n<Ud.s?Kd(n,Ud.ms,6,`ms`):qd(n),t?`-${r}`:r}function Kd(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 qd(e){let t=Math.floor(e/Ud.h);e-=t*Ud.h;let n=Math.floor(e/Ud.m);e-=n*Ud.m;let r=Math.floor(e/Ud.s),i=e-r*Ud.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 Jd(e){return e*Ud.s}function Yd(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 Xd(e,t){let n=t().getTime()-Yd(e).getTime();return Gd(Math.round(n/1e3)*1e9)}const Zd=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],Qd=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],$d=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],ef=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`];function tf(e){return e<10?`0${e}`:String(e)}function nf(e){return e<10?`00${e}`:e<100?`0${e}`:String(e)}function rf(e){return e<10?` ${e}`:String(e)}function af(e){let t=e>=0?`+`:`-`,n=Math.abs(e);return`${t}${tf(Math.floor(n/60))}${tf(n%60)}`}function of(e){let t=e>=0?`+`:`-`,n=Math.abs(e);return`${t}${tf(Math.floor(n/60))}:${tf(n%60)}`}function sf(e){return`${e>=0?`+`:`-`}${tf(Math.floor(Math.abs(e)/60))}`}function cf(e){return e===0?`Z`:af(e)}function lf(e){return e===0?`Z`:of(e)}function uf(e){return e===0?`Z`:sf(e)}function df(e,t,n){let r=e*1e6,i=String(r).padStart(9,`0`).slice(0,t);return n?i.replace(/0+$/,``):i}const ff=[[`.000000000`,e=>`.${df(e.ms,9,!1)}`],[`.999999999`,e=>{let t=df(e.ms,9,!0);return t?`.${t}`:``}],[`.000000`,e=>`.${df(e.ms,6,!1)}`],[`.999999`,e=>{let t=df(e.ms,6,!0);return t?`.${t}`:``}],[`.000`,e=>`.${nf(e.ms)}`],[`.999`,e=>{let t=nf(e.ms).replace(/0+$/,``);return t?`.${t}`:``}],[`January`,e=>Zd[e.month-1]??`January`],[`Monday`,e=>$d[e.weekday]??`Monday`],[`Z07:00`,e=>lf(e.offsetMinutes)],[`-07:00`,e=>of(e.offsetMinutes)],[`Z0700`,e=>cf(e.offsetMinutes)],[`-0700`,e=>af(e.offsetMinutes)],[`2006`,e=>String(e.year)],[`Jan`,e=>Qd[e.month-1]??`Jan`],[`Mon`,e=>ef[e.weekday]??`Mon`],[`MST`,e=>e.tzAbbr],[`-07`,e=>sf(e.offsetMinutes)],[`Z07`,e=>uf(e.offsetMinutes)],[`15`,e=>tf(e.hour)],[`01`,e=>tf(e.month)],[`02`,e=>tf(e.day)],[`_2`,e=>rf(e.day)],[`03`,e=>tf(e.hour12)],[`04`,e=>tf(e.minute)],[`05`,e=>tf(e.second)],[`06`,e=>tf(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 pf(e,t){let n=``,r=0;for(;r<e.length;){let i=!1;for(let[a,o]of ff)if(e.startsWith(a,r)){n+=o(t),r+=a.length,i=!0;break}i||(n+=e[r++])}return n}const mf={year:`numeric`,month:`2-digit`,day:`2-digit`,weekday:`long`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hour12:!1};function hf(e){let t=new Map;for(let n of e)t.set(n.type,n.value);return t}const gf=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`];function _f(e,t){let n;try{new Intl.DateTimeFormat(`en-US`,{timeZone:t}),n=t}catch{n=`UTC`}let r=hf(new Intl.DateTimeFormat(`en-US`,{...mf,timeZone:n}).formatToParts(e)),i=parseInt(r.get(`hour`)??`0`,10)%24,a=hf(new Intl.DateTimeFormat(`en-US`,{timeZone:n,timeZoneName:`short`}).formatToParts(e)).get(`timeZoneName`)??n,o=vf(hf(new Intl.DateTimeFormat(`en-US`,{timeZone:n,timeZoneName:`shortOffset`}).formatToParts(e)).get(`timeZoneName`)??`GMT`),s=gf.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 vf(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 yf(){return Intl.DateTimeFormat().resolvedOptions().timeZone}function bf(e,t){return pf(e,_f(Yd(t),yf()))}function xf(e,t,n){return pf(e,_f(Yd(t),n))}function Sf(e,t){let n=Yd(t),r=Wd(e);return Number.isNaN(r)?n:new Date(n.getTime()+r/1e6)}function Cf(e){if(typeof e==`string`){let t=parseInt(e,10);return Number.isNaN(t)?`0s`:Gd(Jd(t))}return typeof e==`bigint`?Gd(Jd(Number(e))):typeof e==`number`?Gd(Jd(e)):`0s`}const wf=36e11*24*365,Tf=36e11*24*30,Ef=36e11*24,Df=36e11,Of=6e10,kf=1e9;function Af(e){let t=Wd(String(e));if(Number.isNaN(t))return`0s`;let n=Math.abs(t);return n>wf?`${Math.floor(n/wf)}y`:n>Tf?`${Math.floor(n/Tf)}mo`:n>Ef?`${Math.floor(n/Ef)}d`:n>Df?`${Math.floor(n/Df)}h`:n>Of?`${Math.floor(n/Of)}m`:n>kf?`${Math.floor(n/kf)}s`:`0s`}function jf(e){let t=_f(Yd(e),yf());return`${t.year}-${String(t.month).padStart(2,`0`)}-${String(t.day).padStart(2,`0`)}`}function Mf(e,t){let n=_f(Yd(e),t);return`${n.year}-${String(n.month).padStart(2,`0`)}-${String(n.day).padStart(2,`0`)}`}function Nf(e){return e()}const Pf=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],Ff=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`];function If(){return{year:2e3,month:1,day:1,hour:0,minute:0,second:0,ms:0,offsetMinutes:0,isPM:!1,hour12:!1}}function Lf(e,t,n){return[e.slice(t,t+n),t+n]}function Rf(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 zf(e,t){for(let[n,r]of Pf.entries())if(e.startsWith(r,t))return[n+1,t+r.length];throw Error(`sprig toDate: expected month name at pos ${t}`)}function Bf(e,t){for(let[n,r]of Ff.entries())if(e.startsWith(r,t))return[n+1,t+r.length];throw Error(`sprig toDate: expected short month name at pos ${t}`)}function Vf(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 Hf(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 Uf(e,t){if(e[t]===` `){let[n,r]=Rf(e,t+1,1,1);return[n,r]}return Rf(e,t,1,2)}function Wf(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]=Rf(e,i,2,2);i=o;let s=0;if(n&&e[i]===`:`){let[t,n]=Rf(e,i+1,2,2);s=t,i=n}else if(!n){let[t,n]=Rf(e,i,2,2);s=t,i=n}return[r*(a*60+s),i]}function Gf(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]=Rf(e,t+1,2,2);return[n*r*60,i]}return Wf(e,t,n)}function Kf(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 qf(e,t,n){let[r,i]=Lf(e,t,n),a=parseInt(r.padEnd(9,`0`),10);return[Math.round(a/1e6),i]}function Jf(e,t,n,r){let i={...r};switch(e){case`January`:{let[e,r]=zf(t,n);return i.month=e,[r,i]}case`Monday`:return[Vf(t,n),i];case`Jan`:{let[e,r]=Bf(t,n);return i.month=e,[r,i]}case`Mon`:return[Hf(t,n),i];case`2006`:{let[e,r]=Rf(t,n,4,4);return i.year=e,[r,i]}case`06`:{let[e,r]=Rf(t,n,2,2);return i.year=e<70?2e3+e:1900+e,[r,i]}case`01`:{let[e,r]=Rf(t,n,2,2);return i.month=e,[r,i]}case`1`:{let[e,r]=Rf(t,n,1,2);return i.month=e,[r,i]}case`_2`:{let[e,r]=Uf(t,n);return i.day=e,[r,i]}case`02`:{let[e,r]=Rf(t,n,2,2);return i.day=e,[r,i]}case`2`:{let[e,r]=Rf(t,n,1,2);return i.day=e,[r,i]}case`15`:{let[e,r]=Rf(t,n,2,2);return i.hour=e,[r,i]}case`03`:{let[e,r]=Rf(t,n,2,2);return i.hour=e,i.hour12=!0,[r,i]}case`3`:{let[e,r]=Rf(t,n,1,2);return i.hour=e,i.hour12=!0,[r,i]}case`04`:{let[e,r]=Rf(t,n,2,2);return i.minute=e,[r,i]}case`4`:{let[e,r]=Rf(t,n,1,2);return i.minute=e,[r,i]}case`05`:{let[e,r]=Rf(t,n,2,2);return i.second=e,[r,i]}case`5`:{let[e,r]=Rf(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[Kf(t,n),i];case`-0700`:{let[e,r]=Wf(t,n,!1);return i.offsetMinutes=e,[r,i]}case`-07:00`:{let[e,r]=Wf(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]=Rf(t,n+1,2,2);return i.offsetMinutes=e*r*60,[a,i]}case`Z0700`:{let[e,r]=Gf(t,n,!1,!1);return i.offsetMinutes=e,[r,i]}case`Z07:00`:{let[e,r]=Gf(t,n,!0,!1);return i.offsetMinutes=e,[r,i]}case`Z07`:{let[e,r]=Gf(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]=qf(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]=qf(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]=qf(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 Yf=`.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 Xf(e,t){let n=0,r=0,i=If();for(;n<e.length;){let a=!1;for(let o of Yf)if(e.startsWith(o,n)){let[e,s]=Jf(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 Zf(e,t){return Xf(e,t)}function Qf(e){return String(Math.floor(Yd(e).getTime()/1e3))}function $f(e=()=>new Date){return{now:{fn:()=>Nf(e),argTypes:[]},date:{fn:(e,t)=>bf(e,t),argTypes:[`string`,`value`]},dateInZone:{fn:(e,t,n)=>xf(e,t,n),argTypes:[`string`,`value`,`string`]},dateModify:{fn:(e,t)=>Sf(e,t),argTypes:[`string`,`value`]},htmlDate:{fn:e=>jf(e),argTypes:[`value`]},htmlDateInZone:{fn:(e,t)=>Mf(e,t),argTypes:[`value`,`string`]},duration:{fn:e=>Cf(e),argTypes:[`value`]},durationRound:{fn:e=>Af(e),argTypes:[`value`]},toDate:{fn:(e,t)=>Zf(e,t),argTypes:[`string`,`string`]},ago:{fn:t=>Xd(t,e),argTypes:[`value`]},unixEpoch:{fn:e=>Qf(e),argTypes:[`value`]}}}function ep(e){return e==null||e===!1?!0:typeof e==`number`?e===0||Number.isNaN(e):typeof e==`bigint`?e===0n:typeof e==`string`||Array.isArray(e)?e.length===0:e instanceof Map||e instanceof Set?e.size===0:typeof e==`object`?Object.keys(e).length===0:!1}function tp(...e){for(let t of e)if(!ep(t))return t}function np(e,t){return ep(t)?e:t}function rp(e){return JSON.parse(e)}function ip(e,t,n){return Au(n)?e:t}function ap(e){return JSON.stringify(e)??`null`}function op(e){return JSON.stringify(e,null,2)??`null`}function sp(){return{default:{fn:(e,t)=>np(e,t),argTypes:[`value`,`truthy`]},empty:{fn:e=>ep(e),argTypes:[`truthy`]},coalesce:{fn:(...e)=>tp(...e),argTypes:[`truthy`]},ternary:{fn:(e,t,n)=>ip(e,t,n),argTypes:[`value`,`value`,`truthy`]},fromJson:{fn:e=>rp(e),argTypes:[`string`]},toJson:{fn:e=>ap(e),argTypes:[`serializable`],returnType:`string`},toPrettyJson:{fn:e=>op(e),argTypes:[`serializable`],returnType:`string`}}}function cp(...e){let t={};for(let n=0;n<e.length;n+=2)t[e[n]]=e[n+1];return t}function lp(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 cp(...t)}function up(e,t){return e[t]}function dp(e,t){return t in e}function fp(e){return Object.keys(e)}function pp(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 mp(e,...t){let n={...e};for(let e of t)Object.assign(n,e);return n}function hp(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 gp(e,...t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function _p(e,...t){let n=[];for(let r of t)e in r&&n.push(r[e]);return n}function vp(e,t,n){return e[t]=n,e}function yp(e,t){return delete e[t],e}function bp(e){return Object.values(e)}function xp(){return{dict:{fn:(...e)=>cp(...e),argTypes:[`string`,`value`],argTypePattern:`alternating`},get:{fn:(e,t)=>up(e,t),argTypes:[`dict`,`string`]},set:{fn:(e,t,n)=>vp(e,t,n),argTypes:[`dict`,`string`,`value`]},unset:{fn:(e,t)=>yp(e,t),argTypes:[`dict`,`string`]},keys:{fn:e=>fp(e),argTypes:[`dict`]},values:{fn:e=>bp(e),argTypes:[`dict`]},pluck:{fn:(e,...t)=>_p(e,...t),argTypes:[`string`,`dict`]},pick:{fn:(e,...t)=>gp(e,...t),argTypes:[`dict`,`string`]},omit:{fn:(e,...t)=>hp(e,...t),argTypes:[`dict`,`string`]},hasKey:{fn:(e,t)=>dp(e,t),argTypes:[`dict`,`string`]},merge:{fn:(e,...t)=>pp(e,...t),argTypes:[`dict`]},mergeOverwrite:{fn:(e,...t)=>mp(e,...t),argTypes:[`dict`]}}}new TextEncoder,new Map(Array.from(`ABCDEFGHIJKLMNOPQRSTUVWXYZ234567`).map((e,t)=>[e,t])),new TextDecoder,new TextEncoder,new TextDecoder,new TextEncoder;function Sp(...e){for(let t of e)if(ep(t))return!1;return!0}function Cp(...e){for(let t of e)if(!ep(t))return!0;return!1}function wp(e,t){return[...e,t]}function Tp(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 Ep(e){return e.filter(e=>!ep(e))}function Dp(...e){let t=[];for(let n of e)t.push(...n);return t}const Op={line:0,column:0,offset:0};function kp(e,t,n,r){return new Rl(e,t,n,r,Op)}function Ap(...e){if(e.length<3)throw kp(`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(!Mp(t))throw kp(`dig`,e.length-1,`dict`,Np(t));for(let e=0;e<r.length;e++)if(typeof r[e]!=`string`)throw kp(`dig`,e,`string`,Np(r[e]));return jp(t,n,r,e.length)}function jp(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(!Mp(a))throw kp(`dig`,r-1,`dict at intermediate key`,Np(a));return jp(a,t,n.slice(1),r)}function Mp(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Map)&&!(e instanceof Set)}function Np(e){return e===null?`null`:Array.isArray(e)?`array`:e instanceof Map?`Map`:e instanceof Set?`Set`:typeof e}function Pp(e){return e[0]}function Fp(e,t){return t.some(t=>Eu(t,e))}function Ip(e){return e.slice(0,-1)}function Lp(e){return e[e.length-1]}function Rp(e){return Array.isArray(e)||typeof e==`string`?e.length:e instanceof Map||e instanceof Set?e.size:Object.keys(e).length}function zp(...e){return e}function Bp(e,t){return[t,...e]}function Vp(e){return e.slice(1)}function Hp(e){return[...e].reverse()}function Up(e,t,n){let r=t===void 0?0:t,i=n===void 0?e.length:n;return e.slice(r,i)}function Wp(e){let t=[];for(let n of e)n!=null&&t.push(String(n));return t.sort()}function Gp(e){let t=[];for(let n of e)t.some(e=>Eu(e,n))||t.push(n);return t}function Kp(e,...t){return e.filter(e=>!t.some(t=>Eu(t,e)))}function qp(){return{list:{fn:(...e)=>zp(...e),argTypes:[`value`]},first:{fn:e=>Pp(e),argTypes:[`list`]},last:{fn:e=>Lp(e),argTypes:[`list`]},rest:{fn:e=>Vp(e),argTypes:[`list`]},initial:{fn:e=>Ip(e),argTypes:[`list`]},len:{fn:e=>Rp(e),argTypes:[`sized`]},reverse:{fn:e=>Hp(e),argTypes:[`list`]},uniq:{fn:e=>Gp(e),argTypes:[`list`]},without:{fn:(e,...t)=>Kp(e,...t),argTypes:[`list`,`value`]},has:{fn:(e,t)=>Fp(e,t),argTypes:[`value`,`list`]},compact:{fn:e=>Ep(e),argTypes:[`list`]},slice:{fn:(e,t,n)=>Up(e,t,n),argTypes:[`list`,`int`,`int`]},concat:{fn:(...e)=>Dp(...e),argTypes:[`list`]},chunk:{fn:(e,t)=>Tp(e,t),argTypes:[`int`,`list`]},prepend:{fn:(e,t)=>Bp(e,t),argTypes:[`list`,`value`]},append:{fn:(e,t)=>wp(e,t),argTypes:[`list`,`value`]},sortAlpha:{fn:e=>Wp(e),argTypes:[`list`],returnType:`list`},push:{fn:(e,t)=>wp(e,t),argTypes:[`list`,`value`]},tuple:{fn:(...e)=>zp(...e),argTypes:[`value`]},dig:{fn:(...e)=>Ap(...e),argTypes:[`value`]},all:{fn:(...e)=>Sp(...e),argTypes:[`truthy`],returnType:`bool`},any:{fn:(...e)=>Cp(...e),argTypes:[`truthy`],returnType:`bool`}}}function Jp(...e){return e.reduce((e,t)=>e+t,0)}function Yp(e){return e+1}function Xp(e){return e+1}function Zp(...e){return e.reduce((e,t)=>e+t,0)}function Qp(e){return Math.ceil(e)}function $p(e,t){return Math.trunc(e/t)}function em(e,t){return e/t}function tm(e){return Math.floor(e)}function nm(...e){return e.reduce((e,t)=>t>e?t:e,-1/0)}function rm(...e){return e.reduce((e,t)=>Math.max(e,t),-1/0)}function im(...e){return e.reduce((e,t)=>t<e?t:e,1/0)}function am(...e){return e.reduce((e,t)=>Math.min(e,t),1/0)}function om(e,t){return e%t}function sm(...e){return e.reduce((e,t)=>e*t,1)}function cm(...e){return e.reduce((e,t)=>e*t,1)}function lm(e,t=0){let n=10**t;return Math.sign(e)*Math.round(Math.abs(e)*n)/n}function um(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 dm(...e){let t=1;switch(e.length){case 0:return``;case 1:{let n=e[0];return n<1&&(t=-1),um(1,n+t,t).join(` `)}case 2:{let t=e[0],n=e[1],r=n<t?-1:1;return um(t,n+r,r).join(` `)}case 3:{let n=e[0],r=e[1],i=e[2];return i<n&&(t=-1,r>0)?``:um(n,i+t,r).join(` `)}default:return``}}function fm(e,t){return e-t}function pm(e,t){return e-t}function mm(e){return um(0,e,e<0?-1:1)}function hm(){return{add:{fn:(...e)=>Jp(...e),argTypes:[`int`]},sub:{fn:(e,t)=>fm(e,t),argTypes:[`int`,`int`]},mul:{fn:(...e)=>sm(...e),argTypes:[`int`]},div:{fn:(e,t)=>$p(e,t),argTypes:[`int`,`int`]},mod:{fn:(e,t)=>om(e,t),argTypes:[`int`,`int`]},min:{fn:(...e)=>im(...e),argTypes:[`int`]},max:{fn:(...e)=>nm(...e),argTypes:[`int`]},floor:{fn:e=>tm(e),argTypes:[`float`]},ceil:{fn:e=>Qp(e),argTypes:[`float`]},round:{fn:(e,t)=>lm(e,t),argTypes:[`float`,`int`]},addf:{fn:(...e)=>Zp(...e),argTypes:[`float`]},subf:{fn:(e,t)=>pm(e,t),argTypes:[`float`,`float`]},mulf:{fn:(...e)=>cm(...e),argTypes:[`float`]},divf:{fn:(e,t)=>em(e,t),argTypes:[`float`,`float`]},add1:{fn:e=>Yp(e),argTypes:[`int`]},add1f:{fn:e=>Xp(e),argTypes:[`float`]},maxf:{fn:(...e)=>rm(...e),argTypes:[`float`]},minf:{fn:(...e)=>am(...e),argTypes:[`float`]},biggest:{fn:(...e)=>nm(...e),argTypes:[`int`]},seq:{fn:(...e)=>dm(...e),argTypes:[`int`],returnType:`string`},until:{fn:e=>mm(e),argTypes:[`int`],returnType:`list`},untilStep:{fn:(e,t,n)=>um(e,t,n),argTypes:[`int`,`int`,`int`],returnType:`list`}}}Array.from({length:95},(e,t)=>String.fromCharCode(t+32)).join(``);function gm(e,t){return t.length<=e||e<4?t:`${t.slice(0,e-3)}...`}function _m(e,t,n){return t<7||n.length<t||e<0||e>n.length-t+1?n:`...${n.slice(e,e+t-6)}...`}const q={Invalid:0,Number:1,UpperCase:2,Alphabet:3,Connector:4,Punct:5,Other:6},vm=/^[-_\s]$/,ym=/^\p{P}$/u,bm=/^\p{L}$/u,xm=/^\p{Lu}$/u,Sm=/^\p{N}$/u;function Cm(e){return e!==void 0&&vm.test(e)}function wm(e){return e!==void 0&&bm.test(e)}function Tm(e){return e!==void 0&&xm.test(e)}function Em(e){return e!==void 0&&Sm.test(e)}function Dm(e){return e!==void 0&&ym.test(e)}function Om(e,t){if(t>=e.length)return{word:{wt:q.Invalid,text:``},next:t};let n=e[t],r=t+1;if(Cm(n)){for(;r<e.length&&Cm(e[r]);)r++;return{word:{wt:q.Connector,text:e.slice(t,r).join(``)},next:r}}if(Dm(n)){for(;r<e.length&&Dm(e[r]);)r++;return{word:{wt:q.Punct,text:e.slice(t,r).join(``)},next:r}}if(Tm(n)){if(r>=e.length)return{word:{wt:q.UpperCase,text:n},next:r};if(Tm(e[r])){let n=r;for(;n<e.length&&Tm(e[n]);)n++;return n<e.length&&wm(e[n])?{word:{wt:q.UpperCase,text:e.slice(t,n-1).join(``)},next:n-1}:{word:{wt:q.UpperCase,text:e.slice(t,n).join(``)},next:n}}if(wm(e[r])){let n=r+1;for(;n<e.length&&wm(e[n])&&!Tm(e[n]);)n++;return{word:{wt:q.UpperCase,text:e.slice(t,n).join(``)},next:n}}return{word:{wt:q.UpperCase,text:n},next:r}}if(wm(n)){for(;r<e.length&&wm(e[r])&&!Tm(e[r]);)r++;return{word:{wt:q.Alphabet,text:e.slice(t,r).join(``)},next:r}}if(Em(n)){for(;r<e.length&&Em(e[r]);)r++;return{word:{wt:q.Number,text:e.slice(t,r).join(``)},next:r}}for(;r<e.length&&!Cm(e[r])&&!wm(e[r])&&!Em(e[r])&&!Dm(e[r]);)r++;return{word:{wt:q.Other,text:e.slice(t,r).join(``)},next:r}}function km(e,t,n){if(t.wt!==q.UpperCase&&t.wt!==q.Connector){e.push(t.text);return}for(let r of t.text)Cm(r)?e.push(n):Tm(r)?e.push(r.toLowerCase()):e.push(r)}function Am(e,t){if(e.length===0)return``;let n=Array.from(e),r=[],{word:i,next:a}=Om(n,0);for(;a<n.length;){i.wt!==q.Connector&&km(r,i,t);let e=i,o=i;if({word:i,next:a}=Om(n,a),e.wt===q.Number){for(;i.wt===q.Alphabet||i.wt===q.Number;)km(r,i,t),{word:i,next:a}=Om(n,a);i.wt!==q.Invalid&&i.wt!==q.Punct&&i.wt!==q.Connector&&r.push(t);continue}if(e.wt===q.Connector){km(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}=Om(n,a),i.wt!==q.Alphabet){km(r,s,t),i.wt!==q.Connector&&i.wt!==q.Punct&&r.push(t);continue}for(r.push(t),km(r,s,t);i.wt===q.Alphabet||i.wt===q.Number;)km(r,i,t),{word:i,next:a}=Om(n,a);i.wt!==q.Invalid&&i.wt!==q.Connector&&i.wt!==q.Punct&&r.push(t)}return km(r,i,t),r.join(``).toLowerCase()}function jm(e){if(e.length===0)return``;let t=Array.from(e),n=[],r=0,i=``;for(;r<t.length;){if(i=t[r],r++,!Cm(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++,Cm(i)&&Cm(e)){n.push(e);continue}Cm(e)?i=i.toUpperCase():(i=i.toLowerCase(),n.push(e))}return n.push(i),n.join(``)}function Mm(e){return jm(e)}function Nm(...e){return e.join(` `)}function Pm(e,t){return t.includes(e)}function Fm(e,t){return t.startsWith(e)}function Im(e,t){return t.endsWith(e)}function Lm(e,t){let n=` `.repeat(Math.max(0,e));return t.split(`
46
+ `?(this.line+=1,this.column=1):this.column+=1}}advanceTo(e){for(;this.offset<e;)this.advanceBy(1)}makeToken(e,t,n,r={}){return Object.freeze({type:e,value:t,pos:n,...r.trimLeft===void 0?{}:{trimLeft:r.trimLeft},...r.trimRight===void 0?{}:{trimRight:r.trimRight}})}};function eu(e){return e===` `||e===` `||e===`\r`||e===`
47
+ `}function tu(e){return e===`+`||e===`-`}function nu(e){return e>=`0`&&e<=`9`}function ru(e){return nu(e)||e>=`a`&&e<=`f`||e>=`A`&&e<=`F`}function iu(e){return e>=`0`&&e<=`7`}function au(e){return e===`0`||e===`1`}function ou(e){return e>=`a`&&e<=`z`||e>=`A`&&e<=`Z`}function su(e){return ou(e)||e===`_`}function cu(e){return su(e)||nu(e)}let lu,uu;function du(e,t){return uu(e,t)}var fu=class e{static EMPTY=new e(new Map,void 0);#e;#t;constructor(e,t){this.#e=e,this.#t=t}static{lu=(t,n)=>new e(t,n),uu=(e,t)=>e.#e.get(t)??(e.#t&&uu(e.#t,t))}has(e){return uu(this,e)!==void 0}};function pu(e,t,n=fu.EMPTY){return new mu(e,t,n).parseTemplate()}var mu=class{lex;buf=[];defines=new Map;inherit;source;rangeDepth=0;constructor(e,t,n){this.source=e,this.inherit=n,this.lex=t?new $l(e,t):new $l(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:_u(n)});return n}errAt(e,t,n={}){return new Vl(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 ${_u(e)}`,{found:_u(e)})}return{root:e,defines:lu(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=gu(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 hu(e,t);let r=this.parseAction();r!==null&&t.push(r);continue}throw this.errAt(n,`unexpected ${_u(n)} at top level`,{found:_u(n)})}return hu(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 Vl(`{{${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 Vl(`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:_u(e)});return Tu(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(!vu(e.type))throw this.errAt(e,"missing command after `|`",{expected:`command`,found:_u(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=[yu(this.next())];for(;this.peek().type===`Comma`;)this.next(),n.push(yu(this.expect(`Variable`,`$variable`)));return{vars:n,isAssign:this.next().type===`Assign`}}parseCommand(){let e=this.peek().pos,t=[this.parsePrimary()];for(;vu(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 yu(e);case`Identifier`:return{type:`Identifier`,pos:e.pos,ident:e.value};case`String`:return{type:`String`,pos:e.pos,raw:e.value,value:Tu(e.value,e.pos,this.source)};case`Number`:return xu(e);case`Char`:return Su(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 ${_u(e)}`,{expected:`command argument`,found:_u(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 hu(e,t){return{type:`List`,pos:e,nodes:t}}function gu(e){return{trimLeft:e.trimLeft===!0,trimRight:e.trimRight===!0}}function _u(e){return e.type===`EOF`?`end of input`:e.value||e.type}function vu(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 yu(e){return{type:`Variable`,pos:e.pos,idents:bu(e.value)}}function bu(e){let t=e.indexOf(`.`);return t===-1?[e]:[e.slice(0,t),...e.slice(t+1).split(`.`)]}function xu(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=Cu(i);return{...s,intValue:e}}if(a){let e=wu(i);return{...s,floatValue:e}}let c=wu(i);return{...s,complexValue:[0,c]}}function Su(e,t){let n=Eu(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 Cu(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 wu(e){return Number(e)}function Tu(e,t,n){if(e.startsWith("`"))return e.slice(1,-1);let r=``;for(let i=1;i<e.length-1;i++){let a=e[i];if(a!==`\\`){r+=a;continue}let o=e[++i];switch(o){case`n`:r+=`
48
+ `;break;case`t`:r+=` `;break;case`r`:r+=`\r`;break;case`\\`:r+=`\\`;break;case`"`:r+=`"`;break;case`'`:r+=`'`;break;case`a`:r+=`\x07`;break;case`b`:r+=`\b`;break;case`f`:r+=`\f`;break;case`v`:r+=`\v`;break;case`0`:case`1`:case`2`:case`3`:case`4`:case`5`:case`6`:case`7`:{let t=o+(e[i+1]??``)+(e[i+2]??``);i+=2,r+=String.fromCodePoint(Number.parseInt(t,8));break}case`x`:{let t=(e[i+1]??``)+(e[i+2]??``);i+=2,r+=String.fromCodePoint(Number.parseInt(t,16));break}case`u`:{let t=e.slice(i+1,i+5);i+=4,r+=String.fromCodePoint(Number.parseInt(t,16));break}case`U`:{let t=e.slice(i+1,i+9);i+=8,r+=String.fromCodePoint(Number.parseInt(t,16));break}default:throw new Vl(`bad escape sequence \\${o}`,t,{expected:`valid escape sequence`,found:`\\${o}`,source:n})}}return r}function Eu(e,t,n){let r=Tu(`"${e.slice(1,-1).replace(/"/g,`\\"`)}"`,t,n);if(r.length===0)throw new Vl(`empty rune literal`,t,{source:n});return r.codePointAt(0)??0}function Du(e,t){if(t(e)!==!1)for(let n of Ou(e))Du(n,t)}function Ou(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 Xl(e)}}const ku=Symbol(`go-template-js.MISSING`);function Au(e,t){if(e==null)return ku;if(e instanceof Map)return e.has(t)?e.get(t):ku;if(Array.isArray(e))return ku;if(typeof e==`object`){let n=e;return t in n?n[t]:ku}return ku}function ju(e,t){let n=e;for(let e of t){if(n===ku)return ku;n=Au(n,e)}return n}function Mu(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)=>Mu(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)||!Mu(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=>Mu(e[n],t[n])):!1}return!1}const Nu=new WeakSet;function Pu(e){return Nu.add(e),e}function Fu(e){return Nu.has(e)}function Iu(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 Lu(e,t){return{eq:{fn:(e,...t)=>t.some(t=>Bu(e,t)),argTypes:[`comparable`]},ne:{fn:(e,t)=>!Bu(e,t),argTypes:[`comparable`,`comparable`]},lt:{fn:(e,t)=>Vu(e,t)<0,argTypes:[`ordered`,`ordered`]},le:{fn:(e,t)=>Vu(e,t)<=0,argTypes:[`ordered`,`ordered`]},gt:{fn:(e,t)=>Vu(e,t)>0,argTypes:[`ordered`,`ordered`]},ge:{fn:(e,t)=>Vu(e,t)>=0,argTypes:[`ordered`,`ordered`]},len:{fn:e=>Hu(e),argTypes:[`sized`]},index:{fn:(e,...t)=>{let n=e;for(let e of t)n=Uu(n,e);return n},argTypes:[`collection`,`index-key`]},slice:{fn:(e,...t)=>{let n=t.length>=1?t[0]:0,r=t.length>=2?t[1]:void 0;return e.slice(n,r)},argTypes:[`sliceable`,`int`]},print:{fn:(...t)=>Ku(t,e),argTypes:[`stringifiable`],returnType:`string`},println:{fn:(...t)=>`${Ku(t,e)}\n`,argTypes:[`stringifiable`],returnType:`string`},printf:{fn:(n,...r)=>td(n,r,e,t),argTypes:[`string`,`stringifiable`],returnType:`string`},toString:{fn:n=>id(n,e,t),argTypes:[`value`],returnType:`string`},toStrings:{fn:n=>n.map(n=>id(n,e,t)),argTypes:[`list`]},call:{fn:(e,...t)=>e(...t),argTypes:[`callable`,`value`]},html:{fn:(...t)=>Yu(Ku(t,e)),argTypes:[`stringifiable`],returnType:`string`},js:{fn:(...t)=>Qu(Ku(t,e)),argTypes:[`stringifiable`],returnType:`string`},urlquery:{fn:(...t)=>ed(Ku(t,e)),argTypes:[`stringifiable`],returnType:`string`},not:{fn:e=>!Iu(e),argTypes:[`truthy`]}}}function Ru(){return{and:Pu({argTypes:[`truthy`],fn:(...e)=>{let t=!0;for(let n of e)if(t=n(),!Iu(t))return t;return t}}),or:Pu({argTypes:[`truthy`],fn:(...e)=>{let t=!1;for(let n of e)if(t=n(),Iu(t))return t;return t}})}}function zu(e,t){return{...Lu(e,t),...Ru()}}function Bu(e,t){return typeof e==`number`&&typeof t==`bigint`?BigInt(e)===t:typeof e==`bigint`&&typeof t==`number`?e===BigInt(t):Mu(e,t)}function Vu(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 Hu(e){return typeof e==`string`||Array.isArray(e)?e.length:e instanceof Map||e instanceof Set?e.size:Object.keys(e).length}function Uu(e,t){if(Array.isArray(e)){let n=Number(t);if(!Number.isInteger(n))throw Error(`index: array index must be integer, got ${Wu(t)}`);if(n<0||n>=e.length)throw Error(`index: out of range [${n}] with length ${e.length}`);return e[n]}if(e instanceof Map)return e.get(t);if(typeof e==`string`)return e[Number(t)];if(typeof e==`object`&&e){if(typeof t!=`string`)throw Error(`index: object index must be string, got ${Wu(t)}`);return e[t]}throw Error(`index: cannot index ${Wu(e)}`)}function Wu(e){return e===null?`null`:e===void 0?`undefined`:Array.isArray(e)?`array`:e instanceof Map?`Map`:typeof e}function Gu(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 Ku(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+=qu(a,t),r=o}return n}function qu(e,t){return e==null?`<nil>`:typeof e==`string`?e:t(e)}const Ju={"\0":`�`,'"':`&#34;`,"'":`&#39;`,"&":`&amp;`,"<":`&lt;`,">":`&gt;`};function Yu(e){return e.replace(/[\0"'&<>]/g,e=>Ju[e]??e)}const Xu={"\\":`\\\\`,"'":`\\'`,'"':`\\"`,"<":`\\u003C`,">":`\\u003E`,"&":`\\u0026`,"=":`\\u003D`},Zu=/^[\p{L}\p{M}\p{N}\p{P}\p{S}]$/u;function Qu(e){let t=``;for(let n of e){let e=Xu[n];if(e!==void 0){t+=e;continue}let r=n.codePointAt(0);if(r<32||r>=128&&!Zu.test(n)){t+=`\\u${r.toString(16).toUpperCase().padStart(4,`0`)}`;continue}t+=n}return t}const $u=new TextEncoder;function ed(e){let t=``,n=$u.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 td(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+=nd(l??``,u,d,n,r),o=c+1}return i}function nd(e,t,n,r,i){switch(e){case`s`:return typeof n==`string`?rd(t,n):rd(t,qu(n,r));case`d`:return typeof n!=`number`&&typeof n!=`bigint`?`%!${e}(${Gu(n)}=${qu(n,r)})`:rd(t,String(typeof n==`bigint`?n:Math.trunc(n)));case`v`:return rd(t,id(n,r,i));case`q`:return rd(t,JSON.stringify(qu(n,r)));case`f`:{if(typeof n!=`number`&&typeof n!=`bigint`)return`%!${e}(${Gu(n)}=${qu(n,r)})`;let i=t.includes(`.`)?Number(t.split(`.`)[1]):6;return rd(t,Number(n).toFixed(i))}case`t`:return rd(t,Iu(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 rd(t,r)}return typeof n!=`number`&&typeof n!=`bigint`?`%!${e}(${Gu(n)}=${qu(n,r)})`:typeof n==`bigint`?rd(t,n.toString(16)):rd(t,Math.trunc(n).toString(16));default:return`%!${e}(${Gu(n)}=${qu(n,r)})`}}function rd(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 id(e,t,n){return e==null?`<nil>`:typeof e==`string`?e:n(e)?t(e):Array.isArray(e)?`[${e.map(e=>id(e,t,n)).join(` `)}]`:e instanceof Map?ad([...e.entries()],t,n):od(e)?ad(Object.entries(e),t,n):String(e)}function ad(e,t,n){let r=e=>id(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 od(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 sd(e){return{dot:e,root:e,parent:void 0,vars:new Map}}function cd(e,t){return{dot:t,root:e.root,parent:e,vars:new Map}}function ld(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 ud(e,t,n){e.vars.set(t,n)}const dd=new Set([`default`,`zero`,`error`]);function fd(e){if(e===void 0)return`default`;if(dd.has(e))return e;throw Error(`EngineConfig.missingKey: expected "default" | "zero" | "error", got ${pd(e)}`)}function pd(e){return typeof e==`string`?JSON.stringify(e):e===null?`null`:e===void 0?`undefined`:typeof e==`bigint`?`${e}n`:typeof e==`number`||typeof e==`boolean`?String(e):typeof e==`symbol`?e.toString():typeof e==`function`?`[Function]`:`[${typeof e}]`}function md(e){if(e!==void 0){if(typeof e!=`object`||!e)throw Error(`EngineConfig.delims: expected { left, right } object, got ${pd(e)}`);if(typeof e.left!=`string`||e.left.length===0)throw Error(`EngineConfig.delims.left: expected non-empty string, got ${pd(e.left)}`);if(typeof e.right!=`string`||e.right.length===0)throw Error(`EngineConfig.delims.right: expected non-empty string, got ${pd(e.right)}`);return{left:e.left,right:e.right}}}const hd=Object.freeze({kind:`break`}),gd=Object.freeze({kind:`continue`}),_d={kind:`none`};let vd;(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{vd=(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 yd(e){let t=new Set,n=e=>{Du(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 bd={kind:`dynamic`};function xd(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=Bd(e);return typeof t==`number`||typeof t==`bigint`?{kind:`literal`,value:t}:bd}case`Pipe`:{if(e.decls.length!==0||e.cmds.length!==1)return bd;let t=e.cmds[0];if(t===void 0)return bd;let n=t.args[0];return n===void 0||n.type!==`Identifier`?bd:{kind:`call`,name:n.ident,args:t.args.slice(1).map(xd)}}default:return bd}}function Sd(e){let t=[],n=e=>{Du(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(xd);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 Cd=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??Ad,this.isT=e.isT??wd,this.missingKey=fd(e.missingKey),this.delims=md(e.delims),this.funcs={...zu(this.toString,this.isT),...e.funcs??{}}}parse(e,t){let n=pu(e,this.delims,t);return vd(n.source,e=>this.evalParsed(n,e),n.defines,yd(n),Sd(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=sd(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 hd;case`Continue`:throw gd;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 Hl(`unexpected ${e.type} at statement position`,e.pos,{source:n.source});default:Xl(e)}}evalIf(e,t,n){Iu(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(Iu(r)){let i=cd(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=Ld(r);try{if(a.length===0){e.elseList&&this.evalList(e.elseList,t,n);return}for(let[r,o]of a){let a=cd(t,o);if(i.length===1)ud(a,i[0]?.idents[0]??`$`,o);else if(i.length>=2){let e=i[0]?.idents[0]??`$`,t=i[1]?.idents[0]??`$`;ud(a,e,r),ud(a,t,o)}try{this.evalList(e.list,a,n)}catch(e){if(e===gd)continue;throw e}}}catch(e){if(e===hd)return;throw e}}evalTemplateInvoke(e,t,n){let r=du(n.defines,e.name);if(!r)throw new Hl(`template ${JSON.stringify(e.name)} is not defined`,e.pos,{source:n.source});let i=cd(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=cd(t,e.pipe?this.evalPipe(e.pipe,t,n):t.dot),i=du(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 Hl(`empty pipeline`,e.pos,{source:n.source});let r=this.evalCommand(e.cmds[0],t,n,_d);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)ud(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 Hl(`empty command`,e.pos,{source:n.source});let i=e.args[0];if(i.type!==`Identifier`){if(e.args.length>1)throw new Hl(`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 Ul(i.ident,i.pos,{source:n.source,available:Object.keys(this.funcs)});let o=e.args.slice(1),s=Fu(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)}Ed(i.ident,a.argTypes,c,e.pos,n.source,this.toString,a.argTypePattern,this.fromString,this.isT);try{return a.fn(...c)}catch(t){throw t instanceof Wl?new Wl(t.funcName,t.argIndex,t.expected,t.receivedSummary,e.pos,{source:n.source}):t instanceof Kl?new Kl(t.message,e.pos,{source:n.source}):t}}evalPrimary(e,t,n){switch(e.type){case`Dot`:return t.dot;case`Nil`:return null;case`Bool`:return e.value;case`Number`:return Bd(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 Ul(e.ident,e.pos,{source:n.source,available:Object.keys(this.funcs)});return Ed(e.ident,t.argTypes,[],e.pos,n.source,this.toString,t.argTypePattern,this.fromString,this.isT),t.fn()}case`Chain`:return this.resolveFieldChain(this.evalPrimary(e.node,t,n),e.fields,e.pos,n);case`Pipe`:return this.evalPipe(e,t,n);default:throw new Hl(`cannot evaluate ${e.type} as a value`,e.pos,{source:n.source})}}resolveFieldChain(e,t,n,r){let i=ju(e,t);if(i!==ku)return i;if(this.missingKey===`error`)throw new Gl(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=ld(t,i);if(!a.found)throw new Hl(`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(id(e,this.toString,this.isT)))}};const wd=e=>typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Map);function Td(e){return new Cd(e)}function Ed(e,t,n,r,i,a=Ad,o,s=kd,c=wd){let l=Dd(t,o),u=-1,d=-1;for(let t=0;t<n.length;t++){let o=l(t),f=n[t];if(!Od(o,f,a,c))throw new Wl(e,t+1,Fd(o),Id(f),r,{source:i});if(o===`liftable`&&typeof f==`string`&&(n[t]=s(f)),o===`int`?n[t]=Math.trunc(Number(f)):o===`float`&&(n[t]=Number(f)),o===`ordered`){if(u===-1)u=t;else if(!Md(n[u],f))throw new Wl(e,t+1,`${Fd(`ordered`)} of the same kind as ${Id(n[u])}`,Id(f),r,{source:i})}if(o===`comparable`){if(d===-1)d=t;else if(!Nd(n[d],f))throw new Wl(e,t+1,`${Fd(`comparable`)} of the same kind as ${Id(n[d])}`,Id(f),r,{source:i})}}}function Dd(e,t){if(e.length===0)return()=>`value`;if(t===`alternating`){let t=e.length;return n=>e[n%t]}let n=e[e.length-1];return t=>t<e.length?e[t]:n}function Od(e,t,n,r){switch(e){case`truthy`:case`reflective`:case`value`:return!0;case`string`:return typeof t==`string`;case`int`:return typeof t==`number`&&Number.isFinite(t)||typeof t==`bigint`&&Number.isSafeInteger(Number(t));case`float`:return typeof t==`number`||typeof t==`bigint`&&Number.isFinite(Number(t));case`bool`:return typeof t==`boolean`;case`ordered`:return typeof t==`string`||typeof t==`number`||typeof t==`bigint`||typeof t==`boolean`;case`T`:return r(t);case`list`:return Array.isArray(t);case`dict`:return od(t);case`sized`:return typeof t==`string`||Array.isArray(t)||t instanceof Map||t instanceof Set||od(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||od(t);case`callable`:return typeof t==`function`;case`collection`:return typeof t==`string`||Array.isArray(t)||t instanceof Map||od(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 jd(t);default:throw Error(`invalid ArgType: ${String(e)}`)}}function kd(e){return e}function Ad(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 Wl(`<engine.toString>`,1,`string (or a consumer-supplied toString that flattens T)`,Id(e),{line:0,column:0,offset:0})}function jd(e){try{return JSON.stringify(e)!==void 0}catch{return!1}}function Md(e,t){return typeof e==typeof t||typeof e==`number`&&typeof t==`bigint`||typeof e==`bigint`&&typeof t==`number`}function Nd(e,t){let n=Pd(e),r=Pd(t);return n===`nil`||r===`nil`?!0:n===r}function Pd(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 Fd(e){switch(e){case`int`:return`integer (finite number or safe-integer bigint)`;case`float`:return`float (number, including NaN/Infinity, or finite-convertible bigint)`;case`T`:return`T (consumer-defined fragment)`;case`ordered`:return`orderable primitive`;case`list`:return`list`;case`dict`:return`dict (plain object)`;case`sized`:return`sized value (string, list, map, set, or dict)`;case`comparable`:return`comparable value (orderable primitive, nil, list, dict, Map, or Set)`;case`stringifiable`:return`stringifiable value (string or convertible via the engine's toString)`;case`liftable`:return`liftable value (T or string, the latter lifted via the engine's fromString)`;case`callable`:return`callable (function value)`;case`collection`:return`collection (string, array, Map, or dict)`;case`index-key`:return`index key (number, bigint, or string)`;case`sliceable`:return`sliceable value (string or array)`;case`serializable`:return`JSON-serializable value`;case`truthy`:case`reflective`:case`value`:case`string`:case`bool`:return e;default:throw Error(`invalid ArgType: ${String(e)}`)}}function Id(e){return e===null?`null`:e===void 0?`undefined`:Array.isArray(e)?`array`:e instanceof Map?`Map`:typeof e}function Ld(e){return e==null?[]:Array.isArray(e)?e.map((e,t)=>[t,e]):typeof e==`string`?[...e].map((e,t)=>[t,e]):e instanceof Map?Rd([...e.entries()]):e instanceof Set?[...e.values()].map((e,t)=>[t,e]):typeof e==`object`?Rd(Object.entries(e)):[]}function Rd(e){return[...e].sort((e,t)=>zd(e[0],t[0]))}function zd(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 Bd(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 Vd(e){if(!/^[+-]?\d+$/.test(e))return 0;let t=Number.parseInt(e,10);return Number.isSafeInteger(t)?t:0}function Hd(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 Ud(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 Wd(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=Ud(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 Gd(e){if(typeof e==`bigint`)return e;if(typeof e==`number`)return BigInt(Math.trunc(e));if(typeof e==`string`){let t=Ud(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 Kd(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 qd(e){return JSON.stringify(e)??`null`}function Jd(){return{atoi:{fn:e=>Vd(e),argTypes:[`string`],returnType:`int`},int:{fn:e=>Wd(e),argTypes:[`value`],returnType:`int`},int64:{fn:e=>Gd(e),argTypes:[`value`]},float64:{fn:e=>Hd(e),argTypes:[`value`],returnType:`float`},toDecimal:{fn:e=>Kd(e),argTypes:[`string`],returnType:`int`},toRawJson:{fn:e=>qd(e),argTypes:[`serializable`],returnType:`string`}}}const Yd={h:36e11,m:6e10,s:1e9,ms:1e6,us:1e3,µs:1e3,ns:1};function Xd(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*Yd[a],n=n.slice(e[0].length)}return t?-r:r}function Zd(e){if(e===0)return`0s`;let t=!1,n=e;n<0&&(t=!0,n=-n);let r;return r=n<Yd.us?`${Math.floor(n)}ns`:n<Yd.ms?Qd(n,Yd.us,3,`µs`):n<Yd.s?Qd(n,Yd.ms,6,`ms`):$d(n),t?`-${r}`:r}function Qd(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 $d(e){let t=Math.floor(e/Yd.h);e-=t*Yd.h;let n=Math.floor(e/Yd.m);e-=n*Yd.m;let r=Math.floor(e/Yd.s),i=e-r*Yd.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 ef(e){return e*Yd.s}function tf(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 nf(e,t){let n=t().getTime()-tf(e).getTime();return Zd(Math.round(n/1e3)*1e9)}const rf=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],af=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],of=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],sf=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`];function cf(e){return e<10?`0${e}`:String(e)}function lf(e){return e<10?`00${e}`:e<100?`0${e}`:String(e)}function uf(e){return e<10?` ${e}`:String(e)}function df(e){let t=e>=0?`+`:`-`,n=Math.abs(e);return`${t}${cf(Math.floor(n/60))}${cf(n%60)}`}function ff(e){let t=e>=0?`+`:`-`,n=Math.abs(e);return`${t}${cf(Math.floor(n/60))}:${cf(n%60)}`}function pf(e){return`${e>=0?`+`:`-`}${cf(Math.floor(Math.abs(e)/60))}`}function mf(e){return e===0?`Z`:df(e)}function hf(e){return e===0?`Z`:ff(e)}function gf(e){return e===0?`Z`:pf(e)}function _f(e,t,n){let r=e*1e6,i=String(r).padStart(9,`0`).slice(0,t);return n?i.replace(/0+$/,``):i}const vf=[[`.000000000`,e=>`.${_f(e.ms,9,!1)}`],[`.999999999`,e=>{let t=_f(e.ms,9,!0);return t?`.${t}`:``}],[`.000000`,e=>`.${_f(e.ms,6,!1)}`],[`.999999`,e=>{let t=_f(e.ms,6,!0);return t?`.${t}`:``}],[`.000`,e=>`.${lf(e.ms)}`],[`.999`,e=>{let t=lf(e.ms).replace(/0+$/,``);return t?`.${t}`:``}],[`January`,e=>rf[e.month-1]??`January`],[`Monday`,e=>of[e.weekday]??`Monday`],[`Z07:00`,e=>hf(e.offsetMinutes)],[`-07:00`,e=>ff(e.offsetMinutes)],[`Z0700`,e=>mf(e.offsetMinutes)],[`-0700`,e=>df(e.offsetMinutes)],[`2006`,e=>String(e.year)],[`Jan`,e=>af[e.month-1]??`Jan`],[`Mon`,e=>sf[e.weekday]??`Mon`],[`MST`,e=>e.tzAbbr],[`-07`,e=>pf(e.offsetMinutes)],[`Z07`,e=>gf(e.offsetMinutes)],[`15`,e=>cf(e.hour)],[`01`,e=>cf(e.month)],[`02`,e=>cf(e.day)],[`_2`,e=>uf(e.day)],[`03`,e=>cf(e.hour12)],[`04`,e=>cf(e.minute)],[`05`,e=>cf(e.second)],[`06`,e=>cf(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 yf(e,t){let n=``,r=0;for(;r<e.length;){let i=!1;for(let[a,o]of vf)if(e.startsWith(a,r)){n+=o(t),r+=a.length,i=!0;break}i||(n+=e[r++])}return n}const bf={year:`numeric`,month:`2-digit`,day:`2-digit`,weekday:`long`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hour12:!1};function xf(e){let t=new Map;for(let n of e)t.set(n.type,n.value);return t}const Sf=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`];function Cf(e,t){let n;try{new Intl.DateTimeFormat(`en-US`,{timeZone:t}),n=t}catch{n=`UTC`}let r=xf(new Intl.DateTimeFormat(`en-US`,{...bf,timeZone:n}).formatToParts(e)),i=parseInt(r.get(`hour`)??`0`,10)%24,a=xf(new Intl.DateTimeFormat(`en-US`,{timeZone:n,timeZoneName:`short`}).formatToParts(e)).get(`timeZoneName`)??n,o=wf(xf(new Intl.DateTimeFormat(`en-US`,{timeZone:n,timeZoneName:`shortOffset`}).formatToParts(e)).get(`timeZoneName`)??`GMT`),s=Sf.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 wf(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 Tf(){return Intl.DateTimeFormat().resolvedOptions().timeZone}function Ef(e,t){return yf(e,Cf(tf(t),Tf()))}function Df(e,t,n){return yf(e,Cf(tf(t),n))}function Of(e,t){let n=tf(t),r=Xd(e);return Number.isNaN(r)?n:new Date(n.getTime()+r/1e6)}function kf(e){if(typeof e==`string`){let t=parseInt(e,10);return Number.isNaN(t)?`0s`:Zd(ef(t))}return typeof e==`bigint`?Zd(ef(Number(e))):typeof e==`number`?Zd(ef(e)):`0s`}const Af=36e11*24*365,jf=36e11*24*30,Mf=36e11*24,Nf=36e11,Pf=6e10,Ff=1e9;function If(e){let t=Xd(String(e));if(Number.isNaN(t))return`0s`;let n=Math.abs(t);return n>Af?`${Math.floor(n/Af)}y`:n>jf?`${Math.floor(n/jf)}mo`:n>Mf?`${Math.floor(n/Mf)}d`:n>Nf?`${Math.floor(n/Nf)}h`:n>Pf?`${Math.floor(n/Pf)}m`:n>Ff?`${Math.floor(n/Ff)}s`:`0s`}function Lf(e){let t=Cf(tf(e),Tf());return`${t.year}-${String(t.month).padStart(2,`0`)}-${String(t.day).padStart(2,`0`)}`}function Rf(e,t){let n=Cf(tf(e),t);return`${n.year}-${String(n.month).padStart(2,`0`)}-${String(n.day).padStart(2,`0`)}`}function zf(e){return e()}const Bf=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],Vf=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`];function Hf(){return{year:2e3,month:1,day:1,hour:0,minute:0,second:0,ms:0,offsetMinutes:0,isPM:!1,hour12:!1}}function Uf(e,t,n){return[e.slice(t,t+n),t+n]}function Wf(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 Gf(e,t){for(let[n,r]of Bf.entries())if(e.startsWith(r,t))return[n+1,t+r.length];throw Error(`sprig toDate: expected month name at pos ${t}`)}function Kf(e,t){for(let[n,r]of Vf.entries())if(e.startsWith(r,t))return[n+1,t+r.length];throw Error(`sprig toDate: expected short month name at pos ${t}`)}function qf(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 Jf(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 Yf(e,t){if(e[t]===` `){let[n,r]=Wf(e,t+1,1,1);return[n,r]}return Wf(e,t,1,2)}function Xf(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]=Wf(e,i,2,2);i=o;let s=0;if(n&&e[i]===`:`){let[t,n]=Wf(e,i+1,2,2);s=t,i=n}else if(!n){let[t,n]=Wf(e,i,2,2);s=t,i=n}return[r*(a*60+s),i]}function Zf(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]=Wf(e,t+1,2,2);return[n*r*60,i]}return Xf(e,t,n)}function Qf(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 $f(e,t,n){let[r,i]=Uf(e,t,n),a=parseInt(r.padEnd(9,`0`),10);return[Math.round(a/1e6),i]}function ep(e,t,n,r){let i={...r};switch(e){case`January`:{let[e,r]=Gf(t,n);return i.month=e,[r,i]}case`Monday`:return[qf(t,n),i];case`Jan`:{let[e,r]=Kf(t,n);return i.month=e,[r,i]}case`Mon`:return[Jf(t,n),i];case`2006`:{let[e,r]=Wf(t,n,4,4);return i.year=e,[r,i]}case`06`:{let[e,r]=Wf(t,n,2,2);return i.year=e<70?2e3+e:1900+e,[r,i]}case`01`:{let[e,r]=Wf(t,n,2,2);return i.month=e,[r,i]}case`1`:{let[e,r]=Wf(t,n,1,2);return i.month=e,[r,i]}case`_2`:{let[e,r]=Yf(t,n);return i.day=e,[r,i]}case`02`:{let[e,r]=Wf(t,n,2,2);return i.day=e,[r,i]}case`2`:{let[e,r]=Wf(t,n,1,2);return i.day=e,[r,i]}case`15`:{let[e,r]=Wf(t,n,2,2);return i.hour=e,[r,i]}case`03`:{let[e,r]=Wf(t,n,2,2);return i.hour=e,i.hour12=!0,[r,i]}case`3`:{let[e,r]=Wf(t,n,1,2);return i.hour=e,i.hour12=!0,[r,i]}case`04`:{let[e,r]=Wf(t,n,2,2);return i.minute=e,[r,i]}case`4`:{let[e,r]=Wf(t,n,1,2);return i.minute=e,[r,i]}case`05`:{let[e,r]=Wf(t,n,2,2);return i.second=e,[r,i]}case`5`:{let[e,r]=Wf(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[Qf(t,n),i];case`-0700`:{let[e,r]=Xf(t,n,!1);return i.offsetMinutes=e,[r,i]}case`-07:00`:{let[e,r]=Xf(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]=Wf(t,n+1,2,2);return i.offsetMinutes=e*r*60,[a,i]}case`Z0700`:{let[e,r]=Zf(t,n,!1,!1);return i.offsetMinutes=e,[r,i]}case`Z07:00`:{let[e,r]=Zf(t,n,!0,!1);return i.offsetMinutes=e,[r,i]}case`Z07`:{let[e,r]=Zf(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]=$f(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]=$f(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]=$f(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 tp=`.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 np(e,t){let n=0,r=0,i=Hf();for(;n<e.length;){let a=!1;for(let o of tp)if(e.startsWith(o,n)){let[e,s]=ep(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 rp(e,t){return np(e,t)}function ip(e){return String(Math.floor(tf(e).getTime()/1e3))}function ap(e=()=>new Date){return{now:{fn:()=>zf(e),argTypes:[]},date:{fn:(e,t)=>Ef(e,t),argTypes:[`string`,`value`]},dateInZone:{fn:(e,t,n)=>Df(e,t,n),argTypes:[`string`,`value`,`string`]},dateModify:{fn:(e,t)=>Of(e,t),argTypes:[`string`,`value`]},htmlDate:{fn:e=>Lf(e),argTypes:[`value`]},htmlDateInZone:{fn:(e,t)=>Rf(e,t),argTypes:[`value`,`string`]},duration:{fn:e=>kf(e),argTypes:[`value`]},durationRound:{fn:e=>If(e),argTypes:[`value`]},toDate:{fn:(e,t)=>rp(e,t),argTypes:[`string`,`string`]},ago:{fn:t=>nf(t,e),argTypes:[`value`]},unixEpoch:{fn:e=>ip(e),argTypes:[`value`]}}}function op(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 sp(...e){for(let t of e)if(!op(t))return t}function cp(e,t){return op(t)?e:t}function lp(e){return JSON.parse(e)}function up(e,t,n){return Iu(n)?e:t}function dp(e){return JSON.stringify(e)??`null`}function fp(e){return JSON.stringify(e,null,2)??`null`}function pp(){return{default:{fn:(e,t)=>cp(e,t),argTypes:[`value`,`truthy`]},empty:{fn:e=>op(e),argTypes:[`truthy`]},coalesce:{fn:(...e)=>sp(...e),argTypes:[`truthy`]},ternary:{fn:(e,t,n)=>up(e,t,n),argTypes:[`value`,`value`,`truthy`]},fromJson:{fn:e=>lp(e),argTypes:[`string`]},toJson:{fn:e=>dp(e),argTypes:[`serializable`],returnType:`string`},toPrettyJson:{fn:e=>fp(e),argTypes:[`serializable`],returnType:`string`}}}function mp(...e){let t={};for(let n=0;n<e.length;n+=2)t[e[n]]=e[n+1];return t}function hp(e){if(e.kind!==`call`||e.name!==`dict`||e.args.length%2!=0)return null;let t=[];for(let[n,r]of e.args.entries()){if(r.kind!==`literal`||n%2==0&&typeof r.value!=`string`)return null;t.push(r.value)}return mp(...t)}function gp(e,t){return e[t]}function _p(e,t){return t in e}function vp(e){return Object.keys(e)}function yp(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 bp(e,...t){let n={...e};for(let e of t)Object.assign(n,e);return n}function xp(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 Sp(e,...t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function Cp(e,...t){let n=[];for(let r of t)e in r&&n.push(r[e]);return n}function wp(e,t,n){return e[t]=n,e}function Tp(e,t){return delete e[t],e}function Ep(e){return Object.values(e)}function Dp(){return{dict:{fn:(...e)=>mp(...e),argTypes:[`string`,`value`],argTypePattern:`alternating`},get:{fn:(e,t)=>gp(e,t),argTypes:[`dict`,`string`]},set:{fn:(e,t,n)=>wp(e,t,n),argTypes:[`dict`,`string`,`value`]},unset:{fn:(e,t)=>Tp(e,t),argTypes:[`dict`,`string`]},keys:{fn:e=>vp(e),argTypes:[`dict`]},values:{fn:e=>Ep(e),argTypes:[`dict`]},pluck:{fn:(e,...t)=>Cp(e,...t),argTypes:[`string`,`dict`]},pick:{fn:(e,...t)=>Sp(e,...t),argTypes:[`dict`,`string`]},omit:{fn:(e,...t)=>xp(e,...t),argTypes:[`dict`,`string`]},hasKey:{fn:(e,t)=>_p(e,t),argTypes:[`dict`,`string`]},merge:{fn:(e,...t)=>yp(e,...t),argTypes:[`dict`]},mergeOverwrite:{fn:(e,...t)=>bp(e,...t),argTypes:[`dict`]}}}new TextEncoder,new Map(Array.from(`ABCDEFGHIJKLMNOPQRSTUVWXYZ234567`).map((e,t)=>[e,t])),new TextDecoder,new TextEncoder,new TextDecoder,new TextEncoder;function Op(...e){for(let t of e)if(op(t))return!1;return!0}function kp(...e){for(let t of e)if(!op(t))return!0;return!1}function Ap(e,t){return[...e,t]}function jp(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 Mp(e){return e.filter(e=>!op(e))}function Np(...e){let t=[];for(let n of e)t.push(...n);return t}const Pp={line:0,column:0,offset:0};function Fp(e,t,n,r){return new Wl(e,t,n,r,Pp)}function Ip(...e){if(e.length<3)throw Fp(`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(!Rp(t))throw Fp(`dig`,e.length-1,`dict`,zp(t));for(let e=0;e<r.length;e++)if(typeof r[e]!=`string`)throw Fp(`dig`,e,`string`,zp(r[e]));return Lp(t,n,r,e.length)}function Lp(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(!Rp(a))throw Fp(`dig`,r-1,`dict at intermediate key`,zp(a));return Lp(a,t,n.slice(1),r)}function Rp(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Map)&&!(e instanceof Set)}function zp(e){return e===null?`null`:Array.isArray(e)?`array`:e instanceof Map?`Map`:e instanceof Set?`Set`:typeof e}function Bp(e){return e[0]}function Vp(e,t){return t.some(t=>Mu(t,e))}function Hp(e){return e.slice(0,-1)}function Up(e){return e[e.length-1]}function Wp(e){return Array.isArray(e)||typeof e==`string`?e.length:e instanceof Map||e instanceof Set?e.size:Object.keys(e).length}function Gp(...e){return e}function Kp(e,t){return[t,...e]}function qp(e){return e.slice(1)}function Jp(e){return[...e].reverse()}function Yp(e,t,n){let r=t===void 0?0:t,i=n===void 0?e.length:n;return e.slice(r,i)}function Xp(e){let t=[];for(let n of e)n!=null&&t.push(String(n));return t.sort()}function Zp(e){let t=[];for(let n of e)t.some(e=>Mu(e,n))||t.push(n);return t}function Qp(e,...t){return e.filter(e=>!t.some(t=>Mu(t,e)))}function $p(){return{list:{fn:(...e)=>Gp(...e),argTypes:[`value`]},first:{fn:e=>Bp(e),argTypes:[`list`]},last:{fn:e=>Up(e),argTypes:[`list`]},rest:{fn:e=>qp(e),argTypes:[`list`]},initial:{fn:e=>Hp(e),argTypes:[`list`]},len:{fn:e=>Wp(e),argTypes:[`sized`]},reverse:{fn:e=>Jp(e),argTypes:[`list`]},uniq:{fn:e=>Zp(e),argTypes:[`list`]},without:{fn:(e,...t)=>Qp(e,...t),argTypes:[`list`,`value`]},has:{fn:(e,t)=>Vp(e,t),argTypes:[`value`,`list`]},compact:{fn:e=>Mp(e),argTypes:[`list`]},slice:{fn:(e,t,n)=>Yp(e,t,n),argTypes:[`list`,`int`,`int`]},concat:{fn:(...e)=>Np(...e),argTypes:[`list`]},chunk:{fn:(e,t)=>jp(e,t),argTypes:[`int`,`list`]},prepend:{fn:(e,t)=>Kp(e,t),argTypes:[`list`,`value`]},append:{fn:(e,t)=>Ap(e,t),argTypes:[`list`,`value`]},sortAlpha:{fn:e=>Xp(e),argTypes:[`list`],returnType:`list`},push:{fn:(e,t)=>Ap(e,t),argTypes:[`list`,`value`]},tuple:{fn:(...e)=>Gp(...e),argTypes:[`value`]},dig:{fn:(...e)=>Ip(...e),argTypes:[`value`]},all:{fn:(...e)=>Op(...e),argTypes:[`truthy`],returnType:`bool`},any:{fn:(...e)=>kp(...e),argTypes:[`truthy`],returnType:`bool`}}}function em(...e){return e.reduce((e,t)=>e+t,0)}function tm(e){return e+1}function nm(e){return e+1}function rm(...e){return e.reduce((e,t)=>e+t,0)}function im(e){return Math.ceil(e)}function am(e,t){return Math.trunc(e/t)}function om(e,t){return e/t}function sm(e){return Math.floor(e)}function cm(...e){return e.reduce((e,t)=>t>e?t:e,-1/0)}function lm(...e){return e.reduce((e,t)=>Math.max(e,t),-1/0)}function um(...e){return e.reduce((e,t)=>t<e?t:e,1/0)}function dm(...e){return e.reduce((e,t)=>Math.min(e,t),1/0)}function fm(e,t){return e%t}function pm(...e){return e.reduce((e,t)=>e*t,1)}function mm(...e){return e.reduce((e,t)=>e*t,1)}function hm(e,t=0){let n=10**t;return Math.sign(e)*Math.round(Math.abs(e)*n)/n}function gm(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 _m(...e){let t=1;switch(e.length){case 0:return``;case 1:{let n=e[0];return n<1&&(t=-1),gm(1,n+t,t).join(` `)}case 2:{let t=e[0],n=e[1],r=n<t?-1:1;return gm(t,n+r,r).join(` `)}case 3:{let n=e[0],r=e[1],i=e[2];return i<n&&(t=-1,r>0)?``:gm(n,i+t,r).join(` `)}default:return``}}function vm(e,t){return e-t}function ym(e,t){return e-t}function bm(e){return gm(0,e,e<0?-1:1)}function xm(){return{add:{fn:(...e)=>em(...e),argTypes:[`int`]},sub:{fn:(e,t)=>vm(e,t),argTypes:[`int`,`int`]},mul:{fn:(...e)=>pm(...e),argTypes:[`int`]},div:{fn:(e,t)=>am(e,t),argTypes:[`int`,`int`]},mod:{fn:(e,t)=>fm(e,t),argTypes:[`int`,`int`]},min:{fn:(...e)=>um(...e),argTypes:[`int`]},max:{fn:(...e)=>cm(...e),argTypes:[`int`]},floor:{fn:e=>sm(e),argTypes:[`float`]},ceil:{fn:e=>im(e),argTypes:[`float`]},round:{fn:(e,t)=>hm(e,t),argTypes:[`float`,`int`]},addf:{fn:(...e)=>rm(...e),argTypes:[`float`]},subf:{fn:(e,t)=>ym(e,t),argTypes:[`float`,`float`]},mulf:{fn:(...e)=>mm(...e),argTypes:[`float`]},divf:{fn:(e,t)=>om(e,t),argTypes:[`float`,`float`]},add1:{fn:e=>tm(e),argTypes:[`int`]},add1f:{fn:e=>nm(e),argTypes:[`float`]},maxf:{fn:(...e)=>lm(...e),argTypes:[`float`]},minf:{fn:(...e)=>dm(...e),argTypes:[`float`]},biggest:{fn:(...e)=>cm(...e),argTypes:[`int`]},seq:{fn:(...e)=>_m(...e),argTypes:[`int`],returnType:`string`},until:{fn:e=>bm(e),argTypes:[`int`],returnType:`list`},untilStep:{fn:(e,t,n)=>gm(e,t,n),argTypes:[`int`,`int`,`int`],returnType:`list`}}}Array.from({length:95},(e,t)=>String.fromCharCode(t+32)).join(``);function Sm(e,t){return t.length<=e||e<4?t:`${t.slice(0,e-3)}...`}function Cm(e,t,n){return t<7||n.length<t||e<0||e>n.length-t+1?n:`...${n.slice(e,e+t-6)}...`}const q={Invalid:0,Number:1,UpperCase:2,Alphabet:3,Connector:4,Punct:5,Other:6},wm=/^[-_\s]$/,Tm=/^\p{P}$/u,Em=/^\p{L}$/u,Dm=/^\p{Lu}$/u,Om=/^\p{N}$/u;function km(e){return e!==void 0&&wm.test(e)}function Am(e){return e!==void 0&&Em.test(e)}function jm(e){return e!==void 0&&Dm.test(e)}function Mm(e){return e!==void 0&&Om.test(e)}function Nm(e){return e!==void 0&&Tm.test(e)}function Pm(e,t){if(t>=e.length)return{word:{wt:q.Invalid,text:``},next:t};let n=e[t],r=t+1;if(km(n)){for(;r<e.length&&km(e[r]);)r++;return{word:{wt:q.Connector,text:e.slice(t,r).join(``)},next:r}}if(Nm(n)){for(;r<e.length&&Nm(e[r]);)r++;return{word:{wt:q.Punct,text:e.slice(t,r).join(``)},next:r}}if(jm(n)){if(r>=e.length)return{word:{wt:q.UpperCase,text:n},next:r};if(jm(e[r])){let n=r;for(;n<e.length&&jm(e[n]);)n++;return n<e.length&&Am(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(Am(e[r])){let n=r+1;for(;n<e.length&&Am(e[n])&&!jm(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(Am(n)){for(;r<e.length&&Am(e[r])&&!jm(e[r]);)r++;return{word:{wt:q.Alphabet,text:e.slice(t,r).join(``)},next:r}}if(Mm(n)){for(;r<e.length&&Mm(e[r]);)r++;return{word:{wt:q.Number,text:e.slice(t,r).join(``)},next:r}}for(;r<e.length&&!km(e[r])&&!Am(e[r])&&!Mm(e[r])&&!Nm(e[r]);)r++;return{word:{wt:q.Other,text:e.slice(t,r).join(``)},next:r}}function Fm(e,t,n){if(t.wt!==q.UpperCase&&t.wt!==q.Connector){e.push(t.text);return}for(let r of t.text)km(r)?e.push(n):jm(r)?e.push(r.toLowerCase()):e.push(r)}function Im(e,t){if(e.length===0)return``;let n=Array.from(e),r=[],{word:i,next:a}=Pm(n,0);for(;a<n.length;){i.wt!==q.Connector&&Fm(r,i,t);let e=i,o=i;if({word:i,next:a}=Pm(n,a),e.wt===q.Number){for(;i.wt===q.Alphabet||i.wt===q.Number;)Fm(r,i,t),{word:i,next:a}=Pm(n,a);i.wt!==q.Invalid&&i.wt!==q.Punct&&i.wt!==q.Connector&&r.push(t);continue}if(e.wt===q.Connector){Fm(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}=Pm(n,a),i.wt!==q.Alphabet){Fm(r,s,t),i.wt!==q.Connector&&i.wt!==q.Punct&&r.push(t);continue}for(r.push(t),Fm(r,s,t);i.wt===q.Alphabet||i.wt===q.Number;)Fm(r,i,t),{word:i,next:a}=Pm(n,a);i.wt!==q.Invalid&&i.wt!==q.Connector&&i.wt!==q.Punct&&r.push(t)}return Fm(r,i,t),r.join(``).toLowerCase()}function Lm(e){if(e.length===0)return``;let t=Array.from(e),n=[],r=0,i=``;for(;r<t.length;){if(i=t[r],r++,!km(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++,km(i)&&km(e)){n.push(e);continue}km(e)?i=i.toUpperCase():(i=i.toLowerCase(),n.push(e))}return n.push(i),n.join(``)}function Rm(e){return Lm(e)}function zm(...e){return e.join(` `)}function Bm(e,t){return t.includes(e)}function Vm(e,t){return t.startsWith(e)}function Hm(e,t){return t.endsWith(e)}function Um(e,t){let n=` `.repeat(Math.max(0,e));return t.split(`
49
49
  `).map(e=>n+e).join(`
50
- `)}function Rm(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 zm(e,t){let n=[];for(let e of t){if(typeof e==`object`&&e)throw kp(`join`,2,`list of strings/primitives`,`list element of type ${Bm(e)}`);n.push(String(e))}return n.join(e)}function Bm(e){return Array.isArray(e)?`array`:e instanceof Map?`Map`:e instanceof Set?`Set`:`object`}function Vm(e){return Am(e,`-`)}function Hm(e){return e.toLowerCase()}function Um(e,t){return`\n${Lm(e,t)}`}function Wm(e){return e.replace(/\s+/g,``)}function Gm(e,t,n){return n===1?e:t}function Km(...e){return e.map(e=>`"${e}"`).join(` `)}function qm(e){return e.replace(/[\\.+*?()|[\]{}^$]/g,`\\$&`)}function Jm(e,t){return t.repeat(Math.max(0,e))}function Ym(e,t,n){return n.split(e).join(t)}function Xm(e){return Am(e,`_`)}function Zm(e,t){let n=t.split(e),r={};for(let e=0;e<n.length;e++)r[`_${e}`]=n[e];return r}function Qm(e,t){return t.split(e)}function $m(e,t,n){let r=eh(n,e,t),i={};for(let e=0;e<r.length;e++)i[`_${e}`]=r[e]??``;return i}function eh(e,t,n){if(n===0)return[];let r=t===``?Array.from(e):e.split(t);if(n<0||r.length<=n)return r;let i=r.slice(0,n-1),a=r.slice(n-1).join(t);return[...i,a]}function th(...e){return e.map(e=>`'${e}'`).join(` `)}function nh(e,t,n){let r=t<0||t>n.length?n.length:t,i=Math.min(Math.max(0,e),r);return n.slice(i,r)}function rh(e){let t=``;for(let n of e)ih(n)?t+=n.toLowerCase():ah(n)?t+=n.toUpperCase():t+=n;return t}function ih(e){return e!==e.toLowerCase()&&e===e.toUpperCase()}function ah(e){return e!==e.toUpperCase()&&e===e.toLowerCase()}function oh(e){return e.replace(/\b([a-zA-Z])/g,e=>e.toUpperCase())}function sh(e){return e.trim()}function ch(e,t){if(e.length===0)return t;let n=new Set([...e]),r=0;for(;r<t.length&&n.has(t[r]);)r+=1;let i=t.length;for(;i>r&&n.has(t[i-1]);)--i;return t.slice(r,i)}function lh(e,t){return t.startsWith(e)?t.slice(e.length):t}function uh(e,t){return t.endsWith(e)?t.slice(0,t.length-e.length):t}function dh(e,t){if(e<0){let n=-e;return n>=t.length?t:t.slice(t.length-n)}return e>=t.length?t:t.slice(0,e)}function fh(e){return e.replace(/\b([A-Z])/g,e=>e.toLowerCase())}function ph(e){return e.toUpperCase()}function mh(e,t){return hh(e,`
51
- `,t)}function hh(e,t,n){if(e<=0)return n;let r=[];for(let t of n.split(`
52
- `)){let n=``;for(let i of t.split(/\s+/))i.length!==0&&(n.length===0?n=i:n.length+1+i.length<=e?n+=` ${i}`:(r.push(n),n=i));n.length>0&&r.push(n)}return r.join(t)}function gh(e,t,n){return hh(e,t,n)}function _h(){return{abbrev:{fn:(e,t)=>gm(e,t),argTypes:[`int`,`string`]},abbrevboth:{fn:(e,t,n)=>_m(e,t,n),argTypes:[`int`,`int`,`string`]},camelcase:{fn:e=>Mm(e),argTypes:[`string`],returnType:`string`},cat:{fn:(...e)=>Nm(...e),argTypes:[`string`]},contains:{fn:(e,t)=>Pm(e,t),argTypes:[`string`,`string`]},hasPrefix:{fn:(e,t)=>Fm(e,t),argTypes:[`string`,`string`]},hasSuffix:{fn:(e,t)=>Im(e,t),argTypes:[`string`,`string`]},indent:{fn:(e,t)=>Lm(e,t),argTypes:[`int`,`string`]},initials:{fn:e=>Rm(e),argTypes:[`string`]},join:{fn:(e,t)=>zm(e,t),argTypes:[`string`,`list`]},kebabcase:{fn:e=>Vm(e),argTypes:[`string`],returnType:`string`},lower:{fn:e=>Hm(e),argTypes:[`string`]},nindent:{fn:(e,t)=>Um(e,t),argTypes:[`int`,`string`]},nospace:{fn:e=>Wm(e),argTypes:[`string`],returnType:`string`},plural:{fn:(e,t,n)=>Gm(e,t,n),argTypes:[`string`,`string`,`int`],returnType:`string`},quote:{fn:(...e)=>Km(...e),argTypes:[`string`]},regexQuoteMeta:{fn:e=>qm(e),argTypes:[`string`],returnType:`string`},repeat:{fn:(e,t)=>Jm(e,t),argTypes:[`int`,`string`]},replace:{fn:(e,t,n)=>Ym(e,t,n),argTypes:[`string`,`string`,`string`]},snakecase:{fn:e=>Xm(e),argTypes:[`string`],returnType:`string`},split:{fn:(e,t)=>Zm(e,t),argTypes:[`string`,`string`]},splitList:{fn:(e,t)=>Qm(e,t),argTypes:[`string`,`string`]},splitn:{fn:(e,t,n)=>$m(e,t,n),argTypes:[`string`,`int`,`string`],returnType:`dict`},squote:{fn:(...e)=>th(...e),argTypes:[`string`]},substr:{fn:(e,t,n)=>nh(e,t,n),argTypes:[`int`,`int`,`string`]},swapcase:{fn:e=>rh(e),argTypes:[`string`],returnType:`string`},title:{fn:e=>oh(e),argTypes:[`string`]},trim:{fn:e=>sh(e),argTypes:[`string`]},trimAll:{fn:(e,t)=>ch(e,t),argTypes:[`string`,`string`]},trimPrefix:{fn:(e,t)=>lh(e,t),argTypes:[`string`,`string`]},trimSuffix:{fn:(e,t)=>uh(e,t),argTypes:[`string`,`string`]},trunc:{fn:(e,t)=>dh(e,t),argTypes:[`int`,`string`]},untitle:{fn:e=>fh(e),argTypes:[`string`]},upper:{fn:e=>ph(e),argTypes:[`string`]},wrap:{fn:(e,t)=>mh(e,t),argTypes:[`int`,`string`]},wrapWith:{fn:(e,t,n)=>gh(e,t,n),argTypes:[`int`,`string`,`string`]}}}function vh(e){return e}function yh(e,t,n){return n===void 0?ac+rc(e)+`.`+rc(t):bh(n)}function bh(e){return ac+rc(e)}function xh(e,t){return e+`.`+t}function Sh(e){return e+`.page`}const Ch=[`closeOnPick`,`paged`,`key`,`distribution`],wh=e=>Ch.includes(e),Th=`"closeOnPick" (bool, default false), "paged" (bool, default true), "key" (string, accordion grouping), "distribution" (one of ${Ec.map(e=>`"${e}"`).join(`, `)}; default "van-der-corput")`;function Eh(e){for(let t of Object.keys(e))if(!wh(t))throw Error(`unknown {{ menu }} option "${t}" — the options dict takes ${Th}`);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&&!Dc(r))throw Error(`{{ menu }} option "distribution" must be one of: ${Ec.join(`, `)}; got ${JSON.stringify(r)}`);return{closeOnPick:t(`closeOnPick`,!1),paged:t(`paged`,!0),key:n,distribution:kc(r)}}const Dh=`menu`,Oh=`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`,kh=e=>e.kind===`call`&&e.name===`dict`,Ah=e=>e.kind===`literal`&&typeof e.value!=`object`,jh=e=>Go(``,e,2)===void 0;function Mh(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&&kh(i)?i:void 0,o=a===void 0?r:r.slice(0,-1);if(o.some(kh))return t(`whose options (dict …) is not its last argument — ${Oh}`);if(i!==void 0&&a===void 0&&!Ah(i)&&jh(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=Go(`whose trigger`,o.length,2);if(s!==void 0)return t(`${s} — ${Oh}`);let c=a===void 0?{}:lp(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=Eh(c)}catch(e){return t(`with invalid options — ${e.message}`)}let u=l.key;if(u!==void 0){let e=uc(u);if(e!==void 0)return t(`whose accordion key "${u}" lands in the reserved "${e}" namespace — a key is collapsed to an identifier (${JSON.stringify(u)} becomes "${bh(u)}"), so it would share one open-state key with the synthesized accordion that owns that namespace instead of grouping only your own menus. Name the group without the reserved prefix`)}return{kind:`ok`,apply:n.value,options:l}}function Nh(e){let t=yd({fromString:e=>e});try{return t.parse(e).referencedCalls().filter(e=>e.name===Dh).map(Mh)}catch{return`parse-failed`}}function Ph(e){let t=yd({fromString:e=>e});try{return t.parse(e).referencedFunctions().has(Dh)}catch{return!1}}function Fh(e,t,n){e.issues.push({path:t,message:n,line:W(e.source,[`root`])})}function Ih(e,t){dc(e,t,ac,`{{ menu }} helpers`);for(let[n,r]of Object.entries(t.helpers??{}))Ph(r)&&e.issues.push({path:`helpers.${n}`,message:`helper "${n}" uses {{ menu }}, but a menu must live directly in a segment template — its identity is derived from the segment it sits in, which a shared helper does not have. Inline the {{ menu }} call into each segment that needs it.`,line:W(e.source,[`helpers`,n])});let n=t.segments??{};for(let[t,r]of Object.entries(n))for(let n of[`bg`,`fg`,`when`]){let i=r[n];typeof i==`string`&&Ph(i)&&Fh(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 qa(Ro(t.root)))typeof n.when==`string`&&Ph(n.when)&&Fh(e,`root`,`a layout node's "when" predicate uses {{ menu }} — a menu is only valid in a segment's "template", not a node predicate. Move it into a segment.`);let r=new Set,i={},a=new Set,o=new Map;for(let[t,{template:s}]of Object.entries(n)){if(s===void 0||!Ph(s))continue;let n=Nh(s);if(n!==`parse-failed`)for(let s of n){if(s.kind===`issue`){Fh(e,`segments.${t}`,`segment "${t}" has a {{ menu }} ${s.message}.`);continue}let{apply:n,options:c}=s;if(n===``){Fh(e,`segments.${t}`,`segment "${t}" has a {{ menu }} with an empty apply-action name — an empty member aliases the absent-state sentinel ("") so the menu would render open before any click. Name the apply action.`);continue}let l=vh(n);if(l===`closed`){Fh(e,`segments.${t}`,`segment "${t}" has a {{ menu }} whose apply action is named "${Uo}", which collides with the menu's closed-state sentinel and leaves it unopenable. Rename the action.`);continue}let u=yh(t,n,c.key),d=Sh(u),f=c.key===void 0?`ind${t}${n}`:`key${c.key}`,p=[u,d].find(e=>{let t=o.get(e);return t!==void 0&&t!==f});if(p!==void 0){Fh(e,`segments.${t}`,`two {{ menu }} disclosures normalize to the same state key ("${p}") but were declared differently — distinct names that differ only by non-alphanumeric characters (e.g. "a-b" vs "a_b") collapse to one key and would silently share open-state. Rename so they don't collide.`);continue}o.set(u,f),o.set(d,f);let m=xh(u,l);if(a.has(m)){Fh(e,`segments.${t}`,`two {{ menu }} disclosures resolve to the same identity ("${m}") — ${c.key===void 0?`a segment cannot contain two menus over the same apply action "${n}"`:`menus sharing key "${c.key}" must have distinct apply actions`}.`);continue}a.add(m),r.add(u),i[m]=$o(u,l)}}if(r.size===0)return;let s={};for(let e of r){s[e]=Qo(e,Uo);let t=Sh(e);s[t]={kind:`state`,key:t,default:`0`},i[t]={set:t,int:!0}}t.variables={...t.variables??{},...s},t.actions={...t.actions??{},...i}}const Lh=`edit.mode`,Rh=`edit.toggle`,zh=`open`,Bh={variable:Lh,key:Lh,member:zh},Vh=Yo(Bh);function Hh(e){let t=yd({fromString:e=>e});try{return t.parse(e).referencedCalls().some(e=>e.name===`action`&&e.args[0]===`edit.toggle`)}catch{return!1}}function Uh(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`&&Hh(e))return!0;return!1}function Wh(e,t){if(dc(e,t,oc,`edit mode`),!Uh(t))return;let n={[Lh]:Qo(Lh,Uo)},r={[Rh]:$o(Lh,zh)};t.variables={...t.variables??{},...n},t.actions={...t.actions??{},...r}}function Gh(e){return e.op===`remove`?`remove:${e.target}`:`insert:${e.segment}:${e.anchor}:${e.relation}`}function Kh(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 qh(e){let t=new Set;for(let n of qa(e))n.kind===`segment`&&t.add(n.name);return t}const Jh=`default`,Yh={};function Xh(e){return[...new Set([Jh,...Object.keys(e)])]}function Zh(e,t,n){return Mi(void 0,e,t,Jh,n)}function Qh(e,t){let n={[Jh]:Yh,...e}[t];if(n===void 0)throw Error(`Preset "${t}" is not declared in this config — effectivePresetName collapses unknown names to "${Jh}", which always resolves; a miss here means a raw name reached this function without going through that resolution`);return n}function $h(e,t){let n=Qh(e.presets,t).root??No;return{node:Lo(zo(n,e.root)),path:Bo(n)?`presets.${t}.root`:`root`}}function eg(e,t){return{...e.globals,...Qh(e.presets,t).globals}}const tg=/^segments\.([^.]+)\.palette$/,ng=/^presets\.(.+)\.root$/;function rg(e){return`presets.${e}.root`}function ig(e){if(_s(e))return{scope:`globals`,field:e};let t=tg.exec(e);if(t)return{scope:`segment-palette`,segment:t[1]};let n=ng.exec(e);return n?{scope:`preset-root`,preset:n[1]}:null}function ag(e){return e.scope===`globals`?[`globals`,e.field]:[`segments`,e.segment,`palette`]}const og=`open`;function sg(e,t,n,r){let i={variable:e,key:e,member:og};return r.variables[e]=Qo(e,Uo),r.actions[e]=$o(e,og),r.segments[e]={template:Zo(e,`(?)`,`✕`),...cg(n)},Jo(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 cg(e){let[t,...n]=e;return t===void 0?{}:{when:Yo(t,...n)}}const lg={help:[`-h`,`--help`],version:[`-V`,`--version`]},ug=[`+ inserts here`,`- removes the one left of it`,`↺ undoes edits`],dg=[`☐ this session only`,`☑ default for every session`],fg=`
50
+ `)}function Wm(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 Gm(e,t){let n=[];for(let e of t){if(typeof e==`object`&&e)throw Fp(`join`,2,`list of strings/primitives`,`list element of type ${Km(e)}`);n.push(String(e))}return n.join(e)}function Km(e){return Array.isArray(e)?`array`:e instanceof Map?`Map`:e instanceof Set?`Set`:`object`}function qm(e){return Im(e,`-`)}function Jm(e){return e.toLowerCase()}function Ym(e,t){return`\n${Um(e,t)}`}function Xm(e){return e.replace(/\s+/g,``)}function Zm(e,t,n){return n===1?e:t}function Qm(...e){return e.map(e=>`"${e}"`).join(` `)}function $m(e){return e.replace(/[\\.+*?()|[\]{}^$]/g,`\\$&`)}function eh(e,t){return t.repeat(Math.max(0,e))}function th(e,t,n){return n.split(e).join(t)}function nh(e){return Im(e,`_`)}function rh(e,t){let n=t.split(e),r={};for(let e=0;e<n.length;e++)r[`_${e}`]=n[e];return r}function ih(e,t){return t.split(e)}function ah(e,t,n){let r=oh(n,e,t),i={};for(let e=0;e<r.length;e++)i[`_${e}`]=r[e]??``;return i}function oh(e,t,n){if(n===0)return[];let r=t===``?Array.from(e):e.split(t);if(n<0||r.length<=n)return r;let i=r.slice(0,n-1),a=r.slice(n-1).join(t);return[...i,a]}function sh(...e){return e.map(e=>`'${e}'`).join(` `)}function ch(e,t,n){let r=t<0||t>n.length?n.length:t,i=Math.min(Math.max(0,e),r);return n.slice(i,r)}function lh(e){let t=``;for(let n of e)uh(n)?t+=n.toLowerCase():dh(n)?t+=n.toUpperCase():t+=n;return t}function uh(e){return e!==e.toLowerCase()&&e===e.toUpperCase()}function dh(e){return e!==e.toUpperCase()&&e===e.toLowerCase()}function fh(e){return e.replace(/\b([a-zA-Z])/g,e=>e.toUpperCase())}function ph(e){return e.trim()}function mh(e,t){if(e.length===0)return t;let n=new Set([...e]),r=0;for(;r<t.length&&n.has(t[r]);)r+=1;let i=t.length;for(;i>r&&n.has(t[i-1]);)--i;return t.slice(r,i)}function hh(e,t){return t.startsWith(e)?t.slice(e.length):t}function gh(e,t){return t.endsWith(e)?t.slice(0,t.length-e.length):t}function _h(e,t){if(e<0){let n=-e;return n>=t.length?t:t.slice(t.length-n)}return e>=t.length?t:t.slice(0,e)}function vh(e){return e.replace(/\b([A-Z])/g,e=>e.toLowerCase())}function yh(e){return e.toUpperCase()}function bh(e,t){return xh(e,`
51
+ `,t)}function xh(e,t,n){if(e<=0)return n;let r=[];for(let t of n.split(`
52
+ `)){let n=``;for(let i of t.split(/\s+/))i.length!==0&&(n.length===0?n=i:n.length+1+i.length<=e?n+=` ${i}`:(r.push(n),n=i));n.length>0&&r.push(n)}return r.join(t)}function Sh(e,t,n){return xh(e,t,n)}function Ch(){return{abbrev:{fn:(e,t)=>Sm(e,t),argTypes:[`int`,`string`]},abbrevboth:{fn:(e,t,n)=>Cm(e,t,n),argTypes:[`int`,`int`,`string`]},camelcase:{fn:e=>Rm(e),argTypes:[`string`],returnType:`string`},cat:{fn:(...e)=>zm(...e),argTypes:[`string`]},contains:{fn:(e,t)=>Bm(e,t),argTypes:[`string`,`string`]},hasPrefix:{fn:(e,t)=>Vm(e,t),argTypes:[`string`,`string`]},hasSuffix:{fn:(e,t)=>Hm(e,t),argTypes:[`string`,`string`]},indent:{fn:(e,t)=>Um(e,t),argTypes:[`int`,`string`]},initials:{fn:e=>Wm(e),argTypes:[`string`]},join:{fn:(e,t)=>Gm(e,t),argTypes:[`string`,`list`]},kebabcase:{fn:e=>qm(e),argTypes:[`string`],returnType:`string`},lower:{fn:e=>Jm(e),argTypes:[`string`]},nindent:{fn:(e,t)=>Ym(e,t),argTypes:[`int`,`string`]},nospace:{fn:e=>Xm(e),argTypes:[`string`],returnType:`string`},plural:{fn:(e,t,n)=>Zm(e,t,n),argTypes:[`string`,`string`,`int`],returnType:`string`},quote:{fn:(...e)=>Qm(...e),argTypes:[`string`]},regexQuoteMeta:{fn:e=>$m(e),argTypes:[`string`],returnType:`string`},repeat:{fn:(e,t)=>eh(e,t),argTypes:[`int`,`string`]},replace:{fn:(e,t,n)=>th(e,t,n),argTypes:[`string`,`string`,`string`]},snakecase:{fn:e=>nh(e),argTypes:[`string`],returnType:`string`},split:{fn:(e,t)=>rh(e,t),argTypes:[`string`,`string`]},splitList:{fn:(e,t)=>ih(e,t),argTypes:[`string`,`string`]},splitn:{fn:(e,t,n)=>ah(e,t,n),argTypes:[`string`,`int`,`string`],returnType:`dict`},squote:{fn:(...e)=>sh(...e),argTypes:[`string`]},substr:{fn:(e,t,n)=>ch(e,t,n),argTypes:[`int`,`int`,`string`]},swapcase:{fn:e=>lh(e),argTypes:[`string`],returnType:`string`},title:{fn:e=>fh(e),argTypes:[`string`]},trim:{fn:e=>ph(e),argTypes:[`string`]},trimAll:{fn:(e,t)=>mh(e,t),argTypes:[`string`,`string`]},trimPrefix:{fn:(e,t)=>hh(e,t),argTypes:[`string`,`string`]},trimSuffix:{fn:(e,t)=>gh(e,t),argTypes:[`string`,`string`]},trunc:{fn:(e,t)=>_h(e,t),argTypes:[`int`,`string`]},untitle:{fn:e=>vh(e),argTypes:[`string`]},upper:{fn:e=>yh(e),argTypes:[`string`]},wrap:{fn:(e,t)=>bh(e,t),argTypes:[`int`,`string`]},wrapWith:{fn:(e,t,n)=>Sh(e,t,n),argTypes:[`int`,`string`,`string`]}}}function wh(e){return e}function Th(e,t,n){return n===void 0?dc+lc(e)+`.`+lc(t):Eh(n)}function Eh(e){return dc+lc(e)}function Dh(e,t){return e+`.`+t}function Oh(e){return e+`.page`}const kh=[`closeOnPick`,`paged`,`key`,`distribution`],Ah=e=>kh.includes(e),jh=`"closeOnPick" (bool, default false), "paged" (bool, default true), "key" (string, accordion grouping), "distribution" (one of ${Mc.map(e=>`"${e}"`).join(`, `)}; default "van-der-corput")`;function Mh(e){for(let t of Object.keys(e))if(!Ah(t))throw Error(`unknown {{ menu }} option "${t}" — the options dict takes ${jh}`);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&&!Nc(r))throw Error(`{{ menu }} option "distribution" must be one of: ${Mc.join(`, `)}; got ${JSON.stringify(r)}`);return{closeOnPick:t(`closeOnPick`,!1),paged:t(`paged`,!0),key:n,distribution:Fc(r)}}const Nh=`menu`,Ph=`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`,Fh=e=>e.kind===`call`&&e.name===`dict`,Ih=e=>e.kind===`literal`&&typeof e.value!=`object`,Lh=e=>Zo(``,e,2)===void 0;function Rh(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&&Fh(i)?i:void 0,o=a===void 0?r:r.slice(0,-1);if(o.some(Fh))return t(`whose options (dict …) is not its last argument — ${Ph}`);if(i!==void 0&&a===void 0&&!Ih(i)&&Lh(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=Zo(`whose trigger`,o.length,2);if(s!==void 0)return t(`${s} — ${Ph}`);let c=a===void 0?{}:hp(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=Mh(c)}catch(e){return t(`with invalid options — ${e.message}`)}let u=l.key;if(u!==void 0){let e=gc(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 "${Eh(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 zh(e){let t=Td({fromString:e=>e});try{return t.parse(e).referencedCalls().filter(e=>e.name===Nh).map(Rh)}catch{return`parse-failed`}}function Bh(e){let t=Td({fromString:e=>e});try{return t.parse(e).referencedFunctions().has(Nh)}catch{return!1}}function Vh(e,t,n){e.issues.push({path:t,message:n,line:W(e.source,[`root`])})}function Hh(e,t){_c(e,t,dc,`{{ menu }} helpers`);for(let[n,r]of Object.entries(t.helpers??{}))Bh(r)&&e.issues.push({path:`helpers.${n}`,message:`helper "${n}" uses {{ menu }}, but a menu must live directly in a segment template — its identity is derived from the segment it sits in, which a shared helper does not have. Inline the {{ menu }} call into each segment that needs it.`,line:W(e.source,[`helpers`,n])});let n=t.segments??{};for(let[t,r]of Object.entries(n))for(let n of[`bg`,`fg`,`when`]){let i=r[n];typeof i==`string`&&Bh(i)&&Vh(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 $a(Wo(t.root)))typeof n.when==`string`&&Bh(n.when)&&Vh(e,`root`,`a layout node's "when" predicate uses {{ menu }} — a menu is only valid in a segment's "template", not a node predicate. Move it into a segment.`);let r=new Set,i={},a=new Set,o=new Map;for(let[t,{template:s}]of Object.entries(n)){if(s===void 0||!Bh(s))continue;let n=zh(s);if(n!==`parse-failed`)for(let s of n){if(s.kind===`issue`){Vh(e,`segments.${t}`,`segment "${t}" has a {{ menu }} ${s.message}.`);continue}let{apply:n,options:c}=s;if(n===``){Vh(e,`segments.${t}`,`segment "${t}" has a {{ menu }} with an empty apply-action name — an empty member aliases the absent-state sentinel ("") so the menu would render open before any click. Name the apply action.`);continue}let l=wh(n);if(l===`closed`){Vh(e,`segments.${t}`,`segment "${t}" has a {{ menu }} whose apply action is named "${Yo}", which collides with the menu's closed-state sentinel and leaves it unopenable. Rename the action.`);continue}let u=Th(t,n,c.key),d=Oh(u),f=c.key===void 0?`ind${t}${n}`:`key${c.key}`,p=[u,d].find(e=>{let t=o.get(e);return t!==void 0&&t!==f});if(p!==void 0){Vh(e,`segments.${t}`,`two {{ menu }} disclosures normalize to the same state key ("${p}") but were declared differently — distinct names that differ only by non-alphanumeric characters (e.g. "a-b" vs "a_b") collapse to one key and would silently share open-state. Rename so they don't collide.`);continue}o.set(u,f),o.set(d,f);let m=Dh(u,l);if(a.has(m)){Vh(e,`segments.${t}`,`two {{ menu }} disclosures resolve to the same identity ("${m}") — ${c.key===void 0?`a segment cannot contain two menus over the same apply action "${n}"`:`menus sharing key "${c.key}" must have distinct apply actions`}.`);continue}a.add(m),r.add(u),i[m]=as(u,l)}}if(r.size===0)return;let s={};for(let e of r){s[e]=is(e,Yo);let t=Oh(e);s[t]={kind:`state`,key:t,default:`0`},i[t]={set:t,int:!0}}t.variables={...t.variables??{},...s},t.actions={...t.actions??{},...i}}const Uh=`edit.mode`,Wh=`edit.toggle`,Gh=`open`,Kh={variable:Uh,key:Uh,member:Gh},qh=ts(Kh);function Jh(e){let t=Td({fromString:e=>e});try{return t.parse(e).referencedCalls().some(e=>e.name===`action`&&e.args[0]===`edit.toggle`)}catch{return!1}}function Yh(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`&&Jh(e))return!0;return!1}function Xh(e,t){if(_c(e,t,fc,`edit mode`),!Yh(t))return;let n={[Uh]:is(Uh,Yo)},r={[Wh]:as(Uh,Gh)};t.variables={...t.variables??{},...n},t.actions={...t.actions??{},...r}}function Zh(e){return e.op===`remove`?`remove:${e.target}`:`insert:${e.segment}:${e.anchor}:${e.relation}`}function Qh(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 $h(e){let t=new Set;for(let n of $a(e))n.kind===`segment`&&t.add(n.name);return t}const eg=`default`,tg={};function ng(e){return[...new Set([eg,...Object.keys(e)])]}function rg(e,t,n){return Mi(void 0,e,t,eg,n)}function ig(e,t){let n={[eg]:tg,...e}[t];if(n===void 0)throw Error(`Preset "${t}" is not declared in this config — effectivePresetName collapses unknown names to "${eg}", which always resolves; a miss here means a raw name reached this function without going through that resolution`);return n}function ag(e,t){let n=ig(e.presets,t).root??zo;return{node:Uo(Go(n,e.root)),path:Ko(n)?`presets.${t}.root`:`root`}}function og(e,t){return{...e.globals,...ig(e.presets,t).globals}}const sg=/^segments\.([^.]+)\.palette$/,cg=/^presets\.(.+)\.root$/;function lg(e){return`presets.${e}.root`}function ug(e){if(Cs(e))return{scope:`globals`,field:e};let t=sg.exec(e);if(t)return{scope:`segment-palette`,segment:t[1]};let n=cg.exec(e);return n?{scope:`preset-root`,preset:n[1]}:null}function dg(e){return e.scope===`globals`?[`globals`,e.field]:[`segments`,e.segment,`palette`]}const fg=`open`;function pg(e,t,n,r){let i={variable:e,key:e,member:fg};return r.variables[e]=is(e,Yo),r.actions[e]=as(e,fg),r.segments[e]={template:rs(e,`(?)`,`✕`),...mg(n)},es(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 mg(e){let[t,...n]=e;return t===void 0?{}:{when:ts(t,...n)}}const hg={help:[`-h`,`--help`],version:[`-V`,`--version`]},gg=[`+ inserts here`,`- removes the one left of it`,`↺ undoes edits`],_g=[`☐ this session only`,`☑ default for every session`],vg=`
53
53
  cc-candybar - Beautiful powerline statusline for Claude Code
54
54
 
55
55
  Usage: cc-candybar [options]
56
56
 
57
57
  Standalone Commands:
58
- ${lg.help.join(`, `).padEnd(25)}Show this help
59
- ${lg.version.join(`, `).padEnd(25)}Print the version of this runtime (cc-candybar <version>)
58
+ ${hg.help.join(`, `).padEnd(25)}Show this help
59
+ ${hg.version.join(`, `).padEnd(25)}Print the version of this runtime (cc-candybar <version>)
60
60
 
61
61
  Debugging:
62
62
  CC_CANDYBAR_DEBUG=1 Enable debug logging for troubleshooting
@@ -69,15 +69,16 @@ Configuration:
69
69
 
70
70
  Every bar carries a settings menu, whatever your config says — no config
71
71
  needed, and writing your own \`root\` cannot delete it. Click
72
- it on the bar (${Wo} by default; globals.menuGlyph changes it) for
73
- quick actions, preset switching, edit mode, and a config menu
74
- of clickable theme/look/style/wrap/padding controls. The \`persist?\`
75
- checkbox there chooses where a change lands: ${dg.join(`, `)}.
72
+ it on the bar (${Xo} by default; globals.menuGlyph changes it) for
73
+ quick actions, preset switching, edit mode, and a config menu of
74
+ clickable theme/look/style/charset/colour-depth/wrap/padding controls. The
75
+ \`persist?\` checkbox there chooses where a change lands:
76
+ ${_g.join(`, `)}.
76
77
  Its 🧰 tools row holds 🩺 doctor: click it to check your setup, and click a
77
78
  failed row's [fix] to repair it (the same checks \`cc-candybar doctor\` runs).
78
79
 
79
80
  Anywhere the bar shows (?), clicking it reveals these same instructions
80
- in place. In edit mode: ${ug.join(`, `)}.
81
+ in place. In edit mode: ${gg.join(`, `)}.
81
82
 
82
83
  Subcommands:
83
84
  install One-shot setup: stages the runtime (native render
@@ -115,35 +116,35 @@ Config tooling:
115
116
  config [--json] The effective merged config. (All three query the
116
117
  running daemon; none spawn one.)
117
118
 
118
- `,pg=`preset.customized`,mg=`{{ and ${Xo(Bh)} .${pg} }}`,hg=lc;function gg(e){return`${oc}addable.${e}`}function _g(e){let t=Object.keys(e.segments).filter(e=>!hg(e)),n=new Map;for(let r of Xh(e.presets)){let{node:i}=$h(e,r),a=qh(i);n.set(gg(r),{members:t.filter(e=>!a.has(e))})}return n}function vg(e,t,n,r){let i=`${oc}${e}.remove.${rc(n)}`,a=`${oc}${e}.removeSeg.${rc(n)}`;return r.actions[i]={persist:t,removeSegment:n},r.segments[a]={template:`{{ action "${i}" "-" }}`,when:Vh},{kind:`segment`,name:a}}function yg(e,t,n,r,i,a,o){let s=`${oc}${e}.insert.${n}`,c=`${oc}${e}.insertSeg.${n}`;o.actions[s]={persist:t,insertSegmentFrom:r,anchor:i,relation:a};let l=vh(s),u=yh(c,s,void 0),d=Sh(u),f=xh(u,l);return o.variables[u]=Qo(u,Uo),o.variables[d]={kind:`state`,key:d,default:`0`},o.actions[f]=$o(u,l),o.actions[d]={set:d,int:!0},o.segments[c]={template:`{{ menu "${s}" "+" "✕" }}`,when:Vh},{kind:`segment`,name:c}}function bg(e,t,n,r,i,a){let o=[],s=e.children.reduce((e,t,n)=>t.kind===`segment`&&!hg(t.name)?n:e,-1),c=e=>bg(e,t,n,r,i,a);for(let[l,u]of e.children.entries()){if(u.kind===`container`){o.push(c(u));continue}let d=Ka(u,c);if(hg(u.name)){o.push(d);continue}let f={kind:`container`,direction:`horizontal`,children:[yg(t,n,String(a.n++),r,u.name,`before`,i),d,vg(t,n,u.name,i),...l===s?[yg(t,n,String(a.n++),r,u.name,`after`,i)]:[]]};o.push(e.direction===`vertical`?{kind:`container`,direction:`horizontal`,children:[f],...u.when!==void 0&&{when:u.when}}:f)}return{...e,children:o}}function xg(e,t,n,r,i,a){let o=`${oc}${n}.resetLayout`,s=`${oc}${n}.customized`;i.actions[o]={reset:r},i.ensured[pg]={kind:`input`,path:pg,type:`boolean`,default:!1};let c=qo(t);return i.segments[s]={template:`{{ action "${o}" "↺ ${c} customized" }}`,when:mg},{kind:`container`,direction:`vertical`,children:[{kind:`segment`,name:s},Sg(e,a)]}}function Sg(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),Sg(n,t)]}:{...e,children:[...e.children,t]}}function Cg(e,t,n,r){let{node:i}=$h(e,t),a=rg(t),o=gg(t),s=rc(t);return xg(bg(i,s,a,o,n,{n:0}),t,s,a,n,r)}function wg(e){if(!(`edit.toggle`in e.actions))return e;let t={variables:{},ensured:{},actions:{},segments:{}},n=sg(`${oc}help`,ug,[Bh],t),r={...e.presets};for(let i of Xh(e.presets)){let a=Cg(e,i,t,n);r[i]={...Qh(e.presets,i),root:a}}return{...e,variables:{...t.ensured,...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:r}}const Tg={socket:`TMUX`,pane:`TMUX_PANE`,truecolor:`CLAUDE_CODE_TMUX_TRUECOLOR`};function Eg(e){let t=e[Tg.socket]??``,n=e[Tg.pane]??``;if(t===``||n===``)return null;let r=e[Tg.truecolor]??``;return{socket:t.split(`,`)[0],pane:n,truecolor:r===``?null:r}}const Dg=Tg.truecolor,Og=[{name:`tmuxTruecolor`,label:`tmux truecolor`,probe:({tmux:e,claudeSettingsEnv:t})=>{switch(e.kind){case`unreported`:return{ok:!1,reason:"the client reported no tmux facts — re-run `cc-candybar install` to stage a current client"};case`outside`:return{ok:!0};case`inside`:{if(e.termfeatures.kind===`failed`)return{ok:!1,reason:`tmux could not be asked: ${e.termfeatures.reason}`};if(!e.termfeatures.value.includes(`RGB`)||e.hint.truecolor!==null)return{ok:!0};let n=t[Dg];return typeof n==`string`&&n!==``?{ok:!1,reason:`${Dg} is set in ~/.claude/settings.json — restart Claude Code to apply`}:{ok:!1,reason:`Claude Code renders the bar in 256 colours inside tmux`,fix:{kind:`claude-settings-env`,name:Dg,value:`1`}}}}}}];function kg(e){return Og.map(t=>({check:t,verdict:t.probe(e)}))}function Ag(e){return Og.find(t=>t.name===e)}function jg(e){let t=`settings.doctor.${e}.`;return{verdict:`${t}verdict`,reason:`${t}reason`,fixable:`${t}fixable`}}function Mg(e){return e.flatMap(({check:e,verdict:t})=>{let n=jg(e.name);return t.ok?[{key:n.verdict,value:`ok`},{key:n.reason,value:``},{key:n.fixable,value:U}]:[{key:n.verdict,value:`failed`},{key:n.reason,value:t.reason},{key:n.fixable,value:t.fix===void 0?U:Ki}]})}const Ng={copySession:{copy:`{{ .session.id }}`},openProject:{open:`{{ .project_dir }}`},openTranscript:{open:`{{ .transcript_path }}`}};function Pg(e){let t=t=>`${e}${t}`;return{template:`{{ action "${t(`copySession`)}" "⎘ id" }} {{ action "${t(`openProject`)}" "↗ proj" }} {{ action "${t(`openTranscript`)}" "↗ log" }}{{ if ne .git.repoUrl "" }} {{ link .git.repoUrl "↗ repo" }}{{ end }}`,actions:Object.fromEntries(Object.entries(Ng).map(([t,n])=>[`${e}${t}`,n]))}}const Fg=`${sc}menu`,Ig=zh,Lg=`${sc}edit`,Rg=`${sc}close`,zg=`${sc}toolbar`,Bg=Pg(sc),Vg=`${sc}persist`,Hg=`${sc}config`,Ug=Vg,Wg={variable:Fg,key:Fg,member:Ig},Gg={variable:Hg,key:Hg,member:Ig},Kg=`${sc}tools`,qg={variable:Kg,key:Kg,member:Ig},Jg=`${sc}doctor`,Yg=`${Jg}.run`,Xg=e=>`${Jg}.fix.${e}`,Zg=e=>`${Jg}.${e}`,Qg=`${sc}help.persist`,$g=`${sc}pickers`,e_=[`{{ themePreview }}`],t_=[{name:`preset`,sessionKey:`preset`,configKey:`preset`,effectiveVar:`preset.effective`,glyph:`▦`,domain:`presets`,beneath:[`{{ layoutPreview }}`]}],n_=[{name:`theme`,sessionKey:`theme`,configKey:`palette`,effectiveVar:`theme.effective`,glyph:`🎨`,domain:`themes`,beneath:e_},{name:`look`,sessionKey:`look`,configKey:`look`,effectiveVar:`look.effective`,glyph:`◐`,domain:`looks`,beneath:e_},{name:`style`,sessionKey:`style`,configKey:`style`,effectiveVar:`style.effective`,glyph:`✦`,domain:`styles`,beneath:[]}],r_={name:`wrap`,sessionKey:`autoWrap`,configKey:`autoWrap`},i_={name:`padding`,sessionKey:`padding`,configKey:`padding`},a_=`${sc}${r_.name}`,o_=`${sc}${i_.name}`,s_=[...t_,...n_];new Set([...s_,r_,i_].flatMap(e=>[e.sessionKey,e.configKey]));const c_=e=>`${sc}${e}`,l_=e=>`${sc}apply.${e}`,u_=e=>`${sc}reset.${e}`,d_=e=>`${sc}carousel.${e}`,f_=(e,t)=>`${d_(e)}.${t}`,p_=bh($g),m_=e=>({variable:p_,key:p_,member:vh(l_(e.name))});function h_(e){return Jo(c_(e.name),m_(e),{kind:`container`,direction:`vertical`,children:[{kind:`segment`,name:d_(e.name)},...e.beneath.map((t,n)=>({kind:`segment`,name:f_(e.name,n)}))]},`drop`)}function g_(e){return e===Fg}function __(e){let t={kind:`segment`,name:Fg};if(e.kind===`container`&&e.direction===`vertical`){let[n,...r]=e.children;return e.when===void 0&&n!==void 0?{...e,children:[__(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 v_(e){return y_(e)>0?e:__(e)}function y_(e){let t=0;for(let n of qa(e))n.kind===`segment`&&g_(n.name)&&(t+=1);return t}function b_(e,t=!1){let n=t||e.when!==void 0;return e.kind===`segment`?n&&g_(e.name)||e.opens!==void 0&&b_(e.opens.body,!0):e.children.some(e=>b_(e,n))}function x_(e,t){return e.kind===`segment`?g_(e.name)?Jo(e.name,Wg,{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:zg},{kind:`segment`,name:Vg},t,...t_.map(h_),Jo(Hg,Gg,{kind:`container`,direction:`horizontal`,children:[...n_.map(h_),{kind:`segment`,name:a_},{kind:`segment`,name:o_}]},`drop`),Jo(Kg,qg,{kind:`container`,direction:`vertical`,children:[{kind:`segment`,name:Jg},...Og.map(e=>({kind:`segment`,name:Zg(e.name)}))]},`drop`),{kind:`segment`,name:Lg}]},`inline`):e:S_(e,t)}function S_(e,t){return{...e,children:e.children.map(e=>x_(e,t))}}function C_(e){let t={variables:{[Fg]:Qo(Fg,Uo)},actions:{[Fg]:$o(Fg,Ig),[Hg]:$o(Hg,Ig),[Kg]:$o(Kg,Ig),[Yg]:{doctor:`run`},[Rg]:{set:Wg.key,to:Uo},[Lg]:{do:[Rh,Rg]},...Bg.actions,[Vg]:{set:Ug,cycle:[U,Ki]}},segments:{[Fg]:{template:Zo(Fg,e,`❌`)},[zg]:{template:Bg.template},[Vg]:{template:`{{ action "${Vg}" "☐ persist?" "☑ persist?" }}`},[Hg]:{template:Zo(Hg,`⚙ config ▸`,`⚙ config ▾`)},[Kg]:{template:Zo(Kg,`🧰 tools ▸`,`🧰 tools ▾`)},[Jg]:{template:`{{ action "${Yg}" "🩺 doctor" }}`},[a_]:{template:`{{ action "${l_(`wrap`)}" "wrap: on" "wrap: off" }} {{ action "${u_(`wrap`)}" "↺" }}`},[o_]:{template:`{{ action "${l_(`padding`)}.down" "◀" }} padding {{ .padding.effective }} {{ action "${l_(`padding`)}.up" "▶" }} {{ action "${u_(`padding`)}" "↺" }}`},[Lg]:{template:`{{ action "${Lg}" "✎ edit" "✎ done" }}`}}};return t.variables[Ug]={kind:`state`,key:Ug,default:U},t.variables[Hg]=Qo(Hg,Uo),t.variables[Kg]=Qo(Kg,Uo),T_(t),w_(t),{artifacts:t,help:sg(Qg,dg,[Wg],t)}}function w_(e){for(let t of Og){let n=jg(t.name),r=Xg(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[Zg(t.name)]={when:`{{ ne .${n.verdict} "" }}`,template:`{{ if eq .${n.verdict} "ok" }}✓ ${t.label}{{ else }}✗ ${t.label} — {{ .${n.reason} }}{{ if eq .${n.fixable} "${Ki}" }} {{ action "${r}" "[fix]" }}{{ end }}{{ end }}`}}}function T_(e){for(let t of s_){let n=l_(t.name);e.actions[n]={set:t.sessionKey,persist:t.configKey,persistWhen:Ug,from:t.domain},e.actions[u_(t.name)]={reset:t.configKey},E_(t,e)}e.actions[l_(r_.name)]={set:r_.sessionKey,persist:r_.configKey,persistWhen:Ug,cycle:[...qi]},e.actions[u_(r_.name)]={reset:r_.configKey};for(let t of[-1,1])e.actions[`${l_(i_.name)}.${t<0?`down`:`up`}`]={set:i_.sessionKey,persist:i_.configKey,persistWhen:Ug,...Ji,by:t};e.actions[u_(i_.name)]={reset:i_.configKey}}function E_(e,t){let n=l_(e.name),r=m_(e),i=xh(r.key,r.member);t.variables[r.key]=Qo(r.key,Uo),t.actions[i]=$o(r.key,r.member),t.segments[c_(e.name)]={template:`${e.glyph} {{ .${e.effectiveVar} }} ${Zo(i,`▸`,`▾`)} {{ action "${u_(e.name)}" "↺" }}`},t.segments[d_(e.name)]={template:`{{ carousel "${n}" }}`},e.beneath.forEach((n,r)=>{t.segments[f_(e.name,r)]={template:n}})}function D_(e){e.variables[Lh]=Qo(Lh,Uo),e.actions[Rh]=$o(Lh,zh)}const O_=`session.id`;function k_(e){return Object.prototype.hasOwnProperty.call(e.variables,O_)}function A_(e){if(!k_(e))return e;let{artifacts:t,help:n}=C_(e.globals.menuGlyph??`🍫`);D_(t);let r={...e.presets};for(let t of Xh(e.presets)){let{node:i}=$h(e,t);r[t]={...Qh(e.presets,t),root:x_(v_(i),n)}}return{...e,variables:{...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:r}}const j_=[`set`,`persist`,`copy`,`open`,`reset`,`undo`,`redo`,`doctor`,`do`],M_=`persistWhen`;function N_(e){return M_ in e}function P_(e){return N_(e)?`to`in e?[{set:e.set,to:e.to},{persist:e.persist,to:e.to}]:`from`in e?[{set:e.set,from:e.from},{persist:e.persist,from:e.from}]:`cycle`in e?[{set:e.set,cycle:e.cycle},{persist:e.persist,cycle:e.cycle}]:[{set:e.set,min:e.min,max:e.max,by:e.by},{persist:e.persist,min:e.min,max:e.max,by:e.by}]:[e]}function F_(e){return`from`in e||`int`in e||`insertSegmentFrom`in e}function I_(e){return`set`in e}function L_(e){return`persist`in e}function R_(e){return`reset`in e}function z_(e){return`undo`in e}function B_(e){return`redo`in e}function V_(e){return`doctor`in e}function H_(e,t){if(t===void 0)return{};if(!so(t))return J(e,`actions`,`actions must be an object, got ${co(t)}`),{};let n=Object.create(null);for(let[r,i]of Object.entries(t)){let t=U_(e,`actions.${r}`,i);t!==null&&(n[r]=t)}return n}function J(e,t,n){e.issues.push({path:t,message:n,line:W(e.source,t.split(`.`))})}function U_(e,t,n){if(!so(n))return J(e,t,`${t} must be an action object, got ${co(n)}`),null;if(`persistWhen`in n)return Sv(e,t,n,`dual`,yv);let r=j_.filter(e=>e in n);return r.length===1?W_[r[0]](e,t,n):(J(e,t,`action must declare exactly one of: ${j_.join(`, `)}${r.length>1?` (found: ${r.join(`, `)})`:``}`),null)}const W_={set:(e,t,n)=>Sv(e,t,n,`set`,_v),persist:(e,t,n)=>Sv(e,t,n,`persist`,vv),copy:G_(`copy`),open:G_(`open`),reset:K_,undo:q_(`undo`),redo:q_(`redo`),doctor:J_,do:Y_};function G_(e){return(t,n,r)=>{for(let i of Object.keys(r))i!==e&&J(t,`${n}.${i}`,`Unknown key "${i}" on a ${e} action. Expected only: ${e}`);let i=no(t,n,r,e);return i===null?null:{[e]:i}}}function K_(e,t,n){for(let r of Object.keys(n))r!==`reset`&&J(e,`${t}.${r}`,`Unknown key "${r}" on a reset action. Expected only: reset`);let r=X_(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}}function q_(e){return(t,n,r)=>{for(let i of Object.keys(r))i!==e&&J(t,`${n}.${i}`,`Unknown key "${i}" on a ${e} action. Expected only: ${e}`);return r[e]===!0?{[e]:!0}:(J(t,`${n}.${e}`,`${e} must be the literal true (it takes no key — it steps the history of the session's config file), got ${G(r[e])}`),null)}}function J_(e,t,n){let r=n.doctor,i=r===`run`?[`doctor`]:[`doctor`,`check`];for(let r of Object.keys(n))i.includes(r)||J(e,`${t}.${r}`,`Unknown key "${r}" on a doctor action. Expected only: ${i.join(`, `)}`);if(r!==`run`&&r!==`fix`)return J(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`||Ag(a)===void 0?(J(e,`${t}.check`,`doctor fix must name a check (have: ${Og.map(e=>e.name).join(`, `)}), got ${G(a)}`),null):{doctor:`fix`,check:a}}function Y_(e,t,n){for(let r of Object.keys(n))r!==`do`&&J(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===``)?(J(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 X_(e,t,n,r,i,a){let o=no(e,t,r,n);if(o===null)return null;let s=`${t}.${n}`;return o===``?(J(e,s,i),null):o.includes(`/`)?(J(e,s,a(o)),null):o}const Z_={set:[[`set`,`the SessionState key to write`]],persist:[[`persist`,`the config globals field to write`]],dual:[[`set`,`the SessionState key written while persistWhen is off`],[`persist`,`the config globals field written while persistWhen is on`],[M_,`the SessionState key whose boolean value chooses the destination`]]};function Q_(e,t,n,r){let i={},a=Z_[r],o=!0;for(let[r,s]of a){if(!(r in n)){J(e,t,`${r} is required here (${s}) — a dual-destination action declares ${a.map(([e])=>e).join(`, `)} together, plus one value source`),o=!1;continue}let c=X_(e,t,r,n,`${r} key must be non-empty (${s})`,e=>`${r} key "${e}" contains "/" — keys must be slash-free`);if(c===null){o=!1;continue}i[r]=c}return o?i:null}function $_(e){return e===`set`?`set-state`:e===`persist`?`set-config`:`set-state/set-config`}const ev={to:Cv(`set`)},tv={to:Cv(`persist`)},nv={from:wv(`set`)},rv={from:wv(`persist`)},iv={min:kv(),max:kv(),by:kv()},av={int:Ev()},ov={cycle:Tv(`set`)},sv={to:Cv(`dual`)},cv={from:wv(`dual`)},lv={cycle:Tv(`dual`)},uv={cycle:Tv(`persist`)},dv={removeSegment:Dv(`removeSegment`)},fv={insertSegment:Dv(`insertSegment`),anchor:Dv(`anchor`),relation:Ov()},pv={insertSegmentFrom:wv(`persist`),anchor:Dv(`anchor`),relation:Ov()},mv={ok:e=>e.min<e.max,issue:e=>({field:`min`,message:`min (${e.min}) must be less than max (${e.max})`})},hv={ok:e=>e.by!==0,issue:()=>({field:`by`,message:`by must be a non-zero integer (the per-click increment; negative steps down)`})};function gv(e,t,n=[],r){let i=Object.keys(t),a=r??i,o=Z_[e].map(([e])=>e),s=(e,n,r)=>uo(e,t,n,r),c=Eo(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?yo(s,...n):s}}const _v=[gv(`set`,ev),gv(`set`,nv),gv(`set`,iv,[mv,hv]),gv(`set`,av),gv(`set`,ov)],vv=[gv(`persist`,tv),gv(`persist`,rv),gv(`persist`,iv,[mv,hv]),gv(`persist`,uv),gv(`persist`,dv),gv(`persist`,fv,[],[`insertSegment`]),gv(`persist`,pv,[],[`insertSegmentFrom`])],yv=[gv(`dual`,sv),gv(`dual`,cv),gv(`dual`,iv,[mv,hv]),gv(`dual`,lv)];function bv(e){let t=[`"to" (a literal value)`,`"from" (an option domain — a registered domain name like "themes"/"styles"/"looks", or an inline array of literal values)`,`"min"/"max"/"by" (a bounded step)`];return e===`set`&&t.push(`"int" (an unbounded integer cursor)`),t.push(`"cycle" (an enumerated domain stepped in order)`),e===`persist`&&t.push(`"removeSegment" (remove a named segment from the layout)`,`"insertSegment"/"anchor"/"relation" (insert a named segment before/after an existing one)`,`"insertSegmentFrom"/"anchor"/"relation" (insert a segment PICKED from an option domain before/after an existing one)`),t}function xv(e){let t=bv(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 Sv(e,t,n,r,i){let a=Q_(e,t,n,r),o=i.filter(e=>e.detect.some(e=>e in n));if(o.length!==1)return J(e,t,`${xv(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)||J(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 Cv(e){let t=$_(e);return{required:!0,json:{type:`string`},parse:(n,r,i,a)=>X_(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 wv(e){let t=$_(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===``){J(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){J(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===``)){J(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){J(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){J(n,s,`${i} array members must be unique — a duplicated value would render the same picker option twice`);return}return r}J(n,s,`${i} must be a domain name (a string) or an inline domain (an array of strings), got ${G(o)}`)}}}function Tv(e){let t=$_(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`)){J(n,s,`cycle must be an array of strings (the enumerated values a click steps through), got ${co(o)}`);return}let c=o;if(c.length<2){J(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){J(n,s,`cycle members must be non-empty — an empty value cannot be delivered on the ${t} wire`);return}if(u.length>0){J(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){J(n,s,`cycle members must be unique — the successor of a duplicated member is ambiguous`);return}return c}}}function Ev(){return{required:!0,json:{const:!0},parse:(e,t,n,r)=>{if(r[n]!==!0){J(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 Dv(e){return{required:!0,json:{type:`string`},parse:(t,n,r,i)=>{let a=no(t,n,i,r);if(a===null)return;let o=`${n}.${r}`;if(a===``){J(t,o,`${e} must be non-empty (a segment name)`);return}if(a.includes(`/`)||a.includes(`:`)){J(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 Ov(){return{required:!0,json:{enum:[`before`,`after`]},parse:(e,t,n,r)=>{let i=r[n];if(i!==`before`&&i!==`after`){J(e,`${t}.${n}`,`relation must be "before" or "after", got ${G(i)}`);return}return i}}}function kv(){return{required:!0,json:{type:`integer`},parse:(e,t,n,r)=>{let i=r[n];if(typeof i!=`number`||!Number.isInteger(i)){J(e,`${t}.${n}`,`${n} must be an integer, got ${G(i)}`);return}return i}}}const Av={noun:`look key`,fields:{hueShift:So(),chromaScale:So({min:0}),lightnessScale:So(),lightnessShift:So()}};function jv(e,t){if(!so(t))return e.issues.push({path:`looks`,message:`looks must be an object mapping look names to adaptation objects, got ${co(t)}`,line:W(e.source,[`looks`])}),{};let n={};for(let[r,i]of Object.entries(t)){if(r===``||r.includes(`/`)){e.issues.push({path:`looks.${r}`,message:`look name ${JSON.stringify(r)} must be non-empty and slash-free — a look picker writes the name on the set-state wire, which rejects empty values and splits on "/"`,line:W(e.source,[`looks`,r])});continue}let t=lo(e,Av,`looks.${r}`,i);t!==null&&(n[r]={...En,...t})}return n}const Mv={noun:`preset key`,fields:{root:{required:!1,json:{$ref:`#/definitions/RootFragment`},parse:(e,t,n,r)=>r[n]===void 0?void 0:Tl(e,`${t}.${n}`,r[n])},globals:{required:!1,json:ms(),parse:(e,t,n,r)=>r[n]===void 0?void 0:ps(e,`${t}.${n}`,r[n])}}};function Nv(e,t){if(!so(t))return e.issues.push({path:`presets`,message:`presets must be an object mapping preset names to config fragments, got ${co(t)}`,line:W(e.source,[`presets`])}),{};let n={};for(let[r,i]of Object.entries(t)){if(r===``||r.includes(`/`)||/[\n\r]/.test(r)){e.issues.push({path:`presets.${r}`,message:`preset name ${JSON.stringify(r)} must be non-empty, slash-free, and newline-free — a preset picker writes the name on the set-state wire (which rejects empty values and splits on "/"), and edit mode splices it into a synthesized template string`,line:W(e.source,[`presets`,r])});continue}let t=lo(e,Mv,`presets.${r}`,i);t!==null&&(n[r]=t)}return n}function Pv(e,t){if(t===void 0)return{};if(!so(t))return e.issues.push({path:`helpers`,message:`helpers must be an object, got ${co(t)}`,line:W(e.source,[`helpers`])}),{};let n=Object.create(null);for(let[r,i]of Object.entries(t)){if(typeof i!=`string`){e.issues.push({path:`helpers.${r}`,message:`helpers.${r} must be a string template body, got ${G(i)}`,line:W(e.source,[`helpers`,r])});continue}n[r]=i}return n}const Fv=new Map,Iv=new Map;function Lv(e){let t=Rv(e);if(t===null)throw Error(`Palette "${e}" (resolved "${Di(e)}") did not resolve in the theme registry — allowed names and the registry are inconsistent`);return t}function Rv(e){let t=Di(e),n=Fv.get(t);if(n!==void 0)return n;let r=rr(t);return r===null?null:(Fv.set(t,r),r)}function zv(e,t){let n=`${e.name} ${t.hueShift} ${t.chromaScale} ${t.lightnessScale} ${t.lightnessShift}`,r=Iv.get(n);if(r!==void 0)return r;let i=dr(e,t);return Iv.set(n,i),i}function Bv(e){let t=Rv(e);return t===null?null:{kind:`decided`,name:e,value:t}}function Vv(e,t){let n=Bv(e);return n===null?(t(`globals.palette rendered "${Oi}": "${e}" names no installed theme`),Uv()):n}function Hv(e,t,n){return Pi(e,t,n,Uv(),Bv)}function Uv(){return Bv(Oi)}function Wv(e){return Fi(Hv(void 0,null,e),()=>Oi,Uv).value}const Gv=new Map;function Kv(e,t,n){Gv.set(e,{permanent:!0,resolve:t,paletteOf:n})}Kv(`themes`,()=>ji(),e=>Lv(e)),Kv(`styles`,()=>Bi),Kv(`charsets`,()=>Ui),Kv(`colorCompatibilities`,()=>Wi);function qv(e){return new Map([[`looks`,{members:Object.keys(e.looks),paletteOf:(t,n)=>zv(n,e.looks[t])}],[`presets`,{members:Xh(e.presets)}]])}function Jv(e){return[...new Set([...Gv.keys(),...e.keys()])]}function Yv(e,t){if(typeof e!=`string`)return{members:e};let n=t.get(e);if(n)return n;let r=Gv.get(e);if(r)return{members:r.resolve(),paletteOf:r.paletteOf};throw Error(`unknown option domain "${e}" (have: ${Jv(t).join(`, `)})`)}const Xv=/{{([\s\S]*?)}}/g,Zv=/"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|`[^`]*`/g,Qv=/(?<![A-Za-z0-9_)])\.([A-Za-z_][\w]*(?:\.[A-Za-z_][\w]*)*)/g;function $v(e){let t=new Set,n;for(Xv.lastIndex=0;(n=Xv.exec(e))!==null;){let e=n[1].replace(Zv,``),r;for(Qv.lastIndex=0;(r=Qv.exec(e))!==null;)t.add(r[1])}return t}const ey=/\baction\s+$/;function ty(e){let t=new Set;Xv.lastIndex=0;let n;for(;(n=Xv.exec(e))!==null;){let e=n[1],r=0,i;for(Zv.lastIndex=0;(i=Zv.exec(e))!==null;)ey.test(e.slice(r,i.index))&&t.add(i[0].slice(1,-1)),r=i.index+i[0].length}return t}const ny=/\b(picker|menu|carousel)\s+$/;function ry(e){let t=new Set;Xv.lastIndex=0;let n;for(;(n=Xv.exec(e))!==null;){let e=n[1],r=0,i=0,a;for(Zv.lastIndex=0;(a=Zv.exec(e))!==null;){let n=ny.exec(e.slice(r,a.index));n!==null&&(i=n[1]===`picker`?2:1),i>0&&(t.add(a[0].slice(1,-1)),i--),r=a.index+a[0].length}}return t}function iy(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}const ay={gitTaculous:`gitaculous`};function oy(e,t){let n=new Map;for(let e of Object.keys(t)){let t=rc(e),r=n.get(t);r?r.push(e):n.set(t,[e])}for(let[t,r]of n)r.length<2||e.issues.push({path:`presets`,message:`preset names ${r.map(e=>JSON.stringify(e)).join(` and `)} both collapse to the same synthesis identifier "${t}" — edit mode's synthesized reset affordance would silently steal one preset's action for the other. Rename one.`,line:W(e.source,[`presets`])})}function sy(e,t){t.globals.look!==void 0&&!Ni(t.globals.look)&&!Object.prototype.hasOwnProperty.call(t.looks,t.globals.look)&&e.issues.push({path:`globals.look`,message:`globals.look "${t.globals.look}" does not match any declared look (have: ${Object.keys(t.looks).join(`, `)})`,line:W(e.source,[`globals`,`look`])}),t.globals.preset!==void 0&&!Object.prototype.hasOwnProperty.call(t.presets,t.globals.preset)&&e.issues.push({path:`globals.preset`,message:`globals.preset "${t.globals.preset}" does not match any declared preset (have: ${Object.keys(t.presets).join(`, `)})`,line:W(e.source,[`globals`,`preset`])}),oy(e,t.presets);let n=qv(t);for(let[r,i]of Object.entries(t.actions))!(`set`in i)||!(`from`in i)||typeof i.from!=`string`||Jv(n).includes(i.from)||e.issues.push({path:`actions.${r}.from`,message:`actions.${r} from: references unknown option domain "${i.from}" (have: ${Jv(n).join(`, `)})`,line:W(e.source,[`actions`,r,`from`])});for(let[n,r]of Object.entries(t.actions)){if(!N_(r))continue;let i=r[M_];fy(t,i)||e.issues.push({path:`actions.${n}.${M_}`,message:`actions.${n} ${M_}: "${i}" is not a declared state key — a dual action's selector must name a { kind: "state", key: "${i}" } variable, or the destination can never change`,line:W(e.source,[`actions`,n,M_])})}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&&F_(o)?`"${i}" takes its value from the template (from/int/insertSegmentFrom), so it can only be the first member — only the first is bound the region's display`:void 0:`"${i}" is listed twice — each member fires once per click`;s!==void 0&&e.issues.push({path:`actions.${n}.do`,message:`actions.${n} do: ${s}`,line:W(e.source,[`actions`,n,`do`])})});for(let[n,r]of Object.entries(t.actions)){let i=`persist`in r?r.persist:`reset`in r?r.reset:null;if(i===null)continue;let a=`persist`in r?`persist`:`reset`,o=ig(i);if(o===null){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" is not a config globals field (have: ${vs().join(`, `)}), a "segments.<name>.palette" target, or a "presets.<name>.root" target`,line:W(e.source,[`actions`,n,a])});continue}let s=cy.filter(e=>e in r);if(o.scope!==`preset-root`&&s.length>0){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" is not a "presets.<name>.root" target — ${s.map(e=>`"${e}"`).join(`/`)} is a tree op and applies only to one`,line:W(e.source,[`actions`,n,a])});continue}if(o.scope===`preset-root`){ly(e,t,n,a,i,o.preset,r);continue}if(o.scope===`segment-palette`){if(!Object.prototype.hasOwnProperty.call(t.segments,o.segment)){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" names segment "${o.segment}" which is not declared (have segments: ${Object.keys(t.segments).join(`, `)})`,line:W(e.source,[`actions`,n,a])});continue}`min`in r&&e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" is a segment palette target and cannot use a bounded stepper (min/max/by) — use "to", "from", or "cycle" instead`,line:W(e.source,[`actions`,n,a])})}}let r=my(t),i=k_(t),a=Object.entries(t.segments).filter(([,e])=>Ph(e.template)).map(([e])=>e),o=(t,n,r)=>{y_(t)>1&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${Fg}" ${y_(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}),b_(t)&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${Fg}" 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 qa(t))e.kind===`segment`&&i.set(e.name,(i.get(e.name)??0)+1);for(let t of a)(i.get(t)??0)>1&&e.issues.push({path:n,message:`segment "${t}" hosts a {{ menu }} and is placed in the layout more than once — a menu's open-state is keyed by segment name, so the copies would share one state (clicking one would toggle both). Give each placement its own named segment.`,line:r})};function s(e,t=!1){return e.kind===`segment`?!1:t&&e.distribution!==void 0||e.children.some(n=>s(n,t||Ga[e.direction]===`cell`))}let c=(n,a,o)=>{for(let s of qa(n))if(s.when!==void 0&&vy(e,`${a}.when`,s.when,r,{line:o}),s.kind===`segment`){if(g_(s.name)){i||e.issues.push({path:a,message:`${a} places the global settings menu anchor "${Fg}", but this config declares no "${O_}" variable — the menu is a click surface and every click composes a URL from "${O_}", so it is not synthesized for a config without it. Declare a "${O_}" variable (any config merged onto the bundled default inherits one) or remove the anchor placement.`,line:o});continue}if(!Object.prototype.hasOwnProperty.call(t.segments,s.name)){let t=ay[s.name],n=t===void 0?``:` (the built-in segment "${s.name}" was renamed to "${t}" — update this reference)`;e.issues.push({path:a,message:`${a} entry "${s.name}" does not match any declared segment${n}`,line:o})}}},l=yy(e.source);c(Lo(t.root),l,W(e.source,[l]));for(let[n,r]of Object.entries(t.presets)){if(r.root===void 0)continue;let t=`presets.${n}.root`,i=W(e.source,[`presets`,n,`root`]);c(Ro(r.root),t,i)}let u=new Map([[`root`,Lo(t.root)]]);for(let e of Xh(t.presets)){let{node:n,path:r}=$h(t,e);u.set(r,n)}for(let[t,n]of u)o(n,t,W(e.source,t.split(`.`)));for(let[n,i]of Object.entries(t.variables))gy(e,`variables.${n}`,i,r);for(let[n,i]of Object.entries(t.segments)){if(i.vars)for(let[t,a]of Object.entries(i.vars))gy(e,`segments.${n}.vars.${t}`,a,r,n);for(let a of[`template`,`bg`,`fg`,`when`]){let o=i[a];if(typeof o==`string`){vy(e,`segments.${n}.${a}`,o,r,{segCtx:n});for(let r of ty(o))Object.prototype.hasOwnProperty.call(t.actions,r)||e.issues.push({path:`segments.${n}.${a}`,message:`${a} references unknown action "${r}"`,line:W(e.source,[`segments`,n,a])});for(let r of ry(o))Object.prototype.hasOwnProperty.call(t.actions,r)||e.issues.push({path:`segments.${n}.${a}`,message:`${a} references unknown action "${r}" (in a picker, menu or carousel)`,line:W(e.source,[`segments`,n,a])})}}}for(let[n,i]of Object.entries(t.variables))_y(e,`variables.${n}`,i,r);for(let[n,i]of Object.entries(t.segments))if(i.vars)for(let[t,a]of Object.entries(i.vars))_y(e,`segments.${n}.vars.${t}`,a,r,n);(dy(t)||py(t))&&!Object.prototype.hasOwnProperty.call(t.variables,`session.id`)&&e.issues.push({path:`variables.session.id`,message:`state reads and action set-writes require a global "session.id" variable (segment-local declarations do not satisfy this — declareState/set-state both read the global box; conventionally { kind: "input", path: "session_id" })`,line:W(e.source,[`variables`])})}const cy=[`removeSegment`,`insertSegment`,`insertSegmentFrom`];function ly(e,t,n,r,i,a,o){let s=`actions.${n}.${r}`,c=W(e.source,[`actions`,n,r]);if(!Xh(t.presets).includes(a)){e.issues.push({path:s,message:`actions.${n}: "${i}" names preset "${a}" which is not declared (have: ${Xh(t.presets).join(`, `)})`,line:c});return}if(r===`reset`)return;let l=`removeSegment`in o,u=`insertSegment`in o,d=`insertSegmentFrom`in o;if(!l&&!u&&!d){e.issues.push({path:s,message:`actions.${n}: "${i}" is a "presets.<name>.root" target and can only be paired with "removeSegment", "insertSegment", or "insertSegmentFrom" (not "to"/"from"/"cycle"/bounded — those have no meaning as a tree op)`,line:c});return}let f=e=>!Object.prototype.hasOwnProperty.call(t.segments,e);l&&`removeSegment`in o&&f(o.removeSegment)&&e.issues.push({path:s,message:`actions.${n}: removeSegment "${o.removeSegment}" is not a declared segment (have: ${Object.keys(t.segments).join(`, `)})`,line:c}),u&&`insertSegment`in o&&(f(o.insertSegment)&&e.issues.push({path:s,message:`actions.${n}: insertSegment "${o.insertSegment}" is not a declared segment (have: ${Object.keys(t.segments).join(`, `)})`,line:c}),f(o.anchor)&&e.issues.push({path:s,message:`actions.${n}: anchor "${o.anchor}" is not a declared segment (have: ${Object.keys(t.segments).join(`, `)})`,line:c})),d&&`insertSegmentFrom`in o&&f(o.anchor)&&e.issues.push({path:s,message:`actions.${n}: anchor "${o.anchor}" is not a declared segment (have: ${Object.keys(t.segments).join(`, `)})`,line:c})}function uy(e){return[...Object.values(e.variables),...Object.values(e.segments).flatMap(e=>Object.values(e.vars??{}))].filter(e=>e.kind===`state`)}function dy(e){return uy(e).length>0}function fy(e,t){return uy(e).some(e=>e.kind===`state`&&e.key===t)}function py(e){return Object.values(e.actions).some(e=>I_(e)||L_(e)||R_(e)||z_(e)||B_(e)||V_(e))}function my(e){let t=new Set,n=new Set,r=(e,r)=>{t.add(e),hy(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}}function hy(e){return(e.kind===`shell`||e.kind===`file`)&&Ya(e.parse)===`json`}function gy(e,t,n,r,i){n.kind===`template`&&vy(e,`${t}.template`,n.template,r,{segCtx:i}),Za(n)&&n.cache&&`key`in n.cache&&vy(e,`${t}.cache.key`,n.cache.key,r,{segCtx:i})}function _y(e,t,n,r,i){if(Za(n)&&n.cache&&`depends_on`in n.cache)for(let a=0;a<n.cache.depends_on.length;a++){let o=n.cache.depends_on[a];if(r.names.has(o))continue;let s=i===void 0?void 0:`${i}.${o}`,c=s!==void 0&&r.names.has(s)?` (segment-local vars are namespaced — write "${s}")`:``;e.issues.push({path:`${t}.cache.depends_on[${a}]`,message:`cache.depends_on references unknown variable "${o}"${c}`,line:W(e.source,[...t.split(`.`),`cache`,`depends_on`])})}}function vy(e,t,n,r,i){for(let a of $v(n)){if(iy(a,r))continue;let n=i?.segCtx===void 0?void 0:`${i.segCtx}.${a}`,o=n!==void 0&&iy(n,r)?` (segment-local vars are namespaced — write ".${n}")`:``;e.issues.push({path:t,message:`Template references unknown variable ".${a}"${o}`,line:i?.line??W(e.source,t.split(`.`))})}}function yy(e){try{let t=Xe.default.parse(e);if(so(t)&&`root`in t)return`root`}catch{}return`layout`}function by(e,t){let{graph:n,nodeInfo:r}=xy(t),i=new Map,a=[];for(let e of n.keys())i.set(e,0);for(let e of n.keys())if(i.get(e)===0&&o(e))return;function o(t){i.set(t,1),a.push(t);for(let s of n.get(t)??[]){let t=i.get(s);if(t===1){let t=a.indexOf(s),n=[...a.slice(t),s],i=n[0],o=r.get(i);return e.issues.push({path:o?.declarationPath??`variables.${i}`,message:`Dependency cycle: ${n.join(` → `)}`,line:W(e.source,o?.linePathParts??[`variables`,i])}),!0}if(t===0&&o(s))return!0}return i.set(t,2),a.pop(),!1}}function xy(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=(e,n)=>{for(let i of $v(n)){if(t.has(i)){r.get(e).add(i);continue}let n=i.split(`.`)[0];n!==i&&t.has(n)&&r.get(e).add(n)}},a=(e,n)=>{if(n.kind===`template`&&i(e,n.template),Za(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 Sy=[`json5`,`json`];function Cy(e){try{return r.statSync(e,{throwIfNoEntry:!1})===void 0?`absent`:`present`}catch(t){return{path:e,error:t.message}}}function wy(e){return e===`~`||e.startsWith(`~/`)||e.startsWith(`~\\`)?f.homedir()+e.slice(1):e}function Ty(e,t,n){if(n!==void 0)return[n];let r=t??process.cwd();return[...new Set([...e?Sy.map(t=>c.join(e,`.cc-candybar.${t}`)):[],...Sy.map(e=>c.join(r,`.cc-candybar.${e}`)),...Sy.map(e=>`${Ey()}.${e}`)])]}function Ey(){let e=process.env.XDG_CONFIG_HOME??c.join(f.homedir(),`.config`);return c.join(e,`cc-candybar`,`config`)}function Dy(e,t,n){let r=[];for(let i of Ty(e,t,n)){let e=Cy(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 Oy(e,t,n){let r=Dy(e,t,n);return r.kind===`default`?`${Ey()}.${Sy[0]}`:r.path}function ky(e){return Ay(e).join(`
119
- `)||null}function Ay(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 jy(e,t){let n=Ty(e,t).filter(e=>Cy(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 My(e,t,n){let r=e===null?Ny:Py(e,t,n);return{...r,config:Vo(r.raw,t)}}const Ny={raw:{},source:``,warnings:[]};function Py(e,t,n){let i=r.readFileSync(e,`utf-8`);return{source:i,...Ly(e,i,n,fc(t))}}function Fy(e,t=`<config>`,n=``,r=new Set(ji())){let i=[],a={source:n,issues:i,allowedPalettes:r,groups:[]};if(sy(a,e),by(a,e),i.length>0)throw new za(t,i);return wg(A_(e))}function Iy(e,t,n=new Set(ji()),r=Ry){return Ly(e,t,n,r).raw}function Ly(e,t,n,r){let i=zy(e,t),a=Ha(e,t),o=a===null?[]:[a],s=[],c={source:t,issues:s,allowedPalettes:n??new Set(ji()),groups:[]};if(!so(i))throw new za(e,[{path:``,message:`Config root must be an object, got ${co(i)}`}],o);let l=By(c,i,r);if(s.length>0)throw new za(e,s,o);return{raw:l,warnings:o}}const Ry=new Set;function zy(e,t){try{return Xe.default.parse(t)}catch(t){let n=t;throw new za(e,[{path:``,message:`JSON5 syntax error: ${n.message}`,line:n.lineNumber,col:n.columnNumber}])}}function By(e,t,n){for(let n of Object.keys(t))Vy.has(n)||e.issues.push({path:n,message:`Unknown top-level key "${n}". Expected one of: ${[...Vy].join(`, `)}`,line:W(e.source,[n])});let r={};return t.globals!==void 0&&(r.globals=fs(e,`globals`,t.globals)),t.variables!==void 0&&(r.variables=Ms(e,`variables`,t.variables)),t.segments!==void 0&&(r.segments=pc(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.
119
+ `,yg=`preset.customized`,bg=`{{ and ${ns(Kh)} .${yg} }}`,xg=hc;function Sg(e){return`${fc}addable.${e}`}function Cg(e){let t=Object.keys(e.segments).filter(e=>!xg(e)),n=new Map;for(let r of ng(e.presets)){let{node:i}=ag(e,r),a=$h(i);n.set(Sg(r),{members:t.filter(e=>!a.has(e))})}return n}function wg(e,t,n,r){let i=`${fc}${e}.remove.${lc(n)}`,a=`${fc}${e}.removeSeg.${lc(n)}`;return r.actions[i]={persist:t,removeSegment:n},r.segments[a]={template:`{{ action "${i}" "-" }}`,when:qh},{kind:`segment`,name:a}}function Tg(e,t,n,r,i,a,o){let s=`${fc}${e}.insert.${n}`,c=`${fc}${e}.insertSeg.${n}`;o.actions[s]={persist:t,insertSegmentFrom:r,anchor:i,relation:a};let l=wh(s),u=Th(c,s,void 0),d=Oh(u),f=Dh(u,l);return o.variables[u]=is(u,Yo),o.variables[d]={kind:`state`,key:d,default:`0`},o.actions[f]=as(u,l),o.actions[d]={set:d,int:!0},o.segments[c]={template:`{{ menu "${s}" "+" "✕" }}`,when:qh},{kind:`segment`,name:c}}function Eg(e,t,n,r,i,a){let o=[],s=e.children.reduce((e,t,n)=>t.kind===`segment`&&!xg(t.name)?n:e,-1),c=e=>Eg(e,t,n,r,i,a);for(let[l,u]of e.children.entries()){if(u.kind===`container`){o.push(c(u));continue}let d=Qa(u,c);if(xg(u.name)){o.push(d);continue}let f={kind:`container`,direction:`horizontal`,children:[Tg(t,n,String(a.n++),r,u.name,`before`,i),d,wg(t,n,u.name,i),...l===s?[Tg(t,n,String(a.n++),r,u.name,`after`,i)]:[]]};o.push(e.direction===`vertical`?{kind:`container`,direction:`horizontal`,children:[f],...u.when!==void 0&&{when:u.when}}:f)}return{...e,children:o}}function Dg(e,t,n,r,i,a){let o=`${fc}${n}.resetLayout`,s=`${fc}${n}.customized`;i.actions[o]={reset:r},i.ensured[yg]={kind:`input`,path:yg,type:`boolean`,default:!1};let c=$o(t);return i.segments[s]={template:`{{ action "${o}" "↺ ${c} customized" }}`,when:bg},{kind:`container`,direction:`vertical`,children:[{kind:`segment`,name:s},Og(e,a)]}}function Og(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),Og(n,t)]}:{...e,children:[...e.children,t]}}function kg(e,t,n,r){let{node:i}=ag(e,t),a=lg(t),o=Sg(t),s=lc(t);return Dg(Eg(i,s,a,o,n,{n:0}),t,s,a,n,r)}function Ag(e){if(!(`edit.toggle`in e.actions))return e;let t={variables:{},ensured:{},actions:{},segments:{}},n=pg(`${fc}help`,gg,[Kh],t),r={...e.presets};for(let i of ng(e.presets)){let a=kg(e,i,t,n);r[i]={...ig(e.presets,i),root:a}}return{...e,variables:{...t.ensured,...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:r}}const jg={socket:`TMUX`,pane:`TMUX_PANE`,truecolor:`CLAUDE_CODE_TMUX_TRUECOLOR`};function Mg(e){let t=e[jg.socket]??``,n=e[jg.pane]??``;if(t===``||n===``)return null;let r=e[jg.truecolor]??``;return{socket:t.split(`,`)[0],pane:n,truecolor:r===``?null:r}}const Ng=jg.truecolor,Pg=[{name:`tmuxTruecolor`,label:`tmux truecolor`,probe:({tmux:e,claudeSettingsEnv:t})=>{switch(e.kind){case`unreported`:return{ok:!1,reason:"the client reported no tmux facts — re-run `cc-candybar install` to stage a current client"};case`outside`:return{ok:!0};case`inside`:{if(e.termfeatures.kind===`failed`)return{ok:!1,reason:`tmux could not be asked: ${e.termfeatures.reason}`};if(!e.termfeatures.value.includes(`RGB`)||e.hint.truecolor!==null)return{ok:!0};let n=t[Ng];return typeof n==`string`&&n!==``?{ok:!1,reason:`${Ng} is set in ~/.claude/settings.json — restart Claude Code to apply`}:{ok:!1,reason:`Claude Code renders the bar in 256 colours inside tmux`,fix:{kind:`claude-settings-env`,name:Ng,value:`1`}}}}}}];function Fg(e){return Pg.map(t=>({check:t,verdict:t.probe(e)}))}function Ig(e){return Pg.find(t=>t.name===e)}function Lg(e){let t=`settings.doctor.${e}.`;return{verdict:`${t}verdict`,reason:`${t}reason`,fixable:`${t}fixable`}}function Rg(e){return e.flatMap(({check:e,verdict:t})=>{let n=Lg(e.name);return t.ok?[{key:n.verdict,value:`ok`},{key:n.reason,value:``},{key:n.fixable,value:Qi}]:[{key:n.verdict,value:`failed`},{key:n.reason,value:t.reason},{key:n.fixable,value:t.fix===void 0?Qi:Zi}]})}const zg={copySession:{copy:`{{ .session.id }}`},openProject:{open:`{{ .project_dir }}`},openTranscript:{open:`{{ .transcript_path }}`}};function Bg(e){let t=t=>`${e}${t}`;return{template:`{{ action "${t(`copySession`)}" "⎘ id" }} {{ action "${t(`openProject`)}" "↗ proj" }} {{ action "${t(`openTranscript`)}" "↗ log" }}{{ if ne .git.repoUrl "" }} {{ link .git.repoUrl "↗ repo" }}{{ end }}`,actions:Object.fromEntries(Object.entries(zg).map(([t,n])=>[`${e}${t}`,n]))}}const Vg={theme:{configKey:`palette`,sessionKey:`theme`,effectiveVar:`theme.effective`},preset:{configKey:`preset`,sessionKey:`preset`,effectiveVar:`preset.effective`},look:{configKey:`look`,sessionKey:`look`,effectiveVar:`look.effective`},style:{configKey:`style`,sessionKey:`style`,effectiveVar:`style.effective`},charset:{configKey:`charset`,sessionKey:`charset`,effectiveVar:`charset.effective`},colorCompatibility:{configKey:`colorCompatibility`,sessionKey:`colorCompatibility`,effectiveVar:`colorCompatibility.effective`},autoWrap:{configKey:`autoWrap`,sessionKey:`autoWrap`,effectiveVar:`autoWrap.effective`},padding:{configKey:`padding`,sessionKey:`padding`,effectiveVar:`padding.effective`}},Hg=Object.values(Vg),Ug=`${pc}menu`,Wg=Gh,Gg=`${pc}edit`,Kg=`${pc}close`,qg=`${pc}toolbar`,Jg=Bg(pc),Yg=`${pc}persist`,Xg=`${pc}config`,Zg=Yg,Qg={variable:Ug,key:Ug,member:Wg},$g={variable:Xg,key:Xg,member:Wg},e_=`${pc}tools`,t_={variable:e_,key:e_,member:Wg},n_=`${pc}doctor`,r_=`${n_}.run`,i_=e=>`${n_}.fix.${e}`,a_=e=>`${n_}.${e}`,o_=`${pc}help.persist`,s_=`${pc}pickers`,c_=[`{{ themePreview }}`],l_=[{name:`preset`,...Vg.preset,glyph:`▦`,domain:`presets`,beneath:[`{{ layoutPreview }}`]}],u_=[{name:`theme`,...Vg.theme,glyph:`🎨`,domain:`themes`,beneath:c_},{name:`look`,...Vg.look,glyph:`◐`,domain:`looks`,beneath:c_},{name:`style`,...Vg.style,glyph:`✦`,domain:`styles`,beneath:[]},{name:`charset`,...Vg.charset,glyph:`🔣`,domain:`charsets`,beneath:[]},{name:`colorCompatibility`,...Vg.colorCompatibility,glyph:`🌈`,domain:`colorCompatibilities`,beneath:[]}],d_={name:`wrap`,...Vg.autoWrap},f_={name:`padding`,...Vg.padding},p_=`${pc}${d_.name}`,m_=`${pc}${f_.name}`,h_=[...l_,...u_];new Set([...h_,d_,f_].flatMap(e=>[e.sessionKey,e.configKey]));const g_=e=>`${pc}${e}`,__=e=>`${pc}apply.${e}`,v_=e=>`${pc}reset.${e}`,y_=e=>`${pc}carousel.${e}`,b_=(e,t)=>`${y_(e)}.${t}`,x_=Eh(s_),S_=e=>({variable:x_,key:x_,member:wh(__(e.name))});function C_(e){return es(g_(e.name),S_(e),{kind:`container`,direction:`vertical`,children:[{kind:`segment`,name:y_(e.name)},...e.beneath.map((t,n)=>({kind:`segment`,name:b_(e.name,n)}))]},`drop`)}function w_(e){return e===Ug}function T_(e){let t={kind:`segment`,name:Ug};if(e.kind===`container`&&e.direction===`vertical`){let[n,...r]=e.children;return e.when===void 0&&n!==void 0?{...e,children:[T_(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 E_(e){return D_(e)>0?e:T_(e)}function D_(e){let t=0;for(let n of $a(e))n.kind===`segment`&&w_(n.name)&&(t+=1);return t}function O_(e,t=!1){let n=t||e.when!==void 0;return e.kind===`segment`?n&&w_(e.name)||e.opens!==void 0&&O_(e.opens.body,!0):e.children.some(e=>O_(e,n))}function k_(e,t){return e.kind===`segment`?w_(e.name)?es(e.name,Qg,{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:qg},{kind:`segment`,name:Yg},t,...l_.map(C_),es(Xg,$g,{kind:`container`,direction:`horizontal`,children:[...u_.map(C_),{kind:`segment`,name:p_},{kind:`segment`,name:m_}]},`drop`),es(e_,t_,{kind:`container`,direction:`vertical`,children:[{kind:`segment`,name:n_},...Pg.map(e=>({kind:`segment`,name:a_(e.name)}))]},`drop`),{kind:`segment`,name:Gg}]},`inline`):e:A_(e,t)}function A_(e,t){return{...e,children:e.children.map(e=>k_(e,t))}}function j_(e){let t={variables:{[Ug]:is(Ug,Yo)},actions:{[Ug]:as(Ug,Wg),[Xg]:as(Xg,Wg),[e_]:as(e_,Wg),[r_]:{doctor:`run`},[Kg]:{set:Qg.key,to:Yo},[Gg]:{do:[Wh,Kg]},...Jg.actions,[Yg]:{set:Zg,cycle:[Qi,Zi]}},segments:{[Ug]:{template:rs(Ug,e,`❌`)},[qg]:{template:Jg.template},[Yg]:{template:`{{ action "${Yg}" "☐ persist?" "☑ persist?" }}`},[Xg]:{template:rs(Xg,`⚙ config ▸`,`⚙ config ▾`)},[e_]:{template:rs(e_,`🧰 tools ▸`,`🧰 tools ▾`)},[n_]:{template:`{{ action "${r_}" "🩺 doctor" }}`},[p_]:{template:`{{ action "${__(`wrap`)}" "wrap: on" "wrap: off" }} {{ action "${v_(`wrap`)}" "↺" }}`},[m_]:{template:`{{ action "${__(`padding`)}.down" "◀" }} padding {{ .${f_.effectiveVar} }} {{ action "${__(`padding`)}.up" "▶" }} {{ action "${v_(`padding`)}" "↺" }}`},[Gg]:{template:`{{ action "${Gg}" "✎ edit" "✎ done" }}`}}};return t.variables[Zg]={kind:`state`,key:Zg,default:Qi},t.variables[Xg]=is(Xg,Yo),t.variables[e_]=is(e_,Yo),N_(t),M_(t),{artifacts:t,help:pg(o_,_g,[Qg],t)}}function M_(e){for(let t of Pg){let n=Lg(t.name),r=i_(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[a_(t.name)]={when:`{{ ne .${n.verdict} "" }}`,template:`{{ if eq .${n.verdict} "ok" }}✓ ${t.label}{{ else }}✗ ${t.label} — {{ .${n.reason} }}{{ if eq .${n.fixable} "${Zi}" }} {{ action "${r}" "[fix]" }}{{ end }}{{ end }}`}}}function N_(e){for(let t of h_){let n=__(t.name);e.actions[n]={set:t.sessionKey,persist:t.configKey,persistWhen:Zg,from:t.domain},e.actions[v_(t.name)]={reset:t.configKey},P_(t,e)}e.actions[__(d_.name)]={set:d_.sessionKey,persist:d_.configKey,persistWhen:Zg,cycle:[...$i]},e.actions[v_(d_.name)]={reset:d_.configKey};for(let t of[-1,1])e.actions[`${__(f_.name)}.${t<0?`down`:`up`}`]={set:f_.sessionKey,persist:f_.configKey,persistWhen:Zg,...ea,by:t};e.actions[v_(f_.name)]={reset:f_.configKey}}function P_(e,t){let n=__(e.name),r=S_(e),i=Dh(r.key,r.member);t.variables[r.key]=is(r.key,Yo),t.actions[i]=as(r.key,r.member),t.segments[g_(e.name)]={template:`${e.glyph} {{ .${e.effectiveVar} }} ${rs(i,`▸`,`▾`)} {{ action "${v_(e.name)}" "↺" }}`},t.segments[y_(e.name)]={template:`{{ carousel "${n}" }}`},e.beneath.forEach((n,r)=>{t.segments[b_(e.name,r)]={template:n}})}function F_(e){e.variables[Uh]=is(Uh,Yo),e.actions[Wh]=as(Uh,Gh)}const I_=`session.id`;function L_(e){return Object.prototype.hasOwnProperty.call(e.variables,I_)}function R_(e){if(!L_(e))return e;let{artifacts:t,help:n}=j_(e.globals.menuGlyph??`🍫`);F_(t);let r={...e.presets};for(let t of ng(e.presets)){let{node:i}=ag(e,t);r[t]={...ig(e.presets,t),root:k_(E_(i),n)}}return{...e,variables:{...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:r}}const z_=[`set`,`persist`,`copy`,`open`,`reset`,`undo`,`redo`,`doctor`,`do`],B_=`persistWhen`;function V_(e){return B_ in e}function H_(e){return V_(e)?`to`in e?[{set:e.set,to:e.to},{persist:e.persist,to:e.to}]:`from`in e?[{set:e.set,from:e.from},{persist:e.persist,from:e.from}]:`cycle`in e?[{set:e.set,cycle:e.cycle},{persist:e.persist,cycle:e.cycle}]:[{set:e.set,min:e.min,max:e.max,by:e.by},{persist:e.persist,min:e.min,max:e.max,by:e.by}]:[e]}function U_(e){return`from`in e||`int`in e||`insertSegmentFrom`in e}function W_(e){return`set`in e}function G_(e){return`persist`in e}function K_(e){return`reset`in e}function q_(e){return`undo`in e}function J_(e){return`redo`in e}function Y_(e){return`doctor`in e}function X_(e,t){if(t===void 0)return{};if(!mo(t))return J(e,`actions`,`actions must be an object, got ${ho(t)}`),{};let n=Object.create(null);for(let[r,i]of Object.entries(t)){let t=Z_(e,`actions.${r}`,i);t!==null&&(n[r]=t)}return n}function J(e,t,n){e.issues.push({path:t,message:n,line:W(e.source,t.split(`.`))})}function Z_(e,t,n){if(!mo(n))return J(e,t,`${t} must be an action object, got ${ho(n)}`),null;if(`persistWhen`in n)return Av(e,t,n,`dual`,Dv);let r=z_.filter(e=>e in n);return r.length===1?Q_[r[0]](e,t,n):(J(e,t,`action must declare exactly one of: ${z_.join(`, `)}${r.length>1?` (found: ${r.join(`, `)})`:``}`),null)}const Q_={set:(e,t,n)=>Av(e,t,n,`set`,Tv),persist:(e,t,n)=>Av(e,t,n,`persist`,Ev),copy:$_(`copy`),open:$_(`open`),reset:ev,undo:tv(`undo`),redo:tv(`redo`),doctor:nv,do:rv};function $_(e){return(t,n,r)=>{for(let i of Object.keys(r))i!==e&&J(t,`${n}.${i}`,`Unknown key "${i}" on a ${e} action. Expected only: ${e}`);let i=co(t,n,r,e);return i===null?null:{[e]:i}}}function ev(e,t,n){for(let r of Object.keys(n))r!==`reset`&&J(e,`${t}.${r}`,`Unknown key "${r}" on a reset action. Expected only: reset`);let r=iv(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}}function tv(e){return(t,n,r)=>{for(let i of Object.keys(r))i!==e&&J(t,`${n}.${i}`,`Unknown key "${i}" on a ${e} action. Expected only: ${e}`);return r[e]===!0?{[e]:!0}:(J(t,`${n}.${e}`,`${e} must be the literal true (it takes no key — it steps the history of the session's config file), got ${G(r[e])}`),null)}}function nv(e,t,n){let r=n.doctor,i=r===`run`?[`doctor`]:[`doctor`,`check`];for(let r of Object.keys(n))i.includes(r)||J(e,`${t}.${r}`,`Unknown key "${r}" on a doctor action. Expected only: ${i.join(`, `)}`);if(r!==`run`&&r!==`fix`)return J(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`||Ig(a)===void 0?(J(e,`${t}.check`,`doctor fix must name a check (have: ${Pg.map(e=>e.name).join(`, `)}), got ${G(a)}`),null):{doctor:`fix`,check:a}}function rv(e,t,n){for(let r of Object.keys(n))r!==`do`&&J(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===``)?(J(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 iv(e,t,n,r,i,a){let o=co(e,t,r,n);if(o===null)return null;let s=`${t}.${n}`;return o===``?(J(e,s,i),null):o.includes(`/`)?(J(e,s,a(o)),null):o}const av={set:[[`set`,`the SessionState key to write`]],persist:[[`persist`,`the config globals field to write`]],dual:[[`set`,`the SessionState key written while persistWhen is off`],[`persist`,`the config globals field written while persistWhen is on`],[B_,`the SessionState key whose boolean value chooses the destination`]]};function ov(e,t,n,r){let i={},a=av[r],o=!0;for(let[r,s]of a){if(!(r in n)){J(e,t,`${r} is required here (${s}) — a dual-destination action declares ${a.map(([e])=>e).join(`, `)} together, plus one value source`),o=!1;continue}let c=iv(e,t,r,n,`${r} key must be non-empty (${s})`,e=>`${r} key "${e}" contains "/" — keys must be slash-free`);if(c===null){o=!1;continue}i[r]=c}return o?i:null}function sv(e){return e===`set`?`set-state`:e===`persist`?`set-config`:`set-state/set-config`}const cv={to:jv(`set`)},lv={to:jv(`persist`)},uv={from:Mv(`set`)},dv={from:Mv(`persist`)},fv={min:Lv(),max:Lv(),by:Lv()},pv={int:Pv()},mv={cycle:Nv(`set`)},hv={to:jv(`dual`)},gv={from:Mv(`dual`)},_v={cycle:Nv(`dual`)},vv={cycle:Nv(`persist`)},yv={removeSegment:Fv(`removeSegment`)},bv={insertSegment:Fv(`insertSegment`),anchor:Fv(`anchor`),relation:Iv()},xv={insertSegmentFrom:Mv(`persist`),anchor:Fv(`anchor`),relation:Iv()},Sv={ok:e=>e.min<e.max,issue:e=>({field:`min`,message:`min (${e.min}) must be less than max (${e.max})`})},Cv={ok:e=>e.by!==0,issue:()=>({field:`by`,message:`by must be a non-zero integer (the per-click increment; negative steps down)`})};function wv(e,t,n=[],r){let i=Object.keys(t),a=r??i,o=av[e].map(([e])=>e),s=(e,n,r)=>_o(e,t,n,r),c=Mo(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?To(s,...n):s}}const Tv=[wv(`set`,cv),wv(`set`,uv),wv(`set`,fv,[Sv,Cv]),wv(`set`,pv),wv(`set`,mv)],Ev=[wv(`persist`,lv),wv(`persist`,dv),wv(`persist`,fv,[Sv,Cv]),wv(`persist`,vv),wv(`persist`,yv),wv(`persist`,bv,[],[`insertSegment`]),wv(`persist`,xv,[],[`insertSegmentFrom`])],Dv=[wv(`dual`,hv),wv(`dual`,gv),wv(`dual`,fv,[Sv,Cv]),wv(`dual`,_v)];function Ov(e){let t=[`"to" (a literal value)`,`"from" (an option domain — a registered domain name like "themes"/"styles"/"looks", or an inline array of literal values)`,`"min"/"max"/"by" (a bounded step)`];return e===`set`&&t.push(`"int" (an unbounded integer cursor)`),t.push(`"cycle" (an enumerated domain stepped in order)`),e===`persist`&&t.push(`"removeSegment" (remove a named segment from the layout)`,`"insertSegment"/"anchor"/"relation" (insert a named segment before/after an existing one)`,`"insertSegmentFrom"/"anchor"/"relation" (insert a segment PICKED from an option domain before/after an existing one)`),t}function kv(e){let t=Ov(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 Av(e,t,n,r,i){let a=ov(e,t,n,r),o=i.filter(e=>e.detect.some(e=>e in n));if(o.length!==1)return J(e,t,`${kv(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)||J(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 jv(e){let t=sv(e);return{required:!0,json:{type:`string`},parse:(n,r,i,a)=>iv(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 Mv(e){let t=sv(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===``){J(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){J(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===``)){J(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){J(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){J(n,s,`${i} array members must be unique — a duplicated value would render the same picker option twice`);return}return r}J(n,s,`${i} must be a domain name (a string) or an inline domain (an array of strings), got ${G(o)}`)}}}function Nv(e){let t=sv(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`)){J(n,s,`cycle must be an array of strings (the enumerated values a click steps through), got ${ho(o)}`);return}let c=o;if(c.length<2){J(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){J(n,s,`cycle members must be non-empty — an empty value cannot be delivered on the ${t} wire`);return}if(u.length>0){J(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){J(n,s,`cycle members must be unique — the successor of a duplicated member is ambiguous`);return}return c}}}function Pv(){return{required:!0,json:{const:!0},parse:(e,t,n,r)=>{if(r[n]!==!0){J(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 Fv(e){return{required:!0,json:{type:`string`},parse:(t,n,r,i)=>{let a=co(t,n,i,r);if(a===null)return;let o=`${n}.${r}`;if(a===``){J(t,o,`${e} must be non-empty (a segment name)`);return}if(a.includes(`/`)||a.includes(`:`)){J(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 Iv(){return{required:!0,json:{enum:[`before`,`after`]},parse:(e,t,n,r)=>{let i=r[n];if(i!==`before`&&i!==`after`){J(e,`${t}.${n}`,`relation must be "before" or "after", got ${G(i)}`);return}return i}}}function Lv(){return{required:!0,json:{type:`integer`},parse:(e,t,n,r)=>{let i=r[n];if(typeof i!=`number`||!Number.isInteger(i)){J(e,`${t}.${n}`,`${n} must be an integer, got ${G(i)}`);return}return i}}}const Rv={noun:`look key`,fields:{hueShift:Oo(),chromaScale:Oo({min:0}),lightnessScale:Oo(),lightnessShift:Oo()}};function zv(e,t){if(!mo(t))return e.issues.push({path:`looks`,message:`looks must be an object mapping look names to adaptation objects, got ${ho(t)}`,line:W(e.source,[`looks`])}),{};let n={};for(let[r,i]of Object.entries(t)){if(r===``||r.includes(`/`)){e.issues.push({path:`looks.${r}`,message:`look name ${JSON.stringify(r)} must be non-empty and slash-free — a look picker writes the name on the set-state wire, which rejects empty values and splits on "/"`,line:W(e.source,[`looks`,r])});continue}let t=go(e,Rv,`looks.${r}`,i);t!==null&&(n[r]={...En,...t})}return n}const Bv={noun:`preset key`,fields:{root:{required:!1,json:{$ref:`#/definitions/RootFragment`},parse:(e,t,n,r)=>r[n]===void 0?void 0:jl(e,`${t}.${n}`,r[n])},globals:{required:!1,json:bs(),parse:(e,t,n,r)=>r[n]===void 0?void 0:ys(e,`${t}.${n}`,r[n])}}};function Vv(e,t){if(!mo(t))return e.issues.push({path:`presets`,message:`presets must be an object mapping preset names to config fragments, got ${ho(t)}`,line:W(e.source,[`presets`])}),{};let n={};for(let[r,i]of Object.entries(t)){if(r===``||r.includes(`/`)||/[\n\r]/.test(r)){e.issues.push({path:`presets.${r}`,message:`preset name ${JSON.stringify(r)} must be non-empty, slash-free, and newline-free — a preset picker writes the name on the set-state wire (which rejects empty values and splits on "/"), and edit mode splices it into a synthesized template string`,line:W(e.source,[`presets`,r])});continue}let t=go(e,Bv,`presets.${r}`,i);t!==null&&(n[r]=t)}return n}function Hv(e,t){if(t===void 0)return{};if(!mo(t))return e.issues.push({path:`helpers`,message:`helpers must be an object, got ${ho(t)}`,line:W(e.source,[`helpers`])}),{};let n=Object.create(null);for(let[r,i]of Object.entries(t)){if(typeof i!=`string`){e.issues.push({path:`helpers.${r}`,message:`helpers.${r} must be a string template body, got ${G(i)}`,line:W(e.source,[`helpers`,r])});continue}n[r]=i}return n}const Uv=new Map,Wv=new Map;function Gv(e){let t=Kv(e);if(t===null)throw Error(`Palette "${e}" (resolved "${Di(e)}") did not resolve in the theme registry — allowed names and the registry are inconsistent`);return t}function Kv(e){let t=Di(e),n=Uv.get(t);if(n!==void 0)return n;let r=rr(t);return r===null?null:(Uv.set(t,r),r)}function qv(e,t){let n=`${e.name} ${t.hueShift} ${t.chromaScale} ${t.lightnessScale} ${t.lightnessShift}`,r=Wv.get(n);if(r!==void 0)return r;let i=dr(e,t);return Wv.set(n,i),i}function Jv(e){let t=Kv(e);return t===null?null:{kind:`decided`,name:e,value:t}}function Yv(e,t){let n=Jv(e);return n===null?(t(`globals.palette rendered "${Oi}": "${e}" names no installed theme`),Zv()):n}function Xv(e,t,n){return Pi(e,t,n,Zv(),Jv)}function Zv(){return Jv(Oi)}function Qv(e){return Fi(Xv(void 0,null,e),()=>Oi,Zv).value}const $v=new Map;function ey(e,t,n){$v.set(e,{permanent:!0,resolve:t,paletteOf:n})}ey(`themes`,()=>ji(),e=>Gv(e)),ey(`styles`,()=>Bi),ey(`charsets`,()=>Ui),ey(`colorCompatibilities`,()=>U);function ty(e){return new Map([[`looks`,{members:Object.keys(e.looks),paletteOf:(t,n)=>qv(n,e.looks[t])}],[`presets`,{members:ng(e.presets)}]])}function ny(e){return[...new Set([...$v.keys(),...e.keys()])]}function ry(e,t){if(typeof e!=`string`)return{members:e};let n=t.get(e);if(n)return n;let r=$v.get(e);if(r)return{members:r.resolve(),paletteOf:r.paletteOf};throw Error(`unknown option domain "${e}" (have: ${ny(t).join(`, `)})`)}const iy=/{{([\s\S]*?)}}/g,ay=/"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|`[^`]*`/g,oy=/(?<![A-Za-z0-9_)])\.([A-Za-z_][\w]*(?:\.[A-Za-z_][\w]*)*)/g;function sy(e){let t=new Set,n;for(iy.lastIndex=0;(n=iy.exec(e))!==null;){let e=n[1].replace(ay,``),r;for(oy.lastIndex=0;(r=oy.exec(e))!==null;)t.add(r[1])}return t}const cy=/\baction\s+$/;function ly(e){let t=new Set;iy.lastIndex=0;let n;for(;(n=iy.exec(e))!==null;){let e=n[1],r=0,i;for(ay.lastIndex=0;(i=ay.exec(e))!==null;)cy.test(e.slice(r,i.index))&&t.add(i[0].slice(1,-1)),r=i.index+i[0].length}return t}const uy=/\b(picker|menu|carousel)\s+$/;function dy(e){let t=new Set;iy.lastIndex=0;let n;for(;(n=iy.exec(e))!==null;){let e=n[1],r=0,i=0,a;for(ay.lastIndex=0;(a=ay.exec(e))!==null;){let n=uy.exec(e.slice(r,a.index));n!==null&&(i=n[1]===`picker`?2:1),i>0&&(t.add(a[0].slice(1,-1)),i--),r=a.index+a[0].length}}return t}function fy(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}const py={gitTaculous:`gitaculous`};function my(e,t){let n=new Map;for(let e of Object.keys(t)){let t=lc(e),r=n.get(t);r?r.push(e):n.set(t,[e])}for(let[t,r]of n)r.length<2||e.issues.push({path:`presets`,message:`preset names ${r.map(e=>JSON.stringify(e)).join(` and `)} both collapse to the same synthesis identifier "${t}" — edit mode's synthesized reset affordance would silently steal one preset's action for the other. Rename one.`,line:W(e.source,[`presets`])})}function hy(e,t){t.globals.look!==void 0&&!Ni(t.globals.look)&&!Object.prototype.hasOwnProperty.call(t.looks,t.globals.look)&&e.issues.push({path:`globals.look`,message:`globals.look "${t.globals.look}" does not match any declared look (have: ${Object.keys(t.looks).join(`, `)})`,line:W(e.source,[`globals`,`look`])}),t.globals.preset!==void 0&&!Object.prototype.hasOwnProperty.call(t.presets,t.globals.preset)&&e.issues.push({path:`globals.preset`,message:`globals.preset "${t.globals.preset}" does not match any declared preset (have: ${Object.keys(t.presets).join(`, `)})`,line:W(e.source,[`globals`,`preset`])}),my(e,t.presets);let n=ty(t);for(let[r,i]of Object.entries(t.actions))!(`set`in i)||!(`from`in i)||typeof i.from!=`string`||ny(n).includes(i.from)||e.issues.push({path:`actions.${r}.from`,message:`actions.${r} from: references unknown option domain "${i.from}" (have: ${ny(n).join(`, `)})`,line:W(e.source,[`actions`,r,`from`])});for(let[n,r]of Object.entries(t.actions)){if(!V_(r))continue;let i=r[B_];by(t,i)||e.issues.push({path:`actions.${n}.${B_}`,message:`actions.${n} ${B_}: "${i}" is not a declared state key — a dual action's selector must name a { kind: "state", key: "${i}" } variable, or the destination can never change`,line:W(e.source,[`actions`,n,B_])})}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&&U_(o)?`"${i}" takes its value from the template (from/int/insertSegmentFrom), so it can only be the first member — only the first is bound the region's display`:void 0:`"${i}" is listed twice — each member fires once per click`;s!==void 0&&e.issues.push({path:`actions.${n}.do`,message:`actions.${n} do: ${s}`,line:W(e.source,[`actions`,n,`do`])})});for(let[n,r]of Object.entries(t.actions)){let i=`persist`in r?r.persist:`reset`in r?r.reset:null;if(i===null)continue;let a=`persist`in r?`persist`:`reset`,o=ug(i);if(o===null){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" is not a config globals field (have: ${ws().join(`, `)}), a "segments.<name>.palette" target, or a "presets.<name>.root" target`,line:W(e.source,[`actions`,n,a])});continue}let s=gy.filter(e=>e in r);if(o.scope!==`preset-root`&&s.length>0){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" is not a "presets.<name>.root" target — ${s.map(e=>`"${e}"`).join(`/`)} is a tree op and applies only to one`,line:W(e.source,[`actions`,n,a])});continue}if(o.scope===`preset-root`){_y(e,t,n,a,i,o.preset,r);continue}if(o.scope===`segment-palette`){if(!Object.prototype.hasOwnProperty.call(t.segments,o.segment)){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" names segment "${o.segment}" which is not declared (have segments: ${Object.keys(t.segments).join(`, `)})`,line:W(e.source,[`actions`,n,a])});continue}`min`in r&&e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" is a segment palette target and cannot use a bounded stepper (min/max/by) — use "to", "from", or "cycle" instead`,line:W(e.source,[`actions`,n,a])})}}let r=Sy(t),i=L_(t),a=Object.entries(t.segments).filter(([,e])=>Bh(e.template)).map(([e])=>e),o=(t,n,r)=>{D_(t)>1&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${Ug}" ${D_(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}),O_(t)&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${Ug}" 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 $a(t))e.kind===`segment`&&i.set(e.name,(i.get(e.name)??0)+1);for(let t of a)(i.get(t)??0)>1&&e.issues.push({path:n,message:`segment "${t}" hosts a {{ menu }} and is placed in the layout more than once — a menu's open-state is keyed by segment name, so the copies would share one state (clicking one would toggle both). Give each placement its own named segment.`,line:r})};function s(e,t=!1){return e.kind===`segment`?!1:t&&e.distribution!==void 0||e.children.some(n=>s(n,t||Za[e.direction]===`cell`))}let c=(n,a,o)=>{for(let s of $a(n))if(s.when!==void 0&&Ey(e,`${a}.when`,s.when,r,{line:o}),s.kind===`segment`){if(w_(s.name)){i||e.issues.push({path:a,message:`${a} places the global settings menu anchor "${Ug}", but this config declares no "${I_}" variable — the menu is a click surface and every click composes a URL from "${I_}", so it is not synthesized for a config without it. Declare a "${I_}" variable (any config merged onto the bundled default inherits one) or remove the anchor placement.`,line:o});continue}if(!Object.prototype.hasOwnProperty.call(t.segments,s.name)){let t=py[s.name],n=t===void 0?``:` (the built-in segment "${s.name}" was renamed to "${t}" — update this reference)`;e.issues.push({path:a,message:`${a} entry "${s.name}" does not match any declared segment${n}`,line:o})}}},l=Dy(e.source);c(Uo(t.root),l,W(e.source,[l]));for(let[n,r]of Object.entries(t.presets)){if(r.root===void 0)continue;let t=`presets.${n}.root`,i=W(e.source,[`presets`,n,`root`]);c(Wo(r.root),t,i)}let u=new Map([[`root`,Uo(t.root)]]);for(let e of ng(t.presets)){let{node:n,path:r}=ag(t,e);u.set(r,n)}for(let[t,n]of u)o(n,t,W(e.source,t.split(`.`)));for(let[n,i]of Object.entries(t.variables))wy(e,`variables.${n}`,i,r);for(let[n,i]of Object.entries(t.segments)){if(i.vars)for(let[t,a]of Object.entries(i.vars))wy(e,`segments.${n}.vars.${t}`,a,r,n);for(let a of[`template`,`bg`,`fg`,`when`]){let o=i[a];if(typeof o==`string`){Ey(e,`segments.${n}.${a}`,o,r,{segCtx:n});for(let r of ly(o))Object.prototype.hasOwnProperty.call(t.actions,r)||e.issues.push({path:`segments.${n}.${a}`,message:`${a} references unknown action "${r}"`,line:W(e.source,[`segments`,n,a])});for(let r of dy(o))Object.prototype.hasOwnProperty.call(t.actions,r)||e.issues.push({path:`segments.${n}.${a}`,message:`${a} references unknown action "${r}" (in a picker, menu or carousel)`,line:W(e.source,[`segments`,n,a])})}}}for(let[n,i]of Object.entries(t.variables))Ty(e,`variables.${n}`,i,r);for(let[n,i]of Object.entries(t.segments))if(i.vars)for(let[t,a]of Object.entries(i.vars))Ty(e,`segments.${n}.vars.${t}`,a,r,n);(yy(t)||xy(t))&&!Object.prototype.hasOwnProperty.call(t.variables,`session.id`)&&e.issues.push({path:`variables.session.id`,message:`state reads and action set-writes require a global "session.id" variable (segment-local declarations do not satisfy this — declareState/set-state both read the global box; conventionally { kind: "input", path: "session_id" })`,line:W(e.source,[`variables`])})}const gy=[`removeSegment`,`insertSegment`,`insertSegmentFrom`];function _y(e,t,n,r,i,a,o){let s=`actions.${n}.${r}`,c=W(e.source,[`actions`,n,r]);if(!ng(t.presets).includes(a)){e.issues.push({path:s,message:`actions.${n}: "${i}" names preset "${a}" which is not declared (have: ${ng(t.presets).join(`, `)})`,line:c});return}if(r===`reset`)return;let l=`removeSegment`in o,u=`insertSegment`in o,d=`insertSegmentFrom`in o;if(!l&&!u&&!d){e.issues.push({path:s,message:`actions.${n}: "${i}" is a "presets.<name>.root" target and can only be paired with "removeSegment", "insertSegment", or "insertSegmentFrom" (not "to"/"from"/"cycle"/bounded — those have no meaning as a tree op)`,line:c});return}let f=e=>!Object.prototype.hasOwnProperty.call(t.segments,e);l&&`removeSegment`in o&&f(o.removeSegment)&&e.issues.push({path:s,message:`actions.${n}: removeSegment "${o.removeSegment}" is not a declared segment (have: ${Object.keys(t.segments).join(`, `)})`,line:c}),u&&`insertSegment`in o&&(f(o.insertSegment)&&e.issues.push({path:s,message:`actions.${n}: insertSegment "${o.insertSegment}" is not a declared segment (have: ${Object.keys(t.segments).join(`, `)})`,line:c}),f(o.anchor)&&e.issues.push({path:s,message:`actions.${n}: anchor "${o.anchor}" is not a declared segment (have: ${Object.keys(t.segments).join(`, `)})`,line:c})),d&&`insertSegmentFrom`in o&&f(o.anchor)&&e.issues.push({path:s,message:`actions.${n}: anchor "${o.anchor}" is not a declared segment (have: ${Object.keys(t.segments).join(`, `)})`,line:c})}function vy(e){return[...Object.values(e.variables),...Object.values(e.segments).flatMap(e=>Object.values(e.vars??{}))].filter(e=>e.kind===`state`)}function yy(e){return vy(e).length>0}function by(e,t){return vy(e).some(e=>e.kind===`state`&&e.key===t)}function xy(e){return Object.values(e.actions).some(e=>W_(e)||G_(e)||K_(e)||q_(e)||J_(e)||Y_(e))}function Sy(e){let t=new Set,n=new Set,r=(e,r)=>{t.add(e),Cy(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}}function Cy(e){return(e.kind===`shell`||e.kind===`file`)&&to(e.parse)===`json`}function wy(e,t,n,r,i){n.kind===`template`&&Ey(e,`${t}.template`,n.template,r,{segCtx:i}),ro(n)&&n.cache&&`key`in n.cache&&Ey(e,`${t}.cache.key`,n.cache.key,r,{segCtx:i})}function Ty(e,t,n,r,i){if(ro(n)&&n.cache&&`depends_on`in n.cache)for(let a=0;a<n.cache.depends_on.length;a++){let o=n.cache.depends_on[a];if(r.names.has(o))continue;let s=i===void 0?void 0:`${i}.${o}`,c=s!==void 0&&r.names.has(s)?` (segment-local vars are namespaced — write "${s}")`:``;e.issues.push({path:`${t}.cache.depends_on[${a}]`,message:`cache.depends_on references unknown variable "${o}"${c}`,line:W(e.source,[...t.split(`.`),`cache`,`depends_on`])})}}function Ey(e,t,n,r,i){for(let a of sy(n)){if(fy(a,r))continue;let n=i?.segCtx===void 0?void 0:`${i.segCtx}.${a}`,o=n!==void 0&&fy(n,r)?` (segment-local vars are namespaced — write ".${n}")`:``;e.issues.push({path:t,message:`Template references unknown variable ".${a}"${o}`,line:i?.line??W(e.source,t.split(`.`))})}}function Dy(e){try{let t=Xe.default.parse(e);if(mo(t)&&`root`in t)return`root`}catch{}return`layout`}function Oy(e,t){let{graph:n,nodeInfo:r}=ky(t),i=new Map,a=[];for(let e of n.keys())i.set(e,0);for(let e of n.keys())if(i.get(e)===0&&o(e))return;function o(t){i.set(t,1),a.push(t);for(let s of n.get(t)??[]){let t=i.get(s);if(t===1){let t=a.indexOf(s),n=[...a.slice(t),s],i=n[0],o=r.get(i);return e.issues.push({path:o?.declarationPath??`variables.${i}`,message:`Dependency cycle: ${n.join(` → `)}`,line:W(e.source,o?.linePathParts??[`variables`,i])}),!0}if(t===0&&o(s))return!0}return i.set(t,2),a.pop(),!1}}function ky(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=(e,n)=>{for(let i of sy(n)){if(t.has(i)){r.get(e).add(i);continue}let n=i.split(`.`)[0];n!==i&&t.has(n)&&r.get(e).add(n)}},a=(e,n)=>{if(n.kind===`template`&&i(e,n.template),ro(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 Ay=[`json5`,`json`];function jy(e){try{return r.statSync(e,{throwIfNoEntry:!1})===void 0?`absent`:`present`}catch(t){return{path:e,error:t.message}}}function My(e){return e===`~`||e.startsWith(`~/`)||e.startsWith(`~\\`)?f.homedir()+e.slice(1):e}function Ny(e,t,n){if(n!==void 0)return[n];let r=t??process.cwd();return[...new Set([...e?Ay.map(t=>c.join(e,`.cc-candybar.${t}`)):[],...Ay.map(e=>c.join(r,`.cc-candybar.${e}`)),...Ay.map(e=>`${Py()}.${e}`)])]}function Py(){let e=process.env.XDG_CONFIG_HOME??c.join(f.homedir(),`.config`);return c.join(e,`cc-candybar`,`config`)}function Fy(e,t,n){let r=[];for(let i of Ny(e,t,n)){let e=jy(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 Iy(e,t,n){let r=Fy(e,t,n);return r.kind===`default`?`${Py()}.${Ay[0]}`:r.path}function Ly(e){return Ry(e).join(`
120
+ `)||null}function Ry(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 zy(e,t){let n=Ny(e,t).filter(e=>jy(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 By(e,t,n){let r=e===null?Vy:Hy(e,t,n);return{...r,config:qo(r.raw,t)}}const Vy={raw:{},source:``,warnings:[]};function Hy(e,t,n){let i=r.readFileSync(e,`utf-8`);return{source:i,...Gy(e,i,n,vc(t))}}function Uy(e,t=`<config>`,n=``,r=new Set(ji())){let i=[],a={source:n,issues:i,allowedPalettes:r,groups:[]};if(hy(a,e),Oy(a,e),i.length>0)throw new Ga(t,i);return Ag(R_(e))}function Wy(e,t,n=new Set(ji()),r=Ky){return Gy(e,t,n,r).raw}function Gy(e,t,n,r){let i=qy(e,t),a=Ja(e,t),o=a===null?[]:[a],s=[],c={source:t,issues:s,allowedPalettes:n??new Set(ji()),groups:[]};if(!mo(i))throw new Ga(e,[{path:``,message:`Config root must be an object, got ${ho(i)}`}],o);let l=Jy(c,i,r);if(s.length>0)throw new Ga(e,s,o);return{raw:l,warnings:o}}const Ky=new Set;function qy(e,t){try{return Xe.default.parse(t)}catch(t){let n=t;throw new Ga(e,[{path:``,message:`JSON5 syntax error: ${n.message}`,line:n.lineNumber,col:n.columnNumber}])}}function Jy(e,t,n){for(let n of Object.keys(t))Yy.has(n)||e.issues.push({path:n,message:`Unknown top-level key "${n}". Expected one of: ${[...Yy].join(`, `)}`,line:W(e.source,[n])});let r={};return t.globals!==void 0&&(r.globals=vs(e,`globals`,t.globals)),t.variables!==void 0&&(r.variables=Rs(e,`variables`,t.variables)),t.segments!==void 0&&(r.segments=yc(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.
120
121
  Replace: layout: [["seg1", "seg2"], ["seg3"]]
121
122
  With: root: { v: [{ h: ["seg1", "seg2"] }, "seg3"] }
122
- Single-row example: root: { h: ["seg1", "seg2"] }`,line:W(e.source,[`layout`])}),t.root!==void 0&&(r.root=Tl(e,`root`,t.root)),t.actions!==void 0&&(r.actions=H_(e,t.actions)),t.looks!==void 0&&(r.looks=jv(e,t.looks)),t.presets!==void 0&&(r.presets=Nv(e,t.presets)),t.editGlobals!==void 0&&(r.editGlobals=hs(e,`editGlobals`,t.editGlobals)),t.helpers!==void 0&&(r.helpers=Pv(e,t.helpers)),Nl(e,r),Ih(e,r),Wh(e,r),dc(e,r,sc,`the global settings menu`),r}const Vy=new Set([`globals`,`variables`,`segments`,`layout`,`root`,`actions`,`looks`,`presets`,`editGlobals`,`helpers`]);function Hy(e){let t=Ky(e.termCols),n=Ky(e.termRows),r=qy(e.ssh),i=Wy(e.tmux),a=Uy(e.configEnv);return{...t!==void 0&&{termCols:t},...n!==void 0&&{termRows:n},...r!==void 0&&{ssh:r},...i!==void 0&&{tmux:i},...a!==void 0&&{configEnv:a}}}function Uy(e){return typeof e==`string`&&e!==``?wy(e):void 0}function Wy(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 Gy=1e4;function Ky(e){if(typeof e!=`number`||!Number.isFinite(e))return;let t=Math.floor(e);if(!(t<=0))return t>Gy?Gy:t}function qy(e){return typeof e==`boolean`?e:void 0}var Jy=class extends Error{constructor(e){super(e),this.name=`ProtocolError`}};function Yy(e){let t=Buffer.from(JSON.stringify(e),`utf8`),n=Buffer.alloc(4);return n.writeUInt32BE(t.length,0),Buffer.concat([n,t])}function Xy(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 Jy(`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 Jy(e instanceof Error?e.message:String(e));e instanceof Error&&(n.cause=e),t(n);return}}}}function Zy(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=Xy(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(Yy(t))})}async function Qy(e,t,n){let r=null;try{r=await rb(Ne(),t.connectMs);let i=await Zy(r,{v:3,...e},t.budgetMs);return tb(e.kind,i,n)}catch(e){return nb(e)}finally{r&&r.destroy()}}function $y(e,t){return typeof e==`string`?e:t}function eb(e){return typeof e==`number`&&Number.isInteger(e)&&e>=0?e:0}function tb(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=$y(r.error,`(no error message)`);switch(r.code){case`VERSION_MISMATCH`:return{kind:`permanent`,cause:`version_mismatch`,clientV:3,daemonV:eb(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 nb(e){if(e instanceof Jy||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 rb(e,t){return new Promise((n,r)=>{let i=g.createConnection({path:e}),a=setTimeout(()=>{i.destroy(),r(Error(`CONNECT_TIMEOUT`))},t);i.once(`connect`,()=>{clearTimeout(a),n(i)}),i.once(`error`,e=>{clearTimeout(a),r(e)})})}function ib(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 ab={connectMs:50,budgetMs:150},ob={connectMs:50,budgetMs:200};function sb(e){let t=e.output;return typeof t==`string`?t:void 0}function cb(e,t,n,r){return Qy({kind:`render`,hookData:e,args:t,cwd:n,...r},ab,sb)}function lb(e,t){return Qy({kind:`click`,verb:e,value:t},ob,sb)}let ub=null;function db(e){if(ub!==null)return ub;r.mkdirSync(c.dirname(e),{recursive:!0});try{ub=r.statSync(e).size}catch{ub=0}return ub}function fb(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{}ub=0}function Y(e,t){let n=`${new Date().toISOString()} [${e}] ${t}\n`;try{let e=Ge(),t=db(e);r.appendFileSync(e,n),ub=t+Buffer.byteLength(n,`utf8`),ub>=5242880&&fb(e)}catch(e){ub=null;try{process.stderr.write(`${n}cc-candybar: daemon.log unwritable: ${e.message}\n`)}catch{}}}function pb(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(`
123
- `)}function mb(e,t){return e===`darwin`?[hb(`footprint`,[`-p`,String(t)]),hb(`vmmap`,[`--summary`,String(t)])]:e===`linux`?[gb(`/proc/self/smaps_rollup`),gb(`/proc/self/status`)]:[]}function hb(e,t){return{name:`${e} ${t.join(` `)}`,read:()=>{let n=Ee({bin:e,args:[...t],timeoutMs:5e3,category:`limits.memory-report`});return n.ok?n.stdout.trim().length>0?{kind:`text`,text:n.stdout}:{kind:`unavailable`,reason:`exited 0 but printed nothing`}:{kind:`unavailable`,reason:`${n.reason}${n.error===void 0?``:`: ${n.error}`}${_b(n.stderr)}`}}}}function gb(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 _b(e){let t=e.split(`
124
- `).map(e=>e.trim()).find(e=>e.length>0);return t===void 0?``:` (${t})`}const vb=`CC_CANDYBAR_RSS_LIMIT_MB`;function yb(e){let t=e[vb];if(t===void 0)return 512;let n=/^\d+$/.test(t)?Number(t):NaN;if(!Number.isSafeInteger(n)||n<=0)throw Error(`${vb} must be a positive integer (MB), got ${JSON.stringify(t)}`);return n}function bb(e){return yb(e)*2}const xb=1024*1024;function Sb(e){return yb(e)*xb}const Cb={memoryReport:{prefix:`memory-`,suffix:`.txt`},heapSnapshot:{prefix:`heap-`,suffix:`.heapsnapshot`}};function wb(e,t,n){let{prefix:r,suffix:i}=Cb[t];return c.join(e,`${r}${n}${i}`)}function Tb(e){for(let t of Object.keys(Cb)){let{prefix:n,suffix:r}=Cb[t];if(e.startsWith(n)&&e.endsWith(r))return t}return null}function Eb(e){let t=e.rssLimitBytes??512*xb,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 Db(e.log,`memory report`,()=>{let t=wb(e.snapshotDir,`memoryReport`,o);e.writeMemoryReport(t,e.captureMemoryReport()),e.log(`info`,`memory report written: ${t}`)}),Db(e.log,`heap snapshot`,()=>{let t=wb(e.snapshotDir,`heapSnapshot`,o);e.log(`info`,`heap snapshot written: ${e.writeHeapSnapshot(t)}`)}),Db(e.log,`artifact rotation`,()=>{kb(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 Db(e,t,n){try{n()}catch(n){e(`warn`,`${t} failed: ${n.message}`)}}function Ob(e){let t=e.slice(e.lastIndexOf(`/`)+1),n=Tb(t);if(n===null)return t;let{prefix:r,suffix:i}=Cb[n];return t.slice(r.length,t.length-i.length)}function kb(e,t,n){let r=new Map;for(let t of e){let e=Ob(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 Ab(e,t,n={}){let i=Me();return{now:()=>Date.now(),pid:process.pid,snapshotDir:i,log:Y,memoryBytes:()=>{let e=process.memoryUsage();return{rss:e.rss,heapTotal:e.heapTotal}},captureMemoryReport:()=>pb(mb(process.platform,process.pid)),writeMemoryReport:(e,t)=>r.writeFileSync(e,t,{mode:384}),writeHeapSnapshot:e=>_.writeHeapSnapshot(e),listArtifacts:()=>{try{return r.readdirSync(i).filter(e=>Tb(e)!==null).map(e=>c.join(i,e))}catch{return[]}},removeFile:e=>r.unlinkSync(e),shutdown:t,startedAtMs:e,...n}}function jb(e={}){if(qb()!==null)return;let n=e.spawn??Jb,r=Wb();if(r.kind===`contended`){let e=Nb();e!==null&&e>2e3&&(t.stderr.write(`cc-candybar: spawn-lock held ${e}ms (likely crashed holder) — spawning unlocked\n`),Mb(n));return}if(r.kind===`error`){t.stderr.write(`cc-candybar: spawn-lock unavailable (${r.reason}) — spawning unlocked\n`),Mb(n);return}try{Mb(n)}finally{Kb()}}function Mb(e){Bb()&&Pb(e)}function Nb(){try{let e=r.statSync(Ve());return Date.now()-e.mtimeMs}catch{return null}}function Pb(e){try{e()||t.stderr.write(`cc-candybar: daemon spawn returned false (unable to resolve script path?)
125
- `)}catch(e){t.stderr.write(`cc-candybar: daemon spawn failed: ${e.message}\n`)}}function Fb(e,t){return e===null?{kind:`allow`}:e<-1e4?{kind:`allow-future-garbage`,futureMs:-e}:e<t?{kind:`deny`}:{kind:`allow`}}function Ib(e){return Math.min(3e3*2**Math.min(Math.max(e,0),5),6e4)}function Lb(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 Rb(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 zb(){try{r.unlinkSync(Ue())}catch(e){e.code!==`ENOENT`&&t.stderr.write(`cc-candybar: could not reset spawn.backoff: ${e.message}\n`)}}function Bb(){let e=He(),n=Ue(),r=Lb(n),i=Fb(Vb(e),Ib(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`),Hb(e),Rb(n,Math.min(r+1,5)),!0)}function Vb(e){try{return Date.now()-r.statSync(e).mtimeMs}catch{return null}}function Hb(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 Ub=null;function Wb(){let e=Ve();for(let n=0;n<2;n++){try{let n=r.openSync(e,`wx`,384);try{r.writeSync(n,JSON.stringify({pid:t.pid,ts:Date.now()}))}catch{}return Ub={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(!Gb(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 Gb(e){try{let t=r.statSync(e);return Date.now()-t.mtimeMs>1e4}catch{return!0}}function Kb(){if(!Ub)return;let{fd:e,path:t}=Ub;Ub=null;try{r.closeSync(e)}catch{}try{r.unlinkSync(t)}catch{}}function qb(){try{return r.mkdirSync(Me(),{recursive:!0}),null}catch(e){return`mkdir ${Me()}: ${e.message}`}}function Jb(){let e=t.execPath,n=t.argv[1];return n?De({bin:e,args:[`--max-old-space-size=${bb(t.env)}`,n,`daemon`],category:`daemon-spawn`}).ok:!1}const Yb=`cc-candybar`,Xb=`dispatch`,Zb=`set-state`,Qb=`step-state`,$b=`copy`,ex=`open-vscode`,tx=`toolbar-toggle`,nx=`show-config-error`,rx=`show-config-warning`,ix=`set-config`,ax=`step-config`,ox=`reset-config`,sx=`apply-layout-op`,cx=`undo`,lx=`redo`,ux=`apply-update`,dx=`doctor-run`,fx=`doctor-fix`;function px(e){return e.map(encodeURIComponent).join(`/`)}function mx(e){return e.length===0?[]:e.split(`/`).map(decodeURIComponent)}function hx(e){return`${Yb}://${Xb}/${e.map(e=>`e=${encodeURIComponent(`${e.verb}/${px(e.args)}`)}`).join(`&`)}`}function gx(e){return new y(e).getAll(`e`).map(yx)}function _x(e){return e.reduce((e,t)=>{let n=e.at(-1),r=n&&vx(n,t);return r?[...e.slice(0,-1),r]:[...e,t]},[])}function vx(e,t){if(e.verb!==`set-state`||t.verb!==`set-state`)return;let[n,r]=[yx(e.value),yx(t.value)];return n.verb===r.verb?{verb:Zb,value:`${n.verb}/${n.value}/${r.value}`}:void 0}function yx(e){let t=e.indexOf(`/`);return t===-1?{verb:e,value:``}:{verb:e.slice(0,t),value:e.slice(t+1)}}const bx=`1.76.0`;function xx(){return c.join(f.homedir(),`.claude`,`settings.json`)}function X(e){return{kind:`ok`,value:e}}const Z={kind:`absent`};function Q(e){return{kind:`failed`,reason:e}}function Sx(e,t){return e?.kind===`ok`?e.value:t}const Cx=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/;function wx(e){let t=Cx.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 Tx(e){return e.join(`.`)}function Ex([e,t,n],[r,i,a]){return e-r||t-i||n-a}const Dx=`@promptctl/cc-candybar`;async function Ox(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 Q(`registry responded ${e.status} for ${r}`);let n=await e.json();return typeof n.latest==`string`?wx(n.latest):Z}catch(e){return Q(e instanceof Error?e.message:String(e))}}function kx(e,t){let n=wx(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=Ex(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 Ax(e,t){switch(t.kind){case`current`:return{stream:`stdout`,text:`✓ cc-candybar ${Tx(t.installed)} is the latest release.\n`};case`ahead`:return{stream:`stdout`,text:`cc-candybar ${Tx(t.installed)} is newer than the registry's latest release (${Tx(t.latest)}): an unpublished build.\n`};case`stale`:{let n=Tx(t.latest);return{stream:`stderr`,text:`⚠ cc-candybar ${Tx(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 jx=`CCCandybarURLHandler`,Mx=[],Nx={"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 Px(e){return/^[A-Za-z0-9_./=,:-]+$/.test(e)?e:`'${e.replace(/'/g,`'\\''`)}'`}function Fx(e,t){return[e,...t].map(Px).join(` `)}function Ix(){return c.join(f.homedir(),`Applications`,`${jx}.app`)}function Lx(){if(process.platform!==`darwin`)throw Error(`URL handler installation requires macOS (found platform: ${process.platform}).`)}function Rx(){if(process.platform===`darwin`)return c.join(f.homedir(),`Library`,`Application Support`,`CCCandybar`);let e=process.env.XDG_DATA_HOME??c.join(f.homedir(),`.local`,`share`);return c.join(e,`cc-candybar`)}function zx(){return c.join(Rx(),`bin`,`cc-candybar`)}function Bx(){return c.join(Rx(),`dist`,`index.mjs`)}function Vx(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(`
126
- `)}function Hx(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 Ux(t){let n=Nx[`${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 Wx(e,t){c.resolve(e)!==c.resolve(t)&&r.copyFileSync(e,t)}function Gx(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 ${Dx}@latest install`);return n.toString(`latin1`)===`#!`?`node-shim`:`native`}finally{r.closeSync(t)}}function Kx(){let e=Hx(process.argv[1]);if(!r.existsSync(e))throw Error(`install: bundled dist not found at ${e}. Reinstall the package.`);let t=Ux(e);if(!r.existsSync(t.sourcePath))throw Error(`install: render entry not found at ${t.sourcePath}. Reinstall the package.`);r.mkdirSync(c.dirname(Bx()),{recursive:!0}),r.mkdirSync(c.dirname(zx()),{recursive:!0}),Wx(e,Bx()),Wx(t.sourcePath,zx()),r.chmodSync(zx(),493),r.rmSync(c.join(Rx(),`url-handler.mjs`),{force:!0});let n=Gx(zx());return process.stdout.write(`Staged cc-candybar v${bx} runtime at ${Rx()}\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:zx(),distPath:Bx(),entryKind:n}}function qx(){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>${Yb}</string>`,` </array>`,` </dict>`,`</array>`].join(`
127
- `)}]}function Jx(e){let t=Ix();r.mkdirSync(c.dirname(t),{recursive:!0}),r.existsSync(t)&&r.rmSync(t,{recursive:!0,force:!0}),process.stdout.write(`Building ${t}\n`);let n=Ee({bin:`/usr/bin/osacompile`,args:[`-o`,t,`-e`,Vx(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 qx())Ee({bin:`/usr/bin/plutil`,args:[`-remove`,e,i],category:`install.plutil`});for(let{key:e,xml:t}of qx()){let n=Ee({bin:`/usr/bin/plutil`,args:[`-insert`,e,`-xml`,t,i],category:`install.plutil`});if(!n.ok)throw process.stderr.write(n.stderr),Error(`plutil -insert ${e} failed (${n.reason})`)}process.stdout.write(`Registering ${Yb}:// with Launch Services\n`);let a=Ee({bin:`/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister`,args:[`-f`,t],category:`install.lsregister`});if(!a.ok)throw process.stderr.write(a.stderr),Error(`lsregister failed (${a.reason})`);process.stdout.write(`✓ ${jx}.app installed and registered.\n`),process.stdout.write(` Test: open '${Yb}://hello-world' && pbpaste\n`)}function Yx(){Lx(),Jx(Kx().distPath)}function Xx(e,t=Yb){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:$b,value:r}:{verb:decodeURIComponent(r.slice(0,i)),value:r.slice(i+1)}}async function Zx(e){e||(process.stderr.write(`url-handle: missing URL argument.
128
- `),process.exit(1));let t;try{t=Xx(e)}catch(e){process.stderr.write(`url-handle: ${e instanceof Error?e.message:String(e)}\n`),process.exit(1)}let n=await lb(t.verb,t.value);n.kind===`ok`&&process.exit(0),n.kind===`transient`&&(jb(),process.stderr.write(`url-handle: daemon unavailable (${n.cause}: ${n.message})\n`),process.exit(1)),process.stderr.write(Qx(n)+`
129
- `),process.exit(1)}function Qx(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 $x(){return`✓ install complete.
123
+ Single-row example: root: { h: ["seg1", "seg2"] }`,line:W(e.source,[`layout`])}),t.root!==void 0&&(r.root=jl(e,`root`,t.root)),t.actions!==void 0&&(r.actions=X_(e,t.actions)),t.looks!==void 0&&(r.looks=zv(e,t.looks)),t.presets!==void 0&&(r.presets=Vv(e,t.presets)),t.editGlobals!==void 0&&(r.editGlobals=xs(e,`editGlobals`,t.editGlobals)),t.helpers!==void 0&&(r.helpers=Hv(e,t.helpers)),zl(e,r),Hh(e,r),Xh(e,r),_c(e,r,pc,`the global settings menu`),r}const Yy=new Set([`globals`,`variables`,`segments`,`layout`,`root`,`actions`,`looks`,`presets`,`editGlobals`,`helpers`]);function Xy(e){let t=eb(e.termCols),n=eb(e.termRows),r=tb(e.ssh),i=Qy(e.tmux),a=Zy(e.configEnv);return{...t!==void 0&&{termCols:t},...n!==void 0&&{termRows:n},...r!==void 0&&{ssh:r},...i!==void 0&&{tmux:i},...a!==void 0&&{configEnv:a}}}function Zy(e){return typeof e==`string`&&e!==``?My(e):void 0}function Qy(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 $y=1e4;function eb(e){if(typeof e!=`number`||!Number.isFinite(e))return;let t=Math.floor(e);if(!(t<=0))return t>$y?$y:t}function tb(e){return typeof e==`boolean`?e:void 0}var nb=class extends Error{constructor(e){super(e),this.name=`ProtocolError`}};function rb(e){let t=Buffer.from(JSON.stringify(e),`utf8`),n=Buffer.alloc(4);return n.writeUInt32BE(t.length,0),Buffer.concat([n,t])}function ib(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 nb(`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 nb(e instanceof Error?e.message:String(e));e instanceof Error&&(n.cause=e),t(n);return}}}}function ab(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=ib(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(rb(t))})}async function ob(e,t,n){let r=null;try{r=await db(Ne(),t.connectMs);let i=await ab(r,{v:3,...e},t.budgetMs);return lb(e.kind,i,n)}catch(e){return ub(e)}finally{r&&r.destroy()}}function sb(e,t){return typeof e==`string`?e:t}function cb(e){return typeof e==`number`&&Number.isInteger(e)&&e>=0?e:0}function lb(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=sb(r.error,`(no error message)`);switch(r.code){case`VERSION_MISMATCH`:return{kind:`permanent`,cause:`version_mismatch`,clientV:3,daemonV:cb(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 ub(e){if(e instanceof nb||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 db(e,t){return new Promise((n,r)=>{let i=g.createConnection({path:e}),a=setTimeout(()=>{i.destroy(),r(Error(`CONNECT_TIMEOUT`))},t);i.once(`connect`,()=>{clearTimeout(a),n(i)}),i.once(`error`,e=>{clearTimeout(a),r(e)})})}function fb(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 pb={connectMs:50,budgetMs:150},mb={connectMs:50,budgetMs:200};function hb(e){let t=e.output;return typeof t==`string`?t:void 0}function gb(e,t,n,r){return ob({kind:`render`,hookData:e,args:t,cwd:n,...r},pb,hb)}function _b(e,t){return ob({kind:`click`,verb:e,value:t},mb,hb)}let vb=null;function yb(e){if(vb!==null)return vb;r.mkdirSync(c.dirname(e),{recursive:!0});try{vb=r.statSync(e).size}catch{vb=0}return vb}function bb(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{}vb=0}function Y(e,t){let n=`${new Date().toISOString()} [${e}] ${t}\n`;try{let e=Ge(),t=yb(e);r.appendFileSync(e,n),vb=t+Buffer.byteLength(n,`utf8`),vb>=5242880&&bb(e)}catch(e){vb=null;try{process.stderr.write(`${n}cc-candybar: daemon.log unwritable: ${e.message}\n`)}catch{}}}function xb(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(`
124
+ `)}function Sb(e,t){return e===`darwin`?[Cb(`footprint`,[`-p`,String(t)]),Cb(`vmmap`,[`--summary`,String(t)])]:e===`linux`?[wb(`/proc/self/smaps_rollup`),wb(`/proc/self/status`)]:[]}function Cb(e,t){return{name:`${e} ${t.join(` `)}`,read:()=>{let n=Ee({bin:e,args:[...t],timeoutMs:5e3,category:`limits.memory-report`});return n.ok?n.stdout.trim().length>0?{kind:`text`,text:n.stdout}:{kind:`unavailable`,reason:`exited 0 but printed nothing`}:{kind:`unavailable`,reason:`${n.reason}${n.error===void 0?``:`: ${n.error}`}${Tb(n.stderr)}`}}}}function wb(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 Tb(e){let t=e.split(`
125
+ `).map(e=>e.trim()).find(e=>e.length>0);return t===void 0?``:` (${t})`}const Eb=`CC_CANDYBAR_RSS_LIMIT_MB`;function Db(e){let t=e[Eb];if(t===void 0)return 512;let n=/^\d+$/.test(t)?Number(t):NaN;if(!Number.isSafeInteger(n)||n<=0)throw Error(`${Eb} must be a positive integer (MB), got ${JSON.stringify(t)}`);return n}function Ob(e){return Db(e)*2}const kb=1024*1024;function Ab(e){return Db(e)*kb}const jb={memoryReport:{prefix:`memory-`,suffix:`.txt`},heapSnapshot:{prefix:`heap-`,suffix:`.heapsnapshot`}};function Mb(e,t,n){let{prefix:r,suffix:i}=jb[t];return c.join(e,`${r}${n}${i}`)}function Nb(e){for(let t of Object.keys(jb)){let{prefix:n,suffix:r}=jb[t];if(e.startsWith(n)&&e.endsWith(r))return t}return null}function Pb(e){let t=e.rssLimitBytes??512*kb,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 Fb(e.log,`memory report`,()=>{let t=Mb(e.snapshotDir,`memoryReport`,o);e.writeMemoryReport(t,e.captureMemoryReport()),e.log(`info`,`memory report written: ${t}`)}),Fb(e.log,`heap snapshot`,()=>{let t=Mb(e.snapshotDir,`heapSnapshot`,o);e.log(`info`,`heap snapshot written: ${e.writeHeapSnapshot(t)}`)}),Fb(e.log,`artifact rotation`,()=>{Lb(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 Fb(e,t,n){try{n()}catch(n){e(`warn`,`${t} failed: ${n.message}`)}}function Ib(e){let t=e.slice(e.lastIndexOf(`/`)+1),n=Nb(t);if(n===null)return t;let{prefix:r,suffix:i}=jb[n];return t.slice(r.length,t.length-i.length)}function Lb(e,t,n){let r=new Map;for(let t of e){let e=Ib(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 Rb(e,t,n={}){let i=Me();return{now:()=>Date.now(),pid:process.pid,snapshotDir:i,log:Y,memoryBytes:()=>{let e=process.memoryUsage();return{rss:e.rss,heapTotal:e.heapTotal}},captureMemoryReport:()=>xb(Sb(process.platform,process.pid)),writeMemoryReport:(e,t)=>r.writeFileSync(e,t,{mode:384}),writeHeapSnapshot:e=>_.writeHeapSnapshot(e),listArtifacts:()=>{try{return r.readdirSync(i).filter(e=>Nb(e)!==null).map(e=>c.join(i,e))}catch{return[]}},removeFile:e=>r.unlinkSync(e),shutdown:t,startedAtMs:e,...n}}function zb(e={}){if(tx()!==null)return;let n=e.spawn??nx,r=Qb();if(r.kind===`contended`){let e=Vb();e!==null&&e>2e3&&(t.stderr.write(`cc-candybar: spawn-lock held ${e}ms (likely crashed holder) — spawning unlocked\n`),Bb(n));return}if(r.kind===`error`){t.stderr.write(`cc-candybar: spawn-lock unavailable (${r.reason}) — spawning unlocked\n`),Bb(n);return}try{Bb(n)}finally{ex()}}function Bb(e){Jb()&&Hb(e)}function Vb(){try{let e=r.statSync(Ve());return Date.now()-e.mtimeMs}catch{return null}}function Hb(e){try{e()||t.stderr.write(`cc-candybar: daemon spawn returned false (unable to resolve script path?)
126
+ `)}catch(e){t.stderr.write(`cc-candybar: daemon spawn failed: ${e.message}\n`)}}function Ub(e,t){return e===null?{kind:`allow`}:e<-1e4?{kind:`allow-future-garbage`,futureMs:-e}:e<t?{kind:`deny`}:{kind:`allow`}}function Wb(e){return Math.min(3e3*2**Math.min(Math.max(e,0),5),6e4)}function Gb(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 Kb(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 qb(){try{r.unlinkSync(Ue())}catch(e){e.code!==`ENOENT`&&t.stderr.write(`cc-candybar: could not reset spawn.backoff: ${e.message}\n`)}}function Jb(){let e=He(),n=Ue(),r=Gb(n),i=Ub(Yb(e),Wb(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`),Xb(e),Kb(n,Math.min(r+1,5)),!0)}function Yb(e){try{return Date.now()-r.statSync(e).mtimeMs}catch{return null}}function Xb(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 Zb=null;function Qb(){let e=Ve();for(let n=0;n<2;n++){try{let n=r.openSync(e,`wx`,384);try{r.writeSync(n,JSON.stringify({pid:t.pid,ts:Date.now()}))}catch{}return Zb={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(!$b(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 $b(e){try{let t=r.statSync(e);return Date.now()-t.mtimeMs>1e4}catch{return!0}}function ex(){if(!Zb)return;let{fd:e,path:t}=Zb;Zb=null;try{r.closeSync(e)}catch{}try{r.unlinkSync(t)}catch{}}function tx(){try{return r.mkdirSync(Me(),{recursive:!0}),null}catch(e){return`mkdir ${Me()}: ${e.message}`}}function nx(){let e=t.execPath,n=t.argv[1];return n?De({bin:e,args:[`--max-old-space-size=${Ob(t.env)}`,n,`daemon`],category:`daemon-spawn`}).ok:!1}const rx=`cc-candybar`,ix=`dispatch`,ax=`set-state`,ox=`step-state`,sx=`copy`,cx=`open-vscode`,lx=`toolbar-toggle`,ux=`show-config-error`,dx=`show-config-warning`,fx=`set-config`,px=`step-config`,mx=`reset-config`,hx=`apply-layout-op`,gx=`undo`,_x=`redo`,vx=`apply-update`,yx=`doctor-run`,bx=`doctor-fix`;function xx(e){return e.map(encodeURIComponent).join(`/`)}function Sx(e){return e.length===0?[]:e.split(`/`).map(decodeURIComponent)}function Cx(e){return`${rx}://${ix}/${e.map(e=>`e=${encodeURIComponent(`${e.verb}/${xx(e.args)}`)}`).join(`&`)}`}function wx(e){return new y(e).getAll(`e`).map(Dx)}function Tx(e){return e.reduce((e,t)=>{let n=e.at(-1),r=n&&Ex(n,t);return r?[...e.slice(0,-1),r]:[...e,t]},[])}function Ex(e,t){if(e.verb!==`set-state`||t.verb!==`set-state`)return;let[n,r]=[Dx(e.value),Dx(t.value)];return n.verb===r.verb?{verb:ax,value:`${n.verb}/${n.value}/${r.value}`}:void 0}function Dx(e){let t=e.indexOf(`/`);return t===-1?{verb:e,value:``}:{verb:e.slice(0,t),value:e.slice(t+1)}}const Ox=`1.78.0`;function kx(){return c.join(f.homedir(),`.claude`,`settings.json`)}function X(e){return{kind:`ok`,value:e}}const Z={kind:`absent`};function Q(e){return{kind:`failed`,reason:e}}function Ax(e,t){return e?.kind===`ok`?e.value:t}const jx=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/;function Mx(e){let t=jx.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 Nx(e){return e.join(`.`)}function Px([e,t,n],[r,i,a]){return e-r||t-i||n-a}const Fx=`@promptctl/cc-candybar`;async function Ix(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 Q(`registry responded ${e.status} for ${r}`);let n=await e.json();return typeof n.latest==`string`?Mx(n.latest):Z}catch(e){return Q(e instanceof Error?e.message:String(e))}}function Lx(e,t){let n=Mx(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=Px(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 Rx(e,t){switch(t.kind){case`current`:return{stream:`stdout`,text:`✓ cc-candybar ${Nx(t.installed)} is the latest release.\n`};case`ahead`:return{stream:`stdout`,text:`cc-candybar ${Nx(t.installed)} is newer than the registry's latest release (${Nx(t.latest)}): an unpublished build.\n`};case`stale`:{let n=Nx(t.latest);return{stream:`stderr`,text:`⚠ cc-candybar ${Nx(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 zx=`CCCandybarURLHandler`,Bx=[],Vx={"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 Hx(e){return/^[A-Za-z0-9_./=,:-]+$/.test(e)?e:`'${e.replace(/'/g,`'\\''`)}'`}function Ux(e,t){return[e,...t].map(Hx).join(` `)}function Wx(){return c.join(f.homedir(),`Applications`,`${zx}.app`)}function Gx(){if(process.platform!==`darwin`)throw Error(`URL handler installation requires macOS (found platform: ${process.platform}).`)}function Kx(){if(process.platform===`darwin`)return c.join(f.homedir(),`Library`,`Application Support`,`CCCandybar`);let e=process.env.XDG_DATA_HOME??c.join(f.homedir(),`.local`,`share`);return c.join(e,`cc-candybar`)}function qx(){return c.join(Kx(),`bin`,`cc-candybar`)}function Jx(){return c.join(Kx(),`dist`,`index.mjs`)}function Yx(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(`
127
+ `)}function Xx(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 Zx(t){let n=Vx[`${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 Qx(e,t){c.resolve(e)!==c.resolve(t)&&r.copyFileSync(e,t)}function $x(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 ${Fx}@latest install`);return n.toString(`latin1`)===`#!`?`node-shim`:`native`}finally{r.closeSync(t)}}function eS(){let e=Xx(process.argv[1]);if(!r.existsSync(e))throw Error(`install: bundled dist not found at ${e}. Reinstall the package.`);let t=Zx(e);if(!r.existsSync(t.sourcePath))throw Error(`install: render entry not found at ${t.sourcePath}. Reinstall the package.`);r.mkdirSync(c.dirname(Jx()),{recursive:!0}),r.mkdirSync(c.dirname(qx()),{recursive:!0}),Qx(e,Jx()),Qx(t.sourcePath,qx()),r.chmodSync(qx(),493),r.rmSync(c.join(Kx(),`url-handler.mjs`),{force:!0});let n=$x(qx());return process.stdout.write(`Staged cc-candybar v${Ox} runtime at ${Kx()}\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:qx(),distPath:Jx(),entryKind:n}}function tS(){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>${rx}</string>`,` </array>`,` </dict>`,`</array>`].join(`
128
+ `)}]}function nS(e){let t=Wx();r.mkdirSync(c.dirname(t),{recursive:!0}),r.existsSync(t)&&r.rmSync(t,{recursive:!0,force:!0}),process.stdout.write(`Building ${t}\n`);let n=Ee({bin:`/usr/bin/osacompile`,args:[`-o`,t,`-e`,Yx(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 tS())Ee({bin:`/usr/bin/plutil`,args:[`-remove`,e,i],category:`install.plutil`});for(let{key:e,xml:t}of tS()){let n=Ee({bin:`/usr/bin/plutil`,args:[`-insert`,e,`-xml`,t,i],category:`install.plutil`});if(!n.ok)throw process.stderr.write(n.stderr),Error(`plutil -insert ${e} failed (${n.reason})`)}process.stdout.write(`Registering ${rx}:// with Launch Services\n`);let a=Ee({bin:`/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister`,args:[`-f`,t],category:`install.lsregister`});if(!a.ok)throw process.stderr.write(a.stderr),Error(`lsregister failed (${a.reason})`);process.stdout.write(`✓ ${zx}.app installed and registered.\n`),process.stdout.write(` Test: open '${rx}://hello-world' && pbpaste\n`)}function rS(){Gx(),nS(eS().distPath)}function iS(e,t=rx){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:sx,value:r}:{verb:decodeURIComponent(r.slice(0,i)),value:r.slice(i+1)}}async function aS(e){e||(process.stderr.write(`url-handle: missing URL argument.
129
+ `),process.exit(1));let t;try{t=iS(e)}catch(e){process.stderr.write(`url-handle: ${e instanceof Error?e.message:String(e)}\n`),process.exit(1)}let n=await _b(t.verb,t.value);n.kind===`ok`&&process.exit(0),n.kind===`transient`&&(zb(),process.stderr.write(`url-handle: daemon unavailable (${n.cause}: ${n.message})\n`),process.exit(1)),process.stderr.write(oS(n)+`
130
+ `),process.exit(1)}function oS(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 sS(){return`✓ install complete.
130
131
  Restart Claude Code to pick up the new statusline.
131
- Tip: every bar carries a settings menu — click it (${Wo} by\n default) for quick actions, preset switching, edit mode, and clickable\n theme/look/style/wrap/padding controls.\n`}async function eS(e){let t=e.includes(`--force`),n=e.filter(e=>e!==`--force`),r=n.length>0?n:[...Mx],i=Kx();process.platform===`darwin`?Jx(i.distPath):process.stdout.write(`Skipping URL handler (cmd-click verbs are macOS-only).
132
- `),tS(i.binPath,r,t),process.stdout.write($x());let a=Ax(Dx,kx(bx,await Ox(Dx,fetch,`https://registry.npmjs.org`)));process[a.stream].write(a.text)}function tS(e,t,n,i){let a=i??xx();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,Px(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:Fx(e,t)},ke(a,JSON.stringify(o,null,2)),process.stdout.write(`Updated ${a}\n`)}function nS(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 rS(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 iS(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 aS(e,t){let n=rS(e);if(n.kind===`owned`&&n.pid===t)try{r.unlinkSync(e)}catch{}}function oS(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 sS(e,t,n,r){let i=cS(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 cS(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 lS(e){let t=!1;function n(){let n=sS(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 uS(e,t=Ee){let n=t({bin:`ps`,args:[`-o`,`lstart=`,`-p`,String(e)],category:`process-fingerprint`,timeoutMs:2e3,env:{...process.env,LC_ALL:`C`,TZ:`UTC`}});if(n.ok){let e=n.stdout.trim();return e.length>0?{kind:`start`,token:e}:{kind:`unavailable`,detail:`ps produced no start-time`}}return{kind:`unavailable`,detail:n.reason===`spawn-error`?n.error??`ps spawn failed`:`ps ${n.reason} (exit ${n.exitCode})`}}function dS(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 fS(e,t=uS){let n=t(e);return n.kind===`start`?n.token:null}const pS=`CC_CANDYBAR_PARENT_PID`;function mS(e){let t=e[pS];if(t===void 0)return{kind:`outlives-nobody`};let n=Number.parseInt(t,10);if(!Number.isInteger(n)||n<=0)throw Error(`${pS} must be a positive integer pid, got ${JSON.stringify(t)}`);return{kind:`anchored`,pid:n}}function hS(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 gS(e){try{return t.kill(e,0),!0}catch(e){return e.code===`EPERM`}}function _S(){let e=Number(process.env.CC_CANDYBAR_DAEMON_CEILING??``);return Number.isInteger(e)&&e>0?e:16}function vS(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 yS(e){try{return r.readdirSync(e).filter(e=>e.endsWith(`.json`)).map(t=>c.join(e,t))}catch{return[]}}function bS(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 xS(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 SS(e){if(!e.isolated)return{decision:vS(!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=vS(!0,xS(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 CS(e,t,n,r){let i=n(e);if(i!==null&&i.pid===t)try{r(e)}catch{}}function wS(e,t={}){return{isolated:!!process.env.CC_CANDYBAR_SOCKET,registryDir:Be(),ceiling:_S(),pid:process.pid,startTime:e,isSameLiveProcess:(e,t)=>dS(e,t,{readStartTime:uS,pidAlive:gS}),listFiles:yS,readEntry:bS,removeFile:e=>{try{r.unlinkSync(e)}catch{}},writeEntry:(e,t)=>{let n=`${e}.${t.pid}.tmp`;try{r.writeFileSync(n,JSON.stringify(t),{mode:384}),r.renameSync(n,e)}catch(e){try{r.unlinkSync(n)}catch(e){e.code}throw e}},ensureDirSafe:process.env.CC_CANDYBAR_DAEMON_REGISTRY_DIR?Pe:e=>{Pe(c.dirname(e)),Pe(e)},...t}}function TS(e){return e<32||e===127||e>=128&&e<=159}function ES(e){let t=``;for(let n of e)t+=TS(n.codePointAt(0)??0)?` `:n;return t.replace(/\s+/g,` `).trim()}function DS(e,t){let n=ES(e),r=``,i=0;for(let e of n){if(i===t)return r.replace(/.$/u,`…`);r+=e,i++}return r}const OS=`\x1B[38;2;255;255;255m`,kS=`\x1B[48;2;200;40;40m`;function AS(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 jS={fg:AS(OS),bg:AS(kS)},MS={fg:AS(`\x1B[38;2;0;0;0m`),bg:AS(`\x1B[48;2;220;160;40m`)},NS=`unicode`,PS={unicode:pi,ascii:{glyph:`>`,divider:`|`}},FS={unicode:{},ascii:{left:`(`,right:`)`}};function IS(e,t,n){switch(e){case`capsule`:return new hi(FS[t]);case`plain`:return new gi(n===void 0?{}:{separator:n});case`powerline`:return new mi(PS[t]);default:return e}}function LS(e){switch(e){case`powerline`:return 1;case`capsule`:return 2;case`plain`:return 0;default:return e}}const RS=new Map;function zS(e){let t=JSON.stringify([e.style,e.charset,e.separator??null]),n=RS.get(t);if(n!==void 0)return n;let r=IS(e.style,e.charset,e.separator),i=e=>new V(`x`,{end:``,noWrap:!0,style:new z({bgcolor:e})}),a=e=>new V(yi(new oi(e,r),{colorSystem:null}).replace(/\n$/,``)).cellLength,o=a([i(`#101010`),i(`#202020`)])-a([i(`#101010`)])-1;return RS.set(t,o),o}function BS(e,t){if(e.length===0)return``;let n=IS(t.style,t.charset,t.separator),r=t.colorCompatibility,i=t.wrap&&Number.isFinite(t.width)?yi(new Ti([...e],{joiner:n}),{width:t.width,colorSystem:r}):yi(new oi([...e],n),{colorSystem:r});if(!i.endsWith(`
133
- `))throw Error(`renderStripCells: rich-js strip output did not end its last line`);return i.slice(0,-1)}function VS(e){return Math.min(20,e??20)}const HS={heading:`ERROR`,glyph:`⚠`,colors:jS},US={heading:`WARNING`,glyph:`⚠`,colors:MS},WS={heading:`UPDATE`,glyph:`⬆`,colors:MS};function GS(e,t){return{text:ES(e),link:t}}function KS(e,t,n){let[r,...i]=[qS(e,HS,nx),t,qS(n,US,rx)].flat();return r===void 0?null:{channels:[r,...i]}}function qS(e,t,n){let r=hx([{verb:n,args:[e]}]),[i,...a]=e.split(/\r\n|\r|\n/).map(e=>GS(e,r)).filter(e=>e.text!==``).map(e=>[e]);return i===void 0?[]:[{severity:t,message:e,lines:[i,...a]}]}function JS(e){return e.channels.map(e=>`${e.severity.heading}\n${e.message}\n`).join(`
134
- `)}function YS(e,t,n,r){if(t===null)return e;let i=XS(r),a=t.channels.flatMap(e=>ZS(e,i)),o=n.failedConfigFile!==null||a.length>r.rowCap,s=a.slice(0,r.rowCap-Number(o)),c=o?[QS(t,n,a.length-s.length,i)]:[],l=[...s,...c].join(`
135
- `);return e?`${l}\n${e}`:l}function XS(e){return{style:`plain`,separator:``,width:e.width,wrap:!0,padding:0,charset:`unicode`,colorCompatibility:e.colorCompatibility}}function ZS(e,t){let n=new z({bgcolor:e.severity.colors.bg,color:e.severity.colors.fg}),r=Rt(Math.max(2,t.width-1)),i=(e,t)=>new V(`${e} `,{style:t,end:``,noWrap:!0});return e.lines.flatMap((a,o)=>BS([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=>Ht(e,r)).map(e=>i(e,t))})],t).split(`
136
- `))}function QS(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:``,noWrap:!0}),l=n>0?[c(`${n} more rows · `,s),a.kind===`file`?c(`open full text`,s.withLink(x(a.path).href)):c(`full text unavailable: ${ES(a.reason)}`,s)]:[],u=o===null?[]:[c(`${l.length>0?` · `:``}open `,s),c(ES(o),s.withLink(x(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.noWrap=!0,BS([m],r)}const $S=e=>!e.startsWith(`.`)&&!e.endsWith(`~`);function eC(e,t){return t.isSymbolicLink()?Buffer.from(r.readlinkSync(e)):r.readFileSync(e)}function tC(e,t){return r.readdirSync(t).filter($S).sort().flatMap(n=>{let i=c.join(t,n),a=r.lstatSync(i,{throwIfNoEntry:!1});return a===void 0?[]:a.isDirectory()?tC(e,i):[[c.relative(e,i).split(c.sep).join(`/`),eC(i,a)]]})}function nC(e){let t=C.createHash(`sha256`);for(let[n,r]of tC(e,e))t.update(n).update(`\0`).update(r).update(`\0`);return t.digest(`hex`)}const rC=e=>e.slice(0,7);function iC(e){return c.dirname(c.dirname(e))}function aC(){return{version:bx,digest:`9ba1cf1bc590c3c287945efde026c86d6935da0aedffccb9811bb6b00a683546`}}function oC(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 sC(e,t){try{let n=iC(b(e)),i=c.join(n,`src`);if(!r.existsSync(i))return{kind:`not-source-checkout`};let a=t(),o=nC(i);return o===a.digest?{kind:`current`,root:n,stamp:a}:{kind:`stale`,root:n,source:{version:oC(n),digest:o},running:a}}catch(e){return{kind:`unchecked`,reason:e.message}}}var $=class extends Error{constructor(e){super(e),this.name=`BadVerbArgs`}};const cC=/^-?\d+$/;function lC(e,t,n){return e===void 0?t:Math.max(t,Math.min(n,e))}function uC(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 dC(e){return t=>{if(!t)return{ok:!1,reason:`${e} value is required`};if(!cC.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 fC(e,t,n){return r=>r?cC.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 pC(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=>!cC.test(e));if(o.length>0)throw Error(`${n} action table: key "${e}" is an integer spec (a paged cursor or a bounded value) but a click writes non-integer value(s) to it (${o.join(`, `)}). A ${n} key has one key shape — point that click at a distinct key, or write an integer.`);if(i&&r.length>0)throw Error(`${n} action table: key "${e}" is declared as both a paged cursor (int) and a bounded value (range) — a ${n} key has one key shape. Use distinct keys.`);if(r.length>0){let t=Math.min(...r.map(e=>e.min)),i=Math.max(...r.map(e=>e.max)),o=a.filter(e=>{let n=parseInt(e,10);return n<t||n>i});if(o.length>0)throw Error(`${n} action table: key "${e}" is a bounded range [${t},${i}] but a click writes out-of-range value(s) to it (${o.join(`, `)}). The range gate would clamp them, storing a different value than the click renders — write an in-range integer, or point that click at a distinct key.`);return{kind:`range`,min:t,max:i,seed:lC(r[0].seed,t,i)}}return{kind:`int`}}function mC(e){return e===`config`?`set-config`:`set-state`}function hC(e,t,n){return t.kind===`int`?dC(`menu page "${e}"`):t.kind===`range`?fC(t.min,t.max,`${n} stepper "${e}"`):uC(t.allowed,`${n} "${e}"`,mC(n))}function gC(e,t,n){return hC(e,pC(e,t,n),n)}function _C(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:pC(e,n,t)}))}function vC(e,t=`state`){let n=new Map(Object.entries(e).map(([e,t])=>[e,{validator:t,permanent:!0}]));function r(){let e=[];for(let[t,r]of n)r.permanent&&e.push(t);return e}return{register(e,i){if(!e)throw Error(`register: key is required`);if(e.includes(`/`))throw Error(`register: key "${e}" contains "/" — the wire shape splits on "/" so a slash-bearing key cannot be addressed. Use a slash-free key.`);let a=n.get(e);if(a){if(a.permanent)throw Error(`register: key "${e}" is a built-in ${t} key and cannot be re-claimed (built-in keys: ${[...r()].join(`, `)})`);if(a.kind!==i.kind)throw Error(`register: key "${e}" is already a ${a.kind} ${t} key; cannot also register it as ${i.kind}. A ${t} key has one key shape — a menu page index (int) and a button allow-list cannot share a key.`);a.specs.push(i),a.validator=gC(e,a.specs,t)}else{let r=[i];n.set(e,{permanent:!1,kind:i.kind,validator:gC(e,r,t),specs:r})}let o=!0;return()=>{if(!o)return;o=!1;let r=n.get(e);if(!r||r.permanent)return;let a=r.specs.indexOf(i);a>=0&&r.specs.splice(a,1),r.specs.length===0?n.delete(e):r.validator=gC(e,r.specs,t)}},validate(e,r){let i=n.get(e);return i?i.validator(r):{ok:!1,reason:`unknown ${t} key "${e}" (have: ${[...n.keys()].join(`, `)})`}},listKeys(){return[...n.keys()]},listBaselineKeys(){return r()},rangeParamsFor(e){let r=n.get(e);if(!r||r.permanent||r.kind!==`range`)return null;let i=pC(e,r.specs,t);if(i.kind!==`range`)throw Error(`rangeParamsFor: key "${e}" holds range specs but the merge produced a ${i.kind} spec — the entry-kind invariant is broken.`);return{min:i.min,max:i.max,seed:i.seed}}}}const yC=vC({},`config`);function bC(){return yC.listKeys()}function xC(e,t){return yC.validate(e,t)}function SC(e){return yC.rangeParamsFor(e)}function CC(e,t,n){return`persist`in e?`to`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:[e.to]}}]:`from`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:Yv(e.from,n).members}}]:`cycle`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:e.cycle}}]:`removeSegment`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:[Gh({op:`remove`,target:e.removeSegment})]}}]:`insertSegment`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:[Gh({op:`insert`,segment:e.insertSegment,anchor:e.anchor,relation:e.relation})]}}]:`insertSegmentFrom`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:Yv(e.insertSegmentFrom,n).members.map(t=>Gh({op:`insert`,segment:t,anchor:e.anchor,relation:e.relation}))}}]:[{key:e.persist,spec:{kind:`range`,min:e.min,max:e.max,seed:lC(t.get(e.persist),e.min,e.max)}}]:[]}function wC(e){return bs(e.globals)}function TC(e){let t=new Set;for(let n of DC(e)){let e=`persist`in n?n.persist:`reset`in n?n.reset:null;if(e===null)continue;let r=ig(e);r?.scope===`preset-root`&&t.add(r.preset)}return[...t].map(e=>({key:rg(e),spec:{kind:`allow-list`,allowed:[]}}))}function EC(e){let t=wC(e),n=new Map([...qv(e),..._g(e)]);return[...TC(e),...DC(e).flatMap(e=>CC(e,t,n))]}function DC(e){return Object.values(e.actions).flatMap(P_)}function OC(e){return _C(EC(e),`config`)}function kC(e,t){return yC.register(e,t)}const AC=ji(),jC=new Set(AC),MC=new Set(Bi),NC=e=>e?jC.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown theme "${e}" (have: ${AC.join(`, `)})`}:{ok:!1,reason:`theme name is required`},PC=e=>e?MC.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown style "${e}" (have: ${Bi.join(`, `)})`}:{ok:!1,reason:`style name is required`},FC=new Set([`1`,`true`]),IC=new Set([`0`,`false`]),LC=vC({style:PC,theme:NC,"toolbar-expanded":e=>FC.has(e)?{ok:!0,value:`1`}:IC.has(e)?{ok:!0,value:``}:{ok:!1,reason:`expected boolean-ish (1, 0, true, false), got "${e}"`}});function RC(){return LC.listKeys()}function zC(e,t){return LC.register(e,t)}function BC(e,t){return LC.validate(e,t)}function VC(e){return LC.rangeParamsFor(e)}function HC(e,t,n){return`set`in e?`to`in e?[{key:e.set,spec:{kind:`allow-list`,allowed:[e.to]}}]:`from`in e?[{key:e.set,spec:{kind:`allow-list`,allowed:Yv(e.from,n).members}}]:`int`in e?[{key:e.set,spec:{kind:`int`}}]:`cycle`in e?[{key:e.set,spec:{kind:`allow-list`,allowed:e.cycle}}]:[{key:e.set,spec:{kind:`range`,min:e.min,max:e.max,seed:lC(t.get(e.set),e.min,e.max)}}]:[]}function UC(e){let t=new Set(LC.listBaselineKeys());return e.filter(e=>e.spec.kind!==`allow-list`||!t.has(e.key))}function WC(e){let t=new Map,n=/^-?\d+$/;for(let r of Object.values(e.variables)){if(r.kind!==`state`)continue;let e=r.default;e!==void 0&&n.test(e)&&t.set(r.key,parseInt(e,10))}for(let[n,r]of bs(e.globals))t.set(n,r);return t}function GC(e){let t=WC(e),n=qv(e);return UC(Object.values(e.actions).flatMap(P_).flatMap(e=>HC(e,t,n)))}function KC(e){return _C(GC(e))}const qC=`update.dismissed`,JC=`updateNotice`;function YC(e){return e.kind===`source`?e.newer.digest:Tx(e.newer)}const XC=e=>`${e.version} [${rC(e.digest)}]`;function ZC(e){switch(e.kind){case`source`:return{headline:`Newer source`,newer:XC(e.newer),running:XC(e.running),act:`rebuild`,busy:`rebuilding…`,command:{bin:`pnpm`,args:[`build`],cwd:e.root}};case`release`:return{headline:`Newer release`,newer:Tx(e.newer),running:Tx(e.running),act:`upgrade`,busy:`upgrading…`,command:{bin:`pnpm`,args:[`dlx`,`${Dx}@${Tx(e.newer)}`,`install`]}}}}const QC={kind:`idle`},$C={kind:`running`};function ew(e,t,n){if(e===null)return[];let r=YC(e);if(!n.enabled||n.dismissed===r)return[];let i=ZC(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(`
137
- `),c=hx([{verb:rx,args:[s]}]),l=t.kind===`running`?GS(`[${i.busy}]`,c):GS(`[${i.act}]`,hx([{verb:ux,args:[n.sessionId]}]));return[{severity:WS,message:s,lines:[[GS(a,c),l,GS(`[dismiss]`,hx([{verb:Zb,args:[n.sessionId,qC,r]}])),GS(`[disable]`,hx([{verb:ix,args:[n.sessionId,JC,`false`]}]))],...o.map(e=>[GS(e,c)])]}]}function tw(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 nw(e){switch(e.kind){case`current`:return[`info`,`build: current ${XC(e.stamp)}`];case`stale`:return[`info`,`build: stale — source ${XC(e.source)}, running ${XC(e.running)}`];case`not-source-checkout`:return[`info`,`build: not a source checkout`];case`unchecked`:return[`warn`,`build: unchecked: ${e.reason}`]}}function rw(e){switch(e.kind){case`current`:return[`info`,`release: current ${Tx(e.installed)}`];case`stale`:return[`info`,`release: stale — latest ${Tx(e.latest)}, running ${Tx(e.installed)}`];case`ahead`:return[`info`,`release: ahead — running ${Tx(e.installed)}, latest ${Tx(e.latest)}`];case`unchecked`:return[`warn`,`release: unchecked: ${e.reason}`]}}function iw(e){let t=null;return([n,r])=>{r!==t&&(t=r,e(n,r))}}const aw=e=>e.split(/\r?\n/).map(e=>e.trim()).filter(e=>e!==``).at(-1);function ow(e){let t=e.exitCode===null?``:` (exit ${e.exitCode})`,n=aw(e.stderr)??e.error??aw(e.stdout)??`no output`;return`${e.reason}${t}: ${n}`}function sw(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=QC,d=null,f=iw(s),p=iw(s),m=()=>tw(c,l);function h(){let e=m(),t=e===null?null:YC(e);(d===null?null:d.identity)!==t&&(d?.dispose(),d=t===null?null:{identity:t,dispose:zC(qC,{kind:`allow-list`,allowed:[t]})})}function g(){c=sC(t,aC),f(nw(c)),h()}async function _(){l=kx(bx,await Ox(Dx,a,i)),p(rw(l)),h()}return{arm(){kC(JC,{kind:`allow-list`,allowed:[`false`]}),g(),setInterval(g,n).unref(),c.kind===`not-source-checkout`&&(_(),setInterval(()=>void _(),r).unref())},notice:e=>ew(m(),u,e),act(){let e=m();if(e===null)throw new $(`apply-update: nothing newer is known to apply`);let t=ZC(e);if(u.kind===`running`)throw new $(`apply-update: already ${t.busy}`);u=$C,s(`info`,`apply-update: ${t.act} — ${t.command.bin} ${t.command.args?.join(` `)??``}`),Te({...t.command,category:`update.apply`,timeoutMs:6e5}).then(n=>{if(n.ok){u=QC,s(`info`,`apply-update: ${t.act} succeeded`),g(),o();return}let r=ow(n);u={kind:`failed`,identity:YC(e),reason:r},s(`error`,`apply-update: ${t.act} failed: ${r}`)})}}}function cw(e,t,n){return t.ok?X(t.stdout):t.reason===`non-zero`&&n===`absent`||t.reason===`non-zero`&&n===t.exitCode?Z:Q(`${e}: ${[t.reason,t.exitCode==null?null:`exit ${t.exitCode}`,t.error??lw(t.stderr)].filter(Boolean).join(`, `)}`)}function lw(e){return e.trim().split(`
138
- `,1)[0]??``}function uw(e,t){if(e.kind!==`ok`)return e;let n=t(e.value);return n===null?Z:X(n)}function dw(e){if(e.kind!==`ok`)return e;let t=e.value.trim();return t?X(t):Z}const fw=/^[A-Za-z]:[\\/]/;function pw(e){let t=e.trim();if(fw.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 mw(e){return pw(e)?.host||null}function hw(e){let t=mw(e);return t?t===`github.com`||t.endsWith(`.github.com`)?`github`:/(^|\.)gitlab\./.test(t)?`gitlab`:null:null}function gw(e){let t=new Map;for(let n of e.split(`
139
- `)){let e=n.match(/^remote\.(.+)\.url\s+(\S.*)$/);if(!e)continue;let r=t.get(e[1])??[];r.push(e[2].trim()),t.set(e[1],r)}return[...t].map(([e,t])=>({name:e,urls:t}))}function _w(e){return e.urls.find(e=>Sw(e)!==null)??e.urls[0]??null}function vw(e){return e.find(e=>e.name===`origin`)??e[0]??null}function yw(e){let t=vw(e);return t?_w(t):null}function bw(e){let t=vw(e);return t?t.urls.find(e=>hw(e)!==null)??_w(t):null}function xw(e){let t=(pw(e)?.path??e.replace(/[\\/]+$/,``)).split(`/`);return(t[t.length-1]??``).replace(/\.git$/,``)||null}function Sw(e){let t=pw(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 Cw(e){let t=yw(e);return t===null?null:Sw(t)}function ww(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)?Z:Q(`${e}: ${[t.reason,t.exitCode==null?null:`exit ${t.exitCode}`,t.error??lw(t.stderr)].filter(Boolean).join(`, `)}`)}function Tw(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Ew(e){let t=`detached`,n=Z,r=Z,i=Z,a=0,o=0,s=0,c=0;for(let l of e.split(`
140
- `)){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)`?Z:X(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=X(e.slice(16).trim());else if(e.startsWith(`branch.ab `)){let t=e.slice(10).trim().match(/^\+(\d+)\s+-(\d+)$/);t&&(i=X({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 Dw(e){let t;try{t=JSON.parse(e)}catch(e){return Q(`gh pr view: unparseable JSON (${e instanceof Error?e.message:String(e)})`)}if(!Tw(t))return Q(`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`?Q(`gh pr view: missing number/state/url`):r.toUpperCase()===`OPEN`?X({number:n,state:r,url:i}):Z}function Ow(e){let t;try{t=JSON.parse(e)}catch(e){return Q(`glab mr view: unparseable JSON (${e instanceof Error?e.message:String(e)})`)}if(!Tw(t))return Q(`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`?Q(`glab mr view: missing iid/state/web_url`):r.toLowerCase()===`opened`?X({number:n,state:r,url:i}):Z}function kw(e){try{let t=r.statSync(e);return{key:`${t.dev}:${t.ino}`,stamp:`${t.mtimeMs}:${t.size}`}}catch{return null}}var Aw=class{isGitRepo(e){try{return r.existsSync(c.join(e,`.git`))}catch{return!1}}async execGitAsync(e,t){return Te({bin:`git`,args:[...e],cwd:t.cwd,env:{...process.env,GIT_OPTIONAL_LOCKS:`0`},timeoutMs:t.timeout,category:`git`})}async resolveEffectiveGitDir(e,t){return this.isWorktree(e)?X(e):t&&this.isGitRepo(t)?X(t):this.isGitRepo(e)?X(e):this.findGitRoot(e)}async findGitRoot(e){let t=c.resolve(e);for(;;){if(this.isGitRepo(t))return X(t);let e=c.dirname(t);if(e===t)return Z;t=e}}async getGitInfo(e,t={},n){try{return await this.computeGitInfo(e,t,n)}catch(e){return Q(`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=uw(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=uw(s,e=>this.repoNameFrom(e,r)),o.isWorktree=i),s!==void 0&&t.showRepoUrl&&(o.repoUrl=uw(s,Cw)),t.showOperation&&(o.operation=this.getOngoingOperation(r)),X(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`))?X(`MERGE`):r.existsSync(c.join(t,`CHERRY_PICK_HEAD`))?X(`CHERRY-PICK`):r.existsSync(c.join(t,`REVERT_HEAD`))?X(`REVERT`):r.existsSync(c.join(t,`BISECT_LOG`))?X(`BISECT`):r.existsSync(c.join(t,`rebase-merge`))||r.existsSync(c.join(t,`rebase-apply`))?X(`REBASE`):Z}catch(e){return Q(`git operation probe: ${e instanceof Error?e.message:String(e)}`)}}async getNearestTagAsync(e){return dw(cw(`git describe --tags`,await this.execGitAsync([`describe`,`--tags`,`--abbrev=0`],{cwd:e,timeout:2e3}),`absent`))}async timeSinceCommit(e,t){return t.kind===`ok`?uw(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=dw(cw(`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)?Q(`git log -1: unparseable timestamp "${n.value}"`):X(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`?X(0):Q(`git stash reflog ${t}: ${e instanceof Error?e.message:String(e)}`)}let i=n.trim();return X(i?i.split(`
141
- `).length:0)}async getRemotesAsync(e){let t=kw(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=cw(`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:X(t.kind===`ok`?gw(t.value):[])}repoNameFrom(e,t){let n=yw(e);return(n===null?null:xw(n))??c.basename(t)}async getRepoRemoteUrl(e){let t=await this.getRemotesAsync(e);if(t.kind!==`ok`)return t;let n=bw(t.value);return n===null?Z:X(n)}async execForgeAsync(e,t,n){return Te({bin:e,args:[...t],cwd:n.cwd,env:{...process.env},timeoutMs:n.timeout,category:`forge`})}async resolvePullRequest(e,t){let n=hw(t);return n===`github`?ww(`gh pr view`,await this.execForgeAsync(`gh`,[`pr`,`view`,`--json`,`number,state,url`],{cwd:e,timeout:5e3}),/no (open )?pull requests? found/i,Dw):n===`gitlab`?ww(`glab mr view`,await this.execForgeAsync(`glab`,[`mr`,`view`,`--output`,`json`],{cwd:e,timeout:5e3}),/no (open )?merge requests? (found|available)/i,Ow):Z}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=cw(`git status --porcelain=v2 --branch`,await this.execGitAsync([`status`,`--porcelain=v2`,`--branch`],{cwd:e,timeout:2e3}),`failed`);return t.kind===`ok`?X(Ew(t.value)):t}};const jw=(e,t)=>D(t);var Mw=class{slots=new Map;maxWatchers;counters;logger;closed=!1;constructor(e={}){this.maxWatchers=e.maxWatchers??128,this.counters=e.counters,this.logger=e.logger??jw}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()}},Nw=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 Pw=(e,t)=>D(t),Fw={showSha:!0,showStashCount:!0};function Iw(e){let t=Object.keys(e).sort(),n={};for(let r of t)n[r]=e[r];return JSON.stringify(n)}function Lw(e){let t=t=>{try{return r.statSync(c.join(e,t)).mtimeMs}catch{return 0}};return{head:t(`HEAD`),index:t(`index`)}}function Rw(e,t){return e.head!==t.head||e.index!==t.index}function zw(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 Bw=class extends Aw{entries=new Map;subscribersByRepo=new Map;fetchInFlight=new Map;resolutions=new Map;prCache=new Map;prFetchInFlight=new Map;refreshes=new Nw;hits=0;misses=0;invalidations=0;inner;ttlMs;maxEntries;watchers;ownsWatchers;logger;sanityTimer=null;constructor(e={}){super(),this.inner=e.inner??new Aw,this.ttlMs=e.ttlMs??3e4,this.maxEntries=e.maxEntries??64,this.logger=e.logger??Pw,e.watchers?(this.watchers=e.watchers,this.ownsWatchers=!1):(this.watchers=new Mw({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}|${Iw(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(X(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=Lw(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}`,zw(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 Z;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}`,zw(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,{...Fw});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,{...Fw}),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=Lw(this.inner.resolveGitDir(t.repoRoot)),e.set(t.repoRoot,n)),Rw(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()}},Vw=class{static CACHE_DIR=O();static USAGE_CACHE_DIR=c.join(this.CACHE_DIR,`usage`);static LOCKS_DIR=c.join(this.CACHE_DIR,`locks`);static isLocked(e){let t=c.join(this.LOCKS_DIR,e);if(!r.existsSync(t))return!1;try{let n=r.readFileSync(t,`utf-8`),i=parseInt(n.trim(),10);if(isNaN(i))return D(`Invalid PID in lock file ${e}, removing stale lock`),r.unlinkSync(t),!1;try{return process.kill(i,0),!0}catch(n){return n.code===`ESRCH`?(D(`Removing stale lock file ${e} for dead process ${i}`),r.unlinkSync(t),!1):(D(`Error checking process ${i} for lock ${e}:`,n),!0)}}catch(t){return D(`Error reading lock file ${e}:`,t),!0}}static async acquireLock(e,t=5e3){await this.ensureCacheDirectories();let n=c.join(this.LOCKS_DIR,e),i=Date.now(),a=String(process.pid);for(;Date.now()-i<t;)try{return await r.promises.writeFile(n,a,{flag:`wx`}),D(`Lock acquired for ${e}`),!0}catch(e){if(e.code===`EEXIST`)await w(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 ee(`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 w(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 w(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 Hw={"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 Uw=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 Vw.getUsageCache(`pricing`,e)}static async saveDiskCache(e){await Vw.setUsageCache(`pricing`,e)}static async fetchPricingData(){return new Promise(e=>{let t=new v(this.GITHUB_PRICING_URL),n=te({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(Hw).length} models`),this.executionCache=Hw,D(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(Hw).length} models`),Hw)}static validatePricingData(e){if(!e||typeof e!=`object`)return!1;for(let[,t]of Object.entries(e)){if(!t||typeof t!=`object`)return!1;let e=t;if(typeof e.input!=`number`||typeof e.output!=`number`||typeof e.cache_read!=`number`)return!1}return!0}static async getModelPricing(e){if(this.modelPricingCache.has(e))return D(`[CACHE-HIT] Model pricing cache: ${e}`),this.modelPricingCache.get(e);let t=await this.getCurrentPricing(),n;return n=t[e]?t[e]:this.fuzzyMatchModel(e,t),this.modelPricingCache.set(e,n),D(`[CACHE-SET] Model pricing cache: ${e}`),n}static fuzzyMatchModel(e,t){let n=e.toLowerCase();for(let[e,r]of Object.entries(t))if(e.toLowerCase()===n)return r;for(let{pattern:e,fallback:r}of[{pattern:[`opus-4-6`,`claude-opus-4-6`],fallback:`claude-opus-4-6-20260205`},{pattern:[`opus-4-5`,`claude-opus-4-5`],fallback:`claude-opus-4-5-20251101`},{pattern:[`opus-4-1`,`claude-opus-4-1`],fallback:`claude-opus-4-1-20250805`},{pattern:[`opus-4`,`claude-opus-4`],fallback:`claude-opus-4-20250514`},{pattern:[`sonnet-4-6`,`sonnet-4.6`,`claude-sonnet-4-6`],fallback:`claude-sonnet-4-6`},{pattern:[`sonnet-4.5`,`4-5-sonnet`,`sonnet-4-5`],fallback:`claude-sonnet-4-5-20250929`},{pattern:[`sonnet-4`,`claude-sonnet-4`],fallback:`claude-sonnet-4-20250514`},{pattern:[`haiku-4.5`,`4-5-haiku`,`haiku-4-5`],fallback:`claude-haiku-4-5-20251001`},{pattern:[`haiku`],fallback:`claude-haiku-4-5-20251001`},{pattern:[`opus`],fallback:`claude-opus-4-20250514`},{pattern:[`sonnet`],fallback:`claude-sonnet-4-5-20250929`}])if(e.some(e=>n.includes(e))&&t[r])return t[r];return t[`claude-sonnet-4-5-20250929`]||{name:`${e} (Unknown Model)`,input:3,cache_write_5m:3.75,cache_write_1h:6,cache_read:.3,output:15}}static async calculateCostForEntry(e){let t=e.message?.usage;if(!t)return 0;let n=this.extractModelId(e),r=await this.getModelPricing(n),i=t.input_tokens||0,a=t.output_tokens||0,o=t.cache_creation_input_tokens||0,s=t.cache_read_input_tokens||0,c=i/1e6*r.input,l=a/1e6*r.output,u=s/1e6*r.cache_read,d=o/1e6*r.cache_write_5m;return c+l+d+u}static extractModelId(e){if(e.model&&typeof e.model==`string`)return e.model;let t=e.message;if(t?.model){let e=t.model;if(typeof e==`string`)return e;let n=e;return(typeof n?.id==`string`?n.id:null)||`claude-sonnet-4-5-20250929`}return e.model_id&&typeof e.model_id==`string`?e.model_id:`claude-sonnet-4-5-20250929`}};function Ww(e){if(!e)return 0;try{return o(e).mtimeMs}catch{return 0}}const Gw=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 Kw(e){return((...t)=>Gw.run(()=>e(...t)))}const qw=Kw(ie),Jw=Kw(re),Yw=Kw(T);async function Xw(e,t){return Gw.run(async()=>{let n=null;try{n=await ne(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 X({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 X({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`?Z:Q(`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 Zw(e,t){return Gw.run(async()=>{let n=null;try{n=await ne(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 X({buf:o===a.length?a:a.subarray(0,o),fromStart:i===0})}catch(t){return t.code===`ENOENT`?Z:Q(`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 Qw=/<command-name>\s*([^<\s][^<]*?)\s*<\/command-name>/;function $w(e){if(typeof e==`string`)return Qw.exec(e)?.[1]}function eT(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 tT(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=eT(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?$w(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 nT(){let e=[],t=process.env.CLAUDE_CONFIG_DIR;if(t&&t.split(`,`).forEach(t=>{let n=t.trim();a(n)&&e.push(n)}),e.length===0){let t=p(),n=d(t,`.config`,`claude`),r=d(t,`.claude`);a(n)&&e.push(n),a(r)&&e.push(r)}return e}async function rT(e){let t=[];for(let n of e){let e=d(n,`projects`);if(a(e))try{let n=await qw(e,{withFileTypes:!0});for(let r of n)if(r.isDirectory()){let n=d(e,r.name);t.push(n)}}catch(t){D(`Failed to read projects directory ${e}:`,t)}}return t}async function iT(e,t,n){let r=[],i=d(t,e,`subagents`);try{let t=(await qw(i)).filter(e=>e.startsWith(`agent-`)&&e.endsWith(`.jsonl`));for(let a of t){let t=d(i,a);if(n?.has(t)){r.push(t);continue}try{let n=(await Jw(t,`utf-8`)).split(`
142
- `)[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 aT(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 oT=new Map;async function sT(e){try{let t=await Yw(e),n=t.size,r=oT.get(e);if(r&&r.mtime===t.mtimeMs&&r.size===n)return D(`[parse-cache] hit ${e}`),oT.delete(e),oT.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 fT(e)):i=await uT(e),D(`Parsed ${i.length} entries from ${e}`),n>5242880?i:(oT.delete(e),oT.size>=16&&oT.delete(oT.keys().next().value),oT.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 cT(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:tT(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 lT(e){let t=[];for(let n of e.split(`
143
- `))if(n.trim())try{let e=cT(JSON.parse(n));e&&t.push(e)}catch(e){D(`Failed to parse JSONL line: ${e}`);continue}return t}async function uT(e){return lT(await Jw(e,`utf-8`))}async function dT(e,t){let n=await Xw(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 X(c<0?{entries:[],cursor:{offset:i,mtimeMs:a,ino:o},reset:s}:{entries:lT(r.subarray(0,c+1).toString(`utf-8`)),cursor:{offset:i+c+1,mtimeMs:a,ino:o},reset:s})}async function fT(e){return new Promise((t,n)=>{let r=[],a=i(e,{encoding:`utf8`}),o=E({input:a,crlfDelay:1/0});o.on(`line`,e=>{let t=e.trim();if(t)try{let e=cT(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 pT=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 mT(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 hT={cost:0,input:0,output:0,cacheCreation:0,cacheRead:0},gT={cost:null,calculatedCost:null,officialCost:null,tokens:null,tokenBreakdown:null};function _T(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function vT(){let e=new Date;return e.setHours(0,0,0,0),e.setDate(e.getDate()-1),e.getTime()}function yT(){return{input:0,output:0,cacheCreation:0,cacheRead:0}}async function bT(e,t,n,r){let i=_T(new Date(vT())),a=e&&!t?e:void 0,o=a?.entries??0,s=a?.cost??0,c=a?{...a.breakdown}:yT(),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 Uw.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=_T(new Date(e.timestamp));if(r<i)continue;let a=l.get(r)??{...hT};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 xT(e){let t=0,n=0,r=yT(),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)??{...hT};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:gT,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 ST(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 CT=class{entries=new Map;flight=new pT;seeded=new Map;speedRings=new Map;speedFlight=new pT;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:gT,i=t?.cost?.total_cost_usd??null;return X({session:{...r,cost:i??r.cost,officialCost:i}})}async getTodayInfo(e){let t=_T(new Date);try{await this.ensureSeeded(t)}catch(e){return Q(`usage seed: ${e instanceof Error?e.message:String(e)}`)}let n=await this.ingest(e?.session_id??``,e?.transcript_path);if(n.kind===`failed`)return n;let r={...hT},i=!1;for(let e of this.entries.values()){i||=e.days.has(t);let n=e.days.get(t)??hT;r.cost+=n.cost,r.input+=n.input,r.output+=n.output,r.cacheCreation+=n.cacheCreation,r.cacheRead+=n.cacheRead}return i?X({cost:r.cost,tokens:r.input+r.output+r.cacheCreation+r.cacheRead,tokenBreakdown:{input:r.input,output:r.output,cacheCreation:r.cacheCreation,cacheRead:r.cacheRead},date:t}):Z}async observeSpeed(e,t,n){let r=Ww(t);return this.speedFlight.run(`${e}:${r}`,async()=>{let i=await this.ingest(e,t,r);if(i.kind===`failed`)return i;let a=mT(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),X({...s!==void 0&&{prev:s},cur:a,samples:[...o]})})}async ingest(e,t,n){if(!e)return Z;let r=n??Ww(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++,X(i);if(!t)return i?X(i):Z;this.misses++;let a;try{a=await this.flight.run(`${e}:${r}`,()=>this.refold(e,t,this.entries.get(e)))}catch(t){return Q(`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(),X(o)}async refold(e,t,n){let r=await iT(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 dT(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 bT(r,l,s,c)),e===t&&(a=c.mtimeMs)}return X({files:i,...xT(i),mainMtime:a})}ensureSeeded(e){let t=this.seeded.get(e);if(t)return t;this.seeded.clear();let n=this.seed(e);return this.seeded.set(e,n),n.catch(()=>{this.seeded.get(e)===n&&this.seeded.delete(e)}),n}async seed(e){let t=vT(),n=await rT(nT()),r=[];for(let e of n){let n;try{n=await qw(e)}catch{continue}for(let i of n){if(!i.endsWith(`.jsonl`))continue;let n=d(e,i),a;try{a=(await Yw(n)).mtimeMs}catch{continue}a<t||r.push({sessionId:i.slice(0,-6),path:n,mtime:a})}}await ST(r,8,async e=>{let t=await this.ingest(e.sessionId,e.path,e.mtime);t.kind===`failed`&&Y(`warn`,`usageStore seed: ${t.reason}`)}),this.seeds++,Y(`info`,`usageStore seed sessions=${r.length}`)}sweepStale(){let e=Date.now(),t=0;for(let[n,r]of this.entries)e-r.lastSeenAt>this.staleAgeMs&&(this.entries.delete(n),this.speedRings.delete(n),t++);return t>0&&(this.sweeps++,Y(`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),Y(`info`,`usageStore evict ${e}`)}}close(){this.sweepTimer&&=(clearInterval(this.sweepTimer),null),this.entries.clear(),this.seeded.clear(),this.speedRings.clear()}};const wT=/"(?:cache_read_input_tokens|cache_creation_input_tokens)":[1-9]/;function TT(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 ET(e){let t=await DT(e);return t.kind===`ok`?X(Math.floor((t.value+36e5)/1e3)):t}async function DT(e){for(let t of[65536,1048576]){let n=await Zw(e,t);if(n.kind!==`ok`)return n;let r=OT(n.value.buf,n.value.fromStart);if(r!=null)return X(r);if(n.value.fromStart)return Z}return Z}function OT(e,t){let n=e.toString(`utf8`).split(`
144
- `),r=+!t;for(let e=n.length-1;e>=r;e--){let t=n[e];if(!t||!wT.test(t))continue;let r=TT(t);if(r!=null)return r}return null}function kT(e,t,n){let r=Zh(t(`preset`),e.globals.preset,e.presets),i=eg(e,r),a=t(`edit.mode`)===`open`?e.editGlobals:{};return{preset:r,presetCustomized:n(r),theme:Hv(a.palette,t(`theme`),i.palette),look:zi(a.look,t(`look`),i.look,e.looks),style:Hi(a.style,t(`style`),i.style),separator:a.default_separator??i.default_separator,autoWrap:Zi(a.autoWrap,t(`autoWrap`),i.autoWrap),padding:Qi(a.padding,t(`padding`),i.padding),charset:a.charset??i.charset??`unicode`,updateNotice:a.updateNotice??i.updateNotice??!0,colorCompatibility:a.colorCompatibility??i.colorCompatibility??`truecolor`}}const AT=10*1e3;function jT(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 MT(e,t){if(!(t<60))return e*3600/t}function NT(e,t,n,r){let i=r-t;if(i<50||i>AT)return;let a=n-e;if(!(a<=0))return a*1e3/i}function PT(e){let{prev:t,cur:n}=e;if(t===void 0)return;let r=NT(t.input,t.atMs,n.input,n.atMs),i=NT(t.output,t.atMs,n.output,n.atMs),a=NT(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 FT(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>AT)continue;let o=NT(r.total,r.atMs,i.total,i.atMs);n.push(o??0)}if(n.length!==0)return n.join(`,`)}function IT(e){let t=e.indexOf(`.`);return t<0?e:e.slice(0,t)}function LT(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`,()=>IT(f.hostname())),i=n(`user`,()=>f.userInfo().username);return{host:{...r!==void 0&&{name:r},...i!==void 0&&{user:i},...e.ssh!==void 0&&{ssh:e.ssh}},failures:t}}function RT(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;for(let n of qa($h(e,t).node)){if(n.when)for(let e of $v(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 $v(e))r.push(t)}}let a=new Set;for(;r.length>0;){let e=r.pop();for(let t of BT(n,e)){if(i.has(t))continue;i.add(t);let e=n.get(t);if(e){if(e.kind===`input`)a.add(e.path);else if(e.kind===`template`)for(let t of $v(e.template))r.push(t)}}}return a}function zT(e){let t=new Map;return n=>{let r=t.get(n);if(r!==void 0)return r;let i=RT(e,n);return t.set(n,i),i}}function BT(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 VT(e,t){for(let n of e)if(n===t||n.startsWith(t+`.`))return!0;return!1}function HT(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 UT(e,t,n,r,i,a){let o=e=>VT(r,e),s=(t.clock??(()=>new Date))().getTime(),c=(e,t,n)=>t?n().catch(t=>Q(`${e}: ${String(t)}`)):Promise.resolve(Z),[l,u,d,f,p,m,h,g,_]=await Promise.all([c(`git`,o(`git`),()=>t.gitProvider.getGitInfo(n??e.workspace?.current_dir,HT(r),e.workspace?.project_dir)),c(`session`,o(`session.cost`)||o(`session.tokens`)||o(`burn`),()=>t.usageStore.getUsageInfo(e.session_id,e)),c(`today`,o(`today`),()=>t.usageStore.getTodayInfo(e)),c(`context`,o(`context`),()=>t.contextProvider.getContextInfo(e)),c(`metrics`,o(`metrics`)||o(`burn`),()=>t.metricsProvider.getMetricsInfo(e.session_id,e)),c(`activity`,o(`activity`),()=>t.activityProvider.getActivityInfo(e.session_id,e)),c(`tmux`,o(`tmux`),()=>t.tmuxService.getSessionId()),c(`cache`,o(`cache`),()=>ET(e.transcript_path)),c(`speed`,o(`speed`),()=>t.usageStore.observeSpeed(e.session_id,e.transcript_path,s))]),v=[],y=e=>{if(e.kind===`failed`){v.push(e.reason);return}return e.kind===`ok`?e.value:void 0},b=JT(l);v.push(...b.failures);let x=LT(a);v.push(...x.failures);let S=y(u),C=y(d),ee=y(f),te=y(p),w=y(m),ne=y(h),re=y(g);for(let e of v)t.log(`warn`,`provider fetch failed: ${e}`);let ie=e.rate_limits?.five_hour,T=e.rate_limits?.seven_day,E=ie?jT(ie.used_percentage,ie.resets_at,18e6,s):void 0,ae=T?jT(T.used_percentage,T.resets_at,6048e5,s):void 0,oe=S?.session.cost,se=te?.sessionDuration,ce=o(`burn`)&&oe!=null&&se!=null?MT(oe,se):void 0,le=y(_),ue=le===void 0?void 0:PT(le),de=le===void 0?void 0:FT(le),fe=ue!==void 0||de!==void 0?{...ue,...de!==void 0&&{history:de}}:void 0,pe=qT(process.env.HOME??process.env.USERPROFILE),me=e.workspace?{...e.workspace,current_dir:qT(e.workspace.current_dir)??``,project_dir:qT(e.workspace.project_dir)??``}:e.workspace,he=S===void 0?void 0:KT({cost:S.session.cost,tokens:S.session.tokens}),D=C===void 0?void 0:{cost:C.cost,tokens:C.tokens},ge=te===void 0?void 0:KT({lastResponseTime:te.lastResponseTime,responseTime:te.responseTime,sessionDuration:te.sessionDuration,messageCount:te.messageCount,linesAdded:te.linesAdded,linesRemoved:te.linesRemoved}),_e=w===void 0?void 0:WT(w);return{...e,...me!==void 0&&{workspace:me},...pe!==void 0&&{home:pe},...b.git!==void 0&&{git:b.git},...ne!==void 0&&{tmux:{session:ne}},host:x.host,preset:{effective:i.preset,customized:i.presetCustomized},style:{effective:i.style},charset:{effective:i.charset},colorCompatibility:{effective:i.colorCompatibility},autoWrap:{effective:i.autoWrap},padding:{effective:i.padding},...he!==void 0&&{session:he},...D!==void 0&&{today:D},...ce!==void 0&&{burn:{costPerHour:ce}},...fe!==void 0&&{speed:fe},...o(`block`)&&ie!==void 0&&{block:{nativeUtilization:ie.used_percentage,resetsAt:ie.resets_at,...E!==void 0&&{etaMinutes:E}}},...T!==void 0&&{weekly:{percentage:T.used_percentage,resetsAt:T.resets_at,...ae!==void 0&&{etaMinutes:ae}}},...re!==void 0&&{cache:{expiresAt:re}},...ee!==void 0&&{context:{totalTokens:ee.totalTokens,contextLeft:ee.contextLeftPercentage}},...ge!==void 0&&{metrics:ge},..._e!==void 0&&{activity:_e}}}function WT(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=GT(e.running),i=GT(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 GT(e){return e.length===0?void 0:e.map(e=>`${e.name}:${e.count}`).join(`,`)}function KT(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 qT(e){return e===void 0||e.length===0||c.sep!==`\\`?e:e.replace(/\\/g,`/`)}function JT(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 YT=`trimPrefix "/" (trimPrefix .project_dir .current_dir)`,XT=`{{ \$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 (${YT}) (basename .project_dir) (ne (${YT}) "") }}{{ end }}{{ end }}{{ abbreviatePath \$dir }}`,ZT={branch:`primary`,staged:`success`,unstaged:`warning`,untracked:`accent`,conflicts:`error`,dirty:`warning`,clean:`success`,ahead:`success`,behind:`warning`,stash:`accent`},QT=(e,t)=>`{{ fg (readableOn (color "${e}") (bgOf) ${Wc}) ${t} }}`,$T=(e,t)=>QT(ZT[e],t),eE=`{{ readableOn (mix (color "foreground") (bgOf) 60) (bgOf) 3 }}`,tE=`{{ if or (gt .git.staged 0) (gt .git.unstaged 0) (gt .git.untracked 0) (gt .git.conflicts 0) }} ({{ \$first := true }}{{ if gt .git.staged 0 }}${$T(`staged`,`(printf "+%v" .git.staged)`)}{{ $first = false }}{{ end }}{{ if gt .git.unstaged 0 }}{{ if not $first }} {{ end }}${$T(`unstaged`,`(printf "~%v" .git.unstaged)`)}{{ $first = false }}{{ end }}{{ if gt .git.untracked 0 }}{{ if not $first }} {{ end }}${$T(`untracked`,`(printf "?%v" .git.untracked)`)}{{ $first = false }}{{ end }}{{ if gt .git.conflicts 0 }}{{ if not $first }} {{ end }}${$T(`conflicts`,`(printf "!%v" .git.conflicts)`)}{{ $first = false }}{{ end }}){{ end }}`,nE=`{{ if eq .git.status "conflicts" }}${$T(`conflicts`,`"⚠"`)}{{ else }}{{ if eq .git.status "dirty" }}${$T(`dirty`,`"●"`)}{{ else }}${$T(`clean`,`"✓"`)}{{ end }}{{ end }}`,rE=`{{ if ne .git.repoName "" }}{{ .git.repoName }} {{ end }}⎇ ${$T(`branch`,`.git.branch`)}{{ if .git.sha }} ♯ {{ .git.sha }}{{ end }}{{ if or (gt .git.ahead 0) (gt .git.behind 0) }} {{ if gt .git.ahead 0 }}${$T(`ahead`,`(printf "↑%v" .git.ahead)`)}{{ end }}{{ if gt .git.behind 0 }}${$T(`behind`,`(printf "↓%v" .git.behind)`)}{{ end }}{{ end }}`+tE+`{{ if .git.upstream }} →{{ .git.upstream }}{{ end }}{{ if gt .git.stash 0 }} ${$T(`stash`,`(printf "⧇ %v" .git.stash)`)}{{ end }} `+nE,iE={globals:{palette:`tokyo-night`},variables:{current_dir:{kind:`input`,path:`workspace.current_dir`,default:`?`},project_dir:{kind:`input`,path:`workspace.project_dir`,default:``},transcript_path:{kind:`input`,path:`transcript_path`,default:``},"model.display_name":{kind:`input`,path:`model.display_name`,default:``},"session.id":{kind:`input`,path:`session_id`,default:``},version:{kind:`input`,path:`version`,default:``},"theme.effective":{kind:`input`,path:`theme.effective`,default:``},"look.effective":{kind:`input`,path:`look.effective`,default:``},"preset.effective":{kind:`input`,path:`preset.effective`,default:``},"preset.customized":{kind:`input`,path:`preset.customized`,type:`boolean`,default:!1},"style.effective":{kind:`input`,path:`style.effective`,default:``},"charset.effective":{kind:`input`,path:`charset.effective`,default:``},"colorCompatibility.effective":{kind:`input`,path:`colorCompatibility.effective`,default:``},"autoWrap.effective":{kind:`input`,path:`autoWrap.effective`,type:`boolean`,default:!0},"padding.effective":{kind:`input`,path:`padding.effective`,type:`number`,default:1},"term.cols":{kind:`input`,path:`term.cols`,type:`number`,default:80},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.repoUrl":{kind:`input`,path:`git.repoUrl`,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.prNumber":{kind:`input`,path:`git.prNumber`,type:`number`,default:0},"git.prState":{kind:`input`,path:`git.prState`,default:``},"git.prUrl":{kind:`input`,path:`git.prUrl`,default:``},"git.prError":{kind:`input`,path:`git.prError`,default:``},"cache.expiresAt":{kind:`input`,path:`cache.expiresAt`,type:`number`,default:0},"session.cost":{kind:`input`,path:`session.cost`,type:`number`,default:0},"session.tokens":{kind:`input`,path:`session.tokens`,type:`number`,default:0},"session.budget.amount":{kind:`literal`,value:0},"session.budget.warningThreshold":{kind:`literal`,value:80},"today.cost":{kind:`input`,path:`today.cost`,type:`number`,default:0},"today.tokens":{kind:`input`,path:`today.tokens`,type:`number`,default:0},"today.budget.amount":{kind:`literal`,value:50},"today.budget.warningThreshold":{kind:`literal`,value:80},"block.nativeUtilization":{kind:`input`,path:`block.nativeUtilization`,type:`number`,default:0},"block.resetsAt":{kind:`input`,path:`block.resetsAt`,type:`number`,default:0},"block.budget.warningThreshold":{kind:`literal`,value:80},"block.budget.heatThreshold":{kind:`literal`,value:50},"weekly.percentage":{kind:`input`,path:`weekly.percentage`,type:`number`,default:0},"weekly.resetsAt":{kind:`input`,path:`weekly.resetsAt`,type:`number`,default:0},"weekly.budget.warningThreshold":{kind:`literal`,value:80},"weekly.budget.heatThreshold":{kind:`literal`,value:50},"burn.costPerHour":{kind:`input`,path:`burn.costPerHour`,type:`number`,default:-1},"block.etaMinutes":{kind:`input`,path:`block.etaMinutes`,type:`number`,default:-1},"weekly.etaMinutes":{kind:`input`,path:`weekly.etaMinutes`,type:`number`,default:-1},"burn.eta.warnMinutes":{kind:`literal`,value:60},"burn.eta.errorMinutes":{kind:`literal`,value:30},"speed.input":{kind:`input`,path:`speed.input`,type:`number`,default:-1},"speed.output":{kind:`input`,path:`speed.output`,type:`number`,default:-1},"speed.total":{kind:`input`,path:`speed.total`,type:`number`,default:-1},"speed.history":{kind:`input`,path:`speed.history`,type:`string`,default:``},"context.totalTokens":{kind:`input`,path:`context.totalTokens`,type:`number`,default:0},"context.contextLeft":{kind:`input`,path:`context.contextLeft`,type:`number`,default:100},"metrics.lastResponseTime":{kind:`input`,path:`metrics.lastResponseTime`,type:`number`,default:0},"metrics.responseTime":{kind:`input`,path:`metrics.responseTime`,type:`number`,default:0},"metrics.sessionDuration":{kind:`input`,path:`metrics.sessionDuration`,type:`number`,default:0},"metrics.messageCount":{kind:`input`,path:`metrics.messageCount`,type:`number`,default:0},"metrics.linesAdded":{kind:`input`,path:`metrics.linesAdded`,type:`number`,default:0},"metrics.linesRemoved":{kind:`input`,path:`metrics.linesRemoved`,type:`number`,default:0},"activity.command":{kind:`input`,path:`activity.command`,type:`string`,default:``},"activity.todo.total":{kind:`input`,path:`activity.todo.total`,type:`number`,default:0},"activity.todo.completed":{kind:`input`,path:`activity.todo.completed`,type:`number`,default:0},"activity.todo.position":{kind:`input`,path:`activity.todo.position`,type:`number`,default:0},"activity.todo.active":{kind:`input`,path:`activity.todo.active`,type:`string`,default:``},"activity.tool.running":{kind:`input`,path:`activity.tool.running`,type:`string`,default:``},"activity.tool.done":{kind:`input`,path:`activity.tool.done`,type:`string`,default:``}},segments:{directory:{description:"The current directory, shortened fish-style — `~` under home, project-relative inside the project.",template:XT},model:{description:`The active model's display name.`,template:`✱ {{ formatModelName .model.display_name }}`,when:`{{ ne .model.display_name "" }}`},sessionId:{description:`The session id, truncated to 8 characters.`,template:`⌗{{ trunc 8 .session.id }}`,when:`{{ ne .session.id "" }}`},version:{description:`The Claude Code version reported in the hook payload.`,template:`◈ v{{ .version }}`,when:`{{ ne .version "" }}`},tmux:{description:`The tmux session name; hidden when not inside tmux.`,template:`tmux:{{ .tmux.session | default "none" }}`,when:`{{ ne .tmux.session "" }}`},host:{description:`user@host on a warning background, shown only over SSH.`,template:`⇄ {{ .host.user | default "?" }}@{{ .host.name | default "?" }}`,bg:`warning`,when:`{{ .host.ssh }}`},git:{description:`Branch, sha, ahead/behind, staged/unstaged/untracked/conflict counts, upstream, stash count, and a clean/dirty/conflict glyph.`,template:rE,fg:eE,when:`{{ ne .git.branch "" }}`},gitaculous:{description:`The same git state in asyncgit's compact spelling: repo, in-progress operation, sha, S/U/? flags, branch, upstream ±, stash count, and time since the last commit.`,template:`(git){{ if ne .git.repoName "" }} {{ .git.repoName }}{{ end }}{{ if ne .git.operation "" }} [{{ .git.operation }}]{{ end }}{{ if ne .git.sha "" }} {{ .git.sha }}{{ end }}{{ if or (gt .git.staged 0) (gt .git.unstaged 0) (gt .git.untracked 0) (gt .git.conflicts 0) }} {{ if gt .git.staged 0 }}${$T(`staged`,`"S"`)}{{ end }}{{ if gt .git.unstaged 0 }}${$T(`unstaged`,`"U"`)}{{ end }}{{ if gt .git.untracked 0 }}${$T(`untracked`,`"?"`)}{{ end }}{{ if gt .git.conflicts 0 }}${$T(`conflicts`,`(printf "!%v" .git.conflicts)`)}{{ end }}{{ end }} ⎇ ${$T(`branch`,`.git.branch`)}{{ if ne .git.upstream "" }} [{{ .git.upstream }}{{ if or (gt .git.ahead 0) (gt .git.behind 0) }} {{ if gt .git.ahead 0 }}${$T(`ahead`,`(printf "+%v" .git.ahead)`)}{{ end }}{{ if and (gt .git.ahead 0) (gt .git.behind 0) }}/{{ end }}{{ if gt .git.behind 0 }}${$T(`behind`,`(printf "-%v" .git.behind)`)}{{ end }}{{ end }}]{{ end }}{{ if gt .git.stash 0 }} ${$T(`stash`,`(printf "(%v stashed)" .git.stash)`)}{{ end }}{{ if gt .git.timeSinceCommit 0 }} ◷ {{ template "formatTimeSince" .git.timeSinceCommit }}{{ end }}`,fg:eE,when:`{{ ne .git.branch "" }}`},gitPr:{description:"The pull request open for this branch, as a link; `⚠ PR` when the forge lookup failed.",template:`{{ if ne .git.prUrl "" }}{{ link .git.prUrl (printf "⇆ #%v" .git.prNumber) }}{{ else }}⚠ PR{{ end }}`,when:`{{ or (ne .git.prUrl "") (ne .git.prError "") }}`},toolbar:{description:`Quick actions: copy the session id, and open the project, transcript or repo.`,template:Pg(``).template},session:{description:`This session's cost and token total, with a budget warning once a budget is configured.`,template:`§ {{ template "formatCost" .session.cost }} ({{ template "formatTokens" .session.tokens }}){{ template "budgetStatus" (dict "cost" .session.cost "budget" .session.budget.amount "warn" .session.budget.warningThreshold) }}`},today:{description:`Today's cost and tokens across every session, with a budget warning once a budget is configured.`,template:`☉ {{ template "formatCost" .today.cost }} ({{ template "formatTokens" .today.tokens }}){{ template "budgetStatus" (dict "cost" .today.cost "budget" .today.budget.amount "warn" .today.budget.warningThreshold) }}`},block:{description:`The 5-hour rate-limit block: percent used and time to reset, heating to warning then error.`,template:`◱ {{ round .block.nativeUtilization }}% ({{ template "formatResetCountdown" .block.resetsAt }})`,bg:`{{ ramp (round .block.nativeUtilization) "step" 0 (tint) .block.budget.heatThreshold "warning" .block.budget.warningThreshold "error" }}`,when:`{{ gt .block.resetsAt 0 }}`},weekly:{description:`The weekly rate-limit quota: percent used and time to reset, heating to warning then error.`,template:`◑ {{ round .weekly.percentage }}% ({{ template "formatResetCountdown" .weekly.resetsAt }})`,bg:`{{ ramp (round .weekly.percentage) "step" 0 (tint) .weekly.budget.heatThreshold "warning" .weekly.budget.warningThreshold "error" }}`,when:`{{ gt .weekly.resetsAt 0 }}`},burnrate:{description:`Spend per hour, with the projected time to the 5-hour and weekly limits.`,template:`⚡ {{ template "formatRate" .burn.costPerHour }} · {{ template "formatEta" .block.etaMinutes }} to 5h · {{ template "formatEta" .weekly.etaMinutes }} to wk`,bg:`{{ ramp .block.etaMinutes "step" -1 (tint) 0 "error" .burn.eta.errorMinutes "warning" .burn.eta.warnMinutes (tint) }}`,when:`{{ or (gt .block.resetsAt 0) (gt .weekly.resetsAt 0) }}`},speed:{description:`Token throughput for the latest exchange: output, input, and total.`,template:`⇅ out {{ template "formatSpeed" .speed.output }} · in {{ template "formatSpeed" .speed.input }} · tot {{ template "formatSpeed" .speed.total }}`,when:`{{ gt .session.tokens 0 }}`},tokenSparkline:{description:`A sparkline of recent token throughput.`,template:`⚡ {{ sparkline .speed.history 24 }}`,when:`{{ ne .speed.history "" }}`},cacheTimer:{description:"Minutes until the prompt cache expires, or `cold` once it has.",template:`◴ {{ if le (minutesUntilReset .cache.expiresAt) 0 }}cold{{ else }}{{ minutesUntilReset .cache.expiresAt }}m{{ end }}`,fg:`{{ readableOn (color (cascade (minutesUntilReset .cache.expiresAt) "0:error" "9:warning" "21:foreground")) (bgOf) ${Wc} }}`,when:`{{ gt .cache.expiresAt 0 }}`},context:{description:`Context used, in tokens and percent remaining, heating as it fills.`,template:`◔ {{ formatInteger .context.totalTokens }} ({{ .context.contextLeft }}%)`,bg:`{{ ramp .context.contextLeft "step" 0 "error" 21 "warning" 41 (tint) }}`,when:`{{ gt .context.totalTokens 0 }}`},metrics:{description:`Response times, session duration, message count, and lines added/removed.`,template:`{{ if .metrics.lastResponseTime }} Δ {{ template "formatResponseTime" .metrics.lastResponseTime }}{{ end }}{{ if .metrics.responseTime }} ⧖ {{ template "formatResponseTime" .metrics.responseTime }}{{ end }}{{ if .metrics.sessionDuration }} ⧗ {{ template "formatDuration" .metrics.sessionDuration }}{{ end }}{{ if .metrics.messageCount }} ◆ {{ .metrics.messageCount }}{{ end }}{{ if .metrics.linesAdded }} + {{ .metrics.linesAdded }}{{ end }}{{ if .metrics.linesRemoved }} - {{ .metrics.linesRemoved }}{{ end }} `,when:`{{ or (gt .metrics.lastResponseTime 0.0) (gt .metrics.responseTime 0.0) (gt .metrics.sessionDuration 0.0) (gt .metrics.messageCount 0) (gt .metrics.linesAdded 0) (gt .metrics.linesRemoved 0) }}`},activity:{description:`What Claude is doing: the slash command that opened the turn, the in-progress todo, and the tools in flight.`,template:`{{ if .activity.command }} ⌘ {{ .activity.command }}{{ end }}{{ if .activity.todo.total }}{{ if .activity.todo.active }} ☐ {{ .activity.todo.position }}/{{ .activity.todo.total }} {{ abbrev 32 .activity.todo.active }}{{ else }} ☑ {{ .activity.todo.completed }}/{{ .activity.todo.total }}{{ end }}{{ end }}{{ if .activity.tool.running }} ⟳ {{ template "formatToolTally" .activity.tool.running }}{{ end }}{{ if .activity.tool.done }} ✓ {{ template "formatToolTally" .activity.tool.done }}{{ end }} `,when:`{{ or (ne .activity.command "") (gt .activity.todo.total 0) (ne .activity.tool.running "") (ne .activity.tool.done "") }}`},charsetControl:{description:"The `⚙ terminal` drawer's control for `globals.charset` — the joiner glyph vocabulary.",template:`{{ .charset.effective }} {{ menu "applyCharsetForever" "▸" "▾" }} {{ action "resetCharset" "↺" }}`},colorCompatControl:{description:"The `⚙ terminal` drawer's control for `globals.colorCompatibility` — the colour depth.",template:`{{ .colorCompatibility.effective }} {{ menu "applyColorCompatForever" "▸" "▾" }} {{ action "resetColorCompat" "↺" }}`},directoryPaletteControl:{description:"The `⚙ terminal` drawer's control pinning the directory segment's own palette.",template:`🎨 directory {{ menu "applyDirectoryPaletteForever" "▸" "▾" }} {{ action "resetDirectoryPalette" "↺" }}`}},root:{rows:{identity:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`host`},{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`group`,name:`settings`,label:`⚙ terminal`,direction:`horizontal`,children:[`charsetControl`,`colorCompatControl`,`directoryPaletteControl`]}]},status:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`segment`,name:`context`},{kind:`segment`,name:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`activity`}]}}},actions:{...Pg(``).actions,copyDir:{copy:`{{ .current_dir }}`},applyCharsetForever:{persist:`charset`,from:`charsets`},resetCharset:{reset:`charset`},applyColorCompatForever:{persist:`colorCompatibility`,from:`colorCompatibilities`},resetColorCompat:{reset:`colorCompatibility`},applyDirectoryPaletteForever:{persist:`segments.directory.palette`,from:`themes`},resetDirectoryPalette:{reset:`segments.directory.palette`}},looks:{none:{hueShift:0,chromaScale:1,lightnessScale:1,lightnessShift:0},vivid:{hueShift:0,chromaScale:1.35,lightnessScale:1,lightnessShift:0},muted:{hueShift:0,chromaScale:.55,lightnessScale:1,lightnessShift:0},dim:{hueShift:0,chromaScale:1,lightnessScale:.85,lightnessShift:0},bright:{hueShift:0,chromaScale:1,lightnessScale:1,lightnessShift:.08},inverted:{hueShift:0,chromaScale:1,lightnessScale:-1,lightnessShift:1}},presets:{default:{},compact:{root:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`directory`},{kind:`segment`,name:`git`},{kind:`segment`,name:`context`}]},globals:{padding:0}},verbose:{root:{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`segment`,name:`gitPr`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`segment`,name:`context`},{kind:`segment`,name:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`burnrate`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`speed`},{kind:`segment`,name:`tokenSparkline`}]}]}}},editGlobals:{style:`plain`,default_separator:` | `},helpers:{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 .)) }}`}},aE=new Set([iE.globals.palette,...Object.values(iE.segments).map(e=>e.palette)].filter(e=>e!==void 0)),oE=Vo(Iy(`<default>`,JSON.stringify(iE),aE),iE);var sE=pe((e=>{function t(e){var t=[...arguments].slice(1);throw Error(typeof e==`number`?`[MobX] minified error nr: `+e+(t.length?` `+t.map(String).join(`,`):``)+`. Find the full error at: https://github.com/mobxjs/mobx/blob/main/packages/mobx/src/errors.ts`:`[MobX] `+e)}function n(){return typeof globalThis<`u`?globalThis:typeof window<`u`?window:typeof global<`u`?global:typeof self<`u`?self:nn}function r(){cn||t(`Proxy not available`)}function i(e){var t=!1;return function(){if(!t)return t=!0,e.apply(this,arguments)}}function a(e){return typeof e==`function`}function o(e){switch(typeof e){case`string`:case`symbol`:case`number`:return!0}return!1}function s(e){return typeof e==`object`&&!!e}function c(e){if(!s(e))return!1;var t=Object.getPrototypeOf(e);if(t==null)return!0;var n=Object.hasOwnProperty.call(t,`constructor`)&&t.constructor;return typeof n==`function`&&n.toString()===ln}function l(e){var t=e?.constructor;return!!t&&(t.name===`GeneratorFunction`||t.displayName===`GeneratorFunction`)}function u(e,t,n){an(e,t,{enumerable:!1,writable:!0,configurable:!0,value:n})}function d(e,t,n){an(e,t,{enumerable:!1,writable:!1,configurable:!0,value:n})}function f(e,t){var n=`isMobX`+e;return t.prototype[n]=!0,function(e){return s(e)&&!0===e[n]}}function p(e){return e!=null&&Object.prototype.toString.call(e)===`[object Map]`}function m(e){return e!=null&&Object.prototype.toString.call(e)===`[object Set]`}function h(e){return e===null?null:typeof e==`object`?``+e:e}function g(e,t){return on.hasOwnProperty.call(e,t)}function _(e,t){return!!(e&t)}function v(e,t,n){return n?e|=t:e&=~t,e}function y(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function b(e,t,n){if(ne())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var i=new(e.bind.apply(e,r));return n&&re(i,n.prototype),i}function x(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,ie(r.key),r)}}function S(e,t,n){return t&&x(e.prototype,t),n&&x(e,n),Object.defineProperty(e,`prototype`,{writable:!1}),e}function C(e,t){var n=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if(typeof e==`string`)return y(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(e,t):void 0}}(e))||t&&e&&typeof e.length==`number`){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw TypeError(`Invalid attempt to iterate non-iterable instance.
132
+ Tip: every bar carries a settings menu — click it (${Xo} by\n default) for quick actions, preset switching, edit mode, and clickable\n theme/look/style/wrap/padding controls.\n`}async function cS(e){let t=e.includes(`--force`),n=e.filter(e=>e!==`--force`),r=n.length>0?n:[...Bx],i=eS();process.platform===`darwin`?nS(i.distPath):process.stdout.write(`Skipping URL handler (cmd-click verbs are macOS-only).
133
+ `),lS(i.binPath,r,t),process.stdout.write(sS());let a=Rx(Fx,Lx(Ox,await Ix(Fx,fetch,`https://registry.npmjs.org`)));process[a.stream].write(a.text)}function lS(e,t,n,i){let a=i??kx();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,Hx(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:Ux(e,t)},ke(a,JSON.stringify(o,null,2)),process.stdout.write(`Updated ${a}\n`)}function uS(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 dS(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 fS(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 pS(e,t){let n=dS(e);if(n.kind===`owned`&&n.pid===t)try{r.unlinkSync(e)}catch{}}function mS(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 hS(e,t,n,r){let i=gS(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 gS(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 _S(e){let t=!1;function n(){let n=hS(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 vS(e,t=Ee){let n=t({bin:`ps`,args:[`-o`,`lstart=`,`-p`,String(e)],category:`process-fingerprint`,timeoutMs:2e3,env:{...process.env,LC_ALL:`C`,TZ:`UTC`}});if(n.ok){let e=n.stdout.trim();return e.length>0?{kind:`start`,token:e}:{kind:`unavailable`,detail:`ps produced no start-time`}}return{kind:`unavailable`,detail:n.reason===`spawn-error`?n.error??`ps spawn failed`:`ps ${n.reason} (exit ${n.exitCode})`}}function yS(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 bS(e,t=vS){let n=t(e);return n.kind===`start`?n.token:null}const xS=`CC_CANDYBAR_PARENT_PID`;function SS(e){let t=e[xS];if(t===void 0)return{kind:`outlives-nobody`};let n=Number.parseInt(t,10);if(!Number.isInteger(n)||n<=0)throw Error(`${xS} must be a positive integer pid, got ${JSON.stringify(t)}`);return{kind:`anchored`,pid:n}}function CS(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 wS(e){try{return t.kill(e,0),!0}catch(e){return e.code===`EPERM`}}function TS(){let e=Number(process.env.CC_CANDYBAR_DAEMON_CEILING??``);return Number.isInteger(e)&&e>0?e:16}function ES(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 DS(e){try{return r.readdirSync(e).filter(e=>e.endsWith(`.json`)).map(t=>c.join(e,t))}catch{return[]}}function OS(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 kS(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 AS(e){if(!e.isolated)return{decision:ES(!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=ES(!0,kS(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 jS(e,t,n,r){let i=n(e);if(i!==null&&i.pid===t)try{r(e)}catch{}}function MS(e,t={}){return{isolated:!!process.env.CC_CANDYBAR_SOCKET,registryDir:Be(),ceiling:TS(),pid:process.pid,startTime:e,isSameLiveProcess:(e,t)=>yS(e,t,{readStartTime:vS,pidAlive:wS}),listFiles:DS,readEntry:OS,removeFile:e=>{try{r.unlinkSync(e)}catch{}},writeEntry:(e,t)=>{let n=`${e}.${t.pid}.tmp`;try{r.writeFileSync(n,JSON.stringify(t),{mode:384}),r.renameSync(n,e)}catch(e){try{r.unlinkSync(n)}catch(e){e.code}throw e}},ensureDirSafe:process.env.CC_CANDYBAR_DAEMON_REGISTRY_DIR?Pe:e=>{Pe(c.dirname(e)),Pe(e)},...t}}function NS(e){return e<32||e===127||e>=128&&e<=159}function PS(e){let t=``;for(let n of e)t+=NS(n.codePointAt(0)??0)?` `:n;return t.replace(/\s+/g,` `).trim()}function FS(e,t){let n=PS(e),r=``,i=0;for(let e of n){if(i===t)return r.replace(/.$/u,`…`);r+=e,i++}return r}const IS=`\x1B[38;2;255;255;255m`,LS=`\x1B[48;2;200;40;40m`;function RS(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 zS={fg:RS(IS),bg:RS(LS)},BS={fg:RS(`\x1B[38;2;0;0;0m`),bg:RS(`\x1B[48;2;220;160;40m`)},VS={unicode:pi,ascii:{glyph:`>`,divider:`|`}},HS={unicode:{},ascii:{left:`(`,right:`)`}};function US(e,t,n){switch(e){case`capsule`:return new hi(HS[t]);case`plain`:return new gi(n===void 0?{}:{separator:n});case`powerline`:return new mi(VS[t]);default:return e}}function WS(e){switch(e){case`powerline`:return 1;case`capsule`:return 2;case`plain`:return 0;default:return e}}const GS=new Map;function KS(e){let t=JSON.stringify([e.style,e.charset,e.separator??null]),n=GS.get(t);if(n!==void 0)return n;let r=US(e.style,e.charset,e.separator),i=e=>new V(`x`,{end:``,noWrap:!0,style:new z({bgcolor:e})}),a=e=>new V(yi(new oi(e,r),{colorSystem:null}).replace(/\n$/,``)).cellLength,o=a([i(`#101010`),i(`#202020`)])-a([i(`#101010`)])-1;return GS.set(t,o),o}function qS(e,t){if(e.length===0)return``;let n=US(t.style,t.charset,t.separator),r=t.colorCompatibility,i=t.wrap&&Number.isFinite(t.width)?yi(new Ti([...e],{joiner:n}),{width:t.width,colorSystem:r}):yi(new oi([...e],n),{colorSystem:r});if(!i.endsWith(`
134
+ `))throw Error(`renderStripCells: rich-js strip output did not end its last line`);return i.slice(0,-1)}function JS(e){return Math.min(20,e??20)}const YS={heading:`ERROR`,glyph:`⚠`,colors:zS},XS={heading:`WARNING`,glyph:`⚠`,colors:BS},ZS={heading:`UPDATE`,glyph:`⬆`,colors:BS};function QS(e,t){return{text:PS(e),link:t}}function $S(e,t,n){let[r,...i]=[eC(e,YS,ux),t,eC(n,XS,dx)].flat();return r===void 0?null:{channels:[r,...i]}}function eC(e,t,n){let r=Cx([{verb:n,args:[e]}]),[i,...a]=e.split(/\r\n|\r|\n/).map(e=>QS(e,r)).filter(e=>e.text!==``).map(e=>[e]);return i===void 0?[]:[{severity:t,message:e,lines:[i,...a]}]}function tC(e){return e.channels.map(e=>`${e.severity.heading}\n${e.message}\n`).join(`
135
+ `)}function nC(e,t,n,r){if(t===null)return e;let i=rC(r),a=t.channels.flatMap(e=>iC(e,i)),o=n.failedConfigFile!==null||a.length>r.rowCap,s=a.slice(0,r.rowCap-Number(o)),c=o?[aC(t,n,a.length-s.length,i)]:[],l=[...s,...c].join(`
136
+ `);return e?`${l}\n${e}`:l}function rC(e){return{style:`plain`,separator:``,width:e.width,wrap:!0,padding:0,charset:`unicode`,colorCompatibility:e.colorCompatibility}}function iC(e,t){let n=new z({bgcolor:e.severity.colors.bg,color:e.severity.colors.fg}),r=Rt(Math.max(2,t.width-1)),i=(e,t)=>new V(`${e} `,{style:t,end:``,noWrap:!0});return e.lines.flatMap((a,o)=>qS([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=>Ht(e,r)).map(e=>i(e,t))})],t).split(`
137
+ `))}function aC(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:``,noWrap:!0}),l=n>0?[c(`${n} more rows · `,s),a.kind===`file`?c(`open full text`,s.withLink(x(a.path).href)):c(`full text unavailable: ${PS(a.reason)}`,s)]:[],u=o===null?[]:[c(`${l.length>0?` · `:``}open `,s),c(PS(o),s.withLink(x(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.noWrap=!0,qS([m],r)}const oC=e=>!e.startsWith(`.`)&&!e.endsWith(`~`);function sC(e,t){return t.isSymbolicLink()?Buffer.from(r.readlinkSync(e)):r.readFileSync(e)}function cC(e,t){return r.readdirSync(t).filter(oC).sort().flatMap(n=>{let i=c.join(t,n),a=r.lstatSync(i,{throwIfNoEntry:!1});return a===void 0?[]:a.isDirectory()?cC(e,i):[[c.relative(e,i).split(c.sep).join(`/`),sC(i,a)]]})}function lC(e){let t=C.createHash(`sha256`);for(let[n,r]of cC(e,e))t.update(n).update(`\0`).update(r).update(`\0`);return t.digest(`hex`)}const uC=e=>e.slice(0,7);function dC(e){return c.dirname(c.dirname(e))}function fC(){return{version:Ox,digest:`0f7c2ffe889adffd17a6b8f4e710cdac49701d8fa8cad8b6c66f05bc93d42f1d`}}function pC(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 mC(e,t){try{let n=dC(b(e)),i=c.join(n,`src`);if(!r.existsSync(i))return{kind:`not-source-checkout`};let a=t(),o=lC(i);return o===a.digest?{kind:`current`,root:n,stamp:a}:{kind:`stale`,root:n,source:{version:pC(n),digest:o},running:a}}catch(e){return{kind:`unchecked`,reason:e.message}}}var $=class extends Error{constructor(e){super(e),this.name=`BadVerbArgs`}};const hC=/^-?\d+$/;function gC(e,t,n){return e===void 0?t:Math.max(t,Math.min(n,e))}function _C(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 vC(e){return t=>{if(!t)return{ok:!1,reason:`${e} value is required`};if(!hC.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 yC(e,t,n){return r=>r?hC.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 bC(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=>!hC.test(e));if(o.length>0)throw Error(`${n} action table: key "${e}" is an integer spec (a paged cursor or a bounded value) but a click writes non-integer value(s) to it (${o.join(`, `)}). A ${n} key has one key shape — point that click at a distinct key, or write an integer.`);if(i&&r.length>0)throw Error(`${n} action table: key "${e}" is declared as both a paged cursor (int) and a bounded value (range) — a ${n} key has one key shape. Use distinct keys.`);if(r.length>0){let t=Math.min(...r.map(e=>e.min)),i=Math.max(...r.map(e=>e.max)),o=a.filter(e=>{let n=parseInt(e,10);return n<t||n>i});if(o.length>0)throw Error(`${n} action table: key "${e}" is a bounded range [${t},${i}] but a click writes out-of-range value(s) to it (${o.join(`, `)}). The range gate would clamp them, storing a different value than the click renders — write an in-range integer, or point that click at a distinct key.`);return{kind:`range`,min:t,max:i,seed:gC(r[0].seed,t,i)}}return{kind:`int`}}function xC(e){return e===`config`?`set-config`:`set-state`}function SC(e,t,n){return t.kind===`int`?vC(`menu page "${e}"`):t.kind===`range`?yC(t.min,t.max,`${n} stepper "${e}"`):_C(t.allowed,`${n} "${e}"`,xC(n))}function CC(e,t,n){return SC(e,bC(e,t,n),n)}function wC(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:bC(e,n,t)}))}function TC(e,t=`state`){let n=new Map(Object.entries(e).map(([e,t])=>[e,{validator:t,permanent:!0}]));function r(){let e=[];for(let[t,r]of n)r.permanent&&e.push(t);return e}return{register(e,i){if(!e)throw Error(`register: key is required`);if(e.includes(`/`))throw Error(`register: key "${e}" contains "/" — the wire shape splits on "/" so a slash-bearing key cannot be addressed. Use a slash-free key.`);let a=n.get(e);if(a){if(a.permanent)throw Error(`register: key "${e}" is a built-in ${t} key and cannot be re-claimed (built-in keys: ${[...r()].join(`, `)})`);if(a.kind!==i.kind)throw Error(`register: key "${e}" is already a ${a.kind} ${t} key; cannot also register it as ${i.kind}. A ${t} key has one key shape — a menu page index (int) and a button allow-list cannot share a key.`);a.specs.push(i),a.validator=CC(e,a.specs,t)}else{let r=[i];n.set(e,{permanent:!1,kind:i.kind,validator:CC(e,r,t),specs:r})}let o=!0;return()=>{if(!o)return;o=!1;let r=n.get(e);if(!r||r.permanent)return;let a=r.specs.indexOf(i);a>=0&&r.specs.splice(a,1),r.specs.length===0?n.delete(e):r.validator=CC(e,r.specs,t)}},validate(e,r){let i=n.get(e);return i?i.validator(r):{ok:!1,reason:`unknown ${t} key "${e}" (have: ${[...n.keys()].join(`, `)})`}},listKeys(){return[...n.keys()]},listBaselineKeys(){return r()},rangeParamsFor(e){let r=n.get(e);if(!r||r.permanent||r.kind!==`range`)return null;let i=bC(e,r.specs,t);if(i.kind!==`range`)throw Error(`rangeParamsFor: key "${e}" holds range specs but the merge produced a ${i.kind} spec — the entry-kind invariant is broken.`);return{min:i.min,max:i.max,seed:i.seed}}}}const EC=TC({},`config`);function DC(){return EC.listKeys()}function OC(e,t){return EC.validate(e,t)}function kC(e){return EC.rangeParamsFor(e)}function AC(e,t,n){return`persist`in e?`to`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:[e.to]}}]:`from`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:ry(e.from,n).members}}]:`cycle`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:e.cycle}}]:`removeSegment`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:[Zh({op:`remove`,target:e.removeSegment})]}}]:`insertSegment`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:[Zh({op:`insert`,segment:e.insertSegment,anchor:e.anchor,relation:e.relation})]}}]:`insertSegmentFrom`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:ry(e.insertSegmentFrom,n).members.map(t=>Zh({op:`insert`,segment:t,anchor:e.anchor,relation:e.relation}))}}]:[{key:e.persist,spec:{kind:`range`,min:e.min,max:e.max,seed:gC(t.get(e.persist),e.min,e.max)}}]:[]}function jC(e){return Es(e.globals)}function MC(e){let t=new Set;for(let n of PC(e)){let e=`persist`in n?n.persist:`reset`in n?n.reset:null;if(e===null)continue;let r=ug(e);r?.scope===`preset-root`&&t.add(r.preset)}return[...t].map(e=>({key:lg(e),spec:{kind:`allow-list`,allowed:[]}}))}function NC(e){let t=jC(e),n=new Map([...ty(e),...Cg(e)]);return[...MC(e),...PC(e).flatMap(e=>AC(e,t,n))]}function PC(e){return Object.values(e.actions).flatMap(H_)}function FC(e){return wC(NC(e),`config`)}function IC(e,t){return EC.register(e,t)}const LC=ji(),RC=new Set(LC),zC=new Set(Bi),BC=e=>e?RC.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown theme "${e}" (have: ${LC.join(`, `)})`}:{ok:!1,reason:`theme name is required`},VC=e=>e?zC.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown style "${e}" (have: ${Bi.join(`, `)})`}:{ok:!1,reason:`style name is required`},HC=new Set([`1`,`true`]),UC=new Set([`0`,`false`]),WC=TC({style:VC,theme:BC,"toolbar-expanded":e=>HC.has(e)?{ok:!0,value:`1`}:UC.has(e)?{ok:!0,value:``}:{ok:!1,reason:`expected boolean-ish (1, 0, true, false), got "${e}"`}});function GC(){return WC.listKeys()}function KC(e,t){return WC.register(e,t)}function qC(e,t){return WC.validate(e,t)}function JC(e){return WC.rangeParamsFor(e)}function YC(e,t,n){return`set`in e?`to`in e?[{key:e.set,spec:{kind:`allow-list`,allowed:[e.to]}}]:`from`in e?[{key:e.set,spec:{kind:`allow-list`,allowed:ry(e.from,n).members}}]:`int`in e?[{key:e.set,spec:{kind:`int`}}]:`cycle`in e?[{key:e.set,spec:{kind:`allow-list`,allowed:e.cycle}}]:[{key:e.set,spec:{kind:`range`,min:e.min,max:e.max,seed:gC(t.get(e.set),e.min,e.max)}}]:[]}function XC(e){let t=new Set(WC.listBaselineKeys());return e.filter(e=>e.spec.kind!==`allow-list`||!t.has(e.key))}function ZC(e){let t=new Map,n=/^-?\d+$/;for(let r of Object.values(e.variables)){if(r.kind!==`state`)continue;let e=r.default;e!==void 0&&n.test(e)&&t.set(r.key,parseInt(e,10))}for(let[n,r]of Es(e.globals))t.set(n,r);return t}function QC(e){let t=ZC(e),n=ty(e);return XC(Object.values(e.actions).flatMap(H_).flatMap(e=>YC(e,t,n)))}function $C(e){return wC(QC(e))}const ew=`update.dismissed`,tw=`updateNotice`;function nw(e){return e.kind===`source`?e.newer.digest:Nx(e.newer)}const rw=e=>`${e.version} [${uC(e.digest)}]`;function iw(e){switch(e.kind){case`source`:return{headline:`Newer source`,newer:rw(e.newer),running:rw(e.running),act:`rebuild`,busy:`rebuilding…`,command:{bin:`pnpm`,args:[`build`],cwd:e.root}};case`release`:return{headline:`Newer release`,newer:Nx(e.newer),running:Nx(e.running),act:`upgrade`,busy:`upgrading…`,command:{bin:`pnpm`,args:[`dlx`,`${Fx}@${Nx(e.newer)}`,`install`]}}}}const aw={kind:`idle`},ow={kind:`running`};function sw(e,t,n){if(e===null)return[];let r=nw(e);if(!n.enabled||n.dismissed===r)return[];let i=iw(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(`
138
+ `),c=Cx([{verb:dx,args:[s]}]),l=t.kind===`running`?QS(`[${i.busy}]`,c):QS(`[${i.act}]`,Cx([{verb:vx,args:[n.sessionId]}]));return[{severity:ZS,message:s,lines:[[QS(a,c),l,QS(`[dismiss]`,Cx([{verb:ax,args:[n.sessionId,ew,r]}])),QS(`[disable]`,Cx([{verb:fx,args:[n.sessionId,tw,`false`]}]))],...o.map(e=>[QS(e,c)])]}]}function cw(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 lw(e){switch(e.kind){case`current`:return[`info`,`build: current ${rw(e.stamp)}`];case`stale`:return[`info`,`build: stale — source ${rw(e.source)}, running ${rw(e.running)}`];case`not-source-checkout`:return[`info`,`build: not a source checkout`];case`unchecked`:return[`warn`,`build: unchecked: ${e.reason}`]}}function uw(e){switch(e.kind){case`current`:return[`info`,`release: current ${Nx(e.installed)}`];case`stale`:return[`info`,`release: stale — latest ${Nx(e.latest)}, running ${Nx(e.installed)}`];case`ahead`:return[`info`,`release: ahead — running ${Nx(e.installed)}, latest ${Nx(e.latest)}`];case`unchecked`:return[`warn`,`release: unchecked: ${e.reason}`]}}function dw(e){let t=null;return([n,r])=>{r!==t&&(t=r,e(n,r))}}const fw=e=>e.split(/\r?\n/).map(e=>e.trim()).filter(e=>e!==``).at(-1);function pw(e){let t=e.exitCode===null?``:` (exit ${e.exitCode})`,n=fw(e.stderr)??e.error??fw(e.stdout)??`no output`;return`${e.reason}${t}: ${n}`}function mw(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=aw,d=null,f=dw(s),p=dw(s),m=()=>cw(c,l);function h(){let e=m(),t=e===null?null:nw(e);(d===null?null:d.identity)!==t&&(d?.dispose(),d=t===null?null:{identity:t,dispose:KC(ew,{kind:`allow-list`,allowed:[t]})})}function g(){c=mC(t,fC),f(lw(c)),h()}async function _(){l=Lx(Ox,await Ix(Fx,a,i)),p(uw(l)),h()}return{arm(){IC(tw,{kind:`allow-list`,allowed:[`false`]}),g(),setInterval(g,n).unref(),c.kind===`not-source-checkout`&&(_(),setInterval(()=>void _(),r).unref())},notice:e=>sw(m(),u,e),act(){let e=m();if(e===null)throw new $(`apply-update: nothing newer is known to apply`);let t=iw(e);if(u.kind===`running`)throw new $(`apply-update: already ${t.busy}`);u=ow,s(`info`,`apply-update: ${t.act} — ${t.command.bin} ${t.command.args?.join(` `)??``}`),Te({...t.command,category:`update.apply`,timeoutMs:6e5}).then(n=>{if(n.ok){u=aw,s(`info`,`apply-update: ${t.act} succeeded`),g(),o();return}let r=pw(n);u={kind:`failed`,identity:nw(e),reason:r},s(`error`,`apply-update: ${t.act} failed: ${r}`)})}}}function hw(e,t,n){return t.ok?X(t.stdout):t.reason===`non-zero`&&n===`absent`||t.reason===`non-zero`&&n===t.exitCode?Z:Q(`${e}: ${[t.reason,t.exitCode==null?null:`exit ${t.exitCode}`,t.error??gw(t.stderr)].filter(Boolean).join(`, `)}`)}function gw(e){return e.trim().split(`
139
+ `,1)[0]??``}function _w(e,t){if(e.kind!==`ok`)return e;let n=t(e.value);return n===null?Z:X(n)}function vw(e){if(e.kind!==`ok`)return e;let t=e.value.trim();return t?X(t):Z}const yw=/^[A-Za-z]:[\\/]/;function bw(e){let t=e.trim();if(yw.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 xw(e){return bw(e)?.host||null}function Sw(e){let t=xw(e);return t?t===`github.com`||t.endsWith(`.github.com`)?`github`:/(^|\.)gitlab\./.test(t)?`gitlab`:null:null}function Cw(e){let t=new Map;for(let n of e.split(`
140
+ `)){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 ww(e){return e.urls.find(e=>kw(e)!==null)??e.urls[0]??null}function Tw(e){return e.find(e=>e.name===`origin`)??e[0]??null}function Ew(e){let t=Tw(e);return t?ww(t):null}function Dw(e){let t=Tw(e);return t?t.urls.find(e=>Sw(e)!==null)??ww(t):null}function Ow(e){let t=(bw(e)?.path??e.replace(/[\\/]+$/,``)).split(`/`);return(t[t.length-1]??``).replace(/\.git$/,``)||null}function kw(e){let t=bw(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 Aw(e){let t=Ew(e);return t===null?null:kw(t)}function jw(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)?Z:Q(`${e}: ${[t.reason,t.exitCode==null?null:`exit ${t.exitCode}`,t.error??gw(t.stderr)].filter(Boolean).join(`, `)}`)}function Mw(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Nw(e){let t=`detached`,n=Z,r=Z,i=Z,a=0,o=0,s=0,c=0;for(let l of e.split(`
141
+ `)){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)`?Z:X(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=X(e.slice(16).trim());else if(e.startsWith(`branch.ab `)){let t=e.slice(10).trim().match(/^\+(\d+)\s+-(\d+)$/);t&&(i=X({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 Pw(e){let t;try{t=JSON.parse(e)}catch(e){return Q(`gh pr view: unparseable JSON (${e instanceof Error?e.message:String(e)})`)}if(!Mw(t))return Q(`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`?Q(`gh pr view: missing number/state/url`):r.toUpperCase()===`OPEN`?X({number:n,state:r,url:i}):Z}function Fw(e){let t;try{t=JSON.parse(e)}catch(e){return Q(`glab mr view: unparseable JSON (${e instanceof Error?e.message:String(e)})`)}if(!Mw(t))return Q(`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`?Q(`glab mr view: missing iid/state/web_url`):r.toLowerCase()===`opened`?X({number:n,state:r,url:i}):Z}function Iw(e){try{let t=r.statSync(e);return{key:`${t.dev}:${t.ino}`,stamp:`${t.mtimeMs}:${t.size}`}}catch{return null}}var Lw=class{isGitRepo(e){try{return r.existsSync(c.join(e,`.git`))}catch{return!1}}async execGitAsync(e,t){return Te({bin:`git`,args:[...e],cwd:t.cwd,env:{...process.env,GIT_OPTIONAL_LOCKS:`0`},timeoutMs:t.timeout,category:`git`})}async resolveEffectiveGitDir(e,t){return this.isWorktree(e)?X(e):t&&this.isGitRepo(t)?X(t):this.isGitRepo(e)?X(e):this.findGitRoot(e)}async findGitRoot(e){let t=c.resolve(e);for(;;){if(this.isGitRepo(t))return X(t);let e=c.dirname(t);if(e===t)return Z;t=e}}async getGitInfo(e,t={},n){try{return await this.computeGitInfo(e,t,n)}catch(e){return Q(`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=_w(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=_w(s,e=>this.repoNameFrom(e,r)),o.isWorktree=i),s!==void 0&&t.showRepoUrl&&(o.repoUrl=_w(s,Aw)),t.showOperation&&(o.operation=this.getOngoingOperation(r)),X(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`))?X(`MERGE`):r.existsSync(c.join(t,`CHERRY_PICK_HEAD`))?X(`CHERRY-PICK`):r.existsSync(c.join(t,`REVERT_HEAD`))?X(`REVERT`):r.existsSync(c.join(t,`BISECT_LOG`))?X(`BISECT`):r.existsSync(c.join(t,`rebase-merge`))||r.existsSync(c.join(t,`rebase-apply`))?X(`REBASE`):Z}catch(e){return Q(`git operation probe: ${e instanceof Error?e.message:String(e)}`)}}async getNearestTagAsync(e){return vw(hw(`git describe --tags`,await this.execGitAsync([`describe`,`--tags`,`--abbrev=0`],{cwd:e,timeout:2e3}),`absent`))}async timeSinceCommit(e,t){return t.kind===`ok`?_w(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=vw(hw(`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)?Q(`git log -1: unparseable timestamp "${n.value}"`):X(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`?X(0):Q(`git stash reflog ${t}: ${e instanceof Error?e.message:String(e)}`)}let i=n.trim();return X(i?i.split(`
142
+ `).length:0)}async getRemotesAsync(e){let t=Iw(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=hw(`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:X(t.kind===`ok`?Cw(t.value):[])}repoNameFrom(e,t){let n=Ew(e);return(n===null?null:Ow(n))??c.basename(t)}async getRepoRemoteUrl(e){let t=await this.getRemotesAsync(e);if(t.kind!==`ok`)return t;let n=Dw(t.value);return n===null?Z:X(n)}async execForgeAsync(e,t,n){return Te({bin:e,args:[...t],cwd:n.cwd,env:{...process.env},timeoutMs:n.timeout,category:`forge`})}async resolvePullRequest(e,t){let n=Sw(t);return n===`github`?jw(`gh pr view`,await this.execForgeAsync(`gh`,[`pr`,`view`,`--json`,`number,state,url`],{cwd:e,timeout:5e3}),/no (open )?pull requests? found/i,Pw):n===`gitlab`?jw(`glab mr view`,await this.execForgeAsync(`glab`,[`mr`,`view`,`--output`,`json`],{cwd:e,timeout:5e3}),/no (open )?merge requests? (found|available)/i,Fw):Z}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=hw(`git status --porcelain=v2 --branch`,await this.execGitAsync([`status`,`--porcelain=v2`,`--branch`],{cwd:e,timeout:2e3}),`failed`);return t.kind===`ok`?X(Nw(t.value)):t}};const Rw=(e,t)=>D(t);var zw=class{slots=new Map;maxWatchers;counters;logger;closed=!1;constructor(e={}){this.maxWatchers=e.maxWatchers??128,this.counters=e.counters,this.logger=e.logger??Rw}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()}},Bw=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 Vw=(e,t)=>D(t),Hw={showSha:!0,showStashCount:!0};function Uw(e){let t=Object.keys(e).sort(),n={};for(let r of t)n[r]=e[r];return JSON.stringify(n)}function Ww(e){let t=t=>{try{return r.statSync(c.join(e,t)).mtimeMs}catch{return 0}};return{head:t(`HEAD`),index:t(`index`)}}function Gw(e,t){return e.head!==t.head||e.index!==t.index}function Kw(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 qw=class extends Lw{entries=new Map;subscribersByRepo=new Map;fetchInFlight=new Map;resolutions=new Map;prCache=new Map;prFetchInFlight=new Map;refreshes=new Bw;hits=0;misses=0;invalidations=0;inner;ttlMs;maxEntries;watchers;ownsWatchers;logger;sanityTimer=null;constructor(e={}){super(),this.inner=e.inner??new Lw,this.ttlMs=e.ttlMs??3e4,this.maxEntries=e.maxEntries??64,this.logger=e.logger??Vw,e.watchers?(this.watchers=e.watchers,this.ownsWatchers=!1):(this.watchers=new zw({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}|${Uw(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(X(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=Ww(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}`,Kw(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 Z;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}`,Kw(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,{...Hw});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,{...Hw}),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=Ww(this.inner.resolveGitDir(t.repoRoot)),e.set(t.repoRoot,n)),Gw(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()}},Jw=class{static CACHE_DIR=O();static USAGE_CACHE_DIR=c.join(this.CACHE_DIR,`usage`);static LOCKS_DIR=c.join(this.CACHE_DIR,`locks`);static isLocked(e){let t=c.join(this.LOCKS_DIR,e);if(!r.existsSync(t))return!1;try{let n=r.readFileSync(t,`utf-8`),i=parseInt(n.trim(),10);if(isNaN(i))return D(`Invalid PID in lock file ${e}, removing stale lock`),r.unlinkSync(t),!1;try{return process.kill(i,0),!0}catch(n){return n.code===`ESRCH`?(D(`Removing stale lock file ${e} for dead process ${i}`),r.unlinkSync(t),!1):(D(`Error checking process ${i} for lock ${e}:`,n),!0)}}catch(t){return D(`Error reading lock file ${e}:`,t),!0}}static async acquireLock(e,t=5e3){await this.ensureCacheDirectories();let n=c.join(this.LOCKS_DIR,e),i=Date.now(),a=String(process.pid);for(;Date.now()-i<t;)try{return await r.promises.writeFile(n,a,{flag:`wx`}),D(`Lock acquired for ${e}`),!0}catch(e){if(e.code===`EEXIST`)await w(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 ee(`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 w(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 w(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 Yw={"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 Xw=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 Jw.getUsageCache(`pricing`,e)}static async saveDiskCache(e){await Jw.setUsageCache(`pricing`,e)}static async fetchPricingData(){return new Promise(e=>{let t=new v(this.GITHUB_PRICING_URL),n=te({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(Yw).length} models`),this.executionCache=Yw,D(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(Yw).length} models`),Yw)}static validatePricingData(e){if(!e||typeof e!=`object`)return!1;for(let[,t]of Object.entries(e)){if(!t||typeof t!=`object`)return!1;let e=t;if(typeof e.input!=`number`||typeof e.output!=`number`||typeof e.cache_read!=`number`)return!1}return!0}static async getModelPricing(e){if(this.modelPricingCache.has(e))return D(`[CACHE-HIT] Model pricing cache: ${e}`),this.modelPricingCache.get(e);let t=await this.getCurrentPricing(),n;return n=t[e]?t[e]:this.fuzzyMatchModel(e,t),this.modelPricingCache.set(e,n),D(`[CACHE-SET] Model pricing cache: ${e}`),n}static fuzzyMatchModel(e,t){let n=e.toLowerCase();for(let[e,r]of Object.entries(t))if(e.toLowerCase()===n)return r;for(let{pattern:e,fallback:r}of[{pattern:[`opus-4-6`,`claude-opus-4-6`],fallback:`claude-opus-4-6-20260205`},{pattern:[`opus-4-5`,`claude-opus-4-5`],fallback:`claude-opus-4-5-20251101`},{pattern:[`opus-4-1`,`claude-opus-4-1`],fallback:`claude-opus-4-1-20250805`},{pattern:[`opus-4`,`claude-opus-4`],fallback:`claude-opus-4-20250514`},{pattern:[`sonnet-4-6`,`sonnet-4.6`,`claude-sonnet-4-6`],fallback:`claude-sonnet-4-6`},{pattern:[`sonnet-4.5`,`4-5-sonnet`,`sonnet-4-5`],fallback:`claude-sonnet-4-5-20250929`},{pattern:[`sonnet-4`,`claude-sonnet-4`],fallback:`claude-sonnet-4-20250514`},{pattern:[`haiku-4.5`,`4-5-haiku`,`haiku-4-5`],fallback:`claude-haiku-4-5-20251001`},{pattern:[`haiku`],fallback:`claude-haiku-4-5-20251001`},{pattern:[`opus`],fallback:`claude-opus-4-20250514`},{pattern:[`sonnet`],fallback:`claude-sonnet-4-5-20250929`}])if(e.some(e=>n.includes(e))&&t[r])return t[r];return t[`claude-sonnet-4-5-20250929`]||{name:`${e} (Unknown Model)`,input:3,cache_write_5m:3.75,cache_write_1h:6,cache_read:.3,output:15}}static async calculateCostForEntry(e){let t=e.message?.usage;if(!t)return 0;let n=this.extractModelId(e),r=await this.getModelPricing(n),i=t.input_tokens||0,a=t.output_tokens||0,o=t.cache_creation_input_tokens||0,s=t.cache_read_input_tokens||0,c=i/1e6*r.input,l=a/1e6*r.output,u=s/1e6*r.cache_read,d=o/1e6*r.cache_write_5m;return c+l+d+u}static extractModelId(e){if(e.model&&typeof e.model==`string`)return e.model;let t=e.message;if(t?.model){let e=t.model;if(typeof e==`string`)return e;let n=e;return(typeof n?.id==`string`?n.id:null)||`claude-sonnet-4-5-20250929`}return e.model_id&&typeof e.model_id==`string`?e.model_id:`claude-sonnet-4-5-20250929`}};function Zw(e){if(!e)return 0;try{return o(e).mtimeMs}catch{return 0}}const Qw=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 $w(e){return((...t)=>Qw.run(()=>e(...t)))}const eT=$w(ie),tT=$w(re),nT=$w(T);async function rT(e,t){return Qw.run(async()=>{let n=null;try{n=await ne(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 X({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 X({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`?Z:Q(`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 iT(e,t){return Qw.run(async()=>{let n=null;try{n=await ne(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 X({buf:o===a.length?a:a.subarray(0,o),fromStart:i===0})}catch(t){return t.code===`ENOENT`?Z:Q(`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 aT=/<command-name>\s*([^<\s][^<]*?)\s*<\/command-name>/;function oT(e){if(typeof e==`string`)return aT.exec(e)?.[1]}function sT(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 cT(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=sT(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?oT(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 lT(){let e=[],t=process.env.CLAUDE_CONFIG_DIR;if(t&&t.split(`,`).forEach(t=>{let n=t.trim();a(n)&&e.push(n)}),e.length===0){let t=p(),n=d(t,`.config`,`claude`),r=d(t,`.claude`);a(n)&&e.push(n),a(r)&&e.push(r)}return e}async function uT(e){let t=[];for(let n of e){let e=d(n,`projects`);if(a(e))try{let n=await eT(e,{withFileTypes:!0});for(let r of n)if(r.isDirectory()){let n=d(e,r.name);t.push(n)}}catch(t){D(`Failed to read projects directory ${e}:`,t)}}return t}async function dT(e,t,n){let r=[],i=d(t,e,`subagents`);try{let t=(await eT(i)).filter(e=>e.startsWith(`agent-`)&&e.endsWith(`.jsonl`));for(let a of t){let t=d(i,a);if(n?.has(t)){r.push(t);continue}try{let n=(await tT(t,`utf-8`)).split(`
143
+ `)[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 fT(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 pT=new Map;async function mT(e){try{let t=await nT(e),n=t.size,r=pT.get(e);if(r&&r.mtime===t.mtimeMs&&r.size===n)return D(`[parse-cache] hit ${e}`),pT.delete(e),pT.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 yT(e)):i=await _T(e),D(`Parsed ${i.length} entries from ${e}`),n>5242880?i:(pT.delete(e),pT.size>=16&&pT.delete(pT.keys().next().value),pT.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 hT(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:cT(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 gT(e){let t=[];for(let n of e.split(`
144
+ `))if(n.trim())try{let e=hT(JSON.parse(n));e&&t.push(e)}catch(e){D(`Failed to parse JSONL line: ${e}`);continue}return t}async function _T(e){return gT(await tT(e,`utf-8`))}async function vT(e,t){let n=await rT(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 X(c<0?{entries:[],cursor:{offset:i,mtimeMs:a,ino:o},reset:s}:{entries:gT(r.subarray(0,c+1).toString(`utf-8`)),cursor:{offset:i+c+1,mtimeMs:a,ino:o},reset:s})}async function yT(e){return new Promise((t,n)=>{let r=[],a=i(e,{encoding:`utf8`}),o=E({input:a,crlfDelay:1/0});o.on(`line`,e=>{let t=e.trim();if(t)try{let e=hT(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 bT=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 xT(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 ST={cost:0,input:0,output:0,cacheCreation:0,cacheRead:0},CT={cost:null,calculatedCost:null,officialCost:null,tokens:null,tokenBreakdown:null};function wT(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function TT(){let e=new Date;return e.setHours(0,0,0,0),e.setDate(e.getDate()-1),e.getTime()}function ET(){return{input:0,output:0,cacheCreation:0,cacheRead:0}}async function DT(e,t,n,r){let i=wT(new Date(TT())),a=e&&!t?e:void 0,o=a?.entries??0,s=a?.cost??0,c=a?{...a.breakdown}:ET(),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 Xw.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=wT(new Date(e.timestamp));if(r<i)continue;let a=l.get(r)??{...ST};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 OT(e){let t=0,n=0,r=ET(),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)??{...ST};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:CT,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 kT(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 AT=class{entries=new Map;flight=new bT;seeded=new Map;speedRings=new Map;speedFlight=new bT;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:CT,i=t?.cost?.total_cost_usd??null;return X({session:{...r,cost:i??r.cost,officialCost:i}})}async getTodayInfo(e){let t=wT(new Date);try{await this.ensureSeeded(t)}catch(e){return Q(`usage seed: ${e instanceof Error?e.message:String(e)}`)}let n=await this.ingest(e?.session_id??``,e?.transcript_path);if(n.kind===`failed`)return n;let r={...ST},i=!1;for(let e of this.entries.values()){i||=e.days.has(t);let n=e.days.get(t)??ST;r.cost+=n.cost,r.input+=n.input,r.output+=n.output,r.cacheCreation+=n.cacheCreation,r.cacheRead+=n.cacheRead}return i?X({cost:r.cost,tokens:r.input+r.output+r.cacheCreation+r.cacheRead,tokenBreakdown:{input:r.input,output:r.output,cacheCreation:r.cacheCreation,cacheRead:r.cacheRead},date:t}):Z}async observeSpeed(e,t,n){let r=Zw(t);return this.speedFlight.run(`${e}:${r}`,async()=>{let i=await this.ingest(e,t,r);if(i.kind===`failed`)return i;let a=xT(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),X({...s!==void 0&&{prev:s},cur:a,samples:[...o]})})}async ingest(e,t,n){if(!e)return Z;let r=n??Zw(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++,X(i);if(!t)return i?X(i):Z;this.misses++;let a;try{a=await this.flight.run(`${e}:${r}`,()=>this.refold(e,t,this.entries.get(e)))}catch(t){return Q(`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(),X(o)}async refold(e,t,n){let r=await dT(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 vT(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 DT(r,l,s,c)),e===t&&(a=c.mtimeMs)}return X({files:i,...OT(i),mainMtime:a})}ensureSeeded(e){let t=this.seeded.get(e);if(t)return t;this.seeded.clear();let n=this.seed(e);return this.seeded.set(e,n),n.catch(()=>{this.seeded.get(e)===n&&this.seeded.delete(e)}),n}async seed(e){let t=TT(),n=await uT(lT()),r=[];for(let e of n){let n;try{n=await eT(e)}catch{continue}for(let i of n){if(!i.endsWith(`.jsonl`))continue;let n=d(e,i),a;try{a=(await nT(n)).mtimeMs}catch{continue}a<t||r.push({sessionId:i.slice(0,-6),path:n,mtime:a})}}await kT(r,8,async e=>{let t=await this.ingest(e.sessionId,e.path,e.mtime);t.kind===`failed`&&Y(`warn`,`usageStore seed: ${t.reason}`)}),this.seeds++,Y(`info`,`usageStore seed sessions=${r.length}`)}sweepStale(){let e=Date.now(),t=0;for(let[n,r]of this.entries)e-r.lastSeenAt>this.staleAgeMs&&(this.entries.delete(n),this.speedRings.delete(n),t++);return t>0&&(this.sweeps++,Y(`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),Y(`info`,`usageStore evict ${e}`)}}close(){this.sweepTimer&&=(clearInterval(this.sweepTimer),null),this.entries.clear(),this.seeded.clear(),this.speedRings.clear()}};const jT=/"(?:cache_read_input_tokens|cache_creation_input_tokens)":[1-9]/;function MT(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 NT(e){let t=await PT(e);return t.kind===`ok`?X(Math.floor((t.value+36e5)/1e3)):t}async function PT(e){for(let t of[65536,1048576]){let n=await iT(e,t);if(n.kind!==`ok`)return n;let r=FT(n.value.buf,n.value.fromStart);if(r!=null)return X(r);if(n.value.fromStart)return Z}return Z}function FT(e,t){let n=e.toString(`utf8`).split(`
145
+ `),r=+!t;for(let e=n.length-1;e>=r;e--){let t=n[e];if(!t||!jT.test(t))continue;let r=MT(t);if(r!=null)return r}return null}function IT(e,t,n){let r=rg(t(`preset`),e.globals.preset,e.presets),i=og(e,r),a=t(`edit.mode`)===`open`?e.editGlobals:{};return{preset:r,presetCustomized:n(r),theme:Xv(a.palette,t(`theme`),i.palette),look:zi(a.look,t(`look`),i.look,e.looks),style:Hi(a.style,t(`style`),i.style),separator:a.default_separator??i.default_separator,autoWrap:ra(a.autoWrap,t(`autoWrap`),i.autoWrap),padding:ia(a.padding,t(`padding`),i.padding),charset:Ki(a.charset,t(`charset`),i.charset),updateNotice:a.updateNotice??i.updateNotice??!0,colorCompatibility:Yi(a.colorCompatibility,t(`colorCompatibility`),i.colorCompatibility)}}function LT(e){return{preset:{effective:e.preset,customized:e.presetCustomized},style:{effective:e.style},charset:{effective:e.charset},colorCompatibility:{effective:e.colorCompatibility},autoWrap:{effective:e.autoWrap},padding:{effective:e.padding}}}const RT=10*1e3;function zT(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 BT(e,t){if(!(t<60))return e*3600/t}function VT(e,t,n,r){let i=r-t;if(i<50||i>RT)return;let a=n-e;if(!(a<=0))return a*1e3/i}function HT(e){let{prev:t,cur:n}=e;if(t===void 0)return;let r=VT(t.input,t.atMs,n.input,n.atMs),i=VT(t.output,t.atMs,n.output,n.atMs),a=VT(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 UT(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>RT)continue;let o=VT(r.total,r.atMs,i.total,i.atMs);n.push(o??0)}if(n.length!==0)return n.join(`,`)}function WT(e){let t=e.indexOf(`.`);return t<0?e:e.slice(0,t)}function GT(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`,()=>WT(f.hostname())),i=n(`user`,()=>f.userInfo().username);return{host:{...r!==void 0&&{name:r},...i!==void 0&&{user:i},...e.ssh!==void 0&&{ssh:e.ssh}},failures:t}}function KT(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;for(let n of $a(ag(e,t).node)){if(n.when)for(let e of sy(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 sy(e))r.push(t)}}let a=new Set;for(;r.length>0;){let e=r.pop();for(let t of JT(n,e)){if(i.has(t))continue;i.add(t);let e=n.get(t);if(e){if(e.kind===`input`)a.add(e.path);else if(e.kind===`template`)for(let t of sy(e.template))r.push(t)}}}return a}function qT(e){let t=new Map;return n=>{let r=t.get(n);if(r!==void 0)return r;let i=KT(e,n);return t.set(n,i),i}}function JT(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 YT(e,t){for(let n of e)if(n===t||n.startsWith(t+`.`))return!0;return!1}function XT(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 ZT(e,t,n,r,i,a){let o=e=>YT(r,e),s=(t.clock??(()=>new Date))().getTime(),c=(e,t,n)=>t?n().catch(t=>Q(`${e}: ${String(t)}`)):Promise.resolve(Z),[l,u,d,f,p,m,h,g,_]=await Promise.all([c(`git`,o(`git`),()=>t.gitProvider.getGitInfo(n??e.workspace?.current_dir,XT(r),e.workspace?.project_dir)),c(`session`,o(`session.cost`)||o(`session.tokens`)||o(`burn`),()=>t.usageStore.getUsageInfo(e.session_id,e)),c(`today`,o(`today`),()=>t.usageStore.getTodayInfo(e)),c(`context`,o(`context`),()=>t.contextProvider.getContextInfo(e)),c(`metrics`,o(`metrics`)||o(`burn`),()=>t.metricsProvider.getMetricsInfo(e.session_id,e)),c(`activity`,o(`activity`),()=>t.activityProvider.getActivityInfo(e.session_id,e)),c(`tmux`,o(`tmux`),()=>t.tmuxService.getSessionId()),c(`cache`,o(`cache`),()=>NT(e.transcript_path)),c(`speed`,o(`speed`),()=>t.usageStore.observeSpeed(e.session_id,e.transcript_path,s))]),v=[],y=e=>{if(e.kind===`failed`){v.push(e.reason);return}return e.kind===`ok`?e.value:void 0},b=nE(l);v.push(...b.failures);let x=GT(a);v.push(...x.failures);let S=y(u),C=y(d),ee=y(f),te=y(p),w=y(m),ne=y(h),re=y(g);for(let e of v)t.log(`warn`,`provider fetch failed: ${e}`);let ie=e.rate_limits?.five_hour,T=e.rate_limits?.seven_day,E=ie?zT(ie.used_percentage,ie.resets_at,18e6,s):void 0,ae=T?zT(T.used_percentage,T.resets_at,6048e5,s):void 0,oe=S?.session.cost,se=te?.sessionDuration,ce=o(`burn`)&&oe!=null&&se!=null?BT(oe,se):void 0,le=y(_),ue=le===void 0?void 0:HT(le),de=le===void 0?void 0:UT(le),fe=ue!==void 0||de!==void 0?{...ue,...de!==void 0&&{history:de}}:void 0,pe=tE(process.env.HOME??process.env.USERPROFILE),me=e.workspace?{...e.workspace,current_dir:tE(e.workspace.current_dir)??``,project_dir:tE(e.workspace.project_dir)??``}:e.workspace,he=S===void 0?void 0:eE({cost:S.session.cost,tokens:S.session.tokens}),D=C===void 0?void 0:{cost:C.cost,tokens:C.tokens},ge=te===void 0?void 0:eE({lastResponseTime:te.lastResponseTime,responseTime:te.responseTime,sessionDuration:te.sessionDuration,messageCount:te.messageCount,linesAdded:te.linesAdded,linesRemoved:te.linesRemoved}),_e=w===void 0?void 0:QT(w);return{...e,...me!==void 0&&{workspace:me},...pe!==void 0&&{home:pe},...b.git!==void 0&&{git:b.git},...ne!==void 0&&{tmux:{session:ne}},host:x.host,...LT(i),...he!==void 0&&{session:he},...D!==void 0&&{today:D},...ce!==void 0&&{burn:{costPerHour:ce}},...fe!==void 0&&{speed:fe},...o(`block`)&&ie!==void 0&&{block:{nativeUtilization:ie.used_percentage,resetsAt:ie.resets_at,...E!==void 0&&{etaMinutes:E}}},...T!==void 0&&{weekly:{percentage:T.used_percentage,resetsAt:T.resets_at,...ae!==void 0&&{etaMinutes:ae}}},...re!==void 0&&{cache:{expiresAt:re}},...ee!==void 0&&{context:{totalTokens:ee.totalTokens,contextLeft:ee.contextLeftPercentage}},...ge!==void 0&&{metrics:ge},..._e!==void 0&&{activity:_e}}}function QT(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=$T(e.running),i=$T(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 $T(e){return e.length===0?void 0:e.map(e=>`${e.name}:${e.count}`).join(`,`)}function eE(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 tE(e){return e===void 0||e.length===0||c.sep!==`\\`?e:e.replace(/\\/g,`/`)}function nE(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 rE=`trimPrefix "/" (trimPrefix .project_dir .current_dir)`,iE=`{{ \$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 (${rE}) (basename .project_dir) (ne (${rE}) "") }}{{ end }}{{ end }}{{ abbreviatePath \$dir }}`,aE={branch:`primary`,staged:`success`,unstaged:`warning`,untracked:`accent`,conflicts:`error`,dirty:`warning`,clean:`success`,ahead:`success`,behind:`warning`,stash:`accent`},oE=(e,t)=>`{{ fg (readableOn (color "${e}") (bgOf) ${Xc}) ${t} }}`,sE=(e,t)=>oE(aE[e],t),cE=`{{ readableOn (mix (color "foreground") (bgOf) 60) (bgOf) 3 }}`,lE=`{{ if or (gt .git.staged 0) (gt .git.unstaged 0) (gt .git.untracked 0) (gt .git.conflicts 0) }} ({{ \$first := true }}{{ if gt .git.staged 0 }}${sE(`staged`,`(printf "+%v" .git.staged)`)}{{ $first = false }}{{ end }}{{ if gt .git.unstaged 0 }}{{ if not $first }} {{ end }}${sE(`unstaged`,`(printf "~%v" .git.unstaged)`)}{{ $first = false }}{{ end }}{{ if gt .git.untracked 0 }}{{ if not $first }} {{ end }}${sE(`untracked`,`(printf "?%v" .git.untracked)`)}{{ $first = false }}{{ end }}{{ if gt .git.conflicts 0 }}{{ if not $first }} {{ end }}${sE(`conflicts`,`(printf "!%v" .git.conflicts)`)}{{ $first = false }}{{ end }}){{ end }}`,uE=`{{ if eq .git.status "conflicts" }}${sE(`conflicts`,`"⚠"`)}{{ else }}{{ if eq .git.status "dirty" }}${sE(`dirty`,`"●"`)}{{ else }}${sE(`clean`,`"✓"`)}{{ end }}{{ end }}`,dE=`{{ if ne .git.repoName "" }}{{ .git.repoName }} {{ end }}⎇ ${sE(`branch`,`.git.branch`)}{{ if .git.sha }} ♯ {{ .git.sha }}{{ end }}{{ if or (gt .git.ahead 0) (gt .git.behind 0) }} {{ if gt .git.ahead 0 }}${sE(`ahead`,`(printf "↑%v" .git.ahead)`)}{{ end }}{{ if gt .git.behind 0 }}${sE(`behind`,`(printf "↓%v" .git.behind)`)}{{ end }}{{ end }}`+lE+`{{ if .git.upstream }} →{{ .git.upstream }}{{ end }}{{ if gt .git.stash 0 }} ${sE(`stash`,`(printf "⧇ %v" .git.stash)`)}{{ end }} `+uE,fE={globals:{palette:`tokyo-night`},variables:{current_dir:{kind:`input`,path:`workspace.current_dir`,default:`?`},project_dir:{kind:`input`,path:`workspace.project_dir`,default:``},transcript_path:{kind:`input`,path:`transcript_path`,default:``},"model.display_name":{kind:`input`,path:`model.display_name`,default:``},"session.id":{kind:`input`,path:`session_id`,default:``},version:{kind:`input`,path:`version`,default:``},"theme.effective":{kind:`input`,path:`theme.effective`,default:``},"look.effective":{kind:`input`,path:`look.effective`,default:``},"preset.effective":{kind:`input`,path:`preset.effective`,default:``},"preset.customized":{kind:`input`,path:`preset.customized`,type:`boolean`,default:!1},"style.effective":{kind:`input`,path:`style.effective`,default:``},"charset.effective":{kind:`input`,path:`charset.effective`,default:``},"colorCompatibility.effective":{kind:`input`,path:`colorCompatibility.effective`,default:``},"autoWrap.effective":{kind:`input`,path:`autoWrap.effective`,type:`boolean`,default:!0},"padding.effective":{kind:`input`,path:`padding.effective`,type:`number`,default:1},"term.cols":{kind:`input`,path:`term.cols`,type:`number`,default:80},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.repoUrl":{kind:`input`,path:`git.repoUrl`,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.prNumber":{kind:`input`,path:`git.prNumber`,type:`number`,default:0},"git.prState":{kind:`input`,path:`git.prState`,default:``},"git.prUrl":{kind:`input`,path:`git.prUrl`,default:``},"git.prError":{kind:`input`,path:`git.prError`,default:``},"cache.expiresAt":{kind:`input`,path:`cache.expiresAt`,type:`number`,default:0},"session.cost":{kind:`input`,path:`session.cost`,type:`number`,default:0},"session.tokens":{kind:`input`,path:`session.tokens`,type:`number`,default:0},"session.budget.amount":{kind:`literal`,value:0},"session.budget.warningThreshold":{kind:`literal`,value:80},"today.cost":{kind:`input`,path:`today.cost`,type:`number`,default:0},"today.tokens":{kind:`input`,path:`today.tokens`,type:`number`,default:0},"today.budget.amount":{kind:`literal`,value:50},"today.budget.warningThreshold":{kind:`literal`,value:80},"block.nativeUtilization":{kind:`input`,path:`block.nativeUtilization`,type:`number`,default:0},"block.resetsAt":{kind:`input`,path:`block.resetsAt`,type:`number`,default:0},"block.budget.warningThreshold":{kind:`literal`,value:80},"block.budget.heatThreshold":{kind:`literal`,value:50},"weekly.percentage":{kind:`input`,path:`weekly.percentage`,type:`number`,default:0},"weekly.resetsAt":{kind:`input`,path:`weekly.resetsAt`,type:`number`,default:0},"weekly.budget.warningThreshold":{kind:`literal`,value:80},"weekly.budget.heatThreshold":{kind:`literal`,value:50},"burn.costPerHour":{kind:`input`,path:`burn.costPerHour`,type:`number`,default:-1},"block.etaMinutes":{kind:`input`,path:`block.etaMinutes`,type:`number`,default:-1},"weekly.etaMinutes":{kind:`input`,path:`weekly.etaMinutes`,type:`number`,default:-1},"burn.eta.warnMinutes":{kind:`literal`,value:60},"burn.eta.errorMinutes":{kind:`literal`,value:30},"speed.input":{kind:`input`,path:`speed.input`,type:`number`,default:-1},"speed.output":{kind:`input`,path:`speed.output`,type:`number`,default:-1},"speed.total":{kind:`input`,path:`speed.total`,type:`number`,default:-1},"speed.history":{kind:`input`,path:`speed.history`,type:`string`,default:``},"context.totalTokens":{kind:`input`,path:`context.totalTokens`,type:`number`,default:0},"context.contextLeft":{kind:`input`,path:`context.contextLeft`,type:`number`,default:100},"metrics.lastResponseTime":{kind:`input`,path:`metrics.lastResponseTime`,type:`number`,default:0},"metrics.responseTime":{kind:`input`,path:`metrics.responseTime`,type:`number`,default:0},"metrics.sessionDuration":{kind:`input`,path:`metrics.sessionDuration`,type:`number`,default:0},"metrics.messageCount":{kind:`input`,path:`metrics.messageCount`,type:`number`,default:0},"metrics.linesAdded":{kind:`input`,path:`metrics.linesAdded`,type:`number`,default:0},"metrics.linesRemoved":{kind:`input`,path:`metrics.linesRemoved`,type:`number`,default:0},"activity.command":{kind:`input`,path:`activity.command`,type:`string`,default:``},"activity.todo.total":{kind:`input`,path:`activity.todo.total`,type:`number`,default:0},"activity.todo.completed":{kind:`input`,path:`activity.todo.completed`,type:`number`,default:0},"activity.todo.position":{kind:`input`,path:`activity.todo.position`,type:`number`,default:0},"activity.todo.active":{kind:`input`,path:`activity.todo.active`,type:`string`,default:``},"activity.tool.running":{kind:`input`,path:`activity.tool.running`,type:`string`,default:``},"activity.tool.done":{kind:`input`,path:`activity.tool.done`,type:`string`,default:``}},segments:{directory:{description:"The current directory, shortened fish-style — `~` under home, project-relative inside the project.",template:iE},model:{description:`The active model's display name.`,template:`✱ {{ formatModelName .model.display_name }}`,when:`{{ ne .model.display_name "" }}`},sessionId:{description:`The session id, truncated to 8 characters.`,template:`⌗{{ trunc 8 .session.id }}`,when:`{{ ne .session.id "" }}`},version:{description:`The Claude Code version reported in the hook payload.`,template:`◈ v{{ .version }}`,when:`{{ ne .version "" }}`},tmux:{description:`The tmux session name; hidden when not inside tmux.`,template:`tmux:{{ .tmux.session | default "none" }}`,when:`{{ ne .tmux.session "" }}`},host:{description:`user@host on a warning background, shown only over SSH.`,template:`⇄ {{ .host.user | default "?" }}@{{ .host.name | default "?" }}`,bg:`warning`,when:`{{ .host.ssh }}`},git:{description:`Branch, sha, ahead/behind, staged/unstaged/untracked/conflict counts, upstream, stash count, and a clean/dirty/conflict glyph.`,template:dE,fg:cE,when:`{{ ne .git.branch "" }}`},gitaculous:{description:`The same git state in asyncgit's compact spelling: repo, in-progress operation, sha, S/U/? flags, branch, upstream ±, stash count, and time since the last commit.`,template:`(git){{ if ne .git.repoName "" }} {{ .git.repoName }}{{ end }}{{ if ne .git.operation "" }} [{{ .git.operation }}]{{ end }}{{ if ne .git.sha "" }} {{ .git.sha }}{{ end }}{{ if or (gt .git.staged 0) (gt .git.unstaged 0) (gt .git.untracked 0) (gt .git.conflicts 0) }} {{ if gt .git.staged 0 }}${sE(`staged`,`"S"`)}{{ end }}{{ if gt .git.unstaged 0 }}${sE(`unstaged`,`"U"`)}{{ end }}{{ if gt .git.untracked 0 }}${sE(`untracked`,`"?"`)}{{ end }}{{ if gt .git.conflicts 0 }}${sE(`conflicts`,`(printf "!%v" .git.conflicts)`)}{{ end }}{{ end }} ⎇ ${sE(`branch`,`.git.branch`)}{{ if ne .git.upstream "" }} [{{ .git.upstream }}{{ if or (gt .git.ahead 0) (gt .git.behind 0) }} {{ if gt .git.ahead 0 }}${sE(`ahead`,`(printf "+%v" .git.ahead)`)}{{ end }}{{ if and (gt .git.ahead 0) (gt .git.behind 0) }}/{{ end }}{{ if gt .git.behind 0 }}${sE(`behind`,`(printf "-%v" .git.behind)`)}{{ end }}{{ end }}]{{ end }}{{ if gt .git.stash 0 }} ${sE(`stash`,`(printf "(%v stashed)" .git.stash)`)}{{ end }}{{ if gt .git.timeSinceCommit 0 }} ◷ {{ template "formatTimeSince" .git.timeSinceCommit }}{{ end }}`,fg:cE,when:`{{ ne .git.branch "" }}`},gitPr:{description:"The pull request open for this branch, as a link; `⚠ PR` when the forge lookup failed.",template:`{{ if ne .git.prUrl "" }}{{ link .git.prUrl (printf "⇆ #%v" .git.prNumber) }}{{ else }}⚠ PR{{ end }}`,when:`{{ or (ne .git.prUrl "") (ne .git.prError "") }}`},toolbar:{description:`Quick actions: copy the session id, and open the project, transcript or repo.`,template:Bg(``).template},themeSwitcher:{description:"`◀ <theme> ▶`: the theme the bar is wearing; ◀ and ▶ switch this session to the previous or next theme, wrapping at the ends.",template:`{{ carousel "stepTheme" 0 }}`},session:{description:`This session's cost and token total, with a budget warning once a budget is configured.`,template:`§ {{ template "formatCost" .session.cost }} ({{ template "formatTokens" .session.tokens }}){{ template "budgetStatus" (dict "cost" .session.cost "budget" .session.budget.amount "warn" .session.budget.warningThreshold) }}`},today:{description:`Today's cost and tokens across every session, with a budget warning once a budget is configured.`,template:`☉ {{ template "formatCost" .today.cost }} ({{ template "formatTokens" .today.tokens }}){{ template "budgetStatus" (dict "cost" .today.cost "budget" .today.budget.amount "warn" .today.budget.warningThreshold) }}`},block:{description:`The 5-hour rate-limit block: percent used and time to reset, heating to warning then error.`,template:`◱ {{ round .block.nativeUtilization }}% ({{ template "formatResetCountdown" .block.resetsAt }})`,bg:`{{ ramp (round .block.nativeUtilization) "step" 0 (tint) .block.budget.heatThreshold "warning" .block.budget.warningThreshold "error" }}`,when:`{{ gt .block.resetsAt 0 }}`},weekly:{description:`The weekly rate-limit quota: percent used and time to reset, heating to warning then error.`,template:`◑ {{ round .weekly.percentage }}% ({{ template "formatResetCountdown" .weekly.resetsAt }})`,bg:`{{ ramp (round .weekly.percentage) "step" 0 (tint) .weekly.budget.heatThreshold "warning" .weekly.budget.warningThreshold "error" }}`,when:`{{ gt .weekly.resetsAt 0 }}`},burnrate:{description:`Spend per hour, with the projected time to the 5-hour and weekly limits.`,template:`⚡ {{ template "formatRate" .burn.costPerHour }} · {{ template "formatEta" .block.etaMinutes }} to 5h · {{ template "formatEta" .weekly.etaMinutes }} to wk`,bg:`{{ ramp .block.etaMinutes "step" -1 (tint) 0 "error" .burn.eta.errorMinutes "warning" .burn.eta.warnMinutes (tint) }}`,when:`{{ or (gt .block.resetsAt 0) (gt .weekly.resetsAt 0) }}`},speed:{description:`Token throughput for the latest exchange: output, input, and total.`,template:`⇅ out {{ template "formatSpeed" .speed.output }} · in {{ template "formatSpeed" .speed.input }} · tot {{ template "formatSpeed" .speed.total }}`,when:`{{ gt .session.tokens 0 }}`},tokenSparkline:{description:`A sparkline of recent token throughput.`,template:`⚡ {{ sparkline .speed.history 24 }}`,when:`{{ ne .speed.history "" }}`},cacheTimer:{description:"Minutes until the prompt cache expires, or `cold` once it has.",template:`◴ {{ if le (minutesUntilReset .cache.expiresAt) 0 }}cold{{ else }}{{ minutesUntilReset .cache.expiresAt }}m{{ end }}`,fg:`{{ readableOn (color (cascade (minutesUntilReset .cache.expiresAt) "0:error" "9:warning" "21:foreground")) (bgOf) ${Xc} }}`,when:`{{ gt .cache.expiresAt 0 }}`},context:{description:`Context used, in tokens and percent remaining, heating as it fills.`,template:`◔ {{ formatInteger .context.totalTokens }} ({{ .context.contextLeft }}%)`,bg:`{{ ramp .context.contextLeft "step" 0 "error" 21 "warning" 41 (tint) }}`,when:`{{ gt .context.totalTokens 0 }}`},metrics:{description:`Response times, session duration, message count, and lines added/removed.`,template:`{{ if .metrics.lastResponseTime }} Δ {{ template "formatResponseTime" .metrics.lastResponseTime }}{{ end }}{{ if .metrics.responseTime }} ⧖ {{ template "formatResponseTime" .metrics.responseTime }}{{ end }}{{ if .metrics.sessionDuration }} ⧗ {{ template "formatDuration" .metrics.sessionDuration }}{{ end }}{{ if .metrics.messageCount }} ◆ {{ .metrics.messageCount }}{{ end }}{{ if .metrics.linesAdded }} + {{ .metrics.linesAdded }}{{ end }}{{ if .metrics.linesRemoved }} - {{ .metrics.linesRemoved }}{{ end }} `,when:`{{ or (gt .metrics.lastResponseTime 0.0) (gt .metrics.responseTime 0.0) (gt .metrics.sessionDuration 0.0) (gt .metrics.messageCount 0) (gt .metrics.linesAdded 0) (gt .metrics.linesRemoved 0) }}`},activity:{description:`What Claude is doing: the slash command that opened the turn, the in-progress todo, and the tools in flight.`,template:`{{ if .activity.command }} ⌘ {{ .activity.command }}{{ end }}{{ if .activity.todo.total }}{{ if .activity.todo.active }} ☐ {{ .activity.todo.position }}/{{ .activity.todo.total }} {{ abbrev 32 .activity.todo.active }}{{ else }} ☑ {{ .activity.todo.completed }}/{{ .activity.todo.total }}{{ end }}{{ end }}{{ if .activity.tool.running }} ⟳ {{ template "formatToolTally" .activity.tool.running }}{{ end }}{{ if .activity.tool.done }} ✓ {{ template "formatToolTally" .activity.tool.done }}{{ end }} `,when:`{{ or (ne .activity.command "") (gt .activity.todo.total 0) (ne .activity.tool.running "") (ne .activity.tool.done "") }}`}},root:{rows:{identity:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`host`},{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`}]},status:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`segment`,name:`context`},{kind:`segment`,name:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`activity`}]}}},actions:{...Bg(``).actions,copyDir:{copy:`{{ .current_dir }}`},stepTheme:{set:`theme`,from:`themes`}},looks:{none:{hueShift:0,chromaScale:1,lightnessScale:1,lightnessShift:0},vivid:{hueShift:0,chromaScale:1.35,lightnessScale:1,lightnessShift:0},muted:{hueShift:0,chromaScale:.55,lightnessScale:1,lightnessShift:0},dim:{hueShift:0,chromaScale:1,lightnessScale:.85,lightnessShift:0},bright:{hueShift:0,chromaScale:1,lightnessScale:1,lightnessShift:.08},inverted:{hueShift:0,chromaScale:1,lightnessScale:-1,lightnessShift:1}},presets:{default:{},compact:{root:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`directory`},{kind:`segment`,name:`git`},{kind:`segment`,name:`context`}]},globals:{padding:0}},verbose:{root:{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`segment`,name:`gitPr`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`segment`,name:`context`},{kind:`segment`,name:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`burnrate`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`speed`},{kind:`segment`,name:`tokenSparkline`}]}]}}},editGlobals:{style:`plain`,default_separator:` | `},helpers:{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 .)) }}`}},pE=new Set([fE.globals.palette,...Object.values(fE.segments).map(e=>e.palette)].filter(e=>e!==void 0)),mE=qo(Wy(`<default>`,JSON.stringify(fE),pE),fE);var hE=pe((e=>{function t(e){var t=[...arguments].slice(1);throw Error(typeof e==`number`?`[MobX] minified error nr: `+e+(t.length?` `+t.map(String).join(`,`):``)+`. Find the full error at: https://github.com/mobxjs/mobx/blob/main/packages/mobx/src/errors.ts`:`[MobX] `+e)}function n(){return typeof globalThis<`u`?globalThis:typeof window<`u`?window:typeof global<`u`?global:typeof self<`u`?self:nn}function r(){cn||t(`Proxy not available`)}function i(e){var t=!1;return function(){if(!t)return t=!0,e.apply(this,arguments)}}function a(e){return typeof e==`function`}function o(e){switch(typeof e){case`string`:case`symbol`:case`number`:return!0}return!1}function s(e){return typeof e==`object`&&!!e}function c(e){if(!s(e))return!1;var t=Object.getPrototypeOf(e);if(t==null)return!0;var n=Object.hasOwnProperty.call(t,`constructor`)&&t.constructor;return typeof n==`function`&&n.toString()===ln}function l(e){var t=e?.constructor;return!!t&&(t.name===`GeneratorFunction`||t.displayName===`GeneratorFunction`)}function u(e,t,n){an(e,t,{enumerable:!1,writable:!0,configurable:!0,value:n})}function d(e,t,n){an(e,t,{enumerable:!1,writable:!1,configurable:!0,value:n})}function f(e,t){var n=`isMobX`+e;return t.prototype[n]=!0,function(e){return s(e)&&!0===e[n]}}function p(e){return e!=null&&Object.prototype.toString.call(e)===`[object Map]`}function m(e){return e!=null&&Object.prototype.toString.call(e)===`[object Set]`}function h(e){return e===null?null:typeof e==`object`?``+e:e}function g(e,t){return on.hasOwnProperty.call(e,t)}function _(e,t){return!!(e&t)}function v(e,t,n){return n?e|=t:e&=~t,e}function y(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function b(e,t,n){if(ne())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var i=new(e.bind.apply(e,r));return n&&re(i,n.prototype),i}function x(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,ie(r.key),r)}}function S(e,t,n){return t&&x(e.prototype,t),n&&x(e,n),Object.defineProperty(e,`prototype`,{writable:!1}),e}function C(e,t){var n=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if(typeof e==`string`)return y(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(e,t):void 0}}(e))||t&&e&&typeof e.length==`number`){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw TypeError(`Invalid attempt to iterate non-iterable instance.
145
146
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function ee(){return(ee=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(null,arguments)}function te(e){return(te=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function w(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,re(e,t)}function ne(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch{}return(ne=function(){return!!e})()}function re(e,t){return(re=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function ie(e){var t=function(e){if(typeof e!=`object`||!e)return e;var t=e[Symbol.toPrimitive];if(t!==void 0){var n=t.call(e,`string`);if(typeof n!=`object`)return n;throw TypeError(`@@toPrimitive must return a primitive value.`)}return String(e)}(e);return typeof t==`symbol`?t:t+``}function T(e){var t=typeof Map==`function`?new Map:void 0;return(T=function(e){function n(){return b(e,arguments,te(this).constructor)}if(e===null||!function(e){try{return Function.toString.call(e).indexOf(`[native code]`)!==-1}catch{return typeof e==`function`}}(e))return e;if(typeof e!=`function`)throw TypeError(`Super expression must either be null or a function`);if(t!==void 0){if(t.has(e))return t.get(e);t.set(e,n)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),re(n,e)})(e)}function E(e){return Object.assign((function(t,n){if(oe(n))return e.t(t,n);ae(t,n,e)}),e)}function ae(e,t,n){g(e,mn)||u(e,mn,ee({},e[mn])),function(e){return e.i===`override`}(n)||(e[mn][t]=n)}function oe(e){return typeof e==`object`&&typeof e.kind==`string`}function se(e,t,n){t===void 0&&(t=un),n===void 0&&(n=un);var r=new hn(e);return t!==un&&dt(r,t),n!==un&&ft(r,n),r}function ce(e,t,n){return xt(e)?e:Array.isArray(e)?En.array(e,{name:n}):c(e)?En.object(e,void 0,{name:n}):p(e)?En.map(e,{name:n}):m(e)?En.set(e,{name:n}):typeof e!=`function`||ct(e)||vt(e)?e:l(e)?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+`):
146
- '`+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:D,s:ge,t:_e}}function D(e,t,n,r){var i;return r===e.h?this.s(e,t,n,!1)===null?0:2:(i=this.u)!=null&&i.bound&&(!g(e.h,t)||!vt(e.h[t]))&&this.s(e,t,n,!1)===null?0:vt(n.value)?1:(an(r,t,ve(e,0,0,n,!1,!1)),2)}function ge(e,t,n,r){var i=ve(e,0,0,n,this.u?.bound);return e.l(t,i,r)}function _e(e,t){var n,r=t.name,i=t.addInitializer;return vt(e)||(e=ir(e)),(n=this.u)!=null&&n.bound&&i((function(){var e=this[r].bind(this);e.isMobXFlow=!0,this[r]=e})),e}function ve(e,t,n,r,i,a){a===void 0&&(a=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=Ht(this)[F],i=ee({},n.u,{get:e,context:this});i.name||=`ObservableObject.`+r.toString(),t.j.set(r,new In(i))})),function(){return this[F].O(r)}}function Ce(e,t){return{i:e,u:t,o:we,s:Te,t:Ee}}function we(e,t,n){return this.s(e,t,n,!1)===null?0:1}function Te(e,t,n,r){return e.g(t,n.value,this.u?.enhancer??ce,r)}function Ee(e,t){function n(e,t){var n=Ht(e)[F],i=new Pn(t,r.u?.enhancer??ce,`ObservableObject.`+a.toString(),!1);n.j.set(a,i),o.add(e)}var r=this,i=t.kind,a=t.name,o=new WeakSet;if(i==`accessor`)return{get:function(){return o.has(this)||n(this,e.get.call(this)),this[F].O(a)},set:function(e){return o.has(this)||n(this,e),this[F].S(a,e)},init:function(e){return o.has(this)||n(this,e),e}}}function De(e){return{i:`true`,u:e,o:Oe,s:ke,t:Ae}}function Oe(e,t,n,r){var i,a,o;if(n.get)return kn.o(e,t,n,r);if(n.set){var s=ct(n.set)?n.set:Ne(t.toString(),n.set);return r===e.h?e.l(t,{configurable:!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=sn);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`?Yt(t,n):Yt(t),o=a(r)?r:n,s=e+`L`;return i[s]?i[s].add(o):i[s]=new Set([o]),function(){var e=i[s];e&&(e.delete(o),e.size===0&&delete i[s])}}function mt(e,t,n,r){var i=pn(t);return Qt((function(){var t=Ht(e,r)[F];fn(i).forEach((function(e){t.s(e,i[e],!n||!(e in n)||n[e])}))})),e}function ht(e){var t,n={name:e.tt};return e.D&&e.D.length>0&&(n.dependencies=(t=e.D,Array.from(new Set(t))).map(ht)),n}function gt(e){var t={name:e.tt};return function(e){return e.F&&e.F.size>0}(e)&&(t.observers=Array.from(function(e){return e.F}(e)).map(gt)),t}function _t(e){a(e.cancel)&&e.cancel()}function vt(e){return!0===e?.isMobXFlow}function yt(e,t){return t===void 0?Rn(e):!1===Wt(e)||!e[F].j.has(t)?!1:Rn(Yt(e,t))}function bt(e,t){return!!e&&(t===void 0?Wt(e)||!!e[F]||gn(e)||Kn(e)||Rn(e):!!Wt(e)&&e[F].j.has(t))}function xt(e){return bt(e)}function St(e){return Wt(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 Wt(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(Wt(e))return e[F].rt();t(38)}function Tt(e,t,n){return e.set(t,n),n}function Et(e,t){t===void 0&&(t=void 0),$e();try{return e.apply(t)}finally{et()}}function Dt(e,t,n){var r;if(typeof n.timeout==`number`){var i=Error(`WHEN_TIMEOUT`);r=setTimeout((function(){if(!o[F].isDisposed){if(o(),!n.onError)throw i;n.onError(i)}}),n.timeout)}n.name=`When`;var a=Ne(`When-effect`,t),o=lt((function(t){Le(!1,e)&&(t.dispose(),r&&clearTimeout(r),a())}),n);return o}function Ot(e,t){var n,r,i;if(t!=null&&(n=t.signal)!=null&&n.aborted)return Object.assign(Promise.reject(Error(`WHEN_ABORTED`)),{cancel:function(){return null}});var a=new Promise((function(n,a){var o,s=Dt(e,n,ee({},t,{onError:a}));r=function(){s(),a(Error(`WHEN_CANCELLED`))},i=function(){s(),a(Error(`WHEN_ABORTED`))},t==null||(o=t.signal)==null||o.addEventListener==null||o.addEventListener(`abort`,i)})).finally((function(){var e;return t==null||(e=t.signal)==null||e.removeEventListener==null?void 0:e.removeEventListener(`abort`,i)}));return a.cancel=r,a}function kt(e){return e[F]}function At(e){return e.et!==void 0&&e.et.length>0}function jt(e,t){var n=e.et||=[];return n.push(t),i((function(){var e=n.indexOf(t);e!==-1&&n.splice(e,1)}))}function Mt(e,n){var r=Ge();try{for(var i=[].concat(e.et||[]),a=0,o=i.length;a<o&&((n=i[a](n))&&!n.type&&t(14),n);a++);return n}finally{Ke(r)}}function Nt(e){return e.ut!==void 0&&e.ut.length>0}function Pt(e,t){var n=e.ut||=[];return n.push(t),i((function(){var e=n.indexOf(t);e!==-1&&n.splice(e,1)}))}function Ft(e,t){var n=Ge(),r=e.ut;if(r){for(var i=0,a=(r=r.slice()).length;i<a;i++)r[i](t);Ke(n)}}function It(e,t,n,i){return n===void 0&&(n=`ObservableArray`),i===void 0&&(i=!1),r(),Qt((function(){var r=new 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`,tn(e)}function Vt(e){return e[Symbol.toStringTag]=`SetIterator`,tn(e)}function Ht(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 Ut(e){return xr[e]||(xr[e]={get:function(){return this[F].O(e)},set:function(t){return this[F].S(e,t)}})}function Wt(e){return!!s(e)&&Cr(e[F])}function Gt(e,t,n){var r;(r=e.h[mn])==null||delete r[n]}function Kt(e){return{enumerable:!1,configurable:!0,get:function(){return this[F].ct(e)},set:function(t){this[F].ht(e,t)}}}function qt(e){an(Or.prototype,``+e,Kt(e))}function Jt(e){if(e>Er){for(var t=Er;t<e+100;t++)qt(t);Er=e}}function j(e,t,n){return new Or(e,t,n)}function Yt(e,n){if(typeof e==`object`&&e){if(zt(e))return n!==void 0&&t(23),e[F].st;if(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,Zt(e)),r}if(Wt(e)){if(!n)return t(26);var i=e[F].j.get(n);return i||t(27,n,Zt(e)),i}if(gn(e)||Rn(e)||Kn(e))return e}else if(a(e)&&Kn(e[F]))return e[F];t(28)}function Xt(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):Xt(Yt(e,n))}function Zt(e,t){var n;if(t!==void 0)n=Yt(e,t);else{if(ct(e))return e.name;n=Wt(e)||_r(e)||br(e)?Xt(e):Yt(e)}return n.tt}function Qt(e){var t=Ge(),n=Re(!0);$e();try{return e()}finally{et(),ze(n),Ke(t)}}function $t(e,t,n){return n===void 0&&(n=-1),function e(t,n,r,i,o){if(t===n)return t!==0||1/t==1/n;if(t==null||n==null)return!1;if(t!=t)return n!=n;var s=typeof t;if(s!==`function`&&s!==`object`&&typeof n!=`object`)return!1;var c=z.call(t);if(c!==z.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=en(t),n=en(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 en(e){return zt(e)?e.slice():p(e)||_r(e)||m(e)||br(e)?Array.from(e.entries()):e}function tn(e){return e[Symbol.iterator]=M,Object.assign(Object.create(kr),e)}function M(){return this}Object.defineProperty(e,`__esModule`,{value:!0});var nn={},N=Object.assign,rn=Object.getOwnPropertyDescriptor,an=Object.defineProperty,on=Object.prototype,P=[];Object.freeze(P);var sn={};Object.freeze(sn);var cn=typeof Proxy<`u`,ln=Object.toString(),un=function(){},dn=Object.getOwnPropertySymbols!==void 0,fn=typeof Reflect<`u`&&Reflect.ownKeys?Reflect.ownKeys:dn?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames,pn=Object.getOwnPropertyDescriptors||function(e){var t={};return fn(e).forEach((function(n){t[n]=rn(e,n)})),t},mn=Symbol(`mobx-stored-annotations`),F=Symbol(`mobx administration`),hn=function(){function e(e){e===void 0&&(e=`Atom`),this.tt=void 0,this.bt=0,this.F=new Set,this.$=0,this.U=L.P,this.onBOL=void 0,this.onBUOL=void 0,this.tt=e}var t=e.prototype;return t.onBO=function(){this.onBOL&&this.onBOL.forEach((function(e){return e()}))},t.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(e){return e()}))},t.reportObserved=function(){return tt(this)},t.reportChanged=function(){$e(),nt(this),et()},t.toString=function(){return this.tt},S(e,[{key:`isBeingObserved`,get:function(){return _(this.bt,e.pt)},set:function(t){this.bt=v(this.bt,e.pt,t)}},{key:`isPendingUnobservation`,get:function(){return _(this.bt,e.yt)},set:function(t){this.bt=v(this.bt,e.yt,t)}},{key:`diffValue`,get:function(){return+!!_(this.bt,e.wt)},set:function(t){this.bt=v(this.bt,e.wt,t===1)}}])}();hn.pt=1,hn.yt=2,hn.wt=4;var gn=f(`Atom`,hn),_n={identity:function(e,t){return e===t},structural:function(e,t){return $t(e,t)},default:function(e,t){return Object.is?Object.is(e,t):e===t?e!==0||1/e==1/t:e!=e&&t!=t},shallow:function(e,t){return $t(e,t,1)}},vn=E({i:`override`,o:function(){return 0},s:function(){t(`'`+this.i+`' can only be used with 'makeObservable'`)},t:function(){console.warn(`'`+this.i+`' cannot be used with decorators - this is a no-op`)}}),yn=De(),bn={deep:!0,name:void 0,defaultDecorator:void 0,proxy:!0};Object.freeze(bn);var xn=Ce(`observable`),Sn=Ce(`observable.ref`,{enhancer:le}),I=Ce(`observable.shallow`,{enhancer:function(e,t,n){return e==null||Wt(e)||zt(e)||_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 $t(e,t)?t:e}}),wn=E(xn);N(Me,wn);var Tn,En=N(Me,{box:function(e,t){var n=je(t);return new Pn(e,O(n),n.name,!0,n.equals)},array:function(e,t){var n=je(t);return(!1===R.useProxies||!1===n.proxy?j: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 Qt((function(){return mt(!1===R.useProxies||!1===n?.proxy?Ht({},n):function(e,t){var n;return r(),(n=(e=Ht(e,t))[F]).v??(n.v=new Proxy(e,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}w(t,e);var n=t.prototype;return n.dehanceValue=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.set=function(e){(e=this.xt(e))!==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 w(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(un,un),_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&&Jt(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=P),At(this)){var a=Mt(this,{object:this.v,type:`splice`,index:e,removedCount:t,added:n});if(!a)return P;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),Qt((function(){i.lt=se(`ObservableMap.keys()`),i.vt=new Map,i.dt=new Map,e&&i.merge(e)}))}var n=e.prototype;return n.it=function(e){return this.vt.has(e)},n.has=function(e){var t=this;if(!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)},Qt((function(){i.st=se(i.tt),e&&i.replace(e)}))}var n=e.prototype;return n.Qt=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.clear=function(){var e=this;Et((function(){We((function(){for(var t,n=C(e.vt.values());!(t=n()).done;)e.delete(t.value)}))}))},n.forEach=function(e,t){for(var n,r=C(this);!(n=r()).done;){var i=n.value;e.call(t,i,i,this)}},n.add=function(e){var t=this;if(At(this)){var n=Mt(this,{type: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 Vt({next:function(){var t=e.next(),n=t.value,r=t.done;return r?{value:void 0,done:r}:{value:[n,n],done:r}}})},n.keys=function(){return this.values()},n.values=function(){this.st.reportObserved();var e=this,t=this.vt.values();return Vt({next:function(){var n=t.next(),r=n.done;return r?{value:void 0,done:r}:{value:e.Qt(n.value),done:r}}})},n.intersection=function(e){return m(e)&&!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)}Gt(this,0,e)}},n.s=function(e,t,n,r){if(r===void 0&&(r=!1),!0===n&&(n=this.un),!1===n)return this.l(e,t,r);var i=n.s(this,e,t,r);return i&&Gt(this,0,e),i},n.l=function(e,t,n){n===void 0&&(n=!1);try{$e();var r=this.Ut(e);if(!r)return r;if(At(this)){var i=Mt(this,{object:this.v||this.h,name:e,type: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=Ut(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=Ut(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=Kt(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,Qt((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}w(t,e);var n=t.prototype;return n.concat=function(){this[F].st.reportObserved();var e=[...arguments];return Array.prototype.concat.apply(this.slice(),e.map((function(e){return zt(e)?e.slice():e})))},n[Symbol.iterator]=function(){var e=this,t=0;return tn({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])})),Jt(1e3);var z=on.toString,kr=n().Iterator?.prototype||{};[`Symbol`,`Map`,`Set`].forEach((function(e){n()[e]===void 0&&t(`MobX requires global '`+e+`' to be available or polyfilled`)})),typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__==`object`&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:at,extras:{getDebugName:Zt},$mobx:F}),e.$mobx=F,e.FlowCancellationError=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=Xt,e._getGlobalState=function(){return R},e._interceptReads=function(e,t,n){var r;return _r(e)||zt(e)||Fn(e)?r=Xt(e):Wt(e)&&(r=Xt(e,t)),r.dehancer=typeof t==`function`?t:n,function(){r.dehancer=void 0}},e._isComputingDerivation=function(){return 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(Wt(e))return e[F].l(n,r);t(39)},e.entries=function(e){return Wt(e)?St(e).map((function(t){return[t,e[t]]})):_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 Wt(e)?e[F].ct(n):_r(e)?e.get(n):zt(e)?e[n]:void t(11)},e.getAtom=Yt,e.getDebugName=Zt,e.getDependencyTree=function(e,t){return ht(Yt(e,t))},e.getObserverTree=function(e,t){return gt(Yt(e,t))},e.has=Ct,e.intercept=function(e,t,n){return a(n)?function(e,t,n){return Xt(e,t).St(n)}(e,t,n):function(e,t){return Xt(e).St(t)}(e,t)},e.isAction=ct,e.isBoxedObservable=Fn,e.isComputed=function(e){return yt(e)},e.isComputedProp=function(e,t){return yt(e,t)},e.isFlow=vt,e.isFlowCancellationError=function(e){return e instanceof tr},e.isObservable=xt,e.isObservableArray=zt,e.isObservableMap=_r,e.isObservableObject=Wt,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):(Qt((function(){var r=Ht(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 Qt((function(){var r=Ht(e,n)[F];t??=function(e){return g(e,mn)||u(e,mn,ee({},e[mn])),e[mn]}(e),fn(t).forEach((function(e){return r.o(e,t[e])}))})),e},e.observable=En,e.observe=function(e,t,n,r){return a(n)?function(e,t,n,r){return Xt(e,t)._t(n,r)}(e,t,n,r):function(e,t,n){return Xt(e)._t(t,n)}(e,t,n)},e.onBecomeObserved=dt,e.onBecomeUnobserved=ft,e.onReactionError=function(e){return 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=sn);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){Wt(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))Wt(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 Wt(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||{})}})),cE=pe((e=>{Object.defineProperty(e,`__esModule`,{value:!0});var t={0:`Invalid value for configuration 'enforceActions', expected 'never', 'always' or 'observed'`,1:function(e,t){return`Cannot apply '`+e+`' to '`+t.toString()+`': Field not found.`},5:`'keys()' can only be used on observable objects, arrays, sets and maps`,6:`'values()' can only be used on observable objects, arrays, sets and maps`,7:`'entries()' can only be used on observable objects, arrays and maps`,8:`'set()' can only be used on observable objects, arrays and maps`,9:`'remove()' can only be used on observable objects, arrays and maps`,10:`'has()' can only be used on observable objects, arrays and maps`,11:`'get()' can only be used on observable objects, arrays and maps`,12:`Invalid annotation`,13:`Dynamic observable objects cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)`,14:`Intercept handlers should return nothing or a change object`,15:`Observable arrays cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)`,16:`Modification exception: the internal structure of an observable array was changed.`,17:function(e,t){return`[mobx.array] Index out of bounds, `+e+` is larger than `+t},18:`mobx.map requires Map polyfill for the current browser. Check babel-polyfill or core-js/es6/map.js`,19:function(e){return`Cannot initialize from classes that inherit from Map: `+e.constructor.name},20:function(e){return`Cannot initialize map from `+e},21:function(e){return`Cannot convert to map from '`+e+`'`},22:`mobx.set requires Set polyfill for the current browser. Check babel-polyfill or core-js/es6/set.js`,23:`It is not possible to get index atoms from arrays`,24:function(e){return`Cannot obtain administration from `+e},25:function(e,t){return`the entry '`+e+`' does not exist in the observable map '`+t+`'`},26:`please specify a property`,27:function(e,t){return`no observable property '`+e.toString()+`' found on the observable object '`+t+`'`},28:function(e){return`Cannot obtain atom from `+e},29:`Expecting some object`,30:`invalid action stack. did you forget to finish an action?`,31:`missing option for computed: get`,32:function(e,t){return`Cycle detected in computation `+e+`: `+t},33:function(e){return`The setter of computed value '`+e+`' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?`},34:function(e){return`[ComputedValue '`+e+`'] It is not possible to assign a new value to a computed value.`},35:"There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`",36:`isolateGlobalState should be called before MobX is running any reactions`,37:function(e){return"[mobx] `observableArray."+e+"()` mutates the array in-place, which is not allowed inside a derivation. Use `array.slice()."+e+"()` instead"},38:`'ownKeys()' can only be used on observable objects`,39:`'defineProperty()' can only be used on observable objects`};function n(e){var n=[...arguments].slice(1),r=typeof e==`string`?e:t[e];throw typeof r==`function`&&(r=r.apply(null,n)),Error(`[MobX] `+r)}var r={};function i(){return typeof globalThis<`u`?globalThis:typeof window<`u`?window:typeof global<`u`?global:typeof self<`u`?self:r}var a=Object.assign,o=Object.getOwnPropertyDescriptor,s=Object.defineProperty,c=Object.prototype,l=[];Object.freeze(l);var u={};Object.freeze(u);var d=typeof Proxy<`u`,f=Object.toString();function p(){d||n("`Proxy` objects are not available in the current environment. Please configure MobX to enable a fallback implementation.`")}function m(e){I.verifyProxies&&n(`MobX is currently configured to be able to run in ES5 mode, but in ES5 MobX won't be able to `+e)}function h(){return++I.mobxGuid}function g(e){var t=!1;return function(){if(!t)return t=!0,e.apply(this,arguments)}}var _=function(){};function v(e){return typeof e==`function`}function y(e){switch(typeof e){case`string`:case`symbol`:case`number`:return!0}return!1}function b(e){return typeof e==`object`&&!!e}function x(e){if(!b(e))return!1;var t=Object.getPrototypeOf(e);if(t==null)return!0;var n=Object.hasOwnProperty.call(t,`constructor`)&&t.constructor;return typeof n==`function`&&n.toString()===f}function S(e){var t=e?.constructor;return t?t.name===`GeneratorFunction`||t.displayName===`GeneratorFunction`:!1}function C(e,t,n){s(e,t,{enumerable:!1,writable:!0,configurable:!0,value:n})}function ee(e,t,n){s(e,t,{enumerable:!1,writable:!1,configurable:!0,value:n})}function te(e,t){var n=`isMobX`+e;return t.prototype[n]=!0,function(e){return b(e)&&e[n]===!0}}function w(e){return e!=null&&Object.prototype.toString.call(e)===`[object Map]`}function ne(e){return Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(e)))===null}function re(e){return e!=null&&Object.prototype.toString.call(e)===`[object Set]`}var ie=Object.getOwnPropertySymbols!==void 0;function T(e){var t=Object.keys(e);if(!ie)return t;var n=Object.getOwnPropertySymbols(e);return n.length?[].concat(t,n.filter(function(t){return c.propertyIsEnumerable.call(e,t)})):t}var E=typeof Reflect<`u`&&Reflect.ownKeys?Reflect.ownKeys:ie?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames;function ae(e){return typeof e==`string`?e:typeof e==`symbol`?e.toString():new String(e).toString()}function oe(e){return e===null?null:typeof e==`object`?``+e:e}function se(e,t){return c.hasOwnProperty.call(e,t)}var ce=Object.getOwnPropertyDescriptors||function(e){var t={};return E(e).forEach(function(n){t[n]=o(e,n)}),t};function le(e,t){return!!(e&t)}function ue(e,t,n){return n?e|=t:e&=~t,e}function de(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function fe(e,t,n){if(ye())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var i=new(e.bind.apply(e,r));return n&&be(i,n.prototype),i}function pe(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,Se(r.key),r)}}function me(e,t,n){return t&&pe(e.prototype,t),n&&pe(e,n),Object.defineProperty(e,`prototype`,{writable:!1}),e}function he(e,t){var n=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=Ce(e))||t&&e&&typeof e.length==`number`){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw TypeError(`Invalid attempt to iterate non-iterable instance.
147
+ '`+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:D,s:ge,t:_e}}function D(e,t,n,r){var i;return r===e.h?this.s(e,t,n,!1)===null?0:2:(i=this.u)!=null&&i.bound&&(!g(e.h,t)||!vt(e.h[t]))&&this.s(e,t,n,!1)===null?0:vt(n.value)?1:(an(r,t,ve(e,0,0,n,!1,!1)),2)}function ge(e,t,n,r){var i=ve(e,0,0,n,this.u?.bound);return e.l(t,i,r)}function _e(e,t){var n,r=t.name,i=t.addInitializer;return vt(e)||(e=ir(e)),(n=this.u)!=null&&n.bound&&i((function(){var e=this[r].bind(this);e.isMobXFlow=!0,this[r]=e})),e}function ve(e,t,n,r,i,a){a===void 0&&(a=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=Ht(this)[F],i=ee({},n.u,{get:e,context:this});i.name||=`ObservableObject.`+r.toString(),t.j.set(r,new In(i))})),function(){return this[F].O(r)}}function Ce(e,t){return{i:e,u:t,o:we,s:Te,t:Ee}}function we(e,t,n){return this.s(e,t,n,!1)===null?0:1}function Te(e,t,n,r){return e.g(t,n.value,this.u?.enhancer??ce,r)}function Ee(e,t){function n(e,t){var n=Ht(e)[F],i=new Pn(t,r.u?.enhancer??ce,`ObservableObject.`+a.toString(),!1);n.j.set(a,i),o.add(e)}var r=this,i=t.kind,a=t.name,o=new WeakSet;if(i==`accessor`)return{get:function(){return o.has(this)||n(this,e.get.call(this)),this[F].O(a)},set:function(e){return o.has(this)||n(this,e),this[F].S(a,e)},init:function(e){return o.has(this)||n(this,e),e}}}function De(e){return{i:`true`,u:e,o:Oe,s:ke,t:Ae}}function Oe(e,t,n,r){var i,a,o;if(n.get)return kn.o(e,t,n,r);if(n.set){var s=ct(n.set)?n.set:Ne(t.toString(),n.set);return r===e.h?e.l(t,{configurable:!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=sn);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`?Yt(t,n):Yt(t),o=a(r)?r:n,s=e+`L`;return i[s]?i[s].add(o):i[s]=new Set([o]),function(){var e=i[s];e&&(e.delete(o),e.size===0&&delete i[s])}}function mt(e,t,n,r){var i=pn(t);return Qt((function(){var t=Ht(e,r)[F];fn(i).forEach((function(e){t.s(e,i[e],!n||!(e in n)||n[e])}))})),e}function ht(e){var t,n={name:e.tt};return e.D&&e.D.length>0&&(n.dependencies=(t=e.D,Array.from(new Set(t))).map(ht)),n}function gt(e){var t={name:e.tt};return function(e){return e.F&&e.F.size>0}(e)&&(t.observers=Array.from(function(e){return e.F}(e)).map(gt)),t}function _t(e){a(e.cancel)&&e.cancel()}function vt(e){return!0===e?.isMobXFlow}function yt(e,t){return t===void 0?Rn(e):!1===Wt(e)||!e[F].j.has(t)?!1:Rn(Yt(e,t))}function bt(e,t){return!!e&&(t===void 0?Wt(e)||!!e[F]||gn(e)||Kn(e)||Rn(e):!!Wt(e)&&e[F].j.has(t))}function xt(e){return bt(e)}function St(e){return Wt(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 Wt(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(Wt(e))return e[F].rt();t(38)}function Tt(e,t,n){return e.set(t,n),n}function Et(e,t){t===void 0&&(t=void 0),$e();try{return e.apply(t)}finally{et()}}function Dt(e,t,n){var r;if(typeof n.timeout==`number`){var i=Error(`WHEN_TIMEOUT`);r=setTimeout((function(){if(!o[F].isDisposed){if(o(),!n.onError)throw i;n.onError(i)}}),n.timeout)}n.name=`When`;var a=Ne(`When-effect`,t),o=lt((function(t){Le(!1,e)&&(t.dispose(),r&&clearTimeout(r),a())}),n);return o}function Ot(e,t){var n,r,i;if(t!=null&&(n=t.signal)!=null&&n.aborted)return Object.assign(Promise.reject(Error(`WHEN_ABORTED`)),{cancel:function(){return null}});var a=new Promise((function(n,a){var o,s=Dt(e,n,ee({},t,{onError:a}));r=function(){s(),a(Error(`WHEN_CANCELLED`))},i=function(){s(),a(Error(`WHEN_ABORTED`))},t==null||(o=t.signal)==null||o.addEventListener==null||o.addEventListener(`abort`,i)})).finally((function(){var e;return t==null||(e=t.signal)==null||e.removeEventListener==null?void 0:e.removeEventListener(`abort`,i)}));return a.cancel=r,a}function kt(e){return e[F]}function At(e){return e.et!==void 0&&e.et.length>0}function jt(e,t){var n=e.et||=[];return n.push(t),i((function(){var e=n.indexOf(t);e!==-1&&n.splice(e,1)}))}function Mt(e,n){var r=Ge();try{for(var i=[].concat(e.et||[]),a=0,o=i.length;a<o&&((n=i[a](n))&&!n.type&&t(14),n);a++);return n}finally{Ke(r)}}function Nt(e){return e.ut!==void 0&&e.ut.length>0}function Pt(e,t){var n=e.ut||=[];return n.push(t),i((function(){var e=n.indexOf(t);e!==-1&&n.splice(e,1)}))}function Ft(e,t){var n=Ge(),r=e.ut;if(r){for(var i=0,a=(r=r.slice()).length;i<a;i++)r[i](t);Ke(n)}}function It(e,t,n,i){return n===void 0&&(n=`ObservableArray`),i===void 0&&(i=!1),r(),Qt((function(){var r=new 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`,tn(e)}function Vt(e){return e[Symbol.toStringTag]=`SetIterator`,tn(e)}function Ht(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 Ut(e){return xr[e]||(xr[e]={get:function(){return this[F].O(e)},set:function(t){return this[F].S(e,t)}})}function Wt(e){return!!s(e)&&Cr(e[F])}function Gt(e,t,n){var r;(r=e.h[mn])==null||delete r[n]}function Kt(e){return{enumerable:!1,configurable:!0,get:function(){return this[F].ct(e)},set:function(t){this[F].ht(e,t)}}}function qt(e){an(Or.prototype,``+e,Kt(e))}function Jt(e){if(e>Er){for(var t=Er;t<e+100;t++)qt(t);Er=e}}function j(e,t,n){return new Or(e,t,n)}function Yt(e,n){if(typeof e==`object`&&e){if(zt(e))return n!==void 0&&t(23),e[F].st;if(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,Zt(e)),r}if(Wt(e)){if(!n)return t(26);var i=e[F].j.get(n);return i||t(27,n,Zt(e)),i}if(gn(e)||Rn(e)||Kn(e))return e}else if(a(e)&&Kn(e[F]))return e[F];t(28)}function Xt(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):Xt(Yt(e,n))}function Zt(e,t){var n;if(t!==void 0)n=Yt(e,t);else{if(ct(e))return e.name;n=Wt(e)||_r(e)||br(e)?Xt(e):Yt(e)}return n.tt}function Qt(e){var t=Ge(),n=Re(!0);$e();try{return e()}finally{et(),ze(n),Ke(t)}}function $t(e,t,n){return n===void 0&&(n=-1),function e(t,n,r,i,o){if(t===n)return t!==0||1/t==1/n;if(t==null||n==null)return!1;if(t!=t)return n!=n;var s=typeof t;if(s!==`function`&&s!==`object`&&typeof n!=`object`)return!1;var c=z.call(t);if(c!==z.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=en(t),n=en(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 en(e){return zt(e)?e.slice():p(e)||_r(e)||m(e)||br(e)?Array.from(e.entries()):e}function tn(e){return e[Symbol.iterator]=M,Object.assign(Object.create(kr),e)}function M(){return this}Object.defineProperty(e,`__esModule`,{value:!0});var nn={},N=Object.assign,rn=Object.getOwnPropertyDescriptor,an=Object.defineProperty,on=Object.prototype,P=[];Object.freeze(P);var sn={};Object.freeze(sn);var cn=typeof Proxy<`u`,ln=Object.toString(),un=function(){},dn=Object.getOwnPropertySymbols!==void 0,fn=typeof Reflect<`u`&&Reflect.ownKeys?Reflect.ownKeys:dn?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames,pn=Object.getOwnPropertyDescriptors||function(e){var t={};return fn(e).forEach((function(n){t[n]=rn(e,n)})),t},mn=Symbol(`mobx-stored-annotations`),F=Symbol(`mobx administration`),hn=function(){function e(e){e===void 0&&(e=`Atom`),this.tt=void 0,this.bt=0,this.F=new Set,this.$=0,this.U=L.P,this.onBOL=void 0,this.onBUOL=void 0,this.tt=e}var t=e.prototype;return t.onBO=function(){this.onBOL&&this.onBOL.forEach((function(e){return e()}))},t.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(e){return e()}))},t.reportObserved=function(){return tt(this)},t.reportChanged=function(){$e(),nt(this),et()},t.toString=function(){return this.tt},S(e,[{key:`isBeingObserved`,get:function(){return _(this.bt,e.pt)},set:function(t){this.bt=v(this.bt,e.pt,t)}},{key:`isPendingUnobservation`,get:function(){return _(this.bt,e.yt)},set:function(t){this.bt=v(this.bt,e.yt,t)}},{key:`diffValue`,get:function(){return+!!_(this.bt,e.wt)},set:function(t){this.bt=v(this.bt,e.wt,t===1)}}])}();hn.pt=1,hn.yt=2,hn.wt=4;var gn=f(`Atom`,hn),_n={identity:function(e,t){return e===t},structural:function(e,t){return $t(e,t)},default:function(e,t){return Object.is?Object.is(e,t):e===t?e!==0||1/e==1/t:e!=e&&t!=t},shallow:function(e,t){return $t(e,t,1)}},vn=E({i:`override`,o:function(){return 0},s:function(){t(`'`+this.i+`' can only be used with 'makeObservable'`)},t:function(){console.warn(`'`+this.i+`' cannot be used with decorators - this is a no-op`)}}),yn=De(),bn={deep:!0,name:void 0,defaultDecorator:void 0,proxy:!0};Object.freeze(bn);var xn=Ce(`observable`),Sn=Ce(`observable.ref`,{enhancer:le}),I=Ce(`observable.shallow`,{enhancer:function(e,t,n){return e==null||Wt(e)||zt(e)||_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 $t(e,t)?t:e}}),wn=E(xn);N(Me,wn);var Tn,En=N(Me,{box:function(e,t){var n=je(t);return new Pn(e,O(n),n.name,!0,n.equals)},array:function(e,t){var n=je(t);return(!1===R.useProxies||!1===n.proxy?j: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 Qt((function(){return mt(!1===R.useProxies||!1===n?.proxy?Ht({},n):function(e,t){var n;return r(),(n=(e=Ht(e,t))[F]).v??(n.v=new Proxy(e,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}w(t,e);var n=t.prototype;return n.dehanceValue=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.set=function(e){(e=this.xt(e))!==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 w(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(un,un),_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&&Jt(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=P),At(this)){var a=Mt(this,{object:this.v,type:`splice`,index:e,removedCount:t,added:n});if(!a)return P;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),Qt((function(){i.lt=se(`ObservableMap.keys()`),i.vt=new Map,i.dt=new Map,e&&i.merge(e)}))}var n=e.prototype;return n.it=function(e){return this.vt.has(e)},n.has=function(e){var t=this;if(!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)},Qt((function(){i.st=se(i.tt),e&&i.replace(e)}))}var n=e.prototype;return n.Qt=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.clear=function(){var e=this;Et((function(){We((function(){for(var t,n=C(e.vt.values());!(t=n()).done;)e.delete(t.value)}))}))},n.forEach=function(e,t){for(var n,r=C(this);!(n=r()).done;){var i=n.value;e.call(t,i,i,this)}},n.add=function(e){var t=this;if(At(this)){var n=Mt(this,{type: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 Vt({next:function(){var t=e.next(),n=t.value,r=t.done;return r?{value:void 0,done:r}:{value:[n,n],done:r}}})},n.keys=function(){return this.values()},n.values=function(){this.st.reportObserved();var e=this,t=this.vt.values();return Vt({next:function(){var n=t.next(),r=n.done;return r?{value:void 0,done:r}:{value:e.Qt(n.value),done:r}}})},n.intersection=function(e){return m(e)&&!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)}Gt(this,0,e)}},n.s=function(e,t,n,r){if(r===void 0&&(r=!1),!0===n&&(n=this.un),!1===n)return this.l(e,t,r);var i=n.s(this,e,t,r);return i&&Gt(this,0,e),i},n.l=function(e,t,n){n===void 0&&(n=!1);try{$e();var r=this.Ut(e);if(!r)return r;if(At(this)){var i=Mt(this,{object:this.v||this.h,name:e,type: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=Ut(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=Ut(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=Kt(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,Qt((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}w(t,e);var n=t.prototype;return n.concat=function(){this[F].st.reportObserved();var e=[...arguments];return Array.prototype.concat.apply(this.slice(),e.map((function(e){return zt(e)?e.slice():e})))},n[Symbol.iterator]=function(){var e=this,t=0;return tn({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])})),Jt(1e3);var z=on.toString,kr=n().Iterator?.prototype||{};[`Symbol`,`Map`,`Set`].forEach((function(e){n()[e]===void 0&&t(`MobX requires global '`+e+`' to be available or polyfilled`)})),typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__==`object`&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:at,extras:{getDebugName:Zt},$mobx:F}),e.$mobx=F,e.FlowCancellationError=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=Xt,e._getGlobalState=function(){return R},e._interceptReads=function(e,t,n){var r;return _r(e)||zt(e)||Fn(e)?r=Xt(e):Wt(e)&&(r=Xt(e,t)),r.dehancer=typeof t==`function`?t:n,function(){r.dehancer=void 0}},e._isComputingDerivation=function(){return 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(Wt(e))return e[F].l(n,r);t(39)},e.entries=function(e){return Wt(e)?St(e).map((function(t){return[t,e[t]]})):_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 Wt(e)?e[F].ct(n):_r(e)?e.get(n):zt(e)?e[n]:void t(11)},e.getAtom=Yt,e.getDebugName=Zt,e.getDependencyTree=function(e,t){return ht(Yt(e,t))},e.getObserverTree=function(e,t){return gt(Yt(e,t))},e.has=Ct,e.intercept=function(e,t,n){return a(n)?function(e,t,n){return Xt(e,t).St(n)}(e,t,n):function(e,t){return Xt(e).St(t)}(e,t)},e.isAction=ct,e.isBoxedObservable=Fn,e.isComputed=function(e){return yt(e)},e.isComputedProp=function(e,t){return yt(e,t)},e.isFlow=vt,e.isFlowCancellationError=function(e){return e instanceof tr},e.isObservable=xt,e.isObservableArray=zt,e.isObservableMap=_r,e.isObservableObject=Wt,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):(Qt((function(){var r=Ht(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 Qt((function(){var r=Ht(e,n)[F];t??=function(e){return g(e,mn)||u(e,mn,ee({},e[mn])),e[mn]}(e),fn(t).forEach((function(e){return r.o(e,t[e])}))})),e},e.observable=En,e.observe=function(e,t,n,r){return a(n)?function(e,t,n,r){return Xt(e,t)._t(n,r)}(e,t,n,r):function(e,t,n){return Xt(e)._t(t,n)}(e,t,n)},e.onBecomeObserved=dt,e.onBecomeUnobserved=ft,e.onReactionError=function(e){return 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=sn);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){Wt(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))Wt(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 Wt(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||{})}})),gE=pe((e=>{Object.defineProperty(e,`__esModule`,{value:!0});var t={0:`Invalid value for configuration 'enforceActions', expected 'never', 'always' or 'observed'`,1:function(e,t){return`Cannot apply '`+e+`' to '`+t.toString()+`': Field not found.`},5:`'keys()' can only be used on observable objects, arrays, sets and maps`,6:`'values()' can only be used on observable objects, arrays, sets and maps`,7:`'entries()' can only be used on observable objects, arrays and maps`,8:`'set()' can only be used on observable objects, arrays and maps`,9:`'remove()' can only be used on observable objects, arrays and maps`,10:`'has()' can only be used on observable objects, arrays and maps`,11:`'get()' can only be used on observable objects, arrays and maps`,12:`Invalid annotation`,13:`Dynamic observable objects cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)`,14:`Intercept handlers should return nothing or a change object`,15:`Observable arrays cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)`,16:`Modification exception: the internal structure of an observable array was changed.`,17:function(e,t){return`[mobx.array] Index out of bounds, `+e+` is larger than `+t},18:`mobx.map requires Map polyfill for the current browser. Check babel-polyfill or core-js/es6/map.js`,19:function(e){return`Cannot initialize from classes that inherit from Map: `+e.constructor.name},20:function(e){return`Cannot initialize map from `+e},21:function(e){return`Cannot convert to map from '`+e+`'`},22:`mobx.set requires Set polyfill for the current browser. Check babel-polyfill or core-js/es6/set.js`,23:`It is not possible to get index atoms from arrays`,24:function(e){return`Cannot obtain administration from `+e},25:function(e,t){return`the entry '`+e+`' does not exist in the observable map '`+t+`'`},26:`please specify a property`,27:function(e,t){return`no observable property '`+e.toString()+`' found on the observable object '`+t+`'`},28:function(e){return`Cannot obtain atom from `+e},29:`Expecting some object`,30:`invalid action stack. did you forget to finish an action?`,31:`missing option for computed: get`,32:function(e,t){return`Cycle detected in computation `+e+`: `+t},33:function(e){return`The setter of computed value '`+e+`' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?`},34:function(e){return`[ComputedValue '`+e+`'] It is not possible to assign a new value to a computed value.`},35:"There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`",36:`isolateGlobalState should be called before MobX is running any reactions`,37:function(e){return"[mobx] `observableArray."+e+"()` mutates the array in-place, which is not allowed inside a derivation. Use `array.slice()."+e+"()` instead"},38:`'ownKeys()' can only be used on observable objects`,39:`'defineProperty()' can only be used on observable objects`};function n(e){var n=[...arguments].slice(1),r=typeof e==`string`?e:t[e];throw typeof r==`function`&&(r=r.apply(null,n)),Error(`[MobX] `+r)}var r={};function i(){return typeof globalThis<`u`?globalThis:typeof window<`u`?window:typeof global<`u`?global:typeof self<`u`?self:r}var a=Object.assign,o=Object.getOwnPropertyDescriptor,s=Object.defineProperty,c=Object.prototype,l=[];Object.freeze(l);var u={};Object.freeze(u);var d=typeof Proxy<`u`,f=Object.toString();function p(){d||n("`Proxy` objects are not available in the current environment. Please configure MobX to enable a fallback implementation.`")}function m(e){I.verifyProxies&&n(`MobX is currently configured to be able to run in ES5 mode, but in ES5 MobX won't be able to `+e)}function h(){return++I.mobxGuid}function g(e){var t=!1;return function(){if(!t)return t=!0,e.apply(this,arguments)}}var _=function(){};function v(e){return typeof e==`function`}function y(e){switch(typeof e){case`string`:case`symbol`:case`number`:return!0}return!1}function b(e){return typeof e==`object`&&!!e}function x(e){if(!b(e))return!1;var t=Object.getPrototypeOf(e);if(t==null)return!0;var n=Object.hasOwnProperty.call(t,`constructor`)&&t.constructor;return typeof n==`function`&&n.toString()===f}function S(e){var t=e?.constructor;return t?t.name===`GeneratorFunction`||t.displayName===`GeneratorFunction`:!1}function C(e,t,n){s(e,t,{enumerable:!1,writable:!0,configurable:!0,value:n})}function ee(e,t,n){s(e,t,{enumerable:!1,writable:!1,configurable:!0,value:n})}function te(e,t){var n=`isMobX`+e;return t.prototype[n]=!0,function(e){return b(e)&&e[n]===!0}}function w(e){return e!=null&&Object.prototype.toString.call(e)===`[object Map]`}function ne(e){return Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(e)))===null}function re(e){return e!=null&&Object.prototype.toString.call(e)===`[object Set]`}var ie=Object.getOwnPropertySymbols!==void 0;function T(e){var t=Object.keys(e);if(!ie)return t;var n=Object.getOwnPropertySymbols(e);return n.length?[].concat(t,n.filter(function(t){return c.propertyIsEnumerable.call(e,t)})):t}var E=typeof Reflect<`u`&&Reflect.ownKeys?Reflect.ownKeys:ie?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames;function ae(e){return typeof e==`string`?e:typeof e==`symbol`?e.toString():new String(e).toString()}function oe(e){return e===null?null:typeof e==`object`?``+e:e}function se(e,t){return c.hasOwnProperty.call(e,t)}var ce=Object.getOwnPropertyDescriptors||function(e){var t={};return E(e).forEach(function(n){t[n]=o(e,n)}),t};function le(e,t){return!!(e&t)}function ue(e,t,n){return n?e|=t:e&=~t,e}function de(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function fe(e,t,n){if(ye())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var i=new(e.bind.apply(e,r));return n&&be(i,n.prototype),i}function pe(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,Se(r.key),r)}}function me(e,t,n){return t&&pe(e.prototype,t),n&&pe(e,n),Object.defineProperty(e,`prototype`,{writable:!1}),e}function he(e,t){var n=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=Ce(e))||t&&e&&typeof e.length==`number`){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw TypeError(`Invalid attempt to iterate non-iterable instance.
147
148
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function D(){return D=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},D.apply(null,arguments)}function ge(e){return ge=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},ge(e)}function _e(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,be(e,t)}function ve(e){try{return Function.toString.call(e).indexOf(`[native code]`)!==-1}catch{return typeof e==`function`}}function ye(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(ye=function(){return!!e})()}function be(e,t){return be=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},be(e,t)}function xe(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function Se(e){var t=xe(e,`string`);return typeof t==`symbol`?t:t+``}function Ce(e,t){if(e){if(typeof e==`string`)return de(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?de(e,t):void 0}}function we(e){var t=typeof Map==`function`?new Map:void 0;return we=function(e){if(e===null||!ve(e))return e;if(typeof e!=`function`)throw TypeError(`Super expression must either be null or a function`);if(t!==void 0){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return fe(e,arguments,ge(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),be(n,e)},we(e)}var Te=Symbol(`mobx-stored-annotations`);function Ee(e){function t(t,n){if(Ae(n))return e.decorate_20223_(t,n);De(t,n,e)}return Object.assign(t,e)}function De(e,t,r){se(e,Te)||C(e,Te,D({},e[Te])),Ke(r)&&!se(e[Te],t)&&n(`'`+(e.constructor.name+`.prototype.`+t.toString())+`' is decorated with 'override', but no such decorated member was found on prototype.`),Oe(e,r,t),Ke(r)||(e[Te][t]=r)}function Oe(e,t,r){if(!Ke(t)&&se(e[Te],r)){var i=e.constructor.name+`.prototype.`+r.toString(),a=e[Te][r].annotationType_,o=t.annotationType_;n(`Cannot apply '@`+o+`' to '`+i+`':`+(`
148
149
  The field is already decorated with '@`+a+`'.`)+`
149
150
  Re-decorating fields is not allowed.
@@ -173,33 +174,33 @@ The target is already observable of different type.
173
174
  Extending builtins is not supported.`),e;Object.isExtensible(e)||n(`Cannot make the designated object observable; it is not extensible`);var r=t?.name??(x(e)?`ObservableObject`:e.constructor.name)+`@`+h();return C(e,O,new Xi(e,new Map,String(r),It(t))),e}var Qi=te(`ObservableObjectAdministration`,Xi);function $i(e){return Ji[e]||(Ji[e]={get:function(){return this[O].getObservablePropValue_(e)},set:function(t){return this[O].setObservablePropValue_(e,t)}})}function ea(e){return b(e)?Qi(e[O]):!1}function ta(e,t,n){var r;e.appliedAnnotations_[n]=t,(r=e.target_[Te])==null||delete r[n]}function na(e,t,r){if(wa(t)||n(`Cannot annotate '`+e.name_+`.`+r.toString()+`': Invalid annotation.`),!Ke(t)&&se(e.appliedAnnotations_,r)){var i=e.name_+`.`+r.toString(),a=e.appliedAnnotations_[r].annotationType_,o=t.annotationType_;n(`Cannot apply '`+o+`' to '`+i+`':`+(`
174
175
  The field is already annotated with '`+a+`'.`)+`
175
176
  Re-annotating fields is not allowed.
176
- Use 'override' annotation for methods overridden by subclass.`)}}var ra=la(0),ia=function(){var e=!1,t={};return Object.defineProperty(t,`0`,{set:function(){e=!0}}),Object.create(t)[0]=1,e===!1}(),aa=0,oa=function(){};function sa(e,t){Object.setPrototypeOf?Object.setPrototypeOf(e.prototype,t):e.prototype.__proto__===void 0?e.prototype=t:e.prototype.__proto__=t}sa(oa,Array.prototype);var ca=function(e){function t(t,n,r,i){var a;return r===void 0&&(r=`ObservableArray@`+h()),i===void 0&&(i=!1),a=e.call(this)||this,ga(function(){var e=new Ai(r,n,i,!0);e.proxy_=a,ee(a,O,e),t&&t.length&&a.spliceWithArray(0,0,t),ia&&Object.defineProperty(a,`0`,ra)}),a}_e(t,e);var n=t.prototype;return n.concat=function(){this[O].atom_.reportObserved();var e=[...arguments];return Array.prototype.concat.apply(this.slice(),e.map(function(e){return Li(e)?e.slice():e}))},n[Symbol.iterator]=function(){var e=this,t=0;return Sa({next:function(){return t<e.length?{value:e[t++],done:!1}:{done:!0,value:void 0}}})},me(t,[{key:`length`,get:function(){return this[O].getArrayLength_()},set:function(e){this[O].setArrayLength_(e)}},{key:Symbol.toStringTag,get:function(){return`Array`}}])}(oa);Object.entries(Mi).forEach(function(e){var t=e[0],n=e[1];t!==`concat`&&C(ca.prototype,t,n)});function la(e){return{enumerable:!1,configurable:!0,get:function(){return this[O].get_(e)},set:function(t){this[O].set_(e,t)}}}function ua(e){s(ca.prototype,``+e,la(e))}function da(e){if(e>aa){for(var t=aa;t<e+100;t++)ua(t);aa=e}}da(1e3);function fa(e,t,n){return new ca(e,t,n)}function pa(e,t){if(typeof e==`object`&&e){if(Li(e))return t!==void 0&&n(23),e[O].atom_;if(U(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,ha(e)),r}if(ea(e)){if(!t)return n(26);var i=e[O].values_.get(t);return i||n(27,t,ha(e)),i}if(Ne(e)||nn(e)||R(e))return e}else if(v(e)&&R(e[O]))return e[O];n(28)}function ma(e,t){if(e||n(29),t!==void 0)return ma(pa(e,t));if(Ne(e)||nn(e)||R(e)||Hi(e)||U(e))return e;if(e[O])return e[O];n(24,e)}function ha(e,t){var n;if(t!==void 0)n=pa(e,t);else if(ur(e))return e.name;else n=ea(e)||Hi(e)||U(e)?ma(e):pa(e);return n.name_}function ga(e){var t=F(),n=Zt(!0);jn();try{return e()}finally{Mn(),Qt(n),hn(t)}}var _a=c.toString;function va(e,t,n){return n===void 0&&(n=-1),ya(e,t,n)}function ya(e,t,n,r,i){if(e===t)return e!==0||1/e==1/t;if(e==null||t==null)return!1;if(e!==e)return t!==t;var a=typeof e;if(a!==`function`&&a!==`object`&&typeof t!=`object`)return!1;var o=_a.call(e);if(o!==_a.call(t))return!1;switch(o){case`[object RegExp]`:case`[object String]`:return``+e==``+t;case`[object Number]`:return+e==+e?+e==0?1/e==1/t:+e==+t:+t!=+t;case`[object Date]`:case`[object Boolean]`:return+e==+t;case`[object Symbol]`:return typeof Symbol<`u`&&Symbol.valueOf.call(e)===Symbol.valueOf.call(t);case`[object Map]`:case`[object Set]`:n>=0&&n++;break}e=ba(e),t=ba(t);var s=o===`[object Array]`;if(!s){if(typeof e!=`object`||typeof t!=`object`)return!1;var c=e.constructor,l=t.constructor;if(c!==l&&!(v(c)&&c instanceof c&&v(l)&&l instanceof l)&&`constructor`in e&&`constructor`in t)return!1}if(n===0)return!1;n<0&&(n=-1),r||=[],i||=[];for(var u=r.length;u--;)if(r[u]===e)return i[u]===t;if(r.push(e),i.push(t),s){if(u=e.length,u!==t.length)return!1;for(;u--;)if(!ya(e[u],t[u],n-1,r,i))return!1}else{var d=Object.keys(e),f=d.length;if(Object.keys(t).length!==f)return!1;for(var p=0;p<f;p++){var m=d[p];if(!(se(t,m)&&ya(e[m],t[m],n-1,r,i)))return!1}}return r.pop(),i.pop(),!0}function ba(e){return Li(e)?e.slice():w(e)||Hi(e)||re(e)||U(e)?Array.from(e.entries()):e}var xa=i().Iterator?.prototype||{};function Sa(e){return e[Symbol.iterator]=Ca,Object.assign(Object.create(xa),e)}function Ca(){return this}function wa(e){return e instanceof Object&&typeof e.annotationType_==`string`&&v(e.make_)&&v(e.extend_)}[`Symbol`,`Map`,`Set`].forEach(function(e){i()[e]===void 0&&n(`MobX requires global '`+e+`' to be available or polyfilled`)}),typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__==`object`&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:Xn,extras:{getDebugName:ha},$mobx:O}),e.$mobx=O,e.FlowCancellationError=jr,e.ObservableMap=Vi,e.ObservableSet=Ki,e.Reaction=Rn,e._allowStateChanges=Xt,e._allowStateChangesInsideComputed=lr,e._allowStateReadsEnd=_n,e._allowStateReadsStart=gn,e._autoAction=cr,e._endAction=Yt,e._getAdministration=ma,e._getGlobalState=wn,e._interceptReads=zr,e._isComputingDerivation=sn,e._resetGlobalState=Tn,e._startAction=j,e.action=sr,e.autorun=dr,e.comparer=ze,e.computed=Ht,e.configure=wr,e.createAtom=Pe,e.defineProperty=ti,e.entries=Xr,e.extendObservable=Tr,e.flow=Fr,e.flowResult=Lr,e.get=ei,e.getAtom=pa,e.getDebugName=ha,e.getDependencyTree=Er,e.getObserverTree=Or,e.has=$r,e.intercept=Br,e.isAction=ur,e.isBoxedObservable=tn,e.isComputed=Ur,e.isComputedProp=Wr,e.isFlow=Rr,e.isFlowCancellationError=Mr,e.isObservable=Kr,e.isObservableArray=Li,e.isObservableMap=Hi,e.isObservableObject=ea,e.isObservableProp=qr,e.isObservableSet=U,e.keys=Jr,e.makeAutoObservable=Ti,e.makeObservable=Ci,e.observable=A,e.observe=ri,e.onBecomeObserved=vr,e.onBecomeUnobserved=yr,e.onReactionError=zn,e.override=Ge,e.ownKeys=ni,e.reaction=mr,e.remove=Qr,e.runInAction=lr,e.set=Zr,e.spy=Xn,e.toJS=si,e.trace=ci,e.transaction=ui,e.untracked=mn,e.values=Yr,e.when=di})),lE=pe(((e,t)=>{process.env.NODE_ENV===`production`?t.exports=sE():t.exports=cE()}))();function uE(e){if(Array.isArray(e))return Object.freeze(e.map(uE));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]=uE(r);return Object.freeze(t)}return e}function dE(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 fE(e){return typeof e==`string`?e:String(e)}function pE(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 mE(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 hE(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=gE(e.style).add(t),n}function gE(e){if(e instanceof z)return e;try{return z.parse(e)}catch(t){throw t instanceof Dr?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 _E(e){return{fn:(t=>hE(t,e)),argTypes:[`liftable`],returnType:`T`}}function vE(e){return{fn:((t,n)=>hE(n,new z({[e]:P.parse(t)}))),argTypes:[`string`,`liftable`],returnType:`T`}}function yE(e,t){return new z({[e]:t})}function bE(){let e={};for(let t of wr)e[t]=_E(yE(t,!0)),e[`not_${t}`]=_E(yE(t,!1));for(let[t,n]of Object.entries(Er))e[t]=_E(yE(n,!0));return e}const xE={fn:((e,t)=>hE(t,z.parse(e))),argTypes:[`string`,`liftable`],returnType:`T`},SE={fn:((e,t)=>hE(t,new z({link:e}))),argTypes:[`string`,`liftable`],returnType:`T`};function CE(){return{fg:vE(`color`),bg:vE(`bgcolor`),...bE(),link:SE,style:xE}}function wE(e,t){if(!Rn.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 zn(e)}function TE(e,t){return{fn:t,argTypes:e,returnType:`string`}}function EE(e,t,n,r){let i=r===void 0||e>=r.min&&e<=r.max;if(!Number.isFinite(e)||!i){let i=r===void 0?`a finite number`:`within ${r.min}..${r.max} (${r.note})`;throw RangeError(`${t}'s ${n} must be ${i}, got ${e}`+(e===void 0?` — ${t} takes it as its last argument`:``))}return e}const DE=TE([`string`,`int`],((e,t)=>Gn(wE(e,`darken`),EE(t,`darken`,`levels`)).hex)),OE=TE([`string`,`int`],((e,t)=>Gn(wE(e,`lighten`),-EE(t,`lighten`,`levels`)).hex)),kE={min:0,max:100,note:`0 = from, 100 = toward`},AE=TE([`string`,`string`,`float`],((e,t,n)=>mn(wE(e,`mix`),wE(t,`mix`),EE(n,`mix`,`percentage`,kE)/100).hex)),jE={min:1,max:21,note:`4.5 = AA body text, 3 = AA large text`},ME=TE([`string`],(e=>Kn(wE(e,`contrastOn`)).hex)),NE=e=>TE([`string`,`string`,`float`],((t,n,r)=>qn(wE(t,`readableOn`),wE(n,`readableOn`),EE(r,`readableOn`,`ratio`,jE),e()).hex)),PE={hueShift:`shiftHue`,chromaScale:`scaleChroma`,lightnessScale:`scaleLightness`,lightnessShift:`shiftLightness`};function FE(){let e={};for(let[t,n]of Object.entries(PE)){let r=t;e[n]=TE([`string`,`float`],((e,t)=>{let i={...En,[r]:EE(t,n,`amount`)};return L.fromRgba(wE(e,n)).applyKey(i).toRgba().hex}))}return e}function IE(e=()=>M.TRUECOLOR){return{darken:DE,lighten:OE,mix:AE,contrastOn:ME,readableOn:NE(e),...FE()}}function LE(e,t){if(e.length===0)throw RangeError(`ramp needs at least one stop after the easing: ramp <value> <easing> <position> <color> …`);if(e.length%2!=0)throw RangeError(`ramp's last stop (position ${String(e[e.length-1])}) has no color — stops are <position> <color> pairs`);let n=[];for(let r=0;r<e.length;r+=2)n.push({at:e[r],color:Bn(t,e[r+1])});return n}function RE(e){return{color:{fn:(t=>Bn(e(),t).hex),argTypes:[`string`],returnType:`string`},ramp:{fn:((...t)=>{if(t.length<2)throw RangeError(`ramp needs a value and an easing before its stops (got ${t.length}): ramp <value> "linear"|"step" <position> <color> …`);let[n,r,...i]=t;return new hr(mr(r),LE(i,e())).at(n).hex}),argTypes:[`float`,`string`],argTypePattern:`alternating`,returnType:`string`}}}function zE(e){return{...CE(),...IE(e)}}new z({color:`red`,dim:!0});const BE=/^(?:(?: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,VE=/^(?<family>opus|sonnet|haiku)\s+(?<major>\d+)(?:\.(?<minor>\d))?$/i;function HE(e){if(!e)return`Claude`;let t=e.trim().replace(/\s*\([^)]*\)\s*$/,``).replace(/\s*\[[^\]]*\]\s*$/,``).trim(),n=t.match(BE);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(VE);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 UE(e){let t=e.match(VE);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 WE(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 GE(e){return e.toLocaleString()}function KE(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 qE(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 JE=[`▁`,`▂`,`▃`,`▄`,`▅`,`▆`,`▇`,`█`],YE=JE.length;function XE(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*(YE-1));o+=JE[t]}return o}function ZE(e){let t=[];for(let n of e.split(`,`)){let e=n.trim();if(e===``)continue;let r=Number(e);if(!Number.isFinite(r))throw TypeError(`sparkline: non-numeric series element ${JSON.stringify(n)}`);t.push(r)}return t}const QE=ji(),$E=[...Bi];function eD(){return{basename:{fn:e=>l(e),argTypes:[`string`]},dirname:{fn:e=>u(e),argTypes:[`string`]},abbreviatePath:{fn:e=>WE(e),argTypes:[`string`]},int:{fn:e=>pE(e),argTypes:[`value`]},string:{fn:e=>fE(e),argTypes:[`value`]},bool:{fn:e=>mE(e),argTypes:[`value`]},urlEncode:{fn:e=>encodeURIComponent(e),argTypes:[`string`]},themes:{fn:()=>QE,argTypes:[]},styles:{fn:()=>$E,argTypes:[]},sparkline:{fn:(e,t)=>XE(ZE(e),t),argTypes:[`string`,`int`]},cascade:{fn:(e,...t)=>qE(e,KE(t)),argTypes:[`float`,`string`]}}}function tD(e=()=>new Date){return{minutesUntilReset:{fn:t=>Math.round(Math.max(0,t*1e3-e().getTime())/6e4),argTypes:[`int`]},formatInteger:{fn:e=>GE(e),argTypes:[`int`]},round:{fn:e=>Math.round(e),argTypes:[`float`]},formatModelName:{fn:e=>HE(e),argTypes:[`string`]},shortenModelName:{fn:e=>UE(e),argTypes:[`string`]}}}function nD(e,t=()=>new Date,n){return yd({fromString:e=>new V(e),toString:e=>e.plain,isT:e=>e instanceof V,clock:t,missingKey:`error`,funcs:{...sp(),..._h(),...qp(),...hm(),...$f(t),...Hd(),...xp(),...zE(n),...eD(),...tD(t),...e??{}}})}function rD(e){return iD(e,new Set(e.names()),``)}function iD(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`?aD(a,e.readDocument(a)):e.read(a);let o=`${a}.`;for(let n of t)if(n.startsWith(o))return iD(e,t,a)}})}function aD(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}`)}}const oD=/\r\n|\r|\n/g,sD=e=>X(e.replace(oD,` `).trim());function cD(e){return t=>{let n=e.exec(t)?.[1];return n===void 0?Q(`regex no-match`):X(n.replace(oD,` `))}}const lD=e=>{try{return X(JSON.parse(e))}catch(e){return Q(`JSON parse failed: ${e.message}`)}};function uD(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 dD(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]}"`)}}function fD(e,t){return{where:`output of "${e}"`,read:async()=>{let n=await Te({bin:`/bin/sh`,args:[`-c`,e],category:`user-shell`,signal:t});if(!n.ok&&n.reason===`aborted`)throw t.reason;return n.ok?X(n.stdout):Q(`shell "${e}" ${n.exitCode===null?[n.reason,n.error].filter(e=>e!==void 0).join(`: `):`exited with code ${n.exitCode}`}`)}}}function pD(e,t,n){return{where:`"${e}"`,read:async()=>{try{let r=await re(e,{encoding:`utf8`,signal:n});return X(t===`first-line`?r.split(/\r?\n/)[0]??``:r)}catch{if(n.aborted)throw n.reason;return Q(`file unreadable: ${e}`)}}}}function mD(e,t,n){if(e.kind!==`ok`)return e;let r=t(e.value);return r.kind===`failed`?Q(`${r.reason} in ${n}`):r}const hD=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],gD=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],_D=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],vD=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`];function yD(e,t){let n=[[`2006`,e=>String(e.getFullYear())],[`January`,e=>hD[e.getMonth()]],[`Monday`,e=>_D[e.getDay()]],[`Jan`,e=>gD[e.getMonth()]],[`Mon`,e=>vD[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 bD={branch:`string`,sha:`string`,dirty:`boolean`,ahead:`number`,behind:`number`,stash:`number`};function xD(e,t,n,r){if(e===null){if(n!==void 0)return n;let e=bD[t];try{return TD(r,e)}catch{return ED(e)}}switch(t){case`branch`:return e.branch===`detached`?``:e.branch;case`sha`:return Sx(e.sha,``);case`dirty`:return e.status!==`clean`;case`ahead`:return Sx(e.aheadBehind,{ahead:0,behind:0}).ahead;case`behind`:return Sx(e.aheadBehind,{ahead:0,behind:0}).behind;case`stash`:return Sx(e.stashCount,0)}}var SD=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}},CD=class{buckets=new Map;subscribe(e,t){let n=this.buckets.get(e);if(!n){let t=new Set;n={timer:oe(()=>{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&&(ae(n.timer),this.buckets.delete(e)))}dispose(){for(let{timer:e}of this.buckets.values())ae(e);this.buckets.clear()}bucketCount(){return this.buckets.size}};function wD(e,t){let n=e;for(let e of t.split(`.`)){if(typeof n!=`object`||!n)return;n=n[e]}return n}function TD(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`?fE(e):t===`number`?pE(e):mE(e)}function ED(e){return e===`number`?0:e===`boolean`?!1:``}var DD=class{inputMetas=new Map;lastErrors=new Map;watchMgr=new SD;ttlMgr=new CD;gitSubscriptions=new Map;cleanups=[];inFlight=new Map;reads=new Nw;abort=new AbortController;drawn=lE.observable.box(M.TRUECOLOR);drawnAt=()=>this.drawn.get();engine=nD(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 Bw({sanityIntervalMs:0}),this.ownsGitProvider=!0),this.sessionState=r}get variableStore(){return this.store}declareLiteral(e,t){this.store.defineBox(e,dE(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,fD(t,this.abort.signal),uD(e,n.cache),n.parse)}declareFile(e,t,n){this.declareSource(e,pD(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,sD,t.default,n);case`regex`:return this.scalarPublisher(e,cD(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=mD(n,t,r);this.noteOutcome(e,a),this.store.setBox(e,Sx(a,i))}}documentPublisher(e,t,n){let r=t===void 0?Z:X(t);return this.store.defineDocument(e,r),i=>{let a=mD(i,lD,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=rD(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 yD(t.format,e)}catch{return this.stringInitial(t.varDefault)}})(new Date));let r=this.ttlMgr.subscribe(n,()=>{try{this.store.setBox(e,yD(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=bD[t.field],r=t.varDefault===void 0?ED(n):TD(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,xD(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(`session.id`);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=wD(e,n.path),i=this.store.getType(t);if(r!==void 0)try{this.store.setBox(t,TD(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,lE.reaction)(()=>{let t=rD(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,lE.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,TD(this.defaultEmptyValue,t))}catch{this.store.setBox(e,ED(t))}}defaultFor(e){try{return TD(this.defaultEmptyValue,e)}catch{return ED(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`)}};function OD(e,t){return e===void 0?!0:e.evaluate(t).map(e=>e.plain).join(``)!==`false`}function kD(e,t){let n=V.fromFragments(e);return n.end=``,n.noWrap=!0,t!==void 0&&!t.isNull&&(n.style=t),n}function AD(e,t,n){e.cellLength>t?e.truncate(t,{mode:n.truncate,marker:n.truncateMarker}):e.cellLength<t&&e.align(n.justify,t)}const jD=Symbol(`cc-candybar.fillDemand`);function MD(e,t){return e[jD]=t,e}function ND(e){return e[jD]}function PD(e,t){let{width:n,justify:r,truncate:i,truncateMarker:a=`…`,baseStyle:o,padding:s}=t;if(e.length===0)return[];let c=kD(e,o).pad(s);if(n===`auto`)return[c];let l={justify:r,truncate:i,truncateMarker:a};return n===`fill`?[MD(c,l)]:(AD(c,n,l),[c])}const FD=RegExp(`\\x1b\\[[0-9;]*m|${Cr.source}`,`g`);function ID(e){return A(e.replace(FD,``))}function LD(e,t){let n=[];for(let t of e){let e=ND(t);e!==void 0&&n.push({cell:t,how:e})}if(n.length===0||!Number.isFinite(t.width))return e;let r=BS(e,t).split(`
177
- `);if(r.length>1)return e;let i=Math.max(0,t.width-ID(r[0]??``)),a=Math.floor(i/n.length),o=i-a*n.length;return n.forEach(({cell:e,how:t},r)=>{let i=a+(r===n.length-1?o:0);AD(e,e.cellLength+i,t)}),e}function RD(e,t){let n=[],r=[],i=()=>{if(!r.length)return;let e=zD(r,t);e.plain.length>0&&n.push(e),r=[]};for(let a of e)if(VD(a.style).link){i();let e=zD([a],t);e.plain.length>0&&n.push(e)}else r.push(a);return i(),n}function zD(e,t){let n=t!==void 0&&!t.isNull?e.map(e=>BD(e,t)):e,r=V.fromFragments(n);return r.end=``,r.noWrap=!0,n.length===1?r.style=n[0].style:t!==void 0&&!t.isNull&&(r.style=t),r}function BD(e,t){let n=e.copy();return n.style=t.add(VD(e.style)),n}function VD(e){return e instanceof z?e:z.parse(e)}var HD=class extends Error{constructor(e,t,n){super(`Invalid ${t} color ${JSON.stringify(e)}: ${n}`),this.name=`ColorSpecError`}};function UD(e,t,n,r,i,a,o,s){let c={segName:t,palette:n,disclosure:r,tint:i,bg:void 0};e.current=c;let l=WD(a,s),u=l===void 0?i:GD(n,l,`bg`);c.bg=u;let d=WD(o,s),f=d===void 0?Gc(n,u,e.drawnAt()):GD(n,d,`fg`);return new z({bgcolor:P.fromRgba(u),color:P.fromRgba(f)})}function WD(e,t){if(e!==void 0)return e.evaluate(t).map(e=>e.plain).join(``)}function GD(e,t,n){try{return Bn(e,t)}catch(e){throw e instanceof Ln?new HD(t,n,e.message):e}}const KD=new Map([[`palette`,`theme.effective`],[`preset`,`preset.effective`],[`look`,`look.effective`],[`style`,`style.effective`],[`charset`,`charset.effective`],[`colorCompatibility`,`colorCompatibility.effective`],[`autoWrap`,`autoWrap.effective`],[`padding`,`padding.effective`]]);function qD(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,JD(e,t,o,n,r,i));return i}function JD(e,t,n,r,i,a){if(N_(n)){let[o,s]=P_(n);return YD(r.get(n.persistWhen)??n.persistWhen,n.set,JD(e,t,o,r,i,a),JD(e,t,s,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=Yv(n.from,i);return{kind:`set-option`,key:n.set,stateVar:e,options:[...t.members],paletteOf:t.paletteOf}}return`int`in n?{kind:`set-int`,key:n.set,stateVar:e}:`cycle`in n?{kind:`set-cycle`,key:n.set,stateVar:e,members:n.cycle}:{kind:`set-bounded`,key:n.set,by:n.by}}if(`persist`in n){let e=KD.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=Yv(n.from,i);return{kind:`persist-option`,key:n.persist,stateVar:e,options:[...t.members],paletteOf:t.paletteOf}}if(`cycle`in n)return{kind:`persist-cycle`,key:n.persist,stateVar:e,members:n.cycle};if(`removeSegment`in n)return{kind:`layout-op`,key:n.persist,op:{op:`remove`,target:n.removeSegment}};if(`insertSegment`in n)return{kind:`layout-op`,key:n.persist,op:{op:`insert`,segment:n.insertSegment,anchor:n.anchor,relation:n.relation}};if(`insertSegmentFrom`in n){let e=Yv(n.insertSegmentFrom,i);return{kind:`layout-op-option`,key:n.persist,anchor:n.anchor,relation:n.relation,options:[...e.members],paletteOf:e.paletteOf}}return{kind:`persist-bounded`,key:n.persist,by:n.by}}if(`copy`in n)return{kind:`copy`,text:ZD(e,n.copy,t)};if(`open`in n)return{kind:`open`,target:ZD(e,n.open,t)};if(`reset`in n)return{kind:`reset`,key:n.reset};if(`doctor`in n)return n.doctor===`run`?{kind:`doctor-run`}:{kind:`doctor-fix`,check:n.check};if(`undo`in n)return{kind:`undo`};if(`redo`in n)return{kind:`redo`};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 YD(e,t,n,r){return{kind:`dual`,selector:e,session:`stateVar`in n&&`stateVar`in r?{...n,stateVar:r.stateVar}:n,durable:r,sessionKey:t}}function XD(e,t){return e.kind===`do`?XD(e.head,t):e.kind===`dual`?Yi(QD(t,e.selector))===!0?e.durable:e.session:e}function ZD(e,t,n){try{return e(t)}catch(e){throw Error(`Template parse error in actions.${n}: ${e.message}`,{cause:e})}}function QD(e,t){return e.has(t)?fE(e.read(t)):``}function $D(e,t){return e.evaluate(t).map(e=>e.plain).join(``)}function eO(e,t,n,r){let i=new V(e,{style:z.combine([r,new z({link:t,bold:n})])});return i.noWrap=!0,i.end=``,i}function tO(e,t){return Math.max(e.members.indexOf(QD(t,e.stateVar)),0)}function nO(e,t,n,r,i){switch(e.kind){case`set-literal`:{let t=QD(r,e.stateVar);return{effects:[{verb:Zb,args:[i,e.key,e.value]}],active:t===e.value}}case`set-option`:{let a=n??t,o=QD(r,e.stateVar);return{effects:[{verb:Zb,args:[i,e.key,a]}],active:o===a}}case`set-int`:{let a=n??t,o=QD(r,e.stateVar);return{effects:[{verb:Zb,args:[i,e.key,a]}],active:o===a}}case`set-cycle`:{let t=e.members[(tO(e,r)+1)%e.members.length];return{effects:[{verb:Zb,args:[i,e.key,t]}],active:!1}}case`set-bounded`:return{effects:[{verb:Qb,args:[i,e.key,String(e.by)]}],active:!1};case`copy`:return{effects:[{verb:$b,args:[$D(e.text,rD(r))]}],active:!1};case`open`:return{effects:[{verb:ex,args:[$D(e.target,rD(r))]}],active:!1};case`persist-literal`:{let t=QD(r,e.stateVar);return{effects:[{verb:ix,args:[i,e.key,e.value]}],active:t===e.value}}case`persist-option`:{let a=n??t,o=QD(r,e.stateVar);return{effects:[{verb:ix,args:[i,e.key,a]}],active:o===a}}case`persist-cycle`:{let t=e.members[(tO(e,r)+1)%e.members.length];return{effects:[{verb:ix,args:[i,e.key,t]}],active:!1}}case`persist-bounded`:return{effects:[{verb:ax,args:[i,e.key,String(e.by)]}],active:!1};case`reset`:return{effects:[{verb:ox,args:[i,e.key]}],active:!1};case`undo`:return{effects:[{verb:cx,args:[i]}],active:!1};case`redo`:return{effects:[{verb:lx,args:[i]}],active:!1};case`doctor-run`:return{effects:[{verb:dx,args:[i]}],active:!1};case`doctor-fix`:return{effects:[{verb:fx,args:[i,e.check]}],active:!1};case`layout-op`:return{effects:[{verb:sx,args:[i,e.key,Gh(e.op)]}],active:!1};case`dual`:{let a=XD(e,r),{effects:o,active:s}=nO(a,t,n,r,i);return a===e.durable?{effects:o.map(t=>({...t,args:[...t.args,e.sessionKey]})),active:s}:{effects:o,active:s}}case`do`:{let a=nO(e.head,t,n,r,i);return{effects:[...a.effects,...e.rest.flatMap(e=>nO(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:sx,args:[i,e.key,Gh(r)]}],active:!1}}}}function rO(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:Ko(`action "${e}"`,n,t.members.length,tO(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 iO(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}=rO(e,XD(r,i),t,i),{effects:s,active:c}=nO(r,a,o,i,QD(i,`session.id`));return eO(a,hx(s),c)}function aO(e){return{action:{fn:(t,...n)=>iO(t,n,e),argTypes:[`string`,`string`],returnType:`T`}}}function oO(e,t){return eO(`✕`,hx([{verb:Zb,args:[QD(e,`session.id`),t,Uo]}]),!1)}function sO(e,t,n){return new z({bgcolor:P.fromRgba(t),color:P.fromRgba(Gc(e,t,n))})}function cO(e,t,n){return sO(e.palette,il(e.palette,e.disclosure,[t],n),n)}function lO(e,t,n,r,i){return r===void 0?n=>cO(e,{...n,distribution:t},i):(e,t)=>uO(r(t,n),i)}function uO(e,t){let n=Fc(e,`background`);return new z({bgcolor:P.fromRgba(n),color:P.fromRgba(qn(Fc(e,`primary`),n,4.5,t))})}function dO(e){return{current:null,drawnAt:e}}function fO(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 pO(e){return new V(e).cellLength}function mO(e){return Math.max(1,pE(e.store.read(`term.cols`))-LS(e.stripStyle)-2*e.padding)}function hO(e){return Math.max(1,mO(e)-(pO(`✕`)+2*e.padding+e.seamCols))}function gO(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 _O(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.noWrap=t,r.end=``,r}function vO(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 yO(e,t,n){let r=e.compiled.get(t),i=r&&XD(r,e.store);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 bO(e,t,n,r,i,a,o){let s=yO(a,e,`picker`),c=a.compiled.get(e),l=a.store,u=QD(l,`session.id`),d=`stateVar`in s?QD(l,s.stateVar):void 0,f=s.options.map(pO),p=i?mO(a):1/0,m=pO(`✕`)+1,h=pO(`←`)+1+pO(`→`)+1,g=gO(f,p,m),_=g.length>1?gO(f,p,m+h):g,v=parseInt(QD(l,t.stateVar),10),y=Number.isInteger(v)?Math.max(0,Math.min(v,_.length-1)):0,b=_[y]??[],x=e=>hx([{verb:Zb,args:[u,t.key,String(e)]}]),S=n.flatMap(([e,t])=>[e,t]),C=hx([{verb:Zb,args:[u,...S]}]),ee=r?[{verb:Zb,args:[u,...S]}]:[],te=e=>hx([...nO(c,e,e,l,u).effects,...ee]),w=[eO(`✕`,C,!1)];y>0&&w.push(eO(`←`,x(y-1),!1));for(let e of b){let t=s.options[e];w.push(eO(t,te(t),t===d,o({index:e,count:s.options.length},t)))}return y<_.length-1&&w.push(eO(`→`,x(y+1),!1)),_O(w,i)}function xO(e,t){return{picker:{fn:(n,r,i,a)=>{let o=vO(e,r,`set-int`,`an int action ({ set, int: true })`);return bO(n,{key:o.key,stateVar:o.stateVar},[[o.key,`-1`]],i===!0,a===!0,e,lO(fO(t,`{{ picker }}`),kc(void 0),e.basePalette,yO(e,n,`picker`).paletteOf,t.drawnAt()))},argTypes:[`string`,`string`,`bool`,`bool`],returnType:`T`}}}function SO(e,t,n,r){let i=Math.floor((t-1)/2),a=n,o=0;for(;o<i;){let t=a+pO(e(-(o+1)))+1+pO(e(o+1))+1;if(t>r)break;a=t,o+=1}return o}function CO(e,t,n,r){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 i=n.store;if(!i.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 a=n.compiled.get(e),o=QD(i,`session.id`),{options:s}=t,c=s.length,l=QD(i,t.stateVar),u=Math.max(s.indexOf(l),0),d=e=>((u+e)%c+c)%c,f=e=>s[d(e)],p=new Map,m=e=>{let t=p.get(e);if(t!==void 0)return t;let n=hx(nO(a,f(e),f(e),i,o).effects);return p.set(e,n),n},h=e=>eO(f(e),m(e),f(e)===l,r({index:d(e),count:c},f(e))),g=SO(f,c,pO(`◀`)+1+pO(f(0))+1+pO(`▶`),hO(n)),_=e=>Array.from({length:g},(t,n)=>h(e*(n+1)));return _O([..._(-1).reverse(),eO(`◀`,m(-1),!1),h(0),eO(`▶`,m(1),!1),..._(1)],!0)}function wO(e,t){return{carousel:{fn:n=>{let r=yO(e,n,`carousel`);return CO(n,r,e,lO(fO(t,`{{ carousel }}`),kc(void 0),e.basePalette,r.paletteOf,t.drawnAt()))},argTypes:[`string`],returnType:`T`}}}const TO=[`~/code`,`main`,`opus`,`42%`,`5m`,`$1.20`];function EO(e,t){let n=Zc(e,{hue:Sc,depth:0},t);return[wc.map((t,n)=>({text:TO[n%TO.length],colour:Ic(e,t)})),[{text:`▾ open`,colour:n.state},{text:`menu`,colour:n.plane}],[{text:`warn`,colour:Fc(e,`warning`)},{text:`error`,colour:Fc(e,`error`)}]]}function DO(e,t,n){let r=EO(e,t).flatMap((n,r)=>n.map(({text:n,colour:i},a)=>({gap:r>0&&a===0?` `:``,cell:new V(` ${n} `,{style:sO(e,i,t)})}))),i=[],a=0;for(let{gap:e,cell:t}of r){if(a+=e.length+t.cellLength,a>n)break;e!==``&&i.push(new V(e)),i.push(t)}let o=V.fromFragments(i);return o.noWrap=!0,o.end=``,o}function OO(e,t){return{themePreview:{fn:()=>DO(e.palette,t.drawnAt(),hO(e)),argTypes:[],returnType:`T`}}}const kO=e=>e.slice(e.lastIndexOf(`.`)+1),AO=(e,t)=>{let n=new V(kO(e));return n.truncate(t,{marker:`…`}),n.plain};function jO(e,t){let n=e.map(e=>e.map(({name:e})=>pO(kO(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 MO(e,t,n){let r=jO(e,n),i=e.map(e=>{let i=[],a=0;for(let{name:o,address:s,palette:c}of e){let e=new V(` ${AO(o,r)} `,{style:sO(c,cl(c,{kind:`bar`,address:s},t).tint,t)});if(a+=e.cellLength,a>n)break;i.push(e)}return i}),a=V.fromFragments(i.flatMap((e,t)=>t===0?e:[new V(`
178
- `),...e]));return a.noWrap=!0,a.end=``,a}function NO(e,t){return{layoutPreview:{fn:()=>MO(e.layout(),t.drawnAt(),hO(e)),argTypes:[],returnType:`T`}}}const PO=Symbol(`cc-candybar.menuDrop`);function FO(e){return e.flatMap(e=>e[PO]??[])}function IO(e,t,n,r){let i=r.activeSegment.current;if(i===null)throw Error(`{{ menu }} rendered with no active segment placement — the render walk must publish one before evaluating a segment template`);let a=r.action,o=yh(i.segName,e,n.key),s=Sh(o),c=vh(e),l=QD(a.store,o)===c,u=QD(a.store,`session.id`),d=l?Uo:c,f=eO(Ko(`{{ menu "${e}" }}`,t,2,+!!l),hx([{verb:Zb,args:[u,o,d,s,`0`]}]),!1);return f[PO]=l?[bO(e,{key:s,stateVar:s},[[o,Uo],[s,`0`]],n.closeOnPick,n.paged,a,lO(i,n.distribution,a.basePalette,yO(a,e,`menu`).paletteOf,r.activeSegment.drawnAt()))]:[],f}const LO=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function RO(e,t){let n=t[t.length-1],r=LO(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:Eh(r??{})}}function zO(e){return{menu:{fn:(t,...n)=>{let{displays:r,options:i}=RO(t,n);return IO(t,r,i,e)},argTypes:[`string`,`value`],returnType:`T`}}}function BO(e){let{value:t,max:n,width:r,filled:i,empty:a,colourAt:o}=e,s=VO(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.noWrap=!0,l}function VO(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 HO(e){let t={fn:(()=>{let t=fO(e,`{{ bgOf }}`);if(t.bg===void 0)throw Error(`{{ bgOf }} is not available while segments.${t.segName}'s own "bg:" is being evaluated — the background is what that template computes. Reach for a palette color there instead, e.g. bg: '{{ darken (color "surface") 1 }}'.`);return t.bg.hex}),argTypes:[],returnType:`string`},n={fn:(()=>fO(e,`{{ tint }}`).tint.hex),argTypes:[],returnType:`string`},r=RE(()=>fO(e,`{{ color }} / {{ ramp }} / {{ gauge }}`).palette),i={fn:((e,t,n,i,a,o,...s)=>BO({value:e,max:t,width:n,filled:i,empty:a,colourAt:o===void 0||s.length===0?void 0:e=>String(r.ramp.fn(e,o,...UO(s)))})),argTypes:[`float`,`float`,`int`,`string`,`string`,`string`,`string`],returnType:`T`};return{...r,bgOf:t,tint:n,gauge:i}}function UO(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 WO(e){let t=[],n=[];for(let r of e){if(!r.contains(`
177
+ Use 'override' annotation for methods overridden by subclass.`)}}var ra=la(0),ia=function(){var e=!1,t={};return Object.defineProperty(t,`0`,{set:function(){e=!0}}),Object.create(t)[0]=1,e===!1}(),aa=0,oa=function(){};function sa(e,t){Object.setPrototypeOf?Object.setPrototypeOf(e.prototype,t):e.prototype.__proto__===void 0?e.prototype=t:e.prototype.__proto__=t}sa(oa,Array.prototype);var ca=function(e){function t(t,n,r,i){var a;return r===void 0&&(r=`ObservableArray@`+h()),i===void 0&&(i=!1),a=e.call(this)||this,ga(function(){var e=new Ai(r,n,i,!0);e.proxy_=a,ee(a,O,e),t&&t.length&&a.spliceWithArray(0,0,t),ia&&Object.defineProperty(a,`0`,ra)}),a}_e(t,e);var n=t.prototype;return n.concat=function(){this[O].atom_.reportObserved();var e=[...arguments];return Array.prototype.concat.apply(this.slice(),e.map(function(e){return Li(e)?e.slice():e}))},n[Symbol.iterator]=function(){var e=this,t=0;return Sa({next:function(){return t<e.length?{value:e[t++],done:!1}:{done:!0,value:void 0}}})},me(t,[{key:`length`,get:function(){return this[O].getArrayLength_()},set:function(e){this[O].setArrayLength_(e)}},{key:Symbol.toStringTag,get:function(){return`Array`}}])}(oa);Object.entries(Mi).forEach(function(e){var t=e[0],n=e[1];t!==`concat`&&C(ca.prototype,t,n)});function la(e){return{enumerable:!1,configurable:!0,get:function(){return this[O].get_(e)},set:function(t){this[O].set_(e,t)}}}function ua(e){s(ca.prototype,``+e,la(e))}function da(e){if(e>aa){for(var t=aa;t<e+100;t++)ua(t);aa=e}}da(1e3);function fa(e,t,n){return new ca(e,t,n)}function pa(e,t){if(typeof e==`object`&&e){if(Li(e))return t!==void 0&&n(23),e[O].atom_;if(U(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,ha(e)),r}if(ea(e)){if(!t)return n(26);var i=e[O].values_.get(t);return i||n(27,t,ha(e)),i}if(Ne(e)||nn(e)||R(e))return e}else if(v(e)&&R(e[O]))return e[O];n(28)}function ma(e,t){if(e||n(29),t!==void 0)return ma(pa(e,t));if(Ne(e)||nn(e)||R(e)||Hi(e)||U(e))return e;if(e[O])return e[O];n(24,e)}function ha(e,t){var n;if(t!==void 0)n=pa(e,t);else if(ur(e))return e.name;else n=ea(e)||Hi(e)||U(e)?ma(e):pa(e);return n.name_}function ga(e){var t=F(),n=Zt(!0);jn();try{return e()}finally{Mn(),Qt(n),hn(t)}}var _a=c.toString;function va(e,t,n){return n===void 0&&(n=-1),ya(e,t,n)}function ya(e,t,n,r,i){if(e===t)return e!==0||1/e==1/t;if(e==null||t==null)return!1;if(e!==e)return t!==t;var a=typeof e;if(a!==`function`&&a!==`object`&&typeof t!=`object`)return!1;var o=_a.call(e);if(o!==_a.call(t))return!1;switch(o){case`[object RegExp]`:case`[object String]`:return``+e==``+t;case`[object Number]`:return+e==+e?+e==0?1/e==1/t:+e==+t:+t!=+t;case`[object Date]`:case`[object Boolean]`:return+e==+t;case`[object Symbol]`:return typeof Symbol<`u`&&Symbol.valueOf.call(e)===Symbol.valueOf.call(t);case`[object Map]`:case`[object Set]`:n>=0&&n++;break}e=ba(e),t=ba(t);var s=o===`[object Array]`;if(!s){if(typeof e!=`object`||typeof t!=`object`)return!1;var c=e.constructor,l=t.constructor;if(c!==l&&!(v(c)&&c instanceof c&&v(l)&&l instanceof l)&&`constructor`in e&&`constructor`in t)return!1}if(n===0)return!1;n<0&&(n=-1),r||=[],i||=[];for(var u=r.length;u--;)if(r[u]===e)return i[u]===t;if(r.push(e),i.push(t),s){if(u=e.length,u!==t.length)return!1;for(;u--;)if(!ya(e[u],t[u],n-1,r,i))return!1}else{var d=Object.keys(e),f=d.length;if(Object.keys(t).length!==f)return!1;for(var p=0;p<f;p++){var m=d[p];if(!(se(t,m)&&ya(e[m],t[m],n-1,r,i)))return!1}}return r.pop(),i.pop(),!0}function ba(e){return Li(e)?e.slice():w(e)||Hi(e)||re(e)||U(e)?Array.from(e.entries()):e}var xa=i().Iterator?.prototype||{};function Sa(e){return e[Symbol.iterator]=Ca,Object.assign(Object.create(xa),e)}function Ca(){return this}function wa(e){return e instanceof Object&&typeof e.annotationType_==`string`&&v(e.make_)&&v(e.extend_)}[`Symbol`,`Map`,`Set`].forEach(function(e){i()[e]===void 0&&n(`MobX requires global '`+e+`' to be available or polyfilled`)}),typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__==`object`&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:Xn,extras:{getDebugName:ha},$mobx:O}),e.$mobx=O,e.FlowCancellationError=jr,e.ObservableMap=Vi,e.ObservableSet=Ki,e.Reaction=Rn,e._allowStateChanges=Xt,e._allowStateChangesInsideComputed=lr,e._allowStateReadsEnd=_n,e._allowStateReadsStart=gn,e._autoAction=cr,e._endAction=Yt,e._getAdministration=ma,e._getGlobalState=wn,e._interceptReads=zr,e._isComputingDerivation=sn,e._resetGlobalState=Tn,e._startAction=j,e.action=sr,e.autorun=dr,e.comparer=ze,e.computed=Ht,e.configure=wr,e.createAtom=Pe,e.defineProperty=ti,e.entries=Xr,e.extendObservable=Tr,e.flow=Fr,e.flowResult=Lr,e.get=ei,e.getAtom=pa,e.getDebugName=ha,e.getDependencyTree=Er,e.getObserverTree=Or,e.has=$r,e.intercept=Br,e.isAction=ur,e.isBoxedObservable=tn,e.isComputed=Ur,e.isComputedProp=Wr,e.isFlow=Rr,e.isFlowCancellationError=Mr,e.isObservable=Kr,e.isObservableArray=Li,e.isObservableMap=Hi,e.isObservableObject=ea,e.isObservableProp=qr,e.isObservableSet=U,e.keys=Jr,e.makeAutoObservable=Ti,e.makeObservable=Ci,e.observable=A,e.observe=ri,e.onBecomeObserved=vr,e.onBecomeUnobserved=yr,e.onReactionError=zn,e.override=Ge,e.ownKeys=ni,e.reaction=mr,e.remove=Qr,e.runInAction=lr,e.set=Zr,e.spy=Xn,e.toJS=si,e.trace=ci,e.transaction=ui,e.untracked=mn,e.values=Yr,e.when=di})),_E=pe(((e,t)=>{process.env.NODE_ENV===`production`?t.exports=hE():t.exports=gE()}))();function vE(e){if(Array.isArray(e))return Object.freeze(e.map(vE));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]=vE(r);return Object.freeze(t)}return e}function yE(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 bE(e){return typeof e==`string`?e:String(e)}function xE(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 SE(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 CE(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=wE(e.style).add(t),n}function wE(e){if(e instanceof z)return e;try{return z.parse(e)}catch(t){throw t instanceof Dr?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 TE(e){return{fn:(t=>CE(t,e)),argTypes:[`liftable`],returnType:`T`}}function EE(e){return{fn:((t,n)=>CE(n,new z({[e]:P.parse(t)}))),argTypes:[`string`,`liftable`],returnType:`T`}}function DE(e,t){return new z({[e]:t})}function OE(){let e={};for(let t of wr)e[t]=TE(DE(t,!0)),e[`not_${t}`]=TE(DE(t,!1));for(let[t,n]of Object.entries(Er))e[t]=TE(DE(n,!0));return e}const kE={fn:((e,t)=>CE(t,z.parse(e))),argTypes:[`string`,`liftable`],returnType:`T`},AE={fn:((e,t)=>CE(t,new z({link:e}))),argTypes:[`string`,`liftable`],returnType:`T`};function jE(){return{fg:EE(`color`),bg:EE(`bgcolor`),...OE(),link:AE,style:kE}}function ME(e,t){if(!Rn.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 zn(e)}function NE(e,t){return{fn:t,argTypes:e,returnType:`string`}}function PE(e,t,n,r){let i=r===void 0||e>=r.min&&e<=r.max;if(!Number.isFinite(e)||!i){let i=r===void 0?`a finite number`:`within ${r.min}..${r.max} (${r.note})`;throw RangeError(`${t}'s ${n} must be ${i}, got ${e}`+(e===void 0?` — ${t} takes it as its last argument`:``))}return e}const FE=NE([`string`,`int`],((e,t)=>Gn(ME(e,`darken`),PE(t,`darken`,`levels`)).hex)),IE=NE([`string`,`int`],((e,t)=>Gn(ME(e,`lighten`),-PE(t,`lighten`,`levels`)).hex)),LE={min:0,max:100,note:`0 = from, 100 = toward`},RE=NE([`string`,`string`,`float`],((e,t,n)=>mn(ME(e,`mix`),ME(t,`mix`),PE(n,`mix`,`percentage`,LE)/100).hex)),zE={min:1,max:21,note:`4.5 = AA body text, 3 = AA large text`},BE=NE([`string`],(e=>Kn(ME(e,`contrastOn`)).hex)),VE=e=>NE([`string`,`string`,`float`],((t,n,r)=>qn(ME(t,`readableOn`),ME(n,`readableOn`),PE(r,`readableOn`,`ratio`,zE),e()).hex)),HE={hueShift:`shiftHue`,chromaScale:`scaleChroma`,lightnessScale:`scaleLightness`,lightnessShift:`shiftLightness`};function UE(){let e={};for(let[t,n]of Object.entries(HE)){let r=t;e[n]=NE([`string`,`float`],((e,t)=>{let i={...En,[r]:PE(t,n,`amount`)};return L.fromRgba(ME(e,n)).applyKey(i).toRgba().hex}))}return e}function WE(e=()=>M.TRUECOLOR){return{darken:FE,lighten:IE,mix:RE,contrastOn:BE,readableOn:VE(e),...UE()}}function GE(e,t){if(e.length===0)throw RangeError(`ramp needs at least one stop after the easing: ramp <value> <easing> <position> <color> …`);if(e.length%2!=0)throw RangeError(`ramp's last stop (position ${String(e[e.length-1])}) has no color — stops are <position> <color> pairs`);let n=[];for(let r=0;r<e.length;r+=2)n.push({at:e[r],color:Bn(t,e[r+1])});return n}function KE(e){return{color:{fn:(t=>Bn(e(),t).hex),argTypes:[`string`],returnType:`string`},ramp:{fn:((...t)=>{if(t.length<2)throw RangeError(`ramp needs a value and an easing before its stops (got ${t.length}): ramp <value> "linear"|"step" <position> <color> …`);let[n,r,...i]=t;return new hr(mr(r),GE(i,e())).at(n).hex}),argTypes:[`float`,`string`],argTypePattern:`alternating`,returnType:`string`}}}function qE(e){return{...jE(),...WE(e)}}new z({color:`red`,dim:!0});const JE=/^(?:(?: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,YE=/^(?<family>opus|sonnet|haiku)\s+(?<major>\d+)(?:\.(?<minor>\d))?$/i;function XE(e){if(!e)return`Claude`;let t=e.trim().replace(/\s*\([^)]*\)\s*$/,``).replace(/\s*\[[^\]]*\]\s*$/,``).trim(),n=t.match(JE);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(YE);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 ZE(e){let t=e.match(YE);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 QE(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 $E(e){return e.toLocaleString()}function eD(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 tD(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 nD=[`▁`,`▂`,`▃`,`▄`,`▅`,`▆`,`▇`,`█`],rD=nD.length;function iD(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*(rD-1));o+=nD[t]}return o}function aD(e){let t=[];for(let n of e.split(`,`)){let e=n.trim();if(e===``)continue;let r=Number(e);if(!Number.isFinite(r))throw TypeError(`sparkline: non-numeric series element ${JSON.stringify(n)}`);t.push(r)}return t}const oD=ji(),sD=[...Bi];function cD(){return{basename:{fn:e=>l(e),argTypes:[`string`]},dirname:{fn:e=>u(e),argTypes:[`string`]},abbreviatePath:{fn:e=>QE(e),argTypes:[`string`]},int:{fn:e=>xE(e),argTypes:[`value`]},string:{fn:e=>bE(e),argTypes:[`value`]},bool:{fn:e=>SE(e),argTypes:[`value`]},urlEncode:{fn:e=>encodeURIComponent(e),argTypes:[`string`]},themes:{fn:()=>oD,argTypes:[]},styles:{fn:()=>sD,argTypes:[]},sparkline:{fn:(e,t)=>iD(aD(e),t),argTypes:[`string`,`int`]},cascade:{fn:(e,...t)=>tD(e,eD(t)),argTypes:[`float`,`string`]}}}function lD(e=()=>new Date){return{minutesUntilReset:{fn:t=>Math.round(Math.max(0,t*1e3-e().getTime())/6e4),argTypes:[`int`]},formatInteger:{fn:e=>$E(e),argTypes:[`int`]},round:{fn:e=>Math.round(e),argTypes:[`float`]},formatModelName:{fn:e=>XE(e),argTypes:[`string`]},shortenModelName:{fn:e=>ZE(e),argTypes:[`string`]}}}function uD(e,t=()=>new Date,n){return Td({fromString:e=>new V(e),toString:e=>e.plain,isT:e=>e instanceof V,clock:t,missingKey:`error`,funcs:{...pp(),...Ch(),...$p(),...xm(),...ap(t),...Jd(),...Dp(),...qE(n),...cD(),...lD(t),...e??{}}})}function dD(e){return fD(e,new Set(e.names()),``)}function fD(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`?pD(a,e.readDocument(a)):e.read(a);let o=`${a}.`;for(let n of t)if(n.startsWith(o))return fD(e,t,a)}})}function pD(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}`)}}const mD=/\r\n|\r|\n/g,hD=e=>X(e.replace(mD,` `).trim());function gD(e){return t=>{let n=e.exec(t)?.[1];return n===void 0?Q(`regex no-match`):X(n.replace(mD,` `))}}const _D=e=>{try{return X(JSON.parse(e))}catch(e){return Q(`JSON parse failed: ${e.message}`)}};function vD(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 yD(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]}"`)}}function bD(e,t){return{where:`output of "${e}"`,read:async()=>{let n=await Te({bin:`/bin/sh`,args:[`-c`,e],category:`user-shell`,signal:t});if(!n.ok&&n.reason===`aborted`)throw t.reason;return n.ok?X(n.stdout):Q(`shell "${e}" ${n.exitCode===null?[n.reason,n.error].filter(e=>e!==void 0).join(`: `):`exited with code ${n.exitCode}`}`)}}}function xD(e,t,n){return{where:`"${e}"`,read:async()=>{try{let r=await re(e,{encoding:`utf8`,signal:n});return X(t===`first-line`?r.split(/\r?\n/)[0]??``:r)}catch{if(n.aborted)throw n.reason;return Q(`file unreadable: ${e}`)}}}}function SD(e,t,n){if(e.kind!==`ok`)return e;let r=t(e.value);return r.kind===`failed`?Q(`${r.reason} in ${n}`):r}const CD=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],wD=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],TD=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],ED=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`];function DD(e,t){let n=[[`2006`,e=>String(e.getFullYear())],[`January`,e=>CD[e.getMonth()]],[`Monday`,e=>TD[e.getDay()]],[`Jan`,e=>wD[e.getMonth()]],[`Mon`,e=>ED[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 OD={branch:`string`,sha:`string`,dirty:`boolean`,ahead:`number`,behind:`number`,stash:`number`};function kD(e,t,n,r){if(e===null){if(n!==void 0)return n;let e=OD[t];try{return ND(r,e)}catch{return PD(e)}}switch(t){case`branch`:return e.branch===`detached`?``:e.branch;case`sha`:return Ax(e.sha,``);case`dirty`:return e.status!==`clean`;case`ahead`:return Ax(e.aheadBehind,{ahead:0,behind:0}).ahead;case`behind`:return Ax(e.aheadBehind,{ahead:0,behind:0}).behind;case`stash`:return Ax(e.stashCount,0)}}var AD=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}},jD=class{buckets=new Map;subscribe(e,t){let n=this.buckets.get(e);if(!n){let t=new Set;n={timer:oe(()=>{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&&(ae(n.timer),this.buckets.delete(e)))}dispose(){for(let{timer:e}of this.buckets.values())ae(e);this.buckets.clear()}bucketCount(){return this.buckets.size}};function MD(e,t){let n=e;for(let e of t.split(`.`)){if(typeof n!=`object`||!n)return;n=n[e]}return n}function ND(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`?bE(e):t===`number`?xE(e):SE(e)}function PD(e){return e===`number`?0:e===`boolean`?!1:``}var FD=class{inputMetas=new Map;lastErrors=new Map;watchMgr=new AD;ttlMgr=new jD;gitSubscriptions=new Map;cleanups=[];inFlight=new Map;reads=new Bw;abort=new AbortController;drawn=_E.observable.box(M.TRUECOLOR);drawnAt=()=>this.drawn.get();engine=uD(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 qw({sanityIntervalMs:0}),this.ownsGitProvider=!0),this.sessionState=r}get variableStore(){return this.store}declareLiteral(e,t){this.store.defineBox(e,yE(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,bD(t,this.abort.signal),vD(e,n.cache),n.parse)}declareFile(e,t,n){this.declareSource(e,xD(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,hD,t.default,n);case`regex`:return this.scalarPublisher(e,gD(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=SD(n,t,r);this.noteOutcome(e,a),this.store.setBox(e,Ax(a,i))}}documentPublisher(e,t,n){let r=t===void 0?Z:X(t);return this.store.defineDocument(e,r),i=>{let a=SD(i,_D,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=dD(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 DD(t.format,e)}catch{return this.stringInitial(t.varDefault)}})(new Date));let r=this.ttlMgr.subscribe(n,()=>{try{this.store.setBox(e,DD(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=OD[t.field],r=t.varDefault===void 0?PD(n):ND(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,kD(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(`session.id`);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=MD(e,n.path),i=this.store.getType(t);if(r!==void 0)try{this.store.setBox(t,ND(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,_E.reaction)(()=>{let t=dD(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,_E.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,ND(this.defaultEmptyValue,t))}catch{this.store.setBox(e,PD(t))}}defaultFor(e){try{return ND(this.defaultEmptyValue,e)}catch{return PD(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`)}};function ID(e,t){return e===void 0?!0:e.evaluate(t).map(e=>e.plain).join(``)!==`false`}function LD(e,t){let n=V.fromFragments(e);return n.end=``,n.noWrap=!0,t!==void 0&&!t.isNull&&(n.style=t),n}function RD(e,t,n){e.cellLength>t?e.truncate(t,{mode:n.truncate,marker:n.truncateMarker}):e.cellLength<t&&e.align(n.justify,t)}const zD=Symbol(`cc-candybar.fillDemand`);function BD(e,t){return e[zD]=t,e}function VD(e){return e[zD]}function HD(e,t){let{width:n,justify:r,truncate:i,truncateMarker:a=`…`,baseStyle:o,padding:s}=t;if(e.length===0)return[];let c=LD(e,o).pad(s);if(n===`auto`)return[c];let l={justify:r,truncate:i,truncateMarker:a};return n===`fill`?[BD(c,l)]:(RD(c,n,l),[c])}const UD=RegExp(`\\x1b\\[[0-9;]*m|${Cr.source}`,`g`);function WD(e){return A(e.replace(UD,``))}function GD(e,t){let n=[];for(let t of e){let e=VD(t);e!==void 0&&n.push({cell:t,how:e})}if(n.length===0||!Number.isFinite(t.width))return e;let r=qS(e,t).split(`
178
+ `);if(r.length>1)return e;let i=Math.max(0,t.width-WD(r[0]??``)),a=Math.floor(i/n.length),o=i-a*n.length;return n.forEach(({cell:e,how:t},r)=>{let i=a+(r===n.length-1?o:0);RD(e,e.cellLength+i,t)}),e}function KD(e,t){let n=[],r=[],i=()=>{if(!r.length)return;let e=qD(r,t);e.plain.length>0&&n.push(e),r=[]};for(let a of e)if(YD(a.style).link){i();let e=qD([a],t);e.plain.length>0&&n.push(e)}else r.push(a);return i(),n}function qD(e,t){let n=t!==void 0&&!t.isNull?e.map(e=>JD(e,t)):e,r=V.fromFragments(n);return r.end=``,r.noWrap=!0,n.length===1?r.style=n[0].style:t!==void 0&&!t.isNull&&(r.style=t),r}function JD(e,t){let n=e.copy();return n.style=t.add(YD(e.style)),n}function YD(e){return e instanceof z?e:z.parse(e)}var XD=class extends Error{constructor(e,t,n){super(`Invalid ${t} color ${JSON.stringify(e)}: ${n}`),this.name=`ColorSpecError`}};function ZD(e,t,n,r,i,a,o,s){let c={segName:t,palette:n,disclosure:r,tint:i,bg:void 0};e.current=c;let l=QD(a,s),u=l===void 0?i:$D(n,l,`bg`);c.bg=u;let d=QD(o,s),f=d===void 0?Zc(n,u,e.drawnAt()):$D(n,d,`fg`);return new z({bgcolor:P.fromRgba(u),color:P.fromRgba(f)})}function QD(e,t){if(e!==void 0)return e.evaluate(t).map(e=>e.plain).join(``)}function $D(e,t,n){try{return Bn(e,t)}catch(e){throw e instanceof Ln?new XD(t,n,e.message):e}}const eO=new Map(Hg.map(e=>[e.configKey,e.effectiveVar])),tO=new Map(Hg.map(e=>[e.sessionKey,e.effectiveVar]));function nO(e,t,n,r){let i=new Map,a=Object.entries(t);for(let[t,o]of[...a.filter(([,e])=>!(`do`in e)),...a.filter(([,e])=>`do`in e)])i.set(t,rO(e,t,o,n,r,i));return i}function rO(e,t,n,r,i,a){if(V_(n)){let[o,s]=H_(n);return iO(r.get(n.persistWhen)??n.persistWhen,n.set,rO(e,t,o,r,i,a),rO(e,t,s,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=ry(n.from,i);return{kind:`set-option`,key:n.set,stateVar:e,options:[...t.members],paletteOf:t.paletteOf}}return`int`in n?{kind:`set-int`,key:n.set,stateVar:e}:`cycle`in n?{kind:`set-cycle`,key:n.set,stateVar:e,members:n.cycle}:{kind:`set-bounded`,key:n.set,by:n.by}}if(`persist`in n){let e=eO.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=ry(n.from,i);return{kind:`persist-option`,key:n.persist,stateVar:e,options:[...t.members],paletteOf:t.paletteOf}}if(`cycle`in n)return{kind:`persist-cycle`,key:n.persist,stateVar:e,members:n.cycle};if(`removeSegment`in n)return{kind:`layout-op`,key:n.persist,op:{op:`remove`,target:n.removeSegment}};if(`insertSegment`in n)return{kind:`layout-op`,key:n.persist,op:{op:`insert`,segment:n.insertSegment,anchor:n.anchor,relation:n.relation}};if(`insertSegmentFrom`in n){let e=ry(n.insertSegmentFrom,i);return{kind:`layout-op-option`,key:n.persist,anchor:n.anchor,relation:n.relation,options:[...e.members],paletteOf:e.paletteOf}}return{kind:`persist-bounded`,key:n.persist,by:n.by}}if(`copy`in n)return{kind:`copy`,text:oO(e,n.copy,t)};if(`open`in n)return{kind:`open`,target:oO(e,n.open,t)};if(`reset`in n)return{kind:`reset`,key:n.reset};if(`doctor`in n)return n.doctor===`run`?{kind:`doctor-run`}:{kind:`doctor-fix`,check:n.check};if(`undo`in n)return{kind:`undo`};if(`redo`in n)return{kind:`redo`};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 iO(e,t,n,r){return{kind:`dual`,selector:e,session:`stateVar`in n&&`stateVar`in r?{...n,stateVar:r.stateVar}:n,durable:r,sessionKey:t}}function aO(e,t){return e.kind===`do`?aO(e.head,t):e.kind===`dual`?ta(sO(t,e.selector))===!0?e.durable:e.session:e}function oO(e,t,n){try{return e(t)}catch(e){throw Error(`Template parse error in actions.${n}: ${e.message}`,{cause:e})}}function sO(e,t){return e.has(t)?bE(e.read(t)):``}function cO(e,t){return e.evaluate(t).map(e=>e.plain).join(``)}function lO(e,t,n,r){let i=new V(e,{style:z.combine([r,new z({link:t,bold:n})])});return i.noWrap=!0,i.end=``,i}function uO(e,t){return Math.max(e.members.indexOf(sO(t,e.stateVar)),0)}function dO(e,t,n,r,i){switch(e.kind){case`set-literal`:{let t=sO(r,e.stateVar);return{effects:[{verb:ax,args:[i,e.key,e.value]}],active:t===e.value}}case`set-option`:{let a=n??t,o=sO(r,e.stateVar);return{effects:[{verb:ax,args:[i,e.key,a]}],active:o===a}}case`set-int`:{let a=n??t,o=sO(r,e.stateVar);return{effects:[{verb:ax,args:[i,e.key,a]}],active:o===a}}case`set-cycle`:{let t=e.members[(uO(e,r)+1)%e.members.length];return{effects:[{verb:ax,args:[i,e.key,t]}],active:!1}}case`set-bounded`:return{effects:[{verb:ox,args:[i,e.key,String(e.by)]}],active:!1};case`copy`:return{effects:[{verb:sx,args:[cO(e.text,dD(r))]}],active:!1};case`open`:return{effects:[{verb:cx,args:[cO(e.target,dD(r))]}],active:!1};case`persist-literal`:{let t=sO(r,e.stateVar);return{effects:[{verb:fx,args:[i,e.key,e.value]}],active:t===e.value}}case`persist-option`:{let a=n??t,o=sO(r,e.stateVar);return{effects:[{verb:fx,args:[i,e.key,a]}],active:o===a}}case`persist-cycle`:{let t=e.members[(uO(e,r)+1)%e.members.length];return{effects:[{verb:fx,args:[i,e.key,t]}],active:!1}}case`persist-bounded`:return{effects:[{verb:px,args:[i,e.key,String(e.by)]}],active:!1};case`reset`:return{effects:[{verb:mx,args:[i,e.key]}],active:!1};case`undo`:return{effects:[{verb:gx,args:[i]}],active:!1};case`redo`:return{effects:[{verb:_x,args:[i]}],active:!1};case`doctor-run`:return{effects:[{verb:yx,args:[i]}],active:!1};case`doctor-fix`:return{effects:[{verb:bx,args:[i,e.check]}],active:!1};case`layout-op`:return{effects:[{verb:hx,args:[i,e.key,Zh(e.op)]}],active:!1};case`dual`:{let a=aO(e,r),{effects:o,active:s}=dO(a,t,n,r,i);return a===e.durable?{effects:o.map(t=>({...t,args:[...t.args,e.sessionKey]})),active:s}:{effects:o,active:s}}case`do`:{let a=dO(e.head,t,n,r,i);return{effects:[...a.effects,...e.rest.flatMap(e=>dO(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:hx,args:[i,e.key,Zh(r)]}],active:!1}}}}function fO(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:Qo(`action "${e}"`,n,t.members.length,uO(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 pO(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}=fO(e,aO(r,i),t,i),{effects:s,active:c}=dO(r,a,o,i,sO(i,`session.id`));return lO(a,Cx(s),c)}function mO(e){return{action:{fn:(t,...n)=>pO(t,n,e),argTypes:[`string`,`string`],returnType:`T`}}}function hO(e,t){return lO(`✕`,Cx([{verb:ax,args:[sO(e,`session.id`),t,Yo]}]),!1)}function gO(e,t,n){return new z({bgcolor:P.fromRgba(t),color:P.fromRgba(Zc(e,t,n))})}function _O(e,t,n){return gO(e.palette,ul(e.palette,e.disclosure,[t],n),n)}function vO(e,t,n,r,i){return r===void 0?n=>_O(e,{...n,distribution:t},i):(e,t)=>yO(r(t,n),i)}function yO(e,t){let n=Vc(e,`background`);return new z({bgcolor:P.fromRgba(n),color:P.fromRgba(qn(Vc(e,`primary`),n,4.5,t))})}function bO(e){return{current:null,drawnAt:e}}function xO(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 SO(e){return new V(e).cellLength}function CO(e){return Math.max(1,xE(e.store.read(`term.cols`))-WS(e.stripStyle)-2*e.padding)}function wO(e){return Math.max(1,CO(e)-(SO(`✕`)+2*e.padding+e.seamCols))}function TO(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 EO(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.noWrap=t,r.end=``,r}function DO(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 OO(e,t,n){let r=e.compiled.get(t),i=r&&aO(r,e.store);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 kO(e,t,n,r,i,a,o){let s=OO(a,e,`picker`),c=a.compiled.get(e),l=a.store,u=sO(l,`session.id`),d=`stateVar`in s?sO(l,s.stateVar):void 0,f=s.options.map(SO),p=i?CO(a):1/0,m=SO(`✕`)+1,h=SO(`←`)+1+SO(`→`)+1,g=TO(f,p,m),_=g.length>1?TO(f,p,m+h):g,v=parseInt(sO(l,t.stateVar),10),y=Number.isInteger(v)?Math.max(0,Math.min(v,_.length-1)):0,b=_[y]??[],x=e=>Cx([{verb:ax,args:[u,t.key,String(e)]}]),S=n.flatMap(([e,t])=>[e,t]),C=Cx([{verb:ax,args:[u,...S]}]),ee=r?[{verb:ax,args:[u,...S]}]:[],te=e=>Cx([...dO(c,e,e,l,u).effects,...ee]),w=[lO(`✕`,C,!1)];y>0&&w.push(lO(`←`,x(y-1),!1));for(let e of b){let t=s.options[e];w.push(lO(t,te(t),t===d,o({index:e,count:s.options.length},t)))}return y<_.length-1&&w.push(lO(`→`,x(y+1),!1)),EO(w,i)}function AO(e,t){return{picker:{fn:(n,r,i,a)=>{let o=DO(e,r,`set-int`,`an int action ({ set, int: true })`);return kO(n,{key:o.key,stateVar:o.stateVar},[[o.key,`-1`]],i===!0,a===!0,e,vO(xO(t,`{{ picker }}`),Fc(void 0),e.basePalette,OO(e,n,`picker`).paletteOf,t.drawnAt()))},argTypes:[`string`,`string`,`bool`,`bool`],returnType:`T`}}}function jO(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+SO(e(-(s+1)))+1+SO(e(s+1))+1;if(t>r)break;o=t,s+=1}return s}function MO(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=sO(a,`session.id`),{options:c}=t,l=c.length,u=sO(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=Cx(dO(o,p(e),p(e),a,s).effects);return m.set(e,n),n},g=e=>lO(p(e),h(e),p(e)===u,r({index:f(e),count:l},p(e))),_=jO(p,l,SO(`◀`)+1+SO(p(0))+1+SO(`▶`),wO(n),i),v=e=>Array.from({length:_},(t,n)=>g(e*(n+1)));return EO([...v(-1).reverse(),lO(`◀`,h(-1),!1),g(0),lO(`▶`,h(1),!1),...v(1)],!0)}function NO(e,t){return{carousel:{fn:(n,r,...i)=>{if(i.length>0)throw Error(`carousel "${n}": takes at most one neighbours count after the action name, got ${1+i.length}`);if(r!==void 0&&!(Number.isInteger(r)&&r>=0))throw Error(`carousel "${n}": neighbours must be a whole number ≥ 0 (0 shows only ◀ CURRENT ▶), got ${String(r)}`);let a=r??1/0,o=OO(e,n,`carousel`);return MO(n,o,e,vO(xO(t,`{{ carousel }}`),Fc(void 0),e.basePalette,o.paletteOf,t.drawnAt()),a)},argTypes:[`string`,`float`],returnType:`T`}}}const PO=[`~/code`,`main`,`opus`,`42%`,`5m`,`$1.20`];function FO(e,t){let n=rl(e,{hue:Oc,depth:0},t);return[Ac.map((t,n)=>({text:PO[n%PO.length],colour:Hc(e,t)})),[{text:`▾ open`,colour:n.state},{text:`menu`,colour:n.plane}],[{text:`warn`,colour:Vc(e,`warning`)},{text:`error`,colour:Vc(e,`error`)}]]}function IO(e,t,n){let r=FO(e,t).flatMap((n,r)=>n.map(({text:n,colour:i},a)=>({gap:r>0&&a===0?` `:``,cell:new V(` ${n} `,{style:gO(e,i,t)})}))),i=[],a=0;for(let{gap:e,cell:t}of r){if(a+=e.length+t.cellLength,a>n)break;e!==``&&i.push(new V(e)),i.push(t)}let o=V.fromFragments(i);return o.noWrap=!0,o.end=``,o}function LO(e,t){return{themePreview:{fn:()=>IO(e.palette,t.drawnAt(),wO(e)),argTypes:[],returnType:`T`}}}const RO=e=>e.slice(e.lastIndexOf(`.`)+1),zO=(e,t)=>{let n=new V(RO(e));return n.truncate(t,{marker:`…`}),n.plain};function BO(e,t){let n=e.map(e=>e.map(({name:e})=>SO(RO(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 VO(e,t,n){let r=BO(e,n),i=e.map(e=>{let i=[],a=0;for(let{name:o,address:s,palette:c}of e){let e=new V(` ${zO(o,r)} `,{style:gO(c,ml(c,{kind:`bar`,address:s},t).tint,t)});if(a+=e.cellLength,a>n)break;i.push(e)}return i}),a=V.fromFragments(i.flatMap((e,t)=>t===0?e:[new V(`
179
+ `),...e]));return a.noWrap=!0,a.end=``,a}function HO(e,t){return{layoutPreview:{fn:()=>VO(e.layout(),t.drawnAt(),wO(e)),argTypes:[],returnType:`T`}}}const UO=Symbol(`cc-candybar.menuDrop`);function WO(e){return e.flatMap(e=>e[UO]??[])}function GO(e,t,n,r){let i=r.activeSegment.current;if(i===null)throw Error(`{{ menu }} rendered with no active segment placement — the render walk must publish one before evaluating a segment template`);let a=r.action,o=Th(i.segName,e,n.key),s=Oh(o),c=wh(e),l=sO(a.store,o)===c,u=sO(a.store,`session.id`),d=l?Yo:c,f=lO(Qo(`{{ menu "${e}" }}`,t,2,+!!l),Cx([{verb:ax,args:[u,o,d,s,`0`]}]),!1);return f[UO]=l?[kO(e,{key:s,stateVar:s},[[o,Yo],[s,`0`]],n.closeOnPick,n.paged,a,vO(i,n.distribution,a.basePalette,OO(a,e,`menu`).paletteOf,r.activeSegment.drawnAt()))]:[],f}const KO=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function qO(e,t){let n=t[t.length-1],r=KO(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:Mh(r??{})}}function JO(e){return{menu:{fn:(t,...n)=>{let{displays:r,options:i}=qO(t,n);return GO(t,r,i,e)},argTypes:[`string`,`value`],returnType:`T`}}}function YO(e){let{value:t,max:n,width:r,filled:i,empty:a,colourAt:o}=e,s=XO(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.noWrap=!0,l}function XO(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 ZO(e){let t={fn:(()=>{let t=xO(e,`{{ bgOf }}`);if(t.bg===void 0)throw Error(`{{ bgOf }} is not available while segments.${t.segName}'s own "bg:" is being evaluated — the background is what that template computes. Reach for a palette color there instead, e.g. bg: '{{ darken (color "surface") 1 }}'.`);return t.bg.hex}),argTypes:[],returnType:`string`},n={fn:(()=>xO(e,`{{ tint }}`).tint.hex),argTypes:[],returnType:`string`},r=KE(()=>xO(e,`{{ color }} / {{ ramp }} / {{ gauge }}`).palette),i={fn:((e,t,n,i,a,o,...s)=>YO({value:e,max:t,width:n,filled:i,empty:a,colourAt:o===void 0||s.length===0?void 0:e=>String(r.ramp.fn(e,o,...QO(s)))})),argTypes:[`float`,`float`,`int`,`string`,`string`,`string`,`string`],returnType:`T`};return{...r,bgOf:t,tint:n,gauge:i}}function QO(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 $O(e){let t=[],n=[];for(let r of e){if(!r.contains(`
179
180
  `)){n.push(r);continue}let e=r.split(`
180
- `);n.push(e[0]);for(let r=1;r<e.length;r++)t.push(n),n=[e[r]]}return t.push(n),t}function GO(e,t){switch(e){case`vertical`:return qO(t.flatMap(e=>e));case`horizontal`:{let e=t.find(e=>e[0]?.span===`row`);return e===void 0?t.reduce((e,t)=>Math.max(e,t.length),0)===0?[]:[{cells:t.flatMap(e=>e[0]?.cells??[]),band:`own`,span:`shared`},...t.flatMap(e=>e.slice(1))]:qO(e)}}}function KO(e,t){let n=(e,r)=>t(e)?e.kind===`segment`?[{cells:[{name:e.name,address:r}],band:`own`,span:`shared`}]:GO(e.direction,e.children.map((t,i)=>n(t,[...r,JO(e,i)]))):[];return n(e,[]).map(e=>[...e.cells])}function qO(e){return e.map(e=>e.span===`row`?{...e,span:`shared`}:e)}function JO(e,t){return{index:t,count:e.children.length,distribution:e.distribution,axis:Ga[e.direction]}}const YO={container:{compile(e,t){return{kind:`container`,direction:e.direction,when:t.when,distribution:kc(e.distribution),children:e.children.map((e,n)=>t.compileChild(e,`${t.path}.children[${n}]`))}},render(e,t){return GO(e.direction,e.children.map((n,r)=>t.renderChild(n,t.visible,JO(e,r))))}},segment:{compile(e,t){return{kind:`segment`,when:t.when,name:e.name,...e.opens!==void 0&&{opens:{open:t.parse(Yo(e.opens.ref),`opens`),body:t.compileChild(e.opens.body,`${t.path}.opens.body`),key:e.opens.ref.key,placement:e.opens.placement}}}},render(e,t){let n=t.lookupSegment(e.name);if(!n)throw Error(`Layout segment "${e.name}" has no matching segment`);let{seg:r,compiled:i}=n;if(!t.visible)return[];try{if(!OD(i.when,t.scope))return[];let n=i.palette??t.palette,a=t.enterSegment(e.name,n,t.region,i.bg,i.fg),o=i.template.evaluate(t.scope),s=t.exitSegment(o),c=e.opens!==void 0&&OD(e.opens.open,t.scope),l=s.length>0||c?a.trigger:a.closed,u={width:r.width??`auto`,justify:r.justify??`left`,truncate:r.truncate??`right`,baseStyle:l,padding:t.padding},d=e.opens===void 0?[]:t.renderBody(e.opens.body,c,a.disclosure),f=d.slice(0,+(e.opens?.placement===`inline`)),p=d.slice(f.length),m=e.opens!==void 0&&p.some(e=>e.band===`own`)?PD(RD([t.closeDisclosure(e.opens.key)],a.trigger),{...u,width:`auto`,baseStyle:a.trigger}):[],h=e=>e.band===`own`?m:[],g=p.map(e=>({cells:[...h(e),...e.cells],band:`deeper`,span:`shared`})),_=WO(RD(o,l)).map(e=>({cells:PD(e,u),band:`own`,span:`shared`})),v=s.map(e=>({cells:PD(RD([e],a.band),{...u,baseStyle:a.band}),band:`deeper`,span:`shared`})),y=[..._,...v];return t.perSegmentSink!==void 0&&t.perSegmentSink.set(e.name,[...y.flatMap(e=>e.cells),...p.flatMap(h)]),[...y.map((e,t)=>t===0&&f.length>0?{cells:[...e.cells,...f.flatMap(e=>e.cells)],band:`own`,span:`row`}:e),...g]}catch(n){let r=n.message??String(n);t.onSegmentError?.(e.name,r);let i=r.replace(/\s*\n\s*/g,` `);return[{cells:[new V(`⚠ ${e.name}: ${i}`,{end:``,noWrap:!0})],band:`own`,span:`shared`}]}}}};function XO(e){return YO[e]}function ZO(e){if(`ttl`in e)return{kind:`ttl`,durationMs:dD(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 QO(e,t){switch(Ya(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 $O(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:ZO(n.cache),parse:QO(n.parse,n.default)});break;case`shell`:e.declareShell(t,n.command,{cache:ZO(n.cache),parse:QO(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?dD(n.cache.ttl):void 0,varDefault:n.default});break;case`git`:e.declareGit(t,{field:n.field,cwd:r,varDefault:n.default});break;case`state`:e.declareState(t,{key:n.key,...n.default!==void 0&&{varDefault:n.default}});break}}function ek(e,t){let n=ou.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}function tk(e,t,n){let r=n?.cwd??process.cwd(),i=Wv(e.globals.palette),a={store:t.variableStore,compiled:new Map,stripStyle:`powerline`,basePalette:i,palette:i,padding:1,seamCols:zS({style:`powerline`,charset:NS}),layout:()=>[]},o=dO(t.drawnAt),s={action:a,activeSegment:o},c=Object.keys(e.looks),l=Xh(e.presets),u=new Map([...qv(e),..._g(e)]),d=nD({...aO(a),...xO(a,o),...wO(a,o),...OO(a,o),...NO(a,o),...zO(s),...HO(o),looks:{fn:()=>c,argTypes:[]},presets:{fn:()=>l,argTypes:[]}},n?.clock,t.drawnAt),f=ek(d,e.helpers),p=e=>d.parse(e,f),m=new Map;for(let[t,n]of Object.entries(e.variables))n.kind===`state`&&!m.has(n.key)&&m.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`&&!m.has(r.key)&&m.set(r.key,`${t}.${e}`);a.compiled=qD(p,e.actions,m,u);let h=[];for(let[n,i]of Object.entries(e.variables))try{$O(t,n,i,r)}catch(e){h.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{$O(t,`${n}.${e}`,a,r)}catch(t){h.push(`Variable "${n}.${e}": ${t.message??String(t)}`)}let g=Object.create(null);for(let[t,n]of Object.entries(e.segments)){let e=(e,n)=>{try{return p(e)}catch(e){throw Error(`Template parse error in segments.${t}.${n}: ${e.message}`,{cause:e})}};g[t]={when:n.when===void 0?void 0:e(n.when,`when`),template:e(n.template,`template`),bg:n.bg===void 0?void 0:e(n.bg,`bg`),fg:n.fg===void 0?void 0:e(n.fg,`fg`),palette:n.palette===void 0?void 0:Lv(n.palette)}}let _=(e,t,n)=>{try{return p(e)}catch(e){throw Error(`Template parse error in ${t}.${n}: ${e.message}`,{cause:e})}},v=(e,t)=>{let n={path:t,when:e.when===void 0?void 0:_(e.when,t,`when`),parse:(e,n)=>_(e,t,n),compileChild:v};return XO(e.kind).compile(e,n)},y=new Map;for(let t of l){let{node:n,path:r}=$h(e,t);y.set(t,v(n,r))}let b=new Map;for(let t of H){let n=e.globals[t];Ni(n)&&b.set(t,nk(p,t,n))}return{segments:g,roots:y,activeSegment:o,menuRuntime:s,globalExpressions:b,loadWarnings:h}}function nk(e,t,n){try{return e(n)}catch(e){throw Error(`globals.${t} is not a valid template: ${e instanceof Error?e.message:String(e)}`)}}function rk(e,t,n){let r=e.globalExpressions.get(t);if(r===void 0)throw Error(`globals.${t} is an expression but no compiled template exists — registerDslConfig and the resolution disagree about isExpression`);return r.evaluate(n).map(e=>e.plain).join(``)}function ik(e,t){return e.kind===`decided`?e.name:t}function ak(e,t,n,r,i,a,o,s){let{perSegmentSink:c,onSegmentError:l,onRenderWarning:u}=o??{};r.drawAt(Gi(a.colorCompatibility));let{preset:d=Jh}=s??{},f=s?.look??Ri(`none`,e.looks),p=s?.theme??Hv(void 0,null,e.globals.palette),m=(e,t)=>({...i,term:{cols:a.width},theme:{effective:e},look:{effective:t}});r.applyInput(m(ik(p,Oi),ik(f,Ii))),t.menuRuntime.action.stripStyle=a.style,t.menuRuntime.action.padding=a.padding,t.menuRuntime.action.seamCols=zS(a);let h=rD(n),g=Fi(p,()=>rk(t,`palette`,h),e=>Vv(e,e=>u?.(e))),_=Fi(f,()=>rk(t,`look`,h),t=>Ri(t,e.looks));(g!==p||_!==f)&&r.applyInput(m(g.name,_.name));let v=g.value;t.menuRuntime.action.basePalette=v;let y=zv(v,_.value);t.menuRuntime.action.palette=y,c?.clear();let b=n=>{let r=e.segments[n],i=t.segments[n];return r!==void 0&&i!==void 0?{seg:r,compiled:i}:void 0},x=(e,n,i,a,o)=>{let s=r.drawnAt(),{tint:c,disclosure:l}=cl(n,i,s);return{closed:UD(t.activeSegment,e,n,l,c,a,o,h),get trigger(){return sO(n,Zc(n,l,s).state,s)},get band(){return sO(n,Zc(n,l,s).plane,s)},disclosure:l}},S=e=>(t.activeSegment.current=null,FO(e)),C=(e,t,r)=>{let i=t&&OD(e.when,h),o={scope:h,palette:y,visible:i,padding:a.padding,region:r,perSegmentSink:c,onSegmentError:l,enterSegment:x,exitSegment:S,lookupSegment:b,renderChild:(e,t,n)=>C(e,t,ol(r,n)),renderBody:(e,t,n)=>C(e,i&&t,sl(n)),closeDisclosure:e=>oO(n,e)};return XO(e.kind).render(e,o)},ee=t.roots.get(d);if(ee===void 0)throw Error(`Preset "${d}" has no compiled layout — registerDslConfig compiles one per declared preset and effectivePresetName collapses unknown names to "${Jh}"; a miss here is merge/policy drift (have: ${[...t.roots.keys()].join(`, `)})`);let te=e=>{if(!OD(e.when,h))return!1;if(e.kind===`container`)return!0;if(e.name.startsWith(`edit.`))return!1;try{return OD(t.segments[e.name].when,h)}catch{return!0}};return t.menuRuntime.action.layout=()=>KO(ee,te).map(e=>e.map(e=>({...e,palette:t.segments[e.name].palette??y}))),C(ee,!0,al).map(e=>BS(LD(e.cells,a),a)).join(`
181
- `)}var ok=class{kind=`box`;cell;lastChangedAt;constructor(e,t,n){this.name=e,this.type=t,fk(e,t,n,`initial value`),this.cell=lE.observable.box(n,{deep:!1}),this.lastChangedAt=Date.now()}read(){return this.cell.get()}set(e){fk(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}},sk=class{kind=`computed`;cell;constructor(e,t,n){this.name=e,this.type=t,this.cell=(0,lE.computed)(()=>{let e=n();return fk(this.name,this.type,e,`computed result`),e},{keepAlive:!0})}read(){return this.cell.get()}lastUpdatedMs(){return null}},ck=class{kind=`document`;cell;lastChangedAt;constructor(e,t){this.name=e,this.cell=lE.observable.box(dk(t),{deep:!1}),this.lastChangedAt=Date.now()}read(){return this.cell.get()}set(e){let t=dk(e);uk(this.cell.get(),t)||(this.cell.set(t),this.lastChangedAt=Date.now())}lastUpdatedMs(){return this.lastChangedAt}};function lk(e){return JSON.stringify(e)}function uk(e,t){return lk(e)===lk(t)}function dk(e){return e.kind===`ok`?{kind:`ok`,value:uE(e.value)}:e}function fk(e,t,n,r){let i=dE(n);if(i!==t)throw TypeError(`Variable "${e}": ${r} type ${i} does not match declared type ${t}`)}var pk=class{nodes=new Map;defineBox(e,t,n){this.assertNotDefined(e),this.nodes.set(e,new ok(e,t,n))}defineDocument(e,t){this.assertNotDefined(e),this.nodes.set(e,new ck(e,t))}defineComputed(e,t,n){this.assertNotDefined(e);let r=e=>this.read(e);this.nodes.set(e,new sk(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,lE.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,lE.runInAction)(()=>n.set(t))}runInAction(e){(0,lE.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 lk(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 mk(e,t,n){return e+`\0`+t+`\0`+(n??``)}function hk(e,t){return new Set(Xh(e.presets).filter(n=>$h(e,n).path===`root`?t.root!==void 0:t.presets?.[n]?.root!==void 0))}function gk(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 _k(e,t){let n=new Map;for(let t of Ty(e.projectDir,e.cwd,e.configFile)){let{dir:e,name:r}=gk(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 vk(e){return e.filter(Boolean).join(`
182
- `)||null}var yk=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=mk(e,t,n),i=this.entries.get(r);if(i)return this.entries.delete(r),this.entries.set(r,i),i;let a=this.loadFromDisk(e,t,n),o={projectDir:e,cwd:t,configFile:n,configFilePath:null,lastError:a.error,lastWarning:a.warning,state:a.state??this.buildState(t,null,[]),watcher:null,watcherKey:null};if(this.entries.set(r,o),this.entries.size>this.maxEntries){let e=this.entries.entries().next().value;if(e!==void 0){let[t,n]=e;n.state.registry.dispose(),n.state.validatorDisposers.forEach(e=>e()),n.watcher?.release(),this.entries.delete(t)}}return this.refreshWatcher(o,a.resolvedPath),this.observers.onReload?.(o),o}reloadInto(e){let t=this.loadFromDisk(e.projectDir,e.cwd,e.configFile);e.lastWarning=t.warning,e.lastError=t.error,t.state!==null&&(e.state.registry.dispose(),e.state.validatorDisposers.forEach(e=>e()),e.state=t.state),this.refreshWatcher(e,t.resolvedPath),this.observers.onReload?.(e)}loadFromDisk(e,t,n){let r=Dy(e,t,n),i=r.kind===`file`?r.path:null,a=[jy(e,t),ky(r)],o;try{o=this.buildState(t,i,a)}catch(e){return e instanceof za&&a.push(...e.warnings),{resolvedPath:i,warning:vk(a),state:null,error:e instanceof za||e instanceof Error?e.message:String(e)}}return{resolvedPath:i,warning:vk(a),state:o,error:null}}buildState(e,t,n){let{config:r,raw:i,source:a,warnings:o}=My(t,oE);n.push(...o);let s=Fy(r,t??`<default>`,a),c=new pk,l=new DD(c,s.globals.default_empty_value??``,this.deps.gitService,this.deps.sessionState),u,d=[];try{u=tk(s,l,{cwd:e}),n.push(...u.loadWarnings);for(let{key:e,spec:t}of KC(s))d.push(zC(e,t));for(let{key:e,spec:t}of OC(s))d.push(kC(e,t))}catch(e){for(let e of d)e();throw l.dispose(),e}return{config:s,store:c,registry:l,compiled:u,neededInputPaths:zT(s),lastRenderCellsBySegment:new Map,validatorDisposers:d,authoredRoots:hk(r,i)}}refreshWatcher(e,t){e.configFilePath=t;let n=_k(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){Y(`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 bk=16384;var xk=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<bk){this.rollingTimestamps.push(e);return}this.rollingTimestamps[this.rollingHead]=e,this.rollingHead=(this.rollingHead+1)%bk}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:bx,protocolVersion:3,startedAt:this.startedAt.toISOString(),uptimeSec:Math.floor((Date.now()-this.startedAt.getTime())/1e3),rssBytes:t.rss,heapUsedBytes:t.heapUsed,heapTotalBytes:t.heapTotal,externalBytes:t.external,arrayBuffersBytes:t.arrayBuffers,requests:{total:this.requestsTotal,errored:this.requestsErrored,timedOut:this.requestsTimedOut,inFlight:this.inFlight},gitCache:e.gitCache,usageCache:e.usageCache,renderCache:{size:e.renderCacheSize},watchers:{active:e.watchersActive,opened:this.watchersOpened,closed:this.watchersClosed,evicted:this.watchersEvicted},subprocesses:this.snapshotSubprocesses(),nextRestartReason:e.nextRestartReason??null}}};const Sk={load:()=>({}),save:()=>{},flush:()=>{}};function Ck(e){let t=new Map;for(let[n,r]of Object.entries(e))t.set(n,new Map(Object.entries(r)));return t}var wk=class{sessions;storage;atom=(0,lE.createAtom)(`SessionState`);constructor(e=Sk,t=256){this.maxSessions=t,this.storage=e,this.sessions=new Map,this.hydrateFromStorage()}useStorage(e){this.storage=e,this.hydrateFromStorage()}hydrateFromStorage(){this.sessions=Ck(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,lE.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,lE.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,lE.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 Tk=(e,t)=>D(t);function Ek(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 Dk=class{timer=null;pending=null;constructor(e,t=500,n=Tk){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 Ek(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 Ok={default_bg:`string`,default_fg:`string`,default_empty_value:`string`,default_separator:`string`,default_truncate_marker:`string`,palette:`string`,look:`string`,preset:`string`,style:`string`,autoWrap:`boolean`,padding:`number`,charset:`string`,updateNotice:`boolean`,colorCompatibility:`string`,menuGlyph:`string`},kk=new Set([`1`,`true`]),Ak=new Set([`0`,`false`,``]);function jk(e,t){let n=nA(e),r=n.scope===`globals`?Ok[n.field]:`string`;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(kk.has(t))return`true`;if(Ak.has(t))return`false`;throw Error(`persistValueText: "${e}" expects boolean-ish (1, 0, true, false), got "${t}"`)}function Mk(e){try{return r.readFileSync(e,`utf8`)}catch(e){if(e.code===`ENOENT`)return null;throw e}}function Nk(e,t,n){try{if(t===null){r.rmSync(e,{force:!0});return}r.mkdirSync(c.dirname(e),{recursive:!0}),ke(e,t)}catch(t){let r=`config write failed (${e}): ${t.message}`;throw n(`error`,r),Error(r)}}function Pk(e){return/^\s*$/.test(e)?null:aa(e)}function Fk(e,t){return e!==null&&sa(e,t)!==void 0}function Ik(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(Ik),...i}}return e}function Lk(e){if(!Po(e))return Ik(e);let{rows:t,...n}=e;return{rows:Object.fromEntries(Object.entries(t).map(([e,t])=>[e,Ik(t)])),...n}}const Rk=iE,zk=Rk.segments,Bk=Rk.presets,Vk=Rk.root;function Hk(e,t,n,r){if(!Fk(e,t)&&n===void 0)throw new $(`cannot edit ${r}: neither the config file nor the bundled default declares ${t.join(`.`)}`)}function Uk(e,t){let n=ag(t);return t.scope===`segment-palette`&&Hk(e,[`segments`,t.segment],zk[t.segment],n.join(`.`)),n}function Wk(e){return aa(pa(e))}function Gk(){return Object.entries(Vk.rows).map(([e,t])=>{let n=Ik(t);return{path:[`root`],fragment:Wk({rows:{[e]:n}}),unit:{path:[`root`,`rows`,e],value:n}}})}function Kk(e,t){let n=e===null?void 0:sa(e,t);return n===void 0?null:{path:t,fragment:n,unit:null}}function qk(e,t){if(t===void 0)return null;let n=Lk(t);return{path:e,fragment:Wk(n),unit:{path:e,value:n}}}function Jk(e,t){let n=[`presets`,t],r=[...n,`root`],i=Bk[t];Hk(e,n,i,r.join(`.`));let a=Kk(e,r)??qk(r,i?.root);return a!==null&&Na(a.fragment)?a:null}function Yk(e,t){let n=Ma(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 Xk(e,t){return[...Gk(),Kk(e,[`root`]),Jk(e,t)].filter(e=>e!==null).reduce(Yk,new Map)}function Zk(e,t,n){for(let{node:r,...i}of Xk(e,t).values())if(Fa(r,n))return i;throw new $(`${Qk(e,t).join(`.`)} holds no segment "${n}" — the bar you clicked is stale; it reloads on the next render`)}function Qk(e,t){return Jk(e,t)?.path??[`root`]}function $k(e,t){return t.scope===`preset-root`?Qk(e,t.preset):ag(t)}function eA(e,{unit:t}){return t===null?e:Da(e,t.path,pa(t.value),da)}function tA(e){let t=ig(e);if(t===null)throw Error(`"${e}" is not a valid persist target`);return t}function nA(e){let t=tA(e);if(t.scope===`preset-root`)throw Error(`"${e}" names a layout, not a value`);return t}function rA(e,t){let n=nA(t),r=Pk(Mk(e)??``),i=r===null?void 0:sa(r,ag(n));return i!==void 0&&`value`in i?i.value:void 0}function iA(e,t,n,r){let i=nA(n),a=Mk(t);mA(e,t,{before:a,after:Da(a??``,Uk(Pk(a??``),i),jk(n,r),da)})}function aA(e,t,n){let r=tA(n),i=Mk(t);if(i===null)return;let a=Oa(i,$k(Pk(i),r));a!==i&&mA(e,t,{before:i,after:a})}function oA(e,t,n,r){let i=tA(n);if(i.scope!==`preset-root`)throw Error(`"${n}" is not a "presets.<name>.root" target`);let a=Mk(t),o=r.op===`remove`?r.target:r.anchor,s=Zk(Pk(a??``),i.preset,o),c=eA(a??``,s),l=r.op===`remove`?La(c,s.path,r.target):Ra(c,s.path,r.segment,r.anchor,r.relation);if(l===null)throw new $(`${s.path.join(`.`)} in ${t} has no segment "${o}" — the bar you clicked is stale; it reloads on the next render`);mA(e,t,{before:a,after:l})}const sA={past:[],future:[]};function cA(e){if(typeof e!=`object`||!e)return!1;let t=e;return(t.before===null||typeof t.before==`string`)&&typeof t.after==`string`}function lA(e){if(typeof e!=`object`||!e)return!1;let t=e;return Array.isArray(t.past)&&t.past.every(cA)&&Array.isArray(t.future)&&t.future.every(cA)}function uA(e){let t;try{t=r.readFileSync(e.historyPath,`utf8`)}catch(t){let n=t.code;return n!==`ENOENT`&&e.logger(`warn`,`config-edit-history read failed (${n}); starting empty`),{}}try{let e=JSON.parse(t);if(typeof e==`object`&&e&&!Array.isArray(e)&&Object.values(e).every(lA))return e}catch{}return e.logger(`warn`,`config-edit-history load: unexpected shape, starting empty`),{}}function dA(e,t){try{r.mkdirSync(c.dirname(e.historyPath),{recursive:!0}),ke(e.historyPath,JSON.stringify(t),384)}catch(t){let n=`config-edit-history write failed: ${t.message}`;throw e.logger(`error`,n),Error(n)}}function fA(e,t){let n=[...e,t];return n.length>50?n.slice(-50):n}function pA(e,t,n,r,i){Nk(t,n,e.logger);try{dA(e,r)}catch(e){throw Error(`${i} landed in ${t} but recording it failed — it is not undoable: ${e.message}`)}}function mA(e,t,n){let r=uA(e),{past:i}=r[t]??sA;pA(e,t,n.after,{...r,[t]:{past:fA(i,n),future:[]}},`edit`)}function hA(e,t){let n=uA(e),{past:r,future:i}=n[t]??sA,a=r[r.length-1];return a===void 0?null:(_A(t,a.after,`undo`),pA(e,t,a.before,{...n,[t]:{past:r.slice(0,-1),future:fA(i,a)}},`undo`),a)}function gA(e,t){let n=uA(e),{past:r,future:i}=n[t]??sA,a=i[i.length-1];return a===void 0?null:(_A(t,a.before,`redo`),pA(e,t,a.after,{...n,[t]:{past:fA(r,a),future:i.slice(0,-1)}},`redo`),a)}function _A(e,t,n){if(Mk(e)!==t)throw new $(`${n}: ${e} has changed since that edit — refusing to overwrite it`)}function vA(e){let t=Ee({bin:`tmux`,args:[`-S`,e.socket,`display`,`-p`,`-t`,e.pane,`#{client_termfeatures}`],timeoutMs:2e3,category:`doctor.tmux`});return t.ok?{kind:`ok`,value:t.stdout.trim().split(`,`).filter(e=>e!==``)}:{kind:`failed`,reason:`tmux display -p failed (${t.error??[t.reason,t.stderr.trim()].filter(e=>e!==``).join(`: `)})`}}function yA(){return{probeTmux:vA,claudeSettingsPath:xx()}}function bA(e){return r.existsSync(e.claudeSettingsPath)?r.readFileSync(e.claudeSettingsPath,`utf8`):``}function xA(e){if(/^\s*$/.test(e))return{};let t=fa.parse(e);if(typeof t!=`object`||!t||Array.isArray(t))throw Error(`not a JSON object`);let n=t.env;if(n===void 0)return{};if(typeof n!=`object`||!n||Array.isArray(n))throw Error("`env` is not an object");return n}function SA(e,t){return t===void 0?{kind:`unreported`}:t===null?{kind:`outside`}:{kind:`inside`,hint:t,termfeatures:e.probeTmux(t)}}function CA(e){try{return xA(bA(e))}catch(t){throw Error(`cannot read ${e.claudeSettingsPath}: ${t instanceof Error?t.message:String(t)}`,{cause:t})}}function wA(e,t){return{tmux:SA(e,t),claudeSettingsEnv:CA(e)}}function TA(e,t,n){switch(t.kind){case`claude-settings-env`:{let i=Da(bA(e),[`env`,t.name],JSON.stringify(t.value),fa);return r.mkdirSync(c.dirname(e.claudeSettingsPath),{recursive:!0}),ke(e.claudeSettingsPath,i),{...n,claudeSettingsEnv:CA(e)}}default:return t.kind}}function EA(e){if(!e)throw new $(`session id is required`);if(e.includes(`/`)||e.includes(`..`))throw new $(`invalid session id "${e}"`);return e}function DA(e){return OA(()=>decodeURIComponent(e))}function OA(e){try{return e()}catch(e){throw e instanceof URIError?new $(`malformed wire encoding: ${e.message}`):e}}function kA(e,t){let n=Ee({bin:`/usr/bin/pbcopy`,stdinInput:e,category:`click.pbcopy`});if(!n.ok){if(n.reason===`rate-limited`){t.dlog(`warn`,`click.pbcopy rate-limited: ${n.error??``}`);return}throw Error(`pbcopy failed (${n.reason}, exit ${n.exitCode??`null`})`)}}const AA=(e,t)=>kA(DA(e),t),jA=(e,t)=>{let n=Ee({bin:`/usr/bin/open`,args:[`-a`,`Visual Studio Code`,DA(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`})`)}},MA=(e,t)=>kA(DA(e),t),NA=(e,t)=>kA(DA(e),t),PA=(e,t)=>{let n=EA(DA(e));t.sessionState.get(n,`toolbar-expanded`)?t.sessionState.clear(n,`toolbar-expanded`):t.sessionState.set(n,`toolbar-expanded`,`1`)},FA=(e,t)=>{let[n=``,...r]=OA(()=>mx(e)),i=EA(n);if(r.length===0)throw new $(`set-state: <key>/<value> is required (have keys: ${RC().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: ${RC().join(`, `)})`);let a=[];for(let e=0;e<r.length;e+=2){let t=r[e],n=r[e+1];if(!t)throw new $(`set-state: empty key at pair ${e/2+1} (expected <sessionId>/<key>/<value>[/<key>/<value>...] segments)`);let i=BC(t,n);if(!i.ok)throw new $(`set-state: pair ${e/2+1}: ${i.reason}`);a.push({key:t,value:i.value})}t.sessionState.setBatch(i,a);let o=a.map(e=>`${e.key}=${e.value}`).join(` `);t.dlog(`info`,`set-state: ${o} (session=${i})`)},IA=/^-?\d+$/;function LA(e,t,n){return e>n?t:e<t?n:e}function RA(e,t){if(!e)return null;if(!RC().includes(e))throw new $(`${t}: unknown session key "${e}" to release (have: ${RC().join(`, `)})`);return e}function zA(e,t,n,r){e!==null&&(n.sessionState.clear(t,e),n.dlog(`info`,`${r}: released session key ${e} (session=${t})`))}const BA=(e,t)=>{let[n=``,r=``,i=``]=OA(()=>mx(e)),a=EA(n);if(!r)throw new $(`step-state: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!IA.test(i))throw new $(`step-state: delta must be an integer, got "${i}"`);let o=parseInt(i,10),s=VC(r);if(!s)throw new $(`step-state: key "${r}" is not a bounded (range) state key (have keys: ${RC().join(`, `)})`);let c=t.sessionState.get(a,r),l=c&&IA.test(c)?Math.max(s.min,Math.min(s.max,parseInt(c,10))):s.seed,u=LA(l+o,s.min,s.max),d=BC(r,String(u));if(!d.ok)throw new $(`step-state: ${d.reason}`);t.sessionState.set(a,r,d.value),t.dlog(`info`,`step-state: ${r} ${l}→${d.value} (by ${o}, session=${a})`)},VA=`render-origin`;function HA(e){return JSON.stringify(e)}function UA(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 WA(e,t){let n=e.sessionState.get(t,VA);if(n===null)throw new $(`session ${t} has not rendered yet — no config file to write`);let r=UA(n);return Oy(r.projectDir,r.cwd,r.configFile??void 0)}function GA(e){return{historyPath:ze(),logger:e.dlog}}const KA=(e,t)=>{let[n=``,r=``,i=``,a=``]=OA(()=>mx(e)),o=EA(n);if(!r)throw new $(`set-config: <key>/<value> is required (have keys: ${bC().join(`, `)})`);let s=xC(r,i);if(!s.ok)throw new $(`set-config: ${s.reason}`);let c=RA(a,`set-config`),l=WA(t,o);iA(GA(t),l,r,s.value),t.dlog(`info`,`set-config: ${r}=${s.value} → ${l} (session=${o})`),zA(c,o,t,`set-config`)},qA=(e,t)=>{let[n=``,r=``,i=``,a=``]=OA(()=>mx(e)),o=EA(n);if(!r)throw new $(`step-config: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!IA.test(i))throw new $(`step-config: delta must be an integer, got "${i}"`);let s=parseInt(i,10),c=RA(a,`step-config`),l=SC(r);if(!l)throw new $(`step-config: key "${r}" is not a bounded (range) config key (have keys: ${bC().join(`, `)})`);let u=WA(t,o),d=rA(u,r),f=typeof d==`number`?Math.max(l.min,Math.min(l.max,d)):l.seed,p=LA(f+s,l.min,l.max),m=xC(r,String(p));if(!m.ok)throw new $(`step-config: ${m.reason}`);iA(GA(t),u,r,m.value),t.dlog(`info`,`step-config: ${r} ${f}→${m.value} (by ${s}) → ${u} (session=${o})`),zA(c,o,t,`step-config`)},JA=(e,t)=>{let[n=``,r=``]=OA(()=>mx(e)),i=EA(n);if(!r||!bC().includes(r))throw new $(`reset-config: unknown config key "${r}" (have: ${bC().join(`, `)})`);let a=WA(t,i);aA(GA(t),a,r),t.dlog(`info`,`reset-config: ${r} ← ${a} (session=${i})`)},YA=(e,t)=>{let[n=``,r=``,i=``]=OA(()=>mx(e)),a=EA(n);if(!r)throw new $(`apply-layout-op: <key>/<op> is required (have: ${bC().join(`, `)})`);let o=xC(r,i);if(!o.ok)throw new $(`apply-layout-op: ${o.reason}`);let s=Kh(o.value);if(s===null)throw new $(`apply-layout-op: "${o.value}" is not a layout op token`);let c=WA(t,a);oA(GA(t),c,r,s),t.dlog(`info`,`apply-layout-op: ${r} ${o.value} → ${c} (session=${a})`)},XA=(e,t)=>{let[n=``]=OA(()=>mx(e)),r=EA(n),i=WA(t,r);if(hA(GA(t),i)===null)throw new $(`undo: history is empty, nothing to undo`);t.dlog(`info`,`undo: ${i} (session=${r})`)},ZA=(e,t)=>{let[n=``]=OA(()=>mx(e)),r=EA(n),i=WA(t,r);if(gA(GA(t),i)===null)throw new $(`redo: nothing to redo`);t.dlog(`info`,`redo: ${i} (session=${r})`)},QA=(e,t)=>{EA(DA(e)),t.applyUpdate()},$A=`client-hints`;function ej(e,t){let n=e.sessionState.get(t,$A);if(n===null)throw new $(`session ${t} has not rendered yet — no client facts to diagnose`);let r;try{r=JSON.parse(n)}catch{throw new $(`client hints record is not JSON: ${n}`)}if(typeof r!=`object`||!r)throw new $(`client hints record is not an object: ${n}`);return Hy(r)}function tj(e,t,n){let r=kg(n);e.sessionState.setBatch(t,Mg(r)),e.dlog(`info`,`doctor: ${r.map(e=>`${e.check.name}=${e.verdict.ok?`ok`:`failed`}`).join(` `)} (session=${t})`)}const nj=(e,t)=>{let n=EA(DA(e));tj(t,n,wA(t.doctor,ej(t,n).tmux))},rj=(e,t)=>{let[n=``,r=``]=OA(()=>mx(e)),i=EA(n),a=Ag(r);if(a===void 0)throw new $(`doctor-fix: unknown check "${r}"`);let o=wA(t.doctor,ej(t,i).tmux),s=a.probe(o);if(s.ok||s.fix===void 0)throw new $(`doctor-fix: ${a.label} — ${s.ok?`nothing to fix`:s.reason}`);let c=TA(t.doctor,s.fix,o);t.dlog(`info`,`doctor-fix: ${a.name} → ${s.fix.kind} ${s.fix.name}=${s.fix.value} (session=${i})`),tj(t,i,c)},ij=`config-override`,aj=new Map([[$b,AA],[`load-config`,(e,t)=>{let n=e.indexOf(`/`);if(n===-1)throw new $(`load-config: expected <sessionId>/<path> (missing separator)`);let r=EA(OA(()=>decodeURIComponent(e.slice(0,n)))),i=OA(()=>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,ij),t.dlog(`info`,`load-config: override cleared (session=${r})`)):(t.sessionState.set(r,ij,i),t.dlog(`info`,`load-config: ${i} (session=${r})`))}],[ex,jA],[Zb,FA],[Qb,BA],[ix,KA],[ax,qA],[ox,JA],[sx,YA],[cx,XA],[lx,ZA],[nx,MA],[rx,NA],[tx,PA],[ux,QA],[dx,nj],[fx,rj]]),oj=new Set([Zb,Qb,ix,ax,ox,sx,cx,lx,tx,ux,dx,fx]),sj=(e,t)=>{let n=[],r=!1,i=null;for(let{verb:a,value:o}of _x(gx(e))){if(!i&&oj.has(a)){let e=mx(o);e.length>0&&e[0]&&(i=e[0])}let e=aj.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(`
183
- `));let e=`dispatch: ${n.join(`; `)}`;throw r?Error(e):new $(e)}},cj=new Map([...aj,[Xb,sj]]);Object.freeze([...cj.keys()]);const lj=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`]),uj=[[`session_id`,`string`],[`transcript_path`,`string`],[`cwd`,`string`],[`model`,`object`],[`model.id`,`string`],[`model.display_name`,`string`],[`workspace`,`object`],[`workspace.current_dir`,`string`],[`workspace.project_dir`,`string`]];function dj(e){let t={missingRequired:[],typeMismatches:[],unknownTopLevelFields:[]},n=typeof e==`object`&&e&&!Array.isArray(e)?e:{};for(let[e,r]of uj){let i=pj(n,e);if(i==null)t.missingRequired.push(e);else{let n=fj(i);n!==r&&t.typeMismatches.push({path:e,expected:r,got:n})}}for(let e of Object.keys(n))lj.has(e)||t.unknownTopLevelFields.push(e);return{data:e,report:t}}function fj(e){return Array.isArray(e)?`array`:typeof e==`string`&&!e.isWellFormed()?`ill-formed string`:typeof e}function pj(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 mj(e,t){switch(e){case`vars`:return{what:e,vars:hj(t)};case`segments`:return{what:e,segments:bj(t)};case`config`:return{what:e,config:Cj(t)}}}function hj(e){if(e===null)return[];let{store:t,registry:n,config:r}=e,i=vj(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,...gj(r),lastError:a===void 0?null:{timestampMs:a.timestamp,message:a.message},ageMs:_j(r.lastUpdatedMs())})}return o}function gj(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 _j(e){return e===null?null:Math.max(0,Date.now()-e)}function vj(e){let t=new Map;for(let[n,r]of Object.entries(e.variables))t.set(n,yj(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}`,yj(i));return t}function yj(e){return e.kind}function bj(e){if(e===null)return[];let{store:t,config:n,lastRenderBySegment:r}=e,i=new Set(t.names()),a=xj(n),o=[];for(let e of a){let t=n.segments[e];t&&o.push({name:e,description:t.description??null,template:t.template,referencedVars:Sj(t.template,i),lastRender:r.get(e)??null})}return o}function xj(e){let t=[],n=new Set;for(let r of qa(Lo(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 Sj(e,t){let n=new Set;for(let r of $v(e)){if(t.has(r)){n.add(r);continue}let e=r.split(`.`);for(;e.length>1;){e.pop();let r=e.join(`.`);if(t.has(r)){n.add(r);break}}}return Array.from(n).sort()}function Cj(e){return e===null?null:e.config}const wj=[`vars`,`segments`,`config`];function Tj(e){return typeof e==`string`&&wj.includes(e)}function Ej(e){return Math.max(1,e-2)}var Dj=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 sT(e);if(n.length===0)return D(`No entries in transcript`),Z;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})`),X({totalTokens:n,maxTokens:t,...this.ratioPercentages(n,t)})}return D(`No main chain entries with usage data found`),Z}catch(e){return Q(`context transcript: ${e instanceof Error?e.message:String(e)}`)}}async getContextInfo(e){let t=this.calculateContextFromHookData(e);if(t)return X(t);let n=e.context_window?.context_window_size??2e5;return this.calculateContextTokensFromTranscript(e.transcript_path,n)}},Oj=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=Ww(t);if(n&&r!==0&&n.cursor.mtimeMs===r)return this.touch(e,n),{kind:`ok`,value:n.value};let i=await dT(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 kj={messageCount:0,recent:[]};function Aj(e,t){if(t.isSidechain)return e;let n=[...e.recent,t];return{messageCount:e.messageCount+ +!!aT(t),recent:n.length>20?n.slice(-20):n}}function jj(e){let t=null,n=null;for(let r of e){let e=r.type||r.message?.role||r.message?.type;if(aT(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 Mj=class{fold=new Oj(kj,Aj);async getMetricsInfo(e,t){if(D(`Getting metrics from hook data for session: ${e}`),!t.cost)return Z;let n=await this.fold.read(e,t.transcript_path);return n.kind===`failed`?Q(`metrics (${e}): ${n.reason}`):X({responseTime:t.cost.total_api_duration_ms/1e3,lastResponseTime:jj(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 Nj={command:null,todos:[],pending:[],done:[]};function Pj(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 Fj(e,t){if(t.isSidechain)return e;let n=aT(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=Pj(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 Ij(e){return{command:e.command,todos:e.todos,running:e.pending.reduce((e,t)=>Pj(e,t.name),[]),done:e.done}}var Lj=class{fold=new Oj(Nj,Fj);async getActivityInfo(e,t){let n=await this.fold.read(e,t.transcript_path);return n.kind===`failed`?Q(`activity (${e}): ${n.reason}`):X(Ij(n.value))}};const Rj=new Map;function zj(e){if(!e)return``;let t=e.indexOf(`,`);return t<0?e:e.slice(0,t)}var Bj=class{async getSessionId(){if(!process.env.TMUX_PANE)return Z;let e=zj(process.env.TMUX),t=Rj.get(e);if(t!==void 0)return t;D(`Getting tmux session ID, TMUX_PANE: ${process.env.TMUX_PANE}`);let n=await Te({bin:`tmux`,args:[`display-message`,`-p`,`#S`],timeoutMs:1e3,category:`tmux`}),r=n.ok?n.stdout.trim()?X(n.stdout.trim()):Z:Q(`tmux display-message: ${n.reason}`);return Rj.set(e,r),r}isInTmux(){return!!process.env.TMUX_PANE}},Vj=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 Hj=new xk;Ce(Hj.launchStats);const Uj=new Mw({counters:Hj,logger:Y}),Wj=new Bw({watchers:Uj,logger:Y}),Gj=new CT,Kj=new wk,qj=new Vj(We()),Jj=new Dj,Yj=new Mj,Xj=new Lj,Zj=new Bj,Qj=new yk({gitService:Wj,sessionState:Kj,watchers:Uj},{observers:{onReload:e=>Y(`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)}`)}}),$j=60*1e3;function eM(){let e=import.meta.url,n=[];e.startsWith(`file://`)&&n.push(b(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){Y(`info`,`binary mtime changed (${e}); shutting down`),a&&clearInterval(a),gM(0);return}}catch(e){Y(`warn`,`bin stat failed: ${e.message}`)}};return{arm(){i.size!==0&&(a=setInterval(o,$j),a.unref())},checkNow:o}}const tM=eM(),nM=sw({entryUrl:import.meta.url,intervalMs:$j,releaseIntervalMs:216e5,registryUrl:t.env.CC_CANDYBAR_REGISTRY_URL??`https://registry.npmjs.org`,fetchImpl:fetch,onApplied:()=>tM.checkNow(),log:Y});let rM=null,iM=null,aM=0;function oM(){t.on(`uncaughtException`,e=>{Y(`error`,`uncaughtException: ${e.stack||e.message}`),gM(1)}),t.on(`unhandledRejection`,e=>{Y(`error`,`unhandledRejection: ${String(e)}`),gM(1)});for(let e of[`SIGINT`,`SIGTERM`,`SIGHUP`])t.on(e,()=>{Y(`info`,`received ${e}, shutting down`),gM(0)});try{aM=Sb(t.env)}catch(e){Y(`error`,`refusing to boot: ${e.message}`),gM(1);return}rM=fS(t.pid);let e=SS(wS(rM));if(!e.decision.allow){Y(`warn`,`fork-bomb breaker: ${e.decision.reason}; refusing to boot`),gM(1);return}iM=e.registryPath,r.mkdirSync(Me(),{recursive:!0}),Fe(Ne()),Kj.useStorage(new Dk(Re(),500,Y)),hS({anchor:mS(t.env),isAlive:gS,onOrphaned:e=>{Y(`info`,`parent watchdog: ${e}; shutting down`),gM(0)}}),sM(g.createServer({allowHalfOpen:!1},e=>{_M(e)}),Ne(),!1)}function sM(e,n,r){e.removeAllListeners(`error`),e.removeAllListeners(`listening`),e.once(`error`,i=>{if(i.code!==`EADDRINUSE`){Y(`error`,`server error: ${i.message}`),gM(1);return}if(r){Y(`info`,`lost rebind race; another daemon is alive — exiting`),t.exit(0);return}cM(e,n)}),e.listen(n,()=>lM(n))}function cM(e,n){let i=nS(rS(Ie(n)),(e,t)=>dS(e,t,{readStartTime:uS,pidAlive:gS}));if(i.kind===`attach-and-exit`){Y(`info`,`EADDRINUSE: ${i.reason} — exiting`),t.exit(0);return}Y(`warn`,`EADDRINUSE: ${i.reason} — unlinking stale socket and rebinding`);try{r.unlinkSync(n)}catch(e){if(e.code!==`ENOENT`){Y(`error`,`cannot unlink stale socket ${n}: ${e.message}`),gM(1);return}}sM(e,n,!0)}function lM(e){let n=oS(e);if(n.kind!==`present`){Y(`warn`,`no ownable socket at bind callback (${n.kind}); exiting`),gM(0);return}pM(e);try{r.chmodSync(e,384)}catch(e){Y(`warn`,`chmod socket failed: ${e.message}`)}Y(`info`,`daemon up: pid=${t.pid} v=3 sock=${e} heapCap=${Math.round(_.getHeapStatistics().heap_size_limit/1048576)}MB rssLimit=${Math.round(aM/1048576)}MB`),zb();let i=qj.reset();i!==null&&Y(`warn`,`diagnostic dump wipe failed: ${i}`),tM.arm(),nM.arm(),fM(),uM(e,n.identity)}function uM(e,n){lS({bound:n,myPid:t.pid,readIdentity:()=>oS(e),readLease:()=>rS(Ie(e)),shutdown:e=>gM(e),log:Y}).arm()}let dM=null;function fM(){dM=Eb(Ab(Hj.startedAt.getTime(),e=>gM(e),{rssLimitBytes:aM})),dM.arm()}function pM(e){let n=iS(Ie(e),{pid:t.pid,version:3,binPath:t.argv[1],startTime:rM});n!==null&&Y(`warn`,`lease write failed: ${n}`)}let mM=0,hM=!1;function gM(e){if(!hM){hM=!0,setTimeout(()=>t.kill(t.pid,`SIGKILL`),500);try{Wj.close()}catch(e){Y(`warn`,`gitService close failed: ${e.message}`)}try{Gj.close()}catch(e){Y(`warn`,`usageStore close failed: ${e.message}`)}try{Uj.closeAll()}catch(e){Y(`warn`,`watcherRegistry close failed: ${e.message}`)}try{Kj.flush()}catch(e){Y(`warn`,`sessionState flush failed: ${e.message}`)}aS(Le(),t.pid),iM!==null&&CS(iM,t.pid,bS,e=>r.unlinkSync(e)),t.exit(e)}}function _M(e){mM++,Hj.inFlight=mM;let t=!1,n=(n,r)=>{if(t){r!==null&&Y(`warn`,`exit-after-flush dropped: an earlier responder settled this socket`);return}t=!0;let i=r===null?void 0:()=>gM(r);try{e.end(Yy(n),i)}catch(e){Y(`warn`,`response write failed: ${e.message}`),i?.()}},r=setTimeout(()=>{Hj.requestsTimedOut++,n({ok:!1,error:`request exceeded 200ms`,code:`TIMEOUT`,daemonV:3},null)},200),i=Xy(e=>{yM(e).then(e=>n(e.resp,e.exitAfterFlush)).catch(e=>{Y(`error`,`handler threw: ${e?.stack||e}`),n({ok:!1,error:String(e?.message||e),code:`RENDER_FAILED`,daemonV:3},null)})},e=>{Y(`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=>{Y(`warn`,`socket error: ${e.message}`)}),e.on(`close`,()=>{clearTimeout(r),mM=Math.max(0,mM-1),Hj.inFlight=mM})}const vM=e=>({resp:e,exitAfterFlush:null});async function yM(e){if(!e||typeof e!=`object`||typeof e.v!=`number`)return vM({ok:!1,error:`malformed request`,code:`BAD_REQUEST`,daemonV:3});if(e.v!==3)return e.v>3?Y(`info`,`version mismatch: client=${e.v} > daemon=3; binary likely upgraded — exiting after the response flushes`):Y(`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 vM({ok:!0,stats:Hj.snapshot({gitCache:Wj.getStats(),usageCache:Gj.getStats(),renderCacheSize:Qj.size,watchersActive:Uj.size(),nextRestartReason:dM?.describeNextRestart()??null})});if(e.kind===`render`){Hj.requestsTotal++;let t=Date.now();try{let{report:n}=dj(e.hookData);for(let e of n.unknownTopLevelFields)Y(`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 Hj.requestsErrored++,Y(`warn`,`BAD_REQUEST: ${r.join(`; `)}`),vM({ok:!1,error:`malformed hookData: ${r.join(`; `)}`,code:`BAD_REQUEST`,daemonV:3});let i=e.hookData.workspace.project_dir,{configFile:a,unknownFlagsError:o}=bM(e.args),s=e.hookData.session_id,c=Hy(e),l=JSON.stringify(c);Kj.get(s,`client-hints`)!==l&&Kj.set(s,$A,l);let u=Kj.get(s,`config-override`)??a??c.configEnv,d=Qj.getOrCreate(i,e.cwd,u),f=HA({projectDir:i,cwd:e.cwd,configFile:u??null});Kj.get(s,`render-origin`)!==f&&Kj.set(s,VA,f);let p=c.termCols,m=Ej(p??120),h=VS(c.termRows),g={...SM,width:m},{authoredRoots:_}=d.state,v=kT(d.state.config,t=>Kj.get(e.hookData.session_id,t),e=>_.has(e)),y=await UT(e.hookData,EM,e.cwd,d.state.neededInputPaths(v.preset),v,c),b=[];g.style=v.style,g.separator=v.separator,g.wrap=v.autoWrap,g.padding=v.padding,g.charset=v.charset,g.colorCompatibility=v.colorCompatibility;let x=ak(d.state.config,d.state.compiled,d.state.store,d.state.registry,y,g,{perSegmentSink:d.state.lastRenderCellsBySegment,onRenderWarning:e=>b.push(e)},{theme:v.theme,look:v.look,preset:v.preset}),S=Kj.get(e.hookData.session_id,`click.error`);S&&Kj.clear(e.hookData.session_id,`click.error`);let C=[o,d.lastError,S].filter(Boolean).join(`
184
- `),ee=nM.notice({sessionId:s,dismissed:Kj.get(s,qC),enabled:v.updateNotice}),te=d.lastError===null?null:d.configFilePath,w=KS(C,ee,[d.lastWarning??``,...b].filter(Boolean).join(`
185
- `)),ne=qj.sync(s,w===null?null:JS(w));ne!==null&&Y(`warn`,`diagnostic dump failed: ${ne}`);let re=YS(x,w,{fullText:ne===null?{kind:`file`,path:qj.pathFor(s)}:{kind:`unavailable`,reason:ne},failedConfigFile:te},{width:m,rowCap:h,colorCompatibility:v.colorCompatibility}),ie=Date.now()-t,T=Wj.getStats(),E=Gj.getStats();return Y(`info`,`render sid=${e.hookData.session_id??`?`} took=${ie}ms termCols=${p??`?`} termRows=${c.termRows??`?`} width=${m} git=${T.size}/${T.hits}h/${T.misses}m usage=${E.size}/${E.hits}h/${E.misses}m err=${C?`Y`:`N`} upd=${ee.length} warn=${d.lastWarning?`Y`:`N`}`),vM({ok:!0,output:re+`
186
- `})}catch(e){throw Hj.requestsErrored++,e}}if(e.kind===`click`)return vM(await DM(e.verb,e.value));if(e.kind===`debug`){if(!Tj(e.what))return vM({ok:!1,error:`unknown debug 'what': ${String(e.what)} (have: ${wj.join(`, `)})`,code:`BAD_REQUEST`,daemonV:3});let t=Qj.firstState(),n=t===null?null:{store:t.store,registry:t.registry,config:t.config,compiled:t.compiled,lastRenderBySegment:e.what===`segments`?TM(t.lastRenderCellsBySegment,t.config.globals.charset??`unicode`,t.config.globals.colorCompatibility??`truecolor`):wM};return vM({ok:!0,debug:mj(e.what,n)})}return vM({ok:!1,error:`unknown kind`,code:`BAD_REQUEST`,daemonV:3})}function bM(e){let{values:t,tokens:n}=S({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:Uy(t.config),unknownFlagsError:r.length>0?`Unknown flags: ${r.join(`, `)}`:null}}const xM={sessionState:Kj,dlog:Y,applyUpdate:()=>nM.act(),doctor:yA()},SM={style:`powerline`,colorCompatibility:`truecolor`,wrap:!0,padding:1,charset:NS},CM={...SM,width:1/0},wM=new Map;function TM(e,t,n){let r=new Map;for(let[i,a]of e)r.set(i,BS(a,{...CM,charset:t,colorCompatibility:n}));return r}const EM={gitProvider:Wj,usageStore:Gj,contextProvider:Jj,metricsProvider:Yj,activityProvider:Xj,tmuxService:Zj,log:Y,clock:()=>new Date};function DM(e,t){let n=cj.get(e);if(!n)return{ok:!1,error:`unknown click verb: ${e}`,code:`BAD_REQUEST`,daemonV:3};try{return n(t,xM),{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 OM={connectMs:200,budgetMs:500};async function kM(e){let n=e.includes(`--json`),r=await AM();if(r.kind!==`ok`&&(t.stderr.write(`daemon-stats: ${ib(r)}\n`),t.exit(1)),n){t.stdout.write(JSON.stringify(r.value,null,2)+`
187
- `);return}t.stdout.write(PM(r.value))}function AM(){return Qy({kind:`stats`},OM,e=>`stats`in e?e.stats:void 0)}function jM(e){return e<1024?`${e}B`:e<1024*1024?`${(e/1024).toFixed(1)}KB`:`${(e/1024/1024).toFixed(1)}MB`}function MM(e,t){let n=e+t;return n===0?`n/a`:`${(e/n*100).toFixed(1)}%`}function NM(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 PM(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 ${NM(e.uptimeSec)}`),t.push(` rss ${jM(e.rssBytes)}`),t.push(` heapUsed ${jM(e.heapUsedBytes)}`),t.push(` heapTotal ${jM(e.heapTotalBytes)}`),t.push(` external ${jM(e.externalBytes)}`),t.push(` arrayBuffers ${jM(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 ${MM(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 ${MM(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(`
181
+ `);n.push(e[0]);for(let r=1;r<e.length;r++)t.push(n),n=[e[r]]}return t.push(n),t}function ek(e,t){switch(e){case`vertical`:return nk(t.flatMap(e=>e));case`horizontal`:{let e=t.find(e=>e[0]?.span===`row`);return e===void 0?t.reduce((e,t)=>Math.max(e,t.length),0)===0?[]:[{cells:t.flatMap(e=>e[0]?.cells??[]),band:`own`,span:`shared`},...t.flatMap(e=>e.slice(1))]:nk(e)}}}function tk(e,t){let n=(e,r)=>t(e)?e.kind===`segment`?[{cells:[{name:e.name,address:r}],band:`own`,span:`shared`}]:ek(e.direction,e.children.map((t,i)=>n(t,[...r,rk(e,i)]))):[];return n(e,[]).map(e=>[...e.cells])}function nk(e){return e.map(e=>e.span===`row`?{...e,span:`shared`}:e)}function rk(e,t){return{index:t,count:e.children.length,distribution:e.distribution,axis:Za[e.direction]}}const ik={container:{compile(e,t){return{kind:`container`,direction:e.direction,when:t.when,distribution:Fc(e.distribution),children:e.children.map((e,n)=>t.compileChild(e,`${t.path}.children[${n}]`))}},render(e,t){return ek(e.direction,e.children.map((n,r)=>t.renderChild(n,t.visible,rk(e,r))))}},segment:{compile(e,t){return{kind:`segment`,when:t.when,name:e.name,...e.opens!==void 0&&{opens:{open:t.parse(ts(e.opens.ref),`opens`),body:t.compileChild(e.opens.body,`${t.path}.opens.body`),key:e.opens.ref.key,placement:e.opens.placement}}}},render(e,t){let n=t.lookupSegment(e.name);if(!n)throw Error(`Layout segment "${e.name}" has no matching segment`);let{seg:r,compiled:i}=n;if(!t.visible)return[];try{if(!ID(i.when,t.scope))return[];let n=i.palette??t.palette,a=t.enterSegment(e.name,n,t.region,i.bg,i.fg),o=i.template.evaluate(t.scope),s=t.exitSegment(o),c=e.opens!==void 0&&ID(e.opens.open,t.scope),l=s.length>0||c?a.trigger:a.closed,u={width:r.width??`auto`,justify:r.justify??`left`,truncate:r.truncate??`right`,baseStyle:l,padding:t.padding},d=e.opens===void 0?[]:t.renderBody(e.opens.body,c,a.disclosure),f=d.slice(0,+(e.opens?.placement===`inline`)),p=d.slice(f.length),m=e.opens!==void 0&&p.some(e=>e.band===`own`)?HD(KD([t.closeDisclosure(e.opens.key)],a.trigger),{...u,width:`auto`,baseStyle:a.trigger}):[],h=e=>e.band===`own`?m:[],g=p.map(e=>({cells:[...h(e),...e.cells],band:`deeper`,span:`shared`})),_=$O(KD(o,l)).map(e=>({cells:HD(e,u),band:`own`,span:`shared`})),v=s.map(e=>({cells:HD(KD([e],a.band),{...u,baseStyle:a.band}),band:`deeper`,span:`shared`})),y=[..._,...v];return t.perSegmentSink!==void 0&&t.perSegmentSink.set(e.name,[...y.flatMap(e=>e.cells),...p.flatMap(h)]),[...y.map((e,t)=>t===0&&f.length>0?{cells:[...e.cells,...f.flatMap(e=>e.cells)],band:`own`,span:`row`}:e),...g]}catch(n){let r=n.message??String(n);t.onSegmentError?.(e.name,r);let i=r.replace(/\s*\n\s*/g,` `);return[{cells:[new V(`⚠ ${e.name}: ${i}`,{end:``,noWrap:!0})],band:`own`,span:`shared`}]}}}};function ak(e){return ik[e]}function ok(e){if(`ttl`in e)return{kind:`ttl`,durationMs:yD(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 sk(e,t){switch(to(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 ck(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:ok(n.cache),parse:sk(n.parse,n.default)});break;case`shell`:e.declareShell(t,n.command,{cache:ok(n.cache),parse:sk(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?yD(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 lk(e,t){let n=fu.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}function uk(e,t,n){let r=n?.cwd??process.cwd(),i=Qv(e.globals.palette),a={store:t.variableStore,compiled:new Map,stripStyle:`powerline`,basePalette:i,palette:i,padding:1,seamCols:KS({style:`powerline`,charset:Wi}),layout:()=>[]},o=bO(t.drawnAt),s={action:a,activeSegment:o},c=Object.keys(e.looks),l=ng(e.presets),u=new Map([...ty(e),...Cg(e)]),d=uD({...mO(a),...AO(a,o),...NO(a,o),...LO(a,o),...HO(a,o),...JO(s),...ZO(o),looks:{fn:()=>c,argTypes:[]},presets:{fn:()=>l,argTypes:[]}},n?.clock,t.drawnAt),f=lk(d,e.helpers),p=e=>d.parse(e,f),m=new Map;for(let[t,n]of tO)n in e.variables&&m.set(t,n);for(let[t,n]of Object.entries(e.variables))n.kind===`state`&&!m.has(n.key)&&m.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`&&!m.has(r.key)&&m.set(r.key,`${t}.${e}`);a.compiled=nO(p,e.actions,m,u);let h=[];for(let[n,i]of Object.entries(e.variables))try{ck(t,n,i,r)}catch(e){h.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{ck(t,`${n}.${e}`,a,r)}catch(t){h.push(`Variable "${n}.${e}": ${t.message??String(t)}`)}let g=Object.create(null);for(let[t,n]of Object.entries(e.segments)){let e=(e,n)=>{try{return p(e)}catch(e){throw Error(`Template parse error in segments.${t}.${n}: ${e.message}`,{cause:e})}};g[t]={when:n.when===void 0?void 0:e(n.when,`when`),template:e(n.template,`template`),bg:n.bg===void 0?void 0:e(n.bg,`bg`),fg:n.fg===void 0?void 0:e(n.fg,`fg`),palette:n.palette===void 0?void 0:Gv(n.palette)}}let _=(e,t,n)=>{try{return p(e)}catch(e){throw Error(`Template parse error in ${t}.${n}: ${e.message}`,{cause:e})}},v=(e,t)=>{let n={path:t,when:e.when===void 0?void 0:_(e.when,t,`when`),parse:(e,n)=>_(e,t,n),compileChild:v};return ak(e.kind).compile(e,n)},y=new Map;for(let t of l){let{node:n,path:r}=ag(e,t);y.set(t,v(n,r))}let b=new Map;for(let t of H){let n=e.globals[t];Ni(n)&&b.set(t,dk(p,t,n))}return{segments:g,roots:y,activeSegment:o,menuRuntime:s,globalExpressions:b,loadWarnings:h}}function dk(e,t,n){try{return e(n)}catch(e){throw Error(`globals.${t} is not a valid template: ${e instanceof Error?e.message:String(e)}`)}}function fk(e,t,n){let r=e.globalExpressions.get(t);if(r===void 0)throw Error(`globals.${t} is an expression but no compiled template exists — registerDslConfig and the resolution disagree about isExpression`);return r.evaluate(n).map(e=>e.plain).join(``)}function pk(e,t){return e.kind===`decided`?e.name:t}function mk(e,t,n,r,i,a,o,s){let{perSegmentSink:c,onSegmentError:l,onRenderWarning:u}=o??{};r.drawAt(Xi(a.colorCompatibility));let{preset:d=eg}=s??{},f=s?.look??Ri(`none`,e.looks),p=s?.theme??Xv(void 0,null,e.globals.palette),m=(e,t)=>({...i,term:{cols:a.width},theme:{effective:e},look:{effective:t}});r.applyInput(m(pk(p,Oi),pk(f,Ii))),t.menuRuntime.action.stripStyle=a.style,t.menuRuntime.action.padding=a.padding,t.menuRuntime.action.seamCols=KS(a);let h=dD(n),g=Fi(p,()=>fk(t,`palette`,h),e=>Yv(e,e=>u?.(e))),_=Fi(f,()=>fk(t,`look`,h),t=>Ri(t,e.looks));(g!==p||_!==f)&&r.applyInput(m(g.name,_.name));let v=g.value;t.menuRuntime.action.basePalette=v;let y=qv(v,_.value);t.menuRuntime.action.palette=y,c?.clear();let b=n=>{let r=e.segments[n],i=t.segments[n];return r!==void 0&&i!==void 0?{seg:r,compiled:i}:void 0},x=(e,n,i,a,o)=>{let s=r.drawnAt(),{tint:c,disclosure:l}=ml(n,i,s);return{closed:ZD(t.activeSegment,e,n,l,c,a,o,h),get trigger(){return gO(n,rl(n,l,s).state,s)},get band(){return gO(n,rl(n,l,s).plane,s)},disclosure:l}},S=e=>(t.activeSegment.current=null,WO(e)),C=(e,t,r)=>{let i=t&&ID(e.when,h),o={scope:h,palette:y,visible:i,padding:a.padding,region:r,perSegmentSink:c,onSegmentError:l,enterSegment:x,exitSegment:S,lookupSegment:b,renderChild:(e,t,n)=>C(e,t,fl(r,n)),renderBody:(e,t,n)=>C(e,i&&t,pl(n)),closeDisclosure:e=>hO(n,e)};return ak(e.kind).render(e,o)},ee=t.roots.get(d);if(ee===void 0)throw Error(`Preset "${d}" has no compiled layout — registerDslConfig compiles one per declared preset and effectivePresetName collapses unknown names to "${eg}"; a miss here is merge/policy drift (have: ${[...t.roots.keys()].join(`, `)})`);let te=e=>{if(!ID(e.when,h))return!1;if(e.kind===`container`)return!0;if(e.name.startsWith(`edit.`))return!1;try{return ID(t.segments[e.name].when,h)}catch{return!0}};return t.menuRuntime.action.layout=()=>tk(ee,te).map(e=>e.map(e=>({...e,palette:t.segments[e.name].palette??y}))),C(ee,!0,dl).map(e=>qS(GD(e.cells,a),a)).join(`
182
+ `)}var hk=class{kind=`box`;cell;lastChangedAt;constructor(e,t,n){this.name=e,this.type=t,xk(e,t,n,`initial value`),this.cell=_E.observable.box(n,{deep:!1}),this.lastChangedAt=Date.now()}read(){return this.cell.get()}set(e){xk(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}},gk=class{kind=`computed`;cell;constructor(e,t,n){this.name=e,this.type=t,this.cell=(0,_E.computed)(()=>{let e=n();return xk(this.name,this.type,e,`computed result`),e},{keepAlive:!0})}read(){return this.cell.get()}lastUpdatedMs(){return null}},_k=class{kind=`document`;cell;lastChangedAt;constructor(e,t){this.name=e,this.cell=_E.observable.box(bk(t),{deep:!1}),this.lastChangedAt=Date.now()}read(){return this.cell.get()}set(e){let t=bk(e);yk(this.cell.get(),t)||(this.cell.set(t),this.lastChangedAt=Date.now())}lastUpdatedMs(){return this.lastChangedAt}};function vk(e){return JSON.stringify(e)}function yk(e,t){return vk(e)===vk(t)}function bk(e){return e.kind===`ok`?{kind:`ok`,value:vE(e.value)}:e}function xk(e,t,n,r){let i=yE(n);if(i!==t)throw TypeError(`Variable "${e}": ${r} type ${i} does not match declared type ${t}`)}var Sk=class{nodes=new Map;defineBox(e,t,n){this.assertNotDefined(e),this.nodes.set(e,new hk(e,t,n))}defineDocument(e,t){this.assertNotDefined(e),this.nodes.set(e,new _k(e,t))}defineComputed(e,t,n){this.assertNotDefined(e);let r=e=>this.read(e);this.nodes.set(e,new gk(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,_E.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,_E.runInAction)(()=>n.set(t))}runInAction(e){(0,_E.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 vk(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 Ck(e,t,n){return e+`\0`+t+`\0`+(n??``)}function wk(e,t){return new Set(ng(e.presets).filter(n=>ag(e,n).path===`root`?t.root!==void 0:t.presets?.[n]?.root!==void 0))}function Tk(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 Ek(e,t){let n=new Map;for(let t of Ny(e.projectDir,e.cwd,e.configFile)){let{dir:e,name:r}=Tk(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 Dk(e){return e.filter(Boolean).join(`
183
+ `)||null}var Ok=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=Ck(e,t,n),i=this.entries.get(r);if(i)return this.entries.delete(r),this.entries.set(r,i),i;let a=this.loadFromDisk(e,t,n),o={projectDir:e,cwd:t,configFile:n,configFilePath:null,lastError:a.error,lastWarning:a.warning,state:a.state??this.buildState(t,null,[]),watcher:null,watcherKey:null};if(this.entries.set(r,o),this.entries.size>this.maxEntries){let e=this.entries.entries().next().value;if(e!==void 0){let[t,n]=e;n.state.registry.dispose(),n.state.validatorDisposers.forEach(e=>e()),n.watcher?.release(),this.entries.delete(t)}}return this.refreshWatcher(o,a.resolvedPath),this.observers.onReload?.(o),o}reloadInto(e){let t=this.loadFromDisk(e.projectDir,e.cwd,e.configFile);e.lastWarning=t.warning,e.lastError=t.error,t.state!==null&&(e.state.registry.dispose(),e.state.validatorDisposers.forEach(e=>e()),e.state=t.state),this.refreshWatcher(e,t.resolvedPath),this.observers.onReload?.(e)}loadFromDisk(e,t,n){let r=Fy(e,t,n),i=r.kind===`file`?r.path:null,a=[zy(e,t),Ly(r)],o;try{o=this.buildState(t,i,a)}catch(e){return e instanceof Ga&&a.push(...e.warnings),{resolvedPath:i,warning:Dk(a),state:null,error:e instanceof Ga||e instanceof Error?e.message:String(e)}}return{resolvedPath:i,warning:Dk(a),state:o,error:null}}buildState(e,t,n){let{config:r,raw:i,source:a,warnings:o}=By(t,mE);n.push(...o);let s=Uy(r,t??`<default>`,a),c=new Sk,l=new FD(c,s.globals.default_empty_value??``,this.deps.gitService,this.deps.sessionState),u,d=[];try{u=uk(s,l,{cwd:e}),n.push(...u.loadWarnings);for(let{key:e,spec:t}of $C(s))d.push(KC(e,t));for(let{key:e,spec:t}of FC(s))d.push(IC(e,t))}catch(e){for(let e of d)e();throw l.dispose(),e}return{config:s,store:c,registry:l,compiled:u,neededInputPaths:qT(s),lastRenderCellsBySegment:new Map,validatorDisposers:d,authoredRoots:wk(r,i)}}refreshWatcher(e,t){e.configFilePath=t;let n=Ek(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){Y(`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 kk=16384;var Ak=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<kk){this.rollingTimestamps.push(e);return}this.rollingTimestamps[this.rollingHead]=e,this.rollingHead=(this.rollingHead+1)%kk}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:Ox,protocolVersion:3,startedAt:this.startedAt.toISOString(),uptimeSec:Math.floor((Date.now()-this.startedAt.getTime())/1e3),rssBytes:t.rss,heapUsedBytes:t.heapUsed,heapTotalBytes:t.heapTotal,externalBytes:t.external,arrayBuffersBytes:t.arrayBuffers,requests:{total:this.requestsTotal,errored:this.requestsErrored,timedOut:this.requestsTimedOut,inFlight:this.inFlight},gitCache:e.gitCache,usageCache:e.usageCache,renderCache:{size:e.renderCacheSize},watchers:{active:e.watchersActive,opened:this.watchersOpened,closed:this.watchersClosed,evicted:this.watchersEvicted},subprocesses:this.snapshotSubprocesses(),nextRestartReason:e.nextRestartReason??null}}};const jk={load:()=>({}),save:()=>{},flush:()=>{}};function Mk(e){let t=new Map;for(let[n,r]of Object.entries(e))t.set(n,new Map(Object.entries(r)));return t}var Nk=class{sessions;storage;atom=(0,_E.createAtom)(`SessionState`);constructor(e=jk,t=256){this.maxSessions=t,this.storage=e,this.sessions=new Map,this.hydrateFromStorage()}useStorage(e){this.storage=e,this.hydrateFromStorage()}hydrateFromStorage(){this.sessions=Mk(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,_E.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,_E.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,_E.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 Pk=(e,t)=>D(t);function Fk(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 Ik=class{timer=null;pending=null;constructor(e,t=500,n=Pk){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 Fk(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 Lk={default_bg:`string`,default_fg:`string`,default_empty_value:`string`,default_separator:`string`,default_truncate_marker:`string`,palette:`string`,look:`string`,preset:`string`,style:`string`,autoWrap:`boolean`,padding:`number`,charset:`string`,updateNotice:`boolean`,colorCompatibility:`string`,menuGlyph:`string`},Rk=new Set([`1`,`true`]),zk=new Set([`0`,`false`,``]);function Bk(e,t){let n=dA(e),r=n.scope===`globals`?Lk[n.field]:`string`;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(Rk.has(t))return`true`;if(zk.has(t))return`false`;throw Error(`persistValueText: "${e}" expects boolean-ish (1, 0, true, false), got "${t}"`)}function Vk(e){try{return r.readFileSync(e,`utf8`)}catch(e){if(e.code===`ENOENT`)return null;throw e}}function Hk(e,t,n){try{if(t===null){r.rmSync(e,{force:!0});return}r.mkdirSync(c.dirname(e),{recursive:!0}),ke(e,t)}catch(t){let r=`config write failed (${e}): ${t.message}`;throw n(`error`,r),Error(r)}}function Uk(e){return/^\s*$/.test(e)?null:da(e)}function Wk(e,t){return e!==null&&pa(e,t)!==void 0}function Gk(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(Gk),...i}}return e}function Kk(e){if(!Bo(e))return Gk(e);let{rows:t,...n}=e;return{rows:Object.fromEntries(Object.entries(t).map(([e,t])=>[e,Gk(t)])),...n}}const qk=fE,Jk=qk.segments,Yk=qk.presets,Xk=qk.root;function Zk(e,t,n,r){if(!Wk(e,t)&&n===void 0)throw new $(`cannot edit ${r}: neither the config file nor the bundled default declares ${t.join(`.`)}`)}function Qk(e,t){let n=dg(t);return t.scope===`segment-palette`&&Zk(e,[`segments`,t.segment],Jk[t.segment],n.join(`.`)),n}function $k(e){return da(ya(e))}function eA(){return Object.entries(Xk.rows).map(([e,t])=>{let n=Gk(t);return{path:[`root`],fragment:$k({rows:{[e]:n}}),unit:{path:[`root`,`rows`,e],value:n}}})}function tA(e,t){let n=e===null?void 0:pa(e,t);return n===void 0?null:{path:t,fragment:n,unit:null}}function nA(e,t){if(t===void 0)return null;let n=Kk(t);return{path:e,fragment:$k(n),unit:{path:e,value:n}}}function rA(e,t){let n=[`presets`,t],r=[...n,`root`],i=Yk[t];Zk(e,n,i,r.join(`.`));let a=tA(e,r)??nA(r,i?.root);return a!==null&&za(a.fragment)?a:null}function iA(e,t){let n=Ra(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 aA(e,t){return[...eA(),tA(e,[`root`]),rA(e,t)].filter(e=>e!==null).reduce(iA,new Map)}function oA(e,t,n){for(let{node:r,...i}of aA(e,t).values())if(Va(r,n))return i;throw new $(`${sA(e,t).join(`.`)} holds no segment "${n}" — the bar you clicked is stale; it reloads on the next render`)}function sA(e,t){return rA(e,t)?.path??[`root`]}function cA(e,t){return t.scope===`preset-root`?sA(e,t.preset):dg(t)}function lA(e,{unit:t}){return t===null?e:Na(e,t.path,ya(t.value),_a)}function uA(e){let t=ug(e);if(t===null)throw Error(`"${e}" is not a valid persist target`);return t}function dA(e){let t=uA(e);if(t.scope===`preset-root`)throw Error(`"${e}" names a layout, not a value`);return t}function fA(e,t){let n=dA(t),r=Uk(Vk(e)??``),i=r===null?void 0:pa(r,dg(n));return i!==void 0&&`value`in i?i.value:void 0}function pA(e,t,n,r){let i=dA(n),a=Vk(t);CA(e,t,{before:a,after:Na(a??``,Qk(Uk(a??``),i),Bk(n,r),_a)})}function mA(e,t,n){let r=uA(n),i=Vk(t);if(i===null)return;let a=Pa(i,cA(Uk(i),r));a!==i&&CA(e,t,{before:i,after:a})}function hA(e,t,n,r){let i=uA(n);if(i.scope!==`preset-root`)throw Error(`"${n}" is not a "presets.<name>.root" target`);let a=Vk(t),o=r.op===`remove`?r.target:r.anchor,s=oA(Uk(a??``),i.preset,o),c=lA(a??``,s),l=r.op===`remove`?Ua(c,s.path,r.target):Wa(c,s.path,r.segment,r.anchor,r.relation);if(l===null)throw new $(`${s.path.join(`.`)} in ${t} has no segment "${o}" — the bar you clicked is stale; it reloads on the next render`);CA(e,t,{before:a,after:l})}const gA={past:[],future:[]};function _A(e){if(typeof e!=`object`||!e)return!1;let t=e;return(t.before===null||typeof t.before==`string`)&&typeof t.after==`string`}function vA(e){if(typeof e!=`object`||!e)return!1;let t=e;return Array.isArray(t.past)&&t.past.every(_A)&&Array.isArray(t.future)&&t.future.every(_A)}function yA(e){let t;try{t=r.readFileSync(e.historyPath,`utf8`)}catch(t){let n=t.code;return n!==`ENOENT`&&e.logger(`warn`,`config-edit-history read failed (${n}); starting empty`),{}}try{let e=JSON.parse(t);if(typeof e==`object`&&e&&!Array.isArray(e)&&Object.values(e).every(vA))return e}catch{}return e.logger(`warn`,`config-edit-history load: unexpected shape, starting empty`),{}}function bA(e,t){try{r.mkdirSync(c.dirname(e.historyPath),{recursive:!0}),ke(e.historyPath,JSON.stringify(t),384)}catch(t){let n=`config-edit-history write failed: ${t.message}`;throw e.logger(`error`,n),Error(n)}}function xA(e,t){let n=[...e,t];return n.length>50?n.slice(-50):n}function SA(e,t,n,r,i){Hk(t,n,e.logger);try{bA(e,r)}catch(e){throw Error(`${i} landed in ${t} but recording it failed — it is not undoable: ${e.message}`)}}function CA(e,t,n){let r=yA(e),{past:i}=r[t]??gA;SA(e,t,n.after,{...r,[t]:{past:xA(i,n),future:[]}},`edit`)}function wA(e,t){let n=yA(e),{past:r,future:i}=n[t]??gA,a=r[r.length-1];return a===void 0?null:(EA(t,a.after,`undo`),SA(e,t,a.before,{...n,[t]:{past:r.slice(0,-1),future:xA(i,a)}},`undo`),a)}function TA(e,t){let n=yA(e),{past:r,future:i}=n[t]??gA,a=i[i.length-1];return a===void 0?null:(EA(t,a.before,`redo`),SA(e,t,a.after,{...n,[t]:{past:xA(r,a),future:i.slice(0,-1)}},`redo`),a)}function EA(e,t,n){if(Vk(e)!==t)throw new $(`${n}: ${e} has changed since that edit — refusing to overwrite it`)}function DA(e){let t=Ee({bin:`tmux`,args:[`-S`,e.socket,`display`,`-p`,`-t`,e.pane,`#{client_termfeatures}`],timeoutMs:2e3,category:`doctor.tmux`});return t.ok?{kind:`ok`,value:t.stdout.trim().split(`,`).filter(e=>e!==``)}:{kind:`failed`,reason:`tmux display -p failed (${t.error??[t.reason,t.stderr.trim()].filter(e=>e!==``).join(`: `)})`}}function OA(){return{probeTmux:DA,claudeSettingsPath:kx()}}function kA(e){return r.existsSync(e.claudeSettingsPath)?r.readFileSync(e.claudeSettingsPath,`utf8`):``}function AA(e){if(/^\s*$/.test(e))return{};let t=va.parse(e);if(typeof t!=`object`||!t||Array.isArray(t))throw Error(`not a JSON object`);let n=t.env;if(n===void 0)return{};if(typeof n!=`object`||!n||Array.isArray(n))throw Error("`env` is not an object");return n}function jA(e,t){return t===void 0?{kind:`unreported`}:t===null?{kind:`outside`}:{kind:`inside`,hint:t,termfeatures:e.probeTmux(t)}}function MA(e){try{return AA(kA(e))}catch(t){throw Error(`cannot read ${e.claudeSettingsPath}: ${t instanceof Error?t.message:String(t)}`,{cause:t})}}function NA(e,t){return{tmux:jA(e,t),claudeSettingsEnv:MA(e)}}function PA(e,t,n){switch(t.kind){case`claude-settings-env`:{let i=Na(kA(e),[`env`,t.name],JSON.stringify(t.value),va);return r.mkdirSync(c.dirname(e.claudeSettingsPath),{recursive:!0}),ke(e.claudeSettingsPath,i),{...n,claudeSettingsEnv:MA(e)}}default:return t.kind}}function FA(e){if(!e)throw new $(`session id is required`);if(e.includes(`/`)||e.includes(`..`))throw new $(`invalid session id "${e}"`);return e}function IA(e){return LA(()=>decodeURIComponent(e))}function LA(e){try{return e()}catch(e){throw e instanceof URIError?new $(`malformed wire encoding: ${e.message}`):e}}function RA(e,t){let n=Ee({bin:`/usr/bin/pbcopy`,stdinInput:e,category:`click.pbcopy`});if(!n.ok){if(n.reason===`rate-limited`){t.dlog(`warn`,`click.pbcopy rate-limited: ${n.error??``}`);return}throw Error(`pbcopy failed (${n.reason}, exit ${n.exitCode??`null`})`)}}const zA=(e,t)=>RA(IA(e),t),BA=(e,t)=>{let n=Ee({bin:`/usr/bin/open`,args:[`-a`,`Visual Studio Code`,IA(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`})`)}},VA=(e,t)=>RA(IA(e),t),HA=(e,t)=>RA(IA(e),t),UA=(e,t)=>{let n=FA(IA(e));t.sessionState.get(n,`toolbar-expanded`)?t.sessionState.clear(n,`toolbar-expanded`):t.sessionState.set(n,`toolbar-expanded`,`1`)},WA=(e,t)=>{let[n=``,...r]=LA(()=>Sx(e)),i=FA(n);if(r.length===0)throw new $(`set-state: <key>/<value> is required (have keys: ${GC().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: ${GC().join(`, `)})`);let a=[];for(let e=0;e<r.length;e+=2){let t=r[e],n=r[e+1];if(!t)throw new $(`set-state: empty key at pair ${e/2+1} (expected <sessionId>/<key>/<value>[/<key>/<value>...] segments)`);let i=qC(t,n);if(!i.ok)throw new $(`set-state: pair ${e/2+1}: ${i.reason}`);a.push({key:t,value:i.value})}t.sessionState.setBatch(i,a);let o=a.map(e=>`${e.key}=${e.value}`).join(` `);t.dlog(`info`,`set-state: ${o} (session=${i})`)},GA=/^-?\d+$/;function KA(e,t,n){return e>n?t:e<t?n:e}function qA(e,t){if(!e)return null;if(!GC().includes(e))throw new $(`${t}: unknown session key "${e}" to release (have: ${GC().join(`, `)})`);return e}function JA(e,t,n,r){e!==null&&(n.sessionState.clear(t,e),n.dlog(`info`,`${r}: released session key ${e} (session=${t})`))}const YA=(e,t)=>{let[n=``,r=``,i=``]=LA(()=>Sx(e)),a=FA(n);if(!r)throw new $(`step-state: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!GA.test(i))throw new $(`step-state: delta must be an integer, got "${i}"`);let o=parseInt(i,10),s=JC(r);if(!s)throw new $(`step-state: key "${r}" is not a bounded (range) state key (have keys: ${GC().join(`, `)})`);let c=t.sessionState.get(a,r),l=c&&GA.test(c)?Math.max(s.min,Math.min(s.max,parseInt(c,10))):s.seed,u=KA(l+o,s.min,s.max),d=qC(r,String(u));if(!d.ok)throw new $(`step-state: ${d.reason}`);t.sessionState.set(a,r,d.value),t.dlog(`info`,`step-state: ${r} ${l}→${d.value} (by ${o}, session=${a})`)},XA=`render-origin`;function ZA(e){return JSON.stringify(e)}function QA(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 $A(e,t){let n=e.sessionState.get(t,XA);if(n===null)throw new $(`session ${t} has not rendered yet — no config file to write`);let r=QA(n);return Iy(r.projectDir,r.cwd,r.configFile??void 0)}function ej(e){return{historyPath:ze(),logger:e.dlog}}const tj=(e,t)=>{let[n=``,r=``,i=``,a=``]=LA(()=>Sx(e)),o=FA(n);if(!r)throw new $(`set-config: <key>/<value> is required (have keys: ${DC().join(`, `)})`);let s=OC(r,i);if(!s.ok)throw new $(`set-config: ${s.reason}`);let c=qA(a,`set-config`),l=$A(t,o);pA(ej(t),l,r,s.value),t.dlog(`info`,`set-config: ${r}=${s.value} → ${l} (session=${o})`),JA(c,o,t,`set-config`)},nj=(e,t)=>{let[n=``,r=``,i=``,a=``]=LA(()=>Sx(e)),o=FA(n);if(!r)throw new $(`step-config: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!GA.test(i))throw new $(`step-config: delta must be an integer, got "${i}"`);let s=parseInt(i,10),c=qA(a,`step-config`),l=kC(r);if(!l)throw new $(`step-config: key "${r}" is not a bounded (range) config key (have keys: ${DC().join(`, `)})`);let u=$A(t,o),d=fA(u,r),f=typeof d==`number`?Math.max(l.min,Math.min(l.max,d)):l.seed,p=KA(f+s,l.min,l.max),m=OC(r,String(p));if(!m.ok)throw new $(`step-config: ${m.reason}`);pA(ej(t),u,r,m.value),t.dlog(`info`,`step-config: ${r} ${f}→${m.value} (by ${s}) → ${u} (session=${o})`),JA(c,o,t,`step-config`)},rj=(e,t)=>{let[n=``,r=``]=LA(()=>Sx(e)),i=FA(n);if(!r||!DC().includes(r))throw new $(`reset-config: unknown config key "${r}" (have: ${DC().join(`, `)})`);let a=$A(t,i);mA(ej(t),a,r),t.dlog(`info`,`reset-config: ${r} ← ${a} (session=${i})`)},ij=(e,t)=>{let[n=``,r=``,i=``]=LA(()=>Sx(e)),a=FA(n);if(!r)throw new $(`apply-layout-op: <key>/<op> is required (have: ${DC().join(`, `)})`);let o=OC(r,i);if(!o.ok)throw new $(`apply-layout-op: ${o.reason}`);let s=Qh(o.value);if(s===null)throw new $(`apply-layout-op: "${o.value}" is not a layout op token`);let c=$A(t,a);hA(ej(t),c,r,s),t.dlog(`info`,`apply-layout-op: ${r} ${o.value} → ${c} (session=${a})`)},aj=(e,t)=>{let[n=``]=LA(()=>Sx(e)),r=FA(n),i=$A(t,r);if(wA(ej(t),i)===null)throw new $(`undo: history is empty, nothing to undo`);t.dlog(`info`,`undo: ${i} (session=${r})`)},oj=(e,t)=>{let[n=``]=LA(()=>Sx(e)),r=FA(n),i=$A(t,r);if(TA(ej(t),i)===null)throw new $(`redo: nothing to redo`);t.dlog(`info`,`redo: ${i} (session=${r})`)},sj=(e,t)=>{FA(IA(e)),t.applyUpdate()},cj=`client-hints`;function lj(e,t){let n=e.sessionState.get(t,cj);if(n===null)throw new $(`session ${t} has not rendered yet — no client facts to diagnose`);let r;try{r=JSON.parse(n)}catch{throw new $(`client hints record is not JSON: ${n}`)}if(typeof r!=`object`||!r)throw new $(`client hints record is not an object: ${n}`);return Xy(r)}function uj(e,t,n){let r=Fg(n);e.sessionState.setBatch(t,Rg(r)),e.dlog(`info`,`doctor: ${r.map(e=>`${e.check.name}=${e.verdict.ok?`ok`:`failed`}`).join(` `)} (session=${t})`)}const dj=(e,t)=>{let n=FA(IA(e));uj(t,n,NA(t.doctor,lj(t,n).tmux))},fj=(e,t)=>{let[n=``,r=``]=LA(()=>Sx(e)),i=FA(n),a=Ig(r);if(a===void 0)throw new $(`doctor-fix: unknown check "${r}"`);let o=NA(t.doctor,lj(t,i).tmux),s=a.probe(o);if(s.ok||s.fix===void 0)throw new $(`doctor-fix: ${a.label} — ${s.ok?`nothing to fix`:s.reason}`);let c=PA(t.doctor,s.fix,o);t.dlog(`info`,`doctor-fix: ${a.name} → ${s.fix.kind} ${s.fix.name}=${s.fix.value} (session=${i})`),uj(t,i,c)},pj=`config-override`,mj=new Map([[sx,zA],[`load-config`,(e,t)=>{let n=e.indexOf(`/`);if(n===-1)throw new $(`load-config: expected <sessionId>/<path> (missing separator)`);let r=FA(LA(()=>decodeURIComponent(e.slice(0,n)))),i=LA(()=>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,pj),t.dlog(`info`,`load-config: override cleared (session=${r})`)):(t.sessionState.set(r,pj,i),t.dlog(`info`,`load-config: ${i} (session=${r})`))}],[cx,BA],[ax,WA],[ox,YA],[fx,tj],[px,nj],[mx,rj],[hx,ij],[gx,aj],[_x,oj],[ux,VA],[dx,HA],[lx,UA],[vx,sj],[yx,dj],[bx,fj]]),hj=new Set([ax,ox,fx,px,mx,hx,gx,_x,lx,vx,yx,bx]),gj=(e,t)=>{let n=[],r=!1,i=null;for(let{verb:a,value:o}of Tx(wx(e))){if(!i&&hj.has(a)){let e=Sx(o);e.length>0&&e[0]&&(i=e[0])}let e=mj.get(a);if(!e){n.push(`unknown effect verb "${a}"`);continue}try{e(o,t)}catch(e){e instanceof $||(r=!0),n.push(`${a}: ${e instanceof Error?e.message:String(e)}`)}}if(n.length>0){i&&t.sessionState.set(i,`click.error`,n.join(`
184
+ `));let e=`dispatch: ${n.join(`; `)}`;throw r?Error(e):new $(e)}},_j=new Map([...mj,[ix,gj]]);Object.freeze([..._j.keys()]);const vj=new Set([`hook_event_name`,`session_id`,`session_name`,`transcript_path`,`cwd`,`model`,`workspace`,`version`,`output_style`,`cost`,`context_window`,`exceeds_200k_tokens`,`effort`,`thinking`,`rate_limits`,`vim`,`agent`,`worktree`]),yj=[[`session_id`,`string`],[`transcript_path`,`string`],[`cwd`,`string`],[`model`,`object`],[`model.id`,`string`],[`model.display_name`,`string`],[`workspace`,`object`],[`workspace.current_dir`,`string`],[`workspace.project_dir`,`string`]];function bj(e){let t={missingRequired:[],typeMismatches:[],unknownTopLevelFields:[]},n=typeof e==`object`&&e&&!Array.isArray(e)?e:{};for(let[e,r]of yj){let i=Sj(n,e);if(i==null)t.missingRequired.push(e);else{let n=xj(i);n!==r&&t.typeMismatches.push({path:e,expected:r,got:n})}}for(let e of Object.keys(n))vj.has(e)||t.unknownTopLevelFields.push(e);return{data:e,report:t}}function xj(e){return Array.isArray(e)?`array`:typeof e==`string`&&!e.isWellFormed()?`ill-formed string`:typeof e}function Sj(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 Cj(e,t){switch(e){case`vars`:return{what:e,vars:wj(t)};case`segments`:return{what:e,segments:kj(t)};case`config`:return{what:e,config:Mj(t)}}}function wj(e){if(e===null)return[];let{store:t,registry:n,config:r}=e,i=Dj(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,...Tj(r),lastError:a===void 0?null:{timestampMs:a.timestamp,message:a.message},ageMs:Ej(r.lastUpdatedMs())})}return o}function Tj(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 Ej(e){return e===null?null:Math.max(0,Date.now()-e)}function Dj(e){let t=new Map;for(let[n,r]of Object.entries(e.variables))t.set(n,Oj(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}`,Oj(i));return t}function Oj(e){return e.kind}function kj(e){if(e===null)return[];let{store:t,config:n,lastRenderBySegment:r}=e,i=new Set(t.names()),a=Aj(n),o=[];for(let e of a){let t=n.segments[e];t&&o.push({name:e,description:t.description??null,template:t.template,referencedVars:jj(t.template,i),lastRender:r.get(e)??null})}return o}function Aj(e){let t=[],n=new Set;for(let r of $a(Uo(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 jj(e,t){let n=new Set;for(let r of sy(e)){if(t.has(r)){n.add(r);continue}let e=r.split(`.`);for(;e.length>1;){e.pop();let r=e.join(`.`);if(t.has(r)){n.add(r);break}}}return Array.from(n).sort()}function Mj(e){return e===null?null:e.config}const Nj=[`vars`,`segments`,`config`];function Pj(e){return typeof e==`string`&&Nj.includes(e)}function Fj(e){return Math.max(1,e-2)}var Ij=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 mT(e);if(n.length===0)return D(`No entries in transcript`),Z;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})`),X({totalTokens:n,maxTokens:t,...this.ratioPercentages(n,t)})}return D(`No main chain entries with usage data found`),Z}catch(e){return Q(`context transcript: ${e instanceof Error?e.message:String(e)}`)}}async getContextInfo(e){let t=this.calculateContextFromHookData(e);if(t)return X(t);let n=e.context_window?.context_window_size??2e5;return this.calculateContextTokensFromTranscript(e.transcript_path,n)}},Lj=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=Zw(t);if(n&&r!==0&&n.cursor.mtimeMs===r)return this.touch(e,n),{kind:`ok`,value:n.value};let i=await vT(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 Rj={messageCount:0,recent:[]};function zj(e,t){if(t.isSidechain)return e;let n=[...e.recent,t];return{messageCount:e.messageCount+ +!!fT(t),recent:n.length>20?n.slice(-20):n}}function Bj(e){let t=null,n=null;for(let r of e){let e=r.type||r.message?.role||r.message?.type;if(fT(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 Vj=class{fold=new Lj(Rj,zj);async getMetricsInfo(e,t){if(D(`Getting metrics from hook data for session: ${e}`),!t.cost)return Z;let n=await this.fold.read(e,t.transcript_path);return n.kind===`failed`?Q(`metrics (${e}): ${n.reason}`):X({responseTime:t.cost.total_api_duration_ms/1e3,lastResponseTime:Bj(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 Hj={command:null,todos:[],pending:[],done:[]};function Uj(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 Wj(e,t){if(t.isSidechain)return e;let n=fT(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=Uj(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 Gj(e){return{command:e.command,todos:e.todos,running:e.pending.reduce((e,t)=>Uj(e,t.name),[]),done:e.done}}var Kj=class{fold=new Lj(Hj,Wj);async getActivityInfo(e,t){let n=await this.fold.read(e,t.transcript_path);return n.kind===`failed`?Q(`activity (${e}): ${n.reason}`):X(Gj(n.value))}};const qj=new Map;function Jj(e){if(!e)return``;let t=e.indexOf(`,`);return t<0?e:e.slice(0,t)}var Yj=class{async getSessionId(){if(!process.env.TMUX_PANE)return Z;let e=Jj(process.env.TMUX),t=qj.get(e);if(t!==void 0)return t;D(`Getting tmux session ID, TMUX_PANE: ${process.env.TMUX_PANE}`);let n=await Te({bin:`tmux`,args:[`display-message`,`-p`,`#S`],timeoutMs:1e3,category:`tmux`}),r=n.ok?n.stdout.trim()?X(n.stdout.trim()):Z:Q(`tmux display-message: ${n.reason}`);return qj.set(e,r),r}isInTmux(){return!!process.env.TMUX_PANE}},Xj=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 Zj=new Ak;Ce(Zj.launchStats);const Qj=new zw({counters:Zj,logger:Y}),$j=new qw({watchers:Qj,logger:Y}),eM=new AT,tM=new Nk,nM=new Xj(We()),rM=new Ij,iM=new Vj,aM=new Kj,oM=new Yj,sM=new Ok({gitService:$j,sessionState:tM,watchers:Qj},{observers:{onReload:e=>Y(`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)}`)}}),cM=60*1e3;function lM(){let e=import.meta.url,n=[];e.startsWith(`file://`)&&n.push(b(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){Y(`info`,`binary mtime changed (${e}); shutting down`),a&&clearInterval(a),TM(0);return}}catch(e){Y(`warn`,`bin stat failed: ${e.message}`)}};return{arm(){i.size!==0&&(a=setInterval(o,cM),a.unref())},checkNow:o}}const uM=lM(),dM=mw({entryUrl:import.meta.url,intervalMs:cM,releaseIntervalMs:216e5,registryUrl:t.env.CC_CANDYBAR_REGISTRY_URL??`https://registry.npmjs.org`,fetchImpl:fetch,onApplied:()=>uM.checkNow(),log:Y});let fM=null,pM=null,mM=0;function hM(){t.on(`uncaughtException`,e=>{Y(`error`,`uncaughtException: ${e.stack||e.message}`),TM(1)}),t.on(`unhandledRejection`,e=>{Y(`error`,`unhandledRejection: ${String(e)}`),TM(1)});for(let e of[`SIGINT`,`SIGTERM`,`SIGHUP`])t.on(e,()=>{Y(`info`,`received ${e}, shutting down`),TM(0)});try{mM=Ab(t.env)}catch(e){Y(`error`,`refusing to boot: ${e.message}`),TM(1);return}fM=bS(t.pid);let e=AS(MS(fM));if(!e.decision.allow){Y(`warn`,`fork-bomb breaker: ${e.decision.reason}; refusing to boot`),TM(1);return}pM=e.registryPath,r.mkdirSync(Me(),{recursive:!0}),Fe(Ne()),tM.useStorage(new Ik(Re(),500,Y)),CS({anchor:SS(t.env),isAlive:wS,onOrphaned:e=>{Y(`info`,`parent watchdog: ${e}; shutting down`),TM(0)}}),gM(g.createServer({allowHalfOpen:!1},e=>{EM(e)}),Ne(),!1)}function gM(e,n,r){e.removeAllListeners(`error`),e.removeAllListeners(`listening`),e.once(`error`,i=>{if(i.code!==`EADDRINUSE`){Y(`error`,`server error: ${i.message}`),TM(1);return}if(r){Y(`info`,`lost rebind race; another daemon is alive — exiting`),t.exit(0);return}_M(e,n)}),e.listen(n,()=>vM(n))}function _M(e,n){let i=uS(dS(Ie(n)),(e,t)=>yS(e,t,{readStartTime:vS,pidAlive:wS}));if(i.kind===`attach-and-exit`){Y(`info`,`EADDRINUSE: ${i.reason} — exiting`),t.exit(0);return}Y(`warn`,`EADDRINUSE: ${i.reason} — unlinking stale socket and rebinding`);try{r.unlinkSync(n)}catch(e){if(e.code!==`ENOENT`){Y(`error`,`cannot unlink stale socket ${n}: ${e.message}`),TM(1);return}}gM(e,n,!0)}function vM(e){let n=mS(e);if(n.kind!==`present`){Y(`warn`,`no ownable socket at bind callback (${n.kind}); exiting`),TM(0);return}SM(e);try{r.chmodSync(e,384)}catch(e){Y(`warn`,`chmod socket failed: ${e.message}`)}Y(`info`,`daemon up: pid=${t.pid} v=3 sock=${e} heapCap=${Math.round(_.getHeapStatistics().heap_size_limit/1048576)}MB rssLimit=${Math.round(mM/1048576)}MB`),qb();let i=nM.reset();i!==null&&Y(`warn`,`diagnostic dump wipe failed: ${i}`),uM.arm(),dM.arm(),xM(),yM(e,n.identity)}function yM(e,n){_S({bound:n,myPid:t.pid,readIdentity:()=>mS(e),readLease:()=>dS(Ie(e)),shutdown:e=>TM(e),log:Y}).arm()}let bM=null;function xM(){bM=Pb(Rb(Zj.startedAt.getTime(),e=>TM(e),{rssLimitBytes:mM})),bM.arm()}function SM(e){let n=fS(Ie(e),{pid:t.pid,version:3,binPath:t.argv[1],startTime:fM});n!==null&&Y(`warn`,`lease write failed: ${n}`)}let CM=0,wM=!1;function TM(e){if(!wM){wM=!0,setTimeout(()=>t.kill(t.pid,`SIGKILL`),500);try{$j.close()}catch(e){Y(`warn`,`gitService close failed: ${e.message}`)}try{eM.close()}catch(e){Y(`warn`,`usageStore close failed: ${e.message}`)}try{Qj.closeAll()}catch(e){Y(`warn`,`watcherRegistry close failed: ${e.message}`)}try{tM.flush()}catch(e){Y(`warn`,`sessionState flush failed: ${e.message}`)}pS(Le(),t.pid),pM!==null&&jS(pM,t.pid,OS,e=>r.unlinkSync(e)),t.exit(e)}}function EM(e){CM++,Zj.inFlight=CM;let t=!1,n=(n,r)=>{if(t){r!==null&&Y(`warn`,`exit-after-flush dropped: an earlier responder settled this socket`);return}t=!0;let i=r===null?void 0:()=>TM(r);try{e.end(rb(n),i)}catch(e){Y(`warn`,`response write failed: ${e.message}`),i?.()}},r=setTimeout(()=>{Zj.requestsTimedOut++,n({ok:!1,error:`request exceeded 200ms`,code:`TIMEOUT`,daemonV:3},null)},200),i=ib(e=>{OM(e).then(e=>n(e.resp,e.exitAfterFlush)).catch(e=>{Y(`error`,`handler threw: ${e?.stack||e}`),n({ok:!1,error:String(e?.message||e),code:`RENDER_FAILED`,daemonV:3},null)})},e=>{Y(`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=>{Y(`warn`,`socket error: ${e.message}`)}),e.on(`close`,()=>{clearTimeout(r),CM=Math.max(0,CM-1),Zj.inFlight=CM})}const DM=e=>({resp:e,exitAfterFlush:null});async function OM(e){if(!e||typeof e!=`object`||typeof e.v!=`number`)return DM({ok:!1,error:`malformed request`,code:`BAD_REQUEST`,daemonV:3});if(e.v!==3)return e.v>3?Y(`info`,`version mismatch: client=${e.v} > daemon=3; binary likely upgraded — exiting after the response flushes`):Y(`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 DM({ok:!0,stats:Zj.snapshot({gitCache:$j.getStats(),usageCache:eM.getStats(),renderCacheSize:sM.size,watchersActive:Qj.size(),nextRestartReason:bM?.describeNextRestart()??null})});if(e.kind===`render`){Zj.requestsTotal++;let t=Date.now();try{let{report:n}=bj(e.hookData);for(let e of n.unknownTopLevelFields)Y(`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 Zj.requestsErrored++,Y(`warn`,`BAD_REQUEST: ${r.join(`; `)}`),DM({ok:!1,error:`malformed hookData: ${r.join(`; `)}`,code:`BAD_REQUEST`,daemonV:3});let i=e.hookData.workspace.project_dir,{configFile:a,unknownFlagsError:o}=kM(e.args),s=e.hookData.session_id,c=Xy(e),l=JSON.stringify(c);tM.get(s,`client-hints`)!==l&&tM.set(s,cj,l);let u=tM.get(s,`config-override`)??a??c.configEnv,d=sM.getOrCreate(i,e.cwd,u),f=ZA({projectDir:i,cwd:e.cwd,configFile:u??null});tM.get(s,`render-origin`)!==f&&tM.set(s,XA,f);let p=c.termCols,m=Fj(p??120),h=JS(c.termRows),g={...jM,width:m},{authoredRoots:_}=d.state,v=IT(d.state.config,t=>tM.get(e.hookData.session_id,t),e=>_.has(e)),y=await ZT(e.hookData,FM,e.cwd,d.state.neededInputPaths(v.preset),v,c),b=[];g.style=v.style,g.separator=v.separator,g.wrap=v.autoWrap,g.padding=v.padding,g.charset=v.charset,g.colorCompatibility=v.colorCompatibility;let x=mk(d.state.config,d.state.compiled,d.state.store,d.state.registry,y,g,{perSegmentSink:d.state.lastRenderCellsBySegment,onRenderWarning:e=>b.push(e)},{theme:v.theme,look:v.look,preset:v.preset}),S=tM.get(e.hookData.session_id,`click.error`);S&&tM.clear(e.hookData.session_id,`click.error`);let C=[o,d.lastError,S].filter(Boolean).join(`
185
+ `),ee=dM.notice({sessionId:s,dismissed:tM.get(s,ew),enabled:v.updateNotice}),te=d.lastError===null?null:d.configFilePath,w=$S(C,ee,[d.lastWarning??``,...b].filter(Boolean).join(`
186
+ `)),ne=nM.sync(s,w===null?null:tC(w));ne!==null&&Y(`warn`,`diagnostic dump failed: ${ne}`);let re=nC(x,w,{fullText:ne===null?{kind:`file`,path:nM.pathFor(s)}:{kind:`unavailable`,reason:ne},failedConfigFile:te},{width:m,rowCap:h,colorCompatibility:v.colorCompatibility}),ie=Date.now()-t,T=$j.getStats(),E=eM.getStats();return Y(`info`,`render sid=${e.hookData.session_id??`?`} took=${ie}ms termCols=${p??`?`} termRows=${c.termRows??`?`} width=${m} git=${T.size}/${T.hits}h/${T.misses}m usage=${E.size}/${E.hits}h/${E.misses}m err=${C?`Y`:`N`} upd=${ee.length} warn=${d.lastWarning?`Y`:`N`}`),DM({ok:!0,output:re+`
187
+ `})}catch(e){throw Zj.requestsErrored++,e}}if(e.kind===`click`)return DM(await IM(e.verb,e.value));if(e.kind===`debug`){if(!Pj(e.what))return DM({ok:!1,error:`unknown debug 'what': ${String(e.what)} (have: ${Nj.join(`, `)})`,code:`BAD_REQUEST`,daemonV:3});let t=sM.firstState(),n=t===null?null:{store:t.store,registry:t.registry,config:t.config,compiled:t.compiled,lastRenderBySegment:e.what===`segments`?PM(t.lastRenderCellsBySegment,t.config.globals.charset??`unicode`,t.config.globals.colorCompatibility??`truecolor`):NM};return DM({ok:!0,debug:Cj(e.what,n)})}return DM({ok:!1,error:`unknown kind`,code:`BAD_REQUEST`,daemonV:3})}function kM(e){let{values:t,tokens:n}=S({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:Zy(t.config),unknownFlagsError:r.length>0?`Unknown flags: ${r.join(`, `)}`:null}}const AM={sessionState:tM,dlog:Y,applyUpdate:()=>dM.act(),doctor:OA()},jM={style:`powerline`,colorCompatibility:qi,wrap:!0,padding:1,charset:Wi},MM={...jM,width:1/0},NM=new Map;function PM(e,t,n){let r=new Map;for(let[i,a]of e)r.set(i,qS(a,{...MM,charset:t,colorCompatibility:n}));return r}const FM={gitProvider:$j,usageStore:eM,contextProvider:rM,metricsProvider:iM,activityProvider:aM,tmuxService:oM,log:Y,clock:()=>new Date};function IM(e,t){let n=_j.get(e);if(!n)return{ok:!1,error:`unknown click verb: ${e}`,code:`BAD_REQUEST`,daemonV:3};try{return n(t,AM),{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 LM={connectMs:200,budgetMs:500};async function RM(e){let n=e.includes(`--json`),r=await zM();if(r.kind!==`ok`&&(t.stderr.write(`daemon-stats: ${fb(r)}\n`),t.exit(1)),n){t.stdout.write(JSON.stringify(r.value,null,2)+`
188
+ `);return}t.stdout.write(UM(r.value))}function zM(){return ob({kind:`stats`},LM,e=>`stats`in e?e.stats:void 0)}function BM(e){return e<1024?`${e}B`:e<1024*1024?`${(e/1024).toFixed(1)}KB`:`${(e/1024/1024).toFixed(1)}MB`}function VM(e,t){let n=e+t;return n===0?`n/a`:`${(e/n*100).toFixed(1)}%`}function HM(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 UM(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 ${HM(e.uptimeSec)}`),t.push(` rss ${BM(e.rssBytes)}`),t.push(` heapUsed ${BM(e.heapUsedBytes)}`),t.push(` heapTotal ${BM(e.heapTotalBytes)}`),t.push(` external ${BM(e.externalBytes)}`),t.push(` arrayBuffers ${BM(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 ${VM(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 ${VM(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(`
188
189
  `)+`
189
- `}const FM={connectMs:200,budgetMs:500};async function IM(e,n){let r=n.includes(`--json`),i=await LM(e);if(i.kind!==`ok`&&(t.stderr.write(`${e}: ${ib(i)}\n`),t.exit(1)),r){t.stdout.write(JSON.stringify(i.value,null,2)+`
190
- `);return}t.stdout.write(RM(i.value))}function LM(e){return Qy({kind:`debug`,what:e},FM,e=>`debug`in e?e.debug:void 0)}function RM(e){switch(e.what){case`vars`:return zM(e.vars);case`segments`:return BM(e.segments);case`config`:return VM(e.config);default:return e}}function zM(e){if(e.length===0)return`no variables (DSL not active)
191
- `;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?``:` ${UM(a.ageMs)}`,o=a.lastError?` ✗ ${a.lastError.message}`:``;t.push(` ${a.name.padEnd(n)} ${(a.source??`—`).padEnd(r)} ${a.type.padEnd(i)} ${HM(a.value)}${e}${o}`)}return t.join(`
190
+ `}const WM={connectMs:200,budgetMs:500};async function GM(e,n){let r=n.includes(`--json`),i=await KM(e);if(i.kind!==`ok`&&(t.stderr.write(`${e}: ${fb(i)}\n`),t.exit(1)),r){t.stdout.write(JSON.stringify(i.value,null,2)+`
191
+ `);return}t.stdout.write(qM(i.value))}function KM(e){return ob({kind:`debug`,what:e},WM,e=>`debug`in e?e.debug:void 0)}function qM(e){switch(e.what){case`vars`:return JM(e.vars);case`segments`:return YM(e.segments);case`config`:return XM(e.config);default:return e}}function JM(e){if(e.length===0)return`no variables (DSL not active)
192
+ `;let t=[`variables (${e.length})`,``],n=e.reduce((e,t)=>Math.max(e,t.name.length),4),r=e.reduce((e,t)=>Math.max(e,(t.source??`—`).length),6),i=e.reduce((e,t)=>Math.max(e,t.type.length),4);for(let a of e){let e=a.ageMs===null?``:` ${QM(a.ageMs)}`,o=a.lastError?` ✗ ${a.lastError.message}`:``;t.push(` ${a.name.padEnd(n)} ${(a.source??`—`).padEnd(r)} ${a.type.padEnd(i)} ${ZM(a.value)}${e}${o}`)}return t.join(`
192
193
  `)+`
193
- `}function BM(e){if(e.length===0)return`no segments (DSL not active)
194
+ `}function YM(e){if(e.length===0)return`no segments (DSL not active)
194
195
  `;let t=[`segments (${e.length})`,``];for(let n of e)t.push(` ${n.name}`),n.description!==null&&t.push(` shows ${n.description}`),t.push(` template ${n.template}`),n.referencedVars.length>0&&t.push(` vars ${n.referencedVars.join(`, `)}`),n.lastRender!==null&&t.push(` last ${n.lastRender}`);return t.join(`
195
196
  `)+`
196
- `}function VM(e){return e===null?`config: DSL not active
197
+ `}function XM(e){return e===null?`config: DSL not active
197
198
  `:JSON.stringify(e,null,2)+`
198
- `}function HM(e){let t=typeof e==`string`?e:JSON.stringify(e);return t.length>60?t.slice(0,57)+`…`:t}function UM(e){return e<1e3?`${e}ms`:e<6e4?`${(e/1e3).toFixed(1)}s`:`${Math.floor(e/6e4)}m`}function WM(){let e=KM();return e===null?null:r.readFileSync(e,`utf-8`)}function GM(){let e;try{e=WM()}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 KM(){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 qM(e){let t=e.CC_CANDYBAR_CONFIG??``;return t===``?void 0:t}const JM=5e3;function YM(e){let t=`/home/tester`,n=Math.floor(Date.now()/1e3);return{hook_event_name:`Status`,session_id:`test0a1b-2c3d-4e5f-6a7b-8c9d0e1f2a3b`,version:`1.15.0`,home:t,cwd:`${t}/code/cc-candybar/src`,transcript_path:`${t}/.claude/projects/x/test.jsonl`,model:{id:`claude-opus-4-8`,display_name:`Opus 4.8`},workspace:{current_dir:`${t}/code/cc-candybar/src`,project_dir:`${t}/code/cc-candybar`},git:{repoName:`cc-candybar`,repoUrl:`https://github.com/promptctl/cc-candybar`,branch:`main`,sha:`abc1234`,ahead:2,behind:1,staged:3,unstaged:2,untracked:1,conflicts:0,upstream:`origin/main`,stash:1,status:`dirty`,operation:`rebase`,timeSinceCommit:780},session:{cost:.39,tokens:241400},today:{cost:12.5,tokens:34e5},context:{totalTokens:48487,contextLeft:24},metrics:{lastResponseTime:8.2,responseTime:4.2,sessionDuration:930,messageCount:8,linesAdded:512,linesRemoved:88},block:{nativeUtilization:63,resetsAt:n+2*3600},weekly:{percentage:21,resetsAt:n+5*86400},cache:{expiresAt:n+900},tmux:{session:`work`},host:{name:`tester-box`,user:`tester`,ssh:!0},preset:{effective:e.preset,customized:e.presetCustomized},style:{effective:e.style},charset:{effective:e.charset},colorCompatibility:{effective:e.colorCompatibility},autoWrap:{effective:e.autoWrap},padding:{effective:e.padding}}}function XM(e,t){let n=Dy(e,e),r=ky(n);return r!==null&&t.push(r),n.kind===`file`?n.path:null}async function ZM(e,n=t.cwd()){let i=[],a=e===void 0?XM(n,i):c.resolve(wy(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=jy(n,n);o!==null&&i.push(o);try{return{kind:`clean`,configPath:a,warnings:i,rendered:await eN(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 za&&i.push(...e.warnings),{kind:`fatal`,configPath:a,message:e instanceof za||e instanceof Error?e.message:String(e),warnings:i})}}async function QM(e,t,n){let{config:r,source:i,warnings:a}=My(e,oE);n.push(...a);let o=Fy(r,e??`<default>`,i),s=new pk,c=new DD(s,o.globals.default_empty_value??``,void 0,new wk);try{let e=tk(o,c,{cwd:t});n.push(...e.loadWarnings);let r=await c.settled(JM);return r.length>0&&n.push(`source${r.length===1?``:`s`} still running after ${JM} ms, rendered with fallback values: ${r.join(`, `)}`),{config:o,compiled:e,store:s,registry:c}}catch(e){throw c.dispose(),e}}function $M({config:e,compiled:t,store:n,registry:r},i,a){let o=new Map;return{rendered:ak(e,t,n,r,YM(i),{style:i.style,separator:i.separator,width:a,colorCompatibility:i.colorCompatibility,wrap:i.autoWrap,padding:i.padding,charset:i.charset},{onSegmentError:(e,t)=>o.set(`segment "${e}"`,t),onRenderWarning:e=>o.set(`globals.palette`,e)},{theme:i.theme,look:i.look,preset:i.preset}),failures:o}}async function eN(e,t,n){let r=await QM(e,t,n),{config:i}=r;try{KC(i);let e=kT(i,()=>null,()=>!1),t=e=>$M(r,e,200),n=t(e),a=t({...e,presetCustomized:!0}),o=[...[...n.failures].map(([e,t])=>`${e}: ${t}`),...[...a.failures].filter(([e])=>!n.failures.has(e)).map(([e,t])=>`${e}: ${t} (under .preset.customized = true)`)];if(o.length>0)throw Error(`config renders with ${o.length} render error${o.length===1?``:`s`} (the daemon would show them on the bar):\n`+o.map(e=>` ${e}`).join(`
199
- `));return n.rendered}finally{r.registry.dispose()}}function tN(e){return e.map(e=>`warning: ${e}\n`).join(``)}function nN(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:tN(e.warnings),code:0};case`fatal`:return{stdout:``,stderr:tN(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 rN=`--render`,iN=`Usage: cc-candybar check [${rN}] [config-file]\n`;function aN(e){let t=e.filter(e=>e.startsWith(`--`)),n=e.filter(e=>!e.startsWith(`--`)),r=t.filter(e=>e!==rN);return r.length>0?{kind:`usage`,message:`check: unknown option ${r.join(` `)}\n${iN}`}:n.length>1||n[0]===``?{kind:`usage`,message:`check: expected at most one non-empty path\n${iN}`}:{kind:`run`,target:n[0],render:t.includes(rN)}}async function oN(e){let n=aN(e),r=n.kind===`usage`?{stdout:``,stderr:n.message,code:2}:nN(await ZM(n.target??qM(t.env)),n.render);t.stdout.write(r.stdout),t.stderr.write(r.stderr),t.exit(r.code)}const sN=`${kS}${OS}`;function cN(e){return`${sN}⚠ cc-candybar: ${lN(e)}\n`}function lN(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: ${DS(e.message,60)}`;case`render_failed`:return`render failed: ${DS(e.message,60)}`;case`malformed_response`:return`malformed daemon response: ${DS(e.message,60)}`}}function uN(e){switch(e.kind){case`ok`:return{output:e.value,kick:!1,debug:null};case`transient`:return{output:`
200
- `,kick:!0,debug:`daemon unavailable (transient: ${e.cause}: ${e.message}) — kicking daemon`};case`permanent`:return{output:cN(e),kick:!1,debug:`daemon refused request (permanent: ${e.cause}) — not kicking`}}}function dN(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 fN=` (fix: click the settings menu (${Wo} by default) › 🧰 tools ▸ 🩺 doctor, then [fix] on the bar)`;function pN({check:e,verdict:t}){return t.ok?`✓ ${e.label}\n`:`✗ ${e.label} — ${t.reason}${t.fix===void 0?``:fN}\n`}function mN(e,t){let n;try{n=wA(e,Eg(t))}catch(e){return{stdout:``,stderr:`doctor: ${e instanceof Error?e.message:String(e)}\n`,code:2}}let r=kg(n);return{stdout:r.map(pN).join(``),stderr:``,code:+!r.every(e=>e.verdict.ok)}}function hN(e){e.length>0&&(t.stderr.write(`doctor: takes no arguments
199
+ `}function ZM(e){let t=typeof e==`string`?e:JSON.stringify(e);return t.length>60?t.slice(0,57)+`…`:t}function QM(e){return e<1e3?`${e}ms`:e<6e4?`${(e/1e3).toFixed(1)}s`:`${Math.floor(e/6e4)}m`}function $M(){let e=tN();return e===null?null:r.readFileSync(e,`utf-8`)}function eN(){let e;try{e=$M()}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 tN(){let e=c.join(`schema`,`cc-candybar.schema.json`),n=t.argv[1];if(n===void 0)return null;let i=c.dirname(c.resolve(n));for(;;){let t=c.join(i,e);if(r.existsSync(t))return t;let n=c.dirname(i);if(n===i)return null;i=n}}function nN(e){let t=e.CC_CANDYBAR_CONFIG??``;return t===``?void 0:t}const rN=5e3;function iN(e){let t=`/home/tester`,n=Math.floor(Date.now()/1e3);return{hook_event_name:`Status`,session_id:`test0a1b-2c3d-4e5f-6a7b-8c9d0e1f2a3b`,version:`1.15.0`,home:t,cwd:`${t}/code/cc-candybar/src`,transcript_path:`${t}/.claude/projects/x/test.jsonl`,model:{id:`claude-opus-4-8`,display_name:`Opus 4.8`},workspace:{current_dir:`${t}/code/cc-candybar/src`,project_dir:`${t}/code/cc-candybar`},git:{repoName:`cc-candybar`,repoUrl:`https://github.com/promptctl/cc-candybar`,branch:`main`,sha:`abc1234`,ahead:2,behind:1,staged:3,unstaged:2,untracked:1,conflicts:0,upstream:`origin/main`,stash:1,status:`dirty`,operation:`rebase`,timeSinceCommit:780},session:{cost:.39,tokens:241400},today:{cost:12.5,tokens:34e5},context:{totalTokens:48487,contextLeft:24},metrics:{lastResponseTime:8.2,responseTime:4.2,sessionDuration:930,messageCount:8,linesAdded:512,linesRemoved:88},block:{nativeUtilization:63,resetsAt:n+2*3600},weekly:{percentage:21,resetsAt:n+5*86400},cache:{expiresAt:n+900},tmux:{session:`work`},host:{name:`tester-box`,user:`tester`,ssh:!0},...LT(e)}}function aN(e,t){let n=Fy(e,e),r=Ly(n);return r!==null&&t.push(r),n.kind===`file`?n.path:null}async function oN(e,n=t.cwd()){let i=[],a=e===void 0?aN(n,i):c.resolve(My(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=zy(n,n);o!==null&&i.push(o);try{return{kind:`clean`,configPath:a,warnings:i,rendered:await lN(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 Ga&&i.push(...e.warnings),{kind:`fatal`,configPath:a,message:e instanceof Ga||e instanceof Error?e.message:String(e),warnings:i})}}async function sN(e,t,n){let{config:r,source:i,warnings:a}=By(e,mE);n.push(...a);let o=Uy(r,e??`<default>`,i),s=new Sk,c=new FD(s,o.globals.default_empty_value??``,void 0,new Nk);try{let e=uk(o,c,{cwd:t});n.push(...e.loadWarnings);let r=await c.settled(rN);return r.length>0&&n.push(`source${r.length===1?``:`s`} still running after ${rN} ms, rendered with fallback values: ${r.join(`, `)}`),{config:o,compiled:e,store:s,registry:c}}catch(e){throw c.dispose(),e}}function cN({config:e,compiled:t,store:n,registry:r},i,a){let o=new Map;return{rendered:mk(e,t,n,r,iN(i),{style:i.style,separator:i.separator,width:a,colorCompatibility:i.colorCompatibility,wrap:i.autoWrap,padding:i.padding,charset:i.charset},{onSegmentError:(e,t)=>o.set(`segment "${e}"`,t),onRenderWarning:e=>o.set(`globals.palette`,e)},{theme:i.theme,look:i.look,preset:i.preset}),failures:o}}async function lN(e,t,n){let r=await sN(e,t,n),{config:i}=r;try{$C(i);let e=IT(i,()=>null,()=>!1),t=e=>cN(r,e,200),n=t(e),a=t({...e,presetCustomized:!0}),o=[...[...n.failures].map(([e,t])=>`${e}: ${t}`),...[...a.failures].filter(([e])=>!n.failures.has(e)).map(([e,t])=>`${e}: ${t} (under .preset.customized = true)`)];if(o.length>0)throw Error(`config renders with ${o.length} render error${o.length===1?``:`s`} (the daemon would show them on the bar):\n`+o.map(e=>` ${e}`).join(`
200
+ `));return n.rendered}finally{r.registry.dispose()}}function uN(e){return e.map(e=>`warning: ${e}\n`).join(``)}function dN(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:uN(e.warnings),code:0};case`fatal`:return{stdout:``,stderr:uN(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 fN=`--render`,pN=`Usage: cc-candybar check [${fN}] [config-file]\n`;function mN(e){let t=e.filter(e=>e.startsWith(`--`)),n=e.filter(e=>!e.startsWith(`--`)),r=t.filter(e=>e!==fN);return r.length>0?{kind:`usage`,message:`check: unknown option ${r.join(` `)}\n${pN}`}:n.length>1||n[0]===``?{kind:`usage`,message:`check: expected at most one non-empty path\n${pN}`}:{kind:`run`,target:n[0],render:t.includes(fN)}}async function hN(e){let n=mN(e),r=n.kind===`usage`?{stdout:``,stderr:n.message,code:2}:dN(await oN(n.target??nN(t.env)),n.render);t.stdout.write(r.stdout),t.stderr.write(r.stderr),t.exit(r.code)}const gN=`${LS}${IS}`;function _N(e){return`${gN}⚠ cc-candybar: ${vN(e)}\n`}function vN(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: ${FS(e.message,60)}`;case`render_failed`:return`render failed: ${FS(e.message,60)}`;case`malformed_response`:return`malformed daemon response: ${FS(e.message,60)}`}}function yN(e){switch(e.kind){case`ok`:return{output:e.value,kick:!1,debug:null};case`transient`:return{output:`
201
+ `,kick:!0,debug:`daemon unavailable (transient: ${e.cause}: ${e.message}) — kicking daemon`};case`permanent`:return{output:_N(e),kick:!1,debug:`daemon refused request (permanent: ${e.cause}) — not kicking`}}}function bN(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 xN=` (fix: click the settings menu (${Xo} by default) › 🧰 tools ▸ 🩺 doctor, then [fix] on the bar)`;function SN({check:e,verdict:t}){return t.ok?`✓ ${e.label}\n`:`✗ ${e.label} — ${t.reason}${t.fix===void 0?``:xN}\n`}function CN(e,t){let n;try{n=NA(e,Mg(t))}catch(e){return{stdout:``,stderr:`doctor: ${e instanceof Error?e.message:String(e)}\n`,code:2}}let r=Fg(n);return{stdout:r.map(SN).join(``),stderr:``,code:+!r.every(e=>e.verdict.ok)}}function wN(e){e.length>0&&(t.stderr.write(`doctor: takes no arguments
201
202
  Usage: cc-candybar doctor
202
- `),t.exit(2));let n=mN(yA(),t.env);t.stdout.write(n.stdout),t.stderr.write(n.stderr),t.exit(n.code)}function gN(){return dN(t.env.COLUMNS,t.stderr.columns)}function _N(){return dN(t.env.LINES,t.stderr.rows)}const vN=[`SSH_CONNECTION`,`SSH_CLIENT`,`SSH_TTY`],yN=e=>e.some(e=>t.argv.includes(e));function bN(){return vN.some(e=>(t.env[e]??``)!==``)}function xN(){console.log(fg)}async function SN(){try{yN(lg.help)&&(xN(),t.exit(0)),yN(lg.version)&&(console.log(`cc-candybar ${bx}`),t.exit(0));let e=t.argv[2];if(e===`install`&&(await eS(t.argv.slice(3)),t.exit(0)),e===`install-url-handler`&&(Yx(),t.exit(0)),e===`url-handle`){await Zx(t.argv[3]);return}if(e===`daemon`){oM();return}if(e===`daemon-stats`&&(await kM(t.argv.slice(3)),t.exit(0)),e===`check`||e===`lint`){await oN(t.argv.slice(3));return}if(e===`schema`){GM();return}if(e===`doctor`){hN(t.argv.slice(3));return}Tj(e)&&(await IM(e,t.argv.slice(3)),t.exit(0)),t.stdin.isTTY===!0&&(console.error(`Error: This tool requires input from Claude Code
203
+ `),t.exit(2));let n=CN(OA(),t.env);t.stdout.write(n.stdout),t.stderr.write(n.stderr),t.exit(n.code)}function TN(){return bN(t.env.COLUMNS,t.stderr.columns)}function EN(){return bN(t.env.LINES,t.stderr.rows)}const DN=[`SSH_CONNECTION`,`SSH_CLIENT`,`SSH_TTY`],ON=e=>e.some(e=>t.argv.includes(e));function kN(){return DN.some(e=>(t.env[e]??``)!==``)}function AN(){console.log(vg)}async function jN(){try{ON(hg.help)&&(AN(),t.exit(0)),ON(hg.version)&&(console.log(`cc-candybar ${Ox}`),t.exit(0));let e=t.argv[2];if(e===`install`&&(await cS(t.argv.slice(3)),t.exit(0)),e===`install-url-handler`&&(rS(),t.exit(0)),e===`url-handle`){await aS(t.argv[3]);return}if(e===`daemon`){hM();return}if(e===`daemon-stats`&&(await RM(t.argv.slice(3)),t.exit(0)),e===`check`||e===`lint`){await hN(t.argv.slice(3));return}if(e===`schema`){eN();return}if(e===`doctor`){wN(t.argv.slice(3));return}Pj(e)&&(await GM(e,t.argv.slice(3)),t.exit(0)),t.stdin.isTTY===!0&&(console.error(`Error: This tool requires input from Claude Code
203
204
 
204
205
  cc-candybar is designed to be used as a Claude Code statusLine command.
205
206
  It reads hook data from stdin and outputs formatted statusline.
@@ -215,4 +216,4 @@ Add to ~/.claude/settings.json:
215
216
  Run with --help for more options.
216
217
 
217
218
  To test output manually:
218
- 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`),xN(),t.exit(1));let i=uN(await cb(r,t.argv,t.cwd(),{termCols:gN(),termRows:_N(),ssh:bN(),tmux:Eg(t.env),configEnv:qM(t.env)}));i.debug!==null&&D(i.debug),i.kick&&jb(),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)}}SN();export{};
219
+ echo '{"session_id":"test-session","workspace":{"project_dir":"/path/to/project"},"model":{"id":"claude-sonnet-4-5","display_name":"Claude"}}' | cc-candybar --style=powerline`),t.exit(1)),D(`Working directory: ${t.cwd()}`),D(`Process args:`,t.argv);let r=await n(t.stdin);D(`Received hook data:`,JSON.stringify(r,null,2)),r||(console.error(`Error: No input data received from stdin`),AN(),t.exit(1));let i=yN(await gb(r,t.argv,t.cwd(),{termCols:TN(),termRows:EN(),ssh:kN(),tmux:Mg(t.env),configEnv:nN(t.env)}));i.debug!==null&&D(i.debug),i.kick&&zb(),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)}}jN();export{};