@promptctl/cc-candybar 1.83.1 → 1.83.2

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 +38 -38
  2. package/package.json +5 -5
package/dist/index.mjs CHANGED
@@ -35,23 +35,23 @@ import{createRequire as e}from"node:module";import t from"node:process";import{j
35
35
  `).join(`${n}${t}`)}function yo(e,t,n){let[r,...i]=e,a=i.length===0?t:`{\n ${vo(yo(i,t,n),` `,`
36
36
  `)}${n.trailingComma}\n}`;return`${n.key(r)}: ${a}`}function bo(e,t,n,r){return e.slice(0,t)+r+e.slice(n)}function xo(e,t){return e.lastIndexOf(`
37
37
  `,t-1)+1}function So(e){return/^[ \t]*$/.test(e)}function Co(e,t){let n=xo(e,t);return/^[ \t]*/.exec(e.slice(n))[0]}function wo(e,t){return So(e.slice(xo(e,t),t))}const To=/(?:\/\/[^\n]*?)?(\r\n|\n|$)/y;function Eo(e,t){let n=t;for(;n<e.length&&(e[n]===` `||e[n]===` `);)n++;let r=e[n]===`,`?n+1:-1;for(r!==-1&&(n=r);n<e.length&&(e[n]===` `||e[n]===` `);)n++;To.lastIndex=n;let i=To.exec(e);if(i===null)return{commaEnd:r,line:null};let a=n+i[0].length;return{commaEnd:r,line:{at:a-i[1].length,next:a}}}function Do(e,t){let{commaEnd:n,line:r}=Eo(e,t.end);if(wo(e,t.start)&&r!==null)return bo(e,xo(e,t.start),r.next,``);if(n!==-1){let r=n;for(;r<e.length&&e[r]===` `;)r++;return bo(e,t.start,r,``)}let i=t.start;for(;i>0&&(e[i-1]===` `||e[i-1]===` `);)i--;return e[i-1]===`,`?bo(e,i-1,t.end,``):bo(e,t.start,t.end,``)}function Oo(e,t,n,r,i){let a=n.commaEnd!==-1,o=a?e:bo(e,t.end,t.end,`,`),s=n.line.at+ +!a,c=_o(e);return bo(o,s,s,`${c}${i}${vo(r,i,c)}${a?`,`:``}`)}function ko(e,t,n,r){let i=t.kind===`object`?t.entries:t.elements,a=i[i.length-1],o=Co(e,t.span.start);if(a===void 0){let i=o+` `,a=_o(e);return bo(e,t.span.start+1,t.span.end-1,`${a}${i}${vo(n,i,a)}${r.trailingComma}${a}${o}`)}let{commaEnd:s,line:c}=Eo(e,a.span.end);if(wo(e,a.span.start)&&c!==null){let t=e.slice(xo(e,a.span.start),a.span.start);return Oo(e,a.span,{commaEnd:s,line:c},n,t)}let l=s===-1?a.span.end:s;return bo(e,l,l,`${s===-1?`, `:` `}${n}${s===-1?``:`,`}`)}function Ao(e,t,n,r){if(t.length===0)throw new to(`setValue needs a non-empty path`,0);if(/^\s*$/.test(e)){let i=_o(e);return`{${i} ${vo(yo(t,n,r),` `,i)}${r.trailingComma}${i}}${i}`}let i=so(e);for(let a=0;a<t.length;a++){if(i.kind!==`object`)throw new to(`cannot set ${t.join(`.`)}: ${t.slice(0,a).join(`.`)||`the document`} is not an object`,i.span.start);let o=co(i,t[a]);if(o===void 0)return ko(e,i,yo(t.slice(a),n,r),r);if(a===t.length-1){let t=Co(e,o.keySpan.start);return bo(e,o.value.span.start,o.value.span.end,vo(n,t,_o(e)))}i=o.value}throw new to(`unreachable: path exhausted`,0)}function jo(e,t){if(t.length===0)throw new to(`deleteValue needs a non-empty path`,0);if(/^\s*$/.test(e))return e;let n=t.slice(0,-1),r=lo(so(e),n),i=r===void 0?void 0:co(r,t[t.length-1]);if(i===void 0||r?.kind!==`object`)return e;let a=Do(e,i.span);return n.length>0&&r.entries.length===1?jo(a,n):a}const Mo=[`h`,`v`,`children`];function No(e){if(e.kind===`string`)return e.value;if(e.kind!==`object`)return;let t=co(e,`seg`)?.value;if(t?.kind===`string`)return t.value;let n=co(e,`kind`)?.value,r=co(e,`name`)?.value;return n?.kind===`string`&&n.value===`segment`&&r?.kind===`string`?r.value:void 0}function Po(e){return e.kind===`object`?Mo.map(t=>co(e,t)?.value).filter(e=>e?.kind===`array`):[]}function Fo(e){let t=co(e,`rows`)?.value;return t?.kind===`object`?t.entries:null}function Io(e){if(e.kind!==`object`)return!0;let t=Fo(e);return t===null||t.length>0||e.entries.some(e=>e.key!==`rows`)}function*Lo(e,t){yield{node:e,bareAt:t};for(let t of Po(e))for(let e of t.elements)yield*Lo(e,null);for(let n of Fo(e)??[])yield*Lo(n.value,t===null?null:[...t,`rows`,n.key])}function Ro(e,t){for(let{node:n}of Lo(e,null))if(No(n)===t)return!0;return!1}function zo(e,t,n){let r=lo(so(e),t);if(r===void 0)return null;for(let{node:i,bareAt:a}of Lo(r,t))if(No(i)===n)return a===null?{text:e,ref:i}:zo(Ao(e,a,`{ h: [${uo(e,i)}] }`,mo),t,n);return null}function Bo(e,t,n){let r=zo(e,t,n);return r===null?null:Do(r.text,r.ref.span)}function Vo(e,t,n,r,i){let a=zo(e,t,r);if(a===null)return null;let{text:o,ref:s}=a,c=JSON.stringify(n),{commaEnd:l,line:u}=Eo(o,s.span.end);if(wo(o,s.span.start)&&u!==null){let e=o.slice(xo(o,s.span.start),s.span.start);return i===`after`?Oo(o,s.span,{commaEnd:l,line:u},c,e):bo(o,s.span.start,s.span.start,`${c},${_o(o)}${e}`)}let d=uo(o,s),f=i===`before`?`${c}, ${d}`:`${d}, ${c}`;return bo(o,s.span.start,s.span.end,f)}var Ho=class extends Error{file;issues;warnings;constructor(e,t,n=[]){super(Ko(e,t)),this.name=`ConfigError`,this.file=e,this.issues=t,this.warnings=n}};function W(e,t){let n=0,r;for(let i of t){if(i===``||/^\d+$/.test(i))continue;let t=Uo(e,n,i);if(t===-1)return r===void 0?void 0:Wo(e,r);n=t,r=t}return r===void 0?void 0:Wo(e,r)}function Uo(e,t,n){let r=n.replace(/[\\^$.*+?()[\]{}|]/g,`\\$&`),i=RegExp(`(?:["']${r}["']|\\b${r}\\b)\\s*:`,`g`);i.lastIndex=t;let a=i.exec(e);return a?a.index:-1}function Wo(e,t){let n=1;for(let r=0;r<t&&r<e.length;r++)e.charCodeAt(r)===10&&n++;return n}function Go(e,t){try{return so(t),null}catch(n){if(!(n instanceof to))throw n;return`${e}:${Wo(t,n.offset)}: ${n.reason} — the settings menu cannot edit this file until it is fixed`}}function Ko(e,t){if(t.length===0)return`${e}: invalid config (no details)`;let n=[`Invalid config in ${e} (${t.length} issue${t.length===1?``:`s`}):`];for(let e of t){let t=[];e.line!==void 0&&t.push(`line ${e.line}${e.col===void 0?``:`:${e.col}`}`),e.path&&t.push(e.path);let r=t.length>0?`[${t.join(` • `)}] `:``;n.push(` ${r}${e.message}`)}return n.join(`
38
- `)}const qo=[`vertical`,`horizontal`],Jo={vertical:`row`,horizontal:`cell`};function Yo(e,t){return e.opens===void 0?e:{...e,opens:{...e.opens,body:t(e.opens.body)}}}function*Xo(e){yield e;for(let t of es(e))yield*Xo(t)}const Zo=(e,t)=>`${e}.children[${t}]`,Qo=e=>`${e}.opens.body`;function*$o(e,t){if(yield[e,t],e.kind===`container`)for(let[n,r]of e.children.entries())yield*$o(r,Zo(t,n));else e.opens!==void 0&&(yield*$o(e.opens.body,Qo(t)))}function es(e){return e.kind===`container`?e.children:e.opens===void 0?[]:[e.opens.body]}function ts(e){return e===void 0||`text`in e?`text`:`regex`in e?`regex`:`json`}const ns=[`ttl`,`watch_file`,`depends_on`,`key`,`never`];function rs(e){return e.kind!==`literal`&&e.kind!==`input`&&e.kind!==`env`&&e.kind!==`state`}const is=[`branch`,`sha`,`dirty`,`ahead`,`behind`,`stash`],as=[`file`,`shell`,`git`],os=[`left`,`center`,`right`],ss=[`right`,`left`,`middle`];function cs(e,t,n,r){let i=n[r];return typeof i==`string`?i:(e.issues.push({path:`${t}.${r}`,message:`${t}.${r} must be a string, got ${ms(i)}`,line:W(e.source,[...t.split(`.`),r])}),null)}function ls(e,t,n,r){let i=n.default;if(i!==void 0){if(!(r===`string`&&typeof i==`string`||r===`number`&&typeof i==`number`||r===`boolean`&&typeof i==`boolean`)){e.issues.push({path:`${t}.default`,message:`default must be a ${r}, got ${ms(i)}`,line:W(e.source,[...t.split(`.`),`default`])});return}return i}}function us(e,t,n,r){let i=n[r];if(i!==void 0){if(typeof i!=`string`){e.issues.push({path:`${t}.${r}`,message:`${t}.${r} must be a string, got ${ms(i)}`,line:W(e.source,[...t.split(`.`),r])});return}return i}}function ds(e,t,n){let r=us(e,t,n,`palette`);if(r!==void 0){if(!e.allowedPalettes.has(r)){e.issues.push({path:`${t}.palette`,message:`Unknown palette "${r}". Expected one of: ${[...e.allowedPalettes].sort().join(`, `)}`,line:W(e.source,[...t.split(`.`),`palette`])});return}return r}}function fs(e,t,n,r,i){let a=n[r];if(a!==void 0){if(typeof a!=`string`||!i.includes(a)){e.issues.push({path:`${t}.${r}`,message:`${t}.${r} must be one of: ${i.join(`, `)}; got ${G(a)}`,line:W(e.source,[...t.split(`.`),r])});return}return a}}function ps(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function ms(e){return e===null?`null`:Array.isArray(e)?`array`:typeof e}function G(e){return typeof e==`string`?JSON.stringify(e):e===void 0?`undefined`:String(e)}function hs(e,t,n,r){return ps(r)?(vs(e,n,r,t.noun,new Set(Object.keys(t.fields))),gs(e,t.fields,n,r)):(e.issues.push({path:n,message:`${n} must be an object, got ${ms(r)}`,line:W(e.source,n.split(`.`))}),null)}function gs(e,t,n,r){let i=t,a={},o=!0;for(let[t,s]of Object.entries(i)){let i=s.parse(e,n,t,r);i===void 0?s.required&&(o=!1):a[t]=i}return o?a:null}const _s=new Set;function vs(e,t,n,r,i,a=_s){for(let o of Object.keys(n))!i.has(o)&&!a.has(`${t}.${o}`)&&e.issues.push({path:`${t}.${o}`,message:`Unknown ${r} "${o}". Expected one of: ${[...i].join(`, `)}`,line:W(e.source,[...t.split(`.`),o])})}function ys(e,t,n){return e.issues.push({path:t,message:n,line:W(e.source,t.split(`.`))}),null}function bs(e,t,n,r){if(!ps(r))return e.issues.push({path:n,message:`${t.noun} must be an object, got ${ms(r)}`,line:W(e.source,n.split(`.`))}),null;let i=t.arms,a=Object.keys(i),o=Object.keys(r).filter(e=>e in i),s=Object.keys(r).filter(e=>!(e in i));for(let r of s)e.issues.push({path:`${n}.${r}`,message:`Unknown ${t.noun} key "${r}". Expected exactly one of: ${a.join(`, `)}`,line:W(e.source,[...n.split(`.`),r])});if(o.length===0)return e.issues.push({path:n,message:`${t.noun} must declare exactly one of: ${a.join(`, `)}`,line:W(e.source,n.split(`.`))}),null;if(o.length>1)return e.issues.push({path:n,message:`${t.noun} must declare exactly one of: ${a.join(`, `)} (found: ${o.join(`, `)})`,line:W(e.source,n.split(`.`))}),null;let c=o[0];return i[c].parse(e,`${n}.${c}`,r[c])}function xs(e,t,n,r){if(!ps(r))return e.issues.push({path:n,message:`${n} must be an object, got ${ms(r)}`,line:W(e.source,n.split(`.`))}),null;let i=r[t.tag];if(typeof i!=`string`)return e.issues.push({path:`${n}.${t.tag}`,message:`${n}.${t.tag} must be a string, got ${ms(i)}`,line:W(e.source,n.split(`.`))}),null;let a=t.arms;if(!(i in a))return e.issues.push({path:`${n}.${t.tag}`,message:`Unknown ${t.noun} "${i}". Expected one of: ${Object.keys(a).join(`, `)}`,line:W(e.source,[...n.split(`.`),t.tag])}),null;let o=a[i],s=e.issues.length,c=o.parse(e,n,r),l=new Set(e.issues.slice(s).map(e=>e.path));return vs(e,n,r,`${i} ${t.memberNoun} key`,o.keys,l),c}function Ss(e,t,n){return{json:Ns(js(n),e,t),keys:new Set([e,...Object.keys(n)])}}function Cs(e){return(...t)=>e()(...t)}function ws(e,...t){return(n,r,i)=>{let a=e(n,r,i);if(a===null)return null;for(let e of t){if(e.ok(a))continue;let{field:t,message:i}=e.issue(a),o=t===``?r:`${r}.${t}`;return n.issues.push({path:o,message:i,line:W(n.source,o.split(`.`))}),null}return a}}function K(){return{required:!1,json:{type:`string`},parse:(e,t,n,r)=>us(e,t,r,n)}}function Ts(){return{required:!1,json:{type:`boolean`},parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0){if(typeof i!=`boolean`){e.issues.push({path:`${t}.${n}`,message:`${n} must be a boolean, got ${ms(i)}`,line:W(e.source,[n])});return}return i}}}}function Es(e){let{min:t,max:n}=e;return{required:!1,json:{type:`integer`,minimum:t,maximum:n},parse:(e,r,i,a)=>{let o=a[i];if(o!==void 0){if(typeof o!=`number`||!Number.isInteger(o)||o<t||o>n){e.issues.push({path:`${r}.${i}`,message:`${i} must be an integer between ${t} and ${n}, got ${G(o)}`,line:W(e.source,[i])});return}return o}}}}function Ds(e={}){let{min:t}=e;return{required:!1,json:{type:`number`,...t!==void 0&&{minimum:t}},parse:(e,n,r,i)=>{let a=i[r];if(a!==void 0){if(typeof a!=`number`||!Number.isFinite(a)||t!==void 0&&a<t){let i=t===void 0?`a finite number`:`a finite number >= ${t}`;e.issues.push({path:`${n}.${r}`,message:`${r} must be ${i}, got ${G(a)}`,line:W(e.source,[r])});return}return a}}}}function Os(){return{required:!1,json:{type:`string`},parse:(e,t,n,r)=>ds(e,t,r)}}function ks(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>cs(e,t,r,n)??void 0}}function As(e){return{required:!1,json:{enum:[...e]},parse:(t,n,r,i)=>fs(t,n,i,r,e)}}function js(e,t={closed:!0}){let n=e,r={},i=[];for(let[e,t]of Object.entries(n))r[e]=t.json,t.required&&i.push(e);return{type:`object`,properties:r,...i.length>0&&{required:i},...t.closed&&{additionalProperties:!1}}}function Ms(e){return js(e.fields)}function Ns(e,t,n){let r=e,i={[t]:{const:n},...r.properties},a=[t,...r.required??[]];return{...r,properties:i,required:a}}function Ps(e){let t=e.arms;return{anyOf:Object.values(t).map(e=>e.json)}}function Fs(e){let t=e.arms;return{anyOf:Object.entries(t).map(([e,t])=>({type:`object`,properties:{[e]:t.json},required:[e],additionalProperties:!1}))}}const Is=/^[A-Za-z_][A-Za-z0-9_]*$/;function Ls(e){return`#${e+1}`}const Rs={rows:{}};function zs(e){return`rows`in e}function Bs(e){return Object.fromEntries(e.map((e,t)=>[Ls(t),e]))}function Vs(e){if(e.kind===`container`&&e.direction===`vertical`){let{kind:t,direction:n,children:r,...i}=e;return{...i,rows:Bs(r)}}let{when:t,...n}=e;return{...t!==void 0&&{when:t},rows:Bs([n])}}function Hs(e){let{rows:t,...n}=e;return{kind:`container`,direction:`vertical`,children:Object.values(t),...n}}function Us(e){return zs(e)?Hs(e):e}function Ws(e,t){return zs(e)?{...t,...e,rows:{...t.rows,...e.rows}}:Vs(e)}function Gs(e){if(!zs(e))return!0;let{rows:t,...n}=e;return Object.values(n).some(e=>e!==void 0)||Object.keys(t).length>0}function Ks(e,t){return{globals:{...t.globals,...e.globals??{}},variables:{...t.variables,...e.variables??{}},segments:qs(t.segments,e.segments??{}),root:Ws(e.root??Rs,t.root),actions:{...t.actions,...e.actions??{}},looks:{...t.looks,...e.looks??{}},presets:qs(t.presets,e.presets??{}),editGlobals:{...t.editGlobals,...e.editGlobals??{}},helpers:{...t.helpers,...e.helpers??{}}}}function qs(e,t){return{...e,...Object.fromEntries(Object.entries(t).map(([t,n])=>[t,{...e[t],...n}]))}}const Js=`closed`,Ys=`🍫`;function Xs(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 Zs(e,t,n,r){let i=Xs(e,t.length,n);if(i!==void 0)throw Error(i);return t.length===1?t[0]:t[r]}function Qs(e){return e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}function $s(e,t,n,r,i){return{kind:`segment`,name:e,opens:{ref:t,body:n,placement:r},...i!==void 0&&{when:i}}}function ec(e,...t){return`{{ and ${[e,...t].map(tc).join(` `)} }}`}function tc(e){return`(eq .${e.variable} "${Qs(e.member)}")`}function nc(e,t,n){return`{{ action "${e}" "${Qs(t)}" "${Qs(n)}" }}`}function rc(e,t){return{kind:`state`,key:e,default:t}}function ic(e,t){return{set:e,cycle:[Js,t]}}const ac={required:!1,json:{enum:[...za]},parse:(e,t,n,r)=>{if(r[n]===`auto`){e.issues.push({path:`${t}.${n}`,message:`${t}.${n}: "auto" is not supported — the render daemon runs detached, so terminal detection would read the daemon's environment, not your terminal's. Pick an explicit depth: ${za.join(`, `)}`,line:W(e.source,[...t.split(`.`),n])});return}return fs(e,t,r,n,za)}},oc={required:!1,json:{type:`string`},parse:(e,t,n,r)=>{let i=us(e,t,r,n);return Ta(i)?i:ds(e,t,r)}},sc=/^[^\r\n]*\S[^\r\n]*$/u,cc=RegExp(`^(?:❌|✕)[\\uFE0E\\uFE0F]?$`,`u`),lc={required:!1,json:{type:`string`,pattern:sc.source,not:{pattern:cc.source}},parse:(e,t,n,r)=>{let i=us(e,t,r,n);if(i===void 0||sc.test(i)&&!cc.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])})}},uc={default_bg:K(),default_fg:K(),default_empty_value:K(),default_separator:K(),default_truncate_marker:K(),palette:oc,look:K(),preset:K(),style:As(Ma),progression:As(Wa),autoWrap:Ts(),padding:Es(Xa),charset:As(Fa),updateNotice:Ts(),colorCompatibility:ac,menuGlyph:lc},dc={noun:`globals key`,fields:uc};function fc(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 pc(e){return fc(`${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 mc(e){return fc(`${e} cannot change the settings menu glyph`,t=>`${t}: ${e} cannot change the settings menu glyph — one menu is shared by every preset. Set it in the top-level globals.menuGlyph instead.`)}const hc={noun:`preset globals key`,fields:{...uc,preset:pc(`a preset`),menuGlyph:mc(`a preset`)}},gc={noun:`editGlobals key`,fields:{...uc,preset:pc(`the editGlobals fragment`),menuGlyph:mc(`the editGlobals fragment`)}};function _c(e,t,n){return n===void 0?{}:hs(e,dc,t,n)??{}}function vc(e,t,n){return hs(e,hc,t,n)??{}}function yc(){return Ms(hc)}function bc(e,t,n){return hs(e,gc,t,n)??{}}const xc=new Set(Object.keys(dc.fields));function Sc(e){return xc.has(e)}function Cc(){return[...xc]}const wc={padding:1};function Tc(e){let t=new Map;for(let[n,r]of Object.entries(wc)){let i=e[n];t.set(n,typeof i==`number`?i:r)}return t}function Ec(e,t,n,r){return n.cache===void 0?(as.includes(r)&&e.issues.push({path:`${t}.cache`,message:`${r} variables must declare a cache policy (one of: ${ns.join(`, `)})`,line:W(e.source,t.split(`.`))}),null):jc(e,`${t}.cache`,n.cache)}function Dc(e,t,n){if(n.cache!==void 0)return jc(e,`${t}.cache`,n.cache)??void 0}function Oc(e){return{required:!0,json:Pc(),parse:(t,n,r,i)=>Ec(t,n,i,e)??void 0}}function kc(){return{required:!1,json:Pc(),parse:(e,t,n,r)=>Dc(e,t,r)}}const Ac={noun:`cache`,arms:{ttl:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`&&Ic(n)?{ttl:n}:ys(e,t,`cache.ttl must be a duration string like "5s", "100ms", "2m", "1h"; got ${G(n)}`)},watch_file:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`&&n!==``?{watch_file:n}:ys(e,t,`cache.watch_file must be a non-empty path string, got ${G(n)}`)},depends_on:{json:{type:`array`,items:{type:`string`}},parse:(e,t,n)=>Array.isArray(n)&&n.every(e=>typeof e==`string`)?{depends_on:n}:ys(e,t,`cache.depends_on must be an array of variable-name strings, got ${G(n)}`)},key:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`&&n!==``?{key:n}:ys(e,t,`cache.key must be a non-empty template string, got ${G(n)}`)},never:{json:{const:!0},parse:(e,t,n)=>n===!0?{never:!0}:ys(e,t,`cache.never must be the literal boolean true, got ${G(n)}`)}}};function jc(e,t,n){return bs(e,Ac,t,n)}const Mc={noun:`time-variable cache`,arms:{ttl:Ac.arms.ttl}};function Nc(){return{required:!1,json:Fs(Mc),parse:(e,t,n,r)=>r.cache===void 0?void 0:bs(e,Mc,`${t}.cache`,r.cache)??void 0}}function Pc(){return Fs(Ac)}const Fc=/^(\d+(?:\.\d+)?)(ms|s|m|h)$/;function Ic(e){return Fc.test(e)}function Lc(e,t,n){if(n===void 0)return{};if(!ps(n))return e.issues.push({path:t,message:`${t} must be an object, got ${ms(n)}`,line:W(e.source,t.split(`.`))}),{};let r={};for(let[i,a]of Object.entries(n)){let n=xs(e,al,`${t}.${i}`,a);n!==null&&(r[i]=n)}return r}function Rc(){return{required:!0,json:{type:[`string`,`number`,`boolean`]},parse:(e,t,n,r)=>{let i=r.value;if(typeof i!=`string`&&typeof i!=`number`&&typeof i!=`boolean`){e.issues.push({path:`${t}.value`,message:`literal value must be string|number|boolean, got ${ms(i)}`,line:W(e.source,t.split(`.`))});return}return i}}}function zc(){return{required:!0,json:{enum:[...is]},parse:(e,t,n,r)=>{let i=r.field;if(typeof i!=`string`||!is.includes(i)){e.issues.push({path:`${t}.field`,message:`git field must be one of: ${is.join(`, `)}, got ${JSON.stringify(i)}`,line:W(e.source,[...t.split(`.`),`field`])});return}return i}}}function Bc(){return{required:!1,json:{type:[`string`,`number`,`boolean`]},parse:(e,t,n,r)=>{let i=r.type;return ls(e,t,r,i===`number`||i===`boolean`||i===`string`?i:`string`)}}}const Vc={noun:`parse`,arms:{text:{json:{const:!0},parse:(e,t,n)=>n===!0?{text:!0}:ys(e,t,`parse.text must be the literal boolean true, got ${G(n)}`)},regex:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`?Hc(e,t,n):ys(e,t,`parse.regex must be a pattern string, got ${G(n)}`)},json:{json:{const:!0},parse:(e,t,n)=>n===!0?{json:!0}:ys(e,t,`parse.json must be the literal boolean true, got ${G(n)}`)}}};function Hc(e,t,n){let r;try{new RegExp(n),r=RegExp(`${n}|`).exec(``).length-1}catch(n){return ys(e,t,`parse.regex is not a valid regular expression: ${n.message}`)}return r>=1?{regex:n}:ys(e,t,`parse.regex must contain a capture group — its group 1 is the value; got ${JSON.stringify(n)}`)}function Uc(){return{required:!1,json:Fs(Vc),parse:(e,t,n,r)=>(r.regex!==void 0&&e.issues.push({path:`${t}.regex`,message:`${t}.regex was retired; the regex is the parse step's regex arm now: parse: { regex: ${JSON.stringify(r.regex)} }`,line:W(e.source,[...t.split(`.`),`regex`])}),r.parse===void 0?void 0:bs(e,Vc,`${t}.parse`,r.parse)??void 0)}}function Wc(){return{required:!1,json:{type:[`string`,`number`,`boolean`,`array`,`object`],description:`The value published when the source fails: a string under the text/regex parse arms, any non-null JSON value under the json arm`},parse:(e,t,n,r)=>ps(r.parse)&&`json`in r.parse?Gc(e,t,r.default):us(e,t,r,`default`)}}function Gc(e,t,n){if(n!==void 0)return Kc(n)?n:ys(e,`${t}.default`,`${t}.default must be a JSON value (a json-parsed source's document), got ${G(n)}`)??void 0}function Kc(e){return e!==null&&qc(e)}function qc(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(qc);let t=Object.getPrototypeOf(e);return(t===Object.prototype||t===null)&&Object.values(e).every(qc)}default:return!1}}const Jc={value:Rc(),default:K()},Yc={path:ks(),type:As([`string`,`number`,`boolean`]),default:Bc()},Xc={name:ks(),default:K()},Zc={path:ks(),readMode:As([`whole`,`first-line`]),parse:Uc(),cache:Oc(`file`),default:Wc()},Qc={command:ks(),parse:Uc(),cache:Oc(`shell`),default:Wc()},$c={template:ks(),cache:kc(),default:K()},el={layout:ks(),cache:Nc(),default:K()},tl={field:zc(),cache:Oc(`git`),default:K()},nl={key:ks(),default:K()},rl=`kind`;function il(e,t){return{...Ss(rl,e,t),parse:(n,r,i)=>{let a=gs(n,t,r,i);return a===null?null:{kind:e,...a}}}}const al={tag:rl,noun:`source kind`,memberNoun:`variable`,arms:{literal:il(`literal`,Jc),input:il(`input`,Yc),env:il(`env`,Xc),file:il(`file`,Zc),shell:il(`shell`,Qc),template:il(`template`,$c),time:il(`time`,el),git:il(`git`,tl),state:il(`state`,nl)}};function ol(){return Ps(al)}function sl(){return{type:`object`,additionalProperties:ol()}}function cl(e){return e.replace(/[^A-Za-z0-9]+/g,`_`)}const ll=`groups.`,ul=`menus.`,dl=`edit.`,fl=`settings.`,pl=[ll,ul,dl,fl];function ml(e){return pl.some(t=>e.startsWith(t))}function hl(e){let t=cl(e);return pl.find(e=>t.startsWith(cl(e)))}function gl(e,t,n,r){for(let i of[`variables`,`actions`,`segments`])for(let a of Object.keys(t[i]??{}))a.startsWith(n)&&e.issues.push({path:`${i}.${a}`,message:`"${a}" is in the reserved "${n}" namespace (synthesized by ${r}) — rename it`,line:W(e.source,[`root`])})}function _l(e){return new Set(Object.keys(e.segments).filter(e=>!ml(e)))}function vl(e,t,n){if(t===void 0)return{};if(!ps(t))return e.issues.push({path:`segments`,message:`segments must be an object, got ${ms(t)}`,line:W(e.source,[`segments`])}),{};let r={};for(let[i,a]of Object.entries(t)){let t=hs(e,n.has(i)?wl:Cl,`segments.${i}`,a);t!==null&&(r[i]=t)}return r}function yl(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>r[n]===void 0?ys(e,`${t}.${n}`,`${t} declares no template — only a segment the bundled default declares may omit it (inheriting the bundled template); a segment of your own needs its own`)??void 0:cs(e,t,r,n)??void 0}}function bl(){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 xl(){return{required:!1,json:sl(),parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0)return Lc(e,`${t}.${n}`,i)}}}const Sl={template:yl(),description:K(),width:bl(),justify:As(os),truncate:As(ss),bg:K(),fg:K(),when:K(),palette:Os(),vars:xl()},Cl={noun:`segment key`,fields:Sl},wl={noun:`segment key`,fields:{...Sl,template:K()}},Tl=`#/definitions/LayoutNode`,El={kind:`container`,direction:`vertical`,children:[]};function Dl(e){return{required:!0,json:{const:e},parse:()=>e}}function Ol(){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 kl(){return{required:!0,json:{enum:[...qo]},parse:(e,t,n,r)=>{let i=r[n];return typeof i==`string`&&qo.includes(i)?i:(e.issues.push({path:`${t}.${n}`,message:`a container "direction" must be one of: ${qo.join(`, `)} (got ${JSON.stringify(i)})`,line:W(e.source,[`root`])}),`vertical`)}}}function Al(e){return{required:!0,json:{type:`array`,items:{$ref:Tl}},parse:(t,n,r,i)=>{let a=i[r];return Array.isArray(a)?a.map((i,a)=>e(t,`${n}.${r}[${a}]`,i)):(t.issues.push({path:`${n}.${r}`,message:`a container must have a "children" array of layout nodes, got ${ms(a)}`,line:W(t.source,[`root`])}),[])}}}const jl={noun:`layout-node key`,fields:{kind:Dl(`segment`),name:Ol(),when:K()}},Ml=()=>As(Pi),Nl={noun:`layout-node key`,fields:{kind:Dl(`container`),direction:kl(),children:Al(Cs(()=>Rl)),when:K(),distribution:Ml()}};function Pl(){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 Fl={noun:`layout-node key`,fields:{seg:Pl(),when:K()}},Il={noun:`layout-node key`,fields:{h:Al(Cs(()=>Rl)),when:K(),distribution:Ml()}},Ll={noun:`layout-node key`,fields:{v:Al(Cs(()=>Rl)),when:K(),distribution:Ml()}},Rl=(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`])}),El):{kind:`segment`,name:n};if(!ps(n))return e.issues.push({path:t,message:`a layout node must be a string (segment name) or an object with "kind" / "seg" / "h" / "v", got ${ms(n)}`,line:W(e.source,[`root`])}),El;if(n.kind===`container`)return hs(e,Nl,t,n)??El;if(n.kind===`segment`)return hs(e,jl,t,n)??El;if(n.kind===`cells`)return e.issues.push({path:t,message:`kind: "cells" is no longer supported — use the h-arm spelling instead:
38
+ `)}const qo=[`vertical`,`horizontal`],Jo={vertical:`row`,horizontal:`cell`};function Yo(e,t){return e.opens===void 0?e:{...e,opens:{...e.opens,body:t(e.opens.body)}}}function*Xo(e){yield e;for(let t of es(e))yield*Xo(t)}const Zo=(e,t)=>`${e}.children[${t}]`,Qo=e=>`${e}.opens.body`;function*$o(e,t){if(yield[e,t],e.kind===`container`)for(let[n,r]of e.children.entries())yield*$o(r,Zo(t,n));else e.opens!==void 0&&(yield*$o(e.opens.body,Qo(t)))}function es(e){return e.kind===`container`?e.children:e.opens===void 0?[]:[e.opens.body]}function ts(e){return e===void 0||`text`in e?`text`:`regex`in e?`regex`:`json`}const ns=[`ttl`,`watch_file`,`depends_on`,`key`,`never`];function rs(e){return e.kind!==`literal`&&e.kind!==`input`&&e.kind!==`env`&&e.kind!==`state`}const is=[`branch`,`sha`,`dirty`,`ahead`,`behind`,`stash`],as=[`file`,`shell`,`git`],os=[`left`,`center`,`right`],ss=[`right`,`left`,`middle`];function cs(e,t,n,r){let i=n[r];return typeof i==`string`?i:(e.issues.push({path:`${t}.${r}`,message:`${t}.${r} must be a string, got ${ms(i)}`,line:W(e.source,[...t.split(`.`),r])}),null)}function ls(e,t,n,r){let i=n.default;if(i!==void 0){if(!(r===`string`&&typeof i==`string`||r===`number`&&typeof i==`number`||r===`boolean`&&typeof i==`boolean`)){e.issues.push({path:`${t}.default`,message:`default must be a ${r}, got ${ms(i)}`,line:W(e.source,[...t.split(`.`),`default`])});return}return i}}function us(e,t,n,r){let i=n[r];if(i!==void 0){if(typeof i!=`string`){e.issues.push({path:`${t}.${r}`,message:`${t}.${r} must be a string, got ${ms(i)}`,line:W(e.source,[...t.split(`.`),r])});return}return i}}function ds(e,t,n){let r=us(e,t,n,`palette`);if(r!==void 0){if(!e.allowedPalettes.has(r)){e.issues.push({path:`${t}.palette`,message:`Unknown palette "${r}". Expected one of: ${[...e.allowedPalettes].sort().join(`, `)}`,line:W(e.source,[...t.split(`.`),`palette`])});return}return r}}function fs(e,t,n,r,i){let a=n[r];if(a!==void 0){if(typeof a!=`string`||!i.includes(a)){e.issues.push({path:`${t}.${r}`,message:`${t}.${r} must be one of: ${i.join(`, `)}; got ${G(a)}`,line:W(e.source,[...t.split(`.`),r])});return}return a}}function ps(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function ms(e){return e===null?`null`:Array.isArray(e)?`array`:typeof e}function G(e){return typeof e==`string`?JSON.stringify(e):e===void 0?`undefined`:String(e)}function hs(e,t,n,r){return ps(r)?(vs(e,n,r,t.noun,new Set(Object.keys(t.fields))),gs(e,t.fields,n,r)):(e.issues.push({path:n,message:`${n} must be an object, got ${ms(r)}`,line:W(e.source,n.split(`.`))}),null)}function gs(e,t,n,r){let i=t,a={},o=!0;for(let[t,s]of Object.entries(i)){let i=s.parse(e,n,t,r);i===void 0?s.required&&(o=!1):a[t]=i}return o?a:null}const _s=new Set;function vs(e,t,n,r,i,a=_s){for(let o of Object.keys(n))!i.has(o)&&!a.has(`${t}.${o}`)&&e.issues.push({path:`${t}.${o}`,message:`Unknown ${r} "${o}". Expected one of: ${[...i].join(`, `)}`,line:W(e.source,[...t.split(`.`),o])})}function ys(e,t,n){return e.issues.push({path:t,message:n,line:W(e.source,t.split(`.`))}),null}function bs(e,t,n,r){if(!ps(r))return e.issues.push({path:n,message:`${t.noun} must be an object, got ${ms(r)}`,line:W(e.source,n.split(`.`))}),null;let i=t.arms,a=Object.keys(i),o=Object.keys(r).filter(e=>e in i),s=Object.keys(r).filter(e=>!(e in i));for(let r of s)e.issues.push({path:`${n}.${r}`,message:`Unknown ${t.noun} key "${r}". Expected exactly one of: ${a.join(`, `)}`,line:W(e.source,[...n.split(`.`),r])});if(o.length===0)return e.issues.push({path:n,message:`${t.noun} must declare exactly one of: ${a.join(`, `)}`,line:W(e.source,n.split(`.`))}),null;if(o.length>1)return e.issues.push({path:n,message:`${t.noun} must declare exactly one of: ${a.join(`, `)} (found: ${o.join(`, `)})`,line:W(e.source,n.split(`.`))}),null;let c=o[0];return i[c].parse(e,`${n}.${c}`,r[c])}function xs(e,t,n,r){if(!ps(r))return e.issues.push({path:n,message:`${n} must be an object, got ${ms(r)}`,line:W(e.source,n.split(`.`))}),null;let i=r[t.tag];if(typeof i!=`string`)return e.issues.push({path:`${n}.${t.tag}`,message:`${n}.${t.tag} must be a string, got ${ms(i)}`,line:W(e.source,n.split(`.`))}),null;let a=t.arms;if(!(i in a))return e.issues.push({path:`${n}.${t.tag}`,message:`Unknown ${t.noun} "${i}". Expected one of: ${Object.keys(a).join(`, `)}`,line:W(e.source,[...n.split(`.`),t.tag])}),null;let o=a[i],s=e.issues.length,c=o.parse(e,n,r),l=new Set(e.issues.slice(s).map(e=>e.path));return vs(e,n,r,`${i} ${t.memberNoun} key`,o.keys,l),c}function Ss(e,t,n){return{json:Ns(js(n),e,t),keys:new Set([e,...Object.keys(n)])}}function Cs(e){return(...t)=>e()(...t)}function ws(e,...t){return(n,r,i)=>{let a=e(n,r,i);if(a===null)return null;for(let e of t){if(e.ok(a))continue;let{field:t,message:i}=e.issue(a),o=t===``?r:`${r}.${t}`;return n.issues.push({path:o,message:i,line:W(n.source,o.split(`.`))}),null}return a}}function K(){return{required:!1,json:{type:`string`},parse:(e,t,n,r)=>us(e,t,r,n)}}function Ts(){return{required:!1,json:{type:`boolean`},parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0){if(typeof i!=`boolean`){e.issues.push({path:`${t}.${n}`,message:`${n} must be a boolean, got ${ms(i)}`,line:W(e.source,[n])});return}return i}}}}function Es(e){let{min:t,max:n}=e;return{required:!1,json:{type:`integer`,minimum:t,maximum:n},parse:(e,r,i,a)=>{let o=a[i];if(o!==void 0){if(typeof o!=`number`||!Number.isInteger(o)||o<t||o>n){e.issues.push({path:`${r}.${i}`,message:`${i} must be an integer between ${t} and ${n}, got ${G(o)}`,line:W(e.source,[i])});return}return o}}}}function Ds(e={}){let{min:t}=e;return{required:!1,json:{type:`number`,...t!==void 0&&{minimum:t}},parse:(e,n,r,i)=>{let a=i[r];if(a!==void 0){if(typeof a!=`number`||!Number.isFinite(a)||t!==void 0&&a<t){let i=t===void 0?`a finite number`:`a finite number >= ${t}`;e.issues.push({path:`${n}.${r}`,message:`${r} must be ${i}, got ${G(a)}`,line:W(e.source,[r])});return}return a}}}}function Os(){return{required:!1,json:{type:`string`},parse:(e,t,n,r)=>ds(e,t,r)}}function ks(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>cs(e,t,r,n)??void 0}}function As(e){return{required:!1,json:{enum:[...e]},parse:(t,n,r,i)=>fs(t,n,i,r,e)}}function js(e,t={closed:!0}){let n=e,r={},i=[];for(let[e,t]of Object.entries(n))r[e]=t.json,t.required&&i.push(e);return{type:`object`,properties:r,...i.length>0&&{required:i},...t.closed&&{additionalProperties:!1}}}function Ms(e){return js(e.fields)}function Ns(e,t,n){let r=e,i={[t]:{const:n},...r.properties},a=[t,...r.required??[]];return{...r,properties:i,required:a}}function Ps(e){let t=e.arms;return{anyOf:Object.values(t).map(e=>e.json)}}function Fs(e){let t=e.arms;return{anyOf:Object.entries(t).map(([e,t])=>({type:`object`,properties:{[e]:t.json},required:[e],additionalProperties:!1}))}}const Is=/^[A-Za-z_][A-Za-z0-9_]*$/;function Ls(e){return`#${e+1}`}const Rs={rows:{}};function zs(e){return`rows`in e}function Bs(e){return Object.fromEntries(e.map((e,t)=>[Ls(t),e]))}function Vs(e){if(e.kind===`container`&&e.direction===`vertical`){let{kind:t,direction:n,children:r,...i}=e;return{...i,rows:Bs(r)}}let{when:t,...n}=e;return{...t!==void 0&&{when:t},rows:Bs([n])}}function Hs(e){let{rows:t,...n}=e;return{kind:`container`,direction:`vertical`,children:Object.values(t),...n}}function Us(e){return zs(e)?Hs(e):e}function*Ws(e,t){if(!zs(e)){yield*$o(e,t);return}yield[Hs(e),t];for(let[n,r]of Object.entries(e.rows))yield*$o(r,`${t}.rows.${n}`)}function Gs(e,t){return zs(e)?{...t,...e,rows:{...t.rows,...e.rows}}:Vs(e)}function Ks(e){if(!zs(e))return!0;let{rows:t,...n}=e;return Object.values(n).some(e=>e!==void 0)||Object.keys(t).length>0}function qs(e,t){return{globals:{...t.globals,...e.globals??{}},variables:{...t.variables,...e.variables??{}},segments:Js(t.segments,e.segments??{}),root:Gs(e.root??Rs,t.root),actions:{...t.actions,...e.actions??{}},looks:{...t.looks,...e.looks??{}},presets:Js(t.presets,e.presets??{}),editGlobals:{...t.editGlobals,...e.editGlobals??{}},helpers:{...t.helpers,...e.helpers??{}}}}function Js(e,t){return{...e,...Object.fromEntries(Object.entries(t).map(([t,n])=>[t,{...e[t],...n}]))}}const Ys=`closed`,Xs=`🍫`;function Zs(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 Qs(e,t,n,r){let i=Zs(e,t.length,n);if(i!==void 0)throw Error(i);return t.length===1?t[0]:t[r]}function $s(e){return e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}function ec(e,t,n,r,i){return{kind:`segment`,name:e,opens:{ref:t,body:n,placement:r},...i!==void 0&&{when:i}}}function tc(e,...t){return`{{ and ${[e,...t].map(nc).join(` `)} }}`}function nc(e){return`(eq .${e.variable} "${$s(e.member)}")`}function rc(e,t,n){return`{{ action "${e}" "${$s(t)}" "${$s(n)}" }}`}function ic(e,t){return{kind:`state`,key:e,default:t}}function ac(e,t){return{set:e,cycle:[Ys,t]}}const oc={required:!1,json:{enum:[...za]},parse:(e,t,n,r)=>{if(r[n]===`auto`){e.issues.push({path:`${t}.${n}`,message:`${t}.${n}: "auto" is not supported — the render daemon runs detached, so terminal detection would read the daemon's environment, not your terminal's. Pick an explicit depth: ${za.join(`, `)}`,line:W(e.source,[...t.split(`.`),n])});return}return fs(e,t,r,n,za)}},sc={required:!1,json:{type:`string`},parse:(e,t,n,r)=>{let i=us(e,t,r,n);return Ta(i)?i:ds(e,t,r)}},cc=/^[^\r\n]*\S[^\r\n]*$/u,lc=RegExp(`^(?:❌|✕)[\\uFE0E\\uFE0F]?$`,`u`),uc={required:!1,json:{type:`string`,pattern:cc.source,not:{pattern:lc.source}},parse:(e,t,n,r)=>{let i=us(e,t,r,n);if(i===void 0||cc.test(i)&&!lc.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])})}},dc={default_bg:K(),default_fg:K(),default_empty_value:K(),default_separator:K(),default_truncate_marker:K(),palette:sc,look:K(),preset:K(),style:As(Ma),progression:As(Wa),autoWrap:Ts(),padding:Es(Xa),charset:As(Fa),updateNotice:Ts(),colorCompatibility:oc,menuGlyph:uc},fc={noun:`globals key`,fields:dc};function pc(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 mc(e){return pc(`${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 hc(e){return pc(`${e} cannot change the settings menu glyph`,t=>`${t}: ${e} cannot change the settings menu glyph — one menu is shared by every preset. Set it in the top-level globals.menuGlyph instead.`)}const gc={noun:`preset globals key`,fields:{...dc,preset:mc(`a preset`),menuGlyph:hc(`a preset`)}},_c={noun:`editGlobals key`,fields:{...dc,preset:mc(`the editGlobals fragment`),menuGlyph:hc(`the editGlobals fragment`)}};function vc(e,t,n){return n===void 0?{}:hs(e,fc,t,n)??{}}function yc(e,t,n){return hs(e,gc,t,n)??{}}function bc(){return Ms(gc)}function xc(e,t,n){return hs(e,_c,t,n)??{}}const Sc=new Set(Object.keys(fc.fields));function Cc(e){return Sc.has(e)}function wc(){return[...Sc]}const Tc={padding:1};function Ec(e){let t=new Map;for(let[n,r]of Object.entries(Tc)){let i=e[n];t.set(n,typeof i==`number`?i:r)}return t}function Dc(e,t,n,r){return n.cache===void 0?(as.includes(r)&&e.issues.push({path:`${t}.cache`,message:`${r} variables must declare a cache policy (one of: ${ns.join(`, `)})`,line:W(e.source,t.split(`.`))}),null):Mc(e,`${t}.cache`,n.cache)}function Oc(e,t,n){if(n.cache!==void 0)return Mc(e,`${t}.cache`,n.cache)??void 0}function kc(e){return{required:!0,json:Fc(),parse:(t,n,r,i)=>Dc(t,n,i,e)??void 0}}function Ac(){return{required:!1,json:Fc(),parse:(e,t,n,r)=>Oc(e,t,r)}}const jc={noun:`cache`,arms:{ttl:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`&&Lc(n)?{ttl:n}:ys(e,t,`cache.ttl must be a duration string like "5s", "100ms", "2m", "1h"; got ${G(n)}`)},watch_file:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`&&n!==``?{watch_file:n}:ys(e,t,`cache.watch_file must be a non-empty path string, got ${G(n)}`)},depends_on:{json:{type:`array`,items:{type:`string`}},parse:(e,t,n)=>Array.isArray(n)&&n.every(e=>typeof e==`string`)?{depends_on:n}:ys(e,t,`cache.depends_on must be an array of variable-name strings, got ${G(n)}`)},key:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`&&n!==``?{key:n}:ys(e,t,`cache.key must be a non-empty template string, got ${G(n)}`)},never:{json:{const:!0},parse:(e,t,n)=>n===!0?{never:!0}:ys(e,t,`cache.never must be the literal boolean true, got ${G(n)}`)}}};function Mc(e,t,n){return bs(e,jc,t,n)}const Nc={noun:`time-variable cache`,arms:{ttl:jc.arms.ttl}};function Pc(){return{required:!1,json:Fs(Nc),parse:(e,t,n,r)=>r.cache===void 0?void 0:bs(e,Nc,`${t}.cache`,r.cache)??void 0}}function Fc(){return Fs(jc)}const Ic=/^(\d+(?:\.\d+)?)(ms|s|m|h)$/;function Lc(e){return Ic.test(e)}function Rc(e,t,n){if(n===void 0)return{};if(!ps(n))return e.issues.push({path:t,message:`${t} must be an object, got ${ms(n)}`,line:W(e.source,t.split(`.`))}),{};let r={};for(let[i,a]of Object.entries(n)){let n=xs(e,ol,`${t}.${i}`,a);n!==null&&(r[i]=n)}return r}function zc(){return{required:!0,json:{type:[`string`,`number`,`boolean`]},parse:(e,t,n,r)=>{let i=r.value;if(typeof i!=`string`&&typeof i!=`number`&&typeof i!=`boolean`){e.issues.push({path:`${t}.value`,message:`literal value must be string|number|boolean, got ${ms(i)}`,line:W(e.source,t.split(`.`))});return}return i}}}function Bc(){return{required:!0,json:{enum:[...is]},parse:(e,t,n,r)=>{let i=r.field;if(typeof i!=`string`||!is.includes(i)){e.issues.push({path:`${t}.field`,message:`git field must be one of: ${is.join(`, `)}, got ${JSON.stringify(i)}`,line:W(e.source,[...t.split(`.`),`field`])});return}return i}}}function Vc(){return{required:!1,json:{type:[`string`,`number`,`boolean`]},parse:(e,t,n,r)=>{let i=r.type;return ls(e,t,r,i===`number`||i===`boolean`||i===`string`?i:`string`)}}}const Hc={noun:`parse`,arms:{text:{json:{const:!0},parse:(e,t,n)=>n===!0?{text:!0}:ys(e,t,`parse.text must be the literal boolean true, got ${G(n)}`)},regex:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`?Uc(e,t,n):ys(e,t,`parse.regex must be a pattern string, got ${G(n)}`)},json:{json:{const:!0},parse:(e,t,n)=>n===!0?{json:!0}:ys(e,t,`parse.json must be the literal boolean true, got ${G(n)}`)}}};function Uc(e,t,n){let r;try{new RegExp(n),r=RegExp(`${n}|`).exec(``).length-1}catch(n){return ys(e,t,`parse.regex is not a valid regular expression: ${n.message}`)}return r>=1?{regex:n}:ys(e,t,`parse.regex must contain a capture group — its group 1 is the value; got ${JSON.stringify(n)}`)}function Wc(){return{required:!1,json:Fs(Hc),parse:(e,t,n,r)=>(r.regex!==void 0&&e.issues.push({path:`${t}.regex`,message:`${t}.regex was retired; the regex is the parse step's regex arm now: parse: { regex: ${JSON.stringify(r.regex)} }`,line:W(e.source,[...t.split(`.`),`regex`])}),r.parse===void 0?void 0:bs(e,Hc,`${t}.parse`,r.parse)??void 0)}}function Gc(){return{required:!1,json:{type:[`string`,`number`,`boolean`,`array`,`object`],description:`The value published when the source fails: a string under the text/regex parse arms, any non-null JSON value under the json arm`},parse:(e,t,n,r)=>ps(r.parse)&&`json`in r.parse?Kc(e,t,r.default):us(e,t,r,`default`)}}function Kc(e,t,n){if(n!==void 0)return qc(n)?n:ys(e,`${t}.default`,`${t}.default must be a JSON value (a json-parsed source's document), got ${G(n)}`)??void 0}function qc(e){return e!==null&&Jc(e)}function Jc(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(Jc);let t=Object.getPrototypeOf(e);return(t===Object.prototype||t===null)&&Object.values(e).every(Jc)}default:return!1}}const Yc={value:zc(),default:K()},Xc={path:ks(),type:As([`string`,`number`,`boolean`]),default:Vc()},Zc={name:ks(),default:K()},Qc={path:ks(),readMode:As([`whole`,`first-line`]),parse:Wc(),cache:kc(`file`),default:Gc()},$c={command:ks(),parse:Wc(),cache:kc(`shell`),default:Gc()},el={template:ks(),cache:Ac(),default:K()},tl={layout:ks(),cache:Pc(),default:K()},nl={field:Bc(),cache:kc(`git`),default:K()},rl={key:ks(),default:K()},il=`kind`;function al(e,t){return{...Ss(il,e,t),parse:(n,r,i)=>{let a=gs(n,t,r,i);return a===null?null:{kind:e,...a}}}}const ol={tag:il,noun:`source kind`,memberNoun:`variable`,arms:{literal:al(`literal`,Yc),input:al(`input`,Xc),env:al(`env`,Zc),file:al(`file`,Qc),shell:al(`shell`,$c),template:al(`template`,el),time:al(`time`,tl),git:al(`git`,nl),state:al(`state`,rl)}};function sl(){return Ps(ol)}function cl(){return{type:`object`,additionalProperties:sl()}}function ll(e){return e.replace(/[^A-Za-z0-9]+/g,`_`)}const ul=`groups.`,dl=`menus.`,fl=`edit.`,pl=`settings.`,ml=[ul,dl,fl,pl];function hl(e){return ml.some(t=>e.startsWith(t))}function gl(e){let t=ll(e);return ml.find(e=>t.startsWith(ll(e)))}function _l(e,t,n,r){for(let i of[`variables`,`actions`,`segments`])for(let a of Object.keys(t[i]??{}))a.startsWith(n)&&e.issues.push({path:`${i}.${a}`,message:`"${a}" is in the reserved "${n}" namespace (synthesized by ${r}) — rename it`,line:W(e.source,[`root`])})}function vl(e){return new Set(Object.keys(e.segments).filter(e=>!hl(e)))}function yl(e,t,n){if(t===void 0)return{};if(!ps(t))return e.issues.push({path:`segments`,message:`segments must be an object, got ${ms(t)}`,line:W(e.source,[`segments`])}),{};let r={};for(let[i,a]of Object.entries(t)){let t=hs(e,n.has(i)?Tl:wl,`segments.${i}`,a);t!==null&&(r[i]=t)}return r}function bl(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>r[n]===void 0?ys(e,`${t}.${n}`,`${t} declares no template — only a segment the bundled default declares may omit it (inheriting the bundled template); a segment of your own needs its own`)??void 0:cs(e,t,r,n)??void 0}}function xl(){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 Sl(){return{required:!1,json:cl(),parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0)return Rc(e,`${t}.${n}`,i)}}}const Cl={template:bl(),description:K(),width:xl(),justify:As(os),truncate:As(ss),bg:K(),fg:K(),when:K(),palette:Os(),vars:Sl()},wl={noun:`segment key`,fields:Cl},Tl={noun:`segment key`,fields:{...Cl,template:K()}},El=`#/definitions/LayoutNode`,Dl={kind:`container`,direction:`vertical`,children:[]};function Ol(e){return{required:!0,json:{const:e},parse:()=>e}}function kl(){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 Al(){return{required:!0,json:{enum:[...qo]},parse:(e,t,n,r)=>{let i=r[n];return typeof i==`string`&&qo.includes(i)?i:(e.issues.push({path:`${t}.${n}`,message:`a container "direction" must be one of: ${qo.join(`, `)} (got ${JSON.stringify(i)})`,line:W(e.source,[`root`])}),`vertical`)}}}function jl(e){return{required:!0,json:{type:`array`,items:{$ref:El}},parse:(t,n,r,i)=>{let a=i[r];return Array.isArray(a)?a.map((i,a)=>e(t,`${n}.${r}[${a}]`,i)):(t.issues.push({path:`${n}.${r}`,message:`a container must have a "children" array of layout nodes, got ${ms(a)}`,line:W(t.source,[`root`])}),[])}}}const Ml={noun:`layout-node key`,fields:{kind:Ol(`segment`),name:kl(),when:K()}},Nl=()=>As(Pi),Pl={noun:`layout-node key`,fields:{kind:Ol(`container`),direction:Al(),children:jl(Cs(()=>zl)),when:K(),distribution:Nl()}};function Fl(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>{let i=r[n];return typeof i==`string`&&i.length>0?i:(e.issues.push({path:`${t}.${n}`,message:`a "seg" node must have a non-empty segment name, got ${G(i)}`,line:W(e.source,[`root`])}),``)}}}const Il={noun:`layout-node key`,fields:{seg:Fl(),when:K()}},Ll={noun:`layout-node key`,fields:{h:jl(Cs(()=>zl)),when:K(),distribution:Nl()}},Rl={noun:`layout-node key`,fields:{v:jl(Cs(()=>zl)),when:K(),distribution:Nl()}},zl=(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`])}),Dl):{kind:`segment`,name:n};if(!ps(n))return e.issues.push({path:t,message:`a layout node must be a string (segment name) or an object with "kind" / "seg" / "h" / "v", got ${ms(n)}`,line:W(e.source,[`root`])}),Dl;if(n.kind===`container`)return hs(e,Pl,t,n)??Dl;if(n.kind===`segment`)return hs(e,Ml,t,n)??Dl;if(n.kind===`cells`)return e.issues.push({path:t,message:`kind: "cells" is no longer supported — use the h-arm spelling instead:
39
39
  Old: { kind: "cells", segments: ["seg1", "seg2"] }
40
- New: { h: ["seg1", "seg2"] }`,line:W(e.source,[`root`])}),El;if(n.kind===`group`){let r=hs(e,Gl,t,n);return r===null?El:(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}),ql(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`])}),El}if(a){let r=hs(e,Fl,t,n);return r===null?El:{kind:`segment`,name:r.seg,...r.when!==void 0&&{when:r.when}}}if(r){let r=hs(e,Il,t,n);return r===null?El:{kind:`container`,direction:`horizontal`,children:r.h,...r.when!==void 0&&{when:r.when},...r.distribution!==void 0&&{distribution:r.distribution}}}if(i){let r=hs(e,Ll,t,n);return r===null?El:{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`])}),El};function zl(){return{required:!0,json:{type:`object`,propertyNames:{pattern:Is.source},additionalProperties:{$ref:Tl}},parse:(e,t,n,r)=>{let i=r[n];if(!ps(i))return e.issues.push({path:`${t}.${n}`,message:`"rows" must be an object of row name → layout node, got ${ms(i)}`,line:W(e.source,[...t.split(`.`),n])}),{};let a={};for(let[r,o]of Object.entries(i)){if(!Is.test(r)){e.issues.push({path:`${t}.${n}.${r}`,message:`row name "${r}" must be an identifier (letters, digits, _; not starting with a digit) — it names the row in the config file and merges by name over the bundled default's rows`,line:W(e.source,[...t.split(`.`),n,r])});continue}a[r]=Rl(e,`${t}.${n}.${r}`,o)}return a}}}const Bl={noun:`root key`,fields:{rows:zl(),when:K(),distribution:Ml()}};function Vl(e,t,n){return ps(n)&&`rows`in n?hs(e,Bl,t,n)??{rows:{}}:Rl(e,t,n)}function Hl(){return{required:!0,json:{type:`string`,pattern:Is.source},parse:(e,t,n,r)=>{let i=r[n];if(typeof i!=`string`||!Is.test(i)||i===`closed`){e.issues.push({path:`${t}.${n}`,message:`a group "name" must be an identifier (letters, digits, _; not starting with a digit) and not the reserved "${Js}", got ${G(i)}`,line:W(e.source,[`root`])});return}return i}}}function Ul(){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 Wl(){return{required:!0,json:{type:`string`,pattern:`^[^\\n\\r]*$`},parse:(e,t,n,r)=>{let i=cs(e,t,r,n);if(i!==null){if(/[\n\r]/.test(i)){e.issues.push({path:`${t}.${n}`,message:`${t}.${n}: group label must not contain newlines`,line:W(e.source,[...t.split(`.`),n])});return}return i}}}}const Gl={noun:`layout-node key`,fields:{kind:Dl(`group`),name:Hl(),label:Wl(),open:Ts(),direction:As(qo),key:Ul(),bg:K(),fg:K(),when:K(),distribution:Ml(),children:Al(Cs(()=>Rl))}};function Kl(e){return e.key??`groups.`+e.name}function ql(e){let t=ll+e.name;return $s(t,{variable:t,key:Kl(e),member:e.name},{kind:`container`,direction:e.direction??`vertical`,children:e.children,...e.distribution!==void 0&&{distribution:e.distribution}},`drop`,e.when)}function Jl(e,t,n){e.issues.push({path:t,message:n,line:W(e.source,[`root`])})}function Yl(e,t){gl(e,t,ll,`group nodes`);let n=e.groups;if(n.length===0)return;let r=new Set;for(let t of n)r.has(t.name)&&Jl(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}.`)&&Kl(t)===Kl(r)&&Jl(e,t.path,`group "${t.name}" shares key "${Kl(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=Kl(t);if(i.has(n)||i.set(n,Js),t.open===!0){let r=i.get(n);r!==`closed`&&Jl(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=ll+e.name,r=Kl(e),c=n.filter(t=>t!==e&&e.path.startsWith(t.path+`.`)).length,l=` `.repeat(c);a[t]=rc(r,i.get(r)),o[t]=ic(r,e.name),s[t]={template:nc(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 Xl=class extends Error{name=`TemplateError`;kind=`EvalError`;pos;source;constructor(e,t,n={}){super(e),this.pos=t,this.source=n.source}get sourceSnippet(){return this.source?ru(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}},Zl=class extends Xl{name=`ParseError`;kind=`ParseError`;expected;found;constructor(e,t,n={}){super(e,t,n),this.expected=n.expected,this.found=n.found}},Ql=class extends Xl{name=`EvalError`;kind=`EvalError`},$l=class extends Ql{name=`FuncNotFoundError`;kind=`FuncNotFoundError`;funcName;suggestions;constructor(e,t,n={}){let r=iu(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}},eu=class extends Ql{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}},tu=class extends Ql{name=`MissingFieldError`;kind=`MissingFieldError`;path;constructor(e,t,n={}){super(`field "${e.join(`.`)}" not found on receiver`,t,n),this.path=e}},nu=class extends Ql{name=`FailError`;kind=`FailError`;constructor(e,t={line:0,column:0,offset:0},n={}){super(e,t,n)}};function ru(e,t){let n=e.split(`
40
+ New: { h: ["seg1", "seg2"] }`,line:W(e.source,[`root`])}),Dl;if(n.kind===`group`){let r=hs(e,Kl,t,n);return r===null?Dl:(e.groups.push({name:r.name,label:r.label,...r.open!==void 0&&{open:r.open},...r.direction!==void 0&&{direction:r.direction},...r.key!==void 0&&{key:r.key},...r.bg!==void 0&&{bg:r.bg},...r.fg!==void 0&&{fg:r.fg},...r.when!==void 0&&{when:r.when},path:t}),Jl(r))}let r=`h`in n,i=`v`in n,a=`seg`in n;if(+!!r+ +!!i+ +!!a>1){let r=[`seg`,`h`,`v`].filter(e=>e in n);return e.issues.push({path:t,message:`a layout node may have exactly one of "seg", "h", or "v" — got ${r.map(e=>`"${e}"`).join(` and `)} together`,line:W(e.source,[`root`])}),Dl}if(a){let r=hs(e,Il,t,n);return r===null?Dl:{kind:`segment`,name:r.seg,...r.when!==void 0&&{when:r.when}}}if(r){let r=hs(e,Ll,t,n);return r===null?Dl:{kind:`container`,direction:`horizontal`,children:r.h,...r.when!==void 0&&{when:r.when},...r.distribution!==void 0&&{distribution:r.distribution}}}if(i){let r=hs(e,Rl,t,n);return r===null?Dl:{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`])}),Dl};function Bl(){return{required:!0,json:{type:`object`,propertyNames:{pattern:Is.source},additionalProperties:{$ref:El}},parse:(e,t,n,r)=>{let i=r[n];if(!ps(i))return e.issues.push({path:`${t}.${n}`,message:`"rows" must be an object of row name → layout node, got ${ms(i)}`,line:W(e.source,[...t.split(`.`),n])}),{};let a={};for(let[r,o]of Object.entries(i)){if(!Is.test(r)){e.issues.push({path:`${t}.${n}.${r}`,message:`row name "${r}" must be an identifier (letters, digits, _; not starting with a digit) — it names the row in the config file and merges by name over the bundled default's rows`,line:W(e.source,[...t.split(`.`),n,r])});continue}a[r]=zl(e,`${t}.${n}.${r}`,o)}return a}}}const Vl={noun:`root key`,fields:{rows:Bl(),when:K(),distribution:Nl()}};function Hl(e,t,n){return ps(n)&&`rows`in n?hs(e,Vl,t,n)??{rows:{}}:zl(e,t,n)}function Ul(){return{required:!0,json:{type:`string`,pattern:Is.source},parse:(e,t,n,r)=>{let i=r[n];if(typeof i!=`string`||!Is.test(i)||i===`closed`){e.issues.push({path:`${t}.${n}`,message:`a group "name" must be an identifier (letters, digits, _; not starting with a digit) and not the reserved "${Ys}", got ${G(i)}`,line:W(e.source,[`root`])});return}return i}}}function Wl(){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 Gl(){return{required:!0,json:{type:`string`,pattern:`^[^\\n\\r]*$`},parse:(e,t,n,r)=>{let i=cs(e,t,r,n);if(i!==null){if(/[\n\r]/.test(i)){e.issues.push({path:`${t}.${n}`,message:`${t}.${n}: group label must not contain newlines`,line:W(e.source,[...t.split(`.`),n])});return}return i}}}}const Kl={noun:`layout-node key`,fields:{kind:Ol(`group`),name:Ul(),label:Gl(),open:Ts(),direction:As(qo),key:Wl(),bg:K(),fg:K(),when:K(),distribution:Nl(),children:jl(Cs(()=>zl))}};function ql(e){return e.key??`groups.`+e.name}function Jl(e){let t=ul+e.name;return ec(t,{variable:t,key:ql(e),member:e.name},{kind:`container`,direction:e.direction??`vertical`,children:e.children,...e.distribution!==void 0&&{distribution:e.distribution}},`drop`,e.when)}function Yl(e,t,n){e.issues.push({path:t,message:n,line:W(e.source,[`root`])})}function Xl(e,t){_l(e,t,ul,`group nodes`);let n=e.groups;if(n.length===0)return;let r=new Set;for(let t of n)r.has(t.name)&&Yl(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}.`)&&ql(t)===ql(r)&&Yl(e,t.path,`group "${t.name}" shares key "${ql(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=ql(t);if(i.has(n)||i.set(n,Ys),t.open===!0){let r=i.get(n);r!==`closed`&&Yl(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=ul+e.name,r=ql(e),c=n.filter(t=>t!==e&&e.path.startsWith(t.path+`.`)).length,l=` `.repeat(c);a[t]=ic(r,i.get(r)),o[t]=ac(r,e.name),s[t]={template:rc(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 Zl=class extends Error{name=`TemplateError`;kind=`EvalError`;pos;source;constructor(e,t,n={}){super(e),this.pos=t,this.source=n.source}get sourceSnippet(){return this.source?iu(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}},Ql=class extends Zl{name=`ParseError`;kind=`ParseError`;expected;found;constructor(e,t,n={}){super(e,t,n),this.expected=n.expected,this.found=n.found}},$l=class extends Zl{name=`EvalError`;kind=`EvalError`},eu=class extends $l{name=`FuncNotFoundError`;kind=`FuncNotFoundError`;funcName;suggestions;constructor(e,t,n={}){let r=au(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}},tu=class extends $l{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}},nu=class extends $l{name=`MissingFieldError`;kind=`MissingFieldError`;path;constructor(e,t,n={}){super(`field "${e.join(`.`)}" not found on receiver`,t,n),this.path=e}},ru=class extends $l{name=`FailError`;kind=`FailError`;constructor(e,t={line:0,column:0,offset:0},n={}){super(e,t,n)}};function iu(e,t){let n=e.split(`
41
41
  `),r=t.line-1,i=[];if(r-1>=0&&r-1<n.length&&i.push({num:r,text:n[r-1]??``}),r>=0&&r<n.length&&i.push({num:r+1,text:n[r]??``}),r+1<n.length&&i.push({num:r+2,text:n[r+1]??``}),i.length===0)return``;let a=String(i[i.length-1]?.num??1).length,o=[];for(let e of i)if(o.push(` ${String(e.num).padStart(a,` `)} | ${e.text}`),e.num===t.line){let e=` ${` `.repeat(a)} | `,n=` `.repeat(Math.max(0,t.column-1));o.push(`${e}${n}^`)}return o.join(`
42
- `)}function iu(e,t){if(t.length===0)return[];let n=t.map(t=>({name:t,dist:au(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 au(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 ou(e){throw Error(`unhandled node kind: ${JSON.stringify(e)}`)}const su=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`]]),cu={left:`{{`,right:`}}`};var lu=class{src;leftDelim;rightDelim;offset=0;line=1;column=1;mode=`text`;pending;constructor(e,t=cu){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 Zl(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&&uu(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);uu(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);uu(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(;uu(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`;uu(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&&(fu(e)||du(e)&&fu(this.src[this.offset+1]??``)||e===`.`&&fu(this.src[this.offset+1]??``)))return this.readNumber(t);if(e===`.`)return this.readDotOrField(t);if(e!==void 0&&_u(e))return this.readIdentifier(t);throw this.err(`unexpected character ${JSON.stringify(e)}`,t,{found:e??`end of input`})}readQuotedString(e){let t=this.offset;for(this.advanceBy(1);this.offset<this.src.length;){let n=this.src[this.offset];if(n===`\\`){this.advanceBy(1),this.offset<this.src.length&&this.advanceBy(1);continue}if(n===`
42
+ `)}function au(e,t){if(t.length===0)return[];let n=t.map(t=>({name:t,dist:ou(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 ou(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 su(e){throw Error(`unhandled node kind: ${JSON.stringify(e)}`)}const cu=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`]]),lu={left:`{{`,right:`}}`};var uu=class{src;leftDelim;rightDelim;offset=0;line=1;column=1;mode=`text`;pending;constructor(e,t=lu){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 Ql(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&&du(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);du(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);du(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(;du(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`;du(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&&(pu(e)||fu(e)&&pu(this.src[this.offset+1]??``)||e===`.`&&pu(this.src[this.offset+1]??``)))return this.readNumber(t);if(e===`.`)return this.readDotOrField(t);if(e!==void 0&&vu(e))return this.readIdentifier(t);throw this.err(`unexpected character ${JSON.stringify(e)}`,t,{found:e??`end of input`})}readQuotedString(e){let t=this.offset;for(this.advanceBy(1);this.offset<this.src.length;){let n=this.src[this.offset];if(n===`\\`){this.advanceBy(1),this.offset<this.src.length&&this.advanceBy(1);continue}if(n===`
43
43
  `)throw this.err(`newline in interpreted string`,e,{found:`\\n`});if(n===`"`)return this.advanceBy(1),this.makeToken(`String`,this.src.slice(t,this.offset),e);this.advanceBy(1)}throw this.err(`unterminated string literal`,e,{expected:`"`,found:`end of input`})}readRawString(e){let t=this.offset;for(this.advanceBy(1);this.offset<this.src.length;){if(this.src[this.offset]==="`")return this.advanceBy(1),this.makeToken(`String`,this.src.slice(t,this.offset),e);this.advanceBy(1)}throw this.err(`unterminated raw string literal`,e,{expected:"`",found:`end of input`})}readChar(e){let t=this.offset;for(this.advanceBy(1);this.offset<this.src.length;){let n=this.src[this.offset];if(n===`\\`){this.advanceBy(1),this.offset<this.src.length&&this.advanceBy(1);continue}if(n===`
44
- `)throw this.err(`newline in rune literal`,e,{found:`\\n`});if(n===`'`)return this.advanceBy(1),this.makeToken(`Char`,this.src.slice(t,this.offset),e);this.advanceBy(1)}throw this.err(`unterminated rune literal`,e,{expected:`'`,found:`end of input`})}readNumber(e){let t=this.offset;if(du(this.src[this.offset]??``)&&this.advanceBy(1),this.src[this.offset]===`0`&&this.offset+1<this.src.length){let n=this.src[this.offset+1];if(n===`x`||n===`X`){for(this.advanceBy(2);pu(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);if(this.src[this.offset]===`.`||this.src[this.offset]===`p`||this.src[this.offset]===`P`)for(;this.isHexFloatTail(this.src[this.offset]??``);)this.advanceBy(1);return this.finishNumber(t,e)}if(n===`o`||n===`O`){for(this.advanceBy(2);mu(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);return this.finishNumber(t,e)}if(n===`b`||n===`B`){for(this.advanceBy(2);hu(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);return this.finishNumber(t,e)}}for(;fu(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);if(this.src[this.offset]===`.`)for(this.advanceBy(1);fu(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);if(this.src[this.offset]===`e`||this.src[this.offset]===`E`)for(this.advanceBy(1),du(this.src[this.offset]??``)&&this.advanceBy(1);fu(this.src[this.offset]??``);)this.advanceBy(1);return this.src[this.offset]===`i`&&this.advanceBy(1),this.finishNumber(t,e)}isHexFloatTail(e){return pu(e)||e===`.`||e===`p`||e===`P`||e===`+`||e===`-`||e===`_`}finishNumber(e,t){if(this.offset===e)throw this.err(`expected number`,t,{expected:`digit`});return this.makeToken(`Number`,this.src.slice(e,this.offset),t)}readVariable(e){let t=this.offset;for(this.advanceBy(1);vu(this.src[this.offset]??``);)this.advanceBy(1);for(;this.src[this.offset]===`.`&&_u(this.src[this.offset+1]??``);)for(this.advanceBy(1);vu(this.src[this.offset]??``);)this.advanceBy(1);return this.makeToken(`Variable`,this.src.slice(t,this.offset),e)}readDotOrField(e){let t=this.offset;if(this.advanceBy(1),!_u(this.src[this.offset]??``))return this.makeToken(`Dot`,`.`,e);for(;vu(this.src[this.offset]??``);)this.advanceBy(1);for(;this.src[this.offset]===`.`&&_u(this.src[this.offset+1]??``);)for(this.advanceBy(1);vu(this.src[this.offset]??``);)this.advanceBy(1);return this.makeToken(`Field`,this.src.slice(t,this.offset),e)}readIdentifier(e){let t=this.offset;for(;vu(this.src[this.offset]??``);)this.advanceBy(1);let n=this.src.slice(t,this.offset),r=su.get(n);return r?this.makeToken(r,n,e):this.makeToken(`Identifier`,n,e)}skipActionSpaces(){for(;this.offset<this.src.length;){let e=this.src[this.offset];if(e===` `||e===` `||e===`\r`||e===`
44
+ `)throw this.err(`newline in rune literal`,e,{found:`\\n`});if(n===`'`)return this.advanceBy(1),this.makeToken(`Char`,this.src.slice(t,this.offset),e);this.advanceBy(1)}throw this.err(`unterminated rune literal`,e,{expected:`'`,found:`end of input`})}readNumber(e){let t=this.offset;if(fu(this.src[this.offset]??``)&&this.advanceBy(1),this.src[this.offset]===`0`&&this.offset+1<this.src.length){let n=this.src[this.offset+1];if(n===`x`||n===`X`){for(this.advanceBy(2);mu(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);if(this.src[this.offset]===`.`||this.src[this.offset]===`p`||this.src[this.offset]===`P`)for(;this.isHexFloatTail(this.src[this.offset]??``);)this.advanceBy(1);return this.finishNumber(t,e)}if(n===`o`||n===`O`){for(this.advanceBy(2);hu(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);return this.finishNumber(t,e)}if(n===`b`||n===`B`){for(this.advanceBy(2);gu(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);return this.finishNumber(t,e)}}for(;pu(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);if(this.src[this.offset]===`.`)for(this.advanceBy(1);pu(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);if(this.src[this.offset]===`e`||this.src[this.offset]===`E`)for(this.advanceBy(1),fu(this.src[this.offset]??``)&&this.advanceBy(1);pu(this.src[this.offset]??``);)this.advanceBy(1);return this.src[this.offset]===`i`&&this.advanceBy(1),this.finishNumber(t,e)}isHexFloatTail(e){return mu(e)||e===`.`||e===`p`||e===`P`||e===`+`||e===`-`||e===`_`}finishNumber(e,t){if(this.offset===e)throw this.err(`expected number`,t,{expected:`digit`});return this.makeToken(`Number`,this.src.slice(e,this.offset),t)}readVariable(e){let t=this.offset;for(this.advanceBy(1);yu(this.src[this.offset]??``);)this.advanceBy(1);for(;this.src[this.offset]===`.`&&vu(this.src[this.offset+1]??``);)for(this.advanceBy(1);yu(this.src[this.offset]??``);)this.advanceBy(1);return this.makeToken(`Variable`,this.src.slice(t,this.offset),e)}readDotOrField(e){let t=this.offset;if(this.advanceBy(1),!vu(this.src[this.offset]??``))return this.makeToken(`Dot`,`.`,e);for(;yu(this.src[this.offset]??``);)this.advanceBy(1);for(;this.src[this.offset]===`.`&&vu(this.src[this.offset+1]??``);)for(this.advanceBy(1);yu(this.src[this.offset]??``);)this.advanceBy(1);return this.makeToken(`Field`,this.src.slice(t,this.offset),e)}readIdentifier(e){let t=this.offset;for(;yu(this.src[this.offset]??``);)this.advanceBy(1);let n=this.src.slice(t,this.offset),r=cu.get(n);return r?this.makeToken(r,n,e):this.makeToken(`Identifier`,n,e)}skipActionSpaces(){for(;this.offset<this.src.length;){let e=this.src[this.offset];if(e===` `||e===` `||e===`\r`||e===`
45
45
  `)this.advanceBy(1);else return}}advanceBy(e){for(let t=0;t<e;t++){let e=this.src[this.offset];this.offset+=1,e===`
46
- `?(this.line+=1,this.column=1):this.column+=1}}advanceTo(e){for(;this.offset<e;)this.advanceBy(1)}makeToken(e,t,n,r={}){return Object.freeze({type:e,value:t,pos:n,...r.trimLeft===void 0?{}:{trimLeft:r.trimLeft},...r.trimRight===void 0?{}:{trimRight:r.trimRight}})}};function uu(e){return e===` `||e===` `||e===`\r`||e===`
47
- `}function du(e){return e===`+`||e===`-`}function fu(e){return e>=`0`&&e<=`9`}function pu(e){return fu(e)||e>=`a`&&e<=`f`||e>=`A`&&e<=`F`}function mu(e){return e>=`0`&&e<=`7`}function hu(e){return e===`0`||e===`1`}function gu(e){return e>=`a`&&e<=`z`||e>=`A`&&e<=`Z`}function _u(e){return gu(e)||e===`_`}function vu(e){return _u(e)||fu(e)}let yu,bu;function xu(e,t){return bu(e,t)}var Su=class e{static EMPTY=new e(new Map,void 0);#e;#t;constructor(e,t){this.#e=e,this.#t=t}static{yu=(t,n)=>new e(t,n),bu=(e,t)=>e.#e.get(t)??(e.#t&&bu(e.#t,t))}has(e){return bu(this,e)!==void 0}};function Cu(e,t,n=Su.EMPTY){return new wu(e,t,n).parseTemplate()}var wu=class{lex;buf=[];defines=new Map;inherit;source;rangeDepth=0;constructor(e,t,n){this.source=e,this.inherit=n,this.lex=t?new lu(e,t):new lu(e)}peek(e=0){for(;this.buf.length<=e;)this.buf.push(this.lex.next());return this.buf[e]}next(){return this.buf.length>0?this.buf.shift():this.lex.next()}expect(e,t){let n=this.next();if(n.type!==e)throw this.errAt(n,`expected ${t}`,{expected:t,found:Du(n)});return n}errAt(e,t,n={}){return new Zl(t,e.pos,{...n,source:this.source})}parseTemplate(){let e=this.parseList();if(this.peek().type!==`EOF`){let e=this.peek(),t=this.peek(1);if(e.type===`LeftDelim`&&(t.type===`Else`||t.type===`End`)){let n=t.type===`Else`?`else`:`end`;throw this.errAt(e,`unexpected \`{{${n}}}\` outside of \`if\`, \`range\`, \`with\`, or \`block\``,{found:`{{${n}}}`})}throw this.errAt(e,`unexpected ${Du(e)}`,{found:Du(e)})}return{root:e,defines:yu(this.defines,this.inherit),ownDefines:this.defines,source:this.source}}parseList(){let e=this.peek().pos,t=[];for(;;){let n=this.peek();if(n.type===`EOF`)break;if(n.type===`Text`){this.next(),t.push({type:`Text`,pos:n.pos,text:n.value});continue}if(n.type===`Comment`){this.next();let e=Eu(n);t.push({type:`Comment`,pos:n.pos,text:n.value,trim:e});continue}if(n.type===`LeftDelim`){let n=this.peek(1).type;if(n===`Else`||n===`End`)return Tu(e,t);let r=this.parseAction();r!==null&&t.push(r);continue}throw this.errAt(n,`unexpected ${Du(n)} at top level`,{found:Du(n)})}return Tu(e,t)}parseAction(){let e=this.expect(`LeftDelim`,"`{{`"),t=e.trimLeft===!0,n=this.peek();switch(n.type){case`If`:return this.next(),this.parseBranch(`If`,e.pos,t);case`Range`:return this.next(),this.parseBranch(`Range`,e.pos,t);case`With`:return this.next(),this.parseBranch(`With`,e.pos,t);case`Break`:return this.next(),this.parseBreakOrContinue(`Break`,e.pos,t);case`Continue`:return this.next(),this.parseBreakOrContinue(`Continue`,e.pos,t);case`Template`:return this.next(),this.parseTemplateInvocation(e.pos,t);case`Block`:return this.next(),this.parseBlock(e.pos,t);case`Define`:return this.next(),this.parseDefine(e.pos,t),null;case`RightDelim`:throw this.errAt(n,`empty action`,{expected:`pipeline`});default:{let n=this.parsePipeline(),r=this.expect(`RightDelim`,"`}}`");return{type:`Action`,pos:e.pos,pipe:n,trim:{trimLeft:t,trimRight:r.trimRight===!0}}}}}parseBranch(e,t,n){let r=this.parsePipeline();this.expect(`RightDelim`,"`}}`"),e===`Range`&&(this.rangeDepth+=1);let i=this.parseList();e===`Range`&&--this.rangeDepth;let a=this.parseElsePart(),o={trimLeft:n,trimRight:a.endConsumed?a.endRight:this.consumeEnd()},s=a.list?{pipe:r,list:i,elseList:a.list,trim:o}:{pipe:r,list:i,trim:o};switch(e){case`If`:return{type:`If`,pos:t,...s};case`Range`:return{type:`Range`,pos:t,...s};case`With`:return{type:`With`,pos:t,...s}}}parseBreakOrContinue(e,t,n){if(this.rangeDepth===0)throw new Zl(`{{${e===`Break`?`break`:`continue`}}} outside of {{range}}`,t,{source:this.source});let r={trimLeft:n,trimRight:this.expect(`RightDelim`,"`}}`").trimRight===!0};return e===`Break`?{type:`Break`,pos:t,trim:r}:{type:`Continue`,pos:t,trim:r}}parseElsePart(){if(this.peek().type!==`LeftDelim`||this.peek(1).type!==`Else`)return{list:void 0,endRight:!1,endConsumed:!1};let e=this.next();if(this.next(),this.peek().type===`If`){this.next();let t=this.parseBranch(`If`,e.pos,e.trimLeft===!0);return{list:{type:`List`,pos:e.pos,nodes:[t]},endRight:t.trim.trimRight,endConsumed:!0}}return this.expect(`RightDelim`,"`}}`"),{list:this.parseList(),endRight:!1,endConsumed:!1}}consumeEnd(){return this.expect(`LeftDelim`,"`{{end}}`"),this.expect(`End`,"`end`"),this.expect(`RightDelim`,"`}}`").trimRight===!0}parseTemplateInvocation(e,t){let n=this.parseQuotedName(),r=this.peek().type===`RightDelim`?void 0:this.parsePipeline(),i={trimLeft:t,trimRight:this.expect(`RightDelim`,"`}}`").trimRight===!0};return r?{type:`Template`,pos:e,name:n,pipe:r,trim:i}:{type:`Template`,pos:e,name:n,trim:i}}parseBlock(e,t){let n=this.parseQuotedName(),r=this.peek().type===`RightDelim`?void 0:this.parsePipeline();this.expect(`RightDelim`,"`}}`");let i=this.rangeDepth;this.rangeDepth=0;let a=this.parseList();this.rangeDepth=i;let o={trimLeft:t,trimRight:this.consumeEnd()};return!this.defines.has(n)&&!this.inherit.has(n)&&this.defines.set(n,{list:a,source:this.source}),r?{type:`Block`,pos:e,name:n,pipe:r,list:a,trim:o}:{type:`Block`,pos:e,name:n,list:a,trim:o}}parseDefine(e,t){let n=this.parseQuotedName();this.expect(`RightDelim`,"`}}`");let r=this.rangeDepth;this.rangeDepth=0;let i=this.parseList();if(this.rangeDepth=r,this.consumeEnd(),this.defines.has(n)||this.inherit.has(n))throw new Zl(`redefinition of template ${JSON.stringify(n)}`,i.pos,{source:this.source});this.defines.set(n,{list:i,source:this.source})}parseQuotedName(){let e=this.next();if(e.type!==`String`)throw this.errAt(e,`expected template name (quoted string)`,{expected:`string`,found:Du(e)});return Fu(e.value,e.pos,this.source)}parsePipeline(){let e=this.peek().pos,t=this.tryParseDecls(),n=[this.parseCommand()];for(;this.peek().type===`Pipe`;){this.next();let e=this.peek();if(!Ou(e.type))throw this.errAt(e,"missing command after `|`",{expected:`command`,found:Du(e)});n.push(this.parseCommand())}return{type:`Pipe`,pos:e,decls:t?.vars??[],isAssign:t?.isAssign??!1,cmds:n}}tryParseDecls(){if(this.peek().type!==`Variable`)return;let e=1;for(;this.peek(e).type===`Comma`;){if(this.peek(e+1).type!==`Variable`)return;e+=2}let t=this.peek(e).type;if(t!==`Declare`&&t!==`Assign`)return;let n=[ku(this.next())];for(;this.peek().type===`Comma`;)this.next(),n.push(ku(this.expect(`Variable`,`$variable`)));return{vars:n,isAssign:this.next().type===`Assign`}}parseCommand(){let e=this.peek().pos,t=[this.parsePrimary()];for(;Ou(this.peek().type);)t.push(this.parsePrimary());return{type:`Command`,pos:e,args:t}}parsePrimary(){let e=this.next();switch(e.type){case`Dot`:return{type:`Dot`,pos:e.pos};case`Field`:return{type:`Field`,pos:e.pos,idents:e.value.slice(1).split(`.`)};case`Variable`:return ku(e);case`Identifier`:return{type:`Identifier`,pos:e.pos,ident:e.value};case`String`:return{type:`String`,pos:e.pos,raw:e.value,value:Fu(e.value,e.pos,this.source)};case`Number`:return ju(e);case`Char`:return Mu(e,this.source);case`Bool`:return{type:`Bool`,pos:e.pos,value:e.value===`true`};case`Nil`:return{type:`Nil`,pos:e.pos};case`LeftParen`:return this.parseChainOrPipe(e.pos);default:throw this.errAt(e,`expected command argument, found ${Du(e)}`,{expected:`command argument`,found:Du(e)})}}parseChainOrPipe(e){let t=this.parsePipeline(),n=this.expect(`RightParen`,"`)`"),r=[],i=n.pos.offset+1,a=this.peek();return a.type===`Field`&&a.pos.offset===i&&(this.next(),r.push(...a.value.slice(1).split(`.`))),r.length===0?t:{type:`Chain`,pos:e,node:t,fields:r}}};function Tu(e,t){return{type:`List`,pos:e,nodes:t}}function Eu(e){return{trimLeft:e.trimLeft===!0,trimRight:e.trimRight===!0}}function Du(e){return e.type===`EOF`?`end of input`:e.value||e.type}function Ou(e){switch(e){case`Dot`:case`Field`:case`Variable`:case`Identifier`:case`String`:case`Number`:case`Char`:case`Bool`:case`Nil`:case`LeftParen`:return!0;default:return!1}}function ku(e){return{type:`Variable`,pos:e.pos,idents:Au(e.value)}}function Au(e){let t=e.indexOf(`.`);return t===-1?[e]:[e.slice(0,t),...e.slice(t+1).split(`.`)]}function ju(e){let t=e.value,n=t.replace(/_/g,``),r=n.toLowerCase().endsWith(`i`),i=r?n.slice(0,-1):n,a=!r&&(i.includes(`.`)||!i.startsWith(`0x`)&&!i.startsWith(`0X`)&&/[eE]/.test(i)||(i.startsWith(`0x`)||i.startsWith(`0X`))&&/[pP]/.test(i)),o=!r&&!a,s={type:`Number`,pos:e.pos,text:t,isInt:o,isUint:!1,isFloat:a,isComplex:r};if(o){let e=Nu(i);return{...s,intValue:e}}if(a){let e=Pu(i);return{...s,floatValue:e}}let c=Pu(i);return{...s,complexValue:[0,c]}}function Mu(e,t){let n=Iu(e.value,e.pos,t);return{type:`Number`,pos:e.pos,text:e.value,isInt:!0,isUint:!1,isFloat:!1,isComplex:!1,intValue:BigInt(n)}}function Nu(e){let t=1n,n=e;return n.startsWith(`+`)?n=n.slice(1):n.startsWith(`-`)&&(t=-1n,n=n.slice(1)),t*BigInt(n)}function Pu(e){return Number(e)}function Fu(e,t,n){if(e.startsWith("`"))return e.slice(1,-1);let r=``;for(let i=1;i<e.length-1;i++){let a=e[i];if(a!==`\\`){r+=a;continue}let o=e[++i];switch(o){case`n`:r+=`
48
- `;break;case`t`:r+=` `;break;case`r`:r+=`\r`;break;case`\\`:r+=`\\`;break;case`"`:r+=`"`;break;case`'`:r+=`'`;break;case`a`:r+=`\x07`;break;case`b`:r+=`\b`;break;case`f`:r+=`\f`;break;case`v`:r+=`\v`;break;case`0`:case`1`:case`2`:case`3`:case`4`:case`5`:case`6`:case`7`:{let t=o+(e[i+1]??``)+(e[i+2]??``);i+=2,r+=String.fromCodePoint(Number.parseInt(t,8));break}case`x`:{let t=(e[i+1]??``)+(e[i+2]??``);i+=2,r+=String.fromCodePoint(Number.parseInt(t,16));break}case`u`:{let t=e.slice(i+1,i+5);i+=4,r+=String.fromCodePoint(Number.parseInt(t,16));break}case`U`:{let t=e.slice(i+1,i+9);i+=8,r+=String.fromCodePoint(Number.parseInt(t,16));break}default:throw new Zl(`bad escape sequence \\${o}`,t,{expected:`valid escape sequence`,found:`\\${o}`,source:n})}}return r}function Iu(e,t,n){let r=Fu(`"${e.slice(1,-1).replace(/"/g,`\\"`)}"`,t,n);if(r.length===0)throw new Zl(`empty rune literal`,t,{source:n});return r.codePointAt(0)??0}function Lu(e,t){if(t(e)!==!1)for(let n of Ru(e))Lu(n,t)}function Ru(e){switch(e.type){case`Text`:case`Comment`:case`Dot`:case`Nil`:case`Bool`:case`Number`:case`String`:case`Identifier`:case`Field`:case`Variable`:case`Break`:case`Continue`:return[];case`List`:return e.nodes;case`Chain`:return[e.node];case`Command`:return e.args;case`Pipe`:return[...e.decls,...e.cmds];case`Action`:return[e.pipe];case`If`:case`Range`:case`With`:return e.elseList?[e.pipe,e.list,e.elseList]:[e.pipe,e.list];case`Template`:return e.pipe?[e.pipe]:[];case`Block`:return e.pipe?[e.pipe,e.list]:[e.list];default:return ou(e)}}const zu=Symbol(`go-template-js.MISSING`);function Bu(e,t){if(e==null)return zu;if(e instanceof Map)return e.has(t)?e.get(t):zu;if(Array.isArray(e))return zu;if(typeof e==`object`){let n=e;return t in n?n[t]:zu}return zu}function Vu(e,t){let n=e;for(let e of t){if(n===zu)return zu;n=Bu(n,e)}return n}function Hu(e,t){if(Object.is(e,t))return!0;if(e===null||t===null||e===void 0||t===void 0||typeof e!=typeof t)return!1;if(Array.isArray(e)&&Array.isArray(t))return e.length===t.length?e.every((e,n)=>Hu(e,t[n])):!1;if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(let[n,r]of e)if(!t.has(n)||!Hu(r,t.get(n)))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}if(typeof e==`object`&&typeof t==`object`){let n=Object.keys(e),r=Object.keys(t);return n.length===r.length?n.every(n=>Hu(e[n],t[n])):!1}return!1}const Uu=new WeakSet;function Wu(e){return Uu.add(e),e}function Gu(e){return Uu.has(e)}function Ku(e){return e==null||e===!1?!1:typeof e==`number`?e!==0&&!Number.isNaN(e):typeof e==`bigint`?e!==0n:typeof e==`string`||Array.isArray(e)?e.length>0:e instanceof Map||e instanceof Set?e.size>0:typeof e==`object`?Object.keys(e).length>0:!!e}function qu(e,t){return{eq:{fn:(e,...t)=>t.some(t=>Xu(e,t)),argTypes:[`comparable`]},ne:{fn:(e,t)=>!Xu(e,t),argTypes:[`comparable`,`comparable`]},lt:{fn:(e,t)=>Zu(e,t)<0,argTypes:[`ordered`,`ordered`]},le:{fn:(e,t)=>Zu(e,t)<=0,argTypes:[`ordered`,`ordered`]},gt:{fn:(e,t)=>Zu(e,t)>0,argTypes:[`ordered`,`ordered`]},ge:{fn:(e,t)=>Zu(e,t)>=0,argTypes:[`ordered`,`ordered`]},len:{fn:e=>Qu(e),argTypes:[`sized`]},index:{fn:(e,...t)=>{let n=e;for(let e of t)n=$u(n,e);return n},argTypes:[`collection`,`index-key`]},slice:{fn:(e,...t)=>{let n=t.length>=1?t[0]:0,r=t.length>=2?t[1]:void 0;return e.slice(n,r)},argTypes:[`sliceable`,`int`]},print:{fn:(...t)=>nd(t,e),argTypes:[`stringifiable`],returnType:`string`},println:{fn:(...t)=>`${nd(t,e)}\n`,argTypes:[`stringifiable`],returnType:`string`},printf:{fn:(n,...r)=>dd(n,r,e,t),argTypes:[`string`,`stringifiable`],returnType:`string`},toString:{fn:n=>md(n,e,t),argTypes:[`value`],returnType:`string`},toStrings:{fn:n=>n.map(n=>md(n,e,t)),argTypes:[`list`]},call:{fn:(e,...t)=>e(...t),argTypes:[`callable`,`value`]},html:{fn:(...t)=>ad(nd(t,e)),argTypes:[`stringifiable`],returnType:`string`},js:{fn:(...t)=>cd(nd(t,e)),argTypes:[`stringifiable`],returnType:`string`},urlquery:{fn:(...t)=>ud(nd(t,e)),argTypes:[`stringifiable`],returnType:`string`},not:{fn:e=>!Ku(e),argTypes:[`truthy`]}}}function Ju(){return{and:Wu({argTypes:[`truthy`],fn:(...e)=>{let t=!0;for(let n of e)if(t=n(),!Ku(t))return t;return t}}),or:Wu({argTypes:[`truthy`],fn:(...e)=>{let t=!1;for(let n of e)if(t=n(),Ku(t))return t;return t}})}}function Yu(e,t){return{...qu(e,t),...Ju()}}function Xu(e,t){return typeof e==`number`&&typeof t==`bigint`?BigInt(e)===t:typeof e==`bigint`&&typeof t==`number`?e===BigInt(t):Hu(e,t)}function Zu(e,t){if(typeof e==`bigint`&&typeof t==`bigint`)return e===t?0:e<t?-1:1;if(typeof e==`bigint`||typeof t==`bigint`){let n=typeof e==`bigint`?e:BigInt(Math.trunc(Number(e))),r=typeof t==`bigint`?t:BigInt(Math.trunc(Number(t)));return n===r?0:n<r?-1:1}let n=e,r=t;return n===r?0:n<r?-1:1}function Qu(e){return typeof e==`string`||Array.isArray(e)?e.length:e instanceof Map||e instanceof Set?e.size:Object.keys(e).length}function $u(e,t){if(Array.isArray(e)){let n=Number(t);if(!Number.isInteger(n))throw Error(`index: array index must be integer, got ${ed(t)}`);if(n<0||n>=e.length)throw Error(`index: out of range [${n}] with length ${e.length}`);return e[n]}if(e instanceof Map)return e.get(t);if(typeof e==`string`)return e[Number(t)];if(typeof e==`object`&&e){if(typeof t!=`string`)throw Error(`index: object index must be string, got ${ed(t)}`);return e[t]}throw Error(`index: cannot index ${ed(e)}`)}function ed(e){return e===null?`null`:e===void 0?`undefined`:Array.isArray(e)?`array`:e instanceof Map?`Map`:typeof e}function td(e){return e==null?`<nil>`:typeof e==`string`?`string`:typeof e==`boolean`?`bool`:typeof e==`bigint`?`int64`:typeof e==`number`?Number.isInteger(e)?`int`:`float64`:Array.isArray(e)?`[]interface {}`:e instanceof Map||typeof e==`object`?`map[string]interface {}`:typeof e}function nd(e,t){let n=``,r=!1;for(let i=0;i<e.length;i++){let a=e[i],o=typeof a==`string`;i>0&&!r&&!o&&(n+=` `),n+=rd(a,t),r=o}return n}function rd(e,t){return e==null?`<nil>`:typeof e==`string`?e:t(e)}const id={"\0":`�`,'"':`&#34;`,"'":`&#39;`,"&":`&amp;`,"<":`&lt;`,">":`&gt;`};function ad(e){return e.replace(/[\0"'&<>]/g,e=>id[e]??e)}const od={"\\":`\\\\`,"'":`\\'`,'"':`\\"`,"<":`\\u003C`,">":`\\u003E`,"&":`\\u0026`,"=":`\\u003D`},sd=/^[\p{L}\p{M}\p{N}\p{P}\p{S}]$/u;function cd(e){let t=``;for(let n of e){let e=od[n];if(e!==void 0){t+=e;continue}let r=n.codePointAt(0);if(r<32||r>=128&&!sd.test(n)){t+=`\\u${r.toString(16).toUpperCase().padStart(4,`0`)}`;continue}t+=n}return t}const ld=new TextEncoder;function ud(e){let t=``,n=ld.encode(e);for(let e of n)e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===45||e===46||e===95||e===126?t+=String.fromCharCode(e):e===32?t+=`+`:t+=`%${e.toString(16).toUpperCase().padStart(2,`0`)}`;return t}function dd(e,t,n,r){let i=``,a=0,o=0;for(;o<e.length;){let s=e[o];if(s!==`%`){i+=s,o+=1;continue}if(e[o+1]===`%`){i+=`%`,o+=2;continue}let c=o+1;for(;c<e.length&&`+-# 0`.includes(e[c]??``);)c+=1;for(;c<e.length&&e[c]!==void 0&&/[0-9]/.test(e[c]);)c+=1;if(e[c]===`.`)for(c+=1;c<e.length&&e[c]!==void 0&&/[0-9]/.test(e[c]);)c+=1;let l=e[c],u=e.slice(o+1,c),d=t[a++];i+=fd(l??``,u,d,n,r),o=c+1}return i}function fd(e,t,n,r,i){switch(e){case`s`:return typeof n==`string`?pd(t,n):pd(t,rd(n,r));case`d`:return typeof n!=`number`&&typeof n!=`bigint`?`%!${e}(${td(n)}=${rd(n,r)})`:pd(t,String(typeof n==`bigint`?n:Math.trunc(n)));case`v`:return pd(t,md(n,r,i));case`q`:return pd(t,JSON.stringify(rd(n,r)));case`f`:{if(typeof n!=`number`&&typeof n!=`bigint`)return`%!${e}(${td(n)}=${rd(n,r)})`;let i=t.includes(`.`)?Number(t.split(`.`)[1]):6;return pd(t,Number(n).toFixed(i))}case`t`:return pd(t,Ku(n)?`true`:`false`);case`x`:if(typeof n==`string`){let e=new TextEncoder().encode(n),r=``;for(let t of e)r+=t.toString(16).padStart(2,`0`);return pd(t,r)}return typeof n!=`number`&&typeof n!=`bigint`?`%!${e}(${td(n)}=${rd(n,r)})`:typeof n==`bigint`?pd(t,n.toString(16)):pd(t,Math.trunc(n).toString(16));default:return`%!${e}(${td(n)}=${rd(n,r)})`}}function pd(e,t){let n=e.match(/^([+\-# 0]*)/)?.[1]??``,r=e.slice(n.length).match(/^(\d+)/);if(!r)return t;let i=Number(r[1]);if(t.length>=i)return t;let a=` `.repeat(i-t.length);return n.includes(`-`)?t+a:a+t}function md(e,t,n){return e==null?`<nil>`:typeof e==`string`?e:n(e)?t(e):Array.isArray(e)?`[${e.map(e=>md(e,t,n)).join(` `)}]`:e instanceof Map?hd([...e.entries()],t,n):gd(e)?hd(Object.entries(e),t,n):String(e)}function hd(e,t,n){let r=e=>md(e,t,n),i=e=>typeof e==`number`||typeof e==`bigint`,a=([e],[t])=>{if(i(e)&&i(t))return e<t?-1:+(e>t);if(i(e)!==i(t))return i(e)?-1:1;let[n,a]=[r(e),r(t)];return n<a?-1:+(n>a)};return`map[${[...e].sort(a).map(([e,t])=>`${r(e)}:${r(t)}`).join(` `)}]`}function gd(e){if(typeof e!=`object`||!e||Array.isArray(e)||e instanceof Map||e instanceof Set)return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype}function _d(e){return{dot:e,root:e,parent:void 0,vars:new Map}}function vd(e,t){return{dot:t,root:e.root,parent:e,vars:new Map}}function yd(e,t){let n=e;for(;n!==void 0;){if(n.vars.has(t))return{found:!0,value:n.vars.get(t)};n=n.parent}return{found:!1}}function bd(e,t,n){e.vars.set(t,n)}const xd=new Set([`default`,`zero`,`error`]);function Sd(e){if(e===void 0)return`default`;if(xd.has(e))return e;throw Error(`EngineConfig.missingKey: expected "default" | "zero" | "error", got ${Cd(e)}`)}function Cd(e){return typeof e==`string`?JSON.stringify(e):e===null?`null`:e===void 0?`undefined`:typeof e==`bigint`?`${e}n`:typeof e==`number`||typeof e==`boolean`?String(e):typeof e==`symbol`?e.toString():typeof e==`function`?`[Function]`:`[${typeof e}]`}function wd(e){if(e!==void 0){if(typeof e!=`object`||!e)throw Error(`EngineConfig.delims: expected { left, right } object, got ${Cd(e)}`);if(typeof e.left!=`string`||e.left.length===0)throw Error(`EngineConfig.delims.left: expected non-empty string, got ${Cd(e.left)}`);if(typeof e.right!=`string`||e.right.length===0)throw Error(`EngineConfig.delims.right: expected non-empty string, got ${Cd(e.right)}`);return{left:e.left,right:e.right}}}const Td=Object.freeze({kind:`break`}),Ed=Object.freeze({kind:`continue`}),Dd={kind:`none`};let Od;(class e{source;_evaluate;_defines;_referencedFunctions;_referencedCalls;constructor(e,t,n,r,i){this.source=e,this._evaluate=t,this._defines=n,this._referencedFunctions=r,this._referencedCalls=i}static{Od=(t,n,r,i,a)=>new e(t,n,r,i,a)}defines(){return this._defines}evaluate(e){return this._evaluate(e)}referencedFunctions(){return this._referencedFunctions}referencedCalls(){return this._referencedCalls}});function kd(e){let t=new Set,n=e=>{Lu(e,e=>{e.type===`Identifier`&&t.add(e.ident)})};n(e.root);for(let t of e.ownDefines.values())n(t.list);return t}const Ad={kind:`dynamic`};function jd(e){switch(e.type){case`String`:return{kind:`literal`,value:e.value};case`Bool`:return{kind:`literal`,value:e.value};case`Nil`:return{kind:`literal`,value:null};case`Number`:{let t=Xd(e);return typeof t==`number`||typeof t==`bigint`?{kind:`literal`,value:t}:Ad}case`Pipe`:{if(e.decls.length!==0||e.cmds.length!==1)return Ad;let t=e.cmds[0];if(t===void 0)return Ad;let n=t.args[0];return n===void 0||n.type!==`Identifier`?Ad:{kind:`call`,name:n.ident,args:t.args.slice(1).map(jd)}}default:return Ad}}function Md(e){let t=[],n=e=>{Lu(e,e=>{if(e.type!==`Command`)return;let n=e.args[0];if(n===void 0||n.type!==`Identifier`)return;let r=e.args.slice(1).map(jd);t.push({name:n.ident,args:r.map(e=>e.kind===`literal`&&typeof e.value==`string`?e.value:null),argExprs:r})})};n(e.root);for(let t of e.ownDefines.values())n(t.list);return t}var Nd=class{fromString;toString;isT;funcs;missingKey;delims;constructor(e){this.fromString=e.fromString;let t=Object.hasOwn(e,`toString`)?e.toString:void 0;this.toString=t??Bd,this.isT=e.isT??Pd,this.missingKey=Sd(e.missingKey),this.delims=wd(e.delims),this.funcs={...Yu(this.toString,this.isT),...e.funcs??{}}}parse(e,t){let n=Cu(e,this.delims,t);return Od(n.source,e=>this.evalParsed(n,e),n.defines,kd(n),Md(n))}compile(e){let t=this.parse(e);return e=>t.evaluate(e)}evaluate(e,t){return e.evaluate(t)}evalParsed(e,t){let n=[],r=_d(t),i={out:n,defines:e.defines,source:e.source};return this.evalList(e.root,r,i),n}evalList(e,t,n){for(let r of e.nodes)this.evalNode(r,t,n)}evalNode(e,t,n){switch(e.type){case`Text`:n.out.push(this.fromString(e.text));return;case`Comment`:return;case`Action`:{let r=this.evalAction(e,t,n);e.pipe.decls.length===0&&this.emitFromValue(r,n);return}case`List`:this.evalList(e,t,n);return;case`If`:this.evalIf(e,t,n);return;case`Range`:this.evalRange(e,t,n);return;case`With`:this.evalWith(e,t,n);return;case`Break`:throw Td;case`Continue`:throw Ed;case`Template`:this.evalTemplateInvoke(e,t,n);return;case`Block`:this.evalBlock(e,t,n);return;case`Pipe`:case`Command`:case`Identifier`:case`Field`:case`Variable`:case`Chain`:case`Dot`:case`Nil`:case`Bool`:case`Number`:case`String`:throw new Ql(`unexpected ${e.type} at statement position`,e.pos,{source:n.source});default:ou(e)}}evalIf(e,t,n){Ku(this.evalPipe(e.pipe,t,n))?this.evalList(e.list,t,n):e.elseList&&this.evalList(e.elseList,t,n)}evalWith(e,t,n){let r=this.evalPipe(e.pipe,t,n);if(Ku(r)){let i=vd(t,r);this.evalList(e.list,i,n)}else e.elseList&&this.evalList(e.elseList,t,n)}evalRange(e,t,n){let r=this.evalPipeWithoutDecls(e.pipe,t,n),i=e.pipe.decls,a=qd(r);try{if(a.length===0){e.elseList&&this.evalList(e.elseList,t,n);return}for(let[r,o]of a){let a=vd(t,o);if(i.length===1)bd(a,i[0]?.idents[0]??`$`,o);else if(i.length>=2){let e=i[0]?.idents[0]??`$`,t=i[1]?.idents[0]??`$`;bd(a,e,r),bd(a,t,o)}try{this.evalList(e.list,a,n)}catch(e){if(e===Ed)continue;throw e}}}catch(e){if(e===Td)return;throw e}}evalTemplateInvoke(e,t,n){let r=xu(n.defines,e.name);if(!r)throw new Ql(`template ${JSON.stringify(e.name)} is not defined`,e.pos,{source:n.source});let i=vd(t,e.pipe?this.evalPipe(e.pipe,t,n):t.dot);this.evalList(r.list,i,{out:n.out,defines:n.defines,source:r.source})}evalBlock(e,t,n){let r=vd(t,e.pipe?this.evalPipe(e.pipe,t,n):t.dot),i=xu(n.defines,e.name)??{list:e.list,source:n.source};this.evalList(i.list,r,{out:n.out,defines:n.defines,source:i.source})}evalAction(e,t,n){return this.evalPipe(e.pipe,t,n)}evalPipe(e,t,n){if(e.cmds.length===0)throw new Ql(`empty pipeline`,e.pos,{source:n.source});let r=this.evalCommand(e.cmds[0],t,n,Dd);for(let i=1;i<e.cmds.length;i++){let a=e.cmds[i];r=this.evalCommand(a,t,n,{kind:`value`,value:r})}if(e.decls.length>0)for(let n of e.decls)bd(t,n.idents[0]??`$`,r);return r}evalPipeWithoutDecls(e,t,n){let r={type:`Pipe`,pos:e.pos,decls:[],isAssign:!1,cmds:e.cmds};return this.evalPipe(r,t,n)}evalCommand(e,t,n,r){if(e.args.length===0)throw new Ql(`empty command`,e.pos,{source:n.source});let i=e.args[0];if(i.type!==`Identifier`){if(e.args.length>1)throw new Ql(`cannot apply arguments to a ${i.type} primary; only functions take arguments`,e.pos,{source:n.source});return this.evalPrimary(i,t,n)}let a=this.funcs[i.ident];if(!a)throw new $l(i.ident,i.pos,{source:n.source,available:Object.keys(this.funcs)});let o=e.args.slice(1),s=Gu(a),c=o.map(e=>s?()=>this.evalPrimary(e,t,n):this.evalPrimary(e,t,n));if(r.kind===`value`){let e=r.value;c.push(s?()=>e:e)}Id(i.ident,a.argTypes,c,e.pos,n.source,this.toString,a.argTypePattern,this.fromString,this.isT);try{return a.fn(...c)}catch(t){throw t instanceof eu?new eu(t.funcName,t.argIndex,t.expected,t.receivedSummary,e.pos,{source:n.source}):t instanceof nu?new nu(t.message,e.pos,{source:n.source}):t}}evalPrimary(e,t,n){switch(e.type){case`Dot`:return t.dot;case`Nil`:return null;case`Bool`:return e.value;case`Number`:return Xd(e);case`String`:return e.value;case`Field`:return this.resolveFieldChain(t.dot,e.idents,e.pos,n);case`Variable`:return this.resolveVariable(e.idents,t,e.pos,n);case`Identifier`:{let t=this.funcs[e.ident];if(!t)throw new $l(e.ident,e.pos,{source:n.source,available:Object.keys(this.funcs)});return Id(e.ident,t.argTypes,[],e.pos,n.source,this.toString,t.argTypePattern,this.fromString,this.isT),t.fn()}case`Chain`:return this.resolveFieldChain(this.evalPrimary(e.node,t,n),e.fields,e.pos,n);case`Pipe`:return this.evalPipe(e,t,n);default:throw new Ql(`cannot evaluate ${e.type} as a value`,e.pos,{source:n.source})}}resolveFieldChain(e,t,n,r){let i=Vu(e,t);if(i!==zu)return i;if(this.missingKey===`error`)throw new tu(t,n,{source:r.source})}resolveVariable(e,t,n,r){let i=e[0]??`$`;if(i===`$`){let i=e.slice(1);return i.length===0?t.root:this.resolveFieldChain(t.root,i,n,r)}let a=yd(t,i);if(!a.found)throw new Ql(`undefined variable ${i}`,n,{source:r.source});let o=e.slice(1);return o.length===0?a.value:this.resolveFieldChain(a.value,o,n,r)}emitFromValue(e,t){if(e==null){t.out.push(this.fromString(`<no value>`));return}if(typeof e==`string`){t.out.push(this.fromString(e));return}if(typeof e==`number`||typeof e==`boolean`||typeof e==`bigint`){t.out.push(this.fromString(String(e)));return}if(this.isT(e)){t.out.push(e);return}t.out.push(this.fromString(md(e,this.toString,this.isT)))}};const Pd=e=>typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Map);function Fd(e){return new Nd(e)}function Id(e,t,n,r,i,a=Bd,o,s=zd,c=Pd){let l=Ld(t,o),u=-1,d=-1;for(let t=0;t<n.length;t++){let o=l(t),f=n[t];if(!Rd(o,f,a,c))throw new eu(e,t+1,Gd(o),Kd(f),r,{source:i});if(o===`liftable`&&typeof f==`string`&&(n[t]=s(f)),o===`int`?n[t]=Math.trunc(Number(f)):o===`float`&&(n[t]=Number(f)),o===`ordered`){if(u===-1)u=t;else if(!Hd(n[u],f))throw new eu(e,t+1,`${Gd(`ordered`)} of the same kind as ${Kd(n[u])}`,Kd(f),r,{source:i})}if(o===`comparable`){if(d===-1)d=t;else if(!Ud(n[d],f))throw new eu(e,t+1,`${Gd(`comparable`)} of the same kind as ${Kd(n[d])}`,Kd(f),r,{source:i})}}}function Ld(e,t){if(e.length===0)return()=>`value`;if(t===`alternating`){let t=e.length;return n=>e[n%t]}let n=e[e.length-1];return t=>t<e.length?e[t]:n}function Rd(e,t,n,r){switch(e){case`truthy`:case`reflective`:case`value`:return!0;case`string`:return typeof t==`string`;case`int`:return typeof t==`number`&&Number.isFinite(t)||typeof t==`bigint`&&Number.isSafeInteger(Number(t));case`float`:return typeof t==`number`||typeof t==`bigint`&&Number.isFinite(Number(t));case`bool`:return typeof t==`boolean`;case`ordered`:return typeof t==`string`||typeof t==`number`||typeof t==`bigint`||typeof t==`boolean`;case`T`:return r(t);case`list`:return Array.isArray(t);case`dict`:return gd(t);case`sized`:return typeof t==`string`||Array.isArray(t)||t instanceof Map||t instanceof Set||gd(t);case`comparable`:return t==null||typeof t==`string`||typeof t==`number`||typeof t==`bigint`||typeof t==`boolean`||Array.isArray(t)||t instanceof Map||t instanceof Set||gd(t);case`callable`:return typeof t==`function`;case`collection`:return typeof t==`string`||Array.isArray(t)||t instanceof Map||gd(t);case`index-key`:return typeof t==`string`||typeof t==`number`||typeof t==`bigint`;case`sliceable`:return typeof t==`string`||Array.isArray(t);case`stringifiable`:if(typeof t==`string`)return!0;try{return n(t),!0}catch{return!1}case`liftable`:return typeof t==`string`||r(t);case`serializable`:return Vd(t);default:throw Error(`invalid ArgType: ${String(e)}`)}}function zd(e){return e}function Bd(e){if(typeof e==`string`)return e;if(e==null)return`<nil>`;if(typeof e==`number`||typeof e==`bigint`||typeof e==`boolean`)return String(e);throw new eu(`<engine.toString>`,1,`string (or a consumer-supplied toString that flattens T)`,Kd(e),{line:0,column:0,offset:0})}function Vd(e){try{return JSON.stringify(e)!==void 0}catch{return!1}}function Hd(e,t){return typeof e==typeof t||typeof e==`number`&&typeof t==`bigint`||typeof e==`bigint`&&typeof t==`number`}function Ud(e,t){let n=Wd(e),r=Wd(t);return n===`nil`||r===`nil`?!0:n===r}function Wd(e){return e==null?`nil`:typeof e==`string`?`string`:typeof e==`number`||typeof e==`bigint`?`number`:typeof e==`boolean`?`boolean`:Array.isArray(e)?`array`:e instanceof Map?`map`:e instanceof Set?`set`:`object`}function Gd(e){switch(e){case`int`:return`integer (finite number or safe-integer bigint)`;case`float`:return`float (number, including NaN/Infinity, or finite-convertible bigint)`;case`T`:return`T (consumer-defined fragment)`;case`ordered`:return`orderable primitive`;case`list`:return`list`;case`dict`:return`dict (plain object)`;case`sized`:return`sized value (string, list, map, set, or dict)`;case`comparable`:return`comparable value (orderable primitive, nil, list, dict, Map, or Set)`;case`stringifiable`:return`stringifiable value (string or convertible via the engine's toString)`;case`liftable`:return`liftable value (T or string, the latter lifted via the engine's fromString)`;case`callable`:return`callable (function value)`;case`collection`:return`collection (string, array, Map, or dict)`;case`index-key`:return`index key (number, bigint, or string)`;case`sliceable`:return`sliceable value (string or array)`;case`serializable`:return`JSON-serializable value`;case`truthy`:case`reflective`:case`value`:case`string`:case`bool`:return e;default:throw Error(`invalid ArgType: ${String(e)}`)}}function Kd(e){return e===null?`null`:e===void 0?`undefined`:Array.isArray(e)?`array`:e instanceof Map?`Map`:typeof e}function qd(e){return e==null?[]:Array.isArray(e)?e.map((e,t)=>[t,e]):typeof e==`string`?[...e].map((e,t)=>[t,e]):e instanceof Map?Jd([...e.entries()]):e instanceof Set?[...e.values()].map((e,t)=>[t,e]):typeof e==`object`?Jd(Object.entries(e)):[]}function Jd(e){return[...e].sort((e,t)=>Yd(e[0],t[0]))}function Yd(e,t){if((typeof e==`number`||typeof e==`bigint`)&&(typeof t==`number`||typeof t==`bigint`)){let n=typeof e==`bigint`?Number(e):e,r=typeof t==`bigint`?Number(t):t;return n===r?0:n<r?-1:1}let n=String(e),r=String(t);return n===r?0:n<r?-1:1}function Xd(e){if(e.intValue!==void 0){let t=e.intValue;return t>=BigInt(-(2**53-1))&&t<=BigInt(2**53-1)?Number(t):t}if(e.floatValue!==void 0)return e.floatValue;if(e.complexValue!==void 0)return e.complexValue;throw Error(`internal: NumberNode has none of intValue/floatValue/complexValue — parser invariant violated`)}function Zd(e){if(!/^[+-]?\d+$/.test(e))return 0;let t=Number.parseInt(e,10);return Number.isSafeInteger(t)?t:0}function Qd(e){if(typeof e==`number`)return e;if(typeof e==`bigint`)return Number(e);if(typeof e==`string`){let t=Number.parseFloat(e);return Number.isNaN(t)?0:t}return typeof e==`boolean`?+!!e:0}function $d(e){if(e===``)return null;let t=1,n=e;return n[0]===`+`?n=n.slice(1):n[0]===`-`&&(t=-1,n=n.slice(1)),n===``?null:/^0x[0-9a-fA-F]+$/i.test(n)?{sign:t,digits:n.slice(2),base:16}:/^0b[01]+$/i.test(n)?{sign:t,digits:n.slice(2),base:2}:/^0o[0-7]+$/i.test(n)?{sign:t,digits:n.slice(2),base:8}:n===`0`?{sign:t,digits:`0`,base:10}:n[0]===`0`?/^0[0-7]+$/.test(n)?{sign:t,digits:n.slice(1),base:8}:null:/^[0-9]+$/.test(n)?{sign:t,digits:n,base:10}:null}function ef(e){if(typeof e==`number`){let t=Math.trunc(e);return Number.isSafeInteger(t)?t:0}if(typeof e==`bigint`){let t=Number(e);return Number.isSafeInteger(t)?t:0}if(typeof e==`string`){let t=$d(e);if(t===null)return 0;let n=t.sign*Number.parseInt(t.digits,t.base);return Number.isSafeInteger(n)?n:0}return typeof e==`boolean`?+!!e:0}function tf(e){if(typeof e==`bigint`)return e;if(typeof e==`number`)return BigInt(Math.trunc(e));if(typeof e==`string`){let t=$d(e);if(t===null)return 0n;let n=t.base===16?`0x`:t.base===2?`0b`:t.base===8?`0o`:``,r=BigInt(n+t.digits);return t.sign===-1?-r:r}return typeof e==`boolean`&&e?1n:0n}function nf(e){if(!/^[+-]?[0-7]+$/.test(e))return 0;let t=e[0]===`-`?-1:1,n=e[0]===`+`||e[0]===`-`?e.slice(1):e,r=t*Number.parseInt(n,8);return Number.isSafeInteger(r)?r:0}function rf(e){return JSON.stringify(e)??`null`}function af(){return{atoi:{fn:e=>Zd(e),argTypes:[`string`],returnType:`int`},int:{fn:e=>ef(e),argTypes:[`value`],returnType:`int`},int64:{fn:e=>tf(e),argTypes:[`value`]},float64:{fn:e=>Qd(e),argTypes:[`value`],returnType:`float`},toDecimal:{fn:e=>nf(e),argTypes:[`string`],returnType:`int`},toRawJson:{fn:e=>rf(e),argTypes:[`serializable`],returnType:`string`}}}const of={h:36e11,m:6e10,s:1e9,ms:1e6,us:1e3,µs:1e3,ns:1};function sf(e){if(e===`0`)return 0;let t=!1,n=e;if(n.startsWith(`-`)?(t=!0,n=n.slice(1)):n.startsWith(`+`)&&(n=n.slice(1)),!n)return NaN;let r=0,i=/^(\d+(?:\.\d+)?)(ns|µs|us|ms|[smh])/;for(;n.length>0;){let e=i.exec(n);if(!e)return NaN;let t=parseFloat(e[1]??`0`),a=e[2];r+=t*of[a],n=n.slice(e[0].length)}return t?-r:r}function cf(e){if(e===0)return`0s`;let t=!1,n=e;n<0&&(t=!0,n=-n);let r;return r=n<of.us?`${Math.floor(n)}ns`:n<of.ms?lf(n,of.us,3,`µs`):n<of.s?lf(n,of.ms,6,`ms`):uf(n),t?`-${r}`:r}function lf(e,t,n,r){let i=Math.floor(e/t),a=Math.round(e%t);return a===0?`${i}${r}`:`${i}.${String(a).padStart(n,`0`).replace(/0+$/,``)}${r}`}function uf(e){let t=Math.floor(e/of.h);e-=t*of.h;let n=Math.floor(e/of.m);e-=n*of.m;let r=Math.floor(e/of.s),i=e-r*of.s,a=i===0?`${r}s`:`${r}.${String(Math.round(i)).padStart(9,`0`).replace(/0+$/,``)}s`;return t>0?`${t}h${n}m${a}`:n>0?`${n}m${a}`:a}function df(e){return e*of.s}function ff(e){if(e instanceof Date)return e;if(typeof e==`bigint`)return new Date(Number(e)*1e3);if(typeof e==`number`)return new Date(e*1e3);if(typeof e==`string`){let t=new Date(e);if(!Number.isNaN(t.getTime()))return t;throw Error(`sprig: cannot parse date value ${JSON.stringify(e)}`)}throw Error(`sprig: unsupported date type: ${typeof e}`)}function pf(e,t){let n=t().getTime()-ff(e).getTime();return cf(Math.round(n/1e3)*1e9)}const mf=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],hf=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],gf=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],_f=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`];function vf(e){return e<10?`0${e}`:String(e)}function yf(e){return e<10?`00${e}`:e<100?`0${e}`:String(e)}function bf(e){return e<10?` ${e}`:String(e)}function xf(e){let t=e>=0?`+`:`-`,n=Math.abs(e);return`${t}${vf(Math.floor(n/60))}${vf(n%60)}`}function Sf(e){let t=e>=0?`+`:`-`,n=Math.abs(e);return`${t}${vf(Math.floor(n/60))}:${vf(n%60)}`}function Cf(e){return`${e>=0?`+`:`-`}${vf(Math.floor(Math.abs(e)/60))}`}function wf(e){return e===0?`Z`:xf(e)}function Tf(e){return e===0?`Z`:Sf(e)}function Ef(e){return e===0?`Z`:Cf(e)}function Df(e,t,n){let r=e*1e6,i=String(r).padStart(9,`0`).slice(0,t);return n?i.replace(/0+$/,``):i}const Of=[[`.000000000`,e=>`.${Df(e.ms,9,!1)}`],[`.999999999`,e=>{let t=Df(e.ms,9,!0);return t?`.${t}`:``}],[`.000000`,e=>`.${Df(e.ms,6,!1)}`],[`.999999`,e=>{let t=Df(e.ms,6,!0);return t?`.${t}`:``}],[`.000`,e=>`.${yf(e.ms)}`],[`.999`,e=>{let t=yf(e.ms).replace(/0+$/,``);return t?`.${t}`:``}],[`January`,e=>mf[e.month-1]??`January`],[`Monday`,e=>gf[e.weekday]??`Monday`],[`Z07:00`,e=>Tf(e.offsetMinutes)],[`-07:00`,e=>Sf(e.offsetMinutes)],[`Z0700`,e=>wf(e.offsetMinutes)],[`-0700`,e=>xf(e.offsetMinutes)],[`2006`,e=>String(e.year)],[`Jan`,e=>hf[e.month-1]??`Jan`],[`Mon`,e=>_f[e.weekday]??`Mon`],[`MST`,e=>e.tzAbbr],[`-07`,e=>Cf(e.offsetMinutes)],[`Z07`,e=>Ef(e.offsetMinutes)],[`15`,e=>vf(e.hour)],[`01`,e=>vf(e.month)],[`02`,e=>vf(e.day)],[`_2`,e=>bf(e.day)],[`03`,e=>vf(e.hour12)],[`04`,e=>vf(e.minute)],[`05`,e=>vf(e.second)],[`06`,e=>vf(e.year%100)],[`PM`,e=>e.hour>=12?`PM`:`AM`],[`pm`,e=>e.hour>=12?`pm`:`am`],[`1`,e=>String(e.month)],[`2`,e=>String(e.day)],[`3`,e=>String(e.hour12)],[`4`,e=>String(e.minute)],[`5`,e=>String(e.second)]];function kf(e,t){let n=``,r=0;for(;r<e.length;){let i=!1;for(let[a,o]of Of)if(e.startsWith(a,r)){n+=o(t),r+=a.length,i=!0;break}i||(n+=e[r++])}return n}const Af={year:`numeric`,month:`2-digit`,day:`2-digit`,weekday:`long`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hour12:!1};function jf(e){let t=new Map;for(let n of e)t.set(n.type,n.value);return t}const Mf=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`];function Nf(e,t){let n;try{new Intl.DateTimeFormat(`en-US`,{timeZone:t}),n=t}catch{n=`UTC`}let r=jf(new Intl.DateTimeFormat(`en-US`,{...Af,timeZone:n}).formatToParts(e)),i=parseInt(r.get(`hour`)??`0`,10)%24,a=jf(new Intl.DateTimeFormat(`en-US`,{timeZone:n,timeZoneName:`short`}).formatToParts(e)).get(`timeZoneName`)??n,o=Pf(jf(new Intl.DateTimeFormat(`en-US`,{timeZone:n,timeZoneName:`shortOffset`}).formatToParts(e)).get(`timeZoneName`)??`GMT`),s=Mf.indexOf(r.get(`weekday`)??`Sunday`);return{year:parseInt(r.get(`year`)??`2000`,10),month:parseInt(r.get(`month`)??`1`,10),day:parseInt(r.get(`day`)??`1`,10),weekday:s===-1?0:s,hour:i,hour12:i%12||12,minute:parseInt(r.get(`minute`)??`0`,10),second:parseInt(r.get(`second`)??`0`,10),ms:e.getUTCMilliseconds(),tzAbbr:a,offsetMinutes:o}}function Pf(e){if(e===`GMT`||e===`UTC`)return 0;let t=e.match(/^GMT([+-])(\d{1,2})(?::(\d{2}))?$/);if(!t)return 0;let n=t[1]===`+`?1:-1,r=parseInt(t[2]??`0`,10),i=parseInt(t[3]??`0`,10);return n*(r*60+i)}function Ff(){return Intl.DateTimeFormat().resolvedOptions().timeZone}function If(e,t){return kf(e,Nf(ff(t),Ff()))}function Lf(e,t,n){return kf(e,Nf(ff(t),n))}function Rf(e,t){let n=ff(t),r=sf(e);return Number.isNaN(r)?n:new Date(n.getTime()+r/1e6)}function zf(e){if(typeof e==`string`){let t=parseInt(e,10);return Number.isNaN(t)?`0s`:cf(df(t))}return typeof e==`bigint`?cf(df(Number(e))):typeof e==`number`?cf(df(e)):`0s`}const Bf=36e11*24*365,Vf=36e11*24*30,Hf=36e11*24,Uf=36e11,Wf=6e10,Gf=1e9;function Kf(e){let t=sf(String(e));if(Number.isNaN(t))return`0s`;let n=Math.abs(t);return n>Bf?`${Math.floor(n/Bf)}y`:n>Vf?`${Math.floor(n/Vf)}mo`:n>Hf?`${Math.floor(n/Hf)}d`:n>Uf?`${Math.floor(n/Uf)}h`:n>Wf?`${Math.floor(n/Wf)}m`:n>Gf?`${Math.floor(n/Gf)}s`:`0s`}function qf(e){let t=Nf(ff(e),Ff());return`${t.year}-${String(t.month).padStart(2,`0`)}-${String(t.day).padStart(2,`0`)}`}function Jf(e,t){let n=Nf(ff(e),t);return`${n.year}-${String(n.month).padStart(2,`0`)}-${String(n.day).padStart(2,`0`)}`}function Yf(e){return e()}const Xf=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],Zf=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`];function Qf(){return{year:2e3,month:1,day:1,hour:0,minute:0,second:0,ms:0,offsetMinutes:0,isPM:!1,hour12:!1}}function $f(e,t,n){return[e.slice(t,t+n),t+n]}function ep(e,t,n,r){let i=t;for(;i<e.length&&i-t<r&&e.charCodeAt(i)>=48&&e.charCodeAt(i)<=57;)i++;if(i-t<n)throw Error(`sprig toDate: expected ${n}-${r} digits at pos ${t}`);return[parseInt(e.slice(t,i),10),i]}function tp(e,t){for(let[n,r]of Xf.entries())if(e.startsWith(r,t))return[n+1,t+r.length];throw Error(`sprig toDate: expected month name at pos ${t}`)}function np(e,t){for(let[n,r]of Zf.entries())if(e.startsWith(r,t))return[n+1,t+r.length];throw Error(`sprig toDate: expected short month name at pos ${t}`)}function rp(e,t){for(let n of[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`])if(e.startsWith(n,t))return t+n.length;throw Error(`sprig toDate: expected weekday name at pos ${t}`)}function ip(e,t){for(let n of[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`])if(e.startsWith(n,t))return t+n.length;throw Error(`sprig toDate: expected short weekday name at pos ${t}`)}function ap(e,t){if(e[t]===` `){let[n,r]=ep(e,t+1,1,1);return[n,r]}return ep(e,t,1,2)}function op(e,t,n){let r=e[t]===`+`?1:e[t]===`-`?-1:0;if(r===0)throw Error(`sprig toDate: expected +/- at pos ${t}`);let i=t+1,[a,o]=ep(e,i,2,2);i=o;let s=0;if(n&&e[i]===`:`){let[t,n]=ep(e,i+1,2,2);s=t,i=n}else if(!n){let[t,n]=ep(e,i,2,2);s=t,i=n}return[r*(a*60+s),i]}function sp(e,t,n,r){if(e[t]===`Z`)return[0,t+1];if(r){let n=e[t]===`+`?1:e[t]===`-`?-1:0;if(n===0)throw Error(`sprig toDate: expected Z or +/- at pos ${t}`);let[r,i]=ep(e,t+1,2,2);return[n*r*60,i]}return op(e,t,n)}function cp(e,t){let n=t;for(;n<e.length&&e.charCodeAt(n)>=65&&e.charCodeAt(n)<=90;)n++;if(n===t)throw Error(`sprig toDate: expected timezone abbreviation at pos ${t}`);return n}function lp(e,t,n){let[r,i]=$f(e,t,n),a=parseInt(r.padEnd(9,`0`),10);return[Math.round(a/1e6),i]}function up(e,t,n,r){let i={...r};switch(e){case`January`:{let[e,r]=tp(t,n);return i.month=e,[r,i]}case`Monday`:return[rp(t,n),i];case`Jan`:{let[e,r]=np(t,n);return i.month=e,[r,i]}case`Mon`:return[ip(t,n),i];case`2006`:{let[e,r]=ep(t,n,4,4);return i.year=e,[r,i]}case`06`:{let[e,r]=ep(t,n,2,2);return i.year=e<70?2e3+e:1900+e,[r,i]}case`01`:{let[e,r]=ep(t,n,2,2);return i.month=e,[r,i]}case`1`:{let[e,r]=ep(t,n,1,2);return i.month=e,[r,i]}case`_2`:{let[e,r]=ap(t,n);return i.day=e,[r,i]}case`02`:{let[e,r]=ep(t,n,2,2);return i.day=e,[r,i]}case`2`:{let[e,r]=ep(t,n,1,2);return i.day=e,[r,i]}case`15`:{let[e,r]=ep(t,n,2,2);return i.hour=e,[r,i]}case`03`:{let[e,r]=ep(t,n,2,2);return i.hour=e,i.hour12=!0,[r,i]}case`3`:{let[e,r]=ep(t,n,1,2);return i.hour=e,i.hour12=!0,[r,i]}case`04`:{let[e,r]=ep(t,n,2,2);return i.minute=e,[r,i]}case`4`:{let[e,r]=ep(t,n,1,2);return i.minute=e,[r,i]}case`05`:{let[e,r]=ep(t,n,2,2);return i.second=e,[r,i]}case`5`:{let[e,r]=ep(t,n,1,2);return i.second=e,[r,i]}case`PM`:case`pm`:{let e=t.slice(n,n+2).toLowerCase();if(e!==`am`&&e!==`pm`)throw Error(`sprig toDate: expected AM/PM at pos ${n}, got ${JSON.stringify(t.slice(n,n+2))}`);return i.isPM=e===`pm`,i.hour12=!0,[n+2,i]}case`MST`:return[cp(t,n),i];case`-0700`:{let[e,r]=op(t,n,!1);return i.offsetMinutes=e,[r,i]}case`-07:00`:{let[e,r]=op(t,n,!0);return i.offsetMinutes=e,[r,i]}case`-07`:{let e=t[n]===`+`?1:t[n]===`-`?-1:0;if(e===0)throw Error(`sprig toDate: expected +/- at pos ${n}`);let[r,a]=ep(t,n+1,2,2);return i.offsetMinutes=e*r*60,[a,i]}case`Z0700`:{let[e,r]=sp(t,n,!1,!1);return i.offsetMinutes=e,[r,i]}case`Z07:00`:{let[e,r]=sp(t,n,!0,!1);return i.offsetMinutes=e,[r,i]}case`Z07`:{let[e,r]=sp(t,n,!1,!0);return i.offsetMinutes=e,[r,i]}case`.000000000`:{if(t[n]!==`.`)throw Error(`sprig toDate: expected . at pos ${n}`);let[e,r]=lp(t,n+1,9);return i.ms=e,[r,i]}case`.999999999`:{if(t[n]!==`.`)return[n,i];let e=n+1,r=e;for(;r<t.length&&t.charCodeAt(r)>=48&&t.charCodeAt(r)<=57;)r++;let a=t.slice(e,r).padEnd(9,`0`);return i.ms=Math.round(parseInt(a,10)/1e6),[r,i]}case`.000000`:{if(t[n]!==`.`)throw Error(`sprig toDate: expected . at pos ${n}`);let[e,r]=lp(t,n+1,6);return i.ms=e,[r,i]}case`.999999`:{if(t[n]!==`.`)return[n,i];let e=n+1,r=e;for(;r<t.length&&t.charCodeAt(r)>=48&&t.charCodeAt(r)<=57;)r++;let a=t.slice(e,r).padEnd(9,`0`);return i.ms=Math.round(parseInt(a,10)/1e6),[r,i]}case`.000`:{if(t[n]!==`.`)throw Error(`sprig toDate: expected . at pos ${n}`);let[e,r]=lp(t,n+1,3);return i.ms=e,[r,i]}case`.999`:{if(t[n]!==`.`)return[n,i];let e=n+1,r=e;for(;r<t.length&&t.charCodeAt(r)>=48&&t.charCodeAt(r)<=57;)r++;let a=t.slice(e,r).padEnd(3,`0`);return i.ms=parseInt(a,10),[r,i]}}throw Error(`sprig toDate: unhandled token ${e}`)}const dp=`.000000000,.999999999,.000000,.999999,.000,.999,January,Monday,Z07:00,-07:00,Z0700,-0700,2006,Jan,Mon,MST,-07,Z07,15,01,02,_2,03,04,05,06,PM,pm,1,2,3,4,5`.split(`,`);function fp(e,t){let n=0,r=0,i=Qf();for(;n<e.length;){let a=!1;for(let o of dp)if(e.startsWith(o,n)){let[e,s]=up(o,t,r,i);r=e,i=s,n+=o.length,a=!0;break}if(!a){let i=e.charAt(n);if(t[r]!==i)throw Error(`sprig toDate: expected ${JSON.stringify(i)} at pos ${r}, got ${JSON.stringify(t[r])}`);n++,r++}}if(r!==t.length)throw Error(`sprig toDate: extra characters at pos ${r}: ${JSON.stringify(t.slice(r))}`);if(i.hour12){let e=i.hour%12;i.hour=i.isPM?e+12:e}let a=Date.UTC(i.year,i.month-1,i.day,i.hour,i.minute,i.second,i.ms)-i.offsetMinutes*60*1e3;return new Date(a)}function pp(e,t){return fp(e,t)}function mp(e){return String(Math.floor(ff(e).getTime()/1e3))}function hp(e=()=>new Date){return{now:{fn:()=>Yf(e),argTypes:[]},date:{fn:(e,t)=>If(e,t),argTypes:[`string`,`value`]},dateInZone:{fn:(e,t,n)=>Lf(e,t,n),argTypes:[`string`,`value`,`string`]},dateModify:{fn:(e,t)=>Rf(e,t),argTypes:[`string`,`value`]},htmlDate:{fn:e=>qf(e),argTypes:[`value`]},htmlDateInZone:{fn:(e,t)=>Jf(e,t),argTypes:[`value`,`string`]},duration:{fn:e=>zf(e),argTypes:[`value`]},durationRound:{fn:e=>Kf(e),argTypes:[`value`]},toDate:{fn:(e,t)=>pp(e,t),argTypes:[`string`,`string`]},ago:{fn:t=>pf(t,e),argTypes:[`value`]},unixEpoch:{fn:e=>mp(e),argTypes:[`value`]}}}function gp(e){return e==null||e===!1?!0:typeof e==`number`?e===0||Number.isNaN(e):typeof e==`bigint`?e===0n:typeof e==`string`||Array.isArray(e)?e.length===0:e instanceof Map||e instanceof Set?e.size===0:typeof e==`object`?Object.keys(e).length===0:!1}function _p(...e){for(let t of e)if(!gp(t))return t}function vp(e,t){return gp(t)?e:t}function yp(e){return JSON.parse(e)}function bp(e,t,n){return Ku(n)?e:t}function xp(e){return JSON.stringify(e)??`null`}function Sp(e){return JSON.stringify(e,null,2)??`null`}function Cp(){return{default:{fn:(e,t)=>vp(e,t),argTypes:[`value`,`truthy`]},empty:{fn:e=>gp(e),argTypes:[`truthy`]},coalesce:{fn:(...e)=>_p(...e),argTypes:[`truthy`]},ternary:{fn:(e,t,n)=>bp(e,t,n),argTypes:[`value`,`value`,`truthy`]},fromJson:{fn:e=>yp(e),argTypes:[`string`]},toJson:{fn:e=>xp(e),argTypes:[`serializable`],returnType:`string`},toPrettyJson:{fn:e=>Sp(e),argTypes:[`serializable`],returnType:`string`}}}function wp(...e){let t={};for(let n=0;n<e.length;n+=2)t[e[n]]=e[n+1];return t}function Tp(e){if(e.kind!==`call`||e.name!==`dict`||e.args.length%2!=0)return null;let t=[];for(let[n,r]of e.args.entries()){if(r.kind!==`literal`||n%2==0&&typeof r.value!=`string`)return null;t.push(r.value)}return wp(...t)}function Ep(e,t){return e[t]}function Dp(e,t){return t in e}function Op(e){return Object.keys(e)}function kp(e,...t){let n={...e};for(let e of t)for(let[t,r]of Object.entries(e))t in n||(n[t]=r);return n}function Ap(e,...t){let n={...e};for(let e of t)Object.assign(n,e);return n}function jp(e,...t){let n=new Set(t),r={};for(let[t,i]of Object.entries(e))n.has(t)||(r[t]=i);return r}function Mp(e,...t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function Np(e,...t){let n=[];for(let r of t)e in r&&n.push(r[e]);return n}function Pp(e,t,n){return e[t]=n,e}function Fp(e,t){return delete e[t],e}function Ip(e){return Object.values(e)}function Lp(){return{dict:{fn:(...e)=>wp(...e),argTypes:[`string`,`value`],argTypePattern:`alternating`},get:{fn:(e,t)=>Ep(e,t),argTypes:[`dict`,`string`]},set:{fn:(e,t,n)=>Pp(e,t,n),argTypes:[`dict`,`string`,`value`]},unset:{fn:(e,t)=>Fp(e,t),argTypes:[`dict`,`string`]},keys:{fn:e=>Op(e),argTypes:[`dict`]},values:{fn:e=>Ip(e),argTypes:[`dict`]},pluck:{fn:(e,...t)=>Np(e,...t),argTypes:[`string`,`dict`]},pick:{fn:(e,...t)=>Mp(e,...t),argTypes:[`dict`,`string`]},omit:{fn:(e,...t)=>jp(e,...t),argTypes:[`dict`,`string`]},hasKey:{fn:(e,t)=>Dp(e,t),argTypes:[`dict`,`string`]},merge:{fn:(e,...t)=>kp(e,...t),argTypes:[`dict`]},mergeOverwrite:{fn:(e,...t)=>Ap(e,...t),argTypes:[`dict`]}}}new TextEncoder,new Map(Array.from(`ABCDEFGHIJKLMNOPQRSTUVWXYZ234567`).map((e,t)=>[e,t])),new TextDecoder,new TextEncoder,new TextDecoder,new TextEncoder;function Rp(...e){for(let t of e)if(gp(t))return!1;return!0}function zp(...e){for(let t of e)if(!gp(t))return!0;return!1}function Bp(e,t){return[...e,t]}function Vp(e,t){let n=Math.max(1,e),r=[];for(let e=0;e<t.length;e+=n)r.push(t.slice(e,e+n));return r}function Hp(e){return e.filter(e=>!gp(e))}function Up(...e){let t=[];for(let n of e)t.push(...n);return t}const Wp={line:0,column:0,offset:0};function Gp(e,t,n,r){return new eu(e,t,n,r,Wp)}function Kp(...e){if(e.length<3)throw Gp(`dig`,0,`at least 3 arguments (...keys, default, dict)`,`${e.length} argument${e.length===1?``:`s`}`);let t=e[e.length-1],n=e[e.length-2],r=e.slice(0,-2);if(!Jp(t))throw Gp(`dig`,e.length-1,`dict`,Yp(t));for(let e=0;e<r.length;e++)if(typeof r[e]!=`string`)throw Gp(`dig`,e,`string`,Yp(r[e]));return qp(t,n,r,e.length)}function qp(e,t,n,r){let i=n[0];if(!Object.hasOwn(e,i))return t;let a=e[i];if(n.length===1)return a;if(!Jp(a))throw Gp(`dig`,r-1,`dict at intermediate key`,Yp(a));return qp(a,t,n.slice(1),r)}function Jp(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Map)&&!(e instanceof Set)}function Yp(e){return e===null?`null`:Array.isArray(e)?`array`:e instanceof Map?`Map`:e instanceof Set?`Set`:typeof e}function Xp(e){return e[0]}function Zp(e,t){return t.some(t=>Hu(t,e))}function Qp(e){return e.slice(0,-1)}function $p(e){return e[e.length-1]}function em(e){return Array.isArray(e)||typeof e==`string`?e.length:e instanceof Map||e instanceof Set?e.size:Object.keys(e).length}function tm(...e){return e}function nm(e,t){return[t,...e]}function rm(e){return e.slice(1)}function im(e){return[...e].reverse()}function am(e,t,n){let r=t===void 0?0:t,i=n===void 0?e.length:n;return e.slice(r,i)}function om(e){let t=[];for(let n of e)n!=null&&t.push(String(n));return t.sort()}function sm(e){let t=[];for(let n of e)t.some(e=>Hu(e,n))||t.push(n);return t}function cm(e,...t){return e.filter(e=>!t.some(t=>Hu(t,e)))}function lm(){return{list:{fn:(...e)=>tm(...e),argTypes:[`value`]},first:{fn:e=>Xp(e),argTypes:[`list`]},last:{fn:e=>$p(e),argTypes:[`list`]},rest:{fn:e=>rm(e),argTypes:[`list`]},initial:{fn:e=>Qp(e),argTypes:[`list`]},len:{fn:e=>em(e),argTypes:[`sized`]},reverse:{fn:e=>im(e),argTypes:[`list`]},uniq:{fn:e=>sm(e),argTypes:[`list`]},without:{fn:(e,...t)=>cm(e,...t),argTypes:[`list`,`value`]},has:{fn:(e,t)=>Zp(e,t),argTypes:[`value`,`list`]},compact:{fn:e=>Hp(e),argTypes:[`list`]},slice:{fn:(e,t,n)=>am(e,t,n),argTypes:[`list`,`int`,`int`]},concat:{fn:(...e)=>Up(...e),argTypes:[`list`]},chunk:{fn:(e,t)=>Vp(e,t),argTypes:[`int`,`list`]},prepend:{fn:(e,t)=>nm(e,t),argTypes:[`list`,`value`]},append:{fn:(e,t)=>Bp(e,t),argTypes:[`list`,`value`]},sortAlpha:{fn:e=>om(e),argTypes:[`list`],returnType:`list`},push:{fn:(e,t)=>Bp(e,t),argTypes:[`list`,`value`]},tuple:{fn:(...e)=>tm(...e),argTypes:[`value`]},dig:{fn:(...e)=>Kp(...e),argTypes:[`value`]},all:{fn:(...e)=>Rp(...e),argTypes:[`truthy`],returnType:`bool`},any:{fn:(...e)=>zp(...e),argTypes:[`truthy`],returnType:`bool`}}}function um(...e){return e.reduce((e,t)=>e+t,0)}function dm(e){return e+1}function fm(e){return e+1}function pm(...e){return e.reduce((e,t)=>e+t,0)}function mm(e){return Math.ceil(e)}function hm(e,t){return Math.trunc(e/t)}function gm(e,t){return e/t}function _m(e){return Math.floor(e)}function vm(...e){return e.reduce((e,t)=>t>e?t:e,-1/0)}function ym(...e){return e.reduce((e,t)=>Math.max(e,t),-1/0)}function bm(...e){return e.reduce((e,t)=>t<e?t:e,1/0)}function xm(...e){return e.reduce((e,t)=>Math.min(e,t),1/0)}function Sm(e,t){return e%t}function Cm(...e){return e.reduce((e,t)=>e*t,1)}function wm(...e){return e.reduce((e,t)=>e*t,1)}function Tm(e,t=0){let n=10**t;return Math.sign(e)*Math.round(Math.abs(e)*n)/n}function Em(e,t,n){let r=[];if(t<e){if(n>=0)return r;for(let i=e;i>t;i+=n)r.push(i);return r}if(n<=0)return r;for(let i=e;i<t;i+=n)r.push(i);return r}function Dm(...e){let t=1;switch(e.length){case 0:return``;case 1:{let n=e[0];return n<1&&(t=-1),Em(1,n+t,t).join(` `)}case 2:{let t=e[0],n=e[1],r=n<t?-1:1;return Em(t,n+r,r).join(` `)}case 3:{let n=e[0],r=e[1],i=e[2];return i<n&&(t=-1,r>0)?``:Em(n,i+t,r).join(` `)}default:return``}}function Om(e,t){return e-t}function km(e,t){return e-t}function Am(e){return Em(0,e,e<0?-1:1)}function jm(){return{add:{fn:(...e)=>um(...e),argTypes:[`int`]},sub:{fn:(e,t)=>Om(e,t),argTypes:[`int`,`int`]},mul:{fn:(...e)=>Cm(...e),argTypes:[`int`]},div:{fn:(e,t)=>hm(e,t),argTypes:[`int`,`int`]},mod:{fn:(e,t)=>Sm(e,t),argTypes:[`int`,`int`]},min:{fn:(...e)=>bm(...e),argTypes:[`int`]},max:{fn:(...e)=>vm(...e),argTypes:[`int`]},floor:{fn:e=>_m(e),argTypes:[`float`]},ceil:{fn:e=>mm(e),argTypes:[`float`]},round:{fn:(e,t)=>Tm(e,t),argTypes:[`float`,`int`]},addf:{fn:(...e)=>pm(...e),argTypes:[`float`]},subf:{fn:(e,t)=>km(e,t),argTypes:[`float`,`float`]},mulf:{fn:(...e)=>wm(...e),argTypes:[`float`]},divf:{fn:(e,t)=>gm(e,t),argTypes:[`float`,`float`]},add1:{fn:e=>dm(e),argTypes:[`int`]},add1f:{fn:e=>fm(e),argTypes:[`float`]},maxf:{fn:(...e)=>ym(...e),argTypes:[`float`]},minf:{fn:(...e)=>xm(...e),argTypes:[`float`]},biggest:{fn:(...e)=>vm(...e),argTypes:[`int`]},seq:{fn:(...e)=>Dm(...e),argTypes:[`int`],returnType:`string`},until:{fn:e=>Am(e),argTypes:[`int`],returnType:`list`},untilStep:{fn:(e,t,n)=>Em(e,t,n),argTypes:[`int`,`int`,`int`],returnType:`list`}}}Array.from({length:95},(e,t)=>String.fromCharCode(t+32)).join(``);function Mm(e,t){return t.length<=e||e<4?t:`${t.slice(0,e-3)}...`}function Nm(e,t,n){return t<7||n.length<t||e<0||e>n.length-t+1?n:`...${n.slice(e,e+t-6)}...`}const q={Invalid:0,Number:1,UpperCase:2,Alphabet:3,Connector:4,Punct:5,Other:6},Pm=/^[-_\s]$/,Fm=/^\p{P}$/u,Im=/^\p{L}$/u,Lm=/^\p{Lu}$/u,Rm=/^\p{N}$/u;function zm(e){return e!==void 0&&Pm.test(e)}function Bm(e){return e!==void 0&&Im.test(e)}function Vm(e){return e!==void 0&&Lm.test(e)}function Hm(e){return e!==void 0&&Rm.test(e)}function Um(e){return e!==void 0&&Fm.test(e)}function Wm(e,t){if(t>=e.length)return{word:{wt:q.Invalid,text:``},next:t};let n=e[t],r=t+1;if(zm(n)){for(;r<e.length&&zm(e[r]);)r++;return{word:{wt:q.Connector,text:e.slice(t,r).join(``)},next:r}}if(Um(n)){for(;r<e.length&&Um(e[r]);)r++;return{word:{wt:q.Punct,text:e.slice(t,r).join(``)},next:r}}if(Vm(n)){if(r>=e.length)return{word:{wt:q.UpperCase,text:n},next:r};if(Vm(e[r])){let n=r;for(;n<e.length&&Vm(e[n]);)n++;return n<e.length&&Bm(e[n])?{word:{wt:q.UpperCase,text:e.slice(t,n-1).join(``)},next:n-1}:{word:{wt:q.UpperCase,text:e.slice(t,n).join(``)},next:n}}if(Bm(e[r])){let n=r+1;for(;n<e.length&&Bm(e[n])&&!Vm(e[n]);)n++;return{word:{wt:q.UpperCase,text:e.slice(t,n).join(``)},next:n}}return{word:{wt:q.UpperCase,text:n},next:r}}if(Bm(n)){for(;r<e.length&&Bm(e[r])&&!Vm(e[r]);)r++;return{word:{wt:q.Alphabet,text:e.slice(t,r).join(``)},next:r}}if(Hm(n)){for(;r<e.length&&Hm(e[r]);)r++;return{word:{wt:q.Number,text:e.slice(t,r).join(``)},next:r}}for(;r<e.length&&!zm(e[r])&&!Bm(e[r])&&!Hm(e[r])&&!Um(e[r]);)r++;return{word:{wt:q.Other,text:e.slice(t,r).join(``)},next:r}}function Gm(e,t,n){if(t.wt!==q.UpperCase&&t.wt!==q.Connector){e.push(t.text);return}for(let r of t.text)zm(r)?e.push(n):Vm(r)?e.push(r.toLowerCase()):e.push(r)}function Km(e,t){if(e.length===0)return``;let n=Array.from(e),r=[],{word:i,next:a}=Wm(n,0);for(;a<n.length;){i.wt!==q.Connector&&Gm(r,i,t);let e=i,o=i;if({word:i,next:a}=Wm(n,a),e.wt===q.Number){for(;i.wt===q.Alphabet||i.wt===q.Number;)Gm(r,i,t),{word:i,next:a}=Wm(n,a);i.wt!==q.Invalid&&i.wt!==q.Punct&&i.wt!==q.Connector&&r.push(t);continue}if(e.wt===q.Connector){Gm(r,o,t);continue}if(e.wt===q.Punct)continue;if(i.wt!==q.Number){i.wt!==q.Connector&&i.wt!==q.Punct&&r.push(t);continue}if(a>=n.length)continue;let s=i;if({word:i,next:a}=Wm(n,a),i.wt!==q.Alphabet){Gm(r,s,t),i.wt!==q.Connector&&i.wt!==q.Punct&&r.push(t);continue}for(r.push(t),Gm(r,s,t);i.wt===q.Alphabet||i.wt===q.Number;)Gm(r,i,t),{word:i,next:a}=Wm(n,a);i.wt!==q.Invalid&&i.wt!==q.Connector&&i.wt!==q.Punct&&r.push(t)}return Gm(r,i,t),r.join(``).toLowerCase()}function qm(e){if(e.length===0)return``;let t=Array.from(e),n=[],r=0,i=``;for(;r<t.length;){if(i=t[r],r++,!zm(i)){i=i.toUpperCase();break}n.push(i)}if(r>=t.length)return t.length>0&&n.push(i),n.join(``);for(;r<t.length;){let e=i;if(i=t[r],r++,zm(i)&&zm(e)){n.push(e);continue}zm(e)?i=i.toUpperCase():(i=i.toLowerCase(),n.push(e))}return n.push(i),n.join(``)}function Jm(e){return qm(e)}function Ym(...e){return e.join(` `)}function Xm(e,t){return t.includes(e)}function Zm(e,t){return t.startsWith(e)}function Qm(e,t){return t.endsWith(e)}function $m(e,t){let n=` `.repeat(Math.max(0,e));return t.split(`
46
+ `?(this.line+=1,this.column=1):this.column+=1}}advanceTo(e){for(;this.offset<e;)this.advanceBy(1)}makeToken(e,t,n,r={}){return Object.freeze({type:e,value:t,pos:n,...r.trimLeft===void 0?{}:{trimLeft:r.trimLeft},...r.trimRight===void 0?{}:{trimRight:r.trimRight}})}};function du(e){return e===` `||e===` `||e===`\r`||e===`
47
+ `}function fu(e){return e===`+`||e===`-`}function pu(e){return e>=`0`&&e<=`9`}function mu(e){return pu(e)||e>=`a`&&e<=`f`||e>=`A`&&e<=`F`}function hu(e){return e>=`0`&&e<=`7`}function gu(e){return e===`0`||e===`1`}function _u(e){return e>=`a`&&e<=`z`||e>=`A`&&e<=`Z`}function vu(e){return _u(e)||e===`_`}function yu(e){return vu(e)||pu(e)}let bu,xu;function Su(e,t){return xu(e,t)}var Cu=class e{static EMPTY=new e(new Map,void 0);#e;#t;constructor(e,t){this.#e=e,this.#t=t}static{bu=(t,n)=>new e(t,n),xu=(e,t)=>e.#e.get(t)??(e.#t&&xu(e.#t,t))}has(e){return xu(this,e)!==void 0}};function wu(e,t,n=Cu.EMPTY){return new Tu(e,t,n).parseTemplate()}var Tu=class{lex;buf=[];defines=new Map;inherit;source;rangeDepth=0;constructor(e,t,n){this.source=e,this.inherit=n,this.lex=t?new uu(e,t):new uu(e)}peek(e=0){for(;this.buf.length<=e;)this.buf.push(this.lex.next());return this.buf[e]}next(){return this.buf.length>0?this.buf.shift():this.lex.next()}expect(e,t){let n=this.next();if(n.type!==e)throw this.errAt(n,`expected ${t}`,{expected:t,found:Ou(n)});return n}errAt(e,t,n={}){return new Ql(t,e.pos,{...n,source:this.source})}parseTemplate(){let e=this.parseList();if(this.peek().type!==`EOF`){let e=this.peek(),t=this.peek(1);if(e.type===`LeftDelim`&&(t.type===`Else`||t.type===`End`)){let n=t.type===`Else`?`else`:`end`;throw this.errAt(e,`unexpected \`{{${n}}}\` outside of \`if\`, \`range\`, \`with\`, or \`block\``,{found:`{{${n}}}`})}throw this.errAt(e,`unexpected ${Ou(e)}`,{found:Ou(e)})}return{root:e,defines:bu(this.defines,this.inherit),ownDefines:this.defines,source:this.source}}parseList(){let e=this.peek().pos,t=[];for(;;){let n=this.peek();if(n.type===`EOF`)break;if(n.type===`Text`){this.next(),t.push({type:`Text`,pos:n.pos,text:n.value});continue}if(n.type===`Comment`){this.next();let e=Du(n);t.push({type:`Comment`,pos:n.pos,text:n.value,trim:e});continue}if(n.type===`LeftDelim`){let n=this.peek(1).type;if(n===`Else`||n===`End`)return Eu(e,t);let r=this.parseAction();r!==null&&t.push(r);continue}throw this.errAt(n,`unexpected ${Ou(n)} at top level`,{found:Ou(n)})}return Eu(e,t)}parseAction(){let e=this.expect(`LeftDelim`,"`{{`"),t=e.trimLeft===!0,n=this.peek();switch(n.type){case`If`:return this.next(),this.parseBranch(`If`,e.pos,t);case`Range`:return this.next(),this.parseBranch(`Range`,e.pos,t);case`With`:return this.next(),this.parseBranch(`With`,e.pos,t);case`Break`:return this.next(),this.parseBreakOrContinue(`Break`,e.pos,t);case`Continue`:return this.next(),this.parseBreakOrContinue(`Continue`,e.pos,t);case`Template`:return this.next(),this.parseTemplateInvocation(e.pos,t);case`Block`:return this.next(),this.parseBlock(e.pos,t);case`Define`:return this.next(),this.parseDefine(e.pos,t),null;case`RightDelim`:throw this.errAt(n,`empty action`,{expected:`pipeline`});default:{let n=this.parsePipeline(),r=this.expect(`RightDelim`,"`}}`");return{type:`Action`,pos:e.pos,pipe:n,trim:{trimLeft:t,trimRight:r.trimRight===!0}}}}}parseBranch(e,t,n){let r=this.parsePipeline();this.expect(`RightDelim`,"`}}`"),e===`Range`&&(this.rangeDepth+=1);let i=this.parseList();e===`Range`&&--this.rangeDepth;let a=this.parseElsePart(),o={trimLeft:n,trimRight:a.endConsumed?a.endRight:this.consumeEnd()},s=a.list?{pipe:r,list:i,elseList:a.list,trim:o}:{pipe:r,list:i,trim:o};switch(e){case`If`:return{type:`If`,pos:t,...s};case`Range`:return{type:`Range`,pos:t,...s};case`With`:return{type:`With`,pos:t,...s}}}parseBreakOrContinue(e,t,n){if(this.rangeDepth===0)throw new Ql(`{{${e===`Break`?`break`:`continue`}}} outside of {{range}}`,t,{source:this.source});let r={trimLeft:n,trimRight:this.expect(`RightDelim`,"`}}`").trimRight===!0};return e===`Break`?{type:`Break`,pos:t,trim:r}:{type:`Continue`,pos:t,trim:r}}parseElsePart(){if(this.peek().type!==`LeftDelim`||this.peek(1).type!==`Else`)return{list:void 0,endRight:!1,endConsumed:!1};let e=this.next();if(this.next(),this.peek().type===`If`){this.next();let t=this.parseBranch(`If`,e.pos,e.trimLeft===!0);return{list:{type:`List`,pos:e.pos,nodes:[t]},endRight:t.trim.trimRight,endConsumed:!0}}return this.expect(`RightDelim`,"`}}`"),{list:this.parseList(),endRight:!1,endConsumed:!1}}consumeEnd(){return this.expect(`LeftDelim`,"`{{end}}`"),this.expect(`End`,"`end`"),this.expect(`RightDelim`,"`}}`").trimRight===!0}parseTemplateInvocation(e,t){let n=this.parseQuotedName(),r=this.peek().type===`RightDelim`?void 0:this.parsePipeline(),i={trimLeft:t,trimRight:this.expect(`RightDelim`,"`}}`").trimRight===!0};return r?{type:`Template`,pos:e,name:n,pipe:r,trim:i}:{type:`Template`,pos:e,name:n,trim:i}}parseBlock(e,t){let n=this.parseQuotedName(),r=this.peek().type===`RightDelim`?void 0:this.parsePipeline();this.expect(`RightDelim`,"`}}`");let i=this.rangeDepth;this.rangeDepth=0;let a=this.parseList();this.rangeDepth=i;let o={trimLeft:t,trimRight:this.consumeEnd()};return!this.defines.has(n)&&!this.inherit.has(n)&&this.defines.set(n,{list:a,source:this.source}),r?{type:`Block`,pos:e,name:n,pipe:r,list:a,trim:o}:{type:`Block`,pos:e,name:n,list:a,trim:o}}parseDefine(e,t){let n=this.parseQuotedName();this.expect(`RightDelim`,"`}}`");let r=this.rangeDepth;this.rangeDepth=0;let i=this.parseList();if(this.rangeDepth=r,this.consumeEnd(),this.defines.has(n)||this.inherit.has(n))throw new Ql(`redefinition of template ${JSON.stringify(n)}`,i.pos,{source:this.source});this.defines.set(n,{list:i,source:this.source})}parseQuotedName(){let e=this.next();if(e.type!==`String`)throw this.errAt(e,`expected template name (quoted string)`,{expected:`string`,found:Ou(e)});return Iu(e.value,e.pos,this.source)}parsePipeline(){let e=this.peek().pos,t=this.tryParseDecls(),n=[this.parseCommand()];for(;this.peek().type===`Pipe`;){this.next();let e=this.peek();if(!ku(e.type))throw this.errAt(e,"missing command after `|`",{expected:`command`,found:Ou(e)});n.push(this.parseCommand())}return{type:`Pipe`,pos:e,decls:t?.vars??[],isAssign:t?.isAssign??!1,cmds:n}}tryParseDecls(){if(this.peek().type!==`Variable`)return;let e=1;for(;this.peek(e).type===`Comma`;){if(this.peek(e+1).type!==`Variable`)return;e+=2}let t=this.peek(e).type;if(t!==`Declare`&&t!==`Assign`)return;let n=[Au(this.next())];for(;this.peek().type===`Comma`;)this.next(),n.push(Au(this.expect(`Variable`,`$variable`)));return{vars:n,isAssign:this.next().type===`Assign`}}parseCommand(){let e=this.peek().pos,t=[this.parsePrimary()];for(;ku(this.peek().type);)t.push(this.parsePrimary());return{type:`Command`,pos:e,args:t}}parsePrimary(){let e=this.next();switch(e.type){case`Dot`:return{type:`Dot`,pos:e.pos};case`Field`:return{type:`Field`,pos:e.pos,idents:e.value.slice(1).split(`.`)};case`Variable`:return Au(e);case`Identifier`:return{type:`Identifier`,pos:e.pos,ident:e.value};case`String`:return{type:`String`,pos:e.pos,raw:e.value,value:Iu(e.value,e.pos,this.source)};case`Number`:return Mu(e);case`Char`:return Nu(e,this.source);case`Bool`:return{type:`Bool`,pos:e.pos,value:e.value===`true`};case`Nil`:return{type:`Nil`,pos:e.pos};case`LeftParen`:return this.parseChainOrPipe(e.pos);default:throw this.errAt(e,`expected command argument, found ${Ou(e)}`,{expected:`command argument`,found:Ou(e)})}}parseChainOrPipe(e){let t=this.parsePipeline(),n=this.expect(`RightParen`,"`)`"),r=[],i=n.pos.offset+1,a=this.peek();return a.type===`Field`&&a.pos.offset===i&&(this.next(),r.push(...a.value.slice(1).split(`.`))),r.length===0?t:{type:`Chain`,pos:e,node:t,fields:r}}};function Eu(e,t){return{type:`List`,pos:e,nodes:t}}function Du(e){return{trimLeft:e.trimLeft===!0,trimRight:e.trimRight===!0}}function Ou(e){return e.type===`EOF`?`end of input`:e.value||e.type}function ku(e){switch(e){case`Dot`:case`Field`:case`Variable`:case`Identifier`:case`String`:case`Number`:case`Char`:case`Bool`:case`Nil`:case`LeftParen`:return!0;default:return!1}}function Au(e){return{type:`Variable`,pos:e.pos,idents:ju(e.value)}}function ju(e){let t=e.indexOf(`.`);return t===-1?[e]:[e.slice(0,t),...e.slice(t+1).split(`.`)]}function Mu(e){let t=e.value,n=t.replace(/_/g,``),r=n.toLowerCase().endsWith(`i`),i=r?n.slice(0,-1):n,a=!r&&(i.includes(`.`)||!i.startsWith(`0x`)&&!i.startsWith(`0X`)&&/[eE]/.test(i)||(i.startsWith(`0x`)||i.startsWith(`0X`))&&/[pP]/.test(i)),o=!r&&!a,s={type:`Number`,pos:e.pos,text:t,isInt:o,isUint:!1,isFloat:a,isComplex:r};if(o){let e=Pu(i);return{...s,intValue:e}}if(a){let e=Fu(i);return{...s,floatValue:e}}let c=Fu(i);return{...s,complexValue:[0,c]}}function Nu(e,t){let n=Lu(e.value,e.pos,t);return{type:`Number`,pos:e.pos,text:e.value,isInt:!0,isUint:!1,isFloat:!1,isComplex:!1,intValue:BigInt(n)}}function Pu(e){let t=1n,n=e;return n.startsWith(`+`)?n=n.slice(1):n.startsWith(`-`)&&(t=-1n,n=n.slice(1)),t*BigInt(n)}function Fu(e){return Number(e)}function Iu(e,t,n){if(e.startsWith("`"))return e.slice(1,-1);let r=``;for(let i=1;i<e.length-1;i++){let a=e[i];if(a!==`\\`){r+=a;continue}let o=e[++i];switch(o){case`n`:r+=`
48
+ `;break;case`t`:r+=` `;break;case`r`:r+=`\r`;break;case`\\`:r+=`\\`;break;case`"`:r+=`"`;break;case`'`:r+=`'`;break;case`a`:r+=`\x07`;break;case`b`:r+=`\b`;break;case`f`:r+=`\f`;break;case`v`:r+=`\v`;break;case`0`:case`1`:case`2`:case`3`:case`4`:case`5`:case`6`:case`7`:{let t=o+(e[i+1]??``)+(e[i+2]??``);i+=2,r+=String.fromCodePoint(Number.parseInt(t,8));break}case`x`:{let t=(e[i+1]??``)+(e[i+2]??``);i+=2,r+=String.fromCodePoint(Number.parseInt(t,16));break}case`u`:{let t=e.slice(i+1,i+5);i+=4,r+=String.fromCodePoint(Number.parseInt(t,16));break}case`U`:{let t=e.slice(i+1,i+9);i+=8,r+=String.fromCodePoint(Number.parseInt(t,16));break}default:throw new Ql(`bad escape sequence \\${o}`,t,{expected:`valid escape sequence`,found:`\\${o}`,source:n})}}return r}function Lu(e,t,n){let r=Iu(`"${e.slice(1,-1).replace(/"/g,`\\"`)}"`,t,n);if(r.length===0)throw new Ql(`empty rune literal`,t,{source:n});return r.codePointAt(0)??0}function Ru(e,t){if(t(e)!==!1)for(let n of zu(e))Ru(n,t)}function zu(e){switch(e.type){case`Text`:case`Comment`:case`Dot`:case`Nil`:case`Bool`:case`Number`:case`String`:case`Identifier`:case`Field`:case`Variable`:case`Break`:case`Continue`:return[];case`List`:return e.nodes;case`Chain`:return[e.node];case`Command`:return e.args;case`Pipe`:return[...e.decls,...e.cmds];case`Action`:return[e.pipe];case`If`:case`Range`:case`With`:return e.elseList?[e.pipe,e.list,e.elseList]:[e.pipe,e.list];case`Template`:return e.pipe?[e.pipe]:[];case`Block`:return e.pipe?[e.pipe,e.list]:[e.list];default:return su(e)}}const Bu=Symbol(`go-template-js.MISSING`);function Vu(e,t){if(e==null)return Bu;if(e instanceof Map)return e.has(t)?e.get(t):Bu;if(Array.isArray(e))return Bu;if(typeof e==`object`){let n=e;return t in n?n[t]:Bu}return Bu}function Hu(e,t){let n=e;for(let e of t){if(n===Bu)return Bu;n=Vu(n,e)}return n}function Uu(e,t){if(Object.is(e,t))return!0;if(e===null||t===null||e===void 0||t===void 0||typeof e!=typeof t)return!1;if(Array.isArray(e)&&Array.isArray(t))return e.length===t.length?e.every((e,n)=>Uu(e,t[n])):!1;if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(let[n,r]of e)if(!t.has(n)||!Uu(r,t.get(n)))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}if(typeof e==`object`&&typeof t==`object`){let n=Object.keys(e),r=Object.keys(t);return n.length===r.length?n.every(n=>Uu(e[n],t[n])):!1}return!1}const Wu=new WeakSet;function Gu(e){return Wu.add(e),e}function Ku(e){return Wu.has(e)}function qu(e){return e==null||e===!1?!1:typeof e==`number`?e!==0&&!Number.isNaN(e):typeof e==`bigint`?e!==0n:typeof e==`string`||Array.isArray(e)?e.length>0:e instanceof Map||e instanceof Set?e.size>0:typeof e==`object`?Object.keys(e).length>0:!!e}function Ju(e,t){return{eq:{fn:(e,...t)=>t.some(t=>Zu(e,t)),argTypes:[`comparable`]},ne:{fn:(e,t)=>!Zu(e,t),argTypes:[`comparable`,`comparable`]},lt:{fn:(e,t)=>Qu(e,t)<0,argTypes:[`ordered`,`ordered`]},le:{fn:(e,t)=>Qu(e,t)<=0,argTypes:[`ordered`,`ordered`]},gt:{fn:(e,t)=>Qu(e,t)>0,argTypes:[`ordered`,`ordered`]},ge:{fn:(e,t)=>Qu(e,t)>=0,argTypes:[`ordered`,`ordered`]},len:{fn:e=>$u(e),argTypes:[`sized`]},index:{fn:(e,...t)=>{let n=e;for(let e of t)n=ed(n,e);return n},argTypes:[`collection`,`index-key`]},slice:{fn:(e,...t)=>{let n=t.length>=1?t[0]:0,r=t.length>=2?t[1]:void 0;return e.slice(n,r)},argTypes:[`sliceable`,`int`]},print:{fn:(...t)=>rd(t,e),argTypes:[`stringifiable`],returnType:`string`},println:{fn:(...t)=>`${rd(t,e)}\n`,argTypes:[`stringifiable`],returnType:`string`},printf:{fn:(n,...r)=>fd(n,r,e,t),argTypes:[`string`,`stringifiable`],returnType:`string`},toString:{fn:n=>hd(n,e,t),argTypes:[`value`],returnType:`string`},toStrings:{fn:n=>n.map(n=>hd(n,e,t)),argTypes:[`list`]},call:{fn:(e,...t)=>e(...t),argTypes:[`callable`,`value`]},html:{fn:(...t)=>od(rd(t,e)),argTypes:[`stringifiable`],returnType:`string`},js:{fn:(...t)=>ld(rd(t,e)),argTypes:[`stringifiable`],returnType:`string`},urlquery:{fn:(...t)=>dd(rd(t,e)),argTypes:[`stringifiable`],returnType:`string`},not:{fn:e=>!qu(e),argTypes:[`truthy`]}}}function Yu(){return{and:Gu({argTypes:[`truthy`],fn:(...e)=>{let t=!0;for(let n of e)if(t=n(),!qu(t))return t;return t}}),or:Gu({argTypes:[`truthy`],fn:(...e)=>{let t=!1;for(let n of e)if(t=n(),qu(t))return t;return t}})}}function Xu(e,t){return{...Ju(e,t),...Yu()}}function Zu(e,t){return typeof e==`number`&&typeof t==`bigint`?BigInt(e)===t:typeof e==`bigint`&&typeof t==`number`?e===BigInt(t):Uu(e,t)}function Qu(e,t){if(typeof e==`bigint`&&typeof t==`bigint`)return e===t?0:e<t?-1:1;if(typeof e==`bigint`||typeof t==`bigint`){let n=typeof e==`bigint`?e:BigInt(Math.trunc(Number(e))),r=typeof t==`bigint`?t:BigInt(Math.trunc(Number(t)));return n===r?0:n<r?-1:1}let n=e,r=t;return n===r?0:n<r?-1:1}function $u(e){return typeof e==`string`||Array.isArray(e)?e.length:e instanceof Map||e instanceof Set?e.size:Object.keys(e).length}function ed(e,t){if(Array.isArray(e)){let n=Number(t);if(!Number.isInteger(n))throw Error(`index: array index must be integer, got ${td(t)}`);if(n<0||n>=e.length)throw Error(`index: out of range [${n}] with length ${e.length}`);return e[n]}if(e instanceof Map)return e.get(t);if(typeof e==`string`)return e[Number(t)];if(typeof e==`object`&&e){if(typeof t!=`string`)throw Error(`index: object index must be string, got ${td(t)}`);return e[t]}throw Error(`index: cannot index ${td(e)}`)}function td(e){return e===null?`null`:e===void 0?`undefined`:Array.isArray(e)?`array`:e instanceof Map?`Map`:typeof e}function nd(e){return e==null?`<nil>`:typeof e==`string`?`string`:typeof e==`boolean`?`bool`:typeof e==`bigint`?`int64`:typeof e==`number`?Number.isInteger(e)?`int`:`float64`:Array.isArray(e)?`[]interface {}`:e instanceof Map||typeof e==`object`?`map[string]interface {}`:typeof e}function rd(e,t){let n=``,r=!1;for(let i=0;i<e.length;i++){let a=e[i],o=typeof a==`string`;i>0&&!r&&!o&&(n+=` `),n+=id(a,t),r=o}return n}function id(e,t){return e==null?`<nil>`:typeof e==`string`?e:t(e)}const ad={"\0":`�`,'"':`&#34;`,"'":`&#39;`,"&":`&amp;`,"<":`&lt;`,">":`&gt;`};function od(e){return e.replace(/[\0"'&<>]/g,e=>ad[e]??e)}const sd={"\\":`\\\\`,"'":`\\'`,'"':`\\"`,"<":`\\u003C`,">":`\\u003E`,"&":`\\u0026`,"=":`\\u003D`},cd=/^[\p{L}\p{M}\p{N}\p{P}\p{S}]$/u;function ld(e){let t=``;for(let n of e){let e=sd[n];if(e!==void 0){t+=e;continue}let r=n.codePointAt(0);if(r<32||r>=128&&!cd.test(n)){t+=`\\u${r.toString(16).toUpperCase().padStart(4,`0`)}`;continue}t+=n}return t}const ud=new TextEncoder;function dd(e){let t=``,n=ud.encode(e);for(let e of n)e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===45||e===46||e===95||e===126?t+=String.fromCharCode(e):e===32?t+=`+`:t+=`%${e.toString(16).toUpperCase().padStart(2,`0`)}`;return t}function fd(e,t,n,r){let i=``,a=0,o=0;for(;o<e.length;){let s=e[o];if(s!==`%`){i+=s,o+=1;continue}if(e[o+1]===`%`){i+=`%`,o+=2;continue}let c=o+1;for(;c<e.length&&`+-# 0`.includes(e[c]??``);)c+=1;for(;c<e.length&&e[c]!==void 0&&/[0-9]/.test(e[c]);)c+=1;if(e[c]===`.`)for(c+=1;c<e.length&&e[c]!==void 0&&/[0-9]/.test(e[c]);)c+=1;let l=e[c],u=e.slice(o+1,c),d=t[a++];i+=pd(l??``,u,d,n,r),o=c+1}return i}function pd(e,t,n,r,i){switch(e){case`s`:return typeof n==`string`?md(t,n):md(t,id(n,r));case`d`:return typeof n!=`number`&&typeof n!=`bigint`?`%!${e}(${nd(n)}=${id(n,r)})`:md(t,String(typeof n==`bigint`?n:Math.trunc(n)));case`v`:return md(t,hd(n,r,i));case`q`:return md(t,JSON.stringify(id(n,r)));case`f`:{if(typeof n!=`number`&&typeof n!=`bigint`)return`%!${e}(${nd(n)}=${id(n,r)})`;let i=t.includes(`.`)?Number(t.split(`.`)[1]):6;return md(t,Number(n).toFixed(i))}case`t`:return md(t,qu(n)?`true`:`false`);case`x`:if(typeof n==`string`){let e=new TextEncoder().encode(n),r=``;for(let t of e)r+=t.toString(16).padStart(2,`0`);return md(t,r)}return typeof n!=`number`&&typeof n!=`bigint`?`%!${e}(${nd(n)}=${id(n,r)})`:typeof n==`bigint`?md(t,n.toString(16)):md(t,Math.trunc(n).toString(16));default:return`%!${e}(${nd(n)}=${id(n,r)})`}}function md(e,t){let n=e.match(/^([+\-# 0]*)/)?.[1]??``,r=e.slice(n.length).match(/^(\d+)/);if(!r)return t;let i=Number(r[1]);if(t.length>=i)return t;let a=` `.repeat(i-t.length);return n.includes(`-`)?t+a:a+t}function hd(e,t,n){return e==null?`<nil>`:typeof e==`string`?e:n(e)?t(e):Array.isArray(e)?`[${e.map(e=>hd(e,t,n)).join(` `)}]`:e instanceof Map?gd([...e.entries()],t,n):_d(e)?gd(Object.entries(e),t,n):String(e)}function gd(e,t,n){let r=e=>hd(e,t,n),i=e=>typeof e==`number`||typeof e==`bigint`,a=([e],[t])=>{if(i(e)&&i(t))return e<t?-1:+(e>t);if(i(e)!==i(t))return i(e)?-1:1;let[n,a]=[r(e),r(t)];return n<a?-1:+(n>a)};return`map[${[...e].sort(a).map(([e,t])=>`${r(e)}:${r(t)}`).join(` `)}]`}function _d(e){if(typeof e!=`object`||!e||Array.isArray(e)||e instanceof Map||e instanceof Set)return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype}function vd(e){return{dot:e,root:e,parent:void 0,vars:new Map}}function yd(e,t){return{dot:t,root:e.root,parent:e,vars:new Map}}function bd(e,t){let n=e;for(;n!==void 0;){if(n.vars.has(t))return{found:!0,value:n.vars.get(t)};n=n.parent}return{found:!1}}function xd(e,t,n){e.vars.set(t,n)}const Sd=new Set([`default`,`zero`,`error`]);function Cd(e){if(e===void 0)return`default`;if(Sd.has(e))return e;throw Error(`EngineConfig.missingKey: expected "default" | "zero" | "error", got ${wd(e)}`)}function wd(e){return typeof e==`string`?JSON.stringify(e):e===null?`null`:e===void 0?`undefined`:typeof e==`bigint`?`${e}n`:typeof e==`number`||typeof e==`boolean`?String(e):typeof e==`symbol`?e.toString():typeof e==`function`?`[Function]`:`[${typeof e}]`}function Td(e){if(e!==void 0){if(typeof e!=`object`||!e)throw Error(`EngineConfig.delims: expected { left, right } object, got ${wd(e)}`);if(typeof e.left!=`string`||e.left.length===0)throw Error(`EngineConfig.delims.left: expected non-empty string, got ${wd(e.left)}`);if(typeof e.right!=`string`||e.right.length===0)throw Error(`EngineConfig.delims.right: expected non-empty string, got ${wd(e.right)}`);return{left:e.left,right:e.right}}}const Ed=Object.freeze({kind:`break`}),Dd=Object.freeze({kind:`continue`}),Od={kind:`none`};let kd;(class e{source;_evaluate;_defines;_referencedFunctions;_referencedCalls;constructor(e,t,n,r,i){this.source=e,this._evaluate=t,this._defines=n,this._referencedFunctions=r,this._referencedCalls=i}static{kd=(t,n,r,i,a)=>new e(t,n,r,i,a)}defines(){return this._defines}evaluate(e){return this._evaluate(e)}referencedFunctions(){return this._referencedFunctions}referencedCalls(){return this._referencedCalls}});function Ad(e){let t=new Set,n=e=>{Ru(e,e=>{e.type===`Identifier`&&t.add(e.ident)})};n(e.root);for(let t of e.ownDefines.values())n(t.list);return t}const jd={kind:`dynamic`};function Md(e){switch(e.type){case`String`:return{kind:`literal`,value:e.value};case`Bool`:return{kind:`literal`,value:e.value};case`Nil`:return{kind:`literal`,value:null};case`Number`:{let t=Zd(e);return typeof t==`number`||typeof t==`bigint`?{kind:`literal`,value:t}:jd}case`Pipe`:{if(e.decls.length!==0||e.cmds.length!==1)return jd;let t=e.cmds[0];if(t===void 0)return jd;let n=t.args[0];return n===void 0||n.type!==`Identifier`?jd:{kind:`call`,name:n.ident,args:t.args.slice(1).map(Md)}}default:return jd}}function Nd(e){let t=[],n=e=>{Ru(e,e=>{if(e.type!==`Command`)return;let n=e.args[0];if(n===void 0||n.type!==`Identifier`)return;let r=e.args.slice(1).map(Md);t.push({name:n.ident,args:r.map(e=>e.kind===`literal`&&typeof e.value==`string`?e.value:null),argExprs:r})})};n(e.root);for(let t of e.ownDefines.values())n(t.list);return t}var Pd=class{fromString;toString;isT;funcs;missingKey;delims;constructor(e){this.fromString=e.fromString;let t=Object.hasOwn(e,`toString`)?e.toString:void 0;this.toString=t??Vd,this.isT=e.isT??Fd,this.missingKey=Cd(e.missingKey),this.delims=Td(e.delims),this.funcs={...Xu(this.toString,this.isT),...e.funcs??{}}}parse(e,t){let n=wu(e,this.delims,t);return kd(n.source,e=>this.evalParsed(n,e),n.defines,Ad(n),Nd(n))}compile(e){let t=this.parse(e);return e=>t.evaluate(e)}evaluate(e,t){return e.evaluate(t)}evalParsed(e,t){let n=[],r=vd(t),i={out:n,defines:e.defines,source:e.source};return this.evalList(e.root,r,i),n}evalList(e,t,n){for(let r of e.nodes)this.evalNode(r,t,n)}evalNode(e,t,n){switch(e.type){case`Text`:n.out.push(this.fromString(e.text));return;case`Comment`:return;case`Action`:{let r=this.evalAction(e,t,n);e.pipe.decls.length===0&&this.emitFromValue(r,n);return}case`List`:this.evalList(e,t,n);return;case`If`:this.evalIf(e,t,n);return;case`Range`:this.evalRange(e,t,n);return;case`With`:this.evalWith(e,t,n);return;case`Break`:throw Ed;case`Continue`:throw Dd;case`Template`:this.evalTemplateInvoke(e,t,n);return;case`Block`:this.evalBlock(e,t,n);return;case`Pipe`:case`Command`:case`Identifier`:case`Field`:case`Variable`:case`Chain`:case`Dot`:case`Nil`:case`Bool`:case`Number`:case`String`:throw new $l(`unexpected ${e.type} at statement position`,e.pos,{source:n.source});default:su(e)}}evalIf(e,t,n){qu(this.evalPipe(e.pipe,t,n))?this.evalList(e.list,t,n):e.elseList&&this.evalList(e.elseList,t,n)}evalWith(e,t,n){let r=this.evalPipe(e.pipe,t,n);if(qu(r)){let i=yd(t,r);this.evalList(e.list,i,n)}else e.elseList&&this.evalList(e.elseList,t,n)}evalRange(e,t,n){let r=this.evalPipeWithoutDecls(e.pipe,t,n),i=e.pipe.decls,a=Jd(r);try{if(a.length===0){e.elseList&&this.evalList(e.elseList,t,n);return}for(let[r,o]of a){let a=yd(t,o);if(i.length===1)xd(a,i[0]?.idents[0]??`$`,o);else if(i.length>=2){let e=i[0]?.idents[0]??`$`,t=i[1]?.idents[0]??`$`;xd(a,e,r),xd(a,t,o)}try{this.evalList(e.list,a,n)}catch(e){if(e===Dd)continue;throw e}}}catch(e){if(e===Ed)return;throw e}}evalTemplateInvoke(e,t,n){let r=Su(n.defines,e.name);if(!r)throw new $l(`template ${JSON.stringify(e.name)} is not defined`,e.pos,{source:n.source});let i=yd(t,e.pipe?this.evalPipe(e.pipe,t,n):t.dot);this.evalList(r.list,i,{out:n.out,defines:n.defines,source:r.source})}evalBlock(e,t,n){let r=yd(t,e.pipe?this.evalPipe(e.pipe,t,n):t.dot),i=Su(n.defines,e.name)??{list:e.list,source:n.source};this.evalList(i.list,r,{out:n.out,defines:n.defines,source:i.source})}evalAction(e,t,n){return this.evalPipe(e.pipe,t,n)}evalPipe(e,t,n){if(e.cmds.length===0)throw new $l(`empty pipeline`,e.pos,{source:n.source});let r=this.evalCommand(e.cmds[0],t,n,Od);for(let i=1;i<e.cmds.length;i++){let a=e.cmds[i];r=this.evalCommand(a,t,n,{kind:`value`,value:r})}if(e.decls.length>0)for(let n of e.decls)xd(t,n.idents[0]??`$`,r);return r}evalPipeWithoutDecls(e,t,n){let r={type:`Pipe`,pos:e.pos,decls:[],isAssign:!1,cmds:e.cmds};return this.evalPipe(r,t,n)}evalCommand(e,t,n,r){if(e.args.length===0)throw new $l(`empty command`,e.pos,{source:n.source});let i=e.args[0];if(i.type!==`Identifier`){if(e.args.length>1)throw new $l(`cannot apply arguments to a ${i.type} primary; only functions take arguments`,e.pos,{source:n.source});return this.evalPrimary(i,t,n)}let a=this.funcs[i.ident];if(!a)throw new eu(i.ident,i.pos,{source:n.source,available:Object.keys(this.funcs)});let o=e.args.slice(1),s=Ku(a),c=o.map(e=>s?()=>this.evalPrimary(e,t,n):this.evalPrimary(e,t,n));if(r.kind===`value`){let e=r.value;c.push(s?()=>e:e)}Ld(i.ident,a.argTypes,c,e.pos,n.source,this.toString,a.argTypePattern,this.fromString,this.isT);try{return a.fn(...c)}catch(t){throw t instanceof tu?new tu(t.funcName,t.argIndex,t.expected,t.receivedSummary,e.pos,{source:n.source}):t instanceof ru?new ru(t.message,e.pos,{source:n.source}):t}}evalPrimary(e,t,n){switch(e.type){case`Dot`:return t.dot;case`Nil`:return null;case`Bool`:return e.value;case`Number`:return Zd(e);case`String`:return e.value;case`Field`:return this.resolveFieldChain(t.dot,e.idents,e.pos,n);case`Variable`:return this.resolveVariable(e.idents,t,e.pos,n);case`Identifier`:{let t=this.funcs[e.ident];if(!t)throw new eu(e.ident,e.pos,{source:n.source,available:Object.keys(this.funcs)});return Ld(e.ident,t.argTypes,[],e.pos,n.source,this.toString,t.argTypePattern,this.fromString,this.isT),t.fn()}case`Chain`:return this.resolveFieldChain(this.evalPrimary(e.node,t,n),e.fields,e.pos,n);case`Pipe`:return this.evalPipe(e,t,n);default:throw new $l(`cannot evaluate ${e.type} as a value`,e.pos,{source:n.source})}}resolveFieldChain(e,t,n,r){let i=Hu(e,t);if(i!==Bu)return i;if(this.missingKey===`error`)throw new nu(t,n,{source:r.source})}resolveVariable(e,t,n,r){let i=e[0]??`$`;if(i===`$`){let i=e.slice(1);return i.length===0?t.root:this.resolveFieldChain(t.root,i,n,r)}let a=bd(t,i);if(!a.found)throw new $l(`undefined variable ${i}`,n,{source:r.source});let o=e.slice(1);return o.length===0?a.value:this.resolveFieldChain(a.value,o,n,r)}emitFromValue(e,t){if(e==null){t.out.push(this.fromString(`<no value>`));return}if(typeof e==`string`){t.out.push(this.fromString(e));return}if(typeof e==`number`||typeof e==`boolean`||typeof e==`bigint`){t.out.push(this.fromString(String(e)));return}if(this.isT(e)){t.out.push(e);return}t.out.push(this.fromString(hd(e,this.toString,this.isT)))}};const Fd=e=>typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Map);function Id(e){return new Pd(e)}function Ld(e,t,n,r,i,a=Vd,o,s=Bd,c=Fd){let l=Rd(t,o),u=-1,d=-1;for(let t=0;t<n.length;t++){let o=l(t),f=n[t];if(!zd(o,f,a,c))throw new tu(e,t+1,Kd(o),qd(f),r,{source:i});if(o===`liftable`&&typeof f==`string`&&(n[t]=s(f)),o===`int`?n[t]=Math.trunc(Number(f)):o===`float`&&(n[t]=Number(f)),o===`ordered`){if(u===-1)u=t;else if(!Ud(n[u],f))throw new tu(e,t+1,`${Kd(`ordered`)} of the same kind as ${qd(n[u])}`,qd(f),r,{source:i})}if(o===`comparable`){if(d===-1)d=t;else if(!Wd(n[d],f))throw new tu(e,t+1,`${Kd(`comparable`)} of the same kind as ${qd(n[d])}`,qd(f),r,{source:i})}}}function Rd(e,t){if(e.length===0)return()=>`value`;if(t===`alternating`){let t=e.length;return n=>e[n%t]}let n=e[e.length-1];return t=>t<e.length?e[t]:n}function zd(e,t,n,r){switch(e){case`truthy`:case`reflective`:case`value`:return!0;case`string`:return typeof t==`string`;case`int`:return typeof t==`number`&&Number.isFinite(t)||typeof t==`bigint`&&Number.isSafeInteger(Number(t));case`float`:return typeof t==`number`||typeof t==`bigint`&&Number.isFinite(Number(t));case`bool`:return typeof t==`boolean`;case`ordered`:return typeof t==`string`||typeof t==`number`||typeof t==`bigint`||typeof t==`boolean`;case`T`:return r(t);case`list`:return Array.isArray(t);case`dict`:return _d(t);case`sized`:return typeof t==`string`||Array.isArray(t)||t instanceof Map||t instanceof Set||_d(t);case`comparable`:return t==null||typeof t==`string`||typeof t==`number`||typeof t==`bigint`||typeof t==`boolean`||Array.isArray(t)||t instanceof Map||t instanceof Set||_d(t);case`callable`:return typeof t==`function`;case`collection`:return typeof t==`string`||Array.isArray(t)||t instanceof Map||_d(t);case`index-key`:return typeof t==`string`||typeof t==`number`||typeof t==`bigint`;case`sliceable`:return typeof t==`string`||Array.isArray(t);case`stringifiable`:if(typeof t==`string`)return!0;try{return n(t),!0}catch{return!1}case`liftable`:return typeof t==`string`||r(t);case`serializable`:return Hd(t);default:throw Error(`invalid ArgType: ${String(e)}`)}}function Bd(e){return e}function Vd(e){if(typeof e==`string`)return e;if(e==null)return`<nil>`;if(typeof e==`number`||typeof e==`bigint`||typeof e==`boolean`)return String(e);throw new tu(`<engine.toString>`,1,`string (or a consumer-supplied toString that flattens T)`,qd(e),{line:0,column:0,offset:0})}function Hd(e){try{return JSON.stringify(e)!==void 0}catch{return!1}}function Ud(e,t){return typeof e==typeof t||typeof e==`number`&&typeof t==`bigint`||typeof e==`bigint`&&typeof t==`number`}function Wd(e,t){let n=Gd(e),r=Gd(t);return n===`nil`||r===`nil`?!0:n===r}function Gd(e){return e==null?`nil`:typeof e==`string`?`string`:typeof e==`number`||typeof e==`bigint`?`number`:typeof e==`boolean`?`boolean`:Array.isArray(e)?`array`:e instanceof Map?`map`:e instanceof Set?`set`:`object`}function Kd(e){switch(e){case`int`:return`integer (finite number or safe-integer bigint)`;case`float`:return`float (number, including NaN/Infinity, or finite-convertible bigint)`;case`T`:return`T (consumer-defined fragment)`;case`ordered`:return`orderable primitive`;case`list`:return`list`;case`dict`:return`dict (plain object)`;case`sized`:return`sized value (string, list, map, set, or dict)`;case`comparable`:return`comparable value (orderable primitive, nil, list, dict, Map, or Set)`;case`stringifiable`:return`stringifiable value (string or convertible via the engine's toString)`;case`liftable`:return`liftable value (T or string, the latter lifted via the engine's fromString)`;case`callable`:return`callable (function value)`;case`collection`:return`collection (string, array, Map, or dict)`;case`index-key`:return`index key (number, bigint, or string)`;case`sliceable`:return`sliceable value (string or array)`;case`serializable`:return`JSON-serializable value`;case`truthy`:case`reflective`:case`value`:case`string`:case`bool`:return e;default:throw Error(`invalid ArgType: ${String(e)}`)}}function qd(e){return e===null?`null`:e===void 0?`undefined`:Array.isArray(e)?`array`:e instanceof Map?`Map`:typeof e}function Jd(e){return e==null?[]:Array.isArray(e)?e.map((e,t)=>[t,e]):typeof e==`string`?[...e].map((e,t)=>[t,e]):e instanceof Map?Yd([...e.entries()]):e instanceof Set?[...e.values()].map((e,t)=>[t,e]):typeof e==`object`?Yd(Object.entries(e)):[]}function Yd(e){return[...e].sort((e,t)=>Xd(e[0],t[0]))}function Xd(e,t){if((typeof e==`number`||typeof e==`bigint`)&&(typeof t==`number`||typeof t==`bigint`)){let n=typeof e==`bigint`?Number(e):e,r=typeof t==`bigint`?Number(t):t;return n===r?0:n<r?-1:1}let n=String(e),r=String(t);return n===r?0:n<r?-1:1}function Zd(e){if(e.intValue!==void 0){let t=e.intValue;return t>=BigInt(-(2**53-1))&&t<=BigInt(2**53-1)?Number(t):t}if(e.floatValue!==void 0)return e.floatValue;if(e.complexValue!==void 0)return e.complexValue;throw Error(`internal: NumberNode has none of intValue/floatValue/complexValue — parser invariant violated`)}function Qd(e){if(!/^[+-]?\d+$/.test(e))return 0;let t=Number.parseInt(e,10);return Number.isSafeInteger(t)?t:0}function $d(e){if(typeof e==`number`)return e;if(typeof e==`bigint`)return Number(e);if(typeof e==`string`){let t=Number.parseFloat(e);return Number.isNaN(t)?0:t}return typeof e==`boolean`?+!!e:0}function ef(e){if(e===``)return null;let t=1,n=e;return n[0]===`+`?n=n.slice(1):n[0]===`-`&&(t=-1,n=n.slice(1)),n===``?null:/^0x[0-9a-fA-F]+$/i.test(n)?{sign:t,digits:n.slice(2),base:16}:/^0b[01]+$/i.test(n)?{sign:t,digits:n.slice(2),base:2}:/^0o[0-7]+$/i.test(n)?{sign:t,digits:n.slice(2),base:8}:n===`0`?{sign:t,digits:`0`,base:10}:n[0]===`0`?/^0[0-7]+$/.test(n)?{sign:t,digits:n.slice(1),base:8}:null:/^[0-9]+$/.test(n)?{sign:t,digits:n,base:10}:null}function tf(e){if(typeof e==`number`){let t=Math.trunc(e);return Number.isSafeInteger(t)?t:0}if(typeof e==`bigint`){let t=Number(e);return Number.isSafeInteger(t)?t:0}if(typeof e==`string`){let t=ef(e);if(t===null)return 0;let n=t.sign*Number.parseInt(t.digits,t.base);return Number.isSafeInteger(n)?n:0}return typeof e==`boolean`?+!!e:0}function nf(e){if(typeof e==`bigint`)return e;if(typeof e==`number`)return BigInt(Math.trunc(e));if(typeof e==`string`){let t=ef(e);if(t===null)return 0n;let n=t.base===16?`0x`:t.base===2?`0b`:t.base===8?`0o`:``,r=BigInt(n+t.digits);return t.sign===-1?-r:r}return typeof e==`boolean`&&e?1n:0n}function rf(e){if(!/^[+-]?[0-7]+$/.test(e))return 0;let t=e[0]===`-`?-1:1,n=e[0]===`+`||e[0]===`-`?e.slice(1):e,r=t*Number.parseInt(n,8);return Number.isSafeInteger(r)?r:0}function af(e){return JSON.stringify(e)??`null`}function of(){return{atoi:{fn:e=>Qd(e),argTypes:[`string`],returnType:`int`},int:{fn:e=>tf(e),argTypes:[`value`],returnType:`int`},int64:{fn:e=>nf(e),argTypes:[`value`]},float64:{fn:e=>$d(e),argTypes:[`value`],returnType:`float`},toDecimal:{fn:e=>rf(e),argTypes:[`string`],returnType:`int`},toRawJson:{fn:e=>af(e),argTypes:[`serializable`],returnType:`string`}}}const sf={h:36e11,m:6e10,s:1e9,ms:1e6,us:1e3,µs:1e3,ns:1};function cf(e){if(e===`0`)return 0;let t=!1,n=e;if(n.startsWith(`-`)?(t=!0,n=n.slice(1)):n.startsWith(`+`)&&(n=n.slice(1)),!n)return NaN;let r=0,i=/^(\d+(?:\.\d+)?)(ns|µs|us|ms|[smh])/;for(;n.length>0;){let e=i.exec(n);if(!e)return NaN;let t=parseFloat(e[1]??`0`),a=e[2];r+=t*sf[a],n=n.slice(e[0].length)}return t?-r:r}function lf(e){if(e===0)return`0s`;let t=!1,n=e;n<0&&(t=!0,n=-n);let r;return r=n<sf.us?`${Math.floor(n)}ns`:n<sf.ms?uf(n,sf.us,3,`µs`):n<sf.s?uf(n,sf.ms,6,`ms`):df(n),t?`-${r}`:r}function uf(e,t,n,r){let i=Math.floor(e/t),a=Math.round(e%t);return a===0?`${i}${r}`:`${i}.${String(a).padStart(n,`0`).replace(/0+$/,``)}${r}`}function df(e){let t=Math.floor(e/sf.h);e-=t*sf.h;let n=Math.floor(e/sf.m);e-=n*sf.m;let r=Math.floor(e/sf.s),i=e-r*sf.s,a=i===0?`${r}s`:`${r}.${String(Math.round(i)).padStart(9,`0`).replace(/0+$/,``)}s`;return t>0?`${t}h${n}m${a}`:n>0?`${n}m${a}`:a}function ff(e){return e*sf.s}function pf(e){if(e instanceof Date)return e;if(typeof e==`bigint`)return new Date(Number(e)*1e3);if(typeof e==`number`)return new Date(e*1e3);if(typeof e==`string`){let t=new Date(e);if(!Number.isNaN(t.getTime()))return t;throw Error(`sprig: cannot parse date value ${JSON.stringify(e)}`)}throw Error(`sprig: unsupported date type: ${typeof e}`)}function mf(e,t){let n=t().getTime()-pf(e).getTime();return lf(Math.round(n/1e3)*1e9)}const hf=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],gf=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],_f=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],vf=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`];function yf(e){return e<10?`0${e}`:String(e)}function bf(e){return e<10?`00${e}`:e<100?`0${e}`:String(e)}function xf(e){return e<10?` ${e}`:String(e)}function Sf(e){let t=e>=0?`+`:`-`,n=Math.abs(e);return`${t}${yf(Math.floor(n/60))}${yf(n%60)}`}function Cf(e){let t=e>=0?`+`:`-`,n=Math.abs(e);return`${t}${yf(Math.floor(n/60))}:${yf(n%60)}`}function wf(e){return`${e>=0?`+`:`-`}${yf(Math.floor(Math.abs(e)/60))}`}function Tf(e){return e===0?`Z`:Sf(e)}function Ef(e){return e===0?`Z`:Cf(e)}function Df(e){return e===0?`Z`:wf(e)}function Of(e,t,n){let r=e*1e6,i=String(r).padStart(9,`0`).slice(0,t);return n?i.replace(/0+$/,``):i}const kf=[[`.000000000`,e=>`.${Of(e.ms,9,!1)}`],[`.999999999`,e=>{let t=Of(e.ms,9,!0);return t?`.${t}`:``}],[`.000000`,e=>`.${Of(e.ms,6,!1)}`],[`.999999`,e=>{let t=Of(e.ms,6,!0);return t?`.${t}`:``}],[`.000`,e=>`.${bf(e.ms)}`],[`.999`,e=>{let t=bf(e.ms).replace(/0+$/,``);return t?`.${t}`:``}],[`January`,e=>hf[e.month-1]??`January`],[`Monday`,e=>_f[e.weekday]??`Monday`],[`Z07:00`,e=>Ef(e.offsetMinutes)],[`-07:00`,e=>Cf(e.offsetMinutes)],[`Z0700`,e=>Tf(e.offsetMinutes)],[`-0700`,e=>Sf(e.offsetMinutes)],[`2006`,e=>String(e.year)],[`Jan`,e=>gf[e.month-1]??`Jan`],[`Mon`,e=>vf[e.weekday]??`Mon`],[`MST`,e=>e.tzAbbr],[`-07`,e=>wf(e.offsetMinutes)],[`Z07`,e=>Df(e.offsetMinutes)],[`15`,e=>yf(e.hour)],[`01`,e=>yf(e.month)],[`02`,e=>yf(e.day)],[`_2`,e=>xf(e.day)],[`03`,e=>yf(e.hour12)],[`04`,e=>yf(e.minute)],[`05`,e=>yf(e.second)],[`06`,e=>yf(e.year%100)],[`PM`,e=>e.hour>=12?`PM`:`AM`],[`pm`,e=>e.hour>=12?`pm`:`am`],[`1`,e=>String(e.month)],[`2`,e=>String(e.day)],[`3`,e=>String(e.hour12)],[`4`,e=>String(e.minute)],[`5`,e=>String(e.second)]];function Af(e,t){let n=``,r=0;for(;r<e.length;){let i=!1;for(let[a,o]of kf)if(e.startsWith(a,r)){n+=o(t),r+=a.length,i=!0;break}i||(n+=e[r++])}return n}const jf={year:`numeric`,month:`2-digit`,day:`2-digit`,weekday:`long`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hour12:!1};function Mf(e){let t=new Map;for(let n of e)t.set(n.type,n.value);return t}const Nf=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`];function Pf(e,t){let n;try{new Intl.DateTimeFormat(`en-US`,{timeZone:t}),n=t}catch{n=`UTC`}let r=Mf(new Intl.DateTimeFormat(`en-US`,{...jf,timeZone:n}).formatToParts(e)),i=parseInt(r.get(`hour`)??`0`,10)%24,a=Mf(new Intl.DateTimeFormat(`en-US`,{timeZone:n,timeZoneName:`short`}).formatToParts(e)).get(`timeZoneName`)??n,o=Ff(Mf(new Intl.DateTimeFormat(`en-US`,{timeZone:n,timeZoneName:`shortOffset`}).formatToParts(e)).get(`timeZoneName`)??`GMT`),s=Nf.indexOf(r.get(`weekday`)??`Sunday`);return{year:parseInt(r.get(`year`)??`2000`,10),month:parseInt(r.get(`month`)??`1`,10),day:parseInt(r.get(`day`)??`1`,10),weekday:s===-1?0:s,hour:i,hour12:i%12||12,minute:parseInt(r.get(`minute`)??`0`,10),second:parseInt(r.get(`second`)??`0`,10),ms:e.getUTCMilliseconds(),tzAbbr:a,offsetMinutes:o}}function Ff(e){if(e===`GMT`||e===`UTC`)return 0;let t=e.match(/^GMT([+-])(\d{1,2})(?::(\d{2}))?$/);if(!t)return 0;let n=t[1]===`+`?1:-1,r=parseInt(t[2]??`0`,10),i=parseInt(t[3]??`0`,10);return n*(r*60+i)}function If(){return Intl.DateTimeFormat().resolvedOptions().timeZone}function Lf(e,t){return Af(e,Pf(pf(t),If()))}function Rf(e,t,n){return Af(e,Pf(pf(t),n))}function zf(e,t){let n=pf(t),r=cf(e);return Number.isNaN(r)?n:new Date(n.getTime()+r/1e6)}function Bf(e){if(typeof e==`string`){let t=parseInt(e,10);return Number.isNaN(t)?`0s`:lf(ff(t))}return typeof e==`bigint`?lf(ff(Number(e))):typeof e==`number`?lf(ff(e)):`0s`}const Vf=36e11*24*365,Hf=36e11*24*30,Uf=36e11*24,Wf=36e11,Gf=6e10,Kf=1e9;function qf(e){let t=cf(String(e));if(Number.isNaN(t))return`0s`;let n=Math.abs(t);return n>Vf?`${Math.floor(n/Vf)}y`:n>Hf?`${Math.floor(n/Hf)}mo`:n>Uf?`${Math.floor(n/Uf)}d`:n>Wf?`${Math.floor(n/Wf)}h`:n>Gf?`${Math.floor(n/Gf)}m`:n>Kf?`${Math.floor(n/Kf)}s`:`0s`}function Jf(e){let t=Pf(pf(e),If());return`${t.year}-${String(t.month).padStart(2,`0`)}-${String(t.day).padStart(2,`0`)}`}function Yf(e,t){let n=Pf(pf(e),t);return`${n.year}-${String(n.month).padStart(2,`0`)}-${String(n.day).padStart(2,`0`)}`}function Xf(e){return e()}const Zf=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],Qf=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`];function $f(){return{year:2e3,month:1,day:1,hour:0,minute:0,second:0,ms:0,offsetMinutes:0,isPM:!1,hour12:!1}}function ep(e,t,n){return[e.slice(t,t+n),t+n]}function tp(e,t,n,r){let i=t;for(;i<e.length&&i-t<r&&e.charCodeAt(i)>=48&&e.charCodeAt(i)<=57;)i++;if(i-t<n)throw Error(`sprig toDate: expected ${n}-${r} digits at pos ${t}`);return[parseInt(e.slice(t,i),10),i]}function np(e,t){for(let[n,r]of Zf.entries())if(e.startsWith(r,t))return[n+1,t+r.length];throw Error(`sprig toDate: expected month name at pos ${t}`)}function rp(e,t){for(let[n,r]of Qf.entries())if(e.startsWith(r,t))return[n+1,t+r.length];throw Error(`sprig toDate: expected short month name at pos ${t}`)}function ip(e,t){for(let n of[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`])if(e.startsWith(n,t))return t+n.length;throw Error(`sprig toDate: expected weekday name at pos ${t}`)}function ap(e,t){for(let n of[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`])if(e.startsWith(n,t))return t+n.length;throw Error(`sprig toDate: expected short weekday name at pos ${t}`)}function op(e,t){if(e[t]===` `){let[n,r]=tp(e,t+1,1,1);return[n,r]}return tp(e,t,1,2)}function sp(e,t,n){let r=e[t]===`+`?1:e[t]===`-`?-1:0;if(r===0)throw Error(`sprig toDate: expected +/- at pos ${t}`);let i=t+1,[a,o]=tp(e,i,2,2);i=o;let s=0;if(n&&e[i]===`:`){let[t,n]=tp(e,i+1,2,2);s=t,i=n}else if(!n){let[t,n]=tp(e,i,2,2);s=t,i=n}return[r*(a*60+s),i]}function cp(e,t,n,r){if(e[t]===`Z`)return[0,t+1];if(r){let n=e[t]===`+`?1:e[t]===`-`?-1:0;if(n===0)throw Error(`sprig toDate: expected Z or +/- at pos ${t}`);let[r,i]=tp(e,t+1,2,2);return[n*r*60,i]}return sp(e,t,n)}function lp(e,t){let n=t;for(;n<e.length&&e.charCodeAt(n)>=65&&e.charCodeAt(n)<=90;)n++;if(n===t)throw Error(`sprig toDate: expected timezone abbreviation at pos ${t}`);return n}function up(e,t,n){let[r,i]=ep(e,t,n),a=parseInt(r.padEnd(9,`0`),10);return[Math.round(a/1e6),i]}function dp(e,t,n,r){let i={...r};switch(e){case`January`:{let[e,r]=np(t,n);return i.month=e,[r,i]}case`Monday`:return[ip(t,n),i];case`Jan`:{let[e,r]=rp(t,n);return i.month=e,[r,i]}case`Mon`:return[ap(t,n),i];case`2006`:{let[e,r]=tp(t,n,4,4);return i.year=e,[r,i]}case`06`:{let[e,r]=tp(t,n,2,2);return i.year=e<70?2e3+e:1900+e,[r,i]}case`01`:{let[e,r]=tp(t,n,2,2);return i.month=e,[r,i]}case`1`:{let[e,r]=tp(t,n,1,2);return i.month=e,[r,i]}case`_2`:{let[e,r]=op(t,n);return i.day=e,[r,i]}case`02`:{let[e,r]=tp(t,n,2,2);return i.day=e,[r,i]}case`2`:{let[e,r]=tp(t,n,1,2);return i.day=e,[r,i]}case`15`:{let[e,r]=tp(t,n,2,2);return i.hour=e,[r,i]}case`03`:{let[e,r]=tp(t,n,2,2);return i.hour=e,i.hour12=!0,[r,i]}case`3`:{let[e,r]=tp(t,n,1,2);return i.hour=e,i.hour12=!0,[r,i]}case`04`:{let[e,r]=tp(t,n,2,2);return i.minute=e,[r,i]}case`4`:{let[e,r]=tp(t,n,1,2);return i.minute=e,[r,i]}case`05`:{let[e,r]=tp(t,n,2,2);return i.second=e,[r,i]}case`5`:{let[e,r]=tp(t,n,1,2);return i.second=e,[r,i]}case`PM`:case`pm`:{let e=t.slice(n,n+2).toLowerCase();if(e!==`am`&&e!==`pm`)throw Error(`sprig toDate: expected AM/PM at pos ${n}, got ${JSON.stringify(t.slice(n,n+2))}`);return i.isPM=e===`pm`,i.hour12=!0,[n+2,i]}case`MST`:return[lp(t,n),i];case`-0700`:{let[e,r]=sp(t,n,!1);return i.offsetMinutes=e,[r,i]}case`-07:00`:{let[e,r]=sp(t,n,!0);return i.offsetMinutes=e,[r,i]}case`-07`:{let e=t[n]===`+`?1:t[n]===`-`?-1:0;if(e===0)throw Error(`sprig toDate: expected +/- at pos ${n}`);let[r,a]=tp(t,n+1,2,2);return i.offsetMinutes=e*r*60,[a,i]}case`Z0700`:{let[e,r]=cp(t,n,!1,!1);return i.offsetMinutes=e,[r,i]}case`Z07:00`:{let[e,r]=cp(t,n,!0,!1);return i.offsetMinutes=e,[r,i]}case`Z07`:{let[e,r]=cp(t,n,!1,!0);return i.offsetMinutes=e,[r,i]}case`.000000000`:{if(t[n]!==`.`)throw Error(`sprig toDate: expected . at pos ${n}`);let[e,r]=up(t,n+1,9);return i.ms=e,[r,i]}case`.999999999`:{if(t[n]!==`.`)return[n,i];let e=n+1,r=e;for(;r<t.length&&t.charCodeAt(r)>=48&&t.charCodeAt(r)<=57;)r++;let a=t.slice(e,r).padEnd(9,`0`);return i.ms=Math.round(parseInt(a,10)/1e6),[r,i]}case`.000000`:{if(t[n]!==`.`)throw Error(`sprig toDate: expected . at pos ${n}`);let[e,r]=up(t,n+1,6);return i.ms=e,[r,i]}case`.999999`:{if(t[n]!==`.`)return[n,i];let e=n+1,r=e;for(;r<t.length&&t.charCodeAt(r)>=48&&t.charCodeAt(r)<=57;)r++;let a=t.slice(e,r).padEnd(9,`0`);return i.ms=Math.round(parseInt(a,10)/1e6),[r,i]}case`.000`:{if(t[n]!==`.`)throw Error(`sprig toDate: expected . at pos ${n}`);let[e,r]=up(t,n+1,3);return i.ms=e,[r,i]}case`.999`:{if(t[n]!==`.`)return[n,i];let e=n+1,r=e;for(;r<t.length&&t.charCodeAt(r)>=48&&t.charCodeAt(r)<=57;)r++;let a=t.slice(e,r).padEnd(3,`0`);return i.ms=parseInt(a,10),[r,i]}}throw Error(`sprig toDate: unhandled token ${e}`)}const fp=`.000000000,.999999999,.000000,.999999,.000,.999,January,Monday,Z07:00,-07:00,Z0700,-0700,2006,Jan,Mon,MST,-07,Z07,15,01,02,_2,03,04,05,06,PM,pm,1,2,3,4,5`.split(`,`);function pp(e,t){let n=0,r=0,i=$f();for(;n<e.length;){let a=!1;for(let o of fp)if(e.startsWith(o,n)){let[e,s]=dp(o,t,r,i);r=e,i=s,n+=o.length,a=!0;break}if(!a){let i=e.charAt(n);if(t[r]!==i)throw Error(`sprig toDate: expected ${JSON.stringify(i)} at pos ${r}, got ${JSON.stringify(t[r])}`);n++,r++}}if(r!==t.length)throw Error(`sprig toDate: extra characters at pos ${r}: ${JSON.stringify(t.slice(r))}`);if(i.hour12){let e=i.hour%12;i.hour=i.isPM?e+12:e}let a=Date.UTC(i.year,i.month-1,i.day,i.hour,i.minute,i.second,i.ms)-i.offsetMinutes*60*1e3;return new Date(a)}function mp(e,t){return pp(e,t)}function hp(e){return String(Math.floor(pf(e).getTime()/1e3))}function gp(e=()=>new Date){return{now:{fn:()=>Xf(e),argTypes:[]},date:{fn:(e,t)=>Lf(e,t),argTypes:[`string`,`value`]},dateInZone:{fn:(e,t,n)=>Rf(e,t,n),argTypes:[`string`,`value`,`string`]},dateModify:{fn:(e,t)=>zf(e,t),argTypes:[`string`,`value`]},htmlDate:{fn:e=>Jf(e),argTypes:[`value`]},htmlDateInZone:{fn:(e,t)=>Yf(e,t),argTypes:[`value`,`string`]},duration:{fn:e=>Bf(e),argTypes:[`value`]},durationRound:{fn:e=>qf(e),argTypes:[`value`]},toDate:{fn:(e,t)=>mp(e,t),argTypes:[`string`,`string`]},ago:{fn:t=>mf(t,e),argTypes:[`value`]},unixEpoch:{fn:e=>hp(e),argTypes:[`value`]}}}function _p(e){return e==null||e===!1?!0:typeof e==`number`?e===0||Number.isNaN(e):typeof e==`bigint`?e===0n:typeof e==`string`||Array.isArray(e)?e.length===0:e instanceof Map||e instanceof Set?e.size===0:typeof e==`object`?Object.keys(e).length===0:!1}function vp(...e){for(let t of e)if(!_p(t))return t}function yp(e,t){return _p(t)?e:t}function bp(e){return JSON.parse(e)}function xp(e,t,n){return qu(n)?e:t}function Sp(e){return JSON.stringify(e)??`null`}function Cp(e){return JSON.stringify(e,null,2)??`null`}function wp(){return{default:{fn:(e,t)=>yp(e,t),argTypes:[`value`,`truthy`]},empty:{fn:e=>_p(e),argTypes:[`truthy`]},coalesce:{fn:(...e)=>vp(...e),argTypes:[`truthy`]},ternary:{fn:(e,t,n)=>xp(e,t,n),argTypes:[`value`,`value`,`truthy`]},fromJson:{fn:e=>bp(e),argTypes:[`string`]},toJson:{fn:e=>Sp(e),argTypes:[`serializable`],returnType:`string`},toPrettyJson:{fn:e=>Cp(e),argTypes:[`serializable`],returnType:`string`}}}function Tp(...e){let t={};for(let n=0;n<e.length;n+=2)t[e[n]]=e[n+1];return t}function Ep(e){if(e.kind!==`call`||e.name!==`dict`||e.args.length%2!=0)return null;let t=[];for(let[n,r]of e.args.entries()){if(r.kind!==`literal`||n%2==0&&typeof r.value!=`string`)return null;t.push(r.value)}return Tp(...t)}function Dp(e,t){return e[t]}function Op(e,t){return t in e}function kp(e){return Object.keys(e)}function Ap(e,...t){let n={...e};for(let e of t)for(let[t,r]of Object.entries(e))t in n||(n[t]=r);return n}function jp(e,...t){let n={...e};for(let e of t)Object.assign(n,e);return n}function Mp(e,...t){let n=new Set(t),r={};for(let[t,i]of Object.entries(e))n.has(t)||(r[t]=i);return r}function Np(e,...t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function Pp(e,...t){let n=[];for(let r of t)e in r&&n.push(r[e]);return n}function Fp(e,t,n){return e[t]=n,e}function Ip(e,t){return delete e[t],e}function Lp(e){return Object.values(e)}function Rp(){return{dict:{fn:(...e)=>Tp(...e),argTypes:[`string`,`value`],argTypePattern:`alternating`},get:{fn:(e,t)=>Dp(e,t),argTypes:[`dict`,`string`]},set:{fn:(e,t,n)=>Fp(e,t,n),argTypes:[`dict`,`string`,`value`]},unset:{fn:(e,t)=>Ip(e,t),argTypes:[`dict`,`string`]},keys:{fn:e=>kp(e),argTypes:[`dict`]},values:{fn:e=>Lp(e),argTypes:[`dict`]},pluck:{fn:(e,...t)=>Pp(e,...t),argTypes:[`string`,`dict`]},pick:{fn:(e,...t)=>Np(e,...t),argTypes:[`dict`,`string`]},omit:{fn:(e,...t)=>Mp(e,...t),argTypes:[`dict`,`string`]},hasKey:{fn:(e,t)=>Op(e,t),argTypes:[`dict`,`string`]},merge:{fn:(e,...t)=>Ap(e,...t),argTypes:[`dict`]},mergeOverwrite:{fn:(e,...t)=>jp(e,...t),argTypes:[`dict`]}}}new TextEncoder,new Map(Array.from(`ABCDEFGHIJKLMNOPQRSTUVWXYZ234567`).map((e,t)=>[e,t])),new TextDecoder,new TextEncoder,new TextDecoder,new TextEncoder;function zp(...e){for(let t of e)if(_p(t))return!1;return!0}function Bp(...e){for(let t of e)if(!_p(t))return!0;return!1}function Vp(e,t){return[...e,t]}function Hp(e,t){let n=Math.max(1,e),r=[];for(let e=0;e<t.length;e+=n)r.push(t.slice(e,e+n));return r}function Up(e){return e.filter(e=>!_p(e))}function Wp(...e){let t=[];for(let n of e)t.push(...n);return t}const Gp={line:0,column:0,offset:0};function Kp(e,t,n,r){return new tu(e,t,n,r,Gp)}function qp(...e){if(e.length<3)throw Kp(`dig`,0,`at least 3 arguments (...keys, default, dict)`,`${e.length} argument${e.length===1?``:`s`}`);let t=e[e.length-1],n=e[e.length-2],r=e.slice(0,-2);if(!Yp(t))throw Kp(`dig`,e.length-1,`dict`,Xp(t));for(let e=0;e<r.length;e++)if(typeof r[e]!=`string`)throw Kp(`dig`,e,`string`,Xp(r[e]));return Jp(t,n,r,e.length)}function Jp(e,t,n,r){let i=n[0];if(!Object.hasOwn(e,i))return t;let a=e[i];if(n.length===1)return a;if(!Yp(a))throw Kp(`dig`,r-1,`dict at intermediate key`,Xp(a));return Jp(a,t,n.slice(1),r)}function Yp(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Map)&&!(e instanceof Set)}function Xp(e){return e===null?`null`:Array.isArray(e)?`array`:e instanceof Map?`Map`:e instanceof Set?`Set`:typeof e}function Zp(e){return e[0]}function Qp(e,t){return t.some(t=>Uu(t,e))}function $p(e){return e.slice(0,-1)}function em(e){return e[e.length-1]}function tm(e){return Array.isArray(e)||typeof e==`string`?e.length:e instanceof Map||e instanceof Set?e.size:Object.keys(e).length}function nm(...e){return e}function rm(e,t){return[t,...e]}function im(e){return e.slice(1)}function am(e){return[...e].reverse()}function om(e,t,n){let r=t===void 0?0:t,i=n===void 0?e.length:n;return e.slice(r,i)}function sm(e){let t=[];for(let n of e)n!=null&&t.push(String(n));return t.sort()}function cm(e){let t=[];for(let n of e)t.some(e=>Uu(e,n))||t.push(n);return t}function lm(e,...t){return e.filter(e=>!t.some(t=>Uu(t,e)))}function um(){return{list:{fn:(...e)=>nm(...e),argTypes:[`value`]},first:{fn:e=>Zp(e),argTypes:[`list`]},last:{fn:e=>em(e),argTypes:[`list`]},rest:{fn:e=>im(e),argTypes:[`list`]},initial:{fn:e=>$p(e),argTypes:[`list`]},len:{fn:e=>tm(e),argTypes:[`sized`]},reverse:{fn:e=>am(e),argTypes:[`list`]},uniq:{fn:e=>cm(e),argTypes:[`list`]},without:{fn:(e,...t)=>lm(e,...t),argTypes:[`list`,`value`]},has:{fn:(e,t)=>Qp(e,t),argTypes:[`value`,`list`]},compact:{fn:e=>Up(e),argTypes:[`list`]},slice:{fn:(e,t,n)=>om(e,t,n),argTypes:[`list`,`int`,`int`]},concat:{fn:(...e)=>Wp(...e),argTypes:[`list`]},chunk:{fn:(e,t)=>Hp(e,t),argTypes:[`int`,`list`]},prepend:{fn:(e,t)=>rm(e,t),argTypes:[`list`,`value`]},append:{fn:(e,t)=>Vp(e,t),argTypes:[`list`,`value`]},sortAlpha:{fn:e=>sm(e),argTypes:[`list`],returnType:`list`},push:{fn:(e,t)=>Vp(e,t),argTypes:[`list`,`value`]},tuple:{fn:(...e)=>nm(...e),argTypes:[`value`]},dig:{fn:(...e)=>qp(...e),argTypes:[`value`]},all:{fn:(...e)=>zp(...e),argTypes:[`truthy`],returnType:`bool`},any:{fn:(...e)=>Bp(...e),argTypes:[`truthy`],returnType:`bool`}}}function dm(...e){return e.reduce((e,t)=>e+t,0)}function fm(e){return e+1}function pm(e){return e+1}function mm(...e){return e.reduce((e,t)=>e+t,0)}function hm(e){return Math.ceil(e)}function gm(e,t){return Math.trunc(e/t)}function _m(e,t){return e/t}function vm(e){return Math.floor(e)}function ym(...e){return e.reduce((e,t)=>t>e?t:e,-1/0)}function bm(...e){return e.reduce((e,t)=>Math.max(e,t),-1/0)}function xm(...e){return e.reduce((e,t)=>t<e?t:e,1/0)}function Sm(...e){return e.reduce((e,t)=>Math.min(e,t),1/0)}function Cm(e,t){return e%t}function wm(...e){return e.reduce((e,t)=>e*t,1)}function Tm(...e){return e.reduce((e,t)=>e*t,1)}function Em(e,t=0){let n=10**t;return Math.sign(e)*Math.round(Math.abs(e)*n)/n}function Dm(e,t,n){let r=[];if(t<e){if(n>=0)return r;for(let i=e;i>t;i+=n)r.push(i);return r}if(n<=0)return r;for(let i=e;i<t;i+=n)r.push(i);return r}function Om(...e){let t=1;switch(e.length){case 0:return``;case 1:{let n=e[0];return n<1&&(t=-1),Dm(1,n+t,t).join(` `)}case 2:{let t=e[0],n=e[1],r=n<t?-1:1;return Dm(t,n+r,r).join(` `)}case 3:{let n=e[0],r=e[1],i=e[2];return i<n&&(t=-1,r>0)?``:Dm(n,i+t,r).join(` `)}default:return``}}function km(e,t){return e-t}function Am(e,t){return e-t}function jm(e){return Dm(0,e,e<0?-1:1)}function Mm(){return{add:{fn:(...e)=>dm(...e),argTypes:[`int`]},sub:{fn:(e,t)=>km(e,t),argTypes:[`int`,`int`]},mul:{fn:(...e)=>wm(...e),argTypes:[`int`]},div:{fn:(e,t)=>gm(e,t),argTypes:[`int`,`int`]},mod:{fn:(e,t)=>Cm(e,t),argTypes:[`int`,`int`]},min:{fn:(...e)=>xm(...e),argTypes:[`int`]},max:{fn:(...e)=>ym(...e),argTypes:[`int`]},floor:{fn:e=>vm(e),argTypes:[`float`]},ceil:{fn:e=>hm(e),argTypes:[`float`]},round:{fn:(e,t)=>Em(e,t),argTypes:[`float`,`int`]},addf:{fn:(...e)=>mm(...e),argTypes:[`float`]},subf:{fn:(e,t)=>Am(e,t),argTypes:[`float`,`float`]},mulf:{fn:(...e)=>Tm(...e),argTypes:[`float`]},divf:{fn:(e,t)=>_m(e,t),argTypes:[`float`,`float`]},add1:{fn:e=>fm(e),argTypes:[`int`]},add1f:{fn:e=>pm(e),argTypes:[`float`]},maxf:{fn:(...e)=>bm(...e),argTypes:[`float`]},minf:{fn:(...e)=>Sm(...e),argTypes:[`float`]},biggest:{fn:(...e)=>ym(...e),argTypes:[`int`]},seq:{fn:(...e)=>Om(...e),argTypes:[`int`],returnType:`string`},until:{fn:e=>jm(e),argTypes:[`int`],returnType:`list`},untilStep:{fn:(e,t,n)=>Dm(e,t,n),argTypes:[`int`,`int`,`int`],returnType:`list`}}}Array.from({length:95},(e,t)=>String.fromCharCode(t+32)).join(``);function Nm(e,t){return t.length<=e||e<4?t:`${t.slice(0,e-3)}...`}function Pm(e,t,n){return t<7||n.length<t||e<0||e>n.length-t+1?n:`...${n.slice(e,e+t-6)}...`}const q={Invalid:0,Number:1,UpperCase:2,Alphabet:3,Connector:4,Punct:5,Other:6},Fm=/^[-_\s]$/,Im=/^\p{P}$/u,Lm=/^\p{L}$/u,Rm=/^\p{Lu}$/u,zm=/^\p{N}$/u;function Bm(e){return e!==void 0&&Fm.test(e)}function Vm(e){return e!==void 0&&Lm.test(e)}function Hm(e){return e!==void 0&&Rm.test(e)}function Um(e){return e!==void 0&&zm.test(e)}function Wm(e){return e!==void 0&&Im.test(e)}function Gm(e,t){if(t>=e.length)return{word:{wt:q.Invalid,text:``},next:t};let n=e[t],r=t+1;if(Bm(n)){for(;r<e.length&&Bm(e[r]);)r++;return{word:{wt:q.Connector,text:e.slice(t,r).join(``)},next:r}}if(Wm(n)){for(;r<e.length&&Wm(e[r]);)r++;return{word:{wt:q.Punct,text:e.slice(t,r).join(``)},next:r}}if(Hm(n)){if(r>=e.length)return{word:{wt:q.UpperCase,text:n},next:r};if(Hm(e[r])){let n=r;for(;n<e.length&&Hm(e[n]);)n++;return n<e.length&&Vm(e[n])?{word:{wt:q.UpperCase,text:e.slice(t,n-1).join(``)},next:n-1}:{word:{wt:q.UpperCase,text:e.slice(t,n).join(``)},next:n}}if(Vm(e[r])){let n=r+1;for(;n<e.length&&Vm(e[n])&&!Hm(e[n]);)n++;return{word:{wt:q.UpperCase,text:e.slice(t,n).join(``)},next:n}}return{word:{wt:q.UpperCase,text:n},next:r}}if(Vm(n)){for(;r<e.length&&Vm(e[r])&&!Hm(e[r]);)r++;return{word:{wt:q.Alphabet,text:e.slice(t,r).join(``)},next:r}}if(Um(n)){for(;r<e.length&&Um(e[r]);)r++;return{word:{wt:q.Number,text:e.slice(t,r).join(``)},next:r}}for(;r<e.length&&!Bm(e[r])&&!Vm(e[r])&&!Um(e[r])&&!Wm(e[r]);)r++;return{word:{wt:q.Other,text:e.slice(t,r).join(``)},next:r}}function Km(e,t,n){if(t.wt!==q.UpperCase&&t.wt!==q.Connector){e.push(t.text);return}for(let r of t.text)Bm(r)?e.push(n):Hm(r)?e.push(r.toLowerCase()):e.push(r)}function qm(e,t){if(e.length===0)return``;let n=Array.from(e),r=[],{word:i,next:a}=Gm(n,0);for(;a<n.length;){i.wt!==q.Connector&&Km(r,i,t);let e=i,o=i;if({word:i,next:a}=Gm(n,a),e.wt===q.Number){for(;i.wt===q.Alphabet||i.wt===q.Number;)Km(r,i,t),{word:i,next:a}=Gm(n,a);i.wt!==q.Invalid&&i.wt!==q.Punct&&i.wt!==q.Connector&&r.push(t);continue}if(e.wt===q.Connector){Km(r,o,t);continue}if(e.wt===q.Punct)continue;if(i.wt!==q.Number){i.wt!==q.Connector&&i.wt!==q.Punct&&r.push(t);continue}if(a>=n.length)continue;let s=i;if({word:i,next:a}=Gm(n,a),i.wt!==q.Alphabet){Km(r,s,t),i.wt!==q.Connector&&i.wt!==q.Punct&&r.push(t);continue}for(r.push(t),Km(r,s,t);i.wt===q.Alphabet||i.wt===q.Number;)Km(r,i,t),{word:i,next:a}=Gm(n,a);i.wt!==q.Invalid&&i.wt!==q.Connector&&i.wt!==q.Punct&&r.push(t)}return Km(r,i,t),r.join(``).toLowerCase()}function Jm(e){if(e.length===0)return``;let t=Array.from(e),n=[],r=0,i=``;for(;r<t.length;){if(i=t[r],r++,!Bm(i)){i=i.toUpperCase();break}n.push(i)}if(r>=t.length)return t.length>0&&n.push(i),n.join(``);for(;r<t.length;){let e=i;if(i=t[r],r++,Bm(i)&&Bm(e)){n.push(e);continue}Bm(e)?i=i.toUpperCase():(i=i.toLowerCase(),n.push(e))}return n.push(i),n.join(``)}function Ym(e){return Jm(e)}function Xm(...e){return e.join(` `)}function Zm(e,t){return t.includes(e)}function Qm(e,t){return t.startsWith(e)}function $m(e,t){return t.endsWith(e)}function eh(e,t){let n=` `.repeat(Math.max(0,e));return t.split(`
49
49
  `).map(e=>n+e).join(`
50
- `)}function eh(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 th(e,t){let n=[];for(let e of t){if(typeof e==`object`&&e)throw Gp(`join`,2,`list of strings/primitives`,`list element of type ${nh(e)}`);n.push(String(e))}return n.join(e)}function nh(e){return Array.isArray(e)?`array`:e instanceof Map?`Map`:e instanceof Set?`Set`:`object`}function rh(e){return Km(e,`-`)}function ih(e){return e.toLowerCase()}function ah(e,t){return`\n${$m(e,t)}`}function oh(e){return e.replace(/\s+/g,``)}function sh(e,t,n){return n===1?e:t}function ch(...e){return e.map(e=>`"${e}"`).join(` `)}function lh(e){return e.replace(/[\\.+*?()|[\]{}^$]/g,`\\$&`)}function uh(e,t){return t.repeat(Math.max(0,e))}function dh(e,t,n){return n.split(e).join(t)}function fh(e){return Km(e,`_`)}function ph(e,t){let n=t.split(e),r={};for(let e=0;e<n.length;e++)r[`_${e}`]=n[e];return r}function mh(e,t){return t.split(e)}function hh(e,t,n){let r=gh(n,e,t),i={};for(let e=0;e<r.length;e++)i[`_${e}`]=r[e]??``;return i}function gh(e,t,n){if(n===0)return[];let r=t===``?Array.from(e):e.split(t);if(n<0||r.length<=n)return r;let i=r.slice(0,n-1),a=r.slice(n-1).join(t);return[...i,a]}function _h(...e){return e.map(e=>`'${e}'`).join(` `)}function vh(e,t,n){let r=t<0||t>n.length?n.length:t,i=Math.min(Math.max(0,e),r);return n.slice(i,r)}function yh(e){let t=``;for(let n of e)bh(n)?t+=n.toLowerCase():xh(n)?t+=n.toUpperCase():t+=n;return t}function bh(e){return e!==e.toLowerCase()&&e===e.toUpperCase()}function xh(e){return e!==e.toUpperCase()&&e===e.toLowerCase()}function Sh(e){return e.replace(/\b([a-zA-Z])/g,e=>e.toUpperCase())}function Ch(e){return e.trim()}function wh(e,t){if(e.length===0)return t;let n=new Set([...e]),r=0;for(;r<t.length&&n.has(t[r]);)r+=1;let i=t.length;for(;i>r&&n.has(t[i-1]);)--i;return t.slice(r,i)}function Th(e,t){return t.startsWith(e)?t.slice(e.length):t}function Eh(e,t){return t.endsWith(e)?t.slice(0,t.length-e.length):t}function Dh(e,t){if(e<0){let n=-e;return n>=t.length?t:t.slice(t.length-n)}return e>=t.length?t:t.slice(0,e)}function Oh(e){return e.replace(/\b([A-Z])/g,e=>e.toLowerCase())}function kh(e){return e.toUpperCase()}function Ah(e,t){return jh(e,`
51
- `,t)}function jh(e,t,n){if(e<=0)return n;let r=[];for(let t of n.split(`
52
- `)){let n=``;for(let i of t.split(/\s+/))i.length!==0&&(n.length===0?n=i:n.length+1+i.length<=e?n+=` ${i}`:(r.push(n),n=i));n.length>0&&r.push(n)}return r.join(t)}function Mh(e,t,n){return jh(e,t,n)}function Nh(){return{abbrev:{fn:(e,t)=>Mm(e,t),argTypes:[`int`,`string`]},abbrevboth:{fn:(e,t,n)=>Nm(e,t,n),argTypes:[`int`,`int`,`string`]},camelcase:{fn:e=>Jm(e),argTypes:[`string`],returnType:`string`},cat:{fn:(...e)=>Ym(...e),argTypes:[`string`]},contains:{fn:(e,t)=>Xm(e,t),argTypes:[`string`,`string`]},hasPrefix:{fn:(e,t)=>Zm(e,t),argTypes:[`string`,`string`]},hasSuffix:{fn:(e,t)=>Qm(e,t),argTypes:[`string`,`string`]},indent:{fn:(e,t)=>$m(e,t),argTypes:[`int`,`string`]},initials:{fn:e=>eh(e),argTypes:[`string`]},join:{fn:(e,t)=>th(e,t),argTypes:[`string`,`list`]},kebabcase:{fn:e=>rh(e),argTypes:[`string`],returnType:`string`},lower:{fn:e=>ih(e),argTypes:[`string`]},nindent:{fn:(e,t)=>ah(e,t),argTypes:[`int`,`string`]},nospace:{fn:e=>oh(e),argTypes:[`string`],returnType:`string`},plural:{fn:(e,t,n)=>sh(e,t,n),argTypes:[`string`,`string`,`int`],returnType:`string`},quote:{fn:(...e)=>ch(...e),argTypes:[`string`]},regexQuoteMeta:{fn:e=>lh(e),argTypes:[`string`],returnType:`string`},repeat:{fn:(e,t)=>uh(e,t),argTypes:[`int`,`string`]},replace:{fn:(e,t,n)=>dh(e,t,n),argTypes:[`string`,`string`,`string`]},snakecase:{fn:e=>fh(e),argTypes:[`string`],returnType:`string`},split:{fn:(e,t)=>ph(e,t),argTypes:[`string`,`string`]},splitList:{fn:(e,t)=>mh(e,t),argTypes:[`string`,`string`]},splitn:{fn:(e,t,n)=>hh(e,t,n),argTypes:[`string`,`int`,`string`],returnType:`dict`},squote:{fn:(...e)=>_h(...e),argTypes:[`string`]},substr:{fn:(e,t,n)=>vh(e,t,n),argTypes:[`int`,`int`,`string`]},swapcase:{fn:e=>yh(e),argTypes:[`string`],returnType:`string`},title:{fn:e=>Sh(e),argTypes:[`string`]},trim:{fn:e=>Ch(e),argTypes:[`string`]},trimAll:{fn:(e,t)=>wh(e,t),argTypes:[`string`,`string`]},trimPrefix:{fn:(e,t)=>Th(e,t),argTypes:[`string`,`string`]},trimSuffix:{fn:(e,t)=>Eh(e,t),argTypes:[`string`,`string`]},trunc:{fn:(e,t)=>Dh(e,t),argTypes:[`int`,`string`]},untitle:{fn:e=>Oh(e),argTypes:[`string`]},upper:{fn:e=>kh(e),argTypes:[`string`]},wrap:{fn:(e,t)=>Ah(e,t),argTypes:[`int`,`string`]},wrapWith:{fn:(e,t,n)=>Mh(e,t,n),argTypes:[`int`,`string`,`string`]}}}function Ph(e){return e}function Fh(e,t,n){return n===void 0?ul+cl(e)+`.`+cl(t):Ih(n)}function Ih(e){return ul+cl(e)}function Lh(e,t){return e+`.`+t}function Rh(e){return e+`.page`}const zh=[`closeOnPick`,`paged`,`key`,`distribution`],Bh=e=>zh.includes(e),Vh=`"closeOnPick" (bool, default false), "paged" (bool, default true), "key" (string, accordion grouping), "distribution" (one of ${Pi.map(e=>`"${e}"`).join(`, `)}; default "van-der-corput")`;function Hh(e){for(let t of Object.keys(e))if(!Bh(t))throw Error(`unknown {{ menu }} option "${t}" — the options dict takes ${Vh}`);let t=(t,n)=>{let r=e[t];if(r===void 0)return n;if(typeof r!=`boolean`)throw Error(`{{ menu }} option "${t}" must be a boolean, got ${JSON.stringify(r)} (e.g. (dict "${t}" ${String(!n)}))`);return r},n=e.key;if(n!==void 0&&typeof n!=`string`)throw Error(`{{ menu }} option "key" must be a string naming the accordion group, got ${JSON.stringify(n)}`);if(n===``)throw Error(`{{ menu }} has an empty accordion key — a shared key must be a non-empty name (or omit "key" for an independent menu)`);let r=e.distribution;if(r!==void 0&&!Fi(r))throw Error(`{{ menu }} option "distribution" must be one of: ${Pi.join(`, `)}; got ${JSON.stringify(r)}`);return{closeOnPick:t(`closeOnPick`,!1),paged:t(`paged`,!0),key:n,distribution:Li(r)}}const Uh=`menu`,Wh=`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`,Gh=e=>e.kind===`call`&&e.name===`dict`,Kh=e=>e.kind===`literal`&&typeof e.value!=`object`,qh=e=>Xs(``,e,2)===void 0;function Jh(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&&Gh(i)?i:void 0,o=a===void 0?r:r.slice(0,-1);if(o.some(Gh))return t(`whose options (dict …) is not its last argument — ${Wh}`);if(i!==void 0&&a===void 0&&!Kh(i)&&qh(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=Xs(`whose trigger`,o.length,2);if(s!==void 0)return t(`${s} — ${Wh}`);let c=a===void 0?{}:Tp(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=Hh(c)}catch(e){return t(`with invalid options — ${e.message}`)}let u=l.key;if(u!==void 0){let e=hl(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 "${Ih(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 Yh(e){let t=Fd({fromString:e=>e});try{return t.parse(e).referencedCalls().filter(e=>e.name===Uh).map(Jh)}catch{return`parse-failed`}}function Xh(e){let t=Fd({fromString:e=>e});try{return t.parse(e).referencedFunctions().has(Uh)}catch{return!1}}function Zh(e,t,n){e.issues.push({path:t,message:n,line:W(e.source,[`root`])})}function Qh(e,t){gl(e,t,ul,`{{ menu }} helpers`);for(let[n,r]of Object.entries(t.helpers??{}))Xh(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`&&Xh(i)&&Zh(e,`segments.${t}.${n}`,`segment "${t}" uses {{ menu }} in its "${n}" — a menu is only valid in a segment's "template" (its placement is published only there; "${n}" needs a ${n===`when`?`predicate`:`color`}). Move the {{ menu }} into the template.`)}if(t.root!==void 0)for(let n of Xo(Us(t.root)))typeof n.when==`string`&&Xh(n.when)&&Zh(e,`root`,`a layout node's "when" predicate uses {{ menu }} — a menu is only valid in a segment's "template", not a node predicate. Move it into a segment.`);let r=new Set,i={},a=new Set,o=new Map;for(let[t,{template:s}]of Object.entries(n)){if(s===void 0||!Xh(s))continue;let n=Yh(s);if(n!==`parse-failed`)for(let s of n){if(s.kind===`issue`){Zh(e,`segments.${t}`,`segment "${t}" has a {{ menu }} ${s.message}.`);continue}let{apply:n,options:c}=s;if(n===``){Zh(e,`segments.${t}`,`segment "${t}" has a {{ menu }} with an empty apply-action name — an empty member aliases the absent-state sentinel ("") so the menu would render open before any click. Name the apply action.`);continue}let l=Ph(n);if(l===`closed`){Zh(e,`segments.${t}`,`segment "${t}" has a {{ menu }} whose apply action is named "${Js}", which collides with the menu's closed-state sentinel and leaves it unopenable. Rename the action.`);continue}let u=Fh(t,n,c.key),d=Rh(u),f=c.key===void 0?`ind${t}${n}`:`key${c.key}`,p=[u,d].find(e=>{let t=o.get(e);return t!==void 0&&t!==f});if(p!==void 0){Zh(e,`segments.${t}`,`two {{ menu }} disclosures normalize to the same state key ("${p}") but were declared differently — distinct names that differ only by non-alphanumeric characters (e.g. "a-b" vs "a_b") collapse to one key and would silently share open-state. Rename so they don't collide.`);continue}o.set(u,f),o.set(d,f);let m=Lh(u,l);if(a.has(m)){Zh(e,`segments.${t}`,`two {{ menu }} disclosures resolve to the same identity ("${m}") — ${c.key===void 0?`a segment cannot contain two menus over the same apply action "${n}"`:`menus sharing key "${c.key}" must have distinct apply actions`}.`);continue}a.add(m),r.add(u),i[m]=ic(u,l)}}if(r.size===0)return;let s={};for(let e of r){s[e]=rc(e,Js);let t=Rh(e);s[t]={kind:`state`,key:t,default:`0`},i[t]={set:t,int:!0}}t.variables={...t.variables??{},...s},t.actions={...t.actions??{},...i}}const $h=`edit.mode`,eg=`edit.toggle`,tg=`open`,ng={variable:$h,key:$h,member:tg},rg=ec(ng);function ig(e){let t=Fd({fromString:e=>e});try{return t.parse(e).referencedCalls().some(e=>e.name===`action`&&e.args[0]===`edit.toggle`)}catch{return!1}}function ag(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`&&ig(e))return!0;return!1}function og(e,t){if(gl(e,t,dl,`edit mode`),!ag(t))return;let n={[$h]:rc($h,Js)},r={[eg]:ic($h,tg)};t.variables={...t.variables??{},...n},t.actions={...t.actions??{},...r}}const sg=/"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|`[^`]*`/g,cg=/(?<![A-Za-z0-9_)])\.([A-Za-z_][\w]*(?:\.[A-Za-z_][\w]*)*)/g;function*lg(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)}}function ug(e){let t=new Set;for(let n of lg(e)){let e=n.replace(sg,``),r;for(cg.lastIndex=0;(r=cg.exec(e))!==null;)t.add(r[1])}return t}const dg=/\baction\s+$/;function fg(e){let t=new Set;for(let n of lg(e)){let e=0,r;for(sg.lastIndex=0;(r=sg.exec(n))!==null;)dg.test(n.slice(e,r.index))&&t.add(r[0].slice(1,-1)),e=r.index+r[0].length}return t}const pg=/\b(picker|menu|carousel)\s+$/;function mg(e){let t=new Set;for(let n of lg(e)){let e=0,r=0,i;for(sg.lastIndex=0;(i=sg.exec(n))!==null;){let a=pg.exec(n.slice(e,i.index));a!==null&&(r=a[1]===`picker`?2:1),r>0&&(t.add(i[0].slice(1,-1)),r--),e=i.index+i[0].length}}return t}function hg(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}var gg=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:rn}function r(){N||t(`Proxy not available`)}function i(e){var t=!1;return function(){if(!t)return t=!0,e.apply(this,arguments)}}function a(e){return typeof e==`function`}function o(e){switch(typeof e){case`string`:case`symbol`:case`number`:return!0}return!1}function s(e){return typeof e==`object`&&!!e}function c(e){if(!s(e))return!1;var t=Object.getPrototypeOf(e);if(t==null)return!0;var n=Object.hasOwnProperty.call(t,`constructor`)&&t.constructor;return typeof n==`function`&&n.toString()===un}function l(e){var t=e?.constructor;return!!t&&(t.name===`GeneratorFunction`||t.displayName===`GeneratorFunction`)}function u(e,t,n){on(e,t,{enumerable:!1,writable:!0,configurable:!0,value:n})}function d(e,t,n){on(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 sn.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&&ie(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,ae(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.
50
+ `)}function th(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 nh(e,t){let n=[];for(let e of t){if(typeof e==`object`&&e)throw Kp(`join`,2,`list of strings/primitives`,`list element of type ${rh(e)}`);n.push(String(e))}return n.join(e)}function rh(e){return Array.isArray(e)?`array`:e instanceof Map?`Map`:e instanceof Set?`Set`:`object`}function ih(e){return qm(e,`-`)}function ah(e){return e.toLowerCase()}function oh(e,t){return`\n${eh(e,t)}`}function sh(e){return e.replace(/\s+/g,``)}function ch(e,t,n){return n===1?e:t}function lh(...e){return e.map(e=>`"${e}"`).join(` `)}function uh(e){return e.replace(/[\\.+*?()|[\]{}^$]/g,`\\$&`)}function dh(e,t){return t.repeat(Math.max(0,e))}function fh(e,t,n){return n.split(e).join(t)}function ph(e){return qm(e,`_`)}function mh(e,t){let n=t.split(e),r={};for(let e=0;e<n.length;e++)r[`_${e}`]=n[e];return r}function hh(e,t){return t.split(e)}function gh(e,t,n){let r=_h(n,e,t),i={};for(let e=0;e<r.length;e++)i[`_${e}`]=r[e]??``;return i}function _h(e,t,n){if(n===0)return[];let r=t===``?Array.from(e):e.split(t);if(n<0||r.length<=n)return r;let i=r.slice(0,n-1),a=r.slice(n-1).join(t);return[...i,a]}function vh(...e){return e.map(e=>`'${e}'`).join(` `)}function yh(e,t,n){let r=t<0||t>n.length?n.length:t,i=Math.min(Math.max(0,e),r);return n.slice(i,r)}function bh(e){let t=``;for(let n of e)xh(n)?t+=n.toLowerCase():Sh(n)?t+=n.toUpperCase():t+=n;return t}function xh(e){return e!==e.toLowerCase()&&e===e.toUpperCase()}function Sh(e){return e!==e.toUpperCase()&&e===e.toLowerCase()}function Ch(e){return e.replace(/\b([a-zA-Z])/g,e=>e.toUpperCase())}function wh(e){return e.trim()}function Th(e,t){if(e.length===0)return t;let n=new Set([...e]),r=0;for(;r<t.length&&n.has(t[r]);)r+=1;let i=t.length;for(;i>r&&n.has(t[i-1]);)--i;return t.slice(r,i)}function Eh(e,t){return t.startsWith(e)?t.slice(e.length):t}function Dh(e,t){return t.endsWith(e)?t.slice(0,t.length-e.length):t}function Oh(e,t){if(e<0){let n=-e;return n>=t.length?t:t.slice(t.length-n)}return e>=t.length?t:t.slice(0,e)}function kh(e){return e.replace(/\b([A-Z])/g,e=>e.toLowerCase())}function Ah(e){return e.toUpperCase()}function jh(e,t){return Mh(e,`
51
+ `,t)}function Mh(e,t,n){if(e<=0)return n;let r=[];for(let t of n.split(`
52
+ `)){let n=``;for(let i of t.split(/\s+/))i.length!==0&&(n.length===0?n=i:n.length+1+i.length<=e?n+=` ${i}`:(r.push(n),n=i));n.length>0&&r.push(n)}return r.join(t)}function Nh(e,t,n){return Mh(e,t,n)}function Ph(){return{abbrev:{fn:(e,t)=>Nm(e,t),argTypes:[`int`,`string`]},abbrevboth:{fn:(e,t,n)=>Pm(e,t,n),argTypes:[`int`,`int`,`string`]},camelcase:{fn:e=>Ym(e),argTypes:[`string`],returnType:`string`},cat:{fn:(...e)=>Xm(...e),argTypes:[`string`]},contains:{fn:(e,t)=>Zm(e,t),argTypes:[`string`,`string`]},hasPrefix:{fn:(e,t)=>Qm(e,t),argTypes:[`string`,`string`]},hasSuffix:{fn:(e,t)=>$m(e,t),argTypes:[`string`,`string`]},indent:{fn:(e,t)=>eh(e,t),argTypes:[`int`,`string`]},initials:{fn:e=>th(e),argTypes:[`string`]},join:{fn:(e,t)=>nh(e,t),argTypes:[`string`,`list`]},kebabcase:{fn:e=>ih(e),argTypes:[`string`],returnType:`string`},lower:{fn:e=>ah(e),argTypes:[`string`]},nindent:{fn:(e,t)=>oh(e,t),argTypes:[`int`,`string`]},nospace:{fn:e=>sh(e),argTypes:[`string`],returnType:`string`},plural:{fn:(e,t,n)=>ch(e,t,n),argTypes:[`string`,`string`,`int`],returnType:`string`},quote:{fn:(...e)=>lh(...e),argTypes:[`string`]},regexQuoteMeta:{fn:e=>uh(e),argTypes:[`string`],returnType:`string`},repeat:{fn:(e,t)=>dh(e,t),argTypes:[`int`,`string`]},replace:{fn:(e,t,n)=>fh(e,t,n),argTypes:[`string`,`string`,`string`]},snakecase:{fn:e=>ph(e),argTypes:[`string`],returnType:`string`},split:{fn:(e,t)=>mh(e,t),argTypes:[`string`,`string`]},splitList:{fn:(e,t)=>hh(e,t),argTypes:[`string`,`string`]},splitn:{fn:(e,t,n)=>gh(e,t,n),argTypes:[`string`,`int`,`string`],returnType:`dict`},squote:{fn:(...e)=>vh(...e),argTypes:[`string`]},substr:{fn:(e,t,n)=>yh(e,t,n),argTypes:[`int`,`int`,`string`]},swapcase:{fn:e=>bh(e),argTypes:[`string`],returnType:`string`},title:{fn:e=>Ch(e),argTypes:[`string`]},trim:{fn:e=>wh(e),argTypes:[`string`]},trimAll:{fn:(e,t)=>Th(e,t),argTypes:[`string`,`string`]},trimPrefix:{fn:(e,t)=>Eh(e,t),argTypes:[`string`,`string`]},trimSuffix:{fn:(e,t)=>Dh(e,t),argTypes:[`string`,`string`]},trunc:{fn:(e,t)=>Oh(e,t),argTypes:[`int`,`string`]},untitle:{fn:e=>kh(e),argTypes:[`string`]},upper:{fn:e=>Ah(e),argTypes:[`string`]},wrap:{fn:(e,t)=>jh(e,t),argTypes:[`int`,`string`]},wrapWith:{fn:(e,t,n)=>Nh(e,t,n),argTypes:[`int`,`string`,`string`]}}}function Fh(e){return e}function Ih(e,t,n){return n===void 0?dl+ll(e)+`.`+ll(t):Lh(n)}function Lh(e){return dl+ll(e)}function Rh(e,t){return e+`.`+t}function zh(e){return e+`.page`}const Bh=[`closeOnPick`,`paged`,`key`,`distribution`],Vh=e=>Bh.includes(e),Hh=`"closeOnPick" (bool, default false), "paged" (bool, default true), "key" (string, accordion grouping), "distribution" (one of ${Pi.map(e=>`"${e}"`).join(`, `)}; default "van-der-corput")`;function Uh(e){for(let t of Object.keys(e))if(!Vh(t))throw Error(`unknown {{ menu }} option "${t}" — the options dict takes ${Hh}`);let t=(t,n)=>{let r=e[t];if(r===void 0)return n;if(typeof r!=`boolean`)throw Error(`{{ menu }} option "${t}" must be a boolean, got ${JSON.stringify(r)} (e.g. (dict "${t}" ${String(!n)}))`);return r},n=e.key;if(n!==void 0&&typeof n!=`string`)throw Error(`{{ menu }} option "key" must be a string naming the accordion group, got ${JSON.stringify(n)}`);if(n===``)throw Error(`{{ menu }} has an empty accordion key — a shared key must be a non-empty name (or omit "key" for an independent menu)`);let r=e.distribution;if(r!==void 0&&!Fi(r))throw Error(`{{ menu }} option "distribution" must be one of: ${Pi.join(`, `)}; got ${JSON.stringify(r)}`);return{closeOnPick:t(`closeOnPick`,!1),paged:t(`paged`,!0),key:n,distribution:Li(r)}}const Wh=`menu`,Gh=`a menu binds its trigger text the way a cycle action binds a display — write {{ menu "applyTheme" "▸" "▾" }} (one per state) or {{ menu "insertHere" "+" }} (one static display for both), with the rare knobs in ONE trailing dict: {{ menu "applyTheme" "▸" "▾" (dict "closeOnPick" true "paged" false "key" "pickers") }} (defaults: closeOnPick false, paged true, no key). The renderer no longer appends ▸/▾ of its own (candybar-settings-ui-aok.4), and the older positional tail ("pageAction" closeOnPick paged "key") was removed — the page cursor is synthesized from the menu's identity`,Kh=e=>e.kind===`call`&&e.name===`dict`,qh=e=>e.kind===`literal`&&typeof e.value!=`object`,Jh=e=>Zs(``,e,2)===void 0;function Yh(e){let t=e=>({kind:`issue`,message:e}),[n,...r]=e.argExprs;if(n===void 0)return t(`with no arguments — it takes an apply-action name and its trigger text (e.g. {{ menu "applyTheme" "▸" "▾" }})`);if(n.kind!==`literal`||typeof n.value!=`string`)return t(`whose apply action is not a string literal — a menu's identity is its apply-action name, which must be a literal so it can be gated at load (e.g. {{ menu "applyTheme" "▸" "▾" }})`);let i=r[r.length-1],a=i!==void 0&&Kh(i)?i:void 0,o=a===void 0?r:r.slice(0,-1);if(o.some(Kh))return t(`whose options (dict …) is not its last argument — ${Gh}`);if(i!==void 0&&a===void 0&&!qh(i)&&Jh(o.length-1))return t(`whose last argument is neither a literal nor a literal (dict …) — the renderer tells a display from the options dict by the value it evaluates to, so this call could be read as ${o.length} displays or as ${o.length-1} plus options, and both are legal. Make the options explicit as a trailing (dict …) — {{ menu "${n.value}" (printf "…") (printf "…") (dict) }} binds dynamic displays unambiguously — or bind the trigger text as literals`);let s=Zs(`whose trigger`,o.length,2);if(s!==void 0)return t(`${s} — ${Gh}`);let c=a===void 0?{}:Ep(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=Uh(c)}catch(e){return t(`with invalid options — ${e.message}`)}let u=l.key;if(u!==void 0){let e=gl(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 "${Lh(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 Xh(e){let t=Id({fromString:e=>e});try{return t.parse(e).referencedCalls().filter(e=>e.name===Wh).map(Yh)}catch{return`parse-failed`}}function Zh(e){let t=Id({fromString:e=>e});try{return t.parse(e).referencedFunctions().has(Wh)}catch{return!1}}function Qh(e,t,n){e.issues.push({path:t,message:n,line:W(e.source,[`root`])})}function $h(e,t){_l(e,t,dl,`{{ menu }} helpers`);for(let[n,r]of Object.entries(t.helpers??{}))Zh(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`&&Zh(i)&&Qh(e,`segments.${t}.${n}`,`segment "${t}" uses {{ menu }} in its "${n}" — a menu is only valid in a segment's "template" (its placement is published only there; "${n}" needs a ${n===`when`?`predicate`:`color`}). Move the {{ menu }} into the template.`)}if(t.root!==void 0)for(let n of Xo(Us(t.root)))typeof n.when==`string`&&Zh(n.when)&&Qh(e,`root`,`a layout node's "when" predicate uses {{ menu }} — a menu is only valid in a segment's "template", not a node predicate. Move it into a segment.`);let r=new Set,i={},a=new Set,o=new Map;for(let[t,{template:s}]of Object.entries(n)){if(s===void 0||!Zh(s))continue;let n=Xh(s);if(n!==`parse-failed`)for(let s of n){if(s.kind===`issue`){Qh(e,`segments.${t}`,`segment "${t}" has a {{ menu }} ${s.message}.`);continue}let{apply:n,options:c}=s;if(n===``){Qh(e,`segments.${t}`,`segment "${t}" has a {{ menu }} with an empty apply-action name — an empty member aliases the absent-state sentinel ("") so the menu would render open before any click. Name the apply action.`);continue}let l=Fh(n);if(l===`closed`){Qh(e,`segments.${t}`,`segment "${t}" has a {{ menu }} whose apply action is named "${Ys}", which collides with the menu's closed-state sentinel and leaves it unopenable. Rename the action.`);continue}let u=Ih(t,n,c.key),d=zh(u),f=c.key===void 0?`ind${t}${n}`:`key${c.key}`,p=[u,d].find(e=>{let t=o.get(e);return t!==void 0&&t!==f});if(p!==void 0){Qh(e,`segments.${t}`,`two {{ menu }} disclosures normalize to the same state key ("${p}") but were declared differently — distinct names that differ only by non-alphanumeric characters (e.g. "a-b" vs "a_b") collapse to one key and would silently share open-state. Rename so they don't collide.`);continue}o.set(u,f),o.set(d,f);let m=Rh(u,l);if(a.has(m)){Qh(e,`segments.${t}`,`two {{ menu }} disclosures resolve to the same identity ("${m}") — ${c.key===void 0?`a segment cannot contain two menus over the same apply action "${n}"`:`menus sharing key "${c.key}" must have distinct apply actions`}.`);continue}a.add(m),r.add(u),i[m]=ac(u,l)}}if(r.size===0)return;let s={};for(let e of r){s[e]=ic(e,Ys);let t=zh(e);s[t]={kind:`state`,key:t,default:`0`},i[t]={set:t,int:!0}}t.variables={...t.variables??{},...s},t.actions={...t.actions??{},...i}}const eg=Id({fromString:e=>e}),tg=`edit.mode`,ng=`edit.toggle`,rg=`open`,ig={variable:tg,key:tg,member:rg},ag=tc(ig);function og(e){try{return eg.parse(e).referencedCalls().some(e=>e.name===`action`&&e.args[0]===`edit.toggle`)}catch{return!1}}function sg(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`&&og(e))return!0;return!1}function cg(e,t){if(_l(e,t,fl,`edit mode`),!sg(t))return;let n={[tg]:ic(tg,Ys)},r={[ng]:ac(tg,rg)};t.variables={...t.variables??{},...n},t.actions={...t.actions??{},...r}}const lg=/"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|`[^`]*`/g,ug=/(?<![A-Za-z0-9_)])\.([A-Za-z_][\w]*(?:\.[A-Za-z_][\w]*)*)/g;function*dg(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)}}function fg(e){let t=new Set;for(let n of dg(e)){let e=n.replace(lg,``),r;for(ug.lastIndex=0;(r=ug.exec(e))!==null;)t.add(r[1])}return t}const pg=/\baction\s+$/;function mg(e){let t=new Set;for(let n of dg(e)){let e=0,r;for(lg.lastIndex=0;(r=lg.exec(n))!==null;)pg.test(n.slice(e,r.index))&&t.add(r[0].slice(1,-1)),e=r.index+r[0].length}return t}const hg=/\b(picker|menu|carousel)\s+$/;function gg(e){let t=new Set;for(let n of dg(e)){let e=0,r=0,i;for(lg.lastIndex=0;(i=lg.exec(n))!==null;){let a=hg.exec(n.slice(e,i.index));a!==null&&(r=a[1]===`picker`?2:1),r>0&&(t.add(i[0].slice(1,-1)),r--),e=i.index+i[0].length}}return t}function _g(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 vg(e){let t=new Set,n=new Set,r=(e,r)=>{t.add(e),yg(r)&&n.add(e)};for(let[t,n]of Object.entries(e.variables))r(t,n);for(let[t,n]of Object.entries(e.segments))for(let[e,i]of Object.entries(n.vars??{}))r(`${t}.${e}`,i);return{names:t,documents:n}}function yg(e){return(e.kind===`shell`||e.kind===`file`)&&ts(e.parse)===`json`}var bg=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:rn}function r(){N||t(`Proxy not available`)}function i(e){var t=!1;return function(){if(!t)return t=!0,e.apply(this,arguments)}}function a(e){return typeof e==`function`}function o(e){switch(typeof e){case`string`:case`symbol`:case`number`:return!0}return!1}function s(e){return typeof e==`object`&&!!e}function c(e){if(!s(e))return!1;var t=Object.getPrototypeOf(e);if(t==null)return!0;var n=Object.hasOwnProperty.call(t,`constructor`)&&t.constructor;return typeof n==`function`&&n.toString()===un}function l(e){var t=e?.constructor;return!!t&&(t.name===`GeneratorFunction`||t.displayName===`GeneratorFunction`)}function u(e,t,n){on(e,t,{enumerable:!1,writable:!0,configurable:!0,value:n})}function d(e,t,n){on(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 sn.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&&ie(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,ae(r.key),r)}}function S(e,t,n){return t&&x(e.prototype,t),n&&x(e,n),Object.defineProperty(e,`prototype`,{writable:!1}),e}function C(e,t){var n=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if(typeof e==`string`)return y(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(e,t):void 0}}(e))||t&&e&&typeof e.length==`number`){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw TypeError(`Invalid attempt to iterate non-iterable instance.
53
53
  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,ie(e,t)}function re(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch{}return(re=function(){return!!e})()}function ie(e,t){return(ie=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function ae(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 w(e){var t=typeof Map==`function`?new Map:void 0;return(w=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}}),ie(n,e)})(e)}function T(e){return Object.assign((function(t,n){if(se(n))return e.t(t,n);oe(t,n,e)}),e)}function oe(e,t,n){g(e,hn)||u(e,hn,ee({},e[hn])),function(e){return e.i===`override`}(n)||(e[hn][t]=n)}function se(e){return typeof e==`object`&&typeof e.kind==`string`}function ce(e,t,n){t===void 0&&(t=dn),n===void 0&&(n=dn);var r=new gn(e);return t!==dn&&ft(r,t),n!==dn&&pt(r,n),r}function le(e,t,n){return St(e)?e:Array.isArray(e)?Dn.array(e,{name:n}):c(e)?Dn.object(e,void 0,{name:n}):p(e)?Dn.map(e,{name:n}):m(e)?Dn.set(e,{name:n}):typeof e!=`function`||lt(e)||yt(e)?e:l(e)?ir(e):Qn(n,e)}function ue(e){return e}function de(e,t){return{i:e,u:t,o:fe,s:pe,t:me}}function fe(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:lt(n.value)?1:(on(r,t,he(e,this,t,n,!1)),2)}function pe(e,t,n,r){var i=he(e,this,t,n);return e.l(t,i,r)}function me(e,n){var r,i=n.kind,a=n.name,o=n.addInitializer,s=this,c=function(e){var t;return Pe(s.u?.name??a.toString(),e,(t=s.u?.autoAction)!=null&&t)};return i==`field`?function(e){var t,n=e;return lt(n)||(n=c(n)),(t=s.u)!=null&&t.bound&&((n=n.bind(this)).isMobxAction=!0),n}:i==`method`?(lt(e)||(e=c(e)),(r=this.u)!=null&&r.bound&&o((function(){var e=this[a].bind(this);e.isMobxAction=!0,this[a]=e})),e):void t(`Cannot apply '`+s.i+`' to '`+String(a)+`' (kind: `+i+`):
54
- '`+s.i+`' can only be used on properties with a function value.`)}function he(e,t,n,r,i){var a,o,s;i===void 0&&(i=R.safeDescriptors);var c=r.value;return(a=t.u)!=null&&a.bound&&(c=c.bind(e.v??e.h)),{value:Pe(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 ge(e,t){return{i:e,u:t,o:E,s:_e,t:ve}}function E(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)||!yt(e.h[t]))&&this.s(e,t,n,!1)===null?0:yt(n.value)?1:(on(r,t,ye(e,0,0,n,!1,!1)),2)}function _e(e,t,n,r){var i=ye(e,0,0,n,this.u?.bound);return e.l(t,i,r)}function ve(e,t){var n,r=t.name,i=t.addInitializer;return yt(e)||(e=ir(e)),(n=this.u)!=null&&n.bound&&i((function(){var e=this[r].bind(this);e.isMobXFlow=!0,this[r]=e})),e}function ye(e,t,n,r,i,a){a===void 0&&(a=R.safeDescriptors);var o=r.value;return yt(o)||(o=ir(o)),i&&((o=o.bind(e.v??e.h)).isMobXFlow=!0),{value:o,configurable:!a||e.p,enumerable:!1,writable:!a}}function be(e,t){return{i:e,u:t,o:xe,s:Se,t:Ce}}function xe(e,t,n){return this.s(e,t,n,!1)===null?0:1}function Se(e,t,n,r){return e.m(t,ee({},this.u,{get:n.get,set:n.set}),r)}function Ce(e,t){var n=this,r=t.name;return(0,t.addInitializer)((function(){var t=Ut(this)[P],i=ee({},n.u,{get:e,context:this});i.name||=`ObservableObject.`+r.toString(),t.j.set(r,new Ln(i))})),function(){return this[P].O(r)}}function we(e,t){return{i:e,u:t,o:Te,s:Ee,t:De}}function Te(e,t,n){return this.s(e,t,n,!1)===null?0:1}function Ee(e,t,n,r){return e.g(t,n.value,this.u?.enhancer??le,r)}function De(e,t){function n(e,t){var n=Ut(e)[P],i=new Fn(t,r.u?.enhancer??le,`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[P].O(a)},set:function(e){return o.has(this)||n(this,e),this[P].S(a,e)},init:function(e){return o.has(this)||n(this,e),e}}}function Oe(e){return{i:`true`,u:e,o:ke,s:Ae,t:je}}function ke(e,t,n,r){var i,a,o;if(n.get)return An.o(e,t,n,r);if(n.set){var s=lt(n.set)?n.set:Pe(t.toString(),n.set);return r===e.h?e.l(t,{configurable:!R.safeDescriptors||e.p,set:s})===null?0:2:(on(r,t,{configurable:!0,set:s}),2)}if(r!==e.h&&typeof n.value==`function`)return l(n.value)?((o=this.u)!=null&&o.autoBind?ir.bound:ir).o(e,t,n,r):((a=this.u)!=null&&a.autoBind?Qn.bound:Qn).o(e,t,n,r);var c=!1===this.u?.deep?Dn.ref:Dn;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 Ae(e,t,n,r){var i;return n.get?An.s(e,t,n,r):n.set?e.l(t,{configurable:!R.safeDescriptors||e.p,set:Pe(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?Dn.ref:Dn).s(e,t,n,r))}function je(){t(`'`+this.i+`' cannot be used as a decorator`)}function Me(e){return e||xn}function D(e){return!0===e.deep?le:!1===e.deep?ue:(t=e.defaultDecorator)&&(n=(r=t.u)?.enhancer)!=null?n:le;var t,n,r}function Ne(e,t,n){return se(t)?Sn.t(e,t):o(t)?void oe(e,t,Sn):St(e)?e:c(e)?Dn.object(e,t,n):Array.isArray(e)?Dn.array(e,t):p(e)?Dn.map(e,t):m(e)?Dn.set(e,t):typeof e==`object`&&e?e:Dn.box(e,t)}function Pe(e,t,n,r){function i(){return Fe(0,n,t,r||this,arguments)}return n===void 0&&(n=!1),i.isMobxAction=!0,i.toString=function(){return t.toString()},Nn&&(Pn.value=e,on(i,`name`,Pn)),i}function Fe(e,t,n,r,i){var a=Ie(0,t);try{return n.apply(r,i)}catch(e){throw a._=e,e}finally{Le(a)}}function Ie(e,t){var n=R.trackingDerivation,r=!t||!n;et();var i=R.allowStateChanges;r&&(Ke(),i=ze(!0));var a={A:r,k:n,M:i,V:Je(!0),R:!1,N:0,T:Mn++,C:jn};return jn=a.T,a}function Le(e){jn!==e.T&&t(30),jn=e.C,e._!==void 0&&(R.suppressReactionErrors=!0),Be(e.M),Ye(e.V),tt(),e.A&&qe(e.k),R.suppressReactionErrors=!1}function Re(e,t){var n=ze(e);try{return t()}finally{Be(n)}}function ze(e){var t=R.allowStateChanges;return R.allowStateChanges=e,t}function Be(e){R.allowStateChanges=e}function Ve(e){return e instanceof zn}function He(e){switch(e.I){case I.L:return!1;case I.P:case I.K:return!0;case I.B:for(var t=Je(!0),n=Ke(),r=e.D,i=r.length,a=0;a<i;a++){var o=r[a];if(L(o)){if(R.disableErrorBoundaries)o.get();else try{o.get()}catch{return qe(n),Ye(t),!0}if(e.I===I.K)return qe(n),Ye(t),!0}}return Xe(e),qe(n),Ye(t),!1}}function Ue(e,t,n){var r=Je(!0);Xe(e),e.W=Array(e.q===0?100:e.D.length),e.G=0,e.q=++R.runId;var i,a=R.trackingDerivation;if(R.trackingDerivation=e,R.inBatch++,!0===R.disableErrorBoundaries)i=t.call(n);else try{i=t.call(n)}catch(e){i=new zn(e)}return R.inBatch--,R.trackingDerivation=a,function(e){for(var t=e.D,n=e.D=e.W,r=I.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&&Qe(c,e),c.diffValue=0}for(;i--;){var l=n[i];l.diffValue===1&&(l.diffValue=0,Ze(l,e))}r!==I.L&&(e.I=r,e.H())}(e),Ye(r),i}function We(e){var t=e.D;e.D=[];for(var n=t.length;n--;)Qe(t[n],e);e.I=I.P}function Ge(e){var t=Ke();try{return e()}finally{qe(t)}}function Ke(){var e=R.trackingDerivation;return R.trackingDerivation=null,e}function qe(e){R.trackingDerivation=e}function Je(e){var t=R.allowStateReads;return R.allowStateReads=e,t}function Ye(e){R.allowStateReads=e}function Xe(e){if(e.I!==I.L){e.I=I.L;for(var t=e.D,n=t.length;n--;)t[n].U=I.L}}function Ze(e,t){e.F.add(t),e.U>t.I&&(e.U=t.I)}function Qe(e,t){e.F.delete(t),e.F.size===0&&$e(e)}function $e(e){!1===e.isPendingUnobservation&&(e.isPendingUnobservation=!0,R.pendingUnobservations.push(e))}function et(){R.inBatch++}function tt(){if(--R.inBatch==0){it();for(var e=R.pendingUnobservations,t=0;t<e.length;t++){var n=e[t];n.isPendingUnobservation=!1,n.F.size===0&&(n.isBeingObserved&&(n.isBeingObserved=!1,n.onBUO()),n instanceof Ln&&n.X())}R.pendingUnobservations=[]}}function nt(e){var t=R.trackingDerivation;return t===null?(e.F.size===0&&R.inBatch>0&&$e(e),!1):(t.q!==e.$&&(e.$=t.q,t.W[t.G++]=e,!e.isBeingObserved&&R.trackingContext&&(e.isBeingObserved=!0,e.onBO())),e.isBeingObserved)}function rt(e){e.U!==I.K&&(e.U=I.K,e.F.forEach((function(e){e.I===I.L&&e.H(),e.I=I.K})))}function it(){R.inBatch>0||R.isRunningReactions||Gn(at)}function at(){R.isRunningReactions=!0;for(var e=R.pendingReactions,t=0;e.length>0;){++t==100&&(console.error(`[mobx] cycle in reaction: `+e[0]),e.splice(0));for(var n=e.splice(0),r=0,i=n.length;r<i;r++)n[r].J()}R.isRunningReactions=!1}function ot(){return console.warn(`[mobx.spy] Is a no-op in production builds`),function(){}}function st(e){return function(t,n){return a(t)?Pe(t.name||`<unnamed action>`,t,e):a(n)?Pe(t,n,e):se(n)?(e?Yn:qn).t(t,n):o(n)?oe(t,n,e?Yn:qn):o(t)?T(de(e?`autoAction`:`action`,{name:t,autoAction:e})):void 0}}function ct(e){return Fe(0,!1,e,this,void 0)}function lt(e){return a(e)&&!0===e.isMobxAction}function ut(e,t){function n(){e(i)}var r;t===void 0&&(t=ln);var i,a=t?.name??`Autorun`;if(t.scheduler||t.delay){var o=dt(t),s=!1;i=new Wn(a,(function(){s||(s=!0,o((function(){s=!1,i.isDisposed||i.track(n)})))}),t.onError,t.requiresObservable)}else i=new Wn(a,(function(){this.track(n)}),t.onError,t.requiresObservable);return(r=t)!=null&&(r=r.signal)!=null&&r.aborted||i.Y(),i.Z(t?.signal)}function dt(e){return e.scheduler?e.scheduler:e.delay?function(t){return setTimeout(t,e.delay)}:$n}function ft(e,t,n){return mt(`onBO`,e,t,n)}function pt(e,t,n){return mt(`onBUO`,e,t,n)}function mt(e,t,n,r){var i=typeof r==`function`?Xt(t,n):Xt(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 ht(e,t,n,r){var i=mn(t);return $t((function(){var t=Ut(e,r)[P];pn(i).forEach((function(e){t.s(e,i[e],!n||!(e in n)||n[e])}))})),e}function gt(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(gt)),n}function _t(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(_t)),t}function vt(e){a(e.cancel)&&e.cancel()}function yt(e){return!0===e?.isMobXFlow}function bt(e,t){return t===void 0?L(e):!1===Gt(e)||!e[P].j.has(t)?!1:L(Xt(e,t))}function xt(e,t){return!!e&&(t===void 0?Gt(e)||!!e[P]||_n(e)||Kn(e)||L(e):!!Gt(e)&&e[P].j.has(t))}function St(e){return xt(e)}function Ct(e){return Gt(e)?e[P].nt():_r(e)||z(e)?Array.from(e.keys()):Bt(e)?e.map((function(e,t){return t})):void t(5)}function wt(e,n){return Gt(e)?e[P].it(n):_r(e)||z(e)?e.has(n):Bt(e)?n>=0&&n<e.length:void t(10)}function Tt(e){if(Gt(e))return e[P].rt();t(38)}function Et(e,t,n){return e.set(t,n),n}function Dt(e,t){t===void 0&&(t=void 0),et();try{return e.apply(t)}finally{tt()}}function Ot(e,t,n){var r;if(typeof n.timeout==`number`){var i=Error(`WHEN_TIMEOUT`);r=setTimeout((function(){if(!o[P].isDisposed){if(o(),!n.onError)throw i;n.onError(i)}}),n.timeout)}n.name=`When`;var a=Pe(`When-effect`,t),o=ut((function(t){Re(!1,e)&&(t.dispose(),r&&clearTimeout(r),a())}),n);return o}function kt(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=Ot(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 At(e){return e[P]}function jt(e){return e.et!==void 0&&e.et.length>0}function Mt(e,t){var n=e.et||=[];return n.push(t),i((function(){var e=n.indexOf(t);e!==-1&&n.splice(e,1)}))}function Nt(e,n){var r=Ke();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{qe(r)}}function Pt(e){return e.ut!==void 0&&e.ut.length>0}function Ft(e,t){var n=e.ut||=[];return n.push(t),i((function(){var e=n.indexOf(t);e!==-1&&n.splice(e,1)}))}function It(e,t){var n=Ke(),r=e.ut;if(r){for(var i=0,a=(r=r.slice()).length;i<a;i++)r[i](t);qe(n)}}function Lt(e,t,n,i){return n===void 0&&(n=`ObservableArray`),i===void 0&&(i=!1),r(),$t((function(){var r=new lr(n,t,i,!1);d(r.j,P,r);var a=new Proxy(r.j,cr);return r.v=a,e&&e.length&&r.ot(0,0,e),a}))}function O(e,t){typeof Array.prototype[e]==`function`&&(ur[e]=t(e))}function Rt(e){return function(){var t=this[P];t.st.reportObserved();var n=t.ft(t.j);return n[e].apply(n,arguments)}}function k(e){return function(t,n){var r=this,i=this[P];return i.st.reportObserved(),i.ft(i.j)[e]((function(e,i){return t.call(n,e,i,r)}))}}function zt(e){return function(){var t=this,n=this[P];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 Bt(e){return s(e)&&pr(e[P])}function Vt(e){return e[Symbol.toStringTag]=`MapIterator`,tn(e)}function Ht(e){return e[Symbol.toStringTag]=`SetIterator`,tn(e)}function Ut(e,t){if(g(e,P))return e;var n=t?.name??`ObservableObject`;return u(e,P,new xr(e,new Map,String(n),function(e){return e?e.defaultDecorator??Oe(e):void 0}(t))),e}function Wt(e){return br[e]||(br[e]={get:function(){return this[P].O(e)},set:function(t){return this[P].S(e,t)}})}function Gt(e){return!!s(e)&&B(e[P])}function Kt(e,t,n){var r;(r=e.h[hn])==null||delete r[n]}function qt(e){return{enumerable:!1,configurable:!0,get:function(){return this[P].ct(e)},set:function(t){this[P].ht(e,t)}}}function A(e){on(Er.prototype,``+e,qt(e))}function Jt(e){if(e>wr){for(var t=wr;t<e+100;t++)A(t);wr=e}}function Yt(e,t,n){return new Er(e,t,n)}function Xt(e,n){if(typeof e==`object`&&e){if(Bt(e))return n!==void 0&&t(23),e[P].st;if(z(e))return e.st;if(_r(e)){if(n===void 0)return e.lt;var r=e.vt.get(n)||e.dt.get(n);return r||t(25,n,Qt(e)),r}if(Gt(e)){if(!n)return t(26);var i=e[P].j.get(n);return i||t(27,n,Qt(e)),i}if(_n(e)||L(e)||Kn(e))return e}else if(a(e)&&Kn(e[P]))return e[P];t(28)}function Zt(e,n){return e||t(29),n===void 0?_n(e)||L(e)||Kn(e)||_r(e)||z(e)?e:e[P]?e[P]:void t(24,e):Zt(Xt(e,n))}function Qt(e,t){var n;if(t!==void 0)n=Xt(e,t);else{if(lt(e))return e.name;n=Gt(e)||_r(e)||z(e)?Zt(e):Xt(e)}return n.tt}function $t(e){var t=Ke(),n=ze(!0);et();try{return e()}finally{tt(),Be(n),qe(t)}}function en(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=j(t),n=j(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 j(e){return Bt(e)?e.slice():p(e)||_r(e)||m(e)||z(e)?Array.from(e.entries()):e}function tn(e){return e[Symbol.iterator]=nn,Object.assign(Object.create(Or),e)}function nn(){return this}Object.defineProperty(e,`__esModule`,{value:!0});var rn={},M=Object.assign,an=Object.getOwnPropertyDescriptor,on=Object.defineProperty,sn=Object.prototype,cn=[];Object.freeze(cn);var ln={};Object.freeze(ln);var N=typeof Proxy<`u`,un=Object.toString(),dn=function(){},fn=Object.getOwnPropertySymbols!==void 0,pn=typeof Reflect<`u`&&Reflect.ownKeys?Reflect.ownKeys:fn?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames,mn=Object.getOwnPropertyDescriptors||function(e){var t={};return pn(e).forEach((function(n){t[n]=an(e,n)})),t},hn=Symbol(`mobx-stored-annotations`),P=Symbol(`mobx administration`),gn=function(){function e(e){e===void 0&&(e=`Atom`),this.tt=void 0,this.bt=0,this.F=new Set,this.$=0,this.U=I.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 nt(this)},t.reportChanged=function(){et(),rt(this),tt()},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)}}])}();gn.pt=1,gn.yt=2,gn.wt=4;var _n=f(`Atom`,gn),vn={identity:function(e,t){return e===t},structural:function(e,t){return en(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 en(e,t,1)}},yn=T({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`)}}),bn=Oe(),xn={deep:!0,name:void 0,defaultDecorator:void 0,proxy:!0};Object.freeze(xn);var Sn=we(`observable`),Cn=we(`observable.ref`,{enhancer:ue}),F=we(`observable.shallow`,{enhancer:function(e,t,n){return e==null||Gt(e)||Bt(e)||_r(e)||z(e)?e:Array.isArray(e)?Dn.array(e,{name:n,deep:!1}):c(e)?Dn.object(e,void 0,{name:n,deep:!1}):p(e)?Dn.map(e,{name:n,deep:!1}):m(e)?Dn.set(e,{name:n,deep:!1}):void 0}}),wn=we(`observable.struct`,{enhancer:function(e,t){return en(e,t)?t:e}}),Tn=T(Sn);M(Ne,Tn);var En,Dn=M(Ne,{box:function(e,t){var n=Me(t);return new Fn(e,D(n),n.name,!0,n.equals)},array:function(e,t){var n=Me(t);return(!1===R.useProxies||!1===n.proxy?Yt:Lt)(e,D(n),n.name)},map:function(e,t){var n=Me(t);return new gr(e,D(n),n.name)},set:function(e,t){var n=Me(t);return new yr(e,D(n),n.name)},object:function(e,t,n){return $t((function(){return ht(!1===R.useProxies||!1===n?.proxy?Ut({},n):function(e,t){var n;return r(),(n=(e=Ut(e,t))[P]).v??(n.v=new Proxy(e,ar))}({},n),e,t)}))},ref:T(Cn),shallow:T(F),deep:Tn,struct:T(wn)}),On=be(`computed`),kn=be(`computed.struct`,{equals:vn.structural}),An=function(e,t){if(se(t))return On.t(e,t);if(o(t))return oe(e,t,On);if(c(e))return T(be(`computed`,e));var n=c(t)?t:{};return n.get=e,n.name||=e.name||``,new Ln(n)};Object.assign(An,On),An.struct=T(kn);var jn=0,Mn=1,Nn=(En=an((function(){}),`name`)?.configurable)!=null&&En,Pn={value:`action`,configurable:!0,writable:!1,enumerable:!1},Fn=function(e){function t(t,n,r,i,a){var o;return r===void 0&&(r=`ObservableValue`),a===void 0&&(a=vn.default),(o=e.call(this,r)||this).enhancer=void 0,o.tt=void 0,o.equals=void 0,o.jt=!1,o.et=void 0,o.ut=void 0,o.Ot=void 0,o.dehancer=void 0,o.enhancer=n,o.tt=r,o.equals=a,o.Ot=n(t,void 0,r),o}ne(t,e);var n=t.prototype;return n.dehanceValue=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.set=function(e){(e=this.xt(e))!==R.UNCHANGED&&this.gt(e)},n.xt=function(e){if(jt(this)){var t=Nt(this,{object:this,type:sr,newValue:e});if(!t)return R.UNCHANGED;e=t.newValue}return e=this.enhancer(e,this.Ot,this.tt),this.equals(this.Ot,e)?R.UNCHANGED:e},n.gt=function(e){var t=this.Ot;this.Ot=e,this.reportChanged(),Pt(this)&&It(this,{type:sr,object:this,newValue:e,oldValue:t})},n.get=function(){return this.reportObserved(),this.dehanceValue(this.Ot)},n.St=function(e){return Mt(this,e)},n._t=function(e,t){return t&&e({observableKind:`value`,debugObjectName:this.tt,object:this,type:sr,newValue:this.Ot,oldValue:void 0}),Ft(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}(gn),In=f(`ObservableValue`,Fn),Ln=function(){function e(e){this.I=I.P,this.D=[],this.W=null,this.F=new Set,this.q=0,this.$=0,this.U=I.L,this.G=0,this.Ot=new zn(null),this.tt=void 0,this.At=void 0,this.bt=0,this.derivation=void 0,this.kt=void 0,this.Mt=Rn.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=Pe(`ComputedValue-setter`,e.set)),this.Vt=e.equals||(e.compareStructural||e.struct?vn.structural:vn.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===I.L&&(e.U=I.B,e.F.forEach((function(e){e.I===I.L&&(e.I=I.B,e.H())})))})(this)},n.onBO=function(){this.onBOL&&this.onBOL.forEach((function(e){return e()}))},n.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(e){return e()}))},n.get=function(){if(this.isComputing&&t(32,this.tt,this.derivation),R.inBatch!==0||this.F.size!==0||this.Nt){if(nt(this),He(this)){var e=R.trackingContext;this.Nt&&!e&&(R.trackingContext=this),this.trackAndCompute()&&function(e){e.U!==I.K&&(e.U=I.K,e.F.forEach((function(t){t.I===I.B?t.I=I.K:t.I===I.L&&(e.U=I.L)})))}(this),R.trackingContext=e}}else He(this)&&(this.Tt(),et(),this.Ot=this.Ct(!1),tt());var n=this.Ot;if(Ve(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===I.P,n=this.Ct(!0),r=t||Ve(e)||Ve(n)||!this.Vt(e,n);return r&&(this.Ot=n),r},n.Ct=function(e){this.isComputing=!0;var t,n=ze(!1);if(e)t=Ue(this,this.derivation,this.Et);else if(!0===R.disableErrorBoundaries)t=this.derivation.call(this.Et);else try{t=this.derivation.call(this.Et)}catch(e){t=new zn(e)}return Be(n),this.isComputing=!1,t},n.X=function(){this.Nt||(We(this),this.Ot=void 0)},n._t=function(e,t){var n=this,r=!0,i=void 0;return ut((function(){var a=n.get();if(!r||t){var o=Ke();e({observableKind:`computed`,debugObjectName:n.tt,type:sr,object:n,newValue:a,oldValue:i}),qe(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)}}])}();Ln.It=1,Ln.Lt=2,Ln.pt=4,Ln.yt=8,Ln.wt=16;var I,Rn,L=f(`ComputedValue`,Ln);(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_`})(I||={}),function(e){e[e.NONE=0]=`NONE`,e[e.LOG=1]=`LOG`,e[e.BREAK=2]=`BREAK`}(Rn||={});var zn=function(e){this.cause=void 0,this.cause=e},Bn=[`mobxGuid`,`spyListeners`,`enforceActions`,`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`allowStateReads`,`disableErrorBoundaries`,`runId`,`UNCHANGED`,`useProxies`],Vn=function(){this.version=6,this.UNCHANGED={},this.trackingDerivation=null,this.trackingContext=null,this.runId=0,this.mobxGuid=0,this.inBatch=0,this.pendingUnobservations=[],this.pendingReactions=[],this.isRunningReactions=!1,this.allowStateChanges=!1,this.allowStateReads=!0,this.enforceActions=!0,this.spyListeners=[],this.globalReactionErrorHandlers=[],this.computedRequiresReaction=!1,this.reactionRequiresObservable=!1,this.observableRequiresReaction=!1,this.disableErrorBoundaries=!1,this.suppressReactionErrors=!1,this.useProxies=!0,this.verifyProxies=!1,this.safeDescriptors=!0},Hn=!0,Un=!1,R=function(){var e=n();return e.__mobxInstanceCount>0&&!e.__mobxGlobals&&(Hn=!1),e.__mobxGlobals&&e.__mobxGlobals.version!==new Vn().version&&(Hn=!1),Hn?e.__mobxGlobals?(e.__mobxInstanceCount+=1,e.__mobxGlobals.UNCHANGED||(e.__mobxGlobals.UNCHANGED={}),e.__mobxGlobals):(e.__mobxInstanceCount=1,e.__mobxGlobals=new Vn):(setTimeout((function(){Un||t(35)}),1),new Vn)}(),Wn=function(){function e(e,t,n,r){e===void 0&&(e=`Reaction`),this.tt=void 0,this.Pt=void 0,this.Kt=void 0,this.Bt=void 0,this.D=[],this.W=[],this.I=I.P,this.q=0,this.G=0,this.bt=0,this.Mt=Rn.NONE,this.tt=e,this.Pt=t,this.Kt=n,this.Bt=r}var t=e.prototype;return t.H=function(){this.Y()},t.Y=function(){this.isScheduled||(this.isScheduled=!0,R.pendingReactions.push(this),it())},t.J=function(){if(!this.isDisposed){et(),this.isScheduled=!1;var e=R.trackingContext;if(R.trackingContext=this,He(this)){this.isTrackPending=!0;try{this.Pt()}catch(e){this.Dt(e)}}R.trackingContext=e,tt()}},t.track=function(e){if(!this.isDisposed){et(),this.isRunning=!0;var t=R.trackingContext;R.trackingContext=this;var n=Ue(this,e,void 0);R.trackingContext=t,this.isRunning=!1,this.isTrackPending=!1,this.isDisposed&&We(this),Ve(n)&&this.Dt(n.cause),tt()}},t.Dt=function(e){var t=this;if(this.Kt)this.Kt(e,this);else{if(R.disableErrorBoundaries)throw e;R.suppressReactionErrors||console.error(`[mobx] uncaught error in '`+this+`'`,e),R.globalReactionErrorHandlers.forEach((function(n){return n(e,t)}))}},t.dispose=function(){this.isDisposed||(this.isDisposed=!0,this.isRunning||(et(),We(this),tt()))},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[P]=this,`dispose`in Symbol&&typeof Symbol.dispose==`symbol`&&(n[Symbol.dispose]=n),n},t.toString=function(){return`Reaction[`+this.tt+`]`},t.trace=function(){},S(e,[{key:`isDisposed`,get:function(){return _(this.bt,e.Wt)},set:function(t){this.bt=v(this.bt,e.Wt,t)}},{key:`isScheduled`,get:function(){return _(this.bt,e.qt)},set:function(t){this.bt=v(this.bt,e.qt,t)}},{key:`isTrackPending`,get:function(){return _(this.bt,e.Gt)},set:function(t){this.bt=v(this.bt,e.Gt,t)}},{key:`isRunning`,get:function(){return _(this.bt,e.Ht)},set:function(t){this.bt=v(this.bt,e.Ht,t)}},{key:`diffValue`,get:function(){return+!!_(this.bt,e.wt)},set:function(t){this.bt=v(this.bt,e.wt,t===1)}}])}();Wn.Wt=1,Wn.qt=2,Wn.Gt=4,Wn.Ht=8,Wn.wt=16;var Gn=function(e){return e()},Kn=f(`Reaction`,Wn),qn=de(`action`),Jn=de(`action.bound`,{bound:!0}),Yn=de(`autoAction`,{autoAction:!0}),Xn=de(`autoAction.bound`,{autoAction:!0,bound:!0}),Zn=st(!1);Object.assign(Zn,qn);var Qn=st(!0);Object.assign(Qn,Yn),Zn.bound=T(Jn),Qn.bound=T(Xn);var $n=function(e){return e()},er=0,tr=function(e){function t(){var n;return n=e.call(this,`FLOW_CANCELLED`)||this,Object.setPrototypeOf(n,(this instanceof t?this.constructor:void 0).prototype),n.name=`FlowCancellationError`,n}return ne(t,e),t.prototype.toString=function(){return`Error: `+this.message},t}(w(Error)),nr=ge(`flow`),rr=ge(`flow.bound`,{bound:!0}),ir=Object.assign((function(e,t){if(se(t))return nr.t(e,t);if(o(t))return oe(e,t,nr);var n=e,r=n.name||`<unnamed flow>`,i=function(){var e,t=this,i=arguments,o=++er,s=Zn(r+` - runid: `+o+` - init`,n).apply(t,i),c=void 0,l=new Promise((function(t,n){function i(e){var t;c=void 0;try{t=Zn(r+` - runid: `+o+` - yield `+ d++,s.next).call(s,e)}catch(e){return n(e)}u(t)}function l(e){var t;c=void 0;try{t=Zn(r+` - runid: `+o+` - yield `+ d++,s.throw).call(s,e)}catch(e){return n(e)}u(t)}function u(e){if(!a(e?.then))return e.done?t(e.value):(c=Promise.resolve(e.value)).then(i,l);e.then(u,n)}var d=0;e=n,i(void 0)}));return l.cancel=Zn(r+` - runid: `+o+` - cancel`,(function(){try{c&&vt(c);var t=s.return(void 0),n=Promise.resolve(t.value);n.then(dn,dn),vt(n),e(new tr)}catch(t){e(t)}})),l};return i.isMobXFlow=!0,i}),nr);ir.bound=T(rr);var ar={has:function(e,t){return At(e).it(t)},get:function(e,t){return At(e).ct(t)},set:function(e,t,n){var r;return!!o(t)&&((r=At(e).ht(t,n,!0))==null||r)},deleteProperty:function(e,t){var n;return!!o(t)&&((n=At(e).Ut(t,!0))==null||n)},defineProperty:function(e,t,n){var r;return(r=At(e).l(t,n))==null||r},ownKeys:function(e){return At(e).rt()},preventExtensions:function(){t(13)}},or=Symbol(`mobx-keys`),sr=`update`,cr={get:function(e,t){var n=e[P];return t===P?n:t===`length`?n.Ft():typeof t!=`string`||isNaN(t)?g(ur,t)?ur[t]:e[t]:n.ct(parseInt(t))},set:function(e,t,n){var r=e[P];return t===`length`&&r.Xt(n),typeof t==`symbol`||isNaN(t)?e[t]=n:r.ht(parseInt(t),n),!0},preventExtensions:function(){t(15)}},lr=function(){function e(e,t,n,r){e===void 0&&(e=`ObservableArray`),this.zt=void 0,this.$t=void 0,this.st=void 0,this.j=[],this.et=void 0,this.ut=void 0,this.Jt=void 0,this.dehancer=void 0,this.v=void 0,this.Yt=0,this.zt=n,this.$t=r,this.st=new gn(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 Mt(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}),Ft(this,e)},n.Ft=function(){return this.st.reportObserved(),this.j.length},n.Xt=function(e){(typeof e!=`number`||isNaN(e)||e<0)&&t(`Out of range: `+e);var n=this.j.length;if(e!==n)if(e>n){for(var r=Array(e-n),i=0;i<e-n;i++)r[i]=void 0;this.ot(n,0,r)}else this.ot(e,n-e)},n.Zt=function(e,n){e!==this.Yt&&t(16),this.Yt+=n,this.$t&&n>0&&Jt(e+n+1)},n.ot=function(e,t,n){var r=this,i=this.j.length;if(e===void 0?e=0:e>i?e=i:e<0&&(e=Math.max(0,i+e)),t=arguments.length===1?i-e:t==null?0:Math.max(0,Math.min(t,i-e)),n===void 0&&(n=cn),jt(this)){var a=Nt(this,{object:this.v,type:`splice`,index:e,removedCount:t,added:n});if(!a)return cn;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=Pt(this),a=i||r?{observableKind:`array`,object:this.v,type:sr,debugObjectName:this.st.tt,index:e,newValue:t,oldValue:n}:null;this.st.reportChanged(),i&&It(this,a)},n.nn=function(e,t,n){var r=!this.zt&&!1,i=Pt(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&&It(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(jt(this)){var a=Nt(this,{type:sr,object:this.v,index:e,newValue:n});if(!a)return;n=a.newValue}(n=this.Jt(n,i))!==i&&(r[e]=n,this.in(e,n,i))}else{for(var o=Array(e+1-r.length),s=0;s<o.length-1;s++)o[s]=void 0;o[o.length-1]=n,this.ot(r.length,0,o)}},e}(),ur={clear:function(){return this.splice(0)},replace:function(e){var t=this[P];return t.ot(0,t.j.length,e)},toJSON:function(){return this.slice()},splice:function(e,t){var n=[...arguments].slice(2),r=this[P];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[P].ot(e,t,n)},push:function(){for(var e=this[P],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[P].j.length-1,0),1)[0]},shift:function(){return this.splice(0,1)[0]},unshift:function(){for(var e=this[P],t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];return e.ot(0,0,n),e.j.length},reverse:function(){return R.trackingDerivation&&t(37,`reverse`),this.replace(this.slice().reverse()),this},sort:function(){R.trackingDerivation&&t(37,`sort`);var e=this.slice();return e.sort.apply(e,arguments),this.replace(e),this},remove:function(e){var t=this[P],n=t.ft(t.j).indexOf(e);return n>-1&&(this.splice(n,1),!0)}};O(`at`,Rt),O(`concat`,Rt),O(`flat`,Rt),O(`includes`,Rt),O(`indexOf`,Rt),O(`join`,Rt),O(`lastIndexOf`,Rt),O(`slice`,Rt),O(`toString`,Rt),O(`toLocaleString`,Rt),O(`toSorted`,Rt),O(`toSpliced`,Rt),O(`with`,Rt),O(`every`,k),O(`filter`,k),O(`find`,k),O(`findIndex`,k),O(`findLast`,k),O(`findLastIndex`,k),O(`flatMap`,k),O(`forEach`,k),O(`map`,k),O(`some`,k),O(`toReversed`,k),O(`reduce`,zt),O(`reduceRight`,zt);var dr,fr,pr=f(`ObservableArrayAdministration`,lr),mr={},hr=`add`,gr=function(){function e(e,n,r){var i=this;n===void 0&&(n=le),r===void 0&&(r=`ObservableMap`),this.Jt=void 0,this.tt=void 0,this[P]=mr,this.vt=void 0,this.dt=void 0,this.lt=void 0,this.et=void 0,this.ut=void 0,this.dehancer=void 0,this.Jt=n,this.tt=r,a(Map)||t(18),$t((function(){i.lt=ce(`ObservableMap.keys()`),i.vt=new Map,i.dt=new Map,e&&i.merge(e)}))}var n=e.prototype;return n.it=function(e){return this.vt.has(e)},n.has=function(e){var t=this;if(!R.trackingDerivation)return this.it(e);var n=this.dt.get(e);if(!n){var r=n=new Fn(this.it(e),ue,`ObservableMap.key?`,!1);this.dt.set(e,r),pt(r,(function(){return t.dt.delete(e)}))}return n.get()},n.set=function(e,t){var n=this.it(e);if(jt(this)){var r=Nt(this,{type:n?sr:hr,object:this,newValue:t,name:e});if(!r)return this;t=r.newValue}return n?this.rn(e,t):this.en(e,t),this},n.delete=function(e){var t=this;if(jt(this)&&!Nt(this,{type:`delete`,object:this,name:e}))return!1;if(this.it(e)){var n=Pt(this),r=n?{observableKind:`map`,debugObjectName:this.tt,type:`delete`,object:this,oldValue:this.vt.get(e).Ot,name:e}:null;return Dt((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&&It(this,r),!0}return!1},n.rn=function(e,t){var n=this.vt.get(e);if((t=n.xt(t))!==R.UNCHANGED){var r=Pt(this),i=r?{observableKind:`map`,debugObjectName:this.tt,type:sr,object:this,oldValue:n.Ot,name:e,newValue:t}:null;n.gt(t),r&&It(this,i)}},n.en=function(e,t){var n=this;Dt((function(){var r,i=new Fn(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=Pt(this);r&&It(this,r?{observableKind:`map`,debugObjectName:this.tt,type:hr,object:this,name:e,newValue:t}:null)},n.get=function(e){return this.has(e)?this.Qt(this.vt.get(e).get()):this.Qt(void 0)},n.Qt=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.keys=function(){return this.lt.reportObserved(),this.vt.keys()},n.values=function(){var e=this,t=this.keys();return Vt({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 Vt({next:function(){var n=t.next(),r=n.done,i=n.value;return{done:r,value:r?void 0:[i,e.get(i)]}}})},n[Symbol.iterator]=function(){return this.entries()},n.forEach=function(e,t){for(var n,r=C(this);!(n=r()).done;){var i=n.value;e.call(t,i[1],i[0],this)}},n.merge=function(e){var n=this;return _r(e)&&(e=new Map(e)),Dt((function(){var r,i;c(e)?function(e){var t=Object.keys(e);if(!fn)return t;var n=Object.getOwnPropertySymbols(e);return n.length?[].concat(t,n.filter((function(t){return sn.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;Dt((function(){Ge((function(){for(var t,n=C(e.keys());!(t=n()).done;)e.delete(t.value)}))}))},n.replace=function(e){var n=this;return Dt((function(){for(var r,i=function(e){if(p(e)||_r(e))return e;if(Array.isArray(e))return new Map(e);if(c(e)){var n=new Map;for(var r in e)n.set(r,e[r]);return n}return t(21,e)}(e),a=new Map,o=!1,s=C(n.vt.keys());!(r=s()).done;){var l=r.value;if(!i.has(l))if(n.delete(l))o=!0;else{var u=n.vt.get(l);a.set(l,u)}}for(var d,f=C(i.entries());!(d=f()).done;){var m=d.value,h=m[0],g=m[1],_=n.vt.has(h);if(n.set(h,g),n.vt.has(h)){var v=n.vt.get(h);a.set(h,v),_||(o=!0)}}if(!o)if(n.vt.size!==a.size)n.lt.reportChanged();else for(var y=n.vt.keys(),b=a.keys(),x=y.next(),S=b.next();!x.done;){if(x.value!==S.value){n.lt.reportChanged();break}x=y.next(),S=b.next()}n.vt=a})),this},n.toString=function(){return`[object ObservableMap]`},n.toJSON=function(){return Array.from(this)},n._t=function(e){return Ft(this,e)},n.St=function(e){return Mt(this,e)},S(e,[{key:`size`,get:function(){return this.lt.reportObserved(),this.vt.size}},{key:Symbol.toStringTag,get:function(){return`Map`}}])}(),_r=f(`ObservableMap`,gr),vr={},yr=function(){function e(e,n,r){var i=this;n===void 0&&(n=le),r===void 0&&(r=`ObservableSet`),this.tt=void 0,this[P]=vr,this.vt=new Set,this.st=void 0,this.ut=void 0,this.et=void 0,this.dehancer=void 0,this.Jt=void 0,this.tt=r,a(Set)||t(22),this.Jt=function(e,t){return n(e,t,r)},$t((function(){i.st=ce(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;Dt((function(){Ge((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(jt(this)){var n=Nt(this,{type:hr,object:this,newValue:e});if(!n)return this;e=n.newValue}if(!this.has(e)){Dt((function(){t.vt.add(t.Jt(e,void 0)),t.st.reportChanged()}));var r=Pt(this);r&&It(this,r?{observableKind:`set`,debugObjectName:this.tt,type:hr,object:this,newValue:e}:null)}return this},n.delete=function(e){var t=this;if(jt(this)&&!Nt(this,{type:`delete`,object:this,oldValue:e}))return!1;if(this.has(e)){var n=Pt(this),r=n?{observableKind:`set`,debugObjectName:this.tt,type:`delete`,object:this,oldValue:e}:null;return Dt((function(){t.st.reportChanged(),t.vt.delete(e)})),n&&It(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 Ht({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 Ht({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)&&!z(e)?e.intersection(this):new Set(this).intersection(e)},n.union=function(e){return m(e)&&!z(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)&&!z(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)&&!z(e)?e.isDisjointFrom(this):new Set(this).isDisjointFrom(e)},n.replace=function(e){var n=this;return z(e)&&(e=new Set(e)),Dt((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 Ft(this,e)},n.St=function(e){return Mt(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`}}])}(),z=f(`ObservableSet`,yr),br=Object.create(null),xr=function(){function e(e,t,n,r){t===void 0&&(t=new Map),r===void 0&&(r=bn),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 gn(`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 Ln)return n.set(t),!0;if(jt(this)){var r=Nt(this,{type:sr,object:this.v||this.h,name:e,newValue:t});if(!r)return null;t=r.newValue}if((t=n.xt(t))!==R.UNCHANGED){var i=Pt(this),a=i?{type:sr,observableKind:`object`,debugObjectName:this.tt,object:this.v||this.h,oldValue:n.Ot,name:e,newValue:t}:null;n.gt(t),i&&It(this,a)}return!0},n.ct=function(e){return R.trackingDerivation&&!g(this.h,e)&&this.it(e),this.h[e]},n.ht=function(e,t,n){return n===void 0&&(n=!1),g(this.h,e)?this.j.has(e)?this.S(e,t):n?Reflect.set(this.h,e,t):(this.h[e]=t,!0):this.s(e,{value:t,enumerable:!0,writable:!0,configurable:!0},this.un,n)},n.it=function(e){if(!R.trackingDerivation)return e in this.h;this.sn||=new Map;var t=this.sn.get(e);return t||(t=new Fn(e in this.h,ue,`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[hn])!=null&&r[e])return;t(1,n.i,this.tt+`.`+e.toString())}for(var i=this.h;i&&i!==sn;){var a=an(i,e);if(a){var o=n.o(this,e,a,i);if(o===0)return;if(o===1)break}i=Object.getPrototypeOf(i)}Kt(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&&Kt(this,0,e),i},n.l=function(e,t,n){n===void 0&&(n=!1);try{et();var r=this.Ut(e);if(!r)return r;if(jt(this)){var i=Nt(this,{object:this.v||this.h,name:e,type:hr,newValue:t.value});if(!i)return null;var a=i.newValue;t.value!==a&&(t=ee({},t,{value:a}))}if(n){if(!Reflect.defineProperty(this.h,e,t))return!1}else on(this.h,e,t);this.fn(e,t.value)}finally{tt()}return!0},n.g=function(e,t,n,r){r===void 0&&(r=!1);try{et();var i=this.Ut(e);if(!i)return i;if(jt(this)){var a=Nt(this,{object:this.v||this.h,name:e,type:hr,newValue:t});if(!a)return null;t=a.newValue}var o=Wt(e),s={configurable:!R.safeDescriptors||this.p,enumerable:!0,get:o.get,set:o.set};if(r){if(!Reflect.defineProperty(this.h,e,s))return!1}else on(this.h,e,s);var c=new Fn(t,n,`ObservableObject.key`,!1);this.j.set(e,c),this.fn(e,c.Ot)}finally{tt()}return!0},n.m=function(e,t,n){n===void 0&&(n=!1);try{et();var r=this.Ut(e);if(!r)return r;if(jt(this)&&!Nt(this,{object:this.v||this.h,name:e,type:hr,newValue:void 0}))return null;t.name||=`ObservableObject.key`,t.context=this.v||this.h;var i=Wt(e),a={configurable:!R.safeDescriptors||this.p,enumerable:!1,get:i.get,set:i.set};if(n){if(!Reflect.defineProperty(this.h,e,a))return!1}else on(this.h,e,a);this.j.set(e,new Ln(t)),this.fn(e,void 0)}finally{tt()}return!0},n.Ut=function(e,t){if(t===void 0&&(t=!1),!g(this.h,e))return!0;if(jt(this)&&!Nt(this,{object:this.v||this.h,name:e,type:`remove`}))return null;try{var n;et();var r=Pt(this),i=this.j.get(e),a=void 0;if(!i&&r&&(a=an(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 Fn&&(a=i.Ot),rt(i)),this.lt.reportChanged(),(n=this.sn)==null||(n=n.get(e))==null||n.set(e in this.h),r&&r&&It(this,{type:`remove`,observableKind:`object`,object:this.v||this.h,debugObjectName:this.tt,oldValue:a,name:e})}finally{tt()}return!0},n._t=function(e){return Ft(this,e)},n.St=function(e){return Mt(this,e)},n.fn=function(e,t){var n,r=Pt(this);r&&r&&It(this,r?{type:hr,observableKind:`object`,debugObjectName:this.tt,object:this.v||this.h,name:e,newValue:t}:null),(n=this.sn)==null||(n=n.get(e))==null||n.set(!0),this.lt.reportChanged()},n.rt=function(){return this.lt.reportObserved(),pn(this.h)},n.nt=function(){return this.lt.reportObserved(),Object.keys(this.h)},e}(),B=f(`ObservableObjectAdministration`,xr),Sr=qt(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(){};dr=Tr,fr=Array.prototype,Object.setPrototypeOf?Object.setPrototypeOf(dr.prototype,fr):dr.prototype.__proto__===void 0?dr.prototype=fr:dr.prototype.__proto__=fr;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,$t((function(){var e=new lr(r,n,i,!0);e.v=a,d(a,P,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[P].st.reportObserved();var e=[...arguments];return Array.prototype.concat.apply(this.slice(),e.map((function(e){return Bt(e)?e.slice():e})))},n[Symbol.iterator]=function(){var e=this,t=0;return tn({next:function(){return t<e.length?{value:e[t++],done:!1}:{done:!0,value:void 0}}})},S(t,[{key:`length`,get:function(){return this[P].Ft()},set:function(e){this[P].Xt(e)}},{key:Symbol.toStringTag,get:function(){return`Array`}}])}(Tr);Object.entries(ur).forEach((function(e){var t=e[0];t!==`concat`&&u(Er.prototype,t,e[1])})),Jt(1e3);var Dr=sn.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:ot,extras:{getDebugName:Qt},$mobx:P}),e.$mobx=P,e.FlowCancellationError=tr,e.ObservableMap=gr,e.ObservableSet=yr,e.Reaction=Wn,e._allowStateChanges=Re,e._allowStateChangesInsideComputed=ct,e._allowStateReadsEnd=Ye,e._allowStateReadsStart=Je,e._autoAction=Qn,e._endAction=Le,e._getAdministration=Zt,e._getGlobalState=function(){return R},e._interceptReads=function(e,t,n){var r;return _r(e)||Bt(e)||In(e)?r=Zt(e):Gt(e)&&(r=Zt(e,t)),r.dehancer=typeof t==`function`?t:n,function(){r.dehancer=void 0}},e._isComputingDerivation=function(){return R.trackingDerivation!==null},e._resetGlobalState=function(){var e=new Vn;for(var t in e)Bn.indexOf(t)===-1&&(R[t]=e[t]);R.allowStateChanges=!R.enforceActions},e._startAction=Ie,e.action=Zn,e.autorun=ut,e.comparer=vn,e.computed=An,e.configure=function(e){!0===e.isolateGlobalState&&function(){if((R.pendingReactions.length||R.inBatch||R.isRunningReactions)&&t(36),Un=!0,Hn){var e=n();--e.__mobxInstanceCount==0&&(e.__mobxGlobals=void 0),R=new Vn}}();var r,i,a=e.useProxies,o=e.enforceActions;if(a!==void 0&&(R.useProxies=a===`always`||a!==`never`&&typeof Proxy<`u`),a===`ifavailable`&&(R.verifyProxies=!0),o!==void 0){var s=o===`always`?`always`:o===`observed`;R.enforceActions=s,R.allowStateChanges=!0!==s&&s!==`always`}[`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`disableErrorBoundaries`,`safeDescriptors`].forEach((function(t){t in e&&(R[t]=!!e[t])})),R.allowStateReads=!R.observableRequiresReaction,e.reactionScheduler&&(r=e.reactionScheduler,i=Gn,Gn=function(e){return r((function(){return i(e)}))})},e.createAtom=ce,e.defineProperty=function(e,n,r){if(Gt(e))return e[P].l(n,r);t(39)},e.entries=function(e){return Gt(e)?Ct(e).map((function(t){return[t,e[t]]})):_r(e)?Ct(e).map((function(t){return[t,e.get(t)]})):z(e)?Array.from(e.entries()):Bt(e)?e.map((function(e,t){return[t,e]})):void t(7)},e.extendObservable=ht,e.flow=ir,e.flowResult=function(e){return e},e.get=function(e,n){if(wt(e,n))return Gt(e)?e[P].ct(n):_r(e)?e.get(n):Bt(e)?e[n]:void t(11)},e.getAtom=Xt,e.getDebugName=Qt,e.getDependencyTree=function(e,t){return gt(Xt(e,t))},e.getObserverTree=function(e,t){return _t(Xt(e,t))},e.has=wt,e.intercept=function(e,t,n){return a(n)?function(e,t,n){return Zt(e,t).St(n)}(e,t,n):function(e,t){return Zt(e).St(t)}(e,t)},e.isAction=lt,e.isBoxedObservable=In,e.isComputed=function(e){return bt(e)},e.isComputedProp=function(e,t){return bt(e,t)},e.isFlow=yt,e.isFlowCancellationError=function(e){return e instanceof tr},e.isObservable=St,e.isObservableArray=Bt,e.isObservableMap=_r,e.isObservableObject=Gt,e.isObservableProp=function(e,t){return xt(e,t)},e.isObservableSet=z,e.keys=Ct,e.makeAutoObservable=function(e,t,n){return c(e)?ht(e,e,t,n):($t((function(){var r=Ut(e,n)[P];if(!e[or]){var i=Object.getPrototypeOf(e),a=new Set([].concat(pn(e),pn(i)));a.delete(`constructor`),a.delete(P),u(i,or,a)}e[or].forEach((function(e){return r.o(e,!t||!(e in t)||t[e])}))})),e)},e.makeObservable=function(e,t,n){return $t((function(){var r=Ut(e,n)[P];t??=function(e){return g(e,hn)||u(e,hn,ee({},e[hn])),e[hn]}(e),pn(t).forEach((function(e){return r.o(e,t[e])}))})),e},e.observable=Dn,e.observe=function(e,t,n,r){return a(n)?function(e,t,n,r){return Zt(e,t)._t(n,r)}(e,t,n,r):function(e,t,n){return Zt(e)._t(t,n)}(e,t,n)},e.onBecomeObserved=ft,e.onBecomeUnobserved=pt,e.onReactionError=function(e){return R.globalReactionErrorHandlers.push(e),function(){var t=R.globalReactionErrorHandlers.indexOf(e);t>=0&&R.globalReactionErrorHandlers.splice(t,1)}},e.override=yn,e.ownKeys=Tt,e.reaction=function(e,t,n){function r(){if(p=!1,!h.isDisposed){var t=!1,r=s;h.track((function(){var n=Re(!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=ln);var a,o,s,c=n.name??`Reaction`,l=Zn(c,n.onError?(a=n.onError,o=t,function(){try{return o.apply(this,arguments)}catch(e){a.call(this,e)}}):t),u=!n.scheduler&&!n.delay,d=dt(n),f=!0,p=!1,m=n.compareStructural?vn.structural:n.equals||vn.default,h=new Wn(c,(function(){f||u?r():p||(p=!0,d(r))}),n.onError,n.requiresObservable);return(i=n)!=null&&(i=i.signal)!=null&&i.aborted||h.Y(),h.Z(n?.signal)},e.remove=function(e,n){Gt(e)?e[P].Ut(n):_r(e)||z(e)?e.delete(n):Bt(e)?(typeof n!=`number`&&(n=parseInt(n,10)),e.splice(n,1)):t(9)},e.runInAction=ct,e.set=function e(n,r,i){if(arguments.length!==2||z(n))Gt(n)?n[P].ht(r,i):_r(n)?n.set(r,i):z(n)?n.add(r):Bt(n)?(typeof r!=`number`&&(r=parseInt(r,10)),r<0&&t(`Invalid index: '`+r+`'`),et(),r>=n.length&&(n.length=r+1),n[r]=i,tt()):t(8);else{et();var a=r;try{for(var o in a)e(n,o,a[o])}finally{tt()}}},e.spy=ot,e.toJS=function(e){return function e(t,n){if(typeof t!=`object`||!t||t instanceof Date||!St(t))return t;if(In(t)||L(t))return e(t.get(),n);if(n.has(t))return n.get(t);if(Bt(t)){var r=Et(n,t,Array(t.length));return t.forEach((function(t,i){r[i]=e(t,n)})),r}if(z(t)){var i=Et(n,t,new Set);return t.forEach((function(t){i.add(e(t,n))})),i}if(_r(t)){var a=Et(n,t,new Map);return t.forEach((function(t,r){a.set(r,e(t,n))})),a}var o=Et(n,t,{});return Tt(t).forEach((function(r){sn.propertyIsEnumerable.call(t,r)&&(o[r]=e(t[r],n))})),o}(e,new Map)},e.trace=function(){},e.transaction=Dt,e.untracked=Ge,e.values=function(e){return Gt(e)?Ct(e).map((function(t){return e[t]})):_r(e)?Ct(e).map((function(t){return e.get(t)})):z(e)?Array.from(e.values()):Bt(e)?e.slice():void t(6)},e.when=function(e,t,n){return arguments.length===1||t&&typeof t==`object`?kt(e,t):Ot(e,t,n||{})}})),_g=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){F.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++F.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 ie(e){return e!=null&&Object.prototype.toString.call(e)===`[object Set]`}var ae=Object.getOwnPropertySymbols!==void 0;function w(e){var t=Object.keys(e);if(!ae)return t;var n=Object.getOwnPropertySymbols(e);return n.length?[].concat(t,n.filter(function(t){return c.propertyIsEnumerable.call(e,t)})):t}var T=typeof Reflect<`u`&&Reflect.ownKeys?Reflect.ownKeys:ae?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames;function oe(e){return typeof e==`string`?e:typeof e==`symbol`?e.toString():new String(e).toString()}function se(e){return e===null?null:typeof e==`object`?``+e:e}function ce(e,t){return c.hasOwnProperty.call(e,t)}var le=Object.getOwnPropertyDescriptors||function(e){var t={};return T(e).forEach(function(n){t[n]=o(e,n)}),t};function ue(e,t){return!!(e&t)}function de(e,t,n){return n?e|=t:e&=~t,e}function fe(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 pe(e,t,n){if(be())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var i=new(e.bind.apply(e,r));return n&&xe(i,n.prototype),i}function me(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,Ce(r.key),r)}}function he(e,t,n){return t&&me(e.prototype,t),n&&me(e,n),Object.defineProperty(e,`prototype`,{writable:!1}),e}function ge(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=we(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
+ '`+s.i+`' can only be used on properties with a function value.`)}function he(e,t,n,r,i){var a,o,s;i===void 0&&(i=R.safeDescriptors);var c=r.value;return(a=t.u)!=null&&a.bound&&(c=c.bind(e.v??e.h)),{value:Pe(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 ge(e,t){return{i:e,u:t,o:E,s:_e,t:ve}}function E(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)||!yt(e.h[t]))&&this.s(e,t,n,!1)===null?0:yt(n.value)?1:(on(r,t,ye(e,0,0,n,!1,!1)),2)}function _e(e,t,n,r){var i=ye(e,0,0,n,this.u?.bound);return e.l(t,i,r)}function ve(e,t){var n,r=t.name,i=t.addInitializer;return yt(e)||(e=ir(e)),(n=this.u)!=null&&n.bound&&i((function(){var e=this[r].bind(this);e.isMobXFlow=!0,this[r]=e})),e}function ye(e,t,n,r,i,a){a===void 0&&(a=R.safeDescriptors);var o=r.value;return yt(o)||(o=ir(o)),i&&((o=o.bind(e.v??e.h)).isMobXFlow=!0),{value:o,configurable:!a||e.p,enumerable:!1,writable:!a}}function be(e,t){return{i:e,u:t,o:xe,s:Se,t:Ce}}function xe(e,t,n){return this.s(e,t,n,!1)===null?0:1}function Se(e,t,n,r){return e.m(t,ee({},this.u,{get:n.get,set:n.set}),r)}function Ce(e,t){var n=this,r=t.name;return(0,t.addInitializer)((function(){var t=Ut(this)[P],i=ee({},n.u,{get:e,context:this});i.name||=`ObservableObject.`+r.toString(),t.j.set(r,new Ln(i))})),function(){return this[P].O(r)}}function we(e,t){return{i:e,u:t,o:Te,s:Ee,t:De}}function Te(e,t,n){return this.s(e,t,n,!1)===null?0:1}function Ee(e,t,n,r){return e.g(t,n.value,this.u?.enhancer??le,r)}function De(e,t){function n(e,t){var n=Ut(e)[P],i=new Fn(t,r.u?.enhancer??le,`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[P].O(a)},set:function(e){return o.has(this)||n(this,e),this[P].S(a,e)},init:function(e){return o.has(this)||n(this,e),e}}}function Oe(e){return{i:`true`,u:e,o:ke,s:Ae,t:je}}function ke(e,t,n,r){var i,a,o;if(n.get)return An.o(e,t,n,r);if(n.set){var s=lt(n.set)?n.set:Pe(t.toString(),n.set);return r===e.h?e.l(t,{configurable:!R.safeDescriptors||e.p,set:s})===null?0:2:(on(r,t,{configurable:!0,set:s}),2)}if(r!==e.h&&typeof n.value==`function`)return l(n.value)?((o=this.u)!=null&&o.autoBind?ir.bound:ir).o(e,t,n,r):((a=this.u)!=null&&a.autoBind?Qn.bound:Qn).o(e,t,n,r);var c=!1===this.u?.deep?Dn.ref:Dn;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 Ae(e,t,n,r){var i;return n.get?An.s(e,t,n,r):n.set?e.l(t,{configurable:!R.safeDescriptors||e.p,set:Pe(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?Dn.ref:Dn).s(e,t,n,r))}function je(){t(`'`+this.i+`' cannot be used as a decorator`)}function Me(e){return e||xn}function D(e){return!0===e.deep?le:!1===e.deep?ue:(t=e.defaultDecorator)&&(n=(r=t.u)?.enhancer)!=null?n:le;var t,n,r}function Ne(e,t,n){return se(t)?Sn.t(e,t):o(t)?void oe(e,t,Sn):St(e)?e:c(e)?Dn.object(e,t,n):Array.isArray(e)?Dn.array(e,t):p(e)?Dn.map(e,t):m(e)?Dn.set(e,t):typeof e==`object`&&e?e:Dn.box(e,t)}function Pe(e,t,n,r){function i(){return Fe(0,n,t,r||this,arguments)}return n===void 0&&(n=!1),i.isMobxAction=!0,i.toString=function(){return t.toString()},Nn&&(Pn.value=e,on(i,`name`,Pn)),i}function Fe(e,t,n,r,i){var a=Ie(0,t);try{return n.apply(r,i)}catch(e){throw a._=e,e}finally{Le(a)}}function Ie(e,t){var n=R.trackingDerivation,r=!t||!n;et();var i=R.allowStateChanges;r&&(Ke(),i=ze(!0));var a={A:r,k:n,M:i,V:Je(!0),R:!1,N:0,T:Mn++,C:jn};return jn=a.T,a}function Le(e){jn!==e.T&&t(30),jn=e.C,e._!==void 0&&(R.suppressReactionErrors=!0),Be(e.M),Ye(e.V),tt(),e.A&&qe(e.k),R.suppressReactionErrors=!1}function Re(e,t){var n=ze(e);try{return t()}finally{Be(n)}}function ze(e){var t=R.allowStateChanges;return R.allowStateChanges=e,t}function Be(e){R.allowStateChanges=e}function Ve(e){return e instanceof zn}function He(e){switch(e.I){case I.L:return!1;case I.P:case I.K:return!0;case I.B:for(var t=Je(!0),n=Ke(),r=e.D,i=r.length,a=0;a<i;a++){var o=r[a];if(L(o)){if(R.disableErrorBoundaries)o.get();else try{o.get()}catch{return qe(n),Ye(t),!0}if(e.I===I.K)return qe(n),Ye(t),!0}}return Xe(e),qe(n),Ye(t),!1}}function Ue(e,t,n){var r=Je(!0);Xe(e),e.W=Array(e.q===0?100:e.D.length),e.G=0,e.q=++R.runId;var i,a=R.trackingDerivation;if(R.trackingDerivation=e,R.inBatch++,!0===R.disableErrorBoundaries)i=t.call(n);else try{i=t.call(n)}catch(e){i=new zn(e)}return R.inBatch--,R.trackingDerivation=a,function(e){for(var t=e.D,n=e.D=e.W,r=I.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&&Qe(c,e),c.diffValue=0}for(;i--;){var l=n[i];l.diffValue===1&&(l.diffValue=0,Ze(l,e))}r!==I.L&&(e.I=r,e.H())}(e),Ye(r),i}function We(e){var t=e.D;e.D=[];for(var n=t.length;n--;)Qe(t[n],e);e.I=I.P}function Ge(e){var t=Ke();try{return e()}finally{qe(t)}}function Ke(){var e=R.trackingDerivation;return R.trackingDerivation=null,e}function qe(e){R.trackingDerivation=e}function Je(e){var t=R.allowStateReads;return R.allowStateReads=e,t}function Ye(e){R.allowStateReads=e}function Xe(e){if(e.I!==I.L){e.I=I.L;for(var t=e.D,n=t.length;n--;)t[n].U=I.L}}function Ze(e,t){e.F.add(t),e.U>t.I&&(e.U=t.I)}function Qe(e,t){e.F.delete(t),e.F.size===0&&$e(e)}function $e(e){!1===e.isPendingUnobservation&&(e.isPendingUnobservation=!0,R.pendingUnobservations.push(e))}function et(){R.inBatch++}function tt(){if(--R.inBatch==0){it();for(var e=R.pendingUnobservations,t=0;t<e.length;t++){var n=e[t];n.isPendingUnobservation=!1,n.F.size===0&&(n.isBeingObserved&&(n.isBeingObserved=!1,n.onBUO()),n instanceof Ln&&n.X())}R.pendingUnobservations=[]}}function nt(e){var t=R.trackingDerivation;return t===null?(e.F.size===0&&R.inBatch>0&&$e(e),!1):(t.q!==e.$&&(e.$=t.q,t.W[t.G++]=e,!e.isBeingObserved&&R.trackingContext&&(e.isBeingObserved=!0,e.onBO())),e.isBeingObserved)}function rt(e){e.U!==I.K&&(e.U=I.K,e.F.forEach((function(e){e.I===I.L&&e.H(),e.I=I.K})))}function it(){R.inBatch>0||R.isRunningReactions||Gn(at)}function at(){R.isRunningReactions=!0;for(var e=R.pendingReactions,t=0;e.length>0;){++t==100&&(console.error(`[mobx] cycle in reaction: `+e[0]),e.splice(0));for(var n=e.splice(0),r=0,i=n.length;r<i;r++)n[r].J()}R.isRunningReactions=!1}function ot(){return console.warn(`[mobx.spy] Is a no-op in production builds`),function(){}}function st(e){return function(t,n){return a(t)?Pe(t.name||`<unnamed action>`,t,e):a(n)?Pe(t,n,e):se(n)?(e?Yn:qn).t(t,n):o(n)?oe(t,n,e?Yn:qn):o(t)?T(de(e?`autoAction`:`action`,{name:t,autoAction:e})):void 0}}function ct(e){return Fe(0,!1,e,this,void 0)}function lt(e){return a(e)&&!0===e.isMobxAction}function ut(e,t){function n(){e(i)}var r;t===void 0&&(t=ln);var i,a=t?.name??`Autorun`;if(t.scheduler||t.delay){var o=dt(t),s=!1;i=new Wn(a,(function(){s||(s=!0,o((function(){s=!1,i.isDisposed||i.track(n)})))}),t.onError,t.requiresObservable)}else i=new Wn(a,(function(){this.track(n)}),t.onError,t.requiresObservable);return(r=t)!=null&&(r=r.signal)!=null&&r.aborted||i.Y(),i.Z(t?.signal)}function dt(e){return e.scheduler?e.scheduler:e.delay?function(t){return setTimeout(t,e.delay)}:$n}function ft(e,t,n){return mt(`onBO`,e,t,n)}function pt(e,t,n){return mt(`onBUO`,e,t,n)}function mt(e,t,n,r){var i=typeof r==`function`?Xt(t,n):Xt(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 ht(e,t,n,r){var i=mn(t);return $t((function(){var t=Ut(e,r)[P];pn(i).forEach((function(e){t.s(e,i[e],!n||!(e in n)||n[e])}))})),e}function gt(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(gt)),n}function _t(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(_t)),t}function vt(e){a(e.cancel)&&e.cancel()}function yt(e){return!0===e?.isMobXFlow}function bt(e,t){return t===void 0?L(e):!1===Gt(e)||!e[P].j.has(t)?!1:L(Xt(e,t))}function xt(e,t){return!!e&&(t===void 0?Gt(e)||!!e[P]||_n(e)||Kn(e)||L(e):!!Gt(e)&&e[P].j.has(t))}function St(e){return xt(e)}function Ct(e){return Gt(e)?e[P].nt():_r(e)||z(e)?Array.from(e.keys()):Bt(e)?e.map((function(e,t){return t})):void t(5)}function wt(e,n){return Gt(e)?e[P].it(n):_r(e)||z(e)?e.has(n):Bt(e)?n>=0&&n<e.length:void t(10)}function Tt(e){if(Gt(e))return e[P].rt();t(38)}function Et(e,t,n){return e.set(t,n),n}function Dt(e,t){t===void 0&&(t=void 0),et();try{return e.apply(t)}finally{tt()}}function Ot(e,t,n){var r;if(typeof n.timeout==`number`){var i=Error(`WHEN_TIMEOUT`);r=setTimeout((function(){if(!o[P].isDisposed){if(o(),!n.onError)throw i;n.onError(i)}}),n.timeout)}n.name=`When`;var a=Pe(`When-effect`,t),o=ut((function(t){Re(!1,e)&&(t.dispose(),r&&clearTimeout(r),a())}),n);return o}function kt(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=Ot(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 At(e){return e[P]}function jt(e){return e.et!==void 0&&e.et.length>0}function Mt(e,t){var n=e.et||=[];return n.push(t),i((function(){var e=n.indexOf(t);e!==-1&&n.splice(e,1)}))}function Nt(e,n){var r=Ke();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{qe(r)}}function Pt(e){return e.ut!==void 0&&e.ut.length>0}function Ft(e,t){var n=e.ut||=[];return n.push(t),i((function(){var e=n.indexOf(t);e!==-1&&n.splice(e,1)}))}function It(e,t){var n=Ke(),r=e.ut;if(r){for(var i=0,a=(r=r.slice()).length;i<a;i++)r[i](t);qe(n)}}function Lt(e,t,n,i){return n===void 0&&(n=`ObservableArray`),i===void 0&&(i=!1),r(),$t((function(){var r=new lr(n,t,i,!1);d(r.j,P,r);var a=new Proxy(r.j,cr);return r.v=a,e&&e.length&&r.ot(0,0,e),a}))}function O(e,t){typeof Array.prototype[e]==`function`&&(ur[e]=t(e))}function Rt(e){return function(){var t=this[P];t.st.reportObserved();var n=t.ft(t.j);return n[e].apply(n,arguments)}}function k(e){return function(t,n){var r=this,i=this[P];return i.st.reportObserved(),i.ft(i.j)[e]((function(e,i){return t.call(n,e,i,r)}))}}function zt(e){return function(){var t=this,n=this[P];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 Bt(e){return s(e)&&pr(e[P])}function Vt(e){return e[Symbol.toStringTag]=`MapIterator`,tn(e)}function Ht(e){return e[Symbol.toStringTag]=`SetIterator`,tn(e)}function Ut(e,t){if(g(e,P))return e;var n=t?.name??`ObservableObject`;return u(e,P,new xr(e,new Map,String(n),function(e){return e?e.defaultDecorator??Oe(e):void 0}(t))),e}function Wt(e){return br[e]||(br[e]={get:function(){return this[P].O(e)},set:function(t){return this[P].S(e,t)}})}function Gt(e){return!!s(e)&&B(e[P])}function Kt(e,t,n){var r;(r=e.h[hn])==null||delete r[n]}function qt(e){return{enumerable:!1,configurable:!0,get:function(){return this[P].ct(e)},set:function(t){this[P].ht(e,t)}}}function A(e){on(Er.prototype,``+e,qt(e))}function Jt(e){if(e>wr){for(var t=wr;t<e+100;t++)A(t);wr=e}}function Yt(e,t,n){return new Er(e,t,n)}function Xt(e,n){if(typeof e==`object`&&e){if(Bt(e))return n!==void 0&&t(23),e[P].st;if(z(e))return e.st;if(_r(e)){if(n===void 0)return e.lt;var r=e.vt.get(n)||e.dt.get(n);return r||t(25,n,Qt(e)),r}if(Gt(e)){if(!n)return t(26);var i=e[P].j.get(n);return i||t(27,n,Qt(e)),i}if(_n(e)||L(e)||Kn(e))return e}else if(a(e)&&Kn(e[P]))return e[P];t(28)}function Zt(e,n){return e||t(29),n===void 0?_n(e)||L(e)||Kn(e)||_r(e)||z(e)?e:e[P]?e[P]:void t(24,e):Zt(Xt(e,n))}function Qt(e,t){var n;if(t!==void 0)n=Xt(e,t);else{if(lt(e))return e.name;n=Gt(e)||_r(e)||z(e)?Zt(e):Xt(e)}return n.tt}function $t(e){var t=Ke(),n=ze(!0);et();try{return e()}finally{tt(),Be(n),qe(t)}}function en(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=j(t),n=j(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 j(e){return Bt(e)?e.slice():p(e)||_r(e)||m(e)||z(e)?Array.from(e.entries()):e}function tn(e){return e[Symbol.iterator]=nn,Object.assign(Object.create(Or),e)}function nn(){return this}Object.defineProperty(e,`__esModule`,{value:!0});var rn={},M=Object.assign,an=Object.getOwnPropertyDescriptor,on=Object.defineProperty,sn=Object.prototype,cn=[];Object.freeze(cn);var ln={};Object.freeze(ln);var N=typeof Proxy<`u`,un=Object.toString(),dn=function(){},fn=Object.getOwnPropertySymbols!==void 0,pn=typeof Reflect<`u`&&Reflect.ownKeys?Reflect.ownKeys:fn?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames,mn=Object.getOwnPropertyDescriptors||function(e){var t={};return pn(e).forEach((function(n){t[n]=an(e,n)})),t},hn=Symbol(`mobx-stored-annotations`),P=Symbol(`mobx administration`),gn=function(){function e(e){e===void 0&&(e=`Atom`),this.tt=void 0,this.bt=0,this.F=new Set,this.$=0,this.U=I.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 nt(this)},t.reportChanged=function(){et(),rt(this),tt()},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)}}])}();gn.pt=1,gn.yt=2,gn.wt=4;var _n=f(`Atom`,gn),vn={identity:function(e,t){return e===t},structural:function(e,t){return en(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 en(e,t,1)}},yn=T({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`)}}),bn=Oe(),xn={deep:!0,name:void 0,defaultDecorator:void 0,proxy:!0};Object.freeze(xn);var Sn=we(`observable`),Cn=we(`observable.ref`,{enhancer:ue}),F=we(`observable.shallow`,{enhancer:function(e,t,n){return e==null||Gt(e)||Bt(e)||_r(e)||z(e)?e:Array.isArray(e)?Dn.array(e,{name:n,deep:!1}):c(e)?Dn.object(e,void 0,{name:n,deep:!1}):p(e)?Dn.map(e,{name:n,deep:!1}):m(e)?Dn.set(e,{name:n,deep:!1}):void 0}}),wn=we(`observable.struct`,{enhancer:function(e,t){return en(e,t)?t:e}}),Tn=T(Sn);M(Ne,Tn);var En,Dn=M(Ne,{box:function(e,t){var n=Me(t);return new Fn(e,D(n),n.name,!0,n.equals)},array:function(e,t){var n=Me(t);return(!1===R.useProxies||!1===n.proxy?Yt:Lt)(e,D(n),n.name)},map:function(e,t){var n=Me(t);return new gr(e,D(n),n.name)},set:function(e,t){var n=Me(t);return new yr(e,D(n),n.name)},object:function(e,t,n){return $t((function(){return ht(!1===R.useProxies||!1===n?.proxy?Ut({},n):function(e,t){var n;return r(),(n=(e=Ut(e,t))[P]).v??(n.v=new Proxy(e,ar))}({},n),e,t)}))},ref:T(Cn),shallow:T(F),deep:Tn,struct:T(wn)}),On=be(`computed`),kn=be(`computed.struct`,{equals:vn.structural}),An=function(e,t){if(se(t))return On.t(e,t);if(o(t))return oe(e,t,On);if(c(e))return T(be(`computed`,e));var n=c(t)?t:{};return n.get=e,n.name||=e.name||``,new Ln(n)};Object.assign(An,On),An.struct=T(kn);var jn=0,Mn=1,Nn=(En=an((function(){}),`name`)?.configurable)!=null&&En,Pn={value:`action`,configurable:!0,writable:!1,enumerable:!1},Fn=function(e){function t(t,n,r,i,a){var o;return r===void 0&&(r=`ObservableValue`),a===void 0&&(a=vn.default),(o=e.call(this,r)||this).enhancer=void 0,o.tt=void 0,o.equals=void 0,o.jt=!1,o.et=void 0,o.ut=void 0,o.Ot=void 0,o.dehancer=void 0,o.enhancer=n,o.tt=r,o.equals=a,o.Ot=n(t,void 0,r),o}ne(t,e);var n=t.prototype;return n.dehanceValue=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.set=function(e){(e=this.xt(e))!==R.UNCHANGED&&this.gt(e)},n.xt=function(e){if(jt(this)){var t=Nt(this,{object:this,type:sr,newValue:e});if(!t)return R.UNCHANGED;e=t.newValue}return e=this.enhancer(e,this.Ot,this.tt),this.equals(this.Ot,e)?R.UNCHANGED:e},n.gt=function(e){var t=this.Ot;this.Ot=e,this.reportChanged(),Pt(this)&&It(this,{type:sr,object:this,newValue:e,oldValue:t})},n.get=function(){return this.reportObserved(),this.dehanceValue(this.Ot)},n.St=function(e){return Mt(this,e)},n._t=function(e,t){return t&&e({observableKind:`value`,debugObjectName:this.tt,object:this,type:sr,newValue:this.Ot,oldValue:void 0}),Ft(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}(gn),In=f(`ObservableValue`,Fn),Ln=function(){function e(e){this.I=I.P,this.D=[],this.W=null,this.F=new Set,this.q=0,this.$=0,this.U=I.L,this.G=0,this.Ot=new zn(null),this.tt=void 0,this.At=void 0,this.bt=0,this.derivation=void 0,this.kt=void 0,this.Mt=Rn.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=Pe(`ComputedValue-setter`,e.set)),this.Vt=e.equals||(e.compareStructural||e.struct?vn.structural:vn.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===I.L&&(e.U=I.B,e.F.forEach((function(e){e.I===I.L&&(e.I=I.B,e.H())})))})(this)},n.onBO=function(){this.onBOL&&this.onBOL.forEach((function(e){return e()}))},n.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(e){return e()}))},n.get=function(){if(this.isComputing&&t(32,this.tt,this.derivation),R.inBatch!==0||this.F.size!==0||this.Nt){if(nt(this),He(this)){var e=R.trackingContext;this.Nt&&!e&&(R.trackingContext=this),this.trackAndCompute()&&function(e){e.U!==I.K&&(e.U=I.K,e.F.forEach((function(t){t.I===I.B?t.I=I.K:t.I===I.L&&(e.U=I.L)})))}(this),R.trackingContext=e}}else He(this)&&(this.Tt(),et(),this.Ot=this.Ct(!1),tt());var n=this.Ot;if(Ve(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===I.P,n=this.Ct(!0),r=t||Ve(e)||Ve(n)||!this.Vt(e,n);return r&&(this.Ot=n),r},n.Ct=function(e){this.isComputing=!0;var t,n=ze(!1);if(e)t=Ue(this,this.derivation,this.Et);else if(!0===R.disableErrorBoundaries)t=this.derivation.call(this.Et);else try{t=this.derivation.call(this.Et)}catch(e){t=new zn(e)}return Be(n),this.isComputing=!1,t},n.X=function(){this.Nt||(We(this),this.Ot=void 0)},n._t=function(e,t){var n=this,r=!0,i=void 0;return ut((function(){var a=n.get();if(!r||t){var o=Ke();e({observableKind:`computed`,debugObjectName:n.tt,type:sr,object:n,newValue:a,oldValue:i}),qe(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)}}])}();Ln.It=1,Ln.Lt=2,Ln.pt=4,Ln.yt=8,Ln.wt=16;var I,Rn,L=f(`ComputedValue`,Ln);(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_`})(I||={}),function(e){e[e.NONE=0]=`NONE`,e[e.LOG=1]=`LOG`,e[e.BREAK=2]=`BREAK`}(Rn||={});var zn=function(e){this.cause=void 0,this.cause=e},Bn=[`mobxGuid`,`spyListeners`,`enforceActions`,`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`allowStateReads`,`disableErrorBoundaries`,`runId`,`UNCHANGED`,`useProxies`],Vn=function(){this.version=6,this.UNCHANGED={},this.trackingDerivation=null,this.trackingContext=null,this.runId=0,this.mobxGuid=0,this.inBatch=0,this.pendingUnobservations=[],this.pendingReactions=[],this.isRunningReactions=!1,this.allowStateChanges=!1,this.allowStateReads=!0,this.enforceActions=!0,this.spyListeners=[],this.globalReactionErrorHandlers=[],this.computedRequiresReaction=!1,this.reactionRequiresObservable=!1,this.observableRequiresReaction=!1,this.disableErrorBoundaries=!1,this.suppressReactionErrors=!1,this.useProxies=!0,this.verifyProxies=!1,this.safeDescriptors=!0},Hn=!0,Un=!1,R=function(){var e=n();return e.__mobxInstanceCount>0&&!e.__mobxGlobals&&(Hn=!1),e.__mobxGlobals&&e.__mobxGlobals.version!==new Vn().version&&(Hn=!1),Hn?e.__mobxGlobals?(e.__mobxInstanceCount+=1,e.__mobxGlobals.UNCHANGED||(e.__mobxGlobals.UNCHANGED={}),e.__mobxGlobals):(e.__mobxInstanceCount=1,e.__mobxGlobals=new Vn):(setTimeout((function(){Un||t(35)}),1),new Vn)}(),Wn=function(){function e(e,t,n,r){e===void 0&&(e=`Reaction`),this.tt=void 0,this.Pt=void 0,this.Kt=void 0,this.Bt=void 0,this.D=[],this.W=[],this.I=I.P,this.q=0,this.G=0,this.bt=0,this.Mt=Rn.NONE,this.tt=e,this.Pt=t,this.Kt=n,this.Bt=r}var t=e.prototype;return t.H=function(){this.Y()},t.Y=function(){this.isScheduled||(this.isScheduled=!0,R.pendingReactions.push(this),it())},t.J=function(){if(!this.isDisposed){et(),this.isScheduled=!1;var e=R.trackingContext;if(R.trackingContext=this,He(this)){this.isTrackPending=!0;try{this.Pt()}catch(e){this.Dt(e)}}R.trackingContext=e,tt()}},t.track=function(e){if(!this.isDisposed){et(),this.isRunning=!0;var t=R.trackingContext;R.trackingContext=this;var n=Ue(this,e,void 0);R.trackingContext=t,this.isRunning=!1,this.isTrackPending=!1,this.isDisposed&&We(this),Ve(n)&&this.Dt(n.cause),tt()}},t.Dt=function(e){var t=this;if(this.Kt)this.Kt(e,this);else{if(R.disableErrorBoundaries)throw e;R.suppressReactionErrors||console.error(`[mobx] uncaught error in '`+this+`'`,e),R.globalReactionErrorHandlers.forEach((function(n){return n(e,t)}))}},t.dispose=function(){this.isDisposed||(this.isDisposed=!0,this.isRunning||(et(),We(this),tt()))},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[P]=this,`dispose`in Symbol&&typeof Symbol.dispose==`symbol`&&(n[Symbol.dispose]=n),n},t.toString=function(){return`Reaction[`+this.tt+`]`},t.trace=function(){},S(e,[{key:`isDisposed`,get:function(){return _(this.bt,e.Wt)},set:function(t){this.bt=v(this.bt,e.Wt,t)}},{key:`isScheduled`,get:function(){return _(this.bt,e.qt)},set:function(t){this.bt=v(this.bt,e.qt,t)}},{key:`isTrackPending`,get:function(){return _(this.bt,e.Gt)},set:function(t){this.bt=v(this.bt,e.Gt,t)}},{key:`isRunning`,get:function(){return _(this.bt,e.Ht)},set:function(t){this.bt=v(this.bt,e.Ht,t)}},{key:`diffValue`,get:function(){return+!!_(this.bt,e.wt)},set:function(t){this.bt=v(this.bt,e.wt,t===1)}}])}();Wn.Wt=1,Wn.qt=2,Wn.Gt=4,Wn.Ht=8,Wn.wt=16;var Gn=function(e){return e()},Kn=f(`Reaction`,Wn),qn=de(`action`),Jn=de(`action.bound`,{bound:!0}),Yn=de(`autoAction`,{autoAction:!0}),Xn=de(`autoAction.bound`,{autoAction:!0,bound:!0}),Zn=st(!1);Object.assign(Zn,qn);var Qn=st(!0);Object.assign(Qn,Yn),Zn.bound=T(Jn),Qn.bound=T(Xn);var $n=function(e){return e()},er=0,tr=function(e){function t(){var n;return n=e.call(this,`FLOW_CANCELLED`)||this,Object.setPrototypeOf(n,(this instanceof t?this.constructor:void 0).prototype),n.name=`FlowCancellationError`,n}return ne(t,e),t.prototype.toString=function(){return`Error: `+this.message},t}(w(Error)),nr=ge(`flow`),rr=ge(`flow.bound`,{bound:!0}),ir=Object.assign((function(e,t){if(se(t))return nr.t(e,t);if(o(t))return oe(e,t,nr);var n=e,r=n.name||`<unnamed flow>`,i=function(){var e,t=this,i=arguments,o=++er,s=Zn(r+` - runid: `+o+` - init`,n).apply(t,i),c=void 0,l=new Promise((function(t,n){function i(e){var t;c=void 0;try{t=Zn(r+` - runid: `+o+` - yield `+ d++,s.next).call(s,e)}catch(e){return n(e)}u(t)}function l(e){var t;c=void 0;try{t=Zn(r+` - runid: `+o+` - yield `+ d++,s.throw).call(s,e)}catch(e){return n(e)}u(t)}function u(e){if(!a(e?.then))return e.done?t(e.value):(c=Promise.resolve(e.value)).then(i,l);e.then(u,n)}var d=0;e=n,i(void 0)}));return l.cancel=Zn(r+` - runid: `+o+` - cancel`,(function(){try{c&&vt(c);var t=s.return(void 0),n=Promise.resolve(t.value);n.then(dn,dn),vt(n),e(new tr)}catch(t){e(t)}})),l};return i.isMobXFlow=!0,i}),nr);ir.bound=T(rr);var ar={has:function(e,t){return At(e).it(t)},get:function(e,t){return At(e).ct(t)},set:function(e,t,n){var r;return!!o(t)&&((r=At(e).ht(t,n,!0))==null||r)},deleteProperty:function(e,t){var n;return!!o(t)&&((n=At(e).Ut(t,!0))==null||n)},defineProperty:function(e,t,n){var r;return(r=At(e).l(t,n))==null||r},ownKeys:function(e){return At(e).rt()},preventExtensions:function(){t(13)}},or=Symbol(`mobx-keys`),sr=`update`,cr={get:function(e,t){var n=e[P];return t===P?n:t===`length`?n.Ft():typeof t!=`string`||isNaN(t)?g(ur,t)?ur[t]:e[t]:n.ct(parseInt(t))},set:function(e,t,n){var r=e[P];return t===`length`&&r.Xt(n),typeof t==`symbol`||isNaN(t)?e[t]=n:r.ht(parseInt(t),n),!0},preventExtensions:function(){t(15)}},lr=function(){function e(e,t,n,r){e===void 0&&(e=`ObservableArray`),this.zt=void 0,this.$t=void 0,this.st=void 0,this.j=[],this.et=void 0,this.ut=void 0,this.Jt=void 0,this.dehancer=void 0,this.v=void 0,this.Yt=0,this.zt=n,this.$t=r,this.st=new gn(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 Mt(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}),Ft(this,e)},n.Ft=function(){return this.st.reportObserved(),this.j.length},n.Xt=function(e){(typeof e!=`number`||isNaN(e)||e<0)&&t(`Out of range: `+e);var n=this.j.length;if(e!==n)if(e>n){for(var r=Array(e-n),i=0;i<e-n;i++)r[i]=void 0;this.ot(n,0,r)}else this.ot(e,n-e)},n.Zt=function(e,n){e!==this.Yt&&t(16),this.Yt+=n,this.$t&&n>0&&Jt(e+n+1)},n.ot=function(e,t,n){var r=this,i=this.j.length;if(e===void 0?e=0:e>i?e=i:e<0&&(e=Math.max(0,i+e)),t=arguments.length===1?i-e:t==null?0:Math.max(0,Math.min(t,i-e)),n===void 0&&(n=cn),jt(this)){var a=Nt(this,{object:this.v,type:`splice`,index:e,removedCount:t,added:n});if(!a)return cn;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=Pt(this),a=i||r?{observableKind:`array`,object:this.v,type:sr,debugObjectName:this.st.tt,index:e,newValue:t,oldValue:n}:null;this.st.reportChanged(),i&&It(this,a)},n.nn=function(e,t,n){var r=!this.zt&&!1,i=Pt(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&&It(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(jt(this)){var a=Nt(this,{type:sr,object:this.v,index:e,newValue:n});if(!a)return;n=a.newValue}(n=this.Jt(n,i))!==i&&(r[e]=n,this.in(e,n,i))}else{for(var o=Array(e+1-r.length),s=0;s<o.length-1;s++)o[s]=void 0;o[o.length-1]=n,this.ot(r.length,0,o)}},e}(),ur={clear:function(){return this.splice(0)},replace:function(e){var t=this[P];return t.ot(0,t.j.length,e)},toJSON:function(){return this.slice()},splice:function(e,t){var n=[...arguments].slice(2),r=this[P];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[P].ot(e,t,n)},push:function(){for(var e=this[P],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[P].j.length-1,0),1)[0]},shift:function(){return this.splice(0,1)[0]},unshift:function(){for(var e=this[P],t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];return e.ot(0,0,n),e.j.length},reverse:function(){return R.trackingDerivation&&t(37,`reverse`),this.replace(this.slice().reverse()),this},sort:function(){R.trackingDerivation&&t(37,`sort`);var e=this.slice();return e.sort.apply(e,arguments),this.replace(e),this},remove:function(e){var t=this[P],n=t.ft(t.j).indexOf(e);return n>-1&&(this.splice(n,1),!0)}};O(`at`,Rt),O(`concat`,Rt),O(`flat`,Rt),O(`includes`,Rt),O(`indexOf`,Rt),O(`join`,Rt),O(`lastIndexOf`,Rt),O(`slice`,Rt),O(`toString`,Rt),O(`toLocaleString`,Rt),O(`toSorted`,Rt),O(`toSpliced`,Rt),O(`with`,Rt),O(`every`,k),O(`filter`,k),O(`find`,k),O(`findIndex`,k),O(`findLast`,k),O(`findLastIndex`,k),O(`flatMap`,k),O(`forEach`,k),O(`map`,k),O(`some`,k),O(`toReversed`,k),O(`reduce`,zt),O(`reduceRight`,zt);var dr,fr,pr=f(`ObservableArrayAdministration`,lr),mr={},hr=`add`,gr=function(){function e(e,n,r){var i=this;n===void 0&&(n=le),r===void 0&&(r=`ObservableMap`),this.Jt=void 0,this.tt=void 0,this[P]=mr,this.vt=void 0,this.dt=void 0,this.lt=void 0,this.et=void 0,this.ut=void 0,this.dehancer=void 0,this.Jt=n,this.tt=r,a(Map)||t(18),$t((function(){i.lt=ce(`ObservableMap.keys()`),i.vt=new Map,i.dt=new Map,e&&i.merge(e)}))}var n=e.prototype;return n.it=function(e){return this.vt.has(e)},n.has=function(e){var t=this;if(!R.trackingDerivation)return this.it(e);var n=this.dt.get(e);if(!n){var r=n=new Fn(this.it(e),ue,`ObservableMap.key?`,!1);this.dt.set(e,r),pt(r,(function(){return t.dt.delete(e)}))}return n.get()},n.set=function(e,t){var n=this.it(e);if(jt(this)){var r=Nt(this,{type:n?sr:hr,object:this,newValue:t,name:e});if(!r)return this;t=r.newValue}return n?this.rn(e,t):this.en(e,t),this},n.delete=function(e){var t=this;if(jt(this)&&!Nt(this,{type:`delete`,object:this,name:e}))return!1;if(this.it(e)){var n=Pt(this),r=n?{observableKind:`map`,debugObjectName:this.tt,type:`delete`,object:this,oldValue:this.vt.get(e).Ot,name:e}:null;return Dt((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&&It(this,r),!0}return!1},n.rn=function(e,t){var n=this.vt.get(e);if((t=n.xt(t))!==R.UNCHANGED){var r=Pt(this),i=r?{observableKind:`map`,debugObjectName:this.tt,type:sr,object:this,oldValue:n.Ot,name:e,newValue:t}:null;n.gt(t),r&&It(this,i)}},n.en=function(e,t){var n=this;Dt((function(){var r,i=new Fn(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=Pt(this);r&&It(this,r?{observableKind:`map`,debugObjectName:this.tt,type:hr,object:this,name:e,newValue:t}:null)},n.get=function(e){return this.has(e)?this.Qt(this.vt.get(e).get()):this.Qt(void 0)},n.Qt=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.keys=function(){return this.lt.reportObserved(),this.vt.keys()},n.values=function(){var e=this,t=this.keys();return Vt({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 Vt({next:function(){var n=t.next(),r=n.done,i=n.value;return{done:r,value:r?void 0:[i,e.get(i)]}}})},n[Symbol.iterator]=function(){return this.entries()},n.forEach=function(e,t){for(var n,r=C(this);!(n=r()).done;){var i=n.value;e.call(t,i[1],i[0],this)}},n.merge=function(e){var n=this;return _r(e)&&(e=new Map(e)),Dt((function(){var r,i;c(e)?function(e){var t=Object.keys(e);if(!fn)return t;var n=Object.getOwnPropertySymbols(e);return n.length?[].concat(t,n.filter((function(t){return sn.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;Dt((function(){Ge((function(){for(var t,n=C(e.keys());!(t=n()).done;)e.delete(t.value)}))}))},n.replace=function(e){var n=this;return Dt((function(){for(var r,i=function(e){if(p(e)||_r(e))return e;if(Array.isArray(e))return new Map(e);if(c(e)){var n=new Map;for(var r in e)n.set(r,e[r]);return n}return t(21,e)}(e),a=new Map,o=!1,s=C(n.vt.keys());!(r=s()).done;){var l=r.value;if(!i.has(l))if(n.delete(l))o=!0;else{var u=n.vt.get(l);a.set(l,u)}}for(var d,f=C(i.entries());!(d=f()).done;){var m=d.value,h=m[0],g=m[1],_=n.vt.has(h);if(n.set(h,g),n.vt.has(h)){var v=n.vt.get(h);a.set(h,v),_||(o=!0)}}if(!o)if(n.vt.size!==a.size)n.lt.reportChanged();else for(var y=n.vt.keys(),b=a.keys(),x=y.next(),S=b.next();!x.done;){if(x.value!==S.value){n.lt.reportChanged();break}x=y.next(),S=b.next()}n.vt=a})),this},n.toString=function(){return`[object ObservableMap]`},n.toJSON=function(){return Array.from(this)},n._t=function(e){return Ft(this,e)},n.St=function(e){return Mt(this,e)},S(e,[{key:`size`,get:function(){return this.lt.reportObserved(),this.vt.size}},{key:Symbol.toStringTag,get:function(){return`Map`}}])}(),_r=f(`ObservableMap`,gr),vr={},yr=function(){function e(e,n,r){var i=this;n===void 0&&(n=le),r===void 0&&(r=`ObservableSet`),this.tt=void 0,this[P]=vr,this.vt=new Set,this.st=void 0,this.ut=void 0,this.et=void 0,this.dehancer=void 0,this.Jt=void 0,this.tt=r,a(Set)||t(22),this.Jt=function(e,t){return n(e,t,r)},$t((function(){i.st=ce(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;Dt((function(){Ge((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(jt(this)){var n=Nt(this,{type:hr,object:this,newValue:e});if(!n)return this;e=n.newValue}if(!this.has(e)){Dt((function(){t.vt.add(t.Jt(e,void 0)),t.st.reportChanged()}));var r=Pt(this);r&&It(this,r?{observableKind:`set`,debugObjectName:this.tt,type:hr,object:this,newValue:e}:null)}return this},n.delete=function(e){var t=this;if(jt(this)&&!Nt(this,{type:`delete`,object:this,oldValue:e}))return!1;if(this.has(e)){var n=Pt(this),r=n?{observableKind:`set`,debugObjectName:this.tt,type:`delete`,object:this,oldValue:e}:null;return Dt((function(){t.st.reportChanged(),t.vt.delete(e)})),n&&It(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 Ht({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 Ht({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)&&!z(e)?e.intersection(this):new Set(this).intersection(e)},n.union=function(e){return m(e)&&!z(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)&&!z(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)&&!z(e)?e.isDisjointFrom(this):new Set(this).isDisjointFrom(e)},n.replace=function(e){var n=this;return z(e)&&(e=new Set(e)),Dt((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 Ft(this,e)},n.St=function(e){return Mt(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`}}])}(),z=f(`ObservableSet`,yr),br=Object.create(null),xr=function(){function e(e,t,n,r){t===void 0&&(t=new Map),r===void 0&&(r=bn),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 gn(`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 Ln)return n.set(t),!0;if(jt(this)){var r=Nt(this,{type:sr,object:this.v||this.h,name:e,newValue:t});if(!r)return null;t=r.newValue}if((t=n.xt(t))!==R.UNCHANGED){var i=Pt(this),a=i?{type:sr,observableKind:`object`,debugObjectName:this.tt,object:this.v||this.h,oldValue:n.Ot,name:e,newValue:t}:null;n.gt(t),i&&It(this,a)}return!0},n.ct=function(e){return R.trackingDerivation&&!g(this.h,e)&&this.it(e),this.h[e]},n.ht=function(e,t,n){return n===void 0&&(n=!1),g(this.h,e)?this.j.has(e)?this.S(e,t):n?Reflect.set(this.h,e,t):(this.h[e]=t,!0):this.s(e,{value:t,enumerable:!0,writable:!0,configurable:!0},this.un,n)},n.it=function(e){if(!R.trackingDerivation)return e in this.h;this.sn||=new Map;var t=this.sn.get(e);return t||(t=new Fn(e in this.h,ue,`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[hn])!=null&&r[e])return;t(1,n.i,this.tt+`.`+e.toString())}for(var i=this.h;i&&i!==sn;){var a=an(i,e);if(a){var o=n.o(this,e,a,i);if(o===0)return;if(o===1)break}i=Object.getPrototypeOf(i)}Kt(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&&Kt(this,0,e),i},n.l=function(e,t,n){n===void 0&&(n=!1);try{et();var r=this.Ut(e);if(!r)return r;if(jt(this)){var i=Nt(this,{object:this.v||this.h,name:e,type:hr,newValue:t.value});if(!i)return null;var a=i.newValue;t.value!==a&&(t=ee({},t,{value:a}))}if(n){if(!Reflect.defineProperty(this.h,e,t))return!1}else on(this.h,e,t);this.fn(e,t.value)}finally{tt()}return!0},n.g=function(e,t,n,r){r===void 0&&(r=!1);try{et();var i=this.Ut(e);if(!i)return i;if(jt(this)){var a=Nt(this,{object:this.v||this.h,name:e,type:hr,newValue:t});if(!a)return null;t=a.newValue}var o=Wt(e),s={configurable:!R.safeDescriptors||this.p,enumerable:!0,get:o.get,set:o.set};if(r){if(!Reflect.defineProperty(this.h,e,s))return!1}else on(this.h,e,s);var c=new Fn(t,n,`ObservableObject.key`,!1);this.j.set(e,c),this.fn(e,c.Ot)}finally{tt()}return!0},n.m=function(e,t,n){n===void 0&&(n=!1);try{et();var r=this.Ut(e);if(!r)return r;if(jt(this)&&!Nt(this,{object:this.v||this.h,name:e,type:hr,newValue:void 0}))return null;t.name||=`ObservableObject.key`,t.context=this.v||this.h;var i=Wt(e),a={configurable:!R.safeDescriptors||this.p,enumerable:!1,get:i.get,set:i.set};if(n){if(!Reflect.defineProperty(this.h,e,a))return!1}else on(this.h,e,a);this.j.set(e,new Ln(t)),this.fn(e,void 0)}finally{tt()}return!0},n.Ut=function(e,t){if(t===void 0&&(t=!1),!g(this.h,e))return!0;if(jt(this)&&!Nt(this,{object:this.v||this.h,name:e,type:`remove`}))return null;try{var n;et();var r=Pt(this),i=this.j.get(e),a=void 0;if(!i&&r&&(a=an(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 Fn&&(a=i.Ot),rt(i)),this.lt.reportChanged(),(n=this.sn)==null||(n=n.get(e))==null||n.set(e in this.h),r&&r&&It(this,{type:`remove`,observableKind:`object`,object:this.v||this.h,debugObjectName:this.tt,oldValue:a,name:e})}finally{tt()}return!0},n._t=function(e){return Ft(this,e)},n.St=function(e){return Mt(this,e)},n.fn=function(e,t){var n,r=Pt(this);r&&r&&It(this,r?{type:hr,observableKind:`object`,debugObjectName:this.tt,object:this.v||this.h,name:e,newValue:t}:null),(n=this.sn)==null||(n=n.get(e))==null||n.set(!0),this.lt.reportChanged()},n.rt=function(){return this.lt.reportObserved(),pn(this.h)},n.nt=function(){return this.lt.reportObserved(),Object.keys(this.h)},e}(),B=f(`ObservableObjectAdministration`,xr),Sr=qt(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(){};dr=Tr,fr=Array.prototype,Object.setPrototypeOf?Object.setPrototypeOf(dr.prototype,fr):dr.prototype.__proto__===void 0?dr.prototype=fr:dr.prototype.__proto__=fr;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,$t((function(){var e=new lr(r,n,i,!0);e.v=a,d(a,P,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[P].st.reportObserved();var e=[...arguments];return Array.prototype.concat.apply(this.slice(),e.map((function(e){return Bt(e)?e.slice():e})))},n[Symbol.iterator]=function(){var e=this,t=0;return tn({next:function(){return t<e.length?{value:e[t++],done:!1}:{done:!0,value:void 0}}})},S(t,[{key:`length`,get:function(){return this[P].Ft()},set:function(e){this[P].Xt(e)}},{key:Symbol.toStringTag,get:function(){return`Array`}}])}(Tr);Object.entries(ur).forEach((function(e){var t=e[0];t!==`concat`&&u(Er.prototype,t,e[1])})),Jt(1e3);var Dr=sn.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:ot,extras:{getDebugName:Qt},$mobx:P}),e.$mobx=P,e.FlowCancellationError=tr,e.ObservableMap=gr,e.ObservableSet=yr,e.Reaction=Wn,e._allowStateChanges=Re,e._allowStateChangesInsideComputed=ct,e._allowStateReadsEnd=Ye,e._allowStateReadsStart=Je,e._autoAction=Qn,e._endAction=Le,e._getAdministration=Zt,e._getGlobalState=function(){return R},e._interceptReads=function(e,t,n){var r;return _r(e)||Bt(e)||In(e)?r=Zt(e):Gt(e)&&(r=Zt(e,t)),r.dehancer=typeof t==`function`?t:n,function(){r.dehancer=void 0}},e._isComputingDerivation=function(){return R.trackingDerivation!==null},e._resetGlobalState=function(){var e=new Vn;for(var t in e)Bn.indexOf(t)===-1&&(R[t]=e[t]);R.allowStateChanges=!R.enforceActions},e._startAction=Ie,e.action=Zn,e.autorun=ut,e.comparer=vn,e.computed=An,e.configure=function(e){!0===e.isolateGlobalState&&function(){if((R.pendingReactions.length||R.inBatch||R.isRunningReactions)&&t(36),Un=!0,Hn){var e=n();--e.__mobxInstanceCount==0&&(e.__mobxGlobals=void 0),R=new Vn}}();var r,i,a=e.useProxies,o=e.enforceActions;if(a!==void 0&&(R.useProxies=a===`always`||a!==`never`&&typeof Proxy<`u`),a===`ifavailable`&&(R.verifyProxies=!0),o!==void 0){var s=o===`always`?`always`:o===`observed`;R.enforceActions=s,R.allowStateChanges=!0!==s&&s!==`always`}[`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`disableErrorBoundaries`,`safeDescriptors`].forEach((function(t){t in e&&(R[t]=!!e[t])})),R.allowStateReads=!R.observableRequiresReaction,e.reactionScheduler&&(r=e.reactionScheduler,i=Gn,Gn=function(e){return r((function(){return i(e)}))})},e.createAtom=ce,e.defineProperty=function(e,n,r){if(Gt(e))return e[P].l(n,r);t(39)},e.entries=function(e){return Gt(e)?Ct(e).map((function(t){return[t,e[t]]})):_r(e)?Ct(e).map((function(t){return[t,e.get(t)]})):z(e)?Array.from(e.entries()):Bt(e)?e.map((function(e,t){return[t,e]})):void t(7)},e.extendObservable=ht,e.flow=ir,e.flowResult=function(e){return e},e.get=function(e,n){if(wt(e,n))return Gt(e)?e[P].ct(n):_r(e)?e.get(n):Bt(e)?e[n]:void t(11)},e.getAtom=Xt,e.getDebugName=Qt,e.getDependencyTree=function(e,t){return gt(Xt(e,t))},e.getObserverTree=function(e,t){return _t(Xt(e,t))},e.has=wt,e.intercept=function(e,t,n){return a(n)?function(e,t,n){return Zt(e,t).St(n)}(e,t,n):function(e,t){return Zt(e).St(t)}(e,t)},e.isAction=lt,e.isBoxedObservable=In,e.isComputed=function(e){return bt(e)},e.isComputedProp=function(e,t){return bt(e,t)},e.isFlow=yt,e.isFlowCancellationError=function(e){return e instanceof tr},e.isObservable=St,e.isObservableArray=Bt,e.isObservableMap=_r,e.isObservableObject=Gt,e.isObservableProp=function(e,t){return xt(e,t)},e.isObservableSet=z,e.keys=Ct,e.makeAutoObservable=function(e,t,n){return c(e)?ht(e,e,t,n):($t((function(){var r=Ut(e,n)[P];if(!e[or]){var i=Object.getPrototypeOf(e),a=new Set([].concat(pn(e),pn(i)));a.delete(`constructor`),a.delete(P),u(i,or,a)}e[or].forEach((function(e){return r.o(e,!t||!(e in t)||t[e])}))})),e)},e.makeObservable=function(e,t,n){return $t((function(){var r=Ut(e,n)[P];t??=function(e){return g(e,hn)||u(e,hn,ee({},e[hn])),e[hn]}(e),pn(t).forEach((function(e){return r.o(e,t[e])}))})),e},e.observable=Dn,e.observe=function(e,t,n,r){return a(n)?function(e,t,n,r){return Zt(e,t)._t(n,r)}(e,t,n,r):function(e,t,n){return Zt(e)._t(t,n)}(e,t,n)},e.onBecomeObserved=ft,e.onBecomeUnobserved=pt,e.onReactionError=function(e){return R.globalReactionErrorHandlers.push(e),function(){var t=R.globalReactionErrorHandlers.indexOf(e);t>=0&&R.globalReactionErrorHandlers.splice(t,1)}},e.override=yn,e.ownKeys=Tt,e.reaction=function(e,t,n){function r(){if(p=!1,!h.isDisposed){var t=!1,r=s;h.track((function(){var n=Re(!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=ln);var a,o,s,c=n.name??`Reaction`,l=Zn(c,n.onError?(a=n.onError,o=t,function(){try{return o.apply(this,arguments)}catch(e){a.call(this,e)}}):t),u=!n.scheduler&&!n.delay,d=dt(n),f=!0,p=!1,m=n.compareStructural?vn.structural:n.equals||vn.default,h=new Wn(c,(function(){f||u?r():p||(p=!0,d(r))}),n.onError,n.requiresObservable);return(i=n)!=null&&(i=i.signal)!=null&&i.aborted||h.Y(),h.Z(n?.signal)},e.remove=function(e,n){Gt(e)?e[P].Ut(n):_r(e)||z(e)?e.delete(n):Bt(e)?(typeof n!=`number`&&(n=parseInt(n,10)),e.splice(n,1)):t(9)},e.runInAction=ct,e.set=function e(n,r,i){if(arguments.length!==2||z(n))Gt(n)?n[P].ht(r,i):_r(n)?n.set(r,i):z(n)?n.add(r):Bt(n)?(typeof r!=`number`&&(r=parseInt(r,10)),r<0&&t(`Invalid index: '`+r+`'`),et(),r>=n.length&&(n.length=r+1),n[r]=i,tt()):t(8);else{et();var a=r;try{for(var o in a)e(n,o,a[o])}finally{tt()}}},e.spy=ot,e.toJS=function(e){return function e(t,n){if(typeof t!=`object`||!t||t instanceof Date||!St(t))return t;if(In(t)||L(t))return e(t.get(),n);if(n.has(t))return n.get(t);if(Bt(t)){var r=Et(n,t,Array(t.length));return t.forEach((function(t,i){r[i]=e(t,n)})),r}if(z(t)){var i=Et(n,t,new Set);return t.forEach((function(t){i.add(e(t,n))})),i}if(_r(t)){var a=Et(n,t,new Map);return t.forEach((function(t,r){a.set(r,e(t,n))})),a}var o=Et(n,t,{});return Tt(t).forEach((function(r){sn.propertyIsEnumerable.call(t,r)&&(o[r]=e(t[r],n))})),o}(e,new Map)},e.trace=function(){},e.transaction=Dt,e.untracked=Ge,e.values=function(e){return Gt(e)?Ct(e).map((function(t){return e[t]})):_r(e)?Ct(e).map((function(t){return e.get(t)})):z(e)?Array.from(e.values()):Bt(e)?e.slice():void t(6)},e.when=function(e,t,n){return arguments.length===1||t&&typeof t==`object`?kt(e,t):Ot(e,t,n||{})}})),xg=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){F.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++F.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 ie(e){return e!=null&&Object.prototype.toString.call(e)===`[object Set]`}var ae=Object.getOwnPropertySymbols!==void 0;function w(e){var t=Object.keys(e);if(!ae)return t;var n=Object.getOwnPropertySymbols(e);return n.length?[].concat(t,n.filter(function(t){return c.propertyIsEnumerable.call(e,t)})):t}var T=typeof Reflect<`u`&&Reflect.ownKeys?Reflect.ownKeys:ae?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames;function oe(e){return typeof e==`string`?e:typeof e==`symbol`?e.toString():new String(e).toString()}function se(e){return e===null?null:typeof e==`object`?``+e:e}function ce(e,t){return c.hasOwnProperty.call(e,t)}var le=Object.getOwnPropertyDescriptors||function(e){var t={};return T(e).forEach(function(n){t[n]=o(e,n)}),t};function ue(e,t){return!!(e&t)}function de(e,t,n){return n?e|=t:e&=~t,e}function fe(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 pe(e,t,n){if(be())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var i=new(e.bind.apply(e,r));return n&&xe(i,n.prototype),i}function me(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,Ce(r.key),r)}}function he(e,t,n){return t&&me(e.prototype,t),n&&me(e,n),Object.defineProperty(e,`prototype`,{writable:!1}),e}function ge(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=we(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 E(){return E=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},E.apply(null,arguments)}function _e(e){return _e=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},_e(e)}function ve(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,xe(e,t)}function ye(e){try{return Function.toString.call(e).indexOf(`[native code]`)!==-1}catch{return typeof e==`function`}}function be(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(be=function(){return!!e})()}function xe(e,t){return xe=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},xe(e,t)}function Se(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 Ce(e){var t=Se(e,`string`);return typeof t==`symbol`?t:t+``}function we(e,t){if(e){if(typeof e==`string`)return fe(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)?fe(e,t):void 0}}function Te(e){var t=typeof Map==`function`?new Map:void 0;return Te=function(e){if(e===null||!ye(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 pe(e,arguments,_e(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),xe(n,e)},Te(e)}var Ee=Symbol(`mobx-stored-annotations`);function De(e){function t(t,n){if(je(n))return e.decorate_20223_(t,n);Oe(t,n,e)}return Object.assign(t,e)}function Oe(e,t,r){ce(e,Ee)||C(e,Ee,E({},e[Ee])),qe(r)&&!ce(e[Ee],t)&&n(`'`+(e.constructor.name+`.prototype.`+t.toString())+`' is decorated with 'override', but no such decorated member was found on prototype.`),ke(e,r,t),qe(r)||(e[Ee][t]=r)}function ke(e,t,r){if(!qe(t)&&ce(e[Ee],r)){var i=e.constructor.name+`.prototype.`+r.toString(),a=e[Ee][r].annotationType_,o=t.annotationType_;n(`Cannot apply '@`+o+`' to '`+i+`':`+(`
56
56
  The field is already decorated with '@`+a+`'.`)+`
57
57
  Re-decorating fields is not allowed.
@@ -81,18 +81,18 @@ The target is already observable of different type.
81
81
  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,D,new Xi(e,new Map,String(r),Lt(t))),e}var Qi=te(`ObservableObjectAdministration`,Xi);function $i(e){return Ji[e]||(Ji[e]={get:function(){return this[D].getObservablePropValue_(e)},set:function(t){return this[D].setObservablePropValue_(e,t)}})}function ea(e){return b(e)?Qi(e[D]):!1}function ta(e,t,n){var r;e.appliedAnnotations_[n]=t,(r=e.target_[Ee])==null||delete r[n]}function na(e,t,r){if(wa(t)||n(`Cannot annotate '`+e.name_+`.`+r.toString()+`': Invalid annotation.`),!qe(t)&&ce(e.appliedAnnotations_,r)){var i=e.name_+`.`+r.toString(),a=e.appliedAnnotations_[r].annotationType_,o=t.annotationType_;n(`Cannot apply '`+o+`' to '`+i+`':`+(`
82
82
  The field is already annotated with '`+a+`'.`)+`
83
83
  Re-annotating fields is not allowed.
84
- Use 'override' annotation for methods overridden by subclass.`)}}var ra=la(0),ia=function(){var e=!1,t={};return Object.defineProperty(t,`0`,{set:function(){e=!0}}),Object.create(t)[0]=1,e===!1}(),aa=0,oa=function(){};function sa(e,t){Object.setPrototypeOf?Object.setPrototypeOf(e.prototype,t):e.prototype.__proto__===void 0?e.prototype=t:e.prototype.__proto__=t}sa(oa,Array.prototype);var ca=function(e){function t(t,n,r,i){var a;return r===void 0&&(r=`ObservableArray@`+h()),i===void 0&&(i=!1),a=e.call(this)||this,ga(function(){var e=new ki(r,n,i,!0);e.proxy_=a,ee(a,D,e),t&&t.length&&a.spliceWithArray(0,0,t),ia&&Object.defineProperty(a,`0`,ra)}),a}ve(t,e);var n=t.prototype;return n.concat=function(){this[D].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}}})},he(t,[{key:`length`,get:function(){return this[D].getArrayLength_()},set:function(e){this[D].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[D].get_(e)},set:function(t){this[D].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[D].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[D].values_.get(t);return i||n(27,t,ha(e)),i}if(Pe(e)||rn(e)||R(e))return e}else if(v(e)&&R(e[D]))return e[D];n(28)}function ma(e,t){if(e||n(29),t!==void 0)return ma(pa(e,t));if(Pe(e)||rn(e)||R(e)||Vi(e)||Ki(e))return e;if(e[D])return e[D];n(24,e)}function ha(e,t){var n;if(t!==void 0)n=pa(e,t);else if(ur(e))return e.name;else n=ea(e)||Vi(e)||Ki(e)?ma(e):pa(e);return n.name_}function ga(e){var t=P(),n=Qt(!0);Mn();try{return e()}finally{Nn(),$t(n),gn(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(!(ce(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)||ie(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:Xn,extras:{getDebugName:ha},$mobx:D}),e.$mobx=D,e.FlowCancellationError=Ar,e.ObservableMap=Bi,e.ObservableSet=Gi,e.Reaction=L,e._allowStateChanges=Zt,e._allowStateChangesInsideComputed=lr,e._allowStateReadsEnd=vn,e._allowStateReadsStart=_n,e._autoAction=cr,e._endAction=Xt,e._getAdministration=ma,e._getGlobalState=Tn,e._interceptReads=Lr,e._isComputingDerivation=ln,e._resetGlobalState=En,e._startAction=Yt,e.action=sr,e.autorun=dr,e.comparer=Be,e.computed=Ut,e.configure=Sr,e.createAtom=Fe,e.defineProperty=ei,e.entries=Yr,e.extendObservable=Cr,e.flow=Pr,e.flowResult=Fr,e.get=$r,e.getAtom=pa,e.getDebugName=ha,e.getDependencyTree=wr,e.getObserverTree=Er,e.has=Qr,e.intercept=Rr,e.isAction=ur,e.isBoxedObservable=tn,e.isComputed=Hr,e.isComputedProp=Ur,e.isFlow=Ir,e.isFlowCancellationError=jr,e.isObservable=Gr,e.isObservableArray=Ii,e.isObservableMap=Vi,e.isObservableObject=ea,e.isObservableProp=Kr,e.isObservableSet=Ki,e.keys=qr,e.makeAutoObservable=wi,e.makeObservable=Si,e.observable=k,e.observe=ni,e.onBecomeObserved=vr,e.onBecomeUnobserved=yr,e.onReactionError=zn,e.override=Ke,e.ownKeys=ti,e.reaction=mr,e.remove=Zr,e.runInAction=lr,e.set=Xr,e.spy=Xn,e.toJS=oi,e.trace=si,e.transaction=li,e.untracked=hn,e.values=Jr,e.when=ui})),vg=me(((e,t)=>{process.env.NODE_ENV===`production`?t.exports=gg():t.exports=_g()}))();function yg(e){if(Array.isArray(e))return Object.freeze(e.map(yg));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]=yg(r);return Object.freeze(t)}return e}function bg(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 xg(e){return typeof e==`string`?e:String(e)}function Sg(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 Cg(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 wg(e,t){if(!(e instanceof H))throw TypeError(`template function expected a RichText fragment, got ${typeof e==`object`?Object.prototype.toString.call(e):typeof e}`);let n=e.copy();return n.style=Tg(e.style).add(t),n}function Tg(e){if(e instanceof B)return e;try{return B.parse(e)}catch(t){throw t instanceof br?TypeError(`template function cannot style a fragment whose base style "${e}" is not a style definition: a style name resolves only against the theme of a render`,{cause:t}):t}}function Eg(e){return{fn:(t=>wg(t,e)),argTypes:[`liftable`],returnType:`T`}}function Dg(e){return{fn:((t,n)=>wg(n,new B({[e]:N.parse(t)}))),argTypes:[`string`,`liftable`],returnType:`T`}}function Og(e,t){return new B({[e]:t})}function kg(){let e={};for(let t of vr)e[t]=Eg(Og(t,!0)),e[`not_${t}`]=Eg(Og(t,!1));for(let[t,n]of Object.entries(z))e[t]=Eg(Og(n,!0));return e}const Ag={fn:((e,t)=>wg(t,B.parse(e))),argTypes:[`string`,`liftable`],returnType:`T`},jg={fn:((e,t)=>wg(t,new B({link:e}))),argTypes:[`string`,`liftable`],returnType:`T`};function Mg(){return{fg:Dg(`color`),bg:Dg(`bgcolor`),...kg(),link:jg,style:Ag}}function Ng(e,t){if(!Bn.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 Vn(e)}function Pg(e,t){return{fn:t,argTypes:e,returnType:`string`}}function Fg(e,t,n,r){let i=r===void 0||e>=r.min&&e<=r.max;if(!Number.isFinite(e)||!i){let i=r===void 0?`a finite number`:`within ${r.min}..${r.max} (${r.note})`;throw RangeError(`${t}'s ${n} must be ${i}, got ${e}`+(e===void 0?` — ${t} takes it as its last argument`:``))}return e}const Ig=Pg([`string`,`int`],((e,t)=>qn(Ng(e,`darken`),Fg(t,`darken`,`levels`)).hex)),Lg=Pg([`string`,`int`],((e,t)=>qn(Ng(e,`lighten`),-Fg(t,`lighten`,`levels`)).hex)),Rg={min:0,max:100,note:`0 = from, 100 = toward`},zg=Pg([`string`,`string`,`float`],((e,t,n)=>gn(Ng(e,`mix`),Ng(t,`mix`),Fg(n,`mix`,`percentage`,Rg)/100).hex)),Bg={min:1,max:21,note:`4.5 = AA body text, 3 = AA large text`},Vg=Pg([`string`],(e=>Jn(Ng(e,`contrastOn`)).hex)),Hg=e=>Pg([`string`,`string`,`float`],((t,n,r)=>Yn(Ng(t,`readableOn`),Ng(n,`readableOn`),Fg(r,`readableOn`,`ratio`,Bg),e()).hex)),Ug={hueShift:`shiftHue`,chromaScale:`scaleChroma`,lightnessScale:`scaleLightness`,lightnessShift:`shiftLightness`};function Wg(){let e={};for(let[t,n]of Object.entries(Ug)){let r=t;e[n]=Pg([`string`,`float`],((e,t)=>{let i={...kn,[r]:Fg(t,n,`amount`)};return L.fromRgba(Ng(e,n)).applyKey(i).toRgba().hex}))}return e}function Gg(e=()=>j.TRUECOLOR){return{darken:Ig,lighten:Lg,mix:zg,contrastOn:Vg,readableOn:Hg(e),...Wg()}}function Kg(e,t){if(e.length===0)throw RangeError(`ramp needs at least one stop after the easing: ramp <value> <easing> <position> <color> …`);if(e.length%2!=0)throw RangeError(`ramp's last stop (position ${String(e[e.length-1])}) has no color — stops are <position> <color> pairs`);let n=[];for(let r=0;r<e.length;r+=2)n.push({at:e[r],color:Hn(t,e[r+1])});return n}function qg(e){return{color:{fn:(t=>Hn(e(),t).hex),argTypes:[`string`],returnType:`string`},ramp:{fn:((...t)=>{if(t.length<2)throw RangeError(`ramp needs a value and an easing before its stops (got ${t.length}): ramp <value> "linear"|"step" <position> <color> …`);let[n,r,...i]=t;return new _r(gr(r),Kg(i,e())).at(n).hex}),argTypes:[`float`,`string`],argTypePattern:`alternating`,returnType:`string`}}}function Jg(e){return{...Mg(),...Gg(e)}}new B({color:`red`,dim:!0});const Yg=/^(?:(?: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,Xg=/^(?<family>opus|sonnet|haiku)\s+(?<major>\d+)(?:\.(?<minor>\d))?$/i;function Zg(e){if(!e)return`Claude`;let t=e.trim().replace(/\s*\([^)]*\)\s*$/,``).replace(/\s*\[[^\]]*\]\s*$/,``).trim(),n=t.match(Yg);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(Xg);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 Qg(e){let t=e.match(Xg);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 $g(e){let t=e.split(`/`),n=t.length-1;return t.map((e,t)=>{if(t===n)return e;let r=e.match(/^\.*./);return r?r[0]:e}).join(`/`)}function e_(e){return e.toLocaleString()}function t_(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 n_(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 r_=[`▁`,`▂`,`▃`,`▄`,`▅`,`▆`,`▇`,`█`],i_=r_.length;function a_(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*(i_-1));o+=r_[t]}return o}function o_(e){let t=[];for(let n of e.split(`,`)){let e=n.trim();if(e===``)continue;let r=Number(e);if(!Number.isFinite(r))throw TypeError(`sparkline: non-numeric series element ${JSON.stringify(n)}`);t.push(r)}return t}const s_=Sa(),c_=[...Ma];function l_(){return{basename:{fn:e=>l(e),argTypes:[`string`]},dirname:{fn:e=>u(e),argTypes:[`string`]},abbreviatePath:{fn:e=>$g(e),argTypes:[`string`]},int:{fn:e=>Sg(e),argTypes:[`value`]},string:{fn:e=>xg(e),argTypes:[`value`]},bool:{fn:e=>Cg(e),argTypes:[`value`]},urlEncode:{fn:e=>encodeURIComponent(e),argTypes:[`string`]},themes:{fn:()=>s_,argTypes:[]},styles:{fn:()=>c_,argTypes:[]},sparkline:{fn:(e,t)=>a_(o_(e),t),argTypes:[`string`,`int`]},cascade:{fn:(e,...t)=>n_(e,t_(t)),argTypes:[`float`,`string`]}}}function u_(e=()=>new Date){return{minutesUntilReset:{fn:t=>Math.round(Math.max(0,t*1e3-e().getTime())/6e4),argTypes:[`int`]},formatInteger:{fn:e=>e_(e),argTypes:[`int`]},round:{fn:e=>Math.round(e),argTypes:[`float`]},formatModelName:{fn:e=>Zg(e),argTypes:[`string`]},shortenModelName:{fn:e=>Qg(e),argTypes:[`string`]}}}function d_(e,t=()=>new Date,n){return Fd({fromString:e=>new H(e),toString:e=>e.plain,isT:e=>e instanceof H,clock:t,missingKey:`error`,funcs:{...Cp(),...Nh(),...lm(),...jm(),...hp(t),...af(),...Lp(),...Jg(n),...l_(),...u_(t),...e??{}}})}function f_(e){return p_(e,new Set(e.names()),``)}function p_(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`?m_(a,e.readDocument(a)):e.read(a);let o=`${a}.`;for(let n of t)if(n.startsWith(o))return p_(e,t,a)}})}function m_(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 h_(e,t){return e?.kind===`ok`?e.value:t}function g_(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??__(t.stderr)].filter(Boolean).join(`, `)}`)}function __(e){return e.trim().split(`
85
- `,1)[0]??``}function v_(e,t){if(e.kind!==`ok`)return e;let n=t(e.value);return n===null?Y:J(n)}function y_(e){if(e.kind!==`ok`)return e;let t=e.value.trim();return t?J(t):Y}const b_=/^[A-Za-z]:[\\/]/;function x_(e){let t=e.trim();if(b_.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 S_(e){return x_(e)?.host||null}function C_(e){let t=S_(e);return t?t===`github.com`||t.endsWith(`.github.com`)?`github`:/(^|\.)gitlab\./.test(t)?`gitlab`:null:null}function w_(e){let t=new Map;for(let n of e.split(`
86
- `)){let e=n.match(/^remote\.(.+)\.url\s+(\S.*)$/);if(!e)continue;let r=t.get(e[1])??[];r.push(e[2].trim()),t.set(e[1],r)}return[...t].map(([e,t])=>({name:e,urls:t}))}function T_(e){return e.urls.find(e=>A_(e)!==null)??e.urls[0]??null}function E_(e){return e.find(e=>e.name===`origin`)??e[0]??null}function D_(e){let t=E_(e);return t?T_(t):null}function O_(e){let t=E_(e);return t?t.urls.find(e=>C_(e)!==null)??T_(t):null}function k_(e){let t=(x_(e)?.path??e.replace(/[\\/]+$/,``)).split(`/`);return(t[t.length-1]??``).replace(/\.git$/,``)||null}function A_(e){let t=x_(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 j_(e){let t=D_(e);return t===null?null:A_(t)}function M_(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??__(t.stderr)].filter(Boolean).join(`, `)}`)}function N_(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function P_(e){let t=`detached`,n=Y,r=Y,i=Y,a=0,o=0,s=0,c=0;for(let l of e.split(`
87
- `)){if(!l)continue;if(l.startsWith(`# `)){let e=l.slice(2);if(e.startsWith(`branch.oid `)){let t=e.slice(11).trim();n=t===`(initial)`?Y:J(t)}else if(e.startsWith(`branch.head `)){let n=e.slice(12).trim();t=n===`(detached)`?`detached`:n}else if(e.startsWith(`branch.upstream `))r=J(e.slice(16).trim());else if(e.startsWith(`branch.ab `)){let t=e.slice(10).trim().match(/^\+(\d+)\s+-(\d+)$/);t&&(i=J({ahead:parseInt(t[1],10),behind:parseInt(t[2],10)}))}continue}let e=l[0];if(e===`1`||e===`2`){let e=l.slice(2,4);e[0]!==`.`&&a++,e[1]!==`.`&&o++}else e===`u`?c++:e===`?`&&s++}let l=`clean`;return c>0?l=`conflicts`:(a||o||s)&&(l=`dirty`),{branch:t,status:l,aheadBehind:i,oid:n,upstream:r,workingTree:{staged:a,unstaged:o,untracked:s,conflicts:c}}}function F_(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(!N_(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 I_(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(!N_(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 L_(e){try{let t=r.statSync(e);return{key:`${t.dev}:${t.ino}`,stamp:`${t.mtimeMs}:${t.size}`}}catch{return null}}var R_=class{isGitRepo(e){try{return r.existsSync(c.join(e,`.git`))}catch{return!1}}async execGitAsync(e,t){return Ee({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=v_(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=v_(s,e=>this.repoNameFrom(e,r)),o.isWorktree=i),s!==void 0&&t.showRepoUrl&&(o.repoUrl=v_(s,j_)),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 y_(g_(`git describe --tags`,await this.execGitAsync([`describe`,`--tags`,`--abbrev=0`],{cwd:e,timeout:2e3}),`absent`))}async timeSinceCommit(e,t){return t.kind===`ok`?v_(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=y_(g_(`git log -1`,await this.execGitAsync([`log`,`-1`,`--format=%ct`,t,`--`],{cwd:e,timeout:2e3}),`absent`));if(n.kind!==`ok`)return n;let r=parseInt(n.value,10)*1e3;return Number.isNaN(r)?X(`git log -1: unparseable timestamp "${n.value}"`):J(r)}resolveCommonGitDir(e){let t=this.resolveGitDir(e);try{let e=r.readFileSync(c.join(t,`commondir`),`utf-8`).trim();if(e)return c.resolve(t,e)}catch{}return t}getStashCount(e){let t=c.join(this.resolveCommonGitDir(e),`logs`,`refs`,`stash`),n;try{n=r.readFileSync(t,`utf-8`)}catch(e){return e.code===`ENOENT`?J(0):X(`git stash reflog ${t}: ${e instanceof Error?e.message:String(e)}`)}let i=n.trim();return J(i?i.split(`
88
- `).length:0)}async getRemotesAsync(e){let t=L_(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=g_(`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`?w_(t.value):[])}repoNameFrom(e,t){let n=D_(e);return(n===null?null:k_(n))??c.basename(t)}async getRepoRemoteUrl(e){let t=await this.getRemotesAsync(e);if(t.kind!==`ok`)return t;let n=O_(t.value);return n===null?Y:J(n)}async execForgeAsync(e,t,n){return Ee({bin:e,args:[...t],cwd:n.cwd,env:{...process.env},timeoutMs:n.timeout,category:`forge`})}async resolvePullRequest(e,t){let n=C_(t);return n===`github`?M_(`gh pr view`,await this.execForgeAsync(`gh`,[`pr`,`view`,`--json`,`number,state,url`],{cwd:e,timeout:5e3}),/no (open )?pull requests? found/i,F_):n===`gitlab`?M_(`glab mr view`,await this.execForgeAsync(`glab`,[`mr`,`view`,`--output`,`json`],{cwd:e,timeout:5e3}),/no (open )?merge requests? (found|available)/i,I_):Y}isWorktree(e){try{let t=c.join(e,`.git`);return!!(r.existsSync(t)&&r.statSync(t).isFile())}catch{return!1}}async getCoreAsync(e){E(`[GIT-EXEC] Running git status --porcelain=v2 in ${e}`);let t=g_(`git status --porcelain=v2 --branch`,await this.execGitAsync([`status`,`--porcelain=v2`,`--branch`],{cwd:e,timeout:2e3}),`failed`);return t.kind===`ok`?J(P_(t.value)):t}};const z_=(e,t)=>E(t);var B_=class{slots=new Map;maxWatchers;counters;logger;closed=!1;constructor(e={}){this.maxWatchers=e.maxWatchers??128,this.counters=e.counters,this.logger=e.logger??z_}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()}},V_=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 H_=(e,t)=>E(t),U_={showSha:!0,showStashCount:!0};function W_(e){let t=Object.keys(e).sort(),n={};for(let r of t)n[r]=e[r];return JSON.stringify(n)}function G_(e){let t=t=>{try{return r.statSync(c.join(e,t)).mtimeMs}catch{return 0}};return{head:t(`HEAD`),index:t(`index`)}}function K_(e,t){return e.head!==t.head||e.index!==t.index}function q_(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 J_=class extends R_{entries=new Map;subscribersByRepo=new Map;fetchInFlight=new Map;resolutions=new Map;prCache=new Map;prFetchInFlight=new Map;refreshes=new V_;hits=0;misses=0;invalidations=0;inner;ttlMs;maxEntries;watchers;ownsWatchers;logger;sanityTimer=null;constructor(e={}){super(),this.inner=e.inner??new R_,this.ttlMs=e.ttlMs??3e4,this.maxEntries=e.maxEntries??64,this.logger=e.logger??H_,e.watchers?(this.watchers=e.watchers,this.ownsWatchers=!1):(this.watchers=new B_({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}|${W_(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=G_(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}`,q_(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}`,q_(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,{...U_});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,{...U_}),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=G_(this.inner.resolveGitDir(t.repoRoot)),e.set(t.repoRoot,n)),K_(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 Y_=/\r\n|\r|\n/g,X_=e=>J(e.replace(Y_,` `).trim());function Z_(e){return t=>{let n=e.exec(t)?.[1];return n===void 0?X(`regex no-match`):J(n.replace(Y_,` `))}}const Q_=e=>{try{return J(JSON.parse(e))}catch(e){return X(`JSON parse failed: ${e.message}`)}};function $_(e,t){return t.kind!==`ttl`||t.durationMs>=500?t:(E(`declareShell "${e}": ttl ${t.durationMs}ms below floor 500ms; clamping`),{kind:`ttl`,durationMs:500})}function ev(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 tv=`session.id`;function nv(e,t){return{where:`output of "${e}"`,read:async()=>{let n=await Ee({bin:`/bin/sh`,args:[`-c`,e],category:`user-shell`,signal:t});if(!n.ok&&n.reason===`aborted`)throw t.reason;return n.ok?J(n.stdout):X(`shell "${e}" ${n.exitCode===null?[n.reason,n.error].filter(e=>e!==void 0).join(`: `):`exited with code ${n.exitCode}`}`)}}}function rv(e,t,n){return{where:`"${e}"`,read:async()=>{try{let r=await v(e,{encoding:`utf8`,signal:n});return J(t===`first-line`?r.split(/\r?\n/)[0]??``:r)}catch{if(n.aborted)throw n.reason;return X(`file unreadable: ${e}`)}}}}function iv(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 av=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],ov=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],sv=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],cv=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`];function lv(e,t){let n=[[`2006`,e=>String(e.getFullYear())],[`January`,e=>av[e.getMonth()]],[`Monday`,e=>sv[e.getDay()]],[`Jan`,e=>ov[e.getMonth()]],[`Mon`,e=>cv[e.getDay()]],[`15`,e=>String(e.getHours()).padStart(2,`0`)],[`06`,e=>String(e.getFullYear()%100).padStart(2,`0`)],[`01`,e=>String(e.getMonth()+1).padStart(2,`0`)],[`02`,e=>String(e.getDate()).padStart(2,`0`)],[`04`,e=>String(e.getMinutes()).padStart(2,`0`)],[`05`,e=>String(e.getSeconds()).padStart(2,`0`)],[`PM`,e=>e.getHours()<12?`AM`:`PM`],[`pm`,e=>e.getHours()<12?`am`:`pm`],[`1`,e=>String(e.getMonth()+1)],[`2`,e=>String(e.getDate())],[`3`,e=>String(e.getHours()%12||12)],[`4`,e=>String(e.getMinutes())],[`5`,e=>String(e.getSeconds())]],r=``,i=0;for(;i<e.length;){let a=!1;for(let[o,s]of n)if(e.startsWith(o,i)){r+=s(t),i+=o.length,a=!0;break}a||(r+=e[i],i++)}return r}const uv={branch:`string`,sha:`string`,dirty:`boolean`,ahead:`number`,behind:`number`,stash:`number`};function dv(e,t,n,r){if(e===null){if(n!==void 0)return n;let e=uv[t];try{return hv(r,e)}catch{return gv(e)}}switch(t){case`branch`:return e.branch===`detached`?``:e.branch;case`sha`:return h_(e.sha,``);case`dirty`:return e.status!==`clean`;case`ahead`:return h_(e.aheadBehind,{ahead:0,behind:0}).ahead;case`behind`:return h_(e.aheadBehind,{ahead:0,behind:0}).behind;case`stash`:return h_(e.stashCount,0)}}var fv=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}},pv=class{buckets=new Map;subscribe(e,t){let n=this.buckets.get(e);if(!n){let t=new Set;n={timer:S(()=>{for(let e of t)e()},e),callbacks:t},this.buckets.set(e,n)}return n.callbacks.add(t),()=>this.unsubscribe(e,t)}unsubscribe(e,t){let n=this.buckets.get(e);n&&(n.callbacks.delete(t),n.callbacks.size===0&&(x(n.timer),this.buckets.delete(e)))}dispose(){for(let{timer:e}of this.buckets.values())x(e);this.buckets.clear()}bucketCount(){return this.buckets.size}};function mv(e,t){let n=e;for(let e of t.split(`.`)){if(typeof n!=`object`||!n)return;n=n[e]}return n}function hv(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`?xg(e):t===`number`?Sg(e):Cg(e)}function gv(e){return e===`number`?0:e===`boolean`?!1:``}var _v=class{inputMetas=new Map;lastErrors=new Map;watchMgr=new fv;ttlMgr=new pv;gitSubscriptions=new Map;cleanups=[];inFlight=new Map;reads=new V_;abort=new AbortController;drawn=vg.observable.box(j.TRUECOLOR);drawnAt=()=>this.drawn.get();engine=d_(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 J_({sanityIntervalMs:0}),this.ownsGitProvider=!0),this.sessionState=r}get variableStore(){return this.store}declareLiteral(e,t){this.store.defineBox(e,bg(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,nv(t,this.abort.signal),$_(e,n.cache),n.parse)}declareFile(e,t,n){this.declareSource(e,rv(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,X_,t.default,n);case`regex`:return this.scalarPublisher(e,Z_(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=iv(n,t,r);this.noteOutcome(e,a),this.store.setBox(e,h_(a,i))}}documentPublisher(e,t,n){let r=t===void 0?Y:J(t);return this.store.defineDocument(e,r),i=>{let a=iv(i,Q_,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=f_(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 lv(t.format,e)}catch{return this.stringInitial(t.varDefault)}})(new Date));let r=this.ttlMgr.subscribe(n,()=>{try{this.store.setBox(e,lv(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=uv[t.field],r=t.varDefault===void 0?gv(n):hv(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,dv(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(tv);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=mv(e,n.path),i=this.store.getType(t);if(r!==void 0)try{this.store.setBox(t,hv(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,vg.reaction)(()=>{let t=f_(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,vg.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,hv(this.defaultEmptyValue,t))}catch{this.store.setBox(e,gv(t))}}defaultFor(e){try{return hv(this.defaultEmptyValue,e)}catch{return gv(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 vv={project_dir:{kind:`input`,path:`workspace.project_dir`,default:``},[tv]:{kind:`input`,path:`session_id`,default:``},transcript_path:{kind:`input`,path:`transcript_path`,default:``},"theme.effective":{kind:`input`,path:`theme.effective`,default:``},"look.effective":{kind:`input`,path:`look.effective`,default:``},"preset.effective":{kind:`input`,path:`preset.effective`,default:``},"preset.customized":{kind:`input`,path:`preset.customized`,type:`boolean`,default:!1},"style.effective":{kind:`input`,path:`style.effective`,default:``},"progression.effective":{kind:`input`,path:`progression.effective`,default:``},"charset.effective":{kind:`input`,path:`charset.effective`,default:``},"colorCompatibility.effective":{kind:`input`,path:`colorCompatibility.effective`,default:``},"autoWrap.effective":{kind:`input`,path:`autoWrap.effective`,type:`boolean`,default:!0},"padding.effective":{kind:`input`,path:`padding.effective`,type:`number`,default:1},"term.cols":{kind:`input`,path:`term.cols`,type:`number`,default:80},"git.repoUrl":{kind:`input`,path:`git.repoUrl`,default:``}},yv={theme:{configKey:`palette`,sessionKey:`theme`,effectiveVar:`theme.effective`},preset:{configKey:`preset`,sessionKey:`preset`,effectiveVar:`preset.effective`},look:{configKey:`look`,sessionKey:`look`,effectiveVar:`look.effective`},style:{configKey:`style`,sessionKey:`style`,effectiveVar:`style.effective`},progression:{configKey:`progression`,sessionKey:`progression`,effectiveVar:`progression.effective`},charset:{configKey:`charset`,sessionKey:`charset`,effectiveVar:`charset.effective`},colorCompatibility:{configKey:`colorCompatibility`,sessionKey:`colorCompatibility`,effectiveVar:`colorCompatibility.effective`},autoWrap:{configKey:`autoWrap`,sessionKey:`autoWrap`,effectiveVar:`autoWrap.effective`},padding:{configKey:`padding`,sessionKey:`padding`,effectiveVar:`padding.effective`}},bv=Object.values(yv),xv=new Map(bv.map(e=>[e.configKey,e.effectiveVar])),Sv=new Map(bv.map(e=>[e.sessionKey,e.effectiveVar]));function Cv(e,t){let n=new Set,r=e=>{for(let t of ug(e??``))n.add(t)};for(let t of Object.values(e.segments))r(t.template),r(t.bg),r(t.fg),r(t.when);for(let e of t)for(let t of Xo(e))r(t.when);for(let t of Object.values(e.variables))t.kind===`template`&&r(t.template);let i=Object.values(e.actions);i.length>0&&n.add(tv);for(let e of i){`copy`in e&&r(e.copy),`open`in e&&r(e.open);let t=`set`in e?Sv.get(e.set):void 0,i=`persist`in e?xv.get(e.persist):void 0;t!==void 0&&n.add(t),i!==void 0&&n.add(i)}return n}function wv(e,t,n){let r={names:new Set([...n,...Object.keys(e.variables)]),documents:new Set},i={};for(let n of Cv(e,t)){if(hg(n,r))continue;let e=vv[n];if(e===void 0)throw Error(`synthesized chrome reads ".${n}", which it does not declare and PAYLOAD_INPUTS does not supply`);i[n]=e}return i}function Tv(e){return e.op===`remove`?`remove:${e.target}`:`insert:${e.segment}:${e.anchor}:${e.relation}`}function Ev(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 Dv(e){let t=new Set;for(let n of Xo(e))n.kind===`segment`&&t.add(n.name);return t}const Ov=`default`,kv={};function Av(e){return[...new Set([Ov,...Object.keys(e)])]}function jv(e,t,n){return Ca(void 0,e,t,Ov,n)}function Mv(e,t){let n={[Ov]:kv,...e}[t];if(n===void 0)throw Error(`Preset "${t}" is not declared in this config — effectivePresetName collapses unknown names to "${Ov}", which always resolves; a miss here means a raw name reached this function without going through that resolution`);return n}function Nv(e,t){let n=Mv(e.presets,t).root??Rs;return{node:Hs(Ws(n,e.root)),path:Gs(n)?`presets.${t}.root`:`root`}}function Pv(e,t){return{...e.globals,...Mv(e.presets,t).globals}}const Fv=/^segments\.([^.]+)\.palette$/,Iv=/^presets\.(.+)\.root$/;function Lv(e){return`presets.${e}.root`}function Rv(e){if(Sc(e))return{scope:`globals`,field:e};let t=Fv.exec(e);if(t)return{scope:`segment-palette`,segment:t[1]};let n=Iv.exec(e);return n?{scope:`preset-root`,preset:n[1]}:null}function zv(e){return e.scope===`globals`?[`globals`,e.field]:[`segments`,e.segment,`palette`]}const Bv=`open`;function Vv(e,t,n,r){let i={variable:e,key:e,member:Bv};return r.variables[e]=rc(e,Js),r.actions[e]=ic(e,Bv),r.segments[e]={template:nc(e,`(?)`,`✕`),...Hv(n)},$s(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 Hv(e){let[t,...n]=e;return t===void 0?{}:{when:ec(t,...n)}}const Uv={help:[`-h`,`--help`],version:[`-V`,`--version`]},Wv=[`✚ inserts here`,`🚫 removes its segment`,`↺ resets layout`],Gv=[`☐ this session only`,`☑ default for every session`],Kv=`
84
+ Use 'override' annotation for methods overridden by subclass.`)}}var ra=la(0),ia=function(){var e=!1,t={};return Object.defineProperty(t,`0`,{set:function(){e=!0}}),Object.create(t)[0]=1,e===!1}(),aa=0,oa=function(){};function sa(e,t){Object.setPrototypeOf?Object.setPrototypeOf(e.prototype,t):e.prototype.__proto__===void 0?e.prototype=t:e.prototype.__proto__=t}sa(oa,Array.prototype);var ca=function(e){function t(t,n,r,i){var a;return r===void 0&&(r=`ObservableArray@`+h()),i===void 0&&(i=!1),a=e.call(this)||this,ga(function(){var e=new ki(r,n,i,!0);e.proxy_=a,ee(a,D,e),t&&t.length&&a.spliceWithArray(0,0,t),ia&&Object.defineProperty(a,`0`,ra)}),a}ve(t,e);var n=t.prototype;return n.concat=function(){this[D].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}}})},he(t,[{key:`length`,get:function(){return this[D].getArrayLength_()},set:function(e){this[D].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[D].get_(e)},set:function(t){this[D].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[D].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[D].values_.get(t);return i||n(27,t,ha(e)),i}if(Pe(e)||rn(e)||R(e))return e}else if(v(e)&&R(e[D]))return e[D];n(28)}function ma(e,t){if(e||n(29),t!==void 0)return ma(pa(e,t));if(Pe(e)||rn(e)||R(e)||Vi(e)||Ki(e))return e;if(e[D])return e[D];n(24,e)}function ha(e,t){var n;if(t!==void 0)n=pa(e,t);else if(ur(e))return e.name;else n=ea(e)||Vi(e)||Ki(e)?ma(e):pa(e);return n.name_}function ga(e){var t=P(),n=Qt(!0);Mn();try{return e()}finally{Nn(),$t(n),gn(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(!(ce(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)||ie(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:Xn,extras:{getDebugName:ha},$mobx:D}),e.$mobx=D,e.FlowCancellationError=Ar,e.ObservableMap=Bi,e.ObservableSet=Gi,e.Reaction=L,e._allowStateChanges=Zt,e._allowStateChangesInsideComputed=lr,e._allowStateReadsEnd=vn,e._allowStateReadsStart=_n,e._autoAction=cr,e._endAction=Xt,e._getAdministration=ma,e._getGlobalState=Tn,e._interceptReads=Lr,e._isComputingDerivation=ln,e._resetGlobalState=En,e._startAction=Yt,e.action=sr,e.autorun=dr,e.comparer=Be,e.computed=Ut,e.configure=Sr,e.createAtom=Fe,e.defineProperty=ei,e.entries=Yr,e.extendObservable=Cr,e.flow=Pr,e.flowResult=Fr,e.get=$r,e.getAtom=pa,e.getDebugName=ha,e.getDependencyTree=wr,e.getObserverTree=Er,e.has=Qr,e.intercept=Rr,e.isAction=ur,e.isBoxedObservable=tn,e.isComputed=Hr,e.isComputedProp=Ur,e.isFlow=Ir,e.isFlowCancellationError=jr,e.isObservable=Gr,e.isObservableArray=Ii,e.isObservableMap=Vi,e.isObservableObject=ea,e.isObservableProp=Kr,e.isObservableSet=Ki,e.keys=qr,e.makeAutoObservable=wi,e.makeObservable=Si,e.observable=k,e.observe=ni,e.onBecomeObserved=vr,e.onBecomeUnobserved=yr,e.onReactionError=zn,e.override=Ke,e.ownKeys=ti,e.reaction=mr,e.remove=Zr,e.runInAction=lr,e.set=Xr,e.spy=Xn,e.toJS=oi,e.trace=si,e.transaction=li,e.untracked=hn,e.values=Jr,e.when=ui})),Sg=me(((e,t)=>{process.env.NODE_ENV===`production`?t.exports=bg():t.exports=xg()}))();function Cg(e){if(Array.isArray(e))return Object.freeze(e.map(Cg));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]=Cg(r);return Object.freeze(t)}return e}function wg(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 Tg(e){return typeof e==`string`?e:String(e)}function Eg(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 Dg(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 Og(e,t){if(!(e instanceof H))throw TypeError(`template function expected a RichText fragment, got ${typeof e==`object`?Object.prototype.toString.call(e):typeof e}`);let n=e.copy();return n.style=kg(e.style).add(t),n}function kg(e){if(e instanceof B)return e;try{return B.parse(e)}catch(t){throw t instanceof br?TypeError(`template function cannot style a fragment whose base style "${e}" is not a style definition: a style name resolves only against the theme of a render`,{cause:t}):t}}function Ag(e){return{fn:(t=>Og(t,e)),argTypes:[`liftable`],returnType:`T`}}function jg(e){return{fn:((t,n)=>Og(n,new B({[e]:N.parse(t)}))),argTypes:[`string`,`liftable`],returnType:`T`}}function Mg(e,t){return new B({[e]:t})}function Ng(){let e={};for(let t of vr)e[t]=Ag(Mg(t,!0)),e[`not_${t}`]=Ag(Mg(t,!1));for(let[t,n]of Object.entries(z))e[t]=Ag(Mg(n,!0));return e}const Pg={fn:((e,t)=>Og(t,B.parse(e))),argTypes:[`string`,`liftable`],returnType:`T`},Fg={fn:((e,t)=>Og(t,new B({link:e}))),argTypes:[`string`,`liftable`],returnType:`T`};function Ig(){return{fg:jg(`color`),bg:jg(`bgcolor`),...Ng(),link:Fg,style:Pg}}function Lg(e,t){if(!Bn.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 Vn(e)}function Rg(e,t){return{fn:t,argTypes:e,returnType:`string`}}function zg(e,t,n,r){let i=r===void 0||e>=r.min&&e<=r.max;if(!Number.isFinite(e)||!i){let i=r===void 0?`a finite number`:`within ${r.min}..${r.max} (${r.note})`;throw RangeError(`${t}'s ${n} must be ${i}, got ${e}`+(e===void 0?` — ${t} takes it as its last argument`:``))}return e}const Bg=Rg([`string`,`int`],((e,t)=>qn(Lg(e,`darken`),zg(t,`darken`,`levels`)).hex)),Vg=Rg([`string`,`int`],((e,t)=>qn(Lg(e,`lighten`),-zg(t,`lighten`,`levels`)).hex)),Hg={min:0,max:100,note:`0 = from, 100 = toward`},Ug=Rg([`string`,`string`,`float`],((e,t,n)=>gn(Lg(e,`mix`),Lg(t,`mix`),zg(n,`mix`,`percentage`,Hg)/100).hex)),Wg={min:1,max:21,note:`4.5 = AA body text, 3 = AA large text`},Gg=Rg([`string`],(e=>Jn(Lg(e,`contrastOn`)).hex)),Kg=e=>Rg([`string`,`string`,`float`],((t,n,r)=>Yn(Lg(t,`readableOn`),Lg(n,`readableOn`),zg(r,`readableOn`,`ratio`,Wg),e()).hex)),qg={hueShift:`shiftHue`,chromaScale:`scaleChroma`,lightnessScale:`scaleLightness`,lightnessShift:`shiftLightness`};function Jg(){let e={};for(let[t,n]of Object.entries(qg)){let r=t;e[n]=Rg([`string`,`float`],((e,t)=>{let i={...kn,[r]:zg(t,n,`amount`)};return L.fromRgba(Lg(e,n)).applyKey(i).toRgba().hex}))}return e}function Yg(e=()=>j.TRUECOLOR){return{darken:Bg,lighten:Vg,mix:Ug,contrastOn:Gg,readableOn:Kg(e),...Jg()}}function Xg(e,t){if(e.length===0)throw RangeError(`ramp needs at least one stop after the easing: ramp <value> <easing> <position> <color> …`);if(e.length%2!=0)throw RangeError(`ramp's last stop (position ${String(e[e.length-1])}) has no color — stops are <position> <color> pairs`);let n=[];for(let r=0;r<e.length;r+=2)n.push({at:e[r],color:Hn(t,e[r+1])});return n}function Zg(e){return{color:{fn:(t=>Hn(e(),t).hex),argTypes:[`string`],returnType:`string`},ramp:{fn:((...t)=>{if(t.length<2)throw RangeError(`ramp needs a value and an easing before its stops (got ${t.length}): ramp <value> "linear"|"step" <position> <color> …`);let[n,r,...i]=t;return new _r(gr(r),Xg(i,e())).at(n).hex}),argTypes:[`float`,`string`],argTypePattern:`alternating`,returnType:`string`}}}function Qg(e){return{...Ig(),...Yg(e)}}new B({color:`red`,dim:!0});const $g=/^(?:(?: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,e_=/^(?<family>opus|sonnet|haiku)\s+(?<major>\d+)(?:\.(?<minor>\d))?$/i;function t_(e){if(!e)return`Claude`;let t=e.trim().replace(/\s*\([^)]*\)\s*$/,``).replace(/\s*\[[^\]]*\]\s*$/,``).trim(),n=t.match($g);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(e_);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 n_(e){let t=e.match(e_);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 r_(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 i_(e){return e.toLocaleString()}function a_(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 o_(e,t){if(!Number.isFinite(e))throw Error(`a cascade needs a finite value, got ${e}`);let n=-1;for(;n+1<t.length&&t[n+1].at<=e;)n++;return(n<0?t[0]:t[n]).text}const s_=[`▁`,`▂`,`▃`,`▄`,`▅`,`▆`,`▇`,`█`],c_=s_.length;function l_(e,t){let n=t===void 0?e:t<=0?[]:e.slice(-t);if(n.length===0)return``;let r=n[0],i=n[0];for(let e of n)e<r&&(r=e),e>i&&(i=e);let a=i-r,o=``;for(let e of n){let t=a===0?0:Math.round((e-r)/a*(c_-1));o+=s_[t]}return o}function u_(e){let t=[];for(let n of e.split(`,`)){let e=n.trim();if(e===``)continue;let r=Number(e);if(!Number.isFinite(r))throw TypeError(`sparkline: non-numeric series element ${JSON.stringify(n)}`);t.push(r)}return t}const d_=Sa(),f_=[...Ma];function p_(){return{basename:{fn:e=>l(e),argTypes:[`string`]},dirname:{fn:e=>u(e),argTypes:[`string`]},abbreviatePath:{fn:e=>r_(e),argTypes:[`string`]},int:{fn:e=>Eg(e),argTypes:[`value`]},string:{fn:e=>Tg(e),argTypes:[`value`]},bool:{fn:e=>Dg(e),argTypes:[`value`]},urlEncode:{fn:e=>encodeURIComponent(e),argTypes:[`string`]},themes:{fn:()=>d_,argTypes:[]},styles:{fn:()=>f_,argTypes:[]},sparkline:{fn:(e,t)=>l_(u_(e),t),argTypes:[`string`,`int`]},cascade:{fn:(e,...t)=>o_(e,a_(t)),argTypes:[`float`,`string`]}}}function m_(e=()=>new Date){return{minutesUntilReset:{fn:t=>Math.round(Math.max(0,t*1e3-e().getTime())/6e4),argTypes:[`int`]},formatInteger:{fn:e=>i_(e),argTypes:[`int`]},round:{fn:e=>Math.round(e),argTypes:[`float`]},formatModelName:{fn:e=>t_(e),argTypes:[`string`]},shortenModelName:{fn:e=>n_(e),argTypes:[`string`]}}}function h_(e,t=()=>new Date,n){return Id({fromString:e=>new H(e),toString:e=>e.plain,isT:e=>e instanceof H,clock:t,missingKey:`error`,funcs:{...wp(),...Ph(),...um(),...Mm(),...gp(t),...of(),...Rp(),...Qg(n),...p_(),...m_(t),...e??{}}})}function g_(e){return __(e,new Set(e.names()),``)}function __(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`?v_(a,e.readDocument(a)):e.read(a);let o=`${a}.`;for(let n of t)if(n.startsWith(o))return __(e,t,a)}})}function v_(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 y_(e,t){return e?.kind===`ok`?e.value:t}function b_(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??x_(t.stderr)].filter(Boolean).join(`, `)}`)}function x_(e){return e.trim().split(`
85
+ `,1)[0]??``}function S_(e,t){if(e.kind!==`ok`)return e;let n=t(e.value);return n===null?Y:J(n)}function C_(e){if(e.kind!==`ok`)return e;let t=e.value.trim();return t?J(t):Y}const w_=/^[A-Za-z]:[\\/]/;function T_(e){let t=e.trim();if(w_.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 E_(e){return T_(e)?.host||null}function D_(e){let t=E_(e);return t?t===`github.com`||t.endsWith(`.github.com`)?`github`:/(^|\.)gitlab\./.test(t)?`gitlab`:null:null}function O_(e){let t=new Map;for(let n of e.split(`
86
+ `)){let e=n.match(/^remote\.(.+)\.url\s+(\S.*)$/);if(!e)continue;let r=t.get(e[1])??[];r.push(e[2].trim()),t.set(e[1],r)}return[...t].map(([e,t])=>({name:e,urls:t}))}function k_(e){return e.urls.find(e=>P_(e)!==null)??e.urls[0]??null}function A_(e){return e.find(e=>e.name===`origin`)??e[0]??null}function j_(e){let t=A_(e);return t?k_(t):null}function M_(e){let t=A_(e);return t?t.urls.find(e=>D_(e)!==null)??k_(t):null}function N_(e){let t=(T_(e)?.path??e.replace(/[\\/]+$/,``)).split(`/`);return(t[t.length-1]??``).replace(/\.git$/,``)||null}function P_(e){let t=T_(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 F_(e){let t=j_(e);return t===null?null:P_(t)}function I_(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??x_(t.stderr)].filter(Boolean).join(`, `)}`)}function L_(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function R_(e){let t=`detached`,n=Y,r=Y,i=Y,a=0,o=0,s=0,c=0;for(let l of e.split(`
87
+ `)){if(!l)continue;if(l.startsWith(`# `)){let e=l.slice(2);if(e.startsWith(`branch.oid `)){let t=e.slice(11).trim();n=t===`(initial)`?Y:J(t)}else if(e.startsWith(`branch.head `)){let n=e.slice(12).trim();t=n===`(detached)`?`detached`:n}else if(e.startsWith(`branch.upstream `))r=J(e.slice(16).trim());else if(e.startsWith(`branch.ab `)){let t=e.slice(10).trim().match(/^\+(\d+)\s+-(\d+)$/);t&&(i=J({ahead:parseInt(t[1],10),behind:parseInt(t[2],10)}))}continue}let e=l[0];if(e===`1`||e===`2`){let e=l.slice(2,4);e[0]!==`.`&&a++,e[1]!==`.`&&o++}else e===`u`?c++:e===`?`&&s++}let l=`clean`;return c>0?l=`conflicts`:(a||o||s)&&(l=`dirty`),{branch:t,status:l,aheadBehind:i,oid:n,upstream:r,workingTree:{staged:a,unstaged:o,untracked:s,conflicts:c}}}function z_(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(!L_(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 B_(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(!L_(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 V_(e){try{let t=r.statSync(e);return{key:`${t.dev}:${t.ino}`,stamp:`${t.mtimeMs}:${t.size}`}}catch{return null}}var H_=class{isGitRepo(e){try{return r.existsSync(c.join(e,`.git`))}catch{return!1}}async execGitAsync(e,t){return Ee({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=S_(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=S_(s,e=>this.repoNameFrom(e,r)),o.isWorktree=i),s!==void 0&&t.showRepoUrl&&(o.repoUrl=S_(s,F_)),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 C_(b_(`git describe --tags`,await this.execGitAsync([`describe`,`--tags`,`--abbrev=0`],{cwd:e,timeout:2e3}),`absent`))}async timeSinceCommit(e,t){return t.kind===`ok`?S_(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=C_(b_(`git log -1`,await this.execGitAsync([`log`,`-1`,`--format=%ct`,t,`--`],{cwd:e,timeout:2e3}),`absent`));if(n.kind!==`ok`)return n;let r=parseInt(n.value,10)*1e3;return Number.isNaN(r)?X(`git log -1: unparseable timestamp "${n.value}"`):J(r)}resolveCommonGitDir(e){let t=this.resolveGitDir(e);try{let e=r.readFileSync(c.join(t,`commondir`),`utf-8`).trim();if(e)return c.resolve(t,e)}catch{}return t}getStashCount(e){let t=c.join(this.resolveCommonGitDir(e),`logs`,`refs`,`stash`),n;try{n=r.readFileSync(t,`utf-8`)}catch(e){return e.code===`ENOENT`?J(0):X(`git stash reflog ${t}: ${e instanceof Error?e.message:String(e)}`)}let i=n.trim();return J(i?i.split(`
88
+ `).length:0)}async getRemotesAsync(e){let t=V_(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=b_(`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`?O_(t.value):[])}repoNameFrom(e,t){let n=j_(e);return(n===null?null:N_(n))??c.basename(t)}async getRepoRemoteUrl(e){let t=await this.getRemotesAsync(e);if(t.kind!==`ok`)return t;let n=M_(t.value);return n===null?Y:J(n)}async execForgeAsync(e,t,n){return Ee({bin:e,args:[...t],cwd:n.cwd,env:{...process.env},timeoutMs:n.timeout,category:`forge`})}async resolvePullRequest(e,t){let n=D_(t);return n===`github`?I_(`gh pr view`,await this.execForgeAsync(`gh`,[`pr`,`view`,`--json`,`number,state,url`],{cwd:e,timeout:5e3}),/no (open )?pull requests? found/i,z_):n===`gitlab`?I_(`glab mr view`,await this.execForgeAsync(`glab`,[`mr`,`view`,`--output`,`json`],{cwd:e,timeout:5e3}),/no (open )?merge requests? (found|available)/i,B_):Y}isWorktree(e){try{let t=c.join(e,`.git`);return!!(r.existsSync(t)&&r.statSync(t).isFile())}catch{return!1}}async getCoreAsync(e){E(`[GIT-EXEC] Running git status --porcelain=v2 in ${e}`);let t=b_(`git status --porcelain=v2 --branch`,await this.execGitAsync([`status`,`--porcelain=v2`,`--branch`],{cwd:e,timeout:2e3}),`failed`);return t.kind===`ok`?J(R_(t.value)):t}};const U_=(e,t)=>E(t);var W_=class{slots=new Map;maxWatchers;counters;logger;closed=!1;constructor(e={}){this.maxWatchers=e.maxWatchers??128,this.counters=e.counters,this.logger=e.logger??U_}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()}},G_=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 K_=(e,t)=>E(t),q_={showSha:!0,showStashCount:!0};function J_(e){let t=Object.keys(e).sort(),n={};for(let r of t)n[r]=e[r];return JSON.stringify(n)}function Y_(e){let t=t=>{try{return r.statSync(c.join(e,t)).mtimeMs}catch{return 0}};return{head:t(`HEAD`),index:t(`index`)}}function X_(e,t){return e.head!==t.head||e.index!==t.index}function Z_(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 Q_=class extends H_{entries=new Map;subscribersByRepo=new Map;fetchInFlight=new Map;resolutions=new Map;prCache=new Map;prFetchInFlight=new Map;refreshes=new G_;hits=0;misses=0;invalidations=0;inner;ttlMs;maxEntries;watchers;ownsWatchers;logger;sanityTimer=null;constructor(e={}){super(),this.inner=e.inner??new H_,this.ttlMs=e.ttlMs??3e4,this.maxEntries=e.maxEntries??64,this.logger=e.logger??K_,e.watchers?(this.watchers=e.watchers,this.ownsWatchers=!1):(this.watchers=new W_({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}|${J_(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=Y_(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}`,Z_(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}`,Z_(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,{...q_});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,{...q_}),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=Y_(this.inner.resolveGitDir(t.repoRoot)),e.set(t.repoRoot,n)),X_(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 $_=/\r\n|\r|\n/g,ev=e=>J(e.replace($_,` `).trim());function tv(e){return t=>{let n=e.exec(t)?.[1];return n===void 0?X(`regex no-match`):J(n.replace($_,` `))}}const nv=e=>{try{return J(JSON.parse(e))}catch(e){return X(`JSON parse failed: ${e.message}`)}};function rv(e,t){return t.kind!==`ttl`||t.durationMs>=500?t:(E(`declareShell "${e}": ttl ${t.durationMs}ms below floor 500ms; clamping`),{kind:`ttl`,durationMs:500})}function iv(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 av=`session.id`;function ov(e,t){return{where:`output of "${e}"`,read:async()=>{let n=await Ee({bin:`/bin/sh`,args:[`-c`,e],category:`user-shell`,signal:t});if(!n.ok&&n.reason===`aborted`)throw t.reason;return n.ok?J(n.stdout):X(`shell "${e}" ${n.exitCode===null?[n.reason,n.error].filter(e=>e!==void 0).join(`: `):`exited with code ${n.exitCode}`}`)}}}function sv(e,t,n){return{where:`"${e}"`,read:async()=>{try{let r=await v(e,{encoding:`utf8`,signal:n});return J(t===`first-line`?r.split(/\r?\n/)[0]??``:r)}catch{if(n.aborted)throw n.reason;return X(`file unreadable: ${e}`)}}}}function cv(e,t,n){if(e.kind!==`ok`)return e;let r=t(e.value);return r.kind===`failed`?X(`${r.reason} in ${n}`):r}const lv=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],uv=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],dv=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],fv=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`];function pv(e,t){let n=[[`2006`,e=>String(e.getFullYear())],[`January`,e=>lv[e.getMonth()]],[`Monday`,e=>dv[e.getDay()]],[`Jan`,e=>uv[e.getMonth()]],[`Mon`,e=>fv[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 mv={branch:`string`,sha:`string`,dirty:`boolean`,ahead:`number`,behind:`number`,stash:`number`};function hv(e,t,n,r){if(e===null){if(n!==void 0)return n;let e=mv[t];try{return yv(r,e)}catch{return bv(e)}}switch(t){case`branch`:return e.branch===`detached`?``:e.branch;case`sha`:return y_(e.sha,``);case`dirty`:return e.status!==`clean`;case`ahead`:return y_(e.aheadBehind,{ahead:0,behind:0}).ahead;case`behind`:return y_(e.aheadBehind,{ahead:0,behind:0}).behind;case`stash`:return y_(e.stashCount,0)}}var gv=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}},_v=class{buckets=new Map;subscribe(e,t){let n=this.buckets.get(e);if(!n){let t=new Set;n={timer:S(()=>{for(let e of t)e()},e),callbacks:t},this.buckets.set(e,n)}return n.callbacks.add(t),()=>this.unsubscribe(e,t)}unsubscribe(e,t){let n=this.buckets.get(e);n&&(n.callbacks.delete(t),n.callbacks.size===0&&(x(n.timer),this.buckets.delete(e)))}dispose(){for(let{timer:e}of this.buckets.values())x(e);this.buckets.clear()}bucketCount(){return this.buckets.size}};function vv(e,t){let n=e;for(let e of t.split(`.`)){if(typeof n!=`object`||!n)return;n=n[e]}return n}function yv(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`?Tg(e):t===`number`?Eg(e):Dg(e)}function bv(e){return e===`number`?0:e===`boolean`?!1:``}var xv=class{inputMetas=new Map;lastErrors=new Map;watchMgr=new gv;ttlMgr=new _v;gitSubscriptions=new Map;cleanups=[];inFlight=new Map;reads=new G_;abort=new AbortController;drawn=Sg.observable.box(j.TRUECOLOR);drawnAt=()=>this.drawn.get();engine=h_(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 Q_({sanityIntervalMs:0}),this.ownsGitProvider=!0),this.sessionState=r}get variableStore(){return this.store}declareLiteral(e,t){this.store.defineBox(e,wg(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,ov(t,this.abort.signal),rv(e,n.cache),n.parse)}declareFile(e,t,n){this.declareSource(e,sv(t,n.readMode??`whole`,this.abort.signal),n.cache,n.parse)}declareSource(e,t,n,r){let i=this.publisherFor(e,r,t.where),a=()=>this.runSource(e,t,i);a(),this.registerCachePolicy(e,n,a)}publisherFor(e,t,n){switch(t.kind){case`text`:return this.scalarPublisher(e,ev,t.default,n);case`regex`:return this.scalarPublisher(e,tv(t.regex),t.default,n);case`json`:return this.documentPublisher(e,t.default,n)}}scalarPublisher(e,t,n,r){let i=this.stringInitial(n);return this.store.defineBox(e,`string`,i),n=>{let a=cv(n,t,r);this.noteOutcome(e,a),this.store.setBox(e,y_(a,i))}}documentPublisher(e,t,n){let r=t===void 0?Y:J(t);return this.store.defineDocument(e,r),i=>{let a=cv(i,nv,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=g_(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 pv(t.format,e)}catch{return this.stringInitial(t.varDefault)}})(new Date));let r=this.ttlMgr.subscribe(n,()=>{try{this.store.setBox(e,pv(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=mv[t.field],r=t.varDefault===void 0?bv(n):yv(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,hv(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(av);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=vv(e,n.path),i=this.store.getType(t);if(r!==void 0)try{this.store.setBox(t,yv(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,Sg.reaction)(()=>{let t=g_(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,Sg.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,yv(this.defaultEmptyValue,t))}catch{this.store.setBox(e,bv(t))}}defaultFor(e){try{return yv(this.defaultEmptyValue,e)}catch{return bv(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 Sv={project_dir:{kind:`input`,path:`workspace.project_dir`,default:``},[av]:{kind:`input`,path:`session_id`,default:``},transcript_path:{kind:`input`,path:`transcript_path`,default:``},"theme.effective":{kind:`input`,path:`theme.effective`,default:``},"look.effective":{kind:`input`,path:`look.effective`,default:``},"preset.effective":{kind:`input`,path:`preset.effective`,default:``},"preset.customized":{kind:`input`,path:`preset.customized`,type:`boolean`,default:!1},"style.effective":{kind:`input`,path:`style.effective`,default:``},"progression.effective":{kind:`input`,path:`progression.effective`,default:``},"charset.effective":{kind:`input`,path:`charset.effective`,default:``},"colorCompatibility.effective":{kind:`input`,path:`colorCompatibility.effective`,default:``},"autoWrap.effective":{kind:`input`,path:`autoWrap.effective`,type:`boolean`,default:!0},"padding.effective":{kind:`input`,path:`padding.effective`,type:`number`,default:1},"term.cols":{kind:`input`,path:`term.cols`,type:`number`,default:80},"git.repoUrl":{kind:`input`,path:`git.repoUrl`,default:``}},Cv={theme:{configKey:`palette`,sessionKey:`theme`,effectiveVar:`theme.effective`},preset:{configKey:`preset`,sessionKey:`preset`,effectiveVar:`preset.effective`},look:{configKey:`look`,sessionKey:`look`,effectiveVar:`look.effective`},style:{configKey:`style`,sessionKey:`style`,effectiveVar:`style.effective`},progression:{configKey:`progression`,sessionKey:`progression`,effectiveVar:`progression.effective`},charset:{configKey:`charset`,sessionKey:`charset`,effectiveVar:`charset.effective`},colorCompatibility:{configKey:`colorCompatibility`,sessionKey:`colorCompatibility`,effectiveVar:`colorCompatibility.effective`},autoWrap:{configKey:`autoWrap`,sessionKey:`autoWrap`,effectiveVar:`autoWrap.effective`},padding:{configKey:`padding`,sessionKey:`padding`,effectiveVar:`padding.effective`}},wv=Object.values(Cv),Tv=new Map(wv.map(e=>[e.configKey,e.effectiveVar])),Ev=new Map(wv.map(e=>[e.sessionKey,e.effectiveVar]));function Dv(e,t){let n=new Set,r=e=>{for(let t of fg(e??``))n.add(t)};for(let t of Object.values(e.segments))r(t.template),r(t.bg),r(t.fg),r(t.when);for(let e of t)for(let t of Xo(e))r(t.when);for(let t of Object.values(e.variables))t.kind===`template`&&r(t.template),t.kind===`state`&&n.add(av);for(let t of Object.values(e.actions)){n.add(av),`copy`in t&&r(t.copy),`open`in t&&r(t.open);let e=`set`in t?Ev.get(t.set):void 0,i=`persist`in t?Tv.get(t.persist):void 0;e!==void 0&&n.add(e),i!==void 0&&n.add(i)}return n}function Ov(e,t,n){let r=vg({...n,variables:{...n.variables,...e.variables},segments:{...n.segments,...e.segments}}),i={};for(let n of Dv(e,t)){if(_g(n,r))continue;let e=Sv[n];if(e===void 0)throw Error(`synthesized chrome reads ".${n}", which it does not declare and PAYLOAD_INPUTS does not supply`);i[n]=e}return i}function kv(e){return e.op===`remove`?`remove:${e.target}`:`insert:${e.segment}:${e.anchor}:${e.relation}`}function Av(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 jv(e){let t=new Set;for(let n of Xo(e))n.kind===`segment`&&t.add(n.name);return t}const Mv=`default`,Nv={};function Pv(e){return[...new Set([Mv,...Object.keys(e)])]}function Fv(e,t,n){return Ca(void 0,e,t,Mv,n)}function Iv(e,t){let n={[Mv]:Nv,...e}[t];if(n===void 0)throw Error(`Preset "${t}" is not declared in this config — effectivePresetName collapses unknown names to "${Mv}", which always resolves; a miss here means a raw name reached this function without going through that resolution`);return n}function Lv(e,t){let n=Iv(e.presets,t).root??Rs;return{node:Hs(Gs(n,e.root)),path:Ks(n)?`presets.${t}.root`:`root`}}function Rv(e,t){return{...e.globals,...Iv(e.presets,t).globals}}const zv=/^segments\.([^.]+)\.palette$/,Bv=/^presets\.(.+)\.root$/;function Vv(e){return`presets.${e}.root`}function Hv(e){if(Cc(e))return{scope:`globals`,field:e};let t=zv.exec(e);if(t)return{scope:`segment-palette`,segment:t[1]};let n=Bv.exec(e);return n?{scope:`preset-root`,preset:n[1]}:null}function Uv(e){return e.scope===`globals`?[`globals`,e.field]:[`segments`,e.segment,`palette`]}const Wv=`open`;function Gv(e,t,n,r){let i={variable:e,key:e,member:Wv};return r.variables[e]=ic(e,Ys),r.actions[e]=ac(e,Wv),r.segments[e]={template:rc(e,`(?)`,`✕`),...Kv(n)},ec(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 Kv(e){let[t,...n]=e;return t===void 0?{}:{when:tc(t,...n)}}const qv={help:[`-h`,`--help`],version:[`-V`,`--version`]},Jv=[`✚ inserts here`,`🚫 removes its segment`,`↺ resets layout`],Yv=[`☐ this session only`,`☑ default for every session`],Xv=`
89
89
  cc-candybar - Beautiful powerline statusline for Claude Code
90
90
 
91
91
  Usage: cc-candybar [options]
92
92
 
93
93
  Standalone Commands:
94
- ${Uv.help.join(`, `).padEnd(25)}Show this help
95
- ${Uv.version.join(`, `).padEnd(25)}Print the version of this runtime (cc-candybar <version>)
94
+ ${qv.help.join(`, `).padEnd(25)}Show this help
95
+ ${qv.version.join(`, `).padEnd(25)}Print the version of this runtime (cc-candybar <version>)
96
96
 
97
97
  Debugging:
98
98
  CC_CANDYBAR_DEBUG=1 Enable debug logging for troubleshooting
@@ -105,16 +105,16 @@ Configuration:
105
105
 
106
106
  Every bar carries a settings menu, whatever your config says — no config
107
107
  needed, and writing your own \`root\` cannot delete it. Click
108
- it on the bar (${Ys} by default; globals.menuGlyph changes it) for
108
+ it on the bar (${Xs} by default; globals.menuGlyph changes it) for
109
109
  quick actions, preset switching, edit mode, and a config menu of
110
110
  clickable theme/look/style/progression/charset/colour-depth/wrap/padding
111
111
  controls. The \`persist?\` checkbox there chooses where a change lands:
112
- ${Gv.join(`, `)}.
112
+ ${Yv.join(`, `)}.
113
113
  Its 🧰 tools row holds 🩺 doctor: click it to check your setup, and click a
114
114
  failed row's [fix] to repair it (the same checks \`cc-candybar doctor\` runs).
115
115
 
116
116
  Anywhere the bar shows (?), clicking it reveals these same instructions
117
- in place. In edit mode: ${Wv.join(`, `)}.
117
+ in place. In edit mode: ${Jv.join(`, `)}.
118
118
 
119
119
  Subcommands:
120
120
  install One-shot setup: stages the runtime (native render
@@ -152,36 +152,36 @@ Config tooling:
152
152
  config [--json] The effective merged config. (All three query the
153
153
  running daemon; none spawn one.)
154
154
 
155
- `,qv=`${dl}live`,Jv=[`☐ live`,`☑ live`],Yv=`${dl}done`,Xv={variable:qv,key:qv,member:`open`},Zv=`and ${tc(ng)} (not ${tc(Xv)})`,Qv=`{{ ${Zv} }}`;function $v(e,t){return`{{ if ${Zv} }}${e}{{ else }}${t}{{ end }}`}const ey=`{{ and ${tc(ng)} .preset.customized }}`,ty=ml;function ny(e){return`${dl}addable.${e}`}function ry(e){let t=Object.keys(e.segments).filter(e=>!ty(e)),n=new Map;for(let r of Av(e.presets)){let{node:i}=Nv(e,r),a=Dv(i);n.set(ny(r),{members:t.filter(e=>!a.has(e))})}return n}function iy(e,t,n){return n.segments[e]={template:t,when:rg},{kind:`segment`,name:e}}function ay(e,t,n,r){let i=`${dl}${e}.remove.${cl(n)}`;return r.actions[i]={persist:t,removeSegment:n},`{{ if ${tc(ng)} }}{{ action "${i}" "🚫" }}{{ end }}`}const oy=`${dl}label:`;function sy(e){return e.startsWith(oy)?e.slice(oy.length):e.startsWith(`edit.`)?void 0:e}function cy(e,t){let n=`${oy}${e}`;return t.segments[n]={template:`{{ "${Qs(e)}" }}`,when:Qv},{kind:`segment`,name:n}}function ly(e,t,n,r,i,a,o){let s=`${dl}${e}.insert.${n}`,c=`${dl}${e}.insertSeg.${n}`;o.actions[s]={persist:t,insertSegmentFrom:r,anchor:i,relation:a};let l=Ph(s),u=Fh(c,s,void 0),d=Rh(u),f=Lh(u,l);return o.variables[u]=rc(u,Js),o.variables[d]={kind:`state`,key:d,default:`0`},o.actions[f]=ic(u,l),o.actions[d]={set:d,int:!0},{host:c,template:`{{ $m := menu "${s}" "✚" "✕" }}{{ if ${tc({variable:u,key:u,member:l})} }}{{ $m }}{{ else }}{{ fg (${`readableOn (color "success") (bgOf) ${Qi}`}) $m }}{{ end }}`}}function uy(e,t,n,r,i,a){let o=[],s=e.children.findIndex(e=>e.kind===`segment`&&!ty(e.name)),c=e=>uy(e,t,n,r,i,a);for(let[l,u]of e.children.entries()){if(u.kind===`container`){o.push(c(u));continue}let d=Yo(u,c);if(ty(u.name)){o.push(d);continue}let f=e=>ly(t,n,String(a.n++),r,u.name,e,i),p=l===s?[f(`before`)]:[],m=f(`after`),h=ay(t,n,u.name,i),g={kind:`container`,direction:`horizontal`,children:[...p.map(e=>iy(e.host,e.template,i)),{...cy(u.name,i),trail:h},{...d,when:$v(`false`,u.when??`true`),trail:h},iy(m.host,m.template,i)]};o.push(e.direction===`vertical`?{kind:`container`,direction:`horizontal`,children:[g]}:g)}return{...e,children:o,...e.when!==void 0&&{when:$v(`true`,e.when)}}}function dy(e,t,n,r,i,a,o){let s=`${dl}${n}.resetLayout`,c=`${dl}${n}.customized`;i.actions[s]={reset:r};let l=Qs(t);return i.segments[c]={template:`{{ action "${s}" "↺ ${l} customized" }}`,when:ey},{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[a,{kind:`segment`,name:c}]},fy(e,o)]}}function fy(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),fy(n,t)]}:{...e,children:[...e.children,t]}}function py(e,t,n,r,i){let{node:a}=Nv(e,t),o=Lv(t),s=ny(t),c=cl(t);return dy(uy(a,c,o,s,n,{n:0}),t,c,o,n,r,i)}function my(e){let t={variables:{},actions:{},segments:{}},n=Vv(`${dl}help`,Wv,[ng],t);t.variables[qv]=rc(qv,Js),t.actions[qv]=ic(qv,Xv.member),t.segments[qv]={template:nc(qv,...Jv),when:rg};let r={kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:qv},n]};t.segments[Yv]={template:`{{ action "${eg}" "✎ done" }}`,when:rg};let i={kind:`segment`,name:Yv},a={...e.presets};for(let n of Av(e.presets)){let o=py(e,n,t,i,r);a[n]={...Mv(e.presets,n),root:o}}let o=wv(t,[i,r],Object.keys(e.variables));return{...e,variables:{...o,...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:a}}const hy={socket:`TMUX`,pane:`TMUX_PANE`,truecolor:`CLAUDE_CODE_TMUX_TRUECOLOR`};function gy(e){let t=e[hy.socket]??``,n=e[hy.pane]??``;if(t===``||n===``)return null;let r=e[hy.truecolor]??``;return{socket:t.split(`,`)[0],pane:n,truecolor:r===``?null:r}}const _y=hy.truecolor,vy=[{name:`tmuxTruecolor`,label:`tmux truecolor`,probe:({tmux:e,claudeSettingsEnv:t})=>{switch(e.kind){case`unreported`:return{ok:!1,reason:"the client reported no tmux facts — re-run `cc-candybar install` to stage a current client"};case`outside`:return{ok:!0};case`inside`:{if(e.termfeatures.kind===`failed`)return{ok:!1,reason:`tmux could not be asked: ${e.termfeatures.reason}`};if(!e.termfeatures.value.includes(`RGB`)||e.hint.truecolor!==null)return{ok:!0};let n=t[_y];return typeof n==`string`&&n!==``?{ok:!1,reason:`${_y} is set in ~/.claude/settings.json — restart Claude Code to apply`}:{ok:!1,reason:`Claude Code renders the bar in 256 colours inside tmux`,fix:{kind:`claude-settings-env`,name:_y,value:`1`}}}}}}];function yy(e){return vy.map(t=>({check:t,verdict:t.probe(e)}))}function by(e){return vy.find(t=>t.name===e)}function xy(e){let t=`settings.doctor.${e}.`;return{verdict:`${t}verdict`,reason:`${t}reason`,fixable:`${t}fixable`}}function Sy(e){return e.flatMap(({check:e,verdict:t})=>{let n=xy(e.name);return t.ok?[{key:n.verdict,value:`ok`},{key:n.reason,value:``},{key:n.fixable,value:Ja}]:[{key:n.verdict,value:`failed`},{key:n.reason,value:t.reason},{key:n.fixable,value:t.fix===void 0?Ja:qa}]})}const Cy={copySession:{copy:`{{ .session.id }}`},openProject:{open:`{{ .project_dir }}`},openTranscript:{open:`{{ .transcript_path }}`}};function wy(e){let t=t=>`${e}${t}`;return{template:`{{ action "${t(`copySession`)}" "⎘ id" }} {{ action "${t(`openProject`)}" "↗ proj" }} {{ action "${t(`openTranscript`)}" "↗ log" }}{{ if ne .git.repoUrl "" }} {{ link .git.repoUrl "↗ repo" }}{{ end }}`,actions:Object.fromEntries(Object.entries(Cy).map(([t,n])=>[`${e}${t}`,n]))}}const Ty=`${fl}menu`,Ey=tg,Dy=`${fl}edit`,Oy=`${fl}close`,ky=`${fl}toolbar`,Ay=wy(fl),jy=`${fl}persist`,My=`${fl}config`,Ny=jy,Py={variable:Ty,key:Ty,member:Ey},Fy={variable:My,key:My,member:Ey},Iy=`${fl}tools`,Ly={variable:Iy,key:Iy,member:Ey},Ry=[{seg:`${fl}undo`,depth:`undo`,action:{undo:!0},display:`↶ undo`},{seg:`${fl}redo`,depth:`redo`,action:{redo:!0},display:`↷ redo`}],zy=e=>`${fl}history.${e}`,By=`${fl}doctor`,Vy=`${By}.run`,Hy=e=>`${By}.fix.${e}`,Uy=e=>`${By}.${e}`,Wy=`${fl}help.persist`,Gy=`${fl}pickers`,Ky=[`{{ themePreview }}`],qy=[{name:`preset`,...yv.preset,glyph:`▦`,domain:`presets`,beneath:[`{{ layoutPreview }}`]}],Jy=[{name:`theme`,...yv.theme,glyph:`🎨`,domain:`themes`,beneath:Ky},{name:`look`,...yv.look,glyph:`◐`,domain:`looks`,beneath:Ky},{name:`style`,...yv.style,glyph:`✦`,domain:`styles`,beneath:[]},{name:`progression`,...yv.progression,glyph:`🎼`,domain:`progressions`,beneath:[`{{ layoutPreview }}`]},{name:`charset`,...yv.charset,glyph:`🔣`,domain:`charsets`,beneath:[]},{name:`colorCompatibility`,...yv.colorCompatibility,glyph:`🌈`,domain:`colorCompatibilities`,beneath:[]}],Yy={name:`wrap`,...yv.autoWrap},Xy={name:`padding`,...yv.padding},Zy=`${fl}${Yy.name}`,Qy=`${fl}${Xy.name}`,$y=[...qy,...Jy];new Set([...$y,Yy,Xy].flatMap(e=>[e.sessionKey,e.configKey]));const eb=e=>`${fl}${e}`,tb=e=>`${fl}apply.${e}`,nb=e=>`${fl}reset.${e}`,rb=e=>`${fl}carousel.${e}`,ib=(e,t)=>`${rb(e)}.${t}`,ab=Ih(Gy),ob=e=>({variable:ab,key:ab,member:Ph(tb(e.name))});function sb(e){return $s(eb(e.name),ob(e),{kind:`container`,direction:`vertical`,children:[{kind:`segment`,name:rb(e.name)},...e.beneath.map((t,n)=>({kind:`segment`,name:ib(e.name,n)}))]},`drop`)}function cb(e){return e===Ty}function lb(e){let t={kind:`segment`,name:Ty};if(e.kind===`container`&&e.direction===`vertical`){let[n,...r]=e.children;return e.when===void 0&&n!==void 0?{...e,children:[lb(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 ub(e){return db(e)>0?e:lb(e)}function db(e){let t=0;for(let n of Xo(e))n.kind===`segment`&&cb(n.name)&&(t+=1);return t}function fb(e,t=!1){let n=t||e.when!==void 0;return e.kind===`segment`?n&&cb(e.name)||e.opens!==void 0&&fb(e.opens.body,!0):e.children.some(e=>fb(e,n))}function pb(e,t){return e.kind===`segment`?cb(e.name)?$s(e.name,Py,{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:ky},{kind:`segment`,name:jy},t,...qy.map(sb),$s(My,Fy,{kind:`container`,direction:`horizontal`,children:[...Jy.map(sb),{kind:`segment`,name:Zy},{kind:`segment`,name:Qy}]},`drop`),$s(Iy,Ly,{kind:`container`,direction:`vertical`,children:[{kind:`segment`,name:By},...vy.map(e=>({kind:`segment`,name:Uy(e.name)}))]},`drop`),{kind:`segment`,name:Dy},...Ry.map(e=>({kind:`segment`,name:e.seg}))]},`inline`):e:mb(e,t)}function mb(e,t){return{...e,children:e.children.map(e=>pb(e,t))}}function hb(e){let t={variables:{[Ty]:rc(Ty,Js)},actions:{[Ty]:ic(Ty,Ey),[My]:ic(My,Ey),[Iy]:ic(Iy,Ey),[Vy]:{doctor:`run`},[Oy]:{set:Py.key,to:Js},[Dy]:{do:[eg,Oy]},...Ay.actions,[jy]:{set:Ny,cycle:[Ja,qa]}},segments:{[Ty]:{template:nc(Ty,e,`❌`)},[ky]:{template:Ay.template},[jy]:{template:`{{ action "${jy}" "☐ persist?" "☑ persist?" }}`},[My]:{template:nc(My,`⚙ config ▸`,`⚙ config ▾`)},[Iy]:{template:nc(Iy,`🧰 tools ▸`,`🧰 tools ▾`)},[By]:{template:`{{ action "${Vy}" "🩺 doctor" }}`},[Zy]:{template:`{{ action "${tb(`wrap`)}" "wrap: on" "wrap: off" }} {{ action "${nb(`wrap`)}" "↺" }}`},[Qy]:{template:`{{ action "${tb(`padding`)}.down" "◀" }} padding {{ .${Xy.effectiveVar} }} {{ action "${tb(`padding`)}.up" "▶" }} {{ action "${nb(`padding`)}" "↺" }}`},[Dy]:{template:`{{ action "${Dy}" "✎ edit" "✎ done" }}`}}};return t.variables[Ny]={kind:`state`,key:Ny,default:Ja},t.variables[My]=rc(My,Js),t.variables[Iy]=rc(Iy,Js),vb(t),_b(t),gb(t),{artifacts:t,help:Vv(Wy,Gv,[Py],t)}}function gb(e){for(let t of Ry){let n=zy(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 _b(e){for(let t of vy){let n=xy(t.name),r=Hy(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[Uy(t.name)]={when:`{{ ne .${n.verdict} "" }}`,template:`{{ if eq .${n.verdict} "ok" }}✓ ${t.label}{{ else }}✗ ${t.label} — {{ .${n.reason} }}{{ if eq .${n.fixable} "${qa}" }} {{ action "${r}" "[fix]" }}{{ end }}{{ end }}`}}}function vb(e){for(let t of $y){let n=tb(t.name);e.actions[n]={set:t.sessionKey,persist:t.configKey,persistWhen:Ny,from:t.domain},e.actions[nb(t.name)]={reset:t.configKey},yb(t,e)}e.actions[tb(Yy.name)]={set:Yy.sessionKey,persist:Yy.configKey,persistWhen:Ny,cycle:[...Ya]},e.actions[nb(Yy.name)]={reset:Yy.configKey};for(let t of[-1,1])e.actions[`${tb(Xy.name)}.${t<0?`down`:`up`}`]={set:Xy.sessionKey,persist:Xy.configKey,persistWhen:Ny,...Xa,by:t};e.actions[nb(Xy.name)]={reset:Xy.configKey}}function yb(e,t){let n=tb(e.name),r=ob(e),i=Lh(r.key,r.member);t.variables[r.key]=rc(r.key,Js),t.actions[i]=ic(r.key,r.member),t.segments[eb(e.name)]={template:`${e.glyph} {{ .${e.effectiveVar} }} ${nc(i,`▸`,`▾`)} {{ action "${nb(e.name)}" "↺" }}`},t.segments[rb(e.name)]={template:`{{ carousel "${n}" }}`},e.beneath.forEach((n,r)=>{t.segments[ib(e.name,r)]={template:n}})}function bb(e){e.variables[$h]=rc($h,Js),e.actions[eg]=ic($h,tg)}function xb(e){let{artifacts:t,help:n}=hb(e.globals.menuGlyph??`🍫`);bb(t);let r={...e.presets};for(let t of Av(e.presets)){let{node:i}=Nv(e,t);r[t]={...Mv(e.presets,t),root:pb(ub(i),n)}}let i=wv(t,[pb({kind:`segment`,name:Ty},n)],Object.keys(e.variables));return{...e,variables:{...i,...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:r}}const Sb=[`set`,`persist`,`copy`,`open`,`reset`,`undo`,`redo`,`doctor`,`do`],Cb=`persistWhen`;function wb(e){return Cb in e}function Tb(e){return wb(e)?`to`in e?[{set:e.set,to:e.to},{persist:e.persist,to:e.to}]:`from`in e?[{set:e.set,from:e.from},{persist:e.persist,from:e.from}]:`cycle`in e?[{set:e.set,cycle:e.cycle},{persist:e.persist,cycle:e.cycle}]:[{set:e.set,min:e.min,max:e.max,by:e.by},{persist:e.persist,min:e.min,max:e.max,by:e.by}]:[e]}function Eb(e){return`from`in e||`int`in e||`insertSegmentFrom`in e}function Db(e,t){if(t===void 0)return{};if(!ps(t))return Z(e,`actions`,`actions must be an object, got ${ms(t)}`),{};let n=Object.create(null);for(let[r,i]of Object.entries(t)){let t=Ob(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 Ob(e,t,n){if(!ps(n))return Z(e,t,`${t} must be an action object, got ${ms(n)}`),null;if(`persistWhen`in n)return sx(e,t,n,`dual`,ix);let r=Sb.filter(e=>e in n);return r.length===1?kb[r[0]](e,t,n):(Z(e,t,`action must declare exactly one of: ${Sb.join(`, `)}${r.length>1?` (found: ${r.join(`, `)})`:``}`),null)}const kb={set:(e,t,n)=>sx(e,t,n,`set`,nx),persist:(e,t,n)=>sx(e,t,n,`persist`,rx),copy:Ab(`copy`),open:Ab(`open`),reset:jb,undo:Mb(`undo`),redo:Mb(`redo`),doctor:Nb,do:Pb};function Ab(e){return(t,n,r)=>{for(let i of Object.keys(r))i!==e&&Z(t,`${n}.${i}`,`Unknown key "${i}" on a ${e} action. Expected only: ${e}`);let i=cs(t,n,r,e);return i===null?null:{[e]:i}}}function jb(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=Fb(e,t,`reset`,n,`reset key must be non-empty (the config globals field to clear)`,e=>`reset key "${e}" contains "/" — keys must be slash-free`);return r===null?null:{reset:r}}function Mb(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 — it steps the history of the session's config file), got ${G(r[e])}`),null)}}function Nb(e,t,n){let r=n.doctor,i=r===`run`?[`doctor`]:[`doctor`,`check`];for(let r of Object.keys(n))i.includes(r)||Z(e,`${t}.${r}`,`Unknown key "${r}" on a doctor action. Expected only: ${i.join(`, `)}`);if(r!==`run`&&r!==`fix`)return Z(e,`${t}.doctor`,`doctor must be "run" or "fix", got ${G(r)}`),null;if(r===`run`)return{doctor:`run`};let a=n.check;return typeof a!=`string`||by(a)===void 0?(Z(e,`${t}.check`,`doctor fix must name a check (have: ${vy.map(e=>e.name).join(`, `)}), got ${G(a)}`),null):{doctor:`fix`,check:a}}function Pb(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 Fb(e,t,n,r,i,a){let o=cs(e,t,r,n);if(o===null)return null;let s=`${t}.${n}`;return o===``?(Z(e,s,i),null):o.includes(`/`)?(Z(e,s,a(o)),null):o}const Ib={set:[[`set`,`the SessionState key to write`]],persist:[[`persist`,`the config globals field to write`]],dual:[[`set`,`the SessionState key written while persistWhen is off`],[`persist`,`the config globals field written while persistWhen is on`],[Cb,`the SessionState key whose boolean value chooses the destination`]]};function Lb(e,t,n,r){let i={},a=Ib[r],o=!0;for(let[r,s]of a){if(!(r in n)){Z(e,t,`${r} is required here (${s}) — a dual-destination action declares ${a.map(([e])=>e).join(`, `)} together, plus one value source`),o=!1;continue}let c=Fb(e,t,r,n,`${r} key must be non-empty (${s})`,e=>`${r} key "${e}" contains "/" — keys must be slash-free`);if(c===null){o=!1;continue}i[r]=c}return o?i:null}function Rb(e){return e===`set`?`set-state`:e===`persist`?`set-config`:`set-state/set-config`}const zb={to:cx(`set`)},Bb={to:cx(`persist`)},Vb={from:lx(`set`)},Hb={from:lx(`persist`)},Ub={min:mx(),max:mx(),by:mx()},Wb={int:dx()},Gb={cycle:ux(`set`)},Kb={to:cx(`dual`)},qb={from:lx(`dual`)},Jb={cycle:ux(`dual`)},Yb={cycle:ux(`persist`)},Xb={removeSegment:fx(`removeSegment`)},Zb={insertSegment:fx(`insertSegment`),anchor:fx(`anchor`),relation:px()},Qb={insertSegmentFrom:lx(`persist`),anchor:fx(`anchor`),relation:px()},$b={ok:e=>e.min<e.max,issue:e=>({field:`min`,message:`min (${e.min}) must be less than max (${e.max})`})},ex={ok:e=>e.by!==0,issue:()=>({field:`by`,message:`by must be a non-zero integer (the per-click increment; negative steps down)`})};function tx(e,t,n=[],r){let i=Object.keys(t),a=r??i,o=Ib[e].map(([e])=>e),s=(e,n,r)=>gs(e,t,n,r),c=js(t);return{detect:a,allowed:[...o,...i],label:i.join(`/`),json:{type:`object`,properties:{...Object.fromEntries(o.map(e=>[e,{type:`string`}])),...c.properties},required:[...o,...c.required??[]],additionalProperties:!1},parse:n.length?ws(s,...n):s}}const nx=[tx(`set`,zb),tx(`set`,Vb),tx(`set`,Ub,[$b,ex]),tx(`set`,Wb),tx(`set`,Gb)],rx=[tx(`persist`,Bb),tx(`persist`,Hb),tx(`persist`,Ub,[$b,ex]),tx(`persist`,Yb),tx(`persist`,Xb),tx(`persist`,Zb,[],[`insertSegment`]),tx(`persist`,Qb,[],[`insertSegmentFrom`])],ix=[tx(`dual`,Kb),tx(`dual`,qb),tx(`dual`,Ub,[$b,ex]),tx(`dual`,Jb)];function ax(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 ox(e){let t=ax(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 sx(e,t,n,r,i){let a=Lb(e,t,n,r),o=i.filter(e=>e.detect.some(e=>e in n));if(o.length!==1)return Z(e,t,`${ox(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 cx(e){let t=Rb(e);return{required:!0,json:{type:`string`},parse:(n,r,i,a)=>Fb(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 lx(e){let t=Rb(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 ux(e){let t=Rb(e);return{required:!0,json:{type:`array`,items:{type:`string`,minLength:1},minItems:2,uniqueItems:!0},parse:(n,r,i,a)=>{let o=a[i],s=`${r}.${i}`;if(!Array.isArray(o)||o.some(e=>typeof e!=`string`)){Z(n,s,`cycle must be an array of strings (the enumerated values a click steps through), got ${ms(o)}`);return}let c=o;if(c.length<2){Z(n,s,`cycle needs at least two members (one member has no successor — use a literal "to")`);return}let l=c.some(e=>e===``),u=c.filter(e=>e.includes(`/`));if(l){Z(n,s,`cycle members must be non-empty — an empty value cannot be delivered on the ${t} wire`);return}if(u.length>0){Z(n,s,`cycle member(s) ${u.map(e=>`"${e}"`).join(`, `)} contain "/" — ${e} values must be slash-free`);return}if(new Set(c).size!==c.length){Z(n,s,`cycle members must be unique — the successor of a duplicated member is ambiguous`);return}return c}}}function dx(){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 fx(e){return{required:!0,json:{type:`string`},parse:(t,n,r,i)=>{let a=cs(t,n,i,r);if(a===null)return;let o=`${n}.${r}`;if(a===``){Z(t,o,`${e} must be non-empty (a segment name)`);return}if(a.includes(`/`)||a.includes(`:`)){Z(t,o,`${e} "${a}" contains "/" or ":" — segment names in a layout op must be free of both (the click wire's own delimiter and layout-ops.ts's op-token delimiter)`);return}return a}}}function px(){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 mx(){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 hx={noun:`look key`,fields:{hueShift:Ds(),chromaScale:Ds({min:0}),lightnessScale:Ds(),lightnessShift:Ds()}};function gx(e,t){if(!ps(t))return e.issues.push({path:`looks`,message:`looks must be an object mapping look names to adaptation objects, got ${ms(t)}`,line:W(e.source,[`looks`])}),{};let n={};for(let[r,i]of Object.entries(t)){if(r===``||r.includes(`/`)){e.issues.push({path:`looks.${r}`,message:`look name ${JSON.stringify(r)} must be non-empty and slash-free — a look picker writes the name on the set-state wire, which rejects empty values and splits on "/"`,line:W(e.source,[`looks`,r])});continue}let t=hs(e,hx,`looks.${r}`,i);t!==null&&(n[r]={...kn,...t})}return n}const _x={noun:`preset key`,fields:{root:{required:!1,json:{$ref:`#/definitions/RootFragment`},parse:(e,t,n,r)=>r[n]===void 0?void 0:Vl(e,`${t}.${n}`,r[n])},globals:{required:!1,json:yc(),parse:(e,t,n,r)=>r[n]===void 0?void 0:vc(e,`${t}.${n}`,r[n])}}};function vx(e,t){if(!ps(t))return e.issues.push({path:`presets`,message:`presets must be an object mapping preset names to config fragments, got ${ms(t)}`,line:W(e.source,[`presets`])}),{};let n={};for(let[r,i]of Object.entries(t)){if(r===``||r.includes(`/`)||/[\n\r]/.test(r)){e.issues.push({path:`presets.${r}`,message:`preset name ${JSON.stringify(r)} must be non-empty, slash-free, and newline-free — a preset picker writes the name on the set-state wire (which rejects empty values and splits on "/"), and edit mode splices it into a synthesized template string`,line:W(e.source,[`presets`,r])});continue}let t=hs(e,_x,`presets.${r}`,i);t!==null&&(n[r]=t)}return n}function yx(e,t){if(t===void 0)return{};if(!ps(t))return e.issues.push({path:`helpers`,message:`helpers must be an object, got ${ms(t)}`,line:W(e.source,[`helpers`])}),{};let n=Object.create(null);for(let[r,i]of Object.entries(t)){if(typeof i!=`string`){e.issues.push({path:`helpers.${r}`,message:`helpers.${r} must be a string template body, got ${G(i)}`,line:W(e.source,[`helpers`,r])});continue}n[r]=i}return n}const bx=new Map,xx=new Map;function Sx(e){let t=Cx(e);if(t===null)throw Error(`Palette "${e}" (resolved "${va(e)}") did not resolve in the theme registry — allowed names and the registry are inconsistent`);return t}function Cx(e){let t=va(e),n=bx.get(t);if(n!==void 0)return n;let r=ar(t);return r===null?null:(bx.set(t,r),r)}function wx(e,t){let n=`${e.name} ${t.hueShift} ${t.chromaScale} ${t.lightnessScale} ${t.lightnessShift}`,r=xx.get(n);if(r!==void 0)return r;let i=pr(e,t);return xx.set(n,i),i}function Tx(e){let t=Cx(e);return t===null?null:{kind:`decided`,name:e,value:t}}function Ex(e,t){let n=Tx(e);return n===null?(t(`globals.palette rendered "${ya}": "${e}" names no installed theme`),Ox()):n}function Dx(e,t,n){return Ea(e,t,n,Ox(),Tx)}function Ox(){return Tx(ya)}function kx(e){return Da(Dx(void 0,null,e),()=>ya,Ox).value}const Ax=new Map;function jx(e,t,n){Ax.set(e,{permanent:!0,resolve:t,paletteOf:n})}jx(`themes`,()=>Sa(),e=>Sx(e)),jx(`styles`,()=>Ma),jx(`progressions`,()=>Wa),jx(`charsets`,()=>Fa),jx(`colorCompatibilities`,()=>za);function Mx(e){return new Map([[`looks`,{members:Object.keys(e.looks),paletteOf:(t,n)=>wx(n,e.looks[t])}],[`presets`,{members:Av(e.presets)}]])}function Nx(e){return[...new Set([...Ax.keys(),...e.keys()])]}function Px(e,t){if(typeof e!=`string`)return{members:e};let n=t.get(e);if(n)return n;let r=Ax.get(e);if(r)return{members:r.resolve(),paletteOf:r.paletteOf};throw Error(`unknown option domain "${e}" (have: ${Nx(t).join(`, `)})`)}const Fx={gitTaculous:`gitaculous`};function Ix(e,t){let n=new Map;for(let e of Object.keys(t)){let t=cl(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 Lx(e,t){t.globals.look!==void 0&&!Ta(t.globals.look)&&!Object.prototype.hasOwnProperty.call(t.looks,t.globals.look)&&e.issues.push({path:`globals.look`,message:`globals.look "${t.globals.look}" does not match any declared look (have: ${Object.keys(t.looks).join(`, `)})`,line:W(e.source,[`globals`,`look`])}),t.globals.preset!==void 0&&!Object.prototype.hasOwnProperty.call(t.presets,t.globals.preset)&&e.issues.push({path:`globals.preset`,message:`globals.preset "${t.globals.preset}" does not match any declared preset (have: ${Object.keys(t.presets).join(`, `)})`,line:W(e.source,[`globals`,`preset`])}),Ix(e,t.presets);let n=Mx(t);for(let[r,i]of Object.entries(t.actions))!(`set`in i)||!(`from`in i)||typeof i.from!=`string`||Nx(n).includes(i.from)||e.issues.push({path:`actions.${r}.from`,message:`actions.${r} from: references unknown option domain "${i.from}" (have: ${Nx(n).join(`, `)})`,line:W(e.source,[`actions`,r,`from`])});for(let[n,r]of Object.entries(t.actions)){if(!wb(r))continue;let i=r[Cb];Vx(t,i)||e.issues.push({path:`actions.${n}.${Cb}`,message:`actions.${n} ${Cb}: "${i}" is not a declared state key — a dual action's selector must name a { kind: "state", key: "${i}" } variable, or the destination can never change`,line:W(e.source,[`actions`,n,Cb])})}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&&Eb(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=Rv(i);if(o===null){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" is not a config globals field (have: ${Cc().join(`, `)}), a "segments.<name>.palette" target, or a "presets.<name>.root" target`,line:W(e.source,[`actions`,n,a])});continue}let s=Rx.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`){zx(e,t,n,a,i,o.preset,r);continue}if(o.scope===`segment-palette`){if(!Object.prototype.hasOwnProperty.call(t.segments,o.segment)){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" names segment "${o.segment}" which is not declared (have segments: ${Object.keys(t.segments).join(`, `)})`,line:W(e.source,[`actions`,n,a])});continue}`min`in r&&e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" is a segment palette target and cannot use a bounded stepper (min/max/by) — use "to", "from", or "cycle" instead`,line:W(e.source,[`actions`,n,a])})}}let r=Hx(t),i=Object.entries(t.segments).filter(([,e])=>Xh(e.template)).map(([e])=>e),a=(t,n,r)=>{db(t)>1&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${Ty}" ${db(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}),fb(t)&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${Ty}" 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}),o(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 a=new Map;for(let e of Xo(t))e.kind===`segment`&&a.set(e.name,(a.get(e.name)??0)+1);for(let t of i)(a.get(t)??0)>1&&e.issues.push({path:n,message:`segment "${t}" hosts a {{ menu }} and is placed in the layout more than once — a menu's open-state is keyed by segment name, so the copies would share one state (clicking one would toggle both). Give each placement its own named segment.`,line:r})};function o(e,t=!1){return e.kind===`segment`?!1:t&&e.distribution!==void 0||e.children.some(n=>o(n,t||Jo[e.direction]===`cell`))}let s=(n,i,a)=>{for(let[o,s]of $o(n,i))if(o.when!==void 0&&(Jx(e,`${s}.when`,o.when,r,{line:a}),qx(e,`${s}.when`,o.when,a)),o.kind===`segment`&&!cb(o.name)&&!Object.prototype.hasOwnProperty.call(t.segments,o.name)){let t=Fx[o.name],n=t===void 0?``:` (the built-in segment "${o.name}" was renamed to "${t}" — update this reference)`;e.issues.push({path:i,message:`${i} entry "${o.name}" does not match any declared segment${n}`,line:a})}},c=Yx(e.source);s(Hs(t.root),c,W(e.source,[c]));for(let[n,r]of Object.entries(t.presets)){if(r.root===void 0)continue;let t=`presets.${n}.root`,i=W(e.source,[`presets`,n,`root`]);s(Us(r.root),t,i)}let l=new Map([[`root`,Hs(t.root)]]);for(let e of Av(t.presets)){let{node:n,path:r}=Nv(t,e);l.set(r,n)}for(let[t,n]of l)a(n,t,W(e.source,t.split(`.`)));for(let[n,i]of Object.entries(t.variables))Wx(e,`variables.${n}`,i,r);for(let[n,i]of Object.entries(t.segments)){if(i.vars)for(let[t,a]of Object.entries(i.vars))Wx(e,`segments.${n}.vars.${t}`,a,r,n);for(let a of[`template`,`bg`,`fg`,`when`]){let o=i[a];if(typeof o==`string`){Jx(e,`segments.${n}.${a}`,o,r,{segCtx:n});for(let r of fg(o))Object.prototype.hasOwnProperty.call(t.actions,r)||e.issues.push({path:`segments.${n}.${a}`,message:`${a} references unknown action "${r}"`,line:W(e.source,[`segments`,n,a])});for(let r of mg(o))Object.prototype.hasOwnProperty.call(t.actions,r)||e.issues.push({path:`segments.${n}.${a}`,message:`${a} references unknown action "${r}" (in a picker, menu or carousel)`,line:W(e.source,[`segments`,n,a])})}}}for(let[n,i]of Object.entries(t.variables))Gx(e,`variables.${n}`,i,r);for(let[n,i]of Object.entries(t.segments))if(i.vars)for(let[t,a]of Object.entries(i.vars))Gx(e,`segments.${n}.vars.${t}`,a,r,n)}const Rx=[`removeSegment`,`insertSegment`,`insertSegmentFrom`];function zx(e,t,n,r,i,a,o){let s=`actions.${n}.${r}`,c=W(e.source,[`actions`,n,r]);if(!Av(t.presets).includes(a)){e.issues.push({path:s,message:`actions.${n}: "${i}" names preset "${a}" which is not declared (have: ${Av(t.presets).join(`, `)})`,line:c});return}if(r===`reset`)return;let l=`removeSegment`in o,u=`insertSegment`in o,d=`insertSegmentFrom`in o;if(!l&&!u&&!d){e.issues.push({path:s,message:`actions.${n}: "${i}" is a "presets.<name>.root" target and can only be paired with "removeSegment", "insertSegment", or "insertSegmentFrom" (not "to"/"from"/"cycle"/bounded — those have no meaning as a tree op)`,line:c});return}let f=e=>!Object.prototype.hasOwnProperty.call(t.segments,e);l&&`removeSegment`in o&&f(o.removeSegment)&&e.issues.push({path:s,message:`actions.${n}: removeSegment "${o.removeSegment}" is not a declared segment (have: ${Object.keys(t.segments).join(`, `)})`,line:c}),u&&`insertSegment`in o&&(f(o.insertSegment)&&e.issues.push({path:s,message:`actions.${n}: insertSegment "${o.insertSegment}" is not a declared segment (have: ${Object.keys(t.segments).join(`, `)})`,line:c}),f(o.anchor)&&e.issues.push({path:s,message:`actions.${n}: anchor "${o.anchor}" is not a declared segment (have: ${Object.keys(t.segments).join(`, `)})`,line:c})),d&&`insertSegmentFrom`in o&&f(o.anchor)&&e.issues.push({path:s,message:`actions.${n}: anchor "${o.anchor}" is not a declared segment (have: ${Object.keys(t.segments).join(`, `)})`,line:c})}function Bx(e){return[...Object.values(e.variables),...Object.values(e.segments).flatMap(e=>Object.values(e.vars??{}))].filter(e=>e.kind===`state`)}function Vx(e,t){return Bx(e).some(e=>e.kind===`state`&&e.key===t)}function Hx(e){let t=new Set,n=new Set,r=(e,r)=>{t.add(e),Ux(r)&&n.add(e)};for(let[t,n]of Object.entries(e.variables))r(t,n);for(let[t,n]of Object.entries(e.segments))for(let[e,i]of Object.entries(n.vars??{}))r(`${t}.${e}`,i);return{names:t,documents:n}}function Ux(e){return(e.kind===`shell`||e.kind===`file`)&&ts(e.parse)===`json`}function Wx(e,t,n,r,i){n.kind===`template`&&Jx(e,`${t}.template`,n.template,r,{segCtx:i}),rs(n)&&n.cache&&`key`in n.cache&&Jx(e,`${t}.cache.key`,n.cache.key,r,{segCtx:i})}function Gx(e,t,n,r,i){if(rs(n)&&n.cache&&`depends_on`in n.cache)for(let a=0;a<n.cache.depends_on.length;a++){let o=n.cache.depends_on[a];if(r.names.has(o))continue;let s=i===void 0?void 0:`${i}.${o}`,c=s!==void 0&&r.names.has(s)?` (segment-local vars are namespaced — write "${s}")`:``;e.issues.push({path:`${t}.cache.depends_on[${a}]`,message:`cache.depends_on references unknown variable "${o}"${c}`,line:W(e.source,[...t.split(`.`),`cache`,`depends_on`])})}}const Kx=Fd({fromString:e=>e});function qx(e,t,n,r){try{Kx.parse(n)}catch(n){e.issues.push({path:t,message:`Template parse error in ${t}: ${n.message}`,line:r})}}function Jx(e,t,n,r,i){for(let a of ug(n)){if(hg(a,r))continue;let n=i?.segCtx===void 0?void 0:`${i.segCtx}.${a}`,o=n!==void 0&&hg(n,r)?` (segment-local vars are namespaced — write ".${n}")`:``;e.issues.push({path:t,message:`Template references unknown variable ".${a}"${o}`,line:i?.line??W(e.source,t.split(`.`))})}}function Yx(e){try{let t=Ze.default.parse(e);if(ps(t)&&`root`in t)return`root`}catch{}return`layout`}function Xx(e,t){let{graph:n,nodeInfo:r}=Zx(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 Zx(e){let t=new Set(Object.keys(e.variables)),n=new Map;for(let t of Object.keys(e.variables))n.set(t,{declarationPath:`variables.${t}`,linePathParts:[`variables`,t]});for(let[r,i]of Object.entries(e.segments))if(i.vars)for(let e of Object.keys(i.vars)){let i=`${r}.${e}`;t.add(i),n.set(i,{declarationPath:`segments.${r}.vars.${e}`,linePathParts:[`segments`,r,`vars`,e]})}let r=new Map;for(let e of t)r.set(e,new Set);let i=(e,n)=>{for(let i of ug(n)){if(t.has(i)){r.get(e).add(i);continue}let n=i.split(`.`)[0];n!==i&&t.has(n)&&r.get(e).add(n)}},a=(e,n)=>{if(n.kind===`template`&&i(e,n.template),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 Qx=[`json5`,`json`];function $x(e){try{return r.statSync(e,{throwIfNoEntry:!1})===void 0?`absent`:`present`}catch(t){return{path:e,error:t.message}}}function eS(e){return e===`~`||e.startsWith(`~/`)||e.startsWith(`~\\`)?f.homedir()+e.slice(1):e}function tS(e,t,n){if(n!==void 0)return[n];let r=t??process.cwd();return[...new Set([...e?Qx.map(t=>c.join(e,`.cc-candybar.${t}`)):[],...Qx.map(e=>c.join(r,`.cc-candybar.${e}`)),...Qx.map(e=>`${nS()}.${e}`)])]}function nS(){let e=process.env.XDG_CONFIG_HOME??c.join(f.homedir(),`.config`);return c.join(e,`cc-candybar`,`config`)}function rS(e,t,n){let r=[];for(let i of tS(e,t,n)){let e=$x(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 iS(e,t,n){let r=rS(e,t,n);return r.kind===`default`?`${nS()}.${Qx[0]}`:r.path}function aS(e){return oS(e).join(`
156
- `)||null}function oS(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 sS(e,t){let n=tS(e,t).filter(e=>$x(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 cS(e,t,n){let r=e===null?lS:uS(e,t,n);return{...r,config:Ks(r.raw,t)}}const lS={raw:{},source:``,warnings:[]};function uS(e,t,n){let i=r.readFileSync(e,`utf-8`);return{source:i,...pS(e,i,n,_l(t))}}function dS(e,t=`<config>`,n=``,r=new Set(Sa())){let i=[],a={source:n,issues:i,allowedPalettes:r,groups:[]};if(Lx(a,e),Xx(a,e),i.length>0)throw new Ho(t,i);return my(xb(e))}function fS(e,t,n=new Set(Sa()),r=mS){return pS(e,t,n,r).raw}function pS(e,t,n,r){let i=hS(e,t),a=Go(e,t),o=a===null?[]:[a],s=[],c={source:t,issues:s,allowedPalettes:n??new Set(Sa()),groups:[]};if(!ps(i))throw new Ho(e,[{path:``,message:`Config root must be an object, got ${ms(i)}`}],o);let l=gS(c,i,r);if(s.length>0)throw new Ho(e,s,o);return{raw:l,warnings:o}}const mS=new Set;function hS(e,t){try{return Ze.default.parse(t)}catch(t){let n=t;throw new Ho(e,[{path:``,message:`JSON5 syntax error: ${n.message}`,line:n.lineNumber,col:n.columnNumber}])}}function gS(e,t,n){for(let n of Object.keys(t))_S.has(n)||e.issues.push({path:n,message:`Unknown top-level key "${n}". Expected one of: ${[..._S].join(`, `)}`,line:W(e.source,[n])});let r={};return t.globals!==void 0&&(r.globals=_c(e,`globals`,t.globals)),t.variables!==void 0&&(r.variables=Lc(e,`variables`,t.variables)),t.segments!==void 0&&(r.segments=vl(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.
155
+ `,Zv=`${fl}live`,Qv=[`☐ live`,`☑ live`],$v=`${fl}done`,ey={variable:Zv,key:Zv,member:`open`},ty=`and ${nc(ig)} (not ${nc(ey)})`,ny=`{{ ${ty} }}`;function ry(e,t){return`{{ if ${ty} }}${e}{{ else }}${t}{{ end }}`}const iy=`{{ and ${nc(ig)} .preset.customized }}`,ay=hl;function oy(e){return`${fl}addable.${e}`}function sy(e){let t=Object.keys(e.segments).filter(e=>!ay(e)),n=new Map;for(let r of Pv(e.presets)){let{node:i}=Lv(e,r),a=jv(i);n.set(oy(r),{members:t.filter(e=>!a.has(e))})}return n}function cy(e,t,n){return n.segments[e]={template:t,when:ag},{kind:`segment`,name:e}}function ly(e,t,n,r){let i=`${fl}${e}.remove.${ll(n)}`;return r.actions[i]={persist:t,removeSegment:n},`{{ if ${nc(ig)} }}{{ action "${i}" "🚫" }}{{ end }}`}const uy=`${fl}label:`;function dy(e){return e.startsWith(uy)?e.slice(uy.length):e.startsWith(`edit.`)?void 0:e}function fy(e,t){let n=`${uy}${e}`;return t.segments[n]={template:`{{ "${$s(e)}" }}`,when:ny},{kind:`segment`,name:n}}function py(e,t,n,r,i,a,o){let s=`${fl}${e}.insert.${n}`,c=`${fl}${e}.insertSeg.${n}`;o.actions[s]={persist:t,insertSegmentFrom:r,anchor:i,relation:a};let l=Fh(s),u=Ih(c,s,void 0),d=zh(u),f=Rh(u,l);return o.variables[u]=ic(u,Ys),o.variables[d]={kind:`state`,key:d,default:`0`},o.actions[f]=ac(u,l),o.actions[d]={set:d,int:!0},{host:c,template:`{{ $m := menu "${s}" "✚" "✕" }}{{ if ${nc({variable:u,key:u,member:l})} }}{{ $m }}{{ else }}{{ fg (${`readableOn (color "success") (bgOf) ${Qi}`}) $m }}{{ end }}`}}function my(e,t,n,r,i,a){let o=[],s=e.children.findIndex(e=>e.kind===`segment`&&!ay(e.name)),c=e=>my(e,t,n,r,i,a);for(let[l,u]of e.children.entries()){if(u.kind===`container`){o.push(c(u));continue}let d=Yo(u,c);if(ay(u.name)){o.push(d);continue}let f=e=>py(t,n,String(a.n++),r,u.name,e,i),p=l===s?[f(`before`)]:[],m=f(`after`),h=ly(t,n,u.name,i),g={kind:`container`,direction:`horizontal`,children:[...p.map(e=>cy(e.host,e.template,i)),{...fy(u.name,i),trail:h},{...d,when:ry(`false`,u.when??`true`),trail:h},cy(m.host,m.template,i)]};o.push(e.direction===`vertical`?{kind:`container`,direction:`horizontal`,children:[g]}:g)}return{...e,children:o,...e.when!==void 0&&{when:ry(`true`,e.when)}}}function hy(e,t,n,r,i,a,o){let s=`${fl}${n}.resetLayout`,c=`${fl}${n}.customized`;i.actions[s]={reset:r};let l=$s(t);return i.segments[c]={template:`{{ action "${s}" "↺ ${l} customized" }}`,when:iy},{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[a,{kind:`segment`,name:c}]},gy(e,o)]}}function gy(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),gy(n,t)]}:{...e,children:[...e.children,t]}}function _y(e,t,n,r,i){let{node:a}=Lv(e,t),o=Vv(t),s=oy(t),c=ll(t);return hy(my(a,c,o,s,n,{n:0}),t,c,o,n,r,i)}function vy(e){let t={variables:{},actions:{},segments:{}},n=Gv(`${fl}help`,Jv,[ig],t);t.variables[Zv]=ic(Zv,Ys),t.actions[Zv]=ac(Zv,ey.member),t.segments[Zv]={template:rc(Zv,...Qv),when:ag};let r={kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:Zv},n]};t.segments[$v]={template:`{{ action "${ng}" "✎ done" }}`,when:ag};let i={kind:`segment`,name:$v},a={...e.presets},o=[];for(let n of Pv(e.presets)){let s=_y(e,n,t,i,r);o.push(s),a[n]={...Iv(e.presets,n),root:s}}let s=Ov(t,o,e);return{...e,variables:{...s,...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:a}}const yy={socket:`TMUX`,pane:`TMUX_PANE`,truecolor:`CLAUDE_CODE_TMUX_TRUECOLOR`};function by(e){let t=e[yy.socket]??``,n=e[yy.pane]??``;if(t===``||n===``)return null;let r=e[yy.truecolor]??``;return{socket:t.split(`,`)[0],pane:n,truecolor:r===``?null:r}}const xy=yy.truecolor,Sy=[{name:`tmuxTruecolor`,label:`tmux truecolor`,probe:({tmux:e,claudeSettingsEnv:t})=>{switch(e.kind){case`unreported`:return{ok:!1,reason:"the client reported no tmux facts — re-run `cc-candybar install` to stage a current client"};case`outside`:return{ok:!0};case`inside`:{if(e.termfeatures.kind===`failed`)return{ok:!1,reason:`tmux could not be asked: ${e.termfeatures.reason}`};if(!e.termfeatures.value.includes(`RGB`)||e.hint.truecolor!==null)return{ok:!0};let n=t[xy];return typeof n==`string`&&n!==``?{ok:!1,reason:`${xy} is set in ~/.claude/settings.json — restart Claude Code to apply`}:{ok:!1,reason:`Claude Code renders the bar in 256 colours inside tmux`,fix:{kind:`claude-settings-env`,name:xy,value:`1`}}}}}}];function Cy(e){return Sy.map(t=>({check:t,verdict:t.probe(e)}))}function wy(e){return Sy.find(t=>t.name===e)}function Ty(e){let t=`settings.doctor.${e}.`;return{verdict:`${t}verdict`,reason:`${t}reason`,fixable:`${t}fixable`}}function Ey(e){return e.flatMap(({check:e,verdict:t})=>{let n=Ty(e.name);return t.ok?[{key:n.verdict,value:`ok`},{key:n.reason,value:``},{key:n.fixable,value:Ja}]:[{key:n.verdict,value:`failed`},{key:n.reason,value:t.reason},{key:n.fixable,value:t.fix===void 0?Ja:qa}]})}const Dy={copySession:{copy:`{{ .session.id }}`},openProject:{open:`{{ .project_dir }}`},openTranscript:{open:`{{ .transcript_path }}`}};function Oy(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(Dy).map(([t,n])=>[`${e}${t}`,n]))}}const ky=`${pl}menu`,Ay=rg,jy=`${pl}edit`,My=`${pl}close`,Ny=`${pl}toolbar`,Py=Oy(pl),Fy=`${pl}persist`,Iy=`${pl}config`,Ly=Fy,Ry={variable:ky,key:ky,member:Ay},zy={variable:Iy,key:Iy,member:Ay},By=`${pl}tools`,Vy={variable:By,key:By,member:Ay},Hy=[{seg:`${pl}undo`,depth:`undo`,action:{undo:!0},display:`↶ undo`},{seg:`${pl}redo`,depth:`redo`,action:{redo:!0},display:`↷ redo`}],Uy=e=>`${pl}history.${e}`,Wy=`${pl}doctor`,Gy=`${Wy}.run`,Ky=e=>`${Wy}.fix.${e}`,qy=e=>`${Wy}.${e}`,Jy=`${pl}help.persist`,Yy=`${pl}pickers`,Xy=[`{{ themePreview }}`],Zy=[{name:`preset`,...Cv.preset,glyph:`▦`,domain:`presets`,beneath:[`{{ layoutPreview }}`]}],Qy=[{name:`theme`,...Cv.theme,glyph:`🎨`,domain:`themes`,beneath:Xy},{name:`look`,...Cv.look,glyph:`◐`,domain:`looks`,beneath:Xy},{name:`style`,...Cv.style,glyph:`✦`,domain:`styles`,beneath:[]},{name:`progression`,...Cv.progression,glyph:`🎼`,domain:`progressions`,beneath:[`{{ layoutPreview }}`]},{name:`charset`,...Cv.charset,glyph:`🔣`,domain:`charsets`,beneath:[]},{name:`colorCompatibility`,...Cv.colorCompatibility,glyph:`🌈`,domain:`colorCompatibilities`,beneath:[]}],$y={name:`wrap`,...Cv.autoWrap},eb={name:`padding`,...Cv.padding},tb=`${pl}${$y.name}`,nb=`${pl}${eb.name}`,rb=[...Zy,...Qy];new Set([...rb,$y,eb].flatMap(e=>[e.sessionKey,e.configKey]));const ib=e=>`${pl}${e}`,ab=e=>`${pl}apply.${e}`,ob=e=>`${pl}reset.${e}`,sb=e=>`${pl}carousel.${e}`,cb=(e,t)=>`${sb(e)}.${t}`,lb=Lh(Yy),ub=e=>({variable:lb,key:lb,member:Fh(ab(e.name))});function db(e){return ec(ib(e.name),ub(e),{kind:`container`,direction:`vertical`,children:[{kind:`segment`,name:sb(e.name)},...e.beneath.map((t,n)=>({kind:`segment`,name:cb(e.name,n)}))]},`drop`)}function fb(e){return e===ky}function pb(e){let t={kind:`segment`,name:ky};if(e.kind===`container`&&e.direction===`vertical`){let[n,...r]=e.children;return e.when===void 0&&n!==void 0?{...e,children:[pb(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 mb(e){return hb(e)>0?e:pb(e)}function hb(e){let t=0;for(let n of Xo(e))n.kind===`segment`&&fb(n.name)&&(t+=1);return t}function gb(e,t=!1){let n=t||e.when!==void 0;return e.kind===`segment`?n&&fb(e.name)||e.opens!==void 0&&gb(e.opens.body,!0):e.children.some(e=>gb(e,n))}function _b(e,t){return e.kind===`segment`?fb(e.name)?ec(e.name,Ry,{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:Ny},{kind:`segment`,name:Fy},t,...Zy.map(db),ec(Iy,zy,{kind:`container`,direction:`horizontal`,children:[...Qy.map(db),{kind:`segment`,name:tb},{kind:`segment`,name:nb}]},`drop`),ec(By,Vy,{kind:`container`,direction:`vertical`,children:[{kind:`segment`,name:Wy},...Sy.map(e=>({kind:`segment`,name:qy(e.name)}))]},`drop`),{kind:`segment`,name:jy},...Hy.map(e=>({kind:`segment`,name:e.seg}))]},`inline`):e:vb(e,t)}function vb(e,t){return{...e,children:e.children.map(e=>_b(e,t))}}function yb(e){let t={variables:{[ky]:ic(ky,Ys)},actions:{[ky]:ac(ky,Ay),[Iy]:ac(Iy,Ay),[By]:ac(By,Ay),[Gy]:{doctor:`run`},[My]:{set:Ry.key,to:Ys},[jy]:{do:[ng,My]},...Py.actions,[Fy]:{set:Ly,cycle:[Ja,qa]}},segments:{[ky]:{template:rc(ky,e,`❌`)},[Ny]:{template:Py.template},[Fy]:{template:`{{ action "${Fy}" "☐ persist?" "☑ persist?" }}`},[Iy]:{template:rc(Iy,`⚙ config ▸`,`⚙ config ▾`)},[By]:{template:rc(By,`🧰 tools ▸`,`🧰 tools ▾`)},[Wy]:{template:`{{ action "${Gy}" "🩺 doctor" }}`},[tb]:{template:`{{ action "${ab(`wrap`)}" "wrap: on" "wrap: off" }} {{ action "${ob(`wrap`)}" "↺" }}`},[nb]:{template:`{{ action "${ab(`padding`)}.down" "◀" }} padding {{ .${eb.effectiveVar} }} {{ action "${ab(`padding`)}.up" "▶" }} {{ action "${ob(`padding`)}" "↺" }}`},[jy]:{template:`{{ action "${jy}" "✎ edit" "✎ done" }}`}}};return t.variables[Ly]={kind:`state`,key:Ly,default:Ja},t.variables[Iy]=ic(Iy,Ys),t.variables[By]=ic(By,Ys),Sb(t),xb(t),bb(t),{artifacts:t,help:Gv(Jy,Yv,[Ry],t)}}function bb(e){for(let t of Hy){let n=Uy(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 xb(e){for(let t of Sy){let n=Ty(t.name),r=Ky(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[qy(t.name)]={when:`{{ ne .${n.verdict} "" }}`,template:`{{ if eq .${n.verdict} "ok" }}✓ ${t.label}{{ else }}✗ ${t.label} — {{ .${n.reason} }}{{ if eq .${n.fixable} "${qa}" }} {{ action "${r}" "[fix]" }}{{ end }}{{ end }}`}}}function Sb(e){for(let t of rb){let n=ab(t.name);e.actions[n]={set:t.sessionKey,persist:t.configKey,persistWhen:Ly,from:t.domain},e.actions[ob(t.name)]={reset:t.configKey},Cb(t,e)}e.actions[ab($y.name)]={set:$y.sessionKey,persist:$y.configKey,persistWhen:Ly,cycle:[...Ya]},e.actions[ob($y.name)]={reset:$y.configKey};for(let t of[-1,1])e.actions[`${ab(eb.name)}.${t<0?`down`:`up`}`]={set:eb.sessionKey,persist:eb.configKey,persistWhen:Ly,...Xa,by:t};e.actions[ob(eb.name)]={reset:eb.configKey}}function Cb(e,t){let n=ab(e.name),r=ub(e),i=Rh(r.key,r.member);t.variables[r.key]=ic(r.key,Ys),t.actions[i]=ac(r.key,r.member),t.segments[ib(e.name)]={template:`${e.glyph} {{ .${e.effectiveVar} }} ${rc(i,`▸`,`▾`)} {{ action "${ob(e.name)}" "↺" }}`},t.segments[sb(e.name)]={template:`{{ carousel "${n}" }}`},e.beneath.forEach((n,r)=>{t.segments[cb(e.name,r)]={template:n}})}function wb(e){e.variables[tg]=ic(tg,Ys),e.actions[ng]=ac(tg,rg)}function Tb(e){let{artifacts:t,help:n}=yb(e.globals.menuGlyph??`🍫`);wb(t);let r={...e.presets},i=[];for(let t of Pv(e.presets)){let{node:a}=Lv(e,t),o=_b(mb(a),n);i.push(o),r[t]={...Iv(e.presets,t),root:o}}let a=Ov(t,i,e);return{...e,variables:{...a,...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:r}}const Eb=[`set`,`persist`,`copy`,`open`,`reset`,`undo`,`redo`,`doctor`,`do`],Db=`persistWhen`;function Ob(e){return Db in e}function kb(e){return Ob(e)?`to`in e?[{set:e.set,to:e.to},{persist:e.persist,to:e.to}]:`from`in e?[{set:e.set,from:e.from},{persist:e.persist,from:e.from}]:`cycle`in e?[{set:e.set,cycle:e.cycle},{persist:e.persist,cycle:e.cycle}]:[{set:e.set,min:e.min,max:e.max,by:e.by},{persist:e.persist,min:e.min,max:e.max,by:e.by}]:[e]}function Ab(e){return`from`in e||`int`in e||`insertSegmentFrom`in e}function jb(e,t){if(t===void 0)return{};if(!ps(t))return Z(e,`actions`,`actions must be an object, got ${ms(t)}`),{};let n=Object.create(null);for(let[r,i]of Object.entries(t)){let t=Mb(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 Mb(e,t,n){if(!ps(n))return Z(e,t,`${t} must be an action object, got ${ms(n)}`),null;if(`persistWhen`in n)return dx(e,t,n,`dual`,cx);let r=Eb.filter(e=>e in n);return r.length===1?Nb[r[0]](e,t,n):(Z(e,t,`action must declare exactly one of: ${Eb.join(`, `)}${r.length>1?` (found: ${r.join(`, `)})`:``}`),null)}const Nb={set:(e,t,n)=>dx(e,t,n,`set`,ox),persist:(e,t,n)=>dx(e,t,n,`persist`,sx),copy:Pb(`copy`),open:Pb(`open`),reset:Fb,undo:Ib(`undo`),redo:Ib(`redo`),doctor:Lb,do:Rb};function Pb(e){return(t,n,r)=>{for(let i of Object.keys(r))i!==e&&Z(t,`${n}.${i}`,`Unknown key "${i}" on a ${e} action. Expected only: ${e}`);let i=cs(t,n,r,e);return i===null?null:{[e]:i}}}function Fb(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=zb(e,t,`reset`,n,`reset key must be non-empty (the config globals field to clear)`,e=>`reset key "${e}" contains "/" — keys must be slash-free`);return r===null?null:{reset:r}}function Ib(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 — it steps the history of the session's config file), got ${G(r[e])}`),null)}}function Lb(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`||wy(a)===void 0?(Z(e,`${t}.check`,`doctor fix must name a check (have: ${Sy.map(e=>e.name).join(`, `)}), got ${G(a)}`),null):{doctor:`fix`,check:a}}function Rb(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 zb(e,t,n,r,i,a){let o=cs(e,t,r,n);if(o===null)return null;let s=`${t}.${n}`;return o===``?(Z(e,s,i),null):o.includes(`/`)?(Z(e,s,a(o)),null):o}const Bb={set:[[`set`,`the SessionState key to write`]],persist:[[`persist`,`the config globals field to write`]],dual:[[`set`,`the SessionState key written while persistWhen is off`],[`persist`,`the config globals field written while persistWhen is on`],[Db,`the SessionState key whose boolean value chooses the destination`]]};function Vb(e,t,n,r){let i={},a=Bb[r],o=!0;for(let[r,s]of a){if(!(r in n)){Z(e,t,`${r} is required here (${s}) — a dual-destination action declares ${a.map(([e])=>e).join(`, `)} together, plus one value source`),o=!1;continue}let c=zb(e,t,r,n,`${r} key must be non-empty (${s})`,e=>`${r} key "${e}" contains "/" — keys must be slash-free`);if(c===null){o=!1;continue}i[r]=c}return o?i:null}function Hb(e){return e===`set`?`set-state`:e===`persist`?`set-config`:`set-state/set-config`}const Ub={to:fx(`set`)},Wb={to:fx(`persist`)},Gb={from:px(`set`)},Kb={from:px(`persist`)},qb={min:vx(),max:vx(),by:vx()},Jb={int:hx()},Yb={cycle:mx(`set`)},Xb={to:fx(`dual`)},Zb={from:px(`dual`)},Qb={cycle:mx(`dual`)},$b={cycle:mx(`persist`)},ex={removeSegment:gx(`removeSegment`)},tx={insertSegment:gx(`insertSegment`),anchor:gx(`anchor`),relation:_x()},nx={insertSegmentFrom:px(`persist`),anchor:gx(`anchor`),relation:_x()},rx={ok:e=>e.min<e.max,issue:e=>({field:`min`,message:`min (${e.min}) must be less than max (${e.max})`})},ix={ok:e=>e.by!==0,issue:()=>({field:`by`,message:`by must be a non-zero integer (the per-click increment; negative steps down)`})};function ax(e,t,n=[],r){let i=Object.keys(t),a=r??i,o=Bb[e].map(([e])=>e),s=(e,n,r)=>gs(e,t,n,r),c=js(t);return{detect:a,allowed:[...o,...i],label:i.join(`/`),json:{type:`object`,properties:{...Object.fromEntries(o.map(e=>[e,{type:`string`}])),...c.properties},required:[...o,...c.required??[]],additionalProperties:!1},parse:n.length?ws(s,...n):s}}const ox=[ax(`set`,Ub),ax(`set`,Gb),ax(`set`,qb,[rx,ix]),ax(`set`,Jb),ax(`set`,Yb)],sx=[ax(`persist`,Wb),ax(`persist`,Kb),ax(`persist`,qb,[rx,ix]),ax(`persist`,$b),ax(`persist`,ex),ax(`persist`,tx,[],[`insertSegment`]),ax(`persist`,nx,[],[`insertSegmentFrom`])],cx=[ax(`dual`,Xb),ax(`dual`,Zb),ax(`dual`,qb,[rx,ix]),ax(`dual`,Qb)];function lx(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 ux(e){let t=lx(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 dx(e,t,n,r,i){let a=Vb(e,t,n,r),o=i.filter(e=>e.detect.some(e=>e in n));if(o.length!==1)return Z(e,t,`${ux(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 fx(e){let t=Hb(e);return{required:!0,json:{type:`string`},parse:(n,r,i,a)=>zb(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 px(e){let t=Hb(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 mx(e){let t=Hb(e);return{required:!0,json:{type:`array`,items:{type:`string`,minLength:1},minItems:2,uniqueItems:!0},parse:(n,r,i,a)=>{let o=a[i],s=`${r}.${i}`;if(!Array.isArray(o)||o.some(e=>typeof e!=`string`)){Z(n,s,`cycle must be an array of strings (the enumerated values a click steps through), got ${ms(o)}`);return}let c=o;if(c.length<2){Z(n,s,`cycle needs at least two members (one member has no successor — use a literal "to")`);return}let l=c.some(e=>e===``),u=c.filter(e=>e.includes(`/`));if(l){Z(n,s,`cycle members must be non-empty — an empty value cannot be delivered on the ${t} wire`);return}if(u.length>0){Z(n,s,`cycle member(s) ${u.map(e=>`"${e}"`).join(`, `)} contain "/" — ${e} values must be slash-free`);return}if(new Set(c).size!==c.length){Z(n,s,`cycle members must be unique — the successor of a duplicated member is ambiguous`);return}return c}}}function hx(){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 gx(e){return{required:!0,json:{type:`string`},parse:(t,n,r,i)=>{let a=cs(t,n,i,r);if(a===null)return;let o=`${n}.${r}`;if(a===``){Z(t,o,`${e} must be non-empty (a segment name)`);return}if(a.includes(`/`)||a.includes(`:`)){Z(t,o,`${e} "${a}" contains "/" or ":" — segment names in a layout op must be free of both (the click wire's own delimiter and layout-ops.ts's op-token delimiter)`);return}return a}}}function _x(){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 vx(){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 yx={noun:`look key`,fields:{hueShift:Ds(),chromaScale:Ds({min:0}),lightnessScale:Ds(),lightnessShift:Ds()}};function bx(e,t){if(!ps(t))return e.issues.push({path:`looks`,message:`looks must be an object mapping look names to adaptation objects, got ${ms(t)}`,line:W(e.source,[`looks`])}),{};let n={};for(let[r,i]of Object.entries(t)){if(r===``||r.includes(`/`)){e.issues.push({path:`looks.${r}`,message:`look name ${JSON.stringify(r)} must be non-empty and slash-free — a look picker writes the name on the set-state wire, which rejects empty values and splits on "/"`,line:W(e.source,[`looks`,r])});continue}let t=hs(e,yx,`looks.${r}`,i);t!==null&&(n[r]={...kn,...t})}return n}const xx={noun:`preset key`,fields:{root:{required:!1,json:{$ref:`#/definitions/RootFragment`},parse:(e,t,n,r)=>r[n]===void 0?void 0:Hl(e,`${t}.${n}`,r[n])},globals:{required:!1,json:bc(),parse:(e,t,n,r)=>r[n]===void 0?void 0:yc(e,`${t}.${n}`,r[n])}}};function Sx(e,t){if(!ps(t))return e.issues.push({path:`presets`,message:`presets must be an object mapping preset names to config fragments, got ${ms(t)}`,line:W(e.source,[`presets`])}),{};let n={};for(let[r,i]of Object.entries(t)){if(r===``||r.includes(`/`)||/[\n\r]/.test(r)){e.issues.push({path:`presets.${r}`,message:`preset name ${JSON.stringify(r)} must be non-empty, slash-free, and newline-free — a preset picker writes the name on the set-state wire (which rejects empty values and splits on "/"), and edit mode splices it into a synthesized template string`,line:W(e.source,[`presets`,r])});continue}let t=hs(e,xx,`presets.${r}`,i);t!==null&&(n[r]=t)}return n}function Cx(e,t){if(t===void 0)return{};if(!ps(t))return e.issues.push({path:`helpers`,message:`helpers must be an object, got ${ms(t)}`,line:W(e.source,[`helpers`])}),{};let n=Object.create(null);for(let[r,i]of Object.entries(t)){if(typeof i!=`string`){e.issues.push({path:`helpers.${r}`,message:`helpers.${r} must be a string template body, got ${G(i)}`,line:W(e.source,[`helpers`,r])});continue}n[r]=i}return n}const wx=new Map,Tx=new Map;function Ex(e){let t=Dx(e);if(t===null)throw Error(`Palette "${e}" (resolved "${va(e)}") did not resolve in the theme registry — allowed names and the registry are inconsistent`);return t}function Dx(e){let t=va(e),n=wx.get(t);if(n!==void 0)return n;let r=ar(t);return r===null?null:(wx.set(t,r),r)}function Ox(e,t){let n=`${e.name} ${t.hueShift} ${t.chromaScale} ${t.lightnessScale} ${t.lightnessShift}`,r=Tx.get(n);if(r!==void 0)return r;let i=pr(e,t);return Tx.set(n,i),i}function kx(e){let t=Dx(e);return t===null?null:{kind:`decided`,name:e,value:t}}function Ax(e,t){let n=kx(e);return n===null?(t(`globals.palette rendered "${ya}": "${e}" names no installed theme`),Mx()):n}function jx(e,t,n){return Ea(e,t,n,Mx(),kx)}function Mx(){return kx(ya)}function Nx(e){return Da(jx(void 0,null,e),()=>ya,Mx).value}const Px=new Map;function Fx(e,t,n){Px.set(e,{permanent:!0,resolve:t,paletteOf:n})}Fx(`themes`,()=>Sa(),e=>Ex(e)),Fx(`styles`,()=>Ma),Fx(`progressions`,()=>Wa),Fx(`charsets`,()=>Fa),Fx(`colorCompatibilities`,()=>za);function Ix(e){return new Map([[`looks`,{members:Object.keys(e.looks),paletteOf:(t,n)=>Ox(n,e.looks[t])}],[`presets`,{members:Pv(e.presets)}]])}function Lx(e){return[...new Set([...Px.keys(),...e.keys()])]}function Rx(e,t){if(typeof e!=`string`)return{members:e};let n=t.get(e);if(n)return n;let r=Px.get(e);if(r)return{members:r.resolve(),paletteOf:r.paletteOf};throw Error(`unknown option domain "${e}" (have: ${Lx(t).join(`, `)})`)}const zx={gitTaculous:`gitaculous`};function Bx(e,t){let n=new Map;for(let e of Object.keys(t)){let t=ll(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 Vx(e,t,n){t.globals.look!==void 0&&!Ta(t.globals.look)&&!Object.prototype.hasOwnProperty.call(t.looks,t.globals.look)&&e.issues.push({path:`globals.look`,message:`globals.look "${t.globals.look}" does not match any declared look (have: ${Object.keys(t.looks).join(`, `)})`,line:W(e.source,[`globals`,`look`])}),t.globals.preset!==void 0&&!Object.prototype.hasOwnProperty.call(t.presets,t.globals.preset)&&e.issues.push({path:`globals.preset`,message:`globals.preset "${t.globals.preset}" does not match any declared preset (have: ${Object.keys(t.presets).join(`, `)})`,line:W(e.source,[`globals`,`preset`])}),Bx(e,t.presets);let r=Ix(t);for(let[n,i]of Object.entries(t.actions))!(`set`in i)||!(`from`in i)||typeof i.from!=`string`||Lx(r).includes(i.from)||e.issues.push({path:`actions.${n}.from`,message:`actions.${n} from: references unknown option domain "${i.from}" (have: ${Lx(r).join(`, `)})`,line:W(e.source,[`actions`,n,`from`])});for(let[n,r]of Object.entries(t.actions)){if(!Ob(r))continue;let i=r[Db];Gx(t,i)||e.issues.push({path:`actions.${n}.${Db}`,message:`actions.${n} ${Db}: "${i}" is not a declared state key — a dual action's selector must name a { kind: "state", key: "${i}" } variable, or the destination can never change`,line:W(e.source,[`actions`,n,Db])})}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&&Ab(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=Hv(i);if(o===null){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" is not a config globals field (have: ${wc().join(`, `)}), a "segments.<name>.palette" target, or a "presets.<name>.root" target`,line:W(e.source,[`actions`,n,a])});continue}let s=Hx.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`){Ux(e,t,n,a,i,o.preset,r);continue}if(o.scope===`segment-palette`){if(!Object.prototype.hasOwnProperty.call(t.segments,o.segment)){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" names segment "${o.segment}" which is not declared (have segments: ${Object.keys(t.segments).join(`, `)})`,line:W(e.source,[`actions`,n,a])});continue}`min`in r&&e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" is a segment palette target and cannot use a bounded stepper (min/max/by) — use "to", "from", or "cycle" instead`,line:W(e.source,[`actions`,n,a])})}}let i=vg(t),a=Object.entries(t.segments).filter(([,e])=>Zh(e.template)).map(([e])=>e),o=(t,n,r)=>{hb(t)>1&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${ky}" ${hb(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}),gb(t)&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${ky}" under a \`when\` or inside a disclosure body — the menu is visible under every condition, so its placement may not be gated. Move it to an ungated position, or remove it to put the menu at its default position.`,line:r}),s(t)&&e.issues.push({path:n,message:`${n} sets "distribution" on a container inside a bar cell — everything inside a cell wears that cell's hue and tone, so it would place nothing. Set it on the row whose children are the cells (the horizontal container) or on the root, which places the rows.`,line:r});let i=new Map;for(let e of Xo(t))e.kind===`segment`&&i.set(e.name,(i.get(e.name)??0)+1);for(let t of a)(i.get(t)??0)>1&&e.issues.push({path:n,message:`segment "${t}" hosts a {{ menu }} and is placed in the layout more than once — a menu's open-state is keyed by segment name, so the copies would share one state (clicking one would toggle both). Give each placement its own named segment.`,line:r})};function s(e,t=!1){return e.kind===`segment`?!1:t&&e.distribution!==void 0||e.children.some(n=>s(n,t||Jo[e.direction]===`cell`))}let c=(n,r)=>{for(let[a,o]of Ws(n,r)){let n=W(e.source,o.split(`.`));if(a.when!==void 0&&(Yx(e,`${o}.when`,a.when,i,{line:n}),Jx(e,`${o}.when`,a.when,n)),a.kind===`segment`&&!fb(a.name)&&!Object.prototype.hasOwnProperty.call(t.segments,a.name)){let t=zx[a.name],i=t===void 0?``:` (the built-in segment "${a.name}" was renamed to "${t}" — update this reference)`;e.issues.push({path:o,message:`${r} entry "${a.name}" does not match any declared segment${i}`,line:n})}}};n.root!==void 0&&c(n.root,`root`);for(let[e,t]of Object.entries(n.presets??{}))t.root!==void 0&&c(t.root,`presets.${e}.root`);let l=new Map([[`root`,Hs(t.root)]]);for(let e of Pv(t.presets)){let{node:n,path:r}=Lv(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))Kx(e,`variables.${n}`,r,i);for(let[n,r]of Object.entries(t.segments)){if(r.vars)for(let[t,a]of Object.entries(r.vars))Kx(e,`segments.${n}.vars.${t}`,a,i,n);for(let a of[`template`,`bg`,`fg`,`when`]){let o=r[a];if(typeof o==`string`){Yx(e,`segments.${n}.${a}`,o,i,{segCtx:n});for(let r of mg(o))Object.prototype.hasOwnProperty.call(t.actions,r)||e.issues.push({path:`segments.${n}.${a}`,message:`${a} references unknown action "${r}"`,line:W(e.source,[`segments`,n,a])});for(let r of gg(o))Object.prototype.hasOwnProperty.call(t.actions,r)||e.issues.push({path:`segments.${n}.${a}`,message:`${a} references unknown action "${r}" (in a picker, menu or carousel)`,line:W(e.source,[`segments`,n,a])})}}}for(let[n,r]of Object.entries(t.variables))qx(e,`variables.${n}`,r,i);for(let[n,r]of Object.entries(t.segments))if(r.vars)for(let[t,a]of Object.entries(r.vars))qx(e,`segments.${n}.vars.${t}`,a,i,n)}const Hx=[`removeSegment`,`insertSegment`,`insertSegmentFrom`];function Ux(e,t,n,r,i,a,o){let s=`actions.${n}.${r}`,c=W(e.source,[`actions`,n,r]);if(!Pv(t.presets).includes(a)){e.issues.push({path:s,message:`actions.${n}: "${i}" names preset "${a}" which is not declared (have: ${Pv(t.presets).join(`, `)})`,line:c});return}if(r===`reset`)return;let l=`removeSegment`in o,u=`insertSegment`in o,d=`insertSegmentFrom`in o;if(!l&&!u&&!d){e.issues.push({path:s,message:`actions.${n}: "${i}" is a "presets.<name>.root" target and can only be paired with "removeSegment", "insertSegment", or "insertSegmentFrom" (not "to"/"from"/"cycle"/bounded — those have no meaning as a tree op)`,line:c});return}let f=e=>!Object.prototype.hasOwnProperty.call(t.segments,e);l&&`removeSegment`in o&&f(o.removeSegment)&&e.issues.push({path:s,message:`actions.${n}: removeSegment "${o.removeSegment}" is not a declared segment (have: ${Object.keys(t.segments).join(`, `)})`,line:c}),u&&`insertSegment`in o&&(f(o.insertSegment)&&e.issues.push({path:s,message:`actions.${n}: insertSegment "${o.insertSegment}" is not a declared segment (have: ${Object.keys(t.segments).join(`, `)})`,line:c}),f(o.anchor)&&e.issues.push({path:s,message:`actions.${n}: anchor "${o.anchor}" is not a declared segment (have: ${Object.keys(t.segments).join(`, `)})`,line:c})),d&&`insertSegmentFrom`in o&&f(o.anchor)&&e.issues.push({path:s,message:`actions.${n}: anchor "${o.anchor}" is not a declared segment (have: ${Object.keys(t.segments).join(`, `)})`,line:c})}function Wx(e){return[...Object.values(e.variables),...Object.values(e.segments).flatMap(e=>Object.values(e.vars??{}))].filter(e=>e.kind===`state`)}function Gx(e,t){return Wx(e).some(e=>e.kind===`state`&&e.key===t)}function Kx(e,t,n,r,i){n.kind===`template`&&Yx(e,`${t}.template`,n.template,r,{segCtx:i}),rs(n)&&n.cache&&`key`in n.cache&&Yx(e,`${t}.cache.key`,n.cache.key,r,{segCtx:i})}function qx(e,t,n,r,i){if(rs(n)&&n.cache&&`depends_on`in n.cache)for(let a=0;a<n.cache.depends_on.length;a++){let o=n.cache.depends_on[a];if(r.names.has(o))continue;let s=i===void 0?void 0:`${i}.${o}`,c=s!==void 0&&r.names.has(s)?` (segment-local vars are namespaced — write "${s}")`:``;e.issues.push({path:`${t}.cache.depends_on[${a}]`,message:`cache.depends_on references unknown variable "${o}"${c}`,line:W(e.source,[...t.split(`.`),`cache`,`depends_on`])})}}function Jx(e,t,n,r){try{eg.parse(n)}catch(n){e.issues.push({path:t,message:`Template parse error in ${t}: ${n.message}`,line:r})}}function Yx(e,t,n,r,i){for(let a of fg(n)){if(_g(a,r))continue;let n=i?.segCtx===void 0?void 0:`${i.segCtx}.${a}`,o=n!==void 0&&_g(n,r)?` (segment-local vars are namespaced — write ".${n}")`:``;e.issues.push({path:t,message:`Template references unknown variable ".${a}"${o}`,line:i?.line??W(e.source,t.split(`.`))})}}function Xx(e,t){let{graph:n,nodeInfo:r}=Zx(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 Zx(e){let t=new Set(Object.keys(e.variables)),n=new Map;for(let t of Object.keys(e.variables))n.set(t,{declarationPath:`variables.${t}`,linePathParts:[`variables`,t]});for(let[r,i]of Object.entries(e.segments))if(i.vars)for(let e of Object.keys(i.vars)){let i=`${r}.${e}`;t.add(i),n.set(i,{declarationPath:`segments.${r}.vars.${e}`,linePathParts:[`segments`,r,`vars`,e]})}let r=new Map;for(let e of t)r.set(e,new Set);let i=(e,n)=>{for(let i of fg(n)){if(t.has(i)){r.get(e).add(i);continue}let n=i.split(`.`)[0];n!==i&&t.has(n)&&r.get(e).add(n)}},a=(e,n)=>{if(n.kind===`template`&&i(e,n.template),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 Qx=[`json5`,`json`];function $x(e){try{return r.statSync(e,{throwIfNoEntry:!1})===void 0?`absent`:`present`}catch(t){return{path:e,error:t.message}}}function eS(e){return e===`~`||e.startsWith(`~/`)||e.startsWith(`~\\`)?f.homedir()+e.slice(1):e}function tS(e,t,n){if(n!==void 0)return[n];let r=t??process.cwd();return[...new Set([...e?Qx.map(t=>c.join(e,`.cc-candybar.${t}`)):[],...Qx.map(e=>c.join(r,`.cc-candybar.${e}`)),...Qx.map(e=>`${nS()}.${e}`)])]}function nS(){let e=process.env.XDG_CONFIG_HOME??c.join(f.homedir(),`.config`);return c.join(e,`cc-candybar`,`config`)}function rS(e,t,n){let r=[];for(let i of tS(e,t,n)){let e=$x(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 iS(e,t,n){let r=rS(e,t,n);return r.kind===`default`?`${nS()}.${Qx[0]}`:r.path}function aS(e){return oS(e).join(`
156
+ `)||null}function oS(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 sS(e,t){let n=tS(e,t).filter(e=>$x(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 cS(e,t,n){let r=e===null?lS:uS(e,t,n);return{...r,config:qs(r.raw,t)}}const lS={raw:{},source:``,warnings:[]};function uS(e,t,n){let i=r.readFileSync(e,`utf-8`);return{source:i,...pS(e,i,n,vl(t))}}function dS({config:e,raw:t,source:n},r=`<config>`,i=new Set(Sa())){let a=[],o={source:n,issues:a,allowedPalettes:i,groups:[]};if(Vx(o,e,t),Xx(o,e),a.length>0)throw new Ho(r,a);return vy(Tb(e))}function fS(e,t,n=new Set(Sa()),r=mS){return pS(e,t,n,r).raw}function pS(e,t,n,r){let i=hS(e,t),a=Go(e,t),o=a===null?[]:[a],s=[],c={source:t,issues:s,allowedPalettes:n??new Set(Sa()),groups:[]};if(!ps(i))throw new Ho(e,[{path:``,message:`Config root must be an object, got ${ms(i)}`}],o);let l=gS(c,i,r);if(s.length>0)throw new Ho(e,s,o);return{raw:l,warnings:o}}const mS=new Set;function hS(e,t){try{return Ze.default.parse(t)}catch(t){let n=t;throw new Ho(e,[{path:``,message:`JSON5 syntax error: ${n.message}`,line:n.lineNumber,col:n.columnNumber}])}}function gS(e,t,n){for(let n of Object.keys(t))_S.has(n)||e.issues.push({path:n,message:`Unknown top-level key "${n}". Expected one of: ${[..._S].join(`, `)}`,line:W(e.source,[n])});let r={};return t.globals!==void 0&&(r.globals=vc(e,`globals`,t.globals)),t.variables!==void 0&&(r.variables=Rc(e,`variables`,t.variables)),t.segments!==void 0&&(r.segments=yl(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
157
  Replace: layout: [["seg1", "seg2"], ["seg3"]]
158
158
  With: root: { v: [{ h: ["seg1", "seg2"] }, "seg3"] }
159
- Single-row example: root: { h: ["seg1", "seg2"] }`,line:W(e.source,[`layout`])}),t.root!==void 0&&(r.root=Vl(e,`root`,t.root)),t.actions!==void 0&&(r.actions=Db(e,t.actions)),t.looks!==void 0&&(r.looks=gx(e,t.looks)),t.presets!==void 0&&(r.presets=vx(e,t.presets)),t.editGlobals!==void 0&&(r.editGlobals=bc(e,`editGlobals`,t.editGlobals)),t.helpers!==void 0&&(r.helpers=yx(e,t.helpers)),Yl(e,r),Qh(e,r),og(e,r),gl(e,r,fl,`the global settings menu`),r}const _S=new Set([`globals`,`variables`,`segments`,`layout`,`root`,`actions`,`looks`,`presets`,`editGlobals`,`helpers`]);function vS(e){let t=SS(e.termCols),n=SS(e.termRows),r=CS(e.ssh),i=bS(e.tmux),a=yS(e.configEnv);return{...t!==void 0&&{termCols:t},...n!==void 0&&{termRows:n},...r!==void 0&&{ssh:r},...i!==void 0&&{tmux:i},...a!==void 0&&{configEnv:a}}}function yS(e){return typeof e==`string`&&e!==``?eS(e):void 0}function bS(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 xS=1e4;function SS(e){if(typeof e!=`number`||!Number.isFinite(e))return;let t=Math.floor(e);if(!(t<=0))return t>xS?xS:t}function CS(e){return typeof e==`boolean`?e:void 0}var wS=class extends Error{constructor(e){super(e),this.name=`ProtocolError`}};function TS(e){let t=Buffer.from(JSON.stringify(e),`utf8`),n=Buffer.alloc(4);return n.writeUInt32BE(t.length,0),Buffer.concat([n,t])}function ES(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 wS(`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 wS(e instanceof Error?e.message:String(e));e instanceof Error&&(n.cause=e),t(n);return}}}}function DS(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=ES(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(TS(t))})}async function OS(e,t,n){let r=null;try{r=await NS(Pe(),t.connectMs);let i=await DS(r,{v:3,...e},t.budgetMs);return jS(e.kind,i,n)}catch(e){return MS(e)}finally{r&&r.destroy()}}function kS(e,t){return typeof e==`string`?e:t}function AS(e){return typeof e==`number`&&Number.isInteger(e)&&e>=0?e:0}function jS(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=kS(r.error,`(no error message)`);switch(r.code){case`VERSION_MISMATCH`:return{kind:`permanent`,cause:`version_mismatch`,clientV:3,daemonV:AS(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 MS(e){if(e instanceof wS||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 NS(e,t){return new Promise((n,r)=>{let i=g.createConnection({path:e}),a=setTimeout(()=>{i.destroy(),r(Error(`CONNECT_TIMEOUT`))},t);i.once(`connect`,()=>{clearTimeout(a),n(i)}),i.once(`error`,e=>{clearTimeout(a),r(e)})})}function PS(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 FS={connectMs:50,budgetMs:150},IS={connectMs:50,budgetMs:200};function LS(e){let t=e.output;return typeof t==`string`?t:void 0}function RS(e,t,n,r){return OS({kind:`render`,hookData:e,args:t,cwd:n,...r},FS,LS)}function zS(e,t){return OS({kind:`click`,verb:e,value:t},IS,LS)}let BS=null;function VS(e){if(BS!==null)return BS;r.mkdirSync(c.dirname(e),{recursive:!0});try{BS=r.statSync(e).size}catch{BS=0}return BS}function HS(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{}BS=0}function Q(e,t){let n=`${new Date().toISOString()} [${e}] ${t}\n`;try{let e=Ke(),t=VS(e);r.appendFileSync(e,n),BS=t+Buffer.byteLength(n,`utf8`),BS>=5242880&&HS(e)}catch(e){BS=null;try{process.stderr.write(`${n}cc-candybar: daemon.log unwritable: ${e.message}\n`)}catch{}}}function US(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(`
159
+ Single-row example: root: { h: ["seg1", "seg2"] }`,line:W(e.source,[`layout`])}),t.root!==void 0&&(r.root=Hl(e,`root`,t.root)),t.actions!==void 0&&(r.actions=jb(e,t.actions)),t.looks!==void 0&&(r.looks=bx(e,t.looks)),t.presets!==void 0&&(r.presets=Sx(e,t.presets)),t.editGlobals!==void 0&&(r.editGlobals=xc(e,`editGlobals`,t.editGlobals)),t.helpers!==void 0&&(r.helpers=Cx(e,t.helpers)),Xl(e,r),$h(e,r),cg(e,r),_l(e,r,pl,`the global settings menu`),r}const _S=new Set([`globals`,`variables`,`segments`,`layout`,`root`,`actions`,`looks`,`presets`,`editGlobals`,`helpers`]);function vS(e){let t=SS(e.termCols),n=SS(e.termRows),r=CS(e.ssh),i=bS(e.tmux),a=yS(e.configEnv);return{...t!==void 0&&{termCols:t},...n!==void 0&&{termRows:n},...r!==void 0&&{ssh:r},...i!==void 0&&{tmux:i},...a!==void 0&&{configEnv:a}}}function yS(e){return typeof e==`string`&&e!==``?eS(e):void 0}function bS(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 xS=1e4;function SS(e){if(typeof e!=`number`||!Number.isFinite(e))return;let t=Math.floor(e);if(!(t<=0))return t>xS?xS:t}function CS(e){return typeof e==`boolean`?e:void 0}var wS=class extends Error{constructor(e){super(e),this.name=`ProtocolError`}};function TS(e){let t=Buffer.from(JSON.stringify(e),`utf8`),n=Buffer.alloc(4);return n.writeUInt32BE(t.length,0),Buffer.concat([n,t])}function ES(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 wS(`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 wS(e instanceof Error?e.message:String(e));e instanceof Error&&(n.cause=e),t(n);return}}}}function DS(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=ES(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(TS(t))})}async function OS(e,t,n){let r=null;try{r=await NS(Pe(),t.connectMs);let i=await DS(r,{v:3,...e},t.budgetMs);return jS(e.kind,i,n)}catch(e){return MS(e)}finally{r&&r.destroy()}}function kS(e,t){return typeof e==`string`?e:t}function AS(e){return typeof e==`number`&&Number.isInteger(e)&&e>=0?e:0}function jS(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=kS(r.error,`(no error message)`);switch(r.code){case`VERSION_MISMATCH`:return{kind:`permanent`,cause:`version_mismatch`,clientV:3,daemonV:AS(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 MS(e){if(e instanceof wS||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 NS(e,t){return new Promise((n,r)=>{let i=g.createConnection({path:e}),a=setTimeout(()=>{i.destroy(),r(Error(`CONNECT_TIMEOUT`))},t);i.once(`connect`,()=>{clearTimeout(a),n(i)}),i.once(`error`,e=>{clearTimeout(a),r(e)})})}function PS(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 FS={connectMs:50,budgetMs:150},IS={connectMs:50,budgetMs:200};function LS(e){let t=e.output;return typeof t==`string`?t:void 0}function RS(e,t,n,r){return OS({kind:`render`,hookData:e,args:t,cwd:n,...r},FS,LS)}function zS(e,t){return OS({kind:`click`,verb:e,value:t},IS,LS)}let BS=null;function VS(e){if(BS!==null)return BS;r.mkdirSync(c.dirname(e),{recursive:!0});try{BS=r.statSync(e).size}catch{BS=0}return BS}function HS(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{}BS=0}function Q(e,t){let n=`${new Date().toISOString()} [${e}] ${t}\n`;try{let e=Ke(),t=VS(e);r.appendFileSync(e,n),BS=t+Buffer.byteLength(n,`utf8`),BS>=5242880&&HS(e)}catch(e){BS=null;try{process.stderr.write(`${n}cc-candybar: daemon.log unwritable: ${e.message}\n`)}catch{}}}function US(e){let t=[];for(let n of e){let e=n.read();if(e.kind===`text`)return`# memory report from: ${n.name}\n${e.text}`;t.push(`# ${n.name}: unavailable — ${e.reason}`)}return[`# memory report: no probe answered`,...t.length>0?t:[`# no probe is known for this platform`]].join(`
160
160
  `)}function WS(e,t){return e===`darwin`?[GS(`footprint`,[`-p`,String(t)]),GS(`vmmap`,[`--summary`,String(t)])]:e===`linux`?[KS(`/proc/self/smaps_rollup`),KS(`/proc/self/status`)]:[]}function GS(e,t){return{name:`${e} ${t.join(` `)}`,read:()=>{let n=De({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}`}${qS(n.stderr)}`}}}}function KS(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 qS(e){let t=e.split(`
161
161
  `).map(e=>e.trim()).find(e=>e.length>0);return t===void 0?``:` (${t})`}const JS=`CC_CANDYBAR_RSS_LIMIT_MB`;function YS(e){let t=e[JS];if(t===void 0)return 512;let n=/^\d+$/.test(t)?Number(t):NaN;if(!Number.isSafeInteger(n)||n<=0)throw Error(`${JS} must be a positive integer (MB), got ${JSON.stringify(t)}`);return n}function XS(e){return YS(e)*2}const ZS=1024*1024;function QS(e){return YS(e)*ZS}const $S={memoryReport:{prefix:`memory-`,suffix:`.txt`},heapSnapshot:{prefix:`heap-`,suffix:`.heapsnapshot`}};function eC(e,t,n){let{prefix:r,suffix:i}=$S[t];return c.join(e,`${r}${n}${i}`)}function tC(e){for(let t of Object.keys($S)){let{prefix:n,suffix:r}=$S[t];if(e.startsWith(n)&&e.endsWith(r))return t}return null}function nC(e){let t=e.rssLimitBytes??512*ZS,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 rC(e.log,`memory report`,()=>{let t=eC(e.snapshotDir,`memoryReport`,o);e.writeMemoryReport(t,e.captureMemoryReport()),e.log(`info`,`memory report written: ${t}`)}),rC(e.log,`heap snapshot`,()=>{let t=eC(e.snapshotDir,`heapSnapshot`,o);e.log(`info`,`heap snapshot written: ${e.writeHeapSnapshot(t)}`)}),rC(e.log,`artifact rotation`,()=>{aC(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 rC(e,t,n){try{n()}catch(n){e(`warn`,`${t} failed: ${n.message}`)}}function iC(e){let t=e.slice(e.lastIndexOf(`/`)+1),n=tC(t);if(n===null)return t;let{prefix:r,suffix:i}=$S[n];return t.slice(r.length,t.length-i.length)}function aC(e,t,n){let r=new Map;for(let t of e){let e=iC(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 oC(e,t,n={}){let i=Ne();return{now:()=>Date.now(),pid:process.pid,snapshotDir:i,log:Q,memoryBytes:()=>{let e=process.memoryUsage();return{rss:e.rss,heapTotal:e.heapTotal}},captureMemoryReport:()=>US(WS(process.platform,process.pid)),writeMemoryReport:(e,t)=>r.writeFileSync(e,t,{mode:384}),writeHeapSnapshot:e=>C.writeHeapSnapshot(e),listArtifacts:()=>{try{return r.readdirSync(i).filter(e=>tC(e)!==null).map(e=>c.join(i,e))}catch{return[]}},removeFile:e=>r.unlinkSync(e),shutdown:t,startedAtMs:e,...n}}function sC(e={}){if(CC()!==null)return;let n=e.spawn??wC,r=bC();if(r.kind===`contended`){let e=lC();e!==null&&e>2e3&&(t.stderr.write(`cc-candybar: spawn-lock held ${e}ms (likely crashed holder) — spawning unlocked\n`),cC(n));return}if(r.kind===`error`){t.stderr.write(`cc-candybar: spawn-lock unavailable (${r.reason}) — spawning unlocked\n`),cC(n);return}try{cC(n)}finally{SC()}}function cC(e){gC()&&uC(e)}function lC(){try{let e=r.statSync(He());return Date.now()-e.mtimeMs}catch{return null}}function uC(e){try{e()||t.stderr.write(`cc-candybar: daemon spawn returned false (unable to resolve script path?)
162
- `)}catch(e){t.stderr.write(`cc-candybar: daemon spawn failed: ${e.message}\n`)}}function dC(e,t){return e===null?{kind:`allow`}:e<-1e4?{kind:`allow-future-garbage`,futureMs:-e}:e<t?{kind:`deny`}:{kind:`allow`}}function fC(e){return Math.min(3e3*2**Math.min(Math.max(e,0),5),6e4)}function pC(e){try{let t=r.readFileSync(e,`utf8`).trim(),n=Number(t);return!Number.isInteger(n)||n<0?0:Math.min(n,5)}catch{return 0}}function mC(e,n){try{r.mkdirSync(c.dirname(e),{recursive:!0}),r.writeFileSync(e,String(n),{mode:384})}catch(e){t.stderr.write(`cc-candybar: could not record spawn.backoff: ${e.message}\n`)}}function hC(){try{r.unlinkSync(We())}catch(e){e.code!==`ENOENT`&&t.stderr.write(`cc-candybar: could not reset spawn.backoff: ${e.message}\n`)}}function gC(){let e=Ue(),n=We(),r=pC(n),i=dC(_C(e),fC(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`),vC(e),mC(n,Math.min(r+1,5)),!0)}function _C(e){try{return Date.now()-r.statSync(e).mtimeMs}catch{return null}}function vC(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 yC=null;function bC(){let e=He();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 yC={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(!xC(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 xC(e){try{let t=r.statSync(e);return Date.now()-t.mtimeMs>1e4}catch{return!0}}function SC(){if(!yC)return;let{fd:e,path:t}=yC;yC=null;try{r.closeSync(e)}catch{}try{r.unlinkSync(t)}catch{}}function CC(){try{return r.mkdirSync(Ne(),{recursive:!0}),null}catch(e){return`mkdir ${Ne()}: ${e.message}`}}function wC(){let e=t.execPath,n=t.argv[1];return n?Oe({bin:e,args:[`--max-old-space-size=${XS(t.env)}`,n,`daemon`],category:`daemon-spawn`}).ok:!1}const TC=`cc-candybar`,EC=`dispatch`,DC=`set-state`,OC=`step-state`,kC=`copy`,AC=`open-vscode`,jC=`toolbar-toggle`,MC=`show-config-error`,NC=`show-config-warning`,PC=`set-config`,FC=`step-config`,IC=`reset-config`,LC=`apply-layout-op`,RC=`undo`,zC=`redo`,BC=`apply-update`,VC=`doctor-run`,HC=`doctor-fix`;function UC(e){return e.map(encodeURIComponent).join(`/`)}function WC(e){return e.length===0?[]:e.split(`/`).map(decodeURIComponent)}function GC(e){return`${TC}://${EC}/${e.map(e=>`e=${encodeURIComponent(`${e.verb}/${UC(e.args)}`)}`).join(`&`)}`}function KC(e){return new te(e).getAll(`e`).map(YC)}function qC(e){return e.reduce((e,t)=>{let n=e.at(-1),r=n&&JC(n,t);return r?[...e.slice(0,-1),r]:[...e,t]},[])}function JC(e,t){if(e.verb!==`set-state`||t.verb!==`set-state`)return;let[n,r]=[YC(e.value),YC(t.value)];return n.verb===r.verb?{verb:DC,value:`${n.verb}/${n.value}/${r.value}`}:void 0}function YC(e){let t=e.indexOf(`/`);return t===-1?{verb:e,value:``}:{verb:e.slice(0,t),value:e.slice(t+1)}}const XC=`1.83.1`;function ZC(){return c.join(f.homedir(),`.claude`,`settings.json`)}const QC=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/;function $C(e){let t=QC.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 ew(e){return e.join(`.`)}function tw([e,t,n],[r,i,a]){return e-r||t-i||n-a}const nw=`@promptctl/cc-candybar`;async function rw(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`?$C(n.latest):Y}catch(e){return X(e instanceof Error?e.message:String(e))}}function iw(e,t){let n=$C(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=tw(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 aw(e,t){switch(t.kind){case`current`:return{stream:`stdout`,text:`✓ cc-candybar ${ew(t.installed)} is the latest release.\n`};case`ahead`:return{stream:`stdout`,text:`cc-candybar ${ew(t.installed)} is newer than the registry's latest release (${ew(t.latest)}): an unpublished build.\n`};case`stale`:{let n=ew(t.latest);return{stream:`stderr`,text:`⚠ cc-candybar ${ew(t.installed)} was staged, but the latest release is ${n}.\n pnpm's release-age gate (minimumReleaseAge) and its dlx cache can both\n resolve \`@latest\` to an older release without saying so.\n To install ${n} now, name it explicitly:\n pnpm dlx ${e}@${n} install\n`}}case`unchecked`:return{stream:`stderr`,text:`⚠ Could not check for a cc-candybar release newer than ${t.installed} (${t.reason}); the registry check was skipped.\n`}}}const ow=`CCCandybarURLHandler`,sw=[],cw={"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 lw(e){return/^[A-Za-z0-9_./=,:-]+$/.test(e)?e:`'${e.replace(/'/g,`'\\''`)}'`}function uw(e,t){return[e,...t].map(lw).join(` `)}function dw(){return c.join(f.homedir(),`Applications`,`${ow}.app`)}function fw(){if(process.platform!==`darwin`)throw Error(`URL handler installation requires macOS (found platform: ${process.platform}).`)}function pw(){if(process.platform===`darwin`)return c.join(f.homedir(),`Library`,`Application Support`,`CCCandybar`);let e=process.env.XDG_DATA_HOME??c.join(f.homedir(),`.local`,`share`);return c.join(e,`cc-candybar`)}function mw(){return c.join(pw(),`bin`,`cc-candybar`)}function hw(){return c.join(pw(),`dist`,`index.mjs`)}function gw(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(`
162
+ `)}catch(e){t.stderr.write(`cc-candybar: daemon spawn failed: ${e.message}\n`)}}function dC(e,t){return e===null?{kind:`allow`}:e<-1e4?{kind:`allow-future-garbage`,futureMs:-e}:e<t?{kind:`deny`}:{kind:`allow`}}function fC(e){return Math.min(3e3*2**Math.min(Math.max(e,0),5),6e4)}function pC(e){try{let t=r.readFileSync(e,`utf8`).trim(),n=Number(t);return!Number.isInteger(n)||n<0?0:Math.min(n,5)}catch{return 0}}function mC(e,n){try{r.mkdirSync(c.dirname(e),{recursive:!0}),r.writeFileSync(e,String(n),{mode:384})}catch(e){t.stderr.write(`cc-candybar: could not record spawn.backoff: ${e.message}\n`)}}function hC(){try{r.unlinkSync(We())}catch(e){e.code!==`ENOENT`&&t.stderr.write(`cc-candybar: could not reset spawn.backoff: ${e.message}\n`)}}function gC(){let e=Ue(),n=We(),r=pC(n),i=dC(_C(e),fC(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`),vC(e),mC(n,Math.min(r+1,5)),!0)}function _C(e){try{return Date.now()-r.statSync(e).mtimeMs}catch{return null}}function vC(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 yC=null;function bC(){let e=He();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 yC={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(!xC(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 xC(e){try{let t=r.statSync(e);return Date.now()-t.mtimeMs>1e4}catch{return!0}}function SC(){if(!yC)return;let{fd:e,path:t}=yC;yC=null;try{r.closeSync(e)}catch{}try{r.unlinkSync(t)}catch{}}function CC(){try{return r.mkdirSync(Ne(),{recursive:!0}),null}catch(e){return`mkdir ${Ne()}: ${e.message}`}}function wC(){let e=t.execPath,n=t.argv[1];return n?Oe({bin:e,args:[`--max-old-space-size=${XS(t.env)}`,n,`daemon`],category:`daemon-spawn`}).ok:!1}const TC=`cc-candybar`,EC=`dispatch`,DC=`set-state`,OC=`step-state`,kC=`copy`,AC=`open-vscode`,jC=`toolbar-toggle`,MC=`show-config-error`,NC=`show-config-warning`,PC=`set-config`,FC=`step-config`,IC=`reset-config`,LC=`apply-layout-op`,RC=`undo`,zC=`redo`,BC=`apply-update`,VC=`doctor-run`,HC=`doctor-fix`;function UC(e){return e.map(encodeURIComponent).join(`/`)}function WC(e){return e.length===0?[]:e.split(`/`).map(decodeURIComponent)}function GC(e){return`${TC}://${EC}/${e.map(e=>`e=${encodeURIComponent(`${e.verb}/${UC(e.args)}`)}`).join(`&`)}`}function KC(e){return new te(e).getAll(`e`).map(YC)}function qC(e){return e.reduce((e,t)=>{let n=e.at(-1),r=n&&JC(n,t);return r?[...e.slice(0,-1),r]:[...e,t]},[])}function JC(e,t){if(e.verb!==`set-state`||t.verb!==`set-state`)return;let[n,r]=[YC(e.value),YC(t.value)];return n.verb===r.verb?{verb:DC,value:`${n.verb}/${n.value}/${r.value}`}:void 0}function YC(e){let t=e.indexOf(`/`);return t===-1?{verb:e,value:``}:{verb:e.slice(0,t),value:e.slice(t+1)}}const XC=`1.83.2`;function ZC(){return c.join(f.homedir(),`.claude`,`settings.json`)}const QC=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/;function $C(e){let t=QC.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 ew(e){return e.join(`.`)}function tw([e,t,n],[r,i,a]){return e-r||t-i||n-a}const nw=`@promptctl/cc-candybar`;async function rw(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`?$C(n.latest):Y}catch(e){return X(e instanceof Error?e.message:String(e))}}function iw(e,t){let n=$C(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=tw(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 aw(e,t){switch(t.kind){case`current`:return{stream:`stdout`,text:`✓ cc-candybar ${ew(t.installed)} is the latest release.\n`};case`ahead`:return{stream:`stdout`,text:`cc-candybar ${ew(t.installed)} is newer than the registry's latest release (${ew(t.latest)}): an unpublished build.\n`};case`stale`:{let n=ew(t.latest);return{stream:`stderr`,text:`⚠ cc-candybar ${ew(t.installed)} was staged, but the latest release is ${n}.\n pnpm's release-age gate (minimumReleaseAge) and its dlx cache can both\n resolve \`@latest\` to an older release without saying so.\n To install ${n} now, name it explicitly:\n pnpm dlx ${e}@${n} install\n`}}case`unchecked`:return{stream:`stderr`,text:`⚠ Could not check for a cc-candybar release newer than ${t.installed} (${t.reason}); the registry check was skipped.\n`}}}const ow=`CCCandybarURLHandler`,sw=[],cw={"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 lw(e){return/^[A-Za-z0-9_./=,:-]+$/.test(e)?e:`'${e.replace(/'/g,`'\\''`)}'`}function uw(e,t){return[e,...t].map(lw).join(` `)}function dw(){return c.join(f.homedir(),`Applications`,`${ow}.app`)}function fw(){if(process.platform!==`darwin`)throw Error(`URL handler installation requires macOS (found platform: ${process.platform}).`)}function pw(){if(process.platform===`darwin`)return c.join(f.homedir(),`Library`,`Application Support`,`CCCandybar`);let e=process.env.XDG_DATA_HOME??c.join(f.homedir(),`.local`,`share`);return c.join(e,`cc-candybar`)}function mw(){return c.join(pw(),`bin`,`cc-candybar`)}function hw(){return c.join(pw(),`dist`,`index.mjs`)}function gw(e,t){return[`on open location L`,`\tdo shell script "'${e.replace(/"/g,`\\"`)}' '${t.replace(/"/g,`\\"`)}' url-handle " & quoted form of L`,`end open location`].join(`
163
163
  `)}function _w(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 vw(t){let n=cw[`${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 yw(e,t){c.resolve(e)!==c.resolve(t)&&r.copyFileSync(e,t)}function bw(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 ${nw}@latest install`);return n.toString(`latin1`)===`#!`?`node-shim`:`native`}finally{r.closeSync(t)}}function xw(){let e=_w(process.argv[1]);if(!r.existsSync(e))throw Error(`install: bundled dist not found at ${e}. Reinstall the package.`);let t=vw(e);if(!r.existsSync(t.sourcePath))throw Error(`install: render entry not found at ${t.sourcePath}. Reinstall the package.`);r.mkdirSync(c.dirname(hw()),{recursive:!0}),r.mkdirSync(c.dirname(mw()),{recursive:!0}),yw(e,hw()),yw(t.sourcePath,mw()),r.chmodSync(mw(),493),r.rmSync(c.join(pw(),`url-handler.mjs`),{force:!0});let n=bw(mw());return process.stdout.write(`Staged cc-candybar v${XC} runtime at ${pw()}\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:mw(),distPath:hw(),entryKind:n}}function Sw(){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>${TC}</string>`,` </array>`,` </dict>`,`</array>`].join(`
164
164
  `)}]}function Cw(e){let t=dw();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=De({bin:`/usr/bin/osacompile`,args:[`-o`,t,`-e`,gw(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 Sw())De({bin:`/usr/bin/plutil`,args:[`-remove`,e,i],category:`install.plutil`});for(let{key:e,xml:t}of Sw()){let n=De({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 ${TC}:// with Launch Services\n`);let a=De({bin:`/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister`,args:[`-f`,t],category:`install.lsregister`});if(!a.ok)throw process.stderr.write(a.stderr),Error(`lsregister failed (${a.reason})`);process.stdout.write(`✓ ${ow}.app installed and registered.\n`),process.stdout.write(` Test: open '${TC}://hello-world' && pbpaste\n`)}function ww(){fw(),Cw(xw().distPath)}function Tw(e,t=TC){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:kC,value:r}:{verb:decodeURIComponent(r.slice(0,i)),value:r.slice(i+1)}}async function Ew(e){e||(process.stderr.write(`url-handle: missing URL argument.
165
165
  `),process.exit(1));let t;try{t=Tw(e)}catch(e){process.stderr.write(`url-handle: ${e instanceof Error?e.message:String(e)}\n`),process.exit(1)}let n=await zS(t.verb,t.value);n.kind===`ok`&&process.exit(0),n.kind===`transient`&&(sC(),process.stderr.write(`url-handle: daemon unavailable (${n.cause}: ${n.message})\n`),process.exit(1)),process.stderr.write(Dw(n)+`
166
166
  `),process.exit(1)}function Dw(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 Ow(){return`✓ install complete.
167
167
  Restart Claude Code to pick up the new statusline.
168
- Tip: every bar carries a settings menu — click it (${Ys} by\n default) for quick actions, preset switching, edit mode, and clickable\n theme/look/style/wrap/padding controls.\n`}async function kw(e){let t=e.includes(`--force`),n=e.filter(e=>e!==`--force`),r=n.length>0?n:[...sw],i=xw();process.platform===`darwin`?Cw(i.distPath):process.stdout.write(`Skipping URL handler (cmd-click verbs are macOS-only).
168
+ Tip: every bar carries a settings menu — click it (${Xs} by\n default) for quick actions, preset switching, edit mode, and clickable\n theme/look/style/wrap/padding controls.\n`}async function kw(e){let t=e.includes(`--force`),n=e.filter(e=>e!==`--force`),r=n.length>0?n:[...sw],i=xw();process.platform===`darwin`?Cw(i.distPath):process.stdout.write(`Skipping URL handler (cmd-click verbs are macOS-only).
169
169
  `),Aw(i.binPath,r,t),process.stdout.write(Ow());let a=aw(nw,iw(XC,await rw(nw,fetch,`https://registry.npmjs.org`)));process[a.stream].write(a.text)}function Aw(e,t,n,i){let a=i??ZC();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,lw(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:uw(e,t)},Ae(a,JSON.stringify(o,null,2)),process.stdout.write(`Updated ${a}\n`)}function jw(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 Mw(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 Nw(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 Pw(e,t){let n=Mw(e);if(n.kind===`owned`&&n.pid===t)try{r.unlinkSync(e)}catch{}}function Fw(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 Iw(e,t,n,r){let i=Lw(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 Lw(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 Rw(e){let t=!1;function n(){let n=Iw(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 zw(e,t=De){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 Bw(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 Vw(e,t=zw){let n=t(e);return n.kind===`start`?n.token:null}const Hw=`CC_CANDYBAR_PARENT_PID`;function Uw(e){let t=e[Hw];if(t===void 0)return{kind:`outlives-nobody`};let n=Number.parseInt(t,10);if(!Number.isInteger(n)||n<=0)throw Error(`${Hw} must be a positive integer pid, got ${JSON.stringify(t)}`);return{kind:`anchored`,pid:n}}function Ww(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 Gw(e){try{return t.kill(e,0),!0}catch(e){return e.code===`EPERM`}}function Kw(){let e=Number(process.env.CC_CANDYBAR_DAEMON_CEILING??``);return Number.isInteger(e)&&e>0?e:16}function qw(e,t,n){return e?t>=n?{allow:!1,reason:`${t} live isolated daemons registered >= ceiling ${n}`}:{allow:!0,reason:`${t} live isolated daemons registered < ceiling ${n}`}:{allow:!0,reason:`canonical production socket — exempt (bind() already caps it to one)`}}function Jw(e){try{return r.readdirSync(e).filter(e=>e.endsWith(`.json`)).map(t=>c.join(e,t))}catch{return[]}}function Yw(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 Xw(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 Zw(e){if(!e.isolated)return{decision:qw(!1,0,e.ceiling),registryPath:null};e.ensureDirSafe(e.registryDir);let t=[];for(let n of e.listFiles(e.registryDir)){let r=e.readEntry(n);r!==null&&r.pid!==e.pid&&t.push({path:n,identity:r})}let n=qw(!0,Xw(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 Qw(e,t,n,r){let i=n(e);if(i!==null&&i.pid===t)try{r(e)}catch{}}function $w(e,t={}){return{isolated:!!process.env.CC_CANDYBAR_SOCKET,registryDir:Ve(),ceiling:Kw(),pid:process.pid,startTime:e,isSameLiveProcess:(e,t)=>Bw(e,t,{readStartTime:zw,pidAlive:Gw}),listFiles:Jw,readEntry:Yw,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?Fe:e=>{Fe(c.dirname(e)),Fe(e)},...t}}function eT(e){return e<32||e===127||e>=128&&e<=159}function tT(e){let t=``;for(let n of e)t+=eT(n.codePointAt(0)??0)?` `:n;return t.replace(/\s+/g,` `).trim()}function nT(e,t){let n=tT(e),r=``,i=0;for(let e of n){if(i===t)return r.replace(/.$/u,`…`);r+=e,i++}return r}const rT=`\x1B[38;2;255;255;255m`,iT=`\x1B[48;2;200;40;40m`;function aT(e){let t=/;2;(\d+);(\d+);(\d+)m$/.exec(e);if(t===null)throw Error(`diagnostic-style: not a 24-bit SGR: ${e}`);return`#`+t.slice(1,4).map(e=>Number(e).toString(16).padStart(2,`0`)).join(``)}const oT={fg:aT(rT),bg:aT(iT)},sT={fg:aT(`\x1B[38;2;0;0;0m`),bg:aT(`\x1B[48;2;220;160;40m`)},cT={unicode:hi,ascii:{glyph:`>`,divider:`|`,lead:`<`,tail:`>`}},lT={unicode:{},ascii:{left:`(`,right:`)`}};function uT(e,t,n){switch(e){case`capsule`:return new _i(lT[t]);case`plain`:return new vi(n===void 0?{}:{separator:n});case`powerline`:return new gi(cT[t]);default:return e}}const dT=new Map;function fT(e){let t=JSON.stringify([e.style,e.charset,e.separator??null]),n=dT.get(t);if(n!==void 0)return n;let r=uT(e.style,e.charset,e.separator),i=e=>new H(`x`,{end:``,noWrap:!0,style:new B({bgcolor:e})}),a=e=>new H(xi(new oi(e,r),{colorSystem:null}).replace(/\n$/,``)).cellLength,o=a([i(`#101010`)]),s={chrome:o-1,seam:a([i(`#101010`),i(`#202020`)])-o-1};return dT.set(t,s),s}function pT(e){return fT(e).chrome}function mT(e){return fT(e).seam}function hT(e,t){if(e.length===0)return``;let n=uT(t.style,t.charset,t.separator),r=t.colorCompatibility,i=t.wrap&&Number.isFinite(t.width)?xi(new Di([...e],{joiner:n}),{width:t.width,colorSystem:r}):xi(new oi([...e],n),{colorSystem:r});if(!i.endsWith(`
170
170
  `))throw Error(`renderStripCells: rich-js strip output did not end its last line`);return i.slice(0,-1)}function gT(e){return Math.min(20,e??20)}const _T={heading:`ERROR`,glyph:`⚠`,colors:oT},vT={heading:`WARNING`,glyph:`⚠`,colors:sT},yT={heading:`UPDATE`,glyph:`⬆`,colors:sT};function bT(e,t){return{text:tT(e),link:t}}function xT(e,t,n){let[r,...i]=[ST(e,_T,MC),t,ST(n,vT,NC)].flat();return r===void 0?null:{channels:[r,...i]}}function ST(e,t,n){let r=GC([{verb:n,args:[e]}]),[i,...a]=e.split(/\r\n|\r|\n/).map(e=>bT(e,r)).filter(e=>e.text!==``).map(e=>[e]);return i===void 0?[]:[{severity:t,message:e,lines:[i,...a]}]}function CT(e){return e.channels.map(e=>`${e.severity.heading}\n${e.message}\n`).join(`
171
171
  `)}function wT(e,t,n,r){if(t===null)return e;let i=TT(r),a=t.channels.flatMap(e=>ET(e,i)),o=n.failedConfigFile!==null||a.length>r.rowCap,s=a.slice(0,r.rowCap-Number(o)),c=o?[DT(t,n,a.length-s.length,i)]:[],l=[...s,...c].join(`
172
172
  `);return e?`${l}\n${e}`:l}function TT(e){return{style:`plain`,separator:``,width:e.width,wrap:!0,padding:0,charset:`unicode`,colorCompatibility:e.colorCompatibility}}function ET(e,t){let n=new B({bgcolor:e.severity.colors.bg,color:e.severity.colors.fg}),r=Rt(Math.max(2,t.width-1)),i=(e,t)=>new H(`${e} `,{style:t,end:``,noWrap:!0});return e.lines.flatMap((a,o)=>hT([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(`
173
- `))}function DT(e,t,n,r){let{colors:i}=e.channels[0].severity,{fullText:a,failedConfigFile:o}=t,s=new B({bgcolor:i.bg,color:i.fg}),c=(e,t)=>new H(e,{style:t,end:``,noWrap:!0}),l=n>0?[c(`${n} more rows · `,s),a.kind===`file`?c(`open full text`,s.withLink(re(a.path).href)):c(`full text unavailable: ${tT(a.reason)}`,s)]:[],u=o===null?[]:[c(`${l.length>0?` · `:``}open `,s),c(tT(o),s.withLink(re(o).href))],d=[c(`↳ `,s),...l,...u.slice(0,-1)],f=d.reduce((e,t)=>e+t.cellLength,0),p=u.slice(-1).map(e=>e.truncate(Math.max(1,r.width-f),{mode:`middle`})),m=H.fromFragments([...d,...p]).truncate(r.width);return m.noWrap=!0,hT([m],r)}const OT=e=>!e.startsWith(`.`)&&!e.endsWith(`~`);function kT(e,t){return t.isSymbolicLink()?Buffer.from(r.readlinkSync(e)):r.readFileSync(e)}function AT(e,t){return r.readdirSync(t).filter(OT).sort().flatMap(n=>{let i=c.join(t,n),a=r.lstatSync(i,{throwIfNoEntry:!1});return a===void 0?[]:a.isDirectory()?AT(e,i):[[c.relative(e,i).split(c.sep).join(`/`),kT(i,a)]]})}function jT(e){let t=ae.createHash(`sha256`);for(let[n,r]of AT(e,e))t.update(n).update(`\0`).update(r).update(`\0`);return t.digest(`hex`)}const MT=e=>e.slice(0,7);function NT(e){return c.dirname(c.dirname(e))}function PT(){return{version:XC,digest:`96880f7159b503bd728458033db431d5051a2d395e6d3eea9225efe67235c988`}}function FT(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 IT(e,t){try{let n=NT(ne(e)),i=c.join(n,`src`);if(!r.existsSync(i))return{kind:`not-source-checkout`};let a=t(),o=jT(i);return o===a.digest?{kind:`current`,root:n,stamp:a}:{kind:`stale`,root:n,source:{version:FT(n),digest:o},running:a}}catch(e){return{kind:`unchecked`,reason:e.message}}}var $=class extends Error{constructor(e){super(e),this.name=`BadVerbArgs`}};const LT=/^-?\d+$/;function RT(e,t,n){return e===void 0?t:Math.max(t,Math.min(n,e))}function zT(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 BT(e){return t=>{if(!t)return{ok:!1,reason:`${e} value is required`};if(!LT.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 VT(e,t,n){return r=>r?LT.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 HT(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=>!LT.test(e));if(o.length>0)throw Error(`${n} action table: key "${e}" is an integer spec (a paged cursor or a bounded value) but a click writes non-integer value(s) to it (${o.join(`, `)}). A ${n} key has one key shape — point that click at a distinct key, or write an integer.`);if(i&&r.length>0)throw Error(`${n} action table: key "${e}" is declared as both a paged cursor (int) and a bounded value (range) — a ${n} key has one key shape. Use distinct keys.`);if(r.length>0){let t=Math.min(...r.map(e=>e.min)),i=Math.max(...r.map(e=>e.max)),o=a.filter(e=>{let n=parseInt(e,10);return n<t||n>i});if(o.length>0)throw Error(`${n} action table: key "${e}" is a bounded range [${t},${i}] but a click writes out-of-range value(s) to it (${o.join(`, `)}). The range gate would clamp them, storing a different value than the click renders — write an in-range integer, or point that click at a distinct key.`);return{kind:`range`,min:t,max:i,seed:RT(r[0].seed,t,i)}}return{kind:`int`}}function UT(e){return e===`config`?`set-config`:`set-state`}function WT(e,t,n){return t.kind===`int`?BT(`menu page "${e}"`):t.kind===`range`?VT(t.min,t.max,`${n} stepper "${e}"`):zT(t.allowed,`${n} "${e}"`,UT(n))}function GT(e,t,n){return WT(e,HT(e,t,n),n)}function KT(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:HT(e,n,t)}))}function qT(e,t=`state`){let n=new Map(Object.entries(e).map(([e,t])=>[e,{validator:t,permanent:!0}]));function r(){let e=[];for(let[t,r]of n)r.permanent&&e.push(t);return e}return{register(e,i){if(!e)throw Error(`register: key is required`);if(e.includes(`/`))throw Error(`register: key "${e}" contains "/" — the wire shape splits on "/" so a slash-bearing key cannot be addressed. Use a slash-free key.`);let a=n.get(e);if(a){if(a.permanent)throw Error(`register: key "${e}" is a built-in ${t} key and cannot be re-claimed (built-in keys: ${[...r()].join(`, `)})`);if(a.kind!==i.kind)throw Error(`register: key "${e}" is already a ${a.kind} ${t} key; cannot also register it as ${i.kind}. A ${t} key has one key shape — a menu page index (int) and a button allow-list cannot share a key.`);a.specs.push(i),a.validator=GT(e,a.specs,t)}else{let r=[i];n.set(e,{permanent:!1,kind:i.kind,validator:GT(e,r,t),specs:r})}let o=!0;return()=>{if(!o)return;o=!1;let r=n.get(e);if(!r||r.permanent)return;let a=r.specs.indexOf(i);a>=0&&r.specs.splice(a,1),r.specs.length===0?n.delete(e):r.validator=GT(e,r.specs,t)}},validate(e,r){let i=n.get(e);return i?i.validator(r):{ok:!1,reason:`unknown ${t} key "${e}" (have: ${[...n.keys()].join(`, `)})`}},listKeys(){return[...n.keys()]},listBaselineKeys(){return r()},rangeParamsFor(e){let r=n.get(e);if(!r||r.permanent||r.kind!==`range`)return null;let i=HT(e,r.specs,t);if(i.kind!==`range`)throw Error(`rangeParamsFor: key "${e}" holds range specs but the merge produced a ${i.kind} spec — the entry-kind invariant is broken.`);return{min:i.min,max:i.max,seed:i.seed}}}}const JT=qT({},`config`);function YT(){return JT.listKeys()}function XT(e,t){return JT.validate(e,t)}function ZT(e){return JT.rangeParamsFor(e)}function QT(e,t,n){return`persist`in e?`to`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:[e.to]}}]:`from`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:Px(e.from,n).members}}]:`cycle`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:e.cycle}}]:`removeSegment`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:[Tv({op:`remove`,target:e.removeSegment})]}}]:`insertSegment`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:[Tv({op:`insert`,segment:e.insertSegment,anchor:e.anchor,relation:e.relation})]}}]:`insertSegmentFrom`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:Px(e.insertSegmentFrom,n).members.map(t=>Tv({op:`insert`,segment:t,anchor:e.anchor,relation:e.relation}))}}]:[{key:e.persist,spec:{kind:`range`,min:e.min,max:e.max,seed:RT(t.get(e.persist),e.min,e.max)}}]:[]}function $T(e){return Tc(e.globals)}function eE(e){let t=new Set;for(let n of nE(e)){let e=`persist`in n?n.persist:`reset`in n?n.reset:null;if(e===null)continue;let r=Rv(e);r?.scope===`preset-root`&&t.add(r.preset)}return[...t].map(e=>({key:Lv(e),spec:{kind:`allow-list`,allowed:[]}}))}function tE(e){let t=$T(e),n=new Map([...Mx(e),...ry(e)]);return[...eE(e),...nE(e).flatMap(e=>QT(e,t,n))]}function nE(e){return Object.values(e.actions).flatMap(Tb)}function rE(e){return KT(tE(e),`config`)}function iE(e,t){return JT.register(e,t)}const aE=Sa(),oE=new Set(aE),sE=new Set(Ma),cE=e=>e?oE.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown theme "${e}" (have: ${aE.join(`, `)})`}:{ok:!1,reason:`theme name is required`},lE=e=>e?sE.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown style "${e}" (have: ${Ma.join(`, `)})`}:{ok:!1,reason:`style name is required`},uE=new Set([`1`,`true`]),dE=new Set([`0`,`false`]),fE=qT({style:lE,theme:cE,"toolbar-expanded":e=>uE.has(e)?{ok:!0,value:`1`}:dE.has(e)?{ok:!0,value:``}:{ok:!1,reason:`expected boolean-ish (1, 0, true, false), got "${e}"`}});function pE(){return fE.listKeys()}function mE(e,t){return fE.register(e,t)}function hE(e,t){return fE.validate(e,t)}function gE(e){return fE.rangeParamsFor(e)}function _E(e,t,n){return`set`in e?`to`in e?[{key:e.set,spec:{kind:`allow-list`,allowed:[e.to]}}]:`from`in e?[{key:e.set,spec:{kind:`allow-list`,allowed:Px(e.from,n).members}}]:`int`in e?[{key:e.set,spec:{kind:`int`}}]:`cycle`in e?[{key:e.set,spec:{kind:`allow-list`,allowed:e.cycle}}]:[{key:e.set,spec:{kind:`range`,min:e.min,max:e.max,seed:RT(t.get(e.set),e.min,e.max)}}]:[]}function vE(e){let t=new Set(fE.listBaselineKeys());return e.filter(e=>e.spec.kind!==`allow-list`||!t.has(e.key))}function yE(e){let t=new Map,n=/^-?\d+$/;for(let r of Object.values(e.variables)){if(r.kind!==`state`)continue;let e=r.default;e!==void 0&&n.test(e)&&t.set(r.key,parseInt(e,10))}for(let[n,r]of Tc(e.globals))t.set(n,r);return t}function bE(e){let t=yE(e),n=Mx(e);return vE(Object.values(e.actions).flatMap(Tb).flatMap(e=>_E(e,t,n)))}function xE(e){return KT(bE(e))}const SE=`update.dismissed`,CE=`updateNotice`;function wE(e){return e.kind===`source`?e.newer.digest:ew(e.newer)}const TE=e=>`${e.version} [${MT(e.digest)}]`;function EE(e){switch(e.kind){case`source`:return{headline:`Newer source`,newer:TE(e.newer),running:TE(e.running),act:`rebuild`,busy:`rebuilding…`,command:{bin:`pnpm`,args:[`build`],cwd:e.root}};case`release`:return{headline:`Newer release`,newer:ew(e.newer),running:ew(e.running),act:`upgrade`,busy:`upgrading…`,command:{bin:`pnpm`,args:[`dlx`,`${nw}@${ew(e.newer)}`,`install`]}}}}const DE={kind:`idle`},OE={kind:`running`};function kE(e,t,n){if(e===null)return[];let r=wE(e);if(!n.enabled||n.dismissed===r)return[];let i=EE(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(`
173
+ `))}function DT(e,t,n,r){let{colors:i}=e.channels[0].severity,{fullText:a,failedConfigFile:o}=t,s=new B({bgcolor:i.bg,color:i.fg}),c=(e,t)=>new H(e,{style:t,end:``,noWrap:!0}),l=n>0?[c(`${n} more rows · `,s),a.kind===`file`?c(`open full text`,s.withLink(re(a.path).href)):c(`full text unavailable: ${tT(a.reason)}`,s)]:[],u=o===null?[]:[c(`${l.length>0?` · `:``}open `,s),c(tT(o),s.withLink(re(o).href))],d=[c(`↳ `,s),...l,...u.slice(0,-1)],f=d.reduce((e,t)=>e+t.cellLength,0),p=u.slice(-1).map(e=>e.truncate(Math.max(1,r.width-f),{mode:`middle`})),m=H.fromFragments([...d,...p]).truncate(r.width);return m.noWrap=!0,hT([m],r)}const OT=e=>!e.startsWith(`.`)&&!e.endsWith(`~`);function kT(e,t){return t.isSymbolicLink()?Buffer.from(r.readlinkSync(e)):r.readFileSync(e)}function AT(e,t){return r.readdirSync(t).filter(OT).sort().flatMap(n=>{let i=c.join(t,n),a=r.lstatSync(i,{throwIfNoEntry:!1});return a===void 0?[]:a.isDirectory()?AT(e,i):[[c.relative(e,i).split(c.sep).join(`/`),kT(i,a)]]})}function jT(e){let t=ae.createHash(`sha256`);for(let[n,r]of AT(e,e))t.update(n).update(`\0`).update(r).update(`\0`);return t.digest(`hex`)}const MT=e=>e.slice(0,7);function NT(e){return c.dirname(c.dirname(e))}function PT(){return{version:XC,digest:`d28d5815e3667f0cf143bca772b595d50079d68808d40e80c0ec5a30de37905f`}}function FT(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 IT(e,t){try{let n=NT(ne(e)),i=c.join(n,`src`);if(!r.existsSync(i))return{kind:`not-source-checkout`};let a=t(),o=jT(i);return o===a.digest?{kind:`current`,root:n,stamp:a}:{kind:`stale`,root:n,source:{version:FT(n),digest:o},running:a}}catch(e){return{kind:`unchecked`,reason:e.message}}}var $=class extends Error{constructor(e){super(e),this.name=`BadVerbArgs`}};const LT=/^-?\d+$/;function RT(e,t,n){return e===void 0?t:Math.max(t,Math.min(n,e))}function zT(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 BT(e){return t=>{if(!t)return{ok:!1,reason:`${e} value is required`};if(!LT.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 VT(e,t,n){return r=>r?LT.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 HT(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=>!LT.test(e));if(o.length>0)throw Error(`${n} action table: key "${e}" is an integer spec (a paged cursor or a bounded value) but a click writes non-integer value(s) to it (${o.join(`, `)}). A ${n} key has one key shape — point that click at a distinct key, or write an integer.`);if(i&&r.length>0)throw Error(`${n} action table: key "${e}" is declared as both a paged cursor (int) and a bounded value (range) — a ${n} key has one key shape. Use distinct keys.`);if(r.length>0){let t=Math.min(...r.map(e=>e.min)),i=Math.max(...r.map(e=>e.max)),o=a.filter(e=>{let n=parseInt(e,10);return n<t||n>i});if(o.length>0)throw Error(`${n} action table: key "${e}" is a bounded range [${t},${i}] but a click writes out-of-range value(s) to it (${o.join(`, `)}). The range gate would clamp them, storing a different value than the click renders — write an in-range integer, or point that click at a distinct key.`);return{kind:`range`,min:t,max:i,seed:RT(r[0].seed,t,i)}}return{kind:`int`}}function UT(e){return e===`config`?`set-config`:`set-state`}function WT(e,t,n){return t.kind===`int`?BT(`menu page "${e}"`):t.kind===`range`?VT(t.min,t.max,`${n} stepper "${e}"`):zT(t.allowed,`${n} "${e}"`,UT(n))}function GT(e,t,n){return WT(e,HT(e,t,n),n)}function KT(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:HT(e,n,t)}))}function qT(e,t=`state`){let n=new Map(Object.entries(e).map(([e,t])=>[e,{validator:t,permanent:!0}]));function r(){let e=[];for(let[t,r]of n)r.permanent&&e.push(t);return e}return{register(e,i){if(!e)throw Error(`register: key is required`);if(e.includes(`/`))throw Error(`register: key "${e}" contains "/" — the wire shape splits on "/" so a slash-bearing key cannot be addressed. Use a slash-free key.`);let a=n.get(e);if(a){if(a.permanent)throw Error(`register: key "${e}" is a built-in ${t} key and cannot be re-claimed (built-in keys: ${[...r()].join(`, `)})`);if(a.kind!==i.kind)throw Error(`register: key "${e}" is already a ${a.kind} ${t} key; cannot also register it as ${i.kind}. A ${t} key has one key shape — a menu page index (int) and a button allow-list cannot share a key.`);a.specs.push(i),a.validator=GT(e,a.specs,t)}else{let r=[i];n.set(e,{permanent:!1,kind:i.kind,validator:GT(e,r,t),specs:r})}let o=!0;return()=>{if(!o)return;o=!1;let r=n.get(e);if(!r||r.permanent)return;let a=r.specs.indexOf(i);a>=0&&r.specs.splice(a,1),r.specs.length===0?n.delete(e):r.validator=GT(e,r.specs,t)}},validate(e,r){let i=n.get(e);return i?i.validator(r):{ok:!1,reason:`unknown ${t} key "${e}" (have: ${[...n.keys()].join(`, `)})`}},listKeys(){return[...n.keys()]},listBaselineKeys(){return r()},rangeParamsFor(e){let r=n.get(e);if(!r||r.permanent||r.kind!==`range`)return null;let i=HT(e,r.specs,t);if(i.kind!==`range`)throw Error(`rangeParamsFor: key "${e}" holds range specs but the merge produced a ${i.kind} spec — the entry-kind invariant is broken.`);return{min:i.min,max:i.max,seed:i.seed}}}}const JT=qT({},`config`);function YT(){return JT.listKeys()}function XT(e,t){return JT.validate(e,t)}function ZT(e){return JT.rangeParamsFor(e)}function QT(e,t,n){return`persist`in e?`to`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:[e.to]}}]:`from`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:Rx(e.from,n).members}}]:`cycle`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:e.cycle}}]:`removeSegment`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:[kv({op:`remove`,target:e.removeSegment})]}}]:`insertSegment`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:[kv({op:`insert`,segment:e.insertSegment,anchor:e.anchor,relation:e.relation})]}}]:`insertSegmentFrom`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:Rx(e.insertSegmentFrom,n).members.map(t=>kv({op:`insert`,segment:t,anchor:e.anchor,relation:e.relation}))}}]:[{key:e.persist,spec:{kind:`range`,min:e.min,max:e.max,seed:RT(t.get(e.persist),e.min,e.max)}}]:[]}function $T(e){return Ec(e.globals)}function eE(e){let t=new Set;for(let n of nE(e)){let e=`persist`in n?n.persist:`reset`in n?n.reset:null;if(e===null)continue;let r=Hv(e);r?.scope===`preset-root`&&t.add(r.preset)}return[...t].map(e=>({key:Vv(e),spec:{kind:`allow-list`,allowed:[]}}))}function tE(e){let t=$T(e),n=new Map([...Ix(e),...sy(e)]);return[...eE(e),...nE(e).flatMap(e=>QT(e,t,n))]}function nE(e){return Object.values(e.actions).flatMap(kb)}function rE(e){return KT(tE(e),`config`)}function iE(e,t){return JT.register(e,t)}const aE=Sa(),oE=new Set(aE),sE=new Set(Ma),cE=e=>e?oE.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown theme "${e}" (have: ${aE.join(`, `)})`}:{ok:!1,reason:`theme name is required`},lE=e=>e?sE.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown style "${e}" (have: ${Ma.join(`, `)})`}:{ok:!1,reason:`style name is required`},uE=new Set([`1`,`true`]),dE=new Set([`0`,`false`]),fE=qT({style:lE,theme:cE,"toolbar-expanded":e=>uE.has(e)?{ok:!0,value:`1`}:dE.has(e)?{ok:!0,value:``}:{ok:!1,reason:`expected boolean-ish (1, 0, true, false), got "${e}"`}});function pE(){return fE.listKeys()}function mE(e,t){return fE.register(e,t)}function hE(e,t){return fE.validate(e,t)}function gE(e){return fE.rangeParamsFor(e)}function _E(e,t,n){return`set`in e?`to`in e?[{key:e.set,spec:{kind:`allow-list`,allowed:[e.to]}}]:`from`in e?[{key:e.set,spec:{kind:`allow-list`,allowed:Rx(e.from,n).members}}]:`int`in e?[{key:e.set,spec:{kind:`int`}}]:`cycle`in e?[{key:e.set,spec:{kind:`allow-list`,allowed:e.cycle}}]:[{key:e.set,spec:{kind:`range`,min:e.min,max:e.max,seed:RT(t.get(e.set),e.min,e.max)}}]:[]}function vE(e){let t=new Set(fE.listBaselineKeys());return e.filter(e=>e.spec.kind!==`allow-list`||!t.has(e.key))}function yE(e){let t=new Map,n=/^-?\d+$/;for(let r of Object.values(e.variables)){if(r.kind!==`state`)continue;let e=r.default;e!==void 0&&n.test(e)&&t.set(r.key,parseInt(e,10))}for(let[n,r]of Ec(e.globals))t.set(n,r);return t}function bE(e){let t=yE(e),n=Ix(e);return vE(Object.values(e.actions).flatMap(kb).flatMap(e=>_E(e,t,n)))}function xE(e){return KT(bE(e))}const SE=`update.dismissed`,CE=`updateNotice`;function wE(e){return e.kind===`source`?e.newer.digest:ew(e.newer)}const TE=e=>`${e.version} [${MT(e.digest)}]`;function EE(e){switch(e.kind){case`source`:return{headline:`Newer source`,newer:TE(e.newer),running:TE(e.running),act:`rebuild`,busy:`rebuilding…`,command:{bin:`pnpm`,args:[`build`],cwd:e.root}};case`release`:return{headline:`Newer release`,newer:ew(e.newer),running:ew(e.running),act:`upgrade`,busy:`upgrading…`,command:{bin:`pnpm`,args:[`dlx`,`${nw}@${ew(e.newer)}`,`install`]}}}}const DE={kind:`idle`},OE={kind:`running`};function kE(e,t,n){if(e===null)return[];let r=wE(e);if(!n.enabled||n.dismissed===r)return[];let i=EE(e),a=`${i.headline}: ${i.newer}. You're on ${i.running}.`,o=t.kind===`failed`&&t.identity===r?[`${i.act} failed: ${t.reason}`]:[],s=[a,...o].join(`
174
174
  `),c=GC([{verb:NC,args:[s]}]),l=t.kind===`running`?bT(`[${i.busy}]`,c):bT(`[${i.act}]`,GC([{verb:BC,args:[n.sessionId]}]));return[{severity:yT,message:s,lines:[[bT(a,c),l,bT(`[dismiss]`,GC([{verb:DC,args:[n.sessionId,SE,r]}])),bT(`[disable]`,GC([{verb:PC,args:[n.sessionId,CE,`false`]}]))],...o.map(e=>[bT(e,c)])]}]}function AE(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 jE(e){switch(e.kind){case`current`:return[`info`,`build: current ${TE(e.stamp)}`];case`stale`:return[`info`,`build: stale — source ${TE(e.source)}, running ${TE(e.running)}`];case`not-source-checkout`:return[`info`,`build: not a source checkout`];case`unchecked`:return[`warn`,`build: unchecked: ${e.reason}`]}}function ME(e){switch(e.kind){case`current`:return[`info`,`release: current ${ew(e.installed)}`];case`stale`:return[`info`,`release: stale — latest ${ew(e.latest)}, running ${ew(e.installed)}`];case`ahead`:return[`info`,`release: ahead — running ${ew(e.installed)}, latest ${ew(e.latest)}`];case`unchecked`:return[`warn`,`release: unchecked: ${e.reason}`]}}function NE(e){let t=null;return([n,r])=>{r!==t&&(t=r,e(n,r))}}const PE=e=>e.split(/\r?\n/).map(e=>e.trim()).filter(e=>e!==``).at(-1);function FE(e){let t=e.exitCode===null?``:` (exit ${e.exitCode})`,n=PE(e.stderr)??e.error??PE(e.stdout)??`no output`;return`${e.reason}${t}: ${n}`}function IE(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=DE,d=null,f=NE(s),p=NE(s),m=()=>AE(c,l);function h(){let e=m(),t=e===null?null:wE(e);(d===null?null:d.identity)!==t&&(d?.dispose(),d=t===null?null:{identity:t,dispose:mE(SE,{kind:`allow-list`,allowed:[t]})})}function g(){c=IT(t,PT),f(jE(c)),h()}async function _(){l=iw(XC,await rw(nw,a,i)),p(ME(l)),h()}return{arm(){iE(CE,{kind:`allow-list`,allowed:[`false`]}),g(),setInterval(g,n).unref(),c.kind===`not-source-checkout`&&(_(),setInterval(()=>void _(),r).unref())},notice:e=>kE(m(),u,e),act(){let e=m();if(e===null)throw new $(`apply-update: nothing newer is known to apply`);let t=EE(e);if(u.kind===`running`)throw new $(`apply-update: already ${t.busy}`);u=OE,s(`info`,`apply-update: ${t.act} — ${t.command.bin} ${t.command.args?.join(` `)??``}`),Ee({...t.command,category:`update.apply`,timeoutMs:6e5}).then(n=>{if(n.ok){u=DE,s(`info`,`apply-update: ${t.act} succeeded`),g(),o();return}let r=FE(n);u={kind:`failed`,identity:wE(e),reason:r},s(`error`,`apply-update: ${t.act} failed: ${r}`)})}}}var LE=class{static CACHE_DIR=D();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 E(`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`?(E(`Removing stale lock file ${e} for dead process ${i}`),r.unlinkSync(t),!1):(E(`Error checking process ${i} for lock ${e}:`,n),!0)}}catch(t){return E(`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`}),E(`Lock acquired for ${e}`),!0}catch(e){if(e.code===`EEXIST`)await oe(50);else throw e}return E(`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),E(`Lock released for ${e}`)}catch(t){t.code!==`ENOENT`&&E(`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){E(`Failed to create cache directories:`,e)}}static createProjectHash(e){return w(`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)){E(`Cache for ${e} is locked, waiting...`),await oe(75);continue}try{let i=await r.promises.readFile(n,`utf-8`),a=JSON.parse(i);return!t||a.timestamp>=t?(E(`[CACHE-HIT] ${e} disk cache: found`),this.deserializeDates(a.data)):(E(`${e} cache outdated: cache=${a.timestamp}, latest=${t}`),null)}catch(t){if(t.code===`ENOENT`)return E(`No shared ${e} usage cache found`),null;E(`Attempt ${a+1} failed to read ${e} cache: ${t.message}. Retrying...`),await oe(75)}}return E(`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)){E(`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`),E(`[CACHE-SET] ${e} disk cache stored`)}catch(t){E(`Failed to save ${e} usage cache:`,t)}finally{await this.releaseLock(i)}}};const RE={"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 zE=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 LE.getUsageCache(`pricing`,e)}static async saveDiskCache(e){await LE.setUsageCache(`pricing`,e)}static async fetchPricingData(){return new Promise(e=>{let t=new ee(this.GITHUB_PRICING_URL),n=T({hostname:t.hostname,path:t.pathname,headers:{"User-Agent":`cc-candybar`,"Cache-Control":`no-cache`},timeout:5e3},t=>{if(t.statusCode!==200){E(`HTTP ${t.statusCode}: ${t.statusMessage}`),e(null);return}let r=``,i=0;t.on(`data`,t=>{if(i+=t.length,i>1048576){E(`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)?(E(`Fetched fresh pricing from GitHub for ${Object.keys(i).length} models`),E(`Pricing last updated: ${n?.updated||`unknown`}`),e(i)):(E(`Invalid pricing data structure`),e(null))}catch(t){E(`Failed to parse JSON:`,t),e(null)}}),t.on(`error`,t=>{E(`Response error:`,t),e(null)})});n.on(`error`,t=>{E(`Request error:`,t),e(null)}),n.on(`timeout`,()=>{E(`Request timeout`),n.destroy(),e(null)}),n.end()})}static async getCurrentPricing(){if(this.executionCache!==null)return E(`[CACHE-HIT] Pricing execution cache: ${Object.keys(this.executionCache).length} models`),this.executionCache;let e=await this.loadDiskCache();if(e)return E(`[CACHE-HIT] Pricing disk cache: ${Object.keys(e).length} models`),this.executionCache=e,E(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(e).length} models`),e;let t=await this.fetchPricingData();return t?(await this.saveDiskCache(t),E(`[CACHE-SET] Pricing disk cache stored: ${Object.keys(t).length} models`),this.executionCache=t,E(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(t).length} models`),t):(E(`[CACHE-FALLBACK] Using offline pricing data: ${Object.keys(RE).length} models`),this.executionCache=RE,E(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(RE).length} models`),RE)}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 E(`[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),E(`[CACHE-SET] Model pricing cache: ${e}`),n}static fuzzyMatchModel(e,t){let n=e.toLowerCase();for(let[e,r]of Object.entries(t))if(e.toLowerCase()===n)return r;for(let{pattern:e,fallback:r}of[{pattern:[`opus-4-6`,`claude-opus-4-6`],fallback:`claude-opus-4-6-20260205`},{pattern:[`opus-4-5`,`claude-opus-4-5`],fallback:`claude-opus-4-5-20251101`},{pattern:[`opus-4-1`,`claude-opus-4-1`],fallback:`claude-opus-4-1-20250805`},{pattern:[`opus-4`,`claude-opus-4`],fallback:`claude-opus-4-20250514`},{pattern:[`sonnet-4-6`,`sonnet-4.6`,`claude-sonnet-4-6`],fallback:`claude-sonnet-4-6`},{pattern:[`sonnet-4.5`,`4-5-sonnet`,`sonnet-4-5`],fallback:`claude-sonnet-4-5-20250929`},{pattern:[`sonnet-4`,`claude-sonnet-4`],fallback:`claude-sonnet-4-20250514`},{pattern:[`haiku-4.5`,`4-5-haiku`,`haiku-4-5`],fallback:`claude-haiku-4-5-20251001`},{pattern:[`haiku`],fallback:`claude-haiku-4-5-20251001`},{pattern:[`opus`],fallback:`claude-opus-4-20250514`},{pattern:[`sonnet`],fallback:`claude-sonnet-4-5-20250929`}])if(e.some(e=>n.includes(e))&&t[r])return t[r];return t[`claude-sonnet-4-5-20250929`]||{name:`${e} (Unknown Model)`,input:3,cache_write_5m:3.75,cache_write_1h:6,cache_read:.3,output:15}}static async calculateCostForEntry(e){let t=e.message?.usage;if(!t)return 0;let n=this.extractModelId(e),r=await this.getModelPricing(n),i=t.input_tokens||0,a=t.output_tokens||0,o=t.cache_creation_input_tokens||0,s=t.cache_read_input_tokens||0,c=i/1e6*r.input,l=a/1e6*r.output,u=s/1e6*r.cache_read,d=o/1e6*r.cache_write_5m;return c+l+d+u}static extractModelId(e){if(e.model&&typeof e.model==`string`)return e.model;let t=e.message;if(t?.model){let e=t.model;if(typeof e==`string`)return e;let n=e;return(typeof n?.id==`string`?n.id:null)||`claude-sonnet-4-5-20250929`}return e.model_id&&typeof e.model_id==`string`?e.model_id:`claude-sonnet-4-5-20250929`}};function BE(e){if(!e)return 0;try{return o(e).mtimeMs}catch{return 0}}const VE=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 HE(e){return((...t)=>VE.run(()=>e(...t)))}const UE=HE(y),WE=HE(v),GE=HE(b);async function KE(e,t){return VE.run(async()=>{let n=null;try{n=await _(e,`r`);let{size:r,mtimeMs:i,ino:a}=await n.stat(),o=t!==void 0&&(a!==t.ino||r<t.offset),s=o||t===void 0?0:t.offset;if(s>=r)return J({buf:Buffer.alloc(0),start:s,size:r,mtimeMs:i,ino:a,reset:o});let c=Buffer.alloc(r-s),l=0;for(;l<c.length;){let{bytesRead:e}=await n.read(c,l,c.length-l,s+l);if(e===0)break;l+=e}return J({buf:l===c.length?c:c.subarray(0,l),start:s,size:r,mtimeMs:i,ino:a,reset:o})}catch(t){return t.code===`ENOENT`?Y:X(`readAppended ${e}: ${t instanceof Error?t.message:String(t)}`)}finally{await n?.close().catch(e=>{E(`transcript-fs: close failed: ${e instanceof Error?e.message:String(e)}`)})}})}async function qE(e,t){return VE.run(async()=>{let n=null;try{n=await _(e,`r`);let{size:r}=await n.stat(),i=Math.max(0,r-t),a=Buffer.alloc(r-i),o=0;for(;o<a.length;){let{bytesRead:e}=await n.read(a,o,a.length-o,i+o);if(e===0)break;o+=e}return J({buf:o===a.length?a:a.subarray(0,o),fromStart:i===0})}catch(t){return t.code===`ENOENT`?Y:X(`readTail ${e}: ${t instanceof Error?t.message:String(t)}`)}finally{await n?.close().catch(e=>{E(`transcript-fs: close failed: ${e instanceof Error?e.message:String(e)}`)})}})}const JE=/<command-name>\s*([^<\s][^<]*?)\s*<\/command-name>/;function YE(e){if(typeof e==`string`)return JE.exec(e)?.[1]}function XE(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 ZE(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=XE(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?YE(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 QE(){let e=[],t=process.env.CLAUDE_CONFIG_DIR;if(t&&t.split(`,`).forEach(t=>{let n=t.trim();a(n)&&e.push(n)}),e.length===0){let t=p(),n=d(t,`.config`,`claude`),r=d(t,`.claude`);a(n)&&e.push(n),a(r)&&e.push(r)}return e}async function $E(e){let t=[];for(let n of e){let e=d(n,`projects`);if(a(e))try{let n=await UE(e,{withFileTypes:!0});for(let r of n)if(r.isDirectory()){let n=d(e,r.name);t.push(n)}}catch(t){E(`Failed to read projects directory ${e}:`,t)}}return t}async function eD(e,t,n){let r=[],i=d(t,e,`subagents`);try{let t=(await UE(i)).filter(e=>e.startsWith(`agent-`)&&e.endsWith(`.jsonl`));for(let a of t){let t=d(i,a);if(n?.has(t)){r.push(t);continue}try{let n=(await WE(t,`utf-8`)).split(`
175
175
  `)[0];n&&JSON.parse(n).sessionId===e&&r.push(t)}catch{E(`Failed to check agent file ${t}`)}}}catch(e){E(`Failed to read subagents directory ${i}:`,e)}return r}function tD(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 nD=new Map;async function rD(e){try{let t=await GE(e),n=t.size,r=nD.get(e);if(r&&r.mtime===t.mtimeMs&&r.size===n)return E(`[parse-cache] hit ${e}`),nD.delete(e),nD.set(e,r),r.entries;let i;return n>1048576?(E(`Using streaming parser for large file ${e} (${Math.round(n/1024)}KB)`),i=await cD(e)):i=await oD(e),E(`Parsed ${i.length} entries from ${e}`),n>5242880?i:(nD.delete(e),nD.size>=16&&nD.delete(nD.keys().next().value),nD.set(e,{mtime:t.mtimeMs,size:n,entries:i}),i)}catch(t){if(t.code===`ENOENT`)return E(`Transcript not present yet: ${e}`),[];throw t}}function iD(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:ZE(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 aD(e){let t=[];for(let n of e.split(`
176
176
  `))if(n.trim())try{let e=iD(JSON.parse(n));e&&t.push(e)}catch(e){E(`Failed to parse JSONL line: ${e}`);continue}return t}async function oD(e){return aD(await WE(e,`utf-8`))}async function sD(e,t){let n=await KE(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:aD(r.subarray(0,c+1).toString(`utf-8`)),cursor:{offset:i+c+1,mtimeMs:a,ino:o},reset:s})}async function cD(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=iD(JSON.parse(t));e&&r.push(e)}catch(e){E(`Failed to parse JSONL line: ${e}`)}}),o.on(`close`,()=>{t(r)}),o.on(`error`,t=>{E(`Streaming parser error for ${e}:`,t),n(t)}),a.on(`error`,t=>{E(`File stream error for ${e}:`,t),n(t)})})}var lD=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 uD(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 dD={cost:0,input:0,output:0,cacheCreation:0,cacheRead:0},fD={cost:null,calculatedCost:null,officialCost:null,tokens:null,tokenBreakdown:null};function pD(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function mD(){let e=new Date;return e.setHours(0,0,0,0),e.setDate(e.getDate()-1),e.getTime()}function hD(){return{input:0,output:0,cacheCreation:0,cacheRead:0}}async function gD(e,t,n,r){let i=pD(new Date(mD())),a=e&&!t?e:void 0,o=a?.entries??0,s=a?.cost??0,c=a?{...a.breakdown}:hD(),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 zE.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=pD(new Date(e.timestamp));if(r<i)continue;let a=l.get(r)??{...dD};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 _D(e){let t=0,n=0,r=hD(),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)??{...dD};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:fD,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 vD(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 yD=class{entries=new Map;flight=new lD;seeded=new Map;speedRings=new Map;speedFlight=new lD;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:fD,i=t?.cost?.total_cost_usd??null;return J({session:{...r,cost:i??r.cost,officialCost:i}})}async getTodayInfo(e){let t=pD(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={...dD},i=!1;for(let e of this.entries.values()){i||=e.days.has(t);let n=e.days.get(t)??dD;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=BE(t);return this.speedFlight.run(`${e}:${r}`,async()=>{let i=await this.ingest(e,t,r);if(i.kind===`failed`)return i;let a=uD(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??BE(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 eD(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 sD(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 gD(r,l,s,c)),e===t&&(a=c.mtimeMs)}return J({files:i,..._D(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=mD(),n=await $E(QE()),r=[];for(let e of n){let n;try{n=await UE(e)}catch{continue}for(let i of n){if(!i.endsWith(`.jsonl`))continue;let n=d(e,i),a;try{a=(await GE(n)).mtimeMs}catch{continue}a<t||r.push({sessionId:i.slice(0,-6),path:n,mtime:a})}}await vD(r,8,async e=>{let t=await this.ingest(e.sessionId,e.path,e.mtime);t.kind===`failed`&&Q(`warn`,`usageStore seed: ${t.reason}`)}),this.seeds++,Q(`info`,`usageStore seed sessions=${r.length}`)}sweepStale(){let e=Date.now(),t=0;for(let[n,r]of this.entries)e-r.lastSeenAt>this.staleAgeMs&&(this.entries.delete(n),this.speedRings.delete(n),t++);return t>0&&(this.sweeps++,Q(`info`,`usageStore sweep dropped=${t}`)),t}evictIfNeeded(){for(;this.entries.size>this.maxEntries;){let e=this.entries.keys().next().value;if(e===void 0)break;this.entries.delete(e),this.speedRings.delete(e),Q(`info`,`usageStore evict ${e}`)}}close(){this.sweepTimer&&=(clearInterval(this.sweepTimer),null),this.entries.clear(),this.seeded.clear(),this.speedRings.clear()}};const bD=/"(?:cache_read_input_tokens|cache_creation_input_tokens)":[1-9]/;function xD(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 SD(e){let t=await CD(e);return t.kind===`ok`?J(Math.floor((t.value+36e5)/1e3)):t}async function CD(e){for(let t of[65536,1048576]){let n=await qE(e,t);if(n.kind!==`ok`)return n;let r=wD(n.value.buf,n.value.fromStart);if(r!=null)return J(r);if(n.value.fromStart)return Y}return Y}function wD(e,t){let n=e.toString(`utf8`).split(`
177
- `),r=+!t;for(let e=n.length-1;e>=r;e--){let t=n[e];if(!t||!bD.test(t))continue;let r=xD(t);if(r!=null)return r}return null}function TD(e,t,n){let r=jv(t(`preset`),e.globals.preset,e.presets),i=Pv(e,r),a=t(`edit.mode`)===`open`?e.editGlobals:{};return{preset:r,presetCustomized:n(r),theme:Dx(a.palette,t(`theme`),i.palette),look:ja(a.look,t(`look`),i.look,e.looks),style:Pa(a.style,t(`style`),i.style),progression:Ka(a.progression,t(`progression`),i.progression),separator:a.default_separator??i.default_separator,autoWrap:$a(a.autoWrap,t(`autoWrap`),i.autoWrap),padding:eo(a.padding,t(`padding`),i.padding),charset:Ra(a.charset,t(`charset`),i.charset),updateNotice:a.updateNotice??i.updateNotice??!0,colorCompatibility:Ha(a.colorCompatibility,t(`colorCompatibility`),i.colorCompatibility)}}function ED(e){return{preset:{effective:e.preset,customized:e.presetCustomized},style:{effective:e.style},progression:{effective:e.progression},charset:{effective:e.charset},colorCompatibility:{effective:e.colorCompatibility},autoWrap:{effective:e.autoWrap},padding:{effective:e.padding}}}const DD=10*1e3;function OD(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 kD(e,t){if(!(t<60))return e*3600/t}function AD(e,t,n,r){let i=r-t;if(i<50||i>DD)return;let a=n-e;if(!(a<=0))return a*1e3/i}function jD(e){let{prev:t,cur:n}=e;if(t===void 0)return;let r=AD(t.input,t.atMs,n.input,n.atMs),i=AD(t.output,t.atMs,n.output,n.atMs),a=AD(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 MD(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>DD)continue;let o=AD(r.total,r.atMs,i.total,i.atMs);n.push(o??0)}if(n.length!==0)return n.join(`,`)}function ND(e){let t=e.indexOf(`.`);return t<0?e:e.slice(0,t)}function PD(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`,()=>ND(f.hostname())),i=n(`user`,()=>f.userInfo().username);return{host:{...r!==void 0&&{name:r},...i!==void 0&&{user:i},...e.ssh!==void 0&&{ssh:e.ssh}},failures:t}}function FD(e,t){let n=new Map;for(let[t,r]of Object.entries(e.variables))n.set(t,r);for(let[t,r]of Object.entries(e.segments))if(r.vars)for(let[e,i]of Object.entries(r.vars))n.set(`${t}.${e}`,i);let r=[],i=new Set;for(let n of Xo(Nv(e,t).node)){if(n.when)for(let e of ug(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 ug(e))r.push(t)}}let a=new Set;for(;r.length>0;){let e=r.pop();for(let t of LD(n,e)){if(i.has(t))continue;i.add(t);let e=n.get(t);if(e){if(e.kind===`input`)a.add(e.path);else if(e.kind===`template`)for(let t of ug(e.template))r.push(t)}}}return a}function ID(e){let t=new Map;return n=>{let r=t.get(n);if(r!==void 0)return r;let i=FD(e,n);return t.set(n,i),i}}function LD(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 RD(e,t){for(let n of e)if(n===t||n.startsWith(t+`.`))return!0;return!1}function zD(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 BD(e,t,n,r,i,a){let o=e=>RD(r,e),s=(t.clock??(()=>new Date))().getTime(),c=(e,t,n)=>t?n().catch(t=>X(`${e}: ${String(t)}`)):Promise.resolve(Y),[l,u,d,f,p,m,h,g,_]=await Promise.all([c(`git`,o(`git`),()=>t.gitProvider.getGitInfo(n??e.workspace?.current_dir,zD(r),e.workspace?.project_dir)),c(`session`,o(`session.cost`)||o(`session.tokens`)||o(`burn`),()=>t.usageStore.getUsageInfo(e.session_id,e)),c(`today`,o(`today`),()=>t.usageStore.getTodayInfo(e)),c(`context`,o(`context`),()=>t.contextProvider.getContextInfo(e)),c(`metrics`,o(`metrics`)||o(`burn`),()=>t.metricsProvider.getMetricsInfo(e.session_id,e)),c(`activity`,o(`activity`),()=>t.activityProvider.getActivityInfo(e.session_id,e)),c(`tmux`,o(`tmux`),()=>t.tmuxService.getSessionId()),c(`cache`,o(`cache`),()=>SD(e.transcript_path)),c(`speed`,o(`speed`),()=>t.usageStore.observeSpeed(e.session_id,e.transcript_path,s))]),v=[],y=e=>{if(e.kind===`failed`){v.push(e.reason);return}return e.kind===`ok`?e.value:void 0},b=GD(l);v.push(...b.failures);let x=PD(a);v.push(...x.failures);let S=y(u),C=y(d),ee=y(f),te=y(p),ne=y(m),re=y(h),ie=y(g);for(let e of v)t.log(`warn`,`provider fetch failed: ${e}`);let ae=e.rate_limits?.five_hour,w=e.rate_limits?.seven_day,T=ae?OD(ae.used_percentage,ae.resets_at,18e6,s):void 0,oe=w?OD(w.used_percentage,w.resets_at,6048e5,s):void 0,se=S?.session.cost,ce=te?.sessionDuration,le=o(`burn`)&&se!=null&&ce!=null?kD(se,ce):void 0,ue=y(_),de=ue===void 0?void 0:jD(ue),fe=ue===void 0?void 0:MD(ue),pe=de!==void 0||fe!==void 0?{...de,...fe!==void 0&&{history:fe}}:void 0,me=WD(process.env.HOME??process.env.USERPROFILE),he=e.workspace?{...e.workspace,current_dir:WD(e.workspace.current_dir)??``,project_dir:WD(e.workspace.project_dir)??``}:e.workspace,ge=S===void 0?void 0:UD({cost:S.session.cost,tokens:S.session.tokens}),E=C===void 0?void 0:{cost:C.cost,tokens:C.tokens},_e=te===void 0?void 0:UD({lastResponseTime:te.lastResponseTime,responseTime:te.responseTime,sessionDuration:te.sessionDuration,messageCount:te.messageCount,linesAdded:te.linesAdded,linesRemoved:te.linesRemoved}),ve=ne===void 0?void 0:VD(ne);return{...e,...he!==void 0&&{workspace:he},...me!==void 0&&{home:me},...b.git!==void 0&&{git:b.git},...re!==void 0&&{tmux:{session:re}},host:x.host,...ED(i),history:t.history(e.session_id),...ge!==void 0&&{session:ge},...E!==void 0&&{today:E},...le!==void 0&&{burn:{costPerHour:le}},...pe!==void 0&&{speed:pe},...o(`block`)&&ae!==void 0&&{block:{nativeUtilization:ae.used_percentage,resetsAt:ae.resets_at,...T!==void 0&&{etaMinutes:T}}},...w!==void 0&&{weekly:{percentage:w.used_percentage,resetsAt:w.resets_at,...oe!==void 0&&{etaMinutes:oe}}},...ie!==void 0&&{cache:{expiresAt:ie}},...ee!==void 0&&{context:{totalTokens:ee.totalTokens,contextLeft:ee.contextLeftPercentage}},..._e!==void 0&&{metrics:_e},...ve!==void 0&&{activity:ve}}}function VD(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=HD(e.running),i=HD(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 HD(e){return e.length===0?void 0:e.map(e=>`${e.name}:${e.count}`).join(`,`)}function UD(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 WD(e){return e===void 0||e.length===0||c.sep!==`\\`?e:e.replace(/\\/g,`/`)}function GD(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 KD=`trimPrefix "/" (trimPrefix .project_dir .current_dir)`,qD=`{{ \$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 (${KD}) (basename .project_dir) (ne (${KD}) "") }}{{ end }}{{ end }}{{ abbreviatePath \$dir }}`,JD={branch:`primary`,staged:`success`,unstaged:`warning`,untracked:`accent`,conflicts:`error`,dirty:`warning`,clean:`success`,ahead:`success`,behind:`warning`,stash:`accent`},YD=(e,t)=>`{{ fg (readableOn (color "${e}") (bgOf) ${Qi}) ${t} }}`,XD=(e,t)=>YD(JD[e],t),ZD=`{{ readableOn (mix (color "foreground") (bgOf) 60) (bgOf) 3 }}`,QD=`{{ if or (gt .git.staged 0) (gt .git.unstaged 0) (gt .git.untracked 0) (gt .git.conflicts 0) }} ({{ \$first := true }}{{ if gt .git.staged 0 }}${XD(`staged`,`(printf "+%v" .git.staged)`)}{{ $first = false }}{{ end }}{{ if gt .git.unstaged 0 }}{{ if not $first }} {{ end }}${XD(`unstaged`,`(printf "~%v" .git.unstaged)`)}{{ $first = false }}{{ end }}{{ if gt .git.untracked 0 }}{{ if not $first }} {{ end }}${XD(`untracked`,`(printf "?%v" .git.untracked)`)}{{ $first = false }}{{ end }}{{ if gt .git.conflicts 0 }}{{ if not $first }} {{ end }}${XD(`conflicts`,`(printf "!%v" .git.conflicts)`)}{{ $first = false }}{{ end }}){{ end }}`,$D=`{{ if eq .git.status "conflicts" }}${XD(`conflicts`,`"⚠"`)}{{ else }}{{ if eq .git.status "dirty" }}${XD(`dirty`,`"●"`)}{{ else }}${XD(`clean`,`"✓"`)}{{ end }}{{ end }}`,eO=`{{ if ne .git.repoName "" }}{{ .git.repoName }} {{ end }}⎇ ${XD(`branch`,`.git.branch`)}{{ if .git.sha }} ♯ {{ .git.sha }}{{ end }}{{ if or (gt .git.ahead 0) (gt .git.behind 0) }} {{ if gt .git.ahead 0 }}${XD(`ahead`,`(printf "↑%v" .git.ahead)`)}{{ end }}{{ if gt .git.behind 0 }}${XD(`behind`,`(printf "↓%v" .git.behind)`)}{{ end }}{{ end }}`+QD+`{{ if .git.upstream }} →{{ .git.upstream }}{{ end }}{{ if gt .git.stash 0 }} ${XD(`stash`,`(printf "⧇ %v" .git.stash)`)}{{ end }} `+$D,tO={globals:{palette:`tokyo-night`},variables:{...vv,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.prNumber":{kind:`input`,path:`git.prNumber`,type:`number`,default:0},"git.prState":{kind:`input`,path:`git.prState`,default:``},"git.prUrl":{kind:`input`,path:`git.prUrl`,default:``},"git.prError":{kind:`input`,path:`git.prError`,default:``},"cache.expiresAt":{kind:`input`,path:`cache.expiresAt`,type:`number`,default:0},"session.cost":{kind:`input`,path:`session.cost`,type:`number`,default:0},"session.tokens":{kind:`input`,path:`session.tokens`,type:`number`,default:0},"session.budget.amount":{kind:`literal`,value:0},"session.budget.warningThreshold":{kind:`literal`,value:80},"today.cost":{kind:`input`,path:`today.cost`,type:`number`,default:0},"today.tokens":{kind:`input`,path:`today.tokens`,type:`number`,default:0},"today.budget.amount":{kind:`literal`,value:50},"today.budget.warningThreshold":{kind:`literal`,value:80},"block.nativeUtilization":{kind:`input`,path:`block.nativeUtilization`,type:`number`,default:0},"block.resetsAt":{kind:`input`,path:`block.resetsAt`,type:`number`,default:0},"block.budget.warningThreshold":{kind:`literal`,value:80},"block.budget.heatThreshold":{kind:`literal`,value:50},"weekly.percentage":{kind:`input`,path:`weekly.percentage`,type:`number`,default:0},"weekly.resetsAt":{kind:`input`,path:`weekly.resetsAt`,type:`number`,default:0},"weekly.budget.warningThreshold":{kind:`literal`,value:80},"weekly.budget.heatThreshold":{kind:`literal`,value:50},"burn.costPerHour":{kind:`input`,path:`burn.costPerHour`,type:`number`,default:-1},"block.etaMinutes":{kind:`input`,path:`block.etaMinutes`,type:`number`,default:-1},"weekly.etaMinutes":{kind:`input`,path:`weekly.etaMinutes`,type:`number`,default:-1},"burn.eta.warnMinutes":{kind:`literal`,value:60},"burn.eta.errorMinutes":{kind:`literal`,value:30},"speed.input":{kind:`input`,path:`speed.input`,type:`number`,default:-1},"speed.output":{kind:`input`,path:`speed.output`,type:`number`,default:-1},"speed.total":{kind:`input`,path:`speed.total`,type:`number`,default:-1},"speed.history":{kind:`input`,path:`speed.history`,type:`string`,default:``},"context.totalTokens":{kind:`input`,path:`context.totalTokens`,type:`number`,default:0},"context.contextLeft":{kind:`input`,path:`context.contextLeft`,type:`number`,default:100},"metrics.lastResponseTime":{kind:`input`,path:`metrics.lastResponseTime`,type:`number`,default:0},"metrics.responseTime":{kind:`input`,path:`metrics.responseTime`,type:`number`,default:0},"metrics.sessionDuration":{kind:`input`,path:`metrics.sessionDuration`,type:`number`,default:0},"metrics.messageCount":{kind:`input`,path:`metrics.messageCount`,type:`number`,default:0},"metrics.linesAdded":{kind:`input`,path:`metrics.linesAdded`,type:`number`,default:0},"metrics.linesRemoved":{kind:`input`,path:`metrics.linesRemoved`,type:`number`,default:0},"activity.command":{kind:`input`,path:`activity.command`,type:`string`,default:``},"activity.todo.total":{kind:`input`,path:`activity.todo.total`,type:`number`,default:0},"activity.todo.completed":{kind:`input`,path:`activity.todo.completed`,type:`number`,default:0},"activity.todo.position":{kind:`input`,path:`activity.todo.position`,type:`number`,default:0},"activity.todo.active":{kind:`input`,path:`activity.todo.active`,type:`string`,default:``},"activity.tool.running":{kind:`input`,path:`activity.tool.running`,type:`string`,default:``},"activity.tool.done":{kind:`input`,path:`activity.tool.done`,type:`string`,default:``}},segments:{directory:{description:"The current directory, shortened fish-style — `~` under home, project-relative inside the project.",template:qD},model:{description:`The active model's display name.`,template:`✱ {{ formatModelName .model.display_name }}`,when:`{{ ne .model.display_name "" }}`},sessionId:{description:`The session id, truncated to 8 characters.`,template:`⌗{{ trunc 8 .session.id }}`,when:`{{ ne .session.id "" }}`},version:{description:`The Claude Code version reported in the hook payload.`,template:`◈ v{{ .version }}`,when:`{{ ne .version "" }}`},tmux:{description:`The tmux session name; hidden when not inside tmux.`,template:`tmux:{{ .tmux.session | default "none" }}`,when:`{{ ne .tmux.session "" }}`},host:{description:`user@host on a warning background, shown only over SSH.`,template:`⇄ {{ .host.user | default "?" }}@{{ .host.name | default "?" }}`,bg:`warning`,when:`{{ .host.ssh }}`},git:{description:`Branch, sha, ahead/behind, staged/unstaged/untracked/conflict counts, upstream, stash count, and a clean/dirty/conflict glyph.`,template:eO,fg:ZD,when:`{{ ne .git.branch "" }}`},gitaculous:{description:`The same git state in asyncgit's compact spelling: repo, in-progress operation, sha, S/U/? flags, branch, upstream ±, stash count, and time since the last commit.`,template:`(git){{ if ne .git.repoName "" }} {{ .git.repoName }}{{ end }}{{ if ne .git.operation "" }} [{{ .git.operation }}]{{ end }}{{ if ne .git.sha "" }} {{ .git.sha }}{{ end }}{{ if or (gt .git.staged 0) (gt .git.unstaged 0) (gt .git.untracked 0) (gt .git.conflicts 0) }} {{ if gt .git.staged 0 }}${XD(`staged`,`"S"`)}{{ end }}{{ if gt .git.unstaged 0 }}${XD(`unstaged`,`"U"`)}{{ end }}{{ if gt .git.untracked 0 }}${XD(`untracked`,`"?"`)}{{ end }}{{ if gt .git.conflicts 0 }}${XD(`conflicts`,`(printf "!%v" .git.conflicts)`)}{{ end }}{{ end }} ⎇ ${XD(`branch`,`.git.branch`)}{{ if ne .git.upstream "" }} [{{ .git.upstream }}{{ if or (gt .git.ahead 0) (gt .git.behind 0) }} {{ if gt .git.ahead 0 }}${XD(`ahead`,`(printf "+%v" .git.ahead)`)}{{ end }}{{ if and (gt .git.ahead 0) (gt .git.behind 0) }}/{{ end }}{{ if gt .git.behind 0 }}${XD(`behind`,`(printf "-%v" .git.behind)`)}{{ end }}{{ end }}]{{ end }}{{ if gt .git.stash 0 }} ${XD(`stash`,`(printf "(%v stashed)" .git.stash)`)}{{ end }}{{ if gt .git.timeSinceCommit 0 }} ◷ {{ template "formatTimeSince" .git.timeSinceCommit }}{{ end }}`,fg:ZD,when:`{{ ne .git.branch "" }}`},gitPr:{description:"The pull request open for this branch, as a link; `⚠ PR` when the forge lookup failed.",template:`{{ if ne .git.prUrl "" }}{{ link .git.prUrl (printf "⇆ #%v" .git.prNumber) }}{{ else }}⚠ PR{{ end }}`,when:`{{ or (ne .git.prUrl "") (ne .git.prError "") }}`},toolbar:{description:`Quick actions: copy the session id, and open the project, transcript or repo.`,template:wy(``).template},themeSwitcher:{description:"`◀ <theme> ▶`: the theme the bar is wearing; ◀ and ▶ switch this session to the previous or next theme, wrapping at the ends.",template:`{{ carousel "stepTheme" 0 }}`},session:{description:`This session's cost and token total, with a budget warning once a budget is configured.`,template:`§ {{ template "formatCost" .session.cost }} ({{ template "formatTokens" .session.tokens }}){{ template "budgetStatus" (dict "cost" .session.cost "budget" .session.budget.amount "warn" .session.budget.warningThreshold) }}`},today:{description:`Today's cost and tokens across every session, with a budget warning once a budget is configured.`,template:`☉ {{ template "formatCost" .today.cost }} ({{ template "formatTokens" .today.tokens }}){{ template "budgetStatus" (dict "cost" .today.cost "budget" .today.budget.amount "warn" .today.budget.warningThreshold) }}`},block:{description:`The 5-hour rate-limit block: percent used and time to reset, heating to warning then error.`,template:`◱ {{ round .block.nativeUtilization }}% ({{ template "formatResetCountdown" .block.resetsAt }})`,bg:`{{ ramp (round .block.nativeUtilization) "step" 0 (tint) .block.budget.heatThreshold "warning" .block.budget.warningThreshold "error" }}`,when:`{{ gt .block.resetsAt 0 }}`},weekly:{description:`The weekly rate-limit quota: percent used and time to reset, heating to warning then error.`,template:`◑ {{ round .weekly.percentage }}% ({{ template "formatResetCountdown" .weekly.resetsAt }})`,bg:`{{ ramp (round .weekly.percentage) "step" 0 (tint) .weekly.budget.heatThreshold "warning" .weekly.budget.warningThreshold "error" }}`,when:`{{ gt .weekly.resetsAt 0 }}`},burnrate:{description:`Spend per hour, with the projected time to the 5-hour and weekly limits.`,template:`⚡ {{ template "formatRate" .burn.costPerHour }} · {{ template "formatEta" .block.etaMinutes }} to 5h · {{ template "formatEta" .weekly.etaMinutes }} to wk`,bg:`{{ ramp .block.etaMinutes "step" -1 (tint) 0 "error" .burn.eta.errorMinutes "warning" .burn.eta.warnMinutes (tint) }}`,when:`{{ or (gt .block.resetsAt 0) (gt .weekly.resetsAt 0) }}`},speed:{description:`Token throughput for the latest exchange: output, input, and total.`,template:`⇅ out {{ template "formatSpeed" .speed.output }} · in {{ template "formatSpeed" .speed.input }} · tot {{ template "formatSpeed" .speed.total }}`,when:`{{ gt .session.tokens 0 }}`},tokenSparkline:{description:`A sparkline of recent token throughput.`,template:`⚡ {{ sparkline .speed.history 24 }}`,when:`{{ ne .speed.history "" }}`},cacheTimer:{description:"Minutes until the prompt cache expires, or `cold` once it has.",template:`◴ {{ if le (minutesUntilReset .cache.expiresAt) 0 }}cold{{ else }}{{ minutesUntilReset .cache.expiresAt }}m{{ end }}`,fg:`{{ readableOn (color (cascade (minutesUntilReset .cache.expiresAt) "0:error" "9:warning" "21:foreground")) (bgOf) ${Qi} }}`,when:`{{ gt .cache.expiresAt 0 }}`},context:{description:`Context used, in tokens and percent remaining, heating as it fills.`,template:`◔ {{ formatInteger .context.totalTokens }} ({{ .context.contextLeft }}%)`,bg:`{{ ramp .context.contextLeft "step" 0 "error" 21 "warning" 41 (tint) }}`,when:`{{ gt .context.totalTokens 0 }}`},metrics:{description:`Response times, session duration, message count, and lines added/removed.`,template:`{{ if .metrics.lastResponseTime }} Δ {{ template "formatResponseTime" .metrics.lastResponseTime }}{{ end }}{{ if .metrics.responseTime }} ⧖ {{ template "formatResponseTime" .metrics.responseTime }}{{ end }}{{ if .metrics.sessionDuration }} ⧗ {{ template "formatDuration" .metrics.sessionDuration }}{{ end }}{{ if .metrics.messageCount }} ◆ {{ .metrics.messageCount }}{{ end }}{{ if .metrics.linesAdded }} + {{ .metrics.linesAdded }}{{ end }}{{ if .metrics.linesRemoved }} - {{ .metrics.linesRemoved }}{{ end }} `,when:`{{ or (gt .metrics.lastResponseTime 0.0) (gt .metrics.responseTime 0.0) (gt .metrics.sessionDuration 0.0) (gt .metrics.messageCount 0) (gt .metrics.linesAdded 0) (gt .metrics.linesRemoved 0) }}`},activity:{description:`What Claude is doing: the slash command that opened the turn, the in-progress todo, and the tools in flight.`,template:`{{ if .activity.command }} ⌘ {{ .activity.command }}{{ end }}{{ if .activity.todo.total }}{{ if .activity.todo.active }} ☐ {{ .activity.todo.position }}/{{ .activity.todo.total }} {{ abbrev 32 .activity.todo.active }}{{ else }} ☑ {{ .activity.todo.completed }}/{{ .activity.todo.total }}{{ end }}{{ end }}{{ if .activity.tool.running }} ⟳ {{ template "formatToolTally" .activity.tool.running }}{{ end }}{{ if .activity.tool.done }} ✓ {{ template "formatToolTally" .activity.tool.done }}{{ end }} `,when:`{{ or (ne .activity.command "") (gt .activity.todo.total 0) (ne .activity.tool.running "") (ne .activity.tool.done "") }}`}},root:{rows:{identity:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`host`},{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`}]},status:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`segment`,name:`context`},{kind:`segment`,name:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`activity`}]}}},actions:{...wy(``).actions,copyDir:{copy:`{{ .current_dir }}`},stepTheme:{set:`theme`,from:`themes`}},looks:{none:{hueShift:0,chromaScale:1,lightnessScale:1,lightnessShift:0},vivid:{hueShift:0,chromaScale:1.35,lightnessScale:1,lightnessShift:0},muted:{hueShift:0,chromaScale:.55,lightnessScale:1,lightnessShift:0},dim:{hueShift:0,chromaScale:1,lightnessScale:.85,lightnessShift:0},bright:{hueShift:0,chromaScale:1,lightnessScale:1,lightnessShift:.08},inverted:{hueShift:0,chromaScale:1,lightnessScale:-1,lightnessShift:1}},presets:{default:{},compact:{root:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`directory`},{kind:`segment`,name:`git`},{kind:`segment`,name:`context`}]},globals:{padding:0}},verbose:{root:{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`segment`,name:`gitPr`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`segment`,name:`context`},{kind:`segment`,name:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`burnrate`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`speed`},{kind:`segment`,name:`tokenSparkline`}]}]}}},editGlobals:{style:`plain`,default_separator:` | `},helpers:{formatCost:'{{ if lt . 0.01 }}<$0.01{{ else }}${{ printf "%.2f" . }}{{ end }}',formatTokenCount:`{{ if ge . 1000000 }}{{ printf "%.1f" (divf . 1000000) }}M{{ else if ge . 1000 }}{{ printf "%.1f" (divf . 1000) }}K{{ else }}{{ . }}{{ end }}`,formatTokens:`{{ template "formatTokenCount" . }} tokens`,formatToolTally:`{{ $names := splitList "," . }}{{ range $i, $pair := $names }}{{ if lt $i 2 }}{{ if $i }} {{ end }}{{ $kv := splitList ":" $pair }}{{ index $kv 0 }}{{ if ne (index $kv 1) "1" }}×{{ index $kv 1 }}{{ end }}{{ end }}{{ end }}{{ if gt (len $names) 2 }} +{{ sub (len $names) 2 }}{{ end }}`,formatRate:`{{ if lt . 0 }}—/hr{{ else }}{{ template "formatCost" . }}/hr{{ end }}`,formatEta:`{{ if lt . 0 }}—{{ else }}{{ template "formatLongTimeRemaining" . }}{{ end }}`,formatSpeed:`{{ if lt . 0 }}—{{ else }}{{ template "formatTokenCount" (round .) }}/s{{ end }}`,formatTokenBreakdown:`{{ $first := true }}{{ if gt .input 0 }}{{ template "formatTokenCount" .input }} in{{ $first = false }}{{ end }}{{ if gt .output 0 }}{{ if not $first }} + {{ end }}{{ template "formatTokenCount" .output }} out{{ $first = false }}{{ end }}{{ if or (gt .cacheCreation 0) (gt .cacheRead 0) }}{{ if not $first }} + {{ end }}{{ template "formatTokenCount" (add .cacheCreation .cacheRead) }} cached{{ $first = false }}{{ end }}{{ if $first }}0 tokens{{ end }}`,budgetStatus:`{{ if or (le .budget 0) (lt .cost 0) }}{{ else }}{{ $pct := minf 100 (mulf (divf .cost .budget) 100) }}{{ $p := printf "%.0f%%" $pct }}{{ if ge $pct .warn }} !{{ $p }}{{ else }}{{ if ge $pct 50 }} +{{ $p }}{{ else }} {{ $p }}{{ end }}{{ end }}{{ end }}`,formatTimeSince:`{{ if lt . 60 }}{{ . }}s{{ else if lt . 3600 }}{{ div . 60 }}m{{ else if lt . 86400 }}{{ div . 3600 }}h{{ else if lt . 604800 }}{{ div . 86400 }}d{{ else }}{{ div . 604800 }}w{{ end }}`,formatDuration:`{{ if lt . 60 }}{{ printf "%.0f" . }}s{{ else if lt . 3600 }}{{ printf "%.0f" (divf . 60) }}m{{ else if lt . 86400 }}{{ printf "%.1f" (divf . 3600) }}h{{ else }}{{ printf "%.1f" (divf . 86400) }}d{{ end }}`,formatResponseTime:`{{ if lt . 60 }}{{ printf "%.1f" . }}s{{ else }}{{ printf "%.1f" (divf . 60) }}m{{ end }}`,formatLongTimeRemaining:`{{ if ge . 1440 }}{{ $d := div . 1440 }}{{ $h := div (mod . 1440) 60 }}{{ if gt $h 0 }}{{ $d }}d {{ $h }}h{{ else }}{{ $d }}d{{ end }}{{ else if ge . 60 }}{{ $h := div . 60 }}{{ $m := mod . 60 }}{{ if gt $m 0 }}{{ $h }}h {{ $m }}m{{ else }}{{ $h }}h{{ end }}{{ else }}{{ . }}m{{ end }}`,formatResetCountdown:`{{ template "formatLongTimeRemaining" (add 1 (minutesUntilReset .)) }}`}},nO=new Set([tO.globals.palette,...Object.values(tO.segments).map(e=>e.palette)].filter(e=>e!==void 0)),rO=Ks(fS(`<default>`,JSON.stringify(tO),nO),tO);function iO(e,t){return e===void 0?!0:e.evaluate(t).map(e=>e.plain).join(``)!==`false`}function aO(e,t){let n=H.fromFragments(e);return n.end=``,n.noWrap=!0,t!==void 0&&!t.isNull&&(n.style=t),n}function oO(e,t,n){e.cellLength>t?e.truncate(t,{mode:n.truncate,marker:n.truncateMarker}):e.cellLength<t&&e.align(n.justify,t)}function sO({text:e,trail:t}){if(t===void 0)return e;let n=aO([e,t]);return n.style=e.style,n}function cO(e,t){let{width:n,justify:r,truncate:i,truncateMarker:a=`…`,baseStyle:o,padding:s,trail:c=[]}=t;if(e.length===0)return[];let l=aO(e,o).pad(s),u=c.length===0?{}:{trail:aO([...c,new H(` `.repeat(s))],o)};if(n===`auto`)return[{text:l,...u}];let d={justify:r,truncate:i,truncateMarker:a};return n===`fill`?[{text:l,fill:d,...u}]:(oO(l,n,d),[{text:l,...u}])}const lO=RegExp(`\\x1b\\[[0-9;]*m|${Jr.source}`,`g`);function uO(e){return O(e.replace(lO,``))}function dO(e,t){let n=e.map(sO),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=hT(n,t).split(`
178
- `);if(i.length>1)return n;let a=Math.max(0,t.width-uO(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];oO(l,l.cellLength+c,i),n[t]=sO(e[t])}),n}function fO(e,t){let n=[],r=[],i=()=>{if(!r.length)return;let e=pO(r,t);e.plain.length>0&&n.push(e),r=[]};for(let a of e)if(hO(a.style).link){i();let e=pO([a],t);e.plain.length>0&&n.push(e)}else r.push(a);return i(),n}function pO(e,t){let n=t!==void 0&&!t.isNull?e.map(e=>mO(e,t)):e,r=H.fromFragments(n);return r.end=``,r.noWrap=!0,n.length===1?r.style=n[0].style:t!==void 0&&!t.isNull&&(r.style=t),r}function mO(e,t){let n=e.copy();return n.style=t.add(hO(e.style)),n}function hO(e){return e instanceof B?e:B.parse(e)}var gO=class extends Error{constructor(e,t,n){super(`Invalid ${t} color ${JSON.stringify(e)}: ${n}`),this.name=`ColorSpecError`}};function _O(e,t,n,r,i){let{palette:a,tint:o}=e,s=vO(n,i),c=s===void 0?o:yO(a,s,`bg`);e.bg=c;let l=vO(r,i),u=l===void 0?$i(a,c,t):yO(a,l,`fg`);return new B({bgcolor:N.fromRgba(c),color:N.fromRgba(u)})}function vO(e,t){if(e!==void 0)return e.evaluate(t).map(e=>e.plain).join(``)}function yO(e,t,n){try{return Hn(e,t)}catch(e){throw e instanceof zn?new gO(t,n,e.message):e}}function bO(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,xO(e,t,o,n,r,i));return i}function xO(e,t,n,r,i,a){if(wb(n)){let[o,s]=Tb(n);return SO(r.get(n.persistWhen)??n.persistWhen,n.set,xO(e,t,o,r,i,a),xO(e,t,s,r,i,a))}if(`set`in n){let e=r.get(n.set)??n.set;if(`to`in n)return{kind:`set-literal`,key:n.set,value:n.to,stateVar:e};if(`from`in n){let t=Px(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=xv.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=Px(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=Px(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:wO(e,n.copy,t)};if(`open`in n)return{kind:`open`,target:wO(e,n.open,t)};if(`reset`in n)return{kind:`reset`,key:n.reset};if(`doctor`in n)return n.doctor===`run`?{kind:`doctor-run`}:{kind:`doctor-fix`,check:n.check};if(`undo`in n)return{kind:`undo`};if(`redo`in n)return{kind:`redo`};let[o,...s]=n.do.map(e=>{let n=a.get(e);if(n===void 0)throw Error(`action "${t}" fires "${e}", which is not declared in this config`);return n});return{kind:`do`,head:o,rest:s}}function SO(e,t,n,r){return{kind:`dual`,selector:e,session:`stateVar`in n&&`stateVar`in r?{...n,stateVar:r.stateVar}:n,durable:r,sessionKey:t}}function CO(e,t){return e.kind===`do`?CO(e.head,t):e.kind===`dual`?Za(TO(t,e.selector))===!0?e.durable:e.session:e}function wO(e,t,n){try{return e(t)}catch(e){throw Error(`Template parse error in actions.${n}: ${e.message}`,{cause:e})}}function TO(e,t){return e.has(t)?xg(e.read(t)):``}function EO(e,t){return e.evaluate(t).map(e=>e.plain).join(``)}function DO(e,t,n,r){let i=new H(e,{style:B.combine([r,new B({link:t,bold:n})])});return i.noWrap=!0,i.end=``,i}function OO(e,t){return Math.max(e.members.indexOf(TO(t,e.stateVar)),0)}function kO(e,t,n,r,i){switch(e.kind){case`set-literal`:{let t=TO(r,e.stateVar);return{effects:[{verb:DC,args:[i,e.key,e.value]}],active:t===e.value}}case`set-option`:{let a=n??t,o=TO(r,e.stateVar);return{effects:[{verb:DC,args:[i,e.key,a]}],active:o===a}}case`set-int`:{let a=n??t,o=TO(r,e.stateVar);return{effects:[{verb:DC,args:[i,e.key,a]}],active:o===a}}case`set-cycle`:{let t=e.members[(OO(e,r)+1)%e.members.length];return{effects:[{verb:DC,args:[i,e.key,t]}],active:!1}}case`set-bounded`:return{effects:[{verb:OC,args:[i,e.key,String(e.by)]}],active:!1};case`copy`:return{effects:[{verb:kC,args:[EO(e.text,f_(r))]}],active:!1};case`open`:return{effects:[{verb:AC,args:[EO(e.target,f_(r))]}],active:!1};case`persist-literal`:{let t=TO(r,e.stateVar);return{effects:[{verb:PC,args:[i,e.key,e.value]}],active:t===e.value}}case`persist-option`:{let a=n??t,o=TO(r,e.stateVar);return{effects:[{verb:PC,args:[i,e.key,a]}],active:o===a}}case`persist-cycle`:{let t=e.members[(OO(e,r)+1)%e.members.length];return{effects:[{verb:PC,args:[i,e.key,t]}],active:!1}}case`persist-bounded`:return{effects:[{verb:FC,args:[i,e.key,String(e.by)]}],active:!1};case`reset`:return{effects:[{verb:IC,args:[i,e.key]}],active:!1};case`undo`:return{effects:[{verb:RC,args:[i]}],active:!1};case`redo`:return{effects:[{verb:zC,args:[i]}],active:!1};case`doctor-run`:return{effects:[{verb:VC,args:[i]}],active:!1};case`doctor-fix`:return{effects:[{verb:HC,args:[i,e.check]}],active:!1};case`layout-op`:return{effects:[{verb:LC,args:[i,e.key,Tv(e.op)]}],active:!1};case`dual`:{let a=CO(e,r),{effects:o,active:s}=kO(a,t,n,r,i);return a===e.durable?{effects:o.map(t=>({...t,args:[...t.args,e.sessionKey]})),active:s}:{effects:o,active:s}}case`do`:{let a=kO(e.head,t,n,r,i);return{effects:[...a.effects,...e.rest.flatMap(e=>kO(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:LC,args:[i,e.key,Tv(r)]}],active:!1}}}}function AO(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:Zs(`action "${e}"`,n,t.members.length,OO(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 jO(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}=AO(e,CO(r,i),t,i),{effects:s,active:c}=kO(r,a,o,i,TO(i,`session.id`));return DO(a,GC(s),c)}function MO(e){return{action:{fn:(t,...n)=>jO(t,n,e),argTypes:[`string`,`string`],returnType:`T`}}}function NO(e,t){return DO(`✕`,GC([{verb:DC,args:[TO(e,`session.id`),t,Js]}]),!1)}function PO(e,t,n){return new B({bgcolor:N.fromRgba(t),color:N.fromRgba($i(e,t,n))})}function FO(e,t,n){return PO(e.palette,fa(e.palette,e.disclosure,[t],n),n)}function IO(e,t,n,r,i){return r===void 0?n=>FO(e,{...n,distribution:t},i):(e,t)=>LO(r(t,n),i)}function LO(e,t){let n=Ui(e,`background`);return new B({bgcolor:N.fromRgba(n),color:N.fromRgba(Yn(Ui(e,`primary`),n,4.5,t))})}function RO(e){return{current:null,drawnAt:e}}function zO(e,t,n,r,i){let a={segName:t,palette:n,disclosure:r,tint:i,bg:void 0,drops:[]};return e.current=a,a}function BO(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 VO(e){return new H(e).cellLength}function HO(e){return Math.max(1,e.width-e.chromeCols-2*e.padding)}function UO(e){return Math.max(1,HO(e)-(VO(`✕`)+2*e.padding+e.seamCols))}function WO(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 GO(e,t){let n=[];for(let t of e)n.length>0&&n.push(new H(` `)),n.push(t);let r=H.fromFragments(n);return r.noWrap=t,r.end=``,r}function KO(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 qO(e,t,n){let r=e.compiled.get(t),i=r&&CO(r,e.store);if(!i||i.kind!==`set-option`&&i.kind!==`persist-option`&&i.kind!==`layout-op-option`)throw Error(`${n} references action "${t}" which must be a set-option, persist-option, or layout-op-option action ({ set, from }, { persist, from }, or { persist, insertSegmentFrom, anchor, relation }), got ${i?`a ${i.kind} action`:`no such action`}`);return i}function JO(e,t,n,r,i,a,o){let s=qO(a,e,`picker`),c=a.compiled.get(e),l=a.store,u=TO(l,`session.id`),d=`stateVar`in s?TO(l,s.stateVar):void 0,f=s.options.map(VO),p=i?HO(a):1/0,m=VO(`✕`)+1,h=VO(`←`)+1+VO(`→`)+1,g=WO(f,p,m),_=g.length>1?WO(f,p,m+h):g,v=parseInt(TO(l,t.stateVar),10),y=Number.isInteger(v)?Math.max(0,Math.min(v,_.length-1)):0,b=_[y]??[],x=e=>GC([{verb:DC,args:[u,t.key,String(e)]}]),S=n.flatMap(([e,t])=>[e,t]),C=GC([{verb:DC,args:[u,...S]}]),ee=r?[{verb:DC,args:[u,...S]}]:[],te=e=>GC([...kO(c,e,e,l,u).effects,...ee]),ne=[DO(`✕`,C,!1)];y>0&&ne.push(DO(`←`,x(y-1),!1));for(let e of b){let t=s.options[e];ne.push(DO(t,te(t),t===d,o({index:e,count:s.options.length},t)))}return y<_.length-1&&ne.push(DO(`→`,x(y+1),!1)),GO(ne,i)}function YO(e,t){return{picker:{fn:(n,r,i,a)=>{let o=KO(e,r,`set-int`,`an int action ({ set, int: true })`);return JO(n,{key:o.key,stateVar:o.stateVar},[[o.key,`-1`]],i===!0,a===!0,e,IO(BO(t,`{{ picker }}`),Li(void 0),e.basePalette,qO(e,n,`picker`).paletteOf,t.drawnAt()))},argTypes:[`string`,`string`,`bool`,`bool`],returnType:`T`}}}function XO(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+VO(e(-(s+1)))+1+VO(e(s+1))+1;if(t>r)break;o=t,s+=1}return s}function ZO(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=TO(a,`session.id`),{options:c}=t,l=c.length,u=TO(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=GC(kO(o,p(e),p(e),a,s).effects);return m.set(e,n),n},g=e=>DO(p(e),h(e),p(e)===u,r({index:f(e),count:l},p(e))),_=XO(p,l,VO(`◀`)+1+VO(p(0))+1+VO(`▶`),UO(n),i),v=e=>Array.from({length:_},(t,n)=>g(e*(n+1)));return GO([...v(-1).reverse(),DO(`◀`,h(-1),!1),g(0),DO(`▶`,h(1),!1),...v(1)],!0)}function QO(e,t){return{carousel:{fn:(n,r,...i)=>{if(i.length>0)throw Error(`carousel "${n}": takes at most one neighbours count after the action name, got ${1+i.length}`);if(r!==void 0&&!(Number.isInteger(r)&&r>=0))throw Error(`carousel "${n}": neighbours must be a whole number ≥ 0 (0 shows only ◀ CURRENT ▶), got ${String(r)}`);let a=r??1/0,o=qO(e,n,`carousel`);return ZO(n,o,e,IO(BO(t,`{{ carousel }}`),Li(void 0),e.basePalette,o.paletteOf,t.drawnAt()),a)},argTypes:[`string`,`float`],returnType:`T`}}}const $O=[`~/code`,`main`,`opus`,`42%`,`5m`,`$1.20`];function ek(e,t,n){let r=aa(e,{hue:Ai,depth:0},n);return[U(t).map((t,n)=>({text:$O[n%$O.length],colour:Wi(e,t)})),[{text:`▾ open`,colour:r.state},{text:`menu`,colour:r.plane}],[{text:`warn`,colour:Ui(e,`warning`)},{text:`error`,colour:Ui(e,`error`)}]]}function tk(e,t,n,r){let i=ek(e,t,n).flatMap((t,r)=>t.map(({text:t,colour:i},a)=>({gap:r>0&&a===0?` `:``,cell:new H(` ${t} `,{style:PO(e,i,n)})}))),a=[],o=0;for(let{gap:e,cell:t}of i){if(o+=e.length+t.cellLength,o>r)break;e!==``&&a.push(new H(e)),a.push(t)}let s=H.fromFragments(a);return s.noWrap=!0,s.end=``,s}function nk(e,t){return{themePreview:{fn:()=>tk(e.palette,e.progression,t.drawnAt(),UO(e)),argTypes:[],returnType:`T`}}}const rk=e=>e.slice(e.lastIndexOf(`.`)+1),ik=(e,t)=>{let n=new H(rk(e));return n.truncate(t,{marker:`…`}),n.plain};function ak(e,t){let n=e.map(e=>e.map(({name:e})=>VO(rk(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 ok(e,t,n,r){let i=ak(e,r),a=e.map(e=>{let a=[],o=0;for(let{name:s,address:c,palette:l}of e){let e=new H(` ${ik(s,i)} `,{style:PO(l,ga(l,{kind:`bar`,progression:t,address:c},n).tint,n)});if(o+=e.cellLength,o>r)break;a.push(e)}return a}),o=H.fromFragments(a.flatMap((e,t)=>t===0?e:[new H(`
179
- `),...e]));return o.noWrap=!0,o.end=``,o}function sk(e,t){return{layoutPreview:{fn:()=>ok(e.layout(),e.progression,t.drawnAt(),UO(e)),argTypes:[],returnType:`T`}}}function ck(e,t,n,r){let i=BO(r.activeSegment,`{{ menu }}`),a=r.action,o=Fh(i.segName,e,n.key),s=Rh(o),c=Ph(e),l=TO(a.store,o)===c,u=TO(a.store,`session.id`),d=l?Js:c,f=DO(Zs(`{{ menu "${e}" }}`,t,2,+!!l),GC([{verb:DC,args:[u,o,d,s,`0`]}]),!1);return i.drops.push(...l?[JO(e,{key:s,stateVar:s},[[o,Js],[s,`0`]],n.closeOnPick,n.paged,a,IO(i,n.distribution,a.basePalette,qO(a,e,`menu`).paletteOf,r.activeSegment.drawnAt()))]:[]),f}const lk=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function uk(e,t){let n=t[t.length-1],r=lk(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:Hh(r??{})}}function dk(e){return{menu:{fn:(t,...n)=>{let{displays:r,options:i}=uk(t,n);return ck(t,r,i,e)},argTypes:[`string`,`value`],returnType:`T`}}}function fk(e){let{value:t,max:n,width:r,filled:i,empty:a,colourAt:o}=e,s=pk(t,n,r),c=[];for(let e=0;e<r;e++){let t=e<s,l=t&&o!==void 0?o(e*n/r):void 0;c.push(new H(t?i:a,{style:l===void 0?void 0:new B({color:l})}))}let l=H.fromFragments(c);return l.end=``,l.noWrap=!0,l}function pk(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 mk(e){let t={fn:(()=>{let t=BO(e,`{{ bgOf }}`);if(t.bg===void 0)throw Error(`{{ bgOf }} is not available while segments.${t.segName}'s own "bg:" is being evaluated — the background is what that template computes. Reach for a palette color there instead, e.g. bg: '{{ darken (color "surface") 1 }}'.`);return t.bg.hex}),argTypes:[],returnType:`string`},n={fn:(()=>BO(e,`{{ tint }}`).tint.hex),argTypes:[],returnType:`string`},r=qg(()=>BO(e,`{{ color }} / {{ ramp }} / {{ gauge }}`).palette),i={fn:((e,t,n,i,a,o,...s)=>fk({value:e,max:t,width:n,filled:i,empty:a,colourAt:o===void 0||s.length===0?void 0:e=>String(r.ramp.fn(e,o,...hk(s)))})),argTypes:[`float`,`float`,`int`,`string`,`string`,`string`,`string`],returnType:`T`};return{...r,bgOf:t,tint:n,gauge:i}}function hk(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 gk(e){let t=[],n=[];for(let r of e){if(!r.contains(`
177
+ `),r=+!t;for(let e=n.length-1;e>=r;e--){let t=n[e];if(!t||!bD.test(t))continue;let r=xD(t);if(r!=null)return r}return null}function TD(e,t,n){let r=Fv(t(`preset`),e.globals.preset,e.presets),i=Rv(e,r),a=t(`edit.mode`)===`open`?e.editGlobals:{};return{preset:r,presetCustomized:n(r),theme:jx(a.palette,t(`theme`),i.palette),look:ja(a.look,t(`look`),i.look,e.looks),style:Pa(a.style,t(`style`),i.style),progression:Ka(a.progression,t(`progression`),i.progression),separator:a.default_separator??i.default_separator,autoWrap:$a(a.autoWrap,t(`autoWrap`),i.autoWrap),padding:eo(a.padding,t(`padding`),i.padding),charset:Ra(a.charset,t(`charset`),i.charset),updateNotice:a.updateNotice??i.updateNotice??!0,colorCompatibility:Ha(a.colorCompatibility,t(`colorCompatibility`),i.colorCompatibility)}}function ED(e){return{preset:{effective:e.preset,customized:e.presetCustomized},style:{effective:e.style},progression:{effective:e.progression},charset:{effective:e.charset},colorCompatibility:{effective:e.colorCompatibility},autoWrap:{effective:e.autoWrap},padding:{effective:e.padding}}}const DD=10*1e3;function OD(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 kD(e,t){if(!(t<60))return e*3600/t}function AD(e,t,n,r){let i=r-t;if(i<50||i>DD)return;let a=n-e;if(!(a<=0))return a*1e3/i}function jD(e){let{prev:t,cur:n}=e;if(t===void 0)return;let r=AD(t.input,t.atMs,n.input,n.atMs),i=AD(t.output,t.atMs,n.output,n.atMs),a=AD(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 MD(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>DD)continue;let o=AD(r.total,r.atMs,i.total,i.atMs);n.push(o??0)}if(n.length!==0)return n.join(`,`)}function ND(e){let t=e.indexOf(`.`);return t<0?e:e.slice(0,t)}function PD(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`,()=>ND(f.hostname())),i=n(`user`,()=>f.userInfo().username);return{host:{...r!==void 0&&{name:r},...i!==void 0&&{user:i},...e.ssh!==void 0&&{ssh:e.ssh}},failures:t}}function FD(e,t){let n=new Map;for(let[t,r]of Object.entries(e.variables))n.set(t,r);for(let[t,r]of Object.entries(e.segments))if(r.vars)for(let[e,i]of Object.entries(r.vars))n.set(`${t}.${e}`,i);let r=[],i=new Set;for(let n of Xo(Lv(e,t).node)){if(n.when)for(let e of fg(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 fg(e))r.push(t)}}let a=new Set;for(;r.length>0;){let e=r.pop();for(let t of LD(n,e)){if(i.has(t))continue;i.add(t);let e=n.get(t);if(e){if(e.kind===`input`)a.add(e.path);else if(e.kind===`template`)for(let t of fg(e.template))r.push(t)}}}return a}function ID(e){let t=new Map;return n=>{let r=t.get(n);if(r!==void 0)return r;let i=FD(e,n);return t.set(n,i),i}}function LD(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 RD(e,t){for(let n of e)if(n===t||n.startsWith(t+`.`))return!0;return!1}function zD(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 BD(e,t,n,r,i,a){let o=e=>RD(r,e),s=(t.clock??(()=>new Date))().getTime(),c=(e,t,n)=>t?n().catch(t=>X(`${e}: ${String(t)}`)):Promise.resolve(Y),[l,u,d,f,p,m,h,g,_]=await Promise.all([c(`git`,o(`git`),()=>t.gitProvider.getGitInfo(n??e.workspace?.current_dir,zD(r),e.workspace?.project_dir)),c(`session`,o(`session.cost`)||o(`session.tokens`)||o(`burn`),()=>t.usageStore.getUsageInfo(e.session_id,e)),c(`today`,o(`today`),()=>t.usageStore.getTodayInfo(e)),c(`context`,o(`context`),()=>t.contextProvider.getContextInfo(e)),c(`metrics`,o(`metrics`)||o(`burn`),()=>t.metricsProvider.getMetricsInfo(e.session_id,e)),c(`activity`,o(`activity`),()=>t.activityProvider.getActivityInfo(e.session_id,e)),c(`tmux`,o(`tmux`),()=>t.tmuxService.getSessionId()),c(`cache`,o(`cache`),()=>SD(e.transcript_path)),c(`speed`,o(`speed`),()=>t.usageStore.observeSpeed(e.session_id,e.transcript_path,s))]),v=[],y=e=>{if(e.kind===`failed`){v.push(e.reason);return}return e.kind===`ok`?e.value:void 0},b=GD(l);v.push(...b.failures);let x=PD(a);v.push(...x.failures);let S=y(u),C=y(d),ee=y(f),te=y(p),ne=y(m),re=y(h),ie=y(g);for(let e of v)t.log(`warn`,`provider fetch failed: ${e}`);let ae=e.rate_limits?.five_hour,w=e.rate_limits?.seven_day,T=ae?OD(ae.used_percentage,ae.resets_at,18e6,s):void 0,oe=w?OD(w.used_percentage,w.resets_at,6048e5,s):void 0,se=S?.session.cost,ce=te?.sessionDuration,le=o(`burn`)&&se!=null&&ce!=null?kD(se,ce):void 0,ue=y(_),de=ue===void 0?void 0:jD(ue),fe=ue===void 0?void 0:MD(ue),pe=de!==void 0||fe!==void 0?{...de,...fe!==void 0&&{history:fe}}:void 0,me=WD(process.env.HOME??process.env.USERPROFILE),he=e.workspace?{...e.workspace,current_dir:WD(e.workspace.current_dir)??``,project_dir:WD(e.workspace.project_dir)??``}:e.workspace,ge=S===void 0?void 0:UD({cost:S.session.cost,tokens:S.session.tokens}),E=C===void 0?void 0:{cost:C.cost,tokens:C.tokens},_e=te===void 0?void 0:UD({lastResponseTime:te.lastResponseTime,responseTime:te.responseTime,sessionDuration:te.sessionDuration,messageCount:te.messageCount,linesAdded:te.linesAdded,linesRemoved:te.linesRemoved}),ve=ne===void 0?void 0:VD(ne);return{...e,...he!==void 0&&{workspace:he},...me!==void 0&&{home:me},...b.git!==void 0&&{git:b.git},...re!==void 0&&{tmux:{session:re}},host:x.host,...ED(i),history:t.history(e.session_id),...ge!==void 0&&{session:ge},...E!==void 0&&{today:E},...le!==void 0&&{burn:{costPerHour:le}},...pe!==void 0&&{speed:pe},...o(`block`)&&ae!==void 0&&{block:{nativeUtilization:ae.used_percentage,resetsAt:ae.resets_at,...T!==void 0&&{etaMinutes:T}}},...w!==void 0&&{weekly:{percentage:w.used_percentage,resetsAt:w.resets_at,...oe!==void 0&&{etaMinutes:oe}}},...ie!==void 0&&{cache:{expiresAt:ie}},...ee!==void 0&&{context:{totalTokens:ee.totalTokens,contextLeft:ee.contextLeftPercentage}},..._e!==void 0&&{metrics:_e},...ve!==void 0&&{activity:ve}}}function VD(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=HD(e.running),i=HD(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 HD(e){return e.length===0?void 0:e.map(e=>`${e.name}:${e.count}`).join(`,`)}function UD(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 WD(e){return e===void 0||e.length===0||c.sep!==`\\`?e:e.replace(/\\/g,`/`)}function GD(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 KD=`trimPrefix "/" (trimPrefix .project_dir .current_dir)`,qD=`{{ \$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 (${KD}) (basename .project_dir) (ne (${KD}) "") }}{{ end }}{{ end }}{{ abbreviatePath \$dir }}`,JD={branch:`primary`,staged:`success`,unstaged:`warning`,untracked:`accent`,conflicts:`error`,dirty:`warning`,clean:`success`,ahead:`success`,behind:`warning`,stash:`accent`},YD=(e,t)=>`{{ fg (readableOn (color "${e}") (bgOf) ${Qi}) ${t} }}`,XD=(e,t)=>YD(JD[e],t),ZD=`{{ readableOn (mix (color "foreground") (bgOf) 60) (bgOf) 3 }}`,QD=`{{ if or (gt .git.staged 0) (gt .git.unstaged 0) (gt .git.untracked 0) (gt .git.conflicts 0) }} ({{ \$first := true }}{{ if gt .git.staged 0 }}${XD(`staged`,`(printf "+%v" .git.staged)`)}{{ $first = false }}{{ end }}{{ if gt .git.unstaged 0 }}{{ if not $first }} {{ end }}${XD(`unstaged`,`(printf "~%v" .git.unstaged)`)}{{ $first = false }}{{ end }}{{ if gt .git.untracked 0 }}{{ if not $first }} {{ end }}${XD(`untracked`,`(printf "?%v" .git.untracked)`)}{{ $first = false }}{{ end }}{{ if gt .git.conflicts 0 }}{{ if not $first }} {{ end }}${XD(`conflicts`,`(printf "!%v" .git.conflicts)`)}{{ $first = false }}{{ end }}){{ end }}`,$D=`{{ if eq .git.status "conflicts" }}${XD(`conflicts`,`"⚠"`)}{{ else }}{{ if eq .git.status "dirty" }}${XD(`dirty`,`"●"`)}{{ else }}${XD(`clean`,`"✓"`)}{{ end }}{{ end }}`,eO=`{{ if ne .git.repoName "" }}{{ .git.repoName }} {{ end }}⎇ ${XD(`branch`,`.git.branch`)}{{ if .git.sha }} ♯ {{ .git.sha }}{{ end }}{{ if or (gt .git.ahead 0) (gt .git.behind 0) }} {{ if gt .git.ahead 0 }}${XD(`ahead`,`(printf "↑%v" .git.ahead)`)}{{ end }}{{ if gt .git.behind 0 }}${XD(`behind`,`(printf "↓%v" .git.behind)`)}{{ end }}{{ end }}`+QD+`{{ if .git.upstream }} →{{ .git.upstream }}{{ end }}{{ if gt .git.stash 0 }} ${XD(`stash`,`(printf "⧇ %v" .git.stash)`)}{{ end }} `+$D,tO={globals:{palette:`tokyo-night`},variables:{...Sv,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.prNumber":{kind:`input`,path:`git.prNumber`,type:`number`,default:0},"git.prState":{kind:`input`,path:`git.prState`,default:``},"git.prUrl":{kind:`input`,path:`git.prUrl`,default:``},"git.prError":{kind:`input`,path:`git.prError`,default:``},"cache.expiresAt":{kind:`input`,path:`cache.expiresAt`,type:`number`,default:0},"session.cost":{kind:`input`,path:`session.cost`,type:`number`,default:0},"session.tokens":{kind:`input`,path:`session.tokens`,type:`number`,default:0},"session.budget.amount":{kind:`literal`,value:0},"session.budget.warningThreshold":{kind:`literal`,value:80},"today.cost":{kind:`input`,path:`today.cost`,type:`number`,default:0},"today.tokens":{kind:`input`,path:`today.tokens`,type:`number`,default:0},"today.budget.amount":{kind:`literal`,value:50},"today.budget.warningThreshold":{kind:`literal`,value:80},"block.nativeUtilization":{kind:`input`,path:`block.nativeUtilization`,type:`number`,default:0},"block.resetsAt":{kind:`input`,path:`block.resetsAt`,type:`number`,default:0},"block.budget.warningThreshold":{kind:`literal`,value:80},"block.budget.heatThreshold":{kind:`literal`,value:50},"weekly.percentage":{kind:`input`,path:`weekly.percentage`,type:`number`,default:0},"weekly.resetsAt":{kind:`input`,path:`weekly.resetsAt`,type:`number`,default:0},"weekly.budget.warningThreshold":{kind:`literal`,value:80},"weekly.budget.heatThreshold":{kind:`literal`,value:50},"burn.costPerHour":{kind:`input`,path:`burn.costPerHour`,type:`number`,default:-1},"block.etaMinutes":{kind:`input`,path:`block.etaMinutes`,type:`number`,default:-1},"weekly.etaMinutes":{kind:`input`,path:`weekly.etaMinutes`,type:`number`,default:-1},"burn.eta.warnMinutes":{kind:`literal`,value:60},"burn.eta.errorMinutes":{kind:`literal`,value:30},"speed.input":{kind:`input`,path:`speed.input`,type:`number`,default:-1},"speed.output":{kind:`input`,path:`speed.output`,type:`number`,default:-1},"speed.total":{kind:`input`,path:`speed.total`,type:`number`,default:-1},"speed.history":{kind:`input`,path:`speed.history`,type:`string`,default:``},"context.totalTokens":{kind:`input`,path:`context.totalTokens`,type:`number`,default:0},"context.contextLeft":{kind:`input`,path:`context.contextLeft`,type:`number`,default:100},"metrics.lastResponseTime":{kind:`input`,path:`metrics.lastResponseTime`,type:`number`,default:0},"metrics.responseTime":{kind:`input`,path:`metrics.responseTime`,type:`number`,default:0},"metrics.sessionDuration":{kind:`input`,path:`metrics.sessionDuration`,type:`number`,default:0},"metrics.messageCount":{kind:`input`,path:`metrics.messageCount`,type:`number`,default:0},"metrics.linesAdded":{kind:`input`,path:`metrics.linesAdded`,type:`number`,default:0},"metrics.linesRemoved":{kind:`input`,path:`metrics.linesRemoved`,type:`number`,default:0},"activity.command":{kind:`input`,path:`activity.command`,type:`string`,default:``},"activity.todo.total":{kind:`input`,path:`activity.todo.total`,type:`number`,default:0},"activity.todo.completed":{kind:`input`,path:`activity.todo.completed`,type:`number`,default:0},"activity.todo.position":{kind:`input`,path:`activity.todo.position`,type:`number`,default:0},"activity.todo.active":{kind:`input`,path:`activity.todo.active`,type:`string`,default:``},"activity.tool.running":{kind:`input`,path:`activity.tool.running`,type:`string`,default:``},"activity.tool.done":{kind:`input`,path:`activity.tool.done`,type:`string`,default:``}},segments:{directory:{description:"The current directory, shortened fish-style — `~` under home, project-relative inside the project.",template:qD},model:{description:`The active model's display name.`,template:`✱ {{ formatModelName .model.display_name }}`,when:`{{ ne .model.display_name "" }}`},sessionId:{description:`The session id, truncated to 8 characters.`,template:`⌗{{ trunc 8 .session.id }}`,when:`{{ ne .session.id "" }}`},version:{description:`The Claude Code version reported in the hook payload.`,template:`◈ v{{ .version }}`,when:`{{ ne .version "" }}`},tmux:{description:`The tmux session name; hidden when not inside tmux.`,template:`tmux:{{ .tmux.session | default "none" }}`,when:`{{ ne .tmux.session "" }}`},host:{description:`user@host on a warning background, shown only over SSH.`,template:`⇄ {{ .host.user | default "?" }}@{{ .host.name | default "?" }}`,bg:`warning`,when:`{{ .host.ssh }}`},git:{description:`Branch, sha, ahead/behind, staged/unstaged/untracked/conflict counts, upstream, stash count, and a clean/dirty/conflict glyph.`,template:eO,fg:ZD,when:`{{ ne .git.branch "" }}`},gitaculous:{description:`The same git state in asyncgit's compact spelling: repo, in-progress operation, sha, S/U/? flags, branch, upstream ±, stash count, and time since the last commit.`,template:`(git){{ if ne .git.repoName "" }} {{ .git.repoName }}{{ end }}{{ if ne .git.operation "" }} [{{ .git.operation }}]{{ end }}{{ if ne .git.sha "" }} {{ .git.sha }}{{ end }}{{ if or (gt .git.staged 0) (gt .git.unstaged 0) (gt .git.untracked 0) (gt .git.conflicts 0) }} {{ if gt .git.staged 0 }}${XD(`staged`,`"S"`)}{{ end }}{{ if gt .git.unstaged 0 }}${XD(`unstaged`,`"U"`)}{{ end }}{{ if gt .git.untracked 0 }}${XD(`untracked`,`"?"`)}{{ end }}{{ if gt .git.conflicts 0 }}${XD(`conflicts`,`(printf "!%v" .git.conflicts)`)}{{ end }}{{ end }} ⎇ ${XD(`branch`,`.git.branch`)}{{ if ne .git.upstream "" }} [{{ .git.upstream }}{{ if or (gt .git.ahead 0) (gt .git.behind 0) }} {{ if gt .git.ahead 0 }}${XD(`ahead`,`(printf "+%v" .git.ahead)`)}{{ end }}{{ if and (gt .git.ahead 0) (gt .git.behind 0) }}/{{ end }}{{ if gt .git.behind 0 }}${XD(`behind`,`(printf "-%v" .git.behind)`)}{{ end }}{{ end }}]{{ end }}{{ if gt .git.stash 0 }} ${XD(`stash`,`(printf "(%v stashed)" .git.stash)`)}{{ end }}{{ if gt .git.timeSinceCommit 0 }} ◷ {{ template "formatTimeSince" .git.timeSinceCommit }}{{ end }}`,fg:ZD,when:`{{ ne .git.branch "" }}`},gitPr:{description:"The pull request open for this branch, as a link; `⚠ PR` when the forge lookup failed.",template:`{{ if ne .git.prUrl "" }}{{ link .git.prUrl (printf "⇆ #%v" .git.prNumber) }}{{ else }}⚠ PR{{ end }}`,when:`{{ or (ne .git.prUrl "") (ne .git.prError "") }}`},toolbar:{description:`Quick actions: copy the session id, and open the project, transcript or repo.`,template:Oy(``).template},themeSwitcher:{description:"`◀ <theme> ▶`: the theme the bar is wearing; ◀ and ▶ switch this session to the previous or next theme, wrapping at the ends.",template:`{{ carousel "stepTheme" 0 }}`},session:{description:`This session's cost and token total, with a budget warning once a budget is configured.`,template:`§ {{ template "formatCost" .session.cost }} ({{ template "formatTokens" .session.tokens }}){{ template "budgetStatus" (dict "cost" .session.cost "budget" .session.budget.amount "warn" .session.budget.warningThreshold) }}`},today:{description:`Today's cost and tokens across every session, with a budget warning once a budget is configured.`,template:`☉ {{ template "formatCost" .today.cost }} ({{ template "formatTokens" .today.tokens }}){{ template "budgetStatus" (dict "cost" .today.cost "budget" .today.budget.amount "warn" .today.budget.warningThreshold) }}`},block:{description:`The 5-hour rate-limit block: percent used and time to reset, heating to warning then error.`,template:`◱ {{ round .block.nativeUtilization }}% ({{ template "formatResetCountdown" .block.resetsAt }})`,bg:`{{ ramp (round .block.nativeUtilization) "step" 0 (tint) .block.budget.heatThreshold "warning" .block.budget.warningThreshold "error" }}`,when:`{{ gt .block.resetsAt 0 }}`},weekly:{description:`The weekly rate-limit quota: percent used and time to reset, heating to warning then error.`,template:`◑ {{ round .weekly.percentage }}% ({{ template "formatResetCountdown" .weekly.resetsAt }})`,bg:`{{ ramp (round .weekly.percentage) "step" 0 (tint) .weekly.budget.heatThreshold "warning" .weekly.budget.warningThreshold "error" }}`,when:`{{ gt .weekly.resetsAt 0 }}`},burnrate:{description:`Spend per hour, with the projected time to the 5-hour and weekly limits.`,template:`⚡ {{ template "formatRate" .burn.costPerHour }} · {{ template "formatEta" .block.etaMinutes }} to 5h · {{ template "formatEta" .weekly.etaMinutes }} to wk`,bg:`{{ ramp .block.etaMinutes "step" -1 (tint) 0 "error" .burn.eta.errorMinutes "warning" .burn.eta.warnMinutes (tint) }}`,when:`{{ or (gt .block.resetsAt 0) (gt .weekly.resetsAt 0) }}`},speed:{description:`Token throughput for the latest exchange: output, input, and total.`,template:`⇅ out {{ template "formatSpeed" .speed.output }} · in {{ template "formatSpeed" .speed.input }} · tot {{ template "formatSpeed" .speed.total }}`,when:`{{ gt .session.tokens 0 }}`},tokenSparkline:{description:`A sparkline of recent token throughput.`,template:`⚡ {{ sparkline .speed.history 24 }}`,when:`{{ ne .speed.history "" }}`},cacheTimer:{description:"Minutes until the prompt cache expires, or `cold` once it has.",template:`◴ {{ if le (minutesUntilReset .cache.expiresAt) 0 }}cold{{ else }}{{ minutesUntilReset .cache.expiresAt }}m{{ end }}`,fg:`{{ readableOn (color (cascade (minutesUntilReset .cache.expiresAt) "0:error" "9:warning" "21:foreground")) (bgOf) ${Qi} }}`,when:`{{ gt .cache.expiresAt 0 }}`},context:{description:`Context used, in tokens and percent remaining, heating as it fills.`,template:`◔ {{ formatInteger .context.totalTokens }} ({{ .context.contextLeft }}%)`,bg:`{{ ramp .context.contextLeft "step" 0 "error" 21 "warning" 41 (tint) }}`,when:`{{ gt .context.totalTokens 0 }}`},metrics:{description:`Response times, session duration, message count, and lines added/removed.`,template:`{{ if .metrics.lastResponseTime }} Δ {{ template "formatResponseTime" .metrics.lastResponseTime }}{{ end }}{{ if .metrics.responseTime }} ⧖ {{ template "formatResponseTime" .metrics.responseTime }}{{ end }}{{ if .metrics.sessionDuration }} ⧗ {{ template "formatDuration" .metrics.sessionDuration }}{{ end }}{{ if .metrics.messageCount }} ◆ {{ .metrics.messageCount }}{{ end }}{{ if .metrics.linesAdded }} + {{ .metrics.linesAdded }}{{ end }}{{ if .metrics.linesRemoved }} - {{ .metrics.linesRemoved }}{{ end }} `,when:`{{ or (gt .metrics.lastResponseTime 0.0) (gt .metrics.responseTime 0.0) (gt .metrics.sessionDuration 0.0) (gt .metrics.messageCount 0) (gt .metrics.linesAdded 0) (gt .metrics.linesRemoved 0) }}`},activity:{description:`What Claude is doing: the slash command that opened the turn, the in-progress todo, and the tools in flight.`,template:`{{ if .activity.command }} ⌘ {{ .activity.command }}{{ end }}{{ if .activity.todo.total }}{{ if .activity.todo.active }} ☐ {{ .activity.todo.position }}/{{ .activity.todo.total }} {{ abbrev 32 .activity.todo.active }}{{ else }} ☑ {{ .activity.todo.completed }}/{{ .activity.todo.total }}{{ end }}{{ end }}{{ if .activity.tool.running }} ⟳ {{ template "formatToolTally" .activity.tool.running }}{{ end }}{{ if .activity.tool.done }} ✓ {{ template "formatToolTally" .activity.tool.done }}{{ end }} `,when:`{{ or (ne .activity.command "") (gt .activity.todo.total 0) (ne .activity.tool.running "") (ne .activity.tool.done "") }}`}},root:{rows:{identity:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`host`},{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`}]},status:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`segment`,name:`context`},{kind:`segment`,name:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`activity`}]}}},actions:{...Oy(``).actions,copyDir:{copy:`{{ .current_dir }}`},stepTheme:{set:`theme`,from:`themes`}},looks:{none:{hueShift:0,chromaScale:1,lightnessScale:1,lightnessShift:0},vivid:{hueShift:0,chromaScale:1.35,lightnessScale:1,lightnessShift:0},muted:{hueShift:0,chromaScale:.55,lightnessScale:1,lightnessShift:0},dim:{hueShift:0,chromaScale:1,lightnessScale:.85,lightnessShift:0},bright:{hueShift:0,chromaScale:1,lightnessScale:1,lightnessShift:.08},inverted:{hueShift:0,chromaScale:1,lightnessScale:-1,lightnessShift:1}},presets:{default:{},compact:{root:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`directory`},{kind:`segment`,name:`git`},{kind:`segment`,name:`context`}]},globals:{padding:0}},verbose:{root:{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`segment`,name:`gitPr`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`segment`,name:`context`},{kind:`segment`,name:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`burnrate`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`speed`},{kind:`segment`,name:`tokenSparkline`}]}]}}},editGlobals:{style:`plain`,default_separator:` | `},helpers:{formatCost:'{{ if lt . 0.01 }}<$0.01{{ else }}${{ printf "%.2f" . }}{{ end }}',formatTokenCount:`{{ if ge . 1000000 }}{{ printf "%.1f" (divf . 1000000) }}M{{ else if ge . 1000 }}{{ printf "%.1f" (divf . 1000) }}K{{ else }}{{ . }}{{ end }}`,formatTokens:`{{ template "formatTokenCount" . }} tokens`,formatToolTally:`{{ $names := splitList "," . }}{{ range $i, $pair := $names }}{{ if lt $i 2 }}{{ if $i }} {{ end }}{{ $kv := splitList ":" $pair }}{{ index $kv 0 }}{{ if ne (index $kv 1) "1" }}×{{ index $kv 1 }}{{ end }}{{ end }}{{ end }}{{ if gt (len $names) 2 }} +{{ sub (len $names) 2 }}{{ end }}`,formatRate:`{{ if lt . 0 }}—/hr{{ else }}{{ template "formatCost" . }}/hr{{ end }}`,formatEta:`{{ if lt . 0 }}—{{ else }}{{ template "formatLongTimeRemaining" . }}{{ end }}`,formatSpeed:`{{ if lt . 0 }}—{{ else }}{{ template "formatTokenCount" (round .) }}/s{{ end }}`,formatTokenBreakdown:`{{ $first := true }}{{ if gt .input 0 }}{{ template "formatTokenCount" .input }} in{{ $first = false }}{{ end }}{{ if gt .output 0 }}{{ if not $first }} + {{ end }}{{ template "formatTokenCount" .output }} out{{ $first = false }}{{ end }}{{ if or (gt .cacheCreation 0) (gt .cacheRead 0) }}{{ if not $first }} + {{ end }}{{ template "formatTokenCount" (add .cacheCreation .cacheRead) }} cached{{ $first = false }}{{ end }}{{ if $first }}0 tokens{{ end }}`,budgetStatus:`{{ if or (le .budget 0) (lt .cost 0) }}{{ else }}{{ $pct := minf 100 (mulf (divf .cost .budget) 100) }}{{ $p := printf "%.0f%%" $pct }}{{ if ge $pct .warn }} !{{ $p }}{{ else }}{{ if ge $pct 50 }} +{{ $p }}{{ else }} {{ $p }}{{ end }}{{ end }}{{ end }}`,formatTimeSince:`{{ if lt . 60 }}{{ . }}s{{ else if lt . 3600 }}{{ div . 60 }}m{{ else if lt . 86400 }}{{ div . 3600 }}h{{ else if lt . 604800 }}{{ div . 86400 }}d{{ else }}{{ div . 604800 }}w{{ end }}`,formatDuration:`{{ if lt . 60 }}{{ printf "%.0f" . }}s{{ else if lt . 3600 }}{{ printf "%.0f" (divf . 60) }}m{{ else if lt . 86400 }}{{ printf "%.1f" (divf . 3600) }}h{{ else }}{{ printf "%.1f" (divf . 86400) }}d{{ end }}`,formatResponseTime:`{{ if lt . 60 }}{{ printf "%.1f" . }}s{{ else }}{{ printf "%.1f" (divf . 60) }}m{{ end }}`,formatLongTimeRemaining:`{{ if ge . 1440 }}{{ $d := div . 1440 }}{{ $h := div (mod . 1440) 60 }}{{ if gt $h 0 }}{{ $d }}d {{ $h }}h{{ else }}{{ $d }}d{{ end }}{{ else if ge . 60 }}{{ $h := div . 60 }}{{ $m := mod . 60 }}{{ if gt $m 0 }}{{ $h }}h {{ $m }}m{{ else }}{{ $h }}h{{ end }}{{ else }}{{ . }}m{{ end }}`,formatResetCountdown:`{{ template "formatLongTimeRemaining" (add 1 (minutesUntilReset .)) }}`}},nO=new Set([tO.globals.palette,...Object.values(tO.segments).map(e=>e.palette)].filter(e=>e!==void 0)),rO=qs(fS(`<default>`,JSON.stringify(tO),nO),tO);function iO(e,t){return e===void 0?!0:e.evaluate(t).map(e=>e.plain).join(``)!==`false`}function aO(e,t){let n=H.fromFragments(e);return n.end=``,n.noWrap=!0,t!==void 0&&!t.isNull&&(n.style=t),n}function oO(e,t,n){e.cellLength>t?e.truncate(t,{mode:n.truncate,marker:n.truncateMarker}):e.cellLength<t&&e.align(n.justify,t)}function sO({text:e,trail:t}){if(t===void 0)return e;let n=aO([e,t]);return n.style=e.style,n}function cO(e,t){let{width:n,justify:r,truncate:i,truncateMarker:a=`…`,baseStyle:o,padding:s,trail:c=[]}=t;if(e.length===0)return[];let l=aO(e,o).pad(s),u=c.length===0?{}:{trail:aO([...c,new H(` `.repeat(s))],o)};if(n===`auto`)return[{text:l,...u}];let d={justify:r,truncate:i,truncateMarker:a};return n===`fill`?[{text:l,fill:d,...u}]:(oO(l,n,d),[{text:l,...u}])}const lO=RegExp(`\\x1b\\[[0-9;]*m|${Jr.source}`,`g`);function uO(e){return O(e.replace(lO,``))}function dO(e,t){let n=e.map(sO),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=hT(n,t).split(`
178
+ `);if(i.length>1)return n;let a=Math.max(0,t.width-uO(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];oO(l,l.cellLength+c,i),n[t]=sO(e[t])}),n}function fO(e,t){let n=[],r=[],i=()=>{if(!r.length)return;let e=pO(r,t);e.plain.length>0&&n.push(e),r=[]};for(let a of e)if(hO(a.style).link){i();let e=pO([a],t);e.plain.length>0&&n.push(e)}else r.push(a);return i(),n}function pO(e,t){let n=t!==void 0&&!t.isNull?e.map(e=>mO(e,t)):e,r=H.fromFragments(n);return r.end=``,r.noWrap=!0,n.length===1?r.style=n[0].style:t!==void 0&&!t.isNull&&(r.style=t),r}function mO(e,t){let n=e.copy();return n.style=t.add(hO(e.style)),n}function hO(e){return e instanceof B?e:B.parse(e)}var gO=class extends Error{constructor(e,t,n){super(`Invalid ${t} color ${JSON.stringify(e)}: ${n}`),this.name=`ColorSpecError`}};function _O(e,t,n,r,i){let{palette:a,tint:o}=e,s=vO(n,i),c=s===void 0?o:yO(a,s,`bg`);e.bg=c;let l=vO(r,i),u=l===void 0?$i(a,c,t):yO(a,l,`fg`);return new B({bgcolor:N.fromRgba(c),color:N.fromRgba(u)})}function vO(e,t){if(e!==void 0)return e.evaluate(t).map(e=>e.plain).join(``)}function yO(e,t,n){try{return Hn(e,t)}catch(e){throw e instanceof zn?new gO(t,n,e.message):e}}function bO(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,xO(e,t,o,n,r,i));return i}function xO(e,t,n,r,i,a){if(Ob(n)){let[o,s]=kb(n);return SO(r.get(n.persistWhen)??n.persistWhen,n.set,xO(e,t,o,r,i,a),xO(e,t,s,r,i,a))}if(`set`in n){let e=r.get(n.set)??n.set;if(`to`in n)return{kind:`set-literal`,key:n.set,value:n.to,stateVar:e};if(`from`in n){let t=Rx(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=Tv.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=Rx(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=Rx(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:wO(e,n.copy,t)};if(`open`in n)return{kind:`open`,target:wO(e,n.open,t)};if(`reset`in n)return{kind:`reset`,key:n.reset};if(`doctor`in n)return n.doctor===`run`?{kind:`doctor-run`}:{kind:`doctor-fix`,check:n.check};if(`undo`in n)return{kind:`undo`};if(`redo`in n)return{kind:`redo`};let[o,...s]=n.do.map(e=>{let n=a.get(e);if(n===void 0)throw Error(`action "${t}" fires "${e}", which is not declared in this config`);return n});return{kind:`do`,head:o,rest:s}}function SO(e,t,n,r){return{kind:`dual`,selector:e,session:`stateVar`in n&&`stateVar`in r?{...n,stateVar:r.stateVar}:n,durable:r,sessionKey:t}}function CO(e,t){return e.kind===`do`?CO(e.head,t):e.kind===`dual`?Za(TO(t,e.selector))===!0?e.durable:e.session:e}function wO(e,t,n){try{return e(t)}catch(e){throw Error(`Template parse error in actions.${n}: ${e.message}`,{cause:e})}}function TO(e,t){return e.has(t)?Tg(e.read(t)):``}function EO(e,t){return e.evaluate(t).map(e=>e.plain).join(``)}function DO(e,t,n,r){let i=new H(e,{style:B.combine([r,new B({link:t,bold:n})])});return i.noWrap=!0,i.end=``,i}function OO(e,t){return Math.max(e.members.indexOf(TO(t,e.stateVar)),0)}function kO(e,t,n,r,i){switch(e.kind){case`set-literal`:{let t=TO(r,e.stateVar);return{effects:[{verb:DC,args:[i,e.key,e.value]}],active:t===e.value}}case`set-option`:{let a=n??t,o=TO(r,e.stateVar);return{effects:[{verb:DC,args:[i,e.key,a]}],active:o===a}}case`set-int`:{let a=n??t,o=TO(r,e.stateVar);return{effects:[{verb:DC,args:[i,e.key,a]}],active:o===a}}case`set-cycle`:{let t=e.members[(OO(e,r)+1)%e.members.length];return{effects:[{verb:DC,args:[i,e.key,t]}],active:!1}}case`set-bounded`:return{effects:[{verb:OC,args:[i,e.key,String(e.by)]}],active:!1};case`copy`:return{effects:[{verb:kC,args:[EO(e.text,g_(r))]}],active:!1};case`open`:return{effects:[{verb:AC,args:[EO(e.target,g_(r))]}],active:!1};case`persist-literal`:{let t=TO(r,e.stateVar);return{effects:[{verb:PC,args:[i,e.key,e.value]}],active:t===e.value}}case`persist-option`:{let a=n??t,o=TO(r,e.stateVar);return{effects:[{verb:PC,args:[i,e.key,a]}],active:o===a}}case`persist-cycle`:{let t=e.members[(OO(e,r)+1)%e.members.length];return{effects:[{verb:PC,args:[i,e.key,t]}],active:!1}}case`persist-bounded`:return{effects:[{verb:FC,args:[i,e.key,String(e.by)]}],active:!1};case`reset`:return{effects:[{verb:IC,args:[i,e.key]}],active:!1};case`undo`:return{effects:[{verb:RC,args:[i]}],active:!1};case`redo`:return{effects:[{verb:zC,args:[i]}],active:!1};case`doctor-run`:return{effects:[{verb:VC,args:[i]}],active:!1};case`doctor-fix`:return{effects:[{verb:HC,args:[i,e.check]}],active:!1};case`layout-op`:return{effects:[{verb:LC,args:[i,e.key,kv(e.op)]}],active:!1};case`dual`:{let a=CO(e,r),{effects:o,active:s}=kO(a,t,n,r,i);return a===e.durable?{effects:o.map(t=>({...t,args:[...t.args,e.sessionKey]})),active:s}:{effects:o,active:s}}case`do`:{let a=kO(e.head,t,n,r,i);return{effects:[...a.effects,...e.rest.flatMap(e=>kO(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:LC,args:[i,e.key,kv(r)]}],active:!1}}}}function AO(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:Qs(`action "${e}"`,n,t.members.length,OO(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 jO(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}=AO(e,CO(r,i),t,i),{effects:s,active:c}=kO(r,a,o,i,TO(i,`session.id`));return DO(a,GC(s),c)}function MO(e){return{action:{fn:(t,...n)=>jO(t,n,e),argTypes:[`string`,`string`],returnType:`T`}}}function NO(e,t){return DO(`✕`,GC([{verb:DC,args:[TO(e,`session.id`),t,Ys]}]),!1)}function PO(e,t,n){return new B({bgcolor:N.fromRgba(t),color:N.fromRgba($i(e,t,n))})}function FO(e,t,n){return PO(e.palette,fa(e.palette,e.disclosure,[t],n),n)}function IO(e,t,n,r,i){return r===void 0?n=>FO(e,{...n,distribution:t},i):(e,t)=>LO(r(t,n),i)}function LO(e,t){let n=Ui(e,`background`);return new B({bgcolor:N.fromRgba(n),color:N.fromRgba(Yn(Ui(e,`primary`),n,4.5,t))})}function RO(e){return{current:null,drawnAt:e}}function zO(e,t,n,r,i){let a={segName:t,palette:n,disclosure:r,tint:i,bg:void 0,drops:[]};return e.current=a,a}function BO(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 VO(e){return new H(e).cellLength}function HO(e){return Math.max(1,e.width-e.chromeCols-2*e.padding)}function UO(e){return Math.max(1,HO(e)-(VO(`✕`)+2*e.padding+e.seamCols))}function WO(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 GO(e,t){let n=[];for(let t of e)n.length>0&&n.push(new H(` `)),n.push(t);let r=H.fromFragments(n);return r.noWrap=t,r.end=``,r}function KO(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 qO(e,t,n){let r=e.compiled.get(t),i=r&&CO(r,e.store);if(!i||i.kind!==`set-option`&&i.kind!==`persist-option`&&i.kind!==`layout-op-option`)throw Error(`${n} references action "${t}" which must be a set-option, persist-option, or layout-op-option action ({ set, from }, { persist, from }, or { persist, insertSegmentFrom, anchor, relation }), got ${i?`a ${i.kind} action`:`no such action`}`);return i}function JO(e,t,n,r,i,a,o){let s=qO(a,e,`picker`),c=a.compiled.get(e),l=a.store,u=TO(l,`session.id`),d=`stateVar`in s?TO(l,s.stateVar):void 0,f=s.options.map(VO),p=i?HO(a):1/0,m=VO(`✕`)+1,h=VO(`←`)+1+VO(`→`)+1,g=WO(f,p,m),_=g.length>1?WO(f,p,m+h):g,v=parseInt(TO(l,t.stateVar),10),y=Number.isInteger(v)?Math.max(0,Math.min(v,_.length-1)):0,b=_[y]??[],x=e=>GC([{verb:DC,args:[u,t.key,String(e)]}]),S=n.flatMap(([e,t])=>[e,t]),C=GC([{verb:DC,args:[u,...S]}]),ee=r?[{verb:DC,args:[u,...S]}]:[],te=e=>GC([...kO(c,e,e,l,u).effects,...ee]),ne=[DO(`✕`,C,!1)];y>0&&ne.push(DO(`←`,x(y-1),!1));for(let e of b){let t=s.options[e];ne.push(DO(t,te(t),t===d,o({index:e,count:s.options.length},t)))}return y<_.length-1&&ne.push(DO(`→`,x(y+1),!1)),GO(ne,i)}function YO(e,t){return{picker:{fn:(n,r,i,a)=>{let o=KO(e,r,`set-int`,`an int action ({ set, int: true })`);return JO(n,{key:o.key,stateVar:o.stateVar},[[o.key,`-1`]],i===!0,a===!0,e,IO(BO(t,`{{ picker }}`),Li(void 0),e.basePalette,qO(e,n,`picker`).paletteOf,t.drawnAt()))},argTypes:[`string`,`string`,`bool`,`bool`],returnType:`T`}}}function XO(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+VO(e(-(s+1)))+1+VO(e(s+1))+1;if(t>r)break;o=t,s+=1}return s}function ZO(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=TO(a,`session.id`),{options:c}=t,l=c.length,u=TO(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=GC(kO(o,p(e),p(e),a,s).effects);return m.set(e,n),n},g=e=>DO(p(e),h(e),p(e)===u,r({index:f(e),count:l},p(e))),_=XO(p,l,VO(`◀`)+1+VO(p(0))+1+VO(`▶`),UO(n),i),v=e=>Array.from({length:_},(t,n)=>g(e*(n+1)));return GO([...v(-1).reverse(),DO(`◀`,h(-1),!1),g(0),DO(`▶`,h(1),!1),...v(1)],!0)}function QO(e,t){return{carousel:{fn:(n,r,...i)=>{if(i.length>0)throw Error(`carousel "${n}": takes at most one neighbours count after the action name, got ${1+i.length}`);if(r!==void 0&&!(Number.isInteger(r)&&r>=0))throw Error(`carousel "${n}": neighbours must be a whole number ≥ 0 (0 shows only ◀ CURRENT ▶), got ${String(r)}`);let a=r??1/0,o=qO(e,n,`carousel`);return ZO(n,o,e,IO(BO(t,`{{ carousel }}`),Li(void 0),e.basePalette,o.paletteOf,t.drawnAt()),a)},argTypes:[`string`,`float`],returnType:`T`}}}const $O=[`~/code`,`main`,`opus`,`42%`,`5m`,`$1.20`];function ek(e,t,n){let r=aa(e,{hue:Ai,depth:0},n);return[U(t).map((t,n)=>({text:$O[n%$O.length],colour:Wi(e,t)})),[{text:`▾ open`,colour:r.state},{text:`menu`,colour:r.plane}],[{text:`warn`,colour:Ui(e,`warning`)},{text:`error`,colour:Ui(e,`error`)}]]}function tk(e,t,n,r){let i=ek(e,t,n).flatMap((t,r)=>t.map(({text:t,colour:i},a)=>({gap:r>0&&a===0?` `:``,cell:new H(` ${t} `,{style:PO(e,i,n)})}))),a=[],o=0;for(let{gap:e,cell:t}of i){if(o+=e.length+t.cellLength,o>r)break;e!==``&&a.push(new H(e)),a.push(t)}let s=H.fromFragments(a);return s.noWrap=!0,s.end=``,s}function nk(e,t){return{themePreview:{fn:()=>tk(e.palette,e.progression,t.drawnAt(),UO(e)),argTypes:[],returnType:`T`}}}const rk=e=>e.slice(e.lastIndexOf(`.`)+1),ik=(e,t)=>{let n=new H(rk(e));return n.truncate(t,{marker:`…`}),n.plain};function ak(e,t){let n=e.map(e=>e.map(({name:e})=>VO(rk(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 ok(e,t,n,r){let i=ak(e,r),a=e.map(e=>{let a=[],o=0;for(let{name:s,address:c,palette:l}of e){let e=new H(` ${ik(s,i)} `,{style:PO(l,ga(l,{kind:`bar`,progression:t,address:c},n).tint,n)});if(o+=e.cellLength,o>r)break;a.push(e)}return a}),o=H.fromFragments(a.flatMap((e,t)=>t===0?e:[new H(`
179
+ `),...e]));return o.noWrap=!0,o.end=``,o}function sk(e,t){return{layoutPreview:{fn:()=>ok(e.layout(),e.progression,t.drawnAt(),UO(e)),argTypes:[],returnType:`T`}}}function ck(e,t,n,r){let i=BO(r.activeSegment,`{{ menu }}`),a=r.action,o=Ih(i.segName,e,n.key),s=zh(o),c=Fh(e),l=TO(a.store,o)===c,u=TO(a.store,`session.id`),d=l?Ys:c,f=DO(Qs(`{{ menu "${e}" }}`,t,2,+!!l),GC([{verb:DC,args:[u,o,d,s,`0`]}]),!1);return i.drops.push(...l?[JO(e,{key:s,stateVar:s},[[o,Ys],[s,`0`]],n.closeOnPick,n.paged,a,IO(i,n.distribution,a.basePalette,qO(a,e,`menu`).paletteOf,r.activeSegment.drawnAt()))]:[]),f}const lk=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function uk(e,t){let n=t[t.length-1],r=lk(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:Uh(r??{})}}function dk(e){return{menu:{fn:(t,...n)=>{let{displays:r,options:i}=uk(t,n);return ck(t,r,i,e)},argTypes:[`string`,`value`],returnType:`T`}}}function fk(e){let{value:t,max:n,width:r,filled:i,empty:a,colourAt:o}=e,s=pk(t,n,r),c=[];for(let e=0;e<r;e++){let t=e<s,l=t&&o!==void 0?o(e*n/r):void 0;c.push(new H(t?i:a,{style:l===void 0?void 0:new B({color:l})}))}let l=H.fromFragments(c);return l.end=``,l.noWrap=!0,l}function pk(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 mk(e){let t={fn:(()=>{let t=BO(e,`{{ bgOf }}`);if(t.bg===void 0)throw Error(`{{ bgOf }} is not available while segments.${t.segName}'s own "bg:" is being evaluated — the background is what that template computes. Reach for a palette color there instead, e.g. bg: '{{ darken (color "surface") 1 }}'.`);return t.bg.hex}),argTypes:[],returnType:`string`},n={fn:(()=>BO(e,`{{ tint }}`).tint.hex),argTypes:[],returnType:`string`},r=Zg(()=>BO(e,`{{ color }} / {{ ramp }} / {{ gauge }}`).palette),i={fn:((e,t,n,i,a,o,...s)=>fk({value:e,max:t,width:n,filled:i,empty:a,colourAt:o===void 0||s.length===0?void 0:e=>String(r.ramp.fn(e,o,...hk(s)))})),argTypes:[`float`,`float`,`int`,`string`,`string`,`string`,`string`],returnType:`T`};return{...r,bgOf:t,tint:n,gauge:i}}function hk(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 gk(e){let t=[],n=[];for(let r of e){if(!r.contains(`
180
180
  `)){n.push(r);continue}let e=r.split(`
181
- `);n.push(e[0]);for(let r=1;r<e.length;r++)t.push(n),n=[e[r]]}return t.push(n),t}const _k=({text:e,trail:t})=>t===void 0?[e]:[e,t];function vk(e,t){switch(e){case`vertical`:return bk(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))]:bk(e)}}}function yk(e,t){let n=(e,r)=>t(e)?e.kind===`segment`?[{cells:[{name:e.name,address:r}],band:`own`,span:`shared`}]:vk(e.direction,e.children.map((t,i)=>n(t,[...r,xk(e,i)]))):[];return n(e,[]).map(e=>[...e.cells])}function bk(e){return e.map(e=>e.span===`row`?{...e,span:`shared`}:e)}function xk(e,t){return{index:t,count:e.children.length,distribution:e.distribution,axis:Jo[e.direction]}}const Sk={compile(e,t){return{kind:`container`,direction:e.direction,when:t.when,distribution:Li(e.distribution),children:e.children.map((e,n)=>t.compileChild(e,Zo(t.path,n)))}},render(e,t){return vk(e.direction,e.children.map((n,r)=>t.renderChild(n,t.visible,xk(e,r))))}},Ck={compile(e,t){return{kind:`segment`,when:t.when,name:e.name,...e.opens!==void 0&&{opens:{open:t.parse(ec(e.opens.ref),`opens`),body:t.compileChild(e.opens.body,Qo(t.path)),key:e.opens.ref.key,placement:e.opens.placement}},...e.trail!==void 0&&{trail:t.parse(e.trail,`trail`)}}},render(e,t){let n=t.lookupSegment(e.name);if(!n)throw Error(`Layout segment "${e.name}" has no matching segment`);let{seg:r,compiled:i}=n;if(!t.visible)return[];try{if(!iO(i.when,t.scope))return[];let n=i.palette??t.palette,{styles:a,fragments:o,trail:s,drops:c}=t.evaluateSegment(e.name,n,t.region,{bg:i.bg,fg:i.fg,body:i.template,trail:e.trail}),l=e.opens!==void 0&&iO(e.opens.open,t.scope),u=c.length>0||l?a.trigger:a.closed,d={width:r.width??`auto`,justify:r.justify??`left`,truncate:r.truncate??`right`,baseStyle:u,padding:t.padding},f=e.opens===void 0?[]:t.renderBody(e.opens.body,l,a.disclosure),p=f.slice(0,+(e.opens?.placement===`inline`)),m=f.slice(p.length),h=e.opens!==void 0&&m.some(e=>e.band===`own`)?cO(fO([t.closeDisclosure(e.opens.key)],a.trigger),{...d,width:`auto`,baseStyle:a.trigger}):[],g=e=>e.band===`own`?h:[],_=m.map(e=>({cells:[...g(e),...e.cells],band:`deeper`,span:`shared`})),v=gk(fO(o,u)).map((e,t)=>({cells:cO(e,{...d,trail:t===0?fO(s,u):[]}),band:`own`,span:`shared`})),y=c.map(e=>({cells:cO(fO([e],a.band),{...d,baseStyle:a.band}),band:`deeper`,span:`shared`})),b=[...v,...y];return t.perSegmentSink!==void 0&&t.perSegmentSink.set(e.name,[...b.flatMap(e=>e.cells),...m.flatMap(g)].flatMap(_k)),[...b.map((e,t)=>t===0&&p.length>0?{cells:[...e.cells,...p.flatMap(e=>e.cells)],band:`own`,span:`row`}:e),..._]}catch(n){let r=n.message??String(n);t.onSegmentError?.(e.name,r);let i=r.replace(/\s*\n\s*/g,` `);return[{cells:cO([new H(`⚠ ${e.name}: ${i}`,{end:``})],{width:`auto`,justify:`left`,truncate:`right`,padding:0,trail:wk(e,t)}),band:`own`,span:`shared`}]}}};function wk(e,t){if(e.trail===void 0)return[];try{return t.evaluateSegment(e.name,t.palette,t.region,{bg:void 0,fg:void 0,body:e.trail,trail:void 0}).fragments}catch(n){return t.onSegmentError?.(e.name,n.message??String(n)),[]}}const Tk={container:Sk,segment:Ck};function Ek(e){return Tk[e]}function Dk(e){if(`ttl`in e)return{kind:`ttl`,durationMs:ev(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 Ok(e,t){switch(ts(e)){case`json`:return{kind:`json`,default:t};case`regex`:return{kind:`regex`,regex:new RegExp(e.regex),default:t};case`text`:return{kind:`text`,default:t}}}function kk(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:Dk(n.cache),parse:Ok(n.parse,n.default)});break;case`shell`:e.declareShell(t,n.command,{cache:Dk(n.cache),parse:Ok(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?ev(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 Ak(e,t){let n=Su.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 jk=e=>Ka(void 0,null,e.globals.progression);function Mk(e,t,n){let r=n?.cwd??process.cwd(),i=kx(e.globals.palette),a={store:t.variableStore,compiled:new Map,chromeCols:pT({style:`powerline`,charset:Ia}),width:80,basePalette:i,palette:i,progression:ki[jk(e)],padding:1,seamCols:mT({style:`powerline`,charset:Ia}),layout:()=>[]},o=RO(t.drawnAt),s={action:a,activeSegment:o},c=Object.keys(e.looks),l=Av(e.presets),u=new Map([...Mx(e),...ry(e)]),d=d_({...MO(a),...YO(a,o),...QO(a,o),...nk(a,o),...sk(a,o),...dk(s),...mk(o),looks:{fn:()=>c,argTypes:[]},presets:{fn:()=>l,argTypes:[]}},n?.clock,t.drawnAt),f=Ak(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 Sv)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=bO(p,e.actions,g,u);let _=[];for(let[n,i]of Object.entries(e.variables))try{kk(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{kk(t,`${n}.${e}`,a,r)}catch(t){_.push(`Variable "${n}.${e}": ${t.message??String(t)}`)}let v=Object.create(null);for(let[t,n]of Object.entries(e.segments)){let e=(e,n,r=p)=>{try{return r(e)}catch(e){throw Error(`Template parse error in segments.${t}.${n}: ${e.message}`,{cause:e})}};v[t]={when:n.when===void 0?void 0:e(n.when,`when`,h),template:e(n.template,`template`),bg:n.bg===void 0?void 0:e(n.bg,`bg`),fg:n.fg===void 0?void 0:e(n.fg,`fg`),palette:n.palette===void 0?void 0:Sx(n.palette)}}let y=(e,t,n)=>{try{return h(e)}catch(e){throw Error(`Template parse error in ${t}.${n}: ${e.message}`,{cause:e})}},b=(e,t)=>{let n={path:t,when:e.when===void 0?void 0:y(e.when,t,`when`),parse:(e,n)=>y(e,t,n),compileChild:b};return Ek(e.kind).compile(e,n)},x=new Map;for(let t of l){let{node:n,path:r}=Nv(e,t);x.set(t,b(n,r))}let S=new Map;for(let t of wa){let n=e.globals[t];Ta(n)&&S.set(t,Nk(p,t,n))}return{segments:v,roots:x,activeSegment:o,menuRuntime:s,globalExpressions:S,loadWarnings:_}}function Nk(e,t,n){try{return e(n)}catch(e){throw Error(`globals.${t} is not a valid template: ${e instanceof Error?e.message:String(e)}`)}}function Pk(e,t,n){let r=e.globalExpressions.get(t);if(r===void 0)throw Error(`globals.${t} is an expression but no compiled template exists — registerDslConfig and the resolution disagree about isExpression`);return r.evaluate(n).map(e=>e.plain).join(``)}function Fk(e,t){return e.kind===`decided`?e.name:t}function Ik(e,t,n,r,i,a,o,s){let{perSegmentSink:c,onSegmentError:l,onRenderWarning:u}=o??{};r.drawAt(Ua(a.colorCompatibility));let{preset:d=Ov}=s??{},f=ki[s?.progression??jk(e)];t.menuRuntime.action.progression=f;let p=s?.look??Aa(`none`,e.looks),m=s?.theme??Dx(void 0,null,e.globals.palette),h=(e,t)=>({...i,term:{cols:a.width},theme:{effective:e},look:{effective:t}});r.applyInput(h(Fk(m,ya),Fk(p,Oa))),t.menuRuntime.action.chromeCols=pT(a),t.menuRuntime.action.padding=a.padding,t.menuRuntime.action.width=a.width,t.menuRuntime.action.seamCols=mT(a);let g=f_(n),_=Da(m,()=>Pk(t,`palette`,g),e=>Ex(e,e=>u?.(e))),v=Da(p,()=>Pk(t,`look`,g),t=>Aa(t,e.looks));(_!==m||v!==p)&&r.applyInput(h(_.name,v.name));let y=_.value;t.menuRuntime.action.basePalette=y;let b=wx(y,v.value);t.menuRuntime.action.palette=b,c?.clear();let x=n=>{let r=e.segments[n],i=t.segments[n];return r!==void 0&&i!==void 0?{seg:r,compiled:i}:void 0},S=(e,n,i,a)=>{try{let o=r.drawnAt(),{tint:s,disclosure:c}=ga(n,i,o),l=zO(t.activeSegment,e,n,c,s),u=_O(l,o,a.bg,a.fg,g),d=a.body.evaluate(g),f=a.trail?.evaluate(g)??[];return{styles:{closed:u,get trigger(){return PO(n,aa(n,c,o).state,o)},get band(){return PO(n,aa(n,c,o).plane,o)},disclosure:c},fragments:d,trail:f,drops:l.drops}}finally{t.activeSegment.current=null}},C=(e,t,r)=>{let i=t&&iO(e.when,g),o={scope:g,palette:b,visible:i,padding:a.padding,region:r,perSegmentSink:c,onSegmentError:l,evaluateSegment:S,lookupSegment:x,renderChild:(e,t,n)=>C(e,t,ma(r,n)),renderBody:(e,t,n)=>C(e,i&&t,ha(n)),closeDisclosure:e=>NO(n,e)};return Ek(e.kind).render(e,o)},ee=t.roots.get(d);if(ee===void 0)throw Error(`Preset "${d}" has no compiled layout — registerDslConfig compiles one per declared preset and effectivePresetName collapses unknown names to "${Ov}"; a miss here is merge/policy drift (have: ${[...t.roots.keys()].join(`, `)})`);let te=e=>{if(!iO(e.when,g))return!1;if(e.kind===`container`)return!0;if(sy(e.name)===void 0)return!1;try{return iO(t.segments[e.name].when,g)}catch{return!0}};return t.menuRuntime.action.layout=()=>yk(ee,te).map(e=>e.flatMap(e=>{let n=sy(e.name);return n===void 0?[]:[{...e,name:n,palette:t.segments[n].palette??b}]})),C(ee,!0,pa(f)).map(e=>hT(dO(e.cells,a),a)).join(`
182
- `)}var Lk=class{kind=`box`;cell;lastChangedAt;constructor(e,t,n){this.name=e,this.type=t,Uk(e,t,n,`initial value`),this.cell=vg.observable.box(n,{deep:!1}),this.lastChangedAt=Date.now()}read(){return this.cell.get()}set(e){Uk(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}},Rk=class{kind=`computed`;cell;constructor(e,t,n){this.name=e,this.type=t,this.cell=(0,vg.computed)(()=>{let e=n();return Uk(this.name,this.type,e,`computed result`),e},{keepAlive:!0})}read(){return this.cell.get()}lastUpdatedMs(){return null}},zk=class{kind=`document`;cell;lastChangedAt;constructor(e,t){this.name=e,this.cell=vg.observable.box(Hk(t),{deep:!1}),this.lastChangedAt=Date.now()}read(){return this.cell.get()}set(e){let t=Hk(e);Vk(this.cell.get(),t)||(this.cell.set(t),this.lastChangedAt=Date.now())}lastUpdatedMs(){return this.lastChangedAt}};function Bk(e){return JSON.stringify(e)}function Vk(e,t){return Bk(e)===Bk(t)}function Hk(e){return e.kind===`ok`?{kind:`ok`,value:yg(e.value)}:e}function Uk(e,t,n,r){let i=bg(n);if(i!==t)throw TypeError(`Variable "${e}": ${r} type ${i} does not match declared type ${t}`)}var Wk=class{nodes=new Map;defineBox(e,t,n){this.assertNotDefined(e),this.nodes.set(e,new Lk(e,t,n))}defineDocument(e,t){this.assertNotDefined(e),this.nodes.set(e,new zk(e,t))}defineComputed(e,t,n){this.assertNotDefined(e);let r=e=>this.read(e);this.nodes.set(e,new Rk(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,vg.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,vg.runInAction)(()=>n.set(t))}runInAction(e){(0,vg.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 Bk(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 Gk(e,t,n){return e+`\0`+t+`\0`+(n??``)}function Kk(e,t){return new Set(Av(e.presets).filter(n=>Nv(e,n).path===`root`?t.root!==void 0:t.presets?.[n]?.root!==void 0))}function qk(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 Jk(e,t){let n=new Map;for(let t of tS(e.projectDir,e.cwd,e.configFile)){let{dir:e,name:r}=qk(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 Yk(e){return e.filter(Boolean).join(`
183
- `)||null}var Xk=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=Gk(e,t,n),i=this.entries.get(r);if(i)return this.entries.delete(r),this.entries.set(r,i),i;let a=this.loadFromDisk(e,t,n),o={projectDir:e,cwd:t,configFile:n,configFilePath:null,lastError:a.error,lastWarning:a.warning,state:a.state??this.buildState(t,null,[]),watcher:null,watcherKey:null};if(this.entries.set(r,o),this.entries.size>this.maxEntries){let e=this.entries.entries().next().value;if(e!==void 0){let[t,n]=e;n.state.registry.dispose(),n.state.validatorDisposers.forEach(e=>e()),n.watcher?.release(),this.entries.delete(t)}}return this.refreshWatcher(o,a.resolvedPath),this.observers.onReload?.(o),o}reloadInto(e){let t=this.loadFromDisk(e.projectDir,e.cwd,e.configFile);e.lastWarning=t.warning,e.lastError=t.error,t.state!==null&&(e.state.registry.dispose(),e.state.validatorDisposers.forEach(e=>e()),e.state=t.state),this.refreshWatcher(e,t.resolvedPath),this.observers.onReload?.(e)}loadFromDisk(e,t,n){let r=rS(e,t,n),i=r.kind===`file`?r.path:null,a=[sS(e,t),aS(r)],o;try{o=this.buildState(t,i,a)}catch(e){return e instanceof Ho&&a.push(...e.warnings),{resolvedPath:i,warning:Yk(a),state:null,error:e instanceof Ho||e instanceof Error?e.message:String(e)}}return{resolvedPath:i,warning:Yk(a),state:o,error:null}}buildState(e,t,n){let{config:r,raw:i,source:a,warnings:o}=cS(t,rO);n.push(...o);let s=dS(r,t??`<default>`,a),c=new Wk,l=new _v(c,s.globals.default_empty_value??``,this.deps.gitService,this.deps.sessionState),u,d=[];try{u=Mk(s,l,{cwd:e}),n.push(...u.loadWarnings);for(let{key:e,spec:t}of xE(s))d.push(mE(e,t));for(let{key:e,spec:t}of rE(s))d.push(iE(e,t))}catch(e){for(let e of d)e();throw l.dispose(),e}return{config:s,store:c,registry:l,compiled:u,neededInputPaths:ID(s),lastRenderCellsBySegment:new Map,validatorDisposers:d,authoredRoots:Kk(r,i)}}refreshWatcher(e,t){e.configFilePath=t;let n=Jk(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 Zk=16384;var Qk=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<Zk){this.rollingTimestamps.push(e);return}this.rollingTimestamps[this.rollingHead]=e,this.rollingHead=(this.rollingHead+1)%Zk}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:XC,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 $k={load:()=>({}),save:()=>{},flush:()=>{}};function eA(e){let t=new Map;for(let[n,r]of Object.entries(e))t.set(n,new Map(Object.entries(r)));return t}var tA=class{sessions;storage;atom=(0,vg.createAtom)(`SessionState`);constructor(e=$k,t=256){this.maxSessions=t,this.storage=e,this.sessions=new Map,this.hydrateFromStorage()}useStorage(e){this.storage=e,this.hydrateFromStorage()}hydrateFromStorage(){this.sessions=eA(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,vg.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,vg.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,vg.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 nA=(e,t)=>E(t);function rA(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 iA=class{timer=null;pending=null;constructor(e,t=500,n=nA){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 rA(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 aA={default_bg:`string`,default_fg:`string`,default_empty_value:`string`,default_separator:`string`,default_truncate_marker:`string`,palette:`string`,look:`string`,preset:`string`,style:`string`,progression:`string`,autoWrap:`boolean`,padding:`number`,charset:`string`,updateNotice:`boolean`,colorCompatibility:`string`,menuGlyph:`string`},oA=new Set([`1`,`true`]),sA=new Set([`0`,`false`,``]);function cA(e,t){let n=NA(e),r=n.scope===`globals`?aA[n.field]:`string`;if(r===`string`)return JSON.stringify(t);if(r===`number`){let n=Number(t);if(!Number.isFinite(n))throw Error(`persistValueText: "${e}" expects a number, got "${t}"`);return String(n)}if(oA.has(t))return`true`;if(sA.has(t))return`false`;throw Error(`persistValueText: "${e}" expects boolean-ish (1, 0, true, false), got "${t}"`)}function lA(e){try{return r.readFileSync(e,`utf8`)}catch(e){if(e.code===`ENOENT`)return null;throw e}}function uA(e,t,n){try{if(t===null){r.rmSync(e,{force:!0});return}r.mkdirSync(c.dirname(e),{recursive:!0}),Ae(e,t)}catch(t){let r=`config write failed (${e}): ${t.message}`;throw n(`error`,r),Error(r)}}function dA(e){return/^\s*$/.test(e)?null:so(e)}function fA(e,t){return e!==null&&lo(e,t)!==void 0}function pA(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(pA),...i}}return e}function mA(e){if(!zs(e))return pA(e);let{rows:t,...n}=e;return{rows:Object.fromEntries(Object.entries(t).map(([e,t])=>[e,pA(t)])),...n}}const hA=tO,gA=hA.segments,_A=hA.presets,vA=hA.root;function yA(e,t,n,r){if(!fA(e,t)&&n===void 0)throw new $(`cannot edit ${r}: neither the config file nor the bundled default declares ${t.join(`.`)}`)}function bA(e,t){let n=zv(t);return t.scope===`segment-palette`&&yA(e,[`segments`,t.segment],gA[t.segment],n.join(`.`)),n}function xA(e){return so(go(e))}function SA(){return Object.entries(vA.rows).map(([e,t])=>{let n=pA(t);return{path:[`root`],fragment:xA({rows:{[e]:n}}),unit:{path:[`root`,`rows`,e],value:n}}})}function CA(e,t){let n=e===null?void 0:lo(e,t);return n===void 0?null:{path:t,fragment:n,unit:null}}function wA(e,t){if(t===void 0)return null;let n=mA(t);return{path:e,fragment:xA(n),unit:{path:e,value:n}}}function TA(e,t){let n=[`presets`,t],r=[...n,`root`],i=_A[t];yA(e,n,i,r.join(`.`));let a=CA(e,r)??wA(r,i?.root);return a!==null&&Io(a.fragment)?a:null}function EA(e,t){let n=Fo(t.fragment);return n===null?new Map([[`#`,{path:t.path,unit:t.unit,node:t.fragment}]]):new Map([...e,...n.map(e=>[e.key,{path:[...t.path,`rows`,e.key],unit:t.unit,node:e.value}])])}function DA(e,t){return[...SA(),CA(e,[`root`]),TA(e,t)].filter(e=>e!==null).reduce(EA,new Map)}function OA(e,t,n){for(let{node:r,...i}of DA(e,t).values())if(Ro(r,n))return i;throw new $(`${kA(e,t).join(`.`)} holds no segment "${n}" — the bar you clicked is stale; it reloads on the next render`)}function kA(e,t){return TA(e,t)?.path??[`root`]}function AA(e,t){return t.scope===`preset-root`?kA(e,t.preset):zv(t)}function jA(e,{unit:t}){return t===null?e:Ao(e,t.path,go(t.value),mo)}function MA(e){let t=Rv(e);if(t===null)throw Error(`"${e}" is not a valid persist target`);return t}function NA(e){let t=MA(e);if(t.scope===`preset-root`)throw Error(`"${e}" names a layout, not a value`);return t}function PA(e,t,n,r){uA(t,r,e.logger),e.record(t,n,r)}function FA(e,t){let n=NA(t),r=dA(lA(e)??``),i=r===null?void 0:lo(r,zv(n));return i!==void 0&&`value`in i?i.value:void 0}function IA(e,t,n,r){let i=NA(n),a=lA(t);PA(e,t,a,Ao(a??``,bA(dA(a??``),i),cA(n,r),mo))}function LA(e,t,n){let r=MA(n),i=lA(t);if(i===null)return;let a=jo(i,AA(dA(i),r));a!==i&&PA(e,t,i,a)}function RA(e,t,n,r){let i=MA(n);if(i.scope!==`preset-root`)throw Error(`"${n}" is not a "presets.<name>.root" target`);let a=lA(t),o=r.op===`remove`?r.target:r.anchor,s=OA(dA(a??``),i.preset,o),c=jA(a??``,s),l=r.op===`remove`?Bo(c,s.path,r.target):Vo(c,s.path,r.segment,r.anchor,r.relation);if(l===null)throw new $(`${s.path.join(`.`)} in ${t} has no segment "${o}" — the bar you clicked is stale; it reloads on the next render`);PA(e,t,a,l)}const zA={load:()=>({}),save:()=>{}},BA=new Set(bv.map(e=>e.sessionKey)),VA={past:[],future:[]},HA=e=>e.kind===`session`?`session:${e.key}`:`file:${e.file}`;var UA=class{state=new Map;constructor(e,t,n=zA){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)??VA;return{undo:t.length,redo:n.length}}history(e){return this.state.get(e)??VA}begin(){let e=new Map,t=(t,n)=>{let r=e.get(t)??new Map,i=r.get(HA(n));r.set(HA(n),i===void 0?n:{...n,before:i.before}),e.set(t,r)},n=this.sessionState,r=(e,r,i)=>{let a=r.filter(e=>BA.has(e)).map(t=>({key:t,before:n.get(e,t)}));i();for(let{key:r,before:i}of a)t(e,{kind:`session`,key:r,before:i,after:n.get(e,r)})};return{sessionState:{get:(e,t)=>n.get(e,t),set:(e,t,i)=>r(e,[t],()=>n.set(e,t,i)),setBatch:(e,t)=>r(e,t.map(e=>e.key),()=>n.setBatch(e,t)),clear:(e,t)=>r(e,[t],()=>n.clear(e,t))},file:(e,n,r,i)=>t(e,{kind:`file`,file:n,before:r,after:i}),commit:()=>{let t=[...e];e.clear();for(let[e,n]of t){let t=[...n.values()].filter(e=>e.before!==e.after);t.length!==0&&this.put(e,{past:KA([...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:KA([...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:KA([...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(HA));throw this.put(e,{past:qA(this.history(e).past,t),future:qA(this.history(e).future,t)}),new $(`${r}: ${o.map(YA).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):lA(t.file)}write(e,t,n){t.kind===`file`?uA(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||WA(n)>8388608;){let[e,t]=n.entries().next().value;n.size>1?n.delete(e):n.set(e,GA(t))}this.storage.save(Object.fromEntries(n)),this.state=n}};function WA(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 GA({past:e,future:t}){return e.length>0?{past:e.slice(1),future:t}:{past:e,future:t.slice(1)}}function KA(e){return e.slice(-50)}function qA(e,t){return e.map(e=>e.filter(e=>!t.has(HA(e)))).filter(e=>e.length>0)}function JA(e){return e.map(YA).join(`, `)}function YA(e){return e.kind===`session`?`session setting "${e.key}"`:e.file}function XA(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 ZA(e){return Array.isArray(e)&&e.every(e=>Array.isArray(e)&&e.every(XA))}function QA(e){if(typeof e!=`object`||!e)return!1;let t=e;return ZA(t.past)&&ZA(t.future)}function $A(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(QA))return e}catch{}return t(`warn`,`settings-history load: unexpected shape, starting empty`),{}},save:n=>{try{r.mkdirSync(c.dirname(e),{recursive:!0}),Ae(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 ej(e){let t=De({bin:`tmux`,args:[`-S`,e.socket,`display`,`-p`,`-t`,e.pane,`#{client_termfeatures}`],timeoutMs:2e3,category:`doctor.tmux`});return t.ok?{kind:`ok`,value:t.stdout.trim().split(`,`).filter(e=>e!==``)}:{kind:`failed`,reason:`tmux display -p failed (${t.error??[t.reason,t.stderr.trim()].filter(e=>e!==``).join(`: `)})`}}function tj(){return{probeTmux:ej,claudeSettingsPath:ZC()}}function nj(e){return r.existsSync(e.claudeSettingsPath)?r.readFileSync(e.claudeSettingsPath,`utf8`):``}function rj(e){if(/^\s*$/.test(e))return{};let t=ho.parse(e);if(typeof t!=`object`||!t||Array.isArray(t))throw Error(`not a JSON object`);let n=t.env;if(n===void 0)return{};if(typeof n!=`object`||!n||Array.isArray(n))throw Error("`env` is not an object");return n}function ij(e,t){return t===void 0?{kind:`unreported`}:t===null?{kind:`outside`}:{kind:`inside`,hint:t,termfeatures:e.probeTmux(t)}}function aj(e){try{return rj(nj(e))}catch(t){throw Error(`cannot read ${e.claudeSettingsPath}: ${t instanceof Error?t.message:String(t)}`,{cause:t})}}function oj(e,t){return{tmux:ij(e,t),claudeSettingsEnv:aj(e)}}function sj(e,t,n){switch(t.kind){case`claude-settings-env`:{let i=Ao(nj(e),[`env`,t.name],JSON.stringify(t.value),ho);return r.mkdirSync(c.dirname(e.claudeSettingsPath),{recursive:!0}),Ae(e.claudeSettingsPath,i),{...n,claudeSettingsEnv:aj(e)}}default:return t.kind}}function cj(e){if(!e)throw new $(`session id is required`);if(e.includes(`/`)||e.includes(`..`))throw new $(`invalid session id "${e}"`);return e}function lj(e){return uj(()=>decodeURIComponent(e))}function uj(e){try{return e()}catch(e){throw e instanceof URIError?new $(`malformed wire encoding: ${e.message}`):e}}function dj(e,t){let n=De({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 fj=(e,t)=>dj(lj(e),t),pj=(e,t)=>{let n=De({bin:`/usr/bin/open`,args:[`-a`,`Visual Studio Code`,lj(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`})`)}},mj=(e,t)=>dj(lj(e),t),hj=(e,t)=>dj(lj(e),t),gj=(e,t)=>{let n=cj(lj(e));t.sessionState.get(n,`toolbar-expanded`)?t.sessionState.clear(n,`toolbar-expanded`):t.sessionState.set(n,`toolbar-expanded`,`1`)},_j=(e,t)=>{let[n=``,...r]=uj(()=>WC(e)),i=cj(n);if(r.length===0)throw new $(`set-state: <key>/<value> is required (have keys: ${pE().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: ${pE().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=hE(t,n);if(!i.ok)throw new $(`set-state: pair ${e/2+1}: ${i.reason}`);a.push({key:t,value:i.value})}t.sessionState.setBatch(i,a);let o=a.map(e=>`${e.key}=${e.value}`).join(` `);t.dlog(`info`,`set-state: ${o} (session=${i})`)},vj=/^-?\d+$/;function yj(e,t,n){return e>n?t:e<t?n:e}function bj(e,t){if(!e)return null;if(!pE().includes(e))throw new $(`${t}: unknown session key "${e}" to release (have: ${pE().join(`, `)})`);return e}function xj(e,t,n,r){e!==null&&(n.sessionState.clear(t,e),n.dlog(`info`,`${r}: released session key ${e} (session=${t})`))}const Sj=(e,t)=>{let[n=``,r=``,i=``]=uj(()=>WC(e)),a=cj(n);if(!r)throw new $(`step-state: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!vj.test(i))throw new $(`step-state: delta must be an integer, got "${i}"`);let o=parseInt(i,10),s=gE(r);if(!s)throw new $(`step-state: key "${r}" is not a bounded (range) state key (have keys: ${pE().join(`, `)})`);let c=t.sessionState.get(a,r),l=c&&vj.test(c)?Math.max(s.min,Math.min(s.max,parseInt(c,10))):s.seed,u=yj(l+o,s.min,s.max),d=hE(r,String(u));if(!d.ok)throw new $(`step-state: ${d.reason}`);t.sessionState.set(a,r,d.value),t.dlog(`info`,`step-state: ${r} ${l}→${d.value} (by ${o}, session=${a})`)},Cj=`render-origin`;function wj(e){return JSON.stringify(e)}function Tj(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 Ej(e,t){let n=e.sessionState.get(t,Cj);if(n===null)throw new $(`session ${t} has not rendered yet — no config file to write`);let r=Tj(n);return iS(r.projectDir,r.cwd,r.configFile??void 0)}function Dj(e,t){return{record:(n,r,i)=>e.journal.file(t,n,r,i),logger:e.dlog}}const Oj=(e,t)=>{let[n=``,r=``,i=``,a=``]=uj(()=>WC(e)),o=cj(n);if(!r)throw new $(`set-config: <key>/<value> is required (have keys: ${YT().join(`, `)})`);let s=XT(r,i);if(!s.ok)throw new $(`set-config: ${s.reason}`);let c=bj(a,`set-config`),l=Ej(t,o);IA(Dj(t,o),l,r,s.value),t.dlog(`info`,`set-config: ${r}=${s.value} → ${l} (session=${o})`),xj(c,o,t,`set-config`)},kj=(e,t)=>{let[n=``,r=``,i=``,a=``]=uj(()=>WC(e)),o=cj(n);if(!r)throw new $(`step-config: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!vj.test(i))throw new $(`step-config: delta must be an integer, got "${i}"`);let s=parseInt(i,10),c=bj(a,`step-config`),l=ZT(r);if(!l)throw new $(`step-config: key "${r}" is not a bounded (range) config key (have keys: ${YT().join(`, `)})`);let u=Ej(t,o),d=FA(u,r),f=typeof d==`number`?Math.max(l.min,Math.min(l.max,d)):l.seed,p=yj(f+s,l.min,l.max),m=XT(r,String(p));if(!m.ok)throw new $(`step-config: ${m.reason}`);IA(Dj(t,o),u,r,m.value),t.dlog(`info`,`step-config: ${r} ${f}→${m.value} (by ${s}) → ${u} (session=${o})`),xj(c,o,t,`step-config`)},Aj=(e,t)=>{let[n=``,r=``]=uj(()=>WC(e)),i=cj(n);if(!r||!YT().includes(r))throw new $(`reset-config: unknown config key "${r}" (have: ${YT().join(`, `)})`);let a=Ej(t,i);LA(Dj(t,i),a,r),t.dlog(`info`,`reset-config: ${r} ← ${a} (session=${i})`)},jj=(e,t)=>{let[n=``,r=``,i=``]=uj(()=>WC(e)),a=cj(n);if(!r)throw new $(`apply-layout-op: <key>/<op> is required (have: ${YT().join(`, `)})`);let o=XT(r,i);if(!o.ok)throw new $(`apply-layout-op: ${o.reason}`);let s=Ev(o.value);if(s===null)throw new $(`apply-layout-op: "${o.value}" is not a layout op token`);let c=Ej(t,a);RA(Dj(t,a),c,r,s),t.dlog(`info`,`apply-layout-op: ${r} ${o.value} → ${c} (session=${a})`)},Mj=(e,t)=>{let[n=``]=uj(()=>WC(e)),r=cj(n);t.journal.commit();let i=t.history.undo(r);t.dlog(`info`,`undo: restored ${JA(i)} (session=${r})`)},Nj=(e,t)=>{let[n=``]=uj(()=>WC(e)),r=cj(n);t.journal.commit();let i=t.history.redo(r);t.dlog(`info`,`redo: re-applied ${JA(i)} (session=${r})`)},Pj=(e,t)=>{cj(lj(e)),t.applyUpdate()},Fj=`client-hints`;function Ij(e,t){let n=e.sessionState.get(t,Fj);if(n===null)throw new $(`session ${t} has not rendered yet — no client facts to diagnose`);let r;try{r=JSON.parse(n)}catch{throw new $(`client hints record is not JSON: ${n}`)}if(typeof r!=`object`||!r)throw new $(`client hints record is not an object: ${n}`);return vS(r)}function Lj(e,t,n){let r=yy(n);e.sessionState.setBatch(t,Sy(r)),e.dlog(`info`,`doctor: ${r.map(e=>`${e.check.name}=${e.verdict.ok?`ok`:`failed`}`).join(` `)} (session=${t})`)}const Rj=(e,t)=>{let n=cj(lj(e));Lj(t,n,oj(t.doctor,Ij(t,n).tmux))},zj=(e,t)=>{let[n=``,r=``]=uj(()=>WC(e)),i=cj(n),a=by(r);if(a===void 0)throw new $(`doctor-fix: unknown check "${r}"`);let o=oj(t.doctor,Ij(t,i).tmux),s=a.probe(o);if(s.ok||s.fix===void 0)throw new $(`doctor-fix: ${a.label} — ${s.ok?`nothing to fix`:s.reason}`);let c=sj(t.doctor,s.fix,o);t.dlog(`info`,`doctor-fix: ${a.name} → ${s.fix.kind} ${s.fix.name}=${s.fix.value} (session=${i})`),Lj(t,i,c)},Bj=`config-override`,Vj=new Map([[kC,fj],[`load-config`,(e,t)=>{let n=e.indexOf(`/`);if(n===-1)throw new $(`load-config: expected <sessionId>/<path> (missing separator)`);let r=cj(uj(()=>decodeURIComponent(e.slice(0,n)))),i=uj(()=>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,Bj),t.dlog(`info`,`load-config: override cleared (session=${r})`)):(t.sessionState.set(r,Bj,i),t.dlog(`info`,`load-config: ${i} (session=${r})`))}],[AC,pj],[DC,_j],[OC,Sj],[PC,Oj],[FC,kj],[IC,Aj],[LC,jj],[RC,Mj],[zC,Nj],[MC,mj],[NC,hj],[jC,gj],[BC,Pj],[VC,Rj],[HC,zj]]),Hj=new Set([DC,OC,PC,FC,IC,LC,RC,zC,jC,BC,VC,HC]),Uj=(e,t)=>{let n=[],r=!1,i=null;for(let{verb:a,value:o}of qC(KC(e))){if(!i&&Hj.has(a)){let e=WC(o);e.length>0&&e[0]&&(i=e[0])}let e=Vj.get(a);if(!e){n.push(`unknown effect verb "${a}"`);continue}try{e(o,t)}catch(e){e instanceof $||(r=!0),n.push(`${a}: ${e instanceof Error?e.message:String(e)}`)}}if(n.length>0){i&&t.sessionState.set(i,`click.error`,n.join(`
184
- `));let e=`dispatch: ${n.join(`; `)}`;throw r?Error(e):new $(e)}};function Wj(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 Gj=new Map([...Vj,[EC,Uj]].map(([e,t])=>[e,Wj(t)]));Object.freeze([...Gj.keys()]);const Kj=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`]),qj=[[`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 Jj(e){let t={missingRequired:[],typeMismatches:[],unknownTopLevelFields:[]},n=typeof e==`object`&&e&&!Array.isArray(e)?e:{};for(let[e,r]of qj){let i=Xj(n,e);if(i==null)t.missingRequired.push(e);else{let n=Yj(i);n!==r&&t.typeMismatches.push({path:e,expected:r,got:n})}}for(let e of Object.keys(n))Kj.has(e)||t.unknownTopLevelFields.push(e);return{data:e,report:t}}function Yj(e){return Array.isArray(e)?`array`:typeof e==`string`&&!e.isWellFormed()?`ill-formed string`:typeof e}function Xj(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 Zj(e,t){switch(e){case`vars`:return{what:e,vars:Qj(t)};case`segments`:return{what:e,segments:rM(t)};case`config`:return{what:e,config:oM(t)}}}function Qj(e){if(e===null)return[];let{store:t,registry:n,config:r}=e,i=tM(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,...$j(r),lastError:a===void 0?null:{timestampMs:a.timestamp,message:a.message},ageMs:eM(r.lastUpdatedMs())})}return o}function $j(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 eM(e){return e===null?null:Math.max(0,Date.now()-e)}function tM(e){let t=new Map;for(let[n,r]of Object.entries(e.variables))t.set(n,nM(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}`,nM(i));return t}function nM(e){return e.kind}function rM(e){if(e===null)return[];let{store:t,config:n,lastRenderBySegment:r}=e,i=new Set(t.names()),a=iM(n),o=[];for(let e of a){let t=n.segments[e];t&&o.push({name:e,description:t.description??null,template:t.template,referencedVars:aM(t.template,i),lastRender:r.get(e)??null})}return o}function iM(e){let t=[],n=new Set;for(let r of Xo(Hs(e.root)))r.kind===`segment`&&e.segments[r.name]&&!n.has(r.name)&&(t.push(r.name),n.add(r.name));for(let r of Object.keys(e.segments))n.has(r)||(t.push(r),n.add(r));return t}function aM(e,t){let n=new Set;for(let r of ug(e)){if(t.has(r)){n.add(r);continue}let e=r.split(`.`);for(;e.length>1;){e.pop();let r=e.join(`.`);if(t.has(r)){n.add(r);break}}}return Array.from(n).sort()}function oM(e){return e===null?null:e.config}const sM=[`vars`,`segments`,`config`];function cM(e){return typeof e==`string`&&sM.includes(e)}function lM(e){return Math.max(1,e-2)}var uM=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 E(`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);E(`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{E(`Calculating context tokens from transcript: ${e}`);let n=await rD(e);if(n.length===0)return E(`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,E(`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 E(`Most recent main chain context: ${n} tokens (limit: ${t})`),J({totalTokens:n,maxTokens:t,...this.ratioPercentages(n,t)})}return E(`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)}},dM=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=BE(t);if(n&&r!==0&&n.cursor.mtimeMs===r)return this.touch(e,n),{kind:`ok`,value:n.value};let i=await sD(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 fM={messageCount:0,recent:[]};function pM(e,t){if(t.isSidechain)return e;let n=[...e.recent,t];return{messageCount:e.messageCount+ +!!tD(t),recent:n.length>20?n.slice(-20):n}}function mM(e){let t=null,n=null;for(let r of e){let e=r.type||r.message?.role||r.message?.type;if(tD(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 hM=class{fold=new dM(fM,pM);async getMetricsInfo(e,t){if(E(`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:mM(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 gM={command:null,todos:[],pending:[],done:[]};function _M(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 vM(e,t){if(t.isSidechain)return e;let n=tD(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=_M(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 yM(e){return{command:e.command,todos:e.todos,running:e.pending.reduce((e,t)=>_M(e,t.name),[]),done:e.done}}var bM=class{fold=new dM(gM,vM);async getActivityInfo(e,t){let n=await this.fold.read(e,t.transcript_path);return n.kind===`failed`?X(`activity (${e}): ${n.reason}`):J(yM(n.value))}};const xM=new Map;function SM(e){if(!e)return``;let t=e.indexOf(`,`);return t<0?e:e.slice(0,t)}var CM=class{async getSessionId(){if(!process.env.TMUX_PANE)return Y;let e=SM(process.env.TMUX),t=xM.get(e);if(t!==void 0)return t;E(`Getting tmux session ID, TMUX_PANE: ${process.env.TMUX_PANE}`);let n=await Ee({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 xM.set(e,r),r}isInTmux(){return!!process.env.TMUX_PANE}},wM=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 TM=new Qk;we(TM.launchStats);const EM=new B_({counters:TM,logger:Q}),DM=new J_({watchers:EM,logger:Q}),OM=new yD,kM=new tA,AM=new UA(kM,Q),jM=new wM(Ge()),MM=new uM,NM=new hM,PM=new bM,FM=new CM,IM=new Xk({gitService:DM,sessionState:kM,watchers:EM},{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)}`)}}),LM=60*1e3;function RM(){let e=import.meta.url,n=[];e.startsWith(`file://`)&&n.push(ne(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),eN(0);return}}catch(e){Q(`warn`,`bin stat failed: ${e.message}`)}};return{arm(){i.size!==0&&(a=setInterval(o,LM),a.unref())},checkNow:o}}const zM=RM(),BM=IE({entryUrl:import.meta.url,intervalMs:LM,releaseIntervalMs:216e5,registryUrl:t.env.CC_CANDYBAR_REGISTRY_URL??`https://registry.npmjs.org`,fetchImpl:fetch,onApplied:()=>zM.checkNow(),log:Q});let VM=null,HM=null,UM=0;function WM(){t.on(`uncaughtException`,e=>{Q(`error`,`uncaughtException: ${e.stack||e.message}`),eN(1)}),t.on(`unhandledRejection`,e=>{Q(`error`,`unhandledRejection: ${String(e)}`),eN(1)});for(let e of[`SIGINT`,`SIGTERM`,`SIGHUP`])t.on(e,()=>{Q(`info`,`received ${e}, shutting down`),eN(0)});try{UM=QS(t.env)}catch(e){Q(`error`,`refusing to boot: ${e.message}`),eN(1);return}VM=Vw(t.pid);let e=Zw($w(VM));if(!e.decision.allow){Q(`warn`,`fork-bomb breaker: ${e.decision.reason}; refusing to boot`),eN(1);return}HM=e.registryPath,r.mkdirSync(Ne(),{recursive:!0}),Ie(Pe()),kM.useStorage(new iA(ze(),500,Q)),AM.useStorage($A(Be(),Q)),Ww({anchor:Uw(t.env),isAlive:Gw,onOrphaned:e=>{Q(`info`,`parent watchdog: ${e}; shutting down`),eN(0)}}),GM(g.createServer({allowHalfOpen:!1},e=>{tN(e)}),Pe(),!1)}function GM(e,n,r){e.removeAllListeners(`error`),e.removeAllListeners(`listening`),e.once(`error`,i=>{if(i.code!==`EADDRINUSE`){Q(`error`,`server error: ${i.message}`),eN(1);return}if(r){Q(`info`,`lost rebind race; another daemon is alive — exiting`),t.exit(0);return}KM(e,n)}),e.listen(n,()=>qM(n))}function KM(e,n){let i=jw(Mw(Le(n)),(e,t)=>Bw(e,t,{readStartTime:zw,pidAlive:Gw}));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}`),eN(1);return}}GM(e,n,!0)}function qM(e){let n=Fw(e);if(n.kind!==`present`){Q(`warn`,`no ownable socket at bind callback (${n.kind}); exiting`),eN(0);return}ZM(e);try{r.chmodSync(e,384)}catch(e){Q(`warn`,`chmod socket failed: ${e.message}`)}Q(`info`,`daemon up: pid=${t.pid} v=3 sock=${e} heapCap=${Math.round(C.getHeapStatistics().heap_size_limit/1048576)}MB rssLimit=${Math.round(UM/1048576)}MB`),hC();let i=jM.reset();i!==null&&Q(`warn`,`diagnostic dump wipe failed: ${i}`),zM.arm(),BM.arm(),XM(),JM(e,n.identity)}function JM(e,n){Rw({bound:n,myPid:t.pid,readIdentity:()=>Fw(e),readLease:()=>Mw(Le(e)),shutdown:e=>eN(e),log:Q}).arm()}let YM=null;function XM(){YM=nC(oC(TM.startedAt.getTime(),e=>eN(e),{rssLimitBytes:UM})),YM.arm()}function ZM(e){let n=Nw(Le(e),{pid:t.pid,version:3,binPath:t.argv[1],startTime:VM});n!==null&&Q(`warn`,`lease write failed: ${n}`)}let QM=0,$M=!1;function eN(e){if(!$M){$M=!0,setTimeout(()=>t.kill(t.pid,`SIGKILL`),500);try{DM.close()}catch(e){Q(`warn`,`gitService close failed: ${e.message}`)}try{OM.close()}catch(e){Q(`warn`,`usageStore close failed: ${e.message}`)}try{EM.closeAll()}catch(e){Q(`warn`,`watcherRegistry close failed: ${e.message}`)}try{kM.flush()}catch(e){Q(`warn`,`sessionState flush failed: ${e.message}`)}Pw(Re(),t.pid),HM!==null&&Qw(HM,t.pid,Yw,e=>r.unlinkSync(e)),t.exit(e)}}function tN(e){QM++,TM.inFlight=QM;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:()=>eN(r);try{e.end(TS(n),i)}catch(e){Q(`warn`,`response write failed: ${e.message}`),i?.()}},r=setTimeout(()=>{TM.requestsTimedOut++,n({ok:!1,error:`request exceeded 200ms`,code:`TIMEOUT`,daemonV:3},null)},200),i=ES(e=>{rN(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),QM=Math.max(0,QM-1),TM.inFlight=QM})}const nN=e=>({resp:e,exitAfterFlush:null});async function rN(e){if(!e||typeof e!=`object`||typeof e.v!=`number`)return nN({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 nN({ok:!0,stats:TM.snapshot({gitCache:DM.getStats(),usageCache:OM.getStats(),renderCacheSize:IM.size,watchersActive:EM.size(),nextRestartReason:YM?.describeNextRestart()??null})});if(e.kind===`render`){TM.requestsTotal++;let t=Date.now();try{let{report:n}=Jj(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 TM.requestsErrored++,Q(`warn`,`BAD_REQUEST: ${r.join(`; `)}`),nN({ok:!1,error:`malformed hookData: ${r.join(`; `)}`,code:`BAD_REQUEST`,daemonV:3});let i=e.hookData.workspace.project_dir,{configFile:a,unknownFlagsError:o}=iN(e.args),s=e.hookData.session_id,c=vS(e),l=JSON.stringify(c);kM.get(s,`client-hints`)!==l&&kM.set(s,Fj,l);let u=kM.get(s,`config-override`)??a??c.configEnv,d=IM.getOrCreate(i,e.cwd,u),f=wj({projectDir:i,cwd:e.cwd,configFile:u??null});kM.get(s,`render-origin`)!==f&&kM.set(s,Cj,f);let p=c.termCols,m=lM(p??120),h=gT(c.termRows),g={...oN,width:m},{authoredRoots:_}=d.state,v=TD(d.state.config,t=>kM.get(e.hookData.session_id,t),e=>_.has(e)),y=await BD(e.hookData,uN,e.cwd,d.state.neededInputPaths(v.preset),v,c),b=[];g.style=v.style,g.separator=v.separator,g.wrap=v.autoWrap,g.padding=v.padding,g.charset=v.charset,g.colorCompatibility=v.colorCompatibility;let x=Ik(d.state.config,d.state.compiled,d.state.store,d.state.registry,y,g,{perSegmentSink:d.state.lastRenderCellsBySegment,onRenderWarning:e=>b.push(e)},{theme:v.theme,look:v.look,preset:v.preset,progression:v.progression}),S=kM.get(e.hookData.session_id,`click.error`);S&&kM.clear(e.hookData.session_id,`click.error`);let C=[o,d.lastError,S].filter(Boolean).join(`
181
+ `);n.push(e[0]);for(let r=1;r<e.length;r++)t.push(n),n=[e[r]]}return t.push(n),t}const _k=({text:e,trail:t})=>t===void 0?[e]:[e,t];function vk(e,t){switch(e){case`vertical`:return bk(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))]:bk(e)}}}function yk(e,t){let n=(e,r)=>t(e)?e.kind===`segment`?[{cells:[{name:e.name,address:r}],band:`own`,span:`shared`}]:vk(e.direction,e.children.map((t,i)=>n(t,[...r,xk(e,i)]))):[];return n(e,[]).map(e=>[...e.cells])}function bk(e){return e.map(e=>e.span===`row`?{...e,span:`shared`}:e)}function xk(e,t){return{index:t,count:e.children.length,distribution:e.distribution,axis:Jo[e.direction]}}const Sk={compile(e,t){return{kind:`container`,direction:e.direction,when:t.when,distribution:Li(e.distribution),children:e.children.map((e,n)=>t.compileChild(e,Zo(t.path,n)))}},render(e,t){return vk(e.direction,e.children.map((n,r)=>t.renderChild(n,t.visible,xk(e,r))))}},Ck={compile(e,t){return{kind:`segment`,when:t.when,name:e.name,...e.opens!==void 0&&{opens:{open:t.parse(tc(e.opens.ref),`opens`),body:t.compileChild(e.opens.body,Qo(t.path)),key:e.opens.ref.key,placement:e.opens.placement}},...e.trail!==void 0&&{trail:t.parse(e.trail,`trail`)}}},render(e,t){let n=t.lookupSegment(e.name);if(!n)throw Error(`Layout segment "${e.name}" has no matching segment`);let{seg:r,compiled:i}=n;if(!t.visible)return[];try{if(!iO(i.when,t.scope))return[];let n=i.palette??t.palette,{styles:a,fragments:o,trail:s,drops:c}=t.evaluateSegment(e.name,n,t.region,{bg:i.bg,fg:i.fg,body:i.template,trail:e.trail}),l=e.opens!==void 0&&iO(e.opens.open,t.scope),u=c.length>0||l?a.trigger:a.closed,d={width:r.width??`auto`,justify:r.justify??`left`,truncate:r.truncate??`right`,baseStyle:u,padding:t.padding},f=e.opens===void 0?[]:t.renderBody(e.opens.body,l,a.disclosure),p=f.slice(0,+(e.opens?.placement===`inline`)),m=f.slice(p.length),h=e.opens!==void 0&&m.some(e=>e.band===`own`)?cO(fO([t.closeDisclosure(e.opens.key)],a.trigger),{...d,width:`auto`,baseStyle:a.trigger}):[],g=e=>e.band===`own`?h:[],_=m.map(e=>({cells:[...g(e),...e.cells],band:`deeper`,span:`shared`})),v=gk(fO(o,u)).map((e,t)=>({cells:cO(e,{...d,trail:t===0?fO(s,u):[]}),band:`own`,span:`shared`})),y=c.map(e=>({cells:cO(fO([e],a.band),{...d,baseStyle:a.band}),band:`deeper`,span:`shared`})),b=[...v,...y];return t.perSegmentSink!==void 0&&t.perSegmentSink.set(e.name,[...b.flatMap(e=>e.cells),...m.flatMap(g)].flatMap(_k)),[...b.map((e,t)=>t===0&&p.length>0?{cells:[...e.cells,...p.flatMap(e=>e.cells)],band:`own`,span:`row`}:e),..._]}catch(n){let r=n.message??String(n);t.onSegmentError?.(e.name,r);let i=r.replace(/\s*\n\s*/g,` `);return[{cells:cO([new H(`⚠ ${e.name}: ${i}`,{end:``})],{width:`auto`,justify:`left`,truncate:`right`,padding:0,trail:wk(e,t)}),band:`own`,span:`shared`}]}}};function wk(e,t){if(e.trail===void 0)return[];try{return t.evaluateSegment(e.name,t.palette,t.region,{bg:void 0,fg:void 0,body:e.trail,trail:void 0}).fragments}catch(n){return t.onSegmentError?.(e.name,n.message??String(n)),[]}}const Tk={container:Sk,segment:Ck};function Ek(e){return Tk[e]}function Dk(e){if(`ttl`in e)return{kind:`ttl`,durationMs:iv(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 Ok(e,t){switch(ts(e)){case`json`:return{kind:`json`,default:t};case`regex`:return{kind:`regex`,regex:new RegExp(e.regex),default:t};case`text`:return{kind:`text`,default:t}}}function kk(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:Dk(n.cache),parse:Ok(n.parse,n.default)});break;case`shell`:e.declareShell(t,n.command,{cache:Dk(n.cache),parse:Ok(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?iv(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 Ak(e,t){let n=Cu.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 jk=e=>Ka(void 0,null,e.globals.progression);function Mk(e,t,n){let r=n?.cwd??process.cwd(),i=Nx(e.globals.palette),a={store:t.variableStore,compiled:new Map,chromeCols:pT({style:`powerline`,charset:Ia}),width:80,basePalette:i,palette:i,progression:ki[jk(e)],padding:1,seamCols:mT({style:`powerline`,charset:Ia}),layout:()=>[]},o=RO(t.drawnAt),s={action:a,activeSegment:o},c=Object.keys(e.looks),l=Pv(e.presets),u=new Map([...Ix(e),...sy(e)]),d=h_({...MO(a),...YO(a,o),...QO(a,o),...nk(a,o),...sk(a,o),...dk(s),...mk(o),looks:{fn:()=>c,argTypes:[]},presets:{fn:()=>l,argTypes:[]}},n?.clock,t.drawnAt),f=Ak(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 Ev)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=bO(p,e.actions,g,u);let _=[];for(let[n,i]of Object.entries(e.variables))try{kk(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{kk(t,`${n}.${e}`,a,r)}catch(t){_.push(`Variable "${n}.${e}": ${t.message??String(t)}`)}let v=Object.create(null);for(let[t,n]of Object.entries(e.segments)){let e=(e,n,r=p)=>{try{return r(e)}catch(e){throw Error(`Template parse error in segments.${t}.${n}: ${e.message}`,{cause:e})}};v[t]={when:n.when===void 0?void 0:e(n.when,`when`,h),template:e(n.template,`template`),bg:n.bg===void 0?void 0:e(n.bg,`bg`),fg:n.fg===void 0?void 0:e(n.fg,`fg`),palette:n.palette===void 0?void 0:Ex(n.palette)}}let y=(e,t,n)=>{try{return h(e)}catch(e){throw Error(`Template parse error in ${t}.${n}: ${e.message}`,{cause:e})}},b=(e,t)=>{let n={path:t,when:e.when===void 0?void 0:y(e.when,t,`when`),parse:(e,n)=>y(e,t,n),compileChild:b};return Ek(e.kind).compile(e,n)},x=new Map;for(let t of l){let{node:n,path:r}=Lv(e,t);x.set(t,b(n,r))}let S=new Map;for(let t of wa){let n=e.globals[t];Ta(n)&&S.set(t,Nk(p,t,n))}return{segments:v,roots:x,activeSegment:o,menuRuntime:s,globalExpressions:S,loadWarnings:_}}function Nk(e,t,n){try{return e(n)}catch(e){throw Error(`globals.${t} is not a valid template: ${e instanceof Error?e.message:String(e)}`)}}function Pk(e,t,n){let r=e.globalExpressions.get(t);if(r===void 0)throw Error(`globals.${t} is an expression but no compiled template exists — registerDslConfig and the resolution disagree about isExpression`);return r.evaluate(n).map(e=>e.plain).join(``)}function Fk(e,t){return e.kind===`decided`?e.name:t}function Ik(e,t,n,r,i,a,o,s){let{perSegmentSink:c,onSegmentError:l,onRenderWarning:u}=o??{};r.drawAt(Ua(a.colorCompatibility));let{preset:d=Mv}=s??{},f=ki[s?.progression??jk(e)];t.menuRuntime.action.progression=f;let p=s?.look??Aa(`none`,e.looks),m=s?.theme??jx(void 0,null,e.globals.palette),h=(e,t)=>({...i,term:{cols:a.width},theme:{effective:e},look:{effective:t}});r.applyInput(h(Fk(m,ya),Fk(p,Oa))),t.menuRuntime.action.chromeCols=pT(a),t.menuRuntime.action.padding=a.padding,t.menuRuntime.action.width=a.width,t.menuRuntime.action.seamCols=mT(a);let g=g_(n),_=Da(m,()=>Pk(t,`palette`,g),e=>Ax(e,e=>u?.(e))),v=Da(p,()=>Pk(t,`look`,g),t=>Aa(t,e.looks));(_!==m||v!==p)&&r.applyInput(h(_.name,v.name));let y=_.value;t.menuRuntime.action.basePalette=y;let b=Ox(y,v.value);t.menuRuntime.action.palette=b,c?.clear();let x=n=>{let r=e.segments[n],i=t.segments[n];return r!==void 0&&i!==void 0?{seg:r,compiled:i}:void 0},S=(e,n,i,a)=>{try{let o=r.drawnAt(),{tint:s,disclosure:c}=ga(n,i,o),l=zO(t.activeSegment,e,n,c,s),u=_O(l,o,a.bg,a.fg,g),d=a.body.evaluate(g),f=a.trail?.evaluate(g)??[];return{styles:{closed:u,get trigger(){return PO(n,aa(n,c,o).state,o)},get band(){return PO(n,aa(n,c,o).plane,o)},disclosure:c},fragments:d,trail:f,drops:l.drops}}finally{t.activeSegment.current=null}},C=(e,t,r)=>{let i=t&&iO(e.when,g),o={scope:g,palette:b,visible:i,padding:a.padding,region:r,perSegmentSink:c,onSegmentError:l,evaluateSegment:S,lookupSegment:x,renderChild:(e,t,n)=>C(e,t,ma(r,n)),renderBody:(e,t,n)=>C(e,i&&t,ha(n)),closeDisclosure:e=>NO(n,e)};return Ek(e.kind).render(e,o)},ee=t.roots.get(d);if(ee===void 0)throw Error(`Preset "${d}" has no compiled layout — registerDslConfig compiles one per declared preset and effectivePresetName collapses unknown names to "${Mv}"; a miss here is merge/policy drift (have: ${[...t.roots.keys()].join(`, `)})`);let te=e=>{if(!iO(e.when,g))return!1;if(e.kind===`container`)return!0;if(dy(e.name)===void 0)return!1;try{return iO(t.segments[e.name].when,g)}catch{return!0}};return t.menuRuntime.action.layout=()=>yk(ee,te).map(e=>e.flatMap(e=>{let n=dy(e.name);return n===void 0?[]:[{...e,name:n,palette:t.segments[n].palette??b}]})),C(ee,!0,pa(f)).map(e=>hT(dO(e.cells,a),a)).join(`
182
+ `)}var Lk=class{kind=`box`;cell;lastChangedAt;constructor(e,t,n){this.name=e,this.type=t,Uk(e,t,n,`initial value`),this.cell=Sg.observable.box(n,{deep:!1}),this.lastChangedAt=Date.now()}read(){return this.cell.get()}set(e){Uk(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}},Rk=class{kind=`computed`;cell;constructor(e,t,n){this.name=e,this.type=t,this.cell=(0,Sg.computed)(()=>{let e=n();return Uk(this.name,this.type,e,`computed result`),e},{keepAlive:!0})}read(){return this.cell.get()}lastUpdatedMs(){return null}},zk=class{kind=`document`;cell;lastChangedAt;constructor(e,t){this.name=e,this.cell=Sg.observable.box(Hk(t),{deep:!1}),this.lastChangedAt=Date.now()}read(){return this.cell.get()}set(e){let t=Hk(e);Vk(this.cell.get(),t)||(this.cell.set(t),this.lastChangedAt=Date.now())}lastUpdatedMs(){return this.lastChangedAt}};function Bk(e){return JSON.stringify(e)}function Vk(e,t){return Bk(e)===Bk(t)}function Hk(e){return e.kind===`ok`?{kind:`ok`,value:Cg(e.value)}:e}function Uk(e,t,n,r){let i=wg(n);if(i!==t)throw TypeError(`Variable "${e}": ${r} type ${i} does not match declared type ${t}`)}var Wk=class{nodes=new Map;defineBox(e,t,n){this.assertNotDefined(e),this.nodes.set(e,new Lk(e,t,n))}defineDocument(e,t){this.assertNotDefined(e),this.nodes.set(e,new zk(e,t))}defineComputed(e,t,n){this.assertNotDefined(e);let r=e=>this.read(e);this.nodes.set(e,new Rk(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,Sg.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,Sg.runInAction)(()=>n.set(t))}runInAction(e){(0,Sg.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 Bk(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 Gk(e,t,n){return e+`\0`+t+`\0`+(n??``)}function Kk(e,t){return new Set(Pv(e.presets).filter(n=>Lv(e,n).path===`root`?t.root!==void 0:t.presets?.[n]?.root!==void 0))}function qk(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 Jk(e,t){let n=new Map;for(let t of tS(e.projectDir,e.cwd,e.configFile)){let{dir:e,name:r}=qk(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 Yk(e){return e.filter(Boolean).join(`
183
+ `)||null}var Xk=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=Gk(e,t,n),i=this.entries.get(r);if(i)return this.entries.delete(r),this.entries.set(r,i),i;let a=this.loadFromDisk(e,t,n),o={projectDir:e,cwd:t,configFile:n,configFilePath:null,lastError:a.error,lastWarning:a.warning,state:a.state??this.buildState(t,null,[]),watcher:null,watcherKey:null};if(this.entries.set(r,o),this.entries.size>this.maxEntries){let e=this.entries.entries().next().value;if(e!==void 0){let[t,n]=e;n.state.registry.dispose(),n.state.validatorDisposers.forEach(e=>e()),n.watcher?.release(),this.entries.delete(t)}}return this.refreshWatcher(o,a.resolvedPath),this.observers.onReload?.(o),o}reloadInto(e){let t=this.loadFromDisk(e.projectDir,e.cwd,e.configFile);e.lastWarning=t.warning,e.lastError=t.error,t.state!==null&&(e.state.registry.dispose(),e.state.validatorDisposers.forEach(e=>e()),e.state=t.state),this.refreshWatcher(e,t.resolvedPath),this.observers.onReload?.(e)}loadFromDisk(e,t,n){let r=rS(e,t,n),i=r.kind===`file`?r.path:null,a=[sS(e,t),aS(r)],o;try{o=this.buildState(t,i,a)}catch(e){return e instanceof Ho&&a.push(...e.warnings),{resolvedPath:i,warning:Yk(a),state:null,error:e instanceof Ho||e instanceof Error?e.message:String(e)}}return{resolvedPath:i,warning:Yk(a),state:o,error:null}}buildState(e,t,n){let r=cS(t,rO),{config:i,raw:a}=r;n.push(...r.warnings);let o=dS(r,t??`<default>`),s=new Wk,c=new xv(s,o.globals.default_empty_value??``,this.deps.gitService,this.deps.sessionState),l,u=[];try{l=Mk(o,c,{cwd:e}),n.push(...l.loadWarnings);for(let{key:e,spec:t}of xE(o))u.push(mE(e,t));for(let{key:e,spec:t}of rE(o))u.push(iE(e,t))}catch(e){for(let e of u)e();throw c.dispose(),e}return{config:o,store:s,registry:c,compiled:l,neededInputPaths:ID(o),lastRenderCellsBySegment:new Map,validatorDisposers:u,authoredRoots:Kk(i,a)}}refreshWatcher(e,t){e.configFilePath=t;let n=Jk(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 Zk=16384;var Qk=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<Zk){this.rollingTimestamps.push(e);return}this.rollingTimestamps[this.rollingHead]=e,this.rollingHead=(this.rollingHead+1)%Zk}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:XC,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 $k={load:()=>({}),save:()=>{},flush:()=>{}};function eA(e){let t=new Map;for(let[n,r]of Object.entries(e))t.set(n,new Map(Object.entries(r)));return t}var tA=class{sessions;storage;atom=(0,Sg.createAtom)(`SessionState`);constructor(e=$k,t=256){this.maxSessions=t,this.storage=e,this.sessions=new Map,this.hydrateFromStorage()}useStorage(e){this.storage=e,this.hydrateFromStorage()}hydrateFromStorage(){this.sessions=eA(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,Sg.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,Sg.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,Sg.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 nA=(e,t)=>E(t);function rA(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 iA=class{timer=null;pending=null;constructor(e,t=500,n=nA){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 rA(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 aA={default_bg:`string`,default_fg:`string`,default_empty_value:`string`,default_separator:`string`,default_truncate_marker:`string`,palette:`string`,look:`string`,preset:`string`,style:`string`,progression:`string`,autoWrap:`boolean`,padding:`number`,charset:`string`,updateNotice:`boolean`,colorCompatibility:`string`,menuGlyph:`string`},oA=new Set([`1`,`true`]),sA=new Set([`0`,`false`,``]);function cA(e,t){let n=NA(e),r=n.scope===`globals`?aA[n.field]:`string`;if(r===`string`)return JSON.stringify(t);if(r===`number`){let n=Number(t);if(!Number.isFinite(n))throw Error(`persistValueText: "${e}" expects a number, got "${t}"`);return String(n)}if(oA.has(t))return`true`;if(sA.has(t))return`false`;throw Error(`persistValueText: "${e}" expects boolean-ish (1, 0, true, false), got "${t}"`)}function lA(e){try{return r.readFileSync(e,`utf8`)}catch(e){if(e.code===`ENOENT`)return null;throw e}}function uA(e,t,n){try{if(t===null){r.rmSync(e,{force:!0});return}r.mkdirSync(c.dirname(e),{recursive:!0}),Ae(e,t)}catch(t){let r=`config write failed (${e}): ${t.message}`;throw n(`error`,r),Error(r)}}function dA(e){return/^\s*$/.test(e)?null:so(e)}function fA(e,t){return e!==null&&lo(e,t)!==void 0}function pA(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(pA),...i}}return e}function mA(e){if(!zs(e))return pA(e);let{rows:t,...n}=e;return{rows:Object.fromEntries(Object.entries(t).map(([e,t])=>[e,pA(t)])),...n}}const hA=tO,gA=hA.segments,_A=hA.presets,vA=hA.root;function yA(e,t,n,r){if(!fA(e,t)&&n===void 0)throw new $(`cannot edit ${r}: neither the config file nor the bundled default declares ${t.join(`.`)}`)}function bA(e,t){let n=Uv(t);return t.scope===`segment-palette`&&yA(e,[`segments`,t.segment],gA[t.segment],n.join(`.`)),n}function xA(e){return so(go(e))}function SA(){return Object.entries(vA.rows).map(([e,t])=>{let n=pA(t);return{path:[`root`],fragment:xA({rows:{[e]:n}}),unit:{path:[`root`,`rows`,e],value:n}}})}function CA(e,t){let n=e===null?void 0:lo(e,t);return n===void 0?null:{path:t,fragment:n,unit:null}}function wA(e,t){if(t===void 0)return null;let n=mA(t);return{path:e,fragment:xA(n),unit:{path:e,value:n}}}function TA(e,t){let n=[`presets`,t],r=[...n,`root`],i=_A[t];yA(e,n,i,r.join(`.`));let a=CA(e,r)??wA(r,i?.root);return a!==null&&Io(a.fragment)?a:null}function EA(e,t){let n=Fo(t.fragment);return n===null?new Map([[`#`,{path:t.path,unit:t.unit,node:t.fragment}]]):new Map([...e,...n.map(e=>[e.key,{path:[...t.path,`rows`,e.key],unit:t.unit,node:e.value}])])}function DA(e,t){return[...SA(),CA(e,[`root`]),TA(e,t)].filter(e=>e!==null).reduce(EA,new Map)}function OA(e,t,n){for(let{node:r,...i}of DA(e,t).values())if(Ro(r,n))return i;throw new $(`${kA(e,t).join(`.`)} holds no segment "${n}" — the bar you clicked is stale; it reloads on the next render`)}function kA(e,t){return TA(e,t)?.path??[`root`]}function AA(e,t){return t.scope===`preset-root`?kA(e,t.preset):Uv(t)}function jA(e,{unit:t}){return t===null?e:Ao(e,t.path,go(t.value),mo)}function MA(e){let t=Hv(e);if(t===null)throw Error(`"${e}" is not a valid persist target`);return t}function NA(e){let t=MA(e);if(t.scope===`preset-root`)throw Error(`"${e}" names a layout, not a value`);return t}function PA(e,t,n,r){uA(t,r,e.logger),e.record(t,n,r)}function FA(e,t){let n=NA(t),r=dA(lA(e)??``),i=r===null?void 0:lo(r,Uv(n));return i!==void 0&&`value`in i?i.value:void 0}function IA(e,t,n,r){let i=NA(n),a=lA(t);PA(e,t,a,Ao(a??``,bA(dA(a??``),i),cA(n,r),mo))}function LA(e,t,n){let r=MA(n),i=lA(t);if(i===null)return;let a=jo(i,AA(dA(i),r));a!==i&&PA(e,t,i,a)}function RA(e,t,n,r){let i=MA(n);if(i.scope!==`preset-root`)throw Error(`"${n}" is not a "presets.<name>.root" target`);let a=lA(t),o=r.op===`remove`?r.target:r.anchor,s=OA(dA(a??``),i.preset,o),c=jA(a??``,s),l=r.op===`remove`?Bo(c,s.path,r.target):Vo(c,s.path,r.segment,r.anchor,r.relation);if(l===null)throw new $(`${s.path.join(`.`)} in ${t} has no segment "${o}" — the bar you clicked is stale; it reloads on the next render`);PA(e,t,a,l)}const zA={load:()=>({}),save:()=>{}},BA=new Set(wv.map(e=>e.sessionKey)),VA={past:[],future:[]},HA=e=>e.kind===`session`?`session:${e.key}`:`file:${e.file}`;var UA=class{state=new Map;constructor(e,t,n=zA){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)??VA;return{undo:t.length,redo:n.length}}history(e){return this.state.get(e)??VA}begin(){let e=new Map,t=(t,n)=>{let r=e.get(t)??new Map,i=r.get(HA(n));r.set(HA(n),i===void 0?n:{...n,before:i.before}),e.set(t,r)},n=this.sessionState,r=(e,r,i)=>{let a=r.filter(e=>BA.has(e)).map(t=>({key:t,before:n.get(e,t)}));i();for(let{key:r,before:i}of a)t(e,{kind:`session`,key:r,before:i,after:n.get(e,r)})};return{sessionState:{get:(e,t)=>n.get(e,t),set:(e,t,i)=>r(e,[t],()=>n.set(e,t,i)),setBatch:(e,t)=>r(e,t.map(e=>e.key),()=>n.setBatch(e,t)),clear:(e,t)=>r(e,[t],()=>n.clear(e,t))},file:(e,n,r,i)=>t(e,{kind:`file`,file:n,before:r,after:i}),commit:()=>{let t=[...e];e.clear();for(let[e,n]of t){let t=[...n.values()].filter(e=>e.before!==e.after);t.length!==0&&this.put(e,{past:KA([...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:KA([...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:KA([...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(HA));throw this.put(e,{past:qA(this.history(e).past,t),future:qA(this.history(e).future,t)}),new $(`${r}: ${o.map(YA).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):lA(t.file)}write(e,t,n){t.kind===`file`?uA(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||WA(n)>8388608;){let[e,t]=n.entries().next().value;n.size>1?n.delete(e):n.set(e,GA(t))}this.storage.save(Object.fromEntries(n)),this.state=n}};function WA(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 GA({past:e,future:t}){return e.length>0?{past:e.slice(1),future:t}:{past:e,future:t.slice(1)}}function KA(e){return e.slice(-50)}function qA(e,t){return e.map(e=>e.filter(e=>!t.has(HA(e)))).filter(e=>e.length>0)}function JA(e){return e.map(YA).join(`, `)}function YA(e){return e.kind===`session`?`session setting "${e.key}"`:e.file}function XA(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 ZA(e){return Array.isArray(e)&&e.every(e=>Array.isArray(e)&&e.every(XA))}function QA(e){if(typeof e!=`object`||!e)return!1;let t=e;return ZA(t.past)&&ZA(t.future)}function $A(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(QA))return e}catch{}return t(`warn`,`settings-history load: unexpected shape, starting empty`),{}},save:n=>{try{r.mkdirSync(c.dirname(e),{recursive:!0}),Ae(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 ej(e){let t=De({bin:`tmux`,args:[`-S`,e.socket,`display`,`-p`,`-t`,e.pane,`#{client_termfeatures}`],timeoutMs:2e3,category:`doctor.tmux`});return t.ok?{kind:`ok`,value:t.stdout.trim().split(`,`).filter(e=>e!==``)}:{kind:`failed`,reason:`tmux display -p failed (${t.error??[t.reason,t.stderr.trim()].filter(e=>e!==``).join(`: `)})`}}function tj(){return{probeTmux:ej,claudeSettingsPath:ZC()}}function nj(e){return r.existsSync(e.claudeSettingsPath)?r.readFileSync(e.claudeSettingsPath,`utf8`):``}function rj(e){if(/^\s*$/.test(e))return{};let t=ho.parse(e);if(typeof t!=`object`||!t||Array.isArray(t))throw Error(`not a JSON object`);let n=t.env;if(n===void 0)return{};if(typeof n!=`object`||!n||Array.isArray(n))throw Error("`env` is not an object");return n}function ij(e,t){return t===void 0?{kind:`unreported`}:t===null?{kind:`outside`}:{kind:`inside`,hint:t,termfeatures:e.probeTmux(t)}}function aj(e){try{return rj(nj(e))}catch(t){throw Error(`cannot read ${e.claudeSettingsPath}: ${t instanceof Error?t.message:String(t)}`,{cause:t})}}function oj(e,t){return{tmux:ij(e,t),claudeSettingsEnv:aj(e)}}function sj(e,t,n){switch(t.kind){case`claude-settings-env`:{let i=Ao(nj(e),[`env`,t.name],JSON.stringify(t.value),ho);return r.mkdirSync(c.dirname(e.claudeSettingsPath),{recursive:!0}),Ae(e.claudeSettingsPath,i),{...n,claudeSettingsEnv:aj(e)}}default:return t.kind}}function cj(e){if(!e)throw new $(`session id is required`);if(e.includes(`/`)||e.includes(`..`))throw new $(`invalid session id "${e}"`);return e}function lj(e){return uj(()=>decodeURIComponent(e))}function uj(e){try{return e()}catch(e){throw e instanceof URIError?new $(`malformed wire encoding: ${e.message}`):e}}function dj(e,t){let n=De({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 fj=(e,t)=>dj(lj(e),t),pj=(e,t)=>{let n=De({bin:`/usr/bin/open`,args:[`-a`,`Visual Studio Code`,lj(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`})`)}},mj=(e,t)=>dj(lj(e),t),hj=(e,t)=>dj(lj(e),t),gj=(e,t)=>{let n=cj(lj(e));t.sessionState.get(n,`toolbar-expanded`)?t.sessionState.clear(n,`toolbar-expanded`):t.sessionState.set(n,`toolbar-expanded`,`1`)},_j=(e,t)=>{let[n=``,...r]=uj(()=>WC(e)),i=cj(n);if(r.length===0)throw new $(`set-state: <key>/<value> is required (have keys: ${pE().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: ${pE().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=hE(t,n);if(!i.ok)throw new $(`set-state: pair ${e/2+1}: ${i.reason}`);a.push({key:t,value:i.value})}t.sessionState.setBatch(i,a);let o=a.map(e=>`${e.key}=${e.value}`).join(` `);t.dlog(`info`,`set-state: ${o} (session=${i})`)},vj=/^-?\d+$/;function yj(e,t,n){return e>n?t:e<t?n:e}function bj(e,t){if(!e)return null;if(!pE().includes(e))throw new $(`${t}: unknown session key "${e}" to release (have: ${pE().join(`, `)})`);return e}function xj(e,t,n,r){e!==null&&(n.sessionState.clear(t,e),n.dlog(`info`,`${r}: released session key ${e} (session=${t})`))}const Sj=(e,t)=>{let[n=``,r=``,i=``]=uj(()=>WC(e)),a=cj(n);if(!r)throw new $(`step-state: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!vj.test(i))throw new $(`step-state: delta must be an integer, got "${i}"`);let o=parseInt(i,10),s=gE(r);if(!s)throw new $(`step-state: key "${r}" is not a bounded (range) state key (have keys: ${pE().join(`, `)})`);let c=t.sessionState.get(a,r),l=c&&vj.test(c)?Math.max(s.min,Math.min(s.max,parseInt(c,10))):s.seed,u=yj(l+o,s.min,s.max),d=hE(r,String(u));if(!d.ok)throw new $(`step-state: ${d.reason}`);t.sessionState.set(a,r,d.value),t.dlog(`info`,`step-state: ${r} ${l}→${d.value} (by ${o}, session=${a})`)},Cj=`render-origin`;function wj(e){return JSON.stringify(e)}function Tj(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 Ej(e,t){let n=e.sessionState.get(t,Cj);if(n===null)throw new $(`session ${t} has not rendered yet — no config file to write`);let r=Tj(n);return iS(r.projectDir,r.cwd,r.configFile??void 0)}function Dj(e,t){return{record:(n,r,i)=>e.journal.file(t,n,r,i),logger:e.dlog}}const Oj=(e,t)=>{let[n=``,r=``,i=``,a=``]=uj(()=>WC(e)),o=cj(n);if(!r)throw new $(`set-config: <key>/<value> is required (have keys: ${YT().join(`, `)})`);let s=XT(r,i);if(!s.ok)throw new $(`set-config: ${s.reason}`);let c=bj(a,`set-config`),l=Ej(t,o);IA(Dj(t,o),l,r,s.value),t.dlog(`info`,`set-config: ${r}=${s.value} → ${l} (session=${o})`),xj(c,o,t,`set-config`)},kj=(e,t)=>{let[n=``,r=``,i=``,a=``]=uj(()=>WC(e)),o=cj(n);if(!r)throw new $(`step-config: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!vj.test(i))throw new $(`step-config: delta must be an integer, got "${i}"`);let s=parseInt(i,10),c=bj(a,`step-config`),l=ZT(r);if(!l)throw new $(`step-config: key "${r}" is not a bounded (range) config key (have keys: ${YT().join(`, `)})`);let u=Ej(t,o),d=FA(u,r),f=typeof d==`number`?Math.max(l.min,Math.min(l.max,d)):l.seed,p=yj(f+s,l.min,l.max),m=XT(r,String(p));if(!m.ok)throw new $(`step-config: ${m.reason}`);IA(Dj(t,o),u,r,m.value),t.dlog(`info`,`step-config: ${r} ${f}→${m.value} (by ${s}) → ${u} (session=${o})`),xj(c,o,t,`step-config`)},Aj=(e,t)=>{let[n=``,r=``]=uj(()=>WC(e)),i=cj(n);if(!r||!YT().includes(r))throw new $(`reset-config: unknown config key "${r}" (have: ${YT().join(`, `)})`);let a=Ej(t,i);LA(Dj(t,i),a,r),t.dlog(`info`,`reset-config: ${r} ← ${a} (session=${i})`)},jj=(e,t)=>{let[n=``,r=``,i=``]=uj(()=>WC(e)),a=cj(n);if(!r)throw new $(`apply-layout-op: <key>/<op> is required (have: ${YT().join(`, `)})`);let o=XT(r,i);if(!o.ok)throw new $(`apply-layout-op: ${o.reason}`);let s=Av(o.value);if(s===null)throw new $(`apply-layout-op: "${o.value}" is not a layout op token`);let c=Ej(t,a);RA(Dj(t,a),c,r,s),t.dlog(`info`,`apply-layout-op: ${r} ${o.value} → ${c} (session=${a})`)},Mj=(e,t)=>{let[n=``]=uj(()=>WC(e)),r=cj(n);t.journal.commit();let i=t.history.undo(r);t.dlog(`info`,`undo: restored ${JA(i)} (session=${r})`)},Nj=(e,t)=>{let[n=``]=uj(()=>WC(e)),r=cj(n);t.journal.commit();let i=t.history.redo(r);t.dlog(`info`,`redo: re-applied ${JA(i)} (session=${r})`)},Pj=(e,t)=>{cj(lj(e)),t.applyUpdate()},Fj=`client-hints`;function Ij(e,t){let n=e.sessionState.get(t,Fj);if(n===null)throw new $(`session ${t} has not rendered yet — no client facts to diagnose`);let r;try{r=JSON.parse(n)}catch{throw new $(`client hints record is not JSON: ${n}`)}if(typeof r!=`object`||!r)throw new $(`client hints record is not an object: ${n}`);return vS(r)}function Lj(e,t,n){let r=Cy(n);e.sessionState.setBatch(t,Ey(r)),e.dlog(`info`,`doctor: ${r.map(e=>`${e.check.name}=${e.verdict.ok?`ok`:`failed`}`).join(` `)} (session=${t})`)}const Rj=(e,t)=>{let n=cj(lj(e));Lj(t,n,oj(t.doctor,Ij(t,n).tmux))},zj=(e,t)=>{let[n=``,r=``]=uj(()=>WC(e)),i=cj(n),a=wy(r);if(a===void 0)throw new $(`doctor-fix: unknown check "${r}"`);let o=oj(t.doctor,Ij(t,i).tmux),s=a.probe(o);if(s.ok||s.fix===void 0)throw new $(`doctor-fix: ${a.label} — ${s.ok?`nothing to fix`:s.reason}`);let c=sj(t.doctor,s.fix,o);t.dlog(`info`,`doctor-fix: ${a.name} → ${s.fix.kind} ${s.fix.name}=${s.fix.value} (session=${i})`),Lj(t,i,c)},Bj=`config-override`,Vj=new Map([[kC,fj],[`load-config`,(e,t)=>{let n=e.indexOf(`/`);if(n===-1)throw new $(`load-config: expected <sessionId>/<path> (missing separator)`);let r=cj(uj(()=>decodeURIComponent(e.slice(0,n)))),i=uj(()=>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,Bj),t.dlog(`info`,`load-config: override cleared (session=${r})`)):(t.sessionState.set(r,Bj,i),t.dlog(`info`,`load-config: ${i} (session=${r})`))}],[AC,pj],[DC,_j],[OC,Sj],[PC,Oj],[FC,kj],[IC,Aj],[LC,jj],[RC,Mj],[zC,Nj],[MC,mj],[NC,hj],[jC,gj],[BC,Pj],[VC,Rj],[HC,zj]]),Hj=new Set([DC,OC,PC,FC,IC,LC,RC,zC,jC,BC,VC,HC]),Uj=(e,t)=>{let n=[],r=!1,i=null;for(let{verb:a,value:o}of qC(KC(e))){if(!i&&Hj.has(a)){let e=WC(o);e.length>0&&e[0]&&(i=e[0])}let e=Vj.get(a);if(!e){n.push(`unknown effect verb "${a}"`);continue}try{e(o,t)}catch(e){e instanceof $||(r=!0),n.push(`${a}: ${e instanceof Error?e.message:String(e)}`)}}if(n.length>0){i&&t.sessionState.set(i,`click.error`,n.join(`
184
+ `));let e=`dispatch: ${n.join(`; `)}`;throw r?Error(e):new $(e)}};function Wj(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 Gj=new Map([...Vj,[EC,Uj]].map(([e,t])=>[e,Wj(t)]));Object.freeze([...Gj.keys()]);const Kj=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`]),qj=[[`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 Jj(e){let t={missingRequired:[],typeMismatches:[],unknownTopLevelFields:[]},n=typeof e==`object`&&e&&!Array.isArray(e)?e:{};for(let[e,r]of qj){let i=Xj(n,e);if(i==null)t.missingRequired.push(e);else{let n=Yj(i);n!==r&&t.typeMismatches.push({path:e,expected:r,got:n})}}for(let e of Object.keys(n))Kj.has(e)||t.unknownTopLevelFields.push(e);return{data:e,report:t}}function Yj(e){return Array.isArray(e)?`array`:typeof e==`string`&&!e.isWellFormed()?`ill-formed string`:typeof e}function Xj(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 Zj(e,t){switch(e){case`vars`:return{what:e,vars:Qj(t)};case`segments`:return{what:e,segments:rM(t)};case`config`:return{what:e,config:oM(t)}}}function Qj(e){if(e===null)return[];let{store:t,registry:n,config:r}=e,i=tM(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,...$j(r),lastError:a===void 0?null:{timestampMs:a.timestamp,message:a.message},ageMs:eM(r.lastUpdatedMs())})}return o}function $j(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 eM(e){return e===null?null:Math.max(0,Date.now()-e)}function tM(e){let t=new Map;for(let[n,r]of Object.entries(e.variables))t.set(n,nM(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}`,nM(i));return t}function nM(e){return e.kind}function rM(e){if(e===null)return[];let{store:t,config:n,lastRenderBySegment:r}=e,i=new Set(t.names()),a=iM(n),o=[];for(let e of a){let t=n.segments[e];t&&o.push({name:e,description:t.description??null,template:t.template,referencedVars:aM(t.template,i),lastRender:r.get(e)??null})}return o}function iM(e){let t=[],n=new Set;for(let r of Xo(Hs(e.root)))r.kind===`segment`&&e.segments[r.name]&&!n.has(r.name)&&(t.push(r.name),n.add(r.name));for(let r of Object.keys(e.segments))n.has(r)||(t.push(r),n.add(r));return t}function aM(e,t){let n=new Set;for(let r of fg(e)){if(t.has(r)){n.add(r);continue}let e=r.split(`.`);for(;e.length>1;){e.pop();let r=e.join(`.`);if(t.has(r)){n.add(r);break}}}return Array.from(n).sort()}function oM(e){return e===null?null:e.config}const sM=[`vars`,`segments`,`config`];function cM(e){return typeof e==`string`&&sM.includes(e)}function lM(e){return Math.max(1,e-2)}var uM=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 E(`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);E(`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{E(`Calculating context tokens from transcript: ${e}`);let n=await rD(e);if(n.length===0)return E(`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,E(`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 E(`Most recent main chain context: ${n} tokens (limit: ${t})`),J({totalTokens:n,maxTokens:t,...this.ratioPercentages(n,t)})}return E(`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)}},dM=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=BE(t);if(n&&r!==0&&n.cursor.mtimeMs===r)return this.touch(e,n),{kind:`ok`,value:n.value};let i=await sD(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 fM={messageCount:0,recent:[]};function pM(e,t){if(t.isSidechain)return e;let n=[...e.recent,t];return{messageCount:e.messageCount+ +!!tD(t),recent:n.length>20?n.slice(-20):n}}function mM(e){let t=null,n=null;for(let r of e){let e=r.type||r.message?.role||r.message?.type;if(tD(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 hM=class{fold=new dM(fM,pM);async getMetricsInfo(e,t){if(E(`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:mM(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 gM={command:null,todos:[],pending:[],done:[]};function _M(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 vM(e,t){if(t.isSidechain)return e;let n=tD(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=_M(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 yM(e){return{command:e.command,todos:e.todos,running:e.pending.reduce((e,t)=>_M(e,t.name),[]),done:e.done}}var bM=class{fold=new dM(gM,vM);async getActivityInfo(e,t){let n=await this.fold.read(e,t.transcript_path);return n.kind===`failed`?X(`activity (${e}): ${n.reason}`):J(yM(n.value))}};const xM=new Map;function SM(e){if(!e)return``;let t=e.indexOf(`,`);return t<0?e:e.slice(0,t)}var CM=class{async getSessionId(){if(!process.env.TMUX_PANE)return Y;let e=SM(process.env.TMUX),t=xM.get(e);if(t!==void 0)return t;E(`Getting tmux session ID, TMUX_PANE: ${process.env.TMUX_PANE}`);let n=await Ee({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 xM.set(e,r),r}isInTmux(){return!!process.env.TMUX_PANE}},wM=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 TM=new Qk;we(TM.launchStats);const EM=new W_({counters:TM,logger:Q}),DM=new Q_({watchers:EM,logger:Q}),OM=new yD,kM=new tA,AM=new UA(kM,Q),jM=new wM(Ge()),MM=new uM,NM=new hM,PM=new bM,FM=new CM,IM=new Xk({gitService:DM,sessionState:kM,watchers:EM},{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)}`)}}),LM=60*1e3;function RM(){let e=import.meta.url,n=[];e.startsWith(`file://`)&&n.push(ne(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),eN(0);return}}catch(e){Q(`warn`,`bin stat failed: ${e.message}`)}};return{arm(){i.size!==0&&(a=setInterval(o,LM),a.unref())},checkNow:o}}const zM=RM(),BM=IE({entryUrl:import.meta.url,intervalMs:LM,releaseIntervalMs:216e5,registryUrl:t.env.CC_CANDYBAR_REGISTRY_URL??`https://registry.npmjs.org`,fetchImpl:fetch,onApplied:()=>zM.checkNow(),log:Q});let VM=null,HM=null,UM=0;function WM(){t.on(`uncaughtException`,e=>{Q(`error`,`uncaughtException: ${e.stack||e.message}`),eN(1)}),t.on(`unhandledRejection`,e=>{Q(`error`,`unhandledRejection: ${String(e)}`),eN(1)});for(let e of[`SIGINT`,`SIGTERM`,`SIGHUP`])t.on(e,()=>{Q(`info`,`received ${e}, shutting down`),eN(0)});try{UM=QS(t.env)}catch(e){Q(`error`,`refusing to boot: ${e.message}`),eN(1);return}VM=Vw(t.pid);let e=Zw($w(VM));if(!e.decision.allow){Q(`warn`,`fork-bomb breaker: ${e.decision.reason}; refusing to boot`),eN(1);return}HM=e.registryPath,r.mkdirSync(Ne(),{recursive:!0}),Ie(Pe()),kM.useStorage(new iA(ze(),500,Q)),AM.useStorage($A(Be(),Q)),Ww({anchor:Uw(t.env),isAlive:Gw,onOrphaned:e=>{Q(`info`,`parent watchdog: ${e}; shutting down`),eN(0)}}),GM(g.createServer({allowHalfOpen:!1},e=>{tN(e)}),Pe(),!1)}function GM(e,n,r){e.removeAllListeners(`error`),e.removeAllListeners(`listening`),e.once(`error`,i=>{if(i.code!==`EADDRINUSE`){Q(`error`,`server error: ${i.message}`),eN(1);return}if(r){Q(`info`,`lost rebind race; another daemon is alive — exiting`),t.exit(0);return}KM(e,n)}),e.listen(n,()=>qM(n))}function KM(e,n){let i=jw(Mw(Le(n)),(e,t)=>Bw(e,t,{readStartTime:zw,pidAlive:Gw}));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}`),eN(1);return}}GM(e,n,!0)}function qM(e){let n=Fw(e);if(n.kind!==`present`){Q(`warn`,`no ownable socket at bind callback (${n.kind}); exiting`),eN(0);return}ZM(e);try{r.chmodSync(e,384)}catch(e){Q(`warn`,`chmod socket failed: ${e.message}`)}Q(`info`,`daemon up: pid=${t.pid} v=3 sock=${e} heapCap=${Math.round(C.getHeapStatistics().heap_size_limit/1048576)}MB rssLimit=${Math.round(UM/1048576)}MB`),hC();let i=jM.reset();i!==null&&Q(`warn`,`diagnostic dump wipe failed: ${i}`),zM.arm(),BM.arm(),XM(),JM(e,n.identity)}function JM(e,n){Rw({bound:n,myPid:t.pid,readIdentity:()=>Fw(e),readLease:()=>Mw(Le(e)),shutdown:e=>eN(e),log:Q}).arm()}let YM=null;function XM(){YM=nC(oC(TM.startedAt.getTime(),e=>eN(e),{rssLimitBytes:UM})),YM.arm()}function ZM(e){let n=Nw(Le(e),{pid:t.pid,version:3,binPath:t.argv[1],startTime:VM});n!==null&&Q(`warn`,`lease write failed: ${n}`)}let QM=0,$M=!1;function eN(e){if(!$M){$M=!0,setTimeout(()=>t.kill(t.pid,`SIGKILL`),500);try{DM.close()}catch(e){Q(`warn`,`gitService close failed: ${e.message}`)}try{OM.close()}catch(e){Q(`warn`,`usageStore close failed: ${e.message}`)}try{EM.closeAll()}catch(e){Q(`warn`,`watcherRegistry close failed: ${e.message}`)}try{kM.flush()}catch(e){Q(`warn`,`sessionState flush failed: ${e.message}`)}Pw(Re(),t.pid),HM!==null&&Qw(HM,t.pid,Yw,e=>r.unlinkSync(e)),t.exit(e)}}function tN(e){QM++,TM.inFlight=QM;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:()=>eN(r);try{e.end(TS(n),i)}catch(e){Q(`warn`,`response write failed: ${e.message}`),i?.()}},r=setTimeout(()=>{TM.requestsTimedOut++,n({ok:!1,error:`request exceeded 200ms`,code:`TIMEOUT`,daemonV:3},null)},200),i=ES(e=>{rN(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),QM=Math.max(0,QM-1),TM.inFlight=QM})}const nN=e=>({resp:e,exitAfterFlush:null});async function rN(e){if(!e||typeof e!=`object`||typeof e.v!=`number`)return nN({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 nN({ok:!0,stats:TM.snapshot({gitCache:DM.getStats(),usageCache:OM.getStats(),renderCacheSize:IM.size,watchersActive:EM.size(),nextRestartReason:YM?.describeNextRestart()??null})});if(e.kind===`render`){TM.requestsTotal++;let t=Date.now();try{let{report:n}=Jj(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 TM.requestsErrored++,Q(`warn`,`BAD_REQUEST: ${r.join(`; `)}`),nN({ok:!1,error:`malformed hookData: ${r.join(`; `)}`,code:`BAD_REQUEST`,daemonV:3});let i=e.hookData.workspace.project_dir,{configFile:a,unknownFlagsError:o}=iN(e.args),s=e.hookData.session_id,c=vS(e),l=JSON.stringify(c);kM.get(s,`client-hints`)!==l&&kM.set(s,Fj,l);let u=kM.get(s,`config-override`)??a??c.configEnv,d=IM.getOrCreate(i,e.cwd,u),f=wj({projectDir:i,cwd:e.cwd,configFile:u??null});kM.get(s,`render-origin`)!==f&&kM.set(s,Cj,f);let p=c.termCols,m=lM(p??120),h=gT(c.termRows),g={...oN,width:m},{authoredRoots:_}=d.state,v=TD(d.state.config,t=>kM.get(e.hookData.session_id,t),e=>_.has(e)),y=await BD(e.hookData,uN,e.cwd,d.state.neededInputPaths(v.preset),v,c),b=[];g.style=v.style,g.separator=v.separator,g.wrap=v.autoWrap,g.padding=v.padding,g.charset=v.charset,g.colorCompatibility=v.colorCompatibility;let x=Ik(d.state.config,d.state.compiled,d.state.store,d.state.registry,y,g,{perSegmentSink:d.state.lastRenderCellsBySegment,onRenderWarning:e=>b.push(e)},{theme:v.theme,look:v.look,preset:v.preset,progression:v.progression}),S=kM.get(e.hookData.session_id,`click.error`);S&&kM.clear(e.hookData.session_id,`click.error`);let C=[o,d.lastError,S].filter(Boolean).join(`
185
185
  `),ee=BM.notice({sessionId:s,dismissed:kM.get(s,SE),enabled:v.updateNotice}),te=d.lastError===null?null:d.configFilePath,ne=xT(C,ee,[d.lastWarning??``,...b].filter(Boolean).join(`
186
186
  `)),re=jM.sync(s,ne===null?null:CT(ne));re!==null&&Q(`warn`,`diagnostic dump failed: ${re}`);let ie=wT(x,ne,{fullText:re===null?{kind:`file`,path:jM.pathFor(s)}:{kind:`unavailable`,reason:re},failedConfigFile:te},{width:m,rowCap:h,colorCompatibility:v.colorCompatibility}),ae=Date.now()-t,w=DM.getStats(),T=OM.getStats();return Q(`info`,`render sid=${e.hookData.session_id??`?`} took=${ae}ms termCols=${p??`?`} termRows=${c.termRows??`?`} width=${m} git=${w.size}/${w.hits}h/${w.misses}m usage=${T.size}/${T.hits}h/${T.misses}m err=${C?`Y`:`N`} upd=${ee.length} warn=${d.lastWarning?`Y`:`N`}`),nN({ok:!0,output:ie+`
187
187
  `})}catch(e){throw TM.requestsErrored++,e}}if(e.kind===`click`)return nN(await dN(e.verb,e.value));if(e.kind===`debug`){if(!cM(e.what))return nN({ok:!1,error:`unknown debug 'what': ${String(e.what)} (have: ${sM.join(`, `)})`,code:`BAD_REQUEST`,daemonV:3});let t=IM.firstState(),n=t===null?null:{store:t.store,registry:t.registry,config:t.config,compiled:t.compiled,lastRenderBySegment:e.what===`segments`?lN(t.lastRenderCellsBySegment,t.config.globals.charset??`unicode`,t.config.globals.colorCompatibility??`truecolor`):cN};return nN({ok:!0,debug:Zj(e.what,n)})}return nN({ok:!1,error:`unknown kind`,code:`BAD_REQUEST`,daemonV:3})}function iN(e){let{values:t,tokens:n}=ie({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:yS(t.config),unknownFlagsError:r.length>0?`Unknown flags: ${r.join(`, `)}`:null}}const aN={sessionState:kM,dlog:Q,applyUpdate:()=>BM.act(),doctor:tj(),history:AM},oN={style:`powerline`,colorCompatibility:Ba,wrap:!0,padding:1,charset:Ia},sN={...oN,width:1/0},cN=new Map;function lN(e,t,n){let r=new Map;for(let[i,a]of e)r.set(i,hT(a,{...sN,charset:t,colorCompatibility:n}));return r}const uN={gitProvider:DM,usageStore:OM,contextProvider:MM,metricsProvider:NM,activityProvider:PM,tmuxService:FM,log:Q,clock:()=>new Date,history:e=>AM.depth(e)};function dN(e,t){let n=Gj.get(e);if(!n)return{ok:!1,error:`unknown click verb: ${e}`,code:`BAD_REQUEST`,daemonV:3};try{return n(t,aN),{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 fN={connectMs:200,budgetMs:500};async function pN(e){let n=e.includes(`--json`),r=await mN();if(r.kind!==`ok`&&(t.stderr.write(`daemon-stats: ${PS(r)}\n`),t.exit(1)),n){t.stdout.write(JSON.stringify(r.value,null,2)+`
@@ -196,11 +196,11 @@ Config tooling:
196
196
  `)+`
197
197
  `}function TN(e){return e===null?`config: DSL not active
198
198
  `:JSON.stringify(e,null,2)+`
199
- `}function EN(e){let t=typeof e==`string`?e:JSON.stringify(e);return t.length>60?t.slice(0,57)+`…`:t}function DN(e){return e<1e3?`${e}ms`:e<6e4?`${(e/1e3).toFixed(1)}s`:`${Math.floor(e/6e4)}m`}function ON(){let e=AN();return e===null?null:r.readFileSync(e,`utf-8`)}function kN(){let e;try{e=ON()}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 AN(){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 jN(e){let t=e.CC_CANDYBAR_CONFIG??``;return t===``?void 0:t}const MN=5e3;function NN(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},...ED(e),history:{undo:1,redo:1}}}function PN(e,t){let n=rS(e,e),r=aS(n);return r!==null&&t.push(r),n.kind===`file`?n.path:null}async function FN(e,n=t.cwd()){let i=[],a=e===void 0?PN(n,i):c.resolve(eS(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=sS(n,n);o!==null&&i.push(o);try{return{kind:`clean`,configPath:a,warnings:i,rendered:await RN(a,n,i)}}catch(e){let t=e;return a!==null&&typeof t==`object`&&t&&typeof t.code==`string`&&t.path===a&&typeof t.message==`string`?{kind:`unreadable`,path:a,message:t.message}:(e instanceof Ho&&i.push(...e.warnings),{kind:`fatal`,configPath:a,message:e instanceof Ho||e instanceof Error?e.message:String(e),warnings:i})}}async function IN(e,t,n){let{config:r,source:i,warnings:a}=cS(e,rO);n.push(...a);let o=dS(r,e??`<default>`,i),s=new Wk,c=new _v(s,o.globals.default_empty_value??``,void 0,new tA);try{let e=Mk(o,c,{cwd:t});n.push(...e.loadWarnings);let r=await c.settled(MN);return r.length>0&&n.push(`source${r.length===1?``:`s`} still running after ${MN} ms, rendered with fallback values: ${r.join(`, `)}`),{config:o,compiled:e,store:s,registry:c}}catch(e){throw c.dispose(),e}}function LN({config:e,compiled:t,store:n,registry:r},i,a){let o=new Map;return{rendered:Ik(e,t,n,r,NN(i),{style:i.style,separator:i.separator,width:a,colorCompatibility:i.colorCompatibility,wrap:i.autoWrap,padding:i.padding,charset:i.charset},{onSegmentError:(e,t)=>o.set(`segment "${e}"`,t),onRenderWarning:e=>o.set(`globals.palette`,e)},{theme:i.theme,look:i.look,preset:i.preset,progression:i.progression}),failures:o}}async function RN(e,t,n){let r=await IN(e,t,n),{config:i}=r;try{xE(i);let e=TD(i,()=>null,()=>!1),t=e=>LN(r,e,200),n=t(e),a=t({...e,presetCustomized:!0}),o=[...[...n.failures].map(([e,t])=>`${e}: ${t}`),...[...a.failures].filter(([e])=>!n.failures.has(e)).map(([e,t])=>`${e}: ${t} (under .preset.customized = true)`)];if(o.length>0)throw Error(`config renders with ${o.length} render error${o.length===1?``:`s`} (the daemon would show them on the bar):\n`+o.map(e=>` ${e}`).join(`
199
+ `}function EN(e){let t=typeof e==`string`?e:JSON.stringify(e);return t.length>60?t.slice(0,57)+`…`:t}function DN(e){return e<1e3?`${e}ms`:e<6e4?`${(e/1e3).toFixed(1)}s`:`${Math.floor(e/6e4)}m`}function ON(){let e=AN();return e===null?null:r.readFileSync(e,`utf-8`)}function kN(){let e;try{e=ON()}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 AN(){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 jN(e){let t=e.CC_CANDYBAR_CONFIG??``;return t===``?void 0:t}const MN=5e3;function NN(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},...ED(e),history:{undo:1,redo:1}}}function PN(e,t){let n=rS(e,e),r=aS(n);return r!==null&&t.push(r),n.kind===`file`?n.path:null}async function FN(e,n=t.cwd()){let i=[],a=e===void 0?PN(n,i):c.resolve(eS(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=sS(n,n);o!==null&&i.push(o);try{return{kind:`clean`,configPath:a,warnings:i,rendered:await RN(a,n,i)}}catch(e){let t=e;return a!==null&&typeof t==`object`&&t&&typeof t.code==`string`&&t.path===a&&typeof t.message==`string`?{kind:`unreadable`,path:a,message:t.message}:(e instanceof Ho&&i.push(...e.warnings),{kind:`fatal`,configPath:a,message:e instanceof Ho||e instanceof Error?e.message:String(e),warnings:i})}}async function IN(e,t,n){let r=cS(e,rO);n.push(...r.warnings);let i=dS(r,e??`<default>`),a=new Wk,o=new xv(a,i.globals.default_empty_value??``,void 0,new tA);try{let e=Mk(i,o,{cwd:t});n.push(...e.loadWarnings);let r=await o.settled(MN);return r.length>0&&n.push(`source${r.length===1?``:`s`} still running after ${MN} ms, rendered with fallback values: ${r.join(`, `)}`),{config:i,compiled:e,store:a,registry:o}}catch(e){throw o.dispose(),e}}function LN({config:e,compiled:t,store:n,registry:r},i,a){let o=new Map;return{rendered:Ik(e,t,n,r,NN(i),{style:i.style,separator:i.separator,width:a,colorCompatibility:i.colorCompatibility,wrap:i.autoWrap,padding:i.padding,charset:i.charset},{onSegmentError:(e,t)=>o.set(`segment "${e}"`,t),onRenderWarning:e=>o.set(`globals.palette`,e)},{theme:i.theme,look:i.look,preset:i.preset,progression:i.progression}),failures:o}}async function RN(e,t,n){let r=await IN(e,t,n),{config:i}=r;try{xE(i);let e=TD(i,()=>null,()=>!1),t=e=>LN(r,e,200),n=t(e),a=t({...e,presetCustomized:!0}),o=[...[...n.failures].map(([e,t])=>`${e}: ${t}`),...[...a.failures].filter(([e])=>!n.failures.has(e)).map(([e,t])=>`${e}: ${t} (under .preset.customized = true)`)];if(o.length>0)throw Error(`config renders with ${o.length} render error${o.length===1?``:`s`} (the daemon would show them on the bar):\n`+o.map(e=>` ${e}`).join(`
200
200
  `));return n.rendered}finally{r.registry.dispose()}}function zN(e){return e.map(e=>`warning: ${e}\n`).join(``)}function BN(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:zN(e.warnings),code:0};case`fatal`:return{stdout:``,stderr:zN(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 VN=`--render`,HN=`Usage: cc-candybar check [${VN}] [config-file]\n`;function UN(e){let t=e.filter(e=>e.startsWith(`--`)),n=e.filter(e=>!e.startsWith(`--`)),r=t.filter(e=>e!==VN);return r.length>0?{kind:`usage`,message:`check: unknown option ${r.join(` `)}\n${HN}`}:n.length>1||n[0]===``?{kind:`usage`,message:`check: expected at most one non-empty path\n${HN}`}:{kind:`run`,target:n[0],render:t.includes(VN)}}async function WN(e){let n=UN(e),r=n.kind===`usage`?{stdout:``,stderr:n.message,code:2}:BN(await FN(n.target??jN(t.env)),n.render);t.stdout.write(r.stdout),t.stderr.write(r.stderr),t.exit(r.code)}const GN=`${iT}${rT}`;function KN(e){return`${GN}⚠ cc-candybar: ${qN(e)}\n`}function qN(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: ${nT(e.message,60)}`;case`render_failed`:return`render failed: ${nT(e.message,60)}`;case`malformed_response`:return`malformed daemon response: ${nT(e.message,60)}`}}function JN(e){switch(e.kind){case`ok`:return{output:e.value,kick:!1,debug:null};case`transient`:return{output:`
201
- `,kick:!0,debug:`daemon unavailable (transient: ${e.cause}: ${e.message}) — kicking daemon`};case`permanent`:return{output:KN(e),kick:!1,debug:`daemon refused request (permanent: ${e.cause}) — not kicking`}}}function YN(e,t){if(e!==void 0&&/^\+?\d+$/.test(e)){let t=Number(e);if(t>0&&t<=4294967295)return t}if(t&&t>0)return t}const XN=` (fix: click the settings menu (${Ys} by default) › 🧰 tools ▸ 🩺 doctor, then [fix] on the bar)`;function ZN({check:e,verdict:t}){return t.ok?`✓ ${e.label}\n`:`✗ ${e.label} — ${t.reason}${t.fix===void 0?``:XN}\n`}function QN(e,t){let n;try{n=oj(e,gy(t))}catch(e){return{stdout:``,stderr:`doctor: ${e instanceof Error?e.message:String(e)}\n`,code:2}}let r=yy(n);return{stdout:r.map(ZN).join(``),stderr:``,code:+!r.every(e=>e.verdict.ok)}}function $N(e){e.length>0&&(t.stderr.write(`doctor: takes no arguments
201
+ `,kick:!0,debug:`daemon unavailable (transient: ${e.cause}: ${e.message}) — kicking daemon`};case`permanent`:return{output:KN(e),kick:!1,debug:`daemon refused request (permanent: ${e.cause}) — not kicking`}}}function YN(e,t){if(e!==void 0&&/^\+?\d+$/.test(e)){let t=Number(e);if(t>0&&t<=4294967295)return t}if(t&&t>0)return t}const XN=` (fix: click the settings menu (${Xs} by default) › 🧰 tools ▸ 🩺 doctor, then [fix] on the bar)`;function ZN({check:e,verdict:t}){return t.ok?`✓ ${e.label}\n`:`✗ ${e.label} — ${t.reason}${t.fix===void 0?``:XN}\n`}function QN(e,t){let n;try{n=oj(e,by(t))}catch(e){return{stdout:``,stderr:`doctor: ${e instanceof Error?e.message:String(e)}\n`,code:2}}let r=Cy(n);return{stdout:r.map(ZN).join(``),stderr:``,code:+!r.every(e=>e.verdict.ok)}}function $N(e){e.length>0&&(t.stderr.write(`doctor: takes no arguments
202
202
  Usage: cc-candybar doctor
203
- `),t.exit(2));let n=QN(tj(),t.env);t.stdout.write(n.stdout),t.stderr.write(n.stderr),t.exit(n.code)}function eP(){return YN(t.env.COLUMNS,t.stderr.columns)}function tP(){return YN(t.env.LINES,t.stderr.rows)}const nP=[`SSH_CONNECTION`,`SSH_CLIENT`,`SSH_TTY`],rP=e=>e.some(e=>t.argv.includes(e));function iP(){return nP.some(e=>(t.env[e]??``)!==``)}function aP(){console.log(Kv)}async function oP(){try{rP(Uv.help)&&(aP(),t.exit(0)),rP(Uv.version)&&(console.log(`cc-candybar ${XC}`),t.exit(0));let e=t.argv[2];if(e===`install`&&(await kw(t.argv.slice(3)),t.exit(0)),e===`install-url-handler`&&(ww(),t.exit(0)),e===`url-handle`){await Ew(t.argv[3]);return}if(e===`daemon`){WM();return}if(e===`daemon-stats`&&(await pN(t.argv.slice(3)),t.exit(0)),e===`check`||e===`lint`){await WN(t.argv.slice(3));return}if(e===`schema`){kN();return}if(e===`doctor`){$N(t.argv.slice(3));return}cM(e)&&(await bN(e,t.argv.slice(3)),t.exit(0)),t.stdin.isTTY===!0&&(console.error(`Error: This tool requires input from Claude Code
203
+ `),t.exit(2));let n=QN(tj(),t.env);t.stdout.write(n.stdout),t.stderr.write(n.stderr),t.exit(n.code)}function eP(){return YN(t.env.COLUMNS,t.stderr.columns)}function tP(){return YN(t.env.LINES,t.stderr.rows)}const nP=[`SSH_CONNECTION`,`SSH_CLIENT`,`SSH_TTY`],rP=e=>e.some(e=>t.argv.includes(e));function iP(){return nP.some(e=>(t.env[e]??``)!==``)}function aP(){console.log(Xv)}async function oP(){try{rP(qv.help)&&(aP(),t.exit(0)),rP(qv.version)&&(console.log(`cc-candybar ${XC}`),t.exit(0));let e=t.argv[2];if(e===`install`&&(await kw(t.argv.slice(3)),t.exit(0)),e===`install-url-handler`&&(ww(),t.exit(0)),e===`url-handle`){await Ew(t.argv[3]);return}if(e===`daemon`){WM();return}if(e===`daemon-stats`&&(await pN(t.argv.slice(3)),t.exit(0)),e===`check`||e===`lint`){await WN(t.argv.slice(3));return}if(e===`schema`){kN();return}if(e===`doctor`){$N(t.argv.slice(3));return}cM(e)&&(await bN(e,t.argv.slice(3)),t.exit(0)),t.stdin.isTTY===!0&&(console.error(`Error: This tool requires input from Claude Code
204
204
 
205
205
  cc-candybar is designed to be used as a Claude Code statusLine command.
206
206
  It reads hook data from stdin and outputs formatted statusline.
@@ -216,4 +216,4 @@ Add to ~/.claude/settings.json:
216
216
  Run with --help for more options.
217
217
 
218
218
  To test output manually:
219
- echo '{"session_id":"test-session","workspace":{"project_dir":"/path/to/project"},"model":{"id":"claude-sonnet-4-5","display_name":"Claude"}}' | cc-candybar --style=powerline`),t.exit(1)),E(`Working directory: ${t.cwd()}`),E(`Process args:`,t.argv);let r=await n(t.stdin);E(`Received hook data:`,JSON.stringify(r,null,2)),r||(console.error(`Error: No input data received from stdin`),aP(),t.exit(1));let i=JN(await RS(r,t.argv,t.cwd(),{termCols:eP(),termRows:tP(),ssh:iP(),tmux:gy(t.env),configEnv:jN(t.env)}));i.debug!==null&&E(i.debug),i.kick&&sC(),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)}}oP();export{};
219
+ echo '{"session_id":"test-session","workspace":{"project_dir":"/path/to/project"},"model":{"id":"claude-sonnet-4-5","display_name":"Claude"}}' | cc-candybar --style=powerline`),t.exit(1)),E(`Working directory: ${t.cwd()}`),E(`Process args:`,t.argv);let r=await n(t.stdin);E(`Received hook data:`,JSON.stringify(r,null,2)),r||(console.error(`Error: No input data received from stdin`),aP(),t.exit(1));let i=JN(await RS(r,t.argv,t.cwd(),{termCols:eP(),termRows:tP(),ssh:iP(),tmux:by(t.env),configEnv:jN(t.env)}));i.debug!==null&&E(i.debug),i.kick&&sC(),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)}}oP();export{};