@promptctl/cc-candybar 1.74.3 → 1.74.4

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 +60 -60
  2. package/package.json +5 -5
package/dist/index.mjs CHANGED
@@ -35,28 +35,28 @@ import{createRequire as e}from"node:module";import t from"node:process";import{j
35
35
  `).join(`${n}${t}`)}function oa(e,t,n){let[r,...i]=e,a=i.length===0?t:`{\n ${aa(oa(i,t,n),` `,`
36
36
  `)}${n.trailingComma}\n}`;return`${n.key(r)}: ${a}`}function sa(e,t,n,r){return e.slice(0,t)+r+e.slice(n)}function ca(e,t){return e.lastIndexOf(`
37
37
  `,t-1)+1}function la(e){return/^[ \t]*$/.test(e)}function ua(e,t){let n=ca(e,t);return/^[ \t]*/.exec(e.slice(n))[0]}function da(e,t){return la(e.slice(ca(e,t),t))}const fa=/(?:\/\/[^\n]*?)?(\r\n|\n|$)/y;function pa(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++;fa.lastIndex=n;let i=fa.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 ma(e,t){let{commaEnd:n,line:r}=pa(e,t.end);if(da(e,t.start)&&r!==null)return sa(e,ca(e,t.start),r.next,``);if(n!==-1){let r=n;for(;r<e.length&&e[r]===` `;)r++;return sa(e,t.start,r,``)}let i=t.start;for(;i>0&&(e[i-1]===` `||e[i-1]===` `);)i--;return e[i-1]===`,`?sa(e,i-1,t.end,``):sa(e,t.start,t.end,``)}function ha(e,t,n,r,i){let a=n.commaEnd!==-1,o=a?e:sa(e,t.end,t.end,`,`),s=n.line.at+ +!a,c=ia(e);return sa(o,s,s,`${c}${i}${aa(r,i,c)}${a?`,`:``}`)}function ga(e,t,n,r){let i=t.kind===`object`?t.entries:t.elements,a=i[i.length-1],o=ua(e,t.span.start);if(a===void 0){let i=o+` `,a=ia(e);return sa(e,t.span.start+1,t.span.end-1,`${a}${i}${aa(n,i,a)}${r.trailingComma}${a}${o}`)}let{commaEnd:s,line:c}=pa(e,a.span.end);if(da(e,a.span.start)&&c!==null){let t=e.slice(ca(e,a.span.start),a.span.start);return ha(e,a.span,{commaEnd:s,line:c},n,t)}let l=s===-1?a.span.end:s;return sa(e,l,l,`${s===-1?`, `:` `}${n}${s===-1?``:`,`}`)}function _a(e,t,n,r){if(t.length===0)throw new Ui(`setValue needs a non-empty path`,0);if(/^\s*$/.test(e)){let i=ia(e);return`{${i} ${aa(oa(t,n,r),` `,i)}${r.trailingComma}${i}}${i}`}let i=Yi(e);for(let a=0;a<t.length;a++){if(i.kind!==`object`)throw new Ui(`cannot set ${t.join(`.`)}: ${t.slice(0,a).join(`.`)||`the document`} is not an object`,i.span.start);let o=Xi(i,t[a]);if(o===void 0)return ga(e,i,oa(t.slice(a),n,r),r);if(a===t.length-1){let t=ua(e,o.keySpan.start);return sa(e,o.value.span.start,o.value.span.end,aa(n,t,ia(e)))}i=o.value}throw new Ui(`unreachable: path exhausted`,0)}function va(e,t){if(t.length===0)throw new Ui(`deleteValue needs a non-empty path`,0);if(/^\s*$/.test(e))return e;let n=t.slice(0,-1),r=Zi(Yi(e),n),i=r===void 0?void 0:Xi(r,t[t.length-1]);if(i===void 0||r?.kind!==`object`)return e;let a=ma(e,i.span);return n.length>0&&r.entries.length===1?va(a,n):a}const ya=[`h`,`v`,`children`];function ba(e){if(e.kind===`string`)return e.value;if(e.kind!==`object`)return;let t=Xi(e,`seg`)?.value;if(t?.kind===`string`)return t.value;let n=Xi(e,`kind`)?.value,r=Xi(e,`name`)?.value;return n?.kind===`string`&&n.value===`segment`&&r?.kind===`string`?r.value:void 0}function xa(e){return e.kind===`object`?ya.map(t=>Xi(e,t)?.value).filter(e=>e?.kind===`array`):[]}function Sa(e){let t=Xi(e,`rows`)?.value;return t?.kind===`object`?t.entries:null}function Ca(e){if(e.kind!==`object`)return!0;let t=Sa(e);return t===null||t.length>0||e.entries.some(e=>e.key!==`rows`)}function*wa(e,t){yield{node:e,bareAt:t};for(let t of xa(e))for(let e of t.elements)yield*wa(e,null);for(let n of Sa(e)??[])yield*wa(n.value,t===null?null:[...t,`rows`,n.key])}function Ta(e,t){for(let{node:n}of wa(e,null))if(ba(n)===t)return!0;return!1}function Ea(e,t,n){let r=Zi(Yi(e),t);if(r===void 0)return null;for(let{node:i,bareAt:a}of wa(r,t))if(ba(i)===n)return a===null?{text:e,ref:i}:Ea(_a(e,a,`{ h: [${Qi(e,i)}] }`,ta),t,n);return null}function Da(e,t,n){let r=Ea(e,t,n);return r===null?null:ma(r.text,r.ref.span)}function Oa(e,t,n,r,i){let a=Ea(e,t,r);if(a===null)return null;let{text:o,ref:s}=a,c=JSON.stringify(n),{commaEnd:l,line:u}=pa(o,s.span.end);if(da(o,s.span.start)&&u!==null){let e=o.slice(ca(o,s.span.start),s.span.start);return i===`after`?ha(o,s.span,{commaEnd:l,line:u},c,e):sa(o,s.span.start,s.span.start,`${c},${ia(o)}${e}`)}let d=Qi(o,s),f=i===`before`?`${c}, ${d}`:`${d}, ${c}`;return sa(o,s.span.start,s.span.end,f)}var ka=class extends Error{file;issues;warnings;constructor(e,t,n=[]){super(Na(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=Aa(e,n,i);if(t===-1)return r===void 0?void 0:ja(e,r);n=t,r=t}return r===void 0?void 0:ja(e,r)}function Aa(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 ja(e,t){let n=1;for(let r=0;r<t&&r<e.length;r++)e.charCodeAt(r)===10&&n++;return n}function Ma(e,t){try{return Yi(t),null}catch(n){if(!(n instanceof Ui))throw n;return`${e}:${ja(t,n.offset)}: ${n.reason} — the settings menu cannot edit this file until it is fixed`}}function Na(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 Pa=[`vertical`,`horizontal`];function Fa(e,t){return e.opens===void 0?e:{...e,opens:{...e.opens,body:t(e.opens.body)}}}function*Ia(e){yield e;for(let t of La(e))yield*Ia(t)}function La(e){return e.kind===`container`?e.children:e.opens===void 0?[]:[e.opens.body]}function Ra(e){return e===void 0||`text`in e?`text`:`regex`in e?`regex`:`json`}const za=[`ttl`,`watch_file`,`depends_on`,`key`,`never`];function Ba(e){return e.kind!==`literal`&&e.kind!==`input`&&e.kind!==`env`&&e.kind!==`state`}const Va=[`branch`,`sha`,`dirty`,`ahead`,`behind`,`stash`],Ha=[`file`,`shell`,`git`],Ua=[`left`,`center`,`right`],Wa=[`right`,`left`,`middle`];function Ga(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 ${Za(i)}`,line:W(e.source,[...t.split(`.`),r])}),null)}function Ka(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 ${Za(i)}`,line:W(e.source,[...t.split(`.`),`default`])});return}return i}}function qa(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 ${Za(i)}`,line:W(e.source,[...t.split(`.`),r])});return}return i}}function Ja(e,t,n){let r=qa(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 Ya(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 Xa(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Za(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 Qa(e,t,n,r){return Xa(r)?(to(e,n,r,t.noun,new Set(Object.keys(t.fields))),$a(e,t.fields,n,r)):(e.issues.push({path:n,message:`${n} must be an object, got ${Za(r)}`,line:W(e.source,n.split(`.`))}),null)}function $a(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 eo=new Set;function to(e,t,n,r,i,a=eo){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 no(e,t,n){return e.issues.push({path:t,message:n,line:W(e.source,t.split(`.`))}),null}function ro(e,t,n,r){if(!Xa(r))return e.issues.push({path:n,message:`${t.noun} must be an object, got ${Za(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 io(e,t,n,r){if(!Xa(r))return e.issues.push({path:n,message:`${n} must be an object, got ${Za(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 ${Za(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 to(e,n,r,`${i} ${t.memberNoun} key`,o.keys,l),c}function ao(e,t,n){return{json:_o(ho(n),e,t),keys:new Set([e,...Object.keys(n)])}}function oo(e){return(...t)=>e()(...t)}function so(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)=>qa(e,t,r,n)}}function co(){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 ${Za(i)}`,line:W(e.source,[n])});return}return i}}}}function lo(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 uo(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 fo(){return{required:!1,json:{type:`string`},parse:(e,t,n,r)=>Ja(e,t,r)}}function po(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>Ga(e,t,r,n)??void 0}}function mo(e){return{required:!1,json:{enum:[...e]},parse:(t,n,r,i)=>Ya(t,n,i,r,e)}}function ho(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 go(e){return ho(e.fields)}function _o(e,t,n){let r=e,i={[t]:{const:n},...r.properties},a=[t,...r.required??[]];return{...r,properties:i,required:a}}function vo(e){let t=e.arms;return{anyOf:Object.values(t).map(e=>e.json)}}function yo(e){let t=e.arms;return{anyOf:Object.entries(t).map(([e,t])=>({type:`object`,properties:{[e]:t.json},required:[e],additionalProperties:!1}))}}const bo=/^[A-Za-z_][A-Za-z0-9_]*$/;function xo(e){return`#${e+1}`}const So={rows:{}};function Co(e){return`rows`in e}function wo(e){return Object.fromEntries(e.map((e,t)=>[xo(t),e]))}function To(e){if(e.kind===`container`&&e.direction===`vertical`){let{kind:t,direction:n,children:r,...i}=e;return{...i,rows:wo(r)}}let{when:t,...n}=e;return{...t!==void 0&&{when:t},rows:wo([n])}}function Eo(e){let{rows:t,...n}=e;return{kind:`container`,direction:`vertical`,children:Object.values(t),...n}}function Do(e){return Co(e)?Eo(e):e}function Oo(e,t){return Co(e)?{...t,...e,rows:{...t.rows,...e.rows}}:To(e)}function ko(e){if(!Co(e))return!0;let{rows:t,...n}=e;return Object.values(n).some(e=>e!==void 0)||Object.keys(t).length>0}function Ao(e,t){return{globals:{...t.globals,...e.globals??{}},variables:{...t.variables,...e.variables??{}},segments:jo(t.segments,e.segments??{}),root:Oo(e.root??So,t.root),actions:{...t.actions,...e.actions??{}},looks:{...t.looks,...e.looks??{}},presets:jo(t.presets,e.presets??{}),editGlobals:{...t.editGlobals,...e.editGlobals??{}},helpers:{...t.helpers,...e.helpers??{}}}}function jo(e,t){return{...e,...Object.fromEntries(Object.entries(t).map(([t,n])=>[t,{...e[t],...n}]))}}const Mo=`closed`,No=`🍫`;function Po(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 Fo(e,t,n,r){let i=Po(e,t.length,n);if(i!==void 0)throw Error(i);return t.length===1?t[0]:t[r]}function Io(e){return e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}function Lo(e,t,n,r,i){return{kind:`segment`,name:e,opens:{ref:t,body:n,placement:r},...i!==void 0&&{when:i}}}function Ro(e,...t){return`{{ and ${[e,...t].map(zo).join(` `)} }}`}function zo(e){return`(eq .${e.variable} "${Io(e.member)}")`}function Bo(e,t,n){return`{{ action "${e}" "${Io(t)}" "${Io(n)}" }}`}function Vo(e,t){return{kind:`state`,key:e,default:t}}function Ho(e,t){return{set:e,cycle:[Mo,t]}}const Uo={required:!1,json:{enum:[...Pi]},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: ${Pi.join(`, `)}`,line:W(e.source,[...t.split(`.`),n])});return}return Ya(e,t,r,n,Pi)}},Wo={required:!1,json:{type:`string`},parse:(e,t,n,r)=>{let i=qa(e,t,r,n);return wi(i)?i:Ja(e,t,r)}},Go=/^[^\r\n]*\S[^\r\n]*$/u,Ko=RegExp(`^(?:❌|✕)[\\uFE0E\\uFE0F]?$`,`u`),qo={required:!1,json:{type:`string`,pattern:Go.source,not:{pattern:Ko.source}},parse:(e,t,n,r)=>{let i=qa(e,t,r,n);if(i===void 0||Go.test(i)&&!Ko.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])})}},Jo={default_bg:K(),default_fg:K(),default_empty_value:K(),default_separator:K(),default_truncate_marker:K(),palette:Wo,look:K(),preset:K(),style:mo(ji),autoWrap:co(),padding:lo(Ri),charset:mo(Ni),updateNotice:co(),colorCompatibility:Uo,menuGlyph:qo},Yo={noun:`globals key`,fields:Jo};function Xo(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 Zo(e){return Xo(`${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 Qo(e){return Xo(`${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 $o={noun:`preset globals key`,fields:{...Jo,preset:Zo(`a preset`),menuGlyph:Qo(`a preset`)}},es={noun:`editGlobals key`,fields:{...Jo,preset:Zo(`the editGlobals fragment`),menuGlyph:Qo(`the editGlobals fragment`)}};function ts(e,t,n){return n===void 0?{}:Qa(e,Yo,t,n)??{}}function ns(e,t,n){return Qa(e,$o,t,n)??{}}function rs(){return go($o)}function is(e,t,n){return Qa(e,es,t,n)??{}}const as=new Set(Object.keys(Yo.fields));function os(e){return as.has(e)}function ss(){return[...as]}const cs={padding:1};function ls(e){let t=new Map;for(let[n,r]of Object.entries(cs)){let i=e[n];t.set(n,typeof i==`number`?i:r)}return t}function us(e,t,n,r){return n.cache===void 0?(Ha.includes(r)&&e.issues.push({path:`${t}.cache`,message:`${r} variables must declare a cache policy (one of: ${za.join(`, `)})`,line:W(e.source,t.split(`.`))}),null):hs(e,`${t}.cache`,n.cache)}function ds(e,t,n){if(n.cache!==void 0)return hs(e,`${t}.cache`,n.cache)??void 0}function fs(e){return{required:!0,json:vs(),parse:(t,n,r,i)=>us(t,n,i,e)??void 0}}function ps(){return{required:!1,json:vs(),parse:(e,t,n,r)=>ds(e,t,r)}}const ms={noun:`cache`,arms:{ttl:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`&&bs(n)?{ttl:n}:no(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}:no(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}:no(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}:no(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}:no(e,t,`cache.never must be the literal boolean true, got ${G(n)}`)}}};function hs(e,t,n){return ro(e,ms,t,n)}const gs={noun:`time-variable cache`,arms:{ttl:ms.arms.ttl}};function _s(){return{required:!1,json:yo(gs),parse:(e,t,n,r)=>r.cache===void 0?void 0:ro(e,gs,`${t}.cache`,r.cache)??void 0}}function vs(){return yo(ms)}const ys=/^(\d+(?:\.\d+)?)(ms|s|m|h)$/;function bs(e){return ys.test(e)}function xs(e,t,n){if(n===void 0)return{};if(!Xa(n))return e.issues.push({path:t,message:`${t} must be an object, got ${Za(n)}`,line:W(e.source,t.split(`.`))}),{};let r={};for(let[i,a]of Object.entries(n)){let n=io(e,Us,`${t}.${i}`,a);n!==null&&(r[i]=n)}return r}function Ss(){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 ${Za(i)}`,line:W(e.source,t.split(`.`))});return}return i}}}function Cs(){return{required:!0,json:{enum:[...Va]},parse:(e,t,n,r)=>{let i=r.field;if(typeof i!=`string`||!Va.includes(i)){e.issues.push({path:`${t}.field`,message:`git field must be one of: ${Va.join(`, `)}, got ${JSON.stringify(i)}`,line:W(e.source,[...t.split(`.`),`field`])});return}return i}}}function ws(){return{required:!1,json:{type:[`string`,`number`,`boolean`]},parse:(e,t,n,r)=>{let i=r.type;return Ka(e,t,r,i===`number`||i===`boolean`||i===`string`?i:`string`)}}}const Ts={noun:`parse`,arms:{text:{json:{const:!0},parse:(e,t,n)=>n===!0?{text:!0}:no(e,t,`parse.text must be the literal boolean true, got ${G(n)}`)},regex:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`?Es(e,t,n):no(e,t,`parse.regex must be a pattern string, got ${G(n)}`)},json:{json:{const:!0},parse:(e,t,n)=>n===!0?{json:!0}:no(e,t,`parse.json must be the literal boolean true, got ${G(n)}`)}}};function Es(e,t,n){let r;try{new RegExp(n),r=RegExp(`${n}|`).exec(``).length-1}catch(n){return no(e,t,`parse.regex is not a valid regular expression: ${n.message}`)}return r>=1?{regex:n}:no(e,t,`parse.regex must contain a capture group — its group 1 is the value; got ${JSON.stringify(n)}`)}function Ds(){return{required:!1,json:yo(Ts),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:ro(e,Ts,`${t}.parse`,r.parse)??void 0)}}function Os(){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)=>Xa(r.parse)&&`json`in r.parse?ks(e,t,r.default):qa(e,t,r,`default`)}}function ks(e,t,n){if(n!==void 0)return As(n)?n:no(e,`${t}.default`,`${t}.default must be a JSON value (a json-parsed source's document), got ${G(n)}`)??void 0}function As(e){return e!==null&&js(e)}function js(e){if(e===null)return!0;switch(typeof e){case`string`:case`boolean`:return!0;case`number`:return Number.isFinite(e);case`object`:{if(Array.isArray(e))return e.every(js);let t=Object.getPrototypeOf(e);return(t===Object.prototype||t===null)&&Object.values(e).every(js)}default:return!1}}const Ms={value:Ss(),default:K()},Ns={path:po(),type:mo([`string`,`number`,`boolean`]),default:ws()},Ps={name:po(),default:K()},Fs={path:po(),readMode:mo([`whole`,`first-line`]),parse:Ds(),cache:fs(`file`),default:Os()},Is={command:po(),parse:Ds(),cache:fs(`shell`),default:Os()},Ls={template:po(),cache:ps(),default:K()},Rs={layout:po(),cache:_s(),default:K()},zs={field:Cs(),cache:fs(`git`),default:K()},Bs={key:po(),default:K()},Vs=`kind`;function Hs(e,t){return{...ao(Vs,e,t),parse:(n,r,i)=>{let a=$a(n,t,r,i);return a===null?null:{kind:e,...a}}}}const Us={tag:Vs,noun:`source kind`,memberNoun:`variable`,arms:{literal:Hs(`literal`,Ms),input:Hs(`input`,Ns),env:Hs(`env`,Ps),file:Hs(`file`,Fs),shell:Hs(`shell`,Is),template:Hs(`template`,Ls),time:Hs(`time`,Rs),git:Hs(`git`,zs),state:Hs(`state`,Bs)}};function Ws(){return vo(Us)}function Gs(){return{type:`object`,additionalProperties:Ws()}}function Ks(e){return e.replace(/[^A-Za-z0-9]+/g,`_`)}const qs=`groups.`,Js=`menus.`,Ys=`edit.`,Xs=`settings.`,Zs=[qs,Js,Ys,Xs];function Qs(e){return Zs.some(t=>e.startsWith(t))}function $s(e){let t=Ks(e);return Zs.find(e=>t.startsWith(Ks(e)))}function ec(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 tc(e){return new Set(Object.keys(e.segments).filter(e=>!Qs(e)))}function nc(e,t,n){if(t===void 0)return{};if(!Xa(t))return e.issues.push({path:`segments`,message:`segments must be an object, got ${Za(t)}`,line:W(e.source,[`segments`])}),{};let r={};for(let[i,a]of Object.entries(t)){let t=Qa(e,n.has(i)?cc:sc,`segments.${i}`,a);t!==null&&(r[i]=t)}return r}function rc(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>r[n]===void 0?no(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:Ga(e,t,r,n)??void 0}}function ic(){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 ac(){return{required:!1,json:Gs(),parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0)return xs(e,`${t}.${n}`,i)}}}const oc={template:rc(),description:K(),width:ic(),justify:mo(Ua),truncate:mo(Wa),bg:K(),fg:K(),when:K(),palette:fo(),vars:ac()},sc={noun:`segment key`,fields:oc},cc={noun:`segment key`,fields:{...oc,template:K()}},lc=[`primary`,`secondary`,`accent`],uc=[`surface`,`panel`,`surface-lighten-1`],dc=[.16,.3],fc=dc.reduce((e,t)=>t>e?t:e),pc=dc.flatMap(e=>uc.flatMap(t=>lc.map(n=>({base:t,hue:n,amount:e})))),mc=e=>{let t=0,n=.5;for(let r=e;r>0;r>>=1,n/=2)t+=n*(r&1);return t},hc=[`van-der-corput`,`golden-angle`,`ends-interleaved`,`monotonic`,`uniform`],gc=e=>typeof e==`string`&&hc.includes(e),_c={"van-der-corput":mc,"golden-angle":e=>e*.6180339887498949%1,"ends-interleaved":(e,t)=>((e%2==0?e/2:t-1-(e-1)/2)+.5)/t,monotonic:(e,t)=>(e+.5)/t,uniform:()=>.5},vc=e=>_c[e??`van-der-corput`],yc=.37;function bc(e,t){let n=0,r=1;for(let{index:i,count:a,distribution:o}of e)n+=o(i,a)*r*t,r*=yc;let i=Math.round(n)%t;return i<0?i+t:i}function xc(e){let t=0,n=1;for(let{index:r,count:i,distribution:a}of e)t+=a(r,i)*n,n*=yc;return t%1}function Sc(e,t){let n=e[bc(t,e.length)];if(n===void 0)throw Error(`vocabularySelect: empty vocabulary`);return n}const Cc=e=>Sc(pc,e);function wc(e,t){let n=e.get(t);if(n===void 0)throw Error(`palette "${e.name}" has no "${t}" role; decoration needs it`);return n}function Tc(e,t){let n=Ec.get(e);n===void 0&&(n=new Map,Ec.set(e,n));let r=`${t.base}|${t.hue}|${t.amount}`,i=n.get(r);if(i!==void 0)return i;let a=On.fromRgba(wc(e,t.base)).mixAxes(On.fromRgba(wc(e,t.hue)),{l:t.amount,c:.8,h:1,alpha:0}).toRgba();return n.set(r,a),a}const Ec=new WeakMap,Dc=2.2;function Oc(e,t){let n=pc.filter(e=>e.hue===t&&e.amount===fc).map(t=>Tc(e,t)),r=sn(wc(e,`surface`),wc(e,t),.92),i=wc(e,`foreground`),a=n.reduce((e,t)=>Vn(e,t,Dc),i),o=[...Array.from({length:13},(e,t)=>sn(r,i,t/12)),a].find(e=>n.every(t=>Bn(e,t)>=Dc));if(o===void 0)throw Error(`palette "${e.name}": "${t}" cannot clear the ${Dc} state floor even beyond foreground`);return o}const kc=4.5;function Ac(e,t){let n=jc.get(e);n===void 0&&(n=new Map,jc.set(e,n));let r=n.get(t.hex);if(r!==void 0)return r;let i=Rn(t),a=Vn([`background`,`foreground`].map(t=>wc(e,t)).reduce((e,t)=>Bn(i,t)<Bn(i,e)?t:e),t,kc);return n.set(t.hex,a),a}const jc=new WeakMap,Mc={base:.42,perDepth:.14,cap:.75},Nc={floor:.12,span:.8};function Pc(e,t){return lc[(lc.indexOf(e)+t)%lc.length]}function Fc(e,t){let n=`${t.hue}|${t.depth}`,r=Ic.get(e);r===void 0&&(r=new Map,Ic.set(e,r));let i=r.get(n);if(i!==void 0)return i;let a=Oc(e,Pc(t.hue,t.depth)),o=Math.min(Mc.cap,Mc.base+Mc.perDepth*t.depth),s={state:a,plane:sn(a,wc(e,`background`),o)};return r.set(n,s),s}const Ic=new WeakMap;function Lc(e,t,n){let{state:r,plane:i}=Fc(e,t);return sn(i,r,Nc.floor+Nc.span*xc(n))}const Rc={kind:`bar`,address:[]},zc=(e,t)=>({...e,address:[...e.address,t]}),Bc=e=>({kind:`band`,band:e,address:[]});function Vc(e,t){switch(t.kind){case`bar`:{let n=Cc(t.address);return{tint:Tc(e,n),disclosure:{hue:n.hue,depth:0}}}case`band`:return{tint:Lc(e,t.band,t.address),disclosure:{hue:t.band.hue,depth:t.band.depth+1}}}}const Hc=`#/definitions/LayoutNode`,Uc={kind:`container`,direction:`vertical`,children:[]};function Wc(e){return{required:!0,json:{const:e},parse:()=>e}}function Gc(){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 Kc(){return{required:!0,json:{enum:[...Pa]},parse:(e,t,n,r)=>{let i=r[n];return typeof i==`string`&&Pa.includes(i)?i:(e.issues.push({path:`${t}.${n}`,message:`a container "direction" must be one of: ${Pa.join(`, `)} (got ${JSON.stringify(i)})`,line:W(e.source,[`root`])}),`vertical`)}}}function qc(e){return{required:!0,json:{type:`array`,items:{$ref:Hc}},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 ${Za(a)}`,line:W(t.source,[`root`])}),[])}}}const Jc={noun:`layout-node key`,fields:{kind:Wc(`segment`),name:Gc(),when:K()}},Yc=()=>mo(hc),Xc={noun:`layout-node key`,fields:{kind:Wc(`container`),direction:Kc(),children:qc(oo(()=>tl)),when:K(),distribution:Yc()}};function Zc(){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 Qc={noun:`layout-node key`,fields:{seg:Zc(),when:K()}},$c={noun:`layout-node key`,fields:{h:qc(oo(()=>tl)),when:K(),distribution:Yc()}},el={noun:`layout-node key`,fields:{v:qc(oo(()=>tl)),when:K(),distribution:Yc()}},tl=(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`])}),Uc):{kind:`segment`,name:n};if(!Xa(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 ${Za(n)}`,line:W(e.source,[`root`])}),Uc;if(n.kind===`container`)return Qa(e,Xc,t,n)??Uc;if(n.kind===`segment`)return Qa(e,Jc,t,n)??Uc;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 Pa=[`vertical`,`horizontal`],Fa={vertical:`row`,horizontal:`cell`};function Ia(e,t){return e.opens===void 0?e:{...e,opens:{...e.opens,body:t(e.opens.body)}}}function*La(e){yield e;for(let t of Ra(e))yield*La(t)}function Ra(e){return e.kind===`container`?e.children:e.opens===void 0?[]:[e.opens.body]}function za(e){return e===void 0||`text`in e?`text`:`regex`in e?`regex`:`json`}const Ba=[`ttl`,`watch_file`,`depends_on`,`key`,`never`];function Va(e){return e.kind!==`literal`&&e.kind!==`input`&&e.kind!==`env`&&e.kind!==`state`}const Ha=[`branch`,`sha`,`dirty`,`ahead`,`behind`,`stash`],Ua=[`file`,`shell`,`git`],Wa=[`left`,`center`,`right`],Ga=[`right`,`left`,`middle`];function Ka(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 ${Qa(i)}`,line:W(e.source,[...t.split(`.`),r])}),null)}function qa(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 ${Qa(i)}`,line:W(e.source,[...t.split(`.`),`default`])});return}return i}}function Ja(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 ${Qa(i)}`,line:W(e.source,[...t.split(`.`),r])});return}return i}}function Ya(e,t,n){let r=Ja(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 Xa(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 Za(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Qa(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 $a(e,t,n,r){return Za(r)?(no(e,n,r,t.noun,new Set(Object.keys(t.fields))),eo(e,t.fields,n,r)):(e.issues.push({path:n,message:`${n} must be an object, got ${Qa(r)}`,line:W(e.source,n.split(`.`))}),null)}function eo(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 to=new Set;function no(e,t,n,r,i,a=to){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 ro(e,t,n){return e.issues.push({path:t,message:n,line:W(e.source,t.split(`.`))}),null}function io(e,t,n,r){if(!Za(r))return e.issues.push({path:n,message:`${t.noun} must be an object, got ${Qa(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 ao(e,t,n,r){if(!Za(r))return e.issues.push({path:n,message:`${n} must be an object, got ${Qa(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 ${Qa(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 no(e,n,r,`${i} ${t.memberNoun} key`,o.keys,l),c}function oo(e,t,n){return{json:vo(go(n),e,t),keys:new Set([e,...Object.keys(n)])}}function so(e){return(...t)=>e()(...t)}function co(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)=>Ja(e,t,r,n)}}function lo(){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 ${Qa(i)}`,line:W(e.source,[n])});return}return i}}}}function uo(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 fo(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 po(){return{required:!1,json:{type:`string`},parse:(e,t,n,r)=>Ya(e,t,r)}}function mo(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>Ka(e,t,r,n)??void 0}}function ho(e){return{required:!1,json:{enum:[...e]},parse:(t,n,r,i)=>Xa(t,n,i,r,e)}}function go(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 _o(e){return go(e.fields)}function vo(e,t,n){let r=e,i={[t]:{const:n},...r.properties},a=[t,...r.required??[]];return{...r,properties:i,required:a}}function yo(e){let t=e.arms;return{anyOf:Object.values(t).map(e=>e.json)}}function bo(e){let t=e.arms;return{anyOf:Object.entries(t).map(([e,t])=>({type:`object`,properties:{[e]:t.json},required:[e],additionalProperties:!1}))}}const xo=/^[A-Za-z_][A-Za-z0-9_]*$/;function So(e){return`#${e+1}`}const Co={rows:{}};function wo(e){return`rows`in e}function To(e){return Object.fromEntries(e.map((e,t)=>[So(t),e]))}function Eo(e){if(e.kind===`container`&&e.direction===`vertical`){let{kind:t,direction:n,children:r,...i}=e;return{...i,rows:To(r)}}let{when:t,...n}=e;return{...t!==void 0&&{when:t},rows:To([n])}}function Do(e){let{rows:t,...n}=e;return{kind:`container`,direction:`vertical`,children:Object.values(t),...n}}function Oo(e){return wo(e)?Do(e):e}function ko(e,t){return wo(e)?{...t,...e,rows:{...t.rows,...e.rows}}:Eo(e)}function Ao(e){if(!wo(e))return!0;let{rows:t,...n}=e;return Object.values(n).some(e=>e!==void 0)||Object.keys(t).length>0}function jo(e,t){return{globals:{...t.globals,...e.globals??{}},variables:{...t.variables,...e.variables??{}},segments:Mo(t.segments,e.segments??{}),root:ko(e.root??Co,t.root),actions:{...t.actions,...e.actions??{}},looks:{...t.looks,...e.looks??{}},presets:Mo(t.presets,e.presets??{}),editGlobals:{...t.editGlobals,...e.editGlobals??{}},helpers:{...t.helpers,...e.helpers??{}}}}function Mo(e,t){return{...e,...Object.fromEntries(Object.entries(t).map(([t,n])=>[t,{...e[t],...n}]))}}const No=`closed`,Po=`🍫`;function Fo(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 Io(e,t,n,r){let i=Fo(e,t.length,n);if(i!==void 0)throw Error(i);return t.length===1?t[0]:t[r]}function Lo(e){return e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}function Ro(e,t,n,r,i){return{kind:`segment`,name:e,opens:{ref:t,body:n,placement:r},...i!==void 0&&{when:i}}}function zo(e,...t){return`{{ and ${[e,...t].map(Bo).join(` `)} }}`}function Bo(e){return`(eq .${e.variable} "${Lo(e.member)}")`}function Vo(e,t,n){return`{{ action "${e}" "${Lo(t)}" "${Lo(n)}" }}`}function Ho(e,t){return{kind:`state`,key:e,default:t}}function Uo(e,t){return{set:e,cycle:[No,t]}}const Wo={required:!1,json:{enum:[...Pi]},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: ${Pi.join(`, `)}`,line:W(e.source,[...t.split(`.`),n])});return}return Xa(e,t,r,n,Pi)}},Go={required:!1,json:{type:`string`},parse:(e,t,n,r)=>{let i=Ja(e,t,r,n);return wi(i)?i:Ya(e,t,r)}},Ko=/^[^\r\n]*\S[^\r\n]*$/u,qo=RegExp(`^(?:❌|✕)[\\uFE0E\\uFE0F]?$`,`u`),Jo={required:!1,json:{type:`string`,pattern:Ko.source,not:{pattern:qo.source}},parse:(e,t,n,r)=>{let i=Ja(e,t,r,n);if(i===void 0||Ko.test(i)&&!qo.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])})}},Yo={default_bg:K(),default_fg:K(),default_empty_value:K(),default_separator:K(),default_truncate_marker:K(),palette:Go,look:K(),preset:K(),style:ho(ji),autoWrap:lo(),padding:uo(Ri),charset:ho(Ni),updateNotice:lo(),colorCompatibility:Wo,menuGlyph:Jo},Xo={noun:`globals key`,fields:Yo};function Zo(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 Qo(e){return Zo(`${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 $o(e){return Zo(`${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 es={noun:`preset globals key`,fields:{...Yo,preset:Qo(`a preset`),menuGlyph:$o(`a preset`)}},ts={noun:`editGlobals key`,fields:{...Yo,preset:Qo(`the editGlobals fragment`),menuGlyph:$o(`the editGlobals fragment`)}};function ns(e,t,n){return n===void 0?{}:$a(e,Xo,t,n)??{}}function rs(e,t,n){return $a(e,es,t,n)??{}}function is(){return _o(es)}function as(e,t,n){return $a(e,ts,t,n)??{}}const os=new Set(Object.keys(Xo.fields));function ss(e){return os.has(e)}function cs(){return[...os]}const ls={padding:1};function us(e){let t=new Map;for(let[n,r]of Object.entries(ls)){let i=e[n];t.set(n,typeof i==`number`?i:r)}return t}function ds(e,t,n,r){return n.cache===void 0?(Ua.includes(r)&&e.issues.push({path:`${t}.cache`,message:`${r} variables must declare a cache policy (one of: ${Ba.join(`, `)})`,line:W(e.source,t.split(`.`))}),null):gs(e,`${t}.cache`,n.cache)}function fs(e,t,n){if(n.cache!==void 0)return gs(e,`${t}.cache`,n.cache)??void 0}function ps(e){return{required:!0,json:ys(),parse:(t,n,r,i)=>ds(t,n,i,e)??void 0}}function ms(){return{required:!1,json:ys(),parse:(e,t,n,r)=>fs(e,t,r)}}const hs={noun:`cache`,arms:{ttl:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`&&xs(n)?{ttl:n}:ro(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}:ro(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}:ro(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}:ro(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}:ro(e,t,`cache.never must be the literal boolean true, got ${G(n)}`)}}};function gs(e,t,n){return io(e,hs,t,n)}const _s={noun:`time-variable cache`,arms:{ttl:hs.arms.ttl}};function vs(){return{required:!1,json:bo(_s),parse:(e,t,n,r)=>r.cache===void 0?void 0:io(e,_s,`${t}.cache`,r.cache)??void 0}}function ys(){return bo(hs)}const bs=/^(\d+(?:\.\d+)?)(ms|s|m|h)$/;function xs(e){return bs.test(e)}function Ss(e,t,n){if(n===void 0)return{};if(!Za(n))return e.issues.push({path:t,message:`${t} must be an object, got ${Qa(n)}`,line:W(e.source,t.split(`.`))}),{};let r={};for(let[i,a]of Object.entries(n)){let n=ao(e,Ws,`${t}.${i}`,a);n!==null&&(r[i]=n)}return r}function Cs(){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 ${Qa(i)}`,line:W(e.source,t.split(`.`))});return}return i}}}function ws(){return{required:!0,json:{enum:[...Ha]},parse:(e,t,n,r)=>{let i=r.field;if(typeof i!=`string`||!Ha.includes(i)){e.issues.push({path:`${t}.field`,message:`git field must be one of: ${Ha.join(`, `)}, got ${JSON.stringify(i)}`,line:W(e.source,[...t.split(`.`),`field`])});return}return i}}}function Ts(){return{required:!1,json:{type:[`string`,`number`,`boolean`]},parse:(e,t,n,r)=>{let i=r.type;return qa(e,t,r,i===`number`||i===`boolean`||i===`string`?i:`string`)}}}const Es={noun:`parse`,arms:{text:{json:{const:!0},parse:(e,t,n)=>n===!0?{text:!0}:ro(e,t,`parse.text must be the literal boolean true, got ${G(n)}`)},regex:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`?Ds(e,t,n):ro(e,t,`parse.regex must be a pattern string, got ${G(n)}`)},json:{json:{const:!0},parse:(e,t,n)=>n===!0?{json:!0}:ro(e,t,`parse.json must be the literal boolean true, got ${G(n)}`)}}};function Ds(e,t,n){let r;try{new RegExp(n),r=RegExp(`${n}|`).exec(``).length-1}catch(n){return ro(e,t,`parse.regex is not a valid regular expression: ${n.message}`)}return r>=1?{regex:n}:ro(e,t,`parse.regex must contain a capture group — its group 1 is the value; got ${JSON.stringify(n)}`)}function Os(){return{required:!1,json:bo(Es),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:io(e,Es,`${t}.parse`,r.parse)??void 0)}}function ks(){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)=>Za(r.parse)&&`json`in r.parse?As(e,t,r.default):Ja(e,t,r,`default`)}}function As(e,t,n){if(n!==void 0)return js(n)?n:ro(e,`${t}.default`,`${t}.default must be a JSON value (a json-parsed source's document), got ${G(n)}`)??void 0}function js(e){return e!==null&&Ms(e)}function Ms(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(Ms);let t=Object.getPrototypeOf(e);return(t===Object.prototype||t===null)&&Object.values(e).every(Ms)}default:return!1}}const Ns={value:Cs(),default:K()},Ps={path:mo(),type:ho([`string`,`number`,`boolean`]),default:Ts()},Fs={name:mo(),default:K()},Is={path:mo(),readMode:ho([`whole`,`first-line`]),parse:Os(),cache:ps(`file`),default:ks()},Ls={command:mo(),parse:Os(),cache:ps(`shell`),default:ks()},Rs={template:mo(),cache:ms(),default:K()},zs={layout:mo(),cache:vs(),default:K()},Bs={field:ws(),cache:ps(`git`),default:K()},Vs={key:mo(),default:K()},Hs=`kind`;function Us(e,t){return{...oo(Hs,e,t),parse:(n,r,i)=>{let a=eo(n,t,r,i);return a===null?null:{kind:e,...a}}}}const Ws={tag:Hs,noun:`source kind`,memberNoun:`variable`,arms:{literal:Us(`literal`,Ns),input:Us(`input`,Ps),env:Us(`env`,Fs),file:Us(`file`,Is),shell:Us(`shell`,Ls),template:Us(`template`,Rs),time:Us(`time`,zs),git:Us(`git`,Bs),state:Us(`state`,Vs)}};function Gs(){return yo(Ws)}function Ks(){return{type:`object`,additionalProperties:Gs()}}function qs(e){return e.replace(/[^A-Za-z0-9]+/g,`_`)}const Js=`groups.`,Ys=`menus.`,Xs=`edit.`,Zs=`settings.`,Qs=[Js,Ys,Xs,Zs];function $s(e){return Qs.some(t=>e.startsWith(t))}function ec(e){let t=qs(e);return Qs.find(e=>t.startsWith(qs(e)))}function tc(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 nc(e){return new Set(Object.keys(e.segments).filter(e=>!$s(e)))}function rc(e,t,n){if(t===void 0)return{};if(!Za(t))return e.issues.push({path:`segments`,message:`segments must be an object, got ${Qa(t)}`,line:W(e.source,[`segments`])}),{};let r={};for(let[i,a]of Object.entries(t)){let t=$a(e,n.has(i)?lc:cc,`segments.${i}`,a);t!==null&&(r[i]=t)}return r}function ic(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>r[n]===void 0?ro(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:Ka(e,t,r,n)??void 0}}function ac(){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 oc(){return{required:!1,json:Ks(),parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0)return Ss(e,`${t}.${n}`,i)}}}const sc={template:ic(),description:K(),width:ac(),justify:ho(Wa),truncate:ho(Ga),bg:K(),fg:K(),when:K(),palette:po(),vars:oc()},cc={noun:`segment key`,fields:sc},lc={noun:`segment key`,fields:{...sc,template:K()}},uc=[`primary`,`secondary`,`accent`],dc=[`primary`,`secondary`],fc=[0,.5,1],pc=dc.flatMap(e=>fc.map(t=>({hue:e,tone:t}))),mc=e=>{let t=0,n=.5;for(let r=e;r>0;r>>=1,n/=2)t+=n*(r&1);return t},hc=[`van-der-corput`,`golden-angle`,`ends-interleaved`,`monotonic`,`uniform`],gc=e=>typeof e==`string`&&hc.includes(e),_c={"van-der-corput":mc,"golden-angle":e=>e*.6180339887498949%1,"ends-interleaved":(e,t)=>((e%2==0?e/2:t-1-(e-1)/2)+.5)/t,monotonic:(e,t)=>(e+.5)/t,uniform:()=>.5},vc=e=>_c[e??`van-der-corput`];function yc(e){let t=0,n=1;for(let{index:r,count:i,distribution:a}of e)t+=a(r,i)*n,n*=.37;return t%1}const bc=(e,t)=>Math.floor(e*t),xc=(e,t)=>Math.round(e*t)%t;function Sc(e,t,n){let r=e[n(t===void 0?0:t.distribution(t.index,t.count),e.length)];if(r===void 0)throw Error(`vocabularySelect: empty vocabulary`);return r}function Cc(e){let t=e.findIndex(e=>e.axis===`cell`),n=t===-1?e:e.slice(0,t);return{hue:Sc(dc,n.at(-1),bc),tone:Sc(fc,e[n.length],xc)}}function wc(e,t){let n=e.get(t);if(n===void 0)throw Error(`palette "${e.name}" has no "${t}" role; decoration needs it`);return n}function Tc(e,t){let n=Ec.get(e);n===void 0&&(n=new Map,Ec.set(e,n));let r=`${t.hue}|${t.tone}`,i=n.get(r);if(i!==void 0)return i;let a=On.fromRgba(wc(e,t.hue)),o=On.fromRgba(wc(e,`surface`)),s=(e,t)=>e.mixAxes(a,{l:t,c:.8,h:1,alpha:0}),c=s(o.mixAxes(On.fromRgba(wc(e,`background`)),{l:.5,c:0,h:0,alpha:0}),0).mixAxes(s(o,.35),{l:t.tone,c:t.tone,h:t.tone,alpha:0}).toRgba();return n.set(r,c),c}const Ec=new WeakMap,Dc=(e,t)=>Tc(e,Cc(t)),Oc=2.2;function kc(e,t){let n=pc.map(t=>Tc(e,t)),r=sn(wc(e,`surface`),wc(e,t),.92),i=wc(e,`foreground`),a=n.reduce((e,t)=>Vn(e,t,Oc),i),o=[...Array.from({length:13},(e,t)=>sn(r,i,t/12)),a].find(e=>n.every(t=>Bn(e,t)>=Oc));if(o===void 0)throw Error(`palette "${e.name}": "${t}" cannot clear the ${Oc} state floor even beyond foreground`);return o}const Ac=4.5;function jc(e,t){let n=Mc.get(e);n===void 0&&(n=new Map,Mc.set(e,n));let r=n.get(t.hex);if(r!==void 0)return r;let i=Rn(t),a=Vn([`background`,`foreground`].map(t=>wc(e,t)).reduce((e,t)=>Bn(i,t)<Bn(i,e)?t:e),t,Ac);return n.set(t.hex,a),a}const Mc=new WeakMap,Nc={base:.42,perDepth:.14,cap:.75},Pc={floor:.12,span:.8};function Fc(e,t){return uc[(uc.indexOf(e)+t)%uc.length]}function Ic(e,t){let n=`${t.hue}|${t.depth}`,r=Lc.get(e);r===void 0&&(r=new Map,Lc.set(e,r));let i=r.get(n);if(i!==void 0)return i;let a=kc(e,Fc(t.hue,t.depth)),o=Math.min(Nc.cap,Nc.base+Nc.perDepth*t.depth),s={state:a,plane:sn(a,wc(e,`background`),o)};return r.set(n,s),s}const Lc=new WeakMap;function Rc(e,t,n){let{state:r,plane:i}=Ic(e,t);return sn(i,r,Pc.floor+Pc.span*yc(n))}const zc={kind:`bar`,address:[]},Bc=(e,t)=>({...e,address:[...e.address,t]}),Vc=e=>({kind:`band`,band:e,address:[]});function Hc(e,t){switch(t.kind){case`bar`:return{tint:Dc(e,t.address),disclosure:{hue:`accent`,depth:0}};case`band`:return{tint:Rc(e,t.band,t.address),disclosure:{hue:t.band.hue,depth:t.band.depth+1}}}}const Uc=`#/definitions/LayoutNode`,Wc={kind:`container`,direction:`vertical`,children:[]};function Gc(e){return{required:!0,json:{const:e},parse:()=>e}}function Kc(){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 qc(){return{required:!0,json:{enum:[...Pa]},parse:(e,t,n,r)=>{let i=r[n];return typeof i==`string`&&Pa.includes(i)?i:(e.issues.push({path:`${t}.${n}`,message:`a container "direction" must be one of: ${Pa.join(`, `)} (got ${JSON.stringify(i)})`,line:W(e.source,[`root`])}),`vertical`)}}}function Jc(e){return{required:!0,json:{type:`array`,items:{$ref:Uc}},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 ${Qa(a)}`,line:W(t.source,[`root`])}),[])}}}const Yc={noun:`layout-node key`,fields:{kind:Gc(`segment`),name:Kc(),when:K()}},Xc=()=>ho(hc),Zc={noun:`layout-node key`,fields:{kind:Gc(`container`),direction:qc(),children:Jc(so(()=>nl)),when:K(),distribution:Xc()}};function Qc(){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 $c={noun:`layout-node key`,fields:{seg:Qc(),when:K()}},el={noun:`layout-node key`,fields:{h:Jc(so(()=>nl)),when:K(),distribution:Xc()}},tl={noun:`layout-node key`,fields:{v:Jc(so(()=>nl)),when:K(),distribution:Xc()}},nl=(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`])}),Wc):{kind:`segment`,name:n};if(!Za(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 ${Qa(n)}`,line:W(e.source,[`root`])}),Wc;if(n.kind===`container`)return $a(e,Zc,t,n)??Wc;if(n.kind===`segment`)return $a(e,Yc,t,n)??Wc;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`])}),Uc;if(n.kind===`group`){let r=Qa(e,cl,t,n);return r===null?Uc:(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}),ul(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`])}),Uc}if(a){let r=Qa(e,Qc,t,n);return r===null?Uc:{kind:`segment`,name:r.seg,...r.when!==void 0&&{when:r.when}}}if(r){let r=Qa(e,$c,t,n);return r===null?Uc:{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=Qa(e,el,t,n);return r===null?Uc:{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`])}),Uc};function nl(){return{required:!0,json:{type:`object`,propertyNames:{pattern:bo.source},additionalProperties:{$ref:Hc}},parse:(e,t,n,r)=>{let i=r[n];if(!Xa(i))return e.issues.push({path:`${t}.${n}`,message:`"rows" must be an object of row name → layout node, got ${Za(i)}`,line:W(e.source,[...t.split(`.`),n])}),{};let a={};for(let[r,o]of Object.entries(i)){if(!bo.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]=tl(e,`${t}.${n}.${r}`,o)}return a}}}const rl={noun:`root key`,fields:{rows:nl(),when:K(),distribution:Yc()}};function il(e,t,n){return Xa(n)&&`rows`in n?Qa(e,rl,t,n)??{rows:{}}:tl(e,t,n)}function al(){return{required:!0,json:{type:`string`,pattern:bo.source},parse:(e,t,n,r)=>{let i=r[n];if(typeof i!=`string`||!bo.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 "${Mo}", got ${G(i)}`,line:W(e.source,[`root`])});return}return i}}}function ol(){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 sl(){return{required:!0,json:{type:`string`,pattern:`^[^\\n\\r]*$`},parse:(e,t,n,r)=>{let i=Ga(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 cl={noun:`layout-node key`,fields:{kind:Wc(`group`),name:al(),label:sl(),open:co(),direction:mo(Pa),key:ol(),bg:K(),fg:K(),when:K(),distribution:Yc(),children:qc(oo(()=>tl))}};function ll(e){return e.key??`groups.`+e.name}function ul(e){let t=qs+e.name;return Lo(t,{variable:t,key:ll(e),member:e.name},{kind:`container`,direction:e.direction??`vertical`,children:e.children,...e.distribution!==void 0&&{distribution:e.distribution}},`drop`,e.when)}function dl(e,t,n){e.issues.push({path:t,message:n,line:W(e.source,[`root`])})}function fl(e,t){ec(e,t,qs,`group nodes`);let n=e.groups;if(n.length===0)return;let r=new Set;for(let t of n)r.has(t.name)&&dl(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}.`)&&ll(t)===ll(r)&&dl(e,t.path,`group "${t.name}" shares key "${ll(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=ll(t);if(i.has(n)||i.set(n,Mo),t.open===!0){let r=i.get(n);r!==`closed`&&dl(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=qs+e.name,r=ll(e),c=n.filter(t=>t!==e&&e.path.startsWith(t.path+`.`)).length,l=` `.repeat(c);a[t]=Vo(r,i.get(r)),o[t]=Ho(r,e.name),s[t]={template:Bo(t,`${l}${e.label} ▸`,`${l}${e.label} ▾`),...e.bg!==void 0&&{bg:e.bg},...e.fg!==void 0&&{fg:e.fg}}}t.variables={...t.variables??{},...a},t.actions={...t.actions??{},...o},t.segments={...t.segments??{},...s}}var pl=class extends Error{name=`TemplateError`;kind=`EvalError`;pos;source;constructor(e,t,n={}){super(e),this.pos=t,this.source=n.source}get sourceSnippet(){return this.source?bl(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}},ml=class extends pl{name=`ParseError`;kind=`ParseError`;expected;found;constructor(e,t,n={}){super(e,t,n),this.expected=n.expected,this.found=n.found}},hl=class extends pl{name=`EvalError`;kind=`EvalError`},gl=class extends hl{name=`FuncNotFoundError`;kind=`FuncNotFoundError`;funcName;suggestions;constructor(e,t,n={}){let r=xl(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}},_l=class extends hl{name=`TypeMismatchError`;kind=`TypeMismatchError`;funcName;argIndex;expected;receivedSummary;constructor(e,t,n,r,i,a={}){super(`function ${JSON.stringify(e)} arg ${t}: expected ${n}, but a ${r} flowed in. Pass it through \`unstyled\` (or your engine's flatten function) to convert.`,i,a),this.funcName=e,this.argIndex=t,this.expected=n,this.receivedSummary=r}},vl=class extends hl{name=`MissingFieldError`;kind=`MissingFieldError`;path;constructor(e,t,n={}){super(`field "${e.join(`.`)}" not found on receiver`,t,n),this.path=e}},yl=class extends hl{name=`FailError`;kind=`FailError`;constructor(e,t={line:0,column:0,offset:0},n={}){super(e,t,n)}};function bl(e,t){let n=e.split(`
40
+ New: { h: ["seg1", "seg2"] }`,line:W(e.source,[`root`])}),Wc;if(n.kind===`group`){let r=$a(e,ll,t,n);return r===null?Wc:(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}),dl(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`])}),Wc}if(a){let r=$a(e,$c,t,n);return r===null?Wc:{kind:`segment`,name:r.seg,...r.when!==void 0&&{when:r.when}}}if(r){let r=$a(e,el,t,n);return r===null?Wc:{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=$a(e,tl,t,n);return r===null?Wc:{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`])}),Wc};function rl(){return{required:!0,json:{type:`object`,propertyNames:{pattern:xo.source},additionalProperties:{$ref:Uc}},parse:(e,t,n,r)=>{let i=r[n];if(!Za(i))return e.issues.push({path:`${t}.${n}`,message:`"rows" must be an object of row name → layout node, got ${Qa(i)}`,line:W(e.source,[...t.split(`.`),n])}),{};let a={};for(let[r,o]of Object.entries(i)){if(!xo.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]=nl(e,`${t}.${n}.${r}`,o)}return a}}}const il={noun:`root key`,fields:{rows:rl(),when:K(),distribution:Xc()}};function al(e,t,n){return Za(n)&&`rows`in n?$a(e,il,t,n)??{rows:{}}:nl(e,t,n)}function ol(){return{required:!0,json:{type:`string`,pattern:xo.source},parse:(e,t,n,r)=>{let i=r[n];if(typeof i!=`string`||!xo.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 "${No}", got ${G(i)}`,line:W(e.source,[`root`])});return}return i}}}function sl(){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 cl(){return{required:!0,json:{type:`string`,pattern:`^[^\\n\\r]*$`},parse:(e,t,n,r)=>{let i=Ka(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 ll={noun:`layout-node key`,fields:{kind:Gc(`group`),name:ol(),label:cl(),open:lo(),direction:ho(Pa),key:sl(),bg:K(),fg:K(),when:K(),distribution:Xc(),children:Jc(so(()=>nl))}};function ul(e){return e.key??`groups.`+e.name}function dl(e){let t=Js+e.name;return Ro(t,{variable:t,key:ul(e),member:e.name},{kind:`container`,direction:e.direction??`vertical`,children:e.children,...e.distribution!==void 0&&{distribution:e.distribution}},`drop`,e.when)}function fl(e,t,n){e.issues.push({path:t,message:n,line:W(e.source,[`root`])})}function pl(e,t){tc(e,t,Js,`group nodes`);let n=e.groups;if(n.length===0)return;let r=new Set;for(let t of n)r.has(t.name)&&fl(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}.`)&&ul(t)===ul(r)&&fl(e,t.path,`group "${t.name}" shares key "${ul(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=ul(t);if(i.has(n)||i.set(n,No),t.open===!0){let r=i.get(n);r!==`closed`&&fl(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=Js+e.name,r=ul(e),c=n.filter(t=>t!==e&&e.path.startsWith(t.path+`.`)).length,l=` `.repeat(c);a[t]=Ho(r,i.get(r)),o[t]=Uo(r,e.name),s[t]={template:Vo(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 ml=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?xl(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}},hl=class extends ml{name=`ParseError`;kind=`ParseError`;expected;found;constructor(e,t,n={}){super(e,t,n),this.expected=n.expected,this.found=n.found}},gl=class extends ml{name=`EvalError`;kind=`EvalError`},_l=class extends gl{name=`FuncNotFoundError`;kind=`FuncNotFoundError`;funcName;suggestions;constructor(e,t,n={}){let r=Sl(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}},vl=class extends gl{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}},yl=class extends gl{name=`MissingFieldError`;kind=`MissingFieldError`;path;constructor(e,t,n={}){super(`field "${e.join(`.`)}" not found on receiver`,t,n),this.path=e}},bl=class extends gl{name=`FailError`;kind=`FailError`;constructor(e,t={line:0,column:0,offset:0},n={}){super(e,t,n)}};function xl(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 xl(e,t){if(t.length===0)return[];let n=t.map(t=>({name:t,dist:Sl(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 Sl(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 Cl(e){throw Error(`unhandled node kind: ${JSON.stringify(e)}`)}const wl=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`]]),Tl={left:`{{`,right:`}}`};var El=class{src;leftDelim;rightDelim;offset=0;line=1;column=1;mode=`text`;pending;constructor(e,t=Tl){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 ml(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&&Dl(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);Dl(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);Dl(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(;Dl(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`;Dl(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&&(kl(e)||Ol(e)&&kl(this.src[this.offset+1]??``)||e===`.`&&kl(this.src[this.offset+1]??``)))return this.readNumber(t);if(e===`.`)return this.readDotOrField(t);if(e!==void 0&&Pl(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 Sl(e,t){if(t.length===0)return[];let n=t.map(t=>({name:t,dist:Cl(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 Cl(e,t){if(e===t)return 0;let n=e.length,r=t.length;if(n===0)return r;if(r===0)return n;let i=Array(r+1),a=Array(r+1);for(let e=0;e<=r;e++)i[e]=e;for(let o=1;o<=n;o++){a[0]=o;for(let n=1;n<=r;n++){let r=e[o-1]===t[n-1]?0:1;a[n]=Math.min((a[n-1]??0)+1,(i[n]??0)+1,(i[n-1]??0)+r)}for(let e=0;e<=r;e++)i[e]=a[e]??0}return i[r]??0}function wl(e){throw Error(`unhandled node kind: ${JSON.stringify(e)}`)}const Tl=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`]]),El={left:`{{`,right:`}}`};var Dl=class{src;leftDelim;rightDelim;offset=0;line=1;column=1;mode=`text`;pending;constructor(e,t=El){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 hl(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&&Ol(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);Ol(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);Ol(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(;Ol(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`;Ol(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&&(Al(e)||kl(e)&&Al(this.src[this.offset+1]??``)||e===`.`&&Al(this.src[this.offset+1]??``)))return this.readNumber(t);if(e===`.`)return this.readDotOrField(t);if(e!==void 0&&Fl(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(Ol(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);Al(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);jl(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);Ml(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);return this.finishNumber(t,e)}}for(;kl(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);if(this.src[this.offset]===`.`)for(this.advanceBy(1);kl(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),Ol(this.src[this.offset]??``)&&this.advanceBy(1);kl(this.src[this.offset]??``);)this.advanceBy(1);return this.src[this.offset]===`i`&&this.advanceBy(1),this.finishNumber(t,e)}isHexFloatTail(e){return Al(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);Fl(this.src[this.offset]??``);)this.advanceBy(1);for(;this.src[this.offset]===`.`&&Pl(this.src[this.offset+1]??``);)for(this.advanceBy(1);Fl(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),!Pl(this.src[this.offset]??``))return this.makeToken(`Dot`,`.`,e);for(;Fl(this.src[this.offset]??``);)this.advanceBy(1);for(;this.src[this.offset]===`.`&&Pl(this.src[this.offset+1]??``);)for(this.advanceBy(1);Fl(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(;Fl(this.src[this.offset]??``);)this.advanceBy(1);let n=this.src.slice(t,this.offset),r=wl.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(kl(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);jl(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);Ml(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);Nl(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);return this.finishNumber(t,e)}}for(;Al(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);if(this.src[this.offset]===`.`)for(this.advanceBy(1);Al(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),kl(this.src[this.offset]??``)&&this.advanceBy(1);Al(this.src[this.offset]??``);)this.advanceBy(1);return this.src[this.offset]===`i`&&this.advanceBy(1),this.finishNumber(t,e)}isHexFloatTail(e){return jl(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);Il(this.src[this.offset]??``);)this.advanceBy(1);for(;this.src[this.offset]===`.`&&Fl(this.src[this.offset+1]??``);)for(this.advanceBy(1);Il(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),!Fl(this.src[this.offset]??``))return this.makeToken(`Dot`,`.`,e);for(;Il(this.src[this.offset]??``);)this.advanceBy(1);for(;this.src[this.offset]===`.`&&Fl(this.src[this.offset+1]??``);)for(this.advanceBy(1);Il(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(;Il(this.src[this.offset]??``);)this.advanceBy(1);let n=this.src.slice(t,this.offset),r=Tl.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 Dl(e){return e===` `||e===` `||e===`\r`||e===`
47
- `}function Ol(e){return e===`+`||e===`-`}function kl(e){return e>=`0`&&e<=`9`}function Al(e){return kl(e)||e>=`a`&&e<=`f`||e>=`A`&&e<=`F`}function jl(e){return e>=`0`&&e<=`7`}function Ml(e){return e===`0`||e===`1`}function Nl(e){return e>=`a`&&e<=`z`||e>=`A`&&e<=`Z`}function Pl(e){return Nl(e)||e===`_`}function Fl(e){return Pl(e)||kl(e)}let Il,Ll;function Rl(e,t){return Ll(e,t)}var zl=class e{static EMPTY=new e(new Map,void 0);#e;#t;constructor(e,t){this.#e=e,this.#t=t}static{Il=(t,n)=>new e(t,n),Ll=(e,t)=>e.#e.get(t)??(e.#t&&Ll(e.#t,t))}has(e){return Ll(this,e)!==void 0}};function Bl(e,t,n=zl.EMPTY){return new Vl(e,t,n).parseTemplate()}var Vl=class{lex;buf=[];defines=new Map;inherit;source;rangeDepth=0;constructor(e,t,n){this.source=e,this.inherit=n,this.lex=t?new El(e,t):new El(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:Wl(n)});return n}errAt(e,t,n={}){return new ml(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 ${Wl(e)}`,{found:Wl(e)})}return{root:e,defines:Il(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=Ul(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 Hl(e,t);let r=this.parseAction();r!==null&&t.push(r);continue}throw this.errAt(n,`unexpected ${Wl(n)} at top level`,{found:Wl(n)})}return Hl(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 ml(`{{${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 ml(`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:Wl(e)});return Ql(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(!Gl(e.type))throw this.errAt(e,"missing command after `|`",{expected:`command`,found:Wl(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=[Kl(this.next())];for(;this.peek().type===`Comma`;)this.next(),n.push(Kl(this.expect(`Variable`,`$variable`)));return{vars:n,isAssign:this.next().type===`Assign`}}parseCommand(){let e=this.peek().pos,t=[this.parsePrimary()];for(;Gl(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 Kl(e);case`Identifier`:return{type:`Identifier`,pos:e.pos,ident:e.value};case`String`:return{type:`String`,pos:e.pos,raw:e.value,value:Ql(e.value,e.pos,this.source)};case`Number`:return Jl(e);case`Char`:return Yl(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 ${Wl(e)}`,{expected:`command argument`,found:Wl(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 Hl(e,t){return{type:`List`,pos:e,nodes:t}}function Ul(e){return{trimLeft:e.trimLeft===!0,trimRight:e.trimRight===!0}}function Wl(e){return e.type===`EOF`?`end of input`:e.value||e.type}function Gl(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 Kl(e){return{type:`Variable`,pos:e.pos,idents:ql(e.value)}}function ql(e){let t=e.indexOf(`.`);return t===-1?[e]:[e.slice(0,t),...e.slice(t+1).split(`.`)]}function Jl(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=Xl(i);return{...s,intValue:e}}if(a){let e=Zl(i);return{...s,floatValue:e}}let c=Zl(i);return{...s,complexValue:[0,c]}}function Yl(e,t){let n=$l(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 Xl(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 Zl(e){return Number(e)}function Ql(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 ml(`bad escape sequence \\${o}`,t,{expected:`valid escape sequence`,found:`\\${o}`,source:n})}}return r}function $l(e,t,n){let r=Ql(`"${e.slice(1,-1).replace(/"/g,`\\"`)}"`,t,n);if(r.length===0)throw new ml(`empty rune literal`,t,{source:n});return r.codePointAt(0)??0}function eu(e,t){if(t(e)!==!1)for(let n of tu(e))eu(n,t)}function tu(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 Cl(e)}}const nu=Symbol(`go-template-js.MISSING`);function ru(e,t){if(e==null)return nu;if(e instanceof Map)return e.has(t)?e.get(t):nu;if(Array.isArray(e))return nu;if(typeof e==`object`){let n=e;return t in n?n[t]:nu}return nu}function iu(e,t){let n=e;for(let e of t){if(n===nu)return nu;n=ru(n,e)}return n}function au(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)=>au(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)||!au(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=>au(e[n],t[n])):!1}return!1}const ou=new WeakSet;function su(e){return ou.add(e),e}function cu(e){return ou.has(e)}function lu(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 uu(e,t){return{eq:{fn:(e,...t)=>t.some(t=>pu(e,t)),argTypes:[`comparable`]},ne:{fn:(e,t)=>!pu(e,t),argTypes:[`comparable`,`comparable`]},lt:{fn:(e,t)=>mu(e,t)<0,argTypes:[`ordered`,`ordered`]},le:{fn:(e,t)=>mu(e,t)<=0,argTypes:[`ordered`,`ordered`]},gt:{fn:(e,t)=>mu(e,t)>0,argTypes:[`ordered`,`ordered`]},ge:{fn:(e,t)=>mu(e,t)>=0,argTypes:[`ordered`,`ordered`]},len:{fn:e=>hu(e),argTypes:[`sized`]},index:{fn:(e,...t)=>{let n=e;for(let e of t)n=gu(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)=>yu(t,e),argTypes:[`stringifiable`],returnType:`string`},println:{fn:(...t)=>`${yu(t,e)}\n`,argTypes:[`stringifiable`],returnType:`string`},printf:{fn:(n,...r)=>Ou(n,r,e,t),argTypes:[`string`,`stringifiable`],returnType:`string`},toString:{fn:n=>ju(n,e,t),argTypes:[`value`],returnType:`string`},toStrings:{fn:n=>n.map(n=>ju(n,e,t)),argTypes:[`list`]},call:{fn:(e,...t)=>e(...t),argTypes:[`callable`,`value`]},html:{fn:(...t)=>Su(yu(t,e)),argTypes:[`stringifiable`],returnType:`string`},js:{fn:(...t)=>Tu(yu(t,e)),argTypes:[`stringifiable`],returnType:`string`},urlquery:{fn:(...t)=>Du(yu(t,e)),argTypes:[`stringifiable`],returnType:`string`},not:{fn:e=>!lu(e),argTypes:[`truthy`]}}}function du(){return{and:su({argTypes:[`truthy`],fn:(...e)=>{let t=!0;for(let n of e)if(t=n(),!lu(t))return t;return t}}),or:su({argTypes:[`truthy`],fn:(...e)=>{let t=!1;for(let n of e)if(t=n(),lu(t))return t;return t}})}}function fu(e,t){return{...uu(e,t),...du()}}function pu(e,t){return typeof e==`number`&&typeof t==`bigint`?BigInt(e)===t:typeof e==`bigint`&&typeof t==`number`?e===BigInt(t):au(e,t)}function mu(e,t){if(typeof e==`bigint`&&typeof t==`bigint`)return e===t?0:e<t?-1:1;if(typeof e==`bigint`||typeof t==`bigint`){let n=typeof e==`bigint`?e:BigInt(Math.trunc(Number(e))),r=typeof t==`bigint`?t:BigInt(Math.trunc(Number(t)));return n===r?0:n<r?-1:1}let n=e,r=t;return n===r?0:n<r?-1:1}function hu(e){return typeof e==`string`||Array.isArray(e)?e.length:e instanceof Map||e instanceof Set?e.size:Object.keys(e).length}function gu(e,t){if(Array.isArray(e)){let n=Number(t);if(!Number.isInteger(n))throw Error(`index: array index must be integer, got ${_u(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 ${_u(t)}`);return e[t]}throw Error(`index: cannot index ${_u(e)}`)}function _u(e){return e===null?`null`:e===void 0?`undefined`:Array.isArray(e)?`array`:e instanceof Map?`Map`:typeof e}function vu(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 yu(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+=bu(a,t),r=o}return n}function bu(e,t){return e==null?`<nil>`:typeof e==`string`?e:t(e)}const xu={"\0":`�`,'"':`&#34;`,"'":`&#39;`,"&":`&amp;`,"<":`&lt;`,">":`&gt;`};function Su(e){return e.replace(/[\0"'&<>]/g,e=>xu[e]??e)}const Cu={"\\":`\\\\`,"'":`\\'`,'"':`\\"`,"<":`\\u003C`,">":`\\u003E`,"&":`\\u0026`,"=":`\\u003D`},wu=/^[\p{L}\p{M}\p{N}\p{P}\p{S}]$/u;function Tu(e){let t=``;for(let n of e){let e=Cu[n];if(e!==void 0){t+=e;continue}let r=n.codePointAt(0);if(r<32||r>=128&&!wu.test(n)){t+=`\\u${r.toString(16).toUpperCase().padStart(4,`0`)}`;continue}t+=n}return t}const Eu=new TextEncoder;function Du(e){let t=``,n=Eu.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 Ou(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+=ku(l??``,u,d,n,r),o=c+1}return i}function ku(e,t,n,r,i){switch(e){case`s`:return typeof n==`string`?Au(t,n):Au(t,bu(n,r));case`d`:return typeof n!=`number`&&typeof n!=`bigint`?`%!${e}(${vu(n)}=${bu(n,r)})`:Au(t,String(typeof n==`bigint`?n:Math.trunc(n)));case`v`:return Au(t,ju(n,r,i));case`q`:return Au(t,JSON.stringify(bu(n,r)));case`f`:{if(typeof n!=`number`&&typeof n!=`bigint`)return`%!${e}(${vu(n)}=${bu(n,r)})`;let i=t.includes(`.`)?Number(t.split(`.`)[1]):6;return Au(t,Number(n).toFixed(i))}case`t`:return Au(t,lu(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 Au(t,r)}return typeof n!=`number`&&typeof n!=`bigint`?`%!${e}(${vu(n)}=${bu(n,r)})`:typeof n==`bigint`?Au(t,n.toString(16)):Au(t,Math.trunc(n).toString(16));default:return`%!${e}(${vu(n)}=${bu(n,r)})`}}function Au(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 ju(e,t,n){return e==null?`<nil>`:typeof e==`string`?e:n(e)?t(e):Array.isArray(e)?`[${e.map(e=>ju(e,t,n)).join(` `)}]`:e instanceof Map?Mu([...e.entries()],t,n):Nu(e)?Mu(Object.entries(e),t,n):String(e)}function Mu(e,t,n){let r=e=>ju(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 Nu(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 Pu(e){return{dot:e,root:e,parent:void 0,vars:new Map}}function Fu(e,t){return{dot:t,root:e.root,parent:e,vars:new Map}}function Iu(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 Lu(e,t,n){e.vars.set(t,n)}const Ru=new Set([`default`,`zero`,`error`]);function zu(e){if(e===void 0)return`default`;if(Ru.has(e))return e;throw Error(`EngineConfig.missingKey: expected "default" | "zero" | "error", got ${Bu(e)}`)}function Bu(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 Vu(e){if(e!==void 0){if(typeof e!=`object`||!e)throw Error(`EngineConfig.delims: expected { left, right } object, got ${Bu(e)}`);if(typeof e.left!=`string`||e.left.length===0)throw Error(`EngineConfig.delims.left: expected non-empty string, got ${Bu(e.left)}`);if(typeof e.right!=`string`||e.right.length===0)throw Error(`EngineConfig.delims.right: expected non-empty string, got ${Bu(e.right)}`);return{left:e.left,right:e.right}}}const Hu=Object.freeze({kind:`break`}),Uu=Object.freeze({kind:`continue`}),Wu={kind:`none`};let Gu;(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{Gu=(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 Ku(e){let t=new Set,n=e=>{eu(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 qu={kind:`dynamic`};function Ju(e){switch(e.type){case`String`:return{kind:`literal`,value:e.value};case`Bool`:return{kind:`literal`,value:e.value};case`Nil`:return{kind:`literal`,value:null};case`Number`:{let t=pd(e);return typeof t==`number`||typeof t==`bigint`?{kind:`literal`,value:t}:qu}case`Pipe`:{if(e.decls.length!==0||e.cmds.length!==1)return qu;let t=e.cmds[0];if(t===void 0)return qu;let n=t.args[0];return n===void 0||n.type!==`Identifier`?qu:{kind:`call`,name:n.ident,args:t.args.slice(1).map(Ju)}}default:return qu}}function Yu(e){let t=[],n=e=>{eu(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(Ju);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 Xu=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??rd,this.isT=e.isT??Zu,this.missingKey=zu(e.missingKey),this.delims=Vu(e.delims),this.funcs={...fu(this.toString,this.isT),...e.funcs??{}}}parse(e,t){let n=Bl(e,this.delims,t);return Gu(n.source,e=>this.evalParsed(n,e),n.defines,Ku(n),Yu(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=Pu(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 Hu;case`Continue`:throw Uu;case`Template`:this.evalTemplateInvoke(e,t,n);return;case`Block`:this.evalBlock(e,t,n);return;case`Pipe`:case`Command`:case`Identifier`:case`Field`:case`Variable`:case`Chain`:case`Dot`:case`Nil`:case`Bool`:case`Number`:case`String`:throw new hl(`unexpected ${e.type} at statement position`,e.pos,{source:n.source});default:Cl(e)}}evalIf(e,t,n){lu(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(lu(r)){let i=Fu(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=ud(r);try{if(a.length===0){e.elseList&&this.evalList(e.elseList,t,n);return}for(let[r,o]of a){let a=Fu(t,o);if(i.length===1)Lu(a,i[0]?.idents[0]??`$`,o);else if(i.length>=2){let e=i[0]?.idents[0]??`$`,t=i[1]?.idents[0]??`$`;Lu(a,e,r),Lu(a,t,o)}try{this.evalList(e.list,a,n)}catch(e){if(e===Uu)continue;throw e}}}catch(e){if(e===Hu)return;throw e}}evalTemplateInvoke(e,t,n){let r=Rl(n.defines,e.name);if(!r)throw new hl(`template ${JSON.stringify(e.name)} is not defined`,e.pos,{source:n.source});let i=Fu(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=Fu(t,e.pipe?this.evalPipe(e.pipe,t,n):t.dot),i=Rl(n.defines,e.name)??{list:e.list,source:n.source};this.evalList(i.list,r,{out:n.out,defines:n.defines,source:i.source})}evalAction(e,t,n){return this.evalPipe(e.pipe,t,n)}evalPipe(e,t,n){if(e.cmds.length===0)throw new hl(`empty pipeline`,e.pos,{source:n.source});let r=this.evalCommand(e.cmds[0],t,n,Wu);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)Lu(t,n.idents[0]??`$`,r);return r}evalPipeWithoutDecls(e,t,n){let r={type:`Pipe`,pos:e.pos,decls:[],isAssign:!1,cmds:e.cmds};return this.evalPipe(r,t,n)}evalCommand(e,t,n,r){if(e.args.length===0)throw new hl(`empty command`,e.pos,{source:n.source});let i=e.args[0];if(i.type!==`Identifier`){if(e.args.length>1)throw new hl(`cannot apply arguments to a ${i.type} primary; only functions take arguments`,e.pos,{source:n.source});return this.evalPrimary(i,t,n)}let a=this.funcs[i.ident];if(!a)throw new gl(i.ident,i.pos,{source:n.source,available:Object.keys(this.funcs)});let o=e.args.slice(1),s=cu(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)}$u(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 _l?new _l(t.funcName,t.argIndex,t.expected,t.receivedSummary,e.pos,{source:n.source}):t instanceof yl?new yl(t.message,e.pos,{source:n.source}):t}}evalPrimary(e,t,n){switch(e.type){case`Dot`:return t.dot;case`Nil`:return null;case`Bool`:return e.value;case`Number`:return pd(e);case`String`:return e.value;case`Field`:return this.resolveFieldChain(t.dot,e.idents,e.pos,n);case`Variable`:return this.resolveVariable(e.idents,t,e.pos,n);case`Identifier`:{let t=this.funcs[e.ident];if(!t)throw new gl(e.ident,e.pos,{source:n.source,available:Object.keys(this.funcs)});return $u(e.ident,t.argTypes,[],e.pos,n.source,this.toString,t.argTypePattern,this.fromString,this.isT),t.fn()}case`Chain`:return this.resolveFieldChain(this.evalPrimary(e.node,t,n),e.fields,e.pos,n);case`Pipe`:return this.evalPipe(e,t,n);default:throw new hl(`cannot evaluate ${e.type} as a value`,e.pos,{source:n.source})}}resolveFieldChain(e,t,n,r){let i=iu(e,t);if(i!==nu)return i;if(this.missingKey===`error`)throw new vl(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=Iu(t,i);if(!a.found)throw new hl(`undefined variable ${i}`,n,{source:r.source});let o=e.slice(1);return o.length===0?a.value:this.resolveFieldChain(a.value,o,n,r)}emitFromValue(e,t){if(e==null){t.out.push(this.fromString(`<no value>`));return}if(typeof e==`string`){t.out.push(this.fromString(e));return}if(typeof e==`number`||typeof e==`boolean`||typeof e==`bigint`){t.out.push(this.fromString(String(e)));return}if(this.isT(e)){t.out.push(e);return}t.out.push(this.fromString(ju(e,this.toString,this.isT)))}};const Zu=e=>typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Map);function Qu(e){return new Xu(e)}function $u(e,t,n,r,i,a=rd,o,s=nd,c=Zu){let l=ed(t,o),u=-1,d=-1;for(let t=0;t<n.length;t++){let o=l(t),f=n[t];if(!td(o,f,a,c))throw new _l(e,t+1,cd(o),ld(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(!ad(n[u],f))throw new _l(e,t+1,`${cd(`ordered`)} of the same kind as ${ld(n[u])}`,ld(f),r,{source:i})}if(o===`comparable`){if(d===-1)d=t;else if(!od(n[d],f))throw new _l(e,t+1,`${cd(`comparable`)} of the same kind as ${ld(n[d])}`,ld(f),r,{source:i})}}}function ed(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 td(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 Nu(t);case`sized`:return typeof t==`string`||Array.isArray(t)||t instanceof Map||t instanceof Set||Nu(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||Nu(t);case`callable`:return typeof t==`function`;case`collection`:return typeof t==`string`||Array.isArray(t)||t instanceof Map||Nu(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 id(t);default:throw Error(`invalid ArgType: ${String(e)}`)}}function nd(e){return e}function rd(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 _l(`<engine.toString>`,1,`string (or a consumer-supplied toString that flattens T)`,ld(e),{line:0,column:0,offset:0})}function id(e){try{return JSON.stringify(e)!==void 0}catch{return!1}}function ad(e,t){return typeof e==typeof t||typeof e==`number`&&typeof t==`bigint`||typeof e==`bigint`&&typeof t==`number`}function od(e,t){let n=sd(e),r=sd(t);return n===`nil`||r===`nil`?!0:n===r}function sd(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 cd(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 ld(e){return e===null?`null`:e===void 0?`undefined`:Array.isArray(e)?`array`:e instanceof Map?`Map`:typeof e}function ud(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?dd([...e.entries()]):e instanceof Set?[...e.values()].map((e,t)=>[t,e]):typeof e==`object`?dd(Object.entries(e)):[]}function dd(e){return[...e].sort((e,t)=>fd(e[0],t[0]))}function fd(e,t){if((typeof e==`number`||typeof e==`bigint`)&&(typeof t==`number`||typeof t==`bigint`)){let n=typeof e==`bigint`?Number(e):e,r=typeof t==`bigint`?Number(t):t;return n===r?0:n<r?-1:1}let n=String(e),r=String(t);return n===r?0:n<r?-1:1}function pd(e){if(e.intValue!==void 0){let t=e.intValue;return t>=BigInt(-(2**53-1))&&t<=BigInt(2**53-1)?Number(t):t}if(e.floatValue!==void 0)return e.floatValue;if(e.complexValue!==void 0)return e.complexValue;throw Error(`internal: NumberNode has none of intValue/floatValue/complexValue — parser invariant violated`)}function md(e){if(!/^[+-]?\d+$/.test(e))return 0;let t=Number.parseInt(e,10);return Number.isSafeInteger(t)?t:0}function hd(e){if(typeof e==`number`)return e;if(typeof e==`bigint`)return Number(e);if(typeof e==`string`){let t=Number.parseFloat(e);return Number.isNaN(t)?0:t}return typeof e==`boolean`?+!!e:0}function gd(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 _d(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=gd(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 vd(e){if(typeof e==`bigint`)return e;if(typeof e==`number`)return BigInt(Math.trunc(e));if(typeof e==`string`){let t=gd(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 yd(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 bd(e){return JSON.stringify(e)??`null`}function xd(){return{atoi:{fn:e=>md(e),argTypes:[`string`],returnType:`int`},int:{fn:e=>_d(e),argTypes:[`value`],returnType:`int`},int64:{fn:e=>vd(e),argTypes:[`value`]},float64:{fn:e=>hd(e),argTypes:[`value`],returnType:`float`},toDecimal:{fn:e=>yd(e),argTypes:[`string`],returnType:`int`},toRawJson:{fn:e=>bd(e),argTypes:[`serializable`],returnType:`string`}}}const Sd={h:36e11,m:6e10,s:1e9,ms:1e6,us:1e3,µs:1e3,ns:1};function Cd(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*Sd[a],n=n.slice(e[0].length)}return t?-r:r}function wd(e){if(e===0)return`0s`;let t=!1,n=e;n<0&&(t=!0,n=-n);let r;return r=n<Sd.us?`${Math.floor(n)}ns`:n<Sd.ms?Td(n,Sd.us,3,`µs`):n<Sd.s?Td(n,Sd.ms,6,`ms`):Ed(n),t?`-${r}`:r}function Td(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 Ed(e){let t=Math.floor(e/Sd.h);e-=t*Sd.h;let n=Math.floor(e/Sd.m);e-=n*Sd.m;let r=Math.floor(e/Sd.s),i=e-r*Sd.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 Dd(e){return e*Sd.s}function Od(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 kd(e,t){let n=t().getTime()-Od(e).getTime();return wd(Math.round(n/1e3)*1e9)}const Ad=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],jd=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],Md=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],Nd=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`];function Pd(e){return e<10?`0${e}`:String(e)}function Fd(e){return e<10?`00${e}`:e<100?`0${e}`:String(e)}function Id(e){return e<10?` ${e}`:String(e)}function Ld(e){let t=e>=0?`+`:`-`,n=Math.abs(e);return`${t}${Pd(Math.floor(n/60))}${Pd(n%60)}`}function Rd(e){let t=e>=0?`+`:`-`,n=Math.abs(e);return`${t}${Pd(Math.floor(n/60))}:${Pd(n%60)}`}function zd(e){return`${e>=0?`+`:`-`}${Pd(Math.floor(Math.abs(e)/60))}`}function Bd(e){return e===0?`Z`:Ld(e)}function Vd(e){return e===0?`Z`:Rd(e)}function Hd(e){return e===0?`Z`:zd(e)}function Ud(e,t,n){let r=e*1e6,i=String(r).padStart(9,`0`).slice(0,t);return n?i.replace(/0+$/,``):i}const Wd=[[`.000000000`,e=>`.${Ud(e.ms,9,!1)}`],[`.999999999`,e=>{let t=Ud(e.ms,9,!0);return t?`.${t}`:``}],[`.000000`,e=>`.${Ud(e.ms,6,!1)}`],[`.999999`,e=>{let t=Ud(e.ms,6,!0);return t?`.${t}`:``}],[`.000`,e=>`.${Fd(e.ms)}`],[`.999`,e=>{let t=Fd(e.ms).replace(/0+$/,``);return t?`.${t}`:``}],[`January`,e=>Ad[e.month-1]??`January`],[`Monday`,e=>Md[e.weekday]??`Monday`],[`Z07:00`,e=>Vd(e.offsetMinutes)],[`-07:00`,e=>Rd(e.offsetMinutes)],[`Z0700`,e=>Bd(e.offsetMinutes)],[`-0700`,e=>Ld(e.offsetMinutes)],[`2006`,e=>String(e.year)],[`Jan`,e=>jd[e.month-1]??`Jan`],[`Mon`,e=>Nd[e.weekday]??`Mon`],[`MST`,e=>e.tzAbbr],[`-07`,e=>zd(e.offsetMinutes)],[`Z07`,e=>Hd(e.offsetMinutes)],[`15`,e=>Pd(e.hour)],[`01`,e=>Pd(e.month)],[`02`,e=>Pd(e.day)],[`_2`,e=>Id(e.day)],[`03`,e=>Pd(e.hour12)],[`04`,e=>Pd(e.minute)],[`05`,e=>Pd(e.second)],[`06`,e=>Pd(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 Gd(e,t){let n=``,r=0;for(;r<e.length;){let i=!1;for(let[a,o]of Wd)if(e.startsWith(a,r)){n+=o(t),r+=a.length,i=!0;break}i||(n+=e[r++])}return n}const Kd={year:`numeric`,month:`2-digit`,day:`2-digit`,weekday:`long`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hour12:!1};function qd(e){let t=new Map;for(let n of e)t.set(n.type,n.value);return t}const Jd=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`];function Yd(e,t){let n;try{new Intl.DateTimeFormat(`en-US`,{timeZone:t}),n=t}catch{n=`UTC`}let r=qd(new Intl.DateTimeFormat(`en-US`,{...Kd,timeZone:n}).formatToParts(e)),i=parseInt(r.get(`hour`)??`0`,10)%24,a=qd(new Intl.DateTimeFormat(`en-US`,{timeZone:n,timeZoneName:`short`}).formatToParts(e)).get(`timeZoneName`)??n,o=Xd(qd(new Intl.DateTimeFormat(`en-US`,{timeZone:n,timeZoneName:`shortOffset`}).formatToParts(e)).get(`timeZoneName`)??`GMT`),s=Jd.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 Xd(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 Zd(){return Intl.DateTimeFormat().resolvedOptions().timeZone}function Qd(e,t){return Gd(e,Yd(Od(t),Zd()))}function $d(e,t,n){return Gd(e,Yd(Od(t),n))}function ef(e,t){let n=Od(t),r=Cd(e);return Number.isNaN(r)?n:new Date(n.getTime()+r/1e6)}function tf(e){if(typeof e==`string`){let t=parseInt(e,10);return Number.isNaN(t)?`0s`:wd(Dd(t))}return typeof e==`bigint`?wd(Dd(Number(e))):typeof e==`number`?wd(Dd(e)):`0s`}const nf=36e11*24*365,rf=36e11*24*30,af=36e11*24,of=36e11,sf=6e10,cf=1e9;function lf(e){let t=Cd(String(e));if(Number.isNaN(t))return`0s`;let n=Math.abs(t);return n>nf?`${Math.floor(n/nf)}y`:n>rf?`${Math.floor(n/rf)}mo`:n>af?`${Math.floor(n/af)}d`:n>of?`${Math.floor(n/of)}h`:n>sf?`${Math.floor(n/sf)}m`:n>cf?`${Math.floor(n/cf)}s`:`0s`}function uf(e){let t=Yd(Od(e),Zd());return`${t.year}-${String(t.month).padStart(2,`0`)}-${String(t.day).padStart(2,`0`)}`}function df(e,t){let n=Yd(Od(e),t);return`${n.year}-${String(n.month).padStart(2,`0`)}-${String(n.day).padStart(2,`0`)}`}function ff(e){return e()}const pf=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],mf=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`];function hf(){return{year:2e3,month:1,day:1,hour:0,minute:0,second:0,ms:0,offsetMinutes:0,isPM:!1,hour12:!1}}function gf(e,t,n){return[e.slice(t,t+n),t+n]}function _f(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 vf(e,t){for(let[n,r]of pf.entries())if(e.startsWith(r,t))return[n+1,t+r.length];throw Error(`sprig toDate: expected month name at pos ${t}`)}function yf(e,t){for(let[n,r]of mf.entries())if(e.startsWith(r,t))return[n+1,t+r.length];throw Error(`sprig toDate: expected short month name at pos ${t}`)}function bf(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 xf(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 Sf(e,t){if(e[t]===` `){let[n,r]=_f(e,t+1,1,1);return[n,r]}return _f(e,t,1,2)}function Cf(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]=_f(e,i,2,2);i=o;let s=0;if(n&&e[i]===`:`){let[t,n]=_f(e,i+1,2,2);s=t,i=n}else if(!n){let[t,n]=_f(e,i,2,2);s=t,i=n}return[r*(a*60+s),i]}function wf(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]=_f(e,t+1,2,2);return[n*r*60,i]}return Cf(e,t,n)}function Tf(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 Ef(e,t,n){let[r,i]=gf(e,t,n),a=parseInt(r.padEnd(9,`0`),10);return[Math.round(a/1e6),i]}function Df(e,t,n,r){let i={...r};switch(e){case`January`:{let[e,r]=vf(t,n);return i.month=e,[r,i]}case`Monday`:return[bf(t,n),i];case`Jan`:{let[e,r]=yf(t,n);return i.month=e,[r,i]}case`Mon`:return[xf(t,n),i];case`2006`:{let[e,r]=_f(t,n,4,4);return i.year=e,[r,i]}case`06`:{let[e,r]=_f(t,n,2,2);return i.year=e<70?2e3+e:1900+e,[r,i]}case`01`:{let[e,r]=_f(t,n,2,2);return i.month=e,[r,i]}case`1`:{let[e,r]=_f(t,n,1,2);return i.month=e,[r,i]}case`_2`:{let[e,r]=Sf(t,n);return i.day=e,[r,i]}case`02`:{let[e,r]=_f(t,n,2,2);return i.day=e,[r,i]}case`2`:{let[e,r]=_f(t,n,1,2);return i.day=e,[r,i]}case`15`:{let[e,r]=_f(t,n,2,2);return i.hour=e,[r,i]}case`03`:{let[e,r]=_f(t,n,2,2);return i.hour=e,i.hour12=!0,[r,i]}case`3`:{let[e,r]=_f(t,n,1,2);return i.hour=e,i.hour12=!0,[r,i]}case`04`:{let[e,r]=_f(t,n,2,2);return i.minute=e,[r,i]}case`4`:{let[e,r]=_f(t,n,1,2);return i.minute=e,[r,i]}case`05`:{let[e,r]=_f(t,n,2,2);return i.second=e,[r,i]}case`5`:{let[e,r]=_f(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[Tf(t,n),i];case`-0700`:{let[e,r]=Cf(t,n,!1);return i.offsetMinutes=e,[r,i]}case`-07:00`:{let[e,r]=Cf(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]=_f(t,n+1,2,2);return i.offsetMinutes=e*r*60,[a,i]}case`Z0700`:{let[e,r]=wf(t,n,!1,!1);return i.offsetMinutes=e,[r,i]}case`Z07:00`:{let[e,r]=wf(t,n,!0,!1);return i.offsetMinutes=e,[r,i]}case`Z07`:{let[e,r]=wf(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]=Ef(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]=Ef(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]=Ef(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 Of=`.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 kf(e,t){let n=0,r=0,i=hf();for(;n<e.length;){let a=!1;for(let o of Of)if(e.startsWith(o,n)){let[e,s]=Df(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 Af(e,t){return kf(e,t)}function jf(e){return String(Math.floor(Od(e).getTime()/1e3))}function Mf(e=()=>new Date){return{now:{fn:()=>ff(e),argTypes:[]},date:{fn:(e,t)=>Qd(e,t),argTypes:[`string`,`value`]},dateInZone:{fn:(e,t,n)=>$d(e,t,n),argTypes:[`string`,`value`,`string`]},dateModify:{fn:(e,t)=>ef(e,t),argTypes:[`string`,`value`]},htmlDate:{fn:e=>uf(e),argTypes:[`value`]},htmlDateInZone:{fn:(e,t)=>df(e,t),argTypes:[`value`,`string`]},duration:{fn:e=>tf(e),argTypes:[`value`]},durationRound:{fn:e=>lf(e),argTypes:[`value`]},toDate:{fn:(e,t)=>Af(e,t),argTypes:[`string`,`string`]},ago:{fn:t=>kd(t,e),argTypes:[`value`]},unixEpoch:{fn:e=>jf(e),argTypes:[`value`]}}}function Nf(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 Pf(...e){for(let t of e)if(!Nf(t))return t}function Ff(e,t){return Nf(t)?e:t}function If(e){return JSON.parse(e)}function Lf(e,t,n){return lu(n)?e:t}function Rf(e){return JSON.stringify(e)??`null`}function zf(e){return JSON.stringify(e,null,2)??`null`}function Bf(){return{default:{fn:(e,t)=>Ff(e,t),argTypes:[`value`,`truthy`]},empty:{fn:e=>Nf(e),argTypes:[`truthy`]},coalesce:{fn:(...e)=>Pf(...e),argTypes:[`truthy`]},ternary:{fn:(e,t,n)=>Lf(e,t,n),argTypes:[`value`,`value`,`truthy`]},fromJson:{fn:e=>If(e),argTypes:[`string`]},toJson:{fn:e=>Rf(e),argTypes:[`serializable`],returnType:`string`},toPrettyJson:{fn:e=>zf(e),argTypes:[`serializable`],returnType:`string`}}}function Vf(...e){let t={};for(let n=0;n<e.length;n+=2)t[e[n]]=e[n+1];return t}function Hf(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 Vf(...t)}function Uf(e,t){return e[t]}function Wf(e,t){return t in e}function Gf(e){return Object.keys(e)}function Kf(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 qf(e,...t){let n={...e};for(let e of t)Object.assign(n,e);return n}function Jf(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 Yf(e,...t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function Xf(e,...t){let n=[];for(let r of t)e in r&&n.push(r[e]);return n}function Zf(e,t,n){return e[t]=n,e}function Qf(e,t){return delete e[t],e}function $f(e){return Object.values(e)}function ep(){return{dict:{fn:(...e)=>Vf(...e),argTypes:[`string`,`value`],argTypePattern:`alternating`},get:{fn:(e,t)=>Uf(e,t),argTypes:[`dict`,`string`]},set:{fn:(e,t,n)=>Zf(e,t,n),argTypes:[`dict`,`string`,`value`]},unset:{fn:(e,t)=>Qf(e,t),argTypes:[`dict`,`string`]},keys:{fn:e=>Gf(e),argTypes:[`dict`]},values:{fn:e=>$f(e),argTypes:[`dict`]},pluck:{fn:(e,...t)=>Xf(e,...t),argTypes:[`string`,`dict`]},pick:{fn:(e,...t)=>Yf(e,...t),argTypes:[`dict`,`string`]},omit:{fn:(e,...t)=>Jf(e,...t),argTypes:[`dict`,`string`]},hasKey:{fn:(e,t)=>Wf(e,t),argTypes:[`dict`,`string`]},merge:{fn:(e,...t)=>Kf(e,...t),argTypes:[`dict`]},mergeOverwrite:{fn:(e,...t)=>qf(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 tp(...e){for(let t of e)if(Nf(t))return!1;return!0}function np(...e){for(let t of e)if(!Nf(t))return!0;return!1}function rp(e,t){return[...e,t]}function ip(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 ap(e){return e.filter(e=>!Nf(e))}function op(...e){let t=[];for(let n of e)t.push(...n);return t}const sp={line:0,column:0,offset:0};function cp(e,t,n,r){return new _l(e,t,n,r,sp)}function lp(...e){if(e.length<3)throw cp(`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(!dp(t))throw cp(`dig`,e.length-1,`dict`,fp(t));for(let e=0;e<r.length;e++)if(typeof r[e]!=`string`)throw cp(`dig`,e,`string`,fp(r[e]));return up(t,n,r,e.length)}function up(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(!dp(a))throw cp(`dig`,r-1,`dict at intermediate key`,fp(a));return up(a,t,n.slice(1),r)}function dp(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Map)&&!(e instanceof Set)}function fp(e){return e===null?`null`:Array.isArray(e)?`array`:e instanceof Map?`Map`:e instanceof Set?`Set`:typeof e}function pp(e){return e[0]}function mp(e,t){return t.some(t=>au(t,e))}function hp(e){return e.slice(0,-1)}function gp(e){return e[e.length-1]}function _p(e){return Array.isArray(e)||typeof e==`string`?e.length:e instanceof Map||e instanceof Set?e.size:Object.keys(e).length}function vp(...e){return e}function yp(e,t){return[t,...e]}function bp(e){return e.slice(1)}function xp(e){return[...e].reverse()}function Sp(e,t,n){let r=t===void 0?0:t,i=n===void 0?e.length:n;return e.slice(r,i)}function Cp(e){let t=[];for(let n of e)n!=null&&t.push(String(n));return t.sort()}function wp(e){let t=[];for(let n of e)t.some(e=>au(e,n))||t.push(n);return t}function Tp(e,...t){return e.filter(e=>!t.some(t=>au(t,e)))}function Ep(){return{list:{fn:(...e)=>vp(...e),argTypes:[`value`]},first:{fn:e=>pp(e),argTypes:[`list`]},last:{fn:e=>gp(e),argTypes:[`list`]},rest:{fn:e=>bp(e),argTypes:[`list`]},initial:{fn:e=>hp(e),argTypes:[`list`]},len:{fn:e=>_p(e),argTypes:[`sized`]},reverse:{fn:e=>xp(e),argTypes:[`list`]},uniq:{fn:e=>wp(e),argTypes:[`list`]},without:{fn:(e,...t)=>Tp(e,...t),argTypes:[`list`,`value`]},has:{fn:(e,t)=>mp(e,t),argTypes:[`value`,`list`]},compact:{fn:e=>ap(e),argTypes:[`list`]},slice:{fn:(e,t,n)=>Sp(e,t,n),argTypes:[`list`,`int`,`int`]},concat:{fn:(...e)=>op(...e),argTypes:[`list`]},chunk:{fn:(e,t)=>ip(e,t),argTypes:[`int`,`list`]},prepend:{fn:(e,t)=>yp(e,t),argTypes:[`list`,`value`]},append:{fn:(e,t)=>rp(e,t),argTypes:[`list`,`value`]},sortAlpha:{fn:e=>Cp(e),argTypes:[`list`],returnType:`list`},push:{fn:(e,t)=>rp(e,t),argTypes:[`list`,`value`]},tuple:{fn:(...e)=>vp(...e),argTypes:[`value`]},dig:{fn:(...e)=>lp(...e),argTypes:[`value`]},all:{fn:(...e)=>tp(...e),argTypes:[`truthy`],returnType:`bool`},any:{fn:(...e)=>np(...e),argTypes:[`truthy`],returnType:`bool`}}}function Dp(...e){return e.reduce((e,t)=>e+t,0)}function Op(e){return e+1}function kp(e){return e+1}function Ap(...e){return e.reduce((e,t)=>e+t,0)}function jp(e){return Math.ceil(e)}function Mp(e,t){return Math.trunc(e/t)}function Np(e,t){return e/t}function Pp(e){return Math.floor(e)}function Fp(...e){return e.reduce((e,t)=>t>e?t:e,-1/0)}function Ip(...e){return e.reduce((e,t)=>Math.max(e,t),-1/0)}function Lp(...e){return e.reduce((e,t)=>t<e?t:e,1/0)}function Rp(...e){return e.reduce((e,t)=>Math.min(e,t),1/0)}function zp(e,t){return e%t}function Bp(...e){return e.reduce((e,t)=>e*t,1)}function Vp(...e){return e.reduce((e,t)=>e*t,1)}function Hp(e,t=0){let n=10**t;return Math.sign(e)*Math.round(Math.abs(e)*n)/n}function Up(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 Wp(...e){let t=1;switch(e.length){case 0:return``;case 1:{let n=e[0];return n<1&&(t=-1),Up(1,n+t,t).join(` `)}case 2:{let t=e[0],n=e[1],r=n<t?-1:1;return Up(t,n+r,r).join(` `)}case 3:{let n=e[0],r=e[1],i=e[2];return i<n&&(t=-1,r>0)?``:Up(n,i+t,r).join(` `)}default:return``}}function Gp(e,t){return e-t}function Kp(e,t){return e-t}function qp(e){return Up(0,e,e<0?-1:1)}function Jp(){return{add:{fn:(...e)=>Dp(...e),argTypes:[`int`]},sub:{fn:(e,t)=>Gp(e,t),argTypes:[`int`,`int`]},mul:{fn:(...e)=>Bp(...e),argTypes:[`int`]},div:{fn:(e,t)=>Mp(e,t),argTypes:[`int`,`int`]},mod:{fn:(e,t)=>zp(e,t),argTypes:[`int`,`int`]},min:{fn:(...e)=>Lp(...e),argTypes:[`int`]},max:{fn:(...e)=>Fp(...e),argTypes:[`int`]},floor:{fn:e=>Pp(e),argTypes:[`float`]},ceil:{fn:e=>jp(e),argTypes:[`float`]},round:{fn:(e,t)=>Hp(e,t),argTypes:[`float`,`int`]},addf:{fn:(...e)=>Ap(...e),argTypes:[`float`]},subf:{fn:(e,t)=>Kp(e,t),argTypes:[`float`,`float`]},mulf:{fn:(...e)=>Vp(...e),argTypes:[`float`]},divf:{fn:(e,t)=>Np(e,t),argTypes:[`float`,`float`]},add1:{fn:e=>Op(e),argTypes:[`int`]},add1f:{fn:e=>kp(e),argTypes:[`float`]},maxf:{fn:(...e)=>Ip(...e),argTypes:[`float`]},minf:{fn:(...e)=>Rp(...e),argTypes:[`float`]},biggest:{fn:(...e)=>Fp(...e),argTypes:[`int`]},seq:{fn:(...e)=>Wp(...e),argTypes:[`int`],returnType:`string`},until:{fn:e=>qp(e),argTypes:[`int`],returnType:`list`},untilStep:{fn:(e,t,n)=>Up(e,t,n),argTypes:[`int`,`int`,`int`],returnType:`list`}}}Array.from({length:95},(e,t)=>String.fromCharCode(t+32)).join(``);function Yp(e,t){return t.length<=e||e<4?t:`${t.slice(0,e-3)}...`}function Xp(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},Zp=/^[-_\s]$/,Qp=/^\p{P}$/u,$p=/^\p{L}$/u,em=/^\p{Lu}$/u,tm=/^\p{N}$/u;function nm(e){return e!==void 0&&Zp.test(e)}function rm(e){return e!==void 0&&$p.test(e)}function im(e){return e!==void 0&&em.test(e)}function am(e){return e!==void 0&&tm.test(e)}function om(e){return e!==void 0&&Qp.test(e)}function sm(e,t){if(t>=e.length)return{word:{wt:q.Invalid,text:``},next:t};let n=e[t],r=t+1;if(nm(n)){for(;r<e.length&&nm(e[r]);)r++;return{word:{wt:q.Connector,text:e.slice(t,r).join(``)},next:r}}if(om(n)){for(;r<e.length&&om(e[r]);)r++;return{word:{wt:q.Punct,text:e.slice(t,r).join(``)},next:r}}if(im(n)){if(r>=e.length)return{word:{wt:q.UpperCase,text:n},next:r};if(im(e[r])){let n=r;for(;n<e.length&&im(e[n]);)n++;return n<e.length&&rm(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(rm(e[r])){let n=r+1;for(;n<e.length&&rm(e[n])&&!im(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(rm(n)){for(;r<e.length&&rm(e[r])&&!im(e[r]);)r++;return{word:{wt:q.Alphabet,text:e.slice(t,r).join(``)},next:r}}if(am(n)){for(;r<e.length&&am(e[r]);)r++;return{word:{wt:q.Number,text:e.slice(t,r).join(``)},next:r}}for(;r<e.length&&!nm(e[r])&&!rm(e[r])&&!am(e[r])&&!om(e[r]);)r++;return{word:{wt:q.Other,text:e.slice(t,r).join(``)},next:r}}function cm(e,t,n){if(t.wt!==q.UpperCase&&t.wt!==q.Connector){e.push(t.text);return}for(let r of t.text)nm(r)?e.push(n):im(r)?e.push(r.toLowerCase()):e.push(r)}function lm(e,t){if(e.length===0)return``;let n=Array.from(e),r=[],{word:i,next:a}=sm(n,0);for(;a<n.length;){i.wt!==q.Connector&&cm(r,i,t);let e=i,o=i;if({word:i,next:a}=sm(n,a),e.wt===q.Number){for(;i.wt===q.Alphabet||i.wt===q.Number;)cm(r,i,t),{word:i,next:a}=sm(n,a);i.wt!==q.Invalid&&i.wt!==q.Punct&&i.wt!==q.Connector&&r.push(t);continue}if(e.wt===q.Connector){cm(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}=sm(n,a),i.wt!==q.Alphabet){cm(r,s,t),i.wt!==q.Connector&&i.wt!==q.Punct&&r.push(t);continue}for(r.push(t),cm(r,s,t);i.wt===q.Alphabet||i.wt===q.Number;)cm(r,i,t),{word:i,next:a}=sm(n,a);i.wt!==q.Invalid&&i.wt!==q.Connector&&i.wt!==q.Punct&&r.push(t)}return cm(r,i,t),r.join(``).toLowerCase()}function um(e){if(e.length===0)return``;let t=Array.from(e),n=[],r=0,i=``;for(;r<t.length;){if(i=t[r],r++,!nm(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++,nm(i)&&nm(e)){n.push(e);continue}nm(e)?i=i.toUpperCase():(i=i.toLowerCase(),n.push(e))}return n.push(i),n.join(``)}function dm(e){return um(e)}function fm(...e){return e.join(` `)}function pm(e,t){return t.includes(e)}function mm(e,t){return t.startsWith(e)}function hm(e,t){return t.endsWith(e)}function gm(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 Ol(e){return e===` `||e===` `||e===`\r`||e===`
47
+ `}function kl(e){return e===`+`||e===`-`}function Al(e){return e>=`0`&&e<=`9`}function jl(e){return Al(e)||e>=`a`&&e<=`f`||e>=`A`&&e<=`F`}function Ml(e){return e>=`0`&&e<=`7`}function Nl(e){return e===`0`||e===`1`}function Pl(e){return e>=`a`&&e<=`z`||e>=`A`&&e<=`Z`}function Fl(e){return Pl(e)||e===`_`}function Il(e){return Fl(e)||Al(e)}let Ll,Rl;function zl(e,t){return Rl(e,t)}var Bl=class e{static EMPTY=new e(new Map,void 0);#e;#t;constructor(e,t){this.#e=e,this.#t=t}static{Ll=(t,n)=>new e(t,n),Rl=(e,t)=>e.#e.get(t)??(e.#t&&Rl(e.#t,t))}has(e){return Rl(this,e)!==void 0}};function Vl(e,t,n=Bl.EMPTY){return new Hl(e,t,n).parseTemplate()}var Hl=class{lex;buf=[];defines=new Map;inherit;source;rangeDepth=0;constructor(e,t,n){this.source=e,this.inherit=n,this.lex=t?new Dl(e,t):new Dl(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:Gl(n)});return n}errAt(e,t,n={}){return new hl(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 ${Gl(e)}`,{found:Gl(e)})}return{root:e,defines:Ll(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=Wl(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 Ul(e,t);let r=this.parseAction();r!==null&&t.push(r);continue}throw this.errAt(n,`unexpected ${Gl(n)} at top level`,{found:Gl(n)})}return Ul(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 hl(`{{${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 hl(`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:Gl(e)});return $l(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(!Kl(e.type))throw this.errAt(e,"missing command after `|`",{expected:`command`,found:Gl(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=[ql(this.next())];for(;this.peek().type===`Comma`;)this.next(),n.push(ql(this.expect(`Variable`,`$variable`)));return{vars:n,isAssign:this.next().type===`Assign`}}parseCommand(){let e=this.peek().pos,t=[this.parsePrimary()];for(;Kl(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 ql(e);case`Identifier`:return{type:`Identifier`,pos:e.pos,ident:e.value};case`String`:return{type:`String`,pos:e.pos,raw:e.value,value:$l(e.value,e.pos,this.source)};case`Number`:return Yl(e);case`Char`:return Xl(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 ${Gl(e)}`,{expected:`command argument`,found:Gl(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 Ul(e,t){return{type:`List`,pos:e,nodes:t}}function Wl(e){return{trimLeft:e.trimLeft===!0,trimRight:e.trimRight===!0}}function Gl(e){return e.type===`EOF`?`end of input`:e.value||e.type}function Kl(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 ql(e){return{type:`Variable`,pos:e.pos,idents:Jl(e.value)}}function Jl(e){let t=e.indexOf(`.`);return t===-1?[e]:[e.slice(0,t),...e.slice(t+1).split(`.`)]}function Yl(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=Zl(i);return{...s,intValue:e}}if(a){let e=Ql(i);return{...s,floatValue:e}}let c=Ql(i);return{...s,complexValue:[0,c]}}function Xl(e,t){let n=eu(e.value,e.pos,t);return{type:`Number`,pos:e.pos,text:e.value,isInt:!0,isUint:!1,isFloat:!1,isComplex:!1,intValue:BigInt(n)}}function Zl(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 Ql(e){return Number(e)}function $l(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 hl(`bad escape sequence \\${o}`,t,{expected:`valid escape sequence`,found:`\\${o}`,source:n})}}return r}function eu(e,t,n){let r=$l(`"${e.slice(1,-1).replace(/"/g,`\\"`)}"`,t,n);if(r.length===0)throw new hl(`empty rune literal`,t,{source:n});return r.codePointAt(0)??0}function tu(e,t){if(t(e)!==!1)for(let n of nu(e))tu(n,t)}function nu(e){switch(e.type){case`Text`:case`Comment`:case`Dot`:case`Nil`:case`Bool`:case`Number`:case`String`:case`Identifier`:case`Field`:case`Variable`:case`Break`:case`Continue`:return[];case`List`:return e.nodes;case`Chain`:return[e.node];case`Command`:return e.args;case`Pipe`:return[...e.decls,...e.cmds];case`Action`:return[e.pipe];case`If`:case`Range`:case`With`:return e.elseList?[e.pipe,e.list,e.elseList]:[e.pipe,e.list];case`Template`:return e.pipe?[e.pipe]:[];case`Block`:return e.pipe?[e.pipe,e.list]:[e.list];default:return wl(e)}}const ru=Symbol(`go-template-js.MISSING`);function iu(e,t){if(e==null)return ru;if(e instanceof Map)return e.has(t)?e.get(t):ru;if(Array.isArray(e))return ru;if(typeof e==`object`){let n=e;return t in n?n[t]:ru}return ru}function au(e,t){let n=e;for(let e of t){if(n===ru)return ru;n=iu(n,e)}return n}function ou(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)=>ou(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)||!ou(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=>ou(e[n],t[n])):!1}return!1}const su=new WeakSet;function cu(e){return su.add(e),e}function lu(e){return su.has(e)}function uu(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 du(e,t){return{eq:{fn:(e,...t)=>t.some(t=>mu(e,t)),argTypes:[`comparable`]},ne:{fn:(e,t)=>!mu(e,t),argTypes:[`comparable`,`comparable`]},lt:{fn:(e,t)=>hu(e,t)<0,argTypes:[`ordered`,`ordered`]},le:{fn:(e,t)=>hu(e,t)<=0,argTypes:[`ordered`,`ordered`]},gt:{fn:(e,t)=>hu(e,t)>0,argTypes:[`ordered`,`ordered`]},ge:{fn:(e,t)=>hu(e,t)>=0,argTypes:[`ordered`,`ordered`]},len:{fn:e=>gu(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)=>bu(t,e),argTypes:[`stringifiable`],returnType:`string`},println:{fn:(...t)=>`${bu(t,e)}\n`,argTypes:[`stringifiable`],returnType:`string`},printf:{fn:(n,...r)=>ku(n,r,e,t),argTypes:[`string`,`stringifiable`],returnType:`string`},toString:{fn:n=>Mu(n,e,t),argTypes:[`value`],returnType:`string`},toStrings:{fn:n=>n.map(n=>Mu(n,e,t)),argTypes:[`list`]},call:{fn:(e,...t)=>e(...t),argTypes:[`callable`,`value`]},html:{fn:(...t)=>Cu(bu(t,e)),argTypes:[`stringifiable`],returnType:`string`},js:{fn:(...t)=>Eu(bu(t,e)),argTypes:[`stringifiable`],returnType:`string`},urlquery:{fn:(...t)=>Ou(bu(t,e)),argTypes:[`stringifiable`],returnType:`string`},not:{fn:e=>!uu(e),argTypes:[`truthy`]}}}function fu(){return{and:cu({argTypes:[`truthy`],fn:(...e)=>{let t=!0;for(let n of e)if(t=n(),!uu(t))return t;return t}}),or:cu({argTypes:[`truthy`],fn:(...e)=>{let t=!1;for(let n of e)if(t=n(),uu(t))return t;return t}})}}function pu(e,t){return{...du(e,t),...fu()}}function mu(e,t){return typeof e==`number`&&typeof t==`bigint`?BigInt(e)===t:typeof e==`bigint`&&typeof t==`number`?e===BigInt(t):ou(e,t)}function hu(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 gu(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 ${vu(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 ${vu(t)}`);return e[t]}throw Error(`index: cannot index ${vu(e)}`)}function vu(e){return e===null?`null`:e===void 0?`undefined`:Array.isArray(e)?`array`:e instanceof Map?`Map`:typeof e}function yu(e){return e==null?`<nil>`:typeof e==`string`?`string`:typeof e==`boolean`?`bool`:typeof e==`bigint`?`int64`:typeof e==`number`?Number.isInteger(e)?`int`:`float64`:Array.isArray(e)?`[]interface {}`:e instanceof Map||typeof e==`object`?`map[string]interface {}`:typeof e}function bu(e,t){let n=``,r=!1;for(let i=0;i<e.length;i++){let a=e[i],o=typeof a==`string`;i>0&&!r&&!o&&(n+=` `),n+=xu(a,t),r=o}return n}function xu(e,t){return e==null?`<nil>`:typeof e==`string`?e:t(e)}const Su={"\0":`�`,'"':`&#34;`,"'":`&#39;`,"&":`&amp;`,"<":`&lt;`,">":`&gt;`};function Cu(e){return e.replace(/[\0"'&<>]/g,e=>Su[e]??e)}const wu={"\\":`\\\\`,"'":`\\'`,'"':`\\"`,"<":`\\u003C`,">":`\\u003E`,"&":`\\u0026`,"=":`\\u003D`},Tu=/^[\p{L}\p{M}\p{N}\p{P}\p{S}]$/u;function Eu(e){let t=``;for(let n of e){let e=wu[n];if(e!==void 0){t+=e;continue}let r=n.codePointAt(0);if(r<32||r>=128&&!Tu.test(n)){t+=`\\u${r.toString(16).toUpperCase().padStart(4,`0`)}`;continue}t+=n}return t}const Du=new TextEncoder;function Ou(e){let t=``,n=Du.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 ku(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+=Au(l??``,u,d,n,r),o=c+1}return i}function Au(e,t,n,r,i){switch(e){case`s`:return typeof n==`string`?ju(t,n):ju(t,xu(n,r));case`d`:return typeof n!=`number`&&typeof n!=`bigint`?`%!${e}(${yu(n)}=${xu(n,r)})`:ju(t,String(typeof n==`bigint`?n:Math.trunc(n)));case`v`:return ju(t,Mu(n,r,i));case`q`:return ju(t,JSON.stringify(xu(n,r)));case`f`:{if(typeof n!=`number`&&typeof n!=`bigint`)return`%!${e}(${yu(n)}=${xu(n,r)})`;let i=t.includes(`.`)?Number(t.split(`.`)[1]):6;return ju(t,Number(n).toFixed(i))}case`t`:return ju(t,uu(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 ju(t,r)}return typeof n!=`number`&&typeof n!=`bigint`?`%!${e}(${yu(n)}=${xu(n,r)})`:typeof n==`bigint`?ju(t,n.toString(16)):ju(t,Math.trunc(n).toString(16));default:return`%!${e}(${yu(n)}=${xu(n,r)})`}}function ju(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 Mu(e,t,n){return e==null?`<nil>`:typeof e==`string`?e:n(e)?t(e):Array.isArray(e)?`[${e.map(e=>Mu(e,t,n)).join(` `)}]`:e instanceof Map?Nu([...e.entries()],t,n):Pu(e)?Nu(Object.entries(e),t,n):String(e)}function Nu(e,t,n){let r=e=>Mu(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 Pu(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 Fu(e){return{dot:e,root:e,parent:void 0,vars:new Map}}function Iu(e,t){return{dot:t,root:e.root,parent:e,vars:new Map}}function Lu(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 Ru(e,t,n){e.vars.set(t,n)}const zu=new Set([`default`,`zero`,`error`]);function Bu(e){if(e===void 0)return`default`;if(zu.has(e))return e;throw Error(`EngineConfig.missingKey: expected "default" | "zero" | "error", got ${Vu(e)}`)}function Vu(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 Hu(e){if(e!==void 0){if(typeof e!=`object`||!e)throw Error(`EngineConfig.delims: expected { left, right } object, got ${Vu(e)}`);if(typeof e.left!=`string`||e.left.length===0)throw Error(`EngineConfig.delims.left: expected non-empty string, got ${Vu(e.left)}`);if(typeof e.right!=`string`||e.right.length===0)throw Error(`EngineConfig.delims.right: expected non-empty string, got ${Vu(e.right)}`);return{left:e.left,right:e.right}}}const Uu=Object.freeze({kind:`break`}),Wu=Object.freeze({kind:`continue`}),Gu={kind:`none`};let Ku;(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{Ku=(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 qu(e){let t=new Set,n=e=>{tu(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 Ju={kind:`dynamic`};function Yu(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=md(e);return typeof t==`number`||typeof t==`bigint`?{kind:`literal`,value:t}:Ju}case`Pipe`:{if(e.decls.length!==0||e.cmds.length!==1)return Ju;let t=e.cmds[0];if(t===void 0)return Ju;let n=t.args[0];return n===void 0||n.type!==`Identifier`?Ju:{kind:`call`,name:n.ident,args:t.args.slice(1).map(Yu)}}default:return Ju}}function Xu(e){let t=[],n=e=>{tu(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(Yu);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 Zu=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??id,this.isT=e.isT??Qu,this.missingKey=Bu(e.missingKey),this.delims=Hu(e.delims),this.funcs={...pu(this.toString,this.isT),...e.funcs??{}}}parse(e,t){let n=Vl(e,this.delims,t);return Ku(n.source,e=>this.evalParsed(n,e),n.defines,qu(n),Xu(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=Fu(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 Uu;case`Continue`:throw Wu;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 gl(`unexpected ${e.type} at statement position`,e.pos,{source:n.source});default:wl(e)}}evalIf(e,t,n){uu(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(uu(r)){let i=Iu(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=dd(r);try{if(a.length===0){e.elseList&&this.evalList(e.elseList,t,n);return}for(let[r,o]of a){let a=Iu(t,o);if(i.length===1)Ru(a,i[0]?.idents[0]??`$`,o);else if(i.length>=2){let e=i[0]?.idents[0]??`$`,t=i[1]?.idents[0]??`$`;Ru(a,e,r),Ru(a,t,o)}try{this.evalList(e.list,a,n)}catch(e){if(e===Wu)continue;throw e}}}catch(e){if(e===Uu)return;throw e}}evalTemplateInvoke(e,t,n){let r=zl(n.defines,e.name);if(!r)throw new gl(`template ${JSON.stringify(e.name)} is not defined`,e.pos,{source:n.source});let i=Iu(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=Iu(t,e.pipe?this.evalPipe(e.pipe,t,n):t.dot),i=zl(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 gl(`empty pipeline`,e.pos,{source:n.source});let r=this.evalCommand(e.cmds[0],t,n,Gu);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)Ru(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 gl(`empty command`,e.pos,{source:n.source});let i=e.args[0];if(i.type!==`Identifier`){if(e.args.length>1)throw new gl(`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=lu(a),c=o.map(e=>s?()=>this.evalPrimary(e,t,n):this.evalPrimary(e,t,n));if(r.kind===`value`){let e=r.value;c.push(s?()=>e:e)}ed(i.ident,a.argTypes,c,e.pos,n.source,this.toString,a.argTypePattern,this.fromString,this.isT);try{return a.fn(...c)}catch(t){throw t instanceof vl?new vl(t.funcName,t.argIndex,t.expected,t.receivedSummary,e.pos,{source:n.source}):t instanceof bl?new bl(t.message,e.pos,{source:n.source}):t}}evalPrimary(e,t,n){switch(e.type){case`Dot`:return t.dot;case`Nil`:return null;case`Bool`:return e.value;case`Number`:return md(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 ed(e.ident,t.argTypes,[],e.pos,n.source,this.toString,t.argTypePattern,this.fromString,this.isT),t.fn()}case`Chain`:return this.resolveFieldChain(this.evalPrimary(e.node,t,n),e.fields,e.pos,n);case`Pipe`:return this.evalPipe(e,t,n);default:throw new gl(`cannot evaluate ${e.type} as a value`,e.pos,{source:n.source})}}resolveFieldChain(e,t,n,r){let i=au(e,t);if(i!==ru)return i;if(this.missingKey===`error`)throw new yl(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=Lu(t,i);if(!a.found)throw new gl(`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(Mu(e,this.toString,this.isT)))}};const Qu=e=>typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Map);function $u(e){return new Zu(e)}function ed(e,t,n,r,i,a=id,o,s=rd,c=Qu){let l=td(t,o),u=-1,d=-1;for(let t=0;t<n.length;t++){let o=l(t),f=n[t];if(!nd(o,f,a,c))throw new vl(e,t+1,ld(o),ud(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(!od(n[u],f))throw new vl(e,t+1,`${ld(`ordered`)} of the same kind as ${ud(n[u])}`,ud(f),r,{source:i})}if(o===`comparable`){if(d===-1)d=t;else if(!sd(n[d],f))throw new vl(e,t+1,`${ld(`comparable`)} of the same kind as ${ud(n[d])}`,ud(f),r,{source:i})}}}function td(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 nd(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 Pu(t);case`sized`:return typeof t==`string`||Array.isArray(t)||t instanceof Map||t instanceof Set||Pu(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||Pu(t);case`callable`:return typeof t==`function`;case`collection`:return typeof t==`string`||Array.isArray(t)||t instanceof Map||Pu(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 ad(t);default:throw Error(`invalid ArgType: ${String(e)}`)}}function rd(e){return e}function id(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 vl(`<engine.toString>`,1,`string (or a consumer-supplied toString that flattens T)`,ud(e),{line:0,column:0,offset:0})}function ad(e){try{return JSON.stringify(e)!==void 0}catch{return!1}}function od(e,t){return typeof e==typeof t||typeof e==`number`&&typeof t==`bigint`||typeof e==`bigint`&&typeof t==`number`}function sd(e,t){let n=cd(e),r=cd(t);return n===`nil`||r===`nil`?!0:n===r}function cd(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 ld(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 ud(e){return e===null?`null`:e===void 0?`undefined`:Array.isArray(e)?`array`:e instanceof Map?`Map`:typeof e}function dd(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?fd([...e.entries()]):e instanceof Set?[...e.values()].map((e,t)=>[t,e]):typeof e==`object`?fd(Object.entries(e)):[]}function fd(e){return[...e].sort((e,t)=>pd(e[0],t[0]))}function pd(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 md(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 hd(e){if(!/^[+-]?\d+$/.test(e))return 0;let t=Number.parseInt(e,10);return Number.isSafeInteger(t)?t:0}function gd(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 vd(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 yd(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 bd(e){if(!/^[+-]?[0-7]+$/.test(e))return 0;let t=e[0]===`-`?-1:1,n=e[0]===`+`||e[0]===`-`?e.slice(1):e,r=t*Number.parseInt(n,8);return Number.isSafeInteger(r)?r:0}function xd(e){return JSON.stringify(e)??`null`}function Sd(){return{atoi:{fn:e=>hd(e),argTypes:[`string`],returnType:`int`},int:{fn:e=>vd(e),argTypes:[`value`],returnType:`int`},int64:{fn:e=>yd(e),argTypes:[`value`]},float64:{fn:e=>gd(e),argTypes:[`value`],returnType:`float`},toDecimal:{fn:e=>bd(e),argTypes:[`string`],returnType:`int`},toRawJson:{fn:e=>xd(e),argTypes:[`serializable`],returnType:`string`}}}const Cd={h:36e11,m:6e10,s:1e9,ms:1e6,us:1e3,µs:1e3,ns:1};function wd(e){if(e===`0`)return 0;let t=!1,n=e;if(n.startsWith(`-`)?(t=!0,n=n.slice(1)):n.startsWith(`+`)&&(n=n.slice(1)),!n)return NaN;let r=0,i=/^(\d+(?:\.\d+)?)(ns|µs|us|ms|[smh])/;for(;n.length>0;){let e=i.exec(n);if(!e)return NaN;let t=parseFloat(e[1]??`0`),a=e[2];r+=t*Cd[a],n=n.slice(e[0].length)}return t?-r:r}function Td(e){if(e===0)return`0s`;let t=!1,n=e;n<0&&(t=!0,n=-n);let r;return r=n<Cd.us?`${Math.floor(n)}ns`:n<Cd.ms?Ed(n,Cd.us,3,`µs`):n<Cd.s?Ed(n,Cd.ms,6,`ms`):Dd(n),t?`-${r}`:r}function Ed(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 Dd(e){let t=Math.floor(e/Cd.h);e-=t*Cd.h;let n=Math.floor(e/Cd.m);e-=n*Cd.m;let r=Math.floor(e/Cd.s),i=e-r*Cd.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 Od(e){return e*Cd.s}function kd(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 Ad(e,t){let n=t().getTime()-kd(e).getTime();return Td(Math.round(n/1e3)*1e9)}const jd=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],Md=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],Nd=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],Pd=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`];function Fd(e){return e<10?`0${e}`:String(e)}function Id(e){return e<10?`00${e}`:e<100?`0${e}`:String(e)}function Ld(e){return e<10?` ${e}`:String(e)}function Rd(e){let t=e>=0?`+`:`-`,n=Math.abs(e);return`${t}${Fd(Math.floor(n/60))}${Fd(n%60)}`}function zd(e){let t=e>=0?`+`:`-`,n=Math.abs(e);return`${t}${Fd(Math.floor(n/60))}:${Fd(n%60)}`}function Bd(e){return`${e>=0?`+`:`-`}${Fd(Math.floor(Math.abs(e)/60))}`}function Vd(e){return e===0?`Z`:Rd(e)}function Hd(e){return e===0?`Z`:zd(e)}function Ud(e){return e===0?`Z`:Bd(e)}function Wd(e,t,n){let r=e*1e6,i=String(r).padStart(9,`0`).slice(0,t);return n?i.replace(/0+$/,``):i}const Gd=[[`.000000000`,e=>`.${Wd(e.ms,9,!1)}`],[`.999999999`,e=>{let t=Wd(e.ms,9,!0);return t?`.${t}`:``}],[`.000000`,e=>`.${Wd(e.ms,6,!1)}`],[`.999999`,e=>{let t=Wd(e.ms,6,!0);return t?`.${t}`:``}],[`.000`,e=>`.${Id(e.ms)}`],[`.999`,e=>{let t=Id(e.ms).replace(/0+$/,``);return t?`.${t}`:``}],[`January`,e=>jd[e.month-1]??`January`],[`Monday`,e=>Nd[e.weekday]??`Monday`],[`Z07:00`,e=>Hd(e.offsetMinutes)],[`-07:00`,e=>zd(e.offsetMinutes)],[`Z0700`,e=>Vd(e.offsetMinutes)],[`-0700`,e=>Rd(e.offsetMinutes)],[`2006`,e=>String(e.year)],[`Jan`,e=>Md[e.month-1]??`Jan`],[`Mon`,e=>Pd[e.weekday]??`Mon`],[`MST`,e=>e.tzAbbr],[`-07`,e=>Bd(e.offsetMinutes)],[`Z07`,e=>Ud(e.offsetMinutes)],[`15`,e=>Fd(e.hour)],[`01`,e=>Fd(e.month)],[`02`,e=>Fd(e.day)],[`_2`,e=>Ld(e.day)],[`03`,e=>Fd(e.hour12)],[`04`,e=>Fd(e.minute)],[`05`,e=>Fd(e.second)],[`06`,e=>Fd(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 Kd(e,t){let n=``,r=0;for(;r<e.length;){let i=!1;for(let[a,o]of Gd)if(e.startsWith(a,r)){n+=o(t),r+=a.length,i=!0;break}i||(n+=e[r++])}return n}const qd={year:`numeric`,month:`2-digit`,day:`2-digit`,weekday:`long`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hour12:!1};function Jd(e){let t=new Map;for(let n of e)t.set(n.type,n.value);return t}const Yd=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`];function Xd(e,t){let n;try{new Intl.DateTimeFormat(`en-US`,{timeZone:t}),n=t}catch{n=`UTC`}let r=Jd(new Intl.DateTimeFormat(`en-US`,{...qd,timeZone:n}).formatToParts(e)),i=parseInt(r.get(`hour`)??`0`,10)%24,a=Jd(new Intl.DateTimeFormat(`en-US`,{timeZone:n,timeZoneName:`short`}).formatToParts(e)).get(`timeZoneName`)??n,o=Zd(Jd(new Intl.DateTimeFormat(`en-US`,{timeZone:n,timeZoneName:`shortOffset`}).formatToParts(e)).get(`timeZoneName`)??`GMT`),s=Yd.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 Zd(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 Qd(){return Intl.DateTimeFormat().resolvedOptions().timeZone}function $d(e,t){return Kd(e,Xd(kd(t),Qd()))}function ef(e,t,n){return Kd(e,Xd(kd(t),n))}function tf(e,t){let n=kd(t),r=wd(e);return Number.isNaN(r)?n:new Date(n.getTime()+r/1e6)}function nf(e){if(typeof e==`string`){let t=parseInt(e,10);return Number.isNaN(t)?`0s`:Td(Od(t))}return typeof e==`bigint`?Td(Od(Number(e))):typeof e==`number`?Td(Od(e)):`0s`}const rf=36e11*24*365,af=36e11*24*30,of=36e11*24,sf=36e11,cf=6e10,lf=1e9;function uf(e){let t=wd(String(e));if(Number.isNaN(t))return`0s`;let n=Math.abs(t);return n>rf?`${Math.floor(n/rf)}y`:n>af?`${Math.floor(n/af)}mo`:n>of?`${Math.floor(n/of)}d`:n>sf?`${Math.floor(n/sf)}h`:n>cf?`${Math.floor(n/cf)}m`:n>lf?`${Math.floor(n/lf)}s`:`0s`}function df(e){let t=Xd(kd(e),Qd());return`${t.year}-${String(t.month).padStart(2,`0`)}-${String(t.day).padStart(2,`0`)}`}function ff(e,t){let n=Xd(kd(e),t);return`${n.year}-${String(n.month).padStart(2,`0`)}-${String(n.day).padStart(2,`0`)}`}function pf(e){return e()}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`];function gf(){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 vf(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 yf(e,t){for(let[n,r]of mf.entries())if(e.startsWith(r,t))return[n+1,t+r.length];throw Error(`sprig toDate: expected month name at pos ${t}`)}function bf(e,t){for(let[n,r]of hf.entries())if(e.startsWith(r,t))return[n+1,t+r.length];throw Error(`sprig toDate: expected short month name at pos ${t}`)}function xf(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 Sf(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 Cf(e,t){if(e[t]===` `){let[n,r]=vf(e,t+1,1,1);return[n,r]}return vf(e,t,1,2)}function wf(e,t,n){let r=e[t]===`+`?1:e[t]===`-`?-1:0;if(r===0)throw Error(`sprig toDate: expected +/- at pos ${t}`);let i=t+1,[a,o]=vf(e,i,2,2);i=o;let s=0;if(n&&e[i]===`:`){let[t,n]=vf(e,i+1,2,2);s=t,i=n}else if(!n){let[t,n]=vf(e,i,2,2);s=t,i=n}return[r*(a*60+s),i]}function Tf(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]=vf(e,t+1,2,2);return[n*r*60,i]}return wf(e,t,n)}function Ef(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 Df(e,t,n){let[r,i]=_f(e,t,n),a=parseInt(r.padEnd(9,`0`),10);return[Math.round(a/1e6),i]}function Of(e,t,n,r){let i={...r};switch(e){case`January`:{let[e,r]=yf(t,n);return i.month=e,[r,i]}case`Monday`:return[xf(t,n),i];case`Jan`:{let[e,r]=bf(t,n);return i.month=e,[r,i]}case`Mon`:return[Sf(t,n),i];case`2006`:{let[e,r]=vf(t,n,4,4);return i.year=e,[r,i]}case`06`:{let[e,r]=vf(t,n,2,2);return i.year=e<70?2e3+e:1900+e,[r,i]}case`01`:{let[e,r]=vf(t,n,2,2);return i.month=e,[r,i]}case`1`:{let[e,r]=vf(t,n,1,2);return i.month=e,[r,i]}case`_2`:{let[e,r]=Cf(t,n);return i.day=e,[r,i]}case`02`:{let[e,r]=vf(t,n,2,2);return i.day=e,[r,i]}case`2`:{let[e,r]=vf(t,n,1,2);return i.day=e,[r,i]}case`15`:{let[e,r]=vf(t,n,2,2);return i.hour=e,[r,i]}case`03`:{let[e,r]=vf(t,n,2,2);return i.hour=e,i.hour12=!0,[r,i]}case`3`:{let[e,r]=vf(t,n,1,2);return i.hour=e,i.hour12=!0,[r,i]}case`04`:{let[e,r]=vf(t,n,2,2);return i.minute=e,[r,i]}case`4`:{let[e,r]=vf(t,n,1,2);return i.minute=e,[r,i]}case`05`:{let[e,r]=vf(t,n,2,2);return i.second=e,[r,i]}case`5`:{let[e,r]=vf(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[Ef(t,n),i];case`-0700`:{let[e,r]=wf(t,n,!1);return i.offsetMinutes=e,[r,i]}case`-07:00`:{let[e,r]=wf(t,n,!0);return i.offsetMinutes=e,[r,i]}case`-07`:{let e=t[n]===`+`?1:t[n]===`-`?-1:0;if(e===0)throw Error(`sprig toDate: expected +/- at pos ${n}`);let[r,a]=vf(t,n+1,2,2);return i.offsetMinutes=e*r*60,[a,i]}case`Z0700`:{let[e,r]=Tf(t,n,!1,!1);return i.offsetMinutes=e,[r,i]}case`Z07:00`:{let[e,r]=Tf(t,n,!0,!1);return i.offsetMinutes=e,[r,i]}case`Z07`:{let[e,r]=Tf(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]=Df(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]=Df(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]=Df(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 kf=`.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 Af(e,t){let n=0,r=0,i=gf();for(;n<e.length;){let a=!1;for(let o of kf)if(e.startsWith(o,n)){let[e,s]=Of(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 jf(e,t){return Af(e,t)}function Mf(e){return String(Math.floor(kd(e).getTime()/1e3))}function Nf(e=()=>new Date){return{now:{fn:()=>pf(e),argTypes:[]},date:{fn:(e,t)=>$d(e,t),argTypes:[`string`,`value`]},dateInZone:{fn:(e,t,n)=>ef(e,t,n),argTypes:[`string`,`value`,`string`]},dateModify:{fn:(e,t)=>tf(e,t),argTypes:[`string`,`value`]},htmlDate:{fn:e=>df(e),argTypes:[`value`]},htmlDateInZone:{fn:(e,t)=>ff(e,t),argTypes:[`value`,`string`]},duration:{fn:e=>nf(e),argTypes:[`value`]},durationRound:{fn:e=>uf(e),argTypes:[`value`]},toDate:{fn:(e,t)=>jf(e,t),argTypes:[`string`,`string`]},ago:{fn:t=>Ad(t,e),argTypes:[`value`]},unixEpoch:{fn:e=>Mf(e),argTypes:[`value`]}}}function Pf(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 Ff(...e){for(let t of e)if(!Pf(t))return t}function If(e,t){return Pf(t)?e:t}function Lf(e){return JSON.parse(e)}function Rf(e,t,n){return uu(n)?e:t}function zf(e){return JSON.stringify(e)??`null`}function Bf(e){return JSON.stringify(e,null,2)??`null`}function Vf(){return{default:{fn:(e,t)=>If(e,t),argTypes:[`value`,`truthy`]},empty:{fn:e=>Pf(e),argTypes:[`truthy`]},coalesce:{fn:(...e)=>Ff(...e),argTypes:[`truthy`]},ternary:{fn:(e,t,n)=>Rf(e,t,n),argTypes:[`value`,`value`,`truthy`]},fromJson:{fn:e=>Lf(e),argTypes:[`string`]},toJson:{fn:e=>zf(e),argTypes:[`serializable`],returnType:`string`},toPrettyJson:{fn:e=>Bf(e),argTypes:[`serializable`],returnType:`string`}}}function Hf(...e){let t={};for(let n=0;n<e.length;n+=2)t[e[n]]=e[n+1];return t}function Uf(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 Hf(...t)}function Wf(e,t){return e[t]}function Gf(e,t){return t in e}function Kf(e){return Object.keys(e)}function qf(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 Jf(e,...t){let n={...e};for(let e of t)Object.assign(n,e);return n}function Yf(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 Xf(e,...t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function Zf(e,...t){let n=[];for(let r of t)e in r&&n.push(r[e]);return n}function Qf(e,t,n){return e[t]=n,e}function $f(e,t){return delete e[t],e}function ep(e){return Object.values(e)}function tp(){return{dict:{fn:(...e)=>Hf(...e),argTypes:[`string`,`value`],argTypePattern:`alternating`},get:{fn:(e,t)=>Wf(e,t),argTypes:[`dict`,`string`]},set:{fn:(e,t,n)=>Qf(e,t,n),argTypes:[`dict`,`string`,`value`]},unset:{fn:(e,t)=>$f(e,t),argTypes:[`dict`,`string`]},keys:{fn:e=>Kf(e),argTypes:[`dict`]},values:{fn:e=>ep(e),argTypes:[`dict`]},pluck:{fn:(e,...t)=>Zf(e,...t),argTypes:[`string`,`dict`]},pick:{fn:(e,...t)=>Xf(e,...t),argTypes:[`dict`,`string`]},omit:{fn:(e,...t)=>Yf(e,...t),argTypes:[`dict`,`string`]},hasKey:{fn:(e,t)=>Gf(e,t),argTypes:[`dict`,`string`]},merge:{fn:(e,...t)=>qf(e,...t),argTypes:[`dict`]},mergeOverwrite:{fn:(e,...t)=>Jf(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 np(...e){for(let t of e)if(Pf(t))return!1;return!0}function rp(...e){for(let t of e)if(!Pf(t))return!0;return!1}function ip(e,t){return[...e,t]}function ap(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 op(e){return e.filter(e=>!Pf(e))}function sp(...e){let t=[];for(let n of e)t.push(...n);return t}const cp={line:0,column:0,offset:0};function lp(e,t,n,r){return new vl(e,t,n,r,cp)}function up(...e){if(e.length<3)throw lp(`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(!fp(t))throw lp(`dig`,e.length-1,`dict`,pp(t));for(let e=0;e<r.length;e++)if(typeof r[e]!=`string`)throw lp(`dig`,e,`string`,pp(r[e]));return dp(t,n,r,e.length)}function dp(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(!fp(a))throw lp(`dig`,r-1,`dict at intermediate key`,pp(a));return dp(a,t,n.slice(1),r)}function fp(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Map)&&!(e instanceof Set)}function pp(e){return e===null?`null`:Array.isArray(e)?`array`:e instanceof Map?`Map`:e instanceof Set?`Set`:typeof e}function mp(e){return e[0]}function hp(e,t){return t.some(t=>ou(t,e))}function gp(e){return e.slice(0,-1)}function _p(e){return e[e.length-1]}function vp(e){return Array.isArray(e)||typeof e==`string`?e.length:e instanceof Map||e instanceof Set?e.size:Object.keys(e).length}function yp(...e){return e}function bp(e,t){return[t,...e]}function xp(e){return e.slice(1)}function Sp(e){return[...e].reverse()}function Cp(e,t,n){let r=t===void 0?0:t,i=n===void 0?e.length:n;return e.slice(r,i)}function wp(e){let t=[];for(let n of e)n!=null&&t.push(String(n));return t.sort()}function Tp(e){let t=[];for(let n of e)t.some(e=>ou(e,n))||t.push(n);return t}function Ep(e,...t){return e.filter(e=>!t.some(t=>ou(t,e)))}function Dp(){return{list:{fn:(...e)=>yp(...e),argTypes:[`value`]},first:{fn:e=>mp(e),argTypes:[`list`]},last:{fn:e=>_p(e),argTypes:[`list`]},rest:{fn:e=>xp(e),argTypes:[`list`]},initial:{fn:e=>gp(e),argTypes:[`list`]},len:{fn:e=>vp(e),argTypes:[`sized`]},reverse:{fn:e=>Sp(e),argTypes:[`list`]},uniq:{fn:e=>Tp(e),argTypes:[`list`]},without:{fn:(e,...t)=>Ep(e,...t),argTypes:[`list`,`value`]},has:{fn:(e,t)=>hp(e,t),argTypes:[`value`,`list`]},compact:{fn:e=>op(e),argTypes:[`list`]},slice:{fn:(e,t,n)=>Cp(e,t,n),argTypes:[`list`,`int`,`int`]},concat:{fn:(...e)=>sp(...e),argTypes:[`list`]},chunk:{fn:(e,t)=>ap(e,t),argTypes:[`int`,`list`]},prepend:{fn:(e,t)=>bp(e,t),argTypes:[`list`,`value`]},append:{fn:(e,t)=>ip(e,t),argTypes:[`list`,`value`]},sortAlpha:{fn:e=>wp(e),argTypes:[`list`],returnType:`list`},push:{fn:(e,t)=>ip(e,t),argTypes:[`list`,`value`]},tuple:{fn:(...e)=>yp(...e),argTypes:[`value`]},dig:{fn:(...e)=>up(...e),argTypes:[`value`]},all:{fn:(...e)=>np(...e),argTypes:[`truthy`],returnType:`bool`},any:{fn:(...e)=>rp(...e),argTypes:[`truthy`],returnType:`bool`}}}function Op(...e){return e.reduce((e,t)=>e+t,0)}function kp(e){return e+1}function Ap(e){return e+1}function jp(...e){return e.reduce((e,t)=>e+t,0)}function Mp(e){return Math.ceil(e)}function Np(e,t){return Math.trunc(e/t)}function Pp(e,t){return e/t}function Fp(e){return Math.floor(e)}function Ip(...e){return e.reduce((e,t)=>t>e?t:e,-1/0)}function Lp(...e){return e.reduce((e,t)=>Math.max(e,t),-1/0)}function Rp(...e){return e.reduce((e,t)=>t<e?t:e,1/0)}function zp(...e){return e.reduce((e,t)=>Math.min(e,t),1/0)}function Bp(e,t){return e%t}function Vp(...e){return e.reduce((e,t)=>e*t,1)}function Hp(...e){return e.reduce((e,t)=>e*t,1)}function Up(e,t=0){let n=10**t;return Math.sign(e)*Math.round(Math.abs(e)*n)/n}function Wp(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 Gp(...e){let t=1;switch(e.length){case 0:return``;case 1:{let n=e[0];return n<1&&(t=-1),Wp(1,n+t,t).join(` `)}case 2:{let t=e[0],n=e[1],r=n<t?-1:1;return Wp(t,n+r,r).join(` `)}case 3:{let n=e[0],r=e[1],i=e[2];return i<n&&(t=-1,r>0)?``:Wp(n,i+t,r).join(` `)}default:return``}}function Kp(e,t){return e-t}function qp(e,t){return e-t}function Jp(e){return Wp(0,e,e<0?-1:1)}function Yp(){return{add:{fn:(...e)=>Op(...e),argTypes:[`int`]},sub:{fn:(e,t)=>Kp(e,t),argTypes:[`int`,`int`]},mul:{fn:(...e)=>Vp(...e),argTypes:[`int`]},div:{fn:(e,t)=>Np(e,t),argTypes:[`int`,`int`]},mod:{fn:(e,t)=>Bp(e,t),argTypes:[`int`,`int`]},min:{fn:(...e)=>Rp(...e),argTypes:[`int`]},max:{fn:(...e)=>Ip(...e),argTypes:[`int`]},floor:{fn:e=>Fp(e),argTypes:[`float`]},ceil:{fn:e=>Mp(e),argTypes:[`float`]},round:{fn:(e,t)=>Up(e,t),argTypes:[`float`,`int`]},addf:{fn:(...e)=>jp(...e),argTypes:[`float`]},subf:{fn:(e,t)=>qp(e,t),argTypes:[`float`,`float`]},mulf:{fn:(...e)=>Hp(...e),argTypes:[`float`]},divf:{fn:(e,t)=>Pp(e,t),argTypes:[`float`,`float`]},add1:{fn:e=>kp(e),argTypes:[`int`]},add1f:{fn:e=>Ap(e),argTypes:[`float`]},maxf:{fn:(...e)=>Lp(...e),argTypes:[`float`]},minf:{fn:(...e)=>zp(...e),argTypes:[`float`]},biggest:{fn:(...e)=>Ip(...e),argTypes:[`int`]},seq:{fn:(...e)=>Gp(...e),argTypes:[`int`],returnType:`string`},until:{fn:e=>Jp(e),argTypes:[`int`],returnType:`list`},untilStep:{fn:(e,t,n)=>Wp(e,t,n),argTypes:[`int`,`int`,`int`],returnType:`list`}}}Array.from({length:95},(e,t)=>String.fromCharCode(t+32)).join(``);function Xp(e,t){return t.length<=e||e<4?t:`${t.slice(0,e-3)}...`}function Zp(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},Qp=/^[-_\s]$/,$p=/^\p{P}$/u,em=/^\p{L}$/u,tm=/^\p{Lu}$/u,nm=/^\p{N}$/u;function rm(e){return e!==void 0&&Qp.test(e)}function im(e){return e!==void 0&&em.test(e)}function am(e){return e!==void 0&&tm.test(e)}function om(e){return e!==void 0&&nm.test(e)}function sm(e){return e!==void 0&&$p.test(e)}function cm(e,t){if(t>=e.length)return{word:{wt:q.Invalid,text:``},next:t};let n=e[t],r=t+1;if(rm(n)){for(;r<e.length&&rm(e[r]);)r++;return{word:{wt:q.Connector,text:e.slice(t,r).join(``)},next:r}}if(sm(n)){for(;r<e.length&&sm(e[r]);)r++;return{word:{wt:q.Punct,text:e.slice(t,r).join(``)},next:r}}if(am(n)){if(r>=e.length)return{word:{wt:q.UpperCase,text:n},next:r};if(am(e[r])){let n=r;for(;n<e.length&&am(e[n]);)n++;return n<e.length&&im(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(im(e[r])){let n=r+1;for(;n<e.length&&im(e[n])&&!am(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(im(n)){for(;r<e.length&&im(e[r])&&!am(e[r]);)r++;return{word:{wt:q.Alphabet,text:e.slice(t,r).join(``)},next:r}}if(om(n)){for(;r<e.length&&om(e[r]);)r++;return{word:{wt:q.Number,text:e.slice(t,r).join(``)},next:r}}for(;r<e.length&&!rm(e[r])&&!im(e[r])&&!om(e[r])&&!sm(e[r]);)r++;return{word:{wt:q.Other,text:e.slice(t,r).join(``)},next:r}}function lm(e,t,n){if(t.wt!==q.UpperCase&&t.wt!==q.Connector){e.push(t.text);return}for(let r of t.text)rm(r)?e.push(n):am(r)?e.push(r.toLowerCase()):e.push(r)}function um(e,t){if(e.length===0)return``;let n=Array.from(e),r=[],{word:i,next:a}=cm(n,0);for(;a<n.length;){i.wt!==q.Connector&&lm(r,i,t);let e=i,o=i;if({word:i,next:a}=cm(n,a),e.wt===q.Number){for(;i.wt===q.Alphabet||i.wt===q.Number;)lm(r,i,t),{word:i,next:a}=cm(n,a);i.wt!==q.Invalid&&i.wt!==q.Punct&&i.wt!==q.Connector&&r.push(t);continue}if(e.wt===q.Connector){lm(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}=cm(n,a),i.wt!==q.Alphabet){lm(r,s,t),i.wt!==q.Connector&&i.wt!==q.Punct&&r.push(t);continue}for(r.push(t),lm(r,s,t);i.wt===q.Alphabet||i.wt===q.Number;)lm(r,i,t),{word:i,next:a}=cm(n,a);i.wt!==q.Invalid&&i.wt!==q.Connector&&i.wt!==q.Punct&&r.push(t)}return lm(r,i,t),r.join(``).toLowerCase()}function dm(e){if(e.length===0)return``;let t=Array.from(e),n=[],r=0,i=``;for(;r<t.length;){if(i=t[r],r++,!rm(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++,rm(i)&&rm(e)){n.push(e);continue}rm(e)?i=i.toUpperCase():(i=i.toLowerCase(),n.push(e))}return n.push(i),n.join(``)}function fm(e){return dm(e)}function pm(...e){return e.join(` `)}function mm(e,t){return t.includes(e)}function hm(e,t){return t.startsWith(e)}function gm(e,t){return t.endsWith(e)}function _m(e,t){let n=` `.repeat(Math.max(0,e));return t.split(`
49
49
  `).map(e=>n+e).join(`
50
- `)}function _m(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 vm(e,t){let n=[];for(let e of t){if(typeof e==`object`&&e)throw cp(`join`,2,`list of strings/primitives`,`list element of type ${ym(e)}`);n.push(String(e))}return n.join(e)}function ym(e){return Array.isArray(e)?`array`:e instanceof Map?`Map`:e instanceof Set?`Set`:`object`}function bm(e){return lm(e,`-`)}function xm(e){return e.toLowerCase()}function Sm(e,t){return`\n${gm(e,t)}`}function Cm(e){return e.replace(/\s+/g,``)}function wm(e,t,n){return n===1?e:t}function Tm(...e){return e.map(e=>`"${e}"`).join(` `)}function Em(e){return e.replace(/[\\.+*?()|[\]{}^$]/g,`\\$&`)}function Dm(e,t){return t.repeat(Math.max(0,e))}function Om(e,t,n){return n.split(e).join(t)}function km(e){return lm(e,`_`)}function Am(e,t){let n=t.split(e),r={};for(let e=0;e<n.length;e++)r[`_${e}`]=n[e];return r}function jm(e,t){return t.split(e)}function Mm(e,t,n){let r=Nm(n,e,t),i={};for(let e=0;e<r.length;e++)i[`_${e}`]=r[e]??``;return i}function Nm(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 Pm(...e){return e.map(e=>`'${e}'`).join(` `)}function Fm(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 Im(e){let t=``;for(let n of e)Lm(n)?t+=n.toLowerCase():Rm(n)?t+=n.toUpperCase():t+=n;return t}function Lm(e){return e!==e.toLowerCase()&&e===e.toUpperCase()}function Rm(e){return e!==e.toUpperCase()&&e===e.toLowerCase()}function zm(e){return e.replace(/\b([a-zA-Z])/g,e=>e.toUpperCase())}function Bm(e){return e.trim()}function Vm(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 Hm(e,t){return t.startsWith(e)?t.slice(e.length):t}function Um(e,t){return t.endsWith(e)?t.slice(0,t.length-e.length):t}function Wm(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 Gm(e){return e.replace(/\b([A-Z])/g,e=>e.toLowerCase())}function Km(e){return e.toUpperCase()}function qm(e,t){return Jm(e,`
51
- `,t)}function Jm(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 Ym(e,t,n){return Jm(e,t,n)}function Xm(){return{abbrev:{fn:(e,t)=>Yp(e,t),argTypes:[`int`,`string`]},abbrevboth:{fn:(e,t,n)=>Xp(e,t,n),argTypes:[`int`,`int`,`string`]},camelcase:{fn:e=>dm(e),argTypes:[`string`],returnType:`string`},cat:{fn:(...e)=>fm(...e),argTypes:[`string`]},contains:{fn:(e,t)=>pm(e,t),argTypes:[`string`,`string`]},hasPrefix:{fn:(e,t)=>mm(e,t),argTypes:[`string`,`string`]},hasSuffix:{fn:(e,t)=>hm(e,t),argTypes:[`string`,`string`]},indent:{fn:(e,t)=>gm(e,t),argTypes:[`int`,`string`]},initials:{fn:e=>_m(e),argTypes:[`string`]},join:{fn:(e,t)=>vm(e,t),argTypes:[`string`,`list`]},kebabcase:{fn:e=>bm(e),argTypes:[`string`],returnType:`string`},lower:{fn:e=>xm(e),argTypes:[`string`]},nindent:{fn:(e,t)=>Sm(e,t),argTypes:[`int`,`string`]},nospace:{fn:e=>Cm(e),argTypes:[`string`],returnType:`string`},plural:{fn:(e,t,n)=>wm(e,t,n),argTypes:[`string`,`string`,`int`],returnType:`string`},quote:{fn:(...e)=>Tm(...e),argTypes:[`string`]},regexQuoteMeta:{fn:e=>Em(e),argTypes:[`string`],returnType:`string`},repeat:{fn:(e,t)=>Dm(e,t),argTypes:[`int`,`string`]},replace:{fn:(e,t,n)=>Om(e,t,n),argTypes:[`string`,`string`,`string`]},snakecase:{fn:e=>km(e),argTypes:[`string`],returnType:`string`},split:{fn:(e,t)=>Am(e,t),argTypes:[`string`,`string`]},splitList:{fn:(e,t)=>jm(e,t),argTypes:[`string`,`string`]},splitn:{fn:(e,t,n)=>Mm(e,t,n),argTypes:[`string`,`int`,`string`],returnType:`dict`},squote:{fn:(...e)=>Pm(...e),argTypes:[`string`]},substr:{fn:(e,t,n)=>Fm(e,t,n),argTypes:[`int`,`int`,`string`]},swapcase:{fn:e=>Im(e),argTypes:[`string`],returnType:`string`},title:{fn:e=>zm(e),argTypes:[`string`]},trim:{fn:e=>Bm(e),argTypes:[`string`]},trimAll:{fn:(e,t)=>Vm(e,t),argTypes:[`string`,`string`]},trimPrefix:{fn:(e,t)=>Hm(e,t),argTypes:[`string`,`string`]},trimSuffix:{fn:(e,t)=>Um(e,t),argTypes:[`string`,`string`]},trunc:{fn:(e,t)=>Wm(e,t),argTypes:[`int`,`string`]},untitle:{fn:e=>Gm(e),argTypes:[`string`]},upper:{fn:e=>Km(e),argTypes:[`string`]},wrap:{fn:(e,t)=>qm(e,t),argTypes:[`int`,`string`]},wrapWith:{fn:(e,t,n)=>Ym(e,t,n),argTypes:[`int`,`string`,`string`]}}}function Zm(e){return e}function Qm(e,t,n){return n===void 0?Js+Ks(e)+`.`+Ks(t):$m(n)}function $m(e){return Js+Ks(e)}function eh(e,t){return e+`.`+t}function th(e){return e+`.page`}const nh=[`closeOnPick`,`paged`,`key`,`distribution`],rh=e=>nh.includes(e),ih=`"closeOnPick" (bool, default false), "paged" (bool, default true), "key" (string, accordion grouping), "distribution" (one of ${hc.map(e=>`"${e}"`).join(`, `)}; default "van-der-corput")`;function ah(e){for(let t of Object.keys(e))if(!rh(t))throw Error(`unknown {{ menu }} option "${t}" — the options dict takes ${ih}`);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&&!gc(r))throw Error(`{{ menu }} option "distribution" must be one of: ${hc.join(`, `)}; got ${JSON.stringify(r)}`);return{closeOnPick:t(`closeOnPick`,!1),paged:t(`paged`,!0),key:n,distribution:vc(r)}}const oh=`menu`,sh=`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`,ch=e=>e.kind===`call`&&e.name===`dict`,lh=e=>e.kind===`literal`&&typeof e.value!=`object`,uh=e=>Po(``,e,2)===void 0;function dh(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&&ch(i)?i:void 0,o=a===void 0?r:r.slice(0,-1);if(o.some(ch))return t(`whose options (dict …) is not its last argument — ${sh}`);if(i!==void 0&&a===void 0&&!lh(i)&&uh(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=Po(`whose trigger`,o.length,2);if(s!==void 0)return t(`${s} — ${sh}`);let c=a===void 0?{}:Hf(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=ah(c)}catch(e){return t(`with invalid options — ${e.message}`)}let u=l.key;if(u!==void 0){let e=$s(u);if(e!==void 0)return t(`whose accordion key "${u}" lands in the reserved "${e}" namespace — a key is collapsed to an identifier (${JSON.stringify(u)} becomes "${$m(u)}"), so it would share one open-state key with the synthesized accordion that owns that namespace instead of grouping only your own menus. Name the group without the reserved prefix`)}return{kind:`ok`,apply:n.value,options:l}}function fh(e){let t=Qu({fromString:e=>e});try{return t.parse(e).referencedCalls().filter(e=>e.name===oh).map(dh)}catch{return`parse-failed`}}function ph(e){let t=Qu({fromString:e=>e});try{return t.parse(e).referencedFunctions().has(oh)}catch{return!1}}function mh(e,t,n){e.issues.push({path:t,message:n,line:W(e.source,[`root`])})}function hh(e,t){ec(e,t,Js,`{{ menu }} helpers`);for(let[n,r]of Object.entries(t.helpers??{}))ph(r)&&e.issues.push({path:`helpers.${n}`,message:`helper "${n}" uses {{ menu }}, but a menu must live directly in a segment template — its identity is derived from the segment it sits in, which a shared helper does not have. Inline the {{ menu }} call into each segment that needs it.`,line:W(e.source,[`helpers`,n])});let n=t.segments??{};for(let[t,r]of Object.entries(n))for(let n of[`bg`,`fg`,`when`]){let i=r[n];typeof i==`string`&&ph(i)&&mh(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 Ia(Do(t.root)))typeof n.when==`string`&&ph(n.when)&&mh(e,`root`,`a layout node's "when" predicate uses {{ menu }} — a menu is only valid in a segment's "template", not a node predicate. Move it into a segment.`);let r=new Set,i={},a=new Set,o=new Map;for(let[t,{template:s}]of Object.entries(n)){if(s===void 0||!ph(s))continue;let n=fh(s);if(n!==`parse-failed`)for(let s of n){if(s.kind===`issue`){mh(e,`segments.${t}`,`segment "${t}" has a {{ menu }} ${s.message}.`);continue}let{apply:n,options:c}=s;if(n===``){mh(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=Zm(n);if(l===`closed`){mh(e,`segments.${t}`,`segment "${t}" has a {{ menu }} whose apply action is named "${Mo}", which collides with the menu's closed-state sentinel and leaves it unopenable. Rename the action.`);continue}let u=Qm(t,n,c.key),d=th(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){mh(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=eh(u,l);if(a.has(m)){mh(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]=Ho(u,l)}}if(r.size===0)return;let s={};for(let e of r){s[e]=Vo(e,Mo);let t=th(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 gh=`edit.mode`,_h=`edit.toggle`,vh=`open`,yh={variable:gh,key:gh,member:vh},bh=Ro(yh);function xh(e){let t=Qu({fromString:e=>e});try{return t.parse(e).referencedCalls().some(e=>e.name===`action`&&e.args[0]===`edit.toggle`)}catch{return!1}}function Sh(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`&&xh(e))return!0;return!1}function Ch(e,t){if(ec(e,t,Ys,`edit mode`),!Sh(t))return;let n={[gh]:Vo(gh,Mo)},r={[_h]:Ho(gh,vh)};t.variables={...t.variables??{},...n},t.actions={...t.actions??{},...r}}function wh(e){return e.op===`remove`?`remove:${e.target}`:`insert:${e.segment}:${e.anchor}:${e.relation}`}function Th(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 Eh(e){let t=new Set;for(let n of Ia(e))n.kind===`segment`&&t.add(n.name);return t}const Dh=`default`,Oh={};function kh(e){return[...new Set([Dh,...Object.keys(e)])]}function Ah(e,t,n){return Si(void 0,e,t,Dh,n)}function jh(e,t){let n={[Dh]:Oh,...e}[t];if(n===void 0)throw Error(`Preset "${t}" is not declared in this config — effectivePresetName collapses unknown names to "${Dh}", which always resolves; a miss here means a raw name reached this function without going through that resolution`);return n}function Mh(e,t){let n=jh(e.presets,t).root??So;return{node:Eo(Oo(n,e.root)),path:ko(n)?`presets.${t}.root`:`root`}}function Nh(e,t){return{...e.globals,...jh(e.presets,t).globals}}const Ph=/^segments\.([^.]+)\.palette$/,Fh=/^presets\.(.+)\.root$/;function Ih(e){return`presets.${e}.root`}function Lh(e){if(os(e))return{scope:`globals`,field:e};let t=Ph.exec(e);if(t)return{scope:`segment-palette`,segment:t[1]};let n=Fh.exec(e);return n?{scope:`preset-root`,preset:n[1]}:null}function Rh(e){return e.scope===`globals`?[`globals`,e.field]:[`segments`,e.segment,`palette`]}const zh=`open`;function Bh(e,t,n,r){let i={variable:e,key:e,member:zh};return r.variables[e]=Vo(e,Mo),r.actions[e]=Ho(e,zh),r.segments[e]={template:Bo(e,`(?)`,`✕`),...Vh(n)},Lo(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 Vh(e){let[t,...n]=e;return t===void 0?{}:{when:Ro(t,...n)}}const Hh={help:[`-h`,`--help`],version:[`-V`,`--version`]},Uh=[`+ inserts here`,`- removes the one left of it`,`↺ undoes edits`],Wh=[`☐ this session only`,`☑ default for every session`],Gh=`
50
+ `)}function vm(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 ym(e,t){let n=[];for(let e of t){if(typeof e==`object`&&e)throw lp(`join`,2,`list of strings/primitives`,`list element of type ${bm(e)}`);n.push(String(e))}return n.join(e)}function bm(e){return Array.isArray(e)?`array`:e instanceof Map?`Map`:e instanceof Set?`Set`:`object`}function xm(e){return um(e,`-`)}function Sm(e){return e.toLowerCase()}function Cm(e,t){return`\n${_m(e,t)}`}function wm(e){return e.replace(/\s+/g,``)}function Tm(e,t,n){return n===1?e:t}function Em(...e){return e.map(e=>`"${e}"`).join(` `)}function Dm(e){return e.replace(/[\\.+*?()|[\]{}^$]/g,`\\$&`)}function Om(e,t){return t.repeat(Math.max(0,e))}function km(e,t,n){return n.split(e).join(t)}function Am(e){return um(e,`_`)}function jm(e,t){let n=t.split(e),r={};for(let e=0;e<n.length;e++)r[`_${e}`]=n[e];return r}function Mm(e,t){return t.split(e)}function Nm(e,t,n){let r=Pm(n,e,t),i={};for(let e=0;e<r.length;e++)i[`_${e}`]=r[e]??``;return i}function Pm(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 Fm(...e){return e.map(e=>`'${e}'`).join(` `)}function Im(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 Lm(e){let t=``;for(let n of e)Rm(n)?t+=n.toLowerCase():zm(n)?t+=n.toUpperCase():t+=n;return t}function Rm(e){return e!==e.toLowerCase()&&e===e.toUpperCase()}function zm(e){return e!==e.toUpperCase()&&e===e.toLowerCase()}function Bm(e){return e.replace(/\b([a-zA-Z])/g,e=>e.toUpperCase())}function Vm(e){return e.trim()}function Hm(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 Um(e,t){return t.startsWith(e)?t.slice(e.length):t}function Wm(e,t){return t.endsWith(e)?t.slice(0,t.length-e.length):t}function Gm(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 Km(e){return e.replace(/\b([A-Z])/g,e=>e.toLowerCase())}function qm(e){return e.toUpperCase()}function Jm(e,t){return Ym(e,`
51
+ `,t)}function Ym(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 Xm(e,t,n){return Ym(e,t,n)}function Zm(){return{abbrev:{fn:(e,t)=>Xp(e,t),argTypes:[`int`,`string`]},abbrevboth:{fn:(e,t,n)=>Zp(e,t,n),argTypes:[`int`,`int`,`string`]},camelcase:{fn:e=>fm(e),argTypes:[`string`],returnType:`string`},cat:{fn:(...e)=>pm(...e),argTypes:[`string`]},contains:{fn:(e,t)=>mm(e,t),argTypes:[`string`,`string`]},hasPrefix:{fn:(e,t)=>hm(e,t),argTypes:[`string`,`string`]},hasSuffix:{fn:(e,t)=>gm(e,t),argTypes:[`string`,`string`]},indent:{fn:(e,t)=>_m(e,t),argTypes:[`int`,`string`]},initials:{fn:e=>vm(e),argTypes:[`string`]},join:{fn:(e,t)=>ym(e,t),argTypes:[`string`,`list`]},kebabcase:{fn:e=>xm(e),argTypes:[`string`],returnType:`string`},lower:{fn:e=>Sm(e),argTypes:[`string`]},nindent:{fn:(e,t)=>Cm(e,t),argTypes:[`int`,`string`]},nospace:{fn:e=>wm(e),argTypes:[`string`],returnType:`string`},plural:{fn:(e,t,n)=>Tm(e,t,n),argTypes:[`string`,`string`,`int`],returnType:`string`},quote:{fn:(...e)=>Em(...e),argTypes:[`string`]},regexQuoteMeta:{fn:e=>Dm(e),argTypes:[`string`],returnType:`string`},repeat:{fn:(e,t)=>Om(e,t),argTypes:[`int`,`string`]},replace:{fn:(e,t,n)=>km(e,t,n),argTypes:[`string`,`string`,`string`]},snakecase:{fn:e=>Am(e),argTypes:[`string`],returnType:`string`},split:{fn:(e,t)=>jm(e,t),argTypes:[`string`,`string`]},splitList:{fn:(e,t)=>Mm(e,t),argTypes:[`string`,`string`]},splitn:{fn:(e,t,n)=>Nm(e,t,n),argTypes:[`string`,`int`,`string`],returnType:`dict`},squote:{fn:(...e)=>Fm(...e),argTypes:[`string`]},substr:{fn:(e,t,n)=>Im(e,t,n),argTypes:[`int`,`int`,`string`]},swapcase:{fn:e=>Lm(e),argTypes:[`string`],returnType:`string`},title:{fn:e=>Bm(e),argTypes:[`string`]},trim:{fn:e=>Vm(e),argTypes:[`string`]},trimAll:{fn:(e,t)=>Hm(e,t),argTypes:[`string`,`string`]},trimPrefix:{fn:(e,t)=>Um(e,t),argTypes:[`string`,`string`]},trimSuffix:{fn:(e,t)=>Wm(e,t),argTypes:[`string`,`string`]},trunc:{fn:(e,t)=>Gm(e,t),argTypes:[`int`,`string`]},untitle:{fn:e=>Km(e),argTypes:[`string`]},upper:{fn:e=>qm(e),argTypes:[`string`]},wrap:{fn:(e,t)=>Jm(e,t),argTypes:[`int`,`string`]},wrapWith:{fn:(e,t,n)=>Xm(e,t,n),argTypes:[`int`,`string`,`string`]}}}function Qm(e){return e}function $m(e,t,n){return n===void 0?Ys+qs(e)+`.`+qs(t):eh(n)}function eh(e){return Ys+qs(e)}function th(e,t){return e+`.`+t}function nh(e){return e+`.page`}const rh=[`closeOnPick`,`paged`,`key`,`distribution`],ih=e=>rh.includes(e),ah=`"closeOnPick" (bool, default false), "paged" (bool, default true), "key" (string, accordion grouping), "distribution" (one of ${hc.map(e=>`"${e}"`).join(`, `)}; default "van-der-corput")`;function oh(e){for(let t of Object.keys(e))if(!ih(t))throw Error(`unknown {{ menu }} option "${t}" — the options dict takes ${ah}`);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&&!gc(r))throw Error(`{{ menu }} option "distribution" must be one of: ${hc.join(`, `)}; got ${JSON.stringify(r)}`);return{closeOnPick:t(`closeOnPick`,!1),paged:t(`paged`,!0),key:n,distribution:vc(r)}}const sh=`menu`,ch=`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`,lh=e=>e.kind===`call`&&e.name===`dict`,uh=e=>e.kind===`literal`&&typeof e.value!=`object`,dh=e=>Fo(``,e,2)===void 0;function fh(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&&lh(i)?i:void 0,o=a===void 0?r:r.slice(0,-1);if(o.some(lh))return t(`whose options (dict …) is not its last argument — ${ch}`);if(i!==void 0&&a===void 0&&!uh(i)&&dh(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=Fo(`whose trigger`,o.length,2);if(s!==void 0)return t(`${s} — ${ch}`);let c=a===void 0?{}:Uf(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=oh(c)}catch(e){return t(`with invalid options — ${e.message}`)}let u=l.key;if(u!==void 0){let e=ec(u);if(e!==void 0)return t(`whose accordion key "${u}" lands in the reserved "${e}" namespace — a key is collapsed to an identifier (${JSON.stringify(u)} becomes "${eh(u)}"), so it would share one open-state key with the synthesized accordion that owns that namespace instead of grouping only your own menus. Name the group without the reserved prefix`)}return{kind:`ok`,apply:n.value,options:l}}function ph(e){let t=$u({fromString:e=>e});try{return t.parse(e).referencedCalls().filter(e=>e.name===sh).map(fh)}catch{return`parse-failed`}}function mh(e){let t=$u({fromString:e=>e});try{return t.parse(e).referencedFunctions().has(sh)}catch{return!1}}function hh(e,t,n){e.issues.push({path:t,message:n,line:W(e.source,[`root`])})}function gh(e,t){tc(e,t,Ys,`{{ menu }} helpers`);for(let[n,r]of Object.entries(t.helpers??{}))mh(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`&&mh(i)&&hh(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 La(Oo(t.root)))typeof n.when==`string`&&mh(n.when)&&hh(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||!mh(s))continue;let n=ph(s);if(n!==`parse-failed`)for(let s of n){if(s.kind===`issue`){hh(e,`segments.${t}`,`segment "${t}" has a {{ menu }} ${s.message}.`);continue}let{apply:n,options:c}=s;if(n===``){hh(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=Qm(n);if(l===`closed`){hh(e,`segments.${t}`,`segment "${t}" has a {{ menu }} whose apply action is named "${No}", which collides with the menu's closed-state sentinel and leaves it unopenable. Rename the action.`);continue}let u=$m(t,n,c.key),d=nh(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){hh(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=th(u,l);if(a.has(m)){hh(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]=Uo(u,l)}}if(r.size===0)return;let s={};for(let e of r){s[e]=Ho(e,No);let t=nh(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`,vh=`edit.toggle`,yh=`open`,bh={variable:_h,key:_h,member:yh},xh=zo(bh);function Sh(e){let t=$u({fromString:e=>e});try{return t.parse(e).referencedCalls().some(e=>e.name===`action`&&e.args[0]===`edit.toggle`)}catch{return!1}}function Ch(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`&&Sh(e))return!0;return!1}function wh(e,t){if(tc(e,t,Xs,`edit mode`),!Ch(t))return;let n={[_h]:Ho(_h,No)},r={[vh]:Uo(_h,yh)};t.variables={...t.variables??{},...n},t.actions={...t.actions??{},...r}}function Th(e){return e.op===`remove`?`remove:${e.target}`:`insert:${e.segment}:${e.anchor}:${e.relation}`}function Eh(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 Dh(e){let t=new Set;for(let n of La(e))n.kind===`segment`&&t.add(n.name);return t}const Oh=`default`,kh={};function Ah(e){return[...new Set([Oh,...Object.keys(e)])]}function jh(e,t,n){return Si(void 0,e,t,Oh,n)}function Mh(e,t){let n={[Oh]:kh,...e}[t];if(n===void 0)throw Error(`Preset "${t}" is not declared in this config — effectivePresetName collapses unknown names to "${Oh}", which always resolves; a miss here means a raw name reached this function without going through that resolution`);return n}function Nh(e,t){let n=Mh(e.presets,t).root??Co;return{node:Do(ko(n,e.root)),path:Ao(n)?`presets.${t}.root`:`root`}}function Ph(e,t){return{...e.globals,...Mh(e.presets,t).globals}}const Fh=/^segments\.([^.]+)\.palette$/,Ih=/^presets\.(.+)\.root$/;function Lh(e){return`presets.${e}.root`}function Rh(e){if(ss(e))return{scope:`globals`,field:e};let t=Fh.exec(e);if(t)return{scope:`segment-palette`,segment:t[1]};let n=Ih.exec(e);return n?{scope:`preset-root`,preset:n[1]}:null}function zh(e){return e.scope===`globals`?[`globals`,e.field]:[`segments`,e.segment,`palette`]}const Bh=`open`;function Vh(e,t,n,r){let i={variable:e,key:e,member:Bh};return r.variables[e]=Ho(e,No),r.actions[e]=Uo(e,Bh),r.segments[e]={template:Vo(e,`(?)`,`✕`),...Hh(n)},Ro(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 Hh(e){let[t,...n]=e;return t===void 0?{}:{when:zo(t,...n)}}const Uh={help:[`-h`,`--help`],version:[`-V`,`--version`]},Wh=[`+ inserts here`,`- removes the one left of it`,`↺ undoes edits`],Gh=[`☐ this session only`,`☑ default for every session`],Kh=`
53
53
  cc-candybar - Beautiful powerline statusline for Claude Code
54
54
 
55
55
  Usage: cc-candybar [options]
56
56
 
57
57
  Standalone Commands:
58
- ${Hh.help.join(`, `).padEnd(25)}Show this help
59
- ${Hh.version.join(`, `).padEnd(25)}Print the version of this runtime (cc-candybar <version>)
58
+ ${Uh.help.join(`, `).padEnd(25)}Show this help
59
+ ${Uh.version.join(`, `).padEnd(25)}Print the version of this runtime (cc-candybar <version>)
60
60
 
61
61
  Debugging:
62
62
  CC_CANDYBAR_DEBUG=1 Enable debug logging for troubleshooting
@@ -69,15 +69,15 @@ Configuration:
69
69
 
70
70
  Every bar carries a settings menu, whatever your config says — no config
71
71
  needed, and writing your own \`root\` cannot delete it. Click
72
- it on the bar (${No} by default; globals.menuGlyph changes it) for
72
+ it on the bar (${Po} by default; globals.menuGlyph changes it) for
73
73
  quick actions, preset switching, edit mode, and a config menu
74
74
  of clickable theme/look/style/wrap/padding controls. The \`persist?\`
75
- checkbox there chooses where a change lands: ${Wh.join(`, `)}.
75
+ checkbox there chooses where a change lands: ${Gh.join(`, `)}.
76
76
  Its 🧰 tools row holds 🩺 doctor: click it to check your setup, and click a
77
77
  failed row's [fix] to repair it (the same checks \`cc-candybar doctor\` runs).
78
78
 
79
79
  Anywhere the bar shows (?), clicking it reveals these same instructions
80
- in place. In edit mode: ${Uh.join(`, `)}.
80
+ in place. In edit mode: ${Wh.join(`, `)}.
81
81
 
82
82
  Subcommands:
83
83
  install One-shot setup: stages the runtime (native render
@@ -115,35 +115,35 @@ Config tooling:
115
115
  config [--json] The effective merged config. (All three query the
116
116
  running daemon; none spawn one.)
117
117
 
118
- `,Kh=`preset.customized`,qh=`{{ and ${zo(yh)} .${Kh} }}`,Jh=Qs;function Yh(e){return`${Ys}addable.${e}`}function Xh(e){let t=Object.keys(e.segments).filter(e=>!Jh(e)),n=new Map;for(let r of kh(e.presets)){let{node:i}=Mh(e,r),a=Eh(i);n.set(Yh(r),{members:t.filter(e=>!a.has(e))})}return n}function Zh(e,t,n,r){let i=`${Ys}${e}.remove.${Ks(n)}`,a=`${Ys}${e}.removeSeg.${Ks(n)}`;return r.actions[i]={persist:t,removeSegment:n},r.segments[a]={template:`{{ action "${i}" "-" }}`,when:bh},{kind:`segment`,name:a}}function Qh(e,t,n,r,i,a,o){let s=`${Ys}${e}.insert.${n}`,c=`${Ys}${e}.insertSeg.${n}`;o.actions[s]={persist:t,insertSegmentFrom:r,anchor:i,relation:a};let l=Zm(s),u=Qm(c,s,void 0),d=th(u),f=eh(u,l);return o.variables[u]=Vo(u,Mo),o.variables[d]={kind:`state`,key:d,default:`0`},o.actions[f]=Ho(u,l),o.actions[d]={set:d,int:!0},o.segments[c]={template:`{{ menu "${s}" "+" "✕" }}`,when:bh},{kind:`segment`,name:c}}function $h(e,t,n,r,i,a){let o=[],s=e.children.reduce((e,t,n)=>t.kind===`segment`&&!Jh(t.name)?n:e,-1),c=e=>$h(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=Fa(u,c);if(Jh(u.name)){o.push(d);continue}let f=[Qh(t,n,String(a.n++),r,u.name,`before`,i),d,Zh(t,n,u.name,i),...l===s?[Qh(t,n,String(a.n++),r,u.name,`after`,i)]:[]];o.push(...e.direction===`vertical`?[{kind:`container`,direction:`horizontal`,children:f,...u.when!==void 0&&{when:u.when}}]:f)}return{...e,children:o}}function eg(e,t,n,r,i,a){let o=`${Ys}${n}.resetLayout`,s=`${Ys}${n}.customized`;i.actions[o]={reset:r},i.ensured[Kh]={kind:`input`,path:Kh,type:`boolean`,default:!1};let c=Io(t);return i.segments[s]={template:`{{ action "${o}" "↺ ${c} customized" }}`,when:qh},{kind:`container`,direction:`vertical`,children:[{kind:`segment`,name:s},tg(e,a)]}}function tg(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),tg(n,t)]}:{...e,children:[...e.children,t]}}function ng(e,t,n,r){let{node:i}=Mh(e,t),a=Ih(t),o=Yh(t),s=Ks(t);return eg($h(i,s,a,o,n,{n:0}),t,s,a,n,r)}function rg(e){if(!(`edit.toggle`in e.actions))return e;let t={variables:{},ensured:{},actions:{},segments:{}},n=Bh(`${Ys}help`,Uh,[yh],t),r={...e.presets};for(let i of kh(e.presets)){let a=ng(e,i,t,n);r[i]={...jh(e.presets,i),root:a}}return{...e,variables:{...t.ensured,...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:r}}const ig={socket:`TMUX`,pane:`TMUX_PANE`,truecolor:`CLAUDE_CODE_TMUX_TRUECOLOR`};function ag(e){let t=e[ig.socket]??``,n=e[ig.pane]??``;if(t===``||n===``)return null;let r=e[ig.truecolor]??``;return{socket:t.split(`,`)[0],pane:n,truecolor:r===``?null:r}}const og=ig.truecolor,sg=[{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[og];return typeof n==`string`&&n!==``?{ok:!1,reason:`${og} 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:og,value:`1`}}}}}}];function cg(e){return sg.map(t=>({check:t,verdict:t.probe(e)}))}function lg(e){return sg.find(t=>t.name===e)}function ug(e){let t=`settings.doctor.${e}.`;return{verdict:`${t}verdict`,reason:`${t}reason`,fixable:`${t}fixable`}}function dg(e){return e.flatMap(({check:e,verdict:t})=>{let n=ug(e.name);return t.ok?[{key:n.verdict,value:`ok`},{key:n.reason,value:``},{key:n.fixable,value:Ii}]:[{key:n.verdict,value:`failed`},{key:n.reason,value:t.reason},{key:n.fixable,value:t.fix===void 0?Ii:Fi}]})}const fg={copySession:{copy:`{{ .session.id }}`},openProject:{open:`{{ .project_dir }}`},openTranscript:{open:`{{ .transcript_path }}`}};function pg(e){let t=t=>`${e}${t}`;return{template:`{{ action "${t(`copySession`)}" "⎘ id" }} {{ action "${t(`openProject`)}" "↗ proj" }} {{ action "${t(`openTranscript`)}" "↗ log" }}{{ if ne .git.repoUrl "" }} {{ link .git.repoUrl "↗ repo" }}{{ end }}`,actions:Object.fromEntries(Object.entries(fg).map(([t,n])=>[`${e}${t}`,n]))}}const mg=`${Xs}menu`,hg=vh,gg=`${Xs}edit`,_g=`${Xs}close`,vg=`${Xs}toolbar`,yg=pg(Xs),bg=`${Xs}persist`,xg=`${Xs}config`,Sg=bg,Cg={variable:mg,key:mg,member:hg},wg={variable:xg,key:xg,member:hg},Tg=`${Xs}tools`,Eg={variable:Tg,key:Tg,member:hg},Dg=`${Xs}doctor`,Og=`${Dg}.run`,kg=e=>`${Dg}.fix.${e}`,Ag=e=>`${Dg}.${e}`,jg=`${Xs}help.persist`,Mg=`${Xs}pickers`,Ng=[{name:`preset`,sessionKey:`preset`,configKey:`preset`,effectiveVar:`preset.effective`,glyph:`▦`,domain:`presets`}],Pg=[{name:`theme`,sessionKey:`theme`,configKey:`palette`,effectiveVar:`theme.effective`,glyph:`🎨`,domain:`themes`},{name:`look`,sessionKey:`look`,configKey:`look`,effectiveVar:`look.effective`,glyph:`◐`,domain:`looks`},{name:`style`,sessionKey:`style`,configKey:`style`,effectiveVar:`style.effective`,glyph:`✦`,domain:`styles`}],Fg={name:`wrap`,sessionKey:`autoWrap`,configKey:`autoWrap`},Ig={name:`padding`,sessionKey:`padding`,configKey:`padding`},Lg=`${Xs}${Fg.name}`,Rg=`${Xs}${Ig.name}`,zg=[...Ng,...Pg];new Set([...zg,Fg,Ig].flatMap(e=>[e.sessionKey,e.configKey]));const Bg=e=>`${Xs}${e}`,Vg=e=>`${Xs}apply.${e}`,Hg=e=>`${Xs}reset.${e}`;function Ug(e){return e===mg}function Wg(e){let t={kind:`segment`,name:mg};if(e.kind===`container`&&e.direction===`vertical`){let[n,...r]=e.children;return e.when===void 0&&n!==void 0?{...e,children:[Wg(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 Gg(e){return Kg(e)>0?e:Wg(e)}function Kg(e){let t=0;for(let n of Ia(e))n.kind===`segment`&&Ug(n.name)&&(t+=1);return t}function qg(e,t=!1){let n=t||e.when!==void 0;return e.kind===`segment`?n&&Ug(e.name)||e.opens!==void 0&&qg(e.opens.body,!0):e.children.some(e=>qg(e,n))}function Jg(e,t){return e.kind===`segment`?Ug(e.name)?Lo(e.name,Cg,{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:vg},{kind:`segment`,name:bg},t,...Ng.map(e=>({kind:`segment`,name:Bg(e.name)})),Lo(xg,wg,{kind:`container`,direction:`horizontal`,children:[...Pg.map(e=>({kind:`segment`,name:Bg(e.name)})),{kind:`segment`,name:Lg},{kind:`segment`,name:Rg}]},`drop`),Lo(Tg,Eg,{kind:`container`,direction:`vertical`,children:[{kind:`segment`,name:Dg},...sg.map(e=>({kind:`segment`,name:Ag(e.name)}))]},`drop`),{kind:`segment`,name:gg}]},`inline`):e:Yg(e,t)}function Yg(e,t){return{...e,children:e.children.map(e=>Jg(e,t))}}function Xg(e,t,n,r){let i=Zm(t),a=Qm(e,t,r),o=th(a);n.variables[a]=Vo(a,Mo),n.variables[o]={kind:`state`,key:o,default:`0`},n.actions[eh(a,i)]=Ho(a,i),n.actions[o]={set:o,int:!0}}function Zg(e){let t={variables:{[mg]:Vo(mg,Mo)},actions:{[mg]:Ho(mg,hg),[xg]:Ho(xg,hg),[Tg]:Ho(Tg,hg),[Og]:{doctor:`run`},[_g]:{set:Cg.key,to:Mo},[gg]:{do:[_h,_g]},...yg.actions,[bg]:{set:Sg,cycle:[Ii,Fi]}},segments:{[mg]:{template:Bo(mg,e,`❌`)},[vg]:{template:yg.template},[bg]:{template:`{{ action "${bg}" "☐ persist?" "☑ persist?" }}`},[xg]:{template:Bo(xg,`⚙ config ▸`,`⚙ config ▾`)},[Tg]:{template:Bo(Tg,`🧰 tools ▸`,`🧰 tools ▾`)},[Dg]:{template:`{{ action "${Og}" "🩺 doctor" }}`},[Lg]:{template:`{{ action "${Vg(`wrap`)}" "wrap: on" "wrap: off" }} {{ action "${Hg(`wrap`)}" "↺" }}`},[Rg]:{template:`{{ action "${Vg(`padding`)}.down" "◀" }} padding {{ .padding.effective }} {{ action "${Vg(`padding`)}.up" "▶" }} {{ action "${Hg(`padding`)}" "↺" }}`},[gg]:{template:`{{ action "${gg}" "✎ edit" "✎ done" }}`}}};return t.variables[Sg]={kind:`state`,key:Sg,default:Ii},t.variables[xg]=Vo(xg,Mo),t.variables[Tg]=Vo(Tg,Mo),$g(t),Qg(t),{artifacts:t,help:Bh(jg,Wh,[Cg],t)}}function Qg(e){for(let t of sg){let n=ug(t.name),r=kg(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[Ag(t.name)]={when:`{{ ne .${n.verdict} "" }}`,template:`{{ if eq .${n.verdict} "ok" }}✓ ${t.label}{{ else }}✗ ${t.label} — {{ .${n.reason} }}{{ if eq .${n.fixable} "${Fi}" }} {{ action "${r}" "[fix]" }}{{ end }}{{ end }}`}}}function $g(e){for(let t of zg){let n=Bg(t.name),r=Vg(t.name);e.segments[n]={template:`${t.glyph} {{ .${t.effectiveVar} }} {{ menu "${r}" "▸" "▾" (dict "key" "${Mg}") }} {{ action "${Hg(t.name)}" "↺" }}`},e.actions[r]={set:t.sessionKey,persist:t.configKey,persistWhen:Sg,from:t.domain},e.actions[Hg(t.name)]={reset:t.configKey},Xg(n,r,e,Mg)}e.actions[Vg(Fg.name)]={set:Fg.sessionKey,persist:Fg.configKey,persistWhen:Sg,cycle:[...Li]},e.actions[Hg(Fg.name)]={reset:Fg.configKey};for(let t of[-1,1])e.actions[`${Vg(Ig.name)}.${t<0?`down`:`up`}`]={set:Ig.sessionKey,persist:Ig.configKey,persistWhen:Sg,...Ri,by:t};e.actions[Hg(Ig.name)]={reset:Ig.configKey}}function e_(e){e.variables[gh]=Vo(gh,Mo),e.actions[_h]=Ho(gh,vh)}const t_=`session.id`;function n_(e){return Object.prototype.hasOwnProperty.call(e.variables,t_)}function r_(e){if(!n_(e))return e;let{artifacts:t,help:n}=Zg(e.globals.menuGlyph??`🍫`);e_(t);let r={...e.presets};for(let t of kh(e.presets)){let{node:i}=Mh(e,t);r[t]={...jh(e.presets,t),root:Jg(Gg(i),n)}}return{...e,variables:{...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:r}}const i_=[`set`,`persist`,`copy`,`open`,`reset`,`undo`,`redo`,`doctor`,`do`],a_=`persistWhen`;function o_(e){return a_ in e}function s_(e){return o_(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 c_(e){return`from`in e||`int`in e||`insertSegmentFrom`in e}function l_(e){return`set`in e}function u_(e){return`persist`in e}function d_(e){return`reset`in e}function f_(e){return`undo`in e}function p_(e){return`redo`in e}function m_(e){return`doctor`in e}function h_(e,t){if(t===void 0)return{};if(!Xa(t))return J(e,`actions`,`actions must be an object, got ${Za(t)}`),{};let n=Object.create(null);for(let[r,i]of Object.entries(t)){let t=g_(e,`actions.${r}`,i);t!==null&&(n[r]=t)}return n}function J(e,t,n){e.issues.push({path:t,message:n,line:W(e.source,t.split(`.`))})}function g_(e,t,n){if(!Xa(n))return J(e,t,`${t} must be an action object, got ${Za(n)}`),null;if(`persistWhen`in n)return Y_(e,t,n,`dual`,K_);let r=i_.filter(e=>e in n);return r.length===1?__[r[0]](e,t,n):(J(e,t,`action must declare exactly one of: ${i_.join(`, `)}${r.length>1?` (found: ${r.join(`, `)})`:``}`),null)}const __={set:(e,t,n)=>Y_(e,t,n,`set`,W_),persist:(e,t,n)=>Y_(e,t,n,`persist`,G_),copy:v_(`copy`),open:v_(`open`),reset:y_,undo:b_(`undo`),redo:b_(`redo`),doctor:x_,do:S_};function v_(e){return(t,n,r)=>{for(let i of Object.keys(r))i!==e&&J(t,`${n}.${i}`,`Unknown key "${i}" on a ${e} action. Expected only: ${e}`);let i=Ga(t,n,r,e);return i===null?null:{[e]:i}}}function y_(e,t,n){for(let r of Object.keys(n))r!==`reset`&&J(e,`${t}.${r}`,`Unknown key "${r}" on a reset action. Expected only: reset`);let r=C_(e,t,`reset`,n,`reset key must be non-empty (the config globals field to clear)`,e=>`reset key "${e}" contains "/" — keys must be slash-free`);return r===null?null:{reset:r}}function b_(e){return(t,n,r)=>{for(let i of Object.keys(r))i!==e&&J(t,`${n}.${i}`,`Unknown key "${i}" on a ${e} action. Expected only: ${e}`);return r[e]===!0?{[e]:!0}:(J(t,`${n}.${e}`,`${e} must be the literal true (it takes no key — it steps the history of the session's config file), got ${G(r[e])}`),null)}}function x_(e,t,n){let r=n.doctor,i=r===`run`?[`doctor`]:[`doctor`,`check`];for(let r of Object.keys(n))i.includes(r)||J(e,`${t}.${r}`,`Unknown key "${r}" on a doctor action. Expected only: ${i.join(`, `)}`);if(r!==`run`&&r!==`fix`)return J(e,`${t}.doctor`,`doctor must be "run" or "fix", got ${G(r)}`),null;if(r===`run`)return{doctor:`run`};let a=n.check;return typeof a!=`string`||lg(a)===void 0?(J(e,`${t}.check`,`doctor fix must name a check (have: ${sg.map(e=>e.name).join(`, `)}), got ${G(a)}`),null):{doctor:`fix`,check:a}}function S_(e,t,n){for(let r of Object.keys(n))r!==`do`&&J(e,`${t}.${r}`,`Unknown key "${r}" on a do action. Expected only: do`);let r=n.do;return!Array.isArray(r)||r.length<2||r.some(e=>typeof e!=`string`||e===``)?(J(e,`${t}.do`,`do must list at least two action names (the first is the click's face, the rest ride along in the same click), got ${G(r)}`),null):{do:r}}function C_(e,t,n,r,i,a){let o=Ga(e,t,r,n);if(o===null)return null;let s=`${t}.${n}`;return o===``?(J(e,s,i),null):o.includes(`/`)?(J(e,s,a(o)),null):o}const w_={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`],[a_,`the SessionState key whose boolean value chooses the destination`]]};function T_(e,t,n,r){let i={},a=w_[r],o=!0;for(let[r,s]of a){if(!(r in n)){J(e,t,`${r} is required here (${s}) — a dual-destination action declares ${a.map(([e])=>e).join(`, `)} together, plus one value source`),o=!1;continue}let c=C_(e,t,r,n,`${r} key must be non-empty (${s})`,e=>`${r} key "${e}" contains "/" — keys must be slash-free`);if(c===null){o=!1;continue}i[r]=c}return o?i:null}function E_(e){return e===`set`?`set-state`:e===`persist`?`set-config`:`set-state/set-config`}const D_={to:X_(`set`)},O_={to:X_(`persist`)},k_={from:Z_(`set`)},A_={from:Z_(`persist`)},j_={min:nv(),max:nv(),by:nv()},M_={int:$_()},N_={cycle:Q_(`set`)},P_={to:X_(`dual`)},F_={from:Z_(`dual`)},I_={cycle:Q_(`dual`)},L_={cycle:Q_(`persist`)},R_={removeSegment:ev(`removeSegment`)},z_={insertSegment:ev(`insertSegment`),anchor:ev(`anchor`),relation:tv()},B_={insertSegmentFrom:Z_(`persist`),anchor:ev(`anchor`),relation:tv()},V_={ok:e=>e.min<e.max,issue:e=>({field:`min`,message:`min (${e.min}) must be less than max (${e.max})`})},H_={ok:e=>e.by!==0,issue:()=>({field:`by`,message:`by must be a non-zero integer (the per-click increment; negative steps down)`})};function U_(e,t,n=[],r){let i=Object.keys(t),a=r??i,o=w_[e].map(([e])=>e),s=(e,n,r)=>$a(e,t,n,r),c=ho(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?so(s,...n):s}}const W_=[U_(`set`,D_),U_(`set`,k_),U_(`set`,j_,[V_,H_]),U_(`set`,M_),U_(`set`,N_)],G_=[U_(`persist`,O_),U_(`persist`,A_),U_(`persist`,j_,[V_,H_]),U_(`persist`,L_),U_(`persist`,R_),U_(`persist`,z_,[],[`insertSegment`]),U_(`persist`,B_,[],[`insertSegmentFrom`])],K_=[U_(`dual`,P_),U_(`dual`,F_),U_(`dual`,j_,[V_,H_]),U_(`dual`,I_)];function q_(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 J_(e){let t=q_(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 Y_(e,t,n,r,i){let a=T_(e,t,n,r),o=i.filter(e=>e.detect.some(e=>e in n));if(o.length!==1)return J(e,t,`${J_(r)}${o.length>1?` — found: ${o.map(e=>e.label).join(`, `)}`:``}`),null;let s=o[0];for(let i of Object.keys(n))s.allowed.includes(i)||J(e,`${t}.${i}`,`Unknown key "${i}" on this ${r} action. Expected one of: ${s.allowed.join(`, `)}`);let c=s.parse(e,t,n);return a===null||c===null?null:{...a,...c}}function X_(e){let t=E_(e);return{required:!0,json:{type:`string`},parse:(n,r,i,a)=>C_(n,r,i,a,`${e} value must be non-empty — an empty value cannot be delivered on the ${t} wire`,t=>`${e} value "${t}" contains "/" — ${e} values must be slash-free`)??void 0}}function Z_(e){let t=E_(e);return{required:!0,json:{anyOf:[{type:`string`,minLength:1},{type:`array`,items:{type:`string`,minLength:1},minItems:1,uniqueItems:!0}]},parse:(n,r,i,a)=>{let o=a[i],s=`${r}.${i}`;if(typeof o==`string`){if(o===``){J(n,s,`${i} must be a non-empty domain name`);return}return o}if(Array.isArray(o)&&o.every(e=>typeof e==`string`)){let r=o;if(r.length===0){J(n,s,`${i} must name a domain (a non-empty string) or declare an inline domain (a non-empty array of values)`);return}if(r.some(e=>e===``)){J(n,s,`${i} array members must be non-empty — an empty value cannot be delivered on the ${t} wire`);return}let a=r.filter(e=>e.includes(`/`));if(a.length>0){J(n,s,`${i} array member(s) ${a.map(e=>`"${e}"`).join(`, `)} contain "/" — ${e} values must be slash-free`);return}if(new Set(r).size!==r.length){J(n,s,`${i} array members must be unique — a duplicated value would render the same picker option twice`);return}return r}J(n,s,`${i} must be a domain name (a string) or an inline domain (an array of strings), got ${G(o)}`)}}}function Q_(e){let t=E_(e);return{required:!0,json:{type:`array`,items:{type:`string`,minLength:1},minItems:2,uniqueItems:!0},parse:(n,r,i,a)=>{let o=a[i],s=`${r}.${i}`;if(!Array.isArray(o)||o.some(e=>typeof e!=`string`)){J(n,s,`cycle must be an array of strings (the enumerated values a click steps through), got ${Za(o)}`);return}let c=o;if(c.length<2){J(n,s,`cycle needs at least two members (one member has no successor — use a literal "to")`);return}let l=c.some(e=>e===``),u=c.filter(e=>e.includes(`/`));if(l){J(n,s,`cycle members must be non-empty — an empty value cannot be delivered on the ${t} wire`);return}if(u.length>0){J(n,s,`cycle member(s) ${u.map(e=>`"${e}"`).join(`, `)} contain "/" — ${e} values must be slash-free`);return}if(new Set(c).size!==c.length){J(n,s,`cycle members must be unique — the successor of a duplicated member is ambiguous`);return}return c}}}function $_(){return{required:!0,json:{const:!0},parse:(e,t,n,r)=>{if(r[n]!==!0){J(e,`${t}.${n}`,`int must be the literal true (declares the key an unbounded integer cursor — a paged picker's page key), got ${G(r[n])}`);return}return!0}}}function ev(e){return{required:!0,json:{type:`string`},parse:(t,n,r,i)=>{let a=Ga(t,n,i,r);if(a===null)return;let o=`${n}.${r}`;if(a===``){J(t,o,`${e} must be non-empty (a segment name)`);return}if(a.includes(`/`)||a.includes(`:`)){J(t,o,`${e} "${a}" contains "/" or ":" — segment names in a layout op must be free of both (the click wire's own delimiter and layout-ops.ts's op-token delimiter)`);return}return a}}}function tv(){return{required:!0,json:{enum:[`before`,`after`]},parse:(e,t,n,r)=>{let i=r[n];if(i!==`before`&&i!==`after`){J(e,`${t}.${n}`,`relation must be "before" or "after", got ${G(i)}`);return}return i}}}function nv(){return{required:!0,json:{type:`integer`},parse:(e,t,n,r)=>{let i=r[n];if(typeof i!=`number`||!Number.isInteger(i)){J(e,`${t}.${n}`,`${n} must be an integer, got ${G(i)}`);return}return i}}}const rv={noun:`look key`,fields:{hueShift:uo(),chromaScale:uo({min:0}),lightnessScale:uo(),lightnessShift:uo()}};function iv(e,t){if(!Xa(t))return e.issues.push({path:`looks`,message:`looks must be an object mapping look names to adaptation objects, got ${Za(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=Qa(e,rv,`looks.${r}`,i);t!==null&&(n[r]={...yn,...t})}return n}const av={noun:`preset key`,fields:{root:{required:!1,json:{$ref:`#/definitions/RootFragment`},parse:(e,t,n,r)=>r[n]===void 0?void 0:il(e,`${t}.${n}`,r[n])},globals:{required:!1,json:rs(),parse:(e,t,n,r)=>r[n]===void 0?void 0:ns(e,`${t}.${n}`,r[n])}}};function ov(e,t){if(!Xa(t))return e.issues.push({path:`presets`,message:`presets must be an object mapping preset names to config fragments, got ${Za(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=Qa(e,av,`presets.${r}`,i);t!==null&&(n[r]=t)}return n}function sv(e,t){if(t===void 0)return{};if(!Xa(t))return e.issues.push({path:`helpers`,message:`helpers must be an object, got ${Za(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 cv=new Map,lv=new Map;function uv(e){let t=dv(e);if(t===null)throw Error(`Palette "${e}" (resolved "${_i(e)}") did not resolve in the theme registry — allowed names and the registry are inconsistent`);return t}function dv(e){let t=_i(e),n=cv.get(t);if(n!==void 0)return n;let r=Gn(t);return r===null?null:(cv.set(t,r),r)}function fv(e,t){let n=`${e.name} ${t.hueShift} ${t.chromaScale} ${t.lightnessScale} ${t.lightnessShift}`,r=lv.get(n);if(r!==void 0)return r;let i=$n(e,t);return lv.set(n,i),i}function pv(e){let t=dv(e);return t===null?null:{kind:`decided`,name:e,value:t}}function mv(e,t){let n=pv(e);return n===null?(t(`globals.palette rendered "${vi}": "${e}" names no installed theme`),gv()):n}function hv(e,t,n){return Ti(e,t,n,gv(),pv)}function gv(){return pv(vi)}function _v(e){return Ei(hv(void 0,null,e),()=>vi,gv).value}const vv=new Map;function yv(e,t,n){vv.set(e,{permanent:!0,resolve:t,paletteOf:n})}yv(`themes`,()=>xi(),e=>uv(e)),yv(`styles`,()=>ji),yv(`charsets`,()=>Ni),yv(`colorCompatibilities`,()=>Pi);function bv(e){return new Map([[`looks`,{members:Object.keys(e.looks),paletteOf:(t,n)=>fv(n,e.looks[t])}],[`presets`,{members:kh(e.presets)}]])}function xv(e){return[...new Set([...vv.keys(),...e.keys()])]}function Sv(e,t){if(typeof e!=`string`)return{members:e};let n=t.get(e);if(n)return n;let r=vv.get(e);if(r)return{members:r.resolve(),paletteOf:r.paletteOf};throw Error(`unknown option domain "${e}" (have: ${xv(t).join(`, `)})`)}const Cv=/{{([\s\S]*?)}}/g,wv=/"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|`[^`]*`/g,Tv=/(?<![A-Za-z0-9_)])\.([A-Za-z_][\w]*(?:\.[A-Za-z_][\w]*)*)/g;function Ev(e){let t=new Set,n;for(Cv.lastIndex=0;(n=Cv.exec(e))!==null;){let e=n[1].replace(wv,``),r;for(Tv.lastIndex=0;(r=Tv.exec(e))!==null;)t.add(r[1])}return t}const Dv=/\baction\s+$/;function Ov(e){let t=new Set;Cv.lastIndex=0;let n;for(;(n=Cv.exec(e))!==null;){let e=n[1],r=0,i;for(wv.lastIndex=0;(i=wv.exec(e))!==null;)Dv.test(e.slice(r,i.index))&&t.add(i[0].slice(1,-1)),r=i.index+i[0].length}return t}const kv=/\b(picker|menu)\s+$/;function Av(e){let t=new Set;Cv.lastIndex=0;let n;for(;(n=Cv.exec(e))!==null;){let e=n[1],r=0,i=0,a;for(wv.lastIndex=0;(a=wv.exec(e))!==null;){let n=kv.exec(e.slice(r,a.index));n!==null&&(i=n[1]===`picker`?2:1),i>0&&(t.add(a[0].slice(1,-1)),i--),r=a.index+a[0].length}}return t}function jv(e,t){if(t.names.has(e))return!0;let n=`${e}.`;for(let e of t.names)if(e.startsWith(n))return!0;for(let n of t.documents)if(e.startsWith(`${n}.`))return!0;return!1}const Mv={gitTaculous:`gitaculous`};function Nv(e,t){let n=new Map;for(let e of Object.keys(t)){let t=Ks(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 Pv(e,t){t.globals.look!==void 0&&!wi(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`])}),Nv(e,t.presets);let n=bv(t);for(let[r,i]of Object.entries(t.actions))!(`set`in i)||!(`from`in i)||typeof i.from!=`string`||xv(n).includes(i.from)||e.issues.push({path:`actions.${r}.from`,message:`actions.${r} from: references unknown option domain "${i.from}" (have: ${xv(n).join(`, `)})`,line:W(e.source,[`actions`,r,`from`])});for(let[n,r]of Object.entries(t.actions)){if(!o_(r))continue;let i=r[a_];zv(t,i)||e.issues.push({path:`actions.${n}.${a_}`,message:`actions.${n} ${a_}: "${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,a_])})}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&&c_(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=Lh(i);if(o===null){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" is not a config globals field (have: ${ss().join(`, `)}), a "segments.<name>.palette" target, or a "presets.<name>.root" target`,line:W(e.source,[`actions`,n,a])});continue}let s=Fv.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`){Iv(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=Vv(t),i=n_(t),a=Object.entries(t.segments).filter(([,e])=>ph(e.template)).map(([e])=>e),o=(t,n,r)=>{Kg(t)>1&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${mg}" ${Kg(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}),qg(t)&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${mg}" 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});let i=new Map;for(let e of Ia(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})},s=(n,a,o)=>{for(let s of Ia(n))if(s.when!==void 0&&Gv(e,`${a}.when`,s.when,r,{line:o}),s.kind===`segment`){if(Ug(s.name)){i||e.issues.push({path:a,message:`${a} places the global settings menu anchor "${mg}", but this config declares no "${t_}" variable — the menu is a click surface and every click composes a URL from "${t_}", so it is not synthesized for a config without it. Declare a "${t_}" variable (any config merged onto the bundled default inherits one) or remove the anchor placement.`,line:o});continue}if(!Object.prototype.hasOwnProperty.call(t.segments,s.name)){let t=Mv[s.name],n=t===void 0?``:` (the built-in segment "${s.name}" was renamed to "${t}" — update this reference)`;e.issues.push({path:a,message:`${a} entry "${s.name}" does not match any declared segment${n}`,line:o})}}},c=Kv(e.source);s(Eo(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(Do(r.root),t,i)}let l=new Map([[`root`,Eo(t.root)]]);for(let e of kh(t.presets)){let{node:n,path:r}=Mh(t,e);l.set(r,n)}for(let[t,n]of l)o(n,t,W(e.source,t.split(`.`)));for(let[n,i]of Object.entries(t.variables))Uv(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))Uv(e,`segments.${n}.vars.${t}`,a,r,n);for(let a of[`template`,`bg`,`fg`,`when`]){let o=i[a];if(typeof o==`string`){Gv(e,`segments.${n}.${a}`,o,r,{segCtx:n});for(let r of Ov(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 Av(o))Object.prototype.hasOwnProperty.call(t.actions,r)||e.issues.push({path:`segments.${n}.${a}`,message:`${a} references unknown action "${r}" (in a picker or menu)`,line:W(e.source,[`segments`,n,a])})}}}for(let[n,i]of Object.entries(t.variables))Wv(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))Wv(e,`segments.${n}.vars.${t}`,a,r,n);(Rv(t)||Bv(t))&&!Object.prototype.hasOwnProperty.call(t.variables,`session.id`)&&e.issues.push({path:`variables.session.id`,message:`state reads and action set-writes require a global "session.id" variable (segment-local declarations do not satisfy this — declareState/set-state both read the global box; conventionally { kind: "input", path: "session_id" })`,line:W(e.source,[`variables`])})}const Fv=[`removeSegment`,`insertSegment`,`insertSegmentFrom`];function Iv(e,t,n,r,i,a,o){let s=`actions.${n}.${r}`,c=W(e.source,[`actions`,n,r]);if(!kh(t.presets).includes(a)){e.issues.push({path:s,message:`actions.${n}: "${i}" names preset "${a}" which is not declared (have: ${kh(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 Lv(e){return[...Object.values(e.variables),...Object.values(e.segments).flatMap(e=>Object.values(e.vars??{}))].filter(e=>e.kind===`state`)}function Rv(e){return Lv(e).length>0}function zv(e,t){return Lv(e).some(e=>e.kind===`state`&&e.key===t)}function Bv(e){return Object.values(e.actions).some(e=>l_(e)||u_(e)||d_(e)||f_(e)||p_(e)||m_(e))}function Vv(e){let t=new Set,n=new Set,r=(e,r)=>{t.add(e),Hv(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 Hv(e){return(e.kind===`shell`||e.kind===`file`)&&Ra(e.parse)===`json`}function Uv(e,t,n,r,i){n.kind===`template`&&Gv(e,`${t}.template`,n.template,r,{segCtx:i}),Ba(n)&&n.cache&&`key`in n.cache&&Gv(e,`${t}.cache.key`,n.cache.key,r,{segCtx:i})}function Wv(e,t,n,r,i){if(Ba(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 Gv(e,t,n,r,i){for(let a of Ev(n)){if(jv(a,r))continue;let n=i?.segCtx===void 0?void 0:`${i.segCtx}.${a}`,o=n!==void 0&&jv(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 Kv(e){try{let t=Ye.default.parse(e);if(Xa(t)&&`root`in t)return`root`}catch{}return`layout`}function qv(e,t){let{graph:n,nodeInfo:r}=Jv(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 Jv(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 Ev(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),Ba(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 Yv=[`json5`,`json`];function Xv(e){try{return r.statSync(e,{throwIfNoEntry:!1})===void 0?`absent`:`present`}catch(t){return{path:e,error:t.message}}}function Zv(e){return e===`~`||e.startsWith(`~/`)||e.startsWith(`~\\`)?f.homedir()+e.slice(1):e}function Qv(e,t,n){if(n!==void 0)return[n];let r=t??process.cwd();return[...new Set([...e?Yv.map(t=>c.join(e,`.cc-candybar.${t}`)):[],...Yv.map(e=>c.join(r,`.cc-candybar.${e}`)),...Yv.map(e=>`${$v()}.${e}`)])]}function $v(){let e=process.env.XDG_CONFIG_HOME??c.join(f.homedir(),`.config`);return c.join(e,`cc-candybar`,`config`)}function ey(e,t,n){let r=[];for(let i of Qv(e,t,n)){let e=Xv(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 ty(e,t,n){let r=ey(e,t,n);return r.kind===`default`?`${$v()}.${Yv[0]}`:r.path}function ny(e){return ry(e).join(`
119
- `)||null}function ry(e){switch(e.kind){case`file`:case`default`:return e.unchecked.map(e=>`Config location could not be checked: ${e.path} — ${e.error}`);case`missing`:return[`Config file not found: ${e.path} — rendering the bundled default until it appears`];case`unreadable`:return[`Config file could not be read: ${e.path} — ${e.error} — rendering the bundled default until it can be`]}}function iy(e,t){let n=Qv(e,t).filter(e=>Xv(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 ay(e,t,n){let r=e===null?oy:sy(e,t,n);return{...r,config:Ao(r.raw,t)}}const oy={raw:{},source:``,warnings:[]};function sy(e,t,n){let i=r.readFileSync(e,`utf-8`);return{source:i,...uy(e,i,n,tc(t))}}function cy(e,t=`<config>`,n=``,r=new Set(xi())){let i=[],a={source:n,issues:i,allowedPalettes:r,groups:[]};if(Pv(a,e),qv(a,e),i.length>0)throw new ka(t,i);return rg(r_(e))}function ly(e,t,n=new Set(xi()),r=dy){return uy(e,t,n,r).raw}function uy(e,t,n,r){let i=fy(e,t),a=Ma(e,t),o=a===null?[]:[a],s=[],c={source:t,issues:s,allowedPalettes:n??new Set(xi()),groups:[]};if(!Xa(i))throw new ka(e,[{path:``,message:`Config root must be an object, got ${Za(i)}`}],o);let l=py(c,i,r);if(s.length>0)throw new ka(e,s,o);return{raw:l,warnings:o}}const dy=new Set;function fy(e,t){try{return Ye.default.parse(t)}catch(t){let n=t;throw new ka(e,[{path:``,message:`JSON5 syntax error: ${n.message}`,line:n.lineNumber,col:n.columnNumber}])}}function py(e,t,n){for(let n of Object.keys(t))my.has(n)||e.issues.push({path:n,message:`Unknown top-level key "${n}". Expected one of: ${[...my].join(`, `)}`,line:W(e.source,[n])});let r={};return t.globals!==void 0&&(r.globals=ts(e,`globals`,t.globals)),t.variables!==void 0&&(r.variables=xs(e,`variables`,t.variables)),t.segments!==void 0&&(r.segments=nc(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.
118
+ `,qh=`preset.customized`,Jh=`{{ and ${Bo(bh)} .${qh} }}`,Yh=$s;function Xh(e){return`${Xs}addable.${e}`}function Zh(e){let t=Object.keys(e.segments).filter(e=>!Yh(e)),n=new Map;for(let r of Ah(e.presets)){let{node:i}=Nh(e,r),a=Dh(i);n.set(Xh(r),{members:t.filter(e=>!a.has(e))})}return n}function Qh(e,t,n,r){let i=`${Xs}${e}.remove.${qs(n)}`,a=`${Xs}${e}.removeSeg.${qs(n)}`;return r.actions[i]={persist:t,removeSegment:n},r.segments[a]={template:`{{ action "${i}" "-" }}`,when:xh},{kind:`segment`,name:a}}function $h(e,t,n,r,i,a,o){let s=`${Xs}${e}.insert.${n}`,c=`${Xs}${e}.insertSeg.${n}`;o.actions[s]={persist:t,insertSegmentFrom:r,anchor:i,relation:a};let l=Qm(s),u=$m(c,s,void 0),d=nh(u),f=th(u,l);return o.variables[u]=Ho(u,No),o.variables[d]={kind:`state`,key:d,default:`0`},o.actions[f]=Uo(u,l),o.actions[d]={set:d,int:!0},o.segments[c]={template:`{{ menu "${s}" "+" "✕" }}`,when:xh},{kind:`segment`,name:c}}function eg(e,t,n,r,i,a){let o=[],s=e.children.reduce((e,t,n)=>t.kind===`segment`&&!Yh(t.name)?n:e,-1),c=e=>eg(e,t,n,r,i,a);for(let[l,u]of e.children.entries()){if(u.kind===`container`){o.push(c(u));continue}let d=Ia(u,c);if(Yh(u.name)){o.push(d);continue}let f={kind:`container`,direction:`horizontal`,children:[$h(t,n,String(a.n++),r,u.name,`before`,i),d,Qh(t,n,u.name,i),...l===s?[$h(t,n,String(a.n++),r,u.name,`after`,i)]:[]]};o.push(e.direction===`vertical`?{kind:`container`,direction:`horizontal`,children:[f],...u.when!==void 0&&{when:u.when}}:f)}return{...e,children:o}}function tg(e,t,n,r,i,a){let o=`${Xs}${n}.resetLayout`,s=`${Xs}${n}.customized`;i.actions[o]={reset:r},i.ensured[qh]={kind:`input`,path:qh,type:`boolean`,default:!1};let c=Lo(t);return i.segments[s]={template:`{{ action "${o}" "↺ ${c} customized" }}`,when:Jh},{kind:`container`,direction:`vertical`,children:[{kind:`segment`,name:s},ng(e,a)]}}function ng(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),ng(n,t)]}:{...e,children:[...e.children,t]}}function rg(e,t,n,r){let{node:i}=Nh(e,t),a=Lh(t),o=Xh(t),s=qs(t);return tg(eg(i,s,a,o,n,{n:0}),t,s,a,n,r)}function ig(e){if(!(`edit.toggle`in e.actions))return e;let t={variables:{},ensured:{},actions:{},segments:{}},n=Vh(`${Xs}help`,Wh,[bh],t),r={...e.presets};for(let i of Ah(e.presets)){let a=rg(e,i,t,n);r[i]={...Mh(e.presets,i),root:a}}return{...e,variables:{...t.ensured,...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:r}}const ag={socket:`TMUX`,pane:`TMUX_PANE`,truecolor:`CLAUDE_CODE_TMUX_TRUECOLOR`};function og(e){let t=e[ag.socket]??``,n=e[ag.pane]??``;if(t===``||n===``)return null;let r=e[ag.truecolor]??``;return{socket:t.split(`,`)[0],pane:n,truecolor:r===``?null:r}}const sg=ag.truecolor,cg=[{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[sg];return typeof n==`string`&&n!==``?{ok:!1,reason:`${sg} 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:sg,value:`1`}}}}}}];function lg(e){return cg.map(t=>({check:t,verdict:t.probe(e)}))}function ug(e){return cg.find(t=>t.name===e)}function dg(e){let t=`settings.doctor.${e}.`;return{verdict:`${t}verdict`,reason:`${t}reason`,fixable:`${t}fixable`}}function fg(e){return e.flatMap(({check:e,verdict:t})=>{let n=dg(e.name);return t.ok?[{key:n.verdict,value:`ok`},{key:n.reason,value:``},{key:n.fixable,value:Ii}]:[{key:n.verdict,value:`failed`},{key:n.reason,value:t.reason},{key:n.fixable,value:t.fix===void 0?Ii:Fi}]})}const pg={copySession:{copy:`{{ .session.id }}`},openProject:{open:`{{ .project_dir }}`},openTranscript:{open:`{{ .transcript_path }}`}};function mg(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(pg).map(([t,n])=>[`${e}${t}`,n]))}}const hg=`${Zs}menu`,gg=yh,_g=`${Zs}edit`,vg=`${Zs}close`,yg=`${Zs}toolbar`,bg=mg(Zs),xg=`${Zs}persist`,Sg=`${Zs}config`,Cg=xg,wg={variable:hg,key:hg,member:gg},Tg={variable:Sg,key:Sg,member:gg},Eg=`${Zs}tools`,Dg={variable:Eg,key:Eg,member:gg},Og=`${Zs}doctor`,kg=`${Og}.run`,Ag=e=>`${Og}.fix.${e}`,jg=e=>`${Og}.${e}`,Mg=`${Zs}help.persist`,Ng=`${Zs}pickers`,Pg=[{name:`preset`,sessionKey:`preset`,configKey:`preset`,effectiveVar:`preset.effective`,glyph:`▦`,domain:`presets`}],Fg=[{name:`theme`,sessionKey:`theme`,configKey:`palette`,effectiveVar:`theme.effective`,glyph:`🎨`,domain:`themes`},{name:`look`,sessionKey:`look`,configKey:`look`,effectiveVar:`look.effective`,glyph:`◐`,domain:`looks`},{name:`style`,sessionKey:`style`,configKey:`style`,effectiveVar:`style.effective`,glyph:`✦`,domain:`styles`}],Ig={name:`wrap`,sessionKey:`autoWrap`,configKey:`autoWrap`},Lg={name:`padding`,sessionKey:`padding`,configKey:`padding`},Rg=`${Zs}${Ig.name}`,zg=`${Zs}${Lg.name}`,Bg=[...Pg,...Fg];new Set([...Bg,Ig,Lg].flatMap(e=>[e.sessionKey,e.configKey]));const Vg=e=>`${Zs}${e}`,Hg=e=>`${Zs}apply.${e}`,Ug=e=>`${Zs}reset.${e}`;function Wg(e){return e===hg}function Gg(e){let t={kind:`segment`,name:hg};if(e.kind===`container`&&e.direction===`vertical`){let[n,...r]=e.children;return e.when===void 0&&n!==void 0?{...e,children:[Gg(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 Kg(e){return qg(e)>0?e:Gg(e)}function qg(e){let t=0;for(let n of La(e))n.kind===`segment`&&Wg(n.name)&&(t+=1);return t}function Jg(e,t=!1){let n=t||e.when!==void 0;return e.kind===`segment`?n&&Wg(e.name)||e.opens!==void 0&&Jg(e.opens.body,!0):e.children.some(e=>Jg(e,n))}function Yg(e,t){return e.kind===`segment`?Wg(e.name)?Ro(e.name,wg,{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:yg},{kind:`segment`,name:xg},t,...Pg.map(e=>({kind:`segment`,name:Vg(e.name)})),Ro(Sg,Tg,{kind:`container`,direction:`horizontal`,children:[...Fg.map(e=>({kind:`segment`,name:Vg(e.name)})),{kind:`segment`,name:Rg},{kind:`segment`,name:zg}]},`drop`),Ro(Eg,Dg,{kind:`container`,direction:`vertical`,children:[{kind:`segment`,name:Og},...cg.map(e=>({kind:`segment`,name:jg(e.name)}))]},`drop`),{kind:`segment`,name:_g}]},`inline`):e:Xg(e,t)}function Xg(e,t){return{...e,children:e.children.map(e=>Yg(e,t))}}function Zg(e,t,n,r){let i=Qm(t),a=$m(e,t,r),o=nh(a);n.variables[a]=Ho(a,No),n.variables[o]={kind:`state`,key:o,default:`0`},n.actions[th(a,i)]=Uo(a,i),n.actions[o]={set:o,int:!0}}function Qg(e){let t={variables:{[hg]:Ho(hg,No)},actions:{[hg]:Uo(hg,gg),[Sg]:Uo(Sg,gg),[Eg]:Uo(Eg,gg),[kg]:{doctor:`run`},[vg]:{set:wg.key,to:No},[_g]:{do:[vh,vg]},...bg.actions,[xg]:{set:Cg,cycle:[Ii,Fi]}},segments:{[hg]:{template:Vo(hg,e,`❌`)},[yg]:{template:bg.template},[xg]:{template:`{{ action "${xg}" "☐ persist?" "☑ persist?" }}`},[Sg]:{template:Vo(Sg,`⚙ config ▸`,`⚙ config ▾`)},[Eg]:{template:Vo(Eg,`🧰 tools ▸`,`🧰 tools ▾`)},[Og]:{template:`{{ action "${kg}" "🩺 doctor" }}`},[Rg]:{template:`{{ action "${Hg(`wrap`)}" "wrap: on" "wrap: off" }} {{ action "${Ug(`wrap`)}" "↺" }}`},[zg]:{template:`{{ action "${Hg(`padding`)}.down" "◀" }} padding {{ .padding.effective }} {{ action "${Hg(`padding`)}.up" "▶" }} {{ action "${Ug(`padding`)}" "↺" }}`},[_g]:{template:`{{ action "${_g}" "✎ edit" "✎ done" }}`}}};return t.variables[Cg]={kind:`state`,key:Cg,default:Ii},t.variables[Sg]=Ho(Sg,No),t.variables[Eg]=Ho(Eg,No),e_(t),$g(t),{artifacts:t,help:Vh(Mg,Gh,[wg],t)}}function $g(e){for(let t of cg){let n=dg(t.name),r=Ag(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[jg(t.name)]={when:`{{ ne .${n.verdict} "" }}`,template:`{{ if eq .${n.verdict} "ok" }}✓ ${t.label}{{ else }}✗ ${t.label} — {{ .${n.reason} }}{{ if eq .${n.fixable} "${Fi}" }} {{ action "${r}" "[fix]" }}{{ end }}{{ end }}`}}}function e_(e){for(let t of Bg){let n=Vg(t.name),r=Hg(t.name);e.segments[n]={template:`${t.glyph} {{ .${t.effectiveVar} }} {{ menu "${r}" "▸" "▾" (dict "key" "${Ng}") }} {{ action "${Ug(t.name)}" "↺" }}`},e.actions[r]={set:t.sessionKey,persist:t.configKey,persistWhen:Cg,from:t.domain},e.actions[Ug(t.name)]={reset:t.configKey},Zg(n,r,e,Ng)}e.actions[Hg(Ig.name)]={set:Ig.sessionKey,persist:Ig.configKey,persistWhen:Cg,cycle:[...Li]},e.actions[Ug(Ig.name)]={reset:Ig.configKey};for(let t of[-1,1])e.actions[`${Hg(Lg.name)}.${t<0?`down`:`up`}`]={set:Lg.sessionKey,persist:Lg.configKey,persistWhen:Cg,...Ri,by:t};e.actions[Ug(Lg.name)]={reset:Lg.configKey}}function t_(e){e.variables[_h]=Ho(_h,No),e.actions[vh]=Uo(_h,yh)}const n_=`session.id`;function r_(e){return Object.prototype.hasOwnProperty.call(e.variables,n_)}function i_(e){if(!r_(e))return e;let{artifacts:t,help:n}=Qg(e.globals.menuGlyph??`🍫`);t_(t);let r={...e.presets};for(let t of Ah(e.presets)){let{node:i}=Nh(e,t);r[t]={...Mh(e.presets,t),root:Yg(Kg(i),n)}}return{...e,variables:{...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:r}}const a_=[`set`,`persist`,`copy`,`open`,`reset`,`undo`,`redo`,`doctor`,`do`],o_=`persistWhen`;function s_(e){return o_ in e}function c_(e){return s_(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 l_(e){return`from`in e||`int`in e||`insertSegmentFrom`in e}function u_(e){return`set`in e}function d_(e){return`persist`in e}function f_(e){return`reset`in e}function p_(e){return`undo`in e}function m_(e){return`redo`in e}function h_(e){return`doctor`in e}function g_(e,t){if(t===void 0)return{};if(!Za(t))return J(e,`actions`,`actions must be an object, got ${Qa(t)}`),{};let n=Object.create(null);for(let[r,i]of Object.entries(t)){let t=__(e,`actions.${r}`,i);t!==null&&(n[r]=t)}return n}function J(e,t,n){e.issues.push({path:t,message:n,line:W(e.source,t.split(`.`))})}function __(e,t,n){if(!Za(n))return J(e,t,`${t} must be an action object, got ${Qa(n)}`),null;if(`persistWhen`in n)return X_(e,t,n,`dual`,q_);let r=a_.filter(e=>e in n);return r.length===1?v_[r[0]](e,t,n):(J(e,t,`action must declare exactly one of: ${a_.join(`, `)}${r.length>1?` (found: ${r.join(`, `)})`:``}`),null)}const v_={set:(e,t,n)=>X_(e,t,n,`set`,G_),persist:(e,t,n)=>X_(e,t,n,`persist`,K_),copy:y_(`copy`),open:y_(`open`),reset:b_,undo:x_(`undo`),redo:x_(`redo`),doctor:S_,do:C_};function y_(e){return(t,n,r)=>{for(let i of Object.keys(r))i!==e&&J(t,`${n}.${i}`,`Unknown key "${i}" on a ${e} action. Expected only: ${e}`);let i=Ka(t,n,r,e);return i===null?null:{[e]:i}}}function b_(e,t,n){for(let r of Object.keys(n))r!==`reset`&&J(e,`${t}.${r}`,`Unknown key "${r}" on a reset action. Expected only: reset`);let r=w_(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 x_(e){return(t,n,r)=>{for(let i of Object.keys(r))i!==e&&J(t,`${n}.${i}`,`Unknown key "${i}" on a ${e} action. Expected only: ${e}`);return r[e]===!0?{[e]:!0}:(J(t,`${n}.${e}`,`${e} must be the literal true (it takes no key — it steps the history of the session's config file), got ${G(r[e])}`),null)}}function S_(e,t,n){let r=n.doctor,i=r===`run`?[`doctor`]:[`doctor`,`check`];for(let r of Object.keys(n))i.includes(r)||J(e,`${t}.${r}`,`Unknown key "${r}" on a doctor action. Expected only: ${i.join(`, `)}`);if(r!==`run`&&r!==`fix`)return J(e,`${t}.doctor`,`doctor must be "run" or "fix", got ${G(r)}`),null;if(r===`run`)return{doctor:`run`};let a=n.check;return typeof a!=`string`||ug(a)===void 0?(J(e,`${t}.check`,`doctor fix must name a check (have: ${cg.map(e=>e.name).join(`, `)}), got ${G(a)}`),null):{doctor:`fix`,check:a}}function C_(e,t,n){for(let r of Object.keys(n))r!==`do`&&J(e,`${t}.${r}`,`Unknown key "${r}" on a do action. Expected only: do`);let r=n.do;return!Array.isArray(r)||r.length<2||r.some(e=>typeof e!=`string`||e===``)?(J(e,`${t}.do`,`do must list at least two action names (the first is the click's face, the rest ride along in the same click), got ${G(r)}`),null):{do:r}}function w_(e,t,n,r,i,a){let o=Ka(e,t,r,n);if(o===null)return null;let s=`${t}.${n}`;return o===``?(J(e,s,i),null):o.includes(`/`)?(J(e,s,a(o)),null):o}const T_={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`],[o_,`the SessionState key whose boolean value chooses the destination`]]};function E_(e,t,n,r){let i={},a=T_[r],o=!0;for(let[r,s]of a){if(!(r in n)){J(e,t,`${r} is required here (${s}) — a dual-destination action declares ${a.map(([e])=>e).join(`, `)} together, plus one value source`),o=!1;continue}let c=w_(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 D_(e){return e===`set`?`set-state`:e===`persist`?`set-config`:`set-state/set-config`}const O_={to:Z_(`set`)},k_={to:Z_(`persist`)},A_={from:Q_(`set`)},j_={from:Q_(`persist`)},M_={min:rv(),max:rv(),by:rv()},N_={int:ev()},P_={cycle:$_(`set`)},F_={to:Z_(`dual`)},I_={from:Q_(`dual`)},L_={cycle:$_(`dual`)},R_={cycle:$_(`persist`)},z_={removeSegment:tv(`removeSegment`)},B_={insertSegment:tv(`insertSegment`),anchor:tv(`anchor`),relation:nv()},V_={insertSegmentFrom:Q_(`persist`),anchor:tv(`anchor`),relation:nv()},H_={ok:e=>e.min<e.max,issue:e=>({field:`min`,message:`min (${e.min}) must be less than max (${e.max})`})},U_={ok:e=>e.by!==0,issue:()=>({field:`by`,message:`by must be a non-zero integer (the per-click increment; negative steps down)`})};function W_(e,t,n=[],r){let i=Object.keys(t),a=r??i,o=T_[e].map(([e])=>e),s=(e,n,r)=>eo(e,t,n,r),c=go(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?co(s,...n):s}}const G_=[W_(`set`,O_),W_(`set`,A_),W_(`set`,M_,[H_,U_]),W_(`set`,N_),W_(`set`,P_)],K_=[W_(`persist`,k_),W_(`persist`,j_),W_(`persist`,M_,[H_,U_]),W_(`persist`,R_),W_(`persist`,z_),W_(`persist`,B_,[],[`insertSegment`]),W_(`persist`,V_,[],[`insertSegmentFrom`])],q_=[W_(`dual`,F_),W_(`dual`,I_),W_(`dual`,M_,[H_,U_]),W_(`dual`,L_)];function J_(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 Y_(e){let t=J_(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 X_(e,t,n,r,i){let a=E_(e,t,n,r),o=i.filter(e=>e.detect.some(e=>e in n));if(o.length!==1)return J(e,t,`${Y_(r)}${o.length>1?` — found: ${o.map(e=>e.label).join(`, `)}`:``}`),null;let s=o[0];for(let i of Object.keys(n))s.allowed.includes(i)||J(e,`${t}.${i}`,`Unknown key "${i}" on this ${r} action. Expected one of: ${s.allowed.join(`, `)}`);let c=s.parse(e,t,n);return a===null||c===null?null:{...a,...c}}function Z_(e){let t=D_(e);return{required:!0,json:{type:`string`},parse:(n,r,i,a)=>w_(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 Q_(e){let t=D_(e);return{required:!0,json:{anyOf:[{type:`string`,minLength:1},{type:`array`,items:{type:`string`,minLength:1},minItems:1,uniqueItems:!0}]},parse:(n,r,i,a)=>{let o=a[i],s=`${r}.${i}`;if(typeof o==`string`){if(o===``){J(n,s,`${i} must be a non-empty domain name`);return}return o}if(Array.isArray(o)&&o.every(e=>typeof e==`string`)){let r=o;if(r.length===0){J(n,s,`${i} must name a domain (a non-empty string) or declare an inline domain (a non-empty array of values)`);return}if(r.some(e=>e===``)){J(n,s,`${i} array members must be non-empty — an empty value cannot be delivered on the ${t} wire`);return}let a=r.filter(e=>e.includes(`/`));if(a.length>0){J(n,s,`${i} array member(s) ${a.map(e=>`"${e}"`).join(`, `)} contain "/" — ${e} values must be slash-free`);return}if(new Set(r).size!==r.length){J(n,s,`${i} array members must be unique — a duplicated value would render the same picker option twice`);return}return r}J(n,s,`${i} must be a domain name (a string) or an inline domain (an array of strings), got ${G(o)}`)}}}function $_(e){let t=D_(e);return{required:!0,json:{type:`array`,items:{type:`string`,minLength:1},minItems:2,uniqueItems:!0},parse:(n,r,i,a)=>{let o=a[i],s=`${r}.${i}`;if(!Array.isArray(o)||o.some(e=>typeof e!=`string`)){J(n,s,`cycle must be an array of strings (the enumerated values a click steps through), got ${Qa(o)}`);return}let c=o;if(c.length<2){J(n,s,`cycle needs at least two members (one member has no successor — use a literal "to")`);return}let l=c.some(e=>e===``),u=c.filter(e=>e.includes(`/`));if(l){J(n,s,`cycle members must be non-empty — an empty value cannot be delivered on the ${t} wire`);return}if(u.length>0){J(n,s,`cycle member(s) ${u.map(e=>`"${e}"`).join(`, `)} contain "/" — ${e} values must be slash-free`);return}if(new Set(c).size!==c.length){J(n,s,`cycle members must be unique — the successor of a duplicated member is ambiguous`);return}return c}}}function ev(){return{required:!0,json:{const:!0},parse:(e,t,n,r)=>{if(r[n]!==!0){J(e,`${t}.${n}`,`int must be the literal true (declares the key an unbounded integer cursor — a paged picker's page key), got ${G(r[n])}`);return}return!0}}}function tv(e){return{required:!0,json:{type:`string`},parse:(t,n,r,i)=>{let a=Ka(t,n,i,r);if(a===null)return;let o=`${n}.${r}`;if(a===``){J(t,o,`${e} must be non-empty (a segment name)`);return}if(a.includes(`/`)||a.includes(`:`)){J(t,o,`${e} "${a}" contains "/" or ":" — segment names in a layout op must be free of both (the click wire's own delimiter and layout-ops.ts's op-token delimiter)`);return}return a}}}function nv(){return{required:!0,json:{enum:[`before`,`after`]},parse:(e,t,n,r)=>{let i=r[n];if(i!==`before`&&i!==`after`){J(e,`${t}.${n}`,`relation must be "before" or "after", got ${G(i)}`);return}return i}}}function rv(){return{required:!0,json:{type:`integer`},parse:(e,t,n,r)=>{let i=r[n];if(typeof i!=`number`||!Number.isInteger(i)){J(e,`${t}.${n}`,`${n} must be an integer, got ${G(i)}`);return}return i}}}const iv={noun:`look key`,fields:{hueShift:fo(),chromaScale:fo({min:0}),lightnessScale:fo(),lightnessShift:fo()}};function av(e,t){if(!Za(t))return e.issues.push({path:`looks`,message:`looks must be an object mapping look names to adaptation objects, got ${Qa(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=$a(e,iv,`looks.${r}`,i);t!==null&&(n[r]={...yn,...t})}return n}const ov={noun:`preset key`,fields:{root:{required:!1,json:{$ref:`#/definitions/RootFragment`},parse:(e,t,n,r)=>r[n]===void 0?void 0:al(e,`${t}.${n}`,r[n])},globals:{required:!1,json:is(),parse:(e,t,n,r)=>r[n]===void 0?void 0:rs(e,`${t}.${n}`,r[n])}}};function sv(e,t){if(!Za(t))return e.issues.push({path:`presets`,message:`presets must be an object mapping preset names to config fragments, got ${Qa(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=$a(e,ov,`presets.${r}`,i);t!==null&&(n[r]=t)}return n}function cv(e,t){if(t===void 0)return{};if(!Za(t))return e.issues.push({path:`helpers`,message:`helpers must be an object, got ${Qa(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 lv=new Map,uv=new Map;function dv(e){let t=fv(e);if(t===null)throw Error(`Palette "${e}" (resolved "${_i(e)}") did not resolve in the theme registry — allowed names and the registry are inconsistent`);return t}function fv(e){let t=_i(e),n=lv.get(t);if(n!==void 0)return n;let r=Gn(t);return r===null?null:(lv.set(t,r),r)}function pv(e,t){let n=`${e.name} ${t.hueShift} ${t.chromaScale} ${t.lightnessScale} ${t.lightnessShift}`,r=uv.get(n);if(r!==void 0)return r;let i=$n(e,t);return uv.set(n,i),i}function mv(e){let t=fv(e);return t===null?null:{kind:`decided`,name:e,value:t}}function hv(e,t){let n=mv(e);return n===null?(t(`globals.palette rendered "${vi}": "${e}" names no installed theme`),_v()):n}function gv(e,t,n){return Ti(e,t,n,_v(),mv)}function _v(){return mv(vi)}function vv(e){return Ei(gv(void 0,null,e),()=>vi,_v).value}const yv=new Map;function bv(e,t,n){yv.set(e,{permanent:!0,resolve:t,paletteOf:n})}bv(`themes`,()=>xi(),e=>dv(e)),bv(`styles`,()=>ji),bv(`charsets`,()=>Ni),bv(`colorCompatibilities`,()=>Pi);function xv(e){return new Map([[`looks`,{members:Object.keys(e.looks),paletteOf:(t,n)=>pv(n,e.looks[t])}],[`presets`,{members:Ah(e.presets)}]])}function Sv(e){return[...new Set([...yv.keys(),...e.keys()])]}function Cv(e,t){if(typeof e!=`string`)return{members:e};let n=t.get(e);if(n)return n;let r=yv.get(e);if(r)return{members:r.resolve(),paletteOf:r.paletteOf};throw Error(`unknown option domain "${e}" (have: ${Sv(t).join(`, `)})`)}const wv=/{{([\s\S]*?)}}/g,Tv=/"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|`[^`]*`/g,Ev=/(?<![A-Za-z0-9_)])\.([A-Za-z_][\w]*(?:\.[A-Za-z_][\w]*)*)/g;function Dv(e){let t=new Set,n;for(wv.lastIndex=0;(n=wv.exec(e))!==null;){let e=n[1].replace(Tv,``),r;for(Ev.lastIndex=0;(r=Ev.exec(e))!==null;)t.add(r[1])}return t}const Ov=/\baction\s+$/;function kv(e){let t=new Set;wv.lastIndex=0;let n;for(;(n=wv.exec(e))!==null;){let e=n[1],r=0,i;for(Tv.lastIndex=0;(i=Tv.exec(e))!==null;)Ov.test(e.slice(r,i.index))&&t.add(i[0].slice(1,-1)),r=i.index+i[0].length}return t}const Av=/\b(picker|menu)\s+$/;function jv(e){let t=new Set;wv.lastIndex=0;let n;for(;(n=wv.exec(e))!==null;){let e=n[1],r=0,i=0,a;for(Tv.lastIndex=0;(a=Tv.exec(e))!==null;){let n=Av.exec(e.slice(r,a.index));n!==null&&(i=n[1]===`picker`?2:1),i>0&&(t.add(a[0].slice(1,-1)),i--),r=a.index+a[0].length}}return t}function Mv(e,t){if(t.names.has(e))return!0;let n=`${e}.`;for(let e of t.names)if(e.startsWith(n))return!0;for(let n of t.documents)if(e.startsWith(`${n}.`))return!0;return!1}const Nv={gitTaculous:`gitaculous`};function Pv(e,t){let n=new Map;for(let e of Object.keys(t)){let t=qs(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 Fv(e,t){t.globals.look!==void 0&&!wi(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`])}),Pv(e,t.presets);let n=xv(t);for(let[r,i]of Object.entries(t.actions))!(`set`in i)||!(`from`in i)||typeof i.from!=`string`||Sv(n).includes(i.from)||e.issues.push({path:`actions.${r}.from`,message:`actions.${r} from: references unknown option domain "${i.from}" (have: ${Sv(n).join(`, `)})`,line:W(e.source,[`actions`,r,`from`])});for(let[n,r]of Object.entries(t.actions)){if(!s_(r))continue;let i=r[o_];Bv(t,i)||e.issues.push({path:`actions.${n}.${o_}`,message:`actions.${n} ${o_}: "${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,o_])})}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&&l_(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=Rh(i);if(o===null){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" is not a config globals field (have: ${cs().join(`, `)}), a "segments.<name>.palette" target, or a "presets.<name>.root" target`,line:W(e.source,[`actions`,n,a])});continue}let s=Iv.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`){Lv(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=Hv(t),i=r_(t),a=Object.entries(t.segments).filter(([,e])=>mh(e.template)).map(([e])=>e),o=(t,n,r)=>{qg(t)>1&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${hg}" ${qg(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}),Jg(t)&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${hg}" 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 La(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||Fa[e.direction]===`cell`))}let c=(n,a,o)=>{for(let s of La(n))if(s.when!==void 0&&Kv(e,`${a}.when`,s.when,r,{line:o}),s.kind===`segment`){if(Wg(s.name)){i||e.issues.push({path:a,message:`${a} places the global settings menu anchor "${hg}", but this config declares no "${n_}" variable — the menu is a click surface and every click composes a URL from "${n_}", so it is not synthesized for a config without it. Declare a "${n_}" variable (any config merged onto the bundled default inherits one) or remove the anchor placement.`,line:o});continue}if(!Object.prototype.hasOwnProperty.call(t.segments,s.name)){let t=Nv[s.name],n=t===void 0?``:` (the built-in segment "${s.name}" was renamed to "${t}" — update this reference)`;e.issues.push({path:a,message:`${a} entry "${s.name}" does not match any declared segment${n}`,line:o})}}},l=qv(e.source);c(Do(t.root),l,W(e.source,[l]));for(let[n,r]of Object.entries(t.presets)){if(r.root===void 0)continue;let t=`presets.${n}.root`,i=W(e.source,[`presets`,n,`root`]);c(Oo(r.root),t,i)}let u=new Map([[`root`,Do(t.root)]]);for(let e of Ah(t.presets)){let{node:n,path:r}=Nh(t,e);u.set(r,n)}for(let[t,n]of u)o(n,t,W(e.source,t.split(`.`)));for(let[n,i]of Object.entries(t.variables))Wv(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))Wv(e,`segments.${n}.vars.${t}`,a,r,n);for(let a of[`template`,`bg`,`fg`,`when`]){let o=i[a];if(typeof o==`string`){Kv(e,`segments.${n}.${a}`,o,r,{segCtx:n});for(let r of kv(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 jv(o))Object.prototype.hasOwnProperty.call(t.actions,r)||e.issues.push({path:`segments.${n}.${a}`,message:`${a} references unknown action "${r}" (in a picker or menu)`,line:W(e.source,[`segments`,n,a])})}}}for(let[n,i]of Object.entries(t.variables))Gv(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))Gv(e,`segments.${n}.vars.${t}`,a,r,n);(zv(t)||Vv(t))&&!Object.prototype.hasOwnProperty.call(t.variables,`session.id`)&&e.issues.push({path:`variables.session.id`,message:`state reads and action set-writes require a global "session.id" variable (segment-local declarations do not satisfy this — declareState/set-state both read the global box; conventionally { kind: "input", path: "session_id" })`,line:W(e.source,[`variables`])})}const Iv=[`removeSegment`,`insertSegment`,`insertSegmentFrom`];function Lv(e,t,n,r,i,a,o){let s=`actions.${n}.${r}`,c=W(e.source,[`actions`,n,r]);if(!Ah(t.presets).includes(a)){e.issues.push({path:s,message:`actions.${n}: "${i}" names preset "${a}" which is not declared (have: ${Ah(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 Rv(e){return[...Object.values(e.variables),...Object.values(e.segments).flatMap(e=>Object.values(e.vars??{}))].filter(e=>e.kind===`state`)}function zv(e){return Rv(e).length>0}function Bv(e,t){return Rv(e).some(e=>e.kind===`state`&&e.key===t)}function Vv(e){return Object.values(e.actions).some(e=>u_(e)||d_(e)||f_(e)||p_(e)||m_(e)||h_(e))}function Hv(e){let t=new Set,n=new Set,r=(e,r)=>{t.add(e),Uv(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 Uv(e){return(e.kind===`shell`||e.kind===`file`)&&za(e.parse)===`json`}function Wv(e,t,n,r,i){n.kind===`template`&&Kv(e,`${t}.template`,n.template,r,{segCtx:i}),Va(n)&&n.cache&&`key`in n.cache&&Kv(e,`${t}.cache.key`,n.cache.key,r,{segCtx:i})}function Gv(e,t,n,r,i){if(Va(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 Kv(e,t,n,r,i){for(let a of Dv(n)){if(Mv(a,r))continue;let n=i?.segCtx===void 0?void 0:`${i.segCtx}.${a}`,o=n!==void 0&&Mv(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 qv(e){try{let t=Ye.default.parse(e);if(Za(t)&&`root`in t)return`root`}catch{}return`layout`}function Jv(e,t){let{graph:n,nodeInfo:r}=Yv(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 Yv(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 Dv(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),Va(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 Xv=[`json5`,`json`];function Zv(e){try{return r.statSync(e,{throwIfNoEntry:!1})===void 0?`absent`:`present`}catch(t){return{path:e,error:t.message}}}function Qv(e){return e===`~`||e.startsWith(`~/`)||e.startsWith(`~\\`)?f.homedir()+e.slice(1):e}function $v(e,t,n){if(n!==void 0)return[n];let r=t??process.cwd();return[...new Set([...e?Xv.map(t=>c.join(e,`.cc-candybar.${t}`)):[],...Xv.map(e=>c.join(r,`.cc-candybar.${e}`)),...Xv.map(e=>`${ey()}.${e}`)])]}function ey(){let e=process.env.XDG_CONFIG_HOME??c.join(f.homedir(),`.config`);return c.join(e,`cc-candybar`,`config`)}function ty(e,t,n){let r=[];for(let i of $v(e,t,n)){let e=Zv(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 ny(e,t,n){let r=ty(e,t,n);return r.kind===`default`?`${ey()}.${Xv[0]}`:r.path}function ry(e){return iy(e).join(`
119
+ `)||null}function iy(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 ay(e,t){let n=$v(e,t).filter(e=>Zv(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 oy(e,t,n){let r=e===null?sy:cy(e,t,n);return{...r,config:jo(r.raw,t)}}const sy={raw:{},source:``,warnings:[]};function cy(e,t,n){let i=r.readFileSync(e,`utf-8`);return{source:i,...dy(e,i,n,nc(t))}}function ly(e,t=`<config>`,n=``,r=new Set(xi())){let i=[],a={source:n,issues:i,allowedPalettes:r,groups:[]};if(Fv(a,e),Jv(a,e),i.length>0)throw new ka(t,i);return ig(i_(e))}function uy(e,t,n=new Set(xi()),r=fy){return dy(e,t,n,r).raw}function dy(e,t,n,r){let i=py(e,t),a=Ma(e,t),o=a===null?[]:[a],s=[],c={source:t,issues:s,allowedPalettes:n??new Set(xi()),groups:[]};if(!Za(i))throw new ka(e,[{path:``,message:`Config root must be an object, got ${Qa(i)}`}],o);let l=my(c,i,r);if(s.length>0)throw new ka(e,s,o);return{raw:l,warnings:o}}const fy=new Set;function py(e,t){try{return Ye.default.parse(t)}catch(t){let n=t;throw new ka(e,[{path:``,message:`JSON5 syntax error: ${n.message}`,line:n.lineNumber,col:n.columnNumber}])}}function my(e,t,n){for(let n of Object.keys(t))hy.has(n)||e.issues.push({path:n,message:`Unknown top-level key "${n}". Expected one of: ${[...hy].join(`, `)}`,line:W(e.source,[n])});let r={};return t.globals!==void 0&&(r.globals=ns(e,`globals`,t.globals)),t.variables!==void 0&&(r.variables=Ss(e,`variables`,t.variables)),t.segments!==void 0&&(r.segments=rc(e,t.segments,n)),t.layout!==void 0&&e.issues.push({path:`layout`,message:`"layout" is no longer supported — use "root" with the A-grammar instead.
120
120
  Replace: layout: [["seg1", "seg2"], ["seg3"]]
121
121
  With: root: { v: [{ h: ["seg1", "seg2"] }, "seg3"] }
122
- Single-row example: root: { h: ["seg1", "seg2"] }`,line:W(e.source,[`layout`])}),t.root!==void 0&&(r.root=il(e,`root`,t.root)),t.actions!==void 0&&(r.actions=h_(e,t.actions)),t.looks!==void 0&&(r.looks=iv(e,t.looks)),t.presets!==void 0&&(r.presets=ov(e,t.presets)),t.editGlobals!==void 0&&(r.editGlobals=is(e,`editGlobals`,t.editGlobals)),t.helpers!==void 0&&(r.helpers=sv(e,t.helpers)),fl(e,r),hh(e,r),Ch(e,r),ec(e,r,Xs,`the global settings menu`),r}const my=new Set([`globals`,`variables`,`segments`,`layout`,`root`,`actions`,`looks`,`presets`,`editGlobals`,`helpers`]);function hy(e){let t=yy(e.termCols),n=yy(e.termRows),r=by(e.ssh),i=_y(e.tmux),a=gy(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 gy(e){return typeof e==`string`&&e!==``?Zv(e):void 0}function _y(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 vy=1e4;function yy(e){if(typeof e!=`number`||!Number.isFinite(e))return;let t=Math.floor(e);if(!(t<=0))return t>vy?vy:t}function by(e){return typeof e==`boolean`?e:void 0}var xy=class extends Error{constructor(e){super(e),this.name=`ProtocolError`}};function Sy(e){let t=Buffer.from(JSON.stringify(e),`utf8`),n=Buffer.alloc(4);return n.writeUInt32BE(t.length,0),Buffer.concat([n,t])}function Cy(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 xy(`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 xy(e instanceof Error?e.message:String(e));e instanceof Error&&(n.cause=e),t(n);return}}}}function wy(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=Cy(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(Sy(t))})}async function Ty(e,t,n){let r=null;try{r=await Ay(Me(),t.connectMs);let i=await wy(r,{v:3,...e},t.budgetMs);return Oy(e.kind,i,n)}catch(e){return ky(e)}finally{r&&r.destroy()}}function Ey(e,t){return typeof e==`string`?e:t}function Dy(e){return typeof e==`number`&&Number.isInteger(e)&&e>=0?e:0}function Oy(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=Ey(r.error,`(no error message)`);switch(r.code){case`VERSION_MISMATCH`:return{kind:`permanent`,cause:`version_mismatch`,clientV:3,daemonV:Dy(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 ky(e){if(e instanceof xy||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 Ay(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 jy(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 My={connectMs:50,budgetMs:150},Ny={connectMs:50,budgetMs:200};function Py(e){let t=e.output;return typeof t==`string`?t:void 0}function Fy(e,t,n,r){return Ty({kind:`render`,hookData:e,args:t,cwd:n,...r},My,Py)}function Iy(e,t){return Ty({kind:`click`,verb:e,value:t},Ny,Py)}let Ly=null;function Ry(e){if(Ly!==null)return Ly;r.mkdirSync(c.dirname(e),{recursive:!0});try{Ly=r.statSync(e).size}catch{Ly=0}return Ly}function zy(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{}Ly=0}function Y(e,t){let n=`${new Date().toISOString()} [${e}] ${t}\n`;try{let e=We(),t=Ry(e);r.appendFileSync(e,n),Ly=t+Buffer.byteLength(n,`utf8`),Ly>=5242880&&zy(e)}catch(e){Ly=null;try{process.stderr.write(`${n}cc-candybar: daemon.log unwritable: ${e.message}\n`)}catch{}}}function By(e){let t=[];for(let n of e){let e=n.read();if(e.kind===`text`)return`# memory report from: ${n.name}\n${e.text}`;t.push(`# ${n.name}: unavailable — ${e.reason}`)}return[`# memory report: no probe answered`,...t.length>0?t:[`# no probe is known for this platform`]].join(`
123
- `)}function Vy(e,t){return e===`darwin`?[Hy(`footprint`,[`-p`,String(t)]),Hy(`vmmap`,[`--summary`,String(t)])]:e===`linux`?[Uy(`/proc/self/smaps_rollup`),Uy(`/proc/self/status`)]:[]}function Hy(e,t){return{name:`${e} ${t.join(` `)}`,read:()=>{let n=Te({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}`}${Wy(n.stderr)}`}}}}function Uy(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 Wy(e){let t=e.split(`
124
- `).map(e=>e.trim()).find(e=>e.length>0);return t===void 0?``:` (${t})`}const Gy=`CC_CANDYBAR_RSS_LIMIT_MB`;function Ky(e){let t=e[Gy];if(t===void 0)return 512;let n=/^\d+$/.test(t)?Number(t):NaN;if(!Number.isSafeInteger(n)||n<=0)throw Error(`${Gy} must be a positive integer (MB), got ${JSON.stringify(t)}`);return n}function qy(e){return Ky(e)*2}const Jy=1024*1024;function Yy(e){return Ky(e)*Jy}const Xy={memoryReport:{prefix:`memory-`,suffix:`.txt`},heapSnapshot:{prefix:`heap-`,suffix:`.heapsnapshot`}};function Zy(e,t,n){let{prefix:r,suffix:i}=Xy[t];return c.join(e,`${r}${n}${i}`)}function Qy(e){for(let t of Object.keys(Xy)){let{prefix:n,suffix:r}=Xy[t];if(e.startsWith(n)&&e.endsWith(r))return t}return null}function $y(e){let t=e.rssLimitBytes??512*Jy,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 eb(e.log,`memory report`,()=>{let t=Zy(e.snapshotDir,`memoryReport`,o);e.writeMemoryReport(t,e.captureMemoryReport()),e.log(`info`,`memory report written: ${t}`)}),eb(e.log,`heap snapshot`,()=>{let t=Zy(e.snapshotDir,`heapSnapshot`,o);e.log(`info`,`heap snapshot written: ${e.writeHeapSnapshot(t)}`)}),eb(e.log,`artifact rotation`,()=>{nb(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 eb(e,t,n){try{n()}catch(n){e(`warn`,`${t} failed: ${n.message}`)}}function tb(e){let t=e.slice(e.lastIndexOf(`/`)+1),n=Qy(t);if(n===null)return t;let{prefix:r,suffix:i}=Xy[n];return t.slice(r.length,t.length-i.length)}function nb(e,t,n){let r=new Map;for(let t of e){let e=tb(t),n=r.get(e);n===void 0?r.set(e,[t]):n.push(t)}let i=[...r.keys()].sort((e,t)=>t.localeCompare(e));for(let e of i.slice(t))for(let t of r.get(e)??[])try{n(t)}catch{}}function rb(e,t,n={}){let i=je();return{now:()=>Date.now(),pid:process.pid,snapshotDir:i,log:Y,memoryBytes:()=>{let e=process.memoryUsage();return{rss:e.rss,heapTotal:e.heapTotal}},captureMemoryReport:()=>By(Vy(process.platform,process.pid)),writeMemoryReport:(e,t)=>r.writeFileSync(e,t,{mode:384}),writeHeapSnapshot:e=>_.writeHeapSnapshot(e),listArtifacts:()=>{try{return r.readdirSync(i).filter(e=>Qy(e)!==null).map(e=>c.join(i,e))}catch{return[]}},removeFile:e=>r.unlinkSync(e),shutdown:t,startedAtMs:e,...n}}function ib(e={}){if(bb()!==null)return;let n=e.spawn??xb,r=_b();if(r.kind===`contended`){let e=ob();e!==null&&e>2e3&&(t.stderr.write(`cc-candybar: spawn-lock held ${e}ms (likely crashed holder) — spawning unlocked\n`),ab(n));return}if(r.kind===`error`){t.stderr.write(`cc-candybar: spawn-lock unavailable (${r.reason}) — spawning unlocked\n`),ab(n);return}try{ab(n)}finally{yb()}}function ab(e){pb()&&sb(e)}function ob(){try{let e=r.statSync(Be());return Date.now()-e.mtimeMs}catch{return null}}function sb(e){try{e()||t.stderr.write(`cc-candybar: daemon spawn returned false (unable to resolve script path?)
125
- `)}catch(e){t.stderr.write(`cc-candybar: daemon spawn failed: ${e.message}\n`)}}function cb(e,t){return e===null?{kind:`allow`}:e<-1e4?{kind:`allow-future-garbage`,futureMs:-e}:e<t?{kind:`deny`}:{kind:`allow`}}function lb(e){return Math.min(3e3*2**Math.min(Math.max(e,0),5),6e4)}function ub(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 db(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 fb(){try{r.unlinkSync(He())}catch(e){e.code!==`ENOENT`&&t.stderr.write(`cc-candybar: could not reset spawn.backoff: ${e.message}\n`)}}function pb(){let e=Ve(),n=He(),r=ub(n),i=cb(mb(e),lb(r));return i.kind===`deny`?!1:(i.kind===`allow-future-garbage`&&t.stderr.write(`cc-candybar: spawn.cooldown mtime is ${i.futureMs}ms in the future — ignoring and spawning\n`),hb(e),db(n,Math.min(r+1,5)),!0)}function mb(e){try{return Date.now()-r.statSync(e).mtimeMs}catch{return null}}function hb(e){try{r.mkdirSync(c.dirname(e),{recursive:!0}),r.writeFileSync(e,`${t.pid} ${Date.now()}\n`,{mode:384})}catch(e){t.stderr.write(`cc-candybar: could not record spawn.cooldown: ${e.message}\n`)}}let gb=null;function _b(){let e=Be();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 gb={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(!vb(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 vb(e){try{let t=r.statSync(e);return Date.now()-t.mtimeMs>1e4}catch{return!0}}function yb(){if(!gb)return;let{fd:e,path:t}=gb;gb=null;try{r.closeSync(e)}catch{}try{r.unlinkSync(t)}catch{}}function bb(){try{return r.mkdirSync(je(),{recursive:!0}),null}catch(e){return`mkdir ${je()}: ${e.message}`}}function xb(){let e=t.execPath,n=t.argv[1];return n?Ee({bin:e,args:[`--max-old-space-size=${qy(t.env)}`,n,`daemon`],category:`daemon-spawn`}).ok:!1}const Sb=`cc-candybar`,Cb=`dispatch`,wb=`set-state`,Tb=`step-state`,Eb=`copy`,Db=`open-vscode`,Ob=`toolbar-toggle`,kb=`show-config-error`,Ab=`show-config-warning`,jb=`set-config`,Mb=`step-config`,Nb=`reset-config`,Pb=`apply-layout-op`,Fb=`undo`,Ib=`redo`,Lb=`apply-update`,Rb=`doctor-run`,zb=`doctor-fix`;function Bb(e){return e.map(encodeURIComponent).join(`/`)}function Vb(e){return e.length===0?[]:e.split(`/`).map(decodeURIComponent)}function Hb(e){return`${Sb}://${Cb}/${e.map(e=>`e=${encodeURIComponent(`${e.verb}/${Bb(e.args)}`)}`).join(`&`)}`}function Ub(e){return new y(e).getAll(`e`).map(Kb)}function Wb(e){return e.reduce((e,t)=>{let n=e.at(-1),r=n&&Gb(n,t);return r?[...e.slice(0,-1),r]:[...e,t]},[])}function Gb(e,t){if(e.verb!==`set-state`||t.verb!==`set-state`)return;let[n,r]=[Kb(e.value),Kb(t.value)];return n.verb===r.verb?{verb:wb,value:`${n.verb}/${n.value}/${r.value}`}:void 0}function Kb(e){let t=e.indexOf(`/`);return t===-1?{verb:e,value:``}:{verb:e.slice(0,t),value:e.slice(t+1)}}const qb=`1.74.3`;function Jb(){return c.join(f.homedir(),`.claude`,`settings.json`)}function X(e){return{kind:`ok`,value:e}}const Z={kind:`absent`};function Q(e){return{kind:`failed`,reason:e}}function Yb(e,t){return e?.kind===`ok`?e.value:t}const Xb=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/;function Zb(e){let t=Xb.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 Qb(e){return e.join(`.`)}function $b([e,t,n],[r,i,a]){return e-r||t-i||n-a}const ex=`@promptctl/cc-candybar`;async function tx(e,t,n){let r=`${n}/-/package/${encodeURIComponent(e)}/dist-tags`;try{let e=await t(r,{signal:AbortSignal.timeout(5e3)});if(!e.ok)return Q(`registry responded ${e.status} for ${r}`);let n=await e.json();return typeof n.latest==`string`?Zb(n.latest):Z}catch(e){return Q(e instanceof Error?e.message:String(e))}}function nx(e,t){let n=Zb(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=$b(n.value,t.value);return e<0?{kind:`stale`,installed:n.value,latest:t.value}:e>0?{kind:`ahead`,installed:n.value,latest:t.value}:{kind:`current`,installed:n.value}}}}function rx(e,t){switch(t.kind){case`current`:return{stream:`stdout`,text:`✓ cc-candybar ${Qb(t.installed)} is the latest release.\n`};case`ahead`:return{stream:`stdout`,text:`cc-candybar ${Qb(t.installed)} is newer than the registry's latest release (${Qb(t.latest)}): an unpublished build.\n`};case`stale`:{let n=Qb(t.latest);return{stream:`stderr`,text:`⚠ cc-candybar ${Qb(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 ix=`CCCandybarURLHandler`,ax=[],ox={"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 sx(e){return/^[A-Za-z0-9_./=,:-]+$/.test(e)?e:`'${e.replace(/'/g,`'\\''`)}'`}function cx(e,t){return[e,...t].map(sx).join(` `)}function lx(){return c.join(f.homedir(),`Applications`,`${ix}.app`)}function ux(){if(process.platform!==`darwin`)throw Error(`URL handler installation requires macOS (found platform: ${process.platform}).`)}function dx(){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 fx(){return c.join(dx(),`bin`,`cc-candybar`)}function px(){return c.join(dx(),`dist`,`index.mjs`)}function mx(e,t){return[`on open location L`,`\tdo shell script "'${e.replace(/"/g,`\\"`)}' '${t.replace(/"/g,`\\"`)}' url-handle " & quoted form of L`,`end open location`].join(`
126
- `)}function hx(e){if(!e)throw Error(`install: process.argv[1] not set`);return e.endsWith(`.mjs`)||e.endsWith(`.js`)?e:c.resolve(c.dirname(e),`..`,`dist`,`index.mjs`)}function gx(t){let n=ox[`${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 _x(e,t){c.resolve(e)!==c.resolve(t)&&r.copyFileSync(e,t)}function vx(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 ${ex}@latest install`);return n.toString(`latin1`)===`#!`?`node-shim`:`native`}finally{r.closeSync(t)}}function yx(){let e=hx(process.argv[1]);if(!r.existsSync(e))throw Error(`install: bundled dist not found at ${e}. Reinstall the package.`);let t=gx(e);if(!r.existsSync(t.sourcePath))throw Error(`install: render entry not found at ${t.sourcePath}. Reinstall the package.`);r.mkdirSync(c.dirname(px()),{recursive:!0}),r.mkdirSync(c.dirname(fx()),{recursive:!0}),_x(e,px()),_x(t.sourcePath,fx()),r.chmodSync(fx(),493),r.rmSync(c.join(dx(),`url-handler.mjs`),{force:!0});let n=vx(fx());return process.stdout.write(`Staged cc-candybar v${qb} runtime at ${dx()}\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:fx(),distPath:px(),entryKind:n}}function bx(){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>${Sb}</string>`,` </array>`,` </dict>`,`</array>`].join(`
127
- `)}]}function xx(e){let t=lx();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=Te({bin:`/usr/bin/osacompile`,args:[`-o`,t,`-e`,mx(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 bx())Te({bin:`/usr/bin/plutil`,args:[`-remove`,e,i],category:`install.plutil`});for(let{key:e,xml:t}of bx()){let n=Te({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 ${Sb}:// with Launch Services\n`);let a=Te({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(`✓ ${ix}.app installed and registered.\n`),process.stdout.write(` Test: open '${Sb}://hello-world' && pbpaste\n`)}function Sx(){ux(),xx(yx().distPath)}function Cx(e,t=Sb){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:Eb,value:r}:{verb:decodeURIComponent(r.slice(0,i)),value:r.slice(i+1)}}async function wx(e){e||(process.stderr.write(`url-handle: missing URL argument.
128
- `),process.exit(1));let t;try{t=Cx(e)}catch(e){process.stderr.write(`url-handle: ${e instanceof Error?e.message:String(e)}\n`),process.exit(1)}let n=await Iy(t.verb,t.value);n.kind===`ok`&&process.exit(0),n.kind===`transient`&&(ib(),process.stderr.write(`url-handle: daemon unavailable (${n.cause}: ${n.message})\n`),process.exit(1)),process.stderr.write(Tx(n)+`
129
- `),process.exit(1)}function Tx(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 Ex(){return`✓ install complete.
122
+ Single-row example: root: { h: ["seg1", "seg2"] }`,line:W(e.source,[`layout`])}),t.root!==void 0&&(r.root=al(e,`root`,t.root)),t.actions!==void 0&&(r.actions=g_(e,t.actions)),t.looks!==void 0&&(r.looks=av(e,t.looks)),t.presets!==void 0&&(r.presets=sv(e,t.presets)),t.editGlobals!==void 0&&(r.editGlobals=as(e,`editGlobals`,t.editGlobals)),t.helpers!==void 0&&(r.helpers=cv(e,t.helpers)),pl(e,r),gh(e,r),wh(e,r),tc(e,r,Zs,`the global settings menu`),r}const hy=new Set([`globals`,`variables`,`segments`,`layout`,`root`,`actions`,`looks`,`presets`,`editGlobals`,`helpers`]);function gy(e){let t=by(e.termCols),n=by(e.termRows),r=xy(e.ssh),i=vy(e.tmux),a=_y(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 _y(e){return typeof e==`string`&&e!==``?Qv(e):void 0}function vy(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 yy=1e4;function by(e){if(typeof e!=`number`||!Number.isFinite(e))return;let t=Math.floor(e);if(!(t<=0))return t>yy?yy:t}function xy(e){return typeof e==`boolean`?e:void 0}var Sy=class extends Error{constructor(e){super(e),this.name=`ProtocolError`}};function Cy(e){let t=Buffer.from(JSON.stringify(e),`utf8`),n=Buffer.alloc(4);return n.writeUInt32BE(t.length,0),Buffer.concat([n,t])}function wy(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 Sy(`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 Sy(e instanceof Error?e.message:String(e));e instanceof Error&&(n.cause=e),t(n);return}}}}function Ty(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=wy(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(Cy(t))})}async function Ey(e,t,n){let r=null;try{r=await jy(Me(),t.connectMs);let i=await Ty(r,{v:3,...e},t.budgetMs);return ky(e.kind,i,n)}catch(e){return Ay(e)}finally{r&&r.destroy()}}function Dy(e,t){return typeof e==`string`?e:t}function Oy(e){return typeof e==`number`&&Number.isInteger(e)&&e>=0?e:0}function ky(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=Dy(r.error,`(no error message)`);switch(r.code){case`VERSION_MISMATCH`:return{kind:`permanent`,cause:`version_mismatch`,clientV:3,daemonV:Oy(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 Ay(e){if(e instanceof Sy||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 jy(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 My(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 Ny={connectMs:50,budgetMs:150},Py={connectMs:50,budgetMs:200};function Fy(e){let t=e.output;return typeof t==`string`?t:void 0}function Iy(e,t,n,r){return Ey({kind:`render`,hookData:e,args:t,cwd:n,...r},Ny,Fy)}function Ly(e,t){return Ey({kind:`click`,verb:e,value:t},Py,Fy)}let Ry=null;function zy(e){if(Ry!==null)return Ry;r.mkdirSync(c.dirname(e),{recursive:!0});try{Ry=r.statSync(e).size}catch{Ry=0}return Ry}function By(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{}Ry=0}function Y(e,t){let n=`${new Date().toISOString()} [${e}] ${t}\n`;try{let e=We(),t=zy(e);r.appendFileSync(e,n),Ry=t+Buffer.byteLength(n,`utf8`),Ry>=5242880&&By(e)}catch(e){Ry=null;try{process.stderr.write(`${n}cc-candybar: daemon.log unwritable: ${e.message}\n`)}catch{}}}function Vy(e){let t=[];for(let n of e){let e=n.read();if(e.kind===`text`)return`# memory report from: ${n.name}\n${e.text}`;t.push(`# ${n.name}: unavailable — ${e.reason}`)}return[`# memory report: no probe answered`,...t.length>0?t:[`# no probe is known for this platform`]].join(`
123
+ `)}function Hy(e,t){return e===`darwin`?[Uy(`footprint`,[`-p`,String(t)]),Uy(`vmmap`,[`--summary`,String(t)])]:e===`linux`?[Wy(`/proc/self/smaps_rollup`),Wy(`/proc/self/status`)]:[]}function Uy(e,t){return{name:`${e} ${t.join(` `)}`,read:()=>{let n=Te({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}`}${Gy(n.stderr)}`}}}}function Wy(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 Gy(e){let t=e.split(`
124
+ `).map(e=>e.trim()).find(e=>e.length>0);return t===void 0?``:` (${t})`}const Ky=`CC_CANDYBAR_RSS_LIMIT_MB`;function qy(e){let t=e[Ky];if(t===void 0)return 512;let n=/^\d+$/.test(t)?Number(t):NaN;if(!Number.isSafeInteger(n)||n<=0)throw Error(`${Ky} must be a positive integer (MB), got ${JSON.stringify(t)}`);return n}function Jy(e){return qy(e)*2}const Yy=1024*1024;function Xy(e){return qy(e)*Yy}const Zy={memoryReport:{prefix:`memory-`,suffix:`.txt`},heapSnapshot:{prefix:`heap-`,suffix:`.heapsnapshot`}};function Qy(e,t,n){let{prefix:r,suffix:i}=Zy[t];return c.join(e,`${r}${n}${i}`)}function $y(e){for(let t of Object.keys(Zy)){let{prefix:n,suffix:r}=Zy[t];if(e.startsWith(n)&&e.endsWith(r))return t}return null}function eb(e){let t=e.rssLimitBytes??512*Yy,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 tb(e.log,`memory report`,()=>{let t=Qy(e.snapshotDir,`memoryReport`,o);e.writeMemoryReport(t,e.captureMemoryReport()),e.log(`info`,`memory report written: ${t}`)}),tb(e.log,`heap snapshot`,()=>{let t=Qy(e.snapshotDir,`heapSnapshot`,o);e.log(`info`,`heap snapshot written: ${e.writeHeapSnapshot(t)}`)}),tb(e.log,`artifact rotation`,()=>{rb(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 tb(e,t,n){try{n()}catch(n){e(`warn`,`${t} failed: ${n.message}`)}}function nb(e){let t=e.slice(e.lastIndexOf(`/`)+1),n=$y(t);if(n===null)return t;let{prefix:r,suffix:i}=Zy[n];return t.slice(r.length,t.length-i.length)}function rb(e,t,n){let r=new Map;for(let t of e){let e=nb(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 ib(e,t,n={}){let i=je();return{now:()=>Date.now(),pid:process.pid,snapshotDir:i,log:Y,memoryBytes:()=>{let e=process.memoryUsage();return{rss:e.rss,heapTotal:e.heapTotal}},captureMemoryReport:()=>Vy(Hy(process.platform,process.pid)),writeMemoryReport:(e,t)=>r.writeFileSync(e,t,{mode:384}),writeHeapSnapshot:e=>_.writeHeapSnapshot(e),listArtifacts:()=>{try{return r.readdirSync(i).filter(e=>$y(e)!==null).map(e=>c.join(i,e))}catch{return[]}},removeFile:e=>r.unlinkSync(e),shutdown:t,startedAtMs:e,...n}}function ab(e={}){if(xb()!==null)return;let n=e.spawn??Sb,r=vb();if(r.kind===`contended`){let e=sb();e!==null&&e>2e3&&(t.stderr.write(`cc-candybar: spawn-lock held ${e}ms (likely crashed holder) — spawning unlocked\n`),ob(n));return}if(r.kind===`error`){t.stderr.write(`cc-candybar: spawn-lock unavailable (${r.reason}) — spawning unlocked\n`),ob(n);return}try{ob(n)}finally{bb()}}function ob(e){mb()&&cb(e)}function sb(){try{let e=r.statSync(Be());return Date.now()-e.mtimeMs}catch{return null}}function cb(e){try{e()||t.stderr.write(`cc-candybar: daemon spawn returned false (unable to resolve script path?)
125
+ `)}catch(e){t.stderr.write(`cc-candybar: daemon spawn failed: ${e.message}\n`)}}function lb(e,t){return e===null?{kind:`allow`}:e<-1e4?{kind:`allow-future-garbage`,futureMs:-e}:e<t?{kind:`deny`}:{kind:`allow`}}function ub(e){return Math.min(3e3*2**Math.min(Math.max(e,0),5),6e4)}function db(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 fb(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 pb(){try{r.unlinkSync(He())}catch(e){e.code!==`ENOENT`&&t.stderr.write(`cc-candybar: could not reset spawn.backoff: ${e.message}\n`)}}function mb(){let e=Ve(),n=He(),r=db(n),i=lb(hb(e),ub(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`),gb(e),fb(n,Math.min(r+1,5)),!0)}function hb(e){try{return Date.now()-r.statSync(e).mtimeMs}catch{return null}}function gb(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 _b=null;function vb(){let e=Be();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 _b={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(!yb(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 yb(e){try{let t=r.statSync(e);return Date.now()-t.mtimeMs>1e4}catch{return!0}}function bb(){if(!_b)return;let{fd:e,path:t}=_b;_b=null;try{r.closeSync(e)}catch{}try{r.unlinkSync(t)}catch{}}function xb(){try{return r.mkdirSync(je(),{recursive:!0}),null}catch(e){return`mkdir ${je()}: ${e.message}`}}function Sb(){let e=t.execPath,n=t.argv[1];return n?Ee({bin:e,args:[`--max-old-space-size=${Jy(t.env)}`,n,`daemon`],category:`daemon-spawn`}).ok:!1}const Cb=`cc-candybar`,wb=`dispatch`,Tb=`set-state`,Eb=`step-state`,Db=`copy`,Ob=`open-vscode`,kb=`toolbar-toggle`,Ab=`show-config-error`,jb=`show-config-warning`,Mb=`set-config`,Nb=`step-config`,Pb=`reset-config`,Fb=`apply-layout-op`,Ib=`undo`,Lb=`redo`,Rb=`apply-update`,zb=`doctor-run`,Bb=`doctor-fix`;function Vb(e){return e.map(encodeURIComponent).join(`/`)}function Hb(e){return e.length===0?[]:e.split(`/`).map(decodeURIComponent)}function Ub(e){return`${Cb}://${wb}/${e.map(e=>`e=${encodeURIComponent(`${e.verb}/${Vb(e.args)}`)}`).join(`&`)}`}function Wb(e){return new y(e).getAll(`e`).map(qb)}function Gb(e){return e.reduce((e,t)=>{let n=e.at(-1),r=n&&Kb(n,t);return r?[...e.slice(0,-1),r]:[...e,t]},[])}function Kb(e,t){if(e.verb!==`set-state`||t.verb!==`set-state`)return;let[n,r]=[qb(e.value),qb(t.value)];return n.verb===r.verb?{verb:Tb,value:`${n.verb}/${n.value}/${r.value}`}:void 0}function qb(e){let t=e.indexOf(`/`);return t===-1?{verb:e,value:``}:{verb:e.slice(0,t),value:e.slice(t+1)}}const Jb=`1.74.4`;function Yb(){return c.join(f.homedir(),`.claude`,`settings.json`)}function X(e){return{kind:`ok`,value:e}}const Z={kind:`absent`};function Q(e){return{kind:`failed`,reason:e}}function Xb(e,t){return e?.kind===`ok`?e.value:t}const Zb=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/;function Qb(e){let t=Zb.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 $b(e){return e.join(`.`)}function ex([e,t,n],[r,i,a]){return e-r||t-i||n-a}const tx=`@promptctl/cc-candybar`;async function nx(e,t,n){let r=`${n}/-/package/${encodeURIComponent(e)}/dist-tags`;try{let e=await t(r,{signal:AbortSignal.timeout(5e3)});if(!e.ok)return Q(`registry responded ${e.status} for ${r}`);let n=await e.json();return typeof n.latest==`string`?Qb(n.latest):Z}catch(e){return Q(e instanceof Error?e.message:String(e))}}function rx(e,t){let n=Qb(e);if(n.kind===`failed`)return{kind:`unchecked`,installed:e,reason:n.reason};switch(t.kind){case`failed`:return{kind:`unchecked`,installed:e,reason:t.reason};case`absent`:return{kind:`unchecked`,installed:e,reason:"the registry lists no `latest` dist-tag"};case`ok`:{let e=ex(n.value,t.value);return e<0?{kind:`stale`,installed:n.value,latest:t.value}:e>0?{kind:`ahead`,installed:n.value,latest:t.value}:{kind:`current`,installed:n.value}}}}function ix(e,t){switch(t.kind){case`current`:return{stream:`stdout`,text:`✓ cc-candybar ${$b(t.installed)} is the latest release.\n`};case`ahead`:return{stream:`stdout`,text:`cc-candybar ${$b(t.installed)} is newer than the registry's latest release (${$b(t.latest)}): an unpublished build.\n`};case`stale`:{let n=$b(t.latest);return{stream:`stderr`,text:`⚠ cc-candybar ${$b(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 ax=`CCCandybarURLHandler`,ox=[],sx={"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 cx(e){return/^[A-Za-z0-9_./=,:-]+$/.test(e)?e:`'${e.replace(/'/g,`'\\''`)}'`}function lx(e,t){return[e,...t].map(cx).join(` `)}function ux(){return c.join(f.homedir(),`Applications`,`${ax}.app`)}function dx(){if(process.platform!==`darwin`)throw Error(`URL handler installation requires macOS (found platform: ${process.platform}).`)}function fx(){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 px(){return c.join(fx(),`bin`,`cc-candybar`)}function mx(){return c.join(fx(),`dist`,`index.mjs`)}function hx(e,t){return[`on open location L`,`\tdo shell script "'${e.replace(/"/g,`\\"`)}' '${t.replace(/"/g,`\\"`)}' url-handle " & quoted form of L`,`end open location`].join(`
126
+ `)}function gx(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 _x(t){let n=sx[`${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 vx(e,t){c.resolve(e)!==c.resolve(t)&&r.copyFileSync(e,t)}function yx(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 ${tx}@latest install`);return n.toString(`latin1`)===`#!`?`node-shim`:`native`}finally{r.closeSync(t)}}function bx(){let e=gx(process.argv[1]);if(!r.existsSync(e))throw Error(`install: bundled dist not found at ${e}. Reinstall the package.`);let t=_x(e);if(!r.existsSync(t.sourcePath))throw Error(`install: render entry not found at ${t.sourcePath}. Reinstall the package.`);r.mkdirSync(c.dirname(mx()),{recursive:!0}),r.mkdirSync(c.dirname(px()),{recursive:!0}),vx(e,mx()),vx(t.sourcePath,px()),r.chmodSync(px(),493),r.rmSync(c.join(fx(),`url-handler.mjs`),{force:!0});let n=yx(px());return process.stdout.write(`Staged cc-candybar v${Jb} runtime at ${fx()}\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:px(),distPath:mx(),entryKind:n}}function xx(){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>${Cb}</string>`,` </array>`,` </dict>`,`</array>`].join(`
127
+ `)}]}function Sx(e){let t=ux();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=Te({bin:`/usr/bin/osacompile`,args:[`-o`,t,`-e`,hx(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 xx())Te({bin:`/usr/bin/plutil`,args:[`-remove`,e,i],category:`install.plutil`});for(let{key:e,xml:t}of xx()){let n=Te({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 ${Cb}:// with Launch Services\n`);let a=Te({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(`✓ ${ax}.app installed and registered.\n`),process.stdout.write(` Test: open '${Cb}://hello-world' && pbpaste\n`)}function Cx(){dx(),Sx(bx().distPath)}function wx(e,t=Cb){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:Db,value:r}:{verb:decodeURIComponent(r.slice(0,i)),value:r.slice(i+1)}}async function Tx(e){e||(process.stderr.write(`url-handle: missing URL argument.
128
+ `),process.exit(1));let t;try{t=wx(e)}catch(e){process.stderr.write(`url-handle: ${e instanceof Error?e.message:String(e)}\n`),process.exit(1)}let n=await Ly(t.verb,t.value);n.kind===`ok`&&process.exit(0),n.kind===`transient`&&(ab(),process.stderr.write(`url-handle: daemon unavailable (${n.cause}: ${n.message})\n`),process.exit(1)),process.stderr.write(Ex(n)+`
129
+ `),process.exit(1)}function Ex(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 Dx(){return`✓ install complete.
130
130
  Restart Claude Code to pick up the new statusline.
131
- Tip: every bar carries a settings menu — click it (${No} by\n default) for quick actions, preset switching, edit mode, and clickable\n theme/look/style/wrap/padding controls.\n`}async function Dx(e){let t=e.includes(`--force`),n=e.filter(e=>e!==`--force`),r=n.length>0?n:[...ax],i=yx();process.platform===`darwin`?xx(i.distPath):process.stdout.write(`Skipping URL handler (cmd-click verbs are macOS-only).
132
- `),Ox(i.binPath,r,t),process.stdout.write(Ex());let a=rx(ex,nx(qb,await tx(ex,fetch,`https://registry.npmjs.org`)));process[a.stream].write(a.text)}function Ox(e,t,n,i){let a=i??Jb();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,sx(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:cx(e,t)},Oe(a,JSON.stringify(o,null,2)),process.stdout.write(`Updated ${a}\n`)}function kx(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 Ax(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 jx(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 Mx(e,t){let n=Ax(e);if(n.kind===`owned`&&n.pid===t)try{r.unlinkSync(e)}catch{}}function Nx(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 Px(e,t,n,r){let i=Fx(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 Fx(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 Ix(e){let t=!1;function n(){let n=Px(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 Lx(e,t=Te){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 Rx(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 zx(e,t=Lx){let n=t(e);return n.kind===`start`?n.token:null}const Bx=`CC_CANDYBAR_PARENT_PID`;function Vx(e){let t=e[Bx];if(t===void 0)return{kind:`outlives-nobody`};let n=Number.parseInt(t,10);if(!Number.isInteger(n)||n<=0)throw Error(`${Bx} must be a positive integer pid, got ${JSON.stringify(t)}`);return{kind:`anchored`,pid:n}}function Hx(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 Ux(e){try{return t.kill(e,0),!0}catch(e){return e.code===`EPERM`}}function Wx(){let e=Number(process.env.CC_CANDYBAR_DAEMON_CEILING??``);return Number.isInteger(e)&&e>0?e:16}function Gx(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 Kx(e){try{return r.readdirSync(e).filter(e=>e.endsWith(`.json`)).map(t=>c.join(e,t))}catch{return[]}}function qx(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 Jx(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 Yx(e){if(!e.isolated)return{decision:Gx(!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=Gx(!0,Jx(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 Xx(e,t,n,r){let i=n(e);if(i!==null&&i.pid===t)try{r(e)}catch{}}function Zx(e,t={}){return{isolated:!!process.env.CC_CANDYBAR_SOCKET,registryDir:ze(),ceiling:Wx(),pid:process.pid,startTime:e,isSameLiveProcess:(e,t)=>Rx(e,t,{readStartTime:Lx,pidAlive:Ux}),listFiles:Kx,readEntry:qx,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?Ne:e=>{Ne(c.dirname(e)),Ne(e)},...t}}function Qx(e){return e<32||e===127||e>=128&&e<=159}function $x(e){let t=``;for(let n of e)t+=Qx(n.codePointAt(0)??0)?` `:n;return t.replace(/\s+/g,` `).trim()}function eS(e,t){let n=$x(e),r=``,i=0;for(let e of n){if(i===t)return r.replace(/.$/u,`…`);r+=e,i++}return r}const tS=`\x1B[38;2;255;255;255m`,nS=`\x1B[48;2;200;40;40m`;function rS(e){let t=/;2;(\d+);(\d+);(\d+)m$/.exec(e);if(t===null)throw Error(`diagnostic-style: not a 24-bit SGR: ${e}`);return`#`+t.slice(1,4).map(e=>Number(e).toString(16).padStart(2,`0`)).join(``)}const iS={fg:rS(tS),bg:rS(nS)},aS={fg:rS(`\x1B[38;2;0;0;0m`),bg:rS(`\x1B[48;2;220;160;40m`)},oS={unicode:ri,ascii:{glyph:`>`,divider:`|`}},sS={unicode:{},ascii:{left:`(`,right:`)`}};function cS(e,t,n){switch(e){case`capsule`:return new ai(sS[t]);case`plain`:return new oi(n===void 0?{}:{separator:n});case`powerline`:return new ii(oS[t]);default:return e}}function lS(e){switch(e){case`powerline`:return 1;case`capsule`:return 2;case`plain`:return 0;default:return e}}function uS(e,t){if(e.length===0)return``;let n=cS(t.style,t.charset,t.separator),r=t.colorCompatibility,i=t.wrap&&Number.isFinite(t.width)?li(new hi([...e],{joiner:n}),{width:t.width,colorSystem:r}):li(new Xr([...e],n),{colorSystem:r});if(!i.endsWith(`
133
- `))throw Error(`renderStripCells: rich-js strip output did not end its last line`);return i.slice(0,-1)}function dS(e){return Math.min(20,e??20)}const fS={heading:`ERROR`,glyph:`⚠`,colors:iS},pS={heading:`WARNING`,glyph:`⚠`,colors:aS},mS={heading:`UPDATE`,glyph:`⬆`,colors:aS};function hS(e,t){return{text:$x(e),link:t}}function gS(e,t,n){let[r,...i]=[_S(e,fS,kb),t,_S(n,pS,Ab)].flat();return r===void 0?null:{channels:[r,...i]}}function _S(e,t,n){let r=Hb([{verb:n,args:[e]}]),[i,...a]=e.split(/\r\n|\r|\n/).map(e=>hS(e,r)).filter(e=>e.text!==``).map(e=>[e]);return i===void 0?[]:[{severity:t,message:e,lines:[i,...a]}]}function vS(e){return e.channels.map(e=>`${e.severity.heading}\n${e.message}\n`).join(`
134
- `)}function yS(e,t,n,r){if(t===null)return e;let i=bS(r),a=t.channels.flatMap(e=>xS(e,i)),o=n.failedConfigFile!==null||a.length>r.rowCap,s=a.slice(0,r.rowCap-Number(o)),c=o?[SS(t,n,a.length-s.length,i)]:[],l=[...s,...c].join(`
135
- `);return e?`${l}\n${e}`:l}function bS(e){return{style:`plain`,separator:``,width:e.width,wrap:!0,padding:0,charset:`unicode`,colorCompatibility:e.colorCompatibility}}function xS(e,t){let n=new V({bgcolor:e.severity.colors.bg,color:e.severity.colors.fg}),r=Lt(Math.max(2,t.width-1)),i=(e,t)=>new Yr(`${e} `,{style:t,end:``,noWrap:!0});return e.lines.flatMap((a,o)=>uS([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(`
136
- `))}function SS(e,t,n,r){let{colors:i}=e.channels[0].severity,{fullText:a,failedConfigFile:o}=t,s=new V({bgcolor:i.bg,color:i.fg}),c=(e,t)=>new Yr(e,{style:t,end:``,noWrap:!0}),l=n>0?[c(`${n} more rows · `,s),a.kind===`file`?c(`open full text`,s.withLink(x(a.path).href)):c(`full text unavailable: ${$x(a.reason)}`,s)]:[],u=o===null?[]:[c(`${l.length>0?` · `:``}open `,s),c($x(o),s.withLink(x(o).href))],d=[c(`↳ `,s),...l,...u.slice(0,-1)],f=d.reduce((e,t)=>e+t.cellLength,0),p=u.slice(-1).map(e=>e.truncate(Math.max(1,r.width-f),{mode:`middle`})),m=Yr.fromFragments([...d,...p]).truncate(r.width);return m.noWrap=!0,uS([m],r)}const CS=e=>!e.startsWith(`.`)&&!e.endsWith(`~`);function wS(e,t){return t.isSymbolicLink()?Buffer.from(r.readlinkSync(e)):r.readFileSync(e)}function TS(e,t){return r.readdirSync(t).filter(CS).sort().flatMap(n=>{let i=c.join(t,n),a=r.lstatSync(i,{throwIfNoEntry:!1});return a===void 0?[]:a.isDirectory()?TS(e,i):[[c.relative(e,i).split(c.sep).join(`/`),wS(i,a)]]})}function ES(e){let t=C.createHash(`sha256`);for(let[n,r]of TS(e,e))t.update(n).update(`\0`).update(r).update(`\0`);return t.digest(`hex`)}const DS=e=>e.slice(0,7);function OS(e){return c.dirname(c.dirname(e))}function kS(){return{version:qb,digest:`c28669439676efc6a8521c3b2d24e924bfd3e3e8e593b13157ef0d922de5846a`}}function AS(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 jS(e,t){try{let n=OS(b(e)),i=c.join(n,`src`);if(!r.existsSync(i))return{kind:`not-source-checkout`};let a=t(),o=ES(i);return o===a.digest?{kind:`current`,root:n,stamp:a}:{kind:`stale`,root:n,source:{version:AS(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 MS=/^-?\d+$/;function NS(e,t,n){return e===void 0?t:Math.max(t,Math.min(n,e))}function PS(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 FS(e){return t=>{if(!t)return{ok:!1,reason:`${e} value is required`};if(!MS.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 IS(e,t,n){return r=>r?MS.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 LS(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=>!MS.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:NS(r[0].seed,t,i)}}return{kind:`int`}}function RS(e){return e===`config`?`set-config`:`set-state`}function zS(e,t,n){return t.kind===`int`?FS(`menu page "${e}"`):t.kind===`range`?IS(t.min,t.max,`${n} stepper "${e}"`):PS(t.allowed,`${n} "${e}"`,RS(n))}function BS(e,t,n){return zS(e,LS(e,t,n),n)}function VS(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:LS(e,n,t)}))}function HS(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=BS(e,a.specs,t)}else{let r=[i];n.set(e,{permanent:!1,kind:i.kind,validator:BS(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=BS(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=LS(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 US=HS({},`config`);function WS(){return US.listKeys()}function GS(e,t){return US.validate(e,t)}function KS(e){return US.rangeParamsFor(e)}function qS(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:Sv(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:[wh({op:`remove`,target:e.removeSegment})]}}]:`insertSegment`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:[wh({op:`insert`,segment:e.insertSegment,anchor:e.anchor,relation:e.relation})]}}]:`insertSegmentFrom`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:Sv(e.insertSegmentFrom,n).members.map(t=>wh({op:`insert`,segment:t,anchor:e.anchor,relation:e.relation}))}}]:[{key:e.persist,spec:{kind:`range`,min:e.min,max:e.max,seed:NS(t.get(e.persist),e.min,e.max)}}]:[]}function JS(e){return ls(e.globals)}function YS(e){let t=new Set;for(let n of ZS(e)){let e=`persist`in n?n.persist:`reset`in n?n.reset:null;if(e===null)continue;let r=Lh(e);r?.scope===`preset-root`&&t.add(r.preset)}return[...t].map(e=>({key:Ih(e),spec:{kind:`allow-list`,allowed:[]}}))}function XS(e){let t=JS(e),n=new Map([...bv(e),...Xh(e)]);return[...YS(e),...ZS(e).flatMap(e=>qS(e,t,n))]}function ZS(e){return Object.values(e.actions).flatMap(s_)}function QS(e){return VS(XS(e),`config`)}function $S(e,t){return US.register(e,t)}const eC=xi(),tC=new Set(eC),nC=new Set(ji),rC=e=>e?tC.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown theme "${e}" (have: ${eC.join(`, `)})`}:{ok:!1,reason:`theme name is required`},iC=e=>e?nC.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown style "${e}" (have: ${ji.join(`, `)})`}:{ok:!1,reason:`style name is required`},aC=new Set([`1`,`true`]),oC=new Set([`0`,`false`]),sC=HS({style:iC,theme:rC,"toolbar-expanded":e=>aC.has(e)?{ok:!0,value:`1`}:oC.has(e)?{ok:!0,value:``}:{ok:!1,reason:`expected boolean-ish (1, 0, true, false), got "${e}"`}});function cC(){return sC.listKeys()}function lC(e,t){return sC.register(e,t)}function uC(e,t){return sC.validate(e,t)}function dC(e){return sC.rangeParamsFor(e)}function fC(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:Sv(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:NS(t.get(e.set),e.min,e.max)}}]:[]}function pC(e){let t=new Set(sC.listBaselineKeys());return e.filter(e=>e.spec.kind!==`allow-list`||!t.has(e.key))}function mC(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 ls(e.globals))t.set(n,r);return t}function hC(e){let t=mC(e),n=bv(e);return pC(Object.values(e.actions).flatMap(s_).flatMap(e=>fC(e,t,n)))}function gC(e){return VS(hC(e))}const _C=`update.dismissed`,vC=`updateNotice`;function yC(e){return e.kind===`source`?e.newer.digest:Qb(e.newer)}const bC=e=>`${e.version} [${DS(e.digest)}]`;function xC(e){switch(e.kind){case`source`:return{headline:`Newer source`,newer:bC(e.newer),running:bC(e.running),act:`rebuild`,busy:`rebuilding…`,command:{bin:`pnpm`,args:[`build`],cwd:e.root}};case`release`:return{headline:`Newer release`,newer:Qb(e.newer),running:Qb(e.running),act:`upgrade`,busy:`upgrading…`,command:{bin:`pnpm`,args:[`dlx`,`${ex}@${Qb(e.newer)}`,`install`]}}}}const SC={kind:`idle`},CC={kind:`running`};function wC(e,t,n){if(e===null)return[];let r=yC(e);if(!n.enabled||n.dismissed===r)return[];let i=xC(e),a=`${i.headline}: ${i.newer}. You're on ${i.running}.`,o=t.kind===`failed`&&t.identity===r?[`${i.act} failed: ${t.reason}`]:[],s=[a,...o].join(`
137
- `),c=Hb([{verb:Ab,args:[s]}]),l=t.kind===`running`?hS(`[${i.busy}]`,c):hS(`[${i.act}]`,Hb([{verb:Lb,args:[n.sessionId]}]));return[{severity:mS,message:s,lines:[[hS(a,c),l,hS(`[dismiss]`,Hb([{verb:wb,args:[n.sessionId,_C,r]}])),hS(`[disable]`,Hb([{verb:jb,args:[n.sessionId,vC,`false`]}]))],...o.map(e=>[hS(e,c)])]}]}function TC(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 EC(e){switch(e.kind){case`current`:return[`info`,`build: current ${bC(e.stamp)}`];case`stale`:return[`info`,`build: stale — source ${bC(e.source)}, running ${bC(e.running)}`];case`not-source-checkout`:return[`info`,`build: not a source checkout`];case`unchecked`:return[`warn`,`build: unchecked: ${e.reason}`]}}function DC(e){switch(e.kind){case`current`:return[`info`,`release: current ${Qb(e.installed)}`];case`stale`:return[`info`,`release: stale — latest ${Qb(e.latest)}, running ${Qb(e.installed)}`];case`ahead`:return[`info`,`release: ahead — running ${Qb(e.installed)}, latest ${Qb(e.latest)}`];case`unchecked`:return[`warn`,`release: unchecked: ${e.reason}`]}}function OC(e){let t=null;return([n,r])=>{r!==t&&(t=r,e(n,r))}}const kC=e=>e.split(/\r?\n/).map(e=>e.trim()).filter(e=>e!==``).at(-1);function AC(e){let t=e.exitCode===null?``:` (exit ${e.exitCode})`,n=kC(e.stderr)??e.error??kC(e.stdout)??`no output`;return`${e.reason}${t}: ${n}`}function jC(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=SC,d=null,f=OC(s),p=OC(s),m=()=>TC(c,l);function h(){let e=m(),t=e===null?null:yC(e);(d===null?null:d.identity)!==t&&(d?.dispose(),d=t===null?null:{identity:t,dispose:lC(_C,{kind:`allow-list`,allowed:[t]})})}function g(){c=jS(t,kS),f(EC(c)),h()}async function _(){l=nx(qb,await tx(ex,a,i)),p(DC(l)),h()}return{arm(){$S(vC,{kind:`allow-list`,allowed:[`false`]}),g(),setInterval(g,n).unref(),c.kind===`not-source-checkout`&&(_(),setInterval(()=>void _(),r).unref())},notice:e=>wC(m(),u,e),act(){let e=m();if(e===null)throw new $(`apply-update: nothing newer is known to apply`);let t=xC(e);if(u.kind===`running`)throw new $(`apply-update: already ${t.busy}`);u=CC,s(`info`,`apply-update: ${t.act} — ${t.command.bin} ${t.command.args?.join(` `)??``}`),we({...t.command,category:`update.apply`,timeoutMs:6e5}).then(n=>{if(n.ok){u=SC,s(`info`,`apply-update: ${t.act} succeeded`),g(),o();return}let r=AC(n);u={kind:`failed`,identity:yC(e),reason:r},s(`error`,`apply-update: ${t.act} failed: ${r}`)})}}}function MC(e,t,n){return t.ok?X(t.stdout):t.reason===`non-zero`&&n===`absent`||t.reason===`non-zero`&&n===t.exitCode?Z:Q(`${e}: ${[t.reason,t.exitCode==null?null:`exit ${t.exitCode}`,t.error??NC(t.stderr)].filter(Boolean).join(`, `)}`)}function NC(e){return e.trim().split(`
138
- `,1)[0]??``}function PC(e,t){if(e.kind!==`ok`)return e;let n=t(e.value);return n===null?Z:X(n)}function FC(e){if(e.kind!==`ok`)return e;let t=e.value.trim();return t?X(t):Z}const IC=/^[A-Za-z]:[\\/]/;function LC(e){let t=e.trim();if(IC.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 RC(e){return LC(e)?.host||null}function zC(e){let t=RC(e);return t?t===`github.com`||t.endsWith(`.github.com`)?`github`:/(^|\.)gitlab\./.test(t)?`gitlab`:null:null}function BC(e){let t=new Map;for(let n of e.split(`
139
- `)){let e=n.match(/^remote\.(.+)\.url\s+(\S.*)$/);if(!e)continue;let r=t.get(e[1])??[];r.push(e[2].trim()),t.set(e[1],r)}return[...t].map(([e,t])=>({name:e,urls:t}))}function VC(e){return e.urls.find(e=>KC(e)!==null)??e.urls[0]??null}function HC(e){return e.find(e=>e.name===`origin`)??e[0]??null}function UC(e){let t=HC(e);return t?VC(t):null}function WC(e){let t=HC(e);return t?t.urls.find(e=>zC(e)!==null)??VC(t):null}function GC(e){let t=(LC(e)?.path??e.replace(/[\\/]+$/,``)).split(`/`);return(t[t.length-1]??``).replace(/\.git$/,``)||null}function KC(e){let t=LC(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 qC(e){let t=UC(e);return t===null?null:KC(t)}function JC(e,t,n,r){return t.ok?r(t.stdout):t.reason===`spawn-error`&&/ENOENT/i.test(t.error??``)||t.reason===`non-zero`&&n.test(t.stderr)?Z:Q(`${e}: ${[t.reason,t.exitCode==null?null:`exit ${t.exitCode}`,t.error??NC(t.stderr)].filter(Boolean).join(`, `)}`)}function YC(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function XC(e){let t=`detached`,n=Z,r=Z,i=Z,a=0,o=0,s=0,c=0;for(let l of e.split(`
140
- `)){if(!l)continue;if(l.startsWith(`# `)){let e=l.slice(2);if(e.startsWith(`branch.oid `)){let t=e.slice(11).trim();n=t===`(initial)`?Z:X(t)}else if(e.startsWith(`branch.head `)){let n=e.slice(12).trim();t=n===`(detached)`?`detached`:n}else if(e.startsWith(`branch.upstream `))r=X(e.slice(16).trim());else if(e.startsWith(`branch.ab `)){let t=e.slice(10).trim().match(/^\+(\d+)\s+-(\d+)$/);t&&(i=X({ahead:parseInt(t[1],10),behind:parseInt(t[2],10)}))}continue}let e=l[0];if(e===`1`||e===`2`){let e=l.slice(2,4);e[0]!==`.`&&a++,e[1]!==`.`&&o++}else e===`u`?c++:e===`?`&&s++}let l=`clean`;return c>0?l=`conflicts`:(a||o||s)&&(l=`dirty`),{branch:t,status:l,aheadBehind:i,oid:n,upstream:r,workingTree:{staged:a,unstaged:o,untracked:s,conflicts:c}}}function ZC(e){let t;try{t=JSON.parse(e)}catch(e){return Q(`gh pr view: unparseable JSON (${e instanceof Error?e.message:String(e)})`)}if(!YC(t))return Q(`gh pr view: JSON is not an object`);let{number:n,state:r,url:i}=t;return typeof n!=`number`||typeof r!=`string`||typeof i!=`string`?Q(`gh pr view: missing number/state/url`):r.toUpperCase()===`OPEN`?X({number:n,state:r,url:i}):Z}function QC(e){let t;try{t=JSON.parse(e)}catch(e){return Q(`glab mr view: unparseable JSON (${e instanceof Error?e.message:String(e)})`)}if(!YC(t))return Q(`glab mr view: JSON is not an object`);let n=t.iid,r=t.state,i=t.web_url;return typeof n!=`number`||typeof r!=`string`||typeof i!=`string`?Q(`glab mr view: missing iid/state/web_url`):r.toLowerCase()===`opened`?X({number:n,state:r,url:i}):Z}function $C(e){try{let t=r.statSync(e);return{key:`${t.dev}:${t.ino}`,stamp:`${t.mtimeMs}:${t.size}`}}catch{return null}}var ew=class{isGitRepo(e){try{return r.existsSync(c.join(e,`.git`))}catch{return!1}}async execGitAsync(e,t){return we({bin:`git`,args:[...e],cwd:t.cwd,env:{...process.env,GIT_OPTIONAL_LOCKS:`0`},timeoutMs:t.timeout,category:`git`})}async resolveEffectiveGitDir(e,t){return this.isWorktree(e)?X(e):t&&this.isGitRepo(t)?X(t):this.isGitRepo(e)?X(e):this.findGitRoot(e)}async findGitRoot(e){let t=c.resolve(e);for(;;){if(this.isGitRepo(t))return X(t);let e=c.dirname(t);if(e===t)return Z;t=e}}async getGitInfo(e,t={},n){try{return await this.computeGitInfo(e,t,n)}catch(e){return Q(`git: ${e instanceof Error?e.message:String(e)}`)}}async computeGitInfo(e,t={},n){let r,i=this.isWorktree(e);if(i)r=e;else if(n&&this.isGitRepo(n))r=n;else if(this.isGitRepo(e))r=e;else{let t=await this.findGitRoot(e);if(t.kind!==`ok`)return t;r=t.value}let a=await this.getCoreAsync(r);if(a.kind!==`ok`)return a;let o={branch:a.value.branch,status:a.value.status,aheadBehind:a.value.aheadBehind};t.showWorkingTree&&(o.workingTree=a.value.workingTree),t.showSha&&(o.sha=PC(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=PC(s,e=>this.repoNameFrom(e,r)),o.isWorktree=i),s!==void 0&&t.showRepoUrl&&(o.repoUrl=PC(s,qC)),t.showOperation&&(o.operation=this.getOngoingOperation(r)),X(o)}resolveGitDir(e){let t=c.join(e,`.git`);try{if(r.existsSync(t)&&r.statSync(t).isFile()){let n=r.readFileSync(t,`utf-8`).match(/^gitdir:\s*(.+)$/m);if(n?.[1])return c.resolve(e,n[1].trim())}}catch{}return t}getOngoingOperation(e){try{let t=this.resolveGitDir(e);return r.existsSync(c.join(t,`MERGE_HEAD`))?X(`MERGE`):r.existsSync(c.join(t,`CHERRY_PICK_HEAD`))?X(`CHERRY-PICK`):r.existsSync(c.join(t,`REVERT_HEAD`))?X(`REVERT`):r.existsSync(c.join(t,`BISECT_LOG`))?X(`BISECT`):r.existsSync(c.join(t,`rebase-merge`))||r.existsSync(c.join(t,`rebase-apply`))?X(`REBASE`):Z}catch(e){return Q(`git operation probe: ${e instanceof Error?e.message:String(e)}`)}}async getNearestTagAsync(e){return FC(MC(`git describe --tags`,await this.execGitAsync([`describe`,`--tags`,`--abbrev=0`],{cwd:e,timeout:2e3}),`absent`))}async timeSinceCommit(e,t){return t.kind===`ok`?PC(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=FC(MC(`git log -1`,await this.execGitAsync([`log`,`-1`,`--format=%ct`,t,`--`],{cwd:e,timeout:2e3}),`absent`));if(n.kind!==`ok`)return n;let r=parseInt(n.value,10)*1e3;return Number.isNaN(r)?Q(`git log -1: unparseable timestamp "${n.value}"`):X(r)}resolveCommonGitDir(e){let t=this.resolveGitDir(e);try{let e=r.readFileSync(c.join(t,`commondir`),`utf-8`).trim();if(e)return c.resolve(t,e)}catch{}return t}getStashCount(e){let t=c.join(this.resolveCommonGitDir(e),`logs`,`refs`,`stash`),n;try{n=r.readFileSync(t,`utf-8`)}catch(e){return e.code===`ENOENT`?X(0):Q(`git stash reflog ${t}: ${e instanceof Error?e.message:String(e)}`)}let i=n.trim();return X(i?i.split(`
141
- `).length:0)}async getRemotesAsync(e){let t=$C(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=MC(`git config --get-regexp remote url`,await this.execGitAsync([`config`,`--local`,`--get-regexp`,`^remote\\..*\\.url$`],{cwd:e,timeout:2e3}),1);return t.kind===`failed`?t:X(t.kind===`ok`?BC(t.value):[])}repoNameFrom(e,t){let n=UC(e);return(n===null?null:GC(n))??c.basename(t)}async getRepoRemoteUrl(e){let t=await this.getRemotesAsync(e);if(t.kind!==`ok`)return t;let n=WC(t.value);return n===null?Z:X(n)}async execForgeAsync(e,t,n){return we({bin:e,args:[...t],cwd:n.cwd,env:{...process.env},timeoutMs:n.timeout,category:`forge`})}async resolvePullRequest(e,t){let n=zC(t);return n===`github`?JC(`gh pr view`,await this.execForgeAsync(`gh`,[`pr`,`view`,`--json`,`number,state,url`],{cwd:e,timeout:5e3}),/no (open )?pull requests? found/i,ZC):n===`gitlab`?JC(`glab mr view`,await this.execForgeAsync(`glab`,[`mr`,`view`,`--output`,`json`],{cwd:e,timeout:5e3}),/no (open )?merge requests? (found|available)/i,QC):Z}isWorktree(e){try{let t=c.join(e,`.git`);return!!(r.existsSync(t)&&r.statSync(t).isFile())}catch{return!1}}async getCoreAsync(e){O(`[GIT-EXEC] Running git status --porcelain=v2 in ${e}`);let t=MC(`git status --porcelain=v2 --branch`,await this.execGitAsync([`status`,`--porcelain=v2`,`--branch`],{cwd:e,timeout:2e3}),`failed`);return t.kind===`ok`?X(XC(t.value)):t}};const tw=(e,t)=>O(t);var nw=class{slots=new Map;maxWatchers;counters;logger;closed=!1;constructor(e={}){this.maxWatchers=e.maxWatchers??128,this.counters=e.counters,this.logger=e.logger??tw}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()}},rw=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 iw=(e,t)=>O(t),aw={showSha:!0,showStashCount:!0};function ow(e){let t=Object.keys(e).sort(),n={};for(let r of t)n[r]=e[r];return JSON.stringify(n)}function sw(e){let t=t=>{try{return r.statSync(c.join(e,t)).mtimeMs}catch{return 0}};return{head:t(`HEAD`),index:t(`index`)}}function cw(e,t){return e.head!==t.head||e.index!==t.index}function lw(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 uw=class extends ew{entries=new Map;subscribersByRepo=new Map;fetchInFlight=new Map;resolutions=new Map;prCache=new Map;prFetchInFlight=new Map;refreshes=new rw;hits=0;misses=0;invalidations=0;inner;ttlMs;maxEntries;watchers;ownsWatchers;logger;sanityTimer=null;constructor(e={}){super(),this.inner=e.inner??new ew,this.ttlMs=e.ttlMs??3e4,this.maxEntries=e.maxEntries??64,this.logger=e.logger??iw,e.watchers?(this.watchers=e.watchers,this.ownsWatchers=!1):(this.watchers=new nw({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}|${ow(t)}`,r=Date.now(),i=this.entries.get(n);if(i&&r-i.computedAt<this.ttlMs)return this.entries.delete(n),this.entries.set(n,i),this.hits++,Promise.resolve(X(i.info));let a=this.fetchInFlight.get(n);if(a)return a;let o=this.doFetch(e,n,t,r).finally(()=>{this.fetchInFlight.delete(n)});return this.fetchInFlight.set(n,o),o}async doFetch(e,t,n,r){this.misses++;let i=this.inner.resolveGitDir(e),a=sw(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}`,lw(i),()=>this.invalidateRepo(e));return this.entries.set(t,{info:s,computedAt:r,mtime:a,watcher:c,repoRoot:e}),this.evictIfNeeded(),o}async getPullRequestCached(e,t){let n=await this.inner.getRepoRemoteUrl(e);if(n.kind===`failed`)return n;if(n.kind===`absent`)return Z;let r=n.value,i=`${e}|${t}|${r}`,a=Date.now(),o=this.prCache.get(i);if(o){let e=o.pr.kind===`failed`?45e3:3e5;if(a-o.computedAt<e)return this.prCache.delete(i),this.prCache.set(i,o),o.pr}let s=this.prFetchInFlight.get(i);if(s)return s;let c=this.inner.resolvePullRequest(e,r).then(e=>(this.prCache.set(i,{pr:e,computedAt:Date.now()}),this.evictPrIfNeeded(),e)).finally(()=>{this.prFetchInFlight.delete(i)});return this.prFetchInFlight.set(i,c),c}evictPrIfNeeded(){for(;this.prCache.size>this.maxEntries;){let e=this.prCache.keys().next().value;if(e===void 0)break;this.prCache.delete(e)}}deliverable(e,t){return e.kind===`failed`?(this.logger(`warn`,`git fetch failed (${t}): ${e.reason}`),null):e.kind===`ok`?e.value:null}subscribe(e,t){let n=!1,r=null;return{firstDelivery:(async()=>{let i=await this.resolveEffectiveGitDir(e);if(n)return;if(i.kind!==`ok`){i.kind===`failed`&&this.logger(`warn`,`git resolve failed (subscribe ${e}): ${i.reason}`),this.safeInvoke(t,null);return}let a=i.value,o=this.subscribersByRepo.get(a);if(!o){let t=this.inner.resolveGitDir(a),n=this.watchers.acquire(`git:${a}`,lw(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,{...aw});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,{...aw}),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=sw(this.inner.resolveGitDir(t.repoRoot)),e.set(t.repoRoot,n)),cw(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()}},dw=class{static CACHE_DIR=k();static USAGE_CACHE_DIR=c.join(this.CACHE_DIR,`usage`);static LOCKS_DIR=c.join(this.CACHE_DIR,`locks`);static isLocked(e){let t=c.join(this.LOCKS_DIR,e);if(!r.existsSync(t))return!1;try{let n=r.readFileSync(t,`utf-8`),i=parseInt(n.trim(),10);if(isNaN(i))return O(`Invalid PID in lock file ${e}, removing stale lock`),r.unlinkSync(t),!1;try{return process.kill(i,0),!0}catch(n){return n.code===`ESRCH`?(O(`Removing stale lock file ${e} for dead process ${i}`),r.unlinkSync(t),!1):(O(`Error checking process ${i} for lock ${e}:`,n),!0)}}catch(t){return O(`Error reading lock file ${e}:`,t),!0}}static async acquireLock(e,t=5e3){await this.ensureCacheDirectories();let n=c.join(this.LOCKS_DIR,e),i=Date.now(),a=String(process.pid);for(;Date.now()-i<t;)try{return await r.promises.writeFile(n,a,{flag:`wx`}),O(`Lock acquired for ${e}`),!0}catch(e){if(e.code===`EEXIST`)await w(50);else throw e}return O(`Failed to acquire lock for ${e} within ${t}ms`),!1}static async releaseLock(e){let t=c.join(this.LOCKS_DIR,e);try{await r.promises.unlink(t),O(`Lock released for ${e}`)}catch(t){t.code!==`ENOENT`&&O(`Error releasing lock for ${e}:`,t)}}static async ensureCacheDirectories(){try{await Promise.all([r.promises.mkdir(this.CACHE_DIR,{recursive:!0}),r.promises.mkdir(this.USAGE_CACHE_DIR,{recursive:!0}),r.promises.mkdir(this.LOCKS_DIR,{recursive:!0})])}catch(e){O(`Failed to create cache directories:`,e)}}static createProjectHash(e){return ee(`md5`).update(e).digest(`hex`).substring(0,8)}static async getUsageCache(e,t){await this.ensureCacheDirectories();let n=c.join(this.USAGE_CACHE_DIR,`${e}.json`),i=`${e}.usage.lock`;for(let a=0;a<3;a++){if(this.isLocked(i)){O(`Cache for ${e} is locked, waiting...`),await w(75);continue}try{let i=await r.promises.readFile(n,`utf-8`),a=JSON.parse(i);return!t||a.timestamp>=t?(O(`[CACHE-HIT] ${e} disk cache: found`),this.deserializeDates(a.data)):(O(`${e} cache outdated: cache=${a.timestamp}, latest=${t}`),null)}catch(t){if(t.code===`ENOENT`)return O(`No shared ${e} usage cache found`),null;O(`Attempt ${a+1} failed to read ${e} cache: ${t.message}. Retrying...`),await w(75)}}return O(`Failed to read ${e} cache after 3 attempts.`),null}static deserializeDates(e){return Array.isArray(e)?e.map(e=>({...e,timestamp:new Date(e.timestamp)})):e}static async setUsageCache(e,t,n){let i=`${e}.usage.lock`;if(!await this.acquireLock(i)){O(`Could not acquire lock to set usage cache for ${e}`);return}try{await this.ensureCacheDirectories();let i=c.join(this.USAGE_CACHE_DIR,`${e}.json`),a=JSON.stringify({data:t,timestamp:n||Date.now()});await r.promises.writeFile(i,a,`utf-8`),O(`[CACHE-SET] ${e} disk cache stored`)}catch(t){O(`Failed to save ${e} usage cache:`,t)}finally{await this.releaseLock(i)}}};const fw={"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 pw=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 dw.getUsageCache(`pricing`,e)}static async saveDiskCache(e){await dw.setUsageCache(`pricing`,e)}static async fetchPricingData(){return new Promise(e=>{let t=new v(this.GITHUB_PRICING_URL),n=te({hostname:t.hostname,path:t.pathname,headers:{"User-Agent":`cc-candybar`,"Cache-Control":`no-cache`},timeout:5e3},t=>{if(t.statusCode!==200){O(`HTTP ${t.statusCode}: ${t.statusMessage}`),e(null);return}let r=``,i=0;t.on(`data`,t=>{if(i+=t.length,i>1048576){O(`Response too large`),n.destroy(),e(null);return}r+=t}),t.on(`end`,()=>{try{let t=JSON.parse(r),n=t._meta,i={};for(let[e,n]of Object.entries(t))e!==`_meta`&&(i[e]=n);this.validatePricingData(i)?(O(`Fetched fresh pricing from GitHub for ${Object.keys(i).length} models`),O(`Pricing last updated: ${n?.updated||`unknown`}`),e(i)):(O(`Invalid pricing data structure`),e(null))}catch(t){O(`Failed to parse JSON:`,t),e(null)}}),t.on(`error`,t=>{O(`Response error:`,t),e(null)})});n.on(`error`,t=>{O(`Request error:`,t),e(null)}),n.on(`timeout`,()=>{O(`Request timeout`),n.destroy(),e(null)}),n.end()})}static async getCurrentPricing(){if(this.executionCache!==null)return O(`[CACHE-HIT] Pricing execution cache: ${Object.keys(this.executionCache).length} models`),this.executionCache;let e=await this.loadDiskCache();if(e)return O(`[CACHE-HIT] Pricing disk cache: ${Object.keys(e).length} models`),this.executionCache=e,O(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(e).length} models`),e;let t=await this.fetchPricingData();return t?(await this.saveDiskCache(t),O(`[CACHE-SET] Pricing disk cache stored: ${Object.keys(t).length} models`),this.executionCache=t,O(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(t).length} models`),t):(O(`[CACHE-FALLBACK] Using offline pricing data: ${Object.keys(fw).length} models`),this.executionCache=fw,O(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(fw).length} models`),fw)}static validatePricingData(e){if(!e||typeof e!=`object`)return!1;for(let[,t]of Object.entries(e)){if(!t||typeof t!=`object`)return!1;let e=t;if(typeof e.input!=`number`||typeof e.output!=`number`||typeof e.cache_read!=`number`)return!1}return!0}static async getModelPricing(e){if(this.modelPricingCache.has(e))return O(`[CACHE-HIT] Model pricing cache: ${e}`),this.modelPricingCache.get(e);let t=await this.getCurrentPricing(),n;return n=t[e]?t[e]:this.fuzzyMatchModel(e,t),this.modelPricingCache.set(e,n),O(`[CACHE-SET] Model pricing cache: ${e}`),n}static fuzzyMatchModel(e,t){let n=e.toLowerCase();for(let[e,r]of Object.entries(t))if(e.toLowerCase()===n)return r;for(let{pattern:e,fallback:r}of[{pattern:[`opus-4-6`,`claude-opus-4-6`],fallback:`claude-opus-4-6-20260205`},{pattern:[`opus-4-5`,`claude-opus-4-5`],fallback:`claude-opus-4-5-20251101`},{pattern:[`opus-4-1`,`claude-opus-4-1`],fallback:`claude-opus-4-1-20250805`},{pattern:[`opus-4`,`claude-opus-4`],fallback:`claude-opus-4-20250514`},{pattern:[`sonnet-4-6`,`sonnet-4.6`,`claude-sonnet-4-6`],fallback:`claude-sonnet-4-6`},{pattern:[`sonnet-4.5`,`4-5-sonnet`,`sonnet-4-5`],fallback:`claude-sonnet-4-5-20250929`},{pattern:[`sonnet-4`,`claude-sonnet-4`],fallback:`claude-sonnet-4-20250514`},{pattern:[`haiku-4.5`,`4-5-haiku`,`haiku-4-5`],fallback:`claude-haiku-4-5-20251001`},{pattern:[`haiku`],fallback:`claude-haiku-4-5-20251001`},{pattern:[`opus`],fallback:`claude-opus-4-20250514`},{pattern:[`sonnet`],fallback:`claude-sonnet-4-5-20250929`}])if(e.some(e=>n.includes(e))&&t[r])return t[r];return t[`claude-sonnet-4-5-20250929`]||{name:`${e} (Unknown Model)`,input:3,cache_write_5m:3.75,cache_write_1h:6,cache_read:.3,output:15}}static async calculateCostForEntry(e){let t=e.message?.usage;if(!t)return 0;let n=this.extractModelId(e),r=await this.getModelPricing(n),i=t.input_tokens||0,a=t.output_tokens||0,o=t.cache_creation_input_tokens||0,s=t.cache_read_input_tokens||0,c=i/1e6*r.input,l=a/1e6*r.output,u=s/1e6*r.cache_read,d=o/1e6*r.cache_write_5m;return c+l+d+u}static extractModelId(e){if(e.model&&typeof e.model==`string`)return e.model;let t=e.message;if(t?.model){let e=t.model;if(typeof e==`string`)return e;let n=e;return(typeof n?.id==`string`?n.id:null)||`claude-sonnet-4-5-20250929`}return e.model_id&&typeof e.model_id==`string`?e.model_id:`claude-sonnet-4-5-20250929`}};function mw(e){if(!e)return 0;try{return o(e).mtimeMs}catch{return 0}}const hw=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 gw(e){return((...t)=>hw.run(()=>e(...t)))}const _w=gw(ie),vw=gw(re),yw=gw(T);async function bw(e,t){return hw.run(async()=>{let n=null;try{n=await ne(e,`r`);let{size:r,mtimeMs:i,ino:a}=await n.stat(),o=t!==void 0&&(a!==t.ino||r<t.offset),s=o||t===void 0?0:t.offset;if(s>=r)return X({buf:Buffer.alloc(0),start:s,size:r,mtimeMs:i,ino:a,reset:o});let c=Buffer.alloc(r-s),l=0;for(;l<c.length;){let{bytesRead:e}=await n.read(c,l,c.length-l,s+l);if(e===0)break;l+=e}return X({buf:l===c.length?c:c.subarray(0,l),start:s,size:r,mtimeMs:i,ino:a,reset:o})}catch(t){return t.code===`ENOENT`?Z:Q(`readAppended ${e}: ${t instanceof Error?t.message:String(t)}`)}finally{await n?.close().catch(e=>{O(`transcript-fs: close failed: ${e instanceof Error?e.message:String(e)}`)})}})}async function xw(e,t){return hw.run(async()=>{let n=null;try{n=await ne(e,`r`);let{size:r}=await n.stat(),i=Math.max(0,r-t),a=Buffer.alloc(r-i),o=0;for(;o<a.length;){let{bytesRead:e}=await n.read(a,o,a.length-o,i+o);if(e===0)break;o+=e}return X({buf:o===a.length?a:a.subarray(0,o),fromStart:i===0})}catch(t){return t.code===`ENOENT`?Z:Q(`readTail ${e}: ${t instanceof Error?t.message:String(t)}`)}finally{await n?.close().catch(e=>{O(`transcript-fs: close failed: ${e instanceof Error?e.message:String(e)}`)})}})}const Sw=/<command-name>\s*([^<\s][^<]*?)\s*<\/command-name>/;function Cw(e){if(typeof e==`string`)return Sw.exec(e)?.[1]}function ww(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 Tw(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=ww(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?Cw(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 Ew(){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 Dw(e){let t=[];for(let n of e){let e=d(n,`projects`);if(a(e))try{let n=await _w(e,{withFileTypes:!0});for(let r of n)if(r.isDirectory()){let n=d(e,r.name);t.push(n)}}catch(t){O(`Failed to read projects directory ${e}:`,t)}}return t}async function Ow(e,t,n){let r=[],i=d(t,e,`subagents`);try{let t=(await _w(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 vw(t,`utf-8`)).split(`
142
- `)[0];n&&JSON.parse(n).sessionId===e&&r.push(t)}catch{O(`Failed to check agent file ${t}`)}}}catch(e){O(`Failed to read subagents directory ${i}:`,e)}return r}function kw(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 Aw=new Map;async function jw(e){try{let t=await yw(e),n=t.size,r=Aw.get(e);if(r&&r.mtime===t.mtimeMs&&r.size===n)return O(`[parse-cache] hit ${e}`),Aw.delete(e),Aw.set(e,r),r.entries;let i;return n>1048576?(O(`Using streaming parser for large file ${e} (${Math.round(n/1024)}KB)`),i=await Iw(e)):i=await Pw(e),O(`Parsed ${i.length} entries from ${e}`),n>5242880?i:(Aw.delete(e),Aw.size>=16&&Aw.delete(Aw.keys().next().value),Aw.set(e,{mtime:t.mtimeMs,size:n,entries:i}),i)}catch(t){if(t.code===`ENOENT`)return O(`Transcript not present yet: ${e}`),[];throw t}}function Mw(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:Tw(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 Nw(e){let t=[];for(let n of e.split(`
143
- `))if(n.trim())try{let e=Mw(JSON.parse(n));e&&t.push(e)}catch(e){O(`Failed to parse JSONL line: ${e}`);continue}return t}async function Pw(e){return Nw(await vw(e,`utf-8`))}async function Fw(e,t){let n=await bw(e,t===void 0?void 0:{offset:t.offset,ino:t.ino});if(n.kind!==`ok`)return n;let{buf:r,start:i,mtimeMs:a,ino:o,reset:s}=n.value,c=r.lastIndexOf(10);return X(c<0?{entries:[],cursor:{offset:i,mtimeMs:a,ino:o},reset:s}:{entries:Nw(r.subarray(0,c+1).toString(`utf-8`)),cursor:{offset:i+c+1,mtimeMs:a,ino:o},reset:s})}async function Iw(e){return new Promise((t,n)=>{let r=[],a=i(e,{encoding:`utf8`}),o=E({input:a,crlfDelay:1/0});o.on(`line`,e=>{let t=e.trim();if(t)try{let e=Mw(JSON.parse(t));e&&r.push(e)}catch(e){O(`Failed to parse JSONL line: ${e}`)}}),o.on(`close`,()=>{t(r)}),o.on(`error`,t=>{O(`Streaming parser error for ${e}:`,t),n(t)}),a.on(`error`,t=>{O(`File stream error for ${e}:`,t),n(t)})})}var Lw=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 Rw(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 zw={cost:0,input:0,output:0,cacheCreation:0,cacheRead:0},Bw={cost:null,calculatedCost:null,officialCost:null,tokens:null,tokenBreakdown:null};function Vw(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function Hw(){let e=new Date;return e.setHours(0,0,0,0),e.setDate(e.getDate()-1),e.getTime()}function Uw(){return{input:0,output:0,cacheCreation:0,cacheRead:0}}async function Ww(e,t,n,r){let i=Vw(new Date(Hw())),a=e&&!t?e:void 0,o=a?.entries??0,s=a?.cost??0,c=a?{...a.breakdown}:Uw(),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 pw.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=Vw(new Date(e.timestamp));if(r<i)continue;let a=l.get(r)??{...zw};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 Gw(e){let t=0,n=0,r=Uw(),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)??{...zw};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:Bw,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 Kw(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 qw=class{entries=new Map;flight=new Lw;seeded=new Map;speedRings=new Map;speedFlight=new Lw;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:Bw,i=t?.cost?.total_cost_usd??null;return X({session:{...r,cost:i??r.cost,officialCost:i}})}async getTodayInfo(e){let t=Vw(new Date);try{await this.ensureSeeded(t)}catch(e){return Q(`usage seed: ${e instanceof Error?e.message:String(e)}`)}let n=await this.ingest(e?.session_id??``,e?.transcript_path);if(n.kind===`failed`)return n;let r={...zw},i=!1;for(let e of this.entries.values()){i||=e.days.has(t);let n=e.days.get(t)??zw;r.cost+=n.cost,r.input+=n.input,r.output+=n.output,r.cacheCreation+=n.cacheCreation,r.cacheRead+=n.cacheRead}return i?X({cost:r.cost,tokens:r.input+r.output+r.cacheCreation+r.cacheRead,tokenBreakdown:{input:r.input,output:r.output,cacheCreation:r.cacheCreation,cacheRead:r.cacheRead},date:t}):Z}async observeSpeed(e,t,n){let r=mw(t);return this.speedFlight.run(`${e}:${r}`,async()=>{let i=await this.ingest(e,t,r);if(i.kind===`failed`)return i;let a=Rw(i.kind===`ok`?i.value.sessionInfo.tokenBreakdown:null,n),o=this.speedRings.get(e)??[],s;for(let e of o)e.atMs<a.atMs&&(s===void 0||e.atMs>s.atMs)&&(s=e);return o.push(a),o.sort((e,t)=>e.atMs-t.atMs),o.length>64&&o.shift(),this.speedRings.set(e,o),X({...s!==void 0&&{prev:s},cur:a,samples:[...o]})})}async ingest(e,t,n){if(!e)return Z;let r=n??mw(t),i=this.entries.get(e);if(i&&r!==0&&i.transcriptMtime===r)return i.lastSeenAt=Date.now(),this.entries.delete(e),this.entries.set(e,i),this.hits++,X(i);if(!t)return i?X(i):Z;this.misses++;let a;try{a=await this.flight.run(`${e}:${r}`,()=>this.refold(e,t,this.entries.get(e)))}catch(t){return Q(`usage refold (${e}): ${t instanceof Error?t.message:String(t)}`)}if(a.kind!==`ok`)return a;let o={files:a.value.files,sessionInfo:a.value.sessionInfo,days:a.value.days,transcriptMtime:a.value.mainMtime,transcriptPath:t,lastSeenAt:Date.now()};return this.entries.delete(e),this.entries.set(e,o),this.evictIfNeeded(),X(o)}async refold(e,t,n){let r=await Ow(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 Fw(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 Ww(r,l,s,c)),e===t&&(a=c.mtimeMs)}return X({files:i,...Gw(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=Hw(),n=await Dw(Ew()),r=[];for(let e of n){let n;try{n=await _w(e)}catch{continue}for(let i of n){if(!i.endsWith(`.jsonl`))continue;let n=d(e,i),a;try{a=(await yw(n)).mtimeMs}catch{continue}a<t||r.push({sessionId:i.slice(0,-6),path:n,mtime:a})}}await Kw(r,8,async e=>{let t=await this.ingest(e.sessionId,e.path,e.mtime);t.kind===`failed`&&Y(`warn`,`usageStore seed: ${t.reason}`)}),this.seeds++,Y(`info`,`usageStore seed sessions=${r.length}`)}sweepStale(){let e=Date.now(),t=0;for(let[n,r]of this.entries)e-r.lastSeenAt>this.staleAgeMs&&(this.entries.delete(n),this.speedRings.delete(n),t++);return t>0&&(this.sweeps++,Y(`info`,`usageStore sweep dropped=${t}`)),t}evictIfNeeded(){for(;this.entries.size>this.maxEntries;){let e=this.entries.keys().next().value;if(e===void 0)break;this.entries.delete(e),this.speedRings.delete(e),Y(`info`,`usageStore evict ${e}`)}}close(){this.sweepTimer&&=(clearInterval(this.sweepTimer),null),this.entries.clear(),this.seeded.clear(),this.speedRings.clear()}};const Jw=/"(?:cache_read_input_tokens|cache_creation_input_tokens)":[1-9]/;function Yw(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 Xw(e){let t=await Zw(e);return t.kind===`ok`?X(Math.floor((t.value+36e5)/1e3)):t}async function Zw(e){for(let t of[65536,1048576]){let n=await xw(e,t);if(n.kind!==`ok`)return n;let r=Qw(n.value.buf,n.value.fromStart);if(r!=null)return X(r);if(n.value.fromStart)return Z}return Z}function Qw(e,t){let n=e.toString(`utf8`).split(`
144
- `),r=+!t;for(let e=n.length-1;e>=r;e--){let t=n[e];if(!t||!Jw.test(t))continue;let r=Yw(t);if(r!=null)return r}return null}function $w(e,t,n){let r=Ah(t(`preset`),e.globals.preset,e.presets),i=Nh(e,r),a=t(`edit.mode`)===`open`?e.editGlobals:{};return{preset:r,presetCustomized:n(r),theme:hv(a.palette,t(`theme`),i.palette),look:Ai(a.look,t(`look`),i.look,e.looks),style:Mi(a.style,t(`style`),i.style),separator:a.default_separator??i.default_separator,autoWrap:Vi(a.autoWrap,t(`autoWrap`),i.autoWrap),padding:Hi(a.padding,t(`padding`),i.padding),charset:a.charset??i.charset??`unicode`,updateNotice:a.updateNotice??i.updateNotice??!0,colorCompatibility:a.colorCompatibility??i.colorCompatibility??`truecolor`}}const eT=10*1e3;function tT(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 nT(e,t){if(!(t<60))return e*3600/t}function rT(e,t,n,r){let i=r-t;if(i<50||i>eT)return;let a=n-e;if(!(a<=0))return a*1e3/i}function iT(e){let{prev:t,cur:n}=e;if(t===void 0)return;let r=rT(t.input,t.atMs,n.input,n.atMs),i=rT(t.output,t.atMs,n.output,n.atMs),a=rT(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 aT(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>eT)continue;let o=rT(r.total,r.atMs,i.total,i.atMs);n.push(o??0)}if(n.length!==0)return n.join(`,`)}function oT(e){let t=e.indexOf(`.`);return t<0?e:e.slice(0,t)}function sT(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`,()=>oT(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 cT(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 Ia(Mh(e,t).node)){if(n.when)for(let e of Ev(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 Ev(e))r.push(t)}}let a=new Set;for(;r.length>0;){let e=r.pop();for(let t of uT(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 Ev(e.template))r.push(t)}}}return a}function lT(e){let t=new Map;return n=>{let r=t.get(n);if(r!==void 0)return r;let i=cT(e,n);return t.set(n,i),i}}function uT(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 dT(e,t){for(let n of e)if(n===t||n.startsWith(t+`.`))return!0;return!1}function fT(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 pT(e,t,n,r,i,a){let o=e=>dT(r,e),s=(t.clock??(()=>new Date))().getTime(),c=(e,t,n)=>t?n().catch(t=>Q(`${e}: ${String(t)}`)):Promise.resolve(Z),[l,u,d,f,p,m,h,g,_]=await Promise.all([c(`git`,o(`git`),()=>t.gitProvider.getGitInfo(n??e.workspace?.current_dir,fT(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`),()=>Xw(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=vT(l);v.push(...b.failures);let x=sT(a);v.push(...x.failures);let S=y(u),C=y(d),ee=y(f),te=y(p),w=y(m),ne=y(h),re=y(g);for(let e of v)t.log(`warn`,`provider fetch failed: ${e}`);let ie=e.rate_limits?.five_hour,T=e.rate_limits?.seven_day,E=ie?tT(ie.used_percentage,ie.resets_at,18e6,s):void 0,ae=T?tT(T.used_percentage,T.resets_at,6048e5,s):void 0,oe=S?.session.cost,se=te?.sessionDuration,ce=o(`burn`)&&oe!=null&&se!=null?nT(oe,se):void 0,D=y(_),le=D===void 0?void 0:iT(D),ue=D===void 0?void 0:aT(D),de=le!==void 0||ue!==void 0?{...le,...ue!==void 0&&{history:ue}}:void 0,fe=_T(process.env.HOME??process.env.USERPROFILE),pe=e.workspace?{...e.workspace,current_dir:_T(e.workspace.current_dir)??``,project_dir:_T(e.workspace.project_dir)??``}:e.workspace,me=S===void 0?void 0:gT({cost:S.session.cost,tokens:S.session.tokens}),O=C===void 0?void 0:{cost:C.cost,tokens:C.tokens},he=te===void 0?void 0:gT({lastResponseTime:te.lastResponseTime,responseTime:te.responseTime,sessionDuration:te.sessionDuration,messageCount:te.messageCount,linesAdded:te.linesAdded,linesRemoved:te.linesRemoved}),ge=w===void 0?void 0:mT(w);return{...e,...pe!==void 0&&{workspace:pe},...fe!==void 0&&{home:fe},...b.git!==void 0&&{git:b.git},...ne!==void 0&&{tmux:{session:ne}},host:x.host,preset:{effective:i.preset,customized:i.presetCustomized},style:{effective:i.style},charset:{effective:i.charset},colorCompatibility:{effective:i.colorCompatibility},autoWrap:{effective:i.autoWrap},padding:{effective:i.padding},...me!==void 0&&{session:me},...O!==void 0&&{today:O},...ce!==void 0&&{burn:{costPerHour:ce}},...de!==void 0&&{speed:de},...o(`block`)&&ie!==void 0&&{block:{nativeUtilization:ie.used_percentage,resetsAt:ie.resets_at,...E!==void 0&&{etaMinutes:E}}},...T!==void 0&&{weekly:{percentage:T.used_percentage,resetsAt:T.resets_at,...ae!==void 0&&{etaMinutes:ae}}},...re!==void 0&&{cache:{expiresAt:re}},...ee!==void 0&&{context:{totalTokens:ee.totalTokens,contextLeft:ee.contextLeftPercentage}},...he!==void 0&&{metrics:he},...ge!==void 0&&{activity:ge}}}function mT(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=hT(e.running),i=hT(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 hT(e){return e.length===0?void 0:e.map(e=>`${e.name}:${e.count}`).join(`,`)}function gT(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 _T(e){return e===void 0||e.length===0||c.sep!==`\\`?e:e.replace(/\\/g,`/`)}function vT(e){if(e.kind===`absent`)return{failures:[]};if(e.kind===`failed`)return{failures:[e.reason]};let t=e.value,n=[],r=(e,t)=>{if(!(t===void 0||t.kind===`absent`)){if(t.kind===`failed`){n.push(`git.${e}: ${t.reason}`);return}return t.value}},i=r(`aheadBehind`,t.aheadBehind),a=r(`sha`,t.sha),o=r(`operation`,t.operation),s=r(`timeSinceCommit`,t.timeSinceCommit),c=r(`stash`,t.stashCount),l=r(`upstream`,t.upstream),u=r(`repoName`,t.repoName),d=r(`repoUrl`,t.repoUrl),f=t.pullRequest,p={};return f?.kind===`ok`?(p.prNumber=f.value.number,p.prState=f.value.state,p.prUrl=f.value.url):f?.kind===`failed`&&(n.push(`git.pr: ${f.reason}`),p.prError=f.reason),{git:{branch:t.branch,status:t.status,...i!==void 0&&{ahead:i.ahead,behind:i.behind},...t.workingTree!==void 0&&{staged:t.workingTree.staged,unstaged:t.workingTree.unstaged,untracked:t.workingTree.untracked,conflicts:t.workingTree.conflicts},...a!==void 0&&{sha:a},...o!==void 0&&{operation:o},...s!==void 0&&{timeSinceCommit:s},...c!==void 0&&{stash:c},...l!==void 0&&{upstream:l},...u!==void 0&&{repoName:u},...d!==void 0&&{repoUrl:d},...p},failures:n}}const yT=`trimPrefix "/" (trimPrefix .project_dir .current_dir)`,bT=`{{ \$dir := .current_dir }}{{ if and (ne .home "") (or (eq .home .current_dir) (hasPrefix (printf "%s/" .home) .current_dir)) }}{{ \$dir = printf "~%s" (trimPrefix .home .current_dir) }}{{ else }}{{ if or (eq .project_dir .current_dir) (hasPrefix (printf "%s/" .project_dir) .current_dir) }}{{ $dir = ternary (${yT}) (basename .project_dir) (ne (${yT}) "") }}{{ end }}{{ end }}{{ abbreviatePath \$dir }}`,xT={branch:`primary`,staged:`success`,unstaged:`warning`,untracked:`accent`,conflicts:`error`,dirty:`warning`,clean:`success`,ahead:`success`,behind:`warning`,stash:`accent`},ST=(e,t)=>`{{ fg (readableOn (color "${e}") (bgOf) ${kc}) ${t} }}`,CT=(e,t)=>ST(xT[e],t),wT=`{{ readableOn (mix (color "foreground") (bgOf) 60) (bgOf) 3 }}`,TT=`{{ 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 }}${CT(`staged`,`(printf "+%v" .git.staged)`)}{{ $first = false }}{{ end }}{{ if gt .git.unstaged 0 }}{{ if not $first }} {{ end }}${CT(`unstaged`,`(printf "~%v" .git.unstaged)`)}{{ $first = false }}{{ end }}{{ if gt .git.untracked 0 }}{{ if not $first }} {{ end }}${CT(`untracked`,`(printf "?%v" .git.untracked)`)}{{ $first = false }}{{ end }}{{ if gt .git.conflicts 0 }}{{ if not $first }} {{ end }}${CT(`conflicts`,`(printf "!%v" .git.conflicts)`)}{{ $first = false }}{{ end }}){{ end }}`,ET=`{{ if eq .git.status "conflicts" }}${CT(`conflicts`,`"⚠"`)}{{ else }}{{ if eq .git.status "dirty" }}${CT(`dirty`,`"●"`)}{{ else }}${CT(`clean`,`"✓"`)}{{ end }}{{ end }}`,DT=`{{ if ne .git.repoName "" }}{{ .git.repoName }} {{ end }}⎇ ${CT(`branch`,`.git.branch`)}{{ if .git.sha }} ♯ {{ .git.sha }}{{ end }}{{ if or (gt .git.ahead 0) (gt .git.behind 0) }} {{ if gt .git.ahead 0 }}${CT(`ahead`,`(printf "↑%v" .git.ahead)`)}{{ end }}{{ if gt .git.behind 0 }}${CT(`behind`,`(printf "↓%v" .git.behind)`)}{{ end }}{{ end }}`+TT+`{{ if .git.upstream }} →{{ .git.upstream }}{{ end }}{{ if gt .git.stash 0 }} ${CT(`stash`,`(printf "⧇ %v" .git.stash)`)}{{ end }} `+ET,OT={globals:{palette:`tokyo-night`},variables:{current_dir:{kind:`input`,path:`workspace.current_dir`,default:`?`},project_dir:{kind:`input`,path:`workspace.project_dir`,default:``},transcript_path:{kind:`input`,path:`transcript_path`,default:``},"model.display_name":{kind:`input`,path:`model.display_name`,default:``},"session.id":{kind:`input`,path:`session_id`,default:``},version:{kind:`input`,path:`version`,default:``},"theme.effective":{kind:`input`,path:`theme.effective`,default:``},"look.effective":{kind:`input`,path:`look.effective`,default:``},"preset.effective":{kind:`input`,path:`preset.effective`,default:``},"preset.customized":{kind:`input`,path:`preset.customized`,type:`boolean`,default:!1},"style.effective":{kind:`input`,path:`style.effective`,default:``},"charset.effective":{kind:`input`,path:`charset.effective`,default:``},"colorCompatibility.effective":{kind:`input`,path:`colorCompatibility.effective`,default:``},"autoWrap.effective":{kind:`input`,path:`autoWrap.effective`,type:`boolean`,default:!0},"padding.effective":{kind:`input`,path:`padding.effective`,type:`number`,default:1},"term.cols":{kind:`input`,path:`term.cols`,type:`number`,default:80},home:{kind:`input`,path:`home`,default:``},"tmux.session":{kind:`input`,path:`tmux.session`,default:``},"host.name":{kind:`input`,path:`host.name`,default:``},"host.user":{kind:`input`,path:`host.user`,default:``},"host.ssh":{kind:`input`,path:`host.ssh`,type:`boolean`,default:!1},"git.repoName":{kind:`input`,path:`git.repoName`,default:``},"git.repoUrl":{kind:`input`,path:`git.repoUrl`,default:``},"git.branch":{kind:`input`,path:`git.branch`,default:``},"git.sha":{kind:`input`,path:`git.sha`,default:``},"git.ahead":{kind:`input`,path:`git.ahead`,type:`number`,default:0},"git.behind":{kind:`input`,path:`git.behind`,type:`number`,default:0},"git.staged":{kind:`input`,path:`git.staged`,type:`number`,default:0},"git.unstaged":{kind:`input`,path:`git.unstaged`,type:`number`,default:0},"git.untracked":{kind:`input`,path:`git.untracked`,type:`number`,default:0},"git.conflicts":{kind:`input`,path:`git.conflicts`,type:`number`,default:0},"git.upstream":{kind:`input`,path:`git.upstream`,default:``},"git.stash":{kind:`input`,path:`git.stash`,type:`number`,default:0},"git.status":{kind:`input`,path:`git.status`,default:`clean`},"git.operation":{kind:`input`,path:`git.operation`,default:``},"git.timeSinceCommit":{kind:`input`,path:`git.timeSinceCommit`,type:`number`,default:0},"git.prNumber":{kind:`input`,path:`git.prNumber`,type:`number`,default:0},"git.prState":{kind:`input`,path:`git.prState`,default:``},"git.prUrl":{kind:`input`,path:`git.prUrl`,default:``},"git.prError":{kind:`input`,path:`git.prError`,default:``},"cache.expiresAt":{kind:`input`,path:`cache.expiresAt`,type:`number`,default:0},"session.cost":{kind:`input`,path:`session.cost`,type:`number`,default:0},"session.tokens":{kind:`input`,path:`session.tokens`,type:`number`,default:0},"session.budget.amount":{kind:`literal`,value:0},"session.budget.warningThreshold":{kind:`literal`,value:80},"today.cost":{kind:`input`,path:`today.cost`,type:`number`,default:0},"today.tokens":{kind:`input`,path:`today.tokens`,type:`number`,default:0},"today.budget.amount":{kind:`literal`,value:50},"today.budget.warningThreshold":{kind:`literal`,value:80},"block.nativeUtilization":{kind:`input`,path:`block.nativeUtilization`,type:`number`,default:0},"block.resetsAt":{kind:`input`,path:`block.resetsAt`,type:`number`,default:0},"block.budget.warningThreshold":{kind:`literal`,value:80},"block.budget.heatThreshold":{kind:`literal`,value:50},"weekly.percentage":{kind:`input`,path:`weekly.percentage`,type:`number`,default:0},"weekly.resetsAt":{kind:`input`,path:`weekly.resetsAt`,type:`number`,default:0},"weekly.budget.warningThreshold":{kind:`literal`,value:80},"weekly.budget.heatThreshold":{kind:`literal`,value:50},"burn.costPerHour":{kind:`input`,path:`burn.costPerHour`,type:`number`,default:-1},"block.etaMinutes":{kind:`input`,path:`block.etaMinutes`,type:`number`,default:-1},"weekly.etaMinutes":{kind:`input`,path:`weekly.etaMinutes`,type:`number`,default:-1},"burn.eta.warnMinutes":{kind:`literal`,value:60},"burn.eta.errorMinutes":{kind:`literal`,value:30},"speed.input":{kind:`input`,path:`speed.input`,type:`number`,default:-1},"speed.output":{kind:`input`,path:`speed.output`,type:`number`,default:-1},"speed.total":{kind:`input`,path:`speed.total`,type:`number`,default:-1},"speed.history":{kind:`input`,path:`speed.history`,type:`string`,default:``},"context.totalTokens":{kind:`input`,path:`context.totalTokens`,type:`number`,default:0},"context.contextLeft":{kind:`input`,path:`context.contextLeft`,type:`number`,default:100},"metrics.lastResponseTime":{kind:`input`,path:`metrics.lastResponseTime`,type:`number`,default:0},"metrics.responseTime":{kind:`input`,path:`metrics.responseTime`,type:`number`,default:0},"metrics.sessionDuration":{kind:`input`,path:`metrics.sessionDuration`,type:`number`,default:0},"metrics.messageCount":{kind:`input`,path:`metrics.messageCount`,type:`number`,default:0},"metrics.linesAdded":{kind:`input`,path:`metrics.linesAdded`,type:`number`,default:0},"metrics.linesRemoved":{kind:`input`,path:`metrics.linesRemoved`,type:`number`,default:0},"activity.command":{kind:`input`,path:`activity.command`,type:`string`,default:``},"activity.todo.total":{kind:`input`,path:`activity.todo.total`,type:`number`,default:0},"activity.todo.completed":{kind:`input`,path:`activity.todo.completed`,type:`number`,default:0},"activity.todo.position":{kind:`input`,path:`activity.todo.position`,type:`number`,default:0},"activity.todo.active":{kind:`input`,path:`activity.todo.active`,type:`string`,default:``},"activity.tool.running":{kind:`input`,path:`activity.tool.running`,type:`string`,default:``},"activity.tool.done":{kind:`input`,path:`activity.tool.done`,type:`string`,default:``}},segments:{directory:{description:"The current directory, shortened fish-style — `~` under home, project-relative inside the project.",template:bT},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:DT,fg:wT,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 }}${CT(`staged`,`"S"`)}{{ end }}{{ if gt .git.unstaged 0 }}${CT(`unstaged`,`"U"`)}{{ end }}{{ if gt .git.untracked 0 }}${CT(`untracked`,`"?"`)}{{ end }}{{ if gt .git.conflicts 0 }}${CT(`conflicts`,`(printf "!%v" .git.conflicts)`)}{{ end }}{{ end }} ⎇ ${CT(`branch`,`.git.branch`)}{{ if ne .git.upstream "" }} [{{ .git.upstream }}{{ if or (gt .git.ahead 0) (gt .git.behind 0) }} {{ if gt .git.ahead 0 }}${CT(`ahead`,`(printf "+%v" .git.ahead)`)}{{ end }}{{ if and (gt .git.ahead 0) (gt .git.behind 0) }}/{{ end }}{{ if gt .git.behind 0 }}${CT(`behind`,`(printf "-%v" .git.behind)`)}{{ end }}{{ end }}]{{ end }}{{ if gt .git.stash 0 }} ${CT(`stash`,`(printf "(%v stashed)" .git.stash)`)}{{ end }}{{ if gt .git.timeSinceCommit 0 }} ◷ {{ template "formatTimeSince" .git.timeSinceCommit }}{{ end }}`,fg:wT,when:`{{ ne .git.branch "" }}`},gitPr:{description:"The pull request open for this branch, as a link; `⚠ PR` when the forge lookup failed.",template:`{{ if ne .git.prUrl "" }}{{ link .git.prUrl (printf "⇆ #%v" .git.prNumber) }}{{ else }}⚠ PR{{ end }}`,when:`{{ or (ne .git.prUrl "") (ne .git.prError "") }}`},toolbar:{description:`Quick actions: copy the session id, and open the project, transcript or repo.`,template:pg(``).template},session:{description:`This session's cost and token total, with a budget warning once a budget is configured.`,template:`§ {{ template "formatCost" .session.cost }} ({{ template "formatTokens" .session.tokens }}){{ template "budgetStatus" (dict "cost" .session.cost "budget" .session.budget.amount "warn" .session.budget.warningThreshold) }}`},today:{description:`Today's cost and tokens across every session, with a budget warning once a budget is configured.`,template:`☉ {{ template "formatCost" .today.cost }} ({{ template "formatTokens" .today.tokens }}){{ template "budgetStatus" (dict "cost" .today.cost "budget" .today.budget.amount "warn" .today.budget.warningThreshold) }}`},block:{description:`The 5-hour rate-limit block: percent used and time to reset, heating to warning then error.`,template:`◱ {{ round .block.nativeUtilization }}% ({{ template "formatResetCountdown" .block.resetsAt }})`,bg:`{{ ramp (round .block.nativeUtilization) "step" 0 (tint) .block.budget.heatThreshold "warning" .block.budget.warningThreshold "error" }}`,when:`{{ gt .block.resetsAt 0 }}`},weekly:{description:`The weekly rate-limit quota: percent used and time to reset, heating to warning then error.`,template:`◑ {{ round .weekly.percentage }}% ({{ template "formatResetCountdown" .weekly.resetsAt }})`,bg:`{{ ramp (round .weekly.percentage) "step" 0 (tint) .weekly.budget.heatThreshold "warning" .weekly.budget.warningThreshold "error" }}`,when:`{{ gt .weekly.resetsAt 0 }}`},burnrate:{description:`Spend per hour, with the projected time to the 5-hour and weekly limits.`,template:`⚡ {{ template "formatRate" .burn.costPerHour }} · {{ template "formatEta" .block.etaMinutes }} to 5h · {{ template "formatEta" .weekly.etaMinutes }} to wk`,bg:`{{ ramp .block.etaMinutes "step" -1 (tint) 0 "error" .burn.eta.errorMinutes "warning" .burn.eta.warnMinutes (tint) }}`,when:`{{ or (gt .block.resetsAt 0) (gt .weekly.resetsAt 0) }}`},speed:{description:`Token throughput for the latest exchange: output, input, and total.`,template:`⇅ out {{ template "formatSpeed" .speed.output }} · in {{ template "formatSpeed" .speed.input }} · tot {{ template "formatSpeed" .speed.total }}`,when:`{{ gt .session.tokens 0 }}`},tokenSparkline:{description:`A sparkline of recent token throughput.`,template:`⚡ {{ sparkline .speed.history 24 }}`,when:`{{ ne .speed.history "" }}`},cacheTimer:{description:"Minutes until the prompt cache expires, or `cold` once it has.",template:`◴ {{ if le (minutesUntilReset .cache.expiresAt) 0 }}cold{{ else }}{{ minutesUntilReset .cache.expiresAt }}m{{ end }}`,fg:`{{ readableOn (color (cascade (minutesUntilReset .cache.expiresAt) "0:error" "9:warning" "21:foreground")) (bgOf) ${kc} }}`,when:`{{ gt .cache.expiresAt 0 }}`},context:{description:`Context used, in tokens and percent remaining, heating as it fills.`,template:`◔ {{ formatInteger .context.totalTokens }} ({{ .context.contextLeft }}%)`,bg:`{{ ramp .context.contextLeft "step" 0 "error" 21 "warning" 41 (tint) }}`,when:`{{ gt .context.totalTokens 0 }}`},metrics:{description:`Response times, session duration, message count, and lines added/removed.`,template:`{{ if .metrics.lastResponseTime }} Δ {{ template "formatResponseTime" .metrics.lastResponseTime }}{{ end }}{{ if .metrics.responseTime }} ⧖ {{ template "formatResponseTime" .metrics.responseTime }}{{ end }}{{ if .metrics.sessionDuration }} ⧗ {{ template "formatDuration" .metrics.sessionDuration }}{{ end }}{{ if .metrics.messageCount }} ◆ {{ .metrics.messageCount }}{{ end }}{{ if .metrics.linesAdded }} + {{ .metrics.linesAdded }}{{ end }}{{ if .metrics.linesRemoved }} - {{ .metrics.linesRemoved }}{{ end }} `,when:`{{ or (gt .metrics.lastResponseTime 0.0) (gt .metrics.responseTime 0.0) (gt .metrics.sessionDuration 0.0) (gt .metrics.messageCount 0) (gt .metrics.linesAdded 0) (gt .metrics.linesRemoved 0) }}`},activity:{description:`What Claude is doing: the slash command that opened the turn, the in-progress todo, and the tools in flight.`,template:`{{ if .activity.command }} ⌘ {{ .activity.command }}{{ end }}{{ if .activity.todo.total }}{{ if .activity.todo.active }} ☐ {{ .activity.todo.position }}/{{ .activity.todo.total }} {{ abbrev 32 .activity.todo.active }}{{ else }} ☑ {{ .activity.todo.completed }}/{{ .activity.todo.total }}{{ end }}{{ end }}{{ if .activity.tool.running }} ⟳ {{ template "formatToolTally" .activity.tool.running }}{{ end }}{{ if .activity.tool.done }} ✓ {{ template "formatToolTally" .activity.tool.done }}{{ end }} `,when:`{{ or (ne .activity.command "") (gt .activity.todo.total 0) (ne .activity.tool.running "") (ne .activity.tool.done "") }}`},charsetControl:{description:"The `⚙ terminal` drawer's control for `globals.charset` — the joiner glyph vocabulary.",template:`{{ .charset.effective }} {{ menu "applyCharsetForever" "▸" "▾" }} {{ action "resetCharset" "↺" }}`},colorCompatControl:{description:"The `⚙ terminal` drawer's control for `globals.colorCompatibility` — the colour depth.",template:`{{ .colorCompatibility.effective }} {{ menu "applyColorCompatForever" "▸" "▾" }} {{ action "resetColorCompat" "↺" }}`},directoryPaletteControl:{description:"The `⚙ terminal` drawer's control pinning the directory segment's own palette.",template:`🎨 directory {{ menu "applyDirectoryPaletteForever" "▸" "▾" }} {{ action "resetDirectoryPalette" "↺" }}`}},root:{rows:{identity:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`host`},{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`group`,name:`settings`,label:`⚙ terminal`,direction:`horizontal`,children:[`charsetControl`,`colorCompatControl`,`directoryPaletteControl`]}]},status:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`segment`,name:`context`},{kind:`segment`,name:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`activity`}]}}},actions:{...pg(``).actions,copyDir:{copy:`{{ .current_dir }}`},applyCharsetForever:{persist:`charset`,from:`charsets`},resetCharset:{reset:`charset`},applyColorCompatForever:{persist:`colorCompatibility`,from:`colorCompatibilities`},resetColorCompat:{reset:`colorCompatibility`},applyDirectoryPaletteForever:{persist:`segments.directory.palette`,from:`themes`},resetDirectoryPalette:{reset:`segments.directory.palette`}},looks:{none:{hueShift:0,chromaScale:1,lightnessScale:1,lightnessShift:0},vivid:{hueShift:0,chromaScale:1.35,lightnessScale:1,lightnessShift:0},muted:{hueShift:0,chromaScale:.55,lightnessScale:1,lightnessShift:0},dim:{hueShift:0,chromaScale:1,lightnessScale:.85,lightnessShift:0},bright:{hueShift:0,chromaScale:1,lightnessScale:1,lightnessShift:.08},inverted:{hueShift:0,chromaScale:1,lightnessScale:-1,lightnessShift:1}},presets:{default:{},compact:{root:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`directory`},{kind:`segment`,name:`git`},{kind:`segment`,name:`context`}]},globals:{padding:0}},verbose:{root:{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`segment`,name:`gitPr`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`segment`,name:`context`},{kind:`segment`,name:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`burnrate`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`speed`},{kind:`segment`,name:`tokenSparkline`}]}]}}},editGlobals:{style:`plain`,default_separator:` | `},helpers:{formatCost:'{{ if lt . 0.01 }}<$0.01{{ else }}${{ printf "%.2f" . }}{{ end }}',formatTokenCount:`{{ if ge . 1000000 }}{{ printf "%.1f" (divf . 1000000) }}M{{ else if ge . 1000 }}{{ printf "%.1f" (divf . 1000) }}K{{ else }}{{ . }}{{ end }}`,formatTokens:`{{ template "formatTokenCount" . }} tokens`,formatToolTally:`{{ $names := splitList "," . }}{{ range $i, $pair := $names }}{{ if lt $i 2 }}{{ if $i }} {{ end }}{{ $kv := splitList ":" $pair }}{{ index $kv 0 }}{{ if ne (index $kv 1) "1" }}×{{ index $kv 1 }}{{ end }}{{ end }}{{ end }}{{ if gt (len $names) 2 }} +{{ sub (len $names) 2 }}{{ end }}`,formatRate:`{{ if lt . 0 }}—/hr{{ else }}{{ template "formatCost" . }}/hr{{ end }}`,formatEta:`{{ if lt . 0 }}—{{ else }}{{ template "formatLongTimeRemaining" . }}{{ end }}`,formatSpeed:`{{ if lt . 0 }}—{{ else }}{{ template "formatTokenCount" (round .) }}/s{{ end }}`,formatTokenBreakdown:`{{ $first := true }}{{ if gt .input 0 }}{{ template "formatTokenCount" .input }} in{{ $first = false }}{{ end }}{{ if gt .output 0 }}{{ if not $first }} + {{ end }}{{ template "formatTokenCount" .output }} out{{ $first = false }}{{ end }}{{ if or (gt .cacheCreation 0) (gt .cacheRead 0) }}{{ if not $first }} + {{ end }}{{ template "formatTokenCount" (add .cacheCreation .cacheRead) }} cached{{ $first = false }}{{ end }}{{ if $first }}0 tokens{{ end }}`,budgetStatus:`{{ if or (le .budget 0) (lt .cost 0) }}{{ else }}{{ $pct := minf 100 (mulf (divf .cost .budget) 100) }}{{ $p := printf "%.0f%%" $pct }}{{ if ge $pct .warn }} !{{ $p }}{{ else }}{{ if ge $pct 50 }} +{{ $p }}{{ else }} {{ $p }}{{ end }}{{ end }}{{ end }}`,formatTimeSince:`{{ if lt . 60 }}{{ . }}s{{ else if lt . 3600 }}{{ div . 60 }}m{{ else if lt . 86400 }}{{ div . 3600 }}h{{ else if lt . 604800 }}{{ div . 86400 }}d{{ else }}{{ div . 604800 }}w{{ end }}`,formatDuration:`{{ if lt . 60 }}{{ printf "%.0f" . }}s{{ else if lt . 3600 }}{{ printf "%.0f" (divf . 60) }}m{{ else if lt . 86400 }}{{ printf "%.1f" (divf . 3600) }}h{{ else }}{{ printf "%.1f" (divf . 86400) }}d{{ end }}`,formatResponseTime:`{{ if lt . 60 }}{{ printf "%.1f" . }}s{{ else }}{{ printf "%.1f" (divf . 60) }}m{{ end }}`,formatLongTimeRemaining:`{{ if ge . 1440 }}{{ $d := div . 1440 }}{{ $h := div (mod . 1440) 60 }}{{ if gt $h 0 }}{{ $d }}d {{ $h }}h{{ else }}{{ $d }}d{{ end }}{{ else if ge . 60 }}{{ $h := div . 60 }}{{ $m := mod . 60 }}{{ if gt $m 0 }}{{ $h }}h {{ $m }}m{{ else }}{{ $h }}h{{ end }}{{ else }}{{ . }}m{{ end }}`,formatResetCountdown:`{{ template "formatLongTimeRemaining" (add 1 (minutesUntilReset .)) }}`}},kT=new Set([OT.globals.palette,...Object.values(OT.segments).map(e=>e.palette)].filter(e=>e!==void 0)),AT=Ao(ly(`<default>`,JSON.stringify(OT),kT),OT);var jT=fe((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:en}function r(){sn||t(`Proxy not available`)}function i(e){var t=!1;return function(){if(!t)return t=!0,e.apply(this,arguments)}}function a(e){return typeof e==`function`}function o(e){switch(typeof e){case`string`:case`symbol`:case`number`:return!0}return!1}function s(e){return typeof e==`object`&&!!e}function c(e){if(!s(e))return!1;var t=Object.getPrototypeOf(e);if(t==null)return!0;var n=Object.hasOwnProperty.call(t,`constructor`)&&t.constructor;return typeof n==`function`&&n.toString()===cn}function l(e){var t=e?.constructor;return!!t&&(t.name===`GeneratorFunction`||t.displayName===`GeneratorFunction`)}function u(e,t,n){nn(e,t,{enumerable:!1,writable:!0,configurable:!0,value:n})}function d(e,t,n){nn(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 rn.hasOwnProperty.call(e,t)}function _(e,t){return!!(e&t)}function v(e,t,n){return n?e|=t:e&=~t,e}function y(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function b(e,t,n){if(ne())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var i=new(e.bind.apply(e,r));return n&&re(i,n.prototype),i}function x(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,ie(r.key),r)}}function S(e,t,n){return t&&x(e.prototype,t),n&&x(e,n),Object.defineProperty(e,`prototype`,{writable:!1}),e}function C(e,t){var n=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if(typeof e==`string`)return y(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(e,t):void 0}}(e))||t&&e&&typeof e.length==`number`){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw TypeError(`Invalid attempt to iterate non-iterable instance.
131
+ Tip: every bar carries a settings menu — click it (${Po} by\n default) for quick actions, preset switching, edit mode, and clickable\n theme/look/style/wrap/padding controls.\n`}async function Ox(e){let t=e.includes(`--force`),n=e.filter(e=>e!==`--force`),r=n.length>0?n:[...ox],i=bx();process.platform===`darwin`?Sx(i.distPath):process.stdout.write(`Skipping URL handler (cmd-click verbs are macOS-only).
132
+ `),kx(i.binPath,r,t),process.stdout.write(Dx());let a=ix(tx,rx(Jb,await nx(tx,fetch,`https://registry.npmjs.org`)));process[a.stream].write(a.text)}function kx(e,t,n,i){let a=i??Yb();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,cx(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:lx(e,t)},Oe(a,JSON.stringify(o,null,2)),process.stdout.write(`Updated ${a}\n`)}function Ax(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 jx(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 Mx(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 Nx(e,t){let n=jx(e);if(n.kind===`owned`&&n.pid===t)try{r.unlinkSync(e)}catch{}}function Px(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 Fx(e,t,n,r){let i=Ix(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 Ix(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 Lx(e){let t=!1;function n(){let n=Fx(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 Rx(e,t=Te){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 zx(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 Bx(e,t=Rx){let n=t(e);return n.kind===`start`?n.token:null}const Vx=`CC_CANDYBAR_PARENT_PID`;function Hx(e){let t=e[Vx];if(t===void 0)return{kind:`outlives-nobody`};let n=Number.parseInt(t,10);if(!Number.isInteger(n)||n<=0)throw Error(`${Vx} must be a positive integer pid, got ${JSON.stringify(t)}`);return{kind:`anchored`,pid:n}}function Ux(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 Wx(e){try{return t.kill(e,0),!0}catch(e){return e.code===`EPERM`}}function Gx(){let e=Number(process.env.CC_CANDYBAR_DAEMON_CEILING??``);return Number.isInteger(e)&&e>0?e:16}function Kx(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 qx(e){try{return r.readdirSync(e).filter(e=>e.endsWith(`.json`)).map(t=>c.join(e,t))}catch{return[]}}function Jx(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 Yx(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 Xx(e){if(!e.isolated)return{decision:Kx(!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=Kx(!0,Yx(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 Zx(e,t,n,r){let i=n(e);if(i!==null&&i.pid===t)try{r(e)}catch{}}function Qx(e,t={}){return{isolated:!!process.env.CC_CANDYBAR_SOCKET,registryDir:ze(),ceiling:Gx(),pid:process.pid,startTime:e,isSameLiveProcess:(e,t)=>zx(e,t,{readStartTime:Rx,pidAlive:Wx}),listFiles:qx,readEntry:Jx,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?Ne:e=>{Ne(c.dirname(e)),Ne(e)},...t}}function $x(e){return e<32||e===127||e>=128&&e<=159}function eS(e){let t=``;for(let n of e)t+=$x(n.codePointAt(0)??0)?` `:n;return t.replace(/\s+/g,` `).trim()}function tS(e,t){let n=eS(e),r=``,i=0;for(let e of n){if(i===t)return r.replace(/.$/u,`…`);r+=e,i++}return r}const nS=`\x1B[38;2;255;255;255m`,rS=`\x1B[48;2;200;40;40m`;function iS(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 aS={fg:iS(nS),bg:iS(rS)},oS={fg:iS(`\x1B[38;2;0;0;0m`),bg:iS(`\x1B[48;2;220;160;40m`)},sS={unicode:ri,ascii:{glyph:`>`,divider:`|`}},cS={unicode:{},ascii:{left:`(`,right:`)`}};function lS(e,t,n){switch(e){case`capsule`:return new ai(cS[t]);case`plain`:return new oi(n===void 0?{}:{separator:n});case`powerline`:return new ii(sS[t]);default:return e}}function uS(e){switch(e){case`powerline`:return 1;case`capsule`:return 2;case`plain`:return 0;default:return e}}function dS(e,t){if(e.length===0)return``;let n=lS(t.style,t.charset,t.separator),r=t.colorCompatibility,i=t.wrap&&Number.isFinite(t.width)?li(new hi([...e],{joiner:n}),{width:t.width,colorSystem:r}):li(new Xr([...e],n),{colorSystem:r});if(!i.endsWith(`
133
+ `))throw Error(`renderStripCells: rich-js strip output did not end its last line`);return i.slice(0,-1)}function fS(e){return Math.min(20,e??20)}const pS={heading:`ERROR`,glyph:`⚠`,colors:aS},mS={heading:`WARNING`,glyph:`⚠`,colors:oS},hS={heading:`UPDATE`,glyph:`⬆`,colors:oS};function gS(e,t){return{text:eS(e),link:t}}function _S(e,t,n){let[r,...i]=[vS(e,pS,Ab),t,vS(n,mS,jb)].flat();return r===void 0?null:{channels:[r,...i]}}function vS(e,t,n){let r=Ub([{verb:n,args:[e]}]),[i,...a]=e.split(/\r\n|\r|\n/).map(e=>gS(e,r)).filter(e=>e.text!==``).map(e=>[e]);return i===void 0?[]:[{severity:t,message:e,lines:[i,...a]}]}function yS(e){return e.channels.map(e=>`${e.severity.heading}\n${e.message}\n`).join(`
134
+ `)}function bS(e,t,n,r){if(t===null)return e;let i=xS(r),a=t.channels.flatMap(e=>SS(e,i)),o=n.failedConfigFile!==null||a.length>r.rowCap,s=a.slice(0,r.rowCap-Number(o)),c=o?[CS(t,n,a.length-s.length,i)]:[],l=[...s,...c].join(`
135
+ `);return e?`${l}\n${e}`:l}function xS(e){return{style:`plain`,separator:``,width:e.width,wrap:!0,padding:0,charset:`unicode`,colorCompatibility:e.colorCompatibility}}function SS(e,t){let n=new V({bgcolor:e.severity.colors.bg,color:e.severity.colors.fg}),r=Lt(Math.max(2,t.width-1)),i=(e,t)=>new Yr(`${e} `,{style:t,end:``,noWrap:!0});return e.lines.flatMap((a,o)=>dS([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(`
136
+ `))}function CS(e,t,n,r){let{colors:i}=e.channels[0].severity,{fullText:a,failedConfigFile:o}=t,s=new V({bgcolor:i.bg,color:i.fg}),c=(e,t)=>new Yr(e,{style:t,end:``,noWrap:!0}),l=n>0?[c(`${n} more rows · `,s),a.kind===`file`?c(`open full text`,s.withLink(x(a.path).href)):c(`full text unavailable: ${eS(a.reason)}`,s)]:[],u=o===null?[]:[c(`${l.length>0?` · `:``}open `,s),c(eS(o),s.withLink(x(o).href))],d=[c(`↳ `,s),...l,...u.slice(0,-1)],f=d.reduce((e,t)=>e+t.cellLength,0),p=u.slice(-1).map(e=>e.truncate(Math.max(1,r.width-f),{mode:`middle`})),m=Yr.fromFragments([...d,...p]).truncate(r.width);return m.noWrap=!0,dS([m],r)}const wS=e=>!e.startsWith(`.`)&&!e.endsWith(`~`);function TS(e,t){return t.isSymbolicLink()?Buffer.from(r.readlinkSync(e)):r.readFileSync(e)}function ES(e,t){return r.readdirSync(t).filter(wS).sort().flatMap(n=>{let i=c.join(t,n),a=r.lstatSync(i,{throwIfNoEntry:!1});return a===void 0?[]:a.isDirectory()?ES(e,i):[[c.relative(e,i).split(c.sep).join(`/`),TS(i,a)]]})}function DS(e){let t=C.createHash(`sha256`);for(let[n,r]of ES(e,e))t.update(n).update(`\0`).update(r).update(`\0`);return t.digest(`hex`)}const OS=e=>e.slice(0,7);function kS(e){return c.dirname(c.dirname(e))}function AS(){return{version:Jb,digest:`193286c8580257aa82cad1217733939a9c522612c6cd05a8d05999024b48d902`}}function jS(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 MS(e,t){try{let n=kS(b(e)),i=c.join(n,`src`);if(!r.existsSync(i))return{kind:`not-source-checkout`};let a=t(),o=DS(i);return o===a.digest?{kind:`current`,root:n,stamp:a}:{kind:`stale`,root:n,source:{version:jS(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 NS=/^-?\d+$/;function PS(e,t,n){return e===void 0?t:Math.max(t,Math.min(n,e))}function FS(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 IS(e){return t=>{if(!t)return{ok:!1,reason:`${e} value is required`};if(!NS.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 LS(e,t,n){return r=>r?NS.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 RS(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=>!NS.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:PS(r[0].seed,t,i)}}return{kind:`int`}}function zS(e){return e===`config`?`set-config`:`set-state`}function BS(e,t,n){return t.kind===`int`?IS(`menu page "${e}"`):t.kind===`range`?LS(t.min,t.max,`${n} stepper "${e}"`):FS(t.allowed,`${n} "${e}"`,zS(n))}function VS(e,t,n){return BS(e,RS(e,t,n),n)}function HS(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:RS(e,n,t)}))}function US(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=VS(e,a.specs,t)}else{let r=[i];n.set(e,{permanent:!1,kind:i.kind,validator:VS(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=VS(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=RS(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 WS=US({},`config`);function GS(){return WS.listKeys()}function KS(e,t){return WS.validate(e,t)}function qS(e){return WS.rangeParamsFor(e)}function JS(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:Cv(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:[Th({op:`remove`,target:e.removeSegment})]}}]:`insertSegment`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:[Th({op:`insert`,segment:e.insertSegment,anchor:e.anchor,relation:e.relation})]}}]:`insertSegmentFrom`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:Cv(e.insertSegmentFrom,n).members.map(t=>Th({op:`insert`,segment:t,anchor:e.anchor,relation:e.relation}))}}]:[{key:e.persist,spec:{kind:`range`,min:e.min,max:e.max,seed:PS(t.get(e.persist),e.min,e.max)}}]:[]}function YS(e){return us(e.globals)}function XS(e){let t=new Set;for(let n of QS(e)){let e=`persist`in n?n.persist:`reset`in n?n.reset:null;if(e===null)continue;let r=Rh(e);r?.scope===`preset-root`&&t.add(r.preset)}return[...t].map(e=>({key:Lh(e),spec:{kind:`allow-list`,allowed:[]}}))}function ZS(e){let t=YS(e),n=new Map([...xv(e),...Zh(e)]);return[...XS(e),...QS(e).flatMap(e=>JS(e,t,n))]}function QS(e){return Object.values(e.actions).flatMap(c_)}function $S(e){return HS(ZS(e),`config`)}function eC(e,t){return WS.register(e,t)}const tC=xi(),nC=new Set(tC),rC=new Set(ji),iC=e=>e?nC.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown theme "${e}" (have: ${tC.join(`, `)})`}:{ok:!1,reason:`theme name is required`},aC=e=>e?rC.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown style "${e}" (have: ${ji.join(`, `)})`}:{ok:!1,reason:`style name is required`},oC=new Set([`1`,`true`]),sC=new Set([`0`,`false`]),cC=US({style:aC,theme:iC,"toolbar-expanded":e=>oC.has(e)?{ok:!0,value:`1`}:sC.has(e)?{ok:!0,value:``}:{ok:!1,reason:`expected boolean-ish (1, 0, true, false), got "${e}"`}});function lC(){return cC.listKeys()}function uC(e,t){return cC.register(e,t)}function dC(e,t){return cC.validate(e,t)}function fC(e){return cC.rangeParamsFor(e)}function pC(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:Cv(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:PS(t.get(e.set),e.min,e.max)}}]:[]}function mC(e){let t=new Set(cC.listBaselineKeys());return e.filter(e=>e.spec.kind!==`allow-list`||!t.has(e.key))}function hC(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 us(e.globals))t.set(n,r);return t}function gC(e){let t=hC(e),n=xv(e);return mC(Object.values(e.actions).flatMap(c_).flatMap(e=>pC(e,t,n)))}function _C(e){return HS(gC(e))}const vC=`update.dismissed`,yC=`updateNotice`;function bC(e){return e.kind===`source`?e.newer.digest:$b(e.newer)}const xC=e=>`${e.version} [${OS(e.digest)}]`;function SC(e){switch(e.kind){case`source`:return{headline:`Newer source`,newer:xC(e.newer),running:xC(e.running),act:`rebuild`,busy:`rebuilding…`,command:{bin:`pnpm`,args:[`build`],cwd:e.root}};case`release`:return{headline:`Newer release`,newer:$b(e.newer),running:$b(e.running),act:`upgrade`,busy:`upgrading…`,command:{bin:`pnpm`,args:[`dlx`,`${tx}@${$b(e.newer)}`,`install`]}}}}const CC={kind:`idle`},wC={kind:`running`};function TC(e,t,n){if(e===null)return[];let r=bC(e);if(!n.enabled||n.dismissed===r)return[];let i=SC(e),a=`${i.headline}: ${i.newer}. You're on ${i.running}.`,o=t.kind===`failed`&&t.identity===r?[`${i.act} failed: ${t.reason}`]:[],s=[a,...o].join(`
137
+ `),c=Ub([{verb:jb,args:[s]}]),l=t.kind===`running`?gS(`[${i.busy}]`,c):gS(`[${i.act}]`,Ub([{verb:Rb,args:[n.sessionId]}]));return[{severity:hS,message:s,lines:[[gS(a,c),l,gS(`[dismiss]`,Ub([{verb:Tb,args:[n.sessionId,vC,r]}])),gS(`[disable]`,Ub([{verb:Mb,args:[n.sessionId,yC,`false`]}]))],...o.map(e=>[gS(e,c)])]}]}function EC(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 DC(e){switch(e.kind){case`current`:return[`info`,`build: current ${xC(e.stamp)}`];case`stale`:return[`info`,`build: stale — source ${xC(e.source)}, running ${xC(e.running)}`];case`not-source-checkout`:return[`info`,`build: not a source checkout`];case`unchecked`:return[`warn`,`build: unchecked: ${e.reason}`]}}function OC(e){switch(e.kind){case`current`:return[`info`,`release: current ${$b(e.installed)}`];case`stale`:return[`info`,`release: stale — latest ${$b(e.latest)}, running ${$b(e.installed)}`];case`ahead`:return[`info`,`release: ahead — running ${$b(e.installed)}, latest ${$b(e.latest)}`];case`unchecked`:return[`warn`,`release: unchecked: ${e.reason}`]}}function kC(e){let t=null;return([n,r])=>{r!==t&&(t=r,e(n,r))}}const AC=e=>e.split(/\r?\n/).map(e=>e.trim()).filter(e=>e!==``).at(-1);function jC(e){let t=e.exitCode===null?``:` (exit ${e.exitCode})`,n=AC(e.stderr)??e.error??AC(e.stdout)??`no output`;return`${e.reason}${t}: ${n}`}function MC(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=CC,d=null,f=kC(s),p=kC(s),m=()=>EC(c,l);function h(){let e=m(),t=e===null?null:bC(e);(d===null?null:d.identity)!==t&&(d?.dispose(),d=t===null?null:{identity:t,dispose:uC(vC,{kind:`allow-list`,allowed:[t]})})}function g(){c=MS(t,AS),f(DC(c)),h()}async function _(){l=rx(Jb,await nx(tx,a,i)),p(OC(l)),h()}return{arm(){eC(yC,{kind:`allow-list`,allowed:[`false`]}),g(),setInterval(g,n).unref(),c.kind===`not-source-checkout`&&(_(),setInterval(()=>void _(),r).unref())},notice:e=>TC(m(),u,e),act(){let e=m();if(e===null)throw new $(`apply-update: nothing newer is known to apply`);let t=SC(e);if(u.kind===`running`)throw new $(`apply-update: already ${t.busy}`);u=wC,s(`info`,`apply-update: ${t.act} — ${t.command.bin} ${t.command.args?.join(` `)??``}`),we({...t.command,category:`update.apply`,timeoutMs:6e5}).then(n=>{if(n.ok){u=CC,s(`info`,`apply-update: ${t.act} succeeded`),g(),o();return}let r=jC(n);u={kind:`failed`,identity:bC(e),reason:r},s(`error`,`apply-update: ${t.act} failed: ${r}`)})}}}function NC(e,t,n){return t.ok?X(t.stdout):t.reason===`non-zero`&&n===`absent`||t.reason===`non-zero`&&n===t.exitCode?Z:Q(`${e}: ${[t.reason,t.exitCode==null?null:`exit ${t.exitCode}`,t.error??PC(t.stderr)].filter(Boolean).join(`, `)}`)}function PC(e){return e.trim().split(`
138
+ `,1)[0]??``}function FC(e,t){if(e.kind!==`ok`)return e;let n=t(e.value);return n===null?Z:X(n)}function IC(e){if(e.kind!==`ok`)return e;let t=e.value.trim();return t?X(t):Z}const LC=/^[A-Za-z]:[\\/]/;function RC(e){let t=e.trim();if(LC.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 zC(e){return RC(e)?.host||null}function BC(e){let t=zC(e);return t?t===`github.com`||t.endsWith(`.github.com`)?`github`:/(^|\.)gitlab\./.test(t)?`gitlab`:null:null}function VC(e){let t=new Map;for(let n of e.split(`
139
+ `)){let e=n.match(/^remote\.(.+)\.url\s+(\S.*)$/);if(!e)continue;let r=t.get(e[1])??[];r.push(e[2].trim()),t.set(e[1],r)}return[...t].map(([e,t])=>({name:e,urls:t}))}function HC(e){return e.urls.find(e=>qC(e)!==null)??e.urls[0]??null}function UC(e){return e.find(e=>e.name===`origin`)??e[0]??null}function WC(e){let t=UC(e);return t?HC(t):null}function GC(e){let t=UC(e);return t?t.urls.find(e=>BC(e)!==null)??HC(t):null}function KC(e){let t=(RC(e)?.path??e.replace(/[\\/]+$/,``)).split(`/`);return(t[t.length-1]??``).replace(/\.git$/,``)||null}function qC(e){let t=RC(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 JC(e){let t=WC(e);return t===null?null:qC(t)}function YC(e,t,n,r){return t.ok?r(t.stdout):t.reason===`spawn-error`&&/ENOENT/i.test(t.error??``)||t.reason===`non-zero`&&n.test(t.stderr)?Z:Q(`${e}: ${[t.reason,t.exitCode==null?null:`exit ${t.exitCode}`,t.error??PC(t.stderr)].filter(Boolean).join(`, `)}`)}function XC(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function ZC(e){let t=`detached`,n=Z,r=Z,i=Z,a=0,o=0,s=0,c=0;for(let l of e.split(`
140
+ `)){if(!l)continue;if(l.startsWith(`# `)){let e=l.slice(2);if(e.startsWith(`branch.oid `)){let t=e.slice(11).trim();n=t===`(initial)`?Z:X(t)}else if(e.startsWith(`branch.head `)){let n=e.slice(12).trim();t=n===`(detached)`?`detached`:n}else if(e.startsWith(`branch.upstream `))r=X(e.slice(16).trim());else if(e.startsWith(`branch.ab `)){let t=e.slice(10).trim().match(/^\+(\d+)\s+-(\d+)$/);t&&(i=X({ahead:parseInt(t[1],10),behind:parseInt(t[2],10)}))}continue}let e=l[0];if(e===`1`||e===`2`){let e=l.slice(2,4);e[0]!==`.`&&a++,e[1]!==`.`&&o++}else e===`u`?c++:e===`?`&&s++}let l=`clean`;return c>0?l=`conflicts`:(a||o||s)&&(l=`dirty`),{branch:t,status:l,aheadBehind:i,oid:n,upstream:r,workingTree:{staged:a,unstaged:o,untracked:s,conflicts:c}}}function QC(e){let t;try{t=JSON.parse(e)}catch(e){return Q(`gh pr view: unparseable JSON (${e instanceof Error?e.message:String(e)})`)}if(!XC(t))return Q(`gh pr view: JSON is not an object`);let{number:n,state:r,url:i}=t;return typeof n!=`number`||typeof r!=`string`||typeof i!=`string`?Q(`gh pr view: missing number/state/url`):r.toUpperCase()===`OPEN`?X({number:n,state:r,url:i}):Z}function $C(e){let t;try{t=JSON.parse(e)}catch(e){return Q(`glab mr view: unparseable JSON (${e instanceof Error?e.message:String(e)})`)}if(!XC(t))return Q(`glab mr view: JSON is not an object`);let n=t.iid,r=t.state,i=t.web_url;return typeof n!=`number`||typeof r!=`string`||typeof i!=`string`?Q(`glab mr view: missing iid/state/web_url`):r.toLowerCase()===`opened`?X({number:n,state:r,url:i}):Z}function ew(e){try{let t=r.statSync(e);return{key:`${t.dev}:${t.ino}`,stamp:`${t.mtimeMs}:${t.size}`}}catch{return null}}var tw=class{isGitRepo(e){try{return r.existsSync(c.join(e,`.git`))}catch{return!1}}async execGitAsync(e,t){return we({bin:`git`,args:[...e],cwd:t.cwd,env:{...process.env,GIT_OPTIONAL_LOCKS:`0`},timeoutMs:t.timeout,category:`git`})}async resolveEffectiveGitDir(e,t){return this.isWorktree(e)?X(e):t&&this.isGitRepo(t)?X(t):this.isGitRepo(e)?X(e):this.findGitRoot(e)}async findGitRoot(e){let t=c.resolve(e);for(;;){if(this.isGitRepo(t))return X(t);let e=c.dirname(t);if(e===t)return Z;t=e}}async getGitInfo(e,t={},n){try{return await this.computeGitInfo(e,t,n)}catch(e){return Q(`git: ${e instanceof Error?e.message:String(e)}`)}}async computeGitInfo(e,t={},n){let r,i=this.isWorktree(e);if(i)r=e;else if(n&&this.isGitRepo(n))r=n;else if(this.isGitRepo(e))r=e;else{let t=await this.findGitRoot(e);if(t.kind!==`ok`)return t;r=t.value}let a=await this.getCoreAsync(r);if(a.kind!==`ok`)return a;let o={branch:a.value.branch,status:a.value.status,aheadBehind:a.value.aheadBehind};t.showWorkingTree&&(o.workingTree=a.value.workingTree),t.showSha&&(o.sha=FC(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=FC(s,e=>this.repoNameFrom(e,r)),o.isWorktree=i),s!==void 0&&t.showRepoUrl&&(o.repoUrl=FC(s,JC)),t.showOperation&&(o.operation=this.getOngoingOperation(r)),X(o)}resolveGitDir(e){let t=c.join(e,`.git`);try{if(r.existsSync(t)&&r.statSync(t).isFile()){let n=r.readFileSync(t,`utf-8`).match(/^gitdir:\s*(.+)$/m);if(n?.[1])return c.resolve(e,n[1].trim())}}catch{}return t}getOngoingOperation(e){try{let t=this.resolveGitDir(e);return r.existsSync(c.join(t,`MERGE_HEAD`))?X(`MERGE`):r.existsSync(c.join(t,`CHERRY_PICK_HEAD`))?X(`CHERRY-PICK`):r.existsSync(c.join(t,`REVERT_HEAD`))?X(`REVERT`):r.existsSync(c.join(t,`BISECT_LOG`))?X(`BISECT`):r.existsSync(c.join(t,`rebase-merge`))||r.existsSync(c.join(t,`rebase-apply`))?X(`REBASE`):Z}catch(e){return Q(`git operation probe: ${e instanceof Error?e.message:String(e)}`)}}async getNearestTagAsync(e){return IC(NC(`git describe --tags`,await this.execGitAsync([`describe`,`--tags`,`--abbrev=0`],{cwd:e,timeout:2e3}),`absent`))}async timeSinceCommit(e,t){return t.kind===`ok`?FC(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=IC(NC(`git log -1`,await this.execGitAsync([`log`,`-1`,`--format=%ct`,t,`--`],{cwd:e,timeout:2e3}),`absent`));if(n.kind!==`ok`)return n;let r=parseInt(n.value,10)*1e3;return Number.isNaN(r)?Q(`git log -1: unparseable timestamp "${n.value}"`):X(r)}resolveCommonGitDir(e){let t=this.resolveGitDir(e);try{let e=r.readFileSync(c.join(t,`commondir`),`utf-8`).trim();if(e)return c.resolve(t,e)}catch{}return t}getStashCount(e){let t=c.join(this.resolveCommonGitDir(e),`logs`,`refs`,`stash`),n;try{n=r.readFileSync(t,`utf-8`)}catch(e){return e.code===`ENOENT`?X(0):Q(`git stash reflog ${t}: ${e instanceof Error?e.message:String(e)}`)}let i=n.trim();return X(i?i.split(`
141
+ `).length:0)}async getRemotesAsync(e){let t=ew(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=NC(`git config --get-regexp remote url`,await this.execGitAsync([`config`,`--local`,`--get-regexp`,`^remote\\..*\\.url$`],{cwd:e,timeout:2e3}),1);return t.kind===`failed`?t:X(t.kind===`ok`?VC(t.value):[])}repoNameFrom(e,t){let n=WC(e);return(n===null?null:KC(n))??c.basename(t)}async getRepoRemoteUrl(e){let t=await this.getRemotesAsync(e);if(t.kind!==`ok`)return t;let n=GC(t.value);return n===null?Z:X(n)}async execForgeAsync(e,t,n){return we({bin:e,args:[...t],cwd:n.cwd,env:{...process.env},timeoutMs:n.timeout,category:`forge`})}async resolvePullRequest(e,t){let n=BC(t);return n===`github`?YC(`gh pr view`,await this.execForgeAsync(`gh`,[`pr`,`view`,`--json`,`number,state,url`],{cwd:e,timeout:5e3}),/no (open )?pull requests? found/i,QC):n===`gitlab`?YC(`glab mr view`,await this.execForgeAsync(`glab`,[`mr`,`view`,`--output`,`json`],{cwd:e,timeout:5e3}),/no (open )?merge requests? (found|available)/i,$C):Z}isWorktree(e){try{let t=c.join(e,`.git`);return!!(r.existsSync(t)&&r.statSync(t).isFile())}catch{return!1}}async getCoreAsync(e){O(`[GIT-EXEC] Running git status --porcelain=v2 in ${e}`);let t=NC(`git status --porcelain=v2 --branch`,await this.execGitAsync([`status`,`--porcelain=v2`,`--branch`],{cwd:e,timeout:2e3}),`failed`);return t.kind===`ok`?X(ZC(t.value)):t}};const nw=(e,t)=>O(t);var rw=class{slots=new Map;maxWatchers;counters;logger;closed=!1;constructor(e={}){this.maxWatchers=e.maxWatchers??128,this.counters=e.counters,this.logger=e.logger??nw}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()}},iw=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 aw=(e,t)=>O(t),ow={showSha:!0,showStashCount:!0};function sw(e){let t=Object.keys(e).sort(),n={};for(let r of t)n[r]=e[r];return JSON.stringify(n)}function cw(e){let t=t=>{try{return r.statSync(c.join(e,t)).mtimeMs}catch{return 0}};return{head:t(`HEAD`),index:t(`index`)}}function lw(e,t){return e.head!==t.head||e.index!==t.index}function uw(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 dw=class extends tw{entries=new Map;subscribersByRepo=new Map;fetchInFlight=new Map;resolutions=new Map;prCache=new Map;prFetchInFlight=new Map;refreshes=new iw;hits=0;misses=0;invalidations=0;inner;ttlMs;maxEntries;watchers;ownsWatchers;logger;sanityTimer=null;constructor(e={}){super(),this.inner=e.inner??new tw,this.ttlMs=e.ttlMs??3e4,this.maxEntries=e.maxEntries??64,this.logger=e.logger??aw,e.watchers?(this.watchers=e.watchers,this.ownsWatchers=!1):(this.watchers=new rw({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}|${sw(t)}`,r=Date.now(),i=this.entries.get(n);if(i&&r-i.computedAt<this.ttlMs)return this.entries.delete(n),this.entries.set(n,i),this.hits++,Promise.resolve(X(i.info));let a=this.fetchInFlight.get(n);if(a)return a;let o=this.doFetch(e,n,t,r).finally(()=>{this.fetchInFlight.delete(n)});return this.fetchInFlight.set(n,o),o}async doFetch(e,t,n,r){this.misses++;let i=this.inner.resolveGitDir(e),a=cw(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}`,uw(i),()=>this.invalidateRepo(e));return this.entries.set(t,{info:s,computedAt:r,mtime:a,watcher:c,repoRoot:e}),this.evictIfNeeded(),o}async getPullRequestCached(e,t){let n=await this.inner.getRepoRemoteUrl(e);if(n.kind===`failed`)return n;if(n.kind===`absent`)return Z;let r=n.value,i=`${e}|${t}|${r}`,a=Date.now(),o=this.prCache.get(i);if(o){let e=o.pr.kind===`failed`?45e3:3e5;if(a-o.computedAt<e)return this.prCache.delete(i),this.prCache.set(i,o),o.pr}let s=this.prFetchInFlight.get(i);if(s)return s;let c=this.inner.resolvePullRequest(e,r).then(e=>(this.prCache.set(i,{pr:e,computedAt:Date.now()}),this.evictPrIfNeeded(),e)).finally(()=>{this.prFetchInFlight.delete(i)});return this.prFetchInFlight.set(i,c),c}evictPrIfNeeded(){for(;this.prCache.size>this.maxEntries;){let e=this.prCache.keys().next().value;if(e===void 0)break;this.prCache.delete(e)}}deliverable(e,t){return e.kind===`failed`?(this.logger(`warn`,`git fetch failed (${t}): ${e.reason}`),null):e.kind===`ok`?e.value:null}subscribe(e,t){let n=!1,r=null;return{firstDelivery:(async()=>{let i=await this.resolveEffectiveGitDir(e);if(n)return;if(i.kind!==`ok`){i.kind===`failed`&&this.logger(`warn`,`git resolve failed (subscribe ${e}): ${i.reason}`),this.safeInvoke(t,null);return}let a=i.value,o=this.subscribersByRepo.get(a);if(!o){let t=this.inner.resolveGitDir(a),n=this.watchers.acquire(`git:${a}`,uw(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,{...ow});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,{...ow}),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=cw(this.inner.resolveGitDir(t.repoRoot)),e.set(t.repoRoot,n)),lw(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()}},fw=class{static CACHE_DIR=k();static USAGE_CACHE_DIR=c.join(this.CACHE_DIR,`usage`);static LOCKS_DIR=c.join(this.CACHE_DIR,`locks`);static isLocked(e){let t=c.join(this.LOCKS_DIR,e);if(!r.existsSync(t))return!1;try{let n=r.readFileSync(t,`utf-8`),i=parseInt(n.trim(),10);if(isNaN(i))return O(`Invalid PID in lock file ${e}, removing stale lock`),r.unlinkSync(t),!1;try{return process.kill(i,0),!0}catch(n){return n.code===`ESRCH`?(O(`Removing stale lock file ${e} for dead process ${i}`),r.unlinkSync(t),!1):(O(`Error checking process ${i} for lock ${e}:`,n),!0)}}catch(t){return O(`Error reading lock file ${e}:`,t),!0}}static async acquireLock(e,t=5e3){await this.ensureCacheDirectories();let n=c.join(this.LOCKS_DIR,e),i=Date.now(),a=String(process.pid);for(;Date.now()-i<t;)try{return await r.promises.writeFile(n,a,{flag:`wx`}),O(`Lock acquired for ${e}`),!0}catch(e){if(e.code===`EEXIST`)await w(50);else throw e}return O(`Failed to acquire lock for ${e} within ${t}ms`),!1}static async releaseLock(e){let t=c.join(this.LOCKS_DIR,e);try{await r.promises.unlink(t),O(`Lock released for ${e}`)}catch(t){t.code!==`ENOENT`&&O(`Error releasing lock for ${e}:`,t)}}static async ensureCacheDirectories(){try{await Promise.all([r.promises.mkdir(this.CACHE_DIR,{recursive:!0}),r.promises.mkdir(this.USAGE_CACHE_DIR,{recursive:!0}),r.promises.mkdir(this.LOCKS_DIR,{recursive:!0})])}catch(e){O(`Failed to create cache directories:`,e)}}static createProjectHash(e){return ee(`md5`).update(e).digest(`hex`).substring(0,8)}static async getUsageCache(e,t){await this.ensureCacheDirectories();let n=c.join(this.USAGE_CACHE_DIR,`${e}.json`),i=`${e}.usage.lock`;for(let a=0;a<3;a++){if(this.isLocked(i)){O(`Cache for ${e} is locked, waiting...`),await w(75);continue}try{let i=await r.promises.readFile(n,`utf-8`),a=JSON.parse(i);return!t||a.timestamp>=t?(O(`[CACHE-HIT] ${e} disk cache: found`),this.deserializeDates(a.data)):(O(`${e} cache outdated: cache=${a.timestamp}, latest=${t}`),null)}catch(t){if(t.code===`ENOENT`)return O(`No shared ${e} usage cache found`),null;O(`Attempt ${a+1} failed to read ${e} cache: ${t.message}. Retrying...`),await w(75)}}return O(`Failed to read ${e} cache after 3 attempts.`),null}static deserializeDates(e){return Array.isArray(e)?e.map(e=>({...e,timestamp:new Date(e.timestamp)})):e}static async setUsageCache(e,t,n){let i=`${e}.usage.lock`;if(!await this.acquireLock(i)){O(`Could not acquire lock to set usage cache for ${e}`);return}try{await this.ensureCacheDirectories();let i=c.join(this.USAGE_CACHE_DIR,`${e}.json`),a=JSON.stringify({data:t,timestamp:n||Date.now()});await r.promises.writeFile(i,a,`utf-8`),O(`[CACHE-SET] ${e} disk cache stored`)}catch(t){O(`Failed to save ${e} usage cache:`,t)}finally{await this.releaseLock(i)}}};const pw={"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 mw=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 fw.getUsageCache(`pricing`,e)}static async saveDiskCache(e){await fw.setUsageCache(`pricing`,e)}static async fetchPricingData(){return new Promise(e=>{let t=new v(this.GITHUB_PRICING_URL),n=te({hostname:t.hostname,path:t.pathname,headers:{"User-Agent":`cc-candybar`,"Cache-Control":`no-cache`},timeout:5e3},t=>{if(t.statusCode!==200){O(`HTTP ${t.statusCode}: ${t.statusMessage}`),e(null);return}let r=``,i=0;t.on(`data`,t=>{if(i+=t.length,i>1048576){O(`Response too large`),n.destroy(),e(null);return}r+=t}),t.on(`end`,()=>{try{let t=JSON.parse(r),n=t._meta,i={};for(let[e,n]of Object.entries(t))e!==`_meta`&&(i[e]=n);this.validatePricingData(i)?(O(`Fetched fresh pricing from GitHub for ${Object.keys(i).length} models`),O(`Pricing last updated: ${n?.updated||`unknown`}`),e(i)):(O(`Invalid pricing data structure`),e(null))}catch(t){O(`Failed to parse JSON:`,t),e(null)}}),t.on(`error`,t=>{O(`Response error:`,t),e(null)})});n.on(`error`,t=>{O(`Request error:`,t),e(null)}),n.on(`timeout`,()=>{O(`Request timeout`),n.destroy(),e(null)}),n.end()})}static async getCurrentPricing(){if(this.executionCache!==null)return O(`[CACHE-HIT] Pricing execution cache: ${Object.keys(this.executionCache).length} models`),this.executionCache;let e=await this.loadDiskCache();if(e)return O(`[CACHE-HIT] Pricing disk cache: ${Object.keys(e).length} models`),this.executionCache=e,O(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(e).length} models`),e;let t=await this.fetchPricingData();return t?(await this.saveDiskCache(t),O(`[CACHE-SET] Pricing disk cache stored: ${Object.keys(t).length} models`),this.executionCache=t,O(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(t).length} models`),t):(O(`[CACHE-FALLBACK] Using offline pricing data: ${Object.keys(pw).length} models`),this.executionCache=pw,O(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(pw).length} models`),pw)}static validatePricingData(e){if(!e||typeof e!=`object`)return!1;for(let[,t]of Object.entries(e)){if(!t||typeof t!=`object`)return!1;let e=t;if(typeof e.input!=`number`||typeof e.output!=`number`||typeof e.cache_read!=`number`)return!1}return!0}static async getModelPricing(e){if(this.modelPricingCache.has(e))return O(`[CACHE-HIT] Model pricing cache: ${e}`),this.modelPricingCache.get(e);let t=await this.getCurrentPricing(),n;return n=t[e]?t[e]:this.fuzzyMatchModel(e,t),this.modelPricingCache.set(e,n),O(`[CACHE-SET] Model pricing cache: ${e}`),n}static fuzzyMatchModel(e,t){let n=e.toLowerCase();for(let[e,r]of Object.entries(t))if(e.toLowerCase()===n)return r;for(let{pattern:e,fallback:r}of[{pattern:[`opus-4-6`,`claude-opus-4-6`],fallback:`claude-opus-4-6-20260205`},{pattern:[`opus-4-5`,`claude-opus-4-5`],fallback:`claude-opus-4-5-20251101`},{pattern:[`opus-4-1`,`claude-opus-4-1`],fallback:`claude-opus-4-1-20250805`},{pattern:[`opus-4`,`claude-opus-4`],fallback:`claude-opus-4-20250514`},{pattern:[`sonnet-4-6`,`sonnet-4.6`,`claude-sonnet-4-6`],fallback:`claude-sonnet-4-6`},{pattern:[`sonnet-4.5`,`4-5-sonnet`,`sonnet-4-5`],fallback:`claude-sonnet-4-5-20250929`},{pattern:[`sonnet-4`,`claude-sonnet-4`],fallback:`claude-sonnet-4-20250514`},{pattern:[`haiku-4.5`,`4-5-haiku`,`haiku-4-5`],fallback:`claude-haiku-4-5-20251001`},{pattern:[`haiku`],fallback:`claude-haiku-4-5-20251001`},{pattern:[`opus`],fallback:`claude-opus-4-20250514`},{pattern:[`sonnet`],fallback:`claude-sonnet-4-5-20250929`}])if(e.some(e=>n.includes(e))&&t[r])return t[r];return t[`claude-sonnet-4-5-20250929`]||{name:`${e} (Unknown Model)`,input:3,cache_write_5m:3.75,cache_write_1h:6,cache_read:.3,output:15}}static async calculateCostForEntry(e){let t=e.message?.usage;if(!t)return 0;let n=this.extractModelId(e),r=await this.getModelPricing(n),i=t.input_tokens||0,a=t.output_tokens||0,o=t.cache_creation_input_tokens||0,s=t.cache_read_input_tokens||0,c=i/1e6*r.input,l=a/1e6*r.output,u=s/1e6*r.cache_read,d=o/1e6*r.cache_write_5m;return c+l+d+u}static extractModelId(e){if(e.model&&typeof e.model==`string`)return e.model;let t=e.message;if(t?.model){let e=t.model;if(typeof e==`string`)return e;let n=e;return(typeof n?.id==`string`?n.id:null)||`claude-sonnet-4-5-20250929`}return e.model_id&&typeof e.model_id==`string`?e.model_id:`claude-sonnet-4-5-20250929`}};function hw(e){if(!e)return 0;try{return o(e).mtimeMs}catch{return 0}}const gw=new class{slots;head=null;tail=null;constructor(e){this.slots=e}async run(e){await this.acquire();try{return await e()}finally{this.release()}}async acquire(){if(this.slots>0){this.slots--;return}await new Promise(e=>{let t={wake:e,next:null};this.tail?this.tail.next=t:this.head=t,this.tail=t})}release(){let e=this.head;if(!e){this.slots++;return}this.head=e.next,this.head||(this.tail=null),e.wake()}}(8);function _w(e){return((...t)=>gw.run(()=>e(...t)))}const vw=_w(ie),yw=_w(re),bw=_w(T);async function xw(e,t){return gw.run(async()=>{let n=null;try{n=await ne(e,`r`);let{size:r,mtimeMs:i,ino:a}=await n.stat(),o=t!==void 0&&(a!==t.ino||r<t.offset),s=o||t===void 0?0:t.offset;if(s>=r)return X({buf:Buffer.alloc(0),start:s,size:r,mtimeMs:i,ino:a,reset:o});let c=Buffer.alloc(r-s),l=0;for(;l<c.length;){let{bytesRead:e}=await n.read(c,l,c.length-l,s+l);if(e===0)break;l+=e}return X({buf:l===c.length?c:c.subarray(0,l),start:s,size:r,mtimeMs:i,ino:a,reset:o})}catch(t){return t.code===`ENOENT`?Z:Q(`readAppended ${e}: ${t instanceof Error?t.message:String(t)}`)}finally{await n?.close().catch(e=>{O(`transcript-fs: close failed: ${e instanceof Error?e.message:String(e)}`)})}})}async function Sw(e,t){return gw.run(async()=>{let n=null;try{n=await ne(e,`r`);let{size:r}=await n.stat(),i=Math.max(0,r-t),a=Buffer.alloc(r-i),o=0;for(;o<a.length;){let{bytesRead:e}=await n.read(a,o,a.length-o,i+o);if(e===0)break;o+=e}return X({buf:o===a.length?a:a.subarray(0,o),fromStart:i===0})}catch(t){return t.code===`ENOENT`?Z:Q(`readTail ${e}: ${t instanceof Error?t.message:String(t)}`)}finally{await n?.close().catch(e=>{O(`transcript-fs: close failed: ${e instanceof Error?e.message:String(e)}`)})}})}const Cw=/<command-name>\s*([^<\s][^<]*?)\s*<\/command-name>/;function ww(e){if(typeof e==`string`)return Cw.exec(e)?.[1]}function Tw(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 Ew(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=Tw(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?ww(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 Dw(){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 Ow(e){let t=[];for(let n of e){let e=d(n,`projects`);if(a(e))try{let n=await vw(e,{withFileTypes:!0});for(let r of n)if(r.isDirectory()){let n=d(e,r.name);t.push(n)}}catch(t){O(`Failed to read projects directory ${e}:`,t)}}return t}async function kw(e,t,n){let r=[],i=d(t,e,`subagents`);try{let t=(await vw(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 yw(t,`utf-8`)).split(`
142
+ `)[0];n&&JSON.parse(n).sessionId===e&&r.push(t)}catch{O(`Failed to check agent file ${t}`)}}}catch(e){O(`Failed to read subagents directory ${i}:`,e)}return r}function Aw(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 jw=new Map;async function Mw(e){try{let t=await bw(e),n=t.size,r=jw.get(e);if(r&&r.mtime===t.mtimeMs&&r.size===n)return O(`[parse-cache] hit ${e}`),jw.delete(e),jw.set(e,r),r.entries;let i;return n>1048576?(O(`Using streaming parser for large file ${e} (${Math.round(n/1024)}KB)`),i=await Lw(e)):i=await Fw(e),O(`Parsed ${i.length} entries from ${e}`),n>5242880?i:(jw.delete(e),jw.size>=16&&jw.delete(jw.keys().next().value),jw.set(e,{mtime:t.mtimeMs,size:n,entries:i}),i)}catch(t){if(t.code===`ENOENT`)return O(`Transcript not present yet: ${e}`),[];throw t}}function Nw(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:Ew(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 Pw(e){let t=[];for(let n of e.split(`
143
+ `))if(n.trim())try{let e=Nw(JSON.parse(n));e&&t.push(e)}catch(e){O(`Failed to parse JSONL line: ${e}`);continue}return t}async function Fw(e){return Pw(await yw(e,`utf-8`))}async function Iw(e,t){let n=await xw(e,t===void 0?void 0:{offset:t.offset,ino:t.ino});if(n.kind!==`ok`)return n;let{buf:r,start:i,mtimeMs:a,ino:o,reset:s}=n.value,c=r.lastIndexOf(10);return X(c<0?{entries:[],cursor:{offset:i,mtimeMs:a,ino:o},reset:s}:{entries:Pw(r.subarray(0,c+1).toString(`utf-8`)),cursor:{offset:i+c+1,mtimeMs:a,ino:o},reset:s})}async function Lw(e){return new Promise((t,n)=>{let r=[],a=i(e,{encoding:`utf8`}),o=E({input:a,crlfDelay:1/0});o.on(`line`,e=>{let t=e.trim();if(t)try{let e=Nw(JSON.parse(t));e&&r.push(e)}catch(e){O(`Failed to parse JSONL line: ${e}`)}}),o.on(`close`,()=>{t(r)}),o.on(`error`,t=>{O(`Streaming parser error for ${e}:`,t),n(t)}),a.on(`error`,t=>{O(`File stream error for ${e}:`,t),n(t)})})}var Rw=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 zw(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 Bw={cost:0,input:0,output:0,cacheCreation:0,cacheRead:0},Vw={cost:null,calculatedCost:null,officialCost:null,tokens:null,tokenBreakdown:null};function Hw(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function Uw(){let e=new Date;return e.setHours(0,0,0,0),e.setDate(e.getDate()-1),e.getTime()}function Ww(){return{input:0,output:0,cacheCreation:0,cacheRead:0}}async function Gw(e,t,n,r){let i=Hw(new Date(Uw())),a=e&&!t?e:void 0,o=a?.entries??0,s=a?.cost??0,c=a?{...a.breakdown}:Ww(),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 mw.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=Hw(new Date(e.timestamp));if(r<i)continue;let a=l.get(r)??{...Bw};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 Kw(e){let t=0,n=0,r=Ww(),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)??{...Bw};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:Vw,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 qw(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 Jw=class{entries=new Map;flight=new Rw;seeded=new Map;speedRings=new Map;speedFlight=new Rw;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:Vw,i=t?.cost?.total_cost_usd??null;return X({session:{...r,cost:i??r.cost,officialCost:i}})}async getTodayInfo(e){let t=Hw(new Date);try{await this.ensureSeeded(t)}catch(e){return Q(`usage seed: ${e instanceof Error?e.message:String(e)}`)}let n=await this.ingest(e?.session_id??``,e?.transcript_path);if(n.kind===`failed`)return n;let r={...Bw},i=!1;for(let e of this.entries.values()){i||=e.days.has(t);let n=e.days.get(t)??Bw;r.cost+=n.cost,r.input+=n.input,r.output+=n.output,r.cacheCreation+=n.cacheCreation,r.cacheRead+=n.cacheRead}return i?X({cost:r.cost,tokens:r.input+r.output+r.cacheCreation+r.cacheRead,tokenBreakdown:{input:r.input,output:r.output,cacheCreation:r.cacheCreation,cacheRead:r.cacheRead},date:t}):Z}async observeSpeed(e,t,n){let r=hw(t);return this.speedFlight.run(`${e}:${r}`,async()=>{let i=await this.ingest(e,t,r);if(i.kind===`failed`)return i;let a=zw(i.kind===`ok`?i.value.sessionInfo.tokenBreakdown:null,n),o=this.speedRings.get(e)??[],s;for(let e of o)e.atMs<a.atMs&&(s===void 0||e.atMs>s.atMs)&&(s=e);return o.push(a),o.sort((e,t)=>e.atMs-t.atMs),o.length>64&&o.shift(),this.speedRings.set(e,o),X({...s!==void 0&&{prev:s},cur:a,samples:[...o]})})}async ingest(e,t,n){if(!e)return Z;let r=n??hw(t),i=this.entries.get(e);if(i&&r!==0&&i.transcriptMtime===r)return i.lastSeenAt=Date.now(),this.entries.delete(e),this.entries.set(e,i),this.hits++,X(i);if(!t)return i?X(i):Z;this.misses++;let a;try{a=await this.flight.run(`${e}:${r}`,()=>this.refold(e,t,this.entries.get(e)))}catch(t){return Q(`usage refold (${e}): ${t instanceof Error?t.message:String(t)}`)}if(a.kind!==`ok`)return a;let o={files:a.value.files,sessionInfo:a.value.sessionInfo,days:a.value.days,transcriptMtime:a.value.mainMtime,transcriptPath:t,lastSeenAt:Date.now()};return this.entries.delete(e),this.entries.set(e,o),this.evictIfNeeded(),X(o)}async refold(e,t,n){let r=await kw(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 Iw(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 Gw(r,l,s,c)),e===t&&(a=c.mtimeMs)}return X({files:i,...Kw(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=Uw(),n=await Ow(Dw()),r=[];for(let e of n){let n;try{n=await vw(e)}catch{continue}for(let i of n){if(!i.endsWith(`.jsonl`))continue;let n=d(e,i),a;try{a=(await bw(n)).mtimeMs}catch{continue}a<t||r.push({sessionId:i.slice(0,-6),path:n,mtime:a})}}await qw(r,8,async e=>{let t=await this.ingest(e.sessionId,e.path,e.mtime);t.kind===`failed`&&Y(`warn`,`usageStore seed: ${t.reason}`)}),this.seeds++,Y(`info`,`usageStore seed sessions=${r.length}`)}sweepStale(){let e=Date.now(),t=0;for(let[n,r]of this.entries)e-r.lastSeenAt>this.staleAgeMs&&(this.entries.delete(n),this.speedRings.delete(n),t++);return t>0&&(this.sweeps++,Y(`info`,`usageStore sweep dropped=${t}`)),t}evictIfNeeded(){for(;this.entries.size>this.maxEntries;){let e=this.entries.keys().next().value;if(e===void 0)break;this.entries.delete(e),this.speedRings.delete(e),Y(`info`,`usageStore evict ${e}`)}}close(){this.sweepTimer&&=(clearInterval(this.sweepTimer),null),this.entries.clear(),this.seeded.clear(),this.speedRings.clear()}};const Yw=/"(?:cache_read_input_tokens|cache_creation_input_tokens)":[1-9]/;function Xw(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 Zw(e){let t=await Qw(e);return t.kind===`ok`?X(Math.floor((t.value+36e5)/1e3)):t}async function Qw(e){for(let t of[65536,1048576]){let n=await Sw(e,t);if(n.kind!==`ok`)return n;let r=$w(n.value.buf,n.value.fromStart);if(r!=null)return X(r);if(n.value.fromStart)return Z}return Z}function $w(e,t){let n=e.toString(`utf8`).split(`
144
+ `),r=+!t;for(let e=n.length-1;e>=r;e--){let t=n[e];if(!t||!Yw.test(t))continue;let r=Xw(t);if(r!=null)return r}return null}function eT(e,t,n){let r=jh(t(`preset`),e.globals.preset,e.presets),i=Ph(e,r),a=t(`edit.mode`)===`open`?e.editGlobals:{};return{preset:r,presetCustomized:n(r),theme:gv(a.palette,t(`theme`),i.palette),look:Ai(a.look,t(`look`),i.look,e.looks),style:Mi(a.style,t(`style`),i.style),separator:a.default_separator??i.default_separator,autoWrap:Vi(a.autoWrap,t(`autoWrap`),i.autoWrap),padding:Hi(a.padding,t(`padding`),i.padding),charset:a.charset??i.charset??`unicode`,updateNotice:a.updateNotice??i.updateNotice??!0,colorCompatibility:a.colorCompatibility??i.colorCompatibility??`truecolor`}}const tT=10*1e3;function nT(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 rT(e,t){if(!(t<60))return e*3600/t}function iT(e,t,n,r){let i=r-t;if(i<50||i>tT)return;let a=n-e;if(!(a<=0))return a*1e3/i}function aT(e){let{prev:t,cur:n}=e;if(t===void 0)return;let r=iT(t.input,t.atMs,n.input,n.atMs),i=iT(t.output,t.atMs,n.output,n.atMs),a=iT(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 oT(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>tT)continue;let o=iT(r.total,r.atMs,i.total,i.atMs);n.push(o??0)}if(n.length!==0)return n.join(`,`)}function sT(e){let t=e.indexOf(`.`);return t<0?e:e.slice(0,t)}function cT(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`,()=>sT(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 lT(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 La(Nh(e,t).node)){if(n.when)for(let e of Dv(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 Dv(e))r.push(t)}}let a=new Set;for(;r.length>0;){let e=r.pop();for(let t of dT(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 Dv(e.template))r.push(t)}}}return a}function uT(e){let t=new Map;return n=>{let r=t.get(n);if(r!==void 0)return r;let i=lT(e,n);return t.set(n,i),i}}function dT(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 fT(e,t){for(let n of e)if(n===t||n.startsWith(t+`.`))return!0;return!1}function pT(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 mT(e,t,n,r,i,a){let o=e=>fT(r,e),s=(t.clock??(()=>new Date))().getTime(),c=(e,t,n)=>t?n().catch(t=>Q(`${e}: ${String(t)}`)):Promise.resolve(Z),[l,u,d,f,p,m,h,g,_]=await Promise.all([c(`git`,o(`git`),()=>t.gitProvider.getGitInfo(n??e.workspace?.current_dir,pT(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`),()=>Zw(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=yT(l);v.push(...b.failures);let x=cT(a);v.push(...x.failures);let S=y(u),C=y(d),ee=y(f),te=y(p),w=y(m),ne=y(h),re=y(g);for(let e of v)t.log(`warn`,`provider fetch failed: ${e}`);let ie=e.rate_limits?.five_hour,T=e.rate_limits?.seven_day,E=ie?nT(ie.used_percentage,ie.resets_at,18e6,s):void 0,ae=T?nT(T.used_percentage,T.resets_at,6048e5,s):void 0,oe=S?.session.cost,se=te?.sessionDuration,ce=o(`burn`)&&oe!=null&&se!=null?rT(oe,se):void 0,D=y(_),le=D===void 0?void 0:aT(D),ue=D===void 0?void 0:oT(D),de=le!==void 0||ue!==void 0?{...le,...ue!==void 0&&{history:ue}}:void 0,fe=vT(process.env.HOME??process.env.USERPROFILE),pe=e.workspace?{...e.workspace,current_dir:vT(e.workspace.current_dir)??``,project_dir:vT(e.workspace.project_dir)??``}:e.workspace,me=S===void 0?void 0:_T({cost:S.session.cost,tokens:S.session.tokens}),O=C===void 0?void 0:{cost:C.cost,tokens:C.tokens},he=te===void 0?void 0:_T({lastResponseTime:te.lastResponseTime,responseTime:te.responseTime,sessionDuration:te.sessionDuration,messageCount:te.messageCount,linesAdded:te.linesAdded,linesRemoved:te.linesRemoved}),ge=w===void 0?void 0:hT(w);return{...e,...pe!==void 0&&{workspace:pe},...fe!==void 0&&{home:fe},...b.git!==void 0&&{git:b.git},...ne!==void 0&&{tmux:{session:ne}},host:x.host,preset:{effective:i.preset,customized:i.presetCustomized},style:{effective:i.style},charset:{effective:i.charset},colorCompatibility:{effective:i.colorCompatibility},autoWrap:{effective:i.autoWrap},padding:{effective:i.padding},...me!==void 0&&{session:me},...O!==void 0&&{today:O},...ce!==void 0&&{burn:{costPerHour:ce}},...de!==void 0&&{speed:de},...o(`block`)&&ie!==void 0&&{block:{nativeUtilization:ie.used_percentage,resetsAt:ie.resets_at,...E!==void 0&&{etaMinutes:E}}},...T!==void 0&&{weekly:{percentage:T.used_percentage,resetsAt:T.resets_at,...ae!==void 0&&{etaMinutes:ae}}},...re!==void 0&&{cache:{expiresAt:re}},...ee!==void 0&&{context:{totalTokens:ee.totalTokens,contextLeft:ee.contextLeftPercentage}},...he!==void 0&&{metrics:he},...ge!==void 0&&{activity:ge}}}function hT(e){let t=e.todos.findIndex(e=>e.active),n=e.todos.length===0?void 0:{total:e.todos.length,completed:e.todos.filter(e=>e.done).length,...t>=0&&{position:t+1,active:e.todos[t].text}},r=gT(e.running),i=gT(e.done),a=r===void 0&&i===void 0?void 0:{...r!==void 0&&{running:r},...i!==void 0&&{done:i}};if(!(e.command===null&&n===void 0&&a===void 0))return{...e.command!==null&&{command:e.command},...n!==void 0&&{todo:n},...a!==void 0&&{tool:a}}}function gT(e){return e.length===0?void 0:e.map(e=>`${e.name}:${e.count}`).join(`,`)}function _T(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 vT(e){return e===void 0||e.length===0||c.sep!==`\\`?e:e.replace(/\\/g,`/`)}function yT(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 bT=`trimPrefix "/" (trimPrefix .project_dir .current_dir)`,xT=`{{ \$dir := .current_dir }}{{ if and (ne .home "") (or (eq .home .current_dir) (hasPrefix (printf "%s/" .home) .current_dir)) }}{{ \$dir = printf "~%s" (trimPrefix .home .current_dir) }}{{ else }}{{ if or (eq .project_dir .current_dir) (hasPrefix (printf "%s/" .project_dir) .current_dir) }}{{ $dir = ternary (${bT}) (basename .project_dir) (ne (${bT}) "") }}{{ end }}{{ end }}{{ abbreviatePath \$dir }}`,ST={branch:`primary`,staged:`success`,unstaged:`warning`,untracked:`accent`,conflicts:`error`,dirty:`warning`,clean:`success`,ahead:`success`,behind:`warning`,stash:`accent`},CT=(e,t)=>`{{ fg (readableOn (color "${e}") (bgOf) ${Ac}) ${t} }}`,wT=(e,t)=>CT(ST[e],t),TT=`{{ readableOn (mix (color "foreground") (bgOf) 60) (bgOf) 3 }}`,ET=`{{ 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 }}${wT(`staged`,`(printf "+%v" .git.staged)`)}{{ $first = false }}{{ end }}{{ if gt .git.unstaged 0 }}{{ if not $first }} {{ end }}${wT(`unstaged`,`(printf "~%v" .git.unstaged)`)}{{ $first = false }}{{ end }}{{ if gt .git.untracked 0 }}{{ if not $first }} {{ end }}${wT(`untracked`,`(printf "?%v" .git.untracked)`)}{{ $first = false }}{{ end }}{{ if gt .git.conflicts 0 }}{{ if not $first }} {{ end }}${wT(`conflicts`,`(printf "!%v" .git.conflicts)`)}{{ $first = false }}{{ end }}){{ end }}`,DT=`{{ if eq .git.status "conflicts" }}${wT(`conflicts`,`"⚠"`)}{{ else }}{{ if eq .git.status "dirty" }}${wT(`dirty`,`"●"`)}{{ else }}${wT(`clean`,`"✓"`)}{{ end }}{{ end }}`,OT=`{{ if ne .git.repoName "" }}{{ .git.repoName }} {{ end }}⎇ ${wT(`branch`,`.git.branch`)}{{ if .git.sha }} ♯ {{ .git.sha }}{{ end }}{{ if or (gt .git.ahead 0) (gt .git.behind 0) }} {{ if gt .git.ahead 0 }}${wT(`ahead`,`(printf "↑%v" .git.ahead)`)}{{ end }}{{ if gt .git.behind 0 }}${wT(`behind`,`(printf "↓%v" .git.behind)`)}{{ end }}{{ end }}`+ET+`{{ if .git.upstream }} →{{ .git.upstream }}{{ end }}{{ if gt .git.stash 0 }} ${wT(`stash`,`(printf "⧇ %v" .git.stash)`)}{{ end }} `+DT,kT={globals:{palette:`tokyo-night`},variables:{current_dir:{kind:`input`,path:`workspace.current_dir`,default:`?`},project_dir:{kind:`input`,path:`workspace.project_dir`,default:``},transcript_path:{kind:`input`,path:`transcript_path`,default:``},"model.display_name":{kind:`input`,path:`model.display_name`,default:``},"session.id":{kind:`input`,path:`session_id`,default:``},version:{kind:`input`,path:`version`,default:``},"theme.effective":{kind:`input`,path:`theme.effective`,default:``},"look.effective":{kind:`input`,path:`look.effective`,default:``},"preset.effective":{kind:`input`,path:`preset.effective`,default:``},"preset.customized":{kind:`input`,path:`preset.customized`,type:`boolean`,default:!1},"style.effective":{kind:`input`,path:`style.effective`,default:``},"charset.effective":{kind:`input`,path:`charset.effective`,default:``},"colorCompatibility.effective":{kind:`input`,path:`colorCompatibility.effective`,default:``},"autoWrap.effective":{kind:`input`,path:`autoWrap.effective`,type:`boolean`,default:!0},"padding.effective":{kind:`input`,path:`padding.effective`,type:`number`,default:1},"term.cols":{kind:`input`,path:`term.cols`,type:`number`,default:80},home:{kind:`input`,path:`home`,default:``},"tmux.session":{kind:`input`,path:`tmux.session`,default:``},"host.name":{kind:`input`,path:`host.name`,default:``},"host.user":{kind:`input`,path:`host.user`,default:``},"host.ssh":{kind:`input`,path:`host.ssh`,type:`boolean`,default:!1},"git.repoName":{kind:`input`,path:`git.repoName`,default:``},"git.repoUrl":{kind:`input`,path:`git.repoUrl`,default:``},"git.branch":{kind:`input`,path:`git.branch`,default:``},"git.sha":{kind:`input`,path:`git.sha`,default:``},"git.ahead":{kind:`input`,path:`git.ahead`,type:`number`,default:0},"git.behind":{kind:`input`,path:`git.behind`,type:`number`,default:0},"git.staged":{kind:`input`,path:`git.staged`,type:`number`,default:0},"git.unstaged":{kind:`input`,path:`git.unstaged`,type:`number`,default:0},"git.untracked":{kind:`input`,path:`git.untracked`,type:`number`,default:0},"git.conflicts":{kind:`input`,path:`git.conflicts`,type:`number`,default:0},"git.upstream":{kind:`input`,path:`git.upstream`,default:``},"git.stash":{kind:`input`,path:`git.stash`,type:`number`,default:0},"git.status":{kind:`input`,path:`git.status`,default:`clean`},"git.operation":{kind:`input`,path:`git.operation`,default:``},"git.timeSinceCommit":{kind:`input`,path:`git.timeSinceCommit`,type:`number`,default:0},"git.prNumber":{kind:`input`,path:`git.prNumber`,type:`number`,default:0},"git.prState":{kind:`input`,path:`git.prState`,default:``},"git.prUrl":{kind:`input`,path:`git.prUrl`,default:``},"git.prError":{kind:`input`,path:`git.prError`,default:``},"cache.expiresAt":{kind:`input`,path:`cache.expiresAt`,type:`number`,default:0},"session.cost":{kind:`input`,path:`session.cost`,type:`number`,default:0},"session.tokens":{kind:`input`,path:`session.tokens`,type:`number`,default:0},"session.budget.amount":{kind:`literal`,value:0},"session.budget.warningThreshold":{kind:`literal`,value:80},"today.cost":{kind:`input`,path:`today.cost`,type:`number`,default:0},"today.tokens":{kind:`input`,path:`today.tokens`,type:`number`,default:0},"today.budget.amount":{kind:`literal`,value:50},"today.budget.warningThreshold":{kind:`literal`,value:80},"block.nativeUtilization":{kind:`input`,path:`block.nativeUtilization`,type:`number`,default:0},"block.resetsAt":{kind:`input`,path:`block.resetsAt`,type:`number`,default:0},"block.budget.warningThreshold":{kind:`literal`,value:80},"block.budget.heatThreshold":{kind:`literal`,value:50},"weekly.percentage":{kind:`input`,path:`weekly.percentage`,type:`number`,default:0},"weekly.resetsAt":{kind:`input`,path:`weekly.resetsAt`,type:`number`,default:0},"weekly.budget.warningThreshold":{kind:`literal`,value:80},"weekly.budget.heatThreshold":{kind:`literal`,value:50},"burn.costPerHour":{kind:`input`,path:`burn.costPerHour`,type:`number`,default:-1},"block.etaMinutes":{kind:`input`,path:`block.etaMinutes`,type:`number`,default:-1},"weekly.etaMinutes":{kind:`input`,path:`weekly.etaMinutes`,type:`number`,default:-1},"burn.eta.warnMinutes":{kind:`literal`,value:60},"burn.eta.errorMinutes":{kind:`literal`,value:30},"speed.input":{kind:`input`,path:`speed.input`,type:`number`,default:-1},"speed.output":{kind:`input`,path:`speed.output`,type:`number`,default:-1},"speed.total":{kind:`input`,path:`speed.total`,type:`number`,default:-1},"speed.history":{kind:`input`,path:`speed.history`,type:`string`,default:``},"context.totalTokens":{kind:`input`,path:`context.totalTokens`,type:`number`,default:0},"context.contextLeft":{kind:`input`,path:`context.contextLeft`,type:`number`,default:100},"metrics.lastResponseTime":{kind:`input`,path:`metrics.lastResponseTime`,type:`number`,default:0},"metrics.responseTime":{kind:`input`,path:`metrics.responseTime`,type:`number`,default:0},"metrics.sessionDuration":{kind:`input`,path:`metrics.sessionDuration`,type:`number`,default:0},"metrics.messageCount":{kind:`input`,path:`metrics.messageCount`,type:`number`,default:0},"metrics.linesAdded":{kind:`input`,path:`metrics.linesAdded`,type:`number`,default:0},"metrics.linesRemoved":{kind:`input`,path:`metrics.linesRemoved`,type:`number`,default:0},"activity.command":{kind:`input`,path:`activity.command`,type:`string`,default:``},"activity.todo.total":{kind:`input`,path:`activity.todo.total`,type:`number`,default:0},"activity.todo.completed":{kind:`input`,path:`activity.todo.completed`,type:`number`,default:0},"activity.todo.position":{kind:`input`,path:`activity.todo.position`,type:`number`,default:0},"activity.todo.active":{kind:`input`,path:`activity.todo.active`,type:`string`,default:``},"activity.tool.running":{kind:`input`,path:`activity.tool.running`,type:`string`,default:``},"activity.tool.done":{kind:`input`,path:`activity.tool.done`,type:`string`,default:``}},segments:{directory:{description:"The current directory, shortened fish-style — `~` under home, project-relative inside the project.",template:xT},model:{description:`The active model's display name.`,template:`✱ {{ formatModelName .model.display_name }}`,when:`{{ ne .model.display_name "" }}`},sessionId:{description:`The session id, truncated to 8 characters.`,template:`⌗{{ trunc 8 .session.id }}`,when:`{{ ne .session.id "" }}`},version:{description:`The Claude Code version reported in the hook payload.`,template:`◈ v{{ .version }}`,when:`{{ ne .version "" }}`},tmux:{description:`The tmux session name; hidden when not inside tmux.`,template:`tmux:{{ .tmux.session | default "none" }}`,when:`{{ ne .tmux.session "" }}`},host:{description:`user@host on a warning background, shown only over SSH.`,template:`⇄ {{ .host.user | default "?" }}@{{ .host.name | default "?" }}`,bg:`warning`,when:`{{ .host.ssh }}`},git:{description:`Branch, sha, ahead/behind, staged/unstaged/untracked/conflict counts, upstream, stash count, and a clean/dirty/conflict glyph.`,template:OT,fg:TT,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 }}${wT(`staged`,`"S"`)}{{ end }}{{ if gt .git.unstaged 0 }}${wT(`unstaged`,`"U"`)}{{ end }}{{ if gt .git.untracked 0 }}${wT(`untracked`,`"?"`)}{{ end }}{{ if gt .git.conflicts 0 }}${wT(`conflicts`,`(printf "!%v" .git.conflicts)`)}{{ end }}{{ end }} ⎇ ${wT(`branch`,`.git.branch`)}{{ if ne .git.upstream "" }} [{{ .git.upstream }}{{ if or (gt .git.ahead 0) (gt .git.behind 0) }} {{ if gt .git.ahead 0 }}${wT(`ahead`,`(printf "+%v" .git.ahead)`)}{{ end }}{{ if and (gt .git.ahead 0) (gt .git.behind 0) }}/{{ end }}{{ if gt .git.behind 0 }}${wT(`behind`,`(printf "-%v" .git.behind)`)}{{ end }}{{ end }}]{{ end }}{{ if gt .git.stash 0 }} ${wT(`stash`,`(printf "(%v stashed)" .git.stash)`)}{{ end }}{{ if gt .git.timeSinceCommit 0 }} ◷ {{ template "formatTimeSince" .git.timeSinceCommit }}{{ end }}`,fg:TT,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:mg(``).template},session:{description:`This session's cost and token total, with a budget warning once a budget is configured.`,template:`§ {{ template "formatCost" .session.cost }} ({{ template "formatTokens" .session.tokens }}){{ template "budgetStatus" (dict "cost" .session.cost "budget" .session.budget.amount "warn" .session.budget.warningThreshold) }}`},today:{description:`Today's cost and tokens across every session, with a budget warning once a budget is configured.`,template:`☉ {{ template "formatCost" .today.cost }} ({{ template "formatTokens" .today.tokens }}){{ template "budgetStatus" (dict "cost" .today.cost "budget" .today.budget.amount "warn" .today.budget.warningThreshold) }}`},block:{description:`The 5-hour rate-limit block: percent used and time to reset, heating to warning then error.`,template:`◱ {{ round .block.nativeUtilization }}% ({{ template "formatResetCountdown" .block.resetsAt }})`,bg:`{{ ramp (round .block.nativeUtilization) "step" 0 (tint) .block.budget.heatThreshold "warning" .block.budget.warningThreshold "error" }}`,when:`{{ gt .block.resetsAt 0 }}`},weekly:{description:`The weekly rate-limit quota: percent used and time to reset, heating to warning then error.`,template:`◑ {{ round .weekly.percentage }}% ({{ template "formatResetCountdown" .weekly.resetsAt }})`,bg:`{{ ramp (round .weekly.percentage) "step" 0 (tint) .weekly.budget.heatThreshold "warning" .weekly.budget.warningThreshold "error" }}`,when:`{{ gt .weekly.resetsAt 0 }}`},burnrate:{description:`Spend per hour, with the projected time to the 5-hour and weekly limits.`,template:`⚡ {{ template "formatRate" .burn.costPerHour }} · {{ template "formatEta" .block.etaMinutes }} to 5h · {{ template "formatEta" .weekly.etaMinutes }} to wk`,bg:`{{ ramp .block.etaMinutes "step" -1 (tint) 0 "error" .burn.eta.errorMinutes "warning" .burn.eta.warnMinutes (tint) }}`,when:`{{ or (gt .block.resetsAt 0) (gt .weekly.resetsAt 0) }}`},speed:{description:`Token throughput for the latest exchange: output, input, and total.`,template:`⇅ out {{ template "formatSpeed" .speed.output }} · in {{ template "formatSpeed" .speed.input }} · tot {{ template "formatSpeed" .speed.total }}`,when:`{{ gt .session.tokens 0 }}`},tokenSparkline:{description:`A sparkline of recent token throughput.`,template:`⚡ {{ sparkline .speed.history 24 }}`,when:`{{ ne .speed.history "" }}`},cacheTimer:{description:"Minutes until the prompt cache expires, or `cold` once it has.",template:`◴ {{ if le (minutesUntilReset .cache.expiresAt) 0 }}cold{{ else }}{{ minutesUntilReset .cache.expiresAt }}m{{ end }}`,fg:`{{ readableOn (color (cascade (minutesUntilReset .cache.expiresAt) "0:error" "9:warning" "21:foreground")) (bgOf) ${Ac} }}`,when:`{{ gt .cache.expiresAt 0 }}`},context:{description:`Context used, in tokens and percent remaining, heating as it fills.`,template:`◔ {{ formatInteger .context.totalTokens }} ({{ .context.contextLeft }}%)`,bg:`{{ ramp .context.contextLeft "step" 0 "error" 21 "warning" 41 (tint) }}`,when:`{{ gt .context.totalTokens 0 }}`},metrics:{description:`Response times, session duration, message count, and lines added/removed.`,template:`{{ if .metrics.lastResponseTime }} Δ {{ template "formatResponseTime" .metrics.lastResponseTime }}{{ end }}{{ if .metrics.responseTime }} ⧖ {{ template "formatResponseTime" .metrics.responseTime }}{{ end }}{{ if .metrics.sessionDuration }} ⧗ {{ template "formatDuration" .metrics.sessionDuration }}{{ end }}{{ if .metrics.messageCount }} ◆ {{ .metrics.messageCount }}{{ end }}{{ if .metrics.linesAdded }} + {{ .metrics.linesAdded }}{{ end }}{{ if .metrics.linesRemoved }} - {{ .metrics.linesRemoved }}{{ end }} `,when:`{{ or (gt .metrics.lastResponseTime 0.0) (gt .metrics.responseTime 0.0) (gt .metrics.sessionDuration 0.0) (gt .metrics.messageCount 0) (gt .metrics.linesAdded 0) (gt .metrics.linesRemoved 0) }}`},activity:{description:`What Claude is doing: the slash command that opened the turn, the in-progress todo, and the tools in flight.`,template:`{{ if .activity.command }} ⌘ {{ .activity.command }}{{ end }}{{ if .activity.todo.total }}{{ if .activity.todo.active }} ☐ {{ .activity.todo.position }}/{{ .activity.todo.total }} {{ abbrev 32 .activity.todo.active }}{{ else }} ☑ {{ .activity.todo.completed }}/{{ .activity.todo.total }}{{ end }}{{ end }}{{ if .activity.tool.running }} ⟳ {{ template "formatToolTally" .activity.tool.running }}{{ end }}{{ if .activity.tool.done }} ✓ {{ template "formatToolTally" .activity.tool.done }}{{ end }} `,when:`{{ or (ne .activity.command "") (gt .activity.todo.total 0) (ne .activity.tool.running "") (ne .activity.tool.done "") }}`},charsetControl:{description:"The `⚙ terminal` drawer's control for `globals.charset` — the joiner glyph vocabulary.",template:`{{ .charset.effective }} {{ menu "applyCharsetForever" "▸" "▾" }} {{ action "resetCharset" "↺" }}`},colorCompatControl:{description:"The `⚙ terminal` drawer's control for `globals.colorCompatibility` — the colour depth.",template:`{{ .colorCompatibility.effective }} {{ menu "applyColorCompatForever" "▸" "▾" }} {{ action "resetColorCompat" "↺" }}`},directoryPaletteControl:{description:"The `⚙ terminal` drawer's control pinning the directory segment's own palette.",template:`🎨 directory {{ menu "applyDirectoryPaletteForever" "▸" "▾" }} {{ action "resetDirectoryPalette" "↺" }}`}},root:{rows:{identity:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`host`},{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`group`,name:`settings`,label:`⚙ terminal`,direction:`horizontal`,children:[`charsetControl`,`colorCompatControl`,`directoryPaletteControl`]}]},status:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`segment`,name:`context`},{kind:`segment`,name:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`activity`}]}}},actions:{...mg(``).actions,copyDir:{copy:`{{ .current_dir }}`},applyCharsetForever:{persist:`charset`,from:`charsets`},resetCharset:{reset:`charset`},applyColorCompatForever:{persist:`colorCompatibility`,from:`colorCompatibilities`},resetColorCompat:{reset:`colorCompatibility`},applyDirectoryPaletteForever:{persist:`segments.directory.palette`,from:`themes`},resetDirectoryPalette:{reset:`segments.directory.palette`}},looks:{none:{hueShift:0,chromaScale:1,lightnessScale:1,lightnessShift:0},vivid:{hueShift:0,chromaScale:1.35,lightnessScale:1,lightnessShift:0},muted:{hueShift:0,chromaScale:.55,lightnessScale:1,lightnessShift:0},dim:{hueShift:0,chromaScale:1,lightnessScale:.85,lightnessShift:0},bright:{hueShift:0,chromaScale:1,lightnessScale:1,lightnessShift:.08},inverted:{hueShift:0,chromaScale:1,lightnessScale:-1,lightnessShift:1}},presets:{default:{},compact:{root:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`directory`},{kind:`segment`,name:`git`},{kind:`segment`,name:`context`}]},globals:{padding:0}},verbose:{root:{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`segment`,name:`gitPr`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`segment`,name:`context`},{kind:`segment`,name:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`burnrate`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`speed`},{kind:`segment`,name:`tokenSparkline`}]}]}}},editGlobals:{style:`plain`,default_separator:` | `},helpers:{formatCost:'{{ if lt . 0.01 }}<$0.01{{ else }}${{ printf "%.2f" . }}{{ end }}',formatTokenCount:`{{ if ge . 1000000 }}{{ printf "%.1f" (divf . 1000000) }}M{{ else if ge . 1000 }}{{ printf "%.1f" (divf . 1000) }}K{{ else }}{{ . }}{{ end }}`,formatTokens:`{{ template "formatTokenCount" . }} tokens`,formatToolTally:`{{ $names := splitList "," . }}{{ range $i, $pair := $names }}{{ if lt $i 2 }}{{ if $i }} {{ end }}{{ $kv := splitList ":" $pair }}{{ index $kv 0 }}{{ if ne (index $kv 1) "1" }}×{{ index $kv 1 }}{{ end }}{{ end }}{{ end }}{{ if gt (len $names) 2 }} +{{ sub (len $names) 2 }}{{ end }}`,formatRate:`{{ if lt . 0 }}—/hr{{ else }}{{ template "formatCost" . }}/hr{{ end }}`,formatEta:`{{ if lt . 0 }}—{{ else }}{{ template "formatLongTimeRemaining" . }}{{ end }}`,formatSpeed:`{{ if lt . 0 }}—{{ else }}{{ template "formatTokenCount" (round .) }}/s{{ end }}`,formatTokenBreakdown:`{{ $first := true }}{{ if gt .input 0 }}{{ template "formatTokenCount" .input }} in{{ $first = false }}{{ end }}{{ if gt .output 0 }}{{ if not $first }} + {{ end }}{{ template "formatTokenCount" .output }} out{{ $first = false }}{{ end }}{{ if or (gt .cacheCreation 0) (gt .cacheRead 0) }}{{ if not $first }} + {{ end }}{{ template "formatTokenCount" (add .cacheCreation .cacheRead) }} cached{{ $first = false }}{{ end }}{{ if $first }}0 tokens{{ end }}`,budgetStatus:`{{ if or (le .budget 0) (lt .cost 0) }}{{ else }}{{ $pct := minf 100 (mulf (divf .cost .budget) 100) }}{{ $p := printf "%.0f%%" $pct }}{{ if ge $pct .warn }} !{{ $p }}{{ else }}{{ if ge $pct 50 }} +{{ $p }}{{ else }} {{ $p }}{{ end }}{{ end }}{{ end }}`,formatTimeSince:`{{ if lt . 60 }}{{ . }}s{{ else if lt . 3600 }}{{ div . 60 }}m{{ else if lt . 86400 }}{{ div . 3600 }}h{{ else if lt . 604800 }}{{ div . 86400 }}d{{ else }}{{ div . 604800 }}w{{ end }}`,formatDuration:`{{ if lt . 60 }}{{ printf "%.0f" . }}s{{ else if lt . 3600 }}{{ printf "%.0f" (divf . 60) }}m{{ else if lt . 86400 }}{{ printf "%.1f" (divf . 3600) }}h{{ else }}{{ printf "%.1f" (divf . 86400) }}d{{ end }}`,formatResponseTime:`{{ if lt . 60 }}{{ printf "%.1f" . }}s{{ else }}{{ printf "%.1f" (divf . 60) }}m{{ end }}`,formatLongTimeRemaining:`{{ if ge . 1440 }}{{ $d := div . 1440 }}{{ $h := div (mod . 1440) 60 }}{{ if gt $h 0 }}{{ $d }}d {{ $h }}h{{ else }}{{ $d }}d{{ end }}{{ else if ge . 60 }}{{ $h := div . 60 }}{{ $m := mod . 60 }}{{ if gt $m 0 }}{{ $h }}h {{ $m }}m{{ else }}{{ $h }}h{{ end }}{{ else }}{{ . }}m{{ end }}`,formatResetCountdown:`{{ template "formatLongTimeRemaining" (add 1 (minutesUntilReset .)) }}`}},AT=new Set([kT.globals.palette,...Object.values(kT.segments).map(e=>e.palette)].filter(e=>e!==void 0)),jT=jo(uy(`<default>`,JSON.stringify(kT),AT),kT);var MT=fe((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:en}function r(){sn||t(`Proxy not available`)}function i(e){var t=!1;return function(){if(!t)return t=!0,e.apply(this,arguments)}}function a(e){return typeof e==`function`}function o(e){switch(typeof e){case`string`:case`symbol`:case`number`:return!0}return!1}function s(e){return typeof e==`object`&&!!e}function c(e){if(!s(e))return!1;var t=Object.getPrototypeOf(e);if(t==null)return!0;var n=Object.hasOwnProperty.call(t,`constructor`)&&t.constructor;return typeof n==`function`&&n.toString()===cn}function l(e){var t=e?.constructor;return!!t&&(t.name===`GeneratorFunction`||t.displayName===`GeneratorFunction`)}function u(e,t,n){nn(e,t,{enumerable:!1,writable:!0,configurable:!0,value:n})}function d(e,t,n){nn(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 rn.hasOwnProperty.call(e,t)}function _(e,t){return!!(e&t)}function v(e,t,n){return n?e|=t:e&=~t,e}function y(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function b(e,t,n){if(ne())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var i=new(e.bind.apply(e,r));return n&&re(i,n.prototype),i}function x(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,ie(r.key),r)}}function S(e,t,n){return t&&x(e.prototype,t),n&&x(e,n),Object.defineProperty(e,`prototype`,{writable:!1}),e}function C(e,t){var n=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if(typeof e==`string`)return y(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(e,t):void 0}}(e))||t&&e&&typeof e.length==`number`){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw TypeError(`Invalid attempt to iterate non-iterable instance.
145
145
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function ee(){return(ee=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(null,arguments)}function te(e){return(te=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function w(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,re(e,t)}function ne(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch{}return(ne=function(){return!!e})()}function re(e,t){return(re=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function ie(e){var t=function(e){if(typeof e!=`object`||!e)return e;var t=e[Symbol.toPrimitive];if(t!==void 0){var n=t.call(e,`string`);if(typeof n!=`object`)return n;throw TypeError(`@@toPrimitive must return a primitive value.`)}return String(e)}(e);return typeof t==`symbol`?t:t+``}function T(e){var t=typeof Map==`function`?new Map:void 0;return(T=function(e){function n(){return b(e,arguments,te(this).constructor)}if(e===null||!function(e){try{return Function.toString.call(e).indexOf(`[native code]`)!==-1}catch{return typeof e==`function`}}(e))return e;if(typeof e!=`function`)throw TypeError(`Super expression must either be null or a function`);if(t!==void 0){if(t.has(e))return t.get(e);t.set(e,n)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),re(n,e)})(e)}function E(e){return Object.assign((function(t,n){if(oe(n))return e.t(t,n);ae(t,n,e)}),e)}function ae(e,t,n){g(e,pn)||u(e,pn,ee({},e[pn])),function(e){return e.i===`override`}(n)||(e[pn][t]=n)}function oe(e){return typeof e==`object`&&typeof e.kind==`string`}function se(e,t,n){t===void 0&&(t=ln),n===void 0&&(n=ln);var r=new mn(e);return t!==ln&&ut(r,t),n!==ln&&dt(r,n),r}function ce(e,t,n){return bt(e)?e:Array.isArray(e)?R.array(e,{name:n}):c(e)?R.object(e,void 0,{name:n}):p(e)?R.map(e,{name:n}):m(e)?R.set(e,{name:n}):typeof e!=`function`||st(e)||_t(e)?e:l(e)?nr(e):Xn(n,e)}function D(e){return e}function le(e,t){return{i:e,u:t,o:ue,s:de,t:fe}}function ue(e,t,n,r){var i;return(i=this.u)!=null&&i.bound?this.s(e,t,n,!1)===null?0:1:r===e.h?this.s(e,t,n,!1)===null?0:2:st(n.value)?1:(nn(r,t,pe(e,this,t,n,!1)),2)}function de(e,t,n,r){var i=pe(e,this,t,n);return e.l(t,i,r)}function fe(e,n){var r,i=n.kind,a=n.name,o=n.addInitializer,s=this,c=function(e){var t;return Me(s.u?.name??a.toString(),e,(t=s.u?.autoAction)!=null&&t)};return i==`field`?function(e){var t,n=e;return st(n)||(n=c(n)),(t=s.u)!=null&&t.bound&&((n=n.bind(this)).isMobxAction=!0),n}:i==`method`?(st(e)||(e=c(e)),(r=this.u)!=null&&r.bound&&o((function(){var e=this[a].bind(this);e.isMobxAction=!0,this[a]=e})),e):void t(`Cannot apply '`+s.i+`' to '`+String(a)+`' (kind: `+i+`):
146
- '`+s.i+`' can only be used on properties with a function value.`)}function pe(e,t,n,r,i){var a,o,s;i===void 0&&(i=B.safeDescriptors);var c=r.value;return(a=t.u)!=null&&a.bound&&(c=c.bind(e.v??e.h)),{value:Me(t.u?.name??n.toString(),c,(o=t.u?.autoAction)!=null&&o,(s=t.u)!=null&&s.bound?e.v??e.h:void 0),configurable:!i||e.p,enumerable:!1,writable:!i}}function me(e,t){return{i:e,u:t,o:O,s:he,t:ge}}function O(e,t,n,r){var i;return r===e.h?this.s(e,t,n,!1)===null?0:2:(i=this.u)!=null&&i.bound&&(!g(e.h,t)||!_t(e.h[t]))&&this.s(e,t,n,!1)===null?0:_t(n.value)?1:(nn(r,t,_e(e,0,0,n,!1,!1)),2)}function he(e,t,n,r){var i=_e(e,0,0,n,this.u?.bound);return e.l(t,i,r)}function ge(e,t){var n,r=t.name,i=t.addInitializer;return _t(e)||(e=nr(e)),(n=this.u)!=null&&n.bound&&i((function(){var e=this[r].bind(this);e.isMobXFlow=!0,this[r]=e})),e}function _e(e,t,n,r,i,a){a===void 0&&(a=B.safeDescriptors);var o=r.value;return _t(o)||(o=nr(o)),i&&((o=o.bind(e.v??e.h)).isMobXFlow=!0),{value:o,configurable:!a||e.p,enumerable:!1,writable:!a}}function ve(e,t){return{i:e,u:t,o:ye,s:be,t:xe}}function ye(e,t,n){return this.s(e,t,n,!1)===null?0:1}function be(e,t,n,r){return e.m(t,ee({},this.u,{get:n.get,set:n.set}),r)}function xe(e,t){var n=this,r=t.name;return(0,t.addInitializer)((function(){var t=Vt(this)[I],i=ee({},n.u,{get:e,context:this});i.name||=`ObservableObject.`+r.toString(),t.j.set(r,new Pn(i))})),function(){return this[I].O(r)}}function Se(e,t){return{i:e,u:t,o:Ce,s:we,t:Te}}function Ce(e,t,n){return this.s(e,t,n,!1)===null?0:1}function we(e,t,n,r){return e.g(t,n.value,this.u?.enhancer??ce,r)}function Te(e,t){function n(e,t){var n=Vt(e)[I],i=new Mn(t,r.u?.enhancer??ce,`ObservableObject.`+a.toString(),!1);n.j.set(a,i),o.add(e)}var r=this,i=t.kind,a=t.name,o=new WeakSet;if(i==`accessor`)return{get:function(){return o.has(this)||n(this,e.get.call(this)),this[I].O(a)},set:function(e){return o.has(this)||n(this,e),this[I].S(a,e)},init:function(e){return o.has(this)||n(this,e),e}}}function Ee(e){return{i:`true`,u:e,o:De,s:Oe,t:ke}}function De(e,t,n,r){var i,a,o;if(n.get)return Dn.o(e,t,n,r);if(n.set){var s=st(n.set)?n.set:Me(t.toString(),n.set);return r===e.h?e.l(t,{configurable:!B.safeDescriptors||e.p,set:s})===null?0:2:(nn(r,t,{configurable:!0,set:s}),2)}if(r!==e.h&&typeof n.value==`function`)return l(n.value)?((o=this.u)!=null&&o.autoBind?nr.bound:nr).o(e,t,n,r):((a=this.u)!=null&&a.autoBind?Xn.bound:Xn).o(e,t,n,r);var c=!1===this.u?.deep?R.ref:R;return typeof n.value==`function`&&(i=this.u)!=null&&i.autoBind&&(n.value=n.value.bind(e.v??e.h)),c.o(e,t,n,r)}function Oe(e,t,n,r){var i;return n.get?Dn.s(e,t,n,r):n.set?e.l(t,{configurable:!B.safeDescriptors||e.p,set:Me(t.toString(),n.set)},r):(typeof n.value==`function`&&(i=this.u)!=null&&i.autoBind&&(n.value=n.value.bind(e.v??e.h)),(!1===this.u?.deep?R.ref:R).s(e,t,n,r))}function ke(){t(`'`+this.i+`' cannot be used as a decorator`)}function Ae(e){return e||yn}function k(e){return!0===e.deep?ce:!1===e.deep?D:(t=e.defaultDecorator)&&(n=(r=t.u)?.enhancer)!=null?n:ce;var t,n,r}function je(e,t,n){return oe(t)?bn.t(e,t):o(t)?void ae(e,t,bn):bt(e)?e:c(e)?R.object(e,t,n):Array.isArray(e)?R.array(e,t):p(e)?R.map(e,t):m(e)?R.set(e,t):typeof e==`object`&&e?e:R.box(e,t)}function Me(e,t,n,r){function i(){return Ne(0,n,t,r||this,arguments)}return n===void 0&&(n=!1),i.isMobxAction=!0,i.toString=function(){return t.toString()},An&&(jn.value=e,nn(i,`name`,jn)),i}function Ne(e,t,n,r,i){var a=Pe(0,t);try{return n.apply(r,i)}catch(e){throw a._=e,e}finally{Fe(a)}}function Pe(e,t){var n=B.trackingDerivation,r=!t||!n;Qe();var i=B.allowStateChanges;r&&(We(),i=Le(!0));var a={A:r,k:n,M:i,V:Ke(!0),R:!1,N:0,T:kn++,C:On};return On=a.T,a}function Fe(e){On!==e.T&&t(30),On=e.C,e._!==void 0&&(B.suppressReactionErrors=!0),Re(e.M),qe(e.V),$e(),e.A&&Ge(e.k),B.suppressReactionErrors=!1}function Ie(e,t){var n=Le(e);try{return t()}finally{Re(n)}}function Le(e){var t=B.allowStateChanges;return B.allowStateChanges=e,t}function Re(e){B.allowStateChanges=e}function ze(e){return e instanceof Ln}function Be(e){switch(e.I){case z.L:return!1;case z.P:case z.K:return!0;case z.B:for(var t=Ke(!0),n=We(),r=e.D,i=r.length,a=0;a<i;a++){var o=r[a];if(In(o)){if(B.disableErrorBoundaries)o.get();else try{o.get()}catch{return Ge(n),qe(t),!0}if(e.I===z.K)return Ge(n),qe(t),!0}}return Je(e),Ge(n),qe(t),!1}}function Ve(e,t,n){var r=Ke(!0);Je(e),e.W=Array(e.q===0?100:e.D.length),e.G=0,e.q=++B.runId;var i,a=B.trackingDerivation;if(B.trackingDerivation=e,B.inBatch++,!0===B.disableErrorBoundaries)i=t.call(n);else try{i=t.call(n)}catch(e){i=new Ln(e)}return B.inBatch--,B.trackingDerivation=a,function(e){for(var t=e.D,n=e.D=e.W,r=z.L,i=0,a=e.G,o=0;o<a;o++){var s=n[o];s.diffValue===0&&(s.diffValue=1,i!==o&&(n[i]=s),i++),s.I>r&&(r=s.I)}for(n.length=i,e.W=null,a=t.length;a--;){var c=t[a];c.diffValue===0&&Xe(c,e),c.diffValue=0}for(;i--;){var l=n[i];l.diffValue===1&&(l.diffValue=0,Ye(l,e))}r!==z.L&&(e.I=r,e.H())}(e),qe(r),i}function He(e){var t=e.D;e.D=[];for(var n=t.length;n--;)Xe(t[n],e);e.I=z.P}function Ue(e){var t=We();try{return e()}finally{Ge(t)}}function We(){var e=B.trackingDerivation;return B.trackingDerivation=null,e}function Ge(e){B.trackingDerivation=e}function Ke(e){var t=B.allowStateReads;return B.allowStateReads=e,t}function qe(e){B.allowStateReads=e}function Je(e){if(e.I!==z.L){e.I=z.L;for(var t=e.D,n=t.length;n--;)t[n].U=z.L}}function Ye(e,t){e.F.add(t),e.U>t.I&&(e.U=t.I)}function Xe(e,t){e.F.delete(t),e.F.size===0&&Ze(e)}function Ze(e){!1===e.isPendingUnobservation&&(e.isPendingUnobservation=!0,B.pendingUnobservations.push(e))}function Qe(){B.inBatch++}function $e(){if(--B.inBatch==0){nt();for(var e=B.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 Pn&&n.X())}B.pendingUnobservations=[]}}function et(e){var t=B.trackingDerivation;return t===null?(e.F.size===0&&B.inBatch>0&&Ze(e),!1):(t.q!==e.$&&(e.$=t.q,t.W[t.G++]=e,!e.isBeingObserved&&B.trackingContext&&(e.isBeingObserved=!0,e.onBO())),e.isBeingObserved)}function tt(e){e.U!==z.K&&(e.U=z.K,e.F.forEach((function(e){e.I===z.L&&e.H(),e.I=z.K})))}function nt(){B.inBatch>0||B.isRunningReactions||Un(rt)}function rt(){B.isRunningReactions=!0;for(var e=B.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()}B.isRunningReactions=!1}function it(){return console.warn(`[mobx.spy] Is a no-op in production builds`),function(){}}function at(e){return function(t,n){return a(t)?Me(t.name||`<unnamed action>`,t,e):a(n)?Me(t,n,e):oe(n)?(e?qn:Gn).t(t,n):o(n)?ae(t,n,e?qn:Gn):o(t)?E(le(e?`autoAction`:`action`,{name:t,autoAction:e})):void 0}}function ot(e){return Ne(0,!1,e,this,void 0)}function st(e){return a(e)&&!0===e.isMobxAction}function ct(e,t){function n(){e(i)}var r;t===void 0&&(t=on);var i,a=t?.name??`Autorun`;if(t.scheduler||t.delay){var o=lt(t),s=!1;i=new Hn(a,(function(){s||(s=!0,o((function(){s=!1,i.isDisposed||i.track(n)})))}),t.onError,t.requiresObservable)}else i=new Hn(a,(function(){this.track(n)}),t.onError,t.requiresObservable);return(r=t)!=null&&(r=r.signal)!=null&&r.aborted||i.Y(),i.Z(t?.signal)}function lt(e){return e.scheduler?e.scheduler:e.delay?function(t){return setTimeout(t,e.delay)}:Zn}function ut(e,t,n){return ft(`onBO`,e,t,n)}function dt(e,t,n){return ft(`onBUO`,e,t,n)}function ft(e,t,n,r){var i=typeof r==`function`?Jt(t,n):Jt(t),o=a(r)?r:n,s=e+`L`;return i[s]?i[s].add(o):i[s]=new Set([o]),function(){var e=i[s];e&&(e.delete(o),e.size===0&&delete i[s])}}function pt(e,t,n,r){var i=fn(t);return Xt((function(){var t=Vt(e,r)[I];dn(i).forEach((function(e){t.s(e,i[e],!n||!(e in n)||n[e])}))})),e}function mt(e){var t,n={name:e.tt};return e.D&&e.D.length>0&&(n.dependencies=(t=e.D,Array.from(new Set(t))).map(mt)),n}function ht(e){var t={name:e.tt};return function(e){return e.F&&e.F.size>0}(e)&&(t.observers=Array.from(function(e){return e.F}(e)).map(ht)),t}function gt(e){a(e.cancel)&&e.cancel()}function _t(e){return!0===e?.isMobXFlow}function vt(e,t){return t===void 0?In(e):!1===Ut(e)||!e[I].j.has(t)?!1:In(Jt(e,t))}function yt(e,t){return!!e&&(t===void 0?Ut(e)||!!e[I]||hn(e)||Wn(e)||In(e):!!Ut(e)&&e[I].j.has(t))}function bt(e){return yt(e)}function xt(e){return Ut(e)?e[I].nt():hr(e)||V(e)?Array.from(e.keys()):Rt(e)?e.map((function(e,t){return t})):void t(5)}function St(e,n){return Ut(e)?e[I].it(n):hr(e)||V(e)?e.has(n):Rt(e)?n>=0&&n<e.length:void t(10)}function Ct(e){if(Ut(e))return e[I].rt();t(38)}function wt(e,t,n){return e.set(t,n),n}function Tt(e,t){t===void 0&&(t=void 0),Qe();try{return e.apply(t)}finally{$e()}}function Et(e,t,n){var r;if(typeof n.timeout==`number`){var i=Error(`WHEN_TIMEOUT`);r=setTimeout((function(){if(!o[I].isDisposed){if(o(),!n.onError)throw i;n.onError(i)}}),n.timeout)}n.name=`When`;var a=Me(`When-effect`,t),o=ct((function(t){Ie(!1,e)&&(t.dispose(),r&&clearTimeout(r),a())}),n);return o}function Dt(e,t){var n,r,i;if(t!=null&&(n=t.signal)!=null&&n.aborted)return Object.assign(Promise.reject(Error(`WHEN_ABORTED`)),{cancel:function(){return null}});var a=new Promise((function(n,a){var o,s=Et(e,n,ee({},t,{onError:a}));r=function(){s(),a(Error(`WHEN_CANCELLED`))},i=function(){s(),a(Error(`WHEN_ABORTED`))},t==null||(o=t.signal)==null||o.addEventListener==null||o.addEventListener(`abort`,i)})).finally((function(){var e;return t==null||(e=t.signal)==null||e.removeEventListener==null?void 0:e.removeEventListener(`abort`,i)}));return a.cancel=r,a}function Ot(e){return e[I]}function kt(e){return e.et!==void 0&&e.et.length>0}function At(e,t){var n=e.et||=[];return n.push(t),i((function(){var e=n.indexOf(t);e!==-1&&n.splice(e,1)}))}function jt(e,n){var r=We();try{for(var i=[].concat(e.et||[]),a=0,o=i.length;a<o&&((n=i[a](n))&&!n.type&&t(14),n);a++);return n}finally{Ge(r)}}function Mt(e){return e.ut!==void 0&&e.ut.length>0}function Nt(e,t){var n=e.ut||=[];return n.push(t),i((function(){var e=n.indexOf(t);e!==-1&&n.splice(e,1)}))}function Pt(e,t){var n=We(),r=e.ut;if(r){for(var i=0,a=(r=r.slice()).length;i<a;i++)r[i](t);Ge(n)}}function Ft(e,t,n,i){return n===void 0&&(n=`ObservableArray`),i===void 0&&(i=!1),r(),Xt((function(){var r=new sr(n,t,i,!1);d(r.j,I,r);var a=new Proxy(r.j,or);return r.v=a,e&&e.length&&r.ot(0,0,e),a}))}function A(e,t){typeof Array.prototype[e]==`function`&&(cr[e]=t(e))}function It(e){return function(){var t=this[I];t.st.reportObserved();var n=t.ft(t.j);return n[e].apply(n,arguments)}}function j(e){return function(t,n){var r=this,i=this[I];return i.st.reportObserved(),i.ft(i.j)[e]((function(e,i){return t.call(n,e,i,r)}))}}function Lt(e){return function(){var t=this,n=this[I];n.st.reportObserved();var r=n.ft(n.j),i=arguments[0];return arguments[0]=function(e,n,r){return i(e,n,r,t)},r[e].apply(r,arguments)}}function Rt(e){return s(e)&&dr(e[I])}function zt(e){return e[Symbol.toStringTag]=`MapIterator`,$t(e)}function Bt(e){return e[Symbol.toStringTag]=`SetIterator`,$t(e)}function Vt(e,t){if(g(e,I))return e;var n=t?.name??`ObservableObject`;return u(e,I,new yr(e,new Map,String(n),function(e){return e?e.defaultDecorator??Ee(e):void 0}(t))),e}function Ht(e){return vr[e]||(vr[e]={get:function(){return this[I].O(e)},set:function(t){return this[I].S(e,t)}})}function Ut(e){return!!s(e)&&br(e[I])}function Wt(e,t,n){var r;(r=e.h[pn])==null||delete r[n]}function Gt(e){return{enumerable:!1,configurable:!0,get:function(){return this[I].ct(e)},set:function(t){this[I].ht(e,t)}}}function Kt(e){nn(Tr.prototype,``+e,Gt(e))}function qt(e){if(e>Cr){for(var t=Cr;t<e+100;t++)Kt(t);Cr=e}}function M(e,t,n){return new Tr(e,t,n)}function Jt(e,n){if(typeof e==`object`&&e){if(Rt(e))return n!==void 0&&t(23),e[I].st;if(V(e))return e.st;if(hr(e)){if(n===void 0)return e.lt;var r=e.vt.get(n)||e.dt.get(n);return r||t(25,n,Yt(e)),r}if(Ut(e)){if(!n)return t(26);var i=e[I].j.get(n);return i||t(27,n,Yt(e)),i}if(hn(e)||In(e)||Wn(e))return e}else if(a(e)&&Wn(e[I]))return e[I];t(28)}function N(e,n){return e||t(29),n===void 0?hn(e)||In(e)||Wn(e)||hr(e)||V(e)?e:e[I]?e[I]:void t(24,e):N(Jt(e,n))}function Yt(e,t){var n;if(t!==void 0)n=Jt(e,t);else{if(st(e))return e.name;n=Ut(e)||hr(e)||V(e)?N(e):Jt(e)}return n.tt}function Xt(e){var t=We(),n=Le(!0);Qe();try{return e()}finally{$e(),Re(n),Ge(t)}}function Zt(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=Er.call(t);if(c!==Er.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=Qt(t),n=Qt(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 Qt(e){return Rt(e)?e.slice():p(e)||hr(e)||m(e)||V(e)?Array.from(e.entries()):e}function $t(e){return e[Symbol.iterator]=P,Object.assign(Object.create(Dr),e)}function P(){return this}Object.defineProperty(e,`__esModule`,{value:!0});var en={},F=Object.assign,tn=Object.getOwnPropertyDescriptor,nn=Object.defineProperty,rn=Object.prototype,an=[];Object.freeze(an);var on={};Object.freeze(on);var sn=typeof Proxy<`u`,cn=Object.toString(),ln=function(){},un=Object.getOwnPropertySymbols!==void 0,dn=typeof Reflect<`u`&&Reflect.ownKeys?Reflect.ownKeys:un?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames,fn=Object.getOwnPropertyDescriptors||function(e){var t={};return dn(e).forEach((function(n){t[n]=tn(e,n)})),t},pn=Symbol(`mobx-stored-annotations`),I=Symbol(`mobx administration`),mn=function(){function e(e){e===void 0&&(e=`Atom`),this.tt=void 0,this.bt=0,this.F=new Set,this.$=0,this.U=z.P,this.onBOL=void 0,this.onBUOL=void 0,this.tt=e}var t=e.prototype;return t.onBO=function(){this.onBOL&&this.onBOL.forEach((function(e){return e()}))},t.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(e){return e()}))},t.reportObserved=function(){return et(this)},t.reportChanged=function(){Qe(),tt(this),$e()},t.toString=function(){return this.tt},S(e,[{key:`isBeingObserved`,get:function(){return _(this.bt,e.pt)},set:function(t){this.bt=v(this.bt,e.pt,t)}},{key:`isPendingUnobservation`,get:function(){return _(this.bt,e.yt)},set:function(t){this.bt=v(this.bt,e.yt,t)}},{key:`diffValue`,get:function(){return+!!_(this.bt,e.wt)},set:function(t){this.bt=v(this.bt,e.wt,t===1)}}])}();mn.pt=1,mn.yt=2,mn.wt=4;var hn=f(`Atom`,mn),gn={identity:function(e,t){return e===t},structural:function(e,t){return Zt(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 Zt(e,t,1)}},_n=E({i:`override`,o:function(){return 0},s:function(){t(`'`+this.i+`' can only be used with 'makeObservable'`)},t:function(){console.warn(`'`+this.i+`' cannot be used with decorators - this is a no-op`)}}),vn=Ee(),yn={deep:!0,name:void 0,defaultDecorator:void 0,proxy:!0};Object.freeze(yn);var bn=Se(`observable`),xn=Se(`observable.ref`,{enhancer:D}),L=Se(`observable.shallow`,{enhancer:function(e,t,n){return e==null||Ut(e)||Rt(e)||hr(e)||V(e)?e:Array.isArray(e)?R.array(e,{name:n,deep:!1}):c(e)?R.object(e,void 0,{name:n,deep:!1}):p(e)?R.map(e,{name:n,deep:!1}):m(e)?R.set(e,{name:n,deep:!1}):void 0}}),Sn=Se(`observable.struct`,{enhancer:function(e,t){return Zt(e,t)?t:e}}),Cn=E(bn);F(je,Cn);var wn,R=F(je,{box:function(e,t){var n=Ae(t);return new Mn(e,k(n),n.name,!0,n.equals)},array:function(e,t){var n=Ae(t);return(!1===B.useProxies||!1===n.proxy?M:Ft)(e,k(n),n.name)},map:function(e,t){var n=Ae(t);return new mr(e,k(n),n.name)},set:function(e,t){var n=Ae(t);return new _r(e,k(n),n.name)},object:function(e,t,n){return Xt((function(){return pt(!1===B.useProxies||!1===n?.proxy?Vt({},n):function(e,t){var n;return r(),(n=(e=Vt(e,t))[I]).v??(n.v=new Proxy(e,rr))}({},n),e,t)}))},ref:E(xn),shallow:E(L),deep:Cn,struct:E(Sn)}),Tn=ve(`computed`),En=ve(`computed.struct`,{equals:gn.structural}),Dn=function(e,t){if(oe(t))return Tn.t(e,t);if(o(t))return ae(e,t,Tn);if(c(e))return E(ve(`computed`,e));var n=c(t)?t:{};return n.get=e,n.name||=e.name||``,new Pn(n)};Object.assign(Dn,Tn),Dn.struct=E(En);var On=0,kn=1,An=(wn=tn((function(){}),`name`)?.configurable)!=null&&wn,jn={value:`action`,configurable:!0,writable:!1,enumerable:!1},Mn=function(e){function t(t,n,r,i,a){var o;return r===void 0&&(r=`ObservableValue`),a===void 0&&(a=gn.default),(o=e.call(this,r)||this).enhancer=void 0,o.tt=void 0,o.equals=void 0,o.jt=!1,o.et=void 0,o.ut=void 0,o.Ot=void 0,o.dehancer=void 0,o.enhancer=n,o.tt=r,o.equals=a,o.Ot=n(t,void 0,r),o}w(t,e);var n=t.prototype;return n.dehanceValue=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.set=function(e){(e=this.xt(e))!==B.UNCHANGED&&this.gt(e)},n.xt=function(e){if(kt(this)){var t=jt(this,{object:this,type:ar,newValue:e});if(!t)return B.UNCHANGED;e=t.newValue}return e=this.enhancer(e,this.Ot,this.tt),this.equals(this.Ot,e)?B.UNCHANGED:e},n.gt=function(e){var t=this.Ot;this.Ot=e,this.reportChanged(),Mt(this)&&Pt(this,{type:ar,object:this,newValue:e,oldValue:t})},n.get=function(){return this.reportObserved(),this.dehanceValue(this.Ot)},n.St=function(e){return At(this,e)},n._t=function(e,t){return t&&e({observableKind:`value`,debugObjectName:this.tt,object:this,type:ar,newValue:this.Ot,oldValue:void 0}),Nt(this,e)},n.raw=function(){return this.Ot},n.toJSON=function(){return this.get()},n.toString=function(){return this.tt+`[`+this.Ot+`]`},n.valueOf=function(){return h(this.get())},n[Symbol.toPrimitive]=function(){return this.valueOf()},t}(mn),Nn=f(`ObservableValue`,Mn),Pn=function(){function e(e){this.I=z.P,this.D=[],this.W=null,this.F=new Set,this.q=0,this.$=0,this.U=z.L,this.G=0,this.Ot=new Ln(null),this.tt=void 0,this.At=void 0,this.bt=0,this.derivation=void 0,this.kt=void 0,this.Mt=Fn.NONE,this.Et=void 0,this.Vt=void 0,this.Rt=void 0,this.Nt=void 0,this.onBOL=void 0,this.onBUOL=void 0,e.get||t(31),this.derivation=e.get,this.tt=e.name||`ComputedValue`,e.set&&(this.kt=Me(`ComputedValue-setter`,e.set)),this.Vt=e.equals||(e.compareStructural||e.struct?gn.structural:gn.default),this.Et=e.context,this.Rt=e.requiresReaction,this.Nt=!!e.keepAlive}var n=e.prototype;return n.H=function(){(function(e){e.U===z.L&&(e.U=z.B,e.F.forEach((function(e){e.I===z.L&&(e.I=z.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),B.inBatch!==0||this.F.size!==0||this.Nt){if(et(this),Be(this)){var e=B.trackingContext;this.Nt&&!e&&(B.trackingContext=this),this.trackAndCompute()&&function(e){e.U!==z.K&&(e.U=z.K,e.F.forEach((function(t){t.I===z.B?t.I=z.K:t.I===z.L&&(e.U=z.L)})))}(this),B.trackingContext=e}}else Be(this)&&(this.Tt(),Qe(),this.Ot=this.Ct(!1),$e());var n=this.Ot;if(ze(n))throw n.cause;return n},n.set=function(e){if(this.kt){this.isRunningSetter&&t(33,this.tt),this.isRunningSetter=!0;try{this.kt.call(this.Et,e)}finally{this.isRunningSetter=!1}}else t(34,this.tt)},n.trackAndCompute=function(){var e=this.Ot,t=this.I===z.P,n=this.Ct(!0),r=t||ze(e)||ze(n)||!this.Vt(e,n);return r&&(this.Ot=n),r},n.Ct=function(e){this.isComputing=!0;var t,n=Le(!1);if(e)t=Ve(this,this.derivation,this.Et);else if(!0===B.disableErrorBoundaries)t=this.derivation.call(this.Et);else try{t=this.derivation.call(this.Et)}catch(e){t=new Ln(e)}return Re(n),this.isComputing=!1,t},n.X=function(){this.Nt||(He(this),this.Ot=void 0)},n._t=function(e,t){var n=this,r=!0,i=void 0;return ct((function(){var a=n.get();if(!r||t){var o=We();e({observableKind:`computed`,debugObjectName:n.tt,type:ar,object:n,newValue:a,oldValue:i}),Ge(o)}r=!1,i=a}))},n.Tt=function(){},n.toString=function(){return this.tt+`[`+this.derivation.toString()+`]`},n.valueOf=function(){return h(this.get())},n[Symbol.toPrimitive]=function(){return this.valueOf()},S(e,[{key:`isComputing`,get:function(){return _(this.bt,e.It)},set:function(t){this.bt=v(this.bt,e.It,t)}},{key:`isRunningSetter`,get:function(){return _(this.bt,e.Lt)},set:function(t){this.bt=v(this.bt,e.Lt,t)}},{key:`isBeingObserved`,get:function(){return _(this.bt,e.pt)},set:function(t){this.bt=v(this.bt,e.pt,t)}},{key:`isPendingUnobservation`,get:function(){return _(this.bt,e.yt)},set:function(t){this.bt=v(this.bt,e.yt,t)}},{key:`diffValue`,get:function(){return+!!_(this.bt,e.wt)},set:function(t){this.bt=v(this.bt,e.wt,t===1)}}])}();Pn.It=1,Pn.Lt=2,Pn.pt=4,Pn.yt=8,Pn.wt=16;var z,Fn,In=f(`ComputedValue`,Pn);(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_`})(z||={}),function(e){e[e.NONE=0]=`NONE`,e[e.LOG=1]=`LOG`,e[e.BREAK=2]=`BREAK`}(Fn||={});var Ln=function(e){this.cause=void 0,this.cause=e},Rn=[`mobxGuid`,`spyListeners`,`enforceActions`,`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`allowStateReads`,`disableErrorBoundaries`,`runId`,`UNCHANGED`,`useProxies`],zn=function(){this.version=6,this.UNCHANGED={},this.trackingDerivation=null,this.trackingContext=null,this.runId=0,this.mobxGuid=0,this.inBatch=0,this.pendingUnobservations=[],this.pendingReactions=[],this.isRunningReactions=!1,this.allowStateChanges=!1,this.allowStateReads=!0,this.enforceActions=!0,this.spyListeners=[],this.globalReactionErrorHandlers=[],this.computedRequiresReaction=!1,this.reactionRequiresObservable=!1,this.observableRequiresReaction=!1,this.disableErrorBoundaries=!1,this.suppressReactionErrors=!1,this.useProxies=!0,this.verifyProxies=!1,this.safeDescriptors=!0},Bn=!0,Vn=!1,B=function(){var e=n();return e.__mobxInstanceCount>0&&!e.__mobxGlobals&&(Bn=!1),e.__mobxGlobals&&e.__mobxGlobals.version!==new zn().version&&(Bn=!1),Bn?e.__mobxGlobals?(e.__mobxInstanceCount+=1,e.__mobxGlobals.UNCHANGED||(e.__mobxGlobals.UNCHANGED={}),e.__mobxGlobals):(e.__mobxInstanceCount=1,e.__mobxGlobals=new zn):(setTimeout((function(){Vn||t(35)}),1),new zn)}(),Hn=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=z.P,this.q=0,this.G=0,this.bt=0,this.Mt=Fn.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,B.pendingReactions.push(this),nt())},t.J=function(){if(!this.isDisposed){Qe(),this.isScheduled=!1;var e=B.trackingContext;if(B.trackingContext=this,Be(this)){this.isTrackPending=!0;try{this.Pt()}catch(e){this.Dt(e)}}B.trackingContext=e,$e()}},t.track=function(e){if(!this.isDisposed){Qe(),this.isRunning=!0;var t=B.trackingContext;B.trackingContext=this;var n=Ve(this,e,void 0);B.trackingContext=t,this.isRunning=!1,this.isTrackPending=!1,this.isDisposed&&He(this),ze(n)&&this.Dt(n.cause),$e()}},t.Dt=function(e){var t=this;if(this.Kt)this.Kt(e,this);else{if(B.disableErrorBoundaries)throw e;B.suppressReactionErrors||console.error(`[mobx] uncaught error in '`+this+`'`,e),B.globalReactionErrorHandlers.forEach((function(n){return n(e,t)}))}},t.dispose=function(){this.isDisposed||(this.isDisposed=!0,this.isRunning||(Qe(),He(this),$e()))},t.Z=function(e){var t=this,n=function n(){t.dispose(),e==null||e.removeEventListener==null||e.removeEventListener(`abort`,n)};return e==null||e.addEventListener==null||e.addEventListener(`abort`,n),n[I]=this,`dispose`in Symbol&&typeof Symbol.dispose==`symbol`&&(n[Symbol.dispose]=n),n},t.toString=function(){return`Reaction[`+this.tt+`]`},t.trace=function(){},S(e,[{key:`isDisposed`,get:function(){return _(this.bt,e.Wt)},set:function(t){this.bt=v(this.bt,e.Wt,t)}},{key:`isScheduled`,get:function(){return _(this.bt,e.qt)},set:function(t){this.bt=v(this.bt,e.qt,t)}},{key:`isTrackPending`,get:function(){return _(this.bt,e.Gt)},set:function(t){this.bt=v(this.bt,e.Gt,t)}},{key:`isRunning`,get:function(){return _(this.bt,e.Ht)},set:function(t){this.bt=v(this.bt,e.Ht,t)}},{key:`diffValue`,get:function(){return+!!_(this.bt,e.wt)},set:function(t){this.bt=v(this.bt,e.wt,t===1)}}])}();Hn.Wt=1,Hn.qt=2,Hn.Gt=4,Hn.Ht=8,Hn.wt=16;var Un=function(e){return e()},Wn=f(`Reaction`,Hn),Gn=le(`action`),Kn=le(`action.bound`,{bound:!0}),qn=le(`autoAction`,{autoAction:!0}),Jn=le(`autoAction.bound`,{autoAction:!0,bound:!0}),Yn=at(!1);Object.assign(Yn,Gn);var Xn=at(!0);Object.assign(Xn,qn),Yn.bound=E(Kn),Xn.bound=E(Jn);var Zn=function(e){return e()},Qn=0,$n=function(e){function t(){var n;return n=e.call(this,`FLOW_CANCELLED`)||this,Object.setPrototypeOf(n,(this instanceof t?this.constructor:void 0).prototype),n.name=`FlowCancellationError`,n}return w(t,e),t.prototype.toString=function(){return`Error: `+this.message},t}(T(Error)),er=me(`flow`),tr=me(`flow.bound`,{bound:!0}),nr=Object.assign((function(e,t){if(oe(t))return er.t(e,t);if(o(t))return ae(e,t,er);var n=e,r=n.name||`<unnamed flow>`,i=function(){var e,t=this,i=arguments,o=++Qn,s=Yn(r+` - runid: `+o+` - init`,n).apply(t,i),c=void 0,l=new Promise((function(t,n){function i(e){var t;c=void 0;try{t=Yn(r+` - runid: `+o+` - yield `+ d++,s.next).call(s,e)}catch(e){return n(e)}u(t)}function l(e){var t;c=void 0;try{t=Yn(r+` - runid: `+o+` - yield `+ d++,s.throw).call(s,e)}catch(e){return n(e)}u(t)}function u(e){if(!a(e?.then))return e.done?t(e.value):(c=Promise.resolve(e.value)).then(i,l);e.then(u,n)}var d=0;e=n,i(void 0)}));return l.cancel=Yn(r+` - runid: `+o+` - cancel`,(function(){try{c&&gt(c);var t=s.return(void 0),n=Promise.resolve(t.value);n.then(ln,ln),gt(n),e(new $n)}catch(t){e(t)}})),l};return i.isMobXFlow=!0,i}),er);nr.bound=E(tr);var rr={has:function(e,t){return Ot(e).it(t)},get:function(e,t){return Ot(e).ct(t)},set:function(e,t,n){var r;return!!o(t)&&((r=Ot(e).ht(t,n,!0))==null||r)},deleteProperty:function(e,t){var n;return!!o(t)&&((n=Ot(e).Ut(t,!0))==null||n)},defineProperty:function(e,t,n){var r;return(r=Ot(e).l(t,n))==null||r},ownKeys:function(e){return Ot(e).rt()},preventExtensions:function(){t(13)}},ir=Symbol(`mobx-keys`),ar=`update`,or={get:function(e,t){var n=e[I];return t===I?n:t===`length`?n.Ft():typeof t!=`string`||isNaN(t)?g(cr,t)?cr[t]:e[t]:n.ct(parseInt(t))},set:function(e,t,n){var r=e[I];return t===`length`&&r.Xt(n),typeof t==`symbol`||isNaN(t)?e[t]=n:r.ht(parseInt(t),n),!0},preventExtensions:function(){t(15)}},sr=function(){function e(e,t,n,r){e===void 0&&(e=`ObservableArray`),this.zt=void 0,this.$t=void 0,this.st=void 0,this.j=[],this.et=void 0,this.ut=void 0,this.Jt=void 0,this.dehancer=void 0,this.v=void 0,this.Yt=0,this.zt=n,this.$t=r,this.st=new mn(e),this.Jt=function(e,n){return t(e,n,`ObservableArray[..]`)}}var n=e.prototype;return n.Qt=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.ft=function(e){return this.dehancer!==void 0&&e.length>0?e.map(this.dehancer):e},n.St=function(e){return At(this,e)},n._t=function(e,t){return t===void 0&&(t=!1),t&&e({observableKind:`array`,object:this.v,debugObjectName:this.st.tt,type:`splice`,index:0,added:this.j.slice(),addedCount:this.j.length,removed:[],removedCount:0}),Nt(this,e)},n.Ft=function(){return this.st.reportObserved(),this.j.length},n.Xt=function(e){(typeof e!=`number`||isNaN(e)||e<0)&&t(`Out of range: `+e);var n=this.j.length;if(e!==n)if(e>n){for(var r=Array(e-n),i=0;i<e-n;i++)r[i]=void 0;this.ot(n,0,r)}else this.ot(e,n-e)},n.Zt=function(e,n){e!==this.Yt&&t(16),this.Yt+=n,this.$t&&n>0&&qt(e+n+1)},n.ot=function(e,t,n){var r=this,i=this.j.length;if(e===void 0?e=0:e>i?e=i:e<0&&(e=Math.max(0,i+e)),t=arguments.length===1?i-e:t==null?0:Math.max(0,Math.min(t,i-e)),n===void 0&&(n=an),kt(this)){var a=jt(this,{object:this.v,type:`splice`,index:e,removedCount:t,added:n});if(!a)return an;t=a.removedCount,n=a.added}if(n=n.length===0?n:n.map((function(e){return r.Jt(e,void 0)})),this.$t){var o=n.length-t;this.Zt(i,o)}var s=this.tn(e,t,n);return t===0&&n.length===0||this.nn(e,n,s),this.ft(s)},n.tn=function(e,t,n){var r;if(n.length<1e4)return(r=this.j).splice.apply(r,[e,t].concat(n));var i=this.j.slice(e,e+t),a=this.j.slice(e+t);this.j.length+=n.length-t;for(var o=0;o<n.length;o++)this.j[e+o]=n[o];for(var s=0;s<a.length;s++)this.j[e+n.length+s]=a[s];return i},n.in=function(e,t,n){var r=!this.zt&&!1,i=Mt(this),a=i||r?{observableKind:`array`,object:this.v,type:ar,debugObjectName:this.st.tt,index:e,newValue:t,oldValue:n}:null;this.st.reportChanged(),i&&Pt(this,a)},n.nn=function(e,t,n){var r=!this.zt&&!1,i=Mt(this),a=i||r?{observableKind:`array`,object:this.v,debugObjectName:this.st.tt,type:`splice`,index:e,removed:n,added:t,removedCount:n.length,addedCount:t.length}:null;this.st.reportChanged(),i&&Pt(this,a)},n.ct=function(e){if(!(this.$t&&e>=this.j.length))return this.st.reportObserved(),this.Qt(this.j[e]);console.warn(`[mobx] Out of bounds read: `+e)},n.ht=function(e,n){var r=this.j;if(this.$t&&e>r.length&&t(17,e,r.length),e<r.length){var i=r[e];if(kt(this)){var a=jt(this,{type:ar,object:this.v,index:e,newValue:n});if(!a)return;n=a.newValue}(n=this.Jt(n,i))!==i&&(r[e]=n,this.in(e,n,i))}else{for(var o=Array(e+1-r.length),s=0;s<o.length-1;s++)o[s]=void 0;o[o.length-1]=n,this.ot(r.length,0,o)}},e}(),cr={clear:function(){return this.splice(0)},replace:function(e){var t=this[I];return t.ot(0,t.j.length,e)},toJSON:function(){return this.slice()},splice:function(e,t){var n=[...arguments].slice(2),r=this[I];switch(arguments.length){case 0:return[];case 1:return r.ot(e);case 2:return r.ot(e,t)}return r.ot(e,t,n)},spliceWithArray:function(e,t,n){return this[I].ot(e,t,n)},push:function(){for(var e=this[I],t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];return e.ot(e.j.length,0,n),e.j.length},pop:function(){return this.splice(Math.max(this[I].j.length-1,0),1)[0]},shift:function(){return this.splice(0,1)[0]},unshift:function(){for(var e=this[I],t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];return e.ot(0,0,n),e.j.length},reverse:function(){return B.trackingDerivation&&t(37,`reverse`),this.replace(this.slice().reverse()),this},sort:function(){B.trackingDerivation&&t(37,`sort`);var e=this.slice();return e.sort.apply(e,arguments),this.replace(e),this},remove:function(e){var t=this[I],n=t.ft(t.j).indexOf(e);return n>-1&&(this.splice(n,1),!0)}};A(`at`,It),A(`concat`,It),A(`flat`,It),A(`includes`,It),A(`indexOf`,It),A(`join`,It),A(`lastIndexOf`,It),A(`slice`,It),A(`toString`,It),A(`toLocaleString`,It),A(`toSorted`,It),A(`toSpliced`,It),A(`with`,It),A(`every`,j),A(`filter`,j),A(`find`,j),A(`findIndex`,j),A(`findLast`,j),A(`findLastIndex`,j),A(`flatMap`,j),A(`forEach`,j),A(`map`,j),A(`some`,j),A(`toReversed`,j),A(`reduce`,Lt),A(`reduceRight`,Lt);var lr,ur,dr=f(`ObservableArrayAdministration`,sr),fr={},pr=`add`,mr=function(){function e(e,n,r){var i=this;n===void 0&&(n=ce),r===void 0&&(r=`ObservableMap`),this.Jt=void 0,this.tt=void 0,this[I]=fr,this.vt=void 0,this.dt=void 0,this.lt=void 0,this.et=void 0,this.ut=void 0,this.dehancer=void 0,this.Jt=n,this.tt=r,a(Map)||t(18),Xt((function(){i.lt=se(`ObservableMap.keys()`),i.vt=new Map,i.dt=new Map,e&&i.merge(e)}))}var n=e.prototype;return n.it=function(e){return this.vt.has(e)},n.has=function(e){var t=this;if(!B.trackingDerivation)return this.it(e);var n=this.dt.get(e);if(!n){var r=n=new Mn(this.it(e),D,`ObservableMap.key?`,!1);this.dt.set(e,r),dt(r,(function(){return t.dt.delete(e)}))}return n.get()},n.set=function(e,t){var n=this.it(e);if(kt(this)){var r=jt(this,{type:n?ar:pr,object:this,newValue:t,name:e});if(!r)return this;t=r.newValue}return n?this.rn(e,t):this.en(e,t),this},n.delete=function(e){var t=this;if(kt(this)&&!jt(this,{type:`delete`,object:this,name:e}))return!1;if(this.it(e)){var n=Mt(this),r=n?{observableKind:`map`,debugObjectName:this.tt,type:`delete`,object:this,oldValue:this.vt.get(e).Ot,name:e}:null;return Tt((function(){var n;t.lt.reportChanged(),(n=t.dt.get(e))==null||n.gt(!1),t.vt.get(e).gt(void 0),t.vt.delete(e)})),n&&Pt(this,r),!0}return!1},n.rn=function(e,t){var n=this.vt.get(e);if((t=n.xt(t))!==B.UNCHANGED){var r=Mt(this),i=r?{observableKind:`map`,debugObjectName:this.tt,type:ar,object:this,oldValue:n.Ot,name:e,newValue:t}:null;n.gt(t),r&&Pt(this,i)}},n.en=function(e,t){var n=this;Tt((function(){var r,i=new Mn(t,n.Jt,`ObservableMap.key`,!1);n.vt.set(e,i),t=i.Ot,(r=n.dt.get(e))==null||r.gt(!0),n.lt.reportChanged()}));var r=Mt(this);r&&Pt(this,r?{observableKind:`map`,debugObjectName:this.tt,type:pr,object:this,name:e,newValue:t}:null)},n.get=function(e){return this.has(e)?this.Qt(this.vt.get(e).get()):this.Qt(void 0)},n.Qt=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.keys=function(){return this.lt.reportObserved(),this.vt.keys()},n.values=function(){var e=this,t=this.keys();return zt({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 zt({next:function(){var n=t.next(),r=n.done,i=n.value;return{done:r,value:r?void 0:[i,e.get(i)]}}})},n[Symbol.iterator]=function(){return this.entries()},n.forEach=function(e,t){for(var n,r=C(this);!(n=r()).done;){var i=n.value;e.call(t,i[1],i[0],this)}},n.merge=function(e){var n=this;return hr(e)&&(e=new Map(e)),Tt((function(){var r,i;c(e)?function(e){var t=Object.keys(e);if(!un)return t;var n=Object.getOwnPropertySymbols(e);return n.length?[].concat(t,n.filter((function(t){return rn.propertyIsEnumerable.call(e,t)}))):t}(e).forEach((function(t){return n.set(t,e[t])})):Array.isArray(e)?e.forEach((function(e){return n.set(e[0],e[1])})):p(e)?(r=Object.getPrototypeOf(e),i=Object.getPrototypeOf(r),Object.getPrototypeOf(i)!==null&&t(19,e),e.forEach((function(e,t){return n.set(t,e)}))):e!=null&&t(20,e)})),this},n.clear=function(){var e=this;Tt((function(){Ue((function(){for(var t,n=C(e.keys());!(t=n()).done;)e.delete(t.value)}))}))},n.replace=function(e){var n=this;return Tt((function(){for(var r,i=function(e){if(p(e)||hr(e))return e;if(Array.isArray(e))return new Map(e);if(c(e)){var n=new Map;for(var r in e)n.set(r,e[r]);return n}return t(21,e)}(e),a=new Map,o=!1,s=C(n.vt.keys());!(r=s()).done;){var l=r.value;if(!i.has(l))if(n.delete(l))o=!0;else{var u=n.vt.get(l);a.set(l,u)}}for(var d,f=C(i.entries());!(d=f()).done;){var m=d.value,h=m[0],g=m[1],_=n.vt.has(h);if(n.set(h,g),n.vt.has(h)){var v=n.vt.get(h);a.set(h,v),_||(o=!0)}}if(!o)if(n.vt.size!==a.size)n.lt.reportChanged();else for(var y=n.vt.keys(),b=a.keys(),x=y.next(),S=b.next();!x.done;){if(x.value!==S.value){n.lt.reportChanged();break}x=y.next(),S=b.next()}n.vt=a})),this},n.toString=function(){return`[object ObservableMap]`},n.toJSON=function(){return Array.from(this)},n._t=function(e){return Nt(this,e)},n.St=function(e){return At(this,e)},S(e,[{key:`size`,get:function(){return this.lt.reportObserved(),this.vt.size}},{key:Symbol.toStringTag,get:function(){return`Map`}}])}(),hr=f(`ObservableMap`,mr),gr={},_r=function(){function e(e,n,r){var i=this;n===void 0&&(n=ce),r===void 0&&(r=`ObservableSet`),this.tt=void 0,this[I]=gr,this.vt=new Set,this.st=void 0,this.ut=void 0,this.et=void 0,this.dehancer=void 0,this.Jt=void 0,this.tt=r,a(Set)||t(22),this.Jt=function(e,t){return n(e,t,r)},Xt((function(){i.st=se(i.tt),e&&i.replace(e)}))}var n=e.prototype;return n.Qt=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.clear=function(){var e=this;Tt((function(){Ue((function(){for(var t,n=C(e.vt.values());!(t=n()).done;)e.delete(t.value)}))}))},n.forEach=function(e,t){for(var n,r=C(this);!(n=r()).done;){var i=n.value;e.call(t,i,i,this)}},n.add=function(e){var t=this;if(kt(this)){var n=jt(this,{type:pr,object:this,newValue:e});if(!n)return this;e=n.newValue}if(!this.has(e)){Tt((function(){t.vt.add(t.Jt(e,void 0)),t.st.reportChanged()}));var r=Mt(this);r&&Pt(this,r?{observableKind:`set`,debugObjectName:this.tt,type:pr,object:this,newValue:e}:null)}return this},n.delete=function(e){var t=this;if(kt(this)&&!jt(this,{type:`delete`,object:this,oldValue:e}))return!1;if(this.has(e)){var n=Mt(this),r=n?{observableKind:`set`,debugObjectName:this.tt,type:`delete`,object:this,oldValue:e}:null;return Tt((function(){t.st.reportChanged(),t.vt.delete(e)})),n&&Pt(this,r),!0}return!1},n.has=function(e){return this.st.reportObserved(),this.vt.has(this.Qt(e))},n.entries=function(){var e=this.values();return Bt({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 Bt({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)&&!V(e)?e.intersection(this):new Set(this).intersection(e)},n.union=function(e){return m(e)&&!V(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)&&!V(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)&&!V(e)?e.isDisjointFrom(this):new Set(this).isDisjointFrom(e)},n.replace=function(e){var n=this;return V(e)&&(e=new Set(e)),Tt((function(){Array.isArray(e)||m(e)?(n.clear(),e.forEach((function(e){return n.add(e)}))):e!=null&&t(`Cannot initialize set from `+e)})),this},n._t=function(e){return Nt(this,e)},n.St=function(e){return At(this,e)},n.toJSON=function(){return Array.from(this)},n.toString=function(){return`[object ObservableSet]`},n[Symbol.iterator]=function(){return this.values()},S(e,[{key:`size`,get:function(){return this.st.reportObserved(),this.vt.size}},{key:Symbol.toStringTag,get:function(){return`Set`}}])}(),V=f(`ObservableSet`,_r),vr=Object.create(null),yr=function(){function e(e,t,n,r){t===void 0&&(t=new Map),r===void 0&&(r=vn),this.h=void 0,this.j=void 0,this.tt=void 0,this.un=void 0,this.lt=void 0,this.ut=void 0,this.et=void 0,this.v=void 0,this.p=void 0,this.on=void 0,this.sn=void 0,this.h=e,this.j=t,this.tt=n,this.un=r,this.lt=new mn(`ObservableObject.keys`),this.p=c(this.h)}var n=e.prototype;return n.O=function(e){return this.j.get(e).get()},n.S=function(e,t){var n=this.j.get(e);if(n instanceof Pn)return n.set(t),!0;if(kt(this)){var r=jt(this,{type:ar,object:this.v||this.h,name:e,newValue:t});if(!r)return null;t=r.newValue}if((t=n.xt(t))!==B.UNCHANGED){var i=Mt(this),a=i?{type:ar,observableKind:`object`,debugObjectName:this.tt,object:this.v||this.h,oldValue:n.Ot,name:e,newValue:t}:null;n.gt(t),i&&Pt(this,a)}return!0},n.ct=function(e){return B.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(!B.trackingDerivation)return e in this.h;this.sn||=new Map;var t=this.sn.get(e);return t||(t=new Mn(e in this.h,D,`ObservableObject.key?`,!1),this.sn.set(e,t)),t.get()},n.o=function(e,n){if(!0===n&&(n=this.un),!1!==n){if(!(e in this.h)){var r;if((r=this.h[pn])!=null&&r[e])return;t(1,n.i,this.tt+`.`+e.toString())}for(var i=this.h;i&&i!==rn;){var a=tn(i,e);if(a){var o=n.o(this,e,a,i);if(o===0)return;if(o===1)break}i=Object.getPrototypeOf(i)}Wt(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&&Wt(this,0,e),i},n.l=function(e,t,n){n===void 0&&(n=!1);try{Qe();var r=this.Ut(e);if(!r)return r;if(kt(this)){var i=jt(this,{object:this.v||this.h,name:e,type:pr,newValue:t.value});if(!i)return null;var a=i.newValue;t.value!==a&&(t=ee({},t,{value:a}))}if(n){if(!Reflect.defineProperty(this.h,e,t))return!1}else nn(this.h,e,t);this.fn(e,t.value)}finally{$e()}return!0},n.g=function(e,t,n,r){r===void 0&&(r=!1);try{Qe();var i=this.Ut(e);if(!i)return i;if(kt(this)){var a=jt(this,{object:this.v||this.h,name:e,type:pr,newValue:t});if(!a)return null;t=a.newValue}var o=Ht(e),s={configurable:!B.safeDescriptors||this.p,enumerable:!0,get:o.get,set:o.set};if(r){if(!Reflect.defineProperty(this.h,e,s))return!1}else nn(this.h,e,s);var c=new Mn(t,n,`ObservableObject.key`,!1);this.j.set(e,c),this.fn(e,c.Ot)}finally{$e()}return!0},n.m=function(e,t,n){n===void 0&&(n=!1);try{Qe();var r=this.Ut(e);if(!r)return r;if(kt(this)&&!jt(this,{object:this.v||this.h,name:e,type:pr,newValue:void 0}))return null;t.name||=`ObservableObject.key`,t.context=this.v||this.h;var i=Ht(e),a={configurable:!B.safeDescriptors||this.p,enumerable:!1,get:i.get,set:i.set};if(n){if(!Reflect.defineProperty(this.h,e,a))return!1}else nn(this.h,e,a);this.j.set(e,new Pn(t)),this.fn(e,void 0)}finally{$e()}return!0},n.Ut=function(e,t){if(t===void 0&&(t=!1),!g(this.h,e))return!0;if(kt(this)&&!jt(this,{object:this.v||this.h,name:e,type:`remove`}))return null;try{var n;Qe();var r=Mt(this),i=this.j.get(e),a=void 0;if(!i&&r&&(a=tn(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 Mn&&(a=i.Ot),tt(i)),this.lt.reportChanged(),(n=this.sn)==null||(n=n.get(e))==null||n.set(e in this.h),r&&r&&Pt(this,{type:`remove`,observableKind:`object`,object:this.v||this.h,debugObjectName:this.tt,oldValue:a,name:e})}finally{$e()}return!0},n._t=function(e){return Nt(this,e)},n.St=function(e){return At(this,e)},n.fn=function(e,t){var n,r=Mt(this);r&&r&&Pt(this,r?{type:pr,observableKind:`object`,debugObjectName:this.tt,object:this.v||this.h,name:e,newValue:t}:null),(n=this.sn)==null||(n=n.get(e))==null||n.set(!0),this.lt.reportChanged()},n.rt=function(){return this.lt.reportObserved(),dn(this.h)},n.nt=function(){return this.lt.reportObserved(),Object.keys(this.h)},e}(),br=f(`ObservableObjectAdministration`,yr),xr=Gt(0),Sr=function(){var e=!1,t={};return Object.defineProperty(t,`0`,{set:function(){e=!0}}),Object.create(t)[0]=1,!1===e}(),Cr=0,wr=function(){};lr=wr,ur=Array.prototype,Object.setPrototypeOf?Object.setPrototypeOf(lr.prototype,ur):lr.prototype.__proto__===void 0?lr.prototype=ur:lr.prototype.__proto__=ur;var Tr=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,Xt((function(){var e=new sr(r,n,i,!0);e.v=a,d(a,I,e),t&&t.length&&a.spliceWithArray(0,0,t),Sr&&Object.defineProperty(a,`0`,xr)})),a}w(t,e);var n=t.prototype;return n.concat=function(){this[I].st.reportObserved();var e=[...arguments];return Array.prototype.concat.apply(this.slice(),e.map((function(e){return Rt(e)?e.slice():e})))},n[Symbol.iterator]=function(){var e=this,t=0;return $t({next:function(){return t<e.length?{value:e[t++],done:!1}:{done:!0,value:void 0}}})},S(t,[{key:`length`,get:function(){return this[I].Ft()},set:function(e){this[I].Xt(e)}},{key:Symbol.toStringTag,get:function(){return`Array`}}])}(wr);Object.entries(cr).forEach((function(e){var t=e[0];t!==`concat`&&u(Tr.prototype,t,e[1])})),qt(1e3);var Er=rn.toString,Dr=n().Iterator?.prototype||{};[`Symbol`,`Map`,`Set`].forEach((function(e){n()[e]===void 0&&t(`MobX requires global '`+e+`' to be available or polyfilled`)})),typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__==`object`&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:it,extras:{getDebugName:Yt},$mobx:I}),e.$mobx=I,e.FlowCancellationError=$n,e.ObservableMap=mr,e.ObservableSet=_r,e.Reaction=Hn,e._allowStateChanges=Ie,e._allowStateChangesInsideComputed=ot,e._allowStateReadsEnd=qe,e._allowStateReadsStart=Ke,e._autoAction=Xn,e._endAction=Fe,e._getAdministration=N,e._getGlobalState=function(){return B},e._interceptReads=function(e,t,n){var r;return hr(e)||Rt(e)||Nn(e)?r=N(e):Ut(e)&&(r=N(e,t)),r.dehancer=typeof t==`function`?t:n,function(){r.dehancer=void 0}},e._isComputingDerivation=function(){return B.trackingDerivation!==null},e._resetGlobalState=function(){var e=new zn;for(var t in e)Rn.indexOf(t)===-1&&(B[t]=e[t]);B.allowStateChanges=!B.enforceActions},e._startAction=Pe,e.action=Yn,e.autorun=ct,e.comparer=gn,e.computed=Dn,e.configure=function(e){!0===e.isolateGlobalState&&function(){if((B.pendingReactions.length||B.inBatch||B.isRunningReactions)&&t(36),Vn=!0,Bn){var e=n();--e.__mobxInstanceCount==0&&(e.__mobxGlobals=void 0),B=new zn}}();var r,i,a=e.useProxies,o=e.enforceActions;if(a!==void 0&&(B.useProxies=a===`always`||a!==`never`&&typeof Proxy<`u`),a===`ifavailable`&&(B.verifyProxies=!0),o!==void 0){var s=o===`always`?`always`:o===`observed`;B.enforceActions=s,B.allowStateChanges=!0!==s&&s!==`always`}[`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`disableErrorBoundaries`,`safeDescriptors`].forEach((function(t){t in e&&(B[t]=!!e[t])})),B.allowStateReads=!B.observableRequiresReaction,e.reactionScheduler&&(r=e.reactionScheduler,i=Un,Un=function(e){return r((function(){return i(e)}))})},e.createAtom=se,e.defineProperty=function(e,n,r){if(Ut(e))return e[I].l(n,r);t(39)},e.entries=function(e){return Ut(e)?xt(e).map((function(t){return[t,e[t]]})):hr(e)?xt(e).map((function(t){return[t,e.get(t)]})):V(e)?Array.from(e.entries()):Rt(e)?e.map((function(e,t){return[t,e]})):void t(7)},e.extendObservable=pt,e.flow=nr,e.flowResult=function(e){return e},e.get=function(e,n){if(St(e,n))return Ut(e)?e[I].ct(n):hr(e)?e.get(n):Rt(e)?e[n]:void t(11)},e.getAtom=Jt,e.getDebugName=Yt,e.getDependencyTree=function(e,t){return mt(Jt(e,t))},e.getObserverTree=function(e,t){return ht(Jt(e,t))},e.has=St,e.intercept=function(e,t,n){return a(n)?function(e,t,n){return N(e,t).St(n)}(e,t,n):function(e,t){return N(e).St(t)}(e,t)},e.isAction=st,e.isBoxedObservable=Nn,e.isComputed=function(e){return vt(e)},e.isComputedProp=function(e,t){return vt(e,t)},e.isFlow=_t,e.isFlowCancellationError=function(e){return e instanceof $n},e.isObservable=bt,e.isObservableArray=Rt,e.isObservableMap=hr,e.isObservableObject=Ut,e.isObservableProp=function(e,t){return yt(e,t)},e.isObservableSet=V,e.keys=xt,e.makeAutoObservable=function(e,t,n){return c(e)?pt(e,e,t,n):(Xt((function(){var r=Vt(e,n)[I];if(!e[ir]){var i=Object.getPrototypeOf(e),a=new Set([].concat(dn(e),dn(i)));a.delete(`constructor`),a.delete(I),u(i,ir,a)}e[ir].forEach((function(e){return r.o(e,!t||!(e in t)||t[e])}))})),e)},e.makeObservable=function(e,t,n){return Xt((function(){var r=Vt(e,n)[I];t??=function(e){return g(e,pn)||u(e,pn,ee({},e[pn])),e[pn]}(e),dn(t).forEach((function(e){return r.o(e,t[e])}))})),e},e.observable=R,e.observe=function(e,t,n,r){return a(n)?function(e,t,n,r){return N(e,t)._t(n,r)}(e,t,n,r):function(e,t,n){return N(e)._t(t,n)}(e,t,n)},e.onBecomeObserved=ut,e.onBecomeUnobserved=dt,e.onReactionError=function(e){return B.globalReactionErrorHandlers.push(e),function(){var t=B.globalReactionErrorHandlers.indexOf(e);t>=0&&B.globalReactionErrorHandlers.splice(t,1)}},e.override=_n,e.ownKeys=Ct,e.reaction=function(e,t,n){function r(){if(p=!1,!h.isDisposed){var t=!1,r=s;h.track((function(){var n=Ie(!1,(function(){return e(h)}));t=f||!m(s,n),s=n})),(f&&n.fireImmediately||!f&&t)&&l(s,r,h),f=!1}}var i;n===void 0&&(n=on);var a,o,s,c=n.name??`Reaction`,l=Yn(c,n.onError?(a=n.onError,o=t,function(){try{return o.apply(this,arguments)}catch(e){a.call(this,e)}}):t),u=!n.scheduler&&!n.delay,d=lt(n),f=!0,p=!1,m=n.compareStructural?gn.structural:n.equals||gn.default,h=new Hn(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){Ut(e)?e[I].Ut(n):hr(e)||V(e)?e.delete(n):Rt(e)?(typeof n!=`number`&&(n=parseInt(n,10)),e.splice(n,1)):t(9)},e.runInAction=ot,e.set=function e(n,r,i){if(arguments.length!==2||V(n))Ut(n)?n[I].ht(r,i):hr(n)?n.set(r,i):V(n)?n.add(r):Rt(n)?(typeof r!=`number`&&(r=parseInt(r,10)),r<0&&t(`Invalid index: '`+r+`'`),Qe(),r>=n.length&&(n.length=r+1),n[r]=i,$e()):t(8);else{Qe();var a=r;try{for(var o in a)e(n,o,a[o])}finally{$e()}}},e.spy=it,e.toJS=function(e){return function e(t,n){if(typeof t!=`object`||!t||t instanceof Date||!bt(t))return t;if(Nn(t)||In(t))return e(t.get(),n);if(n.has(t))return n.get(t);if(Rt(t)){var r=wt(n,t,Array(t.length));return t.forEach((function(t,i){r[i]=e(t,n)})),r}if(V(t)){var i=wt(n,t,new Set);return t.forEach((function(t){i.add(e(t,n))})),i}if(hr(t)){var a=wt(n,t,new Map);return t.forEach((function(t,r){a.set(r,e(t,n))})),a}var o=wt(n,t,{});return Ct(t).forEach((function(r){rn.propertyIsEnumerable.call(t,r)&&(o[r]=e(t[r],n))})),o}(e,new Map)},e.trace=function(){},e.transaction=Tt,e.untracked=Ue,e.values=function(e){return Ut(e)?xt(e).map((function(t){return e[t]})):hr(e)?xt(e).map((function(t){return e.get(t)})):V(e)?Array.from(e.values()):Rt(e)?e.slice():void t(6)},e.when=function(e,t,n){return arguments.length===1||t&&typeof t==`object`?Dt(e,t):Et(e,t,n||{})}})),MT=fe((e=>{Object.defineProperty(e,`__esModule`,{value:!0});var t={0:`Invalid value for configuration 'enforceActions', expected 'never', 'always' or 'observed'`,1:function(e,t){return`Cannot apply '`+e+`' to '`+t.toString()+`': Field not found.`},5:`'keys()' can only be used on observable objects, arrays, sets and maps`,6:`'values()' can only be used on observable objects, arrays, sets and maps`,7:`'entries()' can only be used on observable objects, arrays and maps`,8:`'set()' can only be used on observable objects, arrays and maps`,9:`'remove()' can only be used on observable objects, arrays and maps`,10:`'has()' can only be used on observable objects, arrays and maps`,11:`'get()' can only be used on observable objects, arrays and maps`,12:`Invalid annotation`,13:`Dynamic observable objects cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)`,14:`Intercept handlers should return nothing or a change object`,15:`Observable arrays cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)`,16:`Modification exception: the internal structure of an observable array was changed.`,17:function(e,t){return`[mobx.array] Index out of bounds, `+e+` is larger than `+t},18:`mobx.map requires Map polyfill for the current browser. Check babel-polyfill or core-js/es6/map.js`,19:function(e){return`Cannot initialize from classes that inherit from Map: `+e.constructor.name},20:function(e){return`Cannot initialize map from `+e},21:function(e){return`Cannot convert to map from '`+e+`'`},22:`mobx.set requires Set polyfill for the current browser. Check babel-polyfill or core-js/es6/set.js`,23:`It is not possible to get index atoms from arrays`,24:function(e){return`Cannot obtain administration from `+e},25:function(e,t){return`the entry '`+e+`' does not exist in the observable map '`+t+`'`},26:`please specify a property`,27:function(e,t){return`no observable property '`+e.toString()+`' found on the observable object '`+t+`'`},28:function(e){return`Cannot obtain atom from `+e},29:`Expecting some object`,30:`invalid action stack. did you forget to finish an action?`,31:`missing option for computed: get`,32:function(e,t){return`Cycle detected in computation `+e+`: `+t},33:function(e){return`The setter of computed value '`+e+`' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?`},34:function(e){return`[ComputedValue '`+e+`'] It is not possible to assign a new value to a computed value.`},35:"There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`",36:`isolateGlobalState should be called before MobX is running any reactions`,37:function(e){return"[mobx] `observableArray."+e+"()` mutates the array in-place, which is not allowed inside a derivation. Use `array.slice()."+e+"()` instead"},38:`'ownKeys()' can only be used on observable objects`,39:`'defineProperty()' can only be used on observable objects`};function n(e){var n=[...arguments].slice(1),r=typeof e==`string`?e:t[e];throw typeof r==`function`&&(r=r.apply(null,n)),Error(`[MobX] `+r)}var r={};function i(){return typeof globalThis<`u`?globalThis:typeof window<`u`?window:typeof global<`u`?global:typeof self<`u`?self:r}var a=Object.assign,o=Object.getOwnPropertyDescriptor,s=Object.defineProperty,c=Object.prototype,l=[];Object.freeze(l);var u={};Object.freeze(u);var d=typeof Proxy<`u`,f=Object.toString();function p(){d||n("`Proxy` objects are not available in the current environment. Please configure MobX to enable a fallback implementation.`")}function m(e){L.verifyProxies&&n(`MobX is currently configured to be able to run in ES5 mode, but in ES5 MobX won't be able to `+e)}function h(){return++L.mobxGuid}function g(e){var t=!1;return function(){if(!t)return t=!0,e.apply(this,arguments)}}var _=function(){};function v(e){return typeof e==`function`}function y(e){switch(typeof e){case`string`:case`symbol`:case`number`:return!0}return!1}function b(e){return typeof e==`object`&&!!e}function x(e){if(!b(e))return!1;var t=Object.getPrototypeOf(e);if(t==null)return!0;var n=Object.hasOwnProperty.call(t,`constructor`)&&t.constructor;return typeof n==`function`&&n.toString()===f}function S(e){var t=e?.constructor;return t?t.name===`GeneratorFunction`||t.displayName===`GeneratorFunction`:!1}function C(e,t,n){s(e,t,{enumerable:!1,writable:!0,configurable:!0,value:n})}function ee(e,t,n){s(e,t,{enumerable:!1,writable:!1,configurable:!0,value:n})}function te(e,t){var n=`isMobX`+e;return t.prototype[n]=!0,function(e){return b(e)&&e[n]===!0}}function w(e){return e!=null&&Object.prototype.toString.call(e)===`[object Map]`}function ne(e){return Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(e)))===null}function re(e){return e!=null&&Object.prototype.toString.call(e)===`[object Set]`}var ie=Object.getOwnPropertySymbols!==void 0;function T(e){var t=Object.keys(e);if(!ie)return t;var n=Object.getOwnPropertySymbols(e);return n.length?[].concat(t,n.filter(function(t){return c.propertyIsEnumerable.call(e,t)})):t}var E=typeof Reflect<`u`&&Reflect.ownKeys?Reflect.ownKeys:ie?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames;function ae(e){return typeof e==`string`?e:typeof e==`symbol`?e.toString():new String(e).toString()}function oe(e){return e===null?null:typeof e==`object`?``+e:e}function se(e,t){return c.hasOwnProperty.call(e,t)}var ce=Object.getOwnPropertyDescriptors||function(e){var t={};return E(e).forEach(function(n){t[n]=o(e,n)}),t};function D(e,t){return!!(e&t)}function le(e,t,n){return n?e|=t:e&=~t,e}function ue(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function de(e,t,n){if(ve())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var i=new(e.bind.apply(e,r));return n&&ye(i,n.prototype),i}function fe(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,xe(r.key),r)}}function pe(e,t,n){return t&&fe(e.prototype,t),n&&fe(e,n),Object.defineProperty(e,`prototype`,{writable:!1}),e}function me(e,t){var n=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=Se(e))||t&&e&&typeof e.length==`number`){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw TypeError(`Invalid attempt to iterate non-iterable instance.
146
+ '`+s.i+`' can only be used on properties with a function value.`)}function pe(e,t,n,r,i){var a,o,s;i===void 0&&(i=B.safeDescriptors);var c=r.value;return(a=t.u)!=null&&a.bound&&(c=c.bind(e.v??e.h)),{value:Me(t.u?.name??n.toString(),c,(o=t.u?.autoAction)!=null&&o,(s=t.u)!=null&&s.bound?e.v??e.h:void 0),configurable:!i||e.p,enumerable:!1,writable:!i}}function me(e,t){return{i:e,u:t,o:O,s:he,t:ge}}function O(e,t,n,r){var i;return r===e.h?this.s(e,t,n,!1)===null?0:2:(i=this.u)!=null&&i.bound&&(!g(e.h,t)||!_t(e.h[t]))&&this.s(e,t,n,!1)===null?0:_t(n.value)?1:(nn(r,t,_e(e,0,0,n,!1,!1)),2)}function he(e,t,n,r){var i=_e(e,0,0,n,this.u?.bound);return e.l(t,i,r)}function ge(e,t){var n,r=t.name,i=t.addInitializer;return _t(e)||(e=nr(e)),(n=this.u)!=null&&n.bound&&i((function(){var e=this[r].bind(this);e.isMobXFlow=!0,this[r]=e})),e}function _e(e,t,n,r,i,a){a===void 0&&(a=B.safeDescriptors);var o=r.value;return _t(o)||(o=nr(o)),i&&((o=o.bind(e.v??e.h)).isMobXFlow=!0),{value:o,configurable:!a||e.p,enumerable:!1,writable:!a}}function ve(e,t){return{i:e,u:t,o:ye,s:be,t:xe}}function ye(e,t,n){return this.s(e,t,n,!1)===null?0:1}function be(e,t,n,r){return e.m(t,ee({},this.u,{get:n.get,set:n.set}),r)}function xe(e,t){var n=this,r=t.name;return(0,t.addInitializer)((function(){var t=Vt(this)[I],i=ee({},n.u,{get:e,context:this});i.name||=`ObservableObject.`+r.toString(),t.j.set(r,new Pn(i))})),function(){return this[I].O(r)}}function Se(e,t){return{i:e,u:t,o:Ce,s:we,t:Te}}function Ce(e,t,n){return this.s(e,t,n,!1)===null?0:1}function we(e,t,n,r){return e.g(t,n.value,this.u?.enhancer??ce,r)}function Te(e,t){function n(e,t){var n=Vt(e)[I],i=new Mn(t,r.u?.enhancer??ce,`ObservableObject.`+a.toString(),!1);n.j.set(a,i),o.add(e)}var r=this,i=t.kind,a=t.name,o=new WeakSet;if(i==`accessor`)return{get:function(){return o.has(this)||n(this,e.get.call(this)),this[I].O(a)},set:function(e){return o.has(this)||n(this,e),this[I].S(a,e)},init:function(e){return o.has(this)||n(this,e),e}}}function Ee(e){return{i:`true`,u:e,o:De,s:Oe,t:ke}}function De(e,t,n,r){var i,a,o;if(n.get)return Dn.o(e,t,n,r);if(n.set){var s=st(n.set)?n.set:Me(t.toString(),n.set);return r===e.h?e.l(t,{configurable:!B.safeDescriptors||e.p,set:s})===null?0:2:(nn(r,t,{configurable:!0,set:s}),2)}if(r!==e.h&&typeof n.value==`function`)return l(n.value)?((o=this.u)!=null&&o.autoBind?nr.bound:nr).o(e,t,n,r):((a=this.u)!=null&&a.autoBind?Xn.bound:Xn).o(e,t,n,r);var c=!1===this.u?.deep?R.ref:R;return typeof n.value==`function`&&(i=this.u)!=null&&i.autoBind&&(n.value=n.value.bind(e.v??e.h)),c.o(e,t,n,r)}function Oe(e,t,n,r){var i;return n.get?Dn.s(e,t,n,r):n.set?e.l(t,{configurable:!B.safeDescriptors||e.p,set:Me(t.toString(),n.set)},r):(typeof n.value==`function`&&(i=this.u)!=null&&i.autoBind&&(n.value=n.value.bind(e.v??e.h)),(!1===this.u?.deep?R.ref:R).s(e,t,n,r))}function ke(){t(`'`+this.i+`' cannot be used as a decorator`)}function Ae(e){return e||yn}function k(e){return!0===e.deep?ce:!1===e.deep?D:(t=e.defaultDecorator)&&(n=(r=t.u)?.enhancer)!=null?n:ce;var t,n,r}function je(e,t,n){return oe(t)?bn.t(e,t):o(t)?void ae(e,t,bn):bt(e)?e:c(e)?R.object(e,t,n):Array.isArray(e)?R.array(e,t):p(e)?R.map(e,t):m(e)?R.set(e,t):typeof e==`object`&&e?e:R.box(e,t)}function Me(e,t,n,r){function i(){return Ne(0,n,t,r||this,arguments)}return n===void 0&&(n=!1),i.isMobxAction=!0,i.toString=function(){return t.toString()},An&&(jn.value=e,nn(i,`name`,jn)),i}function Ne(e,t,n,r,i){var a=Pe(0,t);try{return n.apply(r,i)}catch(e){throw a._=e,e}finally{Fe(a)}}function Pe(e,t){var n=B.trackingDerivation,r=!t||!n;Qe();var i=B.allowStateChanges;r&&(We(),i=Le(!0));var a={A:r,k:n,M:i,V:Ke(!0),R:!1,N:0,T:kn++,C:On};return On=a.T,a}function Fe(e){On!==e.T&&t(30),On=e.C,e._!==void 0&&(B.suppressReactionErrors=!0),Re(e.M),qe(e.V),$e(),e.A&&Ge(e.k),B.suppressReactionErrors=!1}function Ie(e,t){var n=Le(e);try{return t()}finally{Re(n)}}function Le(e){var t=B.allowStateChanges;return B.allowStateChanges=e,t}function Re(e){B.allowStateChanges=e}function ze(e){return e instanceof Ln}function Be(e){switch(e.I){case z.L:return!1;case z.P:case z.K:return!0;case z.B:for(var t=Ke(!0),n=We(),r=e.D,i=r.length,a=0;a<i;a++){var o=r[a];if(In(o)){if(B.disableErrorBoundaries)o.get();else try{o.get()}catch{return Ge(n),qe(t),!0}if(e.I===z.K)return Ge(n),qe(t),!0}}return Je(e),Ge(n),qe(t),!1}}function Ve(e,t,n){var r=Ke(!0);Je(e),e.W=Array(e.q===0?100:e.D.length),e.G=0,e.q=++B.runId;var i,a=B.trackingDerivation;if(B.trackingDerivation=e,B.inBatch++,!0===B.disableErrorBoundaries)i=t.call(n);else try{i=t.call(n)}catch(e){i=new Ln(e)}return B.inBatch--,B.trackingDerivation=a,function(e){for(var t=e.D,n=e.D=e.W,r=z.L,i=0,a=e.G,o=0;o<a;o++){var s=n[o];s.diffValue===0&&(s.diffValue=1,i!==o&&(n[i]=s),i++),s.I>r&&(r=s.I)}for(n.length=i,e.W=null,a=t.length;a--;){var c=t[a];c.diffValue===0&&Xe(c,e),c.diffValue=0}for(;i--;){var l=n[i];l.diffValue===1&&(l.diffValue=0,Ye(l,e))}r!==z.L&&(e.I=r,e.H())}(e),qe(r),i}function He(e){var t=e.D;e.D=[];for(var n=t.length;n--;)Xe(t[n],e);e.I=z.P}function Ue(e){var t=We();try{return e()}finally{Ge(t)}}function We(){var e=B.trackingDerivation;return B.trackingDerivation=null,e}function Ge(e){B.trackingDerivation=e}function Ke(e){var t=B.allowStateReads;return B.allowStateReads=e,t}function qe(e){B.allowStateReads=e}function Je(e){if(e.I!==z.L){e.I=z.L;for(var t=e.D,n=t.length;n--;)t[n].U=z.L}}function Ye(e,t){e.F.add(t),e.U>t.I&&(e.U=t.I)}function Xe(e,t){e.F.delete(t),e.F.size===0&&Ze(e)}function Ze(e){!1===e.isPendingUnobservation&&(e.isPendingUnobservation=!0,B.pendingUnobservations.push(e))}function Qe(){B.inBatch++}function $e(){if(--B.inBatch==0){nt();for(var e=B.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 Pn&&n.X())}B.pendingUnobservations=[]}}function et(e){var t=B.trackingDerivation;return t===null?(e.F.size===0&&B.inBatch>0&&Ze(e),!1):(t.q!==e.$&&(e.$=t.q,t.W[t.G++]=e,!e.isBeingObserved&&B.trackingContext&&(e.isBeingObserved=!0,e.onBO())),e.isBeingObserved)}function tt(e){e.U!==z.K&&(e.U=z.K,e.F.forEach((function(e){e.I===z.L&&e.H(),e.I=z.K})))}function nt(){B.inBatch>0||B.isRunningReactions||Un(rt)}function rt(){B.isRunningReactions=!0;for(var e=B.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()}B.isRunningReactions=!1}function it(){return console.warn(`[mobx.spy] Is a no-op in production builds`),function(){}}function at(e){return function(t,n){return a(t)?Me(t.name||`<unnamed action>`,t,e):a(n)?Me(t,n,e):oe(n)?(e?qn:Gn).t(t,n):o(n)?ae(t,n,e?qn:Gn):o(t)?E(le(e?`autoAction`:`action`,{name:t,autoAction:e})):void 0}}function ot(e){return Ne(0,!1,e,this,void 0)}function st(e){return a(e)&&!0===e.isMobxAction}function ct(e,t){function n(){e(i)}var r;t===void 0&&(t=on);var i,a=t?.name??`Autorun`;if(t.scheduler||t.delay){var o=lt(t),s=!1;i=new Hn(a,(function(){s||(s=!0,o((function(){s=!1,i.isDisposed||i.track(n)})))}),t.onError,t.requiresObservable)}else i=new Hn(a,(function(){this.track(n)}),t.onError,t.requiresObservable);return(r=t)!=null&&(r=r.signal)!=null&&r.aborted||i.Y(),i.Z(t?.signal)}function lt(e){return e.scheduler?e.scheduler:e.delay?function(t){return setTimeout(t,e.delay)}:Zn}function ut(e,t,n){return ft(`onBO`,e,t,n)}function dt(e,t,n){return ft(`onBUO`,e,t,n)}function ft(e,t,n,r){var i=typeof r==`function`?Jt(t,n):Jt(t),o=a(r)?r:n,s=e+`L`;return i[s]?i[s].add(o):i[s]=new Set([o]),function(){var e=i[s];e&&(e.delete(o),e.size===0&&delete i[s])}}function pt(e,t,n,r){var i=fn(t);return Xt((function(){var t=Vt(e,r)[I];dn(i).forEach((function(e){t.s(e,i[e],!n||!(e in n)||n[e])}))})),e}function mt(e){var t,n={name:e.tt};return e.D&&e.D.length>0&&(n.dependencies=(t=e.D,Array.from(new Set(t))).map(mt)),n}function ht(e){var t={name:e.tt};return function(e){return e.F&&e.F.size>0}(e)&&(t.observers=Array.from(function(e){return e.F}(e)).map(ht)),t}function gt(e){a(e.cancel)&&e.cancel()}function _t(e){return!0===e?.isMobXFlow}function vt(e,t){return t===void 0?In(e):!1===Ut(e)||!e[I].j.has(t)?!1:In(Jt(e,t))}function yt(e,t){return!!e&&(t===void 0?Ut(e)||!!e[I]||hn(e)||Wn(e)||In(e):!!Ut(e)&&e[I].j.has(t))}function bt(e){return yt(e)}function xt(e){return Ut(e)?e[I].nt():hr(e)||V(e)?Array.from(e.keys()):Rt(e)?e.map((function(e,t){return t})):void t(5)}function St(e,n){return Ut(e)?e[I].it(n):hr(e)||V(e)?e.has(n):Rt(e)?n>=0&&n<e.length:void t(10)}function Ct(e){if(Ut(e))return e[I].rt();t(38)}function wt(e,t,n){return e.set(t,n),n}function Tt(e,t){t===void 0&&(t=void 0),Qe();try{return e.apply(t)}finally{$e()}}function Et(e,t,n){var r;if(typeof n.timeout==`number`){var i=Error(`WHEN_TIMEOUT`);r=setTimeout((function(){if(!o[I].isDisposed){if(o(),!n.onError)throw i;n.onError(i)}}),n.timeout)}n.name=`When`;var a=Me(`When-effect`,t),o=ct((function(t){Ie(!1,e)&&(t.dispose(),r&&clearTimeout(r),a())}),n);return o}function Dt(e,t){var n,r,i;if(t!=null&&(n=t.signal)!=null&&n.aborted)return Object.assign(Promise.reject(Error(`WHEN_ABORTED`)),{cancel:function(){return null}});var a=new Promise((function(n,a){var o,s=Et(e,n,ee({},t,{onError:a}));r=function(){s(),a(Error(`WHEN_CANCELLED`))},i=function(){s(),a(Error(`WHEN_ABORTED`))},t==null||(o=t.signal)==null||o.addEventListener==null||o.addEventListener(`abort`,i)})).finally((function(){var e;return t==null||(e=t.signal)==null||e.removeEventListener==null?void 0:e.removeEventListener(`abort`,i)}));return a.cancel=r,a}function Ot(e){return e[I]}function kt(e){return e.et!==void 0&&e.et.length>0}function At(e,t){var n=e.et||=[];return n.push(t),i((function(){var e=n.indexOf(t);e!==-1&&n.splice(e,1)}))}function jt(e,n){var r=We();try{for(var i=[].concat(e.et||[]),a=0,o=i.length;a<o&&((n=i[a](n))&&!n.type&&t(14),n);a++);return n}finally{Ge(r)}}function Mt(e){return e.ut!==void 0&&e.ut.length>0}function Nt(e,t){var n=e.ut||=[];return n.push(t),i((function(){var e=n.indexOf(t);e!==-1&&n.splice(e,1)}))}function Pt(e,t){var n=We(),r=e.ut;if(r){for(var i=0,a=(r=r.slice()).length;i<a;i++)r[i](t);Ge(n)}}function Ft(e,t,n,i){return n===void 0&&(n=`ObservableArray`),i===void 0&&(i=!1),r(),Xt((function(){var r=new sr(n,t,i,!1);d(r.j,I,r);var a=new Proxy(r.j,or);return r.v=a,e&&e.length&&r.ot(0,0,e),a}))}function A(e,t){typeof Array.prototype[e]==`function`&&(cr[e]=t(e))}function It(e){return function(){var t=this[I];t.st.reportObserved();var n=t.ft(t.j);return n[e].apply(n,arguments)}}function j(e){return function(t,n){var r=this,i=this[I];return i.st.reportObserved(),i.ft(i.j)[e]((function(e,i){return t.call(n,e,i,r)}))}}function Lt(e){return function(){var t=this,n=this[I];n.st.reportObserved();var r=n.ft(n.j),i=arguments[0];return arguments[0]=function(e,n,r){return i(e,n,r,t)},r[e].apply(r,arguments)}}function Rt(e){return s(e)&&dr(e[I])}function zt(e){return e[Symbol.toStringTag]=`MapIterator`,$t(e)}function Bt(e){return e[Symbol.toStringTag]=`SetIterator`,$t(e)}function Vt(e,t){if(g(e,I))return e;var n=t?.name??`ObservableObject`;return u(e,I,new yr(e,new Map,String(n),function(e){return e?e.defaultDecorator??Ee(e):void 0}(t))),e}function Ht(e){return vr[e]||(vr[e]={get:function(){return this[I].O(e)},set:function(t){return this[I].S(e,t)}})}function Ut(e){return!!s(e)&&br(e[I])}function Wt(e,t,n){var r;(r=e.h[pn])==null||delete r[n]}function Gt(e){return{enumerable:!1,configurable:!0,get:function(){return this[I].ct(e)},set:function(t){this[I].ht(e,t)}}}function Kt(e){nn(Tr.prototype,``+e,Gt(e))}function qt(e){if(e>Cr){for(var t=Cr;t<e+100;t++)Kt(t);Cr=e}}function M(e,t,n){return new Tr(e,t,n)}function Jt(e,n){if(typeof e==`object`&&e){if(Rt(e))return n!==void 0&&t(23),e[I].st;if(V(e))return e.st;if(hr(e)){if(n===void 0)return e.lt;var r=e.vt.get(n)||e.dt.get(n);return r||t(25,n,Yt(e)),r}if(Ut(e)){if(!n)return t(26);var i=e[I].j.get(n);return i||t(27,n,Yt(e)),i}if(hn(e)||In(e)||Wn(e))return e}else if(a(e)&&Wn(e[I]))return e[I];t(28)}function N(e,n){return e||t(29),n===void 0?hn(e)||In(e)||Wn(e)||hr(e)||V(e)?e:e[I]?e[I]:void t(24,e):N(Jt(e,n))}function Yt(e,t){var n;if(t!==void 0)n=Jt(e,t);else{if(st(e))return e.name;n=Ut(e)||hr(e)||V(e)?N(e):Jt(e)}return n.tt}function Xt(e){var t=We(),n=Le(!0);Qe();try{return e()}finally{$e(),Re(n),Ge(t)}}function Zt(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=Er.call(t);if(c!==Er.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=Qt(t),n=Qt(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 Qt(e){return Rt(e)?e.slice():p(e)||hr(e)||m(e)||V(e)?Array.from(e.entries()):e}function $t(e){return e[Symbol.iterator]=P,Object.assign(Object.create(Dr),e)}function P(){return this}Object.defineProperty(e,`__esModule`,{value:!0});var en={},F=Object.assign,tn=Object.getOwnPropertyDescriptor,nn=Object.defineProperty,rn=Object.prototype,an=[];Object.freeze(an);var on={};Object.freeze(on);var sn=typeof Proxy<`u`,cn=Object.toString(),ln=function(){},un=Object.getOwnPropertySymbols!==void 0,dn=typeof Reflect<`u`&&Reflect.ownKeys?Reflect.ownKeys:un?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames,fn=Object.getOwnPropertyDescriptors||function(e){var t={};return dn(e).forEach((function(n){t[n]=tn(e,n)})),t},pn=Symbol(`mobx-stored-annotations`),I=Symbol(`mobx administration`),mn=function(){function e(e){e===void 0&&(e=`Atom`),this.tt=void 0,this.bt=0,this.F=new Set,this.$=0,this.U=z.P,this.onBOL=void 0,this.onBUOL=void 0,this.tt=e}var t=e.prototype;return t.onBO=function(){this.onBOL&&this.onBOL.forEach((function(e){return e()}))},t.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(e){return e()}))},t.reportObserved=function(){return et(this)},t.reportChanged=function(){Qe(),tt(this),$e()},t.toString=function(){return this.tt},S(e,[{key:`isBeingObserved`,get:function(){return _(this.bt,e.pt)},set:function(t){this.bt=v(this.bt,e.pt,t)}},{key:`isPendingUnobservation`,get:function(){return _(this.bt,e.yt)},set:function(t){this.bt=v(this.bt,e.yt,t)}},{key:`diffValue`,get:function(){return+!!_(this.bt,e.wt)},set:function(t){this.bt=v(this.bt,e.wt,t===1)}}])}();mn.pt=1,mn.yt=2,mn.wt=4;var hn=f(`Atom`,mn),gn={identity:function(e,t){return e===t},structural:function(e,t){return Zt(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 Zt(e,t,1)}},_n=E({i:`override`,o:function(){return 0},s:function(){t(`'`+this.i+`' can only be used with 'makeObservable'`)},t:function(){console.warn(`'`+this.i+`' cannot be used with decorators - this is a no-op`)}}),vn=Ee(),yn={deep:!0,name:void 0,defaultDecorator:void 0,proxy:!0};Object.freeze(yn);var bn=Se(`observable`),xn=Se(`observable.ref`,{enhancer:D}),L=Se(`observable.shallow`,{enhancer:function(e,t,n){return e==null||Ut(e)||Rt(e)||hr(e)||V(e)?e:Array.isArray(e)?R.array(e,{name:n,deep:!1}):c(e)?R.object(e,void 0,{name:n,deep:!1}):p(e)?R.map(e,{name:n,deep:!1}):m(e)?R.set(e,{name:n,deep:!1}):void 0}}),Sn=Se(`observable.struct`,{enhancer:function(e,t){return Zt(e,t)?t:e}}),Cn=E(bn);F(je,Cn);var wn,R=F(je,{box:function(e,t){var n=Ae(t);return new Mn(e,k(n),n.name,!0,n.equals)},array:function(e,t){var n=Ae(t);return(!1===B.useProxies||!1===n.proxy?M:Ft)(e,k(n),n.name)},map:function(e,t){var n=Ae(t);return new mr(e,k(n),n.name)},set:function(e,t){var n=Ae(t);return new _r(e,k(n),n.name)},object:function(e,t,n){return Xt((function(){return pt(!1===B.useProxies||!1===n?.proxy?Vt({},n):function(e,t){var n;return r(),(n=(e=Vt(e,t))[I]).v??(n.v=new Proxy(e,rr))}({},n),e,t)}))},ref:E(xn),shallow:E(L),deep:Cn,struct:E(Sn)}),Tn=ve(`computed`),En=ve(`computed.struct`,{equals:gn.structural}),Dn=function(e,t){if(oe(t))return Tn.t(e,t);if(o(t))return ae(e,t,Tn);if(c(e))return E(ve(`computed`,e));var n=c(t)?t:{};return n.get=e,n.name||=e.name||``,new Pn(n)};Object.assign(Dn,Tn),Dn.struct=E(En);var On=0,kn=1,An=(wn=tn((function(){}),`name`)?.configurable)!=null&&wn,jn={value:`action`,configurable:!0,writable:!1,enumerable:!1},Mn=function(e){function t(t,n,r,i,a){var o;return r===void 0&&(r=`ObservableValue`),a===void 0&&(a=gn.default),(o=e.call(this,r)||this).enhancer=void 0,o.tt=void 0,o.equals=void 0,o.jt=!1,o.et=void 0,o.ut=void 0,o.Ot=void 0,o.dehancer=void 0,o.enhancer=n,o.tt=r,o.equals=a,o.Ot=n(t,void 0,r),o}w(t,e);var n=t.prototype;return n.dehanceValue=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.set=function(e){(e=this.xt(e))!==B.UNCHANGED&&this.gt(e)},n.xt=function(e){if(kt(this)){var t=jt(this,{object:this,type:ar,newValue:e});if(!t)return B.UNCHANGED;e=t.newValue}return e=this.enhancer(e,this.Ot,this.tt),this.equals(this.Ot,e)?B.UNCHANGED:e},n.gt=function(e){var t=this.Ot;this.Ot=e,this.reportChanged(),Mt(this)&&Pt(this,{type:ar,object:this,newValue:e,oldValue:t})},n.get=function(){return this.reportObserved(),this.dehanceValue(this.Ot)},n.St=function(e){return At(this,e)},n._t=function(e,t){return t&&e({observableKind:`value`,debugObjectName:this.tt,object:this,type:ar,newValue:this.Ot,oldValue:void 0}),Nt(this,e)},n.raw=function(){return this.Ot},n.toJSON=function(){return this.get()},n.toString=function(){return this.tt+`[`+this.Ot+`]`},n.valueOf=function(){return h(this.get())},n[Symbol.toPrimitive]=function(){return this.valueOf()},t}(mn),Nn=f(`ObservableValue`,Mn),Pn=function(){function e(e){this.I=z.P,this.D=[],this.W=null,this.F=new Set,this.q=0,this.$=0,this.U=z.L,this.G=0,this.Ot=new Ln(null),this.tt=void 0,this.At=void 0,this.bt=0,this.derivation=void 0,this.kt=void 0,this.Mt=Fn.NONE,this.Et=void 0,this.Vt=void 0,this.Rt=void 0,this.Nt=void 0,this.onBOL=void 0,this.onBUOL=void 0,e.get||t(31),this.derivation=e.get,this.tt=e.name||`ComputedValue`,e.set&&(this.kt=Me(`ComputedValue-setter`,e.set)),this.Vt=e.equals||(e.compareStructural||e.struct?gn.structural:gn.default),this.Et=e.context,this.Rt=e.requiresReaction,this.Nt=!!e.keepAlive}var n=e.prototype;return n.H=function(){(function(e){e.U===z.L&&(e.U=z.B,e.F.forEach((function(e){e.I===z.L&&(e.I=z.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),B.inBatch!==0||this.F.size!==0||this.Nt){if(et(this),Be(this)){var e=B.trackingContext;this.Nt&&!e&&(B.trackingContext=this),this.trackAndCompute()&&function(e){e.U!==z.K&&(e.U=z.K,e.F.forEach((function(t){t.I===z.B?t.I=z.K:t.I===z.L&&(e.U=z.L)})))}(this),B.trackingContext=e}}else Be(this)&&(this.Tt(),Qe(),this.Ot=this.Ct(!1),$e());var n=this.Ot;if(ze(n))throw n.cause;return n},n.set=function(e){if(this.kt){this.isRunningSetter&&t(33,this.tt),this.isRunningSetter=!0;try{this.kt.call(this.Et,e)}finally{this.isRunningSetter=!1}}else t(34,this.tt)},n.trackAndCompute=function(){var e=this.Ot,t=this.I===z.P,n=this.Ct(!0),r=t||ze(e)||ze(n)||!this.Vt(e,n);return r&&(this.Ot=n),r},n.Ct=function(e){this.isComputing=!0;var t,n=Le(!1);if(e)t=Ve(this,this.derivation,this.Et);else if(!0===B.disableErrorBoundaries)t=this.derivation.call(this.Et);else try{t=this.derivation.call(this.Et)}catch(e){t=new Ln(e)}return Re(n),this.isComputing=!1,t},n.X=function(){this.Nt||(He(this),this.Ot=void 0)},n._t=function(e,t){var n=this,r=!0,i=void 0;return ct((function(){var a=n.get();if(!r||t){var o=We();e({observableKind:`computed`,debugObjectName:n.tt,type:ar,object:n,newValue:a,oldValue:i}),Ge(o)}r=!1,i=a}))},n.Tt=function(){},n.toString=function(){return this.tt+`[`+this.derivation.toString()+`]`},n.valueOf=function(){return h(this.get())},n[Symbol.toPrimitive]=function(){return this.valueOf()},S(e,[{key:`isComputing`,get:function(){return _(this.bt,e.It)},set:function(t){this.bt=v(this.bt,e.It,t)}},{key:`isRunningSetter`,get:function(){return _(this.bt,e.Lt)},set:function(t){this.bt=v(this.bt,e.Lt,t)}},{key:`isBeingObserved`,get:function(){return _(this.bt,e.pt)},set:function(t){this.bt=v(this.bt,e.pt,t)}},{key:`isPendingUnobservation`,get:function(){return _(this.bt,e.yt)},set:function(t){this.bt=v(this.bt,e.yt,t)}},{key:`diffValue`,get:function(){return+!!_(this.bt,e.wt)},set:function(t){this.bt=v(this.bt,e.wt,t===1)}}])}();Pn.It=1,Pn.Lt=2,Pn.pt=4,Pn.yt=8,Pn.wt=16;var z,Fn,In=f(`ComputedValue`,Pn);(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_`})(z||={}),function(e){e[e.NONE=0]=`NONE`,e[e.LOG=1]=`LOG`,e[e.BREAK=2]=`BREAK`}(Fn||={});var Ln=function(e){this.cause=void 0,this.cause=e},Rn=[`mobxGuid`,`spyListeners`,`enforceActions`,`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`allowStateReads`,`disableErrorBoundaries`,`runId`,`UNCHANGED`,`useProxies`],zn=function(){this.version=6,this.UNCHANGED={},this.trackingDerivation=null,this.trackingContext=null,this.runId=0,this.mobxGuid=0,this.inBatch=0,this.pendingUnobservations=[],this.pendingReactions=[],this.isRunningReactions=!1,this.allowStateChanges=!1,this.allowStateReads=!0,this.enforceActions=!0,this.spyListeners=[],this.globalReactionErrorHandlers=[],this.computedRequiresReaction=!1,this.reactionRequiresObservable=!1,this.observableRequiresReaction=!1,this.disableErrorBoundaries=!1,this.suppressReactionErrors=!1,this.useProxies=!0,this.verifyProxies=!1,this.safeDescriptors=!0},Bn=!0,Vn=!1,B=function(){var e=n();return e.__mobxInstanceCount>0&&!e.__mobxGlobals&&(Bn=!1),e.__mobxGlobals&&e.__mobxGlobals.version!==new zn().version&&(Bn=!1),Bn?e.__mobxGlobals?(e.__mobxInstanceCount+=1,e.__mobxGlobals.UNCHANGED||(e.__mobxGlobals.UNCHANGED={}),e.__mobxGlobals):(e.__mobxInstanceCount=1,e.__mobxGlobals=new zn):(setTimeout((function(){Vn||t(35)}),1),new zn)}(),Hn=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=z.P,this.q=0,this.G=0,this.bt=0,this.Mt=Fn.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,B.pendingReactions.push(this),nt())},t.J=function(){if(!this.isDisposed){Qe(),this.isScheduled=!1;var e=B.trackingContext;if(B.trackingContext=this,Be(this)){this.isTrackPending=!0;try{this.Pt()}catch(e){this.Dt(e)}}B.trackingContext=e,$e()}},t.track=function(e){if(!this.isDisposed){Qe(),this.isRunning=!0;var t=B.trackingContext;B.trackingContext=this;var n=Ve(this,e,void 0);B.trackingContext=t,this.isRunning=!1,this.isTrackPending=!1,this.isDisposed&&He(this),ze(n)&&this.Dt(n.cause),$e()}},t.Dt=function(e){var t=this;if(this.Kt)this.Kt(e,this);else{if(B.disableErrorBoundaries)throw e;B.suppressReactionErrors||console.error(`[mobx] uncaught error in '`+this+`'`,e),B.globalReactionErrorHandlers.forEach((function(n){return n(e,t)}))}},t.dispose=function(){this.isDisposed||(this.isDisposed=!0,this.isRunning||(Qe(),He(this),$e()))},t.Z=function(e){var t=this,n=function n(){t.dispose(),e==null||e.removeEventListener==null||e.removeEventListener(`abort`,n)};return e==null||e.addEventListener==null||e.addEventListener(`abort`,n),n[I]=this,`dispose`in Symbol&&typeof Symbol.dispose==`symbol`&&(n[Symbol.dispose]=n),n},t.toString=function(){return`Reaction[`+this.tt+`]`},t.trace=function(){},S(e,[{key:`isDisposed`,get:function(){return _(this.bt,e.Wt)},set:function(t){this.bt=v(this.bt,e.Wt,t)}},{key:`isScheduled`,get:function(){return _(this.bt,e.qt)},set:function(t){this.bt=v(this.bt,e.qt,t)}},{key:`isTrackPending`,get:function(){return _(this.bt,e.Gt)},set:function(t){this.bt=v(this.bt,e.Gt,t)}},{key:`isRunning`,get:function(){return _(this.bt,e.Ht)},set:function(t){this.bt=v(this.bt,e.Ht,t)}},{key:`diffValue`,get:function(){return+!!_(this.bt,e.wt)},set:function(t){this.bt=v(this.bt,e.wt,t===1)}}])}();Hn.Wt=1,Hn.qt=2,Hn.Gt=4,Hn.Ht=8,Hn.wt=16;var Un=function(e){return e()},Wn=f(`Reaction`,Hn),Gn=le(`action`),Kn=le(`action.bound`,{bound:!0}),qn=le(`autoAction`,{autoAction:!0}),Jn=le(`autoAction.bound`,{autoAction:!0,bound:!0}),Yn=at(!1);Object.assign(Yn,Gn);var Xn=at(!0);Object.assign(Xn,qn),Yn.bound=E(Kn),Xn.bound=E(Jn);var Zn=function(e){return e()},Qn=0,$n=function(e){function t(){var n;return n=e.call(this,`FLOW_CANCELLED`)||this,Object.setPrototypeOf(n,(this instanceof t?this.constructor:void 0).prototype),n.name=`FlowCancellationError`,n}return w(t,e),t.prototype.toString=function(){return`Error: `+this.message},t}(T(Error)),er=me(`flow`),tr=me(`flow.bound`,{bound:!0}),nr=Object.assign((function(e,t){if(oe(t))return er.t(e,t);if(o(t))return ae(e,t,er);var n=e,r=n.name||`<unnamed flow>`,i=function(){var e,t=this,i=arguments,o=++Qn,s=Yn(r+` - runid: `+o+` - init`,n).apply(t,i),c=void 0,l=new Promise((function(t,n){function i(e){var t;c=void 0;try{t=Yn(r+` - runid: `+o+` - yield `+ d++,s.next).call(s,e)}catch(e){return n(e)}u(t)}function l(e){var t;c=void 0;try{t=Yn(r+` - runid: `+o+` - yield `+ d++,s.throw).call(s,e)}catch(e){return n(e)}u(t)}function u(e){if(!a(e?.then))return e.done?t(e.value):(c=Promise.resolve(e.value)).then(i,l);e.then(u,n)}var d=0;e=n,i(void 0)}));return l.cancel=Yn(r+` - runid: `+o+` - cancel`,(function(){try{c&&gt(c);var t=s.return(void 0),n=Promise.resolve(t.value);n.then(ln,ln),gt(n),e(new $n)}catch(t){e(t)}})),l};return i.isMobXFlow=!0,i}),er);nr.bound=E(tr);var rr={has:function(e,t){return Ot(e).it(t)},get:function(e,t){return Ot(e).ct(t)},set:function(e,t,n){var r;return!!o(t)&&((r=Ot(e).ht(t,n,!0))==null||r)},deleteProperty:function(e,t){var n;return!!o(t)&&((n=Ot(e).Ut(t,!0))==null||n)},defineProperty:function(e,t,n){var r;return(r=Ot(e).l(t,n))==null||r},ownKeys:function(e){return Ot(e).rt()},preventExtensions:function(){t(13)}},ir=Symbol(`mobx-keys`),ar=`update`,or={get:function(e,t){var n=e[I];return t===I?n:t===`length`?n.Ft():typeof t!=`string`||isNaN(t)?g(cr,t)?cr[t]:e[t]:n.ct(parseInt(t))},set:function(e,t,n){var r=e[I];return t===`length`&&r.Xt(n),typeof t==`symbol`||isNaN(t)?e[t]=n:r.ht(parseInt(t),n),!0},preventExtensions:function(){t(15)}},sr=function(){function e(e,t,n,r){e===void 0&&(e=`ObservableArray`),this.zt=void 0,this.$t=void 0,this.st=void 0,this.j=[],this.et=void 0,this.ut=void 0,this.Jt=void 0,this.dehancer=void 0,this.v=void 0,this.Yt=0,this.zt=n,this.$t=r,this.st=new mn(e),this.Jt=function(e,n){return t(e,n,`ObservableArray[..]`)}}var n=e.prototype;return n.Qt=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.ft=function(e){return this.dehancer!==void 0&&e.length>0?e.map(this.dehancer):e},n.St=function(e){return At(this,e)},n._t=function(e,t){return t===void 0&&(t=!1),t&&e({observableKind:`array`,object:this.v,debugObjectName:this.st.tt,type:`splice`,index:0,added:this.j.slice(),addedCount:this.j.length,removed:[],removedCount:0}),Nt(this,e)},n.Ft=function(){return this.st.reportObserved(),this.j.length},n.Xt=function(e){(typeof e!=`number`||isNaN(e)||e<0)&&t(`Out of range: `+e);var n=this.j.length;if(e!==n)if(e>n){for(var r=Array(e-n),i=0;i<e-n;i++)r[i]=void 0;this.ot(n,0,r)}else this.ot(e,n-e)},n.Zt=function(e,n){e!==this.Yt&&t(16),this.Yt+=n,this.$t&&n>0&&qt(e+n+1)},n.ot=function(e,t,n){var r=this,i=this.j.length;if(e===void 0?e=0:e>i?e=i:e<0&&(e=Math.max(0,i+e)),t=arguments.length===1?i-e:t==null?0:Math.max(0,Math.min(t,i-e)),n===void 0&&(n=an),kt(this)){var a=jt(this,{object:this.v,type:`splice`,index:e,removedCount:t,added:n});if(!a)return an;t=a.removedCount,n=a.added}if(n=n.length===0?n:n.map((function(e){return r.Jt(e,void 0)})),this.$t){var o=n.length-t;this.Zt(i,o)}var s=this.tn(e,t,n);return t===0&&n.length===0||this.nn(e,n,s),this.ft(s)},n.tn=function(e,t,n){var r;if(n.length<1e4)return(r=this.j).splice.apply(r,[e,t].concat(n));var i=this.j.slice(e,e+t),a=this.j.slice(e+t);this.j.length+=n.length-t;for(var o=0;o<n.length;o++)this.j[e+o]=n[o];for(var s=0;s<a.length;s++)this.j[e+n.length+s]=a[s];return i},n.in=function(e,t,n){var r=!this.zt&&!1,i=Mt(this),a=i||r?{observableKind:`array`,object:this.v,type:ar,debugObjectName:this.st.tt,index:e,newValue:t,oldValue:n}:null;this.st.reportChanged(),i&&Pt(this,a)},n.nn=function(e,t,n){var r=!this.zt&&!1,i=Mt(this),a=i||r?{observableKind:`array`,object:this.v,debugObjectName:this.st.tt,type:`splice`,index:e,removed:n,added:t,removedCount:n.length,addedCount:t.length}:null;this.st.reportChanged(),i&&Pt(this,a)},n.ct=function(e){if(!(this.$t&&e>=this.j.length))return this.st.reportObserved(),this.Qt(this.j[e]);console.warn(`[mobx] Out of bounds read: `+e)},n.ht=function(e,n){var r=this.j;if(this.$t&&e>r.length&&t(17,e,r.length),e<r.length){var i=r[e];if(kt(this)){var a=jt(this,{type:ar,object:this.v,index:e,newValue:n});if(!a)return;n=a.newValue}(n=this.Jt(n,i))!==i&&(r[e]=n,this.in(e,n,i))}else{for(var o=Array(e+1-r.length),s=0;s<o.length-1;s++)o[s]=void 0;o[o.length-1]=n,this.ot(r.length,0,o)}},e}(),cr={clear:function(){return this.splice(0)},replace:function(e){var t=this[I];return t.ot(0,t.j.length,e)},toJSON:function(){return this.slice()},splice:function(e,t){var n=[...arguments].slice(2),r=this[I];switch(arguments.length){case 0:return[];case 1:return r.ot(e);case 2:return r.ot(e,t)}return r.ot(e,t,n)},spliceWithArray:function(e,t,n){return this[I].ot(e,t,n)},push:function(){for(var e=this[I],t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];return e.ot(e.j.length,0,n),e.j.length},pop:function(){return this.splice(Math.max(this[I].j.length-1,0),1)[0]},shift:function(){return this.splice(0,1)[0]},unshift:function(){for(var e=this[I],t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];return e.ot(0,0,n),e.j.length},reverse:function(){return B.trackingDerivation&&t(37,`reverse`),this.replace(this.slice().reverse()),this},sort:function(){B.trackingDerivation&&t(37,`sort`);var e=this.slice();return e.sort.apply(e,arguments),this.replace(e),this},remove:function(e){var t=this[I],n=t.ft(t.j).indexOf(e);return n>-1&&(this.splice(n,1),!0)}};A(`at`,It),A(`concat`,It),A(`flat`,It),A(`includes`,It),A(`indexOf`,It),A(`join`,It),A(`lastIndexOf`,It),A(`slice`,It),A(`toString`,It),A(`toLocaleString`,It),A(`toSorted`,It),A(`toSpliced`,It),A(`with`,It),A(`every`,j),A(`filter`,j),A(`find`,j),A(`findIndex`,j),A(`findLast`,j),A(`findLastIndex`,j),A(`flatMap`,j),A(`forEach`,j),A(`map`,j),A(`some`,j),A(`toReversed`,j),A(`reduce`,Lt),A(`reduceRight`,Lt);var lr,ur,dr=f(`ObservableArrayAdministration`,sr),fr={},pr=`add`,mr=function(){function e(e,n,r){var i=this;n===void 0&&(n=ce),r===void 0&&(r=`ObservableMap`),this.Jt=void 0,this.tt=void 0,this[I]=fr,this.vt=void 0,this.dt=void 0,this.lt=void 0,this.et=void 0,this.ut=void 0,this.dehancer=void 0,this.Jt=n,this.tt=r,a(Map)||t(18),Xt((function(){i.lt=se(`ObservableMap.keys()`),i.vt=new Map,i.dt=new Map,e&&i.merge(e)}))}var n=e.prototype;return n.it=function(e){return this.vt.has(e)},n.has=function(e){var t=this;if(!B.trackingDerivation)return this.it(e);var n=this.dt.get(e);if(!n){var r=n=new Mn(this.it(e),D,`ObservableMap.key?`,!1);this.dt.set(e,r),dt(r,(function(){return t.dt.delete(e)}))}return n.get()},n.set=function(e,t){var n=this.it(e);if(kt(this)){var r=jt(this,{type:n?ar:pr,object:this,newValue:t,name:e});if(!r)return this;t=r.newValue}return n?this.rn(e,t):this.en(e,t),this},n.delete=function(e){var t=this;if(kt(this)&&!jt(this,{type:`delete`,object:this,name:e}))return!1;if(this.it(e)){var n=Mt(this),r=n?{observableKind:`map`,debugObjectName:this.tt,type:`delete`,object:this,oldValue:this.vt.get(e).Ot,name:e}:null;return Tt((function(){var n;t.lt.reportChanged(),(n=t.dt.get(e))==null||n.gt(!1),t.vt.get(e).gt(void 0),t.vt.delete(e)})),n&&Pt(this,r),!0}return!1},n.rn=function(e,t){var n=this.vt.get(e);if((t=n.xt(t))!==B.UNCHANGED){var r=Mt(this),i=r?{observableKind:`map`,debugObjectName:this.tt,type:ar,object:this,oldValue:n.Ot,name:e,newValue:t}:null;n.gt(t),r&&Pt(this,i)}},n.en=function(e,t){var n=this;Tt((function(){var r,i=new Mn(t,n.Jt,`ObservableMap.key`,!1);n.vt.set(e,i),t=i.Ot,(r=n.dt.get(e))==null||r.gt(!0),n.lt.reportChanged()}));var r=Mt(this);r&&Pt(this,r?{observableKind:`map`,debugObjectName:this.tt,type:pr,object:this,name:e,newValue:t}:null)},n.get=function(e){return this.has(e)?this.Qt(this.vt.get(e).get()):this.Qt(void 0)},n.Qt=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.keys=function(){return this.lt.reportObserved(),this.vt.keys()},n.values=function(){var e=this,t=this.keys();return zt({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 zt({next:function(){var n=t.next(),r=n.done,i=n.value;return{done:r,value:r?void 0:[i,e.get(i)]}}})},n[Symbol.iterator]=function(){return this.entries()},n.forEach=function(e,t){for(var n,r=C(this);!(n=r()).done;){var i=n.value;e.call(t,i[1],i[0],this)}},n.merge=function(e){var n=this;return hr(e)&&(e=new Map(e)),Tt((function(){var r,i;c(e)?function(e){var t=Object.keys(e);if(!un)return t;var n=Object.getOwnPropertySymbols(e);return n.length?[].concat(t,n.filter((function(t){return rn.propertyIsEnumerable.call(e,t)}))):t}(e).forEach((function(t){return n.set(t,e[t])})):Array.isArray(e)?e.forEach((function(e){return n.set(e[0],e[1])})):p(e)?(r=Object.getPrototypeOf(e),i=Object.getPrototypeOf(r),Object.getPrototypeOf(i)!==null&&t(19,e),e.forEach((function(e,t){return n.set(t,e)}))):e!=null&&t(20,e)})),this},n.clear=function(){var e=this;Tt((function(){Ue((function(){for(var t,n=C(e.keys());!(t=n()).done;)e.delete(t.value)}))}))},n.replace=function(e){var n=this;return Tt((function(){for(var r,i=function(e){if(p(e)||hr(e))return e;if(Array.isArray(e))return new Map(e);if(c(e)){var n=new Map;for(var r in e)n.set(r,e[r]);return n}return t(21,e)}(e),a=new Map,o=!1,s=C(n.vt.keys());!(r=s()).done;){var l=r.value;if(!i.has(l))if(n.delete(l))o=!0;else{var u=n.vt.get(l);a.set(l,u)}}for(var d,f=C(i.entries());!(d=f()).done;){var m=d.value,h=m[0],g=m[1],_=n.vt.has(h);if(n.set(h,g),n.vt.has(h)){var v=n.vt.get(h);a.set(h,v),_||(o=!0)}}if(!o)if(n.vt.size!==a.size)n.lt.reportChanged();else for(var y=n.vt.keys(),b=a.keys(),x=y.next(),S=b.next();!x.done;){if(x.value!==S.value){n.lt.reportChanged();break}x=y.next(),S=b.next()}n.vt=a})),this},n.toString=function(){return`[object ObservableMap]`},n.toJSON=function(){return Array.from(this)},n._t=function(e){return Nt(this,e)},n.St=function(e){return At(this,e)},S(e,[{key:`size`,get:function(){return this.lt.reportObserved(),this.vt.size}},{key:Symbol.toStringTag,get:function(){return`Map`}}])}(),hr=f(`ObservableMap`,mr),gr={},_r=function(){function e(e,n,r){var i=this;n===void 0&&(n=ce),r===void 0&&(r=`ObservableSet`),this.tt=void 0,this[I]=gr,this.vt=new Set,this.st=void 0,this.ut=void 0,this.et=void 0,this.dehancer=void 0,this.Jt=void 0,this.tt=r,a(Set)||t(22),this.Jt=function(e,t){return n(e,t,r)},Xt((function(){i.st=se(i.tt),e&&i.replace(e)}))}var n=e.prototype;return n.Qt=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.clear=function(){var e=this;Tt((function(){Ue((function(){for(var t,n=C(e.vt.values());!(t=n()).done;)e.delete(t.value)}))}))},n.forEach=function(e,t){for(var n,r=C(this);!(n=r()).done;){var i=n.value;e.call(t,i,i,this)}},n.add=function(e){var t=this;if(kt(this)){var n=jt(this,{type:pr,object:this,newValue:e});if(!n)return this;e=n.newValue}if(!this.has(e)){Tt((function(){t.vt.add(t.Jt(e,void 0)),t.st.reportChanged()}));var r=Mt(this);r&&Pt(this,r?{observableKind:`set`,debugObjectName:this.tt,type:pr,object:this,newValue:e}:null)}return this},n.delete=function(e){var t=this;if(kt(this)&&!jt(this,{type:`delete`,object:this,oldValue:e}))return!1;if(this.has(e)){var n=Mt(this),r=n?{observableKind:`set`,debugObjectName:this.tt,type:`delete`,object:this,oldValue:e}:null;return Tt((function(){t.st.reportChanged(),t.vt.delete(e)})),n&&Pt(this,r),!0}return!1},n.has=function(e){return this.st.reportObserved(),this.vt.has(this.Qt(e))},n.entries=function(){var e=this.values();return Bt({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 Bt({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)&&!V(e)?e.intersection(this):new Set(this).intersection(e)},n.union=function(e){return m(e)&&!V(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)&&!V(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)&&!V(e)?e.isDisjointFrom(this):new Set(this).isDisjointFrom(e)},n.replace=function(e){var n=this;return V(e)&&(e=new Set(e)),Tt((function(){Array.isArray(e)||m(e)?(n.clear(),e.forEach((function(e){return n.add(e)}))):e!=null&&t(`Cannot initialize set from `+e)})),this},n._t=function(e){return Nt(this,e)},n.St=function(e){return At(this,e)},n.toJSON=function(){return Array.from(this)},n.toString=function(){return`[object ObservableSet]`},n[Symbol.iterator]=function(){return this.values()},S(e,[{key:`size`,get:function(){return this.st.reportObserved(),this.vt.size}},{key:Symbol.toStringTag,get:function(){return`Set`}}])}(),V=f(`ObservableSet`,_r),vr=Object.create(null),yr=function(){function e(e,t,n,r){t===void 0&&(t=new Map),r===void 0&&(r=vn),this.h=void 0,this.j=void 0,this.tt=void 0,this.un=void 0,this.lt=void 0,this.ut=void 0,this.et=void 0,this.v=void 0,this.p=void 0,this.on=void 0,this.sn=void 0,this.h=e,this.j=t,this.tt=n,this.un=r,this.lt=new mn(`ObservableObject.keys`),this.p=c(this.h)}var n=e.prototype;return n.O=function(e){return this.j.get(e).get()},n.S=function(e,t){var n=this.j.get(e);if(n instanceof Pn)return n.set(t),!0;if(kt(this)){var r=jt(this,{type:ar,object:this.v||this.h,name:e,newValue:t});if(!r)return null;t=r.newValue}if((t=n.xt(t))!==B.UNCHANGED){var i=Mt(this),a=i?{type:ar,observableKind:`object`,debugObjectName:this.tt,object:this.v||this.h,oldValue:n.Ot,name:e,newValue:t}:null;n.gt(t),i&&Pt(this,a)}return!0},n.ct=function(e){return B.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(!B.trackingDerivation)return e in this.h;this.sn||=new Map;var t=this.sn.get(e);return t||(t=new Mn(e in this.h,D,`ObservableObject.key?`,!1),this.sn.set(e,t)),t.get()},n.o=function(e,n){if(!0===n&&(n=this.un),!1!==n){if(!(e in this.h)){var r;if((r=this.h[pn])!=null&&r[e])return;t(1,n.i,this.tt+`.`+e.toString())}for(var i=this.h;i&&i!==rn;){var a=tn(i,e);if(a){var o=n.o(this,e,a,i);if(o===0)return;if(o===1)break}i=Object.getPrototypeOf(i)}Wt(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&&Wt(this,0,e),i},n.l=function(e,t,n){n===void 0&&(n=!1);try{Qe();var r=this.Ut(e);if(!r)return r;if(kt(this)){var i=jt(this,{object:this.v||this.h,name:e,type:pr,newValue:t.value});if(!i)return null;var a=i.newValue;t.value!==a&&(t=ee({},t,{value:a}))}if(n){if(!Reflect.defineProperty(this.h,e,t))return!1}else nn(this.h,e,t);this.fn(e,t.value)}finally{$e()}return!0},n.g=function(e,t,n,r){r===void 0&&(r=!1);try{Qe();var i=this.Ut(e);if(!i)return i;if(kt(this)){var a=jt(this,{object:this.v||this.h,name:e,type:pr,newValue:t});if(!a)return null;t=a.newValue}var o=Ht(e),s={configurable:!B.safeDescriptors||this.p,enumerable:!0,get:o.get,set:o.set};if(r){if(!Reflect.defineProperty(this.h,e,s))return!1}else nn(this.h,e,s);var c=new Mn(t,n,`ObservableObject.key`,!1);this.j.set(e,c),this.fn(e,c.Ot)}finally{$e()}return!0},n.m=function(e,t,n){n===void 0&&(n=!1);try{Qe();var r=this.Ut(e);if(!r)return r;if(kt(this)&&!jt(this,{object:this.v||this.h,name:e,type:pr,newValue:void 0}))return null;t.name||=`ObservableObject.key`,t.context=this.v||this.h;var i=Ht(e),a={configurable:!B.safeDescriptors||this.p,enumerable:!1,get:i.get,set:i.set};if(n){if(!Reflect.defineProperty(this.h,e,a))return!1}else nn(this.h,e,a);this.j.set(e,new Pn(t)),this.fn(e,void 0)}finally{$e()}return!0},n.Ut=function(e,t){if(t===void 0&&(t=!1),!g(this.h,e))return!0;if(kt(this)&&!jt(this,{object:this.v||this.h,name:e,type:`remove`}))return null;try{var n;Qe();var r=Mt(this),i=this.j.get(e),a=void 0;if(!i&&r&&(a=tn(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 Mn&&(a=i.Ot),tt(i)),this.lt.reportChanged(),(n=this.sn)==null||(n=n.get(e))==null||n.set(e in this.h),r&&r&&Pt(this,{type:`remove`,observableKind:`object`,object:this.v||this.h,debugObjectName:this.tt,oldValue:a,name:e})}finally{$e()}return!0},n._t=function(e){return Nt(this,e)},n.St=function(e){return At(this,e)},n.fn=function(e,t){var n,r=Mt(this);r&&r&&Pt(this,r?{type:pr,observableKind:`object`,debugObjectName:this.tt,object:this.v||this.h,name:e,newValue:t}:null),(n=this.sn)==null||(n=n.get(e))==null||n.set(!0),this.lt.reportChanged()},n.rt=function(){return this.lt.reportObserved(),dn(this.h)},n.nt=function(){return this.lt.reportObserved(),Object.keys(this.h)},e}(),br=f(`ObservableObjectAdministration`,yr),xr=Gt(0),Sr=function(){var e=!1,t={};return Object.defineProperty(t,`0`,{set:function(){e=!0}}),Object.create(t)[0]=1,!1===e}(),Cr=0,wr=function(){};lr=wr,ur=Array.prototype,Object.setPrototypeOf?Object.setPrototypeOf(lr.prototype,ur):lr.prototype.__proto__===void 0?lr.prototype=ur:lr.prototype.__proto__=ur;var Tr=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,Xt((function(){var e=new sr(r,n,i,!0);e.v=a,d(a,I,e),t&&t.length&&a.spliceWithArray(0,0,t),Sr&&Object.defineProperty(a,`0`,xr)})),a}w(t,e);var n=t.prototype;return n.concat=function(){this[I].st.reportObserved();var e=[...arguments];return Array.prototype.concat.apply(this.slice(),e.map((function(e){return Rt(e)?e.slice():e})))},n[Symbol.iterator]=function(){var e=this,t=0;return $t({next:function(){return t<e.length?{value:e[t++],done:!1}:{done:!0,value:void 0}}})},S(t,[{key:`length`,get:function(){return this[I].Ft()},set:function(e){this[I].Xt(e)}},{key:Symbol.toStringTag,get:function(){return`Array`}}])}(wr);Object.entries(cr).forEach((function(e){var t=e[0];t!==`concat`&&u(Tr.prototype,t,e[1])})),qt(1e3);var Er=rn.toString,Dr=n().Iterator?.prototype||{};[`Symbol`,`Map`,`Set`].forEach((function(e){n()[e]===void 0&&t(`MobX requires global '`+e+`' to be available or polyfilled`)})),typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__==`object`&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:it,extras:{getDebugName:Yt},$mobx:I}),e.$mobx=I,e.FlowCancellationError=$n,e.ObservableMap=mr,e.ObservableSet=_r,e.Reaction=Hn,e._allowStateChanges=Ie,e._allowStateChangesInsideComputed=ot,e._allowStateReadsEnd=qe,e._allowStateReadsStart=Ke,e._autoAction=Xn,e._endAction=Fe,e._getAdministration=N,e._getGlobalState=function(){return B},e._interceptReads=function(e,t,n){var r;return hr(e)||Rt(e)||Nn(e)?r=N(e):Ut(e)&&(r=N(e,t)),r.dehancer=typeof t==`function`?t:n,function(){r.dehancer=void 0}},e._isComputingDerivation=function(){return B.trackingDerivation!==null},e._resetGlobalState=function(){var e=new zn;for(var t in e)Rn.indexOf(t)===-1&&(B[t]=e[t]);B.allowStateChanges=!B.enforceActions},e._startAction=Pe,e.action=Yn,e.autorun=ct,e.comparer=gn,e.computed=Dn,e.configure=function(e){!0===e.isolateGlobalState&&function(){if((B.pendingReactions.length||B.inBatch||B.isRunningReactions)&&t(36),Vn=!0,Bn){var e=n();--e.__mobxInstanceCount==0&&(e.__mobxGlobals=void 0),B=new zn}}();var r,i,a=e.useProxies,o=e.enforceActions;if(a!==void 0&&(B.useProxies=a===`always`||a!==`never`&&typeof Proxy<`u`),a===`ifavailable`&&(B.verifyProxies=!0),o!==void 0){var s=o===`always`?`always`:o===`observed`;B.enforceActions=s,B.allowStateChanges=!0!==s&&s!==`always`}[`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`disableErrorBoundaries`,`safeDescriptors`].forEach((function(t){t in e&&(B[t]=!!e[t])})),B.allowStateReads=!B.observableRequiresReaction,e.reactionScheduler&&(r=e.reactionScheduler,i=Un,Un=function(e){return r((function(){return i(e)}))})},e.createAtom=se,e.defineProperty=function(e,n,r){if(Ut(e))return e[I].l(n,r);t(39)},e.entries=function(e){return Ut(e)?xt(e).map((function(t){return[t,e[t]]})):hr(e)?xt(e).map((function(t){return[t,e.get(t)]})):V(e)?Array.from(e.entries()):Rt(e)?e.map((function(e,t){return[t,e]})):void t(7)},e.extendObservable=pt,e.flow=nr,e.flowResult=function(e){return e},e.get=function(e,n){if(St(e,n))return Ut(e)?e[I].ct(n):hr(e)?e.get(n):Rt(e)?e[n]:void t(11)},e.getAtom=Jt,e.getDebugName=Yt,e.getDependencyTree=function(e,t){return mt(Jt(e,t))},e.getObserverTree=function(e,t){return ht(Jt(e,t))},e.has=St,e.intercept=function(e,t,n){return a(n)?function(e,t,n){return N(e,t).St(n)}(e,t,n):function(e,t){return N(e).St(t)}(e,t)},e.isAction=st,e.isBoxedObservable=Nn,e.isComputed=function(e){return vt(e)},e.isComputedProp=function(e,t){return vt(e,t)},e.isFlow=_t,e.isFlowCancellationError=function(e){return e instanceof $n},e.isObservable=bt,e.isObservableArray=Rt,e.isObservableMap=hr,e.isObservableObject=Ut,e.isObservableProp=function(e,t){return yt(e,t)},e.isObservableSet=V,e.keys=xt,e.makeAutoObservable=function(e,t,n){return c(e)?pt(e,e,t,n):(Xt((function(){var r=Vt(e,n)[I];if(!e[ir]){var i=Object.getPrototypeOf(e),a=new Set([].concat(dn(e),dn(i)));a.delete(`constructor`),a.delete(I),u(i,ir,a)}e[ir].forEach((function(e){return r.o(e,!t||!(e in t)||t[e])}))})),e)},e.makeObservable=function(e,t,n){return Xt((function(){var r=Vt(e,n)[I];t??=function(e){return g(e,pn)||u(e,pn,ee({},e[pn])),e[pn]}(e),dn(t).forEach((function(e){return r.o(e,t[e])}))})),e},e.observable=R,e.observe=function(e,t,n,r){return a(n)?function(e,t,n,r){return N(e,t)._t(n,r)}(e,t,n,r):function(e,t,n){return N(e)._t(t,n)}(e,t,n)},e.onBecomeObserved=ut,e.onBecomeUnobserved=dt,e.onReactionError=function(e){return B.globalReactionErrorHandlers.push(e),function(){var t=B.globalReactionErrorHandlers.indexOf(e);t>=0&&B.globalReactionErrorHandlers.splice(t,1)}},e.override=_n,e.ownKeys=Ct,e.reaction=function(e,t,n){function r(){if(p=!1,!h.isDisposed){var t=!1,r=s;h.track((function(){var n=Ie(!1,(function(){return e(h)}));t=f||!m(s,n),s=n})),(f&&n.fireImmediately||!f&&t)&&l(s,r,h),f=!1}}var i;n===void 0&&(n=on);var a,o,s,c=n.name??`Reaction`,l=Yn(c,n.onError?(a=n.onError,o=t,function(){try{return o.apply(this,arguments)}catch(e){a.call(this,e)}}):t),u=!n.scheduler&&!n.delay,d=lt(n),f=!0,p=!1,m=n.compareStructural?gn.structural:n.equals||gn.default,h=new Hn(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){Ut(e)?e[I].Ut(n):hr(e)||V(e)?e.delete(n):Rt(e)?(typeof n!=`number`&&(n=parseInt(n,10)),e.splice(n,1)):t(9)},e.runInAction=ot,e.set=function e(n,r,i){if(arguments.length!==2||V(n))Ut(n)?n[I].ht(r,i):hr(n)?n.set(r,i):V(n)?n.add(r):Rt(n)?(typeof r!=`number`&&(r=parseInt(r,10)),r<0&&t(`Invalid index: '`+r+`'`),Qe(),r>=n.length&&(n.length=r+1),n[r]=i,$e()):t(8);else{Qe();var a=r;try{for(var o in a)e(n,o,a[o])}finally{$e()}}},e.spy=it,e.toJS=function(e){return function e(t,n){if(typeof t!=`object`||!t||t instanceof Date||!bt(t))return t;if(Nn(t)||In(t))return e(t.get(),n);if(n.has(t))return n.get(t);if(Rt(t)){var r=wt(n,t,Array(t.length));return t.forEach((function(t,i){r[i]=e(t,n)})),r}if(V(t)){var i=wt(n,t,new Set);return t.forEach((function(t){i.add(e(t,n))})),i}if(hr(t)){var a=wt(n,t,new Map);return t.forEach((function(t,r){a.set(r,e(t,n))})),a}var o=wt(n,t,{});return Ct(t).forEach((function(r){rn.propertyIsEnumerable.call(t,r)&&(o[r]=e(t[r],n))})),o}(e,new Map)},e.trace=function(){},e.transaction=Tt,e.untracked=Ue,e.values=function(e){return Ut(e)?xt(e).map((function(t){return e[t]})):hr(e)?xt(e).map((function(t){return e.get(t)})):V(e)?Array.from(e.values()):Rt(e)?e.slice():void t(6)},e.when=function(e,t,n){return arguments.length===1||t&&typeof t==`object`?Dt(e,t):Et(e,t,n||{})}})),NT=fe((e=>{Object.defineProperty(e,`__esModule`,{value:!0});var t={0:`Invalid value for configuration 'enforceActions', expected 'never', 'always' or 'observed'`,1:function(e,t){return`Cannot apply '`+e+`' to '`+t.toString()+`': Field not found.`},5:`'keys()' can only be used on observable objects, arrays, sets and maps`,6:`'values()' can only be used on observable objects, arrays, sets and maps`,7:`'entries()' can only be used on observable objects, arrays and maps`,8:`'set()' can only be used on observable objects, arrays and maps`,9:`'remove()' can only be used on observable objects, arrays and maps`,10:`'has()' can only be used on observable objects, arrays and maps`,11:`'get()' can only be used on observable objects, arrays and maps`,12:`Invalid annotation`,13:`Dynamic observable objects cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)`,14:`Intercept handlers should return nothing or a change object`,15:`Observable arrays cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)`,16:`Modification exception: the internal structure of an observable array was changed.`,17:function(e,t){return`[mobx.array] Index out of bounds, `+e+` is larger than `+t},18:`mobx.map requires Map polyfill for the current browser. Check babel-polyfill or core-js/es6/map.js`,19:function(e){return`Cannot initialize from classes that inherit from Map: `+e.constructor.name},20:function(e){return`Cannot initialize map from `+e},21:function(e){return`Cannot convert to map from '`+e+`'`},22:`mobx.set requires Set polyfill for the current browser. Check babel-polyfill or core-js/es6/set.js`,23:`It is not possible to get index atoms from arrays`,24:function(e){return`Cannot obtain administration from `+e},25:function(e,t){return`the entry '`+e+`' does not exist in the observable map '`+t+`'`},26:`please specify a property`,27:function(e,t){return`no observable property '`+e.toString()+`' found on the observable object '`+t+`'`},28:function(e){return`Cannot obtain atom from `+e},29:`Expecting some object`,30:`invalid action stack. did you forget to finish an action?`,31:`missing option for computed: get`,32:function(e,t){return`Cycle detected in computation `+e+`: `+t},33:function(e){return`The setter of computed value '`+e+`' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?`},34:function(e){return`[ComputedValue '`+e+`'] It is not possible to assign a new value to a computed value.`},35:"There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`",36:`isolateGlobalState should be called before MobX is running any reactions`,37:function(e){return"[mobx] `observableArray."+e+"()` mutates the array in-place, which is not allowed inside a derivation. Use `array.slice()."+e+"()` instead"},38:`'ownKeys()' can only be used on observable objects`,39:`'defineProperty()' can only be used on observable objects`};function n(e){var n=[...arguments].slice(1),r=typeof e==`string`?e:t[e];throw typeof r==`function`&&(r=r.apply(null,n)),Error(`[MobX] `+r)}var r={};function i(){return typeof globalThis<`u`?globalThis:typeof window<`u`?window:typeof global<`u`?global:typeof self<`u`?self:r}var a=Object.assign,o=Object.getOwnPropertyDescriptor,s=Object.defineProperty,c=Object.prototype,l=[];Object.freeze(l);var u={};Object.freeze(u);var d=typeof Proxy<`u`,f=Object.toString();function p(){d||n("`Proxy` objects are not available in the current environment. Please configure MobX to enable a fallback implementation.`")}function m(e){L.verifyProxies&&n(`MobX is currently configured to be able to run in ES5 mode, but in ES5 MobX won't be able to `+e)}function h(){return++L.mobxGuid}function g(e){var t=!1;return function(){if(!t)return t=!0,e.apply(this,arguments)}}var _=function(){};function v(e){return typeof e==`function`}function y(e){switch(typeof e){case`string`:case`symbol`:case`number`:return!0}return!1}function b(e){return typeof e==`object`&&!!e}function x(e){if(!b(e))return!1;var t=Object.getPrototypeOf(e);if(t==null)return!0;var n=Object.hasOwnProperty.call(t,`constructor`)&&t.constructor;return typeof n==`function`&&n.toString()===f}function S(e){var t=e?.constructor;return t?t.name===`GeneratorFunction`||t.displayName===`GeneratorFunction`:!1}function C(e,t,n){s(e,t,{enumerable:!1,writable:!0,configurable:!0,value:n})}function ee(e,t,n){s(e,t,{enumerable:!1,writable:!1,configurable:!0,value:n})}function te(e,t){var n=`isMobX`+e;return t.prototype[n]=!0,function(e){return b(e)&&e[n]===!0}}function w(e){return e!=null&&Object.prototype.toString.call(e)===`[object Map]`}function ne(e){return Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(e)))===null}function re(e){return e!=null&&Object.prototype.toString.call(e)===`[object Set]`}var ie=Object.getOwnPropertySymbols!==void 0;function T(e){var t=Object.keys(e);if(!ie)return t;var n=Object.getOwnPropertySymbols(e);return n.length?[].concat(t,n.filter(function(t){return c.propertyIsEnumerable.call(e,t)})):t}var E=typeof Reflect<`u`&&Reflect.ownKeys?Reflect.ownKeys:ie?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames;function ae(e){return typeof e==`string`?e:typeof e==`symbol`?e.toString():new String(e).toString()}function oe(e){return e===null?null:typeof e==`object`?``+e:e}function se(e,t){return c.hasOwnProperty.call(e,t)}var ce=Object.getOwnPropertyDescriptors||function(e){var t={};return E(e).forEach(function(n){t[n]=o(e,n)}),t};function D(e,t){return!!(e&t)}function le(e,t,n){return n?e|=t:e&=~t,e}function ue(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function de(e,t,n){if(ve())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var i=new(e.bind.apply(e,r));return n&&ye(i,n.prototype),i}function fe(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,xe(r.key),r)}}function pe(e,t,n){return t&&fe(e.prototype,t),n&&fe(e,n),Object.defineProperty(e,`prototype`,{writable:!1}),e}function me(e,t){var n=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=Se(e))||t&&e&&typeof e.length==`number`){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw TypeError(`Invalid attempt to iterate non-iterable instance.
147
147
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function O(){return O=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},O.apply(null,arguments)}function he(e){return he=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},he(e)}function ge(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,ye(e,t)}function _e(e){try{return Function.toString.call(e).indexOf(`[native code]`)!==-1}catch{return typeof e==`function`}}function ve(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(ve=function(){return!!e})()}function ye(e,t){return ye=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},ye(e,t)}function be(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function xe(e){var t=be(e,`string`);return typeof t==`symbol`?t:t+``}function Se(e,t){if(e){if(typeof e==`string`)return ue(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ue(e,t):void 0}}function Ce(e){var t=typeof Map==`function`?new Map:void 0;return Ce=function(e){if(e===null||!_e(e))return e;if(typeof e!=`function`)throw TypeError(`Super expression must either be null or a function`);if(t!==void 0){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return de(e,arguments,he(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),ye(n,e)},Ce(e)}var we=Symbol(`mobx-stored-annotations`);function Te(e){function t(t,n){if(ke(n))return e.decorate_20223_(t,n);Ee(t,n,e)}return Object.assign(t,e)}function Ee(e,t,r){se(e,we)||C(e,we,O({},e[we])),Ge(r)&&!se(e[we],t)&&n(`'`+(e.constructor.name+`.prototype.`+t.toString())+`' is decorated with 'override', but no such decorated member was found on prototype.`),De(e,r,t),Ge(r)||(e[we][t]=r)}function De(e,t,r){if(!Ge(t)&&se(e[we],r)){var i=e.constructor.name+`.prototype.`+r.toString(),a=e[we][r].annotationType_,o=t.annotationType_;n(`Cannot apply '@`+o+`' to '`+i+`':`+(`
148
148
  The field is already decorated with '@`+a+`'.`)+`
149
149
  Re-decorating fields is not allowed.
@@ -173,32 +173,32 @@ The target is already observable of different type.
173
173
  Extending builtins is not supported.`),e;Object.isExtensible(e)||n(`Cannot make the designated object observable; it is not extensible`);var r=t?.name??(x(e)?`ObservableObject`:e.constructor.name)+`@`+h();return C(e,k,new Xi(e,new Map,String(r),Ft(t))),e}var Qi=te(`ObservableObjectAdministration`,Xi);function $i(e){return Ji[e]||(Ji[e]={get:function(){return this[k].getObservablePropValue_(e)},set:function(t){return this[k].setObservablePropValue_(e,t)}})}function ea(e){return b(e)?Qi(e[k]):!1}function ta(e,t,n){var r;e.appliedAnnotations_[n]=t,(r=e.target_[we])==null||delete r[n]}function na(e,t,r){if(wa(t)||n(`Cannot annotate '`+e.name_+`.`+r.toString()+`': Invalid annotation.`),!Ge(t)&&se(e.appliedAnnotations_,r)){var i=e.name_+`.`+r.toString(),a=e.appliedAnnotations_[r].annotationType_,o=t.annotationType_;n(`Cannot apply '`+o+`' to '`+i+`':`+(`
174
174
  The field is already annotated with '`+a+`'.`)+`
175
175
  Re-annotating fields is not allowed.
176
- Use 'override' annotation for methods overridden by subclass.`)}}var ra=la(0),ia=function(){var e=!1,t={};return Object.defineProperty(t,`0`,{set:function(){e=!0}}),Object.create(t)[0]=1,e===!1}(),aa=0,oa=function(){};function sa(e,t){Object.setPrototypeOf?Object.setPrototypeOf(e.prototype,t):e.prototype.__proto__===void 0?e.prototype=t:e.prototype.__proto__=t}sa(oa,Array.prototype);var ca=function(e){function t(t,n,r,i){var a;return r===void 0&&(r=`ObservableArray@`+h()),i===void 0&&(i=!1),a=e.call(this)||this,ga(function(){var e=new ki(r,n,i,!0);e.proxy_=a,ee(a,k,e),t&&t.length&&a.spliceWithArray(0,0,t),ia&&Object.defineProperty(a,`0`,ra)}),a}ge(t,e);var n=t.prototype;return n.concat=function(){this[k].atom_.reportObserved();var e=[...arguments];return Array.prototype.concat.apply(this.slice(),e.map(function(e){return Ii(e)?e.slice():e}))},n[Symbol.iterator]=function(){var e=this,t=0;return Sa({next:function(){return t<e.length?{value:e[t++],done:!1}:{done:!0,value:void 0}}})},pe(t,[{key:`length`,get:function(){return this[k].getArrayLength_()},set:function(e){this[k].setArrayLength_(e)}},{key:Symbol.toStringTag,get:function(){return`Array`}}])}(oa);Object.entries(ji).forEach(function(e){var t=e[0],n=e[1];t!==`concat`&&C(ca.prototype,t,n)});function la(e){return{enumerable:!1,configurable:!0,get:function(){return this[k].get_(e)},set:function(t){this[k].set_(e,t)}}}function ua(e){s(ca.prototype,``+e,la(e))}function da(e){if(e>aa){for(var t=aa;t<e+100;t++)ua(t);aa=e}}da(1e3);function fa(e,t,n){return new ca(e,t,n)}function pa(e,t){if(typeof e==`object`&&e){if(Ii(e))return t!==void 0&&n(23),e[k].atom_;if(Ki(e))return e.atom_;if(Vi(e)){if(t===void 0)return e.keysAtom_;var r=e.data_.get(t)||e.hasMap_.get(t);return r||n(25,t,ha(e)),r}if(ea(e)){if(!t)return n(26);var i=e[k].values_.get(t);return i||n(27,t,ha(e)),i}if(Me(e)||en(e)||B(e))return e}else if(v(e)&&B(e[k]))return e[k];n(28)}function ma(e,t){if(e||n(29),t!==void 0)return ma(pa(e,t));if(Me(e)||en(e)||B(e)||Vi(e)||Ki(e))return e;if(e[k])return e[k];n(24,e)}function ha(e,t){var n;if(t!==void 0)n=pa(e,t);else if(cr(e))return e.name;else n=ea(e)||Vi(e)||Ki(e)?ma(e):pa(e);return n.name_}function ga(e){var t=I(),n=Yt(!0);kn();try{return e()}finally{An(),Xt(n),mn(t)}}var _a=c.toString;function va(e,t,n){return n===void 0&&(n=-1),ya(e,t,n)}function ya(e,t,n,r,i){if(e===t)return e!==0||1/e==1/t;if(e==null||t==null)return!1;if(e!==e)return t!==t;var a=typeof e;if(a!==`function`&&a!==`object`&&typeof t!=`object`)return!1;var o=_a.call(e);if(o!==_a.call(t))return!1;switch(o){case`[object RegExp]`:case`[object String]`:return``+e==``+t;case`[object Number]`:return+e==+e?+e==0?1/e==1/t:+e==+t:+t!=+t;case`[object Date]`:case`[object Boolean]`:return+e==+t;case`[object Symbol]`:return typeof Symbol<`u`&&Symbol.valueOf.call(e)===Symbol.valueOf.call(t);case`[object Map]`:case`[object Set]`:n>=0&&n++;break}e=ba(e),t=ba(t);var s=o===`[object Array]`;if(!s){if(typeof e!=`object`||typeof t!=`object`)return!1;var c=e.constructor,l=t.constructor;if(c!==l&&!(v(c)&&c instanceof c&&v(l)&&l instanceof l)&&`constructor`in e&&`constructor`in t)return!1}if(n===0)return!1;n<0&&(n=-1),r||=[],i||=[];for(var u=r.length;u--;)if(r[u]===e)return i[u]===t;if(r.push(e),i.push(t),s){if(u=e.length,u!==t.length)return!1;for(;u--;)if(!ya(e[u],t[u],n-1,r,i))return!1}else{var d=Object.keys(e),f=d.length;if(Object.keys(t).length!==f)return!1;for(var p=0;p<f;p++){var m=d[p];if(!(se(t,m)&&ya(e[m],t[m],n-1,r,i)))return!1}}return r.pop(),i.pop(),!0}function ba(e){return Ii(e)?e.slice():w(e)||Vi(e)||re(e)||Ki(e)?Array.from(e.entries()):e}var xa=i().Iterator?.prototype||{};function Sa(e){return e[Symbol.iterator]=Ca,Object.assign(Object.create(xa),e)}function Ca(){return this}function wa(e){return e instanceof Object&&typeof e.annotationType_==`string`&&v(e.make_)&&v(e.extend_)}[`Symbol`,`Map`,`Set`].forEach(function(e){i()[e]===void 0&&n(`MobX requires global '`+e+`' to be available or polyfilled`)}),typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__==`object`&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:Jn,extras:{getDebugName:ha},$mobx:k}),e.$mobx=k,e.FlowCancellationError=kr,e.ObservableMap=Bi,e.ObservableSet=Gi,e.Reaction=In,e._allowStateChanges=N,e._allowStateChangesInsideComputed=sr,e._allowStateReadsEnd=gn,e._allowStateReadsStart=hn,e._autoAction=or,e._endAction=Jt,e._getAdministration=ma,e._getGlobalState=Cn,e._interceptReads=Ir,e._isComputingDerivation=on,e._resetGlobalState=wn,e._startAction=M,e.action=ar,e.autorun=lr,e.comparer=Re,e.computed=Vt,e.configure=xr,e.createAtom=Ne,e.defineProperty=$r,e.entries=Jr,e.extendObservable=Sr,e.flow=Mr,e.flowResult=Pr,e.get=Qr,e.getAtom=pa,e.getDebugName=ha,e.getDependencyTree=Cr,e.getObserverTree=Tr,e.has=Zr,e.intercept=Lr,e.isAction=cr,e.isBoxedObservable=$t,e.isComputed=Vr,e.isComputedProp=Hr,e.isFlow=Fr,e.isFlowCancellationError=Ar,e.isObservable=Wr,e.isObservableArray=Ii,e.isObservableMap=Vi,e.isObservableObject=ea,e.isObservableProp=Gr,e.isObservableSet=Ki,e.keys=Kr,e.makeAutoObservable=wi,e.makeObservable=Si,e.observable=j,e.observe=ti,e.onBecomeObserved=gr,e.onBecomeUnobserved=_r,e.onReactionError=Ln,e.override=We,e.ownKeys=ei,e.reaction=fr,e.remove=Xr,e.runInAction=sr,e.set=Yr,e.spy=Jn,e.toJS=oi,e.trace=si,e.transaction=li,e.untracked=pn,e.values=qr,e.when=ui})),NT=fe(((e,t)=>{process.env.NODE_ENV===`production`?t.exports=jT():t.exports=MT()}))();function PT(e){if(Array.isArray(e))return Object.freeze(e.map(PT));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]=PT(r);return Object.freeze(t)}return e}function FT(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 IT(e){return typeof e==`string`?e:String(e)}function LT(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 RT(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 zT(e,t){if(!(e instanceof Yr))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=BT(e.style).add(t),n}function BT(e){if(e instanceof V)return e;try{return V.parse(e)}catch(t){throw t instanceof gr?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 VT(e){return{fn:(t=>zT(t,e)),argTypes:[`liftable`],returnType:`T`}}function HT(e){return{fn:((t,n)=>zT(n,new V({[e]:P.parse(t)}))),argTypes:[`string`,`liftable`],returnType:`T`}}function UT(e,t){return new V({[e]:t})}function WT(){let e={};for(let t of pr)e[t]=VT(UT(t,!0)),e[`not_${t}`]=VT(UT(t,!1));for(let[t,n]of Object.entries(hr))e[t]=VT(UT(n,!0));return e}const GT={fn:((e,t)=>zT(t,V.parse(e))),argTypes:[`string`,`liftable`],returnType:`T`},KT={fn:((e,t)=>zT(t,new V({link:e}))),argTypes:[`string`,`liftable`],returnType:`T`};function qT(){return{fg:HT(`color`),bg:HT(`bgcolor`),...WT(),link:KT,style:GT}}function JT(e,t){if(!An.test(e.trim()))throw TypeError(`${t} expected a color (#RRGGBB or #RRGGBBAA), got ${JSON.stringify(e)} — to use a palette name here, wrap it: ${t} (color ${JSON.stringify(e)}) …`);return jn(e)}function YT(e,t){return{fn:t,argTypes:e,returnType:`string`}}function XT(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 ZT=YT([`string`,`int`],((e,t)=>Ln(JT(e,`darken`),XT(t,`darken`,`levels`)).hex)),QT=YT([`string`,`int`],((e,t)=>Ln(JT(e,`lighten`),-XT(t,`lighten`,`levels`)).hex)),$T={min:0,max:100,note:`0 = from, 100 = toward`},eE=YT([`string`,`string`,`float`],((e,t,n)=>sn(JT(e,`mix`),JT(t,`mix`),XT(n,`mix`,`percentage`,$T)/100).hex)),tE={min:1,max:21,note:`4.5 = AA body text, 3 = AA large text`},nE=YT([`string`],(e=>Rn(JT(e,`contrastOn`)).hex)),rE=YT([`string`,`string`,`float`],((e,t,n)=>Vn(JT(e,`readableOn`),JT(t,`readableOn`),XT(n,`readableOn`,`ratio`,tE)).hex)),iE={hueShift:`shiftHue`,chromaScale:`scaleChroma`,lightnessScale:`scaleLightness`,lightnessShift:`shiftLightness`};function aE(){let e={};for(let[t,n]of Object.entries(iE)){let r=t;e[n]=YT([`string`,`float`],((e,t)=>{let i={...yn,[r]:XT(t,n,`amount`)};return On.fromRgba(JT(e,n)).applyKey(i).toRgba().hex}))}return e}function oE(){return{darken:ZT,lighten:QT,mix:eE,contrastOn:nE,readableOn:rE,...aE()}}function sE(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:Mn(t,e[r+1])});return n}function cE(e){return{color:{fn:(t=>Mn(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 rr(nr(r),sE(i,e())).at(n).hex}),argTypes:[`float`,`string`],argTypePattern:`alternating`,returnType:`string`}}}function lE(){return{...qT(),...oE()}}new V({color:`red`,dim:!0});const uE=/^(?:(?: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,dE=/^(?<family>opus|sonnet|haiku)\s+(?<major>\d+)(?:\.(?<minor>\d))?$/i;function fE(e){if(!e)return`Claude`;let t=e.trim().replace(/\s*\([^)]*\)\s*$/,``).replace(/\s*\[[^\]]*\]\s*$/,``).trim(),n=t.match(uE);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(dE);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 pE(e){let t=e.match(dE);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 mE(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 hE(e){return e.toLocaleString()}function gE(e){if(e.length===0)throw Error(`a cascade needs at least one stop, e.g. "0:calm"`);let t=[];for(let[n,r]of e.entries()){let e=r.indexOf(`:`),i=e<0?NaN:Number(r.slice(0,e));if(!Number.isFinite(i))throw Error(`cascade stop ${n} ("${r}") must be "<position>:<result>", e.g. "80:hot" — the position must be a number`);let a=t[n-1];if(a!==void 0&&i<a.at)throw Error(`cascade stops must be in ascending position order; stop ${n} at ${i} follows stop ${n-1} at ${a.at}`);t.push({at:i,text:r.slice(e+1)})}return t}function _E(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 vE=[`▁`,`▂`,`▃`,`▄`,`▅`,`▆`,`▇`,`█`],yE=vE.length;function bE(e,t){let n=t===void 0?e:t<=0?[]:e.slice(-t);if(n.length===0)return``;let r=n[0],i=n[0];for(let e of n)e<r&&(r=e),e>i&&(i=e);let a=i-r,o=``;for(let e of n){let t=a===0?0:Math.round((e-r)/a*(yE-1));o+=vE[t]}return o}function xE(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 SE=xi(),CE=[...ji];function wE(){return{basename:{fn:e=>l(e),argTypes:[`string`]},dirname:{fn:e=>u(e),argTypes:[`string`]},abbreviatePath:{fn:e=>mE(e),argTypes:[`string`]},int:{fn:e=>LT(e),argTypes:[`value`]},string:{fn:e=>IT(e),argTypes:[`value`]},bool:{fn:e=>RT(e),argTypes:[`value`]},urlEncode:{fn:e=>encodeURIComponent(e),argTypes:[`string`]},themes:{fn:()=>SE,argTypes:[]},styles:{fn:()=>CE,argTypes:[]},sparkline:{fn:(e,t)=>bE(xE(e),t),argTypes:[`string`,`int`]},cascade:{fn:(e,...t)=>_E(e,gE(t)),argTypes:[`float`,`string`]}}}function TE(e=()=>new Date){return{minutesUntilReset:{fn:t=>Math.round(Math.max(0,t*1e3-e().getTime())/6e4),argTypes:[`int`]},formatInteger:{fn:e=>hE(e),argTypes:[`int`]},round:{fn:e=>Math.round(e),argTypes:[`float`]},formatModelName:{fn:e=>fE(e),argTypes:[`string`]},shortenModelName:{fn:e=>pE(e),argTypes:[`string`]}}}function EE(e,t=()=>new Date){return Qu({fromString:e=>new Yr(e),toString:e=>e.plain,isT:e=>e instanceof Yr,clock:t,missingKey:`error`,funcs:{...Bf(),...Xm(),...Ep(),...Jp(),...Mf(t),...xd(),...ep(),...lE(),...wE(),...TE(t),...e??{}}})}function DE(e){return OE(e,new Set(e.names()),``)}function OE(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`?kE(a,e.readDocument(a)):e.read(a);let o=`${a}.`;for(let n of t)if(n.startsWith(o))return OE(e,t,a)}})}function kE(e,t){switch(t.kind){case`ok`:return t.value;case`absent`:throw Error(`variable "${e}" has no value yet: its source has not completed a scan`);case`failed`:throw Error(`variable "${e}": ${t.reason}`)}}const AE=/\r\n|\r|\n/g,jE=e=>X(e.replace(AE,` `).trim());function ME(e){return t=>{let n=e.exec(t)?.[1];return n===void 0?Q(`regex no-match`):X(n.replace(AE,` `))}}const NE=e=>{try{return X(JSON.parse(e))}catch(e){return Q(`JSON parse failed: ${e.message}`)}};function PE(e,t){return t.kind!==`ttl`||t.durationMs>=500?t:(O(`declareShell "${e}": ttl ${t.durationMs}ms below floor 500ms; clamping`),{kind:`ttl`,durationMs:500})}function FE(e){let t=/^(\d+(?:\.\d+)?)(ms|s|m|h)$/.exec(e);if(!t)throw RangeError(`Invalid duration: "${e}"`);let n=parseFloat(t[1]);switch(t[2]){case`ms`:return n;case`s`:return n*1e3;case`m`:return n*6e4;case`h`:return n*36e5;default:throw RangeError(`Unexpected duration unit: "${t[2]}"`)}}function IE(e,t){return{where:`output of "${e}"`,read:async()=>{let n=await we({bin:`/bin/sh`,args:[`-c`,e],category:`user-shell`,signal:t});if(!n.ok&&n.reason===`aborted`)throw t.reason;return n.ok?X(n.stdout):Q(`shell "${e}" ${n.exitCode===null?[n.reason,n.error].filter(e=>e!==void 0).join(`: `):`exited with code ${n.exitCode}`}`)}}}function LE(e,t,n){return{where:`"${e}"`,read:async()=>{try{let r=await re(e,{encoding:`utf8`,signal:n});return X(t===`first-line`?r.split(/\r?\n/)[0]??``:r)}catch{if(n.aborted)throw n.reason;return Q(`file unreadable: ${e}`)}}}}function RE(e,t,n){if(e.kind!==`ok`)return e;let r=t(e.value);return r.kind===`failed`?Q(`${r.reason} in ${n}`):r}const zE=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],BE=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],VE=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],HE=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`];function UE(e,t){let n=[[`2006`,e=>String(e.getFullYear())],[`January`,e=>zE[e.getMonth()]],[`Monday`,e=>VE[e.getDay()]],[`Jan`,e=>BE[e.getMonth()]],[`Mon`,e=>HE[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 WE={branch:`string`,sha:`string`,dirty:`boolean`,ahead:`number`,behind:`number`,stash:`number`};function GE(e,t,n,r){if(e===null){if(n!==void 0)return n;let e=WE[t];try{return YE(r,e)}catch{return XE(e)}}switch(t){case`branch`:return e.branch===`detached`?``:e.branch;case`sha`:return Yb(e.sha,``);case`dirty`:return e.status!==`clean`;case`ahead`:return Yb(e.aheadBehind,{ahead:0,behind:0}).ahead;case`behind`:return Yb(e.aheadBehind,{ahead:0,behind:0}).behind;case`stash`:return Yb(e.stashCount,0)}}var KE=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}},qE=class{buckets=new Map;subscribe(e,t){let n=this.buckets.get(e);if(!n){let t=new Set;n={timer:oe(()=>{for(let e of t)e()},e),callbacks:t},this.buckets.set(e,n)}return n.callbacks.add(t),()=>this.unsubscribe(e,t)}unsubscribe(e,t){let n=this.buckets.get(e);n&&(n.callbacks.delete(t),n.callbacks.size===0&&(ae(n.timer),this.buckets.delete(e)))}dispose(){for(let{timer:e}of this.buckets.values())ae(e);this.buckets.clear()}bucketCount(){return this.buckets.size}};function JE(e,t){let n=e;for(let e of t.split(`.`)){if(typeof n!=`object`||!n)return;n=n[e]}return n}function YE(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`?IT(e):t===`number`?LT(e):RT(e)}function XE(e){return e===`number`?0:e===`boolean`?!1:``}var ZE=class{inputMetas=new Map;lastErrors=new Map;watchMgr=new KE;ttlMgr=new qE;gitSubscriptions=new Map;cleanups=[];inFlight=new Map;reads=new rw;abort=new AbortController;engine=EE();gitProvider;ownsGitProvider;sessionState;constructor(e,t=``,n,r){this.store=e,this.defaultEmptyValue=t,n?(this.gitProvider=n,this.ownsGitProvider=!1):(this.gitProvider=new uw({sanityIntervalMs:0}),this.ownsGitProvider=!0),this.sessionState=r}get variableStore(){return this.store}declareLiteral(e,t){this.store.defineBox(e,FT(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,IE(t,this.abort.signal),PE(e,n.cache),n.parse)}declareFile(e,t,n){this.declareSource(e,LE(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,jE,t.default,n);case`regex`:return this.scalarPublisher(e,ME(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=RE(n,t,r);this.noteOutcome(e,a),this.store.setBox(e,Yb(a,i))}}documentPublisher(e,t,n){let r=t===void 0?Z:X(t);return this.store.defineDocument(e,r),i=>{let a=RE(i,NE,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=DE(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 UE(t.format,e)}catch{return this.stringInitial(t.varDefault)}})(new Date));let r=this.ttlMgr.subscribe(n,()=>{try{this.store.setBox(e,UE(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=WE[t.field],r=t.varDefault===void 0?XE(n):YE(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,GE(t,n,i,this.defaultEmptyValue))})});i={fieldSubs:e,firstDelivery:n.firstDelivery,unsubscribe:n.unsubscribe},this.gitSubscriptions.set(t.cwd,i)}let a=i.fieldSubs.get(t.field);a||(a=[],i.fieldSubs.set(t.field,a)),a.push({name:e,varDefault:t.varDefault}),this.track(e,i.firstDelivery)}declareState(e,t){if(!this.sessionState)throw Error(`declareState("${e}"): SourceRegistry was constructed without a SessionState — state-kind variables require a SessionState (the daemon provides one; tests must supply one)`);let n=this.sessionState,r=t.varDefault??this.stringInitial(void 0);this.store.defineComputed(e,`string`,e=>{let i=e(`session.id`);if(typeof i!=`string`||!i)return r;let a=n.get(i,t.key);return a===null?r:a})}applyInput(e){this.store.runInAction(()=>{for(let[t,n]of this.inputMetas){let r=JE(e,n.path),i=this.store.getType(t);if(r!==void 0)try{this.store.setBox(t,YE(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`)}})}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,NT.reaction)(()=>{let t=DE(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,NT.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,YE(this.defaultEmptyValue,t))}catch{this.store.setBox(e,XE(t))}}defaultFor(e){try{return YE(this.defaultEmptyValue,e)}catch{return XE(e)}}stringInitial(e){return e===void 0?typeof this.defaultEmptyValue==`string`?this.defaultEmptyValue:``:e}recordError(e,t){this.lastErrors.set(e,{timestamp:Date.now(),message:t})}noteOutcome(e,t){t.kind===`ok`?this.lastErrors.delete(e):this.recordError(e,t.kind===`failed`?t.reason:`no value`)}};function QE(e,t){return e===void 0?!0:e.evaluate(t).map(e=>e.plain).join(``)!==`false`}function $E(e,t){let n=Yr.fromFragments(e);return n.end=``,n.noWrap=!0,t!==void 0&&!t.isNull&&(n.style=t),n}function eD(e,t,n){e.cellLength>t?e.truncate(t,{mode:n.truncate,marker:n.truncateMarker}):e.cellLength<t&&e.align(n.justify,t)}const tD=Symbol(`cc-candybar.fillDemand`);function nD(e,t){return e[tD]=t,e}function rD(e){return e[tD]}function iD(e,t){let{width:n,justify:r,truncate:i,truncateMarker:a=`…`,baseStyle:o,padding:s}=t;if(e.length===0)return[];let c=$E(e,o).pad(s);if(n===`auto`)return[c];let l={justify:r,truncate:i,truncateMarker:a};return n===`fill`?[nD(c,l)]:(eD(c,n,l),[c])}const aD=RegExp(`\\x1b\\[[0-9;]*m|${dr.source}`,`g`);function oD(e){return j(e.replace(aD,``))}function sD(e,t){let n=[];for(let t of e){let e=rD(t);e!==void 0&&n.push({cell:t,how:e})}if(n.length===0||!Number.isFinite(t.width))return e;let r=uS(e,t).split(`
177
- `);if(r.length>1)return e;let i=Math.max(0,t.width-oD(r[0]??``)),a=Math.floor(i/n.length),o=i-a*n.length;return n.forEach(({cell:e,how:t},r)=>{let i=a+(r===n.length-1?o:0);eD(e,e.cellLength+i,t)}),e}function cD(e,t){let n=[],r=[],i=()=>{if(!r.length)return;let e=lD(r,t);e.plain.length>0&&n.push(e),r=[]};for(let a of e)if(dD(a.style).link){i();let e=lD([a],t);e.plain.length>0&&n.push(e)}else r.push(a);return i(),n}function lD(e,t){let n=t!==void 0&&!t.isNull?e.map(e=>uD(e,t)):e,r=Yr.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 uD(e,t){let n=e.copy();return n.style=t.add(dD(e.style)),n}function dD(e){return e instanceof V?e:V.parse(e)}var fD=class extends Error{constructor(e,t,n){super(`Invalid ${t} color ${JSON.stringify(e)}: ${n}`),this.name=`ColorSpecError`}};function pD(e,t,n,r,i,a,o,s){let c={segName:t,palette:n,disclosure:r,tint:i,bg:void 0};e.current=c;let l=mD(a,s),u=l===void 0?i:hD(n,l,`bg`);c.bg=u;let d=mD(o,s),f=d===void 0?Ac(n,u):hD(n,d,`fg`);return new V({bgcolor:P.fromRgba(u),color:P.fromRgba(f)})}function mD(e,t){if(e!==void 0)return e.evaluate(t).map(e=>e.plain).join(``)}function hD(e,t,n){try{return Mn(e,t)}catch(e){throw e instanceof kn?new fD(t,n,e.message):e}}const gD=new Map([[`palette`,`theme.effective`],[`preset`,`preset.effective`],[`look`,`look.effective`],[`style`,`style.effective`],[`charset`,`charset.effective`],[`colorCompatibility`,`colorCompatibility.effective`],[`autoWrap`,`autoWrap.effective`],[`padding`,`padding.effective`]]);function _D(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,vD(e,t,o,n,r,i));return i}function vD(e,t,n,r,i,a){if(o_(n)){let[o,s]=s_(n);return yD(r.get(n.persistWhen)??n.persistWhen,n.set,vD(e,t,o,r,i,a),vD(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=Sv(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=gD.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=Sv(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=Sv(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:xD(e,n.copy,t)};if(`open`in n)return{kind:`open`,target:xD(e,n.open,t)};if(`reset`in n)return{kind:`reset`,key:n.reset};if(`doctor`in n)return n.doctor===`run`?{kind:`doctor-run`}:{kind:`doctor-fix`,check:n.check};if(`undo`in n)return{kind:`undo`};if(`redo`in n)return{kind:`redo`};let[o,...s]=n.do.map(e=>{let n=a.get(e);if(n===void 0)throw Error(`action "${t}" fires "${e}", which is not declared in this config`);return n});return{kind:`do`,head:o,rest:s}}function yD(e,t,n,r){return{kind:`dual`,selector:e,session:`stateVar`in n&&`stateVar`in r?{...n,stateVar:r.stateVar}:n,durable:r,sessionKey:t}}function bD(e,t){return e.kind===`do`?bD(e.head,t):e.kind===`dual`?zi(SD(t,e.selector))===!0?e.durable:e.session:e}function xD(e,t,n){try{return e(t)}catch(e){throw Error(`Template parse error in actions.${n}: ${e.message}`,{cause:e})}}function SD(e,t){return e.has(t)?IT(e.read(t)):``}function CD(e,t){return e.evaluate(t).map(e=>e.plain).join(``)}function wD(e,t,n,r){let i=new Yr(e,{style:V.combine([r,new V({link:t,bold:n})])});return i.noWrap=!0,i.end=``,i}function TD(e,t){return Math.max(e.members.indexOf(SD(t,e.stateVar)),0)}function ED(e,t,n,r,i){switch(e.kind){case`set-literal`:{let t=SD(r,e.stateVar);return{effects:[{verb:wb,args:[i,e.key,e.value]}],active:t===e.value}}case`set-option`:{let a=n??t,o=SD(r,e.stateVar);return{effects:[{verb:wb,args:[i,e.key,a]}],active:o===a}}case`set-int`:{let a=n??t,o=SD(r,e.stateVar);return{effects:[{verb:wb,args:[i,e.key,a]}],active:o===a}}case`set-cycle`:{let t=e.members[(TD(e,r)+1)%e.members.length];return{effects:[{verb:wb,args:[i,e.key,t]}],active:!1}}case`set-bounded`:return{effects:[{verb:Tb,args:[i,e.key,String(e.by)]}],active:!1};case`copy`:return{effects:[{verb:Eb,args:[CD(e.text,DE(r))]}],active:!1};case`open`:return{effects:[{verb:Db,args:[CD(e.target,DE(r))]}],active:!1};case`persist-literal`:{let t=SD(r,e.stateVar);return{effects:[{verb:jb,args:[i,e.key,e.value]}],active:t===e.value}}case`persist-option`:{let a=n??t,o=SD(r,e.stateVar);return{effects:[{verb:jb,args:[i,e.key,a]}],active:o===a}}case`persist-cycle`:{let t=e.members[(TD(e,r)+1)%e.members.length];return{effects:[{verb:jb,args:[i,e.key,t]}],active:!1}}case`persist-bounded`:return{effects:[{verb:Mb,args:[i,e.key,String(e.by)]}],active:!1};case`reset`:return{effects:[{verb:Nb,args:[i,e.key]}],active:!1};case`undo`:return{effects:[{verb:Fb,args:[i]}],active:!1};case`redo`:return{effects:[{verb:Ib,args:[i]}],active:!1};case`doctor-run`:return{effects:[{verb:Rb,args:[i]}],active:!1};case`doctor-fix`:return{effects:[{verb:zb,args:[i,e.check]}],active:!1};case`layout-op`:return{effects:[{verb:Pb,args:[i,e.key,wh(e.op)]}],active:!1};case`dual`:{let a=bD(e,r),{effects:o,active:s}=ED(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=ED(e.head,t,n,r,i);return{effects:[...a.effects,...e.rest.flatMap(e=>ED(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:Pb,args:[i,e.key,wh(r)]}],active:!1}}}}function DD(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:Fo(`action "${e}"`,n,t.members.length,TD(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 OD(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}=DD(e,bD(r,i),t,i),{effects:s,active:c}=ED(r,a,o,i,SD(i,`session.id`));return wD(a,Hb(s),c)}function kD(e){return{action:{fn:(t,...n)=>OD(t,n,e),argTypes:[`string`,`string`],returnType:`T`}}}function AD(e,t){return wD(`✕`,Hb([{verb:wb,args:[SD(e,`session.id`),t,Mo]}]),!1)}function jD(e,t){return new V({bgcolor:P.fromRgba(t),color:P.fromRgba(Ac(e,t))})}function MD(e,t){return jD(e.palette,Lc(e.palette,e.disclosure,[t]))}function ND(e,t,n,r){return r===void 0?n=>MD(e,{...n,distribution:t}):(e,t)=>PD(r(t,n))}function PD(e){let t=wc(e,`background`);return new V({bgcolor:P.fromRgba(t),color:P.fromRgba(Vn(wc(e,`primary`),t,4.5))})}function FD(){return{current:null}}function ID(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 LD(e){return new Yr(e).cellLength}function RD(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 zD(e,t){let n=[];for(let t of e)n.length>0&&n.push(new Yr(` `)),n.push(t);let r=Yr.fromFragments(n);return r.noWrap=t,r.end=``,r}function BD(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 VD(e,t){let n=e.compiled.get(t),r=n&&bD(n,e.store);if(!r||r.kind!==`set-option`&&r.kind!==`persist-option`&&r.kind!==`layout-op-option`)throw Error(`picker 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 ${r?`a ${r.kind} action`:`no such action`}`);return r}function HD(e,t,n,r,i,a,o){let s=VD(a,e),c=a.compiled.get(e),l=a.store,u=SD(l,`session.id`),d=`stateVar`in s?SD(l,s.stateVar):void 0,f=s.options.map(LD),p=i?Math.max(1,LT(l.read(`term.cols`))-lS(a.stripStyle)-2*a.padding):1/0,m=LD(`✕`)+1,h=LD(`←`)+1+LD(`→`)+1,g=RD(f,p,m),_=g.length>1?RD(f,p,m+h):g,v=parseInt(SD(l,t.stateVar),10),y=Number.isInteger(v)?Math.max(0,Math.min(v,_.length-1)):0,b=_[y]??[],x=e=>Hb([{verb:wb,args:[u,t.key,String(e)]}]),S=n.flatMap(([e,t])=>[e,t]),C=Hb([{verb:wb,args:[u,...S]}]),ee=r?[{verb:wb,args:[u,...S]}]:[],te=e=>Hb([...ED(c,e,e,l,u).effects,...ee]),w=[wD(`✕`,C,!1)];y>0&&w.push(wD(`←`,x(y-1),!1));for(let e of b){let t=s.options[e];w.push(wD(t,te(t),t===d,o({index:e,count:s.options.length},t)))}return y<_.length-1&&w.push(wD(`→`,x(y+1),!1)),zD(w,i)}function UD(e,t){return{picker:{fn:(n,r,i,a)=>{let o=BD(e,r,`set-int`,`an int action ({ set, int: true })`);return HD(n,{key:o.key,stateVar:o.stateVar},[[o.key,`-1`]],i===!0,a===!0,e,ND(ID(t,`{{ picker }}`),vc(void 0),e.basePalette,VD(e,n).paletteOf))},argTypes:[`string`,`string`,`bool`,`bool`],returnType:`T`}}}const WD=Symbol(`cc-candybar.menuDrop`);function GD(e){return e.flatMap(e=>e[WD]??[])}function KD(e,t,n,r){let i=r.activeSegment.current;if(i===null)throw Error(`{{ menu }} rendered with no active segment placement — the render walk must publish one before evaluating a segment template`);let a=r.action,o=Qm(i.segName,e,n.key),s=th(o),c=Zm(e),l=SD(a.store,o)===c,u=SD(a.store,`session.id`),d=l?Mo:c,f=wD(Fo(`{{ menu "${e}" }}`,t,2,+!!l),Hb([{verb:wb,args:[u,o,d,s,`0`]}]),!1);return f[WD]=l?[HD(e,{key:s,stateVar:s},[[o,Mo],[s,`0`]],n.closeOnPick,n.paged,a,ND(i,n.distribution,a.basePalette,VD(a,e).paletteOf))]:[],f}const qD=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function JD(e,t){let n=t[t.length-1],r=qD(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:ah(r??{})}}function YD(e){return{menu:{fn:(t,...n)=>{let{displays:r,options:i}=JD(t,n);return KD(t,r,i,e)},argTypes:[`string`,`value`],returnType:`T`}}}function XD(e){let{value:t,max:n,width:r,filled:i,empty:a,colourAt:o}=e,s=ZD(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 Yr(t?i:a,{style:l===void 0?void 0:new V({color:l})}))}let l=Yr.fromFragments(c);return l.end=``,l.noWrap=!0,l}function ZD(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 QD(e){let t={fn:(()=>{let t=ID(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:(()=>ID(e,`{{ tint }}`).tint.hex),argTypes:[],returnType:`string`},r=cE(()=>ID(e,`{{ color }} / {{ ramp }} / {{ gauge }}`).palette),i={fn:((e,t,n,i,a,o,...s)=>XD({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,...$D(s)))})),argTypes:[`float`,`float`,`int`,`string`,`string`,`string`,`string`],returnType:`T`};return{...r,bgOf:t,tint:n,gauge:i}}function $D(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 eO(e){let t=[],n=[];for(let r of e){if(!r.contains(`
176
+ Use 'override' annotation for methods overridden by subclass.`)}}var ra=la(0),ia=function(){var e=!1,t={};return Object.defineProperty(t,`0`,{set:function(){e=!0}}),Object.create(t)[0]=1,e===!1}(),aa=0,oa=function(){};function sa(e,t){Object.setPrototypeOf?Object.setPrototypeOf(e.prototype,t):e.prototype.__proto__===void 0?e.prototype=t:e.prototype.__proto__=t}sa(oa,Array.prototype);var ca=function(e){function t(t,n,r,i){var a;return r===void 0&&(r=`ObservableArray@`+h()),i===void 0&&(i=!1),a=e.call(this)||this,ga(function(){var e=new ki(r,n,i,!0);e.proxy_=a,ee(a,k,e),t&&t.length&&a.spliceWithArray(0,0,t),ia&&Object.defineProperty(a,`0`,ra)}),a}ge(t,e);var n=t.prototype;return n.concat=function(){this[k].atom_.reportObserved();var e=[...arguments];return Array.prototype.concat.apply(this.slice(),e.map(function(e){return Ii(e)?e.slice():e}))},n[Symbol.iterator]=function(){var e=this,t=0;return Sa({next:function(){return t<e.length?{value:e[t++],done:!1}:{done:!0,value:void 0}}})},pe(t,[{key:`length`,get:function(){return this[k].getArrayLength_()},set:function(e){this[k].setArrayLength_(e)}},{key:Symbol.toStringTag,get:function(){return`Array`}}])}(oa);Object.entries(ji).forEach(function(e){var t=e[0],n=e[1];t!==`concat`&&C(ca.prototype,t,n)});function la(e){return{enumerable:!1,configurable:!0,get:function(){return this[k].get_(e)},set:function(t){this[k].set_(e,t)}}}function ua(e){s(ca.prototype,``+e,la(e))}function da(e){if(e>aa){for(var t=aa;t<e+100;t++)ua(t);aa=e}}da(1e3);function fa(e,t,n){return new ca(e,t,n)}function pa(e,t){if(typeof e==`object`&&e){if(Ii(e))return t!==void 0&&n(23),e[k].atom_;if(Ki(e))return e.atom_;if(Vi(e)){if(t===void 0)return e.keysAtom_;var r=e.data_.get(t)||e.hasMap_.get(t);return r||n(25,t,ha(e)),r}if(ea(e)){if(!t)return n(26);var i=e[k].values_.get(t);return i||n(27,t,ha(e)),i}if(Me(e)||en(e)||B(e))return e}else if(v(e)&&B(e[k]))return e[k];n(28)}function ma(e,t){if(e||n(29),t!==void 0)return ma(pa(e,t));if(Me(e)||en(e)||B(e)||Vi(e)||Ki(e))return e;if(e[k])return e[k];n(24,e)}function ha(e,t){var n;if(t!==void 0)n=pa(e,t);else if(cr(e))return e.name;else n=ea(e)||Vi(e)||Ki(e)?ma(e):pa(e);return n.name_}function ga(e){var t=I(),n=Yt(!0);kn();try{return e()}finally{An(),Xt(n),mn(t)}}var _a=c.toString;function va(e,t,n){return n===void 0&&(n=-1),ya(e,t,n)}function ya(e,t,n,r,i){if(e===t)return e!==0||1/e==1/t;if(e==null||t==null)return!1;if(e!==e)return t!==t;var a=typeof e;if(a!==`function`&&a!==`object`&&typeof t!=`object`)return!1;var o=_a.call(e);if(o!==_a.call(t))return!1;switch(o){case`[object RegExp]`:case`[object String]`:return``+e==``+t;case`[object Number]`:return+e==+e?+e==0?1/e==1/t:+e==+t:+t!=+t;case`[object Date]`:case`[object Boolean]`:return+e==+t;case`[object Symbol]`:return typeof Symbol<`u`&&Symbol.valueOf.call(e)===Symbol.valueOf.call(t);case`[object Map]`:case`[object Set]`:n>=0&&n++;break}e=ba(e),t=ba(t);var s=o===`[object Array]`;if(!s){if(typeof e!=`object`||typeof t!=`object`)return!1;var c=e.constructor,l=t.constructor;if(c!==l&&!(v(c)&&c instanceof c&&v(l)&&l instanceof l)&&`constructor`in e&&`constructor`in t)return!1}if(n===0)return!1;n<0&&(n=-1),r||=[],i||=[];for(var u=r.length;u--;)if(r[u]===e)return i[u]===t;if(r.push(e),i.push(t),s){if(u=e.length,u!==t.length)return!1;for(;u--;)if(!ya(e[u],t[u],n-1,r,i))return!1}else{var d=Object.keys(e),f=d.length;if(Object.keys(t).length!==f)return!1;for(var p=0;p<f;p++){var m=d[p];if(!(se(t,m)&&ya(e[m],t[m],n-1,r,i)))return!1}}return r.pop(),i.pop(),!0}function ba(e){return Ii(e)?e.slice():w(e)||Vi(e)||re(e)||Ki(e)?Array.from(e.entries()):e}var xa=i().Iterator?.prototype||{};function Sa(e){return e[Symbol.iterator]=Ca,Object.assign(Object.create(xa),e)}function Ca(){return this}function wa(e){return e instanceof Object&&typeof e.annotationType_==`string`&&v(e.make_)&&v(e.extend_)}[`Symbol`,`Map`,`Set`].forEach(function(e){i()[e]===void 0&&n(`MobX requires global '`+e+`' to be available or polyfilled`)}),typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__==`object`&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:Jn,extras:{getDebugName:ha},$mobx:k}),e.$mobx=k,e.FlowCancellationError=kr,e.ObservableMap=Bi,e.ObservableSet=Gi,e.Reaction=In,e._allowStateChanges=N,e._allowStateChangesInsideComputed=sr,e._allowStateReadsEnd=gn,e._allowStateReadsStart=hn,e._autoAction=or,e._endAction=Jt,e._getAdministration=ma,e._getGlobalState=Cn,e._interceptReads=Ir,e._isComputingDerivation=on,e._resetGlobalState=wn,e._startAction=M,e.action=ar,e.autorun=lr,e.comparer=Re,e.computed=Vt,e.configure=xr,e.createAtom=Ne,e.defineProperty=$r,e.entries=Jr,e.extendObservable=Sr,e.flow=Mr,e.flowResult=Pr,e.get=Qr,e.getAtom=pa,e.getDebugName=ha,e.getDependencyTree=Cr,e.getObserverTree=Tr,e.has=Zr,e.intercept=Lr,e.isAction=cr,e.isBoxedObservable=$t,e.isComputed=Vr,e.isComputedProp=Hr,e.isFlow=Fr,e.isFlowCancellationError=Ar,e.isObservable=Wr,e.isObservableArray=Ii,e.isObservableMap=Vi,e.isObservableObject=ea,e.isObservableProp=Gr,e.isObservableSet=Ki,e.keys=Kr,e.makeAutoObservable=wi,e.makeObservable=Si,e.observable=j,e.observe=ti,e.onBecomeObserved=gr,e.onBecomeUnobserved=_r,e.onReactionError=Ln,e.override=We,e.ownKeys=ei,e.reaction=fr,e.remove=Xr,e.runInAction=sr,e.set=Yr,e.spy=Jn,e.toJS=oi,e.trace=si,e.transaction=li,e.untracked=pn,e.values=qr,e.when=ui})),PT=fe(((e,t)=>{process.env.NODE_ENV===`production`?t.exports=MT():t.exports=NT()}))();function FT(e){if(Array.isArray(e))return Object.freeze(e.map(FT));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]=FT(r);return Object.freeze(t)}return e}function IT(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 LT(e){return typeof e==`string`?e:String(e)}function RT(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 zT(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 BT(e,t){if(!(e instanceof Yr))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=VT(e.style).add(t),n}function VT(e){if(e instanceof V)return e;try{return V.parse(e)}catch(t){throw t instanceof gr?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 HT(e){return{fn:(t=>BT(t,e)),argTypes:[`liftable`],returnType:`T`}}function UT(e){return{fn:((t,n)=>BT(n,new V({[e]:P.parse(t)}))),argTypes:[`string`,`liftable`],returnType:`T`}}function WT(e,t){return new V({[e]:t})}function GT(){let e={};for(let t of pr)e[t]=HT(WT(t,!0)),e[`not_${t}`]=HT(WT(t,!1));for(let[t,n]of Object.entries(hr))e[t]=HT(WT(n,!0));return e}const KT={fn:((e,t)=>BT(t,V.parse(e))),argTypes:[`string`,`liftable`],returnType:`T`},qT={fn:((e,t)=>BT(t,new V({link:e}))),argTypes:[`string`,`liftable`],returnType:`T`};function JT(){return{fg:UT(`color`),bg:UT(`bgcolor`),...GT(),link:qT,style:KT}}function YT(e,t){if(!An.test(e.trim()))throw TypeError(`${t} expected a color (#RRGGBB or #RRGGBBAA), got ${JSON.stringify(e)} — to use a palette name here, wrap it: ${t} (color ${JSON.stringify(e)}) …`);return jn(e)}function XT(e,t){return{fn:t,argTypes:e,returnType:`string`}}function ZT(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 QT=XT([`string`,`int`],((e,t)=>Ln(YT(e,`darken`),ZT(t,`darken`,`levels`)).hex)),$T=XT([`string`,`int`],((e,t)=>Ln(YT(e,`lighten`),-ZT(t,`lighten`,`levels`)).hex)),eE={min:0,max:100,note:`0 = from, 100 = toward`},tE=XT([`string`,`string`,`float`],((e,t,n)=>sn(YT(e,`mix`),YT(t,`mix`),ZT(n,`mix`,`percentage`,eE)/100).hex)),nE={min:1,max:21,note:`4.5 = AA body text, 3 = AA large text`},rE=XT([`string`],(e=>Rn(YT(e,`contrastOn`)).hex)),iE=XT([`string`,`string`,`float`],((e,t,n)=>Vn(YT(e,`readableOn`),YT(t,`readableOn`),ZT(n,`readableOn`,`ratio`,nE)).hex)),aE={hueShift:`shiftHue`,chromaScale:`scaleChroma`,lightnessScale:`scaleLightness`,lightnessShift:`shiftLightness`};function oE(){let e={};for(let[t,n]of Object.entries(aE)){let r=t;e[n]=XT([`string`,`float`],((e,t)=>{let i={...yn,[r]:ZT(t,n,`amount`)};return On.fromRgba(YT(e,n)).applyKey(i).toRgba().hex}))}return e}function sE(){return{darken:QT,lighten:$T,mix:tE,contrastOn:rE,readableOn:iE,...oE()}}function cE(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:Mn(t,e[r+1])});return n}function lE(e){return{color:{fn:(t=>Mn(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 rr(nr(r),cE(i,e())).at(n).hex}),argTypes:[`float`,`string`],argTypePattern:`alternating`,returnType:`string`}}}function uE(){return{...JT(),...sE()}}new V({color:`red`,dim:!0});const dE=/^(?:(?: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,fE=/^(?<family>opus|sonnet|haiku)\s+(?<major>\d+)(?:\.(?<minor>\d))?$/i;function pE(e){if(!e)return`Claude`;let t=e.trim().replace(/\s*\([^)]*\)\s*$/,``).replace(/\s*\[[^\]]*\]\s*$/,``).trim(),n=t.match(dE);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(fE);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 mE(e){let t=e.match(fE);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 hE(e){let t=e.split(`/`),n=t.length-1;return t.map((e,t)=>{if(t===n)return e;let r=e.match(/^\.*./);return r?r[0]:e}).join(`/`)}function gE(e){return e.toLocaleString()}function _E(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 vE(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 yE=[`▁`,`▂`,`▃`,`▄`,`▅`,`▆`,`▇`,`█`],bE=yE.length;function xE(e,t){let n=t===void 0?e:t<=0?[]:e.slice(-t);if(n.length===0)return``;let r=n[0],i=n[0];for(let e of n)e<r&&(r=e),e>i&&(i=e);let a=i-r,o=``;for(let e of n){let t=a===0?0:Math.round((e-r)/a*(bE-1));o+=yE[t]}return o}function SE(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 CE=xi(),wE=[...ji];function TE(){return{basename:{fn:e=>l(e),argTypes:[`string`]},dirname:{fn:e=>u(e),argTypes:[`string`]},abbreviatePath:{fn:e=>hE(e),argTypes:[`string`]},int:{fn:e=>RT(e),argTypes:[`value`]},string:{fn:e=>LT(e),argTypes:[`value`]},bool:{fn:e=>zT(e),argTypes:[`value`]},urlEncode:{fn:e=>encodeURIComponent(e),argTypes:[`string`]},themes:{fn:()=>CE,argTypes:[]},styles:{fn:()=>wE,argTypes:[]},sparkline:{fn:(e,t)=>xE(SE(e),t),argTypes:[`string`,`int`]},cascade:{fn:(e,...t)=>vE(e,_E(t)),argTypes:[`float`,`string`]}}}function EE(e=()=>new Date){return{minutesUntilReset:{fn:t=>Math.round(Math.max(0,t*1e3-e().getTime())/6e4),argTypes:[`int`]},formatInteger:{fn:e=>gE(e),argTypes:[`int`]},round:{fn:e=>Math.round(e),argTypes:[`float`]},formatModelName:{fn:e=>pE(e),argTypes:[`string`]},shortenModelName:{fn:e=>mE(e),argTypes:[`string`]}}}function DE(e,t=()=>new Date){return $u({fromString:e=>new Yr(e),toString:e=>e.plain,isT:e=>e instanceof Yr,clock:t,missingKey:`error`,funcs:{...Vf(),...Zm(),...Dp(),...Yp(),...Nf(t),...Sd(),...tp(),...uE(),...TE(),...EE(t),...e??{}}})}function OE(e){return kE(e,new Set(e.names()),``)}function kE(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`?AE(a,e.readDocument(a)):e.read(a);let o=`${a}.`;for(let n of t)if(n.startsWith(o))return kE(e,t,a)}})}function AE(e,t){switch(t.kind){case`ok`:return t.value;case`absent`:throw Error(`variable "${e}" has no value yet: its source has not completed a scan`);case`failed`:throw Error(`variable "${e}": ${t.reason}`)}}const jE=/\r\n|\r|\n/g,ME=e=>X(e.replace(jE,` `).trim());function NE(e){return t=>{let n=e.exec(t)?.[1];return n===void 0?Q(`regex no-match`):X(n.replace(jE,` `))}}const PE=e=>{try{return X(JSON.parse(e))}catch(e){return Q(`JSON parse failed: ${e.message}`)}};function FE(e,t){return t.kind!==`ttl`||t.durationMs>=500?t:(O(`declareShell "${e}": ttl ${t.durationMs}ms below floor 500ms; clamping`),{kind:`ttl`,durationMs:500})}function IE(e){let t=/^(\d+(?:\.\d+)?)(ms|s|m|h)$/.exec(e);if(!t)throw RangeError(`Invalid duration: "${e}"`);let n=parseFloat(t[1]);switch(t[2]){case`ms`:return n;case`s`:return n*1e3;case`m`:return n*6e4;case`h`:return n*36e5;default:throw RangeError(`Unexpected duration unit: "${t[2]}"`)}}function LE(e,t){return{where:`output of "${e}"`,read:async()=>{let n=await we({bin:`/bin/sh`,args:[`-c`,e],category:`user-shell`,signal:t});if(!n.ok&&n.reason===`aborted`)throw t.reason;return n.ok?X(n.stdout):Q(`shell "${e}" ${n.exitCode===null?[n.reason,n.error].filter(e=>e!==void 0).join(`: `):`exited with code ${n.exitCode}`}`)}}}function RE(e,t,n){return{where:`"${e}"`,read:async()=>{try{let r=await re(e,{encoding:`utf8`,signal:n});return X(t===`first-line`?r.split(/\r?\n/)[0]??``:r)}catch{if(n.aborted)throw n.reason;return Q(`file unreadable: ${e}`)}}}}function zE(e,t,n){if(e.kind!==`ok`)return e;let r=t(e.value);return r.kind===`failed`?Q(`${r.reason} in ${n}`):r}const BE=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],VE=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],HE=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],UE=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`];function WE(e,t){let n=[[`2006`,e=>String(e.getFullYear())],[`January`,e=>BE[e.getMonth()]],[`Monday`,e=>HE[e.getDay()]],[`Jan`,e=>VE[e.getMonth()]],[`Mon`,e=>UE[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 GE={branch:`string`,sha:`string`,dirty:`boolean`,ahead:`number`,behind:`number`,stash:`number`};function KE(e,t,n,r){if(e===null){if(n!==void 0)return n;let e=GE[t];try{return XE(r,e)}catch{return ZE(e)}}switch(t){case`branch`:return e.branch===`detached`?``:e.branch;case`sha`:return Xb(e.sha,``);case`dirty`:return e.status!==`clean`;case`ahead`:return Xb(e.aheadBehind,{ahead:0,behind:0}).ahead;case`behind`:return Xb(e.aheadBehind,{ahead:0,behind:0}).behind;case`stash`:return Xb(e.stashCount,0)}}var qE=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}},JE=class{buckets=new Map;subscribe(e,t){let n=this.buckets.get(e);if(!n){let t=new Set;n={timer:oe(()=>{for(let e of t)e()},e),callbacks:t},this.buckets.set(e,n)}return n.callbacks.add(t),()=>this.unsubscribe(e,t)}unsubscribe(e,t){let n=this.buckets.get(e);n&&(n.callbacks.delete(t),n.callbacks.size===0&&(ae(n.timer),this.buckets.delete(e)))}dispose(){for(let{timer:e}of this.buckets.values())ae(e);this.buckets.clear()}bucketCount(){return this.buckets.size}};function YE(e,t){let n=e;for(let e of t.split(`.`)){if(typeof n!=`object`||!n)return;n=n[e]}return n}function XE(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`?LT(e):t===`number`?RT(e):zT(e)}function ZE(e){return e===`number`?0:e===`boolean`?!1:``}var QE=class{inputMetas=new Map;lastErrors=new Map;watchMgr=new qE;ttlMgr=new JE;gitSubscriptions=new Map;cleanups=[];inFlight=new Map;reads=new iw;abort=new AbortController;engine=DE();gitProvider;ownsGitProvider;sessionState;constructor(e,t=``,n,r){this.store=e,this.defaultEmptyValue=t,n?(this.gitProvider=n,this.ownsGitProvider=!1):(this.gitProvider=new dw({sanityIntervalMs:0}),this.ownsGitProvider=!0),this.sessionState=r}get variableStore(){return this.store}declareLiteral(e,t){this.store.defineBox(e,IT(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,LE(t,this.abort.signal),FE(e,n.cache),n.parse)}declareFile(e,t,n){this.declareSource(e,RE(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,ME,t.default,n);case`regex`:return this.scalarPublisher(e,NE(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=zE(n,t,r);this.noteOutcome(e,a),this.store.setBox(e,Xb(a,i))}}documentPublisher(e,t,n){let r=t===void 0?Z:X(t);return this.store.defineDocument(e,r),i=>{let a=zE(i,PE,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=OE(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 WE(t.format,e)}catch{return this.stringInitial(t.varDefault)}})(new Date));let r=this.ttlMgr.subscribe(n,()=>{try{this.store.setBox(e,WE(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=GE[t.field],r=t.varDefault===void 0?ZE(n):XE(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,KE(t,n,i,this.defaultEmptyValue))})});i={fieldSubs:e,firstDelivery:n.firstDelivery,unsubscribe:n.unsubscribe},this.gitSubscriptions.set(t.cwd,i)}let a=i.fieldSubs.get(t.field);a||(a=[],i.fieldSubs.set(t.field,a)),a.push({name:e,varDefault:t.varDefault}),this.track(e,i.firstDelivery)}declareState(e,t){if(!this.sessionState)throw Error(`declareState("${e}"): SourceRegistry was constructed without a SessionState — state-kind variables require a SessionState (the daemon provides one; tests must supply one)`);let n=this.sessionState,r=t.varDefault??this.stringInitial(void 0);this.store.defineComputed(e,`string`,e=>{let i=e(`session.id`);if(typeof i!=`string`||!i)return r;let a=n.get(i,t.key);return a===null?r:a})}applyInput(e){this.store.runInAction(()=>{for(let[t,n]of this.inputMetas){let r=YE(e,n.path),i=this.store.getType(t);if(r!==void 0)try{this.store.setBox(t,XE(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`)}})}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,PT.reaction)(()=>{let t=OE(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,PT.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,XE(this.defaultEmptyValue,t))}catch{this.store.setBox(e,ZE(t))}}defaultFor(e){try{return XE(this.defaultEmptyValue,e)}catch{return ZE(e)}}stringInitial(e){return e===void 0?typeof this.defaultEmptyValue==`string`?this.defaultEmptyValue:``:e}recordError(e,t){this.lastErrors.set(e,{timestamp:Date.now(),message:t})}noteOutcome(e,t){t.kind===`ok`?this.lastErrors.delete(e):this.recordError(e,t.kind===`failed`?t.reason:`no value`)}};function $E(e,t){return e===void 0?!0:e.evaluate(t).map(e=>e.plain).join(``)!==`false`}function eD(e,t){let n=Yr.fromFragments(e);return n.end=``,n.noWrap=!0,t!==void 0&&!t.isNull&&(n.style=t),n}function tD(e,t,n){e.cellLength>t?e.truncate(t,{mode:n.truncate,marker:n.truncateMarker}):e.cellLength<t&&e.align(n.justify,t)}const nD=Symbol(`cc-candybar.fillDemand`);function rD(e,t){return e[nD]=t,e}function iD(e){return e[nD]}function aD(e,t){let{width:n,justify:r,truncate:i,truncateMarker:a=`…`,baseStyle:o,padding:s}=t;if(e.length===0)return[];let c=eD(e,o).pad(s);if(n===`auto`)return[c];let l={justify:r,truncate:i,truncateMarker:a};return n===`fill`?[rD(c,l)]:(tD(c,n,l),[c])}const oD=RegExp(`\\x1b\\[[0-9;]*m|${dr.source}`,`g`);function sD(e){return j(e.replace(oD,``))}function cD(e,t){let n=[];for(let t of e){let e=iD(t);e!==void 0&&n.push({cell:t,how:e})}if(n.length===0||!Number.isFinite(t.width))return e;let r=dS(e,t).split(`
177
+ `);if(r.length>1)return e;let i=Math.max(0,t.width-sD(r[0]??``)),a=Math.floor(i/n.length),o=i-a*n.length;return n.forEach(({cell:e,how:t},r)=>{let i=a+(r===n.length-1?o:0);tD(e,e.cellLength+i,t)}),e}function lD(e,t){let n=[],r=[],i=()=>{if(!r.length)return;let e=uD(r,t);e.plain.length>0&&n.push(e),r=[]};for(let a of e)if(fD(a.style).link){i();let e=uD([a],t);e.plain.length>0&&n.push(e)}else r.push(a);return i(),n}function uD(e,t){let n=t!==void 0&&!t.isNull?e.map(e=>dD(e,t)):e,r=Yr.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 dD(e,t){let n=e.copy();return n.style=t.add(fD(e.style)),n}function fD(e){return e instanceof V?e:V.parse(e)}var pD=class extends Error{constructor(e,t,n){super(`Invalid ${t} color ${JSON.stringify(e)}: ${n}`),this.name=`ColorSpecError`}};function mD(e,t,n,r,i,a,o,s){let c={segName:t,palette:n,disclosure:r,tint:i,bg:void 0};e.current=c;let l=hD(a,s),u=l===void 0?i:gD(n,l,`bg`);c.bg=u;let d=hD(o,s),f=d===void 0?jc(n,u):gD(n,d,`fg`);return new V({bgcolor:P.fromRgba(u),color:P.fromRgba(f)})}function hD(e,t){if(e!==void 0)return e.evaluate(t).map(e=>e.plain).join(``)}function gD(e,t,n){try{return Mn(e,t)}catch(e){throw e instanceof kn?new pD(t,n,e.message):e}}const _D=new Map([[`palette`,`theme.effective`],[`preset`,`preset.effective`],[`look`,`look.effective`],[`style`,`style.effective`],[`charset`,`charset.effective`],[`colorCompatibility`,`colorCompatibility.effective`],[`autoWrap`,`autoWrap.effective`],[`padding`,`padding.effective`]]);function vD(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,yD(e,t,o,n,r,i));return i}function yD(e,t,n,r,i,a){if(s_(n)){let[o,s]=c_(n);return bD(r.get(n.persistWhen)??n.persistWhen,n.set,yD(e,t,o,r,i,a),yD(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=Cv(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=_D.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=Cv(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=Cv(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:SD(e,n.copy,t)};if(`open`in n)return{kind:`open`,target:SD(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 bD(e,t,n,r){return{kind:`dual`,selector:e,session:`stateVar`in n&&`stateVar`in r?{...n,stateVar:r.stateVar}:n,durable:r,sessionKey:t}}function xD(e,t){return e.kind===`do`?xD(e.head,t):e.kind===`dual`?zi(CD(t,e.selector))===!0?e.durable:e.session:e}function SD(e,t,n){try{return e(t)}catch(e){throw Error(`Template parse error in actions.${n}: ${e.message}`,{cause:e})}}function CD(e,t){return e.has(t)?LT(e.read(t)):``}function wD(e,t){return e.evaluate(t).map(e=>e.plain).join(``)}function TD(e,t,n,r){let i=new Yr(e,{style:V.combine([r,new V({link:t,bold:n})])});return i.noWrap=!0,i.end=``,i}function ED(e,t){return Math.max(e.members.indexOf(CD(t,e.stateVar)),0)}function DD(e,t,n,r,i){switch(e.kind){case`set-literal`:{let t=CD(r,e.stateVar);return{effects:[{verb:Tb,args:[i,e.key,e.value]}],active:t===e.value}}case`set-option`:{let a=n??t,o=CD(r,e.stateVar);return{effects:[{verb:Tb,args:[i,e.key,a]}],active:o===a}}case`set-int`:{let a=n??t,o=CD(r,e.stateVar);return{effects:[{verb:Tb,args:[i,e.key,a]}],active:o===a}}case`set-cycle`:{let t=e.members[(ED(e,r)+1)%e.members.length];return{effects:[{verb:Tb,args:[i,e.key,t]}],active:!1}}case`set-bounded`:return{effects:[{verb:Eb,args:[i,e.key,String(e.by)]}],active:!1};case`copy`:return{effects:[{verb:Db,args:[wD(e.text,OE(r))]}],active:!1};case`open`:return{effects:[{verb:Ob,args:[wD(e.target,OE(r))]}],active:!1};case`persist-literal`:{let t=CD(r,e.stateVar);return{effects:[{verb:Mb,args:[i,e.key,e.value]}],active:t===e.value}}case`persist-option`:{let a=n??t,o=CD(r,e.stateVar);return{effects:[{verb:Mb,args:[i,e.key,a]}],active:o===a}}case`persist-cycle`:{let t=e.members[(ED(e,r)+1)%e.members.length];return{effects:[{verb:Mb,args:[i,e.key,t]}],active:!1}}case`persist-bounded`:return{effects:[{verb:Nb,args:[i,e.key,String(e.by)]}],active:!1};case`reset`:return{effects:[{verb:Pb,args:[i,e.key]}],active:!1};case`undo`:return{effects:[{verb:Ib,args:[i]}],active:!1};case`redo`:return{effects:[{verb:Lb,args:[i]}],active:!1};case`doctor-run`:return{effects:[{verb:zb,args:[i]}],active:!1};case`doctor-fix`:return{effects:[{verb:Bb,args:[i,e.check]}],active:!1};case`layout-op`:return{effects:[{verb:Fb,args:[i,e.key,Th(e.op)]}],active:!1};case`dual`:{let a=xD(e,r),{effects:o,active:s}=DD(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=DD(e.head,t,n,r,i);return{effects:[...a.effects,...e.rest.flatMap(e=>DD(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:Fb,args:[i,e.key,Th(r)]}],active:!1}}}}function OD(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:Io(`action "${e}"`,n,t.members.length,ED(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 kD(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}=OD(e,xD(r,i),t,i),{effects:s,active:c}=DD(r,a,o,i,CD(i,`session.id`));return TD(a,Ub(s),c)}function AD(e){return{action:{fn:(t,...n)=>kD(t,n,e),argTypes:[`string`,`string`],returnType:`T`}}}function jD(e,t){return TD(`✕`,Ub([{verb:Tb,args:[CD(e,`session.id`),t,No]}]),!1)}function MD(e,t){return new V({bgcolor:P.fromRgba(t),color:P.fromRgba(jc(e,t))})}function ND(e,t){return MD(e.palette,Rc(e.palette,e.disclosure,[t]))}function PD(e,t,n,r){return r===void 0?n=>ND(e,{...n,distribution:t}):(e,t)=>FD(r(t,n))}function FD(e){let t=wc(e,`background`);return new V({bgcolor:P.fromRgba(t),color:P.fromRgba(Vn(wc(e,`primary`),t,4.5))})}function ID(){return{current:null}}function LD(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 RD(e){return new Yr(e).cellLength}function zD(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 BD(e,t){let n=[];for(let t of e)n.length>0&&n.push(new Yr(` `)),n.push(t);let r=Yr.fromFragments(n);return r.noWrap=t,r.end=``,r}function VD(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 HD(e,t){let n=e.compiled.get(t),r=n&&xD(n,e.store);if(!r||r.kind!==`set-option`&&r.kind!==`persist-option`&&r.kind!==`layout-op-option`)throw Error(`picker 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 ${r?`a ${r.kind} action`:`no such action`}`);return r}function UD(e,t,n,r,i,a,o){let s=HD(a,e),c=a.compiled.get(e),l=a.store,u=CD(l,`session.id`),d=`stateVar`in s?CD(l,s.stateVar):void 0,f=s.options.map(RD),p=i?Math.max(1,RT(l.read(`term.cols`))-uS(a.stripStyle)-2*a.padding):1/0,m=RD(`✕`)+1,h=RD(`←`)+1+RD(`→`)+1,g=zD(f,p,m),_=g.length>1?zD(f,p,m+h):g,v=parseInt(CD(l,t.stateVar),10),y=Number.isInteger(v)?Math.max(0,Math.min(v,_.length-1)):0,b=_[y]??[],x=e=>Ub([{verb:Tb,args:[u,t.key,String(e)]}]),S=n.flatMap(([e,t])=>[e,t]),C=Ub([{verb:Tb,args:[u,...S]}]),ee=r?[{verb:Tb,args:[u,...S]}]:[],te=e=>Ub([...DD(c,e,e,l,u).effects,...ee]),w=[TD(`✕`,C,!1)];y>0&&w.push(TD(`←`,x(y-1),!1));for(let e of b){let t=s.options[e];w.push(TD(t,te(t),t===d,o({index:e,count:s.options.length},t)))}return y<_.length-1&&w.push(TD(`→`,x(y+1),!1)),BD(w,i)}function WD(e,t){return{picker:{fn:(n,r,i,a)=>{let o=VD(e,r,`set-int`,`an int action ({ set, int: true })`);return UD(n,{key:o.key,stateVar:o.stateVar},[[o.key,`-1`]],i===!0,a===!0,e,PD(LD(t,`{{ picker }}`),vc(void 0),e.basePalette,HD(e,n).paletteOf))},argTypes:[`string`,`string`,`bool`,`bool`],returnType:`T`}}}const GD=Symbol(`cc-candybar.menuDrop`);function KD(e){return e.flatMap(e=>e[GD]??[])}function qD(e,t,n,r){let i=r.activeSegment.current;if(i===null)throw Error(`{{ menu }} rendered with no active segment placement — the render walk must publish one before evaluating a segment template`);let a=r.action,o=$m(i.segName,e,n.key),s=nh(o),c=Qm(e),l=CD(a.store,o)===c,u=CD(a.store,`session.id`),d=l?No:c,f=TD(Io(`{{ menu "${e}" }}`,t,2,+!!l),Ub([{verb:Tb,args:[u,o,d,s,`0`]}]),!1);return f[GD]=l?[UD(e,{key:s,stateVar:s},[[o,No],[s,`0`]],n.closeOnPick,n.paged,a,PD(i,n.distribution,a.basePalette,HD(a,e).paletteOf))]:[],f}const JD=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function YD(e,t){let n=t[t.length-1],r=JD(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:oh(r??{})}}function XD(e){return{menu:{fn:(t,...n)=>{let{displays:r,options:i}=YD(t,n);return qD(t,r,i,e)},argTypes:[`string`,`value`],returnType:`T`}}}function ZD(e){let{value:t,max:n,width:r,filled:i,empty:a,colourAt:o}=e,s=QD(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 Yr(t?i:a,{style:l===void 0?void 0:new V({color:l})}))}let l=Yr.fromFragments(c);return l.end=``,l.noWrap=!0,l}function QD(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 $D(e){let t={fn:(()=>{let t=LD(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:(()=>LD(e,`{{ tint }}`).tint.hex),argTypes:[],returnType:`string`},r=lE(()=>LD(e,`{{ color }} / {{ ramp }} / {{ gauge }}`).palette),i={fn:((e,t,n,i,a,o,...s)=>ZD({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,...eO(s)))})),argTypes:[`float`,`float`,`int`,`string`,`string`,`string`,`string`],returnType:`T`};return{...r,bgOf:t,tint:n,gauge:i}}function eO(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 tO(e){let t=[],n=[];for(let r of e){if(!r.contains(`
178
178
  `)){n.push(r);continue}let e=r.split(`
179
- `);n.push(e[0]);for(let r=1;r<e.length;r++)t.push(n),n=[e[r]]}return t.push(n),t}function tO(e,t){switch(e){case`vertical`:return nO(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))]:nO(e)}}}function nO(e){return e.map(e=>e.span===`row`?{...e,span:`shared`}:e)}const rO={container:{compile(e,t){return{kind:`container`,direction:e.direction,when:t.when,distribution:vc(e.distribution),children:e.children.map((e,n)=>t.compileChild(e,`${t.path}.children[${n}]`))}},render(e,t){return tO(e.direction,e.children.map((n,r)=>t.renderChild(n,t.visible,{index:r,count:e.children.length,distribution:e.distribution})))}},segment:{compile(e,t){return{kind:`segment`,when:t.when,name:e.name,...e.opens!==void 0&&{opens:{open:t.parse(Ro(e.opens.ref),`opens`),body:t.compileChild(e.opens.body,`${t.path}.opens.body`),key:e.opens.ref.key,placement:e.opens.placement}}}},render(e,t){let n=t.lookupSegment(e.name);if(!n)throw Error(`Layout segment "${e.name}" has no matching segment`);let{seg:r,compiled:i}=n;if(!t.visible)return[];try{if(!QE(i.when,t.scope))return[];let n=i.palette??t.palette,a=t.enterSegment(e.name,n,t.region,i.bg,i.fg),o=i.template.evaluate(t.scope),s=t.exitSegment(o),c=e.opens!==void 0&&QE(e.opens.open,t.scope),l=s.length>0||c?a.trigger:a.closed,u={width:r.width??`auto`,justify:r.justify??`left`,truncate:r.truncate??`right`,baseStyle:l,padding:t.padding},d=e.opens===void 0?[]:t.renderBody(e.opens.body,c,a.disclosure),f=d.slice(0,+(e.opens?.placement===`inline`)),p=d.slice(f.length),m=e.opens!==void 0&&p.some(e=>e.band===`own`)?iD(cD([t.closeDisclosure(e.opens.key)],a.trigger),{...u,width:`auto`,baseStyle:a.trigger}):[],h=e=>e.band===`own`?m:[],g=p.map(e=>({cells:[...h(e),...e.cells],band:`deeper`,span:`shared`})),_=eO(cD(o,l)).map(e=>({cells:iD(e,u),band:`own`,span:`shared`})),v=s.map(e=>({cells:iD(cD([e],a.band),{...u,baseStyle:a.band}),band:`deeper`,span:`shared`})),y=[..._,...v];return t.perSegmentSink!==void 0&&t.perSegmentSink.set(e.name,[...y.flatMap(e=>e.cells),...p.flatMap(h)]),[...y.map((e,t)=>t===0&&f.length>0?{cells:[...e.cells,...f.flatMap(e=>e.cells)],band:`own`,span:`row`}:e),...g]}catch(n){let r=n.message??String(n);t.onSegmentError?.(e.name,r);let i=r.replace(/\s*\n\s*/g,` `);return[{cells:[new Yr(`⚠ ${e.name}: ${i}`,{end:``,noWrap:!0})],band:`own`,span:`shared`}]}}}};function iO(e){return rO[e]}function aO(e){if(`ttl`in e)return{kind:`ttl`,durationMs:FE(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 oO(e,t){switch(Ra(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 sO(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:aO(n.cache),parse:oO(n.parse,n.default)});break;case`shell`:e.declareShell(t,n.command,{cache:aO(n.cache),parse:oO(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?FE(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 cO(e,t){let n=zl.EMPTY;for(let[r,i]of Object.entries(t))try{n=e.parse(`{{ define "${r}" }}${i}{{ end }}`,n).defines()}catch(e){throw Error(`Template parse error in helpers.${r}: ${e.message}`,{cause:e})}return n}function lO(e,t,n){let r=n?.cwd??process.cwd(),i={store:t.variableStore,compiled:new Map,stripStyle:`powerline`,basePalette:_v(e.globals.palette),padding:1},a=FD(),o={action:i,activeSegment:a},s=Object.keys(e.looks),c=kh(e.presets),l=new Map([...bv(e),...Xh(e)]),u=EE({...kD(i),...UD(i,a),...YD(o),...QD(a),looks:{fn:()=>s,argTypes:[]},presets:{fn:()=>c,argTypes:[]}},n?.clock),d=cO(u,e.helpers),f=e=>u.parse(e,d),p=new Map;for(let[t,n]of Object.entries(e.variables))n.kind===`state`&&!p.has(n.key)&&p.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`&&!p.has(r.key)&&p.set(r.key,`${t}.${e}`);i.compiled=_D(f,e.actions,p,l);let m=[];for(let[n,i]of Object.entries(e.variables))try{sO(t,n,i,r)}catch(e){m.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{sO(t,`${n}.${e}`,a,r)}catch(t){m.push(`Variable "${n}.${e}": ${t.message??String(t)}`)}let h=Object.create(null);for(let[t,n]of Object.entries(e.segments)){let e=(e,n)=>{try{return f(e)}catch(e){throw Error(`Template parse error in segments.${t}.${n}: ${e.message}`,{cause:e})}};h[t]={when:n.when===void 0?void 0:e(n.when,`when`),template:e(n.template,`template`),bg:n.bg===void 0?void 0:e(n.bg,`bg`),fg:n.fg===void 0?void 0:e(n.fg,`fg`),palette:n.palette===void 0?void 0:uv(n.palette)}}let g=(e,t,n)=>{try{return f(e)}catch(e){throw Error(`Template parse error in ${t}.${n}: ${e.message}`,{cause:e})}},_=(e,t)=>{let n={path:t,when:e.when===void 0?void 0:g(e.when,t,`when`),parse:(e,n)=>g(e,t,n),compileChild:_};return iO(e.kind).compile(e,n)},v=new Map;for(let t of c){let{node:n,path:r}=Mh(e,t);v.set(t,_(n,r))}let y=new Map;for(let t of Ci){let n=e.globals[t];wi(n)&&y.set(t,uO(f,t,n))}return{segments:h,roots:v,activeSegment:a,menuRuntime:o,globalExpressions:y,loadWarnings:m}}function uO(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 dO(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 fO(e,t){return e.kind===`decided`?e.name:t}function pO(e,t,n,r,i,a,o,s){let{perSegmentSink:c,onSegmentError:l,onRenderWarning:u}=o??{},{preset:d=Dh}=s??{},f=s?.look??ki(`none`,e.looks),p=s?.theme??hv(void 0,null,e.globals.palette),m=(e,t)=>({...i,term:{cols:a.width},theme:{effective:e},look:{effective:t}});r.applyInput(m(fO(p,vi),fO(f,Di))),t.menuRuntime.action.stripStyle=a.style,t.menuRuntime.action.padding=a.padding;let h=DE(n),g=Ei(p,()=>dO(t,`palette`,h),e=>mv(e,e=>u?.(e))),_=Ei(f,()=>dO(t,`look`,h),t=>ki(t,e.looks));(g!==p||_!==f)&&r.applyInput(m(g.name,_.name));let v=g.value;t.menuRuntime.action.basePalette=v;let y=fv(v,_.value);c?.clear();let b=n=>{let r=e.segments[n],i=t.segments[n];return r!==void 0&&i!==void 0?{seg:r,compiled:i}:void 0},x=(e,n,r,i,a)=>{let{tint:o,disclosure:s}=Vc(n,r),c=pD(t.activeSegment,e,n,s,o,i,a,h),l=Fc(n,s);return{closed:c,trigger:jD(n,l.state),band:jD(n,l.plane),disclosure:s}},S=e=>(t.activeSegment.current=null,GD(e)),C=(e,t,r)=>{let i=t&&QE(e.when,h),o={scope:h,palette:y,visible:i,padding:a.padding,region:r,perSegmentSink:c,onSegmentError:l,enterSegment:x,exitSegment:S,lookupSegment:b,renderChild:(e,t,n)=>C(e,t,zc(r,n)),renderBody:(e,t,n)=>C(e,i&&t,Bc(n)),closeDisclosure:e=>AD(n,e)};return iO(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 "${Dh}"; a miss here is merge/policy drift (have: ${[...t.roots.keys()].join(`, `)})`);return C(ee,!0,Rc).map(e=>uS(sD(e.cells,a),a)).join(`
180
- `)}var mO=class{kind=`box`;cell;lastChangedAt;constructor(e,t,n){this.name=e,this.type=t,bO(e,t,n,`initial value`),this.cell=NT.observable.box(n,{deep:!1}),this.lastChangedAt=Date.now()}read(){return this.cell.get()}set(e){bO(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}},hO=class{kind=`computed`;cell;constructor(e,t,n){this.name=e,this.type=t,this.cell=(0,NT.computed)(()=>{let e=n();return bO(this.name,this.type,e,`computed result`),e},{keepAlive:!0})}read(){return this.cell.get()}lastUpdatedMs(){return null}},gO=class{kind=`document`;cell;lastChangedAt;constructor(e,t){this.name=e,this.cell=NT.observable.box(yO(t),{deep:!1}),this.lastChangedAt=Date.now()}read(){return this.cell.get()}set(e){let t=yO(e);vO(this.cell.get(),t)||(this.cell.set(t),this.lastChangedAt=Date.now())}lastUpdatedMs(){return this.lastChangedAt}};function _O(e){return JSON.stringify(e)}function vO(e,t){return _O(e)===_O(t)}function yO(e){return e.kind===`ok`?{kind:`ok`,value:PT(e.value)}:e}function bO(e,t,n,r){let i=FT(n);if(i!==t)throw TypeError(`Variable "${e}": ${r} type ${i} does not match declared type ${t}`)}var xO=class{nodes=new Map;defineBox(e,t,n){this.assertNotDefined(e),this.nodes.set(e,new mO(e,t,n))}defineDocument(e,t){this.assertNotDefined(e),this.nodes.set(e,new gO(e,t))}defineComputed(e,t,n){this.assertNotDefined(e);let r=e=>this.read(e);this.nodes.set(e,new hO(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,NT.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,NT.runInAction)(()=>n.set(t))}runInAction(e){(0,NT.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 _O(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 SO(e,t,n){return e+`\0`+t+`\0`+(n??``)}function CO(e,t){return new Set(kh(e.presets).filter(n=>Mh(e,n).path===`root`?t.root!==void 0:t.presets?.[n]?.root!==void 0))}function wO(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 TO(e,t){let n=new Map;for(let t of Qv(e.projectDir,e.cwd,e.configFile)){let{dir:e,name:r}=wO(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 EO(e){return e.filter(Boolean).join(`
181
- `)||null}var DO=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=SO(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=ey(e,t,n),i=r.kind===`file`?r.path:null,a=[iy(e,t),ny(r)],o;try{o=this.buildState(t,i,a)}catch(e){return e instanceof ka&&a.push(...e.warnings),{resolvedPath:i,warning:EO(a),state:null,error:e instanceof ka||e instanceof Error?e.message:String(e)}}return{resolvedPath:i,warning:EO(a),state:o,error:null}}buildState(e,t,n){let{config:r,raw:i,source:a,warnings:o}=ay(t,AT);n.push(...o);let s=cy(r,t??`<default>`,a),c=new xO,l=new ZE(c,s.globals.default_empty_value??``,this.deps.gitService,this.deps.sessionState),u,d=[];try{u=lO(s,l,{cwd:e}),n.push(...u.loadWarnings);for(let{key:e,spec:t}of gC(s))d.push(lC(e,t));for(let{key:e,spec:t}of QS(s))d.push($S(e,t))}catch(e){for(let e of d)e();throw l.dispose(),e}return{config:s,store:c,registry:l,compiled:u,neededInputPaths:lT(s),lastRenderCellsBySegment:new Map,validatorDisposers:d,authoredRoots:CO(r,i)}}refreshWatcher(e,t){e.configFilePath=t;let n=TO(e,t),r=`config:${e.projectDir}:${e.cwd}:${e.configFile??``}:${JSON.stringify(n)}`;e.watcher!==null&&e.watcherKey===r||(e.watcher?.release(),e.watcherKey=r,e.watcher=this.deps.watchers.acquire(r,n,()=>this.onConfigChanged(e)))}onConfigChanged(e){Y(`info`,`config change detected for entry projectDir=${e.projectDir} cwd=${e.cwd}`),this.reloadInto(e)}get size(){return this.entries.size}firstState(){return this.entries.values().next().value?.state??null}};const OO=16384;var kO=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<OO){this.rollingTimestamps.push(e);return}this.rollingTimestamps[this.rollingHead]=e,this.rollingHead=(this.rollingHead+1)%OO}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:qb,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 AO={load:()=>({}),save:()=>{},flush:()=>{}};function jO(e){let t=new Map;for(let[n,r]of Object.entries(e))t.set(n,new Map(Object.entries(r)));return t}var MO=class{sessions;storage;atom=(0,NT.createAtom)(`SessionState`);constructor(e=AO,t=256){this.maxSessions=t,this.storage=e,this.sessions=new Map,this.hydrateFromStorage()}useStorage(e){this.storage=e,this.hydrateFromStorage()}hydrateFromStorage(){this.sessions=jO(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,NT.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,NT.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,NT.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 NO=(e,t)=>O(t);function PO(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 FO=class{timer=null;pending=null;constructor(e,t=500,n=NO){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 PO(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 IO={default_bg:`string`,default_fg:`string`,default_empty_value:`string`,default_separator:`string`,default_truncate_marker:`string`,palette:`string`,look:`string`,preset:`string`,style:`string`,autoWrap:`boolean`,padding:`number`,charset:`string`,updateNotice:`boolean`,colorCompatibility:`string`,menuGlyph:`string`},LO=new Set([`1`,`true`]),RO=new Set([`0`,`false`,``]);function zO(e,t){let n=uk(e),r=n.scope===`globals`?IO[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(LO.has(t))return`true`;if(RO.has(t))return`false`;throw Error(`persistValueText: "${e}" expects boolean-ish (1, 0, true, false), got "${t}"`)}function BO(e){try{return r.readFileSync(e,`utf8`)}catch(e){if(e.code===`ENOENT`)return null;throw e}}function VO(e,t,n){try{if(t===null){r.rmSync(e,{force:!0});return}r.mkdirSync(c.dirname(e),{recursive:!0}),Oe(e,t)}catch(t){let r=`config write failed (${e}): ${t.message}`;throw n(`error`,r),Error(r)}}function HO(e){return/^\s*$/.test(e)?null:Yi(e)}function UO(e,t){return e!==null&&Zi(e,t)!==void 0}function WO(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(WO),...i}}return e}function GO(e){if(!Co(e))return WO(e);let{rows:t,...n}=e;return{rows:Object.fromEntries(Object.entries(t).map(([e,t])=>[e,WO(t)])),...n}}const KO=OT,qO=KO.segments,JO=KO.presets,YO=KO.root;function XO(e,t,n,r){if(!UO(e,t)&&n===void 0)throw new $(`cannot edit ${r}: neither the config file nor the bundled default declares ${t.join(`.`)}`)}function ZO(e,t){let n=Rh(t);return t.scope===`segment-palette`&&XO(e,[`segments`,t.segment],qO[t.segment],n.join(`.`)),n}function QO(e){return Yi(ra(e))}function $O(){return Object.entries(YO.rows).map(([e,t])=>{let n=WO(t);return{path:[`root`],fragment:QO({rows:{[e]:n}}),unit:{path:[`root`,`rows`,e],value:n}}})}function ek(e,t){let n=e===null?void 0:Zi(e,t);return n===void 0?null:{path:t,fragment:n,unit:null}}function tk(e,t){if(t===void 0)return null;let n=GO(t);return{path:e,fragment:QO(n),unit:{path:e,value:n}}}function nk(e,t){let n=[`presets`,t],r=[...n,`root`],i=JO[t];XO(e,n,i,r.join(`.`));let a=ek(e,r)??tk(r,i?.root);return a!==null&&Ca(a.fragment)?a:null}function rk(e,t){let n=Sa(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 ik(e,t){return[...$O(),ek(e,[`root`]),nk(e,t)].filter(e=>e!==null).reduce(rk,new Map)}function ak(e,t,n){for(let{node:r,...i}of ik(e,t).values())if(Ta(r,n))return i;throw new $(`${ok(e,t).join(`.`)} holds no segment "${n}" — the bar you clicked is stale; it reloads on the next render`)}function ok(e,t){return nk(e,t)?.path??[`root`]}function sk(e,t){return t.scope===`preset-root`?ok(e,t.preset):Rh(t)}function ck(e,{unit:t}){return t===null?e:_a(e,t.path,ra(t.value),ta)}function lk(e){let t=Lh(e);if(t===null)throw Error(`"${e}" is not a valid persist target`);return t}function uk(e){let t=lk(e);if(t.scope===`preset-root`)throw Error(`"${e}" names a layout, not a value`);return t}function dk(e,t){let n=uk(t),r=HO(BO(e)??``),i=r===null?void 0:Zi(r,Rh(n));return i!==void 0&&`value`in i?i.value:void 0}function fk(e,t,n,r){let i=uk(n),a=BO(t);Sk(e,t,{before:a,after:_a(a??``,ZO(HO(a??``),i),zO(n,r),ta)})}function pk(e,t,n){let r=lk(n),i=BO(t);if(i===null)return;let a=va(i,sk(HO(i),r));a!==i&&Sk(e,t,{before:i,after:a})}function mk(e,t,n,r){let i=lk(n);if(i.scope!==`preset-root`)throw Error(`"${n}" is not a "presets.<name>.root" target`);let a=BO(t),o=r.op===`remove`?r.target:r.anchor,s=ak(HO(a??``),i.preset,o),c=ck(a??``,s),l=r.op===`remove`?Da(c,s.path,r.target):Oa(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`);Sk(e,t,{before:a,after:l})}const hk={past:[],future:[]};function gk(e){if(typeof e!=`object`||!e)return!1;let t=e;return(t.before===null||typeof t.before==`string`)&&typeof t.after==`string`}function _k(e){if(typeof e!=`object`||!e)return!1;let t=e;return Array.isArray(t.past)&&t.past.every(gk)&&Array.isArray(t.future)&&t.future.every(gk)}function vk(e){let t;try{t=r.readFileSync(e.historyPath,`utf8`)}catch(t){let n=t.code;return n!==`ENOENT`&&e.logger(`warn`,`config-edit-history read failed (${n}); starting empty`),{}}try{let e=JSON.parse(t);if(typeof e==`object`&&e&&!Array.isArray(e)&&Object.values(e).every(_k))return e}catch{}return e.logger(`warn`,`config-edit-history load: unexpected shape, starting empty`),{}}function yk(e,t){try{r.mkdirSync(c.dirname(e.historyPath),{recursive:!0}),Oe(e.historyPath,JSON.stringify(t),384)}catch(t){let n=`config-edit-history write failed: ${t.message}`;throw e.logger(`error`,n),Error(n)}}function bk(e,t){let n=[...e,t];return n.length>50?n.slice(-50):n}function xk(e,t,n,r,i){VO(t,n,e.logger);try{yk(e,r)}catch(e){throw Error(`${i} landed in ${t} but recording it failed — it is not undoable: ${e.message}`)}}function Sk(e,t,n){let r=vk(e),{past:i}=r[t]??hk;xk(e,t,n.after,{...r,[t]:{past:bk(i,n),future:[]}},`edit`)}function Ck(e,t){let n=vk(e),{past:r,future:i}=n[t]??hk,a=r[r.length-1];return a===void 0?null:(Tk(t,a.after,`undo`),xk(e,t,a.before,{...n,[t]:{past:r.slice(0,-1),future:bk(i,a)}},`undo`),a)}function wk(e,t){let n=vk(e),{past:r,future:i}=n[t]??hk,a=i[i.length-1];return a===void 0?null:(Tk(t,a.before,`redo`),xk(e,t,a.after,{...n,[t]:{past:bk(r,a),future:i.slice(0,-1)}},`redo`),a)}function Tk(e,t,n){if(BO(e)!==t)throw new $(`${n}: ${e} has changed since that edit — refusing to overwrite it`)}function Ek(e){let t=Te({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 Dk(){return{probeTmux:Ek,claudeSettingsPath:Jb()}}function Ok(e){return r.existsSync(e.claudeSettingsPath)?r.readFileSync(e.claudeSettingsPath,`utf8`):``}function kk(e){if(/^\s*$/.test(e))return{};let t=na.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 Ak(e,t){return t===void 0?{kind:`unreported`}:t===null?{kind:`outside`}:{kind:`inside`,hint:t,termfeatures:e.probeTmux(t)}}function jk(e){try{return kk(Ok(e))}catch(t){throw Error(`cannot read ${e.claudeSettingsPath}: ${t instanceof Error?t.message:String(t)}`,{cause:t})}}function Mk(e,t){return{tmux:Ak(e,t),claudeSettingsEnv:jk(e)}}function Nk(e,t,n){switch(t.kind){case`claude-settings-env`:{let i=_a(Ok(e),[`env`,t.name],JSON.stringify(t.value),na);return r.mkdirSync(c.dirname(e.claudeSettingsPath),{recursive:!0}),Oe(e.claudeSettingsPath,i),{...n,claudeSettingsEnv:jk(e)}}default:return t.kind}}function Pk(e){if(!e)throw new $(`session id is required`);if(e.includes(`/`)||e.includes(`..`))throw new $(`invalid session id "${e}"`);return e}function Fk(e){return Ik(()=>decodeURIComponent(e))}function Ik(e){try{return e()}catch(e){throw e instanceof URIError?new $(`malformed wire encoding: ${e.message}`):e}}function Lk(e,t){let n=Te({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 Rk=(e,t)=>Lk(Fk(e),t),zk=(e,t)=>{let n=Te({bin:`/usr/bin/open`,args:[`-a`,`Visual Studio Code`,Fk(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`})`)}},Bk=(e,t)=>Lk(Fk(e),t),Vk=(e,t)=>Lk(Fk(e),t),Hk=(e,t)=>{let n=Pk(Fk(e));t.sessionState.get(n,`toolbar-expanded`)?t.sessionState.clear(n,`toolbar-expanded`):t.sessionState.set(n,`toolbar-expanded`,`1`)},Uk=(e,t)=>{let[n=``,...r]=Ik(()=>Vb(e)),i=Pk(n);if(r.length===0)throw new $(`set-state: <key>/<value> is required (have keys: ${cC().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: ${cC().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=uC(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})`)},Wk=/^-?\d+$/;function Gk(e,t,n){return e>n?t:e<t?n:e}function Kk(e,t){if(!e)return null;if(!cC().includes(e))throw new $(`${t}: unknown session key "${e}" to release (have: ${cC().join(`, `)})`);return e}function qk(e,t,n,r){e!==null&&(n.sessionState.clear(t,e),n.dlog(`info`,`${r}: released session key ${e} (session=${t})`))}const Jk=(e,t)=>{let[n=``,r=``,i=``]=Ik(()=>Vb(e)),a=Pk(n);if(!r)throw new $(`step-state: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!Wk.test(i))throw new $(`step-state: delta must be an integer, got "${i}"`);let o=parseInt(i,10),s=dC(r);if(!s)throw new $(`step-state: key "${r}" is not a bounded (range) state key (have keys: ${cC().join(`, `)})`);let c=t.sessionState.get(a,r),l=c&&Wk.test(c)?Math.max(s.min,Math.min(s.max,parseInt(c,10))):s.seed,u=Gk(l+o,s.min,s.max),d=uC(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})`)},Yk=`render-origin`;function Xk(e){return JSON.stringify(e)}function Zk(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 Qk(e,t){let n=e.sessionState.get(t,Yk);if(n===null)throw new $(`session ${t} has not rendered yet — no config file to write`);let r=Zk(n);return ty(r.projectDir,r.cwd,r.configFile??void 0)}function $k(e){return{historyPath:Re(),logger:e.dlog}}const eA=(e,t)=>{let[n=``,r=``,i=``,a=``]=Ik(()=>Vb(e)),o=Pk(n);if(!r)throw new $(`set-config: <key>/<value> is required (have keys: ${WS().join(`, `)})`);let s=GS(r,i);if(!s.ok)throw new $(`set-config: ${s.reason}`);let c=Kk(a,`set-config`),l=Qk(t,o);fk($k(t),l,r,s.value),t.dlog(`info`,`set-config: ${r}=${s.value} → ${l} (session=${o})`),qk(c,o,t,`set-config`)},tA=(e,t)=>{let[n=``,r=``,i=``,a=``]=Ik(()=>Vb(e)),o=Pk(n);if(!r)throw new $(`step-config: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!Wk.test(i))throw new $(`step-config: delta must be an integer, got "${i}"`);let s=parseInt(i,10),c=Kk(a,`step-config`),l=KS(r);if(!l)throw new $(`step-config: key "${r}" is not a bounded (range) config key (have keys: ${WS().join(`, `)})`);let u=Qk(t,o),d=dk(u,r),f=typeof d==`number`?Math.max(l.min,Math.min(l.max,d)):l.seed,p=Gk(f+s,l.min,l.max),m=GS(r,String(p));if(!m.ok)throw new $(`step-config: ${m.reason}`);fk($k(t),u,r,m.value),t.dlog(`info`,`step-config: ${r} ${f}→${m.value} (by ${s}) → ${u} (session=${o})`),qk(c,o,t,`step-config`)},nA=(e,t)=>{let[n=``,r=``]=Ik(()=>Vb(e)),i=Pk(n);if(!r||!WS().includes(r))throw new $(`reset-config: unknown config key "${r}" (have: ${WS().join(`, `)})`);let a=Qk(t,i);pk($k(t),a,r),t.dlog(`info`,`reset-config: ${r} ← ${a} (session=${i})`)},rA=(e,t)=>{let[n=``,r=``,i=``]=Ik(()=>Vb(e)),a=Pk(n);if(!r)throw new $(`apply-layout-op: <key>/<op> is required (have: ${WS().join(`, `)})`);let o=GS(r,i);if(!o.ok)throw new $(`apply-layout-op: ${o.reason}`);let s=Th(o.value);if(s===null)throw new $(`apply-layout-op: "${o.value}" is not a layout op token`);let c=Qk(t,a);mk($k(t),c,r,s),t.dlog(`info`,`apply-layout-op: ${r} ${o.value} → ${c} (session=${a})`)},iA=(e,t)=>{let[n=``]=Ik(()=>Vb(e)),r=Pk(n),i=Qk(t,r);if(Ck($k(t),i)===null)throw new $(`undo: history is empty, nothing to undo`);t.dlog(`info`,`undo: ${i} (session=${r})`)},aA=(e,t)=>{let[n=``]=Ik(()=>Vb(e)),r=Pk(n),i=Qk(t,r);if(wk($k(t),i)===null)throw new $(`redo: nothing to redo`);t.dlog(`info`,`redo: ${i} (session=${r})`)},oA=(e,t)=>{Pk(Fk(e)),t.applyUpdate()},sA=`client-hints`;function cA(e,t){let n=e.sessionState.get(t,sA);if(n===null)throw new $(`session ${t} has not rendered yet — no client facts to diagnose`);let r;try{r=JSON.parse(n)}catch{throw new $(`client hints record is not JSON: ${n}`)}if(typeof r!=`object`||!r)throw new $(`client hints record is not an object: ${n}`);return hy(r)}function lA(e,t,n){let r=cg(n);e.sessionState.setBatch(t,dg(r)),e.dlog(`info`,`doctor: ${r.map(e=>`${e.check.name}=${e.verdict.ok?`ok`:`failed`}`).join(` `)} (session=${t})`)}const uA=(e,t)=>{let n=Pk(Fk(e));lA(t,n,Mk(t.doctor,cA(t,n).tmux))},dA=(e,t)=>{let[n=``,r=``]=Ik(()=>Vb(e)),i=Pk(n),a=lg(r);if(a===void 0)throw new $(`doctor-fix: unknown check "${r}"`);let o=Mk(t.doctor,cA(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=Nk(t.doctor,s.fix,o);t.dlog(`info`,`doctor-fix: ${a.name} → ${s.fix.kind} ${s.fix.name}=${s.fix.value} (session=${i})`),lA(t,i,c)},fA=`config-override`,pA=new Map([[Eb,Rk],[`load-config`,(e,t)=>{let n=e.indexOf(`/`);if(n===-1)throw new $(`load-config: expected <sessionId>/<path> (missing separator)`);let r=Pk(Ik(()=>decodeURIComponent(e.slice(0,n)))),i=Ik(()=>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,fA),t.dlog(`info`,`load-config: override cleared (session=${r})`)):(t.sessionState.set(r,fA,i),t.dlog(`info`,`load-config: ${i} (session=${r})`))}],[Db,zk],[wb,Uk],[Tb,Jk],[jb,eA],[Mb,tA],[Nb,nA],[Pb,rA],[Fb,iA],[Ib,aA],[kb,Bk],[Ab,Vk],[Ob,Hk],[Lb,oA],[Rb,uA],[zb,dA]]),mA=new Set([wb,Tb,jb,Mb,Nb,Pb,Fb,Ib,Ob,Lb,Rb,zb]),hA=(e,t)=>{let n=[],r=!1,i=null;for(let{verb:a,value:o}of Wb(Ub(e))){if(!i&&mA.has(a)){let e=Vb(o);e.length>0&&e[0]&&(i=e[0])}let e=pA.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(`
182
- `));let e=`dispatch: ${n.join(`; `)}`;throw r?Error(e):new $(e)}},gA=new Map([...pA,[Cb,hA]]);Object.freeze([...gA.keys()]);const _A=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`]),vA=[[`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 yA(e){let t={missingRequired:[],typeMismatches:[],unknownTopLevelFields:[]},n=typeof e==`object`&&e&&!Array.isArray(e)?e:{};for(let[e,r]of vA){let i=xA(n,e);if(i==null)t.missingRequired.push(e);else{let n=bA(i);n!==r&&t.typeMismatches.push({path:e,expected:r,got:n})}}for(let e of Object.keys(n))_A.has(e)||t.unknownTopLevelFields.push(e);return{data:e,report:t}}function bA(e){return Array.isArray(e)?`array`:typeof e==`string`&&!e.isWellFormed()?`ill-formed string`:typeof e}function xA(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 SA(e,t){switch(e){case`vars`:return{what:e,vars:CA(t)};case`segments`:return{what:e,segments:OA(t)};case`config`:return{what:e,config:jA(t)}}}function CA(e){if(e===null)return[];let{store:t,registry:n,config:r}=e,i=EA(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,...wA(r),lastError:a===void 0?null:{timestampMs:a.timestamp,message:a.message},ageMs:TA(r.lastUpdatedMs())})}return o}function wA(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 TA(e){return e===null?null:Math.max(0,Date.now()-e)}function EA(e){let t=new Map;for(let[n,r]of Object.entries(e.variables))t.set(n,DA(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}`,DA(i));return t}function DA(e){return e.kind}function OA(e){if(e===null)return[];let{store:t,config:n,lastRenderBySegment:r}=e,i=new Set(t.names()),a=kA(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:AA(t.template,i),lastRender:r.get(e)??null})}return o}function kA(e){let t=[],n=new Set;for(let r of Ia(Eo(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 AA(e,t){let n=new Set;for(let r of Ev(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 jA(e){return e===null?null:e.config}const MA=[`vars`,`segments`,`config`];function NA(e){return typeof e==`string`&&MA.includes(e)}function PA(e){return Math.max(1,e-2)}var FA=class{thresholds={LOW:50,MEDIUM:80};getContextUsageThresholds(){return this.thresholds}ratioPercentages(e,t){let n=Math.min(100,Math.max(0,Math.round(e/t*100)));return{percentage:n,contextLeftPercentage:Math.max(0,100-n)}}calculateContextFromHookData(e){let t=e.context_window;if(!t?.current_usage)return O(`No current_usage in hook data, falling back to transcript parsing`),null;let n=t.current_usage,r=t.context_window_size,i=(n.input_tokens||0)+(n.cache_creation_input_tokens||0)+(n.cache_read_input_tokens||0);O(`Native current_usage: input=${n.input_tokens}, cache_create=${n.cache_creation_input_tokens}, cache_read=${n.cache_read_input_tokens}, total=${i} (limit: ${r})`);let a=this.ratioPercentages(i,r);return{totalTokens:i,maxTokens:r,percentage:t.used_percentage==null?a.percentage:Math.round(t.used_percentage),contextLeftPercentage:t.remaining_percentage==null?a.contextLeftPercentage:Math.round(t.remaining_percentage)}}async calculateContextTokensFromTranscript(e,t){try{O(`Calculating context tokens from transcript: ${e}`);let n=await jw(e);if(n.length===0)return O(`No entries in transcript`),Z;let r=null;for(let e=n.length-1;e>=0;e--){let t=n[e];if(t&&t.message?.usage?.input_tokens&&t.isSidechain!==!0){r=t,O(`Context segment: Found most recent entry at ${t.timestamp.toISOString()}, stopping search`);break}}if(r?.message?.usage){let e=r.message.usage,n=(e.input_tokens||0)+(e.cache_read_input_tokens||0)+(e.cache_creation_input_tokens||0);return O(`Most recent main chain context: ${n} tokens (limit: ${t})`),X({totalTokens:n,maxTokens:t,...this.ratioPercentages(n,t)})}return O(`No main chain entries with usage data found`),Z}catch(e){return Q(`context transcript: ${e instanceof Error?e.message:String(e)}`)}}async getContextInfo(e){let t=this.calculateContextFromHookData(e);if(t)return X(t);let n=e.context_window?.context_window_size??2e5;return this.calculateContextTokensFromTranscript(e.transcript_path,n)}},IA=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=mw(t);if(n&&r!==0&&n.cursor.mtimeMs===r)return this.touch(e,n),{kind:`ok`,value:n.value};let i=await Fw(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 LA={messageCount:0,recent:[]};function RA(e,t){if(t.isSidechain)return e;let n=[...e.recent,t];return{messageCount:e.messageCount+ +!!kw(t),recent:n.length>20?n.slice(-20):n}}function zA(e){let t=null,n=null;for(let r of e){let e=r.type||r.message?.role||r.message?.type;if(kw(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 BA=class{fold=new IA(LA,RA);async getMetricsInfo(e,t){if(O(`Getting metrics from hook data for session: ${e}`),!t.cost)return Z;let n=await this.fold.read(e,t.transcript_path);return n.kind===`failed`?Q(`metrics (${e}): ${n.reason}`):X({responseTime:t.cost.total_api_duration_ms/1e3,lastResponseTime:zA(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 VA={command:null,todos:[],pending:[],done:[]};function HA(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 UA(e,t){if(t.isSidechain)return e;let n=kw(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=HA(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 WA(e){return{command:e.command,todos:e.todos,running:e.pending.reduce((e,t)=>HA(e,t.name),[]),done:e.done}}var GA=class{fold=new IA(VA,UA);async getActivityInfo(e,t){let n=await this.fold.read(e,t.transcript_path);return n.kind===`failed`?Q(`activity (${e}): ${n.reason}`):X(WA(n.value))}};const KA=new Map;function qA(e){if(!e)return``;let t=e.indexOf(`,`);return t<0?e:e.slice(0,t)}var JA=class{async getSessionId(){if(!process.env.TMUX_PANE)return Z;let e=qA(process.env.TMUX),t=KA.get(e);if(t!==void 0)return t;O(`Getting tmux session ID, TMUX_PANE: ${process.env.TMUX_PANE}`);let n=await we({bin:`tmux`,args:[`display-message`,`-p`,`#S`],timeoutMs:1e3,category:`tmux`}),r=n.ok?n.stdout.trim()?X(n.stdout.trim()):Z:Q(`tmux display-message: ${n.reason}`);return KA.set(e,r),r}isInTmux(){return!!process.env.TMUX_PANE}},YA=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 XA=new kO;Se(XA.launchStats);const ZA=new nw({counters:XA,logger:Y}),QA=new uw({watchers:ZA,logger:Y}),$A=new qw,ej=new MO,tj=new YA(Ue()),nj=new FA,rj=new BA,ij=new GA,aj=new JA,oj=new DO({gitService:QA,sessionState:ej,watchers:ZA},{observers:{onReload:e=>Y(`info`,`config loaded projectDir=${e.projectDir} cwd=${e.cwd} file=${e.configFilePath??`<bundled default>`} error=${e.lastError===null?`none`:JSON.stringify(e.lastError)} warning=${e.lastWarning===null?`none`:JSON.stringify(e.lastWarning)}`)}}),sj=60*1e3;function cj(){let e=import.meta.url,n=[];e.startsWith(`file://`)&&n.push(b(e)),t.argv[1]&&n.push(t.argv[1]);let i=new Map;for(let e of n)try{i.set(e,r.statSync(e).mtimeMs)}catch{}let a=null,o=()=>{for(let[e,t]of i)try{if(r.statSync(e).mtimeMs!==t){Y(`info`,`binary mtime changed (${e}); shutting down`),a&&clearInterval(a),wj(0);return}}catch(e){Y(`warn`,`bin stat failed: ${e.message}`)}};return{arm(){i.size!==0&&(a=setInterval(o,sj),a.unref())},checkNow:o}}const lj=cj(),uj=jC({entryUrl:import.meta.url,intervalMs:sj,releaseIntervalMs:216e5,registryUrl:t.env.CC_CANDYBAR_REGISTRY_URL??`https://registry.npmjs.org`,fetchImpl:fetch,onApplied:()=>lj.checkNow(),log:Y});let dj=null,fj=null,pj=0;function mj(){t.on(`uncaughtException`,e=>{Y(`error`,`uncaughtException: ${e.stack||e.message}`),wj(1)}),t.on(`unhandledRejection`,e=>{Y(`error`,`unhandledRejection: ${String(e)}`),wj(1)});for(let e of[`SIGINT`,`SIGTERM`,`SIGHUP`])t.on(e,()=>{Y(`info`,`received ${e}, shutting down`),wj(0)});try{pj=Yy(t.env)}catch(e){Y(`error`,`refusing to boot: ${e.message}`),wj(1);return}dj=zx(t.pid);let e=Yx(Zx(dj));if(!e.decision.allow){Y(`warn`,`fork-bomb breaker: ${e.decision.reason}; refusing to boot`),wj(1);return}fj=e.registryPath,r.mkdirSync(je(),{recursive:!0}),Pe(Me()),ej.useStorage(new FO(Le(),500,Y)),Hx({anchor:Vx(t.env),isAlive:Ux,onOrphaned:e=>{Y(`info`,`parent watchdog: ${e}; shutting down`),wj(0)}}),hj(g.createServer({allowHalfOpen:!1},e=>{Tj(e)}),Me(),!1)}function hj(e,n,r){e.removeAllListeners(`error`),e.removeAllListeners(`listening`),e.once(`error`,i=>{if(i.code!==`EADDRINUSE`){Y(`error`,`server error: ${i.message}`),wj(1);return}if(r){Y(`info`,`lost rebind race; another daemon is alive — exiting`),t.exit(0);return}gj(e,n)}),e.listen(n,()=>_j(n))}function gj(e,n){let i=kx(Ax(Fe(n)),(e,t)=>Rx(e,t,{readStartTime:Lx,pidAlive:Ux}));if(i.kind===`attach-and-exit`){Y(`info`,`EADDRINUSE: ${i.reason} — exiting`),t.exit(0);return}Y(`warn`,`EADDRINUSE: ${i.reason} — unlinking stale socket and rebinding`);try{r.unlinkSync(n)}catch(e){if(e.code!==`ENOENT`){Y(`error`,`cannot unlink stale socket ${n}: ${e.message}`),wj(1);return}}hj(e,n,!0)}function _j(e){let n=Nx(e);if(n.kind!==`present`){Y(`warn`,`no ownable socket at bind callback (${n.kind}); exiting`),wj(0);return}xj(e);try{r.chmodSync(e,384)}catch(e){Y(`warn`,`chmod socket failed: ${e.message}`)}Y(`info`,`daemon up: pid=${t.pid} v=3 sock=${e} heapCap=${Math.round(_.getHeapStatistics().heap_size_limit/1048576)}MB rssLimit=${Math.round(pj/1048576)}MB`),fb();let i=tj.reset();i!==null&&Y(`warn`,`diagnostic dump wipe failed: ${i}`),lj.arm(),uj.arm(),bj(),vj(e,n.identity)}function vj(e,n){Ix({bound:n,myPid:t.pid,readIdentity:()=>Nx(e),readLease:()=>Ax(Fe(e)),shutdown:e=>wj(e),log:Y}).arm()}let yj=null;function bj(){yj=$y(rb(XA.startedAt.getTime(),e=>wj(e),{rssLimitBytes:pj})),yj.arm()}function xj(e){let n=jx(Fe(e),{pid:t.pid,version:3,binPath:t.argv[1],startTime:dj});n!==null&&Y(`warn`,`lease write failed: ${n}`)}let Sj=0,Cj=!1;function wj(e){if(!Cj){Cj=!0,setTimeout(()=>t.kill(t.pid,`SIGKILL`),500);try{QA.close()}catch(e){Y(`warn`,`gitService close failed: ${e.message}`)}try{$A.close()}catch(e){Y(`warn`,`usageStore close failed: ${e.message}`)}try{ZA.closeAll()}catch(e){Y(`warn`,`watcherRegistry close failed: ${e.message}`)}try{ej.flush()}catch(e){Y(`warn`,`sessionState flush failed: ${e.message}`)}Mx(Ie(),t.pid),fj!==null&&Xx(fj,t.pid,qx,e=>r.unlinkSync(e)),t.exit(e)}}function Tj(e){Sj++,XA.inFlight=Sj;let t=!1,n=(n,r)=>{if(t){r!==null&&Y(`warn`,`exit-after-flush dropped: an earlier responder settled this socket`);return}t=!0;let i=r===null?void 0:()=>wj(r);try{e.end(Sy(n),i)}catch(e){Y(`warn`,`response write failed: ${e.message}`),i?.()}},r=setTimeout(()=>{XA.requestsTimedOut++,n({ok:!1,error:`request exceeded 200ms`,code:`TIMEOUT`,daemonV:3},null)},200),i=Cy(e=>{Dj(e).then(e=>n(e.resp,e.exitAfterFlush)).catch(e=>{Y(`error`,`handler threw: ${e?.stack||e}`),n({ok:!1,error:String(e?.message||e),code:`RENDER_FAILED`,daemonV:3},null)})},e=>{Y(`warn`,`frame parse failed: ${e.message}`),n({ok:!1,error:e.message,code:`BAD_REQUEST`,daemonV:3},null)});e.on(`data`,i),e.on(`error`,e=>{Y(`warn`,`socket error: ${e.message}`)}),e.on(`close`,()=>{clearTimeout(r),Sj=Math.max(0,Sj-1),XA.inFlight=Sj})}const Ej=e=>({resp:e,exitAfterFlush:null});async function Dj(e){if(!e||typeof e!=`object`||typeof e.v!=`number`)return Ej({ok:!1,error:`malformed request`,code:`BAD_REQUEST`,daemonV:3});if(e.v!==3)return e.v>3?Y(`info`,`version mismatch: client=${e.v} > daemon=3; binary likely upgraded — exiting after the response flushes`):Y(`info`,`version mismatch: client=${e.v} < daemon=3; client is stale — staying up`),{resp:{ok:!1,error:`protocol v${e.v} not supported (daemon at v3)`,code:`VERSION_MISMATCH`,daemonV:3},exitAfterFlush:e.v>3?0:null};if(e.kind===`shutdown`)return{resp:{ok:!0,output:``},exitAfterFlush:0};if(e.kind===`stats`)return Ej({ok:!0,stats:XA.snapshot({gitCache:QA.getStats(),usageCache:$A.getStats(),renderCacheSize:oj.size,watchersActive:ZA.size(),nextRestartReason:yj?.describeNextRestart()??null})});if(e.kind===`render`){XA.requestsTotal++;let t=Date.now();try{let{report:n}=yA(e.hookData);for(let e of n.unknownTopLevelFields)Y(`info`,`schema: unknown field '${e}' — Anthropic may have added it`);let r=[];for(let e of n.missingRequired)r.push(`missing required field '${e}'`);for(let{path:e,expected:t,got:i}of n.typeMismatches)r.push(`field '${e}' expected ${t}, got ${i}`);if(e.cwd===``&&r.push(`request 'cwd' is empty`),r.length>0)return XA.requestsErrored++,Y(`warn`,`BAD_REQUEST: ${r.join(`; `)}`),Ej({ok:!1,error:`malformed hookData: ${r.join(`; `)}`,code:`BAD_REQUEST`,daemonV:3});let i=e.hookData.workspace.project_dir,{configFile:a,unknownFlagsError:o}=Oj(e.args),s=e.hookData.session_id,c=hy(e),l=JSON.stringify(c);ej.get(s,`client-hints`)!==l&&ej.set(s,sA,l);let u=ej.get(s,`config-override`)??a??c.configEnv,d=oj.getOrCreate(i,e.cwd,u),f=Xk({projectDir:i,cwd:e.cwd,configFile:u??null});ej.get(s,`render-origin`)!==f&&ej.set(s,Yk,f);let p=c.termCols,m=PA(p??120),h=dS(c.termRows),g={...Aj,width:m},{authoredRoots:_}=d.state,v=$w(d.state.config,t=>ej.get(e.hookData.session_id,t),e=>_.has(e)),y=await pT(e.hookData,Pj,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=pO(d.state.config,d.state.compiled,d.state.store,d.state.registry,y,g,{perSegmentSink:d.state.lastRenderCellsBySegment,onRenderWarning:e=>b.push(e)},{theme:v.theme,look:v.look,preset:v.preset}),S=ej.get(e.hookData.session_id,`click.error`);S&&ej.clear(e.hookData.session_id,`click.error`);let C=[o,d.lastError,S].filter(Boolean).join(`
183
- `),ee=uj.notice({sessionId:s,dismissed:ej.get(s,_C),enabled:v.updateNotice}),te=d.lastError===null?null:d.configFilePath,w=gS(C,ee,[d.lastWarning??``,...b].filter(Boolean).join(`
184
- `)),ne=tj.sync(s,w===null?null:vS(w));ne!==null&&Y(`warn`,`diagnostic dump failed: ${ne}`);let re=yS(x,w,{fullText:ne===null?{kind:`file`,path:tj.pathFor(s)}:{kind:`unavailable`,reason:ne},failedConfigFile:te},{width:m,rowCap:h,colorCompatibility:v.colorCompatibility}),ie=Date.now()-t,T=QA.getStats(),E=$A.getStats();return Y(`info`,`render sid=${e.hookData.session_id??`?`} took=${ie}ms termCols=${p??`?`} termRows=${c.termRows??`?`} width=${m} git=${T.size}/${T.hits}h/${T.misses}m usage=${E.size}/${E.hits}h/${E.misses}m err=${C?`Y`:`N`} upd=${ee.length} warn=${d.lastWarning?`Y`:`N`}`),Ej({ok:!0,output:re+`
185
- `})}catch(e){throw XA.requestsErrored++,e}}if(e.kind===`click`)return Ej(await Fj(e.verb,e.value));if(e.kind===`debug`){if(!NA(e.what))return Ej({ok:!1,error:`unknown debug 'what': ${String(e.what)} (have: ${MA.join(`, `)})`,code:`BAD_REQUEST`,daemonV:3});let t=oj.firstState(),n=t===null?null:{store:t.store,registry:t.registry,config:t.config,compiled:t.compiled,lastRenderBySegment:e.what===`segments`?Nj(t.lastRenderCellsBySegment,t.config.globals.charset??`unicode`,t.config.globals.colorCompatibility??`truecolor`):Mj};return Ej({ok:!0,debug:SA(e.what,n)})}return Ej({ok:!1,error:`unknown kind`,code:`BAD_REQUEST`,daemonV:3})}function Oj(e){let{values:t,tokens:n}=S({args:e.slice(1),options:{config:{type:`string`}},strict:!1,tokens:!0,allowPositionals:!0}),r=[...new Set((n??[]).filter(e=>e.kind===`option`&&e.name!==`config`).map(e=>`--${e.name}`))];return{configFile:gy(t.config),unknownFlagsError:r.length>0?`Unknown flags: ${r.join(`, `)}`:null}}const kj={sessionState:ej,dlog:Y,applyUpdate:()=>uj.act(),doctor:Dk()},Aj={style:`powerline`,colorCompatibility:`truecolor`,wrap:!0,padding:1,charset:`unicode`},jj={...Aj,width:1/0},Mj=new Map;function Nj(e,t,n){let r=new Map;for(let[i,a]of e)r.set(i,uS(a,{...jj,charset:t,colorCompatibility:n}));return r}const Pj={gitProvider:QA,usageStore:$A,contextProvider:nj,metricsProvider:rj,activityProvider:ij,tmuxService:aj,log:Y,clock:()=>new Date};function Fj(e,t){let n=gA.get(e);if(!n)return{ok:!1,error:`unknown click verb: ${e}`,code:`BAD_REQUEST`,daemonV:3};try{return n(t,kj),{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 Ij={connectMs:200,budgetMs:500};async function Lj(e){let n=e.includes(`--json`),r=await Rj();if(r.kind!==`ok`&&(t.stderr.write(`daemon-stats: ${jy(r)}\n`),t.exit(1)),n){t.stdout.write(JSON.stringify(r.value,null,2)+`
186
- `);return}t.stdout.write(Hj(r.value))}function Rj(){return Ty({kind:`stats`},Ij,e=>`stats`in e?e.stats:void 0)}function zj(e){return e<1024?`${e}B`:e<1024*1024?`${(e/1024).toFixed(1)}KB`:`${(e/1024/1024).toFixed(1)}MB`}function Bj(e,t){let n=e+t;return n===0?`n/a`:`${(e/n*100).toFixed(1)}%`}function Vj(e){return e<60?`${e}s`:e<3600?`${Math.floor(e/60)}m${e%60}s`:`${Math.floor(e/3600)}h${Math.floor(e%3600/60)}m`}function Hj(e){let t=[];t.push(`cc-candybar daemon stats`),t.push(``),t.push(`process`),t.push(` pid ${e.pid}`),t.push(` version ${e.version}`),t.push(` protocol ${e.protocolVersion}`),t.push(` startedAt ${e.startedAt}`),t.push(` uptime ${Vj(e.uptimeSec)}`),t.push(` rss ${zj(e.rssBytes)}`),t.push(` heapUsed ${zj(e.heapUsedBytes)}`),t.push(` heapTotal ${zj(e.heapTotalBytes)}`),t.push(` external ${zj(e.externalBytes)}`),t.push(` arrayBuffers ${zj(e.arrayBuffersBytes)}`),t.push(``),t.push(`requests`),t.push(` total ${e.requests.total}`),t.push(` errored ${e.requests.errored}`),t.push(` timedOut ${e.requests.timedOut}`),t.push(` inFlight ${e.requests.inFlight}`),t.push(``),t.push(`gitCache`),t.push(` size ${e.gitCache.size}`),t.push(` hit rate ${Bj(e.gitCache.hits,e.gitCache.misses)} (${e.gitCache.hits} / ${e.gitCache.hits+e.gitCache.misses})`),t.push(` invalidations ${e.gitCache.invalidations}`),t.push(``),t.push(`usageCache`),t.push(` size ${e.usageCache.size}`),t.push(` hit rate ${Bj(e.usageCache.hits,e.usageCache.misses)} (${e.usageCache.hits} / ${e.usageCache.hits+e.usageCache.misses})`),t.push(` sweeps ${e.usageCache.sweeps}`),t.push(``),t.push(`renderCache`),t.push(` size ${e.renderCache.size}`),t.push(`watchers`),t.push(` active ${e.watchers.active}`),t.push(` opened ${e.watchers.opened}`),t.push(` closed ${e.watchers.closed}`),t.push(` evicted ${e.watchers.evicted}`),t.push(``),t.push(`subprocesses`),t.push(` total ${e.subprocesses.total}`),t.push(` inFlight ${e.subprocesses.inFlight}`),t.push(` lastMinute ${e.subprocesses.lastMinute}`);let n=Object.entries(e.subprocesses.byCategory),r=n.reduce((e,[t])=>Math.max(e,t.length),13);for(let[i,a]of n){let n=e.subprocesses.p50DurationMs[i],o=e.subprocesses.p99DurationMs[i],s=n!==void 0&&o!==void 0?` (p50 ${n}ms · p99 ${o}ms)`:``;t.push(` ${i.padEnd(r)} ${a}${s}`)}return e.nextRestartReason&&(t.push(``),t.push(`nextRestart ${e.nextRestartReason}`)),t.join(`
179
+ `);n.push(e[0]);for(let r=1;r<e.length;r++)t.push(n),n=[e[r]]}return t.push(n),t}function nO(e,t){switch(e){case`vertical`:return rO(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))]:rO(e)}}}function rO(e){return e.map(e=>e.span===`row`?{...e,span:`shared`}:e)}function iO(e,t){return{index:t,count:e.children.length,distribution:e.distribution,axis:Fa[e.direction]}}const aO={container:{compile(e,t){return{kind:`container`,direction:e.direction,when:t.when,distribution:vc(e.distribution),children:e.children.map((e,n)=>t.compileChild(e,`${t.path}.children[${n}]`))}},render(e,t){return nO(e.direction,e.children.map((n,r)=>t.renderChild(n,t.visible,iO(e,r))))}},segment:{compile(e,t){return{kind:`segment`,when:t.when,name:e.name,...e.opens!==void 0&&{opens:{open:t.parse(zo(e.opens.ref),`opens`),body:t.compileChild(e.opens.body,`${t.path}.opens.body`),key:e.opens.ref.key,placement:e.opens.placement}}}},render(e,t){let n=t.lookupSegment(e.name);if(!n)throw Error(`Layout segment "${e.name}" has no matching segment`);let{seg:r,compiled:i}=n;if(!t.visible)return[];try{if(!$E(i.when,t.scope))return[];let n=i.palette??t.palette,a=t.enterSegment(e.name,n,t.region,i.bg,i.fg),o=i.template.evaluate(t.scope),s=t.exitSegment(o),c=e.opens!==void 0&&$E(e.opens.open,t.scope),l=s.length>0||c?a.trigger:a.closed,u={width:r.width??`auto`,justify:r.justify??`left`,truncate:r.truncate??`right`,baseStyle:l,padding:t.padding},d=e.opens===void 0?[]:t.renderBody(e.opens.body,c,a.disclosure),f=d.slice(0,+(e.opens?.placement===`inline`)),p=d.slice(f.length),m=e.opens!==void 0&&p.some(e=>e.band===`own`)?aD(lD([t.closeDisclosure(e.opens.key)],a.trigger),{...u,width:`auto`,baseStyle:a.trigger}):[],h=e=>e.band===`own`?m:[],g=p.map(e=>({cells:[...h(e),...e.cells],band:`deeper`,span:`shared`})),_=tO(lD(o,l)).map(e=>({cells:aD(e,u),band:`own`,span:`shared`})),v=s.map(e=>({cells:aD(lD([e],a.band),{...u,baseStyle:a.band}),band:`deeper`,span:`shared`})),y=[..._,...v];return t.perSegmentSink!==void 0&&t.perSegmentSink.set(e.name,[...y.flatMap(e=>e.cells),...p.flatMap(h)]),[...y.map((e,t)=>t===0&&f.length>0?{cells:[...e.cells,...f.flatMap(e=>e.cells)],band:`own`,span:`row`}:e),...g]}catch(n){let r=n.message??String(n);t.onSegmentError?.(e.name,r);let i=r.replace(/\s*\n\s*/g,` `);return[{cells:[new Yr(`⚠ ${e.name}: ${i}`,{end:``,noWrap:!0})],band:`own`,span:`shared`}]}}}};function oO(e){return aO[e]}function sO(e){if(`ttl`in e)return{kind:`ttl`,durationMs:IE(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 cO(e,t){switch(za(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 lO(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:sO(n.cache),parse:cO(n.parse,n.default)});break;case`shell`:e.declareShell(t,n.command,{cache:sO(n.cache),parse:cO(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?IE(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 uO(e,t){let n=Bl.EMPTY;for(let[r,i]of Object.entries(t))try{n=e.parse(`{{ define "${r}" }}${i}{{ end }}`,n).defines()}catch(e){throw Error(`Template parse error in helpers.${r}: ${e.message}`,{cause:e})}return n}function dO(e,t,n){let r=n?.cwd??process.cwd(),i={store:t.variableStore,compiled:new Map,stripStyle:`powerline`,basePalette:vv(e.globals.palette),padding:1},a=ID(),o={action:i,activeSegment:a},s=Object.keys(e.looks),c=Ah(e.presets),l=new Map([...xv(e),...Zh(e)]),u=DE({...AD(i),...WD(i,a),...XD(o),...$D(a),looks:{fn:()=>s,argTypes:[]},presets:{fn:()=>c,argTypes:[]}},n?.clock),d=uO(u,e.helpers),f=e=>u.parse(e,d),p=new Map;for(let[t,n]of Object.entries(e.variables))n.kind===`state`&&!p.has(n.key)&&p.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`&&!p.has(r.key)&&p.set(r.key,`${t}.${e}`);i.compiled=vD(f,e.actions,p,l);let m=[];for(let[n,i]of Object.entries(e.variables))try{lO(t,n,i,r)}catch(e){m.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{lO(t,`${n}.${e}`,a,r)}catch(t){m.push(`Variable "${n}.${e}": ${t.message??String(t)}`)}let h=Object.create(null);for(let[t,n]of Object.entries(e.segments)){let e=(e,n)=>{try{return f(e)}catch(e){throw Error(`Template parse error in segments.${t}.${n}: ${e.message}`,{cause:e})}};h[t]={when:n.when===void 0?void 0:e(n.when,`when`),template:e(n.template,`template`),bg:n.bg===void 0?void 0:e(n.bg,`bg`),fg:n.fg===void 0?void 0:e(n.fg,`fg`),palette:n.palette===void 0?void 0:dv(n.palette)}}let g=(e,t,n)=>{try{return f(e)}catch(e){throw Error(`Template parse error in ${t}.${n}: ${e.message}`,{cause:e})}},_=(e,t)=>{let n={path:t,when:e.when===void 0?void 0:g(e.when,t,`when`),parse:(e,n)=>g(e,t,n),compileChild:_};return oO(e.kind).compile(e,n)},v=new Map;for(let t of c){let{node:n,path:r}=Nh(e,t);v.set(t,_(n,r))}let y=new Map;for(let t of Ci){let n=e.globals[t];wi(n)&&y.set(t,fO(f,t,n))}return{segments:h,roots:v,activeSegment:a,menuRuntime:o,globalExpressions:y,loadWarnings:m}}function fO(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 pO(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 mO(e,t){return e.kind===`decided`?e.name:t}function hO(e,t,n,r,i,a,o,s){let{perSegmentSink:c,onSegmentError:l,onRenderWarning:u}=o??{},{preset:d=Oh}=s??{},f=s?.look??ki(`none`,e.looks),p=s?.theme??gv(void 0,null,e.globals.palette),m=(e,t)=>({...i,term:{cols:a.width},theme:{effective:e},look:{effective:t}});r.applyInput(m(mO(p,vi),mO(f,Di))),t.menuRuntime.action.stripStyle=a.style,t.menuRuntime.action.padding=a.padding;let h=OE(n),g=Ei(p,()=>pO(t,`palette`,h),e=>hv(e,e=>u?.(e))),_=Ei(f,()=>pO(t,`look`,h),t=>ki(t,e.looks));(g!==p||_!==f)&&r.applyInput(m(g.name,_.name));let v=g.value;t.menuRuntime.action.basePalette=v;let y=pv(v,_.value);c?.clear();let b=n=>{let r=e.segments[n],i=t.segments[n];return r!==void 0&&i!==void 0?{seg:r,compiled:i}:void 0},x=(e,n,r,i,a)=>{let{tint:o,disclosure:s}=Hc(n,r),c=mD(t.activeSegment,e,n,s,o,i,a,h),l=Ic(n,s);return{closed:c,trigger:MD(n,l.state),band:MD(n,l.plane),disclosure:s}},S=e=>(t.activeSegment.current=null,KD(e)),C=(e,t,r)=>{let i=t&&$E(e.when,h),o={scope:h,palette:y,visible:i,padding:a.padding,region:r,perSegmentSink:c,onSegmentError:l,enterSegment:x,exitSegment:S,lookupSegment:b,renderChild:(e,t,n)=>C(e,t,Bc(r,n)),renderBody:(e,t,n)=>C(e,i&&t,Vc(n)),closeDisclosure:e=>jD(n,e)};return oO(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 "${Oh}"; a miss here is merge/policy drift (have: ${[...t.roots.keys()].join(`, `)})`);return C(ee,!0,zc).map(e=>dS(cD(e.cells,a),a)).join(`
180
+ `)}var gO=class{kind=`box`;cell;lastChangedAt;constructor(e,t,n){this.name=e,this.type=t,SO(e,t,n,`initial value`),this.cell=PT.observable.box(n,{deep:!1}),this.lastChangedAt=Date.now()}read(){return this.cell.get()}set(e){SO(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}},_O=class{kind=`computed`;cell;constructor(e,t,n){this.name=e,this.type=t,this.cell=(0,PT.computed)(()=>{let e=n();return SO(this.name,this.type,e,`computed result`),e},{keepAlive:!0})}read(){return this.cell.get()}lastUpdatedMs(){return null}},vO=class{kind=`document`;cell;lastChangedAt;constructor(e,t){this.name=e,this.cell=PT.observable.box(xO(t),{deep:!1}),this.lastChangedAt=Date.now()}read(){return this.cell.get()}set(e){let t=xO(e);bO(this.cell.get(),t)||(this.cell.set(t),this.lastChangedAt=Date.now())}lastUpdatedMs(){return this.lastChangedAt}};function yO(e){return JSON.stringify(e)}function bO(e,t){return yO(e)===yO(t)}function xO(e){return e.kind===`ok`?{kind:`ok`,value:FT(e.value)}:e}function SO(e,t,n,r){let i=IT(n);if(i!==t)throw TypeError(`Variable "${e}": ${r} type ${i} does not match declared type ${t}`)}var CO=class{nodes=new Map;defineBox(e,t,n){this.assertNotDefined(e),this.nodes.set(e,new gO(e,t,n))}defineDocument(e,t){this.assertNotDefined(e),this.nodes.set(e,new vO(e,t))}defineComputed(e,t,n){this.assertNotDefined(e);let r=e=>this.read(e);this.nodes.set(e,new _O(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,PT.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,PT.runInAction)(()=>n.set(t))}runInAction(e){(0,PT.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 yO(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 wO(e,t,n){return e+`\0`+t+`\0`+(n??``)}function TO(e,t){return new Set(Ah(e.presets).filter(n=>Nh(e,n).path===`root`?t.root!==void 0:t.presets?.[n]?.root!==void 0))}function EO(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 DO(e,t){let n=new Map;for(let t of $v(e.projectDir,e.cwd,e.configFile)){let{dir:e,name:r}=EO(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 OO(e){return e.filter(Boolean).join(`
181
+ `)||null}var kO=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=wO(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=ty(e,t,n),i=r.kind===`file`?r.path:null,a=[ay(e,t),ry(r)],o;try{o=this.buildState(t,i,a)}catch(e){return e instanceof ka&&a.push(...e.warnings),{resolvedPath:i,warning:OO(a),state:null,error:e instanceof ka||e instanceof Error?e.message:String(e)}}return{resolvedPath:i,warning:OO(a),state:o,error:null}}buildState(e,t,n){let{config:r,raw:i,source:a,warnings:o}=oy(t,jT);n.push(...o);let s=ly(r,t??`<default>`,a),c=new CO,l=new QE(c,s.globals.default_empty_value??``,this.deps.gitService,this.deps.sessionState),u,d=[];try{u=dO(s,l,{cwd:e}),n.push(...u.loadWarnings);for(let{key:e,spec:t}of _C(s))d.push(uC(e,t));for(let{key:e,spec:t}of $S(s))d.push(eC(e,t))}catch(e){for(let e of d)e();throw l.dispose(),e}return{config:s,store:c,registry:l,compiled:u,neededInputPaths:uT(s),lastRenderCellsBySegment:new Map,validatorDisposers:d,authoredRoots:TO(r,i)}}refreshWatcher(e,t){e.configFilePath=t;let n=DO(e,t),r=`config:${e.projectDir}:${e.cwd}:${e.configFile??``}:${JSON.stringify(n)}`;e.watcher!==null&&e.watcherKey===r||(e.watcher?.release(),e.watcherKey=r,e.watcher=this.deps.watchers.acquire(r,n,()=>this.onConfigChanged(e)))}onConfigChanged(e){Y(`info`,`config change detected for entry projectDir=${e.projectDir} cwd=${e.cwd}`),this.reloadInto(e)}get size(){return this.entries.size}firstState(){return this.entries.values().next().value?.state??null}};const AO=16384;var jO=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<AO){this.rollingTimestamps.push(e);return}this.rollingTimestamps[this.rollingHead]=e,this.rollingHead=(this.rollingHead+1)%AO}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:Jb,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 MO={load:()=>({}),save:()=>{},flush:()=>{}};function NO(e){let t=new Map;for(let[n,r]of Object.entries(e))t.set(n,new Map(Object.entries(r)));return t}var PO=class{sessions;storage;atom=(0,PT.createAtom)(`SessionState`);constructor(e=MO,t=256){this.maxSessions=t,this.storage=e,this.sessions=new Map,this.hydrateFromStorage()}useStorage(e){this.storage=e,this.hydrateFromStorage()}hydrateFromStorage(){this.sessions=NO(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,PT.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,PT.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,PT.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 FO=(e,t)=>O(t);function IO(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 LO=class{timer=null;pending=null;constructor(e,t=500,n=FO){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 IO(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 RO={default_bg:`string`,default_fg:`string`,default_empty_value:`string`,default_separator:`string`,default_truncate_marker:`string`,palette:`string`,look:`string`,preset:`string`,style:`string`,autoWrap:`boolean`,padding:`number`,charset:`string`,updateNotice:`boolean`,colorCompatibility:`string`,menuGlyph:`string`},zO=new Set([`1`,`true`]),BO=new Set([`0`,`false`,``]);function VO(e,t){let n=fk(e),r=n.scope===`globals`?RO[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(zO.has(t))return`true`;if(BO.has(t))return`false`;throw Error(`persistValueText: "${e}" expects boolean-ish (1, 0, true, false), got "${t}"`)}function HO(e){try{return r.readFileSync(e,`utf8`)}catch(e){if(e.code===`ENOENT`)return null;throw e}}function UO(e,t,n){try{if(t===null){r.rmSync(e,{force:!0});return}r.mkdirSync(c.dirname(e),{recursive:!0}),Oe(e,t)}catch(t){let r=`config write failed (${e}): ${t.message}`;throw n(`error`,r),Error(r)}}function WO(e){return/^\s*$/.test(e)?null:Yi(e)}function GO(e,t){return e!==null&&Zi(e,t)!==void 0}function KO(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(KO),...i}}return e}function qO(e){if(!wo(e))return KO(e);let{rows:t,...n}=e;return{rows:Object.fromEntries(Object.entries(t).map(([e,t])=>[e,KO(t)])),...n}}const JO=kT,YO=JO.segments,XO=JO.presets,ZO=JO.root;function QO(e,t,n,r){if(!GO(e,t)&&n===void 0)throw new $(`cannot edit ${r}: neither the config file nor the bundled default declares ${t.join(`.`)}`)}function $O(e,t){let n=zh(t);return t.scope===`segment-palette`&&QO(e,[`segments`,t.segment],YO[t.segment],n.join(`.`)),n}function ek(e){return Yi(ra(e))}function tk(){return Object.entries(ZO.rows).map(([e,t])=>{let n=KO(t);return{path:[`root`],fragment:ek({rows:{[e]:n}}),unit:{path:[`root`,`rows`,e],value:n}}})}function nk(e,t){let n=e===null?void 0:Zi(e,t);return n===void 0?null:{path:t,fragment:n,unit:null}}function rk(e,t){if(t===void 0)return null;let n=qO(t);return{path:e,fragment:ek(n),unit:{path:e,value:n}}}function ik(e,t){let n=[`presets`,t],r=[...n,`root`],i=XO[t];QO(e,n,i,r.join(`.`));let a=nk(e,r)??rk(r,i?.root);return a!==null&&Ca(a.fragment)?a:null}function ak(e,t){let n=Sa(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 ok(e,t){return[...tk(),nk(e,[`root`]),ik(e,t)].filter(e=>e!==null).reduce(ak,new Map)}function sk(e,t,n){for(let{node:r,...i}of ok(e,t).values())if(Ta(r,n))return i;throw new $(`${ck(e,t).join(`.`)} holds no segment "${n}" — the bar you clicked is stale; it reloads on the next render`)}function ck(e,t){return ik(e,t)?.path??[`root`]}function lk(e,t){return t.scope===`preset-root`?ck(e,t.preset):zh(t)}function uk(e,{unit:t}){return t===null?e:_a(e,t.path,ra(t.value),ta)}function dk(e){let t=Rh(e);if(t===null)throw Error(`"${e}" is not a valid persist target`);return t}function fk(e){let t=dk(e);if(t.scope===`preset-root`)throw Error(`"${e}" names a layout, not a value`);return t}function pk(e,t){let n=fk(t),r=WO(HO(e)??``),i=r===null?void 0:Zi(r,zh(n));return i!==void 0&&`value`in i?i.value:void 0}function mk(e,t,n,r){let i=fk(n),a=HO(t);wk(e,t,{before:a,after:_a(a??``,$O(WO(a??``),i),VO(n,r),ta)})}function hk(e,t,n){let r=dk(n),i=HO(t);if(i===null)return;let a=va(i,lk(WO(i),r));a!==i&&wk(e,t,{before:i,after:a})}function gk(e,t,n,r){let i=dk(n);if(i.scope!==`preset-root`)throw Error(`"${n}" is not a "presets.<name>.root" target`);let a=HO(t),o=r.op===`remove`?r.target:r.anchor,s=sk(WO(a??``),i.preset,o),c=uk(a??``,s),l=r.op===`remove`?Da(c,s.path,r.target):Oa(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`);wk(e,t,{before:a,after:l})}const _k={past:[],future:[]};function vk(e){if(typeof e!=`object`||!e)return!1;let t=e;return(t.before===null||typeof t.before==`string`)&&typeof t.after==`string`}function yk(e){if(typeof e!=`object`||!e)return!1;let t=e;return Array.isArray(t.past)&&t.past.every(vk)&&Array.isArray(t.future)&&t.future.every(vk)}function bk(e){let t;try{t=r.readFileSync(e.historyPath,`utf8`)}catch(t){let n=t.code;return n!==`ENOENT`&&e.logger(`warn`,`config-edit-history read failed (${n}); starting empty`),{}}try{let e=JSON.parse(t);if(typeof e==`object`&&e&&!Array.isArray(e)&&Object.values(e).every(yk))return e}catch{}return e.logger(`warn`,`config-edit-history load: unexpected shape, starting empty`),{}}function xk(e,t){try{r.mkdirSync(c.dirname(e.historyPath),{recursive:!0}),Oe(e.historyPath,JSON.stringify(t),384)}catch(t){let n=`config-edit-history write failed: ${t.message}`;throw e.logger(`error`,n),Error(n)}}function Sk(e,t){let n=[...e,t];return n.length>50?n.slice(-50):n}function Ck(e,t,n,r,i){UO(t,n,e.logger);try{xk(e,r)}catch(e){throw Error(`${i} landed in ${t} but recording it failed — it is not undoable: ${e.message}`)}}function wk(e,t,n){let r=bk(e),{past:i}=r[t]??_k;Ck(e,t,n.after,{...r,[t]:{past:Sk(i,n),future:[]}},`edit`)}function Tk(e,t){let n=bk(e),{past:r,future:i}=n[t]??_k,a=r[r.length-1];return a===void 0?null:(Dk(t,a.after,`undo`),Ck(e,t,a.before,{...n,[t]:{past:r.slice(0,-1),future:Sk(i,a)}},`undo`),a)}function Ek(e,t){let n=bk(e),{past:r,future:i}=n[t]??_k,a=i[i.length-1];return a===void 0?null:(Dk(t,a.before,`redo`),Ck(e,t,a.after,{...n,[t]:{past:Sk(r,a),future:i.slice(0,-1)}},`redo`),a)}function Dk(e,t,n){if(HO(e)!==t)throw new $(`${n}: ${e} has changed since that edit — refusing to overwrite it`)}function Ok(e){let t=Te({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 kk(){return{probeTmux:Ok,claudeSettingsPath:Yb()}}function Ak(e){return r.existsSync(e.claudeSettingsPath)?r.readFileSync(e.claudeSettingsPath,`utf8`):``}function jk(e){if(/^\s*$/.test(e))return{};let t=na.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 Mk(e,t){return t===void 0?{kind:`unreported`}:t===null?{kind:`outside`}:{kind:`inside`,hint:t,termfeatures:e.probeTmux(t)}}function Nk(e){try{return jk(Ak(e))}catch(t){throw Error(`cannot read ${e.claudeSettingsPath}: ${t instanceof Error?t.message:String(t)}`,{cause:t})}}function Pk(e,t){return{tmux:Mk(e,t),claudeSettingsEnv:Nk(e)}}function Fk(e,t,n){switch(t.kind){case`claude-settings-env`:{let i=_a(Ak(e),[`env`,t.name],JSON.stringify(t.value),na);return r.mkdirSync(c.dirname(e.claudeSettingsPath),{recursive:!0}),Oe(e.claudeSettingsPath,i),{...n,claudeSettingsEnv:Nk(e)}}default:return t.kind}}function Ik(e){if(!e)throw new $(`session id is required`);if(e.includes(`/`)||e.includes(`..`))throw new $(`invalid session id "${e}"`);return e}function Lk(e){return Rk(()=>decodeURIComponent(e))}function Rk(e){try{return e()}catch(e){throw e instanceof URIError?new $(`malformed wire encoding: ${e.message}`):e}}function zk(e,t){let n=Te({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 Bk=(e,t)=>zk(Lk(e),t),Vk=(e,t)=>{let n=Te({bin:`/usr/bin/open`,args:[`-a`,`Visual Studio Code`,Lk(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`})`)}},Hk=(e,t)=>zk(Lk(e),t),Uk=(e,t)=>zk(Lk(e),t),Wk=(e,t)=>{let n=Ik(Lk(e));t.sessionState.get(n,`toolbar-expanded`)?t.sessionState.clear(n,`toolbar-expanded`):t.sessionState.set(n,`toolbar-expanded`,`1`)},Gk=(e,t)=>{let[n=``,...r]=Rk(()=>Hb(e)),i=Ik(n);if(r.length===0)throw new $(`set-state: <key>/<value> is required (have keys: ${lC().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: ${lC().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=dC(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})`)},Kk=/^-?\d+$/;function qk(e,t,n){return e>n?t:e<t?n:e}function Jk(e,t){if(!e)return null;if(!lC().includes(e))throw new $(`${t}: unknown session key "${e}" to release (have: ${lC().join(`, `)})`);return e}function Yk(e,t,n,r){e!==null&&(n.sessionState.clear(t,e),n.dlog(`info`,`${r}: released session key ${e} (session=${t})`))}const Xk=(e,t)=>{let[n=``,r=``,i=``]=Rk(()=>Hb(e)),a=Ik(n);if(!r)throw new $(`step-state: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!Kk.test(i))throw new $(`step-state: delta must be an integer, got "${i}"`);let o=parseInt(i,10),s=fC(r);if(!s)throw new $(`step-state: key "${r}" is not a bounded (range) state key (have keys: ${lC().join(`, `)})`);let c=t.sessionState.get(a,r),l=c&&Kk.test(c)?Math.max(s.min,Math.min(s.max,parseInt(c,10))):s.seed,u=qk(l+o,s.min,s.max),d=dC(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})`)},Zk=`render-origin`;function Qk(e){return JSON.stringify(e)}function $k(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 eA(e,t){let n=e.sessionState.get(t,Zk);if(n===null)throw new $(`session ${t} has not rendered yet — no config file to write`);let r=$k(n);return ny(r.projectDir,r.cwd,r.configFile??void 0)}function tA(e){return{historyPath:Re(),logger:e.dlog}}const nA=(e,t)=>{let[n=``,r=``,i=``,a=``]=Rk(()=>Hb(e)),o=Ik(n);if(!r)throw new $(`set-config: <key>/<value> is required (have keys: ${GS().join(`, `)})`);let s=KS(r,i);if(!s.ok)throw new $(`set-config: ${s.reason}`);let c=Jk(a,`set-config`),l=eA(t,o);mk(tA(t),l,r,s.value),t.dlog(`info`,`set-config: ${r}=${s.value} → ${l} (session=${o})`),Yk(c,o,t,`set-config`)},rA=(e,t)=>{let[n=``,r=``,i=``,a=``]=Rk(()=>Hb(e)),o=Ik(n);if(!r)throw new $(`step-config: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!Kk.test(i))throw new $(`step-config: delta must be an integer, got "${i}"`);let s=parseInt(i,10),c=Jk(a,`step-config`),l=qS(r);if(!l)throw new $(`step-config: key "${r}" is not a bounded (range) config key (have keys: ${GS().join(`, `)})`);let u=eA(t,o),d=pk(u,r),f=typeof d==`number`?Math.max(l.min,Math.min(l.max,d)):l.seed,p=qk(f+s,l.min,l.max),m=KS(r,String(p));if(!m.ok)throw new $(`step-config: ${m.reason}`);mk(tA(t),u,r,m.value),t.dlog(`info`,`step-config: ${r} ${f}→${m.value} (by ${s}) → ${u} (session=${o})`),Yk(c,o,t,`step-config`)},iA=(e,t)=>{let[n=``,r=``]=Rk(()=>Hb(e)),i=Ik(n);if(!r||!GS().includes(r))throw new $(`reset-config: unknown config key "${r}" (have: ${GS().join(`, `)})`);let a=eA(t,i);hk(tA(t),a,r),t.dlog(`info`,`reset-config: ${r} ← ${a} (session=${i})`)},aA=(e,t)=>{let[n=``,r=``,i=``]=Rk(()=>Hb(e)),a=Ik(n);if(!r)throw new $(`apply-layout-op: <key>/<op> is required (have: ${GS().join(`, `)})`);let o=KS(r,i);if(!o.ok)throw new $(`apply-layout-op: ${o.reason}`);let s=Eh(o.value);if(s===null)throw new $(`apply-layout-op: "${o.value}" is not a layout op token`);let c=eA(t,a);gk(tA(t),c,r,s),t.dlog(`info`,`apply-layout-op: ${r} ${o.value} → ${c} (session=${a})`)},oA=(e,t)=>{let[n=``]=Rk(()=>Hb(e)),r=Ik(n),i=eA(t,r);if(Tk(tA(t),i)===null)throw new $(`undo: history is empty, nothing to undo`);t.dlog(`info`,`undo: ${i} (session=${r})`)},sA=(e,t)=>{let[n=``]=Rk(()=>Hb(e)),r=Ik(n),i=eA(t,r);if(Ek(tA(t),i)===null)throw new $(`redo: nothing to redo`);t.dlog(`info`,`redo: ${i} (session=${r})`)},cA=(e,t)=>{Ik(Lk(e)),t.applyUpdate()},lA=`client-hints`;function uA(e,t){let n=e.sessionState.get(t,lA);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 gy(r)}function dA(e,t,n){let r=lg(n);e.sessionState.setBatch(t,fg(r)),e.dlog(`info`,`doctor: ${r.map(e=>`${e.check.name}=${e.verdict.ok?`ok`:`failed`}`).join(` `)} (session=${t})`)}const fA=(e,t)=>{let n=Ik(Lk(e));dA(t,n,Pk(t.doctor,uA(t,n).tmux))},pA=(e,t)=>{let[n=``,r=``]=Rk(()=>Hb(e)),i=Ik(n),a=ug(r);if(a===void 0)throw new $(`doctor-fix: unknown check "${r}"`);let o=Pk(t.doctor,uA(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=Fk(t.doctor,s.fix,o);t.dlog(`info`,`doctor-fix: ${a.name} → ${s.fix.kind} ${s.fix.name}=${s.fix.value} (session=${i})`),dA(t,i,c)},mA=`config-override`,hA=new Map([[Db,Bk],[`load-config`,(e,t)=>{let n=e.indexOf(`/`);if(n===-1)throw new $(`load-config: expected <sessionId>/<path> (missing separator)`);let r=Ik(Rk(()=>decodeURIComponent(e.slice(0,n)))),i=Rk(()=>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,mA),t.dlog(`info`,`load-config: override cleared (session=${r})`)):(t.sessionState.set(r,mA,i),t.dlog(`info`,`load-config: ${i} (session=${r})`))}],[Ob,Vk],[Tb,Gk],[Eb,Xk],[Mb,nA],[Nb,rA],[Pb,iA],[Fb,aA],[Ib,oA],[Lb,sA],[Ab,Hk],[jb,Uk],[kb,Wk],[Rb,cA],[zb,fA],[Bb,pA]]),gA=new Set([Tb,Eb,Mb,Nb,Pb,Fb,Ib,Lb,kb,Rb,zb,Bb]),_A=(e,t)=>{let n=[],r=!1,i=null;for(let{verb:a,value:o}of Gb(Wb(e))){if(!i&&gA.has(a)){let e=Hb(o);e.length>0&&e[0]&&(i=e[0])}let e=hA.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(`
182
+ `));let e=`dispatch: ${n.join(`; `)}`;throw r?Error(e):new $(e)}},vA=new Map([...hA,[wb,_A]]);Object.freeze([...vA.keys()]);const yA=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`]),bA=[[`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 xA(e){let t={missingRequired:[],typeMismatches:[],unknownTopLevelFields:[]},n=typeof e==`object`&&e&&!Array.isArray(e)?e:{};for(let[e,r]of bA){let i=CA(n,e);if(i==null)t.missingRequired.push(e);else{let n=SA(i);n!==r&&t.typeMismatches.push({path:e,expected:r,got:n})}}for(let e of Object.keys(n))yA.has(e)||t.unknownTopLevelFields.push(e);return{data:e,report:t}}function SA(e){return Array.isArray(e)?`array`:typeof e==`string`&&!e.isWellFormed()?`ill-formed string`:typeof e}function CA(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 wA(e,t){switch(e){case`vars`:return{what:e,vars:TA(t)};case`segments`:return{what:e,segments:AA(t)};case`config`:return{what:e,config:NA(t)}}}function TA(e){if(e===null)return[];let{store:t,registry:n,config:r}=e,i=OA(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,...EA(r),lastError:a===void 0?null:{timestampMs:a.timestamp,message:a.message},ageMs:DA(r.lastUpdatedMs())})}return o}function EA(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 DA(e){return e===null?null:Math.max(0,Date.now()-e)}function OA(e){let t=new Map;for(let[n,r]of Object.entries(e.variables))t.set(n,kA(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}`,kA(i));return t}function kA(e){return e.kind}function AA(e){if(e===null)return[];let{store:t,config:n,lastRenderBySegment:r}=e,i=new Set(t.names()),a=jA(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:MA(t.template,i),lastRender:r.get(e)??null})}return o}function jA(e){let t=[],n=new Set;for(let r of La(Do(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 MA(e,t){let n=new Set;for(let r of Dv(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 NA(e){return e===null?null:e.config}const PA=[`vars`,`segments`,`config`];function FA(e){return typeof e==`string`&&PA.includes(e)}function IA(e){return Math.max(1,e-2)}var LA=class{thresholds={LOW:50,MEDIUM:80};getContextUsageThresholds(){return this.thresholds}ratioPercentages(e,t){let n=Math.min(100,Math.max(0,Math.round(e/t*100)));return{percentage:n,contextLeftPercentage:Math.max(0,100-n)}}calculateContextFromHookData(e){let t=e.context_window;if(!t?.current_usage)return O(`No current_usage in hook data, falling back to transcript parsing`),null;let n=t.current_usage,r=t.context_window_size,i=(n.input_tokens||0)+(n.cache_creation_input_tokens||0)+(n.cache_read_input_tokens||0);O(`Native current_usage: input=${n.input_tokens}, cache_create=${n.cache_creation_input_tokens}, cache_read=${n.cache_read_input_tokens}, total=${i} (limit: ${r})`);let a=this.ratioPercentages(i,r);return{totalTokens:i,maxTokens:r,percentage:t.used_percentage==null?a.percentage:Math.round(t.used_percentage),contextLeftPercentage:t.remaining_percentage==null?a.contextLeftPercentage:Math.round(t.remaining_percentage)}}async calculateContextTokensFromTranscript(e,t){try{O(`Calculating context tokens from transcript: ${e}`);let n=await Mw(e);if(n.length===0)return O(`No entries in transcript`),Z;let r=null;for(let e=n.length-1;e>=0;e--){let t=n[e];if(t&&t.message?.usage?.input_tokens&&t.isSidechain!==!0){r=t,O(`Context segment: Found most recent entry at ${t.timestamp.toISOString()}, stopping search`);break}}if(r?.message?.usage){let e=r.message.usage,n=(e.input_tokens||0)+(e.cache_read_input_tokens||0)+(e.cache_creation_input_tokens||0);return O(`Most recent main chain context: ${n} tokens (limit: ${t})`),X({totalTokens:n,maxTokens:t,...this.ratioPercentages(n,t)})}return O(`No main chain entries with usage data found`),Z}catch(e){return Q(`context transcript: ${e instanceof Error?e.message:String(e)}`)}}async getContextInfo(e){let t=this.calculateContextFromHookData(e);if(t)return X(t);let n=e.context_window?.context_window_size??2e5;return this.calculateContextTokensFromTranscript(e.transcript_path,n)}},RA=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=hw(t);if(n&&r!==0&&n.cursor.mtimeMs===r)return this.touch(e,n),{kind:`ok`,value:n.value};let i=await Iw(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 zA={messageCount:0,recent:[]};function BA(e,t){if(t.isSidechain)return e;let n=[...e.recent,t];return{messageCount:e.messageCount+ +!!Aw(t),recent:n.length>20?n.slice(-20):n}}function VA(e){let t=null,n=null;for(let r of e){let e=r.type||r.message?.role||r.message?.type;if(Aw(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 HA=class{fold=new RA(zA,BA);async getMetricsInfo(e,t){if(O(`Getting metrics from hook data for session: ${e}`),!t.cost)return Z;let n=await this.fold.read(e,t.transcript_path);return n.kind===`failed`?Q(`metrics (${e}): ${n.reason}`):X({responseTime:t.cost.total_api_duration_ms/1e3,lastResponseTime:VA(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 UA={command:null,todos:[],pending:[],done:[]};function WA(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 GA(e,t){if(t.isSidechain)return e;let n=Aw(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=WA(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 KA(e){return{command:e.command,todos:e.todos,running:e.pending.reduce((e,t)=>WA(e,t.name),[]),done:e.done}}var qA=class{fold=new RA(UA,GA);async getActivityInfo(e,t){let n=await this.fold.read(e,t.transcript_path);return n.kind===`failed`?Q(`activity (${e}): ${n.reason}`):X(KA(n.value))}};const JA=new Map;function YA(e){if(!e)return``;let t=e.indexOf(`,`);return t<0?e:e.slice(0,t)}var XA=class{async getSessionId(){if(!process.env.TMUX_PANE)return Z;let e=YA(process.env.TMUX),t=JA.get(e);if(t!==void 0)return t;O(`Getting tmux session ID, TMUX_PANE: ${process.env.TMUX_PANE}`);let n=await we({bin:`tmux`,args:[`display-message`,`-p`,`#S`],timeoutMs:1e3,category:`tmux`}),r=n.ok?n.stdout.trim()?X(n.stdout.trim()):Z:Q(`tmux display-message: ${n.reason}`);return JA.set(e,r),r}isInTmux(){return!!process.env.TMUX_PANE}},ZA=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 QA=new jO;Se(QA.launchStats);const $A=new rw({counters:QA,logger:Y}),ej=new dw({watchers:$A,logger:Y}),tj=new Jw,nj=new PO,rj=new ZA(Ue()),ij=new LA,aj=new HA,oj=new qA,sj=new XA,cj=new kO({gitService:ej,sessionState:nj,watchers:$A},{observers:{onReload:e=>Y(`info`,`config loaded projectDir=${e.projectDir} cwd=${e.cwd} file=${e.configFilePath??`<bundled default>`} error=${e.lastError===null?`none`:JSON.stringify(e.lastError)} warning=${e.lastWarning===null?`none`:JSON.stringify(e.lastWarning)}`)}}),lj=60*1e3;function uj(){let e=import.meta.url,n=[];e.startsWith(`file://`)&&n.push(b(e)),t.argv[1]&&n.push(t.argv[1]);let i=new Map;for(let e of n)try{i.set(e,r.statSync(e).mtimeMs)}catch{}let a=null,o=()=>{for(let[e,t]of i)try{if(r.statSync(e).mtimeMs!==t){Y(`info`,`binary mtime changed (${e}); shutting down`),a&&clearInterval(a),Ej(0);return}}catch(e){Y(`warn`,`bin stat failed: ${e.message}`)}};return{arm(){i.size!==0&&(a=setInterval(o,lj),a.unref())},checkNow:o}}const dj=uj(),fj=MC({entryUrl:import.meta.url,intervalMs:lj,releaseIntervalMs:216e5,registryUrl:t.env.CC_CANDYBAR_REGISTRY_URL??`https://registry.npmjs.org`,fetchImpl:fetch,onApplied:()=>dj.checkNow(),log:Y});let pj=null,mj=null,hj=0;function gj(){t.on(`uncaughtException`,e=>{Y(`error`,`uncaughtException: ${e.stack||e.message}`),Ej(1)}),t.on(`unhandledRejection`,e=>{Y(`error`,`unhandledRejection: ${String(e)}`),Ej(1)});for(let e of[`SIGINT`,`SIGTERM`,`SIGHUP`])t.on(e,()=>{Y(`info`,`received ${e}, shutting down`),Ej(0)});try{hj=Xy(t.env)}catch(e){Y(`error`,`refusing to boot: ${e.message}`),Ej(1);return}pj=Bx(t.pid);let e=Xx(Qx(pj));if(!e.decision.allow){Y(`warn`,`fork-bomb breaker: ${e.decision.reason}; refusing to boot`),Ej(1);return}mj=e.registryPath,r.mkdirSync(je(),{recursive:!0}),Pe(Me()),nj.useStorage(new LO(Le(),500,Y)),Ux({anchor:Hx(t.env),isAlive:Wx,onOrphaned:e=>{Y(`info`,`parent watchdog: ${e}; shutting down`),Ej(0)}}),_j(g.createServer({allowHalfOpen:!1},e=>{Dj(e)}),Me(),!1)}function _j(e,n,r){e.removeAllListeners(`error`),e.removeAllListeners(`listening`),e.once(`error`,i=>{if(i.code!==`EADDRINUSE`){Y(`error`,`server error: ${i.message}`),Ej(1);return}if(r){Y(`info`,`lost rebind race; another daemon is alive — exiting`),t.exit(0);return}vj(e,n)}),e.listen(n,()=>yj(n))}function vj(e,n){let i=Ax(jx(Fe(n)),(e,t)=>zx(e,t,{readStartTime:Rx,pidAlive:Wx}));if(i.kind===`attach-and-exit`){Y(`info`,`EADDRINUSE: ${i.reason} — exiting`),t.exit(0);return}Y(`warn`,`EADDRINUSE: ${i.reason} — unlinking stale socket and rebinding`);try{r.unlinkSync(n)}catch(e){if(e.code!==`ENOENT`){Y(`error`,`cannot unlink stale socket ${n}: ${e.message}`),Ej(1);return}}_j(e,n,!0)}function yj(e){let n=Px(e);if(n.kind!==`present`){Y(`warn`,`no ownable socket at bind callback (${n.kind}); exiting`),Ej(0);return}Cj(e);try{r.chmodSync(e,384)}catch(e){Y(`warn`,`chmod socket failed: ${e.message}`)}Y(`info`,`daemon up: pid=${t.pid} v=3 sock=${e} heapCap=${Math.round(_.getHeapStatistics().heap_size_limit/1048576)}MB rssLimit=${Math.round(hj/1048576)}MB`),pb();let i=rj.reset();i!==null&&Y(`warn`,`diagnostic dump wipe failed: ${i}`),dj.arm(),fj.arm(),Sj(),bj(e,n.identity)}function bj(e,n){Lx({bound:n,myPid:t.pid,readIdentity:()=>Px(e),readLease:()=>jx(Fe(e)),shutdown:e=>Ej(e),log:Y}).arm()}let xj=null;function Sj(){xj=eb(ib(QA.startedAt.getTime(),e=>Ej(e),{rssLimitBytes:hj})),xj.arm()}function Cj(e){let n=Mx(Fe(e),{pid:t.pid,version:3,binPath:t.argv[1],startTime:pj});n!==null&&Y(`warn`,`lease write failed: ${n}`)}let wj=0,Tj=!1;function Ej(e){if(!Tj){Tj=!0,setTimeout(()=>t.kill(t.pid,`SIGKILL`),500);try{ej.close()}catch(e){Y(`warn`,`gitService close failed: ${e.message}`)}try{tj.close()}catch(e){Y(`warn`,`usageStore close failed: ${e.message}`)}try{$A.closeAll()}catch(e){Y(`warn`,`watcherRegistry close failed: ${e.message}`)}try{nj.flush()}catch(e){Y(`warn`,`sessionState flush failed: ${e.message}`)}Nx(Ie(),t.pid),mj!==null&&Zx(mj,t.pid,Jx,e=>r.unlinkSync(e)),t.exit(e)}}function Dj(e){wj++,QA.inFlight=wj;let t=!1,n=(n,r)=>{if(t){r!==null&&Y(`warn`,`exit-after-flush dropped: an earlier responder settled this socket`);return}t=!0;let i=r===null?void 0:()=>Ej(r);try{e.end(Cy(n),i)}catch(e){Y(`warn`,`response write failed: ${e.message}`),i?.()}},r=setTimeout(()=>{QA.requestsTimedOut++,n({ok:!1,error:`request exceeded 200ms`,code:`TIMEOUT`,daemonV:3},null)},200),i=wy(e=>{kj(e).then(e=>n(e.resp,e.exitAfterFlush)).catch(e=>{Y(`error`,`handler threw: ${e?.stack||e}`),n({ok:!1,error:String(e?.message||e),code:`RENDER_FAILED`,daemonV:3},null)})},e=>{Y(`warn`,`frame parse failed: ${e.message}`),n({ok:!1,error:e.message,code:`BAD_REQUEST`,daemonV:3},null)});e.on(`data`,i),e.on(`error`,e=>{Y(`warn`,`socket error: ${e.message}`)}),e.on(`close`,()=>{clearTimeout(r),wj=Math.max(0,wj-1),QA.inFlight=wj})}const Oj=e=>({resp:e,exitAfterFlush:null});async function kj(e){if(!e||typeof e!=`object`||typeof e.v!=`number`)return Oj({ok:!1,error:`malformed request`,code:`BAD_REQUEST`,daemonV:3});if(e.v!==3)return e.v>3?Y(`info`,`version mismatch: client=${e.v} > daemon=3; binary likely upgraded — exiting after the response flushes`):Y(`info`,`version mismatch: client=${e.v} < daemon=3; client is stale — staying up`),{resp:{ok:!1,error:`protocol v${e.v} not supported (daemon at v3)`,code:`VERSION_MISMATCH`,daemonV:3},exitAfterFlush:e.v>3?0:null};if(e.kind===`shutdown`)return{resp:{ok:!0,output:``},exitAfterFlush:0};if(e.kind===`stats`)return Oj({ok:!0,stats:QA.snapshot({gitCache:ej.getStats(),usageCache:tj.getStats(),renderCacheSize:cj.size,watchersActive:$A.size(),nextRestartReason:xj?.describeNextRestart()??null})});if(e.kind===`render`){QA.requestsTotal++;let t=Date.now();try{let{report:n}=xA(e.hookData);for(let e of n.unknownTopLevelFields)Y(`info`,`schema: unknown field '${e}' — Anthropic may have added it`);let r=[];for(let e of n.missingRequired)r.push(`missing required field '${e}'`);for(let{path:e,expected:t,got:i}of n.typeMismatches)r.push(`field '${e}' expected ${t}, got ${i}`);if(e.cwd===``&&r.push(`request 'cwd' is empty`),r.length>0)return QA.requestsErrored++,Y(`warn`,`BAD_REQUEST: ${r.join(`; `)}`),Oj({ok:!1,error:`malformed hookData: ${r.join(`; `)}`,code:`BAD_REQUEST`,daemonV:3});let i=e.hookData.workspace.project_dir,{configFile:a,unknownFlagsError:o}=Aj(e.args),s=e.hookData.session_id,c=gy(e),l=JSON.stringify(c);nj.get(s,`client-hints`)!==l&&nj.set(s,lA,l);let u=nj.get(s,`config-override`)??a??c.configEnv,d=cj.getOrCreate(i,e.cwd,u),f=Qk({projectDir:i,cwd:e.cwd,configFile:u??null});nj.get(s,`render-origin`)!==f&&nj.set(s,Zk,f);let p=c.termCols,m=IA(p??120),h=fS(c.termRows),g={...Mj,width:m},{authoredRoots:_}=d.state,v=eT(d.state.config,t=>nj.get(e.hookData.session_id,t),e=>_.has(e)),y=await mT(e.hookData,Ij,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=hO(d.state.config,d.state.compiled,d.state.store,d.state.registry,y,g,{perSegmentSink:d.state.lastRenderCellsBySegment,onRenderWarning:e=>b.push(e)},{theme:v.theme,look:v.look,preset:v.preset}),S=nj.get(e.hookData.session_id,`click.error`);S&&nj.clear(e.hookData.session_id,`click.error`);let C=[o,d.lastError,S].filter(Boolean).join(`
183
+ `),ee=fj.notice({sessionId:s,dismissed:nj.get(s,vC),enabled:v.updateNotice}),te=d.lastError===null?null:d.configFilePath,w=_S(C,ee,[d.lastWarning??``,...b].filter(Boolean).join(`
184
+ `)),ne=rj.sync(s,w===null?null:yS(w));ne!==null&&Y(`warn`,`diagnostic dump failed: ${ne}`);let re=bS(x,w,{fullText:ne===null?{kind:`file`,path:rj.pathFor(s)}:{kind:`unavailable`,reason:ne},failedConfigFile:te},{width:m,rowCap:h,colorCompatibility:v.colorCompatibility}),ie=Date.now()-t,T=ej.getStats(),E=tj.getStats();return Y(`info`,`render sid=${e.hookData.session_id??`?`} took=${ie}ms termCols=${p??`?`} termRows=${c.termRows??`?`} width=${m} git=${T.size}/${T.hits}h/${T.misses}m usage=${E.size}/${E.hits}h/${E.misses}m err=${C?`Y`:`N`} upd=${ee.length} warn=${d.lastWarning?`Y`:`N`}`),Oj({ok:!0,output:re+`
185
+ `})}catch(e){throw QA.requestsErrored++,e}}if(e.kind===`click`)return Oj(await Lj(e.verb,e.value));if(e.kind===`debug`){if(!FA(e.what))return Oj({ok:!1,error:`unknown debug 'what': ${String(e.what)} (have: ${PA.join(`, `)})`,code:`BAD_REQUEST`,daemonV:3});let t=cj.firstState(),n=t===null?null:{store:t.store,registry:t.registry,config:t.config,compiled:t.compiled,lastRenderBySegment:e.what===`segments`?Fj(t.lastRenderCellsBySegment,t.config.globals.charset??`unicode`,t.config.globals.colorCompatibility??`truecolor`):Pj};return Oj({ok:!0,debug:wA(e.what,n)})}return Oj({ok:!1,error:`unknown kind`,code:`BAD_REQUEST`,daemonV:3})}function Aj(e){let{values:t,tokens:n}=S({args:e.slice(1),options:{config:{type:`string`}},strict:!1,tokens:!0,allowPositionals:!0}),r=[...new Set((n??[]).filter(e=>e.kind===`option`&&e.name!==`config`).map(e=>`--${e.name}`))];return{configFile:_y(t.config),unknownFlagsError:r.length>0?`Unknown flags: ${r.join(`, `)}`:null}}const jj={sessionState:nj,dlog:Y,applyUpdate:()=>fj.act(),doctor:kk()},Mj={style:`powerline`,colorCompatibility:`truecolor`,wrap:!0,padding:1,charset:`unicode`},Nj={...Mj,width:1/0},Pj=new Map;function Fj(e,t,n){let r=new Map;for(let[i,a]of e)r.set(i,dS(a,{...Nj,charset:t,colorCompatibility:n}));return r}const Ij={gitProvider:ej,usageStore:tj,contextProvider:ij,metricsProvider:aj,activityProvider:oj,tmuxService:sj,log:Y,clock:()=>new Date};function Lj(e,t){let n=vA.get(e);if(!n)return{ok:!1,error:`unknown click verb: ${e}`,code:`BAD_REQUEST`,daemonV:3};try{return n(t,jj),{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 Rj={connectMs:200,budgetMs:500};async function zj(e){let n=e.includes(`--json`),r=await Bj();if(r.kind!==`ok`&&(t.stderr.write(`daemon-stats: ${My(r)}\n`),t.exit(1)),n){t.stdout.write(JSON.stringify(r.value,null,2)+`
186
+ `);return}t.stdout.write(Wj(r.value))}function Bj(){return Ey({kind:`stats`},Rj,e=>`stats`in e?e.stats:void 0)}function Vj(e){return e<1024?`${e}B`:e<1024*1024?`${(e/1024).toFixed(1)}KB`:`${(e/1024/1024).toFixed(1)}MB`}function Hj(e,t){let n=e+t;return n===0?`n/a`:`${(e/n*100).toFixed(1)}%`}function Uj(e){return e<60?`${e}s`:e<3600?`${Math.floor(e/60)}m${e%60}s`:`${Math.floor(e/3600)}h${Math.floor(e%3600/60)}m`}function Wj(e){let t=[];t.push(`cc-candybar daemon stats`),t.push(``),t.push(`process`),t.push(` pid ${e.pid}`),t.push(` version ${e.version}`),t.push(` protocol ${e.protocolVersion}`),t.push(` startedAt ${e.startedAt}`),t.push(` uptime ${Uj(e.uptimeSec)}`),t.push(` rss ${Vj(e.rssBytes)}`),t.push(` heapUsed ${Vj(e.heapUsedBytes)}`),t.push(` heapTotal ${Vj(e.heapTotalBytes)}`),t.push(` external ${Vj(e.externalBytes)}`),t.push(` arrayBuffers ${Vj(e.arrayBuffersBytes)}`),t.push(``),t.push(`requests`),t.push(` total ${e.requests.total}`),t.push(` errored ${e.requests.errored}`),t.push(` timedOut ${e.requests.timedOut}`),t.push(` inFlight ${e.requests.inFlight}`),t.push(``),t.push(`gitCache`),t.push(` size ${e.gitCache.size}`),t.push(` hit rate ${Hj(e.gitCache.hits,e.gitCache.misses)} (${e.gitCache.hits} / ${e.gitCache.hits+e.gitCache.misses})`),t.push(` invalidations ${e.gitCache.invalidations}`),t.push(``),t.push(`usageCache`),t.push(` size ${e.usageCache.size}`),t.push(` hit rate ${Hj(e.usageCache.hits,e.usageCache.misses)} (${e.usageCache.hits} / ${e.usageCache.hits+e.usageCache.misses})`),t.push(` sweeps ${e.usageCache.sweeps}`),t.push(``),t.push(`renderCache`),t.push(` size ${e.renderCache.size}`),t.push(`watchers`),t.push(` active ${e.watchers.active}`),t.push(` opened ${e.watchers.opened}`),t.push(` closed ${e.watchers.closed}`),t.push(` evicted ${e.watchers.evicted}`),t.push(``),t.push(`subprocesses`),t.push(` total ${e.subprocesses.total}`),t.push(` inFlight ${e.subprocesses.inFlight}`),t.push(` lastMinute ${e.subprocesses.lastMinute}`);let n=Object.entries(e.subprocesses.byCategory),r=n.reduce((e,[t])=>Math.max(e,t.length),13);for(let[i,a]of n){let n=e.subprocesses.p50DurationMs[i],o=e.subprocesses.p99DurationMs[i],s=n!==void 0&&o!==void 0?` (p50 ${n}ms · p99 ${o}ms)`:``;t.push(` ${i.padEnd(r)} ${a}${s}`)}return e.nextRestartReason&&(t.push(``),t.push(`nextRestart ${e.nextRestartReason}`)),t.join(`
187
187
  `)+`
188
- `}const Uj={connectMs:200,budgetMs:500};async function Wj(e,n){let r=n.includes(`--json`),i=await Gj(e);if(i.kind!==`ok`&&(t.stderr.write(`${e}: ${jy(i)}\n`),t.exit(1)),r){t.stdout.write(JSON.stringify(i.value,null,2)+`
189
- `);return}t.stdout.write(Kj(i.value))}function Gj(e){return Ty({kind:`debug`,what:e},Uj,e=>`debug`in e?e.debug:void 0)}function Kj(e){switch(e.what){case`vars`:return qj(e.vars);case`segments`:return Jj(e.segments);case`config`:return Yj(e.config);default:return e}}function qj(e){if(e.length===0)return`no variables (DSL not active)
190
- `;let t=[`variables (${e.length})`,``],n=e.reduce((e,t)=>Math.max(e,t.name.length),4),r=e.reduce((e,t)=>Math.max(e,(t.source??`—`).length),6),i=e.reduce((e,t)=>Math.max(e,t.type.length),4);for(let a of e){let e=a.ageMs===null?``:` ${Zj(a.ageMs)}`,o=a.lastError?` ✗ ${a.lastError.message}`:``;t.push(` ${a.name.padEnd(n)} ${(a.source??`—`).padEnd(r)} ${a.type.padEnd(i)} ${Xj(a.value)}${e}${o}`)}return t.join(`
188
+ `}const Gj={connectMs:200,budgetMs:500};async function Kj(e,n){let r=n.includes(`--json`),i=await qj(e);if(i.kind!==`ok`&&(t.stderr.write(`${e}: ${My(i)}\n`),t.exit(1)),r){t.stdout.write(JSON.stringify(i.value,null,2)+`
189
+ `);return}t.stdout.write(Jj(i.value))}function qj(e){return Ey({kind:`debug`,what:e},Gj,e=>`debug`in e?e.debug:void 0)}function Jj(e){switch(e.what){case`vars`:return Yj(e.vars);case`segments`:return Xj(e.segments);case`config`:return Zj(e.config);default:return e}}function Yj(e){if(e.length===0)return`no variables (DSL not active)
190
+ `;let t=[`variables (${e.length})`,``],n=e.reduce((e,t)=>Math.max(e,t.name.length),4),r=e.reduce((e,t)=>Math.max(e,(t.source??`—`).length),6),i=e.reduce((e,t)=>Math.max(e,t.type.length),4);for(let a of e){let e=a.ageMs===null?``:` ${$j(a.ageMs)}`,o=a.lastError?` ✗ ${a.lastError.message}`:``;t.push(` ${a.name.padEnd(n)} ${(a.source??`—`).padEnd(r)} ${a.type.padEnd(i)} ${Qj(a.value)}${e}${o}`)}return t.join(`
191
191
  `)+`
192
- `}function Jj(e){if(e.length===0)return`no segments (DSL not active)
192
+ `}function Xj(e){if(e.length===0)return`no segments (DSL not active)
193
193
  `;let t=[`segments (${e.length})`,``];for(let n of e)t.push(` ${n.name}`),n.description!==null&&t.push(` shows ${n.description}`),t.push(` template ${n.template}`),n.referencedVars.length>0&&t.push(` vars ${n.referencedVars.join(`, `)}`),n.lastRender!==null&&t.push(` last ${n.lastRender}`);return t.join(`
194
194
  `)+`
195
- `}function Yj(e){return e===null?`config: DSL not active
195
+ `}function Zj(e){return e===null?`config: DSL not active
196
196
  `:JSON.stringify(e,null,2)+`
197
- `}function Xj(e){let t=typeof e==`string`?e:JSON.stringify(e);return t.length>60?t.slice(0,57)+`…`:t}function Zj(e){return e<1e3?`${e}ms`:e<6e4?`${(e/1e3).toFixed(1)}s`:`${Math.floor(e/6e4)}m`}function Qj(){let e=eM();return e===null?null:r.readFileSync(e,`utf-8`)}function $j(){let e;try{e=Qj()}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 eM(){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 tM(e){let t=e.CC_CANDYBAR_CONFIG??``;return t===``?void 0:t}const nM=5e3;function rM(e){let t=`/home/tester`,n=Math.floor(Date.now()/1e3);return{hook_event_name:`Status`,session_id:`test0a1b-2c3d-4e5f-6a7b-8c9d0e1f2a3b`,version:`1.15.0`,home:t,cwd:`${t}/code/cc-candybar/src`,transcript_path:`${t}/.claude/projects/x/test.jsonl`,model:{id:`claude-opus-4-8`,display_name:`Opus 4.8`},workspace:{current_dir:`${t}/code/cc-candybar/src`,project_dir:`${t}/code/cc-candybar`},git:{repoName:`cc-candybar`,repoUrl:`https://github.com/promptctl/cc-candybar`,branch:`main`,sha:`abc1234`,ahead:2,behind:1,staged:3,unstaged:2,untracked:1,conflicts:0,upstream:`origin/main`,stash:1,status:`dirty`,operation:`rebase`,timeSinceCommit:780},session:{cost:.39,tokens:241400},today:{cost:12.5,tokens:34e5},context:{totalTokens:48487,contextLeft:24},metrics:{lastResponseTime:8.2,responseTime:4.2,sessionDuration:930,messageCount:8,linesAdded:512,linesRemoved:88},block:{nativeUtilization:63,resetsAt:n+2*3600},weekly:{percentage:21,resetsAt:n+5*86400},cache:{expiresAt:n+900},tmux:{session:`work`},host:{name:`tester-box`,user:`tester`,ssh:!0},preset:{effective:e.preset,customized:e.presetCustomized},style:{effective:e.style},charset:{effective:e.charset},colorCompatibility:{effective:e.colorCompatibility},autoWrap:{effective:e.autoWrap},padding:{effective:e.padding}}}function iM(e,t){let n=ey(e,e),r=ny(n);return r!==null&&t.push(r),n.kind===`file`?n.path:null}async function aM(e,n=t.cwd()){let i=[],a=e===void 0?iM(n,i):c.resolve(Zv(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=iy(n,n);o!==null&&i.push(o);try{return{kind:`clean`,configPath:a,warnings:i,rendered:await cM(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 ka&&i.push(...e.warnings),{kind:`fatal`,configPath:a,message:e instanceof ka||e instanceof Error?e.message:String(e),warnings:i})}}async function oM(e,t,n){let{config:r,source:i,warnings:a}=ay(e,AT);n.push(...a);let o=cy(r,e??`<default>`,i),s=new xO,c=new ZE(s,o.globals.default_empty_value??``,void 0,new MO);try{let e=lO(o,c,{cwd:t});n.push(...e.loadWarnings);let r=await c.settled(nM);return r.length>0&&n.push(`source${r.length===1?``:`s`} still running after ${nM} ms, rendered with fallback values: ${r.join(`, `)}`),{config:o,compiled:e,store:s,registry:c}}catch(e){throw c.dispose(),e}}function sM({config:e,compiled:t,store:n,registry:r},i,a){let o=new Map;return{rendered:pO(e,t,n,r,rM(i),{style:i.style,separator:i.separator,width:a,colorCompatibility:i.colorCompatibility,wrap:i.autoWrap,padding:i.padding,charset:i.charset},{onSegmentError:(e,t)=>o.set(`segment "${e}"`,t),onRenderWarning:e=>o.set(`globals.palette`,e)},{theme:i.theme,look:i.look,preset:i.preset}),failures:o}}async function cM(e,t,n){let r=await oM(e,t,n),{config:i}=r;try{gC(i);let e=$w(i,()=>null,()=>!1),t=e=>sM(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(`
198
- `));return n.rendered}finally{r.registry.dispose()}}function lM(e){return e.map(e=>`warning: ${e}\n`).join(``)}function uM(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:lM(e.warnings),code:0};case`fatal`:return{stdout:``,stderr:lM(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 dM=`--render`,fM=`Usage: cc-candybar check [${dM}] [config-file]\n`;function pM(e){let t=e.filter(e=>e.startsWith(`--`)),n=e.filter(e=>!e.startsWith(`--`)),r=t.filter(e=>e!==dM);return r.length>0?{kind:`usage`,message:`check: unknown option ${r.join(` `)}\n${fM}`}:n.length>1||n[0]===``?{kind:`usage`,message:`check: expected at most one non-empty path\n${fM}`}:{kind:`run`,target:n[0],render:t.includes(dM)}}async function mM(e){let n=pM(e),r=n.kind===`usage`?{stdout:``,stderr:n.message,code:2}:uM(await aM(n.target??tM(t.env)),n.render);t.stdout.write(r.stdout),t.stderr.write(r.stderr),t.exit(r.code)}const hM=`${nS}${tS}`;function gM(e){return`${hM}⚠ cc-candybar: ${_M(e)}\n`}function _M(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: ${eS(e.message,60)}`;case`render_failed`:return`render failed: ${eS(e.message,60)}`;case`malformed_response`:return`malformed daemon response: ${eS(e.message,60)}`}}function vM(e){switch(e.kind){case`ok`:return{output:e.value,kick:!1,debug:null};case`transient`:return{output:`
199
- `,kick:!0,debug:`daemon unavailable (transient: ${e.cause}: ${e.message}) — kicking daemon`};case`permanent`:return{output:gM(e),kick:!1,debug:`daemon refused request (permanent: ${e.cause}) — not kicking`}}}function yM(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 bM=` (fix: click the settings menu (${No} by default) › 🧰 tools ▸ 🩺 doctor, then [fix] on the bar)`;function xM({check:e,verdict:t}){return t.ok?`✓ ${e.label}\n`:`✗ ${e.label} — ${t.reason}${t.fix===void 0?``:bM}\n`}function SM(e,t){let n;try{n=Mk(e,ag(t))}catch(e){return{stdout:``,stderr:`doctor: ${e instanceof Error?e.message:String(e)}\n`,code:2}}let r=cg(n);return{stdout:r.map(xM).join(``),stderr:``,code:+!r.every(e=>e.verdict.ok)}}function CM(e){e.length>0&&(t.stderr.write(`doctor: takes no arguments
197
+ `}function Qj(e){let t=typeof e==`string`?e:JSON.stringify(e);return t.length>60?t.slice(0,57)+`…`:t}function $j(e){return e<1e3?`${e}ms`:e<6e4?`${(e/1e3).toFixed(1)}s`:`${Math.floor(e/6e4)}m`}function eM(){let e=nM();return e===null?null:r.readFileSync(e,`utf-8`)}function tM(){let e;try{e=eM()}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 nM(){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 rM(e){let t=e.CC_CANDYBAR_CONFIG??``;return t===``?void 0:t}const iM=5e3;function aM(e){let t=`/home/tester`,n=Math.floor(Date.now()/1e3);return{hook_event_name:`Status`,session_id:`test0a1b-2c3d-4e5f-6a7b-8c9d0e1f2a3b`,version:`1.15.0`,home:t,cwd:`${t}/code/cc-candybar/src`,transcript_path:`${t}/.claude/projects/x/test.jsonl`,model:{id:`claude-opus-4-8`,display_name:`Opus 4.8`},workspace:{current_dir:`${t}/code/cc-candybar/src`,project_dir:`${t}/code/cc-candybar`},git:{repoName:`cc-candybar`,repoUrl:`https://github.com/promptctl/cc-candybar`,branch:`main`,sha:`abc1234`,ahead:2,behind:1,staged:3,unstaged:2,untracked:1,conflicts:0,upstream:`origin/main`,stash:1,status:`dirty`,operation:`rebase`,timeSinceCommit:780},session:{cost:.39,tokens:241400},today:{cost:12.5,tokens:34e5},context:{totalTokens:48487,contextLeft:24},metrics:{lastResponseTime:8.2,responseTime:4.2,sessionDuration:930,messageCount:8,linesAdded:512,linesRemoved:88},block:{nativeUtilization:63,resetsAt:n+2*3600},weekly:{percentage:21,resetsAt:n+5*86400},cache:{expiresAt:n+900},tmux:{session:`work`},host:{name:`tester-box`,user:`tester`,ssh:!0},preset:{effective:e.preset,customized:e.presetCustomized},style:{effective:e.style},charset:{effective:e.charset},colorCompatibility:{effective:e.colorCompatibility},autoWrap:{effective:e.autoWrap},padding:{effective:e.padding}}}function oM(e,t){let n=ty(e,e),r=ry(n);return r!==null&&t.push(r),n.kind===`file`?n.path:null}async function sM(e,n=t.cwd()){let i=[],a=e===void 0?oM(n,i):c.resolve(Qv(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=ay(n,n);o!==null&&i.push(o);try{return{kind:`clean`,configPath:a,warnings:i,rendered:await uM(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 ka&&i.push(...e.warnings),{kind:`fatal`,configPath:a,message:e instanceof ka||e instanceof Error?e.message:String(e),warnings:i})}}async function cM(e,t,n){let{config:r,source:i,warnings:a}=oy(e,jT);n.push(...a);let o=ly(r,e??`<default>`,i),s=new CO,c=new QE(s,o.globals.default_empty_value??``,void 0,new PO);try{let e=dO(o,c,{cwd:t});n.push(...e.loadWarnings);let r=await c.settled(iM);return r.length>0&&n.push(`source${r.length===1?``:`s`} still running after ${iM} ms, rendered with fallback values: ${r.join(`, `)}`),{config:o,compiled:e,store:s,registry:c}}catch(e){throw c.dispose(),e}}function lM({config:e,compiled:t,store:n,registry:r},i,a){let o=new Map;return{rendered:hO(e,t,n,r,aM(i),{style:i.style,separator:i.separator,width:a,colorCompatibility:i.colorCompatibility,wrap:i.autoWrap,padding:i.padding,charset:i.charset},{onSegmentError:(e,t)=>o.set(`segment "${e}"`,t),onRenderWarning:e=>o.set(`globals.palette`,e)},{theme:i.theme,look:i.look,preset:i.preset}),failures:o}}async function uM(e,t,n){let r=await cM(e,t,n),{config:i}=r;try{_C(i);let e=eT(i,()=>null,()=>!1),t=e=>lM(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(`
198
+ `));return n.rendered}finally{r.registry.dispose()}}function dM(e){return e.map(e=>`warning: ${e}\n`).join(``)}function fM(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:dM(e.warnings),code:0};case`fatal`:return{stdout:``,stderr:dM(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 pM=`--render`,mM=`Usage: cc-candybar check [${pM}] [config-file]\n`;function hM(e){let t=e.filter(e=>e.startsWith(`--`)),n=e.filter(e=>!e.startsWith(`--`)),r=t.filter(e=>e!==pM);return r.length>0?{kind:`usage`,message:`check: unknown option ${r.join(` `)}\n${mM}`}:n.length>1||n[0]===``?{kind:`usage`,message:`check: expected at most one non-empty path\n${mM}`}:{kind:`run`,target:n[0],render:t.includes(pM)}}async function gM(e){let n=hM(e),r=n.kind===`usage`?{stdout:``,stderr:n.message,code:2}:fM(await sM(n.target??rM(t.env)),n.render);t.stdout.write(r.stdout),t.stderr.write(r.stderr),t.exit(r.code)}const _M=`${rS}${nS}`;function vM(e){return`${_M}⚠ cc-candybar: ${yM(e)}\n`}function yM(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: ${tS(e.message,60)}`;case`render_failed`:return`render failed: ${tS(e.message,60)}`;case`malformed_response`:return`malformed daemon response: ${tS(e.message,60)}`}}function bM(e){switch(e.kind){case`ok`:return{output:e.value,kick:!1,debug:null};case`transient`:return{output:`
199
+ `,kick:!0,debug:`daemon unavailable (transient: ${e.cause}: ${e.message}) — kicking daemon`};case`permanent`:return{output:vM(e),kick:!1,debug:`daemon refused request (permanent: ${e.cause}) — not kicking`}}}function xM(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 SM=` (fix: click the settings menu (${Po} by default) › 🧰 tools ▸ 🩺 doctor, then [fix] on the bar)`;function CM({check:e,verdict:t}){return t.ok?`✓ ${e.label}\n`:`✗ ${e.label} — ${t.reason}${t.fix===void 0?``:SM}\n`}function wM(e,t){let n;try{n=Pk(e,og(t))}catch(e){return{stdout:``,stderr:`doctor: ${e instanceof Error?e.message:String(e)}\n`,code:2}}let r=lg(n);return{stdout:r.map(CM).join(``),stderr:``,code:+!r.every(e=>e.verdict.ok)}}function TM(e){e.length>0&&(t.stderr.write(`doctor: takes no arguments
200
200
  Usage: cc-candybar doctor
201
- `),t.exit(2));let n=SM(Dk(),t.env);t.stdout.write(n.stdout),t.stderr.write(n.stderr),t.exit(n.code)}function wM(){return yM(t.env.COLUMNS,t.stderr.columns)}function TM(){return yM(t.env.LINES,t.stderr.rows)}const EM=[`SSH_CONNECTION`,`SSH_CLIENT`,`SSH_TTY`],DM=e=>e.some(e=>t.argv.includes(e));function OM(){return EM.some(e=>(t.env[e]??``)!==``)}function kM(){console.log(Gh)}async function AM(){try{DM(Hh.help)&&(kM(),t.exit(0)),DM(Hh.version)&&(console.log(`cc-candybar ${qb}`),t.exit(0));let e=t.argv[2];if(e===`install`&&(await Dx(t.argv.slice(3)),t.exit(0)),e===`install-url-handler`&&(Sx(),t.exit(0)),e===`url-handle`){await wx(t.argv[3]);return}if(e===`daemon`){mj();return}if(e===`daemon-stats`&&(await Lj(t.argv.slice(3)),t.exit(0)),e===`check`||e===`lint`){await mM(t.argv.slice(3));return}if(e===`schema`){$j();return}if(e===`doctor`){CM(t.argv.slice(3));return}NA(e)&&(await Wj(e,t.argv.slice(3)),t.exit(0)),t.stdin.isTTY===!0&&(console.error(`Error: This tool requires input from Claude Code
201
+ `),t.exit(2));let n=wM(kk(),t.env);t.stdout.write(n.stdout),t.stderr.write(n.stderr),t.exit(n.code)}function EM(){return xM(t.env.COLUMNS,t.stderr.columns)}function DM(){return xM(t.env.LINES,t.stderr.rows)}const OM=[`SSH_CONNECTION`,`SSH_CLIENT`,`SSH_TTY`],kM=e=>e.some(e=>t.argv.includes(e));function AM(){return OM.some(e=>(t.env[e]??``)!==``)}function jM(){console.log(Kh)}async function MM(){try{kM(Uh.help)&&(jM(),t.exit(0)),kM(Uh.version)&&(console.log(`cc-candybar ${Jb}`),t.exit(0));let e=t.argv[2];if(e===`install`&&(await Ox(t.argv.slice(3)),t.exit(0)),e===`install-url-handler`&&(Cx(),t.exit(0)),e===`url-handle`){await Tx(t.argv[3]);return}if(e===`daemon`){gj();return}if(e===`daemon-stats`&&(await zj(t.argv.slice(3)),t.exit(0)),e===`check`||e===`lint`){await gM(t.argv.slice(3));return}if(e===`schema`){tM();return}if(e===`doctor`){TM(t.argv.slice(3));return}FA(e)&&(await Kj(e,t.argv.slice(3)),t.exit(0)),t.stdin.isTTY===!0&&(console.error(`Error: This tool requires input from Claude Code
202
202
 
203
203
  cc-candybar is designed to be used as a Claude Code statusLine command.
204
204
  It reads hook data from stdin and outputs formatted statusline.
@@ -214,4 +214,4 @@ Add to ~/.claude/settings.json:
214
214
  Run with --help for more options.
215
215
 
216
216
  To test output manually:
217
- echo '{"session_id":"test-session","workspace":{"project_dir":"/path/to/project"},"model":{"id":"claude-sonnet-4-5","display_name":"Claude"}}' | cc-candybar --style=powerline`),t.exit(1)),O(`Working directory: ${t.cwd()}`),O(`Process args:`,t.argv);let r=await n(t.stdin);O(`Received hook data:`,JSON.stringify(r,null,2)),r||(console.error(`Error: No input data received from stdin`),kM(),t.exit(1));let i=vM(await Fy(r,t.argv,t.cwd(),{termCols:wM(),termRows:TM(),ssh:OM(),tmux:ag(t.env),configEnv:tM(t.env)}));i.debug!==null&&O(i.debug),i.kick&&ib(),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)}}AM();export{};
217
+ echo '{"session_id":"test-session","workspace":{"project_dir":"/path/to/project"},"model":{"id":"claude-sonnet-4-5","display_name":"Claude"}}' | cc-candybar --style=powerline`),t.exit(1)),O(`Working directory: ${t.cwd()}`),O(`Process args:`,t.argv);let r=await n(t.stdin);O(`Received hook data:`,JSON.stringify(r,null,2)),r||(console.error(`Error: No input data received from stdin`),jM(),t.exit(1));let i=bM(await Iy(r,t.argv,t.cwd(),{termCols:EM(),termRows:DM(),ssh:AM(),tmux:og(t.env),configEnv:rM(t.env)}));i.debug!==null&&O(i.debug),i.kick&&ab(),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)}}MM();export{};