@promptctl/cc-candybar 1.97.4 → 1.98.1

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.
Files changed (2) hide show
  1. package/dist/index.mjs +66 -66
  2. package/package.json +5 -5
package/dist/index.mjs CHANGED
@@ -17,29 +17,29 @@ import{createRequire as e}from"node:module";import t from"node:process";import{j
17
17
  `)){r.push(i);continue}let a=t.split(`
18
18
  `);for(let t=0;t<a.length;t++){t>0&&(n.push(r),r=[]);let o=a[t];o.length>0&&r.push(new e(o,i.style))}}return r.length>0&&n.push(r),n}static adjustLineLength(t,n,r,i=!0){let a=e.getLineLength(t);if(a===n)return t;if(a<n)return i?[...t,new e(` `.repeat(n-a),r)]:t;let o=[],s=n;for(let e of t){if(e.isControl){o.push(e);continue}let t=e.cellLength;if(t<=s)o.push(e),s-=t;else{let[t]=e.splitCells(Lt(s));o.push(t),s=0;break}}return o}static*cropLines(t,n){let r=Math.max(0,n),i=0;for(let n of t){if(n.isControl){yield n;continue}let t=n.text.split(`
19
19
  `);for(let e=0;e<t.length;e++){e>0&&(i=0);let[n]=Bt(t[e],Lt(r-i));i+=M(n),t[e]=n}let a=t.join(`
20
- `);yield a===n.text?n:new e(a,n.style)}}static splitAndCropLines(t,n){return e.splitLines(t).map(t=>e.adjustLineLength(t,n))}static getLineLength(e){let t=0;for(let n of e)n.isControl||(t+=n.cellLength);return t}static getShape(t){if(t.length===0)return[0,0];let n=0;for(let r of t){let t=e.getLineLength(r);t>n&&(n=t)}return[n,t.length]}static*mergeHorizontal(t,n=0){let r=0;for(let e of t)e.lines.length>r&&(r=e.lines.length);let i=n>0?[new e(` `.repeat(n))]:[];for(let n=0;n<r;n++){for(let r=0;r<t.length;r++){r>0&&(yield*i);let a=t[r];yield*e.adjustLineLength(a.lines[n]??[],a.width)}yield e.line()}}static*simplify(t){let n;for(let r of t){if(!n){n=r;continue}ei(n.style,r.style)&&!r.isControl&&!n.isControl?n=new e(n.text+r.text,n.style):(yield n,n=r)}n&&(yield n)}static*stripLinks(t){for(let n of t)n.style?.link?yield new e(n.text,n.style.clearMetaAndLinks(),n.control):yield n}static*stripStyles(t){for(let n of t)yield new e(n.text,void 0,n.control)}static*removeColor(t){for(let n of t)n.style?yield new e(n.text,n.style.withoutColor,n.control):yield n}static divide(e,t){if(t.length===0)return[e];let n=[],r=0,i=0,a=e[r];for(let o of t){let t=[];for(;a&&i+a.cellLength<=o;)a.isControl?t.push(a):(t.push(a),i+=a.cellLength),r++,a=e[r];if(a&&!a.isControl&&i<o){let e=Lt(o-i),[n,r]=a.splitCells(e);n.hasText&&t.push(n),i+=n.cellLength,a=r}n.push(t)}let o=[];for(a?.hasText&&o.push(a),r++;r<e.length;)o.push(e[r]),r++;return o.length>0&&n.push(o),n}static alignTop(t,n,r,i){let a=t.map(t=>e.adjustLineLength(t,n,i)),o=[new e(` `.repeat(n),i)];for(;a.length<r;)a.push([...o]);return a.slice(0,r)}static alignBottom(t,n,r,i){let a=t.map(t=>e.adjustLineLength(t,n,i)),o=[new e(` `.repeat(n),i)],s=Math.max(0,r-a.length),c=[];for(let e=0;e<s;e++)c.push([...o]);return c.push(...a),c.slice(0,r)}static alignMiddle(t,n,r,i){let a=t.map(t=>e.adjustLineLength(t,n,i)),o=[new e(` `.repeat(n),i)],s=Math.max(0,Math.floor((r-a.length)/2)),c=[];for(let e=0;e<s;e++)c.push([...o]);for(c.push(...a);c.length<r;)c.push([...o]);return c.slice(0,r)}static setShape(t,n,r,i){let a=t.map(t=>e.adjustLineLength(t,n,i)),o=[new e(` `.repeat(n),i)];for(;a.length<r;)a.push([...o]);return a.slice(0,r)}};function ei(e,t){return e===t?!0:!e||!t?!1:e.equals(t)}const ti=/^[\x00-\x7F]*$/;function ni(e,t,n,r=String){return e.asciiOnly===!0&&!ti.test(r(t))?n:t}function ri(e,t){return(e.theme??Zr).resolve(t)}function ii(e){return{...e,maxWidth:zt(e.maxWidth)}}function ai(e){return{...e,onDraw:void 0}}function oi(e,t){let n=ii(e);if(Number.isFinite(n.maxWidth))return n;let r=t.measure(ai(n)).maximum;if(!Number.isFinite(r))throw RangeError(`maxWidth is unbounded and this renderable has no natural width to fall back on: its content does not implement measure(), or something inside it asked for an unbounded width of its own. Render it at a finite width, or give the content a measure() that reports a finite maximum.`);return{...n,maxWidth:zt(r)}}function*si(e){let t=/\s*\S+\s*/y;for(let n=t.exec(e);n!==null;n=t.exec(e))yield n[0]}function ci(e,t){let n=Vt(e,t);return M(n[0])>t?[``,...n]:n}function li(e,t,n){if(t<=0)return[];let r=[],i=e=>{e>0&&r.push(Lt(e))},a=0,o=0;for(let r of si(e)){let e=M(r.trimEnd());if(t-a>=e)a+=M(r);else if(n.fold&&e>t){let e=ci(r,t),n=o;for(let t=0;t<e.length;t+=1){i(n);let r=e[t];t===e.length-1?a=M(r):n+=M(r)}}else i(o),a=M(r);o+=M(r)}return r}const ui=`\\x1b\\x07\\x9c`,di=RegExp(`[${ui}]`,`g`);function fi(e){return e.replace(di,``)}const pi=new TextEncoder;function mi(e){let t=2166136261;for(let n of pi.encode(e))t^=n,t=Math.imul(t,16777619);return(t>>>0).toString(16).padStart(8,`0`)}function hi(e){let t=fi(e);return`\x1b]8;id=${mi(t)};${t}\x1b\\`}const gi=RegExp(`\\x1b\\]8;([^;${ui}]*);([^${ui}]*)(?:\\x1b\\\\|\\x07|\\x9c)`);new RegExp(gi.source,`g`);const _i=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g;function vi(e){return e.replace(_i,``)}const yi=/\s+$/;function bi(e){return e.map(e=>e.text).join(``)}function xi(e){return M(yi.exec(bi(e))?.[0]??``)}function Si(e){let t=e.link;if(!t)return e;let n=fi(t);return n===t?e:e.withLink(n)}function Ci(e){return e instanceof V?Si(e.anchor?e.withAnchor(void 0):e):e}function wi(e){return e instanceof V?e.isNull:e===``}function Ti(e,t){return Si(t instanceof V?t:Ei(e,t))}function Ei(e,t){try{return ri(e,t)}catch(n){if(!(n instanceof Rr))throw n;return e.onStyleError?.(n,t),Br}}var Di=class e{start;end;style;constructor(e,t,n){this.start=e,this.end=t,this.style=n}get hasLength(){return this.end>this.start}toString(){return`Span(${this.start}, ${this.end})`}split(t){return t<=this.start||t>=this.end?[this,void 0]:[new e(this.start,t,this.style),new e(t,this.end,this.style)]}move(t){return new e(this.start+t,this.end+t,this.style)}rightCrop(t){return t>=this.end?this:new e(this.start,Math.min(this.end,t),this.style)}extend(t){return new e(this.start,this.end+t,this.style)}},U=class e{_text;_spans;_style;_justify;_overflow;_end;_tabSize;_noWrap;constructor(e,t){this._text=e?vi(e):``,this._spans=[],this._style=Ci(t?.style??Br),this._justify=t?.justify,this._overflow=t?.overflow,this._end=t?.end??`
20
+ `);yield a===n.text?n:new e(a,n.style)}}static splitAndCropLines(t,n){return e.splitLines(t).map(t=>e.adjustLineLength(t,n))}static getLineLength(e){let t=0;for(let n of e)n.isControl||(t+=n.cellLength);return t}static getShape(t){if(t.length===0)return[0,0];let n=0;for(let r of t){let t=e.getLineLength(r);t>n&&(n=t)}return[n,t.length]}static*mergeHorizontal(t,n=0){let r=0;for(let e of t)e.lines.length>r&&(r=e.lines.length);let i=n>0?[new e(` `.repeat(n))]:[];for(let n=0;n<r;n++){for(let r=0;r<t.length;r++){r>0&&(yield*i);let a=t[r];yield*e.adjustLineLength(a.lines[n]??[],a.width)}yield e.line()}}static*simplify(t){let n;for(let r of t){if(!n){n=r;continue}ei(n.style,r.style)&&!r.isControl&&!n.isControl?n=new e(n.text+r.text,n.style):(yield n,n=r)}n&&(yield n)}static*stripLinks(t){for(let n of t)n.style?.link?yield new e(n.text,n.style.clearMetaAndLinks(),n.control):yield n}static*stripStyles(t){for(let n of t)yield new e(n.text,void 0,n.control)}static*removeColor(t){for(let n of t)n.style?yield new e(n.text,n.style.withoutColor,n.control):yield n}static divide(e,t){if(t.length===0)return[e];let n=[],r=0,i=0,a=e[r];for(let o of t){let t=[];for(;a&&i+a.cellLength<=o;)a.isControl?t.push(a):(t.push(a),i+=a.cellLength),r++,a=e[r];if(a&&!a.isControl&&i<o){let e=Lt(o-i),[n,r]=a.splitCells(e);n.hasText&&t.push(n),i+=n.cellLength,a=r}n.push(t)}let o=[];for(a?.hasText&&o.push(a),r++;r<e.length;)o.push(e[r]),r++;return o.length>0&&n.push(o),n}static alignTop(t,n,r,i){let a=t.map(t=>e.adjustLineLength(t,n,i)),o=[new e(` `.repeat(n),i)];for(;a.length<r;)a.push([...o]);return a.slice(0,r)}static alignBottom(t,n,r,i){let a=t.map(t=>e.adjustLineLength(t,n,i)),o=[new e(` `.repeat(n),i)],s=Math.max(0,r-a.length),c=[];for(let e=0;e<s;e++)c.push([...o]);return c.push(...a),c.slice(0,r)}static alignMiddle(t,n,r,i){let a=t.map(t=>e.adjustLineLength(t,n,i)),o=[new e(` `.repeat(n),i)],s=Math.max(0,Math.floor((r-a.length)/2)),c=[];for(let e=0;e<s;e++)c.push([...o]);for(c.push(...a);c.length<r;)c.push([...o]);return c.slice(0,r)}static setShape(t,n,r,i){let a=t.map(t=>e.adjustLineLength(t,n,i)),o=[new e(` `.repeat(n),i)];for(;a.length<r;)a.push([...o]);return a.slice(0,r)}};function ei(e,t){return e===t?!0:!e||!t?!1:e.equals(t)}const ti=/^[\x00-\x7F]*$/;function ni(e,t,n,r=String){return e.asciiOnly===!0&&!ti.test(r(t))?n:t}function ri(e,t){return(e.theme??Zr).resolve(t)}function ii(e){return{...e,maxWidth:zt(e.maxWidth)}}function ai(e){return{...e,onDraw:void 0}}function oi(e,t){let n=ii(e);if(Number.isFinite(n.maxWidth))return n;let r=t.measure(ai(n)).maximum;if(!Number.isFinite(r))throw RangeError(`maxWidth is unbounded and this renderable has no natural width to fall back on: its content does not implement measure(), or something inside it asked for an unbounded width of its own. Render it at a finite width, or give the content a measure() that reports a finite maximum.`);return{...n,maxWidth:zt(r)}}function*si(e){let t=/\s*\S+\s*/y;for(let n=t.exec(e);n!==null;n=t.exec(e))yield n[0]}function ci(e,t){let n=Vt(e,t);return M(n[0])>t?[``,...n]:n}function li(e,t,n){if(t<=0)return[];let r=[],i=e=>{e>0&&r.push(Lt(e))},a=0,o=0;for(let r of si(e)){let e=M(r.trimEnd());if(t-a>=e)a+=M(r);else if(n.fold&&e>t){let e=ci(r,t),n=o;for(let t=0;t<e.length;t+=1){i(n);let r=e[t];t===e.length-1?a=M(r):n+=M(r)}}else i(o),a=M(r);o+=M(r)}return r}const ui=`\\x1b\\x07\\x9c`,di=RegExp(`[${ui}]`,`g`);function fi(e){return e.replace(di,``)}const pi=new TextEncoder;function mi(e){let t=2166136261;for(let n of pi.encode(e))t^=n,t=Math.imul(t,16777619);return(t>>>0).toString(16).padStart(8,`0`)}function hi(e){let t=fi(e);return`\x1b]8;id=${mi(t)};${t}\x1b\\`}const gi=RegExp(`\\x1b\\]8;([^;${ui}]*);([^${ui}]*)(?:\\x1b\\\\|\\x07|\\x9c)`);new RegExp(gi.source,`g`);const _i=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g;function vi(e){return e.replace(_i,``)}const yi=/\s+$/;function bi(e){return e.map(e=>e.text).join(``)}function xi(e){return M(yi.exec(bi(e))?.[0]??``)}function Si(e){let t=e.link;if(!t)return e;let n=fi(t);return n===t?e:e.withLink(n)}function Ci(e){return e instanceof V?Si(e.anchor?e.withAnchor(void 0):e):e}function wi(e){return e instanceof V?e.isNull:e===``}function Ti(e,t){return Si(t instanceof V?t:Ei(e,t))}function Ei(e,t){try{return ri(e,t)}catch(n){if(!(n instanceof Rr))throw n;return e.onStyleError?.(n,t),Br}}var Di=class e{start;end;style;constructor(e,t,n){this.start=e,this.end=t,this.style=n}get hasLength(){return this.end>this.start}toString(){return`Span(${this.start}, ${this.end})`}split(t){return t<=this.start||t>=this.end?[this,void 0]:[new e(this.start,t,this.style),new e(t,this.end,this.style)]}move(t){return new e(this.start+t,this.end+t,this.style)}rightCrop(t){return t>=this.end?this:new e(this.start,Math.min(this.end,t),this.style)}extend(t){return new e(this.start,this.end+t,this.style)}},Oi=class e{_text;_spans;_style;_justify;_overflow;_end;_tabSize;_noWrap;constructor(e,t){this._text=e?vi(e):``,this._spans=[],this._style=Ci(t?.style??Br),this._justify=t?.justify,this._overflow=t?.overflow,this._end=t?.end??`
21
21
  `,this._tabSize=t?.tabSize??8,this._noWrap=t?.noWrap??!1}get plain(){return this._text}set plain(e){let t=vi(e);this._text=t;let n=t.length;this._spans=this._spans.map(e=>e.end>n?new Di(e.start,Math.min(e.end,n),e.style):e).filter(e=>e.start<n)}get length(){return this._text.length}get cellLength(){return M(this._text)}get hasContent(){return this._text.length>0}get style(){return this._style}set style(e){this._style=Ci(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 Ti(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(Ti(t,e.style)));return i}append(t,n){if(t instanceof e){if(n!==void 0)throw Error(`Style argument must not be provided when appending RichText`);let e=this._text.length;this._text+=t._text,this._addSpan(e,this._text.length,t._style);for(let n of t._spans)this._spans.push(n.move(e));return this}let r=vi(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 Di(t,n,e.style))}return l}_addSpan(e,t,n){let r=Ci(n);wi(r)||this._spans.push(new Di(e,t,r))}stylize(e,t,n){let r=this._text.length,i=t===void 0?0:t<0?r+t:t,a=n===void 0?r:n<0?r+n:n;if(i>=a||i>=r||a<=0)return this;let o=Math.max(0,i),s=Math.min(r,a);return this._addSpan(o,s,e),this}highlightRegex(e,t){let n=this._text,r=0,i=e.flags.includes(`g`)?e.flags:e.flags+`g`,a=new RegExp(e.source,i),o;for(;(o=a.exec(n))!==null;){if(o[0].length===0){a.lastIndex++;continue}if(o.groups){let e=0;for(let[t,n]of Object.entries(o.groups))if(n!==void 0){let r=o[0].indexOf(n,e);if(r>=0){let i=o.index+r;this._addSpan(i,i+n.length,t),e=r+n.length}}r++;continue}this._addSpan(o.index,o.index+o[0].length,t??``),r++}return r}highlightWords(e,t,n){let r=n?.caseSensitive!==!1,i=0;for(let n of e){if(n.length===0)continue;let e=n.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),a=r?`g`:`gi`,o=RegExp(`\\b${e}\\b`,a),s;for(;(s=o.exec(this._text))!==null;)this._addSpan(s.index,s.index+s[0].length,t),i++}return i}copy(){let t=new e(this._text,{style:this._style,justify:this._justify,overflow:this._overflow,end:this._end,tabSize:this._tabSize,noWrap:this._noWrap});return t._spans=this._spans.slice(),t}blankCopy(t){return new e(t??``,{style:this._style,justify:this._justify,overflow:this._overflow,end:this._end,tabSize:this._tabSize,noWrap:this._noWrap})}split(e){let t=e??`
22
22
  `,n=this._text,r=[],i=0;for(;;){let e=n.indexOf(t,i);if(e===-1){r.push(this.slice(i));break}r.push(this.slice(i,e)),i=e+t.length}return r}divide(e){if(e.length===0)return[this.copy()];let t=[],n=0;for(let r of e)t.push(this.slice(n,r)),n=r;return t.push(this.slice(n)),t}rstrip(){let e=this._text.replace(/\s+$/,``);return e.length<this._text.length&&(this.plain=e),this}pad(e,t){let n=(t??` `).repeat(e);return this._spans=this._spans.map(t=>t.move(e)),this._text=n+this._text+n,this}padLeft(e,t){let n=t??` `;return this._spans=this._spans.map(t=>t.move(e)),this._text=n.repeat(e)+this._text,this}padRight(e,t){let n=t??` `;return this._text+=n.repeat(e),this}setLength(e){return this._text.length<e?this._text+=` `.repeat(e-this._text.length):this._text.length>e&&(this.plain=this._text.slice(0,e)),this}extendStyle(e){let t=this._text.length;return this._text+=` `.repeat(e),this._spans=this._spans.map(n=>n.end===t?n.extend(e):n),this}truncate(e,t){if(this.cellLength<=e)return this;let n=t?.mode??`right`,r=zt(e),i=Wt(t?.marker??`…`,r),a=Lt(r-M(i));if(n===`right`)return this._cropRightTo(a),i&&(this._text+=i),this;if(n===`left`)return this._cropLeftTo(a),i&&(this._spans=this._spans.map(e=>e.move(i.length)),this._text=i+this._text),this;let o=Lt(Math.floor(a/2)),s=Lt(a-o),c=Wt(this._text,o).length,l=this._text.length-Gt(this._text,s).length,u=this._text.slice(0,c),d=this._text.slice(l),f=c,p=l,m=i.length-(p-f),h=[];for(let e of this._spans)e.end<=f?h.push(e):e.start>=p?h.push(e.move(m)):(e.start<f&&h.push(new Di(e.start,f,e.style)),e.end>p&&h.push(new Di(p+m,e.end+m,e.style)));return this._text=u+i+d,this._spans=h,this}_cropRightTo(e){this.plain=Wt(this._text,e)}_cropLeftTo(e){let t=this._text.length-Gt(this._text,e).length,n=-t;this._spans=this._spans.map(e=>{if(!(e.end<=t))return new Di(Math.max(0,e.start+n),e.end+n,e.style)}).filter(e=>e!==void 0),this._text=this._text.slice(t)}align(e,t){let n=this.cellLength;if(n>=t)return this;let r=t-n;switch(e){case`left`:this.padRight(r);break;case`right`:this.padLeft(r);break;case`center`:{let e=Math.floor(r/2),t=r-e;this.padLeft(e),this.padRight(t);break}}return this}removeSuffix(e){return this._text.endsWith(e)&&(this.plain=this._text.slice(0,-e.length)),this}appendTokens(e){for(let[t,n]of e)this.append(t,n);return this}static assemble(t,n){let r=new e(``,{style:n?.style});for(let n of t)if(typeof n==`string`)r.append(n);else if(n instanceof e)r.append(n);else{let[e,t]=n;r.append(e,t)}return r}static styled(t,n){let r=new e(t);return r.stylize(n),r}static fromFragments(t,n){let r=new e(``,{end:n?.end??``});for(let e of t)r.append(e);return r}*render(e){let t=this._expandTabs(this._text),n=this.resolvedStyle(e),r=this._buildSegments(t,n,e),i=H.splitLines(r),a=zt(oi(e,this).maxWidth),o=this._overflow??e.overflow??`fold`,s=this._noWrap||(e.noWrap??!1),c=o===`ignore`?zt(1/0):a,l=s?zt(1/0):c,u=o===`ignore`?void 0:this._justify??e.justify,d=ni(e,`…`,`.`),f=t.endsWith(`
23
23
  `);for(let e=0;e<i.length;e+=1){let t=i[e],r=e<i.length-1||f,s=li(bi(t),l,{fold:o===`fold`}),p=H.divide(t,s),m=this._justifyLines(p.map(e=>[...this._fitLine(e,c,o,d)]),a,n,u);for(let e=0;e<m.length;e+=1)yield*m[e],(e<m.length-1||r)&&(yield H.line())}this._end&&(yield new H(this._end))}measure(e){let t=this._expandTabs(this._text).split(`
24
- `),n=0,r=0;for(let e of t){let t=M(e);n=Math.max(n,t);let i=e.split(/\s+/);for(let e of i)e.length>0&&(r=Math.max(r,M(e)))}let i=zt(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=Ti(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 H(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=H.adjustLineLength(e,H.getLineLength(e)-xi(e),void 0,!1),i=Math.max(t-H.getLineLength(r),0),a=n===`center`?Math.floor(i/2):i;a>0&&(yield new H(` `.repeat(a))),yield*r;let o=i-a;o>0&&(yield new H(` `.repeat(o)));break}case`left`:yield*H.adjustLineLength(e,Math.max(t,H.getLineLength(e)));break;default:yield*e;break}}_fillLine(e,t,n){let r=bi(e),i=r.split(` `);r.endsWith(` `)&&i.pop();let a=i.length-1,o=Array(a).fill(1),s=i.reduce((e,t)=>e+M(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+=M(i[e]),c.push(l),l+=1,e<a&&c.push(l);let u=H.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 H(` `.repeat(o[e]),i.isNull?void 0:i))}return f}*_fitLine(e,t,n,r){let i=H.getLineLength(e);if(i-xi(e)<=t){yield*H.adjustLineLength(e,Math.min(i,t),void 0,!1);return}if(n===`ellipsis`&&t>0){yield*H.adjustLineLength(e,t-1,void 0,!1),yield new H(r);return}yield*H.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 H.line()}}};const ki={*render(e){}};function Ai(e){return{render:e}}function W(e){return new V({color:e.bgcolor})}function ji(e){return e!==void 0&&!e.isDefault?e:void 0}function Mi(e){return new V({bgcolor:e}).drawnColors().bgcolor}function*Ni(e,t){e!==``&&(yield new H(e,new V({color:Mi(t)})))}function Pi(e,t){let{color:n,bgcolor:r}=e.drawnColors(t??F.TRUECOLOR);if(n===void 0||r===void 0)return!1;let i=n.fixedValue,a=r.fixedValue;return i!==void 0&&a!==void 0?B.fromRgba(i).deltaE(B.fromRgba(a))<.04:n.number===r.number}const Fi=Object.freeze({glyph:``,divider:``,lead:``,tail:``}),Ii=Object.freeze({glyph:`>`,divider:`>`,lead:``,tail:`>`}),Li=({glyph:e,divider:t,lead:n,tail:r})=>e+t+n+r;var Ri=class{_glyphs;constructor(e=Fi){this._glyphs=e}join(e,t){let n=this._glyphs;return Ai(function*(r){let{glyph:i,divider:a,lead:o,tail:s}=ni(r,n,Ii,Li),c=e?.edgeStyle(`right`,r),l=ji(c?.bgcolor),u=ji(t?.edgeStyle(`left`,r).bgcolor);if(l===void 0){u!==void 0&&(yield*Ni(o,u));return}if(u===void 0){yield*Ni(s,l);return}let d=new V({color:Mi(l),bgcolor:u});yield Pi(d,r.colorSystem)?new H(a,new V({color:c?.color,bgcolor:l})):new H(i,d)})}};const zi={left:`(`,right:`)`},Bi=({left:e,right:t})=>e+t;var Vi=class{_caps;_separator;constructor(e){this._caps={left:e?.left??``,right:e?.right??``},this._separator=e?.separator??` `}*_emit(e,t,n){let r=ni(n,this._caps,zi,Bi),i=ni(n,this._separator,` `);if(!(e===null&&t===null)){if(e===null){yield new H(r.left,W(t.edgeStyle(`left`,n)));return}if(t===null){yield new H(r.right,W(e.edgeStyle(`right`,n)));return}yield new H(r.right,W(e.edgeStyle(`right`,n))),i.length>0&&(yield new H(i)),yield new H(r.left,W(t.edgeStyle(`left`,n)))}}join(e,t){return Ai(n=>this._emit(e,t,n))}},Hi=class{_separator;_style;constructor(e){this._separator=e?.separator??` | `,this._style=e?.style??V.parse(`dim`)}join(e,t){if(e===null||t===null)return ki;let n=this._separator,r=this._style;return Ai(e=>[new H(ni(e,n,` | `),r)])}};function Ui(e,t){if(e.isControl||e.text.length===0)return;let n=e.style;return!n||n.isNull?{text:e.text,sgrCodes:``,link:void 0}:{text:e.text,sgrCodes:t.colorSystem===null?``:n.toSgrCodes(t.colorSystem),link:t.hyperlinks?n.link:void 0}}function Wi(e,t){let n=[];for(let r of e){let e=Ui(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(hi(e));for(let e=a;e<i;e++)r.push(n[e].text);r.push(`\x1B]8;;\x1B\\`)}else for(let e=a;e<i;e++)r.push(n[e].text);a=i}e.length>0&&r.push(`\x1B[0m`),i=t}return r.join(``)}function Gi(e,t){let n=t?.width??80,r={};t?.env!==void 0&&(r.env=t.env),t?.isTTY!==void 0&&(r.isTTY=t.isTTY);let i=t?.colorSystem,a=fn(i===void 0?F.TRUECOLOR:i,r),o={colorSystem:t?.noColor?null:a.colorSystem,hyperlinks:t?.hyperlinks??a.hyperlinks},s={maxWidth:n,isTerminal:!1,asciiOnly:t?.asciiOnly??!1,onStyleError:t?.onStyleError,colorSystem:o.colorSystem};return Wi(e.render(s),o)}function Ki(e,t){let n=[...e.render(t)],r=0;for(let e of n)r+=e.cellLength;return{segments:n,width:r}}const qi={segments:[],width:0},Ji={left:()=>0,justify:()=>0,center:e=>Math.floor(e/2),right:e=>e};function Yi(e,t){return Ji[e](t)}function Xi(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 Zi=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=>Ki(t,e)),o=n=>i?Ki(i.join(null,t[n]),e):qi,s=n=>i?Ki(i.join(t[n],null),e):qi,c=(n,r)=>i?Ki(i.join(t[n],t[r]),e):qi,l=[],u=null,d=r>0?{segments:[new H(` `.repeat(r))],width:r}:qi;for(let e=0;e<t.length;e++){let t=a[e];if(u===null){let n=o(e),r=s(e),i=n.width>0?[n,t]:[t],a=[i.length-1];u={blocks:i,width:n.width+t.width,lastIndex:e,itemBlockIndices:a},u.endCap=r;continue}let i=u.lastIndex,f=c(i,e),p=s(e),m=(r>0?r:0)+f.width+(r>0?r:0)+t.width;if(u.width+m+p.width<=n)r>0&&u.blocks.push(d),f.width>0&&u.blocks.push(f),r>0&&u.blocks.push(d),u.blocks.push(t),u.itemBlockIndices.push(u.blocks.length-1),u.width+=m,u.lastIndex=e,u.endCap=p;else{let n=u.endCap;n.width>0&&u.blocks.push(n),u.width+=n.width,l.push(u);let r=o(e),i=s(e),a=r.width>0?[r,t]:[t],c=[a.length-1];u={blocks:a,width:r.width+t.width,lastIndex:e,itemBlockIndices:c},u.endCap=i}}let f=u;{let e=f.endCap;e.width>0&&f.blocks.push(e),f.width+=e.width,l.push(f)}let p=this.align;for(let e=0;e<l.length;e++){let t=l[e],r=e===l.length-1,i=Math.max(0,n-t.width),a=Yi(p,i),o=Xi(p,r,i,t.itemBlockIndices.length),s=new Map;t.itemBlockIndices.forEach((e,t)=>s.set(e,t)),a>0&&(yield new H(` `.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 H(` `.repeat(e)))}yield*t.blocks[e].segments}yield H.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=Ki(t[i],e).width,o=this.joiner?Ki(this.joiner.join(null,t[i]),e).width:0,s=this.joiner?Ki(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+=Ki(this.joiner.join(t[i-1],t[i]),e).width))}return this.joiner&&(r+=Ki(this.joiner.join(null,t[0]),e).width,r+=Ki(this.joiner.join(t[t.length-1],null),e).width),{minimum:n,maximum:r}}};const Qi=[`primary`,`secondary`,`accent`],$i={"secondary-accent":[`secondary`,`accent`],"primary-secondary":[`primary`,`secondary`],primary:[`primary`]},ea=`accent`,ta=[0,.5,1],na=e=>e.flatMap(e=>ta.map(t=>({hue:e,tone:t}))),ra=na(Qi.filter(e=>Object.values($i).some(t=>t.includes(e)))),ia=e=>{let t=0,n=.5;for(let r=e;r>0;r>>=1,n/=2)t+=n*(r&1);return t},aa=[`van-der-corput`,`golden-angle`,`ends-interleaved`,`monotonic`,`uniform`],oa=e=>typeof e==`string`&&aa.includes(e),sa={"van-der-corput":ia,"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},ca=e=>sa[e??`van-der-corput`];function la(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 ua=(e,t)=>Math.floor(e*t),da=(e,t)=>Math.round(e*t)%t;function fa(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 pa(e,t){let n=t.findIndex(e=>e.axis===`cell`),r=n===-1?t:t.slice(0,n);return{hue:fa(e,r.at(-1),ua),tone:fa(ta,t[r.length],da)}}function ma(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 ha(e,t){let n=ga.get(e);n===void 0&&(n=new Map,ga.set(e,n));let r=`${t.hue}|${t.tone}`,i=n.get(r);if(i!==void 0)return i;let a=B.fromRgba(ma(e,t.hue)),o=B.fromRgba(ma(e,`surface`)),s=(e,t)=>e.mixAxes(a,{l:t,c:.8,h:1,alpha:0}),c=s(o.mixAxes(B.fromRgba(ma(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 ga=new WeakMap,_a=(e,t,n)=>ha(e,pa(t,n)),va=2.2;function ya(e,t,n){let r=ba(e,t,n);if(`refused`in r)throw Error(r.refused);return r.state}function ba(e,t,n){let r=xa.get(e);r===void 0&&(r=new Map,xa.set(e,r));let i=`${t}|${n}`,a=r.get(i);if(a!==void 0)return a;let o=Sa(e,t,n);return r.set(i,o),o}const xa=new WeakMap;function Sa(e,t,n){let r=ra.map(t=>ar(ha(e,t),F.TRUECOLOR)),i=Cn(ma(e,`surface`),ma(e,t),.92),a=ma(e,`foreground`),o=r.reduce((e,t)=>rr(e,t,va),a),s=[...Array.from({length:13},(e,t)=>Cn(i,a,t/12)),o].find(e=>r.every(t=>P(ar(e,F.TRUECOLOR),t)>=va));if(s===void 0)return{refused:`palette "${e.name}": "${t}" cannot clear the ${va} state floor even beyond foreground`};let c=ir(s,n,(e,t)=>r.every(n=>P(e,t(n))>=va));return c===void 0?{refused:`palette "${e.name}": "${t}" cannot clear the ${va} state floor on the colours drawn at depth ${F[n]}`}:{state:c}}const Ca=4.5;function wa(e,t,n){let r=Ta.get(e);r===void 0&&(r=new Map,Ta.set(e,r));let i=`${t.hex}|${n}`,a=r.get(i);if(a!==void 0)return a;let o=nr(t),s=rr([`background`,`foreground`].map(t=>ma(e,t)).reduce((e,t)=>P(o,t)<P(o,e)?t:e),t,Ca,n);return r.set(i,s),s}const Ta=new WeakMap,Ea={base:.42,perDepth:.14,cap:.75},Da={floor:.12,span:.8};function Oa(e,t){return Qi[(Qi.indexOf(e)+t)%Qi.length]}const ka={triggerPlane:.1,nestedPlane:.035,nestedTriggerPlane:.08};function Aa(e,t,n){let r=`${t.hue}|${t.depth}|${n}`,i=Ia.get(e);i===void 0&&(i=new Map,Ia.set(e,i));let a=i.get(r);if(a!==void 0)return a;let o=ya(e,Oa(t.hue,t.depth),n),s=Fa(e,t,o,n),c=ir(Ma(e,t).plane,n,(e,t)=>s.every(([n,r])=>ja(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 ${F[n]}`);let l={state:o,plane:c};return i.set(r,l),l}const ja=(e,t)=>B.fromRgba(e).deltaE(B.fromRgba(t));function Ma(e,t){let n=`${t.hue}|${t.depth}`,r=Na.get(e);r===void 0&&(r=new Map,Na.set(e,r));let i=r.get(n);if(i!==void 0)return i;let a=Pa(e,t);return r.set(n,a),a}const Na=new WeakMap;function Pa(e,t){let n=ya(e,Oa(t.hue,t.depth),F.TRUECOLOR),r=Math.min(Ea.cap,Ea.base+Ea.perDepth*t.depth);return{state:n,plane:Cn(n,ma(e,`background`),r)}}function Fa(e,t,n,r){let{hue:i,depth:a}=t,o=t=>Ma(e,{hue:i,depth:t}).state,s=t=>Ma(e,{hue:i,depth:t}).plane,c=e=>ar(e,F.TRUECOLOR),l=s(a),u=(e,t)=>ja(c(l),c(t))>=e?e:0,d=Oa(i,a+1),f=ba(e,d,r),p=ba(e,d,F.TRUECOLOR);return[[n,u(ka.triggerPlane,o(a))],...`state`in f&&`state`in p?[[f.state,u(ka.nestedTriggerPlane,p.state)]]:[],...a>0?[[Aa(e,{hue:i,depth:a-1},r).plane,u(ka.nestedPlane,s(a-1))]]:[]]}const Ia=new WeakMap;function La(e,t,n,r){let i=Aa(e,t,r),a=Ma(e,t),o=ir(Cn(a.plane,a.state,Da.floor+Da.span*la(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 ${F[r]}, and nothing that depth draws is neither`);return o}const Ra=e=>({kind:`bar`,progression:e,address:[]}),za=(e,t)=>({...e,address:[...e.address,t]}),Ba=e=>({kind:`band`,band:e,address:[]});function Va(e,t,n){switch(t.kind){case`bar`:return{tint:_a(e,t.progression,t.address),disclosure:{hue:ea,depth:0}};case`band`:return{tint:La(e,t.band,t.address,n),disclosure:{hue:t.band.hue,depth:t.band.depth+1}}}}const Ha=new Map([[`dark`,`textual-dark`],[`light`,`textual-light`]]);function Ua(e){let t=typeof e==`string`?Ha.get(e):void 0;return t===void 0?``:` — "${e}" was retired; write "${t}", the same palette`}const Wa=`textual-dark`;function Ga(e,t,n,r,i){let a=t===null?null:i(t);return e??a??n??r}function Ka(){return br()}function qa(){return[`bar`,...Ka()]}let Ja;function Ya(e){return Ja??=new Set(qa()),Ja.has(e)}function Xa(e,t,n,r,i){let a=e=>Object.prototype.hasOwnProperty.call(i,e)?e:null;return Ga(e===void 0?null:a(e),t,a(n??r),r,a)}const Za=[`look`,`palette`];function Qa(e){return e!==void 0&&e.includes(`{{`)}function $a(e,t,n,r,i){let a=Qa(n)?{kind:`expression`,source:n}:i(n??r.name);return Ga(e===void 0?null:i(e),t,a,r,i)}function eo(e,t){return e.kind===`decided`?e:t(e.source)}const to=`none`;function no(e,t){let n=t[e];return n===void 0?null:{kind:`decided`,name:e,value:n}}function ro(e,t){return no(e,t)??no(`none`,t)??{kind:`decided`,name:`none`,value:In}}function io(e,t,n,r){return $a(e,t,n,ro(to,r),e=>no(e,r))}const ao=[`powerline`,`capsule`,`plain`];function oo(e){return ao.includes(e)}function so(e,t,n){return Ga(e,t,n,`powerline`,e=>oo(e)?e:null)}const co=[`unicode`,`ascii`],lo=`unicode`;function uo(e){return co.includes(e)}function fo(e,t,n){return Ga(e,t,n,lo,e=>uo(e)?e:null)}const po=[`truecolor`,`256`,`ansi`,`none`],mo=`truecolor`;function ho(e){return po.includes(e)}function go(e,t,n){return Ga(e,t,n,mo,e=>ho(e)?e:null)}function _o(e){return pn(e)??F.DEFAULT}const vo=Object.keys($i);function yo(e){return vo.includes(e)}function bo(e,t,n){return Ga(e,t,n,`secondary-accent`,e=>yo(e)?e:null)}const xo=`true`,So=`false`,Co=[xo,So],wo={min:0,max:16};function To(e){return e===`true`?!0:e===`false`?!1:null}function Eo(e){if(!/^\d+$/.test(e))return null;let t=Number(e);return t>=wo.min&&t<=wo.max?t:null}function Do(e,t,n){return Ga(e,t,n,!0,To)}function Oo(e,t,n){return Ga(e,t,n,!0,To)}function ko(e,t,n){return Ga(e,t,n,1,Eo)}var Ao=class extends Error{constructor(e,t){super(`${e} (at offset ${t})`),this.reason=e,this.offset=t,this.name=`Json5EditError`}};const jo=/[A-Za-z_$\p{L}]/u,Mo=/[A-Za-z0-9_$\u200C\u200D\p{L}\p{N}]/u,No=/[A-Za-z0-9_$.+\-\p{L}\p{N}]/u,Po=/[\t\n\v\f\r \u00A0\uFEFF\u2028\u2029\p{Zs}]/u;var Fo=class{pos=0;constructor(e){this.text=e}peek(){return this.text[this.pos]??``}fail(e){throw new Ao(e,this.pos)}skipTrivia(){for(;;){let e=this.peek();if(e===``)return;if(Po.test(e))this.pos++;else if(e===`/`&&this.text[this.pos+1]===`/`){let e=this.text.indexOf(`
25
- `,this.pos);this.pos=e===-1?this.text.length:e}else if(e===`/`&&this.text[this.pos+1]===`*`){let e=this.text.indexOf(`*/`,this.pos+2);e===-1&&this.fail(`unterminated block comment`),this.pos=e+2}else return}}expect(e){this.peek()!==e&&this.fail(`expected "${e}"`),this.pos++}value(){this.skipTrivia();let e=this.peek();if(e===`{`)return this.object();if(e===`[`)return this.array();if(e===`"`||e===`'`){let e=this.stringSpan();return{kind:`string`,span:e,value:this.decode(e)}}e===``&&this.fail(`unexpected end of input`);let t=this.pos;for(;this.pos<this.text.length&&No.test(this.peek());)this.pos++;this.pos===t&&this.fail(`unexpected character "${e}"`);let n={start:t,end:this.pos},r=this.decode(n);return r===null?{kind:`null`,span:n}:typeof r==`boolean`?{kind:`boolean`,span:n,value:r}:typeof r==`number`?{kind:`number`,span:n,value:r}:this.fail(`unexpected word "${this.text.slice(t,this.pos)}"`)}decode(e){try{return Qe.default.parse(this.text.slice(e.start,e.end))}catch(t){throw new Ao(t.message,e.start)}}stringSpan(){let e=this.pos,t=this.peek();for(this.pos++;;){let n=this.peek();if(n===``&&this.fail(`unterminated string`),n===`\\`){let e=this.text.startsWith(`\r
24
+ `),n=0,r=0;for(let e of t){let t=M(e);n=Math.max(n,t);let i=e.split(/\s+/);for(let e of i)e.length>0&&(r=Math.max(r,M(e)))}let i=zt(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=Ti(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 H(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=H.adjustLineLength(e,H.getLineLength(e)-xi(e),void 0,!1),i=Math.max(t-H.getLineLength(r),0),a=n===`center`?Math.floor(i/2):i;a>0&&(yield new H(` `.repeat(a))),yield*r;let o=i-a;o>0&&(yield new H(` `.repeat(o)));break}case`left`:yield*H.adjustLineLength(e,Math.max(t,H.getLineLength(e)));break;default:yield*e;break}}_fillLine(e,t,n){let r=bi(e),i=r.split(` `);r.endsWith(` `)&&i.pop();let a=i.length-1,o=Array(a).fill(1),s=i.reduce((e,t)=>e+M(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+=M(i[e]),c.push(l),l+=1,e<a&&c.push(l);let u=H.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 H(` `.repeat(o[e]),i.isNull?void 0:i))}return f}*_fitLine(e,t,n,r){let i=H.getLineLength(e);if(i-xi(e)<=t){yield*H.adjustLineLength(e,Math.min(i,t),void 0,!1);return}if(n===`ellipsis`&&t>0){yield*H.adjustLineLength(e,t-1,void 0,!1),yield new H(r);return}yield*H.adjustLineLength(e,t,void 0,!1)}},ki=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 H.line()}}};const Ai={*render(e){}};function ji(e){return{render:e}}function U(e){return new V({color:e.bgcolor})}function Mi(e){return e!==void 0&&!e.isDefault?e:void 0}function Ni(e){return new V({bgcolor:e}).drawnColors().bgcolor}function*Pi(e,t){e!==``&&(yield new H(e,new V({color:Ni(t)})))}function Fi(e,t){let{color:n,bgcolor:r}=e.drawnColors(t??F.TRUECOLOR);if(n===void 0||r===void 0)return!1;let i=n.fixedValue,a=r.fixedValue;return i!==void 0&&a!==void 0?B.fromRgba(i).deltaE(B.fromRgba(a))<.04:n.number===r.number}const Ii=Object.freeze({glyph:``,divider:``,lead:``,tail:``}),Li=Object.freeze({glyph:`>`,divider:`>`,lead:``,tail:`>`}),Ri=({glyph:e,divider:t,lead:n,tail:r})=>e+t+n+r;var zi=class{_glyphs;constructor(e=Ii){this._glyphs=e}join(e,t){let n=this._glyphs;return ji(function*(r){let{glyph:i,divider:a,lead:o,tail:s}=ni(r,n,Li,Ri),c=e?.edgeStyle(`right`,r),l=Mi(c?.bgcolor),u=Mi(t?.edgeStyle(`left`,r).bgcolor);if(l===void 0){u!==void 0&&(yield*Pi(o,u));return}if(u===void 0){yield*Pi(s,l);return}let d=new V({color:Ni(l),bgcolor:u});yield Fi(d,r.colorSystem)?new H(a,new V({color:c?.color,bgcolor:l})):new H(i,d)})}};const Bi={left:`(`,right:`)`},Vi=({left:e,right:t})=>e+t;var Hi=class{_caps;_separator;constructor(e){this._caps={left:e?.left??``,right:e?.right??``},this._separator=e?.separator??` `}*_emit(e,t,n){let r=ni(n,this._caps,Bi,Vi),i=ni(n,this._separator,` `);if(!(e===null&&t===null)){if(e===null){yield new H(r.left,U(t.edgeStyle(`left`,n)));return}if(t===null){yield new H(r.right,U(e.edgeStyle(`right`,n)));return}yield new H(r.right,U(e.edgeStyle(`right`,n))),i.length>0&&(yield new H(i)),yield new H(r.left,U(t.edgeStyle(`left`,n)))}}join(e,t){return ji(n=>this._emit(e,t,n))}},Ui=class{_separator;_style;constructor(e){this._separator=e?.separator??` | `,this._style=e?.style??V.parse(`dim`)}join(e,t){if(e===null||t===null)return Ai;let n=this._separator,r=this._style;return ji(e=>[new H(ni(e,n,` | `),r)])}};function Wi(e,t){if(e.isControl||e.text.length===0)return;let n=e.style;return!n||n.isNull?{text:e.text,sgrCodes:``,link:void 0}:{text:e.text,sgrCodes:t.colorSystem===null?``:n.toSgrCodes(t.colorSystem),link:t.hyperlinks?n.link:void 0}}function Gi(e,t){let n=[];for(let r of e){let e=Wi(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(hi(e));for(let e=a;e<i;e++)r.push(n[e].text);r.push(`\x1B]8;;\x1B\\`)}else for(let e=a;e<i;e++)r.push(n[e].text);a=i}e.length>0&&r.push(`\x1B[0m`),i=t}return r.join(``)}function Ki(e,t){let n=t?.width??80,r={};t?.env!==void 0&&(r.env=t.env),t?.isTTY!==void 0&&(r.isTTY=t.isTTY);let i=t?.colorSystem,a=fn(i===void 0?F.TRUECOLOR:i,r),o={colorSystem:t?.noColor?null:a.colorSystem,hyperlinks:t?.hyperlinks??a.hyperlinks},s={maxWidth:n,isTerminal:!1,asciiOnly:t?.asciiOnly??!1,onStyleError:t?.onStyleError,colorSystem:o.colorSystem};return Gi(e.render(s),o)}function qi(e,t){let n=[...e.render(t)],r=0;for(let e of n)r+=e.cellLength;return{segments:n,width:r}}const Ji={segments:[],width:0},Yi={left:()=>0,justify:()=>0,center:e=>Math.floor(e/2),right:e=>e};function Xi(e,t){return Yi[e](t)}function Zi(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 Qi=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=>qi(t,e)),o=n=>i?qi(i.join(null,t[n]),e):Ji,s=n=>i?qi(i.join(t[n],null),e):Ji,c=(n,r)=>i?qi(i.join(t[n],t[r]),e):Ji,l=[],u=null,d=r>0?{segments:[new H(` `.repeat(r))],width:r}:Ji;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=Xi(p,i),o=Zi(p,r,i,t.itemBlockIndices.length),s=new Map;t.itemBlockIndices.forEach((e,t)=>s.set(e,t)),a>0&&(yield new H(` `.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 H(` `.repeat(e)))}yield*t.blocks[e].segments}yield H.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=qi(t[i],e).width,o=this.joiner?qi(this.joiner.join(null,t[i]),e).width:0,s=this.joiner?qi(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+=qi(this.joiner.join(t[i-1],t[i]),e).width))}return this.joiner&&(r+=qi(this.joiner.join(null,t[0]),e).width,r+=qi(this.joiner.join(t[t.length-1],null),e).width),{minimum:n,maximum:r}}};const $i=[`primary`,`secondary`,`accent`],ea={"secondary-accent":[`secondary`,`accent`],"primary-secondary":[`primary`,`secondary`],primary:[`primary`]},ta=`accent`,na=[0,.5,1],ra=e=>e.flatMap(e=>na.map(t=>({hue:e,tone:t}))),ia=ra($i.filter(e=>Object.values(ea).some(t=>t.includes(e)))),aa=e=>{let t=0,n=.5;for(let r=e;r>0;r>>=1,n/=2)t+=n*(r&1);return t},oa=[`van-der-corput`,`golden-angle`,`ends-interleaved`,`monotonic`,`uniform`],sa=e=>typeof e==`string`&&oa.includes(e),ca={"van-der-corput":aa,"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},la=e=>ca[e??`van-der-corput`];function ua(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 da=(e,t)=>Math.floor(e*t),fa=(e,t)=>Math.round(e*t)%t;function pa(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 ma(e,t){let n=t.findIndex(e=>e.axis===`cell`),r=n===-1?t:t.slice(0,n);return{hue:pa(e,r.at(-1),da),tone:pa(na,t[r.length],fa)}}function ha(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 ga(e,t){let n=_a.get(e);n===void 0&&(n=new Map,_a.set(e,n));let r=`${t.hue}|${t.tone}`,i=n.get(r);if(i!==void 0)return i;let a=B.fromRgba(ha(e,t.hue)),o=B.fromRgba(ha(e,`surface`)),s=(e,t)=>e.mixAxes(a,{l:t,c:.8,h:1,alpha:0}),c=s(o.mixAxes(B.fromRgba(ha(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 _a=new WeakMap,va=(e,t,n)=>ga(e,ma(t,n)),ya=2.2;function ba(e,t,n){let r=xa(e,t,n);if(`refused`in r)throw Error(r.refused);return r.state}function xa(e,t,n){let r=Sa.get(e);r===void 0&&(r=new Map,Sa.set(e,r));let i=`${t}|${n}`,a=r.get(i);if(a!==void 0)return a;let o=Ca(e,t,n);return r.set(i,o),o}const Sa=new WeakMap;function Ca(e,t,n){let r=ia.map(t=>ar(ga(e,t),F.TRUECOLOR)),i=Cn(ha(e,`surface`),ha(e,t),.92),a=ha(e,`foreground`),o=r.reduce((e,t)=>rr(e,t,ya),a),s=[...Array.from({length:13},(e,t)=>Cn(i,a,t/12)),o].find(e=>r.every(t=>P(ar(e,F.TRUECOLOR),t)>=ya));if(s===void 0)return{refused:`palette "${e.name}": "${t}" cannot clear the ${ya} state floor even beyond foreground`};let c=ir(s,n,(e,t)=>r.every(n=>P(e,t(n))>=ya));return c===void 0?{refused:`palette "${e.name}": "${t}" cannot clear the ${ya} state floor on the colours drawn at depth ${F[n]}`}:{state:c}}const wa=4.5;function Ta(e,t,n){let r=Ea.get(e);r===void 0&&(r=new Map,Ea.set(e,r));let i=`${t.hex}|${n}`,a=r.get(i);if(a!==void 0)return a;let o=nr(t),s=rr([`background`,`foreground`].map(t=>ha(e,t)).reduce((e,t)=>P(o,t)<P(o,e)?t:e),t,wa,n);return r.set(i,s),s}const Ea=new WeakMap,Da={base:.42,perDepth:.14,cap:.75},Oa={floor:.12,span:.8};function ka(e,t){return $i[($i.indexOf(e)+t)%$i.length]}const Aa={triggerPlane:.1,nestedPlane:.035,nestedTriggerPlane:.08};function ja(e,t,n){let r=`${t.hue}|${t.depth}|${n}`,i=La.get(e);i===void 0&&(i=new Map,La.set(e,i));let a=i.get(r);if(a!==void 0)return a;let o=ba(e,ka(t.hue,t.depth),n),s=Ia(e,t,o,n),c=ir(Na(e,t).plane,n,(e,t)=>s.every(([n,r])=>Ma(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 ${F[n]}`);let l={state:o,plane:c};return i.set(r,l),l}const Ma=(e,t)=>B.fromRgba(e).deltaE(B.fromRgba(t));function Na(e,t){let n=`${t.hue}|${t.depth}`,r=Pa.get(e);r===void 0&&(r=new Map,Pa.set(e,r));let i=r.get(n);if(i!==void 0)return i;let a=Fa(e,t);return r.set(n,a),a}const Pa=new WeakMap;function Fa(e,t){let n=ba(e,ka(t.hue,t.depth),F.TRUECOLOR),r=Math.min(Da.cap,Da.base+Da.perDepth*t.depth);return{state:n,plane:Cn(n,ha(e,`background`),r)}}function Ia(e,t,n,r){let{hue:i,depth:a}=t,o=t=>Na(e,{hue:i,depth:t}).state,s=t=>Na(e,{hue:i,depth:t}).plane,c=e=>ar(e,F.TRUECOLOR),l=s(a),u=(e,t)=>Ma(c(l),c(t))>=e?e:0,d=ka(i,a+1),f=xa(e,d,r),p=xa(e,d,F.TRUECOLOR);return[[n,u(Aa.triggerPlane,o(a))],...`state`in f&&`state`in p?[[f.state,u(Aa.nestedTriggerPlane,p.state)]]:[],...a>0?[[ja(e,{hue:i,depth:a-1},r).plane,u(Aa.nestedPlane,s(a-1))]]:[]]}const La=new WeakMap;function Ra(e,t,n,r){let i=ja(e,t,r),a=Na(e,t),o=ir(Cn(a.plane,a.state,Oa.floor+Oa.span*ua(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 ${F[r]}, and nothing that depth draws is neither`);return o}const za=e=>({kind:`bar`,progression:e,address:[]}),Ba=(e,t)=>({...e,address:[...e.address,t]}),Va=e=>({kind:`band`,band:e,address:[]});function Ha(e,t,n){switch(t.kind){case`bar`:return{tint:va(e,t.progression,t.address),disclosure:{hue:ta,depth:0}};case`band`:return{tint:Ra(e,t.band,t.address,n),disclosure:{hue:t.band.hue,depth:t.band.depth+1}}}}const Ua=new Map([[`dark`,`textual-dark`],[`light`,`textual-light`]]);function Wa(e){let t=typeof e==`string`?Ua.get(e):void 0;return t===void 0?``:` — "${e}" was retired; write "${t}", the same palette`}const Ga=`textual-dark`;function Ka(e,t,n,r,i){let a=t===null?null:i(t);return e??a??n??r}function qa(){return br()}function Ja(){return[`bar`,...qa()]}let Ya;function Xa(e){return Ya??=new Set(Ja()),Ya.has(e)}function Za(e,t,n,r,i){let a=e=>Object.prototype.hasOwnProperty.call(i,e)?e:null;return Ka(e===void 0?null:a(e),t,a(n??r),r,a)}const Qa=[`look`,`palette`];function $a(e){return e!==void 0&&e.includes(`{{`)}function eo(e,t,n,r,i){let a=$a(n)?{kind:`expression`,source:n}:i(n??r.name);return Ka(e===void 0?null:i(e),t,a,r,i)}function to(e,t){return e.kind===`decided`?e:t(e.source)}const no=`none`;function ro(e,t){let n=t[e];return n===void 0?null:{kind:`decided`,name:e,value:n}}function io(e,t){return ro(e,t)??ro(`none`,t)??{kind:`decided`,name:`none`,value:In}}function ao(e,t,n,r){return eo(e,t,n,io(no,r),e=>ro(e,r))}const oo=[`powerline`,`capsule`,`plain`];function so(e){return oo.includes(e)}function co(e,t,n){return Ka(e,t,n,`powerline`,e=>so(e)?e:null)}const lo=[`unicode`,`ascii`],uo=`unicode`;function fo(e){return lo.includes(e)}function po(e,t,n){return Ka(e,t,n,uo,e=>fo(e)?e:null)}const mo=[`truecolor`,`256`,`ansi`,`none`],ho=`truecolor`;function go(e){return mo.includes(e)}function _o(e,t,n){return Ka(e,t,n,ho,e=>go(e)?e:null)}function vo(e){return pn(e)??F.DEFAULT}const yo=Object.keys(ea);function bo(e){return yo.includes(e)}function xo(e,t,n){return Ka(e,t,n,`secondary-accent`,e=>bo(e)?e:null)}const So=`true`,Co=`false`,wo=[So,Co],To={min:0,max:16};function Eo(e){return e===`true`?!0:e===`false`?!1:null}function Do(e){if(!/^\d+$/.test(e))return null;let t=Number(e);return t>=To.min&&t<=To.max?t:null}function Oo(e,t,n){return Ka(e,t,n,!0,Eo)}function ko(e,t,n){return Ka(e,t,n,!0,Eo)}function Ao(e,t,n){return Ka(e,t,n,1,Do)}var jo=class extends Error{constructor(e,t){super(`${e} (at offset ${t})`),this.reason=e,this.offset=t,this.name=`Json5EditError`}};const Mo=/[A-Za-z_$\p{L}]/u,No=/[A-Za-z0-9_$\u200C\u200D\p{L}\p{N}]/u,Po=/[A-Za-z0-9_$.+\-\p{L}\p{N}]/u,Fo=/[\t\n\v\f\r \u00A0\uFEFF\u2028\u2029\p{Zs}]/u;var Io=class{pos=0;constructor(e){this.text=e}peek(){return this.text[this.pos]??``}fail(e){throw new jo(e,this.pos)}skipTrivia(){for(;;){let e=this.peek();if(e===``)return;if(Fo.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&&Po.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 Qe.default.parse(this.text.slice(e.start,e.end))}catch(t){throw new jo(t.message,e.start)}}stringSpan(){let e=this.pos,t=this.peek();for(this.pos++;;){let n=this.peek();if(n===``&&this.fail(`unterminated string`),n===`\\`){let e=this.text.startsWith(`\r
26
26
  `,this.pos+1);this.pos+=e?3:2;continue}if(this.pos++,n===t)return{start:e,end:this.pos};n===`
27
- `&&this.fail(`unterminated string`)}}key(){let e=this.peek();if(e===`"`||e===`'`){let e=this.stringSpan();return{key:this.decode(e),span:e}}let t=this.pos;for(jo.test(e)||this.fail(`expected an object key`);this.pos<this.text.length&&Mo.test(this.peek());)this.pos++;return{key:this.text.slice(t,this.pos),span:{start:t,end:this.pos}}}object(){let e=this.pos;this.expect(`{`);let t=[];for(;this.skipTrivia(),this.peek()!==`}`;){let{key:e,span:n}=this.key();if(t.some(t=>t.key===e))throw new Ao(`duplicate key "${e}"`,n.start);this.skipTrivia(),this.expect(`:`);let r=this.value();if(t.push({key:e,keySpan:n,value:r,span:{start:n.start,end:r.span.end}}),this.skipTrivia(),this.peek()===`,`){this.pos++;continue}this.peek()!==`}`&&this.fail(`expected "," or "}"`)}return this.expect(`}`),{kind:`object`,span:{start:e,end:this.pos},entries:t}}array(){let e=this.pos;this.expect(`[`);let t=[];for(;this.skipTrivia(),this.peek()!==`]`;){if(t.push(this.value()),this.skipTrivia(),this.peek()===`,`){this.pos++;continue}this.peek()!==`]`&&this.fail(`expected "," or "]"`)}return this.expect(`]`),{kind:`array`,span:{start:e,end:this.pos},elements:t}}};function Io(e){let t=new Fo(e),n=t.value();return t.skipTrivia(),t.pos!==e.length&&t.fail(`trailing content after the document`),n}function Lo(e,t){return e.kind===`object`?e.entries.find(e=>e.key===t):void 0}function Ro(e,t){let n=e;for(let e of t)n=n===void 0?void 0:Lo(n,e)?.value;return n}function zo(e,t){return e.slice(t.span.start,t.span.end)}function Bo(e,t){let n=$o(e,t.span.start),r=Vo(t),i=e=>r.some(t=>t.start<e&&e<t.end),a=t.span.start;return zo(e,t).split(`
27
+ `&&this.fail(`unterminated string`)}}key(){let e=this.peek();if(e===`"`||e===`'`){let e=this.stringSpan();return{key:this.decode(e),span:e}}let t=this.pos;for(Mo.test(e)||this.fail(`expected an object key`);this.pos<this.text.length&&No.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 jo(`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 Lo(e){let t=new Io(e),n=t.value();return t.skipTrivia(),t.pos!==e.length&&t.fail(`trailing content after the document`),n}function Ro(e,t){return e.kind===`object`?e.entries.find(e=>e.key===t):void 0}function zo(e,t){let n=e;for(let e of t)n=n===void 0?void 0:Ro(n,e)?.value;return n}function Bo(e,t){return e.slice(t.span.start,t.span.end)}function Vo(e,t){let n=es(e,t.span.start),r=Ho(t),i=e=>r.some(t=>t.start<e&&e<t.end),a=t.span.start;return Bo(e,t).split(`
28
28
  `).map((e,t)=>{let r=a;return a+=e.length+1,(t>0&&!i(r-1)&&e.startsWith(n)?e.slice(n.length):e).replace(/\r$/,``)}).join(`
29
- `)}function Vo(e){switch(e.kind){case`object`:return e.entries.flatMap(e=>[e.keySpan,...Vo(e.value)]);case`array`:return e.elements.flatMap(Vo);case`string`:return[e.span];default:return[]}}const Ho=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function Uo(e){return Ho.test(e)?e:JSON.stringify(e)}const Wo={key:Uo,trailingComma:`,`,parse:e=>Qe.default.parse(e)},Go={key:e=>JSON.stringify(e),trailingComma:``,parse:e=>JSON.parse(e)};function Ko(e){if(Array.isArray(e))return e.length===0?`[]`:`[\n${e.map(e=>` ${Jo(Ko(e),` `,`
29
+ `)}function Ho(e){switch(e.kind){case`object`:return e.entries.flatMap(e=>[e.keySpan,...Ho(e.value)]);case`array`:return e.elements.flatMap(Ho);case`string`:return[e.span];default:return[]}}const Uo=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function Wo(e){return Uo.test(e)?e:JSON.stringify(e)}const Go={key:Wo,trailingComma:`,`,parse:e=>Qe.default.parse(e)},Ko={key:e=>JSON.stringify(e),trailingComma:``,parse:e=>JSON.parse(e)};function qo(e){if(Array.isArray(e))return e.length===0?`[]`:`[\n${e.map(e=>` ${Yo(qo(e),` `,`
30
30
  `)},`).join(`
31
- `)}\n]`;if(typeof e==`object`&&e){let t=Object.entries(e).filter(([,e])=>e!==void 0);return t.length===0?`{}`:`{\n${t.map(([e,t])=>` ${Uo(e)}: ${Jo(Ko(t),` `,`
31
+ `)}\n]`;if(typeof e==`object`&&e){let t=Object.entries(e).filter(([,e])=>e!==void 0);return t.length===0?`{}`:`{\n${t.map(([e,t])=>` ${Wo(e)}: ${Yo(qo(t),` `,`
32
32
  `)},`).join(`
33
- `)}\n}`}return JSON.stringify(e)}function qo(e){return e.includes(`\r
33
+ `)}\n}`}return JSON.stringify(e)}function Jo(e){return e.includes(`\r
34
34
  `)?`\r
35
35
  `:`
36
- `}function Jo(e,t,n){return e.split(`
37
- `).join(`${n}${t}`)}function Yo(e,t,n){let[r,...i]=e,a=i.length===0?t:`{\n ${Jo(Yo(i,t,n),` `,`
38
- `)}${n.trailingComma}\n}`;return`${n.key(r)}: ${a}`}function Xo(e,t,n,r){return e.slice(0,t)+r+e.slice(n)}function Zo(e,t){return e.lastIndexOf(`
39
- `,t-1)+1}function Qo(e){return/^[ \t]*$/.test(e)}function $o(e,t){let n=Zo(e,t);return/^[ \t]*/.exec(e.slice(n))[0]}function es(e,t){return Qo(e.slice(Zo(e,t),t))}const ts=/(?:\/\/[^\n]*?)?(\r\n|\n|$)/y;function ns(e,t){let n=t;for(;n<e.length&&(e[n]===` `||e[n]===` `);)n++;let r=e[n]===`,`?n+1:-1;for(r!==-1&&(n=r);n<e.length&&(e[n]===` `||e[n]===` `);)n++;ts.lastIndex=n;let i=ts.exec(e);if(i===null)return{commaEnd:r,line:null};let a=n+i[0].length;return{commaEnd:r,line:{at:a-i[1].length,next:a}}}function rs(e,t){let{commaEnd:n,line:r}=ns(e,t.end);if(es(e,t.start)&&r!==null)return Xo(e,Zo(e,t.start),r.next,``);if(n!==-1){let r=n;for(;r<e.length&&e[r]===` `;)r++;return Xo(e,t.start,r,``)}let i=t.start;for(;i>0&&(e[i-1]===` `||e[i-1]===` `);)i--;return e[i-1]===`,`?Xo(e,i-1,t.end,``):Xo(e,t.start,t.end,``)}function is(e,t,n,r,i){let a=n.commaEnd!==-1,o=a?e:Xo(e,t.end,t.end,`,`),s=n.line.at+ +!a,c=qo(e);return Xo(o,s,s,`${c}${i}${Jo(r,i,c)}${a?`,`:``}`)}function as(e,t,n,r){let i=t.kind===`object`?t.entries:t.elements,a=i[i.length-1],o=$o(e,t.span.start);if(a===void 0){let i=o+` `,a=qo(e);return Xo(e,t.span.start+1,t.span.end-1,`${a}${i}${Jo(n,i,a)}${r.trailingComma}${a}${o}`)}let{commaEnd:s,line:c}=ns(e,a.span.end);if(es(e,a.span.start)&&c!==null){let t=e.slice(Zo(e,a.span.start),a.span.start);return is(e,a.span,{commaEnd:s,line:c},n,t)}let l=s===-1?a.span.end:s;return Xo(e,l,l,`${s===-1?`, `:` `}${n}${s===-1?``:`,`}`)}function os(e,t,n,r){if(t.length===0)throw new Ao(`setValue needs a non-empty path`,0);if(/^\s*$/.test(e)){let i=qo(e);return`{${i} ${Jo(Yo(t,n,r),` `,i)}${r.trailingComma}${i}}${i}`}return ss(e,Io(e),t,n,r)}function ss(e,t,n,r,i){let a=t;for(let t=0;t<n.length;t++){if(a.kind!==`object`)throw new Ao(`cannot set ${n.join(`.`)}: ${n.slice(0,t).join(`.`)||`the document`} is not an object`,a.span.start);let o=Lo(a,n[t]);if(o===void 0)return as(e,a,Yo(n.slice(t),r,i),i);if(t===n.length-1){let t=$o(e,o.keySpan.start);return Xo(e,o.value.span.start,o.value.span.end,Jo(r,t,qo(e)))}a=o.value}throw new Ao(`unreachable: path exhausted`,0)}function cs(e,t,n=0){if(t.length===0)throw new Ao(`deleteValue needs a non-empty path`,0);if(/^\s*$/.test(e))return e;let r=t.slice(0,-1),i=Ro(Io(e),r),a=i===void 0?void 0:Lo(i,t[t.length-1]);if(a===void 0||i?.kind!==`object`)return e;let o=rs(e,a.span);return r.length>n&&i.entries.length===1?cs(o,r,n):o}const ls=[`h`,`v`,`children`];function us(e){if(e.kind===`string`)return e.value;if(e.kind!==`object`)return;let t=Lo(e,`seg`)?.value,n=Lo(e,`kind`)?.value,r=Lo(e,`name`)?.value,i=t?.kind===`string`?t.value:n?.kind===`string`&&n.value===`segment`&&r?.kind===`string`?r.value:void 0;if(i===void 0)return;let a=Lo(e,`id`)?.value;return a?.kind===`string`?a.value:i}function ds(e){return e.kind===`object`?ls.map(t=>Lo(e,t)?.value).filter(e=>e?.kind===`array`):[]}function fs(e){let t=Lo(e,`rows`)?.value;return t?.kind===`object`?t.entries:null}function ps(e){if(e.kind!==`object`)return!0;let t=fs(e);return t===null||t.length>0||e.entries.some(e=>e.key!==`rows`)}function*ms(e,t){yield{node:e,bareAt:t};for(let t of ds(e))for(let e of t.elements)yield*ms(e,null);for(let n of fs(e)??[])yield*ms(n.value,t===null?null:[...t,`rows`,n.key])}function hs(e,t){for(let{node:n}of ms(e,null))if(us(n)===t)return!0;return!1}function gs(e,t,n){let r=Ro(Io(e),t);if(r===void 0)return null;for(let{node:i,bareAt:a}of ms(r,t))if(us(i)===n)return a===null?{text:e,ref:i}:gs(os(e,a,`{ h: [${zo(e,i)}] }`,Wo),t,n);return null}function _s(e,t,n){let r=gs(e,t,n);return r===null?null:rs(r.text,r.ref.span)}function vs(e,t,n,r,i){let a=gs(e,t,r);if(a===null)return null;let{text:o,ref:s}=a,c=n.id===void 0?JSON.stringify(n.seg):`{ seg: ${JSON.stringify(n.seg)}, id: ${JSON.stringify(n.id)} }`,{commaEnd:l,line:u}=ns(o,s.span.end);if(es(o,s.span.start)&&u!==null){let e=o.slice(Zo(o,s.span.start),s.span.start);return i===`after`?is(o,s.span,{commaEnd:l,line:u},c,e):Xo(o,s.span.start,s.span.start,`${c},${qo(o)}${e}`)}let d=zo(o,s),f=i===`before`?`${c}, ${d}`:`${d}, ${c}`;return Xo(o,s.span.start,s.span.end,f)}function ys(e,t,n,r,i){let a=gs(e,t,n);if(a===null)return null;let{text:o,ref:s}=a,c=`{ ${Uo(r)}: ${i} }`;return s.kind===`string`?Xo(o,s.span.start,s.span.end,`{ seg: ${JSON.stringify(s.value)}, settings: ${c} }`):Lo(s,`settings`)===void 0?ss(o,s,[`settings`],c,Wo):ss(o,s,[`settings`,r],i,Wo)}var bs=class extends Error{file;issues;warnings;constructor(e,t,n=[]){super(ws(e,t)),this.name=`ConfigError`,this.file=e,this.issues=t,this.warnings=n}};function G(e,t){let n=0,r;for(let i of t){if(i===``||/^\d+$/.test(i))continue;let t=xs(e,n,i);if(t===-1)return r===void 0?void 0:Ss(e,r);n=t,r=t}return r===void 0?void 0:Ss(e,r)}function xs(e,t,n){let r=n.replace(/[\\^$.*+?()[\]{}|]/g,`\\$&`),i=RegExp(`(?:["']${r}["']|\\b${r}\\b)\\s*:`,`g`);i.lastIndex=t;let a=i.exec(e);return a?a.index:-1}function Ss(e,t){let n=1;for(let r=0;r<t&&r<e.length;r++)e.charCodeAt(r)===10&&n++;return n}function Cs(e,t){try{return Io(t),null}catch(n){if(!(n instanceof Ao))throw n;return`${e}:${Ss(t,n.offset)}: ${n.reason} — the settings menu cannot edit this file until it is fixed`}}function ws(e,t){if(t.length===0)return`${e}: invalid config (no details)`;let n=[`Invalid config in ${e} (${t.length} issue${t.length===1?``:`s`}):`];for(let e of t){let t=[];e.line!==void 0&&t.push(`line ${e.line}${e.col===void 0?``:`:${e.col}`}`),e.path&&t.push(e.path);let r=t.length>0?`[${t.join(` • `)}] `:``;n.push(` ${r}${e.message}`)}return n.join(`
40
- `)}const Ts=[`vertical`,`horizontal`],Es={vertical:`row`,horizontal:`cell`};function Ds(e){return e.id??e.name}function Os(e){return[...js(e)].flatMap(e=>e.kind===`segment`?[Ds(e)]:[])}function ks(e,t){if(!t.has(e))return e;let n=2;for(;t.has(`${e}-${n}`);)n++;return`${e}-${n}`}function As(e,t){return e.opens===void 0?e:{...e,opens:{...e.opens,body:t(e.opens.body)}}}function*js(e){yield e;for(let t of Fs(e))yield*js(t)}const Ms=(e,t)=>`${e}.children[${t}]`,Ns=e=>`${e}.opens.body`;function*Ps(e,t){if(yield[e,t],e.kind===`container`)for(let[n,r]of e.children.entries())yield*Ps(r,Ms(t,n));else e.opens!==void 0&&(yield*Ps(e.opens.body,Ns(t)))}function Fs(e){return e.kind===`container`?e.children:e.opens===void 0?[]:[e.opens.body]}function Is(e){return e===void 0||`text`in e?`text`:`regex`in e?`regex`:`json`}const Ls=[`ttl`,`watch_file`,`depends_on`,`key`,`never`];function Rs(e){return e.kind!==`literal`&&e.kind!==`input`&&e.kind!==`env`&&e.kind!==`state`}const zs=[`branch`,`sha`,`dirty`,`ahead`,`behind`,`stash`],Bs=[`file`,`shell`,`git`],Vs=`theme`;function Hs(e){return{...e.settings,[Vs]:{label:Vs,domain:`theme`,default:e.palette??`bar`}}}function Us(e){let t=e?.domain;return typeof t==`object`&&`min`in t?t:void 0}function Ws(e,t){return Object.entries(e).flatMap(([n,r])=>{let i=Us(r)?.atLeast;if(i===void 0)return[];let a=t[n],o=t[i];return a>=o?[]:[{setting:n,message:`"${n}" (${a}) is below "${i}" (${o}) — ${r.label} must be at least ${e[i].label}`}]})}function Gs(e,t){let{domain:n}=e;return n===`bool`?typeof t==`boolean`:n===`theme`?typeof t==`string`&&Ya(t):`min`in n?typeof t==`number`&&Number.isInteger(t)&&t>=n.min&&t<=n.max:typeof t==`string`&&n.includes(t)}function Ks(e){return String(e)}function qs(e,t){let{domain:n}=e,r=n===`bool`?t===`true`?!0:t===`false`?!1:t:typeof n==`object`&&`min`in n&&/^-?\d+$/.test(t)?Number(t):t;return Gs(e,r)?r:void 0}function Js(e){let{domain:t}=e;return t===`bool`?`true or false`:t===`theme`?`"bar" (the bar's own theme) or an installed theme name`:`min`in t?`an integer from ${t.min} to ${t.max}`:`one of ${t.map(e=>JSON.stringify(e)).join(`, `)}`}const Ys=[`left`,`center`,`right`],Xs=[`right`,`left`,`middle`];function Zs(e,t,n,r){let i=n[r];return typeof i==`string`?i:(e.issues.push({path:`${t}.${r}`,message:`${t}.${r} must be a string, got ${rc(i)}`,line:G(e.source,[...t.split(`.`),r])}),null)}function Qs(e,t,n,r){let i=n.default;if(i!==void 0){if(!(r===`string`&&typeof i==`string`||r===`number`&&typeof i==`number`||r===`boolean`&&typeof i==`boolean`)){e.issues.push({path:`${t}.default`,message:`default must be a ${r}, got ${rc(i)}`,line:G(e.source,[...t.split(`.`),`default`])});return}return i}}function $s(e,t,n,r){let i=n[r];if(i!==void 0){if(typeof i!=`string`){e.issues.push({path:`${t}.${r}`,message:`${t}.${r} must be a string, got ${rc(i)}`,line:G(e.source,[...t.split(`.`),r])});return}return i}}function ec(e,t,n){let r=$s(e,t,n,`palette`);if(r!==void 0){if(!e.allowedPalettes.has(r)){e.issues.push({path:`${t}.palette`,message:`Unknown palette "${r}"${Ua(r)}. Expected one of: ${[...e.allowedPalettes].sort().join(`, `)}`,line:G(e.source,[...t.split(`.`),`palette`])});return}return r}}function tc(e,t,n,r,i){let a=n[r];if(a!==void 0){if(typeof a!=`string`||!i.includes(a)){e.issues.push({path:`${t}.${r}`,message:`${t}.${r} must be one of: ${i.join(`, `)}; got ${K(a)}`,line:G(e.source,[...t.split(`.`),r])});return}return a}}function nc(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function rc(e){return e===null?`null`:Array.isArray(e)?`array`:typeof e}function K(e){return typeof e==`string`?JSON.stringify(e):e===void 0?`undefined`:String(e)}function ic(e,t,n,r){if(!nc(r))return e.issues.push({path:n,message:`${n} must be an object, got ${rc(r)}`,line:G(e.source,n.split(`.`))}),null;let i=Object.entries(t.removed??{}).filter(([e])=>r[e]!==void 0);for(let[t,r]of i)cc(e,`${n}.${t}`,`${n}.${t} was removed: ${r}`);return sc(e,n,r,t.noun,new Set(Object.keys(t.fields)),new Set(i.map(([e])=>`${n}.${e}`))),ac(e,t.fields,n,r)}function ac(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 oc=new Set;function sc(e,t,n,r,i,a=oc){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:G(e.source,[...t.split(`.`),o])})}function cc(e,t,n){return e.issues.push({path:t,message:n,line:G(e.source,t.split(`.`))}),null}function lc(e,t,n,r){if(!nc(r))return e.issues.push({path:n,message:`${t.noun} must be an object, got ${rc(r)}`,line:G(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:G(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:G(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:G(e.source,n.split(`.`))}),null;let c=o[0];return i[c].parse(e,`${n}.${c}`,r[c])}function uc(e,t,n,r){if(!nc(r))return e.issues.push({path:n,message:`${n} must be an object, got ${rc(r)}`,line:G(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 ${rc(i)}`,line:G(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:G(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 sc(e,n,r,`${i} ${t.memberNoun} key`,o.keys,l),c}function dc(e,t,n){return{json:Tc(Cc(n),e,t),keys:new Set([e,...Object.keys(n)])}}function fc(e){return(...t)=>e()(...t)}function pc(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:G(n.source,o.split(`.`))}),null}return a}}function mc(){return{required:!1,json:{type:`string`},parse:(e,t,n,r)=>$s(e,t,r,n)}}function hc(){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 ${rc(i)}`,line:G(e.source,[n])});return}return i}}}}function gc(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 ${K(o)}`,line:G(e.source,[i])});return}return o}}}}function _c(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 ${K(a)}`,line:G(e.source,[r])});return}return a}}}}function vc(){return{required:!1,json:{type:`string`},parse:(e,t,n,r)=>ec(e,t,r)}}function yc(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>Zs(e,t,r,n)??void 0}}function bc(e,t){return d(t)?null:`${e} must be an absolute path (\`~\` and relative paths are not expanded), got ${JSON.stringify(t)}`}function xc(){return{required:!0,json:{type:`string`,pattern:`^/`},parse:(e,t,n,r)=>{let i=Zs(e,t,r,n);if(i===null)return;let a=bc(`${t}.${n}`,i);return a===null?i:cc(e,`${t}.${n}`,a)??void 0}}}function Sc(e){return{required:!1,json:{enum:[...e]},parse:(t,n,r,i)=>tc(t,n,i,r,e)}}function Cc(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 wc(e){return Cc(e.fields)}function Tc(e,t,n){let r=e,i={[t]:{const:n},...r.properties},a=[t,...r.required??[]];return{...r,properties:i,required:a}}function Ec(e){let t=e.arms;return{anyOf:Object.values(t).map(e=>e.json)}}function Dc(e){let t=e.arms;return{anyOf:Object.entries(t).map(([e,t])=>({type:`object`,properties:{[e]:t.json},required:[e],additionalProperties:!1}))}}const Oc=/^[A-Za-z_][A-Za-z0-9_]*$/;function kc(e){return`#${e+1}`}const Ac={rows:{}};function jc(e){return`rows`in e}function Mc(e){return Object.fromEntries(e.map((e,t)=>[kc(t),e]))}function Nc(e){if(e.kind===`container`&&e.direction===`vertical`){let{kind:t,direction:n,children:r,...i}=e;return{...i,rows:Mc(r)}}let{when:t,...n}=e;return{...t!==void 0&&{when:t},rows:Mc([n])}}function Pc(e){let{rows:t,...n}=e;return{kind:`container`,direction:`vertical`,children:Object.values(t),...n}}function Fc(e){return jc(e)?Pc(e):e}function*Ic(e,t){if(!jc(e)){yield*Ps(e,t);return}yield[Pc(e),t];for(let[n,r]of Object.entries(e.rows))yield*Ps(r,`${t}.rows.${n}`)}function Lc(e,t){return jc(e)?{...t,...e,rows:{...t.rows,...e.rows}}:Nc(e)}function Rc(e){if(!jc(e))return!0;let{rows:t,...n}=e;return Object.values(n).some(e=>e!==void 0)||Object.keys(t).length>0}function zc(e,t){return{globals:{...t.globals,...e.globals??{}},variables:{...t.variables,...e.variables??{}},segments:Hc(t.segments,Bc(t.segments,e.segments??{})),root:Lc(e.root??Ac,t.root),actions:{...t.actions,...e.actions??{}},looks:{...t.looks,...e.looks??{}},presets:Hc(t.presets,Vc(t.presets,e.presets??{})),editGlobals:{...t.editGlobals,...e.editGlobals??{}},helpers:{...t.helpers,...e.helpers??{}}}}function Bc(e,t){return Object.fromEntries(Object.entries(t).map(([t,n])=>[t,n.settings===void 0?n:{...n,settings:{...e[t]?.settings,...n.settings}}]))}function Vc(e,t){return Object.fromEntries(Object.entries(t).map(([t,n])=>[t,n.globals===void 0?n:{...n,globals:{...e[t]?.globals,...n.globals}}]))}function Hc(e,t){return{...e,...Object.fromEntries(Object.entries(t).map(([t,n])=>[t,{...e[t],...n}]))}}const Uc=`closed`,Wc=`🍫`;function Gc(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 Kc(e,t,n,r){let i=Gc(e,t.length,n);if(i!==void 0)throw Error(i);return t.length===1?t[0]:t[r]}function qc(e){return e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}function Jc(e,t,n,r,i){return{kind:`segment`,name:e,opens:{ref:t,body:n,placement:r},...i!==void 0&&{when:i}}}function Yc(e,...t){return`{{ and ${[e,...t].map(Xc).join(` `)} }}`}function Xc(e){return`(eq .${e.variable} "${qc(e.member)}")`}function Zc(e,t,n){return`{{ action "${e}" "${qc(t)}" "${qc(n)}" }}`}function Qc(e,t){return{kind:`state`,key:e,default:t}}function $c(e,t){return{set:e,cycle:[Uc,t]}}const el={required:!1,json:{enum:[...po]},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: ${po.join(`, `)}`,line:G(e.source,[...t.split(`.`),n])});return}return tc(e,t,r,n,po)}},tl={required:!1,json:{type:`string`},parse:(e,t,n,r)=>{let i=$s(e,t,r,n);return Qa(i)?i:ec(e,t,r)}},nl=/^[^\r\n]*\S[^\r\n]*$/u,rl=RegExp(`^(?:❌|✕)[\\uFE0E\\uFE0F]?$`,`u`),il={required:!1,json:{type:`string`,pattern:nl.source,not:{pattern:rl.source}},parse:(e,t,n,r)=>{let i=$s(e,t,r,n);if(i===void 0||nl.test(i)&&!rl.test(i))return i;e.issues.push({path:`${t}.${n}`,message:`${t}.${n}: must be one line of visible text other than a close glyph ("❌", "✕") — the settings menu needs a glyph to click`,line:G(e.source,[...t.split(`.`),n])})}};function al(e){return{spec:Sc(e),domain:{from:e}}}function ol(){return{spec:hc(),domain:`bool`}}function sl(e){return{spec:e,domain:`text`}}const cl={default_empty_value:sl(mc()),default_separator:sl(mc()),palette:{spec:tl,domain:{from:`themes`}},look:{spec:mc(),domain:{from:`looks`}},preset:{spec:mc(),domain:{from:`presets`}},style:al(ao),progression:al(vo),autoWrap:ol(),padding:{spec:gc(wo),domain:{...wo,step:1}},charset:al(co),updateNotice:ol(),colorCompatibility:{spec:el,domain:{from:po}},menuGlyph:sl(il)},ll=Object.fromEntries(Object.entries(cl).map(([e,t])=>[e,t.spec]));function ul(e){return cl[e].domain}function dl(e,t){return{required:!1,json:{not:{},description:`not allowed here — ${e}`},parse:(e,n,r,i)=>{i[r]!==void 0&&e.issues.push({path:`${n}.${r}`,message:t(`${n}.${r}`),line:G(e.source,[...n.split(`.`),r])})}}}function fl(e){return dl(`${e} cannot select a preset`,t=>`${t}: ${e} cannot select a preset. Which preset is active is resolved once, as session pick over globals.preset over "default"; a fragment naming another would be a second authority over that. Set the default arrangement in the top-level globals.preset instead.`)}function pl(e){return dl(`${e} cannot change the settings menu glyph`,t=>`${t}: ${e} cannot change the settings menu glyph — one menu is shared by every preset. Set it in the top-level globals.menuGlyph instead.`)}function ml(e,t){return{...e,json:{...e.json,not:{pattern:`\\{\\{`}},parse:(n,r,i,a)=>{let o=a[i];if(typeof o==`string`&&Qa(o)){n.issues.push({path:`${r}.${i}`,message:`${r}.${i}: a rule is not allowed here — ${t} is decided later than any rule could be settled, so it names a value. Write the rule in globals.${i} (or a preset's globals.${i}) instead.`,line:G(n.source,[...r.split(`.`),i])});return}return e.parse(n,r,i,a)}}}const hl={default_bg:"nothing reads it — a segment with no `bg:` wears the decoration tint of its place in the bar. Delete the key, and author `bg:` on the segments that need a fixed colour.",default_fg:"nothing reads it — a segment with no `fg:` wears text chosen for contrast against its background. Delete the key, and author `fg:` on the segments that need a fixed colour.",default_truncate_marker:'nothing reads it — a segment clipped to its `width:` always ends in "…". Delete the key.'},gl={noun:`globals key`,fields:ll,removed:hl},_l={preset:fl(`a preset`),menuGlyph:pl(`a preset`)},vl={noun:`preset globals key`,fields:{...ll,..._l},removed:hl};function yl(e){return El(e)&&!(e in _l)}const bl={noun:`editGlobals key`,removed:hl,fields:{...ll,preset:fl(`the editGlobals fragment`),menuGlyph:pl(`the editGlobals fragment`),palette:ml(ll.palette,`the editGlobals fragment`),look:ml(ll.look,`the editGlobals fragment`)}};function xl(e,t,n){return n===void 0?{}:ic(e,gl,t,n)??{}}function Sl(e,t,n){return ic(e,vl,t,n)??{}}function Cl(){return wc(vl)}function wl(e,t,n){return ic(e,bl,t,n)??{}}const Tl=new Set(Object.keys(ll));function El(e){return Tl.has(e)}function Dl(){return[...Tl]}const Ol={padding:1};function kl(e){let t=new Map;for(let[n,r]of Object.entries(Ol)){let i=e[n];t.set(n,typeof i==`number`?i:r)}return t}function Al(e,t,n,r){return n.cache===void 0?(Bs.includes(r)&&e.issues.push({path:`${t}.cache`,message:`${r} variables must declare a cache policy (one of: ${Ls.join(`, `)})`,line:G(e.source,t.split(`.`))}),null):Fl(e,`${t}.cache`,n.cache)}function jl(e,t,n){if(n.cache!==void 0)return Fl(e,`${t}.cache`,n.cache)??void 0}function Ml(e){return{required:!0,json:Rl(),parse:(t,n,r,i)=>Al(t,n,i,e)??void 0}}function Nl(){return{required:!1,json:Rl(),parse:(e,t,n,r)=>jl(e,t,r)}}const Pl={noun:`cache`,arms:{ttl:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`&&Bl(n)?{ttl:n}:cc(e,t,`cache.ttl must be a duration string like "5s", "100ms", "2m", "1h"; got ${K(n)}`)},watch_file:{json:{type:`string`,pattern:`^/`},parse:(e,t,n)=>{if(typeof n!=`string`)return cc(e,t,`cache.watch_file must be a path string, got ${K(n)}`);let r=bc(`cache.watch_file`,n);return r===null?{watch_file:n}:cc(e,t,r)}},depends_on:{json:{type:`array`,items:{type:`string`}},parse:(e,t,n)=>Array.isArray(n)&&n.every(e=>typeof e==`string`)?{depends_on:n}:cc(e,t,`cache.depends_on must be an array of variable-name strings, got ${K(n)}`)},key:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`&&n!==``?{key:n}:cc(e,t,`cache.key must be a non-empty template string, got ${K(n)}`)},never:{json:{const:!0},parse:(e,t,n)=>n===!0?{never:!0}:cc(e,t,`cache.never must be the literal boolean true, got ${K(n)}`)}}};function Fl(e,t,n){return lc(e,Pl,t,n)}const Il={noun:`time-variable cache`,arms:{ttl:Pl.arms.ttl}};function Ll(){return{required:!1,json:Dc(Il),parse:(e,t,n,r)=>r.cache===void 0?void 0:lc(e,Il,`${t}.cache`,r.cache)??void 0}}function Rl(){return Dc(Pl)}const zl=/^(\d+(?:\.\d+)?)(ms|s|m|h)$/;function Bl(e){return zl.test(e)}function Vl(e,t,n){if(n===void 0)return{};if(!nc(n))return e.issues.push({path:t,message:`${t} must be an object, got ${rc(n)}`,line:G(e.source,t.split(`.`))}),{};let r={};for(let[i,a]of Object.entries(n)){let n=uc(e,lu,`${t}.${i}`,a);n!==null&&(r[i]=n)}return r}function Hl(){return{required:!0,json:{type:[`string`,`number`,`boolean`]},parse:(e,t,n,r)=>{let i=r.value;if(typeof i!=`string`&&typeof i!=`number`&&typeof i!=`boolean`){e.issues.push({path:`${t}.value`,message:`literal value must be string|number|boolean, got ${rc(i)}`,line:G(e.source,t.split(`.`))});return}return i}}}function Ul(){return{required:!0,json:{enum:[...zs]},parse:(e,t,n,r)=>{let i=r.field;if(typeof i!=`string`||!zs.includes(i)){e.issues.push({path:`${t}.field`,message:`git field must be one of: ${zs.join(`, `)}, got ${JSON.stringify(i)}`,line:G(e.source,[...t.split(`.`),`field`])});return}return i}}}function Wl(){return{required:!1,json:{type:[`string`,`number`,`boolean`]},parse:(e,t,n,r)=>{let i=r.type;return Qs(e,t,r,i===`number`||i===`boolean`||i===`string`?i:`string`)}}}const Gl={noun:`parse`,arms:{text:{json:{const:!0},parse:(e,t,n)=>n===!0?{text:!0}:cc(e,t,`parse.text must be the literal boolean true, got ${K(n)}`)},regex:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`?Kl(e,t,n):cc(e,t,`parse.regex must be a pattern string, got ${K(n)}`)},json:{json:{const:!0},parse:(e,t,n)=>n===!0?{json:!0}:cc(e,t,`parse.json must be the literal boolean true, got ${K(n)}`)}}};function Kl(e,t,n){let r;try{new RegExp(n),r=RegExp(`${n}|`).exec(``).length-1}catch(n){return cc(e,t,`parse.regex is not a valid regular expression: ${n.message}`)}return r>=1?{regex:n}:cc(e,t,`parse.regex must contain a capture group — its group 1 is the value; got ${JSON.stringify(n)}`)}function ql(){return{required:!1,json:Dc(Gl),parse:(e,t,n,r)=>(r.regex!==void 0&&e.issues.push({path:`${t}.regex`,message:`${t}.regex was retired; the regex is the parse step's regex arm now: parse: { regex: ${JSON.stringify(r.regex)} }`,line:G(e.source,[...t.split(`.`),`regex`])}),r.parse===void 0?void 0:lc(e,Gl,`${t}.parse`,r.parse)??void 0)}}function Jl(){return{required:!1,json:{type:[`string`,`number`,`boolean`,`array`,`object`],description:`The value published when the source fails: a string under the text/regex parse arms, any non-null JSON value under the json arm`},parse:(e,t,n,r)=>nc(r.parse)&&`json`in r.parse?Yl(e,t,r.default):$s(e,t,r,`default`)}}function Yl(e,t,n){if(n!==void 0)return Xl(n)?n:cc(e,`${t}.default`,`${t}.default must be a JSON value (a json-parsed source's document), got ${K(n)}`)??void 0}function Xl(e){return e!==null&&Zl(e)}function Zl(e){if(e===null)return!0;switch(typeof e){case`string`:case`boolean`:return!0;case`number`:return Number.isFinite(e);case`object`:{if(Array.isArray(e))return e.every(Zl);let t=Object.getPrototypeOf(e);return(t===Object.prototype||t===null)&&Object.values(e).every(Zl)}default:return!1}}const Ql={value:Hl(),default:mc()},$l={path:yc(),type:Sc([`string`,`number`,`boolean`]),default:Wl()},eu={name:yc(),default:mc()},tu={path:xc(),readMode:Sc([`whole`,`first-line`]),parse:ql(),cache:Ml(`file`),default:Jl()},nu={command:yc(),parse:ql(),cache:Ml(`shell`),default:Jl()},ru={template:yc(),cache:Nl(),default:mc()},iu={layout:yc(),cache:Ll(),default:mc()},au={field:Ul(),cache:Ml(`git`),default:mc()},ou={key:yc(),default:mc()},su=`kind`;function cu(e,t){return{...dc(su,e,t),parse:(n,r,i)=>{let a=ac(n,t,r,i);return a===null?null:{kind:e,...a}}}}const lu={tag:su,noun:`source kind`,memberNoun:`variable`,arms:{literal:cu(`literal`,Ql),input:cu(`input`,$l),env:cu(`env`,eu),file:cu(`file`,tu),shell:cu(`shell`,nu),template:cu(`template`,ru),time:cu(`time`,iu),git:cu(`git`,au),state:cu(`state`,ou)}};function uu(){return Ec(lu)}function du(){return{type:`object`,additionalProperties:uu()}}function fu(e){return e.replace(/[^A-Za-z0-9]+/g,`_`)}const pu=`groups.`,mu=`menus.`,hu=`edit.`,gu=`candybar.`,_u=[pu,mu,hu,gu];function vu(e){return _u.some(t=>e.startsWith(t))}function yu(e){let t=fu(e);return _u.find(e=>t.startsWith(fu(e)))}function bu(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:G(e.source,[`root`])})}const xu=new Map([[`gitTaculous`,`gitaculous`],[`git`,`gitaculous`],[`settings.menu`,`candybar.menu`]]);function Su(e){let t=xu.get(e);return t===void 0?``:` (the built-in segment "${e}" was renamed to "${t}" — update this reference)`}const Cu=/^[A-Za-z_][A-Za-z0-9_]*$/,wu={pattern:Cu.source},Tu={anyOf:[{type:`boolean`},{type:`string`},{type:`integer`}]},Eu={type:`object`,additionalProperties:!1,required:[`label`,`domain`,`default`],properties:{label:{type:`string`,pattern:`^[^\\n\\r]+$`},domain:{anyOf:[{const:`bool`},{type:`array`,items:{type:`string`,pattern:`^[^/\\n\\r]+$`},minItems:1,uniqueItems:!0},{type:`object`,additionalProperties:!1,required:[`min`,`max`],properties:{min:{type:`integer`},max:{type:`integer`},step:{type:`integer`,minimum:1},atLeast:{type:`string`,...wu}}}]},default:Tu}},Du=[`label`,`domain`,`default`],Ou=[`min`,`max`,`step`,`atLeast`];function ku(e,t,n){e.issues.push({path:t,message:n,line:G(e.source,t.split(`.`))})}function Au(e,t,n){if(n===`bool`)return`bool`;if(Array.isArray(n)){let r=n.filter(e=>typeof e==`string`);if(n.length===0||r.length!==n.length)return ku(e,t,`a list domain must be a non-empty list of words, got ${JSON.stringify(n)}`);if(new Set(r).size!==r.length)return ku(e,t,`a list domain names each word once, got ${JSON.stringify(n)}`);let i=r.filter(e=>e===``||e.includes(`/`)||/[\n\r]/.test(e));return i.length>0?ku(e,t,`a list domain's words must be non-empty, slash-free, and newline-free — configure mode writes each on the set-state wire — got ${JSON.stringify(i)}`):r}if(nc(n)){let{min:r,max:i,step:a=1,atLeast:o}=n;return Object.keys(n).filter(e=>!Ou.includes(e)).length===0&&Number.isInteger(r)&&Number.isInteger(i)&&r<=i&&Number.isInteger(a)&&a>=1&&(o===void 0||typeof o==`string`)?{min:r,max:i,step:a,...o!==void 0&&{atLeast:o}}:ku(e,t,`a range domain is { min, max, step?, atLeast? } with integers min ≤ max, a whole step ≥ 1, and atLeast naming another range setting, got ${JSON.stringify(n)}`)}return ku(e,t,`domain must be "bool", a list of words, or { min, max }, got ${K(n)}`)}function ju(e,t,n){if(!nc(n))return ku(e,t,`${t} must be { label, domain, default }, got ${rc(n)}`);for(let r of Object.keys(n))Du.includes(r)||ku(e,`${t}.${r}`,`Unknown setting key "${r}". Expected one of: ${Du.join(`, `)}`);let{label:r}=n,i=typeof r==`string`&&r.length>0&&!/[\n\r]/.test(r);i||ku(e,`${t}.label`,`a setting needs a one-line, non-empty "label" — the name its control shows, spliced into a synthesized template string — got ${K(r)}`);let a=Au(e,`${t}.domain`,n.domain);if(!i||a===void 0)return;let o={label:r,domain:a,default:n.default};return!Mu(n.default)||!Gs(o,n.default)?ku(e,`${t}.default`,`default must be ${Js(o)}, got ${K(n.default)}`):o}function Mu(e){return typeof e==`boolean`||typeof e==`string`||typeof e==`number`}function Nu(){return{required:!1,json:{type:`object`,propertyNames:{...wu,not:{const:Vs}},additionalProperties:Eu},parse:(e,t,n,r)=>{let i=r[n];if(i===void 0)return;let a=`${t}.${n}`;if(!nc(i))return ku(e,a,`${a} must be an object of name → { label, domain, default }, got ${rc(i)}`);let o=Object.create(null);for(let[t,n]of Object.entries(i)){if(!Cu.test(t)){ku(e,`${a}.${t}`,`setting name "${t}" is read as .settings.${t} in a template, so it must be an identifier (letters, digits, _; not starting with a digit)`);continue}if(t===`theme`){ku(e,`${a}.${t}`,`setting "${Vs}" is one every placement already has — its default for this segment is segments.<name>.palette, and a placement sets its own with settings: { ${Vs}: "<theme>" }`);continue}let r=ju(e,`${a}.${t}`,n);r!==void 0&&(o[t]=r)}return o}}}function Pu(){return{required:!1,json:{type:`string`,minLength:1,pattern:`^[^:/]+$`},parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0)return typeof i==`string`&&i.length>0&&!/[:/]/.test(i)?i:ku(e,`${t}.${n}`,`a placement "id" must be a non-empty string without "/" or ":", got ${K(i)}`)}}}function Fu(){return{required:!1,json:{type:`object`,propertyNames:wu,additionalProperties:Tu},parse:(e,t,n,r)=>{let i=r[n];if(i===void 0)return;let a=`${t}.${n}`;if(!nc(i))return ku(e,a,`a placement's "settings" must be an object of setting name → value, got ${rc(i)}`);let o=Object.create(null);for(let[t,n]of Object.entries(i))Mu(n)?o[t]=n:ku(e,`${a}.${t}`,`setting "${t}" must be a boolean, a word, or a number, got ${rc(n)}`);return o}}}function Iu(e){return new Set(Object.keys(e.segments).filter(e=>!vu(e)))}function Lu(e,t,n){if(t===void 0)return{};if(!nc(t))return e.issues.push({path:`segments`,message:`segments must be an object, got ${rc(t)}`,line:G(e.source,[`segments`])}),{};let r={};for(let[i,a]of Object.entries(t)){let t=ic(e,n.has(i)?Uu:Hu,`segments.${i}`,a);t!==null&&(r[i]=t)}return r}function Ru(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>r[n]===void 0?cc(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${Su(t.slice(9))}`)??void 0:Zs(e,t,r,n)??void 0}}function zu(){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 ${K(i)}`,line:G(e.source,[...t.split(`.`),n])})}}}}function Bu(){return{required:!1,json:du(),parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0)return Vl(e,`${t}.${n}`,i)}}}const Vu={template:Ru(),description:mc(),width:zu(),justify:Sc(Ys),truncate:Sc(Xs),bg:mc(),fg:mc(),when:mc(),palette:vc(),vars:Bu(),settings:Nu()},Hu={noun:`segment key`,fields:Vu},Uu={noun:`segment key`,fields:{...Vu,template:mc()}},Wu=`#/definitions/LayoutNode`,Gu={kind:`container`,direction:`vertical`,children:[]};function Ku(e){return{required:!0,json:{const:e},parse:()=>e}}function qu(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>{let i=r[n];return typeof i==`string`&&i.length>0?i:(e.issues.push({path:`${t}.${n}`,message:`a segment node must have a non-empty "name" (a segment name), got ${K(i)}`,line:G(e.source,[`root`])}),``)}}}function Ju(){return{required:!0,json:{enum:[...Ts]},parse:(e,t,n,r)=>{let i=r[n];return typeof i==`string`&&Ts.includes(i)?i:(e.issues.push({path:`${t}.${n}`,message:`a container "direction" must be one of: ${Ts.join(`, `)} (got ${JSON.stringify(i)})`,line:G(e.source,[`root`])}),`vertical`)}}}function Yu(e){return{required:!0,json:{type:`array`,items:{$ref:Wu}},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 ${rc(a)}`,line:G(t.source,[`root`])}),[])}}}const Xu={noun:`layout-node key`,fields:{kind:Ku(`segment`),name:qu(),when:mc(),id:Pu(),settings:Fu()}},Zu=()=>Sc(aa),Qu={noun:`layout-node key`,fields:{kind:Ku(`container`),direction:Ju(),children:Yu(fc(()=>rd)),when:mc(),distribution:Zu()}};function $u(){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 ${K(i)}`,line:G(e.source,[`root`])}),``)}}}const ed={noun:`layout-node key`,fields:{seg:$u(),when:mc(),id:Pu(),settings:Fu()}},td={noun:`layout-node key`,fields:{h:Yu(fc(()=>rd)),when:mc(),distribution:Zu()}},nd={noun:`layout-node key`,fields:{v:Yu(fc(()=>rd)),when:mc(),distribution:Zu()}},rd=(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:G(e.source,[`root`])}),Gu):{kind:`segment`,name:n};if(!nc(n))return e.issues.push({path:t,message:`a layout node must be a string (segment name) or an object with "kind" / "seg" / "h" / "v", got ${rc(n)}`,line:G(e.source,[`root`])}),Gu;if(n.kind===`container`)return ic(e,Qu,t,n)??Gu;if(n.kind===`segment`)return ic(e,Xu,t,n)??Gu;if(n.kind===`cells`)return e.issues.push({path:t,message:`kind: "cells" is no longer supported — use the h-arm spelling instead:
36
+ `}function Yo(e,t,n){return e.split(`
37
+ `).join(`${n}${t}`)}function Xo(e,t,n){let[r,...i]=e,a=i.length===0?t:`{\n ${Yo(Xo(i,t,n),` `,`
38
+ `)}${n.trailingComma}\n}`;return`${n.key(r)}: ${a}`}function Zo(e,t,n,r){return e.slice(0,t)+r+e.slice(n)}function Qo(e,t){return e.lastIndexOf(`
39
+ `,t-1)+1}function $o(e){return/^[ \t]*$/.test(e)}function es(e,t){let n=Qo(e,t);return/^[ \t]*/.exec(e.slice(n))[0]}function ts(e,t){return $o(e.slice(Qo(e,t),t))}const ns=/(?:\/\/[^\n]*?)?(\r\n|\n|$)/y;function rs(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++;ns.lastIndex=n;let i=ns.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 is(e,t){let{commaEnd:n,line:r}=rs(e,t.end);if(ts(e,t.start)&&r!==null)return Zo(e,Qo(e,t.start),r.next,``);if(n!==-1){let r=n;for(;r<e.length&&e[r]===` `;)r++;return Zo(e,t.start,r,``)}let i=t.start;for(;i>0&&(e[i-1]===` `||e[i-1]===` `);)i--;return e[i-1]===`,`?Zo(e,i-1,t.end,``):Zo(e,t.start,t.end,``)}function as(e,t,n,r,i){let a=n.commaEnd!==-1,o=a?e:Zo(e,t.end,t.end,`,`),s=n.line.at+ +!a,c=Jo(e);return Zo(o,s,s,`${c}${i}${Yo(r,i,c)}${a?`,`:``}`)}function os(e,t,n,r){let i=t.kind===`object`?t.entries:t.elements,a=i[i.length-1],o=es(e,t.span.start);if(a===void 0){let i=o+` `,a=Jo(e);return Zo(e,t.span.start+1,t.span.end-1,`${a}${i}${Yo(n,i,a)}${r.trailingComma}${a}${o}`)}let{commaEnd:s,line:c}=rs(e,a.span.end);if(ts(e,a.span.start)&&c!==null){let t=e.slice(Qo(e,a.span.start),a.span.start);return as(e,a.span,{commaEnd:s,line:c},n,t)}let l=s===-1?a.span.end:s;return Zo(e,l,l,`${s===-1?`, `:` `}${n}${s===-1?``:`,`}`)}function ss(e,t,n,r){if(t.length===0)throw new jo(`setValue needs a non-empty path`,0);if(/^\s*$/.test(e)){let i=Jo(e);return`{${i} ${Yo(Xo(t,n,r),` `,i)}${r.trailingComma}${i}}${i}`}return cs(e,Lo(e),t,n,r)}function cs(e,t,n,r,i){let a=t;for(let t=0;t<n.length;t++){if(a.kind!==`object`)throw new jo(`cannot set ${n.join(`.`)}: ${n.slice(0,t).join(`.`)||`the document`} is not an object`,a.span.start);let o=Ro(a,n[t]);if(o===void 0)return os(e,a,Xo(n.slice(t),r,i),i);if(t===n.length-1){let t=es(e,o.keySpan.start);return Zo(e,o.value.span.start,o.value.span.end,Yo(r,t,Jo(e)))}a=o.value}throw new jo(`unreachable: path exhausted`,0)}function ls(e,t,n=0){if(t.length===0)throw new jo(`deleteValue needs a non-empty path`,0);if(/^\s*$/.test(e))return e;let r=t.slice(0,-1),i=zo(Lo(e),r),a=i===void 0?void 0:Ro(i,t[t.length-1]);if(a===void 0||i?.kind!==`object`)return e;let o=is(e,a.span);return r.length>n&&i.entries.length===1?ls(o,r,n):o}const us=[`h`,`v`,`children`];function ds(e){if(e.kind===`string`)return e.value;if(e.kind!==`object`)return;let t=Ro(e,`seg`)?.value,n=Ro(e,`kind`)?.value,r=Ro(e,`name`)?.value,i=t?.kind===`string`?t.value:n?.kind===`string`&&n.value===`segment`&&r?.kind===`string`?r.value:void 0;if(i===void 0)return;let a=Ro(e,`id`)?.value;return a?.kind===`string`?a.value:i}function fs(e){return e.kind===`object`?us.map(t=>Ro(e,t)?.value).filter(e=>e?.kind===`array`):[]}function ps(e){let t=Ro(e,`rows`)?.value;return t?.kind===`object`?t.entries:null}function ms(e){if(e.kind!==`object`)return!0;let t=ps(e);return t===null||t.length>0||e.entries.some(e=>e.key!==`rows`)}function*hs(e,t){yield{node:e,bareAt:t};for(let t of fs(e))for(let e of t.elements)yield*hs(e,null);for(let n of ps(e)??[])yield*hs(n.value,t===null?null:[...t,`rows`,n.key])}function gs(e,t){for(let{node:n}of hs(e,null))if(ds(n)===t)return!0;return!1}function _s(e,t,n){let r=zo(Lo(e),t);if(r===void 0)return null;for(let{node:i,bareAt:a}of hs(r,t))if(ds(i)===n)return a===null?{text:e,ref:i}:_s(ss(e,a,`{ h: [${Bo(e,i)}] }`,Go),t,n);return null}function vs(e,t,n){let r=_s(e,t,n);return r===null?null:is(r.text,r.ref.span)}function ys(e,t,n,r,i){let a=_s(e,t,r);if(a===null)return null;let{text:o,ref:s}=a,c=n.id===void 0?JSON.stringify(n.seg):`{ seg: ${JSON.stringify(n.seg)}, id: ${JSON.stringify(n.id)} }`,{commaEnd:l,line:u}=rs(o,s.span.end);if(ts(o,s.span.start)&&u!==null){let e=o.slice(Qo(o,s.span.start),s.span.start);return i===`after`?as(o,s.span,{commaEnd:l,line:u},c,e):Zo(o,s.span.start,s.span.start,`${c},${Jo(o)}${e}`)}let d=Bo(o,s),f=i===`before`?`${c}, ${d}`:`${d}, ${c}`;return Zo(o,s.span.start,s.span.end,f)}function bs(e,t,n,r,i){let a=_s(e,t,n);if(a===null)return null;let{text:o,ref:s}=a,c=`{ ${Wo(r)}: ${i} }`;return s.kind===`string`?Zo(o,s.span.start,s.span.end,`{ seg: ${JSON.stringify(s.value)}, settings: ${c} }`):Ro(s,`settings`)===void 0?cs(o,s,[`settings`],c,Go):cs(o,s,[`settings`,r],i,Go)}var xs=class extends Error{file;issues;warnings;constructor(e,t,n=[]){super(Ts(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=Ss(e,n,i);if(t===-1)return r===void 0?void 0:Cs(e,r);n=t,r=t}return r===void 0?void 0:Cs(e,r)}function Ss(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 Cs(e,t){let n=1;for(let r=0;r<t&&r<e.length;r++)e.charCodeAt(r)===10&&n++;return n}function ws(e,t){try{return Lo(t),null}catch(n){if(!(n instanceof jo))throw n;return`${e}:${Cs(t,n.offset)}: ${n.reason} — the settings menu cannot edit this file until it is fixed`}}function Ts(e,t){if(t.length===0)return`${e}: invalid config (no details)`;let n=[`Invalid config in ${e} (${t.length} issue${t.length===1?``:`s`}):`];for(let e of t){let t=[];e.line!==void 0&&t.push(`line ${e.line}${e.col===void 0?``:`:${e.col}`}`),e.path&&t.push(e.path);let r=t.length>0?`[${t.join(` • `)}] `:``;n.push(` ${r}${e.message}`)}return n.join(`
40
+ `)}const Es=[`vertical`,`horizontal`],Ds={vertical:`row`,horizontal:`cell`};function Os(e){return e.id??e.name}function ks(e){return[...Ms(e)].flatMap(e=>e.kind===`segment`?[Os(e)]:[])}function As(e,t){if(!t.has(e))return e;let n=2;for(;t.has(`${e}-${n}`);)n++;return`${e}-${n}`}function js(e,t){return e.opens===void 0?e:{...e,opens:{...e.opens,body:t(e.opens.body)}}}function*Ms(e){yield e;for(let t of Is(e))yield*Ms(t)}const Ns=(e,t)=>`${e}.children[${t}]`,Ps=e=>`${e}.opens.body`;function*Fs(e,t){if(yield[e,t],e.kind===`container`)for(let[n,r]of e.children.entries())yield*Fs(r,Ns(t,n));else e.opens!==void 0&&(yield*Fs(e.opens.body,Ps(t)))}function Is(e){return e.kind===`container`?e.children:e.opens===void 0?[]:[e.opens.body]}function Ls(e){return e===void 0||`text`in e?`text`:`regex`in e?`regex`:`json`}const Rs=[`ttl`,`watch_file`,`depends_on`,`key`,`never`];function zs(e){return e.kind!==`literal`&&e.kind!==`input`&&e.kind!==`env`&&e.kind!==`state`}const Bs=[`branch`,`sha`,`dirty`,`ahead`,`behind`,`stash`],Vs=[`file`,`shell`,`git`],Hs=`theme`;function Us(e){return{...e.settings,[Hs]:{label:Hs,domain:`theme`,default:e.palette??`bar`}}}function Ws(e){let t=e?.domain;return typeof t==`object`&&`min`in t?t:void 0}function Gs(e,t){return Object.entries(e).flatMap(([n,r])=>{let i=Ws(r)?.atLeast;if(i===void 0)return[];let a=t[n],o=t[i];return a>=o?[]:[{setting:n,message:`"${n}" (${a}) is below "${i}" (${o}) — ${r.label} must be at least ${e[i].label}`}]})}function Ks(e,t){let{domain:n}=e;return n===`bool`?typeof t==`boolean`:n===`theme`?typeof t==`string`&&Xa(t):`min`in n?typeof t==`number`&&Number.isInteger(t)&&t>=n.min&&t<=n.max:typeof t==`string`&&n.includes(t)}function qs(e){return String(e)}function Js(e,t){let{domain:n}=e,r=n===`bool`?t===`true`?!0:t===`false`?!1:t:typeof n==`object`&&`min`in n&&/^-?\d+$/.test(t)?Number(t):t;return Ks(e,r)?r:void 0}function Ys(e){let{domain:t}=e;return t===`bool`?`true or false`:t===`theme`?`"bar" (the bar's own theme) or an installed theme name`:`min`in t?`an integer from ${t.min} to ${t.max}`:`one of ${t.map(e=>JSON.stringify(e)).join(`, `)}`}const Xs=[`left`,`center`,`right`],Zs=[`right`,`left`,`middle`];function Qs(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 ${ic(i)}`,line:W(e.source,[...t.split(`.`),r])}),null)}function $s(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 ${ic(i)}`,line:W(e.source,[...t.split(`.`),`default`])});return}return i}}function ec(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 ${ic(i)}`,line:W(e.source,[...t.split(`.`),r])});return}return i}}function tc(e,t,n){let r=ec(e,t,n,`palette`);if(r!==void 0){if(!e.allowedPalettes.has(r)){e.issues.push({path:`${t}.palette`,message:`Unknown palette "${r}"${Wa(r)}. Expected one of: ${[...e.allowedPalettes].sort().join(`, `)}`,line:W(e.source,[...t.split(`.`),`palette`])});return}return r}}function nc(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 rc(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function ic(e){return e===null?`null`:Array.isArray(e)?`array`:typeof e}function G(e){return typeof e==`string`?JSON.stringify(e):e===void 0?`undefined`:String(e)}function ac(e,t,n,r){if(!rc(r))return e.issues.push({path:n,message:`${n} must be an object, got ${ic(r)}`,line:W(e.source,n.split(`.`))}),null;let i=Object.entries(t.removed??{}).filter(([e])=>r[e]!==void 0);for(let[t,r]of i)lc(e,`${n}.${t}`,`${n}.${t} was removed: ${r}`);return cc(e,n,r,t.noun,new Set(Object.keys(t.fields)),new Set(i.map(([e])=>`${n}.${e}`))),oc(e,t.fields,n,r)}function oc(e,t,n,r){let i=t,a={},o=!0;for(let[t,s]of Object.entries(i)){let i=s.parse(e,n,t,r);i===void 0?s.required&&(o=!1):a[t]=i}return o?a:null}const sc=new Set;function cc(e,t,n,r,i,a=sc){for(let o of Object.keys(n))!i.has(o)&&!a.has(`${t}.${o}`)&&e.issues.push({path:`${t}.${o}`,message:`Unknown ${r} "${o}". Expected one of: ${[...i].join(`, `)}`,line:W(e.source,[...t.split(`.`),o])})}function lc(e,t,n){return e.issues.push({path:t,message:n,line:W(e.source,t.split(`.`))}),null}function uc(e,t,n,r){if(!rc(r))return e.issues.push({path:n,message:`${t.noun} must be an object, got ${ic(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 dc(e,t,n,r){if(!rc(r))return e.issues.push({path:n,message:`${n} must be an object, got ${ic(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 ${ic(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 cc(e,n,r,`${i} ${t.memberNoun} key`,o.keys,l),c}function fc(e,t,n){return{json:Ec(wc(n),e,t),keys:new Set([e,...Object.keys(n)])}}function pc(e){return(...t)=>e()(...t)}function mc(e,...t){return(n,r,i)=>{let a=e(n,r,i);if(a===null)return null;for(let e of t){if(e.ok(a))continue;let{field:t,message:i}=e.issue(a),o=t===``?r:`${r}.${t}`;return n.issues.push({path:o,message:i,line:W(n.source,o.split(`.`))}),null}return a}}function hc(){return{required:!1,json:{type:`string`},parse:(e,t,n,r)=>ec(e,t,r,n)}}function gc(){return{required:!1,json:{type:`boolean`},parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0){if(typeof i!=`boolean`){e.issues.push({path:`${t}.${n}`,message:`${n} must be a boolean, got ${ic(i)}`,line:W(e.source,[n])});return}return i}}}}function _c(e){let{min:t,max:n}=e;return{required:!1,json:{type:`integer`,minimum:t,maximum:n},parse:(e,r,i,a)=>{let o=a[i];if(o!==void 0){if(typeof o!=`number`||!Number.isInteger(o)||o<t||o>n){e.issues.push({path:`${r}.${i}`,message:`${i} must be an integer between ${t} and ${n}, got ${G(o)}`,line:W(e.source,[i])});return}return o}}}}function vc(e={}){let{min:t}=e;return{required:!1,json:{type:`number`,...t!==void 0&&{minimum:t}},parse:(e,n,r,i)=>{let a=i[r];if(a!==void 0){if(typeof a!=`number`||!Number.isFinite(a)||t!==void 0&&a<t){let i=t===void 0?`a finite number`:`a finite number >= ${t}`;e.issues.push({path:`${n}.${r}`,message:`${r} must be ${i}, got ${G(a)}`,line:W(e.source,[r])});return}return a}}}}function yc(){return{required:!1,json:{type:`string`},parse:(e,t,n,r)=>tc(e,t,r)}}function bc(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>Qs(e,t,r,n)??void 0}}function xc(e,t){return d(t)?null:`${e} must be an absolute path (\`~\` and relative paths are not expanded), got ${JSON.stringify(t)}`}function Sc(){return{required:!0,json:{type:`string`,pattern:`^/`},parse:(e,t,n,r)=>{let i=Qs(e,t,r,n);if(i===null)return;let a=xc(`${t}.${n}`,i);return a===null?i:lc(e,`${t}.${n}`,a)??void 0}}}function Cc(e){return{required:!1,json:{enum:[...e]},parse:(t,n,r,i)=>nc(t,n,i,r,e)}}function wc(e,t={closed:!0}){let n=e,r={},i=[];for(let[e,t]of Object.entries(n))r[e]=t.json,t.required&&i.push(e);return{type:`object`,properties:r,...i.length>0&&{required:i},...t.closed&&{additionalProperties:!1}}}function Tc(e){return wc(e.fields)}function Ec(e,t,n){let r=e,i={[t]:{const:n},...r.properties},a=[t,...r.required??[]];return{...r,properties:i,required:a}}function Dc(e){let t=e.arms;return{anyOf:Object.values(t).map(e=>e.json)}}function Oc(e){let t=e.arms;return{anyOf:Object.entries(t).map(([e,t])=>({type:`object`,properties:{[e]:t.json},required:[e],additionalProperties:!1}))}}const kc=/^[A-Za-z_][A-Za-z0-9_]*$/;function Ac(e){return`#${e+1}`}const jc={rows:{}};function Mc(e){return`rows`in e}function Nc(e){return Object.fromEntries(e.map((e,t)=>[Ac(t),e]))}function Pc(e){if(e.kind===`container`&&e.direction===`vertical`){let{kind:t,direction:n,children:r,...i}=e;return{...i,rows:Nc(r)}}let{when:t,...n}=e;return{...t!==void 0&&{when:t},rows:Nc([n])}}function Fc(e){let{rows:t,...n}=e;return{kind:`container`,direction:`vertical`,children:Object.values(t),...n}}function Ic(e){return Mc(e)?Fc(e):e}function*Lc(e,t){if(!Mc(e)){yield*Fs(e,t);return}yield[Fc(e),t];for(let[n,r]of Object.entries(e.rows))yield*Fs(r,`${t}.rows.${n}`)}function Rc(e,t){return Mc(e)?{...t,...e,rows:{...t.rows,...e.rows}}:Pc(e)}function zc(e){if(!Mc(e))return!0;let{rows:t,...n}=e;return Object.values(n).some(e=>e!==void 0)||Object.keys(t).length>0}function Bc(e,t){return{globals:{...t.globals,...e.globals??{}},variables:{...t.variables,...e.variables??{}},segments:Uc(t.segments,Vc(t.segments,e.segments??{})),root:Rc(e.root??jc,t.root),actions:{...t.actions,...e.actions??{}},looks:{...t.looks,...e.looks??{}},presets:Uc(t.presets,Hc(t.presets,e.presets??{})),editGlobals:{...t.editGlobals,...e.editGlobals??{}},helpers:{...t.helpers,...e.helpers??{}}}}function Vc(e,t){return Object.fromEntries(Object.entries(t).map(([t,n])=>[t,n.settings===void 0?n:{...n,settings:{...e[t]?.settings,...n.settings}}]))}function Hc(e,t){return Object.fromEntries(Object.entries(t).map(([t,n])=>[t,n.globals===void 0?n:{...n,globals:{...e[t]?.globals,...n.globals}}]))}function Uc(e,t){return{...e,...Object.fromEntries(Object.entries(t).map(([t,n])=>[t,{...e[t],...n}]))}}const Wc=`closed`,Gc=`🍫`;function Kc(e,t,n){if(t===0)return`${e} needs a display (the clickable text)`;if(t!==1&&t!==n)return`${e} cycles ${n} members; bind one display per member (${n}) or one static display, got ${t}`}function qc(e,t,n,r){let i=Kc(e,t.length,n);if(i!==void 0)throw Error(i);return t.length===1?t[0]:t[r]}function Jc(e){return e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}function Yc(e,t,n,r,i){return{kind:`segment`,name:e,opens:{ref:t,body:n,placement:r},...i!==void 0&&{when:i}}}function Xc(e,...t){return`{{ and ${[e,...t].map(Zc).join(` `)} }}`}function Zc(e){return`(eq .${e.variable} "${Jc(e.member)}")`}function Qc(e,t,n){return`{{ action "${e}" "${Jc(t)}" "${Jc(n)}" }}`}function $c(e,t){return{kind:`state`,key:e,default:t}}function el(e,t){return{set:e,cycle:[Wc,t]}}const tl={required:!1,json:{enum:[...mo]},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: ${mo.join(`, `)}`,line:W(e.source,[...t.split(`.`),n])});return}return nc(e,t,r,n,mo)}},nl={required:!1,json:{type:`string`},parse:(e,t,n,r)=>{let i=ec(e,t,r,n);return $a(i)?i:tc(e,t,r)}},rl=/^[^\r\n]*\S[^\r\n]*$/u,il=RegExp(`^(?:❌|✕)[\\uFE0E\\uFE0F]?$`,`u`),al={required:!1,json:{type:`string`,pattern:rl.source,not:{pattern:il.source}},parse:(e,t,n,r)=>{let i=ec(e,t,r,n);if(i===void 0||rl.test(i)&&!il.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])})}};function ol(e){return{spec:Cc(e),domain:{from:e}}}function sl(){return{spec:gc(),domain:`bool`}}function cl(e){return{spec:e,domain:`text`}}const ll={default_empty_value:cl(hc()),default_separator:cl(hc()),palette:{spec:nl,domain:{from:`themes`}},look:{spec:hc(),domain:{from:`looks`}},preset:{spec:hc(),domain:{from:`presets`}},style:ol(oo),progression:ol(yo),autoWrap:sl(),padding:{spec:_c(To),domain:{...To,step:1}},charset:ol(lo),updateNotice:sl(),colorCompatibility:{spec:tl,domain:{from:mo}},menuGlyph:cl(al)},ul=Object.fromEntries(Object.entries(ll).map(([e,t])=>[e,t.spec]));function dl(e){return ll[e].domain}function fl(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 pl(e){return fl(`${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 ml(e){return fl(`${e} cannot change the settings menu glyph`,t=>`${t}: ${e} cannot change the settings menu glyph — one menu is shared by every preset. Set it in the top-level globals.menuGlyph instead.`)}function hl(e,t){return{...e,json:{...e.json,not:{pattern:`\\{\\{`}},parse:(n,r,i,a)=>{let o=a[i];if(typeof o==`string`&&$a(o)){n.issues.push({path:`${r}.${i}`,message:`${r}.${i}: a rule is not allowed here — ${t} is decided later than any rule could be settled, so it names a value. Write the rule in globals.${i} (or a preset's globals.${i}) instead.`,line:W(n.source,[...r.split(`.`),i])});return}return e.parse(n,r,i,a)}}}const gl={default_bg:"nothing reads it — a segment with no `bg:` wears the decoration tint of its place in the bar. Delete the key, and author `bg:` on the segments that need a fixed colour.",default_fg:"nothing reads it — a segment with no `fg:` wears text chosen for contrast against its background. Delete the key, and author `fg:` on the segments that need a fixed colour.",default_truncate_marker:'nothing reads it — a segment clipped to its `width:` always ends in "…". Delete the key.'},_l={noun:`globals key`,fields:ul,removed:gl},vl={preset:pl(`a preset`),menuGlyph:ml(`a preset`)},yl={noun:`preset globals key`,fields:{...ul,...vl},removed:gl};function bl(e){return Dl(e)&&!(e in vl)}const xl={noun:`editGlobals key`,removed:gl,fields:{...ul,preset:pl(`the editGlobals fragment`),menuGlyph:ml(`the editGlobals fragment`),palette:hl(ul.palette,`the editGlobals fragment`),look:hl(ul.look,`the editGlobals fragment`)}};function Sl(e,t,n){return n===void 0?{}:ac(e,_l,t,n)??{}}function Cl(e,t,n){return ac(e,yl,t,n)??{}}function wl(){return Tc(yl)}function Tl(e,t,n){return ac(e,xl,t,n)??{}}const El=new Set(Object.keys(ul));function Dl(e){return El.has(e)}function Ol(){return[...El]}const kl={padding:1};function Al(e){let t=new Map;for(let[n,r]of Object.entries(kl)){let i=e[n];t.set(n,typeof i==`number`?i:r)}return t}function jl(e,t,n,r){return n.cache===void 0?(Vs.includes(r)&&e.issues.push({path:`${t}.cache`,message:`${r} variables must declare a cache policy (one of: ${Rs.join(`, `)})`,line:W(e.source,t.split(`.`))}),null):Il(e,`${t}.cache`,n.cache)}function Ml(e,t,n){if(n.cache!==void 0)return Il(e,`${t}.cache`,n.cache)??void 0}function Nl(e){return{required:!0,json:zl(),parse:(t,n,r,i)=>jl(t,n,i,e)??void 0}}function Pl(){return{required:!1,json:zl(),parse:(e,t,n,r)=>Ml(e,t,r)}}const Fl={noun:`cache`,arms:{ttl:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`&&Vl(n)?{ttl:n}:lc(e,t,`cache.ttl must be a duration string like "5s", "100ms", "2m", "1h"; got ${G(n)}`)},watch_file:{json:{type:`string`,pattern:`^/`},parse:(e,t,n)=>{if(typeof n!=`string`)return lc(e,t,`cache.watch_file must be a path string, got ${G(n)}`);let r=xc(`cache.watch_file`,n);return r===null?{watch_file:n}:lc(e,t,r)}},depends_on:{json:{type:`array`,items:{type:`string`}},parse:(e,t,n)=>Array.isArray(n)&&n.every(e=>typeof e==`string`)?{depends_on:n}:lc(e,t,`cache.depends_on must be an array of variable-name strings, got ${G(n)}`)},key:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`&&n!==``?{key:n}:lc(e,t,`cache.key must be a non-empty template string, got ${G(n)}`)},never:{json:{const:!0},parse:(e,t,n)=>n===!0?{never:!0}:lc(e,t,`cache.never must be the literal boolean true, got ${G(n)}`)}}};function Il(e,t,n){return uc(e,Fl,t,n)}const Ll={noun:`time-variable cache`,arms:{ttl:Fl.arms.ttl}};function Rl(){return{required:!1,json:Oc(Ll),parse:(e,t,n,r)=>r.cache===void 0?void 0:uc(e,Ll,`${t}.cache`,r.cache)??void 0}}function zl(){return Oc(Fl)}const Bl=/^(\d+(?:\.\d+)?)(ms|s|m|h)$/;function Vl(e){return Bl.test(e)}function Hl(e,t,n){if(n===void 0)return{};if(!rc(n))return e.issues.push({path:t,message:`${t} must be an object, got ${ic(n)}`,line:W(e.source,t.split(`.`))}),{};let r={};for(let[i,a]of Object.entries(n)){let n=dc(e,uu,`${t}.${i}`,a);n!==null&&(r[i]=n)}return r}function Ul(){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 ${ic(i)}`,line:W(e.source,t.split(`.`))});return}return i}}}function Wl(){return{required:!0,json:{enum:[...Bs]},parse:(e,t,n,r)=>{let i=r.field;if(typeof i!=`string`||!Bs.includes(i)){e.issues.push({path:`${t}.field`,message:`git field must be one of: ${Bs.join(`, `)}, got ${JSON.stringify(i)}`,line:W(e.source,[...t.split(`.`),`field`])});return}return i}}}function Gl(){return{required:!1,json:{type:[`string`,`number`,`boolean`]},parse:(e,t,n,r)=>{let i=r.type;return $s(e,t,r,i===`number`||i===`boolean`||i===`string`?i:`string`)}}}const Kl={noun:`parse`,arms:{text:{json:{const:!0},parse:(e,t,n)=>n===!0?{text:!0}:lc(e,t,`parse.text must be the literal boolean true, got ${G(n)}`)},regex:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`?ql(e,t,n):lc(e,t,`parse.regex must be a pattern string, got ${G(n)}`)},json:{json:{const:!0},parse:(e,t,n)=>n===!0?{json:!0}:lc(e,t,`parse.json must be the literal boolean true, got ${G(n)}`)}}};function ql(e,t,n){let r;try{new RegExp(n),r=RegExp(`${n}|`).exec(``).length-1}catch(n){return lc(e,t,`parse.regex is not a valid regular expression: ${n.message}`)}return r>=1?{regex:n}:lc(e,t,`parse.regex must contain a capture group — its group 1 is the value; got ${JSON.stringify(n)}`)}function Jl(){return{required:!1,json:Oc(Kl),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:uc(e,Kl,`${t}.parse`,r.parse)??void 0)}}function Yl(){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)=>rc(r.parse)&&`json`in r.parse?Xl(e,t,r.default):ec(e,t,r,`default`)}}function Xl(e,t,n){if(n!==void 0)return Zl(n)?n:lc(e,`${t}.default`,`${t}.default must be a JSON value (a json-parsed source's document), got ${G(n)}`)??void 0}function Zl(e){return e!==null&&Ql(e)}function Ql(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(Ql);let t=Object.getPrototypeOf(e);return(t===Object.prototype||t===null)&&Object.values(e).every(Ql)}default:return!1}}const $l={value:Ul(),default:hc()},eu={path:bc(),type:Cc([`string`,`number`,`boolean`]),default:Gl()},tu={name:bc(),default:hc()},nu={path:Sc(),readMode:Cc([`whole`,`first-line`]),parse:Jl(),cache:Nl(`file`),default:Yl()},ru={command:bc(),parse:Jl(),cache:Nl(`shell`),default:Yl()},iu={template:bc(),cache:Pl(),default:hc()},au={layout:bc(),cache:Rl(),default:hc()},ou={field:Wl(),cache:Nl(`git`),default:hc()},su={key:bc(),default:hc()},cu=`kind`;function lu(e,t){return{...fc(cu,e,t),parse:(n,r,i)=>{let a=oc(n,t,r,i);return a===null?null:{kind:e,...a}}}}const uu={tag:cu,noun:`source kind`,memberNoun:`variable`,arms:{literal:lu(`literal`,$l),input:lu(`input`,eu),env:lu(`env`,tu),file:lu(`file`,nu),shell:lu(`shell`,ru),template:lu(`template`,iu),time:lu(`time`,au),git:lu(`git`,ou),state:lu(`state`,su)}};function du(){return Dc(uu)}function fu(){return{type:`object`,additionalProperties:du()}}function pu(e){return e.replace(/[^A-Za-z0-9]+/g,`_`)}const mu=`groups.`,hu=`menus.`,gu=`edit.`,K=`candybar.`,_u=[mu,hu,gu,K];function vu(e){return _u.some(t=>e.startsWith(t))}function yu(e){let t=pu(e);return _u.find(e=>t.startsWith(pu(e)))}function bu(e,t,n,r){for(let i of[`variables`,`actions`,`segments`])for(let a of Object.keys(t[i]??{}))a.startsWith(n)&&e.issues.push({path:`${i}.${a}`,message:`"${a}" is in the reserved "${n}" namespace (synthesized by ${r}) — rename it`,line:W(e.source,[`root`])})}const xu=new Map([[`gitTaculous`,`gitaculous`],[`git`,`gitaculous`],[`settings.menu`,`candybar.menu`]]);function Su(e){let t=xu.get(e);return t===void 0?``:` (the built-in segment "${e}" was renamed to "${t}" — update this reference)`}const Cu=/^[A-Za-z_][A-Za-z0-9_]*$/,wu={pattern:Cu.source},Tu={anyOf:[{type:`boolean`},{type:`string`},{type:`integer`}]},Eu={type:`object`,additionalProperties:!1,required:[`label`,`domain`,`default`],properties:{label:{type:`string`,pattern:`^[^\\n\\r]+$`},domain:{anyOf:[{const:`bool`},{type:`array`,items:{type:`string`,pattern:`^[^/\\n\\r]+$`},minItems:1,uniqueItems:!0},{type:`object`,additionalProperties:!1,required:[`min`,`max`],properties:{min:{type:`integer`},max:{type:`integer`},step:{type:`integer`,minimum:1},atLeast:{type:`string`,...wu}}}]},default:Tu}},Du=[`label`,`domain`,`default`],Ou=[`min`,`max`,`step`,`atLeast`];function ku(e,t,n){e.issues.push({path:t,message:n,line:W(e.source,t.split(`.`))})}function Au(e,t,n){if(n===`bool`)return`bool`;if(Array.isArray(n)){let r=n.filter(e=>typeof e==`string`);if(n.length===0||r.length!==n.length)return ku(e,t,`a list domain must be a non-empty list of words, got ${JSON.stringify(n)}`);if(new Set(r).size!==r.length)return ku(e,t,`a list domain names each word once, got ${JSON.stringify(n)}`);let i=r.filter(e=>e===``||e.includes(`/`)||/[\n\r]/.test(e));return i.length>0?ku(e,t,`a list domain's words must be non-empty, slash-free, and newline-free — configure mode writes each on the set-state wire — got ${JSON.stringify(i)}`):r}if(rc(n)){let{min:r,max:i,step:a=1,atLeast:o}=n;return Object.keys(n).filter(e=>!Ou.includes(e)).length===0&&Number.isInteger(r)&&Number.isInteger(i)&&r<=i&&Number.isInteger(a)&&a>=1&&(o===void 0||typeof o==`string`)?{min:r,max:i,step:a,...o!==void 0&&{atLeast:o}}:ku(e,t,`a range domain is { min, max, step?, atLeast? } with integers min ≤ max, a whole step ≥ 1, and atLeast naming another range setting, got ${JSON.stringify(n)}`)}return ku(e,t,`domain must be "bool", a list of words, or { min, max }, got ${G(n)}`)}function ju(e,t,n){if(!rc(n))return ku(e,t,`${t} must be { label, domain, default }, got ${ic(n)}`);for(let r of Object.keys(n))Du.includes(r)||ku(e,`${t}.${r}`,`Unknown setting key "${r}". Expected one of: ${Du.join(`, `)}`);let{label:r}=n,i=typeof r==`string`&&r.length>0&&!/[\n\r]/.test(r);i||ku(e,`${t}.label`,`a setting needs a one-line, non-empty "label" — the name its control shows, spliced into a synthesized template string — got ${G(r)}`);let a=Au(e,`${t}.domain`,n.domain);if(!i||a===void 0)return;let o={label:r,domain:a,default:n.default};return!Mu(n.default)||!Ks(o,n.default)?ku(e,`${t}.default`,`default must be ${Ys(o)}, got ${G(n.default)}`):o}function Mu(e){return typeof e==`boolean`||typeof e==`string`||typeof e==`number`}function Nu(){return{required:!1,json:{type:`object`,propertyNames:{...wu,not:{const:Hs}},additionalProperties:Eu},parse:(e,t,n,r)=>{let i=r[n];if(i===void 0)return;let a=`${t}.${n}`;if(!rc(i))return ku(e,a,`${a} must be an object of name → { label, domain, default }, got ${ic(i)}`);let o=Object.create(null);for(let[t,n]of Object.entries(i)){if(!Cu.test(t)){ku(e,`${a}.${t}`,`setting name "${t}" is read as .settings.${t} in a template, so it must be an identifier (letters, digits, _; not starting with a digit)`);continue}if(t===`theme`){ku(e,`${a}.${t}`,`setting "${Hs}" is one every placement already has — its default for this segment is segments.<name>.palette, and a placement sets its own with settings: { ${Hs}: "<theme>" }`);continue}let r=ju(e,`${a}.${t}`,n);r!==void 0&&(o[t]=r)}return o}}}function Pu(){return{required:!1,json:{type:`string`,minLength:1,pattern:`^[^:/]+$`},parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0)return typeof i==`string`&&i.length>0&&!/[:/]/.test(i)?i:ku(e,`${t}.${n}`,`a placement "id" must be a non-empty string without "/" or ":", got ${G(i)}`)}}}function Fu(){return{required:!1,json:{type:`object`,propertyNames:wu,additionalProperties:Tu},parse:(e,t,n,r)=>{let i=r[n];if(i===void 0)return;let a=`${t}.${n}`;if(!rc(i))return ku(e,a,`a placement's "settings" must be an object of setting name → value, got ${ic(i)}`);let o=Object.create(null);for(let[t,n]of Object.entries(i))Mu(n)?o[t]=n:ku(e,`${a}.${t}`,`setting "${t}" must be a boolean, a word, or a number, got ${ic(n)}`);return o}}}function Iu(e){return new Set(Object.keys(e.segments).filter(e=>!vu(e)))}function Lu(e,t,n){if(t===void 0)return{};if(!rc(t))return e.issues.push({path:`segments`,message:`segments must be an object, got ${ic(t)}`,line:W(e.source,[`segments`])}),{};let r={};for(let[i,a]of Object.entries(t)){let t=ac(e,n.has(i)?Uu:Hu,`segments.${i}`,a);t!==null&&(r[i]=t)}return r}function Ru(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>r[n]===void 0?lc(e,`${t}.${n}`,`${t} declares no template — only a segment the bundled default declares may omit it (inheriting the bundled template); a segment of your own needs its own${Su(t.slice(9))}`)??void 0:Qs(e,t,r,n)??void 0}}function zu(){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 Bu(){return{required:!1,json:fu(),parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0)return Hl(e,`${t}.${n}`,i)}}}const Vu={template:Ru(),description:hc(),width:zu(),justify:Cc(Xs),truncate:Cc(Zs),bg:hc(),fg:hc(),when:hc(),palette:yc(),vars:Bu(),settings:Nu()},Hu={noun:`segment key`,fields:Vu},Uu={noun:`segment key`,fields:{...Vu,template:hc()}},Wu=`#/definitions/LayoutNode`,Gu={kind:`container`,direction:`vertical`,children:[]};function Ku(e){return{required:!0,json:{const:e},parse:()=>e}}function qu(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>{let i=r[n];return typeof i==`string`&&i.length>0?i:(e.issues.push({path:`${t}.${n}`,message:`a segment node must have a non-empty "name" (a segment name), got ${G(i)}`,line:W(e.source,[`root`])}),``)}}}function Ju(){return{required:!0,json:{enum:[...Es]},parse:(e,t,n,r)=>{let i=r[n];return typeof i==`string`&&Es.includes(i)?i:(e.issues.push({path:`${t}.${n}`,message:`a container "direction" must be one of: ${Es.join(`, `)} (got ${JSON.stringify(i)})`,line:W(e.source,[`root`])}),`vertical`)}}}function Yu(e){return{required:!0,json:{type:`array`,items:{$ref:Wu}},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 ${ic(a)}`,line:W(t.source,[`root`])}),[])}}}const Xu={noun:`layout-node key`,fields:{kind:Ku(`segment`),name:qu(),when:hc(),id:Pu(),settings:Fu()}},Zu=()=>Cc(oa),Qu={noun:`layout-node key`,fields:{kind:Ku(`container`),direction:Ju(),children:Yu(pc(()=>rd)),when:hc(),distribution:Zu()}};function $u(){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 ed={noun:`layout-node key`,fields:{seg:$u(),when:hc(),id:Pu(),settings:Fu()}},td={noun:`layout-node key`,fields:{h:Yu(pc(()=>rd)),when:hc(),distribution:Zu()}},nd={noun:`layout-node key`,fields:{v:Yu(pc(()=>rd)),when:hc(),distribution:Zu()}},rd=(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`])}),Gu):{kind:`segment`,name:n};if(!rc(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 ${ic(n)}`,line:W(e.source,[`root`])}),Gu;if(n.kind===`container`)return ac(e,Qu,t,n)??Gu;if(n.kind===`segment`)return ac(e,Xu,t,n)??Gu;if(n.kind===`cells`)return e.issues.push({path:t,message:`kind: "cells" is no longer supported — use the h-arm spelling instead:
41
41
  Old: { kind: "cells", segments: ["seg1", "seg2"] }
42
- New: { h: ["seg1", "seg2"] }`,line:G(e.source,[`root`])}),Gu;if(n.kind===`group`){let r=ic(e,ud,t,n);return r===null?Gu:(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}),fd(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:G(e.source,[`root`])}),Gu}if(a){let r=ic(e,ed,t,n);return r===null?Gu:{kind:`segment`,name:r.seg,...r.when!==void 0&&{when:r.when},...r.id!==void 0&&{id:r.id},...r.settings!==void 0&&{settings:r.settings}}}if(r){let r=ic(e,td,t,n);return r===null?Gu:{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=ic(e,nd,t,n);return r===null?Gu:{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:G(e.source,[`root`])}),Gu};function id(){return{required:!0,json:{type:`object`,propertyNames:{pattern:Oc.source},additionalProperties:{$ref:Wu}},parse:(e,t,n,r)=>{let i=r[n];if(!nc(i))return e.issues.push({path:`${t}.${n}`,message:`"rows" must be an object of row name → layout node, got ${rc(i)}`,line:G(e.source,[...t.split(`.`),n])}),{};let a={};for(let[r,o]of Object.entries(i)){if(!Oc.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:G(e.source,[...t.split(`.`),n,r])});continue}a[r]=rd(e,`${t}.${n}.${r}`,o)}return a}}}const ad={noun:`root key`,fields:{rows:id(),when:mc(),distribution:Zu()}};function od(e,t,n){return nc(n)&&`rows`in n?ic(e,ad,t,n)??{rows:{}}:rd(e,t,n)}function sd(){return{required:!0,json:{type:`string`,pattern:Oc.source},parse:(e,t,n,r)=>{let i=r[n];if(typeof i!=`string`||!Oc.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 "${Uc}", got ${K(i)}`,line:G(e.source,[`root`])});return}return i}}}function cd(){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 ${K(i)}`,line:G(e.source,[`root`])});return}return i}}}}function ld(){return{required:!0,json:{type:`string`,pattern:`^[^\\n\\r]*$`},parse:(e,t,n,r)=>{let i=Zs(e,t,r,n);if(i!==null){if(/[\n\r]/.test(i)){e.issues.push({path:`${t}.${n}`,message:`${t}.${n}: group label must not contain newlines`,line:G(e.source,[...t.split(`.`),n])});return}return i}}}}const ud={noun:`layout-node key`,fields:{kind:Ku(`group`),name:sd(),label:ld(),open:hc(),direction:Sc(Ts),key:cd(),bg:mc(),fg:mc(),when:mc(),distribution:Zu(),children:Yu(fc(()=>rd))}};function dd(e){return e.key??`groups.`+e.name}function fd(e){let t=pu+e.name;return Jc(t,{variable:t,key:dd(e),member:e.name},{kind:`container`,direction:e.direction??`vertical`,children:e.children,...e.distribution!==void 0&&{distribution:e.distribution}},`drop`,e.when)}function pd(e,t,n){e.issues.push({path:t,message:n,line:G(e.source,[`root`])})}function md(e,t){bu(e,t,pu,`group nodes`);let n=e.groups;if(n.length===0)return;let r=new Set;for(let t of n)r.has(t.name)&&pd(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}.`)&&dd(t)===dd(r)&&pd(e,t.path,`group "${t.name}" shares key "${dd(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=dd(t);if(i.has(n)||i.set(n,Uc),t.open===!0){let r=i.get(n);r!==`closed`&&pd(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=pu+e.name,r=dd(e),c=n.filter(t=>t!==e&&e.path.startsWith(t.path+`.`)).length,l=` `.repeat(c);a[t]=Qc(r,i.get(r)),o[t]=$c(r,e.name),s[t]={template:Zc(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 hd=class extends Error{name=`TemplateError`;kind=`EvalError`;pos;source;constructor(e,t,n={}){super(e,{cause:n.cause}),this.pos=t,this.source=n.source}get sourceSnippet(){return this.source?wd(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}},gd=class extends hd{name=`ParseError`;kind=`ParseError`;expected;found;constructor(e,t,n={}){super(e,t,n),this.expected=n.expected,this.found=n.found}},_d=class extends hd{name=`EvalError`;kind=`EvalError`},vd=class extends _d{name=`FuncNotFoundError`;kind=`FuncNotFoundError`;funcName;suggestions;constructor(e,t,n={}){let r=Td(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}},yd=class extends _d{name=`ArgCountError`;kind=`ArgCountError`;funcName;accepted;got;constructor(e,t,n,r,i={}){let a=t.minimum===t.maximum?`${t.minimum}`:`at least ${t.minimum}`;super(`wrong number of args for ${e}: want ${a} got ${n}`,r,i),this.funcName=e,this.accepted=t,this.got=n}},bd=class extends _d{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}},xd=class extends bd{constructor(e,t,n,r,i={}){super(e,t,`integer`,String(n),r,i),this.message=Number.isInteger(Number(n))?`integer out of range: ${String(n)}`:`expected integer; found ${String(n)}`}},Sd=class extends _d{name=`MissingFieldError`;kind=`MissingFieldError`;path;constructor(e,t,n={}){super(`field "${e.join(`.`)}" not found on receiver`,t,n),this.path=e}},Cd=class extends _d{name=`FailError`;kind=`FailError`;constructor(e,t={line:0,column:0,offset:0},n={}){super(e,t,n)}};function wd(e,t){let n=e.split(`
42
+ New: { h: ["seg1", "seg2"] }`,line:W(e.source,[`root`])}),Gu;if(n.kind===`group`){let r=ac(e,ud,t,n);return r===null?Gu:(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}),fd(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`])}),Gu}if(a){let r=ac(e,ed,t,n);return r===null?Gu:{kind:`segment`,name:r.seg,...r.when!==void 0&&{when:r.when},...r.id!==void 0&&{id:r.id},...r.settings!==void 0&&{settings:r.settings}}}if(r){let r=ac(e,td,t,n);return r===null?Gu:{kind:`container`,direction:`horizontal`,children:r.h,...r.when!==void 0&&{when:r.when},...r.distribution!==void 0&&{distribution:r.distribution}}}if(i){let r=ac(e,nd,t,n);return r===null?Gu:{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`])}),Gu};function id(){return{required:!0,json:{type:`object`,propertyNames:{pattern:kc.source},additionalProperties:{$ref:Wu}},parse:(e,t,n,r)=>{let i=r[n];if(!rc(i))return e.issues.push({path:`${t}.${n}`,message:`"rows" must be an object of row name → layout node, got ${ic(i)}`,line:W(e.source,[...t.split(`.`),n])}),{};let a={};for(let[r,o]of Object.entries(i)){if(!kc.test(r)){e.issues.push({path:`${t}.${n}.${r}`,message:`row name "${r}" must be an identifier (letters, digits, _; not starting with a digit) — it names the row in the config file and merges by name over the bundled default's rows`,line:W(e.source,[...t.split(`.`),n,r])});continue}a[r]=rd(e,`${t}.${n}.${r}`,o)}return a}}}const ad={noun:`root key`,fields:{rows:id(),when:hc(),distribution:Zu()}};function od(e,t,n){return rc(n)&&`rows`in n?ac(e,ad,t,n)??{rows:{}}:rd(e,t,n)}function sd(){return{required:!0,json:{type:`string`,pattern:kc.source},parse:(e,t,n,r)=>{let i=r[n];if(typeof i!=`string`||!kc.test(i)||i===`closed`){e.issues.push({path:`${t}.${n}`,message:`a group "name" must be an identifier (letters, digits, _; not starting with a digit) and not the reserved "${Wc}", got ${G(i)}`,line:W(e.source,[`root`])});return}return i}}}function cd(){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 ld(){return{required:!0,json:{type:`string`,pattern:`^[^\\n\\r]*$`},parse:(e,t,n,r)=>{let i=Qs(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 ud={noun:`layout-node key`,fields:{kind:Ku(`group`),name:sd(),label:ld(),open:gc(),direction:Cc(Es),key:cd(),bg:hc(),fg:hc(),when:hc(),distribution:Zu(),children:Yu(pc(()=>rd))}};function dd(e){return e.key??`groups.`+e.name}function fd(e){let t=mu+e.name;return Yc(t,{variable:t,key:dd(e),member:e.name},{kind:`container`,direction:e.direction??`vertical`,children:e.children,...e.distribution!==void 0&&{distribution:e.distribution}},`drop`,e.when)}function pd(e,t,n){e.issues.push({path:t,message:n,line:W(e.source,[`root`])})}function md(e,t){bu(e,t,mu,`group nodes`);let n=e.groups;if(n.length===0)return;let r=new Set;for(let t of n)r.has(t.name)&&pd(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}.`)&&dd(t)===dd(r)&&pd(e,t.path,`group "${t.name}" shares key "${dd(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=dd(t);if(i.has(n)||i.set(n,Wc),t.open===!0){let r=i.get(n);r!==`closed`&&pd(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=mu+e.name,r=dd(e),c=n.filter(t=>t!==e&&e.path.startsWith(t.path+`.`)).length,l=` `.repeat(c);a[t]=$c(r,i.get(r)),o[t]=el(r,e.name),s[t]={template:Qc(t,`${l}${e.label} ▸`,`${l}${e.label} ▾`),...e.bg!==void 0&&{bg:e.bg},...e.fg!==void 0&&{fg:e.fg}}}t.variables={...t.variables??{},...a},t.actions={...t.actions??{},...o},t.segments={...t.segments??{},...s}}var hd=class extends Error{name=`TemplateError`;kind=`EvalError`;pos;source;constructor(e,t,n={}){super(e,{cause:n.cause}),this.pos=t,this.source=n.source}get sourceSnippet(){return this.source?wd(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}},gd=class extends hd{name=`ParseError`;kind=`ParseError`;expected;found;constructor(e,t,n={}){super(e,t,n),this.expected=n.expected,this.found=n.found}},_d=class extends hd{name=`EvalError`;kind=`EvalError`},vd=class extends _d{name=`FuncNotFoundError`;kind=`FuncNotFoundError`;funcName;suggestions;constructor(e,t,n={}){let r=Td(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}},yd=class extends _d{name=`ArgCountError`;kind=`ArgCountError`;funcName;accepted;got;constructor(e,t,n,r,i={}){let a=t.minimum===t.maximum?`${t.minimum}`:`at least ${t.minimum}`;super(`wrong number of args for ${e}: want ${a} got ${n}`,r,i),this.funcName=e,this.accepted=t,this.got=n}},bd=class extends _d{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}},xd=class extends bd{constructor(e,t,n,r,i={}){super(e,t,`integer`,String(n),r,i),this.message=Number.isInteger(Number(n))?`integer out of range: ${String(n)}`:`expected integer; found ${String(n)}`}},Sd=class extends _d{name=`MissingFieldError`;kind=`MissingFieldError`;path;constructor(e,t,n={}){super(`field "${e.join(`.`)}" not found on receiver`,t,n),this.path=e}},Cd=class extends _d{name=`FailError`;kind=`FailError`;constructor(e,t={line:0,column:0,offset:0},n={}){super(e,t,n)}};function wd(e,t){let n=e.split(`
43
43
  `),r=t.line-1,i=[];if(r-1>=0&&r-1<n.length&&i.push({num:r,text:n[r-1]??``}),r>=0&&r<n.length&&i.push({num:r+1,text:n[r]??``}),r+1<n.length&&i.push({num:r+2,text:n[r+1]??``}),i.length===0)return``;let a=String(i[i.length-1]?.num??1).length,o=[];for(let e of i)if(o.push(` ${String(e.num).padStart(a,` `)} | ${e.text}`),e.num===t.line){let e=` ${` `.repeat(a)} | `,n=` `.repeat(Math.max(0,t.column-1));o.push(`${e}${n}^`)}return o.join(`
44
44
  `)}function Td(e,t){if(t.length===0)return[];let n=t.map(t=>({name:t,dist:Ed(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 Ed(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 Dd(e){throw Error(`unhandled node kind: ${JSON.stringify(e)}`)}const Od=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`]]),kd={left:`{{`,right:`}}`};var Ad=class{src;leftDelim;rightDelim;offset=0;line=1;column=1;mode=`text`;pending;constructor(e,t=kd){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 gd(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&&jd(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);jd(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);jd(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(;jd(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`;jd(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&&(Nd(e)||Md(e)&&Nd(this.src[this.offset+1]??``)||e===`.`&&Nd(this.src[this.offset+1]??``)))return this.readNumber(t);if(e===`.`)return this.readDotOrField(t);if(e!==void 0&&Rd(e))return this.readIdentifier(t);throw this.err(`unexpected character ${JSON.stringify(e)}`,t,{found:e??`end of input`})}readQuotedString(e){let t=this.offset;for(this.advanceBy(1);this.offset<this.src.length;){let n=this.src[this.offset];if(n===`\\`){this.advanceBy(1),this.offset<this.src.length&&this.advanceBy(1);continue}if(n===`
45
45
  `)throw this.err(`newline in interpreted string`,e,{found:`\\n`});if(n===`"`)return this.advanceBy(1),this.makeToken(`String`,this.src.slice(t,this.offset),e);this.advanceBy(1)}throw this.err(`unterminated string literal`,e,{expected:`"`,found:`end of input`})}readRawString(e){let t=this.offset;for(this.advanceBy(1);this.offset<this.src.length;){if(this.src[this.offset]==="`")return this.advanceBy(1),this.makeToken(`String`,this.src.slice(t,this.offset),e);this.advanceBy(1)}throw this.err(`unterminated raw string literal`,e,{expected:"`",found:`end of input`})}readChar(e){let t=this.offset;for(this.advanceBy(1);this.offset<this.src.length;){let n=this.src[this.offset];if(n===`\\`){this.advanceBy(1),this.offset<this.src.length&&this.advanceBy(1);continue}if(n===`
@@ -51,19 +51,19 @@ import{createRequire as e}from"node:module";import t from"node:process";import{j
51
51
  `).map(e=>n+e).join(`
52
52
  `)}function Ag(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 jg(e,t){let n=[];for(let e of t){if(typeof e==`object`&&e)throw yh(`join`,2,`list of strings/primitives`,`list element of type ${Mg(e)}`);n.push(String(e))}return n.join(e)}function Mg(e){return Array.isArray(e)?`array`:e instanceof Map?`Map`:e instanceof Set?`Set`:`object`}function Ng(e){return Sg(e,`-`)}function Pg(e){return e.toLowerCase()}function Fg(e,t){return`\n${kg(e,t)}`}function Ig(e){return e.replace(/\s+/g,``)}function Lg(e,t,n){return n===1?e:t}function Rg(...e){return e.map(e=>`"${e}"`).join(` `)}function zg(e){return e.replace(/[\\.+*?()|[\]{}^$]/g,`\\$&`)}function Bg(e,t){return t.repeat(Math.max(0,e))}function Vg(e,t,n){return sg(e,n).join(t)}function Hg(e){return Sg(e,`_`)}function Ug(e,t){let n=sg(e,t),r={};for(let e=0;e<n.length;e++)r[`_${e}`]=n[e];return r}function Wg(e,t){return sg(e,t)}function Gg(e,t,n){let r=Kg(n,e,t),i={};for(let e=0;e<r.length;e++)i[`_${e}`]=r[e]??``;return i}function Kg(e,t,n){if(n===0)return[];let r=sg(t,e);if(n<0||r.length<=n)return r;let i=r.slice(0,n-1),a=r.slice(n-1).join(t);return[...i,a]}function qg(...e){return e.map(e=>`'${e}'`).join(` `)}function Jg(e,t,n){let r=og(n),i=t<0||t>r.length?r.length:t,a=Math.min(Math.max(0,e),i);return r.slice(a,i).join(``)}function Yg(e){let t=``;for(let n of e)Xg(n)?t+=n.toLowerCase():Zg(n)?t+=n.toUpperCase():t+=n;return t}function Xg(e){return e!==e.toLowerCase()&&e===e.toUpperCase()}function Zg(e){return e!==e.toUpperCase()&&e===e.toLowerCase()}function Qg(e){return e.replace(/\b([a-zA-Z])/g,e=>e.toUpperCase())}function $g(e){return e.trim()}function e_(e,t){if(e.length===0)return t;let n=new Set(og(e)),r=og(t),i=0;for(;i<r.length&&n.has(r[i]);)i+=1;let a=r.length;for(;a>i&&n.has(r[a-1]);)--a;return r.slice(i,a).join(``)}function t_(e,t){return t.startsWith(e)?t.slice(e.length):t}function n_(e,t){return t.endsWith(e)?t.slice(0,t.length-e.length):t}function r_(e,t){let n=og(t);if(e<0){let r=-e;return r>=n.length?t:n.slice(n.length-r).join(``)}return e>=n.length?t:n.slice(0,e).join(``)}function i_(e){return e.replace(/\b([A-Z])/g,e=>e.toLowerCase())}function a_(e){return e.toUpperCase()}function o_(e,t){return s_(e,`
53
53
  `,t)}function s_(e,t,n){if(e<=0)return n;let r=[];for(let t of n.split(`
54
- `)){let n=``;for(let i of t.split(/\s+/))i.length!==0&&(n.length===0?n=i:n.length+1+i.length<=e?n+=` ${i}`:(r.push(n),n=i));n.length>0&&r.push(n)}return r.join(t)}function c_(e,t,n){return s_(e,t,n)}function l_(){return{abbrev:{fn:(e,t)=>cg(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},abbrevboth:{fn:(e,t,n)=>lg(e,t,n),argTypes:[`int`,`int`,`string`],arity:{kind:`exact`}},camelcase:{fn:e=>wg(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},cat:{fn:(...e)=>Tg(...e),argTypes:[`string`],arity:{kind:`variadic`}},contains:{fn:(e,t)=>Eg(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},hasPrefix:{fn:(e,t)=>Dg(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},hasSuffix:{fn:(e,t)=>Og(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},indent:{fn:(e,t)=>kg(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},initials:{fn:e=>Ag(e),argTypes:[`string`],arity:{kind:`exact`}},join:{fn:(e,t)=>jg(e,t),argTypes:[`string`,`list`],arity:{kind:`exact`}},kebabcase:{fn:e=>Ng(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},lower:{fn:e=>Pg(e),argTypes:[`string`],arity:{kind:`exact`}},nindent:{fn:(e,t)=>Fg(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},nospace:{fn:e=>Ig(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},plural:{fn:(e,t,n)=>Lg(e,t,n),argTypes:[`string`,`string`,`int`],arity:{kind:`exact`},returnType:`string`},quote:{fn:(...e)=>Rg(...e),argTypes:[`string`],arity:{kind:`variadic`}},regexQuoteMeta:{fn:e=>zg(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},repeat:{fn:(e,t)=>Bg(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},replace:{fn:(e,t,n)=>Vg(e,t,n),argTypes:[`string`,`string`,`string`],arity:{kind:`exact`}},snakecase:{fn:e=>Hg(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},split:{fn:(e,t)=>Ug(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},splitList:{fn:(e,t)=>Wg(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},splitn:{fn:(e,t,n)=>Gg(e,t,n),argTypes:[`string`,`int`,`string`],arity:{kind:`exact`},returnType:`dict`},squote:{fn:(...e)=>qg(...e),argTypes:[`string`],arity:{kind:`variadic`}},substr:{fn:(e,t,n)=>Jg(e,t,n),argTypes:[`int`,`int`,`string`],arity:{kind:`exact`}},swapcase:{fn:e=>Yg(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},title:{fn:e=>Qg(e),argTypes:[`string`],arity:{kind:`exact`}},trim:{fn:e=>$g(e),argTypes:[`string`],arity:{kind:`exact`}},trimAll:{fn:(e,t)=>e_(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},trimPrefix:{fn:(e,t)=>t_(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},trimSuffix:{fn:(e,t)=>n_(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},trunc:{fn:(e,t)=>r_(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},untitle:{fn:e=>i_(e),argTypes:[`string`],arity:{kind:`exact`}},upper:{fn:e=>a_(e),argTypes:[`string`],arity:{kind:`exact`}},wrap:{fn:(e,t)=>o_(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},wrapWith:{fn:(e,t,n)=>c_(e,t,n),argTypes:[`int`,`string`,`string`],arity:{kind:`exact`}}}}function u_(e){return e}function d_(e,t,n){return n===void 0?mu+fu(e)+`.`+fu(t):f_(n)}function f_(e){return mu+fu(e)}function p_(e,t){return e+`.`+t}function m_(e){return e+`.page`}const h_=[`closeOnPick`,`paged`,`key`,`distribution`],g_=e=>h_.includes(e),__=`"closeOnPick" (bool, default false), "paged" (bool, default true), "key" (string, accordion grouping), "distribution" (one of ${aa.map(e=>`"${e}"`).join(`, `)}; default "van-der-corput")`;function v_(e){for(let t of Object.keys(e))if(!g_(t))throw Error(`unknown {{ menu }} option "${t}" — the options dict takes ${__}`);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&&!oa(r))throw Error(`{{ menu }} option "distribution" must be one of: ${aa.join(`, `)}; got ${JSON.stringify(r)}`);return{closeOnPick:t(`closeOnPick`,!1),paged:t(`paged`,!0),key:n,distribution:ca(r)}}const y_=`default`,b_={};function x_(e){return[...new Set([y_,...Object.keys(e)])]}function S_(e,t,n){return Xa(void 0,e,t,y_,n)}function C_(e,t){let n={[y_]:b_,...e}[t];if(n===void 0)throw Error(`Preset "${t}" is not declared in this config — effectivePresetName collapses unknown names to "${y_}", which always resolves; a miss here means a raw name reached this function without going through that resolution`);return n}function w_(e,t){let n=C_(e.presets,t).root??Ac;return{node:Pc(Lc(n,e.root)),path:Rc(n)?`presets.${t}.root`:`root`}}function T_(e,t){return{...e.globals,...C_(e.presets,t).globals}}const E_=`menu`,D_=`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`,O_=e=>e.kind===`call`&&e.name===`dict`,k_=e=>e.kind===`literal`&&typeof e.value!=`object`,A_=e=>Gc(``,e,2)===void 0;function j_(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&&O_(i)?i:void 0,o=a===void 0?r:r.slice(0,-1);if(o.some(O_))return t(`whose options (dict …) is not its last argument — ${D_}`);if(i!==void 0&&a===void 0&&!k_(i)&&A_(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=Gc(`whose trigger`,o.length,2);if(s!==void 0)return t(`${s} — ${D_}`);let c=a===void 0?{}:$m(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=v_(c)}catch(e){return t(`with invalid options — ${e.message}`)}let u=l.key;if(u!==void 0){let e=yu(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 "${f_(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 M_(e){let t=cp({fromString:e=>e});try{return t.parse(e).referencedCalls().filter(e=>e.name===E_).map(j_)}catch{return`parse-failed`}}function N_(e){let t=cp({fromString:e=>e});try{return t.parse(e).referencedFunctions().has(E_)}catch{return!1}}function P_(e,t,n){e.issues.push({path:t,message:n,line:G(e.source,[`root`])})}function F_(e,t){bu(e,t,mu,`{{ menu }} helpers`);for(let[n,r]of Object.entries(t.helpers??{}))N_(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:G(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`&&N_(i)&&P_(e,`segments.${t}.${n}`,`segment "${t}" uses {{ menu }} in its "${n}" — a menu is only valid in a segment's "template" (its placement is published only there; "${n}" needs a ${n===`when`?`predicate`:`color`}). Move the {{ menu }} into the template.`)}if(t.root!==void 0)for(let n of js(Fc(t.root)))typeof n.when==`string`&&N_(n.when)&&P_(e,`root`,`a layout node's "when" predicate uses {{ menu }} — a menu is only valid in a segment's "template", not a node predicate. Move it into a segment.`);for(let[t,{template:r}]of Object.entries(n)){if(r===void 0||!N_(r))continue;let n=M_(r);if(n!==`parse-failed`)for(let r of n){let n=r.kind===`issue`?r.message:I_(r.apply);n!==void 0&&P_(e,`segments.${t}`,`segment "${t}" has a {{ menu }} ${n}.`)}}}function I_(e){if(e===``)return`with an empty apply-action name — an empty member aliases the absent-state sentinel ("") so the menu would render open before any click. Name the apply action`;if(u_(e)===`closed`)return`whose apply action is named "${Uc}", which collides with the menu's closed-state sentinel and leaves it unopenable. Rename the action`}function L_(e,t){let n={},r={},i=new Map,a=new Set,o=(e,n)=>{let r=`segments.${e}`;a.has(`${r}\0${n}`)||(a.add(`${r}\0${n}`),t.push({path:r,message:n}))};for(let t of x_(e.presets)){let a=new Map,s=new Map;for(let c of js(w_(e,t).node)){if(c.kind!==`segment`)continue;let t=e.segments[c.name];if(t===void 0)continue;i.has(c.name)||i.set(c.name,M_(t.template));let l=i.get(c.name);if(l===`parse-failed`)continue;let u=Ds(c);for(let[e,t]of l.entries()){if(t.kind===`issue`||I_(t.apply)!==void 0)continue;let{apply:i,options:l}=t,d=u_(i),f=d_(u,i,l.key),p=m_(f),m=l.key===void 0?`ind ${u} ${i}`:`key ${l.key}`,h=[f,p].find(e=>{let t=a.get(e);return t!==void 0&&t!==m});if(h!==void 0){o(c.name,`two {{ menu }} disclosures normalize to the same state key ("${h}") but were declared differently — distinct names that differ only by non-alphanumeric characters (e.g. "a-b" vs "a_b") collapse to one key and would silently share open-state. Rename so they don't collide.`);continue}a.set(f,m),a.set(p,m);let g=p_(f,d),_=`${c.name}\0${e}`,v=s.get(g);if(v!==void 0&&v!==_){o(c.name,`two {{ menu }} disclosures resolve to the same identity ("${g}") — ${l.key===void 0?`a segment cannot contain two menus over the same apply action "${i}"`:`menus sharing key "${l.key}" must have distinct apply actions`}.`);continue}s.set(g,_),r[g]=$c(f,d),n[f]=Qc(f,Uc),n[p]={kind:`state`,key:p,default:`0`},r[p]={set:p,int:!0}}}}return{...e,variables:{...e.variables,...n},actions:{...e.actions,...r}}}const R_=cp({fromString:e=>e}),z_=`edit.mode`,B_=`edit.toggle`,V_=`arrange`,H_=`${hu}draft.`;function U_(e,t){return`configure:${e}:${t}`}const W_={variable:z_,key:z_,member:V_},G_=Yc(W_);function K_(e){try{return R_.parse(e).referencedCalls().some(e=>e.name===`action`&&e.args[0]===`edit.toggle`)}catch{return!1}}function q_(e){if(Object.values(e.actions??{}).some(e=>`do`in e&&e.do.includes(`edit.toggle`)))return!0;for(let t of Object.values(e.segments??{}))for(let e of[t.template,t.bg,t.fg])if(typeof e==`string`&&K_(e))return!0;return!1}function J_(e,t){if(bu(e,t,hu,`edit mode`),!q_(t))return;let n={[z_]:Qc(z_,Uc)},r={[B_]:$c(z_,V_)};t.variables={...t.variables??{},...n},t.actions={...t.actions??{},...r}}const Y_=/"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|`[^`]*`/g;function*X_(e){let t=e.indexOf(`{{`);for(;t!==-1;){let n=``,r=t+2;for(;r<e.length&&!e.startsWith(`}}`,r);){if(e.startsWith(`/*`,r)){let t=e.indexOf(`*/`,r+2);r=t===-1?e.length:t+2;continue}let t=r,i=e[r];if(r+=1,i===`"`||i===`'`||i==="`"){for(;r<e.length&&e[r]!==i;)r+=e[r]===`\\`&&i!=="`"?2:1;r+=1}n+=e.slice(t,r)}if(r>=e.length)return;yield n,t=e.indexOf(`{{`,r+2)}}const Z_=`[A-Za-z_]\\w*(?:\\.[A-Za-z_]\\w*)*`,Q_=RegExp(`^(?:(\\$)(?:\\.(${Z_}))?|\\.(${Z_})?)(?=[\\s)]|$)`);function $_(e,t,n){let r=Q_.exec(e.trimStart());if(r===null)return null;let[i,a]=r[1]===void 0?[t,r[3]]:[n,r[2]];return i===null?null:a===void 0?i:`${i}${a}.`}const ev=/^(\w+)\b\s*([\s\S]*)$/;function*tv(e,t){let n=[t];for(let r of X_(e)){let e=r.replace(/^-(?=\s)/,``).trim(),[,i=``,a=``]=ev.exec(e)??[],o=n[n.length-1],s=n.length>1?n[n.length-2]:o;if(i===`end`){n.length>1&&n.pop();continue}if(i===`else`){yield{code:e,dot:s};let r=/^with\b([\s\S]*)$/.exec(a);n[n.length-1]=r===null?s:$_(r[1],s,t);continue}yield{code:e,dot:o},i===`if`&&n.push(o),i===`with`&&n.push($_(a,o,t)),(i===`range`||i===`define`||i===`block`)&&n.push(null)}}const nv=/(?<![.$])\btemplate\s+$/;function*rv(e,t,n){let r=0;for(let i of[...e.matchAll(Y_)]){let a=i.index+i[0].length;nv.test(e.slice(r,i.index))&&(yield{name:i[0].slice(1,-1),at:$_(e.slice(a),t,n)}),r=a}}function*iv(e,t){let n=new Set;function*r(e,i,a,o){for(let{code:s,dot:c}of[...tv(e,i)]){yield{code:s,dot:c,root:i,via:a};for(let e of[...rv(s,c,i)]){let i=Object.hasOwn(t,e.name)?t[e.name]:void 0,a=`${e.name}\0${e.at??`\0`}`;i===void 0||o.has(e.name)||n.has(a)||(n.add(a),yield*r(i,e.at,e.name,new Set([...o,e.name])))}}}yield*r(e,``,null,new Set)}const av=RegExp(`(?<![A-Za-z0-9_)$])(\\$?)\\.(${Z_})`,`g`);function*ov({code:e,dot:t,root:n}){let r=e.replace(Y_,``);for(let e of[...r.matchAll(av)]){let r=e[1]===`$`?n:t;r!==null&&(yield`${r}${e[2]}`)}}function sv(e,t){let n=new Map;for(let r of iv(e,t))for(let e of ov(r))n.has(e)||n.set(e,r.via);return n}const cv=/(?<![.$])\b(action|picker|menu|carousel)\s+$/,lv={action:1,picker:2,menu:1,carousel:1};function*uv(e){let t=0,n=0,r=`action`;for(let i of[...e.matchAll(Y_)]){let a=cv.exec(e.slice(t,i.index));a!==null&&(n=lv[a[1]],r=a[1]===`action`?`action`:`options`),n>0&&(yield{name:i[0].slice(1,-1),site:r},n--),t=i.index+i[0].length}}function dv(e,t){let n=new Map;for(let{code:r,via:i}of iv(e,t))for(let{name:e,site:t}of uv(r)){let r=`${e}\0${i??`\0`}`;n.has(r)||n.set(r,{name:e,site:t,via:i})}return[...n.values()]}function fv(e,t){if(t.names.has(e))return!0;let n=`${e}.`;for(let e of t.names)if(e.startsWith(n))return!0;for(let n of t.documents)if(e.startsWith(`${n}.`))return!0;return!1}function pv(e){let t=new Set,n=new Set,r=(e,r)=>{t.add(e),mv(r)&&n.add(e)};for(let[t,n]of Object.entries(e.variables))r(t,n);for(let[t,n]of Object.entries(e.segments))for(let[e,i]of Object.entries(n.vars??{}))r(`${t}.${e}`,i);return{names:t,documents:n,helpers:e.helpers}}function mv(e){return(e.kind===`shell`||e.kind===`file`)&&Is(e.parse)===`json`}var hv=me((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:tn}function r(){sn||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()===cn}function l(e){var t=e?.constructor;return!!t&&(t.name===`GeneratorFunction`||t.displayName===`GeneratorFunction`)}function u(e,t,n){rn(e,t,{enumerable:!1,writable:!0,configurable:!0,value:n})}function d(e,t,n){rn(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 an.hasOwnProperty.call(e,t)}function _(e,t){return!!(e&t)}function v(e,t,n){return n?e|=t:e&=~t,e}function y(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function b(e,t,n){if(re())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var i=new(e.bind.apply(e,r));return n&&w(i,n.prototype),i}function x(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,ie(r.key),r)}}function S(e,t,n){return t&&x(e.prototype,t),n&&x(e,n),Object.defineProperty(e,`prototype`,{writable:!1}),e}function C(e,t){var n=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if(typeof e==`string`)return y(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(e,t):void 0}}(e))||t&&e&&typeof e.length==`number`){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw TypeError(`Invalid attempt to iterate non-iterable instance.
54
+ `)){let n=``;for(let i of t.split(/\s+/))i.length!==0&&(n.length===0?n=i:n.length+1+i.length<=e?n+=` ${i}`:(r.push(n),n=i));n.length>0&&r.push(n)}return r.join(t)}function c_(e,t,n){return s_(e,t,n)}function l_(){return{abbrev:{fn:(e,t)=>cg(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},abbrevboth:{fn:(e,t,n)=>lg(e,t,n),argTypes:[`int`,`int`,`string`],arity:{kind:`exact`}},camelcase:{fn:e=>wg(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},cat:{fn:(...e)=>Tg(...e),argTypes:[`string`],arity:{kind:`variadic`}},contains:{fn:(e,t)=>Eg(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},hasPrefix:{fn:(e,t)=>Dg(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},hasSuffix:{fn:(e,t)=>Og(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},indent:{fn:(e,t)=>kg(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},initials:{fn:e=>Ag(e),argTypes:[`string`],arity:{kind:`exact`}},join:{fn:(e,t)=>jg(e,t),argTypes:[`string`,`list`],arity:{kind:`exact`}},kebabcase:{fn:e=>Ng(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},lower:{fn:e=>Pg(e),argTypes:[`string`],arity:{kind:`exact`}},nindent:{fn:(e,t)=>Fg(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},nospace:{fn:e=>Ig(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},plural:{fn:(e,t,n)=>Lg(e,t,n),argTypes:[`string`,`string`,`int`],arity:{kind:`exact`},returnType:`string`},quote:{fn:(...e)=>Rg(...e),argTypes:[`string`],arity:{kind:`variadic`}},regexQuoteMeta:{fn:e=>zg(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},repeat:{fn:(e,t)=>Bg(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},replace:{fn:(e,t,n)=>Vg(e,t,n),argTypes:[`string`,`string`,`string`],arity:{kind:`exact`}},snakecase:{fn:e=>Hg(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},split:{fn:(e,t)=>Ug(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},splitList:{fn:(e,t)=>Wg(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},splitn:{fn:(e,t,n)=>Gg(e,t,n),argTypes:[`string`,`int`,`string`],arity:{kind:`exact`},returnType:`dict`},squote:{fn:(...e)=>qg(...e),argTypes:[`string`],arity:{kind:`variadic`}},substr:{fn:(e,t,n)=>Jg(e,t,n),argTypes:[`int`,`int`,`string`],arity:{kind:`exact`}},swapcase:{fn:e=>Yg(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},title:{fn:e=>Qg(e),argTypes:[`string`],arity:{kind:`exact`}},trim:{fn:e=>$g(e),argTypes:[`string`],arity:{kind:`exact`}},trimAll:{fn:(e,t)=>e_(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},trimPrefix:{fn:(e,t)=>t_(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},trimSuffix:{fn:(e,t)=>n_(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},trunc:{fn:(e,t)=>r_(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},untitle:{fn:e=>i_(e),argTypes:[`string`],arity:{kind:`exact`}},upper:{fn:e=>a_(e),argTypes:[`string`],arity:{kind:`exact`}},wrap:{fn:(e,t)=>o_(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},wrapWith:{fn:(e,t,n)=>c_(e,t,n),argTypes:[`int`,`string`,`string`],arity:{kind:`exact`}}}}function u_(e){return e}function d_(e,t,n){return n===void 0?hu+pu(e)+`.`+pu(t):f_(n)}function f_(e){return hu+pu(e)}function p_(e,t){return e+`.`+t}function m_(e){return e+`.page`}const h_=[`closeOnPick`,`paged`,`key`,`distribution`],g_=e=>h_.includes(e),__=`"closeOnPick" (bool, default false), "paged" (bool, default true), "key" (string, accordion grouping), "distribution" (one of ${oa.map(e=>`"${e}"`).join(`, `)}; default "van-der-corput")`;function v_(e){for(let t of Object.keys(e))if(!g_(t))throw Error(`unknown {{ menu }} option "${t}" — the options dict takes ${__}`);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&&!sa(r))throw Error(`{{ menu }} option "distribution" must be one of: ${oa.join(`, `)}; got ${JSON.stringify(r)}`);return{closeOnPick:t(`closeOnPick`,!1),paged:t(`paged`,!0),key:n,distribution:la(r)}}const y_=`default`,b_={};function x_(e){return[...new Set([y_,...Object.keys(e)])]}function S_(e,t,n){return Za(void 0,e,t,y_,n)}function C_(e,t){let n={[y_]:b_,...e}[t];if(n===void 0)throw Error(`Preset "${t}" is not declared in this config — effectivePresetName collapses unknown names to "${y_}", which always resolves; a miss here means a raw name reached this function without going through that resolution`);return n}function w_(e,t){let n=C_(e.presets,t).root??jc;return{node:Fc(Rc(n,e.root)),path:zc(n)?`presets.${t}.root`:`root`}}function T_(e,t){return{...e.globals,...C_(e.presets,t).globals}}const E_=`menu`,D_=`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`,O_=e=>e.kind===`call`&&e.name===`dict`,k_=e=>e.kind===`literal`&&typeof e.value!=`object`,A_=e=>Kc(``,e,2)===void 0;function j_(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&&O_(i)?i:void 0,o=a===void 0?r:r.slice(0,-1);if(o.some(O_))return t(`whose options (dict …) is not its last argument — ${D_}`);if(i!==void 0&&a===void 0&&!k_(i)&&A_(o.length-1))return t(`whose last argument is neither a literal nor a literal (dict …) — the renderer tells a display from the options dict by the value it evaluates to, so this call could be read as ${o.length} displays or as ${o.length-1} plus options, and both are legal. Make the options explicit as a trailing (dict …) — {{ menu "${n.value}" (printf "…") (printf "…") (dict) }} binds dynamic displays unambiguously — or bind the trigger text as literals`);let s=Kc(`whose trigger`,o.length,2);if(s!==void 0)return t(`${s} — ${D_}`);let c=a===void 0?{}:$m(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=v_(c)}catch(e){return t(`with invalid options — ${e.message}`)}let u=l.key;if(u!==void 0){let e=yu(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 "${f_(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 M_(e){let t=cp({fromString:e=>e});try{return t.parse(e).referencedCalls().filter(e=>e.name===E_).map(j_)}catch{return`parse-failed`}}function N_(e){let t=cp({fromString:e=>e});try{return t.parse(e).referencedFunctions().has(E_)}catch{return!1}}function P_(e,t,n){e.issues.push({path:t,message:n,line:W(e.source,[`root`])})}function F_(e,t){bu(e,t,hu,`{{ menu }} helpers`);for(let[n,r]of Object.entries(t.helpers??{}))N_(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`&&N_(i)&&P_(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 Ms(Ic(t.root)))typeof n.when==`string`&&N_(n.when)&&P_(e,`root`,`a layout node's "when" predicate uses {{ menu }} — a menu is only valid in a segment's "template", not a node predicate. Move it into a segment.`);for(let[t,{template:r}]of Object.entries(n)){if(r===void 0||!N_(r))continue;let n=M_(r);if(n!==`parse-failed`)for(let r of n){let n=r.kind===`issue`?r.message:I_(r.apply);n!==void 0&&P_(e,`segments.${t}`,`segment "${t}" has a {{ menu }} ${n}.`)}}}function I_(e){if(e===``)return`with an empty apply-action name — an empty member aliases the absent-state sentinel ("") so the menu would render open before any click. Name the apply action`;if(u_(e)===`closed`)return`whose apply action is named "${Wc}", which collides with the menu's closed-state sentinel and leaves it unopenable. Rename the action`}function L_(e,t){let n={},r={},i=new Map,a=new Set,o=(e,n)=>{let r=`segments.${e}`;a.has(`${r}\0${n}`)||(a.add(`${r}\0${n}`),t.push({path:r,message:n}))};for(let t of x_(e.presets)){let a=new Map,s=new Map;for(let c of Ms(w_(e,t).node)){if(c.kind!==`segment`)continue;let t=e.segments[c.name];if(t===void 0)continue;i.has(c.name)||i.set(c.name,M_(t.template));let l=i.get(c.name);if(l===`parse-failed`)continue;let u=Os(c);for(let[e,t]of l.entries()){if(t.kind===`issue`||I_(t.apply)!==void 0)continue;let{apply:i,options:l}=t,d=u_(i),f=d_(u,i,l.key),p=m_(f),m=l.key===void 0?`ind ${u} ${i}`:`key ${l.key}`,h=[f,p].find(e=>{let t=a.get(e);return t!==void 0&&t!==m});if(h!==void 0){o(c.name,`two {{ menu }} disclosures normalize to the same state key ("${h}") but were declared differently — distinct names that differ only by non-alphanumeric characters (e.g. "a-b" vs "a_b") collapse to one key and would silently share open-state. Rename so they don't collide.`);continue}a.set(f,m),a.set(p,m);let g=p_(f,d),_=`${c.name}\0${e}`,v=s.get(g);if(v!==void 0&&v!==_){o(c.name,`two {{ menu }} disclosures resolve to the same identity ("${g}") — ${l.key===void 0?`a segment cannot contain two menus over the same apply action "${i}"`:`menus sharing key "${l.key}" must have distinct apply actions`}.`);continue}s.set(g,_),r[g]=el(f,d),n[f]=$c(f,Wc),n[p]={kind:`state`,key:p,default:`0`},r[p]={set:p,int:!0}}}}return{...e,variables:{...e.variables,...n},actions:{...e.actions,...r}}}const R_=cp({fromString:e=>e}),z_=`edit.mode`,B_=`edit.toggle`,V_=`arrange`,H_=`${gu}draft.`;function U_(e,t){return`configure:${e}:${t}`}const W_={variable:z_,key:z_,member:V_},G_=Xc(W_);function K_(e){try{return R_.parse(e).referencedCalls().some(e=>e.name===`action`&&e.args[0]===`edit.toggle`)}catch{return!1}}function q_(e){if(Object.values(e.actions??{}).some(e=>`do`in e&&e.do.includes(`edit.toggle`)))return!0;for(let t of Object.values(e.segments??{}))for(let e of[t.template,t.bg,t.fg])if(typeof e==`string`&&K_(e))return!0;return!1}function J_(e,t){if(bu(e,t,gu,`edit mode`),!q_(t))return;let n={[z_]:$c(z_,Wc)},r={[B_]:el(z_,V_)};t.variables={...t.variables??{},...n},t.actions={...t.actions??{},...r}}const Y_=/"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|`[^`]*`/g;function*X_(e){let t=e.indexOf(`{{`);for(;t!==-1;){let n=``,r=t+2;for(;r<e.length&&!e.startsWith(`}}`,r);){if(e.startsWith(`/*`,r)){let t=e.indexOf(`*/`,r+2);r=t===-1?e.length:t+2;continue}let t=r,i=e[r];if(r+=1,i===`"`||i===`'`||i==="`"){for(;r<e.length&&e[r]!==i;)r+=e[r]===`\\`&&i!=="`"?2:1;r+=1}n+=e.slice(t,r)}if(r>=e.length)return;yield n,t=e.indexOf(`{{`,r+2)}}const Z_=`[A-Za-z_]\\w*(?:\\.[A-Za-z_]\\w*)*`,Q_=RegExp(`^(?:(\\$)(?:\\.(${Z_}))?|\\.(${Z_})?)(?=[\\s)]|$)`);function $_(e,t,n){let r=Q_.exec(e.trimStart());if(r===null)return null;let[i,a]=r[1]===void 0?[t,r[3]]:[n,r[2]];return i===null?null:a===void 0?i:`${i}${a}.`}const ev=/^(\w+)\b\s*([\s\S]*)$/;function*tv(e,t){let n=[t];for(let r of X_(e)){let e=r.replace(/^-(?=\s)/,``).trim(),[,i=``,a=``]=ev.exec(e)??[],o=n[n.length-1],s=n.length>1?n[n.length-2]:o;if(i===`end`){n.length>1&&n.pop();continue}if(i===`else`){yield{code:e,dot:s};let r=/^with\b([\s\S]*)$/.exec(a);n[n.length-1]=r===null?s:$_(r[1],s,t);continue}yield{code:e,dot:o},i===`if`&&n.push(o),i===`with`&&n.push($_(a,o,t)),(i===`range`||i===`define`||i===`block`)&&n.push(null)}}const nv=/(?<![.$])\btemplate\s+$/;function*rv(e,t,n){let r=0;for(let i of[...e.matchAll(Y_)]){let a=i.index+i[0].length;nv.test(e.slice(r,i.index))&&(yield{name:i[0].slice(1,-1),at:$_(e.slice(a),t,n)}),r=a}}function*iv(e,t){let n=new Set;function*r(e,i,a,o){for(let{code:s,dot:c}of[...tv(e,i)]){yield{code:s,dot:c,root:i,via:a};for(let e of[...rv(s,c,i)]){let i=Object.hasOwn(t,e.name)?t[e.name]:void 0,a=`${e.name}\0${e.at??`\0`}`;i===void 0||o.has(e.name)||n.has(a)||(n.add(a),yield*r(i,e.at,e.name,new Set([...o,e.name])))}}}yield*r(e,``,null,new Set)}const av=RegExp(`(?<![A-Za-z0-9_)$])(\\$?)\\.(${Z_})`,`g`);function*ov({code:e,dot:t,root:n}){let r=e.replace(Y_,``);for(let e of[...r.matchAll(av)]){let r=e[1]===`$`?n:t;r!==null&&(yield`${r}${e[2]}`)}}function sv(e,t){let n=new Map;for(let r of iv(e,t))for(let e of ov(r))n.has(e)||n.set(e,r.via);return n}const cv=/(?<![.$])\b(action|picker|menu|carousel)\s+$/,lv={action:1,picker:2,menu:1,carousel:1};function*uv(e){let t=0,n=0,r=`action`;for(let i of[...e.matchAll(Y_)]){let a=cv.exec(e.slice(t,i.index));a!==null&&(n=lv[a[1]],r=a[1]===`action`?`action`:`options`),n>0&&(yield{name:i[0].slice(1,-1),site:r},n--),t=i.index+i[0].length}}function dv(e,t){let n=new Map;for(let{code:r,via:i}of iv(e,t))for(let{name:e,site:t}of uv(r)){let r=`${e}\0${i??`\0`}`;n.has(r)||n.set(r,{name:e,site:t,via:i})}return[...n.values()]}function fv(e,t){if(t.names.has(e))return!0;let n=`${e}.`;for(let e of t.names)if(e.startsWith(n))return!0;for(let n of t.documents)if(e.startsWith(`${n}.`))return!0;return!1}function pv(e){let t=new Set,n=new Set,r=(e,r)=>{t.add(e),mv(r)&&n.add(e)};for(let[t,n]of Object.entries(e.variables))r(t,n);for(let[t,n]of Object.entries(e.segments))for(let[e,i]of Object.entries(n.vars??{}))r(`${t}.${e}`,i);return{names:t,documents:n,helpers:e.helpers}}function mv(e){return(e.kind===`shell`||e.kind===`file`)&&Ls(e.parse)===`json`}var hv=me((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:tn}function r(){sn||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()===cn}function l(e){var t=e?.constructor;return!!t&&(t.name===`GeneratorFunction`||t.displayName===`GeneratorFunction`)}function u(e,t,n){rn(e,t,{enumerable:!1,writable:!0,configurable:!0,value:n})}function d(e,t,n){rn(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 an.hasOwnProperty.call(e,t)}function _(e,t){return!!(e&t)}function v(e,t,n){return n?e|=t:e&=~t,e}function y(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function b(e,t,n){if(re())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var i=new(e.bind.apply(e,r));return n&&w(i,n.prototype),i}function x(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,ie(r.key),r)}}function S(e,t,n){return t&&x(e.prototype,t),n&&x(e,n),Object.defineProperty(e,`prototype`,{writable:!1}),e}function C(e,t){var n=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if(typeof e==`string`)return y(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(e,t):void 0}}(e))||t&&e&&typeof e.length==`number`){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw TypeError(`Invalid attempt to iterate non-iterable instance.
55
55
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function ee(){return(ee=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(null,arguments)}function te(e){return(te=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function ne(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,w(e,t)}function re(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch{}return(re=function(){return!!e})()}function w(e,t){return(w=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function ie(e){var t=function(e){if(typeof e!=`object`||!e)return e;var t=e[Symbol.toPrimitive];if(t!==void 0){var n=t.call(e,`string`);if(typeof n!=`object`)return n;throw TypeError(`@@toPrimitive must return a primitive value.`)}return String(e)}(e);return typeof t==`symbol`?t:t+``}function T(e){var t=typeof Map==`function`?new Map:void 0;return(T=function(e){function n(){return b(e,arguments,te(this).constructor)}if(e===null||!function(e){try{return Function.toString.call(e).indexOf(`[native code]`)!==-1}catch{return typeof e==`function`}}(e))return e;if(typeof e!=`function`)throw TypeError(`Super expression must either be null or a function`);if(t!==void 0){if(t.has(e))return t.get(e);t.set(e,n)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),w(n,e)})(e)}function E(e){return Object.assign((function(t,n){if(oe(n))return e.t(t,n);ae(t,n,e)}),e)}function ae(e,t,n){g(e,pn)||u(e,pn,ee({},e[pn])),function(e){return e.i===`override`}(n)||(e[pn][t]=n)}function oe(e){return typeof e==`object`&&typeof e.kind==`string`}function D(e,t,n){t===void 0&&(t=ln),n===void 0&&(n=ln);var r=new mn(e);return t!==ln&&ut(r,t),n!==ln&&dt(r,n),r}function se(e,t,n){return bt(e)?e:Array.isArray(e)?Tn.array(e,{name:n}):c(e)?Tn.object(e,void 0,{name:n}):p(e)?Tn.map(e,{name:n}):m(e)?Tn.set(e,{name:n}):typeof e!=`function`||st(e)||_t(e)?e:l(e)?nr(e):Xn(n,e)}function ce(e){return e}function le(e,t){return{i:e,u:t,o:ue,s:de,t:fe}}function ue(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:st(n.value)?1:(rn(r,t,pe(e,this,t,n,!1)),2)}function de(e,t,n,r){var i=pe(e,this,t,n);return e.l(t,i,r)}function fe(e,n){var r,i=n.kind,a=n.name,o=n.addInitializer,s=this,c=function(e){var t;return Me(s.u?.name??a.toString(),e,(t=s.u?.autoAction)!=null&&t)};return i==`field`?function(e){var t,n=e;return st(n)||(n=c(n)),(t=s.u)!=null&&t.bound&&((n=n.bind(this)).isMobxAction=!0),n}:i==`method`?(st(e)||(e=c(e)),(r=this.u)!=null&&r.bound&&o((function(){var e=this[a].bind(this);e.isMobxAction=!0,this[a]=e})),e):void t(`Cannot apply '`+s.i+`' to '`+String(a)+`' (kind: `+i+`):
56
56
  '`+s.i+`' can only be used on properties with a function value.`)}function pe(e,t,n,r,i){var a,o,s;i===void 0&&(i=z.safeDescriptors);var c=r.value;return(a=t.u)!=null&&a.bound&&(c=c.bind(e.v??e.h)),{value:Me(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 me(e,t){return{i:e,u:t,o:he,s:ge,t:O}}function he(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)||!_t(e.h[t]))&&this.s(e,t,n,!1)===null?0:_t(n.value)?1:(rn(r,t,_e(e,0,0,n,!1,!1)),2)}function ge(e,t,n,r){var i=_e(e,0,0,n,this.u?.bound);return e.l(t,i,r)}function O(e,t){var n,r=t.name,i=t.addInitializer;return _t(e)||(e=nr(e)),(n=this.u)!=null&&n.bound&&i((function(){var e=this[r].bind(this);e.isMobXFlow=!0,this[r]=e})),e}function _e(e,t,n,r,i,a){a===void 0&&(a=z.safeDescriptors);var o=r.value;return _t(o)||(o=nr(o)),i&&((o=o.bind(e.v??e.h)).isMobXFlow=!0),{value:o,configurable:!a||e.p,enumerable:!1,writable:!a}}function ve(e,t){return{i:e,u:t,o:ye,s:be,t:xe}}function ye(e,t,n){return this.s(e,t,n,!1)===null?0:1}function be(e,t,n,r){return e.m(t,ee({},this.u,{get:n.get,set:n.set}),r)}function xe(e,t){var n=this,r=t.name;return(0,t.addInitializer)((function(){var t=Bt(this)[I],i=ee({},n.u,{get:e,context:this});i.name||=`ObservableObject.`+r.toString(),t.j.set(r,new Fn(i))})),function(){return this[I].O(r)}}function Se(e,t){return{i:e,u:t,o:Ce,s:we,t:Te}}function Ce(e,t,n){return this.s(e,t,n,!1)===null?0:1}function we(e,t,n,r){return e.g(t,n.value,this.u?.enhancer??se,r)}function Te(e,t){function n(e,t){var n=Bt(e)[I],i=new Nn(t,r.u?.enhancer??se,`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[I].O(a)},set:function(e){return o.has(this)||n(this,e),this[I].S(a,e)},init:function(e){return o.has(this)||n(this,e),e}}}function Ee(e){return{i:`true`,u:e,o:De,s:Oe,t:ke}}function De(e,t,n,r){var i,a,o;if(n.get)return On.o(e,t,n,r);if(n.set){var s=st(n.set)?n.set:Me(t.toString(),n.set);return r===e.h?e.l(t,{configurable:!z.safeDescriptors||e.p,set:s})===null?0:2:(rn(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?nr.bound:nr).o(e,t,n,r):((a=this.u)!=null&&a.autoBind?Xn.bound:Xn).o(e,t,n,r);var c=!1===this.u?.deep?Tn.ref:Tn;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 Oe(e,t,n,r){var i;return n.get?On.s(e,t,n,r):n.set?e.l(t,{configurable:!z.safeDescriptors||e.p,set:Me(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?Tn.ref:Tn).s(e,t,n,r))}function ke(){t(`'`+this.i+`' cannot be used as a decorator`)}function Ae(e){return e||yn}function k(e){return!0===e.deep?se:!1===e.deep?ce:(t=e.defaultDecorator)&&(n=(r=t.u)?.enhancer)!=null?n:se;var t,n,r}function je(e,t,n){return oe(t)?bn.t(e,t):o(t)?void ae(e,t,bn):bt(e)?e:c(e)?Tn.object(e,t,n):Array.isArray(e)?Tn.array(e,t):p(e)?Tn.map(e,t):m(e)?Tn.set(e,t):typeof e==`object`&&e?e:Tn.box(e,t)}function Me(e,t,n,r){function i(){return Ne(0,n,t,r||this,arguments)}return n===void 0&&(n=!1),i.isMobxAction=!0,i.toString=function(){return t.toString()},jn&&(Mn.value=e,rn(i,`name`,Mn)),i}function Ne(e,t,n,r,i){var a=Pe(0,t);try{return n.apply(r,i)}catch(e){throw a._=e,e}finally{Fe(a)}}function Pe(e,t){var n=z.trackingDerivation,r=!t||!n;Qe();var i=z.allowStateChanges;r&&(We(),i=Le(!0));var a={A:r,k:n,M:i,V:Ke(!0),R:!1,N:0,T:An++,C:kn};return kn=a.T,a}function Fe(e){kn!==e.T&&t(30),kn=e.C,e._!==void 0&&(z.suppressReactionErrors=!0),Re(e.M),qe(e.V),$e(),e.A&&Ge(e.k),z.suppressReactionErrors=!1}function Ie(e,t){var n=Le(e);try{return t()}finally{Re(n)}}function Le(e){var t=z.allowStateChanges;return z.allowStateChanges=e,t}function Re(e){z.allowStateChanges=e}function ze(e){return e instanceof Rn}function Be(e){switch(e.I){case R.L:return!1;case R.P:case R.K:return!0;case R.B:for(var t=Ke(!0),n=We(),r=e.D,i=r.length,a=0;a<i;a++){var o=r[a];if(Ln(o)){if(z.disableErrorBoundaries)o.get();else try{o.get()}catch{return Ge(n),qe(t),!0}if(e.I===R.K)return Ge(n),qe(t),!0}}return Je(e),Ge(n),qe(t),!1}}function Ve(e,t,n){var r=Ke(!0);Je(e),e.W=Array(e.q===0?100:e.D.length),e.G=0,e.q=++z.runId;var i,a=z.trackingDerivation;if(z.trackingDerivation=e,z.inBatch++,!0===z.disableErrorBoundaries)i=t.call(n);else try{i=t.call(n)}catch(e){i=new Rn(e)}return z.inBatch--,z.trackingDerivation=a,function(e){for(var t=e.D,n=e.D=e.W,r=R.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&&Xe(c,e),c.diffValue=0}for(;i--;){var l=n[i];l.diffValue===1&&(l.diffValue=0,Ye(l,e))}r!==R.L&&(e.I=r,e.H())}(e),qe(r),i}function He(e){var t=e.D;e.D=[];for(var n=t.length;n--;)Xe(t[n],e);e.I=R.P}function Ue(e){var t=We();try{return e()}finally{Ge(t)}}function We(){var e=z.trackingDerivation;return z.trackingDerivation=null,e}function Ge(e){z.trackingDerivation=e}function Ke(e){var t=z.allowStateReads;return z.allowStateReads=e,t}function qe(e){z.allowStateReads=e}function Je(e){if(e.I!==R.L){e.I=R.L;for(var t=e.D,n=t.length;n--;)t[n].U=R.L}}function Ye(e,t){e.F.add(t),e.U>t.I&&(e.U=t.I)}function Xe(e,t){e.F.delete(t),e.F.size===0&&Ze(e)}function Ze(e){!1===e.isPendingUnobservation&&(e.isPendingUnobservation=!0,z.pendingUnobservations.push(e))}function Qe(){z.inBatch++}function $e(){if(--z.inBatch==0){nt();for(var e=z.pendingUnobservations,t=0;t<e.length;t++){var n=e[t];n.isPendingUnobservation=!1,n.F.size===0&&(n.isBeingObserved&&(n.isBeingObserved=!1,n.onBUO()),n instanceof Fn&&n.X())}z.pendingUnobservations=[]}}function et(e){var t=z.trackingDerivation;return t===null?(e.F.size===0&&z.inBatch>0&&Ze(e),!1):(t.q!==e.$&&(e.$=t.q,t.W[t.G++]=e,!e.isBeingObserved&&z.trackingContext&&(e.isBeingObserved=!0,e.onBO())),e.isBeingObserved)}function tt(e){e.U!==R.K&&(e.U=R.K,e.F.forEach((function(e){e.I===R.L&&e.H(),e.I=R.K})))}function nt(){z.inBatch>0||z.isRunningReactions||Wn(rt)}function rt(){z.isRunningReactions=!0;for(var e=z.pendingReactions,t=0;e.length>0;){++t==100&&(console.error(`[mobx] cycle in reaction: `+e[0]),e.splice(0));for(var n=e.splice(0),r=0,i=n.length;r<i;r++)n[r].J()}z.isRunningReactions=!1}function it(){return console.warn(`[mobx.spy] Is a no-op in production builds`),function(){}}function at(e){return function(t,n){return a(t)?Me(t.name||`<unnamed action>`,t,e):a(n)?Me(t,n,e):oe(n)?(e?qn:B).t(t,n):o(n)?ae(t,n,e?qn:B):o(t)?E(le(e?`autoAction`:`action`,{name:t,autoAction:e})):void 0}}function ot(e){return Ne(0,!1,e,this,void 0)}function st(e){return a(e)&&!0===e.isMobxAction}function ct(e,t){function n(){e(i)}var r;t===void 0&&(t=F);var i,a=t?.name??`Autorun`;if(t.scheduler||t.delay){var o=lt(t),s=!1;i=new Un(a,(function(){s||(s=!0,o((function(){s=!1,i.isDisposed||i.track(n)})))}),t.onError,t.requiresObservable)}else i=new Un(a,(function(){this.track(n)}),t.onError,t.requiresObservable);return(r=t)!=null&&(r=r.signal)!=null&&r.aborted||i.Y(),i.Z(t?.signal)}function lt(e){return e.scheduler?e.scheduler:e.delay?function(t){return setTimeout(t,e.delay)}:Zn}function ut(e,t,n){return ft(`onBO`,e,t,n)}function dt(e,t,n){return ft(`onBUO`,e,t,n)}function ft(e,t,n,r){var i=typeof r==`function`?Jt(t,n):Jt(t),o=a(r)?r:n,s=e+`L`;return i[s]?i[s].add(o):i[s]=new Set([o]),function(){var e=i[s];e&&(e.delete(o),e.size===0&&delete i[s])}}function pt(e,t,n,r){var i=fn(t);return Zt((function(){var t=Bt(e,r)[I];dn(i).forEach((function(e){t.s(e,i[e],!n||!(e in n)||n[e])}))})),e}function mt(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(mt)),n}function ht(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(ht)),t}function gt(e){a(e.cancel)&&e.cancel()}function _t(e){return!0===e?.isMobXFlow}function vt(e,t){return t===void 0?Ln(e):!1===Ht(e)||!e[I].j.has(t)?!1:Ln(Jt(e,t))}function yt(e,t){return!!e&&(t===void 0?Ht(e)||!!e[I]||hn(e)||Gn(e)||Ln(e):!!Ht(e)&&e[I].j.has(t))}function bt(e){return yt(e)}function xt(e){return Ht(e)?e[I].nt():hr(e)||vr(e)?Array.from(e.keys()):Lt(e)?e.map((function(e,t){return t})):void t(5)}function St(e,n){return Ht(e)?e[I].it(n):hr(e)||vr(e)?e.has(n):Lt(e)?n>=0&&n<e.length:void t(10)}function Ct(e){if(Ht(e))return e[I].rt();t(38)}function wt(e,t,n){return e.set(t,n),n}function Tt(e,t){t===void 0&&(t=void 0),Qe();try{return e.apply(t)}finally{$e()}}function Et(e,t,n){var r;if(typeof n.timeout==`number`){var i=Error(`WHEN_TIMEOUT`);r=setTimeout((function(){if(!o[I].isDisposed){if(o(),!n.onError)throw i;n.onError(i)}}),n.timeout)}n.name=`When`;var a=Me(`When-effect`,t),o=ct((function(t){Ie(!1,e)&&(t.dispose(),r&&clearTimeout(r),a())}),n);return o}function Dt(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=Et(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 Ot(e){return e[I]}function kt(e){return e.et!==void 0&&e.et.length>0}function At(e,t){var n=e.et||=[];return n.push(t),i((function(){var e=n.indexOf(t);e!==-1&&n.splice(e,1)}))}function jt(e,n){var r=We();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{Ge(r)}}function Mt(e){return e.ut!==void 0&&e.ut.length>0}function Nt(e,t){var n=e.ut||=[];return n.push(t),i((function(){var e=n.indexOf(t);e!==-1&&n.splice(e,1)}))}function Pt(e,t){var n=We(),r=e.ut;if(r){for(var i=0,a=(r=r.slice()).length;i<a;i++)r[i](t);Ge(n)}}function Ft(e,t,n,i){return n===void 0&&(n=`ObservableArray`),i===void 0&&(i=!1),r(),Zt((function(){var r=new sr(n,t,i,!1);d(r.j,I,r);var a=new Proxy(r.j,or);return r.v=a,e&&e.length&&r.ot(0,0,e),a}))}function A(e,t){typeof Array.prototype[e]==`function`&&(cr[e]=t(e))}function It(e){return function(){var t=this[I];t.st.reportObserved();var n=t.ft(t.j);return n[e].apply(n,arguments)}}function j(e){return function(t,n){var r=this,i=this[I];return i.st.reportObserved(),i.ft(i.j)[e]((function(e,i){return t.call(n,e,i,r)}))}}function M(e){return function(){var t=this,n=this[I];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 Lt(e){return s(e)&&dr(e[I])}function Rt(e){return e[Symbol.toStringTag]=`MapIterator`,N(e)}function zt(e){return e[Symbol.toStringTag]=`SetIterator`,N(e)}function Bt(e,t){if(g(e,I))return e;var n=t?.name??`ObservableObject`;return u(e,I,new br(e,new Map,String(n),function(e){return e?e.defaultDecorator??Ee(e):void 0}(t))),e}function Vt(e){return yr[e]||(yr[e]={get:function(){return this[I].O(e)},set:function(t){return this[I].S(e,t)}})}function Ht(e){return!!s(e)&&xr(e[I])}function Ut(e,t,n){var r;(r=e.h[pn])==null||delete r[n]}function Wt(e){return{enumerable:!1,configurable:!0,get:function(){return this[I].ct(e)},set:function(t){this[I].ht(e,t)}}}function Gt(e){rn(Er.prototype,``+e,Wt(e))}function Kt(e){if(e>wr){for(var t=wr;t<e+100;t++)Gt(t);wr=e}}function qt(e,t,n){return new Er(e,t,n)}function Jt(e,n){if(typeof e==`object`&&e){if(Lt(e))return n!==void 0&&t(23),e[I].st;if(vr(e))return e.st;if(hr(e)){if(n===void 0)return e.lt;var r=e.vt.get(n)||e.dt.get(n);return r||t(25,n,Xt(e)),r}if(Ht(e)){if(!n)return t(26);var i=e[I].j.get(n);return i||t(27,n,Xt(e)),i}if(hn(e)||Ln(e)||Gn(e))return e}else if(a(e)&&Gn(e[I]))return e[I];t(28)}function Yt(e,n){return e||t(29),n===void 0?hn(e)||Ln(e)||Gn(e)||hr(e)||vr(e)?e:e[I]?e[I]:void t(24,e):Yt(Jt(e,n))}function Xt(e,t){var n;if(t!==void 0)n=Jt(e,t);else{if(st(e))return e.name;n=Ht(e)||hr(e)||vr(e)?Yt(e):Jt(e)}return n.tt}function Zt(e){var t=We(),n=Le(!0);Qe();try{return e()}finally{$e(),Re(n),Ge(t)}}function Qt(e,t,n){return n===void 0&&(n=-1),function e(t,n,r,i,o){if(t===n)return t!==0||1/t==1/n;if(t==null||n==null)return!1;if(t!=t)return n!=n;var s=typeof t;if(s!==`function`&&s!==`object`&&typeof n!=`object`)return!1;var c=Dr.call(t);if(c!==Dr.call(n))return!1;switch(c){case`[object RegExp]`:case`[object String]`:return``+t==``+n;case`[object Number]`:return+t==+t?+t==0?1/t==1/n:+t==+n:+n!=+n;case`[object Date]`:case`[object Boolean]`:return+t==+n;case`[object Symbol]`:return typeof Symbol<`u`&&Symbol.valueOf.call(t)===Symbol.valueOf.call(n);case`[object Map]`:case`[object Set]`:r>=0&&r++}t=$t(t),n=$t(n);var l=c===`[object Array]`;if(!l){if(typeof t!=`object`||typeof n!=`object`)return!1;var u=t.constructor,d=n.constructor;if(u!==d&&!(a(u)&&u instanceof u&&a(d)&&d instanceof d)&&`constructor`in t&&`constructor`in n)return!1}if(r===0)return!1;r<0&&(r=-1),o||=[];for(var f=(i||=[]).length;f--;)if(i[f]===t)return o[f]===n;if(i.push(t),o.push(n),l){if((f=t.length)!==n.length)return!1;for(;f--;)if(!e(t[f],n[f],r-1,i,o))return!1}else{var p=Object.keys(t),m=p.length;if(Object.keys(n).length!==m)return!1;for(var h=0;h<m;h++){var _=p[h];if(!g(n,_)||!e(t[_],n[_],r-1,i,o))return!1}}return i.pop(),o.pop(),!0}(e,t,n)}function $t(e){return Lt(e)?e.slice():p(e)||hr(e)||m(e)||vr(e)?Array.from(e.entries()):e}function N(e){return e[Symbol.iterator]=en,Object.assign(Object.create(Or),e)}function en(){return this}Object.defineProperty(e,`__esModule`,{value:!0});var tn={},P=Object.assign,nn=Object.getOwnPropertyDescriptor,rn=Object.defineProperty,an=Object.prototype,on=[];Object.freeze(on);var F={};Object.freeze(F);var sn=typeof Proxy<`u`,cn=Object.toString(),ln=function(){},un=Object.getOwnPropertySymbols!==void 0,dn=typeof Reflect<`u`&&Reflect.ownKeys?Reflect.ownKeys:un?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames,fn=Object.getOwnPropertyDescriptors||function(e){var t={};return dn(e).forEach((function(n){t[n]=nn(e,n)})),t},pn=Symbol(`mobx-stored-annotations`),I=Symbol(`mobx administration`),mn=function(){function e(e){e===void 0&&(e=`Atom`),this.tt=void 0,this.bt=0,this.F=new Set,this.$=0,this.U=R.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 et(this)},t.reportChanged=function(){Qe(),tt(this),$e()},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)}}])}();mn.pt=1,mn.yt=2,mn.wt=4;var hn=f(`Atom`,mn),gn={identity:function(e,t){return e===t},structural:function(e,t){return Qt(e,t)},default:function(e,t){return Object.is?Object.is(e,t):e===t?e!==0||1/e==1/t:e!=e&&t!=t},shallow:function(e,t){return Qt(e,t,1)}},_n=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`)}}),vn=Ee(),yn={deep:!0,name:void 0,defaultDecorator:void 0,proxy:!0};Object.freeze(yn);var bn=Se(`observable`),xn=Se(`observable.ref`,{enhancer:ce}),L=Se(`observable.shallow`,{enhancer:function(e,t,n){return e==null||Ht(e)||Lt(e)||hr(e)||vr(e)?e:Array.isArray(e)?Tn.array(e,{name:n,deep:!1}):c(e)?Tn.object(e,void 0,{name:n,deep:!1}):p(e)?Tn.map(e,{name:n,deep:!1}):m(e)?Tn.set(e,{name:n,deep:!1}):void 0}}),Sn=Se(`observable.struct`,{enhancer:function(e,t){return Qt(e,t)?t:e}}),Cn=E(bn);P(je,Cn);var wn,Tn=P(je,{box:function(e,t){var n=Ae(t);return new Nn(e,k(n),n.name,!0,n.equals)},array:function(e,t){var n=Ae(t);return(!1===z.useProxies||!1===n.proxy?qt:Ft)(e,k(n),n.name)},map:function(e,t){var n=Ae(t);return new mr(e,k(n),n.name)},set:function(e,t){var n=Ae(t);return new _r(e,k(n),n.name)},object:function(e,t,n){return Zt((function(){return pt(!1===z.useProxies||!1===n?.proxy?Bt({},n):function(e,t){var n;return r(),(n=(e=Bt(e,t))[I]).v??(n.v=new Proxy(e,rr))}({},n),e,t)}))},ref:E(xn),shallow:E(L),deep:Cn,struct:E(Sn)}),En=ve(`computed`),Dn=ve(`computed.struct`,{equals:gn.structural}),On=function(e,t){if(oe(t))return En.t(e,t);if(o(t))return ae(e,t,En);if(c(e))return E(ve(`computed`,e));var n=c(t)?t:{};return n.get=e,n.name||=e.name||``,new Fn(n)};Object.assign(On,En),On.struct=E(Dn);var kn=0,An=1,jn=(wn=nn((function(){}),`name`)?.configurable)!=null&&wn,Mn={value:`action`,configurable:!0,writable:!1,enumerable:!1},Nn=function(e){function t(t,n,r,i,a){var o;return r===void 0&&(r=`ObservableValue`),a===void 0&&(a=gn.default),(o=e.call(this,r)||this).enhancer=void 0,o.tt=void 0,o.equals=void 0,o.jt=!1,o.et=void 0,o.ut=void 0,o.Ot=void 0,o.dehancer=void 0,o.enhancer=n,o.tt=r,o.equals=a,o.Ot=n(t,void 0,r),o}ne(t,e);var n=t.prototype;return n.dehanceValue=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.set=function(e){(e=this.xt(e))!==z.UNCHANGED&&this.gt(e)},n.xt=function(e){if(kt(this)){var t=jt(this,{object:this,type:ar,newValue:e});if(!t)return z.UNCHANGED;e=t.newValue}return e=this.enhancer(e,this.Ot,this.tt),this.equals(this.Ot,e)?z.UNCHANGED:e},n.gt=function(e){var t=this.Ot;this.Ot=e,this.reportChanged(),Mt(this)&&Pt(this,{type:ar,object:this,newValue:e,oldValue:t})},n.get=function(){return this.reportObserved(),this.dehanceValue(this.Ot)},n.St=function(e){return At(this,e)},n._t=function(e,t){return t&&e({observableKind:`value`,debugObjectName:this.tt,object:this,type:ar,newValue:this.Ot,oldValue:void 0}),Nt(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}(mn),Pn=f(`ObservableValue`,Nn),Fn=function(){function e(e){this.I=R.P,this.D=[],this.W=null,this.F=new Set,this.q=0,this.$=0,this.U=R.L,this.G=0,this.Ot=new Rn(null),this.tt=void 0,this.At=void 0,this.bt=0,this.derivation=void 0,this.kt=void 0,this.Mt=In.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=Me(`ComputedValue-setter`,e.set)),this.Vt=e.equals||(e.compareStructural||e.struct?gn.structural:gn.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===R.L&&(e.U=R.B,e.F.forEach((function(e){e.I===R.L&&(e.I=R.B,e.H())})))})(this)},n.onBO=function(){this.onBOL&&this.onBOL.forEach((function(e){return e()}))},n.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(e){return e()}))},n.get=function(){if(this.isComputing&&t(32,this.tt,this.derivation),z.inBatch!==0||this.F.size!==0||this.Nt){if(et(this),Be(this)){var e=z.trackingContext;this.Nt&&!e&&(z.trackingContext=this),this.trackAndCompute()&&function(e){e.U!==R.K&&(e.U=R.K,e.F.forEach((function(t){t.I===R.B?t.I=R.K:t.I===R.L&&(e.U=R.L)})))}(this),z.trackingContext=e}}else Be(this)&&(this.Tt(),Qe(),this.Ot=this.Ct(!1),$e());var n=this.Ot;if(ze(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===R.P,n=this.Ct(!0),r=t||ze(e)||ze(n)||!this.Vt(e,n);return r&&(this.Ot=n),r},n.Ct=function(e){this.isComputing=!0;var t,n=Le(!1);if(e)t=Ve(this,this.derivation,this.Et);else if(!0===z.disableErrorBoundaries)t=this.derivation.call(this.Et);else try{t=this.derivation.call(this.Et)}catch(e){t=new Rn(e)}return Re(n),this.isComputing=!1,t},n.X=function(){this.Nt||(He(this),this.Ot=void 0)},n._t=function(e,t){var n=this,r=!0,i=void 0;return ct((function(){var a=n.get();if(!r||t){var o=We();e({observableKind:`computed`,debugObjectName:n.tt,type:ar,object:n,newValue:a,oldValue:i}),Ge(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)}}])}();Fn.It=1,Fn.Lt=2,Fn.pt=4,Fn.yt=8,Fn.wt=16;var R,In,Ln=f(`ComputedValue`,Fn);(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_`})(R||={}),function(e){e[e.NONE=0]=`NONE`,e[e.LOG=1]=`LOG`,e[e.BREAK=2]=`BREAK`}(In||={});var Rn=function(e){this.cause=void 0,this.cause=e},zn=[`mobxGuid`,`spyListeners`,`enforceActions`,`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`allowStateReads`,`disableErrorBoundaries`,`runId`,`UNCHANGED`,`useProxies`],Bn=function(){this.version=6,this.UNCHANGED={},this.trackingDerivation=null,this.trackingContext=null,this.runId=0,this.mobxGuid=0,this.inBatch=0,this.pendingUnobservations=[],this.pendingReactions=[],this.isRunningReactions=!1,this.allowStateChanges=!1,this.allowStateReads=!0,this.enforceActions=!0,this.spyListeners=[],this.globalReactionErrorHandlers=[],this.computedRequiresReaction=!1,this.reactionRequiresObservable=!1,this.observableRequiresReaction=!1,this.disableErrorBoundaries=!1,this.suppressReactionErrors=!1,this.useProxies=!0,this.verifyProxies=!1,this.safeDescriptors=!0},Vn=!0,Hn=!1,z=function(){var e=n();return e.__mobxInstanceCount>0&&!e.__mobxGlobals&&(Vn=!1),e.__mobxGlobals&&e.__mobxGlobals.version!==new Bn().version&&(Vn=!1),Vn?e.__mobxGlobals?(e.__mobxInstanceCount+=1,e.__mobxGlobals.UNCHANGED||(e.__mobxGlobals.UNCHANGED={}),e.__mobxGlobals):(e.__mobxInstanceCount=1,e.__mobxGlobals=new Bn):(setTimeout((function(){Hn||t(35)}),1),new Bn)}(),Un=function(){function e(e,t,n,r){e===void 0&&(e=`Reaction`),this.tt=void 0,this.Pt=void 0,this.Kt=void 0,this.Bt=void 0,this.D=[],this.W=[],this.I=R.P,this.q=0,this.G=0,this.bt=0,this.Mt=In.NONE,this.tt=e,this.Pt=t,this.Kt=n,this.Bt=r}var t=e.prototype;return t.H=function(){this.Y()},t.Y=function(){this.isScheduled||(this.isScheduled=!0,z.pendingReactions.push(this),nt())},t.J=function(){if(!this.isDisposed){Qe(),this.isScheduled=!1;var e=z.trackingContext;if(z.trackingContext=this,Be(this)){this.isTrackPending=!0;try{this.Pt()}catch(e){this.Dt(e)}}z.trackingContext=e,$e()}},t.track=function(e){if(!this.isDisposed){Qe(),this.isRunning=!0;var t=z.trackingContext;z.trackingContext=this;var n=Ve(this,e,void 0);z.trackingContext=t,this.isRunning=!1,this.isTrackPending=!1,this.isDisposed&&He(this),ze(n)&&this.Dt(n.cause),$e()}},t.Dt=function(e){var t=this;if(this.Kt)this.Kt(e,this);else{if(z.disableErrorBoundaries)throw e;z.suppressReactionErrors||console.error(`[mobx] uncaught error in '`+this+`'`,e),z.globalReactionErrorHandlers.forEach((function(n){return n(e,t)}))}},t.dispose=function(){this.isDisposed||(this.isDisposed=!0,this.isRunning||(Qe(),He(this),$e()))},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[I]=this,`dispose`in Symbol&&typeof Symbol.dispose==`symbol`&&(n[Symbol.dispose]=n),n},t.toString=function(){return`Reaction[`+this.tt+`]`},t.trace=function(){},S(e,[{key:`isDisposed`,get:function(){return _(this.bt,e.Wt)},set:function(t){this.bt=v(this.bt,e.Wt,t)}},{key:`isScheduled`,get:function(){return _(this.bt,e.qt)},set:function(t){this.bt=v(this.bt,e.qt,t)}},{key:`isTrackPending`,get:function(){return _(this.bt,e.Gt)},set:function(t){this.bt=v(this.bt,e.Gt,t)}},{key:`isRunning`,get:function(){return _(this.bt,e.Ht)},set:function(t){this.bt=v(this.bt,e.Ht,t)}},{key:`diffValue`,get:function(){return+!!_(this.bt,e.wt)},set:function(t){this.bt=v(this.bt,e.wt,t===1)}}])}();Un.Wt=1,Un.qt=2,Un.Gt=4,Un.Ht=8,Un.wt=16;var Wn=function(e){return e()},Gn=f(`Reaction`,Un),B=le(`action`),Kn=le(`action.bound`,{bound:!0}),qn=le(`autoAction`,{autoAction:!0}),Jn=le(`autoAction.bound`,{autoAction:!0,bound:!0}),Yn=at(!1);Object.assign(Yn,B);var Xn=at(!0);Object.assign(Xn,qn),Yn.bound=E(Kn),Xn.bound=E(Jn);var Zn=function(e){return e()},Qn=0,$n=function(e){function t(){var n;return n=e.call(this,`FLOW_CANCELLED`)||this,Object.setPrototypeOf(n,(this instanceof t?this.constructor:void 0).prototype),n.name=`FlowCancellationError`,n}return ne(t,e),t.prototype.toString=function(){return`Error: `+this.message},t}(T(Error)),er=me(`flow`),tr=me(`flow.bound`,{bound:!0}),nr=Object.assign((function(e,t){if(oe(t))return er.t(e,t);if(o(t))return ae(e,t,er);var n=e,r=n.name||`<unnamed flow>`,i=function(){var e,t=this,i=arguments,o=++Qn,s=Yn(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=Yn(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=Yn(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=Yn(r+` - runid: `+o+` - cancel`,(function(){try{c&&gt(c);var t=s.return(void 0),n=Promise.resolve(t.value);n.then(ln,ln),gt(n),e(new $n)}catch(t){e(t)}})),l};return i.isMobXFlow=!0,i}),er);nr.bound=E(tr);var rr={has:function(e,t){return Ot(e).it(t)},get:function(e,t){return Ot(e).ct(t)},set:function(e,t,n){var r;return!!o(t)&&((r=Ot(e).ht(t,n,!0))==null||r)},deleteProperty:function(e,t){var n;return!!o(t)&&((n=Ot(e).Ut(t,!0))==null||n)},defineProperty:function(e,t,n){var r;return(r=Ot(e).l(t,n))==null||r},ownKeys:function(e){return Ot(e).rt()},preventExtensions:function(){t(13)}},ir=Symbol(`mobx-keys`),ar=`update`,or={get:function(e,t){var n=e[I];return t===I?n:t===`length`?n.Ft():typeof t!=`string`||isNaN(t)?g(cr,t)?cr[t]:e[t]:n.ct(parseInt(t))},set:function(e,t,n){var r=e[I];return t===`length`&&r.Xt(n),typeof t==`symbol`||isNaN(t)?e[t]=n:r.ht(parseInt(t),n),!0},preventExtensions:function(){t(15)}},sr=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 mn(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 At(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}),Nt(this,e)},n.Ft=function(){return this.st.reportObserved(),this.j.length},n.Xt=function(e){(typeof e!=`number`||isNaN(e)||e<0)&&t(`Out of range: `+e);var n=this.j.length;if(e!==n)if(e>n){for(var r=Array(e-n),i=0;i<e-n;i++)r[i]=void 0;this.ot(n,0,r)}else this.ot(e,n-e)},n.Zt=function(e,n){e!==this.Yt&&t(16),this.Yt+=n,this.$t&&n>0&&Kt(e+n+1)},n.ot=function(e,t,n){var r=this,i=this.j.length;if(e===void 0?e=0:e>i?e=i:e<0&&(e=Math.max(0,i+e)),t=arguments.length===1?i-e:t==null?0:Math.max(0,Math.min(t,i-e)),n===void 0&&(n=on),kt(this)){var a=jt(this,{object:this.v,type:`splice`,index:e,removedCount:t,added:n});if(!a)return on;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=Mt(this),a=i||r?{observableKind:`array`,object:this.v,type:ar,debugObjectName:this.st.tt,index:e,newValue:t,oldValue:n}:null;this.st.reportChanged(),i&&Pt(this,a)},n.nn=function(e,t,n){var r=!this.zt&&!1,i=Mt(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&&Pt(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(kt(this)){var a=jt(this,{type:ar,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}(),cr={clear:function(){return this.splice(0)},replace:function(e){var t=this[I];return t.ot(0,t.j.length,e)},toJSON:function(){return this.slice()},splice:function(e,t){var n=[...arguments].slice(2),r=this[I];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[I].ot(e,t,n)},push:function(){for(var e=this[I],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[I].j.length-1,0),1)[0]},shift:function(){return this.splice(0,1)[0]},unshift:function(){for(var e=this[I],t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];return e.ot(0,0,n),e.j.length},reverse:function(){return z.trackingDerivation&&t(37,`reverse`),this.replace(this.slice().reverse()),this},sort:function(){z.trackingDerivation&&t(37,`sort`);var e=this.slice();return e.sort.apply(e,arguments),this.replace(e),this},remove:function(e){var t=this[I],n=t.ft(t.j).indexOf(e);return n>-1&&(this.splice(n,1),!0)}};A(`at`,It),A(`concat`,It),A(`flat`,It),A(`includes`,It),A(`indexOf`,It),A(`join`,It),A(`lastIndexOf`,It),A(`slice`,It),A(`toString`,It),A(`toLocaleString`,It),A(`toSorted`,It),A(`toSpliced`,It),A(`with`,It),A(`every`,j),A(`filter`,j),A(`find`,j),A(`findIndex`,j),A(`findLast`,j),A(`findLastIndex`,j),A(`flatMap`,j),A(`forEach`,j),A(`map`,j),A(`some`,j),A(`toReversed`,j),A(`reduce`,M),A(`reduceRight`,M);var lr,ur,dr=f(`ObservableArrayAdministration`,sr),fr={},pr=`add`,mr=function(){function e(e,n,r){var i=this;n===void 0&&(n=se),r===void 0&&(r=`ObservableMap`),this.Jt=void 0,this.tt=void 0,this[I]=fr,this.vt=void 0,this.dt=void 0,this.lt=void 0,this.et=void 0,this.ut=void 0,this.dehancer=void 0,this.Jt=n,this.tt=r,a(Map)||t(18),Zt((function(){i.lt=D(`ObservableMap.keys()`),i.vt=new Map,i.dt=new Map,e&&i.merge(e)}))}var n=e.prototype;return n.it=function(e){return this.vt.has(e)},n.has=function(e){var t=this;if(!z.trackingDerivation)return this.it(e);var n=this.dt.get(e);if(!n){var r=n=new Nn(this.it(e),ce,`ObservableMap.key?`,!1);this.dt.set(e,r),dt(r,(function(){return t.dt.delete(e)}))}return n.get()},n.set=function(e,t){var n=this.it(e);if(kt(this)){var r=jt(this,{type:n?ar:pr,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(kt(this)&&!jt(this,{type:`delete`,object:this,name:e}))return!1;if(this.it(e)){var n=Mt(this),r=n?{observableKind:`map`,debugObjectName:this.tt,type:`delete`,object:this,oldValue:this.vt.get(e).Ot,name:e}:null;return Tt((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&&Pt(this,r),!0}return!1},n.rn=function(e,t){var n=this.vt.get(e);if((t=n.xt(t))!==z.UNCHANGED){var r=Mt(this),i=r?{observableKind:`map`,debugObjectName:this.tt,type:ar,object:this,oldValue:n.Ot,name:e,newValue:t}:null;n.gt(t),r&&Pt(this,i)}},n.en=function(e,t){var n=this;Tt((function(){var r,i=new Nn(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=Mt(this);r&&Pt(this,r?{observableKind:`map`,debugObjectName:this.tt,type:pr,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 Rt({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 Rt({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 hr(e)&&(e=new Map(e)),Tt((function(){var r,i;c(e)?function(e){var t=Object.keys(e);if(!un)return t;var n=Object.getOwnPropertySymbols(e);return n.length?[].concat(t,n.filter((function(t){return an.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;Tt((function(){Ue((function(){for(var t,n=C(e.keys());!(t=n()).done;)e.delete(t.value)}))}))},n.replace=function(e){var n=this;return Tt((function(){for(var r,i=function(e){if(p(e)||hr(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 Nt(this,e)},n.St=function(e){return At(this,e)},S(e,[{key:`size`,get:function(){return this.lt.reportObserved(),this.vt.size}},{key:Symbol.toStringTag,get:function(){return`Map`}}])}(),hr=f(`ObservableMap`,mr),gr={},_r=function(){function e(e,n,r){var i=this;n===void 0&&(n=se),r===void 0&&(r=`ObservableSet`),this.tt=void 0,this[I]=gr,this.vt=new Set,this.st=void 0,this.ut=void 0,this.et=void 0,this.dehancer=void 0,this.Jt=void 0,this.tt=r,a(Set)||t(22),this.Jt=function(e,t){return n(e,t,r)},Zt((function(){i.st=D(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;Tt((function(){Ue((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(kt(this)){var n=jt(this,{type:pr,object:this,newValue:e});if(!n)return this;e=n.newValue}if(!this.has(e)){Tt((function(){t.vt.add(t.Jt(e,void 0)),t.st.reportChanged()}));var r=Mt(this);r&&Pt(this,r?{observableKind:`set`,debugObjectName:this.tt,type:pr,object:this,newValue:e}:null)}return this},n.delete=function(e){var t=this;if(kt(this)&&!jt(this,{type:`delete`,object:this,oldValue:e}))return!1;if(this.has(e)){var n=Mt(this),r=n?{observableKind:`set`,debugObjectName:this.tt,type:`delete`,object:this,oldValue:e}:null;return Tt((function(){t.st.reportChanged(),t.vt.delete(e)})),n&&Pt(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 zt({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 zt({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)&&!vr(e)?e.intersection(this):new Set(this).intersection(e)},n.union=function(e){return m(e)&&!vr(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)&&!vr(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)&&!vr(e)?e.isDisjointFrom(this):new Set(this).isDisjointFrom(e)},n.replace=function(e){var n=this;return vr(e)&&(e=new Set(e)),Tt((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 Nt(this,e)},n.St=function(e){return At(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`}}])}(),vr=f(`ObservableSet`,_r),yr=Object.create(null),br=function(){function e(e,t,n,r){t===void 0&&(t=new Map),r===void 0&&(r=vn),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 mn(`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 Fn)return n.set(t),!0;if(kt(this)){var r=jt(this,{type:ar,object:this.v||this.h,name:e,newValue:t});if(!r)return null;t=r.newValue}if((t=n.xt(t))!==z.UNCHANGED){var i=Mt(this),a=i?{type:ar,observableKind:`object`,debugObjectName:this.tt,object:this.v||this.h,oldValue:n.Ot,name:e,newValue:t}:null;n.gt(t),i&&Pt(this,a)}return!0},n.ct=function(e){return z.trackingDerivation&&!g(this.h,e)&&this.it(e),this.h[e]},n.ht=function(e,t,n){return n===void 0&&(n=!1),g(this.h,e)?this.j.has(e)?this.S(e,t):n?Reflect.set(this.h,e,t):(this.h[e]=t,!0):this.s(e,{value:t,enumerable:!0,writable:!0,configurable:!0},this.un,n)},n.it=function(e){if(!z.trackingDerivation)return e in this.h;this.sn||=new Map;var t=this.sn.get(e);return t||(t=new Nn(e in this.h,ce,`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[pn])!=null&&r[e])return;t(1,n.i,this.tt+`.`+e.toString())}for(var i=this.h;i&&i!==an;){var a=nn(i,e);if(a){var o=n.o(this,e,a,i);if(o===0)return;if(o===1)break}i=Object.getPrototypeOf(i)}Ut(this,0,e)}},n.s=function(e,t,n,r){if(r===void 0&&(r=!1),!0===n&&(n=this.un),!1===n)return this.l(e,t,r);var i=n.s(this,e,t,r);return i&&Ut(this,0,e),i},n.l=function(e,t,n){n===void 0&&(n=!1);try{Qe();var r=this.Ut(e);if(!r)return r;if(kt(this)){var i=jt(this,{object:this.v||this.h,name:e,type:pr,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 rn(this.h,e,t);this.fn(e,t.value)}finally{$e()}return!0},n.g=function(e,t,n,r){r===void 0&&(r=!1);try{Qe();var i=this.Ut(e);if(!i)return i;if(kt(this)){var a=jt(this,{object:this.v||this.h,name:e,type:pr,newValue:t});if(!a)return null;t=a.newValue}var o=Vt(e),s={configurable:!z.safeDescriptors||this.p,enumerable:!0,get:o.get,set:o.set};if(r){if(!Reflect.defineProperty(this.h,e,s))return!1}else rn(this.h,e,s);var c=new Nn(t,n,`ObservableObject.key`,!1);this.j.set(e,c),this.fn(e,c.Ot)}finally{$e()}return!0},n.m=function(e,t,n){n===void 0&&(n=!1);try{Qe();var r=this.Ut(e);if(!r)return r;if(kt(this)&&!jt(this,{object:this.v||this.h,name:e,type:pr,newValue:void 0}))return null;t.name||=`ObservableObject.key`,t.context=this.v||this.h;var i=Vt(e),a={configurable:!z.safeDescriptors||this.p,enumerable:!1,get:i.get,set:i.set};if(n){if(!Reflect.defineProperty(this.h,e,a))return!1}else rn(this.h,e,a);this.j.set(e,new Fn(t)),this.fn(e,void 0)}finally{$e()}return!0},n.Ut=function(e,t){if(t===void 0&&(t=!1),!g(this.h,e))return!0;if(kt(this)&&!jt(this,{object:this.v||this.h,name:e,type:`remove`}))return null;try{var n;Qe();var r=Mt(this),i=this.j.get(e),a=void 0;if(!i&&r&&(a=nn(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 Nn&&(a=i.Ot),tt(i)),this.lt.reportChanged(),(n=this.sn)==null||(n=n.get(e))==null||n.set(e in this.h),r&&r&&Pt(this,{type:`remove`,observableKind:`object`,object:this.v||this.h,debugObjectName:this.tt,oldValue:a,name:e})}finally{$e()}return!0},n._t=function(e){return Nt(this,e)},n.St=function(e){return At(this,e)},n.fn=function(e,t){var n,r=Mt(this);r&&r&&Pt(this,r?{type:pr,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(),dn(this.h)},n.nt=function(){return this.lt.reportObserved(),Object.keys(this.h)},e}(),xr=f(`ObservableObjectAdministration`,br),Sr=Wt(0),Cr=function(){var e=!1,t={};return Object.defineProperty(t,`0`,{set:function(){e=!0}}),Object.create(t)[0]=1,!1===e}(),wr=0,Tr=function(){};lr=Tr,ur=Array.prototype,Object.setPrototypeOf?Object.setPrototypeOf(lr.prototype,ur):lr.prototype.__proto__===void 0?lr.prototype=ur:lr.prototype.__proto__=ur;var Er=function(e){function t(t,n,r,i){var a;return r===void 0&&(r=`ObservableArray`),i===void 0&&(i=!1),a=e.call(this)||this,Zt((function(){var e=new sr(r,n,i,!0);e.v=a,d(a,I,e),t&&t.length&&a.spliceWithArray(0,0,t),Cr&&Object.defineProperty(a,`0`,Sr)})),a}ne(t,e);var n=t.prototype;return n.concat=function(){this[I].st.reportObserved();var e=[...arguments];return Array.prototype.concat.apply(this.slice(),e.map((function(e){return Lt(e)?e.slice():e})))},n[Symbol.iterator]=function(){var e=this,t=0;return N({next:function(){return t<e.length?{value:e[t++],done:!1}:{done:!0,value:void 0}}})},S(t,[{key:`length`,get:function(){return this[I].Ft()},set:function(e){this[I].Xt(e)}},{key:Symbol.toStringTag,get:function(){return`Array`}}])}(Tr);Object.entries(cr).forEach((function(e){var t=e[0];t!==`concat`&&u(Er.prototype,t,e[1])})),Kt(1e3);var Dr=an.toString,Or=n().Iterator?.prototype||{};[`Symbol`,`Map`,`Set`].forEach((function(e){n()[e]===void 0&&t(`MobX requires global '`+e+`' to be available or polyfilled`)})),typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__==`object`&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:it,extras:{getDebugName:Xt},$mobx:I}),e.$mobx=I,e.FlowCancellationError=$n,e.ObservableMap=mr,e.ObservableSet=_r,e.Reaction=Un,e._allowStateChanges=Ie,e._allowStateChangesInsideComputed=ot,e._allowStateReadsEnd=qe,e._allowStateReadsStart=Ke,e._autoAction=Xn,e._endAction=Fe,e._getAdministration=Yt,e._getGlobalState=function(){return z},e._interceptReads=function(e,t,n){var r;return hr(e)||Lt(e)||Pn(e)?r=Yt(e):Ht(e)&&(r=Yt(e,t)),r.dehancer=typeof t==`function`?t:n,function(){r.dehancer=void 0}},e._isComputingDerivation=function(){return z.trackingDerivation!==null},e._resetGlobalState=function(){var e=new Bn;for(var t in e)zn.indexOf(t)===-1&&(z[t]=e[t]);z.allowStateChanges=!z.enforceActions},e._startAction=Pe,e.action=Yn,e.autorun=ct,e.comparer=gn,e.computed=On,e.configure=function(e){!0===e.isolateGlobalState&&function(){if((z.pendingReactions.length||z.inBatch||z.isRunningReactions)&&t(36),Hn=!0,Vn){var e=n();--e.__mobxInstanceCount==0&&(e.__mobxGlobals=void 0),z=new Bn}}();var r,i,a=e.useProxies,o=e.enforceActions;if(a!==void 0&&(z.useProxies=a===`always`||a!==`never`&&typeof Proxy<`u`),a===`ifavailable`&&(z.verifyProxies=!0),o!==void 0){var s=o===`always`?`always`:o===`observed`;z.enforceActions=s,z.allowStateChanges=!0!==s&&s!==`always`}[`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`disableErrorBoundaries`,`safeDescriptors`].forEach((function(t){t in e&&(z[t]=!!e[t])})),z.allowStateReads=!z.observableRequiresReaction,e.reactionScheduler&&(r=e.reactionScheduler,i=Wn,Wn=function(e){return r((function(){return i(e)}))})},e.createAtom=D,e.defineProperty=function(e,n,r){if(Ht(e))return e[I].l(n,r);t(39)},e.entries=function(e){return Ht(e)?xt(e).map((function(t){return[t,e[t]]})):hr(e)?xt(e).map((function(t){return[t,e.get(t)]})):vr(e)?Array.from(e.entries()):Lt(e)?e.map((function(e,t){return[t,e]})):void t(7)},e.extendObservable=pt,e.flow=nr,e.flowResult=function(e){return e},e.get=function(e,n){if(St(e,n))return Ht(e)?e[I].ct(n):hr(e)?e.get(n):Lt(e)?e[n]:void t(11)},e.getAtom=Jt,e.getDebugName=Xt,e.getDependencyTree=function(e,t){return mt(Jt(e,t))},e.getObserverTree=function(e,t){return ht(Jt(e,t))},e.has=St,e.intercept=function(e,t,n){return a(n)?function(e,t,n){return Yt(e,t).St(n)}(e,t,n):function(e,t){return Yt(e).St(t)}(e,t)},e.isAction=st,e.isBoxedObservable=Pn,e.isComputed=function(e){return vt(e)},e.isComputedProp=function(e,t){return vt(e,t)},e.isFlow=_t,e.isFlowCancellationError=function(e){return e instanceof $n},e.isObservable=bt,e.isObservableArray=Lt,e.isObservableMap=hr,e.isObservableObject=Ht,e.isObservableProp=function(e,t){return yt(e,t)},e.isObservableSet=vr,e.keys=xt,e.makeAutoObservable=function(e,t,n){return c(e)?pt(e,e,t,n):(Zt((function(){var r=Bt(e,n)[I];if(!e[ir]){var i=Object.getPrototypeOf(e),a=new Set([].concat(dn(e),dn(i)));a.delete(`constructor`),a.delete(I),u(i,ir,a)}e[ir].forEach((function(e){return r.o(e,!t||!(e in t)||t[e])}))})),e)},e.makeObservable=function(e,t,n){return Zt((function(){var r=Bt(e,n)[I];t??=function(e){return g(e,pn)||u(e,pn,ee({},e[pn])),e[pn]}(e),dn(t).forEach((function(e){return r.o(e,t[e])}))})),e},e.observable=Tn,e.observe=function(e,t,n,r){return a(n)?function(e,t,n,r){return Yt(e,t)._t(n,r)}(e,t,n,r):function(e,t,n){return Yt(e)._t(t,n)}(e,t,n)},e.onBecomeObserved=ut,e.onBecomeUnobserved=dt,e.onReactionError=function(e){return z.globalReactionErrorHandlers.push(e),function(){var t=z.globalReactionErrorHandlers.indexOf(e);t>=0&&z.globalReactionErrorHandlers.splice(t,1)}},e.override=_n,e.ownKeys=Ct,e.reaction=function(e,t,n){function r(){if(p=!1,!h.isDisposed){var t=!1,r=s;h.track((function(){var n=Ie(!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=F);var a,o,s,c=n.name??`Reaction`,l=Yn(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=lt(n),f=!0,p=!1,m=n.compareStructural?gn.structural:n.equals||gn.default,h=new Un(c,(function(){f||u?r():p||(p=!0,d(r))}),n.onError,n.requiresObservable);return(i=n)!=null&&(i=i.signal)!=null&&i.aborted||h.Y(),h.Z(n?.signal)},e.remove=function(e,n){Ht(e)?e[I].Ut(n):hr(e)||vr(e)?e.delete(n):Lt(e)?(typeof n!=`number`&&(n=parseInt(n,10)),e.splice(n,1)):t(9)},e.runInAction=ot,e.set=function e(n,r,i){if(arguments.length!==2||vr(n))Ht(n)?n[I].ht(r,i):hr(n)?n.set(r,i):vr(n)?n.add(r):Lt(n)?(typeof r!=`number`&&(r=parseInt(r,10)),r<0&&t(`Invalid index: '`+r+`'`),Qe(),r>=n.length&&(n.length=r+1),n[r]=i,$e()):t(8);else{Qe();var a=r;try{for(var o in a)e(n,o,a[o])}finally{$e()}}},e.spy=it,e.toJS=function(e){return function e(t,n){if(typeof t!=`object`||!t||t instanceof Date||!bt(t))return t;if(Pn(t)||Ln(t))return e(t.get(),n);if(n.has(t))return n.get(t);if(Lt(t)){var r=wt(n,t,Array(t.length));return t.forEach((function(t,i){r[i]=e(t,n)})),r}if(vr(t)){var i=wt(n,t,new Set);return t.forEach((function(t){i.add(e(t,n))})),i}if(hr(t)){var a=wt(n,t,new Map);return t.forEach((function(t,r){a.set(r,e(t,n))})),a}var o=wt(n,t,{});return Ct(t).forEach((function(r){an.propertyIsEnumerable.call(t,r)&&(o[r]=e(t[r],n))})),o}(e,new Map)},e.trace=function(){},e.transaction=Tt,e.untracked=Ue,e.values=function(e){return Ht(e)?xt(e).map((function(t){return e[t]})):hr(e)?xt(e).map((function(t){return e.get(t)})):vr(e)?Array.from(e.values()):Lt(e)?e.slice():void t(6)},e.when=function(e,t,n){return arguments.length===1||t&&typeof t==`object`?Dt(e,t):Et(e,t,n||{})}})),gv=me((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){L.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++L.mobxGuid}function g(e){var t=!1;return function(){if(!t)return t=!0,e.apply(this,arguments)}}var _=function(){};function v(e){return typeof e==`function`}function y(e){switch(typeof e){case`string`:case`symbol`:case`number`:return!0}return!1}function b(e){return typeof e==`object`&&!!e}function x(e){if(!b(e))return!1;var t=Object.getPrototypeOf(e);if(t==null)return!0;var n=Object.hasOwnProperty.call(t,`constructor`)&&t.constructor;return typeof n==`function`&&n.toString()===f}function S(e){var t=e?.constructor;return t?t.name===`GeneratorFunction`||t.displayName===`GeneratorFunction`:!1}function C(e,t,n){s(e,t,{enumerable:!1,writable:!0,configurable:!0,value:n})}function ee(e,t,n){s(e,t,{enumerable:!1,writable:!1,configurable:!0,value:n})}function te(e,t){var n=`isMobX`+e;return t.prototype[n]=!0,function(e){return b(e)&&e[n]===!0}}function ne(e){return e!=null&&Object.prototype.toString.call(e)===`[object Map]`}function re(e){return Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(e)))===null}function w(e){return e!=null&&Object.prototype.toString.call(e)===`[object Set]`}var ie=Object.getOwnPropertySymbols!==void 0;function T(e){var t=Object.keys(e);if(!ie)return t;var n=Object.getOwnPropertySymbols(e);return n.length?[].concat(t,n.filter(function(t){return c.propertyIsEnumerable.call(e,t)})):t}var E=typeof Reflect<`u`&&Reflect.ownKeys?Reflect.ownKeys:ie?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames;function ae(e){return typeof e==`string`?e:typeof e==`symbol`?e.toString():new String(e).toString()}function oe(e){return e===null?null:typeof e==`object`?``+e:e}function D(e,t){return c.hasOwnProperty.call(e,t)}var se=Object.getOwnPropertyDescriptors||function(e){var t={};return E(e).forEach(function(n){t[n]=o(e,n)}),t};function ce(e,t){return!!(e&t)}function le(e,t,n){return n?e|=t:e&=~t,e}function ue(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 de(e,t,n){if(ve())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var i=new(e.bind.apply(e,r));return n&&ye(i,n.prototype),i}function fe(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,xe(r.key),r)}}function pe(e,t,n){return t&&fe(e.prototype,t),n&&fe(e,n),Object.defineProperty(e,`prototype`,{writable:!1}),e}function me(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=Se(e))||t&&e&&typeof e.length==`number`){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw TypeError(`Invalid attempt to iterate non-iterable instance.
57
57
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function he(){return he=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},he.apply(null,arguments)}function ge(e){return ge=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},ge(e)}function O(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,ye(e,t)}function _e(e){try{return Function.toString.call(e).indexOf(`[native code]`)!==-1}catch{return typeof e==`function`}}function ve(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(ve=function(){return!!e})()}function ye(e,t){return ye=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},ye(e,t)}function be(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 xe(e){var t=be(e,`string`);return typeof t==`symbol`?t:t+``}function Se(e,t){if(e){if(typeof e==`string`)return ue(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)?ue(e,t):void 0}}function Ce(e){var t=typeof Map==`function`?new Map:void 0;return Ce=function(e){if(e===null||!_e(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 de(e,arguments,ge(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),ye(n,e)},Ce(e)}var we=Symbol(`mobx-stored-annotations`);function Te(e){function t(t,n){if(ke(n))return e.decorate_20223_(t,n);Ee(t,n,e)}return Object.assign(t,e)}function Ee(e,t,r){D(e,we)||C(e,we,he({},e[we])),Ge(r)&&!D(e[we],t)&&n(`'`+(e.constructor.name+`.prototype.`+t.toString())+`' is decorated with 'override', but no such decorated member was found on prototype.`),De(e,r,t),Ge(r)||(e[we][t]=r)}function De(e,t,r){if(!Ge(t)&&D(e[we],r)){var i=e.constructor.name+`.prototype.`+r.toString(),a=e[we][r].annotationType_,o=t.annotationType_;n(`Cannot apply '@`+o+`' to '`+i+`':`+(`
58
58
  The field is already decorated with '@`+a+`'.`)+`
59
59
  Re-decorating fields is not allowed.
60
- Use '@override' decorator for methods overridden by subclass.`)}}function Oe(e){return D(e,we)||C(e,we,he({},e[we])),e[we]}function ke(e){return typeof e==`object`&&typeof e.kind==`string`}function Ae(e,t){t.includes(e.kind)||n(`The decorator applied to '`+String(e.name)+`' cannot be used on a `+e.kind+` element`)}var k=Symbol(`mobx administration`),je=function(){function e(e){e===void 0&&(e=`Atom@`+h()),this.name_=void 0,this.flags_=0,this.observers_=new Set,this.lastAccessedBy_=0,this.lowestObserverState_=P.NOT_TRACKING_,this.onBOL=void 0,this.onBUOL=void 0,this.name_=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 Mn(this)},t.reportChanged=function(){An(),Nn(this),jn()},t.toString=function(){return this.name_},pe(e,[{key:`isBeingObserved`,get:function(){return ce(this.flags_,e.isBeingObservedMask_)},set:function(t){this.flags_=le(this.flags_,e.isBeingObservedMask_,t)}},{key:`isPendingUnobservation`,get:function(){return ce(this.flags_,e.isPendingUnobservationMask_)},set:function(t){this.flags_=le(this.flags_,e.isPendingUnobservationMask_,t)}},{key:`diffValue`,get:function(){return+!!ce(this.flags_,e.diffValueMask_)},set:function(t){this.flags_=le(this.flags_,e.diffValueMask_,t===1)}}])}();je.isBeingObservedMask_=1,je.isPendingUnobservationMask_=2,je.diffValueMask_=4;var Me=te(`Atom`,je);function Ne(e,t,n){t===void 0&&(t=_),n===void 0&&(n=_);var r=new je(e);return t!==_&&gr(r,t),n!==_&&_r(r,n),r}function Pe(e,t){return e===t}function Fe(e,t){return _a(e,t)}function Ie(e,t){return _a(e,t,1)}function Le(e,t){return Object.is?Object.is(e,t):e===t?e!==0||1/e==1/t:e!==e&&t!==t}var Re={identity:Pe,structural:Fe,default:Le,shallow:Ie};function ze(e,t,n){return Gr(e)?e:Array.isArray(e)?j.array(e,{name:n}):x(e)?j.object(e,void 0,{name:n}):ne(e)?j.map(e,{name:n}):w(e)?j.set(e,{name:n}):typeof e==`function`&&!cr(e)&&!Lr(e)?S(e)?Pr(e):or(n,e):e}function Be(e,t,r){if(e==null||$i(e)||Fi(e)||Bi(e)||Gi(e))return e;if(Array.isArray(e))return j.array(e,{name:r,deep:!1});if(x(e))return j.object(e,void 0,{name:r,deep:!1});if(ne(e))return j.map(e,{name:r,deep:!1});if(w(e))return j.set(e,{name:r,deep:!1});n(`The shallow modifier / decorator can only used in combination with arrays, objects, maps and sets`)}function Ve(e){return e}function He(e,t){return Gr(e)&&n(`observable.struct should not be used with observable values`),_a(e,t)?t:e}var Ue=`override`,We=Te({annotationType_:Ue,make_:Ke,extend_:qe,decorate_20223_:Je});function Ge(e){return e.annotationType_===Ue}function Ke(e,t){return e.isPlainObject_&&n(`Cannot apply '`+this.annotationType_+`' to '`+e.name_+`.`+t.toString()+`':`+(`
60
+ Use '@override' decorator for methods overridden by subclass.`)}}function Oe(e){return D(e,we)||C(e,we,he({},e[we])),e[we]}function ke(e){return typeof e==`object`&&typeof e.kind==`string`}function Ae(e,t){t.includes(e.kind)||n(`The decorator applied to '`+String(e.name)+`' cannot be used on a `+e.kind+` element`)}var k=Symbol(`mobx administration`),je=function(){function e(e){e===void 0&&(e=`Atom@`+h()),this.name_=void 0,this.flags_=0,this.observers_=new Set,this.lastAccessedBy_=0,this.lowestObserverState_=P.NOT_TRACKING_,this.onBOL=void 0,this.onBUOL=void 0,this.name_=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 Mn(this)},t.reportChanged=function(){An(),Nn(this),jn()},t.toString=function(){return this.name_},pe(e,[{key:`isBeingObserved`,get:function(){return ce(this.flags_,e.isBeingObservedMask_)},set:function(t){this.flags_=le(this.flags_,e.isBeingObservedMask_,t)}},{key:`isPendingUnobservation`,get:function(){return ce(this.flags_,e.isPendingUnobservationMask_)},set:function(t){this.flags_=le(this.flags_,e.isPendingUnobservationMask_,t)}},{key:`diffValue`,get:function(){return+!!ce(this.flags_,e.diffValueMask_)},set:function(t){this.flags_=le(this.flags_,e.diffValueMask_,t===1)}}])}();je.isBeingObservedMask_=1,je.isPendingUnobservationMask_=2,je.diffValueMask_=4;var Me=te(`Atom`,je);function Ne(e,t,n){t===void 0&&(t=_),n===void 0&&(n=_);var r=new je(e);return t!==_&&gr(r,t),n!==_&&_r(r,n),r}function Pe(e,t){return e===t}function Fe(e,t){return va(e,t)}function Ie(e,t){return va(e,t,1)}function Le(e,t){return Object.is?Object.is(e,t):e===t?e!==0||1/e==1/t:e!==e&&t!==t}var Re={identity:Pe,structural:Fe,default:Le,shallow:Ie};function ze(e,t,n){return Gr(e)?e:Array.isArray(e)?j.array(e,{name:n}):x(e)?j.object(e,void 0,{name:n}):ne(e)?j.map(e,{name:n}):w(e)?j.set(e,{name:n}):typeof e==`function`&&!cr(e)&&!Lr(e)?S(e)?Pr(e):or(n,e):e}function Be(e,t,r){if(e==null||ea(e)||Ii(e)||Vi(e)||Ki(e))return e;if(Array.isArray(e))return j.array(e,{name:r,deep:!1});if(x(e))return j.object(e,void 0,{name:r,deep:!1});if(ne(e))return j.map(e,{name:r,deep:!1});if(w(e))return j.set(e,{name:r,deep:!1});n(`The shallow modifier / decorator can only used in combination with arrays, objects, maps and sets`)}function Ve(e){return e}function He(e,t){return Gr(e)&&n(`observable.struct should not be used with observable values`),va(e,t)?t:e}var Ue=`override`,We=Te({annotationType_:Ue,make_:Ke,extend_:qe,decorate_20223_:Je});function Ge(e){return e.annotationType_===Ue}function Ke(e,t){return e.isPlainObject_&&n(`Cannot apply '`+this.annotationType_+`' to '`+e.name_+`.`+t.toString()+`':`+(`
61
61
  '`+this.annotationType_+`' cannot be used on plain objects.`)),D(e.appliedAnnotations_,t)||n(`'`+e.name_+`.`+t.toString()+`' is annotated with '`+this.annotationType_+`', but no such annotated member was found on prototype.`),0}function qe(e,t,r,i){n(`'`+this.annotationType_+`' can only be used with 'makeObservable'`)}function Je(e,t){console.warn(`'`+this.annotationType_+`' cannot be used with decorators - this is a no-op`)}function Ye(e,t){return{annotationType_:e,options_:t,make_:Xe,extend_:Ze,decorate_20223_:Qe}}function Xe(e,t,n,r){var i;return(i=this.options_)!=null&&i.bound?this.extend_(e,t,n,!1)===null?0:1:r===e.target_?this.extend_(e,t,n,!1)===null?0:2:cr(n.value)?1:(s(r,t,et(e,this,t,n,!1)),2)}function Ze(e,t,n,r){var i=et(e,this,t,n);return e.defineProperty_(t,i,r)}function Qe(e,t){Ae(t,[`method`,`field`]);var r=t.kind,i=t.name,a=t.addInitializer,o=this,s=function(e){return Gt(o.options_?.name??i.toString(),e,o.options_?.autoAction??!1)};if(r==`field`)return function(e){var t,n=e;return cr(n)||(n=s(n)),(t=o.options_)!=null&&t.bound&&(n=n.bind(this),n.isMobxAction=!0),n};if(r==`method`){var c;return cr(e)||(e=s(e)),(c=this.options_)!=null&&c.bound&&a(function(){var e=this,t=e[i].bind(e);t.isMobxAction=!0,e[i]=t}),e}n(`Cannot apply '`+o.annotationType_+`' to '`+String(i)+`' (kind: `+r+`):`+(`
62
62
  '`+o.annotationType_+`' can only be used on properties with a function value.`))}function $e(e,t,r,i){var a=t.annotationType_,o=i.value;v(o)||n(`Cannot apply '`+a+`' to '`+e.name_+`.`+r.toString()+`':`+(`
63
63
  '`+a+`' can only be used on properties with a function value.`))}function et(e,t,n,r,i){var a,o;i===void 0&&(i=L.safeDescriptors),$e(e,t,n,r);var s=r.value;return(a=t.options_)!=null&&a.bound&&(s=s.bind(e.proxy_??e.target_)),{value:Gt(t.options_?.name??n.toString(),s,t.options_?.autoAction??!1,(o=t.options_)!=null&&o.bound?e.proxy_??e.target_:void 0),configurable:i?e.isPlainObject_:!0,enumerable:!1,writable:!i}}function tt(e,t){return{annotationType_:e,options_:t,make_:nt,extend_:rt,decorate_20223_:it}}function nt(e,t,n,r){var i;return r===e.target_?this.extend_(e,t,n,!1)===null?0:2:(i=this.options_)!=null&&i.bound&&(!D(e.target_,t)||!Lr(e.target_[t]))&&this.extend_(e,t,n,!1)===null?0:Lr(n.value)?1:(s(r,t,ot(e,this,t,n,!1,!1)),2)}function rt(e,t,n,r){var i=ot(e,this,t,n,this.options_?.bound);return e.defineProperty_(t,i,r)}function it(e,t){var n;Ae(t,[`method`]);var r=t.name,i=t.addInitializer;return Lr(e)||(e=Pr(e)),(n=this.options_)!=null&&n.bound&&i(function(){var e=this,t=e[r].bind(e);t.isMobXFlow=!0,e[r]=t}),e}function at(e,t,r,i){var a=t.annotationType_,o=i.value;v(o)||n(`Cannot apply '`+a+`' to '`+e.name_+`.`+r.toString()+`':`+(`
64
- '`+a+`' can only be used on properties with a generator function value.`))}function ot(e,t,n,r,i,a){a===void 0&&(a=L.safeDescriptors),at(e,t,n,r);var o=r.value;return Lr(o)||(o=Pr(o)),i&&(o=o.bind(e.proxy_??e.target_),o.isMobXFlow=!0),{value:o,configurable:a?e.isPlainObject_:!0,enumerable:!1,writable:!a}}function st(e,t){return{annotationType_:e,options_:t,make_:ct,extend_:lt,decorate_20223_:ut}}function ct(e,t,n){return this.extend_(e,t,n,!1)===null?0:1}function lt(e,t,n,r){return dt(e,this,t,n),e.defineComputedProperty_(t,he({},this.options_,{get:n.get,set:n.set}),r)}function ut(e,t){Ae(t,[`getter`]);var n=this,r=t.name,i=t.addInitializer;return i(function(){var t=Xi(this)[k],i=he({},n.options_,{get:e,context:this});i.name||=t.name_+`.`+r.toString(),t.values_.set(r,new en(i))}),function(){return this[k].getObservablePropValue_(r)}}function dt(e,t,r,i){var a=t.annotationType_;i.get||n(`Cannot apply '`+a+`' to '`+e.name_+`.`+r.toString()+`':`+(`
65
- '`+a+`' can only be used on getter(+setter) properties.`))}function ft(e,t){return{annotationType_:e,options_:t,make_:pt,extend_:mt,decorate_20223_:ht}}function pt(e,t,n){return this.extend_(e,t,n,!1)===null?0:1}function mt(e,t,n,r){return gt(e,this,t,n),e.defineObservableProperty_(t,n.value,this.options_?.enhancer??ze,r)}function ht(e,t){if(t.kind===`field`)throw n("Please use `@observable accessor "+String(t.name)+"` instead of `@observable "+String(t.name)+"`");Ae(t,[`accessor`]);var r=this,i=t.kind,a=t.name,o=new WeakSet;function s(e,t){var n=Xi(e)[k],i=new $t(t,r.options_?.enhancer??ze,n.name_+`.`+a.toString(),!1);n.values_.set(a,i),o.add(e)}if(i==`accessor`)return{get:function(){return o.has(this)||s(this,e.get.call(this)),this[k].getObservablePropValue_(a)},set:function(e){return o.has(this)||s(this,e),this[k].setObservablePropValue_(a,e)},init:function(e){return o.has(this)||s(this,e),e}}}function gt(e,t,r,i){var a=t.annotationType_;`value`in i||n(`Cannot apply '`+a+`' to '`+e.name_+`.`+r.toString()+`':`+(`
66
- '`+a+`' cannot be used on getter/setter properties`))}var _t=`true`,vt=yt();function yt(e){return{annotationType_:_t,options_:e,make_:bt,extend_:xt,decorate_20223_:St}}function bt(e,t,n,r){var i;if(n.get)return Bt.make_(e,t,n,r);if(n.set){var a=cr(n.set)?n.set:Gt(t.toString(),n.set);return r===e.target_?e.defineProperty_(t,{configurable:L.safeDescriptors?e.isPlainObject_:!0,set:a})===null?0:2:(s(r,t,{configurable:!0,set:a}),2)}if(r!==e.target_&&typeof n.value==`function`){var o;if(S(n.value)){var c;return((c=this.options_)!=null&&c.autoBind?Pr.bound:Pr).make_(e,t,n,r)}return((o=this.options_)!=null&&o.autoBind?or.bound:or).make_(e,t,n,r)}var l=this.options_?.deep===!1?j.ref:j;return typeof n.value==`function`&&(i=this.options_)!=null&&i.autoBind&&(n.value=n.value.bind(e.proxy_??e.target_)),l.make_(e,t,n,r)}function xt(e,t,n,r){var i;return n.get?Bt.extend_(e,t,n,r):n.set?e.defineProperty_(t,{configurable:L.safeDescriptors?e.isPlainObject_:!0,set:Gt(t.toString(),n.set)},r):(typeof n.value==`function`&&(i=this.options_)!=null&&i.autoBind&&(n.value=n.value.bind(e.proxy_??e.target_)),(this.options_?.deep===!1?j.ref:j).extend_(e,t,n,r))}function St(e,t){n(`'`+this.annotationType_+`' cannot be used as a decorator`)}var Ct=`observable`,wt=`observable.ref`,Tt=`observable.shallow`,Et=`observable.struct`,Dt={deep:!0,name:void 0,defaultDecorator:void 0,proxy:!0};Object.freeze(Dt);function Ot(e){return e||Dt}var kt=ft(Ct),At=ft(wt,{enhancer:Ve}),jt=ft(Tt,{enhancer:Be}),Mt=ft(Et,{enhancer:He}),Nt=Te(kt);function Pt(e){return e.deep===!0?ze:e.deep===!1?Ve:A(e.defaultDecorator)}function Ft(e){return e?e.defaultDecorator??yt(e):void 0}function A(e){return e?e.options_?.enhancer??ze:ze}function It(e,t,n){if(ke(t))return kt.decorate_20223_(e,t);if(y(t)){Ee(e,t,kt);return}return Gr(e)?e:x(e)?j.object(e,t,n):Array.isArray(e)?j.array(e,t):ne(e)?j.map(e,t):w(e)?j.set(e,t):typeof e==`object`&&e?e:j.box(e,t)}a(It,Nt);var j=a(It,{box:function(e,t){var n=Ot(t);return new $t(e,Pt(n),n.name,!0,n.equals)},array:function(e,t){var n=Ot(t);return(L.useProxies===!1||n.proxy===!1?da:ki)(e,Pt(n),n.name)},map:function(e,t){var n=Ot(t);return new zi(e,Pt(n),n.name)},set:function(e,t){var n=Ot(t);return new Wi(e,Pt(n),n.name)},object:function(e,t,n){return ha(function(){return Cr(L.useProxies===!1||n?.proxy===!1?Xi({},n):hi({},n),e,t)})},ref:Te(At),shallow:Te(jt),deep:Nt,struct:Te(Mt)}),M=`computed`,Lt=`computed.struct`,Rt=st(M),zt=st(Lt,{equals:Re.structural}),Bt=function(e,t){if(ke(t))return Rt.decorate_20223_(e,t);if(y(t))return Ee(e,t,Rt);if(x(e))return Te(st(M,e));v(e)||n("First argument to `computed` should be an expression."),v(t)&&n("A setter as second argument is no longer supported, use `{ set: fn }` option instead");var r=x(t)?t:{};return r.get=e,r.name||=e.name||``,new en(r)};Object.assign(Bt,Rt),Bt.struct=Te(zt);var Vt=0,Ht=1,Ut=o(function(){},`name`)?.configurable??!1,Wt={value:`action`,configurable:!0,writable:!1,enumerable:!1};function Gt(e,t,r,i){r===void 0&&(r=!1),v(t)||n("`action` can only be invoked on functions"),(typeof e!=`string`||!e)&&n(`actions should have valid names, got: '`+e+`'`);function a(){return Kt(e,r,t,i||this,arguments)}return a.isMobxAction=!0,a.toString=function(){return t.toString()},Ut&&(Wt.value=e,s(a,`name`,Wt)),a}function Kt(e,t,n,r,i){var a=qt(e,t,r,i);try{return n.apply(r,i)}catch(e){throw a.error_=e,e}finally{Jt(a)}}function qt(e,t,n,r){var i=Wn()&&!!e,a=0;i&&(a=Date.now(),B({type:Yn,name:e,object:n,arguments:r?Array.from(r):l}));var o=L.trackingDerivation,s=!t||!o;An();var c=L.allowStateChanges;s&&(I(),c=Xt(!0));var u=hn(!0),d={runAsAction_:s,prevDerivation_:o,prevAllowStateChanges_:c,prevAllowStateReads_:u,notifySpy_:i,startTime_:a,actionId_:Ht++,parentActionId_:Vt};return Vt=d.actionId_,d}function Jt(e){Vt!==e.actionId_&&n(30),Vt=e.parentActionId_,e.error_!==void 0&&(L.suppressReactionErrors=!0),Zt(e.prevAllowStateChanges_),gn(e.prevAllowStateReads_),jn(),e.runAsAction_&&mn(e.prevDerivation_),e.notifySpy_&&qn({time:Date.now()-e.startTime_}),L.suppressReactionErrors=!1}function Yt(e,t){var n=Xt(e);try{return t()}finally{Zt(n)}}function Xt(e){var t=L.allowStateChanges;return L.allowStateChanges=e,t}function Zt(e){L.allowStateChanges=e}var Qt=`create`,$t=function(e){function t(t,n,r,i,a){var o;return r===void 0&&(r=`ObservableValue@`+h()),i===void 0&&(i=!0),a===void 0&&(a=Re.default),o=e.call(this,r)||this,o.enhancer=void 0,o.name_=void 0,o.equals=void 0,o.hasUnreportedChange_=!1,o.interceptors_=void 0,o.changeListeners_=void 0,o.value_=void 0,o.dehancer=void 0,o.enhancer=n,o.name_=r,o.equals=a,o.value_=n(t,void 0,r),i&&Wn()&&Gn({type:Qt,object:o,observableKind:`value`,debugObjectName:o.name_,newValue:``+o.value_?.toString()}),o}O(t,e);var n=t.prototype;return n.dehanceValue=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.set=function(e){var t=this.value_;if(e=this.prepareNewValue_(e),e!==L.UNCHANGED){var n=Wn();n&&B({type:Ei,object:this,observableKind:`value`,debugObjectName:this.name_,newValue:e,oldValue:t}),this.setNewValue_(e),n&&qn()}},n.prepareNewValue_=function(e){if(sn(this),gi(this)){var t=vi(this,{object:this,type:Ei,newValue:e});if(!t)return L.UNCHANGED;e=t.newValue}return e=this.enhancer(e,this.value_,this.name_),this.equals(this.value_,e)?L.UNCHANGED:e},n.setNewValue_=function(e){var t=this.value_;this.value_=e,this.reportChanged(),yi(this)&&xi(this,{type:Ei,object:this,newValue:e,oldValue:t})},n.get=function(){return this.reportObserved(),this.dehanceValue(this.value_)},n.intercept_=function(e){return _i(this,e)},n.observe_=function(e,t){return t&&e({observableKind:`value`,debugObjectName:this.name_,object:this,type:Ei,newValue:this.value_,oldValue:void 0}),bi(this,e)},n.raw=function(){return this.value_},n.toJSON=function(){return this.get()},n.toString=function(){return this.name_+`[`+this.value_+`]`},n.valueOf=function(){return oe(this.get())},n[Symbol.toPrimitive]=function(){return this.valueOf()},t}(je),N=te(`ObservableValue`,$t),en=function(){function e(e){this.dependenciesState_=P.NOT_TRACKING_,this.observing_=[],this.newObserving_=null,this.observers_=new Set,this.runId_=0,this.lastAccessedBy_=0,this.lowestObserverState_=P.UP_TO_DATE_,this.unboundDepsCount_=0,this.value_=new rn(null),this.name_=void 0,this.triggeredBy_=void 0,this.flags_=0,this.derivation=void 0,this.setter_=void 0,this.isTracing_=nn.NONE,this.scope_=void 0,this.equals_=void 0,this.requiresReaction_=void 0,this.keepAlive_=void 0,this.onBOL=void 0,this.onBUOL=void 0,e.get||n(31),this.derivation=e.get,this.name_=e.name||`ComputedValue@`+h(),e.set&&(this.setter_=Gt(this.name_+`-setter`,e.set)),this.equals_=e.equals||(e.compareStructural||e.struct?Re.structural:Re.default),this.scope_=e.context,this.requiresReaction_=e.requiresReaction,this.keepAlive_=!!e.keepAlive}var t=e.prototype;return t.onBecomeStale_=function(){Fn(this)},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.get=function(){if(this.isComputing&&n(32,this.name_,this.derivation),L.inBatch===0&&this.observers_.size===0&&!this.keepAlive_)on(this)&&(this.warnAboutUntrackedRead_(),An(),this.value_=this.computeValue_(!1),jn());else if(Mn(this),on(this)){var e=L.trackingContext;this.keepAlive_&&!e&&(L.trackingContext=this),this.trackAndCompute()&&Pn(this),L.trackingContext=e}var t=this.value_;if(an(t))throw t.cause;return t},t.set=function(e){if(this.setter_){this.isRunningSetter&&n(33,this.name_),this.isRunningSetter=!0;try{this.setter_.call(this.scope_,e)}finally{this.isRunningSetter=!1}}else n(34,this.name_)},t.trackAndCompute=function(){var e=this.value_,t=this.dependenciesState_===P.NOT_TRACKING_,n=this.computeValue_(!0),r=t||an(e)||an(n)||!this.equals_(e,n);return r&&(this.value_=n,Wn()&&Gn({observableKind:`computed`,debugObjectName:this.name_,object:this.scope_,type:`update`,oldValue:e,newValue:n})),r},t.computeValue_=function(e){this.isComputing=!0;var t=Xt(!1),n;if(e)n=ln(this,this.derivation,this.scope_);else if(L.disableErrorBoundaries===!0)n=this.derivation.call(this.scope_);else try{n=this.derivation.call(this.scope_)}catch(e){n=new rn(e)}return Zt(t),this.isComputing=!1,n},t.suspend_=function(){this.keepAlive_||(fn(this),this.value_=void 0,this.isTracing_!==nn.NONE&&console.log(`[mobx.trace] Computed value '`+this.name_+`' was suspended and it will recompute on the next access.`))},t.observe_=function(e,t){var n=this,r=!0,i=void 0;return lr(function(){var a=n.get();if(!r||t){var o=I();e({observableKind:`computed`,debugObjectName:n.name_,type:Ei,object:n,newValue:a,oldValue:i}),mn(o)}r=!1,i=a})},t.warnAboutUntrackedRead_=function(){this.isTracing_!==nn.NONE&&console.log(`[mobx.trace] Computed value '`+this.name_+`' is being read outside a reactive context. Doing a full recompute.`),(typeof this.requiresReaction_==`boolean`?this.requiresReaction_:L.computedRequiresReaction)&&console.warn(`[mobx] Computed value '`+this.name_+`' is being read outside a reactive context. Doing a full recompute.`)},t.toString=function(){return this.name_+`[`+this.derivation.toString()+`]`},t.valueOf=function(){return oe(this.get())},t[Symbol.toPrimitive]=function(){return this.valueOf()},pe(e,[{key:`isComputing`,get:function(){return ce(this.flags_,e.isComputingMask_)},set:function(t){this.flags_=le(this.flags_,e.isComputingMask_,t)}},{key:`isRunningSetter`,get:function(){return ce(this.flags_,e.isRunningSetterMask_)},set:function(t){this.flags_=le(this.flags_,e.isRunningSetterMask_,t)}},{key:`isBeingObserved`,get:function(){return ce(this.flags_,e.isBeingObservedMask_)},set:function(t){this.flags_=le(this.flags_,e.isBeingObservedMask_,t)}},{key:`isPendingUnobservation`,get:function(){return ce(this.flags_,e.isPendingUnobservationMask_)},set:function(t){this.flags_=le(this.flags_,e.isPendingUnobservationMask_,t)}},{key:`diffValue`,get:function(){return+!!ce(this.flags_,e.diffValueMask_)},set:function(t){this.flags_=le(this.flags_,e.diffValueMask_,t===1)}}])}();en.isComputingMask_=1,en.isRunningSetterMask_=2,en.isBeingObservedMask_=4,en.isPendingUnobservationMask_=8,en.diffValueMask_=16;var tn=te(`ComputedValue`,en),P;(function(e){e[e.NOT_TRACKING_=-1]=`NOT_TRACKING_`,e[e.UP_TO_DATE_=0]=`UP_TO_DATE_`,e[e.POSSIBLY_STALE_=1]=`POSSIBLY_STALE_`,e[e.STALE_=2]=`STALE_`})(P||={});var nn;(function(e){e[e.NONE=0]=`NONE`,e[e.LOG=1]=`LOG`,e[e.BREAK=2]=`BREAK`})(nn||={});var rn=function(e){this.cause=void 0,this.cause=e};function an(e){return e instanceof rn}function on(e){switch(e.dependenciesState_){case P.UP_TO_DATE_:return!1;case P.NOT_TRACKING_:case P.STALE_:return!0;case P.POSSIBLY_STALE_:for(var t=hn(!0),n=I(),r=e.observing_,i=r.length,a=0;a<i;a++){var o=r[a];if(tn(o)){if(L.disableErrorBoundaries)o.get();else try{o.get()}catch{return mn(n),gn(t),!0}if(e.dependenciesState_===P.STALE_)return mn(n),gn(t),!0}}return _n(e),mn(n),gn(t),!1}}function F(){return L.trackingDerivation!==null}function sn(e){var t=e.observers_.size>0;!L.allowStateChanges&&(t||L.enforceActions===`always`)&&console.warn(`[MobX] `+(L.enforceActions?`Since strict-mode is enabled, changing (observed) observable values without using an action is not allowed. Tried to modify: `:`Side effects like changing state are not allowed at this point. Are you trying to modify state from, for example, a computed value or the render function of a React component? You can wrap side effects in 'runInAction' (or decorate functions with 'action') if needed. Tried to modify: `)+e.name_)}function cn(e){!L.allowStateReads&&L.observableRequiresReaction&&console.warn(`[mobx] Observable '`+e.name_+`' being read outside a reactive context.`)}function ln(e,t,n){var r=hn(!0);_n(e),e.newObserving_=Array(e.runId_===0?100:e.observing_.length),e.unboundDepsCount_=0,e.runId_=++L.runId;var i=L.trackingDerivation;L.trackingDerivation=e,L.inBatch++;var a;if(L.disableErrorBoundaries===!0)a=t.call(n);else try{a=t.call(n)}catch(e){a=new rn(e)}return L.inBatch--,L.trackingDerivation=i,dn(e),un(e),gn(r),a}function un(e){e.observing_.length===0&&(typeof e.requiresObservable_==`boolean`?e.requiresObservable_:L.reactionRequiresObservable)&&console.warn(`[mobx] Derivation '`+e.name_+`' is created/updated without reading any observable value.`)}function dn(e){for(var t=e.observing_,n=e.observing_=e.newObserving_,r=P.UP_TO_DATE_,i=0,a=e.unboundDepsCount_,o=0;o<a;o++){var s=n[o];s.diffValue===0&&(s.diffValue=1,i!==o&&(n[i]=s),i++),s.dependenciesState_>r&&(r=s.dependenciesState_)}for(n.length=i,e.newObserving_=null,a=t.length;a--;){var c=t[a];c.diffValue===0&&On(c,e),c.diffValue=0}for(;i--;){var l=n[i];l.diffValue===1&&(l.diffValue=0,Dn(l,e))}r!==P.UP_TO_DATE_&&(e.dependenciesState_=r,e.onBecomeStale_())}function fn(e){var t=e.observing_;e.observing_=[];for(var n=t.length;n--;)On(t[n],e);e.dependenciesState_=P.NOT_TRACKING_}function pn(e){var t=I();try{return e()}finally{mn(t)}}function I(){var e=L.trackingDerivation;return L.trackingDerivation=null,e}function mn(e){L.trackingDerivation=e}function hn(e){var t=L.allowStateReads;return L.allowStateReads=e,t}function gn(e){L.allowStateReads=e}function _n(e){if(e.dependenciesState_!==P.UP_TO_DATE_){e.dependenciesState_=P.UP_TO_DATE_;for(var t=e.observing_,n=t.length;n--;)t[n].lowestObserverState_=P.UP_TO_DATE_}}var vn=[`mobxGuid`,`spyListeners`,`enforceActions`,`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`allowStateReads`,`disableErrorBoundaries`,`runId`,`UNCHANGED`,`useProxies`],yn=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},bn=!0,xn=!1,L=function(){var e=i();return e.__mobxInstanceCount>0&&!e.__mobxGlobals&&(bn=!1),e.__mobxGlobals&&e.__mobxGlobals.version!==new yn().version&&(bn=!1),bn?e.__mobxGlobals?(e.__mobxInstanceCount+=1,e.__mobxGlobals.UNCHANGED||(e.__mobxGlobals.UNCHANGED={}),e.__mobxGlobals):(e.__mobxInstanceCount=1,e.__mobxGlobals=new yn):(setTimeout(function(){xn||n(35)},1),new yn)}();function Sn(){if((L.pendingReactions.length||L.inBatch||L.isRunningReactions)&&n(36),xn=!0,bn){var e=i();--e.__mobxInstanceCount===0&&(e.__mobxGlobals=void 0),L=new yn}}function Cn(){return L}function wn(){var e=new yn;for(var t in e)vn.indexOf(t)===-1&&(L[t]=e[t]);L.allowStateChanges=!L.enforceActions}function Tn(e){return e.observers_&&e.observers_.size>0}function En(e){return e.observers_}function Dn(e,t){e.observers_.add(t),e.lowestObserverState_>t.dependenciesState_&&(e.lowestObserverState_=t.dependenciesState_)}function On(e,t){e.observers_.delete(t),e.observers_.size===0&&kn(e)}function kn(e){e.isPendingUnobservation===!1&&(e.isPendingUnobservation=!0,L.pendingUnobservations.push(e))}function An(){L.inBatch++}function jn(){if(--L.inBatch===0){Vn();for(var e=L.pendingUnobservations,t=0;t<e.length;t++){var n=e[t];n.isPendingUnobservation=!1,n.observers_.size===0&&(n.isBeingObserved&&(n.isBeingObserved=!1,n.onBUO()),n instanceof en&&n.suspend_())}L.pendingUnobservations=[]}}function Mn(e){cn(e);var t=L.trackingDerivation;return t===null?(e.observers_.size===0&&L.inBatch>0&&kn(e),!1):(t.runId_!==e.lastAccessedBy_&&(e.lastAccessedBy_=t.runId_,t.newObserving_[t.unboundDepsCount_++]=e,!e.isBeingObserved&&L.trackingContext&&(e.isBeingObserved=!0,e.onBO())),e.isBeingObserved)}function Nn(e){e.lowestObserverState_!==P.STALE_&&(e.lowestObserverState_=P.STALE_,e.observers_.forEach(function(t){t.dependenciesState_===P.UP_TO_DATE_&&(t.isTracing_!==nn.NONE&&R(t,e),t.onBecomeStale_()),t.dependenciesState_=P.STALE_}))}function Pn(e){e.lowestObserverState_!==P.STALE_&&(e.lowestObserverState_=P.STALE_,e.observers_.forEach(function(t){t.dependenciesState_===P.POSSIBLY_STALE_?(t.dependenciesState_=P.STALE_,t.isTracing_!==nn.NONE&&R(t,e)):t.dependenciesState_===P.UP_TO_DATE_&&(e.lowestObserverState_=P.UP_TO_DATE_)}))}function Fn(e){e.lowestObserverState_===P.UP_TO_DATE_&&(e.lowestObserverState_=P.POSSIBLY_STALE_,e.observers_.forEach(function(e){e.dependenciesState_===P.UP_TO_DATE_&&(e.dependenciesState_=P.POSSIBLY_STALE_,e.onBecomeStale_())}))}function R(e,t){if(console.log(`[mobx.trace] '`+e.name_+`' is invalidated due to a change in: '`+t.name_+`'`),e.isTracing_===nn.BREAK){var n=[];In(wr(e),n,1),Function(`debugger;
64
+ '`+a+`' can only be used on properties with a generator function value.`))}function ot(e,t,n,r,i,a){a===void 0&&(a=L.safeDescriptors),at(e,t,n,r);var o=r.value;return Lr(o)||(o=Pr(o)),i&&(o=o.bind(e.proxy_??e.target_),o.isMobXFlow=!0),{value:o,configurable:a?e.isPlainObject_:!0,enumerable:!1,writable:!a}}function st(e,t){return{annotationType_:e,options_:t,make_:ct,extend_:lt,decorate_20223_:ut}}function ct(e,t,n){return this.extend_(e,t,n,!1)===null?0:1}function lt(e,t,n,r){return dt(e,this,t,n),e.defineComputedProperty_(t,he({},this.options_,{get:n.get,set:n.set}),r)}function ut(e,t){Ae(t,[`getter`]);var n=this,r=t.name,i=t.addInitializer;return i(function(){var t=Zi(this)[k],i=he({},n.options_,{get:e,context:this});i.name||=t.name_+`.`+r.toString(),t.values_.set(r,new en(i))}),function(){return this[k].getObservablePropValue_(r)}}function dt(e,t,r,i){var a=t.annotationType_;i.get||n(`Cannot apply '`+a+`' to '`+e.name_+`.`+r.toString()+`':`+(`
65
+ '`+a+`' can only be used on getter(+setter) properties.`))}function ft(e,t){return{annotationType_:e,options_:t,make_:pt,extend_:mt,decorate_20223_:ht}}function pt(e,t,n){return this.extend_(e,t,n,!1)===null?0:1}function mt(e,t,n,r){return gt(e,this,t,n),e.defineObservableProperty_(t,n.value,this.options_?.enhancer??ze,r)}function ht(e,t){if(t.kind===`field`)throw n("Please use `@observable accessor "+String(t.name)+"` instead of `@observable "+String(t.name)+"`");Ae(t,[`accessor`]);var r=this,i=t.kind,a=t.name,o=new WeakSet;function s(e,t){var n=Zi(e)[k],i=new $t(t,r.options_?.enhancer??ze,n.name_+`.`+a.toString(),!1);n.values_.set(a,i),o.add(e)}if(i==`accessor`)return{get:function(){return o.has(this)||s(this,e.get.call(this)),this[k].getObservablePropValue_(a)},set:function(e){return o.has(this)||s(this,e),this[k].setObservablePropValue_(a,e)},init:function(e){return o.has(this)||s(this,e),e}}}function gt(e,t,r,i){var a=t.annotationType_;`value`in i||n(`Cannot apply '`+a+`' to '`+e.name_+`.`+r.toString()+`':`+(`
66
+ '`+a+`' cannot be used on getter/setter properties`))}var _t=`true`,vt=yt();function yt(e){return{annotationType_:_t,options_:e,make_:bt,extend_:xt,decorate_20223_:St}}function bt(e,t,n,r){var i;if(n.get)return Bt.make_(e,t,n,r);if(n.set){var a=cr(n.set)?n.set:Gt(t.toString(),n.set);return r===e.target_?e.defineProperty_(t,{configurable:L.safeDescriptors?e.isPlainObject_:!0,set:a})===null?0:2:(s(r,t,{configurable:!0,set:a}),2)}if(r!==e.target_&&typeof n.value==`function`){var o;if(S(n.value)){var c;return((c=this.options_)!=null&&c.autoBind?Pr.bound:Pr).make_(e,t,n,r)}return((o=this.options_)!=null&&o.autoBind?or.bound:or).make_(e,t,n,r)}var l=this.options_?.deep===!1?j.ref:j;return typeof n.value==`function`&&(i=this.options_)!=null&&i.autoBind&&(n.value=n.value.bind(e.proxy_??e.target_)),l.make_(e,t,n,r)}function xt(e,t,n,r){var i;return n.get?Bt.extend_(e,t,n,r):n.set?e.defineProperty_(t,{configurable:L.safeDescriptors?e.isPlainObject_:!0,set:Gt(t.toString(),n.set)},r):(typeof n.value==`function`&&(i=this.options_)!=null&&i.autoBind&&(n.value=n.value.bind(e.proxy_??e.target_)),(this.options_?.deep===!1?j.ref:j).extend_(e,t,n,r))}function St(e,t){n(`'`+this.annotationType_+`' cannot be used as a decorator`)}var Ct=`observable`,wt=`observable.ref`,Tt=`observable.shallow`,Et=`observable.struct`,Dt={deep:!0,name:void 0,defaultDecorator:void 0,proxy:!0};Object.freeze(Dt);function Ot(e){return e||Dt}var kt=ft(Ct),At=ft(wt,{enhancer:Ve}),jt=ft(Tt,{enhancer:Be}),Mt=ft(Et,{enhancer:He}),Nt=Te(kt);function Pt(e){return e.deep===!0?ze:e.deep===!1?Ve:A(e.defaultDecorator)}function Ft(e){return e?e.defaultDecorator??yt(e):void 0}function A(e){return e?e.options_?.enhancer??ze:ze}function It(e,t,n){if(ke(t))return kt.decorate_20223_(e,t);if(y(t)){Ee(e,t,kt);return}return Gr(e)?e:x(e)?j.object(e,t,n):Array.isArray(e)?j.array(e,t):ne(e)?j.map(e,t):w(e)?j.set(e,t):typeof e==`object`&&e?e:j.box(e,t)}a(It,Nt);var j=a(It,{box:function(e,t){var n=Ot(t);return new $t(e,Pt(n),n.name,!0,n.equals)},array:function(e,t){var n=Ot(t);return(L.useProxies===!1||n.proxy===!1?fa:Ai)(e,Pt(n),n.name)},map:function(e,t){var n=Ot(t);return new Bi(e,Pt(n),n.name)},set:function(e,t){var n=Ot(t);return new Gi(e,Pt(n),n.name)},object:function(e,t,n){return ga(function(){return Cr(L.useProxies===!1||n?.proxy===!1?Zi({},n):hi({},n),e,t)})},ref:Te(At),shallow:Te(jt),deep:Nt,struct:Te(Mt)}),M=`computed`,Lt=`computed.struct`,Rt=st(M),zt=st(Lt,{equals:Re.structural}),Bt=function(e,t){if(ke(t))return Rt.decorate_20223_(e,t);if(y(t))return Ee(e,t,Rt);if(x(e))return Te(st(M,e));v(e)||n("First argument to `computed` should be an expression."),v(t)&&n("A setter as second argument is no longer supported, use `{ set: fn }` option instead");var r=x(t)?t:{};return r.get=e,r.name||=e.name||``,new en(r)};Object.assign(Bt,Rt),Bt.struct=Te(zt);var Vt=0,Ht=1,Ut=o(function(){},`name`)?.configurable??!1,Wt={value:`action`,configurable:!0,writable:!1,enumerable:!1};function Gt(e,t,r,i){r===void 0&&(r=!1),v(t)||n("`action` can only be invoked on functions"),(typeof e!=`string`||!e)&&n(`actions should have valid names, got: '`+e+`'`);function a(){return Kt(e,r,t,i||this,arguments)}return a.isMobxAction=!0,a.toString=function(){return t.toString()},Ut&&(Wt.value=e,s(a,`name`,Wt)),a}function Kt(e,t,n,r,i){var a=qt(e,t,r,i);try{return n.apply(r,i)}catch(e){throw a.error_=e,e}finally{Jt(a)}}function qt(e,t,n,r){var i=Wn()&&!!e,a=0;i&&(a=Date.now(),B({type:Yn,name:e,object:n,arguments:r?Array.from(r):l}));var o=L.trackingDerivation,s=!t||!o;An();var c=L.allowStateChanges;s&&(I(),c=Xt(!0));var u=hn(!0),d={runAsAction_:s,prevDerivation_:o,prevAllowStateChanges_:c,prevAllowStateReads_:u,notifySpy_:i,startTime_:a,actionId_:Ht++,parentActionId_:Vt};return Vt=d.actionId_,d}function Jt(e){Vt!==e.actionId_&&n(30),Vt=e.parentActionId_,e.error_!==void 0&&(L.suppressReactionErrors=!0),Zt(e.prevAllowStateChanges_),gn(e.prevAllowStateReads_),jn(),e.runAsAction_&&mn(e.prevDerivation_),e.notifySpy_&&qn({time:Date.now()-e.startTime_}),L.suppressReactionErrors=!1}function Yt(e,t){var n=Xt(e);try{return t()}finally{Zt(n)}}function Xt(e){var t=L.allowStateChanges;return L.allowStateChanges=e,t}function Zt(e){L.allowStateChanges=e}var Qt=`create`,$t=function(e){function t(t,n,r,i,a){var o;return r===void 0&&(r=`ObservableValue@`+h()),i===void 0&&(i=!0),a===void 0&&(a=Re.default),o=e.call(this,r)||this,o.enhancer=void 0,o.name_=void 0,o.equals=void 0,o.hasUnreportedChange_=!1,o.interceptors_=void 0,o.changeListeners_=void 0,o.value_=void 0,o.dehancer=void 0,o.enhancer=n,o.name_=r,o.equals=a,o.value_=n(t,void 0,r),i&&Wn()&&Gn({type:Qt,object:o,observableKind:`value`,debugObjectName:o.name_,newValue:``+o.value_?.toString()}),o}O(t,e);var n=t.prototype;return n.dehanceValue=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.set=function(e){var t=this.value_;if(e=this.prepareNewValue_(e),e!==L.UNCHANGED){var n=Wn();n&&B({type:Ei,object:this,observableKind:`value`,debugObjectName:this.name_,newValue:e,oldValue:t}),this.setNewValue_(e),n&&qn()}},n.prepareNewValue_=function(e){if(sn(this),gi(this)){var t=vi(this,{object:this,type:Ei,newValue:e});if(!t)return L.UNCHANGED;e=t.newValue}return e=this.enhancer(e,this.value_,this.name_),this.equals(this.value_,e)?L.UNCHANGED:e},n.setNewValue_=function(e){var t=this.value_;this.value_=e,this.reportChanged(),yi(this)&&xi(this,{type:Ei,object:this,newValue:e,oldValue:t})},n.get=function(){return this.reportObserved(),this.dehanceValue(this.value_)},n.intercept_=function(e){return _i(this,e)},n.observe_=function(e,t){return t&&e({observableKind:`value`,debugObjectName:this.name_,object:this,type:Ei,newValue:this.value_,oldValue:void 0}),bi(this,e)},n.raw=function(){return this.value_},n.toJSON=function(){return this.get()},n.toString=function(){return this.name_+`[`+this.value_+`]`},n.valueOf=function(){return oe(this.get())},n[Symbol.toPrimitive]=function(){return this.valueOf()},t}(je),N=te(`ObservableValue`,$t),en=function(){function e(e){this.dependenciesState_=P.NOT_TRACKING_,this.observing_=[],this.newObserving_=null,this.observers_=new Set,this.runId_=0,this.lastAccessedBy_=0,this.lowestObserverState_=P.UP_TO_DATE_,this.unboundDepsCount_=0,this.value_=new rn(null),this.name_=void 0,this.triggeredBy_=void 0,this.flags_=0,this.derivation=void 0,this.setter_=void 0,this.isTracing_=nn.NONE,this.scope_=void 0,this.equals_=void 0,this.requiresReaction_=void 0,this.keepAlive_=void 0,this.onBOL=void 0,this.onBUOL=void 0,e.get||n(31),this.derivation=e.get,this.name_=e.name||`ComputedValue@`+h(),e.set&&(this.setter_=Gt(this.name_+`-setter`,e.set)),this.equals_=e.equals||(e.compareStructural||e.struct?Re.structural:Re.default),this.scope_=e.context,this.requiresReaction_=e.requiresReaction,this.keepAlive_=!!e.keepAlive}var t=e.prototype;return t.onBecomeStale_=function(){Fn(this)},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.get=function(){if(this.isComputing&&n(32,this.name_,this.derivation),L.inBatch===0&&this.observers_.size===0&&!this.keepAlive_)on(this)&&(this.warnAboutUntrackedRead_(),An(),this.value_=this.computeValue_(!1),jn());else if(Mn(this),on(this)){var e=L.trackingContext;this.keepAlive_&&!e&&(L.trackingContext=this),this.trackAndCompute()&&Pn(this),L.trackingContext=e}var t=this.value_;if(an(t))throw t.cause;return t},t.set=function(e){if(this.setter_){this.isRunningSetter&&n(33,this.name_),this.isRunningSetter=!0;try{this.setter_.call(this.scope_,e)}finally{this.isRunningSetter=!1}}else n(34,this.name_)},t.trackAndCompute=function(){var e=this.value_,t=this.dependenciesState_===P.NOT_TRACKING_,n=this.computeValue_(!0),r=t||an(e)||an(n)||!this.equals_(e,n);return r&&(this.value_=n,Wn()&&Gn({observableKind:`computed`,debugObjectName:this.name_,object:this.scope_,type:`update`,oldValue:e,newValue:n})),r},t.computeValue_=function(e){this.isComputing=!0;var t=Xt(!1),n;if(e)n=ln(this,this.derivation,this.scope_);else if(L.disableErrorBoundaries===!0)n=this.derivation.call(this.scope_);else try{n=this.derivation.call(this.scope_)}catch(e){n=new rn(e)}return Zt(t),this.isComputing=!1,n},t.suspend_=function(){this.keepAlive_||(fn(this),this.value_=void 0,this.isTracing_!==nn.NONE&&console.log(`[mobx.trace] Computed value '`+this.name_+`' was suspended and it will recompute on the next access.`))},t.observe_=function(e,t){var n=this,r=!0,i=void 0;return lr(function(){var a=n.get();if(!r||t){var o=I();e({observableKind:`computed`,debugObjectName:n.name_,type:Ei,object:n,newValue:a,oldValue:i}),mn(o)}r=!1,i=a})},t.warnAboutUntrackedRead_=function(){this.isTracing_!==nn.NONE&&console.log(`[mobx.trace] Computed value '`+this.name_+`' is being read outside a reactive context. Doing a full recompute.`),(typeof this.requiresReaction_==`boolean`?this.requiresReaction_:L.computedRequiresReaction)&&console.warn(`[mobx] Computed value '`+this.name_+`' is being read outside a reactive context. Doing a full recompute.`)},t.toString=function(){return this.name_+`[`+this.derivation.toString()+`]`},t.valueOf=function(){return oe(this.get())},t[Symbol.toPrimitive]=function(){return this.valueOf()},pe(e,[{key:`isComputing`,get:function(){return ce(this.flags_,e.isComputingMask_)},set:function(t){this.flags_=le(this.flags_,e.isComputingMask_,t)}},{key:`isRunningSetter`,get:function(){return ce(this.flags_,e.isRunningSetterMask_)},set:function(t){this.flags_=le(this.flags_,e.isRunningSetterMask_,t)}},{key:`isBeingObserved`,get:function(){return ce(this.flags_,e.isBeingObservedMask_)},set:function(t){this.flags_=le(this.flags_,e.isBeingObservedMask_,t)}},{key:`isPendingUnobservation`,get:function(){return ce(this.flags_,e.isPendingUnobservationMask_)},set:function(t){this.flags_=le(this.flags_,e.isPendingUnobservationMask_,t)}},{key:`diffValue`,get:function(){return+!!ce(this.flags_,e.diffValueMask_)},set:function(t){this.flags_=le(this.flags_,e.diffValueMask_,t===1)}}])}();en.isComputingMask_=1,en.isRunningSetterMask_=2,en.isBeingObservedMask_=4,en.isPendingUnobservationMask_=8,en.diffValueMask_=16;var tn=te(`ComputedValue`,en),P;(function(e){e[e.NOT_TRACKING_=-1]=`NOT_TRACKING_`,e[e.UP_TO_DATE_=0]=`UP_TO_DATE_`,e[e.POSSIBLY_STALE_=1]=`POSSIBLY_STALE_`,e[e.STALE_=2]=`STALE_`})(P||={});var nn;(function(e){e[e.NONE=0]=`NONE`,e[e.LOG=1]=`LOG`,e[e.BREAK=2]=`BREAK`})(nn||={});var rn=function(e){this.cause=void 0,this.cause=e};function an(e){return e instanceof rn}function on(e){switch(e.dependenciesState_){case P.UP_TO_DATE_:return!1;case P.NOT_TRACKING_:case P.STALE_:return!0;case P.POSSIBLY_STALE_:for(var t=hn(!0),n=I(),r=e.observing_,i=r.length,a=0;a<i;a++){var o=r[a];if(tn(o)){if(L.disableErrorBoundaries)o.get();else try{o.get()}catch{return mn(n),gn(t),!0}if(e.dependenciesState_===P.STALE_)return mn(n),gn(t),!0}}return _n(e),mn(n),gn(t),!1}}function F(){return L.trackingDerivation!==null}function sn(e){var t=e.observers_.size>0;!L.allowStateChanges&&(t||L.enforceActions===`always`)&&console.warn(`[MobX] `+(L.enforceActions?`Since strict-mode is enabled, changing (observed) observable values without using an action is not allowed. Tried to modify: `:`Side effects like changing state are not allowed at this point. Are you trying to modify state from, for example, a computed value or the render function of a React component? You can wrap side effects in 'runInAction' (or decorate functions with 'action') if needed. Tried to modify: `)+e.name_)}function cn(e){!L.allowStateReads&&L.observableRequiresReaction&&console.warn(`[mobx] Observable '`+e.name_+`' being read outside a reactive context.`)}function ln(e,t,n){var r=hn(!0);_n(e),e.newObserving_=Array(e.runId_===0?100:e.observing_.length),e.unboundDepsCount_=0,e.runId_=++L.runId;var i=L.trackingDerivation;L.trackingDerivation=e,L.inBatch++;var a;if(L.disableErrorBoundaries===!0)a=t.call(n);else try{a=t.call(n)}catch(e){a=new rn(e)}return L.inBatch--,L.trackingDerivation=i,dn(e),un(e),gn(r),a}function un(e){e.observing_.length===0&&(typeof e.requiresObservable_==`boolean`?e.requiresObservable_:L.reactionRequiresObservable)&&console.warn(`[mobx] Derivation '`+e.name_+`' is created/updated without reading any observable value.`)}function dn(e){for(var t=e.observing_,n=e.observing_=e.newObserving_,r=P.UP_TO_DATE_,i=0,a=e.unboundDepsCount_,o=0;o<a;o++){var s=n[o];s.diffValue===0&&(s.diffValue=1,i!==o&&(n[i]=s),i++),s.dependenciesState_>r&&(r=s.dependenciesState_)}for(n.length=i,e.newObserving_=null,a=t.length;a--;){var c=t[a];c.diffValue===0&&On(c,e),c.diffValue=0}for(;i--;){var l=n[i];l.diffValue===1&&(l.diffValue=0,Dn(l,e))}r!==P.UP_TO_DATE_&&(e.dependenciesState_=r,e.onBecomeStale_())}function fn(e){var t=e.observing_;e.observing_=[];for(var n=t.length;n--;)On(t[n],e);e.dependenciesState_=P.NOT_TRACKING_}function pn(e){var t=I();try{return e()}finally{mn(t)}}function I(){var e=L.trackingDerivation;return L.trackingDerivation=null,e}function mn(e){L.trackingDerivation=e}function hn(e){var t=L.allowStateReads;return L.allowStateReads=e,t}function gn(e){L.allowStateReads=e}function _n(e){if(e.dependenciesState_!==P.UP_TO_DATE_){e.dependenciesState_=P.UP_TO_DATE_;for(var t=e.observing_,n=t.length;n--;)t[n].lowestObserverState_=P.UP_TO_DATE_}}var vn=[`mobxGuid`,`spyListeners`,`enforceActions`,`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`allowStateReads`,`disableErrorBoundaries`,`runId`,`UNCHANGED`,`useProxies`],yn=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},bn=!0,xn=!1,L=function(){var e=i();return e.__mobxInstanceCount>0&&!e.__mobxGlobals&&(bn=!1),e.__mobxGlobals&&e.__mobxGlobals.version!==new yn().version&&(bn=!1),bn?e.__mobxGlobals?(e.__mobxInstanceCount+=1,e.__mobxGlobals.UNCHANGED||(e.__mobxGlobals.UNCHANGED={}),e.__mobxGlobals):(e.__mobxInstanceCount=1,e.__mobxGlobals=new yn):(setTimeout(function(){xn||n(35)},1),new yn)}();function Sn(){if((L.pendingReactions.length||L.inBatch||L.isRunningReactions)&&n(36),xn=!0,bn){var e=i();--e.__mobxInstanceCount===0&&(e.__mobxGlobals=void 0),L=new yn}}function Cn(){return L}function wn(){var e=new yn;for(var t in e)vn.indexOf(t)===-1&&(L[t]=e[t]);L.allowStateChanges=!L.enforceActions}function Tn(e){return e.observers_&&e.observers_.size>0}function En(e){return e.observers_}function Dn(e,t){e.observers_.add(t),e.lowestObserverState_>t.dependenciesState_&&(e.lowestObserverState_=t.dependenciesState_)}function On(e,t){e.observers_.delete(t),e.observers_.size===0&&kn(e)}function kn(e){e.isPendingUnobservation===!1&&(e.isPendingUnobservation=!0,L.pendingUnobservations.push(e))}function An(){L.inBatch++}function jn(){if(--L.inBatch===0){Vn();for(var e=L.pendingUnobservations,t=0;t<e.length;t++){var n=e[t];n.isPendingUnobservation=!1,n.observers_.size===0&&(n.isBeingObserved&&(n.isBeingObserved=!1,n.onBUO()),n instanceof en&&n.suspend_())}L.pendingUnobservations=[]}}function Mn(e){cn(e);var t=L.trackingDerivation;return t===null?(e.observers_.size===0&&L.inBatch>0&&kn(e),!1):(t.runId_!==e.lastAccessedBy_&&(e.lastAccessedBy_=t.runId_,t.newObserving_[t.unboundDepsCount_++]=e,!e.isBeingObserved&&L.trackingContext&&(e.isBeingObserved=!0,e.onBO())),e.isBeingObserved)}function Nn(e){e.lowestObserverState_!==P.STALE_&&(e.lowestObserverState_=P.STALE_,e.observers_.forEach(function(t){t.dependenciesState_===P.UP_TO_DATE_&&(t.isTracing_!==nn.NONE&&R(t,e),t.onBecomeStale_()),t.dependenciesState_=P.STALE_}))}function Pn(e){e.lowestObserverState_!==P.STALE_&&(e.lowestObserverState_=P.STALE_,e.observers_.forEach(function(t){t.dependenciesState_===P.POSSIBLY_STALE_?(t.dependenciesState_=P.STALE_,t.isTracing_!==nn.NONE&&R(t,e)):t.dependenciesState_===P.UP_TO_DATE_&&(e.lowestObserverState_=P.UP_TO_DATE_)}))}function Fn(e){e.lowestObserverState_===P.UP_TO_DATE_&&(e.lowestObserverState_=P.POSSIBLY_STALE_,e.observers_.forEach(function(e){e.dependenciesState_===P.UP_TO_DATE_&&(e.dependenciesState_=P.POSSIBLY_STALE_,e.onBecomeStale_())}))}function R(e,t){if(console.log(`[mobx.trace] '`+e.name_+`' is invalidated due to a change in: '`+t.name_+`'`),e.isTracing_===nn.BREAK){var n=[];In(wr(e),n,1),Function(`debugger;
67
67
  /*
68
68
  Tracing '`+e.name_+`'
69
69
 
@@ -78,16 +78,16 @@ The dependencies for this derivation are:
78
78
  `+n.join(`
79
79
  `)+`
80
80
  */
81
- `)()}}function In(e,t,n){if(t.length>=1e3){t.push(`(and many more)`);return}t.push(``+` `.repeat(n-1)+e.name),e.dependencies&&e.dependencies.forEach(function(e){return In(e,t,n+1)})}var Ln=function(){function e(e,t,n,r){e===void 0&&(e=`Reaction@`+h()),this.name_=void 0,this.onInvalidate_=void 0,this.errorHandler_=void 0,this.requiresObservable_=void 0,this.observing_=[],this.newObserving_=[],this.dependenciesState_=P.NOT_TRACKING_,this.runId_=0,this.unboundDepsCount_=0,this.flags_=0,this.isTracing_=nn.NONE,this.name_=e,this.onInvalidate_=t,this.errorHandler_=n,this.requiresObservable_=r}var t=e.prototype;return t.onBecomeStale_=function(){this.schedule_()},t.schedule_=function(){this.isScheduled||(this.isScheduled=!0,L.pendingReactions.push(this),Vn())},t.runReaction_=function(){if(!this.isDisposed){An(),this.isScheduled=!1;var e=L.trackingContext;if(L.trackingContext=this,on(this)){this.isTrackPending=!0;try{this.onInvalidate_(),this.isTrackPending&&Wn()&&Gn({name:this.name_,type:`scheduled-reaction`})}catch(e){this.reportExceptionInDerivation_(e)}}L.trackingContext=e,jn()}},t.track=function(e){if(!this.isDisposed){An();var t=Wn(),n;t&&(n=Date.now(),B({name:this.name_,type:`reaction`})),this.isRunning=!0;var r=L.trackingContext;L.trackingContext=this;var i=ln(this,e,void 0);L.trackingContext=r,this.isRunning=!1,this.isTrackPending=!1,this.isDisposed&&fn(this),an(i)&&this.reportExceptionInDerivation_(i.cause),t&&qn({time:Date.now()-n}),jn()}},t.reportExceptionInDerivation_=function(e){var t=this;if(this.errorHandler_){this.errorHandler_(e,this);return}if(L.disableErrorBoundaries)throw e;var n=`[mobx] Encountered an uncaught exception that was thrown by a reaction or observer component, in: '`+this+`'`;L.suppressReactionErrors?console.warn(`[mobx] (error in reaction '`+this.name_+`' suppressed, fix error of causing action below)`):console.error(n,e),Wn()&&Gn({type:`error`,name:this.name_,message:n,error:``+e}),L.globalReactionErrorHandlers.forEach(function(n){return n(e,t)})},t.dispose=function(){this.isDisposed||(this.isDisposed=!0,this.isRunning||(An(),fn(this),jn()))},t.getDisposer_=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[k]=this,`dispose`in Symbol&&typeof Symbol.dispose==`symbol`&&(n[Symbol.dispose]=n),n},t.toString=function(){return`Reaction[`+this.name_+`]`},t.trace=function(e){e===void 0&&(e=!1),si(this,e)},pe(e,[{key:`isDisposed`,get:function(){return ce(this.flags_,e.isDisposedMask_)},set:function(t){this.flags_=le(this.flags_,e.isDisposedMask_,t)}},{key:`isScheduled`,get:function(){return ce(this.flags_,e.isScheduledMask_)},set:function(t){this.flags_=le(this.flags_,e.isScheduledMask_,t)}},{key:`isTrackPending`,get:function(){return ce(this.flags_,e.isTrackPendingMask_)},set:function(t){this.flags_=le(this.flags_,e.isTrackPendingMask_,t)}},{key:`isRunning`,get:function(){return ce(this.flags_,e.isRunningMask_)},set:function(t){this.flags_=le(this.flags_,e.isRunningMask_,t)}},{key:`diffValue`,get:function(){return+!!ce(this.flags_,e.diffValueMask_)},set:function(t){this.flags_=le(this.flags_,e.diffValueMask_,t===1)}}])}();Ln.isDisposedMask_=1,Ln.isScheduledMask_=2,Ln.isTrackPendingMask_=4,Ln.isRunningMask_=8,Ln.diffValueMask_=16;function Rn(e){return L.globalReactionErrorHandlers.push(e),function(){var t=L.globalReactionErrorHandlers.indexOf(e);t>=0&&L.globalReactionErrorHandlers.splice(t,1)}}var zn=100,Bn=function(e){return e()};function Vn(){L.inBatch>0||L.isRunningReactions||Bn(Hn)}function Hn(){L.isRunningReactions=!0;for(var e=L.pendingReactions,t=0;e.length>0;){++t===zn&&(console.error(`Reaction doesn't converge to a stable state after `+zn+` iterations.`+(` Probably there is a cycle in the reactive function: `+e[0])),e.splice(0));for(var n=e.splice(0),r=0,i=n.length;r<i;r++)n[r].runReaction_()}L.isRunningReactions=!1}var z=te(`Reaction`,Ln);function Un(e){var t=Bn;Bn=function(n){return e(function(){return t(n)})}}function Wn(){return!!L.spyListeners.length}function Gn(e){if(L.spyListeners.length)for(var t=L.spyListeners,n=0,r=t.length;n<r;n++)t[n](e)}function B(e){Gn(he({},e,{spyReportStart:!0}))}var Kn={type:`report-end`,spyReportEnd:!0};function qn(e){Gn(e?he({},e,{type:`report-end`,spyReportEnd:!0}):Kn)}function Jn(e){return L.spyListeners.push(e),g(function(){L.spyListeners=L.spyListeners.filter(function(t){return t!==e})})}var Yn=`action`,Xn=`action.bound`,Zn=`autoAction`,Qn=`autoAction.bound`,$n=`<unnamed action>`,er=Ye(Yn),tr=Ye(Xn,{bound:!0}),nr=Ye(Zn,{autoAction:!0}),rr=Ye(Qn,{autoAction:!0,bound:!0});function ir(e){return function(t,r){if(v(t))return Gt(t.name||$n,t,e);if(v(r))return Gt(t,r,e);if(ke(r))return(e?nr:er).decorate_20223_(t,r);if(y(r))return Ee(t,r,e?nr:er);if(y(t))return Te(Ye(e?Zn:Yn,{name:t,autoAction:e}));n("Invalid arguments for `action`")}}var ar=ir(!1);Object.assign(ar,er);var or=ir(!0);Object.assign(or,nr),ar.bound=Te(tr),or.bound=Te(rr);function sr(e){return Kt(e.name||$n,!1,e,this,void 0)}function cr(e){return v(e)&&e.isMobxAction===!0}function lr(e,t){var r;t===void 0&&(t=u),v(e)||n(`Autorun expects a function as first argument`),cr(e)&&n(`Autorun does not accept actions since actions are untrackable`);var i=t?.name??(e.name||`Autorun@`+h()),a=!t.scheduler&&!t.delay,o;if(a)o=new Ln(i,function(){this.track(l)},t.onError,t.requiresObservable);else{var s=dr(t),c=!1;o=new Ln(i,function(){c||(c=!0,s(function(){c=!1,o.isDisposed||o.track(l)}))},t.onError,t.requiresObservable)}function l(){e(o)}return(r=t)!=null&&(r=r.signal)!=null&&r.aborted||o.schedule_(),o.getDisposer_(t?.signal)}var ur=function(e){return e()};function dr(e){return e.scheduler?e.scheduler:e.delay?function(t){return setTimeout(t,e.delay)}:ur}function fr(e,t,r){var i;r===void 0&&(r=u),(!v(e)||!v(t))&&n(`First and second argument to reaction should be functions`),x(r)||n(`Third argument of reactions should be an object`);var a=r.name??`Reaction@`+h(),o=ar(a,r.onError?pr(r.onError,t):t),s=!r.scheduler&&!r.delay,c=dr(r),l=!0,d=!1,f,p=r.compareStructural?Re.structural:r.equals||Re.default,m=new Ln(a,function(){l||s?g():d||(d=!0,c(g))},r.onError,r.requiresObservable);function g(){if(d=!1,!m.isDisposed){var t=!1,n=f;m.track(function(){var n=Yt(!1,function(){return e(m)});t=l||!p(f,n),f=n}),(l&&r.fireImmediately||!l&&t)&&o(f,n,m),l=!1}}return(i=r)!=null&&(i=i.signal)!=null&&i.aborted||m.schedule_(),m.getDisposer_(r?.signal)}function pr(e,t){return function(){try{return t.apply(this,arguments)}catch(t){e.call(this,t)}}}var mr=`onBO`,hr=`onBUO`;function gr(e,t,n){return vr(mr,e,t,n)}function _r(e,t,n){return vr(hr,e,t,n)}function vr(e,t,n,r){var i=typeof r==`function`?fa(t,n):fa(t),a=v(r)?r:n,o=e+`L`;return i[o]?i[o].add(a):i[o]=new Set([a]),function(){var e=i[o];e&&(e.delete(a),e.size===0&&delete i[o])}}var yr=`never`,br=`always`,xr=`observed`;function Sr(e){e.isolateGlobalState===!0&&Sn();var t=e.useProxies,n=e.enforceActions;if(t!==void 0&&(L.useProxies=t===br?!0:t===yr?!1:typeof Proxy<`u`),t===`ifavailable`&&(L.verifyProxies=!0),n!==void 0){var r=n===br?br:n===xr;L.enforceActions=r,L.allowStateChanges=!(r===!0||r===br)}[`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`disableErrorBoundaries`,`safeDescriptors`].forEach(function(t){t in e&&(L[t]=!!e[t])}),L.allowStateReads=!L.observableRequiresReaction,L.disableErrorBoundaries===!0&&console.warn("WARNING: Debug feature only. MobX will NOT recover from errors when `disableErrorBoundaries` is enabled."),e.reactionScheduler&&Un(e.reactionScheduler)}function Cr(e,t,r,i){arguments.length>4&&n(`'extendObservable' expected 2-4 arguments`),typeof e!=`object`&&n(`'extendObservable' expects an object as first argument`),Bi(e)&&n(`'extendObservable' should not be used on maps, use map.merge instead`),x(t)||n(`'extendObservable' only accepts plain objects as second argument`),(Gr(t)||Gr(r))&&n(`Extending an object with another observable (object) is not supported`);var a=se(t);return ha(function(){var t=Xi(e,i)[k];E(a).forEach(function(e){t.extend_(e,a[e],r&&e in r?r[e]:!0)})}),e}function wr(e,t){return Tr(fa(e,t))}function Tr(e){var t={name:e.name_};return e.observing_&&e.observing_.length>0&&(t.dependencies=Or(e.observing_).map(Tr)),t}function Er(e,t){return Dr(fa(e,t))}function Dr(e){var t={name:e.name_};return Tn(e)&&(t.observers=Array.from(En(e)).map(Dr)),t}function Or(e){return Array.from(new Set(e))}var kr=0,Ar=function(e){function t(){var n=e.call(this,`FLOW_CANCELLED`)||this;return Object.setPrototypeOf(n,(this instanceof t?this.constructor:void 0).prototype),n.name=`FlowCancellationError`,n}O(t,e);var n=t.prototype;return n.toString=function(){return`Error: `+this.message},t}(Ce(Error));function jr(e){return e instanceof Ar}var Mr=tt(`flow`),Nr=tt(`flow.bound`,{bound:!0}),Pr=Object.assign(function(e,t){if(ke(t))return Mr.decorate_20223_(e,t);if(y(t))return Ee(e,t,Mr);arguments.length!==1&&n(`Flow expects single argument with generator function`);var r=e,i=r.name||`<unnamed flow>`,a=function(){var e=this,t=arguments,n=++kr,a=ar(i+` - runid: `+n+` - init`,r).apply(e,t),o,s=void 0,c=new Promise(function(e,t){var r=0;o=t;function c(e){s=void 0;var o;try{o=ar(i+` - runid: `+n+` - yield `+ r++,a.next).call(a,e)}catch(e){return t(e)}u(o)}function l(e){s=void 0;var o;try{o=ar(i+` - runid: `+n+` - yield `+ r++,a.throw).call(a,e)}catch(e){return t(e)}u(o)}function u(n){if(v(n?.then)){n.then(u,t);return}return n.done?e(n.value):(s=Promise.resolve(n.value),s.then(c,l))}c(void 0)});return c.cancel=ar(i+` - runid: `+n+` - cancel`,function(){try{s&&Fr(s);var e=a.return(void 0),t=Promise.resolve(e.value);t.then(_,_),Fr(t),o(new Ar)}catch(e){o(e)}}),c};return a.isMobXFlow=!0,a},Mr);Pr.bound=Te(Nr);function Fr(e){v(e.cancel)&&e.cancel()}function Ir(e){return e}function Lr(e){return e?.isMobXFlow===!0}function Rr(e,t,r){var i;if(Bi(e)||Fi(e)||N(e))i=pa(e);else if($i(e)){if(!y(t))return n(`InterceptReads can only be used with a specific property, not with an object in general`);i=pa(e,t)}else return n(`Expected observable map, object or array as first array`);return i.dehancer===void 0?(i.dehancer=typeof t==`function`?t:r,function(){i.dehancer=void 0}):n(`An intercept reader was already established`)}function zr(e,t,n){return v(n)?Br(e,t,n):V(e,t)}function V(e,t){return pa(e).intercept_(t)}function Br(e,t,n){return pa(e,t).intercept_(n)}function Vr(e,t){return t===void 0?tn(e):$i(e)===!1||!e[k].values_.has(t)?!1:tn(fa(e,t))}function Hr(e){return arguments.length>1?n(`isComputed expects only 1 argument. Use isComputedProp to inspect the observability of a property`):Vr(e)}function Ur(e,t){return y(t)?Vr(e,t):n(`isComputed expected a property name as second argument`)}function Wr(e,t){return e?t===void 0?$i(e)||!!e[k]||Me(e)||z(e)||tn(e):Bi(e)||Fi(e)?n(`isObservable(object, propertyName) is not supported for arrays and maps. Use map.has or array.length instead.`):$i(e)?e[k].values_.has(t):!1:!1}function Gr(e){return arguments.length!==1&&n(`isObservable expects only 1 argument. Use isObservableProp to inspect the observability of a property`),Wr(e)}function Kr(e,t){return y(t)?Wr(e,t):n(`expected a property name as second argument`)}function qr(e){if($i(e))return e[k].keys_();if(Bi(e)||Gi(e))return Array.from(e.keys());if(Fi(e))return e.map(function(e,t){return t});n(5)}function Jr(e){if($i(e))return qr(e).map(function(t){return e[t]});if(Bi(e))return qr(e).map(function(t){return e.get(t)});if(Gi(e))return Array.from(e.values());if(Fi(e))return e.slice();n(6)}function Yr(e){if($i(e))return qr(e).map(function(t){return[t,e[t]]});if(Bi(e))return qr(e).map(function(t){return[t,e.get(t)]});if(Gi(e))return Array.from(e.entries());if(Fi(e))return e.map(function(e,t){return[t,e]});n(7)}function Xr(e,t,r){if(arguments.length===2&&!Gi(e)){An();var i=t;try{for(var a in i)Xr(e,a,i[a])}finally{jn()}return}$i(e)?e[k].set_(t,r):Bi(e)?e.set(t,r):Gi(e)?e.add(t):Fi(e)?(typeof t!=`number`&&(t=parseInt(t,10)),t<0&&n(`Invalid index: '`+t+`'`),An(),t>=e.length&&(e.length=t+1),e[t]=r,jn()):n(8)}function Zr(e,t){$i(e)?e[k].delete_(t):Bi(e)||Gi(e)?e.delete(t):Fi(e)?(typeof t!=`number`&&(t=parseInt(t,10)),e.splice(t,1)):n(9)}function Qr(e,t){if($i(e))return e[k].has_(t);if(Bi(e)||Gi(e))return e.has(t);if(Fi(e))return t>=0&&t<e.length;n(10)}function $r(e,t){if(Qr(e,t)){if($i(e))return e[k].get_(t);if(Bi(e))return e.get(t);if(Fi(e))return e[t];n(11)}}function H(e,t,r){if($i(e))return e[k].defineProperty_(t,r);n(39)}function ei(e){if($i(e))return e[k].ownKeys_();n(38)}function ti(e,t,n,r){return v(n)?ri(e,t,n,r):ni(e,t,n)}function ni(e,t,n){return pa(e).observe_(t,n)}function ri(e,t,n,r){return pa(e,t).observe_(n,r)}function ii(e,t,n){return e.set(t,n),n}function ai(e,t){if(typeof e!=`object`||!e||e instanceof Date||!Gr(e))return e;if(N(e)||tn(e))return ai(e.get(),t);if(t.has(e))return t.get(e);if(Fi(e)){var n=ii(t,e,Array(e.length));return e.forEach(function(e,r){n[r]=ai(e,t)}),n}if(Gi(e)){var r=ii(t,e,new Set);return e.forEach(function(e){r.add(ai(e,t))}),r}if(Bi(e)){var i=ii(t,e,new Map);return e.forEach(function(e,n){i.set(n,ai(e,t))}),i}else{var a=ii(t,e,{});return ei(e).forEach(function(n){c.propertyIsEnumerable.call(e,n)&&(a[n]=ai(e[n],t))}),a}}function oi(e,t){return t&&n(`toJS no longer supports options`),ai(e,new Map)}function si(){var e=!1,t=[...arguments];typeof t[t.length-1]==`boolean`&&(e=t.pop());var r=ci(t);if(!r)return n(`'trace(break?)' can only be used inside a tracked computed value or a Reaction. Consider passing in the computed value or reaction explicitly`);r.isTracing_===nn.NONE&&console.log(`[mobx.trace] '`+r.name_+`' tracing enabled`),r.isTracing_=e?nn.BREAK:nn.LOG}function ci(e){switch(e.length){case 0:return L.trackingDerivation;case 1:return fa(e[0]);case 2:return fa(e[0],e[1])}}function li(e,t){t===void 0&&(t=void 0),An();try{return e.apply(t)}finally{jn()}}function ui(e,t,n){return arguments.length===1||t&&typeof t==`object`?fi(e,t):di(e,t,n||{})}function di(e,t,n){var r;if(typeof n.timeout==`number`){var i=Error(`WHEN_TIMEOUT`);r=setTimeout(function(){if(!o[k].isDisposed)if(o(),n.onError)n.onError(i);else throw i},n.timeout)}n.name=n.name||`When@`+h();var a=Gt(n.name+`-effect`,t),o=lr(function(t){Yt(!1,e)&&(t.dispose(),r&&clearTimeout(r),a())},n);return o}function fi(e,t){var r;if(t&&t.onError)return n(`the options 'onError' and 'promise' cannot be combined`);if(t!=null&&(r=t.signal)!=null&&r.aborted)return Object.assign(Promise.reject(Error(`WHEN_ABORTED`)),{cancel:function(){return null}});var i,a,o=new Promise(function(n,r){var o,s=di(e,n,he({},t,{onError:r}));i=function(){s(),r(Error(`WHEN_CANCELLED`))},a=function(){s(),r(Error(`WHEN_ABORTED`))},t==null||(o=t.signal)==null||o.addEventListener==null||o.addEventListener(`abort`,a)}).finally(function(){var e;return t==null||(e=t.signal)==null||e.removeEventListener==null?void 0:e.removeEventListener(`abort`,a)});return o.cancel=i,o}function pi(e){return e[k]}var mi={has:function(e,t){return L.trackingDerivation&&m(`detect new properties using the 'in' operator. Use 'has' from 'mobx' instead.`),pi(e).has_(t)},get:function(e,t){return pi(e).get_(t)},set:function(e,t,n){return y(t)?(pi(e).values_.has(t)||m(`add a new observable property through direct assignment. Use 'set' from 'mobx' instead.`),pi(e).set_(t,n,!0)??!0):!1},deleteProperty:function(e,t){return m(`delete properties from an observable object. Use 'remove' from 'mobx' instead.`),y(t)?pi(e).delete_(t,!0)??!0:!1},defineProperty:function(e,t,n){return m(`define property on an observable object. Use 'defineProperty' from 'mobx' instead.`),pi(e).defineProperty_(t,n)??!0},ownKeys:function(e){return L.trackingDerivation&&m(`iterate keys to detect added / removed properties. Use 'keys' from 'mobx' instead.`),pi(e).ownKeys_()},preventExtensions:function(e){n(13)}};function hi(e,t){var n;return p(),e=Xi(e,t),(n=e[k]).proxy_??(n.proxy_=new Proxy(e,mi))}function gi(e){return e.interceptors_!==void 0&&e.interceptors_.length>0}function _i(e,t){var n=e.interceptors_||=[];return n.push(t),g(function(){var e=n.indexOf(t);e!==-1&&n.splice(e,1)})}function vi(e,t){var r=I();try{for(var i=[].concat(e.interceptors_||[]),a=0,o=i.length;a<o&&(t=i[a](t),t&&!t.type&&n(14),t);a++);return t}finally{mn(r)}}function yi(e){return e.changeListeners_!==void 0&&e.changeListeners_.length>0}function bi(e,t){var n=e.changeListeners_||=[];return n.push(t),g(function(){var e=n.indexOf(t);e!==-1&&n.splice(e,1)})}function xi(e,t){var n=I(),r=e.changeListeners_;if(r){r=r.slice();for(var i=0,a=r.length;i<a;i++)r[i](t);mn(n)}}function Si(e,t,r){return ha(function(){var i=Xi(e,r)[k];t&&e[we]&&n(`makeObservable second arg must be nullish when using decorators. Mixing @decorator syntax with annotations is not supported.`),t??=Oe(e),E(t).forEach(function(e){return i.make_(e,t[e])})}),e}var Ci=Symbol(`mobx-keys`);function wi(e,t,r){return!x(e)&&!x(Object.getPrototypeOf(e))&&n(`'makeAutoObservable' can only be used for classes that don't have a superclass`),$i(e)&&n(`makeAutoObservable can only be used on objects not already made observable`),x(e)?Cr(e,e,t,r):(ha(function(){var n=Xi(e,r)[k];if(!e[Ci]){var i=Object.getPrototypeOf(e),a=new Set([].concat(E(e),E(i)));a.delete(`constructor`),a.delete(k),C(i,Ci,a)}e[Ci].forEach(function(e){return n.make_(e,t&&e in t?t[e]:!0)})}),e)}var Ti=`splice`,Ei=`update`,Di=1e4,U={get:function(e,t){var n=e[k];return t===k?n:t===`length`?n.getArrayLength_():typeof t==`string`&&!isNaN(t)?n.get_(parseInt(t)):D(Ai,t)?Ai[t]:e[t]},set:function(e,t,n){var r=e[k];return t===`length`&&r.setArrayLength_(n),typeof t==`symbol`||isNaN(t)?e[t]=n:r.set_(parseInt(t),n),!0},preventExtensions:function(){n(15)}},Oi=function(){function e(e,t,n,r){e===void 0&&(e=`ObservableArray@`+h()),this.owned_=void 0,this.legacyMode_=void 0,this.atom_=void 0,this.values_=[],this.interceptors_=void 0,this.changeListeners_=void 0,this.enhancer_=void 0,this.dehancer=void 0,this.proxy_=void 0,this.lastKnownLength_=0,this.owned_=n,this.legacyMode_=r,this.atom_=new je(e),this.enhancer_=function(n,r){return t(n,r,e+`[..]`)}}var t=e.prototype;return t.dehanceValue_=function(e){return this.dehancer===void 0?e:this.dehancer(e)},t.dehanceValues_=function(e){return this.dehancer!==void 0&&e.length>0?e.map(this.dehancer):e},t.intercept_=function(e){return _i(this,e)},t.observe_=function(e,t){return t===void 0&&(t=!1),t&&e({observableKind:`array`,object:this.proxy_,debugObjectName:this.atom_.name_,type:`splice`,index:0,added:this.values_.slice(),addedCount:this.values_.length,removed:[],removedCount:0}),bi(this,e)},t.getArrayLength_=function(){return this.atom_.reportObserved(),this.values_.length},t.setArrayLength_=function(e){(typeof e!=`number`||isNaN(e)||e<0)&&n(`Out of range: `+e);var t=this.values_.length;if(e!==t)if(e>t){for(var r=Array(e-t),i=0;i<e-t;i++)r[i]=void 0;this.spliceWithArray_(t,0,r)}else this.spliceWithArray_(e,t-e)},t.updateArrayLength_=function(e,t){e!==this.lastKnownLength_&&n(16),this.lastKnownLength_+=t,this.legacyMode_&&t>0&&ua(e+t+1)},t.spliceWithArray_=function(e,t,n){var r=this;sn(this.atom_);var i=this.values_.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=l),gi(this)){var a=vi(this,{object:this.proxy_,type:Ti,index:e,removedCount:t,added:n});if(!a)return l;t=a.removedCount,n=a.added}if(n=n.length===0?n:n.map(function(e){return r.enhancer_(e,void 0)}),this.legacyMode_||!0){var o=n.length-t;this.updateArrayLength_(i,o)}var s=this.spliceItemsIntoValues_(e,t,n);return(t!==0||n.length!==0)&&this.notifyArraySplice_(e,n,s),this.dehanceValues_(s)},t.spliceItemsIntoValues_=function(e,t,n){if(n.length<Di){var r;return(r=this.values_).splice.apply(r,[e,t].concat(n))}else{var i=this.values_.slice(e,e+t),a=this.values_.slice(e+t);this.values_.length+=n.length-t;for(var o=0;o<n.length;o++)this.values_[e+o]=n[o];for(var s=0;s<a.length;s++)this.values_[e+n.length+s]=a[s];return i}},t.notifyArrayChildUpdate_=function(e,t,n){var r=!this.owned_&&Wn(),i=yi(this),a=i||r?{observableKind:`array`,object:this.proxy_,type:Ei,debugObjectName:this.atom_.name_,index:e,newValue:t,oldValue:n}:null;r&&B(a),this.atom_.reportChanged(),i&&xi(this,a),r&&qn()},t.notifyArraySplice_=function(e,t,n){var r=!this.owned_&&Wn(),i=yi(this),a=i||r?{observableKind:`array`,object:this.proxy_,debugObjectName:this.atom_.name_,type:Ti,index:e,removed:n,added:t,removedCount:n.length,addedCount:t.length}:null;r&&B(a),this.atom_.reportChanged(),i&&xi(this,a),r&&qn()},t.get_=function(e){if(this.legacyMode_&&e>=this.values_.length){console.warn(`[mobx.array] Attempt to read an array index (`+e+`) that is out of bounds (`+this.values_.length+`). Please check length first. Out of bound indices will not be tracked by MobX`);return}return this.atom_.reportObserved(),this.dehanceValue_(this.values_[e])},t.set_=function(e,t){var r=this.values_;if(this.legacyMode_&&e>r.length&&n(17,e,r.length),e<r.length){sn(this.atom_);var i=r[e];if(gi(this)){var a=vi(this,{type:Ei,object:this.proxy_,index:e,newValue:t});if(!a)return;t=a.newValue}t=this.enhancer_(t,i),t!==i&&(r[e]=t,this.notifyArrayChildUpdate_(e,t,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]=t,this.spliceWithArray_(r.length,0,o)}},e}();function ki(e,t,n,r){return n===void 0&&(n=`ObservableArray@`+h()),r===void 0&&(r=!1),p(),ha(function(){var i=new Oi(n,t,r,!1);ee(i.values_,k,i);var a=new Proxy(i.values_,U);return i.proxy_=a,e&&e.length&&i.spliceWithArray_(0,0,e),a})}var Ai={clear:function(){return this.splice(0)},replace:function(e){var t=this[k];return t.spliceWithArray_(0,t.values_.length,e)},toJSON:function(){return this.slice()},splice:function(e,t){var n=[...arguments].slice(2),r=this[k];switch(arguments.length){case 0:return[];case 1:return r.spliceWithArray_(e);case 2:return r.spliceWithArray_(e,t)}return r.spliceWithArray_(e,t,n)},spliceWithArray:function(e,t,n){return this[k].spliceWithArray_(e,t,n)},push:function(){var e=this[k],t=[...arguments];return e.spliceWithArray_(e.values_.length,0,t),e.values_.length},pop:function(){return this.splice(Math.max(this[k].values_.length-1,0),1)[0]},shift:function(){return this.splice(0,1)[0]},unshift:function(){var e=this[k],t=[...arguments];return e.spliceWithArray_(0,0,t),e.values_.length},reverse:function(){return L.trackingDerivation&&n(37,`reverse`),this.replace(this.slice().reverse()),this},sort:function(){L.trackingDerivation&&n(37,`sort`);var e=this.slice();return e.sort.apply(e,arguments),this.replace(e),this},remove:function(e){var t=this[k],n=t.dehanceValues_(t.values_).indexOf(e);return n>-1?(this.splice(n,1),!0):!1}};W(`at`,ji),W(`concat`,ji),W(`flat`,ji),W(`includes`,ji),W(`indexOf`,ji),W(`join`,ji),W(`lastIndexOf`,ji),W(`slice`,ji),W(`toString`,ji),W(`toLocaleString`,ji),W(`toSorted`,ji),W(`toSpliced`,ji),W(`with`,ji),W(`every`,Mi),W(`filter`,Mi),W(`find`,Mi),W(`findIndex`,Mi),W(`findLast`,Mi),W(`findLastIndex`,Mi),W(`flatMap`,Mi),W(`forEach`,Mi),W(`map`,Mi),W(`some`,Mi),W(`toReversed`,Mi),W(`reduce`,Ni),W(`reduceRight`,Ni);function W(e,t){typeof Array.prototype[e]==`function`&&(Ai[e]=t(e))}function ji(e){return function(){var t=this[k];t.atom_.reportObserved();var n=t.dehanceValues_(t.values_);return n[e].apply(n,arguments)}}function Mi(e){return function(t,n){var r=this,i=this[k];return i.atom_.reportObserved(),i.dehanceValues_(i.values_)[e](function(e,i){return t.call(n,e,i,r)})}}function Ni(e){return function(){var t=this,n=this[k];n.atom_.reportObserved();var r=n.dehanceValues_(n.values_),i=arguments[0];return arguments[0]=function(e,n,r){return i(e,n,r,t)},r[e].apply(r,arguments)}}var Pi=te(`ObservableArrayAdministration`,Oi);function Fi(e){return b(e)&&Pi(e[k])}var Ii={},Li=`add`,Ri=`delete`,zi=function(){function e(e,t,r){var i=this;t===void 0&&(t=ze),r===void 0&&(r=`ObservableMap@`+h()),this.enhancer_=void 0,this.name_=void 0,this[k]=Ii,this.data_=void 0,this.hasMap_=void 0,this.keysAtom_=void 0,this.interceptors_=void 0,this.changeListeners_=void 0,this.dehancer=void 0,this.enhancer_=t,this.name_=r,v(Map)||n(18),ha(function(){i.keysAtom_=Ne(i.name_+`.keys()`),i.data_=new Map,i.hasMap_=new Map,e&&i.merge(e)})}var t=e.prototype;return t.has_=function(e){return this.data_.has(e)},t.has=function(e){var t=this;if(!L.trackingDerivation)return this.has_(e);var n=this.hasMap_.get(e);if(!n){var r=n=new $t(this.has_(e),Ve,this.name_+`.`+ae(e)+`?`,!1);this.hasMap_.set(e,r),_r(r,function(){return t.hasMap_.delete(e)})}return n.get()},t.set=function(e,t){var n=this.has_(e);if(gi(this)){var r=vi(this,{type:n?Ei:Li,object:this,newValue:t,name:e});if(!r)return this;t=r.newValue}return n?this.updateValue_(e,t):this.addValue_(e,t),this},t.delete=function(e){var t=this;if(sn(this.keysAtom_),gi(this)&&!vi(this,{type:Ri,object:this,name:e}))return!1;if(this.has_(e)){var n=Wn(),r=yi(this),i=r||n?{observableKind:`map`,debugObjectName:this.name_,type:Ri,object:this,oldValue:this.data_.get(e).value_,name:e}:null;return n&&B(i),li(function(){var n;t.keysAtom_.reportChanged(),(n=t.hasMap_.get(e))==null||n.setNewValue_(!1),t.data_.get(e).setNewValue_(void 0),t.data_.delete(e)}),r&&xi(this,i),n&&qn(),!0}return!1},t.updateValue_=function(e,t){var n=this.data_.get(e);if(t=n.prepareNewValue_(t),t!==L.UNCHANGED){var r=Wn(),i=yi(this),a=i||r?{observableKind:`map`,debugObjectName:this.name_,type:Ei,object:this,oldValue:n.value_,name:e,newValue:t}:null;r&&B(a),n.setNewValue_(t),i&&xi(this,a),r&&qn()}},t.addValue_=function(e,t){var n=this;sn(this.keysAtom_),li(function(){var r,i=new $t(t,n.enhancer_,n.name_+`.`+ae(e),!1);n.data_.set(e,i),t=i.value_,(r=n.hasMap_.get(e))==null||r.setNewValue_(!0),n.keysAtom_.reportChanged()});var r=Wn(),i=yi(this),a=i||r?{observableKind:`map`,debugObjectName:this.name_,type:Li,object:this,name:e,newValue:t}:null;r&&B(a),i&&xi(this,a),r&&qn()},t.get=function(e){return this.has(e)?this.dehanceValue_(this.data_.get(e).get()):this.dehanceValue_(void 0)},t.dehanceValue_=function(e){return this.dehancer===void 0?e:this.dehancer(e)},t.keys=function(){return this.keysAtom_.reportObserved(),this.data_.keys()},t.values=function(){var e=this,t=this.keys();return Vi({next:function(){var n=t.next(),r=n.done,i=n.value;return{done:r,value:r?void 0:e.get(i)}}})},t.entries=function(){var e=this,t=this.keys();return Vi({next:function(){var n=t.next(),r=n.done,i=n.value;return{done:r,value:r?void 0:[i,e.get(i)]}}})},t[Symbol.iterator]=function(){return this.entries()},t.forEach=function(e,t){for(var n=me(this),r;!(r=n()).done;){var i=r.value,a=i[0],o=i[1];e.call(t,o,a,this)}},t.merge=function(e){var t=this;return Bi(e)&&(e=new Map(e)),li(function(){x(e)?T(e).forEach(function(n){return t.set(n,e[n])}):Array.isArray(e)?e.forEach(function(e){var n=e[0],r=e[1];return t.set(n,r)}):ne(e)?(re(e)||n(19,e),e.forEach(function(e,n){return t.set(n,e)})):e!=null&&n(20,e)}),this},t.clear=function(){var e=this;li(function(){pn(function(){for(var t=me(e.keys()),n;!(n=t()).done;){var r=n.value;e.delete(r)}})})},t.replace=function(e){var t=this;return li(function(){for(var n=Hi(e),r=new Map,i=!1,a=me(t.data_.keys()),o;!(o=a()).done;){var s=o.value;if(!n.has(s))if(t.delete(s))i=!0;else{var c=t.data_.get(s);r.set(s,c)}}for(var l=me(n.entries()),u;!(u=l()).done;){var d=u.value,f=d[0],p=d[1],m=t.data_.has(f);if(t.set(f,p),t.data_.has(f)){var h=t.data_.get(f);r.set(f,h),m||(i=!0)}}if(!i)if(t.data_.size!==r.size)t.keysAtom_.reportChanged();else for(var g=t.data_.keys(),_=r.keys(),v=g.next(),y=_.next();!v.done;){if(v.value!==y.value){t.keysAtom_.reportChanged();break}v=g.next(),y=_.next()}t.data_=r}),this},t.toString=function(){return`[object ObservableMap]`},t.toJSON=function(){return Array.from(this)},t.observe_=function(e,t){return t===!0&&n("`observe` doesn't support fireImmediately=true in combination with maps."),bi(this,e)},t.intercept_=function(e){return _i(this,e)},pe(e,[{key:`size`,get:function(){return this.keysAtom_.reportObserved(),this.data_.size}},{key:Symbol.toStringTag,get:function(){return`Map`}}])}(),Bi=te(`ObservableMap`,zi);function Vi(e){return e[Symbol.toStringTag]=`MapIterator`,xa(e)}function Hi(e){if(ne(e)||Bi(e))return e;if(Array.isArray(e))return new Map(e);if(x(e)){var t=new Map;for(var r in e)t.set(r,e[r]);return t}else return n(21,e)}var Ui={},Wi=function(){function e(e,t,r){var i=this;t===void 0&&(t=ze),r===void 0&&(r=`ObservableSet@`+h()),this.name_=void 0,this[k]=Ui,this.data_=new Set,this.atom_=void 0,this.changeListeners_=void 0,this.interceptors_=void 0,this.dehancer=void 0,this.enhancer_=void 0,this.name_=r,v(Set)||n(22),this.enhancer_=function(e,n){return t(e,n,r)},ha(function(){i.atom_=Ne(i.name_),e&&i.replace(e)})}var t=e.prototype;return t.dehanceValue_=function(e){return this.dehancer===void 0?e:this.dehancer(e)},t.clear=function(){var e=this;li(function(){pn(function(){for(var t=me(e.data_.values()),n;!(n=t()).done;){var r=n.value;e.delete(r)}})})},t.forEach=function(e,t){for(var n=me(this),r;!(r=n()).done;){var i=r.value;e.call(t,i,i,this)}},t.add=function(e){var t=this;if(sn(this.atom_),gi(this)){var n=vi(this,{type:Li,object:this,newValue:e});if(!n)return this;e=n.newValue}if(!this.has(e)){li(function(){t.data_.add(t.enhancer_(e,void 0)),t.atom_.reportChanged()});var r=Wn(),i=yi(this),a=i||r?{observableKind:`set`,debugObjectName:this.name_,type:Li,object:this,newValue:e}:null;r&&B(a),i&&xi(this,a),r&&qn()}return this},t.delete=function(e){var t=this;if(gi(this)&&!vi(this,{type:Ri,object:this,oldValue:e}))return!1;if(this.has(e)){var n=Wn(),r=yi(this),i=r||n?{observableKind:`set`,debugObjectName:this.name_,type:Ri,object:this,oldValue:e}:null;return n&&B(i),li(function(){t.atom_.reportChanged(),t.data_.delete(e)}),r&&xi(this,i),n&&qn(),!0}return!1},t.has=function(e){return this.atom_.reportObserved(),this.data_.has(this.dehanceValue_(e))},t.entries=function(){var e=this.values();return Ki({next:function(){var t=e.next(),n=t.value,r=t.done;return r?{value:void 0,done:r}:{value:[n,n],done:r}}})},t.keys=function(){return this.values()},t.values=function(){this.atom_.reportObserved();var e=this,t=this.data_.values();return Ki({next:function(){var n=t.next(),r=n.value,i=n.done;return i?{value:void 0,done:i}:{value:e.dehanceValue_(r),done:i}}})},t.intersection=function(e){return w(e)&&!Gi(e)?e.intersection(this):new Set(this).intersection(e)},t.union=function(e){return w(e)&&!Gi(e)?e.union(this):new Set(this).union(e)},t.difference=function(e){return new Set(this).difference(e)},t.symmetricDifference=function(e){return w(e)&&!Gi(e)?e.symmetricDifference(this):new Set(this).symmetricDifference(e)},t.isSubsetOf=function(e){return new Set(this).isSubsetOf(e)},t.isSupersetOf=function(e){return new Set(this).isSupersetOf(e)},t.isDisjointFrom=function(e){return w(e)&&!Gi(e)?e.isDisjointFrom(this):new Set(this).isDisjointFrom(e)},t.replace=function(e){var t=this;return Gi(e)&&(e=new Set(e)),li(function(){Array.isArray(e)||w(e)?(t.clear(),e.forEach(function(e){return t.add(e)})):e!=null&&n(`Cannot initialize set from `+e)}),this},t.observe_=function(e,t){return t===!0&&n("`observe` doesn't support fireImmediately=true in combination with sets."),bi(this,e)},t.intercept_=function(e){return _i(this,e)},t.toJSON=function(){return Array.from(this)},t.toString=function(){return`[object ObservableSet]`},t[Symbol.iterator]=function(){return this.values()},pe(e,[{key:`size`,get:function(){return this.atom_.reportObserved(),this.data_.size}},{key:Symbol.toStringTag,get:function(){return`Set`}}])}(),Gi=te(`ObservableSet`,Wi);function Ki(e){return e[Symbol.toStringTag]=`SetIterator`,xa(e)}var qi=Object.create(null),Ji=`remove`,Yi=function(){function e(e,t,r,i){t===void 0&&(t=new Map),i===void 0&&(i=vt),this.target_=void 0,this.values_=void 0,this.name_=void 0,this.defaultAnnotation_=void 0,this.keysAtom_=void 0,this.changeListeners_=void 0,this.interceptors_=void 0,this.proxy_=void 0,this.isPlainObject_=void 0,this.appliedAnnotations_=void 0,this.pendingKeys_=void 0,this.target_=e,this.values_=t,this.name_=r,this.defaultAnnotation_=i,this.keysAtom_=new je(this.name_+`.keys`),this.isPlainObject_=x(this.target_),Ca(this.defaultAnnotation_)||n(`defaultAnnotation must be valid annotation`),this.appliedAnnotations_={}}var t=e.prototype;return t.getObservablePropValue_=function(e){return this.values_.get(e).get()},t.setObservablePropValue_=function(e,t){var n=this.values_.get(e);if(n instanceof en)return n.set(t),!0;if(gi(this)){var r=vi(this,{type:Ei,object:this.proxy_||this.target_,name:e,newValue:t});if(!r)return null;t=r.newValue}if(t=n.prepareNewValue_(t),t!==L.UNCHANGED){var i=yi(this),a=Wn(),o=i||a?{type:Ei,observableKind:`object`,debugObjectName:this.name_,object:this.proxy_||this.target_,oldValue:n.value_,name:e,newValue:t}:null;a&&B(o),n.setNewValue_(t),i&&xi(this,o),a&&qn()}return!0},t.get_=function(e){return L.trackingDerivation&&!D(this.target_,e)&&this.has_(e),this.target_[e]},t.set_=function(e,t,n){return n===void 0&&(n=!1),D(this.target_,e)?this.values_.has(e)?this.setObservablePropValue_(e,t):n?Reflect.set(this.target_,e,t):(this.target_[e]=t,!0):this.extend_(e,{value:t,enumerable:!0,writable:!0,configurable:!0},this.defaultAnnotation_,n)},t.has_=function(e){if(!L.trackingDerivation)return e in this.target_;this.pendingKeys_||=new Map;var t=this.pendingKeys_.get(e);return t||(t=new $t(e in this.target_,Ve,this.name_+`.`+ae(e)+`?`,!1),this.pendingKeys_.set(e,t)),t.get()},t.make_=function(e,t){if(t===!0&&(t=this.defaultAnnotation_),t!==!1){if(ta(this,t,e),!(e in this.target_)){var r;if((r=this.target_[we])!=null&&r[e])return;n(1,t.annotationType_,this.name_+`.`+e.toString())}for(var i=this.target_;i&&i!==c;){var a=o(i,e);if(a){var s=t.make_(this,e,a,i);if(s===0)return;if(s===1)break}i=Object.getPrototypeOf(i)}ea(this,t,e)}},t.extend_=function(e,t,n,r){if(r===void 0&&(r=!1),n===!0&&(n=this.defaultAnnotation_),n===!1)return this.defineProperty_(e,t,r);ta(this,n,e);var i=n.extend_(this,e,t,r);return i&&ea(this,n,e),i},t.defineProperty_=function(e,t,n){n===void 0&&(n=!1),sn(this.keysAtom_);try{An();var r=this.delete_(e);if(!r)return r;if(gi(this)){var i=vi(this,{object:this.proxy_||this.target_,name:e,type:Li,newValue:t.value});if(!i)return null;var a=i.newValue;t.value!==a&&(t=he({},t,{value:a}))}if(n){if(!Reflect.defineProperty(this.target_,e,t))return!1}else s(this.target_,e,t);this.notifyPropertyAddition_(e,t.value)}finally{jn()}return!0},t.defineObservableProperty_=function(e,t,n,r){r===void 0&&(r=!1),sn(this.keysAtom_);try{An();var i=this.delete_(e);if(!i)return i;if(gi(this)){var a=vi(this,{object:this.proxy_||this.target_,name:e,type:Li,newValue:t});if(!a)return null;t=a.newValue}var o=Qi(e),c={configurable:L.safeDescriptors?this.isPlainObject_:!0,enumerable:!0,get:o.get,set:o.set};if(r){if(!Reflect.defineProperty(this.target_,e,c))return!1}else s(this.target_,e,c);var l=new $t(t,n,this.name_+`.`+e.toString(),!1);this.values_.set(e,l),this.notifyPropertyAddition_(e,l.value_)}finally{jn()}return!0},t.defineComputedProperty_=function(e,t,n){n===void 0&&(n=!1),sn(this.keysAtom_);try{An();var r=this.delete_(e);if(!r)return r;if(gi(this)&&!vi(this,{object:this.proxy_||this.target_,name:e,type:Li,newValue:void 0}))return null;t.name||=this.name_+`.`+e.toString(),t.context=this.proxy_||this.target_;var i=Qi(e),a={configurable:L.safeDescriptors?this.isPlainObject_:!0,enumerable:!1,get:i.get,set:i.set};if(n){if(!Reflect.defineProperty(this.target_,e,a))return!1}else s(this.target_,e,a);this.values_.set(e,new en(t)),this.notifyPropertyAddition_(e,void 0)}finally{jn()}return!0},t.delete_=function(e,t){if(t===void 0&&(t=!1),sn(this.keysAtom_),!D(this.target_,e))return!0;if(gi(this)&&!vi(this,{object:this.proxy_||this.target_,name:e,type:Ji}))return null;try{var n;An();var r=yi(this),i=Wn(),a=this.values_.get(e),s=void 0;if(!a&&(r||i)&&(s=o(this.target_,e)?.value),t){if(!Reflect.deleteProperty(this.target_,e))return!1}else delete this.target_[e];if(delete this.appliedAnnotations_[e],a&&(this.values_.delete(e),a instanceof $t&&(s=a.value_),Nn(a)),this.keysAtom_.reportChanged(),(n=this.pendingKeys_)==null||(n=n.get(e))==null||n.set(e in this.target_),r||i){var c={type:Ji,observableKind:`object`,object:this.proxy_||this.target_,debugObjectName:this.name_,oldValue:s,name:e};i&&B(c),r&&xi(this,c),i&&qn()}}finally{jn()}return!0},t.observe_=function(e,t){return t===!0&&n("`observe` doesn't support the fire immediately property for observable objects."),bi(this,e)},t.intercept_=function(e){return _i(this,e)},t.notifyPropertyAddition_=function(e,t){var n,r=yi(this),i=Wn();if(r||i){var a=r||i?{type:Li,observableKind:`object`,debugObjectName:this.name_,object:this.proxy_||this.target_,name:e,newValue:t}:null;i&&B(a),r&&xi(this,a),i&&qn()}(n=this.pendingKeys_)==null||(n=n.get(e))==null||n.set(!0),this.keysAtom_.reportChanged()},t.ownKeys_=function(){return this.keysAtom_.reportObserved(),E(this.target_)},t.keys_=function(){return this.keysAtom_.reportObserved(),Object.keys(this.target_)},e}();function Xi(e,t){if(t&&$i(e)&&n(`Options can't be provided for already observable objects.`),D(e,k))return pa(e)instanceof Yi||n(`Cannot convert '`+ma(e)+`' into observable object:
81
+ `)()}}function In(e,t,n){if(t.length>=1e3){t.push(`(and many more)`);return}t.push(``+` `.repeat(n-1)+e.name),e.dependencies&&e.dependencies.forEach(function(e){return In(e,t,n+1)})}var Ln=function(){function e(e,t,n,r){e===void 0&&(e=`Reaction@`+h()),this.name_=void 0,this.onInvalidate_=void 0,this.errorHandler_=void 0,this.requiresObservable_=void 0,this.observing_=[],this.newObserving_=[],this.dependenciesState_=P.NOT_TRACKING_,this.runId_=0,this.unboundDepsCount_=0,this.flags_=0,this.isTracing_=nn.NONE,this.name_=e,this.onInvalidate_=t,this.errorHandler_=n,this.requiresObservable_=r}var t=e.prototype;return t.onBecomeStale_=function(){this.schedule_()},t.schedule_=function(){this.isScheduled||(this.isScheduled=!0,L.pendingReactions.push(this),Vn())},t.runReaction_=function(){if(!this.isDisposed){An(),this.isScheduled=!1;var e=L.trackingContext;if(L.trackingContext=this,on(this)){this.isTrackPending=!0;try{this.onInvalidate_(),this.isTrackPending&&Wn()&&Gn({name:this.name_,type:`scheduled-reaction`})}catch(e){this.reportExceptionInDerivation_(e)}}L.trackingContext=e,jn()}},t.track=function(e){if(!this.isDisposed){An();var t=Wn(),n;t&&(n=Date.now(),B({name:this.name_,type:`reaction`})),this.isRunning=!0;var r=L.trackingContext;L.trackingContext=this;var i=ln(this,e,void 0);L.trackingContext=r,this.isRunning=!1,this.isTrackPending=!1,this.isDisposed&&fn(this),an(i)&&this.reportExceptionInDerivation_(i.cause),t&&qn({time:Date.now()-n}),jn()}},t.reportExceptionInDerivation_=function(e){var t=this;if(this.errorHandler_){this.errorHandler_(e,this);return}if(L.disableErrorBoundaries)throw e;var n=`[mobx] Encountered an uncaught exception that was thrown by a reaction or observer component, in: '`+this+`'`;L.suppressReactionErrors?console.warn(`[mobx] (error in reaction '`+this.name_+`' suppressed, fix error of causing action below)`):console.error(n,e),Wn()&&Gn({type:`error`,name:this.name_,message:n,error:``+e}),L.globalReactionErrorHandlers.forEach(function(n){return n(e,t)})},t.dispose=function(){this.isDisposed||(this.isDisposed=!0,this.isRunning||(An(),fn(this),jn()))},t.getDisposer_=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[k]=this,`dispose`in Symbol&&typeof Symbol.dispose==`symbol`&&(n[Symbol.dispose]=n),n},t.toString=function(){return`Reaction[`+this.name_+`]`},t.trace=function(e){e===void 0&&(e=!1),si(this,e)},pe(e,[{key:`isDisposed`,get:function(){return ce(this.flags_,e.isDisposedMask_)},set:function(t){this.flags_=le(this.flags_,e.isDisposedMask_,t)}},{key:`isScheduled`,get:function(){return ce(this.flags_,e.isScheduledMask_)},set:function(t){this.flags_=le(this.flags_,e.isScheduledMask_,t)}},{key:`isTrackPending`,get:function(){return ce(this.flags_,e.isTrackPendingMask_)},set:function(t){this.flags_=le(this.flags_,e.isTrackPendingMask_,t)}},{key:`isRunning`,get:function(){return ce(this.flags_,e.isRunningMask_)},set:function(t){this.flags_=le(this.flags_,e.isRunningMask_,t)}},{key:`diffValue`,get:function(){return+!!ce(this.flags_,e.diffValueMask_)},set:function(t){this.flags_=le(this.flags_,e.diffValueMask_,t===1)}}])}();Ln.isDisposedMask_=1,Ln.isScheduledMask_=2,Ln.isTrackPendingMask_=4,Ln.isRunningMask_=8,Ln.diffValueMask_=16;function Rn(e){return L.globalReactionErrorHandlers.push(e),function(){var t=L.globalReactionErrorHandlers.indexOf(e);t>=0&&L.globalReactionErrorHandlers.splice(t,1)}}var zn=100,Bn=function(e){return e()};function Vn(){L.inBatch>0||L.isRunningReactions||Bn(Hn)}function Hn(){L.isRunningReactions=!0;for(var e=L.pendingReactions,t=0;e.length>0;){++t===zn&&(console.error(`Reaction doesn't converge to a stable state after `+zn+` iterations.`+(` Probably there is a cycle in the reactive function: `+e[0])),e.splice(0));for(var n=e.splice(0),r=0,i=n.length;r<i;r++)n[r].runReaction_()}L.isRunningReactions=!1}var z=te(`Reaction`,Ln);function Un(e){var t=Bn;Bn=function(n){return e(function(){return t(n)})}}function Wn(){return!!L.spyListeners.length}function Gn(e){if(L.spyListeners.length)for(var t=L.spyListeners,n=0,r=t.length;n<r;n++)t[n](e)}function B(e){Gn(he({},e,{spyReportStart:!0}))}var Kn={type:`report-end`,spyReportEnd:!0};function qn(e){Gn(e?he({},e,{type:`report-end`,spyReportEnd:!0}):Kn)}function Jn(e){return L.spyListeners.push(e),g(function(){L.spyListeners=L.spyListeners.filter(function(t){return t!==e})})}var Yn=`action`,Xn=`action.bound`,Zn=`autoAction`,Qn=`autoAction.bound`,$n=`<unnamed action>`,er=Ye(Yn),tr=Ye(Xn,{bound:!0}),nr=Ye(Zn,{autoAction:!0}),rr=Ye(Qn,{autoAction:!0,bound:!0});function ir(e){return function(t,r){if(v(t))return Gt(t.name||$n,t,e);if(v(r))return Gt(t,r,e);if(ke(r))return(e?nr:er).decorate_20223_(t,r);if(y(r))return Ee(t,r,e?nr:er);if(y(t))return Te(Ye(e?Zn:Yn,{name:t,autoAction:e}));n("Invalid arguments for `action`")}}var ar=ir(!1);Object.assign(ar,er);var or=ir(!0);Object.assign(or,nr),ar.bound=Te(tr),or.bound=Te(rr);function sr(e){return Kt(e.name||$n,!1,e,this,void 0)}function cr(e){return v(e)&&e.isMobxAction===!0}function lr(e,t){var r;t===void 0&&(t=u),v(e)||n(`Autorun expects a function as first argument`),cr(e)&&n(`Autorun does not accept actions since actions are untrackable`);var i=t?.name??(e.name||`Autorun@`+h()),a=!t.scheduler&&!t.delay,o;if(a)o=new Ln(i,function(){this.track(l)},t.onError,t.requiresObservable);else{var s=dr(t),c=!1;o=new Ln(i,function(){c||(c=!0,s(function(){c=!1,o.isDisposed||o.track(l)}))},t.onError,t.requiresObservable)}function l(){e(o)}return(r=t)!=null&&(r=r.signal)!=null&&r.aborted||o.schedule_(),o.getDisposer_(t?.signal)}var ur=function(e){return e()};function dr(e){return e.scheduler?e.scheduler:e.delay?function(t){return setTimeout(t,e.delay)}:ur}function fr(e,t,r){var i;r===void 0&&(r=u),(!v(e)||!v(t))&&n(`First and second argument to reaction should be functions`),x(r)||n(`Third argument of reactions should be an object`);var a=r.name??`Reaction@`+h(),o=ar(a,r.onError?pr(r.onError,t):t),s=!r.scheduler&&!r.delay,c=dr(r),l=!0,d=!1,f,p=r.compareStructural?Re.structural:r.equals||Re.default,m=new Ln(a,function(){l||s?g():d||(d=!0,c(g))},r.onError,r.requiresObservable);function g(){if(d=!1,!m.isDisposed){var t=!1,n=f;m.track(function(){var n=Yt(!1,function(){return e(m)});t=l||!p(f,n),f=n}),(l&&r.fireImmediately||!l&&t)&&o(f,n,m),l=!1}}return(i=r)!=null&&(i=i.signal)!=null&&i.aborted||m.schedule_(),m.getDisposer_(r?.signal)}function pr(e,t){return function(){try{return t.apply(this,arguments)}catch(t){e.call(this,t)}}}var mr=`onBO`,hr=`onBUO`;function gr(e,t,n){return vr(mr,e,t,n)}function _r(e,t,n){return vr(hr,e,t,n)}function vr(e,t,n,r){var i=typeof r==`function`?pa(t,n):pa(t),a=v(r)?r:n,o=e+`L`;return i[o]?i[o].add(a):i[o]=new Set([a]),function(){var e=i[o];e&&(e.delete(a),e.size===0&&delete i[o])}}var yr=`never`,br=`always`,xr=`observed`;function Sr(e){e.isolateGlobalState===!0&&Sn();var t=e.useProxies,n=e.enforceActions;if(t!==void 0&&(L.useProxies=t===br?!0:t===yr?!1:typeof Proxy<`u`),t===`ifavailable`&&(L.verifyProxies=!0),n!==void 0){var r=n===br?br:n===xr;L.enforceActions=r,L.allowStateChanges=!(r===!0||r===br)}[`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`disableErrorBoundaries`,`safeDescriptors`].forEach(function(t){t in e&&(L[t]=!!e[t])}),L.allowStateReads=!L.observableRequiresReaction,L.disableErrorBoundaries===!0&&console.warn("WARNING: Debug feature only. MobX will NOT recover from errors when `disableErrorBoundaries` is enabled."),e.reactionScheduler&&Un(e.reactionScheduler)}function Cr(e,t,r,i){arguments.length>4&&n(`'extendObservable' expected 2-4 arguments`),typeof e!=`object`&&n(`'extendObservable' expects an object as first argument`),Vi(e)&&n(`'extendObservable' should not be used on maps, use map.merge instead`),x(t)||n(`'extendObservable' only accepts plain objects as second argument`),(Gr(t)||Gr(r))&&n(`Extending an object with another observable (object) is not supported`);var a=se(t);return ga(function(){var t=Zi(e,i)[k];E(a).forEach(function(e){t.extend_(e,a[e],r&&e in r?r[e]:!0)})}),e}function wr(e,t){return Tr(pa(e,t))}function Tr(e){var t={name:e.name_};return e.observing_&&e.observing_.length>0&&(t.dependencies=Or(e.observing_).map(Tr)),t}function Er(e,t){return Dr(pa(e,t))}function Dr(e){var t={name:e.name_};return Tn(e)&&(t.observers=Array.from(En(e)).map(Dr)),t}function Or(e){return Array.from(new Set(e))}var kr=0,Ar=function(e){function t(){var n=e.call(this,`FLOW_CANCELLED`)||this;return Object.setPrototypeOf(n,(this instanceof t?this.constructor:void 0).prototype),n.name=`FlowCancellationError`,n}O(t,e);var n=t.prototype;return n.toString=function(){return`Error: `+this.message},t}(Ce(Error));function jr(e){return e instanceof Ar}var Mr=tt(`flow`),Nr=tt(`flow.bound`,{bound:!0}),Pr=Object.assign(function(e,t){if(ke(t))return Mr.decorate_20223_(e,t);if(y(t))return Ee(e,t,Mr);arguments.length!==1&&n(`Flow expects single argument with generator function`);var r=e,i=r.name||`<unnamed flow>`,a=function(){var e=this,t=arguments,n=++kr,a=ar(i+` - runid: `+n+` - init`,r).apply(e,t),o,s=void 0,c=new Promise(function(e,t){var r=0;o=t;function c(e){s=void 0;var o;try{o=ar(i+` - runid: `+n+` - yield `+ r++,a.next).call(a,e)}catch(e){return t(e)}u(o)}function l(e){s=void 0;var o;try{o=ar(i+` - runid: `+n+` - yield `+ r++,a.throw).call(a,e)}catch(e){return t(e)}u(o)}function u(n){if(v(n?.then)){n.then(u,t);return}return n.done?e(n.value):(s=Promise.resolve(n.value),s.then(c,l))}c(void 0)});return c.cancel=ar(i+` - runid: `+n+` - cancel`,function(){try{s&&Fr(s);var e=a.return(void 0),t=Promise.resolve(e.value);t.then(_,_),Fr(t),o(new Ar)}catch(e){o(e)}}),c};return a.isMobXFlow=!0,a},Mr);Pr.bound=Te(Nr);function Fr(e){v(e.cancel)&&e.cancel()}function Ir(e){return e}function Lr(e){return e?.isMobXFlow===!0}function Rr(e,t,r){var i;if(Vi(e)||Ii(e)||N(e))i=ma(e);else if(ea(e)){if(!y(t))return n(`InterceptReads can only be used with a specific property, not with an object in general`);i=ma(e,t)}else return n(`Expected observable map, object or array as first array`);return i.dehancer===void 0?(i.dehancer=typeof t==`function`?t:r,function(){i.dehancer=void 0}):n(`An intercept reader was already established`)}function zr(e,t,n){return v(n)?Br(e,t,n):V(e,t)}function V(e,t){return ma(e).intercept_(t)}function Br(e,t,n){return ma(e,t).intercept_(n)}function Vr(e,t){return t===void 0?tn(e):ea(e)===!1||!e[k].values_.has(t)?!1:tn(pa(e,t))}function Hr(e){return arguments.length>1?n(`isComputed expects only 1 argument. Use isComputedProp to inspect the observability of a property`):Vr(e)}function Ur(e,t){return y(t)?Vr(e,t):n(`isComputed expected a property name as second argument`)}function Wr(e,t){return e?t===void 0?ea(e)||!!e[k]||Me(e)||z(e)||tn(e):Vi(e)||Ii(e)?n(`isObservable(object, propertyName) is not supported for arrays and maps. Use map.has or array.length instead.`):ea(e)?e[k].values_.has(t):!1:!1}function Gr(e){return arguments.length!==1&&n(`isObservable expects only 1 argument. Use isObservableProp to inspect the observability of a property`),Wr(e)}function Kr(e,t){return y(t)?Wr(e,t):n(`expected a property name as second argument`)}function qr(e){if(ea(e))return e[k].keys_();if(Vi(e)||Ki(e))return Array.from(e.keys());if(Ii(e))return e.map(function(e,t){return t});n(5)}function Jr(e){if(ea(e))return qr(e).map(function(t){return e[t]});if(Vi(e))return qr(e).map(function(t){return e.get(t)});if(Ki(e))return Array.from(e.values());if(Ii(e))return e.slice();n(6)}function Yr(e){if(ea(e))return qr(e).map(function(t){return[t,e[t]]});if(Vi(e))return qr(e).map(function(t){return[t,e.get(t)]});if(Ki(e))return Array.from(e.entries());if(Ii(e))return e.map(function(e,t){return[t,e]});n(7)}function Xr(e,t,r){if(arguments.length===2&&!Ki(e)){An();var i=t;try{for(var a in i)Xr(e,a,i[a])}finally{jn()}return}ea(e)?e[k].set_(t,r):Vi(e)?e.set(t,r):Ki(e)?e.add(t):Ii(e)?(typeof t!=`number`&&(t=parseInt(t,10)),t<0&&n(`Invalid index: '`+t+`'`),An(),t>=e.length&&(e.length=t+1),e[t]=r,jn()):n(8)}function Zr(e,t){ea(e)?e[k].delete_(t):Vi(e)||Ki(e)?e.delete(t):Ii(e)?(typeof t!=`number`&&(t=parseInt(t,10)),e.splice(t,1)):n(9)}function Qr(e,t){if(ea(e))return e[k].has_(t);if(Vi(e)||Ki(e))return e.has(t);if(Ii(e))return t>=0&&t<e.length;n(10)}function $r(e,t){if(Qr(e,t)){if(ea(e))return e[k].get_(t);if(Vi(e))return e.get(t);if(Ii(e))return e[t];n(11)}}function H(e,t,r){if(ea(e))return e[k].defineProperty_(t,r);n(39)}function ei(e){if(ea(e))return e[k].ownKeys_();n(38)}function ti(e,t,n,r){return v(n)?ri(e,t,n,r):ni(e,t,n)}function ni(e,t,n){return ma(e).observe_(t,n)}function ri(e,t,n,r){return ma(e,t).observe_(n,r)}function ii(e,t,n){return e.set(t,n),n}function ai(e,t){if(typeof e!=`object`||!e||e instanceof Date||!Gr(e))return e;if(N(e)||tn(e))return ai(e.get(),t);if(t.has(e))return t.get(e);if(Ii(e)){var n=ii(t,e,Array(e.length));return e.forEach(function(e,r){n[r]=ai(e,t)}),n}if(Ki(e)){var r=ii(t,e,new Set);return e.forEach(function(e){r.add(ai(e,t))}),r}if(Vi(e)){var i=ii(t,e,new Map);return e.forEach(function(e,n){i.set(n,ai(e,t))}),i}else{var a=ii(t,e,{});return ei(e).forEach(function(n){c.propertyIsEnumerable.call(e,n)&&(a[n]=ai(e[n],t))}),a}}function oi(e,t){return t&&n(`toJS no longer supports options`),ai(e,new Map)}function si(){var e=!1,t=[...arguments];typeof t[t.length-1]==`boolean`&&(e=t.pop());var r=ci(t);if(!r)return n(`'trace(break?)' can only be used inside a tracked computed value or a Reaction. Consider passing in the computed value or reaction explicitly`);r.isTracing_===nn.NONE&&console.log(`[mobx.trace] '`+r.name_+`' tracing enabled`),r.isTracing_=e?nn.BREAK:nn.LOG}function ci(e){switch(e.length){case 0:return L.trackingDerivation;case 1:return pa(e[0]);case 2:return pa(e[0],e[1])}}function li(e,t){t===void 0&&(t=void 0),An();try{return e.apply(t)}finally{jn()}}function ui(e,t,n){return arguments.length===1||t&&typeof t==`object`?fi(e,t):di(e,t,n||{})}function di(e,t,n){var r;if(typeof n.timeout==`number`){var i=Error(`WHEN_TIMEOUT`);r=setTimeout(function(){if(!o[k].isDisposed)if(o(),n.onError)n.onError(i);else throw i},n.timeout)}n.name=n.name||`When@`+h();var a=Gt(n.name+`-effect`,t),o=lr(function(t){Yt(!1,e)&&(t.dispose(),r&&clearTimeout(r),a())},n);return o}function fi(e,t){var r;if(t&&t.onError)return n(`the options 'onError' and 'promise' cannot be combined`);if(t!=null&&(r=t.signal)!=null&&r.aborted)return Object.assign(Promise.reject(Error(`WHEN_ABORTED`)),{cancel:function(){return null}});var i,a,o=new Promise(function(n,r){var o,s=di(e,n,he({},t,{onError:r}));i=function(){s(),r(Error(`WHEN_CANCELLED`))},a=function(){s(),r(Error(`WHEN_ABORTED`))},t==null||(o=t.signal)==null||o.addEventListener==null||o.addEventListener(`abort`,a)}).finally(function(){var e;return t==null||(e=t.signal)==null||e.removeEventListener==null?void 0:e.removeEventListener(`abort`,a)});return o.cancel=i,o}function pi(e){return e[k]}var mi={has:function(e,t){return L.trackingDerivation&&m(`detect new properties using the 'in' operator. Use 'has' from 'mobx' instead.`),pi(e).has_(t)},get:function(e,t){return pi(e).get_(t)},set:function(e,t,n){return y(t)?(pi(e).values_.has(t)||m(`add a new observable property through direct assignment. Use 'set' from 'mobx' instead.`),pi(e).set_(t,n,!0)??!0):!1},deleteProperty:function(e,t){return m(`delete properties from an observable object. Use 'remove' from 'mobx' instead.`),y(t)?pi(e).delete_(t,!0)??!0:!1},defineProperty:function(e,t,n){return m(`define property on an observable object. Use 'defineProperty' from 'mobx' instead.`),pi(e).defineProperty_(t,n)??!0},ownKeys:function(e){return L.trackingDerivation&&m(`iterate keys to detect added / removed properties. Use 'keys' from 'mobx' instead.`),pi(e).ownKeys_()},preventExtensions:function(e){n(13)}};function hi(e,t){var n;return p(),e=Zi(e,t),(n=e[k]).proxy_??(n.proxy_=new Proxy(e,mi))}function gi(e){return e.interceptors_!==void 0&&e.interceptors_.length>0}function _i(e,t){var n=e.interceptors_||=[];return n.push(t),g(function(){var e=n.indexOf(t);e!==-1&&n.splice(e,1)})}function vi(e,t){var r=I();try{for(var i=[].concat(e.interceptors_||[]),a=0,o=i.length;a<o&&(t=i[a](t),t&&!t.type&&n(14),t);a++);return t}finally{mn(r)}}function yi(e){return e.changeListeners_!==void 0&&e.changeListeners_.length>0}function bi(e,t){var n=e.changeListeners_||=[];return n.push(t),g(function(){var e=n.indexOf(t);e!==-1&&n.splice(e,1)})}function xi(e,t){var n=I(),r=e.changeListeners_;if(r){r=r.slice();for(var i=0,a=r.length;i<a;i++)r[i](t);mn(n)}}function Si(e,t,r){return ga(function(){var i=Zi(e,r)[k];t&&e[we]&&n(`makeObservable second arg must be nullish when using decorators. Mixing @decorator syntax with annotations is not supported.`),t??=Oe(e),E(t).forEach(function(e){return i.make_(e,t[e])})}),e}var Ci=Symbol(`mobx-keys`);function wi(e,t,r){return!x(e)&&!x(Object.getPrototypeOf(e))&&n(`'makeAutoObservable' can only be used for classes that don't have a superclass`),ea(e)&&n(`makeAutoObservable can only be used on objects not already made observable`),x(e)?Cr(e,e,t,r):(ga(function(){var n=Zi(e,r)[k];if(!e[Ci]){var i=Object.getPrototypeOf(e),a=new Set([].concat(E(e),E(i)));a.delete(`constructor`),a.delete(k),C(i,Ci,a)}e[Ci].forEach(function(e){return n.make_(e,t&&e in t?t[e]:!0)})}),e)}var Ti=`splice`,Ei=`update`,Di=1e4,Oi={get:function(e,t){var n=e[k];return t===k?n:t===`length`?n.getArrayLength_():typeof t==`string`&&!isNaN(t)?n.get_(parseInt(t)):D(ji,t)?ji[t]:e[t]},set:function(e,t,n){var r=e[k];return t===`length`&&r.setArrayLength_(n),typeof t==`symbol`||isNaN(t)?e[t]=n:r.set_(parseInt(t),n),!0},preventExtensions:function(){n(15)}},ki=function(){function e(e,t,n,r){e===void 0&&(e=`ObservableArray@`+h()),this.owned_=void 0,this.legacyMode_=void 0,this.atom_=void 0,this.values_=[],this.interceptors_=void 0,this.changeListeners_=void 0,this.enhancer_=void 0,this.dehancer=void 0,this.proxy_=void 0,this.lastKnownLength_=0,this.owned_=n,this.legacyMode_=r,this.atom_=new je(e),this.enhancer_=function(n,r){return t(n,r,e+`[..]`)}}var t=e.prototype;return t.dehanceValue_=function(e){return this.dehancer===void 0?e:this.dehancer(e)},t.dehanceValues_=function(e){return this.dehancer!==void 0&&e.length>0?e.map(this.dehancer):e},t.intercept_=function(e){return _i(this,e)},t.observe_=function(e,t){return t===void 0&&(t=!1),t&&e({observableKind:`array`,object:this.proxy_,debugObjectName:this.atom_.name_,type:`splice`,index:0,added:this.values_.slice(),addedCount:this.values_.length,removed:[],removedCount:0}),bi(this,e)},t.getArrayLength_=function(){return this.atom_.reportObserved(),this.values_.length},t.setArrayLength_=function(e){(typeof e!=`number`||isNaN(e)||e<0)&&n(`Out of range: `+e);var t=this.values_.length;if(e!==t)if(e>t){for(var r=Array(e-t),i=0;i<e-t;i++)r[i]=void 0;this.spliceWithArray_(t,0,r)}else this.spliceWithArray_(e,t-e)},t.updateArrayLength_=function(e,t){e!==this.lastKnownLength_&&n(16),this.lastKnownLength_+=t,this.legacyMode_&&t>0&&da(e+t+1)},t.spliceWithArray_=function(e,t,n){var r=this;sn(this.atom_);var i=this.values_.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=l),gi(this)){var a=vi(this,{object:this.proxy_,type:Ti,index:e,removedCount:t,added:n});if(!a)return l;t=a.removedCount,n=a.added}if(n=n.length===0?n:n.map(function(e){return r.enhancer_(e,void 0)}),this.legacyMode_||!0){var o=n.length-t;this.updateArrayLength_(i,o)}var s=this.spliceItemsIntoValues_(e,t,n);return(t!==0||n.length!==0)&&this.notifyArraySplice_(e,n,s),this.dehanceValues_(s)},t.spliceItemsIntoValues_=function(e,t,n){if(n.length<Di){var r;return(r=this.values_).splice.apply(r,[e,t].concat(n))}else{var i=this.values_.slice(e,e+t),a=this.values_.slice(e+t);this.values_.length+=n.length-t;for(var o=0;o<n.length;o++)this.values_[e+o]=n[o];for(var s=0;s<a.length;s++)this.values_[e+n.length+s]=a[s];return i}},t.notifyArrayChildUpdate_=function(e,t,n){var r=!this.owned_&&Wn(),i=yi(this),a=i||r?{observableKind:`array`,object:this.proxy_,type:Ei,debugObjectName:this.atom_.name_,index:e,newValue:t,oldValue:n}:null;r&&B(a),this.atom_.reportChanged(),i&&xi(this,a),r&&qn()},t.notifyArraySplice_=function(e,t,n){var r=!this.owned_&&Wn(),i=yi(this),a=i||r?{observableKind:`array`,object:this.proxy_,debugObjectName:this.atom_.name_,type:Ti,index:e,removed:n,added:t,removedCount:n.length,addedCount:t.length}:null;r&&B(a),this.atom_.reportChanged(),i&&xi(this,a),r&&qn()},t.get_=function(e){if(this.legacyMode_&&e>=this.values_.length){console.warn(`[mobx.array] Attempt to read an array index (`+e+`) that is out of bounds (`+this.values_.length+`). Please check length first. Out of bound indices will not be tracked by MobX`);return}return this.atom_.reportObserved(),this.dehanceValue_(this.values_[e])},t.set_=function(e,t){var r=this.values_;if(this.legacyMode_&&e>r.length&&n(17,e,r.length),e<r.length){sn(this.atom_);var i=r[e];if(gi(this)){var a=vi(this,{type:Ei,object:this.proxy_,index:e,newValue:t});if(!a)return;t=a.newValue}t=this.enhancer_(t,i),t!==i&&(r[e]=t,this.notifyArrayChildUpdate_(e,t,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]=t,this.spliceWithArray_(r.length,0,o)}},e}();function Ai(e,t,n,r){return n===void 0&&(n=`ObservableArray@`+h()),r===void 0&&(r=!1),p(),ga(function(){var i=new ki(n,t,r,!1);ee(i.values_,k,i);var a=new Proxy(i.values_,Oi);return i.proxy_=a,e&&e.length&&i.spliceWithArray_(0,0,e),a})}var ji={clear:function(){return this.splice(0)},replace:function(e){var t=this[k];return t.spliceWithArray_(0,t.values_.length,e)},toJSON:function(){return this.slice()},splice:function(e,t){var n=[...arguments].slice(2),r=this[k];switch(arguments.length){case 0:return[];case 1:return r.spliceWithArray_(e);case 2:return r.spliceWithArray_(e,t)}return r.spliceWithArray_(e,t,n)},spliceWithArray:function(e,t,n){return this[k].spliceWithArray_(e,t,n)},push:function(){var e=this[k],t=[...arguments];return e.spliceWithArray_(e.values_.length,0,t),e.values_.length},pop:function(){return this.splice(Math.max(this[k].values_.length-1,0),1)[0]},shift:function(){return this.splice(0,1)[0]},unshift:function(){var e=this[k],t=[...arguments];return e.spliceWithArray_(0,0,t),e.values_.length},reverse:function(){return L.trackingDerivation&&n(37,`reverse`),this.replace(this.slice().reverse()),this},sort:function(){L.trackingDerivation&&n(37,`sort`);var e=this.slice();return e.sort.apply(e,arguments),this.replace(e),this},remove:function(e){var t=this[k],n=t.dehanceValues_(t.values_).indexOf(e);return n>-1?(this.splice(n,1),!0):!1}};U(`at`,Mi),U(`concat`,Mi),U(`flat`,Mi),U(`includes`,Mi),U(`indexOf`,Mi),U(`join`,Mi),U(`lastIndexOf`,Mi),U(`slice`,Mi),U(`toString`,Mi),U(`toLocaleString`,Mi),U(`toSorted`,Mi),U(`toSpliced`,Mi),U(`with`,Mi),U(`every`,Ni),U(`filter`,Ni),U(`find`,Ni),U(`findIndex`,Ni),U(`findLast`,Ni),U(`findLastIndex`,Ni),U(`flatMap`,Ni),U(`forEach`,Ni),U(`map`,Ni),U(`some`,Ni),U(`toReversed`,Ni),U(`reduce`,Pi),U(`reduceRight`,Pi);function U(e,t){typeof Array.prototype[e]==`function`&&(ji[e]=t(e))}function Mi(e){return function(){var t=this[k];t.atom_.reportObserved();var n=t.dehanceValues_(t.values_);return n[e].apply(n,arguments)}}function Ni(e){return function(t,n){var r=this,i=this[k];return i.atom_.reportObserved(),i.dehanceValues_(i.values_)[e](function(e,i){return t.call(n,e,i,r)})}}function Pi(e){return function(){var t=this,n=this[k];n.atom_.reportObserved();var r=n.dehanceValues_(n.values_),i=arguments[0];return arguments[0]=function(e,n,r){return i(e,n,r,t)},r[e].apply(r,arguments)}}var Fi=te(`ObservableArrayAdministration`,ki);function Ii(e){return b(e)&&Fi(e[k])}var Li={},Ri=`add`,zi=`delete`,Bi=function(){function e(e,t,r){var i=this;t===void 0&&(t=ze),r===void 0&&(r=`ObservableMap@`+h()),this.enhancer_=void 0,this.name_=void 0,this[k]=Li,this.data_=void 0,this.hasMap_=void 0,this.keysAtom_=void 0,this.interceptors_=void 0,this.changeListeners_=void 0,this.dehancer=void 0,this.enhancer_=t,this.name_=r,v(Map)||n(18),ga(function(){i.keysAtom_=Ne(i.name_+`.keys()`),i.data_=new Map,i.hasMap_=new Map,e&&i.merge(e)})}var t=e.prototype;return t.has_=function(e){return this.data_.has(e)},t.has=function(e){var t=this;if(!L.trackingDerivation)return this.has_(e);var n=this.hasMap_.get(e);if(!n){var r=n=new $t(this.has_(e),Ve,this.name_+`.`+ae(e)+`?`,!1);this.hasMap_.set(e,r),_r(r,function(){return t.hasMap_.delete(e)})}return n.get()},t.set=function(e,t){var n=this.has_(e);if(gi(this)){var r=vi(this,{type:n?Ei:Ri,object:this,newValue:t,name:e});if(!r)return this;t=r.newValue}return n?this.updateValue_(e,t):this.addValue_(e,t),this},t.delete=function(e){var t=this;if(sn(this.keysAtom_),gi(this)&&!vi(this,{type:zi,object:this,name:e}))return!1;if(this.has_(e)){var n=Wn(),r=yi(this),i=r||n?{observableKind:`map`,debugObjectName:this.name_,type:zi,object:this,oldValue:this.data_.get(e).value_,name:e}:null;return n&&B(i),li(function(){var n;t.keysAtom_.reportChanged(),(n=t.hasMap_.get(e))==null||n.setNewValue_(!1),t.data_.get(e).setNewValue_(void 0),t.data_.delete(e)}),r&&xi(this,i),n&&qn(),!0}return!1},t.updateValue_=function(e,t){var n=this.data_.get(e);if(t=n.prepareNewValue_(t),t!==L.UNCHANGED){var r=Wn(),i=yi(this),a=i||r?{observableKind:`map`,debugObjectName:this.name_,type:Ei,object:this,oldValue:n.value_,name:e,newValue:t}:null;r&&B(a),n.setNewValue_(t),i&&xi(this,a),r&&qn()}},t.addValue_=function(e,t){var n=this;sn(this.keysAtom_),li(function(){var r,i=new $t(t,n.enhancer_,n.name_+`.`+ae(e),!1);n.data_.set(e,i),t=i.value_,(r=n.hasMap_.get(e))==null||r.setNewValue_(!0),n.keysAtom_.reportChanged()});var r=Wn(),i=yi(this),a=i||r?{observableKind:`map`,debugObjectName:this.name_,type:Ri,object:this,name:e,newValue:t}:null;r&&B(a),i&&xi(this,a),r&&qn()},t.get=function(e){return this.has(e)?this.dehanceValue_(this.data_.get(e).get()):this.dehanceValue_(void 0)},t.dehanceValue_=function(e){return this.dehancer===void 0?e:this.dehancer(e)},t.keys=function(){return this.keysAtom_.reportObserved(),this.data_.keys()},t.values=function(){var e=this,t=this.keys();return Hi({next:function(){var n=t.next(),r=n.done,i=n.value;return{done:r,value:r?void 0:e.get(i)}}})},t.entries=function(){var e=this,t=this.keys();return Hi({next:function(){var n=t.next(),r=n.done,i=n.value;return{done:r,value:r?void 0:[i,e.get(i)]}}})},t[Symbol.iterator]=function(){return this.entries()},t.forEach=function(e,t){for(var n=me(this),r;!(r=n()).done;){var i=r.value,a=i[0],o=i[1];e.call(t,o,a,this)}},t.merge=function(e){var t=this;return Vi(e)&&(e=new Map(e)),li(function(){x(e)?T(e).forEach(function(n){return t.set(n,e[n])}):Array.isArray(e)?e.forEach(function(e){var n=e[0],r=e[1];return t.set(n,r)}):ne(e)?(re(e)||n(19,e),e.forEach(function(e,n){return t.set(n,e)})):e!=null&&n(20,e)}),this},t.clear=function(){var e=this;li(function(){pn(function(){for(var t=me(e.keys()),n;!(n=t()).done;){var r=n.value;e.delete(r)}})})},t.replace=function(e){var t=this;return li(function(){for(var n=Ui(e),r=new Map,i=!1,a=me(t.data_.keys()),o;!(o=a()).done;){var s=o.value;if(!n.has(s))if(t.delete(s))i=!0;else{var c=t.data_.get(s);r.set(s,c)}}for(var l=me(n.entries()),u;!(u=l()).done;){var d=u.value,f=d[0],p=d[1],m=t.data_.has(f);if(t.set(f,p),t.data_.has(f)){var h=t.data_.get(f);r.set(f,h),m||(i=!0)}}if(!i)if(t.data_.size!==r.size)t.keysAtom_.reportChanged();else for(var g=t.data_.keys(),_=r.keys(),v=g.next(),y=_.next();!v.done;){if(v.value!==y.value){t.keysAtom_.reportChanged();break}v=g.next(),y=_.next()}t.data_=r}),this},t.toString=function(){return`[object ObservableMap]`},t.toJSON=function(){return Array.from(this)},t.observe_=function(e,t){return t===!0&&n("`observe` doesn't support fireImmediately=true in combination with maps."),bi(this,e)},t.intercept_=function(e){return _i(this,e)},pe(e,[{key:`size`,get:function(){return this.keysAtom_.reportObserved(),this.data_.size}},{key:Symbol.toStringTag,get:function(){return`Map`}}])}(),Vi=te(`ObservableMap`,Bi);function Hi(e){return e[Symbol.toStringTag]=`MapIterator`,Sa(e)}function Ui(e){if(ne(e)||Vi(e))return e;if(Array.isArray(e))return new Map(e);if(x(e)){var t=new Map;for(var r in e)t.set(r,e[r]);return t}else return n(21,e)}var Wi={},Gi=function(){function e(e,t,r){var i=this;t===void 0&&(t=ze),r===void 0&&(r=`ObservableSet@`+h()),this.name_=void 0,this[k]=Wi,this.data_=new Set,this.atom_=void 0,this.changeListeners_=void 0,this.interceptors_=void 0,this.dehancer=void 0,this.enhancer_=void 0,this.name_=r,v(Set)||n(22),this.enhancer_=function(e,n){return t(e,n,r)},ga(function(){i.atom_=Ne(i.name_),e&&i.replace(e)})}var t=e.prototype;return t.dehanceValue_=function(e){return this.dehancer===void 0?e:this.dehancer(e)},t.clear=function(){var e=this;li(function(){pn(function(){for(var t=me(e.data_.values()),n;!(n=t()).done;){var r=n.value;e.delete(r)}})})},t.forEach=function(e,t){for(var n=me(this),r;!(r=n()).done;){var i=r.value;e.call(t,i,i,this)}},t.add=function(e){var t=this;if(sn(this.atom_),gi(this)){var n=vi(this,{type:Ri,object:this,newValue:e});if(!n)return this;e=n.newValue}if(!this.has(e)){li(function(){t.data_.add(t.enhancer_(e,void 0)),t.atom_.reportChanged()});var r=Wn(),i=yi(this),a=i||r?{observableKind:`set`,debugObjectName:this.name_,type:Ri,object:this,newValue:e}:null;r&&B(a),i&&xi(this,a),r&&qn()}return this},t.delete=function(e){var t=this;if(gi(this)&&!vi(this,{type:zi,object:this,oldValue:e}))return!1;if(this.has(e)){var n=Wn(),r=yi(this),i=r||n?{observableKind:`set`,debugObjectName:this.name_,type:zi,object:this,oldValue:e}:null;return n&&B(i),li(function(){t.atom_.reportChanged(),t.data_.delete(e)}),r&&xi(this,i),n&&qn(),!0}return!1},t.has=function(e){return this.atom_.reportObserved(),this.data_.has(this.dehanceValue_(e))},t.entries=function(){var e=this.values();return qi({next:function(){var t=e.next(),n=t.value,r=t.done;return r?{value:void 0,done:r}:{value:[n,n],done:r}}})},t.keys=function(){return this.values()},t.values=function(){this.atom_.reportObserved();var e=this,t=this.data_.values();return qi({next:function(){var n=t.next(),r=n.value,i=n.done;return i?{value:void 0,done:i}:{value:e.dehanceValue_(r),done:i}}})},t.intersection=function(e){return w(e)&&!Ki(e)?e.intersection(this):new Set(this).intersection(e)},t.union=function(e){return w(e)&&!Ki(e)?e.union(this):new Set(this).union(e)},t.difference=function(e){return new Set(this).difference(e)},t.symmetricDifference=function(e){return w(e)&&!Ki(e)?e.symmetricDifference(this):new Set(this).symmetricDifference(e)},t.isSubsetOf=function(e){return new Set(this).isSubsetOf(e)},t.isSupersetOf=function(e){return new Set(this).isSupersetOf(e)},t.isDisjointFrom=function(e){return w(e)&&!Ki(e)?e.isDisjointFrom(this):new Set(this).isDisjointFrom(e)},t.replace=function(e){var t=this;return Ki(e)&&(e=new Set(e)),li(function(){Array.isArray(e)||w(e)?(t.clear(),e.forEach(function(e){return t.add(e)})):e!=null&&n(`Cannot initialize set from `+e)}),this},t.observe_=function(e,t){return t===!0&&n("`observe` doesn't support fireImmediately=true in combination with sets."),bi(this,e)},t.intercept_=function(e){return _i(this,e)},t.toJSON=function(){return Array.from(this)},t.toString=function(){return`[object ObservableSet]`},t[Symbol.iterator]=function(){return this.values()},pe(e,[{key:`size`,get:function(){return this.atom_.reportObserved(),this.data_.size}},{key:Symbol.toStringTag,get:function(){return`Set`}}])}(),Ki=te(`ObservableSet`,Gi);function qi(e){return e[Symbol.toStringTag]=`SetIterator`,Sa(e)}var Ji=Object.create(null),Yi=`remove`,Xi=function(){function e(e,t,r,i){t===void 0&&(t=new Map),i===void 0&&(i=vt),this.target_=void 0,this.values_=void 0,this.name_=void 0,this.defaultAnnotation_=void 0,this.keysAtom_=void 0,this.changeListeners_=void 0,this.interceptors_=void 0,this.proxy_=void 0,this.isPlainObject_=void 0,this.appliedAnnotations_=void 0,this.pendingKeys_=void 0,this.target_=e,this.values_=t,this.name_=r,this.defaultAnnotation_=i,this.keysAtom_=new je(this.name_+`.keys`),this.isPlainObject_=x(this.target_),wa(this.defaultAnnotation_)||n(`defaultAnnotation must be valid annotation`),this.appliedAnnotations_={}}var t=e.prototype;return t.getObservablePropValue_=function(e){return this.values_.get(e).get()},t.setObservablePropValue_=function(e,t){var n=this.values_.get(e);if(n instanceof en)return n.set(t),!0;if(gi(this)){var r=vi(this,{type:Ei,object:this.proxy_||this.target_,name:e,newValue:t});if(!r)return null;t=r.newValue}if(t=n.prepareNewValue_(t),t!==L.UNCHANGED){var i=yi(this),a=Wn(),o=i||a?{type:Ei,observableKind:`object`,debugObjectName:this.name_,object:this.proxy_||this.target_,oldValue:n.value_,name:e,newValue:t}:null;a&&B(o),n.setNewValue_(t),i&&xi(this,o),a&&qn()}return!0},t.get_=function(e){return L.trackingDerivation&&!D(this.target_,e)&&this.has_(e),this.target_[e]},t.set_=function(e,t,n){return n===void 0&&(n=!1),D(this.target_,e)?this.values_.has(e)?this.setObservablePropValue_(e,t):n?Reflect.set(this.target_,e,t):(this.target_[e]=t,!0):this.extend_(e,{value:t,enumerable:!0,writable:!0,configurable:!0},this.defaultAnnotation_,n)},t.has_=function(e){if(!L.trackingDerivation)return e in this.target_;this.pendingKeys_||=new Map;var t=this.pendingKeys_.get(e);return t||(t=new $t(e in this.target_,Ve,this.name_+`.`+ae(e)+`?`,!1),this.pendingKeys_.set(e,t)),t.get()},t.make_=function(e,t){if(t===!0&&(t=this.defaultAnnotation_),t!==!1){if(na(this,t,e),!(e in this.target_)){var r;if((r=this.target_[we])!=null&&r[e])return;n(1,t.annotationType_,this.name_+`.`+e.toString())}for(var i=this.target_;i&&i!==c;){var a=o(i,e);if(a){var s=t.make_(this,e,a,i);if(s===0)return;if(s===1)break}i=Object.getPrototypeOf(i)}ta(this,t,e)}},t.extend_=function(e,t,n,r){if(r===void 0&&(r=!1),n===!0&&(n=this.defaultAnnotation_),n===!1)return this.defineProperty_(e,t,r);na(this,n,e);var i=n.extend_(this,e,t,r);return i&&ta(this,n,e),i},t.defineProperty_=function(e,t,n){n===void 0&&(n=!1),sn(this.keysAtom_);try{An();var r=this.delete_(e);if(!r)return r;if(gi(this)){var i=vi(this,{object:this.proxy_||this.target_,name:e,type:Ri,newValue:t.value});if(!i)return null;var a=i.newValue;t.value!==a&&(t=he({},t,{value:a}))}if(n){if(!Reflect.defineProperty(this.target_,e,t))return!1}else s(this.target_,e,t);this.notifyPropertyAddition_(e,t.value)}finally{jn()}return!0},t.defineObservableProperty_=function(e,t,n,r){r===void 0&&(r=!1),sn(this.keysAtom_);try{An();var i=this.delete_(e);if(!i)return i;if(gi(this)){var a=vi(this,{object:this.proxy_||this.target_,name:e,type:Ri,newValue:t});if(!a)return null;t=a.newValue}var o=$i(e),c={configurable:L.safeDescriptors?this.isPlainObject_:!0,enumerable:!0,get:o.get,set:o.set};if(r){if(!Reflect.defineProperty(this.target_,e,c))return!1}else s(this.target_,e,c);var l=new $t(t,n,this.name_+`.`+e.toString(),!1);this.values_.set(e,l),this.notifyPropertyAddition_(e,l.value_)}finally{jn()}return!0},t.defineComputedProperty_=function(e,t,n){n===void 0&&(n=!1),sn(this.keysAtom_);try{An();var r=this.delete_(e);if(!r)return r;if(gi(this)&&!vi(this,{object:this.proxy_||this.target_,name:e,type:Ri,newValue:void 0}))return null;t.name||=this.name_+`.`+e.toString(),t.context=this.proxy_||this.target_;var i=$i(e),a={configurable:L.safeDescriptors?this.isPlainObject_:!0,enumerable:!1,get:i.get,set:i.set};if(n){if(!Reflect.defineProperty(this.target_,e,a))return!1}else s(this.target_,e,a);this.values_.set(e,new en(t)),this.notifyPropertyAddition_(e,void 0)}finally{jn()}return!0},t.delete_=function(e,t){if(t===void 0&&(t=!1),sn(this.keysAtom_),!D(this.target_,e))return!0;if(gi(this)&&!vi(this,{object:this.proxy_||this.target_,name:e,type:Yi}))return null;try{var n;An();var r=yi(this),i=Wn(),a=this.values_.get(e),s=void 0;if(!a&&(r||i)&&(s=o(this.target_,e)?.value),t){if(!Reflect.deleteProperty(this.target_,e))return!1}else delete this.target_[e];if(delete this.appliedAnnotations_[e],a&&(this.values_.delete(e),a instanceof $t&&(s=a.value_),Nn(a)),this.keysAtom_.reportChanged(),(n=this.pendingKeys_)==null||(n=n.get(e))==null||n.set(e in this.target_),r||i){var c={type:Yi,observableKind:`object`,object:this.proxy_||this.target_,debugObjectName:this.name_,oldValue:s,name:e};i&&B(c),r&&xi(this,c),i&&qn()}}finally{jn()}return!0},t.observe_=function(e,t){return t===!0&&n("`observe` doesn't support the fire immediately property for observable objects."),bi(this,e)},t.intercept_=function(e){return _i(this,e)},t.notifyPropertyAddition_=function(e,t){var n,r=yi(this),i=Wn();if(r||i){var a=r||i?{type:Ri,observableKind:`object`,debugObjectName:this.name_,object:this.proxy_||this.target_,name:e,newValue:t}:null;i&&B(a),r&&xi(this,a),i&&qn()}(n=this.pendingKeys_)==null||(n=n.get(e))==null||n.set(!0),this.keysAtom_.reportChanged()},t.ownKeys_=function(){return this.keysAtom_.reportObserved(),E(this.target_)},t.keys_=function(){return this.keysAtom_.reportObserved(),Object.keys(this.target_)},e}();function Zi(e,t){if(t&&ea(e)&&n(`Options can't be provided for already observable objects.`),D(e,k))return ma(e)instanceof Xi||n(`Cannot convert '`+ha(e)+`' into observable object:
82
82
  The target is already observable of different type.
83
- Extending builtins is not supported.`),e;Object.isExtensible(e)||n(`Cannot make the designated object observable; it is not extensible`);var r=t?.name??(x(e)?`ObservableObject`:e.constructor.name)+`@`+h();return C(e,k,new Yi(e,new Map,String(r),Ft(t))),e}var Zi=te(`ObservableObjectAdministration`,Yi);function Qi(e){return qi[e]||(qi[e]={get:function(){return this[k].getObservablePropValue_(e)},set:function(t){return this[k].setObservablePropValue_(e,t)}})}function $i(e){return b(e)?Zi(e[k]):!1}function ea(e,t,n){var r;e.appliedAnnotations_[n]=t,(r=e.target_[we])==null||delete r[n]}function ta(e,t,r){if(Ca(t)||n(`Cannot annotate '`+e.name_+`.`+r.toString()+`': Invalid annotation.`),!Ge(t)&&D(e.appliedAnnotations_,r)){var i=e.name_+`.`+r.toString(),a=e.appliedAnnotations_[r].annotationType_,o=t.annotationType_;n(`Cannot apply '`+o+`' to '`+i+`':`+(`
83
+ Extending builtins is not supported.`),e;Object.isExtensible(e)||n(`Cannot make the designated object observable; it is not extensible`);var r=t?.name??(x(e)?`ObservableObject`:e.constructor.name)+`@`+h();return C(e,k,new Xi(e,new Map,String(r),Ft(t))),e}var Qi=te(`ObservableObjectAdministration`,Xi);function $i(e){return Ji[e]||(Ji[e]={get:function(){return this[k].getObservablePropValue_(e)},set:function(t){return this[k].setObservablePropValue_(e,t)}})}function ea(e){return b(e)?Qi(e[k]):!1}function ta(e,t,n){var r;e.appliedAnnotations_[n]=t,(r=e.target_[we])==null||delete r[n]}function na(e,t,r){if(wa(t)||n(`Cannot annotate '`+e.name_+`.`+r.toString()+`': Invalid annotation.`),!Ge(t)&&D(e.appliedAnnotations_,r)){var i=e.name_+`.`+r.toString(),a=e.appliedAnnotations_[r].annotationType_,o=t.annotationType_;n(`Cannot apply '`+o+`' to '`+i+`':`+(`
84
84
  The field is already annotated with '`+a+`'.`)+`
85
85
  Re-annotating fields is not allowed.
86
- Use 'override' annotation for methods overridden by subclass.`)}}var na=ca(0),ra=function(){var e=!1,t={};return Object.defineProperty(t,`0`,{set:function(){e=!0}}),Object.create(t)[0]=1,e===!1}(),ia=0,aa=function(){};function oa(e,t){Object.setPrototypeOf?Object.setPrototypeOf(e.prototype,t):e.prototype.__proto__===void 0?e.prototype=t:e.prototype.__proto__=t}oa(aa,Array.prototype);var sa=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,ha(function(){var e=new Oi(r,n,i,!0);e.proxy_=a,ee(a,k,e),t&&t.length&&a.spliceWithArray(0,0,t),ra&&Object.defineProperty(a,`0`,na)}),a}O(t,e);var n=t.prototype;return n.concat=function(){this[k].atom_.reportObserved();var e=[...arguments];return Array.prototype.concat.apply(this.slice(),e.map(function(e){return Fi(e)?e.slice():e}))},n[Symbol.iterator]=function(){var e=this,t=0;return xa({next:function(){return t<e.length?{value:e[t++],done:!1}:{done:!0,value:void 0}}})},pe(t,[{key:`length`,get:function(){return this[k].getArrayLength_()},set:function(e){this[k].setArrayLength_(e)}},{key:Symbol.toStringTag,get:function(){return`Array`}}])}(aa);Object.entries(Ai).forEach(function(e){var t=e[0],n=e[1];t!==`concat`&&C(sa.prototype,t,n)});function ca(e){return{enumerable:!1,configurable:!0,get:function(){return this[k].get_(e)},set:function(t){this[k].set_(e,t)}}}function la(e){s(sa.prototype,``+e,ca(e))}function ua(e){if(e>ia){for(var t=ia;t<e+100;t++)la(t);ia=e}}ua(1e3);function da(e,t,n){return new sa(e,t,n)}function fa(e,t){if(typeof e==`object`&&e){if(Fi(e))return t!==void 0&&n(23),e[k].atom_;if(Gi(e))return e.atom_;if(Bi(e)){if(t===void 0)return e.keysAtom_;var r=e.data_.get(t)||e.hasMap_.get(t);return r||n(25,t,ma(e)),r}if($i(e)){if(!t)return n(26);var i=e[k].values_.get(t);return i||n(27,t,ma(e)),i}if(Me(e)||tn(e)||z(e))return e}else if(v(e)&&z(e[k]))return e[k];n(28)}function pa(e,t){if(e||n(29),t!==void 0)return pa(fa(e,t));if(Me(e)||tn(e)||z(e)||Bi(e)||Gi(e))return e;if(e[k])return e[k];n(24,e)}function ma(e,t){var n;if(t!==void 0)n=fa(e,t);else if(cr(e))return e.name;else n=$i(e)||Bi(e)||Gi(e)?pa(e):fa(e);return n.name_}function ha(e){var t=I(),n=Xt(!0);An();try{return e()}finally{jn(),Zt(n),mn(t)}}var ga=c.toString;function _a(e,t,n){return n===void 0&&(n=-1),va(e,t,n)}function va(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=ga.call(e);if(o!==ga.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=ya(e),t=ya(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(!va(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(!(D(t,m)&&va(e[m],t[m],n-1,r,i)))return!1}}return r.pop(),i.pop(),!0}function ya(e){return Fi(e)?e.slice():ne(e)||Bi(e)||w(e)||Gi(e)?Array.from(e.entries()):e}var ba=i().Iterator?.prototype||{};function xa(e){return e[Symbol.iterator]=Sa,Object.assign(Object.create(ba),e)}function Sa(){return this}function Ca(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:Jn,extras:{getDebugName:ma},$mobx:k}),e.$mobx=k,e.FlowCancellationError=Ar,e.ObservableMap=zi,e.ObservableSet=Wi,e.Reaction=Ln,e._allowStateChanges=Yt,e._allowStateChangesInsideComputed=sr,e._allowStateReadsEnd=gn,e._allowStateReadsStart=hn,e._autoAction=or,e._endAction=Jt,e._getAdministration=pa,e._getGlobalState=Cn,e._interceptReads=Rr,e._isComputingDerivation=F,e._resetGlobalState=wn,e._startAction=qt,e.action=ar,e.autorun=lr,e.comparer=Re,e.computed=Bt,e.configure=Sr,e.createAtom=Ne,e.defineProperty=H,e.entries=Yr,e.extendObservable=Cr,e.flow=Pr,e.flowResult=Ir,e.get=$r,e.getAtom=fa,e.getDebugName=ma,e.getDependencyTree=wr,e.getObserverTree=Er,e.has=Qr,e.intercept=zr,e.isAction=cr,e.isBoxedObservable=N,e.isComputed=Hr,e.isComputedProp=Ur,e.isFlow=Lr,e.isFlowCancellationError=jr,e.isObservable=Gr,e.isObservableArray=Fi,e.isObservableMap=Bi,e.isObservableObject=$i,e.isObservableProp=Kr,e.isObservableSet=Gi,e.keys=qr,e.makeAutoObservable=wi,e.makeObservable=Si,e.observable=j,e.observe=ti,e.onBecomeObserved=gr,e.onBecomeUnobserved=_r,e.onReactionError=Rn,e.override=We,e.ownKeys=ei,e.reaction=fr,e.remove=Zr,e.runInAction=sr,e.set=Xr,e.spy=Jn,e.toJS=oi,e.trace=si,e.transaction=li,e.untracked=pn,e.values=Jr,e.when=ui})),_v=me(((e,t)=>{process.env.NODE_ENV===`production`?t.exports=hv():t.exports=gv()}))();function vv(e){if(Array.isArray(e))return Object.freeze(e.map(vv));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]=vv(r);return Object.freeze(t)}return e}function yv(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 bv(e){return typeof e==`string`?e:String(e)}function xv(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 Sv(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 Cv(e,t){if(!(e instanceof U))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=wv(e.style).add(t),n}function wv(e){if(e instanceof V)return e;try{return V.parse(e)}catch(t){throw t instanceof Rr?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 Tv(e){return{fn:(t=>Cv(t,e)),argTypes:[`liftable`],arity:{kind:`exact`},returnType:`T`}}function Ev(e){return{fn:((t,n)=>Cv(n,new V({[e]:hn.parse(t)}))),argTypes:[`string`,`liftable`],arity:{kind:`exact`},returnType:`T`}}function Dv(e,t){return new V({[e]:t})}function Ov(){let e={};for(let t of Fr)e[t]=Tv(Dv(t,!0)),e[`not_${t}`]=Tv(Dv(t,!1));for(let[t,n]of Object.entries(Lr))e[t]=Tv(Dv(n,!0));return e}const kv={fn:((e,t)=>Cv(t,V.parse(e))),argTypes:[`string`,`liftable`],arity:{kind:`exact`},returnType:`T`},Av={fn:((e,t)=>Cv(t,new V({link:e}))),argTypes:[`string`,`liftable`],arity:{kind:`exact`},returnType:`T`};function jv(){return{fg:Ev(`color`),bg:Ev(`bgcolor`),...Ov(),link:Av,style:kv}}function Mv(e,t){if(!qn.test(e.trim()))throw TypeError(`${t} expected a color (#RRGGBB or #RRGGBBAA), got ${JSON.stringify(e)} — to use a palette name here, wrap it: ${t} (color ${JSON.stringify(e)}) …`);return Jn(e)}function Nv(e,t){return{fn:t,argTypes:e,arity:{kind:`exact`},returnType:`string`}}function Pv(e,t,n,r){let i=r===void 0||e>=r.min&&e<=r.max;if(!Number.isFinite(e)||!i){let i=r===void 0?`a finite number`:`within ${r.min}..${r.max} (${r.note})`;throw RangeError(`${t}'s ${n} must be ${i}, got ${e}`)}return e}const Fv=Nv([`string`,`int`],((e,t)=>tr(Mv(e,`darken`),t).hex)),Iv=Nv([`string`,`int`],((e,t)=>tr(Mv(e,`lighten`),-t).hex)),Lv={min:0,max:100,note:`0 = from, 100 = toward`},Rv=Nv([`string`,`string`,`float`],((e,t,n)=>Cn(Mv(e,`mix`),Mv(t,`mix`),Pv(n,`mix`,`percentage`,Lv)/100).hex)),zv={min:1,max:21,note:`4.5 = AA body text, 3 = AA large text`},Bv=Nv([`string`],(e=>nr(Mv(e,`contrastOn`)).hex)),Vv=e=>Nv([`string`,`string`,`float`],((t,n,r)=>rr(Mv(t,`readableOn`),Mv(n,`readableOn`),Pv(r,`readableOn`,`ratio`,zv),e()).hex)),Hv={hueShift:`shiftHue`,chromaScale:`scaleChroma`,lightnessScale:`scaleLightness`,lightnessShift:`shiftLightness`};function Uv(){let e={};for(let[t,n]of Object.entries(Hv)){let r=t;e[n]=Nv([`string`,`float`],((e,t)=>{let i={...In,[r]:Pv(t,n,`amount`)};return B.fromRgba(Mv(e,n)).applyKey(i).toRgba().hex}))}return e}function Wv(e=()=>F.TRUECOLOR){return{darken:Fv,lighten:Iv,mix:Rv,contrastOn:Bv,readableOn:Vv(e),...Uv()}}function Gv(e,t){if(e.length%2!=0)throw RangeError(`ramp's last stop (position ${String(e[e.length-1])}) has no color — stops are <position> <color> pairs`);let n=[];for(let r=0;r<e.length;r+=2)n.push({at:e[r],color:Yn(t,e[r+1])});return n}function Kv(e){return{color:{fn:(t=>Yn(e(),t).hex),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},ramp:{fn:((t,n,...r)=>new Nr(Mr(n),Gv(r,e())).at(t).hex),argTypes:[`float`,`string`],arity:{kind:`alternating`,minimum:4},returnType:`string`}}}function qv(e){return{...jv(),...Wv(e)}}new V({color:`red`,dim:!0});const Jv=/^(?:(?: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,Yv=/^(?<family>opus|sonnet|haiku)\s+(?<major>\d+)(?:\.(?<minor>\d))?$/i;function Xv(e){if(!e)return`Claude`;let t=e.trim().replace(/\s*\([^)]*\)\s*$/,``).replace(/\s*\[[^\]]*\]\s*$/,``).trim(),n=t.match(Jv);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(Yv);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 Zv(e){let t=e.match(Yv);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 Qv(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 $v(e){return e.toLocaleString()}function ey(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 ty(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 ny=[`▁`,`▂`,`▃`,`▄`,`▅`,`▆`,`▇`,`█`],ry=ny.length;function iy(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*(ry-1));o+=ny[t]}return o}function ay(e){let t=[];for(let n of e.split(`,`)){let e=n.trim();if(e===``)continue;let r=Number(e);if(!Number.isFinite(r))throw TypeError(`sparkline: non-numeric series element ${JSON.stringify(n)}`);t.push(r)}return t}function oy(e,t,n){if(n.length!==0)throw Error(`${e}: takes at most ${t.length} optional argument${t.length===1?``:`s`} (${t.join(`, `)}), got ${t.length+n.length}`)}const sy=Ka(),cy=[...ao];function ly(){return{basename:{fn:e=>l(e),argTypes:[`string`],arity:{kind:`exact`}},dirname:{fn:e=>u(e),argTypes:[`string`],arity:{kind:`exact`}},abbreviatePath:{fn:e=>Qv(e),argTypes:[`string`],arity:{kind:`exact`}},int:{fn:e=>Math.trunc(xv(e)),argTypes:[`value`],arity:{kind:`exact`}},string:{fn:e=>bv(e),argTypes:[`value`],arity:{kind:`exact`}},bool:{fn:e=>Sv(e),argTypes:[`value`],arity:{kind:`exact`}},urlEncode:{fn:e=>encodeURIComponent(e),argTypes:[`string`],arity:{kind:`exact`}},themes:{fn:()=>sy,argTypes:[],arity:{kind:`exact`}},styles:{fn:()=>cy,argTypes:[],arity:{kind:`exact`}},sparkline:{fn:(e,t,...n)=>(oy(`sparkline`,[`width`],n),iy(ay(e),t)),argTypes:[`string`,`int`],arity:{kind:`variadic`}},cascade:{fn:(e,...t)=>ty(e,ey(t)),argTypes:[`float`,`string`],arity:{kind:`variadic`}}}}function uy(e=()=>new Date){return{minutesUntilReset:{fn:t=>Math.round(Math.max(0,t*1e3-e().getTime())/6e4),argTypes:[`int`],arity:{kind:`exact`}},formatInteger:{fn:e=>$v(e),argTypes:[`int`],arity:{kind:`exact`}},round:{fn:e=>Math.round(e),argTypes:[`float`],arity:{kind:`exact`}},formatModelName:{fn:e=>Xv(e),argTypes:[`string`],arity:{kind:`exact`}},shortenModelName:{fn:e=>Zv(e),argTypes:[`string`],arity:{kind:`exact`}}}}function dy(e,t=()=>new Date,n){return cp({fromString:e=>new U(e),toString:e=>e.plain,isT:e=>e instanceof U,clock:t,missingKey:`error`,funcs:{...Zm(),...l_(),...Lh(),...ag(),...Um(t),...Np(),...dh(),...qv(n),...ly(),...uy(t),...e??{}}})}function fy(e){return py(e,new Set(e.names()),``)}function py(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`?hy(a,e.readDocument(a)):e.read(a);let o=`${a}.`;for(let n of t)if(n.startsWith(o))return py(e,t,a)}})}function my(e,t){return new Proxy(e,{has:(e,t)=>t===`settings`||Reflect.has(e,t),get:(e,n)=>n===`settings`?t:Reflect.get(e,n)})}function hy(e,t){switch(t.kind){case`ok`:return t.value;case`absent`:throw Error(`variable "${e}" has no value yet: its source has not completed a scan`);case`failed`:throw Error(`variable "${e}": ${t.reason}`)}}function J(e){return{kind:`ok`,value:e}}const Y={kind:`absent`};function X(e){return{kind:`failed`,reason:e}}function gy(e,t){return e?.kind===`ok`?e.value:t}function _y(e,t,n){return t.ok?J(t.stdout):t.reason===`non-zero`&&n===`absent`||t.reason===`non-zero`&&n===t.exitCode?Y:X(`${e}: ${[t.reason,t.exitCode==null?null:`exit ${t.exitCode}`,t.error??vy(t.stderr)].filter(Boolean).join(`, `)}`)}function vy(e){return e.trim().split(`
86
+ Use 'override' annotation for methods overridden by subclass.`)}}var ra=la(0),ia=function(){var e=!1,t={};return Object.defineProperty(t,`0`,{set:function(){e=!0}}),Object.create(t)[0]=1,e===!1}(),aa=0,oa=function(){};function sa(e,t){Object.setPrototypeOf?Object.setPrototypeOf(e.prototype,t):e.prototype.__proto__===void 0?e.prototype=t:e.prototype.__proto__=t}sa(oa,Array.prototype);var ca=function(e){function t(t,n,r,i){var a;return r===void 0&&(r=`ObservableArray@`+h()),i===void 0&&(i=!1),a=e.call(this)||this,ga(function(){var e=new ki(r,n,i,!0);e.proxy_=a,ee(a,k,e),t&&t.length&&a.spliceWithArray(0,0,t),ia&&Object.defineProperty(a,`0`,ra)}),a}O(t,e);var n=t.prototype;return n.concat=function(){this[k].atom_.reportObserved();var e=[...arguments];return Array.prototype.concat.apply(this.slice(),e.map(function(e){return Ii(e)?e.slice():e}))},n[Symbol.iterator]=function(){var e=this,t=0;return Sa({next:function(){return t<e.length?{value:e[t++],done:!1}:{done:!0,value:void 0}}})},pe(t,[{key:`length`,get:function(){return this[k].getArrayLength_()},set:function(e){this[k].setArrayLength_(e)}},{key:Symbol.toStringTag,get:function(){return`Array`}}])}(oa);Object.entries(ji).forEach(function(e){var t=e[0],n=e[1];t!==`concat`&&C(ca.prototype,t,n)});function la(e){return{enumerable:!1,configurable:!0,get:function(){return this[k].get_(e)},set:function(t){this[k].set_(e,t)}}}function ua(e){s(ca.prototype,``+e,la(e))}function da(e){if(e>aa){for(var t=aa;t<e+100;t++)ua(t);aa=e}}da(1e3);function fa(e,t,n){return new ca(e,t,n)}function pa(e,t){if(typeof e==`object`&&e){if(Ii(e))return t!==void 0&&n(23),e[k].atom_;if(Ki(e))return e.atom_;if(Vi(e)){if(t===void 0)return e.keysAtom_;var r=e.data_.get(t)||e.hasMap_.get(t);return r||n(25,t,ha(e)),r}if(ea(e)){if(!t)return n(26);var i=e[k].values_.get(t);return i||n(27,t,ha(e)),i}if(Me(e)||tn(e)||z(e))return e}else if(v(e)&&z(e[k]))return e[k];n(28)}function ma(e,t){if(e||n(29),t!==void 0)return ma(pa(e,t));if(Me(e)||tn(e)||z(e)||Vi(e)||Ki(e))return e;if(e[k])return e[k];n(24,e)}function ha(e,t){var n;if(t!==void 0)n=pa(e,t);else if(cr(e))return e.name;else n=ea(e)||Vi(e)||Ki(e)?ma(e):pa(e);return n.name_}function ga(e){var t=I(),n=Xt(!0);An();try{return e()}finally{jn(),Zt(n),mn(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(!(D(t,m)&&ya(e[m],t[m],n-1,r,i)))return!1}}return r.pop(),i.pop(),!0}function ba(e){return Ii(e)?e.slice():ne(e)||Vi(e)||w(e)||Ki(e)?Array.from(e.entries()):e}var xa=i().Iterator?.prototype||{};function Sa(e){return e[Symbol.iterator]=Ca,Object.assign(Object.create(xa),e)}function Ca(){return this}function wa(e){return e instanceof Object&&typeof e.annotationType_==`string`&&v(e.make_)&&v(e.extend_)}[`Symbol`,`Map`,`Set`].forEach(function(e){i()[e]===void 0&&n(`MobX requires global '`+e+`' to be available or polyfilled`)}),typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__==`object`&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:Jn,extras:{getDebugName:ha},$mobx:k}),e.$mobx=k,e.FlowCancellationError=Ar,e.ObservableMap=Bi,e.ObservableSet=Gi,e.Reaction=Ln,e._allowStateChanges=Yt,e._allowStateChangesInsideComputed=sr,e._allowStateReadsEnd=gn,e._allowStateReadsStart=hn,e._autoAction=or,e._endAction=Jt,e._getAdministration=ma,e._getGlobalState=Cn,e._interceptReads=Rr,e._isComputingDerivation=F,e._resetGlobalState=wn,e._startAction=qt,e.action=ar,e.autorun=lr,e.comparer=Re,e.computed=Bt,e.configure=Sr,e.createAtom=Ne,e.defineProperty=H,e.entries=Yr,e.extendObservable=Cr,e.flow=Pr,e.flowResult=Ir,e.get=$r,e.getAtom=pa,e.getDebugName=ha,e.getDependencyTree=wr,e.getObserverTree=Er,e.has=Qr,e.intercept=zr,e.isAction=cr,e.isBoxedObservable=N,e.isComputed=Hr,e.isComputedProp=Ur,e.isFlow=Lr,e.isFlowCancellationError=jr,e.isObservable=Gr,e.isObservableArray=Ii,e.isObservableMap=Vi,e.isObservableObject=ea,e.isObservableProp=Kr,e.isObservableSet=Ki,e.keys=qr,e.makeAutoObservable=wi,e.makeObservable=Si,e.observable=j,e.observe=ti,e.onBecomeObserved=gr,e.onBecomeUnobserved=_r,e.onReactionError=Rn,e.override=We,e.ownKeys=ei,e.reaction=fr,e.remove=Zr,e.runInAction=sr,e.set=Xr,e.spy=Jn,e.toJS=oi,e.trace=si,e.transaction=li,e.untracked=pn,e.values=Jr,e.when=ui})),_v=me(((e,t)=>{process.env.NODE_ENV===`production`?t.exports=hv():t.exports=gv()}))();function vv(e){if(Array.isArray(e))return Object.freeze(e.map(vv));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]=vv(r);return Object.freeze(t)}return e}function yv(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 bv(e){return typeof e==`string`?e:String(e)}function xv(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 Sv(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 Cv(e,t){if(!(e instanceof Oi))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=wv(e.style).add(t),n}function wv(e){if(e instanceof V)return e;try{return V.parse(e)}catch(t){throw t instanceof Rr?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 Tv(e){return{fn:(t=>Cv(t,e)),argTypes:[`liftable`],arity:{kind:`exact`},returnType:`T`}}function Ev(e){return{fn:((t,n)=>Cv(n,new V({[e]:hn.parse(t)}))),argTypes:[`string`,`liftable`],arity:{kind:`exact`},returnType:`T`}}function Dv(e,t){return new V({[e]:t})}function Ov(){let e={};for(let t of Fr)e[t]=Tv(Dv(t,!0)),e[`not_${t}`]=Tv(Dv(t,!1));for(let[t,n]of Object.entries(Lr))e[t]=Tv(Dv(n,!0));return e}const kv={fn:((e,t)=>Cv(t,V.parse(e))),argTypes:[`string`,`liftable`],arity:{kind:`exact`},returnType:`T`},Av={fn:((e,t)=>Cv(t,new V({link:e}))),argTypes:[`string`,`liftable`],arity:{kind:`exact`},returnType:`T`};function jv(){return{fg:Ev(`color`),bg:Ev(`bgcolor`),...Ov(),link:Av,style:kv}}function Mv(e,t){if(!qn.test(e.trim()))throw TypeError(`${t} expected a color (#RRGGBB or #RRGGBBAA), got ${JSON.stringify(e)} — to use a palette name here, wrap it: ${t} (color ${JSON.stringify(e)}) …`);return Jn(e)}function Nv(e,t){return{fn:t,argTypes:e,arity:{kind:`exact`},returnType:`string`}}function Pv(e,t,n,r){let i=r===void 0||e>=r.min&&e<=r.max;if(!Number.isFinite(e)||!i){let i=r===void 0?`a finite number`:`within ${r.min}..${r.max} (${r.note})`;throw RangeError(`${t}'s ${n} must be ${i}, got ${e}`)}return e}const Fv=Nv([`string`,`int`],((e,t)=>tr(Mv(e,`darken`),t).hex)),Iv=Nv([`string`,`int`],((e,t)=>tr(Mv(e,`lighten`),-t).hex)),Lv={min:0,max:100,note:`0 = from, 100 = toward`},Rv=Nv([`string`,`string`,`float`],((e,t,n)=>Cn(Mv(e,`mix`),Mv(t,`mix`),Pv(n,`mix`,`percentage`,Lv)/100).hex)),zv={min:1,max:21,note:`4.5 = AA body text, 3 = AA large text`},Bv=Nv([`string`],(e=>nr(Mv(e,`contrastOn`)).hex)),Vv=e=>Nv([`string`,`string`,`float`],((t,n,r)=>rr(Mv(t,`readableOn`),Mv(n,`readableOn`),Pv(r,`readableOn`,`ratio`,zv),e()).hex)),Hv={hueShift:`shiftHue`,chromaScale:`scaleChroma`,lightnessScale:`scaleLightness`,lightnessShift:`shiftLightness`};function Uv(){let e={};for(let[t,n]of Object.entries(Hv)){let r=t;e[n]=Nv([`string`,`float`],((e,t)=>{let i={...In,[r]:Pv(t,n,`amount`)};return B.fromRgba(Mv(e,n)).applyKey(i).toRgba().hex}))}return e}function Wv(e=()=>F.TRUECOLOR){return{darken:Fv,lighten:Iv,mix:Rv,contrastOn:Bv,readableOn:Vv(e),...Uv()}}function Gv(e,t){if(e.length%2!=0)throw RangeError(`ramp's last stop (position ${String(e[e.length-1])}) has no color — stops are <position> <color> pairs`);let n=[];for(let r=0;r<e.length;r+=2)n.push({at:e[r],color:Yn(t,e[r+1])});return n}function Kv(e){return{color:{fn:(t=>Yn(e(),t).hex),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},ramp:{fn:((t,n,...r)=>new Nr(Mr(n),Gv(r,e())).at(t).hex),argTypes:[`float`,`string`],arity:{kind:`alternating`,minimum:4},returnType:`string`}}}function qv(e){return{...jv(),...Wv(e)}}new V({color:`red`,dim:!0});const Jv=/^(?:(?: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,Yv=/^(?<family>opus|sonnet|haiku)\s+(?<major>\d+)(?:\.(?<minor>\d))?$/i;function Xv(e){if(!e)return`Claude`;let t=e.trim().replace(/\s*\([^)]*\)\s*$/,``).replace(/\s*\[[^\]]*\]\s*$/,``).trim(),n=t.match(Jv);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(Yv);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 Zv(e){let t=e.match(Yv);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 Qv(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 $v(e){return e.toLocaleString()}function ey(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 ty(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 ny=[`▁`,`▂`,`▃`,`▄`,`▅`,`▆`,`▇`,`█`],ry=ny.length;function iy(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*(ry-1));o+=ny[t]}return o}function ay(e){let t=[];for(let n of e.split(`,`)){let e=n.trim();if(e===``)continue;let r=Number(e);if(!Number.isFinite(r))throw TypeError(`sparkline: non-numeric series element ${JSON.stringify(n)}`);t.push(r)}return t}function oy(e,t,n){if(n.length!==0)throw Error(`${e}: takes at most ${t.length} optional argument${t.length===1?``:`s`} (${t.join(`, `)}), got ${t.length+n.length}`)}const sy=qa(),cy=[...oo];function ly(){return{basename:{fn:e=>l(e),argTypes:[`string`],arity:{kind:`exact`}},dirname:{fn:e=>u(e),argTypes:[`string`],arity:{kind:`exact`}},abbreviatePath:{fn:e=>Qv(e),argTypes:[`string`],arity:{kind:`exact`}},int:{fn:e=>Math.trunc(xv(e)),argTypes:[`value`],arity:{kind:`exact`}},string:{fn:e=>bv(e),argTypes:[`value`],arity:{kind:`exact`}},bool:{fn:e=>Sv(e),argTypes:[`value`],arity:{kind:`exact`}},urlEncode:{fn:e=>encodeURIComponent(e),argTypes:[`string`],arity:{kind:`exact`}},themes:{fn:()=>sy,argTypes:[],arity:{kind:`exact`}},styles:{fn:()=>cy,argTypes:[],arity:{kind:`exact`}},sparkline:{fn:(e,t,...n)=>(oy(`sparkline`,[`width`],n),iy(ay(e),t)),argTypes:[`string`,`int`],arity:{kind:`variadic`}},cascade:{fn:(e,...t)=>ty(e,ey(t)),argTypes:[`float`,`string`],arity:{kind:`variadic`}}}}function uy(e=()=>new Date){return{minutesUntilReset:{fn:t=>Math.round(Math.max(0,t*1e3-e().getTime())/6e4),argTypes:[`int`],arity:{kind:`exact`}},formatInteger:{fn:e=>$v(e),argTypes:[`int`],arity:{kind:`exact`}},round:{fn:e=>Math.round(e),argTypes:[`float`],arity:{kind:`exact`}},formatModelName:{fn:e=>Xv(e),argTypes:[`string`],arity:{kind:`exact`}},shortenModelName:{fn:e=>Zv(e),argTypes:[`string`],arity:{kind:`exact`}}}}function dy(e,t=()=>new Date,n){return cp({fromString:e=>new Oi(e),toString:e=>e.plain,isT:e=>e instanceof Oi,clock:t,missingKey:`error`,funcs:{...Zm(),...l_(),...Lh(),...ag(),...Um(t),...Np(),...dh(),...qv(n),...ly(),...uy(t),...e??{}}})}function fy(e){return py(e,new Set(e.names()),``)}function py(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`?hy(a,e.readDocument(a)):e.read(a);let o=`${a}.`;for(let n of t)if(n.startsWith(o))return py(e,t,a)}})}function my(e,t){return new Proxy(e,{has:(e,t)=>t===`settings`||Reflect.has(e,t),get:(e,n)=>n===`settings`?t:Reflect.get(e,n)})}function hy(e,t){switch(t.kind){case`ok`:return t.value;case`absent`:throw Error(`variable "${e}" has no value yet: its source has not completed a scan`);case`failed`:throw Error(`variable "${e}": ${t.reason}`)}}function J(e){return{kind:`ok`,value:e}}const Y={kind:`absent`};function X(e){return{kind:`failed`,reason:e}}function gy(e,t){return e?.kind===`ok`?e.value:t}function _y(e,t,n){return t.ok?J(t.stdout):t.reason===`non-zero`&&n===`absent`||t.reason===`non-zero`&&n===t.exitCode?Y:X(`${e}: ${[t.reason,t.exitCode==null?null:`exit ${t.exitCode}`,t.error??vy(t.stderr)].filter(Boolean).join(`, `)}`)}function vy(e){return e.trim().split(`
87
87
  `,1)[0]??``}function yy(e,t){if(e.kind!==`ok`)return e;let n=t(e.value);return n===null?Y:J(n)}function by(e){if(e.kind!==`ok`)return e;let t=e.value.trim();return t?J(t):Y}const xy=/^[A-Za-z]:[\\/]/;function Sy(e){let t=e.trim();if(xy.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 Cy(e){return Sy(e)?.host||null}function wy(e){let t=Cy(e);return t?t===`github.com`||t.endsWith(`.github.com`)?`github`:/(^|\.)gitlab\./.test(t)?`gitlab`:null:null}function Ty(e){let t=new Map;for(let n of e.split(`
88
88
  `)){let e=n.match(/^remote\.(.+)\.url\s+(\S.*)$/);if(!e)continue;let r=t.get(e[1])??[];r.push(e[2].trim()),t.set(e[1],r)}return[...t].map(([e,t])=>({name:e,urls:t}))}function Ey(e){return e.urls.find(e=>jy(e)!==null)??e.urls[0]??null}function Dy(e){return e.find(e=>e.name===`origin`)??e[0]??null}function Oy(e){let t=Dy(e);return t?Ey(t):null}function ky(e){let t=Dy(e);return t?t.urls.find(e=>wy(e)!==null)??Ey(t):null}function Ay(e){let t=(Sy(e)?.path??e.replace(/[\\/]+$/,``)).split(`/`);return(t[t.length-1]??``).replace(/\.git$/,``)||null}function jy(e){let t=Sy(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 My(e){let t=Oy(e);return t===null?null:jy(t)}function Ny(e,t,n,r){return t.ok?r(t.stdout):t.reason===`spawn-error`&&/ENOENT/i.test(t.error??``)||t.reason===`non-zero`&&n.test(t.stderr)?Y:X(`${e}: ${[t.reason,t.exitCode==null?null:`exit ${t.exitCode}`,t.error??vy(t.stderr)].filter(Boolean).join(`, `)}`)}function Py(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Fy(e){let t=`detached`,n=Y,r=Y,i=Y,a=0,o=0,s=0,c=0;for(let l of e.split(`
89
89
  `)){if(!l)continue;if(l.startsWith(`# `)){let e=l.slice(2);if(e.startsWith(`branch.oid `)){let t=e.slice(11).trim();n=t===`(initial)`?Y:J(t)}else if(e.startsWith(`branch.head `)){let n=e.slice(12).trim();t=n===`(detached)`?`detached`:n}else if(e.startsWith(`branch.upstream `))r=J(e.slice(16).trim());else if(e.startsWith(`branch.ab `)){let t=e.slice(10).trim().match(/^\+(\d+)\s+-(\d+)$/);t&&(i=J({ahead:parseInt(t[1],10),behind:parseInt(t[2],10)}))}continue}let e=l[0];if(e===`1`||e===`2`){let e=l.slice(2,4);e[0]!==`.`&&a++,e[1]!==`.`&&o++}else e===`u`?c++:e===`?`&&s++}let l=`clean`;return c>0?l=`conflicts`:(a||o||s)&&(l=`dirty`),{branch:t,status:l,aheadBehind:i,oid:n,upstream:r,workingTree:{staged:a,unstaged:o,untracked:s,conflicts:c}}}function Iy(e){let t;try{t=JSON.parse(e)}catch(e){return X(`gh pr view: unparseable JSON (${e instanceof Error?e.message:String(e)})`)}if(!Py(t))return X(`gh pr view: JSON is not an object`);let{number:n,state:r,url:i}=t;return typeof n!=`number`||typeof r!=`string`||typeof i!=`string`?X(`gh pr view: missing number/state/url`):r.toUpperCase()===`OPEN`?J({number:n,state:r,url:i}):Y}function Ly(e){let t;try{t=JSON.parse(e)}catch(e){return X(`glab mr view: unparseable JSON (${e instanceof Error?e.message:String(e)})`)}if(!Py(t))return X(`glab mr view: JSON is not an object`);let n=t.iid,r=t.state,i=t.web_url;return typeof n!=`number`||typeof r!=`string`||typeof i!=`string`?X(`glab mr view: missing iid/state/web_url`):r.toLowerCase()===`opened`?J({number:n,state:r,url:i}):Y}function Ry(e){try{let t=r.statSync(e);return{key:`${t.dev}:${t.ino}`,stamp:`${t.mtimeMs}:${t.size}`}}catch{return null}}var zy=class{isGitRepo(e){try{return r.existsSync(c.join(e,`.git`))}catch{return!1}}async execGitAsync(e,t){return De({bin:`git`,args:[...e],cwd:t.cwd,env:{...process.env,GIT_OPTIONAL_LOCKS:`0`},timeoutMs:t.timeout,category:`git`})}async resolveEffectiveGitDir(e,t){return this.isWorktree(e)?J(e):t&&this.isGitRepo(t)?J(t):this.isGitRepo(e)?J(e):this.findGitRoot(e)}async findGitRoot(e){let t=c.resolve(e);for(;;){if(this.isGitRepo(t))return J(t);let e=c.dirname(t);if(e===t)return Y;t=e}}async getGitInfo(e,t={},n){try{return await this.computeGitInfo(e,t,n)}catch(e){return X(`git: ${e instanceof Error?e.message:String(e)}`)}}async computeGitInfo(e,t={},n){let r,i=this.isWorktree(e);if(i)r=e;else if(n&&this.isGitRepo(n))r=n;else if(this.isGitRepo(e))r=e;else{let t=await this.findGitRoot(e);if(t.kind!==`ok`)return t;r=t.value}let a=await this.getCoreAsync(r);if(a.kind!==`ok`)return a;let o={branch:a.value.branch,status:a.value.status,aheadBehind:a.value.aheadBehind};t.showWorkingTree&&(o.workingTree=a.value.workingTree),t.showSha&&(o.sha=yy(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=yy(s,e=>this.repoNameFrom(e,r)),o.isWorktree=i),s!==void 0&&t.showRepoUrl&&(o.repoUrl=yy(s,My)),t.showOperation&&(o.operation=this.getOngoingOperation(r)),J(o)}resolveGitDir(e){let t=c.join(e,`.git`);try{if(r.existsSync(t)&&r.statSync(t).isFile()){let n=r.readFileSync(t,`utf-8`).match(/^gitdir:\s*(.+)$/m);if(n?.[1])return c.resolve(e,n[1].trim())}}catch{}return t}getOngoingOperation(e){try{let t=this.resolveGitDir(e);return r.existsSync(c.join(t,`MERGE_HEAD`))?J(`MERGE`):r.existsSync(c.join(t,`CHERRY_PICK_HEAD`))?J(`CHERRY-PICK`):r.existsSync(c.join(t,`REVERT_HEAD`))?J(`REVERT`):r.existsSync(c.join(t,`BISECT_LOG`))?J(`BISECT`):r.existsSync(c.join(t,`rebase-merge`))||r.existsSync(c.join(t,`rebase-apply`))?J(`REBASE`):Y}catch(e){return X(`git operation probe: ${e instanceof Error?e.message:String(e)}`)}}async getNearestTagAsync(e){return by(_y(`git describe --tags`,await this.execGitAsync([`describe`,`--tags`,`--abbrev=0`],{cwd:e,timeout:2e3}),`absent`))}async timeSinceCommit(e,t){return t.kind===`ok`?yy(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=by(_y(`git log -1`,await this.execGitAsync([`log`,`-1`,`--format=%ct`,t,`--`],{cwd:e,timeout:2e3}),`absent`));if(n.kind!==`ok`)return n;let r=parseInt(n.value,10)*1e3;return Number.isNaN(r)?X(`git log -1: unparseable timestamp "${n.value}"`):J(r)}resolveCommonGitDir(e){let t=this.resolveGitDir(e);try{let e=r.readFileSync(c.join(t,`commondir`),`utf-8`).trim();if(e)return c.resolve(t,e)}catch{}return t}getStashCount(e){let t=c.join(this.resolveCommonGitDir(e),`logs`,`refs`,`stash`),n;try{n=r.readFileSync(t,`utf-8`)}catch(e){return e.code===`ENOENT`?J(0):X(`git stash reflog ${t}: ${e instanceof Error?e.message:String(e)}`)}let i=n.trim();return J(i?i.split(`
90
- `).length:0)}async getRemotesAsync(e){let t=Ry(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=_y(`git config --get-regexp remote url`,await this.execGitAsync([`config`,`--local`,`--get-regexp`,`^remote\\..*\\.url$`],{cwd:e,timeout:2e3}),1);return t.kind===`failed`?t:J(t.kind===`ok`?Ty(t.value):[])}repoNameFrom(e,t){let n=Oy(e);return(n===null?null:Ay(n))??c.basename(t)}async getRepoRemoteUrl(e){let t=await this.getRemotesAsync(e);if(t.kind!==`ok`)return t;let n=ky(t.value);return n===null?Y:J(n)}async execForgeAsync(e,t,n){return De({bin:e,args:[...t],cwd:n.cwd,env:{...process.env},timeoutMs:n.timeout,category:`forge`})}async resolvePullRequest(e,t){let n=wy(t);return n===`github`?Ny(`gh pr view`,await this.execForgeAsync(`gh`,[`pr`,`view`,`--json`,`number,state,url`],{cwd:e,timeout:5e3}),/no (open )?pull requests? found/i,Iy):n===`gitlab`?Ny(`glab mr view`,await this.execForgeAsync(`glab`,[`mr`,`view`,`--output`,`json`],{cwd:e,timeout:5e3}),/no (open )?merge requests? (found|available)/i,Ly):Y}isWorktree(e){try{let t=c.join(e,`.git`);return!!(r.existsSync(t)&&r.statSync(t).isFile())}catch{return!1}}async getCoreAsync(e){O(`[GIT-EXEC] Running git status --porcelain=v2 in ${e}`);let t=_y(`git status --porcelain=v2 --branch`,await this.execGitAsync([`status`,`--porcelain=v2`,`--branch`],{cwd:e,timeout:2e3}),`failed`);return t.kind===`ok`?J(Fy(t.value)):t}};const By=(e,t)=>O(t);var Vy=class{slots=new Map;maxWatchers;counters;logger;closed=!1;constructor(e={}){this.maxWatchers=e.maxWatchers??128,this.counters=e.counters,this.logger=e.logger??By}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()}},Hy=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 Uy=(e,t)=>O(t),Wy={showSha:!0,showStashCount:!0};function Gy(e){let t=Object.keys(e).sort(),n={};for(let r of t)n[r]=e[r];return JSON.stringify(n)}function Ky(e){let t=t=>{try{return r.statSync(c.join(e,t)).mtimeMs}catch{return 0}};return{head:t(`HEAD`),index:t(`index`)}}function qy(e,t){return e.head!==t.head||e.index!==t.index}function Jy(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 Yy=class extends zy{entries=new Map;subscribersByRepo=new Map;fetchInFlight=new Map;resolutions=new Map;prCache=new Map;prFetchInFlight=new Map;refreshes=new Hy;hits=0;misses=0;invalidations=0;inner;ttlMs;maxEntries;watchers;ownsWatchers;logger;sanityTimer=null;constructor(e={}){super(),this.inner=e.inner??new zy,this.ttlMs=e.ttlMs??3e4,this.maxEntries=e.maxEntries??64,this.logger=e.logger??Uy,e.watchers?(this.watchers=e.watchers,this.ownsWatchers=!1):(this.watchers=new Vy({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}|${Gy(t)}`,r=Date.now(),i=this.entries.get(n);if(i&&r-i.computedAt<this.ttlMs)return this.entries.delete(n),this.entries.set(n,i),this.hits++,Promise.resolve(J(i.info));let a=this.fetchInFlight.get(n);if(a)return a;let o=this.doFetch(e,n,t,r).finally(()=>{this.fetchInFlight.delete(n)});return this.fetchInFlight.set(n,o),o}async doFetch(e,t,n,r){this.misses++;let i=this.inner.resolveGitDir(e),a=Ky(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}`,Jy(i),()=>this.invalidateRepo(e));return this.entries.set(t,{info:s,computedAt:r,mtime:a,watcher:c,repoRoot:e}),this.evictIfNeeded(),o}async getPullRequestCached(e,t){let n=await this.inner.getRepoRemoteUrl(e);if(n.kind===`failed`)return n;if(n.kind===`absent`)return Y;let r=n.value,i=`${e}|${t}|${r}`,a=Date.now(),o=this.prCache.get(i);if(o){let e=o.pr.kind===`failed`?45e3:3e5;if(a-o.computedAt<e)return this.prCache.delete(i),this.prCache.set(i,o),o.pr}let s=this.prFetchInFlight.get(i);if(s)return s;let c=this.inner.resolvePullRequest(e,r).then(e=>(this.prCache.set(i,{pr:e,computedAt:Date.now()}),this.evictPrIfNeeded(),e)).finally(()=>{this.prFetchInFlight.delete(i)});return this.prFetchInFlight.set(i,c),c}evictPrIfNeeded(){for(;this.prCache.size>this.maxEntries;){let e=this.prCache.keys().next().value;if(e===void 0)break;this.prCache.delete(e)}}deliverable(e,t){return e.kind===`failed`?(this.logger(`warn`,`git fetch failed (${t}): ${e.reason}`),null):e.kind===`ok`?e.value:null}subscribe(e,t){let n=!1,r=null;return{firstDelivery:(async()=>{let i=await this.resolveEffectiveGitDir(e);if(n)return;if(i.kind!==`ok`){i.kind===`failed`&&this.logger(`warn`,`git resolve failed (subscribe ${e}): ${i.reason}`),this.safeInvoke(t,null);return}let a=i.value,o=this.subscribersByRepo.get(a);if(!o){let t=this.inner.resolveGitDir(a),n=this.watchers.acquire(`git:${a}`,Jy(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,{...Wy});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,{...Wy}),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=Ky(this.inner.resolveGitDir(t.repoRoot)),e.set(t.repoRoot,n)),qy(t.mtime,n)&&this.invalidateRepo(t.repoRoot)}}runSanityCheckNow(){this.runSanityCheck()}close(){this.sanityTimer&&=(clearInterval(this.sanityTimer),null);for(let e of this.entries.values())e.watcher.release();this.entries.clear();for(let e of this.subscribersByRepo.values())e.callbacks.clear(),e.watcher.release();this.subscribersByRepo.clear(),this.refreshes.clear(),this.fetchInFlight.clear(),this.prCache.clear(),this.prFetchInFlight.clear(),this.resolutions.clear(),this.ownsWatchers&&this.watchers.closeAll()}};const Xy=/\r\n|\r|\n/g,Zy=e=>J(e.replace(Xy,` `).trim());function Qy(e){return t=>{let n=e.exec(t)?.[1];return n===void 0?X(`regex no-match`):J(n.replace(Xy,` `))}}const $y=e=>{try{return J(JSON.parse(e))}catch(e){return X(`JSON parse failed: ${e.message}`)}};function eb(e,t){return t.kind!==`ttl`||t.durationMs>=500?t:(O(`declareShell "${e}": ttl ${t.durationMs}ms below floor 500ms; clamping`),{kind:`ttl`,durationMs:500})}function tb(e){let t=/^(\d+(?:\.\d+)?)(ms|s|m|h)$/.exec(e);if(!t)throw RangeError(`Invalid duration: "${e}"`);let n=parseFloat(t[1]);switch(t[2]){case`ms`:return n;case`s`:return n*1e3;case`m`:return n*6e4;case`h`:return n*36e5;default:throw RangeError(`Unexpected duration unit: "${t[2]}"`)}}const nb=`session.id`;function rb(e,t,n){return{where:`output of "${e}" in ${t}`,read:async()=>{let r=await De({bin:`/bin/sh`,args:[`-c`,e],cwd:t,category:`user-shell`,signal:n});if(!r.ok&&r.reason===`aborted`)throw n.reason;return r.ok?J(r.stdout):X(`shell "${e}" ${r.exitCode===null?[r.reason,r.error].filter(e=>e!==void 0).join(`: `):`exited with code ${r.exitCode}`} in ${t}`)}}}function ib(e,t,n){return{where:`"${e}"`,read:async()=>{try{let r=await x(e,{encoding:`utf8`,signal:n});return J(t===`first-line`?r.split(/\r?\n/)[0]??``:r)}catch{if(n.aborted)throw n.reason;return X(`file unreadable: ${e}`)}}}}function ab(e,t,n){if(e.kind!==`ok`)return e;let r=t(e.value);return r.kind===`failed`?X(`${r.reason} in ${n}`):r}const ob=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],sb=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],cb=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],lb=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`];function ub(e,t){let n=[[`2006`,e=>String(e.getFullYear())],[`January`,e=>ob[e.getMonth()]],[`Monday`,e=>cb[e.getDay()]],[`Jan`,e=>sb[e.getMonth()]],[`Mon`,e=>lb[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 db={branch:`string`,sha:`string`,dirty:`boolean`,ahead:`number`,behind:`number`,stash:`number`};function fb(e,t,n,r){if(e===null){if(n!==void 0)return n;let e=db[t];try{return gb(r,e)}catch{return _b(e)}}switch(t){case`branch`:return e.branch===`detached`?``:e.branch;case`sha`:return gy(e.sha,``);case`dirty`:return e.status!==`clean`;case`ahead`:return gy(e.aheadBehind,{ahead:0,behind:0}).ahead;case`behind`:return gy(e.aheadBehind,{ahead:0,behind:0}).behind;case`stash`:return gy(e.stashCount,0)}}var pb=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}},mb=class{buckets=new Map;subscribe(e,t){let n=this.buckets.get(e);if(!n){let t=new Set;n={timer:te(()=>{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&&(ee(n.timer),this.buckets.delete(e)))}dispose(){for(let{timer:e}of this.buckets.values())ee(e);this.buckets.clear()}bucketCount(){return this.buckets.size}};function hb(e,t){let n=e;for(let e of t.split(`.`)){if(typeof n!=`object`||!n)return;n=n[e]}return n}function gb(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`?bv(e):t===`number`?xv(e):Sv(e)}function _b(e){return e===`number`?0:e===`boolean`?!1:``}var vb=class{inputMetas=new Map;lastErrors=new Map;watchMgr=new pb;ttlMgr=new mb;gitSubscriptions=new Map;cleanups=[];inFlight=new Map;reads=new Hy;abort=new AbortController;drawn=_v.observable.box(F.TRUECOLOR);drawnAt=()=>this.drawn.get();engine=dy(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 Yy({sanityIntervalMs:0}),this.ownsGitProvider=!0),this.sessionState=r}get variableStore(){return this.store}declareLiteral(e,t){this.store.defineBox(e,yv(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,rb(t,n.cwd,this.abort.signal),eb(e,n.cache),n.parse)}declareFile(e,t,n){this.declareSource(e,ib(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,Zy,t.default,n);case`regex`:return this.scalarPublisher(e,Qy(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=ab(n,t,r);this.noteOutcome(e,a),this.store.setBox(e,gy(a,i))}}documentPublisher(e,t,n){let r=t===void 0?Y:J(t);return this.store.defineDocument(e,r),i=>{let a=ab(i,$y,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=fy(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 ub(t.format,e)}catch{return this.stringInitial(t.varDefault)}})(new Date));let r=this.ttlMgr.subscribe(n,()=>{try{this.store.setBox(e,ub(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=db[t.field],r=t.varDefault===void 0?_b(n):gb(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,fb(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(nb);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=hb(e,n.path),i=this.store.getType(t);if(r!==void 0)try{this.store.setBox(t,gb(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,_v.reaction)(()=>{let t=fy(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,_v.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,gb(this.defaultEmptyValue,t))}catch{this.store.setBox(e,_b(t))}}defaultFor(e){try{return gb(this.defaultEmptyValue,e)}catch{return _b(e)}}stringInitial(e){return e===void 0?typeof this.defaultEmptyValue==`string`?this.defaultEmptyValue:``:e}recordError(e,t){this.lastErrors.set(e,{timestamp:Date.now(),message:t})}noteOutcome(e,t){t.kind===`ok`?this.lastErrors.delete(e):this.recordError(e,t.kind===`failed`?t.reason:`no value`)}};const yb={project_dir:{kind:`input`,path:`workspace.project_dir`,default:``},[nb]:{kind:`input`,path:`session_id`,default:``},transcript_path:{kind:`input`,path:`transcript_path`,default:``},"theme.effective":{kind:`input`,path:`theme.effective`,default:``},"look.effective":{kind:`input`,path:`look.effective`,default:``},"preset.effective":{kind:`input`,path:`preset.effective`,default:``},"preset.customized":{kind:`input`,path:`preset.customized`,type:`boolean`,default:!1},"preset.bundled":{kind:`input`,path:`preset.bundled`,type:`boolean`,default:!0},"style.effective":{kind:`input`,path:`style.effective`,default:``},"progression.effective":{kind:`input`,path:`progression.effective`,default:``},"charset.effective":{kind:`input`,path:`charset.effective`,default:``},"colorCompatibility.effective":{kind:`input`,path:`colorCompatibility.effective`,default:``},"autoWrap.effective":{kind:`input`,path:`autoWrap.effective`,type:`boolean`,default:!0},"padding.effective":{kind:`input`,path:`padding.effective`,type:`number`,default:1},"updateNotice.effective":{kind:`input`,path:`updateNotice.effective`,type:`boolean`,default:!0},"term.cols":{kind:`input`,path:`term.cols`,type:`number`,default:80},"git.repoUrl":{kind:`input`,path:`git.repoUrl`,default:``}},bb={theme:{configKey:`palette`,sessionKey:`theme`,effectiveVar:`theme.effective`,label:`🎨`},preset:{configKey:`preset`,sessionKey:`preset`,effectiveVar:`preset.effective`,label:`▦`},look:{configKey:`look`,sessionKey:`look`,effectiveVar:`look.effective`,label:`◐`},style:{configKey:`style`,sessionKey:`style`,effectiveVar:`style.effective`,label:`✦`},progression:{configKey:`progression`,sessionKey:`progression`,effectiveVar:`progression.effective`,label:`🎼`},charset:{configKey:`charset`,sessionKey:`charset`,effectiveVar:`charset.effective`,label:`🔣`},colorCompatibility:{configKey:`colorCompatibility`,sessionKey:`colorCompatibility`,effectiveVar:`colorCompatibility.effective`,label:`🌈`},autoWrap:{configKey:`autoWrap`,sessionKey:`autoWrap`,effectiveVar:`autoWrap.effective`,label:`wrap`},padding:{configKey:`padding`,sessionKey:`padding`,effectiveVar:`padding.effective`,label:`padding`},updateNotice:{configKey:`updateNotice`,sessionKey:`updateNotice`,effectiveVar:`updateNotice.effective`,label:`update notice`}},xb=Object.values(bb),Sb=new Map(xb.map(e=>[e.configKey,e.effectiveVar])),Cb=new Map(xb.map(e=>[e.sessionKey,e.effectiveVar])),wb=new Map(Object.keys(bb).map(e=>[bb[e].sessionKey,e]));function Tb(e,t,n){let r=new Set,i=e=>{for(let t of sv(e??``,n).keys())r.add(t)};for(let t of Object.values(e.segments))i(t.template),i(t.bg),i(t.fg),i(t.when);for(let e of t)for(let t of js(e))i(t.when);for(let t of Object.values(e.variables))t.kind===`template`&&i(t.template),t.kind===`state`&&r.add(nb);for(let t of Object.values(e.actions)){r.add(nb),`copy`in t&&i(t.copy),`open`in t&&i(t.open);let e=`set`in t?Cb.get(t.set):void 0,n=`persist`in t?Sb.get(t.persist):void 0;e!==void 0&&r.add(e),n!==void 0&&r.add(n)}return r}function Eb(e,t,n){let r=pv({...n,variables:{...n.variables,...e.variables},segments:{...n.segments,...e.segments}}),i={};for(let a of Tb(e,t,n.helpers)){if(fv(a,r))continue;let e=yb[a];if(e===void 0)throw Error(`synthesized chrome reads ".${a}", which it does not declare and PAYLOAD_INPUTS does not supply`);i[a]=e}return i}const Db=new Map,Ob=new Map;function kb(e){let t=jb(e);if(t===null)throw Error(`Palette "${e}" did not resolve in the theme registry — allowed names and the registry are inconsistent`);return t}function Ab(e,t){return e===`bar`?t:kb(e)}function jb(e){let t=Db.get(e);if(t!==void 0)return t;let n=xr(e);return n===null?null:(Db.set(e,n),n)}function Mb(e,t){let n=`${e.name} ${t.hueShift} ${t.chromaScale} ${t.lightnessScale} ${t.lightnessShift}`,r=Ob.get(n);if(r!==void 0)return r;let i=kr(e,t);return Ob.set(n,i),i}function Nb(e){let t=jb(e);return t===null?null:{kind:`decided`,name:e,value:t}}function Pb(e,t,n){let r=Nb(e);return r===null?(n(`${t} rendered "${Wa}": "${e}" names no installed theme${Ua(e)}`),Ib()):r}function Fb(e,t,n){return $a(e,t,n,Ib(),Nb)}function Ib(){return Nb(Wa)}function Lb(e){return eo(Fb(void 0,null,e),Ib).value}const Rb=new Map;function zb(e,t,n){Rb.set(e,{permanent:!0,resolve:t,paletteOf:n})}zb(`themes`,()=>Ka(),e=>kb(e));const Bb=`placementThemes`;zb(Bb,qa,(e,t)=>Ab(e,t.palette)),zb(`styles`,()=>ao),zb(`progressions`,()=>vo),zb(`charsets`,()=>co),zb(`colorCompatibilities`,()=>po);function Vb(e){return new Map([[`looks`,{members:Object.keys(e.looks),paletteOf:(t,n)=>Mb(n.basePalette,e.looks[t])}],[`presets`,{members:x_(e.presets)}]])}function Hb(e){return[...new Set([...Rb.keys(),...e.keys()])]}function Ub(e,t){if(typeof e!=`string`)return{members:e};let n=t.get(e);if(n)return n;let r=Rb.get(e);if(r)return{members:r.resolve(),paletteOf:r.paletteOf};throw Error(`unknown option domain "${e}" (have: ${Hb(t).join(`, `)})`)}function Wb(e){return{label:e.label,domain:Gb(e.domain)}}function Gb(e){return e===`theme`?{from:Bb}:e===`bool`||`min`in e?e:{from:e}}function Kb(e,t,n,r){let i=qc(e.label),{domain:a}=e;if(a===`bool`)return{kind:`inline`,template:`{{ action "${r}" "☑ ${i}" "☐ ${i}" }}`,actions:{[r]:{set:t,cycle:[...Co]}}};if(`from`in a)return{kind:`ring`,template:`{{ carousel "${r}" }}`,actions:{[r]:{set:t,from:a.from}}};let o=e=>({set:t,min:a.min,max:a.max,by:e});return{kind:`inline`,template:`{{ action "${r}.down" "◀" }} {{ "${i}" }} {{ .${n} }} {{ action "${r}.up" "▶" }}`,actions:{[`${r}.down`]:o(-a.step),[`${r}.up`]:o(a.step)}}}const qb=/^segments\.([^.]+)\.palette$/,Jb=/^presets\.(.+)\.root$/,Yb=/^presets\.(.+)\.globals\.([^.]+)$/;function Xb(e){return`presets.${e}.root`}function Zb(e,t){return`presets.${e}.globals.${t}`}function Qb(e){if(El(e))return{scope:`globals`,field:e};let t=qb.exec(e);if(t)return{scope:`segment-palette`,segment:t[1]};let n=Yb.exec(e);if(n&&yl(n[2]))return{scope:`preset-globals`,preset:n[1],field:n[2]};let r=Jb.exec(e);return r?{scope:`preset-root`,preset:r[1]}:null}function $b(e){switch(e.scope){case`globals`:return[`globals`,e.field];case`preset-globals`:return[`presets`,e.preset,`globals`,e.field];case`segment-palette`:return[`segments`,e.segment,`palette`]}}const ex=`open`;function tx(e,t,n,r){let i={variable:e,key:e,member:ex};return r.variables[e]=Qc(e,Uc),r.actions[e]=$c(e,ex),r.segments[e]={template:Zc(e,`(?)`,`✕`),...nx(n)},Jc(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 nx(e){let[t,...n]=e;return t===void 0?{}:{when:Yc(t,...n)}}const rx={help:[`-h`,`--help`],version:[`-V`,`--version`]},ix=[`✚ inserts`,`🚫 removes`,`⚙ configures`,`↺ resets layout`],ax=`
90
+ `).length:0)}async getRemotesAsync(e){let t=Ry(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=_y(`git config --get-regexp remote url`,await this.execGitAsync([`config`,`--local`,`--get-regexp`,`^remote\\..*\\.url$`],{cwd:e,timeout:2e3}),1);return t.kind===`failed`?t:J(t.kind===`ok`?Ty(t.value):[])}repoNameFrom(e,t){let n=Oy(e);return(n===null?null:Ay(n))??c.basename(t)}async getRepoRemoteUrl(e){let t=await this.getRemotesAsync(e);if(t.kind!==`ok`)return t;let n=ky(t.value);return n===null?Y:J(n)}async execForgeAsync(e,t,n){return De({bin:e,args:[...t],cwd:n.cwd,env:{...process.env},timeoutMs:n.timeout,category:`forge`})}async resolvePullRequest(e,t){let n=wy(t);return n===`github`?Ny(`gh pr view`,await this.execForgeAsync(`gh`,[`pr`,`view`,`--json`,`number,state,url`],{cwd:e,timeout:5e3}),/no (open )?pull requests? found/i,Iy):n===`gitlab`?Ny(`glab mr view`,await this.execForgeAsync(`glab`,[`mr`,`view`,`--output`,`json`],{cwd:e,timeout:5e3}),/no (open )?merge requests? (found|available)/i,Ly):Y}isWorktree(e){try{let t=c.join(e,`.git`);return!!(r.existsSync(t)&&r.statSync(t).isFile())}catch{return!1}}async getCoreAsync(e){O(`[GIT-EXEC] Running git status --porcelain=v2 in ${e}`);let t=_y(`git status --porcelain=v2 --branch`,await this.execGitAsync([`status`,`--porcelain=v2`,`--branch`],{cwd:e,timeout:2e3}),`failed`);return t.kind===`ok`?J(Fy(t.value)):t}};const By=(e,t)=>O(t);var Vy=class{slots=new Map;maxWatchers;counters;logger;closed=!1;constructor(e={}){this.maxWatchers=e.maxWatchers??128,this.counters=e.counters,this.logger=e.logger??By}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()}},Hy=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 Uy=(e,t)=>O(t),Wy={showSha:!0,showStashCount:!0};function Gy(e){let t=Object.keys(e).sort(),n={};for(let r of t)n[r]=e[r];return JSON.stringify(n)}function Ky(e){let t=t=>{try{return r.statSync(c.join(e,t)).mtimeMs}catch{return 0}};return{head:t(`HEAD`),index:t(`index`)}}function qy(e,t){return e.head!==t.head||e.index!==t.index}function Jy(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 Yy=class extends zy{entries=new Map;subscribersByRepo=new Map;fetchInFlight=new Map;resolutions=new Map;prCache=new Map;prFetchInFlight=new Map;refreshes=new Hy;hits=0;misses=0;invalidations=0;inner;ttlMs;maxEntries;watchers;ownsWatchers;logger;sanityTimer=null;constructor(e={}){super(),this.inner=e.inner??new zy,this.ttlMs=e.ttlMs??3e4,this.maxEntries=e.maxEntries??64,this.logger=e.logger??Uy,e.watchers?(this.watchers=e.watchers,this.ownsWatchers=!1):(this.watchers=new Vy({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}|${Gy(t)}`,r=Date.now(),i=this.entries.get(n);if(i&&r-i.computedAt<this.ttlMs)return this.entries.delete(n),this.entries.set(n,i),this.hits++,Promise.resolve(J(i.info));let a=this.fetchInFlight.get(n);if(a)return a;let o=this.doFetch(e,n,t,r).finally(()=>{this.fetchInFlight.delete(n)});return this.fetchInFlight.set(n,o),o}async doFetch(e,t,n,r){this.misses++;let i=this.inner.resolveGitDir(e),a=Ky(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}`,Jy(i),()=>this.invalidateRepo(e));return this.entries.set(t,{info:s,computedAt:r,mtime:a,watcher:c,repoRoot:e}),this.evictIfNeeded(),o}async getPullRequestCached(e,t){let n=await this.inner.getRepoRemoteUrl(e);if(n.kind===`failed`)return n;if(n.kind===`absent`)return Y;let r=n.value,i=`${e}|${t}|${r}`,a=Date.now(),o=this.prCache.get(i);if(o){let e=o.pr.kind===`failed`?45e3:3e5;if(a-o.computedAt<e)return this.prCache.delete(i),this.prCache.set(i,o),o.pr}let s=this.prFetchInFlight.get(i);if(s)return s;let c=this.inner.resolvePullRequest(e,r).then(e=>(this.prCache.set(i,{pr:e,computedAt:Date.now()}),this.evictPrIfNeeded(),e)).finally(()=>{this.prFetchInFlight.delete(i)});return this.prFetchInFlight.set(i,c),c}evictPrIfNeeded(){for(;this.prCache.size>this.maxEntries;){let e=this.prCache.keys().next().value;if(e===void 0)break;this.prCache.delete(e)}}deliverable(e,t){return e.kind===`failed`?(this.logger(`warn`,`git fetch failed (${t}): ${e.reason}`),null):e.kind===`ok`?e.value:null}subscribe(e,t){let n=!1,r=null;return{firstDelivery:(async()=>{let i=await this.resolveEffectiveGitDir(e);if(n)return;if(i.kind!==`ok`){i.kind===`failed`&&this.logger(`warn`,`git resolve failed (subscribe ${e}): ${i.reason}`),this.safeInvoke(t,null);return}let a=i.value,o=this.subscribersByRepo.get(a);if(!o){let t=this.inner.resolveGitDir(a),n=this.watchers.acquire(`git:${a}`,Jy(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,{...Wy});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,{...Wy}),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=Ky(this.inner.resolveGitDir(t.repoRoot)),e.set(t.repoRoot,n)),qy(t.mtime,n)&&this.invalidateRepo(t.repoRoot)}}runSanityCheckNow(){this.runSanityCheck()}close(){this.sanityTimer&&=(clearInterval(this.sanityTimer),null);for(let e of this.entries.values())e.watcher.release();this.entries.clear();for(let e of this.subscribersByRepo.values())e.callbacks.clear(),e.watcher.release();this.subscribersByRepo.clear(),this.refreshes.clear(),this.fetchInFlight.clear(),this.prCache.clear(),this.prFetchInFlight.clear(),this.resolutions.clear(),this.ownsWatchers&&this.watchers.closeAll()}};const Xy=/\r\n|\r|\n/g,Zy=e=>J(e.replace(Xy,` `).trim());function Qy(e){return t=>{let n=e.exec(t)?.[1];return n===void 0?X(`regex no-match`):J(n.replace(Xy,` `))}}const $y=e=>{try{return J(JSON.parse(e))}catch(e){return X(`JSON parse failed: ${e.message}`)}};function eb(e,t){return t.kind!==`ttl`||t.durationMs>=500?t:(O(`declareShell "${e}": ttl ${t.durationMs}ms below floor 500ms; clamping`),{kind:`ttl`,durationMs:500})}function tb(e){let t=/^(\d+(?:\.\d+)?)(ms|s|m|h)$/.exec(e);if(!t)throw RangeError(`Invalid duration: "${e}"`);let n=parseFloat(t[1]);switch(t[2]){case`ms`:return n;case`s`:return n*1e3;case`m`:return n*6e4;case`h`:return n*36e5;default:throw RangeError(`Unexpected duration unit: "${t[2]}"`)}}const nb=`session.id`;function rb(e,t,n){return{where:`output of "${e}" in ${t}`,read:async()=>{let r=await De({bin:`/bin/sh`,args:[`-c`,e],cwd:t,category:`user-shell`,signal:n});if(!r.ok&&r.reason===`aborted`)throw n.reason;return r.ok?J(r.stdout):X(`shell "${e}" ${r.exitCode===null?[r.reason,r.error].filter(e=>e!==void 0).join(`: `):`exited with code ${r.exitCode}`} in ${t}`)}}}function ib(e,t,n){return{where:`"${e}"`,read:async()=>{try{let r=await x(e,{encoding:`utf8`,signal:n});return J(t===`first-line`?r.split(/\r?\n/)[0]??``:r)}catch{if(n.aborted)throw n.reason;return X(`file unreadable: ${e}`)}}}}function ab(e,t,n){if(e.kind!==`ok`)return e;let r=t(e.value);return r.kind===`failed`?X(`${r.reason} in ${n}`):r}const ob=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],sb=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],cb=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],lb=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`];function ub(e,t){let n=[[`2006`,e=>String(e.getFullYear())],[`January`,e=>ob[e.getMonth()]],[`Monday`,e=>cb[e.getDay()]],[`Jan`,e=>sb[e.getMonth()]],[`Mon`,e=>lb[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 db={branch:`string`,sha:`string`,dirty:`boolean`,ahead:`number`,behind:`number`,stash:`number`};function fb(e,t,n,r){if(e===null){if(n!==void 0)return n;let e=db[t];try{return gb(r,e)}catch{return _b(e)}}switch(t){case`branch`:return e.branch===`detached`?``:e.branch;case`sha`:return gy(e.sha,``);case`dirty`:return e.status!==`clean`;case`ahead`:return gy(e.aheadBehind,{ahead:0,behind:0}).ahead;case`behind`:return gy(e.aheadBehind,{ahead:0,behind:0}).behind;case`stash`:return gy(e.stashCount,0)}}var pb=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}},mb=class{buckets=new Map;subscribe(e,t){let n=this.buckets.get(e);if(!n){let t=new Set;n={timer:te(()=>{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&&(ee(n.timer),this.buckets.delete(e)))}dispose(){for(let{timer:e}of this.buckets.values())ee(e);this.buckets.clear()}bucketCount(){return this.buckets.size}};function hb(e,t){let n=e;for(let e of t.split(`.`)){if(typeof n!=`object`||!n)return;n=n[e]}return n}function gb(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`?bv(e):t===`number`?xv(e):Sv(e)}function _b(e){return e===`number`?0:e===`boolean`?!1:``}var vb=class{inputMetas=new Map;lastErrors=new Map;watchMgr=new pb;ttlMgr=new mb;gitSubscriptions=new Map;cleanups=[];inFlight=new Map;reads=new Hy;abort=new AbortController;drawn=_v.observable.box(F.TRUECOLOR);drawnAt=()=>this.drawn.get();engine=dy(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 Yy({sanityIntervalMs:0}),this.ownsGitProvider=!0),this.sessionState=r}get variableStore(){return this.store}declareLiteral(e,t){this.store.defineBox(e,yv(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,rb(t,n.cwd,this.abort.signal),eb(e,n.cache),n.parse)}declareFile(e,t,n){this.declareSource(e,ib(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,Zy,t.default,n);case`regex`:return this.scalarPublisher(e,Qy(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=ab(n,t,r);this.noteOutcome(e,a),this.store.setBox(e,gy(a,i))}}documentPublisher(e,t,n){let r=t===void 0?Y:J(t);return this.store.defineDocument(e,r),i=>{let a=ab(i,$y,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=fy(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 ub(t.format,e)}catch{return this.stringInitial(t.varDefault)}})(new Date));let r=this.ttlMgr.subscribe(n,()=>{try{this.store.setBox(e,ub(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=db[t.field],r=t.varDefault===void 0?_b(n):gb(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,fb(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(nb);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=hb(e,n.path),i=this.store.getType(t);if(r!==void 0)try{this.store.setBox(t,gb(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,_v.reaction)(()=>{let t=fy(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,_v.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,gb(this.defaultEmptyValue,t))}catch{this.store.setBox(e,_b(t))}}defaultFor(e){try{return gb(this.defaultEmptyValue,e)}catch{return _b(e)}}stringInitial(e){return e===void 0?typeof this.defaultEmptyValue==`string`?this.defaultEmptyValue:``:e}recordError(e,t){this.lastErrors.set(e,{timestamp:Date.now(),message:t})}noteOutcome(e,t){t.kind===`ok`?this.lastErrors.delete(e):this.recordError(e,t.kind===`failed`?t.reason:`no value`)}};const yb={project_dir:{kind:`input`,path:`workspace.project_dir`,default:``},[nb]:{kind:`input`,path:`session_id`,default:``},transcript_path:{kind:`input`,path:`transcript_path`,default:``},"theme.effective":{kind:`input`,path:`theme.effective`,default:``},"look.effective":{kind:`input`,path:`look.effective`,default:``},"preset.effective":{kind:`input`,path:`preset.effective`,default:``},"preset.customized":{kind:`input`,path:`preset.customized`,type:`boolean`,default:!1},"preset.bundled":{kind:`input`,path:`preset.bundled`,type:`boolean`,default:!0},"style.effective":{kind:`input`,path:`style.effective`,default:``},"progression.effective":{kind:`input`,path:`progression.effective`,default:``},"charset.effective":{kind:`input`,path:`charset.effective`,default:``},"colorCompatibility.effective":{kind:`input`,path:`colorCompatibility.effective`,default:``},"autoWrap.effective":{kind:`input`,path:`autoWrap.effective`,type:`boolean`,default:!0},"padding.effective":{kind:`input`,path:`padding.effective`,type:`number`,default:1},"updateNotice.effective":{kind:`input`,path:`updateNotice.effective`,type:`boolean`,default:!0},"term.cols":{kind:`input`,path:`term.cols`,type:`number`,default:80},"git.repoUrl":{kind:`input`,path:`git.repoUrl`,default:``}},bb={theme:{configKey:`palette`,sessionKey:`theme`,effectiveVar:`theme.effective`,label:`🎨`},preset:{configKey:`preset`,sessionKey:`preset`,effectiveVar:`preset.effective`,label:`▦`},look:{configKey:`look`,sessionKey:`look`,effectiveVar:`look.effective`,label:`◐`},style:{configKey:`style`,sessionKey:`style`,effectiveVar:`style.effective`,label:`✦`},progression:{configKey:`progression`,sessionKey:`progression`,effectiveVar:`progression.effective`,label:`🎼`},charset:{configKey:`charset`,sessionKey:`charset`,effectiveVar:`charset.effective`,label:`🔣`},colorCompatibility:{configKey:`colorCompatibility`,sessionKey:`colorCompatibility`,effectiveVar:`colorCompatibility.effective`,label:`🌈`},autoWrap:{configKey:`autoWrap`,sessionKey:`autoWrap`,effectiveVar:`autoWrap.effective`,label:`wrap`},padding:{configKey:`padding`,sessionKey:`padding`,effectiveVar:`padding.effective`,label:`padding`},updateNotice:{configKey:`updateNotice`,sessionKey:`updateNotice`,effectiveVar:`updateNotice.effective`,label:`update notice`}},xb=Object.values(bb),Sb=new Map(xb.map(e=>[e.configKey,e.effectiveVar])),Cb=new Map(xb.map(e=>[e.sessionKey,e.effectiveVar])),wb=new Map(Object.keys(bb).map(e=>[bb[e].sessionKey,e]));function Tb(e,t,n){let r=new Set,i=e=>{for(let t of sv(e??``,n).keys())r.add(t)};for(let t of Object.values(e.segments))i(t.template),i(t.bg),i(t.fg),i(t.when);for(let e of t)for(let t of Ms(e))i(t.when);for(let t of Object.values(e.variables))t.kind===`template`&&i(t.template),t.kind===`state`&&r.add(nb);for(let t of Object.values(e.actions)){r.add(nb),`copy`in t&&i(t.copy),`open`in t&&i(t.open);let e=`set`in t?Cb.get(t.set):void 0,n=`persist`in t?Sb.get(t.persist):void 0;e!==void 0&&r.add(e),n!==void 0&&r.add(n)}return r}function Eb(e,t,n){let r=pv({...n,variables:{...n.variables,...e.variables},segments:{...n.segments,...e.segments}}),i={};for(let a of Tb(e,t,n.helpers)){if(fv(a,r))continue;let e=yb[a];if(e===void 0)throw Error(`synthesized chrome reads ".${a}", which it does not declare and PAYLOAD_INPUTS does not supply`);i[a]=e}return i}const Db=new Map,Ob=new Map;function kb(e){let t=jb(e);if(t===null)throw Error(`Palette "${e}" did not resolve in the theme registry — allowed names and the registry are inconsistent`);return t}function Ab(e,t){return e===`bar`?t:kb(e)}function jb(e){let t=Db.get(e);if(t!==void 0)return t;let n=xr(e);return n===null?null:(Db.set(e,n),n)}function Mb(e,t){let n=`${e.name} ${t.hueShift} ${t.chromaScale} ${t.lightnessScale} ${t.lightnessShift}`,r=Ob.get(n);if(r!==void 0)return r;let i=kr(e,t);return Ob.set(n,i),i}function Nb(e){let t=jb(e);return t===null?null:{kind:`decided`,name:e,value:t}}function Pb(e,t,n){let r=Nb(e);return r===null?(n(`${t} rendered "${Ga}": "${e}" names no installed theme${Wa(e)}`),Ib()):r}function Fb(e,t,n){return eo(e,t,n,Ib(),Nb)}function Ib(){return Nb(Ga)}function Lb(e){return to(Fb(void 0,null,e),Ib).value}const Rb=new Map;function zb(e,t,n){Rb.set(e,{permanent:!0,resolve:t,paletteOf:n})}zb(`themes`,()=>qa(),e=>kb(e));const Bb=`placementThemes`;zb(Bb,Ja,(e,t)=>Ab(e,t.palette)),zb(`styles`,()=>oo),zb(`progressions`,()=>yo),zb(`charsets`,()=>lo),zb(`colorCompatibilities`,()=>mo);function Vb(e){return new Map([[`looks`,{members:Object.keys(e.looks),paletteOf:(t,n)=>Mb(n.basePalette,e.looks[t])}],[`presets`,{members:x_(e.presets)}]])}function Hb(e){return[...new Set([...Rb.keys(),...e.keys()])]}function Ub(e,t){if(typeof e!=`string`)return{members:e};let n=t.get(e);if(n)return n;let r=Rb.get(e);if(r)return{members:r.resolve(),paletteOf:r.paletteOf};throw Error(`unknown option domain "${e}" (have: ${Hb(t).join(`, `)})`)}function Wb(e){return{label:e.label,domain:Gb(e.domain)}}function Gb(e){return e===`theme`?{from:Bb}:e===`bool`||`min`in e?e:{from:e}}function Kb(e,t,n,r){let i=Jc(e.label),{domain:a}=e;if(a===`bool`)return{kind:`inline`,template:`{{ action "${r}" "☑ ${i}" "☐ ${i}" }}`,actions:{[r]:{set:t,cycle:[...wo]}}};if(`from`in a)return{kind:`ring`,template:`{{ carousel "${r}" }}`,actions:{[r]:{set:t,from:a.from}}};let o=e=>({set:t,min:a.min,max:a.max,by:e});return{kind:`inline`,template:`{{ action "${r}.down" "◀" }} {{ "${i}" }} {{ .${n} }} {{ action "${r}.up" "▶" }}`,actions:{[`${r}.down`]:o(-a.step),[`${r}.up`]:o(a.step)}}}const qb=/^segments\.([^.]+)\.palette$/,Jb=/^presets\.(.+)\.root$/,Yb=/^presets\.(.+)\.globals\.([^.]+)$/;function Xb(e){return`presets.${e}.root`}function Zb(e,t){return`presets.${e}.globals.${t}`}function Qb(e){if(Dl(e))return{scope:`globals`,field:e};let t=qb.exec(e);if(t)return{scope:`segment-palette`,segment:t[1]};let n=Yb.exec(e);if(n&&bl(n[2]))return{scope:`preset-globals`,preset:n[1],field:n[2]};let r=Jb.exec(e);return r?{scope:`preset-root`,preset:r[1]}:null}function $b(e){switch(e.scope){case`globals`:return[`globals`,e.field];case`preset-globals`:return[`presets`,e.preset,`globals`,e.field];case`segment-palette`:return[`segments`,e.segment,`palette`]}}const ex=`open`;function tx(e,t,n,r){let i={variable:e,key:e,member:ex};return r.variables[e]=$c(e,Wc),r.actions[e]=el(e,ex),r.segments[e]={template:Qc(e,`(?)`,`✕`),...nx(n)},Yc(e,i,{kind:`container`,direction:`horizontal`,children:t.map((t,n)=>{let i=`${e}.${n}`;return r.segments[i]={template:t},{kind:`segment`,name:i}})},`drop`)}function nx(e){let[t,...n]=e;return t===void 0?{}:{when:Xc(t,...n)}}const rx={help:[`-h`,`--help`],version:[`-V`,`--version`]},ix=[`✚ inserts`,`🚫 removes`,`⚙ configures`,`↺ resets layout`],ax=`
91
91
  cc-candybar - Beautiful powerline statusline for Claude Code
92
92
 
93
93
  Usage: cc-candybar [options]
@@ -107,7 +107,7 @@ Configuration:
107
107
 
108
108
  Every bar carries a settings menu, whatever your config says — no config
109
109
  needed, and writing your own \`root\` cannot delete it. Click
110
- it on the bar (${Wc} by default; globals.menuGlyph changes it) for
110
+ it on the bar (${Gc} by default; globals.menuGlyph changes it) for
111
111
  quick actions, preset switching, edit mode, and a config menu of
112
112
  clickable theme/look/style/progression/charset/colour-depth/wrap/padding
113
113
  controls. A change applies to this session at once; 💾 save appears while
@@ -154,38 +154,38 @@ Config tooling:
154
154
  config [--json] The effective merged config. (All three query the
155
155
  running daemon; none spawn one.)
156
156
 
157
- `,ox=`${hu}live`,sx=[`☐ live`,`☑ live`],cx=`${hu}done`,lx={variable:ox,key:ox,member:`open`},ux=`and ${Xc(W_)} (not ${Xc(lx)})`,dx=`{{ ${ux} }}`;function fx(e,t){return`{{ if ${ux} }}${e}{{ else }}${t}{{ end }}`}const px=`{{ and ${Xc(W_)} .preset.customized }}`,mx=vu,hx=`${hu}addable`;function gx(e){return new Map([[hx,{members:Object.keys(e.segments).filter(e=>!mx(e))}]])}function _x(e,t,n){return n.segments[e]={template:t,when:G_},{kind:`segment`,name:e}}function vx(e,t,n){let r=`${hu}${e.presetIdent}.remove.${t}`;return e.artifacts.actions[r]={persist:e.rootKey,removeSegment:n},`{{ action "${r}" "🚫" }}`}function yx(e){return`{{ if ${Xc(W_)} }}${e.join(``)}{{ end }}`}function bx(e,t){return e.reduce((e,t)=>`{{ if ${Xc(t)} }}true{{ else }}${e}{{ end }}`,t)}function xx(e){return e.flatMap(e=>[...js(e)].flatMap(e=>e.kind===`segment`&&e.opens?.ref.key===`edit.mode`?[e.opens.ref]:[]))}function Sx(e,t,n){return`${H_}${e}.${t}.${n}`}function Cx(e,t,n,r){let i=Ds(n),a=`${hu}${e.presetIdent}`,o=U_(e.presetIdent,i),s=`${a}.configure.${t}`;e.artifacts.actions[s]={set:z_,to:o};let c={},l=Object.entries(r).map(([r,o])=>{let s=Sx(e.presetIdent,i,r),l=`${H_}p${e.presetIdent}.d${t}.${r}`;e.artifacts.variables[l]={kind:`state`,key:s,default:Ks(n.settings?.[r]??o.default)},c[r]={id:i,key:s,variable:l};let u=`${a}.setting.${t}.${r}`,d=Kb(Wb(o),s,l,u);return Object.assign(e.artifacts.actions,d.actions),e.artifacts.segments[u]={template:d.kind===`ring`?`{{ "${qc(o.label)}" }} ${d.template}`:d.template},{kind:`segment`,name:u}});return{term:`{{ action "${s}" "⚙" }}`,ref:{variable:z_,key:z_,member:o},body:{kind:`container`,direction:`vertical`,children:l},drafts:c}}const wx=`${hu}label:`;function Tx(e){if(e.startsWith(wx)){let t=e.slice(wx.length);return t.slice(t.indexOf(`:`)+1)}return e.startsWith(`edit.`)?void 0:e}function Ex(e,t,n,r){let i=Ds(e),a=`${wx}${i}:${e.name}`;n.segments[a]={template:`{{ "${qc(i)}" }}`,...t.palette!==void 0&&{palette:t.palette}};let o=e.settings?.[Vs];return{...Jc(a,r.ref,r.body,`drop`,bx([r.ref],dx)),...o!==void 0&&{settings:{theme:o}},drafts:{[Vs]:r.drafts[Vs]}}}function Dx(e,t,n,r){let{presetIdent:i,artifacts:a}=e,o=`${hu}${i}.insert.${t}`,s=`${hu}${i}.insertSeg.${t}`;a.actions[o]={persist:e.rootKey,insertSegmentFrom:hx,anchor:n,relation:r};let c=u_(o),l=d_(s,o,void 0),u=m_(l),d=p_(l,c);return a.variables[l]=Qc(l,Uc),a.variables[u]={kind:`state`,key:u,default:`0`},a.actions[d]=$c(l,c),a.actions[u]={set:u,int:!0},{host:s,template:`{{ $m := menu "${o}" "✚" "✕" }}{{ if ${Xc({variable:l,key:l,member:c})} }}{{ $m }}{{ else }}{{ fg (${`readableOn (color "success") (bgOf) ${Ca}`}) $m }}{{ end }}`}}function Ox(e,t){let n=[],r=e.children.findIndex(e=>e.kind===`segment`&&!mx(e.name)),i=e=>Ox(e,t);for(let[a,o]of e.children.entries()){if(o.kind===`container`){n.push(i(o));continue}let s=As(o,i);if(mx(o.name)){n.push(s);continue}let c=Ds(o),l=a===r?[Dx(t,String(t.posCounter.n++),c,`before`)]:[],u=String(t.posCounter.n++),d=Dx(t,u,c,`after`),f=vx(t,u,c),p=t.segments[o.name],m=Cx(t,u,o,Hs(p)),h=yx([m.term,f]),g={kind:`container`,direction:`horizontal`,children:[...l.map(e=>_x(e.host,e.template,t.artifacts)),{...Ex(o,p,t.artifacts,m),trail:h},{...s,when:fx(`false`,o.when??`true`),trail:h,drafts:m.drafts},_x(d.host,d.template,t.artifacts)]};n.push(e.direction===`vertical`?{kind:`container`,direction:`horizontal`,children:[g]}:g)}return{...e,children:n,...e.when!==void 0&&{when:bx(xx(n),fx(`true`,e.when))}}}function kx(e,t,n,r,i,a,o){let s=`${hu}${n}.resetLayout`,c=`${hu}${n}.customized`;i.actions[s]={reset:r};let l=qc(t);return i.segments[c]={template:`{{ action "${s}" "↺ ${l} customized" }}`,when:px},{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[a,{kind:`segment`,name:c}]},Ax(e,o)]}}function Ax(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),Ax(n,t)]}:{...e,children:[...e.children,t]}}function jx(e,t,n,r,i){let{node:a}=w_(e,t),o={presetIdent:fu(t),rootKey:Xb(t),segments:e.segments,artifacts:n,posCounter:{n:0}};return kx(Ox(a,o),t,o.presetIdent,o.rootKey,n,r,i)}function Mx(e){let t={variables:{},actions:{},segments:{}},n=tx(`${hu}help`,ix,[W_],t);t.variables[ox]=Qc(ox,Uc),t.actions[ox]=$c(ox,lx.member),t.segments[ox]={template:Zc(ox,...sx),when:G_};let r={kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:ox},n]};t.segments[cx]={template:`{{ action "${B_}" "✎ done" }}`,when:G_};let i={kind:`segment`,name:cx},a={...e.presets},o=[];for(let n of x_(e.presets)){let s=jx(e,n,t,i,r);o.push(s),a[n]={...C_(e.presets,n),root:s}}let s=Eb(t,o,e);return{...e,variables:{...s,...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:a}}const Nx={socket:`TMUX`,pane:`TMUX_PANE`,truecolor:`CLAUDE_CODE_TMUX_TRUECOLOR`};function Px(e){let t=e[Nx.socket]??``,n=e[Nx.pane]??``;if(t===``||n===``)return null;let r=e[Nx.truecolor]??``;return{socket:t.split(`,`)[0],pane:n,truecolor:r===``?null:r}}const Fx=Nx.truecolor,Ix=[{name:`tmuxTruecolor`,label:`tmux truecolor`,probe:({tmux:e,claudeSettings:t})=>{switch(e.kind){case`unreported`:return{ok:!1,reason:"the client reported no tmux facts — re-run `cc-candybar install` to stage a current client"};case`outside`:return{ok:!0};case`inside`:{if(e.termfeatures.kind===`failed`)return{ok:!1,reason:`tmux could not be asked: ${e.termfeatures.reason}`};if(!e.termfeatures.value.includes(`RGB`)||e.hint.truecolor!==null)return{ok:!0};let n=t.env[Fx];return typeof n==`string`&&n!==``?{ok:!1,reason:`${Fx} is set in ${t.path} — restart Claude Code to apply`}:{ok:!1,reason:`Claude Code renders the bar in 256 colours inside tmux`,fix:{kind:`claude-settings-env`,name:Fx,value:`1`}}}}}}];function Lx(e){return Ix.map(t=>({check:t,verdict:t.probe(e)}))}function Rx(e){return Ix.find(t=>t.name===e)}const zx=`${gu}doctor.`;function Bx(e){let t=`${zx}${e}.`;return{verdict:`${t}verdict`,reason:`${t}reason`,fixable:`${t}fixable`}}function Vx(e){return e.flatMap(({check:e,verdict:t})=>{let n=Bx(e.name);return t.ok?[{key:n.verdict,value:`ok`},{key:n.reason,value:``},{key:n.fixable,value:So}]:[{key:n.verdict,value:`failed`},{key:n.reason,value:t.reason},{key:n.fixable,value:t.fix===void 0?So:xo}]})}const Hx={copySession:{copy:`{{ .session.id }}`},openProject:{open:`{{ .project_dir }}`},openTranscript:{open:`{{ .transcript_path }}`}};function Ux(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(Hx).map(([t,n])=>[`${e}${t}`,n]))}}const Wx=`armed`,Gx=`disarmed`;function Kx(e,t,n){let r=`${e}.arm`,i=`${e}.disarm`;return{template:`{{ if eq .${e} "${Wx}" }}{{ action "${e}" "${t.confirm}" }} {{ action "${i}" "✕" }}{{ else }}{{ action "${r}" "${t.arm}" }}{{ end }}`,actions:{[r]:{set:e,to:Wx},[i]:{set:e,to:Gx},[e]:{do:[i,...n]}},variables:{[e]:{kind:`state`,key:e,default:Gx}},disarm:i}}const qx=RegExp(`^/[^\\s\\x00-\\x1f\\x7f-\\x9f/][^\\x00-\\x1f\\x7f-\\x9f]*$`);function Jx(e){return typeof e==`string`&&qx.test(e)?{kind:`line`,line:e}:{kind:`refused`,reason:`a slash command is "/" then its name, e.g. "/compact" or "/model opus", on one line with no control characters, got ${JSON.stringify(e)}`}}function Yx(e){let t=Jx(e);if(t.kind===`refused`)throw Error(t.reason);return t.line}const Xx=[`/compact`,`/model`],Zx=`/clear`;function Qx(e){let t=t=>`${e}${t.slice(1)}`,n=`${e}clear.slash`,r=Kx(`${e}clear`,{arm:Zx,confirm:`${Zx} ✓ confirm`},[n]);return{template:Xx.map(e=>`{{ action "${t(e)}" "${e}" }} `).join(``)+r.template,actions:{...Object.fromEntries(Xx.map(e=>[t(e),{slash:Yx(e)}])),...r.actions,[n]:{slash:Yx(Zx)}},variables:r.variables,disarm:r.disarm}}const $x=`${gu}menu`,eS=`open`,tS=`${gu}edit`,nS=`${gu}close`,rS=`${gu}toolbar`,iS=Ux(gu),aS=`${gu}commands`,oS=Qx(`${aS}.`),sS=`${gu}config`,cS=`${gu}save`,lS=`${gu}unsaved`,uS=`${gu}preset.save`,dS=`${gu}preset.delete`,fS=`${gu}resetAll`,pS=`${$x}.toggle`,mS=`${sS}.toggle`,hS={variable:$x,key:$x,member:eS},gS={variable:sS,key:sS,member:eS},_S=`${gu}tools`,vS={variable:_S,key:_S,member:eS},yS=[{seg:`${gu}undo`,depth:`undo`,action:{undo:!0},display:`↶ undo`},{seg:`${gu}redo`,depth:`redo`,action:{redo:!0},display:`↷ redo`}],bS=e=>`${gu}history.${e}`,xS=`${gu}doctor`,SS=`${xS}.run`,CS=e=>`${xS}.fix.${e}`,wS=e=>`${xS}.${e}`,TS=`${gu}pickers`,ES=[`{{ themePreview }}`],DS={preset:[`{{ layoutPreview }}`,`{{ action "${uS}" "⊕ save as preset" }}{{ if not .preset.bundled }} {{ action "${dS}" (printf "🗑 delete %s" .${bb.preset.effectiveVar}) }}{{ end }}`],theme:ES,look:ES,progression:[`{{ layoutPreview }}`]},OS=e=>`${gu}${e}`,kS=e=>`${gu}apply.${e}`,AS=e=>`${gu}reset.${e}`,jS=e=>`${gu}carousel.${e}`,MS=(e,t)=>`${jS(e)}.${t}`,NS=Object.keys(bb).map(e=>{let t=bb[e],n=ul(t.configKey);if(n===`text`)throw Error(`settings menu: globals.${t.configKey} is free text, which no control can change — list it in UNCONTROLLED_GLOBALS instead of SETTINGS`);let r=Kb({label:t.label,domain:n},t.sessionKey,t.effectiveVar,kS(e));return{...t,name:e,control:r,beneath:DS[e]??[]}}),PS=new Set([`preset`]),FS=NS.filter(e=>PS.has(e.name)),IS=NS.filter(e=>!PS.has(e.name));new Set(NS.flatMap(e=>[e.sessionKey,e.configKey]));const LS=Kx(fS,{arm:`⟲ reset all`,confirm:`⟲ confirm reset all`},NS.map(e=>AS(e.name))),RS=[LS,oS],zS=f_(TS),BS=e=>({variable:zS,key:zS,member:u_(kS(e))});function VS(e){let t=OS(e.name);return e.control.kind===`inline`?{kind:`segment`,name:t}:Jc(t,BS(e.name),{kind:`container`,direction:`vertical`,children:[{kind:`segment`,name:jS(e.name)},...e.beneath.map((t,n)=>({kind:`segment`,name:MS(e.name,n)}))]},`drop`)}function HS(e){return e===$x}function US(e){let t={kind:`segment`,name:$x};if(e.kind===`container`&&e.direction===`vertical`){let[n,...r]=e.children;return e.when===void 0&&n!==void 0?{...e,children:[US(n),...r]}:{kind:`container`,direction:`vertical`,children:[t,e]}}return e.kind===`container`&&e.when===void 0?{...e,children:[t,...e.children]}:{kind:`container`,direction:`horizontal`,children:[t,e]}}function WS(e){return GS(e)>0?e:US(e)}function GS(e){let t=0;for(let n of js(e))n.kind===`segment`&&HS(n.name)&&(t+=1);return t}function KS(e,t=!1){let n=t||e.when!==void 0;return e.kind===`segment`?n&&HS(e.name)||e.opens!==void 0&&KS(e.opens.body,!0):e.children.some(e=>KS(e,n))}function qS(e){return e.kind===`segment`?HS(e.name)?Jc(e.name,hS,{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:rS},{kind:`segment`,name:aS},...FS.map(VS),{kind:`segment`,name:cS},Jc(sS,gS,{kind:`container`,direction:`horizontal`,children:[...IS.map(VS),{kind:`segment`,name:fS}]},`drop`),Jc(_S,vS,{kind:`container`,direction:`vertical`,children:[{kind:`segment`,name:xS},...Ix.map(e=>({kind:`segment`,name:wS(e.name)}))]},`drop`),{kind:`segment`,name:tS},...yS.map(e=>({kind:`segment`,name:e.seg}))]},`inline`):e:JS(e)}function JS(e){return{...e,children:e.children.map(e=>qS(e))}}function YS(e){let t={variables:{[$x]:Qc($x,Uc)},actions:{[pS]:$c($x,eS),[$x]:{do:[pS,...RS.map(e=>e.disarm)]},[mS]:$c(sS,eS),[sS]:{do:[mS,LS.disarm]},[_S]:$c(_S,eS),[SS]:{doctor:`run`},[nS]:{set:hS.key,to:Uc},[tS]:{do:[B_,nS]},...iS.actions,...oS.actions,[cS]:{save:!0},[uS]:{preset:`save`},[dS]:{preset:`delete`,name:`{{ .${bb.preset.effectiveVar} }}`}},segments:{[$x]:{template:Zc($x,e,`❌`)},[rS]:{template:iS.template},[aS]:{template:oS.template},[cS]:{when:`{{ gt .${lS} 0 }}`,template:`{{ action "${cS}" (printf "💾 save %d" .${lS}) }}`},[sS]:{template:Zc(sS,`⚙ config ▸`,`⚙ config ▾`)},[_S]:{template:Zc(_S,`🧰 tools ▸`,`🧰 tools ▾`)},[xS]:{template:`{{ action "${SS}" "🩺 doctor" }}`},[tS]:{template:`{{ action "${tS}" "✎ edit" "✎ done" }}`},[fS]:{template:LS.template}}};return t.variables[lS]={kind:`input`,path:`unsaved`,type:`number`,default:0},t.variables[sS]=Qc(sS,Uc),t.variables[_S]=Qc(_S,Uc),Object.assign(t.variables,oS.variables,LS.variables),QS(t),ZS(t),XS(t),t}function XS(e){for(let t of yS){let n=bS(t.depth);e.variables[n]={kind:`input`,path:`history.${t.depth}`,type:`number`,default:0},e.actions[t.seg]=t.action,e.segments[t.seg]={when:`{{ gt .${n} 0 }}`,template:`{{ action "${t.seg}" "${t.display}" }}`}}}function ZS(e){for(let t of Ix){let n=Bx(t.name),r=CS(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[wS(t.name)]={when:`{{ ne .${n.verdict} "" }}`,template:`{{ if eq .${n.verdict} "ok" }}✓ ${t.label}{{ else }}✗ ${t.label} — {{ .${n.reason} }}{{ if eq .${n.fixable} "${xo}" }} {{ action "${r}" "[fix]" }}{{ end }}{{ end }}`}}}function QS(e){for(let t of NS){Object.assign(e.actions,t.control.actions);let n=AS(t.name);e.actions[n]={reset:t.configKey};let r=`{{ action "${n}" "↺" }}`;if(t.control.kind===`inline`){e.segments[OS(t.name)]={template:`${t.control.template} ${r}`};continue}let i=BS(t.name),a=p_(i.key,i.member);e.variables[i.key]=Qc(i.key,Uc),e.actions[a]=$c(i.key,i.member),e.segments[OS(t.name)]={template:`${t.label} {{ .${t.effectiveVar} }} ${Zc(a,`▸`,`▾`)} `+r},e.segments[jS(t.name)]={template:t.control.template},t.beneath.forEach((n,r)=>{e.segments[MS(t.name,r)]={template:n}})}Object.assign(e.actions,LS.actions)}function $S(e){e.variables[z_]=Qc(z_,Uc),e.actions[B_]=$c(z_,V_)}function eC(e){let t=YS(e.globals.menuGlyph??`🍫`);$S(t);let n={...e.presets},r=[];for(let t of x_(e.presets)){let{node:i}=w_(e,t),a=qS(WS(i));r.push(a),n[t]={...C_(e.presets,t),root:a}}let i=Eb(t,r,e);return{...e,variables:{...i,...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:n}}const tC=[`set`,`persist`,`copy`,`open`,`reset`,`undo`,`redo`,`save`,`preset`,`doctor`,`ceiling`,`slash`,`do`];function nC(e){return e.ceiling===`set`?[`set`,e.to]:[`clear`]}function rC(e){return`from`in e||`int`in e||`insertSegmentFrom`in e}function iC(e,t){if(t===void 0)return{};if(!nc(t))return Z(e,`actions`,`actions must be an object, got ${rc(t)}`),{};let n=Object.create(null);for(let[r,i]of Object.entries(t)){let t=aC(e,`actions.${r}`,i);t!==null&&(n[r]=t)}return n}function Z(e,t,n){e.issues.push({path:t,message:n,line:G(e.source,t.split(`.`))})}function aC(e,t,n){if(!nc(n))return Z(e,t,`${t} must be an action object, got ${rc(n)}`),null;if(`persistWhen`in n)return Z(e,t,`${t}.persistWhen was removed: declare the \`set\` alone — a session pick is a draft until a \`{ save: true }\` action writes every unsaved setting to the config file`),null;let r=tC.filter(e=>e in n);return r.length===1?oC[r[0]](e,t,n):(Z(e,t,`action must declare exactly one of: ${tC.join(`, `)}${r.length>1?` (found: ${r.join(`, `)})`:``}`),null)}const oC={set:(e,t,n)=>RC(e,t,n,`set`,PC),persist:(e,t,n)=>RC(e,t,n,`persist`,FC),copy:sC(`copy`),open:sC(`open`),reset:cC,undo:uC(`undo`),redo:uC(`redo`),save:uC(`save`),preset:dC,doctor:fC,ceiling:pC,slash:mC,do:hC};function sC(e){return(t,n,r)=>{for(let i of Object.keys(r))i!==e&&Z(t,`${n}.${i}`,`Unknown key "${i}" on a ${e} action. Expected only: ${e}`);let i=Zs(t,n,r,e);return i===null?null:{[e]:i}}}function cC(e,t,n){for(let r of Object.keys(n))r!==`reset`&&Z(e,`${t}.${r}`,`Unknown key "${r}" on a reset action. Expected only: reset`);let r=gC(e,t,`reset`,n,`reset key must be non-empty (the config globals field to clear)`,e=>`reset key "${e}" contains "/" — keys must be slash-free`);return r===null?null:{reset:r}}const lC={undo:`it steps the session's settings history`,redo:`it steps the session's settings history`,save:`it saves the session's unsaved settings`};function uC(e){return(t,n,r)=>{for(let i of Object.keys(r))i!==e&&Z(t,`${n}.${i}`,`Unknown key "${i}" on a ${e} action. Expected only: ${e}`);return r[e]===!0?{[e]:!0}:(Z(t,`${n}.${e}`,`${e} must be the literal true (it takes no key — ${lC[e]}), got ${K(r[e])}`),null)}}function dC(e,t,n){let r=n.preset,i=r===`save`?[`preset`]:[`preset`,`name`];for(let r of Object.keys(n))i.includes(r)||Z(e,`${t}.${r}`,`Unknown key "${r}" on a preset action. Expected only: ${i.join(`, `)}`);if(r!==`save`&&r!==`delete`)return Z(e,`${t}.preset`,`preset must be "save" or "delete", got ${K(r)}`),null;if(r===`save`)return{preset:`save`};let a=Zs(e,t,n,`name`);return a===null?null:{preset:`delete`,name:a}}function fC(e,t,n){let r=n.doctor,i=r===`run`?[`doctor`]:[`doctor`,`check`];for(let r of Object.keys(n))i.includes(r)||Z(e,`${t}.${r}`,`Unknown key "${r}" on a doctor action. Expected only: ${i.join(`, `)}`);if(r!==`run`&&r!==`fix`)return Z(e,`${t}.doctor`,`doctor must be "run" or "fix", got ${K(r)}`),null;if(r===`run`)return{doctor:`run`};let a=n.check;return typeof a!=`string`||Rx(a)===void 0?(Z(e,`${t}.check`,`doctor fix must name a check (have: ${Ix.map(e=>e.name).join(`, `)}), got ${K(a)}`),null):{doctor:`fix`,check:a}}function pC(e,t,n){let r=n.ceiling,i=r===`clear`?[`ceiling`]:[`ceiling`,`to`];for(let r of Object.keys(n))i.includes(r)||Z(e,`${t}.${r}`,`Unknown key "${r}" on a ceiling action. Expected only: ${i.join(`, `)}`);if(r===`clear`)return{ceiling:`clear`};if(r!==`set`)return Z(e,`${t}.ceiling`,`ceiling must be "set" or "clear", got ${K(r)}`),null;let a=n.to;return typeof a!=`string`||a.trim()===``?(Z(e,`${t}.to`,`ceiling set needs \`to\`: a memento ceiling value such as "+100_000", "400000" or "off", got ${K(a)}`),null):{ceiling:`set`,to:a}}function mC(e,t,n){for(let r of Object.keys(n))r!==`slash`&&Z(e,`${t}.${r}`,`Unknown key "${r}" on a slash action. Expected only: slash`);let r=Jx(n.slash);return r.kind===`refused`?(Z(e,`${t}.slash`,r.reason),null):{slash:r.line}}function hC(e,t,n){for(let r of Object.keys(n))r!==`do`&&Z(e,`${t}.${r}`,`Unknown key "${r}" on a do action. Expected only: do`);let r=n.do;return!Array.isArray(r)||r.length<2||r.some(e=>typeof e!=`string`||e===``)?(Z(e,`${t}.do`,`do must list at least two action names (the first is the click's face, the rest ride along in the same click), got ${K(r)}`),null):{do:r}}function gC(e,t,n,r,i,a){let o=Zs(e,t,r,n);if(o===null)return null;let s=`${t}.${n}`;return o===``?(Z(e,s,i),null):o.includes(`/`)?(Z(e,s,a(o)),null):o}const _C={set:`the SessionState key to write`,persist:`the config globals field to write`};function vC(e,t,n,r){let i=_C[r],a=gC(e,t,r,n,`${r} key must be non-empty (${i})`,e=>`${r} key "${e}" contains "/" — keys must be slash-free`);return a===null?null:{[r]:a}}function yC(e){return e===`set`?`set-state`:`set-config`}const bC={to:zC(`set`)},xC={to:zC(`persist`)},SC={from:BC(`set`)},CC={from:BC(`persist`)},wC={min:GC(),max:GC(),by:GC()},TC={int:HC()},EC={cycle:VC(`set`)},DC={cycle:VC(`persist`)},OC={removeSegment:UC(`removeSegment`)},kC={insertSegment:UC(`insertSegment`),anchor:UC(`anchor`),relation:WC()},AC={insertSegmentFrom:BC(`persist`),anchor:UC(`anchor`),relation:WC()},jC={ok:e=>e.min<e.max,issue:e=>({field:`min`,message:`min (${e.min}) must be less than max (${e.max})`})},MC={ok:e=>e.by!==0,issue:()=>({field:`by`,message:`by must be a non-zero integer (the per-click increment; negative steps down)`})};function NC(e,t,n=[],r){let i=Object.keys(t),a=r??i,o=[e],s=(e,n,r)=>ac(e,t,n,r),c=Cc(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?pc(s,...n):s}}const PC=[NC(`set`,bC),NC(`set`,SC),NC(`set`,wC,[jC,MC]),NC(`set`,TC),NC(`set`,EC)],FC=[NC(`persist`,xC),NC(`persist`,CC),NC(`persist`,wC,[jC,MC]),NC(`persist`,DC),NC(`persist`,OC),NC(`persist`,kC,[],[`insertSegment`]),NC(`persist`,AC,[],[`insertSegmentFrom`])];function IC(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 LC(e){let t=IC(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 RC(e,t,n,r,i){let a=vC(e,t,n,r),o=i.filter(e=>e.detect.some(e=>e in n));if(o.length!==1)return Z(e,t,`${LC(r)}${o.length>1?` — found: ${o.map(e=>e.label).join(`, `)}`:``}`),null;let s=o[0];for(let i of Object.keys(n))s.allowed.includes(i)||Z(e,`${t}.${i}`,`Unknown key "${i}" on this ${r} action. Expected one of: ${s.allowed.join(`, `)}`);let c=s.parse(e,t,n);return a===null||c===null?null:{...a,...c}}function zC(e){let t=yC(e);return{required:!0,json:{type:`string`},parse:(n,r,i,a)=>gC(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 BC(e){let t=yC(e);return{required:!0,json:{anyOf:[{type:`string`,minLength:1},{type:`array`,items:{type:`string`,minLength:1},minItems:1,uniqueItems:!0}]},parse:(n,r,i,a)=>{let o=a[i],s=`${r}.${i}`;if(typeof o==`string`){if(o===``){Z(n,s,`${i} must be a non-empty domain name`);return}return o}if(Array.isArray(o)&&o.every(e=>typeof e==`string`)){let r=o;if(r.length===0){Z(n,s,`${i} must name a domain (a non-empty string) or declare an inline domain (a non-empty array of values)`);return}if(r.some(e=>e===``)){Z(n,s,`${i} array members must be non-empty — an empty value cannot be delivered on the ${t} wire`);return}let a=r.filter(e=>e.includes(`/`));if(a.length>0){Z(n,s,`${i} array member(s) ${a.map(e=>`"${e}"`).join(`, `)} contain "/" — ${e} values must be slash-free`);return}if(new Set(r).size!==r.length){Z(n,s,`${i} array members must be unique — a duplicated value would render the same picker option twice`);return}return r}Z(n,s,`${i} must be a domain name (a string) or an inline domain (an array of strings), got ${K(o)}`)}}}function VC(e){let t=yC(e);return{required:!0,json:{type:`array`,items:{type:`string`,minLength:1},minItems:2,uniqueItems:!0},parse:(n,r,i,a)=>{let o=a[i],s=`${r}.${i}`;if(!Array.isArray(o)||o.some(e=>typeof e!=`string`)){Z(n,s,`cycle must be an array of strings (the enumerated values a click steps through), got ${rc(o)}`);return}let c=o;if(c.length<2){Z(n,s,`cycle needs at least two members (one member has no successor — use a literal "to")`);return}let l=c.some(e=>e===``),u=c.filter(e=>e.includes(`/`));if(l){Z(n,s,`cycle members must be non-empty — an empty value cannot be delivered on the ${t} wire`);return}if(u.length>0){Z(n,s,`cycle member(s) ${u.map(e=>`"${e}"`).join(`, `)} contain "/" — ${e} values must be slash-free`);return}if(new Set(c).size!==c.length){Z(n,s,`cycle members must be unique — the successor of a duplicated member is ambiguous`);return}return c}}}function HC(){return{required:!0,json:{const:!0},parse:(e,t,n,r)=>{if(r[n]!==!0){Z(e,`${t}.${n}`,`int must be the literal true (declares the key an unbounded integer cursor — a paged picker's page key), got ${K(r[n])}`);return}return!0}}}function UC(e){return{required:!0,json:{type:`string`},parse:(t,n,r,i)=>{let a=Zs(t,n,i,r);if(a===null)return;let o=`${n}.${r}`;if(a===``){Z(t,o,`${e} must be non-empty (a segment name)`);return}if(a.includes(`/`)||a.includes(`:`)){Z(t,o,`${e} "${a}" contains "/" or ":" — segment names in a layout op must be free of both (the click wire's own delimiter and layout-ops.ts's op-token delimiter)`);return}return a}}}function WC(){return{required:!0,json:{enum:[`before`,`after`]},parse:(e,t,n,r)=>{let i=r[n];if(i!==`before`&&i!==`after`){Z(e,`${t}.${n}`,`relation must be "before" or "after", got ${K(i)}`);return}return i}}}function GC(){return{required:!0,json:{type:`integer`},parse:(e,t,n,r)=>{let i=r[n];if(typeof i!=`number`||!Number.isInteger(i)){Z(e,`${t}.${n}`,`${n} must be an integer, got ${K(i)}`);return}return i}}}const KC={noun:`look key`,fields:{hueShift:_c(),chromaScale:_c({min:0}),lightnessScale:_c(),lightnessShift:_c()}};function qC(e,t){if(!nc(t))return e.issues.push({path:`looks`,message:`looks must be an object mapping look names to adaptation objects, got ${rc(t)}`,line:G(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:G(e.source,[`looks`,r])});continue}let t=ic(e,KC,`looks.${r}`,i);t!==null&&(n[r]={...In,...t})}return n}const JC={noun:`preset key`,fields:{root:{required:!1,json:{$ref:`#/definitions/RootFragment`},parse:(e,t,n,r)=>r[n]===void 0?void 0:od(e,`${t}.${n}`,r[n])},globals:{required:!1,json:Cl(),parse:(e,t,n,r)=>r[n]===void 0?void 0:Sl(e,`${t}.${n}`,r[n])}}};function YC(e,t){if(!nc(t))return e.issues.push({path:`presets`,message:`presets must be an object mapping preset names to config fragments, got ${rc(t)}`,line:G(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:G(e.source,[`presets`,r])});continue}let t=ic(e,JC,`presets.${r}`,i);t!==null&&(n[r]=t)}return n}function XC(e,t){if(t===void 0)return{};if(!nc(t))return e.issues.push({path:`helpers`,message:`helpers must be an object, got ${rc(t)}`,line:G(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 ${K(i)}`,line:G(e.source,[`helpers`,r])});continue}n[r]=i}return n}const ZC=new Map([[`session.budget.amount`,{segment:`session`,setting:`budget`}],[`session.budget.warningThreshold`,{segment:`session`,setting:`warnAt`}],[`today.budget.amount`,{segment:`today`,setting:`budget`}],[`today.budget.warningThreshold`,{segment:`today`,setting:`warnAt`}],[`block.budget.heatThreshold`,{segment:`block`,setting:`warnAt`}],[`block.budget.warningThreshold`,{segment:`block`,setting:`errorAt`}],[`weekly.budget.heatThreshold`,{segment:`weekly`,setting:`warnAt`}],[`weekly.budget.warningThreshold`,{segment:`weekly`,setting:`errorAt`}],[`burn.eta.errorMinutes`,{segment:`burnrate`,setting:`errorWithin`}],[`burn.eta.warnMinutes`,{segment:`burnrate`,setting:`warnWithin`}]]);function QC(e){return`it became the "${e.setting}" setting of each "${e.segment}" placement — set it on the placement where a row places "${e.segment}" ({ seg: "${e.segment}", settings: { ${e.setting}: <value> } }), or redeclare segments.${e.segment}.settings.${e.setting} with the default every placement should start from`}function $C(e){let t=ZC.get(e);return t===void 0?void 0:`variables.${e} is no longer read: ${QC(t)}`}function ew(e){let t=ZC.get(e);return t===void 0?``:` — ".${e}" is no longer a variable: ${QC(t)}; a "${t.segment}" template reads it as ".settings.${t.setting}"`}function tw(e,t){let n=new Map;for(let e of Object.keys(t)){let t=fu(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:G(e.source,[`presets`])})}function nw(e,t,n){let r=[[[`globals`],t.globals.look],[[`editGlobals`],t.editGlobals.look],...Object.entries(t.presets).map(([e,t])=>[[`presets`,e,`globals`],t.globals?.look])];for(let[n,i]of r)i===void 0||Qa(i)||Object.prototype.hasOwnProperty.call(t.looks,i)||e.issues.push({path:`${n.join(`.`)}.look`,message:`${n.join(`.`)}.look "${i}" does not match any declared look (have: ${Object.keys(t.looks).join(`, `)})`,line:G(e.source,[...n,`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:G(e.source,[`globals`,`preset`])}),tw(e,t.presets);let i=Vb(t);for(let[n,r]of Object.entries(t.actions))!(`set`in r)||!(`from`in r)||typeof r.from!=`string`||Hb(i).includes(r.from)||e.issues.push({path:`actions.${n}.from`,message:`actions.${n} from: references unknown option domain "${r.from}" (have: ${Hb(i).join(`, `)})`,line:G(e.source,[`actions`,n,`from`])});for(let[n,r]of Object.entries(t.actions))`do`in r&&r.do.forEach((i,a)=>{let o=Object.prototype.hasOwnProperty.call(t.actions,i)?t.actions[i]:void 0,s=o===void 0?`references unknown action "${i}"`:`do`in o?`"${i}" is itself a do action — list its members here instead`:r.do.indexOf(i)===a?a>0&&rC(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:G(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=Qb(i);if(o===null){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" is not a config globals field (have: ${Dl().join(`, `)}), a "segments.<name>.palette" target, a "presets.<name>.globals.<field>" target, or a "presets.<name>.root" target`,line:G(e.source,[`actions`,n,a])});continue}let s=rw.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:G(e.source,[`actions`,n,a])});continue}if(o.scope===`preset-root`){iw(e,t,n,a,i,o.preset,r);continue}if(o.scope===`preset-globals`&&!x_(t.presets).includes(o.preset)){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" names preset "${o.preset}" which is not declared (have: ${x_(t.presets).join(`, `)})`,line:G(e.source,[`actions`,n,a])});continue}if(o.scope===`segment-palette`){if(!Object.prototype.hasOwnProperty.call(t.segments,o.segment)){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" names segment "${o.segment}" which is not declared (have segments: ${Object.keys(t.segments).join(`, `)})${Su(o.segment)}`,line:G(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:G(e.source,[`actions`,n,a])})}}let a=pv(t);for(let t of a.names)t!==`settings`&&!t.startsWith(aw)||e.issues.push({path:`variables`,message:`variable "${t}" is named under "settings", which a segment's templates read as its placement's own settings (.settings.<name>) — rename it`,line:G(e.source,[`variables`,t])});let o=(t,n,r)=>{GS(t)>1&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${$x}" ${GS(t)} times — it may appear at most once per layout (it is one disclosure, and one state key holds one open state). Remove all but the placement you want; removing every placement puts the menu at its default position.`,line:r}),KS(t)&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${$x}" under a \`when\` or inside a disclosure body — the menu is visible under every condition, so its placement may not be gated. Move it to an ungated position, or remove it to put the menu at its default position.`,line:r}),s(t)&&e.issues.push({path:n,message:`${n} sets "distribution" on a container inside a bar cell — everything inside a cell wears that cell's hue and tone, so it would place nothing. Set it on the row whose children are the cells (the horizontal container) or on the root, which places the rows.`,line:r});let i=new Map;for(let e of js(t)){if(e.kind!==`segment`)continue;let t=Ds(e);i.set(t,[...i.get(t)??[],e])}for(let[t,a]of i){if(a.length<2)continue;let o=a[1].name,s=ks(o,new Set(i.keys()));e.issues.push({path:n,message:`${n} has ${a.length} placements with the id "${t}" — an id names one placement (its settings, its menus' open state, and edit mode all address it), so give each its own: { seg: "${o}", id: "${s}" }. A placement without an "id" takes its segment's name.`,line:r})}};function s(e,t=!1){return e.kind===`segment`?!1:t&&e.distribution!==void 0||e.children.some(n=>s(n,t||Es[e.direction]===`cell`))}let c=(n,r)=>{for(let[i,o]of Ic(n,r)){let n=G(e.source,o.split(`.`));if(i.when!==void 0&&(_w(e,`${o}.when`,i.when,a,{line:n}),gw(e,`${o}.when`,i.when,n)),i.kind===`segment`){if(HS(i.name)){(i.id!==void 0||i.settings!==void 0)&&e.issues.push({path:o,message:`${r} gives the global settings menu anchor "${$x}" an id or settings — the anchor only marks where the menu goes, so place it as the bare name "${$x}"`,line:n});continue}Object.prototype.hasOwnProperty.call(t.segments,i.name)||e.issues.push({path:o,message:`${r} entry "${i.name}" does not match any declared segment${Su(i.name)}`,line:n}),pw(e,t,i,o,n)}}};n.root!==void 0&&c(n.root,`root`);for(let[e,t]of Object.entries(n.presets??{}))t.root!==void 0&&c(t.root,`presets.${e}.root`);let l=new Map([[`root`,Pc(t.root)]]);for(let e of x_(t.presets)){let{node:n,path:r}=w_(t,e);l.set(r,n)}for(let[t,n]of l)o(n,t,G(e.source,t.split(`.`)));for(let[n,r]of Object.entries(t.variables)){mw(e,`variables.${n}`,r,a);let t=$C(n);t!==void 0&&e.issues.push({path:`variables.${n}`,message:t,line:G(e.source,[`variables`,n])})}for(let[n,r]of Object.entries(t.segments)){if(r.vars)for(let[t,i]of Object.entries(r.vars))mw(e,`segments.${n}.vars.${t}`,i,a,n);let i=Hs(r);sw(e,n,i);let o=ow(a,i);for(let a of[`template`,`bg`,`fg`,`when`]){let s=r[a];if(typeof s==`string`){_w(e,`segments.${n}.${a}`,s,o,{segCtx:n,settings:i});for(let{name:r,site:i,via:o}of dv(s,t.helpers)){if(Object.prototype.hasOwnProperty.call(t.actions,r))continue;let s=i===`options`?` (in a picker, menu or carousel)`:``;if(o!==null){vw(e,o,`Template references unknown action "${r}"${s}`);continue}e.issues.push({path:`segments.${n}.${a}`,message:`${a} references unknown action "${r}"${s}`,line:G(e.source,[`segments`,n,a])})}}}}for(let[n,r]of Object.entries(t.variables))hw(e,`variables.${n}`,r,a);for(let[n,r]of Object.entries(t.segments))if(r.vars)for(let[t,i]of Object.entries(r.vars))hw(e,`segments.${n}.vars.${t}`,i,a,n)}const rw=[`removeSegment`,`insertSegment`,`insertSegmentFrom`];function iw(e,t,n,r,i,a,o){let s=`actions.${n}.${r}`,c=G(e.source,[`actions`,n,r]);if(!x_(t.presets).includes(a)){e.issues.push({path:s,message:`actions.${n}: "${i}" names preset "${a}" which is not declared (have: ${x_(t.presets).join(`, `)})`,line:c});return}if(r===`reset`)return;let l=`removeSegment`in o,u=`insertSegment`in o,d=`insertSegmentFrom`in o;if(!l&&!u&&!d){e.issues.push({path:s,message:`actions.${n}: "${i}" is a "presets.<name>.root" target and can only be paired with "removeSegment", "insertSegment", or "insertSegmentFrom" (not "to"/"from"/"cycle"/bounded — those have no meaning as a tree op)`,line:c});return}let f=(r,i)=>{Object.prototype.hasOwnProperty.call(t.segments,i)||e.issues.push({path:s,message:`actions.${n}: ${r} "${i}" is not a declared segment (have: ${Object.keys(t.segments).join(`, `)})${Su(i)}`,line:c})},p=new Set(Os(w_(t,a).node)),m=(r,i)=>{!xu.has(i)||p.has(i)||Object.prototype.hasOwnProperty.call(t.segments,i)||e.issues.push({path:s,message:`actions.${n}: ${r} "${i}" names no placement${Su(i)}`,line:c})};`removeSegment`in o&&m(`removeSegment`,o.removeSegment),`insertSegment`in o&&f(`insertSegment`,o.insertSegment),(`insertSegment`in o||`insertSegmentFrom`in o)&&m(`anchor`,o.anchor)}const aw=`settings.`;function ow(e,t){return{...e,names:new Set([...e.names,...Object.keys(t).map(e=>aw+e)])}}function sw(e,t,n){let r=e=>`segments.${t}.settings.${e}`,i=(n,i)=>{e.issues.push({path:r(n),message:`${r(n)}: ${i}`,line:G(e.source,[`segments`,t,`settings`,n])})},a=uw(n);for(let{setting:e,message:t}of a)i(e,t);if(!(a.length>0))for(let{setting:e,message:t}of Ws(n,lw(n)))i(e,`the defaults do not stand together: ${t}`)}function cw(e){return uw(e).length>0||Ws(e,lw(e)).length>0}function lw(e){return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,t.default]))}function uw(e){let t=t=>Us(dw(e,t))?.atLeast;return Object.keys(e).flatMap(n=>{let r=t(n);if(r===void 0)return[];if(r===n||Us(dw(e,r))===void 0)return[{setting:n,message:`atLeast "${r}" must name another range setting of this segment (its range settings: ${fw(e,n).join(`, `)||`none`})`}];let i=[n];for(let e=r;e!==void 0;e=t(e)){if(e===n)return i.every(e=>n<=e)?[{setting:n,message:`atLeast closes a cycle (${[...i,n].join(` ≥ `)}) — every setting on it could only ever equal the rest`}]:[];if(i.includes(e))return[];i.push(e)}return[]})}function dw(e,t){return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0}function fw(e,t){return Object.entries(e).filter(([e,n])=>e!==t&&Us(n)!==void 0).map(([e])=>e)}function pw(e,t,n,r,i){let a=Object.prototype.hasOwnProperty.call(t.segments,n.name)?t.segments[n.name]:void 0;if(a===void 0)return;let o=Hs(a),s=`${r}: placement "${Ds(n)}" of segment "${n.name}"`;for(let[t,a]of Object.entries(n.settings??{})){let c=Object.prototype.hasOwnProperty.call(o,t)?o[t]:void 0,l=c===void 0?`sets "${t}", which segment "${n.name}" does not declare (it has: ${Object.keys(o).join(`, `)})`:Gs(c,a)?void 0:`sets "${t}" to ${JSON.stringify(a)}${c.domain===`theme`?Ua(a):``}, but it must be ${Js(c)}`;l!==void 0&&e.issues.push({path:r,message:`${s} ${l}`,line:i})}let c=Object.fromEntries(Object.entries(o).map(([e,t])=>[e,n.settings?.[e]??t.default]));if(!(!Object.entries(c).every(([e,t])=>Gs(o[e],t))||cw(o)))for(let{message:t}of Ws(o,c))e.issues.push({path:r,message:`${s}: ${t}`,line:i})}function mw(e,t,n,r,i){n.kind===`template`&&_w(e,`${t}.template`,n.template,r,{segCtx:i}),Rs(n)&&n.cache&&`key`in n.cache&&_w(e,`${t}.cache.key`,n.cache.key,r,{segCtx:i})}function hw(e,t,n,r,i){if(Rs(n)&&n.cache&&`depends_on`in n.cache)for(let a=0;a<n.cache.depends_on.length;a++){let o=n.cache.depends_on[a];if(r.names.has(o))continue;let s=i===void 0?void 0:`${i}.${o}`,c=s!==void 0&&r.names.has(s)?` (segment-local vars are namespaced — write "${s}")`:``;e.issues.push({path:`${t}.cache.depends_on[${a}]`,message:`cache.depends_on references unknown variable "${o}"${c}`,line:G(e.source,[...t.split(`.`),`cache`,`depends_on`])})}}function gw(e,t,n,r){try{R_.parse(n)}catch(n){e.issues.push({path:t,message:`Template parse error in ${t}: ${n.message}`,line:r})}}function _w(e,t,n,r,i){for(let[a,o]of sv(n,r.helpers)){if(fv(a,r))continue;if(a.startsWith(aw)){let n=o===null?``:` through helper "${o}"`,r=a.slice(9),s=i?.segCtx===void 0||i.settings===void 0?`Template reads ".${a}"${n}, but only a segment's own templates have settings — call it from a segment that declares "${r}"`:`Template reads ".${a}"${n}, but segment "${i.segCtx}" has no setting "${r}" (it has: ${Object.keys(i.settings).join(`, `)}) — declare it under segments.${i.segCtx}.settings`;e.issues.push({path:t,message:s,line:i?.line??G(e.source,t.split(`.`))});continue}if(o!==null){vw(e,o,`Template references unknown variable ".${a}"${ew(a)}`);continue}let n=i?.segCtx===void 0?void 0:`${i.segCtx}.${a}`,s=n!==void 0&&fv(n,r)?` (segment-local vars are namespaced — write ".${n}")`:ew(a);e.issues.push({path:t,message:`Template references unknown variable ".${a}"${s}`,line:i?.line??G(e.source,t.split(`.`))})}}function vw(e,t,n){let r=`helpers.${t}`;e.issues.some(e=>e.path===r&&e.message===n)||e.issues.push({path:r,message:n,line:G(e.source,[`helpers`,t])})}function yw(e,t){let{graph:n,nodeInfo:r}=bw(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:G(e.source,o?.linePathParts??[`variables`,i])}),!0}if(t===0&&o(s))return!0}return i.set(t,2),a.pop(),!1}}function bw(e){let t=new Set(Object.keys(e.variables)),n=new Map;for(let t of Object.keys(e.variables))n.set(t,{declarationPath:`variables.${t}`,linePathParts:[`variables`,t]});for(let[r,i]of Object.entries(e.segments))if(i.vars)for(let e of Object.keys(i.vars)){let i=`${r}.${e}`;t.add(i),n.set(i,{declarationPath:`segments.${r}.vars.${e}`,linePathParts:[`segments`,r,`vars`,e]})}let r=new Map;for(let e of t)r.set(e,new Set);let i=(n,i)=>{for(let a of sv(i,e.helpers).keys()){if(t.has(a)){r.get(n).add(a);continue}let e=a.split(`.`)[0];e!==a&&t.has(e)&&r.get(n).add(e)}},a=(e,n)=>{if(n.kind===`template`&&i(e,n.template),Rs(n)&&(n.cache&&`key`in n.cache&&i(e,n.cache.key),n.cache&&`depends_on`in n.cache))for(let i of n.cache.depends_on)t.has(i)&&r.get(e).add(i)};for(let[t,n]of Object.entries(e.variables))a(t,n);for(let[t,n]of Object.entries(e.segments))if(n.vars)for(let[e,r]of Object.entries(n.vars))a(`${t}.${e}`,r);return{graph:r,nodeInfo:n}}const xw=[`json5`,`json`];function Sw(e){try{return r.statSync(e,{throwIfNoEntry:!1})===void 0?`absent`:`present`}catch(t){return{path:e,error:t.message}}}function Cw(e){return e===`~`||e.startsWith(`~/`)||e.startsWith(`~\\`)?p.homedir()+e.slice(1):e}function ww(e,t,n){if(n!==void 0)return[n];let r=t??process.cwd();return[...new Set([...e?xw.map(t=>c.join(e,`.cc-candybar.${t}`)):[],...xw.map(e=>c.join(r,`.cc-candybar.${e}`)),...xw.map(e=>`${Tw()}.${e}`)])]}function Tw(){let e=process.env.XDG_CONFIG_HOME??c.join(p.homedir(),`.config`);return c.join(e,`cc-candybar`,`config`)}function Ew(e,t,n){let r=[];for(let i of ww(e,t,n)){let e=Sw(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 Dw(e,t,n){let r=Ew(e,t,n);return r.kind===`default`?`${Tw()}.${xw[0]}`:r.path}function Ow(e){return kw(e).join(`
158
- `)||null}function kw(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 Aw(e,t){let n=ww(e,t).filter(e=>Sw(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 jw(e,t,n){return e===null?{...Nw,config:zc(Nw.raw,t)}:Mw(e,r.readFileSync(e,`utf-8`),t,n)}function Mw(e,t,n,r){let i={source:t,...Iw(e,t,r,Iu(n))};return{...i,config:zc(i.raw,n)}}const Nw={raw:{},source:``,warnings:[]};function Pw({config:e,raw:t,source:n},r=`<config>`,i=new Set(Ka())){let a=[],o={source:n,issues:a,allowedPalettes:i,groups:[]};if(nw(o,e,t),yw(o,e),a.length>0)throw new bs(r,a);let s=L_(e,a);if(a.length>0)throw new bs(r,a);return Mx(eC(s))}function Fw(e,t,n=new Set(Ka()),r=Lw){return Iw(e,t,n,r).raw}function Iw(e,t,n,r){let i=Rw(e,t),a=Cs(e,t),o=a===null?[]:[a],s=[],c={source:t,issues:s,allowedPalettes:n??new Set(Ka()),groups:[]};if(!nc(i))throw new bs(e,[{path:``,message:`Config root must be an object, got ${rc(i)}`}],o);let l=zw(c,i,r);if(s.length>0)throw new bs(e,s,o);return{raw:l,warnings:o}}const Lw=new Set;function Rw(e,t){try{return Qe.default.parse(t)}catch(t){let n=t;throw new bs(e,[{path:``,message:`JSON5 syntax error: ${n.message}`,line:n.lineNumber,col:n.columnNumber}])}}function zw(e,t,n){for(let n of Object.keys(t))Bw.has(n)||e.issues.push({path:n,message:`Unknown top-level key "${n}". Expected one of: ${[...Bw].join(`, `)}`,line:G(e.source,[n])});let r={};return t.globals!==void 0&&(r.globals=xl(e,`globals`,t.globals)),t.variables!==void 0&&(r.variables=Vl(e,`variables`,t.variables)),t.segments!==void 0&&(r.segments=Lu(e,t.segments,n)),t.layout!==void 0&&e.issues.push({path:`layout`,message:`"layout" is no longer supported — use "root" with the A-grammar instead.
157
+ `,ox=`${gu}live`,sx=[`☐ live`,`☑ live`],cx=`${gu}done`,lx={variable:ox,key:ox,member:`open`},ux=`and ${Zc(W_)} (not ${Zc(lx)})`,dx=`{{ ${ux} }}`;function fx(e,t){return`{{ if ${ux} }}${e}{{ else }}${t}{{ end }}`}const px=`{{ and ${Zc(W_)} .preset.customized }}`,mx=vu,hx=`${gu}addable`;function gx(e){return new Map([[hx,{members:Object.keys(e.segments).filter(e=>!mx(e))}]])}function _x(e,t,n){return n.segments[e]={template:t,when:G_},{kind:`segment`,name:e}}function vx(e,t,n){let r=`${gu}${e.presetIdent}.remove.${t}`;return e.artifacts.actions[r]={persist:e.rootKey,removeSegment:n},`{{ action "${r}" "🚫" }}`}function yx(e){return`{{ if ${Zc(W_)} }}${e.join(``)}{{ end }}`}function bx(e,t){return e.reduce((e,t)=>`{{ if ${Zc(t)} }}true{{ else }}${e}{{ end }}`,t)}function xx(e){return e.flatMap(e=>[...Ms(e)].flatMap(e=>e.kind===`segment`&&e.opens?.ref.key===`edit.mode`?[e.opens.ref]:[]))}function Sx(e,t,n){return`${H_}${e}.${t}.${n}`}function Cx(e,t,n,r){let i=Os(n),a=`${gu}${e.presetIdent}`,o=U_(e.presetIdent,i),s=`${a}.configure.${t}`;e.artifacts.actions[s]={set:z_,to:o};let c={},l=Object.entries(r).map(([r,o])=>{let s=Sx(e.presetIdent,i,r),l=`${H_}p${e.presetIdent}.d${t}.${r}`;e.artifacts.variables[l]={kind:`state`,key:s,default:qs(n.settings?.[r]??o.default)},c[r]={id:i,key:s,variable:l};let u=`${a}.setting.${t}.${r}`,d=Kb(Wb(o),s,l,u);return Object.assign(e.artifacts.actions,d.actions),e.artifacts.segments[u]={template:d.kind===`ring`?`{{ "${Jc(o.label)}" }} ${d.template}`:d.template},{kind:`segment`,name:u}});return{term:`{{ action "${s}" "⚙" }}`,ref:{variable:z_,key:z_,member:o},body:{kind:`container`,direction:`vertical`,children:l},drafts:c}}const wx=`${gu}label:`;function Tx(e){if(e.startsWith(wx)){let t=e.slice(wx.length);return t.slice(t.indexOf(`:`)+1)}return e.startsWith(`edit.`)?void 0:e}function Ex(e,t,n,r){let i=Os(e),a=`${wx}${i}:${e.name}`;n.segments[a]={template:`{{ "${Jc(i)}" }}`,...t.palette!==void 0&&{palette:t.palette}};let o=e.settings?.[Hs];return{...Yc(a,r.ref,r.body,`drop`,bx([r.ref],dx)),...o!==void 0&&{settings:{theme:o}},drafts:{[Hs]:r.drafts[Hs]}}}function Dx(e,t,n,r){let{presetIdent:i,artifacts:a}=e,o=`${gu}${i}.insert.${t}`,s=`${gu}${i}.insertSeg.${t}`;a.actions[o]={persist:e.rootKey,insertSegmentFrom:hx,anchor:n,relation:r};let c=u_(o),l=d_(s,o,void 0),u=m_(l),d=p_(l,c);return a.variables[l]=$c(l,Wc),a.variables[u]={kind:`state`,key:u,default:`0`},a.actions[d]=el(l,c),a.actions[u]={set:u,int:!0},{host:s,template:`{{ $m := menu "${o}" "✚" "✕" }}{{ if ${Zc({variable:l,key:l,member:c})} }}{{ $m }}{{ else }}{{ fg (${`readableOn (color "success") (bgOf) ${wa}`}) $m }}{{ end }}`}}function Ox(e,t){let n=[],r=e.children.findIndex(e=>e.kind===`segment`&&!mx(e.name)),i=e=>Ox(e,t);for(let[a,o]of e.children.entries()){if(o.kind===`container`){n.push(i(o));continue}let s=js(o,i);if(mx(o.name)){n.push(s);continue}let c=Os(o),l=a===r?[Dx(t,String(t.posCounter.n++),c,`before`)]:[],u=String(t.posCounter.n++),d=Dx(t,u,c,`after`),f=vx(t,u,c),p=t.segments[o.name],m=Cx(t,u,o,Us(p)),h=yx([m.term,f]),g={kind:`container`,direction:`horizontal`,children:[...l.map(e=>_x(e.host,e.template,t.artifacts)),{...Ex(o,p,t.artifacts,m),trail:h},{...s,when:fx(`false`,o.when??`true`),trail:h,drafts:m.drafts},_x(d.host,d.template,t.artifacts)]};n.push(e.direction===`vertical`?{kind:`container`,direction:`horizontal`,children:[g]}:g)}return{...e,children:n,...e.when!==void 0&&{when:bx(xx(n),fx(`true`,e.when))}}}function kx(e,t,n,r,i,a,o){let s=`${gu}${n}.resetLayout`,c=`${gu}${n}.customized`;i.actions[s]={reset:r};let l=Jc(t);return i.segments[c]={template:`{{ action "${s}" "↺ ${l} customized" }}`,when:px},{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[a,{kind:`segment`,name:c}]},Ax(e,o)]}}function Ax(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),Ax(n,t)]}:{...e,children:[...e.children,t]}}function jx(e,t,n,r,i){let{node:a}=w_(e,t),o={presetIdent:pu(t),rootKey:Xb(t),segments:e.segments,artifacts:n,posCounter:{n:0}};return kx(Ox(a,o),t,o.presetIdent,o.rootKey,n,r,i)}function Mx(e){let t={variables:{},actions:{},segments:{}},n=tx(`${gu}help`,ix,[W_],t);t.variables[ox]=$c(ox,Wc),t.actions[ox]=el(ox,lx.member),t.segments[ox]={template:Qc(ox,...sx),when:G_};let r={kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:ox},n]};t.segments[cx]={template:`{{ action "${B_}" "✎ done" }}`,when:G_};let i={kind:`segment`,name:cx},a={...e.presets},o=[];for(let n of x_(e.presets)){let s=jx(e,n,t,i,r);o.push(s),a[n]={...C_(e.presets,n),root:s}}let s=Eb(t,o,e);return{...e,variables:{...s,...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:a}}const Nx={socket:`TMUX`,pane:`TMUX_PANE`,truecolor:`CLAUDE_CODE_TMUX_TRUECOLOR`};function Px(e){let t=e[Nx.socket]??``,n=e[Nx.pane]??``;if(t===``||n===``)return null;let r=e[Nx.truecolor]??``;return{socket:t.split(`,`)[0],pane:n,truecolor:r===``?null:r}}const Fx=Nx.truecolor,Ix=[{name:`tmuxTruecolor`,label:`tmux truecolor`,probe:({tmux:e,claudeSettings:t})=>{switch(e.kind){case`unreported`:return{ok:!1,reason:"the client reported no tmux facts — re-run `cc-candybar install` to stage a current client"};case`outside`:return{ok:!0};case`inside`:{if(e.termfeatures.kind===`failed`)return{ok:!1,reason:`tmux could not be asked: ${e.termfeatures.reason}`};if(!e.termfeatures.value.includes(`RGB`)||e.hint.truecolor!==null)return{ok:!0};let n=t.env[Fx];return typeof n==`string`&&n!==``?{ok:!1,reason:`${Fx} is set in ${t.path} — restart Claude Code to apply`}:{ok:!1,reason:`Claude Code renders the bar in 256 colours inside tmux`,fix:{kind:`claude-settings-env`,name:Fx,value:`1`}}}}}}];function Lx(e){return Ix.map(t=>({check:t,verdict:t.probe(e)}))}function Rx(e){return Ix.find(t=>t.name===e)}const zx=`${K}doctor.`;function Bx(e){let t=`${zx}${e}.`;return{verdict:`${t}verdict`,reason:`${t}reason`,fixable:`${t}fixable`}}function Vx(e){return e.flatMap(({check:e,verdict:t})=>{let n=Bx(e.name);return t.ok?[{key:n.verdict,value:`ok`},{key:n.reason,value:``},{key:n.fixable,value:Co}]:[{key:n.verdict,value:`failed`},{key:n.reason,value:t.reason},{key:n.fixable,value:t.fix===void 0?Co:So}]})}const Hx={copySession:{copy:`{{ .session.id }}`},openProject:{open:`{{ .project_dir }}`},openTranscript:{open:`{{ .transcript_path }}`}};function Ux(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(Hx).map(([t,n])=>[`${e}${t}`,n]))}}const Wx=`armed`,Gx=`disarmed`;function Kx(e,t,n){let r=`${e}.arm`,i=`${e}.disarm`,a=`(eq .${e} "${Wx}")`;return{template:`{{ if ${a} }}{{ action "${e}" "${t.confirm}" }} {{ action "${i}" "✕" }}{{ else }}{{ action "${r}" "${t.arm}" }}{{ end }}`,actions:{[r]:{set:e,to:Wx},[i]:{set:e,to:Gx},[e]:{do:[i,...n]}},armed:a,variables:{[e]:{kind:`state`,key:e,default:Gx}},disarm:i}}const qx=RegExp(`^/[^\\s\\x00-\\x1f\\x7f-\\x9f/][^\\x00-\\x1f\\x7f-\\x9f]*$`);function Jx(e){return typeof e==`string`&&qx.test(e)?{kind:`line`,line:e}:{kind:`refused`,reason:`a slash command is "/" then its name, e.g. "/compact" or "/model opus", on one line with no control characters, got ${JSON.stringify(e)}`}}function Yx(e){let t=Jx(e);if(t.kind===`refused`)throw Error(t.reason);return t.line}const Xx=[`/compact`,`/model`],Zx=`/clear`;function Qx(e){let t=t=>`${e}${t.slice(1)}`,n=`${e}clear.slash`,r=Kx(`${e}clear`,{arm:Zx,confirm:`${Zx} ✓ confirm`},[n]);return{template:Xx.map(e=>`{{ action "${t(e)}" "${e}" }} `).join(``)+r.template,actions:{...Object.fromEntries(Xx.map(e=>[t(e),{slash:Yx(e)}])),...r.actions,[n]:{slash:Yx(Zx)}},variables:r.variables,disarm:r.disarm}}const $x=`${K}menu`,eS=`open`,tS=`${K}edit`,nS=`${K}close`,rS=`${K}toolbar`,iS=Ux(K),aS=`${K}commands`,oS=Qx(`${aS}.`),sS=`${K}config`,cS=`${K}save`,lS=`${K}unsaved`,uS=`${K}preset.save`,dS=`${K}preset.delete`,fS=`${K}resetAll`,pS=`${$x}.toggle`,mS={variable:$x,key:$x,member:eS},hS={variable:sS,key:sS,member:eS},gS=`${K}tools`,_S={variable:gS,key:gS,member:eS},vS=`${K}undo`,yS=`${K}redo`,bS=`${K}resettable`,xS=`${K}doctor`,SS=`${xS}.run`,CS=e=>`${xS}.fix.${e}`,wS=e=>`${xS}.${e}`,TS=`${K}pickers`,ES=[`{{ themePreview }}`],DS={preset:[`{{ layoutPreview }}`,`{{ action "${uS}" "⊕ save as preset" }}{{ if not .preset.bundled }} {{ action "${dS}" (printf "🗑 delete %s" .${bb.preset.effectiveVar}) }}{{ end }}`],theme:ES,look:ES,progression:[`{{ layoutPreview }}`]},OS=e=>`${K}${e}`,kS=e=>`${K}apply.${e}`,AS=e=>`${K}reset.${e}`,jS=e=>`${K}carousel.${e}`,MS=(e,t)=>`${jS(e)}.${t}`,NS=Object.keys(bb).map(e=>{let t=bb[e],n=dl(t.configKey);if(n===`text`)throw Error(`settings menu: globals.${t.configKey} is free text, which no control can change — list it in UNCONTROLLED_GLOBALS instead of SETTINGS`);let r=Kb({label:t.label,domain:n},t.sessionKey,t.effectiveVar,kS(e));return{...t,name:e,control:r,beneath:DS[e]??[]}}),PS=new Set([`preset`]),FS=NS.filter(e=>PS.has(e.name)),IS=NS.filter(e=>!PS.has(e.name));new Set(NS.flatMap(e=>[e.sessionKey,e.configKey]));const LS=Kx(fS,{arm:`⟲`,confirm:`⟲ reset all?`},NS.map(e=>AS(e.name))),RS=(e,t,n)=>({count:e,path:t,body:n,shown:`(gt .${e} 0)`}),zS=[RS(lS,`unsaved`,`{{ action "${cS}" (printf "💾 save %d" .${lS}) }}`),RS(`${K}history.undo`,`history.undo`,`{{ action "${vS}" "↶" }}`),RS(`${K}history.redo`,`history.redo`,`{{ action "${yS}" "↷" }}`),{count:bS,path:`resettable`,body:LS.template,shown:`(or (gt .${bS} 0) ${LS.armed})`}],BS={when:`{{ or ${zS.map(e=>e.shown).join(` `)} }}`,template:`{{ $sep := "" }}`+zS.map(e=>`{{ if ${e.shown} }}{{ $sep }}${e.body}{{ $sep = " " }}{{ end }}`).join(``)},VS=[LS,oS],HS=f_(TS),US=e=>({variable:HS,key:HS,member:u_(kS(e))});function WS(e){let t=OS(e.name);return e.control.kind===`inline`?{kind:`segment`,name:t}:Yc(t,US(e.name),{kind:`container`,direction:`vertical`,children:[{kind:`segment`,name:jS(e.name)},...e.beneath.map((t,n)=>({kind:`segment`,name:MS(e.name,n)}))]},`drop`)}function GS(e){return e===$x}function KS(e){let t={kind:`segment`,name:$x};if(e.kind===`container`&&e.direction===`vertical`){let[n,...r]=e.children;return e.when===void 0&&n!==void 0?{...e,children:[KS(n),...r]}:{kind:`container`,direction:`vertical`,children:[t,e]}}return e.kind===`container`&&e.when===void 0?{...e,children:[t,...e.children]}:{kind:`container`,direction:`horizontal`,children:[t,e]}}function qS(e){return JS(e)>0?e:KS(e)}function JS(e){let t=0;for(let n of Ms(e))n.kind===`segment`&&GS(n.name)&&(t+=1);return t}function YS(e,t=!1){let n=t||e.when!==void 0;return e.kind===`segment`?n&&GS(e.name)||e.opens!==void 0&&YS(e.opens.body,!0):e.children.some(e=>YS(e,n))}function XS(e){return e.kind===`segment`?GS(e.name)?Yc(e.name,mS,{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[...FS.map(WS),{kind:`segment`,name:cS}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:rS},{kind:`segment`,name:aS},Yc(sS,hS,{kind:`container`,direction:`horizontal`,children:IS.map(WS)},`drop`),Yc(gS,_S,{kind:`container`,direction:`vertical`,children:[{kind:`segment`,name:xS},...Ix.map(e=>({kind:`segment`,name:wS(e.name)}))]},`drop`),{kind:`segment`,name:tS}]}]},`above`):e:ZS(e)}function ZS(e){return{...e,children:e.children.map(e=>XS(e))}}function QS(e){let t={variables:{[$x]:$c($x,Wc)},actions:{[pS]:el($x,eS),[$x]:{do:[pS,...VS.map(e=>e.disarm)]},[sS]:el(sS,eS),[gS]:el(gS,eS),[SS]:{doctor:`run`},[nS]:{set:mS.key,to:Wc},[tS]:{do:[B_,nS]},...iS.actions,...oS.actions,[cS]:{save:!0},[vS]:{undo:!0},[yS]:{redo:!0},[uS]:{preset:`save`},[dS]:{preset:`delete`,name:`{{ .${bb.preset.effectiveVar} }}`}},segments:{[$x]:{template:Qc($x,e,`❌`)},[rS]:{template:iS.template},[aS]:{template:oS.template},[cS]:BS,[sS]:{template:Qc(sS,`⚙ config ▸`,`⚙ config ▾`)},[gS]:{template:Qc(gS,`🧰 tools ▸`,`🧰 tools ▾`)},[xS]:{template:`{{ action "${SS}" "🩺 doctor" }}`},[tS]:{template:`{{ action "${tS}" "✎ edit" "✎ done" }}`}}};for(let e of zS)t.variables[e.count]={kind:`input`,path:e.path,type:`number`,default:0};return t.variables[sS]=$c(sS,Wc),t.variables[gS]=$c(gS,Wc),Object.assign(t.variables,oS.variables,LS.variables),eC(t),$S(t),t}function $S(e){for(let t of Ix){let n=Bx(t.name),r=CS(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[wS(t.name)]={when:`{{ ne .${n.verdict} "" }}`,template:`{{ if eq .${n.verdict} "ok" }}✓ ${t.label}{{ else }}✗ ${t.label} — {{ .${n.reason} }}{{ if eq .${n.fixable} "${So}" }} {{ action "${r}" "[fix]" }}{{ end }}{{ end }}`}}}function eC(e){for(let t of NS){Object.assign(e.actions,t.control.actions);let n=AS(t.name);e.actions[n]={reset:t.configKey};let r=`{{ action "${n}" "↺" }}`;if(t.control.kind===`inline`){e.segments[OS(t.name)]={template:`${t.control.template} ${r}`};continue}let i=US(t.name),a=p_(i.key,i.member);e.variables[i.key]=$c(i.key,Wc),e.actions[a]=el(i.key,i.member),e.segments[OS(t.name)]={template:`${t.label} {{ .${t.effectiveVar} }} ${Qc(a,`▸`,`▾`)} `+r},e.segments[jS(t.name)]={template:t.control.template},t.beneath.forEach((n,r)=>{e.segments[MS(t.name,r)]={template:n}})}Object.assign(e.actions,LS.actions)}function tC(e){e.variables[z_]=$c(z_,Wc),e.actions[B_]=el(z_,V_)}function nC(e){let t=QS(e.globals.menuGlyph??`🍫`);tC(t);let n={...e.presets},r=[];for(let t of x_(e.presets)){let{node:i}=w_(e,t),a=XS(qS(i));r.push(a),n[t]={...C_(e.presets,t),root:a}}let i=Eb(t,r,e);return{...e,variables:{...i,...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:n}}const rC=[`set`,`persist`,`copy`,`open`,`reset`,`undo`,`redo`,`save`,`preset`,`doctor`,`ceiling`,`slash`,`do`];function iC(e){return e.ceiling===`set`?[`set`,e.to]:[`clear`]}function aC(e){return`from`in e||`int`in e||`insertSegmentFrom`in e}function oC(e,t){if(t===void 0)return{};if(!rc(t))return Z(e,`actions`,`actions must be an object, got ${ic(t)}`),{};let n=Object.create(null);for(let[r,i]of Object.entries(t)){let t=sC(e,`actions.${r}`,i);t!==null&&(n[r]=t)}return n}function Z(e,t,n){e.issues.push({path:t,message:n,line:W(e.source,t.split(`.`))})}function sC(e,t,n){if(!rc(n))return Z(e,t,`${t} must be an action object, got ${ic(n)}`),null;if(`persistWhen`in n)return Z(e,t,`${t}.persistWhen was removed: declare the \`set\` alone — a session pick is a draft until a \`{ save: true }\` action writes every unsaved setting to the config file`),null;let r=rC.filter(e=>e in n);return r.length===1?cC[r[0]](e,t,n):(Z(e,t,`action must declare exactly one of: ${rC.join(`, `)}${r.length>1?` (found: ${r.join(`, `)})`:``}`),null)}const cC={set:(e,t,n)=>BC(e,t,n,`set`,IC),persist:(e,t,n)=>BC(e,t,n,`persist`,LC),copy:lC(`copy`),open:lC(`open`),reset:uC,undo:fC(`undo`),redo:fC(`redo`),save:fC(`save`),preset:pC,doctor:mC,ceiling:hC,slash:gC,do:_C};function lC(e){return(t,n,r)=>{for(let i of Object.keys(r))i!==e&&Z(t,`${n}.${i}`,`Unknown key "${i}" on a ${e} action. Expected only: ${e}`);let i=Qs(t,n,r,e);return i===null?null:{[e]:i}}}function uC(e,t,n){for(let r of Object.keys(n))r!==`reset`&&Z(e,`${t}.${r}`,`Unknown key "${r}" on a reset action. Expected only: reset`);let r=vC(e,t,`reset`,n,`reset key must be non-empty (the config globals field to clear)`,e=>`reset key "${e}" contains "/" — keys must be slash-free`);return r===null?null:{reset:r}}const dC={undo:`it steps the session's settings history`,redo:`it steps the session's settings history`,save:`it saves the session's unsaved settings`};function fC(e){return(t,n,r)=>{for(let i of Object.keys(r))i!==e&&Z(t,`${n}.${i}`,`Unknown key "${i}" on a ${e} action. Expected only: ${e}`);return r[e]===!0?{[e]:!0}:(Z(t,`${n}.${e}`,`${e} must be the literal true (it takes no key — ${dC[e]}), got ${G(r[e])}`),null)}}function pC(e,t,n){let r=n.preset,i=r===`save`?[`preset`]:[`preset`,`name`];for(let r of Object.keys(n))i.includes(r)||Z(e,`${t}.${r}`,`Unknown key "${r}" on a preset action. Expected only: ${i.join(`, `)}`);if(r!==`save`&&r!==`delete`)return Z(e,`${t}.preset`,`preset must be "save" or "delete", got ${G(r)}`),null;if(r===`save`)return{preset:`save`};let a=Qs(e,t,n,`name`);return a===null?null:{preset:`delete`,name:a}}function mC(e,t,n){let r=n.doctor,i=r===`run`?[`doctor`]:[`doctor`,`check`];for(let r of Object.keys(n))i.includes(r)||Z(e,`${t}.${r}`,`Unknown key "${r}" on a doctor action. Expected only: ${i.join(`, `)}`);if(r!==`run`&&r!==`fix`)return Z(e,`${t}.doctor`,`doctor must be "run" or "fix", got ${G(r)}`),null;if(r===`run`)return{doctor:`run`};let a=n.check;return typeof a!=`string`||Rx(a)===void 0?(Z(e,`${t}.check`,`doctor fix must name a check (have: ${Ix.map(e=>e.name).join(`, `)}), got ${G(a)}`),null):{doctor:`fix`,check:a}}function hC(e,t,n){let r=n.ceiling,i=r===`clear`?[`ceiling`]:[`ceiling`,`to`];for(let r of Object.keys(n))i.includes(r)||Z(e,`${t}.${r}`,`Unknown key "${r}" on a ceiling action. Expected only: ${i.join(`, `)}`);if(r===`clear`)return{ceiling:`clear`};if(r!==`set`)return Z(e,`${t}.ceiling`,`ceiling must be "set" or "clear", got ${G(r)}`),null;let a=n.to;return typeof a!=`string`||a.trim()===``?(Z(e,`${t}.to`,`ceiling set needs \`to\`: a memento ceiling value such as "+100_000", "400000" or "off", got ${G(a)}`),null):{ceiling:`set`,to:a}}function gC(e,t,n){for(let r of Object.keys(n))r!==`slash`&&Z(e,`${t}.${r}`,`Unknown key "${r}" on a slash action. Expected only: slash`);let r=Jx(n.slash);return r.kind===`refused`?(Z(e,`${t}.slash`,r.reason),null):{slash:r.line}}function _C(e,t,n){for(let r of Object.keys(n))r!==`do`&&Z(e,`${t}.${r}`,`Unknown key "${r}" on a do action. Expected only: do`);let r=n.do;return!Array.isArray(r)||r.length<2||r.some(e=>typeof e!=`string`||e===``)?(Z(e,`${t}.do`,`do must list at least two action names (the first is the click's face, the rest ride along in the same click), got ${G(r)}`),null):{do:r}}function vC(e,t,n,r,i,a){let o=Qs(e,t,r,n);if(o===null)return null;let s=`${t}.${n}`;return o===``?(Z(e,s,i),null):o.includes(`/`)?(Z(e,s,a(o)),null):o}const yC={set:`the SessionState key to write`,persist:`the config globals field to write`};function bC(e,t,n,r){let i=yC[r],a=vC(e,t,r,n,`${r} key must be non-empty (${i})`,e=>`${r} key "${e}" contains "/" — keys must be slash-free`);return a===null?null:{[r]:a}}function xC(e){return e===`set`?`set-state`:`set-config`}const SC={to:VC(`set`)},CC={to:VC(`persist`)},wC={from:HC(`set`)},TC={from:HC(`persist`)},EC={min:qC(),max:qC(),by:qC()},DC={int:WC()},OC={cycle:UC(`set`)},kC={cycle:UC(`persist`)},AC={removeSegment:GC(`removeSegment`)},jC={insertSegment:GC(`insertSegment`),anchor:GC(`anchor`),relation:KC()},MC={insertSegmentFrom:HC(`persist`),anchor:GC(`anchor`),relation:KC()},NC={ok:e=>e.min<e.max,issue:e=>({field:`min`,message:`min (${e.min}) must be less than max (${e.max})`})},PC={ok:e=>e.by!==0,issue:()=>({field:`by`,message:`by must be a non-zero integer (the per-click increment; negative steps down)`})};function FC(e,t,n=[],r){let i=Object.keys(t),a=r??i,o=[e],s=(e,n,r)=>oc(e,t,n,r),c=wc(t);return{detect:a,allowed:[...o,...i],label:i.join(`/`),json:{type:`object`,properties:{...Object.fromEntries(o.map(e=>[e,{type:`string`}])),...c.properties},required:[...o,...c.required??[]],additionalProperties:!1},parse:n.length?mc(s,...n):s}}const IC=[FC(`set`,SC),FC(`set`,wC),FC(`set`,EC,[NC,PC]),FC(`set`,DC),FC(`set`,OC)],LC=[FC(`persist`,CC),FC(`persist`,TC),FC(`persist`,EC,[NC,PC]),FC(`persist`,kC),FC(`persist`,AC),FC(`persist`,jC,[],[`insertSegment`]),FC(`persist`,MC,[],[`insertSegmentFrom`])];function RC(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 zC(e){let t=RC(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 BC(e,t,n,r,i){let a=bC(e,t,n,r),o=i.filter(e=>e.detect.some(e=>e in n));if(o.length!==1)return Z(e,t,`${zC(r)}${o.length>1?` — found: ${o.map(e=>e.label).join(`, `)}`:``}`),null;let s=o[0];for(let i of Object.keys(n))s.allowed.includes(i)||Z(e,`${t}.${i}`,`Unknown key "${i}" on this ${r} action. Expected one of: ${s.allowed.join(`, `)}`);let c=s.parse(e,t,n);return a===null||c===null?null:{...a,...c}}function VC(e){let t=xC(e);return{required:!0,json:{type:`string`},parse:(n,r,i,a)=>vC(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 HC(e){let t=xC(e);return{required:!0,json:{anyOf:[{type:`string`,minLength:1},{type:`array`,items:{type:`string`,minLength:1},minItems:1,uniqueItems:!0}]},parse:(n,r,i,a)=>{let o=a[i],s=`${r}.${i}`;if(typeof o==`string`){if(o===``){Z(n,s,`${i} must be a non-empty domain name`);return}return o}if(Array.isArray(o)&&o.every(e=>typeof e==`string`)){let r=o;if(r.length===0){Z(n,s,`${i} must name a domain (a non-empty string) or declare an inline domain (a non-empty array of values)`);return}if(r.some(e=>e===``)){Z(n,s,`${i} array members must be non-empty — an empty value cannot be delivered on the ${t} wire`);return}let a=r.filter(e=>e.includes(`/`));if(a.length>0){Z(n,s,`${i} array member(s) ${a.map(e=>`"${e}"`).join(`, `)} contain "/" — ${e} values must be slash-free`);return}if(new Set(r).size!==r.length){Z(n,s,`${i} array members must be unique — a duplicated value would render the same picker option twice`);return}return r}Z(n,s,`${i} must be a domain name (a string) or an inline domain (an array of strings), got ${G(o)}`)}}}function UC(e){let t=xC(e);return{required:!0,json:{type:`array`,items:{type:`string`,minLength:1},minItems:2,uniqueItems:!0},parse:(n,r,i,a)=>{let o=a[i],s=`${r}.${i}`;if(!Array.isArray(o)||o.some(e=>typeof e!=`string`)){Z(n,s,`cycle must be an array of strings (the enumerated values a click steps through), got ${ic(o)}`);return}let c=o;if(c.length<2){Z(n,s,`cycle needs at least two members (one member has no successor — use a literal "to")`);return}let l=c.some(e=>e===``),u=c.filter(e=>e.includes(`/`));if(l){Z(n,s,`cycle members must be non-empty — an empty value cannot be delivered on the ${t} wire`);return}if(u.length>0){Z(n,s,`cycle member(s) ${u.map(e=>`"${e}"`).join(`, `)} contain "/" — ${e} values must be slash-free`);return}if(new Set(c).size!==c.length){Z(n,s,`cycle members must be unique — the successor of a duplicated member is ambiguous`);return}return c}}}function WC(){return{required:!0,json:{const:!0},parse:(e,t,n,r)=>{if(r[n]!==!0){Z(e,`${t}.${n}`,`int must be the literal true (declares the key an unbounded integer cursor — a paged picker's page key), got ${G(r[n])}`);return}return!0}}}function GC(e){return{required:!0,json:{type:`string`},parse:(t,n,r,i)=>{let a=Qs(t,n,i,r);if(a===null)return;let o=`${n}.${r}`;if(a===``){Z(t,o,`${e} must be non-empty (a segment name)`);return}if(a.includes(`/`)||a.includes(`:`)){Z(t,o,`${e} "${a}" contains "/" or ":" — segment names in a layout op must be free of both (the click wire's own delimiter and layout-ops.ts's op-token delimiter)`);return}return a}}}function KC(){return{required:!0,json:{enum:[`before`,`after`]},parse:(e,t,n,r)=>{let i=r[n];if(i!==`before`&&i!==`after`){Z(e,`${t}.${n}`,`relation must be "before" or "after", got ${G(i)}`);return}return i}}}function qC(){return{required:!0,json:{type:`integer`},parse:(e,t,n,r)=>{let i=r[n];if(typeof i!=`number`||!Number.isInteger(i)){Z(e,`${t}.${n}`,`${n} must be an integer, got ${G(i)}`);return}return i}}}const JC={noun:`look key`,fields:{hueShift:vc(),chromaScale:vc({min:0}),lightnessScale:vc(),lightnessShift:vc()}};function YC(e,t){if(!rc(t))return e.issues.push({path:`looks`,message:`looks must be an object mapping look names to adaptation objects, got ${ic(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=ac(e,JC,`looks.${r}`,i);t!==null&&(n[r]={...In,...t})}return n}const XC={noun:`preset key`,fields:{root:{required:!1,json:{$ref:`#/definitions/RootFragment`},parse:(e,t,n,r)=>r[n]===void 0?void 0:od(e,`${t}.${n}`,r[n])},globals:{required:!1,json:wl(),parse:(e,t,n,r)=>r[n]===void 0?void 0:Cl(e,`${t}.${n}`,r[n])}}};function ZC(e,t){if(!rc(t))return e.issues.push({path:`presets`,message:`presets must be an object mapping preset names to config fragments, got ${ic(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=ac(e,XC,`presets.${r}`,i);t!==null&&(n[r]=t)}return n}function QC(e,t){if(t===void 0)return{};if(!rc(t))return e.issues.push({path:`helpers`,message:`helpers must be an object, got ${ic(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 $C=new Map([[`session.budget.amount`,{segment:`session`,setting:`budget`}],[`session.budget.warningThreshold`,{segment:`session`,setting:`warnAt`}],[`today.budget.amount`,{segment:`today`,setting:`budget`}],[`today.budget.warningThreshold`,{segment:`today`,setting:`warnAt`}],[`block.budget.heatThreshold`,{segment:`block`,setting:`warnAt`}],[`block.budget.warningThreshold`,{segment:`block`,setting:`errorAt`}],[`weekly.budget.heatThreshold`,{segment:`weekly`,setting:`warnAt`}],[`weekly.budget.warningThreshold`,{segment:`weekly`,setting:`errorAt`}],[`burn.eta.errorMinutes`,{segment:`burnrate`,setting:`errorWithin`}],[`burn.eta.warnMinutes`,{segment:`burnrate`,setting:`warnWithin`}]]);function ew(e){return`it became the "${e.setting}" setting of each "${e.segment}" placement — set it on the placement where a row places "${e.segment}" ({ seg: "${e.segment}", settings: { ${e.setting}: <value> } }), or redeclare segments.${e.segment}.settings.${e.setting} with the default every placement should start from`}function tw(e){let t=$C.get(e);return t===void 0?void 0:`variables.${e} is no longer read: ${ew(t)}`}function nw(e){let t=$C.get(e);return t===void 0?``:` — ".${e}" is no longer a variable: ${ew(t)}; a "${t.segment}" template reads it as ".settings.${t.setting}"`}function rw(e,t){let n=new Map;for(let e of Object.keys(t)){let t=pu(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 iw(e,t,n){let r=[[[`globals`],t.globals.look],[[`editGlobals`],t.editGlobals.look],...Object.entries(t.presets).map(([e,t])=>[[`presets`,e,`globals`],t.globals?.look])];for(let[n,i]of r)i===void 0||$a(i)||Object.prototype.hasOwnProperty.call(t.looks,i)||e.issues.push({path:`${n.join(`.`)}.look`,message:`${n.join(`.`)}.look "${i}" does not match any declared look (have: ${Object.keys(t.looks).join(`, `)})`,line:W(e.source,[...n,`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`])}),rw(e,t.presets);let i=Vb(t);for(let[n,r]of Object.entries(t.actions))!(`set`in r)||!(`from`in r)||typeof r.from!=`string`||Hb(i).includes(r.from)||e.issues.push({path:`actions.${n}.from`,message:`actions.${n} from: references unknown option domain "${r.from}" (have: ${Hb(i).join(`, `)})`,line:W(e.source,[`actions`,n,`from`])});for(let[n,r]of Object.entries(t.actions))`do`in r&&r.do.forEach((i,a)=>{let o=Object.prototype.hasOwnProperty.call(t.actions,i)?t.actions[i]:void 0,s=o===void 0?`references unknown action "${i}"`:`do`in o?`"${i}" is itself a do action — list its members here instead`:r.do.indexOf(i)===a?a>0&&aC(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=Qb(i);if(o===null){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" is not a config globals field (have: ${Ol().join(`, `)}), a "segments.<name>.palette" target, a "presets.<name>.globals.<field>" target, or a "presets.<name>.root" target`,line:W(e.source,[`actions`,n,a])});continue}let s=aw.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`){ow(e,t,n,a,i,o.preset,r);continue}if(o.scope===`preset-globals`&&!x_(t.presets).includes(o.preset)){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" names preset "${o.preset}" which is not declared (have: ${x_(t.presets).join(`, `)})`,line:W(e.source,[`actions`,n,a])});continue}if(o.scope===`segment-palette`){if(!Object.prototype.hasOwnProperty.call(t.segments,o.segment)){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" names segment "${o.segment}" which is not declared (have segments: ${Object.keys(t.segments).join(`, `)})${Su(o.segment)}`,line:W(e.source,[`actions`,n,a])});continue}`min`in r&&e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" is a segment palette target and cannot use a bounded stepper (min/max/by) — use "to", "from", or "cycle" instead`,line:W(e.source,[`actions`,n,a])})}}let a=pv(t);for(let t of a.names)t!==`settings`&&!t.startsWith(sw)||e.issues.push({path:`variables`,message:`variable "${t}" is named under "settings", which a segment's templates read as its placement's own settings (.settings.<name>) — rename it`,line:W(e.source,[`variables`,t])});let o=(t,n,r)=>{JS(t)>1&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${$x}" ${JS(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}),YS(t)&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${$x}" 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 Ms(t)){if(e.kind!==`segment`)continue;let t=Os(e);i.set(t,[...i.get(t)??[],e])}for(let[t,a]of i){if(a.length<2)continue;let o=a[1].name,s=As(o,new Set(i.keys()));e.issues.push({path:n,message:`${n} has ${a.length} placements with the id "${t}" — an id names one placement (its settings, its menus' open state, and edit mode all address it), so give each its own: { seg: "${o}", id: "${s}" }. A placement without an "id" takes its segment's name.`,line:r})}};function s(e,t=!1){return e.kind===`segment`?!1:t&&e.distribution!==void 0||e.children.some(n=>s(n,t||Ds[e.direction]===`cell`))}let c=(n,r)=>{for(let[i,o]of Lc(n,r)){let n=W(e.source,o.split(`.`));if(i.when!==void 0&&(yw(e,`${o}.when`,i.when,a,{line:n}),vw(e,`${o}.when`,i.when,n)),i.kind===`segment`){if(GS(i.name)){(i.id!==void 0||i.settings!==void 0)&&e.issues.push({path:o,message:`${r} gives the global settings menu anchor "${$x}" an id or settings — the anchor only marks where the menu goes, so place it as the bare name "${$x}"`,line:n});continue}Object.prototype.hasOwnProperty.call(t.segments,i.name)||e.issues.push({path:o,message:`${r} entry "${i.name}" does not match any declared segment${Su(i.name)}`,line:n}),hw(e,t,i,o,n)}}};n.root!==void 0&&c(n.root,`root`);for(let[e,t]of Object.entries(n.presets??{}))t.root!==void 0&&c(t.root,`presets.${e}.root`);let l=new Map([[`root`,Fc(t.root)]]);for(let e of x_(t.presets)){let{node:n,path:r}=w_(t,e);l.set(r,n)}for(let[t,n]of l)o(n,t,W(e.source,t.split(`.`)));for(let[n,r]of Object.entries(t.variables)){gw(e,`variables.${n}`,r,a);let t=tw(n);t!==void 0&&e.issues.push({path:`variables.${n}`,message:t,line:W(e.source,[`variables`,n])})}for(let[n,r]of Object.entries(t.segments)){if(r.vars)for(let[t,i]of Object.entries(r.vars))gw(e,`segments.${n}.vars.${t}`,i,a,n);let i=Us(r);lw(e,n,i);let o=cw(a,i);for(let a of[`template`,`bg`,`fg`,`when`]){let s=r[a];if(typeof s==`string`){yw(e,`segments.${n}.${a}`,s,o,{segCtx:n,settings:i});for(let{name:r,site:i,via:o}of dv(s,t.helpers)){if(Object.prototype.hasOwnProperty.call(t.actions,r))continue;let s=i===`options`?` (in a picker, menu or carousel)`:``;if(o!==null){bw(e,o,`Template references unknown action "${r}"${s}`);continue}e.issues.push({path:`segments.${n}.${a}`,message:`${a} references unknown action "${r}"${s}`,line:W(e.source,[`segments`,n,a])})}}}}for(let[n,r]of Object.entries(t.variables))_w(e,`variables.${n}`,r,a);for(let[n,r]of Object.entries(t.segments))if(r.vars)for(let[t,i]of Object.entries(r.vars))_w(e,`segments.${n}.vars.${t}`,i,a,n)}const aw=[`removeSegment`,`insertSegment`,`insertSegmentFrom`];function ow(e,t,n,r,i,a,o){let s=`actions.${n}.${r}`,c=W(e.source,[`actions`,n,r]);if(!x_(t.presets).includes(a)){e.issues.push({path:s,message:`actions.${n}: "${i}" names preset "${a}" which is not declared (have: ${x_(t.presets).join(`, `)})`,line:c});return}if(r===`reset`)return;let l=`removeSegment`in o,u=`insertSegment`in o,d=`insertSegmentFrom`in o;if(!l&&!u&&!d){e.issues.push({path:s,message:`actions.${n}: "${i}" is a "presets.<name>.root" target and can only be paired with "removeSegment", "insertSegment", or "insertSegmentFrom" (not "to"/"from"/"cycle"/bounded — those have no meaning as a tree op)`,line:c});return}let f=(r,i)=>{Object.prototype.hasOwnProperty.call(t.segments,i)||e.issues.push({path:s,message:`actions.${n}: ${r} "${i}" is not a declared segment (have: ${Object.keys(t.segments).join(`, `)})${Su(i)}`,line:c})},p=new Set(ks(w_(t,a).node)),m=(r,i)=>{!xu.has(i)||p.has(i)||Object.prototype.hasOwnProperty.call(t.segments,i)||e.issues.push({path:s,message:`actions.${n}: ${r} "${i}" names no placement${Su(i)}`,line:c})};`removeSegment`in o&&m(`removeSegment`,o.removeSegment),`insertSegment`in o&&f(`insertSegment`,o.insertSegment),(`insertSegment`in o||`insertSegmentFrom`in o)&&m(`anchor`,o.anchor)}const sw=`settings.`;function cw(e,t){return{...e,names:new Set([...e.names,...Object.keys(t).map(e=>sw+e)])}}function lw(e,t,n){let r=e=>`segments.${t}.settings.${e}`,i=(n,i)=>{e.issues.push({path:r(n),message:`${r(n)}: ${i}`,line:W(e.source,[`segments`,t,`settings`,n])})},a=fw(n);for(let{setting:e,message:t}of a)i(e,t);if(!(a.length>0))for(let{setting:e,message:t}of Gs(n,dw(n)))i(e,`the defaults do not stand together: ${t}`)}function uw(e){return fw(e).length>0||Gs(e,dw(e)).length>0}function dw(e){return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,t.default]))}function fw(e){let t=t=>Ws(pw(e,t))?.atLeast;return Object.keys(e).flatMap(n=>{let r=t(n);if(r===void 0)return[];if(r===n||Ws(pw(e,r))===void 0)return[{setting:n,message:`atLeast "${r}" must name another range setting of this segment (its range settings: ${mw(e,n).join(`, `)||`none`})`}];let i=[n];for(let e=r;e!==void 0;e=t(e)){if(e===n)return i.every(e=>n<=e)?[{setting:n,message:`atLeast closes a cycle (${[...i,n].join(` ≥ `)}) — every setting on it could only ever equal the rest`}]:[];if(i.includes(e))return[];i.push(e)}return[]})}function pw(e,t){return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0}function mw(e,t){return Object.entries(e).filter(([e,n])=>e!==t&&Ws(n)!==void 0).map(([e])=>e)}function hw(e,t,n,r,i){let a=Object.prototype.hasOwnProperty.call(t.segments,n.name)?t.segments[n.name]:void 0;if(a===void 0)return;let o=Us(a),s=`${r}: placement "${Os(n)}" of segment "${n.name}"`;for(let[t,a]of Object.entries(n.settings??{})){let c=Object.prototype.hasOwnProperty.call(o,t)?o[t]:void 0,l=c===void 0?`sets "${t}", which segment "${n.name}" does not declare (it has: ${Object.keys(o).join(`, `)})`:Ks(c,a)?void 0:`sets "${t}" to ${JSON.stringify(a)}${c.domain===`theme`?Wa(a):``}, but it must be ${Ys(c)}`;l!==void 0&&e.issues.push({path:r,message:`${s} ${l}`,line:i})}let c=Object.fromEntries(Object.entries(o).map(([e,t])=>[e,n.settings?.[e]??t.default]));if(!(!Object.entries(c).every(([e,t])=>Ks(o[e],t))||uw(o)))for(let{message:t}of Gs(o,c))e.issues.push({path:r,message:`${s}: ${t}`,line:i})}function gw(e,t,n,r,i){n.kind===`template`&&yw(e,`${t}.template`,n.template,r,{segCtx:i}),zs(n)&&n.cache&&`key`in n.cache&&yw(e,`${t}.cache.key`,n.cache.key,r,{segCtx:i})}function _w(e,t,n,r,i){if(zs(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 vw(e,t,n,r){try{R_.parse(n)}catch(n){e.issues.push({path:t,message:`Template parse error in ${t}: ${n.message}`,line:r})}}function yw(e,t,n,r,i){for(let[a,o]of sv(n,r.helpers)){if(fv(a,r))continue;if(a.startsWith(sw)){let n=o===null?``:` through helper "${o}"`,r=a.slice(9),s=i?.segCtx===void 0||i.settings===void 0?`Template reads ".${a}"${n}, but only a segment's own templates have settings — call it from a segment that declares "${r}"`:`Template reads ".${a}"${n}, but segment "${i.segCtx}" has no setting "${r}" (it has: ${Object.keys(i.settings).join(`, `)}) — declare it under segments.${i.segCtx}.settings`;e.issues.push({path:t,message:s,line:i?.line??W(e.source,t.split(`.`))});continue}if(o!==null){bw(e,o,`Template references unknown variable ".${a}"${nw(a)}`);continue}let n=i?.segCtx===void 0?void 0:`${i.segCtx}.${a}`,s=n!==void 0&&fv(n,r)?` (segment-local vars are namespaced — write ".${n}")`:nw(a);e.issues.push({path:t,message:`Template references unknown variable ".${a}"${s}`,line:i?.line??W(e.source,t.split(`.`))})}}function bw(e,t,n){let r=`helpers.${t}`;e.issues.some(e=>e.path===r&&e.message===n)||e.issues.push({path:r,message:n,line:W(e.source,[`helpers`,t])})}function xw(e,t){let{graph:n,nodeInfo:r}=Sw(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 Sw(e){let t=new Set(Object.keys(e.variables)),n=new Map;for(let t of Object.keys(e.variables))n.set(t,{declarationPath:`variables.${t}`,linePathParts:[`variables`,t]});for(let[r,i]of Object.entries(e.segments))if(i.vars)for(let e of Object.keys(i.vars)){let i=`${r}.${e}`;t.add(i),n.set(i,{declarationPath:`segments.${r}.vars.${e}`,linePathParts:[`segments`,r,`vars`,e]})}let r=new Map;for(let e of t)r.set(e,new Set);let i=(n,i)=>{for(let a of sv(i,e.helpers).keys()){if(t.has(a)){r.get(n).add(a);continue}let e=a.split(`.`)[0];e!==a&&t.has(e)&&r.get(n).add(e)}},a=(e,n)=>{if(n.kind===`template`&&i(e,n.template),zs(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 Cw=[`json5`,`json`];function ww(e){try{return r.statSync(e,{throwIfNoEntry:!1})===void 0?`absent`:`present`}catch(t){return{path:e,error:t.message}}}function Tw(e){return e===`~`||e.startsWith(`~/`)||e.startsWith(`~\\`)?p.homedir()+e.slice(1):e}function Ew(e,t,n){if(n!==void 0)return[n];let r=t??process.cwd();return[...new Set([...e?Cw.map(t=>c.join(e,`.cc-candybar.${t}`)):[],...Cw.map(e=>c.join(r,`.cc-candybar.${e}`)),...Cw.map(e=>`${Dw()}.${e}`)])]}function Dw(){let e=process.env.XDG_CONFIG_HOME??c.join(p.homedir(),`.config`);return c.join(e,`cc-candybar`,`config`)}function Ow(e,t,n){let r=[];for(let i of Ew(e,t,n)){let e=ww(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 kw(e,t,n){let r=Ow(e,t,n);return r.kind===`default`?`${Dw()}.${Cw[0]}`:r.path}function Aw(e){return jw(e).join(`
158
+ `)||null}function jw(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 Mw(e,t){let n=Ew(e,t).filter(e=>ww(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 Nw(e,t,n){return e===null?{...Fw,config:Bc(Fw.raw,t)}:Pw(e,r.readFileSync(e,`utf-8`),t,n)}function Pw(e,t,n,r){let i={source:t,...Rw(e,t,r,Iu(n))};return{...i,config:Bc(i.raw,n)}}const Fw={raw:{},source:``,warnings:[]};function Iw({config:e,raw:t,source:n},r=`<config>`,i=new Set(qa())){let a=[],o={source:n,issues:a,allowedPalettes:i,groups:[]};if(iw(o,e,t),xw(o,e),a.length>0)throw new xs(r,a);let s=L_(e,a);if(a.length>0)throw new xs(r,a);return Mx(nC(s))}function Lw(e,t,n=new Set(qa()),r=zw){return Rw(e,t,n,r).raw}function Rw(e,t,n,r){let i=Bw(e,t),a=ws(e,t),o=a===null?[]:[a],s=[],c={source:t,issues:s,allowedPalettes:n??new Set(qa()),groups:[]};if(!rc(i))throw new xs(e,[{path:``,message:`Config root must be an object, got ${ic(i)}`}],o);let l=Vw(c,i,r);if(s.length>0)throw new xs(e,s,o);return{raw:l,warnings:o}}const zw=new Set;function Bw(e,t){try{return Qe.default.parse(t)}catch(t){let n=t;throw new xs(e,[{path:``,message:`JSON5 syntax error: ${n.message}`,line:n.lineNumber,col:n.columnNumber}])}}function Vw(e,t,n){for(let n of Object.keys(t))Hw.has(n)||e.issues.push({path:n,message:`Unknown top-level key "${n}". Expected one of: ${[...Hw].join(`, `)}`,line:W(e.source,[n])});let r={};return t.globals!==void 0&&(r.globals=Sl(e,`globals`,t.globals)),t.variables!==void 0&&(r.variables=Hl(e,`variables`,t.variables)),t.segments!==void 0&&(r.segments=Lu(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.
159
159
  Replace: layout: [["seg1", "seg2"], ["seg3"]]
160
160
  With: root: { v: [{ h: ["seg1", "seg2"] }, "seg3"] }
161
- Single-row example: root: { h: ["seg1", "seg2"] }`,line:G(e.source,[`layout`])}),t.root!==void 0&&(r.root=od(e,`root`,t.root)),t.actions!==void 0&&(r.actions=iC(e,t.actions)),t.looks!==void 0&&(r.looks=qC(e,t.looks)),t.presets!==void 0&&(r.presets=YC(e,t.presets)),t.editGlobals!==void 0&&(r.editGlobals=wl(e,`editGlobals`,t.editGlobals)),t.helpers!==void 0&&(r.helpers=XC(e,t.helpers)),md(e,r),F_(e,r),J_(e,r),bu(e,r,gu,`the global settings menu`),r}const Bw=new Set([`globals`,`variables`,`segments`,`layout`,`root`,`actions`,`looks`,`presets`,`editGlobals`,`helpers`]);function Vw(e){let t=Kw(e.termCols),n=Kw(e.termRows),r=qw(e.ssh),i=Ww(e.tmux),a=Uw(e.configEnv),o=Hw(e.claudeConfigDir);return{...t!==void 0&&{termCols:t},...n!==void 0&&{termRows:n},...r!==void 0&&{ssh:r},...i!==void 0&&{tmux:i},...a!==void 0&&{configEnv:a},...o!==void 0&&{claudeConfigDir:o}}}function Hw(e){return typeof e==`string`&&c.isAbsolute(e)?e:void 0}function Uw(e){return typeof e==`string`&&e!==``?Cw(e):void 0}function Ww(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 Gw=1e4;function Kw(e){if(typeof e!=`number`||!Number.isFinite(e))return;let t=Math.floor(e);if(!(t<=0))return t>Gw?Gw:t}function qw(e){return typeof e==`boolean`?e:void 0}var Jw=class extends Error{constructor(e){super(e),this.name=`ProtocolError`}};function Yw(e){let t=Buffer.from(JSON.stringify(e),`utf8`),n=Buffer.alloc(4);return n.writeUInt32BE(t.length,0),Buffer.concat([n,t])}function Xw(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 Jw(`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 Jw(e instanceof Error?e.message:String(e));e instanceof Error&&(n.cause=e),t(n);return}}}}function Zw(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=Xw(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(Yw(t))})}async function Qw(e,t,n){let r=null;try{r=await rT(Fe(),t.connectMs);let i=await Zw(r,{v:3,...e},t.budgetMs);return tT(e.kind,i,n)}catch(e){return nT(e)}finally{r&&r.destroy()}}function $w(e,t){return typeof e==`string`?e:t}function eT(e){return typeof e==`number`&&Number.isInteger(e)&&e>=0?e:0}function tT(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=$w(r.error,`(no error message)`);switch(r.code){case`VERSION_MISMATCH`:return{kind:`permanent`,cause:`version_mismatch`,clientV:3,daemonV:eT(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 nT(e){if(e instanceof Jw||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 rT(e,t){return new Promise((n,r)=>{let i=y.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 iT(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 aT={connectMs:50,budgetMs:150},oT={connectMs:50,budgetMs:200};function sT(e){let t=e.output;return typeof t==`string`?t:void 0}function cT(e,t,n,r){return Qw({kind:`render`,hookData:e,args:t,cwd:n,...r},aT,sT)}function lT(e,t){return Qw({kind:`click`,verb:e,value:t},oT,sT)}let uT=null;function dT(e){if(uT!==null)return uT;r.mkdirSync(c.dirname(e),{recursive:!0});try{uT=r.statSync(e).size}catch{uT=0}return uT}function fT(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{}uT=0}function Q(e,t){let n=`${new Date().toISOString()} [${e}] ${t}\n`;try{let e=qe(),t=dT(e);r.appendFileSync(e,n),uT=t+Buffer.byteLength(n,`utf8`),uT>=5242880&&fT(e)}catch(e){uT=null;try{process.stderr.write(`${n}cc-candybar: daemon.log unwritable: ${e.message}\n`)}catch{}}}function pT(e){let t=[];for(let n of e){let e=n.read();if(e.kind===`text`)return`# memory report from: ${n.name}\n${e.text}`;t.push(`# ${n.name}: unavailable — ${e.reason}`)}return[`# memory report: no probe answered`,...t.length>0?t:[`# no probe is known for this platform`]].join(`
162
- `)}function mT(e,t){return e===`darwin`?[hT(`footprint`,[`-p`,String(t)]),hT(`vmmap`,[`--summary`,String(t)])]:e===`linux`?[gT(`/proc/self/smaps_rollup`),gT(`/proc/self/status`)]:[]}function hT(e,t){return{name:`${e} ${t.join(` `)}`,read:()=>{let n=Oe({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}`}${_T(n.stderr)}`}}}}function gT(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 _T(e){let t=e.split(`
163
- `).map(e=>e.trim()).find(e=>e.length>0);return t===void 0?``:` (${t})`}const vT=`CC_CANDYBAR_RSS_LIMIT_MB`;function yT(e){let t=e[vT];if(t===void 0)return 512;let n=/^\d+$/.test(t)?Number(t):NaN;if(!Number.isSafeInteger(n)||n<=0)throw Error(`${vT} must be a positive integer (MB), got ${JSON.stringify(t)}`);return n}function bT(e){return yT(e)*2}const xT=1024*1024;function ST(e){return yT(e)*xT}const CT={memoryReport:{prefix:`memory-`,suffix:`.txt`},heapSnapshot:{prefix:`heap-`,suffix:`.heapsnapshot`}};function wT(e,t,n){let{prefix:r,suffix:i}=CT[t];return c.join(e,`${r}${n}${i}`)}function TT(e){for(let t of Object.keys(CT)){let{prefix:n,suffix:r}=CT[t];if(e.startsWith(n)&&e.endsWith(r))return t}return null}function ET(e){let t=e.rssLimitBytes??512*xT,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 DT(e.log,`memory report`,()=>{let t=wT(e.snapshotDir,`memoryReport`,o);e.writeMemoryReport(t,e.captureMemoryReport()),e.log(`info`,`memory report written: ${t}`)}),DT(e.log,`heap snapshot`,()=>{let t=wT(e.snapshotDir,`heapSnapshot`,o);e.log(`info`,`heap snapshot written: ${e.writeHeapSnapshot(t)}`)}),DT(e.log,`artifact rotation`,()=>{kT(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 DT(e,t,n){try{n()}catch(n){e(`warn`,`${t} failed: ${n.message}`)}}function OT(e){let t=e.slice(e.lastIndexOf(`/`)+1),n=TT(t);if(n===null)return t;let{prefix:r,suffix:i}=CT[n];return t.slice(r.length,t.length-i.length)}function kT(e,t,n){let r=new Map;for(let t of e){let e=OT(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 AT(e,t,n={}){let i=Pe();return{now:()=>Date.now(),pid:process.pid,snapshotDir:i,log:Q,memoryBytes:()=>{let e=process.memoryUsage();return{rss:e.rss,heapTotal:e.heapTotal}},captureMemoryReport:()=>pT(mT(process.platform,process.pid)),writeMemoryReport:(e,t)=>r.writeFileSync(e,t,{mode:384}),writeHeapSnapshot:e=>ne.writeHeapSnapshot(e),listArtifacts:()=>{try{return r.readdirSync(i).filter(e=>TT(e)!==null).map(e=>c.join(i,e))}catch{return[]}},removeFile:e=>r.unlinkSync(e),shutdown:t,startedAtMs:e,...n}}function jT(e={}){if(qT()!==null)return;let n=e.spawn??JT,r=WT();if(r.kind===`contended`){let e=NT();e!==null&&e>2e3&&(t.stderr.write(`cc-candybar: spawn-lock held ${e}ms (likely crashed holder) — spawning unlocked\n`),MT(n));return}if(r.kind===`error`){t.stderr.write(`cc-candybar: spawn-lock unavailable (${r.reason}) — spawning unlocked\n`),MT(n);return}try{MT(n)}finally{KT()}}function MT(e){BT()&&PT(e)}function NT(){try{let e=r.statSync(Ue());return Date.now()-e.mtimeMs}catch{return null}}function PT(e){try{e()||t.stderr.write(`cc-candybar: daemon spawn returned false (unable to resolve script path?)
164
- `)}catch(e){t.stderr.write(`cc-candybar: daemon spawn failed: ${e.message}\n`)}}function FT(e,t){return e===null?{kind:`allow`}:e<-1e4?{kind:`allow-future-garbage`,futureMs:-e}:e<t?{kind:`deny`}:{kind:`allow`}}function IT(e){return Math.min(3e3*2**Math.min(Math.max(e,0),5),6e4)}function LT(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 RT(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 zT(){try{r.unlinkSync(Ge())}catch(e){e.code!==`ENOENT`&&t.stderr.write(`cc-candybar: could not reset spawn.backoff: ${e.message}\n`)}}function BT(){let e=We(),n=Ge(),r=LT(n),i=FT(VT(e),IT(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`),HT(e),RT(n,Math.min(r+1,5)),!0)}function VT(e){try{return Date.now()-r.statSync(e).mtimeMs}catch{return null}}function HT(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 UT=null;function WT(){let e=Ue();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 UT={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(!GT(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 GT(e){try{let t=r.statSync(e);return Date.now()-t.mtimeMs>1e4}catch{return!0}}function KT(){if(!UT)return;let{fd:e,path:t}=UT;UT=null;try{r.closeSync(e)}catch{}try{r.unlinkSync(t)}catch{}}function qT(){try{return r.mkdirSync(Pe(),{recursive:!0}),null}catch(e){return`mkdir ${Pe()}: ${e.message}`}}function JT(){let e=t.execPath,n=t.argv[1];return n?ke({bin:e,args:[`--max-old-space-size=${bT(t.env)}`,n,`daemon`],category:`daemon-spawn`}).ok:!1}const YT=`cc-candybar`,XT=`dispatch`,ZT=`set-state`,QT=`step-state`,$T=`copy`,eE=`open-vscode`,tE=`toolbar-toggle`,nE=`show-config-error`,rE=`show-config-warning`,iE=`set-config`,aE=`step-config`,oE=`save`,sE=`save-preset`,cE=`delete-preset`,lE=`reset-config`,uE=`apply-layout-op`,dE=`undo`,fE=`redo`,pE=`apply-update`,mE=`doctor-run`,hE=`doctor-fix`,gE=`ceiling`,_E=`slash`;function vE(e){return e.map(encodeURIComponent).join(`/`)}function yE(e){return e.length===0?[]:e.split(`/`).map(decodeURIComponent)}function bE(e){return`${YT}://${XT}/${e.map(e=>`e=${encodeURIComponent(`${e.verb}/${vE(e.args)}`)}`).join(`&`)}`}function xE(e){return new w(e).getAll(`e`).map(TE)}const SE=new Set([ZT,lE]);function CE(e){return e.reduce((e,t)=>{let n=e.at(-1),r=n&&wE(n,t);return r?[...e.slice(0,-1),r]:[...e,t]},[])}function wE(e,t){if(e.verb!==t.verb||!SE.has(e.verb))return;let[n,r]=[TE(e.value),TE(t.value)];return n.verb===r.verb?{verb:e.verb,value:`${n.verb}/${n.value}/${r.value}`}:void 0}function TE(e){let t=e.indexOf(`/`);return t===-1?{verb:e,value:``}:{verb:e.slice(0,t),value:e.slice(t+1)}}const EE=`1.97.4`;function DE(e,t){let n=(e.CLAUDE_CONFIG_DIR??``).split(`,`)[0].trim();return n===``?void 0:c.resolve(t,n)}function OE(e){return e??c.join(p.homedir(),`.claude`)}function kE(e){return c.join(e,`settings.json`)}function AE(e){return c.join(e,`plugins`,`installed_plugins.json`)}function jE(e){return r.existsSync(e)?r.readFileSync(e,`utf8`):``}function ME(e){let t;try{let n=jE(e);if(/^\s*$/.test(n))return{};t=Go.parse(n)}catch(t){throw Error(`cannot read ${e}: ${NE(t)}`,{cause:t})}if(typeof t!=`object`||!t||Array.isArray(t))throw Error(`cannot read ${e}: not a JSON object`);return t}const NE=e=>e instanceof Error?e.message:String(e),PE=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/;function FE(e){let t=PE.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 IE(e){return e.join(`.`)}function LE([e,t,n],[r,i,a]){return e-r||t-i||n-a}const RE=`@promptctl/cc-candybar`;async function zE(e,t,n){let r=`${n}/-/package/${encodeURIComponent(e)}/dist-tags`;try{let e=await t(r,{signal:AbortSignal.timeout(5e3)});if(!e.ok)return X(`registry responded ${e.status} for ${r}`);let n=await e.json();return typeof n.latest==`string`?FE(n.latest):Y}catch(e){return X(e instanceof Error?e.message:String(e))}}function BE(e,t){let n=FE(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=LE(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 VE(e,t){switch(t.kind){case`current`:return{stream:`stdout`,text:`✓ cc-candybar ${IE(t.installed)} is the latest release.\n`};case`ahead`:return{stream:`stdout`,text:`cc-candybar ${IE(t.installed)} is newer than the registry's latest release (${IE(t.latest)}): an unpublished build.\n`};case`stale`:{let n=IE(t.latest);return{stream:`stderr`,text:`⚠ cc-candybar ${IE(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 HE=`CCCandybarURLHandler`,UE=[],WE={"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 GE(e){return/^[A-Za-z0-9_./=,:-]+$/.test(e)?e:`'${e.replace(/'/g,`'\\''`)}'`}function KE(e,t){return[e,...t].map(GE).join(` `)}function qE(){return c.join(p.homedir(),`Applications`,`${HE}.app`)}function JE(){if(process.platform!==`darwin`)throw Error(`URL handler installation requires macOS (found platform: ${process.platform}).`)}function YE(){if(process.platform===`darwin`)return c.join(p.homedir(),`Library`,`Application Support`,`CCCandybar`);let e=process.env.XDG_DATA_HOME??c.join(p.homedir(),`.local`,`share`);return c.join(e,`cc-candybar`)}function XE(){return c.join(YE(),`bin`,`cc-candybar`)}function ZE(){return c.join(YE(),`dist`,`index.mjs`)}function QE(e,t){return[`on open location L`,`\tdo shell script "'${e.replace(/"/g,`\\"`)}' '${t.replace(/"/g,`\\"`)}' url-handle " & quoted form of L`,`end open location`].join(`
165
- `)}function $E(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 eD(t){let n=WE[`${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 tD(e,t){c.resolve(e)!==c.resolve(t)&&r.copyFileSync(e,t)}function nD(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 ${RE}@latest install`);return n.toString(`latin1`)===`#!`?`node-shim`:`native`}finally{r.closeSync(t)}}function rD(){let e=$E(process.argv[1]);if(!r.existsSync(e))throw Error(`install: bundled dist not found at ${e}. Reinstall the package.`);let t=eD(e);if(!r.existsSync(t.sourcePath))throw Error(`install: render entry not found at ${t.sourcePath}. Reinstall the package.`);r.mkdirSync(c.dirname(ZE()),{recursive:!0}),r.mkdirSync(c.dirname(XE()),{recursive:!0}),tD(e,ZE()),tD(t.sourcePath,XE()),r.chmodSync(XE(),493),r.rmSync(c.join(YE(),`url-handler.mjs`),{force:!0});let n=nD(XE());return process.stdout.write(`Staged cc-candybar v${EE} runtime at ${YE()}\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:XE(),distPath:ZE(),entryKind:n}}function iD(){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>${YT}</string>`,` </array>`,` </dict>`,`</array>`].join(`
166
- `)}]}function aD(e){let t=qE();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=Oe({bin:`/usr/bin/osacompile`,args:[`-o`,t,`-e`,QE(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 iD())Oe({bin:`/usr/bin/plutil`,args:[`-remove`,e,i],category:`install.plutil`});for(let{key:e,xml:t}of iD()){let n=Oe({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 ${YT}:// with Launch Services\n`);let a=Oe({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(`✓ ${HE}.app installed and registered.\n`),process.stdout.write(` Test: open '${YT}://hello-world' && pbpaste\n`)}function oD(){JE(),aD(rD().distPath)}function sD(e,t=YT){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:$T,value:r}:{verb:decodeURIComponent(r.slice(0,i)),value:r.slice(i+1)}}async function cD(e){e||(process.stderr.write(`url-handle: missing URL argument.
167
- `),process.exit(1));let t;try{t=sD(e)}catch(e){process.stderr.write(`url-handle: ${e instanceof Error?e.message:String(e)}\n`),process.exit(1)}let n=await lT(t.verb,t.value);n.kind===`ok`&&process.exit(0),n.kind===`transient`&&(jT(),process.stderr.write(`url-handle: daemon unavailable (${n.cause}: ${n.message})\n`),process.exit(1)),process.stderr.write(lD(n)+`
168
- `),process.exit(1)}function lD(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 uD(){return`✓ install complete.
161
+ Single-row example: root: { h: ["seg1", "seg2"] }`,line:W(e.source,[`layout`])}),t.root!==void 0&&(r.root=od(e,`root`,t.root)),t.actions!==void 0&&(r.actions=oC(e,t.actions)),t.looks!==void 0&&(r.looks=YC(e,t.looks)),t.presets!==void 0&&(r.presets=ZC(e,t.presets)),t.editGlobals!==void 0&&(r.editGlobals=Tl(e,`editGlobals`,t.editGlobals)),t.helpers!==void 0&&(r.helpers=QC(e,t.helpers)),md(e,r),F_(e,r),J_(e,r),bu(e,r,K,`the global settings menu`),r}const Hw=new Set([`globals`,`variables`,`segments`,`layout`,`root`,`actions`,`looks`,`presets`,`editGlobals`,`helpers`]);function Uw(e){let t=Jw(e.termCols),n=Jw(e.termRows),r=Yw(e.ssh),i=Kw(e.tmux),a=Gw(e.configEnv),o=Ww(e.claudeConfigDir);return{...t!==void 0&&{termCols:t},...n!==void 0&&{termRows:n},...r!==void 0&&{ssh:r},...i!==void 0&&{tmux:i},...a!==void 0&&{configEnv:a},...o!==void 0&&{claudeConfigDir:o}}}function Ww(e){return typeof e==`string`&&c.isAbsolute(e)?e:void 0}function Gw(e){return typeof e==`string`&&e!==``?Tw(e):void 0}function Kw(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 qw=1e4;function Jw(e){if(typeof e!=`number`||!Number.isFinite(e))return;let t=Math.floor(e);if(!(t<=0))return t>qw?qw:t}function Yw(e){return typeof e==`boolean`?e:void 0}var Xw=class extends Error{constructor(e){super(e),this.name=`ProtocolError`}};function Zw(e){let t=Buffer.from(JSON.stringify(e),`utf8`),n=Buffer.alloc(4);return n.writeUInt32BE(t.length,0),Buffer.concat([n,t])}function Qw(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 Xw(`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 Xw(e instanceof Error?e.message:String(e));e instanceof Error&&(n.cause=e),t(n);return}}}}function $w(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=Qw(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(Zw(t))})}async function eT(e,t,n){let r=null;try{r=await aT(Fe(),t.connectMs);let i=await $w(r,{v:3,...e},t.budgetMs);return rT(e.kind,i,n)}catch(e){return iT(e)}finally{r&&r.destroy()}}function tT(e,t){return typeof e==`string`?e:t}function nT(e){return typeof e==`number`&&Number.isInteger(e)&&e>=0?e:0}function rT(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=tT(r.error,`(no error message)`);switch(r.code){case`VERSION_MISMATCH`:return{kind:`permanent`,cause:`version_mismatch`,clientV:3,daemonV:nT(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 iT(e){if(e instanceof Xw||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 aT(e,t){return new Promise((n,r)=>{let i=y.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 oT(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 sT={connectMs:50,budgetMs:150},cT={connectMs:50,budgetMs:200};function lT(e){let t=e.output;return typeof t==`string`?t:void 0}function uT(e,t,n,r){return eT({kind:`render`,hookData:e,args:t,cwd:n,...r},sT,lT)}function dT(e,t){return eT({kind:`click`,verb:e,value:t},cT,lT)}let fT=null;function pT(e){if(fT!==null)return fT;r.mkdirSync(c.dirname(e),{recursive:!0});try{fT=r.statSync(e).size}catch{fT=0}return fT}function mT(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{}fT=0}function Q(e,t){let n=`${new Date().toISOString()} [${e}] ${t}\n`;try{let e=qe(),t=pT(e);r.appendFileSync(e,n),fT=t+Buffer.byteLength(n,`utf8`),fT>=5242880&&mT(e)}catch(e){fT=null;try{process.stderr.write(`${n}cc-candybar: daemon.log unwritable: ${e.message}\n`)}catch{}}}function hT(e){let t=[];for(let n of e){let e=n.read();if(e.kind===`text`)return`# memory report from: ${n.name}\n${e.text}`;t.push(`# ${n.name}: unavailable — ${e.reason}`)}return[`# memory report: no probe answered`,...t.length>0?t:[`# no probe is known for this platform`]].join(`
162
+ `)}function gT(e,t){return e===`darwin`?[_T(`footprint`,[`-p`,String(t)]),_T(`vmmap`,[`--summary`,String(t)])]:e===`linux`?[vT(`/proc/self/smaps_rollup`),vT(`/proc/self/status`)]:[]}function _T(e,t){return{name:`${e} ${t.join(` `)}`,read:()=>{let n=Oe({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}`}${yT(n.stderr)}`}}}}function vT(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 yT(e){let t=e.split(`
163
+ `).map(e=>e.trim()).find(e=>e.length>0);return t===void 0?``:` (${t})`}const bT=`CC_CANDYBAR_RSS_LIMIT_MB`;function xT(e){let t=e[bT];if(t===void 0)return 512;let n=/^\d+$/.test(t)?Number(t):NaN;if(!Number.isSafeInteger(n)||n<=0)throw Error(`${bT} must be a positive integer (MB), got ${JSON.stringify(t)}`);return n}function ST(e){return xT(e)*2}const CT=1024*1024;function wT(e){return xT(e)*CT}const TT={memoryReport:{prefix:`memory-`,suffix:`.txt`},heapSnapshot:{prefix:`heap-`,suffix:`.heapsnapshot`}};function ET(e,t,n){let{prefix:r,suffix:i}=TT[t];return c.join(e,`${r}${n}${i}`)}function DT(e){for(let t of Object.keys(TT)){let{prefix:n,suffix:r}=TT[t];if(e.startsWith(n)&&e.endsWith(r))return t}return null}function OT(e){let t=e.rssLimitBytes??512*CT,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 kT(e.log,`memory report`,()=>{let t=ET(e.snapshotDir,`memoryReport`,o);e.writeMemoryReport(t,e.captureMemoryReport()),e.log(`info`,`memory report written: ${t}`)}),kT(e.log,`heap snapshot`,()=>{let t=ET(e.snapshotDir,`heapSnapshot`,o);e.log(`info`,`heap snapshot written: ${e.writeHeapSnapshot(t)}`)}),kT(e.log,`artifact rotation`,()=>{jT(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 kT(e,t,n){try{n()}catch(n){e(`warn`,`${t} failed: ${n.message}`)}}function AT(e){let t=e.slice(e.lastIndexOf(`/`)+1),n=DT(t);if(n===null)return t;let{prefix:r,suffix:i}=TT[n];return t.slice(r.length,t.length-i.length)}function jT(e,t,n){let r=new Map;for(let t of e){let e=AT(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 MT(e,t,n={}){let i=Pe();return{now:()=>Date.now(),pid:process.pid,snapshotDir:i,log:Q,memoryBytes:()=>{let e=process.memoryUsage();return{rss:e.rss,heapTotal:e.heapTotal}},captureMemoryReport:()=>hT(gT(process.platform,process.pid)),writeMemoryReport:(e,t)=>r.writeFileSync(e,t,{mode:384}),writeHeapSnapshot:e=>ne.writeHeapSnapshot(e),listArtifacts:()=>{try{return r.readdirSync(i).filter(e=>DT(e)!==null).map(e=>c.join(i,e))}catch{return[]}},removeFile:e=>r.unlinkSync(e),shutdown:t,startedAtMs:e,...n}}function NT(e={}){if(YT()!==null)return;let n=e.spawn??XT,r=KT();if(r.kind===`contended`){let e=FT();e!==null&&e>2e3&&(t.stderr.write(`cc-candybar: spawn-lock held ${e}ms (likely crashed holder) — spawning unlocked\n`),PT(n));return}if(r.kind===`error`){t.stderr.write(`cc-candybar: spawn-lock unavailable (${r.reason}) — spawning unlocked\n`),PT(n);return}try{PT(n)}finally{JT()}}function PT(e){HT()&&IT(e)}function FT(){try{let e=r.statSync(Ue());return Date.now()-e.mtimeMs}catch{return null}}function IT(e){try{e()||t.stderr.write(`cc-candybar: daemon spawn returned false (unable to resolve script path?)
164
+ `)}catch(e){t.stderr.write(`cc-candybar: daemon spawn failed: ${e.message}\n`)}}function LT(e,t){return e===null?{kind:`allow`}:e<-1e4?{kind:`allow-future-garbage`,futureMs:-e}:e<t?{kind:`deny`}:{kind:`allow`}}function RT(e){return Math.min(3e3*2**Math.min(Math.max(e,0),5),6e4)}function zT(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 BT(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 VT(){try{r.unlinkSync(Ge())}catch(e){e.code!==`ENOENT`&&t.stderr.write(`cc-candybar: could not reset spawn.backoff: ${e.message}\n`)}}function HT(){let e=We(),n=Ge(),r=zT(n),i=LT(UT(e),RT(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`),WT(e),BT(n,Math.min(r+1,5)),!0)}function UT(e){try{return Date.now()-r.statSync(e).mtimeMs}catch{return null}}function WT(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 GT=null;function KT(){let e=Ue();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 GT={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(!qT(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 qT(e){try{let t=r.statSync(e);return Date.now()-t.mtimeMs>1e4}catch{return!0}}function JT(){if(!GT)return;let{fd:e,path:t}=GT;GT=null;try{r.closeSync(e)}catch{}try{r.unlinkSync(t)}catch{}}function YT(){try{return r.mkdirSync(Pe(),{recursive:!0}),null}catch(e){return`mkdir ${Pe()}: ${e.message}`}}function XT(){let e=t.execPath,n=t.argv[1];return n?ke({bin:e,args:[`--max-old-space-size=${ST(t.env)}`,n,`daemon`],category:`daemon-spawn`}).ok:!1}const ZT=`cc-candybar`,QT=`dispatch`,$T=`set-state`,eE=`step-state`,tE=`copy`,nE=`open-vscode`,rE=`toolbar-toggle`,iE=`show-config-error`,aE=`show-config-warning`,oE=`set-config`,sE=`step-config`,cE=`save`,lE=`save-preset`,uE=`delete-preset`,dE=`reset-config`,fE=`apply-layout-op`,pE=`undo`,mE=`redo`,hE=`apply-update`,gE=`doctor-run`,_E=`doctor-fix`,vE=`ceiling`,yE=`slash`;function bE(e){return e.map(encodeURIComponent).join(`/`)}function xE(e){return e.length===0?[]:e.split(`/`).map(decodeURIComponent)}function SE(e){return`${ZT}://${QT}/${e.map(e=>`e=${encodeURIComponent(`${e.verb}/${bE(e.args)}`)}`).join(`&`)}`}function CE(e){return new w(e).getAll(`e`).map(DE)}const wE=new Set([$T,dE]);function TE(e){return e.reduce((e,t)=>{let n=e.at(-1),r=n&&EE(n,t);return r?[...e.slice(0,-1),r]:[...e,t]},[])}function EE(e,t){if(e.verb!==t.verb||!wE.has(e.verb))return;let[n,r]=[DE(e.value),DE(t.value)];return n.verb===r.verb?{verb:e.verb,value:`${n.verb}/${n.value}/${r.value}`}:void 0}function DE(e){let t=e.indexOf(`/`);return t===-1?{verb:e,value:``}:{verb:e.slice(0,t),value:e.slice(t+1)}}const OE=`1.98.1`;function kE(e,t){let n=(e.CLAUDE_CONFIG_DIR??``).split(`,`)[0].trim();return n===``?void 0:c.resolve(t,n)}function AE(e){return e??c.join(p.homedir(),`.claude`)}function jE(e){return c.join(e,`settings.json`)}function ME(e){return c.join(e,`plugins`,`installed_plugins.json`)}function NE(e){return r.existsSync(e)?r.readFileSync(e,`utf8`):``}function PE(e){let t;try{let n=NE(e);if(/^\s*$/.test(n))return{};t=Ko.parse(n)}catch(t){throw Error(`cannot read ${e}: ${FE(t)}`,{cause:t})}if(typeof t!=`object`||!t||Array.isArray(t))throw Error(`cannot read ${e}: not a JSON object`);return t}const FE=e=>e instanceof Error?e.message:String(e),IE=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/;function LE(e){let t=IE.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 RE(e){return e.join(`.`)}function zE([e,t,n],[r,i,a]){return e-r||t-i||n-a}const BE=`@promptctl/cc-candybar`;async function VE(e,t,n){let r=`${n}/-/package/${encodeURIComponent(e)}/dist-tags`;try{let e=await t(r,{signal:AbortSignal.timeout(5e3)});if(!e.ok)return X(`registry responded ${e.status} for ${r}`);let n=await e.json();return typeof n.latest==`string`?LE(n.latest):Y}catch(e){return X(e instanceof Error?e.message:String(e))}}function HE(e,t){let n=LE(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=zE(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 UE(e,t){switch(t.kind){case`current`:return{stream:`stdout`,text:`✓ cc-candybar ${RE(t.installed)} is the latest release.\n`};case`ahead`:return{stream:`stdout`,text:`cc-candybar ${RE(t.installed)} is newer than the registry's latest release (${RE(t.latest)}): an unpublished build.\n`};case`stale`:{let n=RE(t.latest);return{stream:`stderr`,text:`⚠ cc-candybar ${RE(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 WE=`CCCandybarURLHandler`,GE=[],KE={"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 qE(e){return/^[A-Za-z0-9_./=,:-]+$/.test(e)?e:`'${e.replace(/'/g,`'\\''`)}'`}function JE(e,t){return[e,...t].map(qE).join(` `)}function YE(){return c.join(p.homedir(),`Applications`,`${WE}.app`)}function XE(){if(process.platform!==`darwin`)throw Error(`URL handler installation requires macOS (found platform: ${process.platform}).`)}function ZE(){if(process.platform===`darwin`)return c.join(p.homedir(),`Library`,`Application Support`,`CCCandybar`);let e=process.env.XDG_DATA_HOME??c.join(p.homedir(),`.local`,`share`);return c.join(e,`cc-candybar`)}function QE(){return c.join(ZE(),`bin`,`cc-candybar`)}function $E(){return c.join(ZE(),`dist`,`index.mjs`)}function eD(e,t){return[`on open location L`,`\tdo shell script "'${e.replace(/"/g,`\\"`)}' '${t.replace(/"/g,`\\"`)}' url-handle " & quoted form of L`,`end open location`].join(`
165
+ `)}function tD(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 nD(t){let n=KE[`${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 rD(e,t){c.resolve(e)!==c.resolve(t)&&r.copyFileSync(e,t)}function iD(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 ${BE}@latest install`);return n.toString(`latin1`)===`#!`?`node-shim`:`native`}finally{r.closeSync(t)}}function aD(){let e=tD(process.argv[1]);if(!r.existsSync(e))throw Error(`install: bundled dist not found at ${e}. Reinstall the package.`);let t=nD(e);if(!r.existsSync(t.sourcePath))throw Error(`install: render entry not found at ${t.sourcePath}. Reinstall the package.`);r.mkdirSync(c.dirname($E()),{recursive:!0}),r.mkdirSync(c.dirname(QE()),{recursive:!0}),rD(e,$E()),rD(t.sourcePath,QE()),r.chmodSync(QE(),493),r.rmSync(c.join(ZE(),`url-handler.mjs`),{force:!0});let n=iD(QE());return process.stdout.write(`Staged cc-candybar v${OE} runtime at ${ZE()}\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:QE(),distPath:$E(),entryKind:n}}function oD(){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>${ZT}</string>`,` </array>`,` </dict>`,`</array>`].join(`
166
+ `)}]}function sD(e){let t=YE();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=Oe({bin:`/usr/bin/osacompile`,args:[`-o`,t,`-e`,eD(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 oD())Oe({bin:`/usr/bin/plutil`,args:[`-remove`,e,i],category:`install.plutil`});for(let{key:e,xml:t}of oD()){let n=Oe({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 ${ZT}:// with Launch Services\n`);let a=Oe({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(`✓ ${WE}.app installed and registered.\n`),process.stdout.write(` Test: open '${ZT}://hello-world' && pbpaste\n`)}function cD(){XE(),sD(aD().distPath)}function lD(e,t=ZT){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:tE,value:r}:{verb:decodeURIComponent(r.slice(0,i)),value:r.slice(i+1)}}async function uD(e){e||(process.stderr.write(`url-handle: missing URL argument.
167
+ `),process.exit(1));let t;try{t=lD(e)}catch(e){process.stderr.write(`url-handle: ${e instanceof Error?e.message:String(e)}\n`),process.exit(1)}let n=await dT(t.verb,t.value);n.kind===`ok`&&process.exit(0),n.kind===`transient`&&(NT(),process.stderr.write(`url-handle: daemon unavailable (${n.cause}: ${n.message})\n`),process.exit(1)),process.stderr.write(dD(n)+`
168
+ `),process.exit(1)}function dD(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 fD(){return`✓ install complete.
169
169
  Restart Claude Code to pick up the new statusline.
170
- Tip: every bar carries a settings menu — click it (${Wc} by\n default) for quick actions, preset switching, edit mode, and clickable\n theme/look/style/wrap/padding controls.\n`}async function dD(e){let t=e.includes(`--force`),n=e.filter(e=>e!==`--force`),r=n.length>0?n:[...UE],i=rD();process.platform===`darwin`?aD(i.distPath):process.stdout.write(`Skipping URL handler (cmd-click verbs are macOS-only).
171
- `),fD(i.binPath,r,t),process.stdout.write(uD());let a=VE(RE,BE(EE,await zE(RE,fetch,`https://registry.npmjs.org`)));process[a.stream].write(a.text)}function fD(e,t,n,i){let a=i??kE(OE(DE(process.env,process.cwd())));r.mkdirSync(c.dirname(a),{recursive:!0});let o={};if(r.existsSync(a))try{o=JSON.parse(r.readFileSync(a,`utf-8`))}catch(e){throw Error(`Could not parse ${a}: ${e instanceof Error?e.message:String(e)}`)}let s=o.statusLine?.command,l=[e,GE(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:KE(e,t)},k(a,JSON.stringify(o,null,2)),process.stdout.write(`Updated ${a}\n`)}function pD(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 mD(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 hD(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 gD(e,t){let n=mD(e);if(n.kind===`owned`&&n.pid===t)try{r.unlinkSync(e)}catch{}}function _D(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 vD(e,t,n,r){let i=yD(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 yD(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 bD(e){let t=!1;function n(){let n=vD(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 xD(e,t=Oe){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 SD(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 CD(e,t=xD){let n=t(e);return n.kind===`start`?n.token:null}const wD=`CC_CANDYBAR_PARENT_PID`;function TD(e){let t=e[wD];if(t===void 0)return{kind:`outlives-nobody`};let n=Number.parseInt(t,10);if(!Number.isInteger(n)||n<=0)throw Error(`${wD} must be a positive integer pid, got ${JSON.stringify(t)}`);return{kind:`anchored`,pid:n}}function ED(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 DD(e){try{return t.kill(e,0),!0}catch(e){return e.code===`EPERM`}}function OD(){let e=Number(process.env.CC_CANDYBAR_DAEMON_CEILING??``);return Number.isInteger(e)&&e>0?e:16}function kD(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 AD(e){try{return r.readdirSync(e).filter(e=>e.endsWith(`.json`)).map(t=>c.join(e,t))}catch{return[]}}function jD(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 MD(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 ND(e){if(!e.isolated)return{decision:kD(!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=kD(!0,MD(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 PD(e,t,n,r){let i=n(e);if(i!==null&&i.pid===t)try{r(e)}catch{}}function FD(e,t={}){return{isolated:!!process.env.CC_CANDYBAR_SOCKET,registryDir:He(),ceiling:OD(),pid:process.pid,startTime:e,isSameLiveProcess:(e,t)=>SD(e,t,{readStartTime:xD,pidAlive:DD}),listFiles:AD,readEntry:jD,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?Ie:e=>{Ie(c.dirname(e)),Ie(e)},...t}}function ID(e){return e<32||e===127||e>=128&&e<=159}function LD(e){let t=``;for(let n of e)t+=ID(n.codePointAt(0)??0)?` `:n;return t.replace(/\s+/g,` `).trim()}function RD(e,t){let n=LD(e),r=``,i=0;for(let e of n){if(i===t)return r.replace(/.$/u,`…`);r+=e,i++}return r}const zD=`\x1B[38;2;255;255;255m`,BD=`\x1B[48;2;200;40;40m`;function VD(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 HD={fg:VD(zD),bg:VD(BD)},UD={fg:VD(`\x1B[38;2;0;0;0m`),bg:VD(`\x1B[48;2;220;160;40m`)},WD={unicode:Fi,ascii:{glyph:`>`,divider:`|`,lead:`<`,tail:`>`}},GD={unicode:{},ascii:{left:`(`,right:`)`}};function KD(e,t,n){switch(e){case`capsule`:return new Vi(GD[t]);case`plain`:return new Hi(n===void 0?{}:{separator:n});case`powerline`:return new Ri(WD[t]);default:return e}}const qD=new Map;function JD(e){let t=JSON.stringify([e.style,e.charset,e.separator??null]),n=qD.get(t);if(n!==void 0)return n;let r=KD(e.style,e.charset,e.separator),i=e=>new U(`x`,{end:``,overflow:`ignore`,style:new V({bgcolor:e})}),a=e=>new U(Gi(new Oi(e,r),{colorSystem:null}).replace(/\n$/,``)).cellLength,o=a([i(`#101010`)]),s={chrome:o-1,seam:a([i(`#101010`),i(`#202020`)])-o-1};return qD.set(t,s),s}function YD(e){return JD(e).chrome}function XD(e){return JD(e).seam}function ZD(e,t){if(e.length===0)return``;let n=KD(t.style,t.charset,t.separator),r=t.colorCompatibility,i=t.wrap&&Number.isFinite(t.width)?Gi(new Zi([...e],{joiner:n}),{width:t.width,colorSystem:r}):Gi(new Oi([...e],n),{colorSystem:r});if(!i.endsWith(`
172
- `))throw Error(`renderStripCells: rich-js strip output did not end its last line`);return i.slice(0,-1)}function QD(e){return Math.min(20,e??20)}const $D={heading:`ERROR`,glyph:`⚠`,colors:HD},eO={heading:`WARNING`,glyph:`⚠`,colors:UD},tO={heading:`UPDATE`,glyph:`⬆`,colors:UD};function nO(e,t){return{text:LD(e),link:t}}function rO(e,t,n){let[r,...i]=[iO(e,$D,nE),t,iO(n,eO,rE)].flat();return r===void 0?null:{channels:[r,...i]}}function iO(e,t,n){let r=bE([{verb:n,args:[e]}]),[i,...a]=e.split(/\r\n|\r|\n/).map(e=>nO(e,r)).filter(e=>e.text!==``).map(e=>[e]);return i===void 0?[]:[{severity:t,message:e,lines:[i,...a]}]}function aO(e){return e.channels.map(e=>`${e.severity.heading}\n${e.message}\n`).join(`
173
- `)}function oO(e,t,n,r){if(t===null)return e;let i=sO(r),a=t.channels.flatMap(e=>cO(e,i)),o=n.failedConfigFile!==null||a.length>r.rowCap,s=a.slice(0,r.rowCap-Number(o)),c=o?[lO(t,n,a.length-s.length,i)]:[],l=[...s,...c].join(`
174
- `);return e?`${l}\n${e}`:l}function sO(e){return{style:`plain`,separator:``,width:e.width,wrap:!0,padding:0,charset:`unicode`,colorCompatibility:e.colorCompatibility}}function cO(e,t){let n=new V({bgcolor:e.severity.colors.bg,color:e.severity.colors.fg}),r=Lt(Math.max(2,t.width-1)),i=(e,t)=>new U(`${e} `,{style:t,end:``,overflow:`ignore`});return e.lines.flatMap((a,o)=>ZD([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=>Vt(e,r)).map(e=>i(e,t))})],t).split(`
175
- `))}function lO(e,t,n,r){let{colors:i}=e.channels[0].severity,{fullText:a,failedConfigFile:o}=t,s=new V({bgcolor:i.bg,color:i.fg}),c=(e,t)=>new U(e,{style:t,end:``,overflow:`ignore`}),l=n>0?[c(`${n} more rows · `,s),a.kind===`file`?c(`open full text`,s.withLink(T(a.path).href)):c(`full text unavailable: ${LD(a.reason)}`,s)]:[],u=o===null?[]:[c(`${l.length>0?` · `:``}open `,s),c(LD(o),s.withLink(T(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=U.fromFragments([...d,...p]).truncate(r.width);return m.overflow=`ignore`,ZD([m],r)}const uO=e=>!e.startsWith(`.`)&&!e.endsWith(`~`);function dO(e,t){return t.isSymbolicLink()?Buffer.from(r.readlinkSync(e)):r.readFileSync(e)}function fO(e,t){return r.readdirSync(t).filter(uO).sort().flatMap(n=>{let i=c.join(t,n),a=r.lstatSync(i,{throwIfNoEntry:!1});return a===void 0?[]:a.isDirectory()?fO(e,i):[[c.relative(e,i).split(c.sep).join(`/`),dO(i,a)]]})}function pO(e){let t=E.createHash(`sha256`);for(let[n,r]of fO(e,e))t.update(n).update(`\0`).update(r).update(`\0`);return t.digest(`hex`)}const mO=e=>e.slice(0,7);function hO(e){return c.dirname(c.dirname(e))}function gO(){return{version:EE,digest:`8977de58b027154331c414d5622e94f1f686e35ad73fbaebea43f3633e82715c`}}function _O(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 vO(e,t){try{let n=hO(ie(e)),i=c.join(n,`src`);if(!r.existsSync(i))return{kind:`not-source-checkout`};let a=t(),o=pO(i);return o===a.digest?{kind:`current`,root:n,stamp:a}:{kind:`stale`,root:n,source:{version:_O(n),digest:o},running:a}}catch(e){return{kind:`unchecked`,reason:e.message}}}var $=class extends Error{constructor(e){super(e),this.name=`BadVerbArgs`}};function yO(e){return e.op===`remove`?`remove:${e.target}`:`insert:${e.segment}:${e.anchor}:${e.relation}`}function bO(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 xO(e,t,n){let r=ks(e,new Set(n.map(Os).filter(e=>e.includes(t)).flat()));return r===e?{seg:e}:{seg:e,id:r}}const SO=/^-?\d+$/;function CO(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 wO(e){return t=>{if(!t)return{ok:!1,reason:`${e} value is required`};if(!SO.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 TO(e,t,n){return r=>r?SO.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 EO(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=>!SO.test(e));if(o.length>0)throw Error(`${n} action table: key "${e}" is an integer spec (a paged cursor or a bounded value) but a click writes non-integer value(s) to it (${o.join(`, `)}). A ${n} key has one key shape — point that click at a distinct key, or write an integer.`);if(i&&r.length>0)throw Error(`${n} action table: key "${e}" is declared as both a paged cursor (int) and a bounded value (range) — a ${n} key has one key shape. Use distinct keys.`);if(r.length>0){let t=Math.min(...r.map(e=>e.min)),i=Math.max(...r.map(e=>e.max)),o=a.filter(e=>{let n=parseInt(e,10);return n<t||n>i});if(o.length>0)throw Error(`${n} action table: key "${e}" is a bounded range [${t},${i}] but a click writes out-of-range value(s) to it (${o.join(`, `)}). The range gate would clamp them, storing a different value than the click renders — write an in-range integer, or point that click at a distinct key.`);return{kind:`range`,min:t,max:i}}return{kind:`int`}}function DO(e){return e===`config`?`set-config`:`set-state`}function OO(e,t,n){return t.kind===`int`?wO(`menu page "${e}"`):t.kind===`range`?TO(t.min,t.max,`${n} stepper "${e}"`):CO(t.allowed,`${n} "${e}"`,DO(n))}function kO(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:EO(e,n,t)}))}function AO(e,t=`state`){let n=new Map(Object.entries(e).map(([e,t])=>[e,{validator:t,permanent:!0}]));function r(){let e=[];for(let[t,r]of n)r.permanent&&e.push(t);return e}return{register(e,i){if(!e)throw Error(`register: key is required`);if(e.includes(`/`))throw Error(`register: key "${e}" contains "/" — the wire shape splits on "/" so a slash-bearing key cannot be addressed. Use a slash-free key.`);let a=n.get(e);if(a){if(a.permanent)throw Error(`register: key "${e}" is a built-in ${t} key and cannot be re-claimed (built-in keys: ${[...r()].join(`, `)})`);let n=EO(e,[...a.specs,i],t);a.specs.push(i),a.merged=n,a.validator=OO(e,n,t)}else{let r=EO(e,[i],t);n.set(e,{permanent:!1,specs:[i],merged:r,validator:OO(e,r,t)})}let o=!0;return()=>{if(!o)return;o=!1;let r=n.get(e);if(!r||r.permanent)return;let a=r.specs.indexOf(i);a>=0&&r.specs.splice(a,1),r.specs.length===0?n.delete(e):(r.merged=EO(e,r.specs,t),r.validator=OO(e,r.merged,t))}},validate(e,r){let i=n.get(e);return i?i.validator(r):{ok:!1,reason:`unknown ${t} key "${e}" (have: ${[...n.keys()].join(`, `)})`}},listKeys(){return[...n.keys()]},listBaselineKeys(){return r()},rangeParamsFor(e){let t=n.get(e);if(!t||t.permanent||t.merged.kind!==`range`)return null;let{min:r,max:i}=t.merged;return{min:r,max:i}}}}const jO=AO({},`config`);function MO(){return jO.listKeys()}function NO(e,t){return jO.validate(e,t)}function PO(e){return jO.rangeParamsFor(e)}function FO(e,t){return`persist`in e?`to`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:[e.to]}}]:`from`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:Ub(e.from,t).members}}]:`cycle`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:e.cycle}}]:`removeSegment`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:[yO({op:`remove`,target:e.removeSegment})]}}]:`insertSegment`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:[yO({op:`insert`,segment:e.insertSegment,anchor:e.anchor,relation:e.relation})]}}]:`insertSegmentFrom`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:Ub(e.insertSegmentFrom,t).members.map(t=>yO({op:`insert`,segment:t,anchor:e.anchor,relation:e.relation}))}}]:[{key:e.persist,spec:{kind:`range`,min:e.min,max:e.max}}]:[]}function IO(e,t){let n=kl(e.globals).get(t);return n===void 0?null:String(n)}function LO(e){let t=new Set;for(let n of Object.values(e.actions)){`reset`in n&&t.add(n.reset);let e=`persist`in n?Qb(n.persist):null;e?.scope===`preset-root`&&t.add(Xb(e.preset))}return[...t].map(e=>({key:e,spec:{kind:`allow-list`,allowed:[]}}))}function RO(e){let t=new Map([...Vb(e),...gx(e)]);return[...LO(e),...Object.values(e.actions).flatMap(e=>FO(e,t))]}function zO(e){return kO(RO(e),`config`)}function BO(e,t){return jO.register(e,t)}const VO=Array.from({length:10},(e,t)=>(t+1)*1e5),HO=VO[0],UO=VO[VO.length-1];function WO(e){let t;try{t=ME(e)}catch(e){return X(e instanceof Error?e.message:String(e))}let n=t.autoCompactWindow;return n===void 0?J(`auto`):typeof n==`number`&&Number.isInteger(n)&&n>=HO&&n<=UO?J(n):X(`${e}: autoCompactWindow is ${JSON.stringify(n)}, not a window /autocompact accepts (${HO}–${UO} tokens)`)}function GO(e,t){let n=Math.min(t??UO,UO),r=e===`auto`?n:Math.min(e,n);return{window:e===`auto`?0:e,applied:e===`auto`?0:r,lower:VO.filter(e=>e<r).at(-1)??0,higher:VO.find(e=>e>r&&e<=n)??0}}const KO=Qx(`commands.`),qO=`trimPrefix "/" (trimPrefix .project_dir .current_dir)`,JO=`{{ \$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 (${qO}) (basename .project_dir) (ne (${qO}) "") }}{{ end }}{{ end }}{{ abbreviatePath \$dir }}`,YO={min:0,max:100,step:5},XO={warnAt:{label:`warning at %`,domain:YO,default:50},errorAt:{label:`error at %`,domain:{...YO,atLeast:`warnAt`},default:80}};function ZO(e){return{budget:{label:`budget $`,domain:{min:0,max:1e4,step:5},default:e},warnAt:{label:`warning at %`,domain:YO,default:80}}}const QO={globals:{palette:`tokyo-night`},variables:{...KO.variables,...yb,current_dir:{kind:`input`,path:`workspace.current_dir`,default:`?`},"model.display_name":{kind:`input`,path:`model.display_name`,default:``},version:{kind:`input`,path:`version`,default:``},home:{kind:`input`,path:`home`,default:``},"tmux.session":{kind:`input`,path:`tmux.session`,default:``},"host.name":{kind:`input`,path:`host.name`,default:``},"host.user":{kind:`input`,path:`host.user`,default:``},"host.ssh":{kind:`input`,path:`host.ssh`,type:`boolean`,default:!1},"git.repoName":{kind:`input`,path:`git.repoName`,default:``},"git.branch":{kind:`input`,path:`git.branch`,default:``},"git.sha":{kind:`input`,path:`git.sha`,default:``},"git.ahead":{kind:`input`,path:`git.ahead`,type:`number`,default:0},"git.behind":{kind:`input`,path:`git.behind`,type:`number`,default:0},"git.staged":{kind:`input`,path:`git.staged`,type:`number`,default:0},"git.unstaged":{kind:`input`,path:`git.unstaged`,type:`number`,default:0},"git.untracked":{kind:`input`,path:`git.untracked`,type:`number`,default:0},"git.conflicts":{kind:`input`,path:`git.conflicts`,type:`number`,default:0},"git.upstream":{kind:`input`,path:`git.upstream`,default:``},"git.stash":{kind:`input`,path:`git.stash`,type:`number`,default:0},"git.status":{kind:`input`,path:`git.status`,default:`clean`},"git.operation":{kind:`input`,path:`git.operation`,default:``},"git.timeSinceCommit":{kind:`input`,path:`git.timeSinceCommit`,type:`number`,default:0},"git.color.branch":{kind:`literal`,value:`primary`},"git.color.staged":{kind:`literal`,value:`success`},"git.color.unstaged":{kind:`literal`,value:`warning`},"git.color.untracked":{kind:`literal`,value:`accent`},"git.color.conflicts":{kind:`literal`,value:`error`},"git.color.ahead":{kind:`literal`,value:`success`},"git.color.behind":{kind:`literal`,value:`warning`},"git.color.stash":{kind:`literal`,value:`accent`},"git.detail":{kind:`state`,key:`git-detail`,default:`collapsed`},"git.prNumber":{kind:`input`,path:`git.prNumber`,type:`number`,default:0},"git.prState":{kind:`input`,path:`git.prState`,default:``},"git.prUrl":{kind:`input`,path:`git.prUrl`,default:``},"git.prError":{kind:`input`,path:`git.prError`,default:``},"cache.expiresAt":{kind:`input`,path:`cache.expiresAt`,type:`number`,default:0},"session.cost":{kind:`input`,path:`session.cost`,type:`number`,default:0},"session.tokens":{kind:`input`,path:`session.tokens`,type:`number`,default:0},"today.cost":{kind:`input`,path:`today.cost`,type:`number`,default:0},"today.tokens":{kind:`input`,path:`today.tokens`,type:`number`,default:0},"block.nativeUtilization":{kind:`input`,path:`block.nativeUtilization`,type:`number`,default:0},"block.resetsAt":{kind:`input`,path:`block.resetsAt`,type:`number`,default:0},"weekly.percentage":{kind:`input`,path:`weekly.percentage`,type:`number`,default:0},"weekly.resetsAt":{kind:`input`,path:`weekly.resetsAt`,type:`number`,default:0},"burn.costPerHour":{kind:`input`,path:`burn.costPerHour`,type:`number`,default:-1},"block.etaMinutes":{kind:`input`,path:`block.etaMinutes`,type:`number`,default:-1},"weekly.etaMinutes":{kind:`input`,path:`weekly.etaMinutes`,type:`number`,default:-1},"speed.input":{kind:`input`,path:`speed.input`,type:`number`,default:-1},"speed.output":{kind:`input`,path:`speed.output`,type:`number`,default:-1},"speed.total":{kind:`input`,path:`speed.total`,type:`number`,default:-1},"speed.history":{kind:`input`,path:`speed.history`,type:`string`,default:``},"context.totalTokens":{kind:`input`,path:`context.totalTokens`,type:`number`,default:0},"context.contextLeft":{kind:`input`,path:`context.contextLeft`,type:`number`,default:100},"memento.ceiling":{kind:`input`,path:`memento.ceiling`,type:`number`,default:-1},"memento.off":{kind:`input`,path:`memento.off`,type:`boolean`,default:!1},"memento.session":{kind:`input`,path:`memento.session`,default:``},"memento.error":{kind:`input`,path:`memento.error`,default:``},"autocompact.window":{kind:`input`,path:`autocompact.window`,type:`number`,default:-1},...Object.fromEntries([`applied`,`lower`,`higher`].map(e=>[`autocompact.${e}`,{kind:`input`,path:`autocompact.${e}`,type:`number`,default:0}])),"autocompact.error":{kind:`input`,path:`autocompact.error`,default:``},"metrics.lastResponseTime":{kind:`input`,path:`metrics.lastResponseTime`,type:`number`,default:0},"metrics.responseTime":{kind:`input`,path:`metrics.responseTime`,type:`number`,default:0},"metrics.sessionDuration":{kind:`input`,path:`metrics.sessionDuration`,type:`number`,default:0},"metrics.messageCount":{kind:`input`,path:`metrics.messageCount`,type:`number`,default:0},"metrics.linesAdded":{kind:`input`,path:`metrics.linesAdded`,type:`number`,default:0},"metrics.linesRemoved":{kind:`input`,path:`metrics.linesRemoved`,type:`number`,default:0},"activity.command":{kind:`input`,path:`activity.command`,type:`string`,default:``},"activity.todo.total":{kind:`input`,path:`activity.todo.total`,type:`number`,default:0},"activity.todo.completed":{kind:`input`,path:`activity.todo.completed`,type:`number`,default:0},"activity.todo.position":{kind:`input`,path:`activity.todo.position`,type:`number`,default:0},"activity.todo.active":{kind:`input`,path:`activity.todo.active`,type:`string`,default:``},"activity.tool.running":{kind:`input`,path:`activity.tool.running`,type:`string`,default:``},"activity.tool.done":{kind:`input`,path:`activity.tool.done`,type:`string`,default:``}},segments:{directory:{description:"The current directory, shortened fish-style — `~` under home, project-relative inside the project.",template:JO},model:{description:`The active model's display name.`,template:`✱ {{ formatModelName .model.display_name }}`,when:`{{ ne .model.display_name "" }}`},sessionId:{description:`The session id, truncated to 8 characters.`,template:`⌗{{ trunc 8 .session.id }}`,when:`{{ ne .session.id "" }}`},version:{description:`The Claude Code version reported in the hook payload.`,template:`◈ v{{ .version }}`,when:`{{ ne .version "" }}`},tmux:{description:`The tmux session name; hidden when not inside tmux.`,template:`tmux:{{ .tmux.session | default "none" }}`,when:`{{ ne .tmux.session "" }}`},host:{description:`user@host on a warning background, shown only over SSH.`,template:`⇄ {{ .host.user | default "?" }}@{{ .host.name | default "?" }}`,bg:`warning`,when:`{{ .host.ssh }}`},gitaculous:{description:`The git state: a summary (branch, ahead/behind, S/U/? flags) that the arrow at its right edge expands to every fact — repo, in-progress operation, sha, upstream ±, stash count, time since the last commit.`,template:`{{ if eq .git.detail "expanded" }}{{ template "gitExpanded" . }}{{ else }}{{ template "gitCollapsed" . }}{{ end }} {{ action "gitDetail" "▸" "◂" }}`,fg:`{{ readableOn (mix (color "foreground") (bgOf) 60) (bgOf) 3 }}`,when:`{{ ne .git.branch "" }}`,settings:{aheadBehind:{label:`ahead/behind`,domain:`bool`,default:!0},flags:{label:`dirty flags`,domain:`bool`,default:!0},operation:{label:`operation`,domain:`bool`,default:!0},repo:{label:`repo name`,domain:`bool`,default:!0},sha:{label:`commit hash`,domain:`bool`,default:!0},stash:{label:`stash`,domain:`bool`,default:!0},upstream:{label:`upstream`,domain:`bool`,default:!0},age:{label:`time since commit`,domain:`bool`,default:!0}}},gitPr:{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:Ux(``).template},commands:{description:`Type /compact, /model or /clear into this session; /clear asks for a second click.`,template:KO.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" .settings.budget "warn" .settings.warnAt) }}`,settings:ZO(0)},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" .settings.budget "warn" .settings.warnAt) }}`,settings:ZO(50)},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) .settings.warnAt "warning" .settings.errorAt "error" }}`,settings:XO,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) .settings.warnAt "warning" .settings.errorAt "error" }}`,settings:XO,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" .settings.errorWithin "warning" .settings.warnWithin (tint) }}`,settings:{errorWithin:{label:`error within (min)`,domain:{min:0,max:300,step:5},default:30},warnWithin:{label:`warning within (min)`,domain:{min:0,max:300,step:5,atLeast:`errorWithin`},default:60}},when:`{{ or (gt .block.resetsAt 0) (gt .weekly.resetsAt 0) }}`},speed:{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) ${Ca} }}`,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 }}`},ceiling:{description:`The memento plugin's context ceiling for this session: − and + move it by 100K, ∞ lifts it, ↺ drops this session's own setting.`,template:`{{ if ne .memento.error "" }}⌈ ⚠ {{ .memento.error }} {{ action "ceiling.clear" "↺" }}{{ else }}⌈ {{ if .memento.off }}off{{ else }}{{ template "formatTokenCount" .memento.ceiling }} {{ action "ceiling.lower" "−" }} {{ action "ceiling.raise" "+" }} {{ action "ceiling.off" "∞" }}{{ end }}{{ if ne .memento.session "" }} {{ action "ceiling.clear" "↺" }}{{ end }}{{ end }}`,bg:`{{ if ne .memento.error "" }}{{ color "error" }}{{ else }}{{ tint }}{{ end }}`,when:`{{ or (ge .memento.ceiling 0) (ne .memento.error "") }}`},autocompact:{description:`Claude Code's auto-compact window: − and + move it by 100K, ↺ returns it to auto. Clicks type /autocompact into this session.`,template:`{{ if ne .autocompact.error "" }}⇲ ⚠ {{ .autocompact.error }}{{ else }}⇲ {{ if eq .autocompact.window 0 }}auto{{ else }}{{ template "formatTokenCount" .autocompact.applied }}{{ end }}{{ if gt .autocompact.lower 0 }} {{ action (printf "autocompact.%d" .autocompact.lower) "−" }}{{ end }}{{ if gt .autocompact.higher 0 }} {{ action (printf "autocompact.%d" .autocompact.higher) "+" }}{{ end }}{{ if gt .autocompact.window 0 }} {{ action "autocompact.auto" "↺" }}{{ end }}{{ end }}`,bg:`{{ if ne .autocompact.error "" }}{{ color "error" }}{{ else }}{{ tint }}{{ end }}`,when:`{{ or (ge .autocompact.window 0) (ne .autocompact.error "") }}`},metrics:{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:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`context`},{kind:`segment`,name:`ceiling`},{kind:`segment`,name:`autocompact`}]},{kind:`segment`,name:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`activity`}]}}},actions:{...Ux(``).actions,...KO.actions,copyDir:{copy:`{{ .current_dir }}`},stepTheme:{set:`theme`,from:`themes`},gitDetail:{set:`git-detail`,cycle:[`collapsed`,`expanded`]},"ceiling.raise":{ceiling:`set`,to:`+100_000`},"ceiling.lower":{ceiling:`set`,to:`-100_000`},"ceiling.off":{ceiling:`set`,to:`off`},"ceiling.clear":{ceiling:`clear`},"autocompact.auto":{slash:Yx(`/autocompact auto`)},...Object.fromEntries(VO.map(e=>[`autocompact.${e}`,{slash:Yx(`/autocompact ${e}`)}]))},looks:{none:{hueShift:0,chromaScale:1,lightnessScale:1,lightnessShift:0},vivid:{hueShift:0,chromaScale:1.35,lightnessScale:1,lightnessShift:0},muted:{hueShift:0,chromaScale:.55,lightnessScale:1,lightnessShift:0},dim:{hueShift:0,chromaScale:1,lightnessScale:.85,lightnessShift:0},bright:{hueShift:0,chromaScale:1,lightnessScale:1,lightnessShift:.08},inverted:{hueShift:0,chromaScale:1,lightnessScale:-1,lightnessShift:1}},presets:{default:{},compact:{root:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`segment`,name:`context`}]},globals:{padding:0}},verbose:{root:{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`segment`,name:`gitPr`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`context`},{kind:`segment`,name:`ceiling`},{kind:`segment`,name:`autocompact`}]},{kind:`segment`,name:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`burnrate`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`speed`},{kind:`segment`,name:`tokenSparkline`}]}]}},zen:{root:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`directory`},{kind:`segment`,name:`context`}]},globals:{style:`plain`,look:`dim`}},git:{root:{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`host`},{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`segment`,name:`gitPr`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`segment`,name:`context`},{kind:`segment`,name:`activity`}]}]}},usage:{root:{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`context`},{kind:`segment`,name:`ceiling`},{kind:`segment`,name:`autocompact`}]},{kind:`segment`,name:`cacheTimer`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`burnrate`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`session`},{kind:`segment`,name:`today`},{kind:`segment`,name:`speed`},{kind:`segment`,name:`tokenSparkline`}]}]}},dense:{root:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`host`},{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`segment`,name:`model`},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`context`},{kind:`segment`,name:`ceiling`},{kind:`segment`,name:`autocompact`}]},{kind:`segment`,name:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`session`},{kind:`segment`,name:`activity`}]},globals:{padding:0}}},editGlobals:{style:`plain`,default_separator:` | `},helpers:{gitPaint:`{{ fg (readableOn (color .color) (bgOf) ${Ca}) .text }}`,gitCollapsed:`{{ template "gitBranch" . }}{{ template "gitAheadBehind" . }}{{ template "gitFlags" . }}`,gitExpanded:`(git){{ template "gitRepo" . }}{{ template "gitOperation" . }}{{ template "gitSha" . }}{{ template "gitFlags" . }} {{ template "gitBranch" . }}{{ template "gitUpstream" . }}{{ template "gitStash" . }}{{ template "gitAge" . }}`,gitBranch:`⎇ {{ template "gitPaint" (dict "color" .git.color.branch "text" .git.branch) }}`,gitRepo:`{{ if and .settings.repo (ne .git.repoName "") }} {{ .git.repoName }}{{ end }}`,gitOperation:`{{ if and .settings.operation (ne .git.operation "") }} [{{ .git.operation }}]{{ end }}`,gitSha:`{{ if and .settings.sha (ne .git.sha "") }} {{ .git.sha }}{{ end }}`,gitFlags:`{{ if and .settings.flags (or (gt .git.staged 0) (gt .git.unstaged 0) (gt .git.untracked 0) (gt .git.conflicts 0)) }} {{ if gt .git.staged 0 }}{{ template "gitPaint" (dict "color" .git.color.staged "text" "S") }}{{ end }}{{ if gt .git.unstaged 0 }}{{ template "gitPaint" (dict "color" .git.color.unstaged "text" "U") }}{{ end }}{{ if gt .git.untracked 0 }}{{ template "gitPaint" (dict "color" .git.color.untracked "text" "?") }}{{ end }}{{ if gt .git.conflicts 0 }}{{ template "gitPaint" (dict "color" .git.color.conflicts "text" (printf "!%v" .git.conflicts)) }}{{ end }}{{ end }}`,gitAheadBehind:`{{ if and .settings.aheadBehind (or (gt .git.ahead 0) (gt .git.behind 0)) }} {{ if gt .git.ahead 0 }}{{ template "gitPaint" (dict "color" .git.color.ahead "text" (printf "+%v" .git.ahead)) }}{{ end }}{{ if and (gt .git.ahead 0) (gt .git.behind 0) }}/{{ end }}{{ if gt .git.behind 0 }}{{ template "gitPaint" (dict "color" .git.color.behind "text" (printf "-%v" .git.behind)) }}{{ end }}{{ end }}`,gitUpstream:`{{ if and .settings.upstream (ne .git.upstream "") }} [{{ .git.upstream }}{{ template "gitAheadBehind" . }}]{{ end }}`,gitStash:`{{ if and .settings.stash (gt .git.stash 0) }} {{ template "gitPaint" (dict "color" .git.color.stash "text" (printf "(%v stashed)" .git.stash)) }}{{ end }}`,gitAge:`{{ if and .settings.age (gt .git.timeSinceCommit 0) }} ◷ {{ template "formatTimeSince" .git.timeSinceCommit }}{{ end }}`,formatCost:'{{ if lt . 0.01 }}<$0.01{{ else }}${{ printf "%.2f" . }}{{ end }}',formatTokenCount:`{{ if ge . 1000000 }}{{ printf "%.1f" (divf . 1000000) }}M{{ else if ge . 1000 }}{{ printf "%.1f" (divf . 1000) }}K{{ else }}{{ . }}{{ end }}`,formatTokens:`{{ template "formatTokenCount" . }} tokens`,formatToolTally:`{{ $names := splitList "," . }}{{ range $i, $pair := $names }}{{ if lt $i 2 }}{{ if $i }} {{ end }}{{ $kv := splitList ":" $pair }}{{ index $kv 0 }}{{ if ne (index $kv 1) "1" }}×{{ index $kv 1 }}{{ end }}{{ end }}{{ end }}{{ if gt (len $names) 2 }} +{{ sub (len $names) 2 }}{{ end }}`,formatRate:`{{ if lt . 0 }}—/hr{{ else }}{{ template "formatCost" . }}/hr{{ end }}`,formatEta:`{{ if lt . 0 }}—{{ else }}{{ template "formatLongTimeRemaining" . }}{{ end }}`,formatSpeed:`{{ if lt . 0 }}—{{ else }}{{ template "formatTokenCount" (round .) }}/s{{ end }}`,formatTokenBreakdown:`{{ $first := true }}{{ if gt .input 0 }}{{ template "formatTokenCount" .input }} in{{ $first = false }}{{ end }}{{ if gt .output 0 }}{{ if not $first }} + {{ end }}{{ template "formatTokenCount" .output }} out{{ $first = false }}{{ end }}{{ if or (gt .cacheCreation 0) (gt .cacheRead 0) }}{{ if not $first }} + {{ end }}{{ template "formatTokenCount" (add .cacheCreation .cacheRead) }} cached{{ $first = false }}{{ end }}{{ if $first }}0 tokens{{ end }}`,budgetStatus:`{{ if or (le .budget 0) (lt .cost 0) }}{{ else }}{{ $pct := minf 100 (mulf (divf .cost .budget) 100) }}{{ $p := printf "%.0f%%" $pct }}{{ if ge $pct .warn }} !{{ $p }}{{ else }}{{ if ge $pct 50 }} +{{ $p }}{{ else }} {{ $p }}{{ end }}{{ end }}{{ end }}`,formatTimeSince:`{{ if lt . 60 }}{{ . }}s{{ else if lt . 3600 }}{{ div . 60 }}m{{ else if lt . 86400 }}{{ div . 3600 }}h{{ else if lt . 604800 }}{{ div . 86400 }}d{{ else }}{{ div . 604800 }}w{{ end }}`,formatDuration:`{{ if lt . 60 }}{{ printf "%.0f" . }}s{{ else if lt . 3600 }}{{ printf "%.0f" (divf . 60) }}m{{ else if lt . 86400 }}{{ printf "%.1f" (divf . 3600) }}h{{ else }}{{ printf "%.1f" (divf . 86400) }}d{{ end }}`,formatResponseTime:`{{ if lt . 60 }}{{ printf "%.1f" . }}s{{ else }}{{ printf "%.1f" (divf . 60) }}m{{ end }}`,formatLongTimeRemaining:`{{ if ge . 1440 }}{{ $d := div . 1440 }}{{ $h := div (mod . 1440) 60 }}{{ if gt $h 0 }}{{ $d }}d {{ $h }}h{{ else }}{{ $d }}d{{ end }}{{ else if ge . 60 }}{{ $h := div . 60 }}{{ $m := mod . 60 }}{{ if gt $m 0 }}{{ $h }}h {{ $m }}m{{ else }}{{ $h }}h{{ end }}{{ else }}{{ . }}m{{ end }}`,formatResetCountdown:`{{ template "formatLongTimeRemaining" (add 1 (minutesUntilReset .)) }}`}},$O=new Set([QO.globals.palette,...Object.values(QO.segments).map(e=>e.palette)].filter(e=>e!==void 0)),ek=zc(Fw(`<default>`,JSON.stringify(QO),$O),QO),tk=x_(ek.presets);function nk(e){return tk.includes(e)}function rk(e){if(!e)return 0;try{return o(e).mtimeMs}catch{return 0}}const ik=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 ak(e){return((...t)=>ik.run(()=>e(...t)))}const ok=ak(S),sk=ak(x),ck=ak(C);async function lk(e,t){return ik.run(async()=>{let n=null;try{n=await b(e,`r`);let{size:r,mtimeMs:i,ino:a}=await n.stat(),o=t!==void 0&&(a!==t.ino||r<t.offset),s=o||t===void 0?0:t.offset;if(s>=r)return J({buf:Buffer.alloc(0),start:s,size:r,mtimeMs:i,ino:a,reset:o});let c=Buffer.alloc(r-s),l=0;for(;l<c.length;){let{bytesRead:e}=await n.read(c,l,c.length-l,s+l);if(e===0)break;l+=e}return J({buf:l===c.length?c:c.subarray(0,l),start:s,size:r,mtimeMs:i,ino:a,reset:o})}catch(t){return t.code===`ENOENT`?Y:X(`readAppended ${e}: ${t instanceof Error?t.message:String(t)}`)}finally{await n?.close().catch(e=>{O(`transcript-fs: close failed: ${e instanceof Error?e.message:String(e)}`)})}})}async function uk(e,t){return ik.run(async()=>{let n=null;try{n=await b(e,`r`);let{size:r}=await n.stat(),i=Math.max(0,r-t),a=Buffer.alloc(r-i),o=0;for(;o<a.length;){let{bytesRead:e}=await n.read(a,o,a.length-o,i+o);if(e===0)break;o+=e}return J({buf:o===a.length?a:a.subarray(0,o),fromStart:i===0})}catch(t){return t.code===`ENOENT`?Y:X(`readTail ${e}: ${t instanceof Error?t.message:String(t)}`)}finally{await n?.close().catch(e=>{O(`transcript-fs: close failed: ${e instanceof Error?e.message:String(e)}`)})}})}const dk=/"(?:cache_read_input_tokens|cache_creation_input_tokens)":[1-9]/;function fk(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 pk(e){let t=await mk(e);return t.kind===`ok`?J(Math.floor((t.value+36e5)/1e3)):t}async function mk(e){for(let t of[65536,1048576]){let n=await uk(e,t);if(n.kind!==`ok`)return n;let r=hk(n.value.buf,n.value.fromStart);if(r!=null)return J(r);if(n.value.fromStart)return Y}return Y}function hk(e,t){let n=e.toString(`utf8`).split(`
176
- `),r=+!t;for(let e=n.length-1;e>=r;e--){let t=n[e];if(!t||!dk.test(t))continue;let r=fk(t);if(r!=null)return r}return null}function gk(e,t,n){let r=S_(t(`preset`),e.globals.preset,e.presets),i=T_(e,r),a=t(`edit.mode`)===`arrange`?e.editGlobals:{};return{preset:r,presetCustomized:n(r),theme:Fb(a.palette,t(`theme`),i.palette),look:io(a.look,t(`look`),i.look,e.looks),style:so(a.style,t(`style`),i.style),progression:bo(a.progression,t(`progression`),i.progression),separator:a.default_separator??i.default_separator,autoWrap:Do(a.autoWrap,t(`autoWrap`),i.autoWrap),padding:ko(a.padding,t(`padding`),i.padding),charset:fo(a.charset,t(`charset`),i.charset),updateNotice:Oo(a.updateNotice,t(`updateNotice`),i.updateNotice),colorCompatibility:go(a.colorCompatibility,t(`colorCompatibility`),i.colorCompatibility)}}function _k(e,t){return{style:e.style,separator:e.separator,colorCompatibility:e.colorCompatibility,wrap:e.autoWrap,padding:e.padding,charset:e.charset,width:t}}function vk(e){return{theme:e.theme,look:e.look,preset:e.preset,progression:e.progression}}function yk(e){return{preset:{effective:e.preset,customized:e.presetCustomized,bundled:nk(e.preset)},style:{effective:e.style},progression:{effective:e.progression},charset:{effective:e.charset},colorCompatibility:{effective:e.colorCompatibility},autoWrap:{effective:e.autoWrap},padding:{effective:e.padding},updateNotice:{effective:e.updateNotice}}}const bk=10*1e3;function xk(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 Sk(e,t){if(!(t<60))return e*3600/t}function Ck(e,t,n,r){let i=r-t;if(i<50||i>bk)return;let a=n-e;if(!(a<=0))return a*1e3/i}function wk(e){let{prev:t,cur:n}=e;if(t===void 0)return;let r=Ck(t.input,t.atMs,n.input,n.atMs),i=Ck(t.output,t.atMs,n.output,n.atMs),a=Ck(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 Tk(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>bk)continue;let o=Ck(r.total,r.atMs,i.total,i.atMs);n.push(o??0)}if(n.length!==0)return n.join(`,`)}function Ek(e){let t=e.indexOf(`.`);return t<0?e:e.slice(0,t)}function Dk(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`,()=>Ek(p.hostname())),i=n(`user`,()=>p.userInfo().username);return{host:{...r!==void 0&&{name:r},...i!==void 0&&{user:i},...e.ssh!==void 0&&{ssh:e.ssh}},failures:t}}function Ok(e,t){let n=new Map;for(let[t,r]of Object.entries(e.variables))n.set(t,r);for(let[t,r]of Object.entries(e.segments))if(r.vars)for(let[e,i]of Object.entries(r.vars))n.set(`${t}.${e}`,i);let r=[],i=new Set,a=t=>sv(t,e.helpers).keys(),o=T_(e,t);for(let e of Za){let t=o[e];if(Qa(t))for(let e of a(t))r.push(e)}for(let n of js(w_(e,t).node)){if(n.when)for(let e of a(n.when))r.push(e);if(n.kind!==`segment`)continue;let t=e.segments[n.name];if(t){for(let e of[t.template,t.when,t.bg,t.fg])if(e)for(let t of a(e))r.push(t)}}let s=new Set;for(;r.length>0;){let e=r.pop();for(let t of Ak(n,e)){if(i.has(t))continue;i.add(t);let e=n.get(t);if(e){if(e.kind===`input`)s.add(e.path);else if(e.kind===`template`)for(let t of a(e.template))r.push(t)}}}return s}function kk(e){let t=new Map;return n=>{let r=t.get(n);if(r!==void 0)return r;let i=Ok(e,n);return t.set(n,i),i}}function Ak(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 jk(e,t){for(let n of e)if(n===t||n.startsWith(t+`.`))return!0;return!1}function Mk(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 Nk(e,t,n,r,i,a,o){let s=e=>jk(r,e),c=(t.clock??(()=>new Date))().getTime(),l=(e,t,n)=>t?n().catch(t=>X(`${e}: ${String(t)}`)):Promise.resolve(Y),[u,d,f,p,m,h,g,_,v,y,b]=await Promise.all([l(`git`,s(`git`),()=>t.gitProvider.getGitInfo(n??e.workspace?.current_dir,Mk(r),e.workspace?.project_dir)),l(`session`,s(`session.cost`)||s(`session.tokens`)||s(`burn`),()=>t.usageStore.getUsageInfo(e.session_id,e)),l(`today`,s(`today`),()=>t.usageStore.getTodayInfo(e)),l(`context`,s(`context`)||s(`autocompact`),()=>t.contextProvider.getContextInfo(e)),l(`metrics`,s(`metrics`)||s(`burn`),()=>t.metricsProvider.getMetricsInfo(e.session_id,e)),l(`activity`,s(`activity`),()=>t.activityProvider.getActivityInfo(e.session_id,e)),l(`tmux`,s(`tmux`),()=>t.tmuxService.getSessionId()),l(`cache`,s(`cache`),()=>pk(e.transcript_path)),l(`speed`,s(`speed`),()=>t.usageStore.observeSpeed(e.session_id,e.transcript_path,c)),l(`memento`,s(`memento`),()=>t.mementoProvider.getCeiling({sessionId:e.session_id,projectDir:e.workspace?.project_dir??``,cwd:n??e.workspace?.current_dir??``})),l(`autocompact`,s(`autocompact`),()=>Promise.resolve(t.autoCompact(kE(OE(a.claudeConfigDir)))))]),x=[],S=e=>{if(e.kind===`failed`){x.push(e.reason);return}return e.kind===`ok`?e.value:void 0},C=Vk(u);x.push(...C.failures);let ee=Dk(a);x.push(...ee.failures);let te=S(d),ne=S(f),re=S(p),w=S(m),ie=S(h),T=S(g),E=S(_),ae=Ik(y);y.kind===`failed`&&x.push(`memento: ${y.reason}`);let oe=Pk(b,re?.maxTokens);b.kind===`failed`&&x.push(`autocompact: ${b.reason}`);for(let e of x)t.log(`warn`,`provider fetch failed: ${e}`);let D=e.rate_limits?.five_hour,se=e.rate_limits?.seven_day,ce=D?xk(D.used_percentage,D.resets_at,18e6,c):void 0,le=se?xk(se.used_percentage,se.resets_at,6048e5,c):void 0,ue=te?.session.cost,de=w?.sessionDuration,fe=s(`burn`)&&ue!=null&&de!=null?Sk(ue,de):void 0,pe=S(v),me=pe===void 0?void 0:wk(pe),he=pe===void 0?void 0:Tk(pe),ge=me!==void 0||he!==void 0?{...me,...he!==void 0&&{history:he}}:void 0,O=Bk(process.env.HOME??process.env.USERPROFILE),_e=e.workspace?{...e.workspace,current_dir:Bk(e.workspace.current_dir)??``,project_dir:Bk(e.workspace.project_dir)??``}:e.workspace,ve=te===void 0?void 0:zk({cost:te.session.cost,tokens:te.session.tokens}),ye=ne===void 0?void 0:{cost:ne.cost,tokens:ne.tokens},be=w===void 0?void 0:zk({lastResponseTime:w.lastResponseTime,responseTime:w.responseTime,sessionDuration:w.sessionDuration,messageCount:w.messageCount,linesAdded:w.linesAdded,linesRemoved:w.linesRemoved}),xe=ie===void 0?void 0:Lk(ie);return{...e,..._e!==void 0&&{workspace:_e},...O!==void 0&&{home:O},...C.git!==void 0&&{git:C.git},...T!==void 0&&{tmux:{session:T}},host:ee.host,...yk(i),history:t.history(e.session_id),unsaved:o,...ve!==void 0&&{session:ve},...ye!==void 0&&{today:ye},...fe!==void 0&&{burn:{costPerHour:fe}},...ge!==void 0&&{speed:ge},...s(`block`)&&D!==void 0&&{block:{nativeUtilization:D.used_percentage,resetsAt:D.resets_at,...ce!==void 0&&{etaMinutes:ce}}},...se!==void 0&&{weekly:{percentage:se.used_percentage,resetsAt:se.resets_at,...le!==void 0&&{etaMinutes:le}}},...E!==void 0&&{cache:{expiresAt:E}},...re!==void 0&&{context:{totalTokens:re.totalTokens,contextLeft:re.contextLeftPercentage}},...be!==void 0&&{metrics:be},...xe!==void 0&&{activity:xe},...ae!==void 0&&{memento:ae},...oe!==void 0&&{autocompact:oe}}}function Pk(e,t){switch(e.kind){case`absent`:return;case`failed`:return{error:e.reason};case`ok`:return GO(e.value,t)}}const Fk=e=>e.trim().split(`
177
- `).at(-1).trim();function Ik(e){switch(e.kind){case`absent`:return;case`failed`:return{error:Fk(e.reason)};case`ok`:{let{ceiling:t,session:n}=e.value;return{ceiling:t===`off`?0:t,off:t===`off`,session:n??``}}}}function Lk(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=Rk(e.running),i=Rk(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 Rk(e){return e.length===0?void 0:e.map(e=>`${e.name}:${e.count}`).join(`,`)}function zk(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 Bk(e){return e===void 0||e.length===0||c.sep!==`\\`?e:e.replace(/\\/g,`/`)}function Vk(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 Hk={theme:e=>e.theme.kind===`decided`?e.theme.name:null,preset:e=>e.preset,look:e=>e.look.kind===`decided`?e.look.name:null,style:e=>e.style,progression:e=>e.progression,charset:e=>e.charset,colorCompatibility:e=>e.colorCompatibility,autoWrap:e=>e.autoWrap?xo:So,padding:e=>String(e.padding),updateNotice:e=>e.updateNotice?xo:So},Uk=Object.entries(bb),Wk=new Set(xb.map(e=>e.sessionKey)),Gk=()=>!1;function Kk(e,t){return gk(e,e=>Wk.has(e)?t(e):null,Gk)}function qk(e,t,n,r){return e.flatMap(([e,i])=>{let a=Hk[e](t);return a===null||a===Hk[e](n(e))?[]:[{...i,value:a,target:r(i)}]})}function Jk(e,t,n){return Hk[n](Kk(e,t))}function Yk(e,t){let n=Kk(e,t),r=gk(e,()=>null,Gk),i=gk(e,e=>e===bb.preset.sessionKey?n.preset:null,Gk),a=C_(e.presets,n.preset).globals??{};return qk(Uk,n,e=>e===`preset`?r:i,e=>e.configKey in a?Zb(n.preset,e.configKey):e.configKey)}function Xk(e,t){let{preset:n}=Kk(e,t);return $k(e,n).flatMap(({id:e,setting:r,key:i,decl:a,saved:o})=>{let s=t(i),c=s===null?void 0:qs(a,s);return c===void 0||Ks(c)===Ks(o)?[]:[{preset:n,id:e,setting:r,key:i,value:c}]})}function Zk(e,t,n){let r=new Map(n.map(e=>[e.key,e.value]));return x_(e.presets).flatMap(n=>{let i=$k(e,n);return[...new Set(i.filter(e=>r.has(e.key)).map(e=>e.id))].flatMap(e=>{let n=i.filter(t=>t.id===e);return Ws(Object.fromEntries(n.map(e=>[e.setting,e.decl])),Object.fromEntries(n.map(e=>{let n=r.get(e.key)??t(e.key),i=n===null?void 0:qs(e.decl,n);return[e.setting,i??e.saved]}))).map(({message:t})=>`placement "${e}": ${t}`)})})}const Qk=new WeakMap;function $k(e,t){let n=Qk.get(e)??new Map;Qk.set(e,n);let r=n.get(t);if(r!==void 0)return r;let i=[...js(w_(e,t).node)].flatMap(t=>t.kind!==`segment`||t.drafts===void 0?[]:Object.entries(t.drafts).map(([n,{id:r,key:i}])=>{let a=Hs(e.segments[t.name])[n];return{id:r,setting:n,key:i,decl:a,saved:t.settings?.[n]??a.default}})),a=[...new Map(i.map(e=>[e.key,e])).values()];return n.set(t,a),a}function eA(e,t){let n=Kk(e,t),r=gk(e,e=>e===bb.preset.sessionKey?n.preset:null,Gk);return{from:n.preset,globals:C_(e.presets,n.preset).globals??{},picks:qk(Uk.filter(([e])=>e!==`preset`),n,()=>r,e=>e.configKey),placements:Xk(e,t)}}function tA(e){return{sessionKeys:xb.filter(t=>t.configKey===e).map(e=>e.sessionKey),fileKeys:[e,...yl(e)?tk.map(t=>Zb(t,e)):[]]}}const nA=Ka(),rA=new Set(nA),iA=new Set(ao),aA=e=>e?rA.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown theme "${e}" (have: ${nA.join(`, `)})`}:{ok:!1,reason:`theme name is required`},oA=e=>e?iA.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown style "${e}" (have: ${ao.join(`, `)})`}:{ok:!1,reason:`style name is required`},sA=new Set([`1`,`true`]),cA=new Set([`0`,`false`]),lA=AO({style:oA,theme:aA,"toolbar-expanded":e=>sA.has(e)?{ok:!0,value:`1`}:cA.has(e)?{ok:!0,value:``}:{ok:!1,reason:`expected boolean-ish (1, 0, true, false), got "${e}"`}});function uA(){return lA.listKeys()}function dA(e,t){return lA.register(e,t)}function fA(e,t){return lA.validate(e,t)}function pA(e){return lA.rangeParamsFor(e)}function mA(e,t){return`set`in e?`to`in e?[{key:e.set,spec:{kind:`allow-list`,allowed:[e.to]}}]:`from`in e?[{key:e.set,spec:{kind:`allow-list`,allowed:Ub(e.from,t).members}}]:`int`in e?[{key:e.set,spec:{kind:`int`}}]:`cycle`in e?[{key:e.set,spec:{kind:`allow-list`,allowed:e.cycle}}]:[{key:e.set,spec:{kind:`range`,min:e.min,max:e.max}}]:[]}function hA(e){let t=new Set(lA.listBaselineKeys());return e.filter(e=>e.spec.kind!==`allow-list`||!t.has(e.key))}function gA(e,t,n){let r=wb.get(n);if(r!==void 0)return Jk(e,t,r);let i=Object.values(e.variables).find(e=>e.kind===`state`&&e.key===n);return i?.kind===`state`?i.default??null:null}function _A(e){let t=Vb(e);return hA(Object.values(e.actions).flatMap(e=>mA(e,t)))}function vA(e){return kO(_A(e))}const yA=`update.dismissed`,bA=`updateNotice`,xA=bb.updateNotice.sessionKey;function SA(e){return e.kind===`source`?e.newer.digest:IE(e.newer)}const CA=e=>`${e.version} [${mO(e.digest)}]`;function wA(e){switch(e.kind){case`source`:return{headline:`Newer source`,newer:CA(e.newer),running:CA(e.running),act:`rebuild`,busy:`rebuilding…`,command:{bin:`pnpm`,args:[`build`],cwd:e.root}};case`release`:return{headline:`Newer release`,newer:IE(e.newer),running:IE(e.running),act:`upgrade`,busy:`upgrading…`,command:{bin:`pnpm`,args:[`dlx`,`${RE}@${IE(e.newer)}`,`install`]}}}}const TA={kind:`idle`},EA={kind:`running`};function DA(e,t,n){if(e===null)return[];let r=SA(e);if(!n.enabled||n.dismissed===r)return[];let i=wA(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(`
178
- `),c=bE([{verb:rE,args:[s]}]),l=t.kind===`running`?nO(`[${i.busy}]`,c):nO(`[${i.act}]`,bE([{verb:pE,args:[n.sessionId]}]));return[{severity:tO,message:s,lines:[[nO(a,c),l,nO(`[dismiss]`,bE([{verb:ZT,args:[n.sessionId,yA,r]}])),nO(`[disable]`,bE([{verb:iE,args:[n.sessionId,bA,`false`]},{verb:ZT,args:[n.sessionId,xA,`false`]}]))],...o.map(e=>[nO(e,c)])]}]}function OA(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 kA(e){switch(e.kind){case`current`:return[`info`,`build: current ${CA(e.stamp)}`];case`stale`:return[`info`,`build: stale — source ${CA(e.source)}, running ${CA(e.running)}`];case`not-source-checkout`:return[`info`,`build: not a source checkout`];case`unchecked`:return[`warn`,`build: unchecked: ${e.reason}`]}}function AA(e){switch(e.kind){case`current`:return[`info`,`release: current ${IE(e.installed)}`];case`stale`:return[`info`,`release: stale — latest ${IE(e.latest)}, running ${IE(e.installed)}`];case`ahead`:return[`info`,`release: ahead — running ${IE(e.installed)}, latest ${IE(e.latest)}`];case`unchecked`:return[`warn`,`release: unchecked: ${e.reason}`]}}function jA(e){let t=null;return([n,r])=>{r!==t&&(t=r,e(n,r))}}const MA=e=>e.split(/\r?\n/).map(e=>e.trim()).filter(e=>e!==``).at(-1);function NA(e){let t=e.exitCode===null?``:` (exit ${e.exitCode})`,n=MA(e.stderr)??e.error??MA(e.stdout)??`no output`;return`${e.reason}${t}: ${n}`}function PA(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=TA,d=null,f=jA(s),p=jA(s),m=()=>OA(c,l);function h(){let e=m(),t=e===null?null:SA(e);(d===null?null:d.identity)!==t&&(d?.dispose(),d=t===null?null:{identity:t,dispose:dA(yA,{kind:`allow-list`,allowed:[t]})})}function g(){c=vO(t,gO),f(kA(c)),h()}async function _(){l=BE(EE,await zE(RE,a,i)),p(AA(l)),h()}return{arm(){BO(bA,{kind:`allow-list`,allowed:[`false`]}),dA(xA,{kind:`allow-list`,allowed:[`false`]}),g(),setInterval(g,n).unref(),c.kind===`not-source-checkout`&&(_(),setInterval(()=>void _(),r).unref())},notice:e=>DA(m(),u,e),act(){let e=m();if(e===null)throw new $(`apply-update: nothing newer is known to apply`);let t=wA(e);if(u.kind===`running`)throw new $(`apply-update: already ${t.busy}`);u=EA,s(`info`,`apply-update: ${t.act} — ${t.command.bin} ${t.command.args?.join(` `)??``}`),De({...t.command,category:`update.apply`,timeoutMs:6e5}).then(n=>{if(n.ok){u=TA,s(`info`,`apply-update: ${t.act} succeeded`),g(),o();return}let r=NA(n);u={kind:`failed`,identity:SA(e),reason:r},s(`error`,`apply-update: ${t.act} failed: ${r}`)})}}}var FA=class{static CACHE_DIR=Ne();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 O(`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`?(O(`Removing stale lock file ${e} for dead process ${i}`),r.unlinkSync(t),!1):(O(`Error checking process ${i} for lock ${e}:`,n),!0)}}catch(t){return O(`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`}),O(`Lock acquired for ${e}`),!0}catch(e){if(e.code===`EEXIST`)await D(50);else throw e}return O(`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),O(`Lock released for ${e}`)}catch(t){t.code!==`ENOENT`&&O(`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){O(`Failed to create cache directories:`,e)}}static createProjectHash(e){return ae(`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)){O(`Cache for ${e} is locked, waiting...`),await D(75);continue}try{let i=await r.promises.readFile(n,`utf-8`),a=JSON.parse(i);return!t||a.timestamp>=t?(O(`[CACHE-HIT] ${e} disk cache: found`),this.deserializeDates(a.data)):(O(`${e} cache outdated: cache=${a.timestamp}, latest=${t}`),null)}catch(t){if(t.code===`ENOENT`)return O(`No shared ${e} usage cache found`),null;O(`Attempt ${a+1} failed to read ${e} cache: ${t.message}. Retrying...`),await D(75)}}return O(`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)){O(`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`),O(`[CACHE-SET] ${e} disk cache stored`)}catch(t){O(`Failed to save ${e} usage cache:`,t)}finally{await this.releaseLock(i)}}};const IA={"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 LA=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 FA.getUsageCache(`pricing`,e)}static async saveDiskCache(e){await FA.setUsageCache(`pricing`,e)}static async fetchPricingData(){return new Promise(e=>{let t=new re(this.GITHUB_PRICING_URL),n=oe({hostname:t.hostname,path:t.pathname,headers:{"User-Agent":`cc-candybar`,"Cache-Control":`no-cache`},timeout:5e3},t=>{if(t.statusCode!==200){O(`HTTP ${t.statusCode}: ${t.statusMessage}`),e(null);return}let r=``,i=0;t.on(`data`,t=>{if(i+=t.length,i>1048576){O(`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)?(O(`Fetched fresh pricing from GitHub for ${Object.keys(i).length} models`),O(`Pricing last updated: ${n?.updated||`unknown`}`),e(i)):(O(`Invalid pricing data structure`),e(null))}catch(t){O(`Failed to parse JSON:`,t),e(null)}}),t.on(`error`,t=>{O(`Response error:`,t),e(null)})});n.on(`error`,t=>{O(`Request error:`,t),e(null)}),n.on(`timeout`,()=>{O(`Request timeout`),n.destroy(),e(null)}),n.end()})}static async getCurrentPricing(){if(this.executionCache!==null)return O(`[CACHE-HIT] Pricing execution cache: ${Object.keys(this.executionCache).length} models`),this.executionCache;let e=await this.loadDiskCache();if(e)return O(`[CACHE-HIT] Pricing disk cache: ${Object.keys(e).length} models`),this.executionCache=e,O(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(e).length} models`),e;let t=await this.fetchPricingData();return t?(await this.saveDiskCache(t),O(`[CACHE-SET] Pricing disk cache stored: ${Object.keys(t).length} models`),this.executionCache=t,O(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(t).length} models`),t):(O(`[CACHE-FALLBACK] Using offline pricing data: ${Object.keys(IA).length} models`),this.executionCache=IA,O(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(IA).length} models`),IA)}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 O(`[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),O(`[CACHE-SET] Model pricing cache: ${e}`),n}static fuzzyMatchModel(e,t){let n=e.toLowerCase();for(let[e,r]of Object.entries(t))if(e.toLowerCase()===n)return r;for(let{pattern:e,fallback:r}of[{pattern:[`opus-4-6`,`claude-opus-4-6`],fallback:`claude-opus-4-6-20260205`},{pattern:[`opus-4-5`,`claude-opus-4-5`],fallback:`claude-opus-4-5-20251101`},{pattern:[`opus-4-1`,`claude-opus-4-1`],fallback:`claude-opus-4-1-20250805`},{pattern:[`opus-4`,`claude-opus-4`],fallback:`claude-opus-4-20250514`},{pattern:[`sonnet-4-6`,`sonnet-4.6`,`claude-sonnet-4-6`],fallback:`claude-sonnet-4-6`},{pattern:[`sonnet-4.5`,`4-5-sonnet`,`sonnet-4-5`],fallback:`claude-sonnet-4-5-20250929`},{pattern:[`sonnet-4`,`claude-sonnet-4`],fallback:`claude-sonnet-4-20250514`},{pattern:[`haiku-4.5`,`4-5-haiku`,`haiku-4-5`],fallback:`claude-haiku-4-5-20251001`},{pattern:[`haiku`],fallback:`claude-haiku-4-5-20251001`},{pattern:[`opus`],fallback:`claude-opus-4-20250514`},{pattern:[`sonnet`],fallback:`claude-sonnet-4-5-20250929`}])if(e.some(e=>n.includes(e))&&t[r])return t[r];return t[`claude-sonnet-4-5-20250929`]||{name:`${e} (Unknown Model)`,input:3,cache_write_5m:3.75,cache_write_1h:6,cache_read:.3,output:15}}static async calculateCostForEntry(e){let t=e.message?.usage;if(!t)return 0;let n=this.extractModelId(e),r=await this.getModelPricing(n),i=t.input_tokens||0,a=t.output_tokens||0,o=t.cache_creation_input_tokens||0,s=t.cache_read_input_tokens||0,c=i/1e6*r.input,l=a/1e6*r.output,u=s/1e6*r.cache_read,d=o/1e6*r.cache_write_5m;return c+l+d+u}static extractModelId(e){if(e.model&&typeof e.model==`string`)return e.model;let t=e.message;if(t?.model){let e=t.model;if(typeof e==`string`)return e;let n=e;return(typeof n?.id==`string`?n.id:null)||`claude-sonnet-4-5-20250929`}return e.model_id&&typeof e.model_id==`string`?e.model_id:`claude-sonnet-4-5-20250929`}};const RA=/<command-name>\s*([^<\s][^<]*?)\s*<\/command-name>/;function zA(e){if(typeof e==`string`)return RA.exec(e)?.[1]}function BA(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 VA(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=BA(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?zA(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 HA(){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=m(),n=f(t,`.config`,`claude`),r=f(t,`.claude`);a(n)&&e.push(n),a(r)&&e.push(r)}return e}async function UA(e){let t=[];for(let n of e){let e=f(n,`projects`);if(a(e))try{let n=await ok(e,{withFileTypes:!0});for(let r of n)if(r.isDirectory()){let n=f(e,r.name);t.push(n)}}catch(t){O(`Failed to read projects directory ${e}:`,t)}}return t}async function WA(e,t,n){let r=[],i=f(t,e,`subagents`);try{let t=(await ok(i)).filter(e=>e.startsWith(`agent-`)&&e.endsWith(`.jsonl`));for(let a of t){let t=f(i,a);if(n?.has(t)){r.push(t);continue}try{let n=(await sk(t,`utf-8`)).split(`
179
- `)[0];n&&JSON.parse(n).sessionId===e&&r.push(t)}catch{O(`Failed to check agent file ${t}`)}}}catch(e){O(`Failed to read subagents directory ${i}:`,e)}return r}function GA(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 KA=new Map;async function qA(e){try{let t=await ck(e),n=t.size,r=KA.get(e);if(r&&r.mtime===t.mtimeMs&&r.size===n)return O(`[parse-cache] hit ${e}`),KA.delete(e),KA.set(e,r),r.entries;let i;return n>1048576?(O(`Using streaming parser for large file ${e} (${Math.round(n/1024)}KB)`),i=await QA(e)):i=await XA(e),O(`Parsed ${i.length} entries from ${e}`),n>5242880?i:(KA.delete(e),KA.size>=16&&KA.delete(KA.keys().next().value),KA.set(e,{mtime:t.mtimeMs,size:n,entries:i}),i)}catch(t){if(t.code===`ENOENT`)return O(`Transcript not present yet: ${e}`),[];throw t}}function JA(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:VA(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 YA(e){let t=[];for(let n of e.split(`
180
- `))if(n.trim())try{let e=JA(JSON.parse(n));e&&t.push(e)}catch(e){O(`Failed to parse JSONL line: ${e}`);continue}return t}async function XA(e){return YA(await sk(e,`utf-8`))}async function ZA(e,t){let n=await lk(e,t===void 0?void 0:{offset:t.offset,ino:t.ino});if(n.kind!==`ok`)return n;let{buf:r,start:i,mtimeMs:a,ino:o,reset:s}=n.value,c=r.lastIndexOf(10);return J(c<0?{entries:[],cursor:{offset:i,mtimeMs:a,ino:o},reset:s}:{entries:YA(r.subarray(0,c+1).toString(`utf-8`)),cursor:{offset:i+c+1,mtimeMs:a,ino:o},reset:s})}async function QA(e){return new Promise((t,n)=>{let r=[],a=i(e,{encoding:`utf8`}),o=se({input:a,crlfDelay:1/0});o.on(`line`,e=>{let t=e.trim();if(t)try{let e=JA(JSON.parse(t));e&&r.push(e)}catch(e){O(`Failed to parse JSONL line: ${e}`)}}),o.on(`close`,()=>{t(r)}),o.on(`error`,t=>{O(`Streaming parser error for ${e}:`,t),n(t)}),a.on(`error`,t=>{O(`File stream error for ${e}:`,t),n(t)})})}var $A=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 ej(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 tj={cost:0,input:0,output:0,cacheCreation:0,cacheRead:0},nj={cost:null,calculatedCost:null,officialCost:null,tokens:null,tokenBreakdown:null};function rj(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function ij(){let e=new Date;return e.setHours(0,0,0,0),e.setDate(e.getDate()-1),e.getTime()}function aj(){return{input:0,output:0,cacheCreation:0,cacheRead:0}}async function oj(e,t,n,r){let i=rj(new Date(ij())),a=e&&!t?e:void 0,o=a?.entries??0,s=a?.cost??0,c=a?{...a.breakdown}:aj(),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 LA.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=rj(new Date(e.timestamp));if(r<i)continue;let a=l.get(r)??{...tj};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 sj(e){let t=0,n=0,r=aj(),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)??{...tj};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:nj,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 cj(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 lj=class{entries=new Map;flight=new $A;seeded=new Map;speedRings=new Map;speedFlight=new $A;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:nj,i=t?.cost?.total_cost_usd??null;return J({session:{...r,cost:i??r.cost,officialCost:i}})}async getTodayInfo(e){let t=rj(new Date);try{await this.ensureSeeded(t)}catch(e){return X(`usage seed: ${e instanceof Error?e.message:String(e)}`)}let n=await this.ingest(e?.session_id??``,e?.transcript_path);if(n.kind===`failed`)return n;let r={...tj},i=!1;for(let e of this.entries.values()){i||=e.days.has(t);let n=e.days.get(t)??tj;r.cost+=n.cost,r.input+=n.input,r.output+=n.output,r.cacheCreation+=n.cacheCreation,r.cacheRead+=n.cacheRead}return i?J({cost:r.cost,tokens:r.input+r.output+r.cacheCreation+r.cacheRead,tokenBreakdown:{input:r.input,output:r.output,cacheCreation:r.cacheCreation,cacheRead:r.cacheRead},date:t}):Y}async observeSpeed(e,t,n){let r=rk(t);return this.speedFlight.run(`${e}:${r}`,async()=>{let i=await this.ingest(e,t,r);if(i.kind===`failed`)return i;let a=ej(i.kind===`ok`?i.value.sessionInfo.tokenBreakdown:null,n),o=this.speedRings.get(e)??[],s;for(let e of o)e.atMs<a.atMs&&(s===void 0||e.atMs>s.atMs)&&(s=e);return o.push(a),o.sort((e,t)=>e.atMs-t.atMs),o.length>64&&o.shift(),this.speedRings.set(e,o),J({...s!==void 0&&{prev:s},cur:a,samples:[...o]})})}async ingest(e,t,n){if(!e)return Y;let r=n??rk(t),i=this.entries.get(e);if(i&&r!==0&&i.transcriptMtime===r)return i.lastSeenAt=Date.now(),this.entries.delete(e),this.entries.set(e,i),this.hits++,J(i);if(!t)return i?J(i):Y;this.misses++;let a;try{a=await this.flight.run(`${e}:${r}`,()=>this.refold(e,t,this.entries.get(e)))}catch(t){return X(`usage refold (${e}): ${t instanceof Error?t.message:String(t)}`)}if(a.kind!==`ok`)return a;let o={files:a.value.files,sessionInfo:a.value.sessionInfo,days:a.value.days,transcriptMtime:a.value.mainMtime,transcriptPath:t,lastSeenAt:Date.now()};return this.entries.delete(e),this.entries.set(e,o),this.evictIfNeeded(),J(o)}async refold(e,t,n){let r=await WA(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 ZA(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 oj(r,l,s,c)),e===t&&(a=c.mtimeMs)}return J({files:i,...sj(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=ij(),n=await UA(HA()),r=[];for(let e of n){let n;try{n=await ok(e)}catch{continue}for(let i of n){if(!i.endsWith(`.jsonl`))continue;let n=f(e,i),a;try{a=(await ck(n)).mtimeMs}catch{continue}a<t||r.push({sessionId:i.slice(0,-6),path:n,mtime:a})}}await cj(r,8,async e=>{let t=await this.ingest(e.sessionId,e.path,e.mtime);t.kind===`failed`&&Q(`warn`,`usageStore seed: ${t.reason}`)}),this.seeds++,Q(`info`,`usageStore seed sessions=${r.length}`)}sweepStale(){let e=Date.now(),t=0;for(let[n,r]of this.entries)e-r.lastSeenAt>this.staleAgeMs&&(this.entries.delete(n),this.speedRings.delete(n),t++);return t>0&&(this.sweeps++,Q(`info`,`usageStore sweep dropped=${t}`)),t}evictIfNeeded(){for(;this.entries.size>this.maxEntries;){let e=this.entries.keys().next().value;if(e===void 0)break;this.entries.delete(e),this.speedRings.delete(e),Q(`info`,`usageStore evict ${e}`)}}close(){this.sweepTimer&&=(clearInterval(this.sweepTimer),null),this.entries.clear(),this.seeded.clear(),this.speedRings.clear()}};function uj(e,t){return e===void 0?!0:e.evaluate(t).map(e=>e.plain).join(``)!==`false`}function dj(e,t){let n=U.fromFragments(e);return n.end=``,n.overflow=`ignore`,t!==void 0&&!t.isNull&&(n.style=t),n}function fj(e,t,n){e.cellLength>t?e.truncate(t,{mode:n.truncate,marker:`…`}):e.cellLength<t&&e.align(n.justify,t)}function pj({text:e,trail:t}){if(t===void 0)return e;let n=dj([e,t]);return n.style=e.style,n}function mj(e,t){let{width:n,justify:r,truncate:i,baseStyle:a,padding:o,trail:s=[]}=t;if(e.length===0)return[];let c=dj(e,a).pad(o),l=s.length===0?{}:{trail:dj([...s,new U(` `.repeat(o))],a)};if(n===`auto`)return[{text:c,...l}];let u={justify:r,truncate:i};return n===`fill`?[{text:c,fill:u,...l}]:(fj(c,n,u),[{text:c,...l}])}const hj=RegExp(`\\x1b\\[[0-9;]*m|${gi.source}`,`g`);function gj(e){return M(e.replace(hj,``))}function _j(e,t){let n=e.map(pj),r=[];if(e.forEach(({fill:e},t)=>{e!==void 0&&r.push({at:t,how:e})}),r.length===0||!Number.isFinite(t.width))return n;let i=ZD(n,t).split(`
181
- `);if(i.length>1)return n;let a=Math.max(0,t.width-gj(i[0]??``)),o=Math.floor(a/r.length),s=a-o*r.length;return r.forEach(({at:t,how:i},a)=>{let c=o+(a===r.length-1?s:0),{text:l}=e[t];fj(l,l.cellLength+c,i),n[t]=pj(e[t])}),n}function vj(e,t){let n=[],r=[],i=()=>{if(!r.length)return;let e=yj(r,t);e.plain.length>0&&n.push(e),r=[]};for(let a of e)if(xj(a.style).link){i();let e=yj([a],t);e.plain.length>0&&n.push(e)}else r.push(a);return i(),n}function yj(e,t){let n=t!==void 0&&!t.isNull?e.map(e=>bj(e,t)):e,r=U.fromFragments(n);return r.end=``,r.overflow=`ignore`,n.length===1?r.style=n[0].style:t!==void 0&&!t.isNull&&(r.style=t),r}function bj(e,t){let n=e.copy();return n.style=t.add(xj(e.style)),n}function xj(e){return e instanceof V?e:V.parse(e)}var Sj=class extends Error{constructor(e,t,n){super(`Invalid ${t} color ${JSON.stringify(e)}: ${n}`),this.name=`ColorSpecError`}};function Cj(e,t,n,r,i){let{palette:a,tint:o}=e,s=wj(n,i),c=s===void 0?o:Tj(a,s,`bg`);e.bg=c;let l=wj(r,i),u=l===void 0?wa(a,c,t):Tj(a,l,`fg`);return new V({bgcolor:hn.fromRgba(c),color:hn.fromRgba(u)})}function wj(e,t){if(e!==void 0)return e.evaluate(t).map(e=>e.plain).join(``)}function Tj(e,t,n){try{return Yn(e,t)}catch(e){throw e instanceof Kn?new Sj(t,n,e.message):e}}function Ej(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,Dj(e,t,o,n,r,i));return i}function Dj(e,t,n,r,i,a){if(`set`in n){let e=r.get(n.set)??n.set;if(`to`in n)return{kind:`set-literal`,key:n.set,value:n.to,stateVar:e};if(`from`in n){let t=Ub(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=Sb.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=Ub(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=Ub(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:kj(e,n.copy,t)};if(`open`in n)return{kind:`open`,target:kj(e,n.open,t)};if(`reset`in n)return{kind:`reset`,key:n.reset};if(`doctor`in n)return n.doctor===`run`?{kind:`doctor-run`}:{kind:`doctor-fix`,check:n.check};if(`ceiling`in n)return{kind:`ceiling`,args:nC(n)};if(`slash`in n)return{kind:`slash`,line:n.slash};if(`undo`in n)return{kind:`undo`};if(`redo`in n)return{kind:`redo`};if(`save`in n)return{kind:`save`};if(`preset`in n)return n.preset===`save`?{kind:`preset-save`}:{kind:`preset-delete`,name:kj(e,n.name,t)};let[o,...s]=n.do.map(e=>{let n=a.get(e);if(n===void 0)throw Error(`action "${t}" fires "${e}", which is not declared in this config`);return n});return{kind:`do`,head:o,rest:s}}function Oj(e){return e.kind===`do`?Oj(e.head):e}function kj(e,t,n){try{return e(t)}catch(e){throw Error(`Template parse error in actions.${n}: ${e.message}`,{cause:e})}}function Aj(e,t){return e.has(t)?bv(e.read(t)):``}function jj(e,t){return e.evaluate(t).map(e=>e.plain).join(``)}function Mj(e,t,n,r){let i=new U(e,{style:V.combine([r,new V({link:t,bold:n})])});return i.overflow=`ignore`,i.end=``,i}function Nj(e,t){return Math.max(e.members.indexOf(Aj(t,e.stateVar)),0)}function Pj(e,t,n,r,i){switch(e.kind){case`set-literal`:{let t=Aj(r,e.stateVar);return{effects:[{verb:ZT,args:[i,e.key,e.value]}],active:t===e.value}}case`set-option`:{let a=n??t,o=Aj(r,e.stateVar);return{effects:[{verb:ZT,args:[i,e.key,a]}],active:o===a}}case`set-int`:{let a=n??t,o=Aj(r,e.stateVar);return{effects:[{verb:ZT,args:[i,e.key,a]}],active:o===a}}case`set-cycle`:{let t=e.members[(Nj(e,r)+1)%e.members.length];return{effects:[{verb:ZT,args:[i,e.key,t]}],active:!1}}case`set-bounded`:return{effects:[{verb:QT,args:[i,e.key,String(e.by)]}],active:!1};case`copy`:return{effects:[{verb:$T,args:[jj(e.text,fy(r))]}],active:!1};case`open`:return{effects:[{verb:eE,args:[jj(e.target,fy(r))]}],active:!1};case`persist-literal`:{let t=Aj(r,e.stateVar);return{effects:[{verb:iE,args:[i,e.key,e.value]}],active:t===e.value}}case`persist-option`:{let a=n??t,o=Aj(r,e.stateVar);return{effects:[{verb:iE,args:[i,e.key,a]}],active:o===a}}case`persist-cycle`:{let t=e.members[(Nj(e,r)+1)%e.members.length];return{effects:[{verb:iE,args:[i,e.key,t]}],active:!1}}case`persist-bounded`:return{effects:[{verb:aE,args:[i,e.key,String(e.by)]}],active:!1};case`reset`:return{effects:[{verb:lE,args:[i,e.key]}],active:!1};case`undo`:return{effects:[{verb:dE,args:[i]}],active:!1};case`redo`:return{effects:[{verb:fE,args:[i]}],active:!1};case`save`:return{effects:[{verb:oE,args:[i]}],active:!1};case`preset-save`:return{effects:[{verb:sE,args:[i]}],active:!1};case`preset-delete`:return{effects:[{verb:cE,args:[i,jj(e.name,fy(r))]}],active:!1};case`doctor-run`:return{effects:[{verb:mE,args:[i]}],active:!1};case`doctor-fix`:return{effects:[{verb:hE,args:[i,e.check]}],active:!1};case`ceiling`:return{effects:[{verb:gE,args:[i,...e.args]}],active:!1};case`slash`:return{effects:[{verb:_E,args:[i,e.line]}],active:!1};case`layout-op`:return{effects:[{verb:uE,args:[i,e.key,yO(e.op)]}],active:!1};case`do`:{let a=Pj(e.head,t,n,r,i);return{effects:[...a.effects,...e.rest.flatMap(e=>Pj(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:uE,args:[i,e.key,yO(r)]}],active:!1}}}}function Fj(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:Kc(`action "${e}"`,n,t.members.length,Nj(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 Ij(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}=Fj(e,Oj(r),t,i),{effects:s,active:c}=Pj(r,a,o,i,Aj(i,`session.id`));return Mj(a,bE(s),c)}function Lj(e){return{action:{fn:(t,...n)=>Ij(t,n,e),argTypes:[`string`,`string`],arity:{kind:`variadic`},returnType:`T`}}}function Rj(e,t){return Mj(`✕`,bE([{verb:ZT,args:[Aj(e,`session.id`),t,Uc]}]),!1)}function zj(e,t,n){return new V({bgcolor:hn.fromRgba(t),color:hn.fromRgba(wa(e,t,n))})}function Bj(e,t,n){return zj(e.palette,La(e.palette,e.disclosure,[t],n),n)}function Vj(e,t,n,r,i){return r===void 0?n=>Bj(e,{...n,distribution:t},i):(e,t)=>Hj(r(t,n),i)}function Hj(e,t){let n=ma(e,`background`);return new V({bgcolor:hn.fromRgba(n),color:hn.fromRgba(rr(ma(e,`primary`),n,4.5,t))})}function Uj(e){return{current:null,drawnAt:e}}function Wj(e,t,n,r,i,a){let o={segName:t,placementId:n,palette:r,disclosure:i,tint:a,bg:void 0,drops:[]};return e.current=o,o}function Gj(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 Kj(e){return new U(e).cellLength}function qj(e){return Math.max(1,e.width-e.chromeCols-2*e.padding)}function Jj(e){return Math.max(1,qj(e)-(Kj(`✕`)+2*e.padding+e.seamCols))}function Yj(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 Xj(e,t){let n=[];for(let t of e)n.length>0&&n.push(new U(` `)),n.push(t);let r=U.fromFragments(n);return r.overflow=t?`ignore`:void 0,r.end=``,r}function Zj(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 Qj(e,t,n){let r=e.compiled.get(t),i=r&&Oj(r);if(!i||i.kind!==`set-option`&&i.kind!==`persist-option`&&i.kind!==`layout-op-option`)throw Error(`${n} references action "${t}" which must be a set-option, persist-option, or layout-op-option action ({ set, from }, { persist, from }, or { persist, insertSegmentFrom, anchor, relation }), got ${i?`a ${i.kind} action`:`no such action`}`);return i}function $j(e,t,n,r,i,a,o){let s=Qj(a,e,`picker`),c=a.compiled.get(e),l=a.store,u=Aj(l,`session.id`),d=`stateVar`in s?Aj(l,s.stateVar):void 0,f=s.options.map(Kj),p=i?qj(a):1/0,m=Kj(`✕`)+1,h=Kj(`←`)+1+Kj(`→`)+1,g=Yj(f,p,m),_=g.length>1?Yj(f,p,m+h):g,v=parseInt(Aj(l,t.stateVar),10),y=Number.isInteger(v)?Math.max(0,Math.min(v,_.length-1)):0,b=_[y]??[],x=e=>bE([{verb:ZT,args:[u,t.key,String(e)]}]),S=n.flatMap(([e,t])=>[e,t]),C=bE([{verb:ZT,args:[u,...S]}]),ee=r?[{verb:ZT,args:[u,...S]}]:[],te=e=>bE([...Pj(c,e,e,l,u).effects,...ee]),ne=[Mj(`✕`,C,!1)];y>0&&ne.push(Mj(`←`,x(y-1),!1));for(let e of b){let t=s.options[e];ne.push(Mj(t,te(t),t===d,o({index:e,count:s.options.length},t)))}return y<_.length-1&&ne.push(Mj(`→`,x(y+1),!1)),Xj(ne,i)}function eM(e,t){return{picker:{fn:(n,r,i,a,...o)=>{oy(`picker "${n}"`,[`closeOnPick`,`paged`],o);let s=Zj(e,r,`set-int`,`an int action ({ set, int: true })`);return $j(n,{key:s.key,stateVar:s.stateVar},[[s.key,`-1`]],i===!0,a===!0,e,Vj(Gj(t,`{{ picker }}`),ca(void 0),e,Qj(e,n,`picker`).paletteOf,t.drawnAt()))},argTypes:[`string`,`string`,`bool`],arity:{kind:`variadic`},returnType:`T`}}}function tM(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+Kj(e(-(s+1)))+1+Kj(e(s+1))+1;if(t>r)break;o=t,s+=1}return s}function nM(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=Aj(a,`session.id`),{options:c}=t,l=c.length,u=Aj(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=bE(Pj(o,p(e),p(e),a,s).effects);return m.set(e,n),n},g=e=>Mj(p(e),h(e),p(e)===u,r({index:f(e),count:l},p(e))),_=tM(p,l,Kj(`◀`)+1+Kj(p(0))+1+Kj(`▶`),Jj(n),i),v=e=>Array.from({length:_},(t,n)=>g(e*(n+1)));return Xj([...v(-1).reverse(),Mj(`◀`,h(-1),!1),g(0),Mj(`▶`,h(1),!1),...v(1)],!0)}function rM(e,t){return{carousel:{fn:(n,r,...i)=>{if(oy(`carousel "${n}"`,[`neighbours`],i),r!==void 0&&r<0)throw Error(`carousel "${n}": neighbours must be a whole number ≥ 0 (0 shows only ◀ CURRENT ▶), got ${String(r)}`);let a=r??1/0,o=Qj(e,n,`carousel`);return nM(n,o,e,Vj(Gj(t,`{{ carousel }}`),ca(void 0),e,o.paletteOf,t.drawnAt()),a)},argTypes:[`string`,`int`],arity:{kind:`variadic`},returnType:`T`}}}const iM=[`~/code`,`main`,`opus`,`42%`,`5m`,`$1.20`];function aM(e,t,n){let r=Aa(e,{hue:ea,depth:0},n);return[na(t).map((t,n)=>({text:iM[n%iM.length],colour:ha(e,t)})),[{text:`▾ open`,colour:r.state},{text:`menu`,colour:r.plane}],[{text:`warn`,colour:ma(e,`warning`)},{text:`error`,colour:ma(e,`error`)}]]}function oM(e,t,n,r){let i=aM(e,t,n).flatMap((t,r)=>t.map(({text:t,colour:i},a)=>({gap:r>0&&a===0?` `:``,cell:new U(` ${t} `,{style:zj(e,i,n)})}))),a=[],o=0;for(let{gap:e,cell:t}of i){if(o+=e.length+t.cellLength,o>r)break;e!==``&&a.push(new U(e)),a.push(t)}let s=U.fromFragments(a);return s.overflow=`ignore`,s.end=``,s}function sM(e,t){return{themePreview:{fn:()=>oM(e.palette,e.progression,t.drawnAt(),Jj(e)),argTypes:[],arity:{kind:`exact`},returnType:`T`}}}const cM=e=>e.slice(e.lastIndexOf(`.`)+1),lM=(e,t)=>{let n=new U(cM(e));return n.truncate(t,{marker:`…`}),n.plain};function uM(e,t){let n=e.map(e=>e.map(({name:e})=>Kj(cM(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 dM(e,t,n,r){let i=uM(e,r),a=e.map(e=>{let a=[],o=0;for(let{name:s,address:c,palette:l}of e){let e=new U(` ${lM(s,i)} `,{style:zj(l,Va(l,{kind:`bar`,progression:t,address:c},n).tint,n)});if(o+=e.cellLength,o>r)break;a.push(e)}return a}),o=U.fromFragments(a.flatMap((e,t)=>t===0?e:[new U(`
182
- `),...e]));return o.overflow=`ignore`,o.end=``,o}function fM(e,t){return{layoutPreview:{fn:()=>dM(e.layout(),e.progression,t.drawnAt(),Jj(e)),argTypes:[],arity:{kind:`exact`},returnType:`T`}}}function pM(e,t,n,r){let i=Gj(r.activeSegment,`{{ menu }}`),a=r.action,o=d_(i.placementId,e,n.key),s=m_(o),c=u_(e),l=Aj(a.store,o)===c,u=Aj(a.store,`session.id`),d=l?Uc:c,f=Mj(Kc(`{{ menu "${e}" }}`,t,2,+!!l),bE([{verb:ZT,args:[u,o,d,s,`0`]}]),!1);return i.drops.push(...l?[$j(e,{key:s,stateVar:s},[[o,Uc],[s,`0`]],n.closeOnPick,n.paged,a,Vj(i,n.distribution,a,Qj(a,e,`menu`).paletteOf,r.activeSegment.drawnAt()))]:[]),f}const mM=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function hM(e,t){let n=t[t.length-1],r=mM(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:v_(r??{})}}function gM(e){return{menu:{fn:(t,...n)=>{let{displays:r,options:i}=hM(t,n);return pM(t,r,i,e)},argTypes:[`string`,`value`],arity:{kind:`variadic`},returnType:`T`}}}function _M(e){let{value:t,max:n,width:r,filled:i,empty:a,colourAt:o}=e,s=vM(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 U(t?i:a,{style:l===void 0?void 0:new V({color:l})}))}let l=U.fromFragments(c);return l.end=``,l.overflow=`ignore`,l}function vM(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 yM(e){let t={fn:(()=>{let t=Gj(e,`{{ bgOf }}`);if(t.bg===void 0)throw Error(`{{ bgOf }} is not available while segments.${t.segName}'s own "bg:" is being evaluated — the background is what that template computes. Reach for a palette color there instead, e.g. bg: '{{ darken (color "surface") 1 }}'.`);return t.bg.hex}),argTypes:[],arity:{kind:`exact`},returnType:`string`},n={fn:(()=>Gj(e,`{{ tint }}`).tint.hex),argTypes:[],arity:{kind:`exact`},returnType:`string`},r=Kv(()=>Gj(e,`{{ color }} / {{ ramp }} / {{ gauge }}`).palette),i={fn:((e,t,n,i,a,o,...s)=>{let c=o===void 0?void 0:[o,...bM(s)];return _M({value:e,max:t,width:n,filled:i,empty:a,colourAt:c===void 0?void 0:e=>String(r.ramp.fn(e,...c))})}),argTypes:[`float`,`float`,`int`,`string`,`string`,`string`],arity:{kind:`variadic`},returnType:`T`};return{...r,bgOf:t,tint:n,gauge:i}}function bM(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 xM(e){let t=[],n=[];for(let r of e){if(!r.contains(`
170
+ Tip: every bar carries a settings menu — click it (${Gc} by\n default) for quick actions, preset switching, edit mode, and clickable\n theme/look/style/wrap/padding controls.\n`}async function pD(e){let t=e.includes(`--force`),n=e.filter(e=>e!==`--force`),r=n.length>0?n:[...GE],i=aD();process.platform===`darwin`?sD(i.distPath):process.stdout.write(`Skipping URL handler (cmd-click verbs are macOS-only).
171
+ `),mD(i.binPath,r,t),process.stdout.write(fD());let a=UE(BE,HE(OE,await VE(BE,fetch,`https://registry.npmjs.org`)));process[a.stream].write(a.text)}function mD(e,t,n,i){let a=i??jE(AE(kE(process.env,process.cwd())));r.mkdirSync(c.dirname(a),{recursive:!0});let o={};if(r.existsSync(a))try{o=JSON.parse(r.readFileSync(a,`utf-8`))}catch(e){throw Error(`Could not parse ${a}: ${e instanceof Error?e.message:String(e)}`)}let s=o.statusLine?.command,l=[e,qE(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:JE(e,t)},k(a,JSON.stringify(o,null,2)),process.stdout.write(`Updated ${a}\n`)}function hD(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 gD(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 _D(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 vD(e,t){let n=gD(e);if(n.kind===`owned`&&n.pid===t)try{r.unlinkSync(e)}catch{}}function yD(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 bD(e,t,n,r){let i=xD(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 xD(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 SD(e){let t=!1;function n(){let n=bD(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 CD(e,t=Oe){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 wD(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 TD(e,t=CD){let n=t(e);return n.kind===`start`?n.token:null}const ED=`CC_CANDYBAR_PARENT_PID`;function DD(e){let t=e[ED];if(t===void 0)return{kind:`outlives-nobody`};let n=Number.parseInt(t,10);if(!Number.isInteger(n)||n<=0)throw Error(`${ED} must be a positive integer pid, got ${JSON.stringify(t)}`);return{kind:`anchored`,pid:n}}function OD(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 kD(e){try{return t.kill(e,0),!0}catch(e){return e.code===`EPERM`}}function AD(){let e=Number(process.env.CC_CANDYBAR_DAEMON_CEILING??``);return Number.isInteger(e)&&e>0?e:16}function jD(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 MD(e){try{return r.readdirSync(e).filter(e=>e.endsWith(`.json`)).map(t=>c.join(e,t))}catch{return[]}}function ND(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 PD(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 FD(e){if(!e.isolated)return{decision:jD(!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=jD(!0,PD(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 ID(e,t,n,r){let i=n(e);if(i!==null&&i.pid===t)try{r(e)}catch{}}function LD(e,t={}){return{isolated:!!process.env.CC_CANDYBAR_SOCKET,registryDir:He(),ceiling:AD(),pid:process.pid,startTime:e,isSameLiveProcess:(e,t)=>wD(e,t,{readStartTime:CD,pidAlive:kD}),listFiles:MD,readEntry:ND,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?Ie:e=>{Ie(c.dirname(e)),Ie(e)},...t}}function RD(e){return e<32||e===127||e>=128&&e<=159}function zD(e){let t=``;for(let n of e)t+=RD(n.codePointAt(0)??0)?` `:n;return t.replace(/\s+/g,` `).trim()}function BD(e,t){let n=zD(e),r=``,i=0;for(let e of n){if(i===t)return r.replace(/.$/u,`…`);r+=e,i++}return r}const VD=`\x1B[38;2;255;255;255m`,HD=`\x1B[48;2;200;40;40m`;function UD(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 WD={fg:UD(VD),bg:UD(HD)},GD={fg:UD(`\x1B[38;2;0;0;0m`),bg:UD(`\x1B[48;2;220;160;40m`)},KD={unicode:Ii,ascii:{glyph:`>`,divider:`|`,lead:`<`,tail:`>`}},qD={unicode:{},ascii:{left:`(`,right:`)`}};function JD(e,t,n){switch(e){case`capsule`:return new Hi(qD[t]);case`plain`:return new Ui(n===void 0?{}:{separator:n});case`powerline`:return new zi(KD[t]);default:return e}}const YD=new Map;function XD(e){let t=JSON.stringify([e.style,e.charset,e.separator??null]),n=YD.get(t);if(n!==void 0)return n;let r=JD(e.style,e.charset,e.separator),i=e=>new Oi(`x`,{end:``,overflow:`ignore`,style:new V({bgcolor:e})}),a=e=>new Oi(Ki(new ki(e,r),{colorSystem:null}).replace(/\n$/,``)).cellLength,o=a([i(`#101010`)]),s={chrome:o-1,seam:a([i(`#101010`),i(`#202020`)])-o-1};return YD.set(t,s),s}function ZD(e){return XD(e).chrome}function QD(e){return XD(e).seam}function $D(e,t){if(e.length===0)return``;let n=JD(t.style,t.charset,t.separator),r=t.colorCompatibility,i=t.wrap&&Number.isFinite(t.width)?Ki(new Qi([...e],{joiner:n}),{width:t.width,colorSystem:r}):Ki(new ki([...e],n),{colorSystem:r});if(!i.endsWith(`
172
+ `))throw Error(`renderStripCells: rich-js strip output did not end its last line`);return i.slice(0,-1)}function eO(e){return Math.min(20,e??20)}const tO={heading:`ERROR`,glyph:`⚠`,colors:WD},nO={heading:`WARNING`,glyph:`⚠`,colors:GD},rO={heading:`UPDATE`,glyph:`⬆`,colors:GD};function iO(e,t){return{text:zD(e),link:t}}function aO(e,t,n){let[r,...i]=[oO(e,tO,iE),t,oO(n,nO,aE)].flat();return r===void 0?null:{channels:[r,...i]}}function oO(e,t,n){let r=SE([{verb:n,args:[e]}]),[i,...a]=e.split(/\r\n|\r|\n/).map(e=>iO(e,r)).filter(e=>e.text!==``).map(e=>[e]);return i===void 0?[]:[{severity:t,message:e,lines:[i,...a]}]}function sO(e){return e.channels.map(e=>`${e.severity.heading}\n${e.message}\n`).join(`
173
+ `)}function cO(e,t,n,r){if(t===null)return e;let i=lO(r),a=t.channels.flatMap(e=>uO(e,i)),o=n.failedConfigFile!==null||a.length>r.rowCap,s=a.slice(0,r.rowCap-Number(o)),c=o?[dO(t,n,a.length-s.length,i)]:[],l=[...s,...c].join(`
174
+ `);return e?`${l}\n${e}`:l}function lO(e){return{style:`plain`,separator:``,width:e.width,wrap:!0,padding:0,charset:`unicode`,colorCompatibility:e.colorCompatibility}}function uO(e,t){let n=new V({bgcolor:e.severity.colors.bg,color:e.severity.colors.fg}),r=Lt(Math.max(2,t.width-1)),i=(e,t)=>new Oi(`${e} `,{style:t,end:``,overflow:`ignore`});return e.lines.flatMap((a,o)=>$D([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=>Vt(e,r)).map(e=>i(e,t))})],t).split(`
175
+ `))}function dO(e,t,n,r){let{colors:i}=e.channels[0].severity,{fullText:a,failedConfigFile:o}=t,s=new V({bgcolor:i.bg,color:i.fg}),c=(e,t)=>new Oi(e,{style:t,end:``,overflow:`ignore`}),l=n>0?[c(`${n} more rows · `,s),a.kind===`file`?c(`open full text`,s.withLink(T(a.path).href)):c(`full text unavailable: ${zD(a.reason)}`,s)]:[],u=o===null?[]:[c(`${l.length>0?` · `:``}open `,s),c(zD(o),s.withLink(T(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=Oi.fromFragments([...d,...p]).truncate(r.width);return m.overflow=`ignore`,$D([m],r)}const fO=e=>!e.startsWith(`.`)&&!e.endsWith(`~`);function pO(e,t){return t.isSymbolicLink()?Buffer.from(r.readlinkSync(e)):r.readFileSync(e)}function mO(e,t){return r.readdirSync(t).filter(fO).sort().flatMap(n=>{let i=c.join(t,n),a=r.lstatSync(i,{throwIfNoEntry:!1});return a===void 0?[]:a.isDirectory()?mO(e,i):[[c.relative(e,i).split(c.sep).join(`/`),pO(i,a)]]})}function hO(e){let t=E.createHash(`sha256`);for(let[n,r]of mO(e,e))t.update(n).update(`\0`).update(r).update(`\0`);return t.digest(`hex`)}const gO=e=>e.slice(0,7);function _O(e){return c.dirname(c.dirname(e))}function vO(){return{version:OE,digest:`e2c27076810a163878e224edd3d60dffc8e7eaad3106fd88d4b449ba0118434e`}}function yO(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 bO(e,t){try{let n=_O(ie(e)),i=c.join(n,`src`);if(!r.existsSync(i))return{kind:`not-source-checkout`};let a=t(),o=hO(i);return o===a.digest?{kind:`current`,root:n,stamp:a}:{kind:`stale`,root:n,source:{version:yO(n),digest:o},running:a}}catch(e){return{kind:`unchecked`,reason:e.message}}}var $=class extends Error{constructor(e){super(e),this.name=`BadVerbArgs`}};function xO(e){return e.op===`remove`?`remove:${e.target}`:`insert:${e.segment}:${e.anchor}:${e.relation}`}function SO(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 CO(e,t,n){let r=As(e,new Set(n.map(ks).filter(e=>e.includes(t)).flat()));return r===e?{seg:e}:{seg:e,id:r}}const wO=/^-?\d+$/;function TO(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 EO(e){return t=>{if(!t)return{ok:!1,reason:`${e} value is required`};if(!wO.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 DO(e,t,n){return r=>r?wO.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 OO(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=>!wO.test(e));if(o.length>0)throw Error(`${n} action table: key "${e}" is an integer spec (a paged cursor or a bounded value) but a click writes non-integer value(s) to it (${o.join(`, `)}). A ${n} key has one key shape — point that click at a distinct key, or write an integer.`);if(i&&r.length>0)throw Error(`${n} action table: key "${e}" is declared as both a paged cursor (int) and a bounded value (range) — a ${n} key has one key shape. Use distinct keys.`);if(r.length>0){let t=Math.min(...r.map(e=>e.min)),i=Math.max(...r.map(e=>e.max)),o=a.filter(e=>{let n=parseInt(e,10);return n<t||n>i});if(o.length>0)throw Error(`${n} action table: key "${e}" is a bounded range [${t},${i}] but a click writes out-of-range value(s) to it (${o.join(`, `)}). The range gate would clamp them, storing a different value than the click renders — write an in-range integer, or point that click at a distinct key.`);return{kind:`range`,min:t,max:i}}return{kind:`int`}}function kO(e){return e===`config`?`set-config`:`set-state`}function AO(e,t,n){return t.kind===`int`?EO(`menu page "${e}"`):t.kind===`range`?DO(t.min,t.max,`${n} stepper "${e}"`):TO(t.allowed,`${n} "${e}"`,kO(n))}function jO(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:OO(e,n,t)}))}function MO(e,t=`state`){let n=new Map(Object.entries(e).map(([e,t])=>[e,{validator:t,permanent:!0}]));function r(){let e=[];for(let[t,r]of n)r.permanent&&e.push(t);return e}return{register(e,i){if(!e)throw Error(`register: key is required`);if(e.includes(`/`))throw Error(`register: key "${e}" contains "/" — the wire shape splits on "/" so a slash-bearing key cannot be addressed. Use a slash-free key.`);let a=n.get(e);if(a){if(a.permanent)throw Error(`register: key "${e}" is a built-in ${t} key and cannot be re-claimed (built-in keys: ${[...r()].join(`, `)})`);let n=OO(e,[...a.specs,i],t);a.specs.push(i),a.merged=n,a.validator=AO(e,n,t)}else{let r=OO(e,[i],t);n.set(e,{permanent:!1,specs:[i],merged:r,validator:AO(e,r,t)})}let o=!0;return()=>{if(!o)return;o=!1;let r=n.get(e);if(!r||r.permanent)return;let a=r.specs.indexOf(i);a>=0&&r.specs.splice(a,1),r.specs.length===0?n.delete(e):(r.merged=OO(e,r.specs,t),r.validator=AO(e,r.merged,t))}},validate(e,r){let i=n.get(e);return i?i.validator(r):{ok:!1,reason:`unknown ${t} key "${e}" (have: ${[...n.keys()].join(`, `)})`}},listKeys(){return[...n.keys()]},listBaselineKeys(){return r()},rangeParamsFor(e){let t=n.get(e);if(!t||t.permanent||t.merged.kind!==`range`)return null;let{min:r,max:i}=t.merged;return{min:r,max:i}}}}const NO=MO({},`config`);function PO(){return NO.listKeys()}function FO(e,t){return NO.validate(e,t)}function IO(e){return NO.rangeParamsFor(e)}function LO(e,t){return`persist`in e?`to`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:[e.to]}}]:`from`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:Ub(e.from,t).members}}]:`cycle`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:e.cycle}}]:`removeSegment`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:[xO({op:`remove`,target:e.removeSegment})]}}]:`insertSegment`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:[xO({op:`insert`,segment:e.insertSegment,anchor:e.anchor,relation:e.relation})]}}]:`insertSegmentFrom`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:Ub(e.insertSegmentFrom,t).members.map(t=>xO({op:`insert`,segment:t,anchor:e.anchor,relation:e.relation}))}}]:[{key:e.persist,spec:{kind:`range`,min:e.min,max:e.max}}]:[]}function RO(e,t){let n=Al(e).get(t);return n===void 0?null:String(n)}function zO(e){let t=new Set;for(let n of Object.values(e.actions)){`reset`in n&&t.add(n.reset);let e=`persist`in n?Qb(n.persist):null;e?.scope===`preset-root`&&t.add(Xb(e.preset))}return[...t].map(e=>({key:e,spec:{kind:`allow-list`,allowed:[]}}))}function BO(e){let t=new Map([...Vb(e),...gx(e)]);return[...zO(e),...Object.values(e.actions).flatMap(e=>LO(e,t))]}function VO(e){return jO(BO(e),`config`)}function HO(e,t){return NO.register(e,t)}const UO=Array.from({length:10},(e,t)=>(t+1)*1e5),WO=UO[0],GO=UO[UO.length-1];function KO(e){let t;try{t=PE(e)}catch(e){return X(e instanceof Error?e.message:String(e))}let n=t.autoCompactWindow;return n===void 0?J(`auto`):typeof n==`number`&&Number.isInteger(n)&&n>=WO&&n<=GO?J(n):X(`${e}: autoCompactWindow is ${JSON.stringify(n)}, not a window /autocompact accepts (${WO}–${GO} tokens)`)}function qO(e,t){let n=Math.min(t??GO,GO),r=e===`auto`?n:Math.min(e,n);return{window:e===`auto`?0:e,applied:e===`auto`?0:r,lower:UO.filter(e=>e<r).at(-1)??0,higher:UO.find(e=>e>r&&e<=n)??0}}const JO=Qx(`commands.`),YO=`trimPrefix "/" (trimPrefix .project_dir .current_dir)`,XO=`{{ \$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 (${YO}) (basename .project_dir) (ne (${YO}) "") }}{{ end }}{{ end }}{{ abbreviatePath \$dir }}`,ZO={min:0,max:100,step:5},QO={warnAt:{label:`warning at %`,domain:ZO,default:50},errorAt:{label:`error at %`,domain:{...ZO,atLeast:`warnAt`},default:80}};function $O(e){return{budget:{label:`budget $`,domain:{min:0,max:1e4,step:5},default:e},warnAt:{label:`warning at %`,domain:ZO,default:80}}}const ek={globals:{palette:`tokyo-night`},variables:{...JO.variables,...yb,current_dir:{kind:`input`,path:`workspace.current_dir`,default:`?`},"model.display_name":{kind:`input`,path:`model.display_name`,default:``},version:{kind:`input`,path:`version`,default:``},home:{kind:`input`,path:`home`,default:``},"tmux.session":{kind:`input`,path:`tmux.session`,default:``},"host.name":{kind:`input`,path:`host.name`,default:``},"host.user":{kind:`input`,path:`host.user`,default:``},"host.ssh":{kind:`input`,path:`host.ssh`,type:`boolean`,default:!1},"git.repoName":{kind:`input`,path:`git.repoName`,default:``},"git.branch":{kind:`input`,path:`git.branch`,default:``},"git.sha":{kind:`input`,path:`git.sha`,default:``},"git.ahead":{kind:`input`,path:`git.ahead`,type:`number`,default:0},"git.behind":{kind:`input`,path:`git.behind`,type:`number`,default:0},"git.staged":{kind:`input`,path:`git.staged`,type:`number`,default:0},"git.unstaged":{kind:`input`,path:`git.unstaged`,type:`number`,default:0},"git.untracked":{kind:`input`,path:`git.untracked`,type:`number`,default:0},"git.conflicts":{kind:`input`,path:`git.conflicts`,type:`number`,default:0},"git.upstream":{kind:`input`,path:`git.upstream`,default:``},"git.stash":{kind:`input`,path:`git.stash`,type:`number`,default:0},"git.status":{kind:`input`,path:`git.status`,default:`clean`},"git.operation":{kind:`input`,path:`git.operation`,default:``},"git.timeSinceCommit":{kind:`input`,path:`git.timeSinceCommit`,type:`number`,default:0},"git.color.branch":{kind:`literal`,value:`primary`},"git.color.staged":{kind:`literal`,value:`success`},"git.color.unstaged":{kind:`literal`,value:`warning`},"git.color.untracked":{kind:`literal`,value:`accent`},"git.color.conflicts":{kind:`literal`,value:`error`},"git.color.ahead":{kind:`literal`,value:`success`},"git.color.behind":{kind:`literal`,value:`warning`},"git.color.stash":{kind:`literal`,value:`accent`},"git.detail":{kind:`state`,key:`git-detail`,default:`collapsed`},"git.prNumber":{kind:`input`,path:`git.prNumber`,type:`number`,default:0},"git.prState":{kind:`input`,path:`git.prState`,default:``},"git.prUrl":{kind:`input`,path:`git.prUrl`,default:``},"git.prError":{kind:`input`,path:`git.prError`,default:``},"cache.expiresAt":{kind:`input`,path:`cache.expiresAt`,type:`number`,default:0},"session.cost":{kind:`input`,path:`session.cost`,type:`number`,default:0},"session.tokens":{kind:`input`,path:`session.tokens`,type:`number`,default:0},"today.cost":{kind:`input`,path:`today.cost`,type:`number`,default:0},"today.tokens":{kind:`input`,path:`today.tokens`,type:`number`,default:0},"block.nativeUtilization":{kind:`input`,path:`block.nativeUtilization`,type:`number`,default:0},"block.resetsAt":{kind:`input`,path:`block.resetsAt`,type:`number`,default:0},"weekly.percentage":{kind:`input`,path:`weekly.percentage`,type:`number`,default:0},"weekly.resetsAt":{kind:`input`,path:`weekly.resetsAt`,type:`number`,default:0},"burn.costPerHour":{kind:`input`,path:`burn.costPerHour`,type:`number`,default:-1},"block.etaMinutes":{kind:`input`,path:`block.etaMinutes`,type:`number`,default:-1},"weekly.etaMinutes":{kind:`input`,path:`weekly.etaMinutes`,type:`number`,default:-1},"speed.input":{kind:`input`,path:`speed.input`,type:`number`,default:-1},"speed.output":{kind:`input`,path:`speed.output`,type:`number`,default:-1},"speed.total":{kind:`input`,path:`speed.total`,type:`number`,default:-1},"speed.history":{kind:`input`,path:`speed.history`,type:`string`,default:``},"context.totalTokens":{kind:`input`,path:`context.totalTokens`,type:`number`,default:0},"context.contextLeft":{kind:`input`,path:`context.contextLeft`,type:`number`,default:100},"memento.ceiling":{kind:`input`,path:`memento.ceiling`,type:`number`,default:-1},"memento.off":{kind:`input`,path:`memento.off`,type:`boolean`,default:!1},"memento.session":{kind:`input`,path:`memento.session`,default:``},"memento.error":{kind:`input`,path:`memento.error`,default:``},"autocompact.window":{kind:`input`,path:`autocompact.window`,type:`number`,default:-1},...Object.fromEntries([`applied`,`lower`,`higher`].map(e=>[`autocompact.${e}`,{kind:`input`,path:`autocompact.${e}`,type:`number`,default:0}])),"autocompact.error":{kind:`input`,path:`autocompact.error`,default:``},"metrics.lastResponseTime":{kind:`input`,path:`metrics.lastResponseTime`,type:`number`,default:0},"metrics.responseTime":{kind:`input`,path:`metrics.responseTime`,type:`number`,default:0},"metrics.sessionDuration":{kind:`input`,path:`metrics.sessionDuration`,type:`number`,default:0},"metrics.messageCount":{kind:`input`,path:`metrics.messageCount`,type:`number`,default:0},"metrics.linesAdded":{kind:`input`,path:`metrics.linesAdded`,type:`number`,default:0},"metrics.linesRemoved":{kind:`input`,path:`metrics.linesRemoved`,type:`number`,default:0},"activity.command":{kind:`input`,path:`activity.command`,type:`string`,default:``},"activity.todo.total":{kind:`input`,path:`activity.todo.total`,type:`number`,default:0},"activity.todo.completed":{kind:`input`,path:`activity.todo.completed`,type:`number`,default:0},"activity.todo.position":{kind:`input`,path:`activity.todo.position`,type:`number`,default:0},"activity.todo.active":{kind:`input`,path:`activity.todo.active`,type:`string`,default:``},"activity.tool.running":{kind:`input`,path:`activity.tool.running`,type:`string`,default:``},"activity.tool.done":{kind:`input`,path:`activity.tool.done`,type:`string`,default:``}},segments:{directory:{description:"The current directory, shortened fish-style — `~` under home, project-relative inside the project.",template:XO},model:{description:`The active model's display name.`,template:`✱ {{ formatModelName .model.display_name }}`,when:`{{ ne .model.display_name "" }}`},sessionId:{description:`The session id, truncated to 8 characters.`,template:`⌗{{ trunc 8 .session.id }}`,when:`{{ ne .session.id "" }}`},version:{description:`The Claude Code version reported in the hook payload.`,template:`◈ v{{ .version }}`,when:`{{ ne .version "" }}`},tmux:{description:`The tmux session name; hidden when not inside tmux.`,template:`tmux:{{ .tmux.session | default "none" }}`,when:`{{ ne .tmux.session "" }}`},host:{description:`user@host on a warning background, shown only over SSH.`,template:`⇄ {{ .host.user | default "?" }}@{{ .host.name | default "?" }}`,bg:`warning`,when:`{{ .host.ssh }}`},gitaculous:{description:`The git state: a summary (branch, ahead/behind, S/U/? flags) that the arrow at its right edge expands to every fact — repo, in-progress operation, sha, upstream ±, stash count, time since the last commit.`,template:`{{ if eq .git.detail "expanded" }}{{ template "gitExpanded" . }}{{ else }}{{ template "gitCollapsed" . }}{{ end }} {{ action "gitDetail" "▸" "◂" }}`,fg:`{{ readableOn (mix (color "foreground") (bgOf) 60) (bgOf) 3 }}`,when:`{{ ne .git.branch "" }}`,settings:{aheadBehind:{label:`ahead/behind`,domain:`bool`,default:!0},flags:{label:`dirty flags`,domain:`bool`,default:!0},operation:{label:`operation`,domain:`bool`,default:!0},repo:{label:`repo name`,domain:`bool`,default:!0},sha:{label:`commit hash`,domain:`bool`,default:!0},stash:{label:`stash`,domain:`bool`,default:!0},upstream:{label:`upstream`,domain:`bool`,default:!0},age:{label:`time since commit`,domain:`bool`,default:!0}}},gitPr:{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:Ux(``).template},commands:{description:`Type /compact, /model or /clear into this session; /clear asks for a second click.`,template:JO.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" .settings.budget "warn" .settings.warnAt) }}`,settings:$O(0)},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" .settings.budget "warn" .settings.warnAt) }}`,settings:$O(50)},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) .settings.warnAt "warning" .settings.errorAt "error" }}`,settings:QO,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) .settings.warnAt "warning" .settings.errorAt "error" }}`,settings:QO,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" .settings.errorWithin "warning" .settings.warnWithin (tint) }}`,settings:{errorWithin:{label:`error within (min)`,domain:{min:0,max:300,step:5},default:30},warnWithin:{label:`warning within (min)`,domain:{min:0,max:300,step:5,atLeast:`errorWithin`},default:60}},when:`{{ or (gt .block.resetsAt 0) (gt .weekly.resetsAt 0) }}`},speed:{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) ${wa} }}`,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 }}`},ceiling:{description:`The memento plugin's context ceiling for this session: − and + move it by 100K, ∞ lifts it, ↺ drops this session's own setting.`,template:`{{ if ne .memento.error "" }}⌈ ⚠ {{ .memento.error }} {{ action "ceiling.clear" "↺" }}{{ else }}⌈ {{ if .memento.off }}off{{ else }}{{ template "formatTokenCount" .memento.ceiling }} {{ action "ceiling.lower" "−" }} {{ action "ceiling.raise" "+" }} {{ action "ceiling.off" "∞" }}{{ end }}{{ if ne .memento.session "" }} {{ action "ceiling.clear" "↺" }}{{ end }}{{ end }}`,bg:`{{ if ne .memento.error "" }}{{ color "error" }}{{ else }}{{ tint }}{{ end }}`,when:`{{ or (ge .memento.ceiling 0) (ne .memento.error "") }}`},autocompact:{description:`Claude Code's auto-compact window: − and + move it by 100K, ↺ returns it to auto. Clicks type /autocompact into this session.`,template:`{{ if ne .autocompact.error "" }}⇲ ⚠ {{ .autocompact.error }}{{ else }}⇲ {{ if eq .autocompact.window 0 }}auto{{ else }}{{ template "formatTokenCount" .autocompact.applied }}{{ end }}{{ if gt .autocompact.lower 0 }} {{ action (printf "autocompact.%d" .autocompact.lower) "−" }}{{ end }}{{ if gt .autocompact.higher 0 }} {{ action (printf "autocompact.%d" .autocompact.higher) "+" }}{{ end }}{{ if gt .autocompact.window 0 }} {{ action "autocompact.auto" "↺" }}{{ end }}{{ end }}`,bg:`{{ if ne .autocompact.error "" }}{{ color "error" }}{{ else }}{{ tint }}{{ end }}`,when:`{{ or (ge .autocompact.window 0) (ne .autocompact.error "") }}`},metrics:{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:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`context`},{kind:`segment`,name:`ceiling`},{kind:`segment`,name:`autocompact`}]},{kind:`segment`,name:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`activity`}]}}},actions:{...Ux(``).actions,...JO.actions,copyDir:{copy:`{{ .current_dir }}`},stepTheme:{set:`theme`,from:`themes`},gitDetail:{set:`git-detail`,cycle:[`collapsed`,`expanded`]},"ceiling.raise":{ceiling:`set`,to:`+100_000`},"ceiling.lower":{ceiling:`set`,to:`-100_000`},"ceiling.off":{ceiling:`set`,to:`off`},"ceiling.clear":{ceiling:`clear`},"autocompact.auto":{slash:Yx(`/autocompact auto`)},...Object.fromEntries(UO.map(e=>[`autocompact.${e}`,{slash:Yx(`/autocompact ${e}`)}]))},looks:{none:{hueShift:0,chromaScale:1,lightnessScale:1,lightnessShift:0},vivid:{hueShift:0,chromaScale:1.35,lightnessScale:1,lightnessShift:0},muted:{hueShift:0,chromaScale:.55,lightnessScale:1,lightnessShift:0},dim:{hueShift:0,chromaScale:1,lightnessScale:.85,lightnessShift:0},bright:{hueShift:0,chromaScale:1,lightnessScale:1,lightnessShift:.08},inverted:{hueShift:0,chromaScale:1,lightnessScale:-1,lightnessShift:1}},presets:{default:{},compact:{root:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`segment`,name:`context`}]},globals:{padding:0}},verbose:{root:{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`segment`,name:`gitPr`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`context`},{kind:`segment`,name:`ceiling`},{kind:`segment`,name:`autocompact`}]},{kind:`segment`,name:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`burnrate`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`speed`},{kind:`segment`,name:`tokenSparkline`}]}]}},zen:{root:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`directory`},{kind:`segment`,name:`context`}]},globals:{style:`plain`,look:`dim`}},git:{root:{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`host`},{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`segment`,name:`gitPr`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`segment`,name:`context`},{kind:`segment`,name:`activity`}]}]}},usage:{root:{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`context`},{kind:`segment`,name:`ceiling`},{kind:`segment`,name:`autocompact`}]},{kind:`segment`,name:`cacheTimer`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`burnrate`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`session`},{kind:`segment`,name:`today`},{kind:`segment`,name:`speed`},{kind:`segment`,name:`tokenSparkline`}]}]}},dense:{root:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`host`},{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`segment`,name:`model`},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`context`},{kind:`segment`,name:`ceiling`},{kind:`segment`,name:`autocompact`}]},{kind:`segment`,name:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`session`},{kind:`segment`,name:`activity`}]},globals:{padding:0}}},editGlobals:{style:`plain`,default_separator:` | `},helpers:{gitPaint:`{{ fg (readableOn (color .color) (bgOf) ${wa}) .text }}`,gitCollapsed:`{{ template "gitBranch" . }}{{ template "gitAheadBehind" . }}{{ template "gitFlags" . }}`,gitExpanded:`(git){{ template "gitRepo" . }}{{ template "gitOperation" . }}{{ template "gitSha" . }}{{ template "gitFlags" . }} {{ template "gitBranch" . }}{{ template "gitUpstream" . }}{{ template "gitStash" . }}{{ template "gitAge" . }}`,gitBranch:`⎇ {{ template "gitPaint" (dict "color" .git.color.branch "text" .git.branch) }}`,gitRepo:`{{ if and .settings.repo (ne .git.repoName "") }} {{ .git.repoName }}{{ end }}`,gitOperation:`{{ if and .settings.operation (ne .git.operation "") }} [{{ .git.operation }}]{{ end }}`,gitSha:`{{ if and .settings.sha (ne .git.sha "") }} {{ .git.sha }}{{ end }}`,gitFlags:`{{ if and .settings.flags (or (gt .git.staged 0) (gt .git.unstaged 0) (gt .git.untracked 0) (gt .git.conflicts 0)) }} {{ if gt .git.staged 0 }}{{ template "gitPaint" (dict "color" .git.color.staged "text" "S") }}{{ end }}{{ if gt .git.unstaged 0 }}{{ template "gitPaint" (dict "color" .git.color.unstaged "text" "U") }}{{ end }}{{ if gt .git.untracked 0 }}{{ template "gitPaint" (dict "color" .git.color.untracked "text" "?") }}{{ end }}{{ if gt .git.conflicts 0 }}{{ template "gitPaint" (dict "color" .git.color.conflicts "text" (printf "!%v" .git.conflicts)) }}{{ end }}{{ end }}`,gitAheadBehind:`{{ if and .settings.aheadBehind (or (gt .git.ahead 0) (gt .git.behind 0)) }} {{ if gt .git.ahead 0 }}{{ template "gitPaint" (dict "color" .git.color.ahead "text" (printf "+%v" .git.ahead)) }}{{ end }}{{ if and (gt .git.ahead 0) (gt .git.behind 0) }}/{{ end }}{{ if gt .git.behind 0 }}{{ template "gitPaint" (dict "color" .git.color.behind "text" (printf "-%v" .git.behind)) }}{{ end }}{{ end }}`,gitUpstream:`{{ if and .settings.upstream (ne .git.upstream "") }} [{{ .git.upstream }}{{ template "gitAheadBehind" . }}]{{ end }}`,gitStash:`{{ if and .settings.stash (gt .git.stash 0) }} {{ template "gitPaint" (dict "color" .git.color.stash "text" (printf "(%v stashed)" .git.stash)) }}{{ end }}`,gitAge:`{{ if and .settings.age (gt .git.timeSinceCommit 0) }} ◷ {{ template "formatTimeSince" .git.timeSinceCommit }}{{ end }}`,formatCost:'{{ if lt . 0.01 }}<$0.01{{ else }}${{ printf "%.2f" . }}{{ end }}',formatTokenCount:`{{ if ge . 1000000 }}{{ printf "%.1f" (divf . 1000000) }}M{{ else if ge . 1000 }}{{ printf "%.1f" (divf . 1000) }}K{{ else }}{{ . }}{{ end }}`,formatTokens:`{{ template "formatTokenCount" . }} tokens`,formatToolTally:`{{ $names := splitList "," . }}{{ range $i, $pair := $names }}{{ if lt $i 2 }}{{ if $i }} {{ end }}{{ $kv := splitList ":" $pair }}{{ index $kv 0 }}{{ if ne (index $kv 1) "1" }}×{{ index $kv 1 }}{{ end }}{{ end }}{{ end }}{{ if gt (len $names) 2 }} +{{ sub (len $names) 2 }}{{ end }}`,formatRate:`{{ if lt . 0 }}—/hr{{ else }}{{ template "formatCost" . }}/hr{{ end }}`,formatEta:`{{ if lt . 0 }}—{{ else }}{{ template "formatLongTimeRemaining" . }}{{ end }}`,formatSpeed:`{{ if lt . 0 }}—{{ else }}{{ template "formatTokenCount" (round .) }}/s{{ end }}`,formatTokenBreakdown:`{{ $first := true }}{{ if gt .input 0 }}{{ template "formatTokenCount" .input }} in{{ $first = false }}{{ end }}{{ if gt .output 0 }}{{ if not $first }} + {{ end }}{{ template "formatTokenCount" .output }} out{{ $first = false }}{{ end }}{{ if or (gt .cacheCreation 0) (gt .cacheRead 0) }}{{ if not $first }} + {{ end }}{{ template "formatTokenCount" (add .cacheCreation .cacheRead) }} cached{{ $first = false }}{{ end }}{{ if $first }}0 tokens{{ end }}`,budgetStatus:`{{ if or (le .budget 0) (lt .cost 0) }}{{ else }}{{ $pct := minf 100 (mulf (divf .cost .budget) 100) }}{{ $p := printf "%.0f%%" $pct }}{{ if ge $pct .warn }} !{{ $p }}{{ else }}{{ if ge $pct 50 }} +{{ $p }}{{ else }} {{ $p }}{{ end }}{{ end }}{{ end }}`,formatTimeSince:`{{ if lt . 60 }}{{ . }}s{{ else if lt . 3600 }}{{ div . 60 }}m{{ else if lt . 86400 }}{{ div . 3600 }}h{{ else if lt . 604800 }}{{ div . 86400 }}d{{ else }}{{ div . 604800 }}w{{ end }}`,formatDuration:`{{ if lt . 60 }}{{ printf "%.0f" . }}s{{ else if lt . 3600 }}{{ printf "%.0f" (divf . 60) }}m{{ else if lt . 86400 }}{{ printf "%.1f" (divf . 3600) }}h{{ else }}{{ printf "%.1f" (divf . 86400) }}d{{ end }}`,formatResponseTime:`{{ if lt . 60 }}{{ printf "%.1f" . }}s{{ else }}{{ printf "%.1f" (divf . 60) }}m{{ end }}`,formatLongTimeRemaining:`{{ if ge . 1440 }}{{ $d := div . 1440 }}{{ $h := div (mod . 1440) 60 }}{{ if gt $h 0 }}{{ $d }}d {{ $h }}h{{ else }}{{ $d }}d{{ end }}{{ else if ge . 60 }}{{ $h := div . 60 }}{{ $m := mod . 60 }}{{ if gt $m 0 }}{{ $h }}h {{ $m }}m{{ else }}{{ $h }}h{{ end }}{{ else }}{{ . }}m{{ end }}`,formatResetCountdown:`{{ template "formatLongTimeRemaining" (add 1 (minutesUntilReset .)) }}`}},tk=new Set([ek.globals.palette,...Object.values(ek.segments).map(e=>e.palette)].filter(e=>e!==void 0)),nk=Bc(Lw(`<default>`,JSON.stringify(ek),tk),ek),rk=x_(nk.presets);function ik(e){return rk.includes(e)}function ak(e){if(!e)return 0;try{return o(e).mtimeMs}catch{return 0}}const ok=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 sk(e){return((...t)=>ok.run(()=>e(...t)))}const ck=sk(S),lk=sk(x),uk=sk(C);async function dk(e,t){return ok.run(async()=>{let n=null;try{n=await b(e,`r`);let{size:r,mtimeMs:i,ino:a}=await n.stat(),o=t!==void 0&&(a!==t.ino||r<t.offset),s=o||t===void 0?0:t.offset;if(s>=r)return J({buf:Buffer.alloc(0),start:s,size:r,mtimeMs:i,ino:a,reset:o});let c=Buffer.alloc(r-s),l=0;for(;l<c.length;){let{bytesRead:e}=await n.read(c,l,c.length-l,s+l);if(e===0)break;l+=e}return J({buf:l===c.length?c:c.subarray(0,l),start:s,size:r,mtimeMs:i,ino:a,reset:o})}catch(t){return t.code===`ENOENT`?Y:X(`readAppended ${e}: ${t instanceof Error?t.message:String(t)}`)}finally{await n?.close().catch(e=>{O(`transcript-fs: close failed: ${e instanceof Error?e.message:String(e)}`)})}})}async function fk(e,t){return ok.run(async()=>{let n=null;try{n=await b(e,`r`);let{size:r}=await n.stat(),i=Math.max(0,r-t),a=Buffer.alloc(r-i),o=0;for(;o<a.length;){let{bytesRead:e}=await n.read(a,o,a.length-o,i+o);if(e===0)break;o+=e}return J({buf:o===a.length?a:a.subarray(0,o),fromStart:i===0})}catch(t){return t.code===`ENOENT`?Y:X(`readTail ${e}: ${t instanceof Error?t.message:String(t)}`)}finally{await n?.close().catch(e=>{O(`transcript-fs: close failed: ${e instanceof Error?e.message:String(e)}`)})}})}const pk=/"(?:cache_read_input_tokens|cache_creation_input_tokens)":[1-9]/;function mk(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 hk(e){let t=await gk(e);return t.kind===`ok`?J(Math.floor((t.value+36e5)/1e3)):t}async function gk(e){for(let t of[65536,1048576]){let n=await fk(e,t);if(n.kind!==`ok`)return n;let r=_k(n.value.buf,n.value.fromStart);if(r!=null)return J(r);if(n.value.fromStart)return Y}return Y}function _k(e,t){let n=e.toString(`utf8`).split(`
176
+ `),r=+!t;for(let e=n.length-1;e>=r;e--){let t=n[e];if(!t||!pk.test(t))continue;let r=mk(t);if(r!=null)return r}return null}function vk(e,t,n){let r=S_(t(`preset`),e.globals.preset,e.presets),i=T_(e,r),a=t(`edit.mode`)===`arrange`?e.editGlobals:{};return{preset:r,presetCustomized:n(r),theme:Fb(a.palette,t(`theme`),i.palette),look:ao(a.look,t(`look`),i.look,e.looks),style:co(a.style,t(`style`),i.style),progression:xo(a.progression,t(`progression`),i.progression),separator:a.default_separator??i.default_separator,autoWrap:Oo(a.autoWrap,t(`autoWrap`),i.autoWrap),padding:Ao(a.padding,t(`padding`),i.padding),charset:po(a.charset,t(`charset`),i.charset),updateNotice:ko(a.updateNotice,t(`updateNotice`),i.updateNotice),colorCompatibility:_o(a.colorCompatibility,t(`colorCompatibility`),i.colorCompatibility)}}function yk(e,t){return{style:e.style,separator:e.separator,colorCompatibility:e.colorCompatibility,wrap:e.autoWrap,padding:e.padding,charset:e.charset,width:t}}function bk(e){return{theme:e.theme,look:e.look,preset:e.preset,progression:e.progression}}function xk(e){return{preset:{effective:e.preset,customized:e.presetCustomized,bundled:ik(e.preset)},style:{effective:e.style},progression:{effective:e.progression},charset:{effective:e.charset},colorCompatibility:{effective:e.colorCompatibility},autoWrap:{effective:e.autoWrap},padding:{effective:e.padding},updateNotice:{effective:e.updateNotice}}}const Sk=10*1e3;function Ck(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 wk(e,t){if(!(t<60))return e*3600/t}function Tk(e,t,n,r){let i=r-t;if(i<50||i>Sk)return;let a=n-e;if(!(a<=0))return a*1e3/i}function Ek(e){let{prev:t,cur:n}=e;if(t===void 0)return;let r=Tk(t.input,t.atMs,n.input,n.atMs),i=Tk(t.output,t.atMs,n.output,n.atMs),a=Tk(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 Dk(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>Sk)continue;let o=Tk(r.total,r.atMs,i.total,i.atMs);n.push(o??0)}if(n.length!==0)return n.join(`,`)}function Ok(e){let t=e.indexOf(`.`);return t<0?e:e.slice(0,t)}function kk(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`,()=>Ok(p.hostname())),i=n(`user`,()=>p.userInfo().username);return{host:{...r!==void 0&&{name:r},...i!==void 0&&{user:i},...e.ssh!==void 0&&{ssh:e.ssh}},failures:t}}function Ak(e,t){let n=new Map;for(let[t,r]of Object.entries(e.variables))n.set(t,r);for(let[t,r]of Object.entries(e.segments))if(r.vars)for(let[e,i]of Object.entries(r.vars))n.set(`${t}.${e}`,i);let r=[],i=new Set,a=t=>sv(t,e.helpers).keys(),o=T_(e,t);for(let e of Qa){let t=o[e];if($a(t))for(let e of a(t))r.push(e)}for(let n of Ms(w_(e,t).node)){if(n.when)for(let e of a(n.when))r.push(e);if(n.kind!==`segment`)continue;let t=e.segments[n.name];if(t){for(let e of[t.template,t.when,t.bg,t.fg])if(e)for(let t of a(e))r.push(t)}}let s=new Set;for(;r.length>0;){let e=r.pop();for(let t of Mk(n,e)){if(i.has(t))continue;i.add(t);let e=n.get(t);if(e){if(e.kind===`input`)s.add(e.path);else if(e.kind===`template`)for(let t of a(e.template))r.push(t)}}}return s}function jk(e){let t=new Map;return n=>{let r=t.get(n);if(r!==void 0)return r;let i=Ak(e,n);return t.set(n,i),i}}function Mk(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 Nk(e,t){for(let n of e)if(n===t||n.startsWith(t+`.`))return!0;return!1}function Pk(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 Fk(e,t,n,r,i,a,o){let s=e=>Nk(r,e),c=(t.clock??(()=>new Date))().getTime(),l=(e,t,n)=>t?n().catch(t=>X(`${e}: ${String(t)}`)):Promise.resolve(Y),[u,d,f,p,m,h,g,_,v,y,b]=await Promise.all([l(`git`,s(`git`),()=>t.gitProvider.getGitInfo(n??e.workspace?.current_dir,Pk(r),e.workspace?.project_dir)),l(`session`,s(`session.cost`)||s(`session.tokens`)||s(`burn`),()=>t.usageStore.getUsageInfo(e.session_id,e)),l(`today`,s(`today`),()=>t.usageStore.getTodayInfo(e)),l(`context`,s(`context`)||s(`autocompact`),()=>t.contextProvider.getContextInfo(e)),l(`metrics`,s(`metrics`)||s(`burn`),()=>t.metricsProvider.getMetricsInfo(e.session_id,e)),l(`activity`,s(`activity`),()=>t.activityProvider.getActivityInfo(e.session_id,e)),l(`tmux`,s(`tmux`),()=>t.tmuxService.getSessionId()),l(`cache`,s(`cache`),()=>hk(e.transcript_path)),l(`speed`,s(`speed`),()=>t.usageStore.observeSpeed(e.session_id,e.transcript_path,c)),l(`memento`,s(`memento`),()=>t.mementoProvider.getCeiling({sessionId:e.session_id,projectDir:e.workspace?.project_dir??``,cwd:n??e.workspace?.current_dir??``})),l(`autocompact`,s(`autocompact`),()=>Promise.resolve(t.autoCompact(jE(AE(a.claudeConfigDir)))))]),x=[],S=e=>{if(e.kind===`failed`){x.push(e.reason);return}return e.kind===`ok`?e.value:void 0},C=Uk(u);x.push(...C.failures);let ee=kk(a);x.push(...ee.failures);let te=S(d),ne=S(f),re=S(p),w=S(m),ie=S(h),T=S(g),E=S(_),ae=Rk(y);y.kind===`failed`&&x.push(`memento: ${y.reason}`);let oe=Ik(b,re?.maxTokens);b.kind===`failed`&&x.push(`autocompact: ${b.reason}`);for(let e of x)t.log(`warn`,`provider fetch failed: ${e}`);let D=e.rate_limits?.five_hour,se=e.rate_limits?.seven_day,ce=D?Ck(D.used_percentage,D.resets_at,18e6,c):void 0,le=se?Ck(se.used_percentage,se.resets_at,6048e5,c):void 0,ue=te?.session.cost,de=w?.sessionDuration,fe=s(`burn`)&&ue!=null&&de!=null?wk(ue,de):void 0,pe=S(v),me=pe===void 0?void 0:Ek(pe),he=pe===void 0?void 0:Dk(pe),ge=me!==void 0||he!==void 0?{...me,...he!==void 0&&{history:he}}:void 0,O=Hk(process.env.HOME??process.env.USERPROFILE),_e=e.workspace?{...e.workspace,current_dir:Hk(e.workspace.current_dir)??``,project_dir:Hk(e.workspace.project_dir)??``}:e.workspace,ve=te===void 0?void 0:Vk({cost:te.session.cost,tokens:te.session.tokens}),ye=ne===void 0?void 0:{cost:ne.cost,tokens:ne.tokens},be=w===void 0?void 0:Vk({lastResponseTime:w.lastResponseTime,responseTime:w.responseTime,sessionDuration:w.sessionDuration,messageCount:w.messageCount,linesAdded:w.linesAdded,linesRemoved:w.linesRemoved}),xe=ie===void 0?void 0:zk(ie);return{...e,..._e!==void 0&&{workspace:_e},...O!==void 0&&{home:O},...C.git!==void 0&&{git:C.git},...T!==void 0&&{tmux:{session:T}},host:ee.host,...xk(i),history:t.history(e.session_id),...o,...ve!==void 0&&{session:ve},...ye!==void 0&&{today:ye},...fe!==void 0&&{burn:{costPerHour:fe}},...ge!==void 0&&{speed:ge},...s(`block`)&&D!==void 0&&{block:{nativeUtilization:D.used_percentage,resetsAt:D.resets_at,...ce!==void 0&&{etaMinutes:ce}}},...se!==void 0&&{weekly:{percentage:se.used_percentage,resetsAt:se.resets_at,...le!==void 0&&{etaMinutes:le}}},...E!==void 0&&{cache:{expiresAt:E}},...re!==void 0&&{context:{totalTokens:re.totalTokens,contextLeft:re.contextLeftPercentage}},...be!==void 0&&{metrics:be},...xe!==void 0&&{activity:xe},...ae!==void 0&&{memento:ae},...oe!==void 0&&{autocompact:oe}}}function Ik(e,t){switch(e.kind){case`absent`:return;case`failed`:return{error:e.reason};case`ok`:return qO(e.value,t)}}const Lk=e=>e.trim().split(`
177
+ `).at(-1).trim();function Rk(e){switch(e.kind){case`absent`:return;case`failed`:return{error:Lk(e.reason)};case`ok`:{let{ceiling:t,session:n}=e.value;return{ceiling:t===`off`?0:t,off:t===`off`,session:n??``}}}}function zk(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=Bk(e.running),i=Bk(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 Bk(e){return e.length===0?void 0:e.map(e=>`${e.name}:${e.count}`).join(`,`)}function Vk(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 Hk(e){return e===void 0||e.length===0||c.sep!==`\\`?e:e.replace(/\\/g,`/`)}function Uk(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 Wk={theme:e=>e.theme.kind===`decided`?e.theme.name:null,preset:e=>e.preset,look:e=>e.look.kind===`decided`?e.look.name:null,style:e=>e.style,progression:e=>e.progression,charset:e=>e.charset,colorCompatibility:e=>e.colorCompatibility,autoWrap:e=>e.autoWrap?So:Co,padding:e=>String(e.padding),updateNotice:e=>e.updateNotice?So:Co},Gk=Object.entries(bb),Kk=new Set(xb.map(e=>e.sessionKey)),qk=()=>!1;function Jk(e,t){return vk(e,e=>Kk.has(e)?t(e):null,qk)}function Yk(e,t,n,r){return e.flatMap(([e,i])=>{let a=Wk[e](t);return a===null||a===Wk[e](n(e))?[]:[{...i,value:a,target:r(i)}]})}function Xk(e,t,n){return Wk[n](Jk(e,t))}function Zk(e,t){let n=Jk(e,t),r=vk(e,()=>null,qk),i=vk(e,e=>e===bb.preset.sessionKey?n.preset:null,qk);return Yk(Gk,n,e=>e===`preset`?r:i,t=>Qk(e,n.preset,t.configKey))}function Qk(e,t,n){return n in(C_(e.presets,t).globals??{})?Zb(t,n):n}function $k(e,t,n){let r=S_(t(bb.preset.sessionKey),e.globals.preset,e.presets),i=Qb(n);return{key:i?.scope===`globals`?Qk(e,r,i.field):n,globals:T_(e,r)}}function eA(e,t){let{preset:n}=Jk(e,t);return rA(e,n).flatMap(({id:e,setting:r,key:i,decl:a,saved:o})=>{let s=t(i),c=s===null?void 0:Js(a,s);return c===void 0||qs(c)===qs(o)?[]:[{preset:n,id:e,setting:r,key:i,value:c}]})}function tA(e,t,n){let r=new Map(n.map(e=>[e.key,e.value]));return x_(e.presets).flatMap(n=>{let i=rA(e,n);return[...new Set(i.filter(e=>r.has(e.key)).map(e=>e.id))].flatMap(e=>{let n=i.filter(t=>t.id===e);return Gs(Object.fromEntries(n.map(e=>[e.setting,e.decl])),Object.fromEntries(n.map(e=>{let n=r.get(e.key)??t(e.key),i=n===null?void 0:Js(e.decl,n);return[e.setting,i??e.saved]}))).map(({message:t})=>`placement "${e}": ${t}`)})})}const nA=new WeakMap;function rA(e,t){let n=nA.get(e)??new Map;nA.set(e,n);let r=n.get(t);if(r!==void 0)return r;let i=[...Ms(w_(e,t).node)].flatMap(t=>t.kind!==`segment`||t.drafts===void 0?[]:Object.entries(t.drafts).map(([n,{id:r,key:i}])=>{let a=Us(e.segments[t.name])[n];return{id:r,setting:n,key:i,decl:a,saved:t.settings?.[n]??a.default}})),a=[...new Map(i.map(e=>[e.key,e])).values()];return n.set(t,a),a}function iA(e,t){let n=Jk(e,t),r=vk(e,e=>e===bb.preset.sessionKey?n.preset:null,qk);return{from:n.preset,globals:C_(e.presets,n.preset).globals??{},picks:Yk(Gk.filter(([e])=>e!==`preset`),n,()=>r,e=>e.configKey),placements:eA(e,t)}}function aA(e){return{sessionKeys:xb.filter(t=>t.configKey===e).map(e=>e.sessionKey),fileKeys:[e,...bl(e)?rk.map(t=>Zb(t,e)):[]]}}function oA(e){return new Set(xb.map(e=>e.configKey).filter(t=>aA(t).fileKeys.some(t=>lA(e,cA(t)))))}function sA(e,t,n){let r=Zk(e,n);return{unsaved:r.length+eA(e,n).length,resettable:new Set([...r.map(e=>e.configKey),...t]).size}}function cA(e){let t=Qb(e);if(t===null||t.scope===`preset-root`)throw Error(`reset layer "${e}" is not a value path`);return $b(t)}function lA(e,t){let[n,...r]=t;return n===void 0?e!==void 0:typeof e==`object`&&!!e&&lA(e[n],r)}const uA=qa(),dA=new Set(uA),fA=new Set(oo),pA=e=>e?dA.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown theme "${e}" (have: ${uA.join(`, `)})`}:{ok:!1,reason:`theme name is required`},mA=e=>e?fA.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown style "${e}" (have: ${oo.join(`, `)})`}:{ok:!1,reason:`style name is required`},hA=new Set([`1`,`true`]),gA=new Set([`0`,`false`]),_A=MO({style:mA,theme:pA,"toolbar-expanded":e=>hA.has(e)?{ok:!0,value:`1`}:gA.has(e)?{ok:!0,value:``}:{ok:!1,reason:`expected boolean-ish (1, 0, true, false), got "${e}"`}});function vA(){return _A.listKeys()}function yA(e,t){return _A.register(e,t)}function bA(e,t){return _A.validate(e,t)}function xA(e){return _A.rangeParamsFor(e)}function SA(e,t){return`set`in e?`to`in e?[{key:e.set,spec:{kind:`allow-list`,allowed:[e.to]}}]:`from`in e?[{key:e.set,spec:{kind:`allow-list`,allowed:Ub(e.from,t).members}}]:`int`in e?[{key:e.set,spec:{kind:`int`}}]:`cycle`in e?[{key:e.set,spec:{kind:`allow-list`,allowed:e.cycle}}]:[{key:e.set,spec:{kind:`range`,min:e.min,max:e.max}}]:[]}function CA(e){let t=new Set(_A.listBaselineKeys());return e.filter(e=>e.spec.kind!==`allow-list`||!t.has(e.key))}function wA(e,t,n){let r=wb.get(n);if(r!==void 0)return Xk(e,t,r);let i=Object.values(e.variables).find(e=>e.kind===`state`&&e.key===n);return i?.kind===`state`?i.default??null:null}function TA(e){let t=Vb(e);return CA(Object.values(e.actions).flatMap(e=>SA(e,t)))}function EA(e){return jO(TA(e))}const DA=`update.dismissed`,OA=`updateNotice`,kA=bb.updateNotice.sessionKey;function AA(e){return e.kind===`source`?e.newer.digest:RE(e.newer)}const jA=e=>`${e.version} [${gO(e.digest)}]`;function MA(e){switch(e.kind){case`source`:return{headline:`Newer source`,newer:jA(e.newer),running:jA(e.running),act:`rebuild`,busy:`rebuilding…`,command:{bin:`pnpm`,args:[`build`],cwd:e.root}};case`release`:return{headline:`Newer release`,newer:RE(e.newer),running:RE(e.running),act:`upgrade`,busy:`upgrading…`,command:{bin:`pnpm`,args:[`dlx`,`${BE}@${RE(e.newer)}`,`install`]}}}}const NA={kind:`idle`},PA={kind:`running`};function FA(e,t,n){if(e===null)return[];let r=AA(e);if(!n.enabled||n.dismissed===r)return[];let i=MA(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(`
178
+ `),c=SE([{verb:aE,args:[s]}]),l=t.kind===`running`?iO(`[${i.busy}]`,c):iO(`[${i.act}]`,SE([{verb:hE,args:[n.sessionId]}]));return[{severity:rO,message:s,lines:[[iO(a,c),l,iO(`[dismiss]`,SE([{verb:$T,args:[n.sessionId,DA,r]}])),iO(`[disable]`,SE([{verb:oE,args:[n.sessionId,OA,`false`]},{verb:$T,args:[n.sessionId,kA,`false`]}]))],...o.map(e=>[iO(e,c)])]}]}function IA(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 LA(e){switch(e.kind){case`current`:return[`info`,`build: current ${jA(e.stamp)}`];case`stale`:return[`info`,`build: stale — source ${jA(e.source)}, running ${jA(e.running)}`];case`not-source-checkout`:return[`info`,`build: not a source checkout`];case`unchecked`:return[`warn`,`build: unchecked: ${e.reason}`]}}function RA(e){switch(e.kind){case`current`:return[`info`,`release: current ${RE(e.installed)}`];case`stale`:return[`info`,`release: stale — latest ${RE(e.latest)}, running ${RE(e.installed)}`];case`ahead`:return[`info`,`release: ahead — running ${RE(e.installed)}, latest ${RE(e.latest)}`];case`unchecked`:return[`warn`,`release: unchecked: ${e.reason}`]}}function zA(e){let t=null;return([n,r])=>{r!==t&&(t=r,e(n,r))}}const BA=e=>e.split(/\r?\n/).map(e=>e.trim()).filter(e=>e!==``).at(-1);function VA(e){let t=e.exitCode===null?``:` (exit ${e.exitCode})`,n=BA(e.stderr)??e.error??BA(e.stdout)??`no output`;return`${e.reason}${t}: ${n}`}function HA(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=NA,d=null,f=zA(s),p=zA(s),m=()=>IA(c,l);function h(){let e=m(),t=e===null?null:AA(e);(d===null?null:d.identity)!==t&&(d?.dispose(),d=t===null?null:{identity:t,dispose:yA(DA,{kind:`allow-list`,allowed:[t]})})}function g(){c=bO(t,vO),f(LA(c)),h()}async function _(){l=HE(OE,await VE(BE,a,i)),p(RA(l)),h()}return{arm(){HO(OA,{kind:`allow-list`,allowed:[`false`]}),yA(kA,{kind:`allow-list`,allowed:[`false`]}),g(),setInterval(g,n).unref(),c.kind===`not-source-checkout`&&(_(),setInterval(()=>void _(),r).unref())},notice:e=>FA(m(),u,e),act(){let e=m();if(e===null)throw new $(`apply-update: nothing newer is known to apply`);let t=MA(e);if(u.kind===`running`)throw new $(`apply-update: already ${t.busy}`);u=PA,s(`info`,`apply-update: ${t.act} — ${t.command.bin} ${t.command.args?.join(` `)??``}`),De({...t.command,category:`update.apply`,timeoutMs:6e5}).then(n=>{if(n.ok){u=NA,s(`info`,`apply-update: ${t.act} succeeded`),g(),o();return}let r=VA(n);u={kind:`failed`,identity:AA(e),reason:r},s(`error`,`apply-update: ${t.act} failed: ${r}`)})}}}var UA=class{static CACHE_DIR=Ne();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 O(`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`?(O(`Removing stale lock file ${e} for dead process ${i}`),r.unlinkSync(t),!1):(O(`Error checking process ${i} for lock ${e}:`,n),!0)}}catch(t){return O(`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`}),O(`Lock acquired for ${e}`),!0}catch(e){if(e.code===`EEXIST`)await D(50);else throw e}return O(`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),O(`Lock released for ${e}`)}catch(t){t.code!==`ENOENT`&&O(`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){O(`Failed to create cache directories:`,e)}}static createProjectHash(e){return ae(`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)){O(`Cache for ${e} is locked, waiting...`),await D(75);continue}try{let i=await r.promises.readFile(n,`utf-8`),a=JSON.parse(i);return!t||a.timestamp>=t?(O(`[CACHE-HIT] ${e} disk cache: found`),this.deserializeDates(a.data)):(O(`${e} cache outdated: cache=${a.timestamp}, latest=${t}`),null)}catch(t){if(t.code===`ENOENT`)return O(`No shared ${e} usage cache found`),null;O(`Attempt ${a+1} failed to read ${e} cache: ${t.message}. Retrying...`),await D(75)}}return O(`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)){O(`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`),O(`[CACHE-SET] ${e} disk cache stored`)}catch(t){O(`Failed to save ${e} usage cache:`,t)}finally{await this.releaseLock(i)}}};const WA={"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 GA=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 UA.getUsageCache(`pricing`,e)}static async saveDiskCache(e){await UA.setUsageCache(`pricing`,e)}static async fetchPricingData(){return new Promise(e=>{let t=new re(this.GITHUB_PRICING_URL),n=oe({hostname:t.hostname,path:t.pathname,headers:{"User-Agent":`cc-candybar`,"Cache-Control":`no-cache`},timeout:5e3},t=>{if(t.statusCode!==200){O(`HTTP ${t.statusCode}: ${t.statusMessage}`),e(null);return}let r=``,i=0;t.on(`data`,t=>{if(i+=t.length,i>1048576){O(`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)?(O(`Fetched fresh pricing from GitHub for ${Object.keys(i).length} models`),O(`Pricing last updated: ${n?.updated||`unknown`}`),e(i)):(O(`Invalid pricing data structure`),e(null))}catch(t){O(`Failed to parse JSON:`,t),e(null)}}),t.on(`error`,t=>{O(`Response error:`,t),e(null)})});n.on(`error`,t=>{O(`Request error:`,t),e(null)}),n.on(`timeout`,()=>{O(`Request timeout`),n.destroy(),e(null)}),n.end()})}static async getCurrentPricing(){if(this.executionCache!==null)return O(`[CACHE-HIT] Pricing execution cache: ${Object.keys(this.executionCache).length} models`),this.executionCache;let e=await this.loadDiskCache();if(e)return O(`[CACHE-HIT] Pricing disk cache: ${Object.keys(e).length} models`),this.executionCache=e,O(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(e).length} models`),e;let t=await this.fetchPricingData();return t?(await this.saveDiskCache(t),O(`[CACHE-SET] Pricing disk cache stored: ${Object.keys(t).length} models`),this.executionCache=t,O(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(t).length} models`),t):(O(`[CACHE-FALLBACK] Using offline pricing data: ${Object.keys(WA).length} models`),this.executionCache=WA,O(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(WA).length} models`),WA)}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 O(`[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),O(`[CACHE-SET] Model pricing cache: ${e}`),n}static fuzzyMatchModel(e,t){let n=e.toLowerCase();for(let[e,r]of Object.entries(t))if(e.toLowerCase()===n)return r;for(let{pattern:e,fallback:r}of[{pattern:[`opus-4-6`,`claude-opus-4-6`],fallback:`claude-opus-4-6-20260205`},{pattern:[`opus-4-5`,`claude-opus-4-5`],fallback:`claude-opus-4-5-20251101`},{pattern:[`opus-4-1`,`claude-opus-4-1`],fallback:`claude-opus-4-1-20250805`},{pattern:[`opus-4`,`claude-opus-4`],fallback:`claude-opus-4-20250514`},{pattern:[`sonnet-4-6`,`sonnet-4.6`,`claude-sonnet-4-6`],fallback:`claude-sonnet-4-6`},{pattern:[`sonnet-4.5`,`4-5-sonnet`,`sonnet-4-5`],fallback:`claude-sonnet-4-5-20250929`},{pattern:[`sonnet-4`,`claude-sonnet-4`],fallback:`claude-sonnet-4-20250514`},{pattern:[`haiku-4.5`,`4-5-haiku`,`haiku-4-5`],fallback:`claude-haiku-4-5-20251001`},{pattern:[`haiku`],fallback:`claude-haiku-4-5-20251001`},{pattern:[`opus`],fallback:`claude-opus-4-20250514`},{pattern:[`sonnet`],fallback:`claude-sonnet-4-5-20250929`}])if(e.some(e=>n.includes(e))&&t[r])return t[r];return t[`claude-sonnet-4-5-20250929`]||{name:`${e} (Unknown Model)`,input:3,cache_write_5m:3.75,cache_write_1h:6,cache_read:.3,output:15}}static async calculateCostForEntry(e){let t=e.message?.usage;if(!t)return 0;let n=this.extractModelId(e),r=await this.getModelPricing(n),i=t.input_tokens||0,a=t.output_tokens||0,o=t.cache_creation_input_tokens||0,s=t.cache_read_input_tokens||0,c=i/1e6*r.input,l=a/1e6*r.output,u=s/1e6*r.cache_read,d=o/1e6*r.cache_write_5m;return c+l+d+u}static extractModelId(e){if(e.model&&typeof e.model==`string`)return e.model;let t=e.message;if(t?.model){let e=t.model;if(typeof e==`string`)return e;let n=e;return(typeof n?.id==`string`?n.id:null)||`claude-sonnet-4-5-20250929`}return e.model_id&&typeof e.model_id==`string`?e.model_id:`claude-sonnet-4-5-20250929`}};const KA=/<command-name>\s*([^<\s][^<]*?)\s*<\/command-name>/;function qA(e){if(typeof e==`string`)return KA.exec(e)?.[1]}function JA(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 YA(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=JA(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?qA(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 XA(){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=m(),n=f(t,`.config`,`claude`),r=f(t,`.claude`);a(n)&&e.push(n),a(r)&&e.push(r)}return e}async function ZA(e){let t=[];for(let n of e){let e=f(n,`projects`);if(a(e))try{let n=await ck(e,{withFileTypes:!0});for(let r of n)if(r.isDirectory()){let n=f(e,r.name);t.push(n)}}catch(t){O(`Failed to read projects directory ${e}:`,t)}}return t}async function QA(e,t,n){let r=[],i=f(t,e,`subagents`);try{let t=(await ck(i)).filter(e=>e.startsWith(`agent-`)&&e.endsWith(`.jsonl`));for(let a of t){let t=f(i,a);if(n?.has(t)){r.push(t);continue}try{let n=(await lk(t,`utf-8`)).split(`
179
+ `)[0];n&&JSON.parse(n).sessionId===e&&r.push(t)}catch{O(`Failed to check agent file ${t}`)}}}catch(e){O(`Failed to read subagents directory ${i}:`,e)}return r}function $A(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 ej=new Map;async function tj(e){try{let t=await uk(e),n=t.size,r=ej.get(e);if(r&&r.mtime===t.mtimeMs&&r.size===n)return O(`[parse-cache] hit ${e}`),ej.delete(e),ej.set(e,r),r.entries;let i;return n>1048576?(O(`Using streaming parser for large file ${e} (${Math.round(n/1024)}KB)`),i=await oj(e)):i=await ij(e),O(`Parsed ${i.length} entries from ${e}`),n>5242880?i:(ej.delete(e),ej.size>=16&&ej.delete(ej.keys().next().value),ej.set(e,{mtime:t.mtimeMs,size:n,entries:i}),i)}catch(t){if(t.code===`ENOENT`)return O(`Transcript not present yet: ${e}`),[];throw t}}function nj(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:YA(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 rj(e){let t=[];for(let n of e.split(`
180
+ `))if(n.trim())try{let e=nj(JSON.parse(n));e&&t.push(e)}catch(e){O(`Failed to parse JSONL line: ${e}`);continue}return t}async function ij(e){return rj(await lk(e,`utf-8`))}async function aj(e,t){let n=await dk(e,t===void 0?void 0:{offset:t.offset,ino:t.ino});if(n.kind!==`ok`)return n;let{buf:r,start:i,mtimeMs:a,ino:o,reset:s}=n.value,c=r.lastIndexOf(10);return J(c<0?{entries:[],cursor:{offset:i,mtimeMs:a,ino:o},reset:s}:{entries:rj(r.subarray(0,c+1).toString(`utf-8`)),cursor:{offset:i+c+1,mtimeMs:a,ino:o},reset:s})}async function oj(e){return new Promise((t,n)=>{let r=[],a=i(e,{encoding:`utf8`}),o=se({input:a,crlfDelay:1/0});o.on(`line`,e=>{let t=e.trim();if(t)try{let e=nj(JSON.parse(t));e&&r.push(e)}catch(e){O(`Failed to parse JSONL line: ${e}`)}}),o.on(`close`,()=>{t(r)}),o.on(`error`,t=>{O(`Streaming parser error for ${e}:`,t),n(t)}),a.on(`error`,t=>{O(`File stream error for ${e}:`,t),n(t)})})}var sj=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 cj(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 lj={cost:0,input:0,output:0,cacheCreation:0,cacheRead:0},uj={cost:null,calculatedCost:null,officialCost:null,tokens:null,tokenBreakdown:null};function dj(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function fj(){let e=new Date;return e.setHours(0,0,0,0),e.setDate(e.getDate()-1),e.getTime()}function pj(){return{input:0,output:0,cacheCreation:0,cacheRead:0}}async function mj(e,t,n,r){let i=dj(new Date(fj())),a=e&&!t?e:void 0,o=a?.entries??0,s=a?.cost??0,c=a?{...a.breakdown}:pj(),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 GA.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=dj(new Date(e.timestamp));if(r<i)continue;let a=l.get(r)??{...lj};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 hj(e){let t=0,n=0,r=pj(),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)??{...lj};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:uj,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 gj(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 _j=class{entries=new Map;flight=new sj;seeded=new Map;speedRings=new Map;speedFlight=new sj;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:uj,i=t?.cost?.total_cost_usd??null;return J({session:{...r,cost:i??r.cost,officialCost:i}})}async getTodayInfo(e){let t=dj(new Date);try{await this.ensureSeeded(t)}catch(e){return X(`usage seed: ${e instanceof Error?e.message:String(e)}`)}let n=await this.ingest(e?.session_id??``,e?.transcript_path);if(n.kind===`failed`)return n;let r={...lj},i=!1;for(let e of this.entries.values()){i||=e.days.has(t);let n=e.days.get(t)??lj;r.cost+=n.cost,r.input+=n.input,r.output+=n.output,r.cacheCreation+=n.cacheCreation,r.cacheRead+=n.cacheRead}return i?J({cost:r.cost,tokens:r.input+r.output+r.cacheCreation+r.cacheRead,tokenBreakdown:{input:r.input,output:r.output,cacheCreation:r.cacheCreation,cacheRead:r.cacheRead},date:t}):Y}async observeSpeed(e,t,n){let r=ak(t);return this.speedFlight.run(`${e}:${r}`,async()=>{let i=await this.ingest(e,t,r);if(i.kind===`failed`)return i;let a=cj(i.kind===`ok`?i.value.sessionInfo.tokenBreakdown:null,n),o=this.speedRings.get(e)??[],s;for(let e of o)e.atMs<a.atMs&&(s===void 0||e.atMs>s.atMs)&&(s=e);return o.push(a),o.sort((e,t)=>e.atMs-t.atMs),o.length>64&&o.shift(),this.speedRings.set(e,o),J({...s!==void 0&&{prev:s},cur:a,samples:[...o]})})}async ingest(e,t,n){if(!e)return Y;let r=n??ak(t),i=this.entries.get(e);if(i&&r!==0&&i.transcriptMtime===r)return i.lastSeenAt=Date.now(),this.entries.delete(e),this.entries.set(e,i),this.hits++,J(i);if(!t)return i?J(i):Y;this.misses++;let a;try{a=await this.flight.run(`${e}:${r}`,()=>this.refold(e,t,this.entries.get(e)))}catch(t){return X(`usage refold (${e}): ${t instanceof Error?t.message:String(t)}`)}if(a.kind!==`ok`)return a;let o={files:a.value.files,sessionInfo:a.value.sessionInfo,days:a.value.days,transcriptMtime:a.value.mainMtime,transcriptPath:t,lastSeenAt:Date.now()};return this.entries.delete(e),this.entries.set(e,o),this.evictIfNeeded(),J(o)}async refold(e,t,n){let r=await QA(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 aj(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 mj(r,l,s,c)),e===t&&(a=c.mtimeMs)}return J({files:i,...hj(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=fj(),n=await ZA(XA()),r=[];for(let e of n){let n;try{n=await ck(e)}catch{continue}for(let i of n){if(!i.endsWith(`.jsonl`))continue;let n=f(e,i),a;try{a=(await uk(n)).mtimeMs}catch{continue}a<t||r.push({sessionId:i.slice(0,-6),path:n,mtime:a})}}await gj(r,8,async e=>{let t=await this.ingest(e.sessionId,e.path,e.mtime);t.kind===`failed`&&Q(`warn`,`usageStore seed: ${t.reason}`)}),this.seeds++,Q(`info`,`usageStore seed sessions=${r.length}`)}sweepStale(){let e=Date.now(),t=0;for(let[n,r]of this.entries)e-r.lastSeenAt>this.staleAgeMs&&(this.entries.delete(n),this.speedRings.delete(n),t++);return t>0&&(this.sweeps++,Q(`info`,`usageStore sweep dropped=${t}`)),t}evictIfNeeded(){for(;this.entries.size>this.maxEntries;){let e=this.entries.keys().next().value;if(e===void 0)break;this.entries.delete(e),this.speedRings.delete(e),Q(`info`,`usageStore evict ${e}`)}}close(){this.sweepTimer&&=(clearInterval(this.sweepTimer),null),this.entries.clear(),this.seeded.clear(),this.speedRings.clear()}};function vj(e,t){return e===void 0?!0:e.evaluate(t).map(e=>e.plain).join(``)!==`false`}function yj(e,t){let n=Oi.fromFragments(e);return n.end=``,n.overflow=`ignore`,t!==void 0&&!t.isNull&&(n.style=t),n}function bj(e,t,n){e.cellLength>t?e.truncate(t,{mode:n.truncate,marker:`…`}):e.cellLength<t&&e.align(n.justify,t)}function xj({text:e,trail:t}){if(t===void 0)return e;let n=yj([e,t]);return n.style=e.style,n}function Sj(e,t){let{width:n,justify:r,truncate:i,baseStyle:a,padding:o,trail:s=[]}=t;if(e.length===0)return[];let c=yj(e,a).pad(o),l=s.length===0?{}:{trail:yj([...s,new Oi(` `.repeat(o))],a)};if(n===`auto`)return[{text:c,...l}];let u={justify:r,truncate:i};return n===`fill`?[{text:c,fill:u,...l}]:(bj(c,n,u),[{text:c,...l}])}const Cj=RegExp(`\\x1b\\[[0-9;]*m|${gi.source}`,`g`);function wj(e){return M(e.replace(Cj,``))}function Tj(e,t){let n=e.map(xj),r=[];if(e.forEach(({fill:e},t)=>{e!==void 0&&r.push({at:t,how:e})}),r.length===0||!Number.isFinite(t.width))return n;let i=$D(n,t).split(`
181
+ `);if(i.length>1)return n;let a=Math.max(0,t.width-wj(i[0]??``)),o=Math.floor(a/r.length),s=a-o*r.length;return r.forEach(({at:t,how:i},a)=>{let c=o+(a===r.length-1?s:0),{text:l}=e[t];bj(l,l.cellLength+c,i),n[t]=xj(e[t])}),n}function Ej(e,t){let n=[],r=[],i=()=>{if(!r.length)return;let e=Dj(r,t);e.plain.length>0&&n.push(e),r=[]};for(let a of e)if(kj(a.style).link){i();let e=Dj([a],t);e.plain.length>0&&n.push(e)}else r.push(a);return i(),n}function Dj(e,t){let n=t!==void 0&&!t.isNull?e.map(e=>Oj(e,t)):e,r=Oi.fromFragments(n);return r.end=``,r.overflow=`ignore`,n.length===1?r.style=n[0].style:t!==void 0&&!t.isNull&&(r.style=t),r}function Oj(e,t){let n=e.copy();return n.style=t.add(kj(e.style)),n}function kj(e){return e instanceof V?e:V.parse(e)}var Aj=class extends Error{constructor(e,t,n){super(`Invalid ${t} color ${JSON.stringify(e)}: ${n}`),this.name=`ColorSpecError`}};function jj(e,t,n,r,i){let{palette:a,tint:o}=e,s=Mj(n,i),c=s===void 0?o:Nj(a,s,`bg`);e.bg=c;let l=Mj(r,i),u=l===void 0?Ta(a,c,t):Nj(a,l,`fg`);return new V({bgcolor:hn.fromRgba(c),color:hn.fromRgba(u)})}function Mj(e,t){if(e!==void 0)return e.evaluate(t).map(e=>e.plain).join(``)}function Nj(e,t,n){try{return Yn(e,t)}catch(e){throw e instanceof Kn?new Aj(t,n,e.message):e}}function Pj(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,Fj(e,t,o,n,r,i));return i}function Fj(e,t,n,r,i,a){if(`set`in n){let e=r.get(n.set)??n.set;if(`to`in n)return{kind:`set-literal`,key:n.set,value:n.to,stateVar:e};if(`from`in n){let t=Ub(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=Sb.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=Ub(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=Ub(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:Lj(e,n.copy,t)};if(`open`in n)return{kind:`open`,target:Lj(e,n.open,t)};if(`reset`in n)return{kind:`reset`,key:n.reset};if(`doctor`in n)return n.doctor===`run`?{kind:`doctor-run`}:{kind:`doctor-fix`,check:n.check};if(`ceiling`in n)return{kind:`ceiling`,args:iC(n)};if(`slash`in n)return{kind:`slash`,line:n.slash};if(`undo`in n)return{kind:`undo`};if(`redo`in n)return{kind:`redo`};if(`save`in n)return{kind:`save`};if(`preset`in n)return n.preset===`save`?{kind:`preset-save`}:{kind:`preset-delete`,name:Lj(e,n.name,t)};let[o,...s]=n.do.map(e=>{let n=a.get(e);if(n===void 0)throw Error(`action "${t}" fires "${e}", which is not declared in this config`);return n});return{kind:`do`,head:o,rest:s}}function Ij(e){return e.kind===`do`?Ij(e.head):e}function Lj(e,t,n){try{return e(t)}catch(e){throw Error(`Template parse error in actions.${n}: ${e.message}`,{cause:e})}}function Rj(e,t){return e.has(t)?bv(e.read(t)):``}function zj(e,t){return e.evaluate(t).map(e=>e.plain).join(``)}function Bj(e,t,n,r){let i=new Oi(e,{style:V.combine([r,new V({link:t,bold:n})])});return i.overflow=`ignore`,i.end=``,i}function Vj(e,t){return Math.max(e.members.indexOf(Rj(t,e.stateVar)),0)}function Hj(e,t,n,r,i){switch(e.kind){case`set-literal`:{let t=Rj(r,e.stateVar);return{effects:[{verb:$T,args:[i,e.key,e.value]}],active:t===e.value}}case`set-option`:{let a=n??t,o=Rj(r,e.stateVar);return{effects:[{verb:$T,args:[i,e.key,a]}],active:o===a}}case`set-int`:{let a=n??t,o=Rj(r,e.stateVar);return{effects:[{verb:$T,args:[i,e.key,a]}],active:o===a}}case`set-cycle`:{let t=e.members[(Vj(e,r)+1)%e.members.length];return{effects:[{verb:$T,args:[i,e.key,t]}],active:!1}}case`set-bounded`:return{effects:[{verb:eE,args:[i,e.key,String(e.by)]}],active:!1};case`copy`:return{effects:[{verb:tE,args:[zj(e.text,fy(r))]}],active:!1};case`open`:return{effects:[{verb:nE,args:[zj(e.target,fy(r))]}],active:!1};case`persist-literal`:{let t=Rj(r,e.stateVar);return{effects:[{verb:oE,args:[i,e.key,e.value]}],active:t===e.value}}case`persist-option`:{let a=n??t,o=Rj(r,e.stateVar);return{effects:[{verb:oE,args:[i,e.key,a]}],active:o===a}}case`persist-cycle`:{let t=e.members[(Vj(e,r)+1)%e.members.length];return{effects:[{verb:oE,args:[i,e.key,t]}],active:!1}}case`persist-bounded`:return{effects:[{verb:sE,args:[i,e.key,String(e.by)]}],active:!1};case`reset`:return{effects:[{verb:dE,args:[i,e.key]}],active:!1};case`undo`:return{effects:[{verb:pE,args:[i]}],active:!1};case`redo`:return{effects:[{verb:mE,args:[i]}],active:!1};case`save`:return{effects:[{verb:cE,args:[i]}],active:!1};case`preset-save`:return{effects:[{verb:lE,args:[i]}],active:!1};case`preset-delete`:return{effects:[{verb:uE,args:[i,zj(e.name,fy(r))]}],active:!1};case`doctor-run`:return{effects:[{verb:gE,args:[i]}],active:!1};case`doctor-fix`:return{effects:[{verb:_E,args:[i,e.check]}],active:!1};case`ceiling`:return{effects:[{verb:vE,args:[i,...e.args]}],active:!1};case`slash`:return{effects:[{verb:yE,args:[i,e.line]}],active:!1};case`layout-op`:return{effects:[{verb:fE,args:[i,e.key,xO(e.op)]}],active:!1};case`do`:{let a=Hj(e.head,t,n,r,i);return{effects:[...a.effects,...e.rest.flatMap(e=>Hj(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:fE,args:[i,e.key,xO(r)]}],active:!1}}}}function Uj(e,t,n,r){if(n.length===0)throw Error(`action "${e}" needs a display (the clickable text)`);if(t.kind===`set-cycle`||t.kind===`persist-cycle`)return{display:qc(`action "${e}"`,n,t.members.length,Vj(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 Wj(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}=Uj(e,Ij(r),t,i),{effects:s,active:c}=Hj(r,a,o,i,Rj(i,`session.id`));return Bj(a,SE(s),c)}function Gj(e){return{action:{fn:(t,...n)=>Wj(t,n,e),argTypes:[`string`,`string`],arity:{kind:`variadic`},returnType:`T`}}}function Kj(e,t){return Bj(`✕`,SE([{verb:$T,args:[Rj(e,`session.id`),t,Wc]}]),!1)}function qj(e,t,n){return new V({bgcolor:hn.fromRgba(t),color:hn.fromRgba(Ta(e,t,n))})}function Jj(e,t,n){return qj(e.palette,Ra(e.palette,e.disclosure,[t],n),n)}function Yj(e,t,n,r,i){return r===void 0?n=>Jj(e,{...n,distribution:t},i):(e,t)=>Xj(r(t,n),i)}function Xj(e,t){let n=ha(e,`background`);return new V({bgcolor:hn.fromRgba(n),color:hn.fromRgba(rr(ha(e,`primary`),n,4.5,t))})}function Zj(e){return{current:null,drawnAt:e}}function Qj(e,t,n,r,i,a){let o={segName:t,placementId:n,palette:r,disclosure:i,tint:a,bg:void 0,drops:[]};return e.current=o,o}function $j(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 eM(e){return new Oi(e).cellLength}function tM(e){return Math.max(1,e.width-e.chromeCols-2*e.padding)}function nM(e){return Math.max(1,tM(e)-(eM(`✕`)+2*e.padding+e.seamCols))}function rM(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 iM(e,t){let n=[];for(let t of e)n.length>0&&n.push(new Oi(` `)),n.push(t);let r=Oi.fromFragments(n);return r.overflow=t?`ignore`:void 0,r.end=``,r}function aM(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 oM(e,t,n){let r=e.compiled.get(t),i=r&&Ij(r);if(!i||i.kind!==`set-option`&&i.kind!==`persist-option`&&i.kind!==`layout-op-option`)throw Error(`${n} references action "${t}" which must be a set-option, persist-option, or layout-op-option action ({ set, from }, { persist, from }, or { persist, insertSegmentFrom, anchor, relation }), got ${i?`a ${i.kind} action`:`no such action`}`);return i}function sM(e,t,n,r,i,a,o){let s=oM(a,e,`picker`),c=a.compiled.get(e),l=a.store,u=Rj(l,`session.id`),d=`stateVar`in s?Rj(l,s.stateVar):void 0,f=s.options.map(eM),p=i?tM(a):1/0,m=eM(`✕`)+1,h=eM(`←`)+1+eM(`→`)+1,g=rM(f,p,m),_=g.length>1?rM(f,p,m+h):g,v=parseInt(Rj(l,t.stateVar),10),y=Number.isInteger(v)?Math.max(0,Math.min(v,_.length-1)):0,b=_[y]??[],x=e=>SE([{verb:$T,args:[u,t.key,String(e)]}]),S=n.flatMap(([e,t])=>[e,t]),C=SE([{verb:$T,args:[u,...S]}]),ee=r?[{verb:$T,args:[u,...S]}]:[],te=e=>SE([...Hj(c,e,e,l,u).effects,...ee]),ne=[Bj(`✕`,C,!1)];y>0&&ne.push(Bj(`←`,x(y-1),!1));for(let e of b){let t=s.options[e];ne.push(Bj(t,te(t),t===d,o({index:e,count:s.options.length},t)))}return y<_.length-1&&ne.push(Bj(`→`,x(y+1),!1)),iM(ne,i)}function cM(e,t){return{picker:{fn:(n,r,i,a,...o)=>{oy(`picker "${n}"`,[`closeOnPick`,`paged`],o);let s=aM(e,r,`set-int`,`an int action ({ set, int: true })`);return sM(n,{key:s.key,stateVar:s.stateVar},[[s.key,`-1`]],i===!0,a===!0,e,Yj($j(t,`{{ picker }}`),la(void 0),e,oM(e,n,`picker`).paletteOf,t.drawnAt()))},argTypes:[`string`,`string`,`bool`],arity:{kind:`variadic`},returnType:`T`}}}function lM(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+eM(e(-(s+1)))+1+eM(e(s+1))+1;if(t>r)break;o=t,s+=1}return s}function uM(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=Rj(a,`session.id`),{options:c}=t,l=c.length,u=Rj(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=SE(Hj(o,p(e),p(e),a,s).effects);return m.set(e,n),n},g=e=>Bj(p(e),h(e),p(e)===u,r({index:f(e),count:l},p(e))),_=lM(p,l,eM(`◀`)+1+eM(p(0))+1+eM(`▶`),nM(n),i),v=e=>Array.from({length:_},(t,n)=>g(e*(n+1)));return iM([...v(-1).reverse(),Bj(`◀`,h(-1),!1),g(0),Bj(`▶`,h(1),!1),...v(1)],!0)}function dM(e,t){return{carousel:{fn:(n,r,...i)=>{if(oy(`carousel "${n}"`,[`neighbours`],i),r!==void 0&&r<0)throw Error(`carousel "${n}": neighbours must be a whole number ≥ 0 (0 shows only ◀ CURRENT ▶), got ${String(r)}`);let a=r??1/0,o=oM(e,n,`carousel`);return uM(n,o,e,Yj($j(t,`{{ carousel }}`),la(void 0),e,o.paletteOf,t.drawnAt()),a)},argTypes:[`string`,`int`],arity:{kind:`variadic`},returnType:`T`}}}const fM=[`~/code`,`main`,`opus`,`42%`,`5m`,`$1.20`];function pM(e,t,n){let r=ja(e,{hue:ta,depth:0},n);return[ra(t).map((t,n)=>({text:fM[n%fM.length],colour:ga(e,t)})),[{text:`▾ open`,colour:r.state},{text:`menu`,colour:r.plane}],[{text:`warn`,colour:ha(e,`warning`)},{text:`error`,colour:ha(e,`error`)}]]}function mM(e,t,n,r){let i=pM(e,t,n).flatMap((t,r)=>t.map(({text:t,colour:i},a)=>({gap:r>0&&a===0?` `:``,cell:new Oi(` ${t} `,{style:qj(e,i,n)})}))),a=[],o=0;for(let{gap:e,cell:t}of i){if(o+=e.length+t.cellLength,o>r)break;e!==``&&a.push(new Oi(e)),a.push(t)}let s=Oi.fromFragments(a);return s.overflow=`ignore`,s.end=``,s}function hM(e,t){return{themePreview:{fn:()=>mM(e.palette,e.progression,t.drawnAt(),nM(e)),argTypes:[],arity:{kind:`exact`},returnType:`T`}}}const gM=e=>e.slice(e.lastIndexOf(`.`)+1),_M=(e,t)=>{let n=new Oi(gM(e));return n.truncate(t,{marker:`…`}),n.plain};function vM(e,t){let n=e.map(e=>e.map(({name:e})=>eM(gM(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 yM(e,t,n,r){let i=vM(e,r),a=e.map(e=>{let a=[],o=0;for(let{name:s,address:c,palette:l}of e){let e=new Oi(` ${_M(s,i)} `,{style:qj(l,Ha(l,{kind:`bar`,progression:t,address:c},n).tint,n)});if(o+=e.cellLength,o>r)break;a.push(e)}return a}),o=Oi.fromFragments(a.flatMap((e,t)=>t===0?e:[new Oi(`
182
+ `),...e]));return o.overflow=`ignore`,o.end=``,o}function bM(e,t){return{layoutPreview:{fn:()=>yM(e.layout(),e.progression,t.drawnAt(),nM(e)),argTypes:[],arity:{kind:`exact`},returnType:`T`}}}function xM(e,t,n,r){let i=$j(r.activeSegment,`{{ menu }}`),a=r.action,o=d_(i.placementId,e,n.key),s=m_(o),c=u_(e),l=Rj(a.store,o)===c,u=Rj(a.store,`session.id`),d=l?Wc:c,f=Bj(qc(`{{ menu "${e}" }}`,t,2,+!!l),SE([{verb:$T,args:[u,o,d,s,`0`]}]),!1);return i.drops.push(...l?[sM(e,{key:s,stateVar:s},[[o,Wc],[s,`0`]],n.closeOnPick,n.paged,a,Yj(i,n.distribution,a,oM(a,e,`menu`).paletteOf,r.activeSegment.drawnAt()))]:[]),f}const SM=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function CM(e,t){let n=t[t.length-1],r=SM(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:v_(r??{})}}function wM(e){return{menu:{fn:(t,...n)=>{let{displays:r,options:i}=CM(t,n);return xM(t,r,i,e)},argTypes:[`string`,`value`],arity:{kind:`variadic`},returnType:`T`}}}function TM(e){let{value:t,max:n,width:r,filled:i,empty:a,colourAt:o}=e,s=EM(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 Oi(t?i:a,{style:l===void 0?void 0:new V({color:l})}))}let l=Oi.fromFragments(c);return l.end=``,l.overflow=`ignore`,l}function EM(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 DM(e){let t={fn:(()=>{let t=$j(e,`{{ bgOf }}`);if(t.bg===void 0)throw Error(`{{ bgOf }} is not available while segments.${t.segName}'s own "bg:" is being evaluated — the background is what that template computes. Reach for a palette color there instead, e.g. bg: '{{ darken (color "surface") 1 }}'.`);return t.bg.hex}),argTypes:[],arity:{kind:`exact`},returnType:`string`},n={fn:(()=>$j(e,`{{ tint }}`).tint.hex),argTypes:[],arity:{kind:`exact`},returnType:`string`},r=Kv(()=>$j(e,`{{ color }} / {{ ramp }} / {{ gauge }}`).palette),i={fn:((e,t,n,i,a,o,...s)=>{let c=o===void 0?void 0:[o,...OM(s)];return TM({value:e,max:t,width:n,filled:i,empty:a,colourAt:c===void 0?void 0:e=>String(r.ramp.fn(e,...c))})}),argTypes:[`float`,`float`,`int`,`string`,`string`,`string`],arity:{kind:`variadic`},returnType:`T`};return{...r,bgOf:t,tint:n,gauge:i}}function OM(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 kM(e){let t=[],n=[];for(let r of e){if(!r.contains(`
183
183
  `)){n.push(r);continue}let e=r.split(`
184
- `);n.push(e[0]);for(let r=1;r<e.length;r++)t.push(n),n=[e[r]]}return t.push(n),t}const SM=({text:e,trail:t})=>t===void 0?[e]:[e,t];function CM(e,t){switch(e){case`vertical`:return TM(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))]:TM(e)}}}function wM(e,t){let n=(e,r)=>t(e)?e.kind===`segment`?[{cells:[{name:e.name,address:r,settings:e.settings}],band:`own`,span:`shared`}]:CM(e.direction,e.children.map((t,i)=>n(t,[...r,EM(e,i)]))):[];return n(e,[]).map(e=>[...e.cells])}function TM(e){return e.map(e=>e.span===`row`?{...e,span:`shared`}:e)}function EM(e,t){return{index:t,count:e.children.length,distribution:e.distribution,axis:Es[e.direction]}}const DM={compile(e,t){return{kind:`container`,direction:e.direction,when:t.when,distribution:ca(e.distribution),children:e.children.map((e,n)=>t.compileChild(e,Ms(t.path,n)))}},render(e,t){return CM(e.direction,e.children.map((n,r)=>t.renderChild(n,t.visible,EM(e,r))))}},OM={compile(e,t){return{kind:`segment`,when:t.when,name:e.name,id:Ds(e),settings:t.placementSettings(e),...e.opens!==void 0&&{opens:{open:t.parse(Yc(e.opens.ref),`opens`),body:t.compileChild(e.opens.body,Ns(t.path)),key:e.opens.ref.key,placement:e.opens.placement}},...e.trail!==void 0&&{trail:t.parse(e.trail,`trail`)}}},render(e,t){let n=t.lookupSegment(e.name);if(!n)throw Error(`Layout segment "${e.name}" has no matching segment`);let{seg:r,compiled:i}=n;if(!t.visible)return[];let a=my(t.scope,e.settings);try{if(!uj(i.when,a))return[];let n=Ab(e.settings.theme,t.palette),{styles:o,fragments:s,trail:c,drops:l}=t.evaluateSegment(e,a,n,t.region,{bg:i.bg,fg:i.fg,body:i.template,trail:e.trail}),u=e.opens!==void 0&&uj(e.opens.open,t.scope),d=l.length>0||u?o.trigger:o.closed,f={width:r.width??`auto`,justify:r.justify??`left`,truncate:r.truncate??`right`,baseStyle:d,padding:t.padding},p=e.opens===void 0?[]:t.renderBody(e.opens.body,u,o.disclosure),m=p.slice(0,+(e.opens?.placement===`inline`)),h=p.slice(m.length),g=e.opens!==void 0&&h.some(e=>e.band===`own`)?mj(vj([t.closeDisclosure(e.opens.key)],o.trigger),{...f,width:`auto`,baseStyle:o.trigger}):[],_=e=>e.band===`own`?g:[],v=h.map(e=>({cells:[..._(e),...e.cells],band:`deeper`,span:`shared`})),y=xM(vj(s,d)).map((e,t)=>({cells:mj(e,{...f,trail:t===0?vj(c,d):[]}),band:`own`,span:`shared`})),b=l.map(e=>({cells:mj(vj([e],o.band),{...f,baseStyle:o.band}),band:`deeper`,span:`shared`})),x=[...y,...b];return t.perSegmentSink!==void 0&&t.perSegmentSink.set(e.id,[...x.flatMap(e=>e.cells),...h.flatMap(_)].flatMap(SM)),[...x.map((e,t)=>t===0&&m.length>0?{cells:[...e.cells,...m.flatMap(e=>e.cells)],band:`own`,span:`row`}:e),...v]}catch(n){let r=n.message??String(n);t.onSegmentError?.(e.id,r);let i=r.replace(/\s*\n\s*/g,` `);return[{cells:mj([new U(`⚠ ${e.id}: ${i}`,{end:``})],{width:`auto`,justify:`left`,truncate:`right`,padding:0,trail:kM(e,a,t)}),band:`own`,span:`shared`}]}}};function kM(e,t,n){if(e.trail===void 0)return[];try{return n.evaluateSegment(e,t,n.palette,n.region,{bg:void 0,fg:void 0,body:e.trail,trail:void 0}).fragments}catch(t){return n.onSegmentError?.(e.id,t.message??String(t)),[]}}const AM={container:DM,segment:OM};function jM(e){return AM[e]}function MM(e){if(`ttl`in e)return{kind:`ttl`,durationMs:tb(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 NM(e,t){switch(Is(e)){case`json`:return{kind:`json`,default:t};case`regex`:return{kind:`regex`,regex:new RegExp(e.regex),default:t};case`text`:return{kind:`text`,default:t}}}function PM(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:MM(n.cache),parse:NM(n.parse,n.default)});break;case`shell`:e.declareShell(t,n.command,{cwd:r,cache:MM(n.cache),parse:NM(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?tb(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 FM(e,t){let n=Ud.EMPTY;for(let[r,i]of Object.entries(t))try{n=e.parse(`{{ define "${r}" }}${i}{{ end }}`,n).defines()}catch(e){throw Error(`Template parse error in helpers.${r}: ${e.message}`,{cause:e})}return n}const IM=e=>bo(void 0,null,e.globals.progression);function LM(e,t,n){let r=n.cwd,i=Lb(e.globals.palette),a={store:t.variableStore,compiled:new Map,chromeCols:YD({style:`powerline`,charset:lo}),width:80,basePalette:i,palette:i,progression:$i[IM(e)],padding:1,seamCols:XD({style:`powerline`,charset:lo}),layout:()=>[]},o=Uj(t.drawnAt),s={action:a,activeSegment:o},c=Object.keys(e.looks),l=x_(e.presets),u=new Map([...Vb(e),...gx(e)]),d=dy({...Lj(a),...eM(a,o),...rM(a,o),...sM(a,o),...fM(a,o),...gM(s),...yM(o),looks:{fn:()=>c,argTypes:[],arity:{kind:`exact`}},presets:{fn:()=>l,argTypes:[],arity:{kind:`exact`}}},n.clock,t.drawnAt),f=FM(d,e.helpers),p=e=>d.parse(e,f),m=new Map,h=e=>{let t=m.get(e);if(t!==void 0)return t;let n=p(e);return m.set(e,n),n},g=new Map;for(let[t,n]of Cb)n in e.variables&&g.set(t,n);for(let[t,n]of Object.entries(e.variables))n.kind===`state`&&!g.has(n.key)&&g.set(n.key,t);for(let[t,n]of Object.entries(e.segments))if(n.vars)for(let[e,r]of Object.entries(n.vars))r.kind===`state`&&!g.has(r.key)&&g.set(r.key,`${t}.${e}`);a.compiled=Ej(p,e.actions,g,u);let _=[];for(let[n,i]of Object.entries(e.variables))try{PM(t,n,i,r)}catch(e){_.push(`Variable "${n}": ${e.message??String(e)}`)}for(let[n,i]of Object.entries(e.segments))if(i.vars)for(let[e,a]of Object.entries(i.vars))try{PM(t,`${n}.${e}`,a,r)}catch(t){_.push(`Variable "${n}.${e}": ${t.message??String(t)}`)}let v=Object.create(null);for(let[t,n]of Object.entries(e.segments)){let e=(e,n,r=p)=>{try{return r(e)}catch(e){throw Error(`Template parse error in segments.${t}.${n}: ${e.message}`,{cause:e})}};v[t]={when:n.when===void 0?void 0:e(n.when,`when`,h),template:e(n.template,`template`),bg:n.bg===void 0?void 0:e(n.bg,`bg`),fg:n.fg===void 0?void 0:e(n.fg,`fg`)}}let y=(e,t,n)=>{try{return h(e)}catch(e){throw Error(`Template parse error in ${t}.${n}: ${e.message}`,{cause:e})}},b=t.variableStore,x=t=>{let n=Hs(e.segments[t.name]),r=Object.create(null);for(let[e,i]of Object.entries(n)){let n=t.settings?.[e]??i.default,a=t.drafts?.[e];Object.defineProperty(r,e,{enumerable:!0,get:a===void 0?()=>n:()=>qs(i,String(b.read(a.variable)))??n})}return Object.freeze(r)},S=(e,t)=>{let n={path:t,when:e.when===void 0?void 0:y(e.when,t,`when`),parse:(e,n)=>y(e,t,n),compileChild:S,placementSettings:x};return jM(e.kind).compile(e,n)},C=new Map;for(let t of l){let{node:n,path:r}=w_(e,t);C.set(t,S(n,r))}let ee=new Map(Za.map(e=>[e,new Map])),te=[[`globals`,e.globals],...Object.entries(e.presets).map(([e,t])=>[`presets.${e}.globals`,t.globals??{}])];for(let[e,t]of te)for(let n of Za){let r=t[n];if(!Qa(r))continue;let i=`${e}.${n}`,a=ee.get(n),o=a.get(r);a.set(r,o===void 0?{where:i,template:RM(p,i,r)}:{where:`${o.where}, ${i}`,template:o.template})}return{segments:v,roots:C,activeSegment:o,menuRuntime:s,globalExpressions:ee,loadWarnings:_}}function RM(e,t,n){try{return e(n)}catch(e){throw Error(`${t} is not a valid template: ${e instanceof Error?e.message:String(e)}`)}}function zM(e,t,n){let r=e.globalExpressions.get(t).get(n);if(r===void 0)throw Error(`the ${t} rule ${JSON.stringify(n)} reached the render but no compiled template exists — registerDslConfig and the resolution disagree about isExpression`);return r}function BM(e,t){return e.template.evaluate(t).map(e=>e.plain).join(``)}function VM(e,t){return e.kind===`decided`?e.name:t}function HM(e,t,n,r,i,a,o,s){let{perSegmentSink:c,onSegmentError:l,onRenderWarning:u}=o??{};r.drawAt(_o(a.colorCompatibility));let{preset:d=y_}=s??{},f=T_(e,d),p=$i[s?.progression??bo(void 0,null,f.progression)];t.menuRuntime.action.progression=p;let m=s?.look??ro(`none`,e.looks),h=s?.theme??Fb(void 0,null,f.palette),g=(e,t)=>({...i,term:{cols:a.width},theme:{effective:e},look:{effective:t}});r.applyInput(g(VM(h,Wa),VM(m,to))),t.menuRuntime.action.chromeCols=YD(a),t.menuRuntime.action.padding=a.padding,t.menuRuntime.action.width=a.width,t.menuRuntime.action.seamCols=XD(a);let _=fy(n),v=eo(h,e=>{let n=zM(t,`palette`,e);return Pb(BM(n,_),n.where,e=>u?.(e))}),y=eo(m,n=>ro(BM(zM(t,`look`,n),_),e.looks));(v!==h||y!==m)&&r.applyInput(g(v.name,y.name));let b=v.value;t.menuRuntime.action.basePalette=b;let x=Mb(b,y.value);t.menuRuntime.action.palette=x,c?.clear();let S=n=>{let r=e.segments[n],i=t.segments[n];return r!==void 0&&i!==void 0?{seg:r,compiled:i}:void 0},C=(e,n,i,a,o)=>{try{let s=r.drawnAt(),{tint:c,disclosure:l}=Va(i,a,s),u=Wj(t.activeSegment,e.name,e.id,i,l,c),d=Cj(u,s,o.bg,o.fg,n),f=o.body.evaluate(n),p=o.trail?.evaluate(n)??[];return{styles:{closed:d,get trigger(){return zj(i,Aa(i,l,s).state,s)},get band(){return zj(i,Aa(i,l,s).plane,s)},disclosure:l},fragments:f,trail:p,drops:u.drops}}finally{t.activeSegment.current=null}},ee=(e,t,r)=>{let i=t&&uj(e.when,_),o={scope:_,palette:x,visible:i,padding:a.padding,region:r,perSegmentSink:c,onSegmentError:l,evaluateSegment:C,lookupSegment:S,renderChild:(e,t,n)=>ee(e,t,za(r,n)),renderBody:(e,t,n)=>ee(e,i&&t,Ba(n)),closeDisclosure:e=>Rj(n,e)};return jM(e.kind).render(e,o)},te=t.roots.get(d);if(te===void 0)throw Error(`Preset "${d}" has no compiled layout — registerDslConfig compiles one per declared preset and effectivePresetName collapses unknown names to "${y_}"; a miss here is merge/policy drift (have: ${[...t.roots.keys()].join(`, `)})`);let ne=e=>{if(!uj(e.when,_))return!1;if(e.kind===`container`)return!0;if(Tx(e.name)===void 0)return!1;try{return uj(t.segments[e.name].when,my(_,e.settings))}catch{return!0}};return t.menuRuntime.action.layout=()=>wM(te,ne).map(e=>e.flatMap(({name:e,address:t,settings:n})=>{let r=Tx(e);return r===void 0?[]:[{name:r,address:t,palette:Ab(n.theme,x)}]})),ee(te,!0,Ra(p)).map(e=>ZD(_j(e.cells,a),a)).join(`
185
- `)}var UM=class{kind=`box`;cell;lastChangedAt;constructor(e,t,n){this.name=e,this.type=t,YM(e,t,n,`initial value`),this.cell=_v.observable.box(n,{deep:!1}),this.lastChangedAt=Date.now()}read(){return this.cell.get()}set(e){YM(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}},WM=class{kind=`computed`;cell;constructor(e,t,n){this.name=e,this.type=t,this.cell=(0,_v.computed)(()=>{let e=n();return YM(this.name,this.type,e,`computed result`),e},{keepAlive:!0})}read(){return this.cell.get()}lastUpdatedMs(){return null}},GM=class{kind=`document`;cell;lastChangedAt;constructor(e,t){this.name=e,this.cell=_v.observable.box(JM(t),{deep:!1}),this.lastChangedAt=Date.now()}read(){return this.cell.get()}set(e){let t=JM(e);qM(this.cell.get(),t)||(this.cell.set(t),this.lastChangedAt=Date.now())}lastUpdatedMs(){return this.lastChangedAt}};function KM(e){return JSON.stringify(e)}function qM(e,t){return KM(e)===KM(t)}function JM(e){return e.kind===`ok`?{kind:`ok`,value:vv(e.value)}:e}function YM(e,t,n,r){let i=yv(n);if(i!==t)throw TypeError(`Variable "${e}": ${r} type ${i} does not match declared type ${t}`)}var XM=class{nodes=new Map;defineBox(e,t,n){this.assertNotDefined(e),this.nodes.set(e,new UM(e,t,n))}defineDocument(e,t){this.assertNotDefined(e),this.nodes.set(e,new GM(e,t))}defineComputed(e,t,n){this.assertNotDefined(e);let r=e=>this.read(e);this.nodes.set(e,new WM(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,_v.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,_v.runInAction)(()=>n.set(t))}runInAction(e){(0,_v.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 KM(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 ZM(e,t,n){return e+`\0`+t+`\0`+(n??``)}function QM(e,t){return new Set(x_(e.presets).filter(n=>w_(e,n).path===`root`?t.root!==void 0:t.presets?.[n]?.root!==void 0))}function $M(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 eN(e,t){let n=new Map;for(let t of ww(e.projectDir,e.cwd,e.configFile)){let{dir:e,name:r}=$M(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 tN(e){return e.filter(Boolean).join(`
186
- `)||null}var nN=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=ZM(e,t,n),i=this.entries.get(r);if(i)return this.entries.delete(r),this.entries.set(r,i),i;let a=this.loadFromDisk(e,t,n),o={projectDir:e,cwd:t,configFile:n,configFilePath:null,lastError:a.error,lastWarning:a.warning,state:a.state??this.buildState(t,null,[]),watcher:null,watcherKey:null};if(this.entries.set(r,o),this.entries.size>this.maxEntries){let e=this.entries.entries().next().value;if(e!==void 0){let[t,n]=e;n.state.registry.dispose(),n.state.validatorDisposers.forEach(e=>e()),n.watcher?.release(),this.entries.delete(t)}}return this.refreshWatcher(o,a.resolvedPath),this.observers.onReload?.(o),o}reload(e,t,n){this.reloadInto(this.getOrCreate(e,t,n))}reloadInto(e){let t=this.loadFromDisk(e.projectDir,e.cwd,e.configFile);e.lastWarning=t.warning,e.lastError=t.error,t.state!==null&&(e.state.registry.dispose(),e.state.validatorDisposers.forEach(e=>e()),e.state=t.state),this.refreshWatcher(e,t.resolvedPath),this.observers.onReload?.(e)}loadFromDisk(e,t,n){let r=Ew(e,t,n),i=r.kind===`file`?r.path:null,a=[Aw(e,t),Ow(r)],o;try{o=this.buildState(t,i,a)}catch(e){return e instanceof bs&&a.push(...e.warnings),{resolvedPath:i,warning:tN(a),state:null,error:e instanceof bs||e instanceof Error?e.message:String(e)}}return{resolvedPath:i,warning:tN(a),state:o,error:null}}buildState(e,t,n){let r=jw(t,ek),{config:i,raw:a}=r;n.push(...r.warnings);let o=Pw(r,t??`<default>`),s=new XM,c=new vb(s,o.globals.default_empty_value??``,this.deps.gitService,this.deps.sessionState),l,u=[];try{l=LM(o,c,{cwd:e}),n.push(...l.loadWarnings);for(let{key:e,spec:t}of vA(o))u.push(dA(e,t));for(let{key:e,spec:t}of zO(o))u.push(BO(e,t))}catch(e){for(let e of u)e();throw c.dispose(),e}return{config:o,store:s,registry:c,compiled:l,neededInputPaths:kk(o),lastRenderCellsBySegment:new Map,validatorDisposers:u,authoredRoots:QM(i,a)}}refreshWatcher(e,t){e.configFilePath=t;let n=eN(e,t),r=`config:${e.projectDir}:${e.cwd}:${e.configFile??``}:${JSON.stringify(n)}`;e.watcher!==null&&e.watcherKey===r||(e.watcher?.release(),e.watcherKey=r,e.watcher=this.deps.watchers.acquire(r,n,()=>this.onConfigChanged(e)))}onConfigChanged(e){Q(`info`,`config change detected for entry projectDir=${e.projectDir} cwd=${e.cwd}`),this.reloadInto(e)}get size(){return this.entries.size}firstState(){return this.entries.values().next().value?.state??null}};const rN=16384;var iN=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<rN){this.rollingTimestamps.push(e);return}this.rollingTimestamps[this.rollingHead]=e,this.rollingHead=(this.rollingHead+1)%rN}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:EE,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 aN={load:()=>({}),save:()=>{},flush:()=>{}};function oN(e){let t=new Map;for(let[n,r]of Object.entries(e))t.set(n,new Map(Object.entries(r)));return t}var sN=class{sessions;storage;atom=(0,_v.createAtom)(`SessionState`);constructor(e=aN,t=256){this.maxSessions=t,this.storage=e,this.sessions=new Map,this.hydrateFromStorage()}useStorage(e){this.storage=e,this.hydrateFromStorage()}hydrateFromStorage(){this.sessions=oN(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,_v.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,_v.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,_v.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 cN=(e,t)=>O(t);function lN(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 uN=class{timer=null;pending=null;constructor(e,t=500,n=cN){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 lN(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 dN={default_empty_value:`string`,default_separator:`string`,palette:`string`,look:`string`,preset:`string`,style:`string`,progression:`string`,autoWrap:`boolean`,padding:`number`,charset:`string`,updateNotice:`boolean`,colorCompatibility:`string`,menuGlyph:`string`},fN=new Set([`1`,`true`]),pN=new Set([`0`,`false`,``]);function mN(e,t){let n=zN(e),r=n.scope===`segment-palette`?`string`:dN[n.field];if(r===`string`)return JSON.stringify(t);if(r===`number`){let n=Number(t);if(!Number.isFinite(n))throw Error(`persistValueText: "${e}" expects a number, got "${t}"`);return String(n)}if(fN.has(t))return`true`;if(pN.has(t))return`false`;throw Error(`persistValueText: "${e}" expects boolean-ish (1, 0, true, false), got "${t}"`)}function hN(e){try{return r.readFileSync(e,`utf8`)}catch(e){if(e.code===`ENOENT`)return null;throw e}}function gN(e,t,n){try{if(t===null){r.rmSync(e,{force:!0});return}r.mkdirSync(c.dirname(e),{recursive:!0}),k(e,t)}catch(t){let r=`config write failed (${e}): ${t.message}`;throw n(`error`,r),Error(r)}}function _N(e){return/^\s*$/.test(e)?null:Io(e)}function vN(e,t){return e!==null&&Ro(e,t)!==void 0}function yN(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(yN),...i}}return e}function bN(e){if(!jc(e))return yN(e);let{rows:t,...n}=e;return{rows:Object.fromEntries(Object.entries(t).map(([e,t])=>[e,yN(t)])),...n}}const xN=QO,SN=xN.segments,CN=xN.presets,wN=xN.root;function TN(e,t,n,r){if(!vN(e,t)&&n===void 0)throw new $(`cannot edit ${r}: neither the config file nor the bundled default declares ${t.join(`.`)}`)}function EN(e,t){let n=$b(t);return t.scope===`segment-palette`&&TN(e,[`segments`,t.segment],SN[t.segment],n.join(`.`)),n}function DN(e){return Io(Ko(e))}function ON(){return Object.entries(wN.rows).map(([e,t])=>{let n=yN(t);return{path:[`root`],fragment:DN({rows:{[e]:n}}),unit:{path:[`root`,`rows`,e],value:n}}})}function kN(e,t){let n=e===null?void 0:Ro(e,t);return n===void 0?null:{path:t,fragment:n,unit:null}}function AN(e,t){if(t===void 0)return null;let n=bN(t);return{path:e,fragment:DN(n),unit:{path:e,value:n}}}function jN(e,t){let n=[`presets`,t],r=[...n,`root`],i=CN[t];TN(e,n,i,r.join(`.`));let a=kN(e,r)??AN(r,i?.root);return a!==null&&ps(a.fragment)?a:null}function MN(e,t){let n=fs(t.fragment);return n===null?new Map([[`#`,{path:t.path,unit:t.unit,node:t.fragment}]]):new Map([...e,...n.map(e=>[e.key,{path:[...t.path,`rows`,e.key],unit:t.unit,node:e.value}])])}function NN(e,t){return[...ON(),kN(e,[`root`]),jN(e,t)].filter(e=>e!==null).reduce(MN,new Map)}function PN(e,t,n){for(let{node:r,...i}of NN(e,t).values())if(hs(r,n))return i;throw new $(`${FN(e,t).join(`.`)} holds no placement "${n}" — the bar you clicked is stale (it reloads on the next render), or the action names a placement the layout never held`)}function FN(e,t){return jN(e,t)?.path??[`root`]}function IN(e,t){return t.scope===`preset-root`?FN(e,t.preset):$b(t)}function LN(e,{unit:t}){return t===null?e:os(e,t.path,Ko(t.value),Wo)}function RN(e){let t=Qb(e);if(t===null)throw Error(`"${e}" is not a valid persist target`);return t}function zN(e){let t=RN(e);if(t.scope===`preset-root`)throw Error(`"${e}" names a layout, not a value`);return t}function BN(e,t,n,r){VN(t,r),gN(t,r,e.logger),e.record(t,n,r)}function VN(e,t){try{return Pw(Mw(e,t,ek),e)}catch(e){throw e instanceof bs?new $(`refused: the config file would not load after this click — ${e.message}`):e}}function HN(e,t){let n=zN(t),r=_N(hN(e)??``),i=r===null?void 0:Ro(r,$b(n));return i!==void 0&&`value`in i?i.value:void 0}function UN(e,t,n){WN(e,t,n,[])}function WN(e,t,n,r){let i=hN(t);BN(e,t,i,GN(n.reduce((e,[t,n])=>os(e,EN(_N(e),zN(t)),mN(t,n),Wo),i??``),t,r,e=>e))}function GN(e,t,n,r){return n.reduce((e,{preset:n,id:i,setting:a,value:o})=>{let s=r(e,n,i),c=PN(_N(s),n,i),l=ys(LN(s,c),c.path,i,a,Ko(o));if(l===null)throw new $(`${c.path.join(`.`)} in ${t} has no placement "${i}" — the bar you clicked is stale (it reloads on the next render)`);return l},e)}function KN(e,t,n){let r=_N(e),i=[`presets`,t,`root`];for(let[a,{path:o,unit:s,node:c}]of NN(r,t)){if(!hs(c,n))continue;if(i.every((e,t)=>o[t]===e))return e;let l=s===null?Bo(e,c):Ko(s.value);if(a!==`#`)return os(e,[...i,`rows`,a],l,Wo);if(jN(r,t)!==null)throw new $(`cannot give preset "${t}" its own copy of ${o.join(`.`)}: it already stages rows of its own over that tree`);return os(e,i,l,Wo)}return e}function qN(e,t){return cs(e,t,t[0]===`presets`&&t.length>2&&!nk(t[1])?2:0)}function JN(e,t,n){let r=n.map(RN),i=hN(t);if(i===null)return;let a=r.reduce((e,t)=>qN(e,IN(_N(e),t)),i);a!==i&&BN(e,t,i,a)}function YN(e){let t=e===null?void 0:Ro(e,[`presets`]),n=new Set([...tk,...t?.kind===`object`?t.entries.map(e=>e.key):[]].map(fu));return Array.from({length:n.size+1},(e,t)=>`custom-${t+1}`).find(e=>!n.has(fu(e)))}function XN(e,t,n,r,i,a){let o=hN(t),s=_N(o??``),c=YN(s),l=[`presets`,c],u=jN(s,n),d=[...u===null?[]:[[[...l,`root`],u.unit===null?Bo(o??``,u.fragment):Ko(u.unit.value)]],...Object.keys(r).length===0?[]:[[[...l,`globals`],Ko(r)]]],f=i.map(([e,t])=>{let n=Zb(c,e);return[EN(s,zN(n)),mN(n,t)]});return BN(e,t,o,GN([...d,...f].reduce((e,[t,n])=>os(e,t,n,Wo),os(o??``,l,`{}`,Wo)),t,a.map(e=>({...e,preset:c})),KN)),c}function ZN(e,t,n){if(nk(n))throw new $(`cannot delete preset "${n}": it is bundled — reset its settings instead`);let r=[`presets`,n],i=hN(t),a=_N(i??``);if(i===null||a===null||Ro(a,r)===void 0)throw new $(`cannot delete preset "${n}": ${t} declares no ${r.join(`.`)} — the bar you clicked is stale; it reloads on the next render`);let o=Ro(a,[`globals`,`preset`]);BN(e,t,i,[r,...o?.kind===`string`&&o.value===n?[[`globals`,`preset`]]:[]].reduce((e,t)=>qN(e,t),i))}function QN(e,t,n,r){let i=RN(n);if(i.scope!==`preset-root`)throw Error(`"${n}" is not a "presets.<name>.root" target`);let a=hN(t),o=r.op===`remove`?r.target:r.anchor,s=PN(_N(a??``),i.preset,o),c=LN(a??``,s),{after:l,placed:u}=$N(c,s.path,r,()=>{let e=VN(t,c);return x_(e.presets).map(t=>w_(e,t).node)});if(l===null)throw new $(`${s.path.join(`.`)} in ${t} has no placement "${o}" — the bar you clicked is stale (it reloads on the next render), or the action names a placement the layout never held`);return BN(e,t,a,l),u}function $N(e,t,n,r){switch(n.op){case`remove`:return{after:_s(e,t,n.target),placed:null};case`insert`:{let i=xO(n.segment,n.anchor,r());return{after:vs(e,t,i,n.anchor,n.relation),placed:i}}}}const eP={load:()=>({}),save:()=>{}},tP=new Set(xb.map(e=>e.sessionKey)),nP=e=>tP.has(e)||e.startsWith(H_),rP={past:[],future:[]},iP=e=>e.kind===`session`?`session:${e.key}`:`file:${e.file}`;var aP=class{state=new Map;constructor(e,t,n=eP){this.sessionState=e,this.logger=t,this.storage=n,this.state=new Map(Object.entries(n.load()))}useStorage(e){this.storage=e,this.state=new Map(Object.entries(e.load()))}depth(e){let{past:t,future:n}=this.state.get(e)??rP;return{undo:t.length,redo:n.length}}history(e){return this.state.get(e)??rP}begin(){let e=new Map,t=(t,n)=>{let r=e.get(t)??new Map,i=r.get(iP(n));r.set(iP(n),i===void 0?n:{...n,before:i.before}),e.set(t,r)},n=this.sessionState,r=(e,r,i)=>{let a=r.filter(nP).map(t=>({key:t,before:n.get(e,t)}));i();for(let{key:r,before:i}of a)t(e,{kind:`session`,key:r,before:i,after:n.get(e,r)})};return{sessionState:{get:(e,t)=>n.get(e,t),set:(e,t,i)=>r(e,[t],()=>n.set(e,t,i)),setBatch:(e,t)=>r(e,t.map(e=>e.key),()=>n.setBatch(e,t)),clear:(e,t)=>r(e,[t],()=>n.clear(e,t))},file:(e,n,r,i)=>t(e,{kind:`file`,file:n,before:r,after:i}),commit:()=>{let t=[...e];e.clear();for(let[e,n]of t){let t=[...n.values()].filter(e=>e.before!==e.after);t.length!==0&&this.put(e,{past:cP([...this.history(e).past,t]),future:[]})}}}}undo(e){let{past:t,future:n}=this.history(e),r=t.at(-1);if(r===void 0)throw new $(`undo: nothing to undo`);return this.apply(e,r,`before`,`undo`,{past:t.slice(0,-1),future:cP([...n,r])}),r}redo(e){let{past:t,future:n}=this.history(e),r=n.at(-1);if(r===void 0)throw new $(`redo: nothing to redo`);return this.apply(e,r,`after`,`redo`,{past:cP([...t,r]),future:n.slice(0,-1)}),r}apply(e,t,n,r,i){let a=n===`before`?`after`:`before`,o=t.filter(t=>this.read(e,t)!==t[a]);if(o.length>0){let t=new Set(o.map(iP));throw this.put(e,{past:lP(this.history(e).past,t),future:lP(this.history(e).future,t)}),new $(`${r}: ${o.map(dP).join(`, `)} changed since that edit — refusing to overwrite it; this session's undo history no longer steps it`)}let s=[];try{for(let r of t)this.write(e,r,r[n]),s.push(r);this.put(e,i)}catch(t){try{for(let t of s.reverse())this.write(e,t,t[a])}catch(e){throw Error(`${t.message}; and putting the step back failed, so it is half-applied: ${e.message}`)}throw t}}read(e,t){return t.kind===`session`?this.sessionState.get(e,t.key):hN(t.file)}write(e,t,n){t.kind===`file`?gN(t.file,n,this.logger):n===null?this.sessionState.clear(e,t.key):this.sessionState.set(e,t.key,n)}put(e,t){let n=new Map(this.state);for(n.delete(e),(t.past.length>0||t.future.length>0)&&n.set(e,t);n.size>32||oP(n)>8388608;){let[e,t]=n.entries().next().value;n.size>1?n.delete(e):n.set(e,sP(t))}this.storage.save(Object.fromEntries(n)),this.state=n}};function oP(e){let t=0;for(let{past:n,future:r}of e.values())for(let e of[...n,...r])for(let n of e)t+=(n.before?.length??0)+(n.after?.length??0);return t}function sP({past:e,future:t}){return e.length>0?{past:e.slice(1),future:t}:{past:e,future:t.slice(1)}}function cP(e){return e.slice(-50)}function lP(e,t){return e.map(e=>e.filter(e=>!t.has(iP(e)))).filter(e=>e.length>0)}function uP(e){return e.map(dP).join(`, `)}function dP(e){return e.kind===`session`?`session setting "${e.key}"`:e.file}function fP(e){if(typeof e!=`object`||!e)return!1;let t=e,n=e=>e===null||typeof e==`string`;return(t.kind===`session`&&typeof t.key==`string`||t.kind===`file`&&typeof t.file==`string`)&&n(t.before)&&n(t.after)}function pP(e){return Array.isArray(e)&&e.every(e=>Array.isArray(e)&&e.every(fP))}function mP(e){if(typeof e!=`object`||!e)return!1;let t=e;return pP(t.past)&&pP(t.future)}function hP(e,t){return{load:()=>{let n;try{n=r.readFileSync(e,`utf8`)}catch(e){let n=e.code;return n!==`ENOENT`&&t(`warn`,`settings-history read failed (${n}); starting empty`),{}}try{let e=JSON.parse(n);if(typeof e==`object`&&e&&!Array.isArray(e)&&Object.values(e).every(mP))return e}catch{}return t(`warn`,`settings-history load: unexpected shape, starting empty`),{}},save:n=>{try{r.mkdirSync(c.dirname(e),{recursive:!0}),k(e,JSON.stringify(n),384)}catch(e){let n=`settings-history write failed — the change landed but is not undoable: ${e.message}`;throw t(`error`,n),Error(n)}}}}function gP(e,t,n,r){let i=Oe({bin:`tmux`,args:[`-S`,e.socket,...n],timeoutMs:2e3,category:t,stdinInput:r});if(i.ok)return{kind:`ok`,stdout:i.stdout};if(i.reason===`rate-limited`)return{kind:`rate-limited`,reason:i.error??`rate-limited`};let a=i.error??[i.reason,i.stderr.trim()].filter(e=>e!==``).join(`: `);return{kind:`failed`,reason:`tmux ${n[0]} failed (${a})`}}function _P(e){let t=gP(e,`doctor.tmux`,[`display`,`-p`,`-t`,e.pane,`#{client_termfeatures}`]);return t.kind===`ok`?{kind:`ok`,value:t.stdout.trim().split(`,`).filter(e=>e!==``)}:{kind:`failed`,reason:t.reason}}function vP(){return{probeTmux:_P}}function yP(e){let t=ME(e).env;if(t===void 0)return{path:e,env:{}};if(typeof t!=`object`||!t||Array.isArray(t))throw Error(`cannot read ${e}: \`env\` is not an object`);return{path:e,env:t}}function bP(e,t){return t===void 0?{kind:`unreported`}:t===null?{kind:`outside`}:{kind:`inside`,hint:t,termfeatures:e.probeTmux(t)}}function xP(e,t){return{tmux:bP(e,t.tmux),claudeSettings:yP(kE(OE(t.claudeConfigDir)))}}function SP(e,t){let n=t.claudeSettings.path;switch(e.kind){case`claude-settings-env`:{let i=os(jE(n),[`env`,e.name],JSON.stringify(e.value),Go);return r.mkdirSync(c.dirname(n),{recursive:!0}),k(n,i),{...t,claudeSettings:yP(n)}}default:return e.kind}}const CP=/^─{20,}/,wP=/^❯(\s|$)/,TP=/›\s*stashed$/;function EP(e){if(e.inMode)return{kind:`in-mode`};let t=e.screen.map(e=>e.trimEnd()),n=t.flatMap((e,t)=>CP.test(e)?[t]:[]).at(-2);return n===void 0||!wP.test(t[n+1]??``)?{kind:`no-prompt`}:TP.test(t[n-1]??``)?{kind:`stashed`}:{kind:`ready`}}const DP={"in-mode":`the Claude Code pane is in tmux copy mode — leave it (q) and click again`,stashed:`Claude Code is holding a stashed prompt (ctrl+s) — restore or send it, then click again`,"no-prompt":`Claude Code is not at its prompt (a dialog or picker is open) — close it and click again`};function OP(e,t,n){if(t===void 0)return{kind:`refused`,reason:`this session's statusline client reports no tmux facts (it predates this daemon) — rebuild or reinstall cc-candybar`};if(t===null)return{kind:`refused`,reason:`this Claude Code is not running inside tmux — the bar can only type into a tmux pane`};let r=EP(e.read(t));if(r.kind!==`ready`)return{kind:`refused`,reason:DP[r.kind]};let i=e.type(t,n);return i.kind===`typed`?{kind:`typed`,pane:t.pane}:i}const kP=`cc-candybar-slash`;function AP(e,t,n,r){let i=gP(e,t,n,r);if(i.kind===`failed`)throw Error(i.reason);return i}function jP(e){let t=AP(e,`claude-input.read`,[`display`,`-p`,`-t`,e.pane,`#{pane_in_mode}`,`;`,`capture-pane`,`-p`,`-t`,e.pane]);if(t.kind===`rate-limited`)throw Error(t.reason);let[n=``,...r]=t.stdout.split(`
187
- `);return{inMode:n!==`0`,screen:r}}function MP(e,t){let n=AP(e,`claude-input.type`,[`load-buffer`,`-b`,kP,`-`,`;`,`send-keys`,`-t`,e.pane,`C-s`,`;`,`paste-buffer`,`-p`,`-d`,`-b`,kP,`-t`,e.pane,`;`,`send-keys`,`-t`,e.pane,`Enter`],t);return n.kind===`ok`?{kind:`typed`}:{kind:`refused`,reason:`cc-candybar typed a command moments ago — click again in a second (${n.reason})`}}function NP(){return{read:jP,type:MP}}function PP(e){if(!e)throw new $(`session id is required`);if(e.includes(`/`)||e.includes(`..`))throw new $(`invalid session id "${e}"`);return e}function FP(e){return IP(()=>decodeURIComponent(e))}function IP(e){try{return e()}catch(e){throw e instanceof URIError?new $(`malformed wire encoding: ${e.message}`):e}}function LP(e,t){let n=Oe({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 RP=(e,t)=>LP(FP(e),t),zP=(e,t)=>{let n=Oe({bin:`/usr/bin/open`,args:[`-a`,`Visual Studio Code`,FP(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`})`)}},BP=(e,t)=>LP(FP(e),t),VP=(e,t)=>LP(FP(e),t),HP=(e,t)=>{let n=PP(FP(e));t.sessionState.get(n,`toolbar-expanded`)?t.sessionState.clear(n,`toolbar-expanded`):t.sessionState.set(n,`toolbar-expanded`,`1`)},UP=(e,t)=>{let[n=``,...r]=IP(()=>yE(e)),i=PP(n);if(r.length===0)throw new $(`set-state: <key>/<value> is required (have keys: ${uA().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: ${uA().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=fA(t,n);if(!i.ok)throw new $(`set-state: pair ${e/2+1}: ${i.reason}`);a.push({key:t,value:i.value})}qP(t,i,`set-state`,a),t.sessionState.setBatch(i,a);let o=a.map(e=>`${e.key}=${e.value}`).join(` `);t.dlog(`info`,`set-state: ${o} (session=${i})`)},WP=/^-?\d+$/;function GP(e,t,n,r){let i=e+t;return i>r?e===r?n:r:i<n?e===n?r:n:i}const KP=(e,t)=>{let[n=``,r=``,i=``]=IP(()=>yE(e)),a=PP(n);if(!r)throw new $(`step-state: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!WP.test(i))throw new $(`step-state: delta must be an integer, got "${i}"`);let o=parseInt(i,10),s=pA(r);if(!s)throw new $(`step-state: key "${r}" is not a bounded (range) state key (have keys: ${uA().join(`, `)})`);let c=t.sessionState.get(a,r),l=c&&WP.test(c)?JP(s,parseInt(c,10)):YP(`step-state`,r,s,gA(t.configFor($P(t,a)),e=>t.sessionState.get(a,e),r)),u=GP(l,o,s.min,s.max),d=fA(r,String(u));if(!d.ok)throw new $(`step-state: ${d.reason}`);qP(t,a,`step-state`,[{key:r,value:d.value}]),t.sessionState.set(a,r,d.value),t.dlog(`info`,`step-state: ${r} ${l}→${d.value} (by ${o}, session=${a})`)};function qP(e,t,n,r){let i=r.filter(e=>e.key.startsWith(H_));if(i.length===0)return;let a=Zk(e.configFor($P(e,t)),n=>e.sessionState.get(t,n),i);if(a.length>0)throw new $(`${n}: refused — ${a.join(`; `)}`)}function JP(e,t){return Math.max(e.min,Math.min(e.max,t))}function YP(e,t,n,r){if(r===null)return n.min;if(!WP.test(r))throw new $(`${e}: "${t}" shows ${JSON.stringify(r)} before any click, not an integer to step`);return JP(n,parseInt(r,10))}const XP=`render-origin`;function ZP(e){return JSON.stringify(e)}function QP(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 $P(e,t){let n=e.sessionState.get(t,XP);if(n===null)throw new $(`session ${t} has not rendered yet — no config to act on`);return QP(n)}function eF(e){return Dw(e.projectDir,e.cwd,e.configFile??void 0)}function tF(e,t){return eF($P(e,t))}function nF(e,t){return{record:(n,r,i)=>e.journal.file(t,n,r,i),logger:e.dlog}}const rF=(e,t)=>{let[n=``,r=``,i=``]=IP(()=>yE(e)),a=PP(n);if(!r)throw new $(`set-config: <key>/<value> is required (have keys: ${MO().join(`, `)})`);let o=NO(r,i);if(!o.ok)throw new $(`set-config: ${o.reason}`);let s=tF(t,a);UN(nF(t,a),s,[[r,o.value]]),t.dlog(`info`,`set-config: ${r}=${o.value} → ${s} (session=${a})`)},iF=(e,t)=>{let[n=``,r=``,i=``]=IP(()=>yE(e)),a=PP(n);if(!r)throw new $(`step-config: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!WP.test(i))throw new $(`step-config: delta must be an integer, got "${i}"`);let o=parseInt(i,10),s=PO(r);if(!s)throw new $(`step-config: key "${r}" is not a bounded (range) config key (have keys: ${MO().join(`, `)})`);let c=$P(t,a),l=eF(c),u=HN(l,r),d=typeof u==`number`?JP(s,u):YP(`step-config`,r,s,IO(t.configFor(c),r)),f=GP(d,o,s.min,s.max),p=NO(r,String(f));if(!p.ok)throw new $(`step-config: ${p.reason}`);UN(nF(t,a),l,[[r,p.value]]),t.dlog(`info`,`step-config: ${r} ${d}→${p.value} (by ${o}) → ${l} (session=${a})`)},aF=(e,t)=>{let[n=``]=IP(()=>yE(e)),r=PP(n),i=$P(t,r),a=t.configFor(i),o=e=>t.sessionState.get(r,e),s=Yk(a,o),c=Xk(a,o);if(s.length+c.length===0){t.dlog(`info`,`save: nothing unsaved (session=${r})`);return}let l=s.map(e=>{let t=fA(e.sessionKey,e.value);if(!t.ok)throw new $(`save: ${t.reason}`);return[e.target,t.value]});sF(`save`,c);let u=eF(i);WN(nF(t,r),u,l,c),t.reloadConfig(i);for(let e of[...s.map(e=>e.sessionKey),...c.map(e=>e.key)])t.sessionState.clear(r,e);t.dlog(`info`,`save: ${[...l.map(([e,t])=>`${e}=${t}`),...c.map(oF)].join(` `)} → ${u} (session=${r})`)},oF=e=>`${e.preset}/${e.id}.settings.${e.setting}=${Ks(e.value)}`;function sF(e,t){for(let n of t){let t=fA(n.key,Ks(n.value));if(!t.ok)throw new $(`${e}: ${t.reason}`)}}const cF=(e,t)=>{let[n=``]=IP(()=>yE(e)),r=PP(n),i=$P(t,r),a=eA(t.configFor(i),e=>t.sessionState.get(r,e)),o=a.picks.map(e=>{let t=fA(e.sessionKey,e.value);if(!t.ok)throw new $(`save-preset: ${t.reason}`);return[e.configKey,t.value]});sF(`save-preset`,a.placements);let s=eF(i),c=XN(nF(t,r),s,a.from,a.globals,o,a.placements);t.reloadConfig(i);for(let e of[...xb.map(e=>e.sessionKey),...a.placements.map(e=>e.key)])t.sessionState.clear(r,e);t.sessionState.set(r,bb.preset.sessionKey,c),t.dlog(`info`,`save-preset: ${[`${c} from=${a.from}`,...o.map(([e,t])=>`${e}=${t}`),...a.placements.map(oF)].join(` `)} → ${s} (session=${r})`)},lF=(e,t)=>{let[n=``,r=``]=IP(()=>yE(e)),i=PP(n);if(!r)throw new $(`delete-preset: <name> is required (shape: <sessionId>/<name>)`);let a=$P(t,i),o=eF(a);ZN(nF(t,i),o,r),t.reloadConfig(a);let s=bb.preset.sessionKey;t.sessionState.get(i,s)===r&&t.sessionState.clear(i,s),t.dlog(`info`,`delete-preset: ${r} ← ${o} (session=${i})`)},uF=(e,t)=>{let[n=``,...r]=IP(()=>yE(e)),i=PP(n),a=MO(),o=r.length===0?[``]:r.filter(e=>!a.includes(e));if(o.length>0)throw new $(`reset-config: unknown config key "${o.join(`", "`)}" (have: ${a.join(`, `)})`);let s=$P(t,i),c=eF(s),l=r.map(tA),u=l.flatMap(e=>e.fileKeys),d=l.flatMap(e=>e.sessionKeys);JN(nF(t,i),c,u),t.reloadConfig(s);for(let e of d)t.sessionState.clear(i,e);t.dlog(`info`,`reset-config: ${[...u,...d.map(e=>`session:${e}`)].join(` `)} ← ${c} (session=${i})`)};function dF(e,t){let n=(e,t)=>[...js(w_(e,t).node)].filter(e=>e.kind===`segment`),r=new Set(x_(t.presets).flatMap(e=>n(t,e).map(t=>`${e}\0${Ds(t)}`)));return x_(e.presets).flatMap(t=>n(e,t).flatMap(e=>r.has(`${t}\0${Ds(e)}`)?[]:Object.values(e.drafts??{}).map(e=>e.key)))}const fF=(e,t)=>{let[n=``,r=``,i=``]=IP(()=>yE(e)),a=PP(n);if(!r)throw new $(`apply-layout-op: <key>/<op> is required (have: ${MO().join(`, `)})`);let o=NO(r,i);if(!o.ok)throw new $(`apply-layout-op: ${o.reason}`);let s=bO(o.value);if(s===null)throw new $(`apply-layout-op: "${o.value}" is not a layout op token`);let c=$P(t,a),l=eF(c),u=t.configFor(c),d=QN(nF(t,a),l,r,s);t.reloadConfig(c);let f=dF(u,t.configFor(c)).filter(e=>t.sessionState.get(a,e)!==null);for(let e of f)t.sessionState.clear(a,e);t.dlog(`info`,`apply-layout-op: ${r} ${o.value} → ${l} placed=${JSON.stringify(d)} released=${JSON.stringify(f)} (session=${a})`)},pF=(e,t)=>{let[n=``]=IP(()=>yE(e)),r=PP(n);t.journal.commit();let i=t.history.undo(r);t.dlog(`info`,`undo: restored ${uP(i)} (session=${r})`)},mF=(e,t)=>{let[n=``]=IP(()=>yE(e)),r=PP(n);t.journal.commit();let i=t.history.redo(r);t.dlog(`info`,`redo: re-applied ${uP(i)} (session=${r})`)},hF=(e,t)=>{PP(FP(e)),t.applyUpdate()},gF=`client-hints`;function _F(e,t){let n=e.sessionState.get(t,gF);if(n===null)throw new $(`session ${t} has not rendered yet — no client facts are recorded for it`);let r;try{r=JSON.parse(n)}catch{throw new $(`client hints record is not JSON: ${n}`)}if(typeof r!=`object`||!r)throw new $(`client hints record is not an object: ${n}`);return Vw(r)}function vF(e,t,n){let r=Lx(n);e.sessionState.setBatch(t,Vx(r)),e.dlog(`info`,`doctor: ${r.map(e=>`${e.check.name}=${e.verdict.ok?`ok`:`failed`}`).join(` `)} (session=${t})`)}const yF=(e,t)=>{let n=PP(FP(e));vF(t,n,xP(t.doctor,_F(t,n)))},bF=(e,t)=>{let[n=``,r=``]=IP(()=>yE(e)),i=PP(n),a=Rx(r);if(a===void 0)throw new $(`doctor-fix: unknown check "${r}"`);let o=xP(t.doctor,_F(t,i)),s=a.probe(o);if(s.ok||s.fix===void 0)throw new $(`doctor-fix: ${a.label} — ${s.ok?`nothing to fix`:s.reason}`);let c=SP(s.fix,o);t.dlog(`info`,`doctor-fix: ${a.name} → ${s.fix.kind} ${s.fix.name}=${s.fix.value} (session=${i})`),vF(t,i,c)},xF=(e,t)=>{let[n=``,...r]=IP(()=>yE(e)),i=PP(n),a=$P(t,i),o=Object.values(t.configFor(a).actions).filter(e=>`ceiling`in e).find(e=>{let t=nC(e);return t.length===r.length&&t.every((e,t)=>e===r[t])});if(o===void 0)throw new $(`ceiling: "${r.join(` `)}" is not a move this config declares`);let s=o.ceiling===`set`?{kind:`set`,to:o.to}:{kind:`clear`};t.memento.move({sessionId:i,projectDir:a.projectDir,cwd:a.cwd},s),t.dlog(`info`,`ceiling: ${r.join(` `)} (session=${i})`)},SF=(e,t)=>{let[n=``,r=``]=IP(()=>yE(e)),i=PP(n),a=Object.values(t.configFor($P(t,i)).actions).filter(e=>`slash`in e),o=a.find(e=>e.slash===r);if(o===void 0)throw new $(`${JSON.stringify(r)} is not a command this config declares (it declares: ${[...new Set(a.map(e=>e.slash))].join(`, `)||`none`})`);let s=OP(t.claudeInput,_F(t,i).tmux,o.slash);if(s.kind===`refused`)throw t.dlog(`warn`,`slash: ${r} refused — ${s.reason} (session=${i})`),new $(`${r} was not typed: ${s.reason}`);t.dlog(`info`,`slash: typed ${r} into ${s.pane} (session=${i})`)},CF=`config-override`,wF=new Map([[$T,RP],[`load-config`,(e,t)=>{let n=e.indexOf(`/`);if(n===-1)throw new $(`load-config: expected <sessionId>/<path> (missing separator)`);let r=PP(IP(()=>decodeURIComponent(e.slice(0,n)))),i=IP(()=>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,CF),t.dlog(`info`,`load-config: override cleared (session=${r})`)):(t.sessionState.set(r,CF,i),t.dlog(`info`,`load-config: ${i} (session=${r})`))}],[eE,zP],[ZT,UP],[QT,KP],[iE,rF],[aE,iF],[lE,uF],[oE,aF],[sE,cF],[cE,lF],[uE,fF],[dE,pF],[fE,mF],[nE,BP],[rE,VP],[tE,HP],[pE,hF],[mE,yF],[hE,bF],[gE,xF],[_E,SF]]),TF=new Set([ZT,QT,iE,aE,lE,oE,sE,cE,uE,dE,fE,tE,pE,mE,hE,gE,_E]),EF=(e,t)=>{let n=[],r=!1,i=null;for(let{verb:a,value:o}of CE(xE(e))){if(!i&&TF.has(a)){let e=yE(o);e.length>0&&e[0]&&(i=e[0])}let e=wF.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(`
188
- `));let e=`dispatch: ${n.join(`; `)}`;throw r?Error(e):new $(e)}};function DF(e){return(t,n)=>{let r=n.history.begin(),i=[];try{e(t,{...n,sessionState:r.sessionState,journal:r})}catch(e){i.push(e)}try{r.commit()}catch(e){i.push(e)}if(i.length===1)throw i[0];if(i.length>1)throw Error(i.map(e=>String(e.message??e)).join(`; `))}}const OF=new Map([...wF,[XT,EF]].map(([e,t])=>[e,DF(t)]));Object.freeze([...OF.keys()]);const kF=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`]),AF=[[`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 jF(e){let t={missingRequired:[],typeMismatches:[],unknownTopLevelFields:[]},n=typeof e==`object`&&e&&!Array.isArray(e)?e:{};for(let[e,r]of AF){let i=NF(n,e);if(i==null)t.missingRequired.push(e);else{let n=MF(i);n!==r&&t.typeMismatches.push({path:e,expected:r,got:n})}}for(let e of Object.keys(n))kF.has(e)||t.unknownTopLevelFields.push(e);return{data:e,report:t}}function MF(e){return Array.isArray(e)?`array`:typeof e==`string`&&!e.isWellFormed()?`ill-formed string`:typeof e}function NF(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 PF(e,t){switch(e){case`vars`:return{what:e,vars:FF(t)};case`segments`:return{what:e,segments:BF(t)};case`config`:return{what:e,config:WF(t)}}}function FF(e){if(e===null)return[];let{store:t,registry:n,config:r}=e,i=RF(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,...IF(r),lastError:a===void 0?null:{timestampMs:a.timestamp,message:a.message},ageMs:LF(r.lastUpdatedMs())})}return o}function IF(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 LF(e){return e===null?null:Math.max(0,Date.now()-e)}function RF(e){let t=new Map;for(let[n,r]of Object.entries(e.variables))t.set(n,zF(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}`,zF(i));return t}function zF(e){return e.kind}function BF(e){if(e===null)return[];let{store:t,config:n,lastRenderBySegment:r}=e,i=new Set(t.names()),a=HF(n),o=VF(n),s=[];for(let e of a){let t=n.segments[e];t&&s.push({name:e,description:t.description??null,template:t.template,referencedVars:UF(t.template,n.helpers,i),placements:(o.get(e)??[]).map(e=>({id:e,lastRender:r.get(e)??null}))})}return s}function VF(e){let t=new Map;for(let n of x_(e.presets))for(let r of js(w_(e,n).node)){if(r.kind!==`segment`)continue;let e=t.get(r.name)??[],n=Ds(r);e.includes(n)||t.set(r.name,[...e,n])}return t}function HF(e){let t=[],n=new Set;for(let r of js(Pc(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 UF(e,t,n){let r=new Set;for(let i of sv(e,t).keys()){if(n.has(i)){r.add(i);continue}let e=i.split(`.`);for(;e.length>1;){e.pop();let t=e.join(`.`);if(n.has(t)){r.add(t);break}}}return Array.from(r).sort()}function WF(e){return e===null?null:e.config}const GF=[`vars`,`segments`,`config`];function KF(e){return typeof e==`string`&&GF.includes(e)}function qF(e){return Math.max(1,e-2)}var JF=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 O(`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);O(`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{O(`Calculating context tokens from transcript: ${e}`);let n=await qA(e);if(n.length===0)return O(`No entries in transcript`),Y;let r=null;for(let e=n.length-1;e>=0;e--){let t=n[e];if(t&&t.message?.usage?.input_tokens&&t.isSidechain!==!0){r=t,O(`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 O(`Most recent main chain context: ${n} tokens (limit: ${t})`),J({totalTokens:n,maxTokens:t,...this.ratioPercentages(n,t)})}return O(`No main chain entries with usage data found`),Y}catch(e){return X(`context transcript: ${e instanceof Error?e.message:String(e)}`)}}async getContextInfo(e){let t=this.calculateContextFromHookData(e);if(t)return J(t);let n=e.context_window?.context_window_size??2e5;return this.calculateContextTokensFromTranscript(e.transcript_path,n)}},YF=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=rk(t);if(n&&r!==0&&n.cursor.mtimeMs===r)return this.touch(e,n),{kind:`ok`,value:n.value};let i=await ZA(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 XF={messageCount:0,recent:[]};function ZF(e,t){if(t.isSidechain)return e;let n=[...e.recent,t];return{messageCount:e.messageCount+ +!!GA(t),recent:n.length>20?n.slice(-20):n}}function QF(e){let t=null,n=null;for(let r of e){let e=r.type||r.message?.role||r.message?.type;if(GA(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 $F=class{fold=new YF(XF,ZF);async getMetricsInfo(e,t){if(O(`Getting metrics from hook data for session: ${e}`),!t.cost)return Y;let n=await this.fold.read(e,t.transcript_path);return n.kind===`failed`?X(`metrics (${e}): ${n.reason}`):J({responseTime:t.cost.total_api_duration_ms/1e3,lastResponseTime:QF(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 eI={command:null,todos:[],pending:[],done:[]};function tI(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 nI(e,t){if(t.isSidechain)return e;let n=GA(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=tI(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 rI(e){return{command:e.command,todos:e.todos,running:e.pending.reduce((e,t)=>tI(e,t.name),[]),done:e.done}}var iI=class{fold=new YF(eI,nI);async getActivityInfo(e,t){let n=await this.fold.read(e,t.transcript_path);return n.kind===`failed`?X(`activity (${e}): ${n.reason}`):J(rI(n.value))}};const aI=new Map;function oI(e){if(!e)return``;let t=e.indexOf(`,`);return t<0?e:e.slice(0,t)}var sI=class{async getSessionId(){if(!process.env.TMUX_PANE)return Y;let e=oI(process.env.TMUX),t=aI.get(e);if(t!==void 0)return t;O(`Getting tmux session ID, TMUX_PANE: ${process.env.TMUX_PANE}`);let n=await De({bin:`tmux`,args:[`display-message`,`-p`,`#S`],timeoutMs:1e3,category:`tmux`}),r=n.ok?n.stdout.trim()?J(n.stdout.trim()):Y:X(`tmux display-message: ${n.reason}`);return aI.set(e,r),r}isInTmux(){return!!process.env.TMUX_PANE}};const cI=e=>`${e.sessionId}|${e.projectDir}|${e.cwd}`;var lI=class{readings=new Map;inFlight=new Map;constructor(e,t=Date.now){this.edge=e,this.now=t}getCeiling(e){let t=cI(e),n=this.readings.get(t);if(n&&this.now()-n.at<1e4)return Promise.resolve(n.outcome);let r=this.inFlight.get(t)??this.fetch(t,e);return n?Promise.resolve(n.outcome):r}fetch(e,t){let n=this.edge.locate(t.projectDir),r=(n.kind===`ok`?this.edge.read(n.value,t):Promise.resolve(n)).then(t=>{if(this.inFlight.get(e)!==r)return t;for(this.readings.delete(e),this.readings.set(e,{outcome:t,at:this.now()});this.readings.size>64;)this.readings.delete(this.readings.keys().next().value);return t}).finally(()=>{this.inFlight.get(e)===r&&this.inFlight.delete(e)});return this.inFlight.set(e,r),r}move(e,t){let n=this.edge.locate(e.projectDir);if(n.kind!==`ok`)throw Error(n.kind===`failed`?n.reason:`memento is not installed or not enabled for this project`);let r=cI(e);try{this.edge.move(n.value,e,t)}finally{this.readings.delete(r),this.inFlight.delete(r),this.fetch(r,e)}}};const uI=c.join(`lib`,`ceiling_config.py`),dI=c.join(`skills`,`ceiling`,`bin`,`ceiling`);function fI(e,t){let n=typeof e==`object`&&e?e.plugins:void 0;if(typeof n!=`object`||!n)throw Error(`${t} has no "plugins" object`);return Object.entries(n).filter(([e])=>e.split(`@`)[0]===`memento`).flatMap(([e,n])=>{if(!Array.isArray(n))throw Error(`${t}: "${e}" is not a list of installs`);return n.map(n=>{let{scope:r,installPath:i,projectPath:a}=n??{};if(typeof r!=`string`||typeof i!=`string`)throw Error(`${t}: an install of "${e}" has no scope/path`);return typeof a==`string`?{key:e,scope:r,installPath:i,projectPath:a}:{key:e,scope:r,installPath:i}})})}function pI(e,t){let n=!0;for(let i of e){if(!r.existsSync(i))continue;let e;try{e=JSON.parse(r.readFileSync(i,`utf8`))?.enabledPlugins?.[t]}catch(e){return X(`memento lookup: ${i}: ${e.message}`)}typeof e==`boolean`&&(n=e)}return J(n)}function mI(e,t){if(!r.existsSync(e))return Y;let n;try{n=fI(JSON.parse(r.readFileSync(e,`utf8`)),e)}catch(e){return X(`memento lookup: ${e.message}`)}let i=n.find(e=>e.projectPath===t)??n.find(e=>e.scope===`user`);if(i===void 0)return Y;let a=pI([c.join(c.dirname(c.dirname(e)),`settings.json`),c.join(t,`.claude`,`settings.json`),c.join(t,`.claude`,`settings.local.json`)],i.key);if(a.kind!==`ok`)return a;if(!a.value)return Y;let o=[uI,dI].filter(e=>!r.existsSync(c.join(i.installPath,e)));return o.length===0?J(i.installPath):X(`memento at ${i.installPath} has no ${o.join(` or `)} — upgrade the plugin`)}function hI(e){let{CLAUDE_PROJECT_DIR:t,CLAUDE_CODE_SESSION_ID:n,...r}=process.env;return{...r,CLAUDE_CODE_SESSION_ID:e.sessionId,CLAUDE_PROJECT_DIR:e.projectDir||e.cwd}}function gI(e){return e.stderr.trim()||e.error||`${e.reason}${e.exitCode===null?``:` (exit ${e.exitCode})`}`}function _I(e){let t;try{t=JSON.parse(e)}catch{return X(`memento read: not JSON: ${e.trim()}`)}let{ceiling:n,session:r}=t??{},i=n===`off`||typeof n==`number`&&n>=0?n:void 0;return i!==void 0&&(r===null||typeof r==`string`)?J({ceiling:i,session:r}):X(`memento read: unexpected answer: ${e.trim()}`)}async function vI(e,t){let n=await De({bin:`python3`,args:[`-c`,`
184
+ `);n.push(e[0]);for(let r=1;r<e.length;r++)t.push(n),n=[e[r]]}return t.push(n),t}const AM=({text:e,trail:t})=>t===void 0?[e]:[e,t];function jM(e,t){let n=t.flatMap(e=>e.filter(e=>e.place===`above`)),r=t.map(e=>e.filter(e=>e.place===`flow`));return[...n,...MM(e,r)]}function MM(e,t){switch(e){case`vertical`:return t.flatMap(e=>e);case`horizontal`:return t.reduce((e,t)=>Math.max(e,t.length),0)===0?[]:[{cells:t.flatMap(e=>e[0]?.cells??[]),band:`own`,place:`flow`},...t.flatMap(e=>e.slice(1))]}}function NM(e,t){let n=(e,r)=>t(e)?e.kind===`segment`?[{cells:[{name:e.name,address:r,settings:e.settings}],band:`own`,place:`flow`}]:jM(e.direction,e.children.map((t,i)=>n(t,[...r,PM(e,i)]))):[];return n(e,[]).map(e=>[...e.cells])}function PM(e,t){return{index:t,count:e.children.length,distribution:e.distribution,axis:Ds[e.direction]}}const FM={compile(e,t){return{kind:`container`,direction:e.direction,when:t.when,distribution:la(e.distribution),children:e.children.map((e,n)=>t.compileChild(e,Ns(t.path,n)))}},render(e,t){return jM(e.direction,e.children.map((n,r)=>t.renderChild(n,t.visible,PM(e,r))))}},IM={drop:e=>e.place,above:()=>`above`},LM={compile(e,t){return{kind:`segment`,when:t.when,name:e.name,id:Os(e),settings:t.placementSettings(e),...e.opens!==void 0&&{opens:{open:t.parse(Xc(e.opens.ref),`opens`),body:t.compileChild(e.opens.body,Ps(t.path)),key:e.opens.ref.key,placement:e.opens.placement}},...e.trail!==void 0&&{trail:t.parse(e.trail,`trail`)}}},render(e,t){let n=t.lookupSegment(e.name);if(!n)throw Error(`Layout segment "${e.name}" has no matching segment`);let{seg:r,compiled:i}=n;if(!t.visible)return[];let a=my(t.scope,e.settings);try{if(!vj(i.when,a))return[];let n=Ab(e.settings.theme,t.palette),{styles:o,fragments:s,trail:c,drops:l}=t.evaluateSegment(e,a,n,t.region,{bg:i.bg,fg:i.fg,body:i.template,trail:e.trail}),u=e.opens!==void 0&&vj(e.opens.open,t.scope),d=l.length>0||u?o.trigger:o.closed,f={width:r.width??`auto`,justify:r.justify??`left`,truncate:r.truncate??`right`,baseStyle:d,padding:t.padding},p=e.opens,m=p===void 0?[]:t.renderBody(p.body,u,o.disclosure).map(e=>({...e,place:IM[p.placement](e)})),h=e.opens!==void 0&&m.some(e=>e.band===`own`)?Sj(Ej([t.closeDisclosure(e.opens.key)],o.trigger),{...f,width:`auto`,baseStyle:o.trigger}):[],g=e=>e.band===`own`?h:[],_=m.map(e=>({cells:[...g(e),...e.cells],band:`deeper`,place:e.place})),v=kM(Ej(s,d)).map((e,t)=>({cells:Sj(e,{...f,trail:t===0?Ej(c,d):[]}),band:`own`,place:`flow`})),y=l.map(e=>({cells:Sj(Ej([e],o.band),{...f,baseStyle:o.band}),band:`deeper`,place:`flow`})),b=[...v,...y];return t.perSegmentSink!==void 0&&t.perSegmentSink.set(e.id,[...b.flatMap(e=>e.cells),...m.flatMap(g)].flatMap(AM)),[...b,..._]}catch(n){let r=n.message??String(n);t.onSegmentError?.(e.id,r);let i=r.replace(/\s*\n\s*/g,` `);return[{cells:Sj([new Oi(`⚠ ${e.id}: ${i}`,{end:``})],{width:`auto`,justify:`left`,truncate:`right`,padding:0,trail:RM(e,a,t)}),band:`own`,place:`flow`}]}}};function RM(e,t,n){if(e.trail===void 0)return[];try{return n.evaluateSegment(e,t,n.palette,n.region,{bg:void 0,fg:void 0,body:e.trail,trail:void 0}).fragments}catch(t){return n.onSegmentError?.(e.id,t.message??String(t)),[]}}const zM={container:FM,segment:LM};function BM(e){return zM[e]}function VM(e){if(`ttl`in e)return{kind:`ttl`,durationMs:tb(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 HM(e,t){switch(Ls(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 UM(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:VM(n.cache),parse:HM(n.parse,n.default)});break;case`shell`:e.declareShell(t,n.command,{cwd:r,cache:VM(n.cache),parse:HM(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?tb(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 WM(e,t){let n=Ud.EMPTY;for(let[r,i]of Object.entries(t))try{n=e.parse(`{{ define "${r}" }}${i}{{ end }}`,n).defines()}catch(e){throw Error(`Template parse error in helpers.${r}: ${e.message}`,{cause:e})}return n}const GM=e=>xo(void 0,null,e.globals.progression);function KM(e,t,n){let r=n.cwd,i=Lb(e.globals.palette),a={store:t.variableStore,compiled:new Map,chromeCols:ZD({style:`powerline`,charset:uo}),width:80,basePalette:i,palette:i,progression:ea[GM(e)],padding:1,seamCols:QD({style:`powerline`,charset:uo}),layout:()=>[]},o=Zj(t.drawnAt),s={action:a,activeSegment:o},c=Object.keys(e.looks),l=x_(e.presets),u=new Map([...Vb(e),...gx(e)]),d=dy({...Gj(a),...cM(a,o),...dM(a,o),...hM(a,o),...bM(a,o),...wM(s),...DM(o),looks:{fn:()=>c,argTypes:[],arity:{kind:`exact`}},presets:{fn:()=>l,argTypes:[],arity:{kind:`exact`}}},n.clock,t.drawnAt),f=WM(d,e.helpers),p=e=>d.parse(e,f),m=new Map,h=e=>{let t=m.get(e);if(t!==void 0)return t;let n=p(e);return m.set(e,n),n},g=new Map;for(let[t,n]of Cb)n in e.variables&&g.set(t,n);for(let[t,n]of Object.entries(e.variables))n.kind===`state`&&!g.has(n.key)&&g.set(n.key,t);for(let[t,n]of Object.entries(e.segments))if(n.vars)for(let[e,r]of Object.entries(n.vars))r.kind===`state`&&!g.has(r.key)&&g.set(r.key,`${t}.${e}`);a.compiled=Pj(p,e.actions,g,u);let _=[];for(let[n,i]of Object.entries(e.variables))try{UM(t,n,i,r)}catch(e){_.push(`Variable "${n}": ${e.message??String(e)}`)}for(let[n,i]of Object.entries(e.segments))if(i.vars)for(let[e,a]of Object.entries(i.vars))try{UM(t,`${n}.${e}`,a,r)}catch(t){_.push(`Variable "${n}.${e}": ${t.message??String(t)}`)}let v=Object.create(null);for(let[t,n]of Object.entries(e.segments)){let e=(e,n,r=p)=>{try{return r(e)}catch(e){throw Error(`Template parse error in segments.${t}.${n}: ${e.message}`,{cause:e})}};v[t]={when:n.when===void 0?void 0:e(n.when,`when`,h),template:e(n.template,`template`),bg:n.bg===void 0?void 0:e(n.bg,`bg`),fg:n.fg===void 0?void 0:e(n.fg,`fg`)}}let y=(e,t,n)=>{try{return h(e)}catch(e){throw Error(`Template parse error in ${t}.${n}: ${e.message}`,{cause:e})}},b=t.variableStore,x=t=>{let n=Us(e.segments[t.name]),r=Object.create(null);for(let[e,i]of Object.entries(n)){let n=t.settings?.[e]??i.default,a=t.drafts?.[e];Object.defineProperty(r,e,{enumerable:!0,get:a===void 0?()=>n:()=>Js(i,String(b.read(a.variable)))??n})}return Object.freeze(r)},S=(e,t)=>{let n={path:t,when:e.when===void 0?void 0:y(e.when,t,`when`),parse:(e,n)=>y(e,t,n),compileChild:S,placementSettings:x};return BM(e.kind).compile(e,n)},C=new Map;for(let t of l){let{node:n,path:r}=w_(e,t);C.set(t,S(n,r))}let ee=new Map(Qa.map(e=>[e,new Map])),te=[[`globals`,e.globals],...Object.entries(e.presets).map(([e,t])=>[`presets.${e}.globals`,t.globals??{}])];for(let[e,t]of te)for(let n of Qa){let r=t[n];if(!$a(r))continue;let i=`${e}.${n}`,a=ee.get(n),o=a.get(r);a.set(r,o===void 0?{where:i,template:qM(p,i,r)}:{where:`${o.where}, ${i}`,template:o.template})}return{segments:v,roots:C,activeSegment:o,menuRuntime:s,globalExpressions:ee,loadWarnings:_}}function qM(e,t,n){try{return e(n)}catch(e){throw Error(`${t} is not a valid template: ${e instanceof Error?e.message:String(e)}`)}}function JM(e,t,n){let r=e.globalExpressions.get(t).get(n);if(r===void 0)throw Error(`the ${t} rule ${JSON.stringify(n)} reached the render but no compiled template exists — registerDslConfig and the resolution disagree about isExpression`);return r}function YM(e,t){return e.template.evaluate(t).map(e=>e.plain).join(``)}function XM(e,t){return e.kind===`decided`?e.name:t}function ZM(e,t,n,r,i,a,o,s){let{perSegmentSink:c,onSegmentError:l,onRenderWarning:u}=o??{};r.drawAt(vo(a.colorCompatibility));let{preset:d=y_}=s??{},f=T_(e,d),p=ea[s?.progression??xo(void 0,null,f.progression)];t.menuRuntime.action.progression=p;let m=s?.look??io(`none`,e.looks),h=s?.theme??Fb(void 0,null,f.palette),g=(e,t)=>({...i,term:{cols:a.width},theme:{effective:e},look:{effective:t}});r.applyInput(g(XM(h,Ga),XM(m,no))),t.menuRuntime.action.chromeCols=ZD(a),t.menuRuntime.action.padding=a.padding,t.menuRuntime.action.width=a.width,t.menuRuntime.action.seamCols=QD(a);let _=fy(n),v=to(h,e=>{let n=JM(t,`palette`,e);return Pb(YM(n,_),n.where,e=>u?.(e))}),y=to(m,n=>io(YM(JM(t,`look`,n),_),e.looks));(v!==h||y!==m)&&r.applyInput(g(v.name,y.name));let b=v.value;t.menuRuntime.action.basePalette=b;let x=Mb(b,y.value);t.menuRuntime.action.palette=x,c?.clear();let S=n=>{let r=e.segments[n],i=t.segments[n];return r!==void 0&&i!==void 0?{seg:r,compiled:i}:void 0},C=(e,n,i,a,o)=>{try{let s=r.drawnAt(),{tint:c,disclosure:l}=Ha(i,a,s),u=Qj(t.activeSegment,e.name,e.id,i,l,c),d=jj(u,s,o.bg,o.fg,n),f=o.body.evaluate(n),p=o.trail?.evaluate(n)??[];return{styles:{closed:d,get trigger(){return qj(i,ja(i,l,s).state,s)},get band(){return qj(i,ja(i,l,s).plane,s)},disclosure:l},fragments:f,trail:p,drops:u.drops}}finally{t.activeSegment.current=null}},ee=(e,t,r)=>{let i=t&&vj(e.when,_),o={scope:_,palette:x,visible:i,padding:a.padding,region:r,perSegmentSink:c,onSegmentError:l,evaluateSegment:C,lookupSegment:S,renderChild:(e,t,n)=>ee(e,t,Ba(r,n)),renderBody:(e,t,n)=>ee(e,i&&t,Va(n)),closeDisclosure:e=>Kj(n,e)};return BM(e.kind).render(e,o)},te=t.roots.get(d);if(te===void 0)throw Error(`Preset "${d}" has no compiled layout — registerDslConfig compiles one per declared preset and effectivePresetName collapses unknown names to "${y_}"; a miss here is merge/policy drift (have: ${[...t.roots.keys()].join(`, `)})`);let ne=e=>{if(!vj(e.when,_))return!1;if(e.kind===`container`)return!0;if(Tx(e.name)===void 0)return!1;try{return vj(t.segments[e.name].when,my(_,e.settings))}catch{return!0}};return t.menuRuntime.action.layout=()=>NM(te,ne).map(e=>e.flatMap(({name:e,address:t,settings:n})=>{let r=Tx(e);return r===void 0?[]:[{name:r,address:t,palette:Ab(n.theme,x)}]})),ee(te,!0,za(p)).map(e=>$D(Tj(e.cells,a),a)).join(`
185
+ `)}var QM=class{kind=`box`;cell;lastChangedAt;constructor(e,t,n){this.name=e,this.type=t,iN(e,t,n,`initial value`),this.cell=_v.observable.box(n,{deep:!1}),this.lastChangedAt=Date.now()}read(){return this.cell.get()}set(e){iN(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}},$M=class{kind=`computed`;cell;constructor(e,t,n){this.name=e,this.type=t,this.cell=(0,_v.computed)(()=>{let e=n();return iN(this.name,this.type,e,`computed result`),e},{keepAlive:!0})}read(){return this.cell.get()}lastUpdatedMs(){return null}},eN=class{kind=`document`;cell;lastChangedAt;constructor(e,t){this.name=e,this.cell=_v.observable.box(rN(t),{deep:!1}),this.lastChangedAt=Date.now()}read(){return this.cell.get()}set(e){let t=rN(e);nN(this.cell.get(),t)||(this.cell.set(t),this.lastChangedAt=Date.now())}lastUpdatedMs(){return this.lastChangedAt}};function tN(e){return JSON.stringify(e)}function nN(e,t){return tN(e)===tN(t)}function rN(e){return e.kind===`ok`?{kind:`ok`,value:vv(e.value)}:e}function iN(e,t,n,r){let i=yv(n);if(i!==t)throw TypeError(`Variable "${e}": ${r} type ${i} does not match declared type ${t}`)}var aN=class{nodes=new Map;defineBox(e,t,n){this.assertNotDefined(e),this.nodes.set(e,new QM(e,t,n))}defineDocument(e,t){this.assertNotDefined(e),this.nodes.set(e,new eN(e,t))}defineComputed(e,t,n){this.assertNotDefined(e);let r=e=>this.read(e);this.nodes.set(e,new $M(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,_v.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,_v.runInAction)(()=>n.set(t))}runInAction(e){(0,_v.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 tN(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 oN(e,t,n){return e+`\0`+t+`\0`+(n??``)}function sN(e,t){return new Set(x_(e.presets).filter(n=>w_(e,n).path===`root`?t.root!==void 0:t.presets?.[n]?.root!==void 0))}function cN(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 lN(e,t){let n=new Map;for(let t of Ew(e.projectDir,e.cwd,e.configFile)){let{dir:e,name:r}=cN(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 uN(e){return e.filter(Boolean).join(`
186
+ `)||null}var dN=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=oN(e,t,n),i=this.entries.get(r);if(i)return this.entries.delete(r),this.entries.set(r,i),i;let a=this.loadFromDisk(e,t,n),o={projectDir:e,cwd:t,configFile:n,configFilePath:null,lastError:a.error,lastWarning:a.warning,state:a.state??this.buildState(t,null,[]),watcher:null,watcherKey:null};if(this.entries.set(r,o),this.entries.size>this.maxEntries){let e=this.entries.entries().next().value;if(e!==void 0){let[t,n]=e;n.state.registry.dispose(),n.state.validatorDisposers.forEach(e=>e()),n.watcher?.release(),this.entries.delete(t)}}return this.refreshWatcher(o,a.resolvedPath),this.observers.onReload?.(o),o}reload(e,t,n){this.reloadInto(this.getOrCreate(e,t,n))}reloadInto(e){let t=this.loadFromDisk(e.projectDir,e.cwd,e.configFile);e.lastWarning=t.warning,e.lastError=t.error,t.state!==null&&(e.state.registry.dispose(),e.state.validatorDisposers.forEach(e=>e()),e.state=t.state),this.refreshWatcher(e,t.resolvedPath),this.observers.onReload?.(e)}loadFromDisk(e,t,n){let r=Ow(e,t,n),i=r.kind===`file`?r.path:null,a=[Mw(e,t),Aw(r)],o;try{o=this.buildState(t,i,a)}catch(e){return e instanceof xs&&a.push(...e.warnings),{resolvedPath:i,warning:uN(a),state:null,error:e instanceof xs||e instanceof Error?e.message:String(e)}}return{resolvedPath:i,warning:uN(a),state:o,error:null}}buildState(e,t,n){let r=Nw(t,nk),{config:i,raw:a}=r;n.push(...r.warnings);let o=Iw(r,t??`<default>`),s=new aN,c=new vb(s,o.globals.default_empty_value??``,this.deps.gitService,this.deps.sessionState),l,u=[];try{l=KM(o,c,{cwd:e}),n.push(...l.loadWarnings);for(let{key:e,spec:t}of EA(o))u.push(yA(e,t));for(let{key:e,spec:t}of VO(o))u.push(HO(e,t))}catch(e){for(let e of u)e();throw c.dispose(),e}return{config:o,store:s,registry:c,compiled:l,neededInputPaths:jk(o),lastRenderCellsBySegment:new Map,validatorDisposers:u,authoredRoots:sN(i,a),fileHeldSettings:oA(a)}}refreshWatcher(e,t){e.configFilePath=t;let n=lN(e,t),r=`config:${e.projectDir}:${e.cwd}:${e.configFile??``}:${JSON.stringify(n)}`;e.watcher!==null&&e.watcherKey===r||(e.watcher?.release(),e.watcherKey=r,e.watcher=this.deps.watchers.acquire(r,n,()=>this.onConfigChanged(e)))}onConfigChanged(e){Q(`info`,`config change detected for entry projectDir=${e.projectDir} cwd=${e.cwd}`),this.reloadInto(e)}get size(){return this.entries.size}firstState(){return this.entries.values().next().value?.state??null}};const fN=16384;var pN=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<fN){this.rollingTimestamps.push(e);return}this.rollingTimestamps[this.rollingHead]=e,this.rollingHead=(this.rollingHead+1)%fN}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:OE,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 mN={load:()=>({}),save:()=>{},flush:()=>{}};function hN(e){let t=new Map;for(let[n,r]of Object.entries(e))t.set(n,new Map(Object.entries(r)));return t}var gN=class{sessions;storage;atom=(0,_v.createAtom)(`SessionState`);constructor(e=mN,t=256){this.maxSessions=t,this.storage=e,this.sessions=new Map,this.hydrateFromStorage()}useStorage(e){this.storage=e,this.hydrateFromStorage()}hydrateFromStorage(){this.sessions=hN(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,_v.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,_v.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,_v.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 _N=(e,t)=>O(t);function vN(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 yN=class{timer=null;pending=null;constructor(e,t=500,n=_N){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 vN(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 bN={default_empty_value:`string`,default_separator:`string`,palette:`string`,look:`string`,preset:`string`,style:`string`,progression:`string`,autoWrap:`boolean`,padding:`number`,charset:`string`,updateNotice:`boolean`,colorCompatibility:`string`,menuGlyph:`string`},xN=new Set([`1`,`true`]),SN=new Set([`0`,`false`,``]);function CN(e,t){let n=JN(e),r=n.scope===`segment-palette`?`string`:bN[n.field];if(r===`string`)return JSON.stringify(t);if(r===`number`){let n=Number(t);if(!Number.isFinite(n))throw Error(`persistValueText: "${e}" expects a number, got "${t}"`);return String(n)}if(xN.has(t))return`true`;if(SN.has(t))return`false`;throw Error(`persistValueText: "${e}" expects boolean-ish (1, 0, true, false), got "${t}"`)}function wN(e){try{return r.readFileSync(e,`utf8`)}catch(e){if(e.code===`ENOENT`)return null;throw e}}function TN(e,t,n){try{if(t===null){r.rmSync(e,{force:!0});return}r.mkdirSync(c.dirname(e),{recursive:!0}),k(e,t)}catch(t){let r=`config write failed (${e}): ${t.message}`;throw n(`error`,r),Error(r)}}function EN(e){return/^\s*$/.test(e)?null:Lo(e)}function DN(e,t){return e!==null&&zo(e,t)!==void 0}function ON(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(ON),...i}}return e}function kN(e){if(!Mc(e))return ON(e);let{rows:t,...n}=e;return{rows:Object.fromEntries(Object.entries(t).map(([e,t])=>[e,ON(t)])),...n}}const AN=ek,jN=AN.segments,MN=AN.presets,NN=AN.root;function PN(e,t,n,r){if(!DN(e,t)&&n===void 0)throw new $(`cannot edit ${r}: neither the config file nor the bundled default declares ${t.join(`.`)}`)}function FN(e,t){let n=$b(t);return t.scope===`segment-palette`&&PN(e,[`segments`,t.segment],jN[t.segment],n.join(`.`)),n}function IN(e){return Lo(qo(e))}function LN(){return Object.entries(NN.rows).map(([e,t])=>{let n=ON(t);return{path:[`root`],fragment:IN({rows:{[e]:n}}),unit:{path:[`root`,`rows`,e],value:n}}})}function RN(e,t){let n=e===null?void 0:zo(e,t);return n===void 0?null:{path:t,fragment:n,unit:null}}function zN(e,t){if(t===void 0)return null;let n=kN(t);return{path:e,fragment:IN(n),unit:{path:e,value:n}}}function BN(e,t){let n=[`presets`,t],r=[...n,`root`],i=MN[t];PN(e,n,i,r.join(`.`));let a=RN(e,r)??zN(r,i?.root);return a!==null&&ms(a.fragment)?a:null}function VN(e,t){let n=ps(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 HN(e,t){return[...LN(),RN(e,[`root`]),BN(e,t)].filter(e=>e!==null).reduce(VN,new Map)}function UN(e,t,n){for(let{node:r,...i}of HN(e,t).values())if(gs(r,n))return i;throw new $(`${WN(e,t).join(`.`)} holds no placement "${n}" — the bar you clicked is stale (it reloads on the next render), or the action names a placement the layout never held`)}function WN(e,t){return BN(e,t)?.path??[`root`]}function GN(e,t){return t.scope===`preset-root`?WN(e,t.preset):$b(t)}function KN(e,{unit:t}){return t===null?e:ss(e,t.path,qo(t.value),Go)}function qN(e){let t=Qb(e);if(t===null)throw Error(`"${e}" is not a valid persist target`);return t}function JN(e){let t=qN(e);if(t.scope===`preset-root`)throw Error(`"${e}" names a layout, not a value`);return t}function YN(e,t,n,r){XN(t,r),TN(t,r,e.logger),e.record(t,n,r)}function XN(e,t){try{return Iw(Pw(e,t,nk),e)}catch(e){throw e instanceof xs?new $(`refused: the config file would not load after this click — ${e.message}`):e}}function ZN(e,t){let n=JN(t),r=EN(wN(e)??``),i=r===null?void 0:zo(r,$b(n));return i!==void 0&&`value`in i?i.value:void 0}function QN(e,t,n){$N(e,t,n,[])}function $N(e,t,n,r){let i=wN(t);YN(e,t,i,eP(n.reduce((e,[t,n])=>ss(e,FN(EN(e),JN(t)),CN(t,n),Go),i??``),t,r,e=>e))}function eP(e,t,n,r){return n.reduce((e,{preset:n,id:i,setting:a,value:o})=>{let s=r(e,n,i),c=UN(EN(s),n,i),l=bs(KN(s,c),c.path,i,a,qo(o));if(l===null)throw new $(`${c.path.join(`.`)} in ${t} has no placement "${i}" — the bar you clicked is stale (it reloads on the next render)`);return l},e)}function tP(e,t,n){let r=EN(e),i=[`presets`,t,`root`];for(let[a,{path:o,unit:s,node:c}]of HN(r,t)){if(!gs(c,n))continue;if(i.every((e,t)=>o[t]===e))return e;let l=s===null?Vo(e,c):qo(s.value);if(a!==`#`)return ss(e,[...i,`rows`,a],l,Go);if(BN(r,t)!==null)throw new $(`cannot give preset "${t}" its own copy of ${o.join(`.`)}: it already stages rows of its own over that tree`);return ss(e,i,l,Go)}return e}function nP(e,t){return ls(e,t,t[0]===`presets`&&t.length>2&&!ik(t[1])?2:0)}function rP(e,t,n){let r=n.map(qN),i=wN(t);if(i===null)return;let a=r.reduce((e,t)=>nP(e,GN(EN(e),t)),i);a!==i&&YN(e,t,i,a)}function iP(e){let t=e===null?void 0:zo(e,[`presets`]),n=new Set([...rk,...t?.kind===`object`?t.entries.map(e=>e.key):[]].map(pu));return Array.from({length:n.size+1},(e,t)=>`custom-${t+1}`).find(e=>!n.has(pu(e)))}function aP(e,t,n,r,i,a){let o=wN(t),s=EN(o??``),c=iP(s),l=[`presets`,c],u=BN(s,n),d=[...u===null?[]:[[[...l,`root`],u.unit===null?Vo(o??``,u.fragment):qo(u.unit.value)]],...Object.keys(r).length===0?[]:[[[...l,`globals`],qo(r)]]],f=i.map(([e,t])=>{let n=Zb(c,e);return[FN(s,JN(n)),CN(n,t)]});return YN(e,t,o,eP([...d,...f].reduce((e,[t,n])=>ss(e,t,n,Go),ss(o??``,l,`{}`,Go)),t,a.map(e=>({...e,preset:c})),tP)),c}function oP(e,t,n){if(ik(n))throw new $(`cannot delete preset "${n}": it is bundled — reset its settings instead`);let r=[`presets`,n],i=wN(t),a=EN(i??``);if(i===null||a===null||zo(a,r)===void 0)throw new $(`cannot delete preset "${n}": ${t} declares no ${r.join(`.`)} — the bar you clicked is stale; it reloads on the next render`);let o=zo(a,[`globals`,`preset`]);YN(e,t,i,[r,...o?.kind===`string`&&o.value===n?[[`globals`,`preset`]]:[]].reduce((e,t)=>nP(e,t),i))}function sP(e,t,n,r){let i=qN(n);if(i.scope!==`preset-root`)throw Error(`"${n}" is not a "presets.<name>.root" target`);let a=wN(t),o=r.op===`remove`?r.target:r.anchor,s=UN(EN(a??``),i.preset,o),c=KN(a??``,s),{after:l,placed:u}=cP(c,s.path,r,()=>{let e=XN(t,c);return x_(e.presets).map(t=>w_(e,t).node)});if(l===null)throw new $(`${s.path.join(`.`)} in ${t} has no placement "${o}" — the bar you clicked is stale (it reloads on the next render), or the action names a placement the layout never held`);return YN(e,t,a,l),u}function cP(e,t,n,r){switch(n.op){case`remove`:return{after:vs(e,t,n.target),placed:null};case`insert`:{let i=CO(n.segment,n.anchor,r());return{after:ys(e,t,i,n.anchor,n.relation),placed:i}}}}const lP={load:()=>({}),save:()=>{}},uP=new Set(xb.map(e=>e.sessionKey)),dP=e=>uP.has(e)||e.startsWith(H_),fP={past:[],future:[]},pP=e=>e.kind===`session`?`session:${e.key}`:`file:${e.file}`;var mP=class{state=new Map;constructor(e,t,n=lP){this.sessionState=e,this.logger=t,this.storage=n,this.state=new Map(Object.entries(n.load()))}useStorage(e){this.storage=e,this.state=new Map(Object.entries(e.load()))}depth(e){let{past:t,future:n}=this.state.get(e)??fP;return{undo:t.length,redo:n.length}}history(e){return this.state.get(e)??fP}begin(){let e=new Map,t=(t,n)=>{let r=e.get(t)??new Map,i=r.get(pP(n));r.set(pP(n),i===void 0?n:{...n,before:i.before}),e.set(t,r)},n=this.sessionState,r=(e,r,i)=>{let a=r.filter(dP).map(t=>({key:t,before:n.get(e,t)}));i();for(let{key:r,before:i}of a)t(e,{kind:`session`,key:r,before:i,after:n.get(e,r)})};return{sessionState:{get:(e,t)=>n.get(e,t),set:(e,t,i)=>r(e,[t],()=>n.set(e,t,i)),setBatch:(e,t)=>r(e,t.map(e=>e.key),()=>n.setBatch(e,t)),clear:(e,t)=>r(e,[t],()=>n.clear(e,t))},file:(e,n,r,i)=>t(e,{kind:`file`,file:n,before:r,after:i}),commit:()=>{let t=[...e];e.clear();for(let[e,n]of t){let t=[...n.values()].filter(e=>e.before!==e.after);t.length!==0&&this.put(e,{past:_P([...this.history(e).past,t]),future:[]})}}}}undo(e){let{past:t,future:n}=this.history(e),r=t.at(-1);if(r===void 0)throw new $(`undo: nothing to undo`);return this.apply(e,r,`before`,`undo`,{past:t.slice(0,-1),future:_P([...n,r])}),r}redo(e){let{past:t,future:n}=this.history(e),r=n.at(-1);if(r===void 0)throw new $(`redo: nothing to redo`);return this.apply(e,r,`after`,`redo`,{past:_P([...t,r]),future:n.slice(0,-1)}),r}apply(e,t,n,r,i){let a=n===`before`?`after`:`before`,o=t.filter(t=>this.read(e,t)!==t[a]);if(o.length>0){let t=new Set(o.map(pP));throw this.put(e,{past:vP(this.history(e).past,t),future:vP(this.history(e).future,t)}),new $(`${r}: ${o.map(bP).join(`, `)} changed since that edit — refusing to overwrite it; this session's undo history no longer steps it`)}let s=[];try{for(let r of t)this.write(e,r,r[n]),s.push(r);this.put(e,i)}catch(t){try{for(let t of s.reverse())this.write(e,t,t[a])}catch(e){throw Error(`${t.message}; and putting the step back failed, so it is half-applied: ${e.message}`)}throw t}}read(e,t){return t.kind===`session`?this.sessionState.get(e,t.key):wN(t.file)}write(e,t,n){t.kind===`file`?TN(t.file,n,this.logger):n===null?this.sessionState.clear(e,t.key):this.sessionState.set(e,t.key,n)}put(e,t){let n=new Map(this.state);for(n.delete(e),(t.past.length>0||t.future.length>0)&&n.set(e,t);n.size>32||hP(n)>8388608;){let[e,t]=n.entries().next().value;n.size>1?n.delete(e):n.set(e,gP(t))}this.storage.save(Object.fromEntries(n)),this.state=n}};function hP(e){let t=0;for(let{past:n,future:r}of e.values())for(let e of[...n,...r])for(let n of e)t+=(n.before?.length??0)+(n.after?.length??0);return t}function gP({past:e,future:t}){return e.length>0?{past:e.slice(1),future:t}:{past:e,future:t.slice(1)}}function _P(e){return e.slice(-50)}function vP(e,t){return e.map(e=>e.filter(e=>!t.has(pP(e)))).filter(e=>e.length>0)}function yP(e){return e.map(bP).join(`, `)}function bP(e){return e.kind===`session`?`session setting "${e.key}"`:e.file}function xP(e){if(typeof e!=`object`||!e)return!1;let t=e,n=e=>e===null||typeof e==`string`;return(t.kind===`session`&&typeof t.key==`string`||t.kind===`file`&&typeof t.file==`string`)&&n(t.before)&&n(t.after)}function SP(e){return Array.isArray(e)&&e.every(e=>Array.isArray(e)&&e.every(xP))}function CP(e){if(typeof e!=`object`||!e)return!1;let t=e;return SP(t.past)&&SP(t.future)}function wP(e,t){return{load:()=>{let n;try{n=r.readFileSync(e,`utf8`)}catch(e){let n=e.code;return n!==`ENOENT`&&t(`warn`,`settings-history read failed (${n}); starting empty`),{}}try{let e=JSON.parse(n);if(typeof e==`object`&&e&&!Array.isArray(e)&&Object.values(e).every(CP))return e}catch{}return t(`warn`,`settings-history load: unexpected shape, starting empty`),{}},save:n=>{try{r.mkdirSync(c.dirname(e),{recursive:!0}),k(e,JSON.stringify(n),384)}catch(e){let n=`settings-history write failed — the change landed but is not undoable: ${e.message}`;throw t(`error`,n),Error(n)}}}}function TP(e,t,n,r){let i=Oe({bin:`tmux`,args:[`-S`,e.socket,...n],timeoutMs:2e3,category:t,stdinInput:r});if(i.ok)return{kind:`ok`,stdout:i.stdout};if(i.reason===`rate-limited`)return{kind:`rate-limited`,reason:i.error??`rate-limited`};let a=i.error??[i.reason,i.stderr.trim()].filter(e=>e!==``).join(`: `);return{kind:`failed`,reason:`tmux ${n[0]} failed (${a})`}}function EP(e){let t=TP(e,`doctor.tmux`,[`display`,`-p`,`-t`,e.pane,`#{client_termfeatures}`]);return t.kind===`ok`?{kind:`ok`,value:t.stdout.trim().split(`,`).filter(e=>e!==``)}:{kind:`failed`,reason:t.reason}}function DP(){return{probeTmux:EP}}function OP(e){let t=PE(e).env;if(t===void 0)return{path:e,env:{}};if(typeof t!=`object`||!t||Array.isArray(t))throw Error(`cannot read ${e}: \`env\` is not an object`);return{path:e,env:t}}function kP(e,t){return t===void 0?{kind:`unreported`}:t===null?{kind:`outside`}:{kind:`inside`,hint:t,termfeatures:e.probeTmux(t)}}function AP(e,t){return{tmux:kP(e,t.tmux),claudeSettings:OP(jE(AE(t.claudeConfigDir)))}}function jP(e,t){let n=t.claudeSettings.path;switch(e.kind){case`claude-settings-env`:{let i=ss(NE(n),[`env`,e.name],JSON.stringify(e.value),Ko);return r.mkdirSync(c.dirname(n),{recursive:!0}),k(n,i),{...t,claudeSettings:OP(n)}}default:return e.kind}}const MP=/^─{20,}/,NP=/^❯(\s|$)/,PP=/›\s*stashed$/;function FP(e){if(e.inMode)return{kind:`in-mode`};let t=e.screen.map(e=>e.trimEnd()),n=t.flatMap((e,t)=>MP.test(e)?[t]:[]).at(-2);return n===void 0||!NP.test(t[n+1]??``)?{kind:`no-prompt`}:PP.test(t[n-1]??``)?{kind:`stashed`}:{kind:`ready`}}const IP={"in-mode":`the Claude Code pane is in tmux copy mode — leave it (q) and click again`,stashed:`Claude Code is holding a stashed prompt (ctrl+s) — restore or send it, then click again`,"no-prompt":`Claude Code is not at its prompt (a dialog or picker is open) — close it and click again`};function LP(e,t,n){if(t===void 0)return{kind:`refused`,reason:`this session's statusline client reports no tmux facts (it predates this daemon) — rebuild or reinstall cc-candybar`};if(t===null)return{kind:`refused`,reason:`this Claude Code is not running inside tmux — the bar can only type into a tmux pane`};let r=FP(e.read(t));if(r.kind!==`ready`)return{kind:`refused`,reason:IP[r.kind]};let i=e.type(t,n);return i.kind===`typed`?{kind:`typed`,pane:t.pane}:i}const RP=`cc-candybar-slash`;function zP(e,t,n,r){let i=TP(e,t,n,r);if(i.kind===`failed`)throw Error(i.reason);return i}function BP(e){let t=zP(e,`claude-input.read`,[`display`,`-p`,`-t`,e.pane,`#{pane_in_mode}`,`;`,`capture-pane`,`-p`,`-t`,e.pane]);if(t.kind===`rate-limited`)throw Error(t.reason);let[n=``,...r]=t.stdout.split(`
187
+ `);return{inMode:n!==`0`,screen:r}}function VP(e,t){let n=zP(e,`claude-input.type`,[`load-buffer`,`-b`,RP,`-`,`;`,`send-keys`,`-t`,e.pane,`C-s`,`;`,`paste-buffer`,`-p`,`-d`,`-b`,RP,`-t`,e.pane,`;`,`send-keys`,`-t`,e.pane,`Enter`],t);return n.kind===`ok`?{kind:`typed`}:{kind:`refused`,reason:`cc-candybar typed a command moments ago — click again in a second (${n.reason})`}}function HP(){return{read:BP,type:VP}}function UP(e){if(!e)throw new $(`session id is required`);if(e.includes(`/`)||e.includes(`..`))throw new $(`invalid session id "${e}"`);return e}function WP(e){return GP(()=>decodeURIComponent(e))}function GP(e){try{return e()}catch(e){throw e instanceof URIError?new $(`malformed wire encoding: ${e.message}`):e}}function KP(e,t){let n=Oe({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 qP=(e,t)=>KP(WP(e),t),JP=(e,t)=>{let n=Oe({bin:`/usr/bin/open`,args:[`-a`,`Visual Studio Code`,WP(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`})`)}},YP=(e,t)=>KP(WP(e),t),XP=(e,t)=>KP(WP(e),t),ZP=(e,t)=>{let n=UP(WP(e));t.sessionState.get(n,`toolbar-expanded`)?t.sessionState.clear(n,`toolbar-expanded`):t.sessionState.set(n,`toolbar-expanded`,`1`)},QP=(e,t)=>{let[n=``,...r]=GP(()=>xE(e)),i=UP(n);if(r.length===0)throw new $(`set-state: <key>/<value> is required (have keys: ${vA().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: ${vA().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=bA(t,n);if(!i.ok)throw new $(`set-state: pair ${e/2+1}: ${i.reason}`);a.push({key:t,value:i.value})}nF(t,i,`set-state`,a),t.sessionState.setBatch(i,a);let o=a.map(e=>`${e.key}=${e.value}`).join(` `);t.dlog(`info`,`set-state: ${o} (session=${i})`)},$P=/^-?\d+$/;function eF(e,t,n,r){let i=e+t;return i>r?e===r?n:r:i<n?e===n?r:n:i}const tF=(e,t)=>{let[n=``,r=``,i=``]=GP(()=>xE(e)),a=UP(n);if(!r)throw new $(`step-state: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!$P.test(i))throw new $(`step-state: delta must be an integer, got "${i}"`);let o=parseInt(i,10),s=xA(r);if(!s)throw new $(`step-state: key "${r}" is not a bounded (range) state key (have keys: ${vA().join(`, `)})`);let c=t.sessionState.get(a,r),l=c&&$P.test(c)?rF(s,parseInt(c,10)):iF(`step-state`,r,s,wA(t.configFor(cF(t,a)),e=>t.sessionState.get(a,e),r)),u=eF(l,o,s.min,s.max),d=bA(r,String(u));if(!d.ok)throw new $(`step-state: ${d.reason}`);nF(t,a,`step-state`,[{key:r,value:d.value}]),t.sessionState.set(a,r,d.value),t.dlog(`info`,`step-state: ${r} ${l}→${d.value} (by ${o}, session=${a})`)};function nF(e,t,n,r){let i=r.filter(e=>e.key.startsWith(H_));if(i.length===0)return;let a=tA(e.configFor(cF(e,t)),n=>e.sessionState.get(t,n),i);if(a.length>0)throw new $(`${n}: refused — ${a.join(`; `)}`)}function rF(e,t){return Math.max(e.min,Math.min(e.max,t))}function iF(e,t,n,r){if(r===null)return n.min;if(!$P.test(r))throw new $(`${e}: "${t}" shows ${JSON.stringify(r)} before any click, not an integer to step`);return rF(n,parseInt(r,10))}const aF=`render-origin`;function oF(e){return JSON.stringify(e)}function sF(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 cF(e,t){let n=e.sessionState.get(t,aF);if(n===null)throw new $(`session ${t} has not rendered yet — no config to act on`);return sF(n)}function lF(e){return kw(e.projectDir,e.cwd,e.configFile??void 0)}function uF(e,t){return{record:(n,r,i)=>e.journal.file(t,n,r,i),logger:e.dlog}}const dF=(e,t)=>{let[n=``,r=``,i=``]=GP(()=>xE(e)),a=UP(n);if(!r)throw new $(`set-config: <key>/<value> is required (have keys: ${PO().join(`, `)})`);let o=FO(r,i);if(!o.ok)throw new $(`set-config: ${o.reason}`);let s=cF(t,a),c=lF(s),l=$k(t.configFor(s),e=>t.sessionState.get(a,e),r);QN(uF(t,a),c,[[l.key,o.value]]),t.dlog(`info`,`set-config: ${l.key}=${o.value} → ${c} (session=${a})`)},fF=(e,t)=>{let[n=``,r=``,i=``]=GP(()=>xE(e)),a=UP(n);if(!r)throw new $(`step-config: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!$P.test(i))throw new $(`step-config: delta must be an integer, got "${i}"`);let o=parseInt(i,10),s=IO(r);if(!s)throw new $(`step-config: key "${r}" is not a bounded (range) config key (have keys: ${PO().join(`, `)})`);let c=cF(t,a),l=lF(c),u=$k(t.configFor(c),e=>t.sessionState.get(a,e),r),d=ZN(l,u.key),f=typeof d==`number`?rF(s,d):iF(`step-config`,r,s,RO(u.globals,r)),p=eF(f,o,s.min,s.max),m=FO(r,String(p));if(!m.ok)throw new $(`step-config: ${m.reason}`);QN(uF(t,a),l,[[u.key,m.value]]),t.dlog(`info`,`step-config: ${u.key} ${f}→${m.value} (by ${o}) → ${l} (session=${a})`)},pF=(e,t)=>{let[n=``]=GP(()=>xE(e)),r=UP(n),i=cF(t,r),a=t.configFor(i),o=e=>t.sessionState.get(r,e),s=Zk(a,o),c=eA(a,o);if(s.length+c.length===0){t.dlog(`info`,`save: nothing unsaved (session=${r})`);return}let l=s.map(e=>{let t=bA(e.sessionKey,e.value);if(!t.ok)throw new $(`save: ${t.reason}`);return[e.target,t.value]});hF(`save`,c);let u=lF(i);$N(uF(t,r),u,l,c),t.reloadConfig(i);for(let e of[...s.map(e=>e.sessionKey),...c.map(e=>e.key)])t.sessionState.clear(r,e);t.dlog(`info`,`save: ${[...l.map(([e,t])=>`${e}=${t}`),...c.map(mF)].join(` `)} → ${u} (session=${r})`)},mF=e=>`${e.preset}/${e.id}.settings.${e.setting}=${qs(e.value)}`;function hF(e,t){for(let n of t){let t=bA(n.key,qs(n.value));if(!t.ok)throw new $(`${e}: ${t.reason}`)}}const gF=(e,t)=>{let[n=``]=GP(()=>xE(e)),r=UP(n),i=cF(t,r),a=iA(t.configFor(i),e=>t.sessionState.get(r,e)),o=a.picks.map(e=>{let t=bA(e.sessionKey,e.value);if(!t.ok)throw new $(`save-preset: ${t.reason}`);return[e.configKey,t.value]});hF(`save-preset`,a.placements);let s=lF(i),c=aP(uF(t,r),s,a.from,a.globals,o,a.placements);t.reloadConfig(i);for(let e of[...xb.map(e=>e.sessionKey),...a.placements.map(e=>e.key)])t.sessionState.clear(r,e);t.sessionState.set(r,bb.preset.sessionKey,c),t.dlog(`info`,`save-preset: ${[`${c} from=${a.from}`,...o.map(([e,t])=>`${e}=${t}`),...a.placements.map(mF)].join(` `)} → ${s} (session=${r})`)},_F=(e,t)=>{let[n=``,r=``]=GP(()=>xE(e)),i=UP(n);if(!r)throw new $(`delete-preset: <name> is required (shape: <sessionId>/<name>)`);let a=cF(t,i),o=lF(a);oP(uF(t,i),o,r),t.reloadConfig(a);let s=bb.preset.sessionKey;t.sessionState.get(i,s)===r&&t.sessionState.clear(i,s),t.dlog(`info`,`delete-preset: ${r} ← ${o} (session=${i})`)},vF=(e,t)=>{let[n=``,...r]=GP(()=>xE(e)),i=UP(n),a=PO(),o=r.length===0?[``]:r.filter(e=>!a.includes(e));if(o.length>0)throw new $(`reset-config: unknown config key "${o.join(`", "`)}" (have: ${a.join(`, `)})`);let s=cF(t,i),c=lF(s),l=r.map(aA),u=l.flatMap(e=>e.fileKeys),d=l.flatMap(e=>e.sessionKeys);rP(uF(t,i),c,u),t.reloadConfig(s);for(let e of d)t.sessionState.clear(i,e);t.dlog(`info`,`reset-config: ${[...u,...d.map(e=>`session:${e}`)].join(` `)} ← ${c} (session=${i})`)};function yF(e,t){let n=(e,t)=>[...Ms(w_(e,t).node)].filter(e=>e.kind===`segment`),r=new Set(x_(t.presets).flatMap(e=>n(t,e).map(t=>`${e}\0${Os(t)}`)));return x_(e.presets).flatMap(t=>n(e,t).flatMap(e=>r.has(`${t}\0${Os(e)}`)?[]:Object.values(e.drafts??{}).map(e=>e.key)))}const bF=(e,t)=>{let[n=``,r=``,i=``]=GP(()=>xE(e)),a=UP(n);if(!r)throw new $(`apply-layout-op: <key>/<op> is required (have: ${PO().join(`, `)})`);let o=FO(r,i);if(!o.ok)throw new $(`apply-layout-op: ${o.reason}`);let s=SO(o.value);if(s===null)throw new $(`apply-layout-op: "${o.value}" is not a layout op token`);let c=cF(t,a),l=lF(c),u=t.configFor(c),d=sP(uF(t,a),l,r,s);t.reloadConfig(c);let f=yF(u,t.configFor(c)).filter(e=>t.sessionState.get(a,e)!==null);for(let e of f)t.sessionState.clear(a,e);t.dlog(`info`,`apply-layout-op: ${r} ${o.value} → ${l} placed=${JSON.stringify(d)} released=${JSON.stringify(f)} (session=${a})`)},xF=(e,t)=>{let[n=``]=GP(()=>xE(e)),r=UP(n);t.journal.commit();let i=t.history.undo(r);t.dlog(`info`,`undo: restored ${yP(i)} (session=${r})`)},SF=(e,t)=>{let[n=``]=GP(()=>xE(e)),r=UP(n);t.journal.commit();let i=t.history.redo(r);t.dlog(`info`,`redo: re-applied ${yP(i)} (session=${r})`)},CF=(e,t)=>{UP(WP(e)),t.applyUpdate()},wF=`client-hints`;function TF(e,t){let n=e.sessionState.get(t,wF);if(n===null)throw new $(`session ${t} has not rendered yet — no client facts are recorded for it`);let r;try{r=JSON.parse(n)}catch{throw new $(`client hints record is not JSON: ${n}`)}if(typeof r!=`object`||!r)throw new $(`client hints record is not an object: ${n}`);return Uw(r)}function EF(e,t,n){let r=Lx(n);e.sessionState.setBatch(t,Vx(r)),e.dlog(`info`,`doctor: ${r.map(e=>`${e.check.name}=${e.verdict.ok?`ok`:`failed`}`).join(` `)} (session=${t})`)}const DF=(e,t)=>{let n=UP(WP(e));EF(t,n,AP(t.doctor,TF(t,n)))},OF=(e,t)=>{let[n=``,r=``]=GP(()=>xE(e)),i=UP(n),a=Rx(r);if(a===void 0)throw new $(`doctor-fix: unknown check "${r}"`);let o=AP(t.doctor,TF(t,i)),s=a.probe(o);if(s.ok||s.fix===void 0)throw new $(`doctor-fix: ${a.label} — ${s.ok?`nothing to fix`:s.reason}`);let c=jP(s.fix,o);t.dlog(`info`,`doctor-fix: ${a.name} → ${s.fix.kind} ${s.fix.name}=${s.fix.value} (session=${i})`),EF(t,i,c)},kF=(e,t)=>{let[n=``,...r]=GP(()=>xE(e)),i=UP(n),a=cF(t,i),o=Object.values(t.configFor(a).actions).filter(e=>`ceiling`in e).find(e=>{let t=iC(e);return t.length===r.length&&t.every((e,t)=>e===r[t])});if(o===void 0)throw new $(`ceiling: "${r.join(` `)}" is not a move this config declares`);let s=o.ceiling===`set`?{kind:`set`,to:o.to}:{kind:`clear`};t.memento.move({sessionId:i,projectDir:a.projectDir,cwd:a.cwd},s),t.dlog(`info`,`ceiling: ${r.join(` `)} (session=${i})`)},AF=(e,t)=>{let[n=``,r=``]=GP(()=>xE(e)),i=UP(n),a=Object.values(t.configFor(cF(t,i)).actions).filter(e=>`slash`in e),o=a.find(e=>e.slash===r);if(o===void 0)throw new $(`${JSON.stringify(r)} is not a command this config declares (it declares: ${[...new Set(a.map(e=>e.slash))].join(`, `)||`none`})`);let s=LP(t.claudeInput,TF(t,i).tmux,o.slash);if(s.kind===`refused`)throw t.dlog(`warn`,`slash: ${r} refused — ${s.reason} (session=${i})`),new $(`${r} was not typed: ${s.reason}`);t.dlog(`info`,`slash: typed ${r} into ${s.pane} (session=${i})`)},jF=`config-override`,MF=new Map([[tE,qP],[`load-config`,(e,t)=>{let n=e.indexOf(`/`);if(n===-1)throw new $(`load-config: expected <sessionId>/<path> (missing separator)`);let r=UP(GP(()=>decodeURIComponent(e.slice(0,n)))),i=GP(()=>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,jF),t.dlog(`info`,`load-config: override cleared (session=${r})`)):(t.sessionState.set(r,jF,i),t.dlog(`info`,`load-config: ${i} (session=${r})`))}],[nE,JP],[$T,QP],[eE,tF],[oE,dF],[sE,fF],[dE,vF],[cE,pF],[lE,gF],[uE,_F],[fE,bF],[pE,xF],[mE,SF],[iE,YP],[aE,XP],[rE,ZP],[hE,CF],[gE,DF],[_E,OF],[vE,kF],[yE,AF]]),NF=new Set([$T,eE,oE,sE,dE,cE,lE,uE,fE,pE,mE,rE,hE,gE,_E,vE,yE]),PF=(e,t)=>{let n=[],r=!1,i=null;for(let{verb:a,value:o}of TE(CE(e))){if(!i&&NF.has(a)){let e=xE(o);e.length>0&&e[0]&&(i=e[0])}let e=MF.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(`
188
+ `));let e=`dispatch: ${n.join(`; `)}`;throw r?Error(e):new $(e)}};function FF(e){return(t,n)=>{let r=n.history.begin(),i=[];try{e(t,{...n,sessionState:r.sessionState,journal:r})}catch(e){i.push(e)}try{r.commit()}catch(e){i.push(e)}if(i.length===1)throw i[0];if(i.length>1)throw Error(i.map(e=>String(e.message??e)).join(`; `))}}const IF=new Map([...MF,[QT,PF]].map(([e,t])=>[e,FF(t)]));Object.freeze([...IF.keys()]);const LF=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`]),RF=[[`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 zF(e){let t={missingRequired:[],typeMismatches:[],unknownTopLevelFields:[]},n=typeof e==`object`&&e&&!Array.isArray(e)?e:{};for(let[e,r]of RF){let i=VF(n,e);if(i==null)t.missingRequired.push(e);else{let n=BF(i);n!==r&&t.typeMismatches.push({path:e,expected:r,got:n})}}for(let e of Object.keys(n))LF.has(e)||t.unknownTopLevelFields.push(e);return{data:e,report:t}}function BF(e){return Array.isArray(e)?`array`:typeof e==`string`&&!e.isWellFormed()?`ill-formed string`:typeof e}function VF(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 HF(e,t){switch(e){case`vars`:return{what:e,vars:UF(t)};case`segments`:return{what:e,segments:JF(t)};case`config`:return{what:e,config:QF(t)}}}function UF(e){if(e===null)return[];let{store:t,registry:n,config:r}=e,i=KF(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,...WF(r),lastError:a===void 0?null:{timestampMs:a.timestamp,message:a.message},ageMs:GF(r.lastUpdatedMs())})}return o}function WF(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 GF(e){return e===null?null:Math.max(0,Date.now()-e)}function KF(e){let t=new Map;for(let[n,r]of Object.entries(e.variables))t.set(n,qF(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}`,qF(i));return t}function qF(e){return e.kind}function JF(e){if(e===null)return[];let{store:t,config:n,lastRenderBySegment:r}=e,i=new Set(t.names()),a=XF(n),o=YF(n),s=[];for(let e of a){let t=n.segments[e];t&&s.push({name:e,description:t.description??null,template:t.template,referencedVars:ZF(t.template,n.helpers,i),placements:(o.get(e)??[]).map(e=>({id:e,lastRender:r.get(e)??null}))})}return s}function YF(e){let t=new Map;for(let n of x_(e.presets))for(let r of Ms(w_(e,n).node)){if(r.kind!==`segment`)continue;let e=t.get(r.name)??[],n=Os(r);e.includes(n)||t.set(r.name,[...e,n])}return t}function XF(e){let t=[],n=new Set;for(let r of Ms(Fc(e.root)))r.kind===`segment`&&e.segments[r.name]&&!n.has(r.name)&&(t.push(r.name),n.add(r.name));for(let r of Object.keys(e.segments))n.has(r)||(t.push(r),n.add(r));return t}function ZF(e,t,n){let r=new Set;for(let i of sv(e,t).keys()){if(n.has(i)){r.add(i);continue}let e=i.split(`.`);for(;e.length>1;){e.pop();let t=e.join(`.`);if(n.has(t)){r.add(t);break}}}return Array.from(r).sort()}function QF(e){return e===null?null:e.config}const $F=[`vars`,`segments`,`config`];function eI(e){return typeof e==`string`&&$F.includes(e)}function tI(e){return Math.max(1,e-2)}var nI=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 O(`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);O(`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{O(`Calculating context tokens from transcript: ${e}`);let n=await tj(e);if(n.length===0)return O(`No entries in transcript`),Y;let r=null;for(let e=n.length-1;e>=0;e--){let t=n[e];if(t&&t.message?.usage?.input_tokens&&t.isSidechain!==!0){r=t,O(`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 O(`Most recent main chain context: ${n} tokens (limit: ${t})`),J({totalTokens:n,maxTokens:t,...this.ratioPercentages(n,t)})}return O(`No main chain entries with usage data found`),Y}catch(e){return X(`context transcript: ${e instanceof Error?e.message:String(e)}`)}}async getContextInfo(e){let t=this.calculateContextFromHookData(e);if(t)return J(t);let n=e.context_window?.context_window_size??2e5;return this.calculateContextTokensFromTranscript(e.transcript_path,n)}},rI=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=ak(t);if(n&&r!==0&&n.cursor.mtimeMs===r)return this.touch(e,n),{kind:`ok`,value:n.value};let i=await aj(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 iI={messageCount:0,recent:[]};function aI(e,t){if(t.isSidechain)return e;let n=[...e.recent,t];return{messageCount:e.messageCount+ +!!$A(t),recent:n.length>20?n.slice(-20):n}}function oI(e){let t=null,n=null;for(let r of e){let e=r.type||r.message?.role||r.message?.type;if($A(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 sI=class{fold=new rI(iI,aI);async getMetricsInfo(e,t){if(O(`Getting metrics from hook data for session: ${e}`),!t.cost)return Y;let n=await this.fold.read(e,t.transcript_path);return n.kind===`failed`?X(`metrics (${e}): ${n.reason}`):J({responseTime:t.cost.total_api_duration_ms/1e3,lastResponseTime:oI(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 cI={command:null,todos:[],pending:[],done:[]};function lI(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 uI(e,t){if(t.isSidechain)return e;let n=$A(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=lI(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 dI(e){return{command:e.command,todos:e.todos,running:e.pending.reduce((e,t)=>lI(e,t.name),[]),done:e.done}}var fI=class{fold=new rI(cI,uI);async getActivityInfo(e,t){let n=await this.fold.read(e,t.transcript_path);return n.kind===`failed`?X(`activity (${e}): ${n.reason}`):J(dI(n.value))}};const pI=new Map;function mI(e){if(!e)return``;let t=e.indexOf(`,`);return t<0?e:e.slice(0,t)}var hI=class{async getSessionId(){if(!process.env.TMUX_PANE)return Y;let e=mI(process.env.TMUX),t=pI.get(e);if(t!==void 0)return t;O(`Getting tmux session ID, TMUX_PANE: ${process.env.TMUX_PANE}`);let n=await De({bin:`tmux`,args:[`display-message`,`-p`,`#S`],timeoutMs:1e3,category:`tmux`}),r=n.ok?n.stdout.trim()?J(n.stdout.trim()):Y:X(`tmux display-message: ${n.reason}`);return pI.set(e,r),r}isInTmux(){return!!process.env.TMUX_PANE}};const gI=e=>`${e.sessionId}|${e.projectDir}|${e.cwd}`;var _I=class{readings=new Map;inFlight=new Map;constructor(e,t=Date.now){this.edge=e,this.now=t}getCeiling(e){let t=gI(e),n=this.readings.get(t);if(n&&this.now()-n.at<1e4)return Promise.resolve(n.outcome);let r=this.inFlight.get(t)??this.fetch(t,e);return n?Promise.resolve(n.outcome):r}fetch(e,t){let n=this.edge.locate(t.projectDir),r=(n.kind===`ok`?this.edge.read(n.value,t):Promise.resolve(n)).then(t=>{if(this.inFlight.get(e)!==r)return t;for(this.readings.delete(e),this.readings.set(e,{outcome:t,at:this.now()});this.readings.size>64;)this.readings.delete(this.readings.keys().next().value);return t}).finally(()=>{this.inFlight.get(e)===r&&this.inFlight.delete(e)});return this.inFlight.set(e,r),r}move(e,t){let n=this.edge.locate(e.projectDir);if(n.kind!==`ok`)throw Error(n.kind===`failed`?n.reason:`memento is not installed or not enabled for this project`);let r=gI(e);try{this.edge.move(n.value,e,t)}finally{this.readings.delete(r),this.inFlight.delete(r),this.fetch(r,e)}}};const vI=c.join(`lib`,`ceiling_config.py`),yI=c.join(`skills`,`ceiling`,`bin`,`ceiling`);function bI(e,t){let n=typeof e==`object`&&e?e.plugins:void 0;if(typeof n!=`object`||!n)throw Error(`${t} has no "plugins" object`);return Object.entries(n).filter(([e])=>e.split(`@`)[0]===`memento`).flatMap(([e,n])=>{if(!Array.isArray(n))throw Error(`${t}: "${e}" is not a list of installs`);return n.map(n=>{let{scope:r,installPath:i,projectPath:a}=n??{};if(typeof r!=`string`||typeof i!=`string`)throw Error(`${t}: an install of "${e}" has no scope/path`);return typeof a==`string`?{key:e,scope:r,installPath:i,projectPath:a}:{key:e,scope:r,installPath:i}})})}function xI(e,t){let n=!0;for(let i of e){if(!r.existsSync(i))continue;let e;try{e=JSON.parse(r.readFileSync(i,`utf8`))?.enabledPlugins?.[t]}catch(e){return X(`memento lookup: ${i}: ${e.message}`)}typeof e==`boolean`&&(n=e)}return J(n)}function SI(e,t){if(!r.existsSync(e))return Y;let n;try{n=bI(JSON.parse(r.readFileSync(e,`utf8`)),e)}catch(e){return X(`memento lookup: ${e.message}`)}let i=n.find(e=>e.projectPath===t)??n.find(e=>e.scope===`user`);if(i===void 0)return Y;let a=xI([c.join(c.dirname(c.dirname(e)),`settings.json`),c.join(t,`.claude`,`settings.json`),c.join(t,`.claude`,`settings.local.json`)],i.key);if(a.kind!==`ok`)return a;if(!a.value)return Y;let o=[vI,yI].filter(e=>!r.existsSync(c.join(i.installPath,e)));return o.length===0?J(i.installPath):X(`memento at ${i.installPath} has no ${o.join(` or `)} — upgrade the plugin`)}function CI(e){let{CLAUDE_PROJECT_DIR:t,CLAUDE_CODE_SESSION_ID:n,...r}=process.env;return{...r,CLAUDE_CODE_SESSION_ID:e.sessionId,CLAUDE_PROJECT_DIR:e.projectDir||e.cwd}}function wI(e){return e.stderr.trim()||e.error||`${e.reason}${e.exitCode===null?``:` (exit ${e.exitCode})`}`}function TI(e){let t;try{t=JSON.parse(e)}catch{return X(`memento read: not JSON: ${e.trim()}`)}let{ceiling:n,session:r}=t??{},i=n===`off`||typeof n==`number`&&n>=0?n:void 0;return i!==void 0&&(r===null||typeof r==`string`)?J({ceiling:i,session:r}):X(`memento read: unexpected answer: ${e.trim()}`)}async function EI(e,t){let n=await De({bin:`python3`,args:[`-c`,`
189
189
  import json, math, sys
190
190
  sys.path.insert(0, sys.argv[1])
191
191
  from ceiling_config import CONFIG_NAME, anchored, ceiling_in, in_force, session_directory
@@ -194,26 +194,26 @@ ceiling = in_force(directory, anchored(sys.argv[3]))
194
194
  layer = ceiling_in(directory / CONFIG_NAME)
195
195
  print(json.dumps({"ceiling": "off" if ceiling == math.inf else ceiling,
196
196
  "session": layer.text if layer else None}))
197
- `,c.join(e,`lib`),t.sessionId,t.cwd],env:hI(t),timeoutMs:3e3,category:`memento.read`});return n.ok?_I(n.stdout):X(gI(n))}function yI(e,t,n){let r=Oe({bin:c.join(e,dI),args:n.kind===`set`?[`set`,`session`,n.to]:[`clear`,`session`],env:hI(t),timeoutMs:5e3,category:`memento.move`});if(!r.ok)throw Error(gI(r))}function bI(){let e=AE(OE(DE(process.env,process.cwd())));return{locate:t=>mI(e,t),read:vI,move:yI}}var xI=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 SI=new iN;Te(SI.launchStats);const CI=new Vy({counters:SI,logger:Q}),wI=new Yy({watchers:CI,logger:Q}),TI=new lj,EI=new sN,DI=new aP(EI,Q),OI=new xI(Ke()),kI=new JF,AI=new $F,jI=new iI,MI=new sI,NI=new lI(bI()),PI=new nN({gitService:wI,sessionState:EI,watchers:CI},{observers:{onReload:e=>Q(`info`,`config loaded projectDir=${e.projectDir} cwd=${e.cwd} file=${e.configFilePath??`<bundled default>`} error=${e.lastError===null?`none`:JSON.stringify(e.lastError)} warning=${e.lastWarning===null?`none`:JSON.stringify(e.lastWarning)}`)}}),FI=60*1e3;function II(){let e=import.meta.url,n=[];e.startsWith(`file://`)&&n.push(ie(e)),t.argv[1]&&n.push(t.argv[1]);let i=new Map;for(let e of n)try{i.set(e,r.statSync(e).mtimeMs)}catch{}let a=null,o=()=>{for(let[e,t]of i)try{if(r.statSync(e).mtimeMs!==t){Q(`info`,`binary mtime changed (${e}); shutting down`),a&&clearInterval(a),QI(0);return}}catch(e){Q(`warn`,`bin stat failed: ${e.message}`)}};return{arm(){i.size!==0&&(a=setInterval(o,FI),a.unref())},checkNow:o}}const LI=II(),RI=PA({entryUrl:import.meta.url,intervalMs:FI,releaseIntervalMs:216e5,registryUrl:t.env.CC_CANDYBAR_REGISTRY_URL??`https://registry.npmjs.org`,fetchImpl:fetch,onApplied:()=>LI.checkNow(),log:Q});let zI=null,BI=null,VI=0;function HI(){t.on(`uncaughtException`,e=>{Q(`error`,`uncaughtException: ${e.stack||e.message}`),QI(1)}),t.on(`unhandledRejection`,e=>{Q(`error`,`unhandledRejection: ${String(e)}`),QI(1)});for(let e of[`SIGINT`,`SIGTERM`,`SIGHUP`])t.on(e,()=>{Q(`info`,`received ${e}, shutting down`),QI(0)});try{VI=ST(t.env)}catch(e){Q(`error`,`refusing to boot: ${e.message}`),QI(1);return}zI=CD(t.pid);let e=ND(FD(zI));if(!e.decision.allow){Q(`warn`,`fork-bomb breaker: ${e.decision.reason}; refusing to boot`),QI(1);return}BI=e.registryPath,r.mkdirSync(Pe(),{recursive:!0}),Le(Fe()),EI.useStorage(new uN(Be(),500,Q)),DI.useStorage(hP(Ve(),Q)),ED({anchor:TD(t.env),isAlive:DD,onOrphaned:e=>{Q(`info`,`parent watchdog: ${e}; shutting down`),QI(0)}}),UI(y.createServer({allowHalfOpen:!1},e=>{$I(e)}),Fe(),!1)}function UI(e,n,r){e.removeAllListeners(`error`),e.removeAllListeners(`listening`),e.once(`error`,i=>{if(i.code!==`EADDRINUSE`){Q(`error`,`server error: ${i.message}`),QI(1);return}if(r){Q(`info`,`lost rebind race; another daemon is alive — exiting`),t.exit(0);return}WI(e,n)}),e.listen(n,()=>GI(n))}function WI(e,n){let i=pD(mD(Re(n)),(e,t)=>SD(e,t,{readStartTime:xD,pidAlive:DD}));if(i.kind===`attach-and-exit`){Q(`info`,`EADDRINUSE: ${i.reason} — exiting`),t.exit(0);return}Q(`warn`,`EADDRINUSE: ${i.reason} — unlinking stale socket and rebinding`);try{r.unlinkSync(n)}catch(e){if(e.code!==`ENOENT`){Q(`error`,`cannot unlink stale socket ${n}: ${e.message}`),QI(1);return}}UI(e,n,!0)}function GI(e){let n=_D(e);if(n.kind!==`present`){Q(`warn`,`no ownable socket at bind callback (${n.kind}); exiting`),QI(0);return}YI(e);try{r.chmodSync(e,384)}catch(e){Q(`warn`,`chmod socket failed: ${e.message}`)}Q(`info`,`daemon up: pid=${t.pid} v=3 sock=${e} heapCap=${Math.round(ne.getHeapStatistics().heap_size_limit/1048576)}MB rssLimit=${Math.round(VI/1048576)}MB`),zT();let i=OI.reset();i!==null&&Q(`warn`,`diagnostic dump wipe failed: ${i}`),LI.arm(),RI.arm(),JI(),KI(e,n.identity)}function KI(e,n){bD({bound:n,myPid:t.pid,readIdentity:()=>_D(e),readLease:()=>mD(Re(e)),shutdown:e=>QI(e),log:Q}).arm()}let qI=null;function JI(){qI=ET(AT(SI.startedAt.getTime(),e=>QI(e),{rssLimitBytes:VI})),qI.arm()}function YI(e){let n=hD(Re(e),{pid:t.pid,version:3,binPath:t.argv[1],startTime:zI});n!==null&&Q(`warn`,`lease write failed: ${n}`)}let XI=0,ZI=!1;function QI(e){if(!ZI){ZI=!0,setTimeout(()=>t.kill(t.pid,`SIGKILL`),500);try{wI.close()}catch(e){Q(`warn`,`gitService close failed: ${e.message}`)}try{TI.close()}catch(e){Q(`warn`,`usageStore close failed: ${e.message}`)}try{CI.closeAll()}catch(e){Q(`warn`,`watcherRegistry close failed: ${e.message}`)}try{EI.flush()}catch(e){Q(`warn`,`sessionState flush failed: ${e.message}`)}gD(ze(),t.pid),BI!==null&&PD(BI,t.pid,jD,e=>r.unlinkSync(e)),t.exit(e)}}function $I(e){XI++,SI.inFlight=XI;let t=!1,n=(n,r)=>{if(t){r!==null&&Q(`warn`,`exit-after-flush dropped: an earlier responder settled this socket`);return}t=!0;let i=r===null?void 0:()=>QI(r);try{e.end(Yw(n),i)}catch(e){Q(`warn`,`response write failed: ${e.message}`),i?.()}},r=setTimeout(()=>{SI.requestsTimedOut++,n({ok:!1,error:`request exceeded 200ms`,code:`TIMEOUT`,daemonV:3},null)},200),i=Xw(e=>{tL(e).then(e=>n(e.resp,e.exitAfterFlush)).catch(e=>{Q(`error`,`handler threw: ${e?.stack||e}`),n({ok:!1,error:String(e?.message||e),code:`RENDER_FAILED`,daemonV:3},null)})},e=>{Q(`warn`,`frame parse failed: ${e.message}`),n({ok:!1,error:e.message,code:`BAD_REQUEST`,daemonV:3},null)});e.on(`data`,i),e.on(`error`,e=>{Q(`warn`,`socket error: ${e.message}`)}),e.on(`close`,()=>{clearTimeout(r),XI=Math.max(0,XI-1),SI.inFlight=XI})}const eL=e=>({resp:e,exitAfterFlush:null});async function tL(e){if(!e||typeof e!=`object`||typeof e.v!=`number`)return eL({ok:!1,error:`malformed request`,code:`BAD_REQUEST`,daemonV:3});if(e.v!==3)return e.v>3?Q(`info`,`version mismatch: client=${e.v} > daemon=3; binary likely upgraded — exiting after the response flushes`):Q(`info`,`version mismatch: client=${e.v} < daemon=3; client is stale — staying up`),{resp:{ok:!1,error:`protocol v${e.v} not supported (daemon at v3)`,code:`VERSION_MISMATCH`,daemonV:3},exitAfterFlush:e.v>3?0:null};if(e.kind===`shutdown`)return{resp:{ok:!0,output:``},exitAfterFlush:0};if(e.kind===`stats`)return eL({ok:!0,stats:SI.snapshot({gitCache:wI.getStats(),usageCache:TI.getStats(),renderCacheSize:PI.size,watchersActive:CI.size(),nextRestartReason:qI?.describeNextRestart()??null})});if(e.kind===`render`){SI.requestsTotal++;let t=Date.now();try{let{report:n}=jF(e.hookData);for(let e of n.unknownTopLevelFields)Q(`info`,`schema: unknown field '${e}' — Anthropic may have added it`);let r=[];for(let e of n.missingRequired)r.push(`missing required field '${e}'`);for(let{path:e,expected:t,got:i}of n.typeMismatches)r.push(`field '${e}' expected ${t}, got ${i}`);if(e.cwd===``&&r.push(`request 'cwd' is empty`),r.length>0)return SI.requestsErrored++,Q(`warn`,`BAD_REQUEST: ${r.join(`; `)}`),eL({ok:!1,error:`malformed hookData: ${r.join(`; `)}`,code:`BAD_REQUEST`,daemonV:3});let i=e.hookData.workspace.project_dir,{configFile:a,unknownFlagsError:o}=nL(e.args),s=e.hookData.session_id,c=Vw(e),l=JSON.stringify(c);EI.get(s,`client-hints`)!==l&&EI.set(s,gF,l);let u=EI.get(s,`config-override`)??a??c.configEnv,d=PI.getOrCreate(i,e.cwd,u),f=ZP({projectDir:i,cwd:e.cwd,configFile:u??null});EI.get(s,`render-origin`)!==f&&EI.set(s,XP,f);let p=c.termCols,m=qF(p??120),h=QD(c.termRows),{authoredRoots:g}=d.state,_=t=>EI.get(e.hookData.session_id,t),v=gk(d.state.config,_,e=>g.has(e)),y=await Nk(e.hookData,sL,e.cwd,d.state.neededInputPaths(v.preset),v,c,Yk(d.state.config,_).length+Xk(d.state.config,_).length),b=[],x=_k(v,m),S=HM(d.state.config,d.state.compiled,d.state.store,d.state.registry,y,x,{perSegmentSink:d.state.lastRenderCellsBySegment,onRenderWarning:e=>b.push(e)},vk(v)),C=EI.get(e.hookData.session_id,`click.error`);C&&EI.clear(e.hookData.session_id,`click.error`);let ee=[o,d.lastError,C].filter(Boolean).join(`
198
- `),te=RI.notice({sessionId:s,dismissed:EI.get(s,yA),enabled:v.updateNotice}),ne=d.lastError===null?null:d.configFilePath,re=rO(ee,te,[d.lastWarning??``,...b].filter(Boolean).join(`
199
- `)),w=OI.sync(s,re===null?null:aO(re));w!==null&&Q(`warn`,`diagnostic dump failed: ${w}`);let ie=oO(S,re,{fullText:w===null?{kind:`file`,path:OI.pathFor(s)}:{kind:`unavailable`,reason:w},failedConfigFile:ne},{width:m,rowCap:h,colorCompatibility:v.colorCompatibility}),T=Date.now()-t,E=wI.getStats(),ae=TI.getStats();return Q(`info`,`render sid=${e.hookData.session_id??`?`} took=${T}ms termCols=${p??`?`} termRows=${c.termRows??`?`} width=${m} git=${E.size}/${E.hits}h/${E.misses}m usage=${ae.size}/${ae.hits}h/${ae.misses}m err=${ee?`Y`:`N`} upd=${te.length} warn=${d.lastWarning?`Y`:`N`}`),eL({ok:!0,output:ie+`
200
- `})}catch(e){throw SI.requestsErrored++,e}}if(e.kind===`click`)return eL(await cL(e.verb,e.value));if(e.kind===`debug`){if(!KF(e.what))return eL({ok:!1,error:`unknown debug 'what': ${String(e.what)} (have: ${GF.join(`, `)})`,code:`BAD_REQUEST`,daemonV:3});let t=PI.firstState(),n=t===null?null:{store:t.store,registry:t.registry,config:t.config,compiled:t.compiled,lastRenderBySegment:e.what===`segments`?oL(t.lastRenderCellsBySegment,t.config.globals.charset??`unicode`,t.config.globals.colorCompatibility??`truecolor`):aL};return eL({ok:!0,debug:PF(e.what,n)})}return eL({ok:!1,error:`unknown kind`,code:`BAD_REQUEST`,daemonV:3})}function nL(e){let{values:t,tokens:n}=_({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:Uw(t.config),unknownFlagsError:r.length>0?`Unknown flags: ${r.join(`, `)}`:null}}const rL={sessionState:EI,dlog:Q,applyUpdate:()=>RI.act(),doctor:vP(),memento:NI,claudeInput:NP(),history:DI,configFor:e=>PI.getOrCreate(e.projectDir,e.cwd,e.configFile??void 0).state.config,reloadConfig:e=>PI.reload(e.projectDir,e.cwd,e.configFile??void 0)},iL={style:`powerline`,colorCompatibility:mo,wrap:!0,padding:1,charset:lo,width:1/0},aL=new Map;function oL(e,t,n){let r=new Map;for(let[i,a]of e)r.set(i,ZD(a,{...iL,charset:t,colorCompatibility:n}));return r}const sL={gitProvider:wI,usageStore:TI,contextProvider:kI,metricsProvider:AI,activityProvider:jI,tmuxService:MI,mementoProvider:NI,autoCompact:WO,log:Q,clock:()=>new Date,history:e=>DI.depth(e)};function cL(e,t){let n=OF.get(e);if(!n)return{ok:!1,error:`unknown click verb: ${e}`,code:`BAD_REQUEST`,daemonV:3};try{return n(t,rL),{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 lL={connectMs:200,budgetMs:500};async function uL(e){let n=e.includes(`--json`),r=await dL();if(r.kind!==`ok`&&(t.stderr.write(`daemon-stats: ${iT(r)}\n`),t.exit(1)),n){t.stdout.write(JSON.stringify(r.value,null,2)+`
201
- `);return}t.stdout.write(hL(r.value))}function dL(){return Qw({kind:`stats`},lL,e=>`stats`in e?e.stats:void 0)}function fL(e){return e<1024?`${e}B`:e<1024*1024?`${(e/1024).toFixed(1)}KB`:`${(e/1024/1024).toFixed(1)}MB`}function pL(e,t){let n=e+t;return n===0?`n/a`:`${(e/n*100).toFixed(1)}%`}function mL(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 hL(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 ${mL(e.uptimeSec)}`),t.push(` rss ${fL(e.rssBytes)}`),t.push(` heapUsed ${fL(e.heapUsedBytes)}`),t.push(` heapTotal ${fL(e.heapTotalBytes)}`),t.push(` external ${fL(e.externalBytes)}`),t.push(` arrayBuffers ${fL(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 ${pL(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 ${pL(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(`
197
+ `,c.join(e,`lib`),t.sessionId,t.cwd],env:CI(t),timeoutMs:3e3,category:`memento.read`});return n.ok?TI(n.stdout):X(wI(n))}function DI(e,t,n){let r=Oe({bin:c.join(e,yI),args:n.kind===`set`?[`set`,`session`,n.to]:[`clear`,`session`],env:CI(t),timeoutMs:5e3,category:`memento.move`});if(!r.ok)throw Error(wI(r))}function OI(){let e=ME(AE(kE(process.env,process.cwd())));return{locate:t=>SI(e,t),read:EI,move:DI}}var kI=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 AI=new pN;Te(AI.launchStats);const jI=new Vy({counters:AI,logger:Q}),MI=new Yy({watchers:jI,logger:Q}),NI=new _j,PI=new gN,FI=new mP(PI,Q),II=new kI(Ke()),LI=new nI,RI=new sI,zI=new fI,BI=new hI,VI=new _I(OI()),HI=new dN({gitService:MI,sessionState:PI,watchers:jI},{observers:{onReload:e=>Q(`info`,`config loaded projectDir=${e.projectDir} cwd=${e.cwd} file=${e.configFilePath??`<bundled default>`} error=${e.lastError===null?`none`:JSON.stringify(e.lastError)} warning=${e.lastWarning===null?`none`:JSON.stringify(e.lastWarning)}`)}}),UI=60*1e3;function WI(){let e=import.meta.url,n=[];e.startsWith(`file://`)&&n.push(ie(e)),t.argv[1]&&n.push(t.argv[1]);let i=new Map;for(let e of n)try{i.set(e,r.statSync(e).mtimeMs)}catch{}let a=null,o=()=>{for(let[e,t]of i)try{if(r.statSync(e).mtimeMs!==t){Q(`info`,`binary mtime changed (${e}); shutting down`),a&&clearInterval(a),oL(0);return}}catch(e){Q(`warn`,`bin stat failed: ${e.message}`)}};return{arm(){i.size!==0&&(a=setInterval(o,UI),a.unref())},checkNow:o}}const GI=WI(),KI=HA({entryUrl:import.meta.url,intervalMs:UI,releaseIntervalMs:216e5,registryUrl:t.env.CC_CANDYBAR_REGISTRY_URL??`https://registry.npmjs.org`,fetchImpl:fetch,onApplied:()=>GI.checkNow(),log:Q});let qI=null,JI=null,YI=0;function XI(){t.on(`uncaughtException`,e=>{Q(`error`,`uncaughtException: ${e.stack||e.message}`),oL(1)}),t.on(`unhandledRejection`,e=>{Q(`error`,`unhandledRejection: ${String(e)}`),oL(1)});for(let e of[`SIGINT`,`SIGTERM`,`SIGHUP`])t.on(e,()=>{Q(`info`,`received ${e}, shutting down`),oL(0)});try{YI=wT(t.env)}catch(e){Q(`error`,`refusing to boot: ${e.message}`),oL(1);return}qI=TD(t.pid);let e=FD(LD(qI));if(!e.decision.allow){Q(`warn`,`fork-bomb breaker: ${e.decision.reason}; refusing to boot`),oL(1);return}JI=e.registryPath,r.mkdirSync(Pe(),{recursive:!0}),Le(Fe()),PI.useStorage(new yN(Be(),500,Q)),FI.useStorage(wP(Ve(),Q)),OD({anchor:DD(t.env),isAlive:kD,onOrphaned:e=>{Q(`info`,`parent watchdog: ${e}; shutting down`),oL(0)}}),ZI(y.createServer({allowHalfOpen:!1},e=>{sL(e)}),Fe(),!1)}function ZI(e,n,r){e.removeAllListeners(`error`),e.removeAllListeners(`listening`),e.once(`error`,i=>{if(i.code!==`EADDRINUSE`){Q(`error`,`server error: ${i.message}`),oL(1);return}if(r){Q(`info`,`lost rebind race; another daemon is alive — exiting`),t.exit(0);return}QI(e,n)}),e.listen(n,()=>$I(n))}function QI(e,n){let i=hD(gD(Re(n)),(e,t)=>wD(e,t,{readStartTime:CD,pidAlive:kD}));if(i.kind===`attach-and-exit`){Q(`info`,`EADDRINUSE: ${i.reason} — exiting`),t.exit(0);return}Q(`warn`,`EADDRINUSE: ${i.reason} — unlinking stale socket and rebinding`);try{r.unlinkSync(n)}catch(e){if(e.code!==`ENOENT`){Q(`error`,`cannot unlink stale socket ${n}: ${e.message}`),oL(1);return}}ZI(e,n,!0)}function $I(e){let n=yD(e);if(n.kind!==`present`){Q(`warn`,`no ownable socket at bind callback (${n.kind}); exiting`),oL(0);return}rL(e);try{r.chmodSync(e,384)}catch(e){Q(`warn`,`chmod socket failed: ${e.message}`)}Q(`info`,`daemon up: pid=${t.pid} v=3 sock=${e} heapCap=${Math.round(ne.getHeapStatistics().heap_size_limit/1048576)}MB rssLimit=${Math.round(YI/1048576)}MB`),VT();let i=II.reset();i!==null&&Q(`warn`,`diagnostic dump wipe failed: ${i}`),GI.arm(),KI.arm(),nL(),eL(e,n.identity)}function eL(e,n){SD({bound:n,myPid:t.pid,readIdentity:()=>yD(e),readLease:()=>gD(Re(e)),shutdown:e=>oL(e),log:Q}).arm()}let tL=null;function nL(){tL=OT(MT(AI.startedAt.getTime(),e=>oL(e),{rssLimitBytes:YI})),tL.arm()}function rL(e){let n=_D(Re(e),{pid:t.pid,version:3,binPath:t.argv[1],startTime:qI});n!==null&&Q(`warn`,`lease write failed: ${n}`)}let iL=0,aL=!1;function oL(e){if(!aL){aL=!0,setTimeout(()=>t.kill(t.pid,`SIGKILL`),500);try{MI.close()}catch(e){Q(`warn`,`gitService close failed: ${e.message}`)}try{NI.close()}catch(e){Q(`warn`,`usageStore close failed: ${e.message}`)}try{jI.closeAll()}catch(e){Q(`warn`,`watcherRegistry close failed: ${e.message}`)}try{PI.flush()}catch(e){Q(`warn`,`sessionState flush failed: ${e.message}`)}vD(ze(),t.pid),JI!==null&&ID(JI,t.pid,ND,e=>r.unlinkSync(e)),t.exit(e)}}function sL(e){iL++,AI.inFlight=iL;let t=!1,n=(n,r)=>{if(t){r!==null&&Q(`warn`,`exit-after-flush dropped: an earlier responder settled this socket`);return}t=!0;let i=r===null?void 0:()=>oL(r);try{e.end(Zw(n),i)}catch(e){Q(`warn`,`response write failed: ${e.message}`),i?.()}},r=setTimeout(()=>{AI.requestsTimedOut++,n({ok:!1,error:`request exceeded 200ms`,code:`TIMEOUT`,daemonV:3},null)},200),i=Qw(e=>{lL(e).then(e=>n(e.resp,e.exitAfterFlush)).catch(e=>{Q(`error`,`handler threw: ${e?.stack||e}`),n({ok:!1,error:String(e?.message||e),code:`RENDER_FAILED`,daemonV:3},null)})},e=>{Q(`warn`,`frame parse failed: ${e.message}`),n({ok:!1,error:e.message,code:`BAD_REQUEST`,daemonV:3},null)});e.on(`data`,i),e.on(`error`,e=>{Q(`warn`,`socket error: ${e.message}`)}),e.on(`close`,()=>{clearTimeout(r),iL=Math.max(0,iL-1),AI.inFlight=iL})}const cL=e=>({resp:e,exitAfterFlush:null});async function lL(e){if(!e||typeof e!=`object`||typeof e.v!=`number`)return cL({ok:!1,error:`malformed request`,code:`BAD_REQUEST`,daemonV:3});if(e.v!==3)return e.v>3?Q(`info`,`version mismatch: client=${e.v} > daemon=3; binary likely upgraded — exiting after the response flushes`):Q(`info`,`version mismatch: client=${e.v} < daemon=3; client is stale — staying up`),{resp:{ok:!1,error:`protocol v${e.v} not supported (daemon at v3)`,code:`VERSION_MISMATCH`,daemonV:3},exitAfterFlush:e.v>3?0:null};if(e.kind===`shutdown`)return{resp:{ok:!0,output:``},exitAfterFlush:0};if(e.kind===`stats`)return cL({ok:!0,stats:AI.snapshot({gitCache:MI.getStats(),usageCache:NI.getStats(),renderCacheSize:HI.size,watchersActive:jI.size(),nextRestartReason:tL?.describeNextRestart()??null})});if(e.kind===`render`){AI.requestsTotal++;let t=Date.now();try{let{report:n}=zF(e.hookData);for(let e of n.unknownTopLevelFields)Q(`info`,`schema: unknown field '${e}' — Anthropic may have added it`);let r=[];for(let e of n.missingRequired)r.push(`missing required field '${e}'`);for(let{path:e,expected:t,got:i}of n.typeMismatches)r.push(`field '${e}' expected ${t}, got ${i}`);if(e.cwd===``&&r.push(`request 'cwd' is empty`),r.length>0)return AI.requestsErrored++,Q(`warn`,`BAD_REQUEST: ${r.join(`; `)}`),cL({ok:!1,error:`malformed hookData: ${r.join(`; `)}`,code:`BAD_REQUEST`,daemonV:3});let i=e.hookData.workspace.project_dir,{configFile:a,unknownFlagsError:o}=uL(e.args),s=e.hookData.session_id,c=Uw(e),l=JSON.stringify(c);PI.get(s,`client-hints`)!==l&&PI.set(s,wF,l);let u=PI.get(s,`config-override`)??a??c.configEnv,d=HI.getOrCreate(i,e.cwd,u),f=oF({projectDir:i,cwd:e.cwd,configFile:u??null});PI.get(s,`render-origin`)!==f&&PI.set(s,aF,f);let p=c.termCols,m=tI(p??120),h=eO(c.termRows),{authoredRoots:g}=d.state,_=t=>PI.get(e.hookData.session_id,t),v=vk(d.state.config,_,e=>g.has(e)),y=await Fk(e.hookData,hL,e.cwd,d.state.neededInputPaths(v.preset),v,c,sA(d.state.config,d.state.fileHeldSettings,_)),b=[],x=yk(v,m),S=ZM(d.state.config,d.state.compiled,d.state.store,d.state.registry,y,x,{perSegmentSink:d.state.lastRenderCellsBySegment,onRenderWarning:e=>b.push(e)},bk(v)),C=PI.get(e.hookData.session_id,`click.error`);C&&PI.clear(e.hookData.session_id,`click.error`);let ee=[o,d.lastError,C].filter(Boolean).join(`
198
+ `),te=KI.notice({sessionId:s,dismissed:PI.get(s,DA),enabled:v.updateNotice}),ne=d.lastError===null?null:d.configFilePath,re=aO(ee,te,[d.lastWarning??``,...b].filter(Boolean).join(`
199
+ `)),w=II.sync(s,re===null?null:sO(re));w!==null&&Q(`warn`,`diagnostic dump failed: ${w}`);let ie=cO(S,re,{fullText:w===null?{kind:`file`,path:II.pathFor(s)}:{kind:`unavailable`,reason:w},failedConfigFile:ne},{width:m,rowCap:h,colorCompatibility:v.colorCompatibility}),T=Date.now()-t,E=MI.getStats(),ae=NI.getStats();return Q(`info`,`render sid=${e.hookData.session_id??`?`} took=${T}ms termCols=${p??`?`} termRows=${c.termRows??`?`} width=${m} git=${E.size}/${E.hits}h/${E.misses}m usage=${ae.size}/${ae.hits}h/${ae.misses}m err=${ee?`Y`:`N`} upd=${te.length} warn=${d.lastWarning?`Y`:`N`}`),cL({ok:!0,output:ie+`
200
+ `})}catch(e){throw AI.requestsErrored++,e}}if(e.kind===`click`)return cL(await gL(e.verb,e.value));if(e.kind===`debug`){if(!eI(e.what))return cL({ok:!1,error:`unknown debug 'what': ${String(e.what)} (have: ${$F.join(`, `)})`,code:`BAD_REQUEST`,daemonV:3});let t=HI.firstState(),n=t===null?null:{store:t.store,registry:t.registry,config:t.config,compiled:t.compiled,lastRenderBySegment:e.what===`segments`?mL(t.lastRenderCellsBySegment,t.config.globals.charset??`unicode`,t.config.globals.colorCompatibility??`truecolor`):pL};return cL({ok:!0,debug:HF(e.what,n)})}return cL({ok:!1,error:`unknown kind`,code:`BAD_REQUEST`,daemonV:3})}function uL(e){let{values:t,tokens:n}=_({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:Gw(t.config),unknownFlagsError:r.length>0?`Unknown flags: ${r.join(`, `)}`:null}}const dL={sessionState:PI,dlog:Q,applyUpdate:()=>KI.act(),doctor:DP(),memento:VI,claudeInput:HP(),history:FI,configFor:e=>HI.getOrCreate(e.projectDir,e.cwd,e.configFile??void 0).state.config,reloadConfig:e=>HI.reload(e.projectDir,e.cwd,e.configFile??void 0)},fL={style:`powerline`,colorCompatibility:ho,wrap:!0,padding:1,charset:uo,width:1/0},pL=new Map;function mL(e,t,n){let r=new Map;for(let[i,a]of e)r.set(i,$D(a,{...fL,charset:t,colorCompatibility:n}));return r}const hL={gitProvider:MI,usageStore:NI,contextProvider:LI,metricsProvider:RI,activityProvider:zI,tmuxService:BI,mementoProvider:VI,autoCompact:KO,log:Q,clock:()=>new Date,history:e=>FI.depth(e)};function gL(e,t){let n=IF.get(e);if(!n)return{ok:!1,error:`unknown click verb: ${e}`,code:`BAD_REQUEST`,daemonV:3};try{return n(t,dL),{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 _L={connectMs:200,budgetMs:500};async function vL(e){let n=e.includes(`--json`),r=await yL();if(r.kind!==`ok`&&(t.stderr.write(`daemon-stats: ${oT(r)}\n`),t.exit(1)),n){t.stdout.write(JSON.stringify(r.value,null,2)+`
201
+ `);return}t.stdout.write(CL(r.value))}function yL(){return eT({kind:`stats`},_L,e=>`stats`in e?e.stats:void 0)}function bL(e){return e<1024?`${e}B`:e<1024*1024?`${(e/1024).toFixed(1)}KB`:`${(e/1024/1024).toFixed(1)}MB`}function xL(e,t){let n=e+t;return n===0?`n/a`:`${(e/n*100).toFixed(1)}%`}function SL(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 CL(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 ${SL(e.uptimeSec)}`),t.push(` rss ${bL(e.rssBytes)}`),t.push(` heapUsed ${bL(e.heapUsedBytes)}`),t.push(` heapTotal ${bL(e.heapTotalBytes)}`),t.push(` external ${bL(e.externalBytes)}`),t.push(` arrayBuffers ${bL(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 ${xL(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 ${xL(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(`
202
202
  `)+`
203
- `}const gL={connectMs:200,budgetMs:500};async function _L(e,n){let r=n.includes(`--json`),i=await vL(e);if(i.kind!==`ok`&&(t.stderr.write(`${e}: ${iT(i)}\n`),t.exit(1)),r){t.stdout.write(JSON.stringify(i.value,null,2)+`
204
- `);return}t.stdout.write(yL(i.value))}function vL(e){return Qw({kind:`debug`,what:e},gL,e=>`debug`in e?e.debug:void 0)}function yL(e){switch(e.what){case`vars`:return bL(e.vars);case`segments`:return xL(e.segments);case`config`:return SL(e.config);default:return e}}function bL(e){if(e.length===0)return`no variables (DSL not active)
205
- `;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?``:` ${wL(a.ageMs)}`,o=a.lastError?` ✗ ${a.lastError.message}`:``;t.push(` ${a.name.padEnd(n)} ${(a.source??`—`).padEnd(r)} ${a.type.padEnd(i)} ${CL(a.value)}${e}${o}`)}return t.join(`
203
+ `}const wL={connectMs:200,budgetMs:500};async function TL(e,n){let r=n.includes(`--json`),i=await EL(e);if(i.kind!==`ok`&&(t.stderr.write(`${e}: ${oT(i)}\n`),t.exit(1)),r){t.stdout.write(JSON.stringify(i.value,null,2)+`
204
+ `);return}t.stdout.write(DL(i.value))}function EL(e){return eT({kind:`debug`,what:e},wL,e=>`debug`in e?e.debug:void 0)}function DL(e){switch(e.what){case`vars`:return OL(e.vars);case`segments`:return kL(e.segments);case`config`:return AL(e.config);default:return e}}function OL(e){if(e.length===0)return`no variables (DSL not active)
205
+ `;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?``:` ${ML(a.ageMs)}`,o=a.lastError?` ✗ ${a.lastError.message}`:``;t.push(` ${a.name.padEnd(n)} ${(a.source??`—`).padEnd(r)} ${a.type.padEnd(i)} ${jL(a.value)}${e}${o}`)}return t.join(`
206
206
  `)+`
207
- `}function xL(e){if(e.length===0)return`no segments (DSL not active)
207
+ `}function kL(e){if(e.length===0)return`no segments (DSL not active)
208
208
  `;let t=[`segments (${e.length})`,``];for(let n of e){t.push(` ${n.name}`),n.description!==null&&t.push(` shows ${n.description}`),t.push(` template ${n.template}`),n.referencedVars.length>0&&t.push(` vars ${n.referencedVars.join(`, `)}`);for(let{id:e,lastRender:r}of n.placements)r!==null&&t.push(` last ${e}: ${r}`)}return t.join(`
209
209
  `)+`
210
- `}function SL(e){return e===null?`config: DSL not active
210
+ `}function AL(e){return e===null?`config: DSL not active
211
211
  `:JSON.stringify(e,null,2)+`
212
- `}function CL(e){let t=typeof e==`string`?e:JSON.stringify(e);return t.length>60?t.slice(0,57)+`…`:t}function wL(e){return e<1e3?`${e}ms`:e<6e4?`${(e/1e3).toFixed(1)}s`:`${Math.floor(e/6e4)}m`}function TL(){let e=DL();return e===null?null:r.readFileSync(e,`utf-8`)}function EL(){let e;try{e=TL()}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 DL(){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 OL(e){let t=e.CC_CANDYBAR_CONFIG??``;return t===``?void 0:t}const kL=5e3;function AL(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},autocompact:GO(4e5,1e6),...yk(e),history:{undo:1,redo:1},unsaved:1}}function jL(e,t){let n=Ew(e,e),r=Ow(n);return r!==null&&t.push(r),n.kind===`file`?n.path:null}async function ML(e,n=t.cwd()){let i=[],a=e===void 0?jL(n,i):c.resolve(Cw(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=Aw(n,n);o!==null&&i.push(o);try{return{kind:`clean`,configPath:a,warnings:i,rendered:await FL(a,n,i)}}catch(e){let t=e;return a!==null&&typeof t==`object`&&t&&typeof t.code==`string`&&t.path===a&&typeof t.message==`string`?{kind:`unreadable`,path:a,message:t.message}:(e instanceof bs&&i.push(...e.warnings),{kind:`fatal`,configPath:a,message:e instanceof bs||e instanceof Error?e.message:String(e),warnings:i})}}async function NL(e,t,n){let r=jw(e,ek);n.push(...r.warnings);let i=Pw(r,e??`<default>`),a=new XM,o=new vb(a,i.globals.default_empty_value??``,void 0,new sN);try{let e=LM(i,o,{cwd:t});n.push(...e.loadWarnings);let r=await o.settled(kL);return r.length>0&&n.push(`source${r.length===1?``:`s`} still running after ${kL} ms, rendered with fallback values: ${r.join(`, `)}`),{config:i,compiled:e,store:a,registry:o}}catch(e){throw o.dispose(),e}}function PL({config:e,compiled:t,store:n,registry:r},i,a){let o=new Map;return{rendered:HM(e,t,n,r,AL(i),_k(i,a),{onSegmentError:(e,t)=>o.set(`segment "${e}"`,t),onRenderWarning:e=>o.set(`theme rule`,e)},vk(i)),failures:o}}async function FL(e,t,n){let r=await NL(e,t,n),{config:i}=r;try{vA(i);let e=gk(i,()=>null,()=>!1),t=e=>PL(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(`
213
- `));return n.rendered}finally{r.registry.dispose()}}function IL(e){return e.map(e=>`warning: ${e}\n`).join(``)}function LL(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:IL(e.warnings),code:0};case`fatal`:return{stdout:``,stderr:IL(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 RL=`--render`,zL=`Usage: cc-candybar check [${RL}] [config-file]\n`;function BL(e){let t=e.filter(e=>e.startsWith(`--`)),n=e.filter(e=>!e.startsWith(`--`)),r=t.filter(e=>e!==RL);return r.length>0?{kind:`usage`,message:`check: unknown option ${r.join(` `)}\n${zL}`}:n.length>1||n[0]===``?{kind:`usage`,message:`check: expected at most one non-empty path\n${zL}`}:{kind:`run`,target:n[0],render:t.includes(RL)}}async function VL(e){let n=BL(e),r=n.kind===`usage`?{stdout:``,stderr:n.message,code:2}:LL(await ML(n.target??OL(t.env)),n.render);t.stdout.write(r.stdout),t.stderr.write(r.stderr),t.exit(r.code)}const HL=`${BD}${zD}`;function UL(e){return`${HL}⚠ cc-candybar: ${WL(e)}\n`}function WL(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: ${RD(e.message,60)}`;case`render_failed`:return`render failed: ${RD(e.message,60)}`;case`malformed_response`:return`malformed daemon response: ${RD(e.message,60)}`}}function GL(e){switch(e.kind){case`ok`:return{output:e.value,kick:!1,debug:null};case`transient`:return{output:`
214
- `,kick:!0,debug:`daemon unavailable (transient: ${e.cause}: ${e.message}) — kicking daemon`};case`permanent`:return{output:UL(e),kick:!1,debug:`daemon refused request (permanent: ${e.cause}) — not kicking`}}}function KL(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 qL=` (fix: click the settings menu (${Wc} by default) › 🧰 tools ▸ 🩺 doctor, then [fix] on the bar)`;function JL({check:e,verdict:t}){return t.ok?`✓ ${e.label}\n`:`✗ ${e.label} — ${t.reason}${t.fix===void 0?``:qL}\n`}function YL(e,t,n){let r;try{r=xP(e,{tmux:Px(t),claudeConfigDir:DE(t,n)})}catch(e){return{stdout:``,stderr:`doctor: ${e instanceof Error?e.message:String(e)}\n`,code:2}}let i=Lx(r);return{stdout:i.map(JL).join(``),stderr:``,code:+!i.every(e=>e.verdict.ok)}}function XL(e){e.length>0&&(t.stderr.write(`doctor: takes no arguments
212
+ `}function jL(e){let t=typeof e==`string`?e:JSON.stringify(e);return t.length>60?t.slice(0,57)+`…`:t}function ML(e){return e<1e3?`${e}ms`:e<6e4?`${(e/1e3).toFixed(1)}s`:`${Math.floor(e/6e4)}m`}function NL(){let e=FL();return e===null?null:r.readFileSync(e,`utf-8`)}function PL(){let e;try{e=NL()}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 FL(){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 IL(e){let t=e.CC_CANDYBAR_CONFIG??``;return t===``?void 0:t}const LL=5e3;function RL(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},autocompact:qO(4e5,1e6),...xk(e),history:{undo:1,redo:1},unsaved:1,resettable:1}}function zL(e,t){let n=Ow(e,e),r=Aw(n);return r!==null&&t.push(r),n.kind===`file`?n.path:null}async function BL(e,n=t.cwd()){let i=[],a=e===void 0?zL(n,i):c.resolve(Tw(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=Mw(n,n);o!==null&&i.push(o);try{return{kind:`clean`,configPath:a,warnings:i,rendered:await UL(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 xs&&i.push(...e.warnings),{kind:`fatal`,configPath:a,message:e instanceof xs||e instanceof Error?e.message:String(e),warnings:i})}}async function VL(e,t,n){let r=Nw(e,nk);n.push(...r.warnings);let i=Iw(r,e??`<default>`),a=new aN,o=new vb(a,i.globals.default_empty_value??``,void 0,new gN);try{let e=KM(i,o,{cwd:t});n.push(...e.loadWarnings);let r=await o.settled(LL);return r.length>0&&n.push(`source${r.length===1?``:`s`} still running after ${LL} ms, rendered with fallback values: ${r.join(`, `)}`),{config:i,compiled:e,store:a,registry:o}}catch(e){throw o.dispose(),e}}function HL({config:e,compiled:t,store:n,registry:r},i,a){let o=new Map;return{rendered:ZM(e,t,n,r,RL(i),yk(i,a),{onSegmentError:(e,t)=>o.set(`segment "${e}"`,t),onRenderWarning:e=>o.set(`theme rule`,e)},bk(i)),failures:o}}async function UL(e,t,n){let r=await VL(e,t,n),{config:i}=r;try{EA(i);let e=vk(i,()=>null,()=>!1),t=e=>HL(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(`
213
+ `));return n.rendered}finally{r.registry.dispose()}}function WL(e){return e.map(e=>`warning: ${e}\n`).join(``)}function GL(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:WL(e.warnings),code:0};case`fatal`:return{stdout:``,stderr:WL(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 KL=`--render`,qL=`Usage: cc-candybar check [${KL}] [config-file]\n`;function JL(e){let t=e.filter(e=>e.startsWith(`--`)),n=e.filter(e=>!e.startsWith(`--`)),r=t.filter(e=>e!==KL);return r.length>0?{kind:`usage`,message:`check: unknown option ${r.join(` `)}\n${qL}`}:n.length>1||n[0]===``?{kind:`usage`,message:`check: expected at most one non-empty path\n${qL}`}:{kind:`run`,target:n[0],render:t.includes(KL)}}async function YL(e){let n=JL(e),r=n.kind===`usage`?{stdout:``,stderr:n.message,code:2}:GL(await BL(n.target??IL(t.env)),n.render);t.stdout.write(r.stdout),t.stderr.write(r.stderr),t.exit(r.code)}const XL=`${HD}${VD}`;function ZL(e){return`${XL}⚠ cc-candybar: ${QL(e)}\n`}function QL(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: ${BD(e.message,60)}`;case`render_failed`:return`render failed: ${BD(e.message,60)}`;case`malformed_response`:return`malformed daemon response: ${BD(e.message,60)}`}}function $L(e){switch(e.kind){case`ok`:return{output:e.value,kick:!1,debug:null};case`transient`:return{output:`
214
+ `,kick:!0,debug:`daemon unavailable (transient: ${e.cause}: ${e.message}) — kicking daemon`};case`permanent`:return{output:ZL(e),kick:!1,debug:`daemon refused request (permanent: ${e.cause}) — not kicking`}}}function eR(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 tR=` (fix: click the settings menu (${Gc} by default) › 🧰 tools ▸ 🩺 doctor, then [fix] on the bar)`;function nR({check:e,verdict:t}){return t.ok?`✓ ${e.label}\n`:`✗ ${e.label} — ${t.reason}${t.fix===void 0?``:tR}\n`}function rR(e,t,n){let r;try{r=AP(e,{tmux:Px(t),claudeConfigDir:kE(t,n)})}catch(e){return{stdout:``,stderr:`doctor: ${e instanceof Error?e.message:String(e)}\n`,code:2}}let i=Lx(r);return{stdout:i.map(nR).join(``),stderr:``,code:+!i.every(e=>e.verdict.ok)}}function iR(e){e.length>0&&(t.stderr.write(`doctor: takes no arguments
215
215
  Usage: cc-candybar doctor
216
- `),t.exit(2));let n=YL(vP(),t.env,t.cwd());t.stdout.write(n.stdout),t.stderr.write(n.stderr),t.exit(n.code)}function ZL(){return KL(t.env.COLUMNS,t.stderr.columns)}function QL(){return KL(t.env.LINES,t.stderr.rows)}const $L=[`SSH_CONNECTION`,`SSH_CLIENT`,`SSH_TTY`],eR=e=>e.some(e=>t.argv.includes(e));function tR(){return $L.some(e=>(t.env[e]??``)!==``)}function nR(){console.log(ax)}async function rR(){try{eR(rx.help)&&(nR(),t.exit(0)),eR(rx.version)&&(console.log(`cc-candybar ${EE}`),t.exit(0));let e=t.argv[2];if(e===`install`&&(await dD(t.argv.slice(3)),t.exit(0)),e===`install-url-handler`&&(oD(),t.exit(0)),e===`url-handle`){await cD(t.argv[3]);return}if(e===`daemon`){HI();return}if(e===`daemon-stats`&&(await uL(t.argv.slice(3)),t.exit(0)),e===`check`||e===`lint`){await VL(t.argv.slice(3));return}if(e===`schema`){EL();return}if(e===`doctor`){XL(t.argv.slice(3));return}KF(e)&&(await _L(e,t.argv.slice(3)),t.exit(0)),t.stdin.isTTY===!0&&(console.error(`Error: This tool requires input from Claude Code
216
+ `),t.exit(2));let n=rR(DP(),t.env,t.cwd());t.stdout.write(n.stdout),t.stderr.write(n.stderr),t.exit(n.code)}function aR(){return eR(t.env.COLUMNS,t.stderr.columns)}function oR(){return eR(t.env.LINES,t.stderr.rows)}const sR=[`SSH_CONNECTION`,`SSH_CLIENT`,`SSH_TTY`],cR=e=>e.some(e=>t.argv.includes(e));function lR(){return sR.some(e=>(t.env[e]??``)!==``)}function uR(){console.log(ax)}async function dR(){try{cR(rx.help)&&(uR(),t.exit(0)),cR(rx.version)&&(console.log(`cc-candybar ${OE}`),t.exit(0));let e=t.argv[2];if(e===`install`&&(await pD(t.argv.slice(3)),t.exit(0)),e===`install-url-handler`&&(cD(),t.exit(0)),e===`url-handle`){await uD(t.argv[3]);return}if(e===`daemon`){XI();return}if(e===`daemon-stats`&&(await vL(t.argv.slice(3)),t.exit(0)),e===`check`||e===`lint`){await YL(t.argv.slice(3));return}if(e===`schema`){PL();return}if(e===`doctor`){iR(t.argv.slice(3));return}eI(e)&&(await TL(e,t.argv.slice(3)),t.exit(0)),t.stdin.isTTY===!0&&(console.error(`Error: This tool requires input from Claude Code
217
217
 
218
218
  cc-candybar is designed to be used as a Claude Code statusLine command.
219
219
  It reads hook data from stdin and outputs formatted statusline.
@@ -229,4 +229,4 @@ Add to ~/.claude/settings.json:
229
229
  Run with --help for more options.
230
230
 
231
231
  To test output manually:
232
- 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)),O(`Working directory: ${t.cwd()}`),O(`Process args:`,t.argv);let r=await n(t.stdin);O(`Received hook data:`,JSON.stringify(r,null,2)),r||(console.error(`Error: No input data received from stdin`),nR(),t.exit(1));let i=GL(await cT(r,t.argv,t.cwd(),{termCols:ZL(),termRows:QL(),ssh:tR(),tmux:Px(t.env),configEnv:OL(t.env),claudeConfigDir:DE(t.env,t.cwd())}));i.debug!==null&&O(i.debug),i.kick&&jT(),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)}}rR();export{};
232
+ 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)),O(`Working directory: ${t.cwd()}`),O(`Process args:`,t.argv);let r=await n(t.stdin);O(`Received hook data:`,JSON.stringify(r,null,2)),r||(console.error(`Error: No input data received from stdin`),uR(),t.exit(1));let i=$L(await uT(r,t.argv,t.cwd(),{termCols:aR(),termRows:oR(),ssh:lR(),tmux:Px(t.env),configEnv:IL(t.env),claudeConfigDir:kE(t.env,t.cwd())}));i.debug!==null&&O(i.debug),i.kick&&NT(),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)}}dR();export{};