@promptctl/cc-candybar 1.87.1 → 1.89.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.mjs +62 -62
- package/package.json +5 -5
- package/plugin/bin/preview.sh +1 -1
- package/plugin/commands/candybar.md +9 -6
- package/schema/cc-candybar.schema.json +178 -0
package/dist/index.mjs
CHANGED
|
@@ -36,24 +36,24 @@ import{createRequire as e}from"node:module";import t from"node:process";import{j
|
|
|
36
36
|
`}function bo(e,t,n){return e.split(`
|
|
37
37
|
`).join(`${n}${t}`)}function xo(e,t,n){let[r,...i]=e,a=i.length===0?t:`{\n ${bo(xo(i,t,n),` `,`
|
|
38
38
|
`)}${n.trailingComma}\n}`;return`${n.key(r)}: ${a}`}function So(e,t,n,r){return e.slice(0,t)+r+e.slice(n)}function Co(e,t){return e.lastIndexOf(`
|
|
39
|
-
`,t-1)+1}function wo(e){return/^[ \t]*$/.test(e)}function To(e,t){let n=Co(e,t);return/^[ \t]*/.exec(e.slice(n))[0]}function Eo(e,t){return wo(e.slice(Co(e,t),t))}const Do=/(?:\/\/[^\n]*?)?(\r\n|\n|$)/y;function Oo(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++;Do.lastIndex=n;let i=Do.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 ko(e,t){let{commaEnd:n,line:r}=Oo(e,t.end);if(Eo(e,t.start)&&r!==null)return So(e,Co(e,t.start),r.next,``);if(n!==-1){let r=n;for(;r<e.length&&e[r]===` `;)r++;return So(e,t.start,r,``)}let i=t.start;for(;i>0&&(e[i-1]===` `||e[i-1]===` `);)i--;return e[i-1]===`,`?So(e,i-1,t.end,``):So(e,t.start,t.end,``)}function Ao(e,t,n,r,i){let a=n.commaEnd!==-1,o=a?e:So(e,t.end,t.end,`,`),s=n.line.at+ +!a,c=yo(e);return So(o,s,s,`${c}${i}${bo(r,i,c)}${a?`,`:``}`)}function jo(e,t,n,r){let i=t.kind===`object`?t.entries:t.elements,a=i[i.length-1],o=To(e,t.span.start);if(a===void 0){let i=o+` `,a=yo(e);return So(e,t.span.start+1,t.span.end-1,`${a}${i}${bo(n,i,a)}${r.trailingComma}${a}${o}`)}let{commaEnd:s,line:c}=Oo(e,a.span.end);if(Eo(e,a.span.start)&&c!==null){let t=e.slice(Co(e,a.span.start),a.span.start);return Ao(e,a.span,{commaEnd:s,line:c},n,t)}let l=s===-1?a.span.end:s;return So(e,l,l,`${s===-1?`, `:` `}${n}${s===-1?``:`,`}`)}function Mo(e,t,n,r){if(t.length===0)throw new to(`setValue needs a non-empty path`,0);if(/^\s*$/.test(e)){let i=yo(e);return`{${i} ${bo(xo(t,n,r),` `,i)}${r.trailingComma}${i}}${i}`}let i=so(e);for(let a=0;a<t.length;a++){if(i.kind!==`object`)throw new to(`cannot set ${t.join(`.`)}: ${t.slice(0,a).join(`.`)||`the document`} is not an object`,i.span.start);let o=co(i,t[a]);if(o===void 0)return jo(e,i,xo(t.slice(a),n,r),r);if(a===t.length-1){let t=To(e,o.keySpan.start);return So(e,o.value.span.start,o.value.span.end,bo(n,t,yo(e)))}i=o.value}throw new to(`unreachable: path exhausted`,0)}function No(e,t,n=0){if(t.length===0)throw new to(`deleteValue needs a non-empty path`,0);if(/^\s*$/.test(e))return e;let r=t.slice(0,-1),i=lo(so(e),r),a=i===void 0?void 0:co(i,t[t.length-1]);if(a===void 0||i?.kind!==`object`)return e;let o=ko(e,a.span);return r.length>n&&i.entries.length===1?No(o,r,n):o}const Po=[`h`,`v`,`children`];function Fo(e){if(e.kind===`string`)return e.value;if(e.kind!==`object`)return;let t=co(e,`seg`)?.value
|
|
40
|
-
`)}const Yo=[`vertical`,`horizontal`],Xo={vertical:`row`,horizontal:`cell`};function Zo(e,t){return e.opens===void 0?e:{...e,opens:{...e.opens,body:t(e.opens.body)}}}function*Qo(e){yield e;for(let t of ns(e))yield*Qo(t)}const $o=(e,t)=>`${e}.children[${t}]`,es=e=>`${e}.opens.body`;function*ts(e,t){if(yield[e,t],e.kind===`container`)for(let[n,r]of e.children.entries())yield*ts(r,$o(t,n));else e.opens!==void 0&&(yield*ts(e.opens.body,es(t)))}function ns(e){return e.kind===`container`?e.children:e.opens===void 0?[]:[e.opens.body]}function rs(e){return e===void 0||`text`in e?`text`:`regex`in e?`regex`:`json`}const is=[`ttl`,`watch_file`,`depends_on`,`key`,`never`];function as(e){return e.kind!==`literal`&&e.kind!==`input`&&e.kind!==`env`&&e.kind!==`state`}const os=[`branch`,`sha`,`dirty`,`ahead`,`behind`,`stash`],ss=[`file`,`shell`,`git`],cs=[`left`,`center`,`right`],ls=[`right`,`left`,`middle`];function us(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 ${gs(i)}`,line:W(e.source,[...t.split(`.`),r])}),null)}function ds(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 ${gs(i)}`,line:W(e.source,[...t.split(`.`),`default`])});return}return i}}function fs(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 ${gs(i)}`,line:W(e.source,[...t.split(`.`),r])});return}return i}}function ps(e,t,n){let r=fs(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 ms(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 hs(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function gs(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 _s(e,t,n,r){return hs(r)?(bs(e,n,r,t.noun,new Set(Object.keys(t.fields))),vs(e,t.fields,n,r)):(e.issues.push({path:n,message:`${n} must be an object, got ${gs(r)}`,line:W(e.source,n.split(`.`))}),null)}function vs(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 ys=new Set;function bs(e,t,n,r,i,a=ys){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 xs(e,t,n){return e.issues.push({path:t,message:n,line:W(e.source,t.split(`.`))}),null}function Ss(e,t,n,r){if(!hs(r))return e.issues.push({path:n,message:`${t.noun} must be an object, got ${gs(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 Cs(e,t,n,r){if(!hs(r))return e.issues.push({path:n,message:`${n} must be an object, got ${gs(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 ${gs(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 bs(e,n,r,`${i} ${t.memberNoun} key`,o.keys,l),c}function ws(e,t,n){return{json:Fs(Ns(n),e,t),keys:new Set([e,...Object.keys(n)])}}function Ts(e){return(...t)=>e()(...t)}function Es(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)=>fs(e,t,r,n)}}function Ds(){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 ${gs(i)}`,line:W(e.source,[n])});return}return i}}}}function Os(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 ks(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 As(){return{required:!1,json:{type:`string`},parse:(e,t,n,r)=>ps(e,t,r)}}function js(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>us(e,t,r,n)??void 0}}function Ms(e){return{required:!1,json:{enum:[...e]},parse:(t,n,r,i)=>ms(t,n,i,r,e)}}function Ns(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 Ps(e){return Ns(e.fields)}function Fs(e,t,n){let r=e,i={[t]:{const:n},...r.properties},a=[t,...r.required??[]];return{...r,properties:i,required:a}}function Is(e){let t=e.arms;return{anyOf:Object.values(t).map(e=>e.json)}}function Ls(e){let t=e.arms;return{anyOf:Object.entries(t).map(([e,t])=>({type:`object`,properties:{[e]:t.json},required:[e],additionalProperties:!1}))}}const Rs=/^[A-Za-z_][A-Za-z0-9_]*$/;function zs(e){return`#${e+1}`}const Bs={rows:{}};function Vs(e){return`rows`in e}function Hs(e){return Object.fromEntries(e.map((e,t)=>[zs(t),e]))}function Us(e){if(e.kind===`container`&&e.direction===`vertical`){let{kind:t,direction:n,children:r,...i}=e;return{...i,rows:Hs(r)}}let{when:t,...n}=e;return{...t!==void 0&&{when:t},rows:Hs([n])}}function Ws(e){let{rows:t,...n}=e;return{kind:`container`,direction:`vertical`,children:Object.values(t),...n}}function Gs(e){return Vs(e)?Ws(e):e}function*Ks(e,t){if(!Vs(e)){yield*ts(e,t);return}yield[Ws(e),t];for(let[n,r]of Object.entries(e.rows))yield*ts(r,`${t}.rows.${n}`)}function qs(e,t){return Vs(e)?{...t,...e,rows:{...t.rows,...e.rows}}:Us(e)}function Js(e){if(!Vs(e))return!0;let{rows:t,...n}=e;return Object.values(n).some(e=>e!==void 0)||Object.keys(t).length>0}function Ys(e,t){return{globals:{...t.globals,...e.globals??{}},variables:{...t.variables,...e.variables??{}},segments:Zs(t.segments,e.segments??{}),root:qs(e.root??Bs,t.root),actions:{...t.actions,...e.actions??{}},looks:{...t.looks,...e.looks??{}},presets:Zs(t.presets,Xs(t.presets,e.presets??{})),editGlobals:{...t.editGlobals,...e.editGlobals??{}},helpers:{...t.helpers,...e.helpers??{}}}}function Xs(e,t){return Object.fromEntries(Object.entries(t).map(([t,n])=>[t,n.globals===void 0?n:{...n,globals:{...e[t]?.globals,...n.globals}}]))}function Zs(e,t){return{...e,...Object.fromEntries(Object.entries(t).map(([t,n])=>[t,{...e[t],...n}]))}}const Qs=`closed`,$s=`🍫`;function ec(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 tc(e,t,n,r){let i=ec(e,t.length,n);if(i!==void 0)throw Error(i);return t.length===1?t[0]:t[r]}function nc(e){return e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}function rc(e,t,n,r,i){return{kind:`segment`,name:e,opens:{ref:t,body:n,placement:r},...i!==void 0&&{when:i}}}function ic(e,...t){return`{{ and ${[e,...t].map(ac).join(` `)} }}`}function ac(e){return`(eq .${e.variable} "${nc(e.member)}")`}function oc(e,t,n){return`{{ action "${e}" "${nc(t)}" "${nc(n)}" }}`}function sc(e,t){return{kind:`state`,key:e,default:t}}function cc(e,t){return{set:e,cycle:[Qs,t]}}const lc={required:!1,json:{enum:[...za]},parse:(e,t,n,r)=>{if(r[n]===`auto`){e.issues.push({path:`${t}.${n}`,message:`${t}.${n}: "auto" is not supported — the render daemon runs detached, so terminal detection would read the daemon's environment, not your terminal's. Pick an explicit depth: ${za.join(`, `)}`,line:W(e.source,[...t.split(`.`),n])});return}return ms(e,t,r,n,za)}},uc={required:!1,json:{type:`string`},parse:(e,t,n,r)=>{let i=fs(e,t,r,n);return Ta(i)?i:ps(e,t,r)}},dc=/^[^\r\n]*\S[^\r\n]*$/u,fc=RegExp(`^(?:❌|✕)[\\uFE0E\\uFE0F]?$`,`u`),pc={required:!1,json:{type:`string`,pattern:dc.source,not:{pattern:fc.source}},parse:(e,t,n,r)=>{let i=fs(e,t,r,n);if(i===void 0||dc.test(i)&&!fc.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])})}},mc={default_bg:K(),default_fg:K(),default_empty_value:K(),default_separator:K(),default_truncate_marker:K(),palette:uc,look:K(),preset:K(),style:Ms(Ma),progression:Ms(Wa),autoWrap:Ds(),padding:Os(Xa),charset:Ms(Fa),updateNotice:Ds(),colorCompatibility:lc,menuGlyph:pc},hc={noun:`globals key`,fields:mc};function gc(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 _c(e){return gc(`${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 vc(e){return gc(`${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 yc={preset:_c(`a preset`),menuGlyph:vc(`a preset`)},bc={noun:`preset globals key`,fields:{...mc,...yc}};function xc(e){return Oc(e)&&!(e in yc)}const Sc={noun:`editGlobals key`,fields:{...mc,preset:_c(`the editGlobals fragment`),menuGlyph:vc(`the editGlobals fragment`)}};function Cc(e,t,n){return n===void 0?{}:_s(e,hc,t,n)??{}}function wc(e,t,n){return _s(e,bc,t,n)??{}}function Tc(){return Ps(bc)}function Ec(e,t,n){return _s(e,Sc,t,n)??{}}const Dc=new Set(Object.keys(hc.fields));function Oc(e){return Dc.has(e)}function kc(){return[...Dc]}const Ac={padding:1};function jc(e){let t=new Map;for(let[n,r]of Object.entries(Ac)){let i=e[n];t.set(n,typeof i==`number`?i:r)}return t}function Mc(e,t,n,r){return n.cache===void 0?(ss.includes(r)&&e.issues.push({path:`${t}.cache`,message:`${r} variables must declare a cache policy (one of: ${is.join(`, `)})`,line:W(e.source,t.split(`.`))}),null):Lc(e,`${t}.cache`,n.cache)}function Nc(e,t,n){if(n.cache!==void 0)return Lc(e,`${t}.cache`,n.cache)??void 0}function Pc(e){return{required:!0,json:Bc(),parse:(t,n,r,i)=>Mc(t,n,i,e)??void 0}}function Fc(){return{required:!1,json:Bc(),parse:(e,t,n,r)=>Nc(e,t,r)}}const Ic={noun:`cache`,arms:{ttl:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`&&Hc(n)?{ttl:n}:xs(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}:xs(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}:xs(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}:xs(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}:xs(e,t,`cache.never must be the literal boolean true, got ${G(n)}`)}}};function Lc(e,t,n){return Ss(e,Ic,t,n)}const Rc={noun:`time-variable cache`,arms:{ttl:Ic.arms.ttl}};function zc(){return{required:!1,json:Ls(Rc),parse:(e,t,n,r)=>r.cache===void 0?void 0:Ss(e,Rc,`${t}.cache`,r.cache)??void 0}}function Bc(){return Ls(Ic)}const Vc=/^(\d+(?:\.\d+)?)(ms|s|m|h)$/;function Hc(e){return Vc.test(e)}function Uc(e,t,n){if(n===void 0)return{};if(!hs(n))return e.issues.push({path:t,message:`${t} must be an object, got ${gs(n)}`,line:W(e.source,t.split(`.`))}),{};let r={};for(let[i,a]of Object.entries(n)){let n=Cs(e,dl,`${t}.${i}`,a);n!==null&&(r[i]=n)}return r}function Wc(){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 ${gs(i)}`,line:W(e.source,t.split(`.`))});return}return i}}}function Gc(){return{required:!0,json:{enum:[...os]},parse:(e,t,n,r)=>{let i=r.field;if(typeof i!=`string`||!os.includes(i)){e.issues.push({path:`${t}.field`,message:`git field must be one of: ${os.join(`, `)}, got ${JSON.stringify(i)}`,line:W(e.source,[...t.split(`.`),`field`])});return}return i}}}function Kc(){return{required:!1,json:{type:[`string`,`number`,`boolean`]},parse:(e,t,n,r)=>{let i=r.type;return ds(e,t,r,i===`number`||i===`boolean`||i===`string`?i:`string`)}}}const qc={noun:`parse`,arms:{text:{json:{const:!0},parse:(e,t,n)=>n===!0?{text:!0}:xs(e,t,`parse.text must be the literal boolean true, got ${G(n)}`)},regex:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`?Jc(e,t,n):xs(e,t,`parse.regex must be a pattern string, got ${G(n)}`)},json:{json:{const:!0},parse:(e,t,n)=>n===!0?{json:!0}:xs(e,t,`parse.json must be the literal boolean true, got ${G(n)}`)}}};function Jc(e,t,n){let r;try{new RegExp(n),r=RegExp(`${n}|`).exec(``).length-1}catch(n){return xs(e,t,`parse.regex is not a valid regular expression: ${n.message}`)}return r>=1?{regex:n}:xs(e,t,`parse.regex must contain a capture group — its group 1 is the value; got ${JSON.stringify(n)}`)}function Yc(){return{required:!1,json:Ls(qc),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:Ss(e,qc,`${t}.parse`,r.parse)??void 0)}}function Xc(){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)=>hs(r.parse)&&`json`in r.parse?Zc(e,t,r.default):fs(e,t,r,`default`)}}function Zc(e,t,n){if(n!==void 0)return Qc(n)?n:xs(e,`${t}.default`,`${t}.default must be a JSON value (a json-parsed source's document), got ${G(n)}`)??void 0}function Qc(e){return e!==null&&$c(e)}function $c(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($c);let t=Object.getPrototypeOf(e);return(t===Object.prototype||t===null)&&Object.values(e).every($c)}default:return!1}}const el={value:Wc(),default:K()},tl={path:js(),type:Ms([`string`,`number`,`boolean`]),default:Kc()},nl={name:js(),default:K()},rl={path:js(),readMode:Ms([`whole`,`first-line`]),parse:Yc(),cache:Pc(`file`),default:Xc()},il={command:js(),parse:Yc(),cache:Pc(`shell`),default:Xc()},al={template:js(),cache:Fc(),default:K()},ol={layout:js(),cache:zc(),default:K()},sl={field:Gc(),cache:Pc(`git`),default:K()},cl={key:js(),default:K()},ll=`kind`;function ul(e,t){return{...ws(ll,e,t),parse:(n,r,i)=>{let a=vs(n,t,r,i);return a===null?null:{kind:e,...a}}}}const dl={tag:ll,noun:`source kind`,memberNoun:`variable`,arms:{literal:ul(`literal`,el),input:ul(`input`,tl),env:ul(`env`,nl),file:ul(`file`,rl),shell:ul(`shell`,il),template:ul(`template`,al),time:ul(`time`,ol),git:ul(`git`,sl),state:ul(`state`,cl)}};function fl(){return Is(dl)}function pl(){return{type:`object`,additionalProperties:fl()}}function ml(e){return e.replace(/[^A-Za-z0-9]+/g,`_`)}const hl=`groups.`,gl=`menus.`,_l=`edit.`,vl=`settings.`,yl=[hl,gl,_l,vl];function bl(e){return yl.some(t=>e.startsWith(t))}function xl(e){let t=ml(e);return yl.find(e=>t.startsWith(ml(e)))}function Sl(e,t,n,r){for(let i of[`variables`,`actions`,`segments`])for(let a of Object.keys(t[i]??{}))a.startsWith(n)&&e.issues.push({path:`${i}.${a}`,message:`"${a}" is in the reserved "${n}" namespace (synthesized by ${r}) — rename it`,line:W(e.source,[`root`])})}const Cl=new Map([[`gitTaculous`,`gitaculous`],[`git`,`gitaculous`]]);function wl(e){let t=Cl.get(e);return t===void 0?``:` (the built-in segment "${e}" was renamed to "${t}" — update this reference)`}function Tl(e){return new Set(Object.keys(e.segments).filter(e=>!bl(e)))}function El(e,t,n){if(t===void 0)return{};if(!hs(t))return e.issues.push({path:`segments`,message:`segments must be an object, got ${gs(t)}`,line:W(e.source,[`segments`])}),{};let r={};for(let[i,a]of Object.entries(t)){let t=_s(e,n.has(i)?Ml:jl,`segments.${i}`,a);t!==null&&(r[i]=t)}return r}function Dl(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>r[n]===void 0?xs(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${wl(t.slice(9))}`)??void 0:us(e,t,r,n)??void 0}}function Ol(){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 kl(){return{required:!1,json:pl(),parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0)return Uc(e,`${t}.${n}`,i)}}}const Al={template:Dl(),description:K(),width:Ol(),justify:Ms(cs),truncate:Ms(ls),bg:K(),fg:K(),when:K(),palette:As(),vars:kl()},jl={noun:`segment key`,fields:Al},Ml={noun:`segment key`,fields:{...Al,template:K()}},Nl=`#/definitions/LayoutNode`,Pl={kind:`container`,direction:`vertical`,children:[]};function Fl(e){return{required:!0,json:{const:e},parse:()=>e}}function Il(){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 Ll(){return{required:!0,json:{enum:[...Yo]},parse:(e,t,n,r)=>{let i=r[n];return typeof i==`string`&&Yo.includes(i)?i:(e.issues.push({path:`${t}.${n}`,message:`a container "direction" must be one of: ${Yo.join(`, `)} (got ${JSON.stringify(i)})`,line:W(e.source,[`root`])}),`vertical`)}}}function Rl(e){return{required:!0,json:{type:`array`,items:{$ref:Nl}},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 ${gs(a)}`,line:W(t.source,[`root`])}),[])}}}const zl={noun:`layout-node key`,fields:{kind:Fl(`segment`),name:Il(),when:K()}},Bl=()=>Ms(Pi),Vl={noun:`layout-node key`,fields:{kind:Fl(`container`),direction:Ll(),children:Rl(Ts(()=>Kl)),when:K(),distribution:Bl()}};function Hl(){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 Ul={noun:`layout-node key`,fields:{seg:Hl(),when:K()}},Wl={noun:`layout-node key`,fields:{h:Rl(Ts(()=>Kl)),when:K(),distribution:Bl()}},Gl={noun:`layout-node key`,fields:{v:Rl(Ts(()=>Kl)),when:K(),distribution:Bl()}},Kl=(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`])}),Pl):{kind:`segment`,name:n};if(!hs(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 ${gs(n)}`,line:W(e.source,[`root`])}),Pl;if(n.kind===`container`)return _s(e,Vl,t,n)??Pl;if(n.kind===`segment`)return _s(e,zl,t,n)??Pl;if(n.kind===`cells`)return e.issues.push({path:t,message:`kind: "cells" is no longer supported — use the h-arm spelling instead:
|
|
39
|
+
`,t-1)+1}function wo(e){return/^[ \t]*$/.test(e)}function To(e,t){let n=Co(e,t);return/^[ \t]*/.exec(e.slice(n))[0]}function Eo(e,t){return wo(e.slice(Co(e,t),t))}const Do=/(?:\/\/[^\n]*?)?(\r\n|\n|$)/y;function Oo(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++;Do.lastIndex=n;let i=Do.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 ko(e,t){let{commaEnd:n,line:r}=Oo(e,t.end);if(Eo(e,t.start)&&r!==null)return So(e,Co(e,t.start),r.next,``);if(n!==-1){let r=n;for(;r<e.length&&e[r]===` `;)r++;return So(e,t.start,r,``)}let i=t.start;for(;i>0&&(e[i-1]===` `||e[i-1]===` `);)i--;return e[i-1]===`,`?So(e,i-1,t.end,``):So(e,t.start,t.end,``)}function Ao(e,t,n,r,i){let a=n.commaEnd!==-1,o=a?e:So(e,t.end,t.end,`,`),s=n.line.at+ +!a,c=yo(e);return So(o,s,s,`${c}${i}${bo(r,i,c)}${a?`,`:``}`)}function jo(e,t,n,r){let i=t.kind===`object`?t.entries:t.elements,a=i[i.length-1],o=To(e,t.span.start);if(a===void 0){let i=o+` `,a=yo(e);return So(e,t.span.start+1,t.span.end-1,`${a}${i}${bo(n,i,a)}${r.trailingComma}${a}${o}`)}let{commaEnd:s,line:c}=Oo(e,a.span.end);if(Eo(e,a.span.start)&&c!==null){let t=e.slice(Co(e,a.span.start),a.span.start);return Ao(e,a.span,{commaEnd:s,line:c},n,t)}let l=s===-1?a.span.end:s;return So(e,l,l,`${s===-1?`, `:` `}${n}${s===-1?``:`,`}`)}function Mo(e,t,n,r){if(t.length===0)throw new to(`setValue needs a non-empty path`,0);if(/^\s*$/.test(e)){let i=yo(e);return`{${i} ${bo(xo(t,n,r),` `,i)}${r.trailingComma}${i}}${i}`}let i=so(e);for(let a=0;a<t.length;a++){if(i.kind!==`object`)throw new to(`cannot set ${t.join(`.`)}: ${t.slice(0,a).join(`.`)||`the document`} is not an object`,i.span.start);let o=co(i,t[a]);if(o===void 0)return jo(e,i,xo(t.slice(a),n,r),r);if(a===t.length-1){let t=To(e,o.keySpan.start);return So(e,o.value.span.start,o.value.span.end,bo(n,t,yo(e)))}i=o.value}throw new to(`unreachable: path exhausted`,0)}function No(e,t,n=0){if(t.length===0)throw new to(`deleteValue needs a non-empty path`,0);if(/^\s*$/.test(e))return e;let r=t.slice(0,-1),i=lo(so(e),r),a=i===void 0?void 0:co(i,t[t.length-1]);if(a===void 0||i?.kind!==`object`)return e;let o=ko(e,a.span);return r.length>n&&i.entries.length===1?No(o,r,n):o}const Po=[`h`,`v`,`children`];function Fo(e){if(e.kind===`string`)return e.value;if(e.kind!==`object`)return;let t=co(e,`seg`)?.value,n=co(e,`kind`)?.value,r=co(e,`name`)?.value,i=t?.kind===`string`?t.value:n?.kind===`string`&&n.value===`segment`&&r?.kind===`string`?r.value:void 0;if(i===void 0)return;let a=co(e,`id`)?.value;return a?.kind===`string`?a.value:i}function Io(e){return e.kind===`object`?Po.map(t=>co(e,t)?.value).filter(e=>e?.kind===`array`):[]}function Lo(e){let t=co(e,`rows`)?.value;return t?.kind===`object`?t.entries:null}function Ro(e){if(e.kind!==`object`)return!0;let t=Lo(e);return t===null||t.length>0||e.entries.some(e=>e.key!==`rows`)}function*zo(e,t){yield{node:e,bareAt:t};for(let t of Io(e))for(let e of t.elements)yield*zo(e,null);for(let n of Lo(e)??[])yield*zo(n.value,t===null?null:[...t,`rows`,n.key])}function Bo(e,t){for(let{node:n}of zo(e,null))if(Fo(n)===t)return!0;return!1}function Vo(e,t,n){let r=lo(so(e),t);if(r===void 0)return null;for(let{node:i,bareAt:a}of zo(r,t))if(Fo(i)===n)return a===null?{text:e,ref:i}:Vo(Mo(e,a,`{ h: [${uo(e,i)}] }`,go),t,n);return null}function Ho(e,t,n){let r=Vo(e,t,n);return r===null?null:ko(r.text,r.ref.span)}function Uo(e,t,n,r,i){let a=Vo(e,t,r);if(a===null)return null;let{text:o,ref:s}=a,c=n.id===void 0?JSON.stringify(n.seg):`{ seg: ${JSON.stringify(n.seg)}, id: ${JSON.stringify(n.id)} }`,{commaEnd:l,line:u}=Oo(o,s.span.end);if(Eo(o,s.span.start)&&u!==null){let e=o.slice(Co(o,s.span.start),s.span.start);return i===`after`?Ao(o,s.span,{commaEnd:l,line:u},c,e):So(o,s.span.start,s.span.start,`${c},${yo(o)}${e}`)}let d=uo(o,s),f=i===`before`?`${c}, ${d}`:`${d}, ${c}`;return So(o,s.span.start,s.span.end,f)}var Wo=class extends Error{file;issues;warnings;constructor(e,t,n=[]){super(Jo(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=Go(e,n,i);if(t===-1)return r===void 0?void 0:Ko(e,r);n=t,r=t}return r===void 0?void 0:Ko(e,r)}function Go(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 Ko(e,t){let n=1;for(let r=0;r<t&&r<e.length;r++)e.charCodeAt(r)===10&&n++;return n}function qo(e,t){try{return so(t),null}catch(n){if(!(n instanceof to))throw n;return`${e}:${Ko(t,n.offset)}: ${n.reason} — the settings menu cannot edit this file until it is fixed`}}function Jo(e,t){if(t.length===0)return`${e}: invalid config (no details)`;let n=[`Invalid config in ${e} (${t.length} issue${t.length===1?``:`s`}):`];for(let e of t){let t=[];e.line!==void 0&&t.push(`line ${e.line}${e.col===void 0?``:`:${e.col}`}`),e.path&&t.push(e.path);let r=t.length>0?`[${t.join(` • `)}] `:``;n.push(` ${r}${e.message}`)}return n.join(`
|
|
40
|
+
`)}const Yo=[`vertical`,`horizontal`],Xo={vertical:`row`,horizontal:`cell`};function Zo(e){return e.id??e.name}function Qo(e){return[...ts(e)].flatMap(e=>e.kind===`segment`?[Zo(e)]:[])}function $o(e,t){if(!t.has(e))return e;let n=2;for(;t.has(`${e}-${n}`);)n++;return`${e}-${n}`}function es(e,t){return e.opens===void 0?e:{...e,opens:{...e.opens,body:t(e.opens.body)}}}function*ts(e){yield e;for(let t of as(e))yield*ts(t)}const ns=(e,t)=>`${e}.children[${t}]`,rs=e=>`${e}.opens.body`;function*is(e,t){if(yield[e,t],e.kind===`container`)for(let[n,r]of e.children.entries())yield*is(r,ns(t,n));else e.opens!==void 0&&(yield*is(e.opens.body,rs(t)))}function as(e){return e.kind===`container`?e.children:e.opens===void 0?[]:[e.opens.body]}function os(e){return e===void 0||`text`in e?`text`:`regex`in e?`regex`:`json`}const ss=[`ttl`,`watch_file`,`depends_on`,`key`,`never`];function cs(e){return e.kind!==`literal`&&e.kind!==`input`&&e.kind!==`env`&&e.kind!==`state`}const ls=[`branch`,`sha`,`dirty`,`ahead`,`behind`,`stash`],us=[`file`,`shell`,`git`];function ds(e,t){let{domain:n}=e;return n===`bool`?typeof t==`boolean`:`min`in n?typeof t==`number`&&Number.isInteger(t)&&t>=n.min&&t<=n.max:typeof t==`string`&&n.includes(t)}function fs(e){let{domain:t}=e;return t===`bool`?`true or false`:`min`in t?`an integer from ${t.min} to ${t.max}`:`one of ${t.map(e=>JSON.stringify(e)).join(`, `)}`}const ps=[`left`,`center`,`right`],ms=[`right`,`left`,`middle`];function hs(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 ${xs(i)}`,line:W(e.source,[...t.split(`.`),r])}),null)}function gs(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 ${xs(i)}`,line:W(e.source,[...t.split(`.`),`default`])});return}return i}}function _s(e,t,n,r){let i=n[r];if(i!==void 0){if(typeof i!=`string`){e.issues.push({path:`${t}.${r}`,message:`${t}.${r} must be a string, got ${xs(i)}`,line:W(e.source,[...t.split(`.`),r])});return}return i}}function vs(e,t,n){let r=_s(e,t,n,`palette`);if(r!==void 0){if(!e.allowedPalettes.has(r)){e.issues.push({path:`${t}.palette`,message:`Unknown palette "${r}". Expected one of: ${[...e.allowedPalettes].sort().join(`, `)}`,line:W(e.source,[...t.split(`.`),`palette`])});return}return r}}function ys(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 bs(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function xs(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 Ss(e,t,n,r){return bs(r)?(Ts(e,n,r,t.noun,new Set(Object.keys(t.fields))),Cs(e,t.fields,n,r)):(e.issues.push({path:n,message:`${n} must be an object, got ${xs(r)}`,line:W(e.source,n.split(`.`))}),null)}function Cs(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 ws=new Set;function Ts(e,t,n,r,i,a=ws){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 Es(e,t,n){return e.issues.push({path:t,message:n,line:W(e.source,t.split(`.`))}),null}function Ds(e,t,n,r){if(!bs(r))return e.issues.push({path:n,message:`${t.noun} must be an object, got ${xs(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 Os(e,t,n,r){if(!bs(r))return e.issues.push({path:n,message:`${n} must be an object, got ${xs(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 ${xs(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 Ts(e,n,r,`${i} ${t.memberNoun} key`,o.keys,l),c}function ks(e,t,n){return{json:Bs(Rs(n),e,t),keys:new Set([e,...Object.keys(n)])}}function As(e){return(...t)=>e()(...t)}function js(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)=>_s(e,t,r,n)}}function Ms(){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 ${xs(i)}`,line:W(e.source,[n])});return}return i}}}}function Ns(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 Ps(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 Fs(){return{required:!1,json:{type:`string`},parse:(e,t,n,r)=>vs(e,t,r)}}function Is(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>hs(e,t,r,n)??void 0}}function Ls(e){return{required:!1,json:{enum:[...e]},parse:(t,n,r,i)=>ys(t,n,i,r,e)}}function Rs(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 zs(e){return Rs(e.fields)}function Bs(e,t,n){let r=e,i={[t]:{const:n},...r.properties},a=[t,...r.required??[]];return{...r,properties:i,required:a}}function Vs(e){let t=e.arms;return{anyOf:Object.values(t).map(e=>e.json)}}function Hs(e){let t=e.arms;return{anyOf:Object.entries(t).map(([e,t])=>({type:`object`,properties:{[e]:t.json},required:[e],additionalProperties:!1}))}}const Us=/^[A-Za-z_][A-Za-z0-9_]*$/;function Ws(e){return`#${e+1}`}const Gs={rows:{}};function Ks(e){return`rows`in e}function qs(e){return Object.fromEntries(e.map((e,t)=>[Ws(t),e]))}function Js(e){if(e.kind===`container`&&e.direction===`vertical`){let{kind:t,direction:n,children:r,...i}=e;return{...i,rows:qs(r)}}let{when:t,...n}=e;return{...t!==void 0&&{when:t},rows:qs([n])}}function Ys(e){let{rows:t,...n}=e;return{kind:`container`,direction:`vertical`,children:Object.values(t),...n}}function Xs(e){return Ks(e)?Ys(e):e}function*Zs(e,t){if(!Ks(e)){yield*is(e,t);return}yield[Ys(e),t];for(let[n,r]of Object.entries(e.rows))yield*is(r,`${t}.rows.${n}`)}function Qs(e,t){return Ks(e)?{...t,...e,rows:{...t.rows,...e.rows}}:Js(e)}function $s(e){if(!Ks(e))return!0;let{rows:t,...n}=e;return Object.values(n).some(e=>e!==void 0)||Object.keys(t).length>0}function ec(e,t){return{globals:{...t.globals,...e.globals??{}},variables:{...t.variables,...e.variables??{}},segments:nc(t.segments,e.segments??{}),root:Qs(e.root??Gs,t.root),actions:{...t.actions,...e.actions??{}},looks:{...t.looks,...e.looks??{}},presets:nc(t.presets,tc(t.presets,e.presets??{})),editGlobals:{...t.editGlobals,...e.editGlobals??{}},helpers:{...t.helpers,...e.helpers??{}}}}function tc(e,t){return Object.fromEntries(Object.entries(t).map(([t,n])=>[t,n.globals===void 0?n:{...n,globals:{...e[t]?.globals,...n.globals}}]))}function nc(e,t){return{...e,...Object.fromEntries(Object.entries(t).map(([t,n])=>[t,{...e[t],...n}]))}}const rc=`closed`,ic=`🍫`;function ac(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 oc(e,t,n,r){let i=ac(e,t.length,n);if(i!==void 0)throw Error(i);return t.length===1?t[0]:t[r]}function sc(e){return e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}function cc(e,t,n,r,i){return{kind:`segment`,name:e,opens:{ref:t,body:n,placement:r},...i!==void 0&&{when:i}}}function lc(e,...t){return`{{ and ${[e,...t].map(uc).join(` `)} }}`}function uc(e){return`(eq .${e.variable} "${sc(e.member)}")`}function dc(e,t,n){return`{{ action "${e}" "${sc(t)}" "${sc(n)}" }}`}function fc(e,t){return{kind:`state`,key:e,default:t}}function pc(e,t){return{set:e,cycle:[rc,t]}}const mc={required:!1,json:{enum:[...za]},parse:(e,t,n,r)=>{if(r[n]===`auto`){e.issues.push({path:`${t}.${n}`,message:`${t}.${n}: "auto" is not supported — the render daemon runs detached, so terminal detection would read the daemon's environment, not your terminal's. Pick an explicit depth: ${za.join(`, `)}`,line:W(e.source,[...t.split(`.`),n])});return}return ys(e,t,r,n,za)}},hc={required:!1,json:{type:`string`},parse:(e,t,n,r)=>{let i=_s(e,t,r,n);return Ta(i)?i:vs(e,t,r)}},gc=/^[^\r\n]*\S[^\r\n]*$/u,_c=RegExp(`^(?:❌|✕)[\\uFE0E\\uFE0F]?$`,`u`),vc={required:!1,json:{type:`string`,pattern:gc.source,not:{pattern:_c.source}},parse:(e,t,n,r)=>{let i=_s(e,t,r,n);if(i===void 0||gc.test(i)&&!_c.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])})}},yc={default_bg:K(),default_fg:K(),default_empty_value:K(),default_separator:K(),default_truncate_marker:K(),palette:hc,look:K(),preset:K(),style:Ls(Ma),progression:Ls(Wa),autoWrap:Ms(),padding:Ns(Xa),charset:Ls(Fa),updateNotice:Ms(),colorCompatibility:mc,menuGlyph:vc},bc={noun:`globals key`,fields:yc};function xc(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 Sc(e){return xc(`${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 Cc(e){return xc(`${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 wc={preset:Sc(`a preset`),menuGlyph:Cc(`a preset`)},Tc={noun:`preset globals key`,fields:{...yc,...wc}};function Ec(e){return Nc(e)&&!(e in wc)}const Dc={noun:`editGlobals key`,fields:{...yc,preset:Sc(`the editGlobals fragment`),menuGlyph:Cc(`the editGlobals fragment`)}};function Oc(e,t,n){return n===void 0?{}:Ss(e,bc,t,n)??{}}function kc(e,t,n){return Ss(e,Tc,t,n)??{}}function Ac(){return zs(Tc)}function jc(e,t,n){return Ss(e,Dc,t,n)??{}}const Mc=new Set(Object.keys(bc.fields));function Nc(e){return Mc.has(e)}function Pc(){return[...Mc]}const Fc={padding:1};function Ic(e){let t=new Map;for(let[n,r]of Object.entries(Fc)){let i=e[n];t.set(n,typeof i==`number`?i:r)}return t}function Lc(e,t,n,r){return n.cache===void 0?(us.includes(r)&&e.issues.push({path:`${t}.cache`,message:`${r} variables must declare a cache policy (one of: ${ss.join(`, `)})`,line:W(e.source,t.split(`.`))}),null):Hc(e,`${t}.cache`,n.cache)}function Rc(e,t,n){if(n.cache!==void 0)return Hc(e,`${t}.cache`,n.cache)??void 0}function zc(e){return{required:!0,json:Gc(),parse:(t,n,r,i)=>Lc(t,n,i,e)??void 0}}function Bc(){return{required:!1,json:Gc(),parse:(e,t,n,r)=>Rc(e,t,r)}}const Vc={noun:`cache`,arms:{ttl:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`&&qc(n)?{ttl:n}:Es(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}:Es(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}:Es(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}:Es(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}:Es(e,t,`cache.never must be the literal boolean true, got ${G(n)}`)}}};function Hc(e,t,n){return Ds(e,Vc,t,n)}const Uc={noun:`time-variable cache`,arms:{ttl:Vc.arms.ttl}};function Wc(){return{required:!1,json:Hs(Uc),parse:(e,t,n,r)=>r.cache===void 0?void 0:Ds(e,Uc,`${t}.cache`,r.cache)??void 0}}function Gc(){return Hs(Vc)}const Kc=/^(\d+(?:\.\d+)?)(ms|s|m|h)$/;function qc(e){return Kc.test(e)}function Jc(e,t,n){if(n===void 0)return{};if(!bs(n))return e.issues.push({path:t,message:`${t} must be an object, got ${xs(n)}`,line:W(e.source,t.split(`.`))}),{};let r={};for(let[i,a]of Object.entries(n)){let n=Os(e,gl,`${t}.${i}`,a);n!==null&&(r[i]=n)}return r}function Yc(){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 ${xs(i)}`,line:W(e.source,t.split(`.`))});return}return i}}}function Xc(){return{required:!0,json:{enum:[...ls]},parse:(e,t,n,r)=>{let i=r.field;if(typeof i!=`string`||!ls.includes(i)){e.issues.push({path:`${t}.field`,message:`git field must be one of: ${ls.join(`, `)}, got ${JSON.stringify(i)}`,line:W(e.source,[...t.split(`.`),`field`])});return}return i}}}function Zc(){return{required:!1,json:{type:[`string`,`number`,`boolean`]},parse:(e,t,n,r)=>{let i=r.type;return gs(e,t,r,i===`number`||i===`boolean`||i===`string`?i:`string`)}}}const Qc={noun:`parse`,arms:{text:{json:{const:!0},parse:(e,t,n)=>n===!0?{text:!0}:Es(e,t,`parse.text must be the literal boolean true, got ${G(n)}`)},regex:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`?$c(e,t,n):Es(e,t,`parse.regex must be a pattern string, got ${G(n)}`)},json:{json:{const:!0},parse:(e,t,n)=>n===!0?{json:!0}:Es(e,t,`parse.json must be the literal boolean true, got ${G(n)}`)}}};function $c(e,t,n){let r;try{new RegExp(n),r=RegExp(`${n}|`).exec(``).length-1}catch(n){return Es(e,t,`parse.regex is not a valid regular expression: ${n.message}`)}return r>=1?{regex:n}:Es(e,t,`parse.regex must contain a capture group — its group 1 is the value; got ${JSON.stringify(n)}`)}function el(){return{required:!1,json:Hs(Qc),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:Ds(e,Qc,`${t}.parse`,r.parse)??void 0)}}function tl(){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)=>bs(r.parse)&&`json`in r.parse?nl(e,t,r.default):_s(e,t,r,`default`)}}function nl(e,t,n){if(n!==void 0)return rl(n)?n:Es(e,`${t}.default`,`${t}.default must be a JSON value (a json-parsed source's document), got ${G(n)}`)??void 0}function rl(e){return e!==null&&il(e)}function il(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(il);let t=Object.getPrototypeOf(e);return(t===Object.prototype||t===null)&&Object.values(e).every(il)}default:return!1}}const al={value:Yc(),default:K()},ol={path:Is(),type:Ls([`string`,`number`,`boolean`]),default:Zc()},sl={name:Is(),default:K()},cl={path:Is(),readMode:Ls([`whole`,`first-line`]),parse:el(),cache:zc(`file`),default:tl()},ll={command:Is(),parse:el(),cache:zc(`shell`),default:tl()},ul={template:Is(),cache:Bc(),default:K()},dl={layout:Is(),cache:Wc(),default:K()},fl={field:Xc(),cache:zc(`git`),default:K()},pl={key:Is(),default:K()},ml=`kind`;function hl(e,t){return{...ks(ml,e,t),parse:(n,r,i)=>{let a=Cs(n,t,r,i);return a===null?null:{kind:e,...a}}}}const gl={tag:ml,noun:`source kind`,memberNoun:`variable`,arms:{literal:hl(`literal`,al),input:hl(`input`,ol),env:hl(`env`,sl),file:hl(`file`,cl),shell:hl(`shell`,ll),template:hl(`template`,ul),time:hl(`time`,dl),git:hl(`git`,fl),state:hl(`state`,pl)}};function _l(){return Vs(gl)}function vl(){return{type:`object`,additionalProperties:_l()}}function yl(e){return e.replace(/[^A-Za-z0-9]+/g,`_`)}const bl=`groups.`,xl=`menus.`,Sl=`edit.`,Cl=`candybar.`,wl=[bl,xl,Sl,Cl];function Tl(e){return wl.some(t=>e.startsWith(t))}function El(e){let t=yl(e);return wl.find(e=>t.startsWith(yl(e)))}function Dl(e,t,n,r){for(let i of[`variables`,`actions`,`segments`])for(let a of Object.keys(t[i]??{}))a.startsWith(n)&&e.issues.push({path:`${i}.${a}`,message:`"${a}" is in the reserved "${n}" namespace (synthesized by ${r}) — rename it`,line:W(e.source,[`root`])})}const Ol=new Map([[`gitTaculous`,`gitaculous`],[`git`,`gitaculous`],[`settings.menu`,`candybar.menu`]]);function kl(e){let t=Ol.get(e);return t===void 0?``:` (the built-in segment "${e}" was renamed to "${t}" — update this reference)`}const Al=/^[A-Za-z_][A-Za-z0-9_]*$/,jl={pattern:Al.source},Ml={anyOf:[{type:`boolean`},{type:`string`},{type:`integer`}]},Nl={type:`object`,additionalProperties:!1,required:[`label`,`domain`,`default`],properties:{label:{type:`string`,minLength:1},domain:{anyOf:[{const:`bool`},{type:`array`,items:{type:`string`},minItems:1,uniqueItems:!0},{type:`object`,additionalProperties:!1,required:[`min`,`max`],properties:{min:{type:`integer`},max:{type:`integer`}}}]},default:Ml}},Pl=[`label`,`domain`,`default`];function Fl(e,t,n){e.issues.push({path:t,message:n,line:W(e.source,t.split(`.`))})}function Il(e,t,n){if(n===`bool`)return`bool`;if(Array.isArray(n)){let r=n.filter(e=>typeof e==`string`);return n.length===0||r.length!==n.length?Fl(e,t,`a list domain must be a non-empty list of words, got ${JSON.stringify(n)}`):new Set(r).size===r.length?r:Fl(e,t,`a list domain names each word once, got ${JSON.stringify(n)}`)}if(bs(n)){let{min:r,max:i}=n;return Object.keys(n).filter(e=>e!==`min`&&e!==`max`).length===0&&Number.isInteger(r)&&Number.isInteger(i)&&r<=i?{min:r,max:i}:Fl(e,t,`a range domain is { min, max } with integers min ≤ max, got ${JSON.stringify(n)}`)}return Fl(e,t,`domain must be "bool", a list of words, or { min, max }, got ${G(n)}`)}function Ll(e,t,n){if(!bs(n))return Fl(e,t,`${t} must be { label, domain, default }, got ${xs(n)}`);for(let r of Object.keys(n))Pl.includes(r)||Fl(e,`${t}.${r}`,`Unknown setting key "${r}". Expected one of: ${Pl.join(`, `)}`);let{label:r}=n;(typeof r!=`string`||r.length===0)&&Fl(e,`${t}.label`,`a setting needs a non-empty "label" — the name its control shows — got ${G(r)}`);let i=Il(e,`${t}.domain`,n.domain);if(typeof r!=`string`||r.length===0||i===void 0)return;let a={label:r,domain:i,default:n.default};return!Rl(n.default)||!ds(a,n.default)?Fl(e,`${t}.default`,`default must be ${fs(a)}, got ${G(n.default)}`):a}function Rl(e){return typeof e==`boolean`||typeof e==`string`||typeof e==`number`}function zl(){return{required:!1,json:{type:`object`,propertyNames:jl,additionalProperties:Nl},parse:(e,t,n,r)=>{let i=r[n];if(i===void 0)return;let a=`${t}.${n}`;if(!bs(i))return Fl(e,a,`${a} must be an object of name → { label, domain, default }, got ${xs(i)}`);let o=Object.create(null);for(let[t,n]of Object.entries(i)){if(!Al.test(t)){Fl(e,`${a}.${t}`,`setting name "${t}" is read as .settings.${t} in a template, so it must be an identifier (letters, digits, _; not starting with a digit)`);continue}let r=Ll(e,`${a}.${t}`,n);r!==void 0&&(o[t]=r)}return o}}}function Bl(){return{required:!1,json:{type:`string`,minLength:1,pattern:`^[^:/]+$`},parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0)return typeof i==`string`&&i.length>0&&!/[:/]/.test(i)?i:Fl(e,`${t}.${n}`,`a placement "id" must be a non-empty string without "/" or ":", got ${G(i)}`)}}}function Vl(){return{required:!1,json:{type:`object`,propertyNames:jl,additionalProperties:Ml},parse:(e,t,n,r)=>{let i=r[n];if(i===void 0)return;let a=`${t}.${n}`;if(!bs(i))return Fl(e,a,`a placement's "settings" must be an object of setting name → value, got ${xs(i)}`);let o=Object.create(null);for(let[t,n]of Object.entries(i))Rl(n)?o[t]=n:Fl(e,`${a}.${t}`,`setting "${t}" must be a boolean, a word, or a number, got ${xs(n)}`);return o}}}function Hl(e){return new Set(Object.keys(e.segments).filter(e=>!Tl(e)))}function Ul(e,t,n){if(t===void 0)return{};if(!bs(t))return e.issues.push({path:`segments`,message:`segments must be an object, got ${xs(t)}`,line:W(e.source,[`segments`])}),{};let r={};for(let[i,a]of Object.entries(t)){let t=Ss(e,n.has(i)?Yl:Jl,`segments.${i}`,a);t!==null&&(r[i]=t)}return r}function Wl(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>r[n]===void 0?Es(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${kl(t.slice(9))}`)??void 0:hs(e,t,r,n)??void 0}}function Gl(){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 Kl(){return{required:!1,json:vl(),parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0)return Jc(e,`${t}.${n}`,i)}}}const ql={template:Wl(),description:K(),width:Gl(),justify:Ls(ps),truncate:Ls(ms),bg:K(),fg:K(),when:K(),palette:Fs(),vars:Kl(),settings:zl()},Jl={noun:`segment key`,fields:ql},Yl={noun:`segment key`,fields:{...ql,template:K()}},Xl=`#/definitions/LayoutNode`,Zl={kind:`container`,direction:`vertical`,children:[]};function Ql(e){return{required:!0,json:{const:e},parse:()=>e}}function $l(){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 eu(){return{required:!0,json:{enum:[...Yo]},parse:(e,t,n,r)=>{let i=r[n];return typeof i==`string`&&Yo.includes(i)?i:(e.issues.push({path:`${t}.${n}`,message:`a container "direction" must be one of: ${Yo.join(`, `)} (got ${JSON.stringify(i)})`,line:W(e.source,[`root`])}),`vertical`)}}}function tu(e){return{required:!0,json:{type:`array`,items:{$ref:Xl}},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 ${xs(a)}`,line:W(t.source,[`root`])}),[])}}}const nu={noun:`layout-node key`,fields:{kind:Ql(`segment`),name:$l(),when:K(),id:Bl(),settings:Vl()}},ru=()=>Ls(Pi),iu={noun:`layout-node key`,fields:{kind:Ql(`container`),direction:eu(),children:tu(As(()=>lu)),when:K(),distribution:ru()}};function au(){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 ou={noun:`layout-node key`,fields:{seg:au(),when:K(),id:Bl(),settings:Vl()}},su={noun:`layout-node key`,fields:{h:tu(As(()=>lu)),when:K(),distribution:ru()}},cu={noun:`layout-node key`,fields:{v:tu(As(()=>lu)),when:K(),distribution:ru()}},lu=(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`])}),Zl):{kind:`segment`,name:n};if(!bs(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 ${xs(n)}`,line:W(e.source,[`root`])}),Zl;if(n.kind===`container`)return Ss(e,iu,t,n)??Zl;if(n.kind===`segment`)return Ss(e,nu,t,n)??Zl;if(n.kind===`cells`)return e.issues.push({path:t,message:`kind: "cells" is no longer supported — use the h-arm spelling instead:
|
|
41
41
|
Old: { kind: "cells", segments: ["seg1", "seg2"] }
|
|
42
|
-
New: { h: ["seg1", "seg2"] }`,line:W(e.source,[`root`])}),
|
|
42
|
+
New: { h: ["seg1", "seg2"] }`,line:W(e.source,[`root`])}),Zl;if(n.kind===`group`){let r=Ss(e,gu,t,n);return r===null?Zl:(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}),vu(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`])}),Zl}if(a){let r=Ss(e,ou,t,n);return r===null?Zl:{kind:`segment`,name:r.seg,...r.when!==void 0&&{when:r.when},...r.id!==void 0&&{id:r.id},...r.settings!==void 0&&{settings:r.settings}}}if(r){let r=Ss(e,su,t,n);return r===null?Zl:{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=Ss(e,cu,t,n);return r===null?Zl:{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`])}),Zl};function uu(){return{required:!0,json:{type:`object`,propertyNames:{pattern:Us.source},additionalProperties:{$ref:Xl}},parse:(e,t,n,r)=>{let i=r[n];if(!bs(i))return e.issues.push({path:`${t}.${n}`,message:`"rows" must be an object of row name → layout node, got ${xs(i)}`,line:W(e.source,[...t.split(`.`),n])}),{};let a={};for(let[r,o]of Object.entries(i)){if(!Us.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]=lu(e,`${t}.${n}.${r}`,o)}return a}}}const du={noun:`root key`,fields:{rows:uu(),when:K(),distribution:ru()}};function fu(e,t,n){return bs(n)&&`rows`in n?Ss(e,du,t,n)??{rows:{}}:lu(e,t,n)}function pu(){return{required:!0,json:{type:`string`,pattern:Us.source},parse:(e,t,n,r)=>{let i=r[n];if(typeof i!=`string`||!Us.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 "${rc}", got ${G(i)}`,line:W(e.source,[`root`])});return}return i}}}function mu(){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 hu(){return{required:!0,json:{type:`string`,pattern:`^[^\\n\\r]*$`},parse:(e,t,n,r)=>{let i=hs(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 gu={noun:`layout-node key`,fields:{kind:Ql(`group`),name:pu(),label:hu(),open:Ms(),direction:Ls(Yo),key:mu(),bg:K(),fg:K(),when:K(),distribution:ru(),children:tu(As(()=>lu))}};function _u(e){return e.key??`groups.`+e.name}function vu(e){let t=bl+e.name;return cc(t,{variable:t,key:_u(e),member:e.name},{kind:`container`,direction:e.direction??`vertical`,children:e.children,...e.distribution!==void 0&&{distribution:e.distribution}},`drop`,e.when)}function yu(e,t,n){e.issues.push({path:t,message:n,line:W(e.source,[`root`])})}function bu(e,t){Dl(e,t,bl,`group nodes`);let n=e.groups;if(n.length===0)return;let r=new Set;for(let t of n)r.has(t.name)&&yu(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}.`)&&_u(t)===_u(r)&&yu(e,t.path,`group "${t.name}" shares key "${_u(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=_u(t);if(i.has(n)||i.set(n,rc),t.open===!0){let r=i.get(n);r!==`closed`&&yu(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=bl+e.name,r=_u(e),c=n.filter(t=>t!==e&&e.path.startsWith(t.path+`.`)).length,l=` `.repeat(c);a[t]=fc(r,i.get(r)),o[t]=pc(r,e.name),s[t]={template:dc(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 xu=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?Ou(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}},Su=class extends xu{name=`ParseError`;kind=`ParseError`;expected;found;constructor(e,t,n={}){super(e,t,n),this.expected=n.expected,this.found=n.found}},Cu=class extends xu{name=`EvalError`;kind=`EvalError`},wu=class extends Cu{name=`FuncNotFoundError`;kind=`FuncNotFoundError`;funcName;suggestions;constructor(e,t,n={}){let r=ku(e,n.available??[]),i=r.length===0?``:` (did you mean: ${r.join(`, `)}?)`;super(`function ${JSON.stringify(e)} is not registered${i}`,t,n),this.funcName=e,this.suggestions=r}},Tu=class extends Cu{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}},Eu=class extends Cu{name=`MissingFieldError`;kind=`MissingFieldError`;path;constructor(e,t,n={}){super(`field "${e.join(`.`)}" not found on receiver`,t,n),this.path=e}},Du=class extends Cu{name=`FailError`;kind=`FailError`;constructor(e,t={line:0,column:0,offset:0},n={}){super(e,t,n)}};function Ou(e,t){let n=e.split(`
|
|
43
43
|
`),r=t.line-1,i=[];if(r-1>=0&&r-1<n.length&&i.push({num:r,text:n[r-1]??``}),r>=0&&r<n.length&&i.push({num:r+1,text:n[r]??``}),r+1<n.length&&i.push({num:r+2,text:n[r+1]??``}),i.length===0)return``;let a=String(i[i.length-1]?.num??1).length,o=[];for(let e of i)if(o.push(` ${String(e.num).padStart(a,` `)} | ${e.text}`),e.num===t.line){let e=` ${` `.repeat(a)} | `,n=` `.repeat(Math.max(0,t.column-1));o.push(`${e}${n}^`)}return o.join(`
|
|
44
|
-
`)}function
|
|
44
|
+
`)}function ku(e,t){if(t.length===0)return[];let n=t.map(t=>({name:t,dist:Au(e,t)})).sort((e,t)=>e.dist-t.dist),r=Math.max(2,Math.floor(e.length/2));return n.filter(e=>e.dist<=r).slice(0,3).map(e=>e.name)}function Au(e,t){if(e===t)return 0;let n=e.length,r=t.length;if(n===0)return r;if(r===0)return n;let i=Array(r+1),a=Array(r+1);for(let e=0;e<=r;e++)i[e]=e;for(let o=1;o<=n;o++){a[0]=o;for(let n=1;n<=r;n++){let r=e[o-1]===t[n-1]?0:1;a[n]=Math.min((a[n-1]??0)+1,(i[n]??0)+1,(i[n-1]??0)+r)}for(let e=0;e<=r;e++)i[e]=a[e]??0}return i[r]??0}function ju(e){throw Error(`unhandled node kind: ${JSON.stringify(e)}`)}const Mu=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`]]),Nu={left:`{{`,right:`}}`};var Pu=class{src;leftDelim;rightDelim;offset=0;line=1;column=1;mode=`text`;pending;constructor(e,t=Nu){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 Su(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&&Fu(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);Fu(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);Fu(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(;Fu(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`;Fu(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&&(Lu(e)||Iu(e)&&Lu(this.src[this.offset+1]??``)||e===`.`&&Lu(this.src[this.offset+1]??``)))return this.readNumber(t);if(e===`.`)return this.readDotOrField(t);if(e!==void 0&&Hu(e))return this.readIdentifier(t);throw this.err(`unexpected character ${JSON.stringify(e)}`,t,{found:e??`end of input`})}readQuotedString(e){let t=this.offset;for(this.advanceBy(1);this.offset<this.src.length;){let n=this.src[this.offset];if(n===`\\`){this.advanceBy(1),this.offset<this.src.length&&this.advanceBy(1);continue}if(n===`
|
|
45
45
|
`)throw this.err(`newline in interpreted string`,e,{found:`\\n`});if(n===`"`)return this.advanceBy(1),this.makeToken(`String`,this.src.slice(t,this.offset),e);this.advanceBy(1)}throw this.err(`unterminated string literal`,e,{expected:`"`,found:`end of input`})}readRawString(e){let t=this.offset;for(this.advanceBy(1);this.offset<this.src.length;){if(this.src[this.offset]==="`")return this.advanceBy(1),this.makeToken(`String`,this.src.slice(t,this.offset),e);this.advanceBy(1)}throw this.err(`unterminated raw string literal`,e,{expected:"`",found:`end of input`})}readChar(e){let t=this.offset;for(this.advanceBy(1);this.offset<this.src.length;){let n=this.src[this.offset];if(n===`\\`){this.advanceBy(1),this.offset<this.src.length&&this.advanceBy(1);continue}if(n===`
|
|
46
|
-
`)throw this.err(`newline in rune literal`,e,{found:`\\n`});if(n===`'`)return this.advanceBy(1),this.makeToken(`Char`,this.src.slice(t,this.offset),e);this.advanceBy(1)}throw this.err(`unterminated rune literal`,e,{expected:`'`,found:`end of input`})}readNumber(e){let t=this.offset;if(
|
|
46
|
+
`)throw this.err(`newline in rune literal`,e,{found:`\\n`});if(n===`'`)return this.advanceBy(1),this.makeToken(`Char`,this.src.slice(t,this.offset),e);this.advanceBy(1)}throw this.err(`unterminated rune literal`,e,{expected:`'`,found:`end of input`})}readNumber(e){let t=this.offset;if(Iu(this.src[this.offset]??``)&&this.advanceBy(1),this.src[this.offset]===`0`&&this.offset+1<this.src.length){let n=this.src[this.offset+1];if(n===`x`||n===`X`){for(this.advanceBy(2);Ru(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);if(this.src[this.offset]===`.`||this.src[this.offset]===`p`||this.src[this.offset]===`P`)for(;this.isHexFloatTail(this.src[this.offset]??``);)this.advanceBy(1);return this.finishNumber(t,e)}if(n===`o`||n===`O`){for(this.advanceBy(2);zu(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);Bu(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);return this.finishNumber(t,e)}}for(;Lu(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);if(this.src[this.offset]===`.`)for(this.advanceBy(1);Lu(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),Iu(this.src[this.offset]??``)&&this.advanceBy(1);Lu(this.src[this.offset]??``);)this.advanceBy(1);return this.src[this.offset]===`i`&&this.advanceBy(1),this.finishNumber(t,e)}isHexFloatTail(e){return Ru(e)||e===`.`||e===`p`||e===`P`||e===`+`||e===`-`||e===`_`}finishNumber(e,t){if(this.offset===e)throw this.err(`expected number`,t,{expected:`digit`});return this.makeToken(`Number`,this.src.slice(e,this.offset),t)}readVariable(e){let t=this.offset;for(this.advanceBy(1);Uu(this.src[this.offset]??``);)this.advanceBy(1);for(;this.src[this.offset]===`.`&&Hu(this.src[this.offset+1]??``);)for(this.advanceBy(1);Uu(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),!Hu(this.src[this.offset]??``))return this.makeToken(`Dot`,`.`,e);for(;Uu(this.src[this.offset]??``);)this.advanceBy(1);for(;this.src[this.offset]===`.`&&Hu(this.src[this.offset+1]??``);)for(this.advanceBy(1);Uu(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(;Uu(this.src[this.offset]??``);)this.advanceBy(1);let n=this.src.slice(t,this.offset),r=Mu.get(n);return r?this.makeToken(r,n,e):this.makeToken(`Identifier`,n,e)}skipActionSpaces(){for(;this.offset<this.src.length;){let e=this.src[this.offset];if(e===` `||e===` `||e===`\r`||e===`
|
|
47
47
|
`)this.advanceBy(1);else return}}advanceBy(e){for(let t=0;t<e;t++){let e=this.src[this.offset];this.offset+=1,e===`
|
|
48
|
-
`?(this.line+=1,this.column=1):this.column+=1}}advanceTo(e){for(;this.offset<e;)this.advanceBy(1)}makeToken(e,t,n,r={}){return Object.freeze({type:e,value:t,pos:n,...r.trimLeft===void 0?{}:{trimLeft:r.trimLeft},...r.trimRight===void 0?{}:{trimRight:r.trimRight}})}};function
|
|
49
|
-
`}function
|
|
50
|
-
`;break;case`t`:r+=` `;break;case`r`:r+=`\r`;break;case`\\`:r+=`\\`;break;case`"`:r+=`"`;break;case`'`:r+=`'`;break;case`a`:r+=`\x07`;break;case`b`:r+=`\b`;break;case`f`:r+=`\f`;break;case`v`:r+=`\v`;break;case`0`:case`1`:case`2`:case`3`:case`4`:case`5`:case`6`:case`7`:{let t=o+(e[i+1]??``)+(e[i+2]??``);i+=2,r+=String.fromCodePoint(Number.parseInt(t,8));break}case`x`:{let t=(e[i+1]??``)+(e[i+2]??``);i+=2,r+=String.fromCodePoint(Number.parseInt(t,16));break}case`u`:{let t=e.slice(i+1,i+5);i+=4,r+=String.fromCodePoint(Number.parseInt(t,16));break}case`U`:{let t=e.slice(i+1,i+9);i+=8,r+=String.fromCodePoint(Number.parseInt(t,16));break}default:throw new au(`bad escape sequence \\${o}`,t,{expected:`valid escape sequence`,found:`\\${o}`,source:n})}}return r}function Wu(e,t,n){let r=Uu(`"${e.slice(1,-1).replace(/"/g,`\\"`)}"`,t,n);if(r.length===0)throw new au(`empty rune literal`,t,{source:n});return r.codePointAt(0)??0}function Gu(e,t){if(t(e)!==!1)for(let n of Ku(e))Gu(n,t)}function Ku(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 mu(e)}}const qu=Symbol(`go-template-js.MISSING`);function Ju(e,t){if(e==null)return qu;if(e instanceof Map)return e.has(t)?e.get(t):qu;if(Array.isArray(e))return qu;if(typeof e==`object`){let n=e;return t in n?n[t]:qu}return qu}function Yu(e,t){let n=e;for(let e of t){if(n===qu)return qu;n=Ju(n,e)}return n}function Xu(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)=>Xu(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)||!Xu(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=>Xu(e[n],t[n])):!1}return!1}const Zu=new WeakSet;function Qu(e){return Zu.add(e),e}function $u(e){return Zu.has(e)}function ed(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 td(e,t){return{eq:{fn:(e,...t)=>t.some(t=>id(e,t)),argTypes:[`comparable`]},ne:{fn:(e,t)=>!id(e,t),argTypes:[`comparable`,`comparable`]},lt:{fn:(e,t)=>ad(e,t)<0,argTypes:[`ordered`,`ordered`]},le:{fn:(e,t)=>ad(e,t)<=0,argTypes:[`ordered`,`ordered`]},gt:{fn:(e,t)=>ad(e,t)>0,argTypes:[`ordered`,`ordered`]},ge:{fn:(e,t)=>ad(e,t)>=0,argTypes:[`ordered`,`ordered`]},len:{fn:e=>od(e),argTypes:[`sized`]},index:{fn:(e,...t)=>{let n=e;for(let e of t)n=sd(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)=>ud(t,e),argTypes:[`stringifiable`],returnType:`string`},println:{fn:(...t)=>`${ud(t,e)}\n`,argTypes:[`stringifiable`],returnType:`string`},printf:{fn:(n,...r)=>yd(n,r,e,t),argTypes:[`string`,`stringifiable`],returnType:`string`},toString:{fn:n=>Sd(n,e,t),argTypes:[`value`],returnType:`string`},toStrings:{fn:n=>n.map(n=>Sd(n,e,t)),argTypes:[`list`]},call:{fn:(e,...t)=>e(...t),argTypes:[`callable`,`value`]},html:{fn:(...t)=>pd(ud(t,e)),argTypes:[`stringifiable`],returnType:`string`},js:{fn:(...t)=>gd(ud(t,e)),argTypes:[`stringifiable`],returnType:`string`},urlquery:{fn:(...t)=>vd(ud(t,e)),argTypes:[`stringifiable`],returnType:`string`},not:{fn:e=>!ed(e),argTypes:[`truthy`]}}}function nd(){return{and:Qu({argTypes:[`truthy`],fn:(...e)=>{let t=!0;for(let n of e)if(t=n(),!ed(t))return t;return t}}),or:Qu({argTypes:[`truthy`],fn:(...e)=>{let t=!1;for(let n of e)if(t=n(),ed(t))return t;return t}})}}function rd(e,t){return{...td(e,t),...nd()}}function id(e,t){return typeof e==`number`&&typeof t==`bigint`?BigInt(e)===t:typeof e==`bigint`&&typeof t==`number`?e===BigInt(t):Xu(e,t)}function ad(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 od(e){return typeof e==`string`||Array.isArray(e)?e.length:e instanceof Map||e instanceof Set?e.size:Object.keys(e).length}function sd(e,t){if(Array.isArray(e)){let n=Number(t);if(!Number.isInteger(n))throw Error(`index: array index must be integer, got ${cd(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 ${cd(t)}`);return e[t]}throw Error(`index: cannot index ${cd(e)}`)}function cd(e){return e===null?`null`:e===void 0?`undefined`:Array.isArray(e)?`array`:e instanceof Map?`Map`:typeof e}function ld(e){return e==null?`<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 ud(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+=dd(a,t),r=o}return n}function dd(e,t){return e==null?`<nil>`:typeof e==`string`?e:t(e)}const fd={"\0":`�`,'"':`"`,"'":`'`,"&":`&`,"<":`<`,">":`>`};function pd(e){return e.replace(/[\0"'&<>]/g,e=>fd[e]??e)}const md={"\\":`\\\\`,"'":`\\'`,'"':`\\"`,"<":`\\u003C`,">":`\\u003E`,"&":`\\u0026`,"=":`\\u003D`},hd=/^[\p{L}\p{M}\p{N}\p{P}\p{S}]$/u;function gd(e){let t=``;for(let n of e){let e=md[n];if(e!==void 0){t+=e;continue}let r=n.codePointAt(0);if(r<32||r>=128&&!hd.test(n)){t+=`\\u${r.toString(16).toUpperCase().padStart(4,`0`)}`;continue}t+=n}return t}const _d=new TextEncoder;function vd(e){let t=``,n=_d.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 yd(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+=bd(l??``,u,d,n,r),o=c+1}return i}function bd(e,t,n,r,i){switch(e){case`s`:return typeof n==`string`?xd(t,n):xd(t,dd(n,r));case`d`:return typeof n!=`number`&&typeof n!=`bigint`?`%!${e}(${ld(n)}=${dd(n,r)})`:xd(t,String(typeof n==`bigint`?n:Math.trunc(n)));case`v`:return xd(t,Sd(n,r,i));case`q`:return xd(t,JSON.stringify(dd(n,r)));case`f`:{if(typeof n!=`number`&&typeof n!=`bigint`)return`%!${e}(${ld(n)}=${dd(n,r)})`;let i=t.includes(`.`)?Number(t.split(`.`)[1]):6;return xd(t,Number(n).toFixed(i))}case`t`:return xd(t,ed(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 xd(t,r)}return typeof n!=`number`&&typeof n!=`bigint`?`%!${e}(${ld(n)}=${dd(n,r)})`:typeof n==`bigint`?xd(t,n.toString(16)):xd(t,Math.trunc(n).toString(16));default:return`%!${e}(${ld(n)}=${dd(n,r)})`}}function xd(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 Sd(e,t,n){return e==null?`<nil>`:typeof e==`string`?e:n(e)?t(e):Array.isArray(e)?`[${e.map(e=>Sd(e,t,n)).join(` `)}]`:e instanceof Map?Cd([...e.entries()],t,n):wd(e)?Cd(Object.entries(e),t,n):String(e)}function Cd(e,t,n){let r=e=>Sd(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 wd(e){if(typeof e!=`object`||!e||Array.isArray(e)||e instanceof Map||e instanceof Set)return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype}function Td(e){return{dot:e,root:e,parent:void 0,vars:new Map}}function Ed(e,t){return{dot:t,root:e.root,parent:e,vars:new Map}}function Dd(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 Od(e,t,n){e.vars.set(t,n)}const kd=new Set([`default`,`zero`,`error`]);function Ad(e){if(e===void 0)return`default`;if(kd.has(e))return e;throw Error(`EngineConfig.missingKey: expected "default" | "zero" | "error", got ${jd(e)}`)}function jd(e){return typeof e==`string`?JSON.stringify(e):e===null?`null`:e===void 0?`undefined`:typeof e==`bigint`?`${e}n`:typeof e==`number`||typeof e==`boolean`?String(e):typeof e==`symbol`?e.toString():typeof e==`function`?`[Function]`:`[${typeof e}]`}function Md(e){if(e!==void 0){if(typeof e!=`object`||!e)throw Error(`EngineConfig.delims: expected { left, right } object, got ${jd(e)}`);if(typeof e.left!=`string`||e.left.length===0)throw Error(`EngineConfig.delims.left: expected non-empty string, got ${jd(e.left)}`);if(typeof e.right!=`string`||e.right.length===0)throw Error(`EngineConfig.delims.right: expected non-empty string, got ${jd(e.right)}`);return{left:e.left,right:e.right}}}const Nd=Object.freeze({kind:`break`}),Pd=Object.freeze({kind:`continue`}),Fd={kind:`none`};let Id;(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{Id=(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 Ld(e){let t=new Set,n=e=>{Gu(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 Rd={kind:`dynamic`};function zd(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=af(e);return typeof t==`number`||typeof t==`bigint`?{kind:`literal`,value:t}:Rd}case`Pipe`:{if(e.decls.length!==0||e.cmds.length!==1)return Rd;let t=e.cmds[0];if(t===void 0)return Rd;let n=t.args[0];return n===void 0||n.type!==`Identifier`?Rd:{kind:`call`,name:n.ident,args:t.args.slice(1).map(zd)}}default:return Rd}}function Bd(e){let t=[],n=e=>{Gu(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(zd);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 Vd=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??Jd,this.isT=e.isT??Hd,this.missingKey=Ad(e.missingKey),this.delims=Md(e.delims),this.funcs={...rd(this.toString,this.isT),...e.funcs??{}}}parse(e,t){let n=ju(e,this.delims,t);return Id(n.source,e=>this.evalParsed(n,e),n.defines,Ld(n),Bd(n))}compile(e){let t=this.parse(e);return e=>t.evaluate(e)}evaluate(e,t){return e.evaluate(t)}evalParsed(e,t){let n=[],r=Td(t),i={out:n,defines:e.defines,source:e.source};return this.evalList(e.root,r,i),n}evalList(e,t,n){for(let r of e.nodes)this.evalNode(r,t,n)}evalNode(e,t,n){switch(e.type){case`Text`:n.out.push(this.fromString(e.text));return;case`Comment`:return;case`Action`:{let r=this.evalAction(e,t,n);e.pipe.decls.length===0&&this.emitFromValue(r,n);return}case`List`:this.evalList(e,t,n);return;case`If`:this.evalIf(e,t,n);return;case`Range`:this.evalRange(e,t,n);return;case`With`:this.evalWith(e,t,n);return;case`Break`:throw Nd;case`Continue`:throw Pd;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 ou(`unexpected ${e.type} at statement position`,e.pos,{source:n.source});default:mu(e)}}evalIf(e,t,n){ed(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(ed(r)){let i=Ed(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=tf(r);try{if(a.length===0){e.elseList&&this.evalList(e.elseList,t,n);return}for(let[r,o]of a){let a=Ed(t,o);if(i.length===1)Od(a,i[0]?.idents[0]??`$`,o);else if(i.length>=2){let e=i[0]?.idents[0]??`$`,t=i[1]?.idents[0]??`$`;Od(a,e,r),Od(a,t,o)}try{this.evalList(e.list,a,n)}catch(e){if(e===Pd)continue;throw e}}}catch(e){if(e===Nd)return;throw e}}evalTemplateInvoke(e,t,n){let r=ku(n.defines,e.name);if(!r)throw new ou(`template ${JSON.stringify(e.name)} is not defined`,e.pos,{source:n.source});let i=Ed(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=Ed(t,e.pipe?this.evalPipe(e.pipe,t,n):t.dot),i=ku(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 ou(`empty pipeline`,e.pos,{source:n.source});let r=this.evalCommand(e.cmds[0],t,n,Fd);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)Od(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 ou(`empty command`,e.pos,{source:n.source});let i=e.args[0];if(i.type!==`Identifier`){if(e.args.length>1)throw new ou(`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 su(i.ident,i.pos,{source:n.source,available:Object.keys(this.funcs)});let o=e.args.slice(1),s=$u(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)}Wd(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 cu?new cu(t.funcName,t.argIndex,t.expected,t.receivedSummary,e.pos,{source:n.source}):t instanceof uu?new uu(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 af(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 su(e.ident,e.pos,{source:n.source,available:Object.keys(this.funcs)});return Wd(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 ou(`cannot evaluate ${e.type} as a value`,e.pos,{source:n.source})}}resolveFieldChain(e,t,n,r){let i=Yu(e,t);if(i!==qu)return i;if(this.missingKey===`error`)throw new lu(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=Dd(t,i);if(!a.found)throw new ou(`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(Sd(e,this.toString,this.isT)))}};const Hd=e=>typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Map);function Ud(e){return new Vd(e)}function Wd(e,t,n,r,i,a=Jd,o,s=qd,c=Hd){let l=Gd(t,o),u=-1,d=-1;for(let t=0;t<n.length;t++){let o=l(t),f=n[t];if(!Kd(o,f,a,c))throw new cu(e,t+1,$d(o),ef(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(!Xd(n[u],f))throw new cu(e,t+1,`${$d(`ordered`)} of the same kind as ${ef(n[u])}`,ef(f),r,{source:i})}if(o===`comparable`){if(d===-1)d=t;else if(!Zd(n[d],f))throw new cu(e,t+1,`${$d(`comparable`)} of the same kind as ${ef(n[d])}`,ef(f),r,{source:i})}}}function Gd(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 Kd(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 wd(t);case`sized`:return typeof t==`string`||Array.isArray(t)||t instanceof Map||t instanceof Set||wd(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||wd(t);case`callable`:return typeof t==`function`;case`collection`:return typeof t==`string`||Array.isArray(t)||t instanceof Map||wd(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 Yd(t);default:throw Error(`invalid ArgType: ${String(e)}`)}}function qd(e){return e}function Jd(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 cu(`<engine.toString>`,1,`string (or a consumer-supplied toString that flattens T)`,ef(e),{line:0,column:0,offset:0})}function Yd(e){try{return JSON.stringify(e)!==void 0}catch{return!1}}function Xd(e,t){return typeof e==typeof t||typeof e==`number`&&typeof t==`bigint`||typeof e==`bigint`&&typeof t==`number`}function Zd(e,t){let n=Qd(e),r=Qd(t);return n===`nil`||r===`nil`?!0:n===r}function Qd(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 $d(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 ef(e){return e===null?`null`:e===void 0?`undefined`:Array.isArray(e)?`array`:e instanceof Map?`Map`:typeof e}function tf(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?nf([...e.entries()]):e instanceof Set?[...e.values()].map((e,t)=>[t,e]):typeof e==`object`?nf(Object.entries(e)):[]}function nf(e){return[...e].sort((e,t)=>rf(e[0],t[0]))}function rf(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 af(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 of(e){if(!/^[+-]?\d+$/.test(e))return 0;let t=Number.parseInt(e,10);return Number.isSafeInteger(t)?t:0}function sf(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 cf(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 lf(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=cf(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 uf(e){if(typeof e==`bigint`)return e;if(typeof e==`number`)return BigInt(Math.trunc(e));if(typeof e==`string`){let t=cf(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 df(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 ff(e){return JSON.stringify(e)??`null`}function pf(){return{atoi:{fn:e=>of(e),argTypes:[`string`],returnType:`int`},int:{fn:e=>lf(e),argTypes:[`value`],returnType:`int`},int64:{fn:e=>uf(e),argTypes:[`value`]},float64:{fn:e=>sf(e),argTypes:[`value`],returnType:`float`},toDecimal:{fn:e=>df(e),argTypes:[`string`],returnType:`int`},toRawJson:{fn:e=>ff(e),argTypes:[`serializable`],returnType:`string`}}}const mf={h:36e11,m:6e10,s:1e9,ms:1e6,us:1e3,µs:1e3,ns:1};function hf(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*mf[a],n=n.slice(e[0].length)}return t?-r:r}function gf(e){if(e===0)return`0s`;let t=!1,n=e;n<0&&(t=!0,n=-n);let r;return r=n<mf.us?`${Math.floor(n)}ns`:n<mf.ms?_f(n,mf.us,3,`µs`):n<mf.s?_f(n,mf.ms,6,`ms`):vf(n),t?`-${r}`:r}function _f(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 vf(e){let t=Math.floor(e/mf.h);e-=t*mf.h;let n=Math.floor(e/mf.m);e-=n*mf.m;let r=Math.floor(e/mf.s),i=e-r*mf.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 yf(e){return e*mf.s}function bf(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 xf(e,t){let n=t().getTime()-bf(e).getTime();return gf(Math.round(n/1e3)*1e9)}const Sf=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],Cf=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],wf=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],Tf=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`];function Ef(e){return e<10?`0${e}`:String(e)}function Df(e){return e<10?`00${e}`:e<100?`0${e}`:String(e)}function Of(e){return e<10?` ${e}`:String(e)}function kf(e){let t=e>=0?`+`:`-`,n=Math.abs(e);return`${t}${Ef(Math.floor(n/60))}${Ef(n%60)}`}function Af(e){let t=e>=0?`+`:`-`,n=Math.abs(e);return`${t}${Ef(Math.floor(n/60))}:${Ef(n%60)}`}function jf(e){return`${e>=0?`+`:`-`}${Ef(Math.floor(Math.abs(e)/60))}`}function Mf(e){return e===0?`Z`:kf(e)}function Nf(e){return e===0?`Z`:Af(e)}function Pf(e){return e===0?`Z`:jf(e)}function Ff(e,t,n){let r=e*1e6,i=String(r).padStart(9,`0`).slice(0,t);return n?i.replace(/0+$/,``):i}const If=[[`.000000000`,e=>`.${Ff(e.ms,9,!1)}`],[`.999999999`,e=>{let t=Ff(e.ms,9,!0);return t?`.${t}`:``}],[`.000000`,e=>`.${Ff(e.ms,6,!1)}`],[`.999999`,e=>{let t=Ff(e.ms,6,!0);return t?`.${t}`:``}],[`.000`,e=>`.${Df(e.ms)}`],[`.999`,e=>{let t=Df(e.ms).replace(/0+$/,``);return t?`.${t}`:``}],[`January`,e=>Sf[e.month-1]??`January`],[`Monday`,e=>wf[e.weekday]??`Monday`],[`Z07:00`,e=>Nf(e.offsetMinutes)],[`-07:00`,e=>Af(e.offsetMinutes)],[`Z0700`,e=>Mf(e.offsetMinutes)],[`-0700`,e=>kf(e.offsetMinutes)],[`2006`,e=>String(e.year)],[`Jan`,e=>Cf[e.month-1]??`Jan`],[`Mon`,e=>Tf[e.weekday]??`Mon`],[`MST`,e=>e.tzAbbr],[`-07`,e=>jf(e.offsetMinutes)],[`Z07`,e=>Pf(e.offsetMinutes)],[`15`,e=>Ef(e.hour)],[`01`,e=>Ef(e.month)],[`02`,e=>Ef(e.day)],[`_2`,e=>Of(e.day)],[`03`,e=>Ef(e.hour12)],[`04`,e=>Ef(e.minute)],[`05`,e=>Ef(e.second)],[`06`,e=>Ef(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 Lf(e,t){let n=``,r=0;for(;r<e.length;){let i=!1;for(let[a,o]of If)if(e.startsWith(a,r)){n+=o(t),r+=a.length,i=!0;break}i||(n+=e[r++])}return n}const Rf={year:`numeric`,month:`2-digit`,day:`2-digit`,weekday:`long`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hour12:!1};function zf(e){let t=new Map;for(let n of e)t.set(n.type,n.value);return t}const Bf=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`];function Vf(e,t){let n;try{new Intl.DateTimeFormat(`en-US`,{timeZone:t}),n=t}catch{n=`UTC`}let r=zf(new Intl.DateTimeFormat(`en-US`,{...Rf,timeZone:n}).formatToParts(e)),i=parseInt(r.get(`hour`)??`0`,10)%24,a=zf(new Intl.DateTimeFormat(`en-US`,{timeZone:n,timeZoneName:`short`}).formatToParts(e)).get(`timeZoneName`)??n,o=Hf(zf(new Intl.DateTimeFormat(`en-US`,{timeZone:n,timeZoneName:`shortOffset`}).formatToParts(e)).get(`timeZoneName`)??`GMT`),s=Bf.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 Hf(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 Uf(){return Intl.DateTimeFormat().resolvedOptions().timeZone}function Wf(e,t){return Lf(e,Vf(bf(t),Uf()))}function Gf(e,t,n){return Lf(e,Vf(bf(t),n))}function Kf(e,t){let n=bf(t),r=hf(e);return Number.isNaN(r)?n:new Date(n.getTime()+r/1e6)}function qf(e){if(typeof e==`string`){let t=parseInt(e,10);return Number.isNaN(t)?`0s`:gf(yf(t))}return typeof e==`bigint`?gf(yf(Number(e))):typeof e==`number`?gf(yf(e)):`0s`}const Jf=36e11*24*365,Yf=36e11*24*30,Xf=36e11*24,Zf=36e11,Qf=6e10,$f=1e9;function ep(e){let t=hf(String(e));if(Number.isNaN(t))return`0s`;let n=Math.abs(t);return n>Jf?`${Math.floor(n/Jf)}y`:n>Yf?`${Math.floor(n/Yf)}mo`:n>Xf?`${Math.floor(n/Xf)}d`:n>Zf?`${Math.floor(n/Zf)}h`:n>Qf?`${Math.floor(n/Qf)}m`:n>$f?`${Math.floor(n/$f)}s`:`0s`}function tp(e){let t=Vf(bf(e),Uf());return`${t.year}-${String(t.month).padStart(2,`0`)}-${String(t.day).padStart(2,`0`)}`}function np(e,t){let n=Vf(bf(e),t);return`${n.year}-${String(n.month).padStart(2,`0`)}-${String(n.day).padStart(2,`0`)}`}function rp(e){return e()}const ip=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],ap=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`];function op(){return{year:2e3,month:1,day:1,hour:0,minute:0,second:0,ms:0,offsetMinutes:0,isPM:!1,hour12:!1}}function sp(e,t,n){return[e.slice(t,t+n),t+n]}function cp(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 lp(e,t){for(let[n,r]of ip.entries())if(e.startsWith(r,t))return[n+1,t+r.length];throw Error(`sprig toDate: expected month name at pos ${t}`)}function up(e,t){for(let[n,r]of ap.entries())if(e.startsWith(r,t))return[n+1,t+r.length];throw Error(`sprig toDate: expected short month name at pos ${t}`)}function dp(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 fp(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 pp(e,t){if(e[t]===` `){let[n,r]=cp(e,t+1,1,1);return[n,r]}return cp(e,t,1,2)}function mp(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]=cp(e,i,2,2);i=o;let s=0;if(n&&e[i]===`:`){let[t,n]=cp(e,i+1,2,2);s=t,i=n}else if(!n){let[t,n]=cp(e,i,2,2);s=t,i=n}return[r*(a*60+s),i]}function hp(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]=cp(e,t+1,2,2);return[n*r*60,i]}return mp(e,t,n)}function gp(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 _p(e,t,n){let[r,i]=sp(e,t,n),a=parseInt(r.padEnd(9,`0`),10);return[Math.round(a/1e6),i]}function vp(e,t,n,r){let i={...r};switch(e){case`January`:{let[e,r]=lp(t,n);return i.month=e,[r,i]}case`Monday`:return[dp(t,n),i];case`Jan`:{let[e,r]=up(t,n);return i.month=e,[r,i]}case`Mon`:return[fp(t,n),i];case`2006`:{let[e,r]=cp(t,n,4,4);return i.year=e,[r,i]}case`06`:{let[e,r]=cp(t,n,2,2);return i.year=e<70?2e3+e:1900+e,[r,i]}case`01`:{let[e,r]=cp(t,n,2,2);return i.month=e,[r,i]}case`1`:{let[e,r]=cp(t,n,1,2);return i.month=e,[r,i]}case`_2`:{let[e,r]=pp(t,n);return i.day=e,[r,i]}case`02`:{let[e,r]=cp(t,n,2,2);return i.day=e,[r,i]}case`2`:{let[e,r]=cp(t,n,1,2);return i.day=e,[r,i]}case`15`:{let[e,r]=cp(t,n,2,2);return i.hour=e,[r,i]}case`03`:{let[e,r]=cp(t,n,2,2);return i.hour=e,i.hour12=!0,[r,i]}case`3`:{let[e,r]=cp(t,n,1,2);return i.hour=e,i.hour12=!0,[r,i]}case`04`:{let[e,r]=cp(t,n,2,2);return i.minute=e,[r,i]}case`4`:{let[e,r]=cp(t,n,1,2);return i.minute=e,[r,i]}case`05`:{let[e,r]=cp(t,n,2,2);return i.second=e,[r,i]}case`5`:{let[e,r]=cp(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[gp(t,n),i];case`-0700`:{let[e,r]=mp(t,n,!1);return i.offsetMinutes=e,[r,i]}case`-07:00`:{let[e,r]=mp(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]=cp(t,n+1,2,2);return i.offsetMinutes=e*r*60,[a,i]}case`Z0700`:{let[e,r]=hp(t,n,!1,!1);return i.offsetMinutes=e,[r,i]}case`Z07:00`:{let[e,r]=hp(t,n,!0,!1);return i.offsetMinutes=e,[r,i]}case`Z07`:{let[e,r]=hp(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]=_p(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]=_p(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]=_p(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 yp=`.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 bp(e,t){let n=0,r=0,i=op();for(;n<e.length;){let a=!1;for(let o of yp)if(e.startsWith(o,n)){let[e,s]=vp(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 xp(e,t){return bp(e,t)}function Sp(e){return String(Math.floor(bf(e).getTime()/1e3))}function Cp(e=()=>new Date){return{now:{fn:()=>rp(e),argTypes:[]},date:{fn:(e,t)=>Wf(e,t),argTypes:[`string`,`value`]},dateInZone:{fn:(e,t,n)=>Gf(e,t,n),argTypes:[`string`,`value`,`string`]},dateModify:{fn:(e,t)=>Kf(e,t),argTypes:[`string`,`value`]},htmlDate:{fn:e=>tp(e),argTypes:[`value`]},htmlDateInZone:{fn:(e,t)=>np(e,t),argTypes:[`value`,`string`]},duration:{fn:e=>qf(e),argTypes:[`value`]},durationRound:{fn:e=>ep(e),argTypes:[`value`]},toDate:{fn:(e,t)=>xp(e,t),argTypes:[`string`,`string`]},ago:{fn:t=>xf(t,e),argTypes:[`value`]},unixEpoch:{fn:e=>Sp(e),argTypes:[`value`]}}}function wp(e){return e==null||e===!1?!0:typeof e==`number`?e===0||Number.isNaN(e):typeof e==`bigint`?e===0n:typeof e==`string`||Array.isArray(e)?e.length===0:e instanceof Map||e instanceof Set?e.size===0:typeof e==`object`?Object.keys(e).length===0:!1}function Tp(...e){for(let t of e)if(!wp(t))return t}function Ep(e,t){return wp(t)?e:t}function Dp(e){return JSON.parse(e)}function Op(e,t,n){return ed(n)?e:t}function kp(e){return JSON.stringify(e)??`null`}function Ap(e){return JSON.stringify(e,null,2)??`null`}function jp(){return{default:{fn:(e,t)=>Ep(e,t),argTypes:[`value`,`truthy`]},empty:{fn:e=>wp(e),argTypes:[`truthy`]},coalesce:{fn:(...e)=>Tp(...e),argTypes:[`truthy`]},ternary:{fn:(e,t,n)=>Op(e,t,n),argTypes:[`value`,`value`,`truthy`]},fromJson:{fn:e=>Dp(e),argTypes:[`string`]},toJson:{fn:e=>kp(e),argTypes:[`serializable`],returnType:`string`},toPrettyJson:{fn:e=>Ap(e),argTypes:[`serializable`],returnType:`string`}}}function Mp(...e){let t={};for(let n=0;n<e.length;n+=2)t[e[n]]=e[n+1];return t}function Np(e){if(e.kind!==`call`||e.name!==`dict`||e.args.length%2!=0)return null;let t=[];for(let[n,r]of e.args.entries()){if(r.kind!==`literal`||n%2==0&&typeof r.value!=`string`)return null;t.push(r.value)}return Mp(...t)}function Pp(e,t){return e[t]}function Fp(e,t){return t in e}function Ip(e){return Object.keys(e)}function Lp(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 Rp(e,...t){let n={...e};for(let e of t)Object.assign(n,e);return n}function zp(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 Bp(e,...t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function Vp(e,...t){let n=[];for(let r of t)e in r&&n.push(r[e]);return n}function Hp(e,t,n){return e[t]=n,e}function Up(e,t){return delete e[t],e}function Wp(e){return Object.values(e)}function Gp(){return{dict:{fn:(...e)=>Mp(...e),argTypes:[`string`,`value`],argTypePattern:`alternating`},get:{fn:(e,t)=>Pp(e,t),argTypes:[`dict`,`string`]},set:{fn:(e,t,n)=>Hp(e,t,n),argTypes:[`dict`,`string`,`value`]},unset:{fn:(e,t)=>Up(e,t),argTypes:[`dict`,`string`]},keys:{fn:e=>Ip(e),argTypes:[`dict`]},values:{fn:e=>Wp(e),argTypes:[`dict`]},pluck:{fn:(e,...t)=>Vp(e,...t),argTypes:[`string`,`dict`]},pick:{fn:(e,...t)=>Bp(e,...t),argTypes:[`dict`,`string`]},omit:{fn:(e,...t)=>zp(e,...t),argTypes:[`dict`,`string`]},hasKey:{fn:(e,t)=>Fp(e,t),argTypes:[`dict`,`string`]},merge:{fn:(e,...t)=>Lp(e,...t),argTypes:[`dict`]},mergeOverwrite:{fn:(e,...t)=>Rp(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 Kp(...e){for(let t of e)if(wp(t))return!1;return!0}function qp(...e){for(let t of e)if(!wp(t))return!0;return!1}function Jp(e,t){return[...e,t]}function Yp(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 Xp(e){return e.filter(e=>!wp(e))}function Zp(...e){let t=[];for(let n of e)t.push(...n);return t}const Qp={line:0,column:0,offset:0};function $p(e,t,n,r){return new cu(e,t,n,r,Qp)}function em(...e){if(e.length<3)throw $p(`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(!nm(t))throw $p(`dig`,e.length-1,`dict`,rm(t));for(let e=0;e<r.length;e++)if(typeof r[e]!=`string`)throw $p(`dig`,e,`string`,rm(r[e]));return tm(t,n,r,e.length)}function tm(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(!nm(a))throw $p(`dig`,r-1,`dict at intermediate key`,rm(a));return tm(a,t,n.slice(1),r)}function nm(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Map)&&!(e instanceof Set)}function rm(e){return e===null?`null`:Array.isArray(e)?`array`:e instanceof Map?`Map`:e instanceof Set?`Set`:typeof e}function im(e){return e[0]}function am(e,t){return t.some(t=>Xu(t,e))}function om(e){return e.slice(0,-1)}function sm(e){return e[e.length-1]}function cm(e){return Array.isArray(e)||typeof e==`string`?e.length:e instanceof Map||e instanceof Set?e.size:Object.keys(e).length}function lm(...e){return e}function um(e,t){return[t,...e]}function dm(e){return e.slice(1)}function fm(e){return[...e].reverse()}function pm(e,t,n){let r=t===void 0?0:t,i=n===void 0?e.length:n;return e.slice(r,i)}function mm(e){let t=[];for(let n of e)n!=null&&t.push(String(n));return t.sort()}function hm(e){let t=[];for(let n of e)t.some(e=>Xu(e,n))||t.push(n);return t}function gm(e,...t){return e.filter(e=>!t.some(t=>Xu(t,e)))}function _m(){return{list:{fn:(...e)=>lm(...e),argTypes:[`value`]},first:{fn:e=>im(e),argTypes:[`list`]},last:{fn:e=>sm(e),argTypes:[`list`]},rest:{fn:e=>dm(e),argTypes:[`list`]},initial:{fn:e=>om(e),argTypes:[`list`]},len:{fn:e=>cm(e),argTypes:[`sized`]},reverse:{fn:e=>fm(e),argTypes:[`list`]},uniq:{fn:e=>hm(e),argTypes:[`list`]},without:{fn:(e,...t)=>gm(e,...t),argTypes:[`list`,`value`]},has:{fn:(e,t)=>am(e,t),argTypes:[`value`,`list`]},compact:{fn:e=>Xp(e),argTypes:[`list`]},slice:{fn:(e,t,n)=>pm(e,t,n),argTypes:[`list`,`int`,`int`]},concat:{fn:(...e)=>Zp(...e),argTypes:[`list`]},chunk:{fn:(e,t)=>Yp(e,t),argTypes:[`int`,`list`]},prepend:{fn:(e,t)=>um(e,t),argTypes:[`list`,`value`]},append:{fn:(e,t)=>Jp(e,t),argTypes:[`list`,`value`]},sortAlpha:{fn:e=>mm(e),argTypes:[`list`],returnType:`list`},push:{fn:(e,t)=>Jp(e,t),argTypes:[`list`,`value`]},tuple:{fn:(...e)=>lm(...e),argTypes:[`value`]},dig:{fn:(...e)=>em(...e),argTypes:[`value`]},all:{fn:(...e)=>Kp(...e),argTypes:[`truthy`],returnType:`bool`},any:{fn:(...e)=>qp(...e),argTypes:[`truthy`],returnType:`bool`}}}function vm(...e){return e.reduce((e,t)=>e+t,0)}function ym(e){return e+1}function bm(e){return e+1}function xm(...e){return e.reduce((e,t)=>e+t,0)}function Sm(e){return Math.ceil(e)}function Cm(e,t){return Math.trunc(e/t)}function wm(e,t){return e/t}function Tm(e){return Math.floor(e)}function Em(...e){return e.reduce((e,t)=>t>e?t:e,-1/0)}function Dm(...e){return e.reduce((e,t)=>Math.max(e,t),-1/0)}function Om(...e){return e.reduce((e,t)=>t<e?t:e,1/0)}function km(...e){return e.reduce((e,t)=>Math.min(e,t),1/0)}function Am(e,t){return e%t}function jm(...e){return e.reduce((e,t)=>e*t,1)}function Mm(...e){return e.reduce((e,t)=>e*t,1)}function Nm(e,t=0){let n=10**t;return Math.sign(e)*Math.round(Math.abs(e)*n)/n}function Pm(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 Fm(...e){let t=1;switch(e.length){case 0:return``;case 1:{let n=e[0];return n<1&&(t=-1),Pm(1,n+t,t).join(` `)}case 2:{let t=e[0],n=e[1],r=n<t?-1:1;return Pm(t,n+r,r).join(` `)}case 3:{let n=e[0],r=e[1],i=e[2];return i<n&&(t=-1,r>0)?``:Pm(n,i+t,r).join(` `)}default:return``}}function Im(e,t){return e-t}function Lm(e,t){return e-t}function Rm(e){return Pm(0,e,e<0?-1:1)}function zm(){return{add:{fn:(...e)=>vm(...e),argTypes:[`int`]},sub:{fn:(e,t)=>Im(e,t),argTypes:[`int`,`int`]},mul:{fn:(...e)=>jm(...e),argTypes:[`int`]},div:{fn:(e,t)=>Cm(e,t),argTypes:[`int`,`int`]},mod:{fn:(e,t)=>Am(e,t),argTypes:[`int`,`int`]},min:{fn:(...e)=>Om(...e),argTypes:[`int`]},max:{fn:(...e)=>Em(...e),argTypes:[`int`]},floor:{fn:e=>Tm(e),argTypes:[`float`]},ceil:{fn:e=>Sm(e),argTypes:[`float`]},round:{fn:(e,t)=>Nm(e,t),argTypes:[`float`,`int`]},addf:{fn:(...e)=>xm(...e),argTypes:[`float`]},subf:{fn:(e,t)=>Lm(e,t),argTypes:[`float`,`float`]},mulf:{fn:(...e)=>Mm(...e),argTypes:[`float`]},divf:{fn:(e,t)=>wm(e,t),argTypes:[`float`,`float`]},add1:{fn:e=>ym(e),argTypes:[`int`]},add1f:{fn:e=>bm(e),argTypes:[`float`]},maxf:{fn:(...e)=>Dm(...e),argTypes:[`float`]},minf:{fn:(...e)=>km(...e),argTypes:[`float`]},biggest:{fn:(...e)=>Em(...e),argTypes:[`int`]},seq:{fn:(...e)=>Fm(...e),argTypes:[`int`],returnType:`string`},until:{fn:e=>Rm(e),argTypes:[`int`],returnType:`list`},untilStep:{fn:(e,t,n)=>Pm(e,t,n),argTypes:[`int`,`int`,`int`],returnType:`list`}}}Array.from({length:95},(e,t)=>String.fromCharCode(t+32)).join(``);function Bm(e,t){return t.length<=e||e<4?t:`${t.slice(0,e-3)}...`}function Vm(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},Hm=/^[-_\s]$/,Um=/^\p{P}$/u,Wm=/^\p{L}$/u,Gm=/^\p{Lu}$/u,Km=/^\p{N}$/u;function qm(e){return e!==void 0&&Hm.test(e)}function Jm(e){return e!==void 0&&Wm.test(e)}function Ym(e){return e!==void 0&&Gm.test(e)}function Xm(e){return e!==void 0&&Km.test(e)}function Zm(e){return e!==void 0&&Um.test(e)}function Qm(e,t){if(t>=e.length)return{word:{wt:q.Invalid,text:``},next:t};let n=e[t],r=t+1;if(qm(n)){for(;r<e.length&&qm(e[r]);)r++;return{word:{wt:q.Connector,text:e.slice(t,r).join(``)},next:r}}if(Zm(n)){for(;r<e.length&&Zm(e[r]);)r++;return{word:{wt:q.Punct,text:e.slice(t,r).join(``)},next:r}}if(Ym(n)){if(r>=e.length)return{word:{wt:q.UpperCase,text:n},next:r};if(Ym(e[r])){let n=r;for(;n<e.length&&Ym(e[n]);)n++;return n<e.length&&Jm(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(Jm(e[r])){let n=r+1;for(;n<e.length&&Jm(e[n])&&!Ym(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(Jm(n)){for(;r<e.length&&Jm(e[r])&&!Ym(e[r]);)r++;return{word:{wt:q.Alphabet,text:e.slice(t,r).join(``)},next:r}}if(Xm(n)){for(;r<e.length&&Xm(e[r]);)r++;return{word:{wt:q.Number,text:e.slice(t,r).join(``)},next:r}}for(;r<e.length&&!qm(e[r])&&!Jm(e[r])&&!Xm(e[r])&&!Zm(e[r]);)r++;return{word:{wt:q.Other,text:e.slice(t,r).join(``)},next:r}}function $m(e,t,n){if(t.wt!==q.UpperCase&&t.wt!==q.Connector){e.push(t.text);return}for(let r of t.text)qm(r)?e.push(n):Ym(r)?e.push(r.toLowerCase()):e.push(r)}function eh(e,t){if(e.length===0)return``;let n=Array.from(e),r=[],{word:i,next:a}=Qm(n,0);for(;a<n.length;){i.wt!==q.Connector&&$m(r,i,t);let e=i,o=i;if({word:i,next:a}=Qm(n,a),e.wt===q.Number){for(;i.wt===q.Alphabet||i.wt===q.Number;)$m(r,i,t),{word:i,next:a}=Qm(n,a);i.wt!==q.Invalid&&i.wt!==q.Punct&&i.wt!==q.Connector&&r.push(t);continue}if(e.wt===q.Connector){$m(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}=Qm(n,a),i.wt!==q.Alphabet){$m(r,s,t),i.wt!==q.Connector&&i.wt!==q.Punct&&r.push(t);continue}for(r.push(t),$m(r,s,t);i.wt===q.Alphabet||i.wt===q.Number;)$m(r,i,t),{word:i,next:a}=Qm(n,a);i.wt!==q.Invalid&&i.wt!==q.Connector&&i.wt!==q.Punct&&r.push(t)}return $m(r,i,t),r.join(``).toLowerCase()}function th(e){if(e.length===0)return``;let t=Array.from(e),n=[],r=0,i=``;for(;r<t.length;){if(i=t[r],r++,!qm(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++,qm(i)&&qm(e)){n.push(e);continue}qm(e)?i=i.toUpperCase():(i=i.toLowerCase(),n.push(e))}return n.push(i),n.join(``)}function nh(e){return th(e)}function rh(...e){return e.join(` `)}function ih(e,t){return t.includes(e)}function ah(e,t){return t.startsWith(e)}function oh(e,t){return t.endsWith(e)}function sh(e,t){let n=` `.repeat(Math.max(0,e));return t.split(`
|
|
48
|
+
`?(this.line+=1,this.column=1):this.column+=1}}advanceTo(e){for(;this.offset<e;)this.advanceBy(1)}makeToken(e,t,n,r={}){return Object.freeze({type:e,value:t,pos:n,...r.trimLeft===void 0?{}:{trimLeft:r.trimLeft},...r.trimRight===void 0?{}:{trimRight:r.trimRight}})}};function Fu(e){return e===` `||e===` `||e===`\r`||e===`
|
|
49
|
+
`}function Iu(e){return e===`+`||e===`-`}function Lu(e){return e>=`0`&&e<=`9`}function Ru(e){return Lu(e)||e>=`a`&&e<=`f`||e>=`A`&&e<=`F`}function zu(e){return e>=`0`&&e<=`7`}function Bu(e){return e===`0`||e===`1`}function Vu(e){return e>=`a`&&e<=`z`||e>=`A`&&e<=`Z`}function Hu(e){return Vu(e)||e===`_`}function Uu(e){return Hu(e)||Lu(e)}let Wu,Gu;function Ku(e,t){return Gu(e,t)}var qu=class e{static EMPTY=new e(new Map,void 0);#e;#t;constructor(e,t){this.#e=e,this.#t=t}static{Wu=(t,n)=>new e(t,n),Gu=(e,t)=>e.#e.get(t)??(e.#t&&Gu(e.#t,t))}has(e){return Gu(this,e)!==void 0}};function Ju(e,t,n=qu.EMPTY){return new Yu(e,t,n).parseTemplate()}var Yu=class{lex;buf=[];defines=new Map;inherit;source;rangeDepth=0;constructor(e,t,n){this.source=e,this.inherit=n,this.lex=t?new Pu(e,t):new Pu(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:Qu(n)});return n}errAt(e,t,n={}){return new Su(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 ${Qu(e)}`,{found:Qu(e)})}return{root:e,defines:Wu(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=Zu(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 Xu(e,t);let r=this.parseAction();r!==null&&t.push(r);continue}throw this.errAt(n,`unexpected ${Qu(n)} at top level`,{found:Qu(n)})}return Xu(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 Su(`{{${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 Su(`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:Qu(e)});return od(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(!$u(e.type))throw this.errAt(e,"missing command after `|`",{expected:`command`,found:Qu(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=[ed(this.next())];for(;this.peek().type===`Comma`;)this.next(),n.push(ed(this.expect(`Variable`,`$variable`)));return{vars:n,isAssign:this.next().type===`Assign`}}parseCommand(){let e=this.peek().pos,t=[this.parsePrimary()];for(;$u(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 ed(e);case`Identifier`:return{type:`Identifier`,pos:e.pos,ident:e.value};case`String`:return{type:`String`,pos:e.pos,raw:e.value,value:od(e.value,e.pos,this.source)};case`Number`:return nd(e);case`Char`:return rd(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 ${Qu(e)}`,{expected:`command argument`,found:Qu(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 Xu(e,t){return{type:`List`,pos:e,nodes:t}}function Zu(e){return{trimLeft:e.trimLeft===!0,trimRight:e.trimRight===!0}}function Qu(e){return e.type===`EOF`?`end of input`:e.value||e.type}function $u(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 ed(e){return{type:`Variable`,pos:e.pos,idents:td(e.value)}}function td(e){let t=e.indexOf(`.`);return t===-1?[e]:[e.slice(0,t),...e.slice(t+1).split(`.`)]}function nd(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=id(i);return{...s,intValue:e}}if(a){let e=ad(i);return{...s,floatValue:e}}let c=ad(i);return{...s,complexValue:[0,c]}}function rd(e,t){let n=sd(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 id(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 ad(e){return Number(e)}function od(e,t,n){if(e.startsWith("`"))return e.slice(1,-1);let r=``;for(let i=1;i<e.length-1;i++){let a=e[i];if(a!==`\\`){r+=a;continue}let o=e[++i];switch(o){case`n`:r+=`
|
|
50
|
+
`;break;case`t`:r+=` `;break;case`r`:r+=`\r`;break;case`\\`:r+=`\\`;break;case`"`:r+=`"`;break;case`'`:r+=`'`;break;case`a`:r+=`\x07`;break;case`b`:r+=`\b`;break;case`f`:r+=`\f`;break;case`v`:r+=`\v`;break;case`0`:case`1`:case`2`:case`3`:case`4`:case`5`:case`6`:case`7`:{let t=o+(e[i+1]??``)+(e[i+2]??``);i+=2,r+=String.fromCodePoint(Number.parseInt(t,8));break}case`x`:{let t=(e[i+1]??``)+(e[i+2]??``);i+=2,r+=String.fromCodePoint(Number.parseInt(t,16));break}case`u`:{let t=e.slice(i+1,i+5);i+=4,r+=String.fromCodePoint(Number.parseInt(t,16));break}case`U`:{let t=e.slice(i+1,i+9);i+=8,r+=String.fromCodePoint(Number.parseInt(t,16));break}default:throw new Su(`bad escape sequence \\${o}`,t,{expected:`valid escape sequence`,found:`\\${o}`,source:n})}}return r}function sd(e,t,n){let r=od(`"${e.slice(1,-1).replace(/"/g,`\\"`)}"`,t,n);if(r.length===0)throw new Su(`empty rune literal`,t,{source:n});return r.codePointAt(0)??0}function cd(e,t){if(t(e)!==!1)for(let n of ld(e))cd(n,t)}function ld(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 ju(e)}}const ud=Symbol(`go-template-js.MISSING`);function dd(e,t){if(e==null)return ud;if(e instanceof Map)return e.has(t)?e.get(t):ud;if(Array.isArray(e))return ud;if(typeof e==`object`){let n=e;return t in n?n[t]:ud}return ud}function fd(e,t){let n=e;for(let e of t){if(n===ud)return ud;n=dd(n,e)}return n}function pd(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)=>pd(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)||!pd(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=>pd(e[n],t[n])):!1}return!1}const md=new WeakSet;function hd(e){return md.add(e),e}function gd(e){return md.has(e)}function _d(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 vd(e,t){return{eq:{fn:(e,...t)=>t.some(t=>xd(e,t)),argTypes:[`comparable`]},ne:{fn:(e,t)=>!xd(e,t),argTypes:[`comparable`,`comparable`]},lt:{fn:(e,t)=>Sd(e,t)<0,argTypes:[`ordered`,`ordered`]},le:{fn:(e,t)=>Sd(e,t)<=0,argTypes:[`ordered`,`ordered`]},gt:{fn:(e,t)=>Sd(e,t)>0,argTypes:[`ordered`,`ordered`]},ge:{fn:(e,t)=>Sd(e,t)>=0,argTypes:[`ordered`,`ordered`]},len:{fn:e=>Cd(e),argTypes:[`sized`]},index:{fn:(e,...t)=>{let n=e;for(let e of t)n=wd(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)=>Dd(t,e),argTypes:[`stringifiable`],returnType:`string`},println:{fn:(...t)=>`${Dd(t,e)}\n`,argTypes:[`stringifiable`],returnType:`string`},printf:{fn:(n,...r)=>Id(n,r,e,t),argTypes:[`string`,`stringifiable`],returnType:`string`},toString:{fn:n=>zd(n,e,t),argTypes:[`value`],returnType:`string`},toStrings:{fn:n=>n.map(n=>zd(n,e,t)),argTypes:[`list`]},call:{fn:(e,...t)=>e(...t),argTypes:[`callable`,`value`]},html:{fn:(...t)=>Ad(Dd(t,e)),argTypes:[`stringifiable`],returnType:`string`},js:{fn:(...t)=>Nd(Dd(t,e)),argTypes:[`stringifiable`],returnType:`string`},urlquery:{fn:(...t)=>Fd(Dd(t,e)),argTypes:[`stringifiable`],returnType:`string`},not:{fn:e=>!_d(e),argTypes:[`truthy`]}}}function yd(){return{and:hd({argTypes:[`truthy`],fn:(...e)=>{let t=!0;for(let n of e)if(t=n(),!_d(t))return t;return t}}),or:hd({argTypes:[`truthy`],fn:(...e)=>{let t=!1;for(let n of e)if(t=n(),_d(t))return t;return t}})}}function bd(e,t){return{...vd(e,t),...yd()}}function xd(e,t){return typeof e==`number`&&typeof t==`bigint`?BigInt(e)===t:typeof e==`bigint`&&typeof t==`number`?e===BigInt(t):pd(e,t)}function Sd(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 Cd(e){return typeof e==`string`||Array.isArray(e)?e.length:e instanceof Map||e instanceof Set?e.size:Object.keys(e).length}function wd(e,t){if(Array.isArray(e)){let n=Number(t);if(!Number.isInteger(n))throw Error(`index: array index must be integer, got ${Td(t)}`);if(n<0||n>=e.length)throw Error(`index: out of range [${n}] with length ${e.length}`);return e[n]}if(e instanceof Map)return e.get(t);if(typeof e==`string`)return e[Number(t)];if(typeof e==`object`&&e){if(typeof t!=`string`)throw Error(`index: object index must be string, got ${Td(t)}`);return e[t]}throw Error(`index: cannot index ${Td(e)}`)}function Td(e){return e===null?`null`:e===void 0?`undefined`:Array.isArray(e)?`array`:e instanceof Map?`Map`:typeof e}function Ed(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 Dd(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+=Od(a,t),r=o}return n}function Od(e,t){return e==null?`<nil>`:typeof e==`string`?e:t(e)}const kd={"\0":`�`,'"':`"`,"'":`'`,"&":`&`,"<":`<`,">":`>`};function Ad(e){return e.replace(/[\0"'&<>]/g,e=>kd[e]??e)}const jd={"\\":`\\\\`,"'":`\\'`,'"':`\\"`,"<":`\\u003C`,">":`\\u003E`,"&":`\\u0026`,"=":`\\u003D`},Md=/^[\p{L}\p{M}\p{N}\p{P}\p{S}]$/u;function Nd(e){let t=``;for(let n of e){let e=jd[n];if(e!==void 0){t+=e;continue}let r=n.codePointAt(0);if(r<32||r>=128&&!Md.test(n)){t+=`\\u${r.toString(16).toUpperCase().padStart(4,`0`)}`;continue}t+=n}return t}const Pd=new TextEncoder;function Fd(e){let t=``,n=Pd.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 Id(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+=Ld(l??``,u,d,n,r),o=c+1}return i}function Ld(e,t,n,r,i){switch(e){case`s`:return typeof n==`string`?Rd(t,n):Rd(t,Od(n,r));case`d`:return typeof n!=`number`&&typeof n!=`bigint`?`%!${e}(${Ed(n)}=${Od(n,r)})`:Rd(t,String(typeof n==`bigint`?n:Math.trunc(n)));case`v`:return Rd(t,zd(n,r,i));case`q`:return Rd(t,JSON.stringify(Od(n,r)));case`f`:{if(typeof n!=`number`&&typeof n!=`bigint`)return`%!${e}(${Ed(n)}=${Od(n,r)})`;let i=t.includes(`.`)?Number(t.split(`.`)[1]):6;return Rd(t,Number(n).toFixed(i))}case`t`:return Rd(t,_d(n)?`true`:`false`);case`x`:if(typeof n==`string`){let e=new TextEncoder().encode(n),r=``;for(let t of e)r+=t.toString(16).padStart(2,`0`);return Rd(t,r)}return typeof n!=`number`&&typeof n!=`bigint`?`%!${e}(${Ed(n)}=${Od(n,r)})`:typeof n==`bigint`?Rd(t,n.toString(16)):Rd(t,Math.trunc(n).toString(16));default:return`%!${e}(${Ed(n)}=${Od(n,r)})`}}function Rd(e,t){let n=e.match(/^([+\-# 0]*)/)?.[1]??``,r=e.slice(n.length).match(/^(\d+)/);if(!r)return t;let i=Number(r[1]);if(t.length>=i)return t;let a=` `.repeat(i-t.length);return n.includes(`-`)?t+a:a+t}function zd(e,t,n){return e==null?`<nil>`:typeof e==`string`?e:n(e)?t(e):Array.isArray(e)?`[${e.map(e=>zd(e,t,n)).join(` `)}]`:e instanceof Map?Bd([...e.entries()],t,n):Vd(e)?Bd(Object.entries(e),t,n):String(e)}function Bd(e,t,n){let r=e=>zd(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 Vd(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 Hd(e){return{dot:e,root:e,parent:void 0,vars:new Map}}function Ud(e,t){return{dot:t,root:e.root,parent:e,vars:new Map}}function Wd(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 Gd(e,t,n){e.vars.set(t,n)}const Kd=new Set([`default`,`zero`,`error`]);function qd(e){if(e===void 0)return`default`;if(Kd.has(e))return e;throw Error(`EngineConfig.missingKey: expected "default" | "zero" | "error", got ${Jd(e)}`)}function Jd(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 Yd(e){if(e!==void 0){if(typeof e!=`object`||!e)throw Error(`EngineConfig.delims: expected { left, right } object, got ${Jd(e)}`);if(typeof e.left!=`string`||e.left.length===0)throw Error(`EngineConfig.delims.left: expected non-empty string, got ${Jd(e.left)}`);if(typeof e.right!=`string`||e.right.length===0)throw Error(`EngineConfig.delims.right: expected non-empty string, got ${Jd(e.right)}`);return{left:e.left,right:e.right}}}const Xd=Object.freeze({kind:`break`}),Zd=Object.freeze({kind:`continue`}),Qd={kind:`none`};let $d;(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{$d=(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 ef(e){let t=new Set,n=e=>{cd(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 tf={kind:`dynamic`};function nf(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=Sf(e);return typeof t==`number`||typeof t==`bigint`?{kind:`literal`,value:t}:tf}case`Pipe`:{if(e.decls.length!==0||e.cmds.length!==1)return tf;let t=e.cmds[0];if(t===void 0)return tf;let n=t.args[0];return n===void 0||n.type!==`Identifier`?tf:{kind:`call`,name:n.ident,args:t.args.slice(1).map(nf)}}default:return tf}}function rf(e){let t=[],n=e=>{cd(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(nf);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 af=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??ff,this.isT=e.isT??of,this.missingKey=qd(e.missingKey),this.delims=Yd(e.delims),this.funcs={...bd(this.toString,this.isT),...e.funcs??{}}}parse(e,t){let n=Ju(e,this.delims,t);return $d(n.source,e=>this.evalParsed(n,e),n.defines,ef(n),rf(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=Hd(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 Xd;case`Continue`:throw Zd;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 Cu(`unexpected ${e.type} at statement position`,e.pos,{source:n.source});default:ju(e)}}evalIf(e,t,n){_d(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(_d(r)){let i=Ud(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=yf(r);try{if(a.length===0){e.elseList&&this.evalList(e.elseList,t,n);return}for(let[r,o]of a){let a=Ud(t,o);if(i.length===1)Gd(a,i[0]?.idents[0]??`$`,o);else if(i.length>=2){let e=i[0]?.idents[0]??`$`,t=i[1]?.idents[0]??`$`;Gd(a,e,r),Gd(a,t,o)}try{this.evalList(e.list,a,n)}catch(e){if(e===Zd)continue;throw e}}}catch(e){if(e===Xd)return;throw e}}evalTemplateInvoke(e,t,n){let r=Ku(n.defines,e.name);if(!r)throw new Cu(`template ${JSON.stringify(e.name)} is not defined`,e.pos,{source:n.source});let i=Ud(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=Ud(t,e.pipe?this.evalPipe(e.pipe,t,n):t.dot),i=Ku(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 Cu(`empty pipeline`,e.pos,{source:n.source});let r=this.evalCommand(e.cmds[0],t,n,Qd);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)Gd(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 Cu(`empty command`,e.pos,{source:n.source});let i=e.args[0];if(i.type!==`Identifier`){if(e.args.length>1)throw new Cu(`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 wu(i.ident,i.pos,{source:n.source,available:Object.keys(this.funcs)});let o=e.args.slice(1),s=gd(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)}cf(i.ident,a.argTypes,c,e.pos,n.source,this.toString,a.argTypePattern,this.fromString,this.isT);try{return a.fn(...c)}catch(t){throw t instanceof Tu?new Tu(t.funcName,t.argIndex,t.expected,t.receivedSummary,e.pos,{source:n.source}):t instanceof Du?new Du(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 Sf(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 wu(e.ident,e.pos,{source:n.source,available:Object.keys(this.funcs)});return cf(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 Cu(`cannot evaluate ${e.type} as a value`,e.pos,{source:n.source})}}resolveFieldChain(e,t,n,r){let i=fd(e,t);if(i!==ud)return i;if(this.missingKey===`error`)throw new Eu(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=Wd(t,i);if(!a.found)throw new Cu(`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(zd(e,this.toString,this.isT)))}};const of=e=>typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Map);function sf(e){return new af(e)}function cf(e,t,n,r,i,a=ff,o,s=df,c=of){let l=lf(t,o),u=-1,d=-1;for(let t=0;t<n.length;t++){let o=l(t),f=n[t];if(!uf(o,f,a,c))throw new Tu(e,t+1,_f(o),vf(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(!mf(n[u],f))throw new Tu(e,t+1,`${_f(`ordered`)} of the same kind as ${vf(n[u])}`,vf(f),r,{source:i})}if(o===`comparable`){if(d===-1)d=t;else if(!hf(n[d],f))throw new Tu(e,t+1,`${_f(`comparable`)} of the same kind as ${vf(n[d])}`,vf(f),r,{source:i})}}}function lf(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 uf(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 Vd(t);case`sized`:return typeof t==`string`||Array.isArray(t)||t instanceof Map||t instanceof Set||Vd(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||Vd(t);case`callable`:return typeof t==`function`;case`collection`:return typeof t==`string`||Array.isArray(t)||t instanceof Map||Vd(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 pf(t);default:throw Error(`invalid ArgType: ${String(e)}`)}}function df(e){return e}function ff(e){if(typeof e==`string`)return e;if(e==null)return`<nil>`;if(typeof e==`number`||typeof e==`bigint`||typeof e==`boolean`)return String(e);throw new Tu(`<engine.toString>`,1,`string (or a consumer-supplied toString that flattens T)`,vf(e),{line:0,column:0,offset:0})}function pf(e){try{return JSON.stringify(e)!==void 0}catch{return!1}}function mf(e,t){return typeof e==typeof t||typeof e==`number`&&typeof t==`bigint`||typeof e==`bigint`&&typeof t==`number`}function hf(e,t){let n=gf(e),r=gf(t);return n===`nil`||r===`nil`?!0:n===r}function gf(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 _f(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 vf(e){return e===null?`null`:e===void 0?`undefined`:Array.isArray(e)?`array`:e instanceof Map?`Map`:typeof e}function yf(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?bf([...e.entries()]):e instanceof Set?[...e.values()].map((e,t)=>[t,e]):typeof e==`object`?bf(Object.entries(e)):[]}function bf(e){return[...e].sort((e,t)=>xf(e[0],t[0]))}function xf(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 Sf(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 Cf(e){if(!/^[+-]?\d+$/.test(e))return 0;let t=Number.parseInt(e,10);return Number.isSafeInteger(t)?t:0}function wf(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 Tf(e){if(e===``)return null;let t=1,n=e;return n[0]===`+`?n=n.slice(1):n[0]===`-`&&(t=-1,n=n.slice(1)),n===``?null:/^0x[0-9a-fA-F]+$/i.test(n)?{sign:t,digits:n.slice(2),base:16}:/^0b[01]+$/i.test(n)?{sign:t,digits:n.slice(2),base:2}:/^0o[0-7]+$/i.test(n)?{sign:t,digits:n.slice(2),base:8}:n===`0`?{sign:t,digits:`0`,base:10}:n[0]===`0`?/^0[0-7]+$/.test(n)?{sign:t,digits:n.slice(1),base:8}:null:/^[0-9]+$/.test(n)?{sign:t,digits:n,base:10}:null}function Ef(e){if(typeof e==`number`){let t=Math.trunc(e);return Number.isSafeInteger(t)?t:0}if(typeof e==`bigint`){let t=Number(e);return Number.isSafeInteger(t)?t:0}if(typeof e==`string`){let t=Tf(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 Df(e){if(typeof e==`bigint`)return e;if(typeof e==`number`)return BigInt(Math.trunc(e));if(typeof e==`string`){let t=Tf(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 Of(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 kf(e){return JSON.stringify(e)??`null`}function Af(){return{atoi:{fn:e=>Cf(e),argTypes:[`string`],returnType:`int`},int:{fn:e=>Ef(e),argTypes:[`value`],returnType:`int`},int64:{fn:e=>Df(e),argTypes:[`value`]},float64:{fn:e=>wf(e),argTypes:[`value`],returnType:`float`},toDecimal:{fn:e=>Of(e),argTypes:[`string`],returnType:`int`},toRawJson:{fn:e=>kf(e),argTypes:[`serializable`],returnType:`string`}}}const jf={h:36e11,m:6e10,s:1e9,ms:1e6,us:1e3,µs:1e3,ns:1};function Mf(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*jf[a],n=n.slice(e[0].length)}return t?-r:r}function Nf(e){if(e===0)return`0s`;let t=!1,n=e;n<0&&(t=!0,n=-n);let r;return r=n<jf.us?`${Math.floor(n)}ns`:n<jf.ms?Pf(n,jf.us,3,`µs`):n<jf.s?Pf(n,jf.ms,6,`ms`):Ff(n),t?`-${r}`:r}function Pf(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 Ff(e){let t=Math.floor(e/jf.h);e-=t*jf.h;let n=Math.floor(e/jf.m);e-=n*jf.m;let r=Math.floor(e/jf.s),i=e-r*jf.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 If(e){return e*jf.s}function Lf(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 Rf(e,t){let n=t().getTime()-Lf(e).getTime();return Nf(Math.round(n/1e3)*1e9)}const zf=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],Bf=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],Vf=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],Hf=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`];function Uf(e){return e<10?`0${e}`:String(e)}function Wf(e){return e<10?`00${e}`:e<100?`0${e}`:String(e)}function Gf(e){return e<10?` ${e}`:String(e)}function Kf(e){let t=e>=0?`+`:`-`,n=Math.abs(e);return`${t}${Uf(Math.floor(n/60))}${Uf(n%60)}`}function qf(e){let t=e>=0?`+`:`-`,n=Math.abs(e);return`${t}${Uf(Math.floor(n/60))}:${Uf(n%60)}`}function Jf(e){return`${e>=0?`+`:`-`}${Uf(Math.floor(Math.abs(e)/60))}`}function Yf(e){return e===0?`Z`:Kf(e)}function Xf(e){return e===0?`Z`:qf(e)}function Zf(e){return e===0?`Z`:Jf(e)}function Qf(e,t,n){let r=e*1e6,i=String(r).padStart(9,`0`).slice(0,t);return n?i.replace(/0+$/,``):i}const $f=[[`.000000000`,e=>`.${Qf(e.ms,9,!1)}`],[`.999999999`,e=>{let t=Qf(e.ms,9,!0);return t?`.${t}`:``}],[`.000000`,e=>`.${Qf(e.ms,6,!1)}`],[`.999999`,e=>{let t=Qf(e.ms,6,!0);return t?`.${t}`:``}],[`.000`,e=>`.${Wf(e.ms)}`],[`.999`,e=>{let t=Wf(e.ms).replace(/0+$/,``);return t?`.${t}`:``}],[`January`,e=>zf[e.month-1]??`January`],[`Monday`,e=>Vf[e.weekday]??`Monday`],[`Z07:00`,e=>Xf(e.offsetMinutes)],[`-07:00`,e=>qf(e.offsetMinutes)],[`Z0700`,e=>Yf(e.offsetMinutes)],[`-0700`,e=>Kf(e.offsetMinutes)],[`2006`,e=>String(e.year)],[`Jan`,e=>Bf[e.month-1]??`Jan`],[`Mon`,e=>Hf[e.weekday]??`Mon`],[`MST`,e=>e.tzAbbr],[`-07`,e=>Jf(e.offsetMinutes)],[`Z07`,e=>Zf(e.offsetMinutes)],[`15`,e=>Uf(e.hour)],[`01`,e=>Uf(e.month)],[`02`,e=>Uf(e.day)],[`_2`,e=>Gf(e.day)],[`03`,e=>Uf(e.hour12)],[`04`,e=>Uf(e.minute)],[`05`,e=>Uf(e.second)],[`06`,e=>Uf(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 ep(e,t){let n=``,r=0;for(;r<e.length;){let i=!1;for(let[a,o]of $f)if(e.startsWith(a,r)){n+=o(t),r+=a.length,i=!0;break}i||(n+=e[r++])}return n}const tp={year:`numeric`,month:`2-digit`,day:`2-digit`,weekday:`long`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hour12:!1};function np(e){let t=new Map;for(let n of e)t.set(n.type,n.value);return t}const rp=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`];function ip(e,t){let n;try{new Intl.DateTimeFormat(`en-US`,{timeZone:t}),n=t}catch{n=`UTC`}let r=np(new Intl.DateTimeFormat(`en-US`,{...tp,timeZone:n}).formatToParts(e)),i=parseInt(r.get(`hour`)??`0`,10)%24,a=np(new Intl.DateTimeFormat(`en-US`,{timeZone:n,timeZoneName:`short`}).formatToParts(e)).get(`timeZoneName`)??n,o=ap(np(new Intl.DateTimeFormat(`en-US`,{timeZone:n,timeZoneName:`shortOffset`}).formatToParts(e)).get(`timeZoneName`)??`GMT`),s=rp.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 ap(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 op(){return Intl.DateTimeFormat().resolvedOptions().timeZone}function sp(e,t){return ep(e,ip(Lf(t),op()))}function cp(e,t,n){return ep(e,ip(Lf(t),n))}function lp(e,t){let n=Lf(t),r=Mf(e);return Number.isNaN(r)?n:new Date(n.getTime()+r/1e6)}function up(e){if(typeof e==`string`){let t=parseInt(e,10);return Number.isNaN(t)?`0s`:Nf(If(t))}return typeof e==`bigint`?Nf(If(Number(e))):typeof e==`number`?Nf(If(e)):`0s`}const dp=36e11*24*365,fp=36e11*24*30,pp=36e11*24,mp=36e11,hp=6e10,gp=1e9;function _p(e){let t=Mf(String(e));if(Number.isNaN(t))return`0s`;let n=Math.abs(t);return n>dp?`${Math.floor(n/dp)}y`:n>fp?`${Math.floor(n/fp)}mo`:n>pp?`${Math.floor(n/pp)}d`:n>mp?`${Math.floor(n/mp)}h`:n>hp?`${Math.floor(n/hp)}m`:n>gp?`${Math.floor(n/gp)}s`:`0s`}function vp(e){let t=ip(Lf(e),op());return`${t.year}-${String(t.month).padStart(2,`0`)}-${String(t.day).padStart(2,`0`)}`}function yp(e,t){let n=ip(Lf(e),t);return`${n.year}-${String(n.month).padStart(2,`0`)}-${String(n.day).padStart(2,`0`)}`}function bp(e){return e()}const xp=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],Sp=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`];function Cp(){return{year:2e3,month:1,day:1,hour:0,minute:0,second:0,ms:0,offsetMinutes:0,isPM:!1,hour12:!1}}function wp(e,t,n){return[e.slice(t,t+n),t+n]}function Tp(e,t,n,r){let i=t;for(;i<e.length&&i-t<r&&e.charCodeAt(i)>=48&&e.charCodeAt(i)<=57;)i++;if(i-t<n)throw Error(`sprig toDate: expected ${n}-${r} digits at pos ${t}`);return[parseInt(e.slice(t,i),10),i]}function Ep(e,t){for(let[n,r]of xp.entries())if(e.startsWith(r,t))return[n+1,t+r.length];throw Error(`sprig toDate: expected month name at pos ${t}`)}function Dp(e,t){for(let[n,r]of Sp.entries())if(e.startsWith(r,t))return[n+1,t+r.length];throw Error(`sprig toDate: expected short month name at pos ${t}`)}function Op(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 kp(e,t){for(let n of[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`])if(e.startsWith(n,t))return t+n.length;throw Error(`sprig toDate: expected short weekday name at pos ${t}`)}function Ap(e,t){if(e[t]===` `){let[n,r]=Tp(e,t+1,1,1);return[n,r]}return Tp(e,t,1,2)}function jp(e,t,n){let r=e[t]===`+`?1:e[t]===`-`?-1:0;if(r===0)throw Error(`sprig toDate: expected +/- at pos ${t}`);let i=t+1,[a,o]=Tp(e,i,2,2);i=o;let s=0;if(n&&e[i]===`:`){let[t,n]=Tp(e,i+1,2,2);s=t,i=n}else if(!n){let[t,n]=Tp(e,i,2,2);s=t,i=n}return[r*(a*60+s),i]}function Mp(e,t,n,r){if(e[t]===`Z`)return[0,t+1];if(r){let n=e[t]===`+`?1:e[t]===`-`?-1:0;if(n===0)throw Error(`sprig toDate: expected Z or +/- at pos ${t}`);let[r,i]=Tp(e,t+1,2,2);return[n*r*60,i]}return jp(e,t,n)}function Np(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 Pp(e,t,n){let[r,i]=wp(e,t,n),a=parseInt(r.padEnd(9,`0`),10);return[Math.round(a/1e6),i]}function Fp(e,t,n,r){let i={...r};switch(e){case`January`:{let[e,r]=Ep(t,n);return i.month=e,[r,i]}case`Monday`:return[Op(t,n),i];case`Jan`:{let[e,r]=Dp(t,n);return i.month=e,[r,i]}case`Mon`:return[kp(t,n),i];case`2006`:{let[e,r]=Tp(t,n,4,4);return i.year=e,[r,i]}case`06`:{let[e,r]=Tp(t,n,2,2);return i.year=e<70?2e3+e:1900+e,[r,i]}case`01`:{let[e,r]=Tp(t,n,2,2);return i.month=e,[r,i]}case`1`:{let[e,r]=Tp(t,n,1,2);return i.month=e,[r,i]}case`_2`:{let[e,r]=Ap(t,n);return i.day=e,[r,i]}case`02`:{let[e,r]=Tp(t,n,2,2);return i.day=e,[r,i]}case`2`:{let[e,r]=Tp(t,n,1,2);return i.day=e,[r,i]}case`15`:{let[e,r]=Tp(t,n,2,2);return i.hour=e,[r,i]}case`03`:{let[e,r]=Tp(t,n,2,2);return i.hour=e,i.hour12=!0,[r,i]}case`3`:{let[e,r]=Tp(t,n,1,2);return i.hour=e,i.hour12=!0,[r,i]}case`04`:{let[e,r]=Tp(t,n,2,2);return i.minute=e,[r,i]}case`4`:{let[e,r]=Tp(t,n,1,2);return i.minute=e,[r,i]}case`05`:{let[e,r]=Tp(t,n,2,2);return i.second=e,[r,i]}case`5`:{let[e,r]=Tp(t,n,1,2);return i.second=e,[r,i]}case`PM`:case`pm`:{let e=t.slice(n,n+2).toLowerCase();if(e!==`am`&&e!==`pm`)throw Error(`sprig toDate: expected AM/PM at pos ${n}, got ${JSON.stringify(t.slice(n,n+2))}`);return i.isPM=e===`pm`,i.hour12=!0,[n+2,i]}case`MST`:return[Np(t,n),i];case`-0700`:{let[e,r]=jp(t,n,!1);return i.offsetMinutes=e,[r,i]}case`-07:00`:{let[e,r]=jp(t,n,!0);return i.offsetMinutes=e,[r,i]}case`-07`:{let e=t[n]===`+`?1:t[n]===`-`?-1:0;if(e===0)throw Error(`sprig toDate: expected +/- at pos ${n}`);let[r,a]=Tp(t,n+1,2,2);return i.offsetMinutes=e*r*60,[a,i]}case`Z0700`:{let[e,r]=Mp(t,n,!1,!1);return i.offsetMinutes=e,[r,i]}case`Z07:00`:{let[e,r]=Mp(t,n,!0,!1);return i.offsetMinutes=e,[r,i]}case`Z07`:{let[e,r]=Mp(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]=Pp(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]=Pp(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]=Pp(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 Ip=`.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 Lp(e,t){let n=0,r=0,i=Cp();for(;n<e.length;){let a=!1;for(let o of Ip)if(e.startsWith(o,n)){let[e,s]=Fp(o,t,r,i);r=e,i=s,n+=o.length,a=!0;break}if(!a){let i=e.charAt(n);if(t[r]!==i)throw Error(`sprig toDate: expected ${JSON.stringify(i)} at pos ${r}, got ${JSON.stringify(t[r])}`);n++,r++}}if(r!==t.length)throw Error(`sprig toDate: extra characters at pos ${r}: ${JSON.stringify(t.slice(r))}`);if(i.hour12){let e=i.hour%12;i.hour=i.isPM?e+12:e}let a=Date.UTC(i.year,i.month-1,i.day,i.hour,i.minute,i.second,i.ms)-i.offsetMinutes*60*1e3;return new Date(a)}function Rp(e,t){return Lp(e,t)}function zp(e){return String(Math.floor(Lf(e).getTime()/1e3))}function Bp(e=()=>new Date){return{now:{fn:()=>bp(e),argTypes:[]},date:{fn:(e,t)=>sp(e,t),argTypes:[`string`,`value`]},dateInZone:{fn:(e,t,n)=>cp(e,t,n),argTypes:[`string`,`value`,`string`]},dateModify:{fn:(e,t)=>lp(e,t),argTypes:[`string`,`value`]},htmlDate:{fn:e=>vp(e),argTypes:[`value`]},htmlDateInZone:{fn:(e,t)=>yp(e,t),argTypes:[`value`,`string`]},duration:{fn:e=>up(e),argTypes:[`value`]},durationRound:{fn:e=>_p(e),argTypes:[`value`]},toDate:{fn:(e,t)=>Rp(e,t),argTypes:[`string`,`string`]},ago:{fn:t=>Rf(t,e),argTypes:[`value`]},unixEpoch:{fn:e=>zp(e),argTypes:[`value`]}}}function Vp(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 Hp(...e){for(let t of e)if(!Vp(t))return t}function Up(e,t){return Vp(t)?e:t}function Wp(e){return JSON.parse(e)}function Gp(e,t,n){return _d(n)?e:t}function Kp(e){return JSON.stringify(e)??`null`}function qp(e){return JSON.stringify(e,null,2)??`null`}function Jp(){return{default:{fn:(e,t)=>Up(e,t),argTypes:[`value`,`truthy`]},empty:{fn:e=>Vp(e),argTypes:[`truthy`]},coalesce:{fn:(...e)=>Hp(...e),argTypes:[`truthy`]},ternary:{fn:(e,t,n)=>Gp(e,t,n),argTypes:[`value`,`value`,`truthy`]},fromJson:{fn:e=>Wp(e),argTypes:[`string`]},toJson:{fn:e=>Kp(e),argTypes:[`serializable`],returnType:`string`},toPrettyJson:{fn:e=>qp(e),argTypes:[`serializable`],returnType:`string`}}}function Yp(...e){let t={};for(let n=0;n<e.length;n+=2)t[e[n]]=e[n+1];return t}function Xp(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 Yp(...t)}function Zp(e,t){return e[t]}function Qp(e,t){return t in e}function $p(e){return Object.keys(e)}function em(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 tm(e,...t){let n={...e};for(let e of t)Object.assign(n,e);return n}function nm(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 rm(e,...t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function im(e,...t){let n=[];for(let r of t)e in r&&n.push(r[e]);return n}function am(e,t,n){return e[t]=n,e}function om(e,t){return delete e[t],e}function sm(e){return Object.values(e)}function cm(){return{dict:{fn:(...e)=>Yp(...e),argTypes:[`string`,`value`],argTypePattern:`alternating`},get:{fn:(e,t)=>Zp(e,t),argTypes:[`dict`,`string`]},set:{fn:(e,t,n)=>am(e,t,n),argTypes:[`dict`,`string`,`value`]},unset:{fn:(e,t)=>om(e,t),argTypes:[`dict`,`string`]},keys:{fn:e=>$p(e),argTypes:[`dict`]},values:{fn:e=>sm(e),argTypes:[`dict`]},pluck:{fn:(e,...t)=>im(e,...t),argTypes:[`string`,`dict`]},pick:{fn:(e,...t)=>rm(e,...t),argTypes:[`dict`,`string`]},omit:{fn:(e,...t)=>nm(e,...t),argTypes:[`dict`,`string`]},hasKey:{fn:(e,t)=>Qp(e,t),argTypes:[`dict`,`string`]},merge:{fn:(e,...t)=>em(e,...t),argTypes:[`dict`]},mergeOverwrite:{fn:(e,...t)=>tm(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 lm(...e){for(let t of e)if(Vp(t))return!1;return!0}function um(...e){for(let t of e)if(!Vp(t))return!0;return!1}function dm(e,t){return[...e,t]}function fm(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 pm(e){return e.filter(e=>!Vp(e))}function mm(...e){let t=[];for(let n of e)t.push(...n);return t}const hm={line:0,column:0,offset:0};function gm(e,t,n,r){return new Tu(e,t,n,r,hm)}function _m(...e){if(e.length<3)throw gm(`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(!ym(t))throw gm(`dig`,e.length-1,`dict`,bm(t));for(let e=0;e<r.length;e++)if(typeof r[e]!=`string`)throw gm(`dig`,e,`string`,bm(r[e]));return vm(t,n,r,e.length)}function vm(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(!ym(a))throw gm(`dig`,r-1,`dict at intermediate key`,bm(a));return vm(a,t,n.slice(1),r)}function ym(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Map)&&!(e instanceof Set)}function bm(e){return e===null?`null`:Array.isArray(e)?`array`:e instanceof Map?`Map`:e instanceof Set?`Set`:typeof e}function xm(e){return e[0]}function Sm(e,t){return t.some(t=>pd(t,e))}function Cm(e){return e.slice(0,-1)}function wm(e){return e[e.length-1]}function Tm(e){return Array.isArray(e)||typeof e==`string`?e.length:e instanceof Map||e instanceof Set?e.size:Object.keys(e).length}function Em(...e){return e}function Dm(e,t){return[t,...e]}function Om(e){return e.slice(1)}function km(e){return[...e].reverse()}function Am(e,t,n){let r=t===void 0?0:t,i=n===void 0?e.length:n;return e.slice(r,i)}function jm(e){let t=[];for(let n of e)n!=null&&t.push(String(n));return t.sort()}function Mm(e){let t=[];for(let n of e)t.some(e=>pd(e,n))||t.push(n);return t}function Nm(e,...t){return e.filter(e=>!t.some(t=>pd(t,e)))}function Pm(){return{list:{fn:(...e)=>Em(...e),argTypes:[`value`]},first:{fn:e=>xm(e),argTypes:[`list`]},last:{fn:e=>wm(e),argTypes:[`list`]},rest:{fn:e=>Om(e),argTypes:[`list`]},initial:{fn:e=>Cm(e),argTypes:[`list`]},len:{fn:e=>Tm(e),argTypes:[`sized`]},reverse:{fn:e=>km(e),argTypes:[`list`]},uniq:{fn:e=>Mm(e),argTypes:[`list`]},without:{fn:(e,...t)=>Nm(e,...t),argTypes:[`list`,`value`]},has:{fn:(e,t)=>Sm(e,t),argTypes:[`value`,`list`]},compact:{fn:e=>pm(e),argTypes:[`list`]},slice:{fn:(e,t,n)=>Am(e,t,n),argTypes:[`list`,`int`,`int`]},concat:{fn:(...e)=>mm(...e),argTypes:[`list`]},chunk:{fn:(e,t)=>fm(e,t),argTypes:[`int`,`list`]},prepend:{fn:(e,t)=>Dm(e,t),argTypes:[`list`,`value`]},append:{fn:(e,t)=>dm(e,t),argTypes:[`list`,`value`]},sortAlpha:{fn:e=>jm(e),argTypes:[`list`],returnType:`list`},push:{fn:(e,t)=>dm(e,t),argTypes:[`list`,`value`]},tuple:{fn:(...e)=>Em(...e),argTypes:[`value`]},dig:{fn:(...e)=>_m(...e),argTypes:[`value`]},all:{fn:(...e)=>lm(...e),argTypes:[`truthy`],returnType:`bool`},any:{fn:(...e)=>um(...e),argTypes:[`truthy`],returnType:`bool`}}}function Fm(...e){return e.reduce((e,t)=>e+t,0)}function Im(e){return e+1}function Lm(e){return e+1}function Rm(...e){return e.reduce((e,t)=>e+t,0)}function zm(e){return Math.ceil(e)}function Bm(e,t){return Math.trunc(e/t)}function Vm(e,t){return e/t}function Hm(e){return Math.floor(e)}function Um(...e){return e.reduce((e,t)=>t>e?t:e,-1/0)}function Wm(...e){return e.reduce((e,t)=>Math.max(e,t),-1/0)}function Gm(...e){return e.reduce((e,t)=>t<e?t:e,1/0)}function Km(...e){return e.reduce((e,t)=>Math.min(e,t),1/0)}function qm(e,t){return e%t}function Jm(...e){return e.reduce((e,t)=>e*t,1)}function Ym(...e){return e.reduce((e,t)=>e*t,1)}function Xm(e,t=0){let n=10**t;return Math.sign(e)*Math.round(Math.abs(e)*n)/n}function Zm(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 Qm(...e){let t=1;switch(e.length){case 0:return``;case 1:{let n=e[0];return n<1&&(t=-1),Zm(1,n+t,t).join(` `)}case 2:{let t=e[0],n=e[1],r=n<t?-1:1;return Zm(t,n+r,r).join(` `)}case 3:{let n=e[0],r=e[1],i=e[2];return i<n&&(t=-1,r>0)?``:Zm(n,i+t,r).join(` `)}default:return``}}function $m(e,t){return e-t}function eh(e,t){return e-t}function th(e){return Zm(0,e,e<0?-1:1)}function nh(){return{add:{fn:(...e)=>Fm(...e),argTypes:[`int`]},sub:{fn:(e,t)=>$m(e,t),argTypes:[`int`,`int`]},mul:{fn:(...e)=>Jm(...e),argTypes:[`int`]},div:{fn:(e,t)=>Bm(e,t),argTypes:[`int`,`int`]},mod:{fn:(e,t)=>qm(e,t),argTypes:[`int`,`int`]},min:{fn:(...e)=>Gm(...e),argTypes:[`int`]},max:{fn:(...e)=>Um(...e),argTypes:[`int`]},floor:{fn:e=>Hm(e),argTypes:[`float`]},ceil:{fn:e=>zm(e),argTypes:[`float`]},round:{fn:(e,t)=>Xm(e,t),argTypes:[`float`,`int`]},addf:{fn:(...e)=>Rm(...e),argTypes:[`float`]},subf:{fn:(e,t)=>eh(e,t),argTypes:[`float`,`float`]},mulf:{fn:(...e)=>Ym(...e),argTypes:[`float`]},divf:{fn:(e,t)=>Vm(e,t),argTypes:[`float`,`float`]},add1:{fn:e=>Im(e),argTypes:[`int`]},add1f:{fn:e=>Lm(e),argTypes:[`float`]},maxf:{fn:(...e)=>Wm(...e),argTypes:[`float`]},minf:{fn:(...e)=>Km(...e),argTypes:[`float`]},biggest:{fn:(...e)=>Um(...e),argTypes:[`int`]},seq:{fn:(...e)=>Qm(...e),argTypes:[`int`],returnType:`string`},until:{fn:e=>th(e),argTypes:[`int`],returnType:`list`},untilStep:{fn:(e,t,n)=>Zm(e,t,n),argTypes:[`int`,`int`,`int`],returnType:`list`}}}Array.from({length:95},(e,t)=>String.fromCharCode(t+32)).join(``);function rh(e,t){return t.length<=e||e<4?t:`${t.slice(0,e-3)}...`}function ih(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},ah=/^[-_\s]$/,oh=/^\p{P}$/u,sh=/^\p{L}$/u,ch=/^\p{Lu}$/u,lh=/^\p{N}$/u;function uh(e){return e!==void 0&&ah.test(e)}function dh(e){return e!==void 0&&sh.test(e)}function fh(e){return e!==void 0&&ch.test(e)}function ph(e){return e!==void 0&&lh.test(e)}function mh(e){return e!==void 0&&oh.test(e)}function hh(e,t){if(t>=e.length)return{word:{wt:q.Invalid,text:``},next:t};let n=e[t],r=t+1;if(uh(n)){for(;r<e.length&&uh(e[r]);)r++;return{word:{wt:q.Connector,text:e.slice(t,r).join(``)},next:r}}if(mh(n)){for(;r<e.length&&mh(e[r]);)r++;return{word:{wt:q.Punct,text:e.slice(t,r).join(``)},next:r}}if(fh(n)){if(r>=e.length)return{word:{wt:q.UpperCase,text:n},next:r};if(fh(e[r])){let n=r;for(;n<e.length&&fh(e[n]);)n++;return n<e.length&&dh(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(dh(e[r])){let n=r+1;for(;n<e.length&&dh(e[n])&&!fh(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(dh(n)){for(;r<e.length&&dh(e[r])&&!fh(e[r]);)r++;return{word:{wt:q.Alphabet,text:e.slice(t,r).join(``)},next:r}}if(ph(n)){for(;r<e.length&&ph(e[r]);)r++;return{word:{wt:q.Number,text:e.slice(t,r).join(``)},next:r}}for(;r<e.length&&!uh(e[r])&&!dh(e[r])&&!ph(e[r])&&!mh(e[r]);)r++;return{word:{wt:q.Other,text:e.slice(t,r).join(``)},next:r}}function gh(e,t,n){if(t.wt!==q.UpperCase&&t.wt!==q.Connector){e.push(t.text);return}for(let r of t.text)uh(r)?e.push(n):fh(r)?e.push(r.toLowerCase()):e.push(r)}function _h(e,t){if(e.length===0)return``;let n=Array.from(e),r=[],{word:i,next:a}=hh(n,0);for(;a<n.length;){i.wt!==q.Connector&&gh(r,i,t);let e=i,o=i;if({word:i,next:a}=hh(n,a),e.wt===q.Number){for(;i.wt===q.Alphabet||i.wt===q.Number;)gh(r,i,t),{word:i,next:a}=hh(n,a);i.wt!==q.Invalid&&i.wt!==q.Punct&&i.wt!==q.Connector&&r.push(t);continue}if(e.wt===q.Connector){gh(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}=hh(n,a),i.wt!==q.Alphabet){gh(r,s,t),i.wt!==q.Connector&&i.wt!==q.Punct&&r.push(t);continue}for(r.push(t),gh(r,s,t);i.wt===q.Alphabet||i.wt===q.Number;)gh(r,i,t),{word:i,next:a}=hh(n,a);i.wt!==q.Invalid&&i.wt!==q.Connector&&i.wt!==q.Punct&&r.push(t)}return gh(r,i,t),r.join(``).toLowerCase()}function vh(e){if(e.length===0)return``;let t=Array.from(e),n=[],r=0,i=``;for(;r<t.length;){if(i=t[r],r++,!uh(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++,uh(i)&&uh(e)){n.push(e);continue}uh(e)?i=i.toUpperCase():(i=i.toLowerCase(),n.push(e))}return n.push(i),n.join(``)}function yh(e){return vh(e)}function bh(...e){return e.join(` `)}function xh(e,t){return t.includes(e)}function Sh(e,t){return t.startsWith(e)}function Ch(e,t){return t.endsWith(e)}function wh(e,t){let n=` `.repeat(Math.max(0,e));return t.split(`
|
|
51
51
|
`).map(e=>n+e).join(`
|
|
52
|
-
`)}function
|
|
53
|
-
`,t)}function
|
|
54
|
-
`)){let n=``;for(let i of t.split(/\s+/))i.length!==0&&(n.length===0?n=i:n.length+1+i.length<=e?n+=` ${i}`:(r.push(n),n=i));n.length>0&&r.push(n)}return r.join(t)}function Bh(e,t,n){return zh(e,t,n)}function Vh(){return{abbrev:{fn:(e,t)=>Bm(e,t),argTypes:[`int`,`string`]},abbrevboth:{fn:(e,t,n)=>Vm(e,t,n),argTypes:[`int`,`int`,`string`]},camelcase:{fn:e=>nh(e),argTypes:[`string`],returnType:`string`},cat:{fn:(...e)=>rh(...e),argTypes:[`string`]},contains:{fn:(e,t)=>ih(e,t),argTypes:[`string`,`string`]},hasPrefix:{fn:(e,t)=>ah(e,t),argTypes:[`string`,`string`]},hasSuffix:{fn:(e,t)=>oh(e,t),argTypes:[`string`,`string`]},indent:{fn:(e,t)=>sh(e,t),argTypes:[`int`,`string`]},initials:{fn:e=>ch(e),argTypes:[`string`]},join:{fn:(e,t)=>lh(e,t),argTypes:[`string`,`list`]},kebabcase:{fn:e=>dh(e),argTypes:[`string`],returnType:`string`},lower:{fn:e=>fh(e),argTypes:[`string`]},nindent:{fn:(e,t)=>ph(e,t),argTypes:[`int`,`string`]},nospace:{fn:e=>mh(e),argTypes:[`string`],returnType:`string`},plural:{fn:(e,t,n)=>hh(e,t,n),argTypes:[`string`,`string`,`int`],returnType:`string`},quote:{fn:(...e)=>gh(...e),argTypes:[`string`]},regexQuoteMeta:{fn:e=>_h(e),argTypes:[`string`],returnType:`string`},repeat:{fn:(e,t)=>vh(e,t),argTypes:[`int`,`string`]},replace:{fn:(e,t,n)=>yh(e,t,n),argTypes:[`string`,`string`,`string`]},snakecase:{fn:e=>bh(e),argTypes:[`string`],returnType:`string`},split:{fn:(e,t)=>xh(e,t),argTypes:[`string`,`string`]},splitList:{fn:(e,t)=>Sh(e,t),argTypes:[`string`,`string`]},splitn:{fn:(e,t,n)=>Ch(e,t,n),argTypes:[`string`,`int`,`string`],returnType:`dict`},squote:{fn:(...e)=>Th(...e),argTypes:[`string`]},substr:{fn:(e,t,n)=>Eh(e,t,n),argTypes:[`int`,`int`,`string`]},swapcase:{fn:e=>Dh(e),argTypes:[`string`],returnType:`string`},title:{fn:e=>Ah(e),argTypes:[`string`]},trim:{fn:e=>jh(e),argTypes:[`string`]},trimAll:{fn:(e,t)=>Mh(e,t),argTypes:[`string`,`string`]},trimPrefix:{fn:(e,t)=>Nh(e,t),argTypes:[`string`,`string`]},trimSuffix:{fn:(e,t)=>Ph(e,t),argTypes:[`string`,`string`]},trunc:{fn:(e,t)=>Fh(e,t),argTypes:[`int`,`string`]},untitle:{fn:e=>Ih(e),argTypes:[`string`]},upper:{fn:e=>Lh(e),argTypes:[`string`]},wrap:{fn:(e,t)=>Rh(e,t),argTypes:[`int`,`string`]},wrapWith:{fn:(e,t,n)=>Bh(e,t,n),argTypes:[`int`,`string`,`string`]}}}function Hh(e){return e}function Uh(e,t,n){return n===void 0?gl+ml(e)+`.`+ml(t):Wh(n)}function Wh(e){return gl+ml(e)}function Gh(e,t){return e+`.`+t}function Kh(e){return e+`.page`}const qh=[`closeOnPick`,`paged`,`key`,`distribution`],Jh=e=>qh.includes(e),Yh=`"closeOnPick" (bool, default false), "paged" (bool, default true), "key" (string, accordion grouping), "distribution" (one of ${Pi.map(e=>`"${e}"`).join(`, `)}; default "van-der-corput")`;function Xh(e){for(let t of Object.keys(e))if(!Jh(t))throw Error(`unknown {{ menu }} option "${t}" — the options dict takes ${Yh}`);let t=(t,n)=>{let r=e[t];if(r===void 0)return n;if(typeof r!=`boolean`)throw Error(`{{ menu }} option "${t}" must be a boolean, got ${JSON.stringify(r)} (e.g. (dict "${t}" ${String(!n)}))`);return r},n=e.key;if(n!==void 0&&typeof n!=`string`)throw Error(`{{ menu }} option "key" must be a string naming the accordion group, got ${JSON.stringify(n)}`);if(n===``)throw Error(`{{ menu }} has an empty accordion key — a shared key must be a non-empty name (or omit "key" for an independent menu)`);let r=e.distribution;if(r!==void 0&&!Fi(r))throw Error(`{{ menu }} option "distribution" must be one of: ${Pi.join(`, `)}; got ${JSON.stringify(r)}`);return{closeOnPick:t(`closeOnPick`,!1),paged:t(`paged`,!0),key:n,distribution:Li(r)}}const Zh=`menu`,Qh=`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`,$h=e=>e.kind===`call`&&e.name===`dict`,eg=e=>e.kind===`literal`&&typeof e.value!=`object`,tg=e=>ec(``,e,2)===void 0;function ng(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&&$h(i)?i:void 0,o=a===void 0?r:r.slice(0,-1);if(o.some($h))return t(`whose options (dict …) is not its last argument — ${Qh}`);if(i!==void 0&&a===void 0&&!eg(i)&&tg(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=ec(`whose trigger`,o.length,2);if(s!==void 0)return t(`${s} — ${Qh}`);let c=a===void 0?{}:Np(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=Xh(c)}catch(e){return t(`with invalid options — ${e.message}`)}let u=l.key;if(u!==void 0){let e=xl(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 "${Wh(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 rg(e){let t=Ud({fromString:e=>e});try{return t.parse(e).referencedCalls().filter(e=>e.name===Zh).map(ng)}catch{return`parse-failed`}}function ig(e){let t=Ud({fromString:e=>e});try{return t.parse(e).referencedFunctions().has(Zh)}catch{return!1}}function ag(e,t,n){e.issues.push({path:t,message:n,line:W(e.source,[`root`])})}function og(e,t){Sl(e,t,gl,`{{ menu }} helpers`);for(let[n,r]of Object.entries(t.helpers??{}))ig(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`&&ig(i)&&ag(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 Qo(Gs(t.root)))typeof n.when==`string`&&ig(n.when)&&ag(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||!ig(s))continue;let n=rg(s);if(n!==`parse-failed`)for(let s of n){if(s.kind===`issue`){ag(e,`segments.${t}`,`segment "${t}" has a {{ menu }} ${s.message}.`);continue}let{apply:n,options:c}=s;if(n===``){ag(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=Hh(n);if(l===`closed`){ag(e,`segments.${t}`,`segment "${t}" has a {{ menu }} whose apply action is named "${Qs}", which collides with the menu's closed-state sentinel and leaves it unopenable. Rename the action.`);continue}let u=Uh(t,n,c.key),d=Kh(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){ag(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=Gh(u,l);if(a.has(m)){ag(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]=cc(u,l)}}if(r.size===0)return;let s={};for(let e of r){s[e]=sc(e,Qs);let t=Kh(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 sg=Ud({fromString:e=>e}),cg=`edit.mode`,lg=`edit.toggle`,ug=`open`,dg={variable:cg,key:cg,member:ug},fg=ic(dg);function pg(e){try{return sg.parse(e).referencedCalls().some(e=>e.name===`action`&&e.args[0]===`edit.toggle`)}catch{return!1}}function mg(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`&&pg(e))return!0;return!1}function hg(e,t){if(Sl(e,t,_l,`edit mode`),!mg(t))return;let n={[cg]:sc(cg,Qs)},r={[lg]:cc(cg,ug)};t.variables={...t.variables??{},...n},t.actions={...t.actions??{},...r}}const gg=/"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|`[^`]*`/g;function*_g(e){let t=e.indexOf(`{{`);for(;t!==-1;){let n=``,r=t+2;for(;r<e.length&&!e.startsWith(`}}`,r);){if(e.startsWith(`/*`,r)){let t=e.indexOf(`*/`,r+2);r=t===-1?e.length:t+2;continue}let t=r,i=e[r];if(r+=1,i===`"`||i===`'`||i==="`"){for(;r<e.length&&e[r]!==i;)r+=e[r]===`\\`&&i!=="`"?2:1;r+=1}n+=e.slice(t,r)}if(r>=e.length)return;yield n,t=e.indexOf(`{{`,r+2)}}const vg=`[A-Za-z_]\\w*(?:\\.[A-Za-z_]\\w*)*`,yg=RegExp(`^(?:(\\$)(?:\\.(${vg}))?|\\.(${vg})?)(?=[\\s)]|$)`);function bg(e,t){let n=yg.exec(e.trimStart());return n===null?null:n[1]===void 0?t===null?null:n[3]===void 0?t:`${t}${n[3]}.`:n[2]===void 0?``:`${n[2]}.`}const xg=/^(\w+)\b\s*([\s\S]*)$/;function*Sg(e){let t=[``];for(let n of _g(e)){let e=n.replace(/^-(?=\s)/,``).trim(),[,r=``,i=``]=xg.exec(e)??[],a=t[t.length-1],o=t.length>1?t[t.length-2]:a;if(r===`end`){t.length>1&&t.pop();continue}if(r===`else`){yield{code:e,dot:o};let n=/^with\b([\s\S]*)$/.exec(i);t[t.length-1]=n===null?o:bg(n[1],o);continue}yield{code:e,dot:a},r===`if`&&t.push(a),r===`with`&&t.push(bg(i,a)),(r===`range`||r===`define`||r===`block`)&&t.push(null)}}const Cg=RegExp(`(?<![A-Za-z0-9_)$])(\\$?)\\.(${vg})`,`g`);function*wg(e,t){let n=e.replace(gg,``);for(let e of[...n.matchAll(Cg)])e[1]===`$`?yield e[2]:t!==null&&(yield`${t}${e[2]}`)}const Tg=/\btemplate\s+$/;function*Eg(e,t){let n=0;for(let r of[...e.matchAll(gg)]){let i=r.index+r[0].length;if(Tg.test(e.slice(n,r.index))){let n=bg(e.slice(i),t);n!==null&&(yield{name:r[0].slice(1,-1),at:n})}n=i}}function Dg(e,t){let n=new Map,r=new Set,i=(e,a,o,s)=>{for(let{code:c,dot:l}of[...Sg(e)]){for(let e of wg(c,l))n.has(a+e)||n.set(a+e,o);for(let e of[...Eg(c,l)]){let n=t[e.name],o=a+e.at,c=`${e.name}\0${o}`;n===void 0||s.has(e.name)||r.has(c)||(r.add(c),i(n,o,e.name,new Set([...s,e.name])))}}};return i(e,``,null,new Set),n}const Og=/\baction\s+$/;function kg(e){let t=new Set;for(let n of _g(e)){let e=0,r;for(gg.lastIndex=0;(r=gg.exec(n))!==null;)Og.test(n.slice(e,r.index))&&t.add(r[0].slice(1,-1)),e=r.index+r[0].length}return t}const Ag=/\b(picker|menu|carousel)\s+$/;function jg(e){let t=new Set;for(let n of _g(e)){let e=0,r=0,i;for(gg.lastIndex=0;(i=gg.exec(n))!==null;){let a=Ag.exec(n.slice(e,i.index));a!==null&&(r=a[1]===`picker`?2:1),r>0&&(t.add(i[0].slice(1,-1)),r--),e=i.index+i[0].length}}return t}function Mg(e,t){if(t.names.has(e))return!0;let n=`${e}.`;for(let e of t.names)if(e.startsWith(n))return!0;for(let n of t.documents)if(e.startsWith(`${n}.`))return!0;return!1}function Ng(e){let t=new Set,n=new Set,r=(e,r)=>{t.add(e),Pg(r)&&n.add(e)};for(let[t,n]of Object.entries(e.variables))r(t,n);for(let[t,n]of Object.entries(e.segments))for(let[e,i]of Object.entries(n.vars??{}))r(`${t}.${e}`,i);return{names:t,documents:n,helpers:e.helpers}}function Pg(e){return(e.kind===`shell`||e.kind===`file`)&&rs(e.parse)===`json`}var Fg=pe((e=>{function t(e){var t=[...arguments].slice(1);throw Error(typeof e==`number`?`[MobX] minified error nr: `+e+(t.length?` `+t.map(String).join(`,`):``)+`. Find the full error at: https://github.com/mobxjs/mobx/blob/main/packages/mobx/src/errors.ts`:`[MobX] `+e)}function n(){return typeof globalThis<`u`?globalThis:typeof window<`u`?window:typeof global<`u`?global:typeof self<`u`?self:nn}function r(){P||t(`Proxy not available`)}function i(e){var t=!1;return function(){if(!t)return t=!0,e.apply(this,arguments)}}function a(e){return typeof e==`function`}function o(e){switch(typeof e){case`string`:case`symbol`:case`number`:return!0}return!1}function s(e){return typeof e==`object`&&!!e}function c(e){if(!s(e))return!1;var t=Object.getPrototypeOf(e);if(t==null)return!0;var n=Object.hasOwnProperty.call(t,`constructor`)&&t.constructor;return typeof n==`function`&&n.toString()===ln}function l(e){var t=e?.constructor;return!!t&&(t.name===`GeneratorFunction`||t.displayName===`GeneratorFunction`)}function u(e,t,n){an(e,t,{enumerable:!1,writable:!0,configurable:!0,value:n})}function d(e,t,n){an(e,t,{enumerable:!1,writable:!1,configurable:!0,value:n})}function f(e,t){var n=`isMobX`+e;return t.prototype[n]=!0,function(e){return s(e)&&!0===e[n]}}function p(e){return e!=null&&Object.prototype.toString.call(e)===`[object Map]`}function m(e){return e!=null&&Object.prototype.toString.call(e)===`[object Set]`}function h(e){return e===null?null:typeof e==`object`?``+e:e}function g(e,t){return on.hasOwnProperty.call(e,t)}function _(e,t){return!!(e&t)}function v(e,t,n){return n?e|=t:e&=~t,e}function y(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function b(e,t,n){if(ne())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var i=new(e.bind.apply(e,r));return n&&re(i,n.prototype),i}function x(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,ie(r.key),r)}}function S(e,t,n){return t&&x(e.prototype,t),n&&x(e,n),Object.defineProperty(e,`prototype`,{writable:!1}),e}function C(e,t){var n=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if(typeof e==`string`)return y(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(e,t):void 0}}(e))||t&&e&&typeof e.length==`number`){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw TypeError(`Invalid attempt to iterate non-iterable instance.
|
|
52
|
+
`)}function Th(e){let t=new TextEncoder;return e.split(/\s+/).filter(e=>e.length>0).map(e=>String.fromCharCode(...t.encode(e).slice(0,1))).join(``)}function Eh(e,t){let n=[];for(let e of t){if(typeof e==`object`&&e)throw gm(`join`,2,`list of strings/primitives`,`list element of type ${Dh(e)}`);n.push(String(e))}return n.join(e)}function Dh(e){return Array.isArray(e)?`array`:e instanceof Map?`Map`:e instanceof Set?`Set`:`object`}function Oh(e){return _h(e,`-`)}function kh(e){return e.toLowerCase()}function Ah(e,t){return`\n${wh(e,t)}`}function jh(e){return e.replace(/\s+/g,``)}function Mh(e,t,n){return n===1?e:t}function Nh(...e){return e.map(e=>`"${e}"`).join(` `)}function Ph(e){return e.replace(/[\\.+*?()|[\]{}^$]/g,`\\$&`)}function Fh(e,t){return t.repeat(Math.max(0,e))}function Ih(e,t,n){return n.split(e).join(t)}function Lh(e){return _h(e,`_`)}function Rh(e,t){let n=t.split(e),r={};for(let e=0;e<n.length;e++)r[`_${e}`]=n[e];return r}function zh(e,t){return t.split(e)}function Bh(e,t,n){let r=Vh(n,e,t),i={};for(let e=0;e<r.length;e++)i[`_${e}`]=r[e]??``;return i}function Vh(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 Hh(...e){return e.map(e=>`'${e}'`).join(` `)}function Uh(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 Wh(e){let t=``;for(let n of e)Gh(n)?t+=n.toLowerCase():Kh(n)?t+=n.toUpperCase():t+=n;return t}function Gh(e){return e!==e.toLowerCase()&&e===e.toUpperCase()}function Kh(e){return e!==e.toUpperCase()&&e===e.toLowerCase()}function qh(e){return e.replace(/\b([a-zA-Z])/g,e=>e.toUpperCase())}function Jh(e){return e.trim()}function Yh(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 Xh(e,t){return t.startsWith(e)?t.slice(e.length):t}function Zh(e,t){return t.endsWith(e)?t.slice(0,t.length-e.length):t}function Qh(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 $h(e){return e.replace(/\b([A-Z])/g,e=>e.toLowerCase())}function eg(e){return e.toUpperCase()}function tg(e,t){return ng(e,`
|
|
53
|
+
`,t)}function ng(e,t,n){if(e<=0)return n;let r=[];for(let t of n.split(`
|
|
54
|
+
`)){let n=``;for(let i of t.split(/\s+/))i.length!==0&&(n.length===0?n=i:n.length+1+i.length<=e?n+=` ${i}`:(r.push(n),n=i));n.length>0&&r.push(n)}return r.join(t)}function rg(e,t,n){return ng(e,t,n)}function ig(){return{abbrev:{fn:(e,t)=>rh(e,t),argTypes:[`int`,`string`]},abbrevboth:{fn:(e,t,n)=>ih(e,t,n),argTypes:[`int`,`int`,`string`]},camelcase:{fn:e=>yh(e),argTypes:[`string`],returnType:`string`},cat:{fn:(...e)=>bh(...e),argTypes:[`string`]},contains:{fn:(e,t)=>xh(e,t),argTypes:[`string`,`string`]},hasPrefix:{fn:(e,t)=>Sh(e,t),argTypes:[`string`,`string`]},hasSuffix:{fn:(e,t)=>Ch(e,t),argTypes:[`string`,`string`]},indent:{fn:(e,t)=>wh(e,t),argTypes:[`int`,`string`]},initials:{fn:e=>Th(e),argTypes:[`string`]},join:{fn:(e,t)=>Eh(e,t),argTypes:[`string`,`list`]},kebabcase:{fn:e=>Oh(e),argTypes:[`string`],returnType:`string`},lower:{fn:e=>kh(e),argTypes:[`string`]},nindent:{fn:(e,t)=>Ah(e,t),argTypes:[`int`,`string`]},nospace:{fn:e=>jh(e),argTypes:[`string`],returnType:`string`},plural:{fn:(e,t,n)=>Mh(e,t,n),argTypes:[`string`,`string`,`int`],returnType:`string`},quote:{fn:(...e)=>Nh(...e),argTypes:[`string`]},regexQuoteMeta:{fn:e=>Ph(e),argTypes:[`string`],returnType:`string`},repeat:{fn:(e,t)=>Fh(e,t),argTypes:[`int`,`string`]},replace:{fn:(e,t,n)=>Ih(e,t,n),argTypes:[`string`,`string`,`string`]},snakecase:{fn:e=>Lh(e),argTypes:[`string`],returnType:`string`},split:{fn:(e,t)=>Rh(e,t),argTypes:[`string`,`string`]},splitList:{fn:(e,t)=>zh(e,t),argTypes:[`string`,`string`]},splitn:{fn:(e,t,n)=>Bh(e,t,n),argTypes:[`string`,`int`,`string`],returnType:`dict`},squote:{fn:(...e)=>Hh(...e),argTypes:[`string`]},substr:{fn:(e,t,n)=>Uh(e,t,n),argTypes:[`int`,`int`,`string`]},swapcase:{fn:e=>Wh(e),argTypes:[`string`],returnType:`string`},title:{fn:e=>qh(e),argTypes:[`string`]},trim:{fn:e=>Jh(e),argTypes:[`string`]},trimAll:{fn:(e,t)=>Yh(e,t),argTypes:[`string`,`string`]},trimPrefix:{fn:(e,t)=>Xh(e,t),argTypes:[`string`,`string`]},trimSuffix:{fn:(e,t)=>Zh(e,t),argTypes:[`string`,`string`]},trunc:{fn:(e,t)=>Qh(e,t),argTypes:[`int`,`string`]},untitle:{fn:e=>$h(e),argTypes:[`string`]},upper:{fn:e=>eg(e),argTypes:[`string`]},wrap:{fn:(e,t)=>tg(e,t),argTypes:[`int`,`string`]},wrapWith:{fn:(e,t,n)=>rg(e,t,n),argTypes:[`int`,`string`,`string`]}}}function ag(e){return e}function og(e,t,n){return n===void 0?xl+yl(e)+`.`+yl(t):sg(n)}function sg(e){return xl+yl(e)}function cg(e,t){return e+`.`+t}function lg(e){return e+`.page`}const ug=[`closeOnPick`,`paged`,`key`,`distribution`],dg=e=>ug.includes(e),fg=`"closeOnPick" (bool, default false), "paged" (bool, default true), "key" (string, accordion grouping), "distribution" (one of ${Pi.map(e=>`"${e}"`).join(`, `)}; default "van-der-corput")`;function pg(e){for(let t of Object.keys(e))if(!dg(t))throw Error(`unknown {{ menu }} option "${t}" — the options dict takes ${fg}`);let t=(t,n)=>{let r=e[t];if(r===void 0)return n;if(typeof r!=`boolean`)throw Error(`{{ menu }} option "${t}" must be a boolean, got ${JSON.stringify(r)} (e.g. (dict "${t}" ${String(!n)}))`);return r},n=e.key;if(n!==void 0&&typeof n!=`string`)throw Error(`{{ menu }} option "key" must be a string naming the accordion group, got ${JSON.stringify(n)}`);if(n===``)throw Error(`{{ menu }} has an empty accordion key — a shared key must be a non-empty name (or omit "key" for an independent menu)`);let r=e.distribution;if(r!==void 0&&!Fi(r))throw Error(`{{ menu }} option "distribution" must be one of: ${Pi.join(`, `)}; got ${JSON.stringify(r)}`);return{closeOnPick:t(`closeOnPick`,!1),paged:t(`paged`,!0),key:n,distribution:Li(r)}}const mg=`default`,hg={};function gg(e){return[...new Set([mg,...Object.keys(e)])]}function _g(e,t,n){return Ca(void 0,e,t,mg,n)}function vg(e,t){let n={[mg]:hg,...e}[t];if(n===void 0)throw Error(`Preset "${t}" is not declared in this config — effectivePresetName collapses unknown names to "${mg}", which always resolves; a miss here means a raw name reached this function without going through that resolution`);return n}function yg(e,t){let n=vg(e.presets,t).root??Gs;return{node:Ys(Qs(n,e.root)),path:$s(n)?`presets.${t}.root`:`root`}}function bg(e,t){return{...e.globals,...vg(e.presets,t).globals}}const xg=`menu`,Sg=`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`,Cg=e=>e.kind===`call`&&e.name===`dict`,wg=e=>e.kind===`literal`&&typeof e.value!=`object`,Tg=e=>ac(``,e,2)===void 0;function Eg(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&&Cg(i)?i:void 0,o=a===void 0?r:r.slice(0,-1);if(o.some(Cg))return t(`whose options (dict …) is not its last argument — ${Sg}`);if(i!==void 0&&a===void 0&&!wg(i)&&Tg(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=ac(`whose trigger`,o.length,2);if(s!==void 0)return t(`${s} — ${Sg}`);let c=a===void 0?{}:Xp(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=pg(c)}catch(e){return t(`with invalid options — ${e.message}`)}let u=l.key;if(u!==void 0){let e=El(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 "${sg(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 Dg(e){let t=sf({fromString:e=>e});try{return t.parse(e).referencedCalls().filter(e=>e.name===xg).map(Eg)}catch{return`parse-failed`}}function Og(e){let t=sf({fromString:e=>e});try{return t.parse(e).referencedFunctions().has(xg)}catch{return!1}}function kg(e,t,n){e.issues.push({path:t,message:n,line:W(e.source,[`root`])})}function Ag(e,t){Dl(e,t,xl,`{{ menu }} helpers`);for(let[n,r]of Object.entries(t.helpers??{}))Og(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`&&Og(i)&&kg(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 ts(Xs(t.root)))typeof n.when==`string`&&Og(n.when)&&kg(e,`root`,`a layout node's "when" predicate uses {{ menu }} — a menu is only valid in a segment's "template", not a node predicate. Move it into a segment.`);for(let[t,{template:r}]of Object.entries(n)){if(r===void 0||!Og(r))continue;let n=Dg(r);if(n!==`parse-failed`)for(let r of n){let n=r.kind===`issue`?r.message:jg(r.apply);n!==void 0&&kg(e,`segments.${t}`,`segment "${t}" has a {{ menu }} ${n}.`)}}}function jg(e){if(e===``)return`with an empty apply-action name — an empty member aliases the absent-state sentinel ("") so the menu would render open before any click. Name the apply action`;if(ag(e)===`closed`)return`whose apply action is named "${rc}", which collides with the menu's closed-state sentinel and leaves it unopenable. Rename the action`}function Mg(e,t){let n={},r={},i=new Map,a=new Set,o=(e,n)=>{let r=`segments.${e}`;a.has(`${r}\0${n}`)||(a.add(`${r}\0${n}`),t.push({path:r,message:n}))};for(let t of gg(e.presets)){let a=new Map,s=new Map;for(let c of ts(yg(e,t).node)){if(c.kind!==`segment`)continue;let t=e.segments[c.name];if(t===void 0)continue;i.has(c.name)||i.set(c.name,Dg(t.template));let l=i.get(c.name);if(l===`parse-failed`)continue;let u=Zo(c);for(let[e,t]of l.entries()){if(t.kind===`issue`||jg(t.apply)!==void 0)continue;let{apply:i,options:l}=t,d=ag(i),f=og(u,i,l.key),p=lg(f),m=l.key===void 0?`ind ${u} ${i}`:`key ${l.key}`,h=[f,p].find(e=>{let t=a.get(e);return t!==void 0&&t!==m});if(h!==void 0){o(c.name,`two {{ menu }} disclosures normalize to the same state key ("${h}") but were declared differently — distinct names that differ only by non-alphanumeric characters (e.g. "a-b" vs "a_b") collapse to one key and would silently share open-state. Rename so they don't collide.`);continue}a.set(f,m),a.set(p,m);let g=cg(f,d),_=`${c.name}\0${e}`,v=s.get(g);if(v!==void 0&&v!==_){o(c.name,`two {{ menu }} disclosures resolve to the same identity ("${g}") — ${l.key===void 0?`a segment cannot contain two menus over the same apply action "${i}"`:`menus sharing key "${l.key}" must have distinct apply actions`}.`);continue}s.set(g,_),r[g]=pc(f,d),n[f]=fc(f,rc),n[p]={kind:`state`,key:p,default:`0`},r[p]={set:p,int:!0}}}}return{...e,variables:{...e.variables,...n},actions:{...e.actions,...r}}}const Ng=sf({fromString:e=>e}),Pg=`edit.mode`,Fg=`edit.toggle`,Ig=`open`,Lg={variable:Pg,key:Pg,member:Ig},Rg=lc(Lg);function zg(e){try{return Ng.parse(e).referencedCalls().some(e=>e.name===`action`&&e.args[0]===`edit.toggle`)}catch{return!1}}function Bg(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`&&zg(e))return!0;return!1}function Vg(e,t){if(Dl(e,t,Sl,`edit mode`),!Bg(t))return;let n={[Pg]:fc(Pg,rc)},r={[Fg]:pc(Pg,Ig)};t.variables={...t.variables??{},...n},t.actions={...t.actions??{},...r}}const Hg=/"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|`[^`]*`/g;function*Ug(e){let t=e.indexOf(`{{`);for(;t!==-1;){let n=``,r=t+2;for(;r<e.length&&!e.startsWith(`}}`,r);){if(e.startsWith(`/*`,r)){let t=e.indexOf(`*/`,r+2);r=t===-1?e.length:t+2;continue}let t=r,i=e[r];if(r+=1,i===`"`||i===`'`||i==="`"){for(;r<e.length&&e[r]!==i;)r+=e[r]===`\\`&&i!=="`"?2:1;r+=1}n+=e.slice(t,r)}if(r>=e.length)return;yield n,t=e.indexOf(`{{`,r+2)}}const Wg=`[A-Za-z_]\\w*(?:\\.[A-Za-z_]\\w*)*`,Gg=RegExp(`^(?:(\\$)(?:\\.(${Wg}))?|\\.(${Wg})?)(?=[\\s)]|$)`);function Kg(e,t){let n=Gg.exec(e.trimStart());return n===null?null:n[1]===void 0?t===null?null:n[3]===void 0?t:`${t}${n[3]}.`:n[2]===void 0?``:`${n[2]}.`}const qg=/^(\w+)\b\s*([\s\S]*)$/;function*Jg(e){let t=[``];for(let n of Ug(e)){let e=n.replace(/^-(?=\s)/,``).trim(),[,r=``,i=``]=qg.exec(e)??[],a=t[t.length-1],o=t.length>1?t[t.length-2]:a;if(r===`end`){t.length>1&&t.pop();continue}if(r===`else`){yield{code:e,dot:o};let n=/^with\b([\s\S]*)$/.exec(i);t[t.length-1]=n===null?o:Kg(n[1],o);continue}yield{code:e,dot:a},r===`if`&&t.push(a),r===`with`&&t.push(Kg(i,a)),(r===`range`||r===`define`||r===`block`)&&t.push(null)}}const Yg=RegExp(`(?<![A-Za-z0-9_)$])(\\$?)\\.(${Wg})`,`g`);function*Xg(e,t){let n=e.replace(Hg,``);for(let e of[...n.matchAll(Yg)])e[1]===`$`?yield e[2]:t!==null&&(yield`${t}${e[2]}`)}const Zg=/\btemplate\s+$/;function*Qg(e,t){let n=0;for(let r of[...e.matchAll(Hg)]){let i=r.index+r[0].length;if(Zg.test(e.slice(n,r.index))){let n=Kg(e.slice(i),t);n!==null&&(yield{name:r[0].slice(1,-1),at:n})}n=i}}function $g(e,t){let n=new Map,r=new Set,i=(e,a,o,s)=>{for(let{code:c,dot:l}of[...Jg(e)]){for(let e of Xg(c,l))n.has(a+e)||n.set(a+e,o);for(let e of[...Qg(c,l)]){let n=t[e.name],o=a+e.at,c=`${e.name}\0${o}`;n===void 0||s.has(e.name)||r.has(c)||(r.add(c),i(n,o,e.name,new Set([...s,e.name])))}}};return i(e,``,null,new Set),n}const e_=/\baction\s+$/;function t_(e){let t=new Set;for(let n of Ug(e)){let e=0,r;for(Hg.lastIndex=0;(r=Hg.exec(n))!==null;)e_.test(n.slice(e,r.index))&&t.add(r[0].slice(1,-1)),e=r.index+r[0].length}return t}const n_=/\b(picker|menu|carousel)\s+$/;function r_(e){let t=new Set;for(let n of Ug(e)){let e=0,r=0,i;for(Hg.lastIndex=0;(i=Hg.exec(n))!==null;){let a=n_.exec(n.slice(e,i.index));a!==null&&(r=a[1]===`picker`?2:1),r>0&&(t.add(i[0].slice(1,-1)),r--),e=i.index+i[0].length}}return t}function i_(e,t){if(t.names.has(e))return!0;let n=`${e}.`;for(let e of t.names)if(e.startsWith(n))return!0;for(let n of t.documents)if(e.startsWith(`${n}.`))return!0;return!1}function a_(e){let t=new Set,n=new Set,r=(e,r)=>{t.add(e),o_(r)&&n.add(e)};for(let[t,n]of Object.entries(e.variables))r(t,n);for(let[t,n]of Object.entries(e.segments))for(let[e,i]of Object.entries(n.vars??{}))r(`${t}.${e}`,i);return{names:t,documents:n,helpers:e.helpers}}function o_(e){return(e.kind===`shell`||e.kind===`file`)&&os(e.parse)===`json`}var s_=pe((e=>{function t(e){var t=[...arguments].slice(1);throw Error(typeof e==`number`?`[MobX] minified error nr: `+e+(t.length?` `+t.map(String).join(`,`):``)+`. Find the full error at: https://github.com/mobxjs/mobx/blob/main/packages/mobx/src/errors.ts`:`[MobX] `+e)}function n(){return typeof globalThis<`u`?globalThis:typeof window<`u`?window:typeof global<`u`?global:typeof self<`u`?self:nn}function r(){P||t(`Proxy not available`)}function i(e){var t=!1;return function(){if(!t)return t=!0,e.apply(this,arguments)}}function a(e){return typeof e==`function`}function o(e){switch(typeof e){case`string`:case`symbol`:case`number`:return!0}return!1}function s(e){return typeof e==`object`&&!!e}function c(e){if(!s(e))return!1;var t=Object.getPrototypeOf(e);if(t==null)return!0;var n=Object.hasOwnProperty.call(t,`constructor`)&&t.constructor;return typeof n==`function`&&n.toString()===ln}function l(e){var t=e?.constructor;return!!t&&(t.name===`GeneratorFunction`||t.displayName===`GeneratorFunction`)}function u(e,t,n){an(e,t,{enumerable:!1,writable:!0,configurable:!0,value:n})}function d(e,t,n){an(e,t,{enumerable:!1,writable:!1,configurable:!0,value:n})}function f(e,t){var n=`isMobX`+e;return t.prototype[n]=!0,function(e){return s(e)&&!0===e[n]}}function p(e){return e!=null&&Object.prototype.toString.call(e)===`[object Map]`}function m(e){return e!=null&&Object.prototype.toString.call(e)===`[object Set]`}function h(e){return e===null?null:typeof e==`object`?``+e:e}function g(e,t){return on.hasOwnProperty.call(e,t)}function _(e,t){return!!(e&t)}function v(e,t,n){return n?e|=t:e&=~t,e}function y(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function b(e,t,n){if(ne())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var i=new(e.bind.apply(e,r));return n&&re(i,n.prototype),i}function x(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,ie(r.key),r)}}function S(e,t,n){return t&&x(e.prototype,t),n&&x(e,n),Object.defineProperty(e,`prototype`,{writable:!1}),e}function C(e,t){var n=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if(typeof e==`string`)return y(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(e,t):void 0}}(e))||t&&e&&typeof e.length==`number`){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw TypeError(`Invalid attempt to iterate non-iterable instance.
|
|
55
55
|
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function ee(){return(ee=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(null,arguments)}function te(e){return(te=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function w(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,re(e,t)}function ne(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch{}return(ne=function(){return!!e})()}function re(e,t){return(re=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function ie(e){var t=function(e){if(typeof e!=`object`||!e)return e;var t=e[Symbol.toPrimitive];if(t!==void 0){var n=t.call(e,`string`);if(typeof n!=`object`)return n;throw TypeError(`@@toPrimitive must return a primitive value.`)}return String(e)}(e);return typeof t==`symbol`?t:t+``}function T(e){var t=typeof Map==`function`?new Map:void 0;return(T=function(e){function n(){return b(e,arguments,te(this).constructor)}if(e===null||!function(e){try{return Function.toString.call(e).indexOf(`[native code]`)!==-1}catch{return typeof e==`function`}}(e))return e;if(typeof e!=`function`)throw TypeError(`Super expression must either be null or a function`);if(t!==void 0){if(t.has(e))return t.get(e);t.set(e,n)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),re(n,e)})(e)}function E(e){return Object.assign((function(t,n){if(oe(n))return e.t(t,n);ae(t,n,e)}),e)}function ae(e,t,n){g(e,mn)||u(e,mn,ee({},e[mn])),function(e){return e.i===`override`}(n)||(e[mn][t]=n)}function oe(e){return typeof e==`object`&&typeof e.kind==`string`}function se(e,t,n){t===void 0&&(t=un),n===void 0&&(n=un);var r=new hn(e);return t!==un&&dt(r,t),n!==un&&ft(r,n),r}function ce(e,t,n){return xt(e)?e:Array.isArray(e)?En.array(e,{name:n}):c(e)?En.object(e,void 0,{name:n}):p(e)?En.map(e,{name:n}):m(e)?En.set(e,{name:n}):typeof e!=`function`||ct(e)||vt(e)?e:l(e)?rr(e):Zn(n,e)}function le(e){return e}function ue(e,t){return{i:e,u:t,o:de,s:fe,t:pe}}function de(e,t,n,r){var i;return(i=this.u)!=null&&i.bound?this.s(e,t,n,!1)===null?0:1:r===e.h?this.s(e,t,n,!1)===null?0:2:ct(n.value)?1:(an(r,t,me(e,this,t,n,!1)),2)}function fe(e,t,n,r){var i=me(e,this,t,n);return e.l(t,i,r)}function pe(e,n){var r,i=n.kind,a=n.name,o=n.addInitializer,s=this,c=function(e){var t;return Ne(s.u?.name??a.toString(),e,(t=s.u?.autoAction)!=null&&t)};return i==`field`?function(e){var t,n=e;return ct(n)||(n=c(n)),(t=s.u)!=null&&t.bound&&((n=n.bind(this)).isMobxAction=!0),n}:i==`method`?(ct(e)||(e=c(e)),(r=this.u)!=null&&r.bound&&o((function(){var e=this[a].bind(this);e.isMobxAction=!0,this[a]=e})),e):void t(`Cannot apply '`+s.i+`' to '`+String(a)+`' (kind: `+i+`):
|
|
56
|
-
'`+s.i+`' can only be used on properties with a function value.`)}function me(e,t,n,r,i){var a,o,s;i===void 0&&(i=z.safeDescriptors);var c=r.value;return(a=t.u)!=null&&a.bound&&(c=c.bind(e.v??e.h)),{value:Ne(t.u?.name??n.toString(),c,(o=t.u?.autoAction)!=null&&o,(s=t.u)!=null&&s.bound?e.v??e.h:void 0),configurable:!i||e.p,enumerable:!1,writable:!i}}function he(e,t){return{i:e,u:t,o:D,s:ge,t:_e}}function D(e,t,n,r){var i;return r===e.h?this.s(e,t,n,!1)===null?0:2:(i=this.u)!=null&&i.bound&&(!g(e.h,t)||!vt(e.h[t]))&&this.s(e,t,n,!1)===null?0:vt(n.value)?1:(an(r,t,ve(e,0,0,n,!1,!1)),2)}function ge(e,t,n,r){var i=ve(e,0,0,n,this.u?.bound);return e.l(t,i,r)}function _e(e,t){var n,r=t.name,i=t.addInitializer;return vt(e)||(e=rr(e)),(n=this.u)!=null&&n.bound&&i((function(){var e=this[r].bind(this);e.isMobXFlow=!0,this[r]=e})),e}function ve(e,t,n,r,i,a){a===void 0&&(a=z.safeDescriptors);var o=r.value;return vt(o)||(o=rr(o)),i&&((o=o.bind(e.v??e.h)).isMobXFlow=!0),{value:o,configurable:!a||e.p,enumerable:!1,writable:!a}}function ye(e,t){return{i:e,u:t,o:be,s:xe,t:Se}}function be(e,t,n){return this.s(e,t,n,!1)===null?0:1}function xe(e,t,n,r){return e.m(t,ee({},this.u,{get:n.get,set:n.set}),r)}function Se(e,t){var n=this,r=t.name;return(0,t.addInitializer)((function(){var t=Ht(this)[F],i=ee({},n.u,{get:e,context:this});i.name||=`ObservableObject.`+r.toString(),t.j.set(r,new In(i))})),function(){return this[F].O(r)}}function Ce(e,t){return{i:e,u:t,o:we,s:Te,t:Ee}}function we(e,t,n){return this.s(e,t,n,!1)===null?0:1}function Te(e,t,n,r){return e.g(t,n.value,this.u?.enhancer??ce,r)}function Ee(e,t){function n(e,t){var n=Ht(e)[F],i=new Pn(t,r.u?.enhancer??ce,`ObservableObject.`+a.toString(),!1);n.j.set(a,i),o.add(e)}var r=this,i=t.kind,a=t.name,o=new WeakSet;if(i==`accessor`)return{get:function(){return o.has(this)||n(this,e.get.call(this)),this[F].O(a)},set:function(e){return o.has(this)||n(this,e),this[F].S(a,e)},init:function(e){return o.has(this)||n(this,e),e}}}function De(e){return{i:`true`,u:e,o:Oe,s:ke,t:Ae}}function Oe(e,t,n,r){var i,a,o;if(n.get)return kn.o(e,t,n,r);if(n.set){var s=ct(n.set)?n.set:Ne(t.toString(),n.set);return r===e.h?e.l(t,{configurable:!z.safeDescriptors||e.p,set:s})===null?0:2:(an(r,t,{configurable:!0,set:s}),2)}if(r!==e.h&&typeof n.value==`function`)return l(n.value)?((o=this.u)!=null&&o.autoBind?rr.bound:rr).o(e,t,n,r):((a=this.u)!=null&&a.autoBind?Zn.bound:Zn).o(e,t,n,r);var c=!1===this.u?.deep?En.ref:En;return typeof n.value==`function`&&(i=this.u)!=null&&i.autoBind&&(n.value=n.value.bind(e.v??e.h)),c.o(e,t,n,r)}function ke(e,t,n,r){var i;return n.get?kn.s(e,t,n,r):n.set?e.l(t,{configurable:!z.safeDescriptors||e.p,set:Ne(t.toString(),n.set)},r):(typeof n.value==`function`&&(i=this.u)!=null&&i.autoBind&&(n.value=n.value.bind(e.v??e.h)),(!1===this.u?.deep?En.ref:En).s(e,t,n,r))}function Ae(){t(`'`+this.i+`' cannot be used as a decorator`)}function je(e){return e||bn}function O(e){return!0===e.deep?ce:!1===e.deep?le:(t=e.defaultDecorator)&&(n=(r=t.u)?.enhancer)!=null?n:ce;var t,n,r}function Me(e,t,n){return oe(t)?xn.t(e,t):o(t)?void ae(e,t,xn):xt(e)?e:c(e)?En.object(e,t,n):Array.isArray(e)?En.array(e,t):p(e)?En.map(e,t):m(e)?En.set(e,t):typeof e==`object`&&e?e:En.box(e,t)}function Ne(e,t,n,r){function i(){return Pe(0,n,t,r||this,arguments)}return n===void 0&&(n=!1),i.isMobxAction=!0,i.toString=function(){return t.toString()},Mn&&(Nn.value=e,an(i,`name`,Nn)),i}function Pe(e,t,n,r,i){var a=Fe(0,t);try{return n.apply(r,i)}catch(e){throw a._=e,e}finally{Ie(a)}}function Fe(e,t){var n=z.trackingDerivation,r=!t||!n;$e();var i=z.allowStateChanges;r&&(Ge(),i=Re(!0));var a={A:r,k:n,M:i,V:qe(!0),R:!1,N:0,T:jn++,C:An};return An=a.T,a}function Ie(e){An!==e.T&&t(30),An=e.C,e._!==void 0&&(z.suppressReactionErrors=!0),ze(e.M),Je(e.V),et(),e.A&&Ke(e.k),z.suppressReactionErrors=!1}function Le(e,t){var n=Re(e);try{return t()}finally{ze(n)}}function Re(e){var t=z.allowStateChanges;return z.allowStateChanges=e,t}function ze(e){z.allowStateChanges=e}function Be(e){return e instanceof Rn}function Ve(e){switch(e.I){case L.L:return!1;case L.P:case L.K:return!0;case L.B:for(var t=qe(!0),n=Ge(),r=e.D,i=r.length,a=0;a<i;a++){var o=r[a];if(R(o)){if(z.disableErrorBoundaries)o.get();else try{o.get()}catch{return Ke(n),Je(t),!0}if(e.I===L.K)return Ke(n),Je(t),!0}}return Ye(e),Ke(n),Je(t),!1}}function He(e,t,n){var r=qe(!0);Ye(e),e.W=Array(e.q===0?100:e.D.length),e.G=0,e.q=++z.runId;var i,a=z.trackingDerivation;if(z.trackingDerivation=e,z.inBatch++,!0===z.disableErrorBoundaries)i=t.call(n);else try{i=t.call(n)}catch(e){i=new Rn(e)}return z.inBatch--,z.trackingDerivation=a,function(e){for(var t=e.D,n=e.D=e.W,r=L.L,i=0,a=e.G,o=0;o<a;o++){var s=n[o];s.diffValue===0&&(s.diffValue=1,i!==o&&(n[i]=s),i++),s.I>r&&(r=s.I)}for(n.length=i,e.W=null,a=t.length;a--;){var c=t[a];c.diffValue===0&&Ze(c,e),c.diffValue=0}for(;i--;){var l=n[i];l.diffValue===1&&(l.diffValue=0,Xe(l,e))}r!==L.L&&(e.I=r,e.H())}(e),Je(r),i}function Ue(e){var t=e.D;e.D=[];for(var n=t.length;n--;)Ze(t[n],e);e.I=L.P}function We(e){var t=Ge();try{return e()}finally{Ke(t)}}function Ge(){var e=z.trackingDerivation;return z.trackingDerivation=null,e}function Ke(e){z.trackingDerivation=e}function qe(e){var t=z.allowStateReads;return z.allowStateReads=e,t}function Je(e){z.allowStateReads=e}function Ye(e){if(e.I!==L.L){e.I=L.L;for(var t=e.D,n=t.length;n--;)t[n].U=L.L}}function Xe(e,t){e.F.add(t),e.U>t.I&&(e.U=t.I)}function Ze(e,t){e.F.delete(t),e.F.size===0&&Qe(e)}function Qe(e){!1===e.isPendingUnobservation&&(e.isPendingUnobservation=!0,z.pendingUnobservations.push(e))}function $e(){z.inBatch++}function et(){if(--z.inBatch==0){rt();for(var e=z.pendingUnobservations,t=0;t<e.length;t++){var n=e[t];n.isPendingUnobservation=!1,n.F.size===0&&(n.isBeingObserved&&(n.isBeingObserved=!1,n.onBUO()),n instanceof In&&n.X())}z.pendingUnobservations=[]}}function tt(e){var t=z.trackingDerivation;return t===null?(e.F.size===0&&z.inBatch>0&&Qe(e),!1):(t.q!==e.$&&(e.$=t.q,t.W[t.G++]=e,!e.isBeingObserved&&z.trackingContext&&(e.isBeingObserved=!0,e.onBO())),e.isBeingObserved)}function nt(e){e.U!==L.K&&(e.U=L.K,e.F.forEach((function(e){e.I===L.L&&e.H(),e.I=L.K})))}function rt(){z.inBatch>0||z.isRunningReactions||Wn(it)}function it(){z.isRunningReactions=!0;for(var e=z.pendingReactions,t=0;e.length>0;){++t==100&&(console.error(`[mobx] cycle in reaction: `+e[0]),e.splice(0));for(var n=e.splice(0),r=0,i=n.length;r<i;r++)n[r].J()}z.isRunningReactions=!1}function at(){return console.warn(`[mobx.spy] Is a no-op in production builds`),function(){}}function ot(e){return function(t,n){return a(t)?Ne(t.name||`<unnamed action>`,t,e):a(n)?Ne(t,n,e):oe(n)?(e?Jn:Kn).t(t,n):o(n)?ae(t,n,e?Jn:Kn):o(t)?E(ue(e?`autoAction`:`action`,{name:t,autoAction:e})):void 0}}function st(e){return Pe(0,!1,e,this,void 0)}function ct(e){return a(e)&&!0===e.isMobxAction}function lt(e,t){function n(){e(i)}var r;t===void 0&&(t=cn);var i,a=t?.name??`Autorun`;if(t.scheduler||t.delay){var o=ut(t),s=!1;i=new Un(a,(function(){s||(s=!0,o((function(){s=!1,i.isDisposed||i.track(n)})))}),t.onError,t.requiresObservable)}else i=new Un(a,(function(){this.track(n)}),t.onError,t.requiresObservable);return(r=t)!=null&&(r=r.signal)!=null&&r.aborted||i.Y(),i.Z(t?.signal)}function ut(e){return e.scheduler?e.scheduler:e.delay?function(t){return setTimeout(t,e.delay)}:Qn}function dt(e,t,n){return pt(`onBO`,e,t,n)}function ft(e,t,n){return pt(`onBUO`,e,t,n)}function pt(e,t,n,r){var i=typeof r==`function`?Yt(t,n):Yt(t),o=a(r)?r:n,s=e+`L`;return i[s]?i[s].add(o):i[s]=new Set([o]),function(){var e=i[s];e&&(e.delete(o),e.size===0&&delete i[s])}}function mt(e,t,n,r){var i=pn(t);return Qt((function(){var t=Ht(e,r)[F];fn(i).forEach((function(e){t.s(e,i[e],!n||!(e in n)||n[e])}))})),e}function ht(e){var t,n={name:e.tt};return e.D&&e.D.length>0&&(n.dependencies=(t=e.D,Array.from(new Set(t))).map(ht)),n}function gt(e){var t={name:e.tt};return function(e){return e.F&&e.F.size>0}(e)&&(t.observers=Array.from(function(e){return e.F}(e)).map(gt)),t}function _t(e){a(e.cancel)&&e.cancel()}function vt(e){return!0===e?.isMobXFlow}function yt(e,t){return t===void 0?R(e):!1===Wt(e)||!e[F].j.has(t)?!1:R(Yt(e,t))}function bt(e,t){return!!e&&(t===void 0?Wt(e)||!!e[F]||gn(e)||Gn(e)||R(e):!!Wt(e)&&e[F].j.has(t))}function xt(e){return bt(e)}function St(e){return Wt(e)?e[F].nt():gr(e)||yr(e)?Array.from(e.keys()):zt(e)?e.map((function(e,t){return t})):void t(5)}function Ct(e,n){return Wt(e)?e[F].it(n):gr(e)||yr(e)?e.has(n):zt(e)?n>=0&&n<e.length:void t(10)}function wt(e){if(Wt(e))return e[F].rt();t(38)}function Tt(e,t,n){return e.set(t,n),n}function Et(e,t){t===void 0&&(t=void 0),$e();try{return e.apply(t)}finally{et()}}function Dt(e,t,n){var r;if(typeof n.timeout==`number`){var i=Error(`WHEN_TIMEOUT`);r=setTimeout((function(){if(!o[F].isDisposed){if(o(),!n.onError)throw i;n.onError(i)}}),n.timeout)}n.name=`When`;var a=Ne(`When-effect`,t),o=lt((function(t){Le(!1,e)&&(t.dispose(),r&&clearTimeout(r),a())}),n);return o}function Ot(e,t){var n,r,i;if(t!=null&&(n=t.signal)!=null&&n.aborted)return Object.assign(Promise.reject(Error(`WHEN_ABORTED`)),{cancel:function(){return null}});var a=new Promise((function(n,a){var o,s=Dt(e,n,ee({},t,{onError:a}));r=function(){s(),a(Error(`WHEN_CANCELLED`))},i=function(){s(),a(Error(`WHEN_ABORTED`))},t==null||(o=t.signal)==null||o.addEventListener==null||o.addEventListener(`abort`,i)})).finally((function(){var e;return t==null||(e=t.signal)==null||e.removeEventListener==null?void 0:e.removeEventListener(`abort`,i)}));return a.cancel=r,a}function kt(e){return e[F]}function At(e){return e.et!==void 0&&e.et.length>0}function jt(e,t){var n=e.et||=[];return n.push(t),i((function(){var e=n.indexOf(t);e!==-1&&n.splice(e,1)}))}function Mt(e,n){var r=Ge();try{for(var i=[].concat(e.et||[]),a=0,o=i.length;a<o&&((n=i[a](n))&&!n.type&&t(14),n);a++);return n}finally{Ke(r)}}function Nt(e){return e.ut!==void 0&&e.ut.length>0}function Pt(e,t){var n=e.ut||=[];return n.push(t),i((function(){var e=n.indexOf(t);e!==-1&&n.splice(e,1)}))}function Ft(e,t){var n=Ge(),r=e.ut;if(r){for(var i=0,a=(r=r.slice()).length;i<a;i++)r[i](t);Ke(n)}}function It(e,t,n,i){return n===void 0&&(n=`ObservableArray`),i===void 0&&(i=!1),r(),Qt((function(){var r=new cr(n,t,i,!1);d(r.j,F,r);var a=new Proxy(r.j,sr);return r.v=a,e&&e.length&&r.ot(0,0,e),a}))}function k(e,t){typeof Array.prototype[e]==`function`&&(lr[e]=t(e))}function Lt(e){return function(){var t=this[F];t.st.reportObserved();var n=t.ft(t.j);return n[e].apply(n,arguments)}}function A(e){return function(t,n){var r=this,i=this[F];return i.st.reportObserved(),i.ft(i.j)[e]((function(e,i){return t.call(n,e,i,r)}))}}function Rt(e){return function(){var t=this,n=this[F];n.st.reportObserved();var r=n.ft(n.j),i=arguments[0];return arguments[0]=function(e,n,r){return i(e,n,r,t)},r[e].apply(r,arguments)}}function zt(e){return s(e)&&fr(e[F])}function Bt(e){return e[Symbol.toStringTag]=`MapIterator`,en(e)}function Vt(e){return e[Symbol.toStringTag]=`SetIterator`,en(e)}function Ht(e,t){if(g(e,F))return e;var n=t?.name??`ObservableObject`;return u(e,F,new xr(e,new Map,String(n),function(e){return e?e.defaultDecorator??De(e):void 0}(t))),e}function Ut(e){return br[e]||(br[e]={get:function(){return this[F].O(e)},set:function(t){return this[F].S(e,t)}})}function Wt(e){return!!s(e)&&B(e[F])}function Gt(e,t,n){var r;(r=e.h[mn])==null||delete r[n]}function Kt(e){return{enumerable:!1,configurable:!0,get:function(){return this[F].ct(e)},set:function(t){this[F].ht(e,t)}}}function j(e){an(Er.prototype,``+e,Kt(e))}function qt(e){if(e>wr){for(var t=wr;t<e+100;t++)j(t);wr=e}}function Jt(e,t,n){return new Er(e,t,n)}function Yt(e,n){if(typeof e==`object`&&e){if(zt(e))return n!==void 0&&t(23),e[F].st;if(yr(e))return e.st;if(gr(e)){if(n===void 0)return e.lt;var r=e.vt.get(n)||e.dt.get(n);return r||t(25,n,Zt(e)),r}if(Wt(e)){if(!n)return t(26);var i=e[F].j.get(n);return i||t(27,n,Zt(e)),i}if(gn(e)||R(e)||Gn(e))return e}else if(a(e)&&Gn(e[F]))return e[F];t(28)}function Xt(e,n){return e||t(29),n===void 0?gn(e)||R(e)||Gn(e)||gr(e)||yr(e)?e:e[F]?e[F]:void t(24,e):Xt(Yt(e,n))}function Zt(e,t){var n;if(t!==void 0)n=Yt(e,t);else{if(ct(e))return e.name;n=Wt(e)||gr(e)||yr(e)?Xt(e):Yt(e)}return n.tt}function Qt(e){var t=Ge(),n=Re(!0);$e();try{return e()}finally{et(),ze(n),Ke(t)}}function $t(e,t,n){return n===void 0&&(n=-1),function e(t,n,r,i,o){if(t===n)return t!==0||1/t==1/n;if(t==null||n==null)return!1;if(t!=t)return n!=n;var s=typeof t;if(s!==`function`&&s!==`object`&&typeof n!=`object`)return!1;var c=Dr.call(t);if(c!==Dr.call(n))return!1;switch(c){case`[object RegExp]`:case`[object String]`:return``+t==``+n;case`[object Number]`:return+t==+t?+t==0?1/t==1/n:+t==+n:+n!=+n;case`[object Date]`:case`[object Boolean]`:return+t==+n;case`[object Symbol]`:return typeof Symbol<`u`&&Symbol.valueOf.call(t)===Symbol.valueOf.call(n);case`[object Map]`:case`[object Set]`:r>=0&&r++}t=M(t),n=M(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 M(e){return zt(e)?e.slice():p(e)||gr(e)||m(e)||yr(e)?Array.from(e.entries()):e}function en(e){return e[Symbol.iterator]=tn,Object.assign(Object.create(Or),e)}function tn(){return this}Object.defineProperty(e,`__esModule`,{value:!0});var nn={},N=Object.assign,rn=Object.getOwnPropertyDescriptor,an=Object.defineProperty,on=Object.prototype,sn=[];Object.freeze(sn);var cn={};Object.freeze(cn);var P=typeof Proxy<`u`,ln=Object.toString(),un=function(){},dn=Object.getOwnPropertySymbols!==void 0,fn=typeof Reflect<`u`&&Reflect.ownKeys?Reflect.ownKeys:dn?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames,pn=Object.getOwnPropertyDescriptors||function(e){var t={};return fn(e).forEach((function(n){t[n]=rn(e,n)})),t},mn=Symbol(`mobx-stored-annotations`),F=Symbol(`mobx administration`),hn=function(){function e(e){e===void 0&&(e=`Atom`),this.tt=void 0,this.bt=0,this.F=new Set,this.$=0,this.U=L.P,this.onBOL=void 0,this.onBUOL=void 0,this.tt=e}var t=e.prototype;return t.onBO=function(){this.onBOL&&this.onBOL.forEach((function(e){return e()}))},t.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(e){return e()}))},t.reportObserved=function(){return tt(this)},t.reportChanged=function(){$e(),nt(this),et()},t.toString=function(){return this.tt},S(e,[{key:`isBeingObserved`,get:function(){return _(this.bt,e.pt)},set:function(t){this.bt=v(this.bt,e.pt,t)}},{key:`isPendingUnobservation`,get:function(){return _(this.bt,e.yt)},set:function(t){this.bt=v(this.bt,e.yt,t)}},{key:`diffValue`,get:function(){return+!!_(this.bt,e.wt)},set:function(t){this.bt=v(this.bt,e.wt,t===1)}}])}();hn.pt=1,hn.yt=2,hn.wt=4;var gn=f(`Atom`,hn),_n={identity:function(e,t){return e===t},structural:function(e,t){return $t(e,t)},default:function(e,t){return Object.is?Object.is(e,t):e===t?e!==0||1/e==1/t:e!=e&&t!=t},shallow:function(e,t){return $t(e,t,1)}},vn=E({i:`override`,o:function(){return 0},s:function(){t(`'`+this.i+`' can only be used with 'makeObservable'`)},t:function(){console.warn(`'`+this.i+`' cannot be used with decorators - this is a no-op`)}}),yn=De(),bn={deep:!0,name:void 0,defaultDecorator:void 0,proxy:!0};Object.freeze(bn);var xn=Ce(`observable`),Sn=Ce(`observable.ref`,{enhancer:le}),I=Ce(`observable.shallow`,{enhancer:function(e,t,n){return e==null||Wt(e)||zt(e)||gr(e)||yr(e)?e:Array.isArray(e)?En.array(e,{name:n,deep:!1}):c(e)?En.object(e,void 0,{name:n,deep:!1}):p(e)?En.map(e,{name:n,deep:!1}):m(e)?En.set(e,{name:n,deep:!1}):void 0}}),Cn=Ce(`observable.struct`,{enhancer:function(e,t){return $t(e,t)?t:e}}),wn=E(xn);N(Me,wn);var Tn,En=N(Me,{box:function(e,t){var n=je(t);return new Pn(e,O(n),n.name,!0,n.equals)},array:function(e,t){var n=je(t);return(!1===z.useProxies||!1===n.proxy?Jt:It)(e,O(n),n.name)},map:function(e,t){var n=je(t);return new hr(e,O(n),n.name)},set:function(e,t){var n=je(t);return new vr(e,O(n),n.name)},object:function(e,t,n){return Qt((function(){return mt(!1===z.useProxies||!1===n?.proxy?Ht({},n):function(e,t){var n;return r(),(n=(e=Ht(e,t))[F]).v??(n.v=new Proxy(e,ir))}({},n),e,t)}))},ref:E(Sn),shallow:E(I),deep:wn,struct:E(Cn)}),Dn=ye(`computed`),On=ye(`computed.struct`,{equals:_n.structural}),kn=function(e,t){if(oe(t))return Dn.t(e,t);if(o(t))return ae(e,t,Dn);if(c(e))return E(ye(`computed`,e));var n=c(t)?t:{};return n.get=e,n.name||=e.name||``,new In(n)};Object.assign(kn,Dn),kn.struct=E(On);var An=0,jn=1,Mn=(Tn=rn((function(){}),`name`)?.configurable)!=null&&Tn,Nn={value:`action`,configurable:!0,writable:!1,enumerable:!1},Pn=function(e){function t(t,n,r,i,a){var o;return r===void 0&&(r=`ObservableValue`),a===void 0&&(a=_n.default),(o=e.call(this,r)||this).enhancer=void 0,o.tt=void 0,o.equals=void 0,o.jt=!1,o.et=void 0,o.ut=void 0,o.Ot=void 0,o.dehancer=void 0,o.enhancer=n,o.tt=r,o.equals=a,o.Ot=n(t,void 0,r),o}w(t,e);var n=t.prototype;return n.dehanceValue=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.set=function(e){(e=this.xt(e))!==z.UNCHANGED&&this.gt(e)},n.xt=function(e){if(At(this)){var t=Mt(this,{object:this,type:or,newValue:e});if(!t)return z.UNCHANGED;e=t.newValue}return e=this.enhancer(e,this.Ot,this.tt),this.equals(this.Ot,e)?z.UNCHANGED:e},n.gt=function(e){var t=this.Ot;this.Ot=e,this.reportChanged(),Nt(this)&&Ft(this,{type:or,object:this,newValue:e,oldValue:t})},n.get=function(){return this.reportObserved(),this.dehanceValue(this.Ot)},n.St=function(e){return jt(this,e)},n._t=function(e,t){return t&&e({observableKind:`value`,debugObjectName:this.tt,object:this,type:or,newValue:this.Ot,oldValue:void 0}),Pt(this,e)},n.raw=function(){return this.Ot},n.toJSON=function(){return this.get()},n.toString=function(){return this.tt+`[`+this.Ot+`]`},n.valueOf=function(){return h(this.get())},n[Symbol.toPrimitive]=function(){return this.valueOf()},t}(hn),Fn=f(`ObservableValue`,Pn),In=function(){function e(e){this.I=L.P,this.D=[],this.W=null,this.F=new Set,this.q=0,this.$=0,this.U=L.L,this.G=0,this.Ot=new Rn(null),this.tt=void 0,this.At=void 0,this.bt=0,this.derivation=void 0,this.kt=void 0,this.Mt=Ln.NONE,this.Et=void 0,this.Vt=void 0,this.Rt=void 0,this.Nt=void 0,this.onBOL=void 0,this.onBUOL=void 0,e.get||t(31),this.derivation=e.get,this.tt=e.name||`ComputedValue`,e.set&&(this.kt=Ne(`ComputedValue-setter`,e.set)),this.Vt=e.equals||(e.compareStructural||e.struct?_n.structural:_n.default),this.Et=e.context,this.Rt=e.requiresReaction,this.Nt=!!e.keepAlive}var n=e.prototype;return n.H=function(){(function(e){e.U===L.L&&(e.U=L.B,e.F.forEach((function(e){e.I===L.L&&(e.I=L.B,e.H())})))})(this)},n.onBO=function(){this.onBOL&&this.onBOL.forEach((function(e){return e()}))},n.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(e){return e()}))},n.get=function(){if(this.isComputing&&t(32,this.tt,this.derivation),z.inBatch!==0||this.F.size!==0||this.Nt){if(tt(this),Ve(this)){var e=z.trackingContext;this.Nt&&!e&&(z.trackingContext=this),this.trackAndCompute()&&function(e){e.U!==L.K&&(e.U=L.K,e.F.forEach((function(t){t.I===L.B?t.I=L.K:t.I===L.L&&(e.U=L.L)})))}(this),z.trackingContext=e}}else Ve(this)&&(this.Tt(),$e(),this.Ot=this.Ct(!1),et());var n=this.Ot;if(Be(n))throw n.cause;return n},n.set=function(e){if(this.kt){this.isRunningSetter&&t(33,this.tt),this.isRunningSetter=!0;try{this.kt.call(this.Et,e)}finally{this.isRunningSetter=!1}}else t(34,this.tt)},n.trackAndCompute=function(){var e=this.Ot,t=this.I===L.P,n=this.Ct(!0),r=t||Be(e)||Be(n)||!this.Vt(e,n);return r&&(this.Ot=n),r},n.Ct=function(e){this.isComputing=!0;var t,n=Re(!1);if(e)t=He(this,this.derivation,this.Et);else if(!0===z.disableErrorBoundaries)t=this.derivation.call(this.Et);else try{t=this.derivation.call(this.Et)}catch(e){t=new Rn(e)}return ze(n),this.isComputing=!1,t},n.X=function(){this.Nt||(Ue(this),this.Ot=void 0)},n._t=function(e,t){var n=this,r=!0,i=void 0;return lt((function(){var a=n.get();if(!r||t){var o=Ge();e({observableKind:`computed`,debugObjectName:n.tt,type:or,object:n,newValue:a,oldValue:i}),Ke(o)}r=!1,i=a}))},n.Tt=function(){},n.toString=function(){return this.tt+`[`+this.derivation.toString()+`]`},n.valueOf=function(){return h(this.get())},n[Symbol.toPrimitive]=function(){return this.valueOf()},S(e,[{key:`isComputing`,get:function(){return _(this.bt,e.It)},set:function(t){this.bt=v(this.bt,e.It,t)}},{key:`isRunningSetter`,get:function(){return _(this.bt,e.Lt)},set:function(t){this.bt=v(this.bt,e.Lt,t)}},{key:`isBeingObserved`,get:function(){return _(this.bt,e.pt)},set:function(t){this.bt=v(this.bt,e.pt,t)}},{key:`isPendingUnobservation`,get:function(){return _(this.bt,e.yt)},set:function(t){this.bt=v(this.bt,e.yt,t)}},{key:`diffValue`,get:function(){return+!!_(this.bt,e.wt)},set:function(t){this.bt=v(this.bt,e.wt,t===1)}}])}();In.It=1,In.Lt=2,In.pt=4,In.yt=8,In.wt=16;var L,Ln,R=f(`ComputedValue`,In);(function(e){e[e.P=-1]=`NOT_TRACKING_`,e[e.L=0]=`UP_TO_DATE_`,e[e.B=1]=`POSSIBLY_STALE_`,e[e.K=2]=`STALE_`})(L||={}),function(e){e[e.NONE=0]=`NONE`,e[e.LOG=1]=`LOG`,e[e.BREAK=2]=`BREAK`}(Ln||={});var Rn=function(e){this.cause=void 0,this.cause=e},zn=[`mobxGuid`,`spyListeners`,`enforceActions`,`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`allowStateReads`,`disableErrorBoundaries`,`runId`,`UNCHANGED`,`useProxies`],Bn=function(){this.version=6,this.UNCHANGED={},this.trackingDerivation=null,this.trackingContext=null,this.runId=0,this.mobxGuid=0,this.inBatch=0,this.pendingUnobservations=[],this.pendingReactions=[],this.isRunningReactions=!1,this.allowStateChanges=!1,this.allowStateReads=!0,this.enforceActions=!0,this.spyListeners=[],this.globalReactionErrorHandlers=[],this.computedRequiresReaction=!1,this.reactionRequiresObservable=!1,this.observableRequiresReaction=!1,this.disableErrorBoundaries=!1,this.suppressReactionErrors=!1,this.useProxies=!0,this.verifyProxies=!1,this.safeDescriptors=!0},Vn=!0,Hn=!1,z=function(){var e=n();return e.__mobxInstanceCount>0&&!e.__mobxGlobals&&(Vn=!1),e.__mobxGlobals&&e.__mobxGlobals.version!==new Bn().version&&(Vn=!1),Vn?e.__mobxGlobals?(e.__mobxInstanceCount+=1,e.__mobxGlobals.UNCHANGED||(e.__mobxGlobals.UNCHANGED={}),e.__mobxGlobals):(e.__mobxInstanceCount=1,e.__mobxGlobals=new Bn):(setTimeout((function(){Hn||t(35)}),1),new Bn)}(),Un=function(){function e(e,t,n,r){e===void 0&&(e=`Reaction`),this.tt=void 0,this.Pt=void 0,this.Kt=void 0,this.Bt=void 0,this.D=[],this.W=[],this.I=L.P,this.q=0,this.G=0,this.bt=0,this.Mt=Ln.NONE,this.tt=e,this.Pt=t,this.Kt=n,this.Bt=r}var t=e.prototype;return t.H=function(){this.Y()},t.Y=function(){this.isScheduled||(this.isScheduled=!0,z.pendingReactions.push(this),rt())},t.J=function(){if(!this.isDisposed){$e(),this.isScheduled=!1;var e=z.trackingContext;if(z.trackingContext=this,Ve(this)){this.isTrackPending=!0;try{this.Pt()}catch(e){this.Dt(e)}}z.trackingContext=e,et()}},t.track=function(e){if(!this.isDisposed){$e(),this.isRunning=!0;var t=z.trackingContext;z.trackingContext=this;var n=He(this,e,void 0);z.trackingContext=t,this.isRunning=!1,this.isTrackPending=!1,this.isDisposed&&Ue(this),Be(n)&&this.Dt(n.cause),et()}},t.Dt=function(e){var t=this;if(this.Kt)this.Kt(e,this);else{if(z.disableErrorBoundaries)throw e;z.suppressReactionErrors||console.error(`[mobx] uncaught error in '`+this+`'`,e),z.globalReactionErrorHandlers.forEach((function(n){return n(e,t)}))}},t.dispose=function(){this.isDisposed||(this.isDisposed=!0,this.isRunning||($e(),Ue(this),et()))},t.Z=function(e){var t=this,n=function n(){t.dispose(),e==null||e.removeEventListener==null||e.removeEventListener(`abort`,n)};return e==null||e.addEventListener==null||e.addEventListener(`abort`,n),n[F]=this,`dispose`in Symbol&&typeof Symbol.dispose==`symbol`&&(n[Symbol.dispose]=n),n},t.toString=function(){return`Reaction[`+this.tt+`]`},t.trace=function(){},S(e,[{key:`isDisposed`,get:function(){return _(this.bt,e.Wt)},set:function(t){this.bt=v(this.bt,e.Wt,t)}},{key:`isScheduled`,get:function(){return _(this.bt,e.qt)},set:function(t){this.bt=v(this.bt,e.qt,t)}},{key:`isTrackPending`,get:function(){return _(this.bt,e.Gt)},set:function(t){this.bt=v(this.bt,e.Gt,t)}},{key:`isRunning`,get:function(){return _(this.bt,e.Ht)},set:function(t){this.bt=v(this.bt,e.Ht,t)}},{key:`diffValue`,get:function(){return+!!_(this.bt,e.wt)},set:function(t){this.bt=v(this.bt,e.wt,t===1)}}])}();Un.Wt=1,Un.qt=2,Un.Gt=4,Un.Ht=8,Un.wt=16;var Wn=function(e){return e()},Gn=f(`Reaction`,Un),Kn=ue(`action`),qn=ue(`action.bound`,{bound:!0}),Jn=ue(`autoAction`,{autoAction:!0}),Yn=ue(`autoAction.bound`,{autoAction:!0,bound:!0}),Xn=ot(!1);Object.assign(Xn,Kn);var Zn=ot(!0);Object.assign(Zn,Jn),Xn.bound=E(qn),Zn.bound=E(Yn);var Qn=function(e){return e()},$n=0,er=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)),tr=he(`flow`),nr=he(`flow.bound`,{bound:!0}),rr=Object.assign((function(e,t){if(oe(t))return tr.t(e,t);if(o(t))return ae(e,t,tr);var n=e,r=n.name||`<unnamed flow>`,i=function(){var e,t=this,i=arguments,o=++$n,s=Xn(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=Xn(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=Xn(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=Xn(r+` - runid: `+o+` - cancel`,(function(){try{c&&_t(c);var t=s.return(void 0),n=Promise.resolve(t.value);n.then(un,un),_t(n),e(new er)}catch(t){e(t)}})),l};return i.isMobXFlow=!0,i}),tr);rr.bound=E(nr);var ir={has:function(e,t){return kt(e).it(t)},get:function(e,t){return kt(e).ct(t)},set:function(e,t,n){var r;return!!o(t)&&((r=kt(e).ht(t,n,!0))==null||r)},deleteProperty:function(e,t){var n;return!!o(t)&&((n=kt(e).Ut(t,!0))==null||n)},defineProperty:function(e,t,n){var r;return(r=kt(e).l(t,n))==null||r},ownKeys:function(e){return kt(e).rt()},preventExtensions:function(){t(13)}},ar=Symbol(`mobx-keys`),or=`update`,sr={get:function(e,t){var n=e[F];return t===F?n:t===`length`?n.Ft():typeof t!=`string`||isNaN(t)?g(lr,t)?lr[t]:e[t]:n.ct(parseInt(t))},set:function(e,t,n){var r=e[F];return t===`length`&&r.Xt(n),typeof t==`symbol`||isNaN(t)?e[t]=n:r.ht(parseInt(t),n),!0},preventExtensions:function(){t(15)}},cr=function(){function e(e,t,n,r){e===void 0&&(e=`ObservableArray`),this.zt=void 0,this.$t=void 0,this.st=void 0,this.j=[],this.et=void 0,this.ut=void 0,this.Jt=void 0,this.dehancer=void 0,this.v=void 0,this.Yt=0,this.zt=n,this.$t=r,this.st=new hn(e),this.Jt=function(e,n){return t(e,n,`ObservableArray[..]`)}}var n=e.prototype;return n.Qt=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.ft=function(e){return this.dehancer!==void 0&&e.length>0?e.map(this.dehancer):e},n.St=function(e){return jt(this,e)},n._t=function(e,t){return t===void 0&&(t=!1),t&&e({observableKind:`array`,object:this.v,debugObjectName:this.st.tt,type:`splice`,index:0,added:this.j.slice(),addedCount:this.j.length,removed:[],removedCount:0}),Pt(this,e)},n.Ft=function(){return this.st.reportObserved(),this.j.length},n.Xt=function(e){(typeof e!=`number`||isNaN(e)||e<0)&&t(`Out of range: `+e);var n=this.j.length;if(e!==n)if(e>n){for(var r=Array(e-n),i=0;i<e-n;i++)r[i]=void 0;this.ot(n,0,r)}else this.ot(e,n-e)},n.Zt=function(e,n){e!==this.Yt&&t(16),this.Yt+=n,this.$t&&n>0&&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=sn),At(this)){var a=Mt(this,{object:this.v,type:`splice`,index:e,removedCount:t,added:n});if(!a)return sn;t=a.removedCount,n=a.added}if(n=n.length===0?n:n.map((function(e){return r.Jt(e,void 0)})),this.$t){var o=n.length-t;this.Zt(i,o)}var s=this.tn(e,t,n);return t===0&&n.length===0||this.nn(e,n,s),this.ft(s)},n.tn=function(e,t,n){var r;if(n.length<1e4)return(r=this.j).splice.apply(r,[e,t].concat(n));var i=this.j.slice(e,e+t),a=this.j.slice(e+t);this.j.length+=n.length-t;for(var o=0;o<n.length;o++)this.j[e+o]=n[o];for(var s=0;s<a.length;s++)this.j[e+n.length+s]=a[s];return i},n.in=function(e,t,n){var r=!this.zt&&!1,i=Nt(this),a=i||r?{observableKind:`array`,object:this.v,type:or,debugObjectName:this.st.tt,index:e,newValue:t,oldValue:n}:null;this.st.reportChanged(),i&&Ft(this,a)},n.nn=function(e,t,n){var r=!this.zt&&!1,i=Nt(this),a=i||r?{observableKind:`array`,object:this.v,debugObjectName:this.st.tt,type:`splice`,index:e,removed:n,added:t,removedCount:n.length,addedCount:t.length}:null;this.st.reportChanged(),i&&Ft(this,a)},n.ct=function(e){if(!(this.$t&&e>=this.j.length))return this.st.reportObserved(),this.Qt(this.j[e]);console.warn(`[mobx] Out of bounds read: `+e)},n.ht=function(e,n){var r=this.j;if(this.$t&&e>r.length&&t(17,e,r.length),e<r.length){var i=r[e];if(At(this)){var a=Mt(this,{type:or,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}(),lr={clear:function(){return this.splice(0)},replace:function(e){var t=this[F];return t.ot(0,t.j.length,e)},toJSON:function(){return this.slice()},splice:function(e,t){var n=[...arguments].slice(2),r=this[F];switch(arguments.length){case 0:return[];case 1:return r.ot(e);case 2:return r.ot(e,t)}return r.ot(e,t,n)},spliceWithArray:function(e,t,n){return this[F].ot(e,t,n)},push:function(){for(var e=this[F],t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];return e.ot(e.j.length,0,n),e.j.length},pop:function(){return this.splice(Math.max(this[F].j.length-1,0),1)[0]},shift:function(){return this.splice(0,1)[0]},unshift:function(){for(var e=this[F],t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];return e.ot(0,0,n),e.j.length},reverse:function(){return z.trackingDerivation&&t(37,`reverse`),this.replace(this.slice().reverse()),this},sort:function(){z.trackingDerivation&&t(37,`sort`);var e=this.slice();return e.sort.apply(e,arguments),this.replace(e),this},remove:function(e){var t=this[F],n=t.ft(t.j).indexOf(e);return n>-1&&(this.splice(n,1),!0)}};k(`at`,Lt),k(`concat`,Lt),k(`flat`,Lt),k(`includes`,Lt),k(`indexOf`,Lt),k(`join`,Lt),k(`lastIndexOf`,Lt),k(`slice`,Lt),k(`toString`,Lt),k(`toLocaleString`,Lt),k(`toSorted`,Lt),k(`toSpliced`,Lt),k(`with`,Lt),k(`every`,A),k(`filter`,A),k(`find`,A),k(`findIndex`,A),k(`findLast`,A),k(`findLastIndex`,A),k(`flatMap`,A),k(`forEach`,A),k(`map`,A),k(`some`,A),k(`toReversed`,A),k(`reduce`,Rt),k(`reduceRight`,Rt);var ur,dr,fr=f(`ObservableArrayAdministration`,cr),pr={},mr=`add`,hr=function(){function e(e,n,r){var i=this;n===void 0&&(n=ce),r===void 0&&(r=`ObservableMap`),this.Jt=void 0,this.tt=void 0,this[F]=pr,this.vt=void 0,this.dt=void 0,this.lt=void 0,this.et=void 0,this.ut=void 0,this.dehancer=void 0,this.Jt=n,this.tt=r,a(Map)||t(18),Qt((function(){i.lt=se(`ObservableMap.keys()`),i.vt=new Map,i.dt=new Map,e&&i.merge(e)}))}var n=e.prototype;return n.it=function(e){return this.vt.has(e)},n.has=function(e){var t=this;if(!z.trackingDerivation)return this.it(e);var n=this.dt.get(e);if(!n){var r=n=new Pn(this.it(e),le,`ObservableMap.key?`,!1);this.dt.set(e,r),ft(r,(function(){return t.dt.delete(e)}))}return n.get()},n.set=function(e,t){var n=this.it(e);if(At(this)){var r=Mt(this,{type:n?or:mr,object:this,newValue:t,name:e});if(!r)return this;t=r.newValue}return n?this.rn(e,t):this.en(e,t),this},n.delete=function(e){var t=this;if(At(this)&&!Mt(this,{type:`delete`,object:this,name:e}))return!1;if(this.it(e)){var n=Nt(this),r=n?{observableKind:`map`,debugObjectName:this.tt,type:`delete`,object:this,oldValue:this.vt.get(e).Ot,name:e}:null;return Et((function(){var n;t.lt.reportChanged(),(n=t.dt.get(e))==null||n.gt(!1),t.vt.get(e).gt(void 0),t.vt.delete(e)})),n&&Ft(this,r),!0}return!1},n.rn=function(e,t){var n=this.vt.get(e);if((t=n.xt(t))!==z.UNCHANGED){var r=Nt(this),i=r?{observableKind:`map`,debugObjectName:this.tt,type:or,object:this,oldValue:n.Ot,name:e,newValue:t}:null;n.gt(t),r&&Ft(this,i)}},n.en=function(e,t){var n=this;Et((function(){var r,i=new Pn(t,n.Jt,`ObservableMap.key`,!1);n.vt.set(e,i),t=i.Ot,(r=n.dt.get(e))==null||r.gt(!0),n.lt.reportChanged()}));var r=Nt(this);r&&Ft(this,r?{observableKind:`map`,debugObjectName:this.tt,type:mr,object:this,name:e,newValue:t}:null)},n.get=function(e){return this.has(e)?this.Qt(this.vt.get(e).get()):this.Qt(void 0)},n.Qt=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.keys=function(){return this.lt.reportObserved(),this.vt.keys()},n.values=function(){var e=this,t=this.keys();return Bt({next:function(){var n=t.next(),r=n.done;return{done:r,value:r?void 0:e.get(n.value)}}})},n.entries=function(){var e=this,t=this.keys();return Bt({next:function(){var n=t.next(),r=n.done,i=n.value;return{done:r,value:r?void 0:[i,e.get(i)]}}})},n[Symbol.iterator]=function(){return this.entries()},n.forEach=function(e,t){for(var n,r=C(this);!(n=r()).done;){var i=n.value;e.call(t,i[1],i[0],this)}},n.merge=function(e){var n=this;return gr(e)&&(e=new Map(e)),Et((function(){var r,i;c(e)?function(e){var t=Object.keys(e);if(!dn)return t;var n=Object.getOwnPropertySymbols(e);return n.length?[].concat(t,n.filter((function(t){return on.propertyIsEnumerable.call(e,t)}))):t}(e).forEach((function(t){return n.set(t,e[t])})):Array.isArray(e)?e.forEach((function(e){return n.set(e[0],e[1])})):p(e)?(r=Object.getPrototypeOf(e),i=Object.getPrototypeOf(r),Object.getPrototypeOf(i)!==null&&t(19,e),e.forEach((function(e,t){return n.set(t,e)}))):e!=null&&t(20,e)})),this},n.clear=function(){var e=this;Et((function(){We((function(){for(var t,n=C(e.keys());!(t=n()).done;)e.delete(t.value)}))}))},n.replace=function(e){var n=this;return Et((function(){for(var r,i=function(e){if(p(e)||gr(e))return e;if(Array.isArray(e))return new Map(e);if(c(e)){var n=new Map;for(var r in e)n.set(r,e[r]);return n}return t(21,e)}(e),a=new Map,o=!1,s=C(n.vt.keys());!(r=s()).done;){var l=r.value;if(!i.has(l))if(n.delete(l))o=!0;else{var u=n.vt.get(l);a.set(l,u)}}for(var d,f=C(i.entries());!(d=f()).done;){var m=d.value,h=m[0],g=m[1],_=n.vt.has(h);if(n.set(h,g),n.vt.has(h)){var v=n.vt.get(h);a.set(h,v),_||(o=!0)}}if(!o)if(n.vt.size!==a.size)n.lt.reportChanged();else for(var y=n.vt.keys(),b=a.keys(),x=y.next(),S=b.next();!x.done;){if(x.value!==S.value){n.lt.reportChanged();break}x=y.next(),S=b.next()}n.vt=a})),this},n.toString=function(){return`[object ObservableMap]`},n.toJSON=function(){return Array.from(this)},n._t=function(e){return Pt(this,e)},n.St=function(e){return jt(this,e)},S(e,[{key:`size`,get:function(){return this.lt.reportObserved(),this.vt.size}},{key:Symbol.toStringTag,get:function(){return`Map`}}])}(),gr=f(`ObservableMap`,hr),_r={},vr=function(){function e(e,n,r){var i=this;n===void 0&&(n=ce),r===void 0&&(r=`ObservableSet`),this.tt=void 0,this[F]=_r,this.vt=new Set,this.st=void 0,this.ut=void 0,this.et=void 0,this.dehancer=void 0,this.Jt=void 0,this.tt=r,a(Set)||t(22),this.Jt=function(e,t){return n(e,t,r)},Qt((function(){i.st=se(i.tt),e&&i.replace(e)}))}var n=e.prototype;return n.Qt=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.clear=function(){var e=this;Et((function(){We((function(){for(var t,n=C(e.vt.values());!(t=n()).done;)e.delete(t.value)}))}))},n.forEach=function(e,t){for(var n,r=C(this);!(n=r()).done;){var i=n.value;e.call(t,i,i,this)}},n.add=function(e){var t=this;if(At(this)){var n=Mt(this,{type:mr,object:this,newValue:e});if(!n)return this;e=n.newValue}if(!this.has(e)){Et((function(){t.vt.add(t.Jt(e,void 0)),t.st.reportChanged()}));var r=Nt(this);r&&Ft(this,r?{observableKind:`set`,debugObjectName:this.tt,type:mr,object:this,newValue:e}:null)}return this},n.delete=function(e){var t=this;if(At(this)&&!Mt(this,{type:`delete`,object:this,oldValue:e}))return!1;if(this.has(e)){var n=Nt(this),r=n?{observableKind:`set`,debugObjectName:this.tt,type:`delete`,object:this,oldValue:e}:null;return Et((function(){t.st.reportChanged(),t.vt.delete(e)})),n&&Ft(this,r),!0}return!1},n.has=function(e){return this.st.reportObserved(),this.vt.has(this.Qt(e))},n.entries=function(){var e=this.values();return Vt({next:function(){var t=e.next(),n=t.value,r=t.done;return r?{value:void 0,done:r}:{value:[n,n],done:r}}})},n.keys=function(){return this.values()},n.values=function(){this.st.reportObserved();var e=this,t=this.vt.values();return Vt({next:function(){var n=t.next(),r=n.done;return r?{value:void 0,done:r}:{value:e.Qt(n.value),done:r}}})},n.intersection=function(e){return m(e)&&!yr(e)?e.intersection(this):new Set(this).intersection(e)},n.union=function(e){return m(e)&&!yr(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)&&!yr(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)&&!yr(e)?e.isDisjointFrom(this):new Set(this).isDisjointFrom(e)},n.replace=function(e){var n=this;return yr(e)&&(e=new Set(e)),Et((function(){Array.isArray(e)||m(e)?(n.clear(),e.forEach((function(e){return n.add(e)}))):e!=null&&t(`Cannot initialize set from `+e)})),this},n._t=function(e){return Pt(this,e)},n.St=function(e){return jt(this,e)},n.toJSON=function(){return Array.from(this)},n.toString=function(){return`[object ObservableSet]`},n[Symbol.iterator]=function(){return this.values()},S(e,[{key:`size`,get:function(){return this.st.reportObserved(),this.vt.size}},{key:Symbol.toStringTag,get:function(){return`Set`}}])}(),yr=f(`ObservableSet`,vr),br=Object.create(null),xr=function(){function e(e,t,n,r){t===void 0&&(t=new Map),r===void 0&&(r=yn),this.h=void 0,this.j=void 0,this.tt=void 0,this.un=void 0,this.lt=void 0,this.ut=void 0,this.et=void 0,this.v=void 0,this.p=void 0,this.on=void 0,this.sn=void 0,this.h=e,this.j=t,this.tt=n,this.un=r,this.lt=new hn(`ObservableObject.keys`),this.p=c(this.h)}var n=e.prototype;return n.O=function(e){return this.j.get(e).get()},n.S=function(e,t){var n=this.j.get(e);if(n instanceof In)return n.set(t),!0;if(At(this)){var r=Mt(this,{type:or,object:this.v||this.h,name:e,newValue:t});if(!r)return null;t=r.newValue}if((t=n.xt(t))!==z.UNCHANGED){var i=Nt(this),a=i?{type:or,observableKind:`object`,debugObjectName:this.tt,object:this.v||this.h,oldValue:n.Ot,name:e,newValue:t}:null;n.gt(t),i&&Ft(this,a)}return!0},n.ct=function(e){return z.trackingDerivation&&!g(this.h,e)&&this.it(e),this.h[e]},n.ht=function(e,t,n){return n===void 0&&(n=!1),g(this.h,e)?this.j.has(e)?this.S(e,t):n?Reflect.set(this.h,e,t):(this.h[e]=t,!0):this.s(e,{value:t,enumerable:!0,writable:!0,configurable:!0},this.un,n)},n.it=function(e){if(!z.trackingDerivation)return e in this.h;this.sn||=new Map;var t=this.sn.get(e);return t||(t=new Pn(e in this.h,le,`ObservableObject.key?`,!1),this.sn.set(e,t)),t.get()},n.o=function(e,n){if(!0===n&&(n=this.un),!1!==n){if(!(e in this.h)){var r;if((r=this.h[mn])!=null&&r[e])return;t(1,n.i,this.tt+`.`+e.toString())}for(var i=this.h;i&&i!==on;){var a=rn(i,e);if(a){var o=n.o(this,e,a,i);if(o===0)return;if(o===1)break}i=Object.getPrototypeOf(i)}Gt(this,0,e)}},n.s=function(e,t,n,r){if(r===void 0&&(r=!1),!0===n&&(n=this.un),!1===n)return this.l(e,t,r);var i=n.s(this,e,t,r);return i&&Gt(this,0,e),i},n.l=function(e,t,n){n===void 0&&(n=!1);try{$e();var r=this.Ut(e);if(!r)return r;if(At(this)){var i=Mt(this,{object:this.v||this.h,name:e,type:mr,newValue:t.value});if(!i)return null;var a=i.newValue;t.value!==a&&(t=ee({},t,{value:a}))}if(n){if(!Reflect.defineProperty(this.h,e,t))return!1}else an(this.h,e,t);this.fn(e,t.value)}finally{et()}return!0},n.g=function(e,t,n,r){r===void 0&&(r=!1);try{$e();var i=this.Ut(e);if(!i)return i;if(At(this)){var a=Mt(this,{object:this.v||this.h,name:e,type:mr,newValue:t});if(!a)return null;t=a.newValue}var o=Ut(e),s={configurable:!z.safeDescriptors||this.p,enumerable:!0,get:o.get,set:o.set};if(r){if(!Reflect.defineProperty(this.h,e,s))return!1}else an(this.h,e,s);var c=new Pn(t,n,`ObservableObject.key`,!1);this.j.set(e,c),this.fn(e,c.Ot)}finally{et()}return!0},n.m=function(e,t,n){n===void 0&&(n=!1);try{$e();var r=this.Ut(e);if(!r)return r;if(At(this)&&!Mt(this,{object:this.v||this.h,name:e,type:mr,newValue:void 0}))return null;t.name||=`ObservableObject.key`,t.context=this.v||this.h;var i=Ut(e),a={configurable:!z.safeDescriptors||this.p,enumerable:!1,get:i.get,set:i.set};if(n){if(!Reflect.defineProperty(this.h,e,a))return!1}else an(this.h,e,a);this.j.set(e,new In(t)),this.fn(e,void 0)}finally{et()}return!0},n.Ut=function(e,t){if(t===void 0&&(t=!1),!g(this.h,e))return!0;if(At(this)&&!Mt(this,{object:this.v||this.h,name:e,type:`remove`}))return null;try{var n;$e();var r=Nt(this),i=this.j.get(e),a=void 0;if(!i&&r&&(a=rn(this.h,e)?.value),t){if(!Reflect.deleteProperty(this.h,e))return!1}else delete this.h[e];i&&(this.j.delete(e),i instanceof Pn&&(a=i.Ot),nt(i)),this.lt.reportChanged(),(n=this.sn)==null||(n=n.get(e))==null||n.set(e in this.h),r&&r&&Ft(this,{type:`remove`,observableKind:`object`,object:this.v||this.h,debugObjectName:this.tt,oldValue:a,name:e})}finally{et()}return!0},n._t=function(e){return Pt(this,e)},n.St=function(e){return jt(this,e)},n.fn=function(e,t){var n,r=Nt(this);r&&r&&Ft(this,r?{type:mr,observableKind:`object`,debugObjectName:this.tt,object:this.v||this.h,name:e,newValue:t}:null),(n=this.sn)==null||(n=n.get(e))==null||n.set(!0),this.lt.reportChanged()},n.rt=function(){return this.lt.reportObserved(),fn(this.h)},n.nt=function(){return this.lt.reportObserved(),Object.keys(this.h)},e}(),B=f(`ObservableObjectAdministration`,xr),Sr=Kt(0),Cr=function(){var e=!1,t={};return Object.defineProperty(t,`0`,{set:function(){e=!0}}),Object.create(t)[0]=1,!1===e}(),wr=0,Tr=function(){};ur=Tr,dr=Array.prototype,Object.setPrototypeOf?Object.setPrototypeOf(ur.prototype,dr):ur.prototype.__proto__===void 0?ur.prototype=dr:ur.prototype.__proto__=dr;var Er=function(e){function t(t,n,r,i){var a;return r===void 0&&(r=`ObservableArray`),i===void 0&&(i=!1),a=e.call(this)||this,Qt((function(){var e=new cr(r,n,i,!0);e.v=a,d(a,F,e),t&&t.length&&a.spliceWithArray(0,0,t),Cr&&Object.defineProperty(a,`0`,Sr)})),a}w(t,e);var n=t.prototype;return n.concat=function(){this[F].st.reportObserved();var e=[...arguments];return Array.prototype.concat.apply(this.slice(),e.map((function(e){return zt(e)?e.slice():e})))},n[Symbol.iterator]=function(){var e=this,t=0;return en({next:function(){return t<e.length?{value:e[t++],done:!1}:{done:!0,value:void 0}}})},S(t,[{key:`length`,get:function(){return this[F].Ft()},set:function(e){this[F].Xt(e)}},{key:Symbol.toStringTag,get:function(){return`Array`}}])}(Tr);Object.entries(lr).forEach((function(e){var t=e[0];t!==`concat`&&u(Er.prototype,t,e[1])})),qt(1e3);var Dr=on.toString,Or=n().Iterator?.prototype||{};[`Symbol`,`Map`,`Set`].forEach((function(e){n()[e]===void 0&&t(`MobX requires global '`+e+`' to be available or polyfilled`)})),typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__==`object`&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:at,extras:{getDebugName:Zt},$mobx:F}),e.$mobx=F,e.FlowCancellationError=er,e.ObservableMap=hr,e.ObservableSet=vr,e.Reaction=Un,e._allowStateChanges=Le,e._allowStateChangesInsideComputed=st,e._allowStateReadsEnd=Je,e._allowStateReadsStart=qe,e._autoAction=Zn,e._endAction=Ie,e._getAdministration=Xt,e._getGlobalState=function(){return z},e._interceptReads=function(e,t,n){var r;return gr(e)||zt(e)||Fn(e)?r=Xt(e):Wt(e)&&(r=Xt(e,t)),r.dehancer=typeof t==`function`?t:n,function(){r.dehancer=void 0}},e._isComputingDerivation=function(){return z.trackingDerivation!==null},e._resetGlobalState=function(){var e=new Bn;for(var t in e)zn.indexOf(t)===-1&&(z[t]=e[t]);z.allowStateChanges=!z.enforceActions},e._startAction=Fe,e.action=Xn,e.autorun=lt,e.comparer=_n,e.computed=kn,e.configure=function(e){!0===e.isolateGlobalState&&function(){if((z.pendingReactions.length||z.inBatch||z.isRunningReactions)&&t(36),Hn=!0,Vn){var e=n();--e.__mobxInstanceCount==0&&(e.__mobxGlobals=void 0),z=new Bn}}();var r,i,a=e.useProxies,o=e.enforceActions;if(a!==void 0&&(z.useProxies=a===`always`||a!==`never`&&typeof Proxy<`u`),a===`ifavailable`&&(z.verifyProxies=!0),o!==void 0){var s=o===`always`?`always`:o===`observed`;z.enforceActions=s,z.allowStateChanges=!0!==s&&s!==`always`}[`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`disableErrorBoundaries`,`safeDescriptors`].forEach((function(t){t in e&&(z[t]=!!e[t])})),z.allowStateReads=!z.observableRequiresReaction,e.reactionScheduler&&(r=e.reactionScheduler,i=Wn,Wn=function(e){return r((function(){return i(e)}))})},e.createAtom=se,e.defineProperty=function(e,n,r){if(Wt(e))return e[F].l(n,r);t(39)},e.entries=function(e){return Wt(e)?St(e).map((function(t){return[t,e[t]]})):gr(e)?St(e).map((function(t){return[t,e.get(t)]})):yr(e)?Array.from(e.entries()):zt(e)?e.map((function(e,t){return[t,e]})):void t(7)},e.extendObservable=mt,e.flow=rr,e.flowResult=function(e){return e},e.get=function(e,n){if(Ct(e,n))return Wt(e)?e[F].ct(n):gr(e)?e.get(n):zt(e)?e[n]:void t(11)},e.getAtom=Yt,e.getDebugName=Zt,e.getDependencyTree=function(e,t){return ht(Yt(e,t))},e.getObserverTree=function(e,t){return gt(Yt(e,t))},e.has=Ct,e.intercept=function(e,t,n){return a(n)?function(e,t,n){return Xt(e,t).St(n)}(e,t,n):function(e,t){return Xt(e).St(t)}(e,t)},e.isAction=ct,e.isBoxedObservable=Fn,e.isComputed=function(e){return yt(e)},e.isComputedProp=function(e,t){return yt(e,t)},e.isFlow=vt,e.isFlowCancellationError=function(e){return e instanceof er},e.isObservable=xt,e.isObservableArray=zt,e.isObservableMap=gr,e.isObservableObject=Wt,e.isObservableProp=function(e,t){return bt(e,t)},e.isObservableSet=yr,e.keys=St,e.makeAutoObservable=function(e,t,n){return c(e)?mt(e,e,t,n):(Qt((function(){var r=Ht(e,n)[F];if(!e[ar]){var i=Object.getPrototypeOf(e),a=new Set([].concat(fn(e),fn(i)));a.delete(`constructor`),a.delete(F),u(i,ar,a)}e[ar].forEach((function(e){return r.o(e,!t||!(e in t)||t[e])}))})),e)},e.makeObservable=function(e,t,n){return Qt((function(){var r=Ht(e,n)[F];t??=function(e){return g(e,mn)||u(e,mn,ee({},e[mn])),e[mn]}(e),fn(t).forEach((function(e){return r.o(e,t[e])}))})),e},e.observable=En,e.observe=function(e,t,n,r){return a(n)?function(e,t,n,r){return Xt(e,t)._t(n,r)}(e,t,n,r):function(e,t,n){return Xt(e)._t(t,n)}(e,t,n)},e.onBecomeObserved=dt,e.onBecomeUnobserved=ft,e.onReactionError=function(e){return z.globalReactionErrorHandlers.push(e),function(){var t=z.globalReactionErrorHandlers.indexOf(e);t>=0&&z.globalReactionErrorHandlers.splice(t,1)}},e.override=vn,e.ownKeys=wt,e.reaction=function(e,t,n){function r(){if(p=!1,!h.isDisposed){var t=!1,r=s;h.track((function(){var n=Le(!1,(function(){return e(h)}));t=f||!m(s,n),s=n})),(f&&n.fireImmediately||!f&&t)&&l(s,r,h),f=!1}}var i;n===void 0&&(n=cn);var a,o,s,c=n.name??`Reaction`,l=Xn(c,n.onError?(a=n.onError,o=t,function(){try{return o.apply(this,arguments)}catch(e){a.call(this,e)}}):t),u=!n.scheduler&&!n.delay,d=ut(n),f=!0,p=!1,m=n.compareStructural?_n.structural:n.equals||_n.default,h=new Un(c,(function(){f||u?r():p||(p=!0,d(r))}),n.onError,n.requiresObservable);return(i=n)!=null&&(i=i.signal)!=null&&i.aborted||h.Y(),h.Z(n?.signal)},e.remove=function(e,n){Wt(e)?e[F].Ut(n):gr(e)||yr(e)?e.delete(n):zt(e)?(typeof n!=`number`&&(n=parseInt(n,10)),e.splice(n,1)):t(9)},e.runInAction=st,e.set=function e(n,r,i){if(arguments.length!==2||yr(n))Wt(n)?n[F].ht(r,i):gr(n)?n.set(r,i):yr(n)?n.add(r):zt(n)?(typeof r!=`number`&&(r=parseInt(r,10)),r<0&&t(`Invalid index: '`+r+`'`),$e(),r>=n.length&&(n.length=r+1),n[r]=i,et()):t(8);else{$e();var a=r;try{for(var o in a)e(n,o,a[o])}finally{et()}}},e.spy=at,e.toJS=function(e){return function e(t,n){if(typeof t!=`object`||!t||t instanceof Date||!xt(t))return t;if(Fn(t)||R(t))return e(t.get(),n);if(n.has(t))return n.get(t);if(zt(t)){var r=Tt(n,t,Array(t.length));return t.forEach((function(t,i){r[i]=e(t,n)})),r}if(yr(t)){var i=Tt(n,t,new Set);return t.forEach((function(t){i.add(e(t,n))})),i}if(gr(t)){var a=Tt(n,t,new Map);return t.forEach((function(t,r){a.set(r,e(t,n))})),a}var o=Tt(n,t,{});return wt(t).forEach((function(r){on.propertyIsEnumerable.call(t,r)&&(o[r]=e(t[r],n))})),o}(e,new Map)},e.trace=function(){},e.transaction=Et,e.untracked=We,e.values=function(e){return Wt(e)?St(e).map((function(t){return e[t]})):gr(e)?St(e).map((function(t){return e.get(t)})):yr(e)?Array.from(e.values()):zt(e)?e.slice():void t(6)},e.when=function(e,t,n){return arguments.length===1||t&&typeof t==`object`?Ot(e,t):Dt(e,t,n||{})}})),Ig=pe((e=>{Object.defineProperty(e,`__esModule`,{value:!0});var t={0:`Invalid value for configuration 'enforceActions', expected 'never', 'always' or 'observed'`,1:function(e,t){return`Cannot apply '`+e+`' to '`+t.toString()+`': Field not found.`},5:`'keys()' can only be used on observable objects, arrays, sets and maps`,6:`'values()' can only be used on observable objects, arrays, sets and maps`,7:`'entries()' can only be used on observable objects, arrays and maps`,8:`'set()' can only be used on observable objects, arrays and maps`,9:`'remove()' can only be used on observable objects, arrays and maps`,10:`'has()' can only be used on observable objects, arrays and maps`,11:`'get()' can only be used on observable objects, arrays and maps`,12:`Invalid annotation`,13:`Dynamic observable objects cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)`,14:`Intercept handlers should return nothing or a change object`,15:`Observable arrays cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)`,16:`Modification exception: the internal structure of an observable array was changed.`,17:function(e,t){return`[mobx.array] Index out of bounds, `+e+` is larger than `+t},18:`mobx.map requires Map polyfill for the current browser. Check babel-polyfill or core-js/es6/map.js`,19:function(e){return`Cannot initialize from classes that inherit from Map: `+e.constructor.name},20:function(e){return`Cannot initialize map from `+e},21:function(e){return`Cannot convert to map from '`+e+`'`},22:`mobx.set requires Set polyfill for the current browser. Check babel-polyfill or core-js/es6/set.js`,23:`It is not possible to get index atoms from arrays`,24:function(e){return`Cannot obtain administration from `+e},25:function(e,t){return`the entry '`+e+`' does not exist in the observable map '`+t+`'`},26:`please specify a property`,27:function(e,t){return`no observable property '`+e.toString()+`' found on the observable object '`+t+`'`},28:function(e){return`Cannot obtain atom from `+e},29:`Expecting some object`,30:`invalid action stack. did you forget to finish an action?`,31:`missing option for computed: get`,32:function(e,t){return`Cycle detected in computation `+e+`: `+t},33:function(e){return`The setter of computed value '`+e+`' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?`},34:function(e){return`[ComputedValue '`+e+`'] It is not possible to assign a new value to a computed value.`},35:"There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`",36:`isolateGlobalState should be called before MobX is running any reactions`,37:function(e){return"[mobx] `observableArray."+e+"()` mutates the array in-place, which is not allowed inside a derivation. Use `array.slice()."+e+"()` instead"},38:`'ownKeys()' can only be used on observable objects`,39:`'defineProperty()' can only be used on observable objects`};function n(e){var n=[...arguments].slice(1),r=typeof e==`string`?e:t[e];throw typeof r==`function`&&(r=r.apply(null,n)),Error(`[MobX] `+r)}var r={};function i(){return typeof globalThis<`u`?globalThis:typeof window<`u`?window:typeof global<`u`?global:typeof self<`u`?self:r}var a=Object.assign,o=Object.getOwnPropertyDescriptor,s=Object.defineProperty,c=Object.prototype,l=[];Object.freeze(l);var u={};Object.freeze(u);var d=typeof Proxy<`u`,f=Object.toString();function p(){d||n("`Proxy` objects are not available in the current environment. Please configure MobX to enable a fallback implementation.`")}function m(e){I.verifyProxies&&n(`MobX is currently configured to be able to run in ES5 mode, but in ES5 MobX won't be able to `+e)}function h(){return++I.mobxGuid}function g(e){var t=!1;return function(){if(!t)return t=!0,e.apply(this,arguments)}}var _=function(){};function v(e){return typeof e==`function`}function y(e){switch(typeof e){case`string`:case`symbol`:case`number`:return!0}return!1}function b(e){return typeof e==`object`&&!!e}function x(e){if(!b(e))return!1;var t=Object.getPrototypeOf(e);if(t==null)return!0;var n=Object.hasOwnProperty.call(t,`constructor`)&&t.constructor;return typeof n==`function`&&n.toString()===f}function S(e){var t=e?.constructor;return t?t.name===`GeneratorFunction`||t.displayName===`GeneratorFunction`:!1}function C(e,t,n){s(e,t,{enumerable:!1,writable:!0,configurable:!0,value:n})}function ee(e,t,n){s(e,t,{enumerable:!1,writable:!1,configurable:!0,value:n})}function te(e,t){var n=`isMobX`+e;return t.prototype[n]=!0,function(e){return b(e)&&e[n]===!0}}function w(e){return e!=null&&Object.prototype.toString.call(e)===`[object Map]`}function ne(e){return Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(e)))===null}function re(e){return e!=null&&Object.prototype.toString.call(e)===`[object Set]`}var ie=Object.getOwnPropertySymbols!==void 0;function T(e){var t=Object.keys(e);if(!ie)return t;var n=Object.getOwnPropertySymbols(e);return n.length?[].concat(t,n.filter(function(t){return c.propertyIsEnumerable.call(e,t)})):t}var E=typeof Reflect<`u`&&Reflect.ownKeys?Reflect.ownKeys:ie?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames;function ae(e){return typeof e==`string`?e:typeof e==`symbol`?e.toString():new String(e).toString()}function oe(e){return e===null?null:typeof e==`object`?``+e:e}function se(e,t){return c.hasOwnProperty.call(e,t)}var ce=Object.getOwnPropertyDescriptors||function(e){var t={};return E(e).forEach(function(n){t[n]=o(e,n)}),t};function le(e,t){return!!(e&t)}function ue(e,t,n){return n?e|=t:e&=~t,e}function de(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function fe(e,t,n){if(ye())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var i=new(e.bind.apply(e,r));return n&&be(i,n.prototype),i}function pe(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,Se(r.key),r)}}function me(e,t,n){return t&&pe(e.prototype,t),n&&pe(e,n),Object.defineProperty(e,`prototype`,{writable:!1}),e}function he(e,t){var n=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=Ce(e))||t&&e&&typeof e.length==`number`){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw TypeError(`Invalid attempt to iterate non-iterable instance.
|
|
56
|
+
'`+s.i+`' can only be used on properties with a function value.`)}function me(e,t,n,r,i){var a,o,s;i===void 0&&(i=z.safeDescriptors);var c=r.value;return(a=t.u)!=null&&a.bound&&(c=c.bind(e.v??e.h)),{value:Ne(t.u?.name??n.toString(),c,(o=t.u?.autoAction)!=null&&o,(s=t.u)!=null&&s.bound?e.v??e.h:void 0),configurable:!i||e.p,enumerable:!1,writable:!i}}function he(e,t){return{i:e,u:t,o:D,s:ge,t:_e}}function D(e,t,n,r){var i;return r===e.h?this.s(e,t,n,!1)===null?0:2:(i=this.u)!=null&&i.bound&&(!g(e.h,t)||!vt(e.h[t]))&&this.s(e,t,n,!1)===null?0:vt(n.value)?1:(an(r,t,ve(e,0,0,n,!1,!1)),2)}function ge(e,t,n,r){var i=ve(e,0,0,n,this.u?.bound);return e.l(t,i,r)}function _e(e,t){var n,r=t.name,i=t.addInitializer;return vt(e)||(e=rr(e)),(n=this.u)!=null&&n.bound&&i((function(){var e=this[r].bind(this);e.isMobXFlow=!0,this[r]=e})),e}function ve(e,t,n,r,i,a){a===void 0&&(a=z.safeDescriptors);var o=r.value;return vt(o)||(o=rr(o)),i&&((o=o.bind(e.v??e.h)).isMobXFlow=!0),{value:o,configurable:!a||e.p,enumerable:!1,writable:!a}}function ye(e,t){return{i:e,u:t,o:be,s:xe,t:Se}}function be(e,t,n){return this.s(e,t,n,!1)===null?0:1}function xe(e,t,n,r){return e.m(t,ee({},this.u,{get:n.get,set:n.set}),r)}function Se(e,t){var n=this,r=t.name;return(0,t.addInitializer)((function(){var t=Ht(this)[F],i=ee({},n.u,{get:e,context:this});i.name||=`ObservableObject.`+r.toString(),t.j.set(r,new In(i))})),function(){return this[F].O(r)}}function Ce(e,t){return{i:e,u:t,o:we,s:Te,t:Ee}}function we(e,t,n){return this.s(e,t,n,!1)===null?0:1}function Te(e,t,n,r){return e.g(t,n.value,this.u?.enhancer??ce,r)}function Ee(e,t){function n(e,t){var n=Ht(e)[F],i=new Pn(t,r.u?.enhancer??ce,`ObservableObject.`+a.toString(),!1);n.j.set(a,i),o.add(e)}var r=this,i=t.kind,a=t.name,o=new WeakSet;if(i==`accessor`)return{get:function(){return o.has(this)||n(this,e.get.call(this)),this[F].O(a)},set:function(e){return o.has(this)||n(this,e),this[F].S(a,e)},init:function(e){return o.has(this)||n(this,e),e}}}function De(e){return{i:`true`,u:e,o:Oe,s:ke,t:Ae}}function Oe(e,t,n,r){var i,a,o;if(n.get)return kn.o(e,t,n,r);if(n.set){var s=ct(n.set)?n.set:Ne(t.toString(),n.set);return r===e.h?e.l(t,{configurable:!z.safeDescriptors||e.p,set:s})===null?0:2:(an(r,t,{configurable:!0,set:s}),2)}if(r!==e.h&&typeof n.value==`function`)return l(n.value)?((o=this.u)!=null&&o.autoBind?rr.bound:rr).o(e,t,n,r):((a=this.u)!=null&&a.autoBind?Zn.bound:Zn).o(e,t,n,r);var c=!1===this.u?.deep?En.ref:En;return typeof n.value==`function`&&(i=this.u)!=null&&i.autoBind&&(n.value=n.value.bind(e.v??e.h)),c.o(e,t,n,r)}function ke(e,t,n,r){var i;return n.get?kn.s(e,t,n,r):n.set?e.l(t,{configurable:!z.safeDescriptors||e.p,set:Ne(t.toString(),n.set)},r):(typeof n.value==`function`&&(i=this.u)!=null&&i.autoBind&&(n.value=n.value.bind(e.v??e.h)),(!1===this.u?.deep?En.ref:En).s(e,t,n,r))}function Ae(){t(`'`+this.i+`' cannot be used as a decorator`)}function je(e){return e||bn}function O(e){return!0===e.deep?ce:!1===e.deep?le:(t=e.defaultDecorator)&&(n=(r=t.u)?.enhancer)!=null?n:ce;var t,n,r}function Me(e,t,n){return oe(t)?xn.t(e,t):o(t)?void ae(e,t,xn):xt(e)?e:c(e)?En.object(e,t,n):Array.isArray(e)?En.array(e,t):p(e)?En.map(e,t):m(e)?En.set(e,t):typeof e==`object`&&e?e:En.box(e,t)}function Ne(e,t,n,r){function i(){return Pe(0,n,t,r||this,arguments)}return n===void 0&&(n=!1),i.isMobxAction=!0,i.toString=function(){return t.toString()},Mn&&(Nn.value=e,an(i,`name`,Nn)),i}function Pe(e,t,n,r,i){var a=Fe(0,t);try{return n.apply(r,i)}catch(e){throw a._=e,e}finally{Ie(a)}}function Fe(e,t){var n=z.trackingDerivation,r=!t||!n;$e();var i=z.allowStateChanges;r&&(Ge(),i=Re(!0));var a={A:r,k:n,M:i,V:qe(!0),R:!1,N:0,T:jn++,C:An};return An=a.T,a}function Ie(e){An!==e.T&&t(30),An=e.C,e._!==void 0&&(z.suppressReactionErrors=!0),ze(e.M),Je(e.V),et(),e.A&&Ke(e.k),z.suppressReactionErrors=!1}function Le(e,t){var n=Re(e);try{return t()}finally{ze(n)}}function Re(e){var t=z.allowStateChanges;return z.allowStateChanges=e,t}function ze(e){z.allowStateChanges=e}function Be(e){return e instanceof Rn}function Ve(e){switch(e.I){case L.L:return!1;case L.P:case L.K:return!0;case L.B:for(var t=qe(!0),n=Ge(),r=e.D,i=r.length,a=0;a<i;a++){var o=r[a];if(R(o)){if(z.disableErrorBoundaries)o.get();else try{o.get()}catch{return Ke(n),Je(t),!0}if(e.I===L.K)return Ke(n),Je(t),!0}}return Ye(e),Ke(n),Je(t),!1}}function He(e,t,n){var r=qe(!0);Ye(e),e.W=Array(e.q===0?100:e.D.length),e.G=0,e.q=++z.runId;var i,a=z.trackingDerivation;if(z.trackingDerivation=e,z.inBatch++,!0===z.disableErrorBoundaries)i=t.call(n);else try{i=t.call(n)}catch(e){i=new Rn(e)}return z.inBatch--,z.trackingDerivation=a,function(e){for(var t=e.D,n=e.D=e.W,r=L.L,i=0,a=e.G,o=0;o<a;o++){var s=n[o];s.diffValue===0&&(s.diffValue=1,i!==o&&(n[i]=s),i++),s.I>r&&(r=s.I)}for(n.length=i,e.W=null,a=t.length;a--;){var c=t[a];c.diffValue===0&&Ze(c,e),c.diffValue=0}for(;i--;){var l=n[i];l.diffValue===1&&(l.diffValue=0,Xe(l,e))}r!==L.L&&(e.I=r,e.H())}(e),Je(r),i}function Ue(e){var t=e.D;e.D=[];for(var n=t.length;n--;)Ze(t[n],e);e.I=L.P}function We(e){var t=Ge();try{return e()}finally{Ke(t)}}function Ge(){var e=z.trackingDerivation;return z.trackingDerivation=null,e}function Ke(e){z.trackingDerivation=e}function qe(e){var t=z.allowStateReads;return z.allowStateReads=e,t}function Je(e){z.allowStateReads=e}function Ye(e){if(e.I!==L.L){e.I=L.L;for(var t=e.D,n=t.length;n--;)t[n].U=L.L}}function Xe(e,t){e.F.add(t),e.U>t.I&&(e.U=t.I)}function Ze(e,t){e.F.delete(t),e.F.size===0&&Qe(e)}function Qe(e){!1===e.isPendingUnobservation&&(e.isPendingUnobservation=!0,z.pendingUnobservations.push(e))}function $e(){z.inBatch++}function et(){if(--z.inBatch==0){rt();for(var e=z.pendingUnobservations,t=0;t<e.length;t++){var n=e[t];n.isPendingUnobservation=!1,n.F.size===0&&(n.isBeingObserved&&(n.isBeingObserved=!1,n.onBUO()),n instanceof In&&n.X())}z.pendingUnobservations=[]}}function tt(e){var t=z.trackingDerivation;return t===null?(e.F.size===0&&z.inBatch>0&&Qe(e),!1):(t.q!==e.$&&(e.$=t.q,t.W[t.G++]=e,!e.isBeingObserved&&z.trackingContext&&(e.isBeingObserved=!0,e.onBO())),e.isBeingObserved)}function nt(e){e.U!==L.K&&(e.U=L.K,e.F.forEach((function(e){e.I===L.L&&e.H(),e.I=L.K})))}function rt(){z.inBatch>0||z.isRunningReactions||Wn(it)}function it(){z.isRunningReactions=!0;for(var e=z.pendingReactions,t=0;e.length>0;){++t==100&&(console.error(`[mobx] cycle in reaction: `+e[0]),e.splice(0));for(var n=e.splice(0),r=0,i=n.length;r<i;r++)n[r].J()}z.isRunningReactions=!1}function at(){return console.warn(`[mobx.spy] Is a no-op in production builds`),function(){}}function ot(e){return function(t,n){return a(t)?Ne(t.name||`<unnamed action>`,t,e):a(n)?Ne(t,n,e):oe(n)?(e?Jn:Kn).t(t,n):o(n)?ae(t,n,e?Jn:Kn):o(t)?E(ue(e?`autoAction`:`action`,{name:t,autoAction:e})):void 0}}function st(e){return Pe(0,!1,e,this,void 0)}function ct(e){return a(e)&&!0===e.isMobxAction}function lt(e,t){function n(){e(i)}var r;t===void 0&&(t=cn);var i,a=t?.name??`Autorun`;if(t.scheduler||t.delay){var o=ut(t),s=!1;i=new Un(a,(function(){s||(s=!0,o((function(){s=!1,i.isDisposed||i.track(n)})))}),t.onError,t.requiresObservable)}else i=new Un(a,(function(){this.track(n)}),t.onError,t.requiresObservable);return(r=t)!=null&&(r=r.signal)!=null&&r.aborted||i.Y(),i.Z(t?.signal)}function ut(e){return e.scheduler?e.scheduler:e.delay?function(t){return setTimeout(t,e.delay)}:Qn}function dt(e,t,n){return pt(`onBO`,e,t,n)}function ft(e,t,n){return pt(`onBUO`,e,t,n)}function pt(e,t,n,r){var i=typeof r==`function`?Yt(t,n):Yt(t),o=a(r)?r:n,s=e+`L`;return i[s]?i[s].add(o):i[s]=new Set([o]),function(){var e=i[s];e&&(e.delete(o),e.size===0&&delete i[s])}}function mt(e,t,n,r){var i=pn(t);return Qt((function(){var t=Ht(e,r)[F];fn(i).forEach((function(e){t.s(e,i[e],!n||!(e in n)||n[e])}))})),e}function ht(e){var t,n={name:e.tt};return e.D&&e.D.length>0&&(n.dependencies=(t=e.D,Array.from(new Set(t))).map(ht)),n}function gt(e){var t={name:e.tt};return function(e){return e.F&&e.F.size>0}(e)&&(t.observers=Array.from(function(e){return e.F}(e)).map(gt)),t}function _t(e){a(e.cancel)&&e.cancel()}function vt(e){return!0===e?.isMobXFlow}function yt(e,t){return t===void 0?R(e):!1===Wt(e)||!e[F].j.has(t)?!1:R(Yt(e,t))}function bt(e,t){return!!e&&(t===void 0?Wt(e)||!!e[F]||gn(e)||Gn(e)||R(e):!!Wt(e)&&e[F].j.has(t))}function xt(e){return bt(e)}function St(e){return Wt(e)?e[F].nt():gr(e)||yr(e)?Array.from(e.keys()):zt(e)?e.map((function(e,t){return t})):void t(5)}function Ct(e,n){return Wt(e)?e[F].it(n):gr(e)||yr(e)?e.has(n):zt(e)?n>=0&&n<e.length:void t(10)}function wt(e){if(Wt(e))return e[F].rt();t(38)}function Tt(e,t,n){return e.set(t,n),n}function Et(e,t){t===void 0&&(t=void 0),$e();try{return e.apply(t)}finally{et()}}function Dt(e,t,n){var r;if(typeof n.timeout==`number`){var i=Error(`WHEN_TIMEOUT`);r=setTimeout((function(){if(!o[F].isDisposed){if(o(),!n.onError)throw i;n.onError(i)}}),n.timeout)}n.name=`When`;var a=Ne(`When-effect`,t),o=lt((function(t){Le(!1,e)&&(t.dispose(),r&&clearTimeout(r),a())}),n);return o}function Ot(e,t){var n,r,i;if(t!=null&&(n=t.signal)!=null&&n.aborted)return Object.assign(Promise.reject(Error(`WHEN_ABORTED`)),{cancel:function(){return null}});var a=new Promise((function(n,a){var o,s=Dt(e,n,ee({},t,{onError:a}));r=function(){s(),a(Error(`WHEN_CANCELLED`))},i=function(){s(),a(Error(`WHEN_ABORTED`))},t==null||(o=t.signal)==null||o.addEventListener==null||o.addEventListener(`abort`,i)})).finally((function(){var e;return t==null||(e=t.signal)==null||e.removeEventListener==null?void 0:e.removeEventListener(`abort`,i)}));return a.cancel=r,a}function kt(e){return e[F]}function At(e){return e.et!==void 0&&e.et.length>0}function jt(e,t){var n=e.et||=[];return n.push(t),i((function(){var e=n.indexOf(t);e!==-1&&n.splice(e,1)}))}function Mt(e,n){var r=Ge();try{for(var i=[].concat(e.et||[]),a=0,o=i.length;a<o&&((n=i[a](n))&&!n.type&&t(14),n);a++);return n}finally{Ke(r)}}function Nt(e){return e.ut!==void 0&&e.ut.length>0}function Pt(e,t){var n=e.ut||=[];return n.push(t),i((function(){var e=n.indexOf(t);e!==-1&&n.splice(e,1)}))}function Ft(e,t){var n=Ge(),r=e.ut;if(r){for(var i=0,a=(r=r.slice()).length;i<a;i++)r[i](t);Ke(n)}}function It(e,t,n,i){return n===void 0&&(n=`ObservableArray`),i===void 0&&(i=!1),r(),Qt((function(){var r=new cr(n,t,i,!1);d(r.j,F,r);var a=new Proxy(r.j,sr);return r.v=a,e&&e.length&&r.ot(0,0,e),a}))}function k(e,t){typeof Array.prototype[e]==`function`&&(lr[e]=t(e))}function Lt(e){return function(){var t=this[F];t.st.reportObserved();var n=t.ft(t.j);return n[e].apply(n,arguments)}}function A(e){return function(t,n){var r=this,i=this[F];return i.st.reportObserved(),i.ft(i.j)[e]((function(e,i){return t.call(n,e,i,r)}))}}function Rt(e){return function(){var t=this,n=this[F];n.st.reportObserved();var r=n.ft(n.j),i=arguments[0];return arguments[0]=function(e,n,r){return i(e,n,r,t)},r[e].apply(r,arguments)}}function zt(e){return s(e)&&fr(e[F])}function Bt(e){return e[Symbol.toStringTag]=`MapIterator`,en(e)}function Vt(e){return e[Symbol.toStringTag]=`SetIterator`,en(e)}function Ht(e,t){if(g(e,F))return e;var n=t?.name??`ObservableObject`;return u(e,F,new xr(e,new Map,String(n),function(e){return e?e.defaultDecorator??De(e):void 0}(t))),e}function Ut(e){return br[e]||(br[e]={get:function(){return this[F].O(e)},set:function(t){return this[F].S(e,t)}})}function Wt(e){return!!s(e)&&B(e[F])}function Gt(e,t,n){var r;(r=e.h[mn])==null||delete r[n]}function Kt(e){return{enumerable:!1,configurable:!0,get:function(){return this[F].ct(e)},set:function(t){this[F].ht(e,t)}}}function j(e){an(Er.prototype,``+e,Kt(e))}function qt(e){if(e>wr){for(var t=wr;t<e+100;t++)j(t);wr=e}}function Jt(e,t,n){return new Er(e,t,n)}function Yt(e,n){if(typeof e==`object`&&e){if(zt(e))return n!==void 0&&t(23),e[F].st;if(yr(e))return e.st;if(gr(e)){if(n===void 0)return e.lt;var r=e.vt.get(n)||e.dt.get(n);return r||t(25,n,Zt(e)),r}if(Wt(e)){if(!n)return t(26);var i=e[F].j.get(n);return i||t(27,n,Zt(e)),i}if(gn(e)||R(e)||Gn(e))return e}else if(a(e)&&Gn(e[F]))return e[F];t(28)}function Xt(e,n){return e||t(29),n===void 0?gn(e)||R(e)||Gn(e)||gr(e)||yr(e)?e:e[F]?e[F]:void t(24,e):Xt(Yt(e,n))}function Zt(e,t){var n;if(t!==void 0)n=Yt(e,t);else{if(ct(e))return e.name;n=Wt(e)||gr(e)||yr(e)?Xt(e):Yt(e)}return n.tt}function Qt(e){var t=Ge(),n=Re(!0);$e();try{return e()}finally{et(),ze(n),Ke(t)}}function $t(e,t,n){return n===void 0&&(n=-1),function e(t,n,r,i,o){if(t===n)return t!==0||1/t==1/n;if(t==null||n==null)return!1;if(t!=t)return n!=n;var s=typeof t;if(s!==`function`&&s!==`object`&&typeof n!=`object`)return!1;var c=Dr.call(t);if(c!==Dr.call(n))return!1;switch(c){case`[object RegExp]`:case`[object String]`:return``+t==``+n;case`[object Number]`:return+t==+t?+t==0?1/t==1/n:+t==+n:+n!=+n;case`[object Date]`:case`[object Boolean]`:return+t==+n;case`[object Symbol]`:return typeof Symbol<`u`&&Symbol.valueOf.call(t)===Symbol.valueOf.call(n);case`[object Map]`:case`[object Set]`:r>=0&&r++}t=M(t),n=M(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 M(e){return zt(e)?e.slice():p(e)||gr(e)||m(e)||yr(e)?Array.from(e.entries()):e}function en(e){return e[Symbol.iterator]=tn,Object.assign(Object.create(Or),e)}function tn(){return this}Object.defineProperty(e,`__esModule`,{value:!0});var nn={},N=Object.assign,rn=Object.getOwnPropertyDescriptor,an=Object.defineProperty,on=Object.prototype,sn=[];Object.freeze(sn);var cn={};Object.freeze(cn);var P=typeof Proxy<`u`,ln=Object.toString(),un=function(){},dn=Object.getOwnPropertySymbols!==void 0,fn=typeof Reflect<`u`&&Reflect.ownKeys?Reflect.ownKeys:dn?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames,pn=Object.getOwnPropertyDescriptors||function(e){var t={};return fn(e).forEach((function(n){t[n]=rn(e,n)})),t},mn=Symbol(`mobx-stored-annotations`),F=Symbol(`mobx administration`),hn=function(){function e(e){e===void 0&&(e=`Atom`),this.tt=void 0,this.bt=0,this.F=new Set,this.$=0,this.U=L.P,this.onBOL=void 0,this.onBUOL=void 0,this.tt=e}var t=e.prototype;return t.onBO=function(){this.onBOL&&this.onBOL.forEach((function(e){return e()}))},t.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(e){return e()}))},t.reportObserved=function(){return tt(this)},t.reportChanged=function(){$e(),nt(this),et()},t.toString=function(){return this.tt},S(e,[{key:`isBeingObserved`,get:function(){return _(this.bt,e.pt)},set:function(t){this.bt=v(this.bt,e.pt,t)}},{key:`isPendingUnobservation`,get:function(){return _(this.bt,e.yt)},set:function(t){this.bt=v(this.bt,e.yt,t)}},{key:`diffValue`,get:function(){return+!!_(this.bt,e.wt)},set:function(t){this.bt=v(this.bt,e.wt,t===1)}}])}();hn.pt=1,hn.yt=2,hn.wt=4;var gn=f(`Atom`,hn),_n={identity:function(e,t){return e===t},structural:function(e,t){return $t(e,t)},default:function(e,t){return Object.is?Object.is(e,t):e===t?e!==0||1/e==1/t:e!=e&&t!=t},shallow:function(e,t){return $t(e,t,1)}},vn=E({i:`override`,o:function(){return 0},s:function(){t(`'`+this.i+`' can only be used with 'makeObservable'`)},t:function(){console.warn(`'`+this.i+`' cannot be used with decorators - this is a no-op`)}}),yn=De(),bn={deep:!0,name:void 0,defaultDecorator:void 0,proxy:!0};Object.freeze(bn);var xn=Ce(`observable`),Sn=Ce(`observable.ref`,{enhancer:le}),I=Ce(`observable.shallow`,{enhancer:function(e,t,n){return e==null||Wt(e)||zt(e)||gr(e)||yr(e)?e:Array.isArray(e)?En.array(e,{name:n,deep:!1}):c(e)?En.object(e,void 0,{name:n,deep:!1}):p(e)?En.map(e,{name:n,deep:!1}):m(e)?En.set(e,{name:n,deep:!1}):void 0}}),Cn=Ce(`observable.struct`,{enhancer:function(e,t){return $t(e,t)?t:e}}),wn=E(xn);N(Me,wn);var Tn,En=N(Me,{box:function(e,t){var n=je(t);return new Pn(e,O(n),n.name,!0,n.equals)},array:function(e,t){var n=je(t);return(!1===z.useProxies||!1===n.proxy?Jt:It)(e,O(n),n.name)},map:function(e,t){var n=je(t);return new hr(e,O(n),n.name)},set:function(e,t){var n=je(t);return new vr(e,O(n),n.name)},object:function(e,t,n){return Qt((function(){return mt(!1===z.useProxies||!1===n?.proxy?Ht({},n):function(e,t){var n;return r(),(n=(e=Ht(e,t))[F]).v??(n.v=new Proxy(e,ir))}({},n),e,t)}))},ref:E(Sn),shallow:E(I),deep:wn,struct:E(Cn)}),Dn=ye(`computed`),On=ye(`computed.struct`,{equals:_n.structural}),kn=function(e,t){if(oe(t))return Dn.t(e,t);if(o(t))return ae(e,t,Dn);if(c(e))return E(ye(`computed`,e));var n=c(t)?t:{};return n.get=e,n.name||=e.name||``,new In(n)};Object.assign(kn,Dn),kn.struct=E(On);var An=0,jn=1,Mn=(Tn=rn((function(){}),`name`)?.configurable)!=null&&Tn,Nn={value:`action`,configurable:!0,writable:!1,enumerable:!1},Pn=function(e){function t(t,n,r,i,a){var o;return r===void 0&&(r=`ObservableValue`),a===void 0&&(a=_n.default),(o=e.call(this,r)||this).enhancer=void 0,o.tt=void 0,o.equals=void 0,o.jt=!1,o.et=void 0,o.ut=void 0,o.Ot=void 0,o.dehancer=void 0,o.enhancer=n,o.tt=r,o.equals=a,o.Ot=n(t,void 0,r),o}w(t,e);var n=t.prototype;return n.dehanceValue=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.set=function(e){(e=this.xt(e))!==z.UNCHANGED&&this.gt(e)},n.xt=function(e){if(At(this)){var t=Mt(this,{object:this,type:or,newValue:e});if(!t)return z.UNCHANGED;e=t.newValue}return e=this.enhancer(e,this.Ot,this.tt),this.equals(this.Ot,e)?z.UNCHANGED:e},n.gt=function(e){var t=this.Ot;this.Ot=e,this.reportChanged(),Nt(this)&&Ft(this,{type:or,object:this,newValue:e,oldValue:t})},n.get=function(){return this.reportObserved(),this.dehanceValue(this.Ot)},n.St=function(e){return jt(this,e)},n._t=function(e,t){return t&&e({observableKind:`value`,debugObjectName:this.tt,object:this,type:or,newValue:this.Ot,oldValue:void 0}),Pt(this,e)},n.raw=function(){return this.Ot},n.toJSON=function(){return this.get()},n.toString=function(){return this.tt+`[`+this.Ot+`]`},n.valueOf=function(){return h(this.get())},n[Symbol.toPrimitive]=function(){return this.valueOf()},t}(hn),Fn=f(`ObservableValue`,Pn),In=function(){function e(e){this.I=L.P,this.D=[],this.W=null,this.F=new Set,this.q=0,this.$=0,this.U=L.L,this.G=0,this.Ot=new Rn(null),this.tt=void 0,this.At=void 0,this.bt=0,this.derivation=void 0,this.kt=void 0,this.Mt=Ln.NONE,this.Et=void 0,this.Vt=void 0,this.Rt=void 0,this.Nt=void 0,this.onBOL=void 0,this.onBUOL=void 0,e.get||t(31),this.derivation=e.get,this.tt=e.name||`ComputedValue`,e.set&&(this.kt=Ne(`ComputedValue-setter`,e.set)),this.Vt=e.equals||(e.compareStructural||e.struct?_n.structural:_n.default),this.Et=e.context,this.Rt=e.requiresReaction,this.Nt=!!e.keepAlive}var n=e.prototype;return n.H=function(){(function(e){e.U===L.L&&(e.U=L.B,e.F.forEach((function(e){e.I===L.L&&(e.I=L.B,e.H())})))})(this)},n.onBO=function(){this.onBOL&&this.onBOL.forEach((function(e){return e()}))},n.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(e){return e()}))},n.get=function(){if(this.isComputing&&t(32,this.tt,this.derivation),z.inBatch!==0||this.F.size!==0||this.Nt){if(tt(this),Ve(this)){var e=z.trackingContext;this.Nt&&!e&&(z.trackingContext=this),this.trackAndCompute()&&function(e){e.U!==L.K&&(e.U=L.K,e.F.forEach((function(t){t.I===L.B?t.I=L.K:t.I===L.L&&(e.U=L.L)})))}(this),z.trackingContext=e}}else Ve(this)&&(this.Tt(),$e(),this.Ot=this.Ct(!1),et());var n=this.Ot;if(Be(n))throw n.cause;return n},n.set=function(e){if(this.kt){this.isRunningSetter&&t(33,this.tt),this.isRunningSetter=!0;try{this.kt.call(this.Et,e)}finally{this.isRunningSetter=!1}}else t(34,this.tt)},n.trackAndCompute=function(){var e=this.Ot,t=this.I===L.P,n=this.Ct(!0),r=t||Be(e)||Be(n)||!this.Vt(e,n);return r&&(this.Ot=n),r},n.Ct=function(e){this.isComputing=!0;var t,n=Re(!1);if(e)t=He(this,this.derivation,this.Et);else if(!0===z.disableErrorBoundaries)t=this.derivation.call(this.Et);else try{t=this.derivation.call(this.Et)}catch(e){t=new Rn(e)}return ze(n),this.isComputing=!1,t},n.X=function(){this.Nt||(Ue(this),this.Ot=void 0)},n._t=function(e,t){var n=this,r=!0,i=void 0;return lt((function(){var a=n.get();if(!r||t){var o=Ge();e({observableKind:`computed`,debugObjectName:n.tt,type:or,object:n,newValue:a,oldValue:i}),Ke(o)}r=!1,i=a}))},n.Tt=function(){},n.toString=function(){return this.tt+`[`+this.derivation.toString()+`]`},n.valueOf=function(){return h(this.get())},n[Symbol.toPrimitive]=function(){return this.valueOf()},S(e,[{key:`isComputing`,get:function(){return _(this.bt,e.It)},set:function(t){this.bt=v(this.bt,e.It,t)}},{key:`isRunningSetter`,get:function(){return _(this.bt,e.Lt)},set:function(t){this.bt=v(this.bt,e.Lt,t)}},{key:`isBeingObserved`,get:function(){return _(this.bt,e.pt)},set:function(t){this.bt=v(this.bt,e.pt,t)}},{key:`isPendingUnobservation`,get:function(){return _(this.bt,e.yt)},set:function(t){this.bt=v(this.bt,e.yt,t)}},{key:`diffValue`,get:function(){return+!!_(this.bt,e.wt)},set:function(t){this.bt=v(this.bt,e.wt,t===1)}}])}();In.It=1,In.Lt=2,In.pt=4,In.yt=8,In.wt=16;var L,Ln,R=f(`ComputedValue`,In);(function(e){e[e.P=-1]=`NOT_TRACKING_`,e[e.L=0]=`UP_TO_DATE_`,e[e.B=1]=`POSSIBLY_STALE_`,e[e.K=2]=`STALE_`})(L||={}),function(e){e[e.NONE=0]=`NONE`,e[e.LOG=1]=`LOG`,e[e.BREAK=2]=`BREAK`}(Ln||={});var Rn=function(e){this.cause=void 0,this.cause=e},zn=[`mobxGuid`,`spyListeners`,`enforceActions`,`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`allowStateReads`,`disableErrorBoundaries`,`runId`,`UNCHANGED`,`useProxies`],Bn=function(){this.version=6,this.UNCHANGED={},this.trackingDerivation=null,this.trackingContext=null,this.runId=0,this.mobxGuid=0,this.inBatch=0,this.pendingUnobservations=[],this.pendingReactions=[],this.isRunningReactions=!1,this.allowStateChanges=!1,this.allowStateReads=!0,this.enforceActions=!0,this.spyListeners=[],this.globalReactionErrorHandlers=[],this.computedRequiresReaction=!1,this.reactionRequiresObservable=!1,this.observableRequiresReaction=!1,this.disableErrorBoundaries=!1,this.suppressReactionErrors=!1,this.useProxies=!0,this.verifyProxies=!1,this.safeDescriptors=!0},Vn=!0,Hn=!1,z=function(){var e=n();return e.__mobxInstanceCount>0&&!e.__mobxGlobals&&(Vn=!1),e.__mobxGlobals&&e.__mobxGlobals.version!==new Bn().version&&(Vn=!1),Vn?e.__mobxGlobals?(e.__mobxInstanceCount+=1,e.__mobxGlobals.UNCHANGED||(e.__mobxGlobals.UNCHANGED={}),e.__mobxGlobals):(e.__mobxInstanceCount=1,e.__mobxGlobals=new Bn):(setTimeout((function(){Hn||t(35)}),1),new Bn)}(),Un=function(){function e(e,t,n,r){e===void 0&&(e=`Reaction`),this.tt=void 0,this.Pt=void 0,this.Kt=void 0,this.Bt=void 0,this.D=[],this.W=[],this.I=L.P,this.q=0,this.G=0,this.bt=0,this.Mt=Ln.NONE,this.tt=e,this.Pt=t,this.Kt=n,this.Bt=r}var t=e.prototype;return t.H=function(){this.Y()},t.Y=function(){this.isScheduled||(this.isScheduled=!0,z.pendingReactions.push(this),rt())},t.J=function(){if(!this.isDisposed){$e(),this.isScheduled=!1;var e=z.trackingContext;if(z.trackingContext=this,Ve(this)){this.isTrackPending=!0;try{this.Pt()}catch(e){this.Dt(e)}}z.trackingContext=e,et()}},t.track=function(e){if(!this.isDisposed){$e(),this.isRunning=!0;var t=z.trackingContext;z.trackingContext=this;var n=He(this,e,void 0);z.trackingContext=t,this.isRunning=!1,this.isTrackPending=!1,this.isDisposed&&Ue(this),Be(n)&&this.Dt(n.cause),et()}},t.Dt=function(e){var t=this;if(this.Kt)this.Kt(e,this);else{if(z.disableErrorBoundaries)throw e;z.suppressReactionErrors||console.error(`[mobx] uncaught error in '`+this+`'`,e),z.globalReactionErrorHandlers.forEach((function(n){return n(e,t)}))}},t.dispose=function(){this.isDisposed||(this.isDisposed=!0,this.isRunning||($e(),Ue(this),et()))},t.Z=function(e){var t=this,n=function n(){t.dispose(),e==null||e.removeEventListener==null||e.removeEventListener(`abort`,n)};return e==null||e.addEventListener==null||e.addEventListener(`abort`,n),n[F]=this,`dispose`in Symbol&&typeof Symbol.dispose==`symbol`&&(n[Symbol.dispose]=n),n},t.toString=function(){return`Reaction[`+this.tt+`]`},t.trace=function(){},S(e,[{key:`isDisposed`,get:function(){return _(this.bt,e.Wt)},set:function(t){this.bt=v(this.bt,e.Wt,t)}},{key:`isScheduled`,get:function(){return _(this.bt,e.qt)},set:function(t){this.bt=v(this.bt,e.qt,t)}},{key:`isTrackPending`,get:function(){return _(this.bt,e.Gt)},set:function(t){this.bt=v(this.bt,e.Gt,t)}},{key:`isRunning`,get:function(){return _(this.bt,e.Ht)},set:function(t){this.bt=v(this.bt,e.Ht,t)}},{key:`diffValue`,get:function(){return+!!_(this.bt,e.wt)},set:function(t){this.bt=v(this.bt,e.wt,t===1)}}])}();Un.Wt=1,Un.qt=2,Un.Gt=4,Un.Ht=8,Un.wt=16;var Wn=function(e){return e()},Gn=f(`Reaction`,Un),Kn=ue(`action`),qn=ue(`action.bound`,{bound:!0}),Jn=ue(`autoAction`,{autoAction:!0}),Yn=ue(`autoAction.bound`,{autoAction:!0,bound:!0}),Xn=ot(!1);Object.assign(Xn,Kn);var Zn=ot(!0);Object.assign(Zn,Jn),Xn.bound=E(qn),Zn.bound=E(Yn);var Qn=function(e){return e()},$n=0,er=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)),tr=he(`flow`),nr=he(`flow.bound`,{bound:!0}),rr=Object.assign((function(e,t){if(oe(t))return tr.t(e,t);if(o(t))return ae(e,t,tr);var n=e,r=n.name||`<unnamed flow>`,i=function(){var e,t=this,i=arguments,o=++$n,s=Xn(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=Xn(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=Xn(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=Xn(r+` - runid: `+o+` - cancel`,(function(){try{c&&_t(c);var t=s.return(void 0),n=Promise.resolve(t.value);n.then(un,un),_t(n),e(new er)}catch(t){e(t)}})),l};return i.isMobXFlow=!0,i}),tr);rr.bound=E(nr);var ir={has:function(e,t){return kt(e).it(t)},get:function(e,t){return kt(e).ct(t)},set:function(e,t,n){var r;return!!o(t)&&((r=kt(e).ht(t,n,!0))==null||r)},deleteProperty:function(e,t){var n;return!!o(t)&&((n=kt(e).Ut(t,!0))==null||n)},defineProperty:function(e,t,n){var r;return(r=kt(e).l(t,n))==null||r},ownKeys:function(e){return kt(e).rt()},preventExtensions:function(){t(13)}},ar=Symbol(`mobx-keys`),or=`update`,sr={get:function(e,t){var n=e[F];return t===F?n:t===`length`?n.Ft():typeof t!=`string`||isNaN(t)?g(lr,t)?lr[t]:e[t]:n.ct(parseInt(t))},set:function(e,t,n){var r=e[F];return t===`length`&&r.Xt(n),typeof t==`symbol`||isNaN(t)?e[t]=n:r.ht(parseInt(t),n),!0},preventExtensions:function(){t(15)}},cr=function(){function e(e,t,n,r){e===void 0&&(e=`ObservableArray`),this.zt=void 0,this.$t=void 0,this.st=void 0,this.j=[],this.et=void 0,this.ut=void 0,this.Jt=void 0,this.dehancer=void 0,this.v=void 0,this.Yt=0,this.zt=n,this.$t=r,this.st=new hn(e),this.Jt=function(e,n){return t(e,n,`ObservableArray[..]`)}}var n=e.prototype;return n.Qt=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.ft=function(e){return this.dehancer!==void 0&&e.length>0?e.map(this.dehancer):e},n.St=function(e){return jt(this,e)},n._t=function(e,t){return t===void 0&&(t=!1),t&&e({observableKind:`array`,object:this.v,debugObjectName:this.st.tt,type:`splice`,index:0,added:this.j.slice(),addedCount:this.j.length,removed:[],removedCount:0}),Pt(this,e)},n.Ft=function(){return this.st.reportObserved(),this.j.length},n.Xt=function(e){(typeof e!=`number`||isNaN(e)||e<0)&&t(`Out of range: `+e);var n=this.j.length;if(e!==n)if(e>n){for(var r=Array(e-n),i=0;i<e-n;i++)r[i]=void 0;this.ot(n,0,r)}else this.ot(e,n-e)},n.Zt=function(e,n){e!==this.Yt&&t(16),this.Yt+=n,this.$t&&n>0&&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=sn),At(this)){var a=Mt(this,{object:this.v,type:`splice`,index:e,removedCount:t,added:n});if(!a)return sn;t=a.removedCount,n=a.added}if(n=n.length===0?n:n.map((function(e){return r.Jt(e,void 0)})),this.$t){var o=n.length-t;this.Zt(i,o)}var s=this.tn(e,t,n);return t===0&&n.length===0||this.nn(e,n,s),this.ft(s)},n.tn=function(e,t,n){var r;if(n.length<1e4)return(r=this.j).splice.apply(r,[e,t].concat(n));var i=this.j.slice(e,e+t),a=this.j.slice(e+t);this.j.length+=n.length-t;for(var o=0;o<n.length;o++)this.j[e+o]=n[o];for(var s=0;s<a.length;s++)this.j[e+n.length+s]=a[s];return i},n.in=function(e,t,n){var r=!this.zt&&!1,i=Nt(this),a=i||r?{observableKind:`array`,object:this.v,type:or,debugObjectName:this.st.tt,index:e,newValue:t,oldValue:n}:null;this.st.reportChanged(),i&&Ft(this,a)},n.nn=function(e,t,n){var r=!this.zt&&!1,i=Nt(this),a=i||r?{observableKind:`array`,object:this.v,debugObjectName:this.st.tt,type:`splice`,index:e,removed:n,added:t,removedCount:n.length,addedCount:t.length}:null;this.st.reportChanged(),i&&Ft(this,a)},n.ct=function(e){if(!(this.$t&&e>=this.j.length))return this.st.reportObserved(),this.Qt(this.j[e]);console.warn(`[mobx] Out of bounds read: `+e)},n.ht=function(e,n){var r=this.j;if(this.$t&&e>r.length&&t(17,e,r.length),e<r.length){var i=r[e];if(At(this)){var a=Mt(this,{type:or,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}(),lr={clear:function(){return this.splice(0)},replace:function(e){var t=this[F];return t.ot(0,t.j.length,e)},toJSON:function(){return this.slice()},splice:function(e,t){var n=[...arguments].slice(2),r=this[F];switch(arguments.length){case 0:return[];case 1:return r.ot(e);case 2:return r.ot(e,t)}return r.ot(e,t,n)},spliceWithArray:function(e,t,n){return this[F].ot(e,t,n)},push:function(){for(var e=this[F],t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];return e.ot(e.j.length,0,n),e.j.length},pop:function(){return this.splice(Math.max(this[F].j.length-1,0),1)[0]},shift:function(){return this.splice(0,1)[0]},unshift:function(){for(var e=this[F],t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];return e.ot(0,0,n),e.j.length},reverse:function(){return z.trackingDerivation&&t(37,`reverse`),this.replace(this.slice().reverse()),this},sort:function(){z.trackingDerivation&&t(37,`sort`);var e=this.slice();return e.sort.apply(e,arguments),this.replace(e),this},remove:function(e){var t=this[F],n=t.ft(t.j).indexOf(e);return n>-1&&(this.splice(n,1),!0)}};k(`at`,Lt),k(`concat`,Lt),k(`flat`,Lt),k(`includes`,Lt),k(`indexOf`,Lt),k(`join`,Lt),k(`lastIndexOf`,Lt),k(`slice`,Lt),k(`toString`,Lt),k(`toLocaleString`,Lt),k(`toSorted`,Lt),k(`toSpliced`,Lt),k(`with`,Lt),k(`every`,A),k(`filter`,A),k(`find`,A),k(`findIndex`,A),k(`findLast`,A),k(`findLastIndex`,A),k(`flatMap`,A),k(`forEach`,A),k(`map`,A),k(`some`,A),k(`toReversed`,A),k(`reduce`,Rt),k(`reduceRight`,Rt);var ur,dr,fr=f(`ObservableArrayAdministration`,cr),pr={},mr=`add`,hr=function(){function e(e,n,r){var i=this;n===void 0&&(n=ce),r===void 0&&(r=`ObservableMap`),this.Jt=void 0,this.tt=void 0,this[F]=pr,this.vt=void 0,this.dt=void 0,this.lt=void 0,this.et=void 0,this.ut=void 0,this.dehancer=void 0,this.Jt=n,this.tt=r,a(Map)||t(18),Qt((function(){i.lt=se(`ObservableMap.keys()`),i.vt=new Map,i.dt=new Map,e&&i.merge(e)}))}var n=e.prototype;return n.it=function(e){return this.vt.has(e)},n.has=function(e){var t=this;if(!z.trackingDerivation)return this.it(e);var n=this.dt.get(e);if(!n){var r=n=new Pn(this.it(e),le,`ObservableMap.key?`,!1);this.dt.set(e,r),ft(r,(function(){return t.dt.delete(e)}))}return n.get()},n.set=function(e,t){var n=this.it(e);if(At(this)){var r=Mt(this,{type:n?or:mr,object:this,newValue:t,name:e});if(!r)return this;t=r.newValue}return n?this.rn(e,t):this.en(e,t),this},n.delete=function(e){var t=this;if(At(this)&&!Mt(this,{type:`delete`,object:this,name:e}))return!1;if(this.it(e)){var n=Nt(this),r=n?{observableKind:`map`,debugObjectName:this.tt,type:`delete`,object:this,oldValue:this.vt.get(e).Ot,name:e}:null;return Et((function(){var n;t.lt.reportChanged(),(n=t.dt.get(e))==null||n.gt(!1),t.vt.get(e).gt(void 0),t.vt.delete(e)})),n&&Ft(this,r),!0}return!1},n.rn=function(e,t){var n=this.vt.get(e);if((t=n.xt(t))!==z.UNCHANGED){var r=Nt(this),i=r?{observableKind:`map`,debugObjectName:this.tt,type:or,object:this,oldValue:n.Ot,name:e,newValue:t}:null;n.gt(t),r&&Ft(this,i)}},n.en=function(e,t){var n=this;Et((function(){var r,i=new Pn(t,n.Jt,`ObservableMap.key`,!1);n.vt.set(e,i),t=i.Ot,(r=n.dt.get(e))==null||r.gt(!0),n.lt.reportChanged()}));var r=Nt(this);r&&Ft(this,r?{observableKind:`map`,debugObjectName:this.tt,type:mr,object:this,name:e,newValue:t}:null)},n.get=function(e){return this.has(e)?this.Qt(this.vt.get(e).get()):this.Qt(void 0)},n.Qt=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.keys=function(){return this.lt.reportObserved(),this.vt.keys()},n.values=function(){var e=this,t=this.keys();return Bt({next:function(){var n=t.next(),r=n.done;return{done:r,value:r?void 0:e.get(n.value)}}})},n.entries=function(){var e=this,t=this.keys();return Bt({next:function(){var n=t.next(),r=n.done,i=n.value;return{done:r,value:r?void 0:[i,e.get(i)]}}})},n[Symbol.iterator]=function(){return this.entries()},n.forEach=function(e,t){for(var n,r=C(this);!(n=r()).done;){var i=n.value;e.call(t,i[1],i[0],this)}},n.merge=function(e){var n=this;return gr(e)&&(e=new Map(e)),Et((function(){var r,i;c(e)?function(e){var t=Object.keys(e);if(!dn)return t;var n=Object.getOwnPropertySymbols(e);return n.length?[].concat(t,n.filter((function(t){return on.propertyIsEnumerable.call(e,t)}))):t}(e).forEach((function(t){return n.set(t,e[t])})):Array.isArray(e)?e.forEach((function(e){return n.set(e[0],e[1])})):p(e)?(r=Object.getPrototypeOf(e),i=Object.getPrototypeOf(r),Object.getPrototypeOf(i)!==null&&t(19,e),e.forEach((function(e,t){return n.set(t,e)}))):e!=null&&t(20,e)})),this},n.clear=function(){var e=this;Et((function(){We((function(){for(var t,n=C(e.keys());!(t=n()).done;)e.delete(t.value)}))}))},n.replace=function(e){var n=this;return Et((function(){for(var r,i=function(e){if(p(e)||gr(e))return e;if(Array.isArray(e))return new Map(e);if(c(e)){var n=new Map;for(var r in e)n.set(r,e[r]);return n}return t(21,e)}(e),a=new Map,o=!1,s=C(n.vt.keys());!(r=s()).done;){var l=r.value;if(!i.has(l))if(n.delete(l))o=!0;else{var u=n.vt.get(l);a.set(l,u)}}for(var d,f=C(i.entries());!(d=f()).done;){var m=d.value,h=m[0],g=m[1],_=n.vt.has(h);if(n.set(h,g),n.vt.has(h)){var v=n.vt.get(h);a.set(h,v),_||(o=!0)}}if(!o)if(n.vt.size!==a.size)n.lt.reportChanged();else for(var y=n.vt.keys(),b=a.keys(),x=y.next(),S=b.next();!x.done;){if(x.value!==S.value){n.lt.reportChanged();break}x=y.next(),S=b.next()}n.vt=a})),this},n.toString=function(){return`[object ObservableMap]`},n.toJSON=function(){return Array.from(this)},n._t=function(e){return Pt(this,e)},n.St=function(e){return jt(this,e)},S(e,[{key:`size`,get:function(){return this.lt.reportObserved(),this.vt.size}},{key:Symbol.toStringTag,get:function(){return`Map`}}])}(),gr=f(`ObservableMap`,hr),_r={},vr=function(){function e(e,n,r){var i=this;n===void 0&&(n=ce),r===void 0&&(r=`ObservableSet`),this.tt=void 0,this[F]=_r,this.vt=new Set,this.st=void 0,this.ut=void 0,this.et=void 0,this.dehancer=void 0,this.Jt=void 0,this.tt=r,a(Set)||t(22),this.Jt=function(e,t){return n(e,t,r)},Qt((function(){i.st=se(i.tt),e&&i.replace(e)}))}var n=e.prototype;return n.Qt=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.clear=function(){var e=this;Et((function(){We((function(){for(var t,n=C(e.vt.values());!(t=n()).done;)e.delete(t.value)}))}))},n.forEach=function(e,t){for(var n,r=C(this);!(n=r()).done;){var i=n.value;e.call(t,i,i,this)}},n.add=function(e){var t=this;if(At(this)){var n=Mt(this,{type:mr,object:this,newValue:e});if(!n)return this;e=n.newValue}if(!this.has(e)){Et((function(){t.vt.add(t.Jt(e,void 0)),t.st.reportChanged()}));var r=Nt(this);r&&Ft(this,r?{observableKind:`set`,debugObjectName:this.tt,type:mr,object:this,newValue:e}:null)}return this},n.delete=function(e){var t=this;if(At(this)&&!Mt(this,{type:`delete`,object:this,oldValue:e}))return!1;if(this.has(e)){var n=Nt(this),r=n?{observableKind:`set`,debugObjectName:this.tt,type:`delete`,object:this,oldValue:e}:null;return Et((function(){t.st.reportChanged(),t.vt.delete(e)})),n&&Ft(this,r),!0}return!1},n.has=function(e){return this.st.reportObserved(),this.vt.has(this.Qt(e))},n.entries=function(){var e=this.values();return Vt({next:function(){var t=e.next(),n=t.value,r=t.done;return r?{value:void 0,done:r}:{value:[n,n],done:r}}})},n.keys=function(){return this.values()},n.values=function(){this.st.reportObserved();var e=this,t=this.vt.values();return Vt({next:function(){var n=t.next(),r=n.done;return r?{value:void 0,done:r}:{value:e.Qt(n.value),done:r}}})},n.intersection=function(e){return m(e)&&!yr(e)?e.intersection(this):new Set(this).intersection(e)},n.union=function(e){return m(e)&&!yr(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)&&!yr(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)&&!yr(e)?e.isDisjointFrom(this):new Set(this).isDisjointFrom(e)},n.replace=function(e){var n=this;return yr(e)&&(e=new Set(e)),Et((function(){Array.isArray(e)||m(e)?(n.clear(),e.forEach((function(e){return n.add(e)}))):e!=null&&t(`Cannot initialize set from `+e)})),this},n._t=function(e){return Pt(this,e)},n.St=function(e){return jt(this,e)},n.toJSON=function(){return Array.from(this)},n.toString=function(){return`[object ObservableSet]`},n[Symbol.iterator]=function(){return this.values()},S(e,[{key:`size`,get:function(){return this.st.reportObserved(),this.vt.size}},{key:Symbol.toStringTag,get:function(){return`Set`}}])}(),yr=f(`ObservableSet`,vr),br=Object.create(null),xr=function(){function e(e,t,n,r){t===void 0&&(t=new Map),r===void 0&&(r=yn),this.h=void 0,this.j=void 0,this.tt=void 0,this.un=void 0,this.lt=void 0,this.ut=void 0,this.et=void 0,this.v=void 0,this.p=void 0,this.on=void 0,this.sn=void 0,this.h=e,this.j=t,this.tt=n,this.un=r,this.lt=new hn(`ObservableObject.keys`),this.p=c(this.h)}var n=e.prototype;return n.O=function(e){return this.j.get(e).get()},n.S=function(e,t){var n=this.j.get(e);if(n instanceof In)return n.set(t),!0;if(At(this)){var r=Mt(this,{type:or,object:this.v||this.h,name:e,newValue:t});if(!r)return null;t=r.newValue}if((t=n.xt(t))!==z.UNCHANGED){var i=Nt(this),a=i?{type:or,observableKind:`object`,debugObjectName:this.tt,object:this.v||this.h,oldValue:n.Ot,name:e,newValue:t}:null;n.gt(t),i&&Ft(this,a)}return!0},n.ct=function(e){return z.trackingDerivation&&!g(this.h,e)&&this.it(e),this.h[e]},n.ht=function(e,t,n){return n===void 0&&(n=!1),g(this.h,e)?this.j.has(e)?this.S(e,t):n?Reflect.set(this.h,e,t):(this.h[e]=t,!0):this.s(e,{value:t,enumerable:!0,writable:!0,configurable:!0},this.un,n)},n.it=function(e){if(!z.trackingDerivation)return e in this.h;this.sn||=new Map;var t=this.sn.get(e);return t||(t=new Pn(e in this.h,le,`ObservableObject.key?`,!1),this.sn.set(e,t)),t.get()},n.o=function(e,n){if(!0===n&&(n=this.un),!1!==n){if(!(e in this.h)){var r;if((r=this.h[mn])!=null&&r[e])return;t(1,n.i,this.tt+`.`+e.toString())}for(var i=this.h;i&&i!==on;){var a=rn(i,e);if(a){var o=n.o(this,e,a,i);if(o===0)return;if(o===1)break}i=Object.getPrototypeOf(i)}Gt(this,0,e)}},n.s=function(e,t,n,r){if(r===void 0&&(r=!1),!0===n&&(n=this.un),!1===n)return this.l(e,t,r);var i=n.s(this,e,t,r);return i&&Gt(this,0,e),i},n.l=function(e,t,n){n===void 0&&(n=!1);try{$e();var r=this.Ut(e);if(!r)return r;if(At(this)){var i=Mt(this,{object:this.v||this.h,name:e,type:mr,newValue:t.value});if(!i)return null;var a=i.newValue;t.value!==a&&(t=ee({},t,{value:a}))}if(n){if(!Reflect.defineProperty(this.h,e,t))return!1}else an(this.h,e,t);this.fn(e,t.value)}finally{et()}return!0},n.g=function(e,t,n,r){r===void 0&&(r=!1);try{$e();var i=this.Ut(e);if(!i)return i;if(At(this)){var a=Mt(this,{object:this.v||this.h,name:e,type:mr,newValue:t});if(!a)return null;t=a.newValue}var o=Ut(e),s={configurable:!z.safeDescriptors||this.p,enumerable:!0,get:o.get,set:o.set};if(r){if(!Reflect.defineProperty(this.h,e,s))return!1}else an(this.h,e,s);var c=new Pn(t,n,`ObservableObject.key`,!1);this.j.set(e,c),this.fn(e,c.Ot)}finally{et()}return!0},n.m=function(e,t,n){n===void 0&&(n=!1);try{$e();var r=this.Ut(e);if(!r)return r;if(At(this)&&!Mt(this,{object:this.v||this.h,name:e,type:mr,newValue:void 0}))return null;t.name||=`ObservableObject.key`,t.context=this.v||this.h;var i=Ut(e),a={configurable:!z.safeDescriptors||this.p,enumerable:!1,get:i.get,set:i.set};if(n){if(!Reflect.defineProperty(this.h,e,a))return!1}else an(this.h,e,a);this.j.set(e,new In(t)),this.fn(e,void 0)}finally{et()}return!0},n.Ut=function(e,t){if(t===void 0&&(t=!1),!g(this.h,e))return!0;if(At(this)&&!Mt(this,{object:this.v||this.h,name:e,type:`remove`}))return null;try{var n;$e();var r=Nt(this),i=this.j.get(e),a=void 0;if(!i&&r&&(a=rn(this.h,e)?.value),t){if(!Reflect.deleteProperty(this.h,e))return!1}else delete this.h[e];i&&(this.j.delete(e),i instanceof Pn&&(a=i.Ot),nt(i)),this.lt.reportChanged(),(n=this.sn)==null||(n=n.get(e))==null||n.set(e in this.h),r&&r&&Ft(this,{type:`remove`,observableKind:`object`,object:this.v||this.h,debugObjectName:this.tt,oldValue:a,name:e})}finally{et()}return!0},n._t=function(e){return Pt(this,e)},n.St=function(e){return jt(this,e)},n.fn=function(e,t){var n,r=Nt(this);r&&r&&Ft(this,r?{type:mr,observableKind:`object`,debugObjectName:this.tt,object:this.v||this.h,name:e,newValue:t}:null),(n=this.sn)==null||(n=n.get(e))==null||n.set(!0),this.lt.reportChanged()},n.rt=function(){return this.lt.reportObserved(),fn(this.h)},n.nt=function(){return this.lt.reportObserved(),Object.keys(this.h)},e}(),B=f(`ObservableObjectAdministration`,xr),Sr=Kt(0),Cr=function(){var e=!1,t={};return Object.defineProperty(t,`0`,{set:function(){e=!0}}),Object.create(t)[0]=1,!1===e}(),wr=0,Tr=function(){};ur=Tr,dr=Array.prototype,Object.setPrototypeOf?Object.setPrototypeOf(ur.prototype,dr):ur.prototype.__proto__===void 0?ur.prototype=dr:ur.prototype.__proto__=dr;var Er=function(e){function t(t,n,r,i){var a;return r===void 0&&(r=`ObservableArray`),i===void 0&&(i=!1),a=e.call(this)||this,Qt((function(){var e=new cr(r,n,i,!0);e.v=a,d(a,F,e),t&&t.length&&a.spliceWithArray(0,0,t),Cr&&Object.defineProperty(a,`0`,Sr)})),a}w(t,e);var n=t.prototype;return n.concat=function(){this[F].st.reportObserved();var e=[...arguments];return Array.prototype.concat.apply(this.slice(),e.map((function(e){return zt(e)?e.slice():e})))},n[Symbol.iterator]=function(){var e=this,t=0;return en({next:function(){return t<e.length?{value:e[t++],done:!1}:{done:!0,value:void 0}}})},S(t,[{key:`length`,get:function(){return this[F].Ft()},set:function(e){this[F].Xt(e)}},{key:Symbol.toStringTag,get:function(){return`Array`}}])}(Tr);Object.entries(lr).forEach((function(e){var t=e[0];t!==`concat`&&u(Er.prototype,t,e[1])})),qt(1e3);var Dr=on.toString,Or=n().Iterator?.prototype||{};[`Symbol`,`Map`,`Set`].forEach((function(e){n()[e]===void 0&&t(`MobX requires global '`+e+`' to be available or polyfilled`)})),typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__==`object`&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:at,extras:{getDebugName:Zt},$mobx:F}),e.$mobx=F,e.FlowCancellationError=er,e.ObservableMap=hr,e.ObservableSet=vr,e.Reaction=Un,e._allowStateChanges=Le,e._allowStateChangesInsideComputed=st,e._allowStateReadsEnd=Je,e._allowStateReadsStart=qe,e._autoAction=Zn,e._endAction=Ie,e._getAdministration=Xt,e._getGlobalState=function(){return z},e._interceptReads=function(e,t,n){var r;return gr(e)||zt(e)||Fn(e)?r=Xt(e):Wt(e)&&(r=Xt(e,t)),r.dehancer=typeof t==`function`?t:n,function(){r.dehancer=void 0}},e._isComputingDerivation=function(){return z.trackingDerivation!==null},e._resetGlobalState=function(){var e=new Bn;for(var t in e)zn.indexOf(t)===-1&&(z[t]=e[t]);z.allowStateChanges=!z.enforceActions},e._startAction=Fe,e.action=Xn,e.autorun=lt,e.comparer=_n,e.computed=kn,e.configure=function(e){!0===e.isolateGlobalState&&function(){if((z.pendingReactions.length||z.inBatch||z.isRunningReactions)&&t(36),Hn=!0,Vn){var e=n();--e.__mobxInstanceCount==0&&(e.__mobxGlobals=void 0),z=new Bn}}();var r,i,a=e.useProxies,o=e.enforceActions;if(a!==void 0&&(z.useProxies=a===`always`||a!==`never`&&typeof Proxy<`u`),a===`ifavailable`&&(z.verifyProxies=!0),o!==void 0){var s=o===`always`?`always`:o===`observed`;z.enforceActions=s,z.allowStateChanges=!0!==s&&s!==`always`}[`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`disableErrorBoundaries`,`safeDescriptors`].forEach((function(t){t in e&&(z[t]=!!e[t])})),z.allowStateReads=!z.observableRequiresReaction,e.reactionScheduler&&(r=e.reactionScheduler,i=Wn,Wn=function(e){return r((function(){return i(e)}))})},e.createAtom=se,e.defineProperty=function(e,n,r){if(Wt(e))return e[F].l(n,r);t(39)},e.entries=function(e){return Wt(e)?St(e).map((function(t){return[t,e[t]]})):gr(e)?St(e).map((function(t){return[t,e.get(t)]})):yr(e)?Array.from(e.entries()):zt(e)?e.map((function(e,t){return[t,e]})):void t(7)},e.extendObservable=mt,e.flow=rr,e.flowResult=function(e){return e},e.get=function(e,n){if(Ct(e,n))return Wt(e)?e[F].ct(n):gr(e)?e.get(n):zt(e)?e[n]:void t(11)},e.getAtom=Yt,e.getDebugName=Zt,e.getDependencyTree=function(e,t){return ht(Yt(e,t))},e.getObserverTree=function(e,t){return gt(Yt(e,t))},e.has=Ct,e.intercept=function(e,t,n){return a(n)?function(e,t,n){return Xt(e,t).St(n)}(e,t,n):function(e,t){return Xt(e).St(t)}(e,t)},e.isAction=ct,e.isBoxedObservable=Fn,e.isComputed=function(e){return yt(e)},e.isComputedProp=function(e,t){return yt(e,t)},e.isFlow=vt,e.isFlowCancellationError=function(e){return e instanceof er},e.isObservable=xt,e.isObservableArray=zt,e.isObservableMap=gr,e.isObservableObject=Wt,e.isObservableProp=function(e,t){return bt(e,t)},e.isObservableSet=yr,e.keys=St,e.makeAutoObservable=function(e,t,n){return c(e)?mt(e,e,t,n):(Qt((function(){var r=Ht(e,n)[F];if(!e[ar]){var i=Object.getPrototypeOf(e),a=new Set([].concat(fn(e),fn(i)));a.delete(`constructor`),a.delete(F),u(i,ar,a)}e[ar].forEach((function(e){return r.o(e,!t||!(e in t)||t[e])}))})),e)},e.makeObservable=function(e,t,n){return Qt((function(){var r=Ht(e,n)[F];t??=function(e){return g(e,mn)||u(e,mn,ee({},e[mn])),e[mn]}(e),fn(t).forEach((function(e){return r.o(e,t[e])}))})),e},e.observable=En,e.observe=function(e,t,n,r){return a(n)?function(e,t,n,r){return Xt(e,t)._t(n,r)}(e,t,n,r):function(e,t,n){return Xt(e)._t(t,n)}(e,t,n)},e.onBecomeObserved=dt,e.onBecomeUnobserved=ft,e.onReactionError=function(e){return z.globalReactionErrorHandlers.push(e),function(){var t=z.globalReactionErrorHandlers.indexOf(e);t>=0&&z.globalReactionErrorHandlers.splice(t,1)}},e.override=vn,e.ownKeys=wt,e.reaction=function(e,t,n){function r(){if(p=!1,!h.isDisposed){var t=!1,r=s;h.track((function(){var n=Le(!1,(function(){return e(h)}));t=f||!m(s,n),s=n})),(f&&n.fireImmediately||!f&&t)&&l(s,r,h),f=!1}}var i;n===void 0&&(n=cn);var a,o,s,c=n.name??`Reaction`,l=Xn(c,n.onError?(a=n.onError,o=t,function(){try{return o.apply(this,arguments)}catch(e){a.call(this,e)}}):t),u=!n.scheduler&&!n.delay,d=ut(n),f=!0,p=!1,m=n.compareStructural?_n.structural:n.equals||_n.default,h=new Un(c,(function(){f||u?r():p||(p=!0,d(r))}),n.onError,n.requiresObservable);return(i=n)!=null&&(i=i.signal)!=null&&i.aborted||h.Y(),h.Z(n?.signal)},e.remove=function(e,n){Wt(e)?e[F].Ut(n):gr(e)||yr(e)?e.delete(n):zt(e)?(typeof n!=`number`&&(n=parseInt(n,10)),e.splice(n,1)):t(9)},e.runInAction=st,e.set=function e(n,r,i){if(arguments.length!==2||yr(n))Wt(n)?n[F].ht(r,i):gr(n)?n.set(r,i):yr(n)?n.add(r):zt(n)?(typeof r!=`number`&&(r=parseInt(r,10)),r<0&&t(`Invalid index: '`+r+`'`),$e(),r>=n.length&&(n.length=r+1),n[r]=i,et()):t(8);else{$e();var a=r;try{for(var o in a)e(n,o,a[o])}finally{et()}}},e.spy=at,e.toJS=function(e){return function e(t,n){if(typeof t!=`object`||!t||t instanceof Date||!xt(t))return t;if(Fn(t)||R(t))return e(t.get(),n);if(n.has(t))return n.get(t);if(zt(t)){var r=Tt(n,t,Array(t.length));return t.forEach((function(t,i){r[i]=e(t,n)})),r}if(yr(t)){var i=Tt(n,t,new Set);return t.forEach((function(t){i.add(e(t,n))})),i}if(gr(t)){var a=Tt(n,t,new Map);return t.forEach((function(t,r){a.set(r,e(t,n))})),a}var o=Tt(n,t,{});return wt(t).forEach((function(r){on.propertyIsEnumerable.call(t,r)&&(o[r]=e(t[r],n))})),o}(e,new Map)},e.trace=function(){},e.transaction=Et,e.untracked=We,e.values=function(e){return Wt(e)?St(e).map((function(t){return e[t]})):gr(e)?St(e).map((function(t){return e.get(t)})):yr(e)?Array.from(e.values()):zt(e)?e.slice():void t(6)},e.when=function(e,t,n){return arguments.length===1||t&&typeof t==`object`?Ot(e,t):Dt(e,t,n||{})}})),c_=pe((e=>{Object.defineProperty(e,`__esModule`,{value:!0});var t={0:`Invalid value for configuration 'enforceActions', expected 'never', 'always' or 'observed'`,1:function(e,t){return`Cannot apply '`+e+`' to '`+t.toString()+`': Field not found.`},5:`'keys()' can only be used on observable objects, arrays, sets and maps`,6:`'values()' can only be used on observable objects, arrays, sets and maps`,7:`'entries()' can only be used on observable objects, arrays and maps`,8:`'set()' can only be used on observable objects, arrays and maps`,9:`'remove()' can only be used on observable objects, arrays and maps`,10:`'has()' can only be used on observable objects, arrays and maps`,11:`'get()' can only be used on observable objects, arrays and maps`,12:`Invalid annotation`,13:`Dynamic observable objects cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)`,14:`Intercept handlers should return nothing or a change object`,15:`Observable arrays cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)`,16:`Modification exception: the internal structure of an observable array was changed.`,17:function(e,t){return`[mobx.array] Index out of bounds, `+e+` is larger than `+t},18:`mobx.map requires Map polyfill for the current browser. Check babel-polyfill or core-js/es6/map.js`,19:function(e){return`Cannot initialize from classes that inherit from Map: `+e.constructor.name},20:function(e){return`Cannot initialize map from `+e},21:function(e){return`Cannot convert to map from '`+e+`'`},22:`mobx.set requires Set polyfill for the current browser. Check babel-polyfill or core-js/es6/set.js`,23:`It is not possible to get index atoms from arrays`,24:function(e){return`Cannot obtain administration from `+e},25:function(e,t){return`the entry '`+e+`' does not exist in the observable map '`+t+`'`},26:`please specify a property`,27:function(e,t){return`no observable property '`+e.toString()+`' found on the observable object '`+t+`'`},28:function(e){return`Cannot obtain atom from `+e},29:`Expecting some object`,30:`invalid action stack. did you forget to finish an action?`,31:`missing option for computed: get`,32:function(e,t){return`Cycle detected in computation `+e+`: `+t},33:function(e){return`The setter of computed value '`+e+`' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?`},34:function(e){return`[ComputedValue '`+e+`'] It is not possible to assign a new value to a computed value.`},35:"There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`",36:`isolateGlobalState should be called before MobX is running any reactions`,37:function(e){return"[mobx] `observableArray."+e+"()` mutates the array in-place, which is not allowed inside a derivation. Use `array.slice()."+e+"()` instead"},38:`'ownKeys()' can only be used on observable objects`,39:`'defineProperty()' can only be used on observable objects`};function n(e){var n=[...arguments].slice(1),r=typeof e==`string`?e:t[e];throw typeof r==`function`&&(r=r.apply(null,n)),Error(`[MobX] `+r)}var r={};function i(){return typeof globalThis<`u`?globalThis:typeof window<`u`?window:typeof global<`u`?global:typeof self<`u`?self:r}var a=Object.assign,o=Object.getOwnPropertyDescriptor,s=Object.defineProperty,c=Object.prototype,l=[];Object.freeze(l);var u={};Object.freeze(u);var d=typeof Proxy<`u`,f=Object.toString();function p(){d||n("`Proxy` objects are not available in the current environment. Please configure MobX to enable a fallback implementation.`")}function m(e){I.verifyProxies&&n(`MobX is currently configured to be able to run in ES5 mode, but in ES5 MobX won't be able to `+e)}function h(){return++I.mobxGuid}function g(e){var t=!1;return function(){if(!t)return t=!0,e.apply(this,arguments)}}var _=function(){};function v(e){return typeof e==`function`}function y(e){switch(typeof e){case`string`:case`symbol`:case`number`:return!0}return!1}function b(e){return typeof e==`object`&&!!e}function x(e){if(!b(e))return!1;var t=Object.getPrototypeOf(e);if(t==null)return!0;var n=Object.hasOwnProperty.call(t,`constructor`)&&t.constructor;return typeof n==`function`&&n.toString()===f}function S(e){var t=e?.constructor;return t?t.name===`GeneratorFunction`||t.displayName===`GeneratorFunction`:!1}function C(e,t,n){s(e,t,{enumerable:!1,writable:!0,configurable:!0,value:n})}function ee(e,t,n){s(e,t,{enumerable:!1,writable:!1,configurable:!0,value:n})}function te(e,t){var n=`isMobX`+e;return t.prototype[n]=!0,function(e){return b(e)&&e[n]===!0}}function w(e){return e!=null&&Object.prototype.toString.call(e)===`[object Map]`}function ne(e){return Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(e)))===null}function re(e){return e!=null&&Object.prototype.toString.call(e)===`[object Set]`}var ie=Object.getOwnPropertySymbols!==void 0;function T(e){var t=Object.keys(e);if(!ie)return t;var n=Object.getOwnPropertySymbols(e);return n.length?[].concat(t,n.filter(function(t){return c.propertyIsEnumerable.call(e,t)})):t}var E=typeof Reflect<`u`&&Reflect.ownKeys?Reflect.ownKeys:ie?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames;function ae(e){return typeof e==`string`?e:typeof e==`symbol`?e.toString():new String(e).toString()}function oe(e){return e===null?null:typeof e==`object`?``+e:e}function se(e,t){return c.hasOwnProperty.call(e,t)}var ce=Object.getOwnPropertyDescriptors||function(e){var t={};return E(e).forEach(function(n){t[n]=o(e,n)}),t};function le(e,t){return!!(e&t)}function ue(e,t,n){return n?e|=t:e&=~t,e}function de(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function fe(e,t,n){if(ye())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var i=new(e.bind.apply(e,r));return n&&be(i,n.prototype),i}function pe(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,Se(r.key),r)}}function me(e,t,n){return t&&pe(e.prototype,t),n&&pe(e,n),Object.defineProperty(e,`prototype`,{writable:!1}),e}function he(e,t){var n=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=Ce(e))||t&&e&&typeof e.length==`number`){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw TypeError(`Invalid attempt to iterate non-iterable instance.
|
|
57
57
|
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function D(){return D=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},D.apply(null,arguments)}function ge(e){return ge=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},ge(e)}function _e(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,be(e,t)}function ve(e){try{return Function.toString.call(e).indexOf(`[native code]`)!==-1}catch{return typeof e==`function`}}function ye(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(ye=function(){return!!e})()}function be(e,t){return be=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},be(e,t)}function xe(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function Se(e){var t=xe(e,`string`);return typeof t==`symbol`?t:t+``}function Ce(e,t){if(e){if(typeof e==`string`)return de(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?de(e,t):void 0}}function we(e){var t=typeof Map==`function`?new Map:void 0;return we=function(e){if(e===null||!ve(e))return e;if(typeof e!=`function`)throw TypeError(`Super expression must either be null or a function`);if(t!==void 0){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return fe(e,arguments,ge(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),be(n,e)},we(e)}var Te=Symbol(`mobx-stored-annotations`);function Ee(e){function t(t,n){if(Ae(n))return e.decorate_20223_(t,n);De(t,n,e)}return Object.assign(t,e)}function De(e,t,r){se(e,Te)||C(e,Te,D({},e[Te])),Ke(r)&&!se(e[Te],t)&&n(`'`+(e.constructor.name+`.prototype.`+t.toString())+`' is decorated with 'override', but no such decorated member was found on prototype.`),Oe(e,r,t),Ke(r)||(e[Te][t]=r)}function Oe(e,t,r){if(!Ke(t)&&se(e[Te],r)){var i=e.constructor.name+`.prototype.`+r.toString(),a=e[Te][r].annotationType_,o=t.annotationType_;n(`Cannot apply '@`+o+`' to '`+i+`':`+(`
|
|
58
58
|
The field is already decorated with '@`+a+`'.`)+`
|
|
59
59
|
Re-decorating fields is not allowed.
|
|
@@ -83,18 +83,18 @@ The target is already observable of different type.
|
|
|
83
83
|
Extending builtins is not supported.`),e;Object.isExtensible(e)||n(`Cannot make the designated object observable; it is not extensible`);var r=t?.name??(x(e)?`ObservableObject`:e.constructor.name)+`@`+h();return C(e,O,new Xi(e,new Map,String(r),It(t))),e}var Qi=te(`ObservableObjectAdministration`,Xi);function $i(e){return Ji[e]||(Ji[e]={get:function(){return this[O].getObservablePropValue_(e)},set:function(t){return this[O].setObservablePropValue_(e,t)}})}function ea(e){return b(e)?Qi(e[O]):!1}function ta(e,t,n){var r;e.appliedAnnotations_[n]=t,(r=e.target_[Te])==null||delete r[n]}function na(e,t,r){if(wa(t)||n(`Cannot annotate '`+e.name_+`.`+r.toString()+`': Invalid annotation.`),!Ke(t)&&se(e.appliedAnnotations_,r)){var i=e.name_+`.`+r.toString(),a=e.appliedAnnotations_[r].annotationType_,o=t.annotationType_;n(`Cannot apply '`+o+`' to '`+i+`':`+(`
|
|
84
84
|
The field is already annotated with '`+a+`'.`)+`
|
|
85
85
|
Re-annotating fields is not allowed.
|
|
86
|
-
Use 'override' annotation for methods overridden by subclass.`)}}var 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,O,e),t&&t.length&&a.spliceWithArray(0,0,t),ia&&Object.defineProperty(a,`0`,ra)}),a}_e(t,e);var n=t.prototype;return n.concat=function(){this[O].atom_.reportObserved();var e=[...arguments];return Array.prototype.concat.apply(this.slice(),e.map(function(e){return 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}}})},me(t,[{key:`length`,get:function(){return this[O].getArrayLength_()},set:function(e){this[O].setArrayLength_(e)}},{key:Symbol.toStringTag,get:function(){return`Array`}}])}(oa);Object.entries(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[O].get_(e)},set:function(t){this[O].set_(e,t)}}}function ua(e){s(ca.prototype,``+e,la(e))}function da(e){if(e>aa){for(var t=aa;t<e+100;t++)ua(t);aa=e}}da(1e3);function fa(e,t,n){return new ca(e,t,n)}function pa(e,t){if(typeof e==`object`&&e){if(Ii(e))return t!==void 0&&n(23),e[O].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[O].values_.get(t);return i||n(27,t,ha(e)),i}if(Ne(e)||nn(e)||z(e))return e}else if(v(e)&&z(e[O]))return e[O];n(28)}function ma(e,t){if(e||n(29),t!==void 0)return ma(pa(e,t));if(Ne(e)||nn(e)||z(e)||Vi(e)||Ki(e))return e;if(e[O])return e[O];n(24,e)}function ha(e,t){var n;if(t!==void 0)n=pa(e,t);else if(lr(e))return e.name;else n=ea(e)||Vi(e)||Ki(e)?ma(e):pa(e);return n.name_}function ga(e){var t=F(),n=Zt(!0);jn();try{return e()}finally{Mn(),Qt(n),hn(t)}}var _a=c.toString;function va(e,t,n){return n===void 0&&(n=-1),ya(e,t,n)}function ya(e,t,n,r,i){if(e===t)return e!==0||1/e==1/t;if(e==null||t==null)return!1;if(e!==e)return t!==t;var a=typeof e;if(a!==`function`&&a!==`object`&&typeof t!=`object`)return!1;var o=_a.call(e);if(o!==_a.call(t))return!1;switch(o){case`[object RegExp]`:case`[object String]`:return``+e==``+t;case`[object Number]`:return+e==+e?+e==0?1/e==1/t:+e==+t:+t!=+t;case`[object Date]`:case`[object Boolean]`:return+e==+t;case`[object Symbol]`:return typeof Symbol<`u`&&Symbol.valueOf.call(e)===Symbol.valueOf.call(t);case`[object Map]`:case`[object Set]`:n>=0&&n++;break}e=ba(e),t=ba(t);var s=o===`[object Array]`;if(!s){if(typeof e!=`object`||typeof t!=`object`)return!1;var c=e.constructor,l=t.constructor;if(c!==l&&!(v(c)&&c instanceof c&&v(l)&&l instanceof l)&&`constructor`in e&&`constructor`in t)return!1}if(n===0)return!1;n<0&&(n=-1),r||=[],i||=[];for(var u=r.length;u--;)if(r[u]===e)return i[u]===t;if(r.push(e),i.push(t),s){if(u=e.length,u!==t.length)return!1;for(;u--;)if(!ya(e[u],t[u],n-1,r,i))return!1}else{var d=Object.keys(e),f=d.length;if(Object.keys(t).length!==f)return!1;for(var p=0;p<f;p++){var m=d[p];if(!(se(t,m)&&ya(e[m],t[m],n-1,r,i)))return!1}}return r.pop(),i.pop(),!0}function ba(e){return 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:Yn,extras:{getDebugName:ha},$mobx:O}),e.$mobx=O,e.FlowCancellationError=Ar,e.ObservableMap=Bi,e.ObservableSet=Gi,e.Reaction=R,e._allowStateChanges=Xt,e._allowStateChangesInsideComputed=cr,e._allowStateReadsEnd=_n,e._allowStateReadsStart=gn,e._autoAction=sr,e._endAction=Yt,e._getAdministration=ma,e._getGlobalState=wn,e._interceptReads=Lr,e._isComputingDerivation=cn,e._resetGlobalState=Tn,e._startAction=Jt,e.action=or,e.autorun=ur,e.comparer=ze,e.computed=Ht,e.configure=Sr,e.createAtom=Pe,e.defineProperty=ei,e.entries=Yr,e.extendObservable=Cr,e.flow=Pr,e.flowResult=Fr,e.get=$r,e.getAtom=pa,e.getDebugName=ha,e.getDependencyTree=wr,e.getObserverTree=Er,e.has=Qr,e.intercept=Rr,e.isAction=lr,e.isBoxedObservable=en,e.isComputed=Hr,e.isComputedProp=Ur,e.isFlow=Ir,e.isFlowCancellationError=jr,e.isObservable=Gr,e.isObservableArray=Ii,e.isObservableMap=Vi,e.isObservableObject=ea,e.isObservableProp=Kr,e.isObservableSet=Ki,e.keys=qr,e.makeAutoObservable=wi,e.makeObservable=Si,e.observable=A,e.observe=ni,e.onBecomeObserved=_r,e.onBecomeUnobserved=vr,e.onReactionError=Rn,e.override=Ge,e.ownKeys=ti,e.reaction=pr,e.remove=Zr,e.runInAction=cr,e.set=Xr,e.spy=Yn,e.toJS=oi,e.trace=si,e.transaction=li,e.untracked=mn,e.values=Jr,e.when=ui})),Lg=pe(((e,t)=>{process.env.NODE_ENV===`production`?t.exports=Fg():t.exports=Ig()}))();function Rg(e){if(Array.isArray(e))return Object.freeze(e.map(Rg));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]=Rg(r);return Object.freeze(t)}return e}function zg(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 Bg(e){return typeof e==`string`?e:String(e)}function Vg(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 Hg(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 Ug(e,t){if(!(e instanceof H))throw TypeError(`template function expected a RichText fragment, got ${typeof e==`object`?Object.prototype.toString.call(e):typeof e}`);let n=e.copy();return n.style=Wg(e.style).add(t),n}function Wg(e){if(e instanceof B)return e;try{return B.parse(e)}catch(t){throw t instanceof br?TypeError(`template function cannot style a fragment whose base style "${e}" is not a style definition: a style name resolves only against the theme of a render`,{cause:t}):t}}function Gg(e){return{fn:(t=>Ug(t,e)),argTypes:[`liftable`],returnType:`T`}}function Kg(e){return{fn:((t,n)=>Ug(n,new B({[e]:P.parse(t)}))),argTypes:[`string`,`liftable`],returnType:`T`}}function qg(e,t){return new B({[e]:t})}function Jg(){let e={};for(let t of _r)e[t]=Gg(qg(t,!0)),e[`not_${t}`]=Gg(qg(t,!1));for(let[t,n]of Object.entries(yr))e[t]=Gg(qg(n,!0));return e}const Yg={fn:((e,t)=>Ug(t,B.parse(e))),argTypes:[`string`,`liftable`],returnType:`T`},Xg={fn:((e,t)=>Ug(t,new B({link:e}))),argTypes:[`string`,`liftable`],returnType:`T`};function Zg(){return{fg:Kg(`color`),bg:Kg(`bgcolor`),...Jg(),link:Xg,style:Yg}}function Qg(e,t){if(!zn.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 Bn(e)}function $g(e,t){return{fn:t,argTypes:e,returnType:`string`}}function e_(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 t_=$g([`string`,`int`],((e,t)=>Kn(Qg(e,`darken`),e_(t,`darken`,`levels`)).hex)),n_=$g([`string`,`int`],((e,t)=>Kn(Qg(e,`lighten`),-e_(t,`lighten`,`levels`)).hex)),r_={min:0,max:100,note:`0 = from, 100 = toward`},i_=$g([`string`,`string`,`float`],((e,t,n)=>hn(Qg(e,`mix`),Qg(t,`mix`),e_(n,`mix`,`percentage`,r_)/100).hex)),a_={min:1,max:21,note:`4.5 = AA body text, 3 = AA large text`},o_=$g([`string`],(e=>qn(Qg(e,`contrastOn`)).hex)),s_=e=>$g([`string`,`string`,`float`],((t,n,r)=>Jn(Qg(t,`readableOn`),Qg(n,`readableOn`),e_(r,`readableOn`,`ratio`,a_),e()).hex)),c_={hueShift:`shiftHue`,chromaScale:`scaleChroma`,lightnessScale:`scaleLightness`,lightnessShift:`shiftLightness`};function l_(){let e={};for(let[t,n]of Object.entries(c_)){let r=t;e[n]=$g([`string`,`float`],((e,t)=>{let i={...On,[r]:e_(t,n,`amount`)};return R.fromRgba(Qg(e,n)).applyKey(i).toRgba().hex}))}return e}function u_(e=()=>M.TRUECOLOR){return{darken:t_,lighten:n_,mix:i_,contrastOn:o_,readableOn:s_(e),...l_()}}function d_(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:Vn(t,e[r+1])});return n}function f_(e){return{color:{fn:(t=>Vn(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 gr(hr(r),d_(i,e())).at(n).hex}),argTypes:[`float`,`string`],argTypePattern:`alternating`,returnType:`string`}}}function p_(e){return{...Zg(),...u_(e)}}new B({color:`red`,dim:!0});const m_=/^(?:(?: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,h_=/^(?<family>opus|sonnet|haiku)\s+(?<major>\d+)(?:\.(?<minor>\d))?$/i;function g_(e){if(!e)return`Claude`;let t=e.trim().replace(/\s*\([^)]*\)\s*$/,``).replace(/\s*\[[^\]]*\]\s*$/,``).trim(),n=t.match(m_);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(h_);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 __(e){let t=e.match(h_);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 v_(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 y_(e){return e.toLocaleString()}function b_(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 x_(e,t){if(!Number.isFinite(e))throw Error(`a cascade needs a finite value, got ${e}`);let n=-1;for(;n+1<t.length&&t[n+1].at<=e;)n++;return(n<0?t[0]:t[n]).text}const S_=[`▁`,`▂`,`▃`,`▄`,`▅`,`▆`,`▇`,`█`],C_=S_.length;function w_(e,t){let n=t===void 0?e:t<=0?[]:e.slice(-t);if(n.length===0)return``;let r=n[0],i=n[0];for(let e of n)e<r&&(r=e),e>i&&(i=e);let a=i-r,o=``;for(let e of n){let t=a===0?0:Math.round((e-r)/a*(C_-1));o+=S_[t]}return o}function T_(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 E_=Sa(),D_=[...Ma];function O_(){return{basename:{fn:e=>l(e),argTypes:[`string`]},dirname:{fn:e=>u(e),argTypes:[`string`]},abbreviatePath:{fn:e=>v_(e),argTypes:[`string`]},int:{fn:e=>Vg(e),argTypes:[`value`]},string:{fn:e=>Bg(e),argTypes:[`value`]},bool:{fn:e=>Hg(e),argTypes:[`value`]},urlEncode:{fn:e=>encodeURIComponent(e),argTypes:[`string`]},themes:{fn:()=>E_,argTypes:[]},styles:{fn:()=>D_,argTypes:[]},sparkline:{fn:(e,t)=>w_(T_(e),t),argTypes:[`string`,`int`]},cascade:{fn:(e,...t)=>x_(e,b_(t)),argTypes:[`float`,`string`]}}}function k_(e=()=>new Date){return{minutesUntilReset:{fn:t=>Math.round(Math.max(0,t*1e3-e().getTime())/6e4),argTypes:[`int`]},formatInteger:{fn:e=>y_(e),argTypes:[`int`]},round:{fn:e=>Math.round(e),argTypes:[`float`]},formatModelName:{fn:e=>g_(e),argTypes:[`string`]},shortenModelName:{fn:e=>__(e),argTypes:[`string`]}}}function A_(e,t=()=>new Date,n){return Ud({fromString:e=>new H(e),toString:e=>e.plain,isT:e=>e instanceof H,clock:t,missingKey:`error`,funcs:{...jp(),...Vh(),..._m(),...zm(),...Cp(t),...pf(),...Gp(),...p_(n),...O_(),...k_(t),...e??{}}})}function j_(e){return M_(e,new Set(e.names()),``)}function M_(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`?N_(a,e.readDocument(a)):e.read(a);let o=`${a}.`;for(let n of t)if(n.startsWith(o))return M_(e,t,a)}})}function N_(e,t){switch(t.kind){case`ok`:return t.value;case`absent`:throw Error(`variable "${e}" has no value yet: its source has not completed a scan`);case`failed`:throw Error(`variable "${e}": ${t.reason}`)}}function J(e){return{kind:`ok`,value:e}}const Y={kind:`absent`};function X(e){return{kind:`failed`,reason:e}}function P_(e,t){return e?.kind===`ok`?e.value:t}function F_(e,t,n){return t.ok?J(t.stdout):t.reason===`non-zero`&&n===`absent`||t.reason===`non-zero`&&n===t.exitCode?Y:X(`${e}: ${[t.reason,t.exitCode==null?null:`exit ${t.exitCode}`,t.error??I_(t.stderr)].filter(Boolean).join(`, `)}`)}function I_(e){return e.trim().split(`
|
|
87
|
-
`,1)[0]??``}function
|
|
88
|
-
`)){let e=n.match(/^remote\.(.+)\.url\s+(\S.*)$/);if(!e)continue;let r=t.get(e[1])??[];r.push(e[2].trim()),t.set(e[1],r)}return[...t].map(([e,t])=>({name:e,urls:t}))}function
|
|
89
|
-
`)){if(!l)continue;if(l.startsWith(`# `)){let e=l.slice(2);if(e.startsWith(`branch.oid `)){let t=e.slice(11).trim();n=t===`(initial)`?Y:J(t)}else if(e.startsWith(`branch.head `)){let n=e.slice(12).trim();t=n===`(detached)`?`detached`:n}else if(e.startsWith(`branch.upstream `))r=J(e.slice(16).trim());else if(e.startsWith(`branch.ab `)){let t=e.slice(10).trim().match(/^\+(\d+)\s+-(\d+)$/);t&&(i=J({ahead:parseInt(t[1],10),behind:parseInt(t[2],10)}))}continue}let e=l[0];if(e===`1`||e===`2`){let e=l.slice(2,4);e[0]!==`.`&&a++,e[1]!==`.`&&o++}else e===`u`?c++:e===`?`&&s++}let l=`clean`;return c>0?l=`conflicts`:(a||o||s)&&(l=`dirty`),{branch:t,status:l,aheadBehind:i,oid:n,upstream:r,workingTree:{staged:a,unstaged:o,untracked:s,conflicts:c}}}function
|
|
90
|
-
`).length:0)}async getRemotesAsync(e){let t=nv(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=F_(`git config --get-regexp remote url`,await this.execGitAsync([`config`,`--local`,`--get-regexp`,`^remote\\..*\\.url$`],{cwd:e,timeout:2e3}),1);return t.kind===`failed`?t:J(t.kind===`ok`?U_(t.value):[])}repoNameFrom(e,t){let n=K_(e);return(n===null?null:J_(n))??c.basename(t)}async getRepoRemoteUrl(e){let t=await this.getRemotesAsync(e);if(t.kind!==`ok`)return t;let n=q_(t.value);return n===null?Y:J(n)}async execForgeAsync(e,t,n){return Te({bin:e,args:[...t],cwd:n.cwd,env:{...process.env},timeoutMs:n.timeout,category:`forge`})}async resolvePullRequest(e,t){let n=H_(t);return n===`github`?Z_(`gh pr view`,await this.execForgeAsync(`gh`,[`pr`,`view`,`--json`,`number,state,url`],{cwd:e,timeout:5e3}),/no (open )?pull requests? found/i,ev):n===`gitlab`?Z_(`glab mr view`,await this.execForgeAsync(`glab`,[`mr`,`view`,`--output`,`json`],{cwd:e,timeout:5e3}),/no (open )?merge requests? (found|available)/i,tv):Y}isWorktree(e){try{let t=c.join(e,`.git`);return!!(r.existsSync(t)&&r.statSync(t).isFile())}catch{return!1}}async getCoreAsync(e){D(`[GIT-EXEC] Running git status --porcelain=v2 in ${e}`);let t=F_(`git status --porcelain=v2 --branch`,await this.execGitAsync([`status`,`--porcelain=v2`,`--branch`],{cwd:e,timeout:2e3}),`failed`);return t.kind===`ok`?J($_(t.value)):t}};const iv=(e,t)=>D(t);var av=class{slots=new Map;maxWatchers;counters;logger;closed=!1;constructor(e={}){this.maxWatchers=e.maxWatchers??128,this.counters=e.counters,this.logger=e.logger??iv}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()}},ov=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 sv=(e,t)=>D(t),cv={showSha:!0,showStashCount:!0};function lv(e){let t=Object.keys(e).sort(),n={};for(let r of t)n[r]=e[r];return JSON.stringify(n)}function uv(e){let t=t=>{try{return r.statSync(c.join(e,t)).mtimeMs}catch{return 0}};return{head:t(`HEAD`),index:t(`index`)}}function dv(e,t){return e.head!==t.head||e.index!==t.index}function fv(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 pv=class extends rv{entries=new Map;subscribersByRepo=new Map;fetchInFlight=new Map;resolutions=new Map;prCache=new Map;prFetchInFlight=new Map;refreshes=new ov;hits=0;misses=0;invalidations=0;inner;ttlMs;maxEntries;watchers;ownsWatchers;logger;sanityTimer=null;constructor(e={}){super(),this.inner=e.inner??new rv,this.ttlMs=e.ttlMs??3e4,this.maxEntries=e.maxEntries??64,this.logger=e.logger??sv,e.watchers?(this.watchers=e.watchers,this.ownsWatchers=!1):(this.watchers=new av({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}|${lv(t)}`,r=Date.now(),i=this.entries.get(n);if(i&&r-i.computedAt<this.ttlMs)return this.entries.delete(n),this.entries.set(n,i),this.hits++,Promise.resolve(J(i.info));let a=this.fetchInFlight.get(n);if(a)return a;let o=this.doFetch(e,n,t,r).finally(()=>{this.fetchInFlight.delete(n)});return this.fetchInFlight.set(n,o),o}async doFetch(e,t,n,r){this.misses++;let i=this.inner.resolveGitDir(e),a=uv(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}`,fv(i),()=>this.invalidateRepo(e));return this.entries.set(t,{info:s,computedAt:r,mtime:a,watcher:c,repoRoot:e}),this.evictIfNeeded(),o}async getPullRequestCached(e,t){let n=await this.inner.getRepoRemoteUrl(e);if(n.kind===`failed`)return n;if(n.kind===`absent`)return Y;let r=n.value,i=`${e}|${t}|${r}`,a=Date.now(),o=this.prCache.get(i);if(o){let e=o.pr.kind===`failed`?45e3:3e5;if(a-o.computedAt<e)return this.prCache.delete(i),this.prCache.set(i,o),o.pr}let s=this.prFetchInFlight.get(i);if(s)return s;let c=this.inner.resolvePullRequest(e,r).then(e=>(this.prCache.set(i,{pr:e,computedAt:Date.now()}),this.evictPrIfNeeded(),e)).finally(()=>{this.prFetchInFlight.delete(i)});return this.prFetchInFlight.set(i,c),c}evictPrIfNeeded(){for(;this.prCache.size>this.maxEntries;){let e=this.prCache.keys().next().value;if(e===void 0)break;this.prCache.delete(e)}}deliverable(e,t){return e.kind===`failed`?(this.logger(`warn`,`git fetch failed (${t}): ${e.reason}`),null):e.kind===`ok`?e.value:null}subscribe(e,t){let n=!1,r=null;return{firstDelivery:(async()=>{let i=await this.resolveEffectiveGitDir(e);if(n)return;if(i.kind!==`ok`){i.kind===`failed`&&this.logger(`warn`,`git resolve failed (subscribe ${e}): ${i.reason}`),this.safeInvoke(t,null);return}let a=i.value,o=this.subscribersByRepo.get(a);if(!o){let t=this.inner.resolveGitDir(a),n=this.watchers.acquire(`git:${a}`,fv(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,{...cv});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,{...cv}),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=uv(this.inner.resolveGitDir(t.repoRoot)),e.set(t.repoRoot,n)),dv(t.mtime,n)&&this.invalidateRepo(t.repoRoot)}}runSanityCheckNow(){this.runSanityCheck()}close(){this.sanityTimer&&=(clearInterval(this.sanityTimer),null);for(let e of this.entries.values())e.watcher.release();this.entries.clear();for(let e of this.subscribersByRepo.values())e.callbacks.clear(),e.watcher.release();this.subscribersByRepo.clear(),this.refreshes.clear(),this.fetchInFlight.clear(),this.prCache.clear(),this.prFetchInFlight.clear(),this.resolutions.clear(),this.ownsWatchers&&this.watchers.closeAll()}};const mv=/\r\n|\r|\n/g,hv=e=>J(e.replace(mv,` `).trim());function gv(e){return t=>{let n=e.exec(t)?.[1];return n===void 0?X(`regex no-match`):J(n.replace(mv,` `))}}const _v=e=>{try{return J(JSON.parse(e))}catch(e){return X(`JSON parse failed: ${e.message}`)}};function vv(e,t){return t.kind!==`ttl`||t.durationMs>=500?t:(D(`declareShell "${e}": ttl ${t.durationMs}ms below floor 500ms; clamping`),{kind:`ttl`,durationMs:500})}function yv(e){let t=/^(\d+(?:\.\d+)?)(ms|s|m|h)$/.exec(e);if(!t)throw RangeError(`Invalid duration: "${e}"`);let n=parseFloat(t[1]);switch(t[2]){case`ms`:return n;case`s`:return n*1e3;case`m`:return n*6e4;case`h`:return n*36e5;default:throw RangeError(`Unexpected duration unit: "${t[2]}"`)}}const bv=`session.id`;function xv(e,t){return{where:`output of "${e}"`,read:async()=>{let n=await Te({bin:`/bin/sh`,args:[`-c`,e],category:`user-shell`,signal:t});if(!n.ok&&n.reason===`aborted`)throw t.reason;return n.ok?J(n.stdout):X(`shell "${e}" ${n.exitCode===null?[n.reason,n.error].filter(e=>e!==void 0).join(`: `):`exited with code ${n.exitCode}`}`)}}}function Sv(e,t,n){return{where:`"${e}"`,read:async()=>{try{let r=await v(e,{encoding:`utf8`,signal:n});return J(t===`first-line`?r.split(/\r?\n/)[0]??``:r)}catch{if(n.aborted)throw n.reason;return X(`file unreadable: ${e}`)}}}}function Cv(e,t,n){if(e.kind!==`ok`)return e;let r=t(e.value);return r.kind===`failed`?X(`${r.reason} in ${n}`):r}const wv=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],Tv=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],Ev=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],Dv=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`];function Ov(e,t){let n=[[`2006`,e=>String(e.getFullYear())],[`January`,e=>wv[e.getMonth()]],[`Monday`,e=>Ev[e.getDay()]],[`Jan`,e=>Tv[e.getMonth()]],[`Mon`,e=>Dv[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 kv={branch:`string`,sha:`string`,dirty:`boolean`,ahead:`number`,behind:`number`,stash:`number`};function Av(e,t,n,r){if(e===null){if(n!==void 0)return n;let e=kv[t];try{return Pv(r,e)}catch{return Fv(e)}}switch(t){case`branch`:return e.branch===`detached`?``:e.branch;case`sha`:return P_(e.sha,``);case`dirty`:return e.status!==`clean`;case`ahead`:return P_(e.aheadBehind,{ahead:0,behind:0}).ahead;case`behind`:return P_(e.aheadBehind,{ahead:0,behind:0}).behind;case`stash`:return P_(e.stashCount,0)}}var jv=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}},Mv=class{buckets=new Map;subscribe(e,t){let n=this.buckets.get(e);if(!n){let t=new Set;n={timer:S(()=>{for(let e of t)e()},e),callbacks:t},this.buckets.set(e,n)}return n.callbacks.add(t),()=>this.unsubscribe(e,t)}unsubscribe(e,t){let n=this.buckets.get(e);n&&(n.callbacks.delete(t),n.callbacks.size===0&&(x(n.timer),this.buckets.delete(e)))}dispose(){for(let{timer:e}of this.buckets.values())x(e);this.buckets.clear()}bucketCount(){return this.buckets.size}};function Nv(e,t){let n=e;for(let e of t.split(`.`)){if(typeof n!=`object`||!n)return;n=n[e]}return n}function Pv(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`?Bg(e):t===`number`?Vg(e):Hg(e)}function Fv(e){return e===`number`?0:e===`boolean`?!1:``}var Iv=class{inputMetas=new Map;lastErrors=new Map;watchMgr=new jv;ttlMgr=new Mv;gitSubscriptions=new Map;cleanups=[];inFlight=new Map;reads=new ov;abort=new AbortController;drawn=Lg.observable.box(M.TRUECOLOR);drawnAt=()=>this.drawn.get();engine=A_(void 0,void 0,this.drawnAt);gitProvider;ownsGitProvider;sessionState;constructor(e,t=``,n,r){this.store=e,this.defaultEmptyValue=t,n?(this.gitProvider=n,this.ownsGitProvider=!1):(this.gitProvider=new pv({sanityIntervalMs:0}),this.ownsGitProvider=!0),this.sessionState=r}get variableStore(){return this.store}declareLiteral(e,t){this.store.defineBox(e,zg(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,xv(t,this.abort.signal),vv(e,n.cache),n.parse)}declareFile(e,t,n){this.declareSource(e,Sv(t,n.readMode??`whole`,this.abort.signal),n.cache,n.parse)}declareSource(e,t,n,r){let i=this.publisherFor(e,r,t.where),a=()=>this.runSource(e,t,i);a(),this.registerCachePolicy(e,n,a)}publisherFor(e,t,n){switch(t.kind){case`text`:return this.scalarPublisher(e,hv,t.default,n);case`regex`:return this.scalarPublisher(e,gv(t.regex),t.default,n);case`json`:return this.documentPublisher(e,t.default,n)}}scalarPublisher(e,t,n,r){let i=this.stringInitial(n);return this.store.defineBox(e,`string`,i),n=>{let a=Cv(n,t,r);this.noteOutcome(e,a),this.store.setBox(e,P_(a,i))}}documentPublisher(e,t,n){let r=t===void 0?Y:J(t);return this.store.defineDocument(e,r),i=>{let a=Cv(i,_v,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=j_(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 Ov(t.format,e)}catch{return this.stringInitial(t.varDefault)}})(new Date));let r=this.ttlMgr.subscribe(n,()=>{try{this.store.setBox(e,Ov(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=kv[t.field],r=t.varDefault===void 0?Fv(n):Pv(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,Av(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(bv);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=Nv(e,n.path),i=this.store.getType(t);if(r!==void 0)try{this.store.setBox(t,Pv(r,i)),this.lastErrors.delete(t)}catch(e){this.applyFallback(t,i,n.varDefault,e instanceof Error?e.message:String(e))}else this.applyFallback(t,i,n.varDefault,`input path "${n.path}" not found in payload`)}})}drawAt(e){this.store.runInAction(()=>this.drawn.set(e))}getLastError(e){return this.lastErrors.get(e)}dispose(){this.abort.abort();for(let e of this.cleanups)e();this.cleanups.length=0;for(let e of this.gitSubscriptions.values())e.unsubscribe();this.gitSubscriptions.clear(),this.reads.clear(),this.watchMgr.dispose(),this.ttlMgr.dispose(),this.ownsGitProvider&&this.gitProvider.close()}registerCachePolicy(e,t,n){switch(t.kind){case`never`:break;case`ttl`:{let e=this.ttlMgr.subscribe(t.durationMs,n);this.cleanups.push(e);break}case`watch_file`:{let e=this.watchMgr.subscribe(t.path,n);this.cleanups.push(e);break}case`key`:{let e=this.engine.parse(t.template),r=(0,Lg.reaction)(()=>{let t=j_(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,Lg.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,Pv(this.defaultEmptyValue,t))}catch{this.store.setBox(e,Fv(t))}}defaultFor(e){try{return Pv(this.defaultEmptyValue,e)}catch{return Fv(e)}}stringInitial(e){return e===void 0?typeof this.defaultEmptyValue==`string`?this.defaultEmptyValue:``:e}recordError(e,t){this.lastErrors.set(e,{timestamp:Date.now(),message:t})}noteOutcome(e,t){t.kind===`ok`?this.lastErrors.delete(e):this.recordError(e,t.kind===`failed`?t.reason:`no value`)}};const Lv={project_dir:{kind:`input`,path:`workspace.project_dir`,default:``},[bv]:{kind:`input`,path:`session_id`,default:``},transcript_path:{kind:`input`,path:`transcript_path`,default:``},"theme.effective":{kind:`input`,path:`theme.effective`,default:``},"look.effective":{kind:`input`,path:`look.effective`,default:``},"preset.effective":{kind:`input`,path:`preset.effective`,default:``},"preset.customized":{kind:`input`,path:`preset.customized`,type:`boolean`,default:!1},"preset.bundled":{kind:`input`,path:`preset.bundled`,type:`boolean`,default:!0},"style.effective":{kind:`input`,path:`style.effective`,default:``},"progression.effective":{kind:`input`,path:`progression.effective`,default:``},"charset.effective":{kind:`input`,path:`charset.effective`,default:``},"colorCompatibility.effective":{kind:`input`,path:`colorCompatibility.effective`,default:``},"autoWrap.effective":{kind:`input`,path:`autoWrap.effective`,type:`boolean`,default:!0},"padding.effective":{kind:`input`,path:`padding.effective`,type:`number`,default:1},"term.cols":{kind:`input`,path:`term.cols`,type:`number`,default:80},"git.repoUrl":{kind:`input`,path:`git.repoUrl`,default:``}},Rv={theme:{configKey:`palette`,sessionKey:`theme`,effectiveVar:`theme.effective`},preset:{configKey:`preset`,sessionKey:`preset`,effectiveVar:`preset.effective`},look:{configKey:`look`,sessionKey:`look`,effectiveVar:`look.effective`},style:{configKey:`style`,sessionKey:`style`,effectiveVar:`style.effective`},progression:{configKey:`progression`,sessionKey:`progression`,effectiveVar:`progression.effective`},charset:{configKey:`charset`,sessionKey:`charset`,effectiveVar:`charset.effective`},colorCompatibility:{configKey:`colorCompatibility`,sessionKey:`colorCompatibility`,effectiveVar:`colorCompatibility.effective`},autoWrap:{configKey:`autoWrap`,sessionKey:`autoWrap`,effectiveVar:`autoWrap.effective`},padding:{configKey:`padding`,sessionKey:`padding`,effectiveVar:`padding.effective`}},zv=Object.values(Rv),Bv=new Map(zv.map(e=>[e.configKey,e.effectiveVar])),Vv=new Map(zv.map(e=>[e.sessionKey,e.effectiveVar])),Hv=new Map(Object.keys(Rv).map(e=>[Rv[e].sessionKey,e]));function Uv(e,t,n){let r=new Set,i=e=>{for(let t of Dg(e??``,n).keys())r.add(t)};for(let t of Object.values(e.segments))i(t.template),i(t.bg),i(t.fg),i(t.when);for(let e of t)for(let t of Qo(e))i(t.when);for(let t of Object.values(e.variables))t.kind===`template`&&i(t.template),t.kind===`state`&&r.add(bv);for(let t of Object.values(e.actions)){r.add(bv),`copy`in t&&i(t.copy),`open`in t&&i(t.open);let e=`set`in t?Vv.get(t.set):void 0,n=`persist`in t?Bv.get(t.persist):void 0;e!==void 0&&r.add(e),n!==void 0&&r.add(n)}return r}function Wv(e,t,n){let r=Ng({...n,variables:{...n.variables,...e.variables},segments:{...n.segments,...e.segments}}),i={};for(let a of Uv(e,t,n.helpers)){if(Mg(a,r))continue;let e=Lv[a];if(e===void 0)throw Error(`synthesized chrome reads ".${a}", which it does not declare and PAYLOAD_INPUTS does not supply`);i[a]=e}return i}function Gv(e){return e.op===`remove`?`remove:${e.target}`:`insert:${e.segment}:${e.anchor}:${e.relation}`}function Kv(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 qv(e){let t=new Set;for(let n of Qo(e))n.kind===`segment`&&t.add(n.name);return t}const Jv=`default`,Yv={};function Xv(e){return[...new Set([Jv,...Object.keys(e)])]}function Zv(e,t,n){return Ca(void 0,e,t,Jv,n)}function Qv(e,t){let n={[Jv]:Yv,...e}[t];if(n===void 0)throw Error(`Preset "${t}" is not declared in this config — effectivePresetName collapses unknown names to "${Jv}", which always resolves; a miss here means a raw name reached this function without going through that resolution`);return n}function $v(e,t){let n=Qv(e.presets,t).root??Bs;return{node:Ws(qs(n,e.root)),path:Js(n)?`presets.${t}.root`:`root`}}function ey(e,t){return{...e.globals,...Qv(e.presets,t).globals}}const ty=/^segments\.([^.]+)\.palette$/,ny=/^presets\.(.+)\.root$/,ry=/^presets\.(.+)\.globals\.([^.]+)$/;function iy(e){return`presets.${e}.root`}function ay(e,t){return`presets.${e}.globals.${t}`}function oy(e){if(Oc(e))return{scope:`globals`,field:e};let t=ty.exec(e);if(t)return{scope:`segment-palette`,segment:t[1]};let n=ry.exec(e);if(n&&xc(n[2]))return{scope:`preset-globals`,preset:n[1],field:n[2]};let r=ny.exec(e);return r?{scope:`preset-root`,preset:r[1]}:null}function sy(e){switch(e.scope){case`globals`:return[`globals`,e.field];case`preset-globals`:return[`presets`,e.preset,`globals`,e.field];case`segment-palette`:return[`segments`,e.segment,`palette`]}}const cy=`open`;function ly(e,t,n,r){let i={variable:e,key:e,member:cy};return r.variables[e]=sc(e,Qs),r.actions[e]=cc(e,cy),r.segments[e]={template:oc(e,`(?)`,`✕`),...uy(n)},rc(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 uy(e){let[t,...n]=e;return t===void 0?{}:{when:ic(t,...n)}}const dy={help:[`-h`,`--help`],version:[`-V`,`--version`]},fy=[`✚ inserts here`,`🚫 removes its segment`,`↺ resets layout`],py=`
|
|
86
|
+
Use 'override' annotation for methods overridden by subclass.`)}}var ra=la(0),ia=function(){var e=!1,t={};return Object.defineProperty(t,`0`,{set:function(){e=!0}}),Object.create(t)[0]=1,e===!1}(),aa=0,oa=function(){};function sa(e,t){Object.setPrototypeOf?Object.setPrototypeOf(e.prototype,t):e.prototype.__proto__===void 0?e.prototype=t:e.prototype.__proto__=t}sa(oa,Array.prototype);var ca=function(e){function t(t,n,r,i){var a;return r===void 0&&(r=`ObservableArray@`+h()),i===void 0&&(i=!1),a=e.call(this)||this,ga(function(){var e=new ki(r,n,i,!0);e.proxy_=a,ee(a,O,e),t&&t.length&&a.spliceWithArray(0,0,t),ia&&Object.defineProperty(a,`0`,ra)}),a}_e(t,e);var n=t.prototype;return n.concat=function(){this[O].atom_.reportObserved();var e=[...arguments];return Array.prototype.concat.apply(this.slice(),e.map(function(e){return 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}}})},me(t,[{key:`length`,get:function(){return this[O].getArrayLength_()},set:function(e){this[O].setArrayLength_(e)}},{key:Symbol.toStringTag,get:function(){return`Array`}}])}(oa);Object.entries(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[O].get_(e)},set:function(t){this[O].set_(e,t)}}}function ua(e){s(ca.prototype,``+e,la(e))}function da(e){if(e>aa){for(var t=aa;t<e+100;t++)ua(t);aa=e}}da(1e3);function fa(e,t,n){return new ca(e,t,n)}function pa(e,t){if(typeof e==`object`&&e){if(Ii(e))return t!==void 0&&n(23),e[O].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[O].values_.get(t);return i||n(27,t,ha(e)),i}if(Ne(e)||nn(e)||z(e))return e}else if(v(e)&&z(e[O]))return e[O];n(28)}function ma(e,t){if(e||n(29),t!==void 0)return ma(pa(e,t));if(Ne(e)||nn(e)||z(e)||Vi(e)||Ki(e))return e;if(e[O])return e[O];n(24,e)}function ha(e,t){var n;if(t!==void 0)n=pa(e,t);else if(lr(e))return e.name;else n=ea(e)||Vi(e)||Ki(e)?ma(e):pa(e);return n.name_}function ga(e){var t=F(),n=Zt(!0);jn();try{return e()}finally{Mn(),Qt(n),hn(t)}}var _a=c.toString;function va(e,t,n){return n===void 0&&(n=-1),ya(e,t,n)}function ya(e,t,n,r,i){if(e===t)return e!==0||1/e==1/t;if(e==null||t==null)return!1;if(e!==e)return t!==t;var a=typeof e;if(a!==`function`&&a!==`object`&&typeof t!=`object`)return!1;var o=_a.call(e);if(o!==_a.call(t))return!1;switch(o){case`[object RegExp]`:case`[object String]`:return``+e==``+t;case`[object Number]`:return+e==+e?+e==0?1/e==1/t:+e==+t:+t!=+t;case`[object Date]`:case`[object Boolean]`:return+e==+t;case`[object Symbol]`:return typeof Symbol<`u`&&Symbol.valueOf.call(e)===Symbol.valueOf.call(t);case`[object Map]`:case`[object Set]`:n>=0&&n++;break}e=ba(e),t=ba(t);var s=o===`[object Array]`;if(!s){if(typeof e!=`object`||typeof t!=`object`)return!1;var c=e.constructor,l=t.constructor;if(c!==l&&!(v(c)&&c instanceof c&&v(l)&&l instanceof l)&&`constructor`in e&&`constructor`in t)return!1}if(n===0)return!1;n<0&&(n=-1),r||=[],i||=[];for(var u=r.length;u--;)if(r[u]===e)return i[u]===t;if(r.push(e),i.push(t),s){if(u=e.length,u!==t.length)return!1;for(;u--;)if(!ya(e[u],t[u],n-1,r,i))return!1}else{var d=Object.keys(e),f=d.length;if(Object.keys(t).length!==f)return!1;for(var p=0;p<f;p++){var m=d[p];if(!(se(t,m)&&ya(e[m],t[m],n-1,r,i)))return!1}}return r.pop(),i.pop(),!0}function ba(e){return 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:Yn,extras:{getDebugName:ha},$mobx:O}),e.$mobx=O,e.FlowCancellationError=Ar,e.ObservableMap=Bi,e.ObservableSet=Gi,e.Reaction=R,e._allowStateChanges=Xt,e._allowStateChangesInsideComputed=cr,e._allowStateReadsEnd=_n,e._allowStateReadsStart=gn,e._autoAction=sr,e._endAction=Yt,e._getAdministration=ma,e._getGlobalState=wn,e._interceptReads=Lr,e._isComputingDerivation=cn,e._resetGlobalState=Tn,e._startAction=Jt,e.action=or,e.autorun=ur,e.comparer=ze,e.computed=Ht,e.configure=Sr,e.createAtom=Pe,e.defineProperty=ei,e.entries=Yr,e.extendObservable=Cr,e.flow=Pr,e.flowResult=Fr,e.get=$r,e.getAtom=pa,e.getDebugName=ha,e.getDependencyTree=wr,e.getObserverTree=Er,e.has=Qr,e.intercept=Rr,e.isAction=lr,e.isBoxedObservable=en,e.isComputed=Hr,e.isComputedProp=Ur,e.isFlow=Ir,e.isFlowCancellationError=jr,e.isObservable=Gr,e.isObservableArray=Ii,e.isObservableMap=Vi,e.isObservableObject=ea,e.isObservableProp=Kr,e.isObservableSet=Ki,e.keys=qr,e.makeAutoObservable=wi,e.makeObservable=Si,e.observable=A,e.observe=ni,e.onBecomeObserved=_r,e.onBecomeUnobserved=vr,e.onReactionError=Rn,e.override=Ge,e.ownKeys=ti,e.reaction=pr,e.remove=Zr,e.runInAction=cr,e.set=Xr,e.spy=Yn,e.toJS=oi,e.trace=si,e.transaction=li,e.untracked=mn,e.values=Jr,e.when=ui})),l_=pe(((e,t)=>{process.env.NODE_ENV===`production`?t.exports=s_():t.exports=c_()}))();function u_(e){if(Array.isArray(e))return Object.freeze(e.map(u_));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]=u_(r);return Object.freeze(t)}return e}function d_(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 f_(e){return typeof e==`string`?e:String(e)}function p_(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 m_(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 h_(e,t){if(!(e instanceof H))throw TypeError(`template function expected a RichText fragment, got ${typeof e==`object`?Object.prototype.toString.call(e):typeof e}`);let n=e.copy();return n.style=g_(e.style).add(t),n}function g_(e){if(e instanceof B)return e;try{return B.parse(e)}catch(t){throw t instanceof br?TypeError(`template function cannot style a fragment whose base style "${e}" is not a style definition: a style name resolves only against the theme of a render`,{cause:t}):t}}function __(e){return{fn:(t=>h_(t,e)),argTypes:[`liftable`],returnType:`T`}}function v_(e){return{fn:((t,n)=>h_(n,new B({[e]:P.parse(t)}))),argTypes:[`string`,`liftable`],returnType:`T`}}function y_(e,t){return new B({[e]:t})}function b_(){let e={};for(let t of _r)e[t]=__(y_(t,!0)),e[`not_${t}`]=__(y_(t,!1));for(let[t,n]of Object.entries(yr))e[t]=__(y_(n,!0));return e}const x_={fn:((e,t)=>h_(t,B.parse(e))),argTypes:[`string`,`liftable`],returnType:`T`},S_={fn:((e,t)=>h_(t,new B({link:e}))),argTypes:[`string`,`liftable`],returnType:`T`};function C_(){return{fg:v_(`color`),bg:v_(`bgcolor`),...b_(),link:S_,style:x_}}function w_(e,t){if(!zn.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 Bn(e)}function T_(e,t){return{fn:t,argTypes:e,returnType:`string`}}function E_(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 D_=T_([`string`,`int`],((e,t)=>Kn(w_(e,`darken`),E_(t,`darken`,`levels`)).hex)),O_=T_([`string`,`int`],((e,t)=>Kn(w_(e,`lighten`),-E_(t,`lighten`,`levels`)).hex)),k_={min:0,max:100,note:`0 = from, 100 = toward`},A_=T_([`string`,`string`,`float`],((e,t,n)=>hn(w_(e,`mix`),w_(t,`mix`),E_(n,`mix`,`percentage`,k_)/100).hex)),j_={min:1,max:21,note:`4.5 = AA body text, 3 = AA large text`},M_=T_([`string`],(e=>qn(w_(e,`contrastOn`)).hex)),N_=e=>T_([`string`,`string`,`float`],((t,n,r)=>Jn(w_(t,`readableOn`),w_(n,`readableOn`),E_(r,`readableOn`,`ratio`,j_),e()).hex)),P_={hueShift:`shiftHue`,chromaScale:`scaleChroma`,lightnessScale:`scaleLightness`,lightnessShift:`shiftLightness`};function F_(){let e={};for(let[t,n]of Object.entries(P_)){let r=t;e[n]=T_([`string`,`float`],((e,t)=>{let i={...On,[r]:E_(t,n,`amount`)};return R.fromRgba(w_(e,n)).applyKey(i).toRgba().hex}))}return e}function I_(e=()=>M.TRUECOLOR){return{darken:D_,lighten:O_,mix:A_,contrastOn:M_,readableOn:N_(e),...F_()}}function L_(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:Vn(t,e[r+1])});return n}function R_(e){return{color:{fn:(t=>Vn(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 gr(hr(r),L_(i,e())).at(n).hex}),argTypes:[`float`,`string`],argTypePattern:`alternating`,returnType:`string`}}}function z_(e){return{...C_(),...I_(e)}}new B({color:`red`,dim:!0});const B_=/^(?:(?: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,V_=/^(?<family>opus|sonnet|haiku)\s+(?<major>\d+)(?:\.(?<minor>\d))?$/i;function H_(e){if(!e)return`Claude`;let t=e.trim().replace(/\s*\([^)]*\)\s*$/,``).replace(/\s*\[[^\]]*\]\s*$/,``).trim(),n=t.match(B_);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(V_);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 U_(e){let t=e.match(V_);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 W_(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 G_(e){return e.toLocaleString()}function K_(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 q_(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 J_=[`▁`,`▂`,`▃`,`▄`,`▅`,`▆`,`▇`,`█`],Y_=J_.length;function X_(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*(Y_-1));o+=J_[t]}return o}function Z_(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 Q_=Sa(),$_=[...Ma];function ev(){return{basename:{fn:e=>l(e),argTypes:[`string`]},dirname:{fn:e=>u(e),argTypes:[`string`]},abbreviatePath:{fn:e=>W_(e),argTypes:[`string`]},int:{fn:e=>p_(e),argTypes:[`value`]},string:{fn:e=>f_(e),argTypes:[`value`]},bool:{fn:e=>m_(e),argTypes:[`value`]},urlEncode:{fn:e=>encodeURIComponent(e),argTypes:[`string`]},themes:{fn:()=>Q_,argTypes:[]},styles:{fn:()=>$_,argTypes:[]},sparkline:{fn:(e,t)=>X_(Z_(e),t),argTypes:[`string`,`int`]},cascade:{fn:(e,...t)=>q_(e,K_(t)),argTypes:[`float`,`string`]}}}function tv(e=()=>new Date){return{minutesUntilReset:{fn:t=>Math.round(Math.max(0,t*1e3-e().getTime())/6e4),argTypes:[`int`]},formatInteger:{fn:e=>G_(e),argTypes:[`int`]},round:{fn:e=>Math.round(e),argTypes:[`float`]},formatModelName:{fn:e=>H_(e),argTypes:[`string`]},shortenModelName:{fn:e=>U_(e),argTypes:[`string`]}}}function nv(e,t=()=>new Date,n){return sf({fromString:e=>new H(e),toString:e=>e.plain,isT:e=>e instanceof H,clock:t,missingKey:`error`,funcs:{...Jp(),...ig(),...Pm(),...nh(),...Bp(t),...Af(),...cm(),...z_(n),...ev(),...tv(t),...e??{}}})}function rv(e){return iv(e,new Set(e.names()),``)}function iv(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`?ov(a,e.readDocument(a)):e.read(a);let o=`${a}.`;for(let n of t)if(n.startsWith(o))return iv(e,t,a)}})}function av(e,t){return new Proxy(e,{has:(e,t)=>t===`settings`||Reflect.has(e,t),get:(e,n)=>n===`settings`?t:Reflect.get(e,n)})}function ov(e,t){switch(t.kind){case`ok`:return t.value;case`absent`:throw Error(`variable "${e}" has no value yet: its source has not completed a scan`);case`failed`:throw Error(`variable "${e}": ${t.reason}`)}}function J(e){return{kind:`ok`,value:e}}const Y={kind:`absent`};function X(e){return{kind:`failed`,reason:e}}function sv(e,t){return e?.kind===`ok`?e.value:t}function cv(e,t,n){return t.ok?J(t.stdout):t.reason===`non-zero`&&n===`absent`||t.reason===`non-zero`&&n===t.exitCode?Y:X(`${e}: ${[t.reason,t.exitCode==null?null:`exit ${t.exitCode}`,t.error??lv(t.stderr)].filter(Boolean).join(`, `)}`)}function lv(e){return e.trim().split(`
|
|
87
|
+
`,1)[0]??``}function uv(e,t){if(e.kind!==`ok`)return e;let n=t(e.value);return n===null?Y:J(n)}function dv(e){if(e.kind!==`ok`)return e;let t=e.value.trim();return t?J(t):Y}const fv=/^[A-Za-z]:[\\/]/;function pv(e){let t=e.trim();if(fv.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 mv(e){return pv(e)?.host||null}function hv(e){let t=mv(e);return t?t===`github.com`||t.endsWith(`.github.com`)?`github`:/(^|\.)gitlab\./.test(t)?`gitlab`:null:null}function gv(e){let t=new Map;for(let n of e.split(`
|
|
88
|
+
`)){let e=n.match(/^remote\.(.+)\.url\s+(\S.*)$/);if(!e)continue;let r=t.get(e[1])??[];r.push(e[2].trim()),t.set(e[1],r)}return[...t].map(([e,t])=>({name:e,urls:t}))}function _v(e){return e.urls.find(e=>Sv(e)!==null)??e.urls[0]??null}function vv(e){return e.find(e=>e.name===`origin`)??e[0]??null}function yv(e){let t=vv(e);return t?_v(t):null}function bv(e){let t=vv(e);return t?t.urls.find(e=>hv(e)!==null)??_v(t):null}function xv(e){let t=(pv(e)?.path??e.replace(/[\\/]+$/,``)).split(`/`);return(t[t.length-1]??``).replace(/\.git$/,``)||null}function Sv(e){let t=pv(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 Cv(e){let t=yv(e);return t===null?null:Sv(t)}function wv(e,t,n,r){return t.ok?r(t.stdout):t.reason===`spawn-error`&&/ENOENT/i.test(t.error??``)||t.reason===`non-zero`&&n.test(t.stderr)?Y:X(`${e}: ${[t.reason,t.exitCode==null?null:`exit ${t.exitCode}`,t.error??lv(t.stderr)].filter(Boolean).join(`, `)}`)}function Tv(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Ev(e){let t=`detached`,n=Y,r=Y,i=Y,a=0,o=0,s=0,c=0;for(let l of e.split(`
|
|
89
|
+
`)){if(!l)continue;if(l.startsWith(`# `)){let e=l.slice(2);if(e.startsWith(`branch.oid `)){let t=e.slice(11).trim();n=t===`(initial)`?Y:J(t)}else if(e.startsWith(`branch.head `)){let n=e.slice(12).trim();t=n===`(detached)`?`detached`:n}else if(e.startsWith(`branch.upstream `))r=J(e.slice(16).trim());else if(e.startsWith(`branch.ab `)){let t=e.slice(10).trim().match(/^\+(\d+)\s+-(\d+)$/);t&&(i=J({ahead:parseInt(t[1],10),behind:parseInt(t[2],10)}))}continue}let e=l[0];if(e===`1`||e===`2`){let e=l.slice(2,4);e[0]!==`.`&&a++,e[1]!==`.`&&o++}else e===`u`?c++:e===`?`&&s++}let l=`clean`;return c>0?l=`conflicts`:(a||o||s)&&(l=`dirty`),{branch:t,status:l,aheadBehind:i,oid:n,upstream:r,workingTree:{staged:a,unstaged:o,untracked:s,conflicts:c}}}function Dv(e){let t;try{t=JSON.parse(e)}catch(e){return X(`gh pr view: unparseable JSON (${e instanceof Error?e.message:String(e)})`)}if(!Tv(t))return X(`gh pr view: JSON is not an object`);let{number:n,state:r,url:i}=t;return typeof n!=`number`||typeof r!=`string`||typeof i!=`string`?X(`gh pr view: missing number/state/url`):r.toUpperCase()===`OPEN`?J({number:n,state:r,url:i}):Y}function Ov(e){let t;try{t=JSON.parse(e)}catch(e){return X(`glab mr view: unparseable JSON (${e instanceof Error?e.message:String(e)})`)}if(!Tv(t))return X(`glab mr view: JSON is not an object`);let n=t.iid,r=t.state,i=t.web_url;return typeof n!=`number`||typeof r!=`string`||typeof i!=`string`?X(`glab mr view: missing iid/state/web_url`):r.toLowerCase()===`opened`?J({number:n,state:r,url:i}):Y}function kv(e){try{let t=r.statSync(e);return{key:`${t.dev}:${t.ino}`,stamp:`${t.mtimeMs}:${t.size}`}}catch{return null}}var Av=class{isGitRepo(e){try{return r.existsSync(c.join(e,`.git`))}catch{return!1}}async execGitAsync(e,t){return Te({bin:`git`,args:[...e],cwd:t.cwd,env:{...process.env,GIT_OPTIONAL_LOCKS:`0`},timeoutMs:t.timeout,category:`git`})}async resolveEffectiveGitDir(e,t){return this.isWorktree(e)?J(e):t&&this.isGitRepo(t)?J(t):this.isGitRepo(e)?J(e):this.findGitRoot(e)}async findGitRoot(e){let t=c.resolve(e);for(;;){if(this.isGitRepo(t))return J(t);let e=c.dirname(t);if(e===t)return Y;t=e}}async getGitInfo(e,t={},n){try{return await this.computeGitInfo(e,t,n)}catch(e){return X(`git: ${e instanceof Error?e.message:String(e)}`)}}async computeGitInfo(e,t={},n){let r,i=this.isWorktree(e);if(i)r=e;else if(n&&this.isGitRepo(n))r=n;else if(this.isGitRepo(e))r=e;else{let t=await this.findGitRoot(e);if(t.kind!==`ok`)return t;r=t.value}let a=await this.getCoreAsync(r);if(a.kind!==`ok`)return a;let o={branch:a.value.branch,status:a.value.status,aheadBehind:a.value.aheadBehind};t.showWorkingTree&&(o.workingTree=a.value.workingTree),t.showSha&&(o.sha=uv(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=uv(s,e=>this.repoNameFrom(e,r)),o.isWorktree=i),s!==void 0&&t.showRepoUrl&&(o.repoUrl=uv(s,Cv)),t.showOperation&&(o.operation=this.getOngoingOperation(r)),J(o)}resolveGitDir(e){let t=c.join(e,`.git`);try{if(r.existsSync(t)&&r.statSync(t).isFile()){let n=r.readFileSync(t,`utf-8`).match(/^gitdir:\s*(.+)$/m);if(n?.[1])return c.resolve(e,n[1].trim())}}catch{}return t}getOngoingOperation(e){try{let t=this.resolveGitDir(e);return r.existsSync(c.join(t,`MERGE_HEAD`))?J(`MERGE`):r.existsSync(c.join(t,`CHERRY_PICK_HEAD`))?J(`CHERRY-PICK`):r.existsSync(c.join(t,`REVERT_HEAD`))?J(`REVERT`):r.existsSync(c.join(t,`BISECT_LOG`))?J(`BISECT`):r.existsSync(c.join(t,`rebase-merge`))||r.existsSync(c.join(t,`rebase-apply`))?J(`REBASE`):Y}catch(e){return X(`git operation probe: ${e instanceof Error?e.message:String(e)}`)}}async getNearestTagAsync(e){return dv(cv(`git describe --tags`,await this.execGitAsync([`describe`,`--tags`,`--abbrev=0`],{cwd:e,timeout:2e3}),`absent`))}async timeSinceCommit(e,t){return t.kind===`ok`?uv(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=dv(cv(`git log -1`,await this.execGitAsync([`log`,`-1`,`--format=%ct`,t,`--`],{cwd:e,timeout:2e3}),`absent`));if(n.kind!==`ok`)return n;let r=parseInt(n.value,10)*1e3;return Number.isNaN(r)?X(`git log -1: unparseable timestamp "${n.value}"`):J(r)}resolveCommonGitDir(e){let t=this.resolveGitDir(e);try{let e=r.readFileSync(c.join(t,`commondir`),`utf-8`).trim();if(e)return c.resolve(t,e)}catch{}return t}getStashCount(e){let t=c.join(this.resolveCommonGitDir(e),`logs`,`refs`,`stash`),n;try{n=r.readFileSync(t,`utf-8`)}catch(e){return e.code===`ENOENT`?J(0):X(`git stash reflog ${t}: ${e instanceof Error?e.message:String(e)}`)}let i=n.trim();return J(i?i.split(`
|
|
90
|
+
`).length:0)}async getRemotesAsync(e){let t=kv(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=cv(`git config --get-regexp remote url`,await this.execGitAsync([`config`,`--local`,`--get-regexp`,`^remote\\..*\\.url$`],{cwd:e,timeout:2e3}),1);return t.kind===`failed`?t:J(t.kind===`ok`?gv(t.value):[])}repoNameFrom(e,t){let n=yv(e);return(n===null?null:xv(n))??c.basename(t)}async getRepoRemoteUrl(e){let t=await this.getRemotesAsync(e);if(t.kind!==`ok`)return t;let n=bv(t.value);return n===null?Y:J(n)}async execForgeAsync(e,t,n){return Te({bin:e,args:[...t],cwd:n.cwd,env:{...process.env},timeoutMs:n.timeout,category:`forge`})}async resolvePullRequest(e,t){let n=hv(t);return n===`github`?wv(`gh pr view`,await this.execForgeAsync(`gh`,[`pr`,`view`,`--json`,`number,state,url`],{cwd:e,timeout:5e3}),/no (open )?pull requests? found/i,Dv):n===`gitlab`?wv(`glab mr view`,await this.execForgeAsync(`glab`,[`mr`,`view`,`--output`,`json`],{cwd:e,timeout:5e3}),/no (open )?merge requests? (found|available)/i,Ov):Y}isWorktree(e){try{let t=c.join(e,`.git`);return!!(r.existsSync(t)&&r.statSync(t).isFile())}catch{return!1}}async getCoreAsync(e){D(`[GIT-EXEC] Running git status --porcelain=v2 in ${e}`);let t=cv(`git status --porcelain=v2 --branch`,await this.execGitAsync([`status`,`--porcelain=v2`,`--branch`],{cwd:e,timeout:2e3}),`failed`);return t.kind===`ok`?J(Ev(t.value)):t}};const jv=(e,t)=>D(t);var Mv=class{slots=new Map;maxWatchers;counters;logger;closed=!1;constructor(e={}){this.maxWatchers=e.maxWatchers??128,this.counters=e.counters,this.logger=e.logger??jv}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()}},Nv=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 Pv=(e,t)=>D(t),Fv={showSha:!0,showStashCount:!0};function Iv(e){let t=Object.keys(e).sort(),n={};for(let r of t)n[r]=e[r];return JSON.stringify(n)}function Lv(e){let t=t=>{try{return r.statSync(c.join(e,t)).mtimeMs}catch{return 0}};return{head:t(`HEAD`),index:t(`index`)}}function Rv(e,t){return e.head!==t.head||e.index!==t.index}function zv(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 Bv=class extends Av{entries=new Map;subscribersByRepo=new Map;fetchInFlight=new Map;resolutions=new Map;prCache=new Map;prFetchInFlight=new Map;refreshes=new Nv;hits=0;misses=0;invalidations=0;inner;ttlMs;maxEntries;watchers;ownsWatchers;logger;sanityTimer=null;constructor(e={}){super(),this.inner=e.inner??new Av,this.ttlMs=e.ttlMs??3e4,this.maxEntries=e.maxEntries??64,this.logger=e.logger??Pv,e.watchers?(this.watchers=e.watchers,this.ownsWatchers=!1):(this.watchers=new Mv({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}|${Iv(t)}`,r=Date.now(),i=this.entries.get(n);if(i&&r-i.computedAt<this.ttlMs)return this.entries.delete(n),this.entries.set(n,i),this.hits++,Promise.resolve(J(i.info));let a=this.fetchInFlight.get(n);if(a)return a;let o=this.doFetch(e,n,t,r).finally(()=>{this.fetchInFlight.delete(n)});return this.fetchInFlight.set(n,o),o}async doFetch(e,t,n,r){this.misses++;let i=this.inner.resolveGitDir(e),a=Lv(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}`,zv(i),()=>this.invalidateRepo(e));return this.entries.set(t,{info:s,computedAt:r,mtime:a,watcher:c,repoRoot:e}),this.evictIfNeeded(),o}async getPullRequestCached(e,t){let n=await this.inner.getRepoRemoteUrl(e);if(n.kind===`failed`)return n;if(n.kind===`absent`)return Y;let r=n.value,i=`${e}|${t}|${r}`,a=Date.now(),o=this.prCache.get(i);if(o){let e=o.pr.kind===`failed`?45e3:3e5;if(a-o.computedAt<e)return this.prCache.delete(i),this.prCache.set(i,o),o.pr}let s=this.prFetchInFlight.get(i);if(s)return s;let c=this.inner.resolvePullRequest(e,r).then(e=>(this.prCache.set(i,{pr:e,computedAt:Date.now()}),this.evictPrIfNeeded(),e)).finally(()=>{this.prFetchInFlight.delete(i)});return this.prFetchInFlight.set(i,c),c}evictPrIfNeeded(){for(;this.prCache.size>this.maxEntries;){let e=this.prCache.keys().next().value;if(e===void 0)break;this.prCache.delete(e)}}deliverable(e,t){return e.kind===`failed`?(this.logger(`warn`,`git fetch failed (${t}): ${e.reason}`),null):e.kind===`ok`?e.value:null}subscribe(e,t){let n=!1,r=null;return{firstDelivery:(async()=>{let i=await this.resolveEffectiveGitDir(e);if(n)return;if(i.kind!==`ok`){i.kind===`failed`&&this.logger(`warn`,`git resolve failed (subscribe ${e}): ${i.reason}`),this.safeInvoke(t,null);return}let a=i.value,o=this.subscribersByRepo.get(a);if(!o){let t=this.inner.resolveGitDir(a),n=this.watchers.acquire(`git:${a}`,zv(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,{...Fv});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,{...Fv}),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=Lv(this.inner.resolveGitDir(t.repoRoot)),e.set(t.repoRoot,n)),Rv(t.mtime,n)&&this.invalidateRepo(t.repoRoot)}}runSanityCheckNow(){this.runSanityCheck()}close(){this.sanityTimer&&=(clearInterval(this.sanityTimer),null);for(let e of this.entries.values())e.watcher.release();this.entries.clear();for(let e of this.subscribersByRepo.values())e.callbacks.clear(),e.watcher.release();this.subscribersByRepo.clear(),this.refreshes.clear(),this.fetchInFlight.clear(),this.prCache.clear(),this.prFetchInFlight.clear(),this.resolutions.clear(),this.ownsWatchers&&this.watchers.closeAll()}};const Vv=/\r\n|\r|\n/g,Hv=e=>J(e.replace(Vv,` `).trim());function Uv(e){return t=>{let n=e.exec(t)?.[1];return n===void 0?X(`regex no-match`):J(n.replace(Vv,` `))}}const Wv=e=>{try{return J(JSON.parse(e))}catch(e){return X(`JSON parse failed: ${e.message}`)}};function Gv(e,t){return t.kind!==`ttl`||t.durationMs>=500?t:(D(`declareShell "${e}": ttl ${t.durationMs}ms below floor 500ms; clamping`),{kind:`ttl`,durationMs:500})}function Kv(e){let t=/^(\d+(?:\.\d+)?)(ms|s|m|h)$/.exec(e);if(!t)throw RangeError(`Invalid duration: "${e}"`);let n=parseFloat(t[1]);switch(t[2]){case`ms`:return n;case`s`:return n*1e3;case`m`:return n*6e4;case`h`:return n*36e5;default:throw RangeError(`Unexpected duration unit: "${t[2]}"`)}}const qv=`session.id`;function Jv(e,t){return{where:`output of "${e}"`,read:async()=>{let n=await Te({bin:`/bin/sh`,args:[`-c`,e],category:`user-shell`,signal:t});if(!n.ok&&n.reason===`aborted`)throw t.reason;return n.ok?J(n.stdout):X(`shell "${e}" ${n.exitCode===null?[n.reason,n.error].filter(e=>e!==void 0).join(`: `):`exited with code ${n.exitCode}`}`)}}}function Yv(e,t,n){return{where:`"${e}"`,read:async()=>{try{let r=await v(e,{encoding:`utf8`,signal:n});return J(t===`first-line`?r.split(/\r?\n/)[0]??``:r)}catch{if(n.aborted)throw n.reason;return X(`file unreadable: ${e}`)}}}}function Xv(e,t,n){if(e.kind!==`ok`)return e;let r=t(e.value);return r.kind===`failed`?X(`${r.reason} in ${n}`):r}const Zv=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],Qv=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],$v=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],ey=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`];function ty(e,t){let n=[[`2006`,e=>String(e.getFullYear())],[`January`,e=>Zv[e.getMonth()]],[`Monday`,e=>$v[e.getDay()]],[`Jan`,e=>Qv[e.getMonth()]],[`Mon`,e=>ey[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 ny={branch:`string`,sha:`string`,dirty:`boolean`,ahead:`number`,behind:`number`,stash:`number`};function ry(e,t,n,r){if(e===null){if(n!==void 0)return n;let e=ny[t];try{return sy(r,e)}catch{return cy(e)}}switch(t){case`branch`:return e.branch===`detached`?``:e.branch;case`sha`:return sv(e.sha,``);case`dirty`:return e.status!==`clean`;case`ahead`:return sv(e.aheadBehind,{ahead:0,behind:0}).ahead;case`behind`:return sv(e.aheadBehind,{ahead:0,behind:0}).behind;case`stash`:return sv(e.stashCount,0)}}var iy=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}},ay=class{buckets=new Map;subscribe(e,t){let n=this.buckets.get(e);if(!n){let t=new Set;n={timer:S(()=>{for(let e of t)e()},e),callbacks:t},this.buckets.set(e,n)}return n.callbacks.add(t),()=>this.unsubscribe(e,t)}unsubscribe(e,t){let n=this.buckets.get(e);n&&(n.callbacks.delete(t),n.callbacks.size===0&&(x(n.timer),this.buckets.delete(e)))}dispose(){for(let{timer:e}of this.buckets.values())x(e);this.buckets.clear()}bucketCount(){return this.buckets.size}};function oy(e,t){let n=e;for(let e of t.split(`.`)){if(typeof n!=`object`||!n)return;n=n[e]}return n}function sy(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`?f_(e):t===`number`?p_(e):m_(e)}function cy(e){return e===`number`?0:e===`boolean`?!1:``}var ly=class{inputMetas=new Map;lastErrors=new Map;watchMgr=new iy;ttlMgr=new ay;gitSubscriptions=new Map;cleanups=[];inFlight=new Map;reads=new Nv;abort=new AbortController;drawn=l_.observable.box(M.TRUECOLOR);drawnAt=()=>this.drawn.get();engine=nv(void 0,void 0,this.drawnAt);gitProvider;ownsGitProvider;sessionState;constructor(e,t=``,n,r){this.store=e,this.defaultEmptyValue=t,n?(this.gitProvider=n,this.ownsGitProvider=!1):(this.gitProvider=new Bv({sanityIntervalMs:0}),this.ownsGitProvider=!0),this.sessionState=r}get variableStore(){return this.store}declareLiteral(e,t){this.store.defineBox(e,d_(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,Jv(t,this.abort.signal),Gv(e,n.cache),n.parse)}declareFile(e,t,n){this.declareSource(e,Yv(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,Hv,t.default,n);case`regex`:return this.scalarPublisher(e,Uv(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=Xv(n,t,r);this.noteOutcome(e,a),this.store.setBox(e,sv(a,i))}}documentPublisher(e,t,n){let r=t===void 0?Y:J(t);return this.store.defineDocument(e,r),i=>{let a=Xv(i,Wv,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=rv(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 ty(t.format,e)}catch{return this.stringInitial(t.varDefault)}})(new Date));let r=this.ttlMgr.subscribe(n,()=>{try{this.store.setBox(e,ty(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=ny[t.field],r=t.varDefault===void 0?cy(n):sy(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,ry(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(qv);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=oy(e,n.path),i=this.store.getType(t);if(r!==void 0)try{this.store.setBox(t,sy(r,i)),this.lastErrors.delete(t)}catch(e){this.applyFallback(t,i,n.varDefault,e instanceof Error?e.message:String(e))}else this.applyFallback(t,i,n.varDefault,`input path "${n.path}" not found in payload`)}})}drawAt(e){this.store.runInAction(()=>this.drawn.set(e))}getLastError(e){return this.lastErrors.get(e)}dispose(){this.abort.abort();for(let e of this.cleanups)e();this.cleanups.length=0;for(let e of this.gitSubscriptions.values())e.unsubscribe();this.gitSubscriptions.clear(),this.reads.clear(),this.watchMgr.dispose(),this.ttlMgr.dispose(),this.ownsGitProvider&&this.gitProvider.close()}registerCachePolicy(e,t,n){switch(t.kind){case`never`:break;case`ttl`:{let e=this.ttlMgr.subscribe(t.durationMs,n);this.cleanups.push(e);break}case`watch_file`:{let e=this.watchMgr.subscribe(t.path,n);this.cleanups.push(e);break}case`key`:{let e=this.engine.parse(t.template),r=(0,l_.reaction)(()=>{let t=rv(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,l_.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,sy(this.defaultEmptyValue,t))}catch{this.store.setBox(e,cy(t))}}defaultFor(e){try{return sy(this.defaultEmptyValue,e)}catch{return cy(e)}}stringInitial(e){return e===void 0?typeof this.defaultEmptyValue==`string`?this.defaultEmptyValue:``:e}recordError(e,t){this.lastErrors.set(e,{timestamp:Date.now(),message:t})}noteOutcome(e,t){t.kind===`ok`?this.lastErrors.delete(e):this.recordError(e,t.kind===`failed`?t.reason:`no value`)}};const uy={project_dir:{kind:`input`,path:`workspace.project_dir`,default:``},[qv]:{kind:`input`,path:`session_id`,default:``},transcript_path:{kind:`input`,path:`transcript_path`,default:``},"theme.effective":{kind:`input`,path:`theme.effective`,default:``},"look.effective":{kind:`input`,path:`look.effective`,default:``},"preset.effective":{kind:`input`,path:`preset.effective`,default:``},"preset.customized":{kind:`input`,path:`preset.customized`,type:`boolean`,default:!1},"preset.bundled":{kind:`input`,path:`preset.bundled`,type:`boolean`,default:!0},"style.effective":{kind:`input`,path:`style.effective`,default:``},"progression.effective":{kind:`input`,path:`progression.effective`,default:``},"charset.effective":{kind:`input`,path:`charset.effective`,default:``},"colorCompatibility.effective":{kind:`input`,path:`colorCompatibility.effective`,default:``},"autoWrap.effective":{kind:`input`,path:`autoWrap.effective`,type:`boolean`,default:!0},"padding.effective":{kind:`input`,path:`padding.effective`,type:`number`,default:1},"term.cols":{kind:`input`,path:`term.cols`,type:`number`,default:80},"git.repoUrl":{kind:`input`,path:`git.repoUrl`,default:``}},dy={theme:{configKey:`palette`,sessionKey:`theme`,effectiveVar:`theme.effective`},preset:{configKey:`preset`,sessionKey:`preset`,effectiveVar:`preset.effective`},look:{configKey:`look`,sessionKey:`look`,effectiveVar:`look.effective`},style:{configKey:`style`,sessionKey:`style`,effectiveVar:`style.effective`},progression:{configKey:`progression`,sessionKey:`progression`,effectiveVar:`progression.effective`},charset:{configKey:`charset`,sessionKey:`charset`,effectiveVar:`charset.effective`},colorCompatibility:{configKey:`colorCompatibility`,sessionKey:`colorCompatibility`,effectiveVar:`colorCompatibility.effective`},autoWrap:{configKey:`autoWrap`,sessionKey:`autoWrap`,effectiveVar:`autoWrap.effective`},padding:{configKey:`padding`,sessionKey:`padding`,effectiveVar:`padding.effective`}},fy=Object.values(dy),py=new Map(fy.map(e=>[e.configKey,e.effectiveVar])),my=new Map(fy.map(e=>[e.sessionKey,e.effectiveVar])),hy=new Map(Object.keys(dy).map(e=>[dy[e].sessionKey,e]));function gy(e,t,n){let r=new Set,i=e=>{for(let t of $g(e??``,n).keys())r.add(t)};for(let t of Object.values(e.segments))i(t.template),i(t.bg),i(t.fg),i(t.when);for(let e of t)for(let t of ts(e))i(t.when);for(let t of Object.values(e.variables))t.kind===`template`&&i(t.template),t.kind===`state`&&r.add(qv);for(let t of Object.values(e.actions)){r.add(qv),`copy`in t&&i(t.copy),`open`in t&&i(t.open);let e=`set`in t?my.get(t.set):void 0,n=`persist`in t?py.get(t.persist):void 0;e!==void 0&&r.add(e),n!==void 0&&r.add(n)}return r}function _y(e,t,n){let r=a_({...n,variables:{...n.variables,...e.variables},segments:{...n.segments,...e.segments}}),i={};for(let a of gy(e,t,n.helpers)){if(i_(a,r))continue;let e=uy[a];if(e===void 0)throw Error(`synthesized chrome reads ".${a}", which it does not declare and PAYLOAD_INPUTS does not supply`);i[a]=e}return i}const vy=/^segments\.([^.]+)\.palette$/,yy=/^presets\.(.+)\.root$/,by=/^presets\.(.+)\.globals\.([^.]+)$/;function xy(e){return`presets.${e}.root`}function Sy(e,t){return`presets.${e}.globals.${t}`}function Cy(e){if(Nc(e))return{scope:`globals`,field:e};let t=vy.exec(e);if(t)return{scope:`segment-palette`,segment:t[1]};let n=by.exec(e);if(n&&Ec(n[2]))return{scope:`preset-globals`,preset:n[1],field:n[2]};let r=yy.exec(e);return r?{scope:`preset-root`,preset:r[1]}:null}function wy(e){switch(e.scope){case`globals`:return[`globals`,e.field];case`preset-globals`:return[`presets`,e.preset,`globals`,e.field];case`segment-palette`:return[`segments`,e.segment,`palette`]}}const Ty=`open`;function Ey(e,t,n,r){let i={variable:e,key:e,member:Ty};return r.variables[e]=fc(e,rc),r.actions[e]=pc(e,Ty),r.segments[e]={template:dc(e,`(?)`,`✕`),...Dy(n)},cc(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 Dy(e){let[t,...n]=e;return t===void 0?{}:{when:lc(t,...n)}}const Oy={help:[`-h`,`--help`],version:[`-V`,`--version`]},ky=[`✚ inserts here`,`🚫 removes its segment`,`↺ resets layout`],Ay=`
|
|
91
91
|
cc-candybar - Beautiful powerline statusline for Claude Code
|
|
92
92
|
|
|
93
93
|
Usage: cc-candybar [options]
|
|
94
94
|
|
|
95
95
|
Standalone Commands:
|
|
96
|
-
${
|
|
97
|
-
${
|
|
96
|
+
${Oy.help.join(`, `).padEnd(25)}Show this help
|
|
97
|
+
${Oy.version.join(`, `).padEnd(25)}Print the version of this runtime (cc-candybar <version>)
|
|
98
98
|
|
|
99
99
|
Debugging:
|
|
100
100
|
CC_CANDYBAR_DEBUG=1 Enable debug logging for troubleshooting
|
|
@@ -107,7 +107,7 @@ Configuration:
|
|
|
107
107
|
|
|
108
108
|
Every bar carries a settings menu, whatever your config says — no config
|
|
109
109
|
needed, and writing your own \`root\` cannot delete it. Click
|
|
110
|
-
it on the bar (${
|
|
110
|
+
it on the bar (${ic} by default; globals.menuGlyph changes it) for
|
|
111
111
|
quick actions, preset switching, edit mode, and a config menu of
|
|
112
112
|
clickable theme/look/style/progression/charset/colour-depth/wrap/padding
|
|
113
113
|
controls. A change applies to this session at once; 💾 save appears while
|
|
@@ -116,7 +116,7 @@ Configuration:
|
|
|
116
116
|
failed row's [fix] to repair it (the same checks \`cc-candybar doctor\` runs).
|
|
117
117
|
|
|
118
118
|
Anywhere the bar shows (?), clicking it reveals these same instructions
|
|
119
|
-
in place. In edit mode: ${
|
|
119
|
+
in place. In edit mode: ${ky.join(`, `)}.
|
|
120
120
|
|
|
121
121
|
Subcommands:
|
|
122
122
|
install One-shot setup: stages the runtime (native render
|
|
@@ -154,55 +154,55 @@ Config tooling:
|
|
|
154
154
|
config [--json] The effective merged config. (All three query the
|
|
155
155
|
running daemon; none spawn one.)
|
|
156
156
|
|
|
157
|
-
`,my=`${_l}live`,hy=[`☐ live`,`☑ live`],gy=`${_l}done`,_y={variable:my,key:my,member:`open`},vy=`and ${ac(dg)} (not ${ac(_y)})`,yy=`{{ ${vy} }}`;function by(e,t){return`{{ if ${vy} }}${e}{{ else }}${t}{{ end }}`}const xy=`{{ and ${ac(dg)} .preset.customized }}`,Sy=bl;function Cy(e){return`${_l}addable.${e}`}function wy(e){let t=Object.keys(e.segments).filter(e=>!Sy(e)),n=new Map;for(let r of Xv(e.presets)){let{node:i}=$v(e,r),a=qv(i);n.set(Cy(r),{members:t.filter(e=>!a.has(e))})}return n}function Ty(e,t,n){return n.segments[e]={template:t,when:fg},{kind:`segment`,name:e}}function Ey(e,t,n,r){let i=`${_l}${e}.remove.${ml(n)}`;return r.actions[i]={persist:t,removeSegment:n},`{{ if ${ac(dg)} }}{{ action "${i}" "🚫" }}{{ end }}`}const Dy=`${_l}label:`;function Oy(e){return e.startsWith(Dy)?e.slice(Dy.length):e.startsWith(`edit.`)?void 0:e}function ky(e,t){let n=`${Dy}${e}`;return t.segments[n]={template:`{{ "${nc(e)}" }}`,when:yy},{kind:`segment`,name:n}}function Ay(e,t,n,r,i,a,o){let s=`${_l}${e}.insert.${n}`,c=`${_l}${e}.insertSeg.${n}`;o.actions[s]={persist:t,insertSegmentFrom:r,anchor:i,relation:a};let l=Hh(s),u=Uh(c,s,void 0),d=Kh(u),f=Gh(u,l);return o.variables[u]=sc(u,Qs),o.variables[d]={kind:`state`,key:d,default:`0`},o.actions[f]=cc(u,l),o.actions[d]={set:d,int:!0},{host:c,template:`{{ $m := menu "${s}" "✚" "✕" }}{{ if ${ac({variable:u,key:u,member:l})} }}{{ $m }}{{ else }}{{ fg (${`readableOn (color "success") (bgOf) ${Qi}`}) $m }}{{ end }}`}}function jy(e,t,n,r,i,a){let o=[],s=e.children.findIndex(e=>e.kind===`segment`&&!Sy(e.name)),c=e=>jy(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=Zo(u,c);if(Sy(u.name)){o.push(d);continue}let f=e=>Ay(t,n,String(a.n++),r,u.name,e,i),p=l===s?[f(`before`)]:[],m=f(`after`),h=Ey(t,n,u.name,i),g={kind:`container`,direction:`horizontal`,children:[...p.map(e=>Ty(e.host,e.template,i)),{...ky(u.name,i),trail:h},{...d,when:by(`false`,u.when??`true`),trail:h},Ty(m.host,m.template,i)]};o.push(e.direction===`vertical`?{kind:`container`,direction:`horizontal`,children:[g]}:g)}return{...e,children:o,...e.when!==void 0&&{when:by(`true`,e.when)}}}function My(e,t,n,r,i,a,o){let s=`${_l}${n}.resetLayout`,c=`${_l}${n}.customized`;i.actions[s]={reset:r};let l=nc(t);return i.segments[c]={template:`{{ action "${s}" "↺ ${l} customized" }}`,when:xy},{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[a,{kind:`segment`,name:c}]},Ny(e,o)]}}function Ny(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),Ny(n,t)]}:{...e,children:[...e.children,t]}}function Py(e,t,n,r,i){let{node:a}=$v(e,t),o=iy(t),s=Cy(t),c=ml(t);return My(jy(a,c,o,s,n,{n:0}),t,c,o,n,r,i)}function Fy(e){let t={variables:{},actions:{},segments:{}},n=ly(`${_l}help`,fy,[dg],t);t.variables[my]=sc(my,Qs),t.actions[my]=cc(my,_y.member),t.segments[my]={template:oc(my,...hy),when:fg};let r={kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:my},n]};t.segments[gy]={template:`{{ action "${lg}" "✎ done" }}`,when:fg};let i={kind:`segment`,name:gy},a={...e.presets},o=[];for(let n of Xv(e.presets)){let s=Py(e,n,t,i,r);o.push(s),a[n]={...Qv(e.presets,n),root:s}}let s=Wv(t,o,e);return{...e,variables:{...s,...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:a}}const Iy={socket:`TMUX`,pane:`TMUX_PANE`,truecolor:`CLAUDE_CODE_TMUX_TRUECOLOR`};function Ly(e){let t=e[Iy.socket]??``,n=e[Iy.pane]??``;if(t===``||n===``)return null;let r=e[Iy.truecolor]??``;return{socket:t.split(`,`)[0],pane:n,truecolor:r===``?null:r}}const Ry=Iy.truecolor,zy=[{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[Ry];return typeof n==`string`&&n!==``?{ok:!1,reason:`${Ry} 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:Ry,value:`1`}}}}}}];function By(e){return zy.map(t=>({check:t,verdict:t.probe(e)}))}function Vy(e){return zy.find(t=>t.name===e)}function Hy(e){let t=`settings.doctor.${e}.`;return{verdict:`${t}verdict`,reason:`${t}reason`,fixable:`${t}fixable`}}function Uy(e){return e.flatMap(({check:e,verdict:t})=>{let n=Hy(e.name);return t.ok?[{key:n.verdict,value:`ok`},{key:n.reason,value:``},{key:n.fixable,value:Ja}]:[{key:n.verdict,value:`failed`},{key:n.reason,value:t.reason},{key:n.fixable,value:t.fix===void 0?Ja:qa}]})}const Wy={copySession:{copy:`{{ .session.id }}`},openProject:{open:`{{ .project_dir }}`},openTranscript:{open:`{{ .transcript_path }}`}};function Gy(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(Wy).map(([t,n])=>[`${e}${t}`,n]))}}const Ky=`${vl}menu`,qy=ug,Jy=`${vl}edit`,Yy=`${vl}close`,Xy=`${vl}toolbar`,Zy=Gy(vl),Qy=`${vl}config`,$y=`${vl}save`,eb=`${vl}unsaved`,tb=`${vl}preset.save`,nb=`${vl}preset.delete`,rb=`${vl}resetAll`,ib=`${rb}.arm`,ab=`${rb}.disarm`,ob=`armed`,sb=`disarmed`,cb=`${Ky}.toggle`,lb=`${Qy}.toggle`,ub={variable:Ky,key:Ky,member:qy},db={variable:Qy,key:Qy,member:qy},fb=`${vl}tools`,pb={variable:fb,key:fb,member:qy},mb=[{seg:`${vl}undo`,depth:`undo`,action:{undo:!0},display:`↶ undo`},{seg:`${vl}redo`,depth:`redo`,action:{redo:!0},display:`↷ redo`}],hb=e=>`${vl}history.${e}`,gb=`${vl}doctor`,_b=`${gb}.run`,vb=e=>`${gb}.fix.${e}`,yb=e=>`${gb}.${e}`,bb=`${vl}pickers`,xb=[`{{ themePreview }}`],Sb=[{name:`preset`,...Rv.preset,glyph:`▦`,domain:`presets`,beneath:[`{{ layoutPreview }}`,`{{ action "${tb}" "⊕ save as preset" }}{{ if not .preset.bundled }} {{ action "${nb}" (printf "🗑 delete %s" .${Rv.preset.effectiveVar}) }}{{ end }}`]}],Cb=[{name:`theme`,...Rv.theme,glyph:`🎨`,domain:`themes`,beneath:xb},{name:`look`,...Rv.look,glyph:`◐`,domain:`looks`,beneath:xb},{name:`style`,...Rv.style,glyph:`✦`,domain:`styles`,beneath:[]},{name:`progression`,...Rv.progression,glyph:`🎼`,domain:`progressions`,beneath:[`{{ layoutPreview }}`]},{name:`charset`,...Rv.charset,glyph:`🔣`,domain:`charsets`,beneath:[]},{name:`colorCompatibility`,...Rv.colorCompatibility,glyph:`🌈`,domain:`colorCompatibilities`,beneath:[]}],wb={name:`wrap`,...Rv.autoWrap},Tb={name:`padding`,...Rv.padding},Eb=`${vl}${wb.name}`,Db=`${vl}${Tb.name}`,Ob=[...Sb,...Cb],kb=[...Ob,wb,Tb];new Set(kb.flatMap(e=>[e.sessionKey,e.configKey]));const Ab=e=>`${vl}${e}`,jb=e=>`${vl}apply.${e}`,Mb=e=>`${vl}reset.${e}`,Nb=e=>`${vl}carousel.${e}`,Pb=(e,t)=>`${Nb(e)}.${t}`,Fb=Wh(bb),Ib=e=>({variable:Fb,key:Fb,member:Hh(jb(e.name))});function Lb(e){return rc(Ab(e.name),Ib(e),{kind:`container`,direction:`vertical`,children:[{kind:`segment`,name:Nb(e.name)},...e.beneath.map((t,n)=>({kind:`segment`,name:Pb(e.name,n)}))]},`drop`)}function Rb(e){return e===Ky}function zb(e){let t={kind:`segment`,name:Ky};if(e.kind===`container`&&e.direction===`vertical`){let[n,...r]=e.children;return e.when===void 0&&n!==void 0?{...e,children:[zb(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 Bb(e){return Vb(e)>0?e:zb(e)}function Vb(e){let t=0;for(let n of Qo(e))n.kind===`segment`&&Rb(n.name)&&(t+=1);return t}function Hb(e,t=!1){let n=t||e.when!==void 0;return e.kind===`segment`?n&&Rb(e.name)||e.opens!==void 0&&Hb(e.opens.body,!0):e.children.some(e=>Hb(e,n))}function Ub(e){return e.kind===`segment`?Rb(e.name)?rc(e.name,ub,{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:Xy},...Sb.map(Lb),{kind:`segment`,name:$y},rc(Qy,db,{kind:`container`,direction:`horizontal`,children:[...Cb.map(Lb),{kind:`segment`,name:Eb},{kind:`segment`,name:Db},{kind:`segment`,name:rb}]},`drop`),rc(fb,pb,{kind:`container`,direction:`vertical`,children:[{kind:`segment`,name:gb},...zy.map(e=>({kind:`segment`,name:yb(e.name)}))]},`drop`),{kind:`segment`,name:Jy},...mb.map(e=>({kind:`segment`,name:e.seg}))]},`inline`):e:Wb(e)}function Wb(e){return{...e,children:e.children.map(e=>Ub(e))}}function Gb(e){let t={variables:{[Ky]:sc(Ky,Qs)},actions:{[cb]:cc(Ky,qy),[Ky]:{do:[cb,ab]},[lb]:cc(Qy,qy),[Qy]:{do:[lb,ab]},[fb]:cc(fb,qy),[_b]:{doctor:`run`},[Yy]:{set:ub.key,to:Qs},[Jy]:{do:[lg,Yy]},...Zy.actions,[$y]:{save:!0},[tb]:{preset:`save`},[nb]:{preset:`delete`,name:`{{ .${Rv.preset.effectiveVar} }}`}},segments:{[Ky]:{template:oc(Ky,e,`❌`)},[Xy]:{template:Zy.template},[$y]:{when:`{{ gt .${eb} 0 }}`,template:`{{ action "${$y}" (printf "💾 save %d" .${eb}) }}`},[Qy]:{template:oc(Qy,`⚙ config ▸`,`⚙ config ▾`)},[fb]:{template:oc(fb,`🧰 tools ▸`,`🧰 tools ▾`)},[gb]:{template:`{{ action "${_b}" "🩺 doctor" }}`},[Eb]:{template:`{{ action "${jb(`wrap`)}" "wrap: on" "wrap: off" }} {{ action "${Mb(`wrap`)}" "↺" }}`},[Db]:{template:`{{ action "${jb(`padding`)}.down" "◀" }} padding {{ .${Tb.effectiveVar} }} {{ action "${jb(`padding`)}.up" "▶" }} {{ action "${Mb(`padding`)}" "↺" }}`},[Jy]:{template:`{{ action "${Jy}" "✎ edit" "✎ done" }}`},[rb]:{template:`{{ if eq .${rb} "${ob}" }}{{ action "${rb}" "⟲ confirm reset all" }}{{ else }}{{ action "${ib}" "⟲ reset all" }}{{ end }}`}}};return t.variables[eb]={kind:`input`,path:`unsaved`,type:`number`,default:0},t.variables[Qy]=sc(Qy,Qs),t.variables[fb]=sc(fb,Qs),t.variables[rb]={kind:`state`,key:rb,default:sb},Jb(t),qb(t),Kb(t),t}function Kb(e){for(let t of mb){let n=hb(t.depth);e.variables[n]={kind:`input`,path:`history.${t.depth}`,type:`number`,default:0},e.actions[t.seg]=t.action,e.segments[t.seg]={when:`{{ gt .${n} 0 }}`,template:`{{ action "${t.seg}" "${t.display}" }}`}}}function qb(e){for(let t of zy){let n=Hy(t.name),r=vb(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[yb(t.name)]={when:`{{ ne .${n.verdict} "" }}`,template:`{{ if eq .${n.verdict} "ok" }}✓ ${t.label}{{ else }}✗ ${t.label} — {{ .${n.reason} }}{{ if eq .${n.fixable} "${qa}" }} {{ action "${r}" "[fix]" }}{{ end }}{{ end }}`}}}function Jb(e){for(let t of Ob){let n=jb(t.name);e.actions[n]={set:t.sessionKey,from:t.domain},e.actions[Mb(t.name)]={reset:t.configKey},Yb(t,e)}e.actions[jb(wb.name)]={set:wb.sessionKey,cycle:[...Ya]},e.actions[Mb(wb.name)]={reset:wb.configKey};for(let t of[-1,1])e.actions[`${jb(Tb.name)}.${t<0?`down`:`up`}`]={set:Tb.sessionKey,...Xa,by:t};e.actions[Mb(Tb.name)]={reset:Tb.configKey},e.actions[ib]={set:rb,to:ob},e.actions[ab]={set:rb,to:sb},e.actions[rb]={do:[ab,...kb.map(e=>Mb(e.name))]}}function Yb(e,t){let n=jb(e.name),r=Ib(e),i=Gh(r.key,r.member);t.variables[r.key]=sc(r.key,Qs),t.actions[i]=cc(r.key,r.member),t.segments[Ab(e.name)]={template:`${e.glyph} {{ .${e.effectiveVar} }} ${oc(i,`▸`,`▾`)} {{ action "${Mb(e.name)}" "↺" }}`},t.segments[Nb(e.name)]={template:`{{ carousel "${n}" }}`},e.beneath.forEach((n,r)=>{t.segments[Pb(e.name,r)]={template:n}})}function Xb(e){e.variables[cg]=sc(cg,Qs),e.actions[lg]=cc(cg,ug)}function Zb(e){let t=Gb(e.globals.menuGlyph??`🍫`);Xb(t);let n={...e.presets},r=[];for(let t of Xv(e.presets)){let{node:i}=$v(e,t),a=Ub(Bb(i));r.push(a),n[t]={...Qv(e.presets,t),root:a}}let i=Wv(t,r,e);return{...e,variables:{...i,...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:n}}const Qb=[`set`,`persist`,`copy`,`open`,`reset`,`undo`,`redo`,`save`,`preset`,`doctor`,`do`];function $b(e){return`from`in e||`int`in e||`insertSegmentFrom`in e}function ex(e,t){if(t===void 0)return{};if(!hs(t))return Z(e,`actions`,`actions must be an object, got ${gs(t)}`),{};let n=Object.create(null);for(let[r,i]of Object.entries(t)){let t=tx(e,`actions.${r}`,i);t!==null&&(n[r]=t)}return n}function Z(e,t,n){e.issues.push({path:t,message:n,line:W(e.source,t.split(`.`))})}function tx(e,t,n){if(!hs(n))return Z(e,t,`${t} must be an action object, got ${gs(n)}`),null;if(`persistWhen`in n)return Z(e,t,`${t}.persistWhen was removed: declare the \`set\` alone — a session pick is a draft until a \`{ save: true }\` action writes every unsaved setting to the config file`),null;let r=Qb.filter(e=>e in n);return r.length===1?nx[r[0]](e,t,n):(Z(e,t,`action must declare exactly one of: ${Qb.join(`, `)}${r.length>1?` (found: ${r.join(`, `)})`:``}`),null)}const nx={set:(e,t,n)=>Mx(e,t,n,`set`,Ox),persist:(e,t,n)=>Mx(e,t,n,`persist`,kx),copy:rx(`copy`),open:rx(`open`),reset:ix,undo:ox(`undo`),redo:ox(`redo`),save:ox(`save`),preset:sx,doctor:cx,do:lx};function rx(e){return(t,n,r)=>{for(let i of Object.keys(r))i!==e&&Z(t,`${n}.${i}`,`Unknown key "${i}" on a ${e} action. Expected only: ${e}`);let i=us(t,n,r,e);return i===null?null:{[e]:i}}}function ix(e,t,n){for(let r of Object.keys(n))r!==`reset`&&Z(e,`${t}.${r}`,`Unknown key "${r}" on a reset action. Expected only: reset`);let r=ux(e,t,`reset`,n,`reset key must be non-empty (the config globals field to clear)`,e=>`reset key "${e}" contains "/" — keys must be slash-free`);return r===null?null:{reset:r}}const ax={undo:`it steps the session's settings history`,redo:`it steps the session's settings history`,save:`it saves the session's unsaved settings`};function ox(e){return(t,n,r)=>{for(let i of Object.keys(r))i!==e&&Z(t,`${n}.${i}`,`Unknown key "${i}" on a ${e} action. Expected only: ${e}`);return r[e]===!0?{[e]:!0}:(Z(t,`${n}.${e}`,`${e} must be the literal true (it takes no key — ${ax[e]}), got ${G(r[e])}`),null)}}function sx(e,t,n){let r=n.preset,i=r===`save`?[`preset`]:[`preset`,`name`];for(let r of Object.keys(n))i.includes(r)||Z(e,`${t}.${r}`,`Unknown key "${r}" on a preset action. Expected only: ${i.join(`, `)}`);if(r!==`save`&&r!==`delete`)return Z(e,`${t}.preset`,`preset must be "save" or "delete", got ${G(r)}`),null;if(r===`save`)return{preset:`save`};let a=us(e,t,n,`name`);return a===null?null:{preset:`delete`,name:a}}function cx(e,t,n){let r=n.doctor,i=r===`run`?[`doctor`]:[`doctor`,`check`];for(let r of Object.keys(n))i.includes(r)||Z(e,`${t}.${r}`,`Unknown key "${r}" on a doctor action. Expected only: ${i.join(`, `)}`);if(r!==`run`&&r!==`fix`)return Z(e,`${t}.doctor`,`doctor must be "run" or "fix", got ${G(r)}`),null;if(r===`run`)return{doctor:`run`};let a=n.check;return typeof a!=`string`||Vy(a)===void 0?(Z(e,`${t}.check`,`doctor fix must name a check (have: ${zy.map(e=>e.name).join(`, `)}), got ${G(a)}`),null):{doctor:`fix`,check:a}}function lx(e,t,n){for(let r of Object.keys(n))r!==`do`&&Z(e,`${t}.${r}`,`Unknown key "${r}" on a do action. Expected only: do`);let r=n.do;return!Array.isArray(r)||r.length<2||r.some(e=>typeof e!=`string`||e===``)?(Z(e,`${t}.do`,`do must list at least two action names (the first is the click's face, the rest ride along in the same click), got ${G(r)}`),null):{do:r}}function ux(e,t,n,r,i,a){let o=us(e,t,r,n);if(o===null)return null;let s=`${t}.${n}`;return o===``?(Z(e,s,i),null):o.includes(`/`)?(Z(e,s,a(o)),null):o}const dx={set:`the SessionState key to write`,persist:`the config globals field to write`};function fx(e,t,n,r){let i=dx[r],a=ux(e,t,r,n,`${r} key must be non-empty (${i})`,e=>`${r} key "${e}" contains "/" — keys must be slash-free`);return a===null?null:{[r]:a}}function px(e){return e===`set`?`set-state`:`set-config`}const mx={to:Nx(`set`)},hx={to:Nx(`persist`)},gx={from:Px(`set`)},_x={from:Px(`persist`)},vx={min:zx(),max:zx(),by:zx()},yx={int:Ix()},bx={cycle:Fx(`set`)},xx={cycle:Fx(`persist`)},Sx={removeSegment:Lx(`removeSegment`)},Cx={insertSegment:Lx(`insertSegment`),anchor:Lx(`anchor`),relation:Rx()},wx={insertSegmentFrom:Px(`persist`),anchor:Lx(`anchor`),relation:Rx()},Tx={ok:e=>e.min<e.max,issue:e=>({field:`min`,message:`min (${e.min}) must be less than max (${e.max})`})},Ex={ok:e=>e.by!==0,issue:()=>({field:`by`,message:`by must be a non-zero integer (the per-click increment; negative steps down)`})};function Dx(e,t,n=[],r){let i=Object.keys(t),a=r??i,o=[e],s=(e,n,r)=>vs(e,t,n,r),c=Ns(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?Es(s,...n):s}}const Ox=[Dx(`set`,mx),Dx(`set`,gx),Dx(`set`,vx,[Tx,Ex]),Dx(`set`,yx),Dx(`set`,bx)],kx=[Dx(`persist`,hx),Dx(`persist`,_x),Dx(`persist`,vx,[Tx,Ex]),Dx(`persist`,xx),Dx(`persist`,Sx),Dx(`persist`,Cx,[],[`insertSegment`]),Dx(`persist`,wx,[],[`insertSegmentFrom`])];function Ax(e){let t=[`"to" (a literal value)`,`"from" (an option domain — a registered domain name like "themes"/"styles"/"looks", or an inline array of literal values)`,`"min"/"max"/"by" (a bounded step)`];return e===`set`&&t.push(`"int" (an unbounded integer cursor)`),t.push(`"cycle" (an enumerated domain stepped in order)`),e===`persist`&&t.push(`"removeSegment" (remove a named segment from the layout)`,`"insertSegment"/"anchor"/"relation" (insert a named segment before/after an existing one)`,`"insertSegmentFrom"/"anchor"/"relation" (insert a segment PICKED from an option domain before/after an existing one)`),t}function jx(e){let t=Ax(e),n=t[t.length-1];return`a ${e} action declares exactly one value source: ${t.length===1?n:`${t.slice(0,-1).join(`, `)}, or ${n}`}`}function Mx(e,t,n,r,i){let a=fx(e,t,n,r),o=i.filter(e=>e.detect.some(e=>e in n));if(o.length!==1)return Z(e,t,`${jx(r)}${o.length>1?` — found: ${o.map(e=>e.label).join(`, `)}`:``}`),null;let s=o[0];for(let i of Object.keys(n))s.allowed.includes(i)||Z(e,`${t}.${i}`,`Unknown key "${i}" on this ${r} action. Expected one of: ${s.allowed.join(`, `)}`);let c=s.parse(e,t,n);return a===null||c===null?null:{...a,...c}}function Nx(e){let t=px(e);return{required:!0,json:{type:`string`},parse:(n,r,i,a)=>ux(n,r,i,a,`${e} value must be non-empty — an empty value cannot be delivered on the ${t} wire`,t=>`${e} value "${t}" contains "/" — ${e} values must be slash-free`)??void 0}}function Px(e){let t=px(e);return{required:!0,json:{anyOf:[{type:`string`,minLength:1},{type:`array`,items:{type:`string`,minLength:1},minItems:1,uniqueItems:!0}]},parse:(n,r,i,a)=>{let o=a[i],s=`${r}.${i}`;if(typeof o==`string`){if(o===``){Z(n,s,`${i} must be a non-empty domain name`);return}return o}if(Array.isArray(o)&&o.every(e=>typeof e==`string`)){let r=o;if(r.length===0){Z(n,s,`${i} must name a domain (a non-empty string) or declare an inline domain (a non-empty array of values)`);return}if(r.some(e=>e===``)){Z(n,s,`${i} array members must be non-empty — an empty value cannot be delivered on the ${t} wire`);return}let a=r.filter(e=>e.includes(`/`));if(a.length>0){Z(n,s,`${i} array member(s) ${a.map(e=>`"${e}"`).join(`, `)} contain "/" — ${e} values must be slash-free`);return}if(new Set(r).size!==r.length){Z(n,s,`${i} array members must be unique — a duplicated value would render the same picker option twice`);return}return r}Z(n,s,`${i} must be a domain name (a string) or an inline domain (an array of strings), got ${G(o)}`)}}}function Fx(e){let t=px(e);return{required:!0,json:{type:`array`,items:{type:`string`,minLength:1},minItems:2,uniqueItems:!0},parse:(n,r,i,a)=>{let o=a[i],s=`${r}.${i}`;if(!Array.isArray(o)||o.some(e=>typeof e!=`string`)){Z(n,s,`cycle must be an array of strings (the enumerated values a click steps through), got ${gs(o)}`);return}let c=o;if(c.length<2){Z(n,s,`cycle needs at least two members (one member has no successor — use a literal "to")`);return}let l=c.some(e=>e===``),u=c.filter(e=>e.includes(`/`));if(l){Z(n,s,`cycle members must be non-empty — an empty value cannot be delivered on the ${t} wire`);return}if(u.length>0){Z(n,s,`cycle member(s) ${u.map(e=>`"${e}"`).join(`, `)} contain "/" — ${e} values must be slash-free`);return}if(new Set(c).size!==c.length){Z(n,s,`cycle members must be unique — the successor of a duplicated member is ambiguous`);return}return c}}}function Ix(){return{required:!0,json:{const:!0},parse:(e,t,n,r)=>{if(r[n]!==!0){Z(e,`${t}.${n}`,`int must be the literal true (declares the key an unbounded integer cursor — a paged picker's page key), got ${G(r[n])}`);return}return!0}}}function Lx(e){return{required:!0,json:{type:`string`},parse:(t,n,r,i)=>{let a=us(t,n,i,r);if(a===null)return;let o=`${n}.${r}`;if(a===``){Z(t,o,`${e} must be non-empty (a segment name)`);return}if(a.includes(`/`)||a.includes(`:`)){Z(t,o,`${e} "${a}" contains "/" or ":" — segment names in a layout op must be free of both (the click wire's own delimiter and layout-ops.ts's op-token delimiter)`);return}return a}}}function Rx(){return{required:!0,json:{enum:[`before`,`after`]},parse:(e,t,n,r)=>{let i=r[n];if(i!==`before`&&i!==`after`){Z(e,`${t}.${n}`,`relation must be "before" or "after", got ${G(i)}`);return}return i}}}function zx(){return{required:!0,json:{type:`integer`},parse:(e,t,n,r)=>{let i=r[n];if(typeof i!=`number`||!Number.isInteger(i)){Z(e,`${t}.${n}`,`${n} must be an integer, got ${G(i)}`);return}return i}}}const Bx={noun:`look key`,fields:{hueShift:ks(),chromaScale:ks({min:0}),lightnessScale:ks(),lightnessShift:ks()}};function Vx(e,t){if(!hs(t))return e.issues.push({path:`looks`,message:`looks must be an object mapping look names to adaptation objects, got ${gs(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=_s(e,Bx,`looks.${r}`,i);t!==null&&(n[r]={...On,...t})}return n}const Hx={noun:`preset key`,fields:{root:{required:!1,json:{$ref:`#/definitions/RootFragment`},parse:(e,t,n,r)=>r[n]===void 0?void 0:Yl(e,`${t}.${n}`,r[n])},globals:{required:!1,json:Tc(),parse:(e,t,n,r)=>r[n]===void 0?void 0:wc(e,`${t}.${n}`,r[n])}}};function Ux(e,t){if(!hs(t))return e.issues.push({path:`presets`,message:`presets must be an object mapping preset names to config fragments, got ${gs(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=_s(e,Hx,`presets.${r}`,i);t!==null&&(n[r]=t)}return n}function Wx(e,t){if(t===void 0)return{};if(!hs(t))return e.issues.push({path:`helpers`,message:`helpers must be an object, got ${gs(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 Gx=new Map,Kx=new Map;function qx(e){let t=Jx(e);if(t===null)throw Error(`Palette "${e}" (resolved "${va(e)}") did not resolve in the theme registry — allowed names and the registry are inconsistent`);return t}function Jx(e){let t=va(e),n=Gx.get(t);if(n!==void 0)return n;let r=ir(t);return r===null?null:(Gx.set(t,r),r)}function Yx(e,t){let n=`${e.name} ${t.hueShift} ${t.chromaScale} ${t.lightnessScale} ${t.lightnessShift}`,r=Kx.get(n);if(r!==void 0)return r;let i=fr(e,t);return Kx.set(n,i),i}function Xx(e){let t=Jx(e);return t===null?null:{kind:`decided`,name:e,value:t}}function Zx(e,t){let n=Xx(e);return n===null?(t(`globals.palette rendered "${ya}": "${e}" names no installed theme`),$x()):n}function Qx(e,t,n){return Ea(e,t,n,$x(),Xx)}function $x(){return Xx(ya)}function eS(e){return Da(Qx(void 0,null,e),()=>ya,$x).value}const tS=new Map;function nS(e,t,n){tS.set(e,{permanent:!0,resolve:t,paletteOf:n})}nS(`themes`,()=>Sa(),e=>qx(e)),nS(`styles`,()=>Ma),nS(`progressions`,()=>Wa),nS(`charsets`,()=>Fa),nS(`colorCompatibilities`,()=>za);function rS(e){return new Map([[`looks`,{members:Object.keys(e.looks),paletteOf:(t,n)=>Yx(n,e.looks[t])}],[`presets`,{members:Xv(e.presets)}]])}function iS(e){return[...new Set([...tS.keys(),...e.keys()])]}function aS(e,t){if(typeof e!=`string`)return{members:e};let n=t.get(e);if(n)return n;let r=tS.get(e);if(r)return{members:r.resolve(),paletteOf:r.paletteOf};throw Error(`unknown option domain "${e}" (have: ${iS(t).join(`, `)})`)}function oS(e,t){let n=new Map;for(let e of Object.keys(t)){let t=ml(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 sS(e,t,n){t.globals.look!==void 0&&!Ta(t.globals.look)&&!Object.prototype.hasOwnProperty.call(t.looks,t.globals.look)&&e.issues.push({path:`globals.look`,message:`globals.look "${t.globals.look}" does not match any declared look (have: ${Object.keys(t.looks).join(`, `)})`,line:W(e.source,[`globals`,`look`])}),t.globals.preset!==void 0&&!Object.prototype.hasOwnProperty.call(t.presets,t.globals.preset)&&e.issues.push({path:`globals.preset`,message:`globals.preset "${t.globals.preset}" does not match any declared preset (have: ${Object.keys(t.presets).join(`, `)})`,line:W(e.source,[`globals`,`preset`])}),oS(e,t.presets);let r=rS(t);for(let[n,i]of Object.entries(t.actions))!(`set`in i)||!(`from`in i)||typeof i.from!=`string`||iS(r).includes(i.from)||e.issues.push({path:`actions.${n}.from`,message:`actions.${n} from: references unknown option domain "${i.from}" (have: ${iS(r).join(`, `)})`,line:W(e.source,[`actions`,n,`from`])});for(let[n,r]of Object.entries(t.actions))`do`in r&&r.do.forEach((i,a)=>{let o=Object.prototype.hasOwnProperty.call(t.actions,i)?t.actions[i]:void 0,s=o===void 0?`references unknown action "${i}"`:`do`in o?`"${i}" is itself a do action — list its members here instead`:r.do.indexOf(i)===a?a>0&&$b(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=oy(i);if(o===null){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" is not a config globals field (have: ${kc().join(`, `)}), a "segments.<name>.palette" target, a "presets.<name>.globals.<field>" target, or a "presets.<name>.root" target`,line:W(e.source,[`actions`,n,a])});continue}let s=cS.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`){lS(e,t,n,a,i,o.preset,r);continue}if(o.scope===`preset-globals`&&!Xv(t.presets).includes(o.preset)){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" names preset "${o.preset}" which is not declared (have: ${Xv(t.presets).join(`, `)})`,line:W(e.source,[`actions`,n,a])});continue}if(o.scope===`segment-palette`){if(!Object.prototype.hasOwnProperty.call(t.segments,o.segment)){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" names segment "${o.segment}" which is not declared (have segments: ${Object.keys(t.segments).join(`, `)})${wl(o.segment)}`,line:W(e.source,[`actions`,n,a])});continue}`min`in r&&e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" is a segment palette target and cannot use a bounded stepper (min/max/by) — use "to", "from", or "cycle" instead`,line:W(e.source,[`actions`,n,a])})}}let i=Ng(t),a=Object.entries(t.segments).filter(([,e])=>ig(e.template)).map(([e])=>e),o=(t,n,r)=>{Vb(t)>1&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${Ky}" ${Vb(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}),Hb(t)&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${Ky}" under a \`when\` or inside a disclosure body — the menu is visible under every condition, so its placement may not be gated. Move it to an ungated position, or remove it to put the menu at its default position.`,line:r}),s(t)&&e.issues.push({path:n,message:`${n} sets "distribution" on a container inside a bar cell — everything inside a cell wears that cell's hue and tone, so it would place nothing. Set it on the row whose children are the cells (the horizontal container) or on the root, which places the rows.`,line:r});let i=new Map;for(let e of Qo(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||Xo[e.direction]===`cell`))}let c=(n,r)=>{for(let[a,o]of Ks(n,r)){let n=W(e.source,o.split(`.`));a.when!==void 0&&(pS(e,`${o}.when`,a.when,i,{line:n}),fS(e,`${o}.when`,a.when,n)),a.kind===`segment`&&(Rb(a.name)||Object.prototype.hasOwnProperty.call(t.segments,a.name)||e.issues.push({path:o,message:`${r} entry "${a.name}" does not match any declared segment${wl(a.name)}`,line:n}))}};n.root!==void 0&&c(n.root,`root`);for(let[e,t]of Object.entries(n.presets??{}))t.root!==void 0&&c(t.root,`presets.${e}.root`);let l=new Map([[`root`,Ws(t.root)]]);for(let e of Xv(t.presets)){let{node:n,path:r}=$v(t,e);l.set(r,n)}for(let[t,n]of l)o(n,t,W(e.source,t.split(`.`)));for(let[n,r]of Object.entries(t.variables))uS(e,`variables.${n}`,r,i);for(let[n,r]of Object.entries(t.segments)){if(r.vars)for(let[t,a]of Object.entries(r.vars))uS(e,`segments.${n}.vars.${t}`,a,i,n);for(let a of[`template`,`bg`,`fg`,`when`]){let o=r[a];if(typeof o==`string`){pS(e,`segments.${n}.${a}`,o,i,{segCtx:n});for(let r of kg(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 jg(o))Object.prototype.hasOwnProperty.call(t.actions,r)||e.issues.push({path:`segments.${n}.${a}`,message:`${a} references unknown action "${r}" (in a picker, menu or carousel)`,line:W(e.source,[`segments`,n,a])})}}}for(let[n,r]of Object.entries(t.variables))dS(e,`variables.${n}`,r,i);for(let[n,r]of Object.entries(t.segments))if(r.vars)for(let[t,a]of Object.entries(r.vars))dS(e,`segments.${n}.vars.${t}`,a,i,n)}const cS=[`removeSegment`,`insertSegment`,`insertSegmentFrom`];function lS(e,t,n,r,i,a,o){let s=`actions.${n}.${r}`,c=W(e.source,[`actions`,n,r]);if(!Xv(t.presets).includes(a)){e.issues.push({path:s,message:`actions.${n}: "${i}" names preset "${a}" which is not declared (have: ${Xv(t.presets).join(`, `)})`,line:c});return}if(r===`reset`)return;let l=`removeSegment`in o,u=`insertSegment`in o,d=`insertSegmentFrom`in o;if(!l&&!u&&!d){e.issues.push({path:s,message:`actions.${n}: "${i}" is a "presets.<name>.root" target and can only be paired with "removeSegment", "insertSegment", or "insertSegmentFrom" (not "to"/"from"/"cycle"/bounded — those have no meaning as a tree op)`,line:c});return}let f=(r,i)=>{Object.prototype.hasOwnProperty.call(t.segments,i)||e.issues.push({path:s,message:`actions.${n}: ${r} "${i}" is not a declared segment (have: ${Object.keys(t.segments).join(`, `)})${wl(i)}`,line:c})};`removeSegment`in o&&f(`removeSegment`,o.removeSegment),`insertSegment`in o&&f(`insertSegment`,o.insertSegment),(`insertSegment`in o||`insertSegmentFrom`in o)&&f(`anchor`,o.anchor)}function uS(e,t,n,r,i){n.kind===`template`&&pS(e,`${t}.template`,n.template,r,{segCtx:i}),as(n)&&n.cache&&`key`in n.cache&&pS(e,`${t}.cache.key`,n.cache.key,r,{segCtx:i})}function dS(e,t,n,r,i){if(as(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 fS(e,t,n,r){try{sg.parse(n)}catch(n){e.issues.push({path:t,message:`Template parse error in ${t}: ${n.message}`,line:r})}}function pS(e,t,n,r,i){for(let[a,o]of Dg(n,r.helpers)){if(Mg(a,r))continue;if(o!==null){mS(e,o,a);continue}let n=i?.segCtx===void 0?void 0:`${i.segCtx}.${a}`,s=n!==void 0&&Mg(n,r)?` (segment-local vars are namespaced — write ".${n}")`:``;e.issues.push({path:t,message:`Template references unknown variable ".${a}"${s}`,line:i?.line??W(e.source,t.split(`.`))})}}function mS(e,t,n){let r=`helpers.${t}`,i=`Template references unknown variable ".${n}"`;e.issues.some(e=>e.path===r&&e.message===i)||e.issues.push({path:r,message:i,line:W(e.source,[`helpers`,t])})}function hS(e,t){let{graph:n,nodeInfo:r}=gS(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 gS(e){let t=new Set(Object.keys(e.variables)),n=new Map;for(let t of Object.keys(e.variables))n.set(t,{declarationPath:`variables.${t}`,linePathParts:[`variables`,t]});for(let[r,i]of Object.entries(e.segments))if(i.vars)for(let e of Object.keys(i.vars)){let i=`${r}.${e}`;t.add(i),n.set(i,{declarationPath:`segments.${r}.vars.${e}`,linePathParts:[`segments`,r,`vars`,e]})}let r=new Map;for(let e of t)r.set(e,new Set);let i=(n,i)=>{for(let a of Dg(i,e.helpers).keys()){if(t.has(a)){r.get(n).add(a);continue}let e=a.split(`.`)[0];e!==a&&t.has(e)&&r.get(n).add(e)}},a=(e,n)=>{if(n.kind===`template`&&i(e,n.template),as(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 _S=[`json5`,`json`];function vS(e){try{return r.statSync(e,{throwIfNoEntry:!1})===void 0?`absent`:`present`}catch(t){return{path:e,error:t.message}}}function yS(e){return e===`~`||e.startsWith(`~/`)||e.startsWith(`~\\`)?f.homedir()+e.slice(1):e}function bS(e,t,n){if(n!==void 0)return[n];let r=t??process.cwd();return[...new Set([...e?_S.map(t=>c.join(e,`.cc-candybar.${t}`)):[],..._S.map(e=>c.join(r,`.cc-candybar.${e}`)),..._S.map(e=>`${xS()}.${e}`)])]}function xS(){let e=process.env.XDG_CONFIG_HOME??c.join(f.homedir(),`.config`);return c.join(e,`cc-candybar`,`config`)}function SS(e,t,n){let r=[];for(let i of bS(e,t,n)){let e=vS(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 CS(e,t,n){let r=SS(e,t,n);return r.kind===`default`?`${xS()}.${_S[0]}`:r.path}function wS(e){return TS(e).join(`
|
|
158
|
-
`)||null}function
|
|
157
|
+
`,jy=`${Sl}live`,My=[`☐ live`,`☑ live`],Ny=`${Sl}done`,Py={variable:jy,key:jy,member:`open`},Fy=`and ${uc(Lg)} (not ${uc(Py)})`,Iy=`{{ ${Fy} }}`;function Ly(e,t){return`{{ if ${Fy} }}${e}{{ else }}${t}{{ end }}`}const Ry=`{{ and ${uc(Lg)} .preset.customized }}`,zy=Tl,By=`${Sl}addable`;function Vy(e){return new Map([[By,{members:Object.keys(e.segments).filter(e=>!zy(e))}]])}function Hy(e,t,n){return n.segments[e]={template:t,when:Rg},{kind:`segment`,name:e}}function Uy(e,t,n,r,i){let a=`${Sl}${e}.remove.${n}`;return i.actions[a]={persist:t,removeSegment:r},`{{ if ${uc(Lg)} }}{{ action "${a}" "🚫" }}{{ end }}`}const Wy=`${Sl}label:`;function Gy(e){if(e.startsWith(Wy)){let t=e.slice(Wy.length);return t.slice(t.indexOf(`:`)+1)}return e.startsWith(`edit.`)?void 0:e}function Ky(e,t,n){let r=`${Wy}${e}:${t}`;return n.segments[r]={template:`{{ "${sc(e)}" }}`,when:Iy},{kind:`segment`,name:r}}function qy(e,t,n,r,i,a,o){let s=`${Sl}${e}.insert.${n}`,c=`${Sl}${e}.insertSeg.${n}`;o.actions[s]={persist:t,insertSegmentFrom:r,anchor:i,relation:a};let l=ag(s),u=og(c,s,void 0),d=lg(u),f=cg(u,l);return o.variables[u]=fc(u,rc),o.variables[d]={kind:`state`,key:d,default:`0`},o.actions[f]=pc(u,l),o.actions[d]={set:d,int:!0},{host:c,template:`{{ $m := menu "${s}" "✚" "✕" }}{{ if ${uc({variable:u,key:u,member:l})} }}{{ $m }}{{ else }}{{ fg (${`readableOn (color "success") (bgOf) ${Qi}`}) $m }}{{ end }}`}}function Jy(e,t,n,r,i,a){let o=[],s=e.children.findIndex(e=>e.kind===`segment`&&!zy(e.name)),c=e=>Jy(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=es(u,c);if(zy(u.name)){o.push(d);continue}let f=Zo(u),p=(e,a)=>qy(t,n,a,r,f,e,i),m=l===s?[p(`before`,String(a.n++))]:[],h=String(a.n++),g=p(`after`,h),_=Uy(t,n,h,f,i),v={kind:`container`,direction:`horizontal`,children:[...m.map(e=>Hy(e.host,e.template,i)),{...Ky(f,u.name,i),trail:_},{...d,when:Ly(`false`,u.when??`true`),trail:_},Hy(g.host,g.template,i)]};o.push(e.direction===`vertical`?{kind:`container`,direction:`horizontal`,children:[v]}:v)}return{...e,children:o,...e.when!==void 0&&{when:Ly(`true`,e.when)}}}function Yy(e,t,n,r,i,a,o){let s=`${Sl}${n}.resetLayout`,c=`${Sl}${n}.customized`;i.actions[s]={reset:r};let l=sc(t);return i.segments[c]={template:`{{ action "${s}" "↺ ${l} customized" }}`,when:Ry},{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[a,{kind:`segment`,name:c}]},Xy(e,o)]}}function Xy(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),Xy(n,t)]}:{...e,children:[...e.children,t]}}function Zy(e,t,n,r,i){let{node:a}=yg(e,t),o=xy(t),s=By,c=yl(t);return Yy(Jy(a,c,o,s,n,{n:0}),t,c,o,n,r,i)}function Qy(e){let t={variables:{},actions:{},segments:{}},n=Ey(`${Sl}help`,ky,[Lg],t);t.variables[jy]=fc(jy,rc),t.actions[jy]=pc(jy,Py.member),t.segments[jy]={template:dc(jy,...My),when:Rg};let r={kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:jy},n]};t.segments[Ny]={template:`{{ action "${Fg}" "✎ done" }}`,when:Rg};let i={kind:`segment`,name:Ny},a={...e.presets},o=[];for(let n of gg(e.presets)){let s=Zy(e,n,t,i,r);o.push(s),a[n]={...vg(e.presets,n),root:s}}let s=_y(t,o,e);return{...e,variables:{...s,...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:a}}const $y={socket:`TMUX`,pane:`TMUX_PANE`,truecolor:`CLAUDE_CODE_TMUX_TRUECOLOR`};function eb(e){let t=e[$y.socket]??``,n=e[$y.pane]??``;if(t===``||n===``)return null;let r=e[$y.truecolor]??``;return{socket:t.split(`,`)[0],pane:n,truecolor:r===``?null:r}}const tb=$y.truecolor,nb=[{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[tb];return typeof n==`string`&&n!==``?{ok:!1,reason:`${tb} 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:tb,value:`1`}}}}}}];function rb(e){return nb.map(t=>({check:t,verdict:t.probe(e)}))}function ib(e){return nb.find(t=>t.name===e)}const ab=`${Cl}doctor.`;function ob(e){let t=`${ab}${e}.`;return{verdict:`${t}verdict`,reason:`${t}reason`,fixable:`${t}fixable`}}function sb(e){return e.flatMap(({check:e,verdict:t})=>{let n=ob(e.name);return t.ok?[{key:n.verdict,value:`ok`},{key:n.reason,value:``},{key:n.fixable,value:Ja}]:[{key:n.verdict,value:`failed`},{key:n.reason,value:t.reason},{key:n.fixable,value:t.fix===void 0?Ja:qa}]})}const cb={copySession:{copy:`{{ .session.id }}`},openProject:{open:`{{ .project_dir }}`},openTranscript:{open:`{{ .transcript_path }}`}};function lb(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(cb).map(([t,n])=>[`${e}${t}`,n]))}}const ub=`${Cl}menu`,db=Ig,fb=`${Cl}edit`,pb=`${Cl}close`,mb=`${Cl}toolbar`,hb=lb(Cl),gb=`${Cl}config`,_b=`${Cl}save`,vb=`${Cl}unsaved`,yb=`${Cl}preset.save`,bb=`${Cl}preset.delete`,xb=`${Cl}resetAll`,Sb=`${xb}.arm`,Cb=`${xb}.disarm`,wb=`armed`,Tb=`disarmed`,Eb=`${ub}.toggle`,Db=`${gb}.toggle`,Ob={variable:ub,key:ub,member:db},kb={variable:gb,key:gb,member:db},Ab=`${Cl}tools`,jb={variable:Ab,key:Ab,member:db},Mb=[{seg:`${Cl}undo`,depth:`undo`,action:{undo:!0},display:`↶ undo`},{seg:`${Cl}redo`,depth:`redo`,action:{redo:!0},display:`↷ redo`}],Nb=e=>`${Cl}history.${e}`,Pb=`${Cl}doctor`,Fb=`${Pb}.run`,Ib=e=>`${Pb}.fix.${e}`,Lb=e=>`${Pb}.${e}`,Rb=`${Cl}pickers`,zb=[`{{ themePreview }}`],Bb=[{name:`preset`,...dy.preset,glyph:`▦`,domain:`presets`,beneath:[`{{ layoutPreview }}`,`{{ action "${yb}" "⊕ save as preset" }}{{ if not .preset.bundled }} {{ action "${bb}" (printf "🗑 delete %s" .${dy.preset.effectiveVar}) }}{{ end }}`]}],Vb=[{name:`theme`,...dy.theme,glyph:`🎨`,domain:`themes`,beneath:zb},{name:`look`,...dy.look,glyph:`◐`,domain:`looks`,beneath:zb},{name:`style`,...dy.style,glyph:`✦`,domain:`styles`,beneath:[]},{name:`progression`,...dy.progression,glyph:`🎼`,domain:`progressions`,beneath:[`{{ layoutPreview }}`]},{name:`charset`,...dy.charset,glyph:`🔣`,domain:`charsets`,beneath:[]},{name:`colorCompatibility`,...dy.colorCompatibility,glyph:`🌈`,domain:`colorCompatibilities`,beneath:[]}],Hb={name:`wrap`,...dy.autoWrap},Ub={name:`padding`,...dy.padding},Wb=`${Cl}${Hb.name}`,Gb=`${Cl}${Ub.name}`,Kb=[...Bb,...Vb],qb=[...Kb,Hb,Ub];new Set(qb.flatMap(e=>[e.sessionKey,e.configKey]));const Jb=e=>`${Cl}${e}`,Yb=e=>`${Cl}apply.${e}`,Xb=e=>`${Cl}reset.${e}`,Zb=e=>`${Cl}carousel.${e}`,Qb=(e,t)=>`${Zb(e)}.${t}`,$b=sg(Rb),ex=e=>({variable:$b,key:$b,member:ag(Yb(e.name))});function tx(e){return cc(Jb(e.name),ex(e),{kind:`container`,direction:`vertical`,children:[{kind:`segment`,name:Zb(e.name)},...e.beneath.map((t,n)=>({kind:`segment`,name:Qb(e.name,n)}))]},`drop`)}function nx(e){return e===ub}function rx(e){let t={kind:`segment`,name:ub};if(e.kind===`container`&&e.direction===`vertical`){let[n,...r]=e.children;return e.when===void 0&&n!==void 0?{...e,children:[rx(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 ix(e){return ax(e)>0?e:rx(e)}function ax(e){let t=0;for(let n of ts(e))n.kind===`segment`&&nx(n.name)&&(t+=1);return t}function ox(e,t=!1){let n=t||e.when!==void 0;return e.kind===`segment`?n&&nx(e.name)||e.opens!==void 0&&ox(e.opens.body,!0):e.children.some(e=>ox(e,n))}function sx(e){return e.kind===`segment`?nx(e.name)?cc(e.name,Ob,{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:mb},...Bb.map(tx),{kind:`segment`,name:_b},cc(gb,kb,{kind:`container`,direction:`horizontal`,children:[...Vb.map(tx),{kind:`segment`,name:Wb},{kind:`segment`,name:Gb},{kind:`segment`,name:xb}]},`drop`),cc(Ab,jb,{kind:`container`,direction:`vertical`,children:[{kind:`segment`,name:Pb},...nb.map(e=>({kind:`segment`,name:Lb(e.name)}))]},`drop`),{kind:`segment`,name:fb},...Mb.map(e=>({kind:`segment`,name:e.seg}))]},`inline`):e:cx(e)}function cx(e){return{...e,children:e.children.map(e=>sx(e))}}function lx(e){let t={variables:{[ub]:fc(ub,rc)},actions:{[Eb]:pc(ub,db),[ub]:{do:[Eb,Cb]},[Db]:pc(gb,db),[gb]:{do:[Db,Cb]},[Ab]:pc(Ab,db),[Fb]:{doctor:`run`},[pb]:{set:Ob.key,to:rc},[fb]:{do:[Fg,pb]},...hb.actions,[_b]:{save:!0},[yb]:{preset:`save`},[bb]:{preset:`delete`,name:`{{ .${dy.preset.effectiveVar} }}`}},segments:{[ub]:{template:dc(ub,e,`❌`)},[mb]:{template:hb.template},[_b]:{when:`{{ gt .${vb} 0 }}`,template:`{{ action "${_b}" (printf "💾 save %d" .${vb}) }}`},[gb]:{template:dc(gb,`⚙ config ▸`,`⚙ config ▾`)},[Ab]:{template:dc(Ab,`🧰 tools ▸`,`🧰 tools ▾`)},[Pb]:{template:`{{ action "${Fb}" "🩺 doctor" }}`},[Wb]:{template:`{{ action "${Yb(`wrap`)}" "wrap: on" "wrap: off" }} {{ action "${Xb(`wrap`)}" "↺" }}`},[Gb]:{template:`{{ action "${Yb(`padding`)}.down" "◀" }} padding {{ .${Ub.effectiveVar} }} {{ action "${Yb(`padding`)}.up" "▶" }} {{ action "${Xb(`padding`)}" "↺" }}`},[fb]:{template:`{{ action "${fb}" "✎ edit" "✎ done" }}`},[xb]:{template:`{{ if eq .${xb} "${wb}" }}{{ action "${xb}" "⟲ confirm reset all" }}{{ else }}{{ action "${Sb}" "⟲ reset all" }}{{ end }}`}}};return t.variables[vb]={kind:`input`,path:`unsaved`,type:`number`,default:0},t.variables[gb]=fc(gb,rc),t.variables[Ab]=fc(Ab,rc),t.variables[xb]={kind:`state`,key:xb,default:Tb},fx(t),dx(t),ux(t),t}function ux(e){for(let t of Mb){let n=Nb(t.depth);e.variables[n]={kind:`input`,path:`history.${t.depth}`,type:`number`,default:0},e.actions[t.seg]=t.action,e.segments[t.seg]={when:`{{ gt .${n} 0 }}`,template:`{{ action "${t.seg}" "${t.display}" }}`}}}function dx(e){for(let t of nb){let n=ob(t.name),r=Ib(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[Lb(t.name)]={when:`{{ ne .${n.verdict} "" }}`,template:`{{ if eq .${n.verdict} "ok" }}✓ ${t.label}{{ else }}✗ ${t.label} — {{ .${n.reason} }}{{ if eq .${n.fixable} "${qa}" }} {{ action "${r}" "[fix]" }}{{ end }}{{ end }}`}}}function fx(e){for(let t of Kb){let n=Yb(t.name);e.actions[n]={set:t.sessionKey,from:t.domain},e.actions[Xb(t.name)]={reset:t.configKey},px(t,e)}e.actions[Yb(Hb.name)]={set:Hb.sessionKey,cycle:[...Ya]},e.actions[Xb(Hb.name)]={reset:Hb.configKey};for(let t of[-1,1])e.actions[`${Yb(Ub.name)}.${t<0?`down`:`up`}`]={set:Ub.sessionKey,...Xa,by:t};e.actions[Xb(Ub.name)]={reset:Ub.configKey},e.actions[Sb]={set:xb,to:wb},e.actions[Cb]={set:xb,to:Tb},e.actions[xb]={do:[Cb,...qb.map(e=>Xb(e.name))]}}function px(e,t){let n=Yb(e.name),r=ex(e),i=cg(r.key,r.member);t.variables[r.key]=fc(r.key,rc),t.actions[i]=pc(r.key,r.member),t.segments[Jb(e.name)]={template:`${e.glyph} {{ .${e.effectiveVar} }} ${dc(i,`▸`,`▾`)} {{ action "${Xb(e.name)}" "↺" }}`},t.segments[Zb(e.name)]={template:`{{ carousel "${n}" }}`},e.beneath.forEach((n,r)=>{t.segments[Qb(e.name,r)]={template:n}})}function mx(e){e.variables[Pg]=fc(Pg,rc),e.actions[Fg]=pc(Pg,Ig)}function hx(e){let t=lx(e.globals.menuGlyph??`🍫`);mx(t);let n={...e.presets},r=[];for(let t of gg(e.presets)){let{node:i}=yg(e,t),a=sx(ix(i));r.push(a),n[t]={...vg(e.presets,t),root:a}}let i=_y(t,r,e);return{...e,variables:{...i,...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:n}}const gx=[`set`,`persist`,`copy`,`open`,`reset`,`undo`,`redo`,`save`,`preset`,`doctor`,`do`];function _x(e){return`from`in e||`int`in e||`insertSegmentFrom`in e}function vx(e,t){if(t===void 0)return{};if(!bs(t))return Z(e,`actions`,`actions must be an object, got ${xs(t)}`),{};let n=Object.create(null);for(let[r,i]of Object.entries(t)){let t=yx(e,`actions.${r}`,i);t!==null&&(n[r]=t)}return n}function Z(e,t,n){e.issues.push({path:t,message:n,line:W(e.source,t.split(`.`))})}function yx(e,t,n){if(!bs(n))return Z(e,t,`${t} must be an action object, got ${xs(n)}`),null;if(`persistWhen`in n)return Z(e,t,`${t}.persistWhen was removed: declare the \`set\` alone — a session pick is a draft until a \`{ save: true }\` action writes every unsaved setting to the config file`),null;let r=gx.filter(e=>e in n);return r.length===1?bx[r[0]](e,t,n):(Z(e,t,`action must declare exactly one of: ${gx.join(`, `)}${r.length>1?` (found: ${r.join(`, `)})`:``}`),null)}const bx={set:(e,t,n)=>Xx(e,t,n,`set`,Kx),persist:(e,t,n)=>Xx(e,t,n,`persist`,qx),copy:xx(`copy`),open:xx(`open`),reset:Sx,undo:wx(`undo`),redo:wx(`redo`),save:wx(`save`),preset:Tx,doctor:Ex,do:Dx};function xx(e){return(t,n,r)=>{for(let i of Object.keys(r))i!==e&&Z(t,`${n}.${i}`,`Unknown key "${i}" on a ${e} action. Expected only: ${e}`);let i=hs(t,n,r,e);return i===null?null:{[e]:i}}}function Sx(e,t,n){for(let r of Object.keys(n))r!==`reset`&&Z(e,`${t}.${r}`,`Unknown key "${r}" on a reset action. Expected only: reset`);let r=Ox(e,t,`reset`,n,`reset key must be non-empty (the config globals field to clear)`,e=>`reset key "${e}" contains "/" — keys must be slash-free`);return r===null?null:{reset:r}}const Cx={undo:`it steps the session's settings history`,redo:`it steps the session's settings history`,save:`it saves the session's unsaved settings`};function wx(e){return(t,n,r)=>{for(let i of Object.keys(r))i!==e&&Z(t,`${n}.${i}`,`Unknown key "${i}" on a ${e} action. Expected only: ${e}`);return r[e]===!0?{[e]:!0}:(Z(t,`${n}.${e}`,`${e} must be the literal true (it takes no key — ${Cx[e]}), got ${G(r[e])}`),null)}}function Tx(e,t,n){let r=n.preset,i=r===`save`?[`preset`]:[`preset`,`name`];for(let r of Object.keys(n))i.includes(r)||Z(e,`${t}.${r}`,`Unknown key "${r}" on a preset action. Expected only: ${i.join(`, `)}`);if(r!==`save`&&r!==`delete`)return Z(e,`${t}.preset`,`preset must be "save" or "delete", got ${G(r)}`),null;if(r===`save`)return{preset:`save`};let a=hs(e,t,n,`name`);return a===null?null:{preset:`delete`,name:a}}function Ex(e,t,n){let r=n.doctor,i=r===`run`?[`doctor`]:[`doctor`,`check`];for(let r of Object.keys(n))i.includes(r)||Z(e,`${t}.${r}`,`Unknown key "${r}" on a doctor action. Expected only: ${i.join(`, `)}`);if(r!==`run`&&r!==`fix`)return Z(e,`${t}.doctor`,`doctor must be "run" or "fix", got ${G(r)}`),null;if(r===`run`)return{doctor:`run`};let a=n.check;return typeof a!=`string`||ib(a)===void 0?(Z(e,`${t}.check`,`doctor fix must name a check (have: ${nb.map(e=>e.name).join(`, `)}), got ${G(a)}`),null):{doctor:`fix`,check:a}}function Dx(e,t,n){for(let r of Object.keys(n))r!==`do`&&Z(e,`${t}.${r}`,`Unknown key "${r}" on a do action. Expected only: do`);let r=n.do;return!Array.isArray(r)||r.length<2||r.some(e=>typeof e!=`string`||e===``)?(Z(e,`${t}.do`,`do must list at least two action names (the first is the click's face, the rest ride along in the same click), got ${G(r)}`),null):{do:r}}function Ox(e,t,n,r,i,a){let o=hs(e,t,r,n);if(o===null)return null;let s=`${t}.${n}`;return o===``?(Z(e,s,i),null):o.includes(`/`)?(Z(e,s,a(o)),null):o}const kx={set:`the SessionState key to write`,persist:`the config globals field to write`};function Ax(e,t,n,r){let i=kx[r],a=Ox(e,t,r,n,`${r} key must be non-empty (${i})`,e=>`${r} key "${e}" contains "/" — keys must be slash-free`);return a===null?null:{[r]:a}}function jx(e){return e===`set`?`set-state`:`set-config`}const Mx={to:Zx(`set`)},Nx={to:Zx(`persist`)},Px={from:Qx(`set`)},Fx={from:Qx(`persist`)},Ix={min:rS(),max:rS(),by:rS()},Lx={int:eS()},Rx={cycle:$x(`set`)},zx={cycle:$x(`persist`)},Bx={removeSegment:tS(`removeSegment`)},Vx={insertSegment:tS(`insertSegment`),anchor:tS(`anchor`),relation:nS()},Hx={insertSegmentFrom:Qx(`persist`),anchor:tS(`anchor`),relation:nS()},Ux={ok:e=>e.min<e.max,issue:e=>({field:`min`,message:`min (${e.min}) must be less than max (${e.max})`})},Wx={ok:e=>e.by!==0,issue:()=>({field:`by`,message:`by must be a non-zero integer (the per-click increment; negative steps down)`})};function Gx(e,t,n=[],r){let i=Object.keys(t),a=r??i,o=[e],s=(e,n,r)=>Cs(e,t,n,r),c=Rs(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?js(s,...n):s}}const Kx=[Gx(`set`,Mx),Gx(`set`,Px),Gx(`set`,Ix,[Ux,Wx]),Gx(`set`,Lx),Gx(`set`,Rx)],qx=[Gx(`persist`,Nx),Gx(`persist`,Fx),Gx(`persist`,Ix,[Ux,Wx]),Gx(`persist`,zx),Gx(`persist`,Bx),Gx(`persist`,Vx,[],[`insertSegment`]),Gx(`persist`,Hx,[],[`insertSegmentFrom`])];function Jx(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 Yx(e){let t=Jx(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 Xx(e,t,n,r,i){let a=Ax(e,t,n,r),o=i.filter(e=>e.detect.some(e=>e in n));if(o.length!==1)return Z(e,t,`${Yx(r)}${o.length>1?` — found: ${o.map(e=>e.label).join(`, `)}`:``}`),null;let s=o[0];for(let i of Object.keys(n))s.allowed.includes(i)||Z(e,`${t}.${i}`,`Unknown key "${i}" on this ${r} action. Expected one of: ${s.allowed.join(`, `)}`);let c=s.parse(e,t,n);return a===null||c===null?null:{...a,...c}}function Zx(e){let t=jx(e);return{required:!0,json:{type:`string`},parse:(n,r,i,a)=>Ox(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 Qx(e){let t=jx(e);return{required:!0,json:{anyOf:[{type:`string`,minLength:1},{type:`array`,items:{type:`string`,minLength:1},minItems:1,uniqueItems:!0}]},parse:(n,r,i,a)=>{let o=a[i],s=`${r}.${i}`;if(typeof o==`string`){if(o===``){Z(n,s,`${i} must be a non-empty domain name`);return}return o}if(Array.isArray(o)&&o.every(e=>typeof e==`string`)){let r=o;if(r.length===0){Z(n,s,`${i} must name a domain (a non-empty string) or declare an inline domain (a non-empty array of values)`);return}if(r.some(e=>e===``)){Z(n,s,`${i} array members must be non-empty — an empty value cannot be delivered on the ${t} wire`);return}let a=r.filter(e=>e.includes(`/`));if(a.length>0){Z(n,s,`${i} array member(s) ${a.map(e=>`"${e}"`).join(`, `)} contain "/" — ${e} values must be slash-free`);return}if(new Set(r).size!==r.length){Z(n,s,`${i} array members must be unique — a duplicated value would render the same picker option twice`);return}return r}Z(n,s,`${i} must be a domain name (a string) or an inline domain (an array of strings), got ${G(o)}`)}}}function $x(e){let t=jx(e);return{required:!0,json:{type:`array`,items:{type:`string`,minLength:1},minItems:2,uniqueItems:!0},parse:(n,r,i,a)=>{let o=a[i],s=`${r}.${i}`;if(!Array.isArray(o)||o.some(e=>typeof e!=`string`)){Z(n,s,`cycle must be an array of strings (the enumerated values a click steps through), got ${xs(o)}`);return}let c=o;if(c.length<2){Z(n,s,`cycle needs at least two members (one member has no successor — use a literal "to")`);return}let l=c.some(e=>e===``),u=c.filter(e=>e.includes(`/`));if(l){Z(n,s,`cycle members must be non-empty — an empty value cannot be delivered on the ${t} wire`);return}if(u.length>0){Z(n,s,`cycle member(s) ${u.map(e=>`"${e}"`).join(`, `)} contain "/" — ${e} values must be slash-free`);return}if(new Set(c).size!==c.length){Z(n,s,`cycle members must be unique — the successor of a duplicated member is ambiguous`);return}return c}}}function eS(){return{required:!0,json:{const:!0},parse:(e,t,n,r)=>{if(r[n]!==!0){Z(e,`${t}.${n}`,`int must be the literal true (declares the key an unbounded integer cursor — a paged picker's page key), got ${G(r[n])}`);return}return!0}}}function tS(e){return{required:!0,json:{type:`string`},parse:(t,n,r,i)=>{let a=hs(t,n,i,r);if(a===null)return;let o=`${n}.${r}`;if(a===``){Z(t,o,`${e} must be non-empty (a segment name)`);return}if(a.includes(`/`)||a.includes(`:`)){Z(t,o,`${e} "${a}" contains "/" or ":" — segment names in a layout op must be free of both (the click wire's own delimiter and layout-ops.ts's op-token delimiter)`);return}return a}}}function nS(){return{required:!0,json:{enum:[`before`,`after`]},parse:(e,t,n,r)=>{let i=r[n];if(i!==`before`&&i!==`after`){Z(e,`${t}.${n}`,`relation must be "before" or "after", got ${G(i)}`);return}return i}}}function rS(){return{required:!0,json:{type:`integer`},parse:(e,t,n,r)=>{let i=r[n];if(typeof i!=`number`||!Number.isInteger(i)){Z(e,`${t}.${n}`,`${n} must be an integer, got ${G(i)}`);return}return i}}}const iS={noun:`look key`,fields:{hueShift:Ps(),chromaScale:Ps({min:0}),lightnessScale:Ps(),lightnessShift:Ps()}};function aS(e,t){if(!bs(t))return e.issues.push({path:`looks`,message:`looks must be an object mapping look names to adaptation objects, got ${xs(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=Ss(e,iS,`looks.${r}`,i);t!==null&&(n[r]={...On,...t})}return n}const oS={noun:`preset key`,fields:{root:{required:!1,json:{$ref:`#/definitions/RootFragment`},parse:(e,t,n,r)=>r[n]===void 0?void 0:fu(e,`${t}.${n}`,r[n])},globals:{required:!1,json:Ac(),parse:(e,t,n,r)=>r[n]===void 0?void 0:kc(e,`${t}.${n}`,r[n])}}};function sS(e,t){if(!bs(t))return e.issues.push({path:`presets`,message:`presets must be an object mapping preset names to config fragments, got ${xs(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=Ss(e,oS,`presets.${r}`,i);t!==null&&(n[r]=t)}return n}function cS(e,t){if(t===void 0)return{};if(!bs(t))return e.issues.push({path:`helpers`,message:`helpers must be an object, got ${xs(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 lS=new Map,uS=new Map;function dS(e){let t=fS(e);if(t===null)throw Error(`Palette "${e}" (resolved "${va(e)}") did not resolve in the theme registry — allowed names and the registry are inconsistent`);return t}function fS(e){let t=va(e),n=lS.get(t);if(n!==void 0)return n;let r=ir(t);return r===null?null:(lS.set(t,r),r)}function pS(e,t){let n=`${e.name} ${t.hueShift} ${t.chromaScale} ${t.lightnessScale} ${t.lightnessShift}`,r=uS.get(n);if(r!==void 0)return r;let i=fr(e,t);return uS.set(n,i),i}function mS(e){let t=fS(e);return t===null?null:{kind:`decided`,name:e,value:t}}function hS(e,t){let n=mS(e);return n===null?(t(`globals.palette rendered "${ya}": "${e}" names no installed theme`),_S()):n}function gS(e,t,n){return Ea(e,t,n,_S(),mS)}function _S(){return mS(ya)}function vS(e){return Da(gS(void 0,null,e),()=>ya,_S).value}const yS=new Map;function bS(e,t,n){yS.set(e,{permanent:!0,resolve:t,paletteOf:n})}bS(`themes`,()=>Sa(),e=>dS(e)),bS(`styles`,()=>Ma),bS(`progressions`,()=>Wa),bS(`charsets`,()=>Fa),bS(`colorCompatibilities`,()=>za);function xS(e){return new Map([[`looks`,{members:Object.keys(e.looks),paletteOf:(t,n)=>pS(n,e.looks[t])}],[`presets`,{members:gg(e.presets)}]])}function SS(e){return[...new Set([...yS.keys(),...e.keys()])]}function CS(e,t){if(typeof e!=`string`)return{members:e};let n=t.get(e);if(n)return n;let r=yS.get(e);if(r)return{members:r.resolve(),paletteOf:r.paletteOf};throw Error(`unknown option domain "${e}" (have: ${SS(t).join(`, `)})`)}function wS(e,t){let n=new Map;for(let e of Object.keys(t)){let t=yl(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 TS(e,t,n){t.globals.look!==void 0&&!Ta(t.globals.look)&&!Object.prototype.hasOwnProperty.call(t.looks,t.globals.look)&&e.issues.push({path:`globals.look`,message:`globals.look "${t.globals.look}" does not match any declared look (have: ${Object.keys(t.looks).join(`, `)})`,line:W(e.source,[`globals`,`look`])}),t.globals.preset!==void 0&&!Object.prototype.hasOwnProperty.call(t.presets,t.globals.preset)&&e.issues.push({path:`globals.preset`,message:`globals.preset "${t.globals.preset}" does not match any declared preset (have: ${Object.keys(t.presets).join(`, `)})`,line:W(e.source,[`globals`,`preset`])}),wS(e,t.presets);let r=xS(t);for(let[n,i]of Object.entries(t.actions))!(`set`in i)||!(`from`in i)||typeof i.from!=`string`||SS(r).includes(i.from)||e.issues.push({path:`actions.${n}.from`,message:`actions.${n} from: references unknown option domain "${i.from}" (have: ${SS(r).join(`, `)})`,line:W(e.source,[`actions`,n,`from`])});for(let[n,r]of Object.entries(t.actions))`do`in r&&r.do.forEach((i,a)=>{let o=Object.prototype.hasOwnProperty.call(t.actions,i)?t.actions[i]:void 0,s=o===void 0?`references unknown action "${i}"`:`do`in o?`"${i}" is itself a do action — list its members here instead`:r.do.indexOf(i)===a?a>0&&_x(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=Cy(i);if(o===null){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" is not a config globals field (have: ${Pc().join(`, `)}), a "segments.<name>.palette" target, a "presets.<name>.globals.<field>" target, or a "presets.<name>.root" target`,line:W(e.source,[`actions`,n,a])});continue}let s=ES.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`){DS(e,t,n,a,i,o.preset,r);continue}if(o.scope===`preset-globals`&&!gg(t.presets).includes(o.preset)){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" names preset "${o.preset}" which is not declared (have: ${gg(t.presets).join(`, `)})`,line:W(e.source,[`actions`,n,a])});continue}if(o.scope===`segment-palette`){if(!Object.prototype.hasOwnProperty.call(t.segments,o.segment)){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" names segment "${o.segment}" which is not declared (have segments: ${Object.keys(t.segments).join(`, `)})${kl(o.segment)}`,line:W(e.source,[`actions`,n,a])});continue}`min`in r&&e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" is a segment palette target and cannot use a bounded stepper (min/max/by) — use "to", "from", or "cycle" instead`,line:W(e.source,[`actions`,n,a])})}}let i=a_(t);for(let t of i.names)t!==`settings`&&!t.startsWith(OS)||e.issues.push({path:`variables`,message:`variable "${t}" is named under "settings", which a segment's templates read as its placement's own settings (.settings.<name>) — rename it`,line:W(e.source,[`variables`,t])});let a=(t,n,r)=>{ax(t)>1&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${ub}" ${ax(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}),ox(t)&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${ub}" under a \`when\` or inside a disclosure body — the menu is visible under every condition, so its placement may not be gated. Move it to an ungated position, or remove it to put the menu at its default position.`,line:r}),o(t)&&e.issues.push({path:n,message:`${n} sets "distribution" on a container inside a bar cell — everything inside a cell wears that cell's hue and tone, so it would place nothing. Set it on the row whose children are the cells (the horizontal container) or on the root, which places the rows.`,line:r});let i=new Map;for(let e of ts(t)){if(e.kind!==`segment`)continue;let t=Zo(e);i.set(t,[...i.get(t)??[],e])}for(let[t,a]of i){if(a.length<2)continue;let o=a[1].name,s=$o(o,new Set(i.keys()));e.issues.push({path:n,message:`${n} has ${a.length} placements with the id "${t}" — an id names one placement (its settings, its menus' open state, and edit mode all address it), so give each its own: { seg: "${o}", id: "${s}" }. A placement without an "id" takes its segment's name.`,line:r})}};function o(e,t=!1){return e.kind===`segment`?!1:t&&e.distribution!==void 0||e.children.some(n=>o(n,t||Xo[e.direction]===`cell`))}let s=(n,r)=>{for(let[a,o]of Zs(n,r)){let n=W(e.source,o.split(`.`));a.when!==void 0&&(PS(e,`${o}.when`,a.when,i,{line:n}),NS(e,`${o}.when`,a.when,n)),a.kind===`segment`&&(nx(a.name)||(Object.prototype.hasOwnProperty.call(t.segments,a.name)||e.issues.push({path:o,message:`${r} entry "${a.name}" does not match any declared segment${kl(a.name)}`,line:n}),AS(e,t,a,o,n)))}};n.root!==void 0&&s(n.root,`root`);for(let[e,t]of Object.entries(n.presets??{}))t.root!==void 0&&s(t.root,`presets.${e}.root`);let c=new Map([[`root`,Ys(t.root)]]);for(let e of gg(t.presets)){let{node:n,path:r}=yg(t,e);c.set(r,n)}for(let[t,n]of c)a(n,t,W(e.source,t.split(`.`)));for(let[n,r]of Object.entries(t.variables))jS(e,`variables.${n}`,r,i);for(let[n,r]of Object.entries(t.segments)){if(r.vars)for(let[t,a]of Object.entries(r.vars))jS(e,`segments.${n}.vars.${t}`,a,i,n);let a=kS(i,r.settings);for(let i of[`template`,`bg`,`fg`,`when`]){let o=r[i];if(typeof o==`string`){PS(e,`segments.${n}.${i}`,o,a,{segCtx:n,settings:r.settings});for(let r of t_(o))Object.prototype.hasOwnProperty.call(t.actions,r)||e.issues.push({path:`segments.${n}.${i}`,message:`${i} references unknown action "${r}"`,line:W(e.source,[`segments`,n,i])});for(let r of r_(o))Object.prototype.hasOwnProperty.call(t.actions,r)||e.issues.push({path:`segments.${n}.${i}`,message:`${i} references unknown action "${r}" (in a picker, menu or carousel)`,line:W(e.source,[`segments`,n,i])})}}}for(let[n,r]of Object.entries(t.variables))MS(e,`variables.${n}`,r,i);for(let[n,r]of Object.entries(t.segments))if(r.vars)for(let[t,a]of Object.entries(r.vars))MS(e,`segments.${n}.vars.${t}`,a,i,n)}const ES=[`removeSegment`,`insertSegment`,`insertSegmentFrom`];function DS(e,t,n,r,i,a,o){let s=`actions.${n}.${r}`,c=W(e.source,[`actions`,n,r]);if(!gg(t.presets).includes(a)){e.issues.push({path:s,message:`actions.${n}: "${i}" names preset "${a}" which is not declared (have: ${gg(t.presets).join(`, `)})`,line:c});return}if(r===`reset`)return;let l=`removeSegment`in o,u=`insertSegment`in o,d=`insertSegmentFrom`in o;if(!l&&!u&&!d){e.issues.push({path:s,message:`actions.${n}: "${i}" is a "presets.<name>.root" target and can only be paired with "removeSegment", "insertSegment", or "insertSegmentFrom" (not "to"/"from"/"cycle"/bounded — those have no meaning as a tree op)`,line:c});return}let f=(r,i)=>{Object.prototype.hasOwnProperty.call(t.segments,i)||e.issues.push({path:s,message:`actions.${n}: ${r} "${i}" is not a declared segment (have: ${Object.keys(t.segments).join(`, `)})${kl(i)}`,line:c})},p=new Set(Qo(yg(t,a).node)),m=(r,i)=>{!Ol.has(i)||p.has(i)||Object.prototype.hasOwnProperty.call(t.segments,i)||e.issues.push({path:s,message:`actions.${n}: ${r} "${i}" names no placement${kl(i)}`,line:c})};`removeSegment`in o&&m(`removeSegment`,o.removeSegment),`insertSegment`in o&&f(`insertSegment`,o.insertSegment),(`insertSegment`in o||`insertSegmentFrom`in o)&&m(`anchor`,o.anchor)}const OS=`settings.`;function kS(e,t){let n=Object.keys(t??{});return n.length===0?e:{...e,names:new Set([...e.names,...n.map(e=>OS+e)])}}function AS(e,t,n,r,i){let a=Object.prototype.hasOwnProperty.call(t.segments,n.name)?t.segments[n.name]:void 0;if(a===void 0)return;let o=a.settings??{},s=`${r}: placement "${Zo(n)}" of segment "${n.name}"`;for(let[t,a]of Object.entries(n.settings??{})){let c=Object.prototype.hasOwnProperty.call(o,t)?o[t]:void 0,l=c===void 0?`sets "${t}", which segment "${n.name}" does not declare (${Object.keys(o).length===0?`it declares no settings`:`it declares: ${Object.keys(o).join(`, `)}`})`:ds(c,a)?void 0:`sets "${t}" to ${JSON.stringify(a)}, but it must be ${fs(c)}`;l!==void 0&&e.issues.push({path:r,message:`${s} ${l}`,line:i})}}function jS(e,t,n,r,i){n.kind===`template`&&PS(e,`${t}.template`,n.template,r,{segCtx:i}),cs(n)&&n.cache&&`key`in n.cache&&PS(e,`${t}.cache.key`,n.cache.key,r,{segCtx:i})}function MS(e,t,n,r,i){if(cs(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 NS(e,t,n,r){try{Ng.parse(n)}catch(n){e.issues.push({path:t,message:`Template parse error in ${t}: ${n.message}`,line:r})}}function PS(e,t,n,r,i){for(let[a,o]of $g(n,r.helpers)){if(i_(a,r))continue;if(o!==null){FS(e,o,a);continue}if(i?.segCtx!==void 0&&a.startsWith(OS)){let n=Object.keys(i.settings??{});e.issues.push({path:t,message:`Template reads ".${a}", but segment "${i.segCtx}" declares no setting "${a.slice(9)}" (${n.length===0?`it declares no settings`:`it declares: ${n.join(`, `)}`}) — declare it under segments.${i.segCtx}.settings`,line:i.line??W(e.source,t.split(`.`))});continue}let n=i?.segCtx===void 0?void 0:`${i.segCtx}.${a}`,s=n!==void 0&&i_(n,r)?` (segment-local vars are namespaced — write ".${n}")`:``;e.issues.push({path:t,message:`Template references unknown variable ".${a}"${s}`,line:i?.line??W(e.source,t.split(`.`))})}}function FS(e,t,n){let r=`helpers.${t}`,i=`Template references unknown variable ".${n}"`;e.issues.some(e=>e.path===r&&e.message===i)||e.issues.push({path:r,message:i,line:W(e.source,[`helpers`,t])})}function IS(e,t){let{graph:n,nodeInfo:r}=LS(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 LS(e){let t=new Set(Object.keys(e.variables)),n=new Map;for(let t of Object.keys(e.variables))n.set(t,{declarationPath:`variables.${t}`,linePathParts:[`variables`,t]});for(let[r,i]of Object.entries(e.segments))if(i.vars)for(let e of Object.keys(i.vars)){let i=`${r}.${e}`;t.add(i),n.set(i,{declarationPath:`segments.${r}.vars.${e}`,linePathParts:[`segments`,r,`vars`,e]})}let r=new Map;for(let e of t)r.set(e,new Set);let i=(n,i)=>{for(let a of $g(i,e.helpers).keys()){if(t.has(a)){r.get(n).add(a);continue}let e=a.split(`.`)[0];e!==a&&t.has(e)&&r.get(n).add(e)}},a=(e,n)=>{if(n.kind===`template`&&i(e,n.template),cs(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 RS=[`json5`,`json`];function zS(e){try{return r.statSync(e,{throwIfNoEntry:!1})===void 0?`absent`:`present`}catch(t){return{path:e,error:t.message}}}function BS(e){return e===`~`||e.startsWith(`~/`)||e.startsWith(`~\\`)?f.homedir()+e.slice(1):e}function VS(e,t,n){if(n!==void 0)return[n];let r=t??process.cwd();return[...new Set([...e?RS.map(t=>c.join(e,`.cc-candybar.${t}`)):[],...RS.map(e=>c.join(r,`.cc-candybar.${e}`)),...RS.map(e=>`${HS()}.${e}`)])]}function HS(){let e=process.env.XDG_CONFIG_HOME??c.join(f.homedir(),`.config`);return c.join(e,`cc-candybar`,`config`)}function US(e,t,n){let r=[];for(let i of VS(e,t,n)){let e=zS(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 WS(e,t,n){let r=US(e,t,n);return r.kind===`default`?`${HS()}.${RS[0]}`:r.path}function GS(e){return KS(e).join(`
|
|
158
|
+
`)||null}function KS(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 qS(e,t){let n=VS(e,t).filter(e=>zS(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 JS(e,t,n){return e===null?{...XS,config:ec(XS.raw,t)}:YS(e,r.readFileSync(e,`utf-8`),t,n)}function YS(e,t,n,r){let i={source:t,...$S(e,t,r,Hl(n))};return{...i,config:ec(i.raw,n)}}const XS={raw:{},source:``,warnings:[]};function ZS({config:e,raw:t,source:n},r=`<config>`,i=new Set(Sa())){let a=[],o={source:n,issues:a,allowedPalettes:i,groups:[]};if(TS(o,e,t),IS(o,e),a.length>0)throw new Wo(r,a);let s=Mg(e,a);if(a.length>0)throw new Wo(r,a);return Qy(hx(s))}function QS(e,t,n=new Set(Sa()),r=eC){return $S(e,t,n,r).raw}function $S(e,t,n,r){let i=tC(e,t),a=qo(e,t),o=a===null?[]:[a],s=[],c={source:t,issues:s,allowedPalettes:n??new Set(Sa()),groups:[]};if(!bs(i))throw new Wo(e,[{path:``,message:`Config root must be an object, got ${xs(i)}`}],o);let l=nC(c,i,r);if(s.length>0)throw new Wo(e,s,o);return{raw:l,warnings:o}}const eC=new Set;function tC(e,t){try{return Xe.default.parse(t)}catch(t){let n=t;throw new Wo(e,[{path:``,message:`JSON5 syntax error: ${n.message}`,line:n.lineNumber,col:n.columnNumber}])}}function nC(e,t,n){for(let n of Object.keys(t))rC.has(n)||e.issues.push({path:n,message:`Unknown top-level key "${n}". Expected one of: ${[...rC].join(`, `)}`,line:W(e.source,[n])});let r={};return t.globals!==void 0&&(r.globals=Oc(e,`globals`,t.globals)),t.variables!==void 0&&(r.variables=Jc(e,`variables`,t.variables)),t.segments!==void 0&&(r.segments=Ul(e,t.segments,n)),t.layout!==void 0&&e.issues.push({path:`layout`,message:`"layout" is no longer supported — use "root" with the A-grammar instead.
|
|
159
159
|
Replace: layout: [["seg1", "seg2"], ["seg3"]]
|
|
160
160
|
With: root: { v: [{ h: ["seg1", "seg2"] }, "seg3"] }
|
|
161
|
-
Single-row example: root: { h: ["seg1", "seg2"] }`,line:W(e.source,[`layout`])}),t.root!==void 0&&(r.root=
|
|
162
|
-
`)}function
|
|
163
|
-
`).map(e=>e.trim()).find(e=>e.length>0);return t===void 0?``:` (${t})`}const
|
|
164
|
-
`)}catch(e){t.stderr.write(`cc-candybar: daemon spawn failed: ${e.message}\n`)}}function
|
|
165
|
-
`)}function
|
|
166
|
-
`)}]}function
|
|
167
|
-
`),process.exit(1));let t;try{t=
|
|
168
|
-
`),process.exit(1)}function
|
|
161
|
+
Single-row example: root: { h: ["seg1", "seg2"] }`,line:W(e.source,[`layout`])}),t.root!==void 0&&(r.root=fu(e,`root`,t.root)),t.actions!==void 0&&(r.actions=vx(e,t.actions)),t.looks!==void 0&&(r.looks=aS(e,t.looks)),t.presets!==void 0&&(r.presets=sS(e,t.presets)),t.editGlobals!==void 0&&(r.editGlobals=jc(e,`editGlobals`,t.editGlobals)),t.helpers!==void 0&&(r.helpers=cS(e,t.helpers)),bu(e,r),Ag(e,r),Vg(e,r),Dl(e,r,Cl,`the global settings menu`),r}const rC=new Set([`globals`,`variables`,`segments`,`layout`,`root`,`actions`,`looks`,`presets`,`editGlobals`,`helpers`]);function iC(e){let t=cC(e.termCols),n=cC(e.termRows),r=lC(e.ssh),i=oC(e.tmux),a=aC(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 aC(e){return typeof e==`string`&&e!==``?BS(e):void 0}function oC(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 sC=1e4;function cC(e){if(typeof e!=`number`||!Number.isFinite(e))return;let t=Math.floor(e);if(!(t<=0))return t>sC?sC:t}function lC(e){return typeof e==`boolean`?e:void 0}var uC=class extends Error{constructor(e){super(e),this.name=`ProtocolError`}};function dC(e){let t=Buffer.from(JSON.stringify(e),`utf8`),n=Buffer.alloc(4);return n.writeUInt32BE(t.length,0),Buffer.concat([n,t])}function fC(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 uC(`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 uC(e instanceof Error?e.message:String(e));e instanceof Error&&(n.cause=e),t(n);return}}}}function pC(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=fC(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(dC(t))})}async function mC(e,t,n){let r=null;try{r=await yC(Ne(),t.connectMs);let i=await pC(r,{v:3,...e},t.budgetMs);return _C(e.kind,i,n)}catch(e){return vC(e)}finally{r&&r.destroy()}}function hC(e,t){return typeof e==`string`?e:t}function gC(e){return typeof e==`number`&&Number.isInteger(e)&&e>=0?e:0}function _C(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=hC(r.error,`(no error message)`);switch(r.code){case`VERSION_MISMATCH`:return{kind:`permanent`,cause:`version_mismatch`,clientV:3,daemonV:gC(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 vC(e){if(e instanceof uC||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 yC(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 bC(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 xC={connectMs:50,budgetMs:150},SC={connectMs:50,budgetMs:200};function CC(e){let t=e.output;return typeof t==`string`?t:void 0}function wC(e,t,n,r){return mC({kind:`render`,hookData:e,args:t,cwd:n,...r},xC,CC)}function TC(e,t){return mC({kind:`click`,verb:e,value:t},SC,CC)}let EC=null;function DC(e){if(EC!==null)return EC;r.mkdirSync(c.dirname(e),{recursive:!0});try{EC=r.statSync(e).size}catch{EC=0}return EC}function OC(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{}EC=0}function Q(e,t){let n=`${new Date().toISOString()} [${e}] ${t}\n`;try{let e=Ge(),t=DC(e);r.appendFileSync(e,n),EC=t+Buffer.byteLength(n,`utf8`),EC>=5242880&&OC(e)}catch(e){EC=null;try{process.stderr.write(`${n}cc-candybar: daemon.log unwritable: ${e.message}\n`)}catch{}}}function kC(e){let t=[];for(let n of e){let e=n.read();if(e.kind===`text`)return`# memory report from: ${n.name}\n${e.text}`;t.push(`# ${n.name}: unavailable — ${e.reason}`)}return[`# memory report: no probe answered`,...t.length>0?t:[`# no probe is known for this platform`]].join(`
|
|
162
|
+
`)}function AC(e,t){return e===`darwin`?[jC(`footprint`,[`-p`,String(t)]),jC(`vmmap`,[`--summary`,String(t)])]:e===`linux`?[MC(`/proc/self/smaps_rollup`),MC(`/proc/self/status`)]:[]}function jC(e,t){return{name:`${e} ${t.join(` `)}`,read:()=>{let n=Ee({bin:e,args:[...t],timeoutMs:5e3,category:`limits.memory-report`});return n.ok?n.stdout.trim().length>0?{kind:`text`,text:n.stdout}:{kind:`unavailable`,reason:`exited 0 but printed nothing`}:{kind:`unavailable`,reason:`${n.reason}${n.error===void 0?``:`: ${n.error}`}${NC(n.stderr)}`}}}}function MC(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 NC(e){let t=e.split(`
|
|
163
|
+
`).map(e=>e.trim()).find(e=>e.length>0);return t===void 0?``:` (${t})`}const PC=`CC_CANDYBAR_RSS_LIMIT_MB`;function FC(e){let t=e[PC];if(t===void 0)return 512;let n=/^\d+$/.test(t)?Number(t):NaN;if(!Number.isSafeInteger(n)||n<=0)throw Error(`${PC} must be a positive integer (MB), got ${JSON.stringify(t)}`);return n}function IC(e){return FC(e)*2}const LC=1024*1024;function RC(e){return FC(e)*LC}const zC={memoryReport:{prefix:`memory-`,suffix:`.txt`},heapSnapshot:{prefix:`heap-`,suffix:`.heapsnapshot`}};function BC(e,t,n){let{prefix:r,suffix:i}=zC[t];return c.join(e,`${r}${n}${i}`)}function VC(e){for(let t of Object.keys(zC)){let{prefix:n,suffix:r}=zC[t];if(e.startsWith(n)&&e.endsWith(r))return t}return null}function HC(e){let t=e.rssLimitBytes??512*LC,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 UC(e.log,`memory report`,()=>{let t=BC(e.snapshotDir,`memoryReport`,o);e.writeMemoryReport(t,e.captureMemoryReport()),e.log(`info`,`memory report written: ${t}`)}),UC(e.log,`heap snapshot`,()=>{let t=BC(e.snapshotDir,`heapSnapshot`,o);e.log(`info`,`heap snapshot written: ${e.writeHeapSnapshot(t)}`)}),UC(e.log,`artifact rotation`,()=>{GC(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 UC(e,t,n){try{n()}catch(n){e(`warn`,`${t} failed: ${n.message}`)}}function WC(e){let t=e.slice(e.lastIndexOf(`/`)+1),n=VC(t);if(n===null)return t;let{prefix:r,suffix:i}=zC[n];return t.slice(r.length,t.length-i.length)}function GC(e,t,n){let r=new Map;for(let t of e){let e=WC(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 KC(e,t,n={}){let i=Me();return{now:()=>Date.now(),pid:process.pid,snapshotDir:i,log:Q,memoryBytes:()=>{let e=process.memoryUsage();return{rss:e.rss,heapTotal:e.heapTotal}},captureMemoryReport:()=>kC(AC(process.platform,process.pid)),writeMemoryReport:(e,t)=>r.writeFileSync(e,t,{mode:384}),writeHeapSnapshot:e=>C.writeHeapSnapshot(e),listArtifacts:()=>{try{return r.readdirSync(i).filter(e=>VC(e)!==null).map(e=>c.join(i,e))}catch{return[]}},removeFile:e=>r.unlinkSync(e),shutdown:t,startedAtMs:e,...n}}function qC(e={}){if(lw()!==null)return;let n=e.spawn??uw,r=ow();if(r.kind===`contended`){let e=YC();e!==null&&e>2e3&&(t.stderr.write(`cc-candybar: spawn-lock held ${e}ms (likely crashed holder) — spawning unlocked\n`),JC(n));return}if(r.kind===`error`){t.stderr.write(`cc-candybar: spawn-lock unavailable (${r.reason}) — spawning unlocked\n`),JC(n);return}try{JC(n)}finally{cw()}}function JC(e){nw()&&XC(e)}function YC(){try{let e=r.statSync(Ve());return Date.now()-e.mtimeMs}catch{return null}}function XC(e){try{e()||t.stderr.write(`cc-candybar: daemon spawn returned false (unable to resolve script path?)
|
|
164
|
+
`)}catch(e){t.stderr.write(`cc-candybar: daemon spawn failed: ${e.message}\n`)}}function ZC(e,t){return e===null?{kind:`allow`}:e<-1e4?{kind:`allow-future-garbage`,futureMs:-e}:e<t?{kind:`deny`}:{kind:`allow`}}function QC(e){return Math.min(3e3*2**Math.min(Math.max(e,0),5),6e4)}function $C(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 ew(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 tw(){try{r.unlinkSync(Ue())}catch(e){e.code!==`ENOENT`&&t.stderr.write(`cc-candybar: could not reset spawn.backoff: ${e.message}\n`)}}function nw(){let e=He(),n=Ue(),r=$C(n),i=ZC(rw(e),QC(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`),iw(e),ew(n,Math.min(r+1,5)),!0)}function rw(e){try{return Date.now()-r.statSync(e).mtimeMs}catch{return null}}function iw(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 aw=null;function ow(){let e=Ve();for(let n=0;n<2;n++){try{let n=r.openSync(e,`wx`,384);try{r.writeSync(n,JSON.stringify({pid:t.pid,ts:Date.now()}))}catch{}return aw={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(!sw(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 sw(e){try{let t=r.statSync(e);return Date.now()-t.mtimeMs>1e4}catch{return!0}}function cw(){if(!aw)return;let{fd:e,path:t}=aw;aw=null;try{r.closeSync(e)}catch{}try{r.unlinkSync(t)}catch{}}function lw(){try{return r.mkdirSync(Me(),{recursive:!0}),null}catch(e){return`mkdir ${Me()}: ${e.message}`}}function uw(){let e=t.execPath,n=t.argv[1];return n?De({bin:e,args:[`--max-old-space-size=${IC(t.env)}`,n,`daemon`],category:`daemon-spawn`}).ok:!1}const dw=`cc-candybar`,fw=`dispatch`,pw=`set-state`,mw=`step-state`,hw=`copy`,gw=`open-vscode`,_w=`toolbar-toggle`,vw=`show-config-error`,yw=`show-config-warning`,bw=`set-config`,xw=`step-config`,Sw=`save`,Cw=`save-preset`,ww=`delete-preset`,Tw=`reset-config`,Ew=`apply-layout-op`,Dw=`undo`,Ow=`redo`,kw=`apply-update`,Aw=`doctor-run`,jw=`doctor-fix`;function Mw(e){return e.map(encodeURIComponent).join(`/`)}function Nw(e){return e.length===0?[]:e.split(`/`).map(decodeURIComponent)}function Pw(e){return`${dw}://${fw}/${e.map(e=>`e=${encodeURIComponent(`${e.verb}/${Mw(e.args)}`)}`).join(`&`)}`}function Fw(e){return new te(e).getAll(`e`).map(zw)}const Iw=new Set([pw,Tw]);function Lw(e){return e.reduce((e,t)=>{let n=e.at(-1),r=n&&Rw(n,t);return r?[...e.slice(0,-1),r]:[...e,t]},[])}function Rw(e,t){if(e.verb!==t.verb||!Iw.has(e.verb))return;let[n,r]=[zw(e.value),zw(t.value)];return n.verb===r.verb?{verb:e.verb,value:`${n.verb}/${n.value}/${r.value}`}:void 0}function zw(e){let t=e.indexOf(`/`);return t===-1?{verb:e,value:``}:{verb:e.slice(0,t),value:e.slice(t+1)}}const Bw=`1.89.0`;function Vw(){return c.join(f.homedir(),`.claude`,`settings.json`)}const Hw=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/;function Uw(e){let t=Hw.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 Ww(e){return e.join(`.`)}function Gw([e,t,n],[r,i,a]){return e-r||t-i||n-a}const Kw=`@promptctl/cc-candybar`;async function qw(e,t,n){let r=`${n}/-/package/${encodeURIComponent(e)}/dist-tags`;try{let e=await t(r,{signal:AbortSignal.timeout(5e3)});if(!e.ok)return X(`registry responded ${e.status} for ${r}`);let n=await e.json();return typeof n.latest==`string`?Uw(n.latest):Y}catch(e){return X(e instanceof Error?e.message:String(e))}}function Jw(e,t){let n=Uw(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=Gw(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 Yw(e,t){switch(t.kind){case`current`:return{stream:`stdout`,text:`✓ cc-candybar ${Ww(t.installed)} is the latest release.\n`};case`ahead`:return{stream:`stdout`,text:`cc-candybar ${Ww(t.installed)} is newer than the registry's latest release (${Ww(t.latest)}): an unpublished build.\n`};case`stale`:{let n=Ww(t.latest);return{stream:`stderr`,text:`⚠ cc-candybar ${Ww(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 Xw=`CCCandybarURLHandler`,Zw=[],Qw={"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 $w(e){return/^[A-Za-z0-9_./=,:-]+$/.test(e)?e:`'${e.replace(/'/g,`'\\''`)}'`}function eT(e,t){return[e,...t].map($w).join(` `)}function tT(){return c.join(f.homedir(),`Applications`,`${Xw}.app`)}function nT(){if(process.platform!==`darwin`)throw Error(`URL handler installation requires macOS (found platform: ${process.platform}).`)}function rT(){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 iT(){return c.join(rT(),`bin`,`cc-candybar`)}function aT(){return c.join(rT(),`dist`,`index.mjs`)}function oT(e,t){return[`on open location L`,`\tdo shell script "'${e.replace(/"/g,`\\"`)}' '${t.replace(/"/g,`\\"`)}' url-handle " & quoted form of L`,`end open location`].join(`
|
|
165
|
+
`)}function sT(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 cT(t){let n=Qw[`${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 lT(e,t){c.resolve(e)!==c.resolve(t)&&r.copyFileSync(e,t)}function uT(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 ${Kw}@latest install`);return n.toString(`latin1`)===`#!`?`node-shim`:`native`}finally{r.closeSync(t)}}function dT(){let e=sT(process.argv[1]);if(!r.existsSync(e))throw Error(`install: bundled dist not found at ${e}. Reinstall the package.`);let t=cT(e);if(!r.existsSync(t.sourcePath))throw Error(`install: render entry not found at ${t.sourcePath}. Reinstall the package.`);r.mkdirSync(c.dirname(aT()),{recursive:!0}),r.mkdirSync(c.dirname(iT()),{recursive:!0}),lT(e,aT()),lT(t.sourcePath,iT()),r.chmodSync(iT(),493),r.rmSync(c.join(rT(),`url-handler.mjs`),{force:!0});let n=uT(iT());return process.stdout.write(`Staged cc-candybar v${Bw} runtime at ${rT()}\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:iT(),distPath:aT(),entryKind:n}}function fT(){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>${dw}</string>`,` </array>`,` </dict>`,`</array>`].join(`
|
|
166
|
+
`)}]}function pT(e){let t=tT();r.mkdirSync(c.dirname(t),{recursive:!0}),r.existsSync(t)&&r.rmSync(t,{recursive:!0,force:!0}),process.stdout.write(`Building ${t}\n`);let n=Ee({bin:`/usr/bin/osacompile`,args:[`-o`,t,`-e`,oT(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 fT())Ee({bin:`/usr/bin/plutil`,args:[`-remove`,e,i],category:`install.plutil`});for(let{key:e,xml:t}of fT()){let n=Ee({bin:`/usr/bin/plutil`,args:[`-insert`,e,`-xml`,t,i],category:`install.plutil`});if(!n.ok)throw process.stderr.write(n.stderr),Error(`plutil -insert ${e} failed (${n.reason})`)}process.stdout.write(`Registering ${dw}:// with Launch Services\n`);let a=Ee({bin:`/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister`,args:[`-f`,t],category:`install.lsregister`});if(!a.ok)throw process.stderr.write(a.stderr),Error(`lsregister failed (${a.reason})`);process.stdout.write(`✓ ${Xw}.app installed and registered.\n`),process.stdout.write(` Test: open '${dw}://hello-world' && pbpaste\n`)}function mT(){nT(),pT(dT().distPath)}function hT(e,t=dw){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:hw,value:r}:{verb:decodeURIComponent(r.slice(0,i)),value:r.slice(i+1)}}async function gT(e){e||(process.stderr.write(`url-handle: missing URL argument.
|
|
167
|
+
`),process.exit(1));let t;try{t=hT(e)}catch(e){process.stderr.write(`url-handle: ${e instanceof Error?e.message:String(e)}\n`),process.exit(1)}let n=await TC(t.verb,t.value);n.kind===`ok`&&process.exit(0),n.kind===`transient`&&(qC(),process.stderr.write(`url-handle: daemon unavailable (${n.cause}: ${n.message})\n`),process.exit(1)),process.stderr.write(_T(n)+`
|
|
168
|
+
`),process.exit(1)}function _T(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 vT(){return`✓ install complete.
|
|
169
169
|
Restart Claude Code to pick up the new statusline.
|
|
170
|
-
Tip: every bar carries a settings menu — click it (${
|
|
171
|
-
`)
|
|
172
|
-
`))throw Error(`renderStripCells: rich-js strip output did not end its last line`);return i.slice(0,-1)}function
|
|
173
|
-
`)}function
|
|
174
|
-
`);return e?`${l}\n${e}`:l}function
|
|
175
|
-
`))}function XT(e,t,n,r){let{colors:i}=e.channels[0].severity,{fullText:a,failedConfigFile:o}=t,s=new B({bgcolor:i.bg,color:i.fg}),c=(e,t)=>new H(e,{style:t,end:``,noWrap:!0}),l=n>0?[c(`${n} more rows · `,s),a.kind===`file`?c(`open full text`,s.withLink(ne(a.path).href)):c(`full text unavailable: ${wT(a.reason)}`,s)]:[],u=o===null?[]:[c(`${l.length>0?` · `:``}open `,s),c(wT(o),s.withLink(ne(o).href))],d=[c(`↳ `,s),...l,...u.slice(0,-1)],f=d.reduce((e,t)=>e+t.cellLength,0),p=u.slice(-1).map(e=>e.truncate(Math.max(1,r.width-f),{mode:`middle`})),m=H.fromFragments([...d,...p]).truncate(r.width);return m.noWrap=!0,RT([m],r)}const ZT=e=>!e.startsWith(`.`)&&!e.endsWith(`~`);function QT(e,t){return t.isSymbolicLink()?Buffer.from(r.readlinkSync(e)):r.readFileSync(e)}function $T(e,t){return r.readdirSync(t).filter(ZT).sort().flatMap(n=>{let i=c.join(t,n),a=r.lstatSync(i,{throwIfNoEntry:!1});return a===void 0?[]:a.isDirectory()?$T(e,i):[[c.relative(e,i).split(c.sep).join(`/`),QT(i,a)]]})}function eE(e){let t=ie.createHash(`sha256`);for(let[n,r]of $T(e,e))t.update(n).update(`\0`).update(r).update(`\0`);return t.digest(`hex`)}const tE=e=>e.slice(0,7);function nE(e){return c.dirname(c.dirname(e))}function rE(){return{version:yw,digest:`711c2c9f1ca4eab1b48e6740714e4503a93fd750d31c58729131c56d4be48372`}}function iE(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 aE(e,t){try{let n=nE(w(e)),i=c.join(n,`src`);if(!r.existsSync(i))return{kind:`not-source-checkout`};let a=t(),o=eE(i);return o===a.digest?{kind:`current`,root:n,stamp:a}:{kind:`stale`,root:n,source:{version:iE(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 oE=/^-?\d+$/;function sE(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 cE(e){return t=>{if(!t)return{ok:!1,reason:`${e} value is required`};if(!oE.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 lE(e,t,n){return r=>r?oE.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 uE(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=>!oE.test(e));if(o.length>0)throw Error(`${n} action table: key "${e}" is an integer spec (a paged cursor or a bounded value) but a click writes non-integer value(s) to it (${o.join(`, `)}). A ${n} key has one key shape — point that click at a distinct key, or write an integer.`);if(i&&r.length>0)throw Error(`${n} action table: key "${e}" is declared as both a paged cursor (int) and a bounded value (range) — a ${n} key has one key shape. Use distinct keys.`);if(r.length>0){let t=Math.min(...r.map(e=>e.min)),i=Math.max(...r.map(e=>e.max)),o=a.filter(e=>{let n=parseInt(e,10);return n<t||n>i});if(o.length>0)throw Error(`${n} action table: key "${e}" is a bounded range [${t},${i}] but a click writes out-of-range value(s) to it (${o.join(`, `)}). The range gate would clamp them, storing a different value than the click renders — write an in-range integer, or point that click at a distinct key.`);return{kind:`range`,min:t,max:i}}return{kind:`int`}}function dE(e){return e===`config`?`set-config`:`set-state`}function fE(e,t,n){return t.kind===`int`?cE(`menu page "${e}"`):t.kind===`range`?lE(t.min,t.max,`${n} stepper "${e}"`):sE(t.allowed,`${n} "${e}"`,dE(n))}function pE(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:uE(e,n,t)}))}function mE(e,t=`state`){let n=new Map(Object.entries(e).map(([e,t])=>[e,{validator:t,permanent:!0}]));function r(){let e=[];for(let[t,r]of n)r.permanent&&e.push(t);return e}return{register(e,i){if(!e)throw Error(`register: key is required`);if(e.includes(`/`))throw Error(`register: key "${e}" contains "/" — the wire shape splits on "/" so a slash-bearing key cannot be addressed. Use a slash-free key.`);let a=n.get(e);if(a){if(a.permanent)throw Error(`register: key "${e}" is a built-in ${t} key and cannot be re-claimed (built-in keys: ${[...r()].join(`, `)})`);let n=uE(e,[...a.specs,i],t);a.specs.push(i),a.merged=n,a.validator=fE(e,n,t)}else{let r=uE(e,[i],t);n.set(e,{permanent:!1,specs:[i],merged:r,validator:fE(e,r,t)})}let o=!0;return()=>{if(!o)return;o=!1;let r=n.get(e);if(!r||r.permanent)return;let a=r.specs.indexOf(i);a>=0&&r.specs.splice(a,1),r.specs.length===0?n.delete(e):(r.merged=uE(e,r.specs,t),r.validator=fE(e,r.merged,t))}},validate(e,r){let i=n.get(e);return i?i.validator(r):{ok:!1,reason:`unknown ${t} key "${e}" (have: ${[...n.keys()].join(`, `)})`}},listKeys(){return[...n.keys()]},listBaselineKeys(){return r()},rangeParamsFor(e){let t=n.get(e);if(!t||t.permanent||t.merged.kind!==`range`)return null;let{min:r,max:i}=t.merged;return{min:r,max:i}}}}const hE=mE({},`config`);function gE(){return hE.listKeys()}function _E(e,t){return hE.validate(e,t)}function vE(e){return hE.rangeParamsFor(e)}function yE(e,t){return`persist`in e?`to`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:[e.to]}}]:`from`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:aS(e.from,t).members}}]:`cycle`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:e.cycle}}]:`removeSegment`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:[Gv({op:`remove`,target:e.removeSegment})]}}]:`insertSegment`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:[Gv({op:`insert`,segment:e.insertSegment,anchor:e.anchor,relation:e.relation})]}}]:`insertSegmentFrom`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:aS(e.insertSegmentFrom,t).members.map(t=>Gv({op:`insert`,segment:t,anchor:e.anchor,relation:e.relation}))}}]:[{key:e.persist,spec:{kind:`range`,min:e.min,max:e.max}}]:[]}function bE(e,t){let n=jc(e.globals).get(t);return n===void 0?null:String(n)}function xE(e){let t=new Set;for(let n of Object.values(e.actions)){`reset`in n&&t.add(n.reset);let e=`persist`in n?oy(n.persist):null;e?.scope===`preset-root`&&t.add(iy(e.preset))}return[...t].map(e=>({key:e,spec:{kind:`allow-list`,allowed:[]}}))}function SE(e){let t=new Map([...rS(e),...wy(e)]);return[...xE(e),...Object.values(e.actions).flatMap(e=>yE(e,t))]}function CE(e){return pE(SE(e),`config`)}function wE(e,t){return hE.register(e,t)}const TE=`trimPrefix "/" (trimPrefix .project_dir .current_dir)`,EE=`{{ \$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 (${TE}) (basename .project_dir) (ne (${TE}) "") }}{{ end }}{{ end }}{{ abbreviatePath \$dir }}`,DE={globals:{palette:`tokyo-night`},variables:{...Lv,current_dir:{kind:`input`,path:`workspace.current_dir`,default:`?`},"model.display_name":{kind:`input`,path:`model.display_name`,default:``},version:{kind:`input`,path:`version`,default:``},home:{kind:`input`,path:`home`,default:``},"tmux.session":{kind:`input`,path:`tmux.session`,default:``},"host.name":{kind:`input`,path:`host.name`,default:``},"host.user":{kind:`input`,path:`host.user`,default:``},"host.ssh":{kind:`input`,path:`host.ssh`,type:`boolean`,default:!1},"git.repoName":{kind:`input`,path:`git.repoName`,default:``},"git.branch":{kind:`input`,path:`git.branch`,default:``},"git.sha":{kind:`input`,path:`git.sha`,default:``},"git.ahead":{kind:`input`,path:`git.ahead`,type:`number`,default:0},"git.behind":{kind:`input`,path:`git.behind`,type:`number`,default:0},"git.staged":{kind:`input`,path:`git.staged`,type:`number`,default:0},"git.unstaged":{kind:`input`,path:`git.unstaged`,type:`number`,default:0},"git.untracked":{kind:`input`,path:`git.untracked`,type:`number`,default:0},"git.conflicts":{kind:`input`,path:`git.conflicts`,type:`number`,default:0},"git.upstream":{kind:`input`,path:`git.upstream`,default:``},"git.stash":{kind:`input`,path:`git.stash`,type:`number`,default:0},"git.status":{kind:`input`,path:`git.status`,default:`clean`},"git.operation":{kind:`input`,path:`git.operation`,default:``},"git.timeSinceCommit":{kind:`input`,path:`git.timeSinceCommit`,type:`number`,default:0},"git.color.branch":{kind:`literal`,value:`primary`},"git.color.staged":{kind:`literal`,value:`success`},"git.color.unstaged":{kind:`literal`,value:`warning`},"git.color.untracked":{kind:`literal`,value:`accent`},"git.color.conflicts":{kind:`literal`,value:`error`},"git.color.ahead":{kind:`literal`,value:`success`},"git.color.behind":{kind:`literal`,value:`warning`},"git.color.stash":{kind:`literal`,value:`accent`},"git.detail":{kind:`state`,key:`git-detail`,default:`collapsed`},"git.prNumber":{kind:`input`,path:`git.prNumber`,type:`number`,default:0},"git.prState":{kind:`input`,path:`git.prState`,default:``},"git.prUrl":{kind:`input`,path:`git.prUrl`,default:``},"git.prError":{kind:`input`,path:`git.prError`,default:``},"cache.expiresAt":{kind:`input`,path:`cache.expiresAt`,type:`number`,default:0},"session.cost":{kind:`input`,path:`session.cost`,type:`number`,default:0},"session.tokens":{kind:`input`,path:`session.tokens`,type:`number`,default:0},"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:EE},model:{description:`The active model's display name.`,template:`✱ {{ formatModelName .model.display_name }}`,when:`{{ ne .model.display_name "" }}`},sessionId:{description:`The session id, truncated to 8 characters.`,template:`⌗{{ trunc 8 .session.id }}`,when:`{{ ne .session.id "" }}`},version:{description:`The Claude Code version reported in the hook payload.`,template:`◈ v{{ .version }}`,when:`{{ ne .version "" }}`},tmux:{description:`The tmux session name; hidden when not inside tmux.`,template:`tmux:{{ .tmux.session | default "none" }}`,when:`{{ ne .tmux.session "" }}`},host:{description:`user@host on a warning background, shown only over SSH.`,template:`⇄ {{ .host.user | default "?" }}@{{ .host.name | default "?" }}`,bg:`warning`,when:`{{ .host.ssh }}`},gitaculous:{description:`The git state: a summary (branch, ahead/behind, S/U/? flags) that the arrow at its right edge expands to every fact — repo, in-progress operation, sha, upstream ±, stash count, time since the last commit.`,template:`{{ if eq .git.detail "expanded" }}{{ template "gitExpanded" . }}{{ else }}{{ template "gitCollapsed" . }}{{ end }} {{ action "gitDetail" "▸" "◂" }}`,fg:`{{ readableOn (mix (color "foreground") (bgOf) 60) (bgOf) 3 }}`,when:`{{ ne .git.branch "" }}`},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:Gy(``).template},themeSwitcher:{description:"`◀ <theme> ▶`: the theme the bar is wearing; ◀ and ▶ switch this session to the previous or next theme, wrapping at the ends.",template:`{{ carousel "stepTheme" 0 }}`},session:{description:`This session's cost and token total, with a budget warning once a budget is configured.`,template:`§ {{ template "formatCost" .session.cost }} ({{ template "formatTokens" .session.tokens }}){{ template "budgetStatus" (dict "cost" .session.cost "budget" .session.budget.amount "warn" .session.budget.warningThreshold) }}`},today:{description:`Today's cost and tokens across every session, with a budget warning once a budget is configured.`,template:`☉ {{ template "formatCost" .today.cost }} ({{ template "formatTokens" .today.tokens }}){{ template "budgetStatus" (dict "cost" .today.cost "budget" .today.budget.amount "warn" .today.budget.warningThreshold) }}`},block:{description:`The 5-hour rate-limit block: percent used and time to reset, heating to warning then error.`,template:`◱ {{ round .block.nativeUtilization }}% ({{ template "formatResetCountdown" .block.resetsAt }})`,bg:`{{ ramp (round .block.nativeUtilization) "step" 0 (tint) .block.budget.heatThreshold "warning" .block.budget.warningThreshold "error" }}`,when:`{{ gt .block.resetsAt 0 }}`},weekly:{description:`The weekly rate-limit quota: percent used and time to reset, heating to warning then error.`,template:`◑ {{ round .weekly.percentage }}% ({{ template "formatResetCountdown" .weekly.resetsAt }})`,bg:`{{ ramp (round .weekly.percentage) "step" 0 (tint) .weekly.budget.heatThreshold "warning" .weekly.budget.warningThreshold "error" }}`,when:`{{ gt .weekly.resetsAt 0 }}`},burnrate:{description:`Spend per hour, with the projected time to the 5-hour and weekly limits.`,template:`⚡ {{ template "formatRate" .burn.costPerHour }} · {{ template "formatEta" .block.etaMinutes }} to 5h · {{ template "formatEta" .weekly.etaMinutes }} to wk`,bg:`{{ ramp .block.etaMinutes "step" -1 (tint) 0 "error" .burn.eta.errorMinutes "warning" .burn.eta.warnMinutes (tint) }}`,when:`{{ or (gt .block.resetsAt 0) (gt .weekly.resetsAt 0) }}`},speed:{description:`Token throughput for the latest exchange: output, input, and total.`,template:`⇅ out {{ template "formatSpeed" .speed.output }} · in {{ template "formatSpeed" .speed.input }} · tot {{ template "formatSpeed" .speed.total }}`,when:`{{ gt .session.tokens 0 }}`},tokenSparkline:{description:`A sparkline of recent token throughput.`,template:`⚡ {{ sparkline .speed.history 24 }}`,when:`{{ ne .speed.history "" }}`},cacheTimer:{description:"Minutes until the prompt cache expires, or `cold` once it has.",template:`◴ {{ if le (minutesUntilReset .cache.expiresAt) 0 }}cold{{ else }}{{ minutesUntilReset .cache.expiresAt }}m{{ end }}`,fg:`{{ readableOn (color (cascade (minutesUntilReset .cache.expiresAt) "0:error" "9:warning" "21:foreground")) (bgOf) ${Qi} }}`,when:`{{ gt .cache.expiresAt 0 }}`},context:{description:`Context used, in tokens and percent remaining, heating as it fills.`,template:`◔ {{ formatInteger .context.totalTokens }} ({{ .context.contextLeft }}%)`,bg:`{{ ramp .context.contextLeft "step" 0 "error" 21 "warning" 41 (tint) }}`,when:`{{ gt .context.totalTokens 0 }}`},metrics:{description:`Response times, session duration, message count, and lines added/removed.`,template:`{{ if .metrics.lastResponseTime }} Δ {{ template "formatResponseTime" .metrics.lastResponseTime }}{{ end }}{{ if .metrics.responseTime }} ⧖ {{ template "formatResponseTime" .metrics.responseTime }}{{ end }}{{ if .metrics.sessionDuration }} ⧗ {{ template "formatDuration" .metrics.sessionDuration }}{{ end }}{{ if .metrics.messageCount }} ◆ {{ .metrics.messageCount }}{{ end }}{{ if .metrics.linesAdded }} + {{ .metrics.linesAdded }}{{ end }}{{ if .metrics.linesRemoved }} - {{ .metrics.linesRemoved }}{{ end }} `,when:`{{ or (gt .metrics.lastResponseTime 0.0) (gt .metrics.responseTime 0.0) (gt .metrics.sessionDuration 0.0) (gt .metrics.messageCount 0) (gt .metrics.linesAdded 0) (gt .metrics.linesRemoved 0) }}`},activity:{description:`What Claude is doing: the slash command that opened the turn, the in-progress todo, and the tools in flight.`,template:`{{ if .activity.command }} ⌘ {{ .activity.command }}{{ end }}{{ if .activity.todo.total }}{{ if .activity.todo.active }} ☐ {{ .activity.todo.position }}/{{ .activity.todo.total }} {{ abbrev 32 .activity.todo.active }}{{ else }} ☑ {{ .activity.todo.completed }}/{{ .activity.todo.total }}{{ end }}{{ end }}{{ if .activity.tool.running }} ⟳ {{ template "formatToolTally" .activity.tool.running }}{{ end }}{{ if .activity.tool.done }} ✓ {{ template "formatToolTally" .activity.tool.done }}{{ end }} `,when:`{{ or (ne .activity.command "") (gt .activity.todo.total 0) (ne .activity.tool.running "") (ne .activity.tool.done "") }}`}},root:{rows:{identity:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`host`},{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`}]},status:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`segment`,name:`context`},{kind:`segment`,name:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`activity`}]}}},actions:{...Gy(``).actions,copyDir:{copy:`{{ .current_dir }}`},stepTheme:{set:`theme`,from:`themes`},gitDetail:{set:`git-detail`,cycle:[`collapsed`,`expanded`]}},looks:{none:{hueShift:0,chromaScale:1,lightnessScale:1,lightnessShift:0},vivid:{hueShift:0,chromaScale:1.35,lightnessScale:1,lightnessShift:0},muted:{hueShift:0,chromaScale:.55,lightnessScale:1,lightnessShift:0},dim:{hueShift:0,chromaScale:1,lightnessScale:.85,lightnessShift:0},bright:{hueShift:0,chromaScale:1,lightnessScale:1,lightnessShift:.08},inverted:{hueShift:0,chromaScale:1,lightnessScale:-1,lightnessShift:1}},presets:{default:{},compact:{root:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`segment`,name:`context`}]},globals:{padding:0}},verbose:{root:{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`segment`,name:`gitPr`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`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:{gitPaint:`{{ fg (readableOn (color .color) (bgOf) ${Qi}) .text }}`,gitCollapsed:`{{ template "gitBranch" . }}{{ template "gitAheadBehind" . }}{{ template "gitFlags" . }}`,gitExpanded:`(git){{ template "gitRepo" . }}{{ template "gitOperation" . }}{{ template "gitSha" . }}{{ template "gitFlags" . }} {{ template "gitBranch" . }}{{ template "gitUpstream" . }}{{ template "gitStash" . }}{{ template "gitAge" . }}`,gitBranch:`⎇ {{ template "gitPaint" (dict "color" .git.color.branch "text" .git.branch) }}`,gitRepo:`{{ if ne .git.repoName "" }} {{ .git.repoName }}{{ end }}`,gitOperation:`{{ if ne .git.operation "" }} [{{ .git.operation }}]{{ end }}`,gitSha:`{{ if ne .git.sha "" }} {{ .git.sha }}{{ end }}`,gitFlags:`{{ if or (gt .git.staged 0) (gt .git.unstaged 0) (gt .git.untracked 0) (gt .git.conflicts 0) }} {{ if gt .git.staged 0 }}{{ template "gitPaint" (dict "color" .git.color.staged "text" "S") }}{{ end }}{{ if gt .git.unstaged 0 }}{{ template "gitPaint" (dict "color" .git.color.unstaged "text" "U") }}{{ end }}{{ if gt .git.untracked 0 }}{{ template "gitPaint" (dict "color" .git.color.untracked "text" "?") }}{{ end }}{{ if gt .git.conflicts 0 }}{{ template "gitPaint" (dict "color" .git.color.conflicts "text" (printf "!%v" .git.conflicts)) }}{{ end }}{{ end }}`,gitAheadBehind:`{{ if or (gt .git.ahead 0) (gt .git.behind 0) }} {{ if gt .git.ahead 0 }}{{ template "gitPaint" (dict "color" .git.color.ahead "text" (printf "+%v" .git.ahead)) }}{{ end }}{{ if and (gt .git.ahead 0) (gt .git.behind 0) }}/{{ end }}{{ if gt .git.behind 0 }}{{ template "gitPaint" (dict "color" .git.color.behind "text" (printf "-%v" .git.behind)) }}{{ end }}{{ end }}`,gitUpstream:`{{ if ne .git.upstream "" }} [{{ .git.upstream }}{{ template "gitAheadBehind" . }}]{{ end }}`,gitStash:`{{ if gt .git.stash 0 }} {{ template "gitPaint" (dict "color" .git.color.stash "text" (printf "(%v stashed)" .git.stash)) }}{{ end }}`,gitAge:`{{ if gt .git.timeSinceCommit 0 }} ◷ {{ template "formatTimeSince" .git.timeSinceCommit }}{{ end }}`,formatCost:'{{ if lt . 0.01 }}<$0.01{{ else }}${{ printf "%.2f" . }}{{ end }}',formatTokenCount:`{{ if ge . 1000000 }}{{ printf "%.1f" (divf . 1000000) }}M{{ else if ge . 1000 }}{{ printf "%.1f" (divf . 1000) }}K{{ else }}{{ . }}{{ end }}`,formatTokens:`{{ template "formatTokenCount" . }} tokens`,formatToolTally:`{{ $names := splitList "," . }}{{ range $i, $pair := $names }}{{ if lt $i 2 }}{{ if $i }} {{ end }}{{ $kv := splitList ":" $pair }}{{ index $kv 0 }}{{ if ne (index $kv 1) "1" }}×{{ index $kv 1 }}{{ end }}{{ end }}{{ end }}{{ if gt (len $names) 2 }} +{{ sub (len $names) 2 }}{{ end }}`,formatRate:`{{ if lt . 0 }}—/hr{{ else }}{{ template "formatCost" . }}/hr{{ end }}`,formatEta:`{{ if lt . 0 }}—{{ else }}{{ template "formatLongTimeRemaining" . }}{{ end }}`,formatSpeed:`{{ if lt . 0 }}—{{ else }}{{ template "formatTokenCount" (round .) }}/s{{ end }}`,formatTokenBreakdown:`{{ $first := true }}{{ if gt .input 0 }}{{ template "formatTokenCount" .input }} in{{ $first = false }}{{ end }}{{ if gt .output 0 }}{{ if not $first }} + {{ end }}{{ template "formatTokenCount" .output }} out{{ $first = false }}{{ end }}{{ if or (gt .cacheCreation 0) (gt .cacheRead 0) }}{{ if not $first }} + {{ end }}{{ template "formatTokenCount" (add .cacheCreation .cacheRead) }} cached{{ $first = false }}{{ end }}{{ if $first }}0 tokens{{ end }}`,budgetStatus:`{{ if or (le .budget 0) (lt .cost 0) }}{{ else }}{{ $pct := minf 100 (mulf (divf .cost .budget) 100) }}{{ $p := printf "%.0f%%" $pct }}{{ if ge $pct .warn }} !{{ $p }}{{ else }}{{ if ge $pct 50 }} +{{ $p }}{{ else }} {{ $p }}{{ end }}{{ end }}{{ end }}`,formatTimeSince:`{{ if lt . 60 }}{{ . }}s{{ else if lt . 3600 }}{{ div . 60 }}m{{ else if lt . 86400 }}{{ div . 3600 }}h{{ else if lt . 604800 }}{{ div . 86400 }}d{{ else }}{{ div . 604800 }}w{{ end }}`,formatDuration:`{{ if lt . 60 }}{{ printf "%.0f" . }}s{{ else if lt . 3600 }}{{ printf "%.0f" (divf . 60) }}m{{ else if lt . 86400 }}{{ printf "%.1f" (divf . 3600) }}h{{ else }}{{ printf "%.1f" (divf . 86400) }}d{{ end }}`,formatResponseTime:`{{ if lt . 60 }}{{ printf "%.1f" . }}s{{ else }}{{ printf "%.1f" (divf . 60) }}m{{ end }}`,formatLongTimeRemaining:`{{ if ge . 1440 }}{{ $d := div . 1440 }}{{ $h := div (mod . 1440) 60 }}{{ if gt $h 0 }}{{ $d }}d {{ $h }}h{{ else }}{{ $d }}d{{ end }}{{ else if ge . 60 }}{{ $h := div . 60 }}{{ $m := mod . 60 }}{{ if gt $m 0 }}{{ $h }}h {{ $m }}m{{ else }}{{ $h }}h{{ end }}{{ else }}{{ . }}m{{ end }}`,formatResetCountdown:`{{ template "formatLongTimeRemaining" (add 1 (minutesUntilReset .)) }}`}},OE=new Set([DE.globals.palette,...Object.values(DE.segments).map(e=>e.palette)].filter(e=>e!==void 0)),kE=Ys(jS(`<default>`,JSON.stringify(DE),OE),DE),AE=Xv(kE.presets);function jE(e){return AE.includes(e)}function ME(e){if(!e)return 0;try{return o(e).mtimeMs}catch{return 0}}const NE=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 PE(e){return((...t)=>NE.run(()=>e(...t)))}const FE=PE(y),IE=PE(v),LE=PE(b);async function RE(e,t){return NE.run(async()=>{let n=null;try{n=await _(e,`r`);let{size:r,mtimeMs:i,ino:a}=await n.stat(),o=t!==void 0&&(a!==t.ino||r<t.offset),s=o||t===void 0?0:t.offset;if(s>=r)return J({buf:Buffer.alloc(0),start:s,size:r,mtimeMs:i,ino:a,reset:o});let c=Buffer.alloc(r-s),l=0;for(;l<c.length;){let{bytesRead:e}=await n.read(c,l,c.length-l,s+l);if(e===0)break;l+=e}return J({buf:l===c.length?c:c.subarray(0,l),start:s,size:r,mtimeMs:i,ino:a,reset:o})}catch(t){return t.code===`ENOENT`?Y:X(`readAppended ${e}: ${t instanceof Error?t.message:String(t)}`)}finally{await n?.close().catch(e=>{D(`transcript-fs: close failed: ${e instanceof Error?e.message:String(e)}`)})}})}async function zE(e,t){return NE.run(async()=>{let n=null;try{n=await _(e,`r`);let{size:r}=await n.stat(),i=Math.max(0,r-t),a=Buffer.alloc(r-i),o=0;for(;o<a.length;){let{bytesRead:e}=await n.read(a,o,a.length-o,i+o);if(e===0)break;o+=e}return J({buf:o===a.length?a:a.subarray(0,o),fromStart:i===0})}catch(t){return t.code===`ENOENT`?Y:X(`readTail ${e}: ${t instanceof Error?t.message:String(t)}`)}finally{await n?.close().catch(e=>{D(`transcript-fs: close failed: ${e instanceof Error?e.message:String(e)}`)})}})}const BE=/"(?:cache_read_input_tokens|cache_creation_input_tokens)":[1-9]/;function VE(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 HE(e){let t=await UE(e);return t.kind===`ok`?J(Math.floor((t.value+36e5)/1e3)):t}async function UE(e){for(let t of[65536,1048576]){let n=await zE(e,t);if(n.kind!==`ok`)return n;let r=WE(n.value.buf,n.value.fromStart);if(r!=null)return J(r);if(n.value.fromStart)return Y}return Y}function WE(e,t){let n=e.toString(`utf8`).split(`
|
|
176
|
-
`),r=+!t;for(let e=n.length-1;e>=r;e--){let t=n[e];if(!t||!BE.test(t))continue;let r=VE(t);if(r!=null)return r}return null}function GE(e,t,n){let r=Zv(t(`preset`),e.globals.preset,e.presets),i=ey(e,r),a=t(`edit.mode`)===`open`?e.editGlobals:{};return{preset:r,presetCustomized:n(r),theme:Qx(a.palette,t(`theme`),i.palette),look:ja(a.look,t(`look`),i.look,e.looks),style:Pa(a.style,t(`style`),i.style),progression:Ka(a.progression,t(`progression`),i.progression),separator:a.default_separator??i.default_separator,autoWrap:$a(a.autoWrap,t(`autoWrap`),i.autoWrap),padding:eo(a.padding,t(`padding`),i.padding),charset:Ra(a.charset,t(`charset`),i.charset),updateNotice:a.updateNotice??i.updateNotice??!0,colorCompatibility:Ha(a.colorCompatibility,t(`colorCompatibility`),i.colorCompatibility)}}function KE(e,t){return{style:e.style,separator:e.separator,colorCompatibility:e.colorCompatibility,wrap:e.autoWrap,padding:e.padding,charset:e.charset,width:t}}function qE(e){return{theme:e.theme,look:e.look,preset:e.preset,progression:e.progression}}function JE(e){return{preset:{effective:e.preset,customized:e.presetCustomized,bundled:jE(e.preset)},style:{effective:e.style},progression:{effective:e.progression},charset:{effective:e.charset},colorCompatibility:{effective:e.colorCompatibility},autoWrap:{effective:e.autoWrap},padding:{effective:e.padding}}}const YE=10*1e3;function XE(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 ZE(e,t){if(!(t<60))return e*3600/t}function QE(e,t,n,r){let i=r-t;if(i<50||i>YE)return;let a=n-e;if(!(a<=0))return a*1e3/i}function $E(e){let{prev:t,cur:n}=e;if(t===void 0)return;let r=QE(t.input,t.atMs,n.input,n.atMs),i=QE(t.output,t.atMs,n.output,n.atMs),a=QE(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 eD(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>YE)continue;let o=QE(r.total,r.atMs,i.total,i.atMs);n.push(o??0)}if(n.length!==0)return n.join(`,`)}function tD(e){let t=e.indexOf(`.`);return t<0?e:e.slice(0,t)}function nD(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`,()=>tD(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 rD(e,t){let n=new Map;for(let[t,r]of Object.entries(e.variables))n.set(t,r);for(let[t,r]of Object.entries(e.segments))if(r.vars)for(let[e,i]of Object.entries(r.vars))n.set(`${t}.${e}`,i);let r=[],i=new Set,a=t=>Dg(t,e.helpers).keys();for(let n of Qo($v(e,t).node)){if(n.when)for(let e of a(n.when))r.push(e);if(n.kind!==`segment`)continue;let t=e.segments[n.name];if(t){for(let e of[t.template,t.when,t.bg,t.fg])if(e)for(let t of a(e))r.push(t)}}let o=new Set;for(;r.length>0;){let e=r.pop();for(let t of aD(n,e)){if(i.has(t))continue;i.add(t);let e=n.get(t);if(e){if(e.kind===`input`)o.add(e.path);else if(e.kind===`template`)for(let t of a(e.template))r.push(t)}}}return o}function iD(e){let t=new Map;return n=>{let r=t.get(n);if(r!==void 0)return r;let i=rD(e,n);return t.set(n,i),i}}function aD(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 oD(e,t){for(let n of e)if(n===t||n.startsWith(t+`.`))return!0;return!1}function sD(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 cD(e,t,n,r,i,a,o){let s=e=>oD(r,e),c=(t.clock??(()=>new Date))().getTime(),l=(e,t,n)=>t?n().catch(t=>X(`${e}: ${String(t)}`)):Promise.resolve(Y),[u,d,f,p,m,h,g,_,v]=await Promise.all([l(`git`,s(`git`),()=>t.gitProvider.getGitInfo(n??e.workspace?.current_dir,sD(r),e.workspace?.project_dir)),l(`session`,s(`session.cost`)||s(`session.tokens`)||s(`burn`),()=>t.usageStore.getUsageInfo(e.session_id,e)),l(`today`,s(`today`),()=>t.usageStore.getTodayInfo(e)),l(`context`,s(`context`),()=>t.contextProvider.getContextInfo(e)),l(`metrics`,s(`metrics`)||s(`burn`),()=>t.metricsProvider.getMetricsInfo(e.session_id,e)),l(`activity`,s(`activity`),()=>t.activityProvider.getActivityInfo(e.session_id,e)),l(`tmux`,s(`tmux`),()=>t.tmuxService.getSessionId()),l(`cache`,s(`cache`),()=>HE(e.transcript_path)),l(`speed`,s(`speed`),()=>t.usageStore.observeSpeed(e.session_id,e.transcript_path,c))]),y=[],b=e=>{if(e.kind===`failed`){y.push(e.reason);return}return e.kind===`ok`?e.value:void 0},x=pD(u);y.push(...x.failures);let S=nD(a);y.push(...S.failures);let C=b(d),ee=b(f),te=b(p),w=b(m),ne=b(h),re=b(g),ie=b(_);for(let e of y)t.log(`warn`,`provider fetch failed: ${e}`);let T=e.rate_limits?.five_hour,E=e.rate_limits?.seven_day,ae=T?XE(T.used_percentage,T.resets_at,18e6,c):void 0,oe=E?XE(E.used_percentage,E.resets_at,6048e5,c):void 0,se=C?.session.cost,ce=w?.sessionDuration,le=s(`burn`)&&se!=null&&ce!=null?ZE(se,ce):void 0,ue=b(v),de=ue===void 0?void 0:$E(ue),fe=ue===void 0?void 0:eD(ue),pe=de!==void 0||fe!==void 0?{...de,...fe!==void 0&&{history:fe}}:void 0,me=fD(process.env.HOME??process.env.USERPROFILE),he=e.workspace?{...e.workspace,current_dir:fD(e.workspace.current_dir)??``,project_dir:fD(e.workspace.project_dir)??``}:e.workspace,D=C===void 0?void 0:dD({cost:C.session.cost,tokens:C.session.tokens}),ge=ee===void 0?void 0:{cost:ee.cost,tokens:ee.tokens},_e=w===void 0?void 0:dD({lastResponseTime:w.lastResponseTime,responseTime:w.responseTime,sessionDuration:w.sessionDuration,messageCount:w.messageCount,linesAdded:w.linesAdded,linesRemoved:w.linesRemoved}),ve=ne===void 0?void 0:lD(ne);return{...e,...he!==void 0&&{workspace:he},...me!==void 0&&{home:me},...x.git!==void 0&&{git:x.git},...re!==void 0&&{tmux:{session:re}},host:S.host,...JE(i),history:t.history(e.session_id),unsaved:o,...D!==void 0&&{session:D},...ge!==void 0&&{today:ge},...le!==void 0&&{burn:{costPerHour:le}},...pe!==void 0&&{speed:pe},...s(`block`)&&T!==void 0&&{block:{nativeUtilization:T.used_percentage,resetsAt:T.resets_at,...ae!==void 0&&{etaMinutes:ae}}},...E!==void 0&&{weekly:{percentage:E.used_percentage,resetsAt:E.resets_at,...oe!==void 0&&{etaMinutes:oe}}},...ie!==void 0&&{cache:{expiresAt:ie}},...te!==void 0&&{context:{totalTokens:te.totalTokens,contextLeft:te.contextLeftPercentage}},..._e!==void 0&&{metrics:_e},...ve!==void 0&&{activity:ve}}}function lD(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=uD(e.running),i=uD(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 uD(e){return e.length===0?void 0:e.map(e=>`${e.name}:${e.count}`).join(`,`)}function dD(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 fD(e){return e===void 0||e.length===0||c.sep!==`\\`?e:e.replace(/\\/g,`/`)}function pD(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 mD={theme:e=>e.theme.kind===`decided`?e.theme.name:null,preset:e=>e.preset,look:e=>e.look.kind===`decided`?e.look.name:null,style:e=>e.style,progression:e=>e.progression,charset:e=>e.charset,colorCompatibility:e=>e.colorCompatibility,autoWrap:e=>e.autoWrap?qa:Ja,padding:e=>String(e.padding)},hD=Object.entries(Rv),gD=new Set(zv.map(e=>e.sessionKey)),_D=()=>!1;function vD(e,t){return GE(e,e=>gD.has(e)?t(e):null,_D)}function yD(e,t,n,r){return e.flatMap(([e,i])=>{let a=mD[e](t);return a===null||a===mD[e](n(e))?[]:[{...i,value:a,target:r(i)}]})}function bD(e,t,n){return mD[n](vD(e,t))}function xD(e,t){let n=vD(e,t),r=GE(e,()=>null,_D),i=GE(e,e=>e===Rv.preset.sessionKey?n.preset:null,_D),a=Qv(e.presets,n.preset).globals??{};return yD(hD,n,e=>e===`preset`?r:i,e=>e.configKey in a?ay(n.preset,e.configKey):e.configKey)}function SD(e,t){let n=vD(e,t),r=GE(e,e=>e===Rv.preset.sessionKey?n.preset:null,_D);return{from:n.preset,globals:Qv(e.presets,n.preset).globals??{},picks:yD(hD.filter(([e])=>e!==`preset`),n,()=>r,e=>e.configKey)}}function CD(e){return{sessionKeys:zv.filter(t=>t.configKey===e).map(e=>e.sessionKey),fileKeys:[e,...xc(e)?AE.map(t=>ay(t,e)):[]]}}const wD=Sa(),TD=new Set(wD),ED=new Set(Ma),DD=e=>e?TD.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown theme "${e}" (have: ${wD.join(`, `)})`}:{ok:!1,reason:`theme name is required`},OD=e=>e?ED.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown style "${e}" (have: ${Ma.join(`, `)})`}:{ok:!1,reason:`style name is required`},kD=new Set([`1`,`true`]),AD=new Set([`0`,`false`]),jD=mE({style:OD,theme:DD,"toolbar-expanded":e=>kD.has(e)?{ok:!0,value:`1`}:AD.has(e)?{ok:!0,value:``}:{ok:!1,reason:`expected boolean-ish (1, 0, true, false), got "${e}"`}});function MD(){return jD.listKeys()}function ND(e,t){return jD.register(e,t)}function PD(e,t){return jD.validate(e,t)}function FD(e){return jD.rangeParamsFor(e)}function ID(e,t){return`set`in e?`to`in e?[{key:e.set,spec:{kind:`allow-list`,allowed:[e.to]}}]:`from`in e?[{key:e.set,spec:{kind:`allow-list`,allowed:aS(e.from,t).members}}]:`int`in e?[{key:e.set,spec:{kind:`int`}}]:`cycle`in e?[{key:e.set,spec:{kind:`allow-list`,allowed:e.cycle}}]:[{key:e.set,spec:{kind:`range`,min:e.min,max:e.max}}]:[]}function LD(e){let t=new Set(jD.listBaselineKeys());return e.filter(e=>e.spec.kind!==`allow-list`||!t.has(e.key))}function RD(e,t,n){let r=Hv.get(n);if(r!==void 0)return bD(e,t,r);let i=Object.values(e.variables).find(e=>e.kind===`state`&&e.key===n);return i?.kind===`state`?i.default??null:null}function zD(e){let t=rS(e);return LD(Object.values(e.actions).flatMap(e=>ID(e,t)))}function BD(e){return pE(zD(e))}const VD=`update.dismissed`,HD=`updateNotice`;function UD(e){return e.kind===`source`?e.newer.digest:Cw(e.newer)}const WD=e=>`${e.version} [${tE(e.digest)}]`;function GD(e){switch(e.kind){case`source`:return{headline:`Newer source`,newer:WD(e.newer),running:WD(e.running),act:`rebuild`,busy:`rebuilding…`,command:{bin:`pnpm`,args:[`build`],cwd:e.root}};case`release`:return{headline:`Newer release`,newer:Cw(e.newer),running:Cw(e.running),act:`upgrade`,busy:`upgrading…`,command:{bin:`pnpm`,args:[`dlx`,`${Tw}@${Cw(e.newer)}`,`install`]}}}}const KD={kind:`idle`},qD={kind:`running`};function JD(e,t,n){if(e===null)return[];let r=UD(e);if(!n.enabled||n.dismissed===r)return[];let i=GD(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(`
|
|
177
|
-
`),c=pw([{verb:QC,args:[s]}]),l=t.kind===`running`?UT(`[${i.busy}]`,c):UT(`[${i.act}]`,pw([{verb:cw,args:[n.sessionId]}]));return[{severity:HT,message:s,lines:[[UT(a,c),l,UT(`[dismiss]`,pw([{verb:KC,args:[n.sessionId,VD,r]}])),UT(`[disable]`,pw([{verb:$C,args:[n.sessionId,HD,`false`]}]))],...o.map(e=>[UT(e,c)])]}]}function YD(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 XD(e){switch(e.kind){case`current`:return[`info`,`build: current ${WD(e.stamp)}`];case`stale`:return[`info`,`build: stale — source ${WD(e.source)}, running ${WD(e.running)}`];case`not-source-checkout`:return[`info`,`build: not a source checkout`];case`unchecked`:return[`warn`,`build: unchecked: ${e.reason}`]}}function ZD(e){switch(e.kind){case`current`:return[`info`,`release: current ${Cw(e.installed)}`];case`stale`:return[`info`,`release: stale — latest ${Cw(e.latest)}, running ${Cw(e.installed)}`];case`ahead`:return[`info`,`release: ahead — running ${Cw(e.installed)}, latest ${Cw(e.latest)}`];case`unchecked`:return[`warn`,`release: unchecked: ${e.reason}`]}}function QD(e){let t=null;return([n,r])=>{r!==t&&(t=r,e(n,r))}}const $D=e=>e.split(/\r?\n/).map(e=>e.trim()).filter(e=>e!==``).at(-1);function eO(e){let t=e.exitCode===null?``:` (exit ${e.exitCode})`,n=$D(e.stderr)??e.error??$D(e.stdout)??`no output`;return`${e.reason}${t}: ${n}`}function tO(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=KD,d=null,f=QD(s),p=QD(s),m=()=>YD(c,l);function h(){let e=m(),t=e===null?null:UD(e);(d===null?null:d.identity)!==t&&(d?.dispose(),d=t===null?null:{identity:t,dispose:ND(VD,{kind:`allow-list`,allowed:[t]})})}function g(){c=aE(t,rE),f(XD(c)),h()}async function _(){l=Dw(yw,await Ew(Tw,a,i)),p(ZD(l)),h()}return{arm(){wE(HD,{kind:`allow-list`,allowed:[`false`]}),g(),setInterval(g,n).unref(),c.kind===`not-source-checkout`&&(_(),setInterval(()=>void _(),r).unref())},notice:e=>JD(m(),u,e),act(){let e=m();if(e===null)throw new $(`apply-update: nothing newer is known to apply`);let t=GD(e);if(u.kind===`running`)throw new $(`apply-update: already ${t.busy}`);u=qD,s(`info`,`apply-update: ${t.act} — ${t.command.bin} ${t.command.args?.join(` `)??``}`),Te({...t.command,category:`update.apply`,timeoutMs:6e5}).then(n=>{if(n.ok){u=KD,s(`info`,`apply-update: ${t.act} succeeded`),g(),o();return}let r=eO(n);u={kind:`failed`,identity:UD(e),reason:r},s(`error`,`apply-update: ${t.act} failed: ${r}`)})}}}var nO=class{static CACHE_DIR=O();static USAGE_CACHE_DIR=c.join(this.CACHE_DIR,`usage`);static LOCKS_DIR=c.join(this.CACHE_DIR,`locks`);static isLocked(e){let t=c.join(this.LOCKS_DIR,e);if(!r.existsSync(t))return!1;try{let n=r.readFileSync(t,`utf-8`),i=parseInt(n.trim(),10);if(isNaN(i))return D(`Invalid PID in lock file ${e}, removing stale lock`),r.unlinkSync(t),!1;try{return process.kill(i,0),!0}catch(n){return n.code===`ESRCH`?(D(`Removing stale lock file ${e} for dead process ${i}`),r.unlinkSync(t),!1):(D(`Error checking process ${i} for lock ${e}:`,n),!0)}}catch(t){return D(`Error reading lock file ${e}:`,t),!0}}static async acquireLock(e,t=5e3){await this.ensureCacheDirectories();let n=c.join(this.LOCKS_DIR,e),i=Date.now(),a=String(process.pid);for(;Date.now()-i<t;)try{return await r.promises.writeFile(n,a,{flag:`wx`}),D(`Lock acquired for ${e}`),!0}catch(e){if(e.code===`EEXIST`)await ae(50);else throw e}return D(`Failed to acquire lock for ${e} within ${t}ms`),!1}static async releaseLock(e){let t=c.join(this.LOCKS_DIR,e);try{await r.promises.unlink(t),D(`Lock released for ${e}`)}catch(t){t.code!==`ENOENT`&&D(`Error releasing lock for ${e}:`,t)}}static async ensureCacheDirectories(){try{await Promise.all([r.promises.mkdir(this.CACHE_DIR,{recursive:!0}),r.promises.mkdir(this.USAGE_CACHE_DIR,{recursive:!0}),r.promises.mkdir(this.LOCKS_DIR,{recursive:!0})])}catch(e){D(`Failed to create cache directories:`,e)}}static createProjectHash(e){return T(`md5`).update(e).digest(`hex`).substring(0,8)}static async getUsageCache(e,t){await this.ensureCacheDirectories();let n=c.join(this.USAGE_CACHE_DIR,`${e}.json`),i=`${e}.usage.lock`;for(let a=0;a<3;a++){if(this.isLocked(i)){D(`Cache for ${e} is locked, waiting...`),await ae(75);continue}try{let i=await r.promises.readFile(n,`utf-8`),a=JSON.parse(i);return!t||a.timestamp>=t?(D(`[CACHE-HIT] ${e} disk cache: found`),this.deserializeDates(a.data)):(D(`${e} cache outdated: cache=${a.timestamp}, latest=${t}`),null)}catch(t){if(t.code===`ENOENT`)return D(`No shared ${e} usage cache found`),null;D(`Attempt ${a+1} failed to read ${e} cache: ${t.message}. Retrying...`),await ae(75)}}return D(`Failed to read ${e} cache after 3 attempts.`),null}static deserializeDates(e){return Array.isArray(e)?e.map(e=>({...e,timestamp:new Date(e.timestamp)})):e}static async setUsageCache(e,t,n){let i=`${e}.usage.lock`;if(!await this.acquireLock(i)){D(`Could not acquire lock to set usage cache for ${e}`);return}try{await this.ensureCacheDirectories();let i=c.join(this.USAGE_CACHE_DIR,`${e}.json`),a=JSON.stringify({data:t,timestamp:n||Date.now()});await r.promises.writeFile(i,a,`utf-8`),D(`[CACHE-SET] ${e} disk cache stored`)}catch(t){D(`Failed to save ${e} usage cache:`,t)}finally{await this.releaseLock(i)}}};const rO={"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 iO=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 nO.getUsageCache(`pricing`,e)}static async saveDiskCache(e){await nO.setUsageCache(`pricing`,e)}static async fetchPricingData(){return new Promise(e=>{let t=new ee(this.GITHUB_PRICING_URL),n=E({hostname:t.hostname,path:t.pathname,headers:{"User-Agent":`cc-candybar`,"Cache-Control":`no-cache`},timeout:5e3},t=>{if(t.statusCode!==200){D(`HTTP ${t.statusCode}: ${t.statusMessage}`),e(null);return}let r=``,i=0;t.on(`data`,t=>{if(i+=t.length,i>1048576){D(`Response too large`),n.destroy(),e(null);return}r+=t}),t.on(`end`,()=>{try{let t=JSON.parse(r),n=t._meta,i={};for(let[e,n]of Object.entries(t))e!==`_meta`&&(i[e]=n);this.validatePricingData(i)?(D(`Fetched fresh pricing from GitHub for ${Object.keys(i).length} models`),D(`Pricing last updated: ${n?.updated||`unknown`}`),e(i)):(D(`Invalid pricing data structure`),e(null))}catch(t){D(`Failed to parse JSON:`,t),e(null)}}),t.on(`error`,t=>{D(`Response error:`,t),e(null)})});n.on(`error`,t=>{D(`Request error:`,t),e(null)}),n.on(`timeout`,()=>{D(`Request timeout`),n.destroy(),e(null)}),n.end()})}static async getCurrentPricing(){if(this.executionCache!==null)return D(`[CACHE-HIT] Pricing execution cache: ${Object.keys(this.executionCache).length} models`),this.executionCache;let e=await this.loadDiskCache();if(e)return D(`[CACHE-HIT] Pricing disk cache: ${Object.keys(e).length} models`),this.executionCache=e,D(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(e).length} models`),e;let t=await this.fetchPricingData();return t?(await this.saveDiskCache(t),D(`[CACHE-SET] Pricing disk cache stored: ${Object.keys(t).length} models`),this.executionCache=t,D(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(t).length} models`),t):(D(`[CACHE-FALLBACK] Using offline pricing data: ${Object.keys(rO).length} models`),this.executionCache=rO,D(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(rO).length} models`),rO)}static validatePricingData(e){if(!e||typeof e!=`object`)return!1;for(let[,t]of Object.entries(e)){if(!t||typeof t!=`object`)return!1;let e=t;if(typeof e.input!=`number`||typeof e.output!=`number`||typeof e.cache_read!=`number`)return!1}return!0}static async getModelPricing(e){if(this.modelPricingCache.has(e))return D(`[CACHE-HIT] Model pricing cache: ${e}`),this.modelPricingCache.get(e);let t=await this.getCurrentPricing(),n;return n=t[e]?t[e]:this.fuzzyMatchModel(e,t),this.modelPricingCache.set(e,n),D(`[CACHE-SET] Model pricing cache: ${e}`),n}static fuzzyMatchModel(e,t){let n=e.toLowerCase();for(let[e,r]of Object.entries(t))if(e.toLowerCase()===n)return r;for(let{pattern:e,fallback:r}of[{pattern:[`opus-4-6`,`claude-opus-4-6`],fallback:`claude-opus-4-6-20260205`},{pattern:[`opus-4-5`,`claude-opus-4-5`],fallback:`claude-opus-4-5-20251101`},{pattern:[`opus-4-1`,`claude-opus-4-1`],fallback:`claude-opus-4-1-20250805`},{pattern:[`opus-4`,`claude-opus-4`],fallback:`claude-opus-4-20250514`},{pattern:[`sonnet-4-6`,`sonnet-4.6`,`claude-sonnet-4-6`],fallback:`claude-sonnet-4-6`},{pattern:[`sonnet-4.5`,`4-5-sonnet`,`sonnet-4-5`],fallback:`claude-sonnet-4-5-20250929`},{pattern:[`sonnet-4`,`claude-sonnet-4`],fallback:`claude-sonnet-4-20250514`},{pattern:[`haiku-4.5`,`4-5-haiku`,`haiku-4-5`],fallback:`claude-haiku-4-5-20251001`},{pattern:[`haiku`],fallback:`claude-haiku-4-5-20251001`},{pattern:[`opus`],fallback:`claude-opus-4-20250514`},{pattern:[`sonnet`],fallback:`claude-sonnet-4-5-20250929`}])if(e.some(e=>n.includes(e))&&t[r])return t[r];return t[`claude-sonnet-4-5-20250929`]||{name:`${e} (Unknown Model)`,input:3,cache_write_5m:3.75,cache_write_1h:6,cache_read:.3,output:15}}static async calculateCostForEntry(e){let t=e.message?.usage;if(!t)return 0;let n=this.extractModelId(e),r=await this.getModelPricing(n),i=t.input_tokens||0,a=t.output_tokens||0,o=t.cache_creation_input_tokens||0,s=t.cache_read_input_tokens||0,c=i/1e6*r.input,l=a/1e6*r.output,u=s/1e6*r.cache_read,d=o/1e6*r.cache_write_5m;return c+l+d+u}static extractModelId(e){if(e.model&&typeof e.model==`string`)return e.model;let t=e.message;if(t?.model){let e=t.model;if(typeof e==`string`)return e;let n=e;return(typeof n?.id==`string`?n.id:null)||`claude-sonnet-4-5-20250929`}return e.model_id&&typeof e.model_id==`string`?e.model_id:`claude-sonnet-4-5-20250929`}};const aO=/<command-name>\s*([^<\s][^<]*?)\s*<\/command-name>/;function oO(e){if(typeof e==`string`)return aO.exec(e)?.[1]}function sO(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 cO(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=sO(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?oO(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 lO(){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 uO(e){let t=[];for(let n of e){let e=d(n,`projects`);if(a(e))try{let n=await FE(e,{withFileTypes:!0});for(let r of n)if(r.isDirectory()){let n=d(e,r.name);t.push(n)}}catch(t){D(`Failed to read projects directory ${e}:`,t)}}return t}async function dO(e,t,n){let r=[],i=d(t,e,`subagents`);try{let t=(await FE(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 IE(t,`utf-8`)).split(`
|
|
178
|
-
`)[0];n&&JSON.parse(n).sessionId===e&&r.push(t)}catch{D(`Failed to check agent file ${t}`)}}}catch(e){D(`Failed to read subagents directory ${i}:`,e)}return r}function
|
|
179
|
-
`))if(n.trim())try{let e=
|
|
180
|
-
`);if(i.length>1)return n;let a=Math.max(0,t.width-LO(i[0]??``)),o=Math.floor(a/r.length),s=a-o*r.length;return r.forEach(({at:t,how:i},a)=>{let c=o+(a===r.length-1?s:0),{text:l}=e[t];NO(l,l.cellLength+c,i),n[t]=PO(e[t])}),n}function zO(e,t){let n=[],r=[],i=()=>{if(!r.length)return;let e=BO(r,t);e.plain.length>0&&n.push(e),r=[]};for(let a of e)if(HO(a.style).link){i();let e=BO([a],t);e.plain.length>0&&n.push(e)}else r.push(a);return i(),n}function BO(e,t){let n=t!==void 0&&!t.isNull?e.map(e=>VO(e,t)):e,r=H.fromFragments(n);return r.end=``,r.noWrap=!0,n.length===1?r.style=n[0].style:t!==void 0&&!t.isNull&&(r.style=t),r}function VO(e,t){let n=e.copy();return n.style=t.add(HO(e.style)),n}function HO(e){return e instanceof B?e:B.parse(e)}var UO=class extends Error{constructor(e,t,n){super(`Invalid ${t} color ${JSON.stringify(e)}: ${n}`),this.name=`ColorSpecError`}};function WO(e,t,n,r,i){let{palette:a,tint:o}=e,s=GO(n,i),c=s===void 0?o:KO(a,s,`bg`);e.bg=c;let l=GO(r,i),u=l===void 0?$i(a,c,t):KO(a,l,`fg`);return new B({bgcolor:P.fromRgba(c),color:P.fromRgba(u)})}function GO(e,t){if(e!==void 0)return e.evaluate(t).map(e=>e.plain).join(``)}function KO(e,t,n){try{return Vn(e,t)}catch(e){throw e instanceof Rn?new UO(t,n,e.message):e}}function qO(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,JO(e,t,o,n,r,i));return i}function JO(e,t,n,r,i,a){if(`set`in n){let e=r.get(n.set)??n.set;if(`to`in n)return{kind:`set-literal`,key:n.set,value:n.to,stateVar:e};if(`from`in n){let t=aS(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=Bv.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=aS(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=aS(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:XO(e,n.copy,t)};if(`open`in n)return{kind:`open`,target:XO(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`};if(`save`in n)return{kind:`save`};if(`preset`in n)return n.preset===`save`?{kind:`preset-save`}:{kind:`preset-delete`,name:XO(e,n.name,t)};let[o,...s]=n.do.map(e=>{let n=a.get(e);if(n===void 0)throw Error(`action "${t}" fires "${e}", which is not declared in this config`);return n});return{kind:`do`,head:o,rest:s}}function YO(e){return e.kind===`do`?YO(e.head):e}function XO(e,t,n){try{return e(t)}catch(e){throw Error(`Template parse error in actions.${n}: ${e.message}`,{cause:e})}}function ZO(e,t){return e.has(t)?Bg(e.read(t)):``}function QO(e,t){return e.evaluate(t).map(e=>e.plain).join(``)}function $O(e,t,n,r){let i=new H(e,{style:B.combine([r,new B({link:t,bold:n})])});return i.noWrap=!0,i.end=``,i}function ek(e,t){return Math.max(e.members.indexOf(ZO(t,e.stateVar)),0)}function tk(e,t,n,r,i){switch(e.kind){case`set-literal`:{let t=ZO(r,e.stateVar);return{effects:[{verb:KC,args:[i,e.key,e.value]}],active:t===e.value}}case`set-option`:{let a=n??t,o=ZO(r,e.stateVar);return{effects:[{verb:KC,args:[i,e.key,a]}],active:o===a}}case`set-int`:{let a=n??t,o=ZO(r,e.stateVar);return{effects:[{verb:KC,args:[i,e.key,a]}],active:o===a}}case`set-cycle`:{let t=e.members[(ek(e,r)+1)%e.members.length];return{effects:[{verb:KC,args:[i,e.key,t]}],active:!1}}case`set-bounded`:return{effects:[{verb:qC,args:[i,e.key,String(e.by)]}],active:!1};case`copy`:return{effects:[{verb:JC,args:[QO(e.text,j_(r))]}],active:!1};case`open`:return{effects:[{verb:YC,args:[QO(e.target,j_(r))]}],active:!1};case`persist-literal`:{let t=ZO(r,e.stateVar);return{effects:[{verb:$C,args:[i,e.key,e.value]}],active:t===e.value}}case`persist-option`:{let a=n??t,o=ZO(r,e.stateVar);return{effects:[{verb:$C,args:[i,e.key,a]}],active:o===a}}case`persist-cycle`:{let t=e.members[(ek(e,r)+1)%e.members.length];return{effects:[{verb:$C,args:[i,e.key,t]}],active:!1}}case`persist-bounded`:return{effects:[{verb:ew,args:[i,e.key,String(e.by)]}],active:!1};case`reset`:return{effects:[{verb:iw,args:[i,e.key]}],active:!1};case`undo`:return{effects:[{verb:ow,args:[i]}],active:!1};case`redo`:return{effects:[{verb:sw,args:[i]}],active:!1};case`save`:return{effects:[{verb:tw,args:[i]}],active:!1};case`preset-save`:return{effects:[{verb:nw,args:[i]}],active:!1};case`preset-delete`:return{effects:[{verb:rw,args:[i,QO(e.name,j_(r))]}],active:!1};case`doctor-run`:return{effects:[{verb:lw,args:[i]}],active:!1};case`doctor-fix`:return{effects:[{verb:uw,args:[i,e.check]}],active:!1};case`layout-op`:return{effects:[{verb:aw,args:[i,e.key,Gv(e.op)]}],active:!1};case`do`:{let a=tk(e.head,t,n,r,i);return{effects:[...a.effects,...e.rest.flatMap(e=>tk(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:aw,args:[i,e.key,Gv(r)]}],active:!1}}}}function nk(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:tc(`action "${e}"`,n,t.members.length,ek(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 rk(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}=nk(e,YO(r),t,i),{effects:s,active:c}=tk(r,a,o,i,ZO(i,`session.id`));return $O(a,pw(s),c)}function ik(e){return{action:{fn:(t,...n)=>rk(t,n,e),argTypes:[`string`,`string`],returnType:`T`}}}function ak(e,t){return $O(`✕`,pw([{verb:KC,args:[ZO(e,`session.id`),t,Qs]}]),!1)}function ok(e,t,n){return new B({bgcolor:P.fromRgba(t),color:P.fromRgba($i(e,t,n))})}function sk(e,t,n){return ok(e.palette,fa(e.palette,e.disclosure,[t],n),n)}function ck(e,t,n,r,i){return r===void 0?n=>sk(e,{...n,distribution:t},i):(e,t)=>lk(r(t,n),i)}function lk(e,t){let n=Ui(e,`background`);return new B({bgcolor:P.fromRgba(n),color:P.fromRgba(Jn(Ui(e,`primary`),n,4.5,t))})}function uk(e){return{current:null,drawnAt:e}}function dk(e,t,n,r,i){let a={segName:t,palette:n,disclosure:r,tint:i,bg:void 0,drops:[]};return e.current=a,a}function fk(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 pk(e){return new H(e).cellLength}function mk(e){return Math.max(1,e.width-e.chromeCols-2*e.padding)}function hk(e){return Math.max(1,mk(e)-(pk(`✕`)+2*e.padding+e.seamCols))}function gk(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 _k(e,t){let n=[];for(let t of e)n.length>0&&n.push(new H(` `)),n.push(t);let r=H.fromFragments(n);return r.noWrap=t,r.end=``,r}function vk(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 yk(e,t,n){let r=e.compiled.get(t),i=r&&YO(r);if(!i||i.kind!==`set-option`&&i.kind!==`persist-option`&&i.kind!==`layout-op-option`)throw Error(`${n} references action "${t}" which must be a set-option, persist-option, or layout-op-option action ({ set, from }, { persist, from }, or { persist, insertSegmentFrom, anchor, relation }), got ${i?`a ${i.kind} action`:`no such action`}`);return i}function bk(e,t,n,r,i,a,o){let s=yk(a,e,`picker`),c=a.compiled.get(e),l=a.store,u=ZO(l,`session.id`),d=`stateVar`in s?ZO(l,s.stateVar):void 0,f=s.options.map(pk),p=i?mk(a):1/0,m=pk(`✕`)+1,h=pk(`←`)+1+pk(`→`)+1,g=gk(f,p,m),_=g.length>1?gk(f,p,m+h):g,v=parseInt(ZO(l,t.stateVar),10),y=Number.isInteger(v)?Math.max(0,Math.min(v,_.length-1)):0,b=_[y]??[],x=e=>pw([{verb:KC,args:[u,t.key,String(e)]}]),S=n.flatMap(([e,t])=>[e,t]),C=pw([{verb:KC,args:[u,...S]}]),ee=r?[{verb:KC,args:[u,...S]}]:[],te=e=>pw([...tk(c,e,e,l,u).effects,...ee]),w=[$O(`✕`,C,!1)];y>0&&w.push($O(`←`,x(y-1),!1));for(let e of b){let t=s.options[e];w.push($O(t,te(t),t===d,o({index:e,count:s.options.length},t)))}return y<_.length-1&&w.push($O(`→`,x(y+1),!1)),_k(w,i)}function xk(e,t){return{picker:{fn:(n,r,i,a)=>{let o=vk(e,r,`set-int`,`an int action ({ set, int: true })`);return bk(n,{key:o.key,stateVar:o.stateVar},[[o.key,`-1`]],i===!0,a===!0,e,ck(fk(t,`{{ picker }}`),Li(void 0),e.basePalette,yk(e,n,`picker`).paletteOf,t.drawnAt()))},argTypes:[`string`,`string`,`bool`,`bool`],returnType:`T`}}}function Sk(e,t,n,r,i){let a=Math.min(Math.floor((t-1)/2),i),o=n,s=0;for(;s<a;){let t=o+pk(e(-(s+1)))+1+pk(e(s+1))+1;if(t>r)break;o=t,s+=1}return s}function Ck(e,t,n,r,i){if(!(`stateVar`in t))throw Error(`carousel references action "${e}", which inserts a segment and holds no current value to centre on — a carousel needs a { set, from } or { persist, from } action`);let a=n.store;if(!a.has(t.stateVar))throw Error(`carousel references action "${e}", whose key "${t.stateVar}" no variable reads back, so there is no current value to centre on — declare { kind: "state", key: "${t.stateVar}" } among the variables`);let o=n.compiled.get(e),s=ZO(a,`session.id`),{options:c}=t,l=c.length,u=ZO(a,t.stateVar),d=Math.max(c.indexOf(u),0),f=e=>((d+e)%l+l)%l,p=e=>c[f(e)],m=new Map,h=e=>{let t=m.get(e);if(t!==void 0)return t;let n=pw(tk(o,p(e),p(e),a,s).effects);return m.set(e,n),n},g=e=>$O(p(e),h(e),p(e)===u,r({index:f(e),count:l},p(e))),_=Sk(p,l,pk(`◀`)+1+pk(p(0))+1+pk(`▶`),hk(n),i),v=e=>Array.from({length:_},(t,n)=>g(e*(n+1)));return _k([...v(-1).reverse(),$O(`◀`,h(-1),!1),g(0),$O(`▶`,h(1),!1),...v(1)],!0)}function wk(e,t){return{carousel:{fn:(n,r,...i)=>{if(i.length>0)throw Error(`carousel "${n}": takes at most one neighbours count after the action name, got ${1+i.length}`);if(r!==void 0&&!(Number.isInteger(r)&&r>=0))throw Error(`carousel "${n}": neighbours must be a whole number ≥ 0 (0 shows only ◀ CURRENT ▶), got ${String(r)}`);let a=r??1/0,o=yk(e,n,`carousel`);return Ck(n,o,e,ck(fk(t,`{{ carousel }}`),Li(void 0),e.basePalette,o.paletteOf,t.drawnAt()),a)},argTypes:[`string`,`float`],returnType:`T`}}}const Tk=[`~/code`,`main`,`opus`,`42%`,`5m`,`$1.20`];function Ek(e,t,n){let r=aa(e,{hue:Ai,depth:0},n);return[U(t).map((t,n)=>({text:Tk[n%Tk.length],colour:Wi(e,t)})),[{text:`▾ open`,colour:r.state},{text:`menu`,colour:r.plane}],[{text:`warn`,colour:Ui(e,`warning`)},{text:`error`,colour:Ui(e,`error`)}]]}function Dk(e,t,n,r){let i=Ek(e,t,n).flatMap((t,r)=>t.map(({text:t,colour:i},a)=>({gap:r>0&&a===0?` `:``,cell:new H(` ${t} `,{style:ok(e,i,n)})}))),a=[],o=0;for(let{gap:e,cell:t}of i){if(o+=e.length+t.cellLength,o>r)break;e!==``&&a.push(new H(e)),a.push(t)}let s=H.fromFragments(a);return s.noWrap=!0,s.end=``,s}function Ok(e,t){return{themePreview:{fn:()=>Dk(e.palette,e.progression,t.drawnAt(),hk(e)),argTypes:[],returnType:`T`}}}const kk=e=>e.slice(e.lastIndexOf(`.`)+1),Ak=(e,t)=>{let n=new H(kk(e));return n.truncate(t,{marker:`…`}),n.plain};function jk(e,t){let n=e.map(e=>e.map(({name:e})=>pk(kk(e)))),r=e=>n.every(n=>n.reduce((t,n)=>t+Math.min(n,e)+2,0)<=t),i=Math.max(1,...n.flat());for(;i>1&&!r(i);)--i;return i}function Mk(e,t,n,r){let i=jk(e,r),a=e.map(e=>{let a=[],o=0;for(let{name:s,address:c,palette:l}of e){let e=new H(` ${Ak(s,i)} `,{style:ok(l,ga(l,{kind:`bar`,progression:t,address:c},n).tint,n)});if(o+=e.cellLength,o>r)break;a.push(e)}return a}),o=H.fromFragments(a.flatMap((e,t)=>t===0?e:[new H(`
|
|
181
|
-
`),...e]));return o.noWrap=!0,o.end=``,o}function
|
|
170
|
+
Tip: every bar carries a settings menu — click it (${ic} by\n default) for quick actions, preset switching, edit mode, and clickable\n theme/look/style/wrap/padding controls.\n`}async function yT(e){let t=e.includes(`--force`),n=e.filter(e=>e!==`--force`),r=n.length>0?n:[...Zw],i=dT();process.platform===`darwin`?pT(i.distPath):process.stdout.write(`Skipping URL handler (cmd-click verbs are macOS-only).
|
|
171
|
+
`),bT(i.binPath,r,t),process.stdout.write(vT());let a=Yw(Kw,Jw(Bw,await qw(Kw,fetch,`https://registry.npmjs.org`)));process[a.stream].write(a.text)}function bT(e,t,n,i){let a=i??Vw();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,$w(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:eT(e,t)},ke(a,JSON.stringify(o,null,2)),process.stdout.write(`Updated ${a}\n`)}function xT(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 ST(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 CT(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 wT(e,t){let n=ST(e);if(n.kind===`owned`&&n.pid===t)try{r.unlinkSync(e)}catch{}}function TT(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 ET(e,t,n,r){let i=DT(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 DT(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 OT(e){let t=!1;function n(){let n=ET(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 kT(e,t=Ee){let n=t({bin:`ps`,args:[`-o`,`lstart=`,`-p`,String(e)],category:`process-fingerprint`,timeoutMs:2e3,env:{...process.env,LC_ALL:`C`,TZ:`UTC`}});if(n.ok){let e=n.stdout.trim();return e.length>0?{kind:`start`,token:e}:{kind:`unavailable`,detail:`ps produced no start-time`}}return{kind:`unavailable`,detail:n.reason===`spawn-error`?n.error??`ps spawn failed`:`ps ${n.reason} (exit ${n.exitCode})`}}function AT(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 jT(e,t=kT){let n=t(e);return n.kind===`start`?n.token:null}const MT=`CC_CANDYBAR_PARENT_PID`;function NT(e){let t=e[MT];if(t===void 0)return{kind:`outlives-nobody`};let n=Number.parseInt(t,10);if(!Number.isInteger(n)||n<=0)throw Error(`${MT} must be a positive integer pid, got ${JSON.stringify(t)}`);return{kind:`anchored`,pid:n}}function PT(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 FT(e){try{return t.kill(e,0),!0}catch(e){return e.code===`EPERM`}}function IT(){let e=Number(process.env.CC_CANDYBAR_DAEMON_CEILING??``);return Number.isInteger(e)&&e>0?e:16}function LT(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 RT(e){try{return r.readdirSync(e).filter(e=>e.endsWith(`.json`)).map(t=>c.join(e,t))}catch{return[]}}function zT(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 BT(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 VT(e){if(!e.isolated)return{decision:LT(!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=LT(!0,BT(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 HT(e,t,n,r){let i=n(e);if(i!==null&&i.pid===t)try{r(e)}catch{}}function UT(e,t={}){return{isolated:!!process.env.CC_CANDYBAR_SOCKET,registryDir:Be(),ceiling:IT(),pid:process.pid,startTime:e,isSameLiveProcess:(e,t)=>AT(e,t,{readStartTime:kT,pidAlive:FT}),listFiles:RT,readEntry:zT,removeFile:e=>{try{r.unlinkSync(e)}catch{}},writeEntry:(e,t)=>{let n=`${e}.${t.pid}.tmp`;try{r.writeFileSync(n,JSON.stringify(t),{mode:384}),r.renameSync(n,e)}catch(e){try{r.unlinkSync(n)}catch(e){e.code}throw e}},ensureDirSafe:process.env.CC_CANDYBAR_DAEMON_REGISTRY_DIR?Pe:e=>{Pe(c.dirname(e)),Pe(e)},...t}}function WT(e){return e<32||e===127||e>=128&&e<=159}function GT(e){let t=``;for(let n of e)t+=WT(n.codePointAt(0)??0)?` `:n;return t.replace(/\s+/g,` `).trim()}function KT(e,t){let n=GT(e),r=``,i=0;for(let e of n){if(i===t)return r.replace(/.$/u,`…`);r+=e,i++}return r}const qT=`\x1B[38;2;255;255;255m`,JT=`\x1B[48;2;200;40;40m`;function YT(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 XT={fg:YT(qT),bg:YT(JT)},ZT={fg:YT(`\x1B[38;2;0;0;0m`),bg:YT(`\x1B[48;2;220;160;40m`)},QT={unicode:hi,ascii:{glyph:`>`,divider:`|`,lead:`<`,tail:`>`}},$T={unicode:{},ascii:{left:`(`,right:`)`}};function eE(e,t,n){switch(e){case`capsule`:return new _i($T[t]);case`plain`:return new vi(n===void 0?{}:{separator:n});case`powerline`:return new gi(QT[t]);default:return e}}const tE=new Map;function nE(e){let t=JSON.stringify([e.style,e.charset,e.separator??null]),n=tE.get(t);if(n!==void 0)return n;let r=eE(e.style,e.charset,e.separator),i=e=>new H(`x`,{end:``,noWrap:!0,style:new B({bgcolor:e})}),a=e=>new H(xi(new oi(e,r),{colorSystem:null}).replace(/\n$/,``)).cellLength,o=a([i(`#101010`)]),s={chrome:o-1,seam:a([i(`#101010`),i(`#202020`)])-o-1};return tE.set(t,s),s}function rE(e){return nE(e).chrome}function iE(e){return nE(e).seam}function aE(e,t){if(e.length===0)return``;let n=eE(t.style,t.charset,t.separator),r=t.colorCompatibility,i=t.wrap&&Number.isFinite(t.width)?xi(new Di([...e],{joiner:n}),{width:t.width,colorSystem:r}):xi(new oi([...e],n),{colorSystem:r});if(!i.endsWith(`
|
|
172
|
+
`))throw Error(`renderStripCells: rich-js strip output did not end its last line`);return i.slice(0,-1)}function oE(e){return Math.min(20,e??20)}const sE={heading:`ERROR`,glyph:`⚠`,colors:XT},cE={heading:`WARNING`,glyph:`⚠`,colors:ZT},lE={heading:`UPDATE`,glyph:`⬆`,colors:ZT};function uE(e,t){return{text:GT(e),link:t}}function dE(e,t,n){let[r,...i]=[fE(e,sE,vw),t,fE(n,cE,yw)].flat();return r===void 0?null:{channels:[r,...i]}}function fE(e,t,n){let r=Pw([{verb:n,args:[e]}]),[i,...a]=e.split(/\r\n|\r|\n/).map(e=>uE(e,r)).filter(e=>e.text!==``).map(e=>[e]);return i===void 0?[]:[{severity:t,message:e,lines:[i,...a]}]}function pE(e){return e.channels.map(e=>`${e.severity.heading}\n${e.message}\n`).join(`
|
|
173
|
+
`)}function mE(e,t,n,r){if(t===null)return e;let i=hE(r),a=t.channels.flatMap(e=>gE(e,i)),o=n.failedConfigFile!==null||a.length>r.rowCap,s=a.slice(0,r.rowCap-Number(o)),c=o?[_E(t,n,a.length-s.length,i)]:[],l=[...s,...c].join(`
|
|
174
|
+
`);return e?`${l}\n${e}`:l}function hE(e){return{style:`plain`,separator:``,width:e.width,wrap:!0,padding:0,charset:`unicode`,colorCompatibility:e.colorCompatibility}}function gE(e,t){let n=new B({bgcolor:e.severity.colors.bg,color:e.severity.colors.fg}),r=Lt(Math.max(2,t.width-1)),i=(e,t)=>new H(`${e} `,{style:t,end:``,noWrap:!0});return e.lines.flatMap((a,o)=>aE([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=>Bt(e,r)).map(e=>i(e,t))})],t).split(`
|
|
175
|
+
`))}function _E(e,t,n,r){let{colors:i}=e.channels[0].severity,{fullText:a,failedConfigFile:o}=t,s=new B({bgcolor:i.bg,color:i.fg}),c=(e,t)=>new H(e,{style:t,end:``,noWrap:!0}),l=n>0?[c(`${n} more rows · `,s),a.kind===`file`?c(`open full text`,s.withLink(ne(a.path).href)):c(`full text unavailable: ${GT(a.reason)}`,s)]:[],u=o===null?[]:[c(`${l.length>0?` · `:``}open `,s),c(GT(o),s.withLink(ne(o).href))],d=[c(`↳ `,s),...l,...u.slice(0,-1)],f=d.reduce((e,t)=>e+t.cellLength,0),p=u.slice(-1).map(e=>e.truncate(Math.max(1,r.width-f),{mode:`middle`})),m=H.fromFragments([...d,...p]).truncate(r.width);return m.noWrap=!0,aE([m],r)}const vE=e=>!e.startsWith(`.`)&&!e.endsWith(`~`);function yE(e,t){return t.isSymbolicLink()?Buffer.from(r.readlinkSync(e)):r.readFileSync(e)}function bE(e,t){return r.readdirSync(t).filter(vE).sort().flatMap(n=>{let i=c.join(t,n),a=r.lstatSync(i,{throwIfNoEntry:!1});return a===void 0?[]:a.isDirectory()?bE(e,i):[[c.relative(e,i).split(c.sep).join(`/`),yE(i,a)]]})}function xE(e){let t=ie.createHash(`sha256`);for(let[n,r]of bE(e,e))t.update(n).update(`\0`).update(r).update(`\0`);return t.digest(`hex`)}const SE=e=>e.slice(0,7);function CE(e){return c.dirname(c.dirname(e))}function wE(){return{version:Bw,digest:`f9d187486b71169f746f214f3201ed5ff3c44db244eb9bf185b07a96b3a14e51`}}function TE(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 EE(e,t){try{let n=CE(w(e)),i=c.join(n,`src`);if(!r.existsSync(i))return{kind:`not-source-checkout`};let a=t(),o=xE(i);return o===a.digest?{kind:`current`,root:n,stamp:a}:{kind:`stale`,root:n,source:{version:TE(n),digest:o},running:a}}catch(e){return{kind:`unchecked`,reason:e.message}}}var $=class extends Error{constructor(e){super(e),this.name=`BadVerbArgs`}};function DE(e){return e.op===`remove`?`remove:${e.target}`:`insert:${e.segment}:${e.anchor}:${e.relation}`}function OE(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 kE(e,t,n){let r=$o(e,new Set(n.map(Qo).filter(e=>e.includes(t)).flat()));return r===e?{seg:e}:{seg:e,id:r}}const AE=/^-?\d+$/;function jE(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 ME(e){return t=>{if(!t)return{ok:!1,reason:`${e} value is required`};if(!AE.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 NE(e,t,n){return r=>r?AE.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 PE(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=>!AE.test(e));if(o.length>0)throw Error(`${n} action table: key "${e}" is an integer spec (a paged cursor or a bounded value) but a click writes non-integer value(s) to it (${o.join(`, `)}). A ${n} key has one key shape — point that click at a distinct key, or write an integer.`);if(i&&r.length>0)throw Error(`${n} action table: key "${e}" is declared as both a paged cursor (int) and a bounded value (range) — a ${n} key has one key shape. Use distinct keys.`);if(r.length>0){let t=Math.min(...r.map(e=>e.min)),i=Math.max(...r.map(e=>e.max)),o=a.filter(e=>{let n=parseInt(e,10);return n<t||n>i});if(o.length>0)throw Error(`${n} action table: key "${e}" is a bounded range [${t},${i}] but a click writes out-of-range value(s) to it (${o.join(`, `)}). The range gate would clamp them, storing a different value than the click renders — write an in-range integer, or point that click at a distinct key.`);return{kind:`range`,min:t,max:i}}return{kind:`int`}}function FE(e){return e===`config`?`set-config`:`set-state`}function IE(e,t,n){return t.kind===`int`?ME(`menu page "${e}"`):t.kind===`range`?NE(t.min,t.max,`${n} stepper "${e}"`):jE(t.allowed,`${n} "${e}"`,FE(n))}function LE(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:PE(e,n,t)}))}function RE(e,t=`state`){let n=new Map(Object.entries(e).map(([e,t])=>[e,{validator:t,permanent:!0}]));function r(){let e=[];for(let[t,r]of n)r.permanent&&e.push(t);return e}return{register(e,i){if(!e)throw Error(`register: key is required`);if(e.includes(`/`))throw Error(`register: key "${e}" contains "/" — the wire shape splits on "/" so a slash-bearing key cannot be addressed. Use a slash-free key.`);let a=n.get(e);if(a){if(a.permanent)throw Error(`register: key "${e}" is a built-in ${t} key and cannot be re-claimed (built-in keys: ${[...r()].join(`, `)})`);let n=PE(e,[...a.specs,i],t);a.specs.push(i),a.merged=n,a.validator=IE(e,n,t)}else{let r=PE(e,[i],t);n.set(e,{permanent:!1,specs:[i],merged:r,validator:IE(e,r,t)})}let o=!0;return()=>{if(!o)return;o=!1;let r=n.get(e);if(!r||r.permanent)return;let a=r.specs.indexOf(i);a>=0&&r.specs.splice(a,1),r.specs.length===0?n.delete(e):(r.merged=PE(e,r.specs,t),r.validator=IE(e,r.merged,t))}},validate(e,r){let i=n.get(e);return i?i.validator(r):{ok:!1,reason:`unknown ${t} key "${e}" (have: ${[...n.keys()].join(`, `)})`}},listKeys(){return[...n.keys()]},listBaselineKeys(){return r()},rangeParamsFor(e){let t=n.get(e);if(!t||t.permanent||t.merged.kind!==`range`)return null;let{min:r,max:i}=t.merged;return{min:r,max:i}}}}const zE=RE({},`config`);function BE(){return zE.listKeys()}function VE(e,t){return zE.validate(e,t)}function HE(e){return zE.rangeParamsFor(e)}function UE(e,t){return`persist`in e?`to`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:[e.to]}}]:`from`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:CS(e.from,t).members}}]:`cycle`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:e.cycle}}]:`removeSegment`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:[DE({op:`remove`,target:e.removeSegment})]}}]:`insertSegment`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:[DE({op:`insert`,segment:e.insertSegment,anchor:e.anchor,relation:e.relation})]}}]:`insertSegmentFrom`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:CS(e.insertSegmentFrom,t).members.map(t=>DE({op:`insert`,segment:t,anchor:e.anchor,relation:e.relation}))}}]:[{key:e.persist,spec:{kind:`range`,min:e.min,max:e.max}}]:[]}function WE(e,t){let n=Ic(e.globals).get(t);return n===void 0?null:String(n)}function GE(e){let t=new Set;for(let n of Object.values(e.actions)){`reset`in n&&t.add(n.reset);let e=`persist`in n?Cy(n.persist):null;e?.scope===`preset-root`&&t.add(xy(e.preset))}return[...t].map(e=>({key:e,spec:{kind:`allow-list`,allowed:[]}}))}function KE(e){let t=new Map([...xS(e),...Vy(e)]);return[...GE(e),...Object.values(e.actions).flatMap(e=>UE(e,t))]}function qE(e){return LE(KE(e),`config`)}function JE(e,t){return zE.register(e,t)}const YE=`trimPrefix "/" (trimPrefix .project_dir .current_dir)`,XE=`{{ \$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 (${YE}) (basename .project_dir) (ne (${YE}) "") }}{{ end }}{{ end }}{{ abbreviatePath \$dir }}`,ZE={globals:{palette:`tokyo-night`},variables:{...uy,current_dir:{kind:`input`,path:`workspace.current_dir`,default:`?`},"model.display_name":{kind:`input`,path:`model.display_name`,default:``},version:{kind:`input`,path:`version`,default:``},home:{kind:`input`,path:`home`,default:``},"tmux.session":{kind:`input`,path:`tmux.session`,default:``},"host.name":{kind:`input`,path:`host.name`,default:``},"host.user":{kind:`input`,path:`host.user`,default:``},"host.ssh":{kind:`input`,path:`host.ssh`,type:`boolean`,default:!1},"git.repoName":{kind:`input`,path:`git.repoName`,default:``},"git.branch":{kind:`input`,path:`git.branch`,default:``},"git.sha":{kind:`input`,path:`git.sha`,default:``},"git.ahead":{kind:`input`,path:`git.ahead`,type:`number`,default:0},"git.behind":{kind:`input`,path:`git.behind`,type:`number`,default:0},"git.staged":{kind:`input`,path:`git.staged`,type:`number`,default:0},"git.unstaged":{kind:`input`,path:`git.unstaged`,type:`number`,default:0},"git.untracked":{kind:`input`,path:`git.untracked`,type:`number`,default:0},"git.conflicts":{kind:`input`,path:`git.conflicts`,type:`number`,default:0},"git.upstream":{kind:`input`,path:`git.upstream`,default:``},"git.stash":{kind:`input`,path:`git.stash`,type:`number`,default:0},"git.status":{kind:`input`,path:`git.status`,default:`clean`},"git.operation":{kind:`input`,path:`git.operation`,default:``},"git.timeSinceCommit":{kind:`input`,path:`git.timeSinceCommit`,type:`number`,default:0},"git.color.branch":{kind:`literal`,value:`primary`},"git.color.staged":{kind:`literal`,value:`success`},"git.color.unstaged":{kind:`literal`,value:`warning`},"git.color.untracked":{kind:`literal`,value:`accent`},"git.color.conflicts":{kind:`literal`,value:`error`},"git.color.ahead":{kind:`literal`,value:`success`},"git.color.behind":{kind:`literal`,value:`warning`},"git.color.stash":{kind:`literal`,value:`accent`},"git.detail":{kind:`state`,key:`git-detail`,default:`collapsed`},"git.prNumber":{kind:`input`,path:`git.prNumber`,type:`number`,default:0},"git.prState":{kind:`input`,path:`git.prState`,default:``},"git.prUrl":{kind:`input`,path:`git.prUrl`,default:``},"git.prError":{kind:`input`,path:`git.prError`,default:``},"cache.expiresAt":{kind:`input`,path:`cache.expiresAt`,type:`number`,default:0},"session.cost":{kind:`input`,path:`session.cost`,type:`number`,default:0},"session.tokens":{kind:`input`,path:`session.tokens`,type:`number`,default:0},"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:XE},model:{description:`The active model's display name.`,template:`✱ {{ formatModelName .model.display_name }}`,when:`{{ ne .model.display_name "" }}`},sessionId:{description:`The session id, truncated to 8 characters.`,template:`⌗{{ trunc 8 .session.id }}`,when:`{{ ne .session.id "" }}`},version:{description:`The Claude Code version reported in the hook payload.`,template:`◈ v{{ .version }}`,when:`{{ ne .version "" }}`},tmux:{description:`The tmux session name; hidden when not inside tmux.`,template:`tmux:{{ .tmux.session | default "none" }}`,when:`{{ ne .tmux.session "" }}`},host:{description:`user@host on a warning background, shown only over SSH.`,template:`⇄ {{ .host.user | default "?" }}@{{ .host.name | default "?" }}`,bg:`warning`,when:`{{ .host.ssh }}`},gitaculous:{description:`The git state: a summary (branch, ahead/behind, S/U/? flags) that the arrow at its right edge expands to every fact — repo, in-progress operation, sha, upstream ±, stash count, time since the last commit.`,template:`{{ if eq .git.detail "expanded" }}{{ template "gitExpanded" . }}{{ else }}{{ template "gitCollapsed" . }}{{ end }} {{ action "gitDetail" "▸" "◂" }}`,fg:`{{ readableOn (mix (color "foreground") (bgOf) 60) (bgOf) 3 }}`,when:`{{ ne .git.branch "" }}`},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:lb(``).template},themeSwitcher:{description:"`◀ <theme> ▶`: the theme the bar is wearing; ◀ and ▶ switch this session to the previous or next theme, wrapping at the ends.",template:`{{ carousel "stepTheme" 0 }}`},session:{description:`This session's cost and token total, with a budget warning once a budget is configured.`,template:`§ {{ template "formatCost" .session.cost }} ({{ template "formatTokens" .session.tokens }}){{ template "budgetStatus" (dict "cost" .session.cost "budget" .session.budget.amount "warn" .session.budget.warningThreshold) }}`},today:{description:`Today's cost and tokens across every session, with a budget warning once a budget is configured.`,template:`☉ {{ template "formatCost" .today.cost }} ({{ template "formatTokens" .today.tokens }}){{ template "budgetStatus" (dict "cost" .today.cost "budget" .today.budget.amount "warn" .today.budget.warningThreshold) }}`},block:{description:`The 5-hour rate-limit block: percent used and time to reset, heating to warning then error.`,template:`◱ {{ round .block.nativeUtilization }}% ({{ template "formatResetCountdown" .block.resetsAt }})`,bg:`{{ ramp (round .block.nativeUtilization) "step" 0 (tint) .block.budget.heatThreshold "warning" .block.budget.warningThreshold "error" }}`,when:`{{ gt .block.resetsAt 0 }}`},weekly:{description:`The weekly rate-limit quota: percent used and time to reset, heating to warning then error.`,template:`◑ {{ round .weekly.percentage }}% ({{ template "formatResetCountdown" .weekly.resetsAt }})`,bg:`{{ ramp (round .weekly.percentage) "step" 0 (tint) .weekly.budget.heatThreshold "warning" .weekly.budget.warningThreshold "error" }}`,when:`{{ gt .weekly.resetsAt 0 }}`},burnrate:{description:`Spend per hour, with the projected time to the 5-hour and weekly limits.`,template:`⚡ {{ template "formatRate" .burn.costPerHour }} · {{ template "formatEta" .block.etaMinutes }} to 5h · {{ template "formatEta" .weekly.etaMinutes }} to wk`,bg:`{{ ramp .block.etaMinutes "step" -1 (tint) 0 "error" .burn.eta.errorMinutes "warning" .burn.eta.warnMinutes (tint) }}`,when:`{{ or (gt .block.resetsAt 0) (gt .weekly.resetsAt 0) }}`},speed:{description:`Token throughput for the latest exchange: output, input, and total.`,template:`⇅ out {{ template "formatSpeed" .speed.output }} · in {{ template "formatSpeed" .speed.input }} · tot {{ template "formatSpeed" .speed.total }}`,when:`{{ gt .session.tokens 0 }}`},tokenSparkline:{description:`A sparkline of recent token throughput.`,template:`⚡ {{ sparkline .speed.history 24 }}`,when:`{{ ne .speed.history "" }}`},cacheTimer:{description:"Minutes until the prompt cache expires, or `cold` once it has.",template:`◴ {{ if le (minutesUntilReset .cache.expiresAt) 0 }}cold{{ else }}{{ minutesUntilReset .cache.expiresAt }}m{{ end }}`,fg:`{{ readableOn (color (cascade (minutesUntilReset .cache.expiresAt) "0:error" "9:warning" "21:foreground")) (bgOf) ${Qi} }}`,when:`{{ gt .cache.expiresAt 0 }}`},context:{description:`Context used, in tokens and percent remaining, heating as it fills.`,template:`◔ {{ formatInteger .context.totalTokens }} ({{ .context.contextLeft }}%)`,bg:`{{ ramp .context.contextLeft "step" 0 "error" 21 "warning" 41 (tint) }}`,when:`{{ gt .context.totalTokens 0 }}`},metrics:{description:`Response times, session duration, message count, and lines added/removed.`,template:`{{ if .metrics.lastResponseTime }} Δ {{ template "formatResponseTime" .metrics.lastResponseTime }}{{ end }}{{ if .metrics.responseTime }} ⧖ {{ template "formatResponseTime" .metrics.responseTime }}{{ end }}{{ if .metrics.sessionDuration }} ⧗ {{ template "formatDuration" .metrics.sessionDuration }}{{ end }}{{ if .metrics.messageCount }} ◆ {{ .metrics.messageCount }}{{ end }}{{ if .metrics.linesAdded }} + {{ .metrics.linesAdded }}{{ end }}{{ if .metrics.linesRemoved }} - {{ .metrics.linesRemoved }}{{ end }} `,when:`{{ or (gt .metrics.lastResponseTime 0.0) (gt .metrics.responseTime 0.0) (gt .metrics.sessionDuration 0.0) (gt .metrics.messageCount 0) (gt .metrics.linesAdded 0) (gt .metrics.linesRemoved 0) }}`},activity:{description:`What Claude is doing: the slash command that opened the turn, the in-progress todo, and the tools in flight.`,template:`{{ if .activity.command }} ⌘ {{ .activity.command }}{{ end }}{{ if .activity.todo.total }}{{ if .activity.todo.active }} ☐ {{ .activity.todo.position }}/{{ .activity.todo.total }} {{ abbrev 32 .activity.todo.active }}{{ else }} ☑ {{ .activity.todo.completed }}/{{ .activity.todo.total }}{{ end }}{{ end }}{{ if .activity.tool.running }} ⟳ {{ template "formatToolTally" .activity.tool.running }}{{ end }}{{ if .activity.tool.done }} ✓ {{ template "formatToolTally" .activity.tool.done }}{{ end }} `,when:`{{ or (ne .activity.command "") (gt .activity.todo.total 0) (ne .activity.tool.running "") (ne .activity.tool.done "") }}`}},root:{rows:{identity:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`host`},{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`}]},status:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`segment`,name:`context`},{kind:`segment`,name:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`activity`}]}}},actions:{...lb(``).actions,copyDir:{copy:`{{ .current_dir }}`},stepTheme:{set:`theme`,from:`themes`},gitDetail:{set:`git-detail`,cycle:[`collapsed`,`expanded`]}},looks:{none:{hueShift:0,chromaScale:1,lightnessScale:1,lightnessShift:0},vivid:{hueShift:0,chromaScale:1.35,lightnessScale:1,lightnessShift:0},muted:{hueShift:0,chromaScale:.55,lightnessScale:1,lightnessShift:0},dim:{hueShift:0,chromaScale:1,lightnessScale:.85,lightnessShift:0},bright:{hueShift:0,chromaScale:1,lightnessScale:1,lightnessShift:.08},inverted:{hueShift:0,chromaScale:1,lightnessScale:-1,lightnessShift:1}},presets:{default:{},compact:{root:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`segment`,name:`context`}]},globals:{padding:0}},verbose:{root:{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`segment`,name:`gitPr`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`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`}]}]}},zen:{root:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`directory`},{kind:`segment`,name:`context`}]},globals:{style:`plain`,look:`dim`}},git:{root:{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`host`},{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`segment`,name:`gitPr`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`segment`,name:`context`},{kind:`segment`,name:`activity`}]}]}},usage:{root:{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`segment`,name:`context`},{kind:`segment`,name:`cacheTimer`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`burnrate`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`session`},{kind:`segment`,name:`today`},{kind:`segment`,name:`speed`},{kind:`segment`,name:`tokenSparkline`}]}]}},dense:{root:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`host`},{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`segment`,name:`model`},{kind:`segment`,name:`context`},{kind:`segment`,name:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`session`},{kind:`segment`,name:`activity`}]},globals:{padding:0}}},editGlobals:{style:`plain`,default_separator:` | `},helpers:{gitPaint:`{{ fg (readableOn (color .color) (bgOf) ${Qi}) .text }}`,gitCollapsed:`{{ template "gitBranch" . }}{{ template "gitAheadBehind" . }}{{ template "gitFlags" . }}`,gitExpanded:`(git){{ template "gitRepo" . }}{{ template "gitOperation" . }}{{ template "gitSha" . }}{{ template "gitFlags" . }} {{ template "gitBranch" . }}{{ template "gitUpstream" . }}{{ template "gitStash" . }}{{ template "gitAge" . }}`,gitBranch:`⎇ {{ template "gitPaint" (dict "color" .git.color.branch "text" .git.branch) }}`,gitRepo:`{{ if ne .git.repoName "" }} {{ .git.repoName }}{{ end }}`,gitOperation:`{{ if ne .git.operation "" }} [{{ .git.operation }}]{{ end }}`,gitSha:`{{ if ne .git.sha "" }} {{ .git.sha }}{{ end }}`,gitFlags:`{{ if or (gt .git.staged 0) (gt .git.unstaged 0) (gt .git.untracked 0) (gt .git.conflicts 0) }} {{ if gt .git.staged 0 }}{{ template "gitPaint" (dict "color" .git.color.staged "text" "S") }}{{ end }}{{ if gt .git.unstaged 0 }}{{ template "gitPaint" (dict "color" .git.color.unstaged "text" "U") }}{{ end }}{{ if gt .git.untracked 0 }}{{ template "gitPaint" (dict "color" .git.color.untracked "text" "?") }}{{ end }}{{ if gt .git.conflicts 0 }}{{ template "gitPaint" (dict "color" .git.color.conflicts "text" (printf "!%v" .git.conflicts)) }}{{ end }}{{ end }}`,gitAheadBehind:`{{ if or (gt .git.ahead 0) (gt .git.behind 0) }} {{ if gt .git.ahead 0 }}{{ template "gitPaint" (dict "color" .git.color.ahead "text" (printf "+%v" .git.ahead)) }}{{ end }}{{ if and (gt .git.ahead 0) (gt .git.behind 0) }}/{{ end }}{{ if gt .git.behind 0 }}{{ template "gitPaint" (dict "color" .git.color.behind "text" (printf "-%v" .git.behind)) }}{{ end }}{{ end }}`,gitUpstream:`{{ if ne .git.upstream "" }} [{{ .git.upstream }}{{ template "gitAheadBehind" . }}]{{ end }}`,gitStash:`{{ if gt .git.stash 0 }} {{ template "gitPaint" (dict "color" .git.color.stash "text" (printf "(%v stashed)" .git.stash)) }}{{ end }}`,gitAge:`{{ if gt .git.timeSinceCommit 0 }} ◷ {{ template "formatTimeSince" .git.timeSinceCommit }}{{ end }}`,formatCost:'{{ if lt . 0.01 }}<$0.01{{ else }}${{ printf "%.2f" . }}{{ end }}',formatTokenCount:`{{ if ge . 1000000 }}{{ printf "%.1f" (divf . 1000000) }}M{{ else if ge . 1000 }}{{ printf "%.1f" (divf . 1000) }}K{{ else }}{{ . }}{{ end }}`,formatTokens:`{{ template "formatTokenCount" . }} tokens`,formatToolTally:`{{ $names := splitList "," . }}{{ range $i, $pair := $names }}{{ if lt $i 2 }}{{ if $i }} {{ end }}{{ $kv := splitList ":" $pair }}{{ index $kv 0 }}{{ if ne (index $kv 1) "1" }}×{{ index $kv 1 }}{{ end }}{{ end }}{{ end }}{{ if gt (len $names) 2 }} +{{ sub (len $names) 2 }}{{ end }}`,formatRate:`{{ if lt . 0 }}—/hr{{ else }}{{ template "formatCost" . }}/hr{{ end }}`,formatEta:`{{ if lt . 0 }}—{{ else }}{{ template "formatLongTimeRemaining" . }}{{ end }}`,formatSpeed:`{{ if lt . 0 }}—{{ else }}{{ template "formatTokenCount" (round .) }}/s{{ end }}`,formatTokenBreakdown:`{{ $first := true }}{{ if gt .input 0 }}{{ template "formatTokenCount" .input }} in{{ $first = false }}{{ end }}{{ if gt .output 0 }}{{ if not $first }} + {{ end }}{{ template "formatTokenCount" .output }} out{{ $first = false }}{{ end }}{{ if or (gt .cacheCreation 0) (gt .cacheRead 0) }}{{ if not $first }} + {{ end }}{{ template "formatTokenCount" (add .cacheCreation .cacheRead) }} cached{{ $first = false }}{{ end }}{{ if $first }}0 tokens{{ end }}`,budgetStatus:`{{ if or (le .budget 0) (lt .cost 0) }}{{ else }}{{ $pct := minf 100 (mulf (divf .cost .budget) 100) }}{{ $p := printf "%.0f%%" $pct }}{{ if ge $pct .warn }} !{{ $p }}{{ else }}{{ if ge $pct 50 }} +{{ $p }}{{ else }} {{ $p }}{{ end }}{{ end }}{{ end }}`,formatTimeSince:`{{ if lt . 60 }}{{ . }}s{{ else if lt . 3600 }}{{ div . 60 }}m{{ else if lt . 86400 }}{{ div . 3600 }}h{{ else if lt . 604800 }}{{ div . 86400 }}d{{ else }}{{ div . 604800 }}w{{ end }}`,formatDuration:`{{ if lt . 60 }}{{ printf "%.0f" . }}s{{ else if lt . 3600 }}{{ printf "%.0f" (divf . 60) }}m{{ else if lt . 86400 }}{{ printf "%.1f" (divf . 3600) }}h{{ else }}{{ printf "%.1f" (divf . 86400) }}d{{ end }}`,formatResponseTime:`{{ if lt . 60 }}{{ printf "%.1f" . }}s{{ else }}{{ printf "%.1f" (divf . 60) }}m{{ end }}`,formatLongTimeRemaining:`{{ if ge . 1440 }}{{ $d := div . 1440 }}{{ $h := div (mod . 1440) 60 }}{{ if gt $h 0 }}{{ $d }}d {{ $h }}h{{ else }}{{ $d }}d{{ end }}{{ else if ge . 60 }}{{ $h := div . 60 }}{{ $m := mod . 60 }}{{ if gt $m 0 }}{{ $h }}h {{ $m }}m{{ else }}{{ $h }}h{{ end }}{{ else }}{{ . }}m{{ end }}`,formatResetCountdown:`{{ template "formatLongTimeRemaining" (add 1 (minutesUntilReset .)) }}`}},QE=new Set([ZE.globals.palette,...Object.values(ZE.segments).map(e=>e.palette)].filter(e=>e!==void 0)),$E=ec(QS(`<default>`,JSON.stringify(ZE),QE),ZE),eD=gg($E.presets);function tD(e){return eD.includes(e)}function nD(e){if(!e)return 0;try{return o(e).mtimeMs}catch{return 0}}const rD=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 iD(e){return((...t)=>rD.run(()=>e(...t)))}const aD=iD(y),oD=iD(v),sD=iD(b);async function cD(e,t){return rD.run(async()=>{let n=null;try{n=await _(e,`r`);let{size:r,mtimeMs:i,ino:a}=await n.stat(),o=t!==void 0&&(a!==t.ino||r<t.offset),s=o||t===void 0?0:t.offset;if(s>=r)return J({buf:Buffer.alloc(0),start:s,size:r,mtimeMs:i,ino:a,reset:o});let c=Buffer.alloc(r-s),l=0;for(;l<c.length;){let{bytesRead:e}=await n.read(c,l,c.length-l,s+l);if(e===0)break;l+=e}return J({buf:l===c.length?c:c.subarray(0,l),start:s,size:r,mtimeMs:i,ino:a,reset:o})}catch(t){return t.code===`ENOENT`?Y:X(`readAppended ${e}: ${t instanceof Error?t.message:String(t)}`)}finally{await n?.close().catch(e=>{D(`transcript-fs: close failed: ${e instanceof Error?e.message:String(e)}`)})}})}async function lD(e,t){return rD.run(async()=>{let n=null;try{n=await _(e,`r`);let{size:r}=await n.stat(),i=Math.max(0,r-t),a=Buffer.alloc(r-i),o=0;for(;o<a.length;){let{bytesRead:e}=await n.read(a,o,a.length-o,i+o);if(e===0)break;o+=e}return J({buf:o===a.length?a:a.subarray(0,o),fromStart:i===0})}catch(t){return t.code===`ENOENT`?Y:X(`readTail ${e}: ${t instanceof Error?t.message:String(t)}`)}finally{await n?.close().catch(e=>{D(`transcript-fs: close failed: ${e instanceof Error?e.message:String(e)}`)})}})}const uD=/"(?:cache_read_input_tokens|cache_creation_input_tokens)":[1-9]/;function dD(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 fD(e){let t=await pD(e);return t.kind===`ok`?J(Math.floor((t.value+36e5)/1e3)):t}async function pD(e){for(let t of[65536,1048576]){let n=await lD(e,t);if(n.kind!==`ok`)return n;let r=mD(n.value.buf,n.value.fromStart);if(r!=null)return J(r);if(n.value.fromStart)return Y}return Y}function mD(e,t){let n=e.toString(`utf8`).split(`
|
|
176
|
+
`),r=+!t;for(let e=n.length-1;e>=r;e--){let t=n[e];if(!t||!uD.test(t))continue;let r=dD(t);if(r!=null)return r}return null}function hD(e,t,n){let r=_g(t(`preset`),e.globals.preset,e.presets),i=bg(e,r),a=t(`edit.mode`)===`open`?e.editGlobals:{};return{preset:r,presetCustomized:n(r),theme:gS(a.palette,t(`theme`),i.palette),look:ja(a.look,t(`look`),i.look,e.looks),style:Pa(a.style,t(`style`),i.style),progression:Ka(a.progression,t(`progression`),i.progression),separator:a.default_separator??i.default_separator,autoWrap:$a(a.autoWrap,t(`autoWrap`),i.autoWrap),padding:eo(a.padding,t(`padding`),i.padding),charset:Ra(a.charset,t(`charset`),i.charset),updateNotice:a.updateNotice??i.updateNotice??!0,colorCompatibility:Ha(a.colorCompatibility,t(`colorCompatibility`),i.colorCompatibility)}}function gD(e,t){return{style:e.style,separator:e.separator,colorCompatibility:e.colorCompatibility,wrap:e.autoWrap,padding:e.padding,charset:e.charset,width:t}}function _D(e){return{theme:e.theme,look:e.look,preset:e.preset,progression:e.progression}}function vD(e){return{preset:{effective:e.preset,customized:e.presetCustomized,bundled:tD(e.preset)},style:{effective:e.style},progression:{effective:e.progression},charset:{effective:e.charset},colorCompatibility:{effective:e.colorCompatibility},autoWrap:{effective:e.autoWrap},padding:{effective:e.padding}}}const yD=10*1e3;function bD(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 xD(e,t){if(!(t<60))return e*3600/t}function SD(e,t,n,r){let i=r-t;if(i<50||i>yD)return;let a=n-e;if(!(a<=0))return a*1e3/i}function CD(e){let{prev:t,cur:n}=e;if(t===void 0)return;let r=SD(t.input,t.atMs,n.input,n.atMs),i=SD(t.output,t.atMs,n.output,n.atMs),a=SD(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 wD(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>yD)continue;let o=SD(r.total,r.atMs,i.total,i.atMs);n.push(o??0)}if(n.length!==0)return n.join(`,`)}function TD(e){let t=e.indexOf(`.`);return t<0?e:e.slice(0,t)}function ED(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`,()=>TD(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 DD(e,t){let n=new Map;for(let[t,r]of Object.entries(e.variables))n.set(t,r);for(let[t,r]of Object.entries(e.segments))if(r.vars)for(let[e,i]of Object.entries(r.vars))n.set(`${t}.${e}`,i);let r=[],i=new Set,a=t=>$g(t,e.helpers).keys();for(let n of ts(yg(e,t).node)){if(n.when)for(let e of a(n.when))r.push(e);if(n.kind!==`segment`)continue;let t=e.segments[n.name];if(t){for(let e of[t.template,t.when,t.bg,t.fg])if(e)for(let t of a(e))r.push(t)}}let o=new Set;for(;r.length>0;){let e=r.pop();for(let t of kD(n,e)){if(i.has(t))continue;i.add(t);let e=n.get(t);if(e){if(e.kind===`input`)o.add(e.path);else if(e.kind===`template`)for(let t of a(e.template))r.push(t)}}}return o}function OD(e){let t=new Map;return n=>{let r=t.get(n);if(r!==void 0)return r;let i=DD(e,n);return t.set(n,i),i}}function kD(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 AD(e,t){for(let n of e)if(n===t||n.startsWith(t+`.`))return!0;return!1}function jD(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 MD(e,t,n,r,i,a,o){let s=e=>AD(r,e),c=(t.clock??(()=>new Date))().getTime(),l=(e,t,n)=>t?n().catch(t=>X(`${e}: ${String(t)}`)):Promise.resolve(Y),[u,d,f,p,m,h,g,_,v]=await Promise.all([l(`git`,s(`git`),()=>t.gitProvider.getGitInfo(n??e.workspace?.current_dir,jD(r),e.workspace?.project_dir)),l(`session`,s(`session.cost`)||s(`session.tokens`)||s(`burn`),()=>t.usageStore.getUsageInfo(e.session_id,e)),l(`today`,s(`today`),()=>t.usageStore.getTodayInfo(e)),l(`context`,s(`context`),()=>t.contextProvider.getContextInfo(e)),l(`metrics`,s(`metrics`)||s(`burn`),()=>t.metricsProvider.getMetricsInfo(e.session_id,e)),l(`activity`,s(`activity`),()=>t.activityProvider.getActivityInfo(e.session_id,e)),l(`tmux`,s(`tmux`),()=>t.tmuxService.getSessionId()),l(`cache`,s(`cache`),()=>fD(e.transcript_path)),l(`speed`,s(`speed`),()=>t.usageStore.observeSpeed(e.session_id,e.transcript_path,c))]),y=[],b=e=>{if(e.kind===`failed`){y.push(e.reason);return}return e.kind===`ok`?e.value:void 0},x=LD(u);y.push(...x.failures);let S=ED(a);y.push(...S.failures);let C=b(d),ee=b(f),te=b(p),w=b(m),ne=b(h),re=b(g),ie=b(_);for(let e of y)t.log(`warn`,`provider fetch failed: ${e}`);let T=e.rate_limits?.five_hour,E=e.rate_limits?.seven_day,ae=T?bD(T.used_percentage,T.resets_at,18e6,c):void 0,oe=E?bD(E.used_percentage,E.resets_at,6048e5,c):void 0,se=C?.session.cost,ce=w?.sessionDuration,le=s(`burn`)&&se!=null&&ce!=null?xD(se,ce):void 0,ue=b(v),de=ue===void 0?void 0:CD(ue),fe=ue===void 0?void 0:wD(ue),pe=de!==void 0||fe!==void 0?{...de,...fe!==void 0&&{history:fe}}:void 0,me=ID(process.env.HOME??process.env.USERPROFILE),he=e.workspace?{...e.workspace,current_dir:ID(e.workspace.current_dir)??``,project_dir:ID(e.workspace.project_dir)??``}:e.workspace,D=C===void 0?void 0:FD({cost:C.session.cost,tokens:C.session.tokens}),ge=ee===void 0?void 0:{cost:ee.cost,tokens:ee.tokens},_e=w===void 0?void 0:FD({lastResponseTime:w.lastResponseTime,responseTime:w.responseTime,sessionDuration:w.sessionDuration,messageCount:w.messageCount,linesAdded:w.linesAdded,linesRemoved:w.linesRemoved}),ve=ne===void 0?void 0:ND(ne);return{...e,...he!==void 0&&{workspace:he},...me!==void 0&&{home:me},...x.git!==void 0&&{git:x.git},...re!==void 0&&{tmux:{session:re}},host:S.host,...vD(i),history:t.history(e.session_id),unsaved:o,...D!==void 0&&{session:D},...ge!==void 0&&{today:ge},...le!==void 0&&{burn:{costPerHour:le}},...pe!==void 0&&{speed:pe},...s(`block`)&&T!==void 0&&{block:{nativeUtilization:T.used_percentage,resetsAt:T.resets_at,...ae!==void 0&&{etaMinutes:ae}}},...E!==void 0&&{weekly:{percentage:E.used_percentage,resetsAt:E.resets_at,...oe!==void 0&&{etaMinutes:oe}}},...ie!==void 0&&{cache:{expiresAt:ie}},...te!==void 0&&{context:{totalTokens:te.totalTokens,contextLeft:te.contextLeftPercentage}},..._e!==void 0&&{metrics:_e},...ve!==void 0&&{activity:ve}}}function ND(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=PD(e.running),i=PD(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 PD(e){return e.length===0?void 0:e.map(e=>`${e.name}:${e.count}`).join(`,`)}function FD(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 ID(e){return e===void 0||e.length===0||c.sep!==`\\`?e:e.replace(/\\/g,`/`)}function LD(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 RD={theme:e=>e.theme.kind===`decided`?e.theme.name:null,preset:e=>e.preset,look:e=>e.look.kind===`decided`?e.look.name:null,style:e=>e.style,progression:e=>e.progression,charset:e=>e.charset,colorCompatibility:e=>e.colorCompatibility,autoWrap:e=>e.autoWrap?qa:Ja,padding:e=>String(e.padding)},zD=Object.entries(dy),BD=new Set(fy.map(e=>e.sessionKey)),VD=()=>!1;function HD(e,t){return hD(e,e=>BD.has(e)?t(e):null,VD)}function UD(e,t,n,r){return e.flatMap(([e,i])=>{let a=RD[e](t);return a===null||a===RD[e](n(e))?[]:[{...i,value:a,target:r(i)}]})}function WD(e,t,n){return RD[n](HD(e,t))}function GD(e,t){let n=HD(e,t),r=hD(e,()=>null,VD),i=hD(e,e=>e===dy.preset.sessionKey?n.preset:null,VD),a=vg(e.presets,n.preset).globals??{};return UD(zD,n,e=>e===`preset`?r:i,e=>e.configKey in a?Sy(n.preset,e.configKey):e.configKey)}function KD(e,t){let n=HD(e,t),r=hD(e,e=>e===dy.preset.sessionKey?n.preset:null,VD);return{from:n.preset,globals:vg(e.presets,n.preset).globals??{},picks:UD(zD.filter(([e])=>e!==`preset`),n,()=>r,e=>e.configKey)}}function qD(e){return{sessionKeys:fy.filter(t=>t.configKey===e).map(e=>e.sessionKey),fileKeys:[e,...Ec(e)?eD.map(t=>Sy(t,e)):[]]}}const JD=Sa(),YD=new Set(JD),XD=new Set(Ma),ZD=e=>e?YD.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown theme "${e}" (have: ${JD.join(`, `)})`}:{ok:!1,reason:`theme name is required`},QD=e=>e?XD.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown style "${e}" (have: ${Ma.join(`, `)})`}:{ok:!1,reason:`style name is required`},$D=new Set([`1`,`true`]),eO=new Set([`0`,`false`]),tO=RE({style:QD,theme:ZD,"toolbar-expanded":e=>$D.has(e)?{ok:!0,value:`1`}:eO.has(e)?{ok:!0,value:``}:{ok:!1,reason:`expected boolean-ish (1, 0, true, false), got "${e}"`}});function nO(){return tO.listKeys()}function rO(e,t){return tO.register(e,t)}function iO(e,t){return tO.validate(e,t)}function aO(e){return tO.rangeParamsFor(e)}function oO(e,t){return`set`in e?`to`in e?[{key:e.set,spec:{kind:`allow-list`,allowed:[e.to]}}]:`from`in e?[{key:e.set,spec:{kind:`allow-list`,allowed:CS(e.from,t).members}}]:`int`in e?[{key:e.set,spec:{kind:`int`}}]:`cycle`in e?[{key:e.set,spec:{kind:`allow-list`,allowed:e.cycle}}]:[{key:e.set,spec:{kind:`range`,min:e.min,max:e.max}}]:[]}function sO(e){let t=new Set(tO.listBaselineKeys());return e.filter(e=>e.spec.kind!==`allow-list`||!t.has(e.key))}function cO(e,t,n){let r=hy.get(n);if(r!==void 0)return WD(e,t,r);let i=Object.values(e.variables).find(e=>e.kind===`state`&&e.key===n);return i?.kind===`state`?i.default??null:null}function lO(e){let t=xS(e);return sO(Object.values(e.actions).flatMap(e=>oO(e,t)))}function uO(e){return LE(lO(e))}const dO=`update.dismissed`,fO=`updateNotice`;function pO(e){return e.kind===`source`?e.newer.digest:Ww(e.newer)}const mO=e=>`${e.version} [${SE(e.digest)}]`;function hO(e){switch(e.kind){case`source`:return{headline:`Newer source`,newer:mO(e.newer),running:mO(e.running),act:`rebuild`,busy:`rebuilding…`,command:{bin:`pnpm`,args:[`build`],cwd:e.root}};case`release`:return{headline:`Newer release`,newer:Ww(e.newer),running:Ww(e.running),act:`upgrade`,busy:`upgrading…`,command:{bin:`pnpm`,args:[`dlx`,`${Kw}@${Ww(e.newer)}`,`install`]}}}}const gO={kind:`idle`},_O={kind:`running`};function vO(e,t,n){if(e===null)return[];let r=pO(e);if(!n.enabled||n.dismissed===r)return[];let i=hO(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(`
|
|
177
|
+
`),c=Pw([{verb:yw,args:[s]}]),l=t.kind===`running`?uE(`[${i.busy}]`,c):uE(`[${i.act}]`,Pw([{verb:kw,args:[n.sessionId]}]));return[{severity:lE,message:s,lines:[[uE(a,c),l,uE(`[dismiss]`,Pw([{verb:pw,args:[n.sessionId,dO,r]}])),uE(`[disable]`,Pw([{verb:bw,args:[n.sessionId,fO,`false`]}]))],...o.map(e=>[uE(e,c)])]}]}function yO(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 bO(e){switch(e.kind){case`current`:return[`info`,`build: current ${mO(e.stamp)}`];case`stale`:return[`info`,`build: stale — source ${mO(e.source)}, running ${mO(e.running)}`];case`not-source-checkout`:return[`info`,`build: not a source checkout`];case`unchecked`:return[`warn`,`build: unchecked: ${e.reason}`]}}function xO(e){switch(e.kind){case`current`:return[`info`,`release: current ${Ww(e.installed)}`];case`stale`:return[`info`,`release: stale — latest ${Ww(e.latest)}, running ${Ww(e.installed)}`];case`ahead`:return[`info`,`release: ahead — running ${Ww(e.installed)}, latest ${Ww(e.latest)}`];case`unchecked`:return[`warn`,`release: unchecked: ${e.reason}`]}}function SO(e){let t=null;return([n,r])=>{r!==t&&(t=r,e(n,r))}}const CO=e=>e.split(/\r?\n/).map(e=>e.trim()).filter(e=>e!==``).at(-1);function wO(e){let t=e.exitCode===null?``:` (exit ${e.exitCode})`,n=CO(e.stderr)??e.error??CO(e.stdout)??`no output`;return`${e.reason}${t}: ${n}`}function TO(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=gO,d=null,f=SO(s),p=SO(s),m=()=>yO(c,l);function h(){let e=m(),t=e===null?null:pO(e);(d===null?null:d.identity)!==t&&(d?.dispose(),d=t===null?null:{identity:t,dispose:rO(dO,{kind:`allow-list`,allowed:[t]})})}function g(){c=EE(t,wE),f(bO(c)),h()}async function _(){l=Jw(Bw,await qw(Kw,a,i)),p(xO(l)),h()}return{arm(){JE(fO,{kind:`allow-list`,allowed:[`false`]}),g(),setInterval(g,n).unref(),c.kind===`not-source-checkout`&&(_(),setInterval(()=>void _(),r).unref())},notice:e=>vO(m(),u,e),act(){let e=m();if(e===null)throw new $(`apply-update: nothing newer is known to apply`);let t=hO(e);if(u.kind===`running`)throw new $(`apply-update: already ${t.busy}`);u=_O,s(`info`,`apply-update: ${t.act} — ${t.command.bin} ${t.command.args?.join(` `)??``}`),Te({...t.command,category:`update.apply`,timeoutMs:6e5}).then(n=>{if(n.ok){u=gO,s(`info`,`apply-update: ${t.act} succeeded`),g(),o();return}let r=wO(n);u={kind:`failed`,identity:pO(e),reason:r},s(`error`,`apply-update: ${t.act} failed: ${r}`)})}}}var EO=class{static CACHE_DIR=O();static USAGE_CACHE_DIR=c.join(this.CACHE_DIR,`usage`);static LOCKS_DIR=c.join(this.CACHE_DIR,`locks`);static isLocked(e){let t=c.join(this.LOCKS_DIR,e);if(!r.existsSync(t))return!1;try{let n=r.readFileSync(t,`utf-8`),i=parseInt(n.trim(),10);if(isNaN(i))return D(`Invalid PID in lock file ${e}, removing stale lock`),r.unlinkSync(t),!1;try{return process.kill(i,0),!0}catch(n){return n.code===`ESRCH`?(D(`Removing stale lock file ${e} for dead process ${i}`),r.unlinkSync(t),!1):(D(`Error checking process ${i} for lock ${e}:`,n),!0)}}catch(t){return D(`Error reading lock file ${e}:`,t),!0}}static async acquireLock(e,t=5e3){await this.ensureCacheDirectories();let n=c.join(this.LOCKS_DIR,e),i=Date.now(),a=String(process.pid);for(;Date.now()-i<t;)try{return await r.promises.writeFile(n,a,{flag:`wx`}),D(`Lock acquired for ${e}`),!0}catch(e){if(e.code===`EEXIST`)await ae(50);else throw e}return D(`Failed to acquire lock for ${e} within ${t}ms`),!1}static async releaseLock(e){let t=c.join(this.LOCKS_DIR,e);try{await r.promises.unlink(t),D(`Lock released for ${e}`)}catch(t){t.code!==`ENOENT`&&D(`Error releasing lock for ${e}:`,t)}}static async ensureCacheDirectories(){try{await Promise.all([r.promises.mkdir(this.CACHE_DIR,{recursive:!0}),r.promises.mkdir(this.USAGE_CACHE_DIR,{recursive:!0}),r.promises.mkdir(this.LOCKS_DIR,{recursive:!0})])}catch(e){D(`Failed to create cache directories:`,e)}}static createProjectHash(e){return T(`md5`).update(e).digest(`hex`).substring(0,8)}static async getUsageCache(e,t){await this.ensureCacheDirectories();let n=c.join(this.USAGE_CACHE_DIR,`${e}.json`),i=`${e}.usage.lock`;for(let a=0;a<3;a++){if(this.isLocked(i)){D(`Cache for ${e} is locked, waiting...`),await ae(75);continue}try{let i=await r.promises.readFile(n,`utf-8`),a=JSON.parse(i);return!t||a.timestamp>=t?(D(`[CACHE-HIT] ${e} disk cache: found`),this.deserializeDates(a.data)):(D(`${e} cache outdated: cache=${a.timestamp}, latest=${t}`),null)}catch(t){if(t.code===`ENOENT`)return D(`No shared ${e} usage cache found`),null;D(`Attempt ${a+1} failed to read ${e} cache: ${t.message}. Retrying...`),await ae(75)}}return D(`Failed to read ${e} cache after 3 attempts.`),null}static deserializeDates(e){return Array.isArray(e)?e.map(e=>({...e,timestamp:new Date(e.timestamp)})):e}static async setUsageCache(e,t,n){let i=`${e}.usage.lock`;if(!await this.acquireLock(i)){D(`Could not acquire lock to set usage cache for ${e}`);return}try{await this.ensureCacheDirectories();let i=c.join(this.USAGE_CACHE_DIR,`${e}.json`),a=JSON.stringify({data:t,timestamp:n||Date.now()});await r.promises.writeFile(i,a,`utf-8`),D(`[CACHE-SET] ${e} disk cache stored`)}catch(t){D(`Failed to save ${e} usage cache:`,t)}finally{await this.releaseLock(i)}}};const DO={"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 OO=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 EO.getUsageCache(`pricing`,e)}static async saveDiskCache(e){await EO.setUsageCache(`pricing`,e)}static async fetchPricingData(){return new Promise(e=>{let t=new ee(this.GITHUB_PRICING_URL),n=E({hostname:t.hostname,path:t.pathname,headers:{"User-Agent":`cc-candybar`,"Cache-Control":`no-cache`},timeout:5e3},t=>{if(t.statusCode!==200){D(`HTTP ${t.statusCode}: ${t.statusMessage}`),e(null);return}let r=``,i=0;t.on(`data`,t=>{if(i+=t.length,i>1048576){D(`Response too large`),n.destroy(),e(null);return}r+=t}),t.on(`end`,()=>{try{let t=JSON.parse(r),n=t._meta,i={};for(let[e,n]of Object.entries(t))e!==`_meta`&&(i[e]=n);this.validatePricingData(i)?(D(`Fetched fresh pricing from GitHub for ${Object.keys(i).length} models`),D(`Pricing last updated: ${n?.updated||`unknown`}`),e(i)):(D(`Invalid pricing data structure`),e(null))}catch(t){D(`Failed to parse JSON:`,t),e(null)}}),t.on(`error`,t=>{D(`Response error:`,t),e(null)})});n.on(`error`,t=>{D(`Request error:`,t),e(null)}),n.on(`timeout`,()=>{D(`Request timeout`),n.destroy(),e(null)}),n.end()})}static async getCurrentPricing(){if(this.executionCache!==null)return D(`[CACHE-HIT] Pricing execution cache: ${Object.keys(this.executionCache).length} models`),this.executionCache;let e=await this.loadDiskCache();if(e)return D(`[CACHE-HIT] Pricing disk cache: ${Object.keys(e).length} models`),this.executionCache=e,D(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(e).length} models`),e;let t=await this.fetchPricingData();return t?(await this.saveDiskCache(t),D(`[CACHE-SET] Pricing disk cache stored: ${Object.keys(t).length} models`),this.executionCache=t,D(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(t).length} models`),t):(D(`[CACHE-FALLBACK] Using offline pricing data: ${Object.keys(DO).length} models`),this.executionCache=DO,D(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(DO).length} models`),DO)}static validatePricingData(e){if(!e||typeof e!=`object`)return!1;for(let[,t]of Object.entries(e)){if(!t||typeof t!=`object`)return!1;let e=t;if(typeof e.input!=`number`||typeof e.output!=`number`||typeof e.cache_read!=`number`)return!1}return!0}static async getModelPricing(e){if(this.modelPricingCache.has(e))return D(`[CACHE-HIT] Model pricing cache: ${e}`),this.modelPricingCache.get(e);let t=await this.getCurrentPricing(),n;return n=t[e]?t[e]:this.fuzzyMatchModel(e,t),this.modelPricingCache.set(e,n),D(`[CACHE-SET] Model pricing cache: ${e}`),n}static fuzzyMatchModel(e,t){let n=e.toLowerCase();for(let[e,r]of Object.entries(t))if(e.toLowerCase()===n)return r;for(let{pattern:e,fallback:r}of[{pattern:[`opus-4-6`,`claude-opus-4-6`],fallback:`claude-opus-4-6-20260205`},{pattern:[`opus-4-5`,`claude-opus-4-5`],fallback:`claude-opus-4-5-20251101`},{pattern:[`opus-4-1`,`claude-opus-4-1`],fallback:`claude-opus-4-1-20250805`},{pattern:[`opus-4`,`claude-opus-4`],fallback:`claude-opus-4-20250514`},{pattern:[`sonnet-4-6`,`sonnet-4.6`,`claude-sonnet-4-6`],fallback:`claude-sonnet-4-6`},{pattern:[`sonnet-4.5`,`4-5-sonnet`,`sonnet-4-5`],fallback:`claude-sonnet-4-5-20250929`},{pattern:[`sonnet-4`,`claude-sonnet-4`],fallback:`claude-sonnet-4-20250514`},{pattern:[`haiku-4.5`,`4-5-haiku`,`haiku-4-5`],fallback:`claude-haiku-4-5-20251001`},{pattern:[`haiku`],fallback:`claude-haiku-4-5-20251001`},{pattern:[`opus`],fallback:`claude-opus-4-20250514`},{pattern:[`sonnet`],fallback:`claude-sonnet-4-5-20250929`}])if(e.some(e=>n.includes(e))&&t[r])return t[r];return t[`claude-sonnet-4-5-20250929`]||{name:`${e} (Unknown Model)`,input:3,cache_write_5m:3.75,cache_write_1h:6,cache_read:.3,output:15}}static async calculateCostForEntry(e){let t=e.message?.usage;if(!t)return 0;let n=this.extractModelId(e),r=await this.getModelPricing(n),i=t.input_tokens||0,a=t.output_tokens||0,o=t.cache_creation_input_tokens||0,s=t.cache_read_input_tokens||0,c=i/1e6*r.input,l=a/1e6*r.output,u=s/1e6*r.cache_read,d=o/1e6*r.cache_write_5m;return c+l+d+u}static extractModelId(e){if(e.model&&typeof e.model==`string`)return e.model;let t=e.message;if(t?.model){let e=t.model;if(typeof e==`string`)return e;let n=e;return(typeof n?.id==`string`?n.id:null)||`claude-sonnet-4-5-20250929`}return e.model_id&&typeof e.model_id==`string`?e.model_id:`claude-sonnet-4-5-20250929`}};const kO=/<command-name>\s*([^<\s][^<]*?)\s*<\/command-name>/;function AO(e){if(typeof e==`string`)return kO.exec(e)?.[1]}function jO(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 MO(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=jO(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?AO(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 NO(){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 PO(e){let t=[];for(let n of e){let e=d(n,`projects`);if(a(e))try{let n=await aD(e,{withFileTypes:!0});for(let r of n)if(r.isDirectory()){let n=d(e,r.name);t.push(n)}}catch(t){D(`Failed to read projects directory ${e}:`,t)}}return t}async function FO(e,t,n){let r=[],i=d(t,e,`subagents`);try{let t=(await aD(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 oD(t,`utf-8`)).split(`
|
|
178
|
+
`)[0];n&&JSON.parse(n).sessionId===e&&r.push(t)}catch{D(`Failed to check agent file ${t}`)}}}catch(e){D(`Failed to read subagents directory ${i}:`,e)}return r}function IO(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 LO=new Map;async function RO(e){try{let t=await sD(e),n=t.size,r=LO.get(e);if(r&&r.mtime===t.mtimeMs&&r.size===n)return D(`[parse-cache] hit ${e}`),LO.delete(e),LO.set(e,r),r.entries;let i;return n>1048576?(D(`Using streaming parser for large file ${e} (${Math.round(n/1024)}KB)`),i=await UO(e)):i=await VO(e),D(`Parsed ${i.length} entries from ${e}`),n>5242880?i:(LO.delete(e),LO.size>=16&&LO.delete(LO.keys().next().value),LO.set(e,{mtime:t.mtimeMs,size:n,entries:i}),i)}catch(t){if(t.code===`ENOENT`)return D(`Transcript not present yet: ${e}`),[];throw t}}function zO(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:MO(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 BO(e){let t=[];for(let n of e.split(`
|
|
179
|
+
`))if(n.trim())try{let e=zO(JSON.parse(n));e&&t.push(e)}catch(e){D(`Failed to parse JSONL line: ${e}`);continue}return t}async function VO(e){return BO(await oD(e,`utf-8`))}async function HO(e,t){let n=await cD(e,t===void 0?void 0:{offset:t.offset,ino:t.ino});if(n.kind!==`ok`)return n;let{buf:r,start:i,mtimeMs:a,ino:o,reset:s}=n.value,c=r.lastIndexOf(10);return J(c<0?{entries:[],cursor:{offset:i,mtimeMs:a,ino:o},reset:s}:{entries:BO(r.subarray(0,c+1).toString(`utf-8`)),cursor:{offset:i+c+1,mtimeMs:a,ino:o},reset:s})}async function UO(e){return new Promise((t,n)=>{let r=[],a=i(e,{encoding:`utf8`}),o=oe({input:a,crlfDelay:1/0});o.on(`line`,e=>{let t=e.trim();if(t)try{let e=zO(JSON.parse(t));e&&r.push(e)}catch(e){D(`Failed to parse JSONL line: ${e}`)}}),o.on(`close`,()=>{t(r)}),o.on(`error`,t=>{D(`Streaming parser error for ${e}:`,t),n(t)}),a.on(`error`,t=>{D(`File stream error for ${e}:`,t),n(t)})})}var WO=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 GO(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 KO={cost:0,input:0,output:0,cacheCreation:0,cacheRead:0},qO={cost:null,calculatedCost:null,officialCost:null,tokens:null,tokenBreakdown:null};function JO(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function YO(){let e=new Date;return e.setHours(0,0,0,0),e.setDate(e.getDate()-1),e.getTime()}function XO(){return{input:0,output:0,cacheCreation:0,cacheRead:0}}async function ZO(e,t,n,r){let i=JO(new Date(YO())),a=e&&!t?e:void 0,o=a?.entries??0,s=a?.cost??0,c=a?{...a.breakdown}:XO(),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 OO.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=JO(new Date(e.timestamp));if(r<i)continue;let a=l.get(r)??{...KO};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 QO(e){let t=0,n=0,r=XO(),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)??{...KO};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:qO,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 $O(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 ek=class{entries=new Map;flight=new WO;seeded=new Map;speedRings=new Map;speedFlight=new WO;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:qO,i=t?.cost?.total_cost_usd??null;return J({session:{...r,cost:i??r.cost,officialCost:i}})}async getTodayInfo(e){let t=JO(new Date);try{await this.ensureSeeded(t)}catch(e){return X(`usage seed: ${e instanceof Error?e.message:String(e)}`)}let n=await this.ingest(e?.session_id??``,e?.transcript_path);if(n.kind===`failed`)return n;let r={...KO},i=!1;for(let e of this.entries.values()){i||=e.days.has(t);let n=e.days.get(t)??KO;r.cost+=n.cost,r.input+=n.input,r.output+=n.output,r.cacheCreation+=n.cacheCreation,r.cacheRead+=n.cacheRead}return i?J({cost:r.cost,tokens:r.input+r.output+r.cacheCreation+r.cacheRead,tokenBreakdown:{input:r.input,output:r.output,cacheCreation:r.cacheCreation,cacheRead:r.cacheRead},date:t}):Y}async observeSpeed(e,t,n){let r=nD(t);return this.speedFlight.run(`${e}:${r}`,async()=>{let i=await this.ingest(e,t,r);if(i.kind===`failed`)return i;let a=GO(i.kind===`ok`?i.value.sessionInfo.tokenBreakdown:null,n),o=this.speedRings.get(e)??[],s;for(let e of o)e.atMs<a.atMs&&(s===void 0||e.atMs>s.atMs)&&(s=e);return o.push(a),o.sort((e,t)=>e.atMs-t.atMs),o.length>64&&o.shift(),this.speedRings.set(e,o),J({...s!==void 0&&{prev:s},cur:a,samples:[...o]})})}async ingest(e,t,n){if(!e)return Y;let r=n??nD(t),i=this.entries.get(e);if(i&&r!==0&&i.transcriptMtime===r)return i.lastSeenAt=Date.now(),this.entries.delete(e),this.entries.set(e,i),this.hits++,J(i);if(!t)return i?J(i):Y;this.misses++;let a;try{a=await this.flight.run(`${e}:${r}`,()=>this.refold(e,t,this.entries.get(e)))}catch(t){return X(`usage refold (${e}): ${t instanceof Error?t.message:String(t)}`)}if(a.kind!==`ok`)return a;let o={files:a.value.files,sessionInfo:a.value.sessionInfo,days:a.value.days,transcriptMtime:a.value.mainMtime,transcriptPath:t,lastSeenAt:Date.now()};return this.entries.delete(e),this.entries.set(e,o),this.evictIfNeeded(),J(o)}async refold(e,t,n){let r=await FO(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 HO(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 ZO(r,l,s,c)),e===t&&(a=c.mtimeMs)}return J({files:i,...QO(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=YO(),n=await PO(NO()),r=[];for(let e of n){let n;try{n=await aD(e)}catch{continue}for(let i of n){if(!i.endsWith(`.jsonl`))continue;let n=d(e,i),a;try{a=(await sD(n)).mtimeMs}catch{continue}a<t||r.push({sessionId:i.slice(0,-6),path:n,mtime:a})}}await $O(r,8,async e=>{let t=await this.ingest(e.sessionId,e.path,e.mtime);t.kind===`failed`&&Q(`warn`,`usageStore seed: ${t.reason}`)}),this.seeds++,Q(`info`,`usageStore seed sessions=${r.length}`)}sweepStale(){let e=Date.now(),t=0;for(let[n,r]of this.entries)e-r.lastSeenAt>this.staleAgeMs&&(this.entries.delete(n),this.speedRings.delete(n),t++);return t>0&&(this.sweeps++,Q(`info`,`usageStore sweep dropped=${t}`)),t}evictIfNeeded(){for(;this.entries.size>this.maxEntries;){let e=this.entries.keys().next().value;if(e===void 0)break;this.entries.delete(e),this.speedRings.delete(e),Q(`info`,`usageStore evict ${e}`)}}close(){this.sweepTimer&&=(clearInterval(this.sweepTimer),null),this.entries.clear(),this.seeded.clear(),this.speedRings.clear()}};function tk(e,t){return e===void 0?!0:e.evaluate(t).map(e=>e.plain).join(``)!==`false`}function nk(e,t){let n=H.fromFragments(e);return n.end=``,n.noWrap=!0,t!==void 0&&!t.isNull&&(n.style=t),n}function rk(e,t,n){e.cellLength>t?e.truncate(t,{mode:n.truncate,marker:n.truncateMarker}):e.cellLength<t&&e.align(n.justify,t)}function ik({text:e,trail:t}){if(t===void 0)return e;let n=nk([e,t]);return n.style=e.style,n}function ak(e,t){let{width:n,justify:r,truncate:i,truncateMarker:a=`…`,baseStyle:o,padding:s,trail:c=[]}=t;if(e.length===0)return[];let l=nk(e,o).pad(s),u=c.length===0?{}:{trail:nk([...c,new H(` `.repeat(s))],o)};if(n===`auto`)return[{text:l,...u}];let d={justify:r,truncate:i,truncateMarker:a};return n===`fill`?[{text:l,fill:d,...u}]:(rk(l,n,d),[{text:l,...u}])}const ok=RegExp(`\\x1b\\[[0-9;]*m|${Jr.source}`,`g`);function sk(e){return k(e.replace(ok,``))}function ck(e,t){let n=e.map(ik),r=[];if(e.forEach(({fill:e},t)=>{e!==void 0&&r.push({at:t,how:e})}),r.length===0||!Number.isFinite(t.width))return n;let i=aE(n,t).split(`
|
|
180
|
+
`);if(i.length>1)return n;let a=Math.max(0,t.width-sk(i[0]??``)),o=Math.floor(a/r.length),s=a-o*r.length;return r.forEach(({at:t,how:i},a)=>{let c=o+(a===r.length-1?s:0),{text:l}=e[t];rk(l,l.cellLength+c,i),n[t]=ik(e[t])}),n}function lk(e,t){let n=[],r=[],i=()=>{if(!r.length)return;let e=uk(r,t);e.plain.length>0&&n.push(e),r=[]};for(let a of e)if(fk(a.style).link){i();let e=uk([a],t);e.plain.length>0&&n.push(e)}else r.push(a);return i(),n}function uk(e,t){let n=t!==void 0&&!t.isNull?e.map(e=>dk(e,t)):e,r=H.fromFragments(n);return r.end=``,r.noWrap=!0,n.length===1?r.style=n[0].style:t!==void 0&&!t.isNull&&(r.style=t),r}function dk(e,t){let n=e.copy();return n.style=t.add(fk(e.style)),n}function fk(e){return e instanceof B?e:B.parse(e)}var pk=class extends Error{constructor(e,t,n){super(`Invalid ${t} color ${JSON.stringify(e)}: ${n}`),this.name=`ColorSpecError`}};function mk(e,t,n,r,i){let{palette:a,tint:o}=e,s=hk(n,i),c=s===void 0?o:gk(a,s,`bg`);e.bg=c;let l=hk(r,i),u=l===void 0?$i(a,c,t):gk(a,l,`fg`);return new B({bgcolor:P.fromRgba(c),color:P.fromRgba(u)})}function hk(e,t){if(e!==void 0)return e.evaluate(t).map(e=>e.plain).join(``)}function gk(e,t,n){try{return Vn(e,t)}catch(e){throw e instanceof Rn?new pk(t,n,e.message):e}}function _k(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,vk(e,t,o,n,r,i));return i}function vk(e,t,n,r,i,a){if(`set`in n){let e=r.get(n.set)??n.set;if(`to`in n)return{kind:`set-literal`,key:n.set,value:n.to,stateVar:e};if(`from`in n){let t=CS(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=py.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=CS(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=CS(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:bk(e,n.copy,t)};if(`open`in n)return{kind:`open`,target:bk(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`};if(`save`in n)return{kind:`save`};if(`preset`in n)return n.preset===`save`?{kind:`preset-save`}:{kind:`preset-delete`,name:bk(e,n.name,t)};let[o,...s]=n.do.map(e=>{let n=a.get(e);if(n===void 0)throw Error(`action "${t}" fires "${e}", which is not declared in this config`);return n});return{kind:`do`,head:o,rest:s}}function yk(e){return e.kind===`do`?yk(e.head):e}function bk(e,t,n){try{return e(t)}catch(e){throw Error(`Template parse error in actions.${n}: ${e.message}`,{cause:e})}}function xk(e,t){return e.has(t)?f_(e.read(t)):``}function Sk(e,t){return e.evaluate(t).map(e=>e.plain).join(``)}function Ck(e,t,n,r){let i=new H(e,{style:B.combine([r,new B({link:t,bold:n})])});return i.noWrap=!0,i.end=``,i}function wk(e,t){return Math.max(e.members.indexOf(xk(t,e.stateVar)),0)}function Tk(e,t,n,r,i){switch(e.kind){case`set-literal`:{let t=xk(r,e.stateVar);return{effects:[{verb:pw,args:[i,e.key,e.value]}],active:t===e.value}}case`set-option`:{let a=n??t,o=xk(r,e.stateVar);return{effects:[{verb:pw,args:[i,e.key,a]}],active:o===a}}case`set-int`:{let a=n??t,o=xk(r,e.stateVar);return{effects:[{verb:pw,args:[i,e.key,a]}],active:o===a}}case`set-cycle`:{let t=e.members[(wk(e,r)+1)%e.members.length];return{effects:[{verb:pw,args:[i,e.key,t]}],active:!1}}case`set-bounded`:return{effects:[{verb:mw,args:[i,e.key,String(e.by)]}],active:!1};case`copy`:return{effects:[{verb:hw,args:[Sk(e.text,rv(r))]}],active:!1};case`open`:return{effects:[{verb:gw,args:[Sk(e.target,rv(r))]}],active:!1};case`persist-literal`:{let t=xk(r,e.stateVar);return{effects:[{verb:bw,args:[i,e.key,e.value]}],active:t===e.value}}case`persist-option`:{let a=n??t,o=xk(r,e.stateVar);return{effects:[{verb:bw,args:[i,e.key,a]}],active:o===a}}case`persist-cycle`:{let t=e.members[(wk(e,r)+1)%e.members.length];return{effects:[{verb:bw,args:[i,e.key,t]}],active:!1}}case`persist-bounded`:return{effects:[{verb:xw,args:[i,e.key,String(e.by)]}],active:!1};case`reset`:return{effects:[{verb:Tw,args:[i,e.key]}],active:!1};case`undo`:return{effects:[{verb:Dw,args:[i]}],active:!1};case`redo`:return{effects:[{verb:Ow,args:[i]}],active:!1};case`save`:return{effects:[{verb:Sw,args:[i]}],active:!1};case`preset-save`:return{effects:[{verb:Cw,args:[i]}],active:!1};case`preset-delete`:return{effects:[{verb:ww,args:[i,Sk(e.name,rv(r))]}],active:!1};case`doctor-run`:return{effects:[{verb:Aw,args:[i]}],active:!1};case`doctor-fix`:return{effects:[{verb:jw,args:[i,e.check]}],active:!1};case`layout-op`:return{effects:[{verb:Ew,args:[i,e.key,DE(e.op)]}],active:!1};case`do`:{let a=Tk(e.head,t,n,r,i);return{effects:[...a.effects,...e.rest.flatMap(e=>Tk(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:Ew,args:[i,e.key,DE(r)]}],active:!1}}}}function Ek(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:oc(`action "${e}"`,n,t.members.length,wk(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 Dk(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}=Ek(e,yk(r),t,i),{effects:s,active:c}=Tk(r,a,o,i,xk(i,`session.id`));return Ck(a,Pw(s),c)}function Ok(e){return{action:{fn:(t,...n)=>Dk(t,n,e),argTypes:[`string`,`string`],returnType:`T`}}}function kk(e,t){return Ck(`✕`,Pw([{verb:pw,args:[xk(e,`session.id`),t,rc]}]),!1)}function Ak(e,t,n){return new B({bgcolor:P.fromRgba(t),color:P.fromRgba($i(e,t,n))})}function jk(e,t,n){return Ak(e.palette,fa(e.palette,e.disclosure,[t],n),n)}function Mk(e,t,n,r,i){return r===void 0?n=>jk(e,{...n,distribution:t},i):(e,t)=>Nk(r(t,n),i)}function Nk(e,t){let n=Ui(e,`background`);return new B({bgcolor:P.fromRgba(n),color:P.fromRgba(Jn(Ui(e,`primary`),n,4.5,t))})}function Pk(e){return{current:null,drawnAt:e}}function Fk(e,t,n,r,i,a){let o={segName:t,placementId:n,palette:r,disclosure:i,tint:a,bg:void 0,drops:[]};return e.current=o,o}function Ik(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 Lk(e){return new H(e).cellLength}function Rk(e){return Math.max(1,e.width-e.chromeCols-2*e.padding)}function zk(e){return Math.max(1,Rk(e)-(Lk(`✕`)+2*e.padding+e.seamCols))}function Bk(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 Vk(e,t){let n=[];for(let t of e)n.length>0&&n.push(new H(` `)),n.push(t);let r=H.fromFragments(n);return r.noWrap=t,r.end=``,r}function Hk(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 Uk(e,t,n){let r=e.compiled.get(t),i=r&&yk(r);if(!i||i.kind!==`set-option`&&i.kind!==`persist-option`&&i.kind!==`layout-op-option`)throw Error(`${n} references action "${t}" which must be a set-option, persist-option, or layout-op-option action ({ set, from }, { persist, from }, or { persist, insertSegmentFrom, anchor, relation }), got ${i?`a ${i.kind} action`:`no such action`}`);return i}function Wk(e,t,n,r,i,a,o){let s=Uk(a,e,`picker`),c=a.compiled.get(e),l=a.store,u=xk(l,`session.id`),d=`stateVar`in s?xk(l,s.stateVar):void 0,f=s.options.map(Lk),p=i?Rk(a):1/0,m=Lk(`✕`)+1,h=Lk(`←`)+1+Lk(`→`)+1,g=Bk(f,p,m),_=g.length>1?Bk(f,p,m+h):g,v=parseInt(xk(l,t.stateVar),10),y=Number.isInteger(v)?Math.max(0,Math.min(v,_.length-1)):0,b=_[y]??[],x=e=>Pw([{verb:pw,args:[u,t.key,String(e)]}]),S=n.flatMap(([e,t])=>[e,t]),C=Pw([{verb:pw,args:[u,...S]}]),ee=r?[{verb:pw,args:[u,...S]}]:[],te=e=>Pw([...Tk(c,e,e,l,u).effects,...ee]),w=[Ck(`✕`,C,!1)];y>0&&w.push(Ck(`←`,x(y-1),!1));for(let e of b){let t=s.options[e];w.push(Ck(t,te(t),t===d,o({index:e,count:s.options.length},t)))}return y<_.length-1&&w.push(Ck(`→`,x(y+1),!1)),Vk(w,i)}function Gk(e,t){return{picker:{fn:(n,r,i,a)=>{let o=Hk(e,r,`set-int`,`an int action ({ set, int: true })`);return Wk(n,{key:o.key,stateVar:o.stateVar},[[o.key,`-1`]],i===!0,a===!0,e,Mk(Ik(t,`{{ picker }}`),Li(void 0),e.basePalette,Uk(e,n,`picker`).paletteOf,t.drawnAt()))},argTypes:[`string`,`string`,`bool`,`bool`],returnType:`T`}}}function Kk(e,t,n,r,i){let a=Math.min(Math.floor((t-1)/2),i),o=n,s=0;for(;s<a;){let t=o+Lk(e(-(s+1)))+1+Lk(e(s+1))+1;if(t>r)break;o=t,s+=1}return s}function qk(e,t,n,r,i){if(!(`stateVar`in t))throw Error(`carousel references action "${e}", which inserts a segment and holds no current value to centre on — a carousel needs a { set, from } or { persist, from } action`);let a=n.store;if(!a.has(t.stateVar))throw Error(`carousel references action "${e}", whose key "${t.stateVar}" no variable reads back, so there is no current value to centre on — declare { kind: "state", key: "${t.stateVar}" } among the variables`);let o=n.compiled.get(e),s=xk(a,`session.id`),{options:c}=t,l=c.length,u=xk(a,t.stateVar),d=Math.max(c.indexOf(u),0),f=e=>((d+e)%l+l)%l,p=e=>c[f(e)],m=new Map,h=e=>{let t=m.get(e);if(t!==void 0)return t;let n=Pw(Tk(o,p(e),p(e),a,s).effects);return m.set(e,n),n},g=e=>Ck(p(e),h(e),p(e)===u,r({index:f(e),count:l},p(e))),_=Kk(p,l,Lk(`◀`)+1+Lk(p(0))+1+Lk(`▶`),zk(n),i),v=e=>Array.from({length:_},(t,n)=>g(e*(n+1)));return Vk([...v(-1).reverse(),Ck(`◀`,h(-1),!1),g(0),Ck(`▶`,h(1),!1),...v(1)],!0)}function Jk(e,t){return{carousel:{fn:(n,r,...i)=>{if(i.length>0)throw Error(`carousel "${n}": takes at most one neighbours count after the action name, got ${1+i.length}`);if(r!==void 0&&!(Number.isInteger(r)&&r>=0))throw Error(`carousel "${n}": neighbours must be a whole number ≥ 0 (0 shows only ◀ CURRENT ▶), got ${String(r)}`);let a=r??1/0,o=Uk(e,n,`carousel`);return qk(n,o,e,Mk(Ik(t,`{{ carousel }}`),Li(void 0),e.basePalette,o.paletteOf,t.drawnAt()),a)},argTypes:[`string`,`float`],returnType:`T`}}}const Yk=[`~/code`,`main`,`opus`,`42%`,`5m`,`$1.20`];function Xk(e,t,n){let r=aa(e,{hue:Ai,depth:0},n);return[U(t).map((t,n)=>({text:Yk[n%Yk.length],colour:Wi(e,t)})),[{text:`▾ open`,colour:r.state},{text:`menu`,colour:r.plane}],[{text:`warn`,colour:Ui(e,`warning`)},{text:`error`,colour:Ui(e,`error`)}]]}function Zk(e,t,n,r){let i=Xk(e,t,n).flatMap((t,r)=>t.map(({text:t,colour:i},a)=>({gap:r>0&&a===0?` `:``,cell:new H(` ${t} `,{style:Ak(e,i,n)})}))),a=[],o=0;for(let{gap:e,cell:t}of i){if(o+=e.length+t.cellLength,o>r)break;e!==``&&a.push(new H(e)),a.push(t)}let s=H.fromFragments(a);return s.noWrap=!0,s.end=``,s}function Qk(e,t){return{themePreview:{fn:()=>Zk(e.palette,e.progression,t.drawnAt(),zk(e)),argTypes:[],returnType:`T`}}}const $k=e=>e.slice(e.lastIndexOf(`.`)+1),eA=(e,t)=>{let n=new H($k(e));return n.truncate(t,{marker:`…`}),n.plain};function tA(e,t){let n=e.map(e=>e.map(({name:e})=>Lk($k(e)))),r=e=>n.every(n=>n.reduce((t,n)=>t+Math.min(n,e)+2,0)<=t),i=Math.max(1,...n.flat());for(;i>1&&!r(i);)--i;return i}function nA(e,t,n,r){let i=tA(e,r),a=e.map(e=>{let a=[],o=0;for(let{name:s,address:c,palette:l}of e){let e=new H(` ${eA(s,i)} `,{style:Ak(l,ga(l,{kind:`bar`,progression:t,address:c},n).tint,n)});if(o+=e.cellLength,o>r)break;a.push(e)}return a}),o=H.fromFragments(a.flatMap((e,t)=>t===0?e:[new H(`
|
|
181
|
+
`),...e]));return o.noWrap=!0,o.end=``,o}function rA(e,t){return{layoutPreview:{fn:()=>nA(e.layout(),e.progression,t.drawnAt(),zk(e)),argTypes:[],returnType:`T`}}}function iA(e,t,n,r){let i=Ik(r.activeSegment,`{{ menu }}`),a=r.action,o=og(i.placementId,e,n.key),s=lg(o),c=ag(e),l=xk(a.store,o)===c,u=xk(a.store,`session.id`),d=l?rc:c,f=Ck(oc(`{{ menu "${e}" }}`,t,2,+!!l),Pw([{verb:pw,args:[u,o,d,s,`0`]}]),!1);return i.drops.push(...l?[Wk(e,{key:s,stateVar:s},[[o,rc],[s,`0`]],n.closeOnPick,n.paged,a,Mk(i,n.distribution,a.basePalette,Uk(a,e,`menu`).paletteOf,r.activeSegment.drawnAt()))]:[]),f}const aA=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function oA(e,t){let n=t[t.length-1],r=aA(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:pg(r??{})}}function sA(e){return{menu:{fn:(t,...n)=>{let{displays:r,options:i}=oA(t,n);return iA(t,r,i,e)},argTypes:[`string`,`value`],returnType:`T`}}}function cA(e){let{value:t,max:n,width:r,filled:i,empty:a,colourAt:o}=e,s=lA(t,n,r),c=[];for(let e=0;e<r;e++){let t=e<s,l=t&&o!==void 0?o(e*n/r):void 0;c.push(new H(t?i:a,{style:l===void 0?void 0:new B({color:l})}))}let l=H.fromFragments(c);return l.end=``,l.noWrap=!0,l}function lA(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 uA(e){let t={fn:(()=>{let t=Ik(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:(()=>Ik(e,`{{ tint }}`).tint.hex),argTypes:[],returnType:`string`},r=R_(()=>Ik(e,`{{ color }} / {{ ramp }} / {{ gauge }}`).palette),i={fn:((e,t,n,i,a,o,...s)=>cA({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,...dA(s)))})),argTypes:[`float`,`float`,`int`,`string`,`string`,`string`,`string`],returnType:`T`};return{...r,bgOf:t,tint:n,gauge:i}}function dA(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 fA(e){let t=[],n=[];for(let r of e){if(!r.contains(`
|
|
182
182
|
`)){n.push(r);continue}let e=r.split(`
|
|
183
|
-
`);n.push(e[0]);for(let r=1;r<e.length;r++)t.push(n),n=[e[r]]}return t.push(n),t}const
|
|
184
|
-
`)}var
|
|
185
|
-
`)||null}var SA=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=_A(e,t,n),i=this.entries.get(r);if(i)return this.entries.delete(r),this.entries.set(r,i),i;let a=this.loadFromDisk(e,t,n),o={projectDir:e,cwd:t,configFile:n,configFilePath:null,lastError:a.error,lastWarning:a.warning,state:a.state??this.buildState(t,null,[]),watcher:null,watcherKey:null};if(this.entries.set(r,o),this.entries.size>this.maxEntries){let e=this.entries.entries().next().value;if(e!==void 0){let[t,n]=e;n.state.registry.dispose(),n.state.validatorDisposers.forEach(e=>e()),n.watcher?.release(),this.entries.delete(t)}}return this.refreshWatcher(o,a.resolvedPath),this.observers.onReload?.(o),o}reload(e,t,n){this.reloadInto(this.getOrCreate(e,t,n))}reloadInto(e){let t=this.loadFromDisk(e.projectDir,e.cwd,e.configFile);e.lastWarning=t.warning,e.lastError=t.error,t.state!==null&&(e.state.registry.dispose(),e.state.validatorDisposers.forEach(e=>e()),e.state=t.state),this.refreshWatcher(e,t.resolvedPath),this.observers.onReload?.(e)}loadFromDisk(e,t,n){let r=SS(e,t,n),i=r.kind===`file`?r.path:null,a=[ES(e,t),wS(r)],o;try{o=this.buildState(t,i,a)}catch(e){return e instanceof Wo&&a.push(...e.warnings),{resolvedPath:i,warning:xA(a),state:null,error:e instanceof Wo||e instanceof Error?e.message:String(e)}}return{resolvedPath:i,warning:xA(a),state:o,error:null}}buildState(e,t,n){let r=DS(t,kE),{config:i,raw:a}=r;n.push(...r.warnings);let o=AS(r,t??`<default>`),s=new gA,c=new Iv(s,o.globals.default_empty_value??``,this.deps.gitService,this.deps.sessionState),l,u=[];try{l=iA(o,c,{cwd:e}),n.push(...l.loadWarnings);for(let{key:e,spec:t}of BD(o))u.push(ND(e,t));for(let{key:e,spec:t}of CE(o))u.push(wE(e,t))}catch(e){for(let e of u)e();throw c.dispose(),e}return{config:o,store:s,registry:c,compiled:l,neededInputPaths:iD(o),lastRenderCellsBySegment:new Map,validatorDisposers:u,authoredRoots:vA(i,a)}}refreshWatcher(e,t){e.configFilePath=t;let n=bA(e,t),r=`config:${e.projectDir}:${e.cwd}:${e.configFile??``}:${JSON.stringify(n)}`;e.watcher!==null&&e.watcherKey===r||(e.watcher?.release(),e.watcherKey=r,e.watcher=this.deps.watchers.acquire(r,n,()=>this.onConfigChanged(e)))}onConfigChanged(e){Q(`info`,`config change detected for entry projectDir=${e.projectDir} cwd=${e.cwd}`),this.reloadInto(e)}get size(){return this.entries.size}firstState(){return this.entries.values().next().value?.state??null}};const CA=16384;var wA=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<CA){this.rollingTimestamps.push(e);return}this.rollingTimestamps[this.rollingHead]=e,this.rollingHead=(this.rollingHead+1)%CA}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:yw,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 TA={load:()=>({}),save:()=>{},flush:()=>{}};function EA(e){let t=new Map;for(let[n,r]of Object.entries(e))t.set(n,new Map(Object.entries(r)));return t}var DA=class{sessions;storage;atom=(0,Lg.createAtom)(`SessionState`);constructor(e=TA,t=256){this.maxSessions=t,this.storage=e,this.sessions=new Map,this.hydrateFromStorage()}useStorage(e){this.storage=e,this.hydrateFromStorage()}hydrateFromStorage(){this.sessions=EA(this.storage.load()),this.evictOldest(),this.persist()}get(e,t){this.atom.reportObserved();let n=this.sessions.get(e);return n?(this.touch(e,n),n.get(t)??null):null}set(e,t,n){this.setBatch(e,[{key:t,value:n}])}setBatch(e,t){t.length!==0&&(0,Lg.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,Lg.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,Lg.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 OA=(e,t)=>D(t);function kA(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 AA=class{timer=null;pending=null;constructor(e,t=500,n=OA){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 kA(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 jA={default_bg:`string`,default_fg:`string`,default_empty_value:`string`,default_separator:`string`,default_truncate_marker:`string`,palette:`string`,look:`string`,preset:`string`,style:`string`,progression:`string`,autoWrap:`boolean`,padding:`number`,charset:`string`,updateNotice:`boolean`,colorCompatibility:`string`,menuGlyph:`string`},MA=new Set([`1`,`true`]),NA=new Set([`0`,`false`,``]);function PA(e,t){let n=aj(e),r=n.scope===`segment-palette`?`string`:jA[n.field];if(r===`string`)return JSON.stringify(t);if(r===`number`){let n=Number(t);if(!Number.isFinite(n))throw Error(`persistValueText: "${e}" expects a number, got "${t}"`);return String(n)}if(MA.has(t))return`true`;if(NA.has(t))return`false`;throw Error(`persistValueText: "${e}" expects boolean-ish (1, 0, true, false), got "${t}"`)}function FA(e){try{return r.readFileSync(e,`utf8`)}catch(e){if(e.code===`ENOENT`)return null;throw e}}function IA(e,t,n){try{if(t===null){r.rmSync(e,{force:!0});return}r.mkdirSync(c.dirname(e),{recursive:!0}),ke(e,t)}catch(t){let r=`config write failed (${e}): ${t.message}`;throw n(`error`,r),Error(r)}}function LA(e){return/^\s*$/.test(e)?null:so(e)}function RA(e,t){return e!==null&&lo(e,t)!==void 0}function zA(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(zA),...i}}return e}function BA(e){if(!Vs(e))return zA(e);let{rows:t,...n}=e;return{rows:Object.fromEntries(Object.entries(t).map(([e,t])=>[e,zA(t)])),...n}}const VA=DE,HA=VA.segments,UA=VA.presets,WA=VA.root;function GA(e,t,n,r){if(!RA(e,t)&&n===void 0)throw new $(`cannot edit ${r}: neither the config file nor the bundled default declares ${t.join(`.`)}`)}function KA(e,t){let n=sy(t);return t.scope===`segment-palette`&&GA(e,[`segments`,t.segment],HA[t.segment],n.join(`.`)),n}function qA(e){return so(vo(e))}function JA(){return Object.entries(WA.rows).map(([e,t])=>{let n=zA(t);return{path:[`root`],fragment:qA({rows:{[e]:n}}),unit:{path:[`root`,`rows`,e],value:n}}})}function YA(e,t){let n=e===null?void 0:lo(e,t);return n===void 0?null:{path:t,fragment:n,unit:null}}function XA(e,t){if(t===void 0)return null;let n=BA(t);return{path:e,fragment:qA(n),unit:{path:e,value:n}}}function ZA(e,t){let n=[`presets`,t],r=[...n,`root`],i=UA[t];GA(e,n,i,r.join(`.`));let a=YA(e,r)??XA(r,i?.root);return a!==null&&Ro(a.fragment)?a:null}function QA(e,t){let n=Lo(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 $A(e,t){return[...JA(),YA(e,[`root`]),ZA(e,t)].filter(e=>e!==null).reduce(QA,new Map)}function ej(e,t,n){for(let{node:r,...i}of $A(e,t).values())if(Bo(r,n))return i;throw new $(`${tj(e,t).join(`.`)} holds no segment "${n}" — the bar you clicked is stale; it reloads on the next render`)}function tj(e,t){return ZA(e,t)?.path??[`root`]}function nj(e,t){return t.scope===`preset-root`?tj(e,t.preset):sy(t)}function rj(e,{unit:t}){return t===null?e:Mo(e,t.path,vo(t.value),go)}function ij(e){let t=oy(e);if(t===null)throw Error(`"${e}" is not a valid persist target`);return t}function aj(e){let t=ij(e);if(t.scope===`preset-root`)throw Error(`"${e}" names a layout, not a value`);return t}function oj(e,t,n,r){try{AS(OS(t,r,kE),t)}catch(e){throw e instanceof Wo?new $(`refused: the config file would not load after this click — ${e.message}`):e}IA(t,r,e.logger),e.record(t,n,r)}function sj(e,t){let n=aj(t),r=LA(FA(e)??``),i=r===null?void 0:lo(r,sy(n));return i!==void 0&&`value`in i?i.value:void 0}function cj(e,t,n){let r=FA(t);oj(e,t,r,n.reduce((e,[t,n])=>Mo(e,KA(LA(e),aj(t)),PA(t,n),go),r??``))}function lj(e,t){return No(e,t,t[0]===`presets`&&t.length>2&&!jE(t[1])?2:0)}function uj(e,t,n){let r=n.map(ij),i=FA(t);if(i===null)return;let a=r.reduce((e,t)=>lj(e,nj(LA(e),t)),i);a!==i&&oj(e,t,i,a)}function dj(e){let t=e===null?void 0:lo(e,[`presets`]),n=new Set([...AE,...t?.kind===`object`?t.entries.map(e=>e.key):[]].map(ml));return Array.from({length:n.size+1},(e,t)=>`custom-${t+1}`).find(e=>!n.has(ml(e)))}function fj(e,t,n,r,i){let a=FA(t),o=LA(a??``),s=dj(o),c=[`presets`,s],l=ZA(o,n),u=[...l===null?[]:[[[...c,`root`],l.unit===null?fo(a??``,l.fragment):vo(l.unit.value)]],...Object.keys(r).length===0?[]:[[[...c,`globals`],vo(r)]]],d=i.map(([e,t])=>{let n=ay(s,e);return[KA(o,aj(n)),PA(n,t)]});return oj(e,t,a,[...u,...d].reduce((e,[t,n])=>Mo(e,t,n,go),Mo(a??``,c,`{}`,go))),s}function pj(e,t,n){if(jE(n))throw new $(`cannot delete preset "${n}": it is bundled — reset its settings instead`);let r=[`presets`,n],i=FA(t),a=LA(i??``);if(i===null||a===null||lo(a,r)===void 0)throw new $(`cannot delete preset "${n}": ${t} declares no ${r.join(`.`)} — the bar you clicked is stale; it reloads on the next render`);let o=lo(a,[`globals`,`preset`]);oj(e,t,i,[r,...o?.kind===`string`&&o.value===n?[[`globals`,`preset`]]:[]].reduce((e,t)=>lj(e,t),i))}function mj(e,t,n,r){let i=ij(n);if(i.scope!==`preset-root`)throw Error(`"${n}" is not a "presets.<name>.root" target`);let a=FA(t),o=r.op===`remove`?r.target:r.anchor,s=ej(LA(a??``),i.preset,o),c=rj(a??``,s),l=r.op===`remove`?Ho(c,s.path,r.target):Uo(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`);oj(e,t,a,l)}const hj={load:()=>({}),save:()=>{}},gj=new Set(zv.map(e=>e.sessionKey)),_j={past:[],future:[]},vj=e=>e.kind===`session`?`session:${e.key}`:`file:${e.file}`;var yj=class{state=new Map;constructor(e,t,n=hj){this.sessionState=e,this.logger=t,this.storage=n,this.state=new Map(Object.entries(n.load()))}useStorage(e){this.storage=e,this.state=new Map(Object.entries(e.load()))}depth(e){let{past:t,future:n}=this.state.get(e)??_j;return{undo:t.length,redo:n.length}}history(e){return this.state.get(e)??_j}begin(){let e=new Map,t=(t,n)=>{let r=e.get(t)??new Map,i=r.get(vj(n));r.set(vj(n),i===void 0?n:{...n,before:i.before}),e.set(t,r)},n=this.sessionState,r=(e,r,i)=>{let a=r.filter(e=>gj.has(e)).map(t=>({key:t,before:n.get(e,t)}));i();for(let{key:r,before:i}of a)t(e,{kind:`session`,key:r,before:i,after:n.get(e,r)})};return{sessionState:{get:(e,t)=>n.get(e,t),set:(e,t,i)=>r(e,[t],()=>n.set(e,t,i)),setBatch:(e,t)=>r(e,t.map(e=>e.key),()=>n.setBatch(e,t)),clear:(e,t)=>r(e,[t],()=>n.clear(e,t))},file:(e,n,r,i)=>t(e,{kind:`file`,file:n,before:r,after:i}),commit:()=>{let t=[...e];e.clear();for(let[e,n]of t){let t=[...n.values()].filter(e=>e.before!==e.after);t.length!==0&&this.put(e,{past:Sj([...this.history(e).past,t]),future:[]})}}}}undo(e){let{past:t,future:n}=this.history(e),r=t.at(-1);if(r===void 0)throw new $(`undo: nothing to undo`);return this.apply(e,r,`before`,`undo`,{past:t.slice(0,-1),future:Sj([...n,r])}),r}redo(e){let{past:t,future:n}=this.history(e),r=n.at(-1);if(r===void 0)throw new $(`redo: nothing to redo`);return this.apply(e,r,`after`,`redo`,{past:Sj([...t,r]),future:n.slice(0,-1)}),r}apply(e,t,n,r,i){let a=n===`before`?`after`:`before`,o=t.filter(t=>this.read(e,t)!==t[a]);if(o.length>0){let t=new Set(o.map(vj));throw this.put(e,{past:Cj(this.history(e).past,t),future:Cj(this.history(e).future,t)}),new $(`${r}: ${o.map(Tj).join(`, `)} changed since that edit — refusing to overwrite it; this session's undo history no longer steps it`)}let s=[];try{for(let r of t)this.write(e,r,r[n]),s.push(r);this.put(e,i)}catch(t){try{for(let t of s.reverse())this.write(e,t,t[a])}catch(e){throw Error(`${t.message}; and putting the step back failed, so it is half-applied: ${e.message}`)}throw t}}read(e,t){return t.kind===`session`?this.sessionState.get(e,t.key):FA(t.file)}write(e,t,n){t.kind===`file`?IA(t.file,n,this.logger):n===null?this.sessionState.clear(e,t.key):this.sessionState.set(e,t.key,n)}put(e,t){let n=new Map(this.state);for(n.delete(e),(t.past.length>0||t.future.length>0)&&n.set(e,t);n.size>32||bj(n)>8388608;){let[e,t]=n.entries().next().value;n.size>1?n.delete(e):n.set(e,xj(t))}this.storage.save(Object.fromEntries(n)),this.state=n}};function bj(e){let t=0;for(let{past:n,future:r}of e.values())for(let e of[...n,...r])for(let n of e)t+=(n.before?.length??0)+(n.after?.length??0);return t}function xj({past:e,future:t}){return e.length>0?{past:e.slice(1),future:t}:{past:e,future:t.slice(1)}}function Sj(e){return e.slice(-50)}function Cj(e,t){return e.map(e=>e.filter(e=>!t.has(vj(e)))).filter(e=>e.length>0)}function wj(e){return e.map(Tj).join(`, `)}function Tj(e){return e.kind===`session`?`session setting "${e.key}"`:e.file}function Ej(e){if(typeof e!=`object`||!e)return!1;let t=e,n=e=>e===null||typeof e==`string`;return(t.kind===`session`&&typeof t.key==`string`||t.kind===`file`&&typeof t.file==`string`)&&n(t.before)&&n(t.after)}function Dj(e){return Array.isArray(e)&&e.every(e=>Array.isArray(e)&&e.every(Ej))}function Oj(e){if(typeof e!=`object`||!e)return!1;let t=e;return Dj(t.past)&&Dj(t.future)}function kj(e,t){return{load:()=>{let n;try{n=r.readFileSync(e,`utf8`)}catch(e){let n=e.code;return n!==`ENOENT`&&t(`warn`,`settings-history read failed (${n}); starting empty`),{}}try{let e=JSON.parse(n);if(typeof e==`object`&&e&&!Array.isArray(e)&&Object.values(e).every(Oj))return e}catch{}return t(`warn`,`settings-history load: unexpected shape, starting empty`),{}},save:n=>{try{r.mkdirSync(c.dirname(e),{recursive:!0}),ke(e,JSON.stringify(n),384)}catch(e){let n=`settings-history write failed — the change landed but is not undoable: ${e.message}`;throw t(`error`,n),Error(n)}}}}function Aj(e){let t=Ee({bin:`tmux`,args:[`-S`,e.socket,`display`,`-p`,`-t`,e.pane,`#{client_termfeatures}`],timeoutMs:2e3,category:`doctor.tmux`});return t.ok?{kind:`ok`,value:t.stdout.trim().split(`,`).filter(e=>e!==``)}:{kind:`failed`,reason:`tmux display -p failed (${t.error??[t.reason,t.stderr.trim()].filter(e=>e!==``).join(`: `)})`}}function jj(){return{probeTmux:Aj,claudeSettingsPath:bw()}}function Mj(e){return r.existsSync(e.claudeSettingsPath)?r.readFileSync(e.claudeSettingsPath,`utf8`):``}function Nj(e){if(/^\s*$/.test(e))return{};let t=_o.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 Pj(e,t){return t===void 0?{kind:`unreported`}:t===null?{kind:`outside`}:{kind:`inside`,hint:t,termfeatures:e.probeTmux(t)}}function Fj(e){try{return Nj(Mj(e))}catch(t){throw Error(`cannot read ${e.claudeSettingsPath}: ${t instanceof Error?t.message:String(t)}`,{cause:t})}}function Ij(e,t){return{tmux:Pj(e,t),claudeSettingsEnv:Fj(e)}}function Lj(e,t,n){switch(t.kind){case`claude-settings-env`:{let i=Mo(Mj(e),[`env`,t.name],JSON.stringify(t.value),_o);return r.mkdirSync(c.dirname(e.claudeSettingsPath),{recursive:!0}),ke(e.claudeSettingsPath,i),{...n,claudeSettingsEnv:Fj(e)}}default:return t.kind}}function Rj(e){if(!e)throw new $(`session id is required`);if(e.includes(`/`)||e.includes(`..`))throw new $(`invalid session id "${e}"`);return e}function zj(e){return Bj(()=>decodeURIComponent(e))}function Bj(e){try{return e()}catch(e){throw e instanceof URIError?new $(`malformed wire encoding: ${e.message}`):e}}function Vj(e,t){let n=Ee({bin:`/usr/bin/pbcopy`,stdinInput:e,category:`click.pbcopy`});if(!n.ok){if(n.reason===`rate-limited`){t.dlog(`warn`,`click.pbcopy rate-limited: ${n.error??``}`);return}throw Error(`pbcopy failed (${n.reason}, exit ${n.exitCode??`null`})`)}}const Hj=(e,t)=>Vj(zj(e),t),Uj=(e,t)=>{let n=Ee({bin:`/usr/bin/open`,args:[`-a`,`Visual Studio Code`,zj(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`})`)}},Wj=(e,t)=>Vj(zj(e),t),Gj=(e,t)=>Vj(zj(e),t),Kj=(e,t)=>{let n=Rj(zj(e));t.sessionState.get(n,`toolbar-expanded`)?t.sessionState.clear(n,`toolbar-expanded`):t.sessionState.set(n,`toolbar-expanded`,`1`)},qj=(e,t)=>{let[n=``,...r]=Bj(()=>fw(e)),i=Rj(n);if(r.length===0)throw new $(`set-state: <key>/<value> is required (have keys: ${MD().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: ${MD().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=PD(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})`)},Jj=/^-?\d+$/;function Yj(e,t,n){return e>n?t:e<t?n:e}const Xj=(e,t)=>{let[n=``,r=``,i=``]=Bj(()=>fw(e)),a=Rj(n);if(!r)throw new $(`step-state: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!Jj.test(i))throw new $(`step-state: delta must be an integer, got "${i}"`);let o=parseInt(i,10),s=FD(r);if(!s)throw new $(`step-state: key "${r}" is not a bounded (range) state key (have keys: ${MD().join(`, `)})`);let c=t.sessionState.get(a,r),l=c&&Jj.test(c)?Zj(s,parseInt(c,10)):Qj(`step-state`,r,s,RD(t.configFor(nM(t,a)),e=>t.sessionState.get(a,e),r)),u=Yj(l+o,s.min,s.max),d=PD(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})`)};function Zj(e,t){return Math.max(e.min,Math.min(e.max,t))}function Qj(e,t,n,r){if(r===null)return n.min;if(!Jj.test(r))throw new $(`${e}: "${t}" shows ${JSON.stringify(r)} before any click, not an integer to step`);return Zj(n,parseInt(r,10))}const $j=`render-origin`;function eM(e){return JSON.stringify(e)}function tM(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 nM(e,t){let n=e.sessionState.get(t,$j);if(n===null)throw new $(`session ${t} has not rendered yet — no config to act on`);return tM(n)}function rM(e){return CS(e.projectDir,e.cwd,e.configFile??void 0)}function iM(e,t){return rM(nM(e,t))}function aM(e,t){return{record:(n,r,i)=>e.journal.file(t,n,r,i),logger:e.dlog}}const oM=(e,t)=>{let[n=``,r=``,i=``]=Bj(()=>fw(e)),a=Rj(n);if(!r)throw new $(`set-config: <key>/<value> is required (have keys: ${gE().join(`, `)})`);let o=_E(r,i);if(!o.ok)throw new $(`set-config: ${o.reason}`);let s=iM(t,a);cj(aM(t,a),s,[[r,o.value]]),t.dlog(`info`,`set-config: ${r}=${o.value} → ${s} (session=${a})`)},sM=(e,t)=>{let[n=``,r=``,i=``]=Bj(()=>fw(e)),a=Rj(n);if(!r)throw new $(`step-config: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!Jj.test(i))throw new $(`step-config: delta must be an integer, got "${i}"`);let o=parseInt(i,10),s=vE(r);if(!s)throw new $(`step-config: key "${r}" is not a bounded (range) config key (have keys: ${gE().join(`, `)})`);let c=nM(t,a),l=rM(c),u=sj(l,r),d=typeof u==`number`?Zj(s,u):Qj(`step-config`,r,s,bE(t.configFor(c),r)),f=Yj(d+o,s.min,s.max),p=_E(r,String(f));if(!p.ok)throw new $(`step-config: ${p.reason}`);cj(aM(t,a),l,[[r,p.value]]),t.dlog(`info`,`step-config: ${r} ${d}→${p.value} (by ${o}) → ${l} (session=${a})`)},cM=(e,t)=>{let[n=``]=Bj(()=>fw(e)),r=Rj(n),i=nM(t,r),a=xD(t.configFor(i),e=>t.sessionState.get(r,e));if(a.length===0){t.dlog(`info`,`save: nothing unsaved (session=${r})`);return}let o=a.map(e=>{let t=PD(e.sessionKey,e.value);if(!t.ok)throw new $(`save: ${t.reason}`);return[e.target,t.value]}),s=rM(i);cj(aM(t,r),s,o),t.reloadConfig(i);for(let e of a)t.sessionState.clear(r,e.sessionKey);t.dlog(`info`,`save: ${o.map(([e,t])=>`${e}=${t}`).join(` `)} → ${s} (session=${r})`)},lM=(e,t)=>{let[n=``]=Bj(()=>fw(e)),r=Rj(n),i=nM(t,r),a=SD(t.configFor(i),e=>t.sessionState.get(r,e)),o=a.picks.map(e=>{let t=PD(e.sessionKey,e.value);if(!t.ok)throw new $(`save-preset: ${t.reason}`);return[e.configKey,t.value]}),s=rM(i),c=fj(aM(t,r),s,a.from,a.globals,o);t.reloadConfig(i);for(let e of zv)t.sessionState.clear(r,e.sessionKey);t.sessionState.set(r,Rv.preset.sessionKey,c),t.dlog(`info`,`save-preset: ${[`${c} from=${a.from}`,...o.map(([e,t])=>`${e}=${t}`)].join(` `)} → ${s} (session=${r})`)},uM=(e,t)=>{let[n=``,r=``]=Bj(()=>fw(e)),i=Rj(n);if(!r)throw new $(`delete-preset: <name> is required (shape: <sessionId>/<name>)`);let a=nM(t,i),o=rM(a);pj(aM(t,i),o,r),t.reloadConfig(a);let s=Rv.preset.sessionKey;t.sessionState.get(i,s)===r&&t.sessionState.clear(i,s),t.dlog(`info`,`delete-preset: ${r} ← ${o} (session=${i})`)},dM=(e,t)=>{let[n=``,...r]=Bj(()=>fw(e)),i=Rj(n),a=gE(),o=r.length===0?[``]:r.filter(e=>!a.includes(e));if(o.length>0)throw new $(`reset-config: unknown config key "${o.join(`", "`)}" (have: ${a.join(`, `)})`);let s=nM(t,i),c=rM(s),l=r.map(CD),u=l.flatMap(e=>e.fileKeys),d=l.flatMap(e=>e.sessionKeys);uj(aM(t,i),c,u),t.reloadConfig(s);for(let e of d)t.sessionState.clear(i,e);t.dlog(`info`,`reset-config: ${[...u,...d.map(e=>`session:${e}`)].join(` `)} ← ${c} (session=${i})`)},fM=(e,t)=>{let[n=``,r=``,i=``]=Bj(()=>fw(e)),a=Rj(n);if(!r)throw new $(`apply-layout-op: <key>/<op> is required (have: ${gE().join(`, `)})`);let o=_E(r,i);if(!o.ok)throw new $(`apply-layout-op: ${o.reason}`);let s=Kv(o.value);if(s===null)throw new $(`apply-layout-op: "${o.value}" is not a layout op token`);let c=iM(t,a);mj(aM(t,a),c,r,s),t.dlog(`info`,`apply-layout-op: ${r} ${o.value} → ${c} (session=${a})`)},pM=(e,t)=>{let[n=``]=Bj(()=>fw(e)),r=Rj(n);t.journal.commit();let i=t.history.undo(r);t.dlog(`info`,`undo: restored ${wj(i)} (session=${r})`)},mM=(e,t)=>{let[n=``]=Bj(()=>fw(e)),r=Rj(n);t.journal.commit();let i=t.history.redo(r);t.dlog(`info`,`redo: re-applied ${wj(i)} (session=${r})`)},hM=(e,t)=>{Rj(zj(e)),t.applyUpdate()},gM=`client-hints`;function _M(e,t){let n=e.sessionState.get(t,gM);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 LS(r)}function vM(e,t,n){let r=By(n);e.sessionState.setBatch(t,Uy(r)),e.dlog(`info`,`doctor: ${r.map(e=>`${e.check.name}=${e.verdict.ok?`ok`:`failed`}`).join(` `)} (session=${t})`)}const yM=(e,t)=>{let n=Rj(zj(e));vM(t,n,Ij(t.doctor,_M(t,n).tmux))},bM=(e,t)=>{let[n=``,r=``]=Bj(()=>fw(e)),i=Rj(n),a=Vy(r);if(a===void 0)throw new $(`doctor-fix: unknown check "${r}"`);let o=Ij(t.doctor,_M(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=Lj(t.doctor,s.fix,o);t.dlog(`info`,`doctor-fix: ${a.name} → ${s.fix.kind} ${s.fix.name}=${s.fix.value} (session=${i})`),vM(t,i,c)},xM=`config-override`,SM=new Map([[JC,Hj],[`load-config`,(e,t)=>{let n=e.indexOf(`/`);if(n===-1)throw new $(`load-config: expected <sessionId>/<path> (missing separator)`);let r=Rj(Bj(()=>decodeURIComponent(e.slice(0,n)))),i=Bj(()=>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,xM),t.dlog(`info`,`load-config: override cleared (session=${r})`)):(t.sessionState.set(r,xM,i),t.dlog(`info`,`load-config: ${i} (session=${r})`))}],[YC,Uj],[KC,qj],[qC,Xj],[$C,oM],[ew,sM],[iw,dM],[tw,cM],[nw,lM],[rw,uM],[aw,fM],[ow,pM],[sw,mM],[ZC,Wj],[QC,Gj],[XC,Kj],[cw,hM],[lw,yM],[uw,bM]]),CM=new Set([KC,qC,$C,ew,iw,tw,nw,rw,aw,ow,sw,XC,cw,lw,uw]),wM=(e,t)=>{let n=[],r=!1,i=null;for(let{verb:a,value:o}of gw(mw(e))){if(!i&&CM.has(a)){let e=fw(o);e.length>0&&e[0]&&(i=e[0])}let e=SM.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(`
|
|
186
|
-
`));let e=`dispatch: ${n.join(`; `)}`;throw r?Error(e):new $(e)}};function TM(e){return(t,n)=>{let r=n.history.begin(),i=[];try{e(t,{...n,sessionState:r.sessionState,journal:r})}catch(e){i.push(e)}try{r.commit()}catch(e){i.push(e)}if(i.length===1)throw i[0];if(i.length>1)throw Error(i.map(e=>String(e.message??e)).join(`; `))}}const EM=new Map([...SM,[GC,wM]].map(([e,t])=>[e,TM(t)]));Object.freeze([...EM.keys()]);const DM=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`]),OM=[[`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 kM(e){let t={missingRequired:[],typeMismatches:[],unknownTopLevelFields:[]},n=typeof e==`object`&&e&&!Array.isArray(e)?e:{};for(let[e,r]of OM){let i=jM(n,e);if(i==null)t.missingRequired.push(e);else{let n=AM(i);n!==r&&t.typeMismatches.push({path:e,expected:r,got:n})}}for(let e of Object.keys(n))DM.has(e)||t.unknownTopLevelFields.push(e);return{data:e,report:t}}function AM(e){return Array.isArray(e)?`array`:typeof e==`string`&&!e.isWellFormed()?`ill-formed string`:typeof e}function jM(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 MM(e,t){switch(e){case`vars`:return{what:e,vars:NM(t)};case`segments`:return{what:e,segments:RM(t)};case`config`:return{what:e,config:VM(t)}}}function NM(e){if(e===null)return[];let{store:t,registry:n,config:r}=e,i=IM(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,...PM(r),lastError:a===void 0?null:{timestampMs:a.timestamp,message:a.message},ageMs:FM(r.lastUpdatedMs())})}return o}function PM(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 FM(e){return e===null?null:Math.max(0,Date.now()-e)}function IM(e){let t=new Map;for(let[n,r]of Object.entries(e.variables))t.set(n,LM(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}`,LM(i));return t}function LM(e){return e.kind}function RM(e){if(e===null)return[];let{store:t,config:n,lastRenderBySegment:r}=e,i=new Set(t.names()),a=zM(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:BM(t.template,n.helpers,i),lastRender:r.get(e)??null})}return o}function zM(e){let t=[],n=new Set;for(let r of Qo(Ws(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 BM(e,t,n){let r=new Set;for(let i of Dg(e,t).keys()){if(n.has(i)){r.add(i);continue}let e=i.split(`.`);for(;e.length>1;){e.pop();let t=e.join(`.`);if(n.has(t)){r.add(t);break}}}return Array.from(r).sort()}function VM(e){return e===null?null:e.config}const HM=[`vars`,`segments`,`config`];function UM(e){return typeof e==`string`&&HM.includes(e)}function WM(e){return Math.max(1,e-2)}var GM=class{thresholds={LOW:50,MEDIUM:80};getContextUsageThresholds(){return this.thresholds}ratioPercentages(e,t){let n=Math.min(100,Math.max(0,Math.round(e/t*100)));return{percentage:n,contextLeftPercentage:Math.max(0,100-n)}}calculateContextFromHookData(e){let t=e.context_window;if(!t?.current_usage)return D(`No current_usage in hook data, falling back to transcript parsing`),null;let n=t.current_usage,r=t.context_window_size,i=(n.input_tokens||0)+(n.cache_creation_input_tokens||0)+(n.cache_read_input_tokens||0);D(`Native current_usage: input=${n.input_tokens}, cache_create=${n.cache_creation_input_tokens}, cache_read=${n.cache_read_input_tokens}, total=${i} (limit: ${r})`);let a=this.ratioPercentages(i,r);return{totalTokens:i,maxTokens:r,percentage:t.used_percentage==null?a.percentage:Math.round(t.used_percentage),contextLeftPercentage:t.remaining_percentage==null?a.contextLeftPercentage:Math.round(t.remaining_percentage)}}async calculateContextTokensFromTranscript(e,t){try{D(`Calculating context tokens from transcript: ${e}`);let n=await mO(e);if(n.length===0)return D(`No entries in transcript`),Y;let r=null;for(let e=n.length-1;e>=0;e--){let t=n[e];if(t&&t.message?.usage?.input_tokens&&t.isSidechain!==!0){r=t,D(`Context segment: Found most recent entry at ${t.timestamp.toISOString()}, stopping search`);break}}if(r?.message?.usage){let e=r.message.usage,n=(e.input_tokens||0)+(e.cache_read_input_tokens||0)+(e.cache_creation_input_tokens||0);return D(`Most recent main chain context: ${n} tokens (limit: ${t})`),J({totalTokens:n,maxTokens:t,...this.ratioPercentages(n,t)})}return D(`No main chain entries with usage data found`),Y}catch(e){return X(`context transcript: ${e instanceof Error?e.message:String(e)}`)}}async getContextInfo(e){let t=this.calculateContextFromHookData(e);if(t)return J(t);let n=e.context_window?.context_window_size??2e5;return this.calculateContextTokensFromTranscript(e.transcript_path,n)}},KM=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=ME(t);if(n&&r!==0&&n.cursor.mtimeMs===r)return this.touch(e,n),{kind:`ok`,value:n.value};let i=await vO(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 qM={messageCount:0,recent:[]};function JM(e,t){if(t.isSidechain)return e;let n=[...e.recent,t];return{messageCount:e.messageCount+ +!!fO(t),recent:n.length>20?n.slice(-20):n}}function YM(e){let t=null,n=null;for(let r of e){let e=r.type||r.message?.role||r.message?.type;if(fO(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 XM=class{fold=new KM(qM,JM);async getMetricsInfo(e,t){if(D(`Getting metrics from hook data for session: ${e}`),!t.cost)return Y;let n=await this.fold.read(e,t.transcript_path);return n.kind===`failed`?X(`metrics (${e}): ${n.reason}`):J({responseTime:t.cost.total_api_duration_ms/1e3,lastResponseTime:YM(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 ZM={command:null,todos:[],pending:[],done:[]};function QM(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 $M(e,t){if(t.isSidechain)return e;let n=fO(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=QM(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 eN(e){return{command:e.command,todos:e.todos,running:e.pending.reduce((e,t)=>QM(e,t.name),[]),done:e.done}}var tN=class{fold=new KM(ZM,$M);async getActivityInfo(e,t){let n=await this.fold.read(e,t.transcript_path);return n.kind===`failed`?X(`activity (${e}): ${n.reason}`):J(eN(n.value))}};const nN=new Map;function rN(e){if(!e)return``;let t=e.indexOf(`,`);return t<0?e:e.slice(0,t)}var iN=class{async getSessionId(){if(!process.env.TMUX_PANE)return Y;let e=rN(process.env.TMUX),t=nN.get(e);if(t!==void 0)return t;D(`Getting tmux session ID, TMUX_PANE: ${process.env.TMUX_PANE}`);let n=await Te({bin:`tmux`,args:[`display-message`,`-p`,`#S`],timeoutMs:1e3,category:`tmux`}),r=n.ok?n.stdout.trim()?J(n.stdout.trim()):Y:X(`tmux display-message: ${n.reason}`);return nN.set(e,r),r}isInTmux(){return!!process.env.TMUX_PANE}},aN=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 oN=new wA;Ce(oN.launchStats);const sN=new av({counters:oN,logger:Q}),cN=new pv({watchers:sN,logger:Q}),lN=new AO,uN=new DA,dN=new yj(uN,Q),fN=new aN(We()),pN=new GM,mN=new XM,hN=new tN,gN=new iN,_N=new SA({gitService:cN,sessionState:uN,watchers:sN},{observers:{onReload:e=>Q(`info`,`config loaded projectDir=${e.projectDir} cwd=${e.cwd} file=${e.configFilePath??`<bundled default>`} error=${e.lastError===null?`none`:JSON.stringify(e.lastError)} warning=${e.lastWarning===null?`none`:JSON.stringify(e.lastWarning)}`)}}),vN=60*1e3;function yN(){let e=import.meta.url,n=[];e.startsWith(`file://`)&&n.push(w(e)),t.argv[1]&&n.push(t.argv[1]);let i=new Map;for(let e of n)try{i.set(e,r.statSync(e).mtimeMs)}catch{}let a=null,o=()=>{for(let[e,t]of i)try{if(r.statSync(e).mtimeMs!==t){Q(`info`,`binary mtime changed (${e}); shutting down`),a&&clearInterval(a),FN(0);return}}catch(e){Q(`warn`,`bin stat failed: ${e.message}`)}};return{arm(){i.size!==0&&(a=setInterval(o,vN),a.unref())},checkNow:o}}const bN=yN(),xN=tO({entryUrl:import.meta.url,intervalMs:vN,releaseIntervalMs:216e5,registryUrl:t.env.CC_CANDYBAR_REGISTRY_URL??`https://registry.npmjs.org`,fetchImpl:fetch,onApplied:()=>bN.checkNow(),log:Q});let SN=null,CN=null,wN=0;function TN(){t.on(`uncaughtException`,e=>{Q(`error`,`uncaughtException: ${e.stack||e.message}`),FN(1)}),t.on(`unhandledRejection`,e=>{Q(`error`,`unhandledRejection: ${String(e)}`),FN(1)});for(let e of[`SIGINT`,`SIGTERM`,`SIGHUP`])t.on(e,()=>{Q(`info`,`received ${e}, shutting down`),FN(0)});try{wN=_C(t.env)}catch(e){Q(`error`,`refusing to boot: ${e.message}`),FN(1);return}SN=uT(t.pid);let e=bT(ST(SN));if(!e.decision.allow){Q(`warn`,`fork-bomb breaker: ${e.decision.reason}; refusing to boot`),FN(1);return}CN=e.registryPath,r.mkdirSync(Me(),{recursive:!0}),Fe(Ne()),uN.useStorage(new AA(Re(),500,Q)),dN.useStorage(kj(ze(),Q)),pT({anchor:fT(t.env),isAlive:mT,onOrphaned:e=>{Q(`info`,`parent watchdog: ${e}; shutting down`),FN(0)}}),EN(g.createServer({allowHalfOpen:!1},e=>{IN(e)}),Ne(),!1)}function EN(e,n,r){e.removeAllListeners(`error`),e.removeAllListeners(`listening`),e.once(`error`,i=>{if(i.code!==`EADDRINUSE`){Q(`error`,`server error: ${i.message}`),FN(1);return}if(r){Q(`info`,`lost rebind race; another daemon is alive — exiting`),t.exit(0);return}DN(e,n)}),e.listen(n,()=>ON(n))}function DN(e,n){let i=eT(tT(Ie(n)),(e,t)=>lT(e,t,{readStartTime:cT,pidAlive:mT}));if(i.kind===`attach-and-exit`){Q(`info`,`EADDRINUSE: ${i.reason} — exiting`),t.exit(0);return}Q(`warn`,`EADDRINUSE: ${i.reason} — unlinking stale socket and rebinding`);try{r.unlinkSync(n)}catch(e){if(e.code!==`ENOENT`){Q(`error`,`cannot unlink stale socket ${n}: ${e.message}`),FN(1);return}}EN(e,n,!0)}function ON(e){let n=iT(e);if(n.kind!==`present`){Q(`warn`,`no ownable socket at bind callback (${n.kind}); exiting`),FN(0);return}MN(e);try{r.chmodSync(e,384)}catch(e){Q(`warn`,`chmod socket failed: ${e.message}`)}Q(`info`,`daemon up: pid=${t.pid} v=3 sock=${e} heapCap=${Math.round(C.getHeapStatistics().heap_size_limit/1048576)}MB rssLimit=${Math.round(wN/1048576)}MB`),PC();let i=fN.reset();i!==null&&Q(`warn`,`diagnostic dump wipe failed: ${i}`),bN.arm(),xN.arm(),jN(),kN(e,n.identity)}function kN(e,n){sT({bound:n,myPid:t.pid,readIdentity:()=>iT(e),readLease:()=>tT(Ie(e)),shutdown:e=>FN(e),log:Q}).arm()}let AN=null;function jN(){AN=xC(TC(oN.startedAt.getTime(),e=>FN(e),{rssLimitBytes:wN})),AN.arm()}function MN(e){let n=nT(Ie(e),{pid:t.pid,version:3,binPath:t.argv[1],startTime:SN});n!==null&&Q(`warn`,`lease write failed: ${n}`)}let NN=0,PN=!1;function FN(e){if(!PN){PN=!0,setTimeout(()=>t.kill(t.pid,`SIGKILL`),500);try{cN.close()}catch(e){Q(`warn`,`gitService close failed: ${e.message}`)}try{lN.close()}catch(e){Q(`warn`,`usageStore close failed: ${e.message}`)}try{sN.closeAll()}catch(e){Q(`warn`,`watcherRegistry close failed: ${e.message}`)}try{uN.flush()}catch(e){Q(`warn`,`sessionState flush failed: ${e.message}`)}rT(Le(),t.pid),CN!==null&&xT(CN,t.pid,vT,e=>r.unlinkSync(e)),t.exit(e)}}function IN(e){NN++,oN.inFlight=NN;let t=!1,n=(n,r)=>{if(t){r!==null&&Q(`warn`,`exit-after-flush dropped: an earlier responder settled this socket`);return}t=!0;let i=r===null?void 0:()=>FN(r);try{e.end(WS(n),i)}catch(e){Q(`warn`,`response write failed: ${e.message}`),i?.()}},r=setTimeout(()=>{oN.requestsTimedOut++,n({ok:!1,error:`request exceeded 200ms`,code:`TIMEOUT`,daemonV:3},null)},200),i=GS(e=>{RN(e).then(e=>n(e.resp,e.exitAfterFlush)).catch(e=>{Q(`error`,`handler threw: ${e?.stack||e}`),n({ok:!1,error:String(e?.message||e),code:`RENDER_FAILED`,daemonV:3},null)})},e=>{Q(`warn`,`frame parse failed: ${e.message}`),n({ok:!1,error:e.message,code:`BAD_REQUEST`,daemonV:3},null)});e.on(`data`,i),e.on(`error`,e=>{Q(`warn`,`socket error: ${e.message}`)}),e.on(`close`,()=>{clearTimeout(r),NN=Math.max(0,NN-1),oN.inFlight=NN})}const LN=e=>({resp:e,exitAfterFlush:null});async function RN(e){if(!e||typeof e!=`object`||typeof e.v!=`number`)return LN({ok:!1,error:`malformed request`,code:`BAD_REQUEST`,daemonV:3});if(e.v!==3)return e.v>3?Q(`info`,`version mismatch: client=${e.v} > daemon=3; binary likely upgraded — exiting after the response flushes`):Q(`info`,`version mismatch: client=${e.v} < daemon=3; client is stale — staying up`),{resp:{ok:!1,error:`protocol v${e.v} not supported (daemon at v3)`,code:`VERSION_MISMATCH`,daemonV:3},exitAfterFlush:e.v>3?0:null};if(e.kind===`shutdown`)return{resp:{ok:!0,output:``},exitAfterFlush:0};if(e.kind===`stats`)return LN({ok:!0,stats:oN.snapshot({gitCache:cN.getStats(),usageCache:lN.getStats(),renderCacheSize:_N.size,watchersActive:sN.size(),nextRestartReason:AN?.describeNextRestart()??null})});if(e.kind===`render`){oN.requestsTotal++;let t=Date.now();try{let{report:n}=kM(e.hookData);for(let e of n.unknownTopLevelFields)Q(`info`,`schema: unknown field '${e}' — Anthropic may have added it`);let r=[];for(let e of n.missingRequired)r.push(`missing required field '${e}'`);for(let{path:e,expected:t,got:i}of n.typeMismatches)r.push(`field '${e}' expected ${t}, got ${i}`);if(e.cwd===``&&r.push(`request 'cwd' is empty`),r.length>0)return oN.requestsErrored++,Q(`warn`,`BAD_REQUEST: ${r.join(`; `)}`),LN({ok:!1,error:`malformed hookData: ${r.join(`; `)}`,code:`BAD_REQUEST`,daemonV:3});let i=e.hookData.workspace.project_dir,{configFile:a,unknownFlagsError:o}=zN(e.args),s=e.hookData.session_id,c=LS(e),l=JSON.stringify(c);uN.get(s,`client-hints`)!==l&&uN.set(s,gM,l);let u=uN.get(s,`config-override`)??a??c.configEnv,d=_N.getOrCreate(i,e.cwd,u),f=eM({projectDir:i,cwd:e.cwd,configFile:u??null});uN.get(s,`render-origin`)!==f&&uN.set(s,$j,f);let p=c.termCols,m=WM(p??120),h=zT(c.termRows),{authoredRoots:g}=d.state,_=t=>uN.get(e.hookData.session_id,t),v=GE(d.state.config,_,e=>g.has(e)),y=await cD(e.hookData,WN,e.cwd,d.state.neededInputPaths(v.preset),v,c,xD(d.state.config,_).length),b=[],x=KE(v,m),S=cA(d.state.config,d.state.compiled,d.state.store,d.state.registry,y,x,{perSegmentSink:d.state.lastRenderCellsBySegment,onRenderWarning:e=>b.push(e)},qE(v)),C=uN.get(e.hookData.session_id,`click.error`);C&&uN.clear(e.hookData.session_id,`click.error`);let ee=[o,d.lastError,C].filter(Boolean).join(`
|
|
187
|
-
`),te=
|
|
188
|
-
`)),re=
|
|
189
|
-
`})}catch(e){throw
|
|
190
|
-
`);return}t.stdout.write(
|
|
183
|
+
`);n.push(e[0]);for(let r=1;r<e.length;r++)t.push(n),n=[e[r]]}return t.push(n),t}const pA=({text:e,trail:t})=>t===void 0?[e]:[e,t];function mA(e,t){switch(e){case`vertical`:return gA(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))]:gA(e)}}}function hA(e,t){let n=(e,r)=>t(e)?e.kind===`segment`?[{cells:[{name:e.name,address:r}],band:`own`,span:`shared`}]:mA(e.direction,e.children.map((t,i)=>n(t,[...r,_A(e,i)]))):[];return n(e,[]).map(e=>[...e.cells])}function gA(e){return e.map(e=>e.span===`row`?{...e,span:`shared`}:e)}function _A(e,t){return{index:t,count:e.children.length,distribution:e.distribution,axis:Xo[e.direction]}}const vA={compile(e,t){return{kind:`container`,direction:e.direction,when:t.when,distribution:Li(e.distribution),children:e.children.map((e,n)=>t.compileChild(e,ns(t.path,n)))}},render(e,t){return mA(e.direction,e.children.map((n,r)=>t.renderChild(n,t.visible,_A(e,r))))}},yA={compile(e,t){return{kind:`segment`,when:t.when,name:e.name,id:Zo(e),settings:t.settingsOf(e),...e.opens!==void 0&&{opens:{open:t.parse(lc(e.opens.ref),`opens`),body:t.compileChild(e.opens.body,rs(t.path)),key:e.opens.ref.key,placement:e.opens.placement}},...e.trail!==void 0&&{trail:t.parse(e.trail,`trail`)}}},render(e,t){let n=t.lookupSegment(e.name);if(!n)throw Error(`Layout segment "${e.name}" has no matching segment`);let{seg:r,compiled:i}=n;if(!t.visible)return[];let a=av(t.scope,e.settings);try{if(!tk(i.when,a))return[];let n=i.palette??t.palette,{styles:o,fragments:s,trail:c,drops:l}=t.evaluateSegment(e,a,n,t.region,{bg:i.bg,fg:i.fg,body:i.template,trail:e.trail}),u=e.opens!==void 0&&tk(e.opens.open,t.scope),d=l.length>0||u?o.trigger:o.closed,f={width:r.width??`auto`,justify:r.justify??`left`,truncate:r.truncate??`right`,baseStyle:d,padding:t.padding},p=e.opens===void 0?[]:t.renderBody(e.opens.body,u,o.disclosure),m=p.slice(0,+(e.opens?.placement===`inline`)),h=p.slice(m.length),g=e.opens!==void 0&&h.some(e=>e.band===`own`)?ak(lk([t.closeDisclosure(e.opens.key)],o.trigger),{...f,width:`auto`,baseStyle:o.trigger}):[],_=e=>e.band===`own`?g:[],v=h.map(e=>({cells:[..._(e),...e.cells],band:`deeper`,span:`shared`})),y=fA(lk(s,d)).map((e,t)=>({cells:ak(e,{...f,trail:t===0?lk(c,d):[]}),band:`own`,span:`shared`})),b=l.map(e=>({cells:ak(lk([e],o.band),{...f,baseStyle:o.band}),band:`deeper`,span:`shared`})),x=[...y,...b];return t.perSegmentSink!==void 0&&t.perSegmentSink.set(e.id,[...x.flatMap(e=>e.cells),...h.flatMap(_)].flatMap(pA)),[...x.map((e,t)=>t===0&&m.length>0?{cells:[...e.cells,...m.flatMap(e=>e.cells)],band:`own`,span:`row`}:e),...v]}catch(n){let r=n.message??String(n);t.onSegmentError?.(e.id,r);let i=r.replace(/\s*\n\s*/g,` `);return[{cells:ak([new H(`⚠ ${e.id}: ${i}`,{end:``})],{width:`auto`,justify:`left`,truncate:`right`,padding:0,trail:bA(e,a,t)}),band:`own`,span:`shared`}]}}};function bA(e,t,n){if(e.trail===void 0)return[];try{return n.evaluateSegment(e,t,n.palette,n.region,{bg:void 0,fg:void 0,body:e.trail,trail:void 0}).fragments}catch(t){return n.onSegmentError?.(e.id,t.message??String(t)),[]}}const xA={container:vA,segment:yA};function SA(e){return xA[e]}function CA(e){if(`ttl`in e)return{kind:`ttl`,durationMs:Kv(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 wA(e,t){switch(os(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 TA(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:CA(n.cache),parse:wA(n.parse,n.default)});break;case`shell`:e.declareShell(t,n.command,{cache:CA(n.cache),parse:wA(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?Kv(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 EA(e,t){let n=qu.EMPTY;for(let[r,i]of Object.entries(t))try{n=e.parse(`{{ define "${r}" }}${i}{{ end }}`,n).defines()}catch(e){throw Error(`Template parse error in helpers.${r}: ${e.message}`,{cause:e})}return n}const DA=e=>Ka(void 0,null,e.globals.progression);function OA(e,t,n){let r=n?.cwd??process.cwd(),i=vS(e.globals.palette),a={store:t.variableStore,compiled:new Map,chromeCols:rE({style:`powerline`,charset:Ia}),width:80,basePalette:i,palette:i,progression:ki[DA(e)],padding:1,seamCols:iE({style:`powerline`,charset:Ia}),layout:()=>[]},o=Pk(t.drawnAt),s={action:a,activeSegment:o},c=Object.keys(e.looks),l=gg(e.presets),u=new Map([...xS(e),...Vy(e)]),d=nv({...Ok(a),...Gk(a,o),...Jk(a,o),...Qk(a,o),...rA(a,o),...sA(s),...uA(o),looks:{fn:()=>c,argTypes:[]},presets:{fn:()=>l,argTypes:[]}},n?.clock,t.drawnAt),f=EA(d,e.helpers),p=e=>d.parse(e,f),m=new Map,h=e=>{let t=m.get(e);if(t!==void 0)return t;let n=p(e);return m.set(e,n),n},g=new Map;for(let[t,n]of my)n in e.variables&&g.set(t,n);for(let[t,n]of Object.entries(e.variables))n.kind===`state`&&!g.has(n.key)&&g.set(n.key,t);for(let[t,n]of Object.entries(e.segments))if(n.vars)for(let[e,r]of Object.entries(n.vars))r.kind===`state`&&!g.has(r.key)&&g.set(r.key,`${t}.${e}`);a.compiled=_k(p,e.actions,g,u);let _=[];for(let[n,i]of Object.entries(e.variables))try{TA(t,n,i,r)}catch(e){_.push(`Variable "${n}": ${e.message??String(e)}`)}for(let[n,i]of Object.entries(e.segments))if(i.vars)for(let[e,a]of Object.entries(i.vars))try{TA(t,`${n}.${e}`,a,r)}catch(t){_.push(`Variable "${n}.${e}": ${t.message??String(t)}`)}let v=Object.create(null);for(let[t,n]of Object.entries(e.segments)){let e=(e,n,r=p)=>{try{return r(e)}catch(e){throw Error(`Template parse error in segments.${t}.${n}: ${e.message}`,{cause:e})}};v[t]={when:n.when===void 0?void 0:e(n.when,`when`,h),template:e(n.template,`template`),bg:n.bg===void 0?void 0:e(n.bg,`bg`),fg:n.fg===void 0?void 0:e(n.fg,`fg`),palette:n.palette===void 0?void 0:dS(n.palette)}}let y=(e,t,n)=>{try{return h(e)}catch(e){throw Error(`Template parse error in ${t}.${n}: ${e.message}`,{cause:e})}},b=t=>{let n=e.segments[t.name]?.settings??{},r=Object.create(null);for(let[e,i]of Object.entries(n))r[e]=t.settings?.[e]??i.default;return Object.freeze(r)},x=(e,t)=>{let n={path:t,when:e.when===void 0?void 0:y(e.when,t,`when`),parse:(e,n)=>y(e,t,n),compileChild:x,settingsOf:b};return SA(e.kind).compile(e,n)},S=new Map;for(let t of l){let{node:n,path:r}=yg(e,t);S.set(t,x(n,r))}let C=new Map;for(let t of wa){let n=e.globals[t];Ta(n)&&C.set(t,kA(p,t,n))}return{segments:v,roots:S,activeSegment:o,menuRuntime:s,globalExpressions:C,loadWarnings:_}}function kA(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 AA(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 jA(e,t){return e.kind===`decided`?e.name:t}function MA(e,t,n,r,i,a,o,s){let{perSegmentSink:c,onSegmentError:l,onRenderWarning:u}=o??{};r.drawAt(Ua(a.colorCompatibility));let{preset:d=mg}=s??{},f=ki[s?.progression??DA(e)];t.menuRuntime.action.progression=f;let p=s?.look??Aa(`none`,e.looks),m=s?.theme??gS(void 0,null,e.globals.palette),h=(e,t)=>({...i,term:{cols:a.width},theme:{effective:e},look:{effective:t}});r.applyInput(h(jA(m,ya),jA(p,Oa))),t.menuRuntime.action.chromeCols=rE(a),t.menuRuntime.action.padding=a.padding,t.menuRuntime.action.width=a.width,t.menuRuntime.action.seamCols=iE(a);let g=rv(n),_=Da(m,()=>AA(t,`palette`,g),e=>hS(e,e=>u?.(e))),v=Da(p,()=>AA(t,`look`,g),t=>Aa(t,e.looks));(_!==m||v!==p)&&r.applyInput(h(_.name,v.name));let y=_.value;t.menuRuntime.action.basePalette=y;let b=pS(y,v.value);t.menuRuntime.action.palette=b,c?.clear();let x=n=>{let r=e.segments[n],i=t.segments[n];return r!==void 0&&i!==void 0?{seg:r,compiled:i}:void 0},S=(e,n,i,a,o)=>{try{let s=r.drawnAt(),{tint:c,disclosure:l}=ga(i,a,s),u=Fk(t.activeSegment,e.name,e.id,i,l,c),d=mk(u,s,o.bg,o.fg,n),f=o.body.evaluate(n),p=o.trail?.evaluate(n)??[];return{styles:{closed:d,get trigger(){return Ak(i,aa(i,l,s).state,s)},get band(){return Ak(i,aa(i,l,s).plane,s)},disclosure:l},fragments:f,trail:p,drops:u.drops}}finally{t.activeSegment.current=null}},C=(e,t,r)=>{let i=t&&tk(e.when,g),o={scope:g,palette:b,visible:i,padding:a.padding,region:r,perSegmentSink:c,onSegmentError:l,evaluateSegment:S,lookupSegment:x,renderChild:(e,t,n)=>C(e,t,ma(r,n)),renderBody:(e,t,n)=>C(e,i&&t,ha(n)),closeDisclosure:e=>kk(n,e)};return SA(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 "${mg}"; a miss here is merge/policy drift (have: ${[...t.roots.keys()].join(`, `)})`);let te=e=>{if(!tk(e.when,g))return!1;if(e.kind===`container`)return!0;if(Gy(e.name)===void 0)return!1;try{return tk(t.segments[e.name].when,av(g,e.settings))}catch{return!0}};return t.menuRuntime.action.layout=()=>hA(ee,te).map(e=>e.flatMap(e=>{let n=Gy(e.name);return n===void 0?[]:[{...e,name:n,palette:t.segments[n].palette??b}]})),C(ee,!0,pa(f)).map(e=>aE(ck(e.cells,a),a)).join(`
|
|
184
|
+
`)}var NA=class{kind=`box`;cell;lastChangedAt;constructor(e,t,n){this.name=e,this.type=t,zA(e,t,n,`initial value`),this.cell=l_.observable.box(n,{deep:!1}),this.lastChangedAt=Date.now()}read(){return this.cell.get()}set(e){zA(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}},PA=class{kind=`computed`;cell;constructor(e,t,n){this.name=e,this.type=t,this.cell=(0,l_.computed)(()=>{let e=n();return zA(this.name,this.type,e,`computed result`),e},{keepAlive:!0})}read(){return this.cell.get()}lastUpdatedMs(){return null}},FA=class{kind=`document`;cell;lastChangedAt;constructor(e,t){this.name=e,this.cell=l_.observable.box(RA(t),{deep:!1}),this.lastChangedAt=Date.now()}read(){return this.cell.get()}set(e){let t=RA(e);LA(this.cell.get(),t)||(this.cell.set(t),this.lastChangedAt=Date.now())}lastUpdatedMs(){return this.lastChangedAt}};function IA(e){return JSON.stringify(e)}function LA(e,t){return IA(e)===IA(t)}function RA(e){return e.kind===`ok`?{kind:`ok`,value:u_(e.value)}:e}function zA(e,t,n,r){let i=d_(n);if(i!==t)throw TypeError(`Variable "${e}": ${r} type ${i} does not match declared type ${t}`)}var BA=class{nodes=new Map;defineBox(e,t,n){this.assertNotDefined(e),this.nodes.set(e,new NA(e,t,n))}defineDocument(e,t){this.assertNotDefined(e),this.nodes.set(e,new FA(e,t))}defineComputed(e,t,n){this.assertNotDefined(e);let r=e=>this.read(e);this.nodes.set(e,new PA(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,l_.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,l_.runInAction)(()=>n.set(t))}runInAction(e){(0,l_.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 IA(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 VA(e,t,n){return e+`\0`+t+`\0`+(n??``)}function HA(e,t){return new Set(gg(e.presets).filter(n=>yg(e,n).path===`root`?t.root!==void 0:t.presets?.[n]?.root!==void 0))}function UA(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 WA(e,t){let n=new Map;for(let t of VS(e.projectDir,e.cwd,e.configFile)){let{dir:e,name:r}=UA(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 GA(e){return e.filter(Boolean).join(`
|
|
185
|
+
`)||null}var KA=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=VA(e,t,n),i=this.entries.get(r);if(i)return this.entries.delete(r),this.entries.set(r,i),i;let a=this.loadFromDisk(e,t,n),o={projectDir:e,cwd:t,configFile:n,configFilePath:null,lastError:a.error,lastWarning:a.warning,state:a.state??this.buildState(t,null,[]),watcher:null,watcherKey:null};if(this.entries.set(r,o),this.entries.size>this.maxEntries){let e=this.entries.entries().next().value;if(e!==void 0){let[t,n]=e;n.state.registry.dispose(),n.state.validatorDisposers.forEach(e=>e()),n.watcher?.release(),this.entries.delete(t)}}return this.refreshWatcher(o,a.resolvedPath),this.observers.onReload?.(o),o}reload(e,t,n){this.reloadInto(this.getOrCreate(e,t,n))}reloadInto(e){let t=this.loadFromDisk(e.projectDir,e.cwd,e.configFile);e.lastWarning=t.warning,e.lastError=t.error,t.state!==null&&(e.state.registry.dispose(),e.state.validatorDisposers.forEach(e=>e()),e.state=t.state),this.refreshWatcher(e,t.resolvedPath),this.observers.onReload?.(e)}loadFromDisk(e,t,n){let r=US(e,t,n),i=r.kind===`file`?r.path:null,a=[qS(e,t),GS(r)],o;try{o=this.buildState(t,i,a)}catch(e){return e instanceof Wo&&a.push(...e.warnings),{resolvedPath:i,warning:GA(a),state:null,error:e instanceof Wo||e instanceof Error?e.message:String(e)}}return{resolvedPath:i,warning:GA(a),state:o,error:null}}buildState(e,t,n){let r=JS(t,$E),{config:i,raw:a}=r;n.push(...r.warnings);let o=ZS(r,t??`<default>`),s=new BA,c=new ly(s,o.globals.default_empty_value??``,this.deps.gitService,this.deps.sessionState),l,u=[];try{l=OA(o,c,{cwd:e}),n.push(...l.loadWarnings);for(let{key:e,spec:t}of uO(o))u.push(rO(e,t));for(let{key:e,spec:t}of qE(o))u.push(JE(e,t))}catch(e){for(let e of u)e();throw c.dispose(),e}return{config:o,store:s,registry:c,compiled:l,neededInputPaths:OD(o),lastRenderCellsBySegment:new Map,validatorDisposers:u,authoredRoots:HA(i,a)}}refreshWatcher(e,t){e.configFilePath=t;let n=WA(e,t),r=`config:${e.projectDir}:${e.cwd}:${e.configFile??``}:${JSON.stringify(n)}`;e.watcher!==null&&e.watcherKey===r||(e.watcher?.release(),e.watcherKey=r,e.watcher=this.deps.watchers.acquire(r,n,()=>this.onConfigChanged(e)))}onConfigChanged(e){Q(`info`,`config change detected for entry projectDir=${e.projectDir} cwd=${e.cwd}`),this.reloadInto(e)}get size(){return this.entries.size}firstState(){return this.entries.values().next().value?.state??null}};const qA=16384;var JA=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<qA){this.rollingTimestamps.push(e);return}this.rollingTimestamps[this.rollingHead]=e,this.rollingHead=(this.rollingHead+1)%qA}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:Bw,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 YA={load:()=>({}),save:()=>{},flush:()=>{}};function XA(e){let t=new Map;for(let[n,r]of Object.entries(e))t.set(n,new Map(Object.entries(r)));return t}var ZA=class{sessions;storage;atom=(0,l_.createAtom)(`SessionState`);constructor(e=YA,t=256){this.maxSessions=t,this.storage=e,this.sessions=new Map,this.hydrateFromStorage()}useStorage(e){this.storage=e,this.hydrateFromStorage()}hydrateFromStorage(){this.sessions=XA(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,l_.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,l_.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,l_.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 QA=(e,t)=>D(t);function $A(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 ej=class{timer=null;pending=null;constructor(e,t=500,n=QA){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 $A(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 tj={default_bg:`string`,default_fg:`string`,default_empty_value:`string`,default_separator:`string`,default_truncate_marker:`string`,palette:`string`,look:`string`,preset:`string`,style:`string`,progression:`string`,autoWrap:`boolean`,padding:`number`,charset:`string`,updateNotice:`boolean`,colorCompatibility:`string`,menuGlyph:`string`},nj=new Set([`1`,`true`]),rj=new Set([`0`,`false`,``]);function ij(e,t){let n=kj(e),r=n.scope===`segment-palette`?`string`:tj[n.field];if(r===`string`)return JSON.stringify(t);if(r===`number`){let n=Number(t);if(!Number.isFinite(n))throw Error(`persistValueText: "${e}" expects a number, got "${t}"`);return String(n)}if(nj.has(t))return`true`;if(rj.has(t))return`false`;throw Error(`persistValueText: "${e}" expects boolean-ish (1, 0, true, false), got "${t}"`)}function aj(e){try{return r.readFileSync(e,`utf8`)}catch(e){if(e.code===`ENOENT`)return null;throw e}}function oj(e,t,n){try{if(t===null){r.rmSync(e,{force:!0});return}r.mkdirSync(c.dirname(e),{recursive:!0}),ke(e,t)}catch(t){let r=`config write failed (${e}): ${t.message}`;throw n(`error`,r),Error(r)}}function sj(e){return/^\s*$/.test(e)?null:so(e)}function cj(e,t){return e!==null&&lo(e,t)!==void 0}function lj(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(lj),...i}}return e}function uj(e){if(!Ks(e))return lj(e);let{rows:t,...n}=e;return{rows:Object.fromEntries(Object.entries(t).map(([e,t])=>[e,lj(t)])),...n}}const dj=ZE,fj=dj.segments,pj=dj.presets,mj=dj.root;function hj(e,t,n,r){if(!cj(e,t)&&n===void 0)throw new $(`cannot edit ${r}: neither the config file nor the bundled default declares ${t.join(`.`)}`)}function gj(e,t){let n=wy(t);return t.scope===`segment-palette`&&hj(e,[`segments`,t.segment],fj[t.segment],n.join(`.`)),n}function _j(e){return so(vo(e))}function vj(){return Object.entries(mj.rows).map(([e,t])=>{let n=lj(t);return{path:[`root`],fragment:_j({rows:{[e]:n}}),unit:{path:[`root`,`rows`,e],value:n}}})}function yj(e,t){let n=e===null?void 0:lo(e,t);return n===void 0?null:{path:t,fragment:n,unit:null}}function bj(e,t){if(t===void 0)return null;let n=uj(t);return{path:e,fragment:_j(n),unit:{path:e,value:n}}}function xj(e,t){let n=[`presets`,t],r=[...n,`root`],i=pj[t];hj(e,n,i,r.join(`.`));let a=yj(e,r)??bj(r,i?.root);return a!==null&&Ro(a.fragment)?a:null}function Sj(e,t){let n=Lo(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 Cj(e,t){return[...vj(),yj(e,[`root`]),xj(e,t)].filter(e=>e!==null).reduce(Sj,new Map)}function wj(e,t,n){for(let{node:r,...i}of Cj(e,t).values())if(Bo(r,n))return i;throw new $(`${Tj(e,t).join(`.`)} holds no placement "${n}" — the bar you clicked is stale (it reloads on the next render), or the action names a placement the layout never held`)}function Tj(e,t){return xj(e,t)?.path??[`root`]}function Ej(e,t){return t.scope===`preset-root`?Tj(e,t.preset):wy(t)}function Dj(e,{unit:t}){return t===null?e:Mo(e,t.path,vo(t.value),go)}function Oj(e){let t=Cy(e);if(t===null)throw Error(`"${e}" is not a valid persist target`);return t}function kj(e){let t=Oj(e);if(t.scope===`preset-root`)throw Error(`"${e}" names a layout, not a value`);return t}function Aj(e,t,n,r){jj(t,r),oj(t,r,e.logger),e.record(t,n,r)}function jj(e,t){try{return ZS(YS(e,t,$E),e)}catch(e){throw e instanceof Wo?new $(`refused: the config file would not load after this click — ${e.message}`):e}}function Mj(e,t){let n=kj(t),r=sj(aj(e)??``),i=r===null?void 0:lo(r,wy(n));return i!==void 0&&`value`in i?i.value:void 0}function Nj(e,t,n){let r=aj(t);Aj(e,t,r,n.reduce((e,[t,n])=>Mo(e,gj(sj(e),kj(t)),ij(t,n),go),r??``))}function Pj(e,t){return No(e,t,t[0]===`presets`&&t.length>2&&!tD(t[1])?2:0)}function Fj(e,t,n){let r=n.map(Oj),i=aj(t);if(i===null)return;let a=r.reduce((e,t)=>Pj(e,Ej(sj(e),t)),i);a!==i&&Aj(e,t,i,a)}function Ij(e){let t=e===null?void 0:lo(e,[`presets`]),n=new Set([...eD,...t?.kind===`object`?t.entries.map(e=>e.key):[]].map(yl));return Array.from({length:n.size+1},(e,t)=>`custom-${t+1}`).find(e=>!n.has(yl(e)))}function Lj(e,t,n,r,i){let a=aj(t),o=sj(a??``),s=Ij(o),c=[`presets`,s],l=xj(o,n),u=[...l===null?[]:[[[...c,`root`],l.unit===null?fo(a??``,l.fragment):vo(l.unit.value)]],...Object.keys(r).length===0?[]:[[[...c,`globals`],vo(r)]]],d=i.map(([e,t])=>{let n=Sy(s,e);return[gj(o,kj(n)),ij(n,t)]});return Aj(e,t,a,[...u,...d].reduce((e,[t,n])=>Mo(e,t,n,go),Mo(a??``,c,`{}`,go))),s}function Rj(e,t,n){if(tD(n))throw new $(`cannot delete preset "${n}": it is bundled — reset its settings instead`);let r=[`presets`,n],i=aj(t),a=sj(i??``);if(i===null||a===null||lo(a,r)===void 0)throw new $(`cannot delete preset "${n}": ${t} declares no ${r.join(`.`)} — the bar you clicked is stale; it reloads on the next render`);let o=lo(a,[`globals`,`preset`]);Aj(e,t,i,[r,...o?.kind===`string`&&o.value===n?[[`globals`,`preset`]]:[]].reduce((e,t)=>Pj(e,t),i))}function zj(e,t,n,r){let i=Oj(n);if(i.scope!==`preset-root`)throw Error(`"${n}" is not a "presets.<name>.root" target`);let a=aj(t),o=r.op===`remove`?r.target:r.anchor,s=wj(sj(a??``),i.preset,o),c=Dj(a??``,s),{after:l,placed:u}=Bj(c,s.path,r,()=>{let e=jj(t,c);return gg(e.presets).map(t=>yg(e,t).node)});if(l===null)throw new $(`${s.path.join(`.`)} in ${t} has no placement "${o}" — the bar you clicked is stale (it reloads on the next render), or the action names a placement the layout never held`);return Aj(e,t,a,l),u}function Bj(e,t,n,r){switch(n.op){case`remove`:return{after:Ho(e,t,n.target),placed:null};case`insert`:{let i=kE(n.segment,n.anchor,r());return{after:Uo(e,t,i,n.anchor,n.relation),placed:i}}}}const Vj={load:()=>({}),save:()=>{}},Hj=new Set(fy.map(e=>e.sessionKey)),Uj={past:[],future:[]},Wj=e=>e.kind===`session`?`session:${e.key}`:`file:${e.file}`;var Gj=class{state=new Map;constructor(e,t,n=Vj){this.sessionState=e,this.logger=t,this.storage=n,this.state=new Map(Object.entries(n.load()))}useStorage(e){this.storage=e,this.state=new Map(Object.entries(e.load()))}depth(e){let{past:t,future:n}=this.state.get(e)??Uj;return{undo:t.length,redo:n.length}}history(e){return this.state.get(e)??Uj}begin(){let e=new Map,t=(t,n)=>{let r=e.get(t)??new Map,i=r.get(Wj(n));r.set(Wj(n),i===void 0?n:{...n,before:i.before}),e.set(t,r)},n=this.sessionState,r=(e,r,i)=>{let a=r.filter(e=>Hj.has(e)).map(t=>({key:t,before:n.get(e,t)}));i();for(let{key:r,before:i}of a)t(e,{kind:`session`,key:r,before:i,after:n.get(e,r)})};return{sessionState:{get:(e,t)=>n.get(e,t),set:(e,t,i)=>r(e,[t],()=>n.set(e,t,i)),setBatch:(e,t)=>r(e,t.map(e=>e.key),()=>n.setBatch(e,t)),clear:(e,t)=>r(e,[t],()=>n.clear(e,t))},file:(e,n,r,i)=>t(e,{kind:`file`,file:n,before:r,after:i}),commit:()=>{let t=[...e];e.clear();for(let[e,n]of t){let t=[...n.values()].filter(e=>e.before!==e.after);t.length!==0&&this.put(e,{past:Jj([...this.history(e).past,t]),future:[]})}}}}undo(e){let{past:t,future:n}=this.history(e),r=t.at(-1);if(r===void 0)throw new $(`undo: nothing to undo`);return this.apply(e,r,`before`,`undo`,{past:t.slice(0,-1),future:Jj([...n,r])}),r}redo(e){let{past:t,future:n}=this.history(e),r=n.at(-1);if(r===void 0)throw new $(`redo: nothing to redo`);return this.apply(e,r,`after`,`redo`,{past:Jj([...t,r]),future:n.slice(0,-1)}),r}apply(e,t,n,r,i){let a=n===`before`?`after`:`before`,o=t.filter(t=>this.read(e,t)!==t[a]);if(o.length>0){let t=new Set(o.map(Wj));throw this.put(e,{past:Yj(this.history(e).past,t),future:Yj(this.history(e).future,t)}),new $(`${r}: ${o.map(Zj).join(`, `)} changed since that edit — refusing to overwrite it; this session's undo history no longer steps it`)}let s=[];try{for(let r of t)this.write(e,r,r[n]),s.push(r);this.put(e,i)}catch(t){try{for(let t of s.reverse())this.write(e,t,t[a])}catch(e){throw Error(`${t.message}; and putting the step back failed, so it is half-applied: ${e.message}`)}throw t}}read(e,t){return t.kind===`session`?this.sessionState.get(e,t.key):aj(t.file)}write(e,t,n){t.kind===`file`?oj(t.file,n,this.logger):n===null?this.sessionState.clear(e,t.key):this.sessionState.set(e,t.key,n)}put(e,t){let n=new Map(this.state);for(n.delete(e),(t.past.length>0||t.future.length>0)&&n.set(e,t);n.size>32||Kj(n)>8388608;){let[e,t]=n.entries().next().value;n.size>1?n.delete(e):n.set(e,qj(t))}this.storage.save(Object.fromEntries(n)),this.state=n}};function Kj(e){let t=0;for(let{past:n,future:r}of e.values())for(let e of[...n,...r])for(let n of e)t+=(n.before?.length??0)+(n.after?.length??0);return t}function qj({past:e,future:t}){return e.length>0?{past:e.slice(1),future:t}:{past:e,future:t.slice(1)}}function Jj(e){return e.slice(-50)}function Yj(e,t){return e.map(e=>e.filter(e=>!t.has(Wj(e)))).filter(e=>e.length>0)}function Xj(e){return e.map(Zj).join(`, `)}function Zj(e){return e.kind===`session`?`session setting "${e.key}"`:e.file}function Qj(e){if(typeof e!=`object`||!e)return!1;let t=e,n=e=>e===null||typeof e==`string`;return(t.kind===`session`&&typeof t.key==`string`||t.kind===`file`&&typeof t.file==`string`)&&n(t.before)&&n(t.after)}function $j(e){return Array.isArray(e)&&e.every(e=>Array.isArray(e)&&e.every(Qj))}function eM(e){if(typeof e!=`object`||!e)return!1;let t=e;return $j(t.past)&&$j(t.future)}function tM(e,t){return{load:()=>{let n;try{n=r.readFileSync(e,`utf8`)}catch(e){let n=e.code;return n!==`ENOENT`&&t(`warn`,`settings-history read failed (${n}); starting empty`),{}}try{let e=JSON.parse(n);if(typeof e==`object`&&e&&!Array.isArray(e)&&Object.values(e).every(eM))return e}catch{}return t(`warn`,`settings-history load: unexpected shape, starting empty`),{}},save:n=>{try{r.mkdirSync(c.dirname(e),{recursive:!0}),ke(e,JSON.stringify(n),384)}catch(e){let n=`settings-history write failed — the change landed but is not undoable: ${e.message}`;throw t(`error`,n),Error(n)}}}}function nM(e){let t=Ee({bin:`tmux`,args:[`-S`,e.socket,`display`,`-p`,`-t`,e.pane,`#{client_termfeatures}`],timeoutMs:2e3,category:`doctor.tmux`});return t.ok?{kind:`ok`,value:t.stdout.trim().split(`,`).filter(e=>e!==``)}:{kind:`failed`,reason:`tmux display -p failed (${t.error??[t.reason,t.stderr.trim()].filter(e=>e!==``).join(`: `)})`}}function rM(){return{probeTmux:nM,claudeSettingsPath:Vw()}}function iM(e){return r.existsSync(e.claudeSettingsPath)?r.readFileSync(e.claudeSettingsPath,`utf8`):``}function aM(e){if(/^\s*$/.test(e))return{};let t=_o.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 oM(e,t){return t===void 0?{kind:`unreported`}:t===null?{kind:`outside`}:{kind:`inside`,hint:t,termfeatures:e.probeTmux(t)}}function sM(e){try{return aM(iM(e))}catch(t){throw Error(`cannot read ${e.claudeSettingsPath}: ${t instanceof Error?t.message:String(t)}`,{cause:t})}}function cM(e,t){return{tmux:oM(e,t),claudeSettingsEnv:sM(e)}}function lM(e,t,n){switch(t.kind){case`claude-settings-env`:{let i=Mo(iM(e),[`env`,t.name],JSON.stringify(t.value),_o);return r.mkdirSync(c.dirname(e.claudeSettingsPath),{recursive:!0}),ke(e.claudeSettingsPath,i),{...n,claudeSettingsEnv:sM(e)}}default:return t.kind}}function uM(e){if(!e)throw new $(`session id is required`);if(e.includes(`/`)||e.includes(`..`))throw new $(`invalid session id "${e}"`);return e}function dM(e){return fM(()=>decodeURIComponent(e))}function fM(e){try{return e()}catch(e){throw e instanceof URIError?new $(`malformed wire encoding: ${e.message}`):e}}function pM(e,t){let n=Ee({bin:`/usr/bin/pbcopy`,stdinInput:e,category:`click.pbcopy`});if(!n.ok){if(n.reason===`rate-limited`){t.dlog(`warn`,`click.pbcopy rate-limited: ${n.error??``}`);return}throw Error(`pbcopy failed (${n.reason}, exit ${n.exitCode??`null`})`)}}const mM=(e,t)=>pM(dM(e),t),hM=(e,t)=>{let n=Ee({bin:`/usr/bin/open`,args:[`-a`,`Visual Studio Code`,dM(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`})`)}},gM=(e,t)=>pM(dM(e),t),_M=(e,t)=>pM(dM(e),t),vM=(e,t)=>{let n=uM(dM(e));t.sessionState.get(n,`toolbar-expanded`)?t.sessionState.clear(n,`toolbar-expanded`):t.sessionState.set(n,`toolbar-expanded`,`1`)},yM=(e,t)=>{let[n=``,...r]=fM(()=>Nw(e)),i=uM(n);if(r.length===0)throw new $(`set-state: <key>/<value> is required (have keys: ${nO().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: ${nO().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=iO(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})`)},bM=/^-?\d+$/;function xM(e,t,n){return e>n?t:e<t?n:e}const SM=(e,t)=>{let[n=``,r=``,i=``]=fM(()=>Nw(e)),a=uM(n);if(!r)throw new $(`step-state: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!bM.test(i))throw new $(`step-state: delta must be an integer, got "${i}"`);let o=parseInt(i,10),s=aO(r);if(!s)throw new $(`step-state: key "${r}" is not a bounded (range) state key (have keys: ${nO().join(`, `)})`);let c=t.sessionState.get(a,r),l=c&&bM.test(c)?CM(s,parseInt(c,10)):wM(`step-state`,r,s,cO(t.configFor(OM(t,a)),e=>t.sessionState.get(a,e),r)),u=xM(l+o,s.min,s.max),d=iO(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})`)};function CM(e,t){return Math.max(e.min,Math.min(e.max,t))}function wM(e,t,n,r){if(r===null)return n.min;if(!bM.test(r))throw new $(`${e}: "${t}" shows ${JSON.stringify(r)} before any click, not an integer to step`);return CM(n,parseInt(r,10))}const TM=`render-origin`;function EM(e){return JSON.stringify(e)}function DM(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 OM(e,t){let n=e.sessionState.get(t,TM);if(n===null)throw new $(`session ${t} has not rendered yet — no config to act on`);return DM(n)}function kM(e){return WS(e.projectDir,e.cwd,e.configFile??void 0)}function AM(e,t){return kM(OM(e,t))}function jM(e,t){return{record:(n,r,i)=>e.journal.file(t,n,r,i),logger:e.dlog}}const MM=(e,t)=>{let[n=``,r=``,i=``]=fM(()=>Nw(e)),a=uM(n);if(!r)throw new $(`set-config: <key>/<value> is required (have keys: ${BE().join(`, `)})`);let o=VE(r,i);if(!o.ok)throw new $(`set-config: ${o.reason}`);let s=AM(t,a);Nj(jM(t,a),s,[[r,o.value]]),t.dlog(`info`,`set-config: ${r}=${o.value} → ${s} (session=${a})`)},NM=(e,t)=>{let[n=``,r=``,i=``]=fM(()=>Nw(e)),a=uM(n);if(!r)throw new $(`step-config: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!bM.test(i))throw new $(`step-config: delta must be an integer, got "${i}"`);let o=parseInt(i,10),s=HE(r);if(!s)throw new $(`step-config: key "${r}" is not a bounded (range) config key (have keys: ${BE().join(`, `)})`);let c=OM(t,a),l=kM(c),u=Mj(l,r),d=typeof u==`number`?CM(s,u):wM(`step-config`,r,s,WE(t.configFor(c),r)),f=xM(d+o,s.min,s.max),p=VE(r,String(f));if(!p.ok)throw new $(`step-config: ${p.reason}`);Nj(jM(t,a),l,[[r,p.value]]),t.dlog(`info`,`step-config: ${r} ${d}→${p.value} (by ${o}) → ${l} (session=${a})`)},PM=(e,t)=>{let[n=``]=fM(()=>Nw(e)),r=uM(n),i=OM(t,r),a=GD(t.configFor(i),e=>t.sessionState.get(r,e));if(a.length===0){t.dlog(`info`,`save: nothing unsaved (session=${r})`);return}let o=a.map(e=>{let t=iO(e.sessionKey,e.value);if(!t.ok)throw new $(`save: ${t.reason}`);return[e.target,t.value]}),s=kM(i);Nj(jM(t,r),s,o),t.reloadConfig(i);for(let e of a)t.sessionState.clear(r,e.sessionKey);t.dlog(`info`,`save: ${o.map(([e,t])=>`${e}=${t}`).join(` `)} → ${s} (session=${r})`)},FM=(e,t)=>{let[n=``]=fM(()=>Nw(e)),r=uM(n),i=OM(t,r),a=KD(t.configFor(i),e=>t.sessionState.get(r,e)),o=a.picks.map(e=>{let t=iO(e.sessionKey,e.value);if(!t.ok)throw new $(`save-preset: ${t.reason}`);return[e.configKey,t.value]}),s=kM(i),c=Lj(jM(t,r),s,a.from,a.globals,o);t.reloadConfig(i);for(let e of fy)t.sessionState.clear(r,e.sessionKey);t.sessionState.set(r,dy.preset.sessionKey,c),t.dlog(`info`,`save-preset: ${[`${c} from=${a.from}`,...o.map(([e,t])=>`${e}=${t}`)].join(` `)} → ${s} (session=${r})`)},IM=(e,t)=>{let[n=``,r=``]=fM(()=>Nw(e)),i=uM(n);if(!r)throw new $(`delete-preset: <name> is required (shape: <sessionId>/<name>)`);let a=OM(t,i),o=kM(a);Rj(jM(t,i),o,r),t.reloadConfig(a);let s=dy.preset.sessionKey;t.sessionState.get(i,s)===r&&t.sessionState.clear(i,s),t.dlog(`info`,`delete-preset: ${r} ← ${o} (session=${i})`)},LM=(e,t)=>{let[n=``,...r]=fM(()=>Nw(e)),i=uM(n),a=BE(),o=r.length===0?[``]:r.filter(e=>!a.includes(e));if(o.length>0)throw new $(`reset-config: unknown config key "${o.join(`", "`)}" (have: ${a.join(`, `)})`);let s=OM(t,i),c=kM(s),l=r.map(qD),u=l.flatMap(e=>e.fileKeys),d=l.flatMap(e=>e.sessionKeys);Fj(jM(t,i),c,u),t.reloadConfig(s);for(let e of d)t.sessionState.clear(i,e);t.dlog(`info`,`reset-config: ${[...u,...d.map(e=>`session:${e}`)].join(` `)} ← ${c} (session=${i})`)},RM=(e,t)=>{let[n=``,r=``,i=``]=fM(()=>Nw(e)),a=uM(n);if(!r)throw new $(`apply-layout-op: <key>/<op> is required (have: ${BE().join(`, `)})`);let o=VE(r,i);if(!o.ok)throw new $(`apply-layout-op: ${o.reason}`);let s=OE(o.value);if(s===null)throw new $(`apply-layout-op: "${o.value}" is not a layout op token`);let c=kM(OM(t,a)),l=zj(jM(t,a),c,r,s);t.dlog(`info`,`apply-layout-op: ${r} ${o.value} → ${c} placed=${JSON.stringify(l)} (session=${a})`)},zM=(e,t)=>{let[n=``]=fM(()=>Nw(e)),r=uM(n);t.journal.commit();let i=t.history.undo(r);t.dlog(`info`,`undo: restored ${Xj(i)} (session=${r})`)},BM=(e,t)=>{let[n=``]=fM(()=>Nw(e)),r=uM(n);t.journal.commit();let i=t.history.redo(r);t.dlog(`info`,`redo: re-applied ${Xj(i)} (session=${r})`)},VM=(e,t)=>{uM(dM(e)),t.applyUpdate()},HM=`client-hints`;function UM(e,t){let n=e.sessionState.get(t,HM);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 iC(r)}function WM(e,t,n){let r=rb(n);e.sessionState.setBatch(t,sb(r)),e.dlog(`info`,`doctor: ${r.map(e=>`${e.check.name}=${e.verdict.ok?`ok`:`failed`}`).join(` `)} (session=${t})`)}const GM=(e,t)=>{let n=uM(dM(e));WM(t,n,cM(t.doctor,UM(t,n).tmux))},KM=(e,t)=>{let[n=``,r=``]=fM(()=>Nw(e)),i=uM(n),a=ib(r);if(a===void 0)throw new $(`doctor-fix: unknown check "${r}"`);let o=cM(t.doctor,UM(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=lM(t.doctor,s.fix,o);t.dlog(`info`,`doctor-fix: ${a.name} → ${s.fix.kind} ${s.fix.name}=${s.fix.value} (session=${i})`),WM(t,i,c)},qM=`config-override`,JM=new Map([[hw,mM],[`load-config`,(e,t)=>{let n=e.indexOf(`/`);if(n===-1)throw new $(`load-config: expected <sessionId>/<path> (missing separator)`);let r=uM(fM(()=>decodeURIComponent(e.slice(0,n)))),i=fM(()=>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,qM),t.dlog(`info`,`load-config: override cleared (session=${r})`)):(t.sessionState.set(r,qM,i),t.dlog(`info`,`load-config: ${i} (session=${r})`))}],[gw,hM],[pw,yM],[mw,SM],[bw,MM],[xw,NM],[Tw,LM],[Sw,PM],[Cw,FM],[ww,IM],[Ew,RM],[Dw,zM],[Ow,BM],[vw,gM],[yw,_M],[_w,vM],[kw,VM],[Aw,GM],[jw,KM]]),YM=new Set([pw,mw,bw,xw,Tw,Sw,Cw,ww,Ew,Dw,Ow,_w,kw,Aw,jw]),XM=(e,t)=>{let n=[],r=!1,i=null;for(let{verb:a,value:o}of Lw(Fw(e))){if(!i&&YM.has(a)){let e=Nw(o);e.length>0&&e[0]&&(i=e[0])}let e=JM.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(`
|
|
186
|
+
`));let e=`dispatch: ${n.join(`; `)}`;throw r?Error(e):new $(e)}};function ZM(e){return(t,n)=>{let r=n.history.begin(),i=[];try{e(t,{...n,sessionState:r.sessionState,journal:r})}catch(e){i.push(e)}try{r.commit()}catch(e){i.push(e)}if(i.length===1)throw i[0];if(i.length>1)throw Error(i.map(e=>String(e.message??e)).join(`; `))}}const QM=new Map([...JM,[fw,XM]].map(([e,t])=>[e,ZM(t)]));Object.freeze([...QM.keys()]);const $M=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`]),eN=[[`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 tN(e){let t={missingRequired:[],typeMismatches:[],unknownTopLevelFields:[]},n=typeof e==`object`&&e&&!Array.isArray(e)?e:{};for(let[e,r]of eN){let i=rN(n,e);if(i==null)t.missingRequired.push(e);else{let n=nN(i);n!==r&&t.typeMismatches.push({path:e,expected:r,got:n})}}for(let e of Object.keys(n))$M.has(e)||t.unknownTopLevelFields.push(e);return{data:e,report:t}}function nN(e){return Array.isArray(e)?`array`:typeof e==`string`&&!e.isWellFormed()?`ill-formed string`:typeof e}function rN(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 iN(e,t){switch(e){case`vars`:return{what:e,vars:aN(t)};case`segments`:return{what:e,segments:uN(t)};case`config`:return{what:e,config:mN(t)}}}function aN(e){if(e===null)return[];let{store:t,registry:n,config:r}=e,i=cN(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,...oN(r),lastError:a===void 0?null:{timestampMs:a.timestamp,message:a.message},ageMs:sN(r.lastUpdatedMs())})}return o}function oN(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 sN(e){return e===null?null:Math.max(0,Date.now()-e)}function cN(e){let t=new Map;for(let[n,r]of Object.entries(e.variables))t.set(n,lN(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}`,lN(i));return t}function lN(e){return e.kind}function uN(e){if(e===null)return[];let{store:t,config:n,lastRenderBySegment:r}=e,i=new Set(t.names()),a=fN(n),o=dN(n),s=[];for(let e of a){let t=n.segments[e];t&&s.push({name:e,description:t.description??null,template:t.template,referencedVars:pN(t.template,n.helpers,i),placements:(o.get(e)??[]).map(e=>({id:e,lastRender:r.get(e)??null}))})}return s}function dN(e){let t=new Map;for(let n of gg(e.presets))for(let r of ts(yg(e,n).node)){if(r.kind!==`segment`)continue;let e=t.get(r.name)??[],n=Zo(r);e.includes(n)||t.set(r.name,[...e,n])}return t}function fN(e){let t=[],n=new Set;for(let r of ts(Ys(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 pN(e,t,n){let r=new Set;for(let i of $g(e,t).keys()){if(n.has(i)){r.add(i);continue}let e=i.split(`.`);for(;e.length>1;){e.pop();let t=e.join(`.`);if(n.has(t)){r.add(t);break}}}return Array.from(r).sort()}function mN(e){return e===null?null:e.config}const hN=[`vars`,`segments`,`config`];function gN(e){return typeof e==`string`&&hN.includes(e)}function _N(e){return Math.max(1,e-2)}var vN=class{thresholds={LOW:50,MEDIUM:80};getContextUsageThresholds(){return this.thresholds}ratioPercentages(e,t){let n=Math.min(100,Math.max(0,Math.round(e/t*100)));return{percentage:n,contextLeftPercentage:Math.max(0,100-n)}}calculateContextFromHookData(e){let t=e.context_window;if(!t?.current_usage)return D(`No current_usage in hook data, falling back to transcript parsing`),null;let n=t.current_usage,r=t.context_window_size,i=(n.input_tokens||0)+(n.cache_creation_input_tokens||0)+(n.cache_read_input_tokens||0);D(`Native current_usage: input=${n.input_tokens}, cache_create=${n.cache_creation_input_tokens}, cache_read=${n.cache_read_input_tokens}, total=${i} (limit: ${r})`);let a=this.ratioPercentages(i,r);return{totalTokens:i,maxTokens:r,percentage:t.used_percentage==null?a.percentage:Math.round(t.used_percentage),contextLeftPercentage:t.remaining_percentage==null?a.contextLeftPercentage:Math.round(t.remaining_percentage)}}async calculateContextTokensFromTranscript(e,t){try{D(`Calculating context tokens from transcript: ${e}`);let n=await RO(e);if(n.length===0)return D(`No entries in transcript`),Y;let r=null;for(let e=n.length-1;e>=0;e--){let t=n[e];if(t&&t.message?.usage?.input_tokens&&t.isSidechain!==!0){r=t,D(`Context segment: Found most recent entry at ${t.timestamp.toISOString()}, stopping search`);break}}if(r?.message?.usage){let e=r.message.usage,n=(e.input_tokens||0)+(e.cache_read_input_tokens||0)+(e.cache_creation_input_tokens||0);return D(`Most recent main chain context: ${n} tokens (limit: ${t})`),J({totalTokens:n,maxTokens:t,...this.ratioPercentages(n,t)})}return D(`No main chain entries with usage data found`),Y}catch(e){return X(`context transcript: ${e instanceof Error?e.message:String(e)}`)}}async getContextInfo(e){let t=this.calculateContextFromHookData(e);if(t)return J(t);let n=e.context_window?.context_window_size??2e5;return this.calculateContextTokensFromTranscript(e.transcript_path,n)}},yN=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=nD(t);if(n&&r!==0&&n.cursor.mtimeMs===r)return this.touch(e,n),{kind:`ok`,value:n.value};let i=await HO(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 bN={messageCount:0,recent:[]};function xN(e,t){if(t.isSidechain)return e;let n=[...e.recent,t];return{messageCount:e.messageCount+ +!!IO(t),recent:n.length>20?n.slice(-20):n}}function SN(e){let t=null,n=null;for(let r of e){let e=r.type||r.message?.role||r.message?.type;if(IO(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 CN=class{fold=new yN(bN,xN);async getMetricsInfo(e,t){if(D(`Getting metrics from hook data for session: ${e}`),!t.cost)return Y;let n=await this.fold.read(e,t.transcript_path);return n.kind===`failed`?X(`metrics (${e}): ${n.reason}`):J({responseTime:t.cost.total_api_duration_ms/1e3,lastResponseTime:SN(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 wN={command:null,todos:[],pending:[],done:[]};function TN(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 EN(e,t){if(t.isSidechain)return e;let n=IO(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=TN(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 DN(e){return{command:e.command,todos:e.todos,running:e.pending.reduce((e,t)=>TN(e,t.name),[]),done:e.done}}var ON=class{fold=new yN(wN,EN);async getActivityInfo(e,t){let n=await this.fold.read(e,t.transcript_path);return n.kind===`failed`?X(`activity (${e}): ${n.reason}`):J(DN(n.value))}};const kN=new Map;function AN(e){if(!e)return``;let t=e.indexOf(`,`);return t<0?e:e.slice(0,t)}var jN=class{async getSessionId(){if(!process.env.TMUX_PANE)return Y;let e=AN(process.env.TMUX),t=kN.get(e);if(t!==void 0)return t;D(`Getting tmux session ID, TMUX_PANE: ${process.env.TMUX_PANE}`);let n=await Te({bin:`tmux`,args:[`display-message`,`-p`,`#S`],timeoutMs:1e3,category:`tmux`}),r=n.ok?n.stdout.trim()?J(n.stdout.trim()):Y:X(`tmux display-message: ${n.reason}`);return kN.set(e,r),r}isInTmux(){return!!process.env.TMUX_PANE}},MN=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 NN=new JA;Ce(NN.launchStats);const PN=new Mv({counters:NN,logger:Q}),FN=new Bv({watchers:PN,logger:Q}),IN=new ek,LN=new ZA,RN=new Gj(LN,Q),zN=new MN(We()),BN=new vN,VN=new CN,HN=new ON,UN=new jN,WN=new KA({gitService:FN,sessionState:LN,watchers:PN},{observers:{onReload:e=>Q(`info`,`config loaded projectDir=${e.projectDir} cwd=${e.cwd} file=${e.configFilePath??`<bundled default>`} error=${e.lastError===null?`none`:JSON.stringify(e.lastError)} warning=${e.lastWarning===null?`none`:JSON.stringify(e.lastWarning)}`)}}),GN=60*1e3;function KN(){let e=import.meta.url,n=[];e.startsWith(`file://`)&&n.push(w(e)),t.argv[1]&&n.push(t.argv[1]);let i=new Map;for(let e of n)try{i.set(e,r.statSync(e).mtimeMs)}catch{}let a=null,o=()=>{for(let[e,t]of i)try{if(r.statSync(e).mtimeMs!==t){Q(`info`,`binary mtime changed (${e}); shutting down`),a&&clearInterval(a),cP(0);return}}catch(e){Q(`warn`,`bin stat failed: ${e.message}`)}};return{arm(){i.size!==0&&(a=setInterval(o,GN),a.unref())},checkNow:o}}const qN=KN(),JN=TO({entryUrl:import.meta.url,intervalMs:GN,releaseIntervalMs:216e5,registryUrl:t.env.CC_CANDYBAR_REGISTRY_URL??`https://registry.npmjs.org`,fetchImpl:fetch,onApplied:()=>qN.checkNow(),log:Q});let YN=null,XN=null,ZN=0;function QN(){t.on(`uncaughtException`,e=>{Q(`error`,`uncaughtException: ${e.stack||e.message}`),cP(1)}),t.on(`unhandledRejection`,e=>{Q(`error`,`unhandledRejection: ${String(e)}`),cP(1)});for(let e of[`SIGINT`,`SIGTERM`,`SIGHUP`])t.on(e,()=>{Q(`info`,`received ${e}, shutting down`),cP(0)});try{ZN=RC(t.env)}catch(e){Q(`error`,`refusing to boot: ${e.message}`),cP(1);return}YN=jT(t.pid);let e=VT(UT(YN));if(!e.decision.allow){Q(`warn`,`fork-bomb breaker: ${e.decision.reason}; refusing to boot`),cP(1);return}XN=e.registryPath,r.mkdirSync(Me(),{recursive:!0}),Fe(Ne()),LN.useStorage(new ej(Re(),500,Q)),RN.useStorage(tM(ze(),Q)),PT({anchor:NT(t.env),isAlive:FT,onOrphaned:e=>{Q(`info`,`parent watchdog: ${e}; shutting down`),cP(0)}}),$N(g.createServer({allowHalfOpen:!1},e=>{lP(e)}),Ne(),!1)}function $N(e,n,r){e.removeAllListeners(`error`),e.removeAllListeners(`listening`),e.once(`error`,i=>{if(i.code!==`EADDRINUSE`){Q(`error`,`server error: ${i.message}`),cP(1);return}if(r){Q(`info`,`lost rebind race; another daemon is alive — exiting`),t.exit(0);return}eP(e,n)}),e.listen(n,()=>tP(n))}function eP(e,n){let i=xT(ST(Ie(n)),(e,t)=>AT(e,t,{readStartTime:kT,pidAlive:FT}));if(i.kind===`attach-and-exit`){Q(`info`,`EADDRINUSE: ${i.reason} — exiting`),t.exit(0);return}Q(`warn`,`EADDRINUSE: ${i.reason} — unlinking stale socket and rebinding`);try{r.unlinkSync(n)}catch(e){if(e.code!==`ENOENT`){Q(`error`,`cannot unlink stale socket ${n}: ${e.message}`),cP(1);return}}$N(e,n,!0)}function tP(e){let n=TT(e);if(n.kind!==`present`){Q(`warn`,`no ownable socket at bind callback (${n.kind}); exiting`),cP(0);return}aP(e);try{r.chmodSync(e,384)}catch(e){Q(`warn`,`chmod socket failed: ${e.message}`)}Q(`info`,`daemon up: pid=${t.pid} v=3 sock=${e} heapCap=${Math.round(C.getHeapStatistics().heap_size_limit/1048576)}MB rssLimit=${Math.round(ZN/1048576)}MB`),tw();let i=zN.reset();i!==null&&Q(`warn`,`diagnostic dump wipe failed: ${i}`),qN.arm(),JN.arm(),iP(),nP(e,n.identity)}function nP(e,n){OT({bound:n,myPid:t.pid,readIdentity:()=>TT(e),readLease:()=>ST(Ie(e)),shutdown:e=>cP(e),log:Q}).arm()}let rP=null;function iP(){rP=HC(KC(NN.startedAt.getTime(),e=>cP(e),{rssLimitBytes:ZN})),rP.arm()}function aP(e){let n=CT(Ie(e),{pid:t.pid,version:3,binPath:t.argv[1],startTime:YN});n!==null&&Q(`warn`,`lease write failed: ${n}`)}let oP=0,sP=!1;function cP(e){if(!sP){sP=!0,setTimeout(()=>t.kill(t.pid,`SIGKILL`),500);try{FN.close()}catch(e){Q(`warn`,`gitService close failed: ${e.message}`)}try{IN.close()}catch(e){Q(`warn`,`usageStore close failed: ${e.message}`)}try{PN.closeAll()}catch(e){Q(`warn`,`watcherRegistry close failed: ${e.message}`)}try{LN.flush()}catch(e){Q(`warn`,`sessionState flush failed: ${e.message}`)}wT(Le(),t.pid),XN!==null&&HT(XN,t.pid,zT,e=>r.unlinkSync(e)),t.exit(e)}}function lP(e){oP++,NN.inFlight=oP;let t=!1,n=(n,r)=>{if(t){r!==null&&Q(`warn`,`exit-after-flush dropped: an earlier responder settled this socket`);return}t=!0;let i=r===null?void 0:()=>cP(r);try{e.end(dC(n),i)}catch(e){Q(`warn`,`response write failed: ${e.message}`),i?.()}},r=setTimeout(()=>{NN.requestsTimedOut++,n({ok:!1,error:`request exceeded 200ms`,code:`TIMEOUT`,daemonV:3},null)},200),i=fC(e=>{dP(e).then(e=>n(e.resp,e.exitAfterFlush)).catch(e=>{Q(`error`,`handler threw: ${e?.stack||e}`),n({ok:!1,error:String(e?.message||e),code:`RENDER_FAILED`,daemonV:3},null)})},e=>{Q(`warn`,`frame parse failed: ${e.message}`),n({ok:!1,error:e.message,code:`BAD_REQUEST`,daemonV:3},null)});e.on(`data`,i),e.on(`error`,e=>{Q(`warn`,`socket error: ${e.message}`)}),e.on(`close`,()=>{clearTimeout(r),oP=Math.max(0,oP-1),NN.inFlight=oP})}const uP=e=>({resp:e,exitAfterFlush:null});async function dP(e){if(!e||typeof e!=`object`||typeof e.v!=`number`)return uP({ok:!1,error:`malformed request`,code:`BAD_REQUEST`,daemonV:3});if(e.v!==3)return e.v>3?Q(`info`,`version mismatch: client=${e.v} > daemon=3; binary likely upgraded — exiting after the response flushes`):Q(`info`,`version mismatch: client=${e.v} < daemon=3; client is stale — staying up`),{resp:{ok:!1,error:`protocol v${e.v} not supported (daemon at v3)`,code:`VERSION_MISMATCH`,daemonV:3},exitAfterFlush:e.v>3?0:null};if(e.kind===`shutdown`)return{resp:{ok:!0,output:``},exitAfterFlush:0};if(e.kind===`stats`)return uP({ok:!0,stats:NN.snapshot({gitCache:FN.getStats(),usageCache:IN.getStats(),renderCacheSize:WN.size,watchersActive:PN.size(),nextRestartReason:rP?.describeNextRestart()??null})});if(e.kind===`render`){NN.requestsTotal++;let t=Date.now();try{let{report:n}=tN(e.hookData);for(let e of n.unknownTopLevelFields)Q(`info`,`schema: unknown field '${e}' — Anthropic may have added it`);let r=[];for(let e of n.missingRequired)r.push(`missing required field '${e}'`);for(let{path:e,expected:t,got:i}of n.typeMismatches)r.push(`field '${e}' expected ${t}, got ${i}`);if(e.cwd===``&&r.push(`request 'cwd' is empty`),r.length>0)return NN.requestsErrored++,Q(`warn`,`BAD_REQUEST: ${r.join(`; `)}`),uP({ok:!1,error:`malformed hookData: ${r.join(`; `)}`,code:`BAD_REQUEST`,daemonV:3});let i=e.hookData.workspace.project_dir,{configFile:a,unknownFlagsError:o}=fP(e.args),s=e.hookData.session_id,c=iC(e),l=JSON.stringify(c);LN.get(s,`client-hints`)!==l&&LN.set(s,HM,l);let u=LN.get(s,`config-override`)??a??c.configEnv,d=WN.getOrCreate(i,e.cwd,u),f=EM({projectDir:i,cwd:e.cwd,configFile:u??null});LN.get(s,`render-origin`)!==f&&LN.set(s,TM,f);let p=c.termCols,m=_N(p??120),h=oE(c.termRows),{authoredRoots:g}=d.state,_=t=>LN.get(e.hookData.session_id,t),v=hD(d.state.config,_,e=>g.has(e)),y=await MD(e.hookData,_P,e.cwd,d.state.neededInputPaths(v.preset),v,c,GD(d.state.config,_).length),b=[],x=gD(v,m),S=MA(d.state.config,d.state.compiled,d.state.store,d.state.registry,y,x,{perSegmentSink:d.state.lastRenderCellsBySegment,onRenderWarning:e=>b.push(e)},_D(v)),C=LN.get(e.hookData.session_id,`click.error`);C&&LN.clear(e.hookData.session_id,`click.error`);let ee=[o,d.lastError,C].filter(Boolean).join(`
|
|
187
|
+
`),te=JN.notice({sessionId:s,dismissed:LN.get(s,dO),enabled:v.updateNotice}),w=d.lastError===null?null:d.configFilePath,ne=dE(ee,te,[d.lastWarning??``,...b].filter(Boolean).join(`
|
|
188
|
+
`)),re=zN.sync(s,ne===null?null:pE(ne));re!==null&&Q(`warn`,`diagnostic dump failed: ${re}`);let ie=mE(S,ne,{fullText:re===null?{kind:`file`,path:zN.pathFor(s)}:{kind:`unavailable`,reason:re},failedConfigFile:w},{width:m,rowCap:h,colorCompatibility:v.colorCompatibility}),T=Date.now()-t,E=FN.getStats(),ae=IN.getStats();return Q(`info`,`render sid=${e.hookData.session_id??`?`} took=${T}ms termCols=${p??`?`} termRows=${c.termRows??`?`} width=${m} git=${E.size}/${E.hits}h/${E.misses}m usage=${ae.size}/${ae.hits}h/${ae.misses}m err=${ee?`Y`:`N`} upd=${te.length} warn=${d.lastWarning?`Y`:`N`}`),uP({ok:!0,output:ie+`
|
|
189
|
+
`})}catch(e){throw NN.requestsErrored++,e}}if(e.kind===`click`)return uP(await vP(e.verb,e.value));if(e.kind===`debug`){if(!gN(e.what))return uP({ok:!1,error:`unknown debug 'what': ${String(e.what)} (have: ${hN.join(`, `)})`,code:`BAD_REQUEST`,daemonV:3});let t=WN.firstState(),n=t===null?null:{store:t.store,registry:t.registry,config:t.config,compiled:t.compiled,lastRenderBySegment:e.what===`segments`?gP(t.lastRenderCellsBySegment,t.config.globals.charset??`unicode`,t.config.globals.colorCompatibility??`truecolor`):hP};return uP({ok:!0,debug:iN(e.what,n)})}return uP({ok:!1,error:`unknown kind`,code:`BAD_REQUEST`,daemonV:3})}function fP(e){let{values:t,tokens:n}=re({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:aC(t.config),unknownFlagsError:r.length>0?`Unknown flags: ${r.join(`, `)}`:null}}const pP={sessionState:LN,dlog:Q,applyUpdate:()=>JN.act(),doctor:rM(),history:RN,configFor:e=>WN.getOrCreate(e.projectDir,e.cwd,e.configFile??void 0).state.config,reloadConfig:e=>WN.reload(e.projectDir,e.cwd,e.configFile??void 0)},mP={style:`powerline`,colorCompatibility:Ba,wrap:!0,padding:1,charset:Ia,width:1/0},hP=new Map;function gP(e,t,n){let r=new Map;for(let[i,a]of e)r.set(i,aE(a,{...mP,charset:t,colorCompatibility:n}));return r}const _P={gitProvider:FN,usageStore:IN,contextProvider:BN,metricsProvider:VN,activityProvider:HN,tmuxService:UN,log:Q,clock:()=>new Date,history:e=>RN.depth(e)};function vP(e,t){let n=QM.get(e);if(!n)return{ok:!1,error:`unknown click verb: ${e}`,code:`BAD_REQUEST`,daemonV:3};try{return n(t,pP),{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 yP={connectMs:200,budgetMs:500};async function bP(e){let n=e.includes(`--json`),r=await xP();if(r.kind!==`ok`&&(t.stderr.write(`daemon-stats: ${bC(r)}\n`),t.exit(1)),n){t.stdout.write(JSON.stringify(r.value,null,2)+`
|
|
190
|
+
`);return}t.stdout.write(TP(r.value))}function xP(){return mC({kind:`stats`},yP,e=>`stats`in e?e.stats:void 0)}function SP(e){return e<1024?`${e}B`:e<1024*1024?`${(e/1024).toFixed(1)}KB`:`${(e/1024/1024).toFixed(1)}MB`}function CP(e,t){let n=e+t;return n===0?`n/a`:`${(e/n*100).toFixed(1)}%`}function wP(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 TP(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 ${wP(e.uptimeSec)}`),t.push(` rss ${SP(e.rssBytes)}`),t.push(` heapUsed ${SP(e.heapUsedBytes)}`),t.push(` heapTotal ${SP(e.heapTotalBytes)}`),t.push(` external ${SP(e.externalBytes)}`),t.push(` arrayBuffers ${SP(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 ${CP(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 ${CP(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(`
|
|
191
191
|
`)+`
|
|
192
|
-
`}const
|
|
193
|
-
`);return}t.stdout.write(
|
|
194
|
-
`;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?``:` ${
|
|
192
|
+
`}const EP={connectMs:200,budgetMs:500};async function DP(e,n){let r=n.includes(`--json`),i=await OP(e);if(i.kind!==`ok`&&(t.stderr.write(`${e}: ${bC(i)}\n`),t.exit(1)),r){t.stdout.write(JSON.stringify(i.value,null,2)+`
|
|
193
|
+
`);return}t.stdout.write(kP(i.value))}function OP(e){return mC({kind:`debug`,what:e},EP,e=>`debug`in e?e.debug:void 0)}function kP(e){switch(e.what){case`vars`:return AP(e.vars);case`segments`:return jP(e.segments);case`config`:return MP(e.config);default:return e}}function AP(e){if(e.length===0)return`no variables (DSL not active)
|
|
194
|
+
`;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?``:` ${PP(a.ageMs)}`,o=a.lastError?` ✗ ${a.lastError.message}`:``;t.push(` ${a.name.padEnd(n)} ${(a.source??`—`).padEnd(r)} ${a.type.padEnd(i)} ${NP(a.value)}${e}${o}`)}return t.join(`
|
|
195
195
|
`)+`
|
|
196
|
-
`}function
|
|
197
|
-
`;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.
|
|
196
|
+
`}function jP(e){if(e.length===0)return`no segments (DSL not active)
|
|
197
|
+
`;let t=[`segments (${e.length})`,``];for(let n of e){t.push(` ${n.name}`),n.description!==null&&t.push(` shows ${n.description}`),t.push(` template ${n.template}`),n.referencedVars.length>0&&t.push(` vars ${n.referencedVars.join(`, `)}`);for(let{id:e,lastRender:r}of n.placements)r!==null&&t.push(` last ${e}: ${r}`)}return t.join(`
|
|
198
198
|
`)+`
|
|
199
|
-
`}function
|
|
199
|
+
`}function MP(e){return e===null?`config: DSL not active
|
|
200
200
|
`:JSON.stringify(e,null,2)+`
|
|
201
|
-
`}function
|
|
202
|
-
`));return n.rendered}finally{r.registry.dispose()}}function
|
|
203
|
-
`,kick:!0,debug:`daemon unavailable (transient: ${e.cause}: ${e.message}) — kicking daemon`};case`permanent`:return{output
|
|
201
|
+
`}function NP(e){let t=typeof e==`string`?e:JSON.stringify(e);return t.length>60?t.slice(0,57)+`…`:t}function PP(e){return e<1e3?`${e}ms`:e<6e4?`${(e/1e3).toFixed(1)}s`:`${Math.floor(e/6e4)}m`}function FP(){let e=LP();return e===null?null:r.readFileSync(e,`utf-8`)}function IP(){let e;try{e=FP()}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 LP(){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 RP(e){let t=e.CC_CANDYBAR_CONFIG??``;return t===``?void 0:t}const zP=5e3;function BP(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},...vD(e),history:{undo:1,redo:1},unsaved:1}}function VP(e,t){let n=US(e,e),r=GS(n);return r!==null&&t.push(r),n.kind===`file`?n.path:null}async function HP(e,n=t.cwd()){let i=[],a=e===void 0?VP(n,i):c.resolve(BS(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=qS(n,n);o!==null&&i.push(o);try{return{kind:`clean`,configPath:a,warnings:i,rendered:await GP(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 Wo&&i.push(...e.warnings),{kind:`fatal`,configPath:a,message:e instanceof Wo||e instanceof Error?e.message:String(e),warnings:i})}}async function UP(e,t,n){let r=JS(e,$E);n.push(...r.warnings);let i=ZS(r,e??`<default>`),a=new BA,o=new ly(a,i.globals.default_empty_value??``,void 0,new ZA);try{let e=OA(i,o,{cwd:t});n.push(...e.loadWarnings);let r=await o.settled(zP);return r.length>0&&n.push(`source${r.length===1?``:`s`} still running after ${zP} ms, rendered with fallback values: ${r.join(`, `)}`),{config:i,compiled:e,store:a,registry:o}}catch(e){throw o.dispose(),e}}function WP({config:e,compiled:t,store:n,registry:r},i,a){let o=new Map;return{rendered:MA(e,t,n,r,BP(i),gD(i,a),{onSegmentError:(e,t)=>o.set(`segment "${e}"`,t),onRenderWarning:e=>o.set(`globals.palette`,e)},_D(i)),failures:o}}async function GP(e,t,n){let r=await UP(e,t,n),{config:i}=r;try{uO(i);let e=hD(i,()=>null,()=>!1),t=e=>WP(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(`
|
|
202
|
+
`));return n.rendered}finally{r.registry.dispose()}}function KP(e){return e.map(e=>`warning: ${e}\n`).join(``)}function qP(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:KP(e.warnings),code:0};case`fatal`:return{stdout:``,stderr:KP(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 JP=`--render`,YP=`Usage: cc-candybar check [${JP}] [config-file]\n`;function XP(e){let t=e.filter(e=>e.startsWith(`--`)),n=e.filter(e=>!e.startsWith(`--`)),r=t.filter(e=>e!==JP);return r.length>0?{kind:`usage`,message:`check: unknown option ${r.join(` `)}\n${YP}`}:n.length>1||n[0]===``?{kind:`usage`,message:`check: expected at most one non-empty path\n${YP}`}:{kind:`run`,target:n[0],render:t.includes(JP)}}async function ZP(e){let n=XP(e),r=n.kind===`usage`?{stdout:``,stderr:n.message,code:2}:qP(await HP(n.target??RP(t.env)),n.render);t.stdout.write(r.stdout),t.stderr.write(r.stderr),t.exit(r.code)}const QP=`${JT}${qT}`;function $P(e){return`${QP}⚠ cc-candybar: ${eF(e)}[0m\n`}function eF(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: ${KT(e.message,60)}`;case`render_failed`:return`render failed: ${KT(e.message,60)}`;case`malformed_response`:return`malformed daemon response: ${KT(e.message,60)}`}}function tF(e){switch(e.kind){case`ok`:return{output:e.value,kick:!1,debug:null};case`transient`:return{output:`
|
|
203
|
+
`,kick:!0,debug:`daemon unavailable (transient: ${e.cause}: ${e.message}) — kicking daemon`};case`permanent`:return{output:$P(e),kick:!1,debug:`daemon refused request (permanent: ${e.cause}) — not kicking`}}}function nF(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 rF=` (fix: click the settings menu (${ic} by default) › 🧰 tools ▸ 🩺 doctor, then [fix] on the bar)`;function iF({check:e,verdict:t}){return t.ok?`✓ ${e.label}\n`:`✗ ${e.label} — ${t.reason}${t.fix===void 0?``:rF}\n`}function aF(e,t){let n;try{n=cM(e,eb(t))}catch(e){return{stdout:``,stderr:`doctor: ${e instanceof Error?e.message:String(e)}\n`,code:2}}let r=rb(n);return{stdout:r.map(iF).join(``),stderr:``,code:+!r.every(e=>e.verdict.ok)}}function oF(e){e.length>0&&(t.stderr.write(`doctor: takes no arguments
|
|
204
204
|
Usage: cc-candybar doctor
|
|
205
|
-
`),t.exit(2));let n=
|
|
205
|
+
`),t.exit(2));let n=aF(rM(),t.env);t.stdout.write(n.stdout),t.stderr.write(n.stderr),t.exit(n.code)}function sF(){return nF(t.env.COLUMNS,t.stderr.columns)}function cF(){return nF(t.env.LINES,t.stderr.rows)}const lF=[`SSH_CONNECTION`,`SSH_CLIENT`,`SSH_TTY`],uF=e=>e.some(e=>t.argv.includes(e));function dF(){return lF.some(e=>(t.env[e]??``)!==``)}function fF(){console.log(Ay)}async function pF(){try{uF(Oy.help)&&(fF(),t.exit(0)),uF(Oy.version)&&(console.log(`cc-candybar ${Bw}`),t.exit(0));let e=t.argv[2];if(e===`install`&&(await yT(t.argv.slice(3)),t.exit(0)),e===`install-url-handler`&&(mT(),t.exit(0)),e===`url-handle`){await gT(t.argv[3]);return}if(e===`daemon`){QN();return}if(e===`daemon-stats`&&(await bP(t.argv.slice(3)),t.exit(0)),e===`check`||e===`lint`){await ZP(t.argv.slice(3));return}if(e===`schema`){IP();return}if(e===`doctor`){oF(t.argv.slice(3));return}gN(e)&&(await DP(e,t.argv.slice(3)),t.exit(0)),t.stdin.isTTY===!0&&(console.error(`Error: This tool requires input from Claude Code
|
|
206
206
|
|
|
207
207
|
cc-candybar is designed to be used as a Claude Code statusLine command.
|
|
208
208
|
It reads hook data from stdin and outputs formatted statusline.
|
|
@@ -218,4 +218,4 @@ Add to ~/.claude/settings.json:
|
|
|
218
218
|
Run with --help for more options.
|
|
219
219
|
|
|
220
220
|
To test output manually:
|
|
221
|
-
echo '{"session_id":"test-session","workspace":{"project_dir":"/path/to/project"},"model":{"id":"claude-sonnet-4-5","display_name":"Claude"}}' | cc-candybar --style=powerline`),t.exit(1)),D(`Working directory: ${t.cwd()}`),D(`Process args:`,t.argv);let r=await n(t.stdin);D(`Received hook data:`,JSON.stringify(r,null,2)),r||(console.error(`Error: No input data received from stdin`),
|
|
221
|
+
echo '{"session_id":"test-session","workspace":{"project_dir":"/path/to/project"},"model":{"id":"claude-sonnet-4-5","display_name":"Claude"}}' | cc-candybar --style=powerline`),t.exit(1)),D(`Working directory: ${t.cwd()}`),D(`Process args:`,t.argv);let r=await n(t.stdin);D(`Received hook data:`,JSON.stringify(r,null,2)),r||(console.error(`Error: No input data received from stdin`),fF(),t.exit(1));let i=tF(await wC(r,t.argv,t.cwd(),{termCols:sF(),termRows:cF(),ssh:dF(),tmux:eb(t.env),configEnv:RP(t.env)}));i.debug!==null&&D(i.debug),i.kick&&qC(),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)}}pF();export{};
|