@promptctl/cc-candybar 1.97.2 → 1.97.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.mjs +53 -53
  2. package/package.json +5 -5
package/dist/index.mjs CHANGED
@@ -51,9 +51,9 @@ import{createRequire as e}from"node:module";import t from"node:process";import{j
51
51
  `).map(e=>n+e).join(`
52
52
  `)}function kg(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 Ag(e,t){let n=[];for(let e of t){if(typeof e==`object`&&e)throw vh(`join`,2,`list of strings/primitives`,`list element of type ${jg(e)}`);n.push(String(e))}return n.join(e)}function jg(e){return Array.isArray(e)?`array`:e instanceof Map?`Map`:e instanceof Set?`Set`:`object`}function Mg(e){return xg(e,`-`)}function Ng(e){return e.toLowerCase()}function Pg(e,t){return`\n${Og(e,t)}`}function Fg(e){return e.replace(/\s+/g,``)}function Ig(e,t,n){return n===1?e:t}function Lg(...e){return e.map(e=>`"${e}"`).join(` `)}function Rg(e){return e.replace(/[\\.+*?()|[\]{}^$]/g,`\\$&`)}function zg(e,t){return t.repeat(Math.max(0,e))}function Bg(e,t,n){return og(e,n).join(t)}function Vg(e){return xg(e,`_`)}function Hg(e,t){let n=og(e,t),r={};for(let e=0;e<n.length;e++)r[`_${e}`]=n[e];return r}function Ug(e,t){return og(e,t)}function Wg(e,t,n){let r=Gg(n,e,t),i={};for(let e=0;e<r.length;e++)i[`_${e}`]=r[e]??``;return i}function Gg(e,t,n){if(n===0)return[];let r=og(t,e);if(n<0||r.length<=n)return r;let i=r.slice(0,n-1),a=r.slice(n-1).join(t);return[...i,a]}function Kg(...e){return e.map(e=>`'${e}'`).join(` `)}function qg(e,t,n){let r=ag(n),i=t<0||t>r.length?r.length:t,a=Math.min(Math.max(0,e),i);return r.slice(a,i).join(``)}function Jg(e){let t=``;for(let n of e)Yg(n)?t+=n.toLowerCase():Xg(n)?t+=n.toUpperCase():t+=n;return t}function Yg(e){return e!==e.toLowerCase()&&e===e.toUpperCase()}function Xg(e){return e!==e.toUpperCase()&&e===e.toLowerCase()}function Zg(e){return e.replace(/\b([a-zA-Z])/g,e=>e.toUpperCase())}function Qg(e){return e.trim()}function $g(e,t){if(e.length===0)return t;let n=new Set(ag(e)),r=ag(t),i=0;for(;i<r.length&&n.has(r[i]);)i+=1;let a=r.length;for(;a>i&&n.has(r[a-1]);)--a;return r.slice(i,a).join(``)}function e_(e,t){return t.startsWith(e)?t.slice(e.length):t}function t_(e,t){return t.endsWith(e)?t.slice(0,t.length-e.length):t}function n_(e,t){let n=ag(t);if(e<0){let r=-e;return r>=n.length?t:n.slice(n.length-r).join(``)}return e>=n.length?t:n.slice(0,e).join(``)}function r_(e){return e.replace(/\b([A-Z])/g,e=>e.toLowerCase())}function i_(e){return e.toUpperCase()}function a_(e,t){return o_(e,`
53
53
  `,t)}function o_(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 s_(e,t,n){return o_(e,t,n)}function c_(){return{abbrev:{fn:(e,t)=>sg(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},abbrevboth:{fn:(e,t,n)=>cg(e,t,n),argTypes:[`int`,`int`,`string`],arity:{kind:`exact`}},camelcase:{fn:e=>Cg(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},cat:{fn:(...e)=>wg(...e),argTypes:[`string`],arity:{kind:`variadic`}},contains:{fn:(e,t)=>Tg(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},hasPrefix:{fn:(e,t)=>Eg(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},hasSuffix:{fn:(e,t)=>Dg(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},indent:{fn:(e,t)=>Og(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},initials:{fn:e=>kg(e),argTypes:[`string`],arity:{kind:`exact`}},join:{fn:(e,t)=>Ag(e,t),argTypes:[`string`,`list`],arity:{kind:`exact`}},kebabcase:{fn:e=>Mg(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},lower:{fn:e=>Ng(e),argTypes:[`string`],arity:{kind:`exact`}},nindent:{fn:(e,t)=>Pg(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},nospace:{fn:e=>Fg(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},plural:{fn:(e,t,n)=>Ig(e,t,n),argTypes:[`string`,`string`,`int`],arity:{kind:`exact`},returnType:`string`},quote:{fn:(...e)=>Lg(...e),argTypes:[`string`],arity:{kind:`variadic`}},regexQuoteMeta:{fn:e=>Rg(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},repeat:{fn:(e,t)=>zg(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},replace:{fn:(e,t,n)=>Bg(e,t,n),argTypes:[`string`,`string`,`string`],arity:{kind:`exact`}},snakecase:{fn:e=>Vg(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},split:{fn:(e,t)=>Hg(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},splitList:{fn:(e,t)=>Ug(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},splitn:{fn:(e,t,n)=>Wg(e,t,n),argTypes:[`string`,`int`,`string`],arity:{kind:`exact`},returnType:`dict`},squote:{fn:(...e)=>Kg(...e),argTypes:[`string`],arity:{kind:`variadic`}},substr:{fn:(e,t,n)=>qg(e,t,n),argTypes:[`int`,`int`,`string`],arity:{kind:`exact`}},swapcase:{fn:e=>Jg(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},title:{fn:e=>Zg(e),argTypes:[`string`],arity:{kind:`exact`}},trim:{fn:e=>Qg(e),argTypes:[`string`],arity:{kind:`exact`}},trimAll:{fn:(e,t)=>$g(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},trimPrefix:{fn:(e,t)=>e_(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},trimSuffix:{fn:(e,t)=>t_(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},trunc:{fn:(e,t)=>n_(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},untitle:{fn:e=>r_(e),argTypes:[`string`],arity:{kind:`exact`}},upper:{fn:e=>i_(e),argTypes:[`string`],arity:{kind:`exact`}},wrap:{fn:(e,t)=>a_(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},wrapWith:{fn:(e,t,n)=>s_(e,t,n),argTypes:[`int`,`string`,`string`],arity:{kind:`exact`}}}}function l_(e){return e}function u_(e,t,n){return n===void 0?pu+du(e)+`.`+du(t):d_(n)}function d_(e){return pu+du(e)}function f_(e,t){return e+`.`+t}function p_(e){return e+`.page`}const m_=[`closeOnPick`,`paged`,`key`,`distribution`],h_=e=>m_.includes(e),g_=`"closeOnPick" (bool, default false), "paged" (bool, default true), "key" (string, accordion grouping), "distribution" (one of ${aa.map(e=>`"${e}"`).join(`, `)}; default "van-der-corput")`;function __(e){for(let t of Object.keys(e))if(!h_(t))throw Error(`unknown {{ menu }} option "${t}" — the options dict takes ${g_}`);let t=(t,n)=>{let r=e[t];if(r===void 0)return n;if(typeof r!=`boolean`)throw Error(`{{ menu }} option "${t}" must be a boolean, got ${JSON.stringify(r)} (e.g. (dict "${t}" ${String(!n)}))`);return r},n=e.key;if(n!==void 0&&typeof n!=`string`)throw Error(`{{ menu }} option "key" must be a string naming the accordion group, got ${JSON.stringify(n)}`);if(n===``)throw Error(`{{ menu }} has an empty accordion key — a shared key must be a non-empty name (or omit "key" for an independent menu)`);let r=e.distribution;if(r!==void 0&&!oa(r))throw Error(`{{ menu }} option "distribution" must be one of: ${aa.join(`, `)}; got ${JSON.stringify(r)}`);return{closeOnPick:t(`closeOnPick`,!1),paged:t(`paged`,!0),key:n,distribution:ca(r)}}const v_=`default`,y_={};function b_(e){return[...new Set([v_,...Object.keys(e)])]}function x_(e,t,n){return Xa(void 0,e,t,v_,n)}function S_(e,t){let n={[v_]:y_,...e}[t];if(n===void 0)throw Error(`Preset "${t}" is not declared in this config — effectivePresetName collapses unknown names to "${v_}", which always resolves; a miss here means a raw name reached this function without going through that resolution`);return n}function C_(e,t){let n=S_(e.presets,t).root??Ac;return{node:Pc(Lc(n,e.root)),path:Rc(n)?`presets.${t}.root`:`root`}}function w_(e,t){return{...e.globals,...S_(e.presets,t).globals}}const T_=`menu`,E_=`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`,D_=e=>e.kind===`call`&&e.name===`dict`,O_=e=>e.kind===`literal`&&typeof e.value!=`object`,k_=e=>Gc(``,e,2)===void 0;function A_(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&&D_(i)?i:void 0,o=a===void 0?r:r.slice(0,-1);if(o.some(D_))return t(`whose options (dict …) is not its last argument — ${E_}`);if(i!==void 0&&a===void 0&&!O_(i)&&k_(o.length-1))return t(`whose last argument is neither a literal nor a literal (dict …) — the renderer tells a display from the options dict by the value it evaluates to, so this call could be read as ${o.length} displays or as ${o.length-1} plus options, and both are legal. Make the options explicit as a trailing (dict …) — {{ menu "${n.value}" (printf "…") (printf "…") (dict) }} binds dynamic displays unambiguously — or bind the trigger text as literals`);let s=Gc(`whose trigger`,o.length,2);if(s!==void 0)return t(`${s} — ${E_}`);let c=a===void 0?{}:Qm(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=__(c)}catch(e){return t(`with invalid options — ${e.message}`)}let u=l.key;if(u!==void 0){let e=vu(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 "${d_(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 j_(e){let t=sp({fromString:e=>e});try{return t.parse(e).referencedCalls().filter(e=>e.name===T_).map(A_)}catch{return`parse-failed`}}function M_(e){let t=sp({fromString:e=>e});try{return t.parse(e).referencedFunctions().has(T_)}catch{return!1}}function N_(e,t,n){e.issues.push({path:t,message:n,line:G(e.source,[`root`])})}function P_(e,t){yu(e,t,pu,`{{ menu }} helpers`);for(let[n,r]of Object.entries(t.helpers??{}))M_(r)&&e.issues.push({path:`helpers.${n}`,message:`helper "${n}" uses {{ menu }}, but a menu must live directly in a segment template — its identity is derived from the segment it sits in, which a shared helper does not have. Inline the {{ menu }} call into each segment that needs it.`,line:G(e.source,[`helpers`,n])});let n=t.segments??{};for(let[t,r]of Object.entries(n))for(let n of[`bg`,`fg`,`when`]){let i=r[n];typeof i==`string`&&M_(i)&&N_(e,`segments.${t}.${n}`,`segment "${t}" uses {{ menu }} in its "${n}" — a menu is only valid in a segment's "template" (its placement is published only there; "${n}" needs a ${n===`when`?`predicate`:`color`}). Move the {{ menu }} into the template.`)}if(t.root!==void 0)for(let n of js(Fc(t.root)))typeof n.when==`string`&&M_(n.when)&&N_(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||!M_(r))continue;let n=j_(r);if(n!==`parse-failed`)for(let r of n){let n=r.kind===`issue`?r.message:F_(r.apply);n!==void 0&&N_(e,`segments.${t}`,`segment "${t}" has a {{ menu }} ${n}.`)}}}function F_(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(l_(e)===`closed`)return`whose apply action is named "${Uc}", which collides with the menu's closed-state sentinel and leaves it unopenable. Rename the action`}function I_(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 b_(e.presets)){let a=new Map,s=new Map;for(let c of js(C_(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,j_(t.template));let l=i.get(c.name);if(l===`parse-failed`)continue;let u=Ds(c);for(let[e,t]of l.entries()){if(t.kind===`issue`||F_(t.apply)!==void 0)continue;let{apply:i,options:l}=t,d=l_(i),f=u_(u,i,l.key),p=p_(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=f_(f,d),_=`${c.name}\0${e}`,v=s.get(g);if(v!==void 0&&v!==_){o(c.name,`two {{ menu }} disclosures resolve to the same identity ("${g}") — ${l.key===void 0?`a segment cannot contain two menus over the same apply action "${i}"`:`menus sharing key "${l.key}" must have distinct apply actions`}.`);continue}s.set(g,_),r[g]=$c(f,d),n[f]=Qc(f,Uc),n[p]={kind:`state`,key:p,default:`0`},r[p]={set:p,int:!0}}}}return{...e,variables:{...e.variables,...n},actions:{...e.actions,...r}}}const L_=sp({fromString:e=>e}),R_=`edit.mode`,z_=`edit.toggle`,B_=`arrange`,V_=`${mu}draft.`;function H_(e,t){return`configure:${e}:${t}`}const U_={variable:R_,key:R_,member:B_},W_=Yc(U_);function G_(e){try{return L_.parse(e).referencedCalls().some(e=>e.name===`action`&&e.args[0]===`edit.toggle`)}catch{return!1}}function K_(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`&&G_(e))return!0;return!1}function q_(e,t){if(yu(e,t,mu,`edit mode`),!K_(t))return;let n={[R_]:Qc(R_,Uc)},r={[z_]:$c(R_,B_)};t.variables={...t.variables??{},...n},t.actions={...t.actions??{},...r}}const J_=/"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|`[^`]*`/g;function*Y_(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 X_=`[A-Za-z_]\\w*(?:\\.[A-Za-z_]\\w*)*`,Z_=RegExp(`^(?:(\\$)(?:\\.(${X_}))?|\\.(${X_})?)(?=[\\s)]|$)`);function Q_(e,t){let n=Z_.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 $_=/^(\w+)\b\s*([\s\S]*)$/;function*ev(e){let t=[``];for(let n of Y_(e)){let e=n.replace(/^-(?=\s)/,``).trim(),[,r=``,i=``]=$_.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:Q_(n[1],o);continue}yield{code:e,dot:a},r===`if`&&t.push(a),r===`with`&&t.push(Q_(i,a)),(r===`range`||r===`define`||r===`block`)&&t.push(null)}}const tv=RegExp(`(?<![A-Za-z0-9_)$])(\\$?)\\.(${X_})`,`g`);function*nv(e,t){let n=e.replace(J_,``);for(let e of[...n.matchAll(tv)])e[1]===`$`?yield e[2]:t!==null&&(yield`${t}${e[2]}`)}const rv=/\btemplate\s+$/;function*iv(e,t){let n=0;for(let r of[...e.matchAll(J_)]){let i=r.index+r[0].length;if(rv.test(e.slice(n,r.index))){let n=Q_(e.slice(i),t);n!==null&&(yield{name:r[0].slice(1,-1),at:n})}n=i}}function av(e,t){let n=new Map,r=new Set,i=(e,a,o,s)=>{for(let{code:c,dot:l}of[...ev(e)]){for(let e of nv(c,l))n.has(a+e)||n.set(a+e,o);for(let e of[...iv(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 ov=/\baction\s+$/;function sv(e){let t=new Set;for(let n of Y_(e)){let e=0,r;for(J_.lastIndex=0;(r=J_.exec(n))!==null;)ov.test(n.slice(e,r.index))&&t.add(r[0].slice(1,-1)),e=r.index+r[0].length}return t}const cv=/\b(picker|menu|carousel)\s+$/;function lv(e){let t=new Set;for(let n of Y_(e)){let e=0,r=0,i;for(J_.lastIndex=0;(i=J_.exec(n))!==null;){let a=cv.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 uv(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 dv(e){let t=new Set,n=new Set,r=(e,r)=>{t.add(e),fv(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 fv(e){return(e.kind===`shell`||e.kind===`file`)&&Is(e.parse)===`json`}var pv=me((e=>{function t(e){var t=[...arguments].slice(1);throw Error(typeof e==`number`?`[MobX] minified error nr: `+e+(t.length?` `+t.map(String).join(`,`):``)+`. Find the full error at: https://github.com/mobxjs/mobx/blob/main/packages/mobx/src/errors.ts`:`[MobX] `+e)}function n(){return typeof globalThis<`u`?globalThis:typeof window<`u`?window:typeof global<`u`?global:typeof self<`u`?self:tn}function r(){sn||t(`Proxy not available`)}function i(e){var t=!1;return function(){if(!t)return t=!0,e.apply(this,arguments)}}function a(e){return typeof e==`function`}function o(e){switch(typeof e){case`string`:case`symbol`:case`number`:return!0}return!1}function s(e){return typeof e==`object`&&!!e}function c(e){if(!s(e))return!1;var t=Object.getPrototypeOf(e);if(t==null)return!0;var n=Object.hasOwnProperty.call(t,`constructor`)&&t.constructor;return typeof n==`function`&&n.toString()===cn}function l(e){var t=e?.constructor;return!!t&&(t.name===`GeneratorFunction`||t.displayName===`GeneratorFunction`)}function u(e,t,n){rn(e,t,{enumerable:!1,writable:!0,configurable:!0,value:n})}function d(e,t,n){rn(e,t,{enumerable:!1,writable:!1,configurable:!0,value:n})}function f(e,t){var n=`isMobX`+e;return t.prototype[n]=!0,function(e){return s(e)&&!0===e[n]}}function p(e){return e!=null&&Object.prototype.toString.call(e)===`[object Map]`}function m(e){return e!=null&&Object.prototype.toString.call(e)===`[object Set]`}function h(e){return e===null?null:typeof e==`object`?``+e:e}function g(e,t){return an.hasOwnProperty.call(e,t)}function _(e,t){return!!(e&t)}function v(e,t,n){return n?e|=t:e&=~t,e}function y(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function b(e,t,n){if(re())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var i=new(e.bind.apply(e,r));return n&&w(i,n.prototype),i}function x(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,ie(r.key),r)}}function S(e,t,n){return t&&x(e.prototype,t),n&&x(e,n),Object.defineProperty(e,`prototype`,{writable:!1}),e}function C(e,t){var n=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if(typeof e==`string`)return y(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(e,t):void 0}}(e))||t&&e&&typeof e.length==`number`){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw TypeError(`Invalid attempt to iterate non-iterable instance.
54
+ `)){let n=``;for(let i of t.split(/\s+/))i.length!==0&&(n.length===0?n=i:n.length+1+i.length<=e?n+=` ${i}`:(r.push(n),n=i));n.length>0&&r.push(n)}return r.join(t)}function s_(e,t,n){return o_(e,t,n)}function c_(){return{abbrev:{fn:(e,t)=>sg(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},abbrevboth:{fn:(e,t,n)=>cg(e,t,n),argTypes:[`int`,`int`,`string`],arity:{kind:`exact`}},camelcase:{fn:e=>Cg(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},cat:{fn:(...e)=>wg(...e),argTypes:[`string`],arity:{kind:`variadic`}},contains:{fn:(e,t)=>Tg(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},hasPrefix:{fn:(e,t)=>Eg(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},hasSuffix:{fn:(e,t)=>Dg(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},indent:{fn:(e,t)=>Og(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},initials:{fn:e=>kg(e),argTypes:[`string`],arity:{kind:`exact`}},join:{fn:(e,t)=>Ag(e,t),argTypes:[`string`,`list`],arity:{kind:`exact`}},kebabcase:{fn:e=>Mg(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},lower:{fn:e=>Ng(e),argTypes:[`string`],arity:{kind:`exact`}},nindent:{fn:(e,t)=>Pg(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},nospace:{fn:e=>Fg(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},plural:{fn:(e,t,n)=>Ig(e,t,n),argTypes:[`string`,`string`,`int`],arity:{kind:`exact`},returnType:`string`},quote:{fn:(...e)=>Lg(...e),argTypes:[`string`],arity:{kind:`variadic`}},regexQuoteMeta:{fn:e=>Rg(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},repeat:{fn:(e,t)=>zg(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},replace:{fn:(e,t,n)=>Bg(e,t,n),argTypes:[`string`,`string`,`string`],arity:{kind:`exact`}},snakecase:{fn:e=>Vg(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},split:{fn:(e,t)=>Hg(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},splitList:{fn:(e,t)=>Ug(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},splitn:{fn:(e,t,n)=>Wg(e,t,n),argTypes:[`string`,`int`,`string`],arity:{kind:`exact`},returnType:`dict`},squote:{fn:(...e)=>Kg(...e),argTypes:[`string`],arity:{kind:`variadic`}},substr:{fn:(e,t,n)=>qg(e,t,n),argTypes:[`int`,`int`,`string`],arity:{kind:`exact`}},swapcase:{fn:e=>Jg(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},title:{fn:e=>Zg(e),argTypes:[`string`],arity:{kind:`exact`}},trim:{fn:e=>Qg(e),argTypes:[`string`],arity:{kind:`exact`}},trimAll:{fn:(e,t)=>$g(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},trimPrefix:{fn:(e,t)=>e_(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},trimSuffix:{fn:(e,t)=>t_(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},trunc:{fn:(e,t)=>n_(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},untitle:{fn:e=>r_(e),argTypes:[`string`],arity:{kind:`exact`}},upper:{fn:e=>i_(e),argTypes:[`string`],arity:{kind:`exact`}},wrap:{fn:(e,t)=>a_(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},wrapWith:{fn:(e,t,n)=>s_(e,t,n),argTypes:[`int`,`string`,`string`],arity:{kind:`exact`}}}}function l_(e){return e}function u_(e,t,n){return n===void 0?pu+du(e)+`.`+du(t):d_(n)}function d_(e){return pu+du(e)}function f_(e,t){return e+`.`+t}function p_(e){return e+`.page`}const m_=[`closeOnPick`,`paged`,`key`,`distribution`],h_=e=>m_.includes(e),g_=`"closeOnPick" (bool, default false), "paged" (bool, default true), "key" (string, accordion grouping), "distribution" (one of ${aa.map(e=>`"${e}"`).join(`, `)}; default "van-der-corput")`;function __(e){for(let t of Object.keys(e))if(!h_(t))throw Error(`unknown {{ menu }} option "${t}" — the options dict takes ${g_}`);let t=(t,n)=>{let r=e[t];if(r===void 0)return n;if(typeof r!=`boolean`)throw Error(`{{ menu }} option "${t}" must be a boolean, got ${JSON.stringify(r)} (e.g. (dict "${t}" ${String(!n)}))`);return r},n=e.key;if(n!==void 0&&typeof n!=`string`)throw Error(`{{ menu }} option "key" must be a string naming the accordion group, got ${JSON.stringify(n)}`);if(n===``)throw Error(`{{ menu }} has an empty accordion key — a shared key must be a non-empty name (or omit "key" for an independent menu)`);let r=e.distribution;if(r!==void 0&&!oa(r))throw Error(`{{ menu }} option "distribution" must be one of: ${aa.join(`, `)}; got ${JSON.stringify(r)}`);return{closeOnPick:t(`closeOnPick`,!1),paged:t(`paged`,!0),key:n,distribution:ca(r)}}const v_=`default`,y_={};function b_(e){return[...new Set([v_,...Object.keys(e)])]}function x_(e,t,n){return Xa(void 0,e,t,v_,n)}function S_(e,t){let n={[v_]:y_,...e}[t];if(n===void 0)throw Error(`Preset "${t}" is not declared in this config — effectivePresetName collapses unknown names to "${v_}", which always resolves; a miss here means a raw name reached this function without going through that resolution`);return n}function C_(e,t){let n=S_(e.presets,t).root??Ac;return{node:Pc(Lc(n,e.root)),path:Rc(n)?`presets.${t}.root`:`root`}}function w_(e,t){return{...e.globals,...S_(e.presets,t).globals}}const T_=`menu`,E_=`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`,D_=e=>e.kind===`call`&&e.name===`dict`,O_=e=>e.kind===`literal`&&typeof e.value!=`object`,k_=e=>Gc(``,e,2)===void 0;function A_(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&&D_(i)?i:void 0,o=a===void 0?r:r.slice(0,-1);if(o.some(D_))return t(`whose options (dict …) is not its last argument — ${E_}`);if(i!==void 0&&a===void 0&&!O_(i)&&k_(o.length-1))return t(`whose last argument is neither a literal nor a literal (dict …) — the renderer tells a display from the options dict by the value it evaluates to, so this call could be read as ${o.length} displays or as ${o.length-1} plus options, and both are legal. Make the options explicit as a trailing (dict …) — {{ menu "${n.value}" (printf "…") (printf "…") (dict) }} binds dynamic displays unambiguously — or bind the trigger text as literals`);let s=Gc(`whose trigger`,o.length,2);if(s!==void 0)return t(`${s} — ${E_}`);let c=a===void 0?{}:Qm(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=__(c)}catch(e){return t(`with invalid options — ${e.message}`)}let u=l.key;if(u!==void 0){let e=vu(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 "${d_(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 j_(e){let t=sp({fromString:e=>e});try{return t.parse(e).referencedCalls().filter(e=>e.name===T_).map(A_)}catch{return`parse-failed`}}function M_(e){let t=sp({fromString:e=>e});try{return t.parse(e).referencedFunctions().has(T_)}catch{return!1}}function N_(e,t,n){e.issues.push({path:t,message:n,line:G(e.source,[`root`])})}function P_(e,t){yu(e,t,pu,`{{ menu }} helpers`);for(let[n,r]of Object.entries(t.helpers??{}))M_(r)&&e.issues.push({path:`helpers.${n}`,message:`helper "${n}" uses {{ menu }}, but a menu must live directly in a segment template — its identity is derived from the segment it sits in, which a shared helper does not have. Inline the {{ menu }} call into each segment that needs it.`,line:G(e.source,[`helpers`,n])});let n=t.segments??{};for(let[t,r]of Object.entries(n))for(let n of[`bg`,`fg`,`when`]){let i=r[n];typeof i==`string`&&M_(i)&&N_(e,`segments.${t}.${n}`,`segment "${t}" uses {{ menu }} in its "${n}" — a menu is only valid in a segment's "template" (its placement is published only there; "${n}" needs a ${n===`when`?`predicate`:`color`}). Move the {{ menu }} into the template.`)}if(t.root!==void 0)for(let n of js(Fc(t.root)))typeof n.when==`string`&&M_(n.when)&&N_(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||!M_(r))continue;let n=j_(r);if(n!==`parse-failed`)for(let r of n){let n=r.kind===`issue`?r.message:F_(r.apply);n!==void 0&&N_(e,`segments.${t}`,`segment "${t}" has a {{ menu }} ${n}.`)}}}function F_(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(l_(e)===`closed`)return`whose apply action is named "${Uc}", which collides with the menu's closed-state sentinel and leaves it unopenable. Rename the action`}function I_(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 b_(e.presets)){let a=new Map,s=new Map;for(let c of js(C_(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,j_(t.template));let l=i.get(c.name);if(l===`parse-failed`)continue;let u=Ds(c);for(let[e,t]of l.entries()){if(t.kind===`issue`||F_(t.apply)!==void 0)continue;let{apply:i,options:l}=t,d=l_(i),f=u_(u,i,l.key),p=p_(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=f_(f,d),_=`${c.name}\0${e}`,v=s.get(g);if(v!==void 0&&v!==_){o(c.name,`two {{ menu }} disclosures resolve to the same identity ("${g}") — ${l.key===void 0?`a segment cannot contain two menus over the same apply action "${i}"`:`menus sharing key "${l.key}" must have distinct apply actions`}.`);continue}s.set(g,_),r[g]=$c(f,d),n[f]=Qc(f,Uc),n[p]={kind:`state`,key:p,default:`0`},r[p]={set:p,int:!0}}}}return{...e,variables:{...e.variables,...n},actions:{...e.actions,...r}}}const L_=sp({fromString:e=>e}),R_=`edit.mode`,z_=`edit.toggle`,B_=`arrange`,V_=`${mu}draft.`;function H_(e,t){return`configure:${e}:${t}`}const U_={variable:R_,key:R_,member:B_},W_=Yc(U_);function G_(e){try{return L_.parse(e).referencedCalls().some(e=>e.name===`action`&&e.args[0]===`edit.toggle`)}catch{return!1}}function K_(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`&&G_(e))return!0;return!1}function q_(e,t){if(yu(e,t,mu,`edit mode`),!K_(t))return;let n={[R_]:Qc(R_,Uc)},r={[z_]:$c(R_,B_)};t.variables={...t.variables??{},...n},t.actions={...t.actions??{},...r}}const J_=/"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|`[^`]*`/g;function*Y_(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 X_=`[A-Za-z_]\\w*(?:\\.[A-Za-z_]\\w*)*`,Z_=RegExp(`^(?:(\\$)(?:\\.(${X_}))?|\\.(${X_})?)(?=[\\s)]|$)`);function Q_(e,t,n){let r=Z_.exec(e.trimStart());if(r===null)return null;let[i,a]=r[1]===void 0?[t,r[3]]:[n,r[2]];return i===null?null:a===void 0?i:`${i}${a}.`}const $_=/^(\w+)\b\s*([\s\S]*)$/;function*ev(e,t){let n=[t];for(let r of Y_(e)){let e=r.replace(/^-(?=\s)/,``).trim(),[,i=``,a=``]=$_.exec(e)??[],o=n[n.length-1],s=n.length>1?n[n.length-2]:o;if(i===`end`){n.length>1&&n.pop();continue}if(i===`else`){yield{code:e,dot:s};let r=/^with\b([\s\S]*)$/.exec(a);n[n.length-1]=r===null?s:Q_(r[1],s,t);continue}yield{code:e,dot:o},i===`if`&&n.push(o),i===`with`&&n.push(Q_(a,o,t)),(i===`range`||i===`define`||i===`block`)&&n.push(null)}}const tv=/(?<![.$])\btemplate\s+$/;function*nv(e,t,n){let r=0;for(let i of[...e.matchAll(J_)]){let a=i.index+i[0].length;tv.test(e.slice(r,i.index))&&(yield{name:i[0].slice(1,-1),at:Q_(e.slice(a),t,n)}),r=a}}function*rv(e,t){let n=new Set;function*r(e,i,a,o){for(let{code:s,dot:c}of[...ev(e,i)]){yield{code:s,dot:c,root:i,via:a};for(let e of[...nv(s,c,i)]){let i=Object.hasOwn(t,e.name)?t[e.name]:void 0,a=`${e.name}\0${e.at??`\0`}`;i===void 0||o.has(e.name)||n.has(a)||(n.add(a),yield*r(i,e.at,e.name,new Set([...o,e.name])))}}}yield*r(e,``,null,new Set)}const iv=RegExp(`(?<![A-Za-z0-9_)$])(\\$?)\\.(${X_})`,`g`);function*av({code:e,dot:t,root:n}){let r=e.replace(J_,``);for(let e of[...r.matchAll(iv)]){let r=e[1]===`$`?n:t;r!==null&&(yield`${r}${e[2]}`)}}function ov(e,t){let n=new Map;for(let r of rv(e,t))for(let e of av(r))n.has(e)||n.set(e,r.via);return n}const sv=/(?<![.$])\b(action|picker|menu|carousel)\s+$/,cv={action:1,picker:2,menu:1,carousel:1};function*lv(e){let t=0,n=0,r=`action`;for(let i of[...e.matchAll(J_)]){let a=sv.exec(e.slice(t,i.index));a!==null&&(n=cv[a[1]],r=a[1]===`action`?`action`:`options`),n>0&&(yield{name:i[0].slice(1,-1),site:r},n--),t=i.index+i[0].length}}function uv(e,t){let n=new Map;for(let{code:r,via:i}of rv(e,t))for(let{name:e,site:t}of lv(r)){let r=`${e}\0${i??`\0`}`;n.has(r)||n.set(r,{name:e,site:t,via:i})}return[...n.values()]}function dv(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 fv(e){let t=new Set,n=new Set,r=(e,r)=>{t.add(e),pv(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 pv(e){return(e.kind===`shell`||e.kind===`file`)&&Is(e.parse)===`json`}var mv=me((e=>{function t(e){var t=[...arguments].slice(1);throw Error(typeof e==`number`?`[MobX] minified error nr: `+e+(t.length?` `+t.map(String).join(`,`):``)+`. Find the full error at: https://github.com/mobxjs/mobx/blob/main/packages/mobx/src/errors.ts`:`[MobX] `+e)}function n(){return typeof globalThis<`u`?globalThis:typeof window<`u`?window:typeof global<`u`?global:typeof self<`u`?self:tn}function r(){sn||t(`Proxy not available`)}function i(e){var t=!1;return function(){if(!t)return t=!0,e.apply(this,arguments)}}function a(e){return typeof e==`function`}function o(e){switch(typeof e){case`string`:case`symbol`:case`number`:return!0}return!1}function s(e){return typeof e==`object`&&!!e}function c(e){if(!s(e))return!1;var t=Object.getPrototypeOf(e);if(t==null)return!0;var n=Object.hasOwnProperty.call(t,`constructor`)&&t.constructor;return typeof n==`function`&&n.toString()===cn}function l(e){var t=e?.constructor;return!!t&&(t.name===`GeneratorFunction`||t.displayName===`GeneratorFunction`)}function u(e,t,n){rn(e,t,{enumerable:!1,writable:!0,configurable:!0,value:n})}function d(e,t,n){rn(e,t,{enumerable:!1,writable:!1,configurable:!0,value:n})}function f(e,t){var n=`isMobX`+e;return t.prototype[n]=!0,function(e){return s(e)&&!0===e[n]}}function p(e){return e!=null&&Object.prototype.toString.call(e)===`[object Map]`}function m(e){return e!=null&&Object.prototype.toString.call(e)===`[object Set]`}function h(e){return e===null?null:typeof e==`object`?``+e:e}function g(e,t){return an.hasOwnProperty.call(e,t)}function _(e,t){return!!(e&t)}function v(e,t,n){return n?e|=t:e&=~t,e}function y(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function b(e,t,n){if(re())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var i=new(e.bind.apply(e,r));return n&&w(i,n.prototype),i}function x(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,ie(r.key),r)}}function S(e,t,n){return t&&x(e.prototype,t),n&&x(e,n),Object.defineProperty(e,`prototype`,{writable:!1}),e}function C(e,t){var n=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if(typeof e==`string`)return y(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(e,t):void 0}}(e))||t&&e&&typeof e.length==`number`){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw TypeError(`Invalid attempt to iterate non-iterable instance.
55
55
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function ee(){return(ee=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(null,arguments)}function te(e){return(te=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function ne(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,w(e,t)}function re(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch{}return(re=function(){return!!e})()}function w(e,t){return(w=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function ie(e){var t=function(e){if(typeof e!=`object`||!e)return e;var t=e[Symbol.toPrimitive];if(t!==void 0){var n=t.call(e,`string`);if(typeof n!=`object`)return n;throw TypeError(`@@toPrimitive must return a primitive value.`)}return String(e)}(e);return typeof t==`symbol`?t:t+``}function T(e){var t=typeof Map==`function`?new Map:void 0;return(T=function(e){function n(){return b(e,arguments,te(this).constructor)}if(e===null||!function(e){try{return Function.toString.call(e).indexOf(`[native code]`)!==-1}catch{return typeof e==`function`}}(e))return e;if(typeof e!=`function`)throw TypeError(`Super expression must either be null or a function`);if(t!==void 0){if(t.has(e))return t.get(e);t.set(e,n)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),w(n,e)})(e)}function E(e){return Object.assign((function(t,n){if(oe(n))return e.t(t,n);ae(t,n,e)}),e)}function ae(e,t,n){g(e,pn)||u(e,pn,ee({},e[pn])),function(e){return e.i===`override`}(n)||(e[pn][t]=n)}function oe(e){return typeof e==`object`&&typeof e.kind==`string`}function D(e,t,n){t===void 0&&(t=ln),n===void 0&&(n=ln);var r=new mn(e);return t!==ln&&ut(r,t),n!==ln&&dt(r,n),r}function se(e,t,n){return bt(e)?e:Array.isArray(e)?Tn.array(e,{name:n}):c(e)?Tn.object(e,void 0,{name:n}):p(e)?Tn.map(e,{name:n}):m(e)?Tn.set(e,{name:n}):typeof e!=`function`||st(e)||_t(e)?e:l(e)?nr(e):Xn(n,e)}function ce(e){return e}function le(e,t){return{i:e,u:t,o:ue,s:de,t:fe}}function ue(e,t,n,r){var i;return(i=this.u)!=null&&i.bound?this.s(e,t,n,!1)===null?0:1:r===e.h?this.s(e,t,n,!1)===null?0:2:st(n.value)?1:(rn(r,t,pe(e,this,t,n,!1)),2)}function de(e,t,n,r){var i=pe(e,this,t,n);return e.l(t,i,r)}function fe(e,n){var r,i=n.kind,a=n.name,o=n.addInitializer,s=this,c=function(e){var t;return Me(s.u?.name??a.toString(),e,(t=s.u?.autoAction)!=null&&t)};return i==`field`?function(e){var t,n=e;return st(n)||(n=c(n)),(t=s.u)!=null&&t.bound&&((n=n.bind(this)).isMobxAction=!0),n}:i==`method`?(st(e)||(e=c(e)),(r=this.u)!=null&&r.bound&&o((function(){var e=this[a].bind(this);e.isMobxAction=!0,this[a]=e})),e):void t(`Cannot apply '`+s.i+`' to '`+String(a)+`' (kind: `+i+`):
56
- '`+s.i+`' can only be used on properties with a function value.`)}function pe(e,t,n,r,i){var a,o,s;i===void 0&&(i=z.safeDescriptors);var c=r.value;return(a=t.u)!=null&&a.bound&&(c=c.bind(e.v??e.h)),{value:Me(t.u?.name??n.toString(),c,(o=t.u?.autoAction)!=null&&o,(s=t.u)!=null&&s.bound?e.v??e.h:void 0),configurable:!i||e.p,enumerable:!1,writable:!i}}function me(e,t){return{i:e,u:t,o:he,s:ge,t:O}}function he(e,t,n,r){var i;return r===e.h?this.s(e,t,n,!1)===null?0:2:(i=this.u)!=null&&i.bound&&(!g(e.h,t)||!_t(e.h[t]))&&this.s(e,t,n,!1)===null?0:_t(n.value)?1:(rn(r,t,_e(e,0,0,n,!1,!1)),2)}function ge(e,t,n,r){var i=_e(e,0,0,n,this.u?.bound);return e.l(t,i,r)}function O(e,t){var n,r=t.name,i=t.addInitializer;return _t(e)||(e=nr(e)),(n=this.u)!=null&&n.bound&&i((function(){var e=this[r].bind(this);e.isMobXFlow=!0,this[r]=e})),e}function _e(e,t,n,r,i,a){a===void 0&&(a=z.safeDescriptors);var o=r.value;return _t(o)||(o=nr(o)),i&&((o=o.bind(e.v??e.h)).isMobXFlow=!0),{value:o,configurable:!a||e.p,enumerable:!1,writable:!a}}function ve(e,t){return{i:e,u:t,o:ye,s:be,t:xe}}function ye(e,t,n){return this.s(e,t,n,!1)===null?0:1}function be(e,t,n,r){return e.m(t,ee({},this.u,{get:n.get,set:n.set}),r)}function xe(e,t){var n=this,r=t.name;return(0,t.addInitializer)((function(){var t=Bt(this)[I],i=ee({},n.u,{get:e,context:this});i.name||=`ObservableObject.`+r.toString(),t.j.set(r,new Fn(i))})),function(){return this[I].O(r)}}function Se(e,t){return{i:e,u:t,o:Ce,s:we,t:Te}}function Ce(e,t,n){return this.s(e,t,n,!1)===null?0:1}function we(e,t,n,r){return e.g(t,n.value,this.u?.enhancer??se,r)}function Te(e,t){function n(e,t){var n=Bt(e)[I],i=new Nn(t,r.u?.enhancer??se,`ObservableObject.`+a.toString(),!1);n.j.set(a,i),o.add(e)}var r=this,i=t.kind,a=t.name,o=new WeakSet;if(i==`accessor`)return{get:function(){return o.has(this)||n(this,e.get.call(this)),this[I].O(a)},set:function(e){return o.has(this)||n(this,e),this[I].S(a,e)},init:function(e){return o.has(this)||n(this,e),e}}}function Ee(e){return{i:`true`,u:e,o:De,s:Oe,t:ke}}function De(e,t,n,r){var i,a,o;if(n.get)return On.o(e,t,n,r);if(n.set){var s=st(n.set)?n.set:Me(t.toString(),n.set);return r===e.h?e.l(t,{configurable:!z.safeDescriptors||e.p,set:s})===null?0:2:(rn(r,t,{configurable:!0,set:s}),2)}if(r!==e.h&&typeof n.value==`function`)return l(n.value)?((o=this.u)!=null&&o.autoBind?nr.bound:nr).o(e,t,n,r):((a=this.u)!=null&&a.autoBind?Xn.bound:Xn).o(e,t,n,r);var c=!1===this.u?.deep?Tn.ref:Tn;return typeof n.value==`function`&&(i=this.u)!=null&&i.autoBind&&(n.value=n.value.bind(e.v??e.h)),c.o(e,t,n,r)}function Oe(e,t,n,r){var i;return n.get?On.s(e,t,n,r):n.set?e.l(t,{configurable:!z.safeDescriptors||e.p,set:Me(t.toString(),n.set)},r):(typeof n.value==`function`&&(i=this.u)!=null&&i.autoBind&&(n.value=n.value.bind(e.v??e.h)),(!1===this.u?.deep?Tn.ref:Tn).s(e,t,n,r))}function ke(){t(`'`+this.i+`' cannot be used as a decorator`)}function Ae(e){return e||yn}function k(e){return!0===e.deep?se:!1===e.deep?ce:(t=e.defaultDecorator)&&(n=(r=t.u)?.enhancer)!=null?n:se;var t,n,r}function je(e,t,n){return oe(t)?bn.t(e,t):o(t)?void ae(e,t,bn):bt(e)?e:c(e)?Tn.object(e,t,n):Array.isArray(e)?Tn.array(e,t):p(e)?Tn.map(e,t):m(e)?Tn.set(e,t):typeof e==`object`&&e?e:Tn.box(e,t)}function Me(e,t,n,r){function i(){return Ne(0,n,t,r||this,arguments)}return n===void 0&&(n=!1),i.isMobxAction=!0,i.toString=function(){return t.toString()},jn&&(Mn.value=e,rn(i,`name`,Mn)),i}function Ne(e,t,n,r,i){var a=Pe(0,t);try{return n.apply(r,i)}catch(e){throw a._=e,e}finally{Fe(a)}}function Pe(e,t){var n=z.trackingDerivation,r=!t||!n;Qe();var i=z.allowStateChanges;r&&(We(),i=Le(!0));var a={A:r,k:n,M:i,V:Ke(!0),R:!1,N:0,T:An++,C:kn};return kn=a.T,a}function Fe(e){kn!==e.T&&t(30),kn=e.C,e._!==void 0&&(z.suppressReactionErrors=!0),Re(e.M),qe(e.V),$e(),e.A&&Ge(e.k),z.suppressReactionErrors=!1}function Ie(e,t){var n=Le(e);try{return t()}finally{Re(n)}}function Le(e){var t=z.allowStateChanges;return z.allowStateChanges=e,t}function Re(e){z.allowStateChanges=e}function ze(e){return e instanceof Rn}function Be(e){switch(e.I){case R.L:return!1;case R.P:case R.K:return!0;case R.B:for(var t=Ke(!0),n=We(),r=e.D,i=r.length,a=0;a<i;a++){var o=r[a];if(Ln(o)){if(z.disableErrorBoundaries)o.get();else try{o.get()}catch{return Ge(n),qe(t),!0}if(e.I===R.K)return Ge(n),qe(t),!0}}return Je(e),Ge(n),qe(t),!1}}function Ve(e,t,n){var r=Ke(!0);Je(e),e.W=Array(e.q===0?100:e.D.length),e.G=0,e.q=++z.runId;var i,a=z.trackingDerivation;if(z.trackingDerivation=e,z.inBatch++,!0===z.disableErrorBoundaries)i=t.call(n);else try{i=t.call(n)}catch(e){i=new Rn(e)}return z.inBatch--,z.trackingDerivation=a,function(e){for(var t=e.D,n=e.D=e.W,r=R.L,i=0,a=e.G,o=0;o<a;o++){var s=n[o];s.diffValue===0&&(s.diffValue=1,i!==o&&(n[i]=s),i++),s.I>r&&(r=s.I)}for(n.length=i,e.W=null,a=t.length;a--;){var c=t[a];c.diffValue===0&&Xe(c,e),c.diffValue=0}for(;i--;){var l=n[i];l.diffValue===1&&(l.diffValue=0,Ye(l,e))}r!==R.L&&(e.I=r,e.H())}(e),qe(r),i}function He(e){var t=e.D;e.D=[];for(var n=t.length;n--;)Xe(t[n],e);e.I=R.P}function Ue(e){var t=We();try{return e()}finally{Ge(t)}}function We(){var e=z.trackingDerivation;return z.trackingDerivation=null,e}function Ge(e){z.trackingDerivation=e}function Ke(e){var t=z.allowStateReads;return z.allowStateReads=e,t}function qe(e){z.allowStateReads=e}function Je(e){if(e.I!==R.L){e.I=R.L;for(var t=e.D,n=t.length;n--;)t[n].U=R.L}}function Ye(e,t){e.F.add(t),e.U>t.I&&(e.U=t.I)}function Xe(e,t){e.F.delete(t),e.F.size===0&&Ze(e)}function Ze(e){!1===e.isPendingUnobservation&&(e.isPendingUnobservation=!0,z.pendingUnobservations.push(e))}function Qe(){z.inBatch++}function $e(){if(--z.inBatch==0){nt();for(var e=z.pendingUnobservations,t=0;t<e.length;t++){var n=e[t];n.isPendingUnobservation=!1,n.F.size===0&&(n.isBeingObserved&&(n.isBeingObserved=!1,n.onBUO()),n instanceof Fn&&n.X())}z.pendingUnobservations=[]}}function et(e){var t=z.trackingDerivation;return t===null?(e.F.size===0&&z.inBatch>0&&Ze(e),!1):(t.q!==e.$&&(e.$=t.q,t.W[t.G++]=e,!e.isBeingObserved&&z.trackingContext&&(e.isBeingObserved=!0,e.onBO())),e.isBeingObserved)}function tt(e){e.U!==R.K&&(e.U=R.K,e.F.forEach((function(e){e.I===R.L&&e.H(),e.I=R.K})))}function nt(){z.inBatch>0||z.isRunningReactions||Wn(rt)}function rt(){z.isRunningReactions=!0;for(var e=z.pendingReactions,t=0;e.length>0;){++t==100&&(console.error(`[mobx] cycle in reaction: `+e[0]),e.splice(0));for(var n=e.splice(0),r=0,i=n.length;r<i;r++)n[r].J()}z.isRunningReactions=!1}function it(){return console.warn(`[mobx.spy] Is a no-op in production builds`),function(){}}function at(e){return function(t,n){return a(t)?Me(t.name||`<unnamed action>`,t,e):a(n)?Me(t,n,e):oe(n)?(e?qn:B).t(t,n):o(n)?ae(t,n,e?qn:B):o(t)?E(le(e?`autoAction`:`action`,{name:t,autoAction:e})):void 0}}function ot(e){return Ne(0,!1,e,this,void 0)}function st(e){return a(e)&&!0===e.isMobxAction}function ct(e,t){function n(){e(i)}var r;t===void 0&&(t=F);var i,a=t?.name??`Autorun`;if(t.scheduler||t.delay){var o=lt(t),s=!1;i=new Un(a,(function(){s||(s=!0,o((function(){s=!1,i.isDisposed||i.track(n)})))}),t.onError,t.requiresObservable)}else i=new Un(a,(function(){this.track(n)}),t.onError,t.requiresObservable);return(r=t)!=null&&(r=r.signal)!=null&&r.aborted||i.Y(),i.Z(t?.signal)}function lt(e){return e.scheduler?e.scheduler:e.delay?function(t){return setTimeout(t,e.delay)}:Zn}function ut(e,t,n){return ft(`onBO`,e,t,n)}function dt(e,t,n){return ft(`onBUO`,e,t,n)}function ft(e,t,n,r){var i=typeof r==`function`?Jt(t,n):Jt(t),o=a(r)?r:n,s=e+`L`;return i[s]?i[s].add(o):i[s]=new Set([o]),function(){var e=i[s];e&&(e.delete(o),e.size===0&&delete i[s])}}function pt(e,t,n,r){var i=fn(t);return Zt((function(){var t=Bt(e,r)[I];dn(i).forEach((function(e){t.s(e,i[e],!n||!(e in n)||n[e])}))})),e}function mt(e){var t,n={name:e.tt};return e.D&&e.D.length>0&&(n.dependencies=(t=e.D,Array.from(new Set(t))).map(mt)),n}function ht(e){var t={name:e.tt};return function(e){return e.F&&e.F.size>0}(e)&&(t.observers=Array.from(function(e){return e.F}(e)).map(ht)),t}function gt(e){a(e.cancel)&&e.cancel()}function _t(e){return!0===e?.isMobXFlow}function vt(e,t){return t===void 0?Ln(e):!1===Ht(e)||!e[I].j.has(t)?!1:Ln(Jt(e,t))}function yt(e,t){return!!e&&(t===void 0?Ht(e)||!!e[I]||hn(e)||Gn(e)||Ln(e):!!Ht(e)&&e[I].j.has(t))}function bt(e){return yt(e)}function xt(e){return Ht(e)?e[I].nt():hr(e)||vr(e)?Array.from(e.keys()):Lt(e)?e.map((function(e,t){return t})):void t(5)}function St(e,n){return Ht(e)?e[I].it(n):hr(e)||vr(e)?e.has(n):Lt(e)?n>=0&&n<e.length:void t(10)}function Ct(e){if(Ht(e))return e[I].rt();t(38)}function wt(e,t,n){return e.set(t,n),n}function Tt(e,t){t===void 0&&(t=void 0),Qe();try{return e.apply(t)}finally{$e()}}function Et(e,t,n){var r;if(typeof n.timeout==`number`){var i=Error(`WHEN_TIMEOUT`);r=setTimeout((function(){if(!o[I].isDisposed){if(o(),!n.onError)throw i;n.onError(i)}}),n.timeout)}n.name=`When`;var a=Me(`When-effect`,t),o=ct((function(t){Ie(!1,e)&&(t.dispose(),r&&clearTimeout(r),a())}),n);return o}function Dt(e,t){var n,r,i;if(t!=null&&(n=t.signal)!=null&&n.aborted)return Object.assign(Promise.reject(Error(`WHEN_ABORTED`)),{cancel:function(){return null}});var a=new Promise((function(n,a){var o,s=Et(e,n,ee({},t,{onError:a}));r=function(){s(),a(Error(`WHEN_CANCELLED`))},i=function(){s(),a(Error(`WHEN_ABORTED`))},t==null||(o=t.signal)==null||o.addEventListener==null||o.addEventListener(`abort`,i)})).finally((function(){var e;return t==null||(e=t.signal)==null||e.removeEventListener==null?void 0:e.removeEventListener(`abort`,i)}));return a.cancel=r,a}function Ot(e){return e[I]}function kt(e){return e.et!==void 0&&e.et.length>0}function At(e,t){var n=e.et||=[];return n.push(t),i((function(){var e=n.indexOf(t);e!==-1&&n.splice(e,1)}))}function jt(e,n){var r=We();try{for(var i=[].concat(e.et||[]),a=0,o=i.length;a<o&&((n=i[a](n))&&!n.type&&t(14),n);a++);return n}finally{Ge(r)}}function Mt(e){return e.ut!==void 0&&e.ut.length>0}function Nt(e,t){var n=e.ut||=[];return n.push(t),i((function(){var e=n.indexOf(t);e!==-1&&n.splice(e,1)}))}function Pt(e,t){var n=We(),r=e.ut;if(r){for(var i=0,a=(r=r.slice()).length;i<a;i++)r[i](t);Ge(n)}}function Ft(e,t,n,i){return n===void 0&&(n=`ObservableArray`),i===void 0&&(i=!1),r(),Zt((function(){var r=new sr(n,t,i,!1);d(r.j,I,r);var a=new Proxy(r.j,or);return r.v=a,e&&e.length&&r.ot(0,0,e),a}))}function A(e,t){typeof Array.prototype[e]==`function`&&(cr[e]=t(e))}function It(e){return function(){var t=this[I];t.st.reportObserved();var n=t.ft(t.j);return n[e].apply(n,arguments)}}function j(e){return function(t,n){var r=this,i=this[I];return i.st.reportObserved(),i.ft(i.j)[e]((function(e,i){return t.call(n,e,i,r)}))}}function M(e){return function(){var t=this,n=this[I];n.st.reportObserved();var r=n.ft(n.j),i=arguments[0];return arguments[0]=function(e,n,r){return i(e,n,r,t)},r[e].apply(r,arguments)}}function Lt(e){return s(e)&&dr(e[I])}function Rt(e){return e[Symbol.toStringTag]=`MapIterator`,N(e)}function zt(e){return e[Symbol.toStringTag]=`SetIterator`,N(e)}function Bt(e,t){if(g(e,I))return e;var n=t?.name??`ObservableObject`;return u(e,I,new br(e,new Map,String(n),function(e){return e?e.defaultDecorator??Ee(e):void 0}(t))),e}function Vt(e){return yr[e]||(yr[e]={get:function(){return this[I].O(e)},set:function(t){return this[I].S(e,t)}})}function Ht(e){return!!s(e)&&xr(e[I])}function Ut(e,t,n){var r;(r=e.h[pn])==null||delete r[n]}function Wt(e){return{enumerable:!1,configurable:!0,get:function(){return this[I].ct(e)},set:function(t){this[I].ht(e,t)}}}function Gt(e){rn(Er.prototype,``+e,Wt(e))}function Kt(e){if(e>wr){for(var t=wr;t<e+100;t++)Gt(t);wr=e}}function qt(e,t,n){return new Er(e,t,n)}function Jt(e,n){if(typeof e==`object`&&e){if(Lt(e))return n!==void 0&&t(23),e[I].st;if(vr(e))return e.st;if(hr(e)){if(n===void 0)return e.lt;var r=e.vt.get(n)||e.dt.get(n);return r||t(25,n,Xt(e)),r}if(Ht(e)){if(!n)return t(26);var i=e[I].j.get(n);return i||t(27,n,Xt(e)),i}if(hn(e)||Ln(e)||Gn(e))return e}else if(a(e)&&Gn(e[I]))return e[I];t(28)}function Yt(e,n){return e||t(29),n===void 0?hn(e)||Ln(e)||Gn(e)||hr(e)||vr(e)?e:e[I]?e[I]:void t(24,e):Yt(Jt(e,n))}function Xt(e,t){var n;if(t!==void 0)n=Jt(e,t);else{if(st(e))return e.name;n=Ht(e)||hr(e)||vr(e)?Yt(e):Jt(e)}return n.tt}function Zt(e){var t=We(),n=Le(!0);Qe();try{return e()}finally{$e(),Re(n),Ge(t)}}function Qt(e,t,n){return n===void 0&&(n=-1),function e(t,n,r,i,o){if(t===n)return t!==0||1/t==1/n;if(t==null||n==null)return!1;if(t!=t)return n!=n;var s=typeof t;if(s!==`function`&&s!==`object`&&typeof n!=`object`)return!1;var c=Dr.call(t);if(c!==Dr.call(n))return!1;switch(c){case`[object RegExp]`:case`[object String]`:return``+t==``+n;case`[object Number]`:return+t==+t?+t==0?1/t==1/n:+t==+n:+n!=+n;case`[object Date]`:case`[object Boolean]`:return+t==+n;case`[object Symbol]`:return typeof Symbol<`u`&&Symbol.valueOf.call(t)===Symbol.valueOf.call(n);case`[object Map]`:case`[object Set]`:r>=0&&r++}t=$t(t),n=$t(n);var l=c===`[object Array]`;if(!l){if(typeof t!=`object`||typeof n!=`object`)return!1;var u=t.constructor,d=n.constructor;if(u!==d&&!(a(u)&&u instanceof u&&a(d)&&d instanceof d)&&`constructor`in t&&`constructor`in n)return!1}if(r===0)return!1;r<0&&(r=-1),o||=[];for(var f=(i||=[]).length;f--;)if(i[f]===t)return o[f]===n;if(i.push(t),o.push(n),l){if((f=t.length)!==n.length)return!1;for(;f--;)if(!e(t[f],n[f],r-1,i,o))return!1}else{var p=Object.keys(t),m=p.length;if(Object.keys(n).length!==m)return!1;for(var h=0;h<m;h++){var _=p[h];if(!g(n,_)||!e(t[_],n[_],r-1,i,o))return!1}}return i.pop(),o.pop(),!0}(e,t,n)}function $t(e){return Lt(e)?e.slice():p(e)||hr(e)||m(e)||vr(e)?Array.from(e.entries()):e}function N(e){return e[Symbol.iterator]=en,Object.assign(Object.create(Or),e)}function en(){return this}Object.defineProperty(e,`__esModule`,{value:!0});var tn={},P=Object.assign,nn=Object.getOwnPropertyDescriptor,rn=Object.defineProperty,an=Object.prototype,on=[];Object.freeze(on);var F={};Object.freeze(F);var sn=typeof Proxy<`u`,cn=Object.toString(),ln=function(){},un=Object.getOwnPropertySymbols!==void 0,dn=typeof Reflect<`u`&&Reflect.ownKeys?Reflect.ownKeys:un?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames,fn=Object.getOwnPropertyDescriptors||function(e){var t={};return dn(e).forEach((function(n){t[n]=nn(e,n)})),t},pn=Symbol(`mobx-stored-annotations`),I=Symbol(`mobx administration`),mn=function(){function e(e){e===void 0&&(e=`Atom`),this.tt=void 0,this.bt=0,this.F=new Set,this.$=0,this.U=R.P,this.onBOL=void 0,this.onBUOL=void 0,this.tt=e}var t=e.prototype;return t.onBO=function(){this.onBOL&&this.onBOL.forEach((function(e){return e()}))},t.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(e){return e()}))},t.reportObserved=function(){return et(this)},t.reportChanged=function(){Qe(),tt(this),$e()},t.toString=function(){return this.tt},S(e,[{key:`isBeingObserved`,get:function(){return _(this.bt,e.pt)},set:function(t){this.bt=v(this.bt,e.pt,t)}},{key:`isPendingUnobservation`,get:function(){return _(this.bt,e.yt)},set:function(t){this.bt=v(this.bt,e.yt,t)}},{key:`diffValue`,get:function(){return+!!_(this.bt,e.wt)},set:function(t){this.bt=v(this.bt,e.wt,t===1)}}])}();mn.pt=1,mn.yt=2,mn.wt=4;var hn=f(`Atom`,mn),gn={identity:function(e,t){return e===t},structural:function(e,t){return Qt(e,t)},default:function(e,t){return Object.is?Object.is(e,t):e===t?e!==0||1/e==1/t:e!=e&&t!=t},shallow:function(e,t){return Qt(e,t,1)}},_n=E({i:`override`,o:function(){return 0},s:function(){t(`'`+this.i+`' can only be used with 'makeObservable'`)},t:function(){console.warn(`'`+this.i+`' cannot be used with decorators - this is a no-op`)}}),vn=Ee(),yn={deep:!0,name:void 0,defaultDecorator:void 0,proxy:!0};Object.freeze(yn);var bn=Se(`observable`),xn=Se(`observable.ref`,{enhancer:ce}),L=Se(`observable.shallow`,{enhancer:function(e,t,n){return e==null||Ht(e)||Lt(e)||hr(e)||vr(e)?e:Array.isArray(e)?Tn.array(e,{name:n,deep:!1}):c(e)?Tn.object(e,void 0,{name:n,deep:!1}):p(e)?Tn.map(e,{name:n,deep:!1}):m(e)?Tn.set(e,{name:n,deep:!1}):void 0}}),Sn=Se(`observable.struct`,{enhancer:function(e,t){return Qt(e,t)?t:e}}),Cn=E(bn);P(je,Cn);var wn,Tn=P(je,{box:function(e,t){var n=Ae(t);return new Nn(e,k(n),n.name,!0,n.equals)},array:function(e,t){var n=Ae(t);return(!1===z.useProxies||!1===n.proxy?qt:Ft)(e,k(n),n.name)},map:function(e,t){var n=Ae(t);return new mr(e,k(n),n.name)},set:function(e,t){var n=Ae(t);return new _r(e,k(n),n.name)},object:function(e,t,n){return Zt((function(){return pt(!1===z.useProxies||!1===n?.proxy?Bt({},n):function(e,t){var n;return r(),(n=(e=Bt(e,t))[I]).v??(n.v=new Proxy(e,rr))}({},n),e,t)}))},ref:E(xn),shallow:E(L),deep:Cn,struct:E(Sn)}),En=ve(`computed`),Dn=ve(`computed.struct`,{equals:gn.structural}),On=function(e,t){if(oe(t))return En.t(e,t);if(o(t))return ae(e,t,En);if(c(e))return E(ve(`computed`,e));var n=c(t)?t:{};return n.get=e,n.name||=e.name||``,new Fn(n)};Object.assign(On,En),On.struct=E(Dn);var kn=0,An=1,jn=(wn=nn((function(){}),`name`)?.configurable)!=null&&wn,Mn={value:`action`,configurable:!0,writable:!1,enumerable:!1},Nn=function(e){function t(t,n,r,i,a){var o;return r===void 0&&(r=`ObservableValue`),a===void 0&&(a=gn.default),(o=e.call(this,r)||this).enhancer=void 0,o.tt=void 0,o.equals=void 0,o.jt=!1,o.et=void 0,o.ut=void 0,o.Ot=void 0,o.dehancer=void 0,o.enhancer=n,o.tt=r,o.equals=a,o.Ot=n(t,void 0,r),o}ne(t,e);var n=t.prototype;return n.dehanceValue=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.set=function(e){(e=this.xt(e))!==z.UNCHANGED&&this.gt(e)},n.xt=function(e){if(kt(this)){var t=jt(this,{object:this,type:ar,newValue:e});if(!t)return z.UNCHANGED;e=t.newValue}return e=this.enhancer(e,this.Ot,this.tt),this.equals(this.Ot,e)?z.UNCHANGED:e},n.gt=function(e){var t=this.Ot;this.Ot=e,this.reportChanged(),Mt(this)&&Pt(this,{type:ar,object:this,newValue:e,oldValue:t})},n.get=function(){return this.reportObserved(),this.dehanceValue(this.Ot)},n.St=function(e){return At(this,e)},n._t=function(e,t){return t&&e({observableKind:`value`,debugObjectName:this.tt,object:this,type:ar,newValue:this.Ot,oldValue:void 0}),Nt(this,e)},n.raw=function(){return this.Ot},n.toJSON=function(){return this.get()},n.toString=function(){return this.tt+`[`+this.Ot+`]`},n.valueOf=function(){return h(this.get())},n[Symbol.toPrimitive]=function(){return this.valueOf()},t}(mn),Pn=f(`ObservableValue`,Nn),Fn=function(){function e(e){this.I=R.P,this.D=[],this.W=null,this.F=new Set,this.q=0,this.$=0,this.U=R.L,this.G=0,this.Ot=new Rn(null),this.tt=void 0,this.At=void 0,this.bt=0,this.derivation=void 0,this.kt=void 0,this.Mt=In.NONE,this.Et=void 0,this.Vt=void 0,this.Rt=void 0,this.Nt=void 0,this.onBOL=void 0,this.onBUOL=void 0,e.get||t(31),this.derivation=e.get,this.tt=e.name||`ComputedValue`,e.set&&(this.kt=Me(`ComputedValue-setter`,e.set)),this.Vt=e.equals||(e.compareStructural||e.struct?gn.structural:gn.default),this.Et=e.context,this.Rt=e.requiresReaction,this.Nt=!!e.keepAlive}var n=e.prototype;return n.H=function(){(function(e){e.U===R.L&&(e.U=R.B,e.F.forEach((function(e){e.I===R.L&&(e.I=R.B,e.H())})))})(this)},n.onBO=function(){this.onBOL&&this.onBOL.forEach((function(e){return e()}))},n.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(e){return e()}))},n.get=function(){if(this.isComputing&&t(32,this.tt,this.derivation),z.inBatch!==0||this.F.size!==0||this.Nt){if(et(this),Be(this)){var e=z.trackingContext;this.Nt&&!e&&(z.trackingContext=this),this.trackAndCompute()&&function(e){e.U!==R.K&&(e.U=R.K,e.F.forEach((function(t){t.I===R.B?t.I=R.K:t.I===R.L&&(e.U=R.L)})))}(this),z.trackingContext=e}}else Be(this)&&(this.Tt(),Qe(),this.Ot=this.Ct(!1),$e());var n=this.Ot;if(ze(n))throw n.cause;return n},n.set=function(e){if(this.kt){this.isRunningSetter&&t(33,this.tt),this.isRunningSetter=!0;try{this.kt.call(this.Et,e)}finally{this.isRunningSetter=!1}}else t(34,this.tt)},n.trackAndCompute=function(){var e=this.Ot,t=this.I===R.P,n=this.Ct(!0),r=t||ze(e)||ze(n)||!this.Vt(e,n);return r&&(this.Ot=n),r},n.Ct=function(e){this.isComputing=!0;var t,n=Le(!1);if(e)t=Ve(this,this.derivation,this.Et);else if(!0===z.disableErrorBoundaries)t=this.derivation.call(this.Et);else try{t=this.derivation.call(this.Et)}catch(e){t=new Rn(e)}return Re(n),this.isComputing=!1,t},n.X=function(){this.Nt||(He(this),this.Ot=void 0)},n._t=function(e,t){var n=this,r=!0,i=void 0;return ct((function(){var a=n.get();if(!r||t){var o=We();e({observableKind:`computed`,debugObjectName:n.tt,type:ar,object:n,newValue:a,oldValue:i}),Ge(o)}r=!1,i=a}))},n.Tt=function(){},n.toString=function(){return this.tt+`[`+this.derivation.toString()+`]`},n.valueOf=function(){return h(this.get())},n[Symbol.toPrimitive]=function(){return this.valueOf()},S(e,[{key:`isComputing`,get:function(){return _(this.bt,e.It)},set:function(t){this.bt=v(this.bt,e.It,t)}},{key:`isRunningSetter`,get:function(){return _(this.bt,e.Lt)},set:function(t){this.bt=v(this.bt,e.Lt,t)}},{key:`isBeingObserved`,get:function(){return _(this.bt,e.pt)},set:function(t){this.bt=v(this.bt,e.pt,t)}},{key:`isPendingUnobservation`,get:function(){return _(this.bt,e.yt)},set:function(t){this.bt=v(this.bt,e.yt,t)}},{key:`diffValue`,get:function(){return+!!_(this.bt,e.wt)},set:function(t){this.bt=v(this.bt,e.wt,t===1)}}])}();Fn.It=1,Fn.Lt=2,Fn.pt=4,Fn.yt=8,Fn.wt=16;var R,In,Ln=f(`ComputedValue`,Fn);(function(e){e[e.P=-1]=`NOT_TRACKING_`,e[e.L=0]=`UP_TO_DATE_`,e[e.B=1]=`POSSIBLY_STALE_`,e[e.K=2]=`STALE_`})(R||={}),function(e){e[e.NONE=0]=`NONE`,e[e.LOG=1]=`LOG`,e[e.BREAK=2]=`BREAK`}(In||={});var Rn=function(e){this.cause=void 0,this.cause=e},zn=[`mobxGuid`,`spyListeners`,`enforceActions`,`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`allowStateReads`,`disableErrorBoundaries`,`runId`,`UNCHANGED`,`useProxies`],Bn=function(){this.version=6,this.UNCHANGED={},this.trackingDerivation=null,this.trackingContext=null,this.runId=0,this.mobxGuid=0,this.inBatch=0,this.pendingUnobservations=[],this.pendingReactions=[],this.isRunningReactions=!1,this.allowStateChanges=!1,this.allowStateReads=!0,this.enforceActions=!0,this.spyListeners=[],this.globalReactionErrorHandlers=[],this.computedRequiresReaction=!1,this.reactionRequiresObservable=!1,this.observableRequiresReaction=!1,this.disableErrorBoundaries=!1,this.suppressReactionErrors=!1,this.useProxies=!0,this.verifyProxies=!1,this.safeDescriptors=!0},Vn=!0,Hn=!1,z=function(){var e=n();return e.__mobxInstanceCount>0&&!e.__mobxGlobals&&(Vn=!1),e.__mobxGlobals&&e.__mobxGlobals.version!==new Bn().version&&(Vn=!1),Vn?e.__mobxGlobals?(e.__mobxInstanceCount+=1,e.__mobxGlobals.UNCHANGED||(e.__mobxGlobals.UNCHANGED={}),e.__mobxGlobals):(e.__mobxInstanceCount=1,e.__mobxGlobals=new Bn):(setTimeout((function(){Hn||t(35)}),1),new Bn)}(),Un=function(){function e(e,t,n,r){e===void 0&&(e=`Reaction`),this.tt=void 0,this.Pt=void 0,this.Kt=void 0,this.Bt=void 0,this.D=[],this.W=[],this.I=R.P,this.q=0,this.G=0,this.bt=0,this.Mt=In.NONE,this.tt=e,this.Pt=t,this.Kt=n,this.Bt=r}var t=e.prototype;return t.H=function(){this.Y()},t.Y=function(){this.isScheduled||(this.isScheduled=!0,z.pendingReactions.push(this),nt())},t.J=function(){if(!this.isDisposed){Qe(),this.isScheduled=!1;var e=z.trackingContext;if(z.trackingContext=this,Be(this)){this.isTrackPending=!0;try{this.Pt()}catch(e){this.Dt(e)}}z.trackingContext=e,$e()}},t.track=function(e){if(!this.isDisposed){Qe(),this.isRunning=!0;var t=z.trackingContext;z.trackingContext=this;var n=Ve(this,e,void 0);z.trackingContext=t,this.isRunning=!1,this.isTrackPending=!1,this.isDisposed&&He(this),ze(n)&&this.Dt(n.cause),$e()}},t.Dt=function(e){var t=this;if(this.Kt)this.Kt(e,this);else{if(z.disableErrorBoundaries)throw e;z.suppressReactionErrors||console.error(`[mobx] uncaught error in '`+this+`'`,e),z.globalReactionErrorHandlers.forEach((function(n){return n(e,t)}))}},t.dispose=function(){this.isDisposed||(this.isDisposed=!0,this.isRunning||(Qe(),He(this),$e()))},t.Z=function(e){var t=this,n=function n(){t.dispose(),e==null||e.removeEventListener==null||e.removeEventListener(`abort`,n)};return e==null||e.addEventListener==null||e.addEventListener(`abort`,n),n[I]=this,`dispose`in Symbol&&typeof Symbol.dispose==`symbol`&&(n[Symbol.dispose]=n),n},t.toString=function(){return`Reaction[`+this.tt+`]`},t.trace=function(){},S(e,[{key:`isDisposed`,get:function(){return _(this.bt,e.Wt)},set:function(t){this.bt=v(this.bt,e.Wt,t)}},{key:`isScheduled`,get:function(){return _(this.bt,e.qt)},set:function(t){this.bt=v(this.bt,e.qt,t)}},{key:`isTrackPending`,get:function(){return _(this.bt,e.Gt)},set:function(t){this.bt=v(this.bt,e.Gt,t)}},{key:`isRunning`,get:function(){return _(this.bt,e.Ht)},set:function(t){this.bt=v(this.bt,e.Ht,t)}},{key:`diffValue`,get:function(){return+!!_(this.bt,e.wt)},set:function(t){this.bt=v(this.bt,e.wt,t===1)}}])}();Un.Wt=1,Un.qt=2,Un.Gt=4,Un.Ht=8,Un.wt=16;var Wn=function(e){return e()},Gn=f(`Reaction`,Un),B=le(`action`),Kn=le(`action.bound`,{bound:!0}),qn=le(`autoAction`,{autoAction:!0}),Jn=le(`autoAction.bound`,{autoAction:!0,bound:!0}),Yn=at(!1);Object.assign(Yn,B);var Xn=at(!0);Object.assign(Xn,qn),Yn.bound=E(Kn),Xn.bound=E(Jn);var Zn=function(e){return e()},Qn=0,$n=function(e){function t(){var n;return n=e.call(this,`FLOW_CANCELLED`)||this,Object.setPrototypeOf(n,(this instanceof t?this.constructor:void 0).prototype),n.name=`FlowCancellationError`,n}return ne(t,e),t.prototype.toString=function(){return`Error: `+this.message},t}(T(Error)),er=me(`flow`),tr=me(`flow.bound`,{bound:!0}),nr=Object.assign((function(e,t){if(oe(t))return er.t(e,t);if(o(t))return ae(e,t,er);var n=e,r=n.name||`<unnamed flow>`,i=function(){var e,t=this,i=arguments,o=++Qn,s=Yn(r+` - runid: `+o+` - init`,n).apply(t,i),c=void 0,l=new Promise((function(t,n){function i(e){var t;c=void 0;try{t=Yn(r+` - runid: `+o+` - yield `+ d++,s.next).call(s,e)}catch(e){return n(e)}u(t)}function l(e){var t;c=void 0;try{t=Yn(r+` - runid: `+o+` - yield `+ d++,s.throw).call(s,e)}catch(e){return n(e)}u(t)}function u(e){if(!a(e?.then))return e.done?t(e.value):(c=Promise.resolve(e.value)).then(i,l);e.then(u,n)}var d=0;e=n,i(void 0)}));return l.cancel=Yn(r+` - runid: `+o+` - cancel`,(function(){try{c&&gt(c);var t=s.return(void 0),n=Promise.resolve(t.value);n.then(ln,ln),gt(n),e(new $n)}catch(t){e(t)}})),l};return i.isMobXFlow=!0,i}),er);nr.bound=E(tr);var rr={has:function(e,t){return Ot(e).it(t)},get:function(e,t){return Ot(e).ct(t)},set:function(e,t,n){var r;return!!o(t)&&((r=Ot(e).ht(t,n,!0))==null||r)},deleteProperty:function(e,t){var n;return!!o(t)&&((n=Ot(e).Ut(t,!0))==null||n)},defineProperty:function(e,t,n){var r;return(r=Ot(e).l(t,n))==null||r},ownKeys:function(e){return Ot(e).rt()},preventExtensions:function(){t(13)}},ir=Symbol(`mobx-keys`),ar=`update`,or={get:function(e,t){var n=e[I];return t===I?n:t===`length`?n.Ft():typeof t!=`string`||isNaN(t)?g(cr,t)?cr[t]:e[t]:n.ct(parseInt(t))},set:function(e,t,n){var r=e[I];return t===`length`&&r.Xt(n),typeof t==`symbol`||isNaN(t)?e[t]=n:r.ht(parseInt(t),n),!0},preventExtensions:function(){t(15)}},sr=function(){function e(e,t,n,r){e===void 0&&(e=`ObservableArray`),this.zt=void 0,this.$t=void 0,this.st=void 0,this.j=[],this.et=void 0,this.ut=void 0,this.Jt=void 0,this.dehancer=void 0,this.v=void 0,this.Yt=0,this.zt=n,this.$t=r,this.st=new mn(e),this.Jt=function(e,n){return t(e,n,`ObservableArray[..]`)}}var n=e.prototype;return n.Qt=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.ft=function(e){return this.dehancer!==void 0&&e.length>0?e.map(this.dehancer):e},n.St=function(e){return At(this,e)},n._t=function(e,t){return t===void 0&&(t=!1),t&&e({observableKind:`array`,object:this.v,debugObjectName:this.st.tt,type:`splice`,index:0,added:this.j.slice(),addedCount:this.j.length,removed:[],removedCount:0}),Nt(this,e)},n.Ft=function(){return this.st.reportObserved(),this.j.length},n.Xt=function(e){(typeof e!=`number`||isNaN(e)||e<0)&&t(`Out of range: `+e);var n=this.j.length;if(e!==n)if(e>n){for(var r=Array(e-n),i=0;i<e-n;i++)r[i]=void 0;this.ot(n,0,r)}else this.ot(e,n-e)},n.Zt=function(e,n){e!==this.Yt&&t(16),this.Yt+=n,this.$t&&n>0&&Kt(e+n+1)},n.ot=function(e,t,n){var r=this,i=this.j.length;if(e===void 0?e=0:e>i?e=i:e<0&&(e=Math.max(0,i+e)),t=arguments.length===1?i-e:t==null?0:Math.max(0,Math.min(t,i-e)),n===void 0&&(n=on),kt(this)){var a=jt(this,{object:this.v,type:`splice`,index:e,removedCount:t,added:n});if(!a)return on;t=a.removedCount,n=a.added}if(n=n.length===0?n:n.map((function(e){return r.Jt(e,void 0)})),this.$t){var o=n.length-t;this.Zt(i,o)}var s=this.tn(e,t,n);return t===0&&n.length===0||this.nn(e,n,s),this.ft(s)},n.tn=function(e,t,n){var r;if(n.length<1e4)return(r=this.j).splice.apply(r,[e,t].concat(n));var i=this.j.slice(e,e+t),a=this.j.slice(e+t);this.j.length+=n.length-t;for(var o=0;o<n.length;o++)this.j[e+o]=n[o];for(var s=0;s<a.length;s++)this.j[e+n.length+s]=a[s];return i},n.in=function(e,t,n){var r=!this.zt&&!1,i=Mt(this),a=i||r?{observableKind:`array`,object:this.v,type:ar,debugObjectName:this.st.tt,index:e,newValue:t,oldValue:n}:null;this.st.reportChanged(),i&&Pt(this,a)},n.nn=function(e,t,n){var r=!this.zt&&!1,i=Mt(this),a=i||r?{observableKind:`array`,object:this.v,debugObjectName:this.st.tt,type:`splice`,index:e,removed:n,added:t,removedCount:n.length,addedCount:t.length}:null;this.st.reportChanged(),i&&Pt(this,a)},n.ct=function(e){if(!(this.$t&&e>=this.j.length))return this.st.reportObserved(),this.Qt(this.j[e]);console.warn(`[mobx] Out of bounds read: `+e)},n.ht=function(e,n){var r=this.j;if(this.$t&&e>r.length&&t(17,e,r.length),e<r.length){var i=r[e];if(kt(this)){var a=jt(this,{type:ar,object:this.v,index:e,newValue:n});if(!a)return;n=a.newValue}(n=this.Jt(n,i))!==i&&(r[e]=n,this.in(e,n,i))}else{for(var o=Array(e+1-r.length),s=0;s<o.length-1;s++)o[s]=void 0;o[o.length-1]=n,this.ot(r.length,0,o)}},e}(),cr={clear:function(){return this.splice(0)},replace:function(e){var t=this[I];return t.ot(0,t.j.length,e)},toJSON:function(){return this.slice()},splice:function(e,t){var n=[...arguments].slice(2),r=this[I];switch(arguments.length){case 0:return[];case 1:return r.ot(e);case 2:return r.ot(e,t)}return r.ot(e,t,n)},spliceWithArray:function(e,t,n){return this[I].ot(e,t,n)},push:function(){for(var e=this[I],t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];return e.ot(e.j.length,0,n),e.j.length},pop:function(){return this.splice(Math.max(this[I].j.length-1,0),1)[0]},shift:function(){return this.splice(0,1)[0]},unshift:function(){for(var e=this[I],t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];return e.ot(0,0,n),e.j.length},reverse:function(){return z.trackingDerivation&&t(37,`reverse`),this.replace(this.slice().reverse()),this},sort:function(){z.trackingDerivation&&t(37,`sort`);var e=this.slice();return e.sort.apply(e,arguments),this.replace(e),this},remove:function(e){var t=this[I],n=t.ft(t.j).indexOf(e);return n>-1&&(this.splice(n,1),!0)}};A(`at`,It),A(`concat`,It),A(`flat`,It),A(`includes`,It),A(`indexOf`,It),A(`join`,It),A(`lastIndexOf`,It),A(`slice`,It),A(`toString`,It),A(`toLocaleString`,It),A(`toSorted`,It),A(`toSpliced`,It),A(`with`,It),A(`every`,j),A(`filter`,j),A(`find`,j),A(`findIndex`,j),A(`findLast`,j),A(`findLastIndex`,j),A(`flatMap`,j),A(`forEach`,j),A(`map`,j),A(`some`,j),A(`toReversed`,j),A(`reduce`,M),A(`reduceRight`,M);var lr,ur,dr=f(`ObservableArrayAdministration`,sr),fr={},pr=`add`,mr=function(){function e(e,n,r){var i=this;n===void 0&&(n=se),r===void 0&&(r=`ObservableMap`),this.Jt=void 0,this.tt=void 0,this[I]=fr,this.vt=void 0,this.dt=void 0,this.lt=void 0,this.et=void 0,this.ut=void 0,this.dehancer=void 0,this.Jt=n,this.tt=r,a(Map)||t(18),Zt((function(){i.lt=D(`ObservableMap.keys()`),i.vt=new Map,i.dt=new Map,e&&i.merge(e)}))}var n=e.prototype;return n.it=function(e){return this.vt.has(e)},n.has=function(e){var t=this;if(!z.trackingDerivation)return this.it(e);var n=this.dt.get(e);if(!n){var r=n=new Nn(this.it(e),ce,`ObservableMap.key?`,!1);this.dt.set(e,r),dt(r,(function(){return t.dt.delete(e)}))}return n.get()},n.set=function(e,t){var n=this.it(e);if(kt(this)){var r=jt(this,{type:n?ar:pr,object:this,newValue:t,name:e});if(!r)return this;t=r.newValue}return n?this.rn(e,t):this.en(e,t),this},n.delete=function(e){var t=this;if(kt(this)&&!jt(this,{type:`delete`,object:this,name:e}))return!1;if(this.it(e)){var n=Mt(this),r=n?{observableKind:`map`,debugObjectName:this.tt,type:`delete`,object:this,oldValue:this.vt.get(e).Ot,name:e}:null;return Tt((function(){var n;t.lt.reportChanged(),(n=t.dt.get(e))==null||n.gt(!1),t.vt.get(e).gt(void 0),t.vt.delete(e)})),n&&Pt(this,r),!0}return!1},n.rn=function(e,t){var n=this.vt.get(e);if((t=n.xt(t))!==z.UNCHANGED){var r=Mt(this),i=r?{observableKind:`map`,debugObjectName:this.tt,type:ar,object:this,oldValue:n.Ot,name:e,newValue:t}:null;n.gt(t),r&&Pt(this,i)}},n.en=function(e,t){var n=this;Tt((function(){var r,i=new Nn(t,n.Jt,`ObservableMap.key`,!1);n.vt.set(e,i),t=i.Ot,(r=n.dt.get(e))==null||r.gt(!0),n.lt.reportChanged()}));var r=Mt(this);r&&Pt(this,r?{observableKind:`map`,debugObjectName:this.tt,type:pr,object:this,name:e,newValue:t}:null)},n.get=function(e){return this.has(e)?this.Qt(this.vt.get(e).get()):this.Qt(void 0)},n.Qt=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.keys=function(){return this.lt.reportObserved(),this.vt.keys()},n.values=function(){var e=this,t=this.keys();return Rt({next:function(){var n=t.next(),r=n.done;return{done:r,value:r?void 0:e.get(n.value)}}})},n.entries=function(){var e=this,t=this.keys();return Rt({next:function(){var n=t.next(),r=n.done,i=n.value;return{done:r,value:r?void 0:[i,e.get(i)]}}})},n[Symbol.iterator]=function(){return this.entries()},n.forEach=function(e,t){for(var n,r=C(this);!(n=r()).done;){var i=n.value;e.call(t,i[1],i[0],this)}},n.merge=function(e){var n=this;return hr(e)&&(e=new Map(e)),Tt((function(){var r,i;c(e)?function(e){var t=Object.keys(e);if(!un)return t;var n=Object.getOwnPropertySymbols(e);return n.length?[].concat(t,n.filter((function(t){return an.propertyIsEnumerable.call(e,t)}))):t}(e).forEach((function(t){return n.set(t,e[t])})):Array.isArray(e)?e.forEach((function(e){return n.set(e[0],e[1])})):p(e)?(r=Object.getPrototypeOf(e),i=Object.getPrototypeOf(r),Object.getPrototypeOf(i)!==null&&t(19,e),e.forEach((function(e,t){return n.set(t,e)}))):e!=null&&t(20,e)})),this},n.clear=function(){var e=this;Tt((function(){Ue((function(){for(var t,n=C(e.keys());!(t=n()).done;)e.delete(t.value)}))}))},n.replace=function(e){var n=this;return Tt((function(){for(var r,i=function(e){if(p(e)||hr(e))return e;if(Array.isArray(e))return new Map(e);if(c(e)){var n=new Map;for(var r in e)n.set(r,e[r]);return n}return t(21,e)}(e),a=new Map,o=!1,s=C(n.vt.keys());!(r=s()).done;){var l=r.value;if(!i.has(l))if(n.delete(l))o=!0;else{var u=n.vt.get(l);a.set(l,u)}}for(var d,f=C(i.entries());!(d=f()).done;){var m=d.value,h=m[0],g=m[1],_=n.vt.has(h);if(n.set(h,g),n.vt.has(h)){var v=n.vt.get(h);a.set(h,v),_||(o=!0)}}if(!o)if(n.vt.size!==a.size)n.lt.reportChanged();else for(var y=n.vt.keys(),b=a.keys(),x=y.next(),S=b.next();!x.done;){if(x.value!==S.value){n.lt.reportChanged();break}x=y.next(),S=b.next()}n.vt=a})),this},n.toString=function(){return`[object ObservableMap]`},n.toJSON=function(){return Array.from(this)},n._t=function(e){return Nt(this,e)},n.St=function(e){return At(this,e)},S(e,[{key:`size`,get:function(){return this.lt.reportObserved(),this.vt.size}},{key:Symbol.toStringTag,get:function(){return`Map`}}])}(),hr=f(`ObservableMap`,mr),gr={},_r=function(){function e(e,n,r){var i=this;n===void 0&&(n=se),r===void 0&&(r=`ObservableSet`),this.tt=void 0,this[I]=gr,this.vt=new Set,this.st=void 0,this.ut=void 0,this.et=void 0,this.dehancer=void 0,this.Jt=void 0,this.tt=r,a(Set)||t(22),this.Jt=function(e,t){return n(e,t,r)},Zt((function(){i.st=D(i.tt),e&&i.replace(e)}))}var n=e.prototype;return n.Qt=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.clear=function(){var e=this;Tt((function(){Ue((function(){for(var t,n=C(e.vt.values());!(t=n()).done;)e.delete(t.value)}))}))},n.forEach=function(e,t){for(var n,r=C(this);!(n=r()).done;){var i=n.value;e.call(t,i,i,this)}},n.add=function(e){var t=this;if(kt(this)){var n=jt(this,{type:pr,object:this,newValue:e});if(!n)return this;e=n.newValue}if(!this.has(e)){Tt((function(){t.vt.add(t.Jt(e,void 0)),t.st.reportChanged()}));var r=Mt(this);r&&Pt(this,r?{observableKind:`set`,debugObjectName:this.tt,type:pr,object:this,newValue:e}:null)}return this},n.delete=function(e){var t=this;if(kt(this)&&!jt(this,{type:`delete`,object:this,oldValue:e}))return!1;if(this.has(e)){var n=Mt(this),r=n?{observableKind:`set`,debugObjectName:this.tt,type:`delete`,object:this,oldValue:e}:null;return Tt((function(){t.st.reportChanged(),t.vt.delete(e)})),n&&Pt(this,r),!0}return!1},n.has=function(e){return this.st.reportObserved(),this.vt.has(this.Qt(e))},n.entries=function(){var e=this.values();return zt({next:function(){var t=e.next(),n=t.value,r=t.done;return r?{value:void 0,done:r}:{value:[n,n],done:r}}})},n.keys=function(){return this.values()},n.values=function(){this.st.reportObserved();var e=this,t=this.vt.values();return zt({next:function(){var n=t.next(),r=n.done;return r?{value:void 0,done:r}:{value:e.Qt(n.value),done:r}}})},n.intersection=function(e){return m(e)&&!vr(e)?e.intersection(this):new Set(this).intersection(e)},n.union=function(e){return m(e)&&!vr(e)?e.union(this):new Set(this).union(e)},n.difference=function(e){return new Set(this).difference(e)},n.symmetricDifference=function(e){return m(e)&&!vr(e)?e.symmetricDifference(this):new Set(this).symmetricDifference(e)},n.isSubsetOf=function(e){return new Set(this).isSubsetOf(e)},n.isSupersetOf=function(e){return new Set(this).isSupersetOf(e)},n.isDisjointFrom=function(e){return m(e)&&!vr(e)?e.isDisjointFrom(this):new Set(this).isDisjointFrom(e)},n.replace=function(e){var n=this;return vr(e)&&(e=new Set(e)),Tt((function(){Array.isArray(e)||m(e)?(n.clear(),e.forEach((function(e){return n.add(e)}))):e!=null&&t(`Cannot initialize set from `+e)})),this},n._t=function(e){return Nt(this,e)},n.St=function(e){return At(this,e)},n.toJSON=function(){return Array.from(this)},n.toString=function(){return`[object ObservableSet]`},n[Symbol.iterator]=function(){return this.values()},S(e,[{key:`size`,get:function(){return this.st.reportObserved(),this.vt.size}},{key:Symbol.toStringTag,get:function(){return`Set`}}])}(),vr=f(`ObservableSet`,_r),yr=Object.create(null),br=function(){function e(e,t,n,r){t===void 0&&(t=new Map),r===void 0&&(r=vn),this.h=void 0,this.j=void 0,this.tt=void 0,this.un=void 0,this.lt=void 0,this.ut=void 0,this.et=void 0,this.v=void 0,this.p=void 0,this.on=void 0,this.sn=void 0,this.h=e,this.j=t,this.tt=n,this.un=r,this.lt=new mn(`ObservableObject.keys`),this.p=c(this.h)}var n=e.prototype;return n.O=function(e){return this.j.get(e).get()},n.S=function(e,t){var n=this.j.get(e);if(n instanceof Fn)return n.set(t),!0;if(kt(this)){var r=jt(this,{type:ar,object:this.v||this.h,name:e,newValue:t});if(!r)return null;t=r.newValue}if((t=n.xt(t))!==z.UNCHANGED){var i=Mt(this),a=i?{type:ar,observableKind:`object`,debugObjectName:this.tt,object:this.v||this.h,oldValue:n.Ot,name:e,newValue:t}:null;n.gt(t),i&&Pt(this,a)}return!0},n.ct=function(e){return z.trackingDerivation&&!g(this.h,e)&&this.it(e),this.h[e]},n.ht=function(e,t,n){return n===void 0&&(n=!1),g(this.h,e)?this.j.has(e)?this.S(e,t):n?Reflect.set(this.h,e,t):(this.h[e]=t,!0):this.s(e,{value:t,enumerable:!0,writable:!0,configurable:!0},this.un,n)},n.it=function(e){if(!z.trackingDerivation)return e in this.h;this.sn||=new Map;var t=this.sn.get(e);return t||(t=new Nn(e in this.h,ce,`ObservableObject.key?`,!1),this.sn.set(e,t)),t.get()},n.o=function(e,n){if(!0===n&&(n=this.un),!1!==n){if(!(e in this.h)){var r;if((r=this.h[pn])!=null&&r[e])return;t(1,n.i,this.tt+`.`+e.toString())}for(var i=this.h;i&&i!==an;){var a=nn(i,e);if(a){var o=n.o(this,e,a,i);if(o===0)return;if(o===1)break}i=Object.getPrototypeOf(i)}Ut(this,0,e)}},n.s=function(e,t,n,r){if(r===void 0&&(r=!1),!0===n&&(n=this.un),!1===n)return this.l(e,t,r);var i=n.s(this,e,t,r);return i&&Ut(this,0,e),i},n.l=function(e,t,n){n===void 0&&(n=!1);try{Qe();var r=this.Ut(e);if(!r)return r;if(kt(this)){var i=jt(this,{object:this.v||this.h,name:e,type:pr,newValue:t.value});if(!i)return null;var a=i.newValue;t.value!==a&&(t=ee({},t,{value:a}))}if(n){if(!Reflect.defineProperty(this.h,e,t))return!1}else rn(this.h,e,t);this.fn(e,t.value)}finally{$e()}return!0},n.g=function(e,t,n,r){r===void 0&&(r=!1);try{Qe();var i=this.Ut(e);if(!i)return i;if(kt(this)){var a=jt(this,{object:this.v||this.h,name:e,type:pr,newValue:t});if(!a)return null;t=a.newValue}var o=Vt(e),s={configurable:!z.safeDescriptors||this.p,enumerable:!0,get:o.get,set:o.set};if(r){if(!Reflect.defineProperty(this.h,e,s))return!1}else rn(this.h,e,s);var c=new Nn(t,n,`ObservableObject.key`,!1);this.j.set(e,c),this.fn(e,c.Ot)}finally{$e()}return!0},n.m=function(e,t,n){n===void 0&&(n=!1);try{Qe();var r=this.Ut(e);if(!r)return r;if(kt(this)&&!jt(this,{object:this.v||this.h,name:e,type:pr,newValue:void 0}))return null;t.name||=`ObservableObject.key`,t.context=this.v||this.h;var i=Vt(e),a={configurable:!z.safeDescriptors||this.p,enumerable:!1,get:i.get,set:i.set};if(n){if(!Reflect.defineProperty(this.h,e,a))return!1}else rn(this.h,e,a);this.j.set(e,new Fn(t)),this.fn(e,void 0)}finally{$e()}return!0},n.Ut=function(e,t){if(t===void 0&&(t=!1),!g(this.h,e))return!0;if(kt(this)&&!jt(this,{object:this.v||this.h,name:e,type:`remove`}))return null;try{var n;Qe();var r=Mt(this),i=this.j.get(e),a=void 0;if(!i&&r&&(a=nn(this.h,e)?.value),t){if(!Reflect.deleteProperty(this.h,e))return!1}else delete this.h[e];i&&(this.j.delete(e),i instanceof Nn&&(a=i.Ot),tt(i)),this.lt.reportChanged(),(n=this.sn)==null||(n=n.get(e))==null||n.set(e in this.h),r&&r&&Pt(this,{type:`remove`,observableKind:`object`,object:this.v||this.h,debugObjectName:this.tt,oldValue:a,name:e})}finally{$e()}return!0},n._t=function(e){return Nt(this,e)},n.St=function(e){return At(this,e)},n.fn=function(e,t){var n,r=Mt(this);r&&r&&Pt(this,r?{type:pr,observableKind:`object`,debugObjectName:this.tt,object:this.v||this.h,name:e,newValue:t}:null),(n=this.sn)==null||(n=n.get(e))==null||n.set(!0),this.lt.reportChanged()},n.rt=function(){return this.lt.reportObserved(),dn(this.h)},n.nt=function(){return this.lt.reportObserved(),Object.keys(this.h)},e}(),xr=f(`ObservableObjectAdministration`,br),Sr=Wt(0),Cr=function(){var e=!1,t={};return Object.defineProperty(t,`0`,{set:function(){e=!0}}),Object.create(t)[0]=1,!1===e}(),wr=0,Tr=function(){};lr=Tr,ur=Array.prototype,Object.setPrototypeOf?Object.setPrototypeOf(lr.prototype,ur):lr.prototype.__proto__===void 0?lr.prototype=ur:lr.prototype.__proto__=ur;var Er=function(e){function t(t,n,r,i){var a;return r===void 0&&(r=`ObservableArray`),i===void 0&&(i=!1),a=e.call(this)||this,Zt((function(){var e=new sr(r,n,i,!0);e.v=a,d(a,I,e),t&&t.length&&a.spliceWithArray(0,0,t),Cr&&Object.defineProperty(a,`0`,Sr)})),a}ne(t,e);var n=t.prototype;return n.concat=function(){this[I].st.reportObserved();var e=[...arguments];return Array.prototype.concat.apply(this.slice(),e.map((function(e){return Lt(e)?e.slice():e})))},n[Symbol.iterator]=function(){var e=this,t=0;return N({next:function(){return t<e.length?{value:e[t++],done:!1}:{done:!0,value:void 0}}})},S(t,[{key:`length`,get:function(){return this[I].Ft()},set:function(e){this[I].Xt(e)}},{key:Symbol.toStringTag,get:function(){return`Array`}}])}(Tr);Object.entries(cr).forEach((function(e){var t=e[0];t!==`concat`&&u(Er.prototype,t,e[1])})),Kt(1e3);var Dr=an.toString,Or=n().Iterator?.prototype||{};[`Symbol`,`Map`,`Set`].forEach((function(e){n()[e]===void 0&&t(`MobX requires global '`+e+`' to be available or polyfilled`)})),typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__==`object`&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:it,extras:{getDebugName:Xt},$mobx:I}),e.$mobx=I,e.FlowCancellationError=$n,e.ObservableMap=mr,e.ObservableSet=_r,e.Reaction=Un,e._allowStateChanges=Ie,e._allowStateChangesInsideComputed=ot,e._allowStateReadsEnd=qe,e._allowStateReadsStart=Ke,e._autoAction=Xn,e._endAction=Fe,e._getAdministration=Yt,e._getGlobalState=function(){return z},e._interceptReads=function(e,t,n){var r;return hr(e)||Lt(e)||Pn(e)?r=Yt(e):Ht(e)&&(r=Yt(e,t)),r.dehancer=typeof t==`function`?t:n,function(){r.dehancer=void 0}},e._isComputingDerivation=function(){return z.trackingDerivation!==null},e._resetGlobalState=function(){var e=new Bn;for(var t in e)zn.indexOf(t)===-1&&(z[t]=e[t]);z.allowStateChanges=!z.enforceActions},e._startAction=Pe,e.action=Yn,e.autorun=ct,e.comparer=gn,e.computed=On,e.configure=function(e){!0===e.isolateGlobalState&&function(){if((z.pendingReactions.length||z.inBatch||z.isRunningReactions)&&t(36),Hn=!0,Vn){var e=n();--e.__mobxInstanceCount==0&&(e.__mobxGlobals=void 0),z=new Bn}}();var r,i,a=e.useProxies,o=e.enforceActions;if(a!==void 0&&(z.useProxies=a===`always`||a!==`never`&&typeof Proxy<`u`),a===`ifavailable`&&(z.verifyProxies=!0),o!==void 0){var s=o===`always`?`always`:o===`observed`;z.enforceActions=s,z.allowStateChanges=!0!==s&&s!==`always`}[`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`disableErrorBoundaries`,`safeDescriptors`].forEach((function(t){t in e&&(z[t]=!!e[t])})),z.allowStateReads=!z.observableRequiresReaction,e.reactionScheduler&&(r=e.reactionScheduler,i=Wn,Wn=function(e){return r((function(){return i(e)}))})},e.createAtom=D,e.defineProperty=function(e,n,r){if(Ht(e))return e[I].l(n,r);t(39)},e.entries=function(e){return Ht(e)?xt(e).map((function(t){return[t,e[t]]})):hr(e)?xt(e).map((function(t){return[t,e.get(t)]})):vr(e)?Array.from(e.entries()):Lt(e)?e.map((function(e,t){return[t,e]})):void t(7)},e.extendObservable=pt,e.flow=nr,e.flowResult=function(e){return e},e.get=function(e,n){if(St(e,n))return Ht(e)?e[I].ct(n):hr(e)?e.get(n):Lt(e)?e[n]:void t(11)},e.getAtom=Jt,e.getDebugName=Xt,e.getDependencyTree=function(e,t){return mt(Jt(e,t))},e.getObserverTree=function(e,t){return ht(Jt(e,t))},e.has=St,e.intercept=function(e,t,n){return a(n)?function(e,t,n){return Yt(e,t).St(n)}(e,t,n):function(e,t){return Yt(e).St(t)}(e,t)},e.isAction=st,e.isBoxedObservable=Pn,e.isComputed=function(e){return vt(e)},e.isComputedProp=function(e,t){return vt(e,t)},e.isFlow=_t,e.isFlowCancellationError=function(e){return e instanceof $n},e.isObservable=bt,e.isObservableArray=Lt,e.isObservableMap=hr,e.isObservableObject=Ht,e.isObservableProp=function(e,t){return yt(e,t)},e.isObservableSet=vr,e.keys=xt,e.makeAutoObservable=function(e,t,n){return c(e)?pt(e,e,t,n):(Zt((function(){var r=Bt(e,n)[I];if(!e[ir]){var i=Object.getPrototypeOf(e),a=new Set([].concat(dn(e),dn(i)));a.delete(`constructor`),a.delete(I),u(i,ir,a)}e[ir].forEach((function(e){return r.o(e,!t||!(e in t)||t[e])}))})),e)},e.makeObservable=function(e,t,n){return Zt((function(){var r=Bt(e,n)[I];t??=function(e){return g(e,pn)||u(e,pn,ee({},e[pn])),e[pn]}(e),dn(t).forEach((function(e){return r.o(e,t[e])}))})),e},e.observable=Tn,e.observe=function(e,t,n,r){return a(n)?function(e,t,n,r){return Yt(e,t)._t(n,r)}(e,t,n,r):function(e,t,n){return Yt(e)._t(t,n)}(e,t,n)},e.onBecomeObserved=ut,e.onBecomeUnobserved=dt,e.onReactionError=function(e){return z.globalReactionErrorHandlers.push(e),function(){var t=z.globalReactionErrorHandlers.indexOf(e);t>=0&&z.globalReactionErrorHandlers.splice(t,1)}},e.override=_n,e.ownKeys=Ct,e.reaction=function(e,t,n){function r(){if(p=!1,!h.isDisposed){var t=!1,r=s;h.track((function(){var n=Ie(!1,(function(){return e(h)}));t=f||!m(s,n),s=n})),(f&&n.fireImmediately||!f&&t)&&l(s,r,h),f=!1}}var i;n===void 0&&(n=F);var a,o,s,c=n.name??`Reaction`,l=Yn(c,n.onError?(a=n.onError,o=t,function(){try{return o.apply(this,arguments)}catch(e){a.call(this,e)}}):t),u=!n.scheduler&&!n.delay,d=lt(n),f=!0,p=!1,m=n.compareStructural?gn.structural:n.equals||gn.default,h=new Un(c,(function(){f||u?r():p||(p=!0,d(r))}),n.onError,n.requiresObservable);return(i=n)!=null&&(i=i.signal)!=null&&i.aborted||h.Y(),h.Z(n?.signal)},e.remove=function(e,n){Ht(e)?e[I].Ut(n):hr(e)||vr(e)?e.delete(n):Lt(e)?(typeof n!=`number`&&(n=parseInt(n,10)),e.splice(n,1)):t(9)},e.runInAction=ot,e.set=function e(n,r,i){if(arguments.length!==2||vr(n))Ht(n)?n[I].ht(r,i):hr(n)?n.set(r,i):vr(n)?n.add(r):Lt(n)?(typeof r!=`number`&&(r=parseInt(r,10)),r<0&&t(`Invalid index: '`+r+`'`),Qe(),r>=n.length&&(n.length=r+1),n[r]=i,$e()):t(8);else{Qe();var a=r;try{for(var o in a)e(n,o,a[o])}finally{$e()}}},e.spy=it,e.toJS=function(e){return function e(t,n){if(typeof t!=`object`||!t||t instanceof Date||!bt(t))return t;if(Pn(t)||Ln(t))return e(t.get(),n);if(n.has(t))return n.get(t);if(Lt(t)){var r=wt(n,t,Array(t.length));return t.forEach((function(t,i){r[i]=e(t,n)})),r}if(vr(t)){var i=wt(n,t,new Set);return t.forEach((function(t){i.add(e(t,n))})),i}if(hr(t)){var a=wt(n,t,new Map);return t.forEach((function(t,r){a.set(r,e(t,n))})),a}var o=wt(n,t,{});return Ct(t).forEach((function(r){an.propertyIsEnumerable.call(t,r)&&(o[r]=e(t[r],n))})),o}(e,new Map)},e.trace=function(){},e.transaction=Tt,e.untracked=Ue,e.values=function(e){return Ht(e)?xt(e).map((function(t){return e[t]})):hr(e)?xt(e).map((function(t){return e.get(t)})):vr(e)?Array.from(e.values()):Lt(e)?e.slice():void t(6)},e.when=function(e,t,n){return arguments.length===1||t&&typeof t==`object`?Dt(e,t):Et(e,t,n||{})}})),mv=me((e=>{Object.defineProperty(e,`__esModule`,{value:!0});var t={0:`Invalid value for configuration 'enforceActions', expected 'never', 'always' or 'observed'`,1:function(e,t){return`Cannot apply '`+e+`' to '`+t.toString()+`': Field not found.`},5:`'keys()' can only be used on observable objects, arrays, sets and maps`,6:`'values()' can only be used on observable objects, arrays, sets and maps`,7:`'entries()' can only be used on observable objects, arrays and maps`,8:`'set()' can only be used on observable objects, arrays and maps`,9:`'remove()' can only be used on observable objects, arrays and maps`,10:`'has()' can only be used on observable objects, arrays and maps`,11:`'get()' can only be used on observable objects, arrays and maps`,12:`Invalid annotation`,13:`Dynamic observable objects cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)`,14:`Intercept handlers should return nothing or a change object`,15:`Observable arrays cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)`,16:`Modification exception: the internal structure of an observable array was changed.`,17:function(e,t){return`[mobx.array] Index out of bounds, `+e+` is larger than `+t},18:`mobx.map requires Map polyfill for the current browser. Check babel-polyfill or core-js/es6/map.js`,19:function(e){return`Cannot initialize from classes that inherit from Map: `+e.constructor.name},20:function(e){return`Cannot initialize map from `+e},21:function(e){return`Cannot convert to map from '`+e+`'`},22:`mobx.set requires Set polyfill for the current browser. Check babel-polyfill or core-js/es6/set.js`,23:`It is not possible to get index atoms from arrays`,24:function(e){return`Cannot obtain administration from `+e},25:function(e,t){return`the entry '`+e+`' does not exist in the observable map '`+t+`'`},26:`please specify a property`,27:function(e,t){return`no observable property '`+e.toString()+`' found on the observable object '`+t+`'`},28:function(e){return`Cannot obtain atom from `+e},29:`Expecting some object`,30:`invalid action stack. did you forget to finish an action?`,31:`missing option for computed: get`,32:function(e,t){return`Cycle detected in computation `+e+`: `+t},33:function(e){return`The setter of computed value '`+e+`' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?`},34:function(e){return`[ComputedValue '`+e+`'] It is not possible to assign a new value to a computed value.`},35:"There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`",36:`isolateGlobalState should be called before MobX is running any reactions`,37:function(e){return"[mobx] `observableArray."+e+"()` mutates the array in-place, which is not allowed inside a derivation. Use `array.slice()."+e+"()` instead"},38:`'ownKeys()' can only be used on observable objects`,39:`'defineProperty()' can only be used on observable objects`};function n(e){var n=[...arguments].slice(1),r=typeof e==`string`?e:t[e];throw typeof r==`function`&&(r=r.apply(null,n)),Error(`[MobX] `+r)}var r={};function i(){return typeof globalThis<`u`?globalThis:typeof window<`u`?window:typeof global<`u`?global:typeof self<`u`?self:r}var a=Object.assign,o=Object.getOwnPropertyDescriptor,s=Object.defineProperty,c=Object.prototype,l=[];Object.freeze(l);var u={};Object.freeze(u);var d=typeof Proxy<`u`,f=Object.toString();function p(){d||n("`Proxy` objects are not available in the current environment. Please configure MobX to enable a fallback implementation.`")}function m(e){L.verifyProxies&&n(`MobX is currently configured to be able to run in ES5 mode, but in ES5 MobX won't be able to `+e)}function h(){return++L.mobxGuid}function g(e){var t=!1;return function(){if(!t)return t=!0,e.apply(this,arguments)}}var _=function(){};function v(e){return typeof e==`function`}function y(e){switch(typeof e){case`string`:case`symbol`:case`number`:return!0}return!1}function b(e){return typeof e==`object`&&!!e}function x(e){if(!b(e))return!1;var t=Object.getPrototypeOf(e);if(t==null)return!0;var n=Object.hasOwnProperty.call(t,`constructor`)&&t.constructor;return typeof n==`function`&&n.toString()===f}function S(e){var t=e?.constructor;return t?t.name===`GeneratorFunction`||t.displayName===`GeneratorFunction`:!1}function C(e,t,n){s(e,t,{enumerable:!1,writable:!0,configurable:!0,value:n})}function ee(e,t,n){s(e,t,{enumerable:!1,writable:!1,configurable:!0,value:n})}function te(e,t){var n=`isMobX`+e;return t.prototype[n]=!0,function(e){return b(e)&&e[n]===!0}}function ne(e){return e!=null&&Object.prototype.toString.call(e)===`[object Map]`}function re(e){return Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(e)))===null}function w(e){return e!=null&&Object.prototype.toString.call(e)===`[object Set]`}var ie=Object.getOwnPropertySymbols!==void 0;function T(e){var t=Object.keys(e);if(!ie)return t;var n=Object.getOwnPropertySymbols(e);return n.length?[].concat(t,n.filter(function(t){return c.propertyIsEnumerable.call(e,t)})):t}var E=typeof Reflect<`u`&&Reflect.ownKeys?Reflect.ownKeys:ie?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames;function ae(e){return typeof e==`string`?e:typeof e==`symbol`?e.toString():new String(e).toString()}function oe(e){return e===null?null:typeof e==`object`?``+e:e}function D(e,t){return c.hasOwnProperty.call(e,t)}var se=Object.getOwnPropertyDescriptors||function(e){var t={};return E(e).forEach(function(n){t[n]=o(e,n)}),t};function ce(e,t){return!!(e&t)}function le(e,t,n){return n?e|=t:e&=~t,e}function ue(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function de(e,t,n){if(ve())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var i=new(e.bind.apply(e,r));return n&&ye(i,n.prototype),i}function fe(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,xe(r.key),r)}}function pe(e,t,n){return t&&fe(e.prototype,t),n&&fe(e,n),Object.defineProperty(e,`prototype`,{writable:!1}),e}function me(e,t){var n=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=Se(e))||t&&e&&typeof e.length==`number`){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw TypeError(`Invalid attempt to iterate non-iterable instance.
56
+ '`+s.i+`' can only be used on properties with a function value.`)}function pe(e,t,n,r,i){var a,o,s;i===void 0&&(i=z.safeDescriptors);var c=r.value;return(a=t.u)!=null&&a.bound&&(c=c.bind(e.v??e.h)),{value:Me(t.u?.name??n.toString(),c,(o=t.u?.autoAction)!=null&&o,(s=t.u)!=null&&s.bound?e.v??e.h:void 0),configurable:!i||e.p,enumerable:!1,writable:!i}}function me(e,t){return{i:e,u:t,o:he,s:ge,t:O}}function he(e,t,n,r){var i;return r===e.h?this.s(e,t,n,!1)===null?0:2:(i=this.u)!=null&&i.bound&&(!g(e.h,t)||!_t(e.h[t]))&&this.s(e,t,n,!1)===null?0:_t(n.value)?1:(rn(r,t,_e(e,0,0,n,!1,!1)),2)}function ge(e,t,n,r){var i=_e(e,0,0,n,this.u?.bound);return e.l(t,i,r)}function O(e,t){var n,r=t.name,i=t.addInitializer;return _t(e)||(e=nr(e)),(n=this.u)!=null&&n.bound&&i((function(){var e=this[r].bind(this);e.isMobXFlow=!0,this[r]=e})),e}function _e(e,t,n,r,i,a){a===void 0&&(a=z.safeDescriptors);var o=r.value;return _t(o)||(o=nr(o)),i&&((o=o.bind(e.v??e.h)).isMobXFlow=!0),{value:o,configurable:!a||e.p,enumerable:!1,writable:!a}}function ve(e,t){return{i:e,u:t,o:ye,s:be,t:xe}}function ye(e,t,n){return this.s(e,t,n,!1)===null?0:1}function be(e,t,n,r){return e.m(t,ee({},this.u,{get:n.get,set:n.set}),r)}function xe(e,t){var n=this,r=t.name;return(0,t.addInitializer)((function(){var t=Bt(this)[I],i=ee({},n.u,{get:e,context:this});i.name||=`ObservableObject.`+r.toString(),t.j.set(r,new Fn(i))})),function(){return this[I].O(r)}}function Se(e,t){return{i:e,u:t,o:Ce,s:we,t:Te}}function Ce(e,t,n){return this.s(e,t,n,!1)===null?0:1}function we(e,t,n,r){return e.g(t,n.value,this.u?.enhancer??se,r)}function Te(e,t){function n(e,t){var n=Bt(e)[I],i=new Nn(t,r.u?.enhancer??se,`ObservableObject.`+a.toString(),!1);n.j.set(a,i),o.add(e)}var r=this,i=t.kind,a=t.name,o=new WeakSet;if(i==`accessor`)return{get:function(){return o.has(this)||n(this,e.get.call(this)),this[I].O(a)},set:function(e){return o.has(this)||n(this,e),this[I].S(a,e)},init:function(e){return o.has(this)||n(this,e),e}}}function Ee(e){return{i:`true`,u:e,o:De,s:Oe,t:ke}}function De(e,t,n,r){var i,a,o;if(n.get)return On.o(e,t,n,r);if(n.set){var s=st(n.set)?n.set:Me(t.toString(),n.set);return r===e.h?e.l(t,{configurable:!z.safeDescriptors||e.p,set:s})===null?0:2:(rn(r,t,{configurable:!0,set:s}),2)}if(r!==e.h&&typeof n.value==`function`)return l(n.value)?((o=this.u)!=null&&o.autoBind?nr.bound:nr).o(e,t,n,r):((a=this.u)!=null&&a.autoBind?Xn.bound:Xn).o(e,t,n,r);var c=!1===this.u?.deep?Tn.ref:Tn;return typeof n.value==`function`&&(i=this.u)!=null&&i.autoBind&&(n.value=n.value.bind(e.v??e.h)),c.o(e,t,n,r)}function Oe(e,t,n,r){var i;return n.get?On.s(e,t,n,r):n.set?e.l(t,{configurable:!z.safeDescriptors||e.p,set:Me(t.toString(),n.set)},r):(typeof n.value==`function`&&(i=this.u)!=null&&i.autoBind&&(n.value=n.value.bind(e.v??e.h)),(!1===this.u?.deep?Tn.ref:Tn).s(e,t,n,r))}function ke(){t(`'`+this.i+`' cannot be used as a decorator`)}function Ae(e){return e||yn}function k(e){return!0===e.deep?se:!1===e.deep?ce:(t=e.defaultDecorator)&&(n=(r=t.u)?.enhancer)!=null?n:se;var t,n,r}function je(e,t,n){return oe(t)?bn.t(e,t):o(t)?void ae(e,t,bn):bt(e)?e:c(e)?Tn.object(e,t,n):Array.isArray(e)?Tn.array(e,t):p(e)?Tn.map(e,t):m(e)?Tn.set(e,t):typeof e==`object`&&e?e:Tn.box(e,t)}function Me(e,t,n,r){function i(){return Ne(0,n,t,r||this,arguments)}return n===void 0&&(n=!1),i.isMobxAction=!0,i.toString=function(){return t.toString()},jn&&(Mn.value=e,rn(i,`name`,Mn)),i}function Ne(e,t,n,r,i){var a=Pe(0,t);try{return n.apply(r,i)}catch(e){throw a._=e,e}finally{Fe(a)}}function Pe(e,t){var n=z.trackingDerivation,r=!t||!n;Qe();var i=z.allowStateChanges;r&&(We(),i=Le(!0));var a={A:r,k:n,M:i,V:Ke(!0),R:!1,N:0,T:An++,C:kn};return kn=a.T,a}function Fe(e){kn!==e.T&&t(30),kn=e.C,e._!==void 0&&(z.suppressReactionErrors=!0),Re(e.M),qe(e.V),$e(),e.A&&Ge(e.k),z.suppressReactionErrors=!1}function Ie(e,t){var n=Le(e);try{return t()}finally{Re(n)}}function Le(e){var t=z.allowStateChanges;return z.allowStateChanges=e,t}function Re(e){z.allowStateChanges=e}function ze(e){return e instanceof Rn}function Be(e){switch(e.I){case R.L:return!1;case R.P:case R.K:return!0;case R.B:for(var t=Ke(!0),n=We(),r=e.D,i=r.length,a=0;a<i;a++){var o=r[a];if(Ln(o)){if(z.disableErrorBoundaries)o.get();else try{o.get()}catch{return Ge(n),qe(t),!0}if(e.I===R.K)return Ge(n),qe(t),!0}}return Je(e),Ge(n),qe(t),!1}}function Ve(e,t,n){var r=Ke(!0);Je(e),e.W=Array(e.q===0?100:e.D.length),e.G=0,e.q=++z.runId;var i,a=z.trackingDerivation;if(z.trackingDerivation=e,z.inBatch++,!0===z.disableErrorBoundaries)i=t.call(n);else try{i=t.call(n)}catch(e){i=new Rn(e)}return z.inBatch--,z.trackingDerivation=a,function(e){for(var t=e.D,n=e.D=e.W,r=R.L,i=0,a=e.G,o=0;o<a;o++){var s=n[o];s.diffValue===0&&(s.diffValue=1,i!==o&&(n[i]=s),i++),s.I>r&&(r=s.I)}for(n.length=i,e.W=null,a=t.length;a--;){var c=t[a];c.diffValue===0&&Xe(c,e),c.diffValue=0}for(;i--;){var l=n[i];l.diffValue===1&&(l.diffValue=0,Ye(l,e))}r!==R.L&&(e.I=r,e.H())}(e),qe(r),i}function He(e){var t=e.D;e.D=[];for(var n=t.length;n--;)Xe(t[n],e);e.I=R.P}function Ue(e){var t=We();try{return e()}finally{Ge(t)}}function We(){var e=z.trackingDerivation;return z.trackingDerivation=null,e}function Ge(e){z.trackingDerivation=e}function Ke(e){var t=z.allowStateReads;return z.allowStateReads=e,t}function qe(e){z.allowStateReads=e}function Je(e){if(e.I!==R.L){e.I=R.L;for(var t=e.D,n=t.length;n--;)t[n].U=R.L}}function Ye(e,t){e.F.add(t),e.U>t.I&&(e.U=t.I)}function Xe(e,t){e.F.delete(t),e.F.size===0&&Ze(e)}function Ze(e){!1===e.isPendingUnobservation&&(e.isPendingUnobservation=!0,z.pendingUnobservations.push(e))}function Qe(){z.inBatch++}function $e(){if(--z.inBatch==0){nt();for(var e=z.pendingUnobservations,t=0;t<e.length;t++){var n=e[t];n.isPendingUnobservation=!1,n.F.size===0&&(n.isBeingObserved&&(n.isBeingObserved=!1,n.onBUO()),n instanceof Fn&&n.X())}z.pendingUnobservations=[]}}function et(e){var t=z.trackingDerivation;return t===null?(e.F.size===0&&z.inBatch>0&&Ze(e),!1):(t.q!==e.$&&(e.$=t.q,t.W[t.G++]=e,!e.isBeingObserved&&z.trackingContext&&(e.isBeingObserved=!0,e.onBO())),e.isBeingObserved)}function tt(e){e.U!==R.K&&(e.U=R.K,e.F.forEach((function(e){e.I===R.L&&e.H(),e.I=R.K})))}function nt(){z.inBatch>0||z.isRunningReactions||Wn(rt)}function rt(){z.isRunningReactions=!0;for(var e=z.pendingReactions,t=0;e.length>0;){++t==100&&(console.error(`[mobx] cycle in reaction: `+e[0]),e.splice(0));for(var n=e.splice(0),r=0,i=n.length;r<i;r++)n[r].J()}z.isRunningReactions=!1}function it(){return console.warn(`[mobx.spy] Is a no-op in production builds`),function(){}}function at(e){return function(t,n){return a(t)?Me(t.name||`<unnamed action>`,t,e):a(n)?Me(t,n,e):oe(n)?(e?qn:B).t(t,n):o(n)?ae(t,n,e?qn:B):o(t)?E(le(e?`autoAction`:`action`,{name:t,autoAction:e})):void 0}}function ot(e){return Ne(0,!1,e,this,void 0)}function st(e){return a(e)&&!0===e.isMobxAction}function ct(e,t){function n(){e(i)}var r;t===void 0&&(t=F);var i,a=t?.name??`Autorun`;if(t.scheduler||t.delay){var o=lt(t),s=!1;i=new Un(a,(function(){s||(s=!0,o((function(){s=!1,i.isDisposed||i.track(n)})))}),t.onError,t.requiresObservable)}else i=new Un(a,(function(){this.track(n)}),t.onError,t.requiresObservable);return(r=t)!=null&&(r=r.signal)!=null&&r.aborted||i.Y(),i.Z(t?.signal)}function lt(e){return e.scheduler?e.scheduler:e.delay?function(t){return setTimeout(t,e.delay)}:Zn}function ut(e,t,n){return ft(`onBO`,e,t,n)}function dt(e,t,n){return ft(`onBUO`,e,t,n)}function ft(e,t,n,r){var i=typeof r==`function`?Jt(t,n):Jt(t),o=a(r)?r:n,s=e+`L`;return i[s]?i[s].add(o):i[s]=new Set([o]),function(){var e=i[s];e&&(e.delete(o),e.size===0&&delete i[s])}}function pt(e,t,n,r){var i=fn(t);return Zt((function(){var t=Bt(e,r)[I];dn(i).forEach((function(e){t.s(e,i[e],!n||!(e in n)||n[e])}))})),e}function mt(e){var t,n={name:e.tt};return e.D&&e.D.length>0&&(n.dependencies=(t=e.D,Array.from(new Set(t))).map(mt)),n}function ht(e){var t={name:e.tt};return function(e){return e.F&&e.F.size>0}(e)&&(t.observers=Array.from(function(e){return e.F}(e)).map(ht)),t}function gt(e){a(e.cancel)&&e.cancel()}function _t(e){return!0===e?.isMobXFlow}function vt(e,t){return t===void 0?Ln(e):!1===Ht(e)||!e[I].j.has(t)?!1:Ln(Jt(e,t))}function yt(e,t){return!!e&&(t===void 0?Ht(e)||!!e[I]||hn(e)||Gn(e)||Ln(e):!!Ht(e)&&e[I].j.has(t))}function bt(e){return yt(e)}function xt(e){return Ht(e)?e[I].nt():hr(e)||vr(e)?Array.from(e.keys()):Lt(e)?e.map((function(e,t){return t})):void t(5)}function St(e,n){return Ht(e)?e[I].it(n):hr(e)||vr(e)?e.has(n):Lt(e)?n>=0&&n<e.length:void t(10)}function Ct(e){if(Ht(e))return e[I].rt();t(38)}function wt(e,t,n){return e.set(t,n),n}function Tt(e,t){t===void 0&&(t=void 0),Qe();try{return e.apply(t)}finally{$e()}}function Et(e,t,n){var r;if(typeof n.timeout==`number`){var i=Error(`WHEN_TIMEOUT`);r=setTimeout((function(){if(!o[I].isDisposed){if(o(),!n.onError)throw i;n.onError(i)}}),n.timeout)}n.name=`When`;var a=Me(`When-effect`,t),o=ct((function(t){Ie(!1,e)&&(t.dispose(),r&&clearTimeout(r),a())}),n);return o}function Dt(e,t){var n,r,i;if(t!=null&&(n=t.signal)!=null&&n.aborted)return Object.assign(Promise.reject(Error(`WHEN_ABORTED`)),{cancel:function(){return null}});var a=new Promise((function(n,a){var o,s=Et(e,n,ee({},t,{onError:a}));r=function(){s(),a(Error(`WHEN_CANCELLED`))},i=function(){s(),a(Error(`WHEN_ABORTED`))},t==null||(o=t.signal)==null||o.addEventListener==null||o.addEventListener(`abort`,i)})).finally((function(){var e;return t==null||(e=t.signal)==null||e.removeEventListener==null?void 0:e.removeEventListener(`abort`,i)}));return a.cancel=r,a}function Ot(e){return e[I]}function kt(e){return e.et!==void 0&&e.et.length>0}function At(e,t){var n=e.et||=[];return n.push(t),i((function(){var e=n.indexOf(t);e!==-1&&n.splice(e,1)}))}function jt(e,n){var r=We();try{for(var i=[].concat(e.et||[]),a=0,o=i.length;a<o&&((n=i[a](n))&&!n.type&&t(14),n);a++);return n}finally{Ge(r)}}function Mt(e){return e.ut!==void 0&&e.ut.length>0}function Nt(e,t){var n=e.ut||=[];return n.push(t),i((function(){var e=n.indexOf(t);e!==-1&&n.splice(e,1)}))}function Pt(e,t){var n=We(),r=e.ut;if(r){for(var i=0,a=(r=r.slice()).length;i<a;i++)r[i](t);Ge(n)}}function Ft(e,t,n,i){return n===void 0&&(n=`ObservableArray`),i===void 0&&(i=!1),r(),Zt((function(){var r=new sr(n,t,i,!1);d(r.j,I,r);var a=new Proxy(r.j,or);return r.v=a,e&&e.length&&r.ot(0,0,e),a}))}function A(e,t){typeof Array.prototype[e]==`function`&&(cr[e]=t(e))}function It(e){return function(){var t=this[I];t.st.reportObserved();var n=t.ft(t.j);return n[e].apply(n,arguments)}}function j(e){return function(t,n){var r=this,i=this[I];return i.st.reportObserved(),i.ft(i.j)[e]((function(e,i){return t.call(n,e,i,r)}))}}function M(e){return function(){var t=this,n=this[I];n.st.reportObserved();var r=n.ft(n.j),i=arguments[0];return arguments[0]=function(e,n,r){return i(e,n,r,t)},r[e].apply(r,arguments)}}function Lt(e){return s(e)&&dr(e[I])}function Rt(e){return e[Symbol.toStringTag]=`MapIterator`,N(e)}function zt(e){return e[Symbol.toStringTag]=`SetIterator`,N(e)}function Bt(e,t){if(g(e,I))return e;var n=t?.name??`ObservableObject`;return u(e,I,new br(e,new Map,String(n),function(e){return e?e.defaultDecorator??Ee(e):void 0}(t))),e}function Vt(e){return yr[e]||(yr[e]={get:function(){return this[I].O(e)},set:function(t){return this[I].S(e,t)}})}function Ht(e){return!!s(e)&&xr(e[I])}function Ut(e,t,n){var r;(r=e.h[pn])==null||delete r[n]}function Wt(e){return{enumerable:!1,configurable:!0,get:function(){return this[I].ct(e)},set:function(t){this[I].ht(e,t)}}}function Gt(e){rn(Er.prototype,``+e,Wt(e))}function Kt(e){if(e>wr){for(var t=wr;t<e+100;t++)Gt(t);wr=e}}function qt(e,t,n){return new Er(e,t,n)}function Jt(e,n){if(typeof e==`object`&&e){if(Lt(e))return n!==void 0&&t(23),e[I].st;if(vr(e))return e.st;if(hr(e)){if(n===void 0)return e.lt;var r=e.vt.get(n)||e.dt.get(n);return r||t(25,n,Xt(e)),r}if(Ht(e)){if(!n)return t(26);var i=e[I].j.get(n);return i||t(27,n,Xt(e)),i}if(hn(e)||Ln(e)||Gn(e))return e}else if(a(e)&&Gn(e[I]))return e[I];t(28)}function Yt(e,n){return e||t(29),n===void 0?hn(e)||Ln(e)||Gn(e)||hr(e)||vr(e)?e:e[I]?e[I]:void t(24,e):Yt(Jt(e,n))}function Xt(e,t){var n;if(t!==void 0)n=Jt(e,t);else{if(st(e))return e.name;n=Ht(e)||hr(e)||vr(e)?Yt(e):Jt(e)}return n.tt}function Zt(e){var t=We(),n=Le(!0);Qe();try{return e()}finally{$e(),Re(n),Ge(t)}}function Qt(e,t,n){return n===void 0&&(n=-1),function e(t,n,r,i,o){if(t===n)return t!==0||1/t==1/n;if(t==null||n==null)return!1;if(t!=t)return n!=n;var s=typeof t;if(s!==`function`&&s!==`object`&&typeof n!=`object`)return!1;var c=Dr.call(t);if(c!==Dr.call(n))return!1;switch(c){case`[object RegExp]`:case`[object String]`:return``+t==``+n;case`[object Number]`:return+t==+t?+t==0?1/t==1/n:+t==+n:+n!=+n;case`[object Date]`:case`[object Boolean]`:return+t==+n;case`[object Symbol]`:return typeof Symbol<`u`&&Symbol.valueOf.call(t)===Symbol.valueOf.call(n);case`[object Map]`:case`[object Set]`:r>=0&&r++}t=$t(t),n=$t(n);var l=c===`[object Array]`;if(!l){if(typeof t!=`object`||typeof n!=`object`)return!1;var u=t.constructor,d=n.constructor;if(u!==d&&!(a(u)&&u instanceof u&&a(d)&&d instanceof d)&&`constructor`in t&&`constructor`in n)return!1}if(r===0)return!1;r<0&&(r=-1),o||=[];for(var f=(i||=[]).length;f--;)if(i[f]===t)return o[f]===n;if(i.push(t),o.push(n),l){if((f=t.length)!==n.length)return!1;for(;f--;)if(!e(t[f],n[f],r-1,i,o))return!1}else{var p=Object.keys(t),m=p.length;if(Object.keys(n).length!==m)return!1;for(var h=0;h<m;h++){var _=p[h];if(!g(n,_)||!e(t[_],n[_],r-1,i,o))return!1}}return i.pop(),o.pop(),!0}(e,t,n)}function $t(e){return Lt(e)?e.slice():p(e)||hr(e)||m(e)||vr(e)?Array.from(e.entries()):e}function N(e){return e[Symbol.iterator]=en,Object.assign(Object.create(Or),e)}function en(){return this}Object.defineProperty(e,`__esModule`,{value:!0});var tn={},P=Object.assign,nn=Object.getOwnPropertyDescriptor,rn=Object.defineProperty,an=Object.prototype,on=[];Object.freeze(on);var F={};Object.freeze(F);var sn=typeof Proxy<`u`,cn=Object.toString(),ln=function(){},un=Object.getOwnPropertySymbols!==void 0,dn=typeof Reflect<`u`&&Reflect.ownKeys?Reflect.ownKeys:un?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames,fn=Object.getOwnPropertyDescriptors||function(e){var t={};return dn(e).forEach((function(n){t[n]=nn(e,n)})),t},pn=Symbol(`mobx-stored-annotations`),I=Symbol(`mobx administration`),mn=function(){function e(e){e===void 0&&(e=`Atom`),this.tt=void 0,this.bt=0,this.F=new Set,this.$=0,this.U=R.P,this.onBOL=void 0,this.onBUOL=void 0,this.tt=e}var t=e.prototype;return t.onBO=function(){this.onBOL&&this.onBOL.forEach((function(e){return e()}))},t.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(e){return e()}))},t.reportObserved=function(){return et(this)},t.reportChanged=function(){Qe(),tt(this),$e()},t.toString=function(){return this.tt},S(e,[{key:`isBeingObserved`,get:function(){return _(this.bt,e.pt)},set:function(t){this.bt=v(this.bt,e.pt,t)}},{key:`isPendingUnobservation`,get:function(){return _(this.bt,e.yt)},set:function(t){this.bt=v(this.bt,e.yt,t)}},{key:`diffValue`,get:function(){return+!!_(this.bt,e.wt)},set:function(t){this.bt=v(this.bt,e.wt,t===1)}}])}();mn.pt=1,mn.yt=2,mn.wt=4;var hn=f(`Atom`,mn),gn={identity:function(e,t){return e===t},structural:function(e,t){return Qt(e,t)},default:function(e,t){return Object.is?Object.is(e,t):e===t?e!==0||1/e==1/t:e!=e&&t!=t},shallow:function(e,t){return Qt(e,t,1)}},_n=E({i:`override`,o:function(){return 0},s:function(){t(`'`+this.i+`' can only be used with 'makeObservable'`)},t:function(){console.warn(`'`+this.i+`' cannot be used with decorators - this is a no-op`)}}),vn=Ee(),yn={deep:!0,name:void 0,defaultDecorator:void 0,proxy:!0};Object.freeze(yn);var bn=Se(`observable`),xn=Se(`observable.ref`,{enhancer:ce}),L=Se(`observable.shallow`,{enhancer:function(e,t,n){return e==null||Ht(e)||Lt(e)||hr(e)||vr(e)?e:Array.isArray(e)?Tn.array(e,{name:n,deep:!1}):c(e)?Tn.object(e,void 0,{name:n,deep:!1}):p(e)?Tn.map(e,{name:n,deep:!1}):m(e)?Tn.set(e,{name:n,deep:!1}):void 0}}),Sn=Se(`observable.struct`,{enhancer:function(e,t){return Qt(e,t)?t:e}}),Cn=E(bn);P(je,Cn);var wn,Tn=P(je,{box:function(e,t){var n=Ae(t);return new Nn(e,k(n),n.name,!0,n.equals)},array:function(e,t){var n=Ae(t);return(!1===z.useProxies||!1===n.proxy?qt:Ft)(e,k(n),n.name)},map:function(e,t){var n=Ae(t);return new mr(e,k(n),n.name)},set:function(e,t){var n=Ae(t);return new _r(e,k(n),n.name)},object:function(e,t,n){return Zt((function(){return pt(!1===z.useProxies||!1===n?.proxy?Bt({},n):function(e,t){var n;return r(),(n=(e=Bt(e,t))[I]).v??(n.v=new Proxy(e,rr))}({},n),e,t)}))},ref:E(xn),shallow:E(L),deep:Cn,struct:E(Sn)}),En=ve(`computed`),Dn=ve(`computed.struct`,{equals:gn.structural}),On=function(e,t){if(oe(t))return En.t(e,t);if(o(t))return ae(e,t,En);if(c(e))return E(ve(`computed`,e));var n=c(t)?t:{};return n.get=e,n.name||=e.name||``,new Fn(n)};Object.assign(On,En),On.struct=E(Dn);var kn=0,An=1,jn=(wn=nn((function(){}),`name`)?.configurable)!=null&&wn,Mn={value:`action`,configurable:!0,writable:!1,enumerable:!1},Nn=function(e){function t(t,n,r,i,a){var o;return r===void 0&&(r=`ObservableValue`),a===void 0&&(a=gn.default),(o=e.call(this,r)||this).enhancer=void 0,o.tt=void 0,o.equals=void 0,o.jt=!1,o.et=void 0,o.ut=void 0,o.Ot=void 0,o.dehancer=void 0,o.enhancer=n,o.tt=r,o.equals=a,o.Ot=n(t,void 0,r),o}ne(t,e);var n=t.prototype;return n.dehanceValue=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.set=function(e){(e=this.xt(e))!==z.UNCHANGED&&this.gt(e)},n.xt=function(e){if(kt(this)){var t=jt(this,{object:this,type:ar,newValue:e});if(!t)return z.UNCHANGED;e=t.newValue}return e=this.enhancer(e,this.Ot,this.tt),this.equals(this.Ot,e)?z.UNCHANGED:e},n.gt=function(e){var t=this.Ot;this.Ot=e,this.reportChanged(),Mt(this)&&Pt(this,{type:ar,object:this,newValue:e,oldValue:t})},n.get=function(){return this.reportObserved(),this.dehanceValue(this.Ot)},n.St=function(e){return At(this,e)},n._t=function(e,t){return t&&e({observableKind:`value`,debugObjectName:this.tt,object:this,type:ar,newValue:this.Ot,oldValue:void 0}),Nt(this,e)},n.raw=function(){return this.Ot},n.toJSON=function(){return this.get()},n.toString=function(){return this.tt+`[`+this.Ot+`]`},n.valueOf=function(){return h(this.get())},n[Symbol.toPrimitive]=function(){return this.valueOf()},t}(mn),Pn=f(`ObservableValue`,Nn),Fn=function(){function e(e){this.I=R.P,this.D=[],this.W=null,this.F=new Set,this.q=0,this.$=0,this.U=R.L,this.G=0,this.Ot=new Rn(null),this.tt=void 0,this.At=void 0,this.bt=0,this.derivation=void 0,this.kt=void 0,this.Mt=In.NONE,this.Et=void 0,this.Vt=void 0,this.Rt=void 0,this.Nt=void 0,this.onBOL=void 0,this.onBUOL=void 0,e.get||t(31),this.derivation=e.get,this.tt=e.name||`ComputedValue`,e.set&&(this.kt=Me(`ComputedValue-setter`,e.set)),this.Vt=e.equals||(e.compareStructural||e.struct?gn.structural:gn.default),this.Et=e.context,this.Rt=e.requiresReaction,this.Nt=!!e.keepAlive}var n=e.prototype;return n.H=function(){(function(e){e.U===R.L&&(e.U=R.B,e.F.forEach((function(e){e.I===R.L&&(e.I=R.B,e.H())})))})(this)},n.onBO=function(){this.onBOL&&this.onBOL.forEach((function(e){return e()}))},n.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(e){return e()}))},n.get=function(){if(this.isComputing&&t(32,this.tt,this.derivation),z.inBatch!==0||this.F.size!==0||this.Nt){if(et(this),Be(this)){var e=z.trackingContext;this.Nt&&!e&&(z.trackingContext=this),this.trackAndCompute()&&function(e){e.U!==R.K&&(e.U=R.K,e.F.forEach((function(t){t.I===R.B?t.I=R.K:t.I===R.L&&(e.U=R.L)})))}(this),z.trackingContext=e}}else Be(this)&&(this.Tt(),Qe(),this.Ot=this.Ct(!1),$e());var n=this.Ot;if(ze(n))throw n.cause;return n},n.set=function(e){if(this.kt){this.isRunningSetter&&t(33,this.tt),this.isRunningSetter=!0;try{this.kt.call(this.Et,e)}finally{this.isRunningSetter=!1}}else t(34,this.tt)},n.trackAndCompute=function(){var e=this.Ot,t=this.I===R.P,n=this.Ct(!0),r=t||ze(e)||ze(n)||!this.Vt(e,n);return r&&(this.Ot=n),r},n.Ct=function(e){this.isComputing=!0;var t,n=Le(!1);if(e)t=Ve(this,this.derivation,this.Et);else if(!0===z.disableErrorBoundaries)t=this.derivation.call(this.Et);else try{t=this.derivation.call(this.Et)}catch(e){t=new Rn(e)}return Re(n),this.isComputing=!1,t},n.X=function(){this.Nt||(He(this),this.Ot=void 0)},n._t=function(e,t){var n=this,r=!0,i=void 0;return ct((function(){var a=n.get();if(!r||t){var o=We();e({observableKind:`computed`,debugObjectName:n.tt,type:ar,object:n,newValue:a,oldValue:i}),Ge(o)}r=!1,i=a}))},n.Tt=function(){},n.toString=function(){return this.tt+`[`+this.derivation.toString()+`]`},n.valueOf=function(){return h(this.get())},n[Symbol.toPrimitive]=function(){return this.valueOf()},S(e,[{key:`isComputing`,get:function(){return _(this.bt,e.It)},set:function(t){this.bt=v(this.bt,e.It,t)}},{key:`isRunningSetter`,get:function(){return _(this.bt,e.Lt)},set:function(t){this.bt=v(this.bt,e.Lt,t)}},{key:`isBeingObserved`,get:function(){return _(this.bt,e.pt)},set:function(t){this.bt=v(this.bt,e.pt,t)}},{key:`isPendingUnobservation`,get:function(){return _(this.bt,e.yt)},set:function(t){this.bt=v(this.bt,e.yt,t)}},{key:`diffValue`,get:function(){return+!!_(this.bt,e.wt)},set:function(t){this.bt=v(this.bt,e.wt,t===1)}}])}();Fn.It=1,Fn.Lt=2,Fn.pt=4,Fn.yt=8,Fn.wt=16;var R,In,Ln=f(`ComputedValue`,Fn);(function(e){e[e.P=-1]=`NOT_TRACKING_`,e[e.L=0]=`UP_TO_DATE_`,e[e.B=1]=`POSSIBLY_STALE_`,e[e.K=2]=`STALE_`})(R||={}),function(e){e[e.NONE=0]=`NONE`,e[e.LOG=1]=`LOG`,e[e.BREAK=2]=`BREAK`}(In||={});var Rn=function(e){this.cause=void 0,this.cause=e},zn=[`mobxGuid`,`spyListeners`,`enforceActions`,`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`allowStateReads`,`disableErrorBoundaries`,`runId`,`UNCHANGED`,`useProxies`],Bn=function(){this.version=6,this.UNCHANGED={},this.trackingDerivation=null,this.trackingContext=null,this.runId=0,this.mobxGuid=0,this.inBatch=0,this.pendingUnobservations=[],this.pendingReactions=[],this.isRunningReactions=!1,this.allowStateChanges=!1,this.allowStateReads=!0,this.enforceActions=!0,this.spyListeners=[],this.globalReactionErrorHandlers=[],this.computedRequiresReaction=!1,this.reactionRequiresObservable=!1,this.observableRequiresReaction=!1,this.disableErrorBoundaries=!1,this.suppressReactionErrors=!1,this.useProxies=!0,this.verifyProxies=!1,this.safeDescriptors=!0},Vn=!0,Hn=!1,z=function(){var e=n();return e.__mobxInstanceCount>0&&!e.__mobxGlobals&&(Vn=!1),e.__mobxGlobals&&e.__mobxGlobals.version!==new Bn().version&&(Vn=!1),Vn?e.__mobxGlobals?(e.__mobxInstanceCount+=1,e.__mobxGlobals.UNCHANGED||(e.__mobxGlobals.UNCHANGED={}),e.__mobxGlobals):(e.__mobxInstanceCount=1,e.__mobxGlobals=new Bn):(setTimeout((function(){Hn||t(35)}),1),new Bn)}(),Un=function(){function e(e,t,n,r){e===void 0&&(e=`Reaction`),this.tt=void 0,this.Pt=void 0,this.Kt=void 0,this.Bt=void 0,this.D=[],this.W=[],this.I=R.P,this.q=0,this.G=0,this.bt=0,this.Mt=In.NONE,this.tt=e,this.Pt=t,this.Kt=n,this.Bt=r}var t=e.prototype;return t.H=function(){this.Y()},t.Y=function(){this.isScheduled||(this.isScheduled=!0,z.pendingReactions.push(this),nt())},t.J=function(){if(!this.isDisposed){Qe(),this.isScheduled=!1;var e=z.trackingContext;if(z.trackingContext=this,Be(this)){this.isTrackPending=!0;try{this.Pt()}catch(e){this.Dt(e)}}z.trackingContext=e,$e()}},t.track=function(e){if(!this.isDisposed){Qe(),this.isRunning=!0;var t=z.trackingContext;z.trackingContext=this;var n=Ve(this,e,void 0);z.trackingContext=t,this.isRunning=!1,this.isTrackPending=!1,this.isDisposed&&He(this),ze(n)&&this.Dt(n.cause),$e()}},t.Dt=function(e){var t=this;if(this.Kt)this.Kt(e,this);else{if(z.disableErrorBoundaries)throw e;z.suppressReactionErrors||console.error(`[mobx] uncaught error in '`+this+`'`,e),z.globalReactionErrorHandlers.forEach((function(n){return n(e,t)}))}},t.dispose=function(){this.isDisposed||(this.isDisposed=!0,this.isRunning||(Qe(),He(this),$e()))},t.Z=function(e){var t=this,n=function n(){t.dispose(),e==null||e.removeEventListener==null||e.removeEventListener(`abort`,n)};return e==null||e.addEventListener==null||e.addEventListener(`abort`,n),n[I]=this,`dispose`in Symbol&&typeof Symbol.dispose==`symbol`&&(n[Symbol.dispose]=n),n},t.toString=function(){return`Reaction[`+this.tt+`]`},t.trace=function(){},S(e,[{key:`isDisposed`,get:function(){return _(this.bt,e.Wt)},set:function(t){this.bt=v(this.bt,e.Wt,t)}},{key:`isScheduled`,get:function(){return _(this.bt,e.qt)},set:function(t){this.bt=v(this.bt,e.qt,t)}},{key:`isTrackPending`,get:function(){return _(this.bt,e.Gt)},set:function(t){this.bt=v(this.bt,e.Gt,t)}},{key:`isRunning`,get:function(){return _(this.bt,e.Ht)},set:function(t){this.bt=v(this.bt,e.Ht,t)}},{key:`diffValue`,get:function(){return+!!_(this.bt,e.wt)},set:function(t){this.bt=v(this.bt,e.wt,t===1)}}])}();Un.Wt=1,Un.qt=2,Un.Gt=4,Un.Ht=8,Un.wt=16;var Wn=function(e){return e()},Gn=f(`Reaction`,Un),B=le(`action`),Kn=le(`action.bound`,{bound:!0}),qn=le(`autoAction`,{autoAction:!0}),Jn=le(`autoAction.bound`,{autoAction:!0,bound:!0}),Yn=at(!1);Object.assign(Yn,B);var Xn=at(!0);Object.assign(Xn,qn),Yn.bound=E(Kn),Xn.bound=E(Jn);var Zn=function(e){return e()},Qn=0,$n=function(e){function t(){var n;return n=e.call(this,`FLOW_CANCELLED`)||this,Object.setPrototypeOf(n,(this instanceof t?this.constructor:void 0).prototype),n.name=`FlowCancellationError`,n}return ne(t,e),t.prototype.toString=function(){return`Error: `+this.message},t}(T(Error)),er=me(`flow`),tr=me(`flow.bound`,{bound:!0}),nr=Object.assign((function(e,t){if(oe(t))return er.t(e,t);if(o(t))return ae(e,t,er);var n=e,r=n.name||`<unnamed flow>`,i=function(){var e,t=this,i=arguments,o=++Qn,s=Yn(r+` - runid: `+o+` - init`,n).apply(t,i),c=void 0,l=new Promise((function(t,n){function i(e){var t;c=void 0;try{t=Yn(r+` - runid: `+o+` - yield `+ d++,s.next).call(s,e)}catch(e){return n(e)}u(t)}function l(e){var t;c=void 0;try{t=Yn(r+` - runid: `+o+` - yield `+ d++,s.throw).call(s,e)}catch(e){return n(e)}u(t)}function u(e){if(!a(e?.then))return e.done?t(e.value):(c=Promise.resolve(e.value)).then(i,l);e.then(u,n)}var d=0;e=n,i(void 0)}));return l.cancel=Yn(r+` - runid: `+o+` - cancel`,(function(){try{c&&gt(c);var t=s.return(void 0),n=Promise.resolve(t.value);n.then(ln,ln),gt(n),e(new $n)}catch(t){e(t)}})),l};return i.isMobXFlow=!0,i}),er);nr.bound=E(tr);var rr={has:function(e,t){return Ot(e).it(t)},get:function(e,t){return Ot(e).ct(t)},set:function(e,t,n){var r;return!!o(t)&&((r=Ot(e).ht(t,n,!0))==null||r)},deleteProperty:function(e,t){var n;return!!o(t)&&((n=Ot(e).Ut(t,!0))==null||n)},defineProperty:function(e,t,n){var r;return(r=Ot(e).l(t,n))==null||r},ownKeys:function(e){return Ot(e).rt()},preventExtensions:function(){t(13)}},ir=Symbol(`mobx-keys`),ar=`update`,or={get:function(e,t){var n=e[I];return t===I?n:t===`length`?n.Ft():typeof t!=`string`||isNaN(t)?g(cr,t)?cr[t]:e[t]:n.ct(parseInt(t))},set:function(e,t,n){var r=e[I];return t===`length`&&r.Xt(n),typeof t==`symbol`||isNaN(t)?e[t]=n:r.ht(parseInt(t),n),!0},preventExtensions:function(){t(15)}},sr=function(){function e(e,t,n,r){e===void 0&&(e=`ObservableArray`),this.zt=void 0,this.$t=void 0,this.st=void 0,this.j=[],this.et=void 0,this.ut=void 0,this.Jt=void 0,this.dehancer=void 0,this.v=void 0,this.Yt=0,this.zt=n,this.$t=r,this.st=new mn(e),this.Jt=function(e,n){return t(e,n,`ObservableArray[..]`)}}var n=e.prototype;return n.Qt=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.ft=function(e){return this.dehancer!==void 0&&e.length>0?e.map(this.dehancer):e},n.St=function(e){return At(this,e)},n._t=function(e,t){return t===void 0&&(t=!1),t&&e({observableKind:`array`,object:this.v,debugObjectName:this.st.tt,type:`splice`,index:0,added:this.j.slice(),addedCount:this.j.length,removed:[],removedCount:0}),Nt(this,e)},n.Ft=function(){return this.st.reportObserved(),this.j.length},n.Xt=function(e){(typeof e!=`number`||isNaN(e)||e<0)&&t(`Out of range: `+e);var n=this.j.length;if(e!==n)if(e>n){for(var r=Array(e-n),i=0;i<e-n;i++)r[i]=void 0;this.ot(n,0,r)}else this.ot(e,n-e)},n.Zt=function(e,n){e!==this.Yt&&t(16),this.Yt+=n,this.$t&&n>0&&Kt(e+n+1)},n.ot=function(e,t,n){var r=this,i=this.j.length;if(e===void 0?e=0:e>i?e=i:e<0&&(e=Math.max(0,i+e)),t=arguments.length===1?i-e:t==null?0:Math.max(0,Math.min(t,i-e)),n===void 0&&(n=on),kt(this)){var a=jt(this,{object:this.v,type:`splice`,index:e,removedCount:t,added:n});if(!a)return on;t=a.removedCount,n=a.added}if(n=n.length===0?n:n.map((function(e){return r.Jt(e,void 0)})),this.$t){var o=n.length-t;this.Zt(i,o)}var s=this.tn(e,t,n);return t===0&&n.length===0||this.nn(e,n,s),this.ft(s)},n.tn=function(e,t,n){var r;if(n.length<1e4)return(r=this.j).splice.apply(r,[e,t].concat(n));var i=this.j.slice(e,e+t),a=this.j.slice(e+t);this.j.length+=n.length-t;for(var o=0;o<n.length;o++)this.j[e+o]=n[o];for(var s=0;s<a.length;s++)this.j[e+n.length+s]=a[s];return i},n.in=function(e,t,n){var r=!this.zt&&!1,i=Mt(this),a=i||r?{observableKind:`array`,object:this.v,type:ar,debugObjectName:this.st.tt,index:e,newValue:t,oldValue:n}:null;this.st.reportChanged(),i&&Pt(this,a)},n.nn=function(e,t,n){var r=!this.zt&&!1,i=Mt(this),a=i||r?{observableKind:`array`,object:this.v,debugObjectName:this.st.tt,type:`splice`,index:e,removed:n,added:t,removedCount:n.length,addedCount:t.length}:null;this.st.reportChanged(),i&&Pt(this,a)},n.ct=function(e){if(!(this.$t&&e>=this.j.length))return this.st.reportObserved(),this.Qt(this.j[e]);console.warn(`[mobx] Out of bounds read: `+e)},n.ht=function(e,n){var r=this.j;if(this.$t&&e>r.length&&t(17,e,r.length),e<r.length){var i=r[e];if(kt(this)){var a=jt(this,{type:ar,object:this.v,index:e,newValue:n});if(!a)return;n=a.newValue}(n=this.Jt(n,i))!==i&&(r[e]=n,this.in(e,n,i))}else{for(var o=Array(e+1-r.length),s=0;s<o.length-1;s++)o[s]=void 0;o[o.length-1]=n,this.ot(r.length,0,o)}},e}(),cr={clear:function(){return this.splice(0)},replace:function(e){var t=this[I];return t.ot(0,t.j.length,e)},toJSON:function(){return this.slice()},splice:function(e,t){var n=[...arguments].slice(2),r=this[I];switch(arguments.length){case 0:return[];case 1:return r.ot(e);case 2:return r.ot(e,t)}return r.ot(e,t,n)},spliceWithArray:function(e,t,n){return this[I].ot(e,t,n)},push:function(){for(var e=this[I],t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];return e.ot(e.j.length,0,n),e.j.length},pop:function(){return this.splice(Math.max(this[I].j.length-1,0),1)[0]},shift:function(){return this.splice(0,1)[0]},unshift:function(){for(var e=this[I],t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];return e.ot(0,0,n),e.j.length},reverse:function(){return z.trackingDerivation&&t(37,`reverse`),this.replace(this.slice().reverse()),this},sort:function(){z.trackingDerivation&&t(37,`sort`);var e=this.slice();return e.sort.apply(e,arguments),this.replace(e),this},remove:function(e){var t=this[I],n=t.ft(t.j).indexOf(e);return n>-1&&(this.splice(n,1),!0)}};A(`at`,It),A(`concat`,It),A(`flat`,It),A(`includes`,It),A(`indexOf`,It),A(`join`,It),A(`lastIndexOf`,It),A(`slice`,It),A(`toString`,It),A(`toLocaleString`,It),A(`toSorted`,It),A(`toSpliced`,It),A(`with`,It),A(`every`,j),A(`filter`,j),A(`find`,j),A(`findIndex`,j),A(`findLast`,j),A(`findLastIndex`,j),A(`flatMap`,j),A(`forEach`,j),A(`map`,j),A(`some`,j),A(`toReversed`,j),A(`reduce`,M),A(`reduceRight`,M);var lr,ur,dr=f(`ObservableArrayAdministration`,sr),fr={},pr=`add`,mr=function(){function e(e,n,r){var i=this;n===void 0&&(n=se),r===void 0&&(r=`ObservableMap`),this.Jt=void 0,this.tt=void 0,this[I]=fr,this.vt=void 0,this.dt=void 0,this.lt=void 0,this.et=void 0,this.ut=void 0,this.dehancer=void 0,this.Jt=n,this.tt=r,a(Map)||t(18),Zt((function(){i.lt=D(`ObservableMap.keys()`),i.vt=new Map,i.dt=new Map,e&&i.merge(e)}))}var n=e.prototype;return n.it=function(e){return this.vt.has(e)},n.has=function(e){var t=this;if(!z.trackingDerivation)return this.it(e);var n=this.dt.get(e);if(!n){var r=n=new Nn(this.it(e),ce,`ObservableMap.key?`,!1);this.dt.set(e,r),dt(r,(function(){return t.dt.delete(e)}))}return n.get()},n.set=function(e,t){var n=this.it(e);if(kt(this)){var r=jt(this,{type:n?ar:pr,object:this,newValue:t,name:e});if(!r)return this;t=r.newValue}return n?this.rn(e,t):this.en(e,t),this},n.delete=function(e){var t=this;if(kt(this)&&!jt(this,{type:`delete`,object:this,name:e}))return!1;if(this.it(e)){var n=Mt(this),r=n?{observableKind:`map`,debugObjectName:this.tt,type:`delete`,object:this,oldValue:this.vt.get(e).Ot,name:e}:null;return Tt((function(){var n;t.lt.reportChanged(),(n=t.dt.get(e))==null||n.gt(!1),t.vt.get(e).gt(void 0),t.vt.delete(e)})),n&&Pt(this,r),!0}return!1},n.rn=function(e,t){var n=this.vt.get(e);if((t=n.xt(t))!==z.UNCHANGED){var r=Mt(this),i=r?{observableKind:`map`,debugObjectName:this.tt,type:ar,object:this,oldValue:n.Ot,name:e,newValue:t}:null;n.gt(t),r&&Pt(this,i)}},n.en=function(e,t){var n=this;Tt((function(){var r,i=new Nn(t,n.Jt,`ObservableMap.key`,!1);n.vt.set(e,i),t=i.Ot,(r=n.dt.get(e))==null||r.gt(!0),n.lt.reportChanged()}));var r=Mt(this);r&&Pt(this,r?{observableKind:`map`,debugObjectName:this.tt,type:pr,object:this,name:e,newValue:t}:null)},n.get=function(e){return this.has(e)?this.Qt(this.vt.get(e).get()):this.Qt(void 0)},n.Qt=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.keys=function(){return this.lt.reportObserved(),this.vt.keys()},n.values=function(){var e=this,t=this.keys();return Rt({next:function(){var n=t.next(),r=n.done;return{done:r,value:r?void 0:e.get(n.value)}}})},n.entries=function(){var e=this,t=this.keys();return Rt({next:function(){var n=t.next(),r=n.done,i=n.value;return{done:r,value:r?void 0:[i,e.get(i)]}}})},n[Symbol.iterator]=function(){return this.entries()},n.forEach=function(e,t){for(var n,r=C(this);!(n=r()).done;){var i=n.value;e.call(t,i[1],i[0],this)}},n.merge=function(e){var n=this;return hr(e)&&(e=new Map(e)),Tt((function(){var r,i;c(e)?function(e){var t=Object.keys(e);if(!un)return t;var n=Object.getOwnPropertySymbols(e);return n.length?[].concat(t,n.filter((function(t){return an.propertyIsEnumerable.call(e,t)}))):t}(e).forEach((function(t){return n.set(t,e[t])})):Array.isArray(e)?e.forEach((function(e){return n.set(e[0],e[1])})):p(e)?(r=Object.getPrototypeOf(e),i=Object.getPrototypeOf(r),Object.getPrototypeOf(i)!==null&&t(19,e),e.forEach((function(e,t){return n.set(t,e)}))):e!=null&&t(20,e)})),this},n.clear=function(){var e=this;Tt((function(){Ue((function(){for(var t,n=C(e.keys());!(t=n()).done;)e.delete(t.value)}))}))},n.replace=function(e){var n=this;return Tt((function(){for(var r,i=function(e){if(p(e)||hr(e))return e;if(Array.isArray(e))return new Map(e);if(c(e)){var n=new Map;for(var r in e)n.set(r,e[r]);return n}return t(21,e)}(e),a=new Map,o=!1,s=C(n.vt.keys());!(r=s()).done;){var l=r.value;if(!i.has(l))if(n.delete(l))o=!0;else{var u=n.vt.get(l);a.set(l,u)}}for(var d,f=C(i.entries());!(d=f()).done;){var m=d.value,h=m[0],g=m[1],_=n.vt.has(h);if(n.set(h,g),n.vt.has(h)){var v=n.vt.get(h);a.set(h,v),_||(o=!0)}}if(!o)if(n.vt.size!==a.size)n.lt.reportChanged();else for(var y=n.vt.keys(),b=a.keys(),x=y.next(),S=b.next();!x.done;){if(x.value!==S.value){n.lt.reportChanged();break}x=y.next(),S=b.next()}n.vt=a})),this},n.toString=function(){return`[object ObservableMap]`},n.toJSON=function(){return Array.from(this)},n._t=function(e){return Nt(this,e)},n.St=function(e){return At(this,e)},S(e,[{key:`size`,get:function(){return this.lt.reportObserved(),this.vt.size}},{key:Symbol.toStringTag,get:function(){return`Map`}}])}(),hr=f(`ObservableMap`,mr),gr={},_r=function(){function e(e,n,r){var i=this;n===void 0&&(n=se),r===void 0&&(r=`ObservableSet`),this.tt=void 0,this[I]=gr,this.vt=new Set,this.st=void 0,this.ut=void 0,this.et=void 0,this.dehancer=void 0,this.Jt=void 0,this.tt=r,a(Set)||t(22),this.Jt=function(e,t){return n(e,t,r)},Zt((function(){i.st=D(i.tt),e&&i.replace(e)}))}var n=e.prototype;return n.Qt=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.clear=function(){var e=this;Tt((function(){Ue((function(){for(var t,n=C(e.vt.values());!(t=n()).done;)e.delete(t.value)}))}))},n.forEach=function(e,t){for(var n,r=C(this);!(n=r()).done;){var i=n.value;e.call(t,i,i,this)}},n.add=function(e){var t=this;if(kt(this)){var n=jt(this,{type:pr,object:this,newValue:e});if(!n)return this;e=n.newValue}if(!this.has(e)){Tt((function(){t.vt.add(t.Jt(e,void 0)),t.st.reportChanged()}));var r=Mt(this);r&&Pt(this,r?{observableKind:`set`,debugObjectName:this.tt,type:pr,object:this,newValue:e}:null)}return this},n.delete=function(e){var t=this;if(kt(this)&&!jt(this,{type:`delete`,object:this,oldValue:e}))return!1;if(this.has(e)){var n=Mt(this),r=n?{observableKind:`set`,debugObjectName:this.tt,type:`delete`,object:this,oldValue:e}:null;return Tt((function(){t.st.reportChanged(),t.vt.delete(e)})),n&&Pt(this,r),!0}return!1},n.has=function(e){return this.st.reportObserved(),this.vt.has(this.Qt(e))},n.entries=function(){var e=this.values();return zt({next:function(){var t=e.next(),n=t.value,r=t.done;return r?{value:void 0,done:r}:{value:[n,n],done:r}}})},n.keys=function(){return this.values()},n.values=function(){this.st.reportObserved();var e=this,t=this.vt.values();return zt({next:function(){var n=t.next(),r=n.done;return r?{value:void 0,done:r}:{value:e.Qt(n.value),done:r}}})},n.intersection=function(e){return m(e)&&!vr(e)?e.intersection(this):new Set(this).intersection(e)},n.union=function(e){return m(e)&&!vr(e)?e.union(this):new Set(this).union(e)},n.difference=function(e){return new Set(this).difference(e)},n.symmetricDifference=function(e){return m(e)&&!vr(e)?e.symmetricDifference(this):new Set(this).symmetricDifference(e)},n.isSubsetOf=function(e){return new Set(this).isSubsetOf(e)},n.isSupersetOf=function(e){return new Set(this).isSupersetOf(e)},n.isDisjointFrom=function(e){return m(e)&&!vr(e)?e.isDisjointFrom(this):new Set(this).isDisjointFrom(e)},n.replace=function(e){var n=this;return vr(e)&&(e=new Set(e)),Tt((function(){Array.isArray(e)||m(e)?(n.clear(),e.forEach((function(e){return n.add(e)}))):e!=null&&t(`Cannot initialize set from `+e)})),this},n._t=function(e){return Nt(this,e)},n.St=function(e){return At(this,e)},n.toJSON=function(){return Array.from(this)},n.toString=function(){return`[object ObservableSet]`},n[Symbol.iterator]=function(){return this.values()},S(e,[{key:`size`,get:function(){return this.st.reportObserved(),this.vt.size}},{key:Symbol.toStringTag,get:function(){return`Set`}}])}(),vr=f(`ObservableSet`,_r),yr=Object.create(null),br=function(){function e(e,t,n,r){t===void 0&&(t=new Map),r===void 0&&(r=vn),this.h=void 0,this.j=void 0,this.tt=void 0,this.un=void 0,this.lt=void 0,this.ut=void 0,this.et=void 0,this.v=void 0,this.p=void 0,this.on=void 0,this.sn=void 0,this.h=e,this.j=t,this.tt=n,this.un=r,this.lt=new mn(`ObservableObject.keys`),this.p=c(this.h)}var n=e.prototype;return n.O=function(e){return this.j.get(e).get()},n.S=function(e,t){var n=this.j.get(e);if(n instanceof Fn)return n.set(t),!0;if(kt(this)){var r=jt(this,{type:ar,object:this.v||this.h,name:e,newValue:t});if(!r)return null;t=r.newValue}if((t=n.xt(t))!==z.UNCHANGED){var i=Mt(this),a=i?{type:ar,observableKind:`object`,debugObjectName:this.tt,object:this.v||this.h,oldValue:n.Ot,name:e,newValue:t}:null;n.gt(t),i&&Pt(this,a)}return!0},n.ct=function(e){return z.trackingDerivation&&!g(this.h,e)&&this.it(e),this.h[e]},n.ht=function(e,t,n){return n===void 0&&(n=!1),g(this.h,e)?this.j.has(e)?this.S(e,t):n?Reflect.set(this.h,e,t):(this.h[e]=t,!0):this.s(e,{value:t,enumerable:!0,writable:!0,configurable:!0},this.un,n)},n.it=function(e){if(!z.trackingDerivation)return e in this.h;this.sn||=new Map;var t=this.sn.get(e);return t||(t=new Nn(e in this.h,ce,`ObservableObject.key?`,!1),this.sn.set(e,t)),t.get()},n.o=function(e,n){if(!0===n&&(n=this.un),!1!==n){if(!(e in this.h)){var r;if((r=this.h[pn])!=null&&r[e])return;t(1,n.i,this.tt+`.`+e.toString())}for(var i=this.h;i&&i!==an;){var a=nn(i,e);if(a){var o=n.o(this,e,a,i);if(o===0)return;if(o===1)break}i=Object.getPrototypeOf(i)}Ut(this,0,e)}},n.s=function(e,t,n,r){if(r===void 0&&(r=!1),!0===n&&(n=this.un),!1===n)return this.l(e,t,r);var i=n.s(this,e,t,r);return i&&Ut(this,0,e),i},n.l=function(e,t,n){n===void 0&&(n=!1);try{Qe();var r=this.Ut(e);if(!r)return r;if(kt(this)){var i=jt(this,{object:this.v||this.h,name:e,type:pr,newValue:t.value});if(!i)return null;var a=i.newValue;t.value!==a&&(t=ee({},t,{value:a}))}if(n){if(!Reflect.defineProperty(this.h,e,t))return!1}else rn(this.h,e,t);this.fn(e,t.value)}finally{$e()}return!0},n.g=function(e,t,n,r){r===void 0&&(r=!1);try{Qe();var i=this.Ut(e);if(!i)return i;if(kt(this)){var a=jt(this,{object:this.v||this.h,name:e,type:pr,newValue:t});if(!a)return null;t=a.newValue}var o=Vt(e),s={configurable:!z.safeDescriptors||this.p,enumerable:!0,get:o.get,set:o.set};if(r){if(!Reflect.defineProperty(this.h,e,s))return!1}else rn(this.h,e,s);var c=new Nn(t,n,`ObservableObject.key`,!1);this.j.set(e,c),this.fn(e,c.Ot)}finally{$e()}return!0},n.m=function(e,t,n){n===void 0&&(n=!1);try{Qe();var r=this.Ut(e);if(!r)return r;if(kt(this)&&!jt(this,{object:this.v||this.h,name:e,type:pr,newValue:void 0}))return null;t.name||=`ObservableObject.key`,t.context=this.v||this.h;var i=Vt(e),a={configurable:!z.safeDescriptors||this.p,enumerable:!1,get:i.get,set:i.set};if(n){if(!Reflect.defineProperty(this.h,e,a))return!1}else rn(this.h,e,a);this.j.set(e,new Fn(t)),this.fn(e,void 0)}finally{$e()}return!0},n.Ut=function(e,t){if(t===void 0&&(t=!1),!g(this.h,e))return!0;if(kt(this)&&!jt(this,{object:this.v||this.h,name:e,type:`remove`}))return null;try{var n;Qe();var r=Mt(this),i=this.j.get(e),a=void 0;if(!i&&r&&(a=nn(this.h,e)?.value),t){if(!Reflect.deleteProperty(this.h,e))return!1}else delete this.h[e];i&&(this.j.delete(e),i instanceof Nn&&(a=i.Ot),tt(i)),this.lt.reportChanged(),(n=this.sn)==null||(n=n.get(e))==null||n.set(e in this.h),r&&r&&Pt(this,{type:`remove`,observableKind:`object`,object:this.v||this.h,debugObjectName:this.tt,oldValue:a,name:e})}finally{$e()}return!0},n._t=function(e){return Nt(this,e)},n.St=function(e){return At(this,e)},n.fn=function(e,t){var n,r=Mt(this);r&&r&&Pt(this,r?{type:pr,observableKind:`object`,debugObjectName:this.tt,object:this.v||this.h,name:e,newValue:t}:null),(n=this.sn)==null||(n=n.get(e))==null||n.set(!0),this.lt.reportChanged()},n.rt=function(){return this.lt.reportObserved(),dn(this.h)},n.nt=function(){return this.lt.reportObserved(),Object.keys(this.h)},e}(),xr=f(`ObservableObjectAdministration`,br),Sr=Wt(0),Cr=function(){var e=!1,t={};return Object.defineProperty(t,`0`,{set:function(){e=!0}}),Object.create(t)[0]=1,!1===e}(),wr=0,Tr=function(){};lr=Tr,ur=Array.prototype,Object.setPrototypeOf?Object.setPrototypeOf(lr.prototype,ur):lr.prototype.__proto__===void 0?lr.prototype=ur:lr.prototype.__proto__=ur;var Er=function(e){function t(t,n,r,i){var a;return r===void 0&&(r=`ObservableArray`),i===void 0&&(i=!1),a=e.call(this)||this,Zt((function(){var e=new sr(r,n,i,!0);e.v=a,d(a,I,e),t&&t.length&&a.spliceWithArray(0,0,t),Cr&&Object.defineProperty(a,`0`,Sr)})),a}ne(t,e);var n=t.prototype;return n.concat=function(){this[I].st.reportObserved();var e=[...arguments];return Array.prototype.concat.apply(this.slice(),e.map((function(e){return Lt(e)?e.slice():e})))},n[Symbol.iterator]=function(){var e=this,t=0;return N({next:function(){return t<e.length?{value:e[t++],done:!1}:{done:!0,value:void 0}}})},S(t,[{key:`length`,get:function(){return this[I].Ft()},set:function(e){this[I].Xt(e)}},{key:Symbol.toStringTag,get:function(){return`Array`}}])}(Tr);Object.entries(cr).forEach((function(e){var t=e[0];t!==`concat`&&u(Er.prototype,t,e[1])})),Kt(1e3);var Dr=an.toString,Or=n().Iterator?.prototype||{};[`Symbol`,`Map`,`Set`].forEach((function(e){n()[e]===void 0&&t(`MobX requires global '`+e+`' to be available or polyfilled`)})),typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__==`object`&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:it,extras:{getDebugName:Xt},$mobx:I}),e.$mobx=I,e.FlowCancellationError=$n,e.ObservableMap=mr,e.ObservableSet=_r,e.Reaction=Un,e._allowStateChanges=Ie,e._allowStateChangesInsideComputed=ot,e._allowStateReadsEnd=qe,e._allowStateReadsStart=Ke,e._autoAction=Xn,e._endAction=Fe,e._getAdministration=Yt,e._getGlobalState=function(){return z},e._interceptReads=function(e,t,n){var r;return hr(e)||Lt(e)||Pn(e)?r=Yt(e):Ht(e)&&(r=Yt(e,t)),r.dehancer=typeof t==`function`?t:n,function(){r.dehancer=void 0}},e._isComputingDerivation=function(){return z.trackingDerivation!==null},e._resetGlobalState=function(){var e=new Bn;for(var t in e)zn.indexOf(t)===-1&&(z[t]=e[t]);z.allowStateChanges=!z.enforceActions},e._startAction=Pe,e.action=Yn,e.autorun=ct,e.comparer=gn,e.computed=On,e.configure=function(e){!0===e.isolateGlobalState&&function(){if((z.pendingReactions.length||z.inBatch||z.isRunningReactions)&&t(36),Hn=!0,Vn){var e=n();--e.__mobxInstanceCount==0&&(e.__mobxGlobals=void 0),z=new Bn}}();var r,i,a=e.useProxies,o=e.enforceActions;if(a!==void 0&&(z.useProxies=a===`always`||a!==`never`&&typeof Proxy<`u`),a===`ifavailable`&&(z.verifyProxies=!0),o!==void 0){var s=o===`always`?`always`:o===`observed`;z.enforceActions=s,z.allowStateChanges=!0!==s&&s!==`always`}[`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`disableErrorBoundaries`,`safeDescriptors`].forEach((function(t){t in e&&(z[t]=!!e[t])})),z.allowStateReads=!z.observableRequiresReaction,e.reactionScheduler&&(r=e.reactionScheduler,i=Wn,Wn=function(e){return r((function(){return i(e)}))})},e.createAtom=D,e.defineProperty=function(e,n,r){if(Ht(e))return e[I].l(n,r);t(39)},e.entries=function(e){return Ht(e)?xt(e).map((function(t){return[t,e[t]]})):hr(e)?xt(e).map((function(t){return[t,e.get(t)]})):vr(e)?Array.from(e.entries()):Lt(e)?e.map((function(e,t){return[t,e]})):void t(7)},e.extendObservable=pt,e.flow=nr,e.flowResult=function(e){return e},e.get=function(e,n){if(St(e,n))return Ht(e)?e[I].ct(n):hr(e)?e.get(n):Lt(e)?e[n]:void t(11)},e.getAtom=Jt,e.getDebugName=Xt,e.getDependencyTree=function(e,t){return mt(Jt(e,t))},e.getObserverTree=function(e,t){return ht(Jt(e,t))},e.has=St,e.intercept=function(e,t,n){return a(n)?function(e,t,n){return Yt(e,t).St(n)}(e,t,n):function(e,t){return Yt(e).St(t)}(e,t)},e.isAction=st,e.isBoxedObservable=Pn,e.isComputed=function(e){return vt(e)},e.isComputedProp=function(e,t){return vt(e,t)},e.isFlow=_t,e.isFlowCancellationError=function(e){return e instanceof $n},e.isObservable=bt,e.isObservableArray=Lt,e.isObservableMap=hr,e.isObservableObject=Ht,e.isObservableProp=function(e,t){return yt(e,t)},e.isObservableSet=vr,e.keys=xt,e.makeAutoObservable=function(e,t,n){return c(e)?pt(e,e,t,n):(Zt((function(){var r=Bt(e,n)[I];if(!e[ir]){var i=Object.getPrototypeOf(e),a=new Set([].concat(dn(e),dn(i)));a.delete(`constructor`),a.delete(I),u(i,ir,a)}e[ir].forEach((function(e){return r.o(e,!t||!(e in t)||t[e])}))})),e)},e.makeObservable=function(e,t,n){return Zt((function(){var r=Bt(e,n)[I];t??=function(e){return g(e,pn)||u(e,pn,ee({},e[pn])),e[pn]}(e),dn(t).forEach((function(e){return r.o(e,t[e])}))})),e},e.observable=Tn,e.observe=function(e,t,n,r){return a(n)?function(e,t,n,r){return Yt(e,t)._t(n,r)}(e,t,n,r):function(e,t,n){return Yt(e)._t(t,n)}(e,t,n)},e.onBecomeObserved=ut,e.onBecomeUnobserved=dt,e.onReactionError=function(e){return z.globalReactionErrorHandlers.push(e),function(){var t=z.globalReactionErrorHandlers.indexOf(e);t>=0&&z.globalReactionErrorHandlers.splice(t,1)}},e.override=_n,e.ownKeys=Ct,e.reaction=function(e,t,n){function r(){if(p=!1,!h.isDisposed){var t=!1,r=s;h.track((function(){var n=Ie(!1,(function(){return e(h)}));t=f||!m(s,n),s=n})),(f&&n.fireImmediately||!f&&t)&&l(s,r,h),f=!1}}var i;n===void 0&&(n=F);var a,o,s,c=n.name??`Reaction`,l=Yn(c,n.onError?(a=n.onError,o=t,function(){try{return o.apply(this,arguments)}catch(e){a.call(this,e)}}):t),u=!n.scheduler&&!n.delay,d=lt(n),f=!0,p=!1,m=n.compareStructural?gn.structural:n.equals||gn.default,h=new Un(c,(function(){f||u?r():p||(p=!0,d(r))}),n.onError,n.requiresObservable);return(i=n)!=null&&(i=i.signal)!=null&&i.aborted||h.Y(),h.Z(n?.signal)},e.remove=function(e,n){Ht(e)?e[I].Ut(n):hr(e)||vr(e)?e.delete(n):Lt(e)?(typeof n!=`number`&&(n=parseInt(n,10)),e.splice(n,1)):t(9)},e.runInAction=ot,e.set=function e(n,r,i){if(arguments.length!==2||vr(n))Ht(n)?n[I].ht(r,i):hr(n)?n.set(r,i):vr(n)?n.add(r):Lt(n)?(typeof r!=`number`&&(r=parseInt(r,10)),r<0&&t(`Invalid index: '`+r+`'`),Qe(),r>=n.length&&(n.length=r+1),n[r]=i,$e()):t(8);else{Qe();var a=r;try{for(var o in a)e(n,o,a[o])}finally{$e()}}},e.spy=it,e.toJS=function(e){return function e(t,n){if(typeof t!=`object`||!t||t instanceof Date||!bt(t))return t;if(Pn(t)||Ln(t))return e(t.get(),n);if(n.has(t))return n.get(t);if(Lt(t)){var r=wt(n,t,Array(t.length));return t.forEach((function(t,i){r[i]=e(t,n)})),r}if(vr(t)){var i=wt(n,t,new Set);return t.forEach((function(t){i.add(e(t,n))})),i}if(hr(t)){var a=wt(n,t,new Map);return t.forEach((function(t,r){a.set(r,e(t,n))})),a}var o=wt(n,t,{});return Ct(t).forEach((function(r){an.propertyIsEnumerable.call(t,r)&&(o[r]=e(t[r],n))})),o}(e,new Map)},e.trace=function(){},e.transaction=Tt,e.untracked=Ue,e.values=function(e){return Ht(e)?xt(e).map((function(t){return e[t]})):hr(e)?xt(e).map((function(t){return e.get(t)})):vr(e)?Array.from(e.values()):Lt(e)?e.slice():void t(6)},e.when=function(e,t,n){return arguments.length===1||t&&typeof t==`object`?Dt(e,t):Et(e,t,n||{})}})),hv=me((e=>{Object.defineProperty(e,`__esModule`,{value:!0});var t={0:`Invalid value for configuration 'enforceActions', expected 'never', 'always' or 'observed'`,1:function(e,t){return`Cannot apply '`+e+`' to '`+t.toString()+`': Field not found.`},5:`'keys()' can only be used on observable objects, arrays, sets and maps`,6:`'values()' can only be used on observable objects, arrays, sets and maps`,7:`'entries()' can only be used on observable objects, arrays and maps`,8:`'set()' can only be used on observable objects, arrays and maps`,9:`'remove()' can only be used on observable objects, arrays and maps`,10:`'has()' can only be used on observable objects, arrays and maps`,11:`'get()' can only be used on observable objects, arrays and maps`,12:`Invalid annotation`,13:`Dynamic observable objects cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)`,14:`Intercept handlers should return nothing or a change object`,15:`Observable arrays cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)`,16:`Modification exception: the internal structure of an observable array was changed.`,17:function(e,t){return`[mobx.array] Index out of bounds, `+e+` is larger than `+t},18:`mobx.map requires Map polyfill for the current browser. Check babel-polyfill or core-js/es6/map.js`,19:function(e){return`Cannot initialize from classes that inherit from Map: `+e.constructor.name},20:function(e){return`Cannot initialize map from `+e},21:function(e){return`Cannot convert to map from '`+e+`'`},22:`mobx.set requires Set polyfill for the current browser. Check babel-polyfill or core-js/es6/set.js`,23:`It is not possible to get index atoms from arrays`,24:function(e){return`Cannot obtain administration from `+e},25:function(e,t){return`the entry '`+e+`' does not exist in the observable map '`+t+`'`},26:`please specify a property`,27:function(e,t){return`no observable property '`+e.toString()+`' found on the observable object '`+t+`'`},28:function(e){return`Cannot obtain atom from `+e},29:`Expecting some object`,30:`invalid action stack. did you forget to finish an action?`,31:`missing option for computed: get`,32:function(e,t){return`Cycle detected in computation `+e+`: `+t},33:function(e){return`The setter of computed value '`+e+`' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?`},34:function(e){return`[ComputedValue '`+e+`'] It is not possible to assign a new value to a computed value.`},35:"There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`",36:`isolateGlobalState should be called before MobX is running any reactions`,37:function(e){return"[mobx] `observableArray."+e+"()` mutates the array in-place, which is not allowed inside a derivation. Use `array.slice()."+e+"()` instead"},38:`'ownKeys()' can only be used on observable objects`,39:`'defineProperty()' can only be used on observable objects`};function n(e){var n=[...arguments].slice(1),r=typeof e==`string`?e:t[e];throw typeof r==`function`&&(r=r.apply(null,n)),Error(`[MobX] `+r)}var r={};function i(){return typeof globalThis<`u`?globalThis:typeof window<`u`?window:typeof global<`u`?global:typeof self<`u`?self:r}var a=Object.assign,o=Object.getOwnPropertyDescriptor,s=Object.defineProperty,c=Object.prototype,l=[];Object.freeze(l);var u={};Object.freeze(u);var d=typeof Proxy<`u`,f=Object.toString();function p(){d||n("`Proxy` objects are not available in the current environment. Please configure MobX to enable a fallback implementation.`")}function m(e){L.verifyProxies&&n(`MobX is currently configured to be able to run in ES5 mode, but in ES5 MobX won't be able to `+e)}function h(){return++L.mobxGuid}function g(e){var t=!1;return function(){if(!t)return t=!0,e.apply(this,arguments)}}var _=function(){};function v(e){return typeof e==`function`}function y(e){switch(typeof e){case`string`:case`symbol`:case`number`:return!0}return!1}function b(e){return typeof e==`object`&&!!e}function x(e){if(!b(e))return!1;var t=Object.getPrototypeOf(e);if(t==null)return!0;var n=Object.hasOwnProperty.call(t,`constructor`)&&t.constructor;return typeof n==`function`&&n.toString()===f}function S(e){var t=e?.constructor;return t?t.name===`GeneratorFunction`||t.displayName===`GeneratorFunction`:!1}function C(e,t,n){s(e,t,{enumerable:!1,writable:!0,configurable:!0,value:n})}function ee(e,t,n){s(e,t,{enumerable:!1,writable:!1,configurable:!0,value:n})}function te(e,t){var n=`isMobX`+e;return t.prototype[n]=!0,function(e){return b(e)&&e[n]===!0}}function ne(e){return e!=null&&Object.prototype.toString.call(e)===`[object Map]`}function re(e){return Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(e)))===null}function w(e){return e!=null&&Object.prototype.toString.call(e)===`[object Set]`}var ie=Object.getOwnPropertySymbols!==void 0;function T(e){var t=Object.keys(e);if(!ie)return t;var n=Object.getOwnPropertySymbols(e);return n.length?[].concat(t,n.filter(function(t){return c.propertyIsEnumerable.call(e,t)})):t}var E=typeof Reflect<`u`&&Reflect.ownKeys?Reflect.ownKeys:ie?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames;function ae(e){return typeof e==`string`?e:typeof e==`symbol`?e.toString():new String(e).toString()}function oe(e){return e===null?null:typeof e==`object`?``+e:e}function D(e,t){return c.hasOwnProperty.call(e,t)}var se=Object.getOwnPropertyDescriptors||function(e){var t={};return E(e).forEach(function(n){t[n]=o(e,n)}),t};function ce(e,t){return!!(e&t)}function le(e,t,n){return n?e|=t:e&=~t,e}function ue(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function de(e,t,n){if(ve())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var i=new(e.bind.apply(e,r));return n&&ye(i,n.prototype),i}function fe(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,xe(r.key),r)}}function pe(e,t,n){return t&&fe(e.prototype,t),n&&fe(e,n),Object.defineProperty(e,`prototype`,{writable:!1}),e}function me(e,t){var n=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=Se(e))||t&&e&&typeof e.length==`number`){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw TypeError(`Invalid attempt to iterate non-iterable instance.
57
57
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function he(){return he=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},he.apply(null,arguments)}function ge(e){return ge=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},ge(e)}function O(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,ye(e,t)}function _e(e){try{return Function.toString.call(e).indexOf(`[native code]`)!==-1}catch{return typeof e==`function`}}function ve(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(ve=function(){return!!e})()}function ye(e,t){return ye=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},ye(e,t)}function be(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function xe(e){var t=be(e,`string`);return typeof t==`symbol`?t:t+``}function Se(e,t){if(e){if(typeof e==`string`)return ue(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ue(e,t):void 0}}function Ce(e){var t=typeof Map==`function`?new Map:void 0;return Ce=function(e){if(e===null||!_e(e))return e;if(typeof e!=`function`)throw TypeError(`Super expression must either be null or a function`);if(t!==void 0){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return de(e,arguments,ge(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),ye(n,e)},Ce(e)}var we=Symbol(`mobx-stored-annotations`);function Te(e){function t(t,n){if(ke(n))return e.decorate_20223_(t,n);Ee(t,n,e)}return Object.assign(t,e)}function Ee(e,t,r){D(e,we)||C(e,we,he({},e[we])),Ge(r)&&!D(e[we],t)&&n(`'`+(e.constructor.name+`.prototype.`+t.toString())+`' is decorated with 'override', but no such decorated member was found on prototype.`),De(e,r,t),Ge(r)||(e[we][t]=r)}function De(e,t,r){if(!Ge(t)&&D(e[we],r)){var i=e.constructor.name+`.prototype.`+r.toString(),a=e[we][r].annotationType_,o=t.annotationType_;n(`Cannot apply '@`+o+`' to '`+i+`':`+(`
58
58
  The field is already decorated with '@`+a+`'.`)+`
59
59
  Re-decorating fields is not allowed.
@@ -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,k,new Yi(e,new Map,String(r),Ft(t))),e}var Zi=te(`ObservableObjectAdministration`,Yi);function Qi(e){return qi[e]||(qi[e]={get:function(){return this[k].getObservablePropValue_(e)},set:function(t){return this[k].setObservablePropValue_(e,t)}})}function $i(e){return b(e)?Zi(e[k]):!1}function ea(e,t,n){var r;e.appliedAnnotations_[n]=t,(r=e.target_[we])==null||delete r[n]}function ta(e,t,r){if(Ca(t)||n(`Cannot annotate '`+e.name_+`.`+r.toString()+`': Invalid annotation.`),!Ge(t)&&D(e.appliedAnnotations_,r)){var i=e.name_+`.`+r.toString(),a=e.appliedAnnotations_[r].annotationType_,o=t.annotationType_;n(`Cannot apply '`+o+`' to '`+i+`':`+(`
84
84
  The field is already annotated with '`+a+`'.`)+`
85
85
  Re-annotating fields is not allowed.
86
- Use 'override' annotation for methods overridden by subclass.`)}}var na=ca(0),ra=function(){var e=!1,t={};return Object.defineProperty(t,`0`,{set:function(){e=!0}}),Object.create(t)[0]=1,e===!1}(),ia=0,aa=function(){};function oa(e,t){Object.setPrototypeOf?Object.setPrototypeOf(e.prototype,t):e.prototype.__proto__===void 0?e.prototype=t:e.prototype.__proto__=t}oa(aa,Array.prototype);var sa=function(e){function t(t,n,r,i){var a;return r===void 0&&(r=`ObservableArray@`+h()),i===void 0&&(i=!1),a=e.call(this)||this,ha(function(){var e=new Oi(r,n,i,!0);e.proxy_=a,ee(a,k,e),t&&t.length&&a.spliceWithArray(0,0,t),ra&&Object.defineProperty(a,`0`,na)}),a}O(t,e);var n=t.prototype;return n.concat=function(){this[k].atom_.reportObserved();var e=[...arguments];return Array.prototype.concat.apply(this.slice(),e.map(function(e){return Fi(e)?e.slice():e}))},n[Symbol.iterator]=function(){var e=this,t=0;return xa({next:function(){return t<e.length?{value:e[t++],done:!1}:{done:!0,value:void 0}}})},pe(t,[{key:`length`,get:function(){return this[k].getArrayLength_()},set:function(e){this[k].setArrayLength_(e)}},{key:Symbol.toStringTag,get:function(){return`Array`}}])}(aa);Object.entries(Ai).forEach(function(e){var t=e[0],n=e[1];t!==`concat`&&C(sa.prototype,t,n)});function ca(e){return{enumerable:!1,configurable:!0,get:function(){return this[k].get_(e)},set:function(t){this[k].set_(e,t)}}}function la(e){s(sa.prototype,``+e,ca(e))}function ua(e){if(e>ia){for(var t=ia;t<e+100;t++)la(t);ia=e}}ua(1e3);function da(e,t,n){return new sa(e,t,n)}function fa(e,t){if(typeof e==`object`&&e){if(Fi(e))return t!==void 0&&n(23),e[k].atom_;if(Gi(e))return e.atom_;if(Bi(e)){if(t===void 0)return e.keysAtom_;var r=e.data_.get(t)||e.hasMap_.get(t);return r||n(25,t,ma(e)),r}if($i(e)){if(!t)return n(26);var i=e[k].values_.get(t);return i||n(27,t,ma(e)),i}if(Me(e)||tn(e)||z(e))return e}else if(v(e)&&z(e[k]))return e[k];n(28)}function pa(e,t){if(e||n(29),t!==void 0)return pa(fa(e,t));if(Me(e)||tn(e)||z(e)||Bi(e)||Gi(e))return e;if(e[k])return e[k];n(24,e)}function ma(e,t){var n;if(t!==void 0)n=fa(e,t);else if(cr(e))return e.name;else n=$i(e)||Bi(e)||Gi(e)?pa(e):fa(e);return n.name_}function ha(e){var t=I(),n=Xt(!0);An();try{return e()}finally{jn(),Zt(n),mn(t)}}var ga=c.toString;function _a(e,t,n){return n===void 0&&(n=-1),va(e,t,n)}function va(e,t,n,r,i){if(e===t)return e!==0||1/e==1/t;if(e==null||t==null)return!1;if(e!==e)return t!==t;var a=typeof e;if(a!==`function`&&a!==`object`&&typeof t!=`object`)return!1;var o=ga.call(e);if(o!==ga.call(t))return!1;switch(o){case`[object RegExp]`:case`[object String]`:return``+e==``+t;case`[object Number]`:return+e==+e?+e==0?1/e==1/t:+e==+t:+t!=+t;case`[object Date]`:case`[object Boolean]`:return+e==+t;case`[object Symbol]`:return typeof Symbol<`u`&&Symbol.valueOf.call(e)===Symbol.valueOf.call(t);case`[object Map]`:case`[object Set]`:n>=0&&n++;break}e=ya(e),t=ya(t);var s=o===`[object Array]`;if(!s){if(typeof e!=`object`||typeof t!=`object`)return!1;var c=e.constructor,l=t.constructor;if(c!==l&&!(v(c)&&c instanceof c&&v(l)&&l instanceof l)&&`constructor`in e&&`constructor`in t)return!1}if(n===0)return!1;n<0&&(n=-1),r||=[],i||=[];for(var u=r.length;u--;)if(r[u]===e)return i[u]===t;if(r.push(e),i.push(t),s){if(u=e.length,u!==t.length)return!1;for(;u--;)if(!va(e[u],t[u],n-1,r,i))return!1}else{var d=Object.keys(e),f=d.length;if(Object.keys(t).length!==f)return!1;for(var p=0;p<f;p++){var m=d[p];if(!(D(t,m)&&va(e[m],t[m],n-1,r,i)))return!1}}return r.pop(),i.pop(),!0}function ya(e){return Fi(e)?e.slice():ne(e)||Bi(e)||w(e)||Gi(e)?Array.from(e.entries()):e}var ba=i().Iterator?.prototype||{};function xa(e){return e[Symbol.iterator]=Sa,Object.assign(Object.create(ba),e)}function Sa(){return this}function Ca(e){return e instanceof Object&&typeof e.annotationType_==`string`&&v(e.make_)&&v(e.extend_)}[`Symbol`,`Map`,`Set`].forEach(function(e){i()[e]===void 0&&n(`MobX requires global '`+e+`' to be available or polyfilled`)}),typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__==`object`&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:Jn,extras:{getDebugName:ma},$mobx:k}),e.$mobx=k,e.FlowCancellationError=Ar,e.ObservableMap=zi,e.ObservableSet=Wi,e.Reaction=Ln,e._allowStateChanges=Yt,e._allowStateChangesInsideComputed=sr,e._allowStateReadsEnd=gn,e._allowStateReadsStart=hn,e._autoAction=or,e._endAction=Jt,e._getAdministration=pa,e._getGlobalState=Cn,e._interceptReads=Rr,e._isComputingDerivation=F,e._resetGlobalState=wn,e._startAction=qt,e.action=ar,e.autorun=lr,e.comparer=Re,e.computed=Bt,e.configure=Sr,e.createAtom=Ne,e.defineProperty=H,e.entries=Yr,e.extendObservable=Cr,e.flow=Pr,e.flowResult=Ir,e.get=$r,e.getAtom=fa,e.getDebugName=ma,e.getDependencyTree=wr,e.getObserverTree=Er,e.has=Qr,e.intercept=zr,e.isAction=cr,e.isBoxedObservable=N,e.isComputed=Hr,e.isComputedProp=Ur,e.isFlow=Lr,e.isFlowCancellationError=jr,e.isObservable=Gr,e.isObservableArray=Fi,e.isObservableMap=Bi,e.isObservableObject=$i,e.isObservableProp=Kr,e.isObservableSet=Gi,e.keys=qr,e.makeAutoObservable=wi,e.makeObservable=Si,e.observable=j,e.observe=ti,e.onBecomeObserved=gr,e.onBecomeUnobserved=_r,e.onReactionError=Rn,e.override=We,e.ownKeys=ei,e.reaction=fr,e.remove=Zr,e.runInAction=sr,e.set=Xr,e.spy=Jn,e.toJS=oi,e.trace=si,e.transaction=li,e.untracked=pn,e.values=Jr,e.when=ui})),hv=me(((e,t)=>{process.env.NODE_ENV===`production`?t.exports=pv():t.exports=mv()}))();function gv(e){if(Array.isArray(e))return Object.freeze(e.map(gv));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]=gv(r);return Object.freeze(t)}return e}function _v(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 vv(e){return typeof e==`string`?e:String(e)}function yv(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 bv(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 xv(e,t){if(!(e instanceof U))throw TypeError(`template function expected a RichText fragment, got ${typeof e==`object`?Object.prototype.toString.call(e):typeof e}`);let n=e.copy();return n.style=Sv(e.style).add(t),n}function Sv(e){if(e instanceof V)return e;try{return V.parse(e)}catch(t){throw t instanceof Rr?TypeError(`template function cannot style a fragment whose base style "${e}" is not a style definition: a style name resolves only against the theme of a render`,{cause:t}):t}}function Cv(e){return{fn:(t=>xv(t,e)),argTypes:[`liftable`],arity:{kind:`exact`},returnType:`T`}}function wv(e){return{fn:((t,n)=>xv(n,new V({[e]:hn.parse(t)}))),argTypes:[`string`,`liftable`],arity:{kind:`exact`},returnType:`T`}}function Tv(e,t){return new V({[e]:t})}function Ev(){let e={};for(let t of Fr)e[t]=Cv(Tv(t,!0)),e[`not_${t}`]=Cv(Tv(t,!1));for(let[t,n]of Object.entries(Lr))e[t]=Cv(Tv(n,!0));return e}const Dv={fn:((e,t)=>xv(t,V.parse(e))),argTypes:[`string`,`liftable`],arity:{kind:`exact`},returnType:`T`},Ov={fn:((e,t)=>xv(t,new V({link:e}))),argTypes:[`string`,`liftable`],arity:{kind:`exact`},returnType:`T`};function kv(){return{fg:wv(`color`),bg:wv(`bgcolor`),...Ev(),link:Ov,style:Dv}}function Av(e,t){if(!qn.test(e.trim()))throw TypeError(`${t} expected a color (#RRGGBB or #RRGGBBAA), got ${JSON.stringify(e)} — to use a palette name here, wrap it: ${t} (color ${JSON.stringify(e)}) …`);return Jn(e)}function jv(e,t){return{fn:t,argTypes:e,arity:{kind:`exact`},returnType:`string`}}function Mv(e,t,n,r){let i=r===void 0||e>=r.min&&e<=r.max;if(!Number.isFinite(e)||!i){let i=r===void 0?`a finite number`:`within ${r.min}..${r.max} (${r.note})`;throw RangeError(`${t}'s ${n} must be ${i}, got ${e}`)}return e}const Nv=jv([`string`,`int`],((e,t)=>tr(Av(e,`darken`),t).hex)),Pv=jv([`string`,`int`],((e,t)=>tr(Av(e,`lighten`),-t).hex)),Fv={min:0,max:100,note:`0 = from, 100 = toward`},Iv=jv([`string`,`string`,`float`],((e,t,n)=>Cn(Av(e,`mix`),Av(t,`mix`),Mv(n,`mix`,`percentage`,Fv)/100).hex)),Lv={min:1,max:21,note:`4.5 = AA body text, 3 = AA large text`},Rv=jv([`string`],(e=>nr(Av(e,`contrastOn`)).hex)),zv=e=>jv([`string`,`string`,`float`],((t,n,r)=>rr(Av(t,`readableOn`),Av(n,`readableOn`),Mv(r,`readableOn`,`ratio`,Lv),e()).hex)),Bv={hueShift:`shiftHue`,chromaScale:`scaleChroma`,lightnessScale:`scaleLightness`,lightnessShift:`shiftLightness`};function Vv(){let e={};for(let[t,n]of Object.entries(Bv)){let r=t;e[n]=jv([`string`,`float`],((e,t)=>{let i={...In,[r]:Mv(t,n,`amount`)};return B.fromRgba(Av(e,n)).applyKey(i).toRgba().hex}))}return e}function Hv(e=()=>F.TRUECOLOR){return{darken:Nv,lighten:Pv,mix:Iv,contrastOn:Rv,readableOn:zv(e),...Vv()}}function Uv(e,t){if(e.length%2!=0)throw RangeError(`ramp's last stop (position ${String(e[e.length-1])}) has no color — stops are <position> <color> pairs`);let n=[];for(let r=0;r<e.length;r+=2)n.push({at:e[r],color:Yn(t,e[r+1])});return n}function Wv(e){return{color:{fn:(t=>Yn(e(),t).hex),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},ramp:{fn:((t,n,...r)=>new Nr(Mr(n),Uv(r,e())).at(t).hex),argTypes:[`float`,`string`],arity:{kind:`alternating`,minimum:4},returnType:`string`}}}function Gv(e){return{...kv(),...Hv(e)}}new V({color:`red`,dim:!0});const Kv=/^(?:(?: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,qv=/^(?<family>opus|sonnet|haiku)\s+(?<major>\d+)(?:\.(?<minor>\d))?$/i;function Jv(e){if(!e)return`Claude`;let t=e.trim().replace(/\s*\([^)]*\)\s*$/,``).replace(/\s*\[[^\]]*\]\s*$/,``).trim(),n=t.match(Kv);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(qv);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 Yv(e){let t=e.match(qv);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 Xv(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 Zv(e){return e.toLocaleString()}function Qv(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 $v(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 ey=[`▁`,`▂`,`▃`,`▄`,`▅`,`▆`,`▇`,`█`],ty=ey.length;function ny(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*(ty-1));o+=ey[t]}return o}function ry(e){let t=[];for(let n of e.split(`,`)){let e=n.trim();if(e===``)continue;let r=Number(e);if(!Number.isFinite(r))throw TypeError(`sparkline: non-numeric series element ${JSON.stringify(n)}`);t.push(r)}return t}function iy(e,t,n){if(n.length!==0)throw Error(`${e}: takes at most ${t.length} optional argument${t.length===1?``:`s`} (${t.join(`, `)}), got ${t.length+n.length}`)}const ay=Ka(),oy=[...ao];function sy(){return{basename:{fn:e=>l(e),argTypes:[`string`],arity:{kind:`exact`}},dirname:{fn:e=>u(e),argTypes:[`string`],arity:{kind:`exact`}},abbreviatePath:{fn:e=>Xv(e),argTypes:[`string`],arity:{kind:`exact`}},int:{fn:e=>Math.trunc(yv(e)),argTypes:[`value`],arity:{kind:`exact`}},string:{fn:e=>vv(e),argTypes:[`value`],arity:{kind:`exact`}},bool:{fn:e=>bv(e),argTypes:[`value`],arity:{kind:`exact`}},urlEncode:{fn:e=>encodeURIComponent(e),argTypes:[`string`],arity:{kind:`exact`}},themes:{fn:()=>ay,argTypes:[],arity:{kind:`exact`}},styles:{fn:()=>oy,argTypes:[],arity:{kind:`exact`}},sparkline:{fn:(e,t,...n)=>(iy(`sparkline`,[`width`],n),ny(ry(e),t)),argTypes:[`string`,`int`],arity:{kind:`variadic`}},cascade:{fn:(e,...t)=>$v(e,Qv(t)),argTypes:[`float`,`string`],arity:{kind:`variadic`}}}}function cy(e=()=>new Date){return{minutesUntilReset:{fn:t=>Math.round(Math.max(0,t*1e3-e().getTime())/6e4),argTypes:[`int`],arity:{kind:`exact`}},formatInteger:{fn:e=>Zv(e),argTypes:[`int`],arity:{kind:`exact`}},round:{fn:e=>Math.round(e),argTypes:[`float`],arity:{kind:`exact`}},formatModelName:{fn:e=>Jv(e),argTypes:[`string`],arity:{kind:`exact`}},shortenModelName:{fn:e=>Yv(e),argTypes:[`string`],arity:{kind:`exact`}}}}function ly(e,t=()=>new Date,n){return sp({fromString:e=>new U(e),toString:e=>e.plain,isT:e=>e instanceof U,clock:t,missingKey:`error`,funcs:{...Xm(),...c_(),...Ih(),...ig(),...Hm(t),...Mp(),...uh(),...Gv(n),...sy(),...cy(t),...e??{}}})}function uy(e){return dy(e,new Set(e.names()),``)}function dy(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`?py(a,e.readDocument(a)):e.read(a);let o=`${a}.`;for(let n of t)if(n.startsWith(o))return dy(e,t,a)}})}function fy(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 py(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 my(e,t){return e?.kind===`ok`?e.value:t}function hy(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??gy(t.stderr)].filter(Boolean).join(`, `)}`)}function gy(e){return e.trim().split(`
87
- `,1)[0]??``}function _y(e,t){if(e.kind!==`ok`)return e;let n=t(e.value);return n===null?Y:J(n)}function vy(e){if(e.kind!==`ok`)return e;let t=e.value.trim();return t?J(t):Y}const yy=/^[A-Za-z]:[\\/]/;function by(e){let t=e.trim();if(yy.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 xy(e){return by(e)?.host||null}function Sy(e){let t=xy(e);return t?t===`github.com`||t.endsWith(`.github.com`)?`github`:/(^|\.)gitlab\./.test(t)?`gitlab`:null:null}function Cy(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 wy(e){return e.urls.find(e=>ky(e)!==null)??e.urls[0]??null}function Ty(e){return e.find(e=>e.name===`origin`)??e[0]??null}function Ey(e){let t=Ty(e);return t?wy(t):null}function Dy(e){let t=Ty(e);return t?t.urls.find(e=>Sy(e)!==null)??wy(t):null}function Oy(e){let t=(by(e)?.path??e.replace(/[\\/]+$/,``)).split(`/`);return(t[t.length-1]??``).replace(/\.git$/,``)||null}function ky(e){let t=by(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 Ay(e){let t=Ey(e);return t===null?null:ky(t)}function jy(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??gy(t.stderr)].filter(Boolean).join(`, `)}`)}function My(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Ny(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 Py(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(!My(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 Fy(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(!My(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 Iy(e){try{let t=r.statSync(e);return{key:`${t.dev}:${t.ino}`,stamp:`${t.mtimeMs}:${t.size}`}}catch{return null}}var Ly=class{isGitRepo(e){try{return r.existsSync(c.join(e,`.git`))}catch{return!1}}async execGitAsync(e,t){return De({bin:`git`,args:[...e],cwd:t.cwd,env:{...process.env,GIT_OPTIONAL_LOCKS:`0`},timeoutMs:t.timeout,category:`git`})}async resolveEffectiveGitDir(e,t){return this.isWorktree(e)?J(e):t&&this.isGitRepo(t)?J(t):this.isGitRepo(e)?J(e):this.findGitRoot(e)}async findGitRoot(e){let t=c.resolve(e);for(;;){if(this.isGitRepo(t))return J(t);let e=c.dirname(t);if(e===t)return Y;t=e}}async getGitInfo(e,t={},n){try{return await this.computeGitInfo(e,t,n)}catch(e){return X(`git: ${e instanceof Error?e.message:String(e)}`)}}async computeGitInfo(e,t={},n){let r,i=this.isWorktree(e);if(i)r=e;else if(n&&this.isGitRepo(n))r=n;else if(this.isGitRepo(e))r=e;else{let t=await this.findGitRoot(e);if(t.kind!==`ok`)return t;r=t.value}let a=await this.getCoreAsync(r);if(a.kind!==`ok`)return a;let o={branch:a.value.branch,status:a.value.status,aheadBehind:a.value.aheadBehind};t.showWorkingTree&&(o.workingTree=a.value.workingTree),t.showSha&&(o.sha=_y(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=_y(s,e=>this.repoNameFrom(e,r)),o.isWorktree=i),s!==void 0&&t.showRepoUrl&&(o.repoUrl=_y(s,Ay)),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 vy(hy(`git describe --tags`,await this.execGitAsync([`describe`,`--tags`,`--abbrev=0`],{cwd:e,timeout:2e3}),`absent`))}async timeSinceCommit(e,t){return t.kind===`ok`?_y(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=vy(hy(`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=Iy(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=hy(`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`?Cy(t.value):[])}repoNameFrom(e,t){let n=Ey(e);return(n===null?null:Oy(n))??c.basename(t)}async getRepoRemoteUrl(e){let t=await this.getRemotesAsync(e);if(t.kind!==`ok`)return t;let n=Dy(t.value);return n===null?Y:J(n)}async execForgeAsync(e,t,n){return De({bin:e,args:[...t],cwd:n.cwd,env:{...process.env},timeoutMs:n.timeout,category:`forge`})}async resolvePullRequest(e,t){let n=Sy(t);return n===`github`?jy(`gh pr view`,await this.execForgeAsync(`gh`,[`pr`,`view`,`--json`,`number,state,url`],{cwd:e,timeout:5e3}),/no (open )?pull requests? found/i,Py):n===`gitlab`?jy(`glab mr view`,await this.execForgeAsync(`glab`,[`mr`,`view`,`--output`,`json`],{cwd:e,timeout:5e3}),/no (open )?merge requests? (found|available)/i,Fy):Y}isWorktree(e){try{let t=c.join(e,`.git`);return!!(r.existsSync(t)&&r.statSync(t).isFile())}catch{return!1}}async getCoreAsync(e){O(`[GIT-EXEC] Running git status --porcelain=v2 in ${e}`);let t=hy(`git status --porcelain=v2 --branch`,await this.execGitAsync([`status`,`--porcelain=v2`,`--branch`],{cwd:e,timeout:2e3}),`failed`);return t.kind===`ok`?J(Ny(t.value)):t}};const Ry=(e,t)=>O(t);var zy=class{slots=new Map;maxWatchers;counters;logger;closed=!1;constructor(e={}){this.maxWatchers=e.maxWatchers??128,this.counters=e.counters,this.logger=e.logger??Ry}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()}},By=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 Vy=(e,t)=>O(t),Hy={showSha:!0,showStashCount:!0};function Uy(e){let t=Object.keys(e).sort(),n={};for(let r of t)n[r]=e[r];return JSON.stringify(n)}function Wy(e){let t=t=>{try{return r.statSync(c.join(e,t)).mtimeMs}catch{return 0}};return{head:t(`HEAD`),index:t(`index`)}}function Gy(e,t){return e.head!==t.head||e.index!==t.index}function Ky(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 qy=class extends Ly{entries=new Map;subscribersByRepo=new Map;fetchInFlight=new Map;resolutions=new Map;prCache=new Map;prFetchInFlight=new Map;refreshes=new By;hits=0;misses=0;invalidations=0;inner;ttlMs;maxEntries;watchers;ownsWatchers;logger;sanityTimer=null;constructor(e={}){super(),this.inner=e.inner??new Ly,this.ttlMs=e.ttlMs??3e4,this.maxEntries=e.maxEntries??64,this.logger=e.logger??Vy,e.watchers?(this.watchers=e.watchers,this.ownsWatchers=!1):(this.watchers=new zy({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}|${Uy(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=Wy(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}`,Ky(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}`,Ky(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,{...Hy});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,{...Hy}),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=Wy(this.inner.resolveGitDir(t.repoRoot)),e.set(t.repoRoot,n)),Gy(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 Jy=/\r\n|\r|\n/g,Yy=e=>J(e.replace(Jy,` `).trim());function Xy(e){return t=>{let n=e.exec(t)?.[1];return n===void 0?X(`regex no-match`):J(n.replace(Jy,` `))}}const Zy=e=>{try{return J(JSON.parse(e))}catch(e){return X(`JSON parse failed: ${e.message}`)}};function Qy(e,t){return t.kind!==`ttl`||t.durationMs>=500?t:(O(`declareShell "${e}": ttl ${t.durationMs}ms below floor 500ms; clamping`),{kind:`ttl`,durationMs:500})}function $y(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 eb=`session.id`;function tb(e,t,n){return{where:`output of "${e}" in ${t}`,read:async()=>{let r=await De({bin:`/bin/sh`,args:[`-c`,e],cwd:t,category:`user-shell`,signal:n});if(!r.ok&&r.reason===`aborted`)throw n.reason;return r.ok?J(r.stdout):X(`shell "${e}" ${r.exitCode===null?[r.reason,r.error].filter(e=>e!==void 0).join(`: `):`exited with code ${r.exitCode}`} in ${t}`)}}}function nb(e,t,n){return{where:`"${e}"`,read:async()=>{try{let r=await x(e,{encoding:`utf8`,signal:n});return J(t===`first-line`?r.split(/\r?\n/)[0]??``:r)}catch{if(n.aborted)throw n.reason;return X(`file unreadable: ${e}`)}}}}function rb(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 ib=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],ab=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],ob=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],sb=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`];function cb(e,t){let n=[[`2006`,e=>String(e.getFullYear())],[`January`,e=>ib[e.getMonth()]],[`Monday`,e=>ob[e.getDay()]],[`Jan`,e=>ab[e.getMonth()]],[`Mon`,e=>sb[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 lb={branch:`string`,sha:`string`,dirty:`boolean`,ahead:`number`,behind:`number`,stash:`number`};function ub(e,t,n,r){if(e===null){if(n!==void 0)return n;let e=lb[t];try{return mb(r,e)}catch{return hb(e)}}switch(t){case`branch`:return e.branch===`detached`?``:e.branch;case`sha`:return my(e.sha,``);case`dirty`:return e.status!==`clean`;case`ahead`:return my(e.aheadBehind,{ahead:0,behind:0}).ahead;case`behind`:return my(e.aheadBehind,{ahead:0,behind:0}).behind;case`stash`:return my(e.stashCount,0)}}var db=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}},fb=class{buckets=new Map;subscribe(e,t){let n=this.buckets.get(e);if(!n){let t=new Set;n={timer:te(()=>{for(let e of t)e()},e),callbacks:t},this.buckets.set(e,n)}return n.callbacks.add(t),()=>this.unsubscribe(e,t)}unsubscribe(e,t){let n=this.buckets.get(e);n&&(n.callbacks.delete(t),n.callbacks.size===0&&(ee(n.timer),this.buckets.delete(e)))}dispose(){for(let{timer:e}of this.buckets.values())ee(e);this.buckets.clear()}bucketCount(){return this.buckets.size}};function pb(e,t){let n=e;for(let e of t.split(`.`)){if(typeof n!=`object`||!n)return;n=n[e]}return n}function mb(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`?vv(e):t===`number`?yv(e):bv(e)}function hb(e){return e===`number`?0:e===`boolean`?!1:``}var gb=class{inputMetas=new Map;lastErrors=new Map;watchMgr=new db;ttlMgr=new fb;gitSubscriptions=new Map;cleanups=[];inFlight=new Map;reads=new By;abort=new AbortController;drawn=hv.observable.box(F.TRUECOLOR);drawnAt=()=>this.drawn.get();engine=ly(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 qy({sanityIntervalMs:0}),this.ownsGitProvider=!0),this.sessionState=r}get variableStore(){return this.store}declareLiteral(e,t){this.store.defineBox(e,_v(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,tb(t,n.cwd,this.abort.signal),Qy(e,n.cache),n.parse)}declareFile(e,t,n){this.declareSource(e,nb(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,Yy,t.default,n);case`regex`:return this.scalarPublisher(e,Xy(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=rb(n,t,r);this.noteOutcome(e,a),this.store.setBox(e,my(a,i))}}documentPublisher(e,t,n){let r=t===void 0?Y:J(t);return this.store.defineDocument(e,r),i=>{let a=rb(i,Zy,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=uy(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 cb(t.format,e)}catch{return this.stringInitial(t.varDefault)}})(new Date));let r=this.ttlMgr.subscribe(n,()=>{try{this.store.setBox(e,cb(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=lb[t.field],r=t.varDefault===void 0?hb(n):mb(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,ub(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(eb);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=pb(e,n.path),i=this.store.getType(t);if(r!==void 0)try{this.store.setBox(t,mb(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,hv.reaction)(()=>{let t=uy(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,hv.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,mb(this.defaultEmptyValue,t))}catch{this.store.setBox(e,hb(t))}}defaultFor(e){try{return mb(this.defaultEmptyValue,e)}catch{return hb(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 _b={project_dir:{kind:`input`,path:`workspace.project_dir`,default:``},[eb]:{kind:`input`,path:`session_id`,default:``},transcript_path:{kind:`input`,path:`transcript_path`,default:``},"theme.effective":{kind:`input`,path:`theme.effective`,default:``},"look.effective":{kind:`input`,path:`look.effective`,default:``},"preset.effective":{kind:`input`,path:`preset.effective`,default:``},"preset.customized":{kind:`input`,path:`preset.customized`,type:`boolean`,default:!1},"preset.bundled":{kind:`input`,path:`preset.bundled`,type:`boolean`,default:!0},"style.effective":{kind:`input`,path:`style.effective`,default:``},"progression.effective":{kind:`input`,path:`progression.effective`,default:``},"charset.effective":{kind:`input`,path:`charset.effective`,default:``},"colorCompatibility.effective":{kind:`input`,path:`colorCompatibility.effective`,default:``},"autoWrap.effective":{kind:`input`,path:`autoWrap.effective`,type:`boolean`,default:!0},"padding.effective":{kind:`input`,path:`padding.effective`,type:`number`,default:1},"updateNotice.effective":{kind:`input`,path:`updateNotice.effective`,type:`boolean`,default:!0},"term.cols":{kind:`input`,path:`term.cols`,type:`number`,default:80},"git.repoUrl":{kind:`input`,path:`git.repoUrl`,default:``}},vb={theme:{configKey:`palette`,sessionKey:`theme`,effectiveVar:`theme.effective`,label:`🎨`},preset:{configKey:`preset`,sessionKey:`preset`,effectiveVar:`preset.effective`,label:`▦`},look:{configKey:`look`,sessionKey:`look`,effectiveVar:`look.effective`,label:`◐`},style:{configKey:`style`,sessionKey:`style`,effectiveVar:`style.effective`,label:`✦`},progression:{configKey:`progression`,sessionKey:`progression`,effectiveVar:`progression.effective`,label:`🎼`},charset:{configKey:`charset`,sessionKey:`charset`,effectiveVar:`charset.effective`,label:`🔣`},colorCompatibility:{configKey:`colorCompatibility`,sessionKey:`colorCompatibility`,effectiveVar:`colorCompatibility.effective`,label:`🌈`},autoWrap:{configKey:`autoWrap`,sessionKey:`autoWrap`,effectiveVar:`autoWrap.effective`,label:`wrap`},padding:{configKey:`padding`,sessionKey:`padding`,effectiveVar:`padding.effective`,label:`padding`},updateNotice:{configKey:`updateNotice`,sessionKey:`updateNotice`,effectiveVar:`updateNotice.effective`,label:`update notice`}},yb=Object.values(vb),bb=new Map(yb.map(e=>[e.configKey,e.effectiveVar])),xb=new Map(yb.map(e=>[e.sessionKey,e.effectiveVar])),Sb=new Map(Object.keys(vb).map(e=>[vb[e].sessionKey,e]));function Cb(e,t,n){let r=new Set,i=e=>{for(let t of av(e??``,n).keys())r.add(t)};for(let t of Object.values(e.segments))i(t.template),i(t.bg),i(t.fg),i(t.when);for(let e of t)for(let t of js(e))i(t.when);for(let t of Object.values(e.variables))t.kind===`template`&&i(t.template),t.kind===`state`&&r.add(eb);for(let t of Object.values(e.actions)){r.add(eb),`copy`in t&&i(t.copy),`open`in t&&i(t.open);let e=`set`in t?xb.get(t.set):void 0,n=`persist`in t?bb.get(t.persist):void 0;e!==void 0&&r.add(e),n!==void 0&&r.add(n)}return r}function wb(e,t,n){let r=dv({...n,variables:{...n.variables,...e.variables},segments:{...n.segments,...e.segments}}),i={};for(let a of Cb(e,t,n.helpers)){if(uv(a,r))continue;let e=_b[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 Tb=new Map,Eb=new Map;function Db(e){let t=kb(e);if(t===null)throw Error(`Palette "${e}" did not resolve in the theme registry — allowed names and the registry are inconsistent`);return t}function Ob(e,t){return e===`bar`?t:Db(e)}function kb(e){let t=Tb.get(e);if(t!==void 0)return t;let n=xr(e);return n===null?null:(Tb.set(e,n),n)}function Ab(e,t){let n=`${e.name} ${t.hueShift} ${t.chromaScale} ${t.lightnessScale} ${t.lightnessShift}`,r=Eb.get(n);if(r!==void 0)return r;let i=kr(e,t);return Eb.set(n,i),i}function jb(e){let t=kb(e);return t===null?null:{kind:`decided`,name:e,value:t}}function Mb(e,t){let n=jb(e);return n===null?(t(`globals.palette rendered "${Wa}": "${e}" names no installed theme${Ua(e)}`),Pb()):n}function Nb(e,t,n){return $a(e,t,n,Pb(),jb)}function Pb(){return jb(Wa)}function Fb(e){return eo(Nb(void 0,null,e),()=>Wa,Pb).value}const Ib=new Map;function Lb(e,t,n){Ib.set(e,{permanent:!0,resolve:t,paletteOf:n})}Lb(`themes`,()=>Ka(),e=>Db(e));const Rb=`placementThemes`;Lb(Rb,qa,(e,t)=>Ob(e,t.palette)),Lb(`styles`,()=>ao),Lb(`progressions`,()=>vo),Lb(`charsets`,()=>co),Lb(`colorCompatibilities`,()=>po);function zb(e){return new Map([[`looks`,{members:Object.keys(e.looks),paletteOf:(t,n)=>Ab(n.basePalette,e.looks[t])}],[`presets`,{members:b_(e.presets)}]])}function Bb(e){return[...new Set([...Ib.keys(),...e.keys()])]}function Vb(e,t){if(typeof e!=`string`)return{members:e};let n=t.get(e);if(n)return n;let r=Ib.get(e);if(r)return{members:r.resolve(),paletteOf:r.paletteOf};throw Error(`unknown option domain "${e}" (have: ${Bb(t).join(`, `)})`)}function Hb(e){return{label:e.label,domain:Ub(e.domain)}}function Ub(e){return e===`theme`?{from:Rb}:e===`bool`||`min`in e?e:{from:e}}function Wb(e,t,n,r){let i=qc(e.label),{domain:a}=e;if(a===`bool`)return{kind:`inline`,template:`{{ action "${r}" "☑ ${i}" "☐ ${i}" }}`,actions:{[r]:{set:t,cycle:[...Co]}}};if(`from`in a)return{kind:`ring`,template:`{{ carousel "${r}" }}`,actions:{[r]:{set:t,from:a.from}}};let o=e=>({set:t,min:a.min,max:a.max,by:e});return{kind:`inline`,template:`{{ action "${r}.down" "◀" }} {{ "${i}" }} {{ .${n} }} {{ action "${r}.up" "▶" }}`,actions:{[`${r}.down`]:o(-a.step),[`${r}.up`]:o(a.step)}}}const Gb=/^segments\.([^.]+)\.palette$/,Kb=/^presets\.(.+)\.root$/,qb=/^presets\.(.+)\.globals\.([^.]+)$/;function Jb(e){return`presets.${e}.root`}function Yb(e,t){return`presets.${e}.globals.${t}`}function Xb(e){if(Tl(e))return{scope:`globals`,field:e};let t=Gb.exec(e);if(t)return{scope:`segment-palette`,segment:t[1]};let n=qb.exec(e);if(n&&vl(n[2]))return{scope:`preset-globals`,preset:n[1],field:n[2]};let r=Kb.exec(e);return r?{scope:`preset-root`,preset:r[1]}:null}function Zb(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 Qb=`open`;function $b(e,t,n,r){let i={variable:e,key:e,member:Qb};return r.variables[e]=Qc(e,Uc),r.actions[e]=$c(e,Qb),r.segments[e]={template:Zc(e,`(?)`,`✕`),...ex(n)},Jc(e,i,{kind:`container`,direction:`horizontal`,children:t.map((t,n)=>{let i=`${e}.${n}`;return r.segments[i]={template:t},{kind:`segment`,name:i}})},`drop`)}function ex(e){let[t,...n]=e;return t===void 0?{}:{when:Yc(t,...n)}}const tx={help:[`-h`,`--help`],version:[`-V`,`--version`]},nx=[`✚ inserts`,`🚫 removes`,`⚙ configures`,`↺ resets layout`],rx=`
86
+ Use 'override' annotation for methods overridden by subclass.`)}}var na=ca(0),ra=function(){var e=!1,t={};return Object.defineProperty(t,`0`,{set:function(){e=!0}}),Object.create(t)[0]=1,e===!1}(),ia=0,aa=function(){};function oa(e,t){Object.setPrototypeOf?Object.setPrototypeOf(e.prototype,t):e.prototype.__proto__===void 0?e.prototype=t:e.prototype.__proto__=t}oa(aa,Array.prototype);var sa=function(e){function t(t,n,r,i){var a;return r===void 0&&(r=`ObservableArray@`+h()),i===void 0&&(i=!1),a=e.call(this)||this,ha(function(){var e=new Oi(r,n,i,!0);e.proxy_=a,ee(a,k,e),t&&t.length&&a.spliceWithArray(0,0,t),ra&&Object.defineProperty(a,`0`,na)}),a}O(t,e);var n=t.prototype;return n.concat=function(){this[k].atom_.reportObserved();var e=[...arguments];return Array.prototype.concat.apply(this.slice(),e.map(function(e){return Fi(e)?e.slice():e}))},n[Symbol.iterator]=function(){var e=this,t=0;return xa({next:function(){return t<e.length?{value:e[t++],done:!1}:{done:!0,value:void 0}}})},pe(t,[{key:`length`,get:function(){return this[k].getArrayLength_()},set:function(e){this[k].setArrayLength_(e)}},{key:Symbol.toStringTag,get:function(){return`Array`}}])}(aa);Object.entries(Ai).forEach(function(e){var t=e[0],n=e[1];t!==`concat`&&C(sa.prototype,t,n)});function ca(e){return{enumerable:!1,configurable:!0,get:function(){return this[k].get_(e)},set:function(t){this[k].set_(e,t)}}}function la(e){s(sa.prototype,``+e,ca(e))}function ua(e){if(e>ia){for(var t=ia;t<e+100;t++)la(t);ia=e}}ua(1e3);function da(e,t,n){return new sa(e,t,n)}function fa(e,t){if(typeof e==`object`&&e){if(Fi(e))return t!==void 0&&n(23),e[k].atom_;if(Gi(e))return e.atom_;if(Bi(e)){if(t===void 0)return e.keysAtom_;var r=e.data_.get(t)||e.hasMap_.get(t);return r||n(25,t,ma(e)),r}if($i(e)){if(!t)return n(26);var i=e[k].values_.get(t);return i||n(27,t,ma(e)),i}if(Me(e)||tn(e)||z(e))return e}else if(v(e)&&z(e[k]))return e[k];n(28)}function pa(e,t){if(e||n(29),t!==void 0)return pa(fa(e,t));if(Me(e)||tn(e)||z(e)||Bi(e)||Gi(e))return e;if(e[k])return e[k];n(24,e)}function ma(e,t){var n;if(t!==void 0)n=fa(e,t);else if(cr(e))return e.name;else n=$i(e)||Bi(e)||Gi(e)?pa(e):fa(e);return n.name_}function ha(e){var t=I(),n=Xt(!0);An();try{return e()}finally{jn(),Zt(n),mn(t)}}var ga=c.toString;function _a(e,t,n){return n===void 0&&(n=-1),va(e,t,n)}function va(e,t,n,r,i){if(e===t)return e!==0||1/e==1/t;if(e==null||t==null)return!1;if(e!==e)return t!==t;var a=typeof e;if(a!==`function`&&a!==`object`&&typeof t!=`object`)return!1;var o=ga.call(e);if(o!==ga.call(t))return!1;switch(o){case`[object RegExp]`:case`[object String]`:return``+e==``+t;case`[object Number]`:return+e==+e?+e==0?1/e==1/t:+e==+t:+t!=+t;case`[object Date]`:case`[object Boolean]`:return+e==+t;case`[object Symbol]`:return typeof Symbol<`u`&&Symbol.valueOf.call(e)===Symbol.valueOf.call(t);case`[object Map]`:case`[object Set]`:n>=0&&n++;break}e=ya(e),t=ya(t);var s=o===`[object Array]`;if(!s){if(typeof e!=`object`||typeof t!=`object`)return!1;var c=e.constructor,l=t.constructor;if(c!==l&&!(v(c)&&c instanceof c&&v(l)&&l instanceof l)&&`constructor`in e&&`constructor`in t)return!1}if(n===0)return!1;n<0&&(n=-1),r||=[],i||=[];for(var u=r.length;u--;)if(r[u]===e)return i[u]===t;if(r.push(e),i.push(t),s){if(u=e.length,u!==t.length)return!1;for(;u--;)if(!va(e[u],t[u],n-1,r,i))return!1}else{var d=Object.keys(e),f=d.length;if(Object.keys(t).length!==f)return!1;for(var p=0;p<f;p++){var m=d[p];if(!(D(t,m)&&va(e[m],t[m],n-1,r,i)))return!1}}return r.pop(),i.pop(),!0}function ya(e){return Fi(e)?e.slice():ne(e)||Bi(e)||w(e)||Gi(e)?Array.from(e.entries()):e}var ba=i().Iterator?.prototype||{};function xa(e){return e[Symbol.iterator]=Sa,Object.assign(Object.create(ba),e)}function Sa(){return this}function Ca(e){return e instanceof Object&&typeof e.annotationType_==`string`&&v(e.make_)&&v(e.extend_)}[`Symbol`,`Map`,`Set`].forEach(function(e){i()[e]===void 0&&n(`MobX requires global '`+e+`' to be available or polyfilled`)}),typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__==`object`&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:Jn,extras:{getDebugName:ma},$mobx:k}),e.$mobx=k,e.FlowCancellationError=Ar,e.ObservableMap=zi,e.ObservableSet=Wi,e.Reaction=Ln,e._allowStateChanges=Yt,e._allowStateChangesInsideComputed=sr,e._allowStateReadsEnd=gn,e._allowStateReadsStart=hn,e._autoAction=or,e._endAction=Jt,e._getAdministration=pa,e._getGlobalState=Cn,e._interceptReads=Rr,e._isComputingDerivation=F,e._resetGlobalState=wn,e._startAction=qt,e.action=ar,e.autorun=lr,e.comparer=Re,e.computed=Bt,e.configure=Sr,e.createAtom=Ne,e.defineProperty=H,e.entries=Yr,e.extendObservable=Cr,e.flow=Pr,e.flowResult=Ir,e.get=$r,e.getAtom=fa,e.getDebugName=ma,e.getDependencyTree=wr,e.getObserverTree=Er,e.has=Qr,e.intercept=zr,e.isAction=cr,e.isBoxedObservable=N,e.isComputed=Hr,e.isComputedProp=Ur,e.isFlow=Lr,e.isFlowCancellationError=jr,e.isObservable=Gr,e.isObservableArray=Fi,e.isObservableMap=Bi,e.isObservableObject=$i,e.isObservableProp=Kr,e.isObservableSet=Gi,e.keys=qr,e.makeAutoObservable=wi,e.makeObservable=Si,e.observable=j,e.observe=ti,e.onBecomeObserved=gr,e.onBecomeUnobserved=_r,e.onReactionError=Rn,e.override=We,e.ownKeys=ei,e.reaction=fr,e.remove=Zr,e.runInAction=sr,e.set=Xr,e.spy=Jn,e.toJS=oi,e.trace=si,e.transaction=li,e.untracked=pn,e.values=Jr,e.when=ui})),gv=me(((e,t)=>{process.env.NODE_ENV===`production`?t.exports=mv():t.exports=hv()}))();function _v(e){if(Array.isArray(e))return Object.freeze(e.map(_v));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]=_v(r);return Object.freeze(t)}return e}function vv(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 yv(e){return typeof e==`string`?e:String(e)}function bv(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 xv(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 Sv(e,t){if(!(e instanceof U))throw TypeError(`template function expected a RichText fragment, got ${typeof e==`object`?Object.prototype.toString.call(e):typeof e}`);let n=e.copy();return n.style=Cv(e.style).add(t),n}function Cv(e){if(e instanceof V)return e;try{return V.parse(e)}catch(t){throw t instanceof Rr?TypeError(`template function cannot style a fragment whose base style "${e}" is not a style definition: a style name resolves only against the theme of a render`,{cause:t}):t}}function wv(e){return{fn:(t=>Sv(t,e)),argTypes:[`liftable`],arity:{kind:`exact`},returnType:`T`}}function Tv(e){return{fn:((t,n)=>Sv(n,new V({[e]:hn.parse(t)}))),argTypes:[`string`,`liftable`],arity:{kind:`exact`},returnType:`T`}}function Ev(e,t){return new V({[e]:t})}function Dv(){let e={};for(let t of Fr)e[t]=wv(Ev(t,!0)),e[`not_${t}`]=wv(Ev(t,!1));for(let[t,n]of Object.entries(Lr))e[t]=wv(Ev(n,!0));return e}const Ov={fn:((e,t)=>Sv(t,V.parse(e))),argTypes:[`string`,`liftable`],arity:{kind:`exact`},returnType:`T`},kv={fn:((e,t)=>Sv(t,new V({link:e}))),argTypes:[`string`,`liftable`],arity:{kind:`exact`},returnType:`T`};function Av(){return{fg:Tv(`color`),bg:Tv(`bgcolor`),...Dv(),link:kv,style:Ov}}function jv(e,t){if(!qn.test(e.trim()))throw TypeError(`${t} expected a color (#RRGGBB or #RRGGBBAA), got ${JSON.stringify(e)} — to use a palette name here, wrap it: ${t} (color ${JSON.stringify(e)}) …`);return Jn(e)}function Mv(e,t){return{fn:t,argTypes:e,arity:{kind:`exact`},returnType:`string`}}function Nv(e,t,n,r){let i=r===void 0||e>=r.min&&e<=r.max;if(!Number.isFinite(e)||!i){let i=r===void 0?`a finite number`:`within ${r.min}..${r.max} (${r.note})`;throw RangeError(`${t}'s ${n} must be ${i}, got ${e}`)}return e}const Pv=Mv([`string`,`int`],((e,t)=>tr(jv(e,`darken`),t).hex)),Fv=Mv([`string`,`int`],((e,t)=>tr(jv(e,`lighten`),-t).hex)),Iv={min:0,max:100,note:`0 = from, 100 = toward`},Lv=Mv([`string`,`string`,`float`],((e,t,n)=>Cn(jv(e,`mix`),jv(t,`mix`),Nv(n,`mix`,`percentage`,Iv)/100).hex)),Rv={min:1,max:21,note:`4.5 = AA body text, 3 = AA large text`},zv=Mv([`string`],(e=>nr(jv(e,`contrastOn`)).hex)),Bv=e=>Mv([`string`,`string`,`float`],((t,n,r)=>rr(jv(t,`readableOn`),jv(n,`readableOn`),Nv(r,`readableOn`,`ratio`,Rv),e()).hex)),Vv={hueShift:`shiftHue`,chromaScale:`scaleChroma`,lightnessScale:`scaleLightness`,lightnessShift:`shiftLightness`};function Hv(){let e={};for(let[t,n]of Object.entries(Vv)){let r=t;e[n]=Mv([`string`,`float`],((e,t)=>{let i={...In,[r]:Nv(t,n,`amount`)};return B.fromRgba(jv(e,n)).applyKey(i).toRgba().hex}))}return e}function Uv(e=()=>F.TRUECOLOR){return{darken:Pv,lighten:Fv,mix:Lv,contrastOn:zv,readableOn:Bv(e),...Hv()}}function Wv(e,t){if(e.length%2!=0)throw RangeError(`ramp's last stop (position ${String(e[e.length-1])}) has no color — stops are <position> <color> pairs`);let n=[];for(let r=0;r<e.length;r+=2)n.push({at:e[r],color:Yn(t,e[r+1])});return n}function Gv(e){return{color:{fn:(t=>Yn(e(),t).hex),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},ramp:{fn:((t,n,...r)=>new Nr(Mr(n),Wv(r,e())).at(t).hex),argTypes:[`float`,`string`],arity:{kind:`alternating`,minimum:4},returnType:`string`}}}function Kv(e){return{...Av(),...Uv(e)}}new V({color:`red`,dim:!0});const qv=/^(?:(?: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,Jv=/^(?<family>opus|sonnet|haiku)\s+(?<major>\d+)(?:\.(?<minor>\d))?$/i;function Yv(e){if(!e)return`Claude`;let t=e.trim().replace(/\s*\([^)]*\)\s*$/,``).replace(/\s*\[[^\]]*\]\s*$/,``).trim(),n=t.match(qv);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(Jv);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 Xv(e){let t=e.match(Jv);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 Zv(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 Qv(e){return e.toLocaleString()}function $v(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 ey(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 ty=[`▁`,`▂`,`▃`,`▄`,`▅`,`▆`,`▇`,`█`],ny=ty.length;function ry(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*(ny-1));o+=ty[t]}return o}function iy(e){let t=[];for(let n of e.split(`,`)){let e=n.trim();if(e===``)continue;let r=Number(e);if(!Number.isFinite(r))throw TypeError(`sparkline: non-numeric series element ${JSON.stringify(n)}`);t.push(r)}return t}function ay(e,t,n){if(n.length!==0)throw Error(`${e}: takes at most ${t.length} optional argument${t.length===1?``:`s`} (${t.join(`, `)}), got ${t.length+n.length}`)}const oy=Ka(),sy=[...ao];function cy(){return{basename:{fn:e=>l(e),argTypes:[`string`],arity:{kind:`exact`}},dirname:{fn:e=>u(e),argTypes:[`string`],arity:{kind:`exact`}},abbreviatePath:{fn:e=>Zv(e),argTypes:[`string`],arity:{kind:`exact`}},int:{fn:e=>Math.trunc(bv(e)),argTypes:[`value`],arity:{kind:`exact`}},string:{fn:e=>yv(e),argTypes:[`value`],arity:{kind:`exact`}},bool:{fn:e=>xv(e),argTypes:[`value`],arity:{kind:`exact`}},urlEncode:{fn:e=>encodeURIComponent(e),argTypes:[`string`],arity:{kind:`exact`}},themes:{fn:()=>oy,argTypes:[],arity:{kind:`exact`}},styles:{fn:()=>sy,argTypes:[],arity:{kind:`exact`}},sparkline:{fn:(e,t,...n)=>(ay(`sparkline`,[`width`],n),ry(iy(e),t)),argTypes:[`string`,`int`],arity:{kind:`variadic`}},cascade:{fn:(e,...t)=>ey(e,$v(t)),argTypes:[`float`,`string`],arity:{kind:`variadic`}}}}function ly(e=()=>new Date){return{minutesUntilReset:{fn:t=>Math.round(Math.max(0,t*1e3-e().getTime())/6e4),argTypes:[`int`],arity:{kind:`exact`}},formatInteger:{fn:e=>Qv(e),argTypes:[`int`],arity:{kind:`exact`}},round:{fn:e=>Math.round(e),argTypes:[`float`],arity:{kind:`exact`}},formatModelName:{fn:e=>Yv(e),argTypes:[`string`],arity:{kind:`exact`}},shortenModelName:{fn:e=>Xv(e),argTypes:[`string`],arity:{kind:`exact`}}}}function uy(e,t=()=>new Date,n){return sp({fromString:e=>new U(e),toString:e=>e.plain,isT:e=>e instanceof U,clock:t,missingKey:`error`,funcs:{...Xm(),...c_(),...Ih(),...ig(),...Hm(t),...Mp(),...uh(),...Kv(n),...cy(),...ly(t),...e??{}}})}function dy(e){return fy(e,new Set(e.names()),``)}function fy(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`?my(a,e.readDocument(a)):e.read(a);let o=`${a}.`;for(let n of t)if(n.startsWith(o))return fy(e,t,a)}})}function py(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 my(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 hy(e,t){return e?.kind===`ok`?e.value:t}function gy(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??_y(t.stderr)].filter(Boolean).join(`, `)}`)}function _y(e){return e.trim().split(`
87
+ `,1)[0]??``}function vy(e,t){if(e.kind!==`ok`)return e;let n=t(e.value);return n===null?Y:J(n)}function yy(e){if(e.kind!==`ok`)return e;let t=e.value.trim();return t?J(t):Y}const by=/^[A-Za-z]:[\\/]/;function xy(e){let t=e.trim();if(by.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 Sy(e){return xy(e)?.host||null}function Cy(e){let t=Sy(e);return t?t===`github.com`||t.endsWith(`.github.com`)?`github`:/(^|\.)gitlab\./.test(t)?`gitlab`:null:null}function wy(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 Ty(e){return e.urls.find(e=>Ay(e)!==null)??e.urls[0]??null}function Ey(e){return e.find(e=>e.name===`origin`)??e[0]??null}function Dy(e){let t=Ey(e);return t?Ty(t):null}function Oy(e){let t=Ey(e);return t?t.urls.find(e=>Cy(e)!==null)??Ty(t):null}function ky(e){let t=(xy(e)?.path??e.replace(/[\\/]+$/,``)).split(`/`);return(t[t.length-1]??``).replace(/\.git$/,``)||null}function Ay(e){let t=xy(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 jy(e){let t=Dy(e);return t===null?null:Ay(t)}function My(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??_y(t.stderr)].filter(Boolean).join(`, `)}`)}function Ny(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Py(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 Fy(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(!Ny(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 Iy(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(!Ny(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 Ly(e){try{let t=r.statSync(e);return{key:`${t.dev}:${t.ino}`,stamp:`${t.mtimeMs}:${t.size}`}}catch{return null}}var Ry=class{isGitRepo(e){try{return r.existsSync(c.join(e,`.git`))}catch{return!1}}async execGitAsync(e,t){return De({bin:`git`,args:[...e],cwd:t.cwd,env:{...process.env,GIT_OPTIONAL_LOCKS:`0`},timeoutMs:t.timeout,category:`git`})}async resolveEffectiveGitDir(e,t){return this.isWorktree(e)?J(e):t&&this.isGitRepo(t)?J(t):this.isGitRepo(e)?J(e):this.findGitRoot(e)}async findGitRoot(e){let t=c.resolve(e);for(;;){if(this.isGitRepo(t))return J(t);let e=c.dirname(t);if(e===t)return Y;t=e}}async getGitInfo(e,t={},n){try{return await this.computeGitInfo(e,t,n)}catch(e){return X(`git: ${e instanceof Error?e.message:String(e)}`)}}async computeGitInfo(e,t={},n){let r,i=this.isWorktree(e);if(i)r=e;else if(n&&this.isGitRepo(n))r=n;else if(this.isGitRepo(e))r=e;else{let t=await this.findGitRoot(e);if(t.kind!==`ok`)return t;r=t.value}let a=await this.getCoreAsync(r);if(a.kind!==`ok`)return a;let o={branch:a.value.branch,status:a.value.status,aheadBehind:a.value.aheadBehind};t.showWorkingTree&&(o.workingTree=a.value.workingTree),t.showSha&&(o.sha=vy(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=vy(s,e=>this.repoNameFrom(e,r)),o.isWorktree=i),s!==void 0&&t.showRepoUrl&&(o.repoUrl=vy(s,jy)),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 yy(gy(`git describe --tags`,await this.execGitAsync([`describe`,`--tags`,`--abbrev=0`],{cwd:e,timeout:2e3}),`absent`))}async timeSinceCommit(e,t){return t.kind===`ok`?vy(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=yy(gy(`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=Ly(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=gy(`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`?wy(t.value):[])}repoNameFrom(e,t){let n=Dy(e);return(n===null?null:ky(n))??c.basename(t)}async getRepoRemoteUrl(e){let t=await this.getRemotesAsync(e);if(t.kind!==`ok`)return t;let n=Oy(t.value);return n===null?Y:J(n)}async execForgeAsync(e,t,n){return De({bin:e,args:[...t],cwd:n.cwd,env:{...process.env},timeoutMs:n.timeout,category:`forge`})}async resolvePullRequest(e,t){let n=Cy(t);return n===`github`?My(`gh pr view`,await this.execForgeAsync(`gh`,[`pr`,`view`,`--json`,`number,state,url`],{cwd:e,timeout:5e3}),/no (open )?pull requests? found/i,Fy):n===`gitlab`?My(`glab mr view`,await this.execForgeAsync(`glab`,[`mr`,`view`,`--output`,`json`],{cwd:e,timeout:5e3}),/no (open )?merge requests? (found|available)/i,Iy):Y}isWorktree(e){try{let t=c.join(e,`.git`);return!!(r.existsSync(t)&&r.statSync(t).isFile())}catch{return!1}}async getCoreAsync(e){O(`[GIT-EXEC] Running git status --porcelain=v2 in ${e}`);let t=gy(`git status --porcelain=v2 --branch`,await this.execGitAsync([`status`,`--porcelain=v2`,`--branch`],{cwd:e,timeout:2e3}),`failed`);return t.kind===`ok`?J(Py(t.value)):t}};const zy=(e,t)=>O(t);var By=class{slots=new Map;maxWatchers;counters;logger;closed=!1;constructor(e={}){this.maxWatchers=e.maxWatchers??128,this.counters=e.counters,this.logger=e.logger??zy}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()}},Vy=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 Hy=(e,t)=>O(t),Uy={showSha:!0,showStashCount:!0};function Wy(e){let t=Object.keys(e).sort(),n={};for(let r of t)n[r]=e[r];return JSON.stringify(n)}function Gy(e){let t=t=>{try{return r.statSync(c.join(e,t)).mtimeMs}catch{return 0}};return{head:t(`HEAD`),index:t(`index`)}}function Ky(e,t){return e.head!==t.head||e.index!==t.index}function qy(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 Jy=class extends Ry{entries=new Map;subscribersByRepo=new Map;fetchInFlight=new Map;resolutions=new Map;prCache=new Map;prFetchInFlight=new Map;refreshes=new Vy;hits=0;misses=0;invalidations=0;inner;ttlMs;maxEntries;watchers;ownsWatchers;logger;sanityTimer=null;constructor(e={}){super(),this.inner=e.inner??new Ry,this.ttlMs=e.ttlMs??3e4,this.maxEntries=e.maxEntries??64,this.logger=e.logger??Hy,e.watchers?(this.watchers=e.watchers,this.ownsWatchers=!1):(this.watchers=new By({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}|${Wy(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=Gy(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}`,qy(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}`,qy(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,{...Uy});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,{...Uy}),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=Gy(this.inner.resolveGitDir(t.repoRoot)),e.set(t.repoRoot,n)),Ky(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 Yy=/\r\n|\r|\n/g,Xy=e=>J(e.replace(Yy,` `).trim());function Zy(e){return t=>{let n=e.exec(t)?.[1];return n===void 0?X(`regex no-match`):J(n.replace(Yy,` `))}}const Qy=e=>{try{return J(JSON.parse(e))}catch(e){return X(`JSON parse failed: ${e.message}`)}};function $y(e,t){return t.kind!==`ttl`||t.durationMs>=500?t:(O(`declareShell "${e}": ttl ${t.durationMs}ms below floor 500ms; clamping`),{kind:`ttl`,durationMs:500})}function eb(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 tb=`session.id`;function nb(e,t,n){return{where:`output of "${e}" in ${t}`,read:async()=>{let r=await De({bin:`/bin/sh`,args:[`-c`,e],cwd:t,category:`user-shell`,signal:n});if(!r.ok&&r.reason===`aborted`)throw n.reason;return r.ok?J(r.stdout):X(`shell "${e}" ${r.exitCode===null?[r.reason,r.error].filter(e=>e!==void 0).join(`: `):`exited with code ${r.exitCode}`} in ${t}`)}}}function rb(e,t,n){return{where:`"${e}"`,read:async()=>{try{let r=await x(e,{encoding:`utf8`,signal:n});return J(t===`first-line`?r.split(/\r?\n/)[0]??``:r)}catch{if(n.aborted)throw n.reason;return X(`file unreadable: ${e}`)}}}}function ib(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 ab=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],ob=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],sb=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],cb=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`];function lb(e,t){let n=[[`2006`,e=>String(e.getFullYear())],[`January`,e=>ab[e.getMonth()]],[`Monday`,e=>sb[e.getDay()]],[`Jan`,e=>ob[e.getMonth()]],[`Mon`,e=>cb[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 ub={branch:`string`,sha:`string`,dirty:`boolean`,ahead:`number`,behind:`number`,stash:`number`};function db(e,t,n,r){if(e===null){if(n!==void 0)return n;let e=ub[t];try{return hb(r,e)}catch{return gb(e)}}switch(t){case`branch`:return e.branch===`detached`?``:e.branch;case`sha`:return hy(e.sha,``);case`dirty`:return e.status!==`clean`;case`ahead`:return hy(e.aheadBehind,{ahead:0,behind:0}).ahead;case`behind`:return hy(e.aheadBehind,{ahead:0,behind:0}).behind;case`stash`:return hy(e.stashCount,0)}}var fb=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}},pb=class{buckets=new Map;subscribe(e,t){let n=this.buckets.get(e);if(!n){let t=new Set;n={timer:te(()=>{for(let e of t)e()},e),callbacks:t},this.buckets.set(e,n)}return n.callbacks.add(t),()=>this.unsubscribe(e,t)}unsubscribe(e,t){let n=this.buckets.get(e);n&&(n.callbacks.delete(t),n.callbacks.size===0&&(ee(n.timer),this.buckets.delete(e)))}dispose(){for(let{timer:e}of this.buckets.values())ee(e);this.buckets.clear()}bucketCount(){return this.buckets.size}};function mb(e,t){let n=e;for(let e of t.split(`.`)){if(typeof n!=`object`||!n)return;n=n[e]}return n}function hb(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`?yv(e):t===`number`?bv(e):xv(e)}function gb(e){return e===`number`?0:e===`boolean`?!1:``}var _b=class{inputMetas=new Map;lastErrors=new Map;watchMgr=new fb;ttlMgr=new pb;gitSubscriptions=new Map;cleanups=[];inFlight=new Map;reads=new Vy;abort=new AbortController;drawn=gv.observable.box(F.TRUECOLOR);drawnAt=()=>this.drawn.get();engine=uy(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 Jy({sanityIntervalMs:0}),this.ownsGitProvider=!0),this.sessionState=r}get variableStore(){return this.store}declareLiteral(e,t){this.store.defineBox(e,vv(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,nb(t,n.cwd,this.abort.signal),$y(e,n.cache),n.parse)}declareFile(e,t,n){this.declareSource(e,rb(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,Xy,t.default,n);case`regex`:return this.scalarPublisher(e,Zy(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=ib(n,t,r);this.noteOutcome(e,a),this.store.setBox(e,hy(a,i))}}documentPublisher(e,t,n){let r=t===void 0?Y:J(t);return this.store.defineDocument(e,r),i=>{let a=ib(i,Qy,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=dy(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 lb(t.format,e)}catch{return this.stringInitial(t.varDefault)}})(new Date));let r=this.ttlMgr.subscribe(n,()=>{try{this.store.setBox(e,lb(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=ub[t.field],r=t.varDefault===void 0?gb(n):hb(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,db(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(tb);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=mb(e,n.path),i=this.store.getType(t);if(r!==void 0)try{this.store.setBox(t,hb(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,gv.reaction)(()=>{let t=dy(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,gv.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,hb(this.defaultEmptyValue,t))}catch{this.store.setBox(e,gb(t))}}defaultFor(e){try{return hb(this.defaultEmptyValue,e)}catch{return gb(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 vb={project_dir:{kind:`input`,path:`workspace.project_dir`,default:``},[tb]:{kind:`input`,path:`session_id`,default:``},transcript_path:{kind:`input`,path:`transcript_path`,default:``},"theme.effective":{kind:`input`,path:`theme.effective`,default:``},"look.effective":{kind:`input`,path:`look.effective`,default:``},"preset.effective":{kind:`input`,path:`preset.effective`,default:``},"preset.customized":{kind:`input`,path:`preset.customized`,type:`boolean`,default:!1},"preset.bundled":{kind:`input`,path:`preset.bundled`,type:`boolean`,default:!0},"style.effective":{kind:`input`,path:`style.effective`,default:``},"progression.effective":{kind:`input`,path:`progression.effective`,default:``},"charset.effective":{kind:`input`,path:`charset.effective`,default:``},"colorCompatibility.effective":{kind:`input`,path:`colorCompatibility.effective`,default:``},"autoWrap.effective":{kind:`input`,path:`autoWrap.effective`,type:`boolean`,default:!0},"padding.effective":{kind:`input`,path:`padding.effective`,type:`number`,default:1},"updateNotice.effective":{kind:`input`,path:`updateNotice.effective`,type:`boolean`,default:!0},"term.cols":{kind:`input`,path:`term.cols`,type:`number`,default:80},"git.repoUrl":{kind:`input`,path:`git.repoUrl`,default:``}},yb={theme:{configKey:`palette`,sessionKey:`theme`,effectiveVar:`theme.effective`,label:`🎨`},preset:{configKey:`preset`,sessionKey:`preset`,effectiveVar:`preset.effective`,label:`▦`},look:{configKey:`look`,sessionKey:`look`,effectiveVar:`look.effective`,label:`◐`},style:{configKey:`style`,sessionKey:`style`,effectiveVar:`style.effective`,label:`✦`},progression:{configKey:`progression`,sessionKey:`progression`,effectiveVar:`progression.effective`,label:`🎼`},charset:{configKey:`charset`,sessionKey:`charset`,effectiveVar:`charset.effective`,label:`🔣`},colorCompatibility:{configKey:`colorCompatibility`,sessionKey:`colorCompatibility`,effectiveVar:`colorCompatibility.effective`,label:`🌈`},autoWrap:{configKey:`autoWrap`,sessionKey:`autoWrap`,effectiveVar:`autoWrap.effective`,label:`wrap`},padding:{configKey:`padding`,sessionKey:`padding`,effectiveVar:`padding.effective`,label:`padding`},updateNotice:{configKey:`updateNotice`,sessionKey:`updateNotice`,effectiveVar:`updateNotice.effective`,label:`update notice`}},bb=Object.values(yb),xb=new Map(bb.map(e=>[e.configKey,e.effectiveVar])),Sb=new Map(bb.map(e=>[e.sessionKey,e.effectiveVar])),Cb=new Map(Object.keys(yb).map(e=>[yb[e].sessionKey,e]));function wb(e,t,n){let r=new Set,i=e=>{for(let t of ov(e??``,n).keys())r.add(t)};for(let t of Object.values(e.segments))i(t.template),i(t.bg),i(t.fg),i(t.when);for(let e of t)for(let t of js(e))i(t.when);for(let t of Object.values(e.variables))t.kind===`template`&&i(t.template),t.kind===`state`&&r.add(tb);for(let t of Object.values(e.actions)){r.add(tb),`copy`in t&&i(t.copy),`open`in t&&i(t.open);let e=`set`in t?Sb.get(t.set):void 0,n=`persist`in t?xb.get(t.persist):void 0;e!==void 0&&r.add(e),n!==void 0&&r.add(n)}return r}function Tb(e,t,n){let r=fv({...n,variables:{...n.variables,...e.variables},segments:{...n.segments,...e.segments}}),i={};for(let a of wb(e,t,n.helpers)){if(dv(a,r))continue;let e=vb[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 Eb=new Map,Db=new Map;function Ob(e){let t=Ab(e);if(t===null)throw Error(`Palette "${e}" did not resolve in the theme registry — allowed names and the registry are inconsistent`);return t}function kb(e,t){return e===`bar`?t:Ob(e)}function Ab(e){let t=Eb.get(e);if(t!==void 0)return t;let n=xr(e);return n===null?null:(Eb.set(e,n),n)}function jb(e,t){let n=`${e.name} ${t.hueShift} ${t.chromaScale} ${t.lightnessScale} ${t.lightnessShift}`,r=Db.get(n);if(r!==void 0)return r;let i=kr(e,t);return Db.set(n,i),i}function Mb(e){let t=Ab(e);return t===null?null:{kind:`decided`,name:e,value:t}}function Nb(e,t){let n=Mb(e);return n===null?(t(`globals.palette rendered "${Wa}": "${e}" names no installed theme${Ua(e)}`),Fb()):n}function Pb(e,t,n){return $a(e,t,n,Fb(),Mb)}function Fb(){return Mb(Wa)}function Ib(e){return eo(Pb(void 0,null,e),()=>Wa,Fb).value}const Lb=new Map;function Rb(e,t,n){Lb.set(e,{permanent:!0,resolve:t,paletteOf:n})}Rb(`themes`,()=>Ka(),e=>Ob(e));const zb=`placementThemes`;Rb(zb,qa,(e,t)=>kb(e,t.palette)),Rb(`styles`,()=>ao),Rb(`progressions`,()=>vo),Rb(`charsets`,()=>co),Rb(`colorCompatibilities`,()=>po);function Bb(e){return new Map([[`looks`,{members:Object.keys(e.looks),paletteOf:(t,n)=>jb(n.basePalette,e.looks[t])}],[`presets`,{members:b_(e.presets)}]])}function Vb(e){return[...new Set([...Lb.keys(),...e.keys()])]}function Hb(e,t){if(typeof e!=`string`)return{members:e};let n=t.get(e);if(n)return n;let r=Lb.get(e);if(r)return{members:r.resolve(),paletteOf:r.paletteOf};throw Error(`unknown option domain "${e}" (have: ${Vb(t).join(`, `)})`)}function Ub(e){return{label:e.label,domain:Wb(e.domain)}}function Wb(e){return e===`theme`?{from:zb}:e===`bool`||`min`in e?e:{from:e}}function Gb(e,t,n,r){let i=qc(e.label),{domain:a}=e;if(a===`bool`)return{kind:`inline`,template:`{{ action "${r}" "☑ ${i}" "☐ ${i}" }}`,actions:{[r]:{set:t,cycle:[...Co]}}};if(`from`in a)return{kind:`ring`,template:`{{ carousel "${r}" }}`,actions:{[r]:{set:t,from:a.from}}};let o=e=>({set:t,min:a.min,max:a.max,by:e});return{kind:`inline`,template:`{{ action "${r}.down" "◀" }} {{ "${i}" }} {{ .${n} }} {{ action "${r}.up" "▶" }}`,actions:{[`${r}.down`]:o(-a.step),[`${r}.up`]:o(a.step)}}}const Kb=/^segments\.([^.]+)\.palette$/,qb=/^presets\.(.+)\.root$/,Jb=/^presets\.(.+)\.globals\.([^.]+)$/;function Yb(e){return`presets.${e}.root`}function Xb(e,t){return`presets.${e}.globals.${t}`}function Zb(e){if(Tl(e))return{scope:`globals`,field:e};let t=Kb.exec(e);if(t)return{scope:`segment-palette`,segment:t[1]};let n=Jb.exec(e);if(n&&vl(n[2]))return{scope:`preset-globals`,preset:n[1],field:n[2]};let r=qb.exec(e);return r?{scope:`preset-root`,preset:r[1]}:null}function Qb(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 $b=`open`;function ex(e,t,n,r){let i={variable:e,key:e,member:$b};return r.variables[e]=Qc(e,Uc),r.actions[e]=$c(e,$b),r.segments[e]={template:Zc(e,`(?)`,`✕`),...tx(n)},Jc(e,i,{kind:`container`,direction:`horizontal`,children:t.map((t,n)=>{let i=`${e}.${n}`;return r.segments[i]={template:t},{kind:`segment`,name:i}})},`drop`)}function tx(e){let[t,...n]=e;return t===void 0?{}:{when:Yc(t,...n)}}const nx={help:[`-h`,`--help`],version:[`-V`,`--version`]},rx=[`✚ inserts`,`🚫 removes`,`⚙ configures`,`↺ resets layout`],ix=`
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
- ${tx.help.join(`, `).padEnd(25)}Show this help
97
- ${tx.version.join(`, `).padEnd(25)}Print the version of this runtime (cc-candybar <version>)
96
+ ${nx.help.join(`, `).padEnd(25)}Show this help
97
+ ${nx.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
@@ -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: ${nx.join(`, `)}.
119
+ in place. In edit mode: ${rx.join(`, `)}.
120
120
 
121
121
  Subcommands:
122
122
  install One-shot setup: stages the runtime (native render
@@ -154,38 +154,38 @@ Config tooling:
154
154
  config [--json] The effective merged config. (All three query the
155
155
  running daemon; none spawn one.)
156
156
 
157
- `,ix=`${mu}live`,ax=[`☐ live`,`☑ live`],ox=`${mu}done`,sx={variable:ix,key:ix,member:`open`},cx=`and ${Xc(U_)} (not ${Xc(sx)})`,lx=`{{ ${cx} }}`;function ux(e,t){return`{{ if ${cx} }}${e}{{ else }}${t}{{ end }}`}const dx=`{{ and ${Xc(U_)} .preset.customized }}`,fx=_u,px=`${mu}addable`;function mx(e){return new Map([[px,{members:Object.keys(e.segments).filter(e=>!fx(e))}]])}function hx(e,t,n){return n.segments[e]={template:t,when:W_},{kind:`segment`,name:e}}function gx(e,t,n){let r=`${mu}${e.presetIdent}.remove.${t}`;return e.artifacts.actions[r]={persist:e.rootKey,removeSegment:n},`{{ action "${r}" "🚫" }}`}function _x(e){return`{{ if ${Xc(U_)} }}${e.join(``)}{{ end }}`}function vx(e,t){return e.reduce((e,t)=>`{{ if ${Xc(t)} }}true{{ else }}${e}{{ end }}`,t)}function yx(e){return e.flatMap(e=>[...js(e)].flatMap(e=>e.kind===`segment`&&e.opens?.ref.key===`edit.mode`?[e.opens.ref]:[]))}function bx(e,t,n){return`${V_}${e}.${t}.${n}`}function xx(e,t,n,r){let i=Ds(n),a=`${mu}${e.presetIdent}`,o=H_(e.presetIdent,i),s=`${a}.configure.${t}`;e.artifacts.actions[s]={set:R_,to:o};let c={},l=Object.entries(r).map(([r,o])=>{let s=bx(e.presetIdent,i,r),l=`${V_}p${e.presetIdent}.d${t}.${r}`;e.artifacts.variables[l]={kind:`state`,key:s,default:Ks(n.settings?.[r]??o.default)},c[r]={id:i,key:s,variable:l};let u=`${a}.setting.${t}.${r}`,d=Wb(Hb(o),s,l,u);return Object.assign(e.artifacts.actions,d.actions),e.artifacts.segments[u]={template:d.kind===`ring`?`{{ "${qc(o.label)}" }} ${d.template}`:d.template},{kind:`segment`,name:u}});return{term:`{{ action "${s}" "⚙" }}`,ref:{variable:R_,key:R_,member:o},body:{kind:`container`,direction:`vertical`,children:l},drafts:c}}const Sx=`${mu}label:`;function Cx(e){if(e.startsWith(Sx)){let t=e.slice(Sx.length);return t.slice(t.indexOf(`:`)+1)}return e.startsWith(`edit.`)?void 0:e}function wx(e,t,n,r){let i=Ds(e),a=`${Sx}${i}:${e.name}`;n.segments[a]={template:`{{ "${qc(i)}" }}`,...t.palette!==void 0&&{palette:t.palette}};let o=e.settings?.[Vs];return{...Jc(a,r.ref,r.body,`drop`,vx([r.ref],lx)),...o!==void 0&&{settings:{theme:o}},drafts:{[Vs]:r.drafts[Vs]}}}function Tx(e,t,n,r){let{presetIdent:i,artifacts:a}=e,o=`${mu}${i}.insert.${t}`,s=`${mu}${i}.insertSeg.${t}`;a.actions[o]={persist:e.rootKey,insertSegmentFrom:px,anchor:n,relation:r};let c=l_(o),l=u_(s,o,void 0),u=p_(l),d=f_(l,c);return a.variables[l]=Qc(l,Uc),a.variables[u]={kind:`state`,key:u,default:`0`},a.actions[d]=$c(l,c),a.actions[u]={set:u,int:!0},{host:s,template:`{{ $m := menu "${o}" "✚" "✕" }}{{ if ${Xc({variable:l,key:l,member:c})} }}{{ $m }}{{ else }}{{ fg (${`readableOn (color "success") (bgOf) ${Ca}`}) $m }}{{ end }}`}}function Ex(e,t){let n=[],r=e.children.findIndex(e=>e.kind===`segment`&&!fx(e.name)),i=e=>Ex(e,t);for(let[a,o]of e.children.entries()){if(o.kind===`container`){n.push(i(o));continue}let s=As(o,i);if(fx(o.name)){n.push(s);continue}let c=Ds(o),l=a===r?[Tx(t,String(t.posCounter.n++),c,`before`)]:[],u=String(t.posCounter.n++),d=Tx(t,u,c,`after`),f=gx(t,u,c),p=t.segments[o.name],m=xx(t,u,o,Hs(p)),h=_x([m.term,f]),g={kind:`container`,direction:`horizontal`,children:[...l.map(e=>hx(e.host,e.template,t.artifacts)),{...wx(o,p,t.artifacts,m),trail:h},{...s,when:ux(`false`,o.when??`true`),trail:h,drafts:m.drafts},hx(d.host,d.template,t.artifacts)]};n.push(e.direction===`vertical`?{kind:`container`,direction:`horizontal`,children:[g]}:g)}return{...e,children:n,...e.when!==void 0&&{when:vx(yx(n),ux(`true`,e.when))}}}function Dx(e,t,n,r,i,a,o){let s=`${mu}${n}.resetLayout`,c=`${mu}${n}.customized`;i.actions[s]={reset:r};let l=qc(t);return i.segments[c]={template:`{{ action "${s}" "↺ ${l} customized" }}`,when:dx},{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[a,{kind:`segment`,name:c}]},Ox(e,o)]}}function Ox(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),Ox(n,t)]}:{...e,children:[...e.children,t]}}function kx(e,t,n,r,i){let{node:a}=C_(e,t),o={presetIdent:du(t),rootKey:Jb(t),segments:e.segments,artifacts:n,posCounter:{n:0}};return Dx(Ex(a,o),t,o.presetIdent,o.rootKey,n,r,i)}function Ax(e){let t={variables:{},actions:{},segments:{}},n=$b(`${mu}help`,nx,[U_],t);t.variables[ix]=Qc(ix,Uc),t.actions[ix]=$c(ix,sx.member),t.segments[ix]={template:Zc(ix,...ax),when:W_};let r={kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:ix},n]};t.segments[ox]={template:`{{ action "${z_}" "✎ done" }}`,when:W_};let i={kind:`segment`,name:ox},a={...e.presets},o=[];for(let n of b_(e.presets)){let s=kx(e,n,t,i,r);o.push(s),a[n]={...S_(e.presets,n),root:s}}let s=wb(t,o,e);return{...e,variables:{...s,...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:a}}const jx={socket:`TMUX`,pane:`TMUX_PANE`,truecolor:`CLAUDE_CODE_TMUX_TRUECOLOR`};function Mx(e){let t=e[jx.socket]??``,n=e[jx.pane]??``;if(t===``||n===``)return null;let r=e[jx.truecolor]??``;return{socket:t.split(`,`)[0],pane:n,truecolor:r===``?null:r}}const Nx=jx.truecolor,Px=[{name:`tmuxTruecolor`,label:`tmux truecolor`,probe:({tmux:e,claudeSettings:t})=>{switch(e.kind){case`unreported`:return{ok:!1,reason:"the client reported no tmux facts — re-run `cc-candybar install` to stage a current client"};case`outside`:return{ok:!0};case`inside`:{if(e.termfeatures.kind===`failed`)return{ok:!1,reason:`tmux could not be asked: ${e.termfeatures.reason}`};if(!e.termfeatures.value.includes(`RGB`)||e.hint.truecolor!==null)return{ok:!0};let n=t.env[Nx];return typeof n==`string`&&n!==``?{ok:!1,reason:`${Nx} is set in ${t.path} — restart Claude Code to apply`}:{ok:!1,reason:`Claude Code renders the bar in 256 colours inside tmux`,fix:{kind:`claude-settings-env`,name:Nx,value:`1`}}}}}}];function Fx(e){return Px.map(t=>({check:t,verdict:t.probe(e)}))}function Ix(e){return Px.find(t=>t.name===e)}const Lx=`${hu}doctor.`;function Rx(e){let t=`${Lx}${e}.`;return{verdict:`${t}verdict`,reason:`${t}reason`,fixable:`${t}fixable`}}function zx(e){return e.flatMap(({check:e,verdict:t})=>{let n=Rx(e.name);return t.ok?[{key:n.verdict,value:`ok`},{key:n.reason,value:``},{key:n.fixable,value:So}]:[{key:n.verdict,value:`failed`},{key:n.reason,value:t.reason},{key:n.fixable,value:t.fix===void 0?So:xo}]})}const Bx={copySession:{copy:`{{ .session.id }}`},openProject:{open:`{{ .project_dir }}`},openTranscript:{open:`{{ .transcript_path }}`}};function Vx(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(Bx).map(([t,n])=>[`${e}${t}`,n]))}}const Hx=`armed`,Ux=`disarmed`;function Wx(e,t,n){let r=`${e}.arm`,i=`${e}.disarm`;return{template:`{{ if eq .${e} "${Hx}" }}{{ action "${e}" "${t.confirm}" }} {{ action "${i}" "✕" }}{{ else }}{{ action "${r}" "${t.arm}" }}{{ end }}`,actions:{[r]:{set:e,to:Hx},[i]:{set:e,to:Ux},[e]:{do:[i,...n]}},variables:{[e]:{kind:`state`,key:e,default:Ux}},disarm:i}}const Gx=RegExp(`^/[^\\s\\x00-\\x1f\\x7f-\\x9f/][^\\x00-\\x1f\\x7f-\\x9f]*$`);function Kx(e){return typeof e==`string`&&Gx.test(e)?{kind:`line`,line:e}:{kind:`refused`,reason:`a slash command is "/" then its name, e.g. "/compact" or "/model opus", on one line with no control characters, got ${JSON.stringify(e)}`}}function qx(e){let t=Kx(e);if(t.kind===`refused`)throw Error(t.reason);return t.line}const Jx=[`/compact`,`/model`],Yx=`/clear`;function Xx(e){let t=t=>`${e}${t.slice(1)}`,n=`${e}clear.slash`,r=Wx(`${e}clear`,{arm:Yx,confirm:`${Yx} ✓ confirm`},[n]);return{template:Jx.map(e=>`{{ action "${t(e)}" "${e}" }} `).join(``)+r.template,actions:{...Object.fromEntries(Jx.map(e=>[t(e),{slash:qx(e)}])),...r.actions,[n]:{slash:qx(Yx)}},variables:r.variables,disarm:r.disarm}}const Zx=`${hu}menu`,Qx=`open`,$x=`${hu}edit`,eS=`${hu}close`,tS=`${hu}toolbar`,nS=Vx(hu),rS=`${hu}commands`,iS=Xx(`${rS}.`),aS=`${hu}config`,oS=`${hu}save`,sS=`${hu}unsaved`,cS=`${hu}preset.save`,lS=`${hu}preset.delete`,uS=`${hu}resetAll`,dS=`${Zx}.toggle`,fS=`${aS}.toggle`,pS={variable:Zx,key:Zx,member:Qx},mS={variable:aS,key:aS,member:Qx},hS=`${hu}tools`,gS={variable:hS,key:hS,member:Qx},_S=[{seg:`${hu}undo`,depth:`undo`,action:{undo:!0},display:`↶ undo`},{seg:`${hu}redo`,depth:`redo`,action:{redo:!0},display:`↷ redo`}],vS=e=>`${hu}history.${e}`,yS=`${hu}doctor`,bS=`${yS}.run`,xS=e=>`${yS}.fix.${e}`,SS=e=>`${yS}.${e}`,CS=`${hu}pickers`,wS=[`{{ themePreview }}`],TS={preset:[`{{ layoutPreview }}`,`{{ action "${cS}" "⊕ save as preset" }}{{ if not .preset.bundled }} {{ action "${lS}" (printf "🗑 delete %s" .${vb.preset.effectiveVar}) }}{{ end }}`],theme:wS,look:wS,progression:[`{{ layoutPreview }}`]},ES=e=>`${hu}${e}`,DS=e=>`${hu}apply.${e}`,OS=e=>`${hu}reset.${e}`,kS=e=>`${hu}carousel.${e}`,AS=(e,t)=>`${kS(e)}.${t}`,jS=Object.keys(vb).map(e=>{let t=vb[e],n=ul(t.configKey);if(n===`text`)throw Error(`settings menu: globals.${t.configKey} is free text, which no control can change — list it in UNCONTROLLED_GLOBALS instead of SETTINGS`);let r=Wb({label:t.label,domain:n},t.sessionKey,t.effectiveVar,DS(e));return{...t,name:e,control:r,beneath:TS[e]??[]}}),MS=new Set([`preset`]),NS=jS.filter(e=>MS.has(e.name)),PS=jS.filter(e=>!MS.has(e.name));new Set(jS.flatMap(e=>[e.sessionKey,e.configKey]));const FS=Wx(uS,{arm:`⟲ reset all`,confirm:`⟲ confirm reset all`},jS.map(e=>OS(e.name))),IS=[FS,iS],LS=d_(CS),RS=e=>({variable:LS,key:LS,member:l_(DS(e))});function zS(e){let t=ES(e.name);return e.control.kind===`inline`?{kind:`segment`,name:t}:Jc(t,RS(e.name),{kind:`container`,direction:`vertical`,children:[{kind:`segment`,name:kS(e.name)},...e.beneath.map((t,n)=>({kind:`segment`,name:AS(e.name,n)}))]},`drop`)}function BS(e){return e===Zx}function VS(e){let t={kind:`segment`,name:Zx};if(e.kind===`container`&&e.direction===`vertical`){let[n,...r]=e.children;return e.when===void 0&&n!==void 0?{...e,children:[VS(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 HS(e){return US(e)>0?e:VS(e)}function US(e){let t=0;for(let n of js(e))n.kind===`segment`&&BS(n.name)&&(t+=1);return t}function WS(e,t=!1){let n=t||e.when!==void 0;return e.kind===`segment`?n&&BS(e.name)||e.opens!==void 0&&WS(e.opens.body,!0):e.children.some(e=>WS(e,n))}function GS(e){return e.kind===`segment`?BS(e.name)?Jc(e.name,pS,{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:tS},{kind:`segment`,name:rS},...NS.map(zS),{kind:`segment`,name:oS},Jc(aS,mS,{kind:`container`,direction:`horizontal`,children:[...PS.map(zS),{kind:`segment`,name:uS}]},`drop`),Jc(hS,gS,{kind:`container`,direction:`vertical`,children:[{kind:`segment`,name:yS},...Px.map(e=>({kind:`segment`,name:SS(e.name)}))]},`drop`),{kind:`segment`,name:$x},..._S.map(e=>({kind:`segment`,name:e.seg}))]},`inline`):e:KS(e)}function KS(e){return{...e,children:e.children.map(e=>GS(e))}}function qS(e){let t={variables:{[Zx]:Qc(Zx,Uc)},actions:{[dS]:$c(Zx,Qx),[Zx]:{do:[dS,...IS.map(e=>e.disarm)]},[fS]:$c(aS,Qx),[aS]:{do:[fS,FS.disarm]},[hS]:$c(hS,Qx),[bS]:{doctor:`run`},[eS]:{set:pS.key,to:Uc},[$x]:{do:[z_,eS]},...nS.actions,...iS.actions,[oS]:{save:!0},[cS]:{preset:`save`},[lS]:{preset:`delete`,name:`{{ .${vb.preset.effectiveVar} }}`}},segments:{[Zx]:{template:Zc(Zx,e,`❌`)},[tS]:{template:nS.template},[rS]:{template:iS.template},[oS]:{when:`{{ gt .${sS} 0 }}`,template:`{{ action "${oS}" (printf "💾 save %d" .${sS}) }}`},[aS]:{template:Zc(aS,`⚙ config ▸`,`⚙ config ▾`)},[hS]:{template:Zc(hS,`🧰 tools ▸`,`🧰 tools ▾`)},[yS]:{template:`{{ action "${bS}" "🩺 doctor" }}`},[$x]:{template:`{{ action "${$x}" "✎ edit" "✎ done" }}`},[uS]:{template:FS.template}}};return t.variables[sS]={kind:`input`,path:`unsaved`,type:`number`,default:0},t.variables[aS]=Qc(aS,Uc),t.variables[hS]=Qc(hS,Uc),Object.assign(t.variables,iS.variables,FS.variables),XS(t),YS(t),JS(t),t}function JS(e){for(let t of _S){let n=vS(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 YS(e){for(let t of Px){let n=Rx(t.name),r=xS(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[SS(t.name)]={when:`{{ ne .${n.verdict} "" }}`,template:`{{ if eq .${n.verdict} "ok" }}✓ ${t.label}{{ else }}✗ ${t.label} — {{ .${n.reason} }}{{ if eq .${n.fixable} "${xo}" }} {{ action "${r}" "[fix]" }}{{ end }}{{ end }}`}}}function XS(e){for(let t of jS){Object.assign(e.actions,t.control.actions);let n=OS(t.name);e.actions[n]={reset:t.configKey};let r=`{{ action "${n}" "↺" }}`;if(t.control.kind===`inline`){e.segments[ES(t.name)]={template:`${t.control.template} ${r}`};continue}let i=RS(t.name),a=f_(i.key,i.member);e.variables[i.key]=Qc(i.key,Uc),e.actions[a]=$c(i.key,i.member),e.segments[ES(t.name)]={template:`${t.label} {{ .${t.effectiveVar} }} ${Zc(a,`▸`,`▾`)} `+r},e.segments[kS(t.name)]={template:t.control.template},t.beneath.forEach((n,r)=>{e.segments[AS(t.name,r)]={template:n}})}Object.assign(e.actions,FS.actions)}function ZS(e){e.variables[R_]=Qc(R_,Uc),e.actions[z_]=$c(R_,B_)}function QS(e){let t=qS(e.globals.menuGlyph??`🍫`);ZS(t);let n={...e.presets},r=[];for(let t of b_(e.presets)){let{node:i}=C_(e,t),a=GS(HS(i));r.push(a),n[t]={...S_(e.presets,t),root:a}}let i=wb(t,r,e);return{...e,variables:{...i,...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:n}}const $S=[`set`,`persist`,`copy`,`open`,`reset`,`undo`,`redo`,`save`,`preset`,`doctor`,`ceiling`,`slash`,`do`];function eC(e){return e.ceiling===`set`?[`set`,e.to]:[`clear`]}function tC(e){return`from`in e||`int`in e||`insertSegmentFrom`in e}function nC(e,t){if(t===void 0)return{};if(!nc(t))return Z(e,`actions`,`actions must be an object, got ${rc(t)}`),{};let n=Object.create(null);for(let[r,i]of Object.entries(t)){let t=rC(e,`actions.${r}`,i);t!==null&&(n[r]=t)}return n}function Z(e,t,n){e.issues.push({path:t,message:n,line:G(e.source,t.split(`.`))})}function rC(e,t,n){if(!nc(n))return Z(e,t,`${t} must be an action object, got ${rc(n)}`),null;if(`persistWhen`in n)return Z(e,t,`${t}.persistWhen was removed: declare the \`set\` alone — a session pick is a draft until a \`{ save: true }\` action writes every unsaved setting to the config file`),null;let r=$S.filter(e=>e in n);return r.length===1?iC[r[0]](e,t,n):(Z(e,t,`action must declare exactly one of: ${$S.join(`, `)}${r.length>1?` (found: ${r.join(`, `)})`:``}`),null)}const iC={set:(e,t,n)=>IC(e,t,n,`set`,MC),persist:(e,t,n)=>IC(e,t,n,`persist`,NC),copy:aC(`copy`),open:aC(`open`),reset:oC,undo:cC(`undo`),redo:cC(`redo`),save:cC(`save`),preset:lC,doctor:uC,ceiling:dC,slash:fC,do:pC};function aC(e){return(t,n,r)=>{for(let i of Object.keys(r))i!==e&&Z(t,`${n}.${i}`,`Unknown key "${i}" on a ${e} action. Expected only: ${e}`);let i=Zs(t,n,r,e);return i===null?null:{[e]:i}}}function oC(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=mC(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 sC={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 cC(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 — ${sC[e]}), got ${K(r[e])}`),null)}}function lC(e,t,n){let r=n.preset,i=r===`save`?[`preset`]:[`preset`,`name`];for(let r of Object.keys(n))i.includes(r)||Z(e,`${t}.${r}`,`Unknown key "${r}" on a preset action. Expected only: ${i.join(`, `)}`);if(r!==`save`&&r!==`delete`)return Z(e,`${t}.preset`,`preset must be "save" or "delete", got ${K(r)}`),null;if(r===`save`)return{preset:`save`};let a=Zs(e,t,n,`name`);return a===null?null:{preset:`delete`,name:a}}function uC(e,t,n){let r=n.doctor,i=r===`run`?[`doctor`]:[`doctor`,`check`];for(let r of Object.keys(n))i.includes(r)||Z(e,`${t}.${r}`,`Unknown key "${r}" on a doctor action. Expected only: ${i.join(`, `)}`);if(r!==`run`&&r!==`fix`)return Z(e,`${t}.doctor`,`doctor must be "run" or "fix", got ${K(r)}`),null;if(r===`run`)return{doctor:`run`};let a=n.check;return typeof a!=`string`||Ix(a)===void 0?(Z(e,`${t}.check`,`doctor fix must name a check (have: ${Px.map(e=>e.name).join(`, `)}), got ${K(a)}`),null):{doctor:`fix`,check:a}}function dC(e,t,n){let r=n.ceiling,i=r===`clear`?[`ceiling`]:[`ceiling`,`to`];for(let r of Object.keys(n))i.includes(r)||Z(e,`${t}.${r}`,`Unknown key "${r}" on a ceiling action. Expected only: ${i.join(`, `)}`);if(r===`clear`)return{ceiling:`clear`};if(r!==`set`)return Z(e,`${t}.ceiling`,`ceiling must be "set" or "clear", got ${K(r)}`),null;let a=n.to;return typeof a!=`string`||a.trim()===``?(Z(e,`${t}.to`,`ceiling set needs \`to\`: a memento ceiling value such as "+100_000", "400000" or "off", got ${K(a)}`),null):{ceiling:`set`,to:a}}function fC(e,t,n){for(let r of Object.keys(n))r!==`slash`&&Z(e,`${t}.${r}`,`Unknown key "${r}" on a slash action. Expected only: slash`);let r=Kx(n.slash);return r.kind===`refused`?(Z(e,`${t}.slash`,r.reason),null):{slash:r.line}}function pC(e,t,n){for(let r of Object.keys(n))r!==`do`&&Z(e,`${t}.${r}`,`Unknown key "${r}" on a do action. Expected only: do`);let r=n.do;return!Array.isArray(r)||r.length<2||r.some(e=>typeof e!=`string`||e===``)?(Z(e,`${t}.do`,`do must list at least two action names (the first is the click's face, the rest ride along in the same click), got ${K(r)}`),null):{do:r}}function mC(e,t,n,r,i,a){let o=Zs(e,t,r,n);if(o===null)return null;let s=`${t}.${n}`;return o===``?(Z(e,s,i),null):o.includes(`/`)?(Z(e,s,a(o)),null):o}const hC={set:`the SessionState key to write`,persist:`the config globals field to write`};function gC(e,t,n,r){let i=hC[r],a=mC(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 _C(e){return e===`set`?`set-state`:`set-config`}const vC={to:LC(`set`)},yC={to:LC(`persist`)},bC={from:RC(`set`)},xC={from:RC(`persist`)},SC={min:UC(),max:UC(),by:UC()},CC={int:BC()},wC={cycle:zC(`set`)},TC={cycle:zC(`persist`)},EC={removeSegment:VC(`removeSegment`)},DC={insertSegment:VC(`insertSegment`),anchor:VC(`anchor`),relation:HC()},OC={insertSegmentFrom:RC(`persist`),anchor:VC(`anchor`),relation:HC()},kC={ok:e=>e.min<e.max,issue:e=>({field:`min`,message:`min (${e.min}) must be less than max (${e.max})`})},AC={ok:e=>e.by!==0,issue:()=>({field:`by`,message:`by must be a non-zero integer (the per-click increment; negative steps down)`})};function jC(e,t,n=[],r){let i=Object.keys(t),a=r??i,o=[e],s=(e,n,r)=>ac(e,t,n,r),c=Cc(t);return{detect:a,allowed:[...o,...i],label:i.join(`/`),json:{type:`object`,properties:{...Object.fromEntries(o.map(e=>[e,{type:`string`}])),...c.properties},required:[...o,...c.required??[]],additionalProperties:!1},parse:n.length?pc(s,...n):s}}const MC=[jC(`set`,vC),jC(`set`,bC),jC(`set`,SC,[kC,AC]),jC(`set`,CC),jC(`set`,wC)],NC=[jC(`persist`,yC),jC(`persist`,xC),jC(`persist`,SC,[kC,AC]),jC(`persist`,TC),jC(`persist`,EC),jC(`persist`,DC,[],[`insertSegment`]),jC(`persist`,OC,[],[`insertSegmentFrom`])];function PC(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 FC(e){let t=PC(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 IC(e,t,n,r,i){let a=gC(e,t,n,r),o=i.filter(e=>e.detect.some(e=>e in n));if(o.length!==1)return Z(e,t,`${FC(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 LC(e){let t=_C(e);return{required:!0,json:{type:`string`},parse:(n,r,i,a)=>mC(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 RC(e){let t=_C(e);return{required:!0,json:{anyOf:[{type:`string`,minLength:1},{type:`array`,items:{type:`string`,minLength:1},minItems:1,uniqueItems:!0}]},parse:(n,r,i,a)=>{let o=a[i],s=`${r}.${i}`;if(typeof o==`string`){if(o===``){Z(n,s,`${i} must be a non-empty domain name`);return}return o}if(Array.isArray(o)&&o.every(e=>typeof e==`string`)){let r=o;if(r.length===0){Z(n,s,`${i} must name a domain (a non-empty string) or declare an inline domain (a non-empty array of values)`);return}if(r.some(e=>e===``)){Z(n,s,`${i} array members must be non-empty — an empty value cannot be delivered on the ${t} wire`);return}let a=r.filter(e=>e.includes(`/`));if(a.length>0){Z(n,s,`${i} array member(s) ${a.map(e=>`"${e}"`).join(`, `)} contain "/" — ${e} values must be slash-free`);return}if(new Set(r).size!==r.length){Z(n,s,`${i} array members must be unique — a duplicated value would render the same picker option twice`);return}return r}Z(n,s,`${i} must be a domain name (a string) or an inline domain (an array of strings), got ${K(o)}`)}}}function zC(e){let t=_C(e);return{required:!0,json:{type:`array`,items:{type:`string`,minLength:1},minItems:2,uniqueItems:!0},parse:(n,r,i,a)=>{let o=a[i],s=`${r}.${i}`;if(!Array.isArray(o)||o.some(e=>typeof e!=`string`)){Z(n,s,`cycle must be an array of strings (the enumerated values a click steps through), got ${rc(o)}`);return}let c=o;if(c.length<2){Z(n,s,`cycle needs at least two members (one member has no successor — use a literal "to")`);return}let l=c.some(e=>e===``),u=c.filter(e=>e.includes(`/`));if(l){Z(n,s,`cycle members must be non-empty — an empty value cannot be delivered on the ${t} wire`);return}if(u.length>0){Z(n,s,`cycle member(s) ${u.map(e=>`"${e}"`).join(`, `)} contain "/" — ${e} values must be slash-free`);return}if(new Set(c).size!==c.length){Z(n,s,`cycle members must be unique — the successor of a duplicated member is ambiguous`);return}return c}}}function BC(){return{required:!0,json:{const:!0},parse:(e,t,n,r)=>{if(r[n]!==!0){Z(e,`${t}.${n}`,`int must be the literal true (declares the key an unbounded integer cursor — a paged picker's page key), got ${K(r[n])}`);return}return!0}}}function VC(e){return{required:!0,json:{type:`string`},parse:(t,n,r,i)=>{let a=Zs(t,n,i,r);if(a===null)return;let o=`${n}.${r}`;if(a===``){Z(t,o,`${e} must be non-empty (a segment name)`);return}if(a.includes(`/`)||a.includes(`:`)){Z(t,o,`${e} "${a}" contains "/" or ":" — segment names in a layout op must be free of both (the click wire's own delimiter and layout-ops.ts's op-token delimiter)`);return}return a}}}function HC(){return{required:!0,json:{enum:[`before`,`after`]},parse:(e,t,n,r)=>{let i=r[n];if(i!==`before`&&i!==`after`){Z(e,`${t}.${n}`,`relation must be "before" or "after", got ${K(i)}`);return}return i}}}function UC(){return{required:!0,json:{type:`integer`},parse:(e,t,n,r)=>{let i=r[n];if(typeof i!=`number`||!Number.isInteger(i)){Z(e,`${t}.${n}`,`${n} must be an integer, got ${K(i)}`);return}return i}}}const WC={noun:`look key`,fields:{hueShift:_c(),chromaScale:_c({min:0}),lightnessScale:_c(),lightnessShift:_c()}};function GC(e,t){if(!nc(t))return e.issues.push({path:`looks`,message:`looks must be an object mapping look names to adaptation objects, got ${rc(t)}`,line:G(e.source,[`looks`])}),{};let n={};for(let[r,i]of Object.entries(t)){if(r===``||r.includes(`/`)){e.issues.push({path:`looks.${r}`,message:`look name ${JSON.stringify(r)} must be non-empty and slash-free — a look picker writes the name on the set-state wire, which rejects empty values and splits on "/"`,line:G(e.source,[`looks`,r])});continue}let t=ic(e,WC,`looks.${r}`,i);t!==null&&(n[r]={...In,...t})}return n}const KC={noun:`preset key`,fields:{root:{required:!1,json:{$ref:`#/definitions/RootFragment`},parse:(e,t,n,r)=>r[n]===void 0?void 0:ad(e,`${t}.${n}`,r[n])},globals:{required:!1,json:Sl(),parse:(e,t,n,r)=>r[n]===void 0?void 0:xl(e,`${t}.${n}`,r[n])}}};function qC(e,t){if(!nc(t))return e.issues.push({path:`presets`,message:`presets must be an object mapping preset names to config fragments, got ${rc(t)}`,line:G(e.source,[`presets`])}),{};let n={};for(let[r,i]of Object.entries(t)){if(r===``||r.includes(`/`)||/[\n\r]/.test(r)){e.issues.push({path:`presets.${r}`,message:`preset name ${JSON.stringify(r)} must be non-empty, slash-free, and newline-free — a preset picker writes the name on the set-state wire (which rejects empty values and splits on "/"), and edit mode splices it into a synthesized template string`,line:G(e.source,[`presets`,r])});continue}let t=ic(e,KC,`presets.${r}`,i);t!==null&&(n[r]=t)}return n}function JC(e,t){if(t===void 0)return{};if(!nc(t))return e.issues.push({path:`helpers`,message:`helpers must be an object, got ${rc(t)}`,line:G(e.source,[`helpers`])}),{};let n=Object.create(null);for(let[r,i]of Object.entries(t)){if(typeof i!=`string`){e.issues.push({path:`helpers.${r}`,message:`helpers.${r} must be a string template body, got ${K(i)}`,line:G(e.source,[`helpers`,r])});continue}n[r]=i}return n}const YC=new Map([[`session.budget.amount`,{segment:`session`,setting:`budget`}],[`session.budget.warningThreshold`,{segment:`session`,setting:`warnAt`}],[`today.budget.amount`,{segment:`today`,setting:`budget`}],[`today.budget.warningThreshold`,{segment:`today`,setting:`warnAt`}],[`block.budget.heatThreshold`,{segment:`block`,setting:`warnAt`}],[`block.budget.warningThreshold`,{segment:`block`,setting:`errorAt`}],[`weekly.budget.heatThreshold`,{segment:`weekly`,setting:`warnAt`}],[`weekly.budget.warningThreshold`,{segment:`weekly`,setting:`errorAt`}],[`burn.eta.errorMinutes`,{segment:`burnrate`,setting:`errorWithin`}],[`burn.eta.warnMinutes`,{segment:`burnrate`,setting:`warnWithin`}]]);function XC(e){return`it became the "${e.setting}" setting of each "${e.segment}" placement — set it on the placement where a row places "${e.segment}" ({ seg: "${e.segment}", settings: { ${e.setting}: <value> } }), or redeclare segments.${e.segment}.settings.${e.setting} with the default every placement should start from`}function ZC(e){let t=YC.get(e);return t===void 0?void 0:`variables.${e} is no longer read: ${XC(t)}`}function QC(e){let t=YC.get(e);return t===void 0?``:` — ".${e}" is no longer a variable: ${XC(t)}; a "${t.segment}" template reads it as ".settings.${t.setting}"`}function $C(e,t){let n=new Map;for(let e of Object.keys(t)){let t=du(e),r=n.get(t);r?r.push(e):n.set(t,[e])}for(let[t,r]of n)r.length<2||e.issues.push({path:`presets`,message:`preset names ${r.map(e=>JSON.stringify(e)).join(` and `)} both collapse to the same synthesis identifier "${t}" — edit mode's synthesized reset affordance would silently steal one preset's action for the other. Rename one.`,line:G(e.source,[`presets`])})}function ew(e,t,n){t.globals.look!==void 0&&!Qa(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:G(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:G(e.source,[`globals`,`preset`])}),$C(e,t.presets);let r=zb(t);for(let[n,i]of Object.entries(t.actions))!(`set`in i)||!(`from`in i)||typeof i.from!=`string`||Bb(r).includes(i.from)||e.issues.push({path:`actions.${n}.from`,message:`actions.${n} from: references unknown option domain "${i.from}" (have: ${Bb(r).join(`, `)})`,line:G(e.source,[`actions`,n,`from`])});for(let[n,r]of Object.entries(t.actions))`do`in r&&r.do.forEach((i,a)=>{let o=Object.prototype.hasOwnProperty.call(t.actions,i)?t.actions[i]:void 0,s=o===void 0?`references unknown action "${i}"`:`do`in o?`"${i}" is itself a do action — list its members here instead`:r.do.indexOf(i)===a?a>0&&tC(o)?`"${i}" takes its value from the template (from/int/insertSegmentFrom), so it can only be the first member — only the first is bound the region's display`:void 0:`"${i}" is listed twice — each member fires once per click`;s!==void 0&&e.issues.push({path:`actions.${n}.do`,message:`actions.${n} do: ${s}`,line:G(e.source,[`actions`,n,`do`])})});for(let[n,r]of Object.entries(t.actions)){let i=`persist`in r?r.persist:`reset`in r?r.reset:null;if(i===null)continue;let a=`persist`in r?`persist`:`reset`,o=Xb(i);if(o===null){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" is not a config globals field (have: ${El().join(`, `)}), a "segments.<name>.palette" target, a "presets.<name>.globals.<field>" target, or a "presets.<name>.root" target`,line:G(e.source,[`actions`,n,a])});continue}let s=tw.filter(e=>e in r);if(o.scope!==`preset-root`&&s.length>0){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" is not a "presets.<name>.root" target — ${s.map(e=>`"${e}"`).join(`/`)} is a tree op and applies only to one`,line:G(e.source,[`actions`,n,a])});continue}if(o.scope===`preset-root`){nw(e,t,n,a,i,o.preset,r);continue}if(o.scope===`preset-globals`&&!b_(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: ${b_(t.presets).join(`, `)})`,line:G(e.source,[`actions`,n,a])});continue}if(o.scope===`segment-palette`){if(!Object.prototype.hasOwnProperty.call(t.segments,o.segment)){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" names segment "${o.segment}" which is not declared (have segments: ${Object.keys(t.segments).join(`, `)})${xu(o.segment)}`,line:G(e.source,[`actions`,n,a])});continue}`min`in r&&e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" is a segment palette target and cannot use a bounded stepper (min/max/by) — use "to", "from", or "cycle" instead`,line:G(e.source,[`actions`,n,a])})}}let i=dv(t);for(let t of i.names)t!==`settings`&&!t.startsWith(rw)||e.issues.push({path:`variables`,message:`variable "${t}" is named under "settings", which a segment's templates read as its placement's own settings (.settings.<name>) — rename it`,line:G(e.source,[`variables`,t])});let a=(t,n,r)=>{US(t)>1&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${Zx}" ${US(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}),WS(t)&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${Zx}" 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 js(t)){if(e.kind!==`segment`)continue;let t=Ds(e);i.set(t,[...i.get(t)??[],e])}for(let[t,a]of i){if(a.length<2)continue;let o=a[1].name,s=ks(o,new Set(i.keys()));e.issues.push({path:n,message:`${n} has ${a.length} placements with the id "${t}" — an id names one placement (its settings, its menus' open state, and edit mode all address it), so give each its own: { seg: "${o}", id: "${s}" }. A placement without an "id" takes its segment's name.`,line:r})}};function o(e,t=!1){return e.kind===`segment`?!1:t&&e.distribution!==void 0||e.children.some(n=>o(n,t||Es[e.direction]===`cell`))}let s=(n,r)=>{for(let[a,o]of Ic(n,r)){let n=G(e.source,o.split(`.`));if(a.when!==void 0&&(hw(e,`${o}.when`,a.when,i,{line:n}),mw(e,`${o}.when`,a.when,n)),a.kind===`segment`){if(BS(a.name)){(a.id!==void 0||a.settings!==void 0)&&e.issues.push({path:o,message:`${r} gives the global settings menu anchor "${Zx}" an id or settings — the anchor only marks where the menu goes, so place it as the bare name "${Zx}"`,line:n});continue}Object.prototype.hasOwnProperty.call(t.segments,a.name)||e.issues.push({path:o,message:`${r} entry "${a.name}" does not match any declared segment${xu(a.name)}`,line:n}),dw(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`,Pc(t.root)]]);for(let e of b_(t.presets)){let{node:n,path:r}=C_(t,e);c.set(r,n)}for(let[t,n]of c)a(n,t,G(e.source,t.split(`.`)));for(let[n,r]of Object.entries(t.variables)){fw(e,`variables.${n}`,r,i);let t=ZC(n);t!==void 0&&e.issues.push({path:`variables.${n}`,message:t,line:G(e.source,[`variables`,n])})}for(let[n,r]of Object.entries(t.segments)){if(r.vars)for(let[t,a]of Object.entries(r.vars))fw(e,`segments.${n}.vars.${t}`,a,i,n);let a=Hs(r);aw(e,n,a);let o=iw(i,a);for(let i of[`template`,`bg`,`fg`,`when`]){let s=r[i];if(typeof s==`string`){hw(e,`segments.${n}.${i}`,s,o,{segCtx:n,settings:a});for(let r of sv(s))Object.prototype.hasOwnProperty.call(t.actions,r)||e.issues.push({path:`segments.${n}.${i}`,message:`${i} references unknown action "${r}"`,line:G(e.source,[`segments`,n,i])});for(let r of lv(s))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:G(e.source,[`segments`,n,i])})}}}for(let[n,r]of Object.entries(t.variables))pw(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))pw(e,`segments.${n}.vars.${t}`,a,i,n)}const tw=[`removeSegment`,`insertSegment`,`insertSegmentFrom`];function nw(e,t,n,r,i,a,o){let s=`actions.${n}.${r}`,c=G(e.source,[`actions`,n,r]);if(!b_(t.presets).includes(a)){e.issues.push({path:s,message:`actions.${n}: "${i}" names preset "${a}" which is not declared (have: ${b_(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(`, `)})${xu(i)}`,line:c})},p=new Set(Os(C_(t,a).node)),m=(r,i)=>{!bu.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${xu(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 rw=`settings.`;function iw(e,t){return{...e,names:new Set([...e.names,...Object.keys(t).map(e=>rw+e)])}}function aw(e,t,n){let r=e=>`segments.${t}.settings.${e}`,i=(n,i)=>{e.issues.push({path:r(n),message:`${r(n)}: ${i}`,line:G(e.source,[`segments`,t,`settings`,n])})},a=cw(n);for(let{setting:e,message:t}of a)i(e,t);if(!(a.length>0))for(let{setting:e,message:t}of Ws(n,sw(n)))i(e,`the defaults do not stand together: ${t}`)}function ow(e){return cw(e).length>0||Ws(e,sw(e)).length>0}function sw(e){return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,t.default]))}function cw(e){let t=t=>Us(lw(e,t))?.atLeast;return Object.keys(e).flatMap(n=>{let r=t(n);if(r===void 0)return[];if(r===n||Us(lw(e,r))===void 0)return[{setting:n,message:`atLeast "${r}" must name another range setting of this segment (its range settings: ${uw(e,n).join(`, `)||`none`})`}];let i=[n];for(let e=r;e!==void 0;e=t(e)){if(e===n)return i.every(e=>n<=e)?[{setting:n,message:`atLeast closes a cycle (${[...i,n].join(` ≥ `)}) — every setting on it could only ever equal the rest`}]:[];if(i.includes(e))return[];i.push(e)}return[]})}function lw(e,t){return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0}function uw(e,t){return Object.entries(e).filter(([e,n])=>e!==t&&Us(n)!==void 0).map(([e])=>e)}function dw(e,t,n,r,i){let a=Object.prototype.hasOwnProperty.call(t.segments,n.name)?t.segments[n.name]:void 0;if(a===void 0)return;let o=Hs(a),s=`${r}: placement "${Ds(n)}" of segment "${n.name}"`;for(let[t,a]of Object.entries(n.settings??{})){let c=Object.prototype.hasOwnProperty.call(o,t)?o[t]:void 0,l=c===void 0?`sets "${t}", which segment "${n.name}" does not declare (it has: ${Object.keys(o).join(`, `)})`:Gs(c,a)?void 0:`sets "${t}" to ${JSON.stringify(a)}${c.domain===`theme`?Ua(a):``}, but it must be ${Js(c)}`;l!==void 0&&e.issues.push({path:r,message:`${s} ${l}`,line:i})}let c=Object.fromEntries(Object.entries(o).map(([e,t])=>[e,n.settings?.[e]??t.default]));if(!(!Object.entries(c).every(([e,t])=>Gs(o[e],t))||ow(o)))for(let{message:t}of Ws(o,c))e.issues.push({path:r,message:`${s}: ${t}`,line:i})}function fw(e,t,n,r,i){n.kind===`template`&&hw(e,`${t}.template`,n.template,r,{segCtx:i}),Rs(n)&&n.cache&&`key`in n.cache&&hw(e,`${t}.cache.key`,n.cache.key,r,{segCtx:i})}function pw(e,t,n,r,i){if(Rs(n)&&n.cache&&`depends_on`in n.cache)for(let a=0;a<n.cache.depends_on.length;a++){let o=n.cache.depends_on[a];if(r.names.has(o))continue;let s=i===void 0?void 0:`${i}.${o}`,c=s!==void 0&&r.names.has(s)?` (segment-local vars are namespaced — write "${s}")`:``;e.issues.push({path:`${t}.cache.depends_on[${a}]`,message:`cache.depends_on references unknown variable "${o}"${c}`,line:G(e.source,[...t.split(`.`),`cache`,`depends_on`])})}}function mw(e,t,n,r){try{L_.parse(n)}catch(n){e.issues.push({path:t,message:`Template parse error in ${t}: ${n.message}`,line:r})}}function hw(e,t,n,r,i){for(let[a,o]of av(n,r.helpers)){if(uv(a,r))continue;if(a.startsWith(rw)){let n=o===null?``:` through helper "${o}"`,r=a.slice(9),s=i?.segCtx===void 0||i.settings===void 0?`Template reads ".${a}"${n}, but only a segment's own templates have settings — call it from a segment that declares "${r}"`:`Template reads ".${a}"${n}, but segment "${i.segCtx}" has no setting "${r}" (it has: ${Object.keys(i.settings).join(`, `)}) — declare it under segments.${i.segCtx}.settings`;e.issues.push({path:t,message:s,line:i?.line??G(e.source,t.split(`.`))});continue}if(o!==null){gw(e,o,a);continue}let n=i?.segCtx===void 0?void 0:`${i.segCtx}.${a}`,s=n!==void 0&&uv(n,r)?` (segment-local vars are namespaced — write ".${n}")`:QC(a);e.issues.push({path:t,message:`Template references unknown variable ".${a}"${s}`,line:i?.line??G(e.source,t.split(`.`))})}}function gw(e,t,n){let r=`helpers.${t}`,i=`Template references unknown variable ".${n}"${QC(n)}`;e.issues.some(e=>e.path===r&&e.message===i)||e.issues.push({path:r,message:i,line:G(e.source,[`helpers`,t])})}function _w(e,t){let{graph:n,nodeInfo:r}=vw(t),i=new Map,a=[];for(let e of n.keys())i.set(e,0);for(let e of n.keys())if(i.get(e)===0&&o(e))return;function o(t){i.set(t,1),a.push(t);for(let s of n.get(t)??[]){let t=i.get(s);if(t===1){let t=a.indexOf(s),n=[...a.slice(t),s],i=n[0],o=r.get(i);return e.issues.push({path:o?.declarationPath??`variables.${i}`,message:`Dependency cycle: ${n.join(` → `)}`,line:G(e.source,o?.linePathParts??[`variables`,i])}),!0}if(t===0&&o(s))return!0}return i.set(t,2),a.pop(),!1}}function vw(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 av(i,e.helpers).keys()){if(t.has(a)){r.get(n).add(a);continue}let e=a.split(`.`)[0];e!==a&&t.has(e)&&r.get(n).add(e)}},a=(e,n)=>{if(n.kind===`template`&&i(e,n.template),Rs(n)&&(n.cache&&`key`in n.cache&&i(e,n.cache.key),n.cache&&`depends_on`in n.cache))for(let i of n.cache.depends_on)t.has(i)&&r.get(e).add(i)};for(let[t,n]of Object.entries(e.variables))a(t,n);for(let[t,n]of Object.entries(e.segments))if(n.vars)for(let[e,r]of Object.entries(n.vars))a(`${t}.${e}`,r);return{graph:r,nodeInfo:n}}const yw=[`json5`,`json`];function bw(e){try{return r.statSync(e,{throwIfNoEntry:!1})===void 0?`absent`:`present`}catch(t){return{path:e,error:t.message}}}function xw(e){return e===`~`||e.startsWith(`~/`)||e.startsWith(`~\\`)?p.homedir()+e.slice(1):e}function Sw(e,t,n){if(n!==void 0)return[n];let r=t??process.cwd();return[...new Set([...e?yw.map(t=>c.join(e,`.cc-candybar.${t}`)):[],...yw.map(e=>c.join(r,`.cc-candybar.${e}`)),...yw.map(e=>`${Cw()}.${e}`)])]}function Cw(){let e=process.env.XDG_CONFIG_HOME??c.join(p.homedir(),`.config`);return c.join(e,`cc-candybar`,`config`)}function ww(e,t,n){let r=[];for(let i of Sw(e,t,n)){let e=bw(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 Tw(e,t,n){let r=ww(e,t,n);return r.kind===`default`?`${Cw()}.${yw[0]}`:r.path}function Ew(e){return Dw(e).join(`
158
- `)||null}function Dw(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 Ow(e,t){let n=Sw(e,t).filter(e=>bw(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 kw(e,t,n){return e===null?{...jw,config:zc(jw.raw,t)}:Aw(e,r.readFileSync(e,`utf-8`),t,n)}function Aw(e,t,n,r){let i={source:t,...Pw(e,t,r,Fu(n))};return{...i,config:zc(i.raw,n)}}const jw={raw:{},source:``,warnings:[]};function Mw({config:e,raw:t,source:n},r=`<config>`,i=new Set(Ka())){let a=[],o={source:n,issues:a,allowedPalettes:i,groups:[]};if(ew(o,e,t),_w(o,e),a.length>0)throw new bs(r,a);let s=I_(e,a);if(a.length>0)throw new bs(r,a);return Ax(QS(s))}function Nw(e,t,n=new Set(Ka()),r=Fw){return Pw(e,t,n,r).raw}function Pw(e,t,n,r){let i=Iw(e,t),a=Cs(e,t),o=a===null?[]:[a],s=[],c={source:t,issues:s,allowedPalettes:n??new Set(Ka()),groups:[]};if(!nc(i))throw new bs(e,[{path:``,message:`Config root must be an object, got ${rc(i)}`}],o);let l=Lw(c,i,r);if(s.length>0)throw new bs(e,s,o);return{raw:l,warnings:o}}const Fw=new Set;function Iw(e,t){try{return Qe.default.parse(t)}catch(t){let n=t;throw new bs(e,[{path:``,message:`JSON5 syntax error: ${n.message}`,line:n.lineNumber,col:n.columnNumber}])}}function Lw(e,t,n){for(let n of Object.keys(t))Rw.has(n)||e.issues.push({path:n,message:`Unknown top-level key "${n}". Expected one of: ${[...Rw].join(`, `)}`,line:G(e.source,[n])});let r={};return t.globals!==void 0&&(r.globals=bl(e,`globals`,t.globals)),t.variables!==void 0&&(r.variables=Bl(e,`variables`,t.variables)),t.segments!==void 0&&(r.segments=Iu(e,t.segments,n)),t.layout!==void 0&&e.issues.push({path:`layout`,message:`"layout" is no longer supported — use "root" with the A-grammar instead.
157
+ `,ax=`${mu}live`,ox=[`☐ live`,`☑ live`],sx=`${mu}done`,cx={variable:ax,key:ax,member:`open`},lx=`and ${Xc(U_)} (not ${Xc(cx)})`,ux=`{{ ${lx} }}`;function dx(e,t){return`{{ if ${lx} }}${e}{{ else }}${t}{{ end }}`}const fx=`{{ and ${Xc(U_)} .preset.customized }}`,px=_u,mx=`${mu}addable`;function hx(e){return new Map([[mx,{members:Object.keys(e.segments).filter(e=>!px(e))}]])}function gx(e,t,n){return n.segments[e]={template:t,when:W_},{kind:`segment`,name:e}}function _x(e,t,n){let r=`${mu}${e.presetIdent}.remove.${t}`;return e.artifacts.actions[r]={persist:e.rootKey,removeSegment:n},`{{ action "${r}" "🚫" }}`}function vx(e){return`{{ if ${Xc(U_)} }}${e.join(``)}{{ end }}`}function yx(e,t){return e.reduce((e,t)=>`{{ if ${Xc(t)} }}true{{ else }}${e}{{ end }}`,t)}function bx(e){return e.flatMap(e=>[...js(e)].flatMap(e=>e.kind===`segment`&&e.opens?.ref.key===`edit.mode`?[e.opens.ref]:[]))}function xx(e,t,n){return`${V_}${e}.${t}.${n}`}function Sx(e,t,n,r){let i=Ds(n),a=`${mu}${e.presetIdent}`,o=H_(e.presetIdent,i),s=`${a}.configure.${t}`;e.artifacts.actions[s]={set:R_,to:o};let c={},l=Object.entries(r).map(([r,o])=>{let s=xx(e.presetIdent,i,r),l=`${V_}p${e.presetIdent}.d${t}.${r}`;e.artifacts.variables[l]={kind:`state`,key:s,default:Ks(n.settings?.[r]??o.default)},c[r]={id:i,key:s,variable:l};let u=`${a}.setting.${t}.${r}`,d=Gb(Ub(o),s,l,u);return Object.assign(e.artifacts.actions,d.actions),e.artifacts.segments[u]={template:d.kind===`ring`?`{{ "${qc(o.label)}" }} ${d.template}`:d.template},{kind:`segment`,name:u}});return{term:`{{ action "${s}" "⚙" }}`,ref:{variable:R_,key:R_,member:o},body:{kind:`container`,direction:`vertical`,children:l},drafts:c}}const Cx=`${mu}label:`;function wx(e){if(e.startsWith(Cx)){let t=e.slice(Cx.length);return t.slice(t.indexOf(`:`)+1)}return e.startsWith(`edit.`)?void 0:e}function Tx(e,t,n,r){let i=Ds(e),a=`${Cx}${i}:${e.name}`;n.segments[a]={template:`{{ "${qc(i)}" }}`,...t.palette!==void 0&&{palette:t.palette}};let o=e.settings?.[Vs];return{...Jc(a,r.ref,r.body,`drop`,yx([r.ref],ux)),...o!==void 0&&{settings:{theme:o}},drafts:{[Vs]:r.drafts[Vs]}}}function Ex(e,t,n,r){let{presetIdent:i,artifacts:a}=e,o=`${mu}${i}.insert.${t}`,s=`${mu}${i}.insertSeg.${t}`;a.actions[o]={persist:e.rootKey,insertSegmentFrom:mx,anchor:n,relation:r};let c=l_(o),l=u_(s,o,void 0),u=p_(l),d=f_(l,c);return a.variables[l]=Qc(l,Uc),a.variables[u]={kind:`state`,key:u,default:`0`},a.actions[d]=$c(l,c),a.actions[u]={set:u,int:!0},{host:s,template:`{{ $m := menu "${o}" "✚" "✕" }}{{ if ${Xc({variable:l,key:l,member:c})} }}{{ $m }}{{ else }}{{ fg (${`readableOn (color "success") (bgOf) ${Ca}`}) $m }}{{ end }}`}}function Dx(e,t){let n=[],r=e.children.findIndex(e=>e.kind===`segment`&&!px(e.name)),i=e=>Dx(e,t);for(let[a,o]of e.children.entries()){if(o.kind===`container`){n.push(i(o));continue}let s=As(o,i);if(px(o.name)){n.push(s);continue}let c=Ds(o),l=a===r?[Ex(t,String(t.posCounter.n++),c,`before`)]:[],u=String(t.posCounter.n++),d=Ex(t,u,c,`after`),f=_x(t,u,c),p=t.segments[o.name],m=Sx(t,u,o,Hs(p)),h=vx([m.term,f]),g={kind:`container`,direction:`horizontal`,children:[...l.map(e=>gx(e.host,e.template,t.artifacts)),{...Tx(o,p,t.artifacts,m),trail:h},{...s,when:dx(`false`,o.when??`true`),trail:h,drafts:m.drafts},gx(d.host,d.template,t.artifacts)]};n.push(e.direction===`vertical`?{kind:`container`,direction:`horizontal`,children:[g]}:g)}return{...e,children:n,...e.when!==void 0&&{when:yx(bx(n),dx(`true`,e.when))}}}function Ox(e,t,n,r,i,a,o){let s=`${mu}${n}.resetLayout`,c=`${mu}${n}.customized`;i.actions[s]={reset:r};let l=qc(t);return i.segments[c]={template:`{{ action "${s}" "↺ ${l} customized" }}`,when:fx},{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[a,{kind:`segment`,name:c}]},kx(e,o)]}}function kx(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),kx(n,t)]}:{...e,children:[...e.children,t]}}function Ax(e,t,n,r,i){let{node:a}=C_(e,t),o={presetIdent:du(t),rootKey:Yb(t),segments:e.segments,artifacts:n,posCounter:{n:0}};return Ox(Dx(a,o),t,o.presetIdent,o.rootKey,n,r,i)}function jx(e){let t={variables:{},actions:{},segments:{}},n=ex(`${mu}help`,rx,[U_],t);t.variables[ax]=Qc(ax,Uc),t.actions[ax]=$c(ax,cx.member),t.segments[ax]={template:Zc(ax,...ox),when:W_};let r={kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:ax},n]};t.segments[sx]={template:`{{ action "${z_}" "✎ done" }}`,when:W_};let i={kind:`segment`,name:sx},a={...e.presets},o=[];for(let n of b_(e.presets)){let s=Ax(e,n,t,i,r);o.push(s),a[n]={...S_(e.presets,n),root:s}}let s=Tb(t,o,e);return{...e,variables:{...s,...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:a}}const Mx={socket:`TMUX`,pane:`TMUX_PANE`,truecolor:`CLAUDE_CODE_TMUX_TRUECOLOR`};function Nx(e){let t=e[Mx.socket]??``,n=e[Mx.pane]??``;if(t===``||n===``)return null;let r=e[Mx.truecolor]??``;return{socket:t.split(`,`)[0],pane:n,truecolor:r===``?null:r}}const Px=Mx.truecolor,Fx=[{name:`tmuxTruecolor`,label:`tmux truecolor`,probe:({tmux:e,claudeSettings:t})=>{switch(e.kind){case`unreported`:return{ok:!1,reason:"the client reported no tmux facts — re-run `cc-candybar install` to stage a current client"};case`outside`:return{ok:!0};case`inside`:{if(e.termfeatures.kind===`failed`)return{ok:!1,reason:`tmux could not be asked: ${e.termfeatures.reason}`};if(!e.termfeatures.value.includes(`RGB`)||e.hint.truecolor!==null)return{ok:!0};let n=t.env[Px];return typeof n==`string`&&n!==``?{ok:!1,reason:`${Px} is set in ${t.path} — restart Claude Code to apply`}:{ok:!1,reason:`Claude Code renders the bar in 256 colours inside tmux`,fix:{kind:`claude-settings-env`,name:Px,value:`1`}}}}}}];function Ix(e){return Fx.map(t=>({check:t,verdict:t.probe(e)}))}function Lx(e){return Fx.find(t=>t.name===e)}const Rx=`${hu}doctor.`;function zx(e){let t=`${Rx}${e}.`;return{verdict:`${t}verdict`,reason:`${t}reason`,fixable:`${t}fixable`}}function Bx(e){return e.flatMap(({check:e,verdict:t})=>{let n=zx(e.name);return t.ok?[{key:n.verdict,value:`ok`},{key:n.reason,value:``},{key:n.fixable,value:So}]:[{key:n.verdict,value:`failed`},{key:n.reason,value:t.reason},{key:n.fixable,value:t.fix===void 0?So:xo}]})}const Vx={copySession:{copy:`{{ .session.id }}`},openProject:{open:`{{ .project_dir }}`},openTranscript:{open:`{{ .transcript_path }}`}};function Hx(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(Vx).map(([t,n])=>[`${e}${t}`,n]))}}const Ux=`armed`,Wx=`disarmed`;function Gx(e,t,n){let r=`${e}.arm`,i=`${e}.disarm`;return{template:`{{ if eq .${e} "${Ux}" }}{{ action "${e}" "${t.confirm}" }} {{ action "${i}" "✕" }}{{ else }}{{ action "${r}" "${t.arm}" }}{{ end }}`,actions:{[r]:{set:e,to:Ux},[i]:{set:e,to:Wx},[e]:{do:[i,...n]}},variables:{[e]:{kind:`state`,key:e,default:Wx}},disarm:i}}const Kx=RegExp(`^/[^\\s\\x00-\\x1f\\x7f-\\x9f/][^\\x00-\\x1f\\x7f-\\x9f]*$`);function qx(e){return typeof e==`string`&&Kx.test(e)?{kind:`line`,line:e}:{kind:`refused`,reason:`a slash command is "/" then its name, e.g. "/compact" or "/model opus", on one line with no control characters, got ${JSON.stringify(e)}`}}function Jx(e){let t=qx(e);if(t.kind===`refused`)throw Error(t.reason);return t.line}const Yx=[`/compact`,`/model`],Xx=`/clear`;function Zx(e){let t=t=>`${e}${t.slice(1)}`,n=`${e}clear.slash`,r=Gx(`${e}clear`,{arm:Xx,confirm:`${Xx} ✓ confirm`},[n]);return{template:Yx.map(e=>`{{ action "${t(e)}" "${e}" }} `).join(``)+r.template,actions:{...Object.fromEntries(Yx.map(e=>[t(e),{slash:Jx(e)}])),...r.actions,[n]:{slash:Jx(Xx)}},variables:r.variables,disarm:r.disarm}}const Qx=`${hu}menu`,$x=`open`,eS=`${hu}edit`,tS=`${hu}close`,nS=`${hu}toolbar`,rS=Hx(hu),iS=`${hu}commands`,aS=Zx(`${iS}.`),oS=`${hu}config`,sS=`${hu}save`,cS=`${hu}unsaved`,lS=`${hu}preset.save`,uS=`${hu}preset.delete`,dS=`${hu}resetAll`,fS=`${Qx}.toggle`,pS=`${oS}.toggle`,mS={variable:Qx,key:Qx,member:$x},hS={variable:oS,key:oS,member:$x},gS=`${hu}tools`,_S={variable:gS,key:gS,member:$x},vS=[{seg:`${hu}undo`,depth:`undo`,action:{undo:!0},display:`↶ undo`},{seg:`${hu}redo`,depth:`redo`,action:{redo:!0},display:`↷ redo`}],yS=e=>`${hu}history.${e}`,bS=`${hu}doctor`,xS=`${bS}.run`,SS=e=>`${bS}.fix.${e}`,CS=e=>`${bS}.${e}`,wS=`${hu}pickers`,TS=[`{{ themePreview }}`],ES={preset:[`{{ layoutPreview }}`,`{{ action "${lS}" "⊕ save as preset" }}{{ if not .preset.bundled }} {{ action "${uS}" (printf "🗑 delete %s" .${yb.preset.effectiveVar}) }}{{ end }}`],theme:TS,look:TS,progression:[`{{ layoutPreview }}`]},DS=e=>`${hu}${e}`,OS=e=>`${hu}apply.${e}`,kS=e=>`${hu}reset.${e}`,AS=e=>`${hu}carousel.${e}`,jS=(e,t)=>`${AS(e)}.${t}`,MS=Object.keys(yb).map(e=>{let t=yb[e],n=ul(t.configKey);if(n===`text`)throw Error(`settings menu: globals.${t.configKey} is free text, which no control can change — list it in UNCONTROLLED_GLOBALS instead of SETTINGS`);let r=Gb({label:t.label,domain:n},t.sessionKey,t.effectiveVar,OS(e));return{...t,name:e,control:r,beneath:ES[e]??[]}}),NS=new Set([`preset`]),PS=MS.filter(e=>NS.has(e.name)),FS=MS.filter(e=>!NS.has(e.name));new Set(MS.flatMap(e=>[e.sessionKey,e.configKey]));const IS=Gx(dS,{arm:`⟲ reset all`,confirm:`⟲ confirm reset all`},MS.map(e=>kS(e.name))),LS=[IS,aS],RS=d_(wS),zS=e=>({variable:RS,key:RS,member:l_(OS(e))});function BS(e){let t=DS(e.name);return e.control.kind===`inline`?{kind:`segment`,name:t}:Jc(t,zS(e.name),{kind:`container`,direction:`vertical`,children:[{kind:`segment`,name:AS(e.name)},...e.beneath.map((t,n)=>({kind:`segment`,name:jS(e.name,n)}))]},`drop`)}function VS(e){return e===Qx}function HS(e){let t={kind:`segment`,name:Qx};if(e.kind===`container`&&e.direction===`vertical`){let[n,...r]=e.children;return e.when===void 0&&n!==void 0?{...e,children:[HS(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 US(e){return WS(e)>0?e:HS(e)}function WS(e){let t=0;for(let n of js(e))n.kind===`segment`&&VS(n.name)&&(t+=1);return t}function GS(e,t=!1){let n=t||e.when!==void 0;return e.kind===`segment`?n&&VS(e.name)||e.opens!==void 0&&GS(e.opens.body,!0):e.children.some(e=>GS(e,n))}function KS(e){return e.kind===`segment`?VS(e.name)?Jc(e.name,mS,{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:nS},{kind:`segment`,name:iS},...PS.map(BS),{kind:`segment`,name:sS},Jc(oS,hS,{kind:`container`,direction:`horizontal`,children:[...FS.map(BS),{kind:`segment`,name:dS}]},`drop`),Jc(gS,_S,{kind:`container`,direction:`vertical`,children:[{kind:`segment`,name:bS},...Fx.map(e=>({kind:`segment`,name:CS(e.name)}))]},`drop`),{kind:`segment`,name:eS},...vS.map(e=>({kind:`segment`,name:e.seg}))]},`inline`):e:qS(e)}function qS(e){return{...e,children:e.children.map(e=>KS(e))}}function JS(e){let t={variables:{[Qx]:Qc(Qx,Uc)},actions:{[fS]:$c(Qx,$x),[Qx]:{do:[fS,...LS.map(e=>e.disarm)]},[pS]:$c(oS,$x),[oS]:{do:[pS,IS.disarm]},[gS]:$c(gS,$x),[xS]:{doctor:`run`},[tS]:{set:mS.key,to:Uc},[eS]:{do:[z_,tS]},...rS.actions,...aS.actions,[sS]:{save:!0},[lS]:{preset:`save`},[uS]:{preset:`delete`,name:`{{ .${yb.preset.effectiveVar} }}`}},segments:{[Qx]:{template:Zc(Qx,e,`❌`)},[nS]:{template:rS.template},[iS]:{template:aS.template},[sS]:{when:`{{ gt .${cS} 0 }}`,template:`{{ action "${sS}" (printf "💾 save %d" .${cS}) }}`},[oS]:{template:Zc(oS,`⚙ config ▸`,`⚙ config ▾`)},[gS]:{template:Zc(gS,`🧰 tools ▸`,`🧰 tools ▾`)},[bS]:{template:`{{ action "${xS}" "🩺 doctor" }}`},[eS]:{template:`{{ action "${eS}" "✎ edit" "✎ done" }}`},[dS]:{template:IS.template}}};return t.variables[cS]={kind:`input`,path:`unsaved`,type:`number`,default:0},t.variables[oS]=Qc(oS,Uc),t.variables[gS]=Qc(gS,Uc),Object.assign(t.variables,aS.variables,IS.variables),ZS(t),XS(t),YS(t),t}function YS(e){for(let t of vS){let n=yS(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 XS(e){for(let t of Fx){let n=zx(t.name),r=SS(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[CS(t.name)]={when:`{{ ne .${n.verdict} "" }}`,template:`{{ if eq .${n.verdict} "ok" }}✓ ${t.label}{{ else }}✗ ${t.label} — {{ .${n.reason} }}{{ if eq .${n.fixable} "${xo}" }} {{ action "${r}" "[fix]" }}{{ end }}{{ end }}`}}}function ZS(e){for(let t of MS){Object.assign(e.actions,t.control.actions);let n=kS(t.name);e.actions[n]={reset:t.configKey};let r=`{{ action "${n}" "↺" }}`;if(t.control.kind===`inline`){e.segments[DS(t.name)]={template:`${t.control.template} ${r}`};continue}let i=zS(t.name),a=f_(i.key,i.member);e.variables[i.key]=Qc(i.key,Uc),e.actions[a]=$c(i.key,i.member),e.segments[DS(t.name)]={template:`${t.label} {{ .${t.effectiveVar} }} ${Zc(a,`▸`,`▾`)} `+r},e.segments[AS(t.name)]={template:t.control.template},t.beneath.forEach((n,r)=>{e.segments[jS(t.name,r)]={template:n}})}Object.assign(e.actions,IS.actions)}function QS(e){e.variables[R_]=Qc(R_,Uc),e.actions[z_]=$c(R_,B_)}function $S(e){let t=JS(e.globals.menuGlyph??`🍫`);QS(t);let n={...e.presets},r=[];for(let t of b_(e.presets)){let{node:i}=C_(e,t),a=KS(US(i));r.push(a),n[t]={...S_(e.presets,t),root:a}}let i=Tb(t,r,e);return{...e,variables:{...i,...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:n}}const eC=[`set`,`persist`,`copy`,`open`,`reset`,`undo`,`redo`,`save`,`preset`,`doctor`,`ceiling`,`slash`,`do`];function tC(e){return e.ceiling===`set`?[`set`,e.to]:[`clear`]}function nC(e){return`from`in e||`int`in e||`insertSegmentFrom`in e}function rC(e,t){if(t===void 0)return{};if(!nc(t))return Z(e,`actions`,`actions must be an object, got ${rc(t)}`),{};let n=Object.create(null);for(let[r,i]of Object.entries(t)){let t=iC(e,`actions.${r}`,i);t!==null&&(n[r]=t)}return n}function Z(e,t,n){e.issues.push({path:t,message:n,line:G(e.source,t.split(`.`))})}function iC(e,t,n){if(!nc(n))return Z(e,t,`${t} must be an action object, got ${rc(n)}`),null;if(`persistWhen`in n)return Z(e,t,`${t}.persistWhen was removed: declare the \`set\` alone — a session pick is a draft until a \`{ save: true }\` action writes every unsaved setting to the config file`),null;let r=eC.filter(e=>e in n);return r.length===1?aC[r[0]](e,t,n):(Z(e,t,`action must declare exactly one of: ${eC.join(`, `)}${r.length>1?` (found: ${r.join(`, `)})`:``}`),null)}const aC={set:(e,t,n)=>LC(e,t,n,`set`,NC),persist:(e,t,n)=>LC(e,t,n,`persist`,PC),copy:oC(`copy`),open:oC(`open`),reset:sC,undo:lC(`undo`),redo:lC(`redo`),save:lC(`save`),preset:uC,doctor:dC,ceiling:fC,slash:pC,do:mC};function oC(e){return(t,n,r)=>{for(let i of Object.keys(r))i!==e&&Z(t,`${n}.${i}`,`Unknown key "${i}" on a ${e} action. Expected only: ${e}`);let i=Zs(t,n,r,e);return i===null?null:{[e]:i}}}function sC(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=hC(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 cC={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 lC(e){return(t,n,r)=>{for(let i of Object.keys(r))i!==e&&Z(t,`${n}.${i}`,`Unknown key "${i}" on a ${e} action. Expected only: ${e}`);return r[e]===!0?{[e]:!0}:(Z(t,`${n}.${e}`,`${e} must be the literal true (it takes no key — ${cC[e]}), got ${K(r[e])}`),null)}}function uC(e,t,n){let r=n.preset,i=r===`save`?[`preset`]:[`preset`,`name`];for(let r of Object.keys(n))i.includes(r)||Z(e,`${t}.${r}`,`Unknown key "${r}" on a preset action. Expected only: ${i.join(`, `)}`);if(r!==`save`&&r!==`delete`)return Z(e,`${t}.preset`,`preset must be "save" or "delete", got ${K(r)}`),null;if(r===`save`)return{preset:`save`};let a=Zs(e,t,n,`name`);return a===null?null:{preset:`delete`,name:a}}function dC(e,t,n){let r=n.doctor,i=r===`run`?[`doctor`]:[`doctor`,`check`];for(let r of Object.keys(n))i.includes(r)||Z(e,`${t}.${r}`,`Unknown key "${r}" on a doctor action. Expected only: ${i.join(`, `)}`);if(r!==`run`&&r!==`fix`)return Z(e,`${t}.doctor`,`doctor must be "run" or "fix", got ${K(r)}`),null;if(r===`run`)return{doctor:`run`};let a=n.check;return typeof a!=`string`||Lx(a)===void 0?(Z(e,`${t}.check`,`doctor fix must name a check (have: ${Fx.map(e=>e.name).join(`, `)}), got ${K(a)}`),null):{doctor:`fix`,check:a}}function fC(e,t,n){let r=n.ceiling,i=r===`clear`?[`ceiling`]:[`ceiling`,`to`];for(let r of Object.keys(n))i.includes(r)||Z(e,`${t}.${r}`,`Unknown key "${r}" on a ceiling action. Expected only: ${i.join(`, `)}`);if(r===`clear`)return{ceiling:`clear`};if(r!==`set`)return Z(e,`${t}.ceiling`,`ceiling must be "set" or "clear", got ${K(r)}`),null;let a=n.to;return typeof a!=`string`||a.trim()===``?(Z(e,`${t}.to`,`ceiling set needs \`to\`: a memento ceiling value such as "+100_000", "400000" or "off", got ${K(a)}`),null):{ceiling:`set`,to:a}}function pC(e,t,n){for(let r of Object.keys(n))r!==`slash`&&Z(e,`${t}.${r}`,`Unknown key "${r}" on a slash action. Expected only: slash`);let r=qx(n.slash);return r.kind===`refused`?(Z(e,`${t}.slash`,r.reason),null):{slash:r.line}}function mC(e,t,n){for(let r of Object.keys(n))r!==`do`&&Z(e,`${t}.${r}`,`Unknown key "${r}" on a do action. Expected only: do`);let r=n.do;return!Array.isArray(r)||r.length<2||r.some(e=>typeof e!=`string`||e===``)?(Z(e,`${t}.do`,`do must list at least two action names (the first is the click's face, the rest ride along in the same click), got ${K(r)}`),null):{do:r}}function hC(e,t,n,r,i,a){let o=Zs(e,t,r,n);if(o===null)return null;let s=`${t}.${n}`;return o===``?(Z(e,s,i),null):o.includes(`/`)?(Z(e,s,a(o)),null):o}const gC={set:`the SessionState key to write`,persist:`the config globals field to write`};function _C(e,t,n,r){let i=gC[r],a=hC(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 vC(e){return e===`set`?`set-state`:`set-config`}const yC={to:RC(`set`)},bC={to:RC(`persist`)},xC={from:zC(`set`)},SC={from:zC(`persist`)},CC={min:WC(),max:WC(),by:WC()},wC={int:VC()},TC={cycle:BC(`set`)},EC={cycle:BC(`persist`)},DC={removeSegment:HC(`removeSegment`)},OC={insertSegment:HC(`insertSegment`),anchor:HC(`anchor`),relation:UC()},kC={insertSegmentFrom:zC(`persist`),anchor:HC(`anchor`),relation:UC()},AC={ok:e=>e.min<e.max,issue:e=>({field:`min`,message:`min (${e.min}) must be less than max (${e.max})`})},jC={ok:e=>e.by!==0,issue:()=>({field:`by`,message:`by must be a non-zero integer (the per-click increment; negative steps down)`})};function MC(e,t,n=[],r){let i=Object.keys(t),a=r??i,o=[e],s=(e,n,r)=>ac(e,t,n,r),c=Cc(t);return{detect:a,allowed:[...o,...i],label:i.join(`/`),json:{type:`object`,properties:{...Object.fromEntries(o.map(e=>[e,{type:`string`}])),...c.properties},required:[...o,...c.required??[]],additionalProperties:!1},parse:n.length?pc(s,...n):s}}const NC=[MC(`set`,yC),MC(`set`,xC),MC(`set`,CC,[AC,jC]),MC(`set`,wC),MC(`set`,TC)],PC=[MC(`persist`,bC),MC(`persist`,SC),MC(`persist`,CC,[AC,jC]),MC(`persist`,EC),MC(`persist`,DC),MC(`persist`,OC,[],[`insertSegment`]),MC(`persist`,kC,[],[`insertSegmentFrom`])];function FC(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 IC(e){let t=FC(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 LC(e,t,n,r,i){let a=_C(e,t,n,r),o=i.filter(e=>e.detect.some(e=>e in n));if(o.length!==1)return Z(e,t,`${IC(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 RC(e){let t=vC(e);return{required:!0,json:{type:`string`},parse:(n,r,i,a)=>hC(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 zC(e){let t=vC(e);return{required:!0,json:{anyOf:[{type:`string`,minLength:1},{type:`array`,items:{type:`string`,minLength:1},minItems:1,uniqueItems:!0}]},parse:(n,r,i,a)=>{let o=a[i],s=`${r}.${i}`;if(typeof o==`string`){if(o===``){Z(n,s,`${i} must be a non-empty domain name`);return}return o}if(Array.isArray(o)&&o.every(e=>typeof e==`string`)){let r=o;if(r.length===0){Z(n,s,`${i} must name a domain (a non-empty string) or declare an inline domain (a non-empty array of values)`);return}if(r.some(e=>e===``)){Z(n,s,`${i} array members must be non-empty — an empty value cannot be delivered on the ${t} wire`);return}let a=r.filter(e=>e.includes(`/`));if(a.length>0){Z(n,s,`${i} array member(s) ${a.map(e=>`"${e}"`).join(`, `)} contain "/" — ${e} values must be slash-free`);return}if(new Set(r).size!==r.length){Z(n,s,`${i} array members must be unique — a duplicated value would render the same picker option twice`);return}return r}Z(n,s,`${i} must be a domain name (a string) or an inline domain (an array of strings), got ${K(o)}`)}}}function BC(e){let t=vC(e);return{required:!0,json:{type:`array`,items:{type:`string`,minLength:1},minItems:2,uniqueItems:!0},parse:(n,r,i,a)=>{let o=a[i],s=`${r}.${i}`;if(!Array.isArray(o)||o.some(e=>typeof e!=`string`)){Z(n,s,`cycle must be an array of strings (the enumerated values a click steps through), got ${rc(o)}`);return}let c=o;if(c.length<2){Z(n,s,`cycle needs at least two members (one member has no successor — use a literal "to")`);return}let l=c.some(e=>e===``),u=c.filter(e=>e.includes(`/`));if(l){Z(n,s,`cycle members must be non-empty — an empty value cannot be delivered on the ${t} wire`);return}if(u.length>0){Z(n,s,`cycle member(s) ${u.map(e=>`"${e}"`).join(`, `)} contain "/" — ${e} values must be slash-free`);return}if(new Set(c).size!==c.length){Z(n,s,`cycle members must be unique — the successor of a duplicated member is ambiguous`);return}return c}}}function VC(){return{required:!0,json:{const:!0},parse:(e,t,n,r)=>{if(r[n]!==!0){Z(e,`${t}.${n}`,`int must be the literal true (declares the key an unbounded integer cursor — a paged picker's page key), got ${K(r[n])}`);return}return!0}}}function HC(e){return{required:!0,json:{type:`string`},parse:(t,n,r,i)=>{let a=Zs(t,n,i,r);if(a===null)return;let o=`${n}.${r}`;if(a===``){Z(t,o,`${e} must be non-empty (a segment name)`);return}if(a.includes(`/`)||a.includes(`:`)){Z(t,o,`${e} "${a}" contains "/" or ":" — segment names in a layout op must be free of both (the click wire's own delimiter and layout-ops.ts's op-token delimiter)`);return}return a}}}function UC(){return{required:!0,json:{enum:[`before`,`after`]},parse:(e,t,n,r)=>{let i=r[n];if(i!==`before`&&i!==`after`){Z(e,`${t}.${n}`,`relation must be "before" or "after", got ${K(i)}`);return}return i}}}function WC(){return{required:!0,json:{type:`integer`},parse:(e,t,n,r)=>{let i=r[n];if(typeof i!=`number`||!Number.isInteger(i)){Z(e,`${t}.${n}`,`${n} must be an integer, got ${K(i)}`);return}return i}}}const GC={noun:`look key`,fields:{hueShift:_c(),chromaScale:_c({min:0}),lightnessScale:_c(),lightnessShift:_c()}};function KC(e,t){if(!nc(t))return e.issues.push({path:`looks`,message:`looks must be an object mapping look names to adaptation objects, got ${rc(t)}`,line:G(e.source,[`looks`])}),{};let n={};for(let[r,i]of Object.entries(t)){if(r===``||r.includes(`/`)){e.issues.push({path:`looks.${r}`,message:`look name ${JSON.stringify(r)} must be non-empty and slash-free — a look picker writes the name on the set-state wire, which rejects empty values and splits on "/"`,line:G(e.source,[`looks`,r])});continue}let t=ic(e,GC,`looks.${r}`,i);t!==null&&(n[r]={...In,...t})}return n}const qC={noun:`preset key`,fields:{root:{required:!1,json:{$ref:`#/definitions/RootFragment`},parse:(e,t,n,r)=>r[n]===void 0?void 0:ad(e,`${t}.${n}`,r[n])},globals:{required:!1,json:Sl(),parse:(e,t,n,r)=>r[n]===void 0?void 0:xl(e,`${t}.${n}`,r[n])}}};function JC(e,t){if(!nc(t))return e.issues.push({path:`presets`,message:`presets must be an object mapping preset names to config fragments, got ${rc(t)}`,line:G(e.source,[`presets`])}),{};let n={};for(let[r,i]of Object.entries(t)){if(r===``||r.includes(`/`)||/[\n\r]/.test(r)){e.issues.push({path:`presets.${r}`,message:`preset name ${JSON.stringify(r)} must be non-empty, slash-free, and newline-free — a preset picker writes the name on the set-state wire (which rejects empty values and splits on "/"), and edit mode splices it into a synthesized template string`,line:G(e.source,[`presets`,r])});continue}let t=ic(e,qC,`presets.${r}`,i);t!==null&&(n[r]=t)}return n}function YC(e,t){if(t===void 0)return{};if(!nc(t))return e.issues.push({path:`helpers`,message:`helpers must be an object, got ${rc(t)}`,line:G(e.source,[`helpers`])}),{};let n=Object.create(null);for(let[r,i]of Object.entries(t)){if(typeof i!=`string`){e.issues.push({path:`helpers.${r}`,message:`helpers.${r} must be a string template body, got ${K(i)}`,line:G(e.source,[`helpers`,r])});continue}n[r]=i}return n}const XC=new Map([[`session.budget.amount`,{segment:`session`,setting:`budget`}],[`session.budget.warningThreshold`,{segment:`session`,setting:`warnAt`}],[`today.budget.amount`,{segment:`today`,setting:`budget`}],[`today.budget.warningThreshold`,{segment:`today`,setting:`warnAt`}],[`block.budget.heatThreshold`,{segment:`block`,setting:`warnAt`}],[`block.budget.warningThreshold`,{segment:`block`,setting:`errorAt`}],[`weekly.budget.heatThreshold`,{segment:`weekly`,setting:`warnAt`}],[`weekly.budget.warningThreshold`,{segment:`weekly`,setting:`errorAt`}],[`burn.eta.errorMinutes`,{segment:`burnrate`,setting:`errorWithin`}],[`burn.eta.warnMinutes`,{segment:`burnrate`,setting:`warnWithin`}]]);function ZC(e){return`it became the "${e.setting}" setting of each "${e.segment}" placement — set it on the placement where a row places "${e.segment}" ({ seg: "${e.segment}", settings: { ${e.setting}: <value> } }), or redeclare segments.${e.segment}.settings.${e.setting} with the default every placement should start from`}function QC(e){let t=XC.get(e);return t===void 0?void 0:`variables.${e} is no longer read: ${ZC(t)}`}function $C(e){let t=XC.get(e);return t===void 0?``:` — ".${e}" is no longer a variable: ${ZC(t)}; a "${t.segment}" template reads it as ".settings.${t.setting}"`}function ew(e,t){let n=new Map;for(let e of Object.keys(t)){let t=du(e),r=n.get(t);r?r.push(e):n.set(t,[e])}for(let[t,r]of n)r.length<2||e.issues.push({path:`presets`,message:`preset names ${r.map(e=>JSON.stringify(e)).join(` and `)} both collapse to the same synthesis identifier "${t}" — edit mode's synthesized reset affordance would silently steal one preset's action for the other. Rename one.`,line:G(e.source,[`presets`])})}function tw(e,t,n){t.globals.look!==void 0&&!Qa(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:G(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:G(e.source,[`globals`,`preset`])}),ew(e,t.presets);let r=Bb(t);for(let[n,i]of Object.entries(t.actions))!(`set`in i)||!(`from`in i)||typeof i.from!=`string`||Vb(r).includes(i.from)||e.issues.push({path:`actions.${n}.from`,message:`actions.${n} from: references unknown option domain "${i.from}" (have: ${Vb(r).join(`, `)})`,line:G(e.source,[`actions`,n,`from`])});for(let[n,r]of Object.entries(t.actions))`do`in r&&r.do.forEach((i,a)=>{let o=Object.prototype.hasOwnProperty.call(t.actions,i)?t.actions[i]:void 0,s=o===void 0?`references unknown action "${i}"`:`do`in o?`"${i}" is itself a do action — list its members here instead`:r.do.indexOf(i)===a?a>0&&nC(o)?`"${i}" takes its value from the template (from/int/insertSegmentFrom), so it can only be the first member — only the first is bound the region's display`:void 0:`"${i}" is listed twice — each member fires once per click`;s!==void 0&&e.issues.push({path:`actions.${n}.do`,message:`actions.${n} do: ${s}`,line:G(e.source,[`actions`,n,`do`])})});for(let[n,r]of Object.entries(t.actions)){let i=`persist`in r?r.persist:`reset`in r?r.reset:null;if(i===null)continue;let a=`persist`in r?`persist`:`reset`,o=Zb(i);if(o===null){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" is not a config globals field (have: ${El().join(`, `)}), a "segments.<name>.palette" target, a "presets.<name>.globals.<field>" target, or a "presets.<name>.root" target`,line:G(e.source,[`actions`,n,a])});continue}let s=nw.filter(e=>e in r);if(o.scope!==`preset-root`&&s.length>0){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" is not a "presets.<name>.root" target — ${s.map(e=>`"${e}"`).join(`/`)} is a tree op and applies only to one`,line:G(e.source,[`actions`,n,a])});continue}if(o.scope===`preset-root`){rw(e,t,n,a,i,o.preset,r);continue}if(o.scope===`preset-globals`&&!b_(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: ${b_(t.presets).join(`, `)})`,line:G(e.source,[`actions`,n,a])});continue}if(o.scope===`segment-palette`){if(!Object.prototype.hasOwnProperty.call(t.segments,o.segment)){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" names segment "${o.segment}" which is not declared (have segments: ${Object.keys(t.segments).join(`, `)})${xu(o.segment)}`,line:G(e.source,[`actions`,n,a])});continue}`min`in r&&e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" is a segment palette target and cannot use a bounded stepper (min/max/by) — use "to", "from", or "cycle" instead`,line:G(e.source,[`actions`,n,a])})}}let i=fv(t);for(let t of i.names)t!==`settings`&&!t.startsWith(iw)||e.issues.push({path:`variables`,message:`variable "${t}" is named under "settings", which a segment's templates read as its placement's own settings (.settings.<name>) — rename it`,line:G(e.source,[`variables`,t])});let a=(t,n,r)=>{WS(t)>1&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${Qx}" ${WS(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}),GS(t)&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${Qx}" 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 js(t)){if(e.kind!==`segment`)continue;let t=Ds(e);i.set(t,[...i.get(t)??[],e])}for(let[t,a]of i){if(a.length<2)continue;let o=a[1].name,s=ks(o,new Set(i.keys()));e.issues.push({path:n,message:`${n} has ${a.length} placements with the id "${t}" — an id names one placement (its settings, its menus' open state, and edit mode all address it), so give each its own: { seg: "${o}", id: "${s}" }. A placement without an "id" takes its segment's name.`,line:r})}};function o(e,t=!1){return e.kind===`segment`?!1:t&&e.distribution!==void 0||e.children.some(n=>o(n,t||Es[e.direction]===`cell`))}let s=(n,r)=>{for(let[a,o]of Ic(n,r)){let n=G(e.source,o.split(`.`));if(a.when!==void 0&&(gw(e,`${o}.when`,a.when,i,{line:n}),hw(e,`${o}.when`,a.when,n)),a.kind===`segment`){if(VS(a.name)){(a.id!==void 0||a.settings!==void 0)&&e.issues.push({path:o,message:`${r} gives the global settings menu anchor "${Qx}" an id or settings — the anchor only marks where the menu goes, so place it as the bare name "${Qx}"`,line:n});continue}Object.prototype.hasOwnProperty.call(t.segments,a.name)||e.issues.push({path:o,message:`${r} entry "${a.name}" does not match any declared segment${xu(a.name)}`,line:n}),fw(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`,Pc(t.root)]]);for(let e of b_(t.presets)){let{node:n,path:r}=C_(t,e);c.set(r,n)}for(let[t,n]of c)a(n,t,G(e.source,t.split(`.`)));for(let[n,r]of Object.entries(t.variables)){pw(e,`variables.${n}`,r,i);let t=QC(n);t!==void 0&&e.issues.push({path:`variables.${n}`,message:t,line:G(e.source,[`variables`,n])})}for(let[n,r]of Object.entries(t.segments)){if(r.vars)for(let[t,a]of Object.entries(r.vars))pw(e,`segments.${n}.vars.${t}`,a,i,n);let a=Hs(r);ow(e,n,a);let o=aw(i,a);for(let i of[`template`,`bg`,`fg`,`when`]){let s=r[i];if(typeof s==`string`){gw(e,`segments.${n}.${i}`,s,o,{segCtx:n,settings:a});for(let{name:r,site:a,via:o}of uv(s,t.helpers)){if(Object.prototype.hasOwnProperty.call(t.actions,r))continue;let s=a===`options`?` (in a picker, menu or carousel)`:``;if(o!==null){_w(e,o,`Template references unknown action "${r}"${s}`);continue}e.issues.push({path:`segments.${n}.${i}`,message:`${i} references unknown action "${r}"${s}`,line:G(e.source,[`segments`,n,i])})}}}}for(let[n,r]of Object.entries(t.variables))mw(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))mw(e,`segments.${n}.vars.${t}`,a,i,n)}const nw=[`removeSegment`,`insertSegment`,`insertSegmentFrom`];function rw(e,t,n,r,i,a,o){let s=`actions.${n}.${r}`,c=G(e.source,[`actions`,n,r]);if(!b_(t.presets).includes(a)){e.issues.push({path:s,message:`actions.${n}: "${i}" names preset "${a}" which is not declared (have: ${b_(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(`, `)})${xu(i)}`,line:c})},p=new Set(Os(C_(t,a).node)),m=(r,i)=>{!bu.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${xu(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 iw=`settings.`;function aw(e,t){return{...e,names:new Set([...e.names,...Object.keys(t).map(e=>iw+e)])}}function ow(e,t,n){let r=e=>`segments.${t}.settings.${e}`,i=(n,i)=>{e.issues.push({path:r(n),message:`${r(n)}: ${i}`,line:G(e.source,[`segments`,t,`settings`,n])})},a=lw(n);for(let{setting:e,message:t}of a)i(e,t);if(!(a.length>0))for(let{setting:e,message:t}of Ws(n,cw(n)))i(e,`the defaults do not stand together: ${t}`)}function sw(e){return lw(e).length>0||Ws(e,cw(e)).length>0}function cw(e){return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,t.default]))}function lw(e){let t=t=>Us(uw(e,t))?.atLeast;return Object.keys(e).flatMap(n=>{let r=t(n);if(r===void 0)return[];if(r===n||Us(uw(e,r))===void 0)return[{setting:n,message:`atLeast "${r}" must name another range setting of this segment (its range settings: ${dw(e,n).join(`, `)||`none`})`}];let i=[n];for(let e=r;e!==void 0;e=t(e)){if(e===n)return i.every(e=>n<=e)?[{setting:n,message:`atLeast closes a cycle (${[...i,n].join(` ≥ `)}) — every setting on it could only ever equal the rest`}]:[];if(i.includes(e))return[];i.push(e)}return[]})}function uw(e,t){return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0}function dw(e,t){return Object.entries(e).filter(([e,n])=>e!==t&&Us(n)!==void 0).map(([e])=>e)}function fw(e,t,n,r,i){let a=Object.prototype.hasOwnProperty.call(t.segments,n.name)?t.segments[n.name]:void 0;if(a===void 0)return;let o=Hs(a),s=`${r}: placement "${Ds(n)}" of segment "${n.name}"`;for(let[t,a]of Object.entries(n.settings??{})){let c=Object.prototype.hasOwnProperty.call(o,t)?o[t]:void 0,l=c===void 0?`sets "${t}", which segment "${n.name}" does not declare (it has: ${Object.keys(o).join(`, `)})`:Gs(c,a)?void 0:`sets "${t}" to ${JSON.stringify(a)}${c.domain===`theme`?Ua(a):``}, but it must be ${Js(c)}`;l!==void 0&&e.issues.push({path:r,message:`${s} ${l}`,line:i})}let c=Object.fromEntries(Object.entries(o).map(([e,t])=>[e,n.settings?.[e]??t.default]));if(!(!Object.entries(c).every(([e,t])=>Gs(o[e],t))||sw(o)))for(let{message:t}of Ws(o,c))e.issues.push({path:r,message:`${s}: ${t}`,line:i})}function pw(e,t,n,r,i){n.kind===`template`&&gw(e,`${t}.template`,n.template,r,{segCtx:i}),Rs(n)&&n.cache&&`key`in n.cache&&gw(e,`${t}.cache.key`,n.cache.key,r,{segCtx:i})}function mw(e,t,n,r,i){if(Rs(n)&&n.cache&&`depends_on`in n.cache)for(let a=0;a<n.cache.depends_on.length;a++){let o=n.cache.depends_on[a];if(r.names.has(o))continue;let s=i===void 0?void 0:`${i}.${o}`,c=s!==void 0&&r.names.has(s)?` (segment-local vars are namespaced — write "${s}")`:``;e.issues.push({path:`${t}.cache.depends_on[${a}]`,message:`cache.depends_on references unknown variable "${o}"${c}`,line:G(e.source,[...t.split(`.`),`cache`,`depends_on`])})}}function hw(e,t,n,r){try{L_.parse(n)}catch(n){e.issues.push({path:t,message:`Template parse error in ${t}: ${n.message}`,line:r})}}function gw(e,t,n,r,i){for(let[a,o]of ov(n,r.helpers)){if(dv(a,r))continue;if(a.startsWith(iw)){let n=o===null?``:` through helper "${o}"`,r=a.slice(9),s=i?.segCtx===void 0||i.settings===void 0?`Template reads ".${a}"${n}, but only a segment's own templates have settings — call it from a segment that declares "${r}"`:`Template reads ".${a}"${n}, but segment "${i.segCtx}" has no setting "${r}" (it has: ${Object.keys(i.settings).join(`, `)}) — declare it under segments.${i.segCtx}.settings`;e.issues.push({path:t,message:s,line:i?.line??G(e.source,t.split(`.`))});continue}if(o!==null){_w(e,o,`Template references unknown variable ".${a}"${$C(a)}`);continue}let n=i?.segCtx===void 0?void 0:`${i.segCtx}.${a}`,s=n!==void 0&&dv(n,r)?` (segment-local vars are namespaced — write ".${n}")`:$C(a);e.issues.push({path:t,message:`Template references unknown variable ".${a}"${s}`,line:i?.line??G(e.source,t.split(`.`))})}}function _w(e,t,n){let r=`helpers.${t}`;e.issues.some(e=>e.path===r&&e.message===n)||e.issues.push({path:r,message:n,line:G(e.source,[`helpers`,t])})}function vw(e,t){let{graph:n,nodeInfo:r}=yw(t),i=new Map,a=[];for(let e of n.keys())i.set(e,0);for(let e of n.keys())if(i.get(e)===0&&o(e))return;function o(t){i.set(t,1),a.push(t);for(let s of n.get(t)??[]){let t=i.get(s);if(t===1){let t=a.indexOf(s),n=[...a.slice(t),s],i=n[0],o=r.get(i);return e.issues.push({path:o?.declarationPath??`variables.${i}`,message:`Dependency cycle: ${n.join(` → `)}`,line:G(e.source,o?.linePathParts??[`variables`,i])}),!0}if(t===0&&o(s))return!0}return i.set(t,2),a.pop(),!1}}function yw(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 ov(i,e.helpers).keys()){if(t.has(a)){r.get(n).add(a);continue}let e=a.split(`.`)[0];e!==a&&t.has(e)&&r.get(n).add(e)}},a=(e,n)=>{if(n.kind===`template`&&i(e,n.template),Rs(n)&&(n.cache&&`key`in n.cache&&i(e,n.cache.key),n.cache&&`depends_on`in n.cache))for(let i of n.cache.depends_on)t.has(i)&&r.get(e).add(i)};for(let[t,n]of Object.entries(e.variables))a(t,n);for(let[t,n]of Object.entries(e.segments))if(n.vars)for(let[e,r]of Object.entries(n.vars))a(`${t}.${e}`,r);return{graph:r,nodeInfo:n}}const bw=[`json5`,`json`];function xw(e){try{return r.statSync(e,{throwIfNoEntry:!1})===void 0?`absent`:`present`}catch(t){return{path:e,error:t.message}}}function Sw(e){return e===`~`||e.startsWith(`~/`)||e.startsWith(`~\\`)?p.homedir()+e.slice(1):e}function Cw(e,t,n){if(n!==void 0)return[n];let r=t??process.cwd();return[...new Set([...e?bw.map(t=>c.join(e,`.cc-candybar.${t}`)):[],...bw.map(e=>c.join(r,`.cc-candybar.${e}`)),...bw.map(e=>`${ww()}.${e}`)])]}function ww(){let e=process.env.XDG_CONFIG_HOME??c.join(p.homedir(),`.config`);return c.join(e,`cc-candybar`,`config`)}function Tw(e,t,n){let r=[];for(let i of Cw(e,t,n)){let e=xw(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 Ew(e,t,n){let r=Tw(e,t,n);return r.kind===`default`?`${ww()}.${bw[0]}`:r.path}function Dw(e){return Ow(e).join(`
158
+ `)||null}function Ow(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 kw(e,t){let n=Cw(e,t).filter(e=>xw(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 Aw(e,t,n){return e===null?{...Mw,config:zc(Mw.raw,t)}:jw(e,r.readFileSync(e,`utf-8`),t,n)}function jw(e,t,n,r){let i={source:t,...Fw(e,t,r,Fu(n))};return{...i,config:zc(i.raw,n)}}const Mw={raw:{},source:``,warnings:[]};function Nw({config:e,raw:t,source:n},r=`<config>`,i=new Set(Ka())){let a=[],o={source:n,issues:a,allowedPalettes:i,groups:[]};if(tw(o,e,t),vw(o,e),a.length>0)throw new bs(r,a);let s=I_(e,a);if(a.length>0)throw new bs(r,a);return jx($S(s))}function Pw(e,t,n=new Set(Ka()),r=Iw){return Fw(e,t,n,r).raw}function Fw(e,t,n,r){let i=Lw(e,t),a=Cs(e,t),o=a===null?[]:[a],s=[],c={source:t,issues:s,allowedPalettes:n??new Set(Ka()),groups:[]};if(!nc(i))throw new bs(e,[{path:``,message:`Config root must be an object, got ${rc(i)}`}],o);let l=Rw(c,i,r);if(s.length>0)throw new bs(e,s,o);return{raw:l,warnings:o}}const Iw=new Set;function Lw(e,t){try{return Qe.default.parse(t)}catch(t){let n=t;throw new bs(e,[{path:``,message:`JSON5 syntax error: ${n.message}`,line:n.lineNumber,col:n.columnNumber}])}}function Rw(e,t,n){for(let n of Object.keys(t))zw.has(n)||e.issues.push({path:n,message:`Unknown top-level key "${n}". Expected one of: ${[...zw].join(`, `)}`,line:G(e.source,[n])});let r={};return t.globals!==void 0&&(r.globals=bl(e,`globals`,t.globals)),t.variables!==void 0&&(r.variables=Bl(e,`variables`,t.variables)),t.segments!==void 0&&(r.segments=Iu(e,t.segments,n)),t.layout!==void 0&&e.issues.push({path:`layout`,message:`"layout" is no longer supported — use "root" with the A-grammar instead.
159
159
  Replace: layout: [["seg1", "seg2"], ["seg3"]]
160
160
  With: root: { v: [{ h: ["seg1", "seg2"] }, "seg3"] }
161
- Single-row example: root: { h: ["seg1", "seg2"] }`,line:G(e.source,[`layout`])}),t.root!==void 0&&(r.root=ad(e,`root`,t.root)),t.actions!==void 0&&(r.actions=nC(e,t.actions)),t.looks!==void 0&&(r.looks=GC(e,t.looks)),t.presets!==void 0&&(r.presets=qC(e,t.presets)),t.editGlobals!==void 0&&(r.editGlobals=Cl(e,`editGlobals`,t.editGlobals)),t.helpers!==void 0&&(r.helpers=JC(e,t.helpers)),pd(e,r),P_(e,r),q_(e,r),yu(e,r,hu,`the global settings menu`),r}const Rw=new Set([`globals`,`variables`,`segments`,`layout`,`root`,`actions`,`looks`,`presets`,`editGlobals`,`helpers`]);function zw(e){let t=Ww(e.termCols),n=Ww(e.termRows),r=Gw(e.ssh),i=Hw(e.tmux),a=Vw(e.configEnv),o=Bw(e.claudeConfigDir);return{...t!==void 0&&{termCols:t},...n!==void 0&&{termRows:n},...r!==void 0&&{ssh:r},...i!==void 0&&{tmux:i},...a!==void 0&&{configEnv:a},...o!==void 0&&{claudeConfigDir:o}}}function Bw(e){return typeof e==`string`&&c.isAbsolute(e)?e:void 0}function Vw(e){return typeof e==`string`&&e!==``?xw(e):void 0}function Hw(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 Uw=1e4;function Ww(e){if(typeof e!=`number`||!Number.isFinite(e))return;let t=Math.floor(e);if(!(t<=0))return t>Uw?Uw:t}function Gw(e){return typeof e==`boolean`?e:void 0}var Kw=class extends Error{constructor(e){super(e),this.name=`ProtocolError`}};function qw(e){let t=Buffer.from(JSON.stringify(e),`utf8`),n=Buffer.alloc(4);return n.writeUInt32BE(t.length,0),Buffer.concat([n,t])}function Jw(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 Kw(`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 Kw(e instanceof Error?e.message:String(e));e instanceof Error&&(n.cause=e),t(n);return}}}}function Yw(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=Jw(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(qw(t))})}async function Xw(e,t,n){let r=null;try{r=await tT(Fe(),t.connectMs);let i=await Yw(r,{v:3,...e},t.budgetMs);return $w(e.kind,i,n)}catch(e){return eT(e)}finally{r&&r.destroy()}}function Zw(e,t){return typeof e==`string`?e:t}function Qw(e){return typeof e==`number`&&Number.isInteger(e)&&e>=0?e:0}function $w(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=Zw(r.error,`(no error message)`);switch(r.code){case`VERSION_MISMATCH`:return{kind:`permanent`,cause:`version_mismatch`,clientV:3,daemonV:Qw(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 eT(e){if(e instanceof Kw||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 tT(e,t){return new Promise((n,r)=>{let i=y.createConnection({path:e}),a=setTimeout(()=>{i.destroy(),r(Error(`CONNECT_TIMEOUT`))},t);i.once(`connect`,()=>{clearTimeout(a),n(i)}),i.once(`error`,e=>{clearTimeout(a),r(e)})})}function nT(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 rT={connectMs:50,budgetMs:150},iT={connectMs:50,budgetMs:200};function aT(e){let t=e.output;return typeof t==`string`?t:void 0}function oT(e,t,n,r){return Xw({kind:`render`,hookData:e,args:t,cwd:n,...r},rT,aT)}function sT(e,t){return Xw({kind:`click`,verb:e,value:t},iT,aT)}let cT=null;function lT(e){if(cT!==null)return cT;r.mkdirSync(c.dirname(e),{recursive:!0});try{cT=r.statSync(e).size}catch{cT=0}return cT}function uT(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{}cT=0}function Q(e,t){let n=`${new Date().toISOString()} [${e}] ${t}\n`;try{let e=qe(),t=lT(e);r.appendFileSync(e,n),cT=t+Buffer.byteLength(n,`utf8`),cT>=5242880&&uT(e)}catch(e){cT=null;try{process.stderr.write(`${n}cc-candybar: daemon.log unwritable: ${e.message}\n`)}catch{}}}function dT(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 fT(e,t){return e===`darwin`?[pT(`footprint`,[`-p`,String(t)]),pT(`vmmap`,[`--summary`,String(t)])]:e===`linux`?[mT(`/proc/self/smaps_rollup`),mT(`/proc/self/status`)]:[]}function pT(e,t){return{name:`${e} ${t.join(` `)}`,read:()=>{let n=Oe({bin:e,args:[...t],timeoutMs:5e3,category:`limits.memory-report`});return n.ok?n.stdout.trim().length>0?{kind:`text`,text:n.stdout}:{kind:`unavailable`,reason:`exited 0 but printed nothing`}:{kind:`unavailable`,reason:`${n.reason}${n.error===void 0?``:`: ${n.error}`}${hT(n.stderr)}`}}}}function mT(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 hT(e){let t=e.split(`
163
- `).map(e=>e.trim()).find(e=>e.length>0);return t===void 0?``:` (${t})`}const gT=`CC_CANDYBAR_RSS_LIMIT_MB`;function _T(e){let t=e[gT];if(t===void 0)return 512;let n=/^\d+$/.test(t)?Number(t):NaN;if(!Number.isSafeInteger(n)||n<=0)throw Error(`${gT} must be a positive integer (MB), got ${JSON.stringify(t)}`);return n}function vT(e){return _T(e)*2}const yT=1024*1024;function bT(e){return _T(e)*yT}const xT={memoryReport:{prefix:`memory-`,suffix:`.txt`},heapSnapshot:{prefix:`heap-`,suffix:`.heapsnapshot`}};function ST(e,t,n){let{prefix:r,suffix:i}=xT[t];return c.join(e,`${r}${n}${i}`)}function CT(e){for(let t of Object.keys(xT)){let{prefix:n,suffix:r}=xT[t];if(e.startsWith(n)&&e.endsWith(r))return t}return null}function wT(e){let t=e.rssLimitBytes??512*yT,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 TT(e.log,`memory report`,()=>{let t=ST(e.snapshotDir,`memoryReport`,o);e.writeMemoryReport(t,e.captureMemoryReport()),e.log(`info`,`memory report written: ${t}`)}),TT(e.log,`heap snapshot`,()=>{let t=ST(e.snapshotDir,`heapSnapshot`,o);e.log(`info`,`heap snapshot written: ${e.writeHeapSnapshot(t)}`)}),TT(e.log,`artifact rotation`,()=>{DT(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 TT(e,t,n){try{n()}catch(n){e(`warn`,`${t} failed: ${n.message}`)}}function ET(e){let t=e.slice(e.lastIndexOf(`/`)+1),n=CT(t);if(n===null)return t;let{prefix:r,suffix:i}=xT[n];return t.slice(r.length,t.length-i.length)}function DT(e,t,n){let r=new Map;for(let t of e){let e=ET(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 OT(e,t,n={}){let i=Pe();return{now:()=>Date.now(),pid:process.pid,snapshotDir:i,log:Q,memoryBytes:()=>{let e=process.memoryUsage();return{rss:e.rss,heapTotal:e.heapTotal}},captureMemoryReport:()=>dT(fT(process.platform,process.pid)),writeMemoryReport:(e,t)=>r.writeFileSync(e,t,{mode:384}),writeHeapSnapshot:e=>ne.writeHeapSnapshot(e),listArtifacts:()=>{try{return r.readdirSync(i).filter(e=>CT(e)!==null).map(e=>c.join(i,e))}catch{return[]}},removeFile:e=>r.unlinkSync(e),shutdown:t,startedAtMs:e,...n}}function kT(e={}){if(GT()!==null)return;let n=e.spawn??KT,r=HT();if(r.kind===`contended`){let e=jT();e!==null&&e>2e3&&(t.stderr.write(`cc-candybar: spawn-lock held ${e}ms (likely crashed holder) — spawning unlocked\n`),AT(n));return}if(r.kind===`error`){t.stderr.write(`cc-candybar: spawn-lock unavailable (${r.reason}) — spawning unlocked\n`),AT(n);return}try{AT(n)}finally{WT()}}function AT(e){RT()&&MT(e)}function jT(){try{let e=r.statSync(Ue());return Date.now()-e.mtimeMs}catch{return null}}function MT(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 NT(e,t){return e===null?{kind:`allow`}:e<-1e4?{kind:`allow-future-garbage`,futureMs:-e}:e<t?{kind:`deny`}:{kind:`allow`}}function PT(e){return Math.min(3e3*2**Math.min(Math.max(e,0),5),6e4)}function FT(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 IT(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 LT(){try{r.unlinkSync(Ge())}catch(e){e.code!==`ENOENT`&&t.stderr.write(`cc-candybar: could not reset spawn.backoff: ${e.message}\n`)}}function RT(){let e=We(),n=Ge(),r=FT(n),i=NT(zT(e),PT(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`),BT(e),IT(n,Math.min(r+1,5)),!0)}function zT(e){try{return Date.now()-r.statSync(e).mtimeMs}catch{return null}}function BT(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 VT=null;function HT(){let e=Ue();for(let n=0;n<2;n++){try{let n=r.openSync(e,`wx`,384);try{r.writeSync(n,JSON.stringify({pid:t.pid,ts:Date.now()}))}catch{}return VT={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(!UT(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 UT(e){try{let t=r.statSync(e);return Date.now()-t.mtimeMs>1e4}catch{return!0}}function WT(){if(!VT)return;let{fd:e,path:t}=VT;VT=null;try{r.closeSync(e)}catch{}try{r.unlinkSync(t)}catch{}}function GT(){try{return r.mkdirSync(Pe(),{recursive:!0}),null}catch(e){return`mkdir ${Pe()}: ${e.message}`}}function KT(){let e=t.execPath,n=t.argv[1];return n?ke({bin:e,args:[`--max-old-space-size=${vT(t.env)}`,n,`daemon`],category:`daemon-spawn`}).ok:!1}const qT=`cc-candybar`,JT=`dispatch`,YT=`set-state`,XT=`step-state`,ZT=`copy`,QT=`open-vscode`,$T=`toolbar-toggle`,eE=`show-config-error`,tE=`show-config-warning`,nE=`set-config`,rE=`step-config`,iE=`save`,aE=`save-preset`,oE=`delete-preset`,sE=`reset-config`,cE=`apply-layout-op`,lE=`undo`,uE=`redo`,dE=`apply-update`,fE=`doctor-run`,pE=`doctor-fix`,mE=`ceiling`,hE=`slash`;function gE(e){return e.map(encodeURIComponent).join(`/`)}function _E(e){return e.length===0?[]:e.split(`/`).map(decodeURIComponent)}function vE(e){return`${qT}://${JT}/${e.map(e=>`e=${encodeURIComponent(`${e.verb}/${gE(e.args)}`)}`).join(`&`)}`}function yE(e){return new w(e).getAll(`e`).map(CE)}const bE=new Set([YT,sE]);function xE(e){return e.reduce((e,t)=>{let n=e.at(-1),r=n&&SE(n,t);return r?[...e.slice(0,-1),r]:[...e,t]},[])}function SE(e,t){if(e.verb!==t.verb||!bE.has(e.verb))return;let[n,r]=[CE(e.value),CE(t.value)];return n.verb===r.verb?{verb:e.verb,value:`${n.verb}/${n.value}/${r.value}`}:void 0}function CE(e){let t=e.indexOf(`/`);return t===-1?{verb:e,value:``}:{verb:e.slice(0,t),value:e.slice(t+1)}}const wE=`1.97.2`;function TE(e,t){let n=(e.CLAUDE_CONFIG_DIR??``).split(`,`)[0].trim();return n===``?void 0:c.resolve(t,n)}function EE(e){return e??c.join(p.homedir(),`.claude`)}function DE(e){return c.join(e,`settings.json`)}function OE(e){return c.join(e,`plugins`,`installed_plugins.json`)}function kE(e){return r.existsSync(e)?r.readFileSync(e,`utf8`):``}function AE(e){let t;try{let n=kE(e);if(/^\s*$/.test(n))return{};t=Go.parse(n)}catch(t){throw Error(`cannot read ${e}: ${jE(t)}`,{cause:t})}if(typeof t!=`object`||!t||Array.isArray(t))throw Error(`cannot read ${e}: not a JSON object`);return t}const jE=e=>e instanceof Error?e.message:String(e),ME=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/;function NE(e){let t=ME.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 PE(e){return e.join(`.`)}function FE([e,t,n],[r,i,a]){return e-r||t-i||n-a}const IE=`@promptctl/cc-candybar`;async function LE(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`?NE(n.latest):Y}catch(e){return X(e instanceof Error?e.message:String(e))}}function RE(e,t){let n=NE(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=FE(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 zE(e,t){switch(t.kind){case`current`:return{stream:`stdout`,text:`✓ cc-candybar ${PE(t.installed)} is the latest release.\n`};case`ahead`:return{stream:`stdout`,text:`cc-candybar ${PE(t.installed)} is newer than the registry's latest release (${PE(t.latest)}): an unpublished build.\n`};case`stale`:{let n=PE(t.latest);return{stream:`stderr`,text:`⚠ cc-candybar ${PE(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 BE=`CCCandybarURLHandler`,VE=[],HE={"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 UE(e){return/^[A-Za-z0-9_./=,:-]+$/.test(e)?e:`'${e.replace(/'/g,`'\\''`)}'`}function WE(e,t){return[e,...t].map(UE).join(` `)}function GE(){return c.join(p.homedir(),`Applications`,`${BE}.app`)}function KE(){if(process.platform!==`darwin`)throw Error(`URL handler installation requires macOS (found platform: ${process.platform}).`)}function qE(){if(process.platform===`darwin`)return c.join(p.homedir(),`Library`,`Application Support`,`CCCandybar`);let e=process.env.XDG_DATA_HOME??c.join(p.homedir(),`.local`,`share`);return c.join(e,`cc-candybar`)}function JE(){return c.join(qE(),`bin`,`cc-candybar`)}function YE(){return c.join(qE(),`dist`,`index.mjs`)}function XE(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 ZE(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 QE(t){let n=HE[`${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 $E(e,t){c.resolve(e)!==c.resolve(t)&&r.copyFileSync(e,t)}function eD(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 ${IE}@latest install`);return n.toString(`latin1`)===`#!`?`node-shim`:`native`}finally{r.closeSync(t)}}function tD(){let e=ZE(process.argv[1]);if(!r.existsSync(e))throw Error(`install: bundled dist not found at ${e}. Reinstall the package.`);let t=QE(e);if(!r.existsSync(t.sourcePath))throw Error(`install: render entry not found at ${t.sourcePath}. Reinstall the package.`);r.mkdirSync(c.dirname(YE()),{recursive:!0}),r.mkdirSync(c.dirname(JE()),{recursive:!0}),$E(e,YE()),$E(t.sourcePath,JE()),r.chmodSync(JE(),493),r.rmSync(c.join(qE(),`url-handler.mjs`),{force:!0});let n=eD(JE());return process.stdout.write(`Staged cc-candybar v${wE} runtime at ${qE()}\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:JE(),distPath:YE(),entryKind:n}}function nD(){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>${qT}</string>`,` </array>`,` </dict>`,`</array>`].join(`
166
- `)}]}function rD(e){let t=GE();r.mkdirSync(c.dirname(t),{recursive:!0}),r.existsSync(t)&&r.rmSync(t,{recursive:!0,force:!0}),process.stdout.write(`Building ${t}\n`);let n=Oe({bin:`/usr/bin/osacompile`,args:[`-o`,t,`-e`,XE(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 nD())Oe({bin:`/usr/bin/plutil`,args:[`-remove`,e,i],category:`install.plutil`});for(let{key:e,xml:t}of nD()){let n=Oe({bin:`/usr/bin/plutil`,args:[`-insert`,e,`-xml`,t,i],category:`install.plutil`});if(!n.ok)throw process.stderr.write(n.stderr),Error(`plutil -insert ${e} failed (${n.reason})`)}process.stdout.write(`Registering ${qT}:// with Launch Services\n`);let a=Oe({bin:`/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister`,args:[`-f`,t],category:`install.lsregister`});if(!a.ok)throw process.stderr.write(a.stderr),Error(`lsregister failed (${a.reason})`);process.stdout.write(`✓ ${BE}.app installed and registered.\n`),process.stdout.write(` Test: open '${qT}://hello-world' && pbpaste\n`)}function iD(){KE(),rD(tD().distPath)}function aD(e,t=qT){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:ZT,value:r}:{verb:decodeURIComponent(r.slice(0,i)),value:r.slice(i+1)}}async function oD(e){e||(process.stderr.write(`url-handle: missing URL argument.
167
- `),process.exit(1));let t;try{t=aD(e)}catch(e){process.stderr.write(`url-handle: ${e instanceof Error?e.message:String(e)}\n`),process.exit(1)}let n=await sT(t.verb,t.value);n.kind===`ok`&&process.exit(0),n.kind===`transient`&&(kT(),process.stderr.write(`url-handle: daemon unavailable (${n.cause}: ${n.message})\n`),process.exit(1)),process.stderr.write(sD(n)+`
168
- `),process.exit(1)}function sD(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 cD(){return`✓ install complete.
161
+ Single-row example: root: { h: ["seg1", "seg2"] }`,line:G(e.source,[`layout`])}),t.root!==void 0&&(r.root=ad(e,`root`,t.root)),t.actions!==void 0&&(r.actions=rC(e,t.actions)),t.looks!==void 0&&(r.looks=KC(e,t.looks)),t.presets!==void 0&&(r.presets=JC(e,t.presets)),t.editGlobals!==void 0&&(r.editGlobals=Cl(e,`editGlobals`,t.editGlobals)),t.helpers!==void 0&&(r.helpers=YC(e,t.helpers)),pd(e,r),P_(e,r),q_(e,r),yu(e,r,hu,`the global settings menu`),r}const zw=new Set([`globals`,`variables`,`segments`,`layout`,`root`,`actions`,`looks`,`presets`,`editGlobals`,`helpers`]);function Bw(e){let t=Gw(e.termCols),n=Gw(e.termRows),r=Kw(e.ssh),i=Uw(e.tmux),a=Hw(e.configEnv),o=Vw(e.claudeConfigDir);return{...t!==void 0&&{termCols:t},...n!==void 0&&{termRows:n},...r!==void 0&&{ssh:r},...i!==void 0&&{tmux:i},...a!==void 0&&{configEnv:a},...o!==void 0&&{claudeConfigDir:o}}}function Vw(e){return typeof e==`string`&&c.isAbsolute(e)?e:void 0}function Hw(e){return typeof e==`string`&&e!==``?Sw(e):void 0}function Uw(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 Ww=1e4;function Gw(e){if(typeof e!=`number`||!Number.isFinite(e))return;let t=Math.floor(e);if(!(t<=0))return t>Ww?Ww:t}function Kw(e){return typeof e==`boolean`?e:void 0}var qw=class extends Error{constructor(e){super(e),this.name=`ProtocolError`}};function Jw(e){let t=Buffer.from(JSON.stringify(e),`utf8`),n=Buffer.alloc(4);return n.writeUInt32BE(t.length,0),Buffer.concat([n,t])}function Yw(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 qw(`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 qw(e instanceof Error?e.message:String(e));e instanceof Error&&(n.cause=e),t(n);return}}}}function Xw(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=Yw(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(Jw(t))})}async function Zw(e,t,n){let r=null;try{r=await nT(Fe(),t.connectMs);let i=await Xw(r,{v:3,...e},t.budgetMs);return eT(e.kind,i,n)}catch(e){return tT(e)}finally{r&&r.destroy()}}function Qw(e,t){return typeof e==`string`?e:t}function $w(e){return typeof e==`number`&&Number.isInteger(e)&&e>=0?e:0}function eT(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=Qw(r.error,`(no error message)`);switch(r.code){case`VERSION_MISMATCH`:return{kind:`permanent`,cause:`version_mismatch`,clientV:3,daemonV:$w(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 tT(e){if(e instanceof qw||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 nT(e,t){return new Promise((n,r)=>{let i=y.createConnection({path:e}),a=setTimeout(()=>{i.destroy(),r(Error(`CONNECT_TIMEOUT`))},t);i.once(`connect`,()=>{clearTimeout(a),n(i)}),i.once(`error`,e=>{clearTimeout(a),r(e)})})}function rT(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 iT={connectMs:50,budgetMs:150},aT={connectMs:50,budgetMs:200};function oT(e){let t=e.output;return typeof t==`string`?t:void 0}function sT(e,t,n,r){return Zw({kind:`render`,hookData:e,args:t,cwd:n,...r},iT,oT)}function cT(e,t){return Zw({kind:`click`,verb:e,value:t},aT,oT)}let lT=null;function uT(e){if(lT!==null)return lT;r.mkdirSync(c.dirname(e),{recursive:!0});try{lT=r.statSync(e).size}catch{lT=0}return lT}function dT(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{}lT=0}function Q(e,t){let n=`${new Date().toISOString()} [${e}] ${t}\n`;try{let e=qe(),t=uT(e);r.appendFileSync(e,n),lT=t+Buffer.byteLength(n,`utf8`),lT>=5242880&&dT(e)}catch(e){lT=null;try{process.stderr.write(`${n}cc-candybar: daemon.log unwritable: ${e.message}\n`)}catch{}}}function fT(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 pT(e,t){return e===`darwin`?[mT(`footprint`,[`-p`,String(t)]),mT(`vmmap`,[`--summary`,String(t)])]:e===`linux`?[hT(`/proc/self/smaps_rollup`),hT(`/proc/self/status`)]:[]}function mT(e,t){return{name:`${e} ${t.join(` `)}`,read:()=>{let n=Oe({bin:e,args:[...t],timeoutMs:5e3,category:`limits.memory-report`});return n.ok?n.stdout.trim().length>0?{kind:`text`,text:n.stdout}:{kind:`unavailable`,reason:`exited 0 but printed nothing`}:{kind:`unavailable`,reason:`${n.reason}${n.error===void 0?``:`: ${n.error}`}${gT(n.stderr)}`}}}}function hT(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 gT(e){let t=e.split(`
163
+ `).map(e=>e.trim()).find(e=>e.length>0);return t===void 0?``:` (${t})`}const _T=`CC_CANDYBAR_RSS_LIMIT_MB`;function vT(e){let t=e[_T];if(t===void 0)return 512;let n=/^\d+$/.test(t)?Number(t):NaN;if(!Number.isSafeInteger(n)||n<=0)throw Error(`${_T} must be a positive integer (MB), got ${JSON.stringify(t)}`);return n}function yT(e){return vT(e)*2}const bT=1024*1024;function xT(e){return vT(e)*bT}const ST={memoryReport:{prefix:`memory-`,suffix:`.txt`},heapSnapshot:{prefix:`heap-`,suffix:`.heapsnapshot`}};function CT(e,t,n){let{prefix:r,suffix:i}=ST[t];return c.join(e,`${r}${n}${i}`)}function wT(e){for(let t of Object.keys(ST)){let{prefix:n,suffix:r}=ST[t];if(e.startsWith(n)&&e.endsWith(r))return t}return null}function TT(e){let t=e.rssLimitBytes??512*bT,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 ET(e.log,`memory report`,()=>{let t=CT(e.snapshotDir,`memoryReport`,o);e.writeMemoryReport(t,e.captureMemoryReport()),e.log(`info`,`memory report written: ${t}`)}),ET(e.log,`heap snapshot`,()=>{let t=CT(e.snapshotDir,`heapSnapshot`,o);e.log(`info`,`heap snapshot written: ${e.writeHeapSnapshot(t)}`)}),ET(e.log,`artifact rotation`,()=>{OT(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 ET(e,t,n){try{n()}catch(n){e(`warn`,`${t} failed: ${n.message}`)}}function DT(e){let t=e.slice(e.lastIndexOf(`/`)+1),n=wT(t);if(n===null)return t;let{prefix:r,suffix:i}=ST[n];return t.slice(r.length,t.length-i.length)}function OT(e,t,n){let r=new Map;for(let t of e){let e=DT(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 kT(e,t,n={}){let i=Pe();return{now:()=>Date.now(),pid:process.pid,snapshotDir:i,log:Q,memoryBytes:()=>{let e=process.memoryUsage();return{rss:e.rss,heapTotal:e.heapTotal}},captureMemoryReport:()=>fT(pT(process.platform,process.pid)),writeMemoryReport:(e,t)=>r.writeFileSync(e,t,{mode:384}),writeHeapSnapshot:e=>ne.writeHeapSnapshot(e),listArtifacts:()=>{try{return r.readdirSync(i).filter(e=>wT(e)!==null).map(e=>c.join(i,e))}catch{return[]}},removeFile:e=>r.unlinkSync(e),shutdown:t,startedAtMs:e,...n}}function AT(e={}){if(KT()!==null)return;let n=e.spawn??qT,r=UT();if(r.kind===`contended`){let e=MT();e!==null&&e>2e3&&(t.stderr.write(`cc-candybar: spawn-lock held ${e}ms (likely crashed holder) — spawning unlocked\n`),jT(n));return}if(r.kind===`error`){t.stderr.write(`cc-candybar: spawn-lock unavailable (${r.reason}) — spawning unlocked\n`),jT(n);return}try{jT(n)}finally{GT()}}function jT(e){zT()&&NT(e)}function MT(){try{let e=r.statSync(Ue());return Date.now()-e.mtimeMs}catch{return null}}function NT(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 PT(e,t){return e===null?{kind:`allow`}:e<-1e4?{kind:`allow-future-garbage`,futureMs:-e}:e<t?{kind:`deny`}:{kind:`allow`}}function FT(e){return Math.min(3e3*2**Math.min(Math.max(e,0),5),6e4)}function IT(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 LT(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 RT(){try{r.unlinkSync(Ge())}catch(e){e.code!==`ENOENT`&&t.stderr.write(`cc-candybar: could not reset spawn.backoff: ${e.message}\n`)}}function zT(){let e=We(),n=Ge(),r=IT(n),i=PT(BT(e),FT(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`),VT(e),LT(n,Math.min(r+1,5)),!0)}function BT(e){try{return Date.now()-r.statSync(e).mtimeMs}catch{return null}}function VT(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 HT=null;function UT(){let e=Ue();for(let n=0;n<2;n++){try{let n=r.openSync(e,`wx`,384);try{r.writeSync(n,JSON.stringify({pid:t.pid,ts:Date.now()}))}catch{}return HT={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(!WT(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 WT(e){try{let t=r.statSync(e);return Date.now()-t.mtimeMs>1e4}catch{return!0}}function GT(){if(!HT)return;let{fd:e,path:t}=HT;HT=null;try{r.closeSync(e)}catch{}try{r.unlinkSync(t)}catch{}}function KT(){try{return r.mkdirSync(Pe(),{recursive:!0}),null}catch(e){return`mkdir ${Pe()}: ${e.message}`}}function qT(){let e=t.execPath,n=t.argv[1];return n?ke({bin:e,args:[`--max-old-space-size=${yT(t.env)}`,n,`daemon`],category:`daemon-spawn`}).ok:!1}const JT=`cc-candybar`,YT=`dispatch`,XT=`set-state`,ZT=`step-state`,QT=`copy`,$T=`open-vscode`,eE=`toolbar-toggle`,tE=`show-config-error`,nE=`show-config-warning`,rE=`set-config`,iE=`step-config`,aE=`save`,oE=`save-preset`,sE=`delete-preset`,cE=`reset-config`,lE=`apply-layout-op`,uE=`undo`,dE=`redo`,fE=`apply-update`,pE=`doctor-run`,mE=`doctor-fix`,hE=`ceiling`,gE=`slash`;function _E(e){return e.map(encodeURIComponent).join(`/`)}function vE(e){return e.length===0?[]:e.split(`/`).map(decodeURIComponent)}function yE(e){return`${JT}://${YT}/${e.map(e=>`e=${encodeURIComponent(`${e.verb}/${_E(e.args)}`)}`).join(`&`)}`}function bE(e){return new w(e).getAll(`e`).map(wE)}const xE=new Set([XT,cE]);function SE(e){return e.reduce((e,t)=>{let n=e.at(-1),r=n&&CE(n,t);return r?[...e.slice(0,-1),r]:[...e,t]},[])}function CE(e,t){if(e.verb!==t.verb||!xE.has(e.verb))return;let[n,r]=[wE(e.value),wE(t.value)];return n.verb===r.verb?{verb:e.verb,value:`${n.verb}/${n.value}/${r.value}`}:void 0}function wE(e){let t=e.indexOf(`/`);return t===-1?{verb:e,value:``}:{verb:e.slice(0,t),value:e.slice(t+1)}}const TE=`1.97.3`;function EE(e,t){let n=(e.CLAUDE_CONFIG_DIR??``).split(`,`)[0].trim();return n===``?void 0:c.resolve(t,n)}function DE(e){return e??c.join(p.homedir(),`.claude`)}function OE(e){return c.join(e,`settings.json`)}function kE(e){return c.join(e,`plugins`,`installed_plugins.json`)}function AE(e){return r.existsSync(e)?r.readFileSync(e,`utf8`):``}function jE(e){let t;try{let n=AE(e);if(/^\s*$/.test(n))return{};t=Go.parse(n)}catch(t){throw Error(`cannot read ${e}: ${ME(t)}`,{cause:t})}if(typeof t!=`object`||!t||Array.isArray(t))throw Error(`cannot read ${e}: not a JSON object`);return t}const ME=e=>e instanceof Error?e.message:String(e),NE=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/;function PE(e){let t=NE.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 FE(e){return e.join(`.`)}function IE([e,t,n],[r,i,a]){return e-r||t-i||n-a}const LE=`@promptctl/cc-candybar`;async function RE(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`?PE(n.latest):Y}catch(e){return X(e instanceof Error?e.message:String(e))}}function zE(e,t){let n=PE(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=IE(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 BE(e,t){switch(t.kind){case`current`:return{stream:`stdout`,text:`✓ cc-candybar ${FE(t.installed)} is the latest release.\n`};case`ahead`:return{stream:`stdout`,text:`cc-candybar ${FE(t.installed)} is newer than the registry's latest release (${FE(t.latest)}): an unpublished build.\n`};case`stale`:{let n=FE(t.latest);return{stream:`stderr`,text:`⚠ cc-candybar ${FE(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 VE=`CCCandybarURLHandler`,HE=[],UE={"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 WE(e){return/^[A-Za-z0-9_./=,:-]+$/.test(e)?e:`'${e.replace(/'/g,`'\\''`)}'`}function GE(e,t){return[e,...t].map(WE).join(` `)}function KE(){return c.join(p.homedir(),`Applications`,`${VE}.app`)}function qE(){if(process.platform!==`darwin`)throw Error(`URL handler installation requires macOS (found platform: ${process.platform}).`)}function JE(){if(process.platform===`darwin`)return c.join(p.homedir(),`Library`,`Application Support`,`CCCandybar`);let e=process.env.XDG_DATA_HOME??c.join(p.homedir(),`.local`,`share`);return c.join(e,`cc-candybar`)}function YE(){return c.join(JE(),`bin`,`cc-candybar`)}function XE(){return c.join(JE(),`dist`,`index.mjs`)}function ZE(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 QE(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 $E(t){let n=UE[`${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 eD(e,t){c.resolve(e)!==c.resolve(t)&&r.copyFileSync(e,t)}function tD(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 ${LE}@latest install`);return n.toString(`latin1`)===`#!`?`node-shim`:`native`}finally{r.closeSync(t)}}function nD(){let e=QE(process.argv[1]);if(!r.existsSync(e))throw Error(`install: bundled dist not found at ${e}. Reinstall the package.`);let t=$E(e);if(!r.existsSync(t.sourcePath))throw Error(`install: render entry not found at ${t.sourcePath}. Reinstall the package.`);r.mkdirSync(c.dirname(XE()),{recursive:!0}),r.mkdirSync(c.dirname(YE()),{recursive:!0}),eD(e,XE()),eD(t.sourcePath,YE()),r.chmodSync(YE(),493),r.rmSync(c.join(JE(),`url-handler.mjs`),{force:!0});let n=tD(YE());return process.stdout.write(`Staged cc-candybar v${TE} runtime at ${JE()}\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:YE(),distPath:XE(),entryKind:n}}function rD(){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>${JT}</string>`,` </array>`,` </dict>`,`</array>`].join(`
166
+ `)}]}function iD(e){let t=KE();r.mkdirSync(c.dirname(t),{recursive:!0}),r.existsSync(t)&&r.rmSync(t,{recursive:!0,force:!0}),process.stdout.write(`Building ${t}\n`);let n=Oe({bin:`/usr/bin/osacompile`,args:[`-o`,t,`-e`,ZE(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 rD())Oe({bin:`/usr/bin/plutil`,args:[`-remove`,e,i],category:`install.plutil`});for(let{key:e,xml:t}of rD()){let n=Oe({bin:`/usr/bin/plutil`,args:[`-insert`,e,`-xml`,t,i],category:`install.plutil`});if(!n.ok)throw process.stderr.write(n.stderr),Error(`plutil -insert ${e} failed (${n.reason})`)}process.stdout.write(`Registering ${JT}:// with Launch Services\n`);let a=Oe({bin:`/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister`,args:[`-f`,t],category:`install.lsregister`});if(!a.ok)throw process.stderr.write(a.stderr),Error(`lsregister failed (${a.reason})`);process.stdout.write(`✓ ${VE}.app installed and registered.\n`),process.stdout.write(` Test: open '${JT}://hello-world' && pbpaste\n`)}function aD(){qE(),iD(nD().distPath)}function oD(e,t=JT){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:QT,value:r}:{verb:decodeURIComponent(r.slice(0,i)),value:r.slice(i+1)}}async function sD(e){e||(process.stderr.write(`url-handle: missing URL argument.
167
+ `),process.exit(1));let t;try{t=oD(e)}catch(e){process.stderr.write(`url-handle: ${e instanceof Error?e.message:String(e)}\n`),process.exit(1)}let n=await cT(t.verb,t.value);n.kind===`ok`&&process.exit(0),n.kind===`transient`&&(AT(),process.stderr.write(`url-handle: daemon unavailable (${n.cause}: ${n.message})\n`),process.exit(1)),process.stderr.write(cD(n)+`
168
+ `),process.exit(1)}function cD(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 lD(){return`✓ install complete.
169
169
  Restart Claude Code to pick up the new statusline.
170
- Tip: every bar carries a settings menu — click it (${Wc} by\n default) for quick actions, preset switching, edit mode, and clickable\n theme/look/style/wrap/padding controls.\n`}async function lD(e){let t=e.includes(`--force`),n=e.filter(e=>e!==`--force`),r=n.length>0?n:[...VE],i=tD();process.platform===`darwin`?rD(i.distPath):process.stdout.write(`Skipping URL handler (cmd-click verbs are macOS-only).
171
- `),uD(i.binPath,r,t),process.stdout.write(cD());let a=zE(IE,RE(wE,await LE(IE,fetch,`https://registry.npmjs.org`)));process[a.stream].write(a.text)}function uD(e,t,n,i){let a=i??DE(EE(TE(process.env,process.cwd())));r.mkdirSync(c.dirname(a),{recursive:!0});let o={};if(r.existsSync(a))try{o=JSON.parse(r.readFileSync(a,`utf-8`))}catch(e){throw Error(`Could not parse ${a}: ${e instanceof Error?e.message:String(e)}`)}let s=o.statusLine?.command,l=[e,UE(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:WE(e,t)},k(a,JSON.stringify(o,null,2)),process.stdout.write(`Updated ${a}\n`)}function dD(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 fD(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 pD(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 mD(e,t){let n=fD(e);if(n.kind===`owned`&&n.pid===t)try{r.unlinkSync(e)}catch{}}function hD(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 gD(e,t,n,r){let i=_D(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 _D(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 vD(e){let t=!1;function n(){let n=gD(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 yD(e,t=Oe){let n=t({bin:`ps`,args:[`-o`,`lstart=`,`-p`,String(e)],category:`process-fingerprint`,timeoutMs:2e3,env:{...process.env,LC_ALL:`C`,TZ:`UTC`}});if(n.ok){let e=n.stdout.trim();return e.length>0?{kind:`start`,token:e}:{kind:`unavailable`,detail:`ps produced no start-time`}}return{kind:`unavailable`,detail:n.reason===`spawn-error`?n.error??`ps spawn failed`:`ps ${n.reason} (exit ${n.exitCode})`}}function bD(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 xD(e,t=yD){let n=t(e);return n.kind===`start`?n.token:null}const SD=`CC_CANDYBAR_PARENT_PID`;function CD(e){let t=e[SD];if(t===void 0)return{kind:`outlives-nobody`};let n=Number.parseInt(t,10);if(!Number.isInteger(n)||n<=0)throw Error(`${SD} must be a positive integer pid, got ${JSON.stringify(t)}`);return{kind:`anchored`,pid:n}}function wD(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 TD(e){try{return t.kill(e,0),!0}catch(e){return e.code===`EPERM`}}function ED(){let e=Number(process.env.CC_CANDYBAR_DAEMON_CEILING??``);return Number.isInteger(e)&&e>0?e:16}function DD(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 OD(e){try{return r.readdirSync(e).filter(e=>e.endsWith(`.json`)).map(t=>c.join(e,t))}catch{return[]}}function kD(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 AD(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 jD(e){if(!e.isolated)return{decision:DD(!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=DD(!0,AD(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 MD(e,t,n,r){let i=n(e);if(i!==null&&i.pid===t)try{r(e)}catch{}}function ND(e,t={}){return{isolated:!!process.env.CC_CANDYBAR_SOCKET,registryDir:He(),ceiling:ED(),pid:process.pid,startTime:e,isSameLiveProcess:(e,t)=>bD(e,t,{readStartTime:yD,pidAlive:TD}),listFiles:OD,readEntry:kD,removeFile:e=>{try{r.unlinkSync(e)}catch{}},writeEntry:(e,t)=>{let n=`${e}.${t.pid}.tmp`;try{r.writeFileSync(n,JSON.stringify(t),{mode:384}),r.renameSync(n,e)}catch(e){try{r.unlinkSync(n)}catch(e){e.code}throw e}},ensureDirSafe:process.env.CC_CANDYBAR_DAEMON_REGISTRY_DIR?Ie:e=>{Ie(c.dirname(e)),Ie(e)},...t}}function PD(e){return e<32||e===127||e>=128&&e<=159}function FD(e){let t=``;for(let n of e)t+=PD(n.codePointAt(0)??0)?` `:n;return t.replace(/\s+/g,` `).trim()}function ID(e,t){let n=FD(e),r=``,i=0;for(let e of n){if(i===t)return r.replace(/.$/u,`…`);r+=e,i++}return r}const LD=`\x1B[38;2;255;255;255m`,RD=`\x1B[48;2;200;40;40m`;function zD(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 BD={fg:zD(LD),bg:zD(RD)},VD={fg:zD(`\x1B[38;2;0;0;0m`),bg:zD(`\x1B[48;2;220;160;40m`)},HD={unicode:Fi,ascii:{glyph:`>`,divider:`|`,lead:`<`,tail:`>`}},UD={unicode:{},ascii:{left:`(`,right:`)`}};function WD(e,t,n){switch(e){case`capsule`:return new Vi(UD[t]);case`plain`:return new Hi(n===void 0?{}:{separator:n});case`powerline`:return new Ri(HD[t]);default:return e}}const GD=new Map;function KD(e){let t=JSON.stringify([e.style,e.charset,e.separator??null]),n=GD.get(t);if(n!==void 0)return n;let r=WD(e.style,e.charset,e.separator),i=e=>new U(`x`,{end:``,overflow:`ignore`,style:new V({bgcolor:e})}),a=e=>new U(Gi(new Oi(e,r),{colorSystem:null}).replace(/\n$/,``)).cellLength,o=a([i(`#101010`)]),s={chrome:o-1,seam:a([i(`#101010`),i(`#202020`)])-o-1};return GD.set(t,s),s}function qD(e){return KD(e).chrome}function JD(e){return KD(e).seam}function YD(e,t){if(e.length===0)return``;let n=WD(t.style,t.charset,t.separator),r=t.colorCompatibility,i=t.wrap&&Number.isFinite(t.width)?Gi(new Zi([...e],{joiner:n}),{width:t.width,colorSystem:r}):Gi(new Oi([...e],n),{colorSystem:r});if(!i.endsWith(`
172
- `))throw Error(`renderStripCells: rich-js strip output did not end its last line`);return i.slice(0,-1)}function XD(e){return Math.min(20,e??20)}const ZD={heading:`ERROR`,glyph:`⚠`,colors:BD},QD={heading:`WARNING`,glyph:`⚠`,colors:VD},$D={heading:`UPDATE`,glyph:`⬆`,colors:VD};function eO(e,t){return{text:FD(e),link:t}}function tO(e,t,n){let[r,...i]=[nO(e,ZD,eE),t,nO(n,QD,tE)].flat();return r===void 0?null:{channels:[r,...i]}}function nO(e,t,n){let r=vE([{verb:n,args:[e]}]),[i,...a]=e.split(/\r\n|\r|\n/).map(e=>eO(e,r)).filter(e=>e.text!==``).map(e=>[e]);return i===void 0?[]:[{severity:t,message:e,lines:[i,...a]}]}function rO(e){return e.channels.map(e=>`${e.severity.heading}\n${e.message}\n`).join(`
173
- `)}function iO(e,t,n,r){if(t===null)return e;let i=aO(r),a=t.channels.flatMap(e=>oO(e,i)),o=n.failedConfigFile!==null||a.length>r.rowCap,s=a.slice(0,r.rowCap-Number(o)),c=o?[sO(t,n,a.length-s.length,i)]:[],l=[...s,...c].join(`
174
- `);return e?`${l}\n${e}`:l}function aO(e){return{style:`plain`,separator:``,width:e.width,wrap:!0,padding:0,charset:`unicode`,colorCompatibility:e.colorCompatibility}}function oO(e,t){let n=new V({bgcolor:e.severity.colors.bg,color:e.severity.colors.fg}),r=Lt(Math.max(2,t.width-1)),i=(e,t)=>new U(`${e} `,{style:t,end:``,overflow:`ignore`});return e.lines.flatMap((a,o)=>YD([i(o===0?e.severity.glyph:` `,n.withLink(a[0].link)),...a.flatMap(e=>{let t=n.withLink(e.link);return e.text.split(` `).flatMap(e=>Vt(e,r)).map(e=>i(e,t))})],t).split(`
175
- `))}function sO(e,t,n,r){let{colors:i}=e.channels[0].severity,{fullText:a,failedConfigFile:o}=t,s=new V({bgcolor:i.bg,color:i.fg}),c=(e,t)=>new U(e,{style:t,end:``,overflow:`ignore`}),l=n>0?[c(`${n} more rows · `,s),a.kind===`file`?c(`open full text`,s.withLink(T(a.path).href)):c(`full text unavailable: ${FD(a.reason)}`,s)]:[],u=o===null?[]:[c(`${l.length>0?` · `:``}open `,s),c(FD(o),s.withLink(T(o).href))],d=[c(`↳ `,s),...l,...u.slice(0,-1)],f=d.reduce((e,t)=>e+t.cellLength,0),p=u.slice(-1).map(e=>e.truncate(Math.max(1,r.width-f),{mode:`middle`})),m=U.fromFragments([...d,...p]).truncate(r.width);return m.overflow=`ignore`,YD([m],r)}const cO=e=>!e.startsWith(`.`)&&!e.endsWith(`~`);function lO(e,t){return t.isSymbolicLink()?Buffer.from(r.readlinkSync(e)):r.readFileSync(e)}function uO(e,t){return r.readdirSync(t).filter(cO).sort().flatMap(n=>{let i=c.join(t,n),a=r.lstatSync(i,{throwIfNoEntry:!1});return a===void 0?[]:a.isDirectory()?uO(e,i):[[c.relative(e,i).split(c.sep).join(`/`),lO(i,a)]]})}function dO(e){let t=E.createHash(`sha256`);for(let[n,r]of uO(e,e))t.update(n).update(`\0`).update(r).update(`\0`);return t.digest(`hex`)}const fO=e=>e.slice(0,7);function pO(e){return c.dirname(c.dirname(e))}function mO(){return{version:wE,digest:`0f29b90a2ddc37d982ce491b1c6f6f10c7fbfa5244fe4017fdf520764c795981`}}function hO(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 gO(e,t){try{let n=pO(ie(e)),i=c.join(n,`src`);if(!r.existsSync(i))return{kind:`not-source-checkout`};let a=t(),o=dO(i);return o===a.digest?{kind:`current`,root:n,stamp:a}:{kind:`stale`,root:n,source:{version:hO(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 _O(e){return e.op===`remove`?`remove:${e.target}`:`insert:${e.segment}:${e.anchor}:${e.relation}`}function vO(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 yO(e,t,n){let r=ks(e,new Set(n.map(Os).filter(e=>e.includes(t)).flat()));return r===e?{seg:e}:{seg:e,id:r}}const bO=/^-?\d+$/;function xO(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 SO(e){return t=>{if(!t)return{ok:!1,reason:`${e} value is required`};if(!bO.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 CO(e,t,n){return r=>r?bO.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 wO(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=>!bO.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 TO(e){return e===`config`?`set-config`:`set-state`}function EO(e,t,n){return t.kind===`int`?SO(`menu page "${e}"`):t.kind===`range`?CO(t.min,t.max,`${n} stepper "${e}"`):xO(t.allowed,`${n} "${e}"`,TO(n))}function DO(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:wO(e,n,t)}))}function OO(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=wO(e,[...a.specs,i],t);a.specs.push(i),a.merged=n,a.validator=EO(e,n,t)}else{let r=wO(e,[i],t);n.set(e,{permanent:!1,specs:[i],merged:r,validator:EO(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=wO(e,r.specs,t),r.validator=EO(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 kO=OO({},`config`);function AO(){return kO.listKeys()}function jO(e,t){return kO.validate(e,t)}function MO(e){return kO.rangeParamsFor(e)}function NO(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:Vb(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:[_O({op:`remove`,target:e.removeSegment})]}}]:`insertSegment`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:[_O({op:`insert`,segment:e.insertSegment,anchor:e.anchor,relation:e.relation})]}}]:`insertSegmentFrom`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:Vb(e.insertSegmentFrom,t).members.map(t=>_O({op:`insert`,segment:t,anchor:e.anchor,relation:e.relation}))}}]:[{key:e.persist,spec:{kind:`range`,min:e.min,max:e.max}}]:[]}function PO(e,t){let n=Ol(e.globals).get(t);return n===void 0?null:String(n)}function FO(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?Xb(n.persist):null;e?.scope===`preset-root`&&t.add(Jb(e.preset))}return[...t].map(e=>({key:e,spec:{kind:`allow-list`,allowed:[]}}))}function IO(e){let t=new Map([...zb(e),...mx(e)]);return[...FO(e),...Object.values(e.actions).flatMap(e=>NO(e,t))]}function LO(e){return DO(IO(e),`config`)}function RO(e,t){return kO.register(e,t)}const zO=Array.from({length:10},(e,t)=>(t+1)*1e5),BO=zO[0],VO=zO[zO.length-1];function HO(e){let t;try{t=AE(e)}catch(e){return X(e instanceof Error?e.message:String(e))}let n=t.autoCompactWindow;return n===void 0?J(`auto`):typeof n==`number`&&Number.isInteger(n)&&n>=BO&&n<=VO?J(n):X(`${e}: autoCompactWindow is ${JSON.stringify(n)}, not a window /autocompact accepts (${BO}–${VO} tokens)`)}function UO(e,t){let n=Math.min(t??VO,VO),r=e===`auto`?n:Math.min(e,n);return{window:e===`auto`?0:e,applied:e===`auto`?0:r,lower:zO.filter(e=>e<r).at(-1)??0,higher:zO.find(e=>e>r&&e<=n)??0}}const WO=Xx(`commands.`),GO=`trimPrefix "/" (trimPrefix .project_dir .current_dir)`,KO=`{{ \$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 (${GO}) (basename .project_dir) (ne (${GO}) "") }}{{ end }}{{ end }}{{ abbreviatePath \$dir }}`,qO={min:0,max:100,step:5},JO={warnAt:{label:`warning at %`,domain:qO,default:50},errorAt:{label:`error at %`,domain:{...qO,atLeast:`warnAt`},default:80}};function YO(e){return{budget:{label:`budget $`,domain:{min:0,max:1e4,step:5},default:e},warnAt:{label:`warning at %`,domain:qO,default:80}}}const XO={globals:{palette:`tokyo-night`},variables:{...WO.variables,..._b,current_dir:{kind:`input`,path:`workspace.current_dir`,default:`?`},"model.display_name":{kind:`input`,path:`model.display_name`,default:``},version:{kind:`input`,path:`version`,default:``},home:{kind:`input`,path:`home`,default:``},"tmux.session":{kind:`input`,path:`tmux.session`,default:``},"host.name":{kind:`input`,path:`host.name`,default:``},"host.user":{kind:`input`,path:`host.user`,default:``},"host.ssh":{kind:`input`,path:`host.ssh`,type:`boolean`,default:!1},"git.repoName":{kind:`input`,path:`git.repoName`,default:``},"git.branch":{kind:`input`,path:`git.branch`,default:``},"git.sha":{kind:`input`,path:`git.sha`,default:``},"git.ahead":{kind:`input`,path:`git.ahead`,type:`number`,default:0},"git.behind":{kind:`input`,path:`git.behind`,type:`number`,default:0},"git.staged":{kind:`input`,path:`git.staged`,type:`number`,default:0},"git.unstaged":{kind:`input`,path:`git.unstaged`,type:`number`,default:0},"git.untracked":{kind:`input`,path:`git.untracked`,type:`number`,default:0},"git.conflicts":{kind:`input`,path:`git.conflicts`,type:`number`,default:0},"git.upstream":{kind:`input`,path:`git.upstream`,default:``},"git.stash":{kind:`input`,path:`git.stash`,type:`number`,default:0},"git.status":{kind:`input`,path:`git.status`,default:`clean`},"git.operation":{kind:`input`,path:`git.operation`,default:``},"git.timeSinceCommit":{kind:`input`,path:`git.timeSinceCommit`,type:`number`,default:0},"git.color.branch":{kind:`literal`,value:`primary`},"git.color.staged":{kind:`literal`,value:`success`},"git.color.unstaged":{kind:`literal`,value:`warning`},"git.color.untracked":{kind:`literal`,value:`accent`},"git.color.conflicts":{kind:`literal`,value:`error`},"git.color.ahead":{kind:`literal`,value:`success`},"git.color.behind":{kind:`literal`,value:`warning`},"git.color.stash":{kind:`literal`,value:`accent`},"git.detail":{kind:`state`,key:`git-detail`,default:`collapsed`},"git.prNumber":{kind:`input`,path:`git.prNumber`,type:`number`,default:0},"git.prState":{kind:`input`,path:`git.prState`,default:``},"git.prUrl":{kind:`input`,path:`git.prUrl`,default:``},"git.prError":{kind:`input`,path:`git.prError`,default:``},"cache.expiresAt":{kind:`input`,path:`cache.expiresAt`,type:`number`,default:0},"session.cost":{kind:`input`,path:`session.cost`,type:`number`,default:0},"session.tokens":{kind:`input`,path:`session.tokens`,type:`number`,default:0},"today.cost":{kind:`input`,path:`today.cost`,type:`number`,default:0},"today.tokens":{kind:`input`,path:`today.tokens`,type:`number`,default:0},"block.nativeUtilization":{kind:`input`,path:`block.nativeUtilization`,type:`number`,default:0},"block.resetsAt":{kind:`input`,path:`block.resetsAt`,type:`number`,default:0},"weekly.percentage":{kind:`input`,path:`weekly.percentage`,type:`number`,default:0},"weekly.resetsAt":{kind:`input`,path:`weekly.resetsAt`,type:`number`,default:0},"burn.costPerHour":{kind:`input`,path:`burn.costPerHour`,type:`number`,default:-1},"block.etaMinutes":{kind:`input`,path:`block.etaMinutes`,type:`number`,default:-1},"weekly.etaMinutes":{kind:`input`,path:`weekly.etaMinutes`,type:`number`,default:-1},"speed.input":{kind:`input`,path:`speed.input`,type:`number`,default:-1},"speed.output":{kind:`input`,path:`speed.output`,type:`number`,default:-1},"speed.total":{kind:`input`,path:`speed.total`,type:`number`,default:-1},"speed.history":{kind:`input`,path:`speed.history`,type:`string`,default:``},"context.totalTokens":{kind:`input`,path:`context.totalTokens`,type:`number`,default:0},"context.contextLeft":{kind:`input`,path:`context.contextLeft`,type:`number`,default:100},"memento.ceiling":{kind:`input`,path:`memento.ceiling`,type:`number`,default:-1},"memento.off":{kind:`input`,path:`memento.off`,type:`boolean`,default:!1},"memento.session":{kind:`input`,path:`memento.session`,default:``},"memento.error":{kind:`input`,path:`memento.error`,default:``},"autocompact.window":{kind:`input`,path:`autocompact.window`,type:`number`,default:-1},...Object.fromEntries([`applied`,`lower`,`higher`].map(e=>[`autocompact.${e}`,{kind:`input`,path:`autocompact.${e}`,type:`number`,default:0}])),"autocompact.error":{kind:`input`,path:`autocompact.error`,default:``},"metrics.lastResponseTime":{kind:`input`,path:`metrics.lastResponseTime`,type:`number`,default:0},"metrics.responseTime":{kind:`input`,path:`metrics.responseTime`,type:`number`,default:0},"metrics.sessionDuration":{kind:`input`,path:`metrics.sessionDuration`,type:`number`,default:0},"metrics.messageCount":{kind:`input`,path:`metrics.messageCount`,type:`number`,default:0},"metrics.linesAdded":{kind:`input`,path:`metrics.linesAdded`,type:`number`,default:0},"metrics.linesRemoved":{kind:`input`,path:`metrics.linesRemoved`,type:`number`,default:0},"activity.command":{kind:`input`,path:`activity.command`,type:`string`,default:``},"activity.todo.total":{kind:`input`,path:`activity.todo.total`,type:`number`,default:0},"activity.todo.completed":{kind:`input`,path:`activity.todo.completed`,type:`number`,default:0},"activity.todo.position":{kind:`input`,path:`activity.todo.position`,type:`number`,default:0},"activity.todo.active":{kind:`input`,path:`activity.todo.active`,type:`string`,default:``},"activity.tool.running":{kind:`input`,path:`activity.tool.running`,type:`string`,default:``},"activity.tool.done":{kind:`input`,path:`activity.tool.done`,type:`string`,default:``}},segments:{directory:{description:"The current directory, shortened fish-style — `~` under home, project-relative inside the project.",template:KO},model:{description:`The active model's display name.`,template:`✱ {{ formatModelName .model.display_name }}`,when:`{{ ne .model.display_name "" }}`},sessionId:{description:`The session id, truncated to 8 characters.`,template:`⌗{{ trunc 8 .session.id }}`,when:`{{ ne .session.id "" }}`},version:{description:`The Claude Code version reported in the hook payload.`,template:`◈ v{{ .version }}`,when:`{{ ne .version "" }}`},tmux:{description:`The tmux session name; hidden when not inside tmux.`,template:`tmux:{{ .tmux.session | default "none" }}`,when:`{{ ne .tmux.session "" }}`},host:{description:`user@host on a warning background, shown only over SSH.`,template:`⇄ {{ .host.user | default "?" }}@{{ .host.name | default "?" }}`,bg:`warning`,when:`{{ .host.ssh }}`},gitaculous:{description:`The git state: a summary (branch, ahead/behind, S/U/? flags) that the arrow at its right edge expands to every fact — repo, in-progress operation, sha, upstream ±, stash count, time since the last commit.`,template:`{{ if eq .git.detail "expanded" }}{{ template "gitExpanded" . }}{{ else }}{{ template "gitCollapsed" . }}{{ end }} {{ action "gitDetail" "▸" "◂" }}`,fg:`{{ readableOn (mix (color "foreground") (bgOf) 60) (bgOf) 3 }}`,when:`{{ ne .git.branch "" }}`,settings:{aheadBehind:{label:`ahead/behind`,domain:`bool`,default:!0},flags:{label:`dirty flags`,domain:`bool`,default:!0},operation:{label:`operation`,domain:`bool`,default:!0},repo:{label:`repo name`,domain:`bool`,default:!0},sha:{label:`commit hash`,domain:`bool`,default:!0},stash:{label:`stash`,domain:`bool`,default:!0},upstream:{label:`upstream`,domain:`bool`,default:!0},age:{label:`time since commit`,domain:`bool`,default:!0}}},gitPr:{description:"The pull request open for this branch, as a link; `⚠ PR` when the forge lookup failed.",template:`{{ if ne .git.prUrl "" }}{{ link .git.prUrl (printf "⇆ #%v" .git.prNumber) }}{{ else }}⚠ PR{{ end }}`,when:`{{ or (ne .git.prUrl "") (ne .git.prError "") }}`},toolbar:{description:`Quick actions: copy the session id, and open the project, transcript or repo.`,template:Vx(``).template},commands:{description:`Type /compact, /model or /clear into this session; /clear asks for a second click.`,template:WO.template},themeSwitcher:{description:"`◀ <theme> ▶`: the theme the bar is wearing; ◀ and ▶ switch this session to the previous or next theme, wrapping at the ends.",template:`{{ carousel "stepTheme" 0 }}`},session:{description:`This session's cost and token total, with a budget warning once a budget is configured.`,template:`§ {{ template "formatCost" .session.cost }} ({{ template "formatTokens" .session.tokens }}){{ template "budgetStatus" (dict "cost" .session.cost "budget" .settings.budget "warn" .settings.warnAt) }}`,settings:YO(0)},today:{description:`Today's cost and tokens across every session, with a budget warning once a budget is configured.`,template:`☉ {{ template "formatCost" .today.cost }} ({{ template "formatTokens" .today.tokens }}){{ template "budgetStatus" (dict "cost" .today.cost "budget" .settings.budget "warn" .settings.warnAt) }}`,settings:YO(50)},block:{description:`The 5-hour rate-limit block: percent used and time to reset, heating to warning then error.`,template:`◱ {{ round .block.nativeUtilization }}% ({{ template "formatResetCountdown" .block.resetsAt }})`,bg:`{{ ramp (round .block.nativeUtilization) "step" 0 (tint) .settings.warnAt "warning" .settings.errorAt "error" }}`,settings:JO,when:`{{ gt .block.resetsAt 0 }}`},weekly:{description:`The weekly rate-limit quota: percent used and time to reset, heating to warning then error.`,template:`◑ {{ round .weekly.percentage }}% ({{ template "formatResetCountdown" .weekly.resetsAt }})`,bg:`{{ ramp (round .weekly.percentage) "step" 0 (tint) .settings.warnAt "warning" .settings.errorAt "error" }}`,settings:JO,when:`{{ gt .weekly.resetsAt 0 }}`},burnrate:{description:`Spend per hour, with the projected time to the 5-hour and weekly limits.`,template:`⚡ {{ template "formatRate" .burn.costPerHour }} · {{ template "formatEta" .block.etaMinutes }} to 5h · {{ template "formatEta" .weekly.etaMinutes }} to wk`,bg:`{{ ramp .block.etaMinutes "step" -1 (tint) 0 "error" .settings.errorWithin "warning" .settings.warnWithin (tint) }}`,settings:{errorWithin:{label:`error within (min)`,domain:{min:0,max:300,step:5},default:30},warnWithin:{label:`warning within (min)`,domain:{min:0,max:300,step:5,atLeast:`errorWithin`},default:60}},when:`{{ or (gt .block.resetsAt 0) (gt .weekly.resetsAt 0) }}`},speed:{description:`Token throughput for the latest exchange: output, input, and total.`,template:`⇅ out {{ template "formatSpeed" .speed.output }} · in {{ template "formatSpeed" .speed.input }} · tot {{ template "formatSpeed" .speed.total }}`,when:`{{ gt .session.tokens 0 }}`},tokenSparkline:{description:`A sparkline of recent token throughput.`,template:`⚡ {{ sparkline .speed.history 24 }}`,when:`{{ ne .speed.history "" }}`},cacheTimer:{description:"Minutes until the prompt cache expires, or `cold` once it has.",template:`◴ {{ if le (minutesUntilReset .cache.expiresAt) 0 }}cold{{ else }}{{ minutesUntilReset .cache.expiresAt }}m{{ end }}`,fg:`{{ readableOn (color (cascade (minutesUntilReset .cache.expiresAt) "0:error" "9:warning" "21:foreground")) (bgOf) ${Ca} }}`,when:`{{ gt .cache.expiresAt 0 }}`},context:{description:`Context used, in tokens and percent remaining, heating as it fills.`,template:`◔ {{ formatInteger .context.totalTokens }} ({{ .context.contextLeft }}%)`,bg:`{{ ramp .context.contextLeft "step" 0 "error" 21 "warning" 41 (tint) }}`,when:`{{ gt .context.totalTokens 0 }}`},ceiling:{description:`The memento plugin's context ceiling for this session: − and + move it by 100K, ∞ lifts it, ↺ drops this session's own setting.`,template:`{{ if ne .memento.error "" }}⌈ ⚠ {{ .memento.error }} {{ action "ceiling.clear" "↺" }}{{ else }}⌈ {{ if .memento.off }}off{{ else }}{{ template "formatTokenCount" .memento.ceiling }} {{ action "ceiling.lower" "−" }} {{ action "ceiling.raise" "+" }} {{ action "ceiling.off" "∞" }}{{ end }}{{ if ne .memento.session "" }} {{ action "ceiling.clear" "↺" }}{{ end }}{{ end }}`,bg:`{{ if ne .memento.error "" }}{{ color "error" }}{{ else }}{{ tint }}{{ end }}`,when:`{{ or (ge .memento.ceiling 0) (ne .memento.error "") }}`},autocompact:{description:`Claude Code's auto-compact window: − and + move it by 100K, ↺ returns it to auto. Clicks type /autocompact into this session.`,template:`{{ if ne .autocompact.error "" }}⇲ ⚠ {{ .autocompact.error }}{{ else }}⇲ {{ if eq .autocompact.window 0 }}auto{{ else }}{{ template "formatTokenCount" .autocompact.applied }}{{ end }}{{ if gt .autocompact.lower 0 }} {{ action (printf "autocompact.%d" .autocompact.lower) "−" }}{{ end }}{{ if gt .autocompact.higher 0 }} {{ action (printf "autocompact.%d" .autocompact.higher) "+" }}{{ end }}{{ if gt .autocompact.window 0 }} {{ action "autocompact.auto" "↺" }}{{ end }}{{ end }}`,bg:`{{ if ne .autocompact.error "" }}{{ color "error" }}{{ else }}{{ tint }}{{ end }}`,when:`{{ or (ge .autocompact.window 0) (ne .autocompact.error "") }}`},metrics:{description:`Response times, session duration, message count, and lines added/removed.`,template:`{{ if .metrics.lastResponseTime }} Δ {{ template "formatResponseTime" .metrics.lastResponseTime }}{{ end }}{{ if .metrics.responseTime }} ⧖ {{ template "formatResponseTime" .metrics.responseTime }}{{ end }}{{ if .metrics.sessionDuration }} ⧗ {{ template "formatDuration" .metrics.sessionDuration }}{{ end }}{{ if .metrics.messageCount }} ◆ {{ .metrics.messageCount }}{{ end }}{{ if .metrics.linesAdded }} + {{ .metrics.linesAdded }}{{ end }}{{ if .metrics.linesRemoved }} - {{ .metrics.linesRemoved }}{{ end }} `,when:`{{ or (gt .metrics.lastResponseTime 0.0) (gt .metrics.responseTime 0.0) (gt .metrics.sessionDuration 0.0) (gt .metrics.messageCount 0) (gt .metrics.linesAdded 0) (gt .metrics.linesRemoved 0) }}`},activity:{description:`What Claude is doing: the slash command that opened the turn, the in-progress todo, and the tools in flight.`,template:`{{ if .activity.command }} ⌘ {{ .activity.command }}{{ end }}{{ if .activity.todo.total }}{{ if .activity.todo.active }} ☐ {{ .activity.todo.position }}/{{ .activity.todo.total }} {{ abbrev 32 .activity.todo.active }}{{ else }} ☑ {{ .activity.todo.completed }}/{{ .activity.todo.total }}{{ end }}{{ end }}{{ if .activity.tool.running }} ⟳ {{ template "formatToolTally" .activity.tool.running }}{{ end }}{{ if .activity.tool.done }} ✓ {{ template "formatToolTally" .activity.tool.done }}{{ end }} `,when:`{{ or (ne .activity.command "") (gt .activity.todo.total 0) (ne .activity.tool.running "") (ne .activity.tool.done "") }}`}},root:{rows:{identity:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`host`},{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`}]},status:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`context`},{kind:`segment`,name:`ceiling`},{kind:`segment`,name:`autocompact`}]},{kind:`segment`,name:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`activity`}]}}},actions:{...Vx(``).actions,...WO.actions,copyDir:{copy:`{{ .current_dir }}`},stepTheme:{set:`theme`,from:`themes`},gitDetail:{set:`git-detail`,cycle:[`collapsed`,`expanded`]},"ceiling.raise":{ceiling:`set`,to:`+100_000`},"ceiling.lower":{ceiling:`set`,to:`-100_000`},"ceiling.off":{ceiling:`set`,to:`off`},"ceiling.clear":{ceiling:`clear`},"autocompact.auto":{slash:qx(`/autocompact auto`)},...Object.fromEntries(zO.map(e=>[`autocompact.${e}`,{slash:qx(`/autocompact ${e}`)}]))},looks:{none:{hueShift:0,chromaScale:1,lightnessScale:1,lightnessShift:0},vivid:{hueShift:0,chromaScale:1.35,lightnessScale:1,lightnessShift:0},muted:{hueShift:0,chromaScale:.55,lightnessScale:1,lightnessShift:0},dim:{hueShift:0,chromaScale:1,lightnessScale:.85,lightnessShift:0},bright:{hueShift:0,chromaScale:1,lightnessScale:1,lightnessShift:.08},inverted:{hueShift:0,chromaScale:1,lightnessScale:-1,lightnessShift:1}},presets:{default:{},compact:{root:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`segment`,name:`context`}]},globals:{padding:0}},verbose:{root:{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`segment`,name:`gitPr`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`context`},{kind:`segment`,name:`ceiling`},{kind:`segment`,name:`autocompact`}]},{kind:`segment`,name:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`burnrate`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`speed`},{kind:`segment`,name:`tokenSparkline`}]}]}},zen:{root:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`directory`},{kind:`segment`,name:`context`}]},globals:{style:`plain`,look:`dim`}},git:{root:{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`host`},{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`segment`,name:`gitPr`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`segment`,name:`context`},{kind:`segment`,name:`activity`}]}]}},usage:{root:{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`context`},{kind:`segment`,name:`ceiling`},{kind:`segment`,name:`autocompact`}]},{kind:`segment`,name:`cacheTimer`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`burnrate`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`session`},{kind:`segment`,name:`today`},{kind:`segment`,name:`speed`},{kind:`segment`,name:`tokenSparkline`}]}]}},dense:{root:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`host`},{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`segment`,name:`model`},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`context`},{kind:`segment`,name:`ceiling`},{kind:`segment`,name:`autocompact`}]},{kind:`segment`,name:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`session`},{kind:`segment`,name:`activity`}]},globals:{padding:0}}},editGlobals:{style:`plain`,default_separator:` | `},helpers:{gitPaint:`{{ fg (readableOn (color .color) (bgOf) ${Ca}) .text }}`,gitCollapsed:`{{ template "gitBranch" . }}{{ template "gitAheadBehind" . }}{{ template "gitFlags" . }}`,gitExpanded:`(git){{ template "gitRepo" . }}{{ template "gitOperation" . }}{{ template "gitSha" . }}{{ template "gitFlags" . }} {{ template "gitBranch" . }}{{ template "gitUpstream" . }}{{ template "gitStash" . }}{{ template "gitAge" . }}`,gitBranch:`⎇ {{ template "gitPaint" (dict "color" .git.color.branch "text" .git.branch) }}`,gitRepo:`{{ if and .settings.repo (ne .git.repoName "") }} {{ .git.repoName }}{{ end }}`,gitOperation:`{{ if and .settings.operation (ne .git.operation "") }} [{{ .git.operation }}]{{ end }}`,gitSha:`{{ if and .settings.sha (ne .git.sha "") }} {{ .git.sha }}{{ end }}`,gitFlags:`{{ if and .settings.flags (or (gt .git.staged 0) (gt .git.unstaged 0) (gt .git.untracked 0) (gt .git.conflicts 0)) }} {{ if gt .git.staged 0 }}{{ template "gitPaint" (dict "color" .git.color.staged "text" "S") }}{{ end }}{{ if gt .git.unstaged 0 }}{{ template "gitPaint" (dict "color" .git.color.unstaged "text" "U") }}{{ end }}{{ if gt .git.untracked 0 }}{{ template "gitPaint" (dict "color" .git.color.untracked "text" "?") }}{{ end }}{{ if gt .git.conflicts 0 }}{{ template "gitPaint" (dict "color" .git.color.conflicts "text" (printf "!%v" .git.conflicts)) }}{{ end }}{{ end }}`,gitAheadBehind:`{{ if and .settings.aheadBehind (or (gt .git.ahead 0) (gt .git.behind 0)) }} {{ if gt .git.ahead 0 }}{{ template "gitPaint" (dict "color" .git.color.ahead "text" (printf "+%v" .git.ahead)) }}{{ end }}{{ if and (gt .git.ahead 0) (gt .git.behind 0) }}/{{ end }}{{ if gt .git.behind 0 }}{{ template "gitPaint" (dict "color" .git.color.behind "text" (printf "-%v" .git.behind)) }}{{ end }}{{ end }}`,gitUpstream:`{{ if and .settings.upstream (ne .git.upstream "") }} [{{ .git.upstream }}{{ template "gitAheadBehind" . }}]{{ end }}`,gitStash:`{{ if and .settings.stash (gt .git.stash 0) }} {{ template "gitPaint" (dict "color" .git.color.stash "text" (printf "(%v stashed)" .git.stash)) }}{{ end }}`,gitAge:`{{ if and .settings.age (gt .git.timeSinceCommit 0) }} ◷ {{ template "formatTimeSince" .git.timeSinceCommit }}{{ end }}`,formatCost:'{{ if lt . 0.01 }}<$0.01{{ else }}${{ printf "%.2f" . }}{{ end }}',formatTokenCount:`{{ if ge . 1000000 }}{{ printf "%.1f" (divf . 1000000) }}M{{ else if ge . 1000 }}{{ printf "%.1f" (divf . 1000) }}K{{ else }}{{ . }}{{ end }}`,formatTokens:`{{ template "formatTokenCount" . }} tokens`,formatToolTally:`{{ $names := splitList "," . }}{{ range $i, $pair := $names }}{{ if lt $i 2 }}{{ if $i }} {{ end }}{{ $kv := splitList ":" $pair }}{{ index $kv 0 }}{{ if ne (index $kv 1) "1" }}×{{ index $kv 1 }}{{ end }}{{ end }}{{ end }}{{ if gt (len $names) 2 }} +{{ sub (len $names) 2 }}{{ end }}`,formatRate:`{{ if lt . 0 }}—/hr{{ else }}{{ template "formatCost" . }}/hr{{ end }}`,formatEta:`{{ if lt . 0 }}—{{ else }}{{ template "formatLongTimeRemaining" . }}{{ end }}`,formatSpeed:`{{ if lt . 0 }}—{{ else }}{{ template "formatTokenCount" (round .) }}/s{{ end }}`,formatTokenBreakdown:`{{ $first := true }}{{ if gt .input 0 }}{{ template "formatTokenCount" .input }} in{{ $first = false }}{{ end }}{{ if gt .output 0 }}{{ if not $first }} + {{ end }}{{ template "formatTokenCount" .output }} out{{ $first = false }}{{ end }}{{ if or (gt .cacheCreation 0) (gt .cacheRead 0) }}{{ if not $first }} + {{ end }}{{ template "formatTokenCount" (add .cacheCreation .cacheRead) }} cached{{ $first = false }}{{ end }}{{ if $first }}0 tokens{{ end }}`,budgetStatus:`{{ if or (le .budget 0) (lt .cost 0) }}{{ else }}{{ $pct := minf 100 (mulf (divf .cost .budget) 100) }}{{ $p := printf "%.0f%%" $pct }}{{ if ge $pct .warn }} !{{ $p }}{{ else }}{{ if ge $pct 50 }} +{{ $p }}{{ else }} {{ $p }}{{ end }}{{ end }}{{ end }}`,formatTimeSince:`{{ if lt . 60 }}{{ . }}s{{ else if lt . 3600 }}{{ div . 60 }}m{{ else if lt . 86400 }}{{ div . 3600 }}h{{ else if lt . 604800 }}{{ div . 86400 }}d{{ else }}{{ div . 604800 }}w{{ end }}`,formatDuration:`{{ if lt . 60 }}{{ printf "%.0f" . }}s{{ else if lt . 3600 }}{{ printf "%.0f" (divf . 60) }}m{{ else if lt . 86400 }}{{ printf "%.1f" (divf . 3600) }}h{{ else }}{{ printf "%.1f" (divf . 86400) }}d{{ end }}`,formatResponseTime:`{{ if lt . 60 }}{{ printf "%.1f" . }}s{{ else }}{{ printf "%.1f" (divf . 60) }}m{{ end }}`,formatLongTimeRemaining:`{{ if ge . 1440 }}{{ $d := div . 1440 }}{{ $h := div (mod . 1440) 60 }}{{ if gt $h 0 }}{{ $d }}d {{ $h }}h{{ else }}{{ $d }}d{{ end }}{{ else if ge . 60 }}{{ $h := div . 60 }}{{ $m := mod . 60 }}{{ if gt $m 0 }}{{ $h }}h {{ $m }}m{{ else }}{{ $h }}h{{ end }}{{ else }}{{ . }}m{{ end }}`,formatResetCountdown:`{{ template "formatLongTimeRemaining" (add 1 (minutesUntilReset .)) }}`}},ZO=new Set([XO.globals.palette,...Object.values(XO.segments).map(e=>e.palette)].filter(e=>e!==void 0)),QO=zc(Nw(`<default>`,JSON.stringify(XO),ZO),XO),$O=b_(QO.presets);function ek(e){return $O.includes(e)}function tk(e){if(!e)return 0;try{return o(e).mtimeMs}catch{return 0}}const nk=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 rk(e){return((...t)=>nk.run(()=>e(...t)))}const ik=rk(S),ak=rk(x),ok=rk(C);async function sk(e,t){return nk.run(async()=>{let n=null;try{n=await b(e,`r`);let{size:r,mtimeMs:i,ino:a}=await n.stat(),o=t!==void 0&&(a!==t.ino||r<t.offset),s=o||t===void 0?0:t.offset;if(s>=r)return J({buf:Buffer.alloc(0),start:s,size:r,mtimeMs:i,ino:a,reset:o});let c=Buffer.alloc(r-s),l=0;for(;l<c.length;){let{bytesRead:e}=await n.read(c,l,c.length-l,s+l);if(e===0)break;l+=e}return J({buf:l===c.length?c:c.subarray(0,l),start:s,size:r,mtimeMs:i,ino:a,reset:o})}catch(t){return t.code===`ENOENT`?Y:X(`readAppended ${e}: ${t instanceof Error?t.message:String(t)}`)}finally{await n?.close().catch(e=>{O(`transcript-fs: close failed: ${e instanceof Error?e.message:String(e)}`)})}})}async function ck(e,t){return nk.run(async()=>{let n=null;try{n=await b(e,`r`);let{size:r}=await n.stat(),i=Math.max(0,r-t),a=Buffer.alloc(r-i),o=0;for(;o<a.length;){let{bytesRead:e}=await n.read(a,o,a.length-o,i+o);if(e===0)break;o+=e}return J({buf:o===a.length?a:a.subarray(0,o),fromStart:i===0})}catch(t){return t.code===`ENOENT`?Y:X(`readTail ${e}: ${t instanceof Error?t.message:String(t)}`)}finally{await n?.close().catch(e=>{O(`transcript-fs: close failed: ${e instanceof Error?e.message:String(e)}`)})}})}const lk=/"(?:cache_read_input_tokens|cache_creation_input_tokens)":[1-9]/;function uk(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 dk(e){let t=await fk(e);return t.kind===`ok`?J(Math.floor((t.value+36e5)/1e3)):t}async function fk(e){for(let t of[65536,1048576]){let n=await ck(e,t);if(n.kind!==`ok`)return n;let r=pk(n.value.buf,n.value.fromStart);if(r!=null)return J(r);if(n.value.fromStart)return Y}return Y}function pk(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||!lk.test(t))continue;let r=uk(t);if(r!=null)return r}return null}function mk(e,t,n){let r=x_(t(`preset`),e.globals.preset,e.presets),i=w_(e,r),a=t(`edit.mode`)===`arrange`?e.editGlobals:{};return{preset:r,presetCustomized:n(r),theme:Nb(a.palette,t(`theme`),i.palette),look:io(a.look,t(`look`),i.look,e.looks),style:so(a.style,t(`style`),i.style),progression:bo(a.progression,t(`progression`),i.progression),separator:a.default_separator??i.default_separator,autoWrap:Do(a.autoWrap,t(`autoWrap`),i.autoWrap),padding:ko(a.padding,t(`padding`),i.padding),charset:fo(a.charset,t(`charset`),i.charset),updateNotice:Oo(a.updateNotice,t(`updateNotice`),i.updateNotice),colorCompatibility:go(a.colorCompatibility,t(`colorCompatibility`),i.colorCompatibility)}}function hk(e,t){return{style:e.style,separator:e.separator,colorCompatibility:e.colorCompatibility,wrap:e.autoWrap,padding:e.padding,charset:e.charset,width:t}}function gk(e){return{theme:e.theme,look:e.look,preset:e.preset,progression:e.progression}}function _k(e){return{preset:{effective:e.preset,customized:e.presetCustomized,bundled:ek(e.preset)},style:{effective:e.style},progression:{effective:e.progression},charset:{effective:e.charset},colorCompatibility:{effective:e.colorCompatibility},autoWrap:{effective:e.autoWrap},padding:{effective:e.padding},updateNotice:{effective:e.updateNotice}}}const vk=10*1e3;function yk(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 bk(e,t){if(!(t<60))return e*3600/t}function xk(e,t,n,r){let i=r-t;if(i<50||i>vk)return;let a=n-e;if(!(a<=0))return a*1e3/i}function Sk(e){let{prev:t,cur:n}=e;if(t===void 0)return;let r=xk(t.input,t.atMs,n.input,n.atMs),i=xk(t.output,t.atMs,n.output,n.atMs),a=xk(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 Ck(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>vk)continue;let o=xk(r.total,r.atMs,i.total,i.atMs);n.push(o??0)}if(n.length!==0)return n.join(`,`)}function wk(e){let t=e.indexOf(`.`);return t<0?e:e.slice(0,t)}function Tk(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`,()=>wk(p.hostname())),i=n(`user`,()=>p.userInfo().username);return{host:{...r!==void 0&&{name:r},...i!==void 0&&{user:i},...e.ssh!==void 0&&{ssh:e.ssh}},failures:t}}function Ek(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=>av(t,e.helpers).keys();for(let n of js(C_(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 Ok(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 Dk(e){let t=new Map;return n=>{let r=t.get(n);if(r!==void 0)return r;let i=Ek(e,n);return t.set(n,i),i}}function Ok(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 kk(e,t){for(let n of e)if(n===t||n.startsWith(t+`.`))return!0;return!1}function Ak(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 jk(e,t,n,r,i,a,o){let s=e=>kk(r,e),c=(t.clock??(()=>new Date))().getTime(),l=(e,t,n)=>t?n().catch(t=>X(`${e}: ${String(t)}`)):Promise.resolve(Y),[u,d,f,p,m,h,g,_,v,y,b]=await Promise.all([l(`git`,s(`git`),()=>t.gitProvider.getGitInfo(n??e.workspace?.current_dir,Ak(r),e.workspace?.project_dir)),l(`session`,s(`session.cost`)||s(`session.tokens`)||s(`burn`),()=>t.usageStore.getUsageInfo(e.session_id,e)),l(`today`,s(`today`),()=>t.usageStore.getTodayInfo(e)),l(`context`,s(`context`)||s(`autocompact`),()=>t.contextProvider.getContextInfo(e)),l(`metrics`,s(`metrics`)||s(`burn`),()=>t.metricsProvider.getMetricsInfo(e.session_id,e)),l(`activity`,s(`activity`),()=>t.activityProvider.getActivityInfo(e.session_id,e)),l(`tmux`,s(`tmux`),()=>t.tmuxService.getSessionId()),l(`cache`,s(`cache`),()=>dk(e.transcript_path)),l(`speed`,s(`speed`),()=>t.usageStore.observeSpeed(e.session_id,e.transcript_path,c)),l(`memento`,s(`memento`),()=>t.mementoProvider.getCeiling({sessionId:e.session_id,projectDir:e.workspace?.project_dir??``,cwd:n??e.workspace?.current_dir??``})),l(`autocompact`,s(`autocompact`),()=>Promise.resolve(t.autoCompact(DE(EE(a.claudeConfigDir)))))]),x=[],S=e=>{if(e.kind===`failed`){x.push(e.reason);return}return e.kind===`ok`?e.value:void 0},C=zk(u);x.push(...C.failures);let ee=Tk(a);x.push(...ee.failures);let te=S(d),ne=S(f),re=S(p),w=S(m),ie=S(h),T=S(g),E=S(_),ae=Pk(y);y.kind===`failed`&&x.push(`memento: ${y.reason}`);let oe=Mk(b,re?.maxTokens);b.kind===`failed`&&x.push(`autocompact: ${b.reason}`);for(let e of x)t.log(`warn`,`provider fetch failed: ${e}`);let D=e.rate_limits?.five_hour,se=e.rate_limits?.seven_day,ce=D?yk(D.used_percentage,D.resets_at,18e6,c):void 0,le=se?yk(se.used_percentage,se.resets_at,6048e5,c):void 0,ue=te?.session.cost,de=w?.sessionDuration,fe=s(`burn`)&&ue!=null&&de!=null?bk(ue,de):void 0,pe=S(v),me=pe===void 0?void 0:Sk(pe),he=pe===void 0?void 0:Ck(pe),ge=me!==void 0||he!==void 0?{...me,...he!==void 0&&{history:he}}:void 0,O=Rk(process.env.HOME??process.env.USERPROFILE),_e=e.workspace?{...e.workspace,current_dir:Rk(e.workspace.current_dir)??``,project_dir:Rk(e.workspace.project_dir)??``}:e.workspace,ve=te===void 0?void 0:Lk({cost:te.session.cost,tokens:te.session.tokens}),ye=ne===void 0?void 0:{cost:ne.cost,tokens:ne.tokens},be=w===void 0?void 0:Lk({lastResponseTime:w.lastResponseTime,responseTime:w.responseTime,sessionDuration:w.sessionDuration,messageCount:w.messageCount,linesAdded:w.linesAdded,linesRemoved:w.linesRemoved}),xe=ie===void 0?void 0:Fk(ie);return{...e,..._e!==void 0&&{workspace:_e},...O!==void 0&&{home:O},...C.git!==void 0&&{git:C.git},...T!==void 0&&{tmux:{session:T}},host:ee.host,..._k(i),history:t.history(e.session_id),unsaved:o,...ve!==void 0&&{session:ve},...ye!==void 0&&{today:ye},...fe!==void 0&&{burn:{costPerHour:fe}},...ge!==void 0&&{speed:ge},...s(`block`)&&D!==void 0&&{block:{nativeUtilization:D.used_percentage,resetsAt:D.resets_at,...ce!==void 0&&{etaMinutes:ce}}},...se!==void 0&&{weekly:{percentage:se.used_percentage,resetsAt:se.resets_at,...le!==void 0&&{etaMinutes:le}}},...E!==void 0&&{cache:{expiresAt:E}},...re!==void 0&&{context:{totalTokens:re.totalTokens,contextLeft:re.contextLeftPercentage}},...be!==void 0&&{metrics:be},...xe!==void 0&&{activity:xe},...ae!==void 0&&{memento:ae},...oe!==void 0&&{autocompact:oe}}}function Mk(e,t){switch(e.kind){case`absent`:return;case`failed`:return{error:e.reason};case`ok`:return UO(e.value,t)}}const Nk=e=>e.trim().split(`
177
- `).at(-1).trim();function Pk(e){switch(e.kind){case`absent`:return;case`failed`:return{error:Nk(e.reason)};case`ok`:{let{ceiling:t,session:n}=e.value;return{ceiling:t===`off`?0:t,off:t===`off`,session:n??``}}}}function Fk(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=Ik(e.running),i=Ik(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 Ik(e){return e.length===0?void 0:e.map(e=>`${e.name}:${e.count}`).join(`,`)}function Lk(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 Rk(e){return e===void 0||e.length===0||c.sep!==`\\`?e:e.replace(/\\/g,`/`)}function zk(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 Bk={theme:e=>e.theme.kind===`decided`?e.theme.name:null,preset:e=>e.preset,look:e=>e.look.kind===`decided`?e.look.name:null,style:e=>e.style,progression:e=>e.progression,charset:e=>e.charset,colorCompatibility:e=>e.colorCompatibility,autoWrap:e=>e.autoWrap?xo:So,padding:e=>String(e.padding),updateNotice:e=>e.updateNotice?xo:So},Vk=Object.entries(vb),Hk=new Set(yb.map(e=>e.sessionKey)),Uk=()=>!1;function Wk(e,t){return mk(e,e=>Hk.has(e)?t(e):null,Uk)}function Gk(e,t,n,r){return e.flatMap(([e,i])=>{let a=Bk[e](t);return a===null||a===Bk[e](n(e))?[]:[{...i,value:a,target:r(i)}]})}function Kk(e,t,n){return Bk[n](Wk(e,t))}function qk(e,t){let n=Wk(e,t),r=mk(e,()=>null,Uk),i=mk(e,e=>e===vb.preset.sessionKey?n.preset:null,Uk),a=S_(e.presets,n.preset).globals??{};return Gk(Vk,n,e=>e===`preset`?r:i,e=>e.configKey in a?Yb(n.preset,e.configKey):e.configKey)}function Jk(e,t){let{preset:n}=Wk(e,t);return Zk(e,n).flatMap(({id:e,setting:r,key:i,decl:a,saved:o})=>{let s=t(i),c=s===null?void 0:qs(a,s);return c===void 0||Ks(c)===Ks(o)?[]:[{preset:n,id:e,setting:r,key:i,value:c}]})}function Yk(e,t,n){let r=new Map(n.map(e=>[e.key,e.value]));return b_(e.presets).flatMap(n=>{let i=Zk(e,n);return[...new Set(i.filter(e=>r.has(e.key)).map(e=>e.id))].flatMap(e=>{let n=i.filter(t=>t.id===e);return Ws(Object.fromEntries(n.map(e=>[e.setting,e.decl])),Object.fromEntries(n.map(e=>{let n=r.get(e.key)??t(e.key),i=n===null?void 0:qs(e.decl,n);return[e.setting,i??e.saved]}))).map(({message:t})=>`placement "${e}": ${t}`)})})}const Xk=new WeakMap;function Zk(e,t){let n=Xk.get(e)??new Map;Xk.set(e,n);let r=n.get(t);if(r!==void 0)return r;let i=[...js(C_(e,t).node)].flatMap(t=>t.kind!==`segment`||t.drafts===void 0?[]:Object.entries(t.drafts).map(([n,{id:r,key:i}])=>{let a=Hs(e.segments[t.name])[n];return{id:r,setting:n,key:i,decl:a,saved:t.settings?.[n]??a.default}})),a=[...new Map(i.map(e=>[e.key,e])).values()];return n.set(t,a),a}function Qk(e,t){let n=Wk(e,t),r=mk(e,e=>e===vb.preset.sessionKey?n.preset:null,Uk);return{from:n.preset,globals:S_(e.presets,n.preset).globals??{},picks:Gk(Vk.filter(([e])=>e!==`preset`),n,()=>r,e=>e.configKey),placements:Jk(e,t)}}function $k(e){return{sessionKeys:yb.filter(t=>t.configKey===e).map(e=>e.sessionKey),fileKeys:[e,...vl(e)?$O.map(t=>Yb(t,e)):[]]}}const eA=Ka(),tA=new Set(eA),nA=new Set(ao),rA=e=>e?tA.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown theme "${e}" (have: ${eA.join(`, `)})`}:{ok:!1,reason:`theme name is required`},iA=e=>e?nA.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown style "${e}" (have: ${ao.join(`, `)})`}:{ok:!1,reason:`style name is required`},aA=new Set([`1`,`true`]),oA=new Set([`0`,`false`]),sA=OO({style:iA,theme:rA,"toolbar-expanded":e=>aA.has(e)?{ok:!0,value:`1`}:oA.has(e)?{ok:!0,value:``}:{ok:!1,reason:`expected boolean-ish (1, 0, true, false), got "${e}"`}});function cA(){return sA.listKeys()}function lA(e,t){return sA.register(e,t)}function uA(e,t){return sA.validate(e,t)}function dA(e){return sA.rangeParamsFor(e)}function fA(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:Vb(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 pA(e){let t=new Set(sA.listBaselineKeys());return e.filter(e=>e.spec.kind!==`allow-list`||!t.has(e.key))}function mA(e,t,n){let r=Sb.get(n);if(r!==void 0)return Kk(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 hA(e){let t=zb(e);return pA(Object.values(e.actions).flatMap(e=>fA(e,t)))}function gA(e){return DO(hA(e))}const _A=`update.dismissed`,vA=`updateNotice`,yA=vb.updateNotice.sessionKey;function bA(e){return e.kind===`source`?e.newer.digest:PE(e.newer)}const xA=e=>`${e.version} [${fO(e.digest)}]`;function SA(e){switch(e.kind){case`source`:return{headline:`Newer source`,newer:xA(e.newer),running:xA(e.running),act:`rebuild`,busy:`rebuilding…`,command:{bin:`pnpm`,args:[`build`],cwd:e.root}};case`release`:return{headline:`Newer release`,newer:PE(e.newer),running:PE(e.running),act:`upgrade`,busy:`upgrading…`,command:{bin:`pnpm`,args:[`dlx`,`${IE}@${PE(e.newer)}`,`install`]}}}}const CA={kind:`idle`},wA={kind:`running`};function TA(e,t,n){if(e===null)return[];let r=bA(e);if(!n.enabled||n.dismissed===r)return[];let i=SA(e),a=`${i.headline}: ${i.newer}. You're on ${i.running}.`,o=t.kind===`failed`&&t.identity===r?[`${i.act} failed: ${t.reason}`]:[],s=[a,...o].join(`
178
- `),c=vE([{verb:tE,args:[s]}]),l=t.kind===`running`?eO(`[${i.busy}]`,c):eO(`[${i.act}]`,vE([{verb:dE,args:[n.sessionId]}]));return[{severity:$D,message:s,lines:[[eO(a,c),l,eO(`[dismiss]`,vE([{verb:YT,args:[n.sessionId,_A,r]}])),eO(`[disable]`,vE([{verb:nE,args:[n.sessionId,vA,`false`]},{verb:YT,args:[n.sessionId,yA,`false`]}]))],...o.map(e=>[eO(e,c)])]}]}function EA(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 DA(e){switch(e.kind){case`current`:return[`info`,`build: current ${xA(e.stamp)}`];case`stale`:return[`info`,`build: stale — source ${xA(e.source)}, running ${xA(e.running)}`];case`not-source-checkout`:return[`info`,`build: not a source checkout`];case`unchecked`:return[`warn`,`build: unchecked: ${e.reason}`]}}function OA(e){switch(e.kind){case`current`:return[`info`,`release: current ${PE(e.installed)}`];case`stale`:return[`info`,`release: stale — latest ${PE(e.latest)}, running ${PE(e.installed)}`];case`ahead`:return[`info`,`release: ahead — running ${PE(e.installed)}, latest ${PE(e.latest)}`];case`unchecked`:return[`warn`,`release: unchecked: ${e.reason}`]}}function kA(e){let t=null;return([n,r])=>{r!==t&&(t=r,e(n,r))}}const AA=e=>e.split(/\r?\n/).map(e=>e.trim()).filter(e=>e!==``).at(-1);function jA(e){let t=e.exitCode===null?``:` (exit ${e.exitCode})`,n=AA(e.stderr)??e.error??AA(e.stdout)??`no output`;return`${e.reason}${t}: ${n}`}function MA(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=CA,d=null,f=kA(s),p=kA(s),m=()=>EA(c,l);function h(){let e=m(),t=e===null?null:bA(e);(d===null?null:d.identity)!==t&&(d?.dispose(),d=t===null?null:{identity:t,dispose:lA(_A,{kind:`allow-list`,allowed:[t]})})}function g(){c=gO(t,mO),f(DA(c)),h()}async function _(){l=RE(wE,await LE(IE,a,i)),p(OA(l)),h()}return{arm(){RO(vA,{kind:`allow-list`,allowed:[`false`]}),lA(yA,{kind:`allow-list`,allowed:[`false`]}),g(),setInterval(g,n).unref(),c.kind===`not-source-checkout`&&(_(),setInterval(()=>void _(),r).unref())},notice:e=>TA(m(),u,e),act(){let e=m();if(e===null)throw new $(`apply-update: nothing newer is known to apply`);let t=SA(e);if(u.kind===`running`)throw new $(`apply-update: already ${t.busy}`);u=wA,s(`info`,`apply-update: ${t.act} — ${t.command.bin} ${t.command.args?.join(` `)??``}`),De({...t.command,category:`update.apply`,timeoutMs:6e5}).then(n=>{if(n.ok){u=CA,s(`info`,`apply-update: ${t.act} succeeded`),g(),o();return}let r=jA(n);u={kind:`failed`,identity:bA(e),reason:r},s(`error`,`apply-update: ${t.act} failed: ${r}`)})}}}var NA=class{static CACHE_DIR=Ne();static USAGE_CACHE_DIR=c.join(this.CACHE_DIR,`usage`);static LOCKS_DIR=c.join(this.CACHE_DIR,`locks`);static isLocked(e){let t=c.join(this.LOCKS_DIR,e);if(!r.existsSync(t))return!1;try{let n=r.readFileSync(t,`utf-8`),i=parseInt(n.trim(),10);if(isNaN(i))return O(`Invalid PID in lock file ${e}, removing stale lock`),r.unlinkSync(t),!1;try{return process.kill(i,0),!0}catch(n){return n.code===`ESRCH`?(O(`Removing stale lock file ${e} for dead process ${i}`),r.unlinkSync(t),!1):(O(`Error checking process ${i} for lock ${e}:`,n),!0)}}catch(t){return O(`Error reading lock file ${e}:`,t),!0}}static async acquireLock(e,t=5e3){await this.ensureCacheDirectories();let n=c.join(this.LOCKS_DIR,e),i=Date.now(),a=String(process.pid);for(;Date.now()-i<t;)try{return await r.promises.writeFile(n,a,{flag:`wx`}),O(`Lock acquired for ${e}`),!0}catch(e){if(e.code===`EEXIST`)await D(50);else throw e}return O(`Failed to acquire lock for ${e} within ${t}ms`),!1}static async releaseLock(e){let t=c.join(this.LOCKS_DIR,e);try{await r.promises.unlink(t),O(`Lock released for ${e}`)}catch(t){t.code!==`ENOENT`&&O(`Error releasing lock for ${e}:`,t)}}static async ensureCacheDirectories(){try{await Promise.all([r.promises.mkdir(this.CACHE_DIR,{recursive:!0}),r.promises.mkdir(this.USAGE_CACHE_DIR,{recursive:!0}),r.promises.mkdir(this.LOCKS_DIR,{recursive:!0})])}catch(e){O(`Failed to create cache directories:`,e)}}static createProjectHash(e){return ae(`md5`).update(e).digest(`hex`).substring(0,8)}static async getUsageCache(e,t){await this.ensureCacheDirectories();let n=c.join(this.USAGE_CACHE_DIR,`${e}.json`),i=`${e}.usage.lock`;for(let a=0;a<3;a++){if(this.isLocked(i)){O(`Cache for ${e} is locked, waiting...`),await D(75);continue}try{let i=await r.promises.readFile(n,`utf-8`),a=JSON.parse(i);return!t||a.timestamp>=t?(O(`[CACHE-HIT] ${e} disk cache: found`),this.deserializeDates(a.data)):(O(`${e} cache outdated: cache=${a.timestamp}, latest=${t}`),null)}catch(t){if(t.code===`ENOENT`)return O(`No shared ${e} usage cache found`),null;O(`Attempt ${a+1} failed to read ${e} cache: ${t.message}. Retrying...`),await D(75)}}return O(`Failed to read ${e} cache after 3 attempts.`),null}static deserializeDates(e){return Array.isArray(e)?e.map(e=>({...e,timestamp:new Date(e.timestamp)})):e}static async setUsageCache(e,t,n){let i=`${e}.usage.lock`;if(!await this.acquireLock(i)){O(`Could not acquire lock to set usage cache for ${e}`);return}try{await this.ensureCacheDirectories();let i=c.join(this.USAGE_CACHE_DIR,`${e}.json`),a=JSON.stringify({data:t,timestamp:n||Date.now()});await r.promises.writeFile(i,a,`utf-8`),O(`[CACHE-SET] ${e} disk cache stored`)}catch(t){O(`Failed to save ${e} usage cache:`,t)}finally{await this.releaseLock(i)}}};const PA={"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 FA=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 NA.getUsageCache(`pricing`,e)}static async saveDiskCache(e){await NA.setUsageCache(`pricing`,e)}static async fetchPricingData(){return new Promise(e=>{let t=new re(this.GITHUB_PRICING_URL),n=oe({hostname:t.hostname,path:t.pathname,headers:{"User-Agent":`cc-candybar`,"Cache-Control":`no-cache`},timeout:5e3},t=>{if(t.statusCode!==200){O(`HTTP ${t.statusCode}: ${t.statusMessage}`),e(null);return}let r=``,i=0;t.on(`data`,t=>{if(i+=t.length,i>1048576){O(`Response too large`),n.destroy(),e(null);return}r+=t}),t.on(`end`,()=>{try{let t=JSON.parse(r),n=t._meta,i={};for(let[e,n]of Object.entries(t))e!==`_meta`&&(i[e]=n);this.validatePricingData(i)?(O(`Fetched fresh pricing from GitHub for ${Object.keys(i).length} models`),O(`Pricing last updated: ${n?.updated||`unknown`}`),e(i)):(O(`Invalid pricing data structure`),e(null))}catch(t){O(`Failed to parse JSON:`,t),e(null)}}),t.on(`error`,t=>{O(`Response error:`,t),e(null)})});n.on(`error`,t=>{O(`Request error:`,t),e(null)}),n.on(`timeout`,()=>{O(`Request timeout`),n.destroy(),e(null)}),n.end()})}static async getCurrentPricing(){if(this.executionCache!==null)return O(`[CACHE-HIT] Pricing execution cache: ${Object.keys(this.executionCache).length} models`),this.executionCache;let e=await this.loadDiskCache();if(e)return O(`[CACHE-HIT] Pricing disk cache: ${Object.keys(e).length} models`),this.executionCache=e,O(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(e).length} models`),e;let t=await this.fetchPricingData();return t?(await this.saveDiskCache(t),O(`[CACHE-SET] Pricing disk cache stored: ${Object.keys(t).length} models`),this.executionCache=t,O(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(t).length} models`),t):(O(`[CACHE-FALLBACK] Using offline pricing data: ${Object.keys(PA).length} models`),this.executionCache=PA,O(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(PA).length} models`),PA)}static validatePricingData(e){if(!e||typeof e!=`object`)return!1;for(let[,t]of Object.entries(e)){if(!t||typeof t!=`object`)return!1;let e=t;if(typeof e.input!=`number`||typeof e.output!=`number`||typeof e.cache_read!=`number`)return!1}return!0}static async getModelPricing(e){if(this.modelPricingCache.has(e))return O(`[CACHE-HIT] Model pricing cache: ${e}`),this.modelPricingCache.get(e);let t=await this.getCurrentPricing(),n;return n=t[e]?t[e]:this.fuzzyMatchModel(e,t),this.modelPricingCache.set(e,n),O(`[CACHE-SET] Model pricing cache: ${e}`),n}static fuzzyMatchModel(e,t){let n=e.toLowerCase();for(let[e,r]of Object.entries(t))if(e.toLowerCase()===n)return r;for(let{pattern:e,fallback:r}of[{pattern:[`opus-4-6`,`claude-opus-4-6`],fallback:`claude-opus-4-6-20260205`},{pattern:[`opus-4-5`,`claude-opus-4-5`],fallback:`claude-opus-4-5-20251101`},{pattern:[`opus-4-1`,`claude-opus-4-1`],fallback:`claude-opus-4-1-20250805`},{pattern:[`opus-4`,`claude-opus-4`],fallback:`claude-opus-4-20250514`},{pattern:[`sonnet-4-6`,`sonnet-4.6`,`claude-sonnet-4-6`],fallback:`claude-sonnet-4-6`},{pattern:[`sonnet-4.5`,`4-5-sonnet`,`sonnet-4-5`],fallback:`claude-sonnet-4-5-20250929`},{pattern:[`sonnet-4`,`claude-sonnet-4`],fallback:`claude-sonnet-4-20250514`},{pattern:[`haiku-4.5`,`4-5-haiku`,`haiku-4-5`],fallback:`claude-haiku-4-5-20251001`},{pattern:[`haiku`],fallback:`claude-haiku-4-5-20251001`},{pattern:[`opus`],fallback:`claude-opus-4-20250514`},{pattern:[`sonnet`],fallback:`claude-sonnet-4-5-20250929`}])if(e.some(e=>n.includes(e))&&t[r])return t[r];return t[`claude-sonnet-4-5-20250929`]||{name:`${e} (Unknown Model)`,input:3,cache_write_5m:3.75,cache_write_1h:6,cache_read:.3,output:15}}static async calculateCostForEntry(e){let t=e.message?.usage;if(!t)return 0;let n=this.extractModelId(e),r=await this.getModelPricing(n),i=t.input_tokens||0,a=t.output_tokens||0,o=t.cache_creation_input_tokens||0,s=t.cache_read_input_tokens||0,c=i/1e6*r.input,l=a/1e6*r.output,u=s/1e6*r.cache_read,d=o/1e6*r.cache_write_5m;return c+l+d+u}static extractModelId(e){if(e.model&&typeof e.model==`string`)return e.model;let t=e.message;if(t?.model){let e=t.model;if(typeof e==`string`)return e;let n=e;return(typeof n?.id==`string`?n.id:null)||`claude-sonnet-4-5-20250929`}return e.model_id&&typeof e.model_id==`string`?e.model_id:`claude-sonnet-4-5-20250929`}};const IA=/<command-name>\s*([^<\s][^<]*?)\s*<\/command-name>/;function LA(e){if(typeof e==`string`)return IA.exec(e)?.[1]}function RA(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 zA(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=RA(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?LA(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 BA(){let e=[],t=process.env.CLAUDE_CONFIG_DIR;if(t&&t.split(`,`).forEach(t=>{let n=t.trim();a(n)&&e.push(n)}),e.length===0){let t=m(),n=f(t,`.config`,`claude`),r=f(t,`.claude`);a(n)&&e.push(n),a(r)&&e.push(r)}return e}async function VA(e){let t=[];for(let n of e){let e=f(n,`projects`);if(a(e))try{let n=await ik(e,{withFileTypes:!0});for(let r of n)if(r.isDirectory()){let n=f(e,r.name);t.push(n)}}catch(t){O(`Failed to read projects directory ${e}:`,t)}}return t}async function HA(e,t,n){let r=[],i=f(t,e,`subagents`);try{let t=(await ik(i)).filter(e=>e.startsWith(`agent-`)&&e.endsWith(`.jsonl`));for(let a of t){let t=f(i,a);if(n?.has(t)){r.push(t);continue}try{let n=(await ak(t,`utf-8`)).split(`
179
- `)[0];n&&JSON.parse(n).sessionId===e&&r.push(t)}catch{O(`Failed to check agent file ${t}`)}}}catch(e){O(`Failed to read subagents directory ${i}:`,e)}return r}function UA(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 WA=new Map;async function GA(e){try{let t=await ok(e),n=t.size,r=WA.get(e);if(r&&r.mtime===t.mtimeMs&&r.size===n)return O(`[parse-cache] hit ${e}`),WA.delete(e),WA.set(e,r),r.entries;let i;return n>1048576?(O(`Using streaming parser for large file ${e} (${Math.round(n/1024)}KB)`),i=await XA(e)):i=await JA(e),O(`Parsed ${i.length} entries from ${e}`),n>5242880?i:(WA.delete(e),WA.size>=16&&WA.delete(WA.keys().next().value),WA.set(e,{mtime:t.mtimeMs,size:n,entries:i}),i)}catch(t){if(t.code===`ENOENT`)return O(`Transcript not present yet: ${e}`),[];throw t}}function KA(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:zA(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 qA(e){let t=[];for(let n of e.split(`
180
- `))if(n.trim())try{let e=KA(JSON.parse(n));e&&t.push(e)}catch(e){O(`Failed to parse JSONL line: ${e}`);continue}return t}async function JA(e){return qA(await ak(e,`utf-8`))}async function YA(e,t){let n=await sk(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:qA(r.subarray(0,c+1).toString(`utf-8`)),cursor:{offset:i+c+1,mtimeMs:a,ino:o},reset:s})}async function XA(e){return new Promise((t,n)=>{let r=[],a=i(e,{encoding:`utf8`}),o=se({input:a,crlfDelay:1/0});o.on(`line`,e=>{let t=e.trim();if(t)try{let e=KA(JSON.parse(t));e&&r.push(e)}catch(e){O(`Failed to parse JSONL line: ${e}`)}}),o.on(`close`,()=>{t(r)}),o.on(`error`,t=>{O(`Streaming parser error for ${e}:`,t),n(t)}),a.on(`error`,t=>{O(`File stream error for ${e}:`,t),n(t)})})}var ZA=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 QA(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 $A={cost:0,input:0,output:0,cacheCreation:0,cacheRead:0},ej={cost:null,calculatedCost:null,officialCost:null,tokens:null,tokenBreakdown:null};function tj(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function nj(){let e=new Date;return e.setHours(0,0,0,0),e.setDate(e.getDate()-1),e.getTime()}function rj(){return{input:0,output:0,cacheCreation:0,cacheRead:0}}async function ij(e,t,n,r){let i=tj(new Date(nj())),a=e&&!t?e:void 0,o=a?.entries??0,s=a?.cost??0,c=a?{...a.breakdown}:rj(),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 FA.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=tj(new Date(e.timestamp));if(r<i)continue;let a=l.get(r)??{...$A};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 aj(e){let t=0,n=0,r=rj(),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)??{...$A};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:ej,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 oj(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 sj=class{entries=new Map;flight=new ZA;seeded=new Map;speedRings=new Map;speedFlight=new ZA;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:ej,i=t?.cost?.total_cost_usd??null;return J({session:{...r,cost:i??r.cost,officialCost:i}})}async getTodayInfo(e){let t=tj(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={...$A},i=!1;for(let e of this.entries.values()){i||=e.days.has(t);let n=e.days.get(t)??$A;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=tk(t);return this.speedFlight.run(`${e}:${r}`,async()=>{let i=await this.ingest(e,t,r);if(i.kind===`failed`)return i;let a=QA(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??tk(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 HA(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 YA(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 ij(r,l,s,c)),e===t&&(a=c.mtimeMs)}return J({files:i,...aj(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=nj(),n=await VA(BA()),r=[];for(let e of n){let n;try{n=await ik(e)}catch{continue}for(let i of n){if(!i.endsWith(`.jsonl`))continue;let n=f(e,i),a;try{a=(await ok(n)).mtimeMs}catch{continue}a<t||r.push({sessionId:i.slice(0,-6),path:n,mtime:a})}}await oj(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 cj(e,t){return e===void 0?!0:e.evaluate(t).map(e=>e.plain).join(``)!==`false`}function lj(e,t){let n=U.fromFragments(e);return n.end=``,n.overflow=`ignore`,t!==void 0&&!t.isNull&&(n.style=t),n}function uj(e,t,n){e.cellLength>t?e.truncate(t,{mode:n.truncate,marker:`…`}):e.cellLength<t&&e.align(n.justify,t)}function dj({text:e,trail:t}){if(t===void 0)return e;let n=lj([e,t]);return n.style=e.style,n}function fj(e,t){let{width:n,justify:r,truncate:i,baseStyle:a,padding:o,trail:s=[]}=t;if(e.length===0)return[];let c=lj(e,a).pad(o),l=s.length===0?{}:{trail:lj([...s,new U(` `.repeat(o))],a)};if(n===`auto`)return[{text:c,...l}];let u={justify:r,truncate:i};return n===`fill`?[{text:c,fill:u,...l}]:(uj(c,n,u),[{text:c,...l}])}const pj=RegExp(`\\x1b\\[[0-9;]*m|${gi.source}`,`g`);function mj(e){return M(e.replace(pj,``))}function hj(e,t){let n=e.map(dj),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=YD(n,t).split(`
181
- `);if(i.length>1)return n;let a=Math.max(0,t.width-mj(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];uj(l,l.cellLength+c,i),n[t]=dj(e[t])}),n}function gj(e,t){let n=[],r=[],i=()=>{if(!r.length)return;let e=_j(r,t);e.plain.length>0&&n.push(e),r=[]};for(let a of e)if(yj(a.style).link){i();let e=_j([a],t);e.plain.length>0&&n.push(e)}else r.push(a);return i(),n}function _j(e,t){let n=t!==void 0&&!t.isNull?e.map(e=>vj(e,t)):e,r=U.fromFragments(n);return r.end=``,r.overflow=`ignore`,n.length===1?r.style=n[0].style:t!==void 0&&!t.isNull&&(r.style=t),r}function vj(e,t){let n=e.copy();return n.style=t.add(yj(e.style)),n}function yj(e){return e instanceof V?e:V.parse(e)}var bj=class extends Error{constructor(e,t,n){super(`Invalid ${t} color ${JSON.stringify(e)}: ${n}`),this.name=`ColorSpecError`}};function xj(e,t,n,r,i){let{palette:a,tint:o}=e,s=Sj(n,i),c=s===void 0?o:Cj(a,s,`bg`);e.bg=c;let l=Sj(r,i),u=l===void 0?wa(a,c,t):Cj(a,l,`fg`);return new V({bgcolor:hn.fromRgba(c),color:hn.fromRgba(u)})}function Sj(e,t){if(e!==void 0)return e.evaluate(t).map(e=>e.plain).join(``)}function Cj(e,t,n){try{return Yn(e,t)}catch(e){throw e instanceof Kn?new bj(t,n,e.message):e}}function wj(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,Tj(e,t,o,n,r,i));return i}function Tj(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=Vb(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=bb.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=Vb(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=Vb(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:Dj(e,n.copy,t)};if(`open`in n)return{kind:`open`,target:Dj(e,n.open,t)};if(`reset`in n)return{kind:`reset`,key:n.reset};if(`doctor`in n)return n.doctor===`run`?{kind:`doctor-run`}:{kind:`doctor-fix`,check:n.check};if(`ceiling`in n)return{kind:`ceiling`,args:eC(n)};if(`slash`in n)return{kind:`slash`,line:n.slash};if(`undo`in n)return{kind:`undo`};if(`redo`in n)return{kind:`redo`};if(`save`in n)return{kind:`save`};if(`preset`in n)return n.preset===`save`?{kind:`preset-save`}:{kind:`preset-delete`,name:Dj(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 Ej(e){return e.kind===`do`?Ej(e.head):e}function Dj(e,t,n){try{return e(t)}catch(e){throw Error(`Template parse error in actions.${n}: ${e.message}`,{cause:e})}}function Oj(e,t){return e.has(t)?vv(e.read(t)):``}function kj(e,t){return e.evaluate(t).map(e=>e.plain).join(``)}function Aj(e,t,n,r){let i=new U(e,{style:V.combine([r,new V({link:t,bold:n})])});return i.overflow=`ignore`,i.end=``,i}function jj(e,t){return Math.max(e.members.indexOf(Oj(t,e.stateVar)),0)}function Mj(e,t,n,r,i){switch(e.kind){case`set-literal`:{let t=Oj(r,e.stateVar);return{effects:[{verb:YT,args:[i,e.key,e.value]}],active:t===e.value}}case`set-option`:{let a=n??t,o=Oj(r,e.stateVar);return{effects:[{verb:YT,args:[i,e.key,a]}],active:o===a}}case`set-int`:{let a=n??t,o=Oj(r,e.stateVar);return{effects:[{verb:YT,args:[i,e.key,a]}],active:o===a}}case`set-cycle`:{let t=e.members[(jj(e,r)+1)%e.members.length];return{effects:[{verb:YT,args:[i,e.key,t]}],active:!1}}case`set-bounded`:return{effects:[{verb:XT,args:[i,e.key,String(e.by)]}],active:!1};case`copy`:return{effects:[{verb:ZT,args:[kj(e.text,uy(r))]}],active:!1};case`open`:return{effects:[{verb:QT,args:[kj(e.target,uy(r))]}],active:!1};case`persist-literal`:{let t=Oj(r,e.stateVar);return{effects:[{verb:nE,args:[i,e.key,e.value]}],active:t===e.value}}case`persist-option`:{let a=n??t,o=Oj(r,e.stateVar);return{effects:[{verb:nE,args:[i,e.key,a]}],active:o===a}}case`persist-cycle`:{let t=e.members[(jj(e,r)+1)%e.members.length];return{effects:[{verb:nE,args:[i,e.key,t]}],active:!1}}case`persist-bounded`:return{effects:[{verb:rE,args:[i,e.key,String(e.by)]}],active:!1};case`reset`:return{effects:[{verb:sE,args:[i,e.key]}],active:!1};case`undo`:return{effects:[{verb:lE,args:[i]}],active:!1};case`redo`:return{effects:[{verb:uE,args:[i]}],active:!1};case`save`:return{effects:[{verb:iE,args:[i]}],active:!1};case`preset-save`:return{effects:[{verb:aE,args:[i]}],active:!1};case`preset-delete`:return{effects:[{verb:oE,args:[i,kj(e.name,uy(r))]}],active:!1};case`doctor-run`:return{effects:[{verb:fE,args:[i]}],active:!1};case`doctor-fix`:return{effects:[{verb:pE,args:[i,e.check]}],active:!1};case`ceiling`:return{effects:[{verb:mE,args:[i,...e.args]}],active:!1};case`slash`:return{effects:[{verb:hE,args:[i,e.line]}],active:!1};case`layout-op`:return{effects:[{verb:cE,args:[i,e.key,_O(e.op)]}],active:!1};case`do`:{let a=Mj(e.head,t,n,r,i);return{effects:[...a.effects,...e.rest.flatMap(e=>Mj(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:cE,args:[i,e.key,_O(r)]}],active:!1}}}}function Nj(e,t,n,r){if(n.length===0)throw Error(`action "${e}" needs a display (the clickable text)`);if(t.kind===`set-cycle`||t.kind===`persist-cycle`)return{display:Kc(`action "${e}"`,n,t.members.length,jj(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 Pj(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}=Nj(e,Ej(r),t,i),{effects:s,active:c}=Mj(r,a,o,i,Oj(i,`session.id`));return Aj(a,vE(s),c)}function Fj(e){return{action:{fn:(t,...n)=>Pj(t,n,e),argTypes:[`string`,`string`],arity:{kind:`variadic`},returnType:`T`}}}function Ij(e,t){return Aj(`✕`,vE([{verb:YT,args:[Oj(e,`session.id`),t,Uc]}]),!1)}function Lj(e,t,n){return new V({bgcolor:hn.fromRgba(t),color:hn.fromRgba(wa(e,t,n))})}function Rj(e,t,n){return Lj(e.palette,La(e.palette,e.disclosure,[t],n),n)}function zj(e,t,n,r,i){return r===void 0?n=>Rj(e,{...n,distribution:t},i):(e,t)=>Bj(r(t,n),i)}function Bj(e,t){let n=ma(e,`background`);return new V({bgcolor:hn.fromRgba(n),color:hn.fromRgba(rr(ma(e,`primary`),n,4.5,t))})}function Vj(e){return{current:null,drawnAt:e}}function Hj(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 Uj(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 Wj(e){return new U(e).cellLength}function Gj(e){return Math.max(1,e.width-e.chromeCols-2*e.padding)}function Kj(e){return Math.max(1,Gj(e)-(Wj(`✕`)+2*e.padding+e.seamCols))}function qj(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 Jj(e,t){let n=[];for(let t of e)n.length>0&&n.push(new U(` `)),n.push(t);let r=U.fromFragments(n);return r.overflow=t?`ignore`:void 0,r.end=``,r}function Yj(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 Xj(e,t,n){let r=e.compiled.get(t),i=r&&Ej(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 Zj(e,t,n,r,i,a,o){let s=Xj(a,e,`picker`),c=a.compiled.get(e),l=a.store,u=Oj(l,`session.id`),d=`stateVar`in s?Oj(l,s.stateVar):void 0,f=s.options.map(Wj),p=i?Gj(a):1/0,m=Wj(`✕`)+1,h=Wj(`←`)+1+Wj(`→`)+1,g=qj(f,p,m),_=g.length>1?qj(f,p,m+h):g,v=parseInt(Oj(l,t.stateVar),10),y=Number.isInteger(v)?Math.max(0,Math.min(v,_.length-1)):0,b=_[y]??[],x=e=>vE([{verb:YT,args:[u,t.key,String(e)]}]),S=n.flatMap(([e,t])=>[e,t]),C=vE([{verb:YT,args:[u,...S]}]),ee=r?[{verb:YT,args:[u,...S]}]:[],te=e=>vE([...Mj(c,e,e,l,u).effects,...ee]),ne=[Aj(`✕`,C,!1)];y>0&&ne.push(Aj(`←`,x(y-1),!1));for(let e of b){let t=s.options[e];ne.push(Aj(t,te(t),t===d,o({index:e,count:s.options.length},t)))}return y<_.length-1&&ne.push(Aj(`→`,x(y+1),!1)),Jj(ne,i)}function Qj(e,t){return{picker:{fn:(n,r,i,a,...o)=>{iy(`picker "${n}"`,[`closeOnPick`,`paged`],o);let s=Yj(e,r,`set-int`,`an int action ({ set, int: true })`);return Zj(n,{key:s.key,stateVar:s.stateVar},[[s.key,`-1`]],i===!0,a===!0,e,zj(Uj(t,`{{ picker }}`),ca(void 0),e,Xj(e,n,`picker`).paletteOf,t.drawnAt()))},argTypes:[`string`,`string`,`bool`],arity:{kind:`variadic`},returnType:`T`}}}function $j(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+Wj(e(-(s+1)))+1+Wj(e(s+1))+1;if(t>r)break;o=t,s+=1}return s}function eM(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=Oj(a,`session.id`),{options:c}=t,l=c.length,u=Oj(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=vE(Mj(o,p(e),p(e),a,s).effects);return m.set(e,n),n},g=e=>Aj(p(e),h(e),p(e)===u,r({index:f(e),count:l},p(e))),_=$j(p,l,Wj(`◀`)+1+Wj(p(0))+1+Wj(`▶`),Kj(n),i),v=e=>Array.from({length:_},(t,n)=>g(e*(n+1)));return Jj([...v(-1).reverse(),Aj(`◀`,h(-1),!1),g(0),Aj(`▶`,h(1),!1),...v(1)],!0)}function tM(e,t){return{carousel:{fn:(n,r,...i)=>{if(iy(`carousel "${n}"`,[`neighbours`],i),r!==void 0&&r<0)throw Error(`carousel "${n}": neighbours must be a whole number ≥ 0 (0 shows only ◀ CURRENT ▶), got ${String(r)}`);let a=r??1/0,o=Xj(e,n,`carousel`);return eM(n,o,e,zj(Uj(t,`{{ carousel }}`),ca(void 0),e,o.paletteOf,t.drawnAt()),a)},argTypes:[`string`,`int`],arity:{kind:`variadic`},returnType:`T`}}}const nM=[`~/code`,`main`,`opus`,`42%`,`5m`,`$1.20`];function rM(e,t,n){let r=Aa(e,{hue:ea,depth:0},n);return[na(t).map((t,n)=>({text:nM[n%nM.length],colour:ha(e,t)})),[{text:`▾ open`,colour:r.state},{text:`menu`,colour:r.plane}],[{text:`warn`,colour:ma(e,`warning`)},{text:`error`,colour:ma(e,`error`)}]]}function iM(e,t,n,r){let i=rM(e,t,n).flatMap((t,r)=>t.map(({text:t,colour:i},a)=>({gap:r>0&&a===0?` `:``,cell:new U(` ${t} `,{style:Lj(e,i,n)})}))),a=[],o=0;for(let{gap:e,cell:t}of i){if(o+=e.length+t.cellLength,o>r)break;e!==``&&a.push(new U(e)),a.push(t)}let s=U.fromFragments(a);return s.overflow=`ignore`,s.end=``,s}function aM(e,t){return{themePreview:{fn:()=>iM(e.palette,e.progression,t.drawnAt(),Kj(e)),argTypes:[],arity:{kind:`exact`},returnType:`T`}}}const oM=e=>e.slice(e.lastIndexOf(`.`)+1),sM=(e,t)=>{let n=new U(oM(e));return n.truncate(t,{marker:`…`}),n.plain};function cM(e,t){let n=e.map(e=>e.map(({name:e})=>Wj(oM(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 lM(e,t,n,r){let i=cM(e,r),a=e.map(e=>{let a=[],o=0;for(let{name:s,address:c,palette:l}of e){let e=new U(` ${sM(s,i)} `,{style:Lj(l,Va(l,{kind:`bar`,progression:t,address:c},n).tint,n)});if(o+=e.cellLength,o>r)break;a.push(e)}return a}),o=U.fromFragments(a.flatMap((e,t)=>t===0?e:[new U(`
182
- `),...e]));return o.overflow=`ignore`,o.end=``,o}function uM(e,t){return{layoutPreview:{fn:()=>lM(e.layout(),e.progression,t.drawnAt(),Kj(e)),argTypes:[],arity:{kind:`exact`},returnType:`T`}}}function dM(e,t,n,r){let i=Uj(r.activeSegment,`{{ menu }}`),a=r.action,o=u_(i.placementId,e,n.key),s=p_(o),c=l_(e),l=Oj(a.store,o)===c,u=Oj(a.store,`session.id`),d=l?Uc:c,f=Aj(Kc(`{{ menu "${e}" }}`,t,2,+!!l),vE([{verb:YT,args:[u,o,d,s,`0`]}]),!1);return i.drops.push(...l?[Zj(e,{key:s,stateVar:s},[[o,Uc],[s,`0`]],n.closeOnPick,n.paged,a,zj(i,n.distribution,a,Xj(a,e,`menu`).paletteOf,r.activeSegment.drawnAt()))]:[]),f}const fM=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function pM(e,t){let n=t[t.length-1],r=fM(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:__(r??{})}}function mM(e){return{menu:{fn:(t,...n)=>{let{displays:r,options:i}=pM(t,n);return dM(t,r,i,e)},argTypes:[`string`,`value`],arity:{kind:`variadic`},returnType:`T`}}}function hM(e){let{value:t,max:n,width:r,filled:i,empty:a,colourAt:o}=e,s=gM(t,n,r),c=[];for(let e=0;e<r;e++){let t=e<s,l=t&&o!==void 0?o(e*n/r):void 0;c.push(new U(t?i:a,{style:l===void 0?void 0:new V({color:l})}))}let l=U.fromFragments(c);return l.end=``,l.overflow=`ignore`,l}function gM(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 _M(e){let t={fn:(()=>{let t=Uj(e,`{{ bgOf }}`);if(t.bg===void 0)throw Error(`{{ bgOf }} is not available while segments.${t.segName}'s own "bg:" is being evaluated — the background is what that template computes. Reach for a palette color there instead, e.g. bg: '{{ darken (color "surface") 1 }}'.`);return t.bg.hex}),argTypes:[],arity:{kind:`exact`},returnType:`string`},n={fn:(()=>Uj(e,`{{ tint }}`).tint.hex),argTypes:[],arity:{kind:`exact`},returnType:`string`},r=Wv(()=>Uj(e,`{{ color }} / {{ ramp }} / {{ gauge }}`).palette),i={fn:((e,t,n,i,a,o,...s)=>{let c=o===void 0?void 0:[o,...vM(s)];return hM({value:e,max:t,width:n,filled:i,empty:a,colourAt:c===void 0?void 0:e=>String(r.ramp.fn(e,...c))})}),argTypes:[`float`,`float`,`int`,`string`,`string`,`string`],arity:{kind:`variadic`},returnType:`T`};return{...r,bgOf:t,tint:n,gauge:i}}function vM(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 yM(e){let t=[],n=[];for(let r of e){if(!r.contains(`
170
+ Tip: every bar carries a settings menu — click it (${Wc} by\n default) for quick actions, preset switching, edit mode, and clickable\n theme/look/style/wrap/padding controls.\n`}async function uD(e){let t=e.includes(`--force`),n=e.filter(e=>e!==`--force`),r=n.length>0?n:[...HE],i=nD();process.platform===`darwin`?iD(i.distPath):process.stdout.write(`Skipping URL handler (cmd-click verbs are macOS-only).
171
+ `),dD(i.binPath,r,t),process.stdout.write(lD());let a=BE(LE,zE(TE,await RE(LE,fetch,`https://registry.npmjs.org`)));process[a.stream].write(a.text)}function dD(e,t,n,i){let a=i??OE(DE(EE(process.env,process.cwd())));r.mkdirSync(c.dirname(a),{recursive:!0});let o={};if(r.existsSync(a))try{o=JSON.parse(r.readFileSync(a,`utf-8`))}catch(e){throw Error(`Could not parse ${a}: ${e instanceof Error?e.message:String(e)}`)}let s=o.statusLine?.command,l=[e,WE(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:GE(e,t)},k(a,JSON.stringify(o,null,2)),process.stdout.write(`Updated ${a}\n`)}function fD(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 pD(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 mD(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 hD(e,t){let n=pD(e);if(n.kind===`owned`&&n.pid===t)try{r.unlinkSync(e)}catch{}}function gD(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 _D(e,t,n,r){let i=vD(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 vD(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 yD(e){let t=!1;function n(){let n=_D(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 bD(e,t=Oe){let n=t({bin:`ps`,args:[`-o`,`lstart=`,`-p`,String(e)],category:`process-fingerprint`,timeoutMs:2e3,env:{...process.env,LC_ALL:`C`,TZ:`UTC`}});if(n.ok){let e=n.stdout.trim();return e.length>0?{kind:`start`,token:e}:{kind:`unavailable`,detail:`ps produced no start-time`}}return{kind:`unavailable`,detail:n.reason===`spawn-error`?n.error??`ps spawn failed`:`ps ${n.reason} (exit ${n.exitCode})`}}function xD(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 SD(e,t=bD){let n=t(e);return n.kind===`start`?n.token:null}const CD=`CC_CANDYBAR_PARENT_PID`;function wD(e){let t=e[CD];if(t===void 0)return{kind:`outlives-nobody`};let n=Number.parseInt(t,10);if(!Number.isInteger(n)||n<=0)throw Error(`${CD} must be a positive integer pid, got ${JSON.stringify(t)}`);return{kind:`anchored`,pid:n}}function TD(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 ED(e){try{return t.kill(e,0),!0}catch(e){return e.code===`EPERM`}}function DD(){let e=Number(process.env.CC_CANDYBAR_DAEMON_CEILING??``);return Number.isInteger(e)&&e>0?e:16}function OD(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 kD(e){try{return r.readdirSync(e).filter(e=>e.endsWith(`.json`)).map(t=>c.join(e,t))}catch{return[]}}function AD(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 jD(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 MD(e){if(!e.isolated)return{decision:OD(!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=OD(!0,jD(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 ND(e,t,n,r){let i=n(e);if(i!==null&&i.pid===t)try{r(e)}catch{}}function PD(e,t={}){return{isolated:!!process.env.CC_CANDYBAR_SOCKET,registryDir:He(),ceiling:DD(),pid:process.pid,startTime:e,isSameLiveProcess:(e,t)=>xD(e,t,{readStartTime:bD,pidAlive:ED}),listFiles:kD,readEntry:AD,removeFile:e=>{try{r.unlinkSync(e)}catch{}},writeEntry:(e,t)=>{let n=`${e}.${t.pid}.tmp`;try{r.writeFileSync(n,JSON.stringify(t),{mode:384}),r.renameSync(n,e)}catch(e){try{r.unlinkSync(n)}catch(e){e.code}throw e}},ensureDirSafe:process.env.CC_CANDYBAR_DAEMON_REGISTRY_DIR?Ie:e=>{Ie(c.dirname(e)),Ie(e)},...t}}function FD(e){return e<32||e===127||e>=128&&e<=159}function ID(e){let t=``;for(let n of e)t+=FD(n.codePointAt(0)??0)?` `:n;return t.replace(/\s+/g,` `).trim()}function LD(e,t){let n=ID(e),r=``,i=0;for(let e of n){if(i===t)return r.replace(/.$/u,`…`);r+=e,i++}return r}const RD=`\x1B[38;2;255;255;255m`,zD=`\x1B[48;2;200;40;40m`;function BD(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 VD={fg:BD(RD),bg:BD(zD)},HD={fg:BD(`\x1B[38;2;0;0;0m`),bg:BD(`\x1B[48;2;220;160;40m`)},UD={unicode:Fi,ascii:{glyph:`>`,divider:`|`,lead:`<`,tail:`>`}},WD={unicode:{},ascii:{left:`(`,right:`)`}};function GD(e,t,n){switch(e){case`capsule`:return new Vi(WD[t]);case`plain`:return new Hi(n===void 0?{}:{separator:n});case`powerline`:return new Ri(UD[t]);default:return e}}const KD=new Map;function qD(e){let t=JSON.stringify([e.style,e.charset,e.separator??null]),n=KD.get(t);if(n!==void 0)return n;let r=GD(e.style,e.charset,e.separator),i=e=>new U(`x`,{end:``,overflow:`ignore`,style:new V({bgcolor:e})}),a=e=>new U(Gi(new Oi(e,r),{colorSystem:null}).replace(/\n$/,``)).cellLength,o=a([i(`#101010`)]),s={chrome:o-1,seam:a([i(`#101010`),i(`#202020`)])-o-1};return KD.set(t,s),s}function JD(e){return qD(e).chrome}function YD(e){return qD(e).seam}function XD(e,t){if(e.length===0)return``;let n=GD(t.style,t.charset,t.separator),r=t.colorCompatibility,i=t.wrap&&Number.isFinite(t.width)?Gi(new Zi([...e],{joiner:n}),{width:t.width,colorSystem:r}):Gi(new Oi([...e],n),{colorSystem:r});if(!i.endsWith(`
172
+ `))throw Error(`renderStripCells: rich-js strip output did not end its last line`);return i.slice(0,-1)}function ZD(e){return Math.min(20,e??20)}const QD={heading:`ERROR`,glyph:`⚠`,colors:VD},$D={heading:`WARNING`,glyph:`⚠`,colors:HD},eO={heading:`UPDATE`,glyph:`⬆`,colors:HD};function tO(e,t){return{text:ID(e),link:t}}function nO(e,t,n){let[r,...i]=[rO(e,QD,tE),t,rO(n,$D,nE)].flat();return r===void 0?null:{channels:[r,...i]}}function rO(e,t,n){let r=yE([{verb:n,args:[e]}]),[i,...a]=e.split(/\r\n|\r|\n/).map(e=>tO(e,r)).filter(e=>e.text!==``).map(e=>[e]);return i===void 0?[]:[{severity:t,message:e,lines:[i,...a]}]}function iO(e){return e.channels.map(e=>`${e.severity.heading}\n${e.message}\n`).join(`
173
+ `)}function aO(e,t,n,r){if(t===null)return e;let i=oO(r),a=t.channels.flatMap(e=>sO(e,i)),o=n.failedConfigFile!==null||a.length>r.rowCap,s=a.slice(0,r.rowCap-Number(o)),c=o?[cO(t,n,a.length-s.length,i)]:[],l=[...s,...c].join(`
174
+ `);return e?`${l}\n${e}`:l}function oO(e){return{style:`plain`,separator:``,width:e.width,wrap:!0,padding:0,charset:`unicode`,colorCompatibility:e.colorCompatibility}}function sO(e,t){let n=new V({bgcolor:e.severity.colors.bg,color:e.severity.colors.fg}),r=Lt(Math.max(2,t.width-1)),i=(e,t)=>new U(`${e} `,{style:t,end:``,overflow:`ignore`});return e.lines.flatMap((a,o)=>XD([i(o===0?e.severity.glyph:` `,n.withLink(a[0].link)),...a.flatMap(e=>{let t=n.withLink(e.link);return e.text.split(` `).flatMap(e=>Vt(e,r)).map(e=>i(e,t))})],t).split(`
175
+ `))}function cO(e,t,n,r){let{colors:i}=e.channels[0].severity,{fullText:a,failedConfigFile:o}=t,s=new V({bgcolor:i.bg,color:i.fg}),c=(e,t)=>new U(e,{style:t,end:``,overflow:`ignore`}),l=n>0?[c(`${n} more rows · `,s),a.kind===`file`?c(`open full text`,s.withLink(T(a.path).href)):c(`full text unavailable: ${ID(a.reason)}`,s)]:[],u=o===null?[]:[c(`${l.length>0?` · `:``}open `,s),c(ID(o),s.withLink(T(o).href))],d=[c(`↳ `,s),...l,...u.slice(0,-1)],f=d.reduce((e,t)=>e+t.cellLength,0),p=u.slice(-1).map(e=>e.truncate(Math.max(1,r.width-f),{mode:`middle`})),m=U.fromFragments([...d,...p]).truncate(r.width);return m.overflow=`ignore`,XD([m],r)}const lO=e=>!e.startsWith(`.`)&&!e.endsWith(`~`);function uO(e,t){return t.isSymbolicLink()?Buffer.from(r.readlinkSync(e)):r.readFileSync(e)}function dO(e,t){return r.readdirSync(t).filter(lO).sort().flatMap(n=>{let i=c.join(t,n),a=r.lstatSync(i,{throwIfNoEntry:!1});return a===void 0?[]:a.isDirectory()?dO(e,i):[[c.relative(e,i).split(c.sep).join(`/`),uO(i,a)]]})}function fO(e){let t=E.createHash(`sha256`);for(let[n,r]of dO(e,e))t.update(n).update(`\0`).update(r).update(`\0`);return t.digest(`hex`)}const pO=e=>e.slice(0,7);function mO(e){return c.dirname(c.dirname(e))}function hO(){return{version:TE,digest:`6a7905a8d85a7cd99edba55b480331c04ee0881eabfe6c382b73e7088c5b9685`}}function gO(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 _O(e,t){try{let n=mO(ie(e)),i=c.join(n,`src`);if(!r.existsSync(i))return{kind:`not-source-checkout`};let a=t(),o=fO(i);return o===a.digest?{kind:`current`,root:n,stamp:a}:{kind:`stale`,root:n,source:{version:gO(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 vO(e){return e.op===`remove`?`remove:${e.target}`:`insert:${e.segment}:${e.anchor}:${e.relation}`}function yO(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 bO(e,t,n){let r=ks(e,new Set(n.map(Os).filter(e=>e.includes(t)).flat()));return r===e?{seg:e}:{seg:e,id:r}}const xO=/^-?\d+$/;function SO(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 CO(e){return t=>{if(!t)return{ok:!1,reason:`${e} value is required`};if(!xO.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 wO(e,t,n){return r=>r?xO.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 TO(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=>!xO.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 EO(e){return e===`config`?`set-config`:`set-state`}function DO(e,t,n){return t.kind===`int`?CO(`menu page "${e}"`):t.kind===`range`?wO(t.min,t.max,`${n} stepper "${e}"`):SO(t.allowed,`${n} "${e}"`,EO(n))}function OO(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:TO(e,n,t)}))}function kO(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=TO(e,[...a.specs,i],t);a.specs.push(i),a.merged=n,a.validator=DO(e,n,t)}else{let r=TO(e,[i],t);n.set(e,{permanent:!1,specs:[i],merged:r,validator:DO(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=TO(e,r.specs,t),r.validator=DO(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 AO=kO({},`config`);function jO(){return AO.listKeys()}function MO(e,t){return AO.validate(e,t)}function NO(e){return AO.rangeParamsFor(e)}function PO(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:Hb(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:[vO({op:`remove`,target:e.removeSegment})]}}]:`insertSegment`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:[vO({op:`insert`,segment:e.insertSegment,anchor:e.anchor,relation:e.relation})]}}]:`insertSegmentFrom`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:Hb(e.insertSegmentFrom,t).members.map(t=>vO({op:`insert`,segment:t,anchor:e.anchor,relation:e.relation}))}}]:[{key:e.persist,spec:{kind:`range`,min:e.min,max:e.max}}]:[]}function FO(e,t){let n=Ol(e.globals).get(t);return n===void 0?null:String(n)}function IO(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?Zb(n.persist):null;e?.scope===`preset-root`&&t.add(Yb(e.preset))}return[...t].map(e=>({key:e,spec:{kind:`allow-list`,allowed:[]}}))}function LO(e){let t=new Map([...Bb(e),...hx(e)]);return[...IO(e),...Object.values(e.actions).flatMap(e=>PO(e,t))]}function RO(e){return OO(LO(e),`config`)}function zO(e,t){return AO.register(e,t)}const BO=Array.from({length:10},(e,t)=>(t+1)*1e5),VO=BO[0],HO=BO[BO.length-1];function UO(e){let t;try{t=jE(e)}catch(e){return X(e instanceof Error?e.message:String(e))}let n=t.autoCompactWindow;return n===void 0?J(`auto`):typeof n==`number`&&Number.isInteger(n)&&n>=VO&&n<=HO?J(n):X(`${e}: autoCompactWindow is ${JSON.stringify(n)}, not a window /autocompact accepts (${VO}–${HO} tokens)`)}function WO(e,t){let n=Math.min(t??HO,HO),r=e===`auto`?n:Math.min(e,n);return{window:e===`auto`?0:e,applied:e===`auto`?0:r,lower:BO.filter(e=>e<r).at(-1)??0,higher:BO.find(e=>e>r&&e<=n)??0}}const GO=Zx(`commands.`),KO=`trimPrefix "/" (trimPrefix .project_dir .current_dir)`,qO=`{{ \$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 (${KO}) (basename .project_dir) (ne (${KO}) "") }}{{ end }}{{ end }}{{ abbreviatePath \$dir }}`,JO={min:0,max:100,step:5},YO={warnAt:{label:`warning at %`,domain:JO,default:50},errorAt:{label:`error at %`,domain:{...JO,atLeast:`warnAt`},default:80}};function XO(e){return{budget:{label:`budget $`,domain:{min:0,max:1e4,step:5},default:e},warnAt:{label:`warning at %`,domain:JO,default:80}}}const ZO={globals:{palette:`tokyo-night`},variables:{...GO.variables,...vb,current_dir:{kind:`input`,path:`workspace.current_dir`,default:`?`},"model.display_name":{kind:`input`,path:`model.display_name`,default:``},version:{kind:`input`,path:`version`,default:``},home:{kind:`input`,path:`home`,default:``},"tmux.session":{kind:`input`,path:`tmux.session`,default:``},"host.name":{kind:`input`,path:`host.name`,default:``},"host.user":{kind:`input`,path:`host.user`,default:``},"host.ssh":{kind:`input`,path:`host.ssh`,type:`boolean`,default:!1},"git.repoName":{kind:`input`,path:`git.repoName`,default:``},"git.branch":{kind:`input`,path:`git.branch`,default:``},"git.sha":{kind:`input`,path:`git.sha`,default:``},"git.ahead":{kind:`input`,path:`git.ahead`,type:`number`,default:0},"git.behind":{kind:`input`,path:`git.behind`,type:`number`,default:0},"git.staged":{kind:`input`,path:`git.staged`,type:`number`,default:0},"git.unstaged":{kind:`input`,path:`git.unstaged`,type:`number`,default:0},"git.untracked":{kind:`input`,path:`git.untracked`,type:`number`,default:0},"git.conflicts":{kind:`input`,path:`git.conflicts`,type:`number`,default:0},"git.upstream":{kind:`input`,path:`git.upstream`,default:``},"git.stash":{kind:`input`,path:`git.stash`,type:`number`,default:0},"git.status":{kind:`input`,path:`git.status`,default:`clean`},"git.operation":{kind:`input`,path:`git.operation`,default:``},"git.timeSinceCommit":{kind:`input`,path:`git.timeSinceCommit`,type:`number`,default:0},"git.color.branch":{kind:`literal`,value:`primary`},"git.color.staged":{kind:`literal`,value:`success`},"git.color.unstaged":{kind:`literal`,value:`warning`},"git.color.untracked":{kind:`literal`,value:`accent`},"git.color.conflicts":{kind:`literal`,value:`error`},"git.color.ahead":{kind:`literal`,value:`success`},"git.color.behind":{kind:`literal`,value:`warning`},"git.color.stash":{kind:`literal`,value:`accent`},"git.detail":{kind:`state`,key:`git-detail`,default:`collapsed`},"git.prNumber":{kind:`input`,path:`git.prNumber`,type:`number`,default:0},"git.prState":{kind:`input`,path:`git.prState`,default:``},"git.prUrl":{kind:`input`,path:`git.prUrl`,default:``},"git.prError":{kind:`input`,path:`git.prError`,default:``},"cache.expiresAt":{kind:`input`,path:`cache.expiresAt`,type:`number`,default:0},"session.cost":{kind:`input`,path:`session.cost`,type:`number`,default:0},"session.tokens":{kind:`input`,path:`session.tokens`,type:`number`,default:0},"today.cost":{kind:`input`,path:`today.cost`,type:`number`,default:0},"today.tokens":{kind:`input`,path:`today.tokens`,type:`number`,default:0},"block.nativeUtilization":{kind:`input`,path:`block.nativeUtilization`,type:`number`,default:0},"block.resetsAt":{kind:`input`,path:`block.resetsAt`,type:`number`,default:0},"weekly.percentage":{kind:`input`,path:`weekly.percentage`,type:`number`,default:0},"weekly.resetsAt":{kind:`input`,path:`weekly.resetsAt`,type:`number`,default:0},"burn.costPerHour":{kind:`input`,path:`burn.costPerHour`,type:`number`,default:-1},"block.etaMinutes":{kind:`input`,path:`block.etaMinutes`,type:`number`,default:-1},"weekly.etaMinutes":{kind:`input`,path:`weekly.etaMinutes`,type:`number`,default:-1},"speed.input":{kind:`input`,path:`speed.input`,type:`number`,default:-1},"speed.output":{kind:`input`,path:`speed.output`,type:`number`,default:-1},"speed.total":{kind:`input`,path:`speed.total`,type:`number`,default:-1},"speed.history":{kind:`input`,path:`speed.history`,type:`string`,default:``},"context.totalTokens":{kind:`input`,path:`context.totalTokens`,type:`number`,default:0},"context.contextLeft":{kind:`input`,path:`context.contextLeft`,type:`number`,default:100},"memento.ceiling":{kind:`input`,path:`memento.ceiling`,type:`number`,default:-1},"memento.off":{kind:`input`,path:`memento.off`,type:`boolean`,default:!1},"memento.session":{kind:`input`,path:`memento.session`,default:``},"memento.error":{kind:`input`,path:`memento.error`,default:``},"autocompact.window":{kind:`input`,path:`autocompact.window`,type:`number`,default:-1},...Object.fromEntries([`applied`,`lower`,`higher`].map(e=>[`autocompact.${e}`,{kind:`input`,path:`autocompact.${e}`,type:`number`,default:0}])),"autocompact.error":{kind:`input`,path:`autocompact.error`,default:``},"metrics.lastResponseTime":{kind:`input`,path:`metrics.lastResponseTime`,type:`number`,default:0},"metrics.responseTime":{kind:`input`,path:`metrics.responseTime`,type:`number`,default:0},"metrics.sessionDuration":{kind:`input`,path:`metrics.sessionDuration`,type:`number`,default:0},"metrics.messageCount":{kind:`input`,path:`metrics.messageCount`,type:`number`,default:0},"metrics.linesAdded":{kind:`input`,path:`metrics.linesAdded`,type:`number`,default:0},"metrics.linesRemoved":{kind:`input`,path:`metrics.linesRemoved`,type:`number`,default:0},"activity.command":{kind:`input`,path:`activity.command`,type:`string`,default:``},"activity.todo.total":{kind:`input`,path:`activity.todo.total`,type:`number`,default:0},"activity.todo.completed":{kind:`input`,path:`activity.todo.completed`,type:`number`,default:0},"activity.todo.position":{kind:`input`,path:`activity.todo.position`,type:`number`,default:0},"activity.todo.active":{kind:`input`,path:`activity.todo.active`,type:`string`,default:``},"activity.tool.running":{kind:`input`,path:`activity.tool.running`,type:`string`,default:``},"activity.tool.done":{kind:`input`,path:`activity.tool.done`,type:`string`,default:``}},segments:{directory:{description:"The current directory, shortened fish-style — `~` under home, project-relative inside the project.",template:qO},model:{description:`The active model's display name.`,template:`✱ {{ formatModelName .model.display_name }}`,when:`{{ ne .model.display_name "" }}`},sessionId:{description:`The session id, truncated to 8 characters.`,template:`⌗{{ trunc 8 .session.id }}`,when:`{{ ne .session.id "" }}`},version:{description:`The Claude Code version reported in the hook payload.`,template:`◈ v{{ .version }}`,when:`{{ ne .version "" }}`},tmux:{description:`The tmux session name; hidden when not inside tmux.`,template:`tmux:{{ .tmux.session | default "none" }}`,when:`{{ ne .tmux.session "" }}`},host:{description:`user@host on a warning background, shown only over SSH.`,template:`⇄ {{ .host.user | default "?" }}@{{ .host.name | default "?" }}`,bg:`warning`,when:`{{ .host.ssh }}`},gitaculous:{description:`The git state: a summary (branch, ahead/behind, S/U/? flags) that the arrow at its right edge expands to every fact — repo, in-progress operation, sha, upstream ±, stash count, time since the last commit.`,template:`{{ if eq .git.detail "expanded" }}{{ template "gitExpanded" . }}{{ else }}{{ template "gitCollapsed" . }}{{ end }} {{ action "gitDetail" "▸" "◂" }}`,fg:`{{ readableOn (mix (color "foreground") (bgOf) 60) (bgOf) 3 }}`,when:`{{ ne .git.branch "" }}`,settings:{aheadBehind:{label:`ahead/behind`,domain:`bool`,default:!0},flags:{label:`dirty flags`,domain:`bool`,default:!0},operation:{label:`operation`,domain:`bool`,default:!0},repo:{label:`repo name`,domain:`bool`,default:!0},sha:{label:`commit hash`,domain:`bool`,default:!0},stash:{label:`stash`,domain:`bool`,default:!0},upstream:{label:`upstream`,domain:`bool`,default:!0},age:{label:`time since commit`,domain:`bool`,default:!0}}},gitPr:{description:"The pull request open for this branch, as a link; `⚠ PR` when the forge lookup failed.",template:`{{ if ne .git.prUrl "" }}{{ link .git.prUrl (printf "⇆ #%v" .git.prNumber) }}{{ else }}⚠ PR{{ end }}`,when:`{{ or (ne .git.prUrl "") (ne .git.prError "") }}`},toolbar:{description:`Quick actions: copy the session id, and open the project, transcript or repo.`,template:Hx(``).template},commands:{description:`Type /compact, /model or /clear into this session; /clear asks for a second click.`,template:GO.template},themeSwitcher:{description:"`◀ <theme> ▶`: the theme the bar is wearing; ◀ and ▶ switch this session to the previous or next theme, wrapping at the ends.",template:`{{ carousel "stepTheme" 0 }}`},session:{description:`This session's cost and token total, with a budget warning once a budget is configured.`,template:`§ {{ template "formatCost" .session.cost }} ({{ template "formatTokens" .session.tokens }}){{ template "budgetStatus" (dict "cost" .session.cost "budget" .settings.budget "warn" .settings.warnAt) }}`,settings:XO(0)},today:{description:`Today's cost and tokens across every session, with a budget warning once a budget is configured.`,template:`☉ {{ template "formatCost" .today.cost }} ({{ template "formatTokens" .today.tokens }}){{ template "budgetStatus" (dict "cost" .today.cost "budget" .settings.budget "warn" .settings.warnAt) }}`,settings:XO(50)},block:{description:`The 5-hour rate-limit block: percent used and time to reset, heating to warning then error.`,template:`◱ {{ round .block.nativeUtilization }}% ({{ template "formatResetCountdown" .block.resetsAt }})`,bg:`{{ ramp (round .block.nativeUtilization) "step" 0 (tint) .settings.warnAt "warning" .settings.errorAt "error" }}`,settings:YO,when:`{{ gt .block.resetsAt 0 }}`},weekly:{description:`The weekly rate-limit quota: percent used and time to reset, heating to warning then error.`,template:`◑ {{ round .weekly.percentage }}% ({{ template "formatResetCountdown" .weekly.resetsAt }})`,bg:`{{ ramp (round .weekly.percentage) "step" 0 (tint) .settings.warnAt "warning" .settings.errorAt "error" }}`,settings:YO,when:`{{ gt .weekly.resetsAt 0 }}`},burnrate:{description:`Spend per hour, with the projected time to the 5-hour and weekly limits.`,template:`⚡ {{ template "formatRate" .burn.costPerHour }} · {{ template "formatEta" .block.etaMinutes }} to 5h · {{ template "formatEta" .weekly.etaMinutes }} to wk`,bg:`{{ ramp .block.etaMinutes "step" -1 (tint) 0 "error" .settings.errorWithin "warning" .settings.warnWithin (tint) }}`,settings:{errorWithin:{label:`error within (min)`,domain:{min:0,max:300,step:5},default:30},warnWithin:{label:`warning within (min)`,domain:{min:0,max:300,step:5,atLeast:`errorWithin`},default:60}},when:`{{ or (gt .block.resetsAt 0) (gt .weekly.resetsAt 0) }}`},speed:{description:`Token throughput for the latest exchange: output, input, and total.`,template:`⇅ out {{ template "formatSpeed" .speed.output }} · in {{ template "formatSpeed" .speed.input }} · tot {{ template "formatSpeed" .speed.total }}`,when:`{{ gt .session.tokens 0 }}`},tokenSparkline:{description:`A sparkline of recent token throughput.`,template:`⚡ {{ sparkline .speed.history 24 }}`,when:`{{ ne .speed.history "" }}`},cacheTimer:{description:"Minutes until the prompt cache expires, or `cold` once it has.",template:`◴ {{ if le (minutesUntilReset .cache.expiresAt) 0 }}cold{{ else }}{{ minutesUntilReset .cache.expiresAt }}m{{ end }}`,fg:`{{ readableOn (color (cascade (minutesUntilReset .cache.expiresAt) "0:error" "9:warning" "21:foreground")) (bgOf) ${Ca} }}`,when:`{{ gt .cache.expiresAt 0 }}`},context:{description:`Context used, in tokens and percent remaining, heating as it fills.`,template:`◔ {{ formatInteger .context.totalTokens }} ({{ .context.contextLeft }}%)`,bg:`{{ ramp .context.contextLeft "step" 0 "error" 21 "warning" 41 (tint) }}`,when:`{{ gt .context.totalTokens 0 }}`},ceiling:{description:`The memento plugin's context ceiling for this session: − and + move it by 100K, ∞ lifts it, ↺ drops this session's own setting.`,template:`{{ if ne .memento.error "" }}⌈ ⚠ {{ .memento.error }} {{ action "ceiling.clear" "↺" }}{{ else }}⌈ {{ if .memento.off }}off{{ else }}{{ template "formatTokenCount" .memento.ceiling }} {{ action "ceiling.lower" "−" }} {{ action "ceiling.raise" "+" }} {{ action "ceiling.off" "∞" }}{{ end }}{{ if ne .memento.session "" }} {{ action "ceiling.clear" "↺" }}{{ end }}{{ end }}`,bg:`{{ if ne .memento.error "" }}{{ color "error" }}{{ else }}{{ tint }}{{ end }}`,when:`{{ or (ge .memento.ceiling 0) (ne .memento.error "") }}`},autocompact:{description:`Claude Code's auto-compact window: − and + move it by 100K, ↺ returns it to auto. Clicks type /autocompact into this session.`,template:`{{ if ne .autocompact.error "" }}⇲ ⚠ {{ .autocompact.error }}{{ else }}⇲ {{ if eq .autocompact.window 0 }}auto{{ else }}{{ template "formatTokenCount" .autocompact.applied }}{{ end }}{{ if gt .autocompact.lower 0 }} {{ action (printf "autocompact.%d" .autocompact.lower) "−" }}{{ end }}{{ if gt .autocompact.higher 0 }} {{ action (printf "autocompact.%d" .autocompact.higher) "+" }}{{ end }}{{ if gt .autocompact.window 0 }} {{ action "autocompact.auto" "↺" }}{{ end }}{{ end }}`,bg:`{{ if ne .autocompact.error "" }}{{ color "error" }}{{ else }}{{ tint }}{{ end }}`,when:`{{ or (ge .autocompact.window 0) (ne .autocompact.error "") }}`},metrics:{description:`Response times, session duration, message count, and lines added/removed.`,template:`{{ if .metrics.lastResponseTime }} Δ {{ template "formatResponseTime" .metrics.lastResponseTime }}{{ end }}{{ if .metrics.responseTime }} ⧖ {{ template "formatResponseTime" .metrics.responseTime }}{{ end }}{{ if .metrics.sessionDuration }} ⧗ {{ template "formatDuration" .metrics.sessionDuration }}{{ end }}{{ if .metrics.messageCount }} ◆ {{ .metrics.messageCount }}{{ end }}{{ if .metrics.linesAdded }} + {{ .metrics.linesAdded }}{{ end }}{{ if .metrics.linesRemoved }} - {{ .metrics.linesRemoved }}{{ end }} `,when:`{{ or (gt .metrics.lastResponseTime 0.0) (gt .metrics.responseTime 0.0) (gt .metrics.sessionDuration 0.0) (gt .metrics.messageCount 0) (gt .metrics.linesAdded 0) (gt .metrics.linesRemoved 0) }}`},activity:{description:`What Claude is doing: the slash command that opened the turn, the in-progress todo, and the tools in flight.`,template:`{{ if .activity.command }} ⌘ {{ .activity.command }}{{ end }}{{ if .activity.todo.total }}{{ if .activity.todo.active }} ☐ {{ .activity.todo.position }}/{{ .activity.todo.total }} {{ abbrev 32 .activity.todo.active }}{{ else }} ☑ {{ .activity.todo.completed }}/{{ .activity.todo.total }}{{ end }}{{ end }}{{ if .activity.tool.running }} ⟳ {{ template "formatToolTally" .activity.tool.running }}{{ end }}{{ if .activity.tool.done }} ✓ {{ template "formatToolTally" .activity.tool.done }}{{ end }} `,when:`{{ or (ne .activity.command "") (gt .activity.todo.total 0) (ne .activity.tool.running "") (ne .activity.tool.done "") }}`}},root:{rows:{identity:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`host`},{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`}]},status:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`context`},{kind:`segment`,name:`ceiling`},{kind:`segment`,name:`autocompact`}]},{kind:`segment`,name:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`activity`}]}}},actions:{...Hx(``).actions,...GO.actions,copyDir:{copy:`{{ .current_dir }}`},stepTheme:{set:`theme`,from:`themes`},gitDetail:{set:`git-detail`,cycle:[`collapsed`,`expanded`]},"ceiling.raise":{ceiling:`set`,to:`+100_000`},"ceiling.lower":{ceiling:`set`,to:`-100_000`},"ceiling.off":{ceiling:`set`,to:`off`},"ceiling.clear":{ceiling:`clear`},"autocompact.auto":{slash:Jx(`/autocompact auto`)},...Object.fromEntries(BO.map(e=>[`autocompact.${e}`,{slash:Jx(`/autocompact ${e}`)}]))},looks:{none:{hueShift:0,chromaScale:1,lightnessScale:1,lightnessShift:0},vivid:{hueShift:0,chromaScale:1.35,lightnessScale:1,lightnessShift:0},muted:{hueShift:0,chromaScale:.55,lightnessScale:1,lightnessShift:0},dim:{hueShift:0,chromaScale:1,lightnessScale:.85,lightnessShift:0},bright:{hueShift:0,chromaScale:1,lightnessScale:1,lightnessShift:.08},inverted:{hueShift:0,chromaScale:1,lightnessScale:-1,lightnessShift:1}},presets:{default:{},compact:{root:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`segment`,name:`context`}]},globals:{padding:0}},verbose:{root:{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`segment`,name:`gitPr`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`context`},{kind:`segment`,name:`ceiling`},{kind:`segment`,name:`autocompact`}]},{kind:`segment`,name:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`burnrate`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`speed`},{kind:`segment`,name:`tokenSparkline`}]}]}},zen:{root:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`directory`},{kind:`segment`,name:`context`}]},globals:{style:`plain`,look:`dim`}},git:{root:{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`host`},{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`segment`,name:`gitPr`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`segment`,name:`context`},{kind:`segment`,name:`activity`}]}]}},usage:{root:{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`context`},{kind:`segment`,name:`ceiling`},{kind:`segment`,name:`autocompact`}]},{kind:`segment`,name:`cacheTimer`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`burnrate`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`session`},{kind:`segment`,name:`today`},{kind:`segment`,name:`speed`},{kind:`segment`,name:`tokenSparkline`}]}]}},dense:{root:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`host`},{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`segment`,name:`model`},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`context`},{kind:`segment`,name:`ceiling`},{kind:`segment`,name:`autocompact`}]},{kind:`segment`,name:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`session`},{kind:`segment`,name:`activity`}]},globals:{padding:0}}},editGlobals:{style:`plain`,default_separator:` | `},helpers:{gitPaint:`{{ fg (readableOn (color .color) (bgOf) ${Ca}) .text }}`,gitCollapsed:`{{ template "gitBranch" . }}{{ template "gitAheadBehind" . }}{{ template "gitFlags" . }}`,gitExpanded:`(git){{ template "gitRepo" . }}{{ template "gitOperation" . }}{{ template "gitSha" . }}{{ template "gitFlags" . }} {{ template "gitBranch" . }}{{ template "gitUpstream" . }}{{ template "gitStash" . }}{{ template "gitAge" . }}`,gitBranch:`⎇ {{ template "gitPaint" (dict "color" .git.color.branch "text" .git.branch) }}`,gitRepo:`{{ if and .settings.repo (ne .git.repoName "") }} {{ .git.repoName }}{{ end }}`,gitOperation:`{{ if and .settings.operation (ne .git.operation "") }} [{{ .git.operation }}]{{ end }}`,gitSha:`{{ if and .settings.sha (ne .git.sha "") }} {{ .git.sha }}{{ end }}`,gitFlags:`{{ if and .settings.flags (or (gt .git.staged 0) (gt .git.unstaged 0) (gt .git.untracked 0) (gt .git.conflicts 0)) }} {{ if gt .git.staged 0 }}{{ template "gitPaint" (dict "color" .git.color.staged "text" "S") }}{{ end }}{{ if gt .git.unstaged 0 }}{{ template "gitPaint" (dict "color" .git.color.unstaged "text" "U") }}{{ end }}{{ if gt .git.untracked 0 }}{{ template "gitPaint" (dict "color" .git.color.untracked "text" "?") }}{{ end }}{{ if gt .git.conflicts 0 }}{{ template "gitPaint" (dict "color" .git.color.conflicts "text" (printf "!%v" .git.conflicts)) }}{{ end }}{{ end }}`,gitAheadBehind:`{{ if and .settings.aheadBehind (or (gt .git.ahead 0) (gt .git.behind 0)) }} {{ if gt .git.ahead 0 }}{{ template "gitPaint" (dict "color" .git.color.ahead "text" (printf "+%v" .git.ahead)) }}{{ end }}{{ if and (gt .git.ahead 0) (gt .git.behind 0) }}/{{ end }}{{ if gt .git.behind 0 }}{{ template "gitPaint" (dict "color" .git.color.behind "text" (printf "-%v" .git.behind)) }}{{ end }}{{ end }}`,gitUpstream:`{{ if and .settings.upstream (ne .git.upstream "") }} [{{ .git.upstream }}{{ template "gitAheadBehind" . }}]{{ end }}`,gitStash:`{{ if and .settings.stash (gt .git.stash 0) }} {{ template "gitPaint" (dict "color" .git.color.stash "text" (printf "(%v stashed)" .git.stash)) }}{{ end }}`,gitAge:`{{ if and .settings.age (gt .git.timeSinceCommit 0) }} ◷ {{ template "formatTimeSince" .git.timeSinceCommit }}{{ end }}`,formatCost:'{{ if lt . 0.01 }}<$0.01{{ else }}${{ printf "%.2f" . }}{{ end }}',formatTokenCount:`{{ if ge . 1000000 }}{{ printf "%.1f" (divf . 1000000) }}M{{ else if ge . 1000 }}{{ printf "%.1f" (divf . 1000) }}K{{ else }}{{ . }}{{ end }}`,formatTokens:`{{ template "formatTokenCount" . }} tokens`,formatToolTally:`{{ $names := splitList "," . }}{{ range $i, $pair := $names }}{{ if lt $i 2 }}{{ if $i }} {{ end }}{{ $kv := splitList ":" $pair }}{{ index $kv 0 }}{{ if ne (index $kv 1) "1" }}×{{ index $kv 1 }}{{ end }}{{ end }}{{ end }}{{ if gt (len $names) 2 }} +{{ sub (len $names) 2 }}{{ end }}`,formatRate:`{{ if lt . 0 }}—/hr{{ else }}{{ template "formatCost" . }}/hr{{ end }}`,formatEta:`{{ if lt . 0 }}—{{ else }}{{ template "formatLongTimeRemaining" . }}{{ end }}`,formatSpeed:`{{ if lt . 0 }}—{{ else }}{{ template "formatTokenCount" (round .) }}/s{{ end }}`,formatTokenBreakdown:`{{ $first := true }}{{ if gt .input 0 }}{{ template "formatTokenCount" .input }} in{{ $first = false }}{{ end }}{{ if gt .output 0 }}{{ if not $first }} + {{ end }}{{ template "formatTokenCount" .output }} out{{ $first = false }}{{ end }}{{ if or (gt .cacheCreation 0) (gt .cacheRead 0) }}{{ if not $first }} + {{ end }}{{ template "formatTokenCount" (add .cacheCreation .cacheRead) }} cached{{ $first = false }}{{ end }}{{ if $first }}0 tokens{{ end }}`,budgetStatus:`{{ if or (le .budget 0) (lt .cost 0) }}{{ else }}{{ $pct := minf 100 (mulf (divf .cost .budget) 100) }}{{ $p := printf "%.0f%%" $pct }}{{ if ge $pct .warn }} !{{ $p }}{{ else }}{{ if ge $pct 50 }} +{{ $p }}{{ else }} {{ $p }}{{ end }}{{ end }}{{ end }}`,formatTimeSince:`{{ if lt . 60 }}{{ . }}s{{ else if lt . 3600 }}{{ div . 60 }}m{{ else if lt . 86400 }}{{ div . 3600 }}h{{ else if lt . 604800 }}{{ div . 86400 }}d{{ else }}{{ div . 604800 }}w{{ end }}`,formatDuration:`{{ if lt . 60 }}{{ printf "%.0f" . }}s{{ else if lt . 3600 }}{{ printf "%.0f" (divf . 60) }}m{{ else if lt . 86400 }}{{ printf "%.1f" (divf . 3600) }}h{{ else }}{{ printf "%.1f" (divf . 86400) }}d{{ end }}`,formatResponseTime:`{{ if lt . 60 }}{{ printf "%.1f" . }}s{{ else }}{{ printf "%.1f" (divf . 60) }}m{{ end }}`,formatLongTimeRemaining:`{{ if ge . 1440 }}{{ $d := div . 1440 }}{{ $h := div (mod . 1440) 60 }}{{ if gt $h 0 }}{{ $d }}d {{ $h }}h{{ else }}{{ $d }}d{{ end }}{{ else if ge . 60 }}{{ $h := div . 60 }}{{ $m := mod . 60 }}{{ if gt $m 0 }}{{ $h }}h {{ $m }}m{{ else }}{{ $h }}h{{ end }}{{ else }}{{ . }}m{{ end }}`,formatResetCountdown:`{{ template "formatLongTimeRemaining" (add 1 (minutesUntilReset .)) }}`}},QO=new Set([ZO.globals.palette,...Object.values(ZO.segments).map(e=>e.palette)].filter(e=>e!==void 0)),$O=zc(Pw(`<default>`,JSON.stringify(ZO),QO),ZO),ek=b_($O.presets);function tk(e){return ek.includes(e)}function nk(e){if(!e)return 0;try{return o(e).mtimeMs}catch{return 0}}const rk=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 ik(e){return((...t)=>rk.run(()=>e(...t)))}const ak=ik(S),ok=ik(x),sk=ik(C);async function ck(e,t){return rk.run(async()=>{let n=null;try{n=await b(e,`r`);let{size:r,mtimeMs:i,ino:a}=await n.stat(),o=t!==void 0&&(a!==t.ino||r<t.offset),s=o||t===void 0?0:t.offset;if(s>=r)return J({buf:Buffer.alloc(0),start:s,size:r,mtimeMs:i,ino:a,reset:o});let c=Buffer.alloc(r-s),l=0;for(;l<c.length;){let{bytesRead:e}=await n.read(c,l,c.length-l,s+l);if(e===0)break;l+=e}return J({buf:l===c.length?c:c.subarray(0,l),start:s,size:r,mtimeMs:i,ino:a,reset:o})}catch(t){return t.code===`ENOENT`?Y:X(`readAppended ${e}: ${t instanceof Error?t.message:String(t)}`)}finally{await n?.close().catch(e=>{O(`transcript-fs: close failed: ${e instanceof Error?e.message:String(e)}`)})}})}async function lk(e,t){return rk.run(async()=>{let n=null;try{n=await b(e,`r`);let{size:r}=await n.stat(),i=Math.max(0,r-t),a=Buffer.alloc(r-i),o=0;for(;o<a.length;){let{bytesRead:e}=await n.read(a,o,a.length-o,i+o);if(e===0)break;o+=e}return J({buf:o===a.length?a:a.subarray(0,o),fromStart:i===0})}catch(t){return t.code===`ENOENT`?Y:X(`readTail ${e}: ${t instanceof Error?t.message:String(t)}`)}finally{await n?.close().catch(e=>{O(`transcript-fs: close failed: ${e instanceof Error?e.message:String(e)}`)})}})}const uk=/"(?:cache_read_input_tokens|cache_creation_input_tokens)":[1-9]/;function dk(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 fk(e){let t=await pk(e);return t.kind===`ok`?J(Math.floor((t.value+36e5)/1e3)):t}async function pk(e){for(let t of[65536,1048576]){let n=await lk(e,t);if(n.kind!==`ok`)return n;let r=mk(n.value.buf,n.value.fromStart);if(r!=null)return J(r);if(n.value.fromStart)return Y}return Y}function mk(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||!uk.test(t))continue;let r=dk(t);if(r!=null)return r}return null}function hk(e,t,n){let r=x_(t(`preset`),e.globals.preset,e.presets),i=w_(e,r),a=t(`edit.mode`)===`arrange`?e.editGlobals:{};return{preset:r,presetCustomized:n(r),theme:Pb(a.palette,t(`theme`),i.palette),look:io(a.look,t(`look`),i.look,e.looks),style:so(a.style,t(`style`),i.style),progression:bo(a.progression,t(`progression`),i.progression),separator:a.default_separator??i.default_separator,autoWrap:Do(a.autoWrap,t(`autoWrap`),i.autoWrap),padding:ko(a.padding,t(`padding`),i.padding),charset:fo(a.charset,t(`charset`),i.charset),updateNotice:Oo(a.updateNotice,t(`updateNotice`),i.updateNotice),colorCompatibility:go(a.colorCompatibility,t(`colorCompatibility`),i.colorCompatibility)}}function gk(e,t){return{style:e.style,separator:e.separator,colorCompatibility:e.colorCompatibility,wrap:e.autoWrap,padding:e.padding,charset:e.charset,width:t}}function _k(e){return{theme:e.theme,look:e.look,preset:e.preset,progression:e.progression}}function vk(e){return{preset:{effective:e.preset,customized:e.presetCustomized,bundled:tk(e.preset)},style:{effective:e.style},progression:{effective:e.progression},charset:{effective:e.charset},colorCompatibility:{effective:e.colorCompatibility},autoWrap:{effective:e.autoWrap},padding:{effective:e.padding},updateNotice:{effective:e.updateNotice}}}const yk=10*1e3;function bk(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 xk(e,t){if(!(t<60))return e*3600/t}function Sk(e,t,n,r){let i=r-t;if(i<50||i>yk)return;let a=n-e;if(!(a<=0))return a*1e3/i}function Ck(e){let{prev:t,cur:n}=e;if(t===void 0)return;let r=Sk(t.input,t.atMs,n.input,n.atMs),i=Sk(t.output,t.atMs,n.output,n.atMs),a=Sk(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 wk(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>yk)continue;let o=Sk(r.total,r.atMs,i.total,i.atMs);n.push(o??0)}if(n.length!==0)return n.join(`,`)}function Tk(e){let t=e.indexOf(`.`);return t<0?e:e.slice(0,t)}function Ek(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`,()=>Tk(p.hostname())),i=n(`user`,()=>p.userInfo().username);return{host:{...r!==void 0&&{name:r},...i!==void 0&&{user:i},...e.ssh!==void 0&&{ssh:e.ssh}},failures:t}}function Dk(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=>ov(t,e.helpers).keys();for(let n of js(C_(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 kk(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 Ok(e){let t=new Map;return n=>{let r=t.get(n);if(r!==void 0)return r;let i=Dk(e,n);return t.set(n,i),i}}function kk(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 Ak(e,t){for(let n of e)if(n===t||n.startsWith(t+`.`))return!0;return!1}function jk(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 Mk(e,t,n,r,i,a,o){let s=e=>Ak(r,e),c=(t.clock??(()=>new Date))().getTime(),l=(e,t,n)=>t?n().catch(t=>X(`${e}: ${String(t)}`)):Promise.resolve(Y),[u,d,f,p,m,h,g,_,v,y,b]=await Promise.all([l(`git`,s(`git`),()=>t.gitProvider.getGitInfo(n??e.workspace?.current_dir,jk(r),e.workspace?.project_dir)),l(`session`,s(`session.cost`)||s(`session.tokens`)||s(`burn`),()=>t.usageStore.getUsageInfo(e.session_id,e)),l(`today`,s(`today`),()=>t.usageStore.getTodayInfo(e)),l(`context`,s(`context`)||s(`autocompact`),()=>t.contextProvider.getContextInfo(e)),l(`metrics`,s(`metrics`)||s(`burn`),()=>t.metricsProvider.getMetricsInfo(e.session_id,e)),l(`activity`,s(`activity`),()=>t.activityProvider.getActivityInfo(e.session_id,e)),l(`tmux`,s(`tmux`),()=>t.tmuxService.getSessionId()),l(`cache`,s(`cache`),()=>fk(e.transcript_path)),l(`speed`,s(`speed`),()=>t.usageStore.observeSpeed(e.session_id,e.transcript_path,c)),l(`memento`,s(`memento`),()=>t.mementoProvider.getCeiling({sessionId:e.session_id,projectDir:e.workspace?.project_dir??``,cwd:n??e.workspace?.current_dir??``})),l(`autocompact`,s(`autocompact`),()=>Promise.resolve(t.autoCompact(OE(DE(a.claudeConfigDir)))))]),x=[],S=e=>{if(e.kind===`failed`){x.push(e.reason);return}return e.kind===`ok`?e.value:void 0},C=Bk(u);x.push(...C.failures);let ee=Ek(a);x.push(...ee.failures);let te=S(d),ne=S(f),re=S(p),w=S(m),ie=S(h),T=S(g),E=S(_),ae=Fk(y);y.kind===`failed`&&x.push(`memento: ${y.reason}`);let oe=Nk(b,re?.maxTokens);b.kind===`failed`&&x.push(`autocompact: ${b.reason}`);for(let e of x)t.log(`warn`,`provider fetch failed: ${e}`);let D=e.rate_limits?.five_hour,se=e.rate_limits?.seven_day,ce=D?bk(D.used_percentage,D.resets_at,18e6,c):void 0,le=se?bk(se.used_percentage,se.resets_at,6048e5,c):void 0,ue=te?.session.cost,de=w?.sessionDuration,fe=s(`burn`)&&ue!=null&&de!=null?xk(ue,de):void 0,pe=S(v),me=pe===void 0?void 0:Ck(pe),he=pe===void 0?void 0:wk(pe),ge=me!==void 0||he!==void 0?{...me,...he!==void 0&&{history:he}}:void 0,O=zk(process.env.HOME??process.env.USERPROFILE),_e=e.workspace?{...e.workspace,current_dir:zk(e.workspace.current_dir)??``,project_dir:zk(e.workspace.project_dir)??``}:e.workspace,ve=te===void 0?void 0:Rk({cost:te.session.cost,tokens:te.session.tokens}),ye=ne===void 0?void 0:{cost:ne.cost,tokens:ne.tokens},be=w===void 0?void 0:Rk({lastResponseTime:w.lastResponseTime,responseTime:w.responseTime,sessionDuration:w.sessionDuration,messageCount:w.messageCount,linesAdded:w.linesAdded,linesRemoved:w.linesRemoved}),xe=ie===void 0?void 0:Ik(ie);return{...e,..._e!==void 0&&{workspace:_e},...O!==void 0&&{home:O},...C.git!==void 0&&{git:C.git},...T!==void 0&&{tmux:{session:T}},host:ee.host,...vk(i),history:t.history(e.session_id),unsaved:o,...ve!==void 0&&{session:ve},...ye!==void 0&&{today:ye},...fe!==void 0&&{burn:{costPerHour:fe}},...ge!==void 0&&{speed:ge},...s(`block`)&&D!==void 0&&{block:{nativeUtilization:D.used_percentage,resetsAt:D.resets_at,...ce!==void 0&&{etaMinutes:ce}}},...se!==void 0&&{weekly:{percentage:se.used_percentage,resetsAt:se.resets_at,...le!==void 0&&{etaMinutes:le}}},...E!==void 0&&{cache:{expiresAt:E}},...re!==void 0&&{context:{totalTokens:re.totalTokens,contextLeft:re.contextLeftPercentage}},...be!==void 0&&{metrics:be},...xe!==void 0&&{activity:xe},...ae!==void 0&&{memento:ae},...oe!==void 0&&{autocompact:oe}}}function Nk(e,t){switch(e.kind){case`absent`:return;case`failed`:return{error:e.reason};case`ok`:return WO(e.value,t)}}const Pk=e=>e.trim().split(`
177
+ `).at(-1).trim();function Fk(e){switch(e.kind){case`absent`:return;case`failed`:return{error:Pk(e.reason)};case`ok`:{let{ceiling:t,session:n}=e.value;return{ceiling:t===`off`?0:t,off:t===`off`,session:n??``}}}}function Ik(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=Lk(e.running),i=Lk(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 Lk(e){return e.length===0?void 0:e.map(e=>`${e.name}:${e.count}`).join(`,`)}function Rk(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 zk(e){return e===void 0||e.length===0||c.sep!==`\\`?e:e.replace(/\\/g,`/`)}function Bk(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 Vk={theme:e=>e.theme.kind===`decided`?e.theme.name:null,preset:e=>e.preset,look:e=>e.look.kind===`decided`?e.look.name:null,style:e=>e.style,progression:e=>e.progression,charset:e=>e.charset,colorCompatibility:e=>e.colorCompatibility,autoWrap:e=>e.autoWrap?xo:So,padding:e=>String(e.padding),updateNotice:e=>e.updateNotice?xo:So},Hk=Object.entries(yb),Uk=new Set(bb.map(e=>e.sessionKey)),Wk=()=>!1;function Gk(e,t){return hk(e,e=>Uk.has(e)?t(e):null,Wk)}function Kk(e,t,n,r){return e.flatMap(([e,i])=>{let a=Vk[e](t);return a===null||a===Vk[e](n(e))?[]:[{...i,value:a,target:r(i)}]})}function qk(e,t,n){return Vk[n](Gk(e,t))}function Jk(e,t){let n=Gk(e,t),r=hk(e,()=>null,Wk),i=hk(e,e=>e===yb.preset.sessionKey?n.preset:null,Wk),a=S_(e.presets,n.preset).globals??{};return Kk(Hk,n,e=>e===`preset`?r:i,e=>e.configKey in a?Xb(n.preset,e.configKey):e.configKey)}function Yk(e,t){let{preset:n}=Gk(e,t);return Qk(e,n).flatMap(({id:e,setting:r,key:i,decl:a,saved:o})=>{let s=t(i),c=s===null?void 0:qs(a,s);return c===void 0||Ks(c)===Ks(o)?[]:[{preset:n,id:e,setting:r,key:i,value:c}]})}function Xk(e,t,n){let r=new Map(n.map(e=>[e.key,e.value]));return b_(e.presets).flatMap(n=>{let i=Qk(e,n);return[...new Set(i.filter(e=>r.has(e.key)).map(e=>e.id))].flatMap(e=>{let n=i.filter(t=>t.id===e);return Ws(Object.fromEntries(n.map(e=>[e.setting,e.decl])),Object.fromEntries(n.map(e=>{let n=r.get(e.key)??t(e.key),i=n===null?void 0:qs(e.decl,n);return[e.setting,i??e.saved]}))).map(({message:t})=>`placement "${e}": ${t}`)})})}const Zk=new WeakMap;function Qk(e,t){let n=Zk.get(e)??new Map;Zk.set(e,n);let r=n.get(t);if(r!==void 0)return r;let i=[...js(C_(e,t).node)].flatMap(t=>t.kind!==`segment`||t.drafts===void 0?[]:Object.entries(t.drafts).map(([n,{id:r,key:i}])=>{let a=Hs(e.segments[t.name])[n];return{id:r,setting:n,key:i,decl:a,saved:t.settings?.[n]??a.default}})),a=[...new Map(i.map(e=>[e.key,e])).values()];return n.set(t,a),a}function $k(e,t){let n=Gk(e,t),r=hk(e,e=>e===yb.preset.sessionKey?n.preset:null,Wk);return{from:n.preset,globals:S_(e.presets,n.preset).globals??{},picks:Kk(Hk.filter(([e])=>e!==`preset`),n,()=>r,e=>e.configKey),placements:Yk(e,t)}}function eA(e){return{sessionKeys:bb.filter(t=>t.configKey===e).map(e=>e.sessionKey),fileKeys:[e,...vl(e)?ek.map(t=>Xb(t,e)):[]]}}const tA=Ka(),nA=new Set(tA),rA=new Set(ao),iA=e=>e?nA.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown theme "${e}" (have: ${tA.join(`, `)})`}:{ok:!1,reason:`theme name is required`},aA=e=>e?rA.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown style "${e}" (have: ${ao.join(`, `)})`}:{ok:!1,reason:`style name is required`},oA=new Set([`1`,`true`]),sA=new Set([`0`,`false`]),cA=kO({style:aA,theme:iA,"toolbar-expanded":e=>oA.has(e)?{ok:!0,value:`1`}:sA.has(e)?{ok:!0,value:``}:{ok:!1,reason:`expected boolean-ish (1, 0, true, false), got "${e}"`}});function lA(){return cA.listKeys()}function uA(e,t){return cA.register(e,t)}function dA(e,t){return cA.validate(e,t)}function fA(e){return cA.rangeParamsFor(e)}function pA(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:Hb(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 mA(e){let t=new Set(cA.listBaselineKeys());return e.filter(e=>e.spec.kind!==`allow-list`||!t.has(e.key))}function hA(e,t,n){let r=Cb.get(n);if(r!==void 0)return qk(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 gA(e){let t=Bb(e);return mA(Object.values(e.actions).flatMap(e=>pA(e,t)))}function _A(e){return OO(gA(e))}const vA=`update.dismissed`,yA=`updateNotice`,bA=yb.updateNotice.sessionKey;function xA(e){return e.kind===`source`?e.newer.digest:FE(e.newer)}const SA=e=>`${e.version} [${pO(e.digest)}]`;function CA(e){switch(e.kind){case`source`:return{headline:`Newer source`,newer:SA(e.newer),running:SA(e.running),act:`rebuild`,busy:`rebuilding…`,command:{bin:`pnpm`,args:[`build`],cwd:e.root}};case`release`:return{headline:`Newer release`,newer:FE(e.newer),running:FE(e.running),act:`upgrade`,busy:`upgrading…`,command:{bin:`pnpm`,args:[`dlx`,`${LE}@${FE(e.newer)}`,`install`]}}}}const wA={kind:`idle`},TA={kind:`running`};function EA(e,t,n){if(e===null)return[];let r=xA(e);if(!n.enabled||n.dismissed===r)return[];let i=CA(e),a=`${i.headline}: ${i.newer}. You're on ${i.running}.`,o=t.kind===`failed`&&t.identity===r?[`${i.act} failed: ${t.reason}`]:[],s=[a,...o].join(`
178
+ `),c=yE([{verb:nE,args:[s]}]),l=t.kind===`running`?tO(`[${i.busy}]`,c):tO(`[${i.act}]`,yE([{verb:fE,args:[n.sessionId]}]));return[{severity:eO,message:s,lines:[[tO(a,c),l,tO(`[dismiss]`,yE([{verb:XT,args:[n.sessionId,vA,r]}])),tO(`[disable]`,yE([{verb:rE,args:[n.sessionId,yA,`false`]},{verb:XT,args:[n.sessionId,bA,`false`]}]))],...o.map(e=>[tO(e,c)])]}]}function DA(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 OA(e){switch(e.kind){case`current`:return[`info`,`build: current ${SA(e.stamp)}`];case`stale`:return[`info`,`build: stale — source ${SA(e.source)}, running ${SA(e.running)}`];case`not-source-checkout`:return[`info`,`build: not a source checkout`];case`unchecked`:return[`warn`,`build: unchecked: ${e.reason}`]}}function kA(e){switch(e.kind){case`current`:return[`info`,`release: current ${FE(e.installed)}`];case`stale`:return[`info`,`release: stale — latest ${FE(e.latest)}, running ${FE(e.installed)}`];case`ahead`:return[`info`,`release: ahead — running ${FE(e.installed)}, latest ${FE(e.latest)}`];case`unchecked`:return[`warn`,`release: unchecked: ${e.reason}`]}}function AA(e){let t=null;return([n,r])=>{r!==t&&(t=r,e(n,r))}}const jA=e=>e.split(/\r?\n/).map(e=>e.trim()).filter(e=>e!==``).at(-1);function MA(e){let t=e.exitCode===null?``:` (exit ${e.exitCode})`,n=jA(e.stderr)??e.error??jA(e.stdout)??`no output`;return`${e.reason}${t}: ${n}`}function NA(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=wA,d=null,f=AA(s),p=AA(s),m=()=>DA(c,l);function h(){let e=m(),t=e===null?null:xA(e);(d===null?null:d.identity)!==t&&(d?.dispose(),d=t===null?null:{identity:t,dispose:uA(vA,{kind:`allow-list`,allowed:[t]})})}function g(){c=_O(t,hO),f(OA(c)),h()}async function _(){l=zE(TE,await RE(LE,a,i)),p(kA(l)),h()}return{arm(){zO(yA,{kind:`allow-list`,allowed:[`false`]}),uA(bA,{kind:`allow-list`,allowed:[`false`]}),g(),setInterval(g,n).unref(),c.kind===`not-source-checkout`&&(_(),setInterval(()=>void _(),r).unref())},notice:e=>EA(m(),u,e),act(){let e=m();if(e===null)throw new $(`apply-update: nothing newer is known to apply`);let t=CA(e);if(u.kind===`running`)throw new $(`apply-update: already ${t.busy}`);u=TA,s(`info`,`apply-update: ${t.act} — ${t.command.bin} ${t.command.args?.join(` `)??``}`),De({...t.command,category:`update.apply`,timeoutMs:6e5}).then(n=>{if(n.ok){u=wA,s(`info`,`apply-update: ${t.act} succeeded`),g(),o();return}let r=MA(n);u={kind:`failed`,identity:xA(e),reason:r},s(`error`,`apply-update: ${t.act} failed: ${r}`)})}}}var PA=class{static CACHE_DIR=Ne();static USAGE_CACHE_DIR=c.join(this.CACHE_DIR,`usage`);static LOCKS_DIR=c.join(this.CACHE_DIR,`locks`);static isLocked(e){let t=c.join(this.LOCKS_DIR,e);if(!r.existsSync(t))return!1;try{let n=r.readFileSync(t,`utf-8`),i=parseInt(n.trim(),10);if(isNaN(i))return O(`Invalid PID in lock file ${e}, removing stale lock`),r.unlinkSync(t),!1;try{return process.kill(i,0),!0}catch(n){return n.code===`ESRCH`?(O(`Removing stale lock file ${e} for dead process ${i}`),r.unlinkSync(t),!1):(O(`Error checking process ${i} for lock ${e}:`,n),!0)}}catch(t){return O(`Error reading lock file ${e}:`,t),!0}}static async acquireLock(e,t=5e3){await this.ensureCacheDirectories();let n=c.join(this.LOCKS_DIR,e),i=Date.now(),a=String(process.pid);for(;Date.now()-i<t;)try{return await r.promises.writeFile(n,a,{flag:`wx`}),O(`Lock acquired for ${e}`),!0}catch(e){if(e.code===`EEXIST`)await D(50);else throw e}return O(`Failed to acquire lock for ${e} within ${t}ms`),!1}static async releaseLock(e){let t=c.join(this.LOCKS_DIR,e);try{await r.promises.unlink(t),O(`Lock released for ${e}`)}catch(t){t.code!==`ENOENT`&&O(`Error releasing lock for ${e}:`,t)}}static async ensureCacheDirectories(){try{await Promise.all([r.promises.mkdir(this.CACHE_DIR,{recursive:!0}),r.promises.mkdir(this.USAGE_CACHE_DIR,{recursive:!0}),r.promises.mkdir(this.LOCKS_DIR,{recursive:!0})])}catch(e){O(`Failed to create cache directories:`,e)}}static createProjectHash(e){return ae(`md5`).update(e).digest(`hex`).substring(0,8)}static async getUsageCache(e,t){await this.ensureCacheDirectories();let n=c.join(this.USAGE_CACHE_DIR,`${e}.json`),i=`${e}.usage.lock`;for(let a=0;a<3;a++){if(this.isLocked(i)){O(`Cache for ${e} is locked, waiting...`),await D(75);continue}try{let i=await r.promises.readFile(n,`utf-8`),a=JSON.parse(i);return!t||a.timestamp>=t?(O(`[CACHE-HIT] ${e} disk cache: found`),this.deserializeDates(a.data)):(O(`${e} cache outdated: cache=${a.timestamp}, latest=${t}`),null)}catch(t){if(t.code===`ENOENT`)return O(`No shared ${e} usage cache found`),null;O(`Attempt ${a+1} failed to read ${e} cache: ${t.message}. Retrying...`),await D(75)}}return O(`Failed to read ${e} cache after 3 attempts.`),null}static deserializeDates(e){return Array.isArray(e)?e.map(e=>({...e,timestamp:new Date(e.timestamp)})):e}static async setUsageCache(e,t,n){let i=`${e}.usage.lock`;if(!await this.acquireLock(i)){O(`Could not acquire lock to set usage cache for ${e}`);return}try{await this.ensureCacheDirectories();let i=c.join(this.USAGE_CACHE_DIR,`${e}.json`),a=JSON.stringify({data:t,timestamp:n||Date.now()});await r.promises.writeFile(i,a,`utf-8`),O(`[CACHE-SET] ${e} disk cache stored`)}catch(t){O(`Failed to save ${e} usage cache:`,t)}finally{await this.releaseLock(i)}}};const FA={"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 IA=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 PA.getUsageCache(`pricing`,e)}static async saveDiskCache(e){await PA.setUsageCache(`pricing`,e)}static async fetchPricingData(){return new Promise(e=>{let t=new re(this.GITHUB_PRICING_URL),n=oe({hostname:t.hostname,path:t.pathname,headers:{"User-Agent":`cc-candybar`,"Cache-Control":`no-cache`},timeout:5e3},t=>{if(t.statusCode!==200){O(`HTTP ${t.statusCode}: ${t.statusMessage}`),e(null);return}let r=``,i=0;t.on(`data`,t=>{if(i+=t.length,i>1048576){O(`Response too large`),n.destroy(),e(null);return}r+=t}),t.on(`end`,()=>{try{let t=JSON.parse(r),n=t._meta,i={};for(let[e,n]of Object.entries(t))e!==`_meta`&&(i[e]=n);this.validatePricingData(i)?(O(`Fetched fresh pricing from GitHub for ${Object.keys(i).length} models`),O(`Pricing last updated: ${n?.updated||`unknown`}`),e(i)):(O(`Invalid pricing data structure`),e(null))}catch(t){O(`Failed to parse JSON:`,t),e(null)}}),t.on(`error`,t=>{O(`Response error:`,t),e(null)})});n.on(`error`,t=>{O(`Request error:`,t),e(null)}),n.on(`timeout`,()=>{O(`Request timeout`),n.destroy(),e(null)}),n.end()})}static async getCurrentPricing(){if(this.executionCache!==null)return O(`[CACHE-HIT] Pricing execution cache: ${Object.keys(this.executionCache).length} models`),this.executionCache;let e=await this.loadDiskCache();if(e)return O(`[CACHE-HIT] Pricing disk cache: ${Object.keys(e).length} models`),this.executionCache=e,O(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(e).length} models`),e;let t=await this.fetchPricingData();return t?(await this.saveDiskCache(t),O(`[CACHE-SET] Pricing disk cache stored: ${Object.keys(t).length} models`),this.executionCache=t,O(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(t).length} models`),t):(O(`[CACHE-FALLBACK] Using offline pricing data: ${Object.keys(FA).length} models`),this.executionCache=FA,O(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(FA).length} models`),FA)}static validatePricingData(e){if(!e||typeof e!=`object`)return!1;for(let[,t]of Object.entries(e)){if(!t||typeof t!=`object`)return!1;let e=t;if(typeof e.input!=`number`||typeof e.output!=`number`||typeof e.cache_read!=`number`)return!1}return!0}static async getModelPricing(e){if(this.modelPricingCache.has(e))return O(`[CACHE-HIT] Model pricing cache: ${e}`),this.modelPricingCache.get(e);let t=await this.getCurrentPricing(),n;return n=t[e]?t[e]:this.fuzzyMatchModel(e,t),this.modelPricingCache.set(e,n),O(`[CACHE-SET] Model pricing cache: ${e}`),n}static fuzzyMatchModel(e,t){let n=e.toLowerCase();for(let[e,r]of Object.entries(t))if(e.toLowerCase()===n)return r;for(let{pattern:e,fallback:r}of[{pattern:[`opus-4-6`,`claude-opus-4-6`],fallback:`claude-opus-4-6-20260205`},{pattern:[`opus-4-5`,`claude-opus-4-5`],fallback:`claude-opus-4-5-20251101`},{pattern:[`opus-4-1`,`claude-opus-4-1`],fallback:`claude-opus-4-1-20250805`},{pattern:[`opus-4`,`claude-opus-4`],fallback:`claude-opus-4-20250514`},{pattern:[`sonnet-4-6`,`sonnet-4.6`,`claude-sonnet-4-6`],fallback:`claude-sonnet-4-6`},{pattern:[`sonnet-4.5`,`4-5-sonnet`,`sonnet-4-5`],fallback:`claude-sonnet-4-5-20250929`},{pattern:[`sonnet-4`,`claude-sonnet-4`],fallback:`claude-sonnet-4-20250514`},{pattern:[`haiku-4.5`,`4-5-haiku`,`haiku-4-5`],fallback:`claude-haiku-4-5-20251001`},{pattern:[`haiku`],fallback:`claude-haiku-4-5-20251001`},{pattern:[`opus`],fallback:`claude-opus-4-20250514`},{pattern:[`sonnet`],fallback:`claude-sonnet-4-5-20250929`}])if(e.some(e=>n.includes(e))&&t[r])return t[r];return t[`claude-sonnet-4-5-20250929`]||{name:`${e} (Unknown Model)`,input:3,cache_write_5m:3.75,cache_write_1h:6,cache_read:.3,output:15}}static async calculateCostForEntry(e){let t=e.message?.usage;if(!t)return 0;let n=this.extractModelId(e),r=await this.getModelPricing(n),i=t.input_tokens||0,a=t.output_tokens||0,o=t.cache_creation_input_tokens||0,s=t.cache_read_input_tokens||0,c=i/1e6*r.input,l=a/1e6*r.output,u=s/1e6*r.cache_read,d=o/1e6*r.cache_write_5m;return c+l+d+u}static extractModelId(e){if(e.model&&typeof e.model==`string`)return e.model;let t=e.message;if(t?.model){let e=t.model;if(typeof e==`string`)return e;let n=e;return(typeof n?.id==`string`?n.id:null)||`claude-sonnet-4-5-20250929`}return e.model_id&&typeof e.model_id==`string`?e.model_id:`claude-sonnet-4-5-20250929`}};const LA=/<command-name>\s*([^<\s][^<]*?)\s*<\/command-name>/;function RA(e){if(typeof e==`string`)return LA.exec(e)?.[1]}function zA(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 BA(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=zA(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?RA(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 VA(){let e=[],t=process.env.CLAUDE_CONFIG_DIR;if(t&&t.split(`,`).forEach(t=>{let n=t.trim();a(n)&&e.push(n)}),e.length===0){let t=m(),n=f(t,`.config`,`claude`),r=f(t,`.claude`);a(n)&&e.push(n),a(r)&&e.push(r)}return e}async function HA(e){let t=[];for(let n of e){let e=f(n,`projects`);if(a(e))try{let n=await ak(e,{withFileTypes:!0});for(let r of n)if(r.isDirectory()){let n=f(e,r.name);t.push(n)}}catch(t){O(`Failed to read projects directory ${e}:`,t)}}return t}async function UA(e,t,n){let r=[],i=f(t,e,`subagents`);try{let t=(await ak(i)).filter(e=>e.startsWith(`agent-`)&&e.endsWith(`.jsonl`));for(let a of t){let t=f(i,a);if(n?.has(t)){r.push(t);continue}try{let n=(await ok(t,`utf-8`)).split(`
179
+ `)[0];n&&JSON.parse(n).sessionId===e&&r.push(t)}catch{O(`Failed to check agent file ${t}`)}}}catch(e){O(`Failed to read subagents directory ${i}:`,e)}return r}function WA(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 GA=new Map;async function KA(e){try{let t=await sk(e),n=t.size,r=GA.get(e);if(r&&r.mtime===t.mtimeMs&&r.size===n)return O(`[parse-cache] hit ${e}`),GA.delete(e),GA.set(e,r),r.entries;let i;return n>1048576?(O(`Using streaming parser for large file ${e} (${Math.round(n/1024)}KB)`),i=await ZA(e)):i=await YA(e),O(`Parsed ${i.length} entries from ${e}`),n>5242880?i:(GA.delete(e),GA.size>=16&&GA.delete(GA.keys().next().value),GA.set(e,{mtime:t.mtimeMs,size:n,entries:i}),i)}catch(t){if(t.code===`ENOENT`)return O(`Transcript not present yet: ${e}`),[];throw t}}function qA(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:BA(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 JA(e){let t=[];for(let n of e.split(`
180
+ `))if(n.trim())try{let e=qA(JSON.parse(n));e&&t.push(e)}catch(e){O(`Failed to parse JSONL line: ${e}`);continue}return t}async function YA(e){return JA(await ok(e,`utf-8`))}async function XA(e,t){let n=await ck(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:JA(r.subarray(0,c+1).toString(`utf-8`)),cursor:{offset:i+c+1,mtimeMs:a,ino:o},reset:s})}async function ZA(e){return new Promise((t,n)=>{let r=[],a=i(e,{encoding:`utf8`}),o=se({input:a,crlfDelay:1/0});o.on(`line`,e=>{let t=e.trim();if(t)try{let e=qA(JSON.parse(t));e&&r.push(e)}catch(e){O(`Failed to parse JSONL line: ${e}`)}}),o.on(`close`,()=>{t(r)}),o.on(`error`,t=>{O(`Streaming parser error for ${e}:`,t),n(t)}),a.on(`error`,t=>{O(`File stream error for ${e}:`,t),n(t)})})}var QA=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 $A(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 ej={cost:0,input:0,output:0,cacheCreation:0,cacheRead:0},tj={cost:null,calculatedCost:null,officialCost:null,tokens:null,tokenBreakdown:null};function nj(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function rj(){let e=new Date;return e.setHours(0,0,0,0),e.setDate(e.getDate()-1),e.getTime()}function ij(){return{input:0,output:0,cacheCreation:0,cacheRead:0}}async function aj(e,t,n,r){let i=nj(new Date(rj())),a=e&&!t?e:void 0,o=a?.entries??0,s=a?.cost??0,c=a?{...a.breakdown}:ij(),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 IA.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=nj(new Date(e.timestamp));if(r<i)continue;let a=l.get(r)??{...ej};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 oj(e){let t=0,n=0,r=ij(),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)??{...ej};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:tj,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 sj(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 cj=class{entries=new Map;flight=new QA;seeded=new Map;speedRings=new Map;speedFlight=new QA;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:tj,i=t?.cost?.total_cost_usd??null;return J({session:{...r,cost:i??r.cost,officialCost:i}})}async getTodayInfo(e){let t=nj(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={...ej},i=!1;for(let e of this.entries.values()){i||=e.days.has(t);let n=e.days.get(t)??ej;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=nk(t);return this.speedFlight.run(`${e}:${r}`,async()=>{let i=await this.ingest(e,t,r);if(i.kind===`failed`)return i;let a=$A(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??nk(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 UA(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 XA(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 aj(r,l,s,c)),e===t&&(a=c.mtimeMs)}return J({files:i,...oj(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=rj(),n=await HA(VA()),r=[];for(let e of n){let n;try{n=await ak(e)}catch{continue}for(let i of n){if(!i.endsWith(`.jsonl`))continue;let n=f(e,i),a;try{a=(await sk(n)).mtimeMs}catch{continue}a<t||r.push({sessionId:i.slice(0,-6),path:n,mtime:a})}}await sj(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 lj(e,t){return e===void 0?!0:e.evaluate(t).map(e=>e.plain).join(``)!==`false`}function uj(e,t){let n=U.fromFragments(e);return n.end=``,n.overflow=`ignore`,t!==void 0&&!t.isNull&&(n.style=t),n}function dj(e,t,n){e.cellLength>t?e.truncate(t,{mode:n.truncate,marker:`…`}):e.cellLength<t&&e.align(n.justify,t)}function fj({text:e,trail:t}){if(t===void 0)return e;let n=uj([e,t]);return n.style=e.style,n}function pj(e,t){let{width:n,justify:r,truncate:i,baseStyle:a,padding:o,trail:s=[]}=t;if(e.length===0)return[];let c=uj(e,a).pad(o),l=s.length===0?{}:{trail:uj([...s,new U(` `.repeat(o))],a)};if(n===`auto`)return[{text:c,...l}];let u={justify:r,truncate:i};return n===`fill`?[{text:c,fill:u,...l}]:(dj(c,n,u),[{text:c,...l}])}const mj=RegExp(`\\x1b\\[[0-9;]*m|${gi.source}`,`g`);function hj(e){return M(e.replace(mj,``))}function gj(e,t){let n=e.map(fj),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=XD(n,t).split(`
181
+ `);if(i.length>1)return n;let a=Math.max(0,t.width-hj(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];dj(l,l.cellLength+c,i),n[t]=fj(e[t])}),n}function _j(e,t){let n=[],r=[],i=()=>{if(!r.length)return;let e=vj(r,t);e.plain.length>0&&n.push(e),r=[]};for(let a of e)if(bj(a.style).link){i();let e=vj([a],t);e.plain.length>0&&n.push(e)}else r.push(a);return i(),n}function vj(e,t){let n=t!==void 0&&!t.isNull?e.map(e=>yj(e,t)):e,r=U.fromFragments(n);return r.end=``,r.overflow=`ignore`,n.length===1?r.style=n[0].style:t!==void 0&&!t.isNull&&(r.style=t),r}function yj(e,t){let n=e.copy();return n.style=t.add(bj(e.style)),n}function bj(e){return e instanceof V?e:V.parse(e)}var xj=class extends Error{constructor(e,t,n){super(`Invalid ${t} color ${JSON.stringify(e)}: ${n}`),this.name=`ColorSpecError`}};function Sj(e,t,n,r,i){let{palette:a,tint:o}=e,s=Cj(n,i),c=s===void 0?o:wj(a,s,`bg`);e.bg=c;let l=Cj(r,i),u=l===void 0?wa(a,c,t):wj(a,l,`fg`);return new V({bgcolor:hn.fromRgba(c),color:hn.fromRgba(u)})}function Cj(e,t){if(e!==void 0)return e.evaluate(t).map(e=>e.plain).join(``)}function wj(e,t,n){try{return Yn(e,t)}catch(e){throw e instanceof Kn?new xj(t,n,e.message):e}}function Tj(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,Ej(e,t,o,n,r,i));return i}function Ej(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=Hb(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=xb.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=Hb(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=Hb(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:Oj(e,n.copy,t)};if(`open`in n)return{kind:`open`,target:Oj(e,n.open,t)};if(`reset`in n)return{kind:`reset`,key:n.reset};if(`doctor`in n)return n.doctor===`run`?{kind:`doctor-run`}:{kind:`doctor-fix`,check:n.check};if(`ceiling`in n)return{kind:`ceiling`,args:tC(n)};if(`slash`in n)return{kind:`slash`,line:n.slash};if(`undo`in n)return{kind:`undo`};if(`redo`in n)return{kind:`redo`};if(`save`in n)return{kind:`save`};if(`preset`in n)return n.preset===`save`?{kind:`preset-save`}:{kind:`preset-delete`,name:Oj(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 Dj(e){return e.kind===`do`?Dj(e.head):e}function Oj(e,t,n){try{return e(t)}catch(e){throw Error(`Template parse error in actions.${n}: ${e.message}`,{cause:e})}}function kj(e,t){return e.has(t)?yv(e.read(t)):``}function Aj(e,t){return e.evaluate(t).map(e=>e.plain).join(``)}function jj(e,t,n,r){let i=new U(e,{style:V.combine([r,new V({link:t,bold:n})])});return i.overflow=`ignore`,i.end=``,i}function Mj(e,t){return Math.max(e.members.indexOf(kj(t,e.stateVar)),0)}function Nj(e,t,n,r,i){switch(e.kind){case`set-literal`:{let t=kj(r,e.stateVar);return{effects:[{verb:XT,args:[i,e.key,e.value]}],active:t===e.value}}case`set-option`:{let a=n??t,o=kj(r,e.stateVar);return{effects:[{verb:XT,args:[i,e.key,a]}],active:o===a}}case`set-int`:{let a=n??t,o=kj(r,e.stateVar);return{effects:[{verb:XT,args:[i,e.key,a]}],active:o===a}}case`set-cycle`:{let t=e.members[(Mj(e,r)+1)%e.members.length];return{effects:[{verb:XT,args:[i,e.key,t]}],active:!1}}case`set-bounded`:return{effects:[{verb:ZT,args:[i,e.key,String(e.by)]}],active:!1};case`copy`:return{effects:[{verb:QT,args:[Aj(e.text,dy(r))]}],active:!1};case`open`:return{effects:[{verb:$T,args:[Aj(e.target,dy(r))]}],active:!1};case`persist-literal`:{let t=kj(r,e.stateVar);return{effects:[{verb:rE,args:[i,e.key,e.value]}],active:t===e.value}}case`persist-option`:{let a=n??t,o=kj(r,e.stateVar);return{effects:[{verb:rE,args:[i,e.key,a]}],active:o===a}}case`persist-cycle`:{let t=e.members[(Mj(e,r)+1)%e.members.length];return{effects:[{verb:rE,args:[i,e.key,t]}],active:!1}}case`persist-bounded`:return{effects:[{verb:iE,args:[i,e.key,String(e.by)]}],active:!1};case`reset`:return{effects:[{verb:cE,args:[i,e.key]}],active:!1};case`undo`:return{effects:[{verb:uE,args:[i]}],active:!1};case`redo`:return{effects:[{verb:dE,args:[i]}],active:!1};case`save`:return{effects:[{verb:aE,args:[i]}],active:!1};case`preset-save`:return{effects:[{verb:oE,args:[i]}],active:!1};case`preset-delete`:return{effects:[{verb:sE,args:[i,Aj(e.name,dy(r))]}],active:!1};case`doctor-run`:return{effects:[{verb:pE,args:[i]}],active:!1};case`doctor-fix`:return{effects:[{verb:mE,args:[i,e.check]}],active:!1};case`ceiling`:return{effects:[{verb:hE,args:[i,...e.args]}],active:!1};case`slash`:return{effects:[{verb:gE,args:[i,e.line]}],active:!1};case`layout-op`:return{effects:[{verb:lE,args:[i,e.key,vO(e.op)]}],active:!1};case`do`:{let a=Nj(e.head,t,n,r,i);return{effects:[...a.effects,...e.rest.flatMap(e=>Nj(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:lE,args:[i,e.key,vO(r)]}],active:!1}}}}function Pj(e,t,n,r){if(n.length===0)throw Error(`action "${e}" needs a display (the clickable text)`);if(t.kind===`set-cycle`||t.kind===`persist-cycle`)return{display:Kc(`action "${e}"`,n,t.members.length,Mj(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 Fj(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}=Pj(e,Dj(r),t,i),{effects:s,active:c}=Nj(r,a,o,i,kj(i,`session.id`));return jj(a,yE(s),c)}function Ij(e){return{action:{fn:(t,...n)=>Fj(t,n,e),argTypes:[`string`,`string`],arity:{kind:`variadic`},returnType:`T`}}}function Lj(e,t){return jj(`✕`,yE([{verb:XT,args:[kj(e,`session.id`),t,Uc]}]),!1)}function Rj(e,t,n){return new V({bgcolor:hn.fromRgba(t),color:hn.fromRgba(wa(e,t,n))})}function zj(e,t,n){return Rj(e.palette,La(e.palette,e.disclosure,[t],n),n)}function Bj(e,t,n,r,i){return r===void 0?n=>zj(e,{...n,distribution:t},i):(e,t)=>Vj(r(t,n),i)}function Vj(e,t){let n=ma(e,`background`);return new V({bgcolor:hn.fromRgba(n),color:hn.fromRgba(rr(ma(e,`primary`),n,4.5,t))})}function Hj(e){return{current:null,drawnAt:e}}function Uj(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 Wj(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 Gj(e){return new U(e).cellLength}function Kj(e){return Math.max(1,e.width-e.chromeCols-2*e.padding)}function qj(e){return Math.max(1,Kj(e)-(Gj(`✕`)+2*e.padding+e.seamCols))}function Jj(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 Yj(e,t){let n=[];for(let t of e)n.length>0&&n.push(new U(` `)),n.push(t);let r=U.fromFragments(n);return r.overflow=t?`ignore`:void 0,r.end=``,r}function Xj(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 Zj(e,t,n){let r=e.compiled.get(t),i=r&&Dj(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 Qj(e,t,n,r,i,a,o){let s=Zj(a,e,`picker`),c=a.compiled.get(e),l=a.store,u=kj(l,`session.id`),d=`stateVar`in s?kj(l,s.stateVar):void 0,f=s.options.map(Gj),p=i?Kj(a):1/0,m=Gj(`✕`)+1,h=Gj(`←`)+1+Gj(`→`)+1,g=Jj(f,p,m),_=g.length>1?Jj(f,p,m+h):g,v=parseInt(kj(l,t.stateVar),10),y=Number.isInteger(v)?Math.max(0,Math.min(v,_.length-1)):0,b=_[y]??[],x=e=>yE([{verb:XT,args:[u,t.key,String(e)]}]),S=n.flatMap(([e,t])=>[e,t]),C=yE([{verb:XT,args:[u,...S]}]),ee=r?[{verb:XT,args:[u,...S]}]:[],te=e=>yE([...Nj(c,e,e,l,u).effects,...ee]),ne=[jj(`✕`,C,!1)];y>0&&ne.push(jj(`←`,x(y-1),!1));for(let e of b){let t=s.options[e];ne.push(jj(t,te(t),t===d,o({index:e,count:s.options.length},t)))}return y<_.length-1&&ne.push(jj(`→`,x(y+1),!1)),Yj(ne,i)}function $j(e,t){return{picker:{fn:(n,r,i,a,...o)=>{ay(`picker "${n}"`,[`closeOnPick`,`paged`],o);let s=Xj(e,r,`set-int`,`an int action ({ set, int: true })`);return Qj(n,{key:s.key,stateVar:s.stateVar},[[s.key,`-1`]],i===!0,a===!0,e,Bj(Wj(t,`{{ picker }}`),ca(void 0),e,Zj(e,n,`picker`).paletteOf,t.drawnAt()))},argTypes:[`string`,`string`,`bool`],arity:{kind:`variadic`},returnType:`T`}}}function eM(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+Gj(e(-(s+1)))+1+Gj(e(s+1))+1;if(t>r)break;o=t,s+=1}return s}function tM(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=kj(a,`session.id`),{options:c}=t,l=c.length,u=kj(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=yE(Nj(o,p(e),p(e),a,s).effects);return m.set(e,n),n},g=e=>jj(p(e),h(e),p(e)===u,r({index:f(e),count:l},p(e))),_=eM(p,l,Gj(`◀`)+1+Gj(p(0))+1+Gj(`▶`),qj(n),i),v=e=>Array.from({length:_},(t,n)=>g(e*(n+1)));return Yj([...v(-1).reverse(),jj(`◀`,h(-1),!1),g(0),jj(`▶`,h(1),!1),...v(1)],!0)}function nM(e,t){return{carousel:{fn:(n,r,...i)=>{if(ay(`carousel "${n}"`,[`neighbours`],i),r!==void 0&&r<0)throw Error(`carousel "${n}": neighbours must be a whole number ≥ 0 (0 shows only ◀ CURRENT ▶), got ${String(r)}`);let a=r??1/0,o=Zj(e,n,`carousel`);return tM(n,o,e,Bj(Wj(t,`{{ carousel }}`),ca(void 0),e,o.paletteOf,t.drawnAt()),a)},argTypes:[`string`,`int`],arity:{kind:`variadic`},returnType:`T`}}}const rM=[`~/code`,`main`,`opus`,`42%`,`5m`,`$1.20`];function iM(e,t,n){let r=Aa(e,{hue:ea,depth:0},n);return[na(t).map((t,n)=>({text:rM[n%rM.length],colour:ha(e,t)})),[{text:`▾ open`,colour:r.state},{text:`menu`,colour:r.plane}],[{text:`warn`,colour:ma(e,`warning`)},{text:`error`,colour:ma(e,`error`)}]]}function aM(e,t,n,r){let i=iM(e,t,n).flatMap((t,r)=>t.map(({text:t,colour:i},a)=>({gap:r>0&&a===0?` `:``,cell:new U(` ${t} `,{style:Rj(e,i,n)})}))),a=[],o=0;for(let{gap:e,cell:t}of i){if(o+=e.length+t.cellLength,o>r)break;e!==``&&a.push(new U(e)),a.push(t)}let s=U.fromFragments(a);return s.overflow=`ignore`,s.end=``,s}function oM(e,t){return{themePreview:{fn:()=>aM(e.palette,e.progression,t.drawnAt(),qj(e)),argTypes:[],arity:{kind:`exact`},returnType:`T`}}}const sM=e=>e.slice(e.lastIndexOf(`.`)+1),cM=(e,t)=>{let n=new U(sM(e));return n.truncate(t,{marker:`…`}),n.plain};function lM(e,t){let n=e.map(e=>e.map(({name:e})=>Gj(sM(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 uM(e,t,n,r){let i=lM(e,r),a=e.map(e=>{let a=[],o=0;for(let{name:s,address:c,palette:l}of e){let e=new U(` ${cM(s,i)} `,{style:Rj(l,Va(l,{kind:`bar`,progression:t,address:c},n).tint,n)});if(o+=e.cellLength,o>r)break;a.push(e)}return a}),o=U.fromFragments(a.flatMap((e,t)=>t===0?e:[new U(`
182
+ `),...e]));return o.overflow=`ignore`,o.end=``,o}function dM(e,t){return{layoutPreview:{fn:()=>uM(e.layout(),e.progression,t.drawnAt(),qj(e)),argTypes:[],arity:{kind:`exact`},returnType:`T`}}}function fM(e,t,n,r){let i=Wj(r.activeSegment,`{{ menu }}`),a=r.action,o=u_(i.placementId,e,n.key),s=p_(o),c=l_(e),l=kj(a.store,o)===c,u=kj(a.store,`session.id`),d=l?Uc:c,f=jj(Kc(`{{ menu "${e}" }}`,t,2,+!!l),yE([{verb:XT,args:[u,o,d,s,`0`]}]),!1);return i.drops.push(...l?[Qj(e,{key:s,stateVar:s},[[o,Uc],[s,`0`]],n.closeOnPick,n.paged,a,Bj(i,n.distribution,a,Zj(a,e,`menu`).paletteOf,r.activeSegment.drawnAt()))]:[]),f}const pM=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function mM(e,t){let n=t[t.length-1],r=pM(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:__(r??{})}}function hM(e){return{menu:{fn:(t,...n)=>{let{displays:r,options:i}=mM(t,n);return fM(t,r,i,e)},argTypes:[`string`,`value`],arity:{kind:`variadic`},returnType:`T`}}}function gM(e){let{value:t,max:n,width:r,filled:i,empty:a,colourAt:o}=e,s=_M(t,n,r),c=[];for(let e=0;e<r;e++){let t=e<s,l=t&&o!==void 0?o(e*n/r):void 0;c.push(new U(t?i:a,{style:l===void 0?void 0:new V({color:l})}))}let l=U.fromFragments(c);return l.end=``,l.overflow=`ignore`,l}function _M(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 vM(e){let t={fn:(()=>{let t=Wj(e,`{{ bgOf }}`);if(t.bg===void 0)throw Error(`{{ bgOf }} is not available while segments.${t.segName}'s own "bg:" is being evaluated — the background is what that template computes. Reach for a palette color there instead, e.g. bg: '{{ darken (color "surface") 1 }}'.`);return t.bg.hex}),argTypes:[],arity:{kind:`exact`},returnType:`string`},n={fn:(()=>Wj(e,`{{ tint }}`).tint.hex),argTypes:[],arity:{kind:`exact`},returnType:`string`},r=Gv(()=>Wj(e,`{{ color }} / {{ ramp }} / {{ gauge }}`).palette),i={fn:((e,t,n,i,a,o,...s)=>{let c=o===void 0?void 0:[o,...yM(s)];return gM({value:e,max:t,width:n,filled:i,empty:a,colourAt:c===void 0?void 0:e=>String(r.ramp.fn(e,...c))})}),argTypes:[`float`,`float`,`int`,`string`,`string`,`string`],arity:{kind:`variadic`},returnType:`T`};return{...r,bgOf:t,tint:n,gauge:i}}function yM(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 bM(e){let t=[],n=[];for(let r of e){if(!r.contains(`
183
183
  `)){n.push(r);continue}let e=r.split(`
184
- `);n.push(e[0]);for(let r=1;r<e.length;r++)t.push(n),n=[e[r]]}return t.push(n),t}const bM=({text:e,trail:t})=>t===void 0?[e]:[e,t];function xM(e,t){switch(e){case`vertical`:return CM(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))]:CM(e)}}}function SM(e,t){let n=(e,r)=>t(e)?e.kind===`segment`?[{cells:[{name:e.name,address:r,settings:e.settings}],band:`own`,span:`shared`}]:xM(e.direction,e.children.map((t,i)=>n(t,[...r,wM(e,i)]))):[];return n(e,[]).map(e=>[...e.cells])}function CM(e){return e.map(e=>e.span===`row`?{...e,span:`shared`}:e)}function wM(e,t){return{index:t,count:e.children.length,distribution:e.distribution,axis:Es[e.direction]}}const TM={compile(e,t){return{kind:`container`,direction:e.direction,when:t.when,distribution:ca(e.distribution),children:e.children.map((e,n)=>t.compileChild(e,Ms(t.path,n)))}},render(e,t){return xM(e.direction,e.children.map((n,r)=>t.renderChild(n,t.visible,wM(e,r))))}},EM={compile(e,t){return{kind:`segment`,when:t.when,name:e.name,id:Ds(e),settings:t.placementSettings(e),...e.opens!==void 0&&{opens:{open:t.parse(Yc(e.opens.ref),`opens`),body:t.compileChild(e.opens.body,Ns(t.path)),key:e.opens.ref.key,placement:e.opens.placement}},...e.trail!==void 0&&{trail:t.parse(e.trail,`trail`)}}},render(e,t){let n=t.lookupSegment(e.name);if(!n)throw Error(`Layout segment "${e.name}" has no matching segment`);let{seg:r,compiled:i}=n;if(!t.visible)return[];let a=fy(t.scope,e.settings);try{if(!cj(i.when,a))return[];let n=Ob(e.settings.theme,t.palette),{styles:o,fragments:s,trail:c,drops:l}=t.evaluateSegment(e,a,n,t.region,{bg:i.bg,fg:i.fg,body:i.template,trail:e.trail}),u=e.opens!==void 0&&cj(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`)?fj(gj([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=yM(gj(s,d)).map((e,t)=>({cells:fj(e,{...f,trail:t===0?gj(c,d):[]}),band:`own`,span:`shared`})),b=l.map(e=>({cells:fj(gj([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(bM)),[...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:fj([new U(`⚠ ${e.id}: ${i}`,{end:``})],{width:`auto`,justify:`left`,truncate:`right`,padding:0,trail:DM(e,a,t)}),band:`own`,span:`shared`}]}}};function DM(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 OM={container:TM,segment:EM};function kM(e){return OM[e]}function AM(e){if(`ttl`in e)return{kind:`ttl`,durationMs:$y(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 jM(e,t){switch(Is(e)){case`json`:return{kind:`json`,default:t};case`regex`:return{kind:`regex`,regex:new RegExp(e.regex),default:t};case`text`:return{kind:`text`,default:t}}}function MM(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:AM(n.cache),parse:jM(n.parse,n.default)});break;case`shell`:e.declareShell(t,n.command,{cwd:r,cache:AM(n.cache),parse:jM(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?$y(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 NM(e,t){let n=Hd.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 PM=e=>bo(void 0,null,e.globals.progression);function FM(e,t,n){let r=n.cwd,i=Fb(e.globals.palette),a={store:t.variableStore,compiled:new Map,chromeCols:qD({style:`powerline`,charset:lo}),width:80,basePalette:i,palette:i,progression:$i[PM(e)],padding:1,seamCols:JD({style:`powerline`,charset:lo}),layout:()=>[]},o=Vj(t.drawnAt),s={action:a,activeSegment:o},c=Object.keys(e.looks),l=b_(e.presets),u=new Map([...zb(e),...mx(e)]),d=ly({...Fj(a),...Qj(a,o),...tM(a,o),...aM(a,o),...uM(a,o),...mM(s),..._M(o),looks:{fn:()=>c,argTypes:[],arity:{kind:`exact`}},presets:{fn:()=>l,argTypes:[],arity:{kind:`exact`}}},n.clock,t.drawnAt),f=NM(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 xb)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=wj(p,e.actions,g,u);let _=[];for(let[n,i]of Object.entries(e.variables))try{MM(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{MM(t,`${n}.${e}`,a,r)}catch(t){_.push(`Variable "${n}.${e}": ${t.message??String(t)}`)}let v=Object.create(null);for(let[t,n]of Object.entries(e.segments)){let e=(e,n,r=p)=>{try{return r(e)}catch(e){throw Error(`Template parse error in segments.${t}.${n}: ${e.message}`,{cause:e})}};v[t]={when:n.when===void 0?void 0:e(n.when,`when`,h),template:e(n.template,`template`),bg:n.bg===void 0?void 0:e(n.bg,`bg`),fg:n.fg===void 0?void 0:e(n.fg,`fg`)}}let y=(e,t,n)=>{try{return h(e)}catch(e){throw Error(`Template parse error in ${t}.${n}: ${e.message}`,{cause:e})}},b=t.variableStore,x=t=>{let n=Hs(e.segments[t.name]),r=Object.create(null);for(let[e,i]of Object.entries(n)){let n=t.settings?.[e]??i.default,a=t.drafts?.[e];Object.defineProperty(r,e,{enumerable:!0,get:a===void 0?()=>n:()=>qs(i,String(b.read(a.variable)))??n})}return Object.freeze(r)},S=(e,t)=>{let n={path:t,when:e.when===void 0?void 0:y(e.when,t,`when`),parse:(e,n)=>y(e,t,n),compileChild:S,placementSettings:x};return kM(e.kind).compile(e,n)},C=new Map;for(let t of l){let{node:n,path:r}=C_(e,t);C.set(t,S(n,r))}let ee=new Map;for(let t of Za){let n=e.globals[t];Qa(n)&&ee.set(t,IM(p,t,n))}return{segments:v,roots:C,activeSegment:o,menuRuntime:s,globalExpressions:ee,loadWarnings:_}}function IM(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 LM(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 RM(e,t){return e.kind===`decided`?e.name:t}function zM(e,t,n,r,i,a,o,s){let{perSegmentSink:c,onSegmentError:l,onRenderWarning:u}=o??{};r.drawAt(_o(a.colorCompatibility));let{preset:d=v_}=s??{},f=$i[s?.progression??PM(e)];t.menuRuntime.action.progression=f;let p=s?.look??ro(`none`,e.looks),m=s?.theme??Nb(void 0,null,e.globals.palette),h=(e,t)=>({...i,term:{cols:a.width},theme:{effective:e},look:{effective:t}});r.applyInput(h(RM(m,Wa),RM(p,to))),t.menuRuntime.action.chromeCols=qD(a),t.menuRuntime.action.padding=a.padding,t.menuRuntime.action.width=a.width,t.menuRuntime.action.seamCols=JD(a);let g=uy(n),_=eo(m,()=>LM(t,`palette`,g),e=>Mb(e,e=>u?.(e))),v=eo(p,()=>LM(t,`look`,g),t=>ro(t,e.looks));(_!==m||v!==p)&&r.applyInput(h(_.name,v.name));let y=_.value;t.menuRuntime.action.basePalette=y;let b=Ab(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}=Va(i,a,s),u=Hj(t.activeSegment,e.name,e.id,i,l,c),d=xj(u,s,o.bg,o.fg,n),f=o.body.evaluate(n),p=o.trail?.evaluate(n)??[];return{styles:{closed:d,get trigger(){return Lj(i,Aa(i,l,s).state,s)},get band(){return Lj(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&&cj(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,za(r,n)),renderBody:(e,t,n)=>C(e,i&&t,Ba(n)),closeDisclosure:e=>Ij(n,e)};return kM(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 "${v_}"; a miss here is merge/policy drift (have: ${[...t.roots.keys()].join(`, `)})`);let te=e=>{if(!cj(e.when,g))return!1;if(e.kind===`container`)return!0;if(Cx(e.name)===void 0)return!1;try{return cj(t.segments[e.name].when,fy(g,e.settings))}catch{return!0}};return t.menuRuntime.action.layout=()=>SM(ee,te).map(e=>e.flatMap(({name:e,address:t,settings:n})=>{let r=Cx(e);return r===void 0?[]:[{name:r,address:t,palette:Ob(n.theme,b)}]})),C(ee,!0,Ra(f)).map(e=>YD(hj(e.cells,a),a)).join(`
185
- `)}var BM=class{kind=`box`;cell;lastChangedAt;constructor(e,t,n){this.name=e,this.type=t,KM(e,t,n,`initial value`),this.cell=hv.observable.box(n,{deep:!1}),this.lastChangedAt=Date.now()}read(){return this.cell.get()}set(e){KM(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}},VM=class{kind=`computed`;cell;constructor(e,t,n){this.name=e,this.type=t,this.cell=(0,hv.computed)(()=>{let e=n();return KM(this.name,this.type,e,`computed result`),e},{keepAlive:!0})}read(){return this.cell.get()}lastUpdatedMs(){return null}},HM=class{kind=`document`;cell;lastChangedAt;constructor(e,t){this.name=e,this.cell=hv.observable.box(GM(t),{deep:!1}),this.lastChangedAt=Date.now()}read(){return this.cell.get()}set(e){let t=GM(e);WM(this.cell.get(),t)||(this.cell.set(t),this.lastChangedAt=Date.now())}lastUpdatedMs(){return this.lastChangedAt}};function UM(e){return JSON.stringify(e)}function WM(e,t){return UM(e)===UM(t)}function GM(e){return e.kind===`ok`?{kind:`ok`,value:gv(e.value)}:e}function KM(e,t,n,r){let i=_v(n);if(i!==t)throw TypeError(`Variable "${e}": ${r} type ${i} does not match declared type ${t}`)}var qM=class{nodes=new Map;defineBox(e,t,n){this.assertNotDefined(e),this.nodes.set(e,new BM(e,t,n))}defineDocument(e,t){this.assertNotDefined(e),this.nodes.set(e,new HM(e,t))}defineComputed(e,t,n){this.assertNotDefined(e);let r=e=>this.read(e);this.nodes.set(e,new VM(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,hv.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,hv.runInAction)(()=>n.set(t))}runInAction(e){(0,hv.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 UM(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 JM(e,t,n){return e+`\0`+t+`\0`+(n??``)}function YM(e,t){return new Set(b_(e.presets).filter(n=>C_(e,n).path===`root`?t.root!==void 0:t.presets?.[n]?.root!==void 0))}function XM(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 ZM(e,t){let n=new Map;for(let t of Sw(e.projectDir,e.cwd,e.configFile)){let{dir:e,name:r}=XM(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 QM(e){return e.filter(Boolean).join(`
186
- `)||null}var $M=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=JM(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=ww(e,t,n),i=r.kind===`file`?r.path:null,a=[Ow(e,t),Ew(r)],o;try{o=this.buildState(t,i,a)}catch(e){return e instanceof bs&&a.push(...e.warnings),{resolvedPath:i,warning:QM(a),state:null,error:e instanceof bs||e instanceof Error?e.message:String(e)}}return{resolvedPath:i,warning:QM(a),state:o,error:null}}buildState(e,t,n){let r=kw(t,QO),{config:i,raw:a}=r;n.push(...r.warnings);let o=Mw(r,t??`<default>`),s=new qM,c=new gb(s,o.globals.default_empty_value??``,this.deps.gitService,this.deps.sessionState),l,u=[];try{l=FM(o,c,{cwd:e}),n.push(...l.loadWarnings);for(let{key:e,spec:t}of gA(o))u.push(lA(e,t));for(let{key:e,spec:t}of LO(o))u.push(RO(e,t))}catch(e){for(let e of u)e();throw c.dispose(),e}return{config:o,store:s,registry:c,compiled:l,neededInputPaths:Dk(o),lastRenderCellsBySegment:new Map,validatorDisposers:u,authoredRoots:YM(i,a)}}refreshWatcher(e,t){e.configFilePath=t;let n=ZM(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 eN=16384;var tN=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<eN){this.rollingTimestamps.push(e);return}this.rollingTimestamps[this.rollingHead]=e,this.rollingHead=(this.rollingHead+1)%eN}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:wE,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 nN={load:()=>({}),save:()=>{},flush:()=>{}};function rN(e){let t=new Map;for(let[n,r]of Object.entries(e))t.set(n,new Map(Object.entries(r)));return t}var iN=class{sessions;storage;atom=(0,hv.createAtom)(`SessionState`);constructor(e=nN,t=256){this.maxSessions=t,this.storage=e,this.sessions=new Map,this.hydrateFromStorage()}useStorage(e){this.storage=e,this.hydrateFromStorage()}hydrateFromStorage(){this.sessions=rN(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,hv.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,hv.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,hv.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 aN=(e,t)=>O(t);function oN(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 sN=class{timer=null;pending=null;constructor(e,t=500,n=aN){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 oN(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 cN={default_empty_value:`string`,default_separator:`string`,palette:`string`,look:`string`,preset:`string`,style:`string`,progression:`string`,autoWrap:`boolean`,padding:`number`,charset:`string`,updateNotice:`boolean`,colorCompatibility:`string`,menuGlyph:`string`},lN=new Set([`1`,`true`]),uN=new Set([`0`,`false`,``]);function dN(e,t){let n=IN(e),r=n.scope===`segment-palette`?`string`:cN[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(lN.has(t))return`true`;if(uN.has(t))return`false`;throw Error(`persistValueText: "${e}" expects boolean-ish (1, 0, true, false), got "${t}"`)}function fN(e){try{return r.readFileSync(e,`utf8`)}catch(e){if(e.code===`ENOENT`)return null;throw e}}function pN(e,t,n){try{if(t===null){r.rmSync(e,{force:!0});return}r.mkdirSync(c.dirname(e),{recursive:!0}),k(e,t)}catch(t){let r=`config write failed (${e}): ${t.message}`;throw n(`error`,r),Error(r)}}function mN(e){return/^\s*$/.test(e)?null:Io(e)}function hN(e,t){return e!==null&&Ro(e,t)!==void 0}function gN(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(gN),...i}}return e}function _N(e){if(!jc(e))return gN(e);let{rows:t,...n}=e;return{rows:Object.fromEntries(Object.entries(t).map(([e,t])=>[e,gN(t)])),...n}}const vN=XO,yN=vN.segments,bN=vN.presets,xN=vN.root;function SN(e,t,n,r){if(!hN(e,t)&&n===void 0)throw new $(`cannot edit ${r}: neither the config file nor the bundled default declares ${t.join(`.`)}`)}function CN(e,t){let n=Zb(t);return t.scope===`segment-palette`&&SN(e,[`segments`,t.segment],yN[t.segment],n.join(`.`)),n}function wN(e){return Io(Ko(e))}function TN(){return Object.entries(xN.rows).map(([e,t])=>{let n=gN(t);return{path:[`root`],fragment:wN({rows:{[e]:n}}),unit:{path:[`root`,`rows`,e],value:n}}})}function EN(e,t){let n=e===null?void 0:Ro(e,t);return n===void 0?null:{path:t,fragment:n,unit:null}}function DN(e,t){if(t===void 0)return null;let n=_N(t);return{path:e,fragment:wN(n),unit:{path:e,value:n}}}function ON(e,t){let n=[`presets`,t],r=[...n,`root`],i=bN[t];SN(e,n,i,r.join(`.`));let a=EN(e,r)??DN(r,i?.root);return a!==null&&ps(a.fragment)?a:null}function kN(e,t){let n=fs(t.fragment);return n===null?new Map([[`#`,{path:t.path,unit:t.unit,node:t.fragment}]]):new Map([...e,...n.map(e=>[e.key,{path:[...t.path,`rows`,e.key],unit:t.unit,node:e.value}])])}function AN(e,t){return[...TN(),EN(e,[`root`]),ON(e,t)].filter(e=>e!==null).reduce(kN,new Map)}function jN(e,t,n){for(let{node:r,...i}of AN(e,t).values())if(hs(r,n))return i;throw new $(`${MN(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 MN(e,t){return ON(e,t)?.path??[`root`]}function NN(e,t){return t.scope===`preset-root`?MN(e,t.preset):Zb(t)}function PN(e,{unit:t}){return t===null?e:os(e,t.path,Ko(t.value),Wo)}function FN(e){let t=Xb(e);if(t===null)throw Error(`"${e}" is not a valid persist target`);return t}function IN(e){let t=FN(e);if(t.scope===`preset-root`)throw Error(`"${e}" names a layout, not a value`);return t}function LN(e,t,n,r){RN(t,r),pN(t,r,e.logger),e.record(t,n,r)}function RN(e,t){try{return Mw(Aw(e,t,QO),e)}catch(e){throw e instanceof bs?new $(`refused: the config file would not load after this click — ${e.message}`):e}}function zN(e,t){let n=IN(t),r=mN(fN(e)??``),i=r===null?void 0:Ro(r,Zb(n));return i!==void 0&&`value`in i?i.value:void 0}function BN(e,t,n){VN(e,t,n,[])}function VN(e,t,n,r){let i=fN(t);LN(e,t,i,HN(n.reduce((e,[t,n])=>os(e,CN(mN(e),IN(t)),dN(t,n),Wo),i??``),t,r,e=>e))}function HN(e,t,n,r){return n.reduce((e,{preset:n,id:i,setting:a,value:o})=>{let s=r(e,n,i),c=jN(mN(s),n,i),l=ys(PN(s,c),c.path,i,a,Ko(o));if(l===null)throw new $(`${c.path.join(`.`)} in ${t} has no placement "${i}" — the bar you clicked is stale (it reloads on the next render)`);return l},e)}function UN(e,t,n){let r=mN(e),i=[`presets`,t,`root`];for(let[a,{path:o,unit:s,node:c}]of AN(r,t)){if(!hs(c,n))continue;if(i.every((e,t)=>o[t]===e))return e;let l=s===null?Bo(e,c):Ko(s.value);if(a!==`#`)return os(e,[...i,`rows`,a],l,Wo);if(ON(r,t)!==null)throw new $(`cannot give preset "${t}" its own copy of ${o.join(`.`)}: it already stages rows of its own over that tree`);return os(e,i,l,Wo)}return e}function WN(e,t){return cs(e,t,t[0]===`presets`&&t.length>2&&!ek(t[1])?2:0)}function GN(e,t,n){let r=n.map(FN),i=fN(t);if(i===null)return;let a=r.reduce((e,t)=>WN(e,NN(mN(e),t)),i);a!==i&&LN(e,t,i,a)}function KN(e){let t=e===null?void 0:Ro(e,[`presets`]),n=new Set([...$O,...t?.kind===`object`?t.entries.map(e=>e.key):[]].map(du));return Array.from({length:n.size+1},(e,t)=>`custom-${t+1}`).find(e=>!n.has(du(e)))}function qN(e,t,n,r,i,a){let o=fN(t),s=mN(o??``),c=KN(s),l=[`presets`,c],u=ON(s,n),d=[...u===null?[]:[[[...l,`root`],u.unit===null?Bo(o??``,u.fragment):Ko(u.unit.value)]],...Object.keys(r).length===0?[]:[[[...l,`globals`],Ko(r)]]],f=i.map(([e,t])=>{let n=Yb(c,e);return[CN(s,IN(n)),dN(n,t)]});return LN(e,t,o,HN([...d,...f].reduce((e,[t,n])=>os(e,t,n,Wo),os(o??``,l,`{}`,Wo)),t,a.map(e=>({...e,preset:c})),UN)),c}function JN(e,t,n){if(ek(n))throw new $(`cannot delete preset "${n}": it is bundled — reset its settings instead`);let r=[`presets`,n],i=fN(t),a=mN(i??``);if(i===null||a===null||Ro(a,r)===void 0)throw new $(`cannot delete preset "${n}": ${t} declares no ${r.join(`.`)} — the bar you clicked is stale; it reloads on the next render`);let o=Ro(a,[`globals`,`preset`]);LN(e,t,i,[r,...o?.kind===`string`&&o.value===n?[[`globals`,`preset`]]:[]].reduce((e,t)=>WN(e,t),i))}function YN(e,t,n,r){let i=FN(n);if(i.scope!==`preset-root`)throw Error(`"${n}" is not a "presets.<name>.root" target`);let a=fN(t),o=r.op===`remove`?r.target:r.anchor,s=jN(mN(a??``),i.preset,o),c=PN(a??``,s),{after:l,placed:u}=XN(c,s.path,r,()=>{let e=RN(t,c);return b_(e.presets).map(t=>C_(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 LN(e,t,a,l),u}function XN(e,t,n,r){switch(n.op){case`remove`:return{after:_s(e,t,n.target),placed:null};case`insert`:{let i=yO(n.segment,n.anchor,r());return{after:vs(e,t,i,n.anchor,n.relation),placed:i}}}}const ZN={load:()=>({}),save:()=>{}},QN=new Set(yb.map(e=>e.sessionKey)),$N=e=>QN.has(e)||e.startsWith(V_),eP={past:[],future:[]},tP=e=>e.kind===`session`?`session:${e.key}`:`file:${e.file}`;var nP=class{state=new Map;constructor(e,t,n=ZN){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)??eP;return{undo:t.length,redo:n.length}}history(e){return this.state.get(e)??eP}begin(){let e=new Map,t=(t,n)=>{let r=e.get(t)??new Map,i=r.get(tP(n));r.set(tP(n),i===void 0?n:{...n,before:i.before}),e.set(t,r)},n=this.sessionState,r=(e,r,i)=>{let a=r.filter($N).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:aP([...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:aP([...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:aP([...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(tP));throw this.put(e,{past:oP(this.history(e).past,t),future:oP(this.history(e).future,t)}),new $(`${r}: ${o.map(cP).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):fN(t.file)}write(e,t,n){t.kind===`file`?pN(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||rP(n)>8388608;){let[e,t]=n.entries().next().value;n.size>1?n.delete(e):n.set(e,iP(t))}this.storage.save(Object.fromEntries(n)),this.state=n}};function rP(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 iP({past:e,future:t}){return e.length>0?{past:e.slice(1),future:t}:{past:e,future:t.slice(1)}}function aP(e){return e.slice(-50)}function oP(e,t){return e.map(e=>e.filter(e=>!t.has(tP(e)))).filter(e=>e.length>0)}function sP(e){return e.map(cP).join(`, `)}function cP(e){return e.kind===`session`?`session setting "${e.key}"`:e.file}function lP(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 uP(e){return Array.isArray(e)&&e.every(e=>Array.isArray(e)&&e.every(lP))}function dP(e){if(typeof e!=`object`||!e)return!1;let t=e;return uP(t.past)&&uP(t.future)}function fP(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(dP))return e}catch{}return t(`warn`,`settings-history load: unexpected shape, starting empty`),{}},save:n=>{try{r.mkdirSync(c.dirname(e),{recursive:!0}),k(e,JSON.stringify(n),384)}catch(e){let n=`settings-history write failed — the change landed but is not undoable: ${e.message}`;throw t(`error`,n),Error(n)}}}}function pP(e,t,n,r){let i=Oe({bin:`tmux`,args:[`-S`,e.socket,...n],timeoutMs:2e3,category:t,stdinInput:r});if(i.ok)return{kind:`ok`,stdout:i.stdout};if(i.reason===`rate-limited`)return{kind:`rate-limited`,reason:i.error??`rate-limited`};let a=i.error??[i.reason,i.stderr.trim()].filter(e=>e!==``).join(`: `);return{kind:`failed`,reason:`tmux ${n[0]} failed (${a})`}}function mP(e){let t=pP(e,`doctor.tmux`,[`display`,`-p`,`-t`,e.pane,`#{client_termfeatures}`]);return t.kind===`ok`?{kind:`ok`,value:t.stdout.trim().split(`,`).filter(e=>e!==``)}:{kind:`failed`,reason:t.reason}}function hP(){return{probeTmux:mP}}function gP(e){let t=AE(e).env;if(t===void 0)return{path:e,env:{}};if(typeof t!=`object`||!t||Array.isArray(t))throw Error(`cannot read ${e}: \`env\` is not an object`);return{path:e,env:t}}function _P(e,t){return t===void 0?{kind:`unreported`}:t===null?{kind:`outside`}:{kind:`inside`,hint:t,termfeatures:e.probeTmux(t)}}function vP(e,t){return{tmux:_P(e,t.tmux),claudeSettings:gP(DE(EE(t.claudeConfigDir)))}}function yP(e,t){let n=t.claudeSettings.path;switch(e.kind){case`claude-settings-env`:{let i=os(kE(n),[`env`,e.name],JSON.stringify(e.value),Go);return r.mkdirSync(c.dirname(n),{recursive:!0}),k(n,i),{...t,claudeSettings:gP(n)}}default:return e.kind}}const bP=/^─{20,}/,xP=/^❯(\s|$)/,SP=/›\s*stashed$/;function CP(e){if(e.inMode)return{kind:`in-mode`};let t=e.screen.map(e=>e.trimEnd()),n=t.flatMap((e,t)=>bP.test(e)?[t]:[]).at(-2);return n===void 0||!xP.test(t[n+1]??``)?{kind:`no-prompt`}:SP.test(t[n-1]??``)?{kind:`stashed`}:{kind:`ready`}}const wP={"in-mode":`the Claude Code pane is in tmux copy mode — leave it (q) and click again`,stashed:`Claude Code is holding a stashed prompt (ctrl+s) — restore or send it, then click again`,"no-prompt":`Claude Code is not at its prompt (a dialog or picker is open) — close it and click again`};function TP(e,t,n){if(t===void 0)return{kind:`refused`,reason:`this session's statusline client reports no tmux facts (it predates this daemon) — rebuild or reinstall cc-candybar`};if(t===null)return{kind:`refused`,reason:`this Claude Code is not running inside tmux — the bar can only type into a tmux pane`};let r=CP(e.read(t));if(r.kind!==`ready`)return{kind:`refused`,reason:wP[r.kind]};let i=e.type(t,n);return i.kind===`typed`?{kind:`typed`,pane:t.pane}:i}const EP=`cc-candybar-slash`;function DP(e,t,n,r){let i=pP(e,t,n,r);if(i.kind===`failed`)throw Error(i.reason);return i}function OP(e){let t=DP(e,`claude-input.read`,[`display`,`-p`,`-t`,e.pane,`#{pane_in_mode}`,`;`,`capture-pane`,`-p`,`-t`,e.pane]);if(t.kind===`rate-limited`)throw Error(t.reason);let[n=``,...r]=t.stdout.split(`
187
- `);return{inMode:n!==`0`,screen:r}}function kP(e,t){let n=DP(e,`claude-input.type`,[`load-buffer`,`-b`,EP,`-`,`;`,`send-keys`,`-t`,e.pane,`C-s`,`;`,`paste-buffer`,`-p`,`-d`,`-b`,EP,`-t`,e.pane,`;`,`send-keys`,`-t`,e.pane,`Enter`],t);return n.kind===`ok`?{kind:`typed`}:{kind:`refused`,reason:`cc-candybar typed a command moments ago — click again in a second (${n.reason})`}}function AP(){return{read:OP,type:kP}}function jP(e){if(!e)throw new $(`session id is required`);if(e.includes(`/`)||e.includes(`..`))throw new $(`invalid session id "${e}"`);return e}function MP(e){return NP(()=>decodeURIComponent(e))}function NP(e){try{return e()}catch(e){throw e instanceof URIError?new $(`malformed wire encoding: ${e.message}`):e}}function PP(e,t){let n=Oe({bin:`/usr/bin/pbcopy`,stdinInput:e,category:`click.pbcopy`});if(!n.ok){if(n.reason===`rate-limited`){t.dlog(`warn`,`click.pbcopy rate-limited: ${n.error??``}`);return}throw Error(`pbcopy failed (${n.reason}, exit ${n.exitCode??`null`})`)}}const FP=(e,t)=>PP(MP(e),t),IP=(e,t)=>{let n=Oe({bin:`/usr/bin/open`,args:[`-a`,`Visual Studio Code`,MP(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`})`)}},LP=(e,t)=>PP(MP(e),t),RP=(e,t)=>PP(MP(e),t),zP=(e,t)=>{let n=jP(MP(e));t.sessionState.get(n,`toolbar-expanded`)?t.sessionState.clear(n,`toolbar-expanded`):t.sessionState.set(n,`toolbar-expanded`,`1`)},BP=(e,t)=>{let[n=``,...r]=NP(()=>_E(e)),i=jP(n);if(r.length===0)throw new $(`set-state: <key>/<value> is required (have keys: ${cA().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: ${cA().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=uA(t,n);if(!i.ok)throw new $(`set-state: pair ${e/2+1}: ${i.reason}`);a.push({key:t,value:i.value})}WP(t,i,`set-state`,a),t.sessionState.setBatch(i,a);let o=a.map(e=>`${e.key}=${e.value}`).join(` `);t.dlog(`info`,`set-state: ${o} (session=${i})`)},VP=/^-?\d+$/;function HP(e,t,n,r){let i=e+t;return i>r?e===r?n:r:i<n?e===n?r:n:i}const UP=(e,t)=>{let[n=``,r=``,i=``]=NP(()=>_E(e)),a=jP(n);if(!r)throw new $(`step-state: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!VP.test(i))throw new $(`step-state: delta must be an integer, got "${i}"`);let o=parseInt(i,10),s=dA(r);if(!s)throw new $(`step-state: key "${r}" is not a bounded (range) state key (have keys: ${cA().join(`, `)})`);let c=t.sessionState.get(a,r),l=c&&VP.test(c)?GP(s,parseInt(c,10)):KP(`step-state`,r,s,mA(t.configFor(XP(t,a)),e=>t.sessionState.get(a,e),r)),u=HP(l,o,s.min,s.max),d=uA(r,String(u));if(!d.ok)throw new $(`step-state: ${d.reason}`);WP(t,a,`step-state`,[{key:r,value:d.value}]),t.sessionState.set(a,r,d.value),t.dlog(`info`,`step-state: ${r} ${l}→${d.value} (by ${o}, session=${a})`)};function WP(e,t,n,r){let i=r.filter(e=>e.key.startsWith(V_));if(i.length===0)return;let a=Yk(e.configFor(XP(e,t)),n=>e.sessionState.get(t,n),i);if(a.length>0)throw new $(`${n}: refused — ${a.join(`; `)}`)}function GP(e,t){return Math.max(e.min,Math.min(e.max,t))}function KP(e,t,n,r){if(r===null)return n.min;if(!VP.test(r))throw new $(`${e}: "${t}" shows ${JSON.stringify(r)} before any click, not an integer to step`);return GP(n,parseInt(r,10))}const qP=`render-origin`;function JP(e){return JSON.stringify(e)}function YP(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 XP(e,t){let n=e.sessionState.get(t,qP);if(n===null)throw new $(`session ${t} has not rendered yet — no config to act on`);return YP(n)}function ZP(e){return Tw(e.projectDir,e.cwd,e.configFile??void 0)}function QP(e,t){return ZP(XP(e,t))}function $P(e,t){return{record:(n,r,i)=>e.journal.file(t,n,r,i),logger:e.dlog}}const eF=(e,t)=>{let[n=``,r=``,i=``]=NP(()=>_E(e)),a=jP(n);if(!r)throw new $(`set-config: <key>/<value> is required (have keys: ${AO().join(`, `)})`);let o=jO(r,i);if(!o.ok)throw new $(`set-config: ${o.reason}`);let s=QP(t,a);BN($P(t,a),s,[[r,o.value]]),t.dlog(`info`,`set-config: ${r}=${o.value} → ${s} (session=${a})`)},tF=(e,t)=>{let[n=``,r=``,i=``]=NP(()=>_E(e)),a=jP(n);if(!r)throw new $(`step-config: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!VP.test(i))throw new $(`step-config: delta must be an integer, got "${i}"`);let o=parseInt(i,10),s=MO(r);if(!s)throw new $(`step-config: key "${r}" is not a bounded (range) config key (have keys: ${AO().join(`, `)})`);let c=XP(t,a),l=ZP(c),u=zN(l,r),d=typeof u==`number`?GP(s,u):KP(`step-config`,r,s,PO(t.configFor(c),r)),f=HP(d,o,s.min,s.max),p=jO(r,String(f));if(!p.ok)throw new $(`step-config: ${p.reason}`);BN($P(t,a),l,[[r,p.value]]),t.dlog(`info`,`step-config: ${r} ${d}→${p.value} (by ${o}) → ${l} (session=${a})`)},nF=(e,t)=>{let[n=``]=NP(()=>_E(e)),r=jP(n),i=XP(t,r),a=t.configFor(i),o=e=>t.sessionState.get(r,e),s=qk(a,o),c=Jk(a,o);if(s.length+c.length===0){t.dlog(`info`,`save: nothing unsaved (session=${r})`);return}let l=s.map(e=>{let t=uA(e.sessionKey,e.value);if(!t.ok)throw new $(`save: ${t.reason}`);return[e.target,t.value]});iF(`save`,c);let u=ZP(i);VN($P(t,r),u,l,c),t.reloadConfig(i);for(let e of[...s.map(e=>e.sessionKey),...c.map(e=>e.key)])t.sessionState.clear(r,e);t.dlog(`info`,`save: ${[...l.map(([e,t])=>`${e}=${t}`),...c.map(rF)].join(` `)} → ${u} (session=${r})`)},rF=e=>`${e.preset}/${e.id}.settings.${e.setting}=${Ks(e.value)}`;function iF(e,t){for(let n of t){let t=uA(n.key,Ks(n.value));if(!t.ok)throw new $(`${e}: ${t.reason}`)}}const aF=(e,t)=>{let[n=``]=NP(()=>_E(e)),r=jP(n),i=XP(t,r),a=Qk(t.configFor(i),e=>t.sessionState.get(r,e)),o=a.picks.map(e=>{let t=uA(e.sessionKey,e.value);if(!t.ok)throw new $(`save-preset: ${t.reason}`);return[e.configKey,t.value]});iF(`save-preset`,a.placements);let s=ZP(i),c=qN($P(t,r),s,a.from,a.globals,o,a.placements);t.reloadConfig(i);for(let e of[...yb.map(e=>e.sessionKey),...a.placements.map(e=>e.key)])t.sessionState.clear(r,e);t.sessionState.set(r,vb.preset.sessionKey,c),t.dlog(`info`,`save-preset: ${[`${c} from=${a.from}`,...o.map(([e,t])=>`${e}=${t}`),...a.placements.map(rF)].join(` `)} → ${s} (session=${r})`)},oF=(e,t)=>{let[n=``,r=``]=NP(()=>_E(e)),i=jP(n);if(!r)throw new $(`delete-preset: <name> is required (shape: <sessionId>/<name>)`);let a=XP(t,i),o=ZP(a);JN($P(t,i),o,r),t.reloadConfig(a);let s=vb.preset.sessionKey;t.sessionState.get(i,s)===r&&t.sessionState.clear(i,s),t.dlog(`info`,`delete-preset: ${r} ← ${o} (session=${i})`)},sF=(e,t)=>{let[n=``,...r]=NP(()=>_E(e)),i=jP(n),a=AO(),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=XP(t,i),c=ZP(s),l=r.map($k),u=l.flatMap(e=>e.fileKeys),d=l.flatMap(e=>e.sessionKeys);GN($P(t,i),c,u),t.reloadConfig(s);for(let e of d)t.sessionState.clear(i,e);t.dlog(`info`,`reset-config: ${[...u,...d.map(e=>`session:${e}`)].join(` `)} ← ${c} (session=${i})`)};function cF(e,t){let n=(e,t)=>[...js(C_(e,t).node)].filter(e=>e.kind===`segment`),r=new Set(b_(t.presets).flatMap(e=>n(t,e).map(t=>`${e}\0${Ds(t)}`)));return b_(e.presets).flatMap(t=>n(e,t).flatMap(e=>r.has(`${t}\0${Ds(e)}`)?[]:Object.values(e.drafts??{}).map(e=>e.key)))}const lF=(e,t)=>{let[n=``,r=``,i=``]=NP(()=>_E(e)),a=jP(n);if(!r)throw new $(`apply-layout-op: <key>/<op> is required (have: ${AO().join(`, `)})`);let o=jO(r,i);if(!o.ok)throw new $(`apply-layout-op: ${o.reason}`);let s=vO(o.value);if(s===null)throw new $(`apply-layout-op: "${o.value}" is not a layout op token`);let c=XP(t,a),l=ZP(c),u=t.configFor(c),d=YN($P(t,a),l,r,s);t.reloadConfig(c);let f=cF(u,t.configFor(c)).filter(e=>t.sessionState.get(a,e)!==null);for(let e of f)t.sessionState.clear(a,e);t.dlog(`info`,`apply-layout-op: ${r} ${o.value} → ${l} placed=${JSON.stringify(d)} released=${JSON.stringify(f)} (session=${a})`)},uF=(e,t)=>{let[n=``]=NP(()=>_E(e)),r=jP(n);t.journal.commit();let i=t.history.undo(r);t.dlog(`info`,`undo: restored ${sP(i)} (session=${r})`)},dF=(e,t)=>{let[n=``]=NP(()=>_E(e)),r=jP(n);t.journal.commit();let i=t.history.redo(r);t.dlog(`info`,`redo: re-applied ${sP(i)} (session=${r})`)},fF=(e,t)=>{jP(MP(e)),t.applyUpdate()},pF=`client-hints`;function mF(e,t){let n=e.sessionState.get(t,pF);if(n===null)throw new $(`session ${t} has not rendered yet — no client facts are recorded for it`);let r;try{r=JSON.parse(n)}catch{throw new $(`client hints record is not JSON: ${n}`)}if(typeof r!=`object`||!r)throw new $(`client hints record is not an object: ${n}`);return zw(r)}function hF(e,t,n){let r=Fx(n);e.sessionState.setBatch(t,zx(r)),e.dlog(`info`,`doctor: ${r.map(e=>`${e.check.name}=${e.verdict.ok?`ok`:`failed`}`).join(` `)} (session=${t})`)}const gF=(e,t)=>{let n=jP(MP(e));hF(t,n,vP(t.doctor,mF(t,n)))},_F=(e,t)=>{let[n=``,r=``]=NP(()=>_E(e)),i=jP(n),a=Ix(r);if(a===void 0)throw new $(`doctor-fix: unknown check "${r}"`);let o=vP(t.doctor,mF(t,i)),s=a.probe(o);if(s.ok||s.fix===void 0)throw new $(`doctor-fix: ${a.label} — ${s.ok?`nothing to fix`:s.reason}`);let c=yP(s.fix,o);t.dlog(`info`,`doctor-fix: ${a.name} → ${s.fix.kind} ${s.fix.name}=${s.fix.value} (session=${i})`),hF(t,i,c)},vF=(e,t)=>{let[n=``,...r]=NP(()=>_E(e)),i=jP(n),a=XP(t,i),o=Object.values(t.configFor(a).actions).filter(e=>`ceiling`in e).find(e=>{let t=eC(e);return t.length===r.length&&t.every((e,t)=>e===r[t])});if(o===void 0)throw new $(`ceiling: "${r.join(` `)}" is not a move this config declares`);let s=o.ceiling===`set`?{kind:`set`,to:o.to}:{kind:`clear`};t.memento.move({sessionId:i,projectDir:a.projectDir,cwd:a.cwd},s),t.dlog(`info`,`ceiling: ${r.join(` `)} (session=${i})`)},yF=(e,t)=>{let[n=``,r=``]=NP(()=>_E(e)),i=jP(n),a=Object.values(t.configFor(XP(t,i)).actions).filter(e=>`slash`in e),o=a.find(e=>e.slash===r);if(o===void 0)throw new $(`${JSON.stringify(r)} is not a command this config declares (it declares: ${[...new Set(a.map(e=>e.slash))].join(`, `)||`none`})`);let s=TP(t.claudeInput,mF(t,i).tmux,o.slash);if(s.kind===`refused`)throw t.dlog(`warn`,`slash: ${r} refused — ${s.reason} (session=${i})`),new $(`${r} was not typed: ${s.reason}`);t.dlog(`info`,`slash: typed ${r} into ${s.pane} (session=${i})`)},bF=`config-override`,xF=new Map([[ZT,FP],[`load-config`,(e,t)=>{let n=e.indexOf(`/`);if(n===-1)throw new $(`load-config: expected <sessionId>/<path> (missing separator)`);let r=jP(NP(()=>decodeURIComponent(e.slice(0,n)))),i=NP(()=>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,bF),t.dlog(`info`,`load-config: override cleared (session=${r})`)):(t.sessionState.set(r,bF,i),t.dlog(`info`,`load-config: ${i} (session=${r})`))}],[QT,IP],[YT,BP],[XT,UP],[nE,eF],[rE,tF],[sE,sF],[iE,nF],[aE,aF],[oE,oF],[cE,lF],[lE,uF],[uE,dF],[eE,LP],[tE,RP],[$T,zP],[dE,fF],[fE,gF],[pE,_F],[mE,vF],[hE,yF]]),SF=new Set([YT,XT,nE,rE,sE,iE,aE,oE,cE,lE,uE,$T,dE,fE,pE,mE,hE]),CF=(e,t)=>{let n=[],r=!1,i=null;for(let{verb:a,value:o}of xE(yE(e))){if(!i&&SF.has(a)){let e=_E(o);e.length>0&&e[0]&&(i=e[0])}let e=xF.get(a);if(!e){n.push(`unknown effect verb "${a}"`);continue}try{e(o,t)}catch(e){e instanceof $||(r=!0),n.push(`${a}: ${e instanceof Error?e.message:String(e)}`)}}if(n.length>0){i&&t.sessionState.set(i,`click.error`,n.join(`
188
- `));let e=`dispatch: ${n.join(`; `)}`;throw r?Error(e):new $(e)}};function wF(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 TF=new Map([...xF,[JT,CF]].map(([e,t])=>[e,wF(t)]));Object.freeze([...TF.keys()]);const EF=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`]),DF=[[`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 OF(e){let t={missingRequired:[],typeMismatches:[],unknownTopLevelFields:[]},n=typeof e==`object`&&e&&!Array.isArray(e)?e:{};for(let[e,r]of DF){let i=AF(n,e);if(i==null)t.missingRequired.push(e);else{let n=kF(i);n!==r&&t.typeMismatches.push({path:e,expected:r,got:n})}}for(let e of Object.keys(n))EF.has(e)||t.unknownTopLevelFields.push(e);return{data:e,report:t}}function kF(e){return Array.isArray(e)?`array`:typeof e==`string`&&!e.isWellFormed()?`ill-formed string`:typeof e}function AF(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 jF(e,t){switch(e){case`vars`:return{what:e,vars:MF(t)};case`segments`:return{what:e,segments:LF(t)};case`config`:return{what:e,config:VF(t)}}}function MF(e){if(e===null)return[];let{store:t,registry:n,config:r}=e,i=FF(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,...NF(r),lastError:a===void 0?null:{timestampMs:a.timestamp,message:a.message},ageMs:PF(r.lastUpdatedMs())})}return o}function NF(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 PF(e){return e===null?null:Math.max(0,Date.now()-e)}function FF(e){let t=new Map;for(let[n,r]of Object.entries(e.variables))t.set(n,IF(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}`,IF(i));return t}function IF(e){return e.kind}function LF(e){if(e===null)return[];let{store:t,config:n,lastRenderBySegment:r}=e,i=new Set(t.names()),a=zF(n),o=RF(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:BF(t.template,n.helpers,i),placements:(o.get(e)??[]).map(e=>({id:e,lastRender:r.get(e)??null}))})}return s}function RF(e){let t=new Map;for(let n of b_(e.presets))for(let r of js(C_(e,n).node)){if(r.kind!==`segment`)continue;let e=t.get(r.name)??[],n=Ds(r);e.includes(n)||t.set(r.name,[...e,n])}return t}function zF(e){let t=[],n=new Set;for(let r of js(Pc(e.root)))r.kind===`segment`&&e.segments[r.name]&&!n.has(r.name)&&(t.push(r.name),n.add(r.name));for(let r of Object.keys(e.segments))n.has(r)||(t.push(r),n.add(r));return t}function BF(e,t,n){let r=new Set;for(let i of av(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 VF(e){return e===null?null:e.config}const HF=[`vars`,`segments`,`config`];function UF(e){return typeof e==`string`&&HF.includes(e)}function WF(e){return Math.max(1,e-2)}var GF=class{thresholds={LOW:50,MEDIUM:80};getContextUsageThresholds(){return this.thresholds}ratioPercentages(e,t){let n=Math.min(100,Math.max(0,Math.round(e/t*100)));return{percentage:n,contextLeftPercentage:Math.max(0,100-n)}}calculateContextFromHookData(e){let t=e.context_window;if(!t?.current_usage)return O(`No current_usage in hook data, falling back to transcript parsing`),null;let n=t.current_usage,r=t.context_window_size,i=(n.input_tokens||0)+(n.cache_creation_input_tokens||0)+(n.cache_read_input_tokens||0);O(`Native current_usage: input=${n.input_tokens}, cache_create=${n.cache_creation_input_tokens}, cache_read=${n.cache_read_input_tokens}, total=${i} (limit: ${r})`);let a=this.ratioPercentages(i,r);return{totalTokens:i,maxTokens:r,percentage:t.used_percentage==null?a.percentage:Math.round(t.used_percentage),contextLeftPercentage:t.remaining_percentage==null?a.contextLeftPercentage:Math.round(t.remaining_percentage)}}async calculateContextTokensFromTranscript(e,t){try{O(`Calculating context tokens from transcript: ${e}`);let n=await GA(e);if(n.length===0)return O(`No entries in transcript`),Y;let r=null;for(let e=n.length-1;e>=0;e--){let t=n[e];if(t&&t.message?.usage?.input_tokens&&t.isSidechain!==!0){r=t,O(`Context segment: Found most recent entry at ${t.timestamp.toISOString()}, stopping search`);break}}if(r?.message?.usage){let e=r.message.usage,n=(e.input_tokens||0)+(e.cache_read_input_tokens||0)+(e.cache_creation_input_tokens||0);return O(`Most recent main chain context: ${n} tokens (limit: ${t})`),J({totalTokens:n,maxTokens:t,...this.ratioPercentages(n,t)})}return O(`No main chain entries with usage data found`),Y}catch(e){return X(`context transcript: ${e instanceof Error?e.message:String(e)}`)}}async getContextInfo(e){let t=this.calculateContextFromHookData(e);if(t)return J(t);let n=e.context_window?.context_window_size??2e5;return this.calculateContextTokensFromTranscript(e.transcript_path,n)}},KF=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=tk(t);if(n&&r!==0&&n.cursor.mtimeMs===r)return this.touch(e,n),{kind:`ok`,value:n.value};let i=await YA(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 qF={messageCount:0,recent:[]};function JF(e,t){if(t.isSidechain)return e;let n=[...e.recent,t];return{messageCount:e.messageCount+ +!!UA(t),recent:n.length>20?n.slice(-20):n}}function YF(e){let t=null,n=null;for(let r of e){let e=r.type||r.message?.role||r.message?.type;if(UA(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 XF=class{fold=new KF(qF,JF);async getMetricsInfo(e,t){if(O(`Getting metrics from hook data for session: ${e}`),!t.cost)return Y;let n=await this.fold.read(e,t.transcript_path);return n.kind===`failed`?X(`metrics (${e}): ${n.reason}`):J({responseTime:t.cost.total_api_duration_ms/1e3,lastResponseTime:YF(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 ZF={command:null,todos:[],pending:[],done:[]};function QF(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 $F(e,t){if(t.isSidechain)return e;let n=UA(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=QF(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 eI(e){return{command:e.command,todos:e.todos,running:e.pending.reduce((e,t)=>QF(e,t.name),[]),done:e.done}}var tI=class{fold=new KF(ZF,$F);async getActivityInfo(e,t){let n=await this.fold.read(e,t.transcript_path);return n.kind===`failed`?X(`activity (${e}): ${n.reason}`):J(eI(n.value))}};const nI=new Map;function rI(e){if(!e)return``;let t=e.indexOf(`,`);return t<0?e:e.slice(0,t)}var iI=class{async getSessionId(){if(!process.env.TMUX_PANE)return Y;let e=rI(process.env.TMUX),t=nI.get(e);if(t!==void 0)return t;O(`Getting tmux session ID, TMUX_PANE: ${process.env.TMUX_PANE}`);let n=await De({bin:`tmux`,args:[`display-message`,`-p`,`#S`],timeoutMs:1e3,category:`tmux`}),r=n.ok?n.stdout.trim()?J(n.stdout.trim()):Y:X(`tmux display-message: ${n.reason}`);return nI.set(e,r),r}isInTmux(){return!!process.env.TMUX_PANE}};const aI=e=>`${e.sessionId}|${e.projectDir}|${e.cwd}`;var oI=class{readings=new Map;inFlight=new Map;constructor(e,t=Date.now){this.edge=e,this.now=t}getCeiling(e){let t=aI(e),n=this.readings.get(t);if(n&&this.now()-n.at<1e4)return Promise.resolve(n.outcome);let r=this.inFlight.get(t)??this.fetch(t,e);return n?Promise.resolve(n.outcome):r}fetch(e,t){let n=this.edge.locate(t.projectDir),r=(n.kind===`ok`?this.edge.read(n.value,t):Promise.resolve(n)).then(t=>{if(this.inFlight.get(e)!==r)return t;for(this.readings.delete(e),this.readings.set(e,{outcome:t,at:this.now()});this.readings.size>64;)this.readings.delete(this.readings.keys().next().value);return t}).finally(()=>{this.inFlight.get(e)===r&&this.inFlight.delete(e)});return this.inFlight.set(e,r),r}move(e,t){let n=this.edge.locate(e.projectDir);if(n.kind!==`ok`)throw Error(n.kind===`failed`?n.reason:`memento is not installed or not enabled for this project`);let r=aI(e);try{this.edge.move(n.value,e,t)}finally{this.readings.delete(r),this.inFlight.delete(r),this.fetch(r,e)}}};const sI=c.join(`lib`,`ceiling_config.py`),cI=c.join(`skills`,`ceiling`,`bin`,`ceiling`);function lI(e,t){let n=typeof e==`object`&&e?e.plugins:void 0;if(typeof n!=`object`||!n)throw Error(`${t} has no "plugins" object`);return Object.entries(n).filter(([e])=>e.split(`@`)[0]===`memento`).flatMap(([e,n])=>{if(!Array.isArray(n))throw Error(`${t}: "${e}" is not a list of installs`);return n.map(n=>{let{scope:r,installPath:i,projectPath:a}=n??{};if(typeof r!=`string`||typeof i!=`string`)throw Error(`${t}: an install of "${e}" has no scope/path`);return typeof a==`string`?{key:e,scope:r,installPath:i,projectPath:a}:{key:e,scope:r,installPath:i}})})}function uI(e,t){let n=!0;for(let i of e){if(!r.existsSync(i))continue;let e;try{e=JSON.parse(r.readFileSync(i,`utf8`))?.enabledPlugins?.[t]}catch(e){return X(`memento lookup: ${i}: ${e.message}`)}typeof e==`boolean`&&(n=e)}return J(n)}function dI(e,t){if(!r.existsSync(e))return Y;let n;try{n=lI(JSON.parse(r.readFileSync(e,`utf8`)),e)}catch(e){return X(`memento lookup: ${e.message}`)}let i=n.find(e=>e.projectPath===t)??n.find(e=>e.scope===`user`);if(i===void 0)return Y;let a=uI([c.join(c.dirname(c.dirname(e)),`settings.json`),c.join(t,`.claude`,`settings.json`),c.join(t,`.claude`,`settings.local.json`)],i.key);if(a.kind!==`ok`)return a;if(!a.value)return Y;let o=[sI,cI].filter(e=>!r.existsSync(c.join(i.installPath,e)));return o.length===0?J(i.installPath):X(`memento at ${i.installPath} has no ${o.join(` or `)} — upgrade the plugin`)}function fI(e){let{CLAUDE_PROJECT_DIR:t,CLAUDE_CODE_SESSION_ID:n,...r}=process.env;return{...r,CLAUDE_CODE_SESSION_ID:e.sessionId,CLAUDE_PROJECT_DIR:e.projectDir||e.cwd}}function pI(e){return e.stderr.trim()||e.error||`${e.reason}${e.exitCode===null?``:` (exit ${e.exitCode})`}`}function mI(e){let t;try{t=JSON.parse(e)}catch{return X(`memento read: not JSON: ${e.trim()}`)}let{ceiling:n,session:r}=t??{},i=n===`off`||typeof n==`number`&&n>=0?n:void 0;return i!==void 0&&(r===null||typeof r==`string`)?J({ceiling:i,session:r}):X(`memento read: unexpected answer: ${e.trim()}`)}async function hI(e,t){let n=await De({bin:`python3`,args:[`-c`,`
184
+ `);n.push(e[0]);for(let r=1;r<e.length;r++)t.push(n),n=[e[r]]}return t.push(n),t}const xM=({text:e,trail:t})=>t===void 0?[e]:[e,t];function SM(e,t){switch(e){case`vertical`:return wM(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))]:wM(e)}}}function CM(e,t){let n=(e,r)=>t(e)?e.kind===`segment`?[{cells:[{name:e.name,address:r,settings:e.settings}],band:`own`,span:`shared`}]:SM(e.direction,e.children.map((t,i)=>n(t,[...r,TM(e,i)]))):[];return n(e,[]).map(e=>[...e.cells])}function wM(e){return e.map(e=>e.span===`row`?{...e,span:`shared`}:e)}function TM(e,t){return{index:t,count:e.children.length,distribution:e.distribution,axis:Es[e.direction]}}const EM={compile(e,t){return{kind:`container`,direction:e.direction,when:t.when,distribution:ca(e.distribution),children:e.children.map((e,n)=>t.compileChild(e,Ms(t.path,n)))}},render(e,t){return SM(e.direction,e.children.map((n,r)=>t.renderChild(n,t.visible,TM(e,r))))}},DM={compile(e,t){return{kind:`segment`,when:t.when,name:e.name,id:Ds(e),settings:t.placementSettings(e),...e.opens!==void 0&&{opens:{open:t.parse(Yc(e.opens.ref),`opens`),body:t.compileChild(e.opens.body,Ns(t.path)),key:e.opens.ref.key,placement:e.opens.placement}},...e.trail!==void 0&&{trail:t.parse(e.trail,`trail`)}}},render(e,t){let n=t.lookupSegment(e.name);if(!n)throw Error(`Layout segment "${e.name}" has no matching segment`);let{seg:r,compiled:i}=n;if(!t.visible)return[];let a=py(t.scope,e.settings);try{if(!lj(i.when,a))return[];let n=kb(e.settings.theme,t.palette),{styles:o,fragments:s,trail:c,drops:l}=t.evaluateSegment(e,a,n,t.region,{bg:i.bg,fg:i.fg,body:i.template,trail:e.trail}),u=e.opens!==void 0&&lj(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`)?pj(_j([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=bM(_j(s,d)).map((e,t)=>({cells:pj(e,{...f,trail:t===0?_j(c,d):[]}),band:`own`,span:`shared`})),b=l.map(e=>({cells:pj(_j([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(xM)),[...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:pj([new U(`⚠ ${e.id}: ${i}`,{end:``})],{width:`auto`,justify:`left`,truncate:`right`,padding:0,trail:OM(e,a,t)}),band:`own`,span:`shared`}]}}};function OM(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 kM={container:EM,segment:DM};function AM(e){return kM[e]}function jM(e){if(`ttl`in e)return{kind:`ttl`,durationMs:eb(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 MM(e,t){switch(Is(e)){case`json`:return{kind:`json`,default:t};case`regex`:return{kind:`regex`,regex:new RegExp(e.regex),default:t};case`text`:return{kind:`text`,default:t}}}function NM(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:jM(n.cache),parse:MM(n.parse,n.default)});break;case`shell`:e.declareShell(t,n.command,{cwd:r,cache:jM(n.cache),parse:MM(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?eb(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 PM(e,t){let n=Hd.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 FM=e=>bo(void 0,null,e.globals.progression);function IM(e,t,n){let r=n.cwd,i=Ib(e.globals.palette),a={store:t.variableStore,compiled:new Map,chromeCols:JD({style:`powerline`,charset:lo}),width:80,basePalette:i,palette:i,progression:$i[FM(e)],padding:1,seamCols:YD({style:`powerline`,charset:lo}),layout:()=>[]},o=Hj(t.drawnAt),s={action:a,activeSegment:o},c=Object.keys(e.looks),l=b_(e.presets),u=new Map([...Bb(e),...hx(e)]),d=uy({...Ij(a),...$j(a,o),...nM(a,o),...oM(a,o),...dM(a,o),...hM(s),...vM(o),looks:{fn:()=>c,argTypes:[],arity:{kind:`exact`}},presets:{fn:()=>l,argTypes:[],arity:{kind:`exact`}}},n.clock,t.drawnAt),f=PM(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 Sb)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=Tj(p,e.actions,g,u);let _=[];for(let[n,i]of Object.entries(e.variables))try{NM(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{NM(t,`${n}.${e}`,a,r)}catch(t){_.push(`Variable "${n}.${e}": ${t.message??String(t)}`)}let v=Object.create(null);for(let[t,n]of Object.entries(e.segments)){let e=(e,n,r=p)=>{try{return r(e)}catch(e){throw Error(`Template parse error in segments.${t}.${n}: ${e.message}`,{cause:e})}};v[t]={when:n.when===void 0?void 0:e(n.when,`when`,h),template:e(n.template,`template`),bg:n.bg===void 0?void 0:e(n.bg,`bg`),fg:n.fg===void 0?void 0:e(n.fg,`fg`)}}let y=(e,t,n)=>{try{return h(e)}catch(e){throw Error(`Template parse error in ${t}.${n}: ${e.message}`,{cause:e})}},b=t.variableStore,x=t=>{let n=Hs(e.segments[t.name]),r=Object.create(null);for(let[e,i]of Object.entries(n)){let n=t.settings?.[e]??i.default,a=t.drafts?.[e];Object.defineProperty(r,e,{enumerable:!0,get:a===void 0?()=>n:()=>qs(i,String(b.read(a.variable)))??n})}return Object.freeze(r)},S=(e,t)=>{let n={path:t,when:e.when===void 0?void 0:y(e.when,t,`when`),parse:(e,n)=>y(e,t,n),compileChild:S,placementSettings:x};return AM(e.kind).compile(e,n)},C=new Map;for(let t of l){let{node:n,path:r}=C_(e,t);C.set(t,S(n,r))}let ee=new Map;for(let t of Za){let n=e.globals[t];Qa(n)&&ee.set(t,LM(p,t,n))}return{segments:v,roots:C,activeSegment:o,menuRuntime:s,globalExpressions:ee,loadWarnings:_}}function LM(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 RM(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 zM(e,t){return e.kind===`decided`?e.name:t}function BM(e,t,n,r,i,a,o,s){let{perSegmentSink:c,onSegmentError:l,onRenderWarning:u}=o??{};r.drawAt(_o(a.colorCompatibility));let{preset:d=v_}=s??{},f=$i[s?.progression??FM(e)];t.menuRuntime.action.progression=f;let p=s?.look??ro(`none`,e.looks),m=s?.theme??Pb(void 0,null,e.globals.palette),h=(e,t)=>({...i,term:{cols:a.width},theme:{effective:e},look:{effective:t}});r.applyInput(h(zM(m,Wa),zM(p,to))),t.menuRuntime.action.chromeCols=JD(a),t.menuRuntime.action.padding=a.padding,t.menuRuntime.action.width=a.width,t.menuRuntime.action.seamCols=YD(a);let g=dy(n),_=eo(m,()=>RM(t,`palette`,g),e=>Nb(e,e=>u?.(e))),v=eo(p,()=>RM(t,`look`,g),t=>ro(t,e.looks));(_!==m||v!==p)&&r.applyInput(h(_.name,v.name));let y=_.value;t.menuRuntime.action.basePalette=y;let b=jb(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}=Va(i,a,s),u=Uj(t.activeSegment,e.name,e.id,i,l,c),d=Sj(u,s,o.bg,o.fg,n),f=o.body.evaluate(n),p=o.trail?.evaluate(n)??[];return{styles:{closed:d,get trigger(){return Rj(i,Aa(i,l,s).state,s)},get band(){return Rj(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&&lj(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,za(r,n)),renderBody:(e,t,n)=>C(e,i&&t,Ba(n)),closeDisclosure:e=>Lj(n,e)};return AM(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 "${v_}"; a miss here is merge/policy drift (have: ${[...t.roots.keys()].join(`, `)})`);let te=e=>{if(!lj(e.when,g))return!1;if(e.kind===`container`)return!0;if(wx(e.name)===void 0)return!1;try{return lj(t.segments[e.name].when,py(g,e.settings))}catch{return!0}};return t.menuRuntime.action.layout=()=>CM(ee,te).map(e=>e.flatMap(({name:e,address:t,settings:n})=>{let r=wx(e);return r===void 0?[]:[{name:r,address:t,palette:kb(n.theme,b)}]})),C(ee,!0,Ra(f)).map(e=>XD(gj(e.cells,a),a)).join(`
185
+ `)}var VM=class{kind=`box`;cell;lastChangedAt;constructor(e,t,n){this.name=e,this.type=t,qM(e,t,n,`initial value`),this.cell=gv.observable.box(n,{deep:!1}),this.lastChangedAt=Date.now()}read(){return this.cell.get()}set(e){qM(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}},HM=class{kind=`computed`;cell;constructor(e,t,n){this.name=e,this.type=t,this.cell=(0,gv.computed)(()=>{let e=n();return qM(this.name,this.type,e,`computed result`),e},{keepAlive:!0})}read(){return this.cell.get()}lastUpdatedMs(){return null}},UM=class{kind=`document`;cell;lastChangedAt;constructor(e,t){this.name=e,this.cell=gv.observable.box(KM(t),{deep:!1}),this.lastChangedAt=Date.now()}read(){return this.cell.get()}set(e){let t=KM(e);GM(this.cell.get(),t)||(this.cell.set(t),this.lastChangedAt=Date.now())}lastUpdatedMs(){return this.lastChangedAt}};function WM(e){return JSON.stringify(e)}function GM(e,t){return WM(e)===WM(t)}function KM(e){return e.kind===`ok`?{kind:`ok`,value:_v(e.value)}:e}function qM(e,t,n,r){let i=vv(n);if(i!==t)throw TypeError(`Variable "${e}": ${r} type ${i} does not match declared type ${t}`)}var JM=class{nodes=new Map;defineBox(e,t,n){this.assertNotDefined(e),this.nodes.set(e,new VM(e,t,n))}defineDocument(e,t){this.assertNotDefined(e),this.nodes.set(e,new UM(e,t))}defineComputed(e,t,n){this.assertNotDefined(e);let r=e=>this.read(e);this.nodes.set(e,new HM(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,gv.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,gv.runInAction)(()=>n.set(t))}runInAction(e){(0,gv.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 WM(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 YM(e,t,n){return e+`\0`+t+`\0`+(n??``)}function XM(e,t){return new Set(b_(e.presets).filter(n=>C_(e,n).path===`root`?t.root!==void 0:t.presets?.[n]?.root!==void 0))}function ZM(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 QM(e,t){let n=new Map;for(let t of Cw(e.projectDir,e.cwd,e.configFile)){let{dir:e,name:r}=ZM(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 $M(e){return e.filter(Boolean).join(`
186
+ `)||null}var eN=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=YM(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=Tw(e,t,n),i=r.kind===`file`?r.path:null,a=[kw(e,t),Dw(r)],o;try{o=this.buildState(t,i,a)}catch(e){return e instanceof bs&&a.push(...e.warnings),{resolvedPath:i,warning:$M(a),state:null,error:e instanceof bs||e instanceof Error?e.message:String(e)}}return{resolvedPath:i,warning:$M(a),state:o,error:null}}buildState(e,t,n){let r=Aw(t,$O),{config:i,raw:a}=r;n.push(...r.warnings);let o=Nw(r,t??`<default>`),s=new JM,c=new _b(s,o.globals.default_empty_value??``,this.deps.gitService,this.deps.sessionState),l,u=[];try{l=IM(o,c,{cwd:e}),n.push(...l.loadWarnings);for(let{key:e,spec:t}of _A(o))u.push(uA(e,t));for(let{key:e,spec:t}of RO(o))u.push(zO(e,t))}catch(e){for(let e of u)e();throw c.dispose(),e}return{config:o,store:s,registry:c,compiled:l,neededInputPaths:Ok(o),lastRenderCellsBySegment:new Map,validatorDisposers:u,authoredRoots:XM(i,a)}}refreshWatcher(e,t){e.configFilePath=t;let n=QM(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 tN=16384;var nN=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<tN){this.rollingTimestamps.push(e);return}this.rollingTimestamps[this.rollingHead]=e,this.rollingHead=(this.rollingHead+1)%tN}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:TE,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 rN={load:()=>({}),save:()=>{},flush:()=>{}};function iN(e){let t=new Map;for(let[n,r]of Object.entries(e))t.set(n,new Map(Object.entries(r)));return t}var aN=class{sessions;storage;atom=(0,gv.createAtom)(`SessionState`);constructor(e=rN,t=256){this.maxSessions=t,this.storage=e,this.sessions=new Map,this.hydrateFromStorage()}useStorage(e){this.storage=e,this.hydrateFromStorage()}hydrateFromStorage(){this.sessions=iN(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,gv.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,gv.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,gv.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 oN=(e,t)=>O(t);function sN(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 cN=class{timer=null;pending=null;constructor(e,t=500,n=oN){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 sN(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 lN={default_empty_value:`string`,default_separator:`string`,palette:`string`,look:`string`,preset:`string`,style:`string`,progression:`string`,autoWrap:`boolean`,padding:`number`,charset:`string`,updateNotice:`boolean`,colorCompatibility:`string`,menuGlyph:`string`},uN=new Set([`1`,`true`]),dN=new Set([`0`,`false`,``]);function fN(e,t){let n=LN(e),r=n.scope===`segment-palette`?`string`:lN[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(uN.has(t))return`true`;if(dN.has(t))return`false`;throw Error(`persistValueText: "${e}" expects boolean-ish (1, 0, true, false), got "${t}"`)}function pN(e){try{return r.readFileSync(e,`utf8`)}catch(e){if(e.code===`ENOENT`)return null;throw e}}function mN(e,t,n){try{if(t===null){r.rmSync(e,{force:!0});return}r.mkdirSync(c.dirname(e),{recursive:!0}),k(e,t)}catch(t){let r=`config write failed (${e}): ${t.message}`;throw n(`error`,r),Error(r)}}function hN(e){return/^\s*$/.test(e)?null:Io(e)}function gN(e,t){return e!==null&&Ro(e,t)!==void 0}function _N(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(_N),...i}}return e}function vN(e){if(!jc(e))return _N(e);let{rows:t,...n}=e;return{rows:Object.fromEntries(Object.entries(t).map(([e,t])=>[e,_N(t)])),...n}}const yN=ZO,bN=yN.segments,xN=yN.presets,SN=yN.root;function CN(e,t,n,r){if(!gN(e,t)&&n===void 0)throw new $(`cannot edit ${r}: neither the config file nor the bundled default declares ${t.join(`.`)}`)}function wN(e,t){let n=Qb(t);return t.scope===`segment-palette`&&CN(e,[`segments`,t.segment],bN[t.segment],n.join(`.`)),n}function TN(e){return Io(Ko(e))}function EN(){return Object.entries(SN.rows).map(([e,t])=>{let n=_N(t);return{path:[`root`],fragment:TN({rows:{[e]:n}}),unit:{path:[`root`,`rows`,e],value:n}}})}function DN(e,t){let n=e===null?void 0:Ro(e,t);return n===void 0?null:{path:t,fragment:n,unit:null}}function ON(e,t){if(t===void 0)return null;let n=vN(t);return{path:e,fragment:TN(n),unit:{path:e,value:n}}}function kN(e,t){let n=[`presets`,t],r=[...n,`root`],i=xN[t];CN(e,n,i,r.join(`.`));let a=DN(e,r)??ON(r,i?.root);return a!==null&&ps(a.fragment)?a:null}function AN(e,t){let n=fs(t.fragment);return n===null?new Map([[`#`,{path:t.path,unit:t.unit,node:t.fragment}]]):new Map([...e,...n.map(e=>[e.key,{path:[...t.path,`rows`,e.key],unit:t.unit,node:e.value}])])}function jN(e,t){return[...EN(),DN(e,[`root`]),kN(e,t)].filter(e=>e!==null).reduce(AN,new Map)}function MN(e,t,n){for(let{node:r,...i}of jN(e,t).values())if(hs(r,n))return i;throw new $(`${NN(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 NN(e,t){return kN(e,t)?.path??[`root`]}function PN(e,t){return t.scope===`preset-root`?NN(e,t.preset):Qb(t)}function FN(e,{unit:t}){return t===null?e:os(e,t.path,Ko(t.value),Wo)}function IN(e){let t=Zb(e);if(t===null)throw Error(`"${e}" is not a valid persist target`);return t}function LN(e){let t=IN(e);if(t.scope===`preset-root`)throw Error(`"${e}" names a layout, not a value`);return t}function RN(e,t,n,r){zN(t,r),mN(t,r,e.logger),e.record(t,n,r)}function zN(e,t){try{return Nw(jw(e,t,$O),e)}catch(e){throw e instanceof bs?new $(`refused: the config file would not load after this click — ${e.message}`):e}}function BN(e,t){let n=LN(t),r=hN(pN(e)??``),i=r===null?void 0:Ro(r,Qb(n));return i!==void 0&&`value`in i?i.value:void 0}function VN(e,t,n){HN(e,t,n,[])}function HN(e,t,n,r){let i=pN(t);RN(e,t,i,UN(n.reduce((e,[t,n])=>os(e,wN(hN(e),LN(t)),fN(t,n),Wo),i??``),t,r,e=>e))}function UN(e,t,n,r){return n.reduce((e,{preset:n,id:i,setting:a,value:o})=>{let s=r(e,n,i),c=MN(hN(s),n,i),l=ys(FN(s,c),c.path,i,a,Ko(o));if(l===null)throw new $(`${c.path.join(`.`)} in ${t} has no placement "${i}" — the bar you clicked is stale (it reloads on the next render)`);return l},e)}function WN(e,t,n){let r=hN(e),i=[`presets`,t,`root`];for(let[a,{path:o,unit:s,node:c}]of jN(r,t)){if(!hs(c,n))continue;if(i.every((e,t)=>o[t]===e))return e;let l=s===null?Bo(e,c):Ko(s.value);if(a!==`#`)return os(e,[...i,`rows`,a],l,Wo);if(kN(r,t)!==null)throw new $(`cannot give preset "${t}" its own copy of ${o.join(`.`)}: it already stages rows of its own over that tree`);return os(e,i,l,Wo)}return e}function GN(e,t){return cs(e,t,t[0]===`presets`&&t.length>2&&!tk(t[1])?2:0)}function KN(e,t,n){let r=n.map(IN),i=pN(t);if(i===null)return;let a=r.reduce((e,t)=>GN(e,PN(hN(e),t)),i);a!==i&&RN(e,t,i,a)}function qN(e){let t=e===null?void 0:Ro(e,[`presets`]),n=new Set([...ek,...t?.kind===`object`?t.entries.map(e=>e.key):[]].map(du));return Array.from({length:n.size+1},(e,t)=>`custom-${t+1}`).find(e=>!n.has(du(e)))}function JN(e,t,n,r,i,a){let o=pN(t),s=hN(o??``),c=qN(s),l=[`presets`,c],u=kN(s,n),d=[...u===null?[]:[[[...l,`root`],u.unit===null?Bo(o??``,u.fragment):Ko(u.unit.value)]],...Object.keys(r).length===0?[]:[[[...l,`globals`],Ko(r)]]],f=i.map(([e,t])=>{let n=Xb(c,e);return[wN(s,LN(n)),fN(n,t)]});return RN(e,t,o,UN([...d,...f].reduce((e,[t,n])=>os(e,t,n,Wo),os(o??``,l,`{}`,Wo)),t,a.map(e=>({...e,preset:c})),WN)),c}function YN(e,t,n){if(tk(n))throw new $(`cannot delete preset "${n}": it is bundled — reset its settings instead`);let r=[`presets`,n],i=pN(t),a=hN(i??``);if(i===null||a===null||Ro(a,r)===void 0)throw new $(`cannot delete preset "${n}": ${t} declares no ${r.join(`.`)} — the bar you clicked is stale; it reloads on the next render`);let o=Ro(a,[`globals`,`preset`]);RN(e,t,i,[r,...o?.kind===`string`&&o.value===n?[[`globals`,`preset`]]:[]].reduce((e,t)=>GN(e,t),i))}function XN(e,t,n,r){let i=IN(n);if(i.scope!==`preset-root`)throw Error(`"${n}" is not a "presets.<name>.root" target`);let a=pN(t),o=r.op===`remove`?r.target:r.anchor,s=MN(hN(a??``),i.preset,o),c=FN(a??``,s),{after:l,placed:u}=ZN(c,s.path,r,()=>{let e=zN(t,c);return b_(e.presets).map(t=>C_(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 RN(e,t,a,l),u}function ZN(e,t,n,r){switch(n.op){case`remove`:return{after:_s(e,t,n.target),placed:null};case`insert`:{let i=bO(n.segment,n.anchor,r());return{after:vs(e,t,i,n.anchor,n.relation),placed:i}}}}const QN={load:()=>({}),save:()=>{}},$N=new Set(bb.map(e=>e.sessionKey)),eP=e=>$N.has(e)||e.startsWith(V_),tP={past:[],future:[]},nP=e=>e.kind===`session`?`session:${e.key}`:`file:${e.file}`;var rP=class{state=new Map;constructor(e,t,n=QN){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)??tP;return{undo:t.length,redo:n.length}}history(e){return this.state.get(e)??tP}begin(){let e=new Map,t=(t,n)=>{let r=e.get(t)??new Map,i=r.get(nP(n));r.set(nP(n),i===void 0?n:{...n,before:i.before}),e.set(t,r)},n=this.sessionState,r=(e,r,i)=>{let a=r.filter(eP).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:oP([...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:oP([...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:oP([...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(nP));throw this.put(e,{past:sP(this.history(e).past,t),future:sP(this.history(e).future,t)}),new $(`${r}: ${o.map(lP).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):pN(t.file)}write(e,t,n){t.kind===`file`?mN(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||iP(n)>8388608;){let[e,t]=n.entries().next().value;n.size>1?n.delete(e):n.set(e,aP(t))}this.storage.save(Object.fromEntries(n)),this.state=n}};function iP(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 aP({past:e,future:t}){return e.length>0?{past:e.slice(1),future:t}:{past:e,future:t.slice(1)}}function oP(e){return e.slice(-50)}function sP(e,t){return e.map(e=>e.filter(e=>!t.has(nP(e)))).filter(e=>e.length>0)}function cP(e){return e.map(lP).join(`, `)}function lP(e){return e.kind===`session`?`session setting "${e.key}"`:e.file}function uP(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 dP(e){return Array.isArray(e)&&e.every(e=>Array.isArray(e)&&e.every(uP))}function fP(e){if(typeof e!=`object`||!e)return!1;let t=e;return dP(t.past)&&dP(t.future)}function pP(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(fP))return e}catch{}return t(`warn`,`settings-history load: unexpected shape, starting empty`),{}},save:n=>{try{r.mkdirSync(c.dirname(e),{recursive:!0}),k(e,JSON.stringify(n),384)}catch(e){let n=`settings-history write failed — the change landed but is not undoable: ${e.message}`;throw t(`error`,n),Error(n)}}}}function mP(e,t,n,r){let i=Oe({bin:`tmux`,args:[`-S`,e.socket,...n],timeoutMs:2e3,category:t,stdinInput:r});if(i.ok)return{kind:`ok`,stdout:i.stdout};if(i.reason===`rate-limited`)return{kind:`rate-limited`,reason:i.error??`rate-limited`};let a=i.error??[i.reason,i.stderr.trim()].filter(e=>e!==``).join(`: `);return{kind:`failed`,reason:`tmux ${n[0]} failed (${a})`}}function hP(e){let t=mP(e,`doctor.tmux`,[`display`,`-p`,`-t`,e.pane,`#{client_termfeatures}`]);return t.kind===`ok`?{kind:`ok`,value:t.stdout.trim().split(`,`).filter(e=>e!==``)}:{kind:`failed`,reason:t.reason}}function gP(){return{probeTmux:hP}}function _P(e){let t=jE(e).env;if(t===void 0)return{path:e,env:{}};if(typeof t!=`object`||!t||Array.isArray(t))throw Error(`cannot read ${e}: \`env\` is not an object`);return{path:e,env:t}}function vP(e,t){return t===void 0?{kind:`unreported`}:t===null?{kind:`outside`}:{kind:`inside`,hint:t,termfeatures:e.probeTmux(t)}}function yP(e,t){return{tmux:vP(e,t.tmux),claudeSettings:_P(OE(DE(t.claudeConfigDir)))}}function bP(e,t){let n=t.claudeSettings.path;switch(e.kind){case`claude-settings-env`:{let i=os(AE(n),[`env`,e.name],JSON.stringify(e.value),Go);return r.mkdirSync(c.dirname(n),{recursive:!0}),k(n,i),{...t,claudeSettings:_P(n)}}default:return e.kind}}const xP=/^─{20,}/,SP=/^❯(\s|$)/,CP=/›\s*stashed$/;function wP(e){if(e.inMode)return{kind:`in-mode`};let t=e.screen.map(e=>e.trimEnd()),n=t.flatMap((e,t)=>xP.test(e)?[t]:[]).at(-2);return n===void 0||!SP.test(t[n+1]??``)?{kind:`no-prompt`}:CP.test(t[n-1]??``)?{kind:`stashed`}:{kind:`ready`}}const TP={"in-mode":`the Claude Code pane is in tmux copy mode — leave it (q) and click again`,stashed:`Claude Code is holding a stashed prompt (ctrl+s) — restore or send it, then click again`,"no-prompt":`Claude Code is not at its prompt (a dialog or picker is open) — close it and click again`};function EP(e,t,n){if(t===void 0)return{kind:`refused`,reason:`this session's statusline client reports no tmux facts (it predates this daemon) — rebuild or reinstall cc-candybar`};if(t===null)return{kind:`refused`,reason:`this Claude Code is not running inside tmux — the bar can only type into a tmux pane`};let r=wP(e.read(t));if(r.kind!==`ready`)return{kind:`refused`,reason:TP[r.kind]};let i=e.type(t,n);return i.kind===`typed`?{kind:`typed`,pane:t.pane}:i}const DP=`cc-candybar-slash`;function OP(e,t,n,r){let i=mP(e,t,n,r);if(i.kind===`failed`)throw Error(i.reason);return i}function kP(e){let t=OP(e,`claude-input.read`,[`display`,`-p`,`-t`,e.pane,`#{pane_in_mode}`,`;`,`capture-pane`,`-p`,`-t`,e.pane]);if(t.kind===`rate-limited`)throw Error(t.reason);let[n=``,...r]=t.stdout.split(`
187
+ `);return{inMode:n!==`0`,screen:r}}function AP(e,t){let n=OP(e,`claude-input.type`,[`load-buffer`,`-b`,DP,`-`,`;`,`send-keys`,`-t`,e.pane,`C-s`,`;`,`paste-buffer`,`-p`,`-d`,`-b`,DP,`-t`,e.pane,`;`,`send-keys`,`-t`,e.pane,`Enter`],t);return n.kind===`ok`?{kind:`typed`}:{kind:`refused`,reason:`cc-candybar typed a command moments ago — click again in a second (${n.reason})`}}function jP(){return{read:kP,type:AP}}function MP(e){if(!e)throw new $(`session id is required`);if(e.includes(`/`)||e.includes(`..`))throw new $(`invalid session id "${e}"`);return e}function NP(e){return PP(()=>decodeURIComponent(e))}function PP(e){try{return e()}catch(e){throw e instanceof URIError?new $(`malformed wire encoding: ${e.message}`):e}}function FP(e,t){let n=Oe({bin:`/usr/bin/pbcopy`,stdinInput:e,category:`click.pbcopy`});if(!n.ok){if(n.reason===`rate-limited`){t.dlog(`warn`,`click.pbcopy rate-limited: ${n.error??``}`);return}throw Error(`pbcopy failed (${n.reason}, exit ${n.exitCode??`null`})`)}}const IP=(e,t)=>FP(NP(e),t),LP=(e,t)=>{let n=Oe({bin:`/usr/bin/open`,args:[`-a`,`Visual Studio Code`,NP(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`})`)}},RP=(e,t)=>FP(NP(e),t),zP=(e,t)=>FP(NP(e),t),BP=(e,t)=>{let n=MP(NP(e));t.sessionState.get(n,`toolbar-expanded`)?t.sessionState.clear(n,`toolbar-expanded`):t.sessionState.set(n,`toolbar-expanded`,`1`)},VP=(e,t)=>{let[n=``,...r]=PP(()=>vE(e)),i=MP(n);if(r.length===0)throw new $(`set-state: <key>/<value> is required (have keys: ${lA().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: ${lA().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=dA(t,n);if(!i.ok)throw new $(`set-state: pair ${e/2+1}: ${i.reason}`);a.push({key:t,value:i.value})}GP(t,i,`set-state`,a),t.sessionState.setBatch(i,a);let o=a.map(e=>`${e.key}=${e.value}`).join(` `);t.dlog(`info`,`set-state: ${o} (session=${i})`)},HP=/^-?\d+$/;function UP(e,t,n,r){let i=e+t;return i>r?e===r?n:r:i<n?e===n?r:n:i}const WP=(e,t)=>{let[n=``,r=``,i=``]=PP(()=>vE(e)),a=MP(n);if(!r)throw new $(`step-state: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!HP.test(i))throw new $(`step-state: delta must be an integer, got "${i}"`);let o=parseInt(i,10),s=fA(r);if(!s)throw new $(`step-state: key "${r}" is not a bounded (range) state key (have keys: ${lA().join(`, `)})`);let c=t.sessionState.get(a,r),l=c&&HP.test(c)?KP(s,parseInt(c,10)):qP(`step-state`,r,s,hA(t.configFor(ZP(t,a)),e=>t.sessionState.get(a,e),r)),u=UP(l,o,s.min,s.max),d=dA(r,String(u));if(!d.ok)throw new $(`step-state: ${d.reason}`);GP(t,a,`step-state`,[{key:r,value:d.value}]),t.sessionState.set(a,r,d.value),t.dlog(`info`,`step-state: ${r} ${l}→${d.value} (by ${o}, session=${a})`)};function GP(e,t,n,r){let i=r.filter(e=>e.key.startsWith(V_));if(i.length===0)return;let a=Xk(e.configFor(ZP(e,t)),n=>e.sessionState.get(t,n),i);if(a.length>0)throw new $(`${n}: refused — ${a.join(`; `)}`)}function KP(e,t){return Math.max(e.min,Math.min(e.max,t))}function qP(e,t,n,r){if(r===null)return n.min;if(!HP.test(r))throw new $(`${e}: "${t}" shows ${JSON.stringify(r)} before any click, not an integer to step`);return KP(n,parseInt(r,10))}const JP=`render-origin`;function YP(e){return JSON.stringify(e)}function XP(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 ZP(e,t){let n=e.sessionState.get(t,JP);if(n===null)throw new $(`session ${t} has not rendered yet — no config to act on`);return XP(n)}function QP(e){return Ew(e.projectDir,e.cwd,e.configFile??void 0)}function $P(e,t){return QP(ZP(e,t))}function eF(e,t){return{record:(n,r,i)=>e.journal.file(t,n,r,i),logger:e.dlog}}const tF=(e,t)=>{let[n=``,r=``,i=``]=PP(()=>vE(e)),a=MP(n);if(!r)throw new $(`set-config: <key>/<value> is required (have keys: ${jO().join(`, `)})`);let o=MO(r,i);if(!o.ok)throw new $(`set-config: ${o.reason}`);let s=$P(t,a);VN(eF(t,a),s,[[r,o.value]]),t.dlog(`info`,`set-config: ${r}=${o.value} → ${s} (session=${a})`)},nF=(e,t)=>{let[n=``,r=``,i=``]=PP(()=>vE(e)),a=MP(n);if(!r)throw new $(`step-config: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!HP.test(i))throw new $(`step-config: delta must be an integer, got "${i}"`);let o=parseInt(i,10),s=NO(r);if(!s)throw new $(`step-config: key "${r}" is not a bounded (range) config key (have keys: ${jO().join(`, `)})`);let c=ZP(t,a),l=QP(c),u=BN(l,r),d=typeof u==`number`?KP(s,u):qP(`step-config`,r,s,FO(t.configFor(c),r)),f=UP(d,o,s.min,s.max),p=MO(r,String(f));if(!p.ok)throw new $(`step-config: ${p.reason}`);VN(eF(t,a),l,[[r,p.value]]),t.dlog(`info`,`step-config: ${r} ${d}→${p.value} (by ${o}) → ${l} (session=${a})`)},rF=(e,t)=>{let[n=``]=PP(()=>vE(e)),r=MP(n),i=ZP(t,r),a=t.configFor(i),o=e=>t.sessionState.get(r,e),s=Jk(a,o),c=Yk(a,o);if(s.length+c.length===0){t.dlog(`info`,`save: nothing unsaved (session=${r})`);return}let l=s.map(e=>{let t=dA(e.sessionKey,e.value);if(!t.ok)throw new $(`save: ${t.reason}`);return[e.target,t.value]});aF(`save`,c);let u=QP(i);HN(eF(t,r),u,l,c),t.reloadConfig(i);for(let e of[...s.map(e=>e.sessionKey),...c.map(e=>e.key)])t.sessionState.clear(r,e);t.dlog(`info`,`save: ${[...l.map(([e,t])=>`${e}=${t}`),...c.map(iF)].join(` `)} → ${u} (session=${r})`)},iF=e=>`${e.preset}/${e.id}.settings.${e.setting}=${Ks(e.value)}`;function aF(e,t){for(let n of t){let t=dA(n.key,Ks(n.value));if(!t.ok)throw new $(`${e}: ${t.reason}`)}}const oF=(e,t)=>{let[n=``]=PP(()=>vE(e)),r=MP(n),i=ZP(t,r),a=$k(t.configFor(i),e=>t.sessionState.get(r,e)),o=a.picks.map(e=>{let t=dA(e.sessionKey,e.value);if(!t.ok)throw new $(`save-preset: ${t.reason}`);return[e.configKey,t.value]});aF(`save-preset`,a.placements);let s=QP(i),c=JN(eF(t,r),s,a.from,a.globals,o,a.placements);t.reloadConfig(i);for(let e of[...bb.map(e=>e.sessionKey),...a.placements.map(e=>e.key)])t.sessionState.clear(r,e);t.sessionState.set(r,yb.preset.sessionKey,c),t.dlog(`info`,`save-preset: ${[`${c} from=${a.from}`,...o.map(([e,t])=>`${e}=${t}`),...a.placements.map(iF)].join(` `)} → ${s} (session=${r})`)},sF=(e,t)=>{let[n=``,r=``]=PP(()=>vE(e)),i=MP(n);if(!r)throw new $(`delete-preset: <name> is required (shape: <sessionId>/<name>)`);let a=ZP(t,i),o=QP(a);YN(eF(t,i),o,r),t.reloadConfig(a);let s=yb.preset.sessionKey;t.sessionState.get(i,s)===r&&t.sessionState.clear(i,s),t.dlog(`info`,`delete-preset: ${r} ← ${o} (session=${i})`)},cF=(e,t)=>{let[n=``,...r]=PP(()=>vE(e)),i=MP(n),a=jO(),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=ZP(t,i),c=QP(s),l=r.map(eA),u=l.flatMap(e=>e.fileKeys),d=l.flatMap(e=>e.sessionKeys);KN(eF(t,i),c,u),t.reloadConfig(s);for(let e of d)t.sessionState.clear(i,e);t.dlog(`info`,`reset-config: ${[...u,...d.map(e=>`session:${e}`)].join(` `)} ← ${c} (session=${i})`)};function lF(e,t){let n=(e,t)=>[...js(C_(e,t).node)].filter(e=>e.kind===`segment`),r=new Set(b_(t.presets).flatMap(e=>n(t,e).map(t=>`${e}\0${Ds(t)}`)));return b_(e.presets).flatMap(t=>n(e,t).flatMap(e=>r.has(`${t}\0${Ds(e)}`)?[]:Object.values(e.drafts??{}).map(e=>e.key)))}const uF=(e,t)=>{let[n=``,r=``,i=``]=PP(()=>vE(e)),a=MP(n);if(!r)throw new $(`apply-layout-op: <key>/<op> is required (have: ${jO().join(`, `)})`);let o=MO(r,i);if(!o.ok)throw new $(`apply-layout-op: ${o.reason}`);let s=yO(o.value);if(s===null)throw new $(`apply-layout-op: "${o.value}" is not a layout op token`);let c=ZP(t,a),l=QP(c),u=t.configFor(c),d=XN(eF(t,a),l,r,s);t.reloadConfig(c);let f=lF(u,t.configFor(c)).filter(e=>t.sessionState.get(a,e)!==null);for(let e of f)t.sessionState.clear(a,e);t.dlog(`info`,`apply-layout-op: ${r} ${o.value} → ${l} placed=${JSON.stringify(d)} released=${JSON.stringify(f)} (session=${a})`)},dF=(e,t)=>{let[n=``]=PP(()=>vE(e)),r=MP(n);t.journal.commit();let i=t.history.undo(r);t.dlog(`info`,`undo: restored ${cP(i)} (session=${r})`)},fF=(e,t)=>{let[n=``]=PP(()=>vE(e)),r=MP(n);t.journal.commit();let i=t.history.redo(r);t.dlog(`info`,`redo: re-applied ${cP(i)} (session=${r})`)},pF=(e,t)=>{MP(NP(e)),t.applyUpdate()},mF=`client-hints`;function hF(e,t){let n=e.sessionState.get(t,mF);if(n===null)throw new $(`session ${t} has not rendered yet — no client facts are recorded for it`);let r;try{r=JSON.parse(n)}catch{throw new $(`client hints record is not JSON: ${n}`)}if(typeof r!=`object`||!r)throw new $(`client hints record is not an object: ${n}`);return Bw(r)}function gF(e,t,n){let r=Ix(n);e.sessionState.setBatch(t,Bx(r)),e.dlog(`info`,`doctor: ${r.map(e=>`${e.check.name}=${e.verdict.ok?`ok`:`failed`}`).join(` `)} (session=${t})`)}const _F=(e,t)=>{let n=MP(NP(e));gF(t,n,yP(t.doctor,hF(t,n)))},vF=(e,t)=>{let[n=``,r=``]=PP(()=>vE(e)),i=MP(n),a=Lx(r);if(a===void 0)throw new $(`doctor-fix: unknown check "${r}"`);let o=yP(t.doctor,hF(t,i)),s=a.probe(o);if(s.ok||s.fix===void 0)throw new $(`doctor-fix: ${a.label} — ${s.ok?`nothing to fix`:s.reason}`);let c=bP(s.fix,o);t.dlog(`info`,`doctor-fix: ${a.name} → ${s.fix.kind} ${s.fix.name}=${s.fix.value} (session=${i})`),gF(t,i,c)},yF=(e,t)=>{let[n=``,...r]=PP(()=>vE(e)),i=MP(n),a=ZP(t,i),o=Object.values(t.configFor(a).actions).filter(e=>`ceiling`in e).find(e=>{let t=tC(e);return t.length===r.length&&t.every((e,t)=>e===r[t])});if(o===void 0)throw new $(`ceiling: "${r.join(` `)}" is not a move this config declares`);let s=o.ceiling===`set`?{kind:`set`,to:o.to}:{kind:`clear`};t.memento.move({sessionId:i,projectDir:a.projectDir,cwd:a.cwd},s),t.dlog(`info`,`ceiling: ${r.join(` `)} (session=${i})`)},bF=(e,t)=>{let[n=``,r=``]=PP(()=>vE(e)),i=MP(n),a=Object.values(t.configFor(ZP(t,i)).actions).filter(e=>`slash`in e),o=a.find(e=>e.slash===r);if(o===void 0)throw new $(`${JSON.stringify(r)} is not a command this config declares (it declares: ${[...new Set(a.map(e=>e.slash))].join(`, `)||`none`})`);let s=EP(t.claudeInput,hF(t,i).tmux,o.slash);if(s.kind===`refused`)throw t.dlog(`warn`,`slash: ${r} refused — ${s.reason} (session=${i})`),new $(`${r} was not typed: ${s.reason}`);t.dlog(`info`,`slash: typed ${r} into ${s.pane} (session=${i})`)},xF=`config-override`,SF=new Map([[QT,IP],[`load-config`,(e,t)=>{let n=e.indexOf(`/`);if(n===-1)throw new $(`load-config: expected <sessionId>/<path> (missing separator)`);let r=MP(PP(()=>decodeURIComponent(e.slice(0,n)))),i=PP(()=>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,xF),t.dlog(`info`,`load-config: override cleared (session=${r})`)):(t.sessionState.set(r,xF,i),t.dlog(`info`,`load-config: ${i} (session=${r})`))}],[$T,LP],[XT,VP],[ZT,WP],[rE,tF],[iE,nF],[cE,cF],[aE,rF],[oE,oF],[sE,sF],[lE,uF],[uE,dF],[dE,fF],[tE,RP],[nE,zP],[eE,BP],[fE,pF],[pE,_F],[mE,vF],[hE,yF],[gE,bF]]),CF=new Set([XT,ZT,rE,iE,cE,aE,oE,sE,lE,uE,dE,eE,fE,pE,mE,hE,gE]),wF=(e,t)=>{let n=[],r=!1,i=null;for(let{verb:a,value:o}of SE(bE(e))){if(!i&&CF.has(a)){let e=vE(o);e.length>0&&e[0]&&(i=e[0])}let e=SF.get(a);if(!e){n.push(`unknown effect verb "${a}"`);continue}try{e(o,t)}catch(e){e instanceof $||(r=!0),n.push(`${a}: ${e instanceof Error?e.message:String(e)}`)}}if(n.length>0){i&&t.sessionState.set(i,`click.error`,n.join(`
188
+ `));let e=`dispatch: ${n.join(`; `)}`;throw r?Error(e):new $(e)}};function TF(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 EF=new Map([...SF,[YT,wF]].map(([e,t])=>[e,TF(t)]));Object.freeze([...EF.keys()]);const DF=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`]),OF=[[`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 kF(e){let t={missingRequired:[],typeMismatches:[],unknownTopLevelFields:[]},n=typeof e==`object`&&e&&!Array.isArray(e)?e:{};for(let[e,r]of OF){let i=jF(n,e);if(i==null)t.missingRequired.push(e);else{let n=AF(i);n!==r&&t.typeMismatches.push({path:e,expected:r,got:n})}}for(let e of Object.keys(n))DF.has(e)||t.unknownTopLevelFields.push(e);return{data:e,report:t}}function AF(e){return Array.isArray(e)?`array`:typeof e==`string`&&!e.isWellFormed()?`ill-formed string`:typeof e}function jF(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 MF(e,t){switch(e){case`vars`:return{what:e,vars:NF(t)};case`segments`:return{what:e,segments:RF(t)};case`config`:return{what:e,config:HF(t)}}}function NF(e){if(e===null)return[];let{store:t,registry:n,config:r}=e,i=IF(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,...PF(r),lastError:a===void 0?null:{timestampMs:a.timestamp,message:a.message},ageMs:FF(r.lastUpdatedMs())})}return o}function PF(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 FF(e){return e===null?null:Math.max(0,Date.now()-e)}function IF(e){let t=new Map;for(let[n,r]of Object.entries(e.variables))t.set(n,LF(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}`,LF(i));return t}function LF(e){return e.kind}function RF(e){if(e===null)return[];let{store:t,config:n,lastRenderBySegment:r}=e,i=new Set(t.names()),a=BF(n),o=zF(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:VF(t.template,n.helpers,i),placements:(o.get(e)??[]).map(e=>({id:e,lastRender:r.get(e)??null}))})}return s}function zF(e){let t=new Map;for(let n of b_(e.presets))for(let r of js(C_(e,n).node)){if(r.kind!==`segment`)continue;let e=t.get(r.name)??[],n=Ds(r);e.includes(n)||t.set(r.name,[...e,n])}return t}function BF(e){let t=[],n=new Set;for(let r of js(Pc(e.root)))r.kind===`segment`&&e.segments[r.name]&&!n.has(r.name)&&(t.push(r.name),n.add(r.name));for(let r of Object.keys(e.segments))n.has(r)||(t.push(r),n.add(r));return t}function VF(e,t,n){let r=new Set;for(let i of ov(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 HF(e){return e===null?null:e.config}const UF=[`vars`,`segments`,`config`];function WF(e){return typeof e==`string`&&UF.includes(e)}function GF(e){return Math.max(1,e-2)}var KF=class{thresholds={LOW:50,MEDIUM:80};getContextUsageThresholds(){return this.thresholds}ratioPercentages(e,t){let n=Math.min(100,Math.max(0,Math.round(e/t*100)));return{percentage:n,contextLeftPercentage:Math.max(0,100-n)}}calculateContextFromHookData(e){let t=e.context_window;if(!t?.current_usage)return O(`No current_usage in hook data, falling back to transcript parsing`),null;let n=t.current_usage,r=t.context_window_size,i=(n.input_tokens||0)+(n.cache_creation_input_tokens||0)+(n.cache_read_input_tokens||0);O(`Native current_usage: input=${n.input_tokens}, cache_create=${n.cache_creation_input_tokens}, cache_read=${n.cache_read_input_tokens}, total=${i} (limit: ${r})`);let a=this.ratioPercentages(i,r);return{totalTokens:i,maxTokens:r,percentage:t.used_percentage==null?a.percentage:Math.round(t.used_percentage),contextLeftPercentage:t.remaining_percentage==null?a.contextLeftPercentage:Math.round(t.remaining_percentage)}}async calculateContextTokensFromTranscript(e,t){try{O(`Calculating context tokens from transcript: ${e}`);let n=await KA(e);if(n.length===0)return O(`No entries in transcript`),Y;let r=null;for(let e=n.length-1;e>=0;e--){let t=n[e];if(t&&t.message?.usage?.input_tokens&&t.isSidechain!==!0){r=t,O(`Context segment: Found most recent entry at ${t.timestamp.toISOString()}, stopping search`);break}}if(r?.message?.usage){let e=r.message.usage,n=(e.input_tokens||0)+(e.cache_read_input_tokens||0)+(e.cache_creation_input_tokens||0);return O(`Most recent main chain context: ${n} tokens (limit: ${t})`),J({totalTokens:n,maxTokens:t,...this.ratioPercentages(n,t)})}return O(`No main chain entries with usage data found`),Y}catch(e){return X(`context transcript: ${e instanceof Error?e.message:String(e)}`)}}async getContextInfo(e){let t=this.calculateContextFromHookData(e);if(t)return J(t);let n=e.context_window?.context_window_size??2e5;return this.calculateContextTokensFromTranscript(e.transcript_path,n)}},qF=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=nk(t);if(n&&r!==0&&n.cursor.mtimeMs===r)return this.touch(e,n),{kind:`ok`,value:n.value};let i=await XA(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 JF={messageCount:0,recent:[]};function YF(e,t){if(t.isSidechain)return e;let n=[...e.recent,t];return{messageCount:e.messageCount+ +!!WA(t),recent:n.length>20?n.slice(-20):n}}function XF(e){let t=null,n=null;for(let r of e){let e=r.type||r.message?.role||r.message?.type;if(WA(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 ZF=class{fold=new qF(JF,YF);async getMetricsInfo(e,t){if(O(`Getting metrics from hook data for session: ${e}`),!t.cost)return Y;let n=await this.fold.read(e,t.transcript_path);return n.kind===`failed`?X(`metrics (${e}): ${n.reason}`):J({responseTime:t.cost.total_api_duration_ms/1e3,lastResponseTime:XF(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 QF={command:null,todos:[],pending:[],done:[]};function $F(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 eI(e,t){if(t.isSidechain)return e;let n=WA(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=$F(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 tI(e){return{command:e.command,todos:e.todos,running:e.pending.reduce((e,t)=>$F(e,t.name),[]),done:e.done}}var nI=class{fold=new qF(QF,eI);async getActivityInfo(e,t){let n=await this.fold.read(e,t.transcript_path);return n.kind===`failed`?X(`activity (${e}): ${n.reason}`):J(tI(n.value))}};const rI=new Map;function iI(e){if(!e)return``;let t=e.indexOf(`,`);return t<0?e:e.slice(0,t)}var aI=class{async getSessionId(){if(!process.env.TMUX_PANE)return Y;let e=iI(process.env.TMUX),t=rI.get(e);if(t!==void 0)return t;O(`Getting tmux session ID, TMUX_PANE: ${process.env.TMUX_PANE}`);let n=await De({bin:`tmux`,args:[`display-message`,`-p`,`#S`],timeoutMs:1e3,category:`tmux`}),r=n.ok?n.stdout.trim()?J(n.stdout.trim()):Y:X(`tmux display-message: ${n.reason}`);return rI.set(e,r),r}isInTmux(){return!!process.env.TMUX_PANE}};const oI=e=>`${e.sessionId}|${e.projectDir}|${e.cwd}`;var sI=class{readings=new Map;inFlight=new Map;constructor(e,t=Date.now){this.edge=e,this.now=t}getCeiling(e){let t=oI(e),n=this.readings.get(t);if(n&&this.now()-n.at<1e4)return Promise.resolve(n.outcome);let r=this.inFlight.get(t)??this.fetch(t,e);return n?Promise.resolve(n.outcome):r}fetch(e,t){let n=this.edge.locate(t.projectDir),r=(n.kind===`ok`?this.edge.read(n.value,t):Promise.resolve(n)).then(t=>{if(this.inFlight.get(e)!==r)return t;for(this.readings.delete(e),this.readings.set(e,{outcome:t,at:this.now()});this.readings.size>64;)this.readings.delete(this.readings.keys().next().value);return t}).finally(()=>{this.inFlight.get(e)===r&&this.inFlight.delete(e)});return this.inFlight.set(e,r),r}move(e,t){let n=this.edge.locate(e.projectDir);if(n.kind!==`ok`)throw Error(n.kind===`failed`?n.reason:`memento is not installed or not enabled for this project`);let r=oI(e);try{this.edge.move(n.value,e,t)}finally{this.readings.delete(r),this.inFlight.delete(r),this.fetch(r,e)}}};const cI=c.join(`lib`,`ceiling_config.py`),lI=c.join(`skills`,`ceiling`,`bin`,`ceiling`);function uI(e,t){let n=typeof e==`object`&&e?e.plugins:void 0;if(typeof n!=`object`||!n)throw Error(`${t} has no "plugins" object`);return Object.entries(n).filter(([e])=>e.split(`@`)[0]===`memento`).flatMap(([e,n])=>{if(!Array.isArray(n))throw Error(`${t}: "${e}" is not a list of installs`);return n.map(n=>{let{scope:r,installPath:i,projectPath:a}=n??{};if(typeof r!=`string`||typeof i!=`string`)throw Error(`${t}: an install of "${e}" has no scope/path`);return typeof a==`string`?{key:e,scope:r,installPath:i,projectPath:a}:{key:e,scope:r,installPath:i}})})}function dI(e,t){let n=!0;for(let i of e){if(!r.existsSync(i))continue;let e;try{e=JSON.parse(r.readFileSync(i,`utf8`))?.enabledPlugins?.[t]}catch(e){return X(`memento lookup: ${i}: ${e.message}`)}typeof e==`boolean`&&(n=e)}return J(n)}function fI(e,t){if(!r.existsSync(e))return Y;let n;try{n=uI(JSON.parse(r.readFileSync(e,`utf8`)),e)}catch(e){return X(`memento lookup: ${e.message}`)}let i=n.find(e=>e.projectPath===t)??n.find(e=>e.scope===`user`);if(i===void 0)return Y;let a=dI([c.join(c.dirname(c.dirname(e)),`settings.json`),c.join(t,`.claude`,`settings.json`),c.join(t,`.claude`,`settings.local.json`)],i.key);if(a.kind!==`ok`)return a;if(!a.value)return Y;let o=[cI,lI].filter(e=>!r.existsSync(c.join(i.installPath,e)));return o.length===0?J(i.installPath):X(`memento at ${i.installPath} has no ${o.join(` or `)} — upgrade the plugin`)}function pI(e){let{CLAUDE_PROJECT_DIR:t,CLAUDE_CODE_SESSION_ID:n,...r}=process.env;return{...r,CLAUDE_CODE_SESSION_ID:e.sessionId,CLAUDE_PROJECT_DIR:e.projectDir||e.cwd}}function mI(e){return e.stderr.trim()||e.error||`${e.reason}${e.exitCode===null?``:` (exit ${e.exitCode})`}`}function hI(e){let t;try{t=JSON.parse(e)}catch{return X(`memento read: not JSON: ${e.trim()}`)}let{ceiling:n,session:r}=t??{},i=n===`off`||typeof n==`number`&&n>=0?n:void 0;return i!==void 0&&(r===null||typeof r==`string`)?J({ceiling:i,session:r}):X(`memento read: unexpected answer: ${e.trim()}`)}async function gI(e,t){let n=await De({bin:`python3`,args:[`-c`,`
189
189
  import json, math, sys
190
190
  sys.path.insert(0, sys.argv[1])
191
191
  from ceiling_config import CONFIG_NAME, anchored, ceiling_in, in_force, session_directory
@@ -194,26 +194,26 @@ ceiling = in_force(directory, anchored(sys.argv[3]))
194
194
  layer = ceiling_in(directory / CONFIG_NAME)
195
195
  print(json.dumps({"ceiling": "off" if ceiling == math.inf else ceiling,
196
196
  "session": layer.text if layer else None}))
197
- `,c.join(e,`lib`),t.sessionId,t.cwd],env:fI(t),timeoutMs:3e3,category:`memento.read`});return n.ok?mI(n.stdout):X(pI(n))}function gI(e,t,n){let r=Oe({bin:c.join(e,cI),args:n.kind===`set`?[`set`,`session`,n.to]:[`clear`,`session`],env:fI(t),timeoutMs:5e3,category:`memento.move`});if(!r.ok)throw Error(pI(r))}function _I(){let e=OE(EE(TE(process.env,process.cwd())));return{locate:t=>dI(e,t),read:hI,move:gI}}var vI=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 yI=new tN;Te(yI.launchStats);const bI=new zy({counters:yI,logger:Q}),xI=new qy({watchers:bI,logger:Q}),SI=new sj,CI=new iN,wI=new nP(CI,Q),TI=new vI(Ke()),EI=new GF,DI=new XF,OI=new tI,kI=new iI,AI=new oI(_I()),jI=new $M({gitService:xI,sessionState:CI,watchers:bI},{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)}`)}}),MI=60*1e3;function NI(){let e=import.meta.url,n=[];e.startsWith(`file://`)&&n.push(ie(e)),t.argv[1]&&n.push(t.argv[1]);let i=new Map;for(let e of n)try{i.set(e,r.statSync(e).mtimeMs)}catch{}let a=null,o=()=>{for(let[e,t]of i)try{if(r.statSync(e).mtimeMs!==t){Q(`info`,`binary mtime changed (${e}); shutting down`),a&&clearInterval(a),YI(0);return}}catch(e){Q(`warn`,`bin stat failed: ${e.message}`)}};return{arm(){i.size!==0&&(a=setInterval(o,MI),a.unref())},checkNow:o}}const PI=NI(),FI=MA({entryUrl:import.meta.url,intervalMs:MI,releaseIntervalMs:216e5,registryUrl:t.env.CC_CANDYBAR_REGISTRY_URL??`https://registry.npmjs.org`,fetchImpl:fetch,onApplied:()=>PI.checkNow(),log:Q});let II=null,LI=null,RI=0;function zI(){t.on(`uncaughtException`,e=>{Q(`error`,`uncaughtException: ${e.stack||e.message}`),YI(1)}),t.on(`unhandledRejection`,e=>{Q(`error`,`unhandledRejection: ${String(e)}`),YI(1)});for(let e of[`SIGINT`,`SIGTERM`,`SIGHUP`])t.on(e,()=>{Q(`info`,`received ${e}, shutting down`),YI(0)});try{RI=bT(t.env)}catch(e){Q(`error`,`refusing to boot: ${e.message}`),YI(1);return}II=xD(t.pid);let e=jD(ND(II));if(!e.decision.allow){Q(`warn`,`fork-bomb breaker: ${e.decision.reason}; refusing to boot`),YI(1);return}LI=e.registryPath,r.mkdirSync(Pe(),{recursive:!0}),Le(Fe()),CI.useStorage(new sN(Be(),500,Q)),wI.useStorage(fP(Ve(),Q)),wD({anchor:CD(t.env),isAlive:TD,onOrphaned:e=>{Q(`info`,`parent watchdog: ${e}; shutting down`),YI(0)}}),BI(y.createServer({allowHalfOpen:!1},e=>{XI(e)}),Fe(),!1)}function BI(e,n,r){e.removeAllListeners(`error`),e.removeAllListeners(`listening`),e.once(`error`,i=>{if(i.code!==`EADDRINUSE`){Q(`error`,`server error: ${i.message}`),YI(1);return}if(r){Q(`info`,`lost rebind race; another daemon is alive — exiting`),t.exit(0);return}VI(e,n)}),e.listen(n,()=>HI(n))}function VI(e,n){let i=dD(fD(Re(n)),(e,t)=>bD(e,t,{readStartTime:yD,pidAlive:TD}));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}`),YI(1);return}}BI(e,n,!0)}function HI(e){let n=hD(e);if(n.kind!==`present`){Q(`warn`,`no ownable socket at bind callback (${n.kind}); exiting`),YI(0);return}KI(e);try{r.chmodSync(e,384)}catch(e){Q(`warn`,`chmod socket failed: ${e.message}`)}Q(`info`,`daemon up: pid=${t.pid} v=3 sock=${e} heapCap=${Math.round(ne.getHeapStatistics().heap_size_limit/1048576)}MB rssLimit=${Math.round(RI/1048576)}MB`),LT();let i=TI.reset();i!==null&&Q(`warn`,`diagnostic dump wipe failed: ${i}`),PI.arm(),FI.arm(),GI(),UI(e,n.identity)}function UI(e,n){vD({bound:n,myPid:t.pid,readIdentity:()=>hD(e),readLease:()=>fD(Re(e)),shutdown:e=>YI(e),log:Q}).arm()}let WI=null;function GI(){WI=wT(OT(yI.startedAt.getTime(),e=>YI(e),{rssLimitBytes:RI})),WI.arm()}function KI(e){let n=pD(Re(e),{pid:t.pid,version:3,binPath:t.argv[1],startTime:II});n!==null&&Q(`warn`,`lease write failed: ${n}`)}let qI=0,JI=!1;function YI(e){if(!JI){JI=!0,setTimeout(()=>t.kill(t.pid,`SIGKILL`),500);try{xI.close()}catch(e){Q(`warn`,`gitService close failed: ${e.message}`)}try{SI.close()}catch(e){Q(`warn`,`usageStore close failed: ${e.message}`)}try{bI.closeAll()}catch(e){Q(`warn`,`watcherRegistry close failed: ${e.message}`)}try{CI.flush()}catch(e){Q(`warn`,`sessionState flush failed: ${e.message}`)}mD(ze(),t.pid),LI!==null&&MD(LI,t.pid,kD,e=>r.unlinkSync(e)),t.exit(e)}}function XI(e){qI++,yI.inFlight=qI;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:()=>YI(r);try{e.end(qw(n),i)}catch(e){Q(`warn`,`response write failed: ${e.message}`),i?.()}},r=setTimeout(()=>{yI.requestsTimedOut++,n({ok:!1,error:`request exceeded 200ms`,code:`TIMEOUT`,daemonV:3},null)},200),i=Jw(e=>{QI(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),qI=Math.max(0,qI-1),yI.inFlight=qI})}const ZI=e=>({resp:e,exitAfterFlush:null});async function QI(e){if(!e||typeof e!=`object`||typeof e.v!=`number`)return ZI({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 ZI({ok:!0,stats:yI.snapshot({gitCache:xI.getStats(),usageCache:SI.getStats(),renderCacheSize:jI.size,watchersActive:bI.size(),nextRestartReason:WI?.describeNextRestart()??null})});if(e.kind===`render`){yI.requestsTotal++;let t=Date.now();try{let{report:n}=OF(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 yI.requestsErrored++,Q(`warn`,`BAD_REQUEST: ${r.join(`; `)}`),ZI({ok:!1,error:`malformed hookData: ${r.join(`; `)}`,code:`BAD_REQUEST`,daemonV:3});let i=e.hookData.workspace.project_dir,{configFile:a,unknownFlagsError:o}=$I(e.args),s=e.hookData.session_id,c=zw(e),l=JSON.stringify(c);CI.get(s,`client-hints`)!==l&&CI.set(s,pF,l);let u=CI.get(s,`config-override`)??a??c.configEnv,d=jI.getOrCreate(i,e.cwd,u),f=JP({projectDir:i,cwd:e.cwd,configFile:u??null});CI.get(s,`render-origin`)!==f&&CI.set(s,qP,f);let p=c.termCols,m=WF(p??120),h=XD(c.termRows),{authoredRoots:g}=d.state,_=t=>CI.get(e.hookData.session_id,t),v=mk(d.state.config,_,e=>g.has(e)),y=await jk(e.hookData,iL,e.cwd,d.state.neededInputPaths(v.preset),v,c,qk(d.state.config,_).length+Jk(d.state.config,_).length),b=[],x=hk(v,m),S=zM(d.state.config,d.state.compiled,d.state.store,d.state.registry,y,x,{perSegmentSink:d.state.lastRenderCellsBySegment,onRenderWarning:e=>b.push(e)},gk(v)),C=CI.get(e.hookData.session_id,`click.error`);C&&CI.clear(e.hookData.session_id,`click.error`);let ee=[o,d.lastError,C].filter(Boolean).join(`
198
- `),te=FI.notice({sessionId:s,dismissed:CI.get(s,_A),enabled:v.updateNotice}),ne=d.lastError===null?null:d.configFilePath,re=tO(ee,te,[d.lastWarning??``,...b].filter(Boolean).join(`
199
- `)),w=TI.sync(s,re===null?null:rO(re));w!==null&&Q(`warn`,`diagnostic dump failed: ${w}`);let ie=iO(S,re,{fullText:w===null?{kind:`file`,path:TI.pathFor(s)}:{kind:`unavailable`,reason:w},failedConfigFile:ne},{width:m,rowCap:h,colorCompatibility:v.colorCompatibility}),T=Date.now()-t,E=xI.getStats(),ae=SI.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`}`),ZI({ok:!0,output:ie+`
200
- `})}catch(e){throw yI.requestsErrored++,e}}if(e.kind===`click`)return ZI(await aL(e.verb,e.value));if(e.kind===`debug`){if(!UF(e.what))return ZI({ok:!1,error:`unknown debug 'what': ${String(e.what)} (have: ${HF.join(`, `)})`,code:`BAD_REQUEST`,daemonV:3});let t=jI.firstState(),n=t===null?null:{store:t.store,registry:t.registry,config:t.config,compiled:t.compiled,lastRenderBySegment:e.what===`segments`?rL(t.lastRenderCellsBySegment,t.config.globals.charset??`unicode`,t.config.globals.colorCompatibility??`truecolor`):nL};return ZI({ok:!0,debug:jF(e.what,n)})}return ZI({ok:!1,error:`unknown kind`,code:`BAD_REQUEST`,daemonV:3})}function $I(e){let{values:t,tokens:n}=_({args:e.slice(1),options:{config:{type:`string`}},strict:!1,tokens:!0,allowPositionals:!0}),r=[...new Set((n??[]).filter(e=>e.kind===`option`&&e.name!==`config`).map(e=>`--${e.name}`))];return{configFile:Vw(t.config),unknownFlagsError:r.length>0?`Unknown flags: ${r.join(`, `)}`:null}}const eL={sessionState:CI,dlog:Q,applyUpdate:()=>FI.act(),doctor:hP(),memento:AI,claudeInput:AP(),history:wI,configFor:e=>jI.getOrCreate(e.projectDir,e.cwd,e.configFile??void 0).state.config,reloadConfig:e=>jI.reload(e.projectDir,e.cwd,e.configFile??void 0)},tL={style:`powerline`,colorCompatibility:mo,wrap:!0,padding:1,charset:lo,width:1/0},nL=new Map;function rL(e,t,n){let r=new Map;for(let[i,a]of e)r.set(i,YD(a,{...tL,charset:t,colorCompatibility:n}));return r}const iL={gitProvider:xI,usageStore:SI,contextProvider:EI,metricsProvider:DI,activityProvider:OI,tmuxService:kI,mementoProvider:AI,autoCompact:HO,log:Q,clock:()=>new Date,history:e=>wI.depth(e)};function aL(e,t){let n=TF.get(e);if(!n)return{ok:!1,error:`unknown click verb: ${e}`,code:`BAD_REQUEST`,daemonV:3};try{return n(t,eL),{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 oL={connectMs:200,budgetMs:500};async function sL(e){let n=e.includes(`--json`),r=await cL();if(r.kind!==`ok`&&(t.stderr.write(`daemon-stats: ${nT(r)}\n`),t.exit(1)),n){t.stdout.write(JSON.stringify(r.value,null,2)+`
201
- `);return}t.stdout.write(fL(r.value))}function cL(){return Xw({kind:`stats`},oL,e=>`stats`in e?e.stats:void 0)}function lL(e){return e<1024?`${e}B`:e<1024*1024?`${(e/1024).toFixed(1)}KB`:`${(e/1024/1024).toFixed(1)}MB`}function uL(e,t){let n=e+t;return n===0?`n/a`:`${(e/n*100).toFixed(1)}%`}function dL(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 fL(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 ${dL(e.uptimeSec)}`),t.push(` rss ${lL(e.rssBytes)}`),t.push(` heapUsed ${lL(e.heapUsedBytes)}`),t.push(` heapTotal ${lL(e.heapTotalBytes)}`),t.push(` external ${lL(e.externalBytes)}`),t.push(` arrayBuffers ${lL(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 ${uL(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 ${uL(e.usageCache.hits,e.usageCache.misses)} (${e.usageCache.hits} / ${e.usageCache.hits+e.usageCache.misses})`),t.push(` sweeps ${e.usageCache.sweeps}`),t.push(``),t.push(`renderCache`),t.push(` size ${e.renderCache.size}`),t.push(`watchers`),t.push(` active ${e.watchers.active}`),t.push(` opened ${e.watchers.opened}`),t.push(` closed ${e.watchers.closed}`),t.push(` evicted ${e.watchers.evicted}`),t.push(``),t.push(`subprocesses`),t.push(` total ${e.subprocesses.total}`),t.push(` inFlight ${e.subprocesses.inFlight}`),t.push(` lastMinute ${e.subprocesses.lastMinute}`);let n=Object.entries(e.subprocesses.byCategory),r=n.reduce((e,[t])=>Math.max(e,t.length),13);for(let[i,a]of n){let n=e.subprocesses.p50DurationMs[i],o=e.subprocesses.p99DurationMs[i],s=n!==void 0&&o!==void 0?` (p50 ${n}ms · p99 ${o}ms)`:``;t.push(` ${i.padEnd(r)} ${a}${s}`)}return e.nextRestartReason&&(t.push(``),t.push(`nextRestart ${e.nextRestartReason}`)),t.join(`
197
+ `,c.join(e,`lib`),t.sessionId,t.cwd],env:pI(t),timeoutMs:3e3,category:`memento.read`});return n.ok?hI(n.stdout):X(mI(n))}function _I(e,t,n){let r=Oe({bin:c.join(e,lI),args:n.kind===`set`?[`set`,`session`,n.to]:[`clear`,`session`],env:pI(t),timeoutMs:5e3,category:`memento.move`});if(!r.ok)throw Error(mI(r))}function vI(){let e=kE(DE(EE(process.env,process.cwd())));return{locate:t=>fI(e,t),read:gI,move:_I}}var yI=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 bI=new nN;Te(bI.launchStats);const xI=new By({counters:bI,logger:Q}),SI=new Jy({watchers:xI,logger:Q}),CI=new cj,wI=new aN,TI=new rP(wI,Q),EI=new yI(Ke()),DI=new KF,OI=new ZF,kI=new nI,AI=new aI,jI=new sI(vI()),MI=new eN({gitService:SI,sessionState:wI,watchers:xI},{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)}`)}}),NI=60*1e3;function PI(){let e=import.meta.url,n=[];e.startsWith(`file://`)&&n.push(ie(e)),t.argv[1]&&n.push(t.argv[1]);let i=new Map;for(let e of n)try{i.set(e,r.statSync(e).mtimeMs)}catch{}let a=null,o=()=>{for(let[e,t]of i)try{if(r.statSync(e).mtimeMs!==t){Q(`info`,`binary mtime changed (${e}); shutting down`),a&&clearInterval(a),XI(0);return}}catch(e){Q(`warn`,`bin stat failed: ${e.message}`)}};return{arm(){i.size!==0&&(a=setInterval(o,NI),a.unref())},checkNow:o}}const FI=PI(),II=NA({entryUrl:import.meta.url,intervalMs:NI,releaseIntervalMs:216e5,registryUrl:t.env.CC_CANDYBAR_REGISTRY_URL??`https://registry.npmjs.org`,fetchImpl:fetch,onApplied:()=>FI.checkNow(),log:Q});let LI=null,RI=null,zI=0;function BI(){t.on(`uncaughtException`,e=>{Q(`error`,`uncaughtException: ${e.stack||e.message}`),XI(1)}),t.on(`unhandledRejection`,e=>{Q(`error`,`unhandledRejection: ${String(e)}`),XI(1)});for(let e of[`SIGINT`,`SIGTERM`,`SIGHUP`])t.on(e,()=>{Q(`info`,`received ${e}, shutting down`),XI(0)});try{zI=xT(t.env)}catch(e){Q(`error`,`refusing to boot: ${e.message}`),XI(1);return}LI=SD(t.pid);let e=MD(PD(LI));if(!e.decision.allow){Q(`warn`,`fork-bomb breaker: ${e.decision.reason}; refusing to boot`),XI(1);return}RI=e.registryPath,r.mkdirSync(Pe(),{recursive:!0}),Le(Fe()),wI.useStorage(new cN(Be(),500,Q)),TI.useStorage(pP(Ve(),Q)),TD({anchor:wD(t.env),isAlive:ED,onOrphaned:e=>{Q(`info`,`parent watchdog: ${e}; shutting down`),XI(0)}}),VI(y.createServer({allowHalfOpen:!1},e=>{ZI(e)}),Fe(),!1)}function VI(e,n,r){e.removeAllListeners(`error`),e.removeAllListeners(`listening`),e.once(`error`,i=>{if(i.code!==`EADDRINUSE`){Q(`error`,`server error: ${i.message}`),XI(1);return}if(r){Q(`info`,`lost rebind race; another daemon is alive — exiting`),t.exit(0);return}HI(e,n)}),e.listen(n,()=>UI(n))}function HI(e,n){let i=fD(pD(Re(n)),(e,t)=>xD(e,t,{readStartTime:bD,pidAlive:ED}));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}`),XI(1);return}}VI(e,n,!0)}function UI(e){let n=gD(e);if(n.kind!==`present`){Q(`warn`,`no ownable socket at bind callback (${n.kind}); exiting`),XI(0);return}qI(e);try{r.chmodSync(e,384)}catch(e){Q(`warn`,`chmod socket failed: ${e.message}`)}Q(`info`,`daemon up: pid=${t.pid} v=3 sock=${e} heapCap=${Math.round(ne.getHeapStatistics().heap_size_limit/1048576)}MB rssLimit=${Math.round(zI/1048576)}MB`),RT();let i=EI.reset();i!==null&&Q(`warn`,`diagnostic dump wipe failed: ${i}`),FI.arm(),II.arm(),KI(),WI(e,n.identity)}function WI(e,n){yD({bound:n,myPid:t.pid,readIdentity:()=>gD(e),readLease:()=>pD(Re(e)),shutdown:e=>XI(e),log:Q}).arm()}let GI=null;function KI(){GI=TT(kT(bI.startedAt.getTime(),e=>XI(e),{rssLimitBytes:zI})),GI.arm()}function qI(e){let n=mD(Re(e),{pid:t.pid,version:3,binPath:t.argv[1],startTime:LI});n!==null&&Q(`warn`,`lease write failed: ${n}`)}let JI=0,YI=!1;function XI(e){if(!YI){YI=!0,setTimeout(()=>t.kill(t.pid,`SIGKILL`),500);try{SI.close()}catch(e){Q(`warn`,`gitService close failed: ${e.message}`)}try{CI.close()}catch(e){Q(`warn`,`usageStore close failed: ${e.message}`)}try{xI.closeAll()}catch(e){Q(`warn`,`watcherRegistry close failed: ${e.message}`)}try{wI.flush()}catch(e){Q(`warn`,`sessionState flush failed: ${e.message}`)}hD(ze(),t.pid),RI!==null&&ND(RI,t.pid,AD,e=>r.unlinkSync(e)),t.exit(e)}}function ZI(e){JI++,bI.inFlight=JI;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:()=>XI(r);try{e.end(Jw(n),i)}catch(e){Q(`warn`,`response write failed: ${e.message}`),i?.()}},r=setTimeout(()=>{bI.requestsTimedOut++,n({ok:!1,error:`request exceeded 200ms`,code:`TIMEOUT`,daemonV:3},null)},200),i=Yw(e=>{$I(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),JI=Math.max(0,JI-1),bI.inFlight=JI})}const QI=e=>({resp:e,exitAfterFlush:null});async function $I(e){if(!e||typeof e!=`object`||typeof e.v!=`number`)return QI({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 QI({ok:!0,stats:bI.snapshot({gitCache:SI.getStats(),usageCache:CI.getStats(),renderCacheSize:MI.size,watchersActive:xI.size(),nextRestartReason:GI?.describeNextRestart()??null})});if(e.kind===`render`){bI.requestsTotal++;let t=Date.now();try{let{report:n}=kF(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 bI.requestsErrored++,Q(`warn`,`BAD_REQUEST: ${r.join(`; `)}`),QI({ok:!1,error:`malformed hookData: ${r.join(`; `)}`,code:`BAD_REQUEST`,daemonV:3});let i=e.hookData.workspace.project_dir,{configFile:a,unknownFlagsError:o}=eL(e.args),s=e.hookData.session_id,c=Bw(e),l=JSON.stringify(c);wI.get(s,`client-hints`)!==l&&wI.set(s,mF,l);let u=wI.get(s,`config-override`)??a??c.configEnv,d=MI.getOrCreate(i,e.cwd,u),f=YP({projectDir:i,cwd:e.cwd,configFile:u??null});wI.get(s,`render-origin`)!==f&&wI.set(s,JP,f);let p=c.termCols,m=GF(p??120),h=ZD(c.termRows),{authoredRoots:g}=d.state,_=t=>wI.get(e.hookData.session_id,t),v=hk(d.state.config,_,e=>g.has(e)),y=await Mk(e.hookData,aL,e.cwd,d.state.neededInputPaths(v.preset),v,c,Jk(d.state.config,_).length+Yk(d.state.config,_).length),b=[],x=gk(v,m),S=BM(d.state.config,d.state.compiled,d.state.store,d.state.registry,y,x,{perSegmentSink:d.state.lastRenderCellsBySegment,onRenderWarning:e=>b.push(e)},_k(v)),C=wI.get(e.hookData.session_id,`click.error`);C&&wI.clear(e.hookData.session_id,`click.error`);let ee=[o,d.lastError,C].filter(Boolean).join(`
198
+ `),te=II.notice({sessionId:s,dismissed:wI.get(s,vA),enabled:v.updateNotice}),ne=d.lastError===null?null:d.configFilePath,re=nO(ee,te,[d.lastWarning??``,...b].filter(Boolean).join(`
199
+ `)),w=EI.sync(s,re===null?null:iO(re));w!==null&&Q(`warn`,`diagnostic dump failed: ${w}`);let ie=aO(S,re,{fullText:w===null?{kind:`file`,path:EI.pathFor(s)}:{kind:`unavailable`,reason:w},failedConfigFile:ne},{width:m,rowCap:h,colorCompatibility:v.colorCompatibility}),T=Date.now()-t,E=SI.getStats(),ae=CI.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`}`),QI({ok:!0,output:ie+`
200
+ `})}catch(e){throw bI.requestsErrored++,e}}if(e.kind===`click`)return QI(await oL(e.verb,e.value));if(e.kind===`debug`){if(!WF(e.what))return QI({ok:!1,error:`unknown debug 'what': ${String(e.what)} (have: ${UF.join(`, `)})`,code:`BAD_REQUEST`,daemonV:3});let t=MI.firstState(),n=t===null?null:{store:t.store,registry:t.registry,config:t.config,compiled:t.compiled,lastRenderBySegment:e.what===`segments`?iL(t.lastRenderCellsBySegment,t.config.globals.charset??`unicode`,t.config.globals.colorCompatibility??`truecolor`):rL};return QI({ok:!0,debug:MF(e.what,n)})}return QI({ok:!1,error:`unknown kind`,code:`BAD_REQUEST`,daemonV:3})}function eL(e){let{values:t,tokens:n}=_({args:e.slice(1),options:{config:{type:`string`}},strict:!1,tokens:!0,allowPositionals:!0}),r=[...new Set((n??[]).filter(e=>e.kind===`option`&&e.name!==`config`).map(e=>`--${e.name}`))];return{configFile:Hw(t.config),unknownFlagsError:r.length>0?`Unknown flags: ${r.join(`, `)}`:null}}const tL={sessionState:wI,dlog:Q,applyUpdate:()=>II.act(),doctor:gP(),memento:jI,claudeInput:jP(),history:TI,configFor:e=>MI.getOrCreate(e.projectDir,e.cwd,e.configFile??void 0).state.config,reloadConfig:e=>MI.reload(e.projectDir,e.cwd,e.configFile??void 0)},nL={style:`powerline`,colorCompatibility:mo,wrap:!0,padding:1,charset:lo,width:1/0},rL=new Map;function iL(e,t,n){let r=new Map;for(let[i,a]of e)r.set(i,XD(a,{...nL,charset:t,colorCompatibility:n}));return r}const aL={gitProvider:SI,usageStore:CI,contextProvider:DI,metricsProvider:OI,activityProvider:kI,tmuxService:AI,mementoProvider:jI,autoCompact:UO,log:Q,clock:()=>new Date,history:e=>TI.depth(e)};function oL(e,t){let n=EF.get(e);if(!n)return{ok:!1,error:`unknown click verb: ${e}`,code:`BAD_REQUEST`,daemonV:3};try{return n(t,tL),{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 sL={connectMs:200,budgetMs:500};async function cL(e){let n=e.includes(`--json`),r=await lL();if(r.kind!==`ok`&&(t.stderr.write(`daemon-stats: ${rT(r)}\n`),t.exit(1)),n){t.stdout.write(JSON.stringify(r.value,null,2)+`
201
+ `);return}t.stdout.write(pL(r.value))}function lL(){return Zw({kind:`stats`},sL,e=>`stats`in e?e.stats:void 0)}function uL(e){return e<1024?`${e}B`:e<1024*1024?`${(e/1024).toFixed(1)}KB`:`${(e/1024/1024).toFixed(1)}MB`}function dL(e,t){let n=e+t;return n===0?`n/a`:`${(e/n*100).toFixed(1)}%`}function fL(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 pL(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 ${fL(e.uptimeSec)}`),t.push(` rss ${uL(e.rssBytes)}`),t.push(` heapUsed ${uL(e.heapUsedBytes)}`),t.push(` heapTotal ${uL(e.heapTotalBytes)}`),t.push(` external ${uL(e.externalBytes)}`),t.push(` arrayBuffers ${uL(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 ${dL(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 ${dL(e.usageCache.hits,e.usageCache.misses)} (${e.usageCache.hits} / ${e.usageCache.hits+e.usageCache.misses})`),t.push(` sweeps ${e.usageCache.sweeps}`),t.push(``),t.push(`renderCache`),t.push(` size ${e.renderCache.size}`),t.push(`watchers`),t.push(` active ${e.watchers.active}`),t.push(` opened ${e.watchers.opened}`),t.push(` closed ${e.watchers.closed}`),t.push(` evicted ${e.watchers.evicted}`),t.push(``),t.push(`subprocesses`),t.push(` total ${e.subprocesses.total}`),t.push(` inFlight ${e.subprocesses.inFlight}`),t.push(` lastMinute ${e.subprocesses.lastMinute}`);let n=Object.entries(e.subprocesses.byCategory),r=n.reduce((e,[t])=>Math.max(e,t.length),13);for(let[i,a]of n){let n=e.subprocesses.p50DurationMs[i],o=e.subprocesses.p99DurationMs[i],s=n!==void 0&&o!==void 0?` (p50 ${n}ms · p99 ${o}ms)`:``;t.push(` ${i.padEnd(r)} ${a}${s}`)}return e.nextRestartReason&&(t.push(``),t.push(`nextRestart ${e.nextRestartReason}`)),t.join(`
202
202
  `)+`
203
- `}const pL={connectMs:200,budgetMs:500};async function mL(e,n){let r=n.includes(`--json`),i=await hL(e);if(i.kind!==`ok`&&(t.stderr.write(`${e}: ${nT(i)}\n`),t.exit(1)),r){t.stdout.write(JSON.stringify(i.value,null,2)+`
204
- `);return}t.stdout.write(gL(i.value))}function hL(e){return Xw({kind:`debug`,what:e},pL,e=>`debug`in e?e.debug:void 0)}function gL(e){switch(e.what){case`vars`:return _L(e.vars);case`segments`:return vL(e.segments);case`config`:return yL(e.config);default:return e}}function _L(e){if(e.length===0)return`no variables (DSL not active)
205
- `;let t=[`variables (${e.length})`,``],n=e.reduce((e,t)=>Math.max(e,t.name.length),4),r=e.reduce((e,t)=>Math.max(e,(t.source??`—`).length),6),i=e.reduce((e,t)=>Math.max(e,t.type.length),4);for(let a of e){let e=a.ageMs===null?``:` ${xL(a.ageMs)}`,o=a.lastError?` ✗ ${a.lastError.message}`:``;t.push(` ${a.name.padEnd(n)} ${(a.source??`—`).padEnd(r)} ${a.type.padEnd(i)} ${bL(a.value)}${e}${o}`)}return t.join(`
203
+ `}const mL={connectMs:200,budgetMs:500};async function hL(e,n){let r=n.includes(`--json`),i=await gL(e);if(i.kind!==`ok`&&(t.stderr.write(`${e}: ${rT(i)}\n`),t.exit(1)),r){t.stdout.write(JSON.stringify(i.value,null,2)+`
204
+ `);return}t.stdout.write(_L(i.value))}function gL(e){return Zw({kind:`debug`,what:e},mL,e=>`debug`in e?e.debug:void 0)}function _L(e){switch(e.what){case`vars`:return vL(e.vars);case`segments`:return yL(e.segments);case`config`:return bL(e.config);default:return e}}function vL(e){if(e.length===0)return`no variables (DSL not active)
205
+ `;let t=[`variables (${e.length})`,``],n=e.reduce((e,t)=>Math.max(e,t.name.length),4),r=e.reduce((e,t)=>Math.max(e,(t.source??`—`).length),6),i=e.reduce((e,t)=>Math.max(e,t.type.length),4);for(let a of e){let e=a.ageMs===null?``:` ${SL(a.ageMs)}`,o=a.lastError?` ✗ ${a.lastError.message}`:``;t.push(` ${a.name.padEnd(n)} ${(a.source??`—`).padEnd(r)} ${a.type.padEnd(i)} ${xL(a.value)}${e}${o}`)}return t.join(`
206
206
  `)+`
207
- `}function vL(e){if(e.length===0)return`no segments (DSL not active)
207
+ `}function yL(e){if(e.length===0)return`no segments (DSL not active)
208
208
  `;let t=[`segments (${e.length})`,``];for(let n of e){t.push(` ${n.name}`),n.description!==null&&t.push(` shows ${n.description}`),t.push(` template ${n.template}`),n.referencedVars.length>0&&t.push(` vars ${n.referencedVars.join(`, `)}`);for(let{id:e,lastRender:r}of n.placements)r!==null&&t.push(` last ${e}: ${r}`)}return t.join(`
209
209
  `)+`
210
- `}function yL(e){return e===null?`config: DSL not active
210
+ `}function bL(e){return e===null?`config: DSL not active
211
211
  `:JSON.stringify(e,null,2)+`
212
- `}function bL(e){let t=typeof e==`string`?e:JSON.stringify(e);return t.length>60?t.slice(0,57)+`…`:t}function xL(e){return e<1e3?`${e}ms`:e<6e4?`${(e/1e3).toFixed(1)}s`:`${Math.floor(e/6e4)}m`}function SL(){let e=wL();return e===null?null:r.readFileSync(e,`utf-8`)}function CL(){let e;try{e=SL()}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 wL(){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 TL(e){let t=e.CC_CANDYBAR_CONFIG??``;return t===``?void 0:t}const EL=5e3;function DL(e){let t=`/home/tester`,n=Math.floor(Date.now()/1e3);return{hook_event_name:`Status`,session_id:`test0a1b-2c3d-4e5f-6a7b-8c9d0e1f2a3b`,version:`1.15.0`,home:t,cwd:`${t}/code/cc-candybar/src`,transcript_path:`${t}/.claude/projects/x/test.jsonl`,model:{id:`claude-opus-4-8`,display_name:`Opus 4.8`},workspace:{current_dir:`${t}/code/cc-candybar/src`,project_dir:`${t}/code/cc-candybar`},git:{repoName:`cc-candybar`,repoUrl:`https://github.com/promptctl/cc-candybar`,branch:`main`,sha:`abc1234`,ahead:2,behind:1,staged:3,unstaged:2,untracked:1,conflicts:0,upstream:`origin/main`,stash:1,status:`dirty`,operation:`rebase`,timeSinceCommit:780},session:{cost:.39,tokens:241400},today:{cost:12.5,tokens:34e5},context:{totalTokens:48487,contextLeft:24},metrics:{lastResponseTime:8.2,responseTime:4.2,sessionDuration:930,messageCount:8,linesAdded:512,linesRemoved:88},block:{nativeUtilization:63,resetsAt:n+2*3600},weekly:{percentage:21,resetsAt:n+5*86400},cache:{expiresAt:n+900},tmux:{session:`work`},host:{name:`tester-box`,user:`tester`,ssh:!0},autocompact:UO(4e5,1e6),..._k(e),history:{undo:1,redo:1},unsaved:1}}function OL(e,t){let n=ww(e,e),r=Ew(n);return r!==null&&t.push(r),n.kind===`file`?n.path:null}async function kL(e,n=t.cwd()){let i=[],a=e===void 0?OL(n,i):c.resolve(xw(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=Ow(n,n);o!==null&&i.push(o);try{return{kind:`clean`,configPath:a,warnings:i,rendered:await ML(a,n,i)}}catch(e){let t=e;return a!==null&&typeof t==`object`&&t&&typeof t.code==`string`&&t.path===a&&typeof t.message==`string`?{kind:`unreadable`,path:a,message:t.message}:(e instanceof bs&&i.push(...e.warnings),{kind:`fatal`,configPath:a,message:e instanceof bs||e instanceof Error?e.message:String(e),warnings:i})}}async function AL(e,t,n){let r=kw(e,QO);n.push(...r.warnings);let i=Mw(r,e??`<default>`),a=new qM,o=new gb(a,i.globals.default_empty_value??``,void 0,new iN);try{let e=FM(i,o,{cwd:t});n.push(...e.loadWarnings);let r=await o.settled(EL);return r.length>0&&n.push(`source${r.length===1?``:`s`} still running after ${EL} ms, rendered with fallback values: ${r.join(`, `)}`),{config:i,compiled:e,store:a,registry:o}}catch(e){throw o.dispose(),e}}function jL({config:e,compiled:t,store:n,registry:r},i,a){let o=new Map;return{rendered:zM(e,t,n,r,DL(i),hk(i,a),{onSegmentError:(e,t)=>o.set(`segment "${e}"`,t),onRenderWarning:e=>o.set(`globals.palette`,e)},gk(i)),failures:o}}async function ML(e,t,n){let r=await AL(e,t,n),{config:i}=r;try{gA(i);let e=mk(i,()=>null,()=>!1),t=e=>jL(r,e,200),n=t(e),a=t({...e,presetCustomized:!0}),o=[...[...n.failures].map(([e,t])=>`${e}: ${t}`),...[...a.failures].filter(([e])=>!n.failures.has(e)).map(([e,t])=>`${e}: ${t} (under .preset.customized = true)`)];if(o.length>0)throw Error(`config renders with ${o.length} render error${o.length===1?``:`s`} (the daemon would show them on the bar):\n`+o.map(e=>` ${e}`).join(`
213
- `));return n.rendered}finally{r.registry.dispose()}}function NL(e){return e.map(e=>`warning: ${e}\n`).join(``)}function PL(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:NL(e.warnings),code:0};case`fatal`:return{stdout:``,stderr:NL(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 FL=`--render`,IL=`Usage: cc-candybar check [${FL}] [config-file]\n`;function LL(e){let t=e.filter(e=>e.startsWith(`--`)),n=e.filter(e=>!e.startsWith(`--`)),r=t.filter(e=>e!==FL);return r.length>0?{kind:`usage`,message:`check: unknown option ${r.join(` `)}\n${IL}`}:n.length>1||n[0]===``?{kind:`usage`,message:`check: expected at most one non-empty path\n${IL}`}:{kind:`run`,target:n[0],render:t.includes(FL)}}async function RL(e){let n=LL(e),r=n.kind===`usage`?{stdout:``,stderr:n.message,code:2}:PL(await kL(n.target??TL(t.env)),n.render);t.stdout.write(r.stdout),t.stderr.write(r.stderr),t.exit(r.code)}const zL=`${RD}${LD}`;function BL(e){return`${zL}⚠ cc-candybar: ${VL(e)}\n`}function VL(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: ${ID(e.message,60)}`;case`render_failed`:return`render failed: ${ID(e.message,60)}`;case`malformed_response`:return`malformed daemon response: ${ID(e.message,60)}`}}function HL(e){switch(e.kind){case`ok`:return{output:e.value,kick:!1,debug:null};case`transient`:return{output:`
214
- `,kick:!0,debug:`daemon unavailable (transient: ${e.cause}: ${e.message}) — kicking daemon`};case`permanent`:return{output:BL(e),kick:!1,debug:`daemon refused request (permanent: ${e.cause}) — not kicking`}}}function UL(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 WL=` (fix: click the settings menu (${Wc} by default) › 🧰 tools ▸ 🩺 doctor, then [fix] on the bar)`;function GL({check:e,verdict:t}){return t.ok?`✓ ${e.label}\n`:`✗ ${e.label} — ${t.reason}${t.fix===void 0?``:WL}\n`}function KL(e,t,n){let r;try{r=vP(e,{tmux:Mx(t),claudeConfigDir:TE(t,n)})}catch(e){return{stdout:``,stderr:`doctor: ${e instanceof Error?e.message:String(e)}\n`,code:2}}let i=Fx(r);return{stdout:i.map(GL).join(``),stderr:``,code:+!i.every(e=>e.verdict.ok)}}function qL(e){e.length>0&&(t.stderr.write(`doctor: takes no arguments
212
+ `}function xL(e){let t=typeof e==`string`?e:JSON.stringify(e);return t.length>60?t.slice(0,57)+`…`:t}function SL(e){return e<1e3?`${e}ms`:e<6e4?`${(e/1e3).toFixed(1)}s`:`${Math.floor(e/6e4)}m`}function CL(){let e=TL();return e===null?null:r.readFileSync(e,`utf-8`)}function wL(){let e;try{e=CL()}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 TL(){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 EL(e){let t=e.CC_CANDYBAR_CONFIG??``;return t===``?void 0:t}const DL=5e3;function OL(e){let t=`/home/tester`,n=Math.floor(Date.now()/1e3);return{hook_event_name:`Status`,session_id:`test0a1b-2c3d-4e5f-6a7b-8c9d0e1f2a3b`,version:`1.15.0`,home:t,cwd:`${t}/code/cc-candybar/src`,transcript_path:`${t}/.claude/projects/x/test.jsonl`,model:{id:`claude-opus-4-8`,display_name:`Opus 4.8`},workspace:{current_dir:`${t}/code/cc-candybar/src`,project_dir:`${t}/code/cc-candybar`},git:{repoName:`cc-candybar`,repoUrl:`https://github.com/promptctl/cc-candybar`,branch:`main`,sha:`abc1234`,ahead:2,behind:1,staged:3,unstaged:2,untracked:1,conflicts:0,upstream:`origin/main`,stash:1,status:`dirty`,operation:`rebase`,timeSinceCommit:780},session:{cost:.39,tokens:241400},today:{cost:12.5,tokens:34e5},context:{totalTokens:48487,contextLeft:24},metrics:{lastResponseTime:8.2,responseTime:4.2,sessionDuration:930,messageCount:8,linesAdded:512,linesRemoved:88},block:{nativeUtilization:63,resetsAt:n+2*3600},weekly:{percentage:21,resetsAt:n+5*86400},cache:{expiresAt:n+900},tmux:{session:`work`},host:{name:`tester-box`,user:`tester`,ssh:!0},autocompact:WO(4e5,1e6),...vk(e),history:{undo:1,redo:1},unsaved:1}}function kL(e,t){let n=Tw(e,e),r=Dw(n);return r!==null&&t.push(r),n.kind===`file`?n.path:null}async function AL(e,n=t.cwd()){let i=[],a=e===void 0?kL(n,i):c.resolve(Sw(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=kw(n,n);o!==null&&i.push(o);try{return{kind:`clean`,configPath:a,warnings:i,rendered:await NL(a,n,i)}}catch(e){let t=e;return a!==null&&typeof t==`object`&&t&&typeof t.code==`string`&&t.path===a&&typeof t.message==`string`?{kind:`unreadable`,path:a,message:t.message}:(e instanceof bs&&i.push(...e.warnings),{kind:`fatal`,configPath:a,message:e instanceof bs||e instanceof Error?e.message:String(e),warnings:i})}}async function jL(e,t,n){let r=Aw(e,$O);n.push(...r.warnings);let i=Nw(r,e??`<default>`),a=new JM,o=new _b(a,i.globals.default_empty_value??``,void 0,new aN);try{let e=IM(i,o,{cwd:t});n.push(...e.loadWarnings);let r=await o.settled(DL);return r.length>0&&n.push(`source${r.length===1?``:`s`} still running after ${DL} ms, rendered with fallback values: ${r.join(`, `)}`),{config:i,compiled:e,store:a,registry:o}}catch(e){throw o.dispose(),e}}function ML({config:e,compiled:t,store:n,registry:r},i,a){let o=new Map;return{rendered:BM(e,t,n,r,OL(i),gk(i,a),{onSegmentError:(e,t)=>o.set(`segment "${e}"`,t),onRenderWarning:e=>o.set(`globals.palette`,e)},_k(i)),failures:o}}async function NL(e,t,n){let r=await jL(e,t,n),{config:i}=r;try{_A(i);let e=hk(i,()=>null,()=>!1),t=e=>ML(r,e,200),n=t(e),a=t({...e,presetCustomized:!0}),o=[...[...n.failures].map(([e,t])=>`${e}: ${t}`),...[...a.failures].filter(([e])=>!n.failures.has(e)).map(([e,t])=>`${e}: ${t} (under .preset.customized = true)`)];if(o.length>0)throw Error(`config renders with ${o.length} render error${o.length===1?``:`s`} (the daemon would show them on the bar):\n`+o.map(e=>` ${e}`).join(`
213
+ `));return n.rendered}finally{r.registry.dispose()}}function PL(e){return e.map(e=>`warning: ${e}\n`).join(``)}function FL(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:PL(e.warnings),code:0};case`fatal`:return{stdout:``,stderr:PL(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 IL=`--render`,LL=`Usage: cc-candybar check [${IL}] [config-file]\n`;function RL(e){let t=e.filter(e=>e.startsWith(`--`)),n=e.filter(e=>!e.startsWith(`--`)),r=t.filter(e=>e!==IL);return r.length>0?{kind:`usage`,message:`check: unknown option ${r.join(` `)}\n${LL}`}:n.length>1||n[0]===``?{kind:`usage`,message:`check: expected at most one non-empty path\n${LL}`}:{kind:`run`,target:n[0],render:t.includes(IL)}}async function zL(e){let n=RL(e),r=n.kind===`usage`?{stdout:``,stderr:n.message,code:2}:FL(await AL(n.target??EL(t.env)),n.render);t.stdout.write(r.stdout),t.stderr.write(r.stderr),t.exit(r.code)}const BL=`${zD}${RD}`;function VL(e){return`${BL}⚠ cc-candybar: ${HL(e)}\n`}function HL(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: ${LD(e.message,60)}`;case`render_failed`:return`render failed: ${LD(e.message,60)}`;case`malformed_response`:return`malformed daemon response: ${LD(e.message,60)}`}}function UL(e){switch(e.kind){case`ok`:return{output:e.value,kick:!1,debug:null};case`transient`:return{output:`
214
+ `,kick:!0,debug:`daemon unavailable (transient: ${e.cause}: ${e.message}) — kicking daemon`};case`permanent`:return{output:VL(e),kick:!1,debug:`daemon refused request (permanent: ${e.cause}) — not kicking`}}}function WL(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 GL=` (fix: click the settings menu (${Wc} by default) › 🧰 tools ▸ 🩺 doctor, then [fix] on the bar)`;function KL({check:e,verdict:t}){return t.ok?`✓ ${e.label}\n`:`✗ ${e.label} — ${t.reason}${t.fix===void 0?``:GL}\n`}function qL(e,t,n){let r;try{r=yP(e,{tmux:Nx(t),claudeConfigDir:EE(t,n)})}catch(e){return{stdout:``,stderr:`doctor: ${e instanceof Error?e.message:String(e)}\n`,code:2}}let i=Ix(r);return{stdout:i.map(KL).join(``),stderr:``,code:+!i.every(e=>e.verdict.ok)}}function JL(e){e.length>0&&(t.stderr.write(`doctor: takes no arguments
215
215
  Usage: cc-candybar doctor
216
- `),t.exit(2));let n=KL(hP(),t.env,t.cwd());t.stdout.write(n.stdout),t.stderr.write(n.stderr),t.exit(n.code)}function JL(){return UL(t.env.COLUMNS,t.stderr.columns)}function YL(){return UL(t.env.LINES,t.stderr.rows)}const XL=[`SSH_CONNECTION`,`SSH_CLIENT`,`SSH_TTY`],ZL=e=>e.some(e=>t.argv.includes(e));function QL(){return XL.some(e=>(t.env[e]??``)!==``)}function $L(){console.log(rx)}async function eR(){try{ZL(tx.help)&&($L(),t.exit(0)),ZL(tx.version)&&(console.log(`cc-candybar ${wE}`),t.exit(0));let e=t.argv[2];if(e===`install`&&(await lD(t.argv.slice(3)),t.exit(0)),e===`install-url-handler`&&(iD(),t.exit(0)),e===`url-handle`){await oD(t.argv[3]);return}if(e===`daemon`){zI();return}if(e===`daemon-stats`&&(await sL(t.argv.slice(3)),t.exit(0)),e===`check`||e===`lint`){await RL(t.argv.slice(3));return}if(e===`schema`){CL();return}if(e===`doctor`){qL(t.argv.slice(3));return}UF(e)&&(await mL(e,t.argv.slice(3)),t.exit(0)),t.stdin.isTTY===!0&&(console.error(`Error: This tool requires input from Claude Code
216
+ `),t.exit(2));let n=qL(gP(),t.env,t.cwd());t.stdout.write(n.stdout),t.stderr.write(n.stderr),t.exit(n.code)}function YL(){return WL(t.env.COLUMNS,t.stderr.columns)}function XL(){return WL(t.env.LINES,t.stderr.rows)}const ZL=[`SSH_CONNECTION`,`SSH_CLIENT`,`SSH_TTY`],QL=e=>e.some(e=>t.argv.includes(e));function $L(){return ZL.some(e=>(t.env[e]??``)!==``)}function eR(){console.log(ix)}async function tR(){try{QL(nx.help)&&(eR(),t.exit(0)),QL(nx.version)&&(console.log(`cc-candybar ${TE}`),t.exit(0));let e=t.argv[2];if(e===`install`&&(await uD(t.argv.slice(3)),t.exit(0)),e===`install-url-handler`&&(aD(),t.exit(0)),e===`url-handle`){await sD(t.argv[3]);return}if(e===`daemon`){BI();return}if(e===`daemon-stats`&&(await cL(t.argv.slice(3)),t.exit(0)),e===`check`||e===`lint`){await zL(t.argv.slice(3));return}if(e===`schema`){wL();return}if(e===`doctor`){JL(t.argv.slice(3));return}WF(e)&&(await hL(e,t.argv.slice(3)),t.exit(0)),t.stdin.isTTY===!0&&(console.error(`Error: This tool requires input from Claude Code
217
217
 
218
218
  cc-candybar is designed to be used as a Claude Code statusLine command.
219
219
  It reads hook data from stdin and outputs formatted statusline.
@@ -229,4 +229,4 @@ Add to ~/.claude/settings.json:
229
229
  Run with --help for more options.
230
230
 
231
231
  To test output manually:
232
- echo '{"session_id":"test-session","workspace":{"project_dir":"/path/to/project"},"model":{"id":"claude-sonnet-4-5","display_name":"Claude"}}' | cc-candybar --style=powerline`),t.exit(1)),O(`Working directory: ${t.cwd()}`),O(`Process args:`,t.argv);let r=await n(t.stdin);O(`Received hook data:`,JSON.stringify(r,null,2)),r||(console.error(`Error: No input data received from stdin`),$L(),t.exit(1));let i=HL(await oT(r,t.argv,t.cwd(),{termCols:JL(),termRows:YL(),ssh:QL(),tmux:Mx(t.env),configEnv:TL(t.env),claudeConfigDir:TE(t.env,t.cwd())}));i.debug!==null&&O(i.debug),i.kick&&kT(),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)}}eR();export{};
232
+ echo '{"session_id":"test-session","workspace":{"project_dir":"/path/to/project"},"model":{"id":"claude-sonnet-4-5","display_name":"Claude"}}' | cc-candybar --style=powerline`),t.exit(1)),O(`Working directory: ${t.cwd()}`),O(`Process args:`,t.argv);let r=await n(t.stdin);O(`Received hook data:`,JSON.stringify(r,null,2)),r||(console.error(`Error: No input data received from stdin`),eR(),t.exit(1));let i=UL(await sT(r,t.argv,t.cwd(),{termCols:YL(),termRows:XL(),ssh:$L(),tmux:Nx(t.env),configEnv:EL(t.env),claudeConfigDir:EE(t.env,t.cwd())}));i.debug!==null&&O(i.debug),i.kick&&AT(),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)}}tR();export{};