@promptctl/cc-candybar 1.90.0 → 1.91.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import{createRequire as e}from"node:module";import t from"node:process";import{json as n}from"node:stream/consumers";import r,{createReadStream as i,existsSync as a,statSync as o,watch as s}from"node:fs";import c,{basename as l,dirname as u,join as d}from"node:path";import f,{homedir as p}from"node:os";import{spawn as m,spawnSync as h}from"node:child_process";import g from"node:net";import{open as _,readFile as v,readdir as y,stat as b}from"node:fs/promises";import{clearInterval as x,setInterval as S}from"node:timers";import C from"node:v8";import{URL as ee,URLSearchParams as te,fileURLToPath as ne,pathToFileURL as re}from"node:url";import{parseArgs as ie}from"node:util";import ae,{createHash as w}from"node:crypto";import{get as T}from"node:https";import{setTimeout as oe}from"node:timers/promises";import{createInterface as se}from"node:readline";var ce=Object.create,le=Object.defineProperty,ue=Object.getOwnPropertyDescriptor,de=Object.getOwnPropertyNames,fe=Object.getPrototypeOf,pe=Object.prototype.hasOwnProperty,me=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),he=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=de(t),a=0,o=i.length,s;a<o;a++)s=i[a],!pe.call(e,s)&&s!==n&&le(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=ue(t,s))||r.enumerable});return e},ge=(e,t,n)=>(n=e==null?{}:ce(fe(e)),he(t||!e||!e.__esModule?le(n,`default`,{value:e,enumerable:!0}):n,e));function E(e,...t){process.env.CC_CANDYBAR_DEBUG&&console.error(`[DEBUG] ${e}`,...t)}const _e={"click.pbcopy":1e3,"click.open":1e3,"doctor.tmux":1e3},ve=new Map;function ye(e){let t=_e[e];if(t===void 0)return{allowed:!0};let n=ve.get(e);if(n===void 0)return{allowed:!0};let r=Date.now()-n;return r>=t?{allowed:!0}:{allowed:!1,minIntervalMs:t,sinceLastMs:r}}function be(e){ve.set(e,Date.now())}function xe(e){return e.env??process.env}function Se(e,t,n){return{ok:!1,reason:`rate-limited`,stdout:``,stderr:``,exitCode:null,signal:null,error:`rate-limited: ${e} min interval ${t}ms, last start ${n}ms ago`}}let Ce=null;function we(e){Ce=e}function Te(e,t){try{process.kill(-e,t)}catch(e){if(e.code!==`ESRCH`)throw e}}async function Ee(e){if(e.signal?.aborted)return{ok:!1,reason:`aborted`,stdout:``,stderr:``,exitCode:null,signal:null};let t=ye(e.category);if(!t.allowed)return Se(e.category,t.minIntervalMs,t.sinceLastMs);be(e.category);let n=Date.now();return Ce?.onStart(e.category),new Promise(t=>{let r;try{r=m(e.bin,e.args??[],{cwd:e.cwd,env:xe(e),stdio:[`pipe`,`pipe`,`pipe`],detached:!0})}catch(r){Ce?.onEnd(e.category,Date.now()-n),t({ok:!1,reason:`spawn-error`,stdout:``,stderr:``,exitCode:null,signal:null,error:r instanceof Error?r.message:String(r)});return}let i=``,a=``,o=!1,s=null,c=null,l=null,u=()=>h(`aborted`),d=t=>{o||(o=!0,s&&clearTimeout(s),c&&clearTimeout(c),e.signal?.removeEventListener(`abort`,u),Ce?.onEnd(e.category,Date.now()-n),t())},f=e=>d(()=>t(e)),p=(e,t)=>{try{Te(e,t)}catch(e){f({ok:!1,reason:`signal-refused`,stdout:i,stderr:a,exitCode:null,signal:null,error:e instanceof Error?e.message:String(e)})}},h=t=>{l=t,s&&clearTimeout(s),e.signal?.removeEventListener(`abort`,u);let n=r.pid;n!==void 0&&(c=setTimeout(()=>p(n,`SIGKILL`),250),p(n,`SIGTERM`))};r.stdout?.on(`data`,e=>{i+=e.toString(`utf8`)}),r.stderr?.on(`data`,e=>{a+=e.toString(`utf8`)}),r.on(`error`,e=>{f({ok:!1,reason:`spawn-error`,stdout:i,stderr:a,exitCode:null,signal:null,error:e.message})}),r.on(`close`,(e,t)=>{if(l!==null){f({ok:!1,reason:l,stdout:i,stderr:a,exitCode:e,signal:t});return}if(e===0){f({ok:!0,stdout:i,stderr:a,exitCode:e});return}f({ok:!1,reason:t?`signal`:`non-zero`,stdout:i,stderr:a,exitCode:e,signal:t})}),e.timeoutMs&&e.timeoutMs>0&&(s=setTimeout(()=>h(`timeout`),e.timeoutMs)),e.signal?.addEventListener(`abort`,u,{once:!0}),e.stdinInput!==void 0&&r.stdin?r.stdin.end(e.stdinInput):r.stdin&&r.stdin.end()})}function De(e){let t=ye(e.category);if(!t.allowed)return Se(e.category,t.minIntervalMs,t.sinceLastMs);be(e.category);let n=Date.now();Ce?.onStart(e.category);let r=[`pipe`,`pipe`,`pipe`];try{let t=h(e.bin,e.args??[],{cwd:e.cwd,env:xe(e),input:e.stdinInput,timeout:e.timeoutMs&&e.timeoutMs>0?e.timeoutMs:void 0,stdio:r,encoding:`utf8`});Ce?.onEnd(e.category,Date.now()-n);let i=typeof t.stdout==`string`?t.stdout:``,a=typeof t.stderr==`string`?t.stderr:``;if(t.error)return{ok:!1,reason:t.error.code===`ETIMEDOUT`?`timeout`:`spawn-error`,stdout:i,stderr:a,exitCode:null,signal:t.signal??null,error:t.error.message};if(t.status===0)return{ok:!0,stdout:i,stderr:a,exitCode:t.status};let o=e.timeoutMs!==void 0&&e.timeoutMs>0;return{ok:!1,reason:t.signal?o&&t.signal===`SIGTERM`?`timeout`:`signal`:`non-zero`,stdout:i,stderr:a,exitCode:t.status,signal:t.signal??null}}catch(t){return Ce?.onEnd(e.category,Date.now()-n),{ok:!1,reason:`spawn-error`,stdout:``,stderr:``,exitCode:null,signal:null,error:t instanceof Error?t.message:String(t)}}}function Oe(e){let t=ye(e.category);if(!t.allowed)return Se(e.category,t.minIntervalMs,t.sinceLastMs);be(e.category);let n=Date.now();Ce?.onStart(e.category);let r=ke(e);return Ce?.onEnd(e.category,Date.now()-n),r}function ke(e){let t;try{t=m(e.bin,e.args??[],{cwd:e.cwd,env:xe(e),detached:!0,stdio:`ignore`})}catch(e){return{ok:!1,reason:`spawn-error`,stdout:``,stderr:``,exitCode:null,signal:null,error:e instanceof Error?e.message:String(e)}}return t.once(`error`,()=>{}),t.pid===void 0?{ok:!1,reason:`spawn-error`,stdout:``,stderr:``,exitCode:null,signal:null,error:`spawn(${e.bin}): no pid (binary not found or unexecutable)`}:(t.unref(),{ok:!0,stdout:``,stderr:``,exitCode:null})}function Ae(e,t,n){let i=`${e}.tmp`,a=n??r.statSync(e,{throwIfNoEntry:!1})?.mode;try{r.writeFileSync(i,t,a===void 0?{}:{mode:a}),r.renameSync(i,e)}catch(e){throw r.rmSync(i,{force:!0}),e}}function je(e,t){let n=e[t];return n&&n.length>0?n:void 0}function Me(e=process.env){let t=je(e,`XDG_STATE_HOME`)??c.join(f.homedir(),`.local`,`state`);return c.join(t,`cc-candybar`)}function D(){let e=je(process.env,`XDG_CACHE_HOME`)??c.join(f.homedir(),`.cache`);return c.join(e,`cc-candybar`)}function Ne(){return Me()}function Pe(){let e=process.env.CC_CANDYBAR_SOCKET;if(e)return e;let t=f.userInfo().uid;return c.join(`/tmp`,`cc-candybar-${t}`,`socket`)}function Fe(e){r.mkdirSync(e,{recursive:!0,mode:448});let t=r.lstatSync(e);if(t.isSymbolicLink())throw Error(`directory is a symlink: ${e}`);if(!t.isDirectory())throw Error(`not a directory: ${e}`);let n=f.userInfo().uid;if(typeof n==`number`&&t.uid!==n)throw Error(`directory is not owned by uid ${n}: ${e} (owner uid=${t.uid})`);if(t.mode&63)throw Error(`directory has unsafe permissions: ${e} (mode=${(t.mode&511).toString(8)}, expected 0700)`)}function Ie(e){Fe(c.dirname(e));for(let t of[e,Le(e)])try{if(r.lstatSync(t).isSymbolicLink())throw Error(`path is a symlink: ${t}`)}catch(e){if(e.code!==`ENOENT`)throw e}}function Le(e){return`${e}.lease`}function Re(){return Le(Pe())}function ze(){return c.join(Me(),`session-state.json`)}function Be(){return c.join(Me(),`settings-history.json`)}function Ve(){let e=process.env.CC_CANDYBAR_DAEMON_REGISTRY_DIR;if(e)return e;let t=f.userInfo().uid;return c.join(`/tmp`,`cc-candybar-${t}`,`daemons`)}function He(){return c.join(Me(),`spawn.lock`)}function Ue(){return c.join(Me(),`spawn.cooldown`)}function We(){return c.join(Me(),`spawn.backoff`)}function Ge(){return c.join(Me(),`diagnostics`)}function Ke(e=process.env){return c.join(Me(e),`daemon.log`)}var qe=me(((e,t)=>{t.exports.Space_Separator=/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,t.exports.ID_Start=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,t.exports.ID_Continue=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/})),Je=me(((e,t)=>{let n=qe();t.exports={isSpaceSeparator(e){return typeof e==`string`&&n.Space_Separator.test(e)},isIdStartChar(e){return typeof e==`string`&&(e>=`a`&&e<=`z`||e>=`A`&&e<=`Z`||e===`$`||e===`_`||n.ID_Start.test(e))},isIdContinueChar(e){return typeof e==`string`&&(e>=`a`&&e<=`z`||e>=`A`&&e<=`Z`||e>=`0`&&e<=`9`||e===`$`||e===`_`||e===`‌`||e===`‍`||n.ID_Continue.test(e))},isDigit(e){return typeof e==`string`&&/[0-9]/.test(e)},isHexDigit(e){return typeof e==`string`&&/[0-9A-Fa-f]/.test(e)}}})),Ye=me(((e,t)=>{let n=Je(),r,i,a,o,s,c,l,u,d;t.exports=function(e,t){r=String(e),i=`start`,a=[],o=0,s=1,c=0,l=void 0,u=void 0,d=void 0;do l=v(),re[i]();while(l.type!==`eof`);return typeof t==`function`?f({"":d},``,t):d};function f(e,t,n){let r=e[t];if(typeof r==`object`&&r)if(Array.isArray(r))for(let e=0;e<r.length;e++){let t=String(e),i=f(r,t,n);i===void 0?delete r[t]:Object.defineProperty(r,t,{value:i,writable:!0,enumerable:!0,configurable:!0})}else for(let e in r){let t=f(r,e,n);t===void 0?delete r[e]:Object.defineProperty(r,e,{value:t,writable:!0,enumerable:!0,configurable:!0})}return n.call(e,t,r)}let p,m,h,g,_;function v(){for(p=`default`,m=``,h=!1,g=1;;){_=y();let e=x[p]();if(e)return e}}function y(){if(r[o])return String.fromCodePoint(r.codePointAt(o))}function b(){let e=y();return e===`
2
+ import{createRequire as e}from"node:module";import t from"node:process";import{json as n}from"node:stream/consumers";import r,{createReadStream as i,existsSync as a,statSync as o,watch as s}from"node:fs";import c,{basename as l,dirname as u,join as d}from"node:path";import f,{homedir as p}from"node:os";import{spawn as m,spawnSync as h}from"node:child_process";import g from"node:net";import{open as _,readFile as v,readdir as y,stat as b}from"node:fs/promises";import{clearInterval as x,setInterval as S}from"node:timers";import C from"node:v8";import{URL as ee,URLSearchParams as te,fileURLToPath as ne,pathToFileURL as re}from"node:url";import{parseArgs as ie}from"node:util";import ae,{createHash as w}from"node:crypto";import{get as T}from"node:https";import{setTimeout as oe}from"node:timers/promises";import{createInterface as se}from"node:readline";var ce=Object.create,le=Object.defineProperty,ue=Object.getOwnPropertyDescriptor,de=Object.getOwnPropertyNames,fe=Object.getPrototypeOf,pe=Object.prototype.hasOwnProperty,me=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),he=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=de(t),a=0,o=i.length,s;a<o;a++)s=i[a],!pe.call(e,s)&&s!==n&&le(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=ue(t,s))||r.enumerable});return e},ge=(e,t,n)=>(n=e==null?{}:ce(fe(e)),he(t||!e||!e.__esModule?le(n,`default`,{value:e,enumerable:!0}):n,e));function E(e,...t){process.env.CC_CANDYBAR_DEBUG&&console.error(`[DEBUG] ${e}`,...t)}const _e={"click.pbcopy":1e3,"click.open":1e3,"doctor.tmux":1e3,"claude-input.type":1e3},ve=new Map;function ye(e){let t=_e[e];if(t===void 0)return{allowed:!0};let n=ve.get(e);if(n===void 0)return{allowed:!0};let r=Date.now()-n;return r>=t?{allowed:!0}:{allowed:!1,minIntervalMs:t,sinceLastMs:r}}function be(e){ve.set(e,Date.now())}function xe(e){return e.env??process.env}function Se(e,t,n){return{ok:!1,reason:`rate-limited`,stdout:``,stderr:``,exitCode:null,signal:null,error:`rate-limited: ${e} min interval ${t}ms, last start ${n}ms ago`}}let Ce=null;function we(e){Ce=e}function Te(e,t){try{process.kill(-e,t)}catch(e){if(e.code!==`ESRCH`)throw e}}async function Ee(e){if(e.signal?.aborted)return{ok:!1,reason:`aborted`,stdout:``,stderr:``,exitCode:null,signal:null};let t=ye(e.category);if(!t.allowed)return Se(e.category,t.minIntervalMs,t.sinceLastMs);be(e.category);let n=Date.now();return Ce?.onStart(e.category),new Promise(t=>{let r;try{r=m(e.bin,e.args??[],{cwd:e.cwd,env:xe(e),stdio:[`pipe`,`pipe`,`pipe`],detached:!0})}catch(r){Ce?.onEnd(e.category,Date.now()-n),t({ok:!1,reason:`spawn-error`,stdout:``,stderr:``,exitCode:null,signal:null,error:r instanceof Error?r.message:String(r)});return}let i=``,a=``,o=!1,s=null,c=null,l=null,u=()=>h(`aborted`),d=t=>{o||(o=!0,s&&clearTimeout(s),c&&clearTimeout(c),e.signal?.removeEventListener(`abort`,u),Ce?.onEnd(e.category,Date.now()-n),t())},f=e=>d(()=>t(e)),p=(e,t)=>{try{Te(e,t)}catch(e){f({ok:!1,reason:`signal-refused`,stdout:i,stderr:a,exitCode:null,signal:null,error:e instanceof Error?e.message:String(e)})}},h=t=>{l=t,s&&clearTimeout(s),e.signal?.removeEventListener(`abort`,u);let n=r.pid;n!==void 0&&(c=setTimeout(()=>p(n,`SIGKILL`),250),p(n,`SIGTERM`))};r.stdout?.on(`data`,e=>{i+=e.toString(`utf8`)}),r.stderr?.on(`data`,e=>{a+=e.toString(`utf8`)}),r.on(`error`,e=>{f({ok:!1,reason:`spawn-error`,stdout:i,stderr:a,exitCode:null,signal:null,error:e.message})}),r.on(`close`,(e,t)=>{if(l!==null){f({ok:!1,reason:l,stdout:i,stderr:a,exitCode:e,signal:t});return}if(e===0){f({ok:!0,stdout:i,stderr:a,exitCode:e});return}f({ok:!1,reason:t?`signal`:`non-zero`,stdout:i,stderr:a,exitCode:e,signal:t})}),e.timeoutMs&&e.timeoutMs>0&&(s=setTimeout(()=>h(`timeout`),e.timeoutMs)),e.signal?.addEventListener(`abort`,u,{once:!0}),e.stdinInput!==void 0&&r.stdin?r.stdin.end(e.stdinInput):r.stdin&&r.stdin.end()})}function De(e){let t=ye(e.category);if(!t.allowed)return Se(e.category,t.minIntervalMs,t.sinceLastMs);be(e.category);let n=Date.now();Ce?.onStart(e.category);let r=[`pipe`,`pipe`,`pipe`];try{let t=h(e.bin,e.args??[],{cwd:e.cwd,env:xe(e),input:e.stdinInput,timeout:e.timeoutMs&&e.timeoutMs>0?e.timeoutMs:void 0,stdio:r,encoding:`utf8`});Ce?.onEnd(e.category,Date.now()-n);let i=typeof t.stdout==`string`?t.stdout:``,a=typeof t.stderr==`string`?t.stderr:``;if(t.error)return{ok:!1,reason:t.error.code===`ETIMEDOUT`?`timeout`:`spawn-error`,stdout:i,stderr:a,exitCode:null,signal:t.signal??null,error:t.error.message};if(t.status===0)return{ok:!0,stdout:i,stderr:a,exitCode:t.status};let o=e.timeoutMs!==void 0&&e.timeoutMs>0;return{ok:!1,reason:t.signal?o&&t.signal===`SIGTERM`?`timeout`:`signal`:`non-zero`,stdout:i,stderr:a,exitCode:t.status,signal:t.signal??null}}catch(t){return Ce?.onEnd(e.category,Date.now()-n),{ok:!1,reason:`spawn-error`,stdout:``,stderr:``,exitCode:null,signal:null,error:t instanceof Error?t.message:String(t)}}}function Oe(e){let t=ye(e.category);if(!t.allowed)return Se(e.category,t.minIntervalMs,t.sinceLastMs);be(e.category);let n=Date.now();Ce?.onStart(e.category);let r=ke(e);return Ce?.onEnd(e.category,Date.now()-n),r}function ke(e){let t;try{t=m(e.bin,e.args??[],{cwd:e.cwd,env:xe(e),detached:!0,stdio:`ignore`})}catch(e){return{ok:!1,reason:`spawn-error`,stdout:``,stderr:``,exitCode:null,signal:null,error:e instanceof Error?e.message:String(e)}}return t.once(`error`,()=>{}),t.pid===void 0?{ok:!1,reason:`spawn-error`,stdout:``,stderr:``,exitCode:null,signal:null,error:`spawn(${e.bin}): no pid (binary not found or unexecutable)`}:(t.unref(),{ok:!0,stdout:``,stderr:``,exitCode:null})}function Ae(e,t,n){let i=`${e}.tmp`,a=n??r.statSync(e,{throwIfNoEntry:!1})?.mode;try{r.writeFileSync(i,t,a===void 0?{}:{mode:a}),r.renameSync(i,e)}catch(e){throw r.rmSync(i,{force:!0}),e}}function je(e,t){let n=e[t];return n&&n.length>0?n:void 0}function Me(e=process.env){let t=je(e,`XDG_STATE_HOME`)??c.join(f.homedir(),`.local`,`state`);return c.join(t,`cc-candybar`)}function D(){let e=je(process.env,`XDG_CACHE_HOME`)??c.join(f.homedir(),`.cache`);return c.join(e,`cc-candybar`)}function Ne(){return Me()}function Pe(){let e=process.env.CC_CANDYBAR_SOCKET;if(e)return e;let t=f.userInfo().uid;return c.join(`/tmp`,`cc-candybar-${t}`,`socket`)}function Fe(e){r.mkdirSync(e,{recursive:!0,mode:448});let t=r.lstatSync(e);if(t.isSymbolicLink())throw Error(`directory is a symlink: ${e}`);if(!t.isDirectory())throw Error(`not a directory: ${e}`);let n=f.userInfo().uid;if(typeof n==`number`&&t.uid!==n)throw Error(`directory is not owned by uid ${n}: ${e} (owner uid=${t.uid})`);if(t.mode&63)throw Error(`directory has unsafe permissions: ${e} (mode=${(t.mode&511).toString(8)}, expected 0700)`)}function Ie(e){Fe(c.dirname(e));for(let t of[e,Le(e)])try{if(r.lstatSync(t).isSymbolicLink())throw Error(`path is a symlink: ${t}`)}catch(e){if(e.code!==`ENOENT`)throw e}}function Le(e){return`${e}.lease`}function Re(){return Le(Pe())}function ze(){return c.join(Me(),`session-state.json`)}function Be(){return c.join(Me(),`settings-history.json`)}function Ve(){let e=process.env.CC_CANDYBAR_DAEMON_REGISTRY_DIR;if(e)return e;let t=f.userInfo().uid;return c.join(`/tmp`,`cc-candybar-${t}`,`daemons`)}function He(){return c.join(Me(),`spawn.lock`)}function Ue(){return c.join(Me(),`spawn.cooldown`)}function We(){return c.join(Me(),`spawn.backoff`)}function Ge(){return c.join(Me(),`diagnostics`)}function Ke(e=process.env){return c.join(Me(e),`daemon.log`)}var qe=me(((e,t)=>{t.exports.Space_Separator=/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,t.exports.ID_Start=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,t.exports.ID_Continue=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/})),Je=me(((e,t)=>{let n=qe();t.exports={isSpaceSeparator(e){return typeof e==`string`&&n.Space_Separator.test(e)},isIdStartChar(e){return typeof e==`string`&&(e>=`a`&&e<=`z`||e>=`A`&&e<=`Z`||e===`$`||e===`_`||n.ID_Start.test(e))},isIdContinueChar(e){return typeof e==`string`&&(e>=`a`&&e<=`z`||e>=`A`&&e<=`Z`||e>=`0`&&e<=`9`||e===`$`||e===`_`||e===`‌`||e===`‍`||n.ID_Continue.test(e))},isDigit(e){return typeof e==`string`&&/[0-9]/.test(e)},isHexDigit(e){return typeof e==`string`&&/[0-9A-Fa-f]/.test(e)}}})),Ye=me(((e,t)=>{let n=Je(),r,i,a,o,s,c,l,u,d;t.exports=function(e,t){r=String(e),i=`start`,a=[],o=0,s=1,c=0,l=void 0,u=void 0,d=void 0;do l=v(),re[i]();while(l.type!==`eof`);return typeof t==`function`?f({"":d},``,t):d};function f(e,t,n){let r=e[t];if(typeof r==`object`&&r)if(Array.isArray(r))for(let e=0;e<r.length;e++){let t=String(e),i=f(r,t,n);i===void 0?delete r[t]:Object.defineProperty(r,t,{value:i,writable:!0,enumerable:!0,configurable:!0})}else for(let e in r){let t=f(r,e,n);t===void 0?delete r[e]:Object.defineProperty(r,e,{value:t,writable:!0,enumerable:!0,configurable:!0})}return n.call(e,t,r)}let p,m,h,g,_;function v(){for(p=`default`,m=``,h=!1,g=1;;){_=y();let e=x[p]();if(e)return e}}function y(){if(r[o])return String.fromCodePoint(r.codePointAt(o))}function b(){let e=y();return e===`
3
3
  `?(s++,c=0):e?c+=e.length:c++,e&&(o+=e.length),e}let x={default(){switch(_){case` `:case`\v`:case`\f`:case` `:case`\xA0`:case``:case`
4
4
  `:case`\r`:case`\u2028`:case`\u2029`:b();return;case`/`:b(),p=`comment`;return;case void 0:return b(),S(`eof`)}if(n.isSpaceSeparator(_)){b();return}return x[i]()},comment(){switch(_){case`*`:b(),p=`multiLineComment`;return;case`/`:b(),p=`singleLineComment`;return}throw w(b())},multiLineComment(){switch(_){case`*`:b(),p=`multiLineCommentAsterisk`;return;case void 0:throw w(b())}b()},multiLineCommentAsterisk(){switch(_){case`*`:b();return;case`/`:b(),p=`default`;return;case void 0:throw w(b())}b(),p=`multiLineComment`},singleLineComment(){switch(_){case`
5
5
  `:case`\r`:case`\u2028`:case`\u2029`:b(),p=`default`;return;case void 0:return b(),S(`eof`)}b()},value(){switch(_){case`{`:case`[`:return S(`punctuator`,b());case`n`:return b(),C(`ull`),S(`null`,null);case`t`:return b(),C(`rue`),S(`boolean`,!0);case`f`:return b(),C(`alse`),S(`boolean`,!1);case`-`:case`+`:b()===`-`&&(g=-1),p=`sign`;return;case`.`:m=b(),p=`decimalPointLeading`;return;case`0`:m=b(),p=`zero`;return;case`1`:case`2`:case`3`:case`4`:case`5`:case`6`:case`7`:case`8`:case`9`:m=b(),p=`decimalInteger`;return;case`I`:return b(),C(`nfinity`),S(`numeric`,1/0);case`N`:return b(),C(`aN`),S(`numeric`,NaN);case`"`:case`'`:h=b()===`"`,m=``,p=`string`;return}throw w(b())},identifierNameStartEscape(){if(_!==`u`)throw w(b());b();let e=ne();switch(e){case`$`:case`_`:break;default:if(!n.isIdStartChar(e))throw oe();break}m+=e,p=`identifierName`},identifierName(){switch(_){case`$`:case`_`:case`‌`:case`‍`:m+=b();return;case`\\`:b(),p=`identifierNameEscape`;return}if(n.isIdContinueChar(_)){m+=b();return}return S(`identifier`,m)},identifierNameEscape(){if(_!==`u`)throw w(b());b();let e=ne();switch(e){case`$`:case`_`:case`‌`:case`‍`:break;default:if(!n.isIdContinueChar(e))throw oe();break}m+=e,p=`identifierName`},sign(){switch(_){case`.`:m=b(),p=`decimalPointLeading`;return;case`0`:m=b(),p=`zero`;return;case`1`:case`2`:case`3`:case`4`:case`5`:case`6`:case`7`:case`8`:case`9`:m=b(),p=`decimalInteger`;return;case`I`:return b(),C(`nfinity`),S(`numeric`,g*(1/0));case`N`:return b(),C(`aN`),S(`numeric`,NaN)}throw w(b())},zero(){switch(_){case`.`:m+=b(),p=`decimalPoint`;return;case`e`:case`E`:m+=b(),p=`decimalExponent`;return;case`x`:case`X`:m+=b(),p=`hexadecimal`;return}return S(`numeric`,g*0)},decimalInteger(){switch(_){case`.`:m+=b(),p=`decimalPoint`;return;case`e`:case`E`:m+=b(),p=`decimalExponent`;return}if(n.isDigit(_)){m+=b();return}return S(`numeric`,g*Number(m))},decimalPointLeading(){if(n.isDigit(_)){m+=b(),p=`decimalFraction`;return}throw w(b())},decimalPoint(){switch(_){case`e`:case`E`:m+=b(),p=`decimalExponent`;return}if(n.isDigit(_)){m+=b(),p=`decimalFraction`;return}return S(`numeric`,g*Number(m))},decimalFraction(){switch(_){case`e`:case`E`:m+=b(),p=`decimalExponent`;return}if(n.isDigit(_)){m+=b();return}return S(`numeric`,g*Number(m))},decimalExponent(){switch(_){case`+`:case`-`:m+=b(),p=`decimalExponentSign`;return}if(n.isDigit(_)){m+=b(),p=`decimalExponentInteger`;return}throw w(b())},decimalExponentSign(){if(n.isDigit(_)){m+=b(),p=`decimalExponentInteger`;return}throw w(b())},decimalExponentInteger(){if(n.isDigit(_)){m+=b();return}return S(`numeric`,g*Number(m))},hexadecimal(){if(n.isHexDigit(_)){m+=b(),p=`hexadecimalInteger`;return}throw w(b())},hexadecimalInteger(){if(n.isHexDigit(_)){m+=b();return}return S(`numeric`,g*Number(m))},string(){switch(_){case`\\`:b(),m+=ee();return;case`"`:if(h)return b(),S(`string`,m);m+=b();return;case`'`:if(!h)return b(),S(`string`,m);m+=b();return;case`
@@ -36,24 +36,24 @@ import{createRequire as e}from"node:module";import t from"node:process";import{j
36
36
  `}function xo(e,t,n){return e.split(`
37
37
  `).join(`${n}${t}`)}function So(e,t,n){let[r,...i]=e,a=i.length===0?t:`{\n ${xo(So(i,t,n),` `,`
38
38
  `)}${n.trailingComma}\n}`;return`${n.key(r)}: ${a}`}function Co(e,t,n,r){return e.slice(0,t)+r+e.slice(n)}function wo(e,t){return e.lastIndexOf(`
39
- `,t-1)+1}function To(e){return/^[ \t]*$/.test(e)}function Eo(e,t){let n=wo(e,t);return/^[ \t]*/.exec(e.slice(n))[0]}function Do(e,t){return To(e.slice(wo(e,t),t))}const Oo=/(?:\/\/[^\n]*?)?(\r\n|\n|$)/y;function ko(e,t){let n=t;for(;n<e.length&&(e[n]===` `||e[n]===` `);)n++;let r=e[n]===`,`?n+1:-1;for(r!==-1&&(n=r);n<e.length&&(e[n]===` `||e[n]===` `);)n++;Oo.lastIndex=n;let i=Oo.exec(e);if(i===null)return{commaEnd:r,line:null};let a=n+i[0].length;return{commaEnd:r,line:{at:a-i[1].length,next:a}}}function Ao(e,t){let{commaEnd:n,line:r}=ko(e,t.end);if(Do(e,t.start)&&r!==null)return Co(e,wo(e,t.start),r.next,``);if(n!==-1){let r=n;for(;r<e.length&&e[r]===` `;)r++;return Co(e,t.start,r,``)}let i=t.start;for(;i>0&&(e[i-1]===` `||e[i-1]===` `);)i--;return e[i-1]===`,`?Co(e,i-1,t.end,``):Co(e,t.start,t.end,``)}function jo(e,t,n,r,i){let a=n.commaEnd!==-1,o=a?e:Co(e,t.end,t.end,`,`),s=n.line.at+ +!a,c=bo(e);return Co(o,s,s,`${c}${i}${xo(r,i,c)}${a?`,`:``}`)}function Mo(e,t,n,r){let i=t.kind===`object`?t.entries:t.elements,a=i[i.length-1],o=Eo(e,t.span.start);if(a===void 0){let i=o+` `,a=bo(e);return Co(e,t.span.start+1,t.span.end-1,`${a}${i}${xo(n,i,a)}${r.trailingComma}${a}${o}`)}let{commaEnd:s,line:c}=ko(e,a.span.end);if(Do(e,a.span.start)&&c!==null){let t=e.slice(wo(e,a.span.start),a.span.start);return jo(e,a.span,{commaEnd:s,line:c},n,t)}let l=s===-1?a.span.end:s;return Co(e,l,l,`${s===-1?`, `:` `}${n}${s===-1?``:`,`}`)}function No(e,t,n,r){if(t.length===0)throw new no(`setValue needs a non-empty path`,0);if(/^\s*$/.test(e)){let i=bo(e);return`{${i} ${xo(So(t,n,r),` `,i)}${r.trailingComma}${i}}${i}`}let i=co(e);for(let a=0;a<t.length;a++){if(i.kind!==`object`)throw new no(`cannot set ${t.join(`.`)}: ${t.slice(0,a).join(`.`)||`the document`} is not an object`,i.span.start);let o=lo(i,t[a]);if(o===void 0)return Mo(e,i,So(t.slice(a),n,r),r);if(a===t.length-1){let t=Eo(e,o.keySpan.start);return Co(e,o.value.span.start,o.value.span.end,xo(n,t,bo(e)))}i=o.value}throw new no(`unreachable: path exhausted`,0)}function Po(e,t,n=0){if(t.length===0)throw new no(`deleteValue needs a non-empty path`,0);if(/^\s*$/.test(e))return e;let r=t.slice(0,-1),i=uo(co(e),r),a=i===void 0?void 0:lo(i,t[t.length-1]);if(a===void 0||i?.kind!==`object`)return e;let o=Ao(e,a.span);return r.length>n&&i.entries.length===1?Po(o,r,n):o}const Fo=[`h`,`v`,`children`];function Io(e){if(e.kind===`string`)return e.value;if(e.kind!==`object`)return;let t=lo(e,`seg`)?.value,n=lo(e,`kind`)?.value,r=lo(e,`name`)?.value,i=t?.kind===`string`?t.value:n?.kind===`string`&&n.value===`segment`&&r?.kind===`string`?r.value:void 0;if(i===void 0)return;let a=lo(e,`id`)?.value;return a?.kind===`string`?a.value:i}function Lo(e){return e.kind===`object`?Fo.map(t=>lo(e,t)?.value).filter(e=>e?.kind===`array`):[]}function Ro(e){let t=lo(e,`rows`)?.value;return t?.kind===`object`?t.entries:null}function zo(e){if(e.kind!==`object`)return!0;let t=Ro(e);return t===null||t.length>0||e.entries.some(e=>e.key!==`rows`)}function*Bo(e,t){yield{node:e,bareAt:t};for(let t of Lo(e))for(let e of t.elements)yield*Bo(e,null);for(let n of Ro(e)??[])yield*Bo(n.value,t===null?null:[...t,`rows`,n.key])}function Vo(e,t){for(let{node:n}of Bo(e,null))if(Io(n)===t)return!0;return!1}function Ho(e,t,n){let r=uo(co(e),t);if(r===void 0)return null;for(let{node:i,bareAt:a}of Bo(r,t))if(Io(i)===n)return a===null?{text:e,ref:i}:Ho(No(e,a,`{ h: [${fo(e,i)}] }`,_o),t,n);return null}function Uo(e,t,n){let r=Ho(e,t,n);return r===null?null:Ao(r.text,r.ref.span)}function Wo(e,t,n,r,i){let a=Ho(e,t,r);if(a===null)return null;let{text:o,ref:s}=a,c=n.id===void 0?JSON.stringify(n.seg):`{ seg: ${JSON.stringify(n.seg)}, id: ${JSON.stringify(n.id)} }`,{commaEnd:l,line:u}=ko(o,s.span.end);if(Do(o,s.span.start)&&u!==null){let e=o.slice(wo(o,s.span.start),s.span.start);return i===`after`?jo(o,s.span,{commaEnd:l,line:u},c,e):Co(o,s.span.start,s.span.start,`${c},${bo(o)}${e}`)}let d=fo(o,s),f=i===`before`?`${c}, ${d}`:`${d}, ${c}`;return Co(o,s.span.start,s.span.end,f)}var Go=class extends Error{file;issues;warnings;constructor(e,t,n=[]){super(Yo(e,t)),this.name=`ConfigError`,this.file=e,this.issues=t,this.warnings=n}};function U(e,t){let n=0,r;for(let i of t){if(i===``||/^\d+$/.test(i))continue;let t=Ko(e,n,i);if(t===-1)return r===void 0?void 0:qo(e,r);n=t,r=t}return r===void 0?void 0:qo(e,r)}function Ko(e,t,n){let r=n.replace(/[\\^$.*+?()[\]{}|]/g,`\\$&`),i=RegExp(`(?:["']${r}["']|\\b${r}\\b)\\s*:`,`g`);i.lastIndex=t;let a=i.exec(e);return a?a.index:-1}function qo(e,t){let n=1;for(let r=0;r<t&&r<e.length;r++)e.charCodeAt(r)===10&&n++;return n}function Jo(e,t){try{return co(t),null}catch(n){if(!(n instanceof no))throw n;return`${e}:${qo(t,n.offset)}: ${n.reason} — the settings menu cannot edit this file until it is fixed`}}function Yo(e,t){if(t.length===0)return`${e}: invalid config (no details)`;let n=[`Invalid config in ${e} (${t.length} issue${t.length===1?``:`s`}):`];for(let e of t){let t=[];e.line!==void 0&&t.push(`line ${e.line}${e.col===void 0?``:`:${e.col}`}`),e.path&&t.push(e.path);let r=t.length>0?`[${t.join(` • `)}] `:``;n.push(` ${r}${e.message}`)}return n.join(`
40
- `)}const Xo=[`vertical`,`horizontal`],Zo={vertical:`row`,horizontal:`cell`};function Qo(e){return e.id??e.name}function $o(e){return[...ns(e)].flatMap(e=>e.kind===`segment`?[Qo(e)]:[])}function es(e,t){if(!t.has(e))return e;let n=2;for(;t.has(`${e}-${n}`);)n++;return`${e}-${n}`}function ts(e,t){return e.opens===void 0?e:{...e,opens:{...e.opens,body:t(e.opens.body)}}}function*ns(e){yield e;for(let t of os(e))yield*ns(t)}const rs=(e,t)=>`${e}.children[${t}]`,is=e=>`${e}.opens.body`;function*as(e,t){if(yield[e,t],e.kind===`container`)for(let[n,r]of e.children.entries())yield*as(r,rs(t,n));else e.opens!==void 0&&(yield*as(e.opens.body,is(t)))}function os(e){return e.kind===`container`?e.children:e.opens===void 0?[]:[e.opens.body]}function ss(e){return e===void 0||`text`in e?`text`:`regex`in e?`regex`:`json`}const cs=[`ttl`,`watch_file`,`depends_on`,`key`,`never`];function ls(e){return e.kind!==`literal`&&e.kind!==`input`&&e.kind!==`env`&&e.kind!==`state`}const us=[`branch`,`sha`,`dirty`,`ahead`,`behind`,`stash`],ds=[`file`,`shell`,`git`];function fs(e,t){let{domain:n}=e;return n===`bool`?typeof t==`boolean`:`min`in n?typeof t==`number`&&Number.isInteger(t)&&t>=n.min&&t<=n.max:typeof t==`string`&&n.includes(t)}function ps(e){let{domain:t}=e;return t===`bool`?`true or false`:`min`in t?`an integer from ${t.min} to ${t.max}`:`one of ${t.map(e=>JSON.stringify(e)).join(`, `)}`}const ms=[`left`,`center`,`right`],hs=[`right`,`left`,`middle`];function gs(e,t,n,r){let i=n[r];return typeof i==`string`?i:(e.issues.push({path:`${t}.${r}`,message:`${t}.${r} must be a string, got ${Ss(i)}`,line:U(e.source,[...t.split(`.`),r])}),null)}function _s(e,t,n,r){let i=n.default;if(i!==void 0){if(!(r===`string`&&typeof i==`string`||r===`number`&&typeof i==`number`||r===`boolean`&&typeof i==`boolean`)){e.issues.push({path:`${t}.default`,message:`default must be a ${r}, got ${Ss(i)}`,line:U(e.source,[...t.split(`.`),`default`])});return}return i}}function vs(e,t,n,r){let i=n[r];if(i!==void 0){if(typeof i!=`string`){e.issues.push({path:`${t}.${r}`,message:`${t}.${r} must be a string, got ${Ss(i)}`,line:U(e.source,[...t.split(`.`),r])});return}return i}}function ys(e,t,n){let r=vs(e,t,n,`palette`);if(r!==void 0){if(!e.allowedPalettes.has(r)){e.issues.push({path:`${t}.palette`,message:`Unknown palette "${r}". Expected one of: ${[...e.allowedPalettes].sort().join(`, `)}`,line:U(e.source,[...t.split(`.`),`palette`])});return}return r}}function bs(e,t,n,r,i){let a=n[r];if(a!==void 0){if(typeof a!=`string`||!i.includes(a)){e.issues.push({path:`${t}.${r}`,message:`${t}.${r} must be one of: ${i.join(`, `)}; got ${W(a)}`,line:U(e.source,[...t.split(`.`),r])});return}return a}}function xs(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Ss(e){return e===null?`null`:Array.isArray(e)?`array`:typeof e}function W(e){return typeof e==`string`?JSON.stringify(e):e===void 0?`undefined`:String(e)}function Cs(e,t,n,r){return xs(r)?(Es(e,n,r,t.noun,new Set(Object.keys(t.fields))),ws(e,t.fields,n,r)):(e.issues.push({path:n,message:`${n} must be an object, got ${Ss(r)}`,line:U(e.source,n.split(`.`))}),null)}function ws(e,t,n,r){let i=t,a={},o=!0;for(let[t,s]of Object.entries(i)){let i=s.parse(e,n,t,r);i===void 0?s.required&&(o=!1):a[t]=i}return o?a:null}const Ts=new Set;function Es(e,t,n,r,i,a=Ts){for(let o of Object.keys(n))!i.has(o)&&!a.has(`${t}.${o}`)&&e.issues.push({path:`${t}.${o}`,message:`Unknown ${r} "${o}". Expected one of: ${[...i].join(`, `)}`,line:U(e.source,[...t.split(`.`),o])})}function Ds(e,t,n){return e.issues.push({path:t,message:n,line:U(e.source,t.split(`.`))}),null}function Os(e,t,n,r){if(!xs(r))return e.issues.push({path:n,message:`${t.noun} must be an object, got ${Ss(r)}`,line:U(e.source,n.split(`.`))}),null;let i=t.arms,a=Object.keys(i),o=Object.keys(r).filter(e=>e in i),s=Object.keys(r).filter(e=>!(e in i));for(let r of s)e.issues.push({path:`${n}.${r}`,message:`Unknown ${t.noun} key "${r}". Expected exactly one of: ${a.join(`, `)}`,line:U(e.source,[...n.split(`.`),r])});if(o.length===0)return e.issues.push({path:n,message:`${t.noun} must declare exactly one of: ${a.join(`, `)}`,line:U(e.source,n.split(`.`))}),null;if(o.length>1)return e.issues.push({path:n,message:`${t.noun} must declare exactly one of: ${a.join(`, `)} (found: ${o.join(`, `)})`,line:U(e.source,n.split(`.`))}),null;let c=o[0];return i[c].parse(e,`${n}.${c}`,r[c])}function ks(e,t,n,r){if(!xs(r))return e.issues.push({path:n,message:`${n} must be an object, got ${Ss(r)}`,line:U(e.source,n.split(`.`))}),null;let i=r[t.tag];if(typeof i!=`string`)return e.issues.push({path:`${n}.${t.tag}`,message:`${n}.${t.tag} must be a string, got ${Ss(i)}`,line:U(e.source,n.split(`.`))}),null;let a=t.arms;if(!(i in a))return e.issues.push({path:`${n}.${t.tag}`,message:`Unknown ${t.noun} "${i}". Expected one of: ${Object.keys(a).join(`, `)}`,line:U(e.source,[...n.split(`.`),t.tag])}),null;let o=a[i],s=e.issues.length,c=o.parse(e,n,r),l=new Set(e.issues.slice(s).map(e=>e.path));return Es(e,n,r,`${i} ${t.memberNoun} key`,o.keys,l),c}function As(e,t,n){return{json:Vs(zs(n),e,t),keys:new Set([e,...Object.keys(n)])}}function js(e){return(...t)=>e()(...t)}function Ms(e,...t){return(n,r,i)=>{let a=e(n,r,i);if(a===null)return null;for(let e of t){if(e.ok(a))continue;let{field:t,message:i}=e.issue(a),o=t===``?r:`${r}.${t}`;return n.issues.push({path:o,message:i,line:U(n.source,o.split(`.`))}),null}return a}}function G(){return{required:!1,json:{type:`string`},parse:(e,t,n,r)=>vs(e,t,r,n)}}function Ns(){return{required:!1,json:{type:`boolean`},parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0){if(typeof i!=`boolean`){e.issues.push({path:`${t}.${n}`,message:`${n} must be a boolean, got ${Ss(i)}`,line:U(e.source,[n])});return}return i}}}}function Ps(e){let{min:t,max:n}=e;return{required:!1,json:{type:`integer`,minimum:t,maximum:n},parse:(e,r,i,a)=>{let o=a[i];if(o!==void 0){if(typeof o!=`number`||!Number.isInteger(o)||o<t||o>n){e.issues.push({path:`${r}.${i}`,message:`${i} must be an integer between ${t} and ${n}, got ${W(o)}`,line:U(e.source,[i])});return}return o}}}}function Fs(e={}){let{min:t}=e;return{required:!1,json:{type:`number`,...t!==void 0&&{minimum:t}},parse:(e,n,r,i)=>{let a=i[r];if(a!==void 0){if(typeof a!=`number`||!Number.isFinite(a)||t!==void 0&&a<t){let i=t===void 0?`a finite number`:`a finite number >= ${t}`;e.issues.push({path:`${n}.${r}`,message:`${r} must be ${i}, got ${W(a)}`,line:U(e.source,[r])});return}return a}}}}function Is(){return{required:!1,json:{type:`string`},parse:(e,t,n,r)=>ys(e,t,r)}}function Ls(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>gs(e,t,r,n)??void 0}}function Rs(e){return{required:!1,json:{enum:[...e]},parse:(t,n,r,i)=>bs(t,n,i,r,e)}}function zs(e,t={closed:!0}){let n=e,r={},i=[];for(let[e,t]of Object.entries(n))r[e]=t.json,t.required&&i.push(e);return{type:`object`,properties:r,...i.length>0&&{required:i},...t.closed&&{additionalProperties:!1}}}function Bs(e){return zs(e.fields)}function Vs(e,t,n){let r=e,i={[t]:{const:n},...r.properties},a=[t,...r.required??[]];return{...r,properties:i,required:a}}function Hs(e){let t=e.arms;return{anyOf:Object.values(t).map(e=>e.json)}}function Us(e){let t=e.arms;return{anyOf:Object.entries(t).map(([e,t])=>({type:`object`,properties:{[e]:t.json},required:[e],additionalProperties:!1}))}}const Ws=/^[A-Za-z_][A-Za-z0-9_]*$/;function Gs(e){return`#${e+1}`}const Ks={rows:{}};function qs(e){return`rows`in e}function Js(e){return Object.fromEntries(e.map((e,t)=>[Gs(t),e]))}function Ys(e){if(e.kind===`container`&&e.direction===`vertical`){let{kind:t,direction:n,children:r,...i}=e;return{...i,rows:Js(r)}}let{when:t,...n}=e;return{...t!==void 0&&{when:t},rows:Js([n])}}function Xs(e){let{rows:t,...n}=e;return{kind:`container`,direction:`vertical`,children:Object.values(t),...n}}function Zs(e){return qs(e)?Xs(e):e}function*Qs(e,t){if(!qs(e)){yield*as(e,t);return}yield[Xs(e),t];for(let[n,r]of Object.entries(e.rows))yield*as(r,`${t}.rows.${n}`)}function $s(e,t){return qs(e)?{...t,...e,rows:{...t.rows,...e.rows}}:Ys(e)}function ec(e){if(!qs(e))return!0;let{rows:t,...n}=e;return Object.values(n).some(e=>e!==void 0)||Object.keys(t).length>0}function tc(e,t){return{globals:{...t.globals,...e.globals??{}},variables:{...t.variables,...e.variables??{}},segments:rc(t.segments,e.segments??{}),root:$s(e.root??Ks,t.root),actions:{...t.actions,...e.actions??{}},looks:{...t.looks,...e.looks??{}},presets:rc(t.presets,nc(t.presets,e.presets??{})),editGlobals:{...t.editGlobals,...e.editGlobals??{}},helpers:{...t.helpers,...e.helpers??{}}}}function nc(e,t){return Object.fromEntries(Object.entries(t).map(([t,n])=>[t,n.globals===void 0?n:{...n,globals:{...e[t]?.globals,...n.globals}}]))}function rc(e,t){return{...e,...Object.fromEntries(Object.entries(t).map(([t,n])=>[t,{...e[t],...n}]))}}const ic=`closed`,ac=`🍫`;function oc(e,t,n){if(t===0)return`${e} needs a display (the clickable text)`;if(t!==1&&t!==n)return`${e} cycles ${n} members; bind one display per member (${n}) or one static display, got ${t}`}function sc(e,t,n,r){let i=oc(e,t.length,n);if(i!==void 0)throw Error(i);return t.length===1?t[0]:t[r]}function cc(e){return e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}function lc(e,t,n,r,i){return{kind:`segment`,name:e,opens:{ref:t,body:n,placement:r},...i!==void 0&&{when:i}}}function uc(e,...t){return`{{ and ${[e,...t].map(dc).join(` `)} }}`}function dc(e){return`(eq .${e.variable} "${cc(e.member)}")`}function fc(e,t,n){return`{{ action "${e}" "${cc(t)}" "${cc(n)}" }}`}function pc(e,t){return{kind:`state`,key:e,default:t}}function mc(e,t){return{set:e,cycle:[ic,t]}}const hc={required:!1,json:{enum:[...Ba]},parse:(e,t,n,r)=>{if(r[n]===`auto`){e.issues.push({path:`${t}.${n}`,message:`${t}.${n}: "auto" is not supported — the render daemon runs detached, so terminal detection would read the daemon's environment, not your terminal's. Pick an explicit depth: ${Ba.join(`, `)}`,line:U(e.source,[...t.split(`.`),n])});return}return bs(e,t,r,n,Ba)}},gc={required:!1,json:{type:`string`},parse:(e,t,n,r)=>{let i=vs(e,t,r,n);return Ea(i)?i:ys(e,t,r)}},_c=/^[^\r\n]*\S[^\r\n]*$/u,vc=RegExp(`^(?:❌|✕)[\\uFE0E\\uFE0F]?$`,`u`),yc={required:!1,json:{type:`string`,pattern:_c.source,not:{pattern:vc.source}},parse:(e,t,n,r)=>{let i=vs(e,t,r,n);if(i===void 0||_c.test(i)&&!vc.test(i))return i;e.issues.push({path:`${t}.${n}`,message:`${t}.${n}: must be one line of visible text other than a close glyph ("❌", "✕") — the settings menu needs a glyph to click`,line:U(e.source,[...t.split(`.`),n])})}},bc={default_bg:G(),default_fg:G(),default_empty_value:G(),default_separator:G(),default_truncate_marker:G(),palette:gc,look:G(),preset:G(),style:Rs(Na),progression:Rs(Ga),autoWrap:Ns(),padding:Ps(Za),charset:Rs(Ia),updateNotice:Ns(),colorCompatibility:hc,menuGlyph:yc},xc={noun:`globals key`,fields:bc};function Sc(e,t){return{required:!1,json:{not:{},description:`not allowed here — ${e}`},parse:(e,n,r,i)=>{i[r]!==void 0&&e.issues.push({path:`${n}.${r}`,message:t(`${n}.${r}`),line:U(e.source,[...n.split(`.`),r])})}}}function Cc(e){return Sc(`${e} cannot select a preset`,t=>`${t}: ${e} cannot select a preset. Which preset is active is resolved once, as session pick over globals.preset over "default"; a fragment naming another would be a second authority over that. Set the default arrangement in the top-level globals.preset instead.`)}function wc(e){return Sc(`${e} cannot change the settings menu glyph`,t=>`${t}: ${e} cannot change the settings menu glyph — one menu is shared by every preset. Set it in the top-level globals.menuGlyph instead.`)}const Tc={preset:Cc(`a preset`),menuGlyph:wc(`a preset`)},Ec={noun:`preset globals key`,fields:{...bc,...Tc}};function Dc(e){return Pc(e)&&!(e in Tc)}const Oc={noun:`editGlobals key`,fields:{...bc,preset:Cc(`the editGlobals fragment`),menuGlyph:wc(`the editGlobals fragment`)}};function kc(e,t,n){return n===void 0?{}:Cs(e,xc,t,n)??{}}function Ac(e,t,n){return Cs(e,Ec,t,n)??{}}function jc(){return Bs(Ec)}function Mc(e,t,n){return Cs(e,Oc,t,n)??{}}const Nc=new Set(Object.keys(xc.fields));function Pc(e){return Nc.has(e)}function Fc(){return[...Nc]}const Ic={padding:1};function Lc(e){let t=new Map;for(let[n,r]of Object.entries(Ic)){let i=e[n];t.set(n,typeof i==`number`?i:r)}return t}function Rc(e,t,n,r){return n.cache===void 0?(ds.includes(r)&&e.issues.push({path:`${t}.cache`,message:`${r} variables must declare a cache policy (one of: ${cs.join(`, `)})`,line:U(e.source,t.split(`.`))}),null):Uc(e,`${t}.cache`,n.cache)}function zc(e,t,n){if(n.cache!==void 0)return Uc(e,`${t}.cache`,n.cache)??void 0}function Bc(e){return{required:!0,json:Kc(),parse:(t,n,r,i)=>Rc(t,n,i,e)??void 0}}function Vc(){return{required:!1,json:Kc(),parse:(e,t,n,r)=>zc(e,t,r)}}const Hc={noun:`cache`,arms:{ttl:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`&&Jc(n)?{ttl:n}:Ds(e,t,`cache.ttl must be a duration string like "5s", "100ms", "2m", "1h"; got ${W(n)}`)},watch_file:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`&&n!==``?{watch_file:n}:Ds(e,t,`cache.watch_file must be a non-empty path string, got ${W(n)}`)},depends_on:{json:{type:`array`,items:{type:`string`}},parse:(e,t,n)=>Array.isArray(n)&&n.every(e=>typeof e==`string`)?{depends_on:n}:Ds(e,t,`cache.depends_on must be an array of variable-name strings, got ${W(n)}`)},key:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`&&n!==``?{key:n}:Ds(e,t,`cache.key must be a non-empty template string, got ${W(n)}`)},never:{json:{const:!0},parse:(e,t,n)=>n===!0?{never:!0}:Ds(e,t,`cache.never must be the literal boolean true, got ${W(n)}`)}}};function Uc(e,t,n){return Os(e,Hc,t,n)}const Wc={noun:`time-variable cache`,arms:{ttl:Hc.arms.ttl}};function Gc(){return{required:!1,json:Us(Wc),parse:(e,t,n,r)=>r.cache===void 0?void 0:Os(e,Wc,`${t}.cache`,r.cache)??void 0}}function Kc(){return Us(Hc)}const qc=/^(\d+(?:\.\d+)?)(ms|s|m|h)$/;function Jc(e){return qc.test(e)}function Yc(e,t,n){if(n===void 0)return{};if(!xs(n))return e.issues.push({path:t,message:`${t} must be an object, got ${Ss(n)}`,line:U(e.source,t.split(`.`))}),{};let r={};for(let[i,a]of Object.entries(n)){let n=ks(e,_l,`${t}.${i}`,a);n!==null&&(r[i]=n)}return r}function Xc(){return{required:!0,json:{type:[`string`,`number`,`boolean`]},parse:(e,t,n,r)=>{let i=r.value;if(typeof i!=`string`&&typeof i!=`number`&&typeof i!=`boolean`){e.issues.push({path:`${t}.value`,message:`literal value must be string|number|boolean, got ${Ss(i)}`,line:U(e.source,t.split(`.`))});return}return i}}}function Zc(){return{required:!0,json:{enum:[...us]},parse:(e,t,n,r)=>{let i=r.field;if(typeof i!=`string`||!us.includes(i)){e.issues.push({path:`${t}.field`,message:`git field must be one of: ${us.join(`, `)}, got ${JSON.stringify(i)}`,line:U(e.source,[...t.split(`.`),`field`])});return}return i}}}function Qc(){return{required:!1,json:{type:[`string`,`number`,`boolean`]},parse:(e,t,n,r)=>{let i=r.type;return _s(e,t,r,i===`number`||i===`boolean`||i===`string`?i:`string`)}}}const $c={noun:`parse`,arms:{text:{json:{const:!0},parse:(e,t,n)=>n===!0?{text:!0}:Ds(e,t,`parse.text must be the literal boolean true, got ${W(n)}`)},regex:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`?el(e,t,n):Ds(e,t,`parse.regex must be a pattern string, got ${W(n)}`)},json:{json:{const:!0},parse:(e,t,n)=>n===!0?{json:!0}:Ds(e,t,`parse.json must be the literal boolean true, got ${W(n)}`)}}};function el(e,t,n){let r;try{new RegExp(n),r=RegExp(`${n}|`).exec(``).length-1}catch(n){return Ds(e,t,`parse.regex is not a valid regular expression: ${n.message}`)}return r>=1?{regex:n}:Ds(e,t,`parse.regex must contain a capture group — its group 1 is the value; got ${JSON.stringify(n)}`)}function tl(){return{required:!1,json:Us($c),parse:(e,t,n,r)=>(r.regex!==void 0&&e.issues.push({path:`${t}.regex`,message:`${t}.regex was retired; the regex is the parse step's regex arm now: parse: { regex: ${JSON.stringify(r.regex)} }`,line:U(e.source,[...t.split(`.`),`regex`])}),r.parse===void 0?void 0:Os(e,$c,`${t}.parse`,r.parse)??void 0)}}function nl(){return{required:!1,json:{type:[`string`,`number`,`boolean`,`array`,`object`],description:`The value published when the source fails: a string under the text/regex parse arms, any non-null JSON value under the json arm`},parse:(e,t,n,r)=>xs(r.parse)&&`json`in r.parse?rl(e,t,r.default):vs(e,t,r,`default`)}}function rl(e,t,n){if(n!==void 0)return il(n)?n:Ds(e,`${t}.default`,`${t}.default must be a JSON value (a json-parsed source's document), got ${W(n)}`)??void 0}function il(e){return e!==null&&al(e)}function al(e){if(e===null)return!0;switch(typeof e){case`string`:case`boolean`:return!0;case`number`:return Number.isFinite(e);case`object`:{if(Array.isArray(e))return e.every(al);let t=Object.getPrototypeOf(e);return(t===Object.prototype||t===null)&&Object.values(e).every(al)}default:return!1}}const ol={value:Xc(),default:G()},sl={path:Ls(),type:Rs([`string`,`number`,`boolean`]),default:Qc()},cl={name:Ls(),default:G()},ll={path:Ls(),readMode:Rs([`whole`,`first-line`]),parse:tl(),cache:Bc(`file`),default:nl()},ul={command:Ls(),parse:tl(),cache:Bc(`shell`),default:nl()},dl={template:Ls(),cache:Vc(),default:G()},fl={layout:Ls(),cache:Gc(),default:G()},pl={field:Zc(),cache:Bc(`git`),default:G()},ml={key:Ls(),default:G()},hl=`kind`;function gl(e,t){return{...As(hl,e,t),parse:(n,r,i)=>{let a=ws(n,t,r,i);return a===null?null:{kind:e,...a}}}}const _l={tag:hl,noun:`source kind`,memberNoun:`variable`,arms:{literal:gl(`literal`,ol),input:gl(`input`,sl),env:gl(`env`,cl),file:gl(`file`,ll),shell:gl(`shell`,ul),template:gl(`template`,dl),time:gl(`time`,fl),git:gl(`git`,pl),state:gl(`state`,ml)}};function vl(){return Hs(_l)}function yl(){return{type:`object`,additionalProperties:vl()}}function bl(e){return e.replace(/[^A-Za-z0-9]+/g,`_`)}const xl=`groups.`,Sl=`menus.`,Cl=`edit.`,K=`candybar.`,wl=[xl,Sl,Cl,K];function Tl(e){return wl.some(t=>e.startsWith(t))}function El(e){let t=bl(e);return wl.find(e=>t.startsWith(bl(e)))}function Dl(e,t,n,r){for(let i of[`variables`,`actions`,`segments`])for(let a of Object.keys(t[i]??{}))a.startsWith(n)&&e.issues.push({path:`${i}.${a}`,message:`"${a}" is in the reserved "${n}" namespace (synthesized by ${r}) — rename it`,line:U(e.source,[`root`])})}const Ol=new Map([[`gitTaculous`,`gitaculous`],[`git`,`gitaculous`],[`settings.menu`,`candybar.menu`]]);function kl(e){let t=Ol.get(e);return t===void 0?``:` (the built-in segment "${e}" was renamed to "${t}" — update this reference)`}const Al=/^[A-Za-z_][A-Za-z0-9_]*$/,jl={pattern:Al.source},Ml={anyOf:[{type:`boolean`},{type:`string`},{type:`integer`}]},Nl={type:`object`,additionalProperties:!1,required:[`label`,`domain`,`default`],properties:{label:{type:`string`,minLength:1},domain:{anyOf:[{const:`bool`},{type:`array`,items:{type:`string`},minItems:1,uniqueItems:!0},{type:`object`,additionalProperties:!1,required:[`min`,`max`],properties:{min:{type:`integer`},max:{type:`integer`}}}]},default:Ml}},Pl=[`label`,`domain`,`default`];function Fl(e,t,n){e.issues.push({path:t,message:n,line:U(e.source,t.split(`.`))})}function Il(e,t,n){if(n===`bool`)return`bool`;if(Array.isArray(n)){let r=n.filter(e=>typeof e==`string`);return n.length===0||r.length!==n.length?Fl(e,t,`a list domain must be a non-empty list of words, got ${JSON.stringify(n)}`):new Set(r).size===r.length?r:Fl(e,t,`a list domain names each word once, got ${JSON.stringify(n)}`)}if(xs(n)){let{min:r,max:i}=n;return Object.keys(n).filter(e=>e!==`min`&&e!==`max`).length===0&&Number.isInteger(r)&&Number.isInteger(i)&&r<=i?{min:r,max:i}:Fl(e,t,`a range domain is { min, max } with integers min ≤ max, got ${JSON.stringify(n)}`)}return Fl(e,t,`domain must be "bool", a list of words, or { min, max }, got ${W(n)}`)}function Ll(e,t,n){if(!xs(n))return Fl(e,t,`${t} must be { label, domain, default }, got ${Ss(n)}`);for(let r of Object.keys(n))Pl.includes(r)||Fl(e,`${t}.${r}`,`Unknown setting key "${r}". Expected one of: ${Pl.join(`, `)}`);let{label:r}=n;(typeof r!=`string`||r.length===0)&&Fl(e,`${t}.label`,`a setting needs a non-empty "label" — the name its control shows — got ${W(r)}`);let i=Il(e,`${t}.domain`,n.domain);if(typeof r!=`string`||r.length===0||i===void 0)return;let a={label:r,domain:i,default:n.default};return!Rl(n.default)||!fs(a,n.default)?Fl(e,`${t}.default`,`default must be ${ps(a)}, got ${W(n.default)}`):a}function Rl(e){return typeof e==`boolean`||typeof e==`string`||typeof e==`number`}function zl(){return{required:!1,json:{type:`object`,propertyNames:jl,additionalProperties:Nl},parse:(e,t,n,r)=>{let i=r[n];if(i===void 0)return;let a=`${t}.${n}`;if(!xs(i))return Fl(e,a,`${a} must be an object of name → { label, domain, default }, got ${Ss(i)}`);let o=Object.create(null);for(let[t,n]of Object.entries(i)){if(!Al.test(t)){Fl(e,`${a}.${t}`,`setting name "${t}" is read as .settings.${t} in a template, so it must be an identifier (letters, digits, _; not starting with a digit)`);continue}let r=Ll(e,`${a}.${t}`,n);r!==void 0&&(o[t]=r)}return o}}}function Bl(){return{required:!1,json:{type:`string`,minLength:1,pattern:`^[^:/]+$`},parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0)return typeof i==`string`&&i.length>0&&!/[:/]/.test(i)?i:Fl(e,`${t}.${n}`,`a placement "id" must be a non-empty string without "/" or ":", got ${W(i)}`)}}}function Vl(){return{required:!1,json:{type:`object`,propertyNames:jl,additionalProperties:Ml},parse:(e,t,n,r)=>{let i=r[n];if(i===void 0)return;let a=`${t}.${n}`;if(!xs(i))return Fl(e,a,`a placement's "settings" must be an object of setting name → value, got ${Ss(i)}`);let o=Object.create(null);for(let[t,n]of Object.entries(i))Rl(n)?o[t]=n:Fl(e,`${a}.${t}`,`setting "${t}" must be a boolean, a word, or a number, got ${Ss(n)}`);return o}}}function Hl(e){return new Set(Object.keys(e.segments).filter(e=>!Tl(e)))}function Ul(e,t,n){if(t===void 0)return{};if(!xs(t))return e.issues.push({path:`segments`,message:`segments must be an object, got ${Ss(t)}`,line:U(e.source,[`segments`])}),{};let r={};for(let[i,a]of Object.entries(t)){let t=Cs(e,n.has(i)?Yl:Jl,`segments.${i}`,a);t!==null&&(r[i]=t)}return r}function Wl(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>r[n]===void 0?Ds(e,`${t}.${n}`,`${t} declares no template — only a segment the bundled default declares may omit it (inheriting the bundled template); a segment of your own needs its own${kl(t.slice(9))}`)??void 0:gs(e,t,r,n)??void 0}}function Gl(){return{required:!1,json:{anyOf:[{const:`auto`},{const:`fill`},{type:`integer`,minimum:1}]},parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0){if(i===`auto`)return`auto`;if(i===`fill`)return`fill`;if(typeof i==`number`&&Number.isInteger(i)&&i>0)return i;e.issues.push({path:`${t}.${n}`,message:`width must be "auto", "fill", or a positive integer, got ${W(i)}`,line:U(e.source,[...t.split(`.`),n])})}}}}function Kl(){return{required:!1,json:yl(),parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0)return Yc(e,`${t}.${n}`,i)}}}const ql={template:Wl(),description:G(),width:Gl(),justify:Rs(ms),truncate:Rs(hs),bg:G(),fg:G(),when:G(),palette:Is(),vars:Kl(),settings:zl()},Jl={noun:`segment key`,fields:ql},Yl={noun:`segment key`,fields:{...ql,template:G()}},Xl=`#/definitions/LayoutNode`,Zl={kind:`container`,direction:`vertical`,children:[]};function Ql(e){return{required:!0,json:{const:e},parse:()=>e}}function $l(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>{let i=r[n];return typeof i==`string`&&i.length>0?i:(e.issues.push({path:`${t}.${n}`,message:`a segment node must have a non-empty "name" (a segment name), got ${W(i)}`,line:U(e.source,[`root`])}),``)}}}function eu(){return{required:!0,json:{enum:[...Xo]},parse:(e,t,n,r)=>{let i=r[n];return typeof i==`string`&&Xo.includes(i)?i:(e.issues.push({path:`${t}.${n}`,message:`a container "direction" must be one of: ${Xo.join(`, `)} (got ${JSON.stringify(i)})`,line:U(e.source,[`root`])}),`vertical`)}}}function tu(e){return{required:!0,json:{type:`array`,items:{$ref:Xl}},parse:(t,n,r,i)=>{let a=i[r];return Array.isArray(a)?a.map((i,a)=>e(t,`${n}.${r}[${a}]`,i)):(t.issues.push({path:`${n}.${r}`,message:`a container must have a "children" array of layout nodes, got ${Ss(a)}`,line:U(t.source,[`root`])}),[])}}}const nu={noun:`layout-node key`,fields:{kind:Ql(`segment`),name:$l(),when:G(),id:Bl(),settings:Vl()}},ru=()=>Rs(Fi),iu={noun:`layout-node key`,fields:{kind:Ql(`container`),direction:eu(),children:tu(js(()=>lu)),when:G(),distribution:ru()}};function au(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>{let i=r[n];return typeof i==`string`&&i.length>0?i:(e.issues.push({path:`${t}.${n}`,message:`a "seg" node must have a non-empty segment name, got ${W(i)}`,line:U(e.source,[`root`])}),``)}}}const ou={noun:`layout-node key`,fields:{seg:au(),when:G(),id:Bl(),settings:Vl()}},su={noun:`layout-node key`,fields:{h:tu(js(()=>lu)),when:G(),distribution:ru()}},cu={noun:`layout-node key`,fields:{v:tu(js(()=>lu)),when:G(),distribution:ru()}},lu=(e,t,n)=>{if(typeof n==`string`)return n.length===0?(e.issues.push({path:t,message:`a bare-string layout node must be a non-empty segment name`,line:U(e.source,[`root`])}),Zl):{kind:`segment`,name:n};if(!xs(n))return e.issues.push({path:t,message:`a layout node must be a string (segment name) or an object with "kind" / "seg" / "h" / "v", got ${Ss(n)}`,line:U(e.source,[`root`])}),Zl;if(n.kind===`container`)return Cs(e,iu,t,n)??Zl;if(n.kind===`segment`)return Cs(e,nu,t,n)??Zl;if(n.kind===`cells`)return e.issues.push({path:t,message:`kind: "cells" is no longer supported — use the h-arm spelling instead:
39
+ `,t-1)+1}function To(e){return/^[ \t]*$/.test(e)}function Eo(e,t){let n=wo(e,t);return/^[ \t]*/.exec(e.slice(n))[0]}function Do(e,t){return To(e.slice(wo(e,t),t))}const Oo=/(?:\/\/[^\n]*?)?(\r\n|\n|$)/y;function ko(e,t){let n=t;for(;n<e.length&&(e[n]===` `||e[n]===` `);)n++;let r=e[n]===`,`?n+1:-1;for(r!==-1&&(n=r);n<e.length&&(e[n]===` `||e[n]===` `);)n++;Oo.lastIndex=n;let i=Oo.exec(e);if(i===null)return{commaEnd:r,line:null};let a=n+i[0].length;return{commaEnd:r,line:{at:a-i[1].length,next:a}}}function Ao(e,t){let{commaEnd:n,line:r}=ko(e,t.end);if(Do(e,t.start)&&r!==null)return Co(e,wo(e,t.start),r.next,``);if(n!==-1){let r=n;for(;r<e.length&&e[r]===` `;)r++;return Co(e,t.start,r,``)}let i=t.start;for(;i>0&&(e[i-1]===` `||e[i-1]===` `);)i--;return e[i-1]===`,`?Co(e,i-1,t.end,``):Co(e,t.start,t.end,``)}function jo(e,t,n,r,i){let a=n.commaEnd!==-1,o=a?e:Co(e,t.end,t.end,`,`),s=n.line.at+ +!a,c=bo(e);return Co(o,s,s,`${c}${i}${xo(r,i,c)}${a?`,`:``}`)}function Mo(e,t,n,r){let i=t.kind===`object`?t.entries:t.elements,a=i[i.length-1],o=Eo(e,t.span.start);if(a===void 0){let i=o+` `,a=bo(e);return Co(e,t.span.start+1,t.span.end-1,`${a}${i}${xo(n,i,a)}${r.trailingComma}${a}${o}`)}let{commaEnd:s,line:c}=ko(e,a.span.end);if(Do(e,a.span.start)&&c!==null){let t=e.slice(wo(e,a.span.start),a.span.start);return jo(e,a.span,{commaEnd:s,line:c},n,t)}let l=s===-1?a.span.end:s;return Co(e,l,l,`${s===-1?`, `:` `}${n}${s===-1?``:`,`}`)}function No(e,t,n,r){if(t.length===0)throw new no(`setValue needs a non-empty path`,0);if(/^\s*$/.test(e)){let i=bo(e);return`{${i} ${xo(So(t,n,r),` `,i)}${r.trailingComma}${i}}${i}`}return Po(e,co(e),t,n,r)}function Po(e,t,n,r,i){let a=t;for(let t=0;t<n.length;t++){if(a.kind!==`object`)throw new no(`cannot set ${n.join(`.`)}: ${n.slice(0,t).join(`.`)||`the document`} is not an object`,a.span.start);let o=lo(a,n[t]);if(o===void 0)return Mo(e,a,So(n.slice(t),r,i),i);if(t===n.length-1){let t=Eo(e,o.keySpan.start);return Co(e,o.value.span.start,o.value.span.end,xo(r,t,bo(e)))}a=o.value}throw new no(`unreachable: path exhausted`,0)}function Fo(e,t,n=0){if(t.length===0)throw new no(`deleteValue needs a non-empty path`,0);if(/^\s*$/.test(e))return e;let r=t.slice(0,-1),i=uo(co(e),r),a=i===void 0?void 0:lo(i,t[t.length-1]);if(a===void 0||i?.kind!==`object`)return e;let o=Ao(e,a.span);return r.length>n&&i.entries.length===1?Fo(o,r,n):o}const Io=[`h`,`v`,`children`];function Lo(e){if(e.kind===`string`)return e.value;if(e.kind!==`object`)return;let t=lo(e,`seg`)?.value,n=lo(e,`kind`)?.value,r=lo(e,`name`)?.value,i=t?.kind===`string`?t.value:n?.kind===`string`&&n.value===`segment`&&r?.kind===`string`?r.value:void 0;if(i===void 0)return;let a=lo(e,`id`)?.value;return a?.kind===`string`?a.value:i}function Ro(e){return e.kind===`object`?Io.map(t=>lo(e,t)?.value).filter(e=>e?.kind===`array`):[]}function zo(e){let t=lo(e,`rows`)?.value;return t?.kind===`object`?t.entries:null}function Bo(e){if(e.kind!==`object`)return!0;let t=zo(e);return t===null||t.length>0||e.entries.some(e=>e.key!==`rows`)}function*Vo(e,t){yield{node:e,bareAt:t};for(let t of Ro(e))for(let e of t.elements)yield*Vo(e,null);for(let n of zo(e)??[])yield*Vo(n.value,t===null?null:[...t,`rows`,n.key])}function Ho(e,t){for(let{node:n}of Vo(e,null))if(Lo(n)===t)return!0;return!1}function Uo(e,t,n){let r=uo(co(e),t);if(r===void 0)return null;for(let{node:i,bareAt:a}of Vo(r,t))if(Lo(i)===n)return a===null?{text:e,ref:i}:Uo(No(e,a,`{ h: [${fo(e,i)}] }`,_o),t,n);return null}function Wo(e,t,n){let r=Uo(e,t,n);return r===null?null:Ao(r.text,r.ref.span)}function Go(e,t,n,r,i){let a=Uo(e,t,r);if(a===null)return null;let{text:o,ref:s}=a,c=n.id===void 0?JSON.stringify(n.seg):`{ seg: ${JSON.stringify(n.seg)}, id: ${JSON.stringify(n.id)} }`,{commaEnd:l,line:u}=ko(o,s.span.end);if(Do(o,s.span.start)&&u!==null){let e=o.slice(wo(o,s.span.start),s.span.start);return i===`after`?jo(o,s.span,{commaEnd:l,line:u},c,e):Co(o,s.span.start,s.span.start,`${c},${bo(o)}${e}`)}let d=fo(o,s),f=i===`before`?`${c}, ${d}`:`${d}, ${c}`;return Co(o,s.span.start,s.span.end,f)}function Ko(e,t,n,r,i){let a=Uo(e,t,n);if(a===null)return null;let{text:o,ref:s}=a,c=`{ ${go(r)}: ${i} }`;return s.kind===`string`?Co(o,s.span.start,s.span.end,`{ seg: ${JSON.stringify(s.value)}, settings: ${c} }`):lo(s,`settings`)===void 0?Po(o,s,[`settings`],c,_o):Po(o,s,[`settings`,r],i,_o)}var qo=class extends Error{file;issues;warnings;constructor(e,t,n=[]){super(Zo(e,t)),this.name=`ConfigError`,this.file=e,this.issues=t,this.warnings=n}};function U(e,t){let n=0,r;for(let i of t){if(i===``||/^\d+$/.test(i))continue;let t=Jo(e,n,i);if(t===-1)return r===void 0?void 0:Yo(e,r);n=t,r=t}return r===void 0?void 0:Yo(e,r)}function Jo(e,t,n){let r=n.replace(/[\\^$.*+?()[\]{}|]/g,`\\$&`),i=RegExp(`(?:["']${r}["']|\\b${r}\\b)\\s*:`,`g`);i.lastIndex=t;let a=i.exec(e);return a?a.index:-1}function Yo(e,t){let n=1;for(let r=0;r<t&&r<e.length;r++)e.charCodeAt(r)===10&&n++;return n}function Xo(e,t){try{return co(t),null}catch(n){if(!(n instanceof no))throw n;return`${e}:${Yo(t,n.offset)}: ${n.reason} — the settings menu cannot edit this file until it is fixed`}}function Zo(e,t){if(t.length===0)return`${e}: invalid config (no details)`;let n=[`Invalid config in ${e} (${t.length} issue${t.length===1?``:`s`}):`];for(let e of t){let t=[];e.line!==void 0&&t.push(`line ${e.line}${e.col===void 0?``:`:${e.col}`}`),e.path&&t.push(e.path);let r=t.length>0?`[${t.join(` • `)}] `:``;n.push(` ${r}${e.message}`)}return n.join(`
40
+ `)}const Qo=[`vertical`,`horizontal`],$o={vertical:`row`,horizontal:`cell`};function es(e){return e.id??e.name}function ts(e){return[...is(e)].flatMap(e=>e.kind===`segment`?[es(e)]:[])}function ns(e,t){if(!t.has(e))return e;let n=2;for(;t.has(`${e}-${n}`);)n++;return`${e}-${n}`}function rs(e,t){return e.opens===void 0?e:{...e,opens:{...e.opens,body:t(e.opens.body)}}}function*is(e){yield e;for(let t of cs(e))yield*is(t)}const as=(e,t)=>`${e}.children[${t}]`,os=e=>`${e}.opens.body`;function*ss(e,t){if(yield[e,t],e.kind===`container`)for(let[n,r]of e.children.entries())yield*ss(r,as(t,n));else e.opens!==void 0&&(yield*ss(e.opens.body,os(t)))}function cs(e){return e.kind===`container`?e.children:e.opens===void 0?[]:[e.opens.body]}function ls(e){return e===void 0||`text`in e?`text`:`regex`in e?`regex`:`json`}const us=[`ttl`,`watch_file`,`depends_on`,`key`,`never`];function ds(e){return e.kind!==`literal`&&e.kind!==`input`&&e.kind!==`env`&&e.kind!==`state`}const fs=[`branch`,`sha`,`dirty`,`ahead`,`behind`,`stash`],ps=[`file`,`shell`,`git`];function ms(e,t){let{domain:n}=e;return n===`bool`?typeof t==`boolean`:`min`in n?typeof t==`number`&&Number.isInteger(t)&&t>=n.min&&t<=n.max:typeof t==`string`&&n.includes(t)}function hs(e){return String(e)}function gs(e,t){let{domain:n}=e,r=n===`bool`?t===`true`?!0:t===`false`?!1:t:`min`in n&&/^-?\d+$/.test(t)?Number(t):t;return ms(e,r)?r:void 0}function _s(e){let{domain:t}=e;return t===`bool`?`true or false`:`min`in t?`an integer from ${t.min} to ${t.max}`:`one of ${t.map(e=>JSON.stringify(e)).join(`, `)}`}const vs=[`left`,`center`,`right`],ys=[`right`,`left`,`middle`];function bs(e,t,n,r){let i=n[r];return typeof i==`string`?i:(e.issues.push({path:`${t}.${r}`,message:`${t}.${r} must be a string, got ${Es(i)}`,line:U(e.source,[...t.split(`.`),r])}),null)}function xs(e,t,n,r){let i=n.default;if(i!==void 0){if(!(r===`string`&&typeof i==`string`||r===`number`&&typeof i==`number`||r===`boolean`&&typeof i==`boolean`)){e.issues.push({path:`${t}.default`,message:`default must be a ${r}, got ${Es(i)}`,line:U(e.source,[...t.split(`.`),`default`])});return}return i}}function Ss(e,t,n,r){let i=n[r];if(i!==void 0){if(typeof i!=`string`){e.issues.push({path:`${t}.${r}`,message:`${t}.${r} must be a string, got ${Es(i)}`,line:U(e.source,[...t.split(`.`),r])});return}return i}}function Cs(e,t,n){let r=Ss(e,t,n,`palette`);if(r!==void 0){if(!e.allowedPalettes.has(r)){e.issues.push({path:`${t}.palette`,message:`Unknown palette "${r}". Expected one of: ${[...e.allowedPalettes].sort().join(`, `)}`,line:U(e.source,[...t.split(`.`),`palette`])});return}return r}}function ws(e,t,n,r,i){let a=n[r];if(a!==void 0){if(typeof a!=`string`||!i.includes(a)){e.issues.push({path:`${t}.${r}`,message:`${t}.${r} must be one of: ${i.join(`, `)}; got ${W(a)}`,line:U(e.source,[...t.split(`.`),r])});return}return a}}function Ts(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Es(e){return e===null?`null`:Array.isArray(e)?`array`:typeof e}function W(e){return typeof e==`string`?JSON.stringify(e):e===void 0?`undefined`:String(e)}function Ds(e,t,n,r){return Ts(r)?(As(e,n,r,t.noun,new Set(Object.keys(t.fields))),Os(e,t.fields,n,r)):(e.issues.push({path:n,message:`${n} must be an object, got ${Es(r)}`,line:U(e.source,n.split(`.`))}),null)}function Os(e,t,n,r){let i=t,a={},o=!0;for(let[t,s]of Object.entries(i)){let i=s.parse(e,n,t,r);i===void 0?s.required&&(o=!1):a[t]=i}return o?a:null}const ks=new Set;function As(e,t,n,r,i,a=ks){for(let o of Object.keys(n))!i.has(o)&&!a.has(`${t}.${o}`)&&e.issues.push({path:`${t}.${o}`,message:`Unknown ${r} "${o}". Expected one of: ${[...i].join(`, `)}`,line:U(e.source,[...t.split(`.`),o])})}function js(e,t,n){return e.issues.push({path:t,message:n,line:U(e.source,t.split(`.`))}),null}function Ms(e,t,n,r){if(!Ts(r))return e.issues.push({path:n,message:`${t.noun} must be an object, got ${Es(r)}`,line:U(e.source,n.split(`.`))}),null;let i=t.arms,a=Object.keys(i),o=Object.keys(r).filter(e=>e in i),s=Object.keys(r).filter(e=>!(e in i));for(let r of s)e.issues.push({path:`${n}.${r}`,message:`Unknown ${t.noun} key "${r}". Expected exactly one of: ${a.join(`, `)}`,line:U(e.source,[...n.split(`.`),r])});if(o.length===0)return e.issues.push({path:n,message:`${t.noun} must declare exactly one of: ${a.join(`, `)}`,line:U(e.source,n.split(`.`))}),null;if(o.length>1)return e.issues.push({path:n,message:`${t.noun} must declare exactly one of: ${a.join(`, `)} (found: ${o.join(`, `)})`,line:U(e.source,n.split(`.`))}),null;let c=o[0];return i[c].parse(e,`${n}.${c}`,r[c])}function Ns(e,t,n,r){if(!Ts(r))return e.issues.push({path:n,message:`${n} must be an object, got ${Es(r)}`,line:U(e.source,n.split(`.`))}),null;let i=r[t.tag];if(typeof i!=`string`)return e.issues.push({path:`${n}.${t.tag}`,message:`${n}.${t.tag} must be a string, got ${Es(i)}`,line:U(e.source,n.split(`.`))}),null;let a=t.arms;if(!(i in a))return e.issues.push({path:`${n}.${t.tag}`,message:`Unknown ${t.noun} "${i}". Expected one of: ${Object.keys(a).join(`, `)}`,line:U(e.source,[...n.split(`.`),t.tag])}),null;let o=a[i],s=e.issues.length,c=o.parse(e,n,r),l=new Set(e.issues.slice(s).map(e=>e.path));return As(e,n,r,`${i} ${t.memberNoun} key`,o.keys,l),c}function Ps(e,t,n){return{json:Gs(Us(n),e,t),keys:new Set([e,...Object.keys(n)])}}function Fs(e){return(...t)=>e()(...t)}function Is(e,...t){return(n,r,i)=>{let a=e(n,r,i);if(a===null)return null;for(let e of t){if(e.ok(a))continue;let{field:t,message:i}=e.issue(a),o=t===``?r:`${r}.${t}`;return n.issues.push({path:o,message:i,line:U(n.source,o.split(`.`))}),null}return a}}function G(){return{required:!1,json:{type:`string`},parse:(e,t,n,r)=>Ss(e,t,r,n)}}function Ls(){return{required:!1,json:{type:`boolean`},parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0){if(typeof i!=`boolean`){e.issues.push({path:`${t}.${n}`,message:`${n} must be a boolean, got ${Es(i)}`,line:U(e.source,[n])});return}return i}}}}function Rs(e){let{min:t,max:n}=e;return{required:!1,json:{type:`integer`,minimum:t,maximum:n},parse:(e,r,i,a)=>{let o=a[i];if(o!==void 0){if(typeof o!=`number`||!Number.isInteger(o)||o<t||o>n){e.issues.push({path:`${r}.${i}`,message:`${i} must be an integer between ${t} and ${n}, got ${W(o)}`,line:U(e.source,[i])});return}return o}}}}function zs(e={}){let{min:t}=e;return{required:!1,json:{type:`number`,...t!==void 0&&{minimum:t}},parse:(e,n,r,i)=>{let a=i[r];if(a!==void 0){if(typeof a!=`number`||!Number.isFinite(a)||t!==void 0&&a<t){let i=t===void 0?`a finite number`:`a finite number >= ${t}`;e.issues.push({path:`${n}.${r}`,message:`${r} must be ${i}, got ${W(a)}`,line:U(e.source,[r])});return}return a}}}}function Bs(){return{required:!1,json:{type:`string`},parse:(e,t,n,r)=>Cs(e,t,r)}}function Vs(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>bs(e,t,r,n)??void 0}}function Hs(e){return{required:!1,json:{enum:[...e]},parse:(t,n,r,i)=>ws(t,n,i,r,e)}}function Us(e,t={closed:!0}){let n=e,r={},i=[];for(let[e,t]of Object.entries(n))r[e]=t.json,t.required&&i.push(e);return{type:`object`,properties:r,...i.length>0&&{required:i},...t.closed&&{additionalProperties:!1}}}function Ws(e){return Us(e.fields)}function Gs(e,t,n){let r=e,i={[t]:{const:n},...r.properties},a=[t,...r.required??[]];return{...r,properties:i,required:a}}function Ks(e){let t=e.arms;return{anyOf:Object.values(t).map(e=>e.json)}}function qs(e){let t=e.arms;return{anyOf:Object.entries(t).map(([e,t])=>({type:`object`,properties:{[e]:t.json},required:[e],additionalProperties:!1}))}}const Js=/^[A-Za-z_][A-Za-z0-9_]*$/;function Ys(e){return`#${e+1}`}const Xs={rows:{}};function Zs(e){return`rows`in e}function Qs(e){return Object.fromEntries(e.map((e,t)=>[Ys(t),e]))}function $s(e){if(e.kind===`container`&&e.direction===`vertical`){let{kind:t,direction:n,children:r,...i}=e;return{...i,rows:Qs(r)}}let{when:t,...n}=e;return{...t!==void 0&&{when:t},rows:Qs([n])}}function ec(e){let{rows:t,...n}=e;return{kind:`container`,direction:`vertical`,children:Object.values(t),...n}}function tc(e){return Zs(e)?ec(e):e}function*nc(e,t){if(!Zs(e)){yield*ss(e,t);return}yield[ec(e),t];for(let[n,r]of Object.entries(e.rows))yield*ss(r,`${t}.rows.${n}`)}function rc(e,t){return Zs(e)?{...t,...e,rows:{...t.rows,...e.rows}}:$s(e)}function ic(e){if(!Zs(e))return!0;let{rows:t,...n}=e;return Object.values(n).some(e=>e!==void 0)||Object.keys(t).length>0}function ac(e,t){return{globals:{...t.globals,...e.globals??{}},variables:{...t.variables,...e.variables??{}},segments:sc(t.segments,e.segments??{}),root:rc(e.root??Xs,t.root),actions:{...t.actions,...e.actions??{}},looks:{...t.looks,...e.looks??{}},presets:sc(t.presets,oc(t.presets,e.presets??{})),editGlobals:{...t.editGlobals,...e.editGlobals??{}},helpers:{...t.helpers,...e.helpers??{}}}}function oc(e,t){return Object.fromEntries(Object.entries(t).map(([t,n])=>[t,n.globals===void 0?n:{...n,globals:{...e[t]?.globals,...n.globals}}]))}function sc(e,t){return{...e,...Object.fromEntries(Object.entries(t).map(([t,n])=>[t,{...e[t],...n}]))}}const cc=`closed`,lc=`🍫`;function uc(e,t,n){if(t===0)return`${e} needs a display (the clickable text)`;if(t!==1&&t!==n)return`${e} cycles ${n} members; bind one display per member (${n}) or one static display, got ${t}`}function dc(e,t,n,r){let i=uc(e,t.length,n);if(i!==void 0)throw Error(i);return t.length===1?t[0]:t[r]}function fc(e){return e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}function pc(e,t,n,r,i){return{kind:`segment`,name:e,opens:{ref:t,body:n,placement:r},...i!==void 0&&{when:i}}}function mc(e,...t){return`{{ and ${[e,...t].map(hc).join(` `)} }}`}function hc(e){return`(eq .${e.variable} "${fc(e.member)}")`}function gc(e,t,n){return`{{ action "${e}" "${fc(t)}" "${fc(n)}" }}`}function _c(e,t){return{kind:`state`,key:e,default:t}}function vc(e,t){return{set:e,cycle:[cc,t]}}const yc={required:!1,json:{enum:[...Ba]},parse:(e,t,n,r)=>{if(r[n]===`auto`){e.issues.push({path:`${t}.${n}`,message:`${t}.${n}: "auto" is not supported — the render daemon runs detached, so terminal detection would read the daemon's environment, not your terminal's. Pick an explicit depth: ${Ba.join(`, `)}`,line:U(e.source,[...t.split(`.`),n])});return}return ws(e,t,r,n,Ba)}},bc={required:!1,json:{type:`string`},parse:(e,t,n,r)=>{let i=Ss(e,t,r,n);return Ea(i)?i:Cs(e,t,r)}},xc=/^[^\r\n]*\S[^\r\n]*$/u,Sc=RegExp(`^(?:❌|✕)[\\uFE0E\\uFE0F]?$`,`u`),Cc={required:!1,json:{type:`string`,pattern:xc.source,not:{pattern:Sc.source}},parse:(e,t,n,r)=>{let i=Ss(e,t,r,n);if(i===void 0||xc.test(i)&&!Sc.test(i))return i;e.issues.push({path:`${t}.${n}`,message:`${t}.${n}: must be one line of visible text other than a close glyph ("❌", "✕") — the settings menu needs a glyph to click`,line:U(e.source,[...t.split(`.`),n])})}},wc={default_bg:G(),default_fg:G(),default_empty_value:G(),default_separator:G(),default_truncate_marker:G(),palette:bc,look:G(),preset:G(),style:Hs(Na),progression:Hs(Ga),autoWrap:Ls(),padding:Rs(Za),charset:Hs(Ia),updateNotice:Ls(),colorCompatibility:yc,menuGlyph:Cc},Tc={noun:`globals key`,fields:wc};function Ec(e,t){return{required:!1,json:{not:{},description:`not allowed here — ${e}`},parse:(e,n,r,i)=>{i[r]!==void 0&&e.issues.push({path:`${n}.${r}`,message:t(`${n}.${r}`),line:U(e.source,[...n.split(`.`),r])})}}}function Dc(e){return Ec(`${e} cannot select a preset`,t=>`${t}: ${e} cannot select a preset. Which preset is active is resolved once, as session pick over globals.preset over "default"; a fragment naming another would be a second authority over that. Set the default arrangement in the top-level globals.preset instead.`)}function Oc(e){return Ec(`${e} cannot change the settings menu glyph`,t=>`${t}: ${e} cannot change the settings menu glyph — one menu is shared by every preset. Set it in the top-level globals.menuGlyph instead.`)}const kc={preset:Dc(`a preset`),menuGlyph:Oc(`a preset`)},Ac={noun:`preset globals key`,fields:{...wc,...kc}};function jc(e){return Rc(e)&&!(e in kc)}const Mc={noun:`editGlobals key`,fields:{...wc,preset:Dc(`the editGlobals fragment`),menuGlyph:Oc(`the editGlobals fragment`)}};function Nc(e,t,n){return n===void 0?{}:Ds(e,Tc,t,n)??{}}function Pc(e,t,n){return Ds(e,Ac,t,n)??{}}function Fc(){return Ws(Ac)}function Ic(e,t,n){return Ds(e,Mc,t,n)??{}}const Lc=new Set(Object.keys(Tc.fields));function Rc(e){return Lc.has(e)}function zc(){return[...Lc]}const Bc={padding:1};function Vc(e){let t=new Map;for(let[n,r]of Object.entries(Bc)){let i=e[n];t.set(n,typeof i==`number`?i:r)}return t}function Hc(e,t,n,r){return n.cache===void 0?(ps.includes(r)&&e.issues.push({path:`${t}.cache`,message:`${r} variables must declare a cache policy (one of: ${us.join(`, `)})`,line:U(e.source,t.split(`.`))}),null):qc(e,`${t}.cache`,n.cache)}function Uc(e,t,n){if(n.cache!==void 0)return qc(e,`${t}.cache`,n.cache)??void 0}function Wc(e){return{required:!0,json:Xc(),parse:(t,n,r,i)=>Hc(t,n,i,e)??void 0}}function Gc(){return{required:!1,json:Xc(),parse:(e,t,n,r)=>Uc(e,t,r)}}const Kc={noun:`cache`,arms:{ttl:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`&&Qc(n)?{ttl:n}:js(e,t,`cache.ttl must be a duration string like "5s", "100ms", "2m", "1h"; got ${W(n)}`)},watch_file:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`&&n!==``?{watch_file:n}:js(e,t,`cache.watch_file must be a non-empty path string, got ${W(n)}`)},depends_on:{json:{type:`array`,items:{type:`string`}},parse:(e,t,n)=>Array.isArray(n)&&n.every(e=>typeof e==`string`)?{depends_on:n}:js(e,t,`cache.depends_on must be an array of variable-name strings, got ${W(n)}`)},key:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`&&n!==``?{key:n}:js(e,t,`cache.key must be a non-empty template string, got ${W(n)}`)},never:{json:{const:!0},parse:(e,t,n)=>n===!0?{never:!0}:js(e,t,`cache.never must be the literal boolean true, got ${W(n)}`)}}};function qc(e,t,n){return Ms(e,Kc,t,n)}const Jc={noun:`time-variable cache`,arms:{ttl:Kc.arms.ttl}};function Yc(){return{required:!1,json:qs(Jc),parse:(e,t,n,r)=>r.cache===void 0?void 0:Ms(e,Jc,`${t}.cache`,r.cache)??void 0}}function Xc(){return qs(Kc)}const Zc=/^(\d+(?:\.\d+)?)(ms|s|m|h)$/;function Qc(e){return Zc.test(e)}function $c(e,t,n){if(n===void 0)return{};if(!Ts(n))return e.issues.push({path:t,message:`${t} must be an object, got ${Es(n)}`,line:U(e.source,t.split(`.`))}),{};let r={};for(let[i,a]of Object.entries(n)){let n=Ns(e,xl,`${t}.${i}`,a);n!==null&&(r[i]=n)}return r}function el(){return{required:!0,json:{type:[`string`,`number`,`boolean`]},parse:(e,t,n,r)=>{let i=r.value;if(typeof i!=`string`&&typeof i!=`number`&&typeof i!=`boolean`){e.issues.push({path:`${t}.value`,message:`literal value must be string|number|boolean, got ${Es(i)}`,line:U(e.source,t.split(`.`))});return}return i}}}function tl(){return{required:!0,json:{enum:[...fs]},parse:(e,t,n,r)=>{let i=r.field;if(typeof i!=`string`||!fs.includes(i)){e.issues.push({path:`${t}.field`,message:`git field must be one of: ${fs.join(`, `)}, got ${JSON.stringify(i)}`,line:U(e.source,[...t.split(`.`),`field`])});return}return i}}}function nl(){return{required:!1,json:{type:[`string`,`number`,`boolean`]},parse:(e,t,n,r)=>{let i=r.type;return xs(e,t,r,i===`number`||i===`boolean`||i===`string`?i:`string`)}}}const rl={noun:`parse`,arms:{text:{json:{const:!0},parse:(e,t,n)=>n===!0?{text:!0}:js(e,t,`parse.text must be the literal boolean true, got ${W(n)}`)},regex:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`?il(e,t,n):js(e,t,`parse.regex must be a pattern string, got ${W(n)}`)},json:{json:{const:!0},parse:(e,t,n)=>n===!0?{json:!0}:js(e,t,`parse.json must be the literal boolean true, got ${W(n)}`)}}};function il(e,t,n){let r;try{new RegExp(n),r=RegExp(`${n}|`).exec(``).length-1}catch(n){return js(e,t,`parse.regex is not a valid regular expression: ${n.message}`)}return r>=1?{regex:n}:js(e,t,`parse.regex must contain a capture group — its group 1 is the value; got ${JSON.stringify(n)}`)}function al(){return{required:!1,json:qs(rl),parse:(e,t,n,r)=>(r.regex!==void 0&&e.issues.push({path:`${t}.regex`,message:`${t}.regex was retired; the regex is the parse step's regex arm now: parse: { regex: ${JSON.stringify(r.regex)} }`,line:U(e.source,[...t.split(`.`),`regex`])}),r.parse===void 0?void 0:Ms(e,rl,`${t}.parse`,r.parse)??void 0)}}function ol(){return{required:!1,json:{type:[`string`,`number`,`boolean`,`array`,`object`],description:`The value published when the source fails: a string under the text/regex parse arms, any non-null JSON value under the json arm`},parse:(e,t,n,r)=>Ts(r.parse)&&`json`in r.parse?sl(e,t,r.default):Ss(e,t,r,`default`)}}function sl(e,t,n){if(n!==void 0)return cl(n)?n:js(e,`${t}.default`,`${t}.default must be a JSON value (a json-parsed source's document), got ${W(n)}`)??void 0}function cl(e){return e!==null&&ll(e)}function ll(e){if(e===null)return!0;switch(typeof e){case`string`:case`boolean`:return!0;case`number`:return Number.isFinite(e);case`object`:{if(Array.isArray(e))return e.every(ll);let t=Object.getPrototypeOf(e);return(t===Object.prototype||t===null)&&Object.values(e).every(ll)}default:return!1}}const ul={value:el(),default:G()},dl={path:Vs(),type:Hs([`string`,`number`,`boolean`]),default:nl()},fl={name:Vs(),default:G()},pl={path:Vs(),readMode:Hs([`whole`,`first-line`]),parse:al(),cache:Wc(`file`),default:ol()},ml={command:Vs(),parse:al(),cache:Wc(`shell`),default:ol()},hl={template:Vs(),cache:Gc(),default:G()},gl={layout:Vs(),cache:Yc(),default:G()},_l={field:tl(),cache:Wc(`git`),default:G()},vl={key:Vs(),default:G()},yl=`kind`;function bl(e,t){return{...Ps(yl,e,t),parse:(n,r,i)=>{let a=Os(n,t,r,i);return a===null?null:{kind:e,...a}}}}const xl={tag:yl,noun:`source kind`,memberNoun:`variable`,arms:{literal:bl(`literal`,ul),input:bl(`input`,dl),env:bl(`env`,fl),file:bl(`file`,pl),shell:bl(`shell`,ml),template:bl(`template`,hl),time:bl(`time`,gl),git:bl(`git`,_l),state:bl(`state`,vl)}};function Sl(){return Ks(xl)}function Cl(){return{type:`object`,additionalProperties:Sl()}}function wl(e){return e.replace(/[^A-Za-z0-9]+/g,`_`)}const Tl=`groups.`,El=`menus.`,Dl=`edit.`,K=`candybar.`,Ol=[Tl,El,Dl,K];function kl(e){return Ol.some(t=>e.startsWith(t))}function Al(e){let t=wl(e);return Ol.find(e=>t.startsWith(wl(e)))}function jl(e,t,n,r){for(let i of[`variables`,`actions`,`segments`])for(let a of Object.keys(t[i]??{}))a.startsWith(n)&&e.issues.push({path:`${i}.${a}`,message:`"${a}" is in the reserved "${n}" namespace (synthesized by ${r}) — rename it`,line:U(e.source,[`root`])})}const Ml=new Map([[`gitTaculous`,`gitaculous`],[`git`,`gitaculous`],[`settings.menu`,`candybar.menu`]]);function Nl(e){let t=Ml.get(e);return t===void 0?``:` (the built-in segment "${e}" was renamed to "${t}" — update this reference)`}const Pl=/^[A-Za-z_][A-Za-z0-9_]*$/,Fl={pattern:Pl.source},Il={anyOf:[{type:`boolean`},{type:`string`},{type:`integer`}]},Ll={type:`object`,additionalProperties:!1,required:[`label`,`domain`,`default`],properties:{label:{type:`string`,pattern:`^[^\\n\\r]+$`},domain:{anyOf:[{const:`bool`},{type:`array`,items:{type:`string`,pattern:`^[^/\\n\\r]+$`},minItems:1,uniqueItems:!0},{type:`object`,additionalProperties:!1,required:[`min`,`max`],properties:{min:{type:`integer`},max:{type:`integer`}}}]},default:Il}},Rl=[`label`,`domain`,`default`];function zl(e,t,n){e.issues.push({path:t,message:n,line:U(e.source,t.split(`.`))})}function Bl(e,t,n){if(n===`bool`)return`bool`;if(Array.isArray(n)){let r=n.filter(e=>typeof e==`string`);if(n.length===0||r.length!==n.length)return zl(e,t,`a list domain must be a non-empty list of words, got ${JSON.stringify(n)}`);if(new Set(r).size!==r.length)return zl(e,t,`a list domain names each word once, got ${JSON.stringify(n)}`);let i=r.filter(e=>e===``||e.includes(`/`)||/[\n\r]/.test(e));return i.length>0?zl(e,t,`a list domain's words must be non-empty, slash-free, and newline-free — configure mode writes each on the set-state wire — got ${JSON.stringify(i)}`):r}if(Ts(n)){let{min:r,max:i}=n;return Object.keys(n).filter(e=>e!==`min`&&e!==`max`).length===0&&Number.isInteger(r)&&Number.isInteger(i)&&r<=i?{min:r,max:i}:zl(e,t,`a range domain is { min, max } with integers min ≤ max, got ${JSON.stringify(n)}`)}return zl(e,t,`domain must be "bool", a list of words, or { min, max }, got ${W(n)}`)}function Vl(e,t,n){if(!Ts(n))return zl(e,t,`${t} must be { label, domain, default }, got ${Es(n)}`);for(let r of Object.keys(n))Rl.includes(r)||zl(e,`${t}.${r}`,`Unknown setting key "${r}". Expected one of: ${Rl.join(`, `)}`);let{label:r}=n,i=typeof r==`string`&&r.length>0&&!/[\n\r]/.test(r);i||zl(e,`${t}.label`,`a setting needs a one-line, non-empty "label" — the name its control shows, spliced into a synthesized template string — got ${W(r)}`);let a=Bl(e,`${t}.domain`,n.domain);if(!i||a===void 0)return;let o={label:r,domain:a,default:n.default};return!Hl(n.default)||!ms(o,n.default)?zl(e,`${t}.default`,`default must be ${_s(o)}, got ${W(n.default)}`):o}function Hl(e){return typeof e==`boolean`||typeof e==`string`||typeof e==`number`}function Ul(){return{required:!1,json:{type:`object`,propertyNames:Fl,additionalProperties:Ll},parse:(e,t,n,r)=>{let i=r[n];if(i===void 0)return;let a=`${t}.${n}`;if(!Ts(i))return zl(e,a,`${a} must be an object of name → { label, domain, default }, got ${Es(i)}`);let o=Object.create(null);for(let[t,n]of Object.entries(i)){if(!Pl.test(t)){zl(e,`${a}.${t}`,`setting name "${t}" is read as .settings.${t} in a template, so it must be an identifier (letters, digits, _; not starting with a digit)`);continue}let r=Vl(e,`${a}.${t}`,n);r!==void 0&&(o[t]=r)}return o}}}function Wl(){return{required:!1,json:{type:`string`,minLength:1,pattern:`^[^:/]+$`},parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0)return typeof i==`string`&&i.length>0&&!/[:/]/.test(i)?i:zl(e,`${t}.${n}`,`a placement "id" must be a non-empty string without "/" or ":", got ${W(i)}`)}}}function Gl(){return{required:!1,json:{type:`object`,propertyNames:Fl,additionalProperties:Il},parse:(e,t,n,r)=>{let i=r[n];if(i===void 0)return;let a=`${t}.${n}`;if(!Ts(i))return zl(e,a,`a placement's "settings" must be an object of setting name → value, got ${Es(i)}`);let o=Object.create(null);for(let[t,n]of Object.entries(i))Hl(n)?o[t]=n:zl(e,`${a}.${t}`,`setting "${t}" must be a boolean, a word, or a number, got ${Es(n)}`);return o}}}function Kl(e){return new Set(Object.keys(e.segments).filter(e=>!kl(e)))}function ql(e,t,n){if(t===void 0)return{};if(!Ts(t))return e.issues.push({path:`segments`,message:`segments must be an object, got ${Es(t)}`,line:U(e.source,[`segments`])}),{};let r={};for(let[i,a]of Object.entries(t)){let t=Ds(e,n.has(i)?$l:Ql,`segments.${i}`,a);t!==null&&(r[i]=t)}return r}function Jl(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>r[n]===void 0?js(e,`${t}.${n}`,`${t} declares no template — only a segment the bundled default declares may omit it (inheriting the bundled template); a segment of your own needs its own${Nl(t.slice(9))}`)??void 0:bs(e,t,r,n)??void 0}}function Yl(){return{required:!1,json:{anyOf:[{const:`auto`},{const:`fill`},{type:`integer`,minimum:1}]},parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0){if(i===`auto`)return`auto`;if(i===`fill`)return`fill`;if(typeof i==`number`&&Number.isInteger(i)&&i>0)return i;e.issues.push({path:`${t}.${n}`,message:`width must be "auto", "fill", or a positive integer, got ${W(i)}`,line:U(e.source,[...t.split(`.`),n])})}}}}function Xl(){return{required:!1,json:Cl(),parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0)return $c(e,`${t}.${n}`,i)}}}const Zl={template:Jl(),description:G(),width:Yl(),justify:Hs(vs),truncate:Hs(ys),bg:G(),fg:G(),when:G(),palette:Bs(),vars:Xl(),settings:Ul()},Ql={noun:`segment key`,fields:Zl},$l={noun:`segment key`,fields:{...Zl,template:G()}},eu=`#/definitions/LayoutNode`,tu={kind:`container`,direction:`vertical`,children:[]};function nu(e){return{required:!0,json:{const:e},parse:()=>e}}function ru(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>{let i=r[n];return typeof i==`string`&&i.length>0?i:(e.issues.push({path:`${t}.${n}`,message:`a segment node must have a non-empty "name" (a segment name), got ${W(i)}`,line:U(e.source,[`root`])}),``)}}}function iu(){return{required:!0,json:{enum:[...Qo]},parse:(e,t,n,r)=>{let i=r[n];return typeof i==`string`&&Qo.includes(i)?i:(e.issues.push({path:`${t}.${n}`,message:`a container "direction" must be one of: ${Qo.join(`, `)} (got ${JSON.stringify(i)})`,line:U(e.source,[`root`])}),`vertical`)}}}function au(e){return{required:!0,json:{type:`array`,items:{$ref:eu}},parse:(t,n,r,i)=>{let a=i[r];return Array.isArray(a)?a.map((i,a)=>e(t,`${n}.${r}[${a}]`,i)):(t.issues.push({path:`${n}.${r}`,message:`a container must have a "children" array of layout nodes, got ${Es(a)}`,line:U(t.source,[`root`])}),[])}}}const ou={noun:`layout-node key`,fields:{kind:nu(`segment`),name:ru(),when:G(),id:Wl(),settings:Gl()}},su=()=>Hs(Fi),cu={noun:`layout-node key`,fields:{kind:nu(`container`),direction:iu(),children:au(Fs(()=>pu)),when:G(),distribution:su()}};function lu(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>{let i=r[n];return typeof i==`string`&&i.length>0?i:(e.issues.push({path:`${t}.${n}`,message:`a "seg" node must have a non-empty segment name, got ${W(i)}`,line:U(e.source,[`root`])}),``)}}}const uu={noun:`layout-node key`,fields:{seg:lu(),when:G(),id:Wl(),settings:Gl()}},du={noun:`layout-node key`,fields:{h:au(Fs(()=>pu)),when:G(),distribution:su()}},fu={noun:`layout-node key`,fields:{v:au(Fs(()=>pu)),when:G(),distribution:su()}},pu=(e,t,n)=>{if(typeof n==`string`)return n.length===0?(e.issues.push({path:t,message:`a bare-string layout node must be a non-empty segment name`,line:U(e.source,[`root`])}),tu):{kind:`segment`,name:n};if(!Ts(n))return e.issues.push({path:t,message:`a layout node must be a string (segment name) or an object with "kind" / "seg" / "h" / "v", got ${Es(n)}`,line:U(e.source,[`root`])}),tu;if(n.kind===`container`)return Ds(e,cu,t,n)??tu;if(n.kind===`segment`)return Ds(e,ou,t,n)??tu;if(n.kind===`cells`)return e.issues.push({path:t,message:`kind: "cells" is no longer supported — use the h-arm spelling instead:
41
41
  Old: { kind: "cells", segments: ["seg1", "seg2"] }
42
- New: { h: ["seg1", "seg2"] }`,line:U(e.source,[`root`])}),Zl;if(n.kind===`group`){let r=Cs(e,gu,t,n);return r===null?Zl:(e.groups.push({name:r.name,label:r.label,...r.open!==void 0&&{open:r.open},...r.direction!==void 0&&{direction:r.direction},...r.key!==void 0&&{key:r.key},...r.bg!==void 0&&{bg:r.bg},...r.fg!==void 0&&{fg:r.fg},...r.when!==void 0&&{when:r.when},path:t}),vu(r))}let r=`h`in n,i=`v`in n,a=`seg`in n;if(+!!r+ +!!i+ +!!a>1){let r=[`seg`,`h`,`v`].filter(e=>e in n);return e.issues.push({path:t,message:`a layout node may have exactly one of "seg", "h", or "v" — got ${r.map(e=>`"${e}"`).join(` and `)} together`,line:U(e.source,[`root`])}),Zl}if(a){let r=Cs(e,ou,t,n);return r===null?Zl:{kind:`segment`,name:r.seg,...r.when!==void 0&&{when:r.when},...r.id!==void 0&&{id:r.id},...r.settings!==void 0&&{settings:r.settings}}}if(r){let r=Cs(e,su,t,n);return r===null?Zl:{kind:`container`,direction:`horizontal`,children:r.h,...r.when!==void 0&&{when:r.when},...r.distribution!==void 0&&{distribution:r.distribution}}}if(i){let r=Cs(e,cu,t,n);return r===null?Zl:{kind:`container`,direction:`vertical`,children:r.v,...r.when!==void 0&&{when:r.when},...r.distribution!==void 0&&{distribution:r.distribution}}}return e.issues.push({path:`${t}.kind`,message:`a layout node "kind" must be "container", "segment", or "group", or use the terse A-grammar: a bare string, or an object with "seg", "h", or "v" (got ${JSON.stringify(n.kind)})`,line:U(e.source,[`root`])}),Zl};function uu(){return{required:!0,json:{type:`object`,propertyNames:{pattern:Ws.source},additionalProperties:{$ref:Xl}},parse:(e,t,n,r)=>{let i=r[n];if(!xs(i))return e.issues.push({path:`${t}.${n}`,message:`"rows" must be an object of row name → layout node, got ${Ss(i)}`,line:U(e.source,[...t.split(`.`),n])}),{};let a={};for(let[r,o]of Object.entries(i)){if(!Ws.test(r)){e.issues.push({path:`${t}.${n}.${r}`,message:`row name "${r}" must be an identifier (letters, digits, _; not starting with a digit) — it names the row in the config file and merges by name over the bundled default's rows`,line:U(e.source,[...t.split(`.`),n,r])});continue}a[r]=lu(e,`${t}.${n}.${r}`,o)}return a}}}const du={noun:`root key`,fields:{rows:uu(),when:G(),distribution:ru()}};function fu(e,t,n){return xs(n)&&`rows`in n?Cs(e,du,t,n)??{rows:{}}:lu(e,t,n)}function pu(){return{required:!0,json:{type:`string`,pattern:Ws.source},parse:(e,t,n,r)=>{let i=r[n];if(typeof i!=`string`||!Ws.test(i)||i===`closed`){e.issues.push({path:`${t}.${n}`,message:`a group "name" must be an identifier (letters, digits, _; not starting with a digit) and not the reserved "${ic}", got ${W(i)}`,line:U(e.source,[`root`])});return}return i}}}function mu(){return{required:!1,json:{type:`string`,minLength:1},parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0){if(typeof i!=`string`||i===``||i.includes(`/`)){e.issues.push({path:`${t}.${n}`,message:`a group "key" must be a non-empty, slash-free SessionState key, got ${W(i)}`,line:U(e.source,[`root`])});return}return i}}}}function hu(){return{required:!0,json:{type:`string`,pattern:`^[^\\n\\r]*$`},parse:(e,t,n,r)=>{let i=gs(e,t,r,n);if(i!==null){if(/[\n\r]/.test(i)){e.issues.push({path:`${t}.${n}`,message:`${t}.${n}: group label must not contain newlines`,line:U(e.source,[...t.split(`.`),n])});return}return i}}}}const gu={noun:`layout-node key`,fields:{kind:Ql(`group`),name:pu(),label:hu(),open:Ns(),direction:Rs(Xo),key:mu(),bg:G(),fg:G(),when:G(),distribution:ru(),children:tu(js(()=>lu))}};function _u(e){return e.key??`groups.`+e.name}function vu(e){let t=xl+e.name;return lc(t,{variable:t,key:_u(e),member:e.name},{kind:`container`,direction:e.direction??`vertical`,children:e.children,...e.distribution!==void 0&&{distribution:e.distribution}},`drop`,e.when)}function yu(e,t,n){e.issues.push({path:t,message:n,line:U(e.source,[`root`])})}function bu(e,t){Dl(e,t,xl,`group nodes`);let n=e.groups;if(n.length===0)return;let r=new Set;for(let t of n)r.has(t.name)&&yu(e,t.path,`duplicate group name "${t.name}" — group names must be unique (they name the synthesized state var, action, and toggle segment)`),r.add(t.name);for(let t of n)for(let r of n)t!==r&&t.path.startsWith(`${r.path}.`)&&_u(t)===_u(r)&&yu(e,t.path,`group "${t.name}" shares key "${_u(t)}" with its ancestor group "${r.name}" — a shared key holds ONE open group, so an ancestor and a descendant cannot share one. Sibling accordions share a key; nested groups use distinct keys.`);let i=new Map;for(let t of n){let n=_u(t);if(i.has(n)||i.set(n,ic),t.open===!0){let r=i.get(n);r!==`closed`&&yu(e,t.path,`groups "${r}" and "${t.name}" share key "${n}" and both declare open: true — a shared key holds one open group; pick one`),i.set(n,t.name)}}let a={},o={},s={};for(let e of n){let t=xl+e.name,r=_u(e),c=n.filter(t=>t!==e&&e.path.startsWith(t.path+`.`)).length,l=` `.repeat(c);a[t]=pc(r,i.get(r)),o[t]=mc(r,e.name),s[t]={template:fc(t,`${l}${e.label} ▸`,`${l}${e.label} ▾`),...e.bg!==void 0&&{bg:e.bg},...e.fg!==void 0&&{fg:e.fg}}}t.variables={...t.variables??{},...a},t.actions={...t.actions??{},...o},t.segments={...t.segments??{},...s}}var xu=class extends Error{name=`TemplateError`;kind=`EvalError`;pos;source;constructor(e,t,n={}){super(e),this.pos=t,this.source=n.source}get sourceSnippet(){return this.source?Ou(this.source,this.pos):``}toString(){let e=`${this.name}: ${this.message}\n at line ${this.pos.line}, column ${this.pos.column}`,t=this.sourceSnippet;return t?`${e}\n\n${t}`:e}},Su=class extends xu{name=`ParseError`;kind=`ParseError`;expected;found;constructor(e,t,n={}){super(e,t,n),this.expected=n.expected,this.found=n.found}},Cu=class extends xu{name=`EvalError`;kind=`EvalError`},wu=class extends Cu{name=`FuncNotFoundError`;kind=`FuncNotFoundError`;funcName;suggestions;constructor(e,t,n={}){let r=ku(e,n.available??[]),i=r.length===0?``:` (did you mean: ${r.join(`, `)}?)`;super(`function ${JSON.stringify(e)} is not registered${i}`,t,n),this.funcName=e,this.suggestions=r}},Tu=class extends Cu{name=`TypeMismatchError`;kind=`TypeMismatchError`;funcName;argIndex;expected;receivedSummary;constructor(e,t,n,r,i,a={}){super(`function ${JSON.stringify(e)} arg ${t}: expected ${n}, but a ${r} flowed in. Pass it through \`unstyled\` (or your engine's flatten function) to convert.`,i,a),this.funcName=e,this.argIndex=t,this.expected=n,this.receivedSummary=r}},Eu=class extends Cu{name=`MissingFieldError`;kind=`MissingFieldError`;path;constructor(e,t,n={}){super(`field "${e.join(`.`)}" not found on receiver`,t,n),this.path=e}},Du=class extends Cu{name=`FailError`;kind=`FailError`;constructor(e,t={line:0,column:0,offset:0},n={}){super(e,t,n)}};function Ou(e,t){let n=e.split(`
42
+ New: { h: ["seg1", "seg2"] }`,line:U(e.source,[`root`])}),tu;if(n.kind===`group`){let r=Ds(e,bu,t,n);return r===null?tu:(e.groups.push({name:r.name,label:r.label,...r.open!==void 0&&{open:r.open},...r.direction!==void 0&&{direction:r.direction},...r.key!==void 0&&{key:r.key},...r.bg!==void 0&&{bg:r.bg},...r.fg!==void 0&&{fg:r.fg},...r.when!==void 0&&{when:r.when},path:t}),Su(r))}let r=`h`in n,i=`v`in n,a=`seg`in n;if(+!!r+ +!!i+ +!!a>1){let r=[`seg`,`h`,`v`].filter(e=>e in n);return e.issues.push({path:t,message:`a layout node may have exactly one of "seg", "h", or "v" — got ${r.map(e=>`"${e}"`).join(` and `)} together`,line:U(e.source,[`root`])}),tu}if(a){let r=Ds(e,uu,t,n);return r===null?tu:{kind:`segment`,name:r.seg,...r.when!==void 0&&{when:r.when},...r.id!==void 0&&{id:r.id},...r.settings!==void 0&&{settings:r.settings}}}if(r){let r=Ds(e,du,t,n);return r===null?tu:{kind:`container`,direction:`horizontal`,children:r.h,...r.when!==void 0&&{when:r.when},...r.distribution!==void 0&&{distribution:r.distribution}}}if(i){let r=Ds(e,fu,t,n);return r===null?tu:{kind:`container`,direction:`vertical`,children:r.v,...r.when!==void 0&&{when:r.when},...r.distribution!==void 0&&{distribution:r.distribution}}}return e.issues.push({path:`${t}.kind`,message:`a layout node "kind" must be "container", "segment", or "group", or use the terse A-grammar: a bare string, or an object with "seg", "h", or "v" (got ${JSON.stringify(n.kind)})`,line:U(e.source,[`root`])}),tu};function mu(){return{required:!0,json:{type:`object`,propertyNames:{pattern:Js.source},additionalProperties:{$ref:eu}},parse:(e,t,n,r)=>{let i=r[n];if(!Ts(i))return e.issues.push({path:`${t}.${n}`,message:`"rows" must be an object of row name → layout node, got ${Es(i)}`,line:U(e.source,[...t.split(`.`),n])}),{};let a={};for(let[r,o]of Object.entries(i)){if(!Js.test(r)){e.issues.push({path:`${t}.${n}.${r}`,message:`row name "${r}" must be an identifier (letters, digits, _; not starting with a digit) — it names the row in the config file and merges by name over the bundled default's rows`,line:U(e.source,[...t.split(`.`),n,r])});continue}a[r]=pu(e,`${t}.${n}.${r}`,o)}return a}}}const hu={noun:`root key`,fields:{rows:mu(),when:G(),distribution:su()}};function gu(e,t,n){return Ts(n)&&`rows`in n?Ds(e,hu,t,n)??{rows:{}}:pu(e,t,n)}function _u(){return{required:!0,json:{type:`string`,pattern:Js.source},parse:(e,t,n,r)=>{let i=r[n];if(typeof i!=`string`||!Js.test(i)||i===`closed`){e.issues.push({path:`${t}.${n}`,message:`a group "name" must be an identifier (letters, digits, _; not starting with a digit) and not the reserved "${cc}", got ${W(i)}`,line:U(e.source,[`root`])});return}return i}}}function vu(){return{required:!1,json:{type:`string`,minLength:1},parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0){if(typeof i!=`string`||i===``||i.includes(`/`)){e.issues.push({path:`${t}.${n}`,message:`a group "key" must be a non-empty, slash-free SessionState key, got ${W(i)}`,line:U(e.source,[`root`])});return}return i}}}}function yu(){return{required:!0,json:{type:`string`,pattern:`^[^\\n\\r]*$`},parse:(e,t,n,r)=>{let i=bs(e,t,r,n);if(i!==null){if(/[\n\r]/.test(i)){e.issues.push({path:`${t}.${n}`,message:`${t}.${n}: group label must not contain newlines`,line:U(e.source,[...t.split(`.`),n])});return}return i}}}}const bu={noun:`layout-node key`,fields:{kind:nu(`group`),name:_u(),label:yu(),open:Ls(),direction:Hs(Qo),key:vu(),bg:G(),fg:G(),when:G(),distribution:su(),children:au(Fs(()=>pu))}};function xu(e){return e.key??`groups.`+e.name}function Su(e){let t=Tl+e.name;return pc(t,{variable:t,key:xu(e),member:e.name},{kind:`container`,direction:e.direction??`vertical`,children:e.children,...e.distribution!==void 0&&{distribution:e.distribution}},`drop`,e.when)}function Cu(e,t,n){e.issues.push({path:t,message:n,line:U(e.source,[`root`])})}function wu(e,t){jl(e,t,Tl,`group nodes`);let n=e.groups;if(n.length===0)return;let r=new Set;for(let t of n)r.has(t.name)&&Cu(e,t.path,`duplicate group name "${t.name}" — group names must be unique (they name the synthesized state var, action, and toggle segment)`),r.add(t.name);for(let t of n)for(let r of n)t!==r&&t.path.startsWith(`${r.path}.`)&&xu(t)===xu(r)&&Cu(e,t.path,`group "${t.name}" shares key "${xu(t)}" with its ancestor group "${r.name}" — a shared key holds ONE open group, so an ancestor and a descendant cannot share one. Sibling accordions share a key; nested groups use distinct keys.`);let i=new Map;for(let t of n){let n=xu(t);if(i.has(n)||i.set(n,cc),t.open===!0){let r=i.get(n);r!==`closed`&&Cu(e,t.path,`groups "${r}" and "${t.name}" share key "${n}" and both declare open: true — a shared key holds one open group; pick one`),i.set(n,t.name)}}let a={},o={},s={};for(let e of n){let t=Tl+e.name,r=xu(e),c=n.filter(t=>t!==e&&e.path.startsWith(t.path+`.`)).length,l=` `.repeat(c);a[t]=_c(r,i.get(r)),o[t]=vc(r,e.name),s[t]={template:gc(t,`${l}${e.label} ▸`,`${l}${e.label} ▾`),...e.bg!==void 0&&{bg:e.bg},...e.fg!==void 0&&{fg:e.fg}}}t.variables={...t.variables??{},...a},t.actions={...t.actions??{},...o},t.segments={...t.segments??{},...s}}var Tu=class extends Error{name=`TemplateError`;kind=`EvalError`;pos;source;constructor(e,t,n={}){super(e),this.pos=t,this.source=n.source}get sourceSnippet(){return this.source?Mu(this.source,this.pos):``}toString(){let e=`${this.name}: ${this.message}\n at line ${this.pos.line}, column ${this.pos.column}`,t=this.sourceSnippet;return t?`${e}\n\n${t}`:e}},Eu=class extends Tu{name=`ParseError`;kind=`ParseError`;expected;found;constructor(e,t,n={}){super(e,t,n),this.expected=n.expected,this.found=n.found}},Du=class extends Tu{name=`EvalError`;kind=`EvalError`},Ou=class extends Du{name=`FuncNotFoundError`;kind=`FuncNotFoundError`;funcName;suggestions;constructor(e,t,n={}){let r=Nu(e,n.available??[]),i=r.length===0?``:` (did you mean: ${r.join(`, `)}?)`;super(`function ${JSON.stringify(e)} is not registered${i}`,t,n),this.funcName=e,this.suggestions=r}},ku=class extends Du{name=`TypeMismatchError`;kind=`TypeMismatchError`;funcName;argIndex;expected;receivedSummary;constructor(e,t,n,r,i,a={}){super(`function ${JSON.stringify(e)} arg ${t}: expected ${n}, but a ${r} flowed in. Pass it through \`unstyled\` (or your engine's flatten function) to convert.`,i,a),this.funcName=e,this.argIndex=t,this.expected=n,this.receivedSummary=r}},Au=class extends Du{name=`MissingFieldError`;kind=`MissingFieldError`;path;constructor(e,t,n={}){super(`field "${e.join(`.`)}" not found on receiver`,t,n),this.path=e}},ju=class extends Du{name=`FailError`;kind=`FailError`;constructor(e,t={line:0,column:0,offset:0},n={}){super(e,t,n)}};function Mu(e,t){let n=e.split(`
43
43
  `),r=t.line-1,i=[];if(r-1>=0&&r-1<n.length&&i.push({num:r,text:n[r-1]??``}),r>=0&&r<n.length&&i.push({num:r+1,text:n[r]??``}),r+1<n.length&&i.push({num:r+2,text:n[r+1]??``}),i.length===0)return``;let a=String(i[i.length-1]?.num??1).length,o=[];for(let e of i)if(o.push(` ${String(e.num).padStart(a,` `)} | ${e.text}`),e.num===t.line){let e=` ${` `.repeat(a)} | `,n=` `.repeat(Math.max(0,t.column-1));o.push(`${e}${n}^`)}return o.join(`
44
- `)}function ku(e,t){if(t.length===0)return[];let n=t.map(t=>({name:t,dist:Au(e,t)})).sort((e,t)=>e.dist-t.dist),r=Math.max(2,Math.floor(e.length/2));return n.filter(e=>e.dist<=r).slice(0,3).map(e=>e.name)}function Au(e,t){if(e===t)return 0;let n=e.length,r=t.length;if(n===0)return r;if(r===0)return n;let i=Array(r+1),a=Array(r+1);for(let e=0;e<=r;e++)i[e]=e;for(let o=1;o<=n;o++){a[0]=o;for(let n=1;n<=r;n++){let r=e[o-1]===t[n-1]?0:1;a[n]=Math.min((a[n-1]??0)+1,(i[n]??0)+1,(i[n-1]??0)+r)}for(let e=0;e<=r;e++)i[e]=a[e]??0}return i[r]??0}function ju(e){throw Error(`unhandled node kind: ${JSON.stringify(e)}`)}const Mu=new Map([[`if`,`If`],[`else`,`Else`],[`end`,`End`],[`range`,`Range`],[`with`,`With`],[`break`,`Break`],[`continue`,`Continue`],[`define`,`Define`],[`template`,`Template`],[`block`,`Block`],[`true`,`Bool`],[`false`,`Bool`],[`nil`,`Nil`]]),Nu={left:`{{`,right:`}}`};var Pu=class{src;leftDelim;rightDelim;offset=0;line=1;column=1;mode=`text`;pending;constructor(e,t=Nu){this.src=e,this.leftDelim=t.left,this.rightDelim=t.right}pos(){return{line:this.line,column:this.column,offset:this.offset}}err(e,t,n={}){return new Su(e,t,{...n,source:this.src})}next(){if(this.pending){let e=this.pending;return this.pending=void 0,e}return this.read()}peek(){return this.pending||=this.read(),this.pending}read(){switch(this.mode){case`text`:return this.readText();case`action`:return this.readAction();case`done`:return this.makeToken(`EOF`,``,this.pos())}}readText(){if(this.offset>=this.src.length)return this.mode=`done`,this.makeToken(`EOF`,``,this.pos());let e=this.pos(),t=this.offset;for(;t<this.src.length&&!this.src.startsWith(this.leftDelim,t);)t+=1;let n=t<this.src.length&&this.src[t+this.leftDelim.length]===`-`,r=t;if(n)for(;r>this.offset&&Fu(this.src[r-1]??``);)--r;if(r>this.offset){let t=this.src.slice(this.offset,r);return this.advanceTo(r),this.makeToken(`Text`,t,e)}return this.advanceTo(t),this.emitLeftDelim(n)}emitLeftDelim(e){let t=this.pos();if(this.advanceBy(this.leftDelim.length),e)for(this.advanceBy(1);Fu(this.src[this.offset]??``);)this.advanceBy(1);return this.mode=`action`,this.src.startsWith(`/*`,this.offset)?this.readComment(t,e):this.makeToken(`LeftDelim`,e?`${this.leftDelim}-`:this.leftDelim,t,e?{trimLeft:!0}:{})}readComment(e,t){this.advanceBy(2);let n=this.offset,r=this.src.indexOf(`*/`,this.offset);if(r===-1)throw this.err(`unclosed comment`,e,{expected:`*/${this.rightDelim}`,found:`end of input`});this.advanceTo(r);let i=this.src.slice(n,r).trim();for(this.advanceBy(2);Fu(this.src[this.offset]??``);)this.advanceBy(1);let a=!1;if(this.src[this.offset]===`-`&&(a=!0,this.advanceBy(1)),!this.src.startsWith(this.rightDelim,this.offset))throw this.err(`expected \`${this.rightDelim}\` to close comment`,this.pos(),{expected:this.rightDelim,found:this.src[this.offset]??`end of input`});if(this.advanceBy(this.rightDelim.length),a)for(;Fu(this.src[this.offset]??``);)this.advanceBy(1);return this.mode=`text`,this.makeToken(`Comment`,i,e,{...t?{trimLeft:!0}:{},...a?{trimRight:!0}:{}})}readAction(){if(this.skipActionSpaces(),this.src.startsWith(`-${this.rightDelim}`,this.offset)){let e=this.pos();for(this.advanceBy(1+this.rightDelim.length),this.mode=`text`;Fu(this.src[this.offset]??``);)this.advanceBy(1);return this.makeToken(`RightDelim`,`-${this.rightDelim}`,e,{trimRight:!0})}if(this.src.startsWith(this.rightDelim,this.offset)){let e=this.pos();return this.advanceBy(this.rightDelim.length),this.mode=`text`,this.makeToken(`RightDelim`,this.rightDelim,e)}if(this.offset>=this.src.length)throw this.err(`unclosed action`,this.pos(),{expected:this.rightDelim,found:`end of input`});let e=this.src[this.offset],t=this.pos();switch(e){case`(`:return this.advanceBy(1),this.makeToken(`LeftParen`,`(`,t);case`)`:return this.advanceBy(1),this.makeToken(`RightParen`,`)`,t);case`|`:return this.advanceBy(1),this.makeToken(`Pipe`,`|`,t);case`,`:return this.advanceBy(1),this.makeToken(`Comma`,`,`,t);case`:`:if(this.src[this.offset+1]===`=`)return this.advanceBy(2),this.makeToken(`Declare`,`:=`,t);throw this.err("expected `:=`",t,{expected:`:=`,found:`:`});case`=`:return this.advanceBy(1),this.makeToken(`Assign`,`=`,t);case`"`:return this.readQuotedString(t);case"`":return this.readRawString(t);case`'`:return this.readChar(t)}if(e===`$`)return this.readVariable(t);if(e!==void 0&&(Lu(e)||Iu(e)&&Lu(this.src[this.offset+1]??``)||e===`.`&&Lu(this.src[this.offset+1]??``)))return this.readNumber(t);if(e===`.`)return this.readDotOrField(t);if(e!==void 0&&Hu(e))return this.readIdentifier(t);throw this.err(`unexpected character ${JSON.stringify(e)}`,t,{found:e??`end of input`})}readQuotedString(e){let t=this.offset;for(this.advanceBy(1);this.offset<this.src.length;){let n=this.src[this.offset];if(n===`\\`){this.advanceBy(1),this.offset<this.src.length&&this.advanceBy(1);continue}if(n===`
44
+ `)}function Nu(e,t){if(t.length===0)return[];let n=t.map(t=>({name:t,dist:Pu(e,t)})).sort((e,t)=>e.dist-t.dist),r=Math.max(2,Math.floor(e.length/2));return n.filter(e=>e.dist<=r).slice(0,3).map(e=>e.name)}function Pu(e,t){if(e===t)return 0;let n=e.length,r=t.length;if(n===0)return r;if(r===0)return n;let i=Array(r+1),a=Array(r+1);for(let e=0;e<=r;e++)i[e]=e;for(let o=1;o<=n;o++){a[0]=o;for(let n=1;n<=r;n++){let r=e[o-1]===t[n-1]?0:1;a[n]=Math.min((a[n-1]??0)+1,(i[n]??0)+1,(i[n-1]??0)+r)}for(let e=0;e<=r;e++)i[e]=a[e]??0}return i[r]??0}function Fu(e){throw Error(`unhandled node kind: ${JSON.stringify(e)}`)}const Iu=new Map([[`if`,`If`],[`else`,`Else`],[`end`,`End`],[`range`,`Range`],[`with`,`With`],[`break`,`Break`],[`continue`,`Continue`],[`define`,`Define`],[`template`,`Template`],[`block`,`Block`],[`true`,`Bool`],[`false`,`Bool`],[`nil`,`Nil`]]),Lu={left:`{{`,right:`}}`};var Ru=class{src;leftDelim;rightDelim;offset=0;line=1;column=1;mode=`text`;pending;constructor(e,t=Lu){this.src=e,this.leftDelim=t.left,this.rightDelim=t.right}pos(){return{line:this.line,column:this.column,offset:this.offset}}err(e,t,n={}){return new Eu(e,t,{...n,source:this.src})}next(){if(this.pending){let e=this.pending;return this.pending=void 0,e}return this.read()}peek(){return this.pending||=this.read(),this.pending}read(){switch(this.mode){case`text`:return this.readText();case`action`:return this.readAction();case`done`:return this.makeToken(`EOF`,``,this.pos())}}readText(){if(this.offset>=this.src.length)return this.mode=`done`,this.makeToken(`EOF`,``,this.pos());let e=this.pos(),t=this.offset;for(;t<this.src.length&&!this.src.startsWith(this.leftDelim,t);)t+=1;let n=t<this.src.length&&this.src[t+this.leftDelim.length]===`-`,r=t;if(n)for(;r>this.offset&&zu(this.src[r-1]??``);)--r;if(r>this.offset){let t=this.src.slice(this.offset,r);return this.advanceTo(r),this.makeToken(`Text`,t,e)}return this.advanceTo(t),this.emitLeftDelim(n)}emitLeftDelim(e){let t=this.pos();if(this.advanceBy(this.leftDelim.length),e)for(this.advanceBy(1);zu(this.src[this.offset]??``);)this.advanceBy(1);return this.mode=`action`,this.src.startsWith(`/*`,this.offset)?this.readComment(t,e):this.makeToken(`LeftDelim`,e?`${this.leftDelim}-`:this.leftDelim,t,e?{trimLeft:!0}:{})}readComment(e,t){this.advanceBy(2);let n=this.offset,r=this.src.indexOf(`*/`,this.offset);if(r===-1)throw this.err(`unclosed comment`,e,{expected:`*/${this.rightDelim}`,found:`end of input`});this.advanceTo(r);let i=this.src.slice(n,r).trim();for(this.advanceBy(2);zu(this.src[this.offset]??``);)this.advanceBy(1);let a=!1;if(this.src[this.offset]===`-`&&(a=!0,this.advanceBy(1)),!this.src.startsWith(this.rightDelim,this.offset))throw this.err(`expected \`${this.rightDelim}\` to close comment`,this.pos(),{expected:this.rightDelim,found:this.src[this.offset]??`end of input`});if(this.advanceBy(this.rightDelim.length),a)for(;zu(this.src[this.offset]??``);)this.advanceBy(1);return this.mode=`text`,this.makeToken(`Comment`,i,e,{...t?{trimLeft:!0}:{},...a?{trimRight:!0}:{}})}readAction(){if(this.skipActionSpaces(),this.src.startsWith(`-${this.rightDelim}`,this.offset)){let e=this.pos();for(this.advanceBy(1+this.rightDelim.length),this.mode=`text`;zu(this.src[this.offset]??``);)this.advanceBy(1);return this.makeToken(`RightDelim`,`-${this.rightDelim}`,e,{trimRight:!0})}if(this.src.startsWith(this.rightDelim,this.offset)){let e=this.pos();return this.advanceBy(this.rightDelim.length),this.mode=`text`,this.makeToken(`RightDelim`,this.rightDelim,e)}if(this.offset>=this.src.length)throw this.err(`unclosed action`,this.pos(),{expected:this.rightDelim,found:`end of input`});let e=this.src[this.offset],t=this.pos();switch(e){case`(`:return this.advanceBy(1),this.makeToken(`LeftParen`,`(`,t);case`)`:return this.advanceBy(1),this.makeToken(`RightParen`,`)`,t);case`|`:return this.advanceBy(1),this.makeToken(`Pipe`,`|`,t);case`,`:return this.advanceBy(1),this.makeToken(`Comma`,`,`,t);case`:`:if(this.src[this.offset+1]===`=`)return this.advanceBy(2),this.makeToken(`Declare`,`:=`,t);throw this.err("expected `:=`",t,{expected:`:=`,found:`:`});case`=`:return this.advanceBy(1),this.makeToken(`Assign`,`=`,t);case`"`:return this.readQuotedString(t);case"`":return this.readRawString(t);case`'`:return this.readChar(t)}if(e===`$`)return this.readVariable(t);if(e!==void 0&&(Vu(e)||Bu(e)&&Vu(this.src[this.offset+1]??``)||e===`.`&&Vu(this.src[this.offset+1]??``)))return this.readNumber(t);if(e===`.`)return this.readDotOrField(t);if(e!==void 0&&Ku(e))return this.readIdentifier(t);throw this.err(`unexpected character ${JSON.stringify(e)}`,t,{found:e??`end of input`})}readQuotedString(e){let t=this.offset;for(this.advanceBy(1);this.offset<this.src.length;){let n=this.src[this.offset];if(n===`\\`){this.advanceBy(1),this.offset<this.src.length&&this.advanceBy(1);continue}if(n===`
45
45
  `)throw this.err(`newline in interpreted string`,e,{found:`\\n`});if(n===`"`)return this.advanceBy(1),this.makeToken(`String`,this.src.slice(t,this.offset),e);this.advanceBy(1)}throw this.err(`unterminated string literal`,e,{expected:`"`,found:`end of input`})}readRawString(e){let t=this.offset;for(this.advanceBy(1);this.offset<this.src.length;){if(this.src[this.offset]==="`")return this.advanceBy(1),this.makeToken(`String`,this.src.slice(t,this.offset),e);this.advanceBy(1)}throw this.err(`unterminated raw string literal`,e,{expected:"`",found:`end of input`})}readChar(e){let t=this.offset;for(this.advanceBy(1);this.offset<this.src.length;){let n=this.src[this.offset];if(n===`\\`){this.advanceBy(1),this.offset<this.src.length&&this.advanceBy(1);continue}if(n===`
46
- `)throw this.err(`newline in rune literal`,e,{found:`\\n`});if(n===`'`)return this.advanceBy(1),this.makeToken(`Char`,this.src.slice(t,this.offset),e);this.advanceBy(1)}throw this.err(`unterminated rune literal`,e,{expected:`'`,found:`end of input`})}readNumber(e){let t=this.offset;if(Iu(this.src[this.offset]??``)&&this.advanceBy(1),this.src[this.offset]===`0`&&this.offset+1<this.src.length){let n=this.src[this.offset+1];if(n===`x`||n===`X`){for(this.advanceBy(2);Ru(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);if(this.src[this.offset]===`.`||this.src[this.offset]===`p`||this.src[this.offset]===`P`)for(;this.isHexFloatTail(this.src[this.offset]??``);)this.advanceBy(1);return this.finishNumber(t,e)}if(n===`o`||n===`O`){for(this.advanceBy(2);zu(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);return this.finishNumber(t,e)}if(n===`b`||n===`B`){for(this.advanceBy(2);Bu(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);return this.finishNumber(t,e)}}for(;Lu(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);if(this.src[this.offset]===`.`)for(this.advanceBy(1);Lu(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);if(this.src[this.offset]===`e`||this.src[this.offset]===`E`)for(this.advanceBy(1),Iu(this.src[this.offset]??``)&&this.advanceBy(1);Lu(this.src[this.offset]??``);)this.advanceBy(1);return this.src[this.offset]===`i`&&this.advanceBy(1),this.finishNumber(t,e)}isHexFloatTail(e){return Ru(e)||e===`.`||e===`p`||e===`P`||e===`+`||e===`-`||e===`_`}finishNumber(e,t){if(this.offset===e)throw this.err(`expected number`,t,{expected:`digit`});return this.makeToken(`Number`,this.src.slice(e,this.offset),t)}readVariable(e){let t=this.offset;for(this.advanceBy(1);Uu(this.src[this.offset]??``);)this.advanceBy(1);for(;this.src[this.offset]===`.`&&Hu(this.src[this.offset+1]??``);)for(this.advanceBy(1);Uu(this.src[this.offset]??``);)this.advanceBy(1);return this.makeToken(`Variable`,this.src.slice(t,this.offset),e)}readDotOrField(e){let t=this.offset;if(this.advanceBy(1),!Hu(this.src[this.offset]??``))return this.makeToken(`Dot`,`.`,e);for(;Uu(this.src[this.offset]??``);)this.advanceBy(1);for(;this.src[this.offset]===`.`&&Hu(this.src[this.offset+1]??``);)for(this.advanceBy(1);Uu(this.src[this.offset]??``);)this.advanceBy(1);return this.makeToken(`Field`,this.src.slice(t,this.offset),e)}readIdentifier(e){let t=this.offset;for(;Uu(this.src[this.offset]??``);)this.advanceBy(1);let n=this.src.slice(t,this.offset),r=Mu.get(n);return r?this.makeToken(r,n,e):this.makeToken(`Identifier`,n,e)}skipActionSpaces(){for(;this.offset<this.src.length;){let e=this.src[this.offset];if(e===` `||e===` `||e===`\r`||e===`
46
+ `)throw this.err(`newline in rune literal`,e,{found:`\\n`});if(n===`'`)return this.advanceBy(1),this.makeToken(`Char`,this.src.slice(t,this.offset),e);this.advanceBy(1)}throw this.err(`unterminated rune literal`,e,{expected:`'`,found:`end of input`})}readNumber(e){let t=this.offset;if(Bu(this.src[this.offset]??``)&&this.advanceBy(1),this.src[this.offset]===`0`&&this.offset+1<this.src.length){let n=this.src[this.offset+1];if(n===`x`||n===`X`){for(this.advanceBy(2);Hu(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);if(this.src[this.offset]===`.`||this.src[this.offset]===`p`||this.src[this.offset]===`P`)for(;this.isHexFloatTail(this.src[this.offset]??``);)this.advanceBy(1);return this.finishNumber(t,e)}if(n===`o`||n===`O`){for(this.advanceBy(2);Uu(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);return this.finishNumber(t,e)}if(n===`b`||n===`B`){for(this.advanceBy(2);Wu(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);return this.finishNumber(t,e)}}for(;Vu(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);if(this.src[this.offset]===`.`)for(this.advanceBy(1);Vu(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);if(this.src[this.offset]===`e`||this.src[this.offset]===`E`)for(this.advanceBy(1),Bu(this.src[this.offset]??``)&&this.advanceBy(1);Vu(this.src[this.offset]??``);)this.advanceBy(1);return this.src[this.offset]===`i`&&this.advanceBy(1),this.finishNumber(t,e)}isHexFloatTail(e){return Hu(e)||e===`.`||e===`p`||e===`P`||e===`+`||e===`-`||e===`_`}finishNumber(e,t){if(this.offset===e)throw this.err(`expected number`,t,{expected:`digit`});return this.makeToken(`Number`,this.src.slice(e,this.offset),t)}readVariable(e){let t=this.offset;for(this.advanceBy(1);qu(this.src[this.offset]??``);)this.advanceBy(1);for(;this.src[this.offset]===`.`&&Ku(this.src[this.offset+1]??``);)for(this.advanceBy(1);qu(this.src[this.offset]??``);)this.advanceBy(1);return this.makeToken(`Variable`,this.src.slice(t,this.offset),e)}readDotOrField(e){let t=this.offset;if(this.advanceBy(1),!Ku(this.src[this.offset]??``))return this.makeToken(`Dot`,`.`,e);for(;qu(this.src[this.offset]??``);)this.advanceBy(1);for(;this.src[this.offset]===`.`&&Ku(this.src[this.offset+1]??``);)for(this.advanceBy(1);qu(this.src[this.offset]??``);)this.advanceBy(1);return this.makeToken(`Field`,this.src.slice(t,this.offset),e)}readIdentifier(e){let t=this.offset;for(;qu(this.src[this.offset]??``);)this.advanceBy(1);let n=this.src.slice(t,this.offset),r=Iu.get(n);return r?this.makeToken(r,n,e):this.makeToken(`Identifier`,n,e)}skipActionSpaces(){for(;this.offset<this.src.length;){let e=this.src[this.offset];if(e===` `||e===` `||e===`\r`||e===`
47
47
  `)this.advanceBy(1);else return}}advanceBy(e){for(let t=0;t<e;t++){let e=this.src[this.offset];this.offset+=1,e===`
48
- `?(this.line+=1,this.column=1):this.column+=1}}advanceTo(e){for(;this.offset<e;)this.advanceBy(1)}makeToken(e,t,n,r={}){return Object.freeze({type:e,value:t,pos:n,...r.trimLeft===void 0?{}:{trimLeft:r.trimLeft},...r.trimRight===void 0?{}:{trimRight:r.trimRight}})}};function Fu(e){return e===` `||e===` `||e===`\r`||e===`
49
- `}function Iu(e){return e===`+`||e===`-`}function Lu(e){return e>=`0`&&e<=`9`}function Ru(e){return Lu(e)||e>=`a`&&e<=`f`||e>=`A`&&e<=`F`}function zu(e){return e>=`0`&&e<=`7`}function Bu(e){return e===`0`||e===`1`}function Vu(e){return e>=`a`&&e<=`z`||e>=`A`&&e<=`Z`}function Hu(e){return Vu(e)||e===`_`}function Uu(e){return Hu(e)||Lu(e)}let Wu,Gu;function Ku(e,t){return Gu(e,t)}var qu=class e{static EMPTY=new e(new Map,void 0);#e;#t;constructor(e,t){this.#e=e,this.#t=t}static{Wu=(t,n)=>new e(t,n),Gu=(e,t)=>e.#e.get(t)??(e.#t&&Gu(e.#t,t))}has(e){return Gu(this,e)!==void 0}};function Ju(e,t,n=qu.EMPTY){return new Yu(e,t,n).parseTemplate()}var Yu=class{lex;buf=[];defines=new Map;inherit;source;rangeDepth=0;constructor(e,t,n){this.source=e,this.inherit=n,this.lex=t?new Pu(e,t):new Pu(e)}peek(e=0){for(;this.buf.length<=e;)this.buf.push(this.lex.next());return this.buf[e]}next(){return this.buf.length>0?this.buf.shift():this.lex.next()}expect(e,t){let n=this.next();if(n.type!==e)throw this.errAt(n,`expected ${t}`,{expected:t,found:Qu(n)});return n}errAt(e,t,n={}){return new Su(t,e.pos,{...n,source:this.source})}parseTemplate(){let e=this.parseList();if(this.peek().type!==`EOF`){let e=this.peek(),t=this.peek(1);if(e.type===`LeftDelim`&&(t.type===`Else`||t.type===`End`)){let n=t.type===`Else`?`else`:`end`;throw this.errAt(e,`unexpected \`{{${n}}}\` outside of \`if\`, \`range\`, \`with\`, or \`block\``,{found:`{{${n}}}`})}throw this.errAt(e,`unexpected ${Qu(e)}`,{found:Qu(e)})}return{root:e,defines:Wu(this.defines,this.inherit),ownDefines:this.defines,source:this.source}}parseList(){let e=this.peek().pos,t=[];for(;;){let n=this.peek();if(n.type===`EOF`)break;if(n.type===`Text`){this.next(),t.push({type:`Text`,pos:n.pos,text:n.value});continue}if(n.type===`Comment`){this.next();let e=Zu(n);t.push({type:`Comment`,pos:n.pos,text:n.value,trim:e});continue}if(n.type===`LeftDelim`){let n=this.peek(1).type;if(n===`Else`||n===`End`)return Xu(e,t);let r=this.parseAction();r!==null&&t.push(r);continue}throw this.errAt(n,`unexpected ${Qu(n)} at top level`,{found:Qu(n)})}return Xu(e,t)}parseAction(){let e=this.expect(`LeftDelim`,"`{{`"),t=e.trimLeft===!0,n=this.peek();switch(n.type){case`If`:return this.next(),this.parseBranch(`If`,e.pos,t);case`Range`:return this.next(),this.parseBranch(`Range`,e.pos,t);case`With`:return this.next(),this.parseBranch(`With`,e.pos,t);case`Break`:return this.next(),this.parseBreakOrContinue(`Break`,e.pos,t);case`Continue`:return this.next(),this.parseBreakOrContinue(`Continue`,e.pos,t);case`Template`:return this.next(),this.parseTemplateInvocation(e.pos,t);case`Block`:return this.next(),this.parseBlock(e.pos,t);case`Define`:return this.next(),this.parseDefine(e.pos,t),null;case`RightDelim`:throw this.errAt(n,`empty action`,{expected:`pipeline`});default:{let n=this.parsePipeline(),r=this.expect(`RightDelim`,"`}}`");return{type:`Action`,pos:e.pos,pipe:n,trim:{trimLeft:t,trimRight:r.trimRight===!0}}}}}parseBranch(e,t,n){let r=this.parsePipeline();this.expect(`RightDelim`,"`}}`"),e===`Range`&&(this.rangeDepth+=1);let i=this.parseList();e===`Range`&&--this.rangeDepth;let a=this.parseElsePart(),o={trimLeft:n,trimRight:a.endConsumed?a.endRight:this.consumeEnd()},s=a.list?{pipe:r,list:i,elseList:a.list,trim:o}:{pipe:r,list:i,trim:o};switch(e){case`If`:return{type:`If`,pos:t,...s};case`Range`:return{type:`Range`,pos:t,...s};case`With`:return{type:`With`,pos:t,...s}}}parseBreakOrContinue(e,t,n){if(this.rangeDepth===0)throw new Su(`{{${e===`Break`?`break`:`continue`}}} outside of {{range}}`,t,{source:this.source});let r={trimLeft:n,trimRight:this.expect(`RightDelim`,"`}}`").trimRight===!0};return e===`Break`?{type:`Break`,pos:t,trim:r}:{type:`Continue`,pos:t,trim:r}}parseElsePart(){if(this.peek().type!==`LeftDelim`||this.peek(1).type!==`Else`)return{list:void 0,endRight:!1,endConsumed:!1};let e=this.next();if(this.next(),this.peek().type===`If`){this.next();let t=this.parseBranch(`If`,e.pos,e.trimLeft===!0);return{list:{type:`List`,pos:e.pos,nodes:[t]},endRight:t.trim.trimRight,endConsumed:!0}}return this.expect(`RightDelim`,"`}}`"),{list:this.parseList(),endRight:!1,endConsumed:!1}}consumeEnd(){return this.expect(`LeftDelim`,"`{{end}}`"),this.expect(`End`,"`end`"),this.expect(`RightDelim`,"`}}`").trimRight===!0}parseTemplateInvocation(e,t){let n=this.parseQuotedName(),r=this.peek().type===`RightDelim`?void 0:this.parsePipeline(),i={trimLeft:t,trimRight:this.expect(`RightDelim`,"`}}`").trimRight===!0};return r?{type:`Template`,pos:e,name:n,pipe:r,trim:i}:{type:`Template`,pos:e,name:n,trim:i}}parseBlock(e,t){let n=this.parseQuotedName(),r=this.peek().type===`RightDelim`?void 0:this.parsePipeline();this.expect(`RightDelim`,"`}}`");let i=this.rangeDepth;this.rangeDepth=0;let a=this.parseList();this.rangeDepth=i;let o={trimLeft:t,trimRight:this.consumeEnd()};return!this.defines.has(n)&&!this.inherit.has(n)&&this.defines.set(n,{list:a,source:this.source}),r?{type:`Block`,pos:e,name:n,pipe:r,list:a,trim:o}:{type:`Block`,pos:e,name:n,list:a,trim:o}}parseDefine(e,t){let n=this.parseQuotedName();this.expect(`RightDelim`,"`}}`");let r=this.rangeDepth;this.rangeDepth=0;let i=this.parseList();if(this.rangeDepth=r,this.consumeEnd(),this.defines.has(n)||this.inherit.has(n))throw new Su(`redefinition of template ${JSON.stringify(n)}`,i.pos,{source:this.source});this.defines.set(n,{list:i,source:this.source})}parseQuotedName(){let e=this.next();if(e.type!==`String`)throw this.errAt(e,`expected template name (quoted string)`,{expected:`string`,found:Qu(e)});return od(e.value,e.pos,this.source)}parsePipeline(){let e=this.peek().pos,t=this.tryParseDecls(),n=[this.parseCommand()];for(;this.peek().type===`Pipe`;){this.next();let e=this.peek();if(!$u(e.type))throw this.errAt(e,"missing command after `|`",{expected:`command`,found:Qu(e)});n.push(this.parseCommand())}return{type:`Pipe`,pos:e,decls:t?.vars??[],isAssign:t?.isAssign??!1,cmds:n}}tryParseDecls(){if(this.peek().type!==`Variable`)return;let e=1;for(;this.peek(e).type===`Comma`;){if(this.peek(e+1).type!==`Variable`)return;e+=2}let t=this.peek(e).type;if(t!==`Declare`&&t!==`Assign`)return;let n=[ed(this.next())];for(;this.peek().type===`Comma`;)this.next(),n.push(ed(this.expect(`Variable`,`$variable`)));return{vars:n,isAssign:this.next().type===`Assign`}}parseCommand(){let e=this.peek().pos,t=[this.parsePrimary()];for(;$u(this.peek().type);)t.push(this.parsePrimary());return{type:`Command`,pos:e,args:t}}parsePrimary(){let e=this.next();switch(e.type){case`Dot`:return{type:`Dot`,pos:e.pos};case`Field`:return{type:`Field`,pos:e.pos,idents:e.value.slice(1).split(`.`)};case`Variable`:return ed(e);case`Identifier`:return{type:`Identifier`,pos:e.pos,ident:e.value};case`String`:return{type:`String`,pos:e.pos,raw:e.value,value:od(e.value,e.pos,this.source)};case`Number`:return nd(e);case`Char`:return rd(e,this.source);case`Bool`:return{type:`Bool`,pos:e.pos,value:e.value===`true`};case`Nil`:return{type:`Nil`,pos:e.pos};case`LeftParen`:return this.parseChainOrPipe(e.pos);default:throw this.errAt(e,`expected command argument, found ${Qu(e)}`,{expected:`command argument`,found:Qu(e)})}}parseChainOrPipe(e){let t=this.parsePipeline(),n=this.expect(`RightParen`,"`)`"),r=[],i=n.pos.offset+1,a=this.peek();return a.type===`Field`&&a.pos.offset===i&&(this.next(),r.push(...a.value.slice(1).split(`.`))),r.length===0?t:{type:`Chain`,pos:e,node:t,fields:r}}};function Xu(e,t){return{type:`List`,pos:e,nodes:t}}function Zu(e){return{trimLeft:e.trimLeft===!0,trimRight:e.trimRight===!0}}function Qu(e){return e.type===`EOF`?`end of input`:e.value||e.type}function $u(e){switch(e){case`Dot`:case`Field`:case`Variable`:case`Identifier`:case`String`:case`Number`:case`Char`:case`Bool`:case`Nil`:case`LeftParen`:return!0;default:return!1}}function ed(e){return{type:`Variable`,pos:e.pos,idents:td(e.value)}}function td(e){let t=e.indexOf(`.`);return t===-1?[e]:[e.slice(0,t),...e.slice(t+1).split(`.`)]}function nd(e){let t=e.value,n=t.replace(/_/g,``),r=n.toLowerCase().endsWith(`i`),i=r?n.slice(0,-1):n,a=!r&&(i.includes(`.`)||!i.startsWith(`0x`)&&!i.startsWith(`0X`)&&/[eE]/.test(i)||(i.startsWith(`0x`)||i.startsWith(`0X`))&&/[pP]/.test(i)),o=!r&&!a,s={type:`Number`,pos:e.pos,text:t,isInt:o,isUint:!1,isFloat:a,isComplex:r};if(o){let e=id(i);return{...s,intValue:e}}if(a){let e=ad(i);return{...s,floatValue:e}}let c=ad(i);return{...s,complexValue:[0,c]}}function rd(e,t){let n=sd(e.value,e.pos,t);return{type:`Number`,pos:e.pos,text:e.value,isInt:!0,isUint:!1,isFloat:!1,isComplex:!1,intValue:BigInt(n)}}function id(e){let t=1n,n=e;return n.startsWith(`+`)?n=n.slice(1):n.startsWith(`-`)&&(t=-1n,n=n.slice(1)),t*BigInt(n)}function ad(e){return Number(e)}function od(e,t,n){if(e.startsWith("`"))return e.slice(1,-1);let r=``;for(let i=1;i<e.length-1;i++){let a=e[i];if(a!==`\\`){r+=a;continue}let o=e[++i];switch(o){case`n`:r+=`
50
- `;break;case`t`:r+=` `;break;case`r`:r+=`\r`;break;case`\\`:r+=`\\`;break;case`"`:r+=`"`;break;case`'`:r+=`'`;break;case`a`:r+=`\x07`;break;case`b`:r+=`\b`;break;case`f`:r+=`\f`;break;case`v`:r+=`\v`;break;case`0`:case`1`:case`2`:case`3`:case`4`:case`5`:case`6`:case`7`:{let t=o+(e[i+1]??``)+(e[i+2]??``);i+=2,r+=String.fromCodePoint(Number.parseInt(t,8));break}case`x`:{let t=(e[i+1]??``)+(e[i+2]??``);i+=2,r+=String.fromCodePoint(Number.parseInt(t,16));break}case`u`:{let t=e.slice(i+1,i+5);i+=4,r+=String.fromCodePoint(Number.parseInt(t,16));break}case`U`:{let t=e.slice(i+1,i+9);i+=8,r+=String.fromCodePoint(Number.parseInt(t,16));break}default:throw new Su(`bad escape sequence \\${o}`,t,{expected:`valid escape sequence`,found:`\\${o}`,source:n})}}return r}function sd(e,t,n){let r=od(`"${e.slice(1,-1).replace(/"/g,`\\"`)}"`,t,n);if(r.length===0)throw new Su(`empty rune literal`,t,{source:n});return r.codePointAt(0)??0}function cd(e,t){if(t(e)!==!1)for(let n of ld(e))cd(n,t)}function ld(e){switch(e.type){case`Text`:case`Comment`:case`Dot`:case`Nil`:case`Bool`:case`Number`:case`String`:case`Identifier`:case`Field`:case`Variable`:case`Break`:case`Continue`:return[];case`List`:return e.nodes;case`Chain`:return[e.node];case`Command`:return e.args;case`Pipe`:return[...e.decls,...e.cmds];case`Action`:return[e.pipe];case`If`:case`Range`:case`With`:return e.elseList?[e.pipe,e.list,e.elseList]:[e.pipe,e.list];case`Template`:return e.pipe?[e.pipe]:[];case`Block`:return e.pipe?[e.pipe,e.list]:[e.list];default:return ju(e)}}const ud=Symbol(`go-template-js.MISSING`);function dd(e,t){if(e==null)return ud;if(e instanceof Map)return e.has(t)?e.get(t):ud;if(Array.isArray(e))return ud;if(typeof e==`object`){let n=e;return t in n?n[t]:ud}return ud}function fd(e,t){let n=e;for(let e of t){if(n===ud)return ud;n=dd(n,e)}return n}function pd(e,t){if(Object.is(e,t))return!0;if(e===null||t===null||e===void 0||t===void 0||typeof e!=typeof t)return!1;if(Array.isArray(e)&&Array.isArray(t))return e.length===t.length?e.every((e,n)=>pd(e,t[n])):!1;if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(let[n,r]of e)if(!t.has(n)||!pd(r,t.get(n)))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}if(typeof e==`object`&&typeof t==`object`){let n=Object.keys(e),r=Object.keys(t);return n.length===r.length?n.every(n=>pd(e[n],t[n])):!1}return!1}const md=new WeakSet;function hd(e){return md.add(e),e}function gd(e){return md.has(e)}function _d(e){return e==null||e===!1?!1:typeof e==`number`?e!==0&&!Number.isNaN(e):typeof e==`bigint`?e!==0n:typeof e==`string`||Array.isArray(e)?e.length>0:e instanceof Map||e instanceof Set?e.size>0:typeof e==`object`?Object.keys(e).length>0:!!e}function vd(e,t){return{eq:{fn:(e,...t)=>t.some(t=>xd(e,t)),argTypes:[`comparable`]},ne:{fn:(e,t)=>!xd(e,t),argTypes:[`comparable`,`comparable`]},lt:{fn:(e,t)=>Sd(e,t)<0,argTypes:[`ordered`,`ordered`]},le:{fn:(e,t)=>Sd(e,t)<=0,argTypes:[`ordered`,`ordered`]},gt:{fn:(e,t)=>Sd(e,t)>0,argTypes:[`ordered`,`ordered`]},ge:{fn:(e,t)=>Sd(e,t)>=0,argTypes:[`ordered`,`ordered`]},len:{fn:e=>Cd(e),argTypes:[`sized`]},index:{fn:(e,...t)=>{let n=e;for(let e of t)n=wd(n,e);return n},argTypes:[`collection`,`index-key`]},slice:{fn:(e,...t)=>{let n=t.length>=1?t[0]:0,r=t.length>=2?t[1]:void 0;return e.slice(n,r)},argTypes:[`sliceable`,`int`]},print:{fn:(...t)=>Dd(t,e),argTypes:[`stringifiable`],returnType:`string`},println:{fn:(...t)=>`${Dd(t,e)}\n`,argTypes:[`stringifiable`],returnType:`string`},printf:{fn:(n,...r)=>Id(n,r,e,t),argTypes:[`string`,`stringifiable`],returnType:`string`},toString:{fn:n=>zd(n,e,t),argTypes:[`value`],returnType:`string`},toStrings:{fn:n=>n.map(n=>zd(n,e,t)),argTypes:[`list`]},call:{fn:(e,...t)=>e(...t),argTypes:[`callable`,`value`]},html:{fn:(...t)=>Ad(Dd(t,e)),argTypes:[`stringifiable`],returnType:`string`},js:{fn:(...t)=>Nd(Dd(t,e)),argTypes:[`stringifiable`],returnType:`string`},urlquery:{fn:(...t)=>Fd(Dd(t,e)),argTypes:[`stringifiable`],returnType:`string`},not:{fn:e=>!_d(e),argTypes:[`truthy`]}}}function yd(){return{and:hd({argTypes:[`truthy`],fn:(...e)=>{let t=!0;for(let n of e)if(t=n(),!_d(t))return t;return t}}),or:hd({argTypes:[`truthy`],fn:(...e)=>{let t=!1;for(let n of e)if(t=n(),_d(t))return t;return t}})}}function bd(e,t){return{...vd(e,t),...yd()}}function xd(e,t){return typeof e==`number`&&typeof t==`bigint`?BigInt(e)===t:typeof e==`bigint`&&typeof t==`number`?e===BigInt(t):pd(e,t)}function Sd(e,t){if(typeof e==`bigint`&&typeof t==`bigint`)return e===t?0:e<t?-1:1;if(typeof e==`bigint`||typeof t==`bigint`){let n=typeof e==`bigint`?e:BigInt(Math.trunc(Number(e))),r=typeof t==`bigint`?t:BigInt(Math.trunc(Number(t)));return n===r?0:n<r?-1:1}let n=e,r=t;return n===r?0:n<r?-1:1}function Cd(e){return typeof e==`string`||Array.isArray(e)?e.length:e instanceof Map||e instanceof Set?e.size:Object.keys(e).length}function wd(e,t){if(Array.isArray(e)){let n=Number(t);if(!Number.isInteger(n))throw Error(`index: array index must be integer, got ${Td(t)}`);if(n<0||n>=e.length)throw Error(`index: out of range [${n}] with length ${e.length}`);return e[n]}if(e instanceof Map)return e.get(t);if(typeof e==`string`)return e[Number(t)];if(typeof e==`object`&&e){if(typeof t!=`string`)throw Error(`index: object index must be string, got ${Td(t)}`);return e[t]}throw Error(`index: cannot index ${Td(e)}`)}function Td(e){return e===null?`null`:e===void 0?`undefined`:Array.isArray(e)?`array`:e instanceof Map?`Map`:typeof e}function Ed(e){return e==null?`<nil>`:typeof e==`string`?`string`:typeof e==`boolean`?`bool`:typeof e==`bigint`?`int64`:typeof e==`number`?Number.isInteger(e)?`int`:`float64`:Array.isArray(e)?`[]interface {}`:e instanceof Map||typeof e==`object`?`map[string]interface {}`:typeof e}function Dd(e,t){let n=``,r=!1;for(let i=0;i<e.length;i++){let a=e[i],o=typeof a==`string`;i>0&&!r&&!o&&(n+=` `),n+=Od(a,t),r=o}return n}function Od(e,t){return e==null?`<nil>`:typeof e==`string`?e:t(e)}const kd={"\0":`�`,'"':`&#34;`,"'":`&#39;`,"&":`&amp;`,"<":`&lt;`,">":`&gt;`};function Ad(e){return e.replace(/[\0"'&<>]/g,e=>kd[e]??e)}const jd={"\\":`\\\\`,"'":`\\'`,'"':`\\"`,"<":`\\u003C`,">":`\\u003E`,"&":`\\u0026`,"=":`\\u003D`},Md=/^[\p{L}\p{M}\p{N}\p{P}\p{S}]$/u;function Nd(e){let t=``;for(let n of e){let e=jd[n];if(e!==void 0){t+=e;continue}let r=n.codePointAt(0);if(r<32||r>=128&&!Md.test(n)){t+=`\\u${r.toString(16).toUpperCase().padStart(4,`0`)}`;continue}t+=n}return t}const Pd=new TextEncoder;function Fd(e){let t=``,n=Pd.encode(e);for(let e of n)e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===45||e===46||e===95||e===126?t+=String.fromCharCode(e):e===32?t+=`+`:t+=`%${e.toString(16).toUpperCase().padStart(2,`0`)}`;return t}function Id(e,t,n,r){let i=``,a=0,o=0;for(;o<e.length;){let s=e[o];if(s!==`%`){i+=s,o+=1;continue}if(e[o+1]===`%`){i+=`%`,o+=2;continue}let c=o+1;for(;c<e.length&&`+-# 0`.includes(e[c]??``);)c+=1;for(;c<e.length&&e[c]!==void 0&&/[0-9]/.test(e[c]);)c+=1;if(e[c]===`.`)for(c+=1;c<e.length&&e[c]!==void 0&&/[0-9]/.test(e[c]);)c+=1;let l=e[c],u=e.slice(o+1,c),d=t[a++];i+=Ld(l??``,u,d,n,r),o=c+1}return i}function Ld(e,t,n,r,i){switch(e){case`s`:return typeof n==`string`?Rd(t,n):Rd(t,Od(n,r));case`d`:return typeof n!=`number`&&typeof n!=`bigint`?`%!${e}(${Ed(n)}=${Od(n,r)})`:Rd(t,String(typeof n==`bigint`?n:Math.trunc(n)));case`v`:return Rd(t,zd(n,r,i));case`q`:return Rd(t,JSON.stringify(Od(n,r)));case`f`:{if(typeof n!=`number`&&typeof n!=`bigint`)return`%!${e}(${Ed(n)}=${Od(n,r)})`;let i=t.includes(`.`)?Number(t.split(`.`)[1]):6;return Rd(t,Number(n).toFixed(i))}case`t`:return Rd(t,_d(n)?`true`:`false`);case`x`:if(typeof n==`string`){let e=new TextEncoder().encode(n),r=``;for(let t of e)r+=t.toString(16).padStart(2,`0`);return Rd(t,r)}return typeof n!=`number`&&typeof n!=`bigint`?`%!${e}(${Ed(n)}=${Od(n,r)})`:typeof n==`bigint`?Rd(t,n.toString(16)):Rd(t,Math.trunc(n).toString(16));default:return`%!${e}(${Ed(n)}=${Od(n,r)})`}}function Rd(e,t){let n=e.match(/^([+\-# 0]*)/)?.[1]??``,r=e.slice(n.length).match(/^(\d+)/);if(!r)return t;let i=Number(r[1]);if(t.length>=i)return t;let a=` `.repeat(i-t.length);return n.includes(`-`)?t+a:a+t}function zd(e,t,n){return e==null?`<nil>`:typeof e==`string`?e:n(e)?t(e):Array.isArray(e)?`[${e.map(e=>zd(e,t,n)).join(` `)}]`:e instanceof Map?Bd([...e.entries()],t,n):Vd(e)?Bd(Object.entries(e),t,n):String(e)}function Bd(e,t,n){let r=e=>zd(e,t,n),i=e=>typeof e==`number`||typeof e==`bigint`,a=([e],[t])=>{if(i(e)&&i(t))return e<t?-1:+(e>t);if(i(e)!==i(t))return i(e)?-1:1;let[n,a]=[r(e),r(t)];return n<a?-1:+(n>a)};return`map[${[...e].sort(a).map(([e,t])=>`${r(e)}:${r(t)}`).join(` `)}]`}function Vd(e){if(typeof e!=`object`||!e||Array.isArray(e)||e instanceof Map||e instanceof Set)return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype}function Hd(e){return{dot:e,root:e,parent:void 0,vars:new Map}}function Ud(e,t){return{dot:t,root:e.root,parent:e,vars:new Map}}function Wd(e,t){let n=e;for(;n!==void 0;){if(n.vars.has(t))return{found:!0,value:n.vars.get(t)};n=n.parent}return{found:!1}}function Gd(e,t,n){e.vars.set(t,n)}const Kd=new Set([`default`,`zero`,`error`]);function qd(e){if(e===void 0)return`default`;if(Kd.has(e))return e;throw Error(`EngineConfig.missingKey: expected "default" | "zero" | "error", got ${Jd(e)}`)}function Jd(e){return typeof e==`string`?JSON.stringify(e):e===null?`null`:e===void 0?`undefined`:typeof e==`bigint`?`${e}n`:typeof e==`number`||typeof e==`boolean`?String(e):typeof e==`symbol`?e.toString():typeof e==`function`?`[Function]`:`[${typeof e}]`}function Yd(e){if(e!==void 0){if(typeof e!=`object`||!e)throw Error(`EngineConfig.delims: expected { left, right } object, got ${Jd(e)}`);if(typeof e.left!=`string`||e.left.length===0)throw Error(`EngineConfig.delims.left: expected non-empty string, got ${Jd(e.left)}`);if(typeof e.right!=`string`||e.right.length===0)throw Error(`EngineConfig.delims.right: expected non-empty string, got ${Jd(e.right)}`);return{left:e.left,right:e.right}}}const Xd=Object.freeze({kind:`break`}),Zd=Object.freeze({kind:`continue`}),Qd={kind:`none`};let $d;(class e{source;_evaluate;_defines;_referencedFunctions;_referencedCalls;constructor(e,t,n,r,i){this.source=e,this._evaluate=t,this._defines=n,this._referencedFunctions=r,this._referencedCalls=i}static{$d=(t,n,r,i,a)=>new e(t,n,r,i,a)}defines(){return this._defines}evaluate(e){return this._evaluate(e)}referencedFunctions(){return this._referencedFunctions}referencedCalls(){return this._referencedCalls}});function ef(e){let t=new Set,n=e=>{cd(e,e=>{e.type===`Identifier`&&t.add(e.ident)})};n(e.root);for(let t of e.ownDefines.values())n(t.list);return t}const tf={kind:`dynamic`};function nf(e){switch(e.type){case`String`:return{kind:`literal`,value:e.value};case`Bool`:return{kind:`literal`,value:e.value};case`Nil`:return{kind:`literal`,value:null};case`Number`:{let t=Sf(e);return typeof t==`number`||typeof t==`bigint`?{kind:`literal`,value:t}:tf}case`Pipe`:{if(e.decls.length!==0||e.cmds.length!==1)return tf;let t=e.cmds[0];if(t===void 0)return tf;let n=t.args[0];return n===void 0||n.type!==`Identifier`?tf:{kind:`call`,name:n.ident,args:t.args.slice(1).map(nf)}}default:return tf}}function rf(e){let t=[],n=e=>{cd(e,e=>{if(e.type!==`Command`)return;let n=e.args[0];if(n===void 0||n.type!==`Identifier`)return;let r=e.args.slice(1).map(nf);t.push({name:n.ident,args:r.map(e=>e.kind===`literal`&&typeof e.value==`string`?e.value:null),argExprs:r})})};n(e.root);for(let t of e.ownDefines.values())n(t.list);return t}var af=class{fromString;toString;isT;funcs;missingKey;delims;constructor(e){this.fromString=e.fromString;let t=Object.hasOwn(e,`toString`)?e.toString:void 0;this.toString=t??ff,this.isT=e.isT??of,this.missingKey=qd(e.missingKey),this.delims=Yd(e.delims),this.funcs={...bd(this.toString,this.isT),...e.funcs??{}}}parse(e,t){let n=Ju(e,this.delims,t);return $d(n.source,e=>this.evalParsed(n,e),n.defines,ef(n),rf(n))}compile(e){let t=this.parse(e);return e=>t.evaluate(e)}evaluate(e,t){return e.evaluate(t)}evalParsed(e,t){let n=[],r=Hd(t),i={out:n,defines:e.defines,source:e.source};return this.evalList(e.root,r,i),n}evalList(e,t,n){for(let r of e.nodes)this.evalNode(r,t,n)}evalNode(e,t,n){switch(e.type){case`Text`:n.out.push(this.fromString(e.text));return;case`Comment`:return;case`Action`:{let r=this.evalAction(e,t,n);e.pipe.decls.length===0&&this.emitFromValue(r,n);return}case`List`:this.evalList(e,t,n);return;case`If`:this.evalIf(e,t,n);return;case`Range`:this.evalRange(e,t,n);return;case`With`:this.evalWith(e,t,n);return;case`Break`:throw Xd;case`Continue`:throw Zd;case`Template`:this.evalTemplateInvoke(e,t,n);return;case`Block`:this.evalBlock(e,t,n);return;case`Pipe`:case`Command`:case`Identifier`:case`Field`:case`Variable`:case`Chain`:case`Dot`:case`Nil`:case`Bool`:case`Number`:case`String`:throw new Cu(`unexpected ${e.type} at statement position`,e.pos,{source:n.source});default:ju(e)}}evalIf(e,t,n){_d(this.evalPipe(e.pipe,t,n))?this.evalList(e.list,t,n):e.elseList&&this.evalList(e.elseList,t,n)}evalWith(e,t,n){let r=this.evalPipe(e.pipe,t,n);if(_d(r)){let i=Ud(t,r);this.evalList(e.list,i,n)}else e.elseList&&this.evalList(e.elseList,t,n)}evalRange(e,t,n){let r=this.evalPipeWithoutDecls(e.pipe,t,n),i=e.pipe.decls,a=yf(r);try{if(a.length===0){e.elseList&&this.evalList(e.elseList,t,n);return}for(let[r,o]of a){let a=Ud(t,o);if(i.length===1)Gd(a,i[0]?.idents[0]??`$`,o);else if(i.length>=2){let e=i[0]?.idents[0]??`$`,t=i[1]?.idents[0]??`$`;Gd(a,e,r),Gd(a,t,o)}try{this.evalList(e.list,a,n)}catch(e){if(e===Zd)continue;throw e}}}catch(e){if(e===Xd)return;throw e}}evalTemplateInvoke(e,t,n){let r=Ku(n.defines,e.name);if(!r)throw new Cu(`template ${JSON.stringify(e.name)} is not defined`,e.pos,{source:n.source});let i=Ud(t,e.pipe?this.evalPipe(e.pipe,t,n):t.dot);this.evalList(r.list,i,{out:n.out,defines:n.defines,source:r.source})}evalBlock(e,t,n){let r=Ud(t,e.pipe?this.evalPipe(e.pipe,t,n):t.dot),i=Ku(n.defines,e.name)??{list:e.list,source:n.source};this.evalList(i.list,r,{out:n.out,defines:n.defines,source:i.source})}evalAction(e,t,n){return this.evalPipe(e.pipe,t,n)}evalPipe(e,t,n){if(e.cmds.length===0)throw new Cu(`empty pipeline`,e.pos,{source:n.source});let r=this.evalCommand(e.cmds[0],t,n,Qd);for(let i=1;i<e.cmds.length;i++){let a=e.cmds[i];r=this.evalCommand(a,t,n,{kind:`value`,value:r})}if(e.decls.length>0)for(let n of e.decls)Gd(t,n.idents[0]??`$`,r);return r}evalPipeWithoutDecls(e,t,n){let r={type:`Pipe`,pos:e.pos,decls:[],isAssign:!1,cmds:e.cmds};return this.evalPipe(r,t,n)}evalCommand(e,t,n,r){if(e.args.length===0)throw new Cu(`empty command`,e.pos,{source:n.source});let i=e.args[0];if(i.type!==`Identifier`){if(e.args.length>1)throw new Cu(`cannot apply arguments to a ${i.type} primary; only functions take arguments`,e.pos,{source:n.source});return this.evalPrimary(i,t,n)}let a=this.funcs[i.ident];if(!a)throw new wu(i.ident,i.pos,{source:n.source,available:Object.keys(this.funcs)});let o=e.args.slice(1),s=gd(a),c=o.map(e=>s?()=>this.evalPrimary(e,t,n):this.evalPrimary(e,t,n));if(r.kind===`value`){let e=r.value;c.push(s?()=>e:e)}cf(i.ident,a.argTypes,c,e.pos,n.source,this.toString,a.argTypePattern,this.fromString,this.isT);try{return a.fn(...c)}catch(t){throw t instanceof Tu?new Tu(t.funcName,t.argIndex,t.expected,t.receivedSummary,e.pos,{source:n.source}):t instanceof Du?new Du(t.message,e.pos,{source:n.source}):t}}evalPrimary(e,t,n){switch(e.type){case`Dot`:return t.dot;case`Nil`:return null;case`Bool`:return e.value;case`Number`:return Sf(e);case`String`:return e.value;case`Field`:return this.resolveFieldChain(t.dot,e.idents,e.pos,n);case`Variable`:return this.resolveVariable(e.idents,t,e.pos,n);case`Identifier`:{let t=this.funcs[e.ident];if(!t)throw new wu(e.ident,e.pos,{source:n.source,available:Object.keys(this.funcs)});return cf(e.ident,t.argTypes,[],e.pos,n.source,this.toString,t.argTypePattern,this.fromString,this.isT),t.fn()}case`Chain`:return this.resolveFieldChain(this.evalPrimary(e.node,t,n),e.fields,e.pos,n);case`Pipe`:return this.evalPipe(e,t,n);default:throw new Cu(`cannot evaluate ${e.type} as a value`,e.pos,{source:n.source})}}resolveFieldChain(e,t,n,r){let i=fd(e,t);if(i!==ud)return i;if(this.missingKey===`error`)throw new Eu(t,n,{source:r.source})}resolveVariable(e,t,n,r){let i=e[0]??`$`;if(i===`$`){let i=e.slice(1);return i.length===0?t.root:this.resolveFieldChain(t.root,i,n,r)}let a=Wd(t,i);if(!a.found)throw new Cu(`undefined variable ${i}`,n,{source:r.source});let o=e.slice(1);return o.length===0?a.value:this.resolveFieldChain(a.value,o,n,r)}emitFromValue(e,t){if(e==null){t.out.push(this.fromString(`<no value>`));return}if(typeof e==`string`){t.out.push(this.fromString(e));return}if(typeof e==`number`||typeof e==`boolean`||typeof e==`bigint`){t.out.push(this.fromString(String(e)));return}if(this.isT(e)){t.out.push(e);return}t.out.push(this.fromString(zd(e,this.toString,this.isT)))}};const of=e=>typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Map);function sf(e){return new af(e)}function cf(e,t,n,r,i,a=ff,o,s=df,c=of){let l=lf(t,o),u=-1,d=-1;for(let t=0;t<n.length;t++){let o=l(t),f=n[t];if(!uf(o,f,a,c))throw new Tu(e,t+1,_f(o),vf(f),r,{source:i});if(o===`liftable`&&typeof f==`string`&&(n[t]=s(f)),o===`int`?n[t]=Math.trunc(Number(f)):o===`float`&&(n[t]=Number(f)),o===`ordered`){if(u===-1)u=t;else if(!mf(n[u],f))throw new Tu(e,t+1,`${_f(`ordered`)} of the same kind as ${vf(n[u])}`,vf(f),r,{source:i})}if(o===`comparable`){if(d===-1)d=t;else if(!hf(n[d],f))throw new Tu(e,t+1,`${_f(`comparable`)} of the same kind as ${vf(n[d])}`,vf(f),r,{source:i})}}}function lf(e,t){if(e.length===0)return()=>`value`;if(t===`alternating`){let t=e.length;return n=>e[n%t]}let n=e[e.length-1];return t=>t<e.length?e[t]:n}function uf(e,t,n,r){switch(e){case`truthy`:case`reflective`:case`value`:return!0;case`string`:return typeof t==`string`;case`int`:return typeof t==`number`&&Number.isFinite(t)||typeof t==`bigint`&&Number.isSafeInteger(Number(t));case`float`:return typeof t==`number`||typeof t==`bigint`&&Number.isFinite(Number(t));case`bool`:return typeof t==`boolean`;case`ordered`:return typeof t==`string`||typeof t==`number`||typeof t==`bigint`||typeof t==`boolean`;case`T`:return r(t);case`list`:return Array.isArray(t);case`dict`:return Vd(t);case`sized`:return typeof t==`string`||Array.isArray(t)||t instanceof Map||t instanceof Set||Vd(t);case`comparable`:return t==null||typeof t==`string`||typeof t==`number`||typeof t==`bigint`||typeof t==`boolean`||Array.isArray(t)||t instanceof Map||t instanceof Set||Vd(t);case`callable`:return typeof t==`function`;case`collection`:return typeof t==`string`||Array.isArray(t)||t instanceof Map||Vd(t);case`index-key`:return typeof t==`string`||typeof t==`number`||typeof t==`bigint`;case`sliceable`:return typeof t==`string`||Array.isArray(t);case`stringifiable`:if(typeof t==`string`)return!0;try{return n(t),!0}catch{return!1}case`liftable`:return typeof t==`string`||r(t);case`serializable`:return pf(t);default:throw Error(`invalid ArgType: ${String(e)}`)}}function df(e){return e}function ff(e){if(typeof e==`string`)return e;if(e==null)return`<nil>`;if(typeof e==`number`||typeof e==`bigint`||typeof e==`boolean`)return String(e);throw new Tu(`<engine.toString>`,1,`string (or a consumer-supplied toString that flattens T)`,vf(e),{line:0,column:0,offset:0})}function pf(e){try{return JSON.stringify(e)!==void 0}catch{return!1}}function mf(e,t){return typeof e==typeof t||typeof e==`number`&&typeof t==`bigint`||typeof e==`bigint`&&typeof t==`number`}function hf(e,t){let n=gf(e),r=gf(t);return n===`nil`||r===`nil`?!0:n===r}function gf(e){return e==null?`nil`:typeof e==`string`?`string`:typeof e==`number`||typeof e==`bigint`?`number`:typeof e==`boolean`?`boolean`:Array.isArray(e)?`array`:e instanceof Map?`map`:e instanceof Set?`set`:`object`}function _f(e){switch(e){case`int`:return`integer (finite number or safe-integer bigint)`;case`float`:return`float (number, including NaN/Infinity, or finite-convertible bigint)`;case`T`:return`T (consumer-defined fragment)`;case`ordered`:return`orderable primitive`;case`list`:return`list`;case`dict`:return`dict (plain object)`;case`sized`:return`sized value (string, list, map, set, or dict)`;case`comparable`:return`comparable value (orderable primitive, nil, list, dict, Map, or Set)`;case`stringifiable`:return`stringifiable value (string or convertible via the engine's toString)`;case`liftable`:return`liftable value (T or string, the latter lifted via the engine's fromString)`;case`callable`:return`callable (function value)`;case`collection`:return`collection (string, array, Map, or dict)`;case`index-key`:return`index key (number, bigint, or string)`;case`sliceable`:return`sliceable value (string or array)`;case`serializable`:return`JSON-serializable value`;case`truthy`:case`reflective`:case`value`:case`string`:case`bool`:return e;default:throw Error(`invalid ArgType: ${String(e)}`)}}function vf(e){return e===null?`null`:e===void 0?`undefined`:Array.isArray(e)?`array`:e instanceof Map?`Map`:typeof e}function yf(e){return e==null?[]:Array.isArray(e)?e.map((e,t)=>[t,e]):typeof e==`string`?[...e].map((e,t)=>[t,e]):e instanceof Map?bf([...e.entries()]):e instanceof Set?[...e.values()].map((e,t)=>[t,e]):typeof e==`object`?bf(Object.entries(e)):[]}function bf(e){return[...e].sort((e,t)=>xf(e[0],t[0]))}function xf(e,t){if((typeof e==`number`||typeof e==`bigint`)&&(typeof t==`number`||typeof t==`bigint`)){let n=typeof e==`bigint`?Number(e):e,r=typeof t==`bigint`?Number(t):t;return n===r?0:n<r?-1:1}let n=String(e),r=String(t);return n===r?0:n<r?-1:1}function Sf(e){if(e.intValue!==void 0){let t=e.intValue;return t>=BigInt(-(2**53-1))&&t<=BigInt(2**53-1)?Number(t):t}if(e.floatValue!==void 0)return e.floatValue;if(e.complexValue!==void 0)return e.complexValue;throw Error(`internal: NumberNode has none of intValue/floatValue/complexValue — parser invariant violated`)}function Cf(e){if(!/^[+-]?\d+$/.test(e))return 0;let t=Number.parseInt(e,10);return Number.isSafeInteger(t)?t:0}function wf(e){if(typeof e==`number`)return e;if(typeof e==`bigint`)return Number(e);if(typeof e==`string`){let t=Number.parseFloat(e);return Number.isNaN(t)?0:t}return typeof e==`boolean`?+!!e:0}function Tf(e){if(e===``)return null;let t=1,n=e;return n[0]===`+`?n=n.slice(1):n[0]===`-`&&(t=-1,n=n.slice(1)),n===``?null:/^0x[0-9a-fA-F]+$/i.test(n)?{sign:t,digits:n.slice(2),base:16}:/^0b[01]+$/i.test(n)?{sign:t,digits:n.slice(2),base:2}:/^0o[0-7]+$/i.test(n)?{sign:t,digits:n.slice(2),base:8}:n===`0`?{sign:t,digits:`0`,base:10}:n[0]===`0`?/^0[0-7]+$/.test(n)?{sign:t,digits:n.slice(1),base:8}:null:/^[0-9]+$/.test(n)?{sign:t,digits:n,base:10}:null}function Ef(e){if(typeof e==`number`){let t=Math.trunc(e);return Number.isSafeInteger(t)?t:0}if(typeof e==`bigint`){let t=Number(e);return Number.isSafeInteger(t)?t:0}if(typeof e==`string`){let t=Tf(e);if(t===null)return 0;let n=t.sign*Number.parseInt(t.digits,t.base);return Number.isSafeInteger(n)?n:0}return typeof e==`boolean`?+!!e:0}function Df(e){if(typeof e==`bigint`)return e;if(typeof e==`number`)return BigInt(Math.trunc(e));if(typeof e==`string`){let t=Tf(e);if(t===null)return 0n;let n=t.base===16?`0x`:t.base===2?`0b`:t.base===8?`0o`:``,r=BigInt(n+t.digits);return t.sign===-1?-r:r}return typeof e==`boolean`&&e?1n:0n}function Of(e){if(!/^[+-]?[0-7]+$/.test(e))return 0;let t=e[0]===`-`?-1:1,n=e[0]===`+`||e[0]===`-`?e.slice(1):e,r=t*Number.parseInt(n,8);return Number.isSafeInteger(r)?r:0}function kf(e){return JSON.stringify(e)??`null`}function Af(){return{atoi:{fn:e=>Cf(e),argTypes:[`string`],returnType:`int`},int:{fn:e=>Ef(e),argTypes:[`value`],returnType:`int`},int64:{fn:e=>Df(e),argTypes:[`value`]},float64:{fn:e=>wf(e),argTypes:[`value`],returnType:`float`},toDecimal:{fn:e=>Of(e),argTypes:[`string`],returnType:`int`},toRawJson:{fn:e=>kf(e),argTypes:[`serializable`],returnType:`string`}}}const jf={h:36e11,m:6e10,s:1e9,ms:1e6,us:1e3,µs:1e3,ns:1};function Mf(e){if(e===`0`)return 0;let t=!1,n=e;if(n.startsWith(`-`)?(t=!0,n=n.slice(1)):n.startsWith(`+`)&&(n=n.slice(1)),!n)return NaN;let r=0,i=/^(\d+(?:\.\d+)?)(ns|µs|us|ms|[smh])/;for(;n.length>0;){let e=i.exec(n);if(!e)return NaN;let t=parseFloat(e[1]??`0`),a=e[2];r+=t*jf[a],n=n.slice(e[0].length)}return t?-r:r}function Nf(e){if(e===0)return`0s`;let t=!1,n=e;n<0&&(t=!0,n=-n);let r;return r=n<jf.us?`${Math.floor(n)}ns`:n<jf.ms?Pf(n,jf.us,3,`µs`):n<jf.s?Pf(n,jf.ms,6,`ms`):Ff(n),t?`-${r}`:r}function Pf(e,t,n,r){let i=Math.floor(e/t),a=Math.round(e%t);return a===0?`${i}${r}`:`${i}.${String(a).padStart(n,`0`).replace(/0+$/,``)}${r}`}function Ff(e){let t=Math.floor(e/jf.h);e-=t*jf.h;let n=Math.floor(e/jf.m);e-=n*jf.m;let r=Math.floor(e/jf.s),i=e-r*jf.s,a=i===0?`${r}s`:`${r}.${String(Math.round(i)).padStart(9,`0`).replace(/0+$/,``)}s`;return t>0?`${t}h${n}m${a}`:n>0?`${n}m${a}`:a}function If(e){return e*jf.s}function Lf(e){if(e instanceof Date)return e;if(typeof e==`bigint`)return new Date(Number(e)*1e3);if(typeof e==`number`)return new Date(e*1e3);if(typeof e==`string`){let t=new Date(e);if(!Number.isNaN(t.getTime()))return t;throw Error(`sprig: cannot parse date value ${JSON.stringify(e)}`)}throw Error(`sprig: unsupported date type: ${typeof e}`)}function Rf(e,t){let n=t().getTime()-Lf(e).getTime();return Nf(Math.round(n/1e3)*1e9)}const zf=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],Bf=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],Vf=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],Hf=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`];function Uf(e){return e<10?`0${e}`:String(e)}function Wf(e){return e<10?`00${e}`:e<100?`0${e}`:String(e)}function Gf(e){return e<10?` ${e}`:String(e)}function Kf(e){let t=e>=0?`+`:`-`,n=Math.abs(e);return`${t}${Uf(Math.floor(n/60))}${Uf(n%60)}`}function qf(e){let t=e>=0?`+`:`-`,n=Math.abs(e);return`${t}${Uf(Math.floor(n/60))}:${Uf(n%60)}`}function Jf(e){return`${e>=0?`+`:`-`}${Uf(Math.floor(Math.abs(e)/60))}`}function Yf(e){return e===0?`Z`:Kf(e)}function Xf(e){return e===0?`Z`:qf(e)}function Zf(e){return e===0?`Z`:Jf(e)}function Qf(e,t,n){let r=e*1e6,i=String(r).padStart(9,`0`).slice(0,t);return n?i.replace(/0+$/,``):i}const $f=[[`.000000000`,e=>`.${Qf(e.ms,9,!1)}`],[`.999999999`,e=>{let t=Qf(e.ms,9,!0);return t?`.${t}`:``}],[`.000000`,e=>`.${Qf(e.ms,6,!1)}`],[`.999999`,e=>{let t=Qf(e.ms,6,!0);return t?`.${t}`:``}],[`.000`,e=>`.${Wf(e.ms)}`],[`.999`,e=>{let t=Wf(e.ms).replace(/0+$/,``);return t?`.${t}`:``}],[`January`,e=>zf[e.month-1]??`January`],[`Monday`,e=>Vf[e.weekday]??`Monday`],[`Z07:00`,e=>Xf(e.offsetMinutes)],[`-07:00`,e=>qf(e.offsetMinutes)],[`Z0700`,e=>Yf(e.offsetMinutes)],[`-0700`,e=>Kf(e.offsetMinutes)],[`2006`,e=>String(e.year)],[`Jan`,e=>Bf[e.month-1]??`Jan`],[`Mon`,e=>Hf[e.weekday]??`Mon`],[`MST`,e=>e.tzAbbr],[`-07`,e=>Jf(e.offsetMinutes)],[`Z07`,e=>Zf(e.offsetMinutes)],[`15`,e=>Uf(e.hour)],[`01`,e=>Uf(e.month)],[`02`,e=>Uf(e.day)],[`_2`,e=>Gf(e.day)],[`03`,e=>Uf(e.hour12)],[`04`,e=>Uf(e.minute)],[`05`,e=>Uf(e.second)],[`06`,e=>Uf(e.year%100)],[`PM`,e=>e.hour>=12?`PM`:`AM`],[`pm`,e=>e.hour>=12?`pm`:`am`],[`1`,e=>String(e.month)],[`2`,e=>String(e.day)],[`3`,e=>String(e.hour12)],[`4`,e=>String(e.minute)],[`5`,e=>String(e.second)]];function ep(e,t){let n=``,r=0;for(;r<e.length;){let i=!1;for(let[a,o]of $f)if(e.startsWith(a,r)){n+=o(t),r+=a.length,i=!0;break}i||(n+=e[r++])}return n}const tp={year:`numeric`,month:`2-digit`,day:`2-digit`,weekday:`long`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hour12:!1};function np(e){let t=new Map;for(let n of e)t.set(n.type,n.value);return t}const rp=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`];function ip(e,t){let n;try{new Intl.DateTimeFormat(`en-US`,{timeZone:t}),n=t}catch{n=`UTC`}let r=np(new Intl.DateTimeFormat(`en-US`,{...tp,timeZone:n}).formatToParts(e)),i=parseInt(r.get(`hour`)??`0`,10)%24,a=np(new Intl.DateTimeFormat(`en-US`,{timeZone:n,timeZoneName:`short`}).formatToParts(e)).get(`timeZoneName`)??n,o=ap(np(new Intl.DateTimeFormat(`en-US`,{timeZone:n,timeZoneName:`shortOffset`}).formatToParts(e)).get(`timeZoneName`)??`GMT`),s=rp.indexOf(r.get(`weekday`)??`Sunday`);return{year:parseInt(r.get(`year`)??`2000`,10),month:parseInt(r.get(`month`)??`1`,10),day:parseInt(r.get(`day`)??`1`,10),weekday:s===-1?0:s,hour:i,hour12:i%12||12,minute:parseInt(r.get(`minute`)??`0`,10),second:parseInt(r.get(`second`)??`0`,10),ms:e.getUTCMilliseconds(),tzAbbr:a,offsetMinutes:o}}function ap(e){if(e===`GMT`||e===`UTC`)return 0;let t=e.match(/^GMT([+-])(\d{1,2})(?::(\d{2}))?$/);if(!t)return 0;let n=t[1]===`+`?1:-1,r=parseInt(t[2]??`0`,10),i=parseInt(t[3]??`0`,10);return n*(r*60+i)}function op(){return Intl.DateTimeFormat().resolvedOptions().timeZone}function sp(e,t){return ep(e,ip(Lf(t),op()))}function cp(e,t,n){return ep(e,ip(Lf(t),n))}function lp(e,t){let n=Lf(t),r=Mf(e);return Number.isNaN(r)?n:new Date(n.getTime()+r/1e6)}function up(e){if(typeof e==`string`){let t=parseInt(e,10);return Number.isNaN(t)?`0s`:Nf(If(t))}return typeof e==`bigint`?Nf(If(Number(e))):typeof e==`number`?Nf(If(e)):`0s`}const dp=36e11*24*365,fp=36e11*24*30,pp=36e11*24,mp=36e11,hp=6e10,gp=1e9;function _p(e){let t=Mf(String(e));if(Number.isNaN(t))return`0s`;let n=Math.abs(t);return n>dp?`${Math.floor(n/dp)}y`:n>fp?`${Math.floor(n/fp)}mo`:n>pp?`${Math.floor(n/pp)}d`:n>mp?`${Math.floor(n/mp)}h`:n>hp?`${Math.floor(n/hp)}m`:n>gp?`${Math.floor(n/gp)}s`:`0s`}function vp(e){let t=ip(Lf(e),op());return`${t.year}-${String(t.month).padStart(2,`0`)}-${String(t.day).padStart(2,`0`)}`}function yp(e,t){let n=ip(Lf(e),t);return`${n.year}-${String(n.month).padStart(2,`0`)}-${String(n.day).padStart(2,`0`)}`}function bp(e){return e()}const xp=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],Sp=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`];function Cp(){return{year:2e3,month:1,day:1,hour:0,minute:0,second:0,ms:0,offsetMinutes:0,isPM:!1,hour12:!1}}function wp(e,t,n){return[e.slice(t,t+n),t+n]}function Tp(e,t,n,r){let i=t;for(;i<e.length&&i-t<r&&e.charCodeAt(i)>=48&&e.charCodeAt(i)<=57;)i++;if(i-t<n)throw Error(`sprig toDate: expected ${n}-${r} digits at pos ${t}`);return[parseInt(e.slice(t,i),10),i]}function Ep(e,t){for(let[n,r]of xp.entries())if(e.startsWith(r,t))return[n+1,t+r.length];throw Error(`sprig toDate: expected month name at pos ${t}`)}function Dp(e,t){for(let[n,r]of Sp.entries())if(e.startsWith(r,t))return[n+1,t+r.length];throw Error(`sprig toDate: expected short month name at pos ${t}`)}function Op(e,t){for(let n of[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`])if(e.startsWith(n,t))return t+n.length;throw Error(`sprig toDate: expected weekday name at pos ${t}`)}function kp(e,t){for(let n of[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`])if(e.startsWith(n,t))return t+n.length;throw Error(`sprig toDate: expected short weekday name at pos ${t}`)}function Ap(e,t){if(e[t]===` `){let[n,r]=Tp(e,t+1,1,1);return[n,r]}return Tp(e,t,1,2)}function jp(e,t,n){let r=e[t]===`+`?1:e[t]===`-`?-1:0;if(r===0)throw Error(`sprig toDate: expected +/- at pos ${t}`);let i=t+1,[a,o]=Tp(e,i,2,2);i=o;let s=0;if(n&&e[i]===`:`){let[t,n]=Tp(e,i+1,2,2);s=t,i=n}else if(!n){let[t,n]=Tp(e,i,2,2);s=t,i=n}return[r*(a*60+s),i]}function Mp(e,t,n,r){if(e[t]===`Z`)return[0,t+1];if(r){let n=e[t]===`+`?1:e[t]===`-`?-1:0;if(n===0)throw Error(`sprig toDate: expected Z or +/- at pos ${t}`);let[r,i]=Tp(e,t+1,2,2);return[n*r*60,i]}return jp(e,t,n)}function Np(e,t){let n=t;for(;n<e.length&&e.charCodeAt(n)>=65&&e.charCodeAt(n)<=90;)n++;if(n===t)throw Error(`sprig toDate: expected timezone abbreviation at pos ${t}`);return n}function Pp(e,t,n){let[r,i]=wp(e,t,n),a=parseInt(r.padEnd(9,`0`),10);return[Math.round(a/1e6),i]}function Fp(e,t,n,r){let i={...r};switch(e){case`January`:{let[e,r]=Ep(t,n);return i.month=e,[r,i]}case`Monday`:return[Op(t,n),i];case`Jan`:{let[e,r]=Dp(t,n);return i.month=e,[r,i]}case`Mon`:return[kp(t,n),i];case`2006`:{let[e,r]=Tp(t,n,4,4);return i.year=e,[r,i]}case`06`:{let[e,r]=Tp(t,n,2,2);return i.year=e<70?2e3+e:1900+e,[r,i]}case`01`:{let[e,r]=Tp(t,n,2,2);return i.month=e,[r,i]}case`1`:{let[e,r]=Tp(t,n,1,2);return i.month=e,[r,i]}case`_2`:{let[e,r]=Ap(t,n);return i.day=e,[r,i]}case`02`:{let[e,r]=Tp(t,n,2,2);return i.day=e,[r,i]}case`2`:{let[e,r]=Tp(t,n,1,2);return i.day=e,[r,i]}case`15`:{let[e,r]=Tp(t,n,2,2);return i.hour=e,[r,i]}case`03`:{let[e,r]=Tp(t,n,2,2);return i.hour=e,i.hour12=!0,[r,i]}case`3`:{let[e,r]=Tp(t,n,1,2);return i.hour=e,i.hour12=!0,[r,i]}case`04`:{let[e,r]=Tp(t,n,2,2);return i.minute=e,[r,i]}case`4`:{let[e,r]=Tp(t,n,1,2);return i.minute=e,[r,i]}case`05`:{let[e,r]=Tp(t,n,2,2);return i.second=e,[r,i]}case`5`:{let[e,r]=Tp(t,n,1,2);return i.second=e,[r,i]}case`PM`:case`pm`:{let e=t.slice(n,n+2).toLowerCase();if(e!==`am`&&e!==`pm`)throw Error(`sprig toDate: expected AM/PM at pos ${n}, got ${JSON.stringify(t.slice(n,n+2))}`);return i.isPM=e===`pm`,i.hour12=!0,[n+2,i]}case`MST`:return[Np(t,n),i];case`-0700`:{let[e,r]=jp(t,n,!1);return i.offsetMinutes=e,[r,i]}case`-07:00`:{let[e,r]=jp(t,n,!0);return i.offsetMinutes=e,[r,i]}case`-07`:{let e=t[n]===`+`?1:t[n]===`-`?-1:0;if(e===0)throw Error(`sprig toDate: expected +/- at pos ${n}`);let[r,a]=Tp(t,n+1,2,2);return i.offsetMinutes=e*r*60,[a,i]}case`Z0700`:{let[e,r]=Mp(t,n,!1,!1);return i.offsetMinutes=e,[r,i]}case`Z07:00`:{let[e,r]=Mp(t,n,!0,!1);return i.offsetMinutes=e,[r,i]}case`Z07`:{let[e,r]=Mp(t,n,!1,!0);return i.offsetMinutes=e,[r,i]}case`.000000000`:{if(t[n]!==`.`)throw Error(`sprig toDate: expected . at pos ${n}`);let[e,r]=Pp(t,n+1,9);return i.ms=e,[r,i]}case`.999999999`:{if(t[n]!==`.`)return[n,i];let e=n+1,r=e;for(;r<t.length&&t.charCodeAt(r)>=48&&t.charCodeAt(r)<=57;)r++;let a=t.slice(e,r).padEnd(9,`0`);return i.ms=Math.round(parseInt(a,10)/1e6),[r,i]}case`.000000`:{if(t[n]!==`.`)throw Error(`sprig toDate: expected . at pos ${n}`);let[e,r]=Pp(t,n+1,6);return i.ms=e,[r,i]}case`.999999`:{if(t[n]!==`.`)return[n,i];let e=n+1,r=e;for(;r<t.length&&t.charCodeAt(r)>=48&&t.charCodeAt(r)<=57;)r++;let a=t.slice(e,r).padEnd(9,`0`);return i.ms=Math.round(parseInt(a,10)/1e6),[r,i]}case`.000`:{if(t[n]!==`.`)throw Error(`sprig toDate: expected . at pos ${n}`);let[e,r]=Pp(t,n+1,3);return i.ms=e,[r,i]}case`.999`:{if(t[n]!==`.`)return[n,i];let e=n+1,r=e;for(;r<t.length&&t.charCodeAt(r)>=48&&t.charCodeAt(r)<=57;)r++;let a=t.slice(e,r).padEnd(3,`0`);return i.ms=parseInt(a,10),[r,i]}}throw Error(`sprig toDate: unhandled token ${e}`)}const Ip=`.000000000,.999999999,.000000,.999999,.000,.999,January,Monday,Z07:00,-07:00,Z0700,-0700,2006,Jan,Mon,MST,-07,Z07,15,01,02,_2,03,04,05,06,PM,pm,1,2,3,4,5`.split(`,`);function Lp(e,t){let n=0,r=0,i=Cp();for(;n<e.length;){let a=!1;for(let o of Ip)if(e.startsWith(o,n)){let[e,s]=Fp(o,t,r,i);r=e,i=s,n+=o.length,a=!0;break}if(!a){let i=e.charAt(n);if(t[r]!==i)throw Error(`sprig toDate: expected ${JSON.stringify(i)} at pos ${r}, got ${JSON.stringify(t[r])}`);n++,r++}}if(r!==t.length)throw Error(`sprig toDate: extra characters at pos ${r}: ${JSON.stringify(t.slice(r))}`);if(i.hour12){let e=i.hour%12;i.hour=i.isPM?e+12:e}let a=Date.UTC(i.year,i.month-1,i.day,i.hour,i.minute,i.second,i.ms)-i.offsetMinutes*60*1e3;return new Date(a)}function Rp(e,t){return Lp(e,t)}function zp(e){return String(Math.floor(Lf(e).getTime()/1e3))}function Bp(e=()=>new Date){return{now:{fn:()=>bp(e),argTypes:[]},date:{fn:(e,t)=>sp(e,t),argTypes:[`string`,`value`]},dateInZone:{fn:(e,t,n)=>cp(e,t,n),argTypes:[`string`,`value`,`string`]},dateModify:{fn:(e,t)=>lp(e,t),argTypes:[`string`,`value`]},htmlDate:{fn:e=>vp(e),argTypes:[`value`]},htmlDateInZone:{fn:(e,t)=>yp(e,t),argTypes:[`value`,`string`]},duration:{fn:e=>up(e),argTypes:[`value`]},durationRound:{fn:e=>_p(e),argTypes:[`value`]},toDate:{fn:(e,t)=>Rp(e,t),argTypes:[`string`,`string`]},ago:{fn:t=>Rf(t,e),argTypes:[`value`]},unixEpoch:{fn:e=>zp(e),argTypes:[`value`]}}}function Vp(e){return e==null||e===!1?!0:typeof e==`number`?e===0||Number.isNaN(e):typeof e==`bigint`?e===0n:typeof e==`string`||Array.isArray(e)?e.length===0:e instanceof Map||e instanceof Set?e.size===0:typeof e==`object`?Object.keys(e).length===0:!1}function Hp(...e){for(let t of e)if(!Vp(t))return t}function Up(e,t){return Vp(t)?e:t}function Wp(e){return JSON.parse(e)}function Gp(e,t,n){return _d(n)?e:t}function Kp(e){return JSON.stringify(e)??`null`}function qp(e){return JSON.stringify(e,null,2)??`null`}function Jp(){return{default:{fn:(e,t)=>Up(e,t),argTypes:[`value`,`truthy`]},empty:{fn:e=>Vp(e),argTypes:[`truthy`]},coalesce:{fn:(...e)=>Hp(...e),argTypes:[`truthy`]},ternary:{fn:(e,t,n)=>Gp(e,t,n),argTypes:[`value`,`value`,`truthy`]},fromJson:{fn:e=>Wp(e),argTypes:[`string`]},toJson:{fn:e=>Kp(e),argTypes:[`serializable`],returnType:`string`},toPrettyJson:{fn:e=>qp(e),argTypes:[`serializable`],returnType:`string`}}}function Yp(...e){let t={};for(let n=0;n<e.length;n+=2)t[e[n]]=e[n+1];return t}function Xp(e){if(e.kind!==`call`||e.name!==`dict`||e.args.length%2!=0)return null;let t=[];for(let[n,r]of e.args.entries()){if(r.kind!==`literal`||n%2==0&&typeof r.value!=`string`)return null;t.push(r.value)}return Yp(...t)}function Zp(e,t){return e[t]}function Qp(e,t){return t in e}function $p(e){return Object.keys(e)}function em(e,...t){let n={...e};for(let e of t)for(let[t,r]of Object.entries(e))t in n||(n[t]=r);return n}function tm(e,...t){let n={...e};for(let e of t)Object.assign(n,e);return n}function nm(e,...t){let n=new Set(t),r={};for(let[t,i]of Object.entries(e))n.has(t)||(r[t]=i);return r}function rm(e,...t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function im(e,...t){let n=[];for(let r of t)e in r&&n.push(r[e]);return n}function am(e,t,n){return e[t]=n,e}function om(e,t){return delete e[t],e}function sm(e){return Object.values(e)}function cm(){return{dict:{fn:(...e)=>Yp(...e),argTypes:[`string`,`value`],argTypePattern:`alternating`},get:{fn:(e,t)=>Zp(e,t),argTypes:[`dict`,`string`]},set:{fn:(e,t,n)=>am(e,t,n),argTypes:[`dict`,`string`,`value`]},unset:{fn:(e,t)=>om(e,t),argTypes:[`dict`,`string`]},keys:{fn:e=>$p(e),argTypes:[`dict`]},values:{fn:e=>sm(e),argTypes:[`dict`]},pluck:{fn:(e,...t)=>im(e,...t),argTypes:[`string`,`dict`]},pick:{fn:(e,...t)=>rm(e,...t),argTypes:[`dict`,`string`]},omit:{fn:(e,...t)=>nm(e,...t),argTypes:[`dict`,`string`]},hasKey:{fn:(e,t)=>Qp(e,t),argTypes:[`dict`,`string`]},merge:{fn:(e,...t)=>em(e,...t),argTypes:[`dict`]},mergeOverwrite:{fn:(e,...t)=>tm(e,...t),argTypes:[`dict`]}}}new TextEncoder,new Map(Array.from(`ABCDEFGHIJKLMNOPQRSTUVWXYZ234567`).map((e,t)=>[e,t])),new TextDecoder,new TextEncoder,new TextDecoder,new TextEncoder;function lm(...e){for(let t of e)if(Vp(t))return!1;return!0}function um(...e){for(let t of e)if(!Vp(t))return!0;return!1}function dm(e,t){return[...e,t]}function fm(e,t){let n=Math.max(1,e),r=[];for(let e=0;e<t.length;e+=n)r.push(t.slice(e,e+n));return r}function pm(e){return e.filter(e=>!Vp(e))}function mm(...e){let t=[];for(let n of e)t.push(...n);return t}const hm={line:0,column:0,offset:0};function gm(e,t,n,r){return new Tu(e,t,n,r,hm)}function _m(...e){if(e.length<3)throw gm(`dig`,0,`at least 3 arguments (...keys, default, dict)`,`${e.length} argument${e.length===1?``:`s`}`);let t=e[e.length-1],n=e[e.length-2],r=e.slice(0,-2);if(!ym(t))throw gm(`dig`,e.length-1,`dict`,bm(t));for(let e=0;e<r.length;e++)if(typeof r[e]!=`string`)throw gm(`dig`,e,`string`,bm(r[e]));return vm(t,n,r,e.length)}function vm(e,t,n,r){let i=n[0];if(!Object.hasOwn(e,i))return t;let a=e[i];if(n.length===1)return a;if(!ym(a))throw gm(`dig`,r-1,`dict at intermediate key`,bm(a));return vm(a,t,n.slice(1),r)}function ym(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Map)&&!(e instanceof Set)}function bm(e){return e===null?`null`:Array.isArray(e)?`array`:e instanceof Map?`Map`:e instanceof Set?`Set`:typeof e}function xm(e){return e[0]}function Sm(e,t){return t.some(t=>pd(t,e))}function Cm(e){return e.slice(0,-1)}function wm(e){return e[e.length-1]}function Tm(e){return Array.isArray(e)||typeof e==`string`?e.length:e instanceof Map||e instanceof Set?e.size:Object.keys(e).length}function Em(...e){return e}function Dm(e,t){return[t,...e]}function Om(e){return e.slice(1)}function km(e){return[...e].reverse()}function Am(e,t,n){let r=t===void 0?0:t,i=n===void 0?e.length:n;return e.slice(r,i)}function jm(e){let t=[];for(let n of e)n!=null&&t.push(String(n));return t.sort()}function Mm(e){let t=[];for(let n of e)t.some(e=>pd(e,n))||t.push(n);return t}function Nm(e,...t){return e.filter(e=>!t.some(t=>pd(t,e)))}function Pm(){return{list:{fn:(...e)=>Em(...e),argTypes:[`value`]},first:{fn:e=>xm(e),argTypes:[`list`]},last:{fn:e=>wm(e),argTypes:[`list`]},rest:{fn:e=>Om(e),argTypes:[`list`]},initial:{fn:e=>Cm(e),argTypes:[`list`]},len:{fn:e=>Tm(e),argTypes:[`sized`]},reverse:{fn:e=>km(e),argTypes:[`list`]},uniq:{fn:e=>Mm(e),argTypes:[`list`]},without:{fn:(e,...t)=>Nm(e,...t),argTypes:[`list`,`value`]},has:{fn:(e,t)=>Sm(e,t),argTypes:[`value`,`list`]},compact:{fn:e=>pm(e),argTypes:[`list`]},slice:{fn:(e,t,n)=>Am(e,t,n),argTypes:[`list`,`int`,`int`]},concat:{fn:(...e)=>mm(...e),argTypes:[`list`]},chunk:{fn:(e,t)=>fm(e,t),argTypes:[`int`,`list`]},prepend:{fn:(e,t)=>Dm(e,t),argTypes:[`list`,`value`]},append:{fn:(e,t)=>dm(e,t),argTypes:[`list`,`value`]},sortAlpha:{fn:e=>jm(e),argTypes:[`list`],returnType:`list`},push:{fn:(e,t)=>dm(e,t),argTypes:[`list`,`value`]},tuple:{fn:(...e)=>Em(...e),argTypes:[`value`]},dig:{fn:(...e)=>_m(...e),argTypes:[`value`]},all:{fn:(...e)=>lm(...e),argTypes:[`truthy`],returnType:`bool`},any:{fn:(...e)=>um(...e),argTypes:[`truthy`],returnType:`bool`}}}function Fm(...e){return e.reduce((e,t)=>e+t,0)}function Im(e){return e+1}function Lm(e){return e+1}function Rm(...e){return e.reduce((e,t)=>e+t,0)}function zm(e){return Math.ceil(e)}function Bm(e,t){return Math.trunc(e/t)}function Vm(e,t){return e/t}function Hm(e){return Math.floor(e)}function Um(...e){return e.reduce((e,t)=>t>e?t:e,-1/0)}function Wm(...e){return e.reduce((e,t)=>Math.max(e,t),-1/0)}function Gm(...e){return e.reduce((e,t)=>t<e?t:e,1/0)}function Km(...e){return e.reduce((e,t)=>Math.min(e,t),1/0)}function qm(e,t){return e%t}function Jm(...e){return e.reduce((e,t)=>e*t,1)}function Ym(...e){return e.reduce((e,t)=>e*t,1)}function Xm(e,t=0){let n=10**t;return Math.sign(e)*Math.round(Math.abs(e)*n)/n}function Zm(e,t,n){let r=[];if(t<e){if(n>=0)return r;for(let i=e;i>t;i+=n)r.push(i);return r}if(n<=0)return r;for(let i=e;i<t;i+=n)r.push(i);return r}function Qm(...e){let t=1;switch(e.length){case 0:return``;case 1:{let n=e[0];return n<1&&(t=-1),Zm(1,n+t,t).join(` `)}case 2:{let t=e[0],n=e[1],r=n<t?-1:1;return Zm(t,n+r,r).join(` `)}case 3:{let n=e[0],r=e[1],i=e[2];return i<n&&(t=-1,r>0)?``:Zm(n,i+t,r).join(` `)}default:return``}}function $m(e,t){return e-t}function eh(e,t){return e-t}function th(e){return Zm(0,e,e<0?-1:1)}function nh(){return{add:{fn:(...e)=>Fm(...e),argTypes:[`int`]},sub:{fn:(e,t)=>$m(e,t),argTypes:[`int`,`int`]},mul:{fn:(...e)=>Jm(...e),argTypes:[`int`]},div:{fn:(e,t)=>Bm(e,t),argTypes:[`int`,`int`]},mod:{fn:(e,t)=>qm(e,t),argTypes:[`int`,`int`]},min:{fn:(...e)=>Gm(...e),argTypes:[`int`]},max:{fn:(...e)=>Um(...e),argTypes:[`int`]},floor:{fn:e=>Hm(e),argTypes:[`float`]},ceil:{fn:e=>zm(e),argTypes:[`float`]},round:{fn:(e,t)=>Xm(e,t),argTypes:[`float`,`int`]},addf:{fn:(...e)=>Rm(...e),argTypes:[`float`]},subf:{fn:(e,t)=>eh(e,t),argTypes:[`float`,`float`]},mulf:{fn:(...e)=>Ym(...e),argTypes:[`float`]},divf:{fn:(e,t)=>Vm(e,t),argTypes:[`float`,`float`]},add1:{fn:e=>Im(e),argTypes:[`int`]},add1f:{fn:e=>Lm(e),argTypes:[`float`]},maxf:{fn:(...e)=>Wm(...e),argTypes:[`float`]},minf:{fn:(...e)=>Km(...e),argTypes:[`float`]},biggest:{fn:(...e)=>Um(...e),argTypes:[`int`]},seq:{fn:(...e)=>Qm(...e),argTypes:[`int`],returnType:`string`},until:{fn:e=>th(e),argTypes:[`int`],returnType:`list`},untilStep:{fn:(e,t,n)=>Zm(e,t,n),argTypes:[`int`,`int`,`int`],returnType:`list`}}}Array.from({length:95},(e,t)=>String.fromCharCode(t+32)).join(``);function rh(e,t){return t.length<=e||e<4?t:`${t.slice(0,e-3)}...`}function ih(e,t,n){return t<7||n.length<t||e<0||e>n.length-t+1?n:`...${n.slice(e,e+t-6)}...`}const q={Invalid:0,Number:1,UpperCase:2,Alphabet:3,Connector:4,Punct:5,Other:6},ah=/^[-_\s]$/,oh=/^\p{P}$/u,sh=/^\p{L}$/u,ch=/^\p{Lu}$/u,lh=/^\p{N}$/u;function uh(e){return e!==void 0&&ah.test(e)}function dh(e){return e!==void 0&&sh.test(e)}function fh(e){return e!==void 0&&ch.test(e)}function ph(e){return e!==void 0&&lh.test(e)}function mh(e){return e!==void 0&&oh.test(e)}function hh(e,t){if(t>=e.length)return{word:{wt:q.Invalid,text:``},next:t};let n=e[t],r=t+1;if(uh(n)){for(;r<e.length&&uh(e[r]);)r++;return{word:{wt:q.Connector,text:e.slice(t,r).join(``)},next:r}}if(mh(n)){for(;r<e.length&&mh(e[r]);)r++;return{word:{wt:q.Punct,text:e.slice(t,r).join(``)},next:r}}if(fh(n)){if(r>=e.length)return{word:{wt:q.UpperCase,text:n},next:r};if(fh(e[r])){let n=r;for(;n<e.length&&fh(e[n]);)n++;return n<e.length&&dh(e[n])?{word:{wt:q.UpperCase,text:e.slice(t,n-1).join(``)},next:n-1}:{word:{wt:q.UpperCase,text:e.slice(t,n).join(``)},next:n}}if(dh(e[r])){let n=r+1;for(;n<e.length&&dh(e[n])&&!fh(e[n]);)n++;return{word:{wt:q.UpperCase,text:e.slice(t,n).join(``)},next:n}}return{word:{wt:q.UpperCase,text:n},next:r}}if(dh(n)){for(;r<e.length&&dh(e[r])&&!fh(e[r]);)r++;return{word:{wt:q.Alphabet,text:e.slice(t,r).join(``)},next:r}}if(ph(n)){for(;r<e.length&&ph(e[r]);)r++;return{word:{wt:q.Number,text:e.slice(t,r).join(``)},next:r}}for(;r<e.length&&!uh(e[r])&&!dh(e[r])&&!ph(e[r])&&!mh(e[r]);)r++;return{word:{wt:q.Other,text:e.slice(t,r).join(``)},next:r}}function gh(e,t,n){if(t.wt!==q.UpperCase&&t.wt!==q.Connector){e.push(t.text);return}for(let r of t.text)uh(r)?e.push(n):fh(r)?e.push(r.toLowerCase()):e.push(r)}function _h(e,t){if(e.length===0)return``;let n=Array.from(e),r=[],{word:i,next:a}=hh(n,0);for(;a<n.length;){i.wt!==q.Connector&&gh(r,i,t);let e=i,o=i;if({word:i,next:a}=hh(n,a),e.wt===q.Number){for(;i.wt===q.Alphabet||i.wt===q.Number;)gh(r,i,t),{word:i,next:a}=hh(n,a);i.wt!==q.Invalid&&i.wt!==q.Punct&&i.wt!==q.Connector&&r.push(t);continue}if(e.wt===q.Connector){gh(r,o,t);continue}if(e.wt===q.Punct)continue;if(i.wt!==q.Number){i.wt!==q.Connector&&i.wt!==q.Punct&&r.push(t);continue}if(a>=n.length)continue;let s=i;if({word:i,next:a}=hh(n,a),i.wt!==q.Alphabet){gh(r,s,t),i.wt!==q.Connector&&i.wt!==q.Punct&&r.push(t);continue}for(r.push(t),gh(r,s,t);i.wt===q.Alphabet||i.wt===q.Number;)gh(r,i,t),{word:i,next:a}=hh(n,a);i.wt!==q.Invalid&&i.wt!==q.Connector&&i.wt!==q.Punct&&r.push(t)}return gh(r,i,t),r.join(``).toLowerCase()}function vh(e){if(e.length===0)return``;let t=Array.from(e),n=[],r=0,i=``;for(;r<t.length;){if(i=t[r],r++,!uh(i)){i=i.toUpperCase();break}n.push(i)}if(r>=t.length)return t.length>0&&n.push(i),n.join(``);for(;r<t.length;){let e=i;if(i=t[r],r++,uh(i)&&uh(e)){n.push(e);continue}uh(e)?i=i.toUpperCase():(i=i.toLowerCase(),n.push(e))}return n.push(i),n.join(``)}function yh(e){return vh(e)}function bh(...e){return e.join(` `)}function xh(e,t){return t.includes(e)}function Sh(e,t){return t.startsWith(e)}function Ch(e,t){return t.endsWith(e)}function wh(e,t){let n=` `.repeat(Math.max(0,e));return t.split(`
48
+ `?(this.line+=1,this.column=1):this.column+=1}}advanceTo(e){for(;this.offset<e;)this.advanceBy(1)}makeToken(e,t,n,r={}){return Object.freeze({type:e,value:t,pos:n,...r.trimLeft===void 0?{}:{trimLeft:r.trimLeft},...r.trimRight===void 0?{}:{trimRight:r.trimRight}})}};function zu(e){return e===` `||e===` `||e===`\r`||e===`
49
+ `}function Bu(e){return e===`+`||e===`-`}function Vu(e){return e>=`0`&&e<=`9`}function Hu(e){return Vu(e)||e>=`a`&&e<=`f`||e>=`A`&&e<=`F`}function Uu(e){return e>=`0`&&e<=`7`}function Wu(e){return e===`0`||e===`1`}function Gu(e){return e>=`a`&&e<=`z`||e>=`A`&&e<=`Z`}function Ku(e){return Gu(e)||e===`_`}function qu(e){return Ku(e)||Vu(e)}let Ju,Yu;function Xu(e,t){return Yu(e,t)}var Zu=class e{static EMPTY=new e(new Map,void 0);#e;#t;constructor(e,t){this.#e=e,this.#t=t}static{Ju=(t,n)=>new e(t,n),Yu=(e,t)=>e.#e.get(t)??(e.#t&&Yu(e.#t,t))}has(e){return Yu(this,e)!==void 0}};function Qu(e,t,n=Zu.EMPTY){return new $u(e,t,n).parseTemplate()}var $u=class{lex;buf=[];defines=new Map;inherit;source;rangeDepth=0;constructor(e,t,n){this.source=e,this.inherit=n,this.lex=t?new Ru(e,t):new Ru(e)}peek(e=0){for(;this.buf.length<=e;)this.buf.push(this.lex.next());return this.buf[e]}next(){return this.buf.length>0?this.buf.shift():this.lex.next()}expect(e,t){let n=this.next();if(n.type!==e)throw this.errAt(n,`expected ${t}`,{expected:t,found:nd(n)});return n}errAt(e,t,n={}){return new Eu(t,e.pos,{...n,source:this.source})}parseTemplate(){let e=this.parseList();if(this.peek().type!==`EOF`){let e=this.peek(),t=this.peek(1);if(e.type===`LeftDelim`&&(t.type===`Else`||t.type===`End`)){let n=t.type===`Else`?`else`:`end`;throw this.errAt(e,`unexpected \`{{${n}}}\` outside of \`if\`, \`range\`, \`with\`, or \`block\``,{found:`{{${n}}}`})}throw this.errAt(e,`unexpected ${nd(e)}`,{found:nd(e)})}return{root:e,defines:Ju(this.defines,this.inherit),ownDefines:this.defines,source:this.source}}parseList(){let e=this.peek().pos,t=[];for(;;){let n=this.peek();if(n.type===`EOF`)break;if(n.type===`Text`){this.next(),t.push({type:`Text`,pos:n.pos,text:n.value});continue}if(n.type===`Comment`){this.next();let e=td(n);t.push({type:`Comment`,pos:n.pos,text:n.value,trim:e});continue}if(n.type===`LeftDelim`){let n=this.peek(1).type;if(n===`Else`||n===`End`)return ed(e,t);let r=this.parseAction();r!==null&&t.push(r);continue}throw this.errAt(n,`unexpected ${nd(n)} at top level`,{found:nd(n)})}return ed(e,t)}parseAction(){let e=this.expect(`LeftDelim`,"`{{`"),t=e.trimLeft===!0,n=this.peek();switch(n.type){case`If`:return this.next(),this.parseBranch(`If`,e.pos,t);case`Range`:return this.next(),this.parseBranch(`Range`,e.pos,t);case`With`:return this.next(),this.parseBranch(`With`,e.pos,t);case`Break`:return this.next(),this.parseBreakOrContinue(`Break`,e.pos,t);case`Continue`:return this.next(),this.parseBreakOrContinue(`Continue`,e.pos,t);case`Template`:return this.next(),this.parseTemplateInvocation(e.pos,t);case`Block`:return this.next(),this.parseBlock(e.pos,t);case`Define`:return this.next(),this.parseDefine(e.pos,t),null;case`RightDelim`:throw this.errAt(n,`empty action`,{expected:`pipeline`});default:{let n=this.parsePipeline(),r=this.expect(`RightDelim`,"`}}`");return{type:`Action`,pos:e.pos,pipe:n,trim:{trimLeft:t,trimRight:r.trimRight===!0}}}}}parseBranch(e,t,n){let r=this.parsePipeline();this.expect(`RightDelim`,"`}}`"),e===`Range`&&(this.rangeDepth+=1);let i=this.parseList();e===`Range`&&--this.rangeDepth;let a=this.parseElsePart(),o={trimLeft:n,trimRight:a.endConsumed?a.endRight:this.consumeEnd()},s=a.list?{pipe:r,list:i,elseList:a.list,trim:o}:{pipe:r,list:i,trim:o};switch(e){case`If`:return{type:`If`,pos:t,...s};case`Range`:return{type:`Range`,pos:t,...s};case`With`:return{type:`With`,pos:t,...s}}}parseBreakOrContinue(e,t,n){if(this.rangeDepth===0)throw new Eu(`{{${e===`Break`?`break`:`continue`}}} outside of {{range}}`,t,{source:this.source});let r={trimLeft:n,trimRight:this.expect(`RightDelim`,"`}}`").trimRight===!0};return e===`Break`?{type:`Break`,pos:t,trim:r}:{type:`Continue`,pos:t,trim:r}}parseElsePart(){if(this.peek().type!==`LeftDelim`||this.peek(1).type!==`Else`)return{list:void 0,endRight:!1,endConsumed:!1};let e=this.next();if(this.next(),this.peek().type===`If`){this.next();let t=this.parseBranch(`If`,e.pos,e.trimLeft===!0);return{list:{type:`List`,pos:e.pos,nodes:[t]},endRight:t.trim.trimRight,endConsumed:!0}}return this.expect(`RightDelim`,"`}}`"),{list:this.parseList(),endRight:!1,endConsumed:!1}}consumeEnd(){return this.expect(`LeftDelim`,"`{{end}}`"),this.expect(`End`,"`end`"),this.expect(`RightDelim`,"`}}`").trimRight===!0}parseTemplateInvocation(e,t){let n=this.parseQuotedName(),r=this.peek().type===`RightDelim`?void 0:this.parsePipeline(),i={trimLeft:t,trimRight:this.expect(`RightDelim`,"`}}`").trimRight===!0};return r?{type:`Template`,pos:e,name:n,pipe:r,trim:i}:{type:`Template`,pos:e,name:n,trim:i}}parseBlock(e,t){let n=this.parseQuotedName(),r=this.peek().type===`RightDelim`?void 0:this.parsePipeline();this.expect(`RightDelim`,"`}}`");let i=this.rangeDepth;this.rangeDepth=0;let a=this.parseList();this.rangeDepth=i;let o={trimLeft:t,trimRight:this.consumeEnd()};return!this.defines.has(n)&&!this.inherit.has(n)&&this.defines.set(n,{list:a,source:this.source}),r?{type:`Block`,pos:e,name:n,pipe:r,list:a,trim:o}:{type:`Block`,pos:e,name:n,list:a,trim:o}}parseDefine(e,t){let n=this.parseQuotedName();this.expect(`RightDelim`,"`}}`");let r=this.rangeDepth;this.rangeDepth=0;let i=this.parseList();if(this.rangeDepth=r,this.consumeEnd(),this.defines.has(n)||this.inherit.has(n))throw new Eu(`redefinition of template ${JSON.stringify(n)}`,i.pos,{source:this.source});this.defines.set(n,{list:i,source:this.source})}parseQuotedName(){let e=this.next();if(e.type!==`String`)throw this.errAt(e,`expected template name (quoted string)`,{expected:`string`,found:nd(e)});return ud(e.value,e.pos,this.source)}parsePipeline(){let e=this.peek().pos,t=this.tryParseDecls(),n=[this.parseCommand()];for(;this.peek().type===`Pipe`;){this.next();let e=this.peek();if(!rd(e.type))throw this.errAt(e,"missing command after `|`",{expected:`command`,found:nd(e)});n.push(this.parseCommand())}return{type:`Pipe`,pos:e,decls:t?.vars??[],isAssign:t?.isAssign??!1,cmds:n}}tryParseDecls(){if(this.peek().type!==`Variable`)return;let e=1;for(;this.peek(e).type===`Comma`;){if(this.peek(e+1).type!==`Variable`)return;e+=2}let t=this.peek(e).type;if(t!==`Declare`&&t!==`Assign`)return;let n=[id(this.next())];for(;this.peek().type===`Comma`;)this.next(),n.push(id(this.expect(`Variable`,`$variable`)));return{vars:n,isAssign:this.next().type===`Assign`}}parseCommand(){let e=this.peek().pos,t=[this.parsePrimary()];for(;rd(this.peek().type);)t.push(this.parsePrimary());return{type:`Command`,pos:e,args:t}}parsePrimary(){let e=this.next();switch(e.type){case`Dot`:return{type:`Dot`,pos:e.pos};case`Field`:return{type:`Field`,pos:e.pos,idents:e.value.slice(1).split(`.`)};case`Variable`:return id(e);case`Identifier`:return{type:`Identifier`,pos:e.pos,ident:e.value};case`String`:return{type:`String`,pos:e.pos,raw:e.value,value:ud(e.value,e.pos,this.source)};case`Number`:return od(e);case`Char`:return sd(e,this.source);case`Bool`:return{type:`Bool`,pos:e.pos,value:e.value===`true`};case`Nil`:return{type:`Nil`,pos:e.pos};case`LeftParen`:return this.parseChainOrPipe(e.pos);default:throw this.errAt(e,`expected command argument, found ${nd(e)}`,{expected:`command argument`,found:nd(e)})}}parseChainOrPipe(e){let t=this.parsePipeline(),n=this.expect(`RightParen`,"`)`"),r=[],i=n.pos.offset+1,a=this.peek();return a.type===`Field`&&a.pos.offset===i&&(this.next(),r.push(...a.value.slice(1).split(`.`))),r.length===0?t:{type:`Chain`,pos:e,node:t,fields:r}}};function ed(e,t){return{type:`List`,pos:e,nodes:t}}function td(e){return{trimLeft:e.trimLeft===!0,trimRight:e.trimRight===!0}}function nd(e){return e.type===`EOF`?`end of input`:e.value||e.type}function rd(e){switch(e){case`Dot`:case`Field`:case`Variable`:case`Identifier`:case`String`:case`Number`:case`Char`:case`Bool`:case`Nil`:case`LeftParen`:return!0;default:return!1}}function id(e){return{type:`Variable`,pos:e.pos,idents:ad(e.value)}}function ad(e){let t=e.indexOf(`.`);return t===-1?[e]:[e.slice(0,t),...e.slice(t+1).split(`.`)]}function od(e){let t=e.value,n=t.replace(/_/g,``),r=n.toLowerCase().endsWith(`i`),i=r?n.slice(0,-1):n,a=!r&&(i.includes(`.`)||!i.startsWith(`0x`)&&!i.startsWith(`0X`)&&/[eE]/.test(i)||(i.startsWith(`0x`)||i.startsWith(`0X`))&&/[pP]/.test(i)),o=!r&&!a,s={type:`Number`,pos:e.pos,text:t,isInt:o,isUint:!1,isFloat:a,isComplex:r};if(o){let e=cd(i);return{...s,intValue:e}}if(a){let e=ld(i);return{...s,floatValue:e}}let c=ld(i);return{...s,complexValue:[0,c]}}function sd(e,t){let n=dd(e.value,e.pos,t);return{type:`Number`,pos:e.pos,text:e.value,isInt:!0,isUint:!1,isFloat:!1,isComplex:!1,intValue:BigInt(n)}}function cd(e){let t=1n,n=e;return n.startsWith(`+`)?n=n.slice(1):n.startsWith(`-`)&&(t=-1n,n=n.slice(1)),t*BigInt(n)}function ld(e){return Number(e)}function ud(e,t,n){if(e.startsWith("`"))return e.slice(1,-1);let r=``;for(let i=1;i<e.length-1;i++){let a=e[i];if(a!==`\\`){r+=a;continue}let o=e[++i];switch(o){case`n`:r+=`
50
+ `;break;case`t`:r+=` `;break;case`r`:r+=`\r`;break;case`\\`:r+=`\\`;break;case`"`:r+=`"`;break;case`'`:r+=`'`;break;case`a`:r+=`\x07`;break;case`b`:r+=`\b`;break;case`f`:r+=`\f`;break;case`v`:r+=`\v`;break;case`0`:case`1`:case`2`:case`3`:case`4`:case`5`:case`6`:case`7`:{let t=o+(e[i+1]??``)+(e[i+2]??``);i+=2,r+=String.fromCodePoint(Number.parseInt(t,8));break}case`x`:{let t=(e[i+1]??``)+(e[i+2]??``);i+=2,r+=String.fromCodePoint(Number.parseInt(t,16));break}case`u`:{let t=e.slice(i+1,i+5);i+=4,r+=String.fromCodePoint(Number.parseInt(t,16));break}case`U`:{let t=e.slice(i+1,i+9);i+=8,r+=String.fromCodePoint(Number.parseInt(t,16));break}default:throw new Eu(`bad escape sequence \\${o}`,t,{expected:`valid escape sequence`,found:`\\${o}`,source:n})}}return r}function dd(e,t,n){let r=ud(`"${e.slice(1,-1).replace(/"/g,`\\"`)}"`,t,n);if(r.length===0)throw new Eu(`empty rune literal`,t,{source:n});return r.codePointAt(0)??0}function fd(e,t){if(t(e)!==!1)for(let n of pd(e))fd(n,t)}function pd(e){switch(e.type){case`Text`:case`Comment`:case`Dot`:case`Nil`:case`Bool`:case`Number`:case`String`:case`Identifier`:case`Field`:case`Variable`:case`Break`:case`Continue`:return[];case`List`:return e.nodes;case`Chain`:return[e.node];case`Command`:return e.args;case`Pipe`:return[...e.decls,...e.cmds];case`Action`:return[e.pipe];case`If`:case`Range`:case`With`:return e.elseList?[e.pipe,e.list,e.elseList]:[e.pipe,e.list];case`Template`:return e.pipe?[e.pipe]:[];case`Block`:return e.pipe?[e.pipe,e.list]:[e.list];default:return Fu(e)}}const md=Symbol(`go-template-js.MISSING`);function hd(e,t){if(e==null)return md;if(e instanceof Map)return e.has(t)?e.get(t):md;if(Array.isArray(e))return md;if(typeof e==`object`){let n=e;return t in n?n[t]:md}return md}function gd(e,t){let n=e;for(let e of t){if(n===md)return md;n=hd(n,e)}return n}function _d(e,t){if(Object.is(e,t))return!0;if(e===null||t===null||e===void 0||t===void 0||typeof e!=typeof t)return!1;if(Array.isArray(e)&&Array.isArray(t))return e.length===t.length?e.every((e,n)=>_d(e,t[n])):!1;if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(let[n,r]of e)if(!t.has(n)||!_d(r,t.get(n)))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}if(typeof e==`object`&&typeof t==`object`){let n=Object.keys(e),r=Object.keys(t);return n.length===r.length?n.every(n=>_d(e[n],t[n])):!1}return!1}const vd=new WeakSet;function yd(e){return vd.add(e),e}function bd(e){return vd.has(e)}function xd(e){return e==null||e===!1?!1:typeof e==`number`?e!==0&&!Number.isNaN(e):typeof e==`bigint`?e!==0n:typeof e==`string`||Array.isArray(e)?e.length>0:e instanceof Map||e instanceof Set?e.size>0:typeof e==`object`?Object.keys(e).length>0:!!e}function Sd(e,t){return{eq:{fn:(e,...t)=>t.some(t=>Td(e,t)),argTypes:[`comparable`]},ne:{fn:(e,t)=>!Td(e,t),argTypes:[`comparable`,`comparable`]},lt:{fn:(e,t)=>Ed(e,t)<0,argTypes:[`ordered`,`ordered`]},le:{fn:(e,t)=>Ed(e,t)<=0,argTypes:[`ordered`,`ordered`]},gt:{fn:(e,t)=>Ed(e,t)>0,argTypes:[`ordered`,`ordered`]},ge:{fn:(e,t)=>Ed(e,t)>=0,argTypes:[`ordered`,`ordered`]},len:{fn:e=>Dd(e),argTypes:[`sized`]},index:{fn:(e,...t)=>{let n=e;for(let e of t)n=Od(n,e);return n},argTypes:[`collection`,`index-key`]},slice:{fn:(e,...t)=>{let n=t.length>=1?t[0]:0,r=t.length>=2?t[1]:void 0;return e.slice(n,r)},argTypes:[`sliceable`,`int`]},print:{fn:(...t)=>jd(t,e),argTypes:[`stringifiable`],returnType:`string`},println:{fn:(...t)=>`${jd(t,e)}\n`,argTypes:[`stringifiable`],returnType:`string`},printf:{fn:(n,...r)=>Bd(n,r,e,t),argTypes:[`string`,`stringifiable`],returnType:`string`},toString:{fn:n=>Ud(n,e,t),argTypes:[`value`],returnType:`string`},toStrings:{fn:n=>n.map(n=>Ud(n,e,t)),argTypes:[`list`]},call:{fn:(e,...t)=>e(...t),argTypes:[`callable`,`value`]},html:{fn:(...t)=>Pd(jd(t,e)),argTypes:[`stringifiable`],returnType:`string`},js:{fn:(...t)=>Ld(jd(t,e)),argTypes:[`stringifiable`],returnType:`string`},urlquery:{fn:(...t)=>zd(jd(t,e)),argTypes:[`stringifiable`],returnType:`string`},not:{fn:e=>!xd(e),argTypes:[`truthy`]}}}function Cd(){return{and:yd({argTypes:[`truthy`],fn:(...e)=>{let t=!0;for(let n of e)if(t=n(),!xd(t))return t;return t}}),or:yd({argTypes:[`truthy`],fn:(...e)=>{let t=!1;for(let n of e)if(t=n(),xd(t))return t;return t}})}}function wd(e,t){return{...Sd(e,t),...Cd()}}function Td(e,t){return typeof e==`number`&&typeof t==`bigint`?BigInt(e)===t:typeof e==`bigint`&&typeof t==`number`?e===BigInt(t):_d(e,t)}function Ed(e,t){if(typeof e==`bigint`&&typeof t==`bigint`)return e===t?0:e<t?-1:1;if(typeof e==`bigint`||typeof t==`bigint`){let n=typeof e==`bigint`?e:BigInt(Math.trunc(Number(e))),r=typeof t==`bigint`?t:BigInt(Math.trunc(Number(t)));return n===r?0:n<r?-1:1}let n=e,r=t;return n===r?0:n<r?-1:1}function Dd(e){return typeof e==`string`||Array.isArray(e)?e.length:e instanceof Map||e instanceof Set?e.size:Object.keys(e).length}function Od(e,t){if(Array.isArray(e)){let n=Number(t);if(!Number.isInteger(n))throw Error(`index: array index must be integer, got ${kd(t)}`);if(n<0||n>=e.length)throw Error(`index: out of range [${n}] with length ${e.length}`);return e[n]}if(e instanceof Map)return e.get(t);if(typeof e==`string`)return e[Number(t)];if(typeof e==`object`&&e){if(typeof t!=`string`)throw Error(`index: object index must be string, got ${kd(t)}`);return e[t]}throw Error(`index: cannot index ${kd(e)}`)}function kd(e){return e===null?`null`:e===void 0?`undefined`:Array.isArray(e)?`array`:e instanceof Map?`Map`:typeof e}function Ad(e){return e==null?`<nil>`:typeof e==`string`?`string`:typeof e==`boolean`?`bool`:typeof e==`bigint`?`int64`:typeof e==`number`?Number.isInteger(e)?`int`:`float64`:Array.isArray(e)?`[]interface {}`:e instanceof Map||typeof e==`object`?`map[string]interface {}`:typeof e}function jd(e,t){let n=``,r=!1;for(let i=0;i<e.length;i++){let a=e[i],o=typeof a==`string`;i>0&&!r&&!o&&(n+=` `),n+=Md(a,t),r=o}return n}function Md(e,t){return e==null?`<nil>`:typeof e==`string`?e:t(e)}const Nd={"\0":`�`,'"':`&#34;`,"'":`&#39;`,"&":`&amp;`,"<":`&lt;`,">":`&gt;`};function Pd(e){return e.replace(/[\0"'&<>]/g,e=>Nd[e]??e)}const Fd={"\\":`\\\\`,"'":`\\'`,'"':`\\"`,"<":`\\u003C`,">":`\\u003E`,"&":`\\u0026`,"=":`\\u003D`},Id=/^[\p{L}\p{M}\p{N}\p{P}\p{S}]$/u;function Ld(e){let t=``;for(let n of e){let e=Fd[n];if(e!==void 0){t+=e;continue}let r=n.codePointAt(0);if(r<32||r>=128&&!Id.test(n)){t+=`\\u${r.toString(16).toUpperCase().padStart(4,`0`)}`;continue}t+=n}return t}const Rd=new TextEncoder;function zd(e){let t=``,n=Rd.encode(e);for(let e of n)e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===45||e===46||e===95||e===126?t+=String.fromCharCode(e):e===32?t+=`+`:t+=`%${e.toString(16).toUpperCase().padStart(2,`0`)}`;return t}function Bd(e,t,n,r){let i=``,a=0,o=0;for(;o<e.length;){let s=e[o];if(s!==`%`){i+=s,o+=1;continue}if(e[o+1]===`%`){i+=`%`,o+=2;continue}let c=o+1;for(;c<e.length&&`+-# 0`.includes(e[c]??``);)c+=1;for(;c<e.length&&e[c]!==void 0&&/[0-9]/.test(e[c]);)c+=1;if(e[c]===`.`)for(c+=1;c<e.length&&e[c]!==void 0&&/[0-9]/.test(e[c]);)c+=1;let l=e[c],u=e.slice(o+1,c),d=t[a++];i+=Vd(l??``,u,d,n,r),o=c+1}return i}function Vd(e,t,n,r,i){switch(e){case`s`:return typeof n==`string`?Hd(t,n):Hd(t,Md(n,r));case`d`:return typeof n!=`number`&&typeof n!=`bigint`?`%!${e}(${Ad(n)}=${Md(n,r)})`:Hd(t,String(typeof n==`bigint`?n:Math.trunc(n)));case`v`:return Hd(t,Ud(n,r,i));case`q`:return Hd(t,JSON.stringify(Md(n,r)));case`f`:{if(typeof n!=`number`&&typeof n!=`bigint`)return`%!${e}(${Ad(n)}=${Md(n,r)})`;let i=t.includes(`.`)?Number(t.split(`.`)[1]):6;return Hd(t,Number(n).toFixed(i))}case`t`:return Hd(t,xd(n)?`true`:`false`);case`x`:if(typeof n==`string`){let e=new TextEncoder().encode(n),r=``;for(let t of e)r+=t.toString(16).padStart(2,`0`);return Hd(t,r)}return typeof n!=`number`&&typeof n!=`bigint`?`%!${e}(${Ad(n)}=${Md(n,r)})`:typeof n==`bigint`?Hd(t,n.toString(16)):Hd(t,Math.trunc(n).toString(16));default:return`%!${e}(${Ad(n)}=${Md(n,r)})`}}function Hd(e,t){let n=e.match(/^([+\-# 0]*)/)?.[1]??``,r=e.slice(n.length).match(/^(\d+)/);if(!r)return t;let i=Number(r[1]);if(t.length>=i)return t;let a=` `.repeat(i-t.length);return n.includes(`-`)?t+a:a+t}function Ud(e,t,n){return e==null?`<nil>`:typeof e==`string`?e:n(e)?t(e):Array.isArray(e)?`[${e.map(e=>Ud(e,t,n)).join(` `)}]`:e instanceof Map?Wd([...e.entries()],t,n):Gd(e)?Wd(Object.entries(e),t,n):String(e)}function Wd(e,t,n){let r=e=>Ud(e,t,n),i=e=>typeof e==`number`||typeof e==`bigint`,a=([e],[t])=>{if(i(e)&&i(t))return e<t?-1:+(e>t);if(i(e)!==i(t))return i(e)?-1:1;let[n,a]=[r(e),r(t)];return n<a?-1:+(n>a)};return`map[${[...e].sort(a).map(([e,t])=>`${r(e)}:${r(t)}`).join(` `)}]`}function Gd(e){if(typeof e!=`object`||!e||Array.isArray(e)||e instanceof Map||e instanceof Set)return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype}function Kd(e){return{dot:e,root:e,parent:void 0,vars:new Map}}function qd(e,t){return{dot:t,root:e.root,parent:e,vars:new Map}}function Jd(e,t){let n=e;for(;n!==void 0;){if(n.vars.has(t))return{found:!0,value:n.vars.get(t)};n=n.parent}return{found:!1}}function Yd(e,t,n){e.vars.set(t,n)}const Xd=new Set([`default`,`zero`,`error`]);function Zd(e){if(e===void 0)return`default`;if(Xd.has(e))return e;throw Error(`EngineConfig.missingKey: expected "default" | "zero" | "error", got ${Qd(e)}`)}function Qd(e){return typeof e==`string`?JSON.stringify(e):e===null?`null`:e===void 0?`undefined`:typeof e==`bigint`?`${e}n`:typeof e==`number`||typeof e==`boolean`?String(e):typeof e==`symbol`?e.toString():typeof e==`function`?`[Function]`:`[${typeof e}]`}function $d(e){if(e!==void 0){if(typeof e!=`object`||!e)throw Error(`EngineConfig.delims: expected { left, right } object, got ${Qd(e)}`);if(typeof e.left!=`string`||e.left.length===0)throw Error(`EngineConfig.delims.left: expected non-empty string, got ${Qd(e.left)}`);if(typeof e.right!=`string`||e.right.length===0)throw Error(`EngineConfig.delims.right: expected non-empty string, got ${Qd(e.right)}`);return{left:e.left,right:e.right}}}const ef=Object.freeze({kind:`break`}),tf=Object.freeze({kind:`continue`}),nf={kind:`none`};let rf;(class e{source;_evaluate;_defines;_referencedFunctions;_referencedCalls;constructor(e,t,n,r,i){this.source=e,this._evaluate=t,this._defines=n,this._referencedFunctions=r,this._referencedCalls=i}static{rf=(t,n,r,i,a)=>new e(t,n,r,i,a)}defines(){return this._defines}evaluate(e){return this._evaluate(e)}referencedFunctions(){return this._referencedFunctions}referencedCalls(){return this._referencedCalls}});function af(e){let t=new Set,n=e=>{fd(e,e=>{e.type===`Identifier`&&t.add(e.ident)})};n(e.root);for(let t of e.ownDefines.values())n(t.list);return t}const of={kind:`dynamic`};function sf(e){switch(e.type){case`String`:return{kind:`literal`,value:e.value};case`Bool`:return{kind:`literal`,value:e.value};case`Nil`:return{kind:`literal`,value:null};case`Number`:{let t=Ef(e);return typeof t==`number`||typeof t==`bigint`?{kind:`literal`,value:t}:of}case`Pipe`:{if(e.decls.length!==0||e.cmds.length!==1)return of;let t=e.cmds[0];if(t===void 0)return of;let n=t.args[0];return n===void 0||n.type!==`Identifier`?of:{kind:`call`,name:n.ident,args:t.args.slice(1).map(sf)}}default:return of}}function cf(e){let t=[],n=e=>{fd(e,e=>{if(e.type!==`Command`)return;let n=e.args[0];if(n===void 0||n.type!==`Identifier`)return;let r=e.args.slice(1).map(sf);t.push({name:n.ident,args:r.map(e=>e.kind===`literal`&&typeof e.value==`string`?e.value:null),argExprs:r})})};n(e.root);for(let t of e.ownDefines.values())n(t.list);return t}var lf=class{fromString;toString;isT;funcs;missingKey;delims;constructor(e){this.fromString=e.fromString;let t=Object.hasOwn(e,`toString`)?e.toString:void 0;this.toString=t??gf,this.isT=e.isT??uf,this.missingKey=Zd(e.missingKey),this.delims=$d(e.delims),this.funcs={...wd(this.toString,this.isT),...e.funcs??{}}}parse(e,t){let n=Qu(e,this.delims,t);return rf(n.source,e=>this.evalParsed(n,e),n.defines,af(n),cf(n))}compile(e){let t=this.parse(e);return e=>t.evaluate(e)}evaluate(e,t){return e.evaluate(t)}evalParsed(e,t){let n=[],r=Kd(t),i={out:n,defines:e.defines,source:e.source};return this.evalList(e.root,r,i),n}evalList(e,t,n){for(let r of e.nodes)this.evalNode(r,t,n)}evalNode(e,t,n){switch(e.type){case`Text`:n.out.push(this.fromString(e.text));return;case`Comment`:return;case`Action`:{let r=this.evalAction(e,t,n);e.pipe.decls.length===0&&this.emitFromValue(r,n);return}case`List`:this.evalList(e,t,n);return;case`If`:this.evalIf(e,t,n);return;case`Range`:this.evalRange(e,t,n);return;case`With`:this.evalWith(e,t,n);return;case`Break`:throw ef;case`Continue`:throw tf;case`Template`:this.evalTemplateInvoke(e,t,n);return;case`Block`:this.evalBlock(e,t,n);return;case`Pipe`:case`Command`:case`Identifier`:case`Field`:case`Variable`:case`Chain`:case`Dot`:case`Nil`:case`Bool`:case`Number`:case`String`:throw new Du(`unexpected ${e.type} at statement position`,e.pos,{source:n.source});default:Fu(e)}}evalIf(e,t,n){xd(this.evalPipe(e.pipe,t,n))?this.evalList(e.list,t,n):e.elseList&&this.evalList(e.elseList,t,n)}evalWith(e,t,n){let r=this.evalPipe(e.pipe,t,n);if(xd(r)){let i=qd(t,r);this.evalList(e.list,i,n)}else e.elseList&&this.evalList(e.elseList,t,n)}evalRange(e,t,n){let r=this.evalPipeWithoutDecls(e.pipe,t,n),i=e.pipe.decls,a=Cf(r);try{if(a.length===0){e.elseList&&this.evalList(e.elseList,t,n);return}for(let[r,o]of a){let a=qd(t,o);if(i.length===1)Yd(a,i[0]?.idents[0]??`$`,o);else if(i.length>=2){let e=i[0]?.idents[0]??`$`,t=i[1]?.idents[0]??`$`;Yd(a,e,r),Yd(a,t,o)}try{this.evalList(e.list,a,n)}catch(e){if(e===tf)continue;throw e}}}catch(e){if(e===ef)return;throw e}}evalTemplateInvoke(e,t,n){let r=Xu(n.defines,e.name);if(!r)throw new Du(`template ${JSON.stringify(e.name)} is not defined`,e.pos,{source:n.source});let i=qd(t,e.pipe?this.evalPipe(e.pipe,t,n):t.dot);this.evalList(r.list,i,{out:n.out,defines:n.defines,source:r.source})}evalBlock(e,t,n){let r=qd(t,e.pipe?this.evalPipe(e.pipe,t,n):t.dot),i=Xu(n.defines,e.name)??{list:e.list,source:n.source};this.evalList(i.list,r,{out:n.out,defines:n.defines,source:i.source})}evalAction(e,t,n){return this.evalPipe(e.pipe,t,n)}evalPipe(e,t,n){if(e.cmds.length===0)throw new Du(`empty pipeline`,e.pos,{source:n.source});let r=this.evalCommand(e.cmds[0],t,n,nf);for(let i=1;i<e.cmds.length;i++){let a=e.cmds[i];r=this.evalCommand(a,t,n,{kind:`value`,value:r})}if(e.decls.length>0)for(let n of e.decls)Yd(t,n.idents[0]??`$`,r);return r}evalPipeWithoutDecls(e,t,n){let r={type:`Pipe`,pos:e.pos,decls:[],isAssign:!1,cmds:e.cmds};return this.evalPipe(r,t,n)}evalCommand(e,t,n,r){if(e.args.length===0)throw new Du(`empty command`,e.pos,{source:n.source});let i=e.args[0];if(i.type!==`Identifier`){if(e.args.length>1)throw new Du(`cannot apply arguments to a ${i.type} primary; only functions take arguments`,e.pos,{source:n.source});return this.evalPrimary(i,t,n)}let a=this.funcs[i.ident];if(!a)throw new Ou(i.ident,i.pos,{source:n.source,available:Object.keys(this.funcs)});let o=e.args.slice(1),s=bd(a),c=o.map(e=>s?()=>this.evalPrimary(e,t,n):this.evalPrimary(e,t,n));if(r.kind===`value`){let e=r.value;c.push(s?()=>e:e)}ff(i.ident,a.argTypes,c,e.pos,n.source,this.toString,a.argTypePattern,this.fromString,this.isT);try{return a.fn(...c)}catch(t){throw t instanceof ku?new ku(t.funcName,t.argIndex,t.expected,t.receivedSummary,e.pos,{source:n.source}):t instanceof ju?new ju(t.message,e.pos,{source:n.source}):t}}evalPrimary(e,t,n){switch(e.type){case`Dot`:return t.dot;case`Nil`:return null;case`Bool`:return e.value;case`Number`:return Ef(e);case`String`:return e.value;case`Field`:return this.resolveFieldChain(t.dot,e.idents,e.pos,n);case`Variable`:return this.resolveVariable(e.idents,t,e.pos,n);case`Identifier`:{let t=this.funcs[e.ident];if(!t)throw new Ou(e.ident,e.pos,{source:n.source,available:Object.keys(this.funcs)});return ff(e.ident,t.argTypes,[],e.pos,n.source,this.toString,t.argTypePattern,this.fromString,this.isT),t.fn()}case`Chain`:return this.resolveFieldChain(this.evalPrimary(e.node,t,n),e.fields,e.pos,n);case`Pipe`:return this.evalPipe(e,t,n);default:throw new Du(`cannot evaluate ${e.type} as a value`,e.pos,{source:n.source})}}resolveFieldChain(e,t,n,r){let i=gd(e,t);if(i!==md)return i;if(this.missingKey===`error`)throw new Au(t,n,{source:r.source})}resolveVariable(e,t,n,r){let i=e[0]??`$`;if(i===`$`){let i=e.slice(1);return i.length===0?t.root:this.resolveFieldChain(t.root,i,n,r)}let a=Jd(t,i);if(!a.found)throw new Du(`undefined variable ${i}`,n,{source:r.source});let o=e.slice(1);return o.length===0?a.value:this.resolveFieldChain(a.value,o,n,r)}emitFromValue(e,t){if(e==null){t.out.push(this.fromString(`<no value>`));return}if(typeof e==`string`){t.out.push(this.fromString(e));return}if(typeof e==`number`||typeof e==`boolean`||typeof e==`bigint`){t.out.push(this.fromString(String(e)));return}if(this.isT(e)){t.out.push(e);return}t.out.push(this.fromString(Ud(e,this.toString,this.isT)))}};const uf=e=>typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Map);function df(e){return new lf(e)}function ff(e,t,n,r,i,a=gf,o,s=hf,c=uf){let l=pf(t,o),u=-1,d=-1;for(let t=0;t<n.length;t++){let o=l(t),f=n[t];if(!mf(o,f,a,c))throw new ku(e,t+1,xf(o),Sf(f),r,{source:i});if(o===`liftable`&&typeof f==`string`&&(n[t]=s(f)),o===`int`?n[t]=Math.trunc(Number(f)):o===`float`&&(n[t]=Number(f)),o===`ordered`){if(u===-1)u=t;else if(!vf(n[u],f))throw new ku(e,t+1,`${xf(`ordered`)} of the same kind as ${Sf(n[u])}`,Sf(f),r,{source:i})}if(o===`comparable`){if(d===-1)d=t;else if(!yf(n[d],f))throw new ku(e,t+1,`${xf(`comparable`)} of the same kind as ${Sf(n[d])}`,Sf(f),r,{source:i})}}}function pf(e,t){if(e.length===0)return()=>`value`;if(t===`alternating`){let t=e.length;return n=>e[n%t]}let n=e[e.length-1];return t=>t<e.length?e[t]:n}function mf(e,t,n,r){switch(e){case`truthy`:case`reflective`:case`value`:return!0;case`string`:return typeof t==`string`;case`int`:return typeof t==`number`&&Number.isFinite(t)||typeof t==`bigint`&&Number.isSafeInteger(Number(t));case`float`:return typeof t==`number`||typeof t==`bigint`&&Number.isFinite(Number(t));case`bool`:return typeof t==`boolean`;case`ordered`:return typeof t==`string`||typeof t==`number`||typeof t==`bigint`||typeof t==`boolean`;case`T`:return r(t);case`list`:return Array.isArray(t);case`dict`:return Gd(t);case`sized`:return typeof t==`string`||Array.isArray(t)||t instanceof Map||t instanceof Set||Gd(t);case`comparable`:return t==null||typeof t==`string`||typeof t==`number`||typeof t==`bigint`||typeof t==`boolean`||Array.isArray(t)||t instanceof Map||t instanceof Set||Gd(t);case`callable`:return typeof t==`function`;case`collection`:return typeof t==`string`||Array.isArray(t)||t instanceof Map||Gd(t);case`index-key`:return typeof t==`string`||typeof t==`number`||typeof t==`bigint`;case`sliceable`:return typeof t==`string`||Array.isArray(t);case`stringifiable`:if(typeof t==`string`)return!0;try{return n(t),!0}catch{return!1}case`liftable`:return typeof t==`string`||r(t);case`serializable`:return _f(t);default:throw Error(`invalid ArgType: ${String(e)}`)}}function hf(e){return e}function gf(e){if(typeof e==`string`)return e;if(e==null)return`<nil>`;if(typeof e==`number`||typeof e==`bigint`||typeof e==`boolean`)return String(e);throw new ku(`<engine.toString>`,1,`string (or a consumer-supplied toString that flattens T)`,Sf(e),{line:0,column:0,offset:0})}function _f(e){try{return JSON.stringify(e)!==void 0}catch{return!1}}function vf(e,t){return typeof e==typeof t||typeof e==`number`&&typeof t==`bigint`||typeof e==`bigint`&&typeof t==`number`}function yf(e,t){let n=bf(e),r=bf(t);return n===`nil`||r===`nil`?!0:n===r}function bf(e){return e==null?`nil`:typeof e==`string`?`string`:typeof e==`number`||typeof e==`bigint`?`number`:typeof e==`boolean`?`boolean`:Array.isArray(e)?`array`:e instanceof Map?`map`:e instanceof Set?`set`:`object`}function xf(e){switch(e){case`int`:return`integer (finite number or safe-integer bigint)`;case`float`:return`float (number, including NaN/Infinity, or finite-convertible bigint)`;case`T`:return`T (consumer-defined fragment)`;case`ordered`:return`orderable primitive`;case`list`:return`list`;case`dict`:return`dict (plain object)`;case`sized`:return`sized value (string, list, map, set, or dict)`;case`comparable`:return`comparable value (orderable primitive, nil, list, dict, Map, or Set)`;case`stringifiable`:return`stringifiable value (string or convertible via the engine's toString)`;case`liftable`:return`liftable value (T or string, the latter lifted via the engine's fromString)`;case`callable`:return`callable (function value)`;case`collection`:return`collection (string, array, Map, or dict)`;case`index-key`:return`index key (number, bigint, or string)`;case`sliceable`:return`sliceable value (string or array)`;case`serializable`:return`JSON-serializable value`;case`truthy`:case`reflective`:case`value`:case`string`:case`bool`:return e;default:throw Error(`invalid ArgType: ${String(e)}`)}}function Sf(e){return e===null?`null`:e===void 0?`undefined`:Array.isArray(e)?`array`:e instanceof Map?`Map`:typeof e}function Cf(e){return e==null?[]:Array.isArray(e)?e.map((e,t)=>[t,e]):typeof e==`string`?[...e].map((e,t)=>[t,e]):e instanceof Map?wf([...e.entries()]):e instanceof Set?[...e.values()].map((e,t)=>[t,e]):typeof e==`object`?wf(Object.entries(e)):[]}function wf(e){return[...e].sort((e,t)=>Tf(e[0],t[0]))}function Tf(e,t){if((typeof e==`number`||typeof e==`bigint`)&&(typeof t==`number`||typeof t==`bigint`)){let n=typeof e==`bigint`?Number(e):e,r=typeof t==`bigint`?Number(t):t;return n===r?0:n<r?-1:1}let n=String(e),r=String(t);return n===r?0:n<r?-1:1}function Ef(e){if(e.intValue!==void 0){let t=e.intValue;return t>=BigInt(-(2**53-1))&&t<=BigInt(2**53-1)?Number(t):t}if(e.floatValue!==void 0)return e.floatValue;if(e.complexValue!==void 0)return e.complexValue;throw Error(`internal: NumberNode has none of intValue/floatValue/complexValue — parser invariant violated`)}function Df(e){if(!/^[+-]?\d+$/.test(e))return 0;let t=Number.parseInt(e,10);return Number.isSafeInteger(t)?t:0}function Of(e){if(typeof e==`number`)return e;if(typeof e==`bigint`)return Number(e);if(typeof e==`string`){let t=Number.parseFloat(e);return Number.isNaN(t)?0:t}return typeof e==`boolean`?+!!e:0}function kf(e){if(e===``)return null;let t=1,n=e;return n[0]===`+`?n=n.slice(1):n[0]===`-`&&(t=-1,n=n.slice(1)),n===``?null:/^0x[0-9a-fA-F]+$/i.test(n)?{sign:t,digits:n.slice(2),base:16}:/^0b[01]+$/i.test(n)?{sign:t,digits:n.slice(2),base:2}:/^0o[0-7]+$/i.test(n)?{sign:t,digits:n.slice(2),base:8}:n===`0`?{sign:t,digits:`0`,base:10}:n[0]===`0`?/^0[0-7]+$/.test(n)?{sign:t,digits:n.slice(1),base:8}:null:/^[0-9]+$/.test(n)?{sign:t,digits:n,base:10}:null}function Af(e){if(typeof e==`number`){let t=Math.trunc(e);return Number.isSafeInteger(t)?t:0}if(typeof e==`bigint`){let t=Number(e);return Number.isSafeInteger(t)?t:0}if(typeof e==`string`){let t=kf(e);if(t===null)return 0;let n=t.sign*Number.parseInt(t.digits,t.base);return Number.isSafeInteger(n)?n:0}return typeof e==`boolean`?+!!e:0}function jf(e){if(typeof e==`bigint`)return e;if(typeof e==`number`)return BigInt(Math.trunc(e));if(typeof e==`string`){let t=kf(e);if(t===null)return 0n;let n=t.base===16?`0x`:t.base===2?`0b`:t.base===8?`0o`:``,r=BigInt(n+t.digits);return t.sign===-1?-r:r}return typeof e==`boolean`&&e?1n:0n}function Mf(e){if(!/^[+-]?[0-7]+$/.test(e))return 0;let t=e[0]===`-`?-1:1,n=e[0]===`+`||e[0]===`-`?e.slice(1):e,r=t*Number.parseInt(n,8);return Number.isSafeInteger(r)?r:0}function Nf(e){return JSON.stringify(e)??`null`}function Pf(){return{atoi:{fn:e=>Df(e),argTypes:[`string`],returnType:`int`},int:{fn:e=>Af(e),argTypes:[`value`],returnType:`int`},int64:{fn:e=>jf(e),argTypes:[`value`]},float64:{fn:e=>Of(e),argTypes:[`value`],returnType:`float`},toDecimal:{fn:e=>Mf(e),argTypes:[`string`],returnType:`int`},toRawJson:{fn:e=>Nf(e),argTypes:[`serializable`],returnType:`string`}}}const Ff={h:36e11,m:6e10,s:1e9,ms:1e6,us:1e3,µs:1e3,ns:1};function If(e){if(e===`0`)return 0;let t=!1,n=e;if(n.startsWith(`-`)?(t=!0,n=n.slice(1)):n.startsWith(`+`)&&(n=n.slice(1)),!n)return NaN;let r=0,i=/^(\d+(?:\.\d+)?)(ns|µs|us|ms|[smh])/;for(;n.length>0;){let e=i.exec(n);if(!e)return NaN;let t=parseFloat(e[1]??`0`),a=e[2];r+=t*Ff[a],n=n.slice(e[0].length)}return t?-r:r}function Lf(e){if(e===0)return`0s`;let t=!1,n=e;n<0&&(t=!0,n=-n);let r;return r=n<Ff.us?`${Math.floor(n)}ns`:n<Ff.ms?Rf(n,Ff.us,3,`µs`):n<Ff.s?Rf(n,Ff.ms,6,`ms`):zf(n),t?`-${r}`:r}function Rf(e,t,n,r){let i=Math.floor(e/t),a=Math.round(e%t);return a===0?`${i}${r}`:`${i}.${String(a).padStart(n,`0`).replace(/0+$/,``)}${r}`}function zf(e){let t=Math.floor(e/Ff.h);e-=t*Ff.h;let n=Math.floor(e/Ff.m);e-=n*Ff.m;let r=Math.floor(e/Ff.s),i=e-r*Ff.s,a=i===0?`${r}s`:`${r}.${String(Math.round(i)).padStart(9,`0`).replace(/0+$/,``)}s`;return t>0?`${t}h${n}m${a}`:n>0?`${n}m${a}`:a}function Bf(e){return e*Ff.s}function Vf(e){if(e instanceof Date)return e;if(typeof e==`bigint`)return new Date(Number(e)*1e3);if(typeof e==`number`)return new Date(e*1e3);if(typeof e==`string`){let t=new Date(e);if(!Number.isNaN(t.getTime()))return t;throw Error(`sprig: cannot parse date value ${JSON.stringify(e)}`)}throw Error(`sprig: unsupported date type: ${typeof e}`)}function Hf(e,t){let n=t().getTime()-Vf(e).getTime();return Lf(Math.round(n/1e3)*1e9)}const Uf=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],Wf=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],Gf=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],Kf=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`];function qf(e){return e<10?`0${e}`:String(e)}function Jf(e){return e<10?`00${e}`:e<100?`0${e}`:String(e)}function Yf(e){return e<10?` ${e}`:String(e)}function Xf(e){let t=e>=0?`+`:`-`,n=Math.abs(e);return`${t}${qf(Math.floor(n/60))}${qf(n%60)}`}function Zf(e){let t=e>=0?`+`:`-`,n=Math.abs(e);return`${t}${qf(Math.floor(n/60))}:${qf(n%60)}`}function Qf(e){return`${e>=0?`+`:`-`}${qf(Math.floor(Math.abs(e)/60))}`}function $f(e){return e===0?`Z`:Xf(e)}function ep(e){return e===0?`Z`:Zf(e)}function tp(e){return e===0?`Z`:Qf(e)}function np(e,t,n){let r=e*1e6,i=String(r).padStart(9,`0`).slice(0,t);return n?i.replace(/0+$/,``):i}const rp=[[`.000000000`,e=>`.${np(e.ms,9,!1)}`],[`.999999999`,e=>{let t=np(e.ms,9,!0);return t?`.${t}`:``}],[`.000000`,e=>`.${np(e.ms,6,!1)}`],[`.999999`,e=>{let t=np(e.ms,6,!0);return t?`.${t}`:``}],[`.000`,e=>`.${Jf(e.ms)}`],[`.999`,e=>{let t=Jf(e.ms).replace(/0+$/,``);return t?`.${t}`:``}],[`January`,e=>Uf[e.month-1]??`January`],[`Monday`,e=>Gf[e.weekday]??`Monday`],[`Z07:00`,e=>ep(e.offsetMinutes)],[`-07:00`,e=>Zf(e.offsetMinutes)],[`Z0700`,e=>$f(e.offsetMinutes)],[`-0700`,e=>Xf(e.offsetMinutes)],[`2006`,e=>String(e.year)],[`Jan`,e=>Wf[e.month-1]??`Jan`],[`Mon`,e=>Kf[e.weekday]??`Mon`],[`MST`,e=>e.tzAbbr],[`-07`,e=>Qf(e.offsetMinutes)],[`Z07`,e=>tp(e.offsetMinutes)],[`15`,e=>qf(e.hour)],[`01`,e=>qf(e.month)],[`02`,e=>qf(e.day)],[`_2`,e=>Yf(e.day)],[`03`,e=>qf(e.hour12)],[`04`,e=>qf(e.minute)],[`05`,e=>qf(e.second)],[`06`,e=>qf(e.year%100)],[`PM`,e=>e.hour>=12?`PM`:`AM`],[`pm`,e=>e.hour>=12?`pm`:`am`],[`1`,e=>String(e.month)],[`2`,e=>String(e.day)],[`3`,e=>String(e.hour12)],[`4`,e=>String(e.minute)],[`5`,e=>String(e.second)]];function ip(e,t){let n=``,r=0;for(;r<e.length;){let i=!1;for(let[a,o]of rp)if(e.startsWith(a,r)){n+=o(t),r+=a.length,i=!0;break}i||(n+=e[r++])}return n}const ap={year:`numeric`,month:`2-digit`,day:`2-digit`,weekday:`long`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hour12:!1};function op(e){let t=new Map;for(let n of e)t.set(n.type,n.value);return t}const sp=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`];function cp(e,t){let n;try{new Intl.DateTimeFormat(`en-US`,{timeZone:t}),n=t}catch{n=`UTC`}let r=op(new Intl.DateTimeFormat(`en-US`,{...ap,timeZone:n}).formatToParts(e)),i=parseInt(r.get(`hour`)??`0`,10)%24,a=op(new Intl.DateTimeFormat(`en-US`,{timeZone:n,timeZoneName:`short`}).formatToParts(e)).get(`timeZoneName`)??n,o=lp(op(new Intl.DateTimeFormat(`en-US`,{timeZone:n,timeZoneName:`shortOffset`}).formatToParts(e)).get(`timeZoneName`)??`GMT`),s=sp.indexOf(r.get(`weekday`)??`Sunday`);return{year:parseInt(r.get(`year`)??`2000`,10),month:parseInt(r.get(`month`)??`1`,10),day:parseInt(r.get(`day`)??`1`,10),weekday:s===-1?0:s,hour:i,hour12:i%12||12,minute:parseInt(r.get(`minute`)??`0`,10),second:parseInt(r.get(`second`)??`0`,10),ms:e.getUTCMilliseconds(),tzAbbr:a,offsetMinutes:o}}function lp(e){if(e===`GMT`||e===`UTC`)return 0;let t=e.match(/^GMT([+-])(\d{1,2})(?::(\d{2}))?$/);if(!t)return 0;let n=t[1]===`+`?1:-1,r=parseInt(t[2]??`0`,10),i=parseInt(t[3]??`0`,10);return n*(r*60+i)}function up(){return Intl.DateTimeFormat().resolvedOptions().timeZone}function dp(e,t){return ip(e,cp(Vf(t),up()))}function fp(e,t,n){return ip(e,cp(Vf(t),n))}function pp(e,t){let n=Vf(t),r=If(e);return Number.isNaN(r)?n:new Date(n.getTime()+r/1e6)}function mp(e){if(typeof e==`string`){let t=parseInt(e,10);return Number.isNaN(t)?`0s`:Lf(Bf(t))}return typeof e==`bigint`?Lf(Bf(Number(e))):typeof e==`number`?Lf(Bf(e)):`0s`}const hp=36e11*24*365,gp=36e11*24*30,_p=36e11*24,vp=36e11,yp=6e10,bp=1e9;function xp(e){let t=If(String(e));if(Number.isNaN(t))return`0s`;let n=Math.abs(t);return n>hp?`${Math.floor(n/hp)}y`:n>gp?`${Math.floor(n/gp)}mo`:n>_p?`${Math.floor(n/_p)}d`:n>vp?`${Math.floor(n/vp)}h`:n>yp?`${Math.floor(n/yp)}m`:n>bp?`${Math.floor(n/bp)}s`:`0s`}function Sp(e){let t=cp(Vf(e),up());return`${t.year}-${String(t.month).padStart(2,`0`)}-${String(t.day).padStart(2,`0`)}`}function Cp(e,t){let n=cp(Vf(e),t);return`${n.year}-${String(n.month).padStart(2,`0`)}-${String(n.day).padStart(2,`0`)}`}function wp(e){return e()}const Tp=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],Ep=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`];function Dp(){return{year:2e3,month:1,day:1,hour:0,minute:0,second:0,ms:0,offsetMinutes:0,isPM:!1,hour12:!1}}function Op(e,t,n){return[e.slice(t,t+n),t+n]}function kp(e,t,n,r){let i=t;for(;i<e.length&&i-t<r&&e.charCodeAt(i)>=48&&e.charCodeAt(i)<=57;)i++;if(i-t<n)throw Error(`sprig toDate: expected ${n}-${r} digits at pos ${t}`);return[parseInt(e.slice(t,i),10),i]}function Ap(e,t){for(let[n,r]of Tp.entries())if(e.startsWith(r,t))return[n+1,t+r.length];throw Error(`sprig toDate: expected month name at pos ${t}`)}function jp(e,t){for(let[n,r]of Ep.entries())if(e.startsWith(r,t))return[n+1,t+r.length];throw Error(`sprig toDate: expected short month name at pos ${t}`)}function Mp(e,t){for(let n of[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`])if(e.startsWith(n,t))return t+n.length;throw Error(`sprig toDate: expected weekday name at pos ${t}`)}function Np(e,t){for(let n of[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`])if(e.startsWith(n,t))return t+n.length;throw Error(`sprig toDate: expected short weekday name at pos ${t}`)}function Pp(e,t){if(e[t]===` `){let[n,r]=kp(e,t+1,1,1);return[n,r]}return kp(e,t,1,2)}function Fp(e,t,n){let r=e[t]===`+`?1:e[t]===`-`?-1:0;if(r===0)throw Error(`sprig toDate: expected +/- at pos ${t}`);let i=t+1,[a,o]=kp(e,i,2,2);i=o;let s=0;if(n&&e[i]===`:`){let[t,n]=kp(e,i+1,2,2);s=t,i=n}else if(!n){let[t,n]=kp(e,i,2,2);s=t,i=n}return[r*(a*60+s),i]}function Ip(e,t,n,r){if(e[t]===`Z`)return[0,t+1];if(r){let n=e[t]===`+`?1:e[t]===`-`?-1:0;if(n===0)throw Error(`sprig toDate: expected Z or +/- at pos ${t}`);let[r,i]=kp(e,t+1,2,2);return[n*r*60,i]}return Fp(e,t,n)}function Lp(e,t){let n=t;for(;n<e.length&&e.charCodeAt(n)>=65&&e.charCodeAt(n)<=90;)n++;if(n===t)throw Error(`sprig toDate: expected timezone abbreviation at pos ${t}`);return n}function Rp(e,t,n){let[r,i]=Op(e,t,n),a=parseInt(r.padEnd(9,`0`),10);return[Math.round(a/1e6),i]}function zp(e,t,n,r){let i={...r};switch(e){case`January`:{let[e,r]=Ap(t,n);return i.month=e,[r,i]}case`Monday`:return[Mp(t,n),i];case`Jan`:{let[e,r]=jp(t,n);return i.month=e,[r,i]}case`Mon`:return[Np(t,n),i];case`2006`:{let[e,r]=kp(t,n,4,4);return i.year=e,[r,i]}case`06`:{let[e,r]=kp(t,n,2,2);return i.year=e<70?2e3+e:1900+e,[r,i]}case`01`:{let[e,r]=kp(t,n,2,2);return i.month=e,[r,i]}case`1`:{let[e,r]=kp(t,n,1,2);return i.month=e,[r,i]}case`_2`:{let[e,r]=Pp(t,n);return i.day=e,[r,i]}case`02`:{let[e,r]=kp(t,n,2,2);return i.day=e,[r,i]}case`2`:{let[e,r]=kp(t,n,1,2);return i.day=e,[r,i]}case`15`:{let[e,r]=kp(t,n,2,2);return i.hour=e,[r,i]}case`03`:{let[e,r]=kp(t,n,2,2);return i.hour=e,i.hour12=!0,[r,i]}case`3`:{let[e,r]=kp(t,n,1,2);return i.hour=e,i.hour12=!0,[r,i]}case`04`:{let[e,r]=kp(t,n,2,2);return i.minute=e,[r,i]}case`4`:{let[e,r]=kp(t,n,1,2);return i.minute=e,[r,i]}case`05`:{let[e,r]=kp(t,n,2,2);return i.second=e,[r,i]}case`5`:{let[e,r]=kp(t,n,1,2);return i.second=e,[r,i]}case`PM`:case`pm`:{let e=t.slice(n,n+2).toLowerCase();if(e!==`am`&&e!==`pm`)throw Error(`sprig toDate: expected AM/PM at pos ${n}, got ${JSON.stringify(t.slice(n,n+2))}`);return i.isPM=e===`pm`,i.hour12=!0,[n+2,i]}case`MST`:return[Lp(t,n),i];case`-0700`:{let[e,r]=Fp(t,n,!1);return i.offsetMinutes=e,[r,i]}case`-07:00`:{let[e,r]=Fp(t,n,!0);return i.offsetMinutes=e,[r,i]}case`-07`:{let e=t[n]===`+`?1:t[n]===`-`?-1:0;if(e===0)throw Error(`sprig toDate: expected +/- at pos ${n}`);let[r,a]=kp(t,n+1,2,2);return i.offsetMinutes=e*r*60,[a,i]}case`Z0700`:{let[e,r]=Ip(t,n,!1,!1);return i.offsetMinutes=e,[r,i]}case`Z07:00`:{let[e,r]=Ip(t,n,!0,!1);return i.offsetMinutes=e,[r,i]}case`Z07`:{let[e,r]=Ip(t,n,!1,!0);return i.offsetMinutes=e,[r,i]}case`.000000000`:{if(t[n]!==`.`)throw Error(`sprig toDate: expected . at pos ${n}`);let[e,r]=Rp(t,n+1,9);return i.ms=e,[r,i]}case`.999999999`:{if(t[n]!==`.`)return[n,i];let e=n+1,r=e;for(;r<t.length&&t.charCodeAt(r)>=48&&t.charCodeAt(r)<=57;)r++;let a=t.slice(e,r).padEnd(9,`0`);return i.ms=Math.round(parseInt(a,10)/1e6),[r,i]}case`.000000`:{if(t[n]!==`.`)throw Error(`sprig toDate: expected . at pos ${n}`);let[e,r]=Rp(t,n+1,6);return i.ms=e,[r,i]}case`.999999`:{if(t[n]!==`.`)return[n,i];let e=n+1,r=e;for(;r<t.length&&t.charCodeAt(r)>=48&&t.charCodeAt(r)<=57;)r++;let a=t.slice(e,r).padEnd(9,`0`);return i.ms=Math.round(parseInt(a,10)/1e6),[r,i]}case`.000`:{if(t[n]!==`.`)throw Error(`sprig toDate: expected . at pos ${n}`);let[e,r]=Rp(t,n+1,3);return i.ms=e,[r,i]}case`.999`:{if(t[n]!==`.`)return[n,i];let e=n+1,r=e;for(;r<t.length&&t.charCodeAt(r)>=48&&t.charCodeAt(r)<=57;)r++;let a=t.slice(e,r).padEnd(3,`0`);return i.ms=parseInt(a,10),[r,i]}}throw Error(`sprig toDate: unhandled token ${e}`)}const Bp=`.000000000,.999999999,.000000,.999999,.000,.999,January,Monday,Z07:00,-07:00,Z0700,-0700,2006,Jan,Mon,MST,-07,Z07,15,01,02,_2,03,04,05,06,PM,pm,1,2,3,4,5`.split(`,`);function Vp(e,t){let n=0,r=0,i=Dp();for(;n<e.length;){let a=!1;for(let o of Bp)if(e.startsWith(o,n)){let[e,s]=zp(o,t,r,i);r=e,i=s,n+=o.length,a=!0;break}if(!a){let i=e.charAt(n);if(t[r]!==i)throw Error(`sprig toDate: expected ${JSON.stringify(i)} at pos ${r}, got ${JSON.stringify(t[r])}`);n++,r++}}if(r!==t.length)throw Error(`sprig toDate: extra characters at pos ${r}: ${JSON.stringify(t.slice(r))}`);if(i.hour12){let e=i.hour%12;i.hour=i.isPM?e+12:e}let a=Date.UTC(i.year,i.month-1,i.day,i.hour,i.minute,i.second,i.ms)-i.offsetMinutes*60*1e3;return new Date(a)}function Hp(e,t){return Vp(e,t)}function Up(e){return String(Math.floor(Vf(e).getTime()/1e3))}function Wp(e=()=>new Date){return{now:{fn:()=>wp(e),argTypes:[]},date:{fn:(e,t)=>dp(e,t),argTypes:[`string`,`value`]},dateInZone:{fn:(e,t,n)=>fp(e,t,n),argTypes:[`string`,`value`,`string`]},dateModify:{fn:(e,t)=>pp(e,t),argTypes:[`string`,`value`]},htmlDate:{fn:e=>Sp(e),argTypes:[`value`]},htmlDateInZone:{fn:(e,t)=>Cp(e,t),argTypes:[`value`,`string`]},duration:{fn:e=>mp(e),argTypes:[`value`]},durationRound:{fn:e=>xp(e),argTypes:[`value`]},toDate:{fn:(e,t)=>Hp(e,t),argTypes:[`string`,`string`]},ago:{fn:t=>Hf(t,e),argTypes:[`value`]},unixEpoch:{fn:e=>Up(e),argTypes:[`value`]}}}function Gp(e){return e==null||e===!1?!0:typeof e==`number`?e===0||Number.isNaN(e):typeof e==`bigint`?e===0n:typeof e==`string`||Array.isArray(e)?e.length===0:e instanceof Map||e instanceof Set?e.size===0:typeof e==`object`?Object.keys(e).length===0:!1}function Kp(...e){for(let t of e)if(!Gp(t))return t}function qp(e,t){return Gp(t)?e:t}function Jp(e){return JSON.parse(e)}function Yp(e,t,n){return xd(n)?e:t}function Xp(e){return JSON.stringify(e)??`null`}function Zp(e){return JSON.stringify(e,null,2)??`null`}function Qp(){return{default:{fn:(e,t)=>qp(e,t),argTypes:[`value`,`truthy`]},empty:{fn:e=>Gp(e),argTypes:[`truthy`]},coalesce:{fn:(...e)=>Kp(...e),argTypes:[`truthy`]},ternary:{fn:(e,t,n)=>Yp(e,t,n),argTypes:[`value`,`value`,`truthy`]},fromJson:{fn:e=>Jp(e),argTypes:[`string`]},toJson:{fn:e=>Xp(e),argTypes:[`serializable`],returnType:`string`},toPrettyJson:{fn:e=>Zp(e),argTypes:[`serializable`],returnType:`string`}}}function $p(...e){let t={};for(let n=0;n<e.length;n+=2)t[e[n]]=e[n+1];return t}function em(e){if(e.kind!==`call`||e.name!==`dict`||e.args.length%2!=0)return null;let t=[];for(let[n,r]of e.args.entries()){if(r.kind!==`literal`||n%2==0&&typeof r.value!=`string`)return null;t.push(r.value)}return $p(...t)}function tm(e,t){return e[t]}function nm(e,t){return t in e}function rm(e){return Object.keys(e)}function im(e,...t){let n={...e};for(let e of t)for(let[t,r]of Object.entries(e))t in n||(n[t]=r);return n}function am(e,...t){let n={...e};for(let e of t)Object.assign(n,e);return n}function om(e,...t){let n=new Set(t),r={};for(let[t,i]of Object.entries(e))n.has(t)||(r[t]=i);return r}function sm(e,...t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function cm(e,...t){let n=[];for(let r of t)e in r&&n.push(r[e]);return n}function lm(e,t,n){return e[t]=n,e}function um(e,t){return delete e[t],e}function dm(e){return Object.values(e)}function fm(){return{dict:{fn:(...e)=>$p(...e),argTypes:[`string`,`value`],argTypePattern:`alternating`},get:{fn:(e,t)=>tm(e,t),argTypes:[`dict`,`string`]},set:{fn:(e,t,n)=>lm(e,t,n),argTypes:[`dict`,`string`,`value`]},unset:{fn:(e,t)=>um(e,t),argTypes:[`dict`,`string`]},keys:{fn:e=>rm(e),argTypes:[`dict`]},values:{fn:e=>dm(e),argTypes:[`dict`]},pluck:{fn:(e,...t)=>cm(e,...t),argTypes:[`string`,`dict`]},pick:{fn:(e,...t)=>sm(e,...t),argTypes:[`dict`,`string`]},omit:{fn:(e,...t)=>om(e,...t),argTypes:[`dict`,`string`]},hasKey:{fn:(e,t)=>nm(e,t),argTypes:[`dict`,`string`]},merge:{fn:(e,...t)=>im(e,...t),argTypes:[`dict`]},mergeOverwrite:{fn:(e,...t)=>am(e,...t),argTypes:[`dict`]}}}new TextEncoder,new Map(Array.from(`ABCDEFGHIJKLMNOPQRSTUVWXYZ234567`).map((e,t)=>[e,t])),new TextDecoder,new TextEncoder,new TextDecoder,new TextEncoder;function pm(...e){for(let t of e)if(Gp(t))return!1;return!0}function mm(...e){for(let t of e)if(!Gp(t))return!0;return!1}function hm(e,t){return[...e,t]}function gm(e,t){let n=Math.max(1,e),r=[];for(let e=0;e<t.length;e+=n)r.push(t.slice(e,e+n));return r}function _m(e){return e.filter(e=>!Gp(e))}function vm(...e){let t=[];for(let n of e)t.push(...n);return t}const ym={line:0,column:0,offset:0};function bm(e,t,n,r){return new ku(e,t,n,r,ym)}function xm(...e){if(e.length<3)throw bm(`dig`,0,`at least 3 arguments (...keys, default, dict)`,`${e.length} argument${e.length===1?``:`s`}`);let t=e[e.length-1],n=e[e.length-2],r=e.slice(0,-2);if(!Cm(t))throw bm(`dig`,e.length-1,`dict`,wm(t));for(let e=0;e<r.length;e++)if(typeof r[e]!=`string`)throw bm(`dig`,e,`string`,wm(r[e]));return Sm(t,n,r,e.length)}function Sm(e,t,n,r){let i=n[0];if(!Object.hasOwn(e,i))return t;let a=e[i];if(n.length===1)return a;if(!Cm(a))throw bm(`dig`,r-1,`dict at intermediate key`,wm(a));return Sm(a,t,n.slice(1),r)}function Cm(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Map)&&!(e instanceof Set)}function wm(e){return e===null?`null`:Array.isArray(e)?`array`:e instanceof Map?`Map`:e instanceof Set?`Set`:typeof e}function Tm(e){return e[0]}function Em(e,t){return t.some(t=>_d(t,e))}function Dm(e){return e.slice(0,-1)}function Om(e){return e[e.length-1]}function km(e){return Array.isArray(e)||typeof e==`string`?e.length:e instanceof Map||e instanceof Set?e.size:Object.keys(e).length}function Am(...e){return e}function jm(e,t){return[t,...e]}function Mm(e){return e.slice(1)}function Nm(e){return[...e].reverse()}function Pm(e,t,n){let r=t===void 0?0:t,i=n===void 0?e.length:n;return e.slice(r,i)}function Fm(e){let t=[];for(let n of e)n!=null&&t.push(String(n));return t.sort()}function Im(e){let t=[];for(let n of e)t.some(e=>_d(e,n))||t.push(n);return t}function Lm(e,...t){return e.filter(e=>!t.some(t=>_d(t,e)))}function Rm(){return{list:{fn:(...e)=>Am(...e),argTypes:[`value`]},first:{fn:e=>Tm(e),argTypes:[`list`]},last:{fn:e=>Om(e),argTypes:[`list`]},rest:{fn:e=>Mm(e),argTypes:[`list`]},initial:{fn:e=>Dm(e),argTypes:[`list`]},len:{fn:e=>km(e),argTypes:[`sized`]},reverse:{fn:e=>Nm(e),argTypes:[`list`]},uniq:{fn:e=>Im(e),argTypes:[`list`]},without:{fn:(e,...t)=>Lm(e,...t),argTypes:[`list`,`value`]},has:{fn:(e,t)=>Em(e,t),argTypes:[`value`,`list`]},compact:{fn:e=>_m(e),argTypes:[`list`]},slice:{fn:(e,t,n)=>Pm(e,t,n),argTypes:[`list`,`int`,`int`]},concat:{fn:(...e)=>vm(...e),argTypes:[`list`]},chunk:{fn:(e,t)=>gm(e,t),argTypes:[`int`,`list`]},prepend:{fn:(e,t)=>jm(e,t),argTypes:[`list`,`value`]},append:{fn:(e,t)=>hm(e,t),argTypes:[`list`,`value`]},sortAlpha:{fn:e=>Fm(e),argTypes:[`list`],returnType:`list`},push:{fn:(e,t)=>hm(e,t),argTypes:[`list`,`value`]},tuple:{fn:(...e)=>Am(...e),argTypes:[`value`]},dig:{fn:(...e)=>xm(...e),argTypes:[`value`]},all:{fn:(...e)=>pm(...e),argTypes:[`truthy`],returnType:`bool`},any:{fn:(...e)=>mm(...e),argTypes:[`truthy`],returnType:`bool`}}}function zm(...e){return e.reduce((e,t)=>e+t,0)}function Bm(e){return e+1}function Vm(e){return e+1}function Hm(...e){return e.reduce((e,t)=>e+t,0)}function Um(e){return Math.ceil(e)}function Wm(e,t){return Math.trunc(e/t)}function Gm(e,t){return e/t}function Km(e){return Math.floor(e)}function qm(...e){return e.reduce((e,t)=>t>e?t:e,-1/0)}function Jm(...e){return e.reduce((e,t)=>Math.max(e,t),-1/0)}function Ym(...e){return e.reduce((e,t)=>t<e?t:e,1/0)}function Xm(...e){return e.reduce((e,t)=>Math.min(e,t),1/0)}function Zm(e,t){return e%t}function Qm(...e){return e.reduce((e,t)=>e*t,1)}function $m(...e){return e.reduce((e,t)=>e*t,1)}function eh(e,t=0){let n=10**t;return Math.sign(e)*Math.round(Math.abs(e)*n)/n}function th(e,t,n){let r=[];if(t<e){if(n>=0)return r;for(let i=e;i>t;i+=n)r.push(i);return r}if(n<=0)return r;for(let i=e;i<t;i+=n)r.push(i);return r}function nh(...e){let t=1;switch(e.length){case 0:return``;case 1:{let n=e[0];return n<1&&(t=-1),th(1,n+t,t).join(` `)}case 2:{let t=e[0],n=e[1],r=n<t?-1:1;return th(t,n+r,r).join(` `)}case 3:{let n=e[0],r=e[1],i=e[2];return i<n&&(t=-1,r>0)?``:th(n,i+t,r).join(` `)}default:return``}}function rh(e,t){return e-t}function ih(e,t){return e-t}function ah(e){return th(0,e,e<0?-1:1)}function oh(){return{add:{fn:(...e)=>zm(...e),argTypes:[`int`]},sub:{fn:(e,t)=>rh(e,t),argTypes:[`int`,`int`]},mul:{fn:(...e)=>Qm(...e),argTypes:[`int`]},div:{fn:(e,t)=>Wm(e,t),argTypes:[`int`,`int`]},mod:{fn:(e,t)=>Zm(e,t),argTypes:[`int`,`int`]},min:{fn:(...e)=>Ym(...e),argTypes:[`int`]},max:{fn:(...e)=>qm(...e),argTypes:[`int`]},floor:{fn:e=>Km(e),argTypes:[`float`]},ceil:{fn:e=>Um(e),argTypes:[`float`]},round:{fn:(e,t)=>eh(e,t),argTypes:[`float`,`int`]},addf:{fn:(...e)=>Hm(...e),argTypes:[`float`]},subf:{fn:(e,t)=>ih(e,t),argTypes:[`float`,`float`]},mulf:{fn:(...e)=>$m(...e),argTypes:[`float`]},divf:{fn:(e,t)=>Gm(e,t),argTypes:[`float`,`float`]},add1:{fn:e=>Bm(e),argTypes:[`int`]},add1f:{fn:e=>Vm(e),argTypes:[`float`]},maxf:{fn:(...e)=>Jm(...e),argTypes:[`float`]},minf:{fn:(...e)=>Xm(...e),argTypes:[`float`]},biggest:{fn:(...e)=>qm(...e),argTypes:[`int`]},seq:{fn:(...e)=>nh(...e),argTypes:[`int`],returnType:`string`},until:{fn:e=>ah(e),argTypes:[`int`],returnType:`list`},untilStep:{fn:(e,t,n)=>th(e,t,n),argTypes:[`int`,`int`,`int`],returnType:`list`}}}Array.from({length:95},(e,t)=>String.fromCharCode(t+32)).join(``);function sh(e,t){return t.length<=e||e<4?t:`${t.slice(0,e-3)}...`}function ch(e,t,n){return t<7||n.length<t||e<0||e>n.length-t+1?n:`...${n.slice(e,e+t-6)}...`}const q={Invalid:0,Number:1,UpperCase:2,Alphabet:3,Connector:4,Punct:5,Other:6},lh=/^[-_\s]$/,uh=/^\p{P}$/u,dh=/^\p{L}$/u,fh=/^\p{Lu}$/u,ph=/^\p{N}$/u;function mh(e){return e!==void 0&&lh.test(e)}function hh(e){return e!==void 0&&dh.test(e)}function gh(e){return e!==void 0&&fh.test(e)}function _h(e){return e!==void 0&&ph.test(e)}function vh(e){return e!==void 0&&uh.test(e)}function yh(e,t){if(t>=e.length)return{word:{wt:q.Invalid,text:``},next:t};let n=e[t],r=t+1;if(mh(n)){for(;r<e.length&&mh(e[r]);)r++;return{word:{wt:q.Connector,text:e.slice(t,r).join(``)},next:r}}if(vh(n)){for(;r<e.length&&vh(e[r]);)r++;return{word:{wt:q.Punct,text:e.slice(t,r).join(``)},next:r}}if(gh(n)){if(r>=e.length)return{word:{wt:q.UpperCase,text:n},next:r};if(gh(e[r])){let n=r;for(;n<e.length&&gh(e[n]);)n++;return n<e.length&&hh(e[n])?{word:{wt:q.UpperCase,text:e.slice(t,n-1).join(``)},next:n-1}:{word:{wt:q.UpperCase,text:e.slice(t,n).join(``)},next:n}}if(hh(e[r])){let n=r+1;for(;n<e.length&&hh(e[n])&&!gh(e[n]);)n++;return{word:{wt:q.UpperCase,text:e.slice(t,n).join(``)},next:n}}return{word:{wt:q.UpperCase,text:n},next:r}}if(hh(n)){for(;r<e.length&&hh(e[r])&&!gh(e[r]);)r++;return{word:{wt:q.Alphabet,text:e.slice(t,r).join(``)},next:r}}if(_h(n)){for(;r<e.length&&_h(e[r]);)r++;return{word:{wt:q.Number,text:e.slice(t,r).join(``)},next:r}}for(;r<e.length&&!mh(e[r])&&!hh(e[r])&&!_h(e[r])&&!vh(e[r]);)r++;return{word:{wt:q.Other,text:e.slice(t,r).join(``)},next:r}}function bh(e,t,n){if(t.wt!==q.UpperCase&&t.wt!==q.Connector){e.push(t.text);return}for(let r of t.text)mh(r)?e.push(n):gh(r)?e.push(r.toLowerCase()):e.push(r)}function xh(e,t){if(e.length===0)return``;let n=Array.from(e),r=[],{word:i,next:a}=yh(n,0);for(;a<n.length;){i.wt!==q.Connector&&bh(r,i,t);let e=i,o=i;if({word:i,next:a}=yh(n,a),e.wt===q.Number){for(;i.wt===q.Alphabet||i.wt===q.Number;)bh(r,i,t),{word:i,next:a}=yh(n,a);i.wt!==q.Invalid&&i.wt!==q.Punct&&i.wt!==q.Connector&&r.push(t);continue}if(e.wt===q.Connector){bh(r,o,t);continue}if(e.wt===q.Punct)continue;if(i.wt!==q.Number){i.wt!==q.Connector&&i.wt!==q.Punct&&r.push(t);continue}if(a>=n.length)continue;let s=i;if({word:i,next:a}=yh(n,a),i.wt!==q.Alphabet){bh(r,s,t),i.wt!==q.Connector&&i.wt!==q.Punct&&r.push(t);continue}for(r.push(t),bh(r,s,t);i.wt===q.Alphabet||i.wt===q.Number;)bh(r,i,t),{word:i,next:a}=yh(n,a);i.wt!==q.Invalid&&i.wt!==q.Connector&&i.wt!==q.Punct&&r.push(t)}return bh(r,i,t),r.join(``).toLowerCase()}function Sh(e){if(e.length===0)return``;let t=Array.from(e),n=[],r=0,i=``;for(;r<t.length;){if(i=t[r],r++,!mh(i)){i=i.toUpperCase();break}n.push(i)}if(r>=t.length)return t.length>0&&n.push(i),n.join(``);for(;r<t.length;){let e=i;if(i=t[r],r++,mh(i)&&mh(e)){n.push(e);continue}mh(e)?i=i.toUpperCase():(i=i.toLowerCase(),n.push(e))}return n.push(i),n.join(``)}function Ch(e){return Sh(e)}function wh(...e){return e.join(` `)}function Th(e,t){return t.includes(e)}function Eh(e,t){return t.startsWith(e)}function Dh(e,t){return t.endsWith(e)}function Oh(e,t){let n=` `.repeat(Math.max(0,e));return t.split(`
51
51
  `).map(e=>n+e).join(`
52
- `)}function Th(e){let t=new TextEncoder;return e.split(/\s+/).filter(e=>e.length>0).map(e=>String.fromCharCode(...t.encode(e).slice(0,1))).join(``)}function Eh(e,t){let n=[];for(let e of t){if(typeof e==`object`&&e)throw gm(`join`,2,`list of strings/primitives`,`list element of type ${Dh(e)}`);n.push(String(e))}return n.join(e)}function Dh(e){return Array.isArray(e)?`array`:e instanceof Map?`Map`:e instanceof Set?`Set`:`object`}function Oh(e){return _h(e,`-`)}function kh(e){return e.toLowerCase()}function Ah(e,t){return`\n${wh(e,t)}`}function jh(e){return e.replace(/\s+/g,``)}function Mh(e,t,n){return n===1?e:t}function Nh(...e){return e.map(e=>`"${e}"`).join(` `)}function Ph(e){return e.replace(/[\\.+*?()|[\]{}^$]/g,`\\$&`)}function Fh(e,t){return t.repeat(Math.max(0,e))}function Ih(e,t,n){return n.split(e).join(t)}function Lh(e){return _h(e,`_`)}function Rh(e,t){let n=t.split(e),r={};for(let e=0;e<n.length;e++)r[`_${e}`]=n[e];return r}function zh(e,t){return t.split(e)}function Bh(e,t,n){let r=Vh(n,e,t),i={};for(let e=0;e<r.length;e++)i[`_${e}`]=r[e]??``;return i}function Vh(e,t,n){if(n===0)return[];let r=t===``?Array.from(e):e.split(t);if(n<0||r.length<=n)return r;let i=r.slice(0,n-1),a=r.slice(n-1).join(t);return[...i,a]}function Hh(...e){return e.map(e=>`'${e}'`).join(` `)}function Uh(e,t,n){let r=t<0||t>n.length?n.length:t,i=Math.min(Math.max(0,e),r);return n.slice(i,r)}function Wh(e){let t=``;for(let n of e)Gh(n)?t+=n.toLowerCase():Kh(n)?t+=n.toUpperCase():t+=n;return t}function Gh(e){return e!==e.toLowerCase()&&e===e.toUpperCase()}function Kh(e){return e!==e.toUpperCase()&&e===e.toLowerCase()}function qh(e){return e.replace(/\b([a-zA-Z])/g,e=>e.toUpperCase())}function Jh(e){return e.trim()}function Yh(e,t){if(e.length===0)return t;let n=new Set([...e]),r=0;for(;r<t.length&&n.has(t[r]);)r+=1;let i=t.length;for(;i>r&&n.has(t[i-1]);)--i;return t.slice(r,i)}function Xh(e,t){return t.startsWith(e)?t.slice(e.length):t}function Zh(e,t){return t.endsWith(e)?t.slice(0,t.length-e.length):t}function Qh(e,t){if(e<0){let n=-e;return n>=t.length?t:t.slice(t.length-n)}return e>=t.length?t:t.slice(0,e)}function $h(e){return e.replace(/\b([A-Z])/g,e=>e.toLowerCase())}function eg(e){return e.toUpperCase()}function tg(e,t){return ng(e,`
53
- `,t)}function ng(e,t,n){if(e<=0)return n;let r=[];for(let t of n.split(`
54
- `)){let n=``;for(let i of t.split(/\s+/))i.length!==0&&(n.length===0?n=i:n.length+1+i.length<=e?n+=` ${i}`:(r.push(n),n=i));n.length>0&&r.push(n)}return r.join(t)}function rg(e,t,n){return ng(e,t,n)}function ig(){return{abbrev:{fn:(e,t)=>rh(e,t),argTypes:[`int`,`string`]},abbrevboth:{fn:(e,t,n)=>ih(e,t,n),argTypes:[`int`,`int`,`string`]},camelcase:{fn:e=>yh(e),argTypes:[`string`],returnType:`string`},cat:{fn:(...e)=>bh(...e),argTypes:[`string`]},contains:{fn:(e,t)=>xh(e,t),argTypes:[`string`,`string`]},hasPrefix:{fn:(e,t)=>Sh(e,t),argTypes:[`string`,`string`]},hasSuffix:{fn:(e,t)=>Ch(e,t),argTypes:[`string`,`string`]},indent:{fn:(e,t)=>wh(e,t),argTypes:[`int`,`string`]},initials:{fn:e=>Th(e),argTypes:[`string`]},join:{fn:(e,t)=>Eh(e,t),argTypes:[`string`,`list`]},kebabcase:{fn:e=>Oh(e),argTypes:[`string`],returnType:`string`},lower:{fn:e=>kh(e),argTypes:[`string`]},nindent:{fn:(e,t)=>Ah(e,t),argTypes:[`int`,`string`]},nospace:{fn:e=>jh(e),argTypes:[`string`],returnType:`string`},plural:{fn:(e,t,n)=>Mh(e,t,n),argTypes:[`string`,`string`,`int`],returnType:`string`},quote:{fn:(...e)=>Nh(...e),argTypes:[`string`]},regexQuoteMeta:{fn:e=>Ph(e),argTypes:[`string`],returnType:`string`},repeat:{fn:(e,t)=>Fh(e,t),argTypes:[`int`,`string`]},replace:{fn:(e,t,n)=>Ih(e,t,n),argTypes:[`string`,`string`,`string`]},snakecase:{fn:e=>Lh(e),argTypes:[`string`],returnType:`string`},split:{fn:(e,t)=>Rh(e,t),argTypes:[`string`,`string`]},splitList:{fn:(e,t)=>zh(e,t),argTypes:[`string`,`string`]},splitn:{fn:(e,t,n)=>Bh(e,t,n),argTypes:[`string`,`int`,`string`],returnType:`dict`},squote:{fn:(...e)=>Hh(...e),argTypes:[`string`]},substr:{fn:(e,t,n)=>Uh(e,t,n),argTypes:[`int`,`int`,`string`]},swapcase:{fn:e=>Wh(e),argTypes:[`string`],returnType:`string`},title:{fn:e=>qh(e),argTypes:[`string`]},trim:{fn:e=>Jh(e),argTypes:[`string`]},trimAll:{fn:(e,t)=>Yh(e,t),argTypes:[`string`,`string`]},trimPrefix:{fn:(e,t)=>Xh(e,t),argTypes:[`string`,`string`]},trimSuffix:{fn:(e,t)=>Zh(e,t),argTypes:[`string`,`string`]},trunc:{fn:(e,t)=>Qh(e,t),argTypes:[`int`,`string`]},untitle:{fn:e=>$h(e),argTypes:[`string`]},upper:{fn:e=>eg(e),argTypes:[`string`]},wrap:{fn:(e,t)=>tg(e,t),argTypes:[`int`,`string`]},wrapWith:{fn:(e,t,n)=>rg(e,t,n),argTypes:[`int`,`string`,`string`]}}}function ag(e){return e}function og(e,t,n){return n===void 0?Sl+bl(e)+`.`+bl(t):sg(n)}function sg(e){return Sl+bl(e)}function cg(e,t){return e+`.`+t}function lg(e){return e+`.page`}const ug=[`closeOnPick`,`paged`,`key`,`distribution`],dg=e=>ug.includes(e),fg=`"closeOnPick" (bool, default false), "paged" (bool, default true), "key" (string, accordion grouping), "distribution" (one of ${Fi.map(e=>`"${e}"`).join(`, `)}; default "van-der-corput")`;function pg(e){for(let t of Object.keys(e))if(!dg(t))throw Error(`unknown {{ menu }} option "${t}" — the options dict takes ${fg}`);let t=(t,n)=>{let r=e[t];if(r===void 0)return n;if(typeof r!=`boolean`)throw Error(`{{ menu }} option "${t}" must be a boolean, got ${JSON.stringify(r)} (e.g. (dict "${t}" ${String(!n)}))`);return r},n=e.key;if(n!==void 0&&typeof n!=`string`)throw Error(`{{ menu }} option "key" must be a string naming the accordion group, got ${JSON.stringify(n)}`);if(n===``)throw Error(`{{ menu }} has an empty accordion key — a shared key must be a non-empty name (or omit "key" for an independent menu)`);let r=e.distribution;if(r!==void 0&&!Ii(r))throw Error(`{{ menu }} option "distribution" must be one of: ${Fi.join(`, `)}; got ${JSON.stringify(r)}`);return{closeOnPick:t(`closeOnPick`,!1),paged:t(`paged`,!0),key:n,distribution:Ri(r)}}const mg=`default`,hg={};function gg(e){return[...new Set([mg,...Object.keys(e)])]}function _g(e,t,n){return wa(void 0,e,t,mg,n)}function vg(e,t){let n={[mg]:hg,...e}[t];if(n===void 0)throw Error(`Preset "${t}" is not declared in this config — effectivePresetName collapses unknown names to "${mg}", which always resolves; a miss here means a raw name reached this function without going through that resolution`);return n}function yg(e,t){let n=vg(e.presets,t).root??Ks;return{node:Xs($s(n,e.root)),path:ec(n)?`presets.${t}.root`:`root`}}function bg(e,t){return{...e.globals,...vg(e.presets,t).globals}}const xg=`menu`,Sg=`a menu binds its trigger text the way a cycle action binds a display — write {{ menu "applyTheme" "▸" "▾" }} (one per state) or {{ menu "insertHere" "+" }} (one static display for both), with the rare knobs in ONE trailing dict: {{ menu "applyTheme" "▸" "▾" (dict "closeOnPick" true "paged" false "key" "pickers") }} (defaults: closeOnPick false, paged true, no key). The renderer no longer appends ▸/▾ of its own (candybar-settings-ui-aok.4), and the older positional tail ("pageAction" closeOnPick paged "key") was removed — the page cursor is synthesized from the menu's identity`,Cg=e=>e.kind===`call`&&e.name===`dict`,wg=e=>e.kind===`literal`&&typeof e.value!=`object`,Tg=e=>oc(``,e,2)===void 0;function Eg(e){let t=e=>({kind:`issue`,message:e}),[n,...r]=e.argExprs;if(n===void 0)return t(`with no arguments — it takes an apply-action name and its trigger text (e.g. {{ menu "applyTheme" "▸" "▾" }})`);if(n.kind!==`literal`||typeof n.value!=`string`)return t(`whose apply action is not a string literal — a menu's identity is its apply-action name, which must be a literal so it can be gated at load (e.g. {{ menu "applyTheme" "▸" "▾" }})`);let i=r[r.length-1],a=i!==void 0&&Cg(i)?i:void 0,o=a===void 0?r:r.slice(0,-1);if(o.some(Cg))return t(`whose options (dict …) is not its last argument — ${Sg}`);if(i!==void 0&&a===void 0&&!wg(i)&&Tg(o.length-1))return t(`whose last argument is neither a literal nor a literal (dict …) — the renderer tells a display from the options dict by the value it evaluates to, so this call could be read as ${o.length} displays or as ${o.length-1} plus options, and both are legal. Make the options explicit as a trailing (dict …) — {{ menu "${n.value}" (printf "…") (printf "…") (dict) }} binds dynamic displays unambiguously — or bind the trigger text as literals`);let s=oc(`whose trigger`,o.length,2);if(s!==void 0)return t(`${s} — ${Sg}`);let c=a===void 0?{}:Xp(a);if(c===null)return t(`whose options (dict …) is not fully literal — every option value must be a literal so the menu can be gated at load (a dynamic entry like (dict "key" .x) cannot)`);let l;try{l=pg(c)}catch(e){return t(`with invalid options — ${e.message}`)}let u=l.key;if(u!==void 0){let e=El(u);if(e!==void 0)return t(`whose accordion key "${u}" lands in the reserved "${e}" namespace — a key is collapsed to an identifier (${JSON.stringify(u)} becomes "${sg(u)}"), so it would share one open-state key with the synthesized accordion that owns that namespace instead of grouping only your own menus. Name the group without the reserved prefix`)}return{kind:`ok`,apply:n.value,options:l}}function Dg(e){let t=sf({fromString:e=>e});try{return t.parse(e).referencedCalls().filter(e=>e.name===xg).map(Eg)}catch{return`parse-failed`}}function Og(e){let t=sf({fromString:e=>e});try{return t.parse(e).referencedFunctions().has(xg)}catch{return!1}}function kg(e,t,n){e.issues.push({path:t,message:n,line:U(e.source,[`root`])})}function Ag(e,t){Dl(e,t,Sl,`{{ menu }} helpers`);for(let[n,r]of Object.entries(t.helpers??{}))Og(r)&&e.issues.push({path:`helpers.${n}`,message:`helper "${n}" uses {{ menu }}, but a menu must live directly in a segment template — its identity is derived from the segment it sits in, which a shared helper does not have. Inline the {{ menu }} call into each segment that needs it.`,line:U(e.source,[`helpers`,n])});let n=t.segments??{};for(let[t,r]of Object.entries(n))for(let n of[`bg`,`fg`,`when`]){let i=r[n];typeof i==`string`&&Og(i)&&kg(e,`segments.${t}.${n}`,`segment "${t}" uses {{ menu }} in its "${n}" — a menu is only valid in a segment's "template" (its placement is published only there; "${n}" needs a ${n===`when`?`predicate`:`color`}). Move the {{ menu }} into the template.`)}if(t.root!==void 0)for(let n of ns(Zs(t.root)))typeof n.when==`string`&&Og(n.when)&&kg(e,`root`,`a layout node's "when" predicate uses {{ menu }} — a menu is only valid in a segment's "template", not a node predicate. Move it into a segment.`);for(let[t,{template:r}]of Object.entries(n)){if(r===void 0||!Og(r))continue;let n=Dg(r);if(n!==`parse-failed`)for(let r of n){let n=r.kind===`issue`?r.message:jg(r.apply);n!==void 0&&kg(e,`segments.${t}`,`segment "${t}" has a {{ menu }} ${n}.`)}}}function jg(e){if(e===``)return`with an empty apply-action name — an empty member aliases the absent-state sentinel ("") so the menu would render open before any click. Name the apply action`;if(ag(e)===`closed`)return`whose apply action is named "${ic}", which collides with the menu's closed-state sentinel and leaves it unopenable. Rename the action`}function Mg(e,t){let n={},r={},i=new Map,a=new Set,o=(e,n)=>{let r=`segments.${e}`;a.has(`${r}\0${n}`)||(a.add(`${r}\0${n}`),t.push({path:r,message:n}))};for(let t of gg(e.presets)){let a=new Map,s=new Map;for(let c of ns(yg(e,t).node)){if(c.kind!==`segment`)continue;let t=e.segments[c.name];if(t===void 0)continue;i.has(c.name)||i.set(c.name,Dg(t.template));let l=i.get(c.name);if(l===`parse-failed`)continue;let u=Qo(c);for(let[e,t]of l.entries()){if(t.kind===`issue`||jg(t.apply)!==void 0)continue;let{apply:i,options:l}=t,d=ag(i),f=og(u,i,l.key),p=lg(f),m=l.key===void 0?`ind ${u} ${i}`:`key ${l.key}`,h=[f,p].find(e=>{let t=a.get(e);return t!==void 0&&t!==m});if(h!==void 0){o(c.name,`two {{ menu }} disclosures normalize to the same state key ("${h}") but were declared differently — distinct names that differ only by non-alphanumeric characters (e.g. "a-b" vs "a_b") collapse to one key and would silently share open-state. Rename so they don't collide.`);continue}a.set(f,m),a.set(p,m);let g=cg(f,d),_=`${c.name}\0${e}`,v=s.get(g);if(v!==void 0&&v!==_){o(c.name,`two {{ menu }} disclosures resolve to the same identity ("${g}") — ${l.key===void 0?`a segment cannot contain two menus over the same apply action "${i}"`:`menus sharing key "${l.key}" must have distinct apply actions`}.`);continue}s.set(g,_),r[g]=mc(f,d),n[f]=pc(f,ic),n[p]={kind:`state`,key:p,default:`0`},r[p]={set:p,int:!0}}}}return{...e,variables:{...e.variables,...n},actions:{...e.actions,...r}}}const Ng=sf({fromString:e=>e}),Pg=`edit.mode`,Fg=`edit.toggle`,Ig=`open`,Lg={variable:Pg,key:Pg,member:Ig},Rg=uc(Lg);function zg(e){try{return Ng.parse(e).referencedCalls().some(e=>e.name===`action`&&e.args[0]===`edit.toggle`)}catch{return!1}}function Bg(e){if(Object.values(e.actions??{}).some(e=>`do`in e&&e.do.includes(`edit.toggle`)))return!0;for(let t of Object.values(e.segments??{}))for(let e of[t.template,t.bg,t.fg])if(typeof e==`string`&&zg(e))return!0;return!1}function Vg(e,t){if(Dl(e,t,Cl,`edit mode`),!Bg(t))return;let n={[Pg]:pc(Pg,ic)},r={[Fg]:mc(Pg,Ig)};t.variables={...t.variables??{},...n},t.actions={...t.actions??{},...r}}const Hg=/"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|`[^`]*`/g;function*Ug(e){let t=e.indexOf(`{{`);for(;t!==-1;){let n=``,r=t+2;for(;r<e.length&&!e.startsWith(`}}`,r);){if(e.startsWith(`/*`,r)){let t=e.indexOf(`*/`,r+2);r=t===-1?e.length:t+2;continue}let t=r,i=e[r];if(r+=1,i===`"`||i===`'`||i==="`"){for(;r<e.length&&e[r]!==i;)r+=e[r]===`\\`&&i!=="`"?2:1;r+=1}n+=e.slice(t,r)}if(r>=e.length)return;yield n,t=e.indexOf(`{{`,r+2)}}const Wg=`[A-Za-z_]\\w*(?:\\.[A-Za-z_]\\w*)*`,Gg=RegExp(`^(?:(\\$)(?:\\.(${Wg}))?|\\.(${Wg})?)(?=[\\s)]|$)`);function Kg(e,t){let n=Gg.exec(e.trimStart());return n===null?null:n[1]===void 0?t===null?null:n[3]===void 0?t:`${t}${n[3]}.`:n[2]===void 0?``:`${n[2]}.`}const qg=/^(\w+)\b\s*([\s\S]*)$/;function*Jg(e){let t=[``];for(let n of Ug(e)){let e=n.replace(/^-(?=\s)/,``).trim(),[,r=``,i=``]=qg.exec(e)??[],a=t[t.length-1],o=t.length>1?t[t.length-2]:a;if(r===`end`){t.length>1&&t.pop();continue}if(r===`else`){yield{code:e,dot:o};let n=/^with\b([\s\S]*)$/.exec(i);t[t.length-1]=n===null?o:Kg(n[1],o);continue}yield{code:e,dot:a},r===`if`&&t.push(a),r===`with`&&t.push(Kg(i,a)),(r===`range`||r===`define`||r===`block`)&&t.push(null)}}const Yg=RegExp(`(?<![A-Za-z0-9_)$])(\\$?)\\.(${Wg})`,`g`);function*Xg(e,t){let n=e.replace(Hg,``);for(let e of[...n.matchAll(Yg)])e[1]===`$`?yield e[2]:t!==null&&(yield`${t}${e[2]}`)}const Zg=/\btemplate\s+$/;function*Qg(e,t){let n=0;for(let r of[...e.matchAll(Hg)]){let i=r.index+r[0].length;if(Zg.test(e.slice(n,r.index))){let n=Kg(e.slice(i),t);n!==null&&(yield{name:r[0].slice(1,-1),at:n})}n=i}}function $g(e,t){let n=new Map,r=new Set,i=(e,a,o,s)=>{for(let{code:c,dot:l}of[...Jg(e)]){for(let e of Xg(c,l))n.has(a+e)||n.set(a+e,o);for(let e of[...Qg(c,l)]){let n=t[e.name],o=a+e.at,c=`${e.name}\0${o}`;n===void 0||s.has(e.name)||r.has(c)||(r.add(c),i(n,o,e.name,new Set([...s,e.name])))}}};return i(e,``,null,new Set),n}const e_=/\baction\s+$/;function t_(e){let t=new Set;for(let n of Ug(e)){let e=0,r;for(Hg.lastIndex=0;(r=Hg.exec(n))!==null;)e_.test(n.slice(e,r.index))&&t.add(r[0].slice(1,-1)),e=r.index+r[0].length}return t}const n_=/\b(picker|menu|carousel)\s+$/;function r_(e){let t=new Set;for(let n of Ug(e)){let e=0,r=0,i;for(Hg.lastIndex=0;(i=Hg.exec(n))!==null;){let a=n_.exec(n.slice(e,i.index));a!==null&&(r=a[1]===`picker`?2:1),r>0&&(t.add(i[0].slice(1,-1)),r--),e=i.index+i[0].length}}return t}function i_(e,t){if(t.names.has(e))return!0;let n=`${e}.`;for(let e of t.names)if(e.startsWith(n))return!0;for(let n of t.documents)if(e.startsWith(`${n}.`))return!0;return!1}function a_(e){let t=new Set,n=new Set,r=(e,r)=>{t.add(e),o_(r)&&n.add(e)};for(let[t,n]of Object.entries(e.variables))r(t,n);for(let[t,n]of Object.entries(e.segments))for(let[e,i]of Object.entries(n.vars??{}))r(`${t}.${e}`,i);return{names:t,documents:n,helpers:e.helpers}}function o_(e){return(e.kind===`shell`||e.kind===`file`)&&ss(e.parse)===`json`}var s_=me((e=>{function t(e){var t=[...arguments].slice(1);throw Error(typeof e==`number`?`[MobX] minified error nr: `+e+(t.length?` `+t.map(String).join(`,`):``)+`. Find the full error at: https://github.com/mobxjs/mobx/blob/main/packages/mobx/src/errors.ts`:`[MobX] `+e)}function n(){return typeof globalThis<`u`?globalThis:typeof window<`u`?window:typeof global<`u`?global:typeof self<`u`?self:rn}function r(){N||t(`Proxy not available`)}function i(e){var t=!1;return function(){if(!t)return t=!0,e.apply(this,arguments)}}function a(e){return typeof e==`function`}function o(e){switch(typeof e){case`string`:case`symbol`:case`number`:return!0}return!1}function s(e){return typeof e==`object`&&!!e}function c(e){if(!s(e))return!1;var t=Object.getPrototypeOf(e);if(t==null)return!0;var n=Object.hasOwnProperty.call(t,`constructor`)&&t.constructor;return typeof n==`function`&&n.toString()===un}function l(e){var t=e?.constructor;return!!t&&(t.name===`GeneratorFunction`||t.displayName===`GeneratorFunction`)}function u(e,t,n){on(e,t,{enumerable:!1,writable:!0,configurable:!0,value:n})}function d(e,t,n){on(e,t,{enumerable:!1,writable:!1,configurable:!0,value:n})}function f(e,t){var n=`isMobX`+e;return t.prototype[n]=!0,function(e){return s(e)&&!0===e[n]}}function p(e){return e!=null&&Object.prototype.toString.call(e)===`[object Map]`}function m(e){return e!=null&&Object.prototype.toString.call(e)===`[object Set]`}function h(e){return e===null?null:typeof e==`object`?``+e:e}function g(e,t){return sn.hasOwnProperty.call(e,t)}function _(e,t){return!!(e&t)}function v(e,t,n){return n?e|=t:e&=~t,e}function y(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function b(e,t,n){if(re())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var i=new(e.bind.apply(e,r));return n&&ie(i,n.prototype),i}function x(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,ae(r.key),r)}}function S(e,t,n){return t&&x(e.prototype,t),n&&x(e,n),Object.defineProperty(e,`prototype`,{writable:!1}),e}function C(e,t){var n=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if(typeof e==`string`)return y(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(e,t):void 0}}(e))||t&&e&&typeof e.length==`number`){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw TypeError(`Invalid attempt to iterate non-iterable instance.
52
+ `)}function kh(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 Ah(e,t){let n=[];for(let e of t){if(typeof e==`object`&&e)throw bm(`join`,2,`list of strings/primitives`,`list element of type ${jh(e)}`);n.push(String(e))}return n.join(e)}function jh(e){return Array.isArray(e)?`array`:e instanceof Map?`Map`:e instanceof Set?`Set`:`object`}function Mh(e){return xh(e,`-`)}function Nh(e){return e.toLowerCase()}function Ph(e,t){return`\n${Oh(e,t)}`}function Fh(e){return e.replace(/\s+/g,``)}function Ih(e,t,n){return n===1?e:t}function Lh(...e){return e.map(e=>`"${e}"`).join(` `)}function Rh(e){return e.replace(/[\\.+*?()|[\]{}^$]/g,`\\$&`)}function zh(e,t){return t.repeat(Math.max(0,e))}function Bh(e,t,n){return n.split(e).join(t)}function Vh(e){return xh(e,`_`)}function Hh(e,t){let n=t.split(e),r={};for(let e=0;e<n.length;e++)r[`_${e}`]=n[e];return r}function Uh(e,t){return t.split(e)}function Wh(e,t,n){let r=Gh(n,e,t),i={};for(let e=0;e<r.length;e++)i[`_${e}`]=r[e]??``;return i}function Gh(e,t,n){if(n===0)return[];let r=t===``?Array.from(e):e.split(t);if(n<0||r.length<=n)return r;let i=r.slice(0,n-1),a=r.slice(n-1).join(t);return[...i,a]}function Kh(...e){return e.map(e=>`'${e}'`).join(` `)}function qh(e,t,n){let r=t<0||t>n.length?n.length:t,i=Math.min(Math.max(0,e),r);return n.slice(i,r)}function Jh(e){let t=``;for(let n of e)Yh(n)?t+=n.toLowerCase():Xh(n)?t+=n.toUpperCase():t+=n;return t}function Yh(e){return e!==e.toLowerCase()&&e===e.toUpperCase()}function Xh(e){return e!==e.toUpperCase()&&e===e.toLowerCase()}function Zh(e){return e.replace(/\b([a-zA-Z])/g,e=>e.toUpperCase())}function Qh(e){return e.trim()}function $h(e,t){if(e.length===0)return t;let n=new Set([...e]),r=0;for(;r<t.length&&n.has(t[r]);)r+=1;let i=t.length;for(;i>r&&n.has(t[i-1]);)--i;return t.slice(r,i)}function eg(e,t){return t.startsWith(e)?t.slice(e.length):t}function tg(e,t){return t.endsWith(e)?t.slice(0,t.length-e.length):t}function ng(e,t){if(e<0){let n=-e;return n>=t.length?t:t.slice(t.length-n)}return e>=t.length?t:t.slice(0,e)}function rg(e){return e.replace(/\b([A-Z])/g,e=>e.toLowerCase())}function ig(e){return e.toUpperCase()}function ag(e,t){return og(e,`
53
+ `,t)}function og(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 sg(e,t,n){return og(e,t,n)}function cg(){return{abbrev:{fn:(e,t)=>sh(e,t),argTypes:[`int`,`string`]},abbrevboth:{fn:(e,t,n)=>ch(e,t,n),argTypes:[`int`,`int`,`string`]},camelcase:{fn:e=>Ch(e),argTypes:[`string`],returnType:`string`},cat:{fn:(...e)=>wh(...e),argTypes:[`string`]},contains:{fn:(e,t)=>Th(e,t),argTypes:[`string`,`string`]},hasPrefix:{fn:(e,t)=>Eh(e,t),argTypes:[`string`,`string`]},hasSuffix:{fn:(e,t)=>Dh(e,t),argTypes:[`string`,`string`]},indent:{fn:(e,t)=>Oh(e,t),argTypes:[`int`,`string`]},initials:{fn:e=>kh(e),argTypes:[`string`]},join:{fn:(e,t)=>Ah(e,t),argTypes:[`string`,`list`]},kebabcase:{fn:e=>Mh(e),argTypes:[`string`],returnType:`string`},lower:{fn:e=>Nh(e),argTypes:[`string`]},nindent:{fn:(e,t)=>Ph(e,t),argTypes:[`int`,`string`]},nospace:{fn:e=>Fh(e),argTypes:[`string`],returnType:`string`},plural:{fn:(e,t,n)=>Ih(e,t,n),argTypes:[`string`,`string`,`int`],returnType:`string`},quote:{fn:(...e)=>Lh(...e),argTypes:[`string`]},regexQuoteMeta:{fn:e=>Rh(e),argTypes:[`string`],returnType:`string`},repeat:{fn:(e,t)=>zh(e,t),argTypes:[`int`,`string`]},replace:{fn:(e,t,n)=>Bh(e,t,n),argTypes:[`string`,`string`,`string`]},snakecase:{fn:e=>Vh(e),argTypes:[`string`],returnType:`string`},split:{fn:(e,t)=>Hh(e,t),argTypes:[`string`,`string`]},splitList:{fn:(e,t)=>Uh(e,t),argTypes:[`string`,`string`]},splitn:{fn:(e,t,n)=>Wh(e,t,n),argTypes:[`string`,`int`,`string`],returnType:`dict`},squote:{fn:(...e)=>Kh(...e),argTypes:[`string`]},substr:{fn:(e,t,n)=>qh(e,t,n),argTypes:[`int`,`int`,`string`]},swapcase:{fn:e=>Jh(e),argTypes:[`string`],returnType:`string`},title:{fn:e=>Zh(e),argTypes:[`string`]},trim:{fn:e=>Qh(e),argTypes:[`string`]},trimAll:{fn:(e,t)=>$h(e,t),argTypes:[`string`,`string`]},trimPrefix:{fn:(e,t)=>eg(e,t),argTypes:[`string`,`string`]},trimSuffix:{fn:(e,t)=>tg(e,t),argTypes:[`string`,`string`]},trunc:{fn:(e,t)=>ng(e,t),argTypes:[`int`,`string`]},untitle:{fn:e=>rg(e),argTypes:[`string`]},upper:{fn:e=>ig(e),argTypes:[`string`]},wrap:{fn:(e,t)=>ag(e,t),argTypes:[`int`,`string`]},wrapWith:{fn:(e,t,n)=>sg(e,t,n),argTypes:[`int`,`string`,`string`]}}}function lg(e){return e}function ug(e,t,n){return n===void 0?El+wl(e)+`.`+wl(t):dg(n)}function dg(e){return El+wl(e)}function fg(e,t){return e+`.`+t}function pg(e){return e+`.page`}const mg=[`closeOnPick`,`paged`,`key`,`distribution`],hg=e=>mg.includes(e),gg=`"closeOnPick" (bool, default false), "paged" (bool, default true), "key" (string, accordion grouping), "distribution" (one of ${Fi.map(e=>`"${e}"`).join(`, `)}; default "van-der-corput")`;function _g(e){for(let t of Object.keys(e))if(!hg(t))throw Error(`unknown {{ menu }} option "${t}" — the options dict takes ${gg}`);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&&!Ii(r))throw Error(`{{ menu }} option "distribution" must be one of: ${Fi.join(`, `)}; got ${JSON.stringify(r)}`);return{closeOnPick:t(`closeOnPick`,!1),paged:t(`paged`,!0),key:n,distribution:Ri(r)}}const vg=`default`,yg={};function bg(e){return[...new Set([vg,...Object.keys(e)])]}function xg(e,t,n){return wa(void 0,e,t,vg,n)}function Sg(e,t){let n={[vg]:yg,...e}[t];if(n===void 0)throw Error(`Preset "${t}" is not declared in this config — effectivePresetName collapses unknown names to "${vg}", which always resolves; a miss here means a raw name reached this function without going through that resolution`);return n}function Cg(e,t){let n=Sg(e.presets,t).root??Xs;return{node:ec(rc(n,e.root)),path:ic(n)?`presets.${t}.root`:`root`}}function wg(e,t){return{...e.globals,...Sg(e.presets,t).globals}}const Tg=`menu`,Eg=`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`,Dg=e=>e.kind===`call`&&e.name===`dict`,Og=e=>e.kind===`literal`&&typeof e.value!=`object`,kg=e=>uc(``,e,2)===void 0;function Ag(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&&Dg(i)?i:void 0,o=a===void 0?r:r.slice(0,-1);if(o.some(Dg))return t(`whose options (dict …) is not its last argument — ${Eg}`);if(i!==void 0&&a===void 0&&!Og(i)&&kg(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=uc(`whose trigger`,o.length,2);if(s!==void 0)return t(`${s} — ${Eg}`);let c=a===void 0?{}:em(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=_g(c)}catch(e){return t(`with invalid options — ${e.message}`)}let u=l.key;if(u!==void 0){let e=Al(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 "${dg(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 jg(e){let t=df({fromString:e=>e});try{return t.parse(e).referencedCalls().filter(e=>e.name===Tg).map(Ag)}catch{return`parse-failed`}}function Mg(e){let t=df({fromString:e=>e});try{return t.parse(e).referencedFunctions().has(Tg)}catch{return!1}}function Ng(e,t,n){e.issues.push({path:t,message:n,line:U(e.source,[`root`])})}function Pg(e,t){jl(e,t,El,`{{ menu }} helpers`);for(let[n,r]of Object.entries(t.helpers??{}))Mg(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:U(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`&&Mg(i)&&Ng(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 is(tc(t.root)))typeof n.when==`string`&&Mg(n.when)&&Ng(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||!Mg(r))continue;let n=jg(r);if(n!==`parse-failed`)for(let r of n){let n=r.kind===`issue`?r.message:Fg(r.apply);n!==void 0&&Ng(e,`segments.${t}`,`segment "${t}" has a {{ menu }} ${n}.`)}}}function Fg(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(lg(e)===`closed`)return`whose apply action is named "${cc}", which collides with the menu's closed-state sentinel and leaves it unopenable. Rename the action`}function Ig(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 bg(e.presets)){let a=new Map,s=new Map;for(let c of is(Cg(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,jg(t.template));let l=i.get(c.name);if(l===`parse-failed`)continue;let u=es(c);for(let[e,t]of l.entries()){if(t.kind===`issue`||Fg(t.apply)!==void 0)continue;let{apply:i,options:l}=t,d=lg(i),f=ug(u,i,l.key),p=pg(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=fg(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]=vc(f,d),n[f]=_c(f,cc),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 Lg=df({fromString:e=>e}),Rg=`edit.mode`,zg=`edit.toggle`,Bg=`arrange`,Vg=`${Dl}draft.`;function Hg(e,t){return`configure:${e}:${t}`}const Ug={variable:Rg,key:Rg,member:Bg},Wg=mc(Ug);function Gg(e){try{return Lg.parse(e).referencedCalls().some(e=>e.name===`action`&&e.args[0]===`edit.toggle`)}catch{return!1}}function Kg(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`&&Gg(e))return!0;return!1}function qg(e,t){if(jl(e,t,Dl,`edit mode`),!Kg(t))return;let n={[Rg]:_c(Rg,cc)},r={[zg]:vc(Rg,Bg)};t.variables={...t.variables??{},...n},t.actions={...t.actions??{},...r}}const Jg=/"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|`[^`]*`/g;function*Yg(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 Xg=`[A-Za-z_]\\w*(?:\\.[A-Za-z_]\\w*)*`,Zg=RegExp(`^(?:(\\$)(?:\\.(${Xg}))?|\\.(${Xg})?)(?=[\\s)]|$)`);function Qg(e,t){let n=Zg.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 $g=/^(\w+)\b\s*([\s\S]*)$/;function*e_(e){let t=[``];for(let n of Yg(e)){let e=n.replace(/^-(?=\s)/,``).trim(),[,r=``,i=``]=$g.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:Qg(n[1],o);continue}yield{code:e,dot:a},r===`if`&&t.push(a),r===`with`&&t.push(Qg(i,a)),(r===`range`||r===`define`||r===`block`)&&t.push(null)}}const t_=RegExp(`(?<![A-Za-z0-9_)$])(\\$?)\\.(${Xg})`,`g`);function*n_(e,t){let n=e.replace(Jg,``);for(let e of[...n.matchAll(t_)])e[1]===`$`?yield e[2]:t!==null&&(yield`${t}${e[2]}`)}const r_=/\btemplate\s+$/;function*i_(e,t){let n=0;for(let r of[...e.matchAll(Jg)]){let i=r.index+r[0].length;if(r_.test(e.slice(n,r.index))){let n=Qg(e.slice(i),t);n!==null&&(yield{name:r[0].slice(1,-1),at:n})}n=i}}function a_(e,t){let n=new Map,r=new Set,i=(e,a,o,s)=>{for(let{code:c,dot:l}of[...e_(e)]){for(let e of n_(c,l))n.has(a+e)||n.set(a+e,o);for(let e of[...i_(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 o_=/\baction\s+$/;function s_(e){let t=new Set;for(let n of Yg(e)){let e=0,r;for(Jg.lastIndex=0;(r=Jg.exec(n))!==null;)o_.test(n.slice(e,r.index))&&t.add(r[0].slice(1,-1)),e=r.index+r[0].length}return t}const c_=/\b(picker|menu|carousel)\s+$/;function l_(e){let t=new Set;for(let n of Yg(e)){let e=0,r=0,i;for(Jg.lastIndex=0;(i=Jg.exec(n))!==null;){let a=c_.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 u_(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 d_(e){let t=new Set,n=new Set,r=(e,r)=>{t.add(e),f_(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 f_(e){return(e.kind===`shell`||e.kind===`file`)&&ls(e.parse)===`json`}var p_=me((e=>{function t(e){var t=[...arguments].slice(1);throw Error(typeof e==`number`?`[MobX] minified error nr: `+e+(t.length?` `+t.map(String).join(`,`):``)+`. Find the full error at: https://github.com/mobxjs/mobx/blob/main/packages/mobx/src/errors.ts`:`[MobX] `+e)}function n(){return typeof globalThis<`u`?globalThis:typeof window<`u`?window:typeof global<`u`?global:typeof self<`u`?self:rn}function r(){N||t(`Proxy not available`)}function i(e){var t=!1;return function(){if(!t)return t=!0,e.apply(this,arguments)}}function a(e){return typeof e==`function`}function o(e){switch(typeof e){case`string`:case`symbol`:case`number`:return!0}return!1}function s(e){return typeof e==`object`&&!!e}function c(e){if(!s(e))return!1;var t=Object.getPrototypeOf(e);if(t==null)return!0;var n=Object.hasOwnProperty.call(t,`constructor`)&&t.constructor;return typeof n==`function`&&n.toString()===un}function l(e){var t=e?.constructor;return!!t&&(t.name===`GeneratorFunction`||t.displayName===`GeneratorFunction`)}function u(e,t,n){on(e,t,{enumerable:!1,writable:!0,configurable:!0,value:n})}function d(e,t,n){on(e,t,{enumerable:!1,writable:!1,configurable:!0,value:n})}function f(e,t){var n=`isMobX`+e;return t.prototype[n]=!0,function(e){return s(e)&&!0===e[n]}}function p(e){return e!=null&&Object.prototype.toString.call(e)===`[object Map]`}function m(e){return e!=null&&Object.prototype.toString.call(e)===`[object Set]`}function h(e){return e===null?null:typeof e==`object`?``+e:e}function g(e,t){return sn.hasOwnProperty.call(e,t)}function _(e,t){return!!(e&t)}function v(e,t,n){return n?e|=t:e&=~t,e}function y(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function b(e,t,n){if(re())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var i=new(e.bind.apply(e,r));return n&&ie(i,n.prototype),i}function x(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,ae(r.key),r)}}function S(e,t,n){return t&&x(e.prototype,t),n&&x(e,n),Object.defineProperty(e,`prototype`,{writable:!1}),e}function C(e,t){var n=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if(typeof e==`string`)return y(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(e,t):void 0}}(e))||t&&e&&typeof e.length==`number`){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw TypeError(`Invalid attempt to iterate non-iterable instance.
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,ie(e,t)}function re(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch{}return(re=function(){return!!e})()}function ie(e,t){return(ie=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function ae(e){var t=function(e){if(typeof e!=`object`||!e)return e;var t=e[Symbol.toPrimitive];if(t!==void 0){var n=t.call(e,`string`);if(typeof n!=`object`)return n;throw TypeError(`@@toPrimitive must return a primitive value.`)}return String(e)}(e);return typeof t==`symbol`?t:t+``}function w(e){var t=typeof Map==`function`?new Map:void 0;return(w=function(e){function n(){return b(e,arguments,te(this).constructor)}if(e===null||!function(e){try{return Function.toString.call(e).indexOf(`[native code]`)!==-1}catch{return typeof e==`function`}}(e))return e;if(typeof e!=`function`)throw TypeError(`Super expression must either be null or a function`);if(t!==void 0){if(t.has(e))return t.get(e);t.set(e,n)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),ie(n,e)})(e)}function T(e){return Object.assign((function(t,n){if(se(n))return e.t(t,n);oe(t,n,e)}),e)}function oe(e,t,n){g(e,hn)||u(e,hn,ee({},e[hn])),function(e){return e.i===`override`}(n)||(e[hn][t]=n)}function se(e){return typeof e==`object`&&typeof e.kind==`string`}function ce(e,t,n){t===void 0&&(t=dn),n===void 0&&(n=dn);var r=new gn(e);return t!==dn&&ft(r,t),n!==dn&&pt(r,n),r}function le(e,t,n){return St(e)?e:Array.isArray(e)?Dn.array(e,{name:n}):c(e)?Dn.object(e,void 0,{name:n}):p(e)?Dn.map(e,{name:n}):m(e)?Dn.set(e,{name:n}):typeof e!=`function`||lt(e)||yt(e)?e:l(e)?ir(e):Qn(n,e)}function ue(e){return e}function de(e,t){return{i:e,u:t,o:fe,s:pe,t:me}}function fe(e,t,n,r){var i;return(i=this.u)!=null&&i.bound?this.s(e,t,n,!1)===null?0:1:r===e.h?this.s(e,t,n,!1)===null?0:2:lt(n.value)?1:(on(r,t,he(e,this,t,n,!1)),2)}function pe(e,t,n,r){var i=he(e,this,t,n);return e.l(t,i,r)}function me(e,n){var r,i=n.kind,a=n.name,o=n.addInitializer,s=this,c=function(e){var t;return Pe(s.u?.name??a.toString(),e,(t=s.u?.autoAction)!=null&&t)};return i==`field`?function(e){var t,n=e;return lt(n)||(n=c(n)),(t=s.u)!=null&&t.bound&&((n=n.bind(this)).isMobxAction=!0),n}:i==`method`?(lt(e)||(e=c(e)),(r=this.u)!=null&&r.bound&&o((function(){var e=this[a].bind(this);e.isMobxAction=!0,this[a]=e})),e):void t(`Cannot apply '`+s.i+`' to '`+String(a)+`' (kind: `+i+`):
56
- '`+s.i+`' can only be used on properties with a function value.`)}function he(e,t,n,r,i){var a,o,s;i===void 0&&(i=R.safeDescriptors);var c=r.value;return(a=t.u)!=null&&a.bound&&(c=c.bind(e.v??e.h)),{value:Pe(t.u?.name??n.toString(),c,(o=t.u?.autoAction)!=null&&o,(s=t.u)!=null&&s.bound?e.v??e.h:void 0),configurable:!i||e.p,enumerable:!1,writable:!i}}function ge(e,t){return{i:e,u:t,o:E,s:_e,t:ve}}function E(e,t,n,r){var i;return r===e.h?this.s(e,t,n,!1)===null?0:2:(i=this.u)!=null&&i.bound&&(!g(e.h,t)||!yt(e.h[t]))&&this.s(e,t,n,!1)===null?0:yt(n.value)?1:(on(r,t,ye(e,0,0,n,!1,!1)),2)}function _e(e,t,n,r){var i=ye(e,0,0,n,this.u?.bound);return e.l(t,i,r)}function ve(e,t){var n,r=t.name,i=t.addInitializer;return yt(e)||(e=ir(e)),(n=this.u)!=null&&n.bound&&i((function(){var e=this[r].bind(this);e.isMobXFlow=!0,this[r]=e})),e}function ye(e,t,n,r,i,a){a===void 0&&(a=R.safeDescriptors);var o=r.value;return yt(o)||(o=ir(o)),i&&((o=o.bind(e.v??e.h)).isMobXFlow=!0),{value:o,configurable:!a||e.p,enumerable:!1,writable:!a}}function be(e,t){return{i:e,u:t,o:xe,s:Se,t:Ce}}function xe(e,t,n){return this.s(e,t,n,!1)===null?0:1}function Se(e,t,n,r){return e.m(t,ee({},this.u,{get:n.get,set:n.set}),r)}function Ce(e,t){var n=this,r=t.name;return(0,t.addInitializer)((function(){var t=Ut(this)[P],i=ee({},n.u,{get:e,context:this});i.name||=`ObservableObject.`+r.toString(),t.j.set(r,new Ln(i))})),function(){return this[P].O(r)}}function we(e,t){return{i:e,u:t,o:Te,s:Ee,t:De}}function Te(e,t,n){return this.s(e,t,n,!1)===null?0:1}function Ee(e,t,n,r){return e.g(t,n.value,this.u?.enhancer??le,r)}function De(e,t){function n(e,t){var n=Ut(e)[P],i=new Fn(t,r.u?.enhancer??le,`ObservableObject.`+a.toString(),!1);n.j.set(a,i),o.add(e)}var r=this,i=t.kind,a=t.name,o=new WeakSet;if(i==`accessor`)return{get:function(){return o.has(this)||n(this,e.get.call(this)),this[P].O(a)},set:function(e){return o.has(this)||n(this,e),this[P].S(a,e)},init:function(e){return o.has(this)||n(this,e),e}}}function Oe(e){return{i:`true`,u:e,o:ke,s:Ae,t:je}}function ke(e,t,n,r){var i,a,o;if(n.get)return An.o(e,t,n,r);if(n.set){var s=lt(n.set)?n.set:Pe(t.toString(),n.set);return r===e.h?e.l(t,{configurable:!R.safeDescriptors||e.p,set:s})===null?0:2:(on(r,t,{configurable:!0,set:s}),2)}if(r!==e.h&&typeof n.value==`function`)return l(n.value)?((o=this.u)!=null&&o.autoBind?ir.bound:ir).o(e,t,n,r):((a=this.u)!=null&&a.autoBind?Qn.bound:Qn).o(e,t,n,r);var c=!1===this.u?.deep?Dn.ref:Dn;return typeof n.value==`function`&&(i=this.u)!=null&&i.autoBind&&(n.value=n.value.bind(e.v??e.h)),c.o(e,t,n,r)}function Ae(e,t,n,r){var i;return n.get?An.s(e,t,n,r):n.set?e.l(t,{configurable:!R.safeDescriptors||e.p,set:Pe(t.toString(),n.set)},r):(typeof n.value==`function`&&(i=this.u)!=null&&i.autoBind&&(n.value=n.value.bind(e.v??e.h)),(!1===this.u?.deep?Dn.ref:Dn).s(e,t,n,r))}function je(){t(`'`+this.i+`' cannot be used as a decorator`)}function Me(e){return e||xn}function D(e){return!0===e.deep?le:!1===e.deep?ue:(t=e.defaultDecorator)&&(n=(r=t.u)?.enhancer)!=null?n:le;var t,n,r}function Ne(e,t,n){return se(t)?Sn.t(e,t):o(t)?void oe(e,t,Sn):St(e)?e:c(e)?Dn.object(e,t,n):Array.isArray(e)?Dn.array(e,t):p(e)?Dn.map(e,t):m(e)?Dn.set(e,t):typeof e==`object`&&e?e:Dn.box(e,t)}function Pe(e,t,n,r){function i(){return Fe(0,n,t,r||this,arguments)}return n===void 0&&(n=!1),i.isMobxAction=!0,i.toString=function(){return t.toString()},Nn&&(Pn.value=e,on(i,`name`,Pn)),i}function Fe(e,t,n,r,i){var a=Ie(0,t);try{return n.apply(r,i)}catch(e){throw a._=e,e}finally{Le(a)}}function Ie(e,t){var n=R.trackingDerivation,r=!t||!n;et();var i=R.allowStateChanges;r&&(Ke(),i=ze(!0));var a={A:r,k:n,M:i,V:Je(!0),R:!1,N:0,T:Mn++,C:jn};return jn=a.T,a}function Le(e){jn!==e.T&&t(30),jn=e.C,e._!==void 0&&(R.suppressReactionErrors=!0),Be(e.M),Ye(e.V),tt(),e.A&&qe(e.k),R.suppressReactionErrors=!1}function Re(e,t){var n=ze(e);try{return t()}finally{Be(n)}}function ze(e){var t=R.allowStateChanges;return R.allowStateChanges=e,t}function Be(e){R.allowStateChanges=e}function Ve(e){return e instanceof zn}function He(e){switch(e.I){case I.L:return!1;case I.P:case I.K:return!0;case I.B:for(var t=Je(!0),n=Ke(),r=e.D,i=r.length,a=0;a<i;a++){var o=r[a];if(L(o)){if(R.disableErrorBoundaries)o.get();else try{o.get()}catch{return qe(n),Ye(t),!0}if(e.I===I.K)return qe(n),Ye(t),!0}}return Xe(e),qe(n),Ye(t),!1}}function Ue(e,t,n){var r=Je(!0);Xe(e),e.W=Array(e.q===0?100:e.D.length),e.G=0,e.q=++R.runId;var i,a=R.trackingDerivation;if(R.trackingDerivation=e,R.inBatch++,!0===R.disableErrorBoundaries)i=t.call(n);else try{i=t.call(n)}catch(e){i=new zn(e)}return R.inBatch--,R.trackingDerivation=a,function(e){for(var t=e.D,n=e.D=e.W,r=I.L,i=0,a=e.G,o=0;o<a;o++){var s=n[o];s.diffValue===0&&(s.diffValue=1,i!==o&&(n[i]=s),i++),s.I>r&&(r=s.I)}for(n.length=i,e.W=null,a=t.length;a--;){var c=t[a];c.diffValue===0&&Qe(c,e),c.diffValue=0}for(;i--;){var l=n[i];l.diffValue===1&&(l.diffValue=0,Ze(l,e))}r!==I.L&&(e.I=r,e.H())}(e),Ye(r),i}function We(e){var t=e.D;e.D=[];for(var n=t.length;n--;)Qe(t[n],e);e.I=I.P}function Ge(e){var t=Ke();try{return e()}finally{qe(t)}}function Ke(){var e=R.trackingDerivation;return R.trackingDerivation=null,e}function qe(e){R.trackingDerivation=e}function Je(e){var t=R.allowStateReads;return R.allowStateReads=e,t}function Ye(e){R.allowStateReads=e}function Xe(e){if(e.I!==I.L){e.I=I.L;for(var t=e.D,n=t.length;n--;)t[n].U=I.L}}function Ze(e,t){e.F.add(t),e.U>t.I&&(e.U=t.I)}function Qe(e,t){e.F.delete(t),e.F.size===0&&$e(e)}function $e(e){!1===e.isPendingUnobservation&&(e.isPendingUnobservation=!0,R.pendingUnobservations.push(e))}function et(){R.inBatch++}function tt(){if(--R.inBatch==0){it();for(var e=R.pendingUnobservations,t=0;t<e.length;t++){var n=e[t];n.isPendingUnobservation=!1,n.F.size===0&&(n.isBeingObserved&&(n.isBeingObserved=!1,n.onBUO()),n instanceof Ln&&n.X())}R.pendingUnobservations=[]}}function nt(e){var t=R.trackingDerivation;return t===null?(e.F.size===0&&R.inBatch>0&&$e(e),!1):(t.q!==e.$&&(e.$=t.q,t.W[t.G++]=e,!e.isBeingObserved&&R.trackingContext&&(e.isBeingObserved=!0,e.onBO())),e.isBeingObserved)}function rt(e){e.U!==I.K&&(e.U=I.K,e.F.forEach((function(e){e.I===I.L&&e.H(),e.I=I.K})))}function it(){R.inBatch>0||R.isRunningReactions||Gn(at)}function at(){R.isRunningReactions=!0;for(var e=R.pendingReactions,t=0;e.length>0;){++t==100&&(console.error(`[mobx] cycle in reaction: `+e[0]),e.splice(0));for(var n=e.splice(0),r=0,i=n.length;r<i;r++)n[r].J()}R.isRunningReactions=!1}function ot(){return console.warn(`[mobx.spy] Is a no-op in production builds`),function(){}}function st(e){return function(t,n){return a(t)?Pe(t.name||`<unnamed action>`,t,e):a(n)?Pe(t,n,e):se(n)?(e?Yn:qn).t(t,n):o(n)?oe(t,n,e?Yn:qn):o(t)?T(de(e?`autoAction`:`action`,{name:t,autoAction:e})):void 0}}function ct(e){return Fe(0,!1,e,this,void 0)}function lt(e){return a(e)&&!0===e.isMobxAction}function ut(e,t){function n(){e(i)}var r;t===void 0&&(t=ln);var i,a=t?.name??`Autorun`;if(t.scheduler||t.delay){var o=dt(t),s=!1;i=new Wn(a,(function(){s||(s=!0,o((function(){s=!1,i.isDisposed||i.track(n)})))}),t.onError,t.requiresObservable)}else i=new Wn(a,(function(){this.track(n)}),t.onError,t.requiresObservable);return(r=t)!=null&&(r=r.signal)!=null&&r.aborted||i.Y(),i.Z(t?.signal)}function dt(e){return e.scheduler?e.scheduler:e.delay?function(t){return setTimeout(t,e.delay)}:$n}function ft(e,t,n){return mt(`onBO`,e,t,n)}function pt(e,t,n){return mt(`onBUO`,e,t,n)}function mt(e,t,n,r){var i=typeof r==`function`?Xt(t,n):Xt(t),o=a(r)?r:n,s=e+`L`;return i[s]?i[s].add(o):i[s]=new Set([o]),function(){var e=i[s];e&&(e.delete(o),e.size===0&&delete i[s])}}function ht(e,t,n,r){var i=mn(t);return $t((function(){var t=Ut(e,r)[P];pn(i).forEach((function(e){t.s(e,i[e],!n||!(e in n)||n[e])}))})),e}function gt(e){var t,n={name:e.tt};return e.D&&e.D.length>0&&(n.dependencies=(t=e.D,Array.from(new Set(t))).map(gt)),n}function _t(e){var t={name:e.tt};return function(e){return e.F&&e.F.size>0}(e)&&(t.observers=Array.from(function(e){return e.F}(e)).map(_t)),t}function vt(e){a(e.cancel)&&e.cancel()}function yt(e){return!0===e?.isMobXFlow}function bt(e,t){return t===void 0?L(e):!1===Gt(e)||!e[P].j.has(t)?!1:L(Xt(e,t))}function xt(e,t){return!!e&&(t===void 0?Gt(e)||!!e[P]||_n(e)||Kn(e)||L(e):!!Gt(e)&&e[P].j.has(t))}function St(e){return xt(e)}function Ct(e){return Gt(e)?e[P].nt():_r(e)||br(e)?Array.from(e.keys()):Bt(e)?e.map((function(e,t){return t})):void t(5)}function wt(e,n){return Gt(e)?e[P].it(n):_r(e)||br(e)?e.has(n):Bt(e)?n>=0&&n<e.length:void t(10)}function Tt(e){if(Gt(e))return e[P].rt();t(38)}function Et(e,t,n){return e.set(t,n),n}function Dt(e,t){t===void 0&&(t=void 0),et();try{return e.apply(t)}finally{tt()}}function Ot(e,t,n){var r;if(typeof n.timeout==`number`){var i=Error(`WHEN_TIMEOUT`);r=setTimeout((function(){if(!o[P].isDisposed){if(o(),!n.onError)throw i;n.onError(i)}}),n.timeout)}n.name=`When`;var a=Pe(`When-effect`,t),o=ut((function(t){Re(!1,e)&&(t.dispose(),r&&clearTimeout(r),a())}),n);return o}function kt(e,t){var n,r,i;if(t!=null&&(n=t.signal)!=null&&n.aborted)return Object.assign(Promise.reject(Error(`WHEN_ABORTED`)),{cancel:function(){return null}});var a=new Promise((function(n,a){var o,s=Ot(e,n,ee({},t,{onError:a}));r=function(){s(),a(Error(`WHEN_CANCELLED`))},i=function(){s(),a(Error(`WHEN_ABORTED`))},t==null||(o=t.signal)==null||o.addEventListener==null||o.addEventListener(`abort`,i)})).finally((function(){var e;return t==null||(e=t.signal)==null||e.removeEventListener==null?void 0:e.removeEventListener(`abort`,i)}));return a.cancel=r,a}function At(e){return e[P]}function jt(e){return e.et!==void 0&&e.et.length>0}function Mt(e,t){var n=e.et||=[];return n.push(t),i((function(){var e=n.indexOf(t);e!==-1&&n.splice(e,1)}))}function Nt(e,n){var r=Ke();try{for(var i=[].concat(e.et||[]),a=0,o=i.length;a<o&&((n=i[a](n))&&!n.type&&t(14),n);a++);return n}finally{qe(r)}}function Pt(e){return e.ut!==void 0&&e.ut.length>0}function Ft(e,t){var n=e.ut||=[];return n.push(t),i((function(){var e=n.indexOf(t);e!==-1&&n.splice(e,1)}))}function It(e,t){var n=Ke(),r=e.ut;if(r){for(var i=0,a=(r=r.slice()).length;i<a;i++)r[i](t);qe(n)}}function Lt(e,t,n,i){return n===void 0&&(n=`ObservableArray`),i===void 0&&(i=!1),r(),$t((function(){var r=new lr(n,t,i,!1);d(r.j,P,r);var a=new Proxy(r.j,cr);return r.v=a,e&&e.length&&r.ot(0,0,e),a}))}function O(e,t){typeof Array.prototype[e]==`function`&&(ur[e]=t(e))}function Rt(e){return function(){var t=this[P];t.st.reportObserved();var n=t.ft(t.j);return n[e].apply(n,arguments)}}function k(e){return function(t,n){var r=this,i=this[P];return i.st.reportObserved(),i.ft(i.j)[e]((function(e,i){return t.call(n,e,i,r)}))}}function zt(e){return function(){var t=this,n=this[P];n.st.reportObserved();var r=n.ft(n.j),i=arguments[0];return arguments[0]=function(e,n,r){return i(e,n,r,t)},r[e].apply(r,arguments)}}function Bt(e){return s(e)&&pr(e[P])}function Vt(e){return e[Symbol.toStringTag]=`MapIterator`,tn(e)}function Ht(e){return e[Symbol.toStringTag]=`SetIterator`,tn(e)}function Ut(e,t){if(g(e,P))return e;var n=t?.name??`ObservableObject`;return u(e,P,new Sr(e,new Map,String(n),function(e){return e?e.defaultDecorator??Oe(e):void 0}(t))),e}function Wt(e){return xr[e]||(xr[e]={get:function(){return this[P].O(e)},set:function(t){return this[P].S(e,t)}})}function Gt(e){return!!s(e)&&z(e[P])}function Kt(e,t,n){var r;(r=e.h[hn])==null||delete r[n]}function qt(e){return{enumerable:!1,configurable:!0,get:function(){return this[P].ct(e)},set:function(t){this[P].ht(e,t)}}}function A(e){on(Dr.prototype,``+e,qt(e))}function Jt(e){if(e>Tr){for(var t=Tr;t<e+100;t++)A(t);Tr=e}}function Yt(e,t,n){return new Dr(e,t,n)}function Xt(e,n){if(typeof e==`object`&&e){if(Bt(e))return n!==void 0&&t(23),e[P].st;if(br(e))return e.st;if(_r(e)){if(n===void 0)return e.lt;var r=e.vt.get(n)||e.dt.get(n);return r||t(25,n,Qt(e)),r}if(Gt(e)){if(!n)return t(26);var i=e[P].j.get(n);return i||t(27,n,Qt(e)),i}if(_n(e)||L(e)||Kn(e))return e}else if(a(e)&&Kn(e[P]))return e[P];t(28)}function Zt(e,n){return e||t(29),n===void 0?_n(e)||L(e)||Kn(e)||_r(e)||br(e)?e:e[P]?e[P]:void t(24,e):Zt(Xt(e,n))}function Qt(e,t){var n;if(t!==void 0)n=Xt(e,t);else{if(lt(e))return e.name;n=Gt(e)||_r(e)||br(e)?Zt(e):Xt(e)}return n.tt}function $t(e){var t=Ke(),n=ze(!0);et();try{return e()}finally{tt(),Be(n),qe(t)}}function en(e,t,n){return n===void 0&&(n=-1),function e(t,n,r,i,o){if(t===n)return t!==0||1/t==1/n;if(t==null||n==null)return!1;if(t!=t)return n!=n;var s=typeof t;if(s!==`function`&&s!==`object`&&typeof n!=`object`)return!1;var c=Or.call(t);if(c!==Or.call(n))return!1;switch(c){case`[object RegExp]`:case`[object String]`:return``+t==``+n;case`[object Number]`:return+t==+t?+t==0?1/t==1/n:+t==+n:+n!=+n;case`[object Date]`:case`[object Boolean]`:return+t==+n;case`[object Symbol]`:return typeof Symbol<`u`&&Symbol.valueOf.call(t)===Symbol.valueOf.call(n);case`[object Map]`:case`[object Set]`:r>=0&&r++}t=j(t),n=j(n);var l=c===`[object Array]`;if(!l){if(typeof t!=`object`||typeof n!=`object`)return!1;var u=t.constructor,d=n.constructor;if(u!==d&&!(a(u)&&u instanceof u&&a(d)&&d instanceof d)&&`constructor`in t&&`constructor`in n)return!1}if(r===0)return!1;r<0&&(r=-1),o||=[];for(var f=(i||=[]).length;f--;)if(i[f]===t)return o[f]===n;if(i.push(t),o.push(n),l){if((f=t.length)!==n.length)return!1;for(;f--;)if(!e(t[f],n[f],r-1,i,o))return!1}else{var p=Object.keys(t),m=p.length;if(Object.keys(n).length!==m)return!1;for(var h=0;h<m;h++){var _=p[h];if(!g(n,_)||!e(t[_],n[_],r-1,i,o))return!1}}return i.pop(),o.pop(),!0}(e,t,n)}function j(e){return Bt(e)?e.slice():p(e)||_r(e)||m(e)||br(e)?Array.from(e.entries()):e}function tn(e){return e[Symbol.iterator]=nn,Object.assign(Object.create(kr),e)}function nn(){return this}Object.defineProperty(e,`__esModule`,{value:!0});var rn={},M=Object.assign,an=Object.getOwnPropertyDescriptor,on=Object.defineProperty,sn=Object.prototype,cn=[];Object.freeze(cn);var ln={};Object.freeze(ln);var N=typeof Proxy<`u`,un=Object.toString(),dn=function(){},fn=Object.getOwnPropertySymbols!==void 0,pn=typeof Reflect<`u`&&Reflect.ownKeys?Reflect.ownKeys:fn?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames,mn=Object.getOwnPropertyDescriptors||function(e){var t={};return pn(e).forEach((function(n){t[n]=an(e,n)})),t},hn=Symbol(`mobx-stored-annotations`),P=Symbol(`mobx administration`),gn=function(){function e(e){e===void 0&&(e=`Atom`),this.tt=void 0,this.bt=0,this.F=new Set,this.$=0,this.U=I.P,this.onBOL=void 0,this.onBUOL=void 0,this.tt=e}var t=e.prototype;return t.onBO=function(){this.onBOL&&this.onBOL.forEach((function(e){return e()}))},t.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(e){return e()}))},t.reportObserved=function(){return nt(this)},t.reportChanged=function(){et(),rt(this),tt()},t.toString=function(){return this.tt},S(e,[{key:`isBeingObserved`,get:function(){return _(this.bt,e.pt)},set:function(t){this.bt=v(this.bt,e.pt,t)}},{key:`isPendingUnobservation`,get:function(){return _(this.bt,e.yt)},set:function(t){this.bt=v(this.bt,e.yt,t)}},{key:`diffValue`,get:function(){return+!!_(this.bt,e.wt)},set:function(t){this.bt=v(this.bt,e.wt,t===1)}}])}();gn.pt=1,gn.yt=2,gn.wt=4;var _n=f(`Atom`,gn),vn={identity:function(e,t){return e===t},structural:function(e,t){return en(e,t)},default:function(e,t){return Object.is?Object.is(e,t):e===t?e!==0||1/e==1/t:e!=e&&t!=t},shallow:function(e,t){return en(e,t,1)}},yn=T({i:`override`,o:function(){return 0},s:function(){t(`'`+this.i+`' can only be used with 'makeObservable'`)},t:function(){console.warn(`'`+this.i+`' cannot be used with decorators - this is a no-op`)}}),bn=Oe(),xn={deep:!0,name:void 0,defaultDecorator:void 0,proxy:!0};Object.freeze(xn);var Sn=we(`observable`),Cn=we(`observable.ref`,{enhancer:ue}),F=we(`observable.shallow`,{enhancer:function(e,t,n){return e==null||Gt(e)||Bt(e)||_r(e)||br(e)?e:Array.isArray(e)?Dn.array(e,{name:n,deep:!1}):c(e)?Dn.object(e,void 0,{name:n,deep:!1}):p(e)?Dn.map(e,{name:n,deep:!1}):m(e)?Dn.set(e,{name:n,deep:!1}):void 0}}),wn=we(`observable.struct`,{enhancer:function(e,t){return en(e,t)?t:e}}),Tn=T(Sn);M(Ne,Tn);var En,Dn=M(Ne,{box:function(e,t){var n=Me(t);return new Fn(e,D(n),n.name,!0,n.equals)},array:function(e,t){var n=Me(t);return(!1===R.useProxies||!1===n.proxy?Yt:Lt)(e,D(n),n.name)},map:function(e,t){var n=Me(t);return new gr(e,D(n),n.name)},set:function(e,t){var n=Me(t);return new yr(e,D(n),n.name)},object:function(e,t,n){return $t((function(){return ht(!1===R.useProxies||!1===n?.proxy?Ut({},n):function(e,t){var n;return r(),(n=(e=Ut(e,t))[P]).v??(n.v=new Proxy(e,ar))}({},n),e,t)}))},ref:T(Cn),shallow:T(F),deep:Tn,struct:T(wn)}),On=be(`computed`),kn=be(`computed.struct`,{equals:vn.structural}),An=function(e,t){if(se(t))return On.t(e,t);if(o(t))return oe(e,t,On);if(c(e))return T(be(`computed`,e));var n=c(t)?t:{};return n.get=e,n.name||=e.name||``,new Ln(n)};Object.assign(An,On),An.struct=T(kn);var jn=0,Mn=1,Nn=(En=an((function(){}),`name`)?.configurable)!=null&&En,Pn={value:`action`,configurable:!0,writable:!1,enumerable:!1},Fn=function(e){function t(t,n,r,i,a){var o;return r===void 0&&(r=`ObservableValue`),a===void 0&&(a=vn.default),(o=e.call(this,r)||this).enhancer=void 0,o.tt=void 0,o.equals=void 0,o.jt=!1,o.et=void 0,o.ut=void 0,o.Ot=void 0,o.dehancer=void 0,o.enhancer=n,o.tt=r,o.equals=a,o.Ot=n(t,void 0,r),o}ne(t,e);var n=t.prototype;return n.dehanceValue=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.set=function(e){(e=this.xt(e))!==R.UNCHANGED&&this.gt(e)},n.xt=function(e){if(jt(this)){var t=Nt(this,{object:this,type:sr,newValue:e});if(!t)return R.UNCHANGED;e=t.newValue}return e=this.enhancer(e,this.Ot,this.tt),this.equals(this.Ot,e)?R.UNCHANGED:e},n.gt=function(e){var t=this.Ot;this.Ot=e,this.reportChanged(),Pt(this)&&It(this,{type:sr,object:this,newValue:e,oldValue:t})},n.get=function(){return this.reportObserved(),this.dehanceValue(this.Ot)},n.St=function(e){return Mt(this,e)},n._t=function(e,t){return t&&e({observableKind:`value`,debugObjectName:this.tt,object:this,type:sr,newValue:this.Ot,oldValue:void 0}),Ft(this,e)},n.raw=function(){return this.Ot},n.toJSON=function(){return this.get()},n.toString=function(){return this.tt+`[`+this.Ot+`]`},n.valueOf=function(){return h(this.get())},n[Symbol.toPrimitive]=function(){return this.valueOf()},t}(gn),In=f(`ObservableValue`,Fn),Ln=function(){function e(e){this.I=I.P,this.D=[],this.W=null,this.F=new Set,this.q=0,this.$=0,this.U=I.L,this.G=0,this.Ot=new zn(null),this.tt=void 0,this.At=void 0,this.bt=0,this.derivation=void 0,this.kt=void 0,this.Mt=Rn.NONE,this.Et=void 0,this.Vt=void 0,this.Rt=void 0,this.Nt=void 0,this.onBOL=void 0,this.onBUOL=void 0,e.get||t(31),this.derivation=e.get,this.tt=e.name||`ComputedValue`,e.set&&(this.kt=Pe(`ComputedValue-setter`,e.set)),this.Vt=e.equals||(e.compareStructural||e.struct?vn.structural:vn.default),this.Et=e.context,this.Rt=e.requiresReaction,this.Nt=!!e.keepAlive}var n=e.prototype;return n.H=function(){(function(e){e.U===I.L&&(e.U=I.B,e.F.forEach((function(e){e.I===I.L&&(e.I=I.B,e.H())})))})(this)},n.onBO=function(){this.onBOL&&this.onBOL.forEach((function(e){return e()}))},n.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(e){return e()}))},n.get=function(){if(this.isComputing&&t(32,this.tt,this.derivation),R.inBatch!==0||this.F.size!==0||this.Nt){if(nt(this),He(this)){var e=R.trackingContext;this.Nt&&!e&&(R.trackingContext=this),this.trackAndCompute()&&function(e){e.U!==I.K&&(e.U=I.K,e.F.forEach((function(t){t.I===I.B?t.I=I.K:t.I===I.L&&(e.U=I.L)})))}(this),R.trackingContext=e}}else He(this)&&(this.Tt(),et(),this.Ot=this.Ct(!1),tt());var n=this.Ot;if(Ve(n))throw n.cause;return n},n.set=function(e){if(this.kt){this.isRunningSetter&&t(33,this.tt),this.isRunningSetter=!0;try{this.kt.call(this.Et,e)}finally{this.isRunningSetter=!1}}else t(34,this.tt)},n.trackAndCompute=function(){var e=this.Ot,t=this.I===I.P,n=this.Ct(!0),r=t||Ve(e)||Ve(n)||!this.Vt(e,n);return r&&(this.Ot=n),r},n.Ct=function(e){this.isComputing=!0;var t,n=ze(!1);if(e)t=Ue(this,this.derivation,this.Et);else if(!0===R.disableErrorBoundaries)t=this.derivation.call(this.Et);else try{t=this.derivation.call(this.Et)}catch(e){t=new zn(e)}return Be(n),this.isComputing=!1,t},n.X=function(){this.Nt||(We(this),this.Ot=void 0)},n._t=function(e,t){var n=this,r=!0,i=void 0;return ut((function(){var a=n.get();if(!r||t){var o=Ke();e({observableKind:`computed`,debugObjectName:n.tt,type:sr,object:n,newValue:a,oldValue:i}),qe(o)}r=!1,i=a}))},n.Tt=function(){},n.toString=function(){return this.tt+`[`+this.derivation.toString()+`]`},n.valueOf=function(){return h(this.get())},n[Symbol.toPrimitive]=function(){return this.valueOf()},S(e,[{key:`isComputing`,get:function(){return _(this.bt,e.It)},set:function(t){this.bt=v(this.bt,e.It,t)}},{key:`isRunningSetter`,get:function(){return _(this.bt,e.Lt)},set:function(t){this.bt=v(this.bt,e.Lt,t)}},{key:`isBeingObserved`,get:function(){return _(this.bt,e.pt)},set:function(t){this.bt=v(this.bt,e.pt,t)}},{key:`isPendingUnobservation`,get:function(){return _(this.bt,e.yt)},set:function(t){this.bt=v(this.bt,e.yt,t)}},{key:`diffValue`,get:function(){return+!!_(this.bt,e.wt)},set:function(t){this.bt=v(this.bt,e.wt,t===1)}}])}();Ln.It=1,Ln.Lt=2,Ln.pt=4,Ln.yt=8,Ln.wt=16;var I,Rn,L=f(`ComputedValue`,Ln);(function(e){e[e.P=-1]=`NOT_TRACKING_`,e[e.L=0]=`UP_TO_DATE_`,e[e.B=1]=`POSSIBLY_STALE_`,e[e.K=2]=`STALE_`})(I||={}),function(e){e[e.NONE=0]=`NONE`,e[e.LOG=1]=`LOG`,e[e.BREAK=2]=`BREAK`}(Rn||={});var zn=function(e){this.cause=void 0,this.cause=e},Bn=[`mobxGuid`,`spyListeners`,`enforceActions`,`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`allowStateReads`,`disableErrorBoundaries`,`runId`,`UNCHANGED`,`useProxies`],Vn=function(){this.version=6,this.UNCHANGED={},this.trackingDerivation=null,this.trackingContext=null,this.runId=0,this.mobxGuid=0,this.inBatch=0,this.pendingUnobservations=[],this.pendingReactions=[],this.isRunningReactions=!1,this.allowStateChanges=!1,this.allowStateReads=!0,this.enforceActions=!0,this.spyListeners=[],this.globalReactionErrorHandlers=[],this.computedRequiresReaction=!1,this.reactionRequiresObservable=!1,this.observableRequiresReaction=!1,this.disableErrorBoundaries=!1,this.suppressReactionErrors=!1,this.useProxies=!0,this.verifyProxies=!1,this.safeDescriptors=!0},Hn=!0,Un=!1,R=function(){var e=n();return e.__mobxInstanceCount>0&&!e.__mobxGlobals&&(Hn=!1),e.__mobxGlobals&&e.__mobxGlobals.version!==new Vn().version&&(Hn=!1),Hn?e.__mobxGlobals?(e.__mobxInstanceCount+=1,e.__mobxGlobals.UNCHANGED||(e.__mobxGlobals.UNCHANGED={}),e.__mobxGlobals):(e.__mobxInstanceCount=1,e.__mobxGlobals=new Vn):(setTimeout((function(){Un||t(35)}),1),new Vn)}(),Wn=function(){function e(e,t,n,r){e===void 0&&(e=`Reaction`),this.tt=void 0,this.Pt=void 0,this.Kt=void 0,this.Bt=void 0,this.D=[],this.W=[],this.I=I.P,this.q=0,this.G=0,this.bt=0,this.Mt=Rn.NONE,this.tt=e,this.Pt=t,this.Kt=n,this.Bt=r}var t=e.prototype;return t.H=function(){this.Y()},t.Y=function(){this.isScheduled||(this.isScheduled=!0,R.pendingReactions.push(this),it())},t.J=function(){if(!this.isDisposed){et(),this.isScheduled=!1;var e=R.trackingContext;if(R.trackingContext=this,He(this)){this.isTrackPending=!0;try{this.Pt()}catch(e){this.Dt(e)}}R.trackingContext=e,tt()}},t.track=function(e){if(!this.isDisposed){et(),this.isRunning=!0;var t=R.trackingContext;R.trackingContext=this;var n=Ue(this,e,void 0);R.trackingContext=t,this.isRunning=!1,this.isTrackPending=!1,this.isDisposed&&We(this),Ve(n)&&this.Dt(n.cause),tt()}},t.Dt=function(e){var t=this;if(this.Kt)this.Kt(e,this);else{if(R.disableErrorBoundaries)throw e;R.suppressReactionErrors||console.error(`[mobx] uncaught error in '`+this+`'`,e),R.globalReactionErrorHandlers.forEach((function(n){return n(e,t)}))}},t.dispose=function(){this.isDisposed||(this.isDisposed=!0,this.isRunning||(et(),We(this),tt()))},t.Z=function(e){var t=this,n=function n(){t.dispose(),e==null||e.removeEventListener==null||e.removeEventListener(`abort`,n)};return e==null||e.addEventListener==null||e.addEventListener(`abort`,n),n[P]=this,`dispose`in Symbol&&typeof Symbol.dispose==`symbol`&&(n[Symbol.dispose]=n),n},t.toString=function(){return`Reaction[`+this.tt+`]`},t.trace=function(){},S(e,[{key:`isDisposed`,get:function(){return _(this.bt,e.Wt)},set:function(t){this.bt=v(this.bt,e.Wt,t)}},{key:`isScheduled`,get:function(){return _(this.bt,e.qt)},set:function(t){this.bt=v(this.bt,e.qt,t)}},{key:`isTrackPending`,get:function(){return _(this.bt,e.Gt)},set:function(t){this.bt=v(this.bt,e.Gt,t)}},{key:`isRunning`,get:function(){return _(this.bt,e.Ht)},set:function(t){this.bt=v(this.bt,e.Ht,t)}},{key:`diffValue`,get:function(){return+!!_(this.bt,e.wt)},set:function(t){this.bt=v(this.bt,e.wt,t===1)}}])}();Wn.Wt=1,Wn.qt=2,Wn.Gt=4,Wn.Ht=8,Wn.wt=16;var Gn=function(e){return e()},Kn=f(`Reaction`,Wn),qn=de(`action`),Jn=de(`action.bound`,{bound:!0}),Yn=de(`autoAction`,{autoAction:!0}),Xn=de(`autoAction.bound`,{autoAction:!0,bound:!0}),Zn=st(!1);Object.assign(Zn,qn);var Qn=st(!0);Object.assign(Qn,Yn),Zn.bound=T(Jn),Qn.bound=T(Xn);var $n=function(e){return e()},er=0,tr=function(e){function t(){var n;return n=e.call(this,`FLOW_CANCELLED`)||this,Object.setPrototypeOf(n,(this instanceof t?this.constructor:void 0).prototype),n.name=`FlowCancellationError`,n}return ne(t,e),t.prototype.toString=function(){return`Error: `+this.message},t}(w(Error)),nr=ge(`flow`),rr=ge(`flow.bound`,{bound:!0}),ir=Object.assign((function(e,t){if(se(t))return nr.t(e,t);if(o(t))return oe(e,t,nr);var n=e,r=n.name||`<unnamed flow>`,i=function(){var e,t=this,i=arguments,o=++er,s=Zn(r+` - runid: `+o+` - init`,n).apply(t,i),c=void 0,l=new Promise((function(t,n){function i(e){var t;c=void 0;try{t=Zn(r+` - runid: `+o+` - yield `+ d++,s.next).call(s,e)}catch(e){return n(e)}u(t)}function l(e){var t;c=void 0;try{t=Zn(r+` - runid: `+o+` - yield `+ d++,s.throw).call(s,e)}catch(e){return n(e)}u(t)}function u(e){if(!a(e?.then))return e.done?t(e.value):(c=Promise.resolve(e.value)).then(i,l);e.then(u,n)}var d=0;e=n,i(void 0)}));return l.cancel=Zn(r+` - runid: `+o+` - cancel`,(function(){try{c&&vt(c);var t=s.return(void 0),n=Promise.resolve(t.value);n.then(dn,dn),vt(n),e(new tr)}catch(t){e(t)}})),l};return i.isMobXFlow=!0,i}),nr);ir.bound=T(rr);var ar={has:function(e,t){return At(e).it(t)},get:function(e,t){return At(e).ct(t)},set:function(e,t,n){var r;return!!o(t)&&((r=At(e).ht(t,n,!0))==null||r)},deleteProperty:function(e,t){var n;return!!o(t)&&((n=At(e).Ut(t,!0))==null||n)},defineProperty:function(e,t,n){var r;return(r=At(e).l(t,n))==null||r},ownKeys:function(e){return At(e).rt()},preventExtensions:function(){t(13)}},or=Symbol(`mobx-keys`),sr=`update`,cr={get:function(e,t){var n=e[P];return t===P?n:t===`length`?n.Ft():typeof t!=`string`||isNaN(t)?g(ur,t)?ur[t]:e[t]:n.ct(parseInt(t))},set:function(e,t,n){var r=e[P];return t===`length`&&r.Xt(n),typeof t==`symbol`||isNaN(t)?e[t]=n:r.ht(parseInt(t),n),!0},preventExtensions:function(){t(15)}},lr=function(){function e(e,t,n,r){e===void 0&&(e=`ObservableArray`),this.zt=void 0,this.$t=void 0,this.st=void 0,this.j=[],this.et=void 0,this.ut=void 0,this.Jt=void 0,this.dehancer=void 0,this.v=void 0,this.Yt=0,this.zt=n,this.$t=r,this.st=new gn(e),this.Jt=function(e,n){return t(e,n,`ObservableArray[..]`)}}var n=e.prototype;return n.Qt=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.ft=function(e){return this.dehancer!==void 0&&e.length>0?e.map(this.dehancer):e},n.St=function(e){return Mt(this,e)},n._t=function(e,t){return t===void 0&&(t=!1),t&&e({observableKind:`array`,object:this.v,debugObjectName:this.st.tt,type:`splice`,index:0,added:this.j.slice(),addedCount:this.j.length,removed:[],removedCount:0}),Ft(this,e)},n.Ft=function(){return this.st.reportObserved(),this.j.length},n.Xt=function(e){(typeof e!=`number`||isNaN(e)||e<0)&&t(`Out of range: `+e);var n=this.j.length;if(e!==n)if(e>n){for(var r=Array(e-n),i=0;i<e-n;i++)r[i]=void 0;this.ot(n,0,r)}else this.ot(e,n-e)},n.Zt=function(e,n){e!==this.Yt&&t(16),this.Yt+=n,this.$t&&n>0&&Jt(e+n+1)},n.ot=function(e,t,n){var r=this,i=this.j.length;if(e===void 0?e=0:e>i?e=i:e<0&&(e=Math.max(0,i+e)),t=arguments.length===1?i-e:t==null?0:Math.max(0,Math.min(t,i-e)),n===void 0&&(n=cn),jt(this)){var a=Nt(this,{object:this.v,type:`splice`,index:e,removedCount:t,added:n});if(!a)return cn;t=a.removedCount,n=a.added}if(n=n.length===0?n:n.map((function(e){return r.Jt(e,void 0)})),this.$t){var o=n.length-t;this.Zt(i,o)}var s=this.tn(e,t,n);return t===0&&n.length===0||this.nn(e,n,s),this.ft(s)},n.tn=function(e,t,n){var r;if(n.length<1e4)return(r=this.j).splice.apply(r,[e,t].concat(n));var i=this.j.slice(e,e+t),a=this.j.slice(e+t);this.j.length+=n.length-t;for(var o=0;o<n.length;o++)this.j[e+o]=n[o];for(var s=0;s<a.length;s++)this.j[e+n.length+s]=a[s];return i},n.in=function(e,t,n){var r=!this.zt&&!1,i=Pt(this),a=i||r?{observableKind:`array`,object:this.v,type:sr,debugObjectName:this.st.tt,index:e,newValue:t,oldValue:n}:null;this.st.reportChanged(),i&&It(this,a)},n.nn=function(e,t,n){var r=!this.zt&&!1,i=Pt(this),a=i||r?{observableKind:`array`,object:this.v,debugObjectName:this.st.tt,type:`splice`,index:e,removed:n,added:t,removedCount:n.length,addedCount:t.length}:null;this.st.reportChanged(),i&&It(this,a)},n.ct=function(e){if(!(this.$t&&e>=this.j.length))return this.st.reportObserved(),this.Qt(this.j[e]);console.warn(`[mobx] Out of bounds read: `+e)},n.ht=function(e,n){var r=this.j;if(this.$t&&e>r.length&&t(17,e,r.length),e<r.length){var i=r[e];if(jt(this)){var a=Nt(this,{type:sr,object:this.v,index:e,newValue:n});if(!a)return;n=a.newValue}(n=this.Jt(n,i))!==i&&(r[e]=n,this.in(e,n,i))}else{for(var o=Array(e+1-r.length),s=0;s<o.length-1;s++)o[s]=void 0;o[o.length-1]=n,this.ot(r.length,0,o)}},e}(),ur={clear:function(){return this.splice(0)},replace:function(e){var t=this[P];return t.ot(0,t.j.length,e)},toJSON:function(){return this.slice()},splice:function(e,t){var n=[...arguments].slice(2),r=this[P];switch(arguments.length){case 0:return[];case 1:return r.ot(e);case 2:return r.ot(e,t)}return r.ot(e,t,n)},spliceWithArray:function(e,t,n){return this[P].ot(e,t,n)},push:function(){for(var e=this[P],t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];return e.ot(e.j.length,0,n),e.j.length},pop:function(){return this.splice(Math.max(this[P].j.length-1,0),1)[0]},shift:function(){return this.splice(0,1)[0]},unshift:function(){for(var e=this[P],t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];return e.ot(0,0,n),e.j.length},reverse:function(){return R.trackingDerivation&&t(37,`reverse`),this.replace(this.slice().reverse()),this},sort:function(){R.trackingDerivation&&t(37,`sort`);var e=this.slice();return e.sort.apply(e,arguments),this.replace(e),this},remove:function(e){var t=this[P],n=t.ft(t.j).indexOf(e);return n>-1&&(this.splice(n,1),!0)}};O(`at`,Rt),O(`concat`,Rt),O(`flat`,Rt),O(`includes`,Rt),O(`indexOf`,Rt),O(`join`,Rt),O(`lastIndexOf`,Rt),O(`slice`,Rt),O(`toString`,Rt),O(`toLocaleString`,Rt),O(`toSorted`,Rt),O(`toSpliced`,Rt),O(`with`,Rt),O(`every`,k),O(`filter`,k),O(`find`,k),O(`findIndex`,k),O(`findLast`,k),O(`findLastIndex`,k),O(`flatMap`,k),O(`forEach`,k),O(`map`,k),O(`some`,k),O(`toReversed`,k),O(`reduce`,zt),O(`reduceRight`,zt);var dr,fr,pr=f(`ObservableArrayAdministration`,lr),mr={},hr=`add`,gr=function(){function e(e,n,r){var i=this;n===void 0&&(n=le),r===void 0&&(r=`ObservableMap`),this.Jt=void 0,this.tt=void 0,this[P]=mr,this.vt=void 0,this.dt=void 0,this.lt=void 0,this.et=void 0,this.ut=void 0,this.dehancer=void 0,this.Jt=n,this.tt=r,a(Map)||t(18),$t((function(){i.lt=ce(`ObservableMap.keys()`),i.vt=new Map,i.dt=new Map,e&&i.merge(e)}))}var n=e.prototype;return n.it=function(e){return this.vt.has(e)},n.has=function(e){var t=this;if(!R.trackingDerivation)return this.it(e);var n=this.dt.get(e);if(!n){var r=n=new Fn(this.it(e),ue,`ObservableMap.key?`,!1);this.dt.set(e,r),pt(r,(function(){return t.dt.delete(e)}))}return n.get()},n.set=function(e,t){var n=this.it(e);if(jt(this)){var r=Nt(this,{type:n?sr:hr,object:this,newValue:t,name:e});if(!r)return this;t=r.newValue}return n?this.rn(e,t):this.en(e,t),this},n.delete=function(e){var t=this;if(jt(this)&&!Nt(this,{type:`delete`,object:this,name:e}))return!1;if(this.it(e)){var n=Pt(this),r=n?{observableKind:`map`,debugObjectName:this.tt,type:`delete`,object:this,oldValue:this.vt.get(e).Ot,name:e}:null;return Dt((function(){var n;t.lt.reportChanged(),(n=t.dt.get(e))==null||n.gt(!1),t.vt.get(e).gt(void 0),t.vt.delete(e)})),n&&It(this,r),!0}return!1},n.rn=function(e,t){var n=this.vt.get(e);if((t=n.xt(t))!==R.UNCHANGED){var r=Pt(this),i=r?{observableKind:`map`,debugObjectName:this.tt,type:sr,object:this,oldValue:n.Ot,name:e,newValue:t}:null;n.gt(t),r&&It(this,i)}},n.en=function(e,t){var n=this;Dt((function(){var r,i=new Fn(t,n.Jt,`ObservableMap.key`,!1);n.vt.set(e,i),t=i.Ot,(r=n.dt.get(e))==null||r.gt(!0),n.lt.reportChanged()}));var r=Pt(this);r&&It(this,r?{observableKind:`map`,debugObjectName:this.tt,type:hr,object:this,name:e,newValue:t}:null)},n.get=function(e){return this.has(e)?this.Qt(this.vt.get(e).get()):this.Qt(void 0)},n.Qt=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.keys=function(){return this.lt.reportObserved(),this.vt.keys()},n.values=function(){var e=this,t=this.keys();return Vt({next:function(){var n=t.next(),r=n.done;return{done:r,value:r?void 0:e.get(n.value)}}})},n.entries=function(){var e=this,t=this.keys();return Vt({next:function(){var n=t.next(),r=n.done,i=n.value;return{done:r,value:r?void 0:[i,e.get(i)]}}})},n[Symbol.iterator]=function(){return this.entries()},n.forEach=function(e,t){for(var n,r=C(this);!(n=r()).done;){var i=n.value;e.call(t,i[1],i[0],this)}},n.merge=function(e){var n=this;return _r(e)&&(e=new Map(e)),Dt((function(){var r,i;c(e)?function(e){var t=Object.keys(e);if(!fn)return t;var n=Object.getOwnPropertySymbols(e);return n.length?[].concat(t,n.filter((function(t){return sn.propertyIsEnumerable.call(e,t)}))):t}(e).forEach((function(t){return n.set(t,e[t])})):Array.isArray(e)?e.forEach((function(e){return n.set(e[0],e[1])})):p(e)?(r=Object.getPrototypeOf(e),i=Object.getPrototypeOf(r),Object.getPrototypeOf(i)!==null&&t(19,e),e.forEach((function(e,t){return n.set(t,e)}))):e!=null&&t(20,e)})),this},n.clear=function(){var e=this;Dt((function(){Ge((function(){for(var t,n=C(e.keys());!(t=n()).done;)e.delete(t.value)}))}))},n.replace=function(e){var n=this;return Dt((function(){for(var r,i=function(e){if(p(e)||_r(e))return e;if(Array.isArray(e))return new Map(e);if(c(e)){var n=new Map;for(var r in e)n.set(r,e[r]);return n}return t(21,e)}(e),a=new Map,o=!1,s=C(n.vt.keys());!(r=s()).done;){var l=r.value;if(!i.has(l))if(n.delete(l))o=!0;else{var u=n.vt.get(l);a.set(l,u)}}for(var d,f=C(i.entries());!(d=f()).done;){var m=d.value,h=m[0],g=m[1],_=n.vt.has(h);if(n.set(h,g),n.vt.has(h)){var v=n.vt.get(h);a.set(h,v),_||(o=!0)}}if(!o)if(n.vt.size!==a.size)n.lt.reportChanged();else for(var y=n.vt.keys(),b=a.keys(),x=y.next(),S=b.next();!x.done;){if(x.value!==S.value){n.lt.reportChanged();break}x=y.next(),S=b.next()}n.vt=a})),this},n.toString=function(){return`[object ObservableMap]`},n.toJSON=function(){return Array.from(this)},n._t=function(e){return Ft(this,e)},n.St=function(e){return Mt(this,e)},S(e,[{key:`size`,get:function(){return this.lt.reportObserved(),this.vt.size}},{key:Symbol.toStringTag,get:function(){return`Map`}}])}(),_r=f(`ObservableMap`,gr),vr={},yr=function(){function e(e,n,r){var i=this;n===void 0&&(n=le),r===void 0&&(r=`ObservableSet`),this.tt=void 0,this[P]=vr,this.vt=new Set,this.st=void 0,this.ut=void 0,this.et=void 0,this.dehancer=void 0,this.Jt=void 0,this.tt=r,a(Set)||t(22),this.Jt=function(e,t){return n(e,t,r)},$t((function(){i.st=ce(i.tt),e&&i.replace(e)}))}var n=e.prototype;return n.Qt=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.clear=function(){var e=this;Dt((function(){Ge((function(){for(var t,n=C(e.vt.values());!(t=n()).done;)e.delete(t.value)}))}))},n.forEach=function(e,t){for(var n,r=C(this);!(n=r()).done;){var i=n.value;e.call(t,i,i,this)}},n.add=function(e){var t=this;if(jt(this)){var n=Nt(this,{type:hr,object:this,newValue:e});if(!n)return this;e=n.newValue}if(!this.has(e)){Dt((function(){t.vt.add(t.Jt(e,void 0)),t.st.reportChanged()}));var r=Pt(this);r&&It(this,r?{observableKind:`set`,debugObjectName:this.tt,type:hr,object:this,newValue:e}:null)}return this},n.delete=function(e){var t=this;if(jt(this)&&!Nt(this,{type:`delete`,object:this,oldValue:e}))return!1;if(this.has(e)){var n=Pt(this),r=n?{observableKind:`set`,debugObjectName:this.tt,type:`delete`,object:this,oldValue:e}:null;return Dt((function(){t.st.reportChanged(),t.vt.delete(e)})),n&&It(this,r),!0}return!1},n.has=function(e){return this.st.reportObserved(),this.vt.has(this.Qt(e))},n.entries=function(){var e=this.values();return Ht({next:function(){var t=e.next(),n=t.value,r=t.done;return r?{value:void 0,done:r}:{value:[n,n],done:r}}})},n.keys=function(){return this.values()},n.values=function(){this.st.reportObserved();var e=this,t=this.vt.values();return Ht({next:function(){var n=t.next(),r=n.done;return r?{value:void 0,done:r}:{value:e.Qt(n.value),done:r}}})},n.intersection=function(e){return m(e)&&!br(e)?e.intersection(this):new Set(this).intersection(e)},n.union=function(e){return m(e)&&!br(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)&&!br(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)&&!br(e)?e.isDisjointFrom(this):new Set(this).isDisjointFrom(e)},n.replace=function(e){var n=this;return br(e)&&(e=new Set(e)),Dt((function(){Array.isArray(e)||m(e)?(n.clear(),e.forEach((function(e){return n.add(e)}))):e!=null&&t(`Cannot initialize set from `+e)})),this},n._t=function(e){return Ft(this,e)},n.St=function(e){return Mt(this,e)},n.toJSON=function(){return Array.from(this)},n.toString=function(){return`[object ObservableSet]`},n[Symbol.iterator]=function(){return this.values()},S(e,[{key:`size`,get:function(){return this.st.reportObserved(),this.vt.size}},{key:Symbol.toStringTag,get:function(){return`Set`}}])}(),br=f(`ObservableSet`,yr),xr=Object.create(null),Sr=function(){function e(e,t,n,r){t===void 0&&(t=new Map),r===void 0&&(r=bn),this.h=void 0,this.j=void 0,this.tt=void 0,this.un=void 0,this.lt=void 0,this.ut=void 0,this.et=void 0,this.v=void 0,this.p=void 0,this.on=void 0,this.sn=void 0,this.h=e,this.j=t,this.tt=n,this.un=r,this.lt=new gn(`ObservableObject.keys`),this.p=c(this.h)}var n=e.prototype;return n.O=function(e){return this.j.get(e).get()},n.S=function(e,t){var n=this.j.get(e);if(n instanceof Ln)return n.set(t),!0;if(jt(this)){var r=Nt(this,{type:sr,object:this.v||this.h,name:e,newValue:t});if(!r)return null;t=r.newValue}if((t=n.xt(t))!==R.UNCHANGED){var i=Pt(this),a=i?{type:sr,observableKind:`object`,debugObjectName:this.tt,object:this.v||this.h,oldValue:n.Ot,name:e,newValue:t}:null;n.gt(t),i&&It(this,a)}return!0},n.ct=function(e){return R.trackingDerivation&&!g(this.h,e)&&this.it(e),this.h[e]},n.ht=function(e,t,n){return n===void 0&&(n=!1),g(this.h,e)?this.j.has(e)?this.S(e,t):n?Reflect.set(this.h,e,t):(this.h[e]=t,!0):this.s(e,{value:t,enumerable:!0,writable:!0,configurable:!0},this.un,n)},n.it=function(e){if(!R.trackingDerivation)return e in this.h;this.sn||=new Map;var t=this.sn.get(e);return t||(t=new Fn(e in this.h,ue,`ObservableObject.key?`,!1),this.sn.set(e,t)),t.get()},n.o=function(e,n){if(!0===n&&(n=this.un),!1!==n){if(!(e in this.h)){var r;if((r=this.h[hn])!=null&&r[e])return;t(1,n.i,this.tt+`.`+e.toString())}for(var i=this.h;i&&i!==sn;){var a=an(i,e);if(a){var o=n.o(this,e,a,i);if(o===0)return;if(o===1)break}i=Object.getPrototypeOf(i)}Kt(this,0,e)}},n.s=function(e,t,n,r){if(r===void 0&&(r=!1),!0===n&&(n=this.un),!1===n)return this.l(e,t,r);var i=n.s(this,e,t,r);return i&&Kt(this,0,e),i},n.l=function(e,t,n){n===void 0&&(n=!1);try{et();var r=this.Ut(e);if(!r)return r;if(jt(this)){var i=Nt(this,{object:this.v||this.h,name:e,type:hr,newValue:t.value});if(!i)return null;var a=i.newValue;t.value!==a&&(t=ee({},t,{value:a}))}if(n){if(!Reflect.defineProperty(this.h,e,t))return!1}else on(this.h,e,t);this.fn(e,t.value)}finally{tt()}return!0},n.g=function(e,t,n,r){r===void 0&&(r=!1);try{et();var i=this.Ut(e);if(!i)return i;if(jt(this)){var a=Nt(this,{object:this.v||this.h,name:e,type:hr,newValue:t});if(!a)return null;t=a.newValue}var o=Wt(e),s={configurable:!R.safeDescriptors||this.p,enumerable:!0,get:o.get,set:o.set};if(r){if(!Reflect.defineProperty(this.h,e,s))return!1}else on(this.h,e,s);var c=new Fn(t,n,`ObservableObject.key`,!1);this.j.set(e,c),this.fn(e,c.Ot)}finally{tt()}return!0},n.m=function(e,t,n){n===void 0&&(n=!1);try{et();var r=this.Ut(e);if(!r)return r;if(jt(this)&&!Nt(this,{object:this.v||this.h,name:e,type:hr,newValue:void 0}))return null;t.name||=`ObservableObject.key`,t.context=this.v||this.h;var i=Wt(e),a={configurable:!R.safeDescriptors||this.p,enumerable:!1,get:i.get,set:i.set};if(n){if(!Reflect.defineProperty(this.h,e,a))return!1}else on(this.h,e,a);this.j.set(e,new Ln(t)),this.fn(e,void 0)}finally{tt()}return!0},n.Ut=function(e,t){if(t===void 0&&(t=!1),!g(this.h,e))return!0;if(jt(this)&&!Nt(this,{object:this.v||this.h,name:e,type:`remove`}))return null;try{var n;et();var r=Pt(this),i=this.j.get(e),a=void 0;if(!i&&r&&(a=an(this.h,e)?.value),t){if(!Reflect.deleteProperty(this.h,e))return!1}else delete this.h[e];i&&(this.j.delete(e),i instanceof Fn&&(a=i.Ot),rt(i)),this.lt.reportChanged(),(n=this.sn)==null||(n=n.get(e))==null||n.set(e in this.h),r&&r&&It(this,{type:`remove`,observableKind:`object`,object:this.v||this.h,debugObjectName:this.tt,oldValue:a,name:e})}finally{tt()}return!0},n._t=function(e){return Ft(this,e)},n.St=function(e){return Mt(this,e)},n.fn=function(e,t){var n,r=Pt(this);r&&r&&It(this,r?{type:hr,observableKind:`object`,debugObjectName:this.tt,object:this.v||this.h,name:e,newValue:t}:null),(n=this.sn)==null||(n=n.get(e))==null||n.set(!0),this.lt.reportChanged()},n.rt=function(){return this.lt.reportObserved(),pn(this.h)},n.nt=function(){return this.lt.reportObserved(),Object.keys(this.h)},e}(),z=f(`ObservableObjectAdministration`,Sr),Cr=qt(0),wr=function(){var e=!1,t={};return Object.defineProperty(t,`0`,{set:function(){e=!0}}),Object.create(t)[0]=1,!1===e}(),Tr=0,Er=function(){};dr=Er,fr=Array.prototype,Object.setPrototypeOf?Object.setPrototypeOf(dr.prototype,fr):dr.prototype.__proto__===void 0?dr.prototype=fr:dr.prototype.__proto__=fr;var Dr=function(e){function t(t,n,r,i){var a;return r===void 0&&(r=`ObservableArray`),i===void 0&&(i=!1),a=e.call(this)||this,$t((function(){var e=new lr(r,n,i,!0);e.v=a,d(a,P,e),t&&t.length&&a.spliceWithArray(0,0,t),wr&&Object.defineProperty(a,`0`,Cr)})),a}ne(t,e);var n=t.prototype;return n.concat=function(){this[P].st.reportObserved();var e=[...arguments];return Array.prototype.concat.apply(this.slice(),e.map((function(e){return Bt(e)?e.slice():e})))},n[Symbol.iterator]=function(){var e=this,t=0;return tn({next:function(){return t<e.length?{value:e[t++],done:!1}:{done:!0,value:void 0}}})},S(t,[{key:`length`,get:function(){return this[P].Ft()},set:function(e){this[P].Xt(e)}},{key:Symbol.toStringTag,get:function(){return`Array`}}])}(Er);Object.entries(ur).forEach((function(e){var t=e[0];t!==`concat`&&u(Dr.prototype,t,e[1])})),Jt(1e3);var Or=sn.toString,kr=n().Iterator?.prototype||{};[`Symbol`,`Map`,`Set`].forEach((function(e){n()[e]===void 0&&t(`MobX requires global '`+e+`' to be available or polyfilled`)})),typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__==`object`&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:ot,extras:{getDebugName:Qt},$mobx:P}),e.$mobx=P,e.FlowCancellationError=tr,e.ObservableMap=gr,e.ObservableSet=yr,e.Reaction=Wn,e._allowStateChanges=Re,e._allowStateChangesInsideComputed=ct,e._allowStateReadsEnd=Ye,e._allowStateReadsStart=Je,e._autoAction=Qn,e._endAction=Le,e._getAdministration=Zt,e._getGlobalState=function(){return R},e._interceptReads=function(e,t,n){var r;return _r(e)||Bt(e)||In(e)?r=Zt(e):Gt(e)&&(r=Zt(e,t)),r.dehancer=typeof t==`function`?t:n,function(){r.dehancer=void 0}},e._isComputingDerivation=function(){return R.trackingDerivation!==null},e._resetGlobalState=function(){var e=new Vn;for(var t in e)Bn.indexOf(t)===-1&&(R[t]=e[t]);R.allowStateChanges=!R.enforceActions},e._startAction=Ie,e.action=Zn,e.autorun=ut,e.comparer=vn,e.computed=An,e.configure=function(e){!0===e.isolateGlobalState&&function(){if((R.pendingReactions.length||R.inBatch||R.isRunningReactions)&&t(36),Un=!0,Hn){var e=n();--e.__mobxInstanceCount==0&&(e.__mobxGlobals=void 0),R=new Vn}}();var r,i,a=e.useProxies,o=e.enforceActions;if(a!==void 0&&(R.useProxies=a===`always`||a!==`never`&&typeof Proxy<`u`),a===`ifavailable`&&(R.verifyProxies=!0),o!==void 0){var s=o===`always`?`always`:o===`observed`;R.enforceActions=s,R.allowStateChanges=!0!==s&&s!==`always`}[`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`disableErrorBoundaries`,`safeDescriptors`].forEach((function(t){t in e&&(R[t]=!!e[t])})),R.allowStateReads=!R.observableRequiresReaction,e.reactionScheduler&&(r=e.reactionScheduler,i=Gn,Gn=function(e){return r((function(){return i(e)}))})},e.createAtom=ce,e.defineProperty=function(e,n,r){if(Gt(e))return e[P].l(n,r);t(39)},e.entries=function(e){return Gt(e)?Ct(e).map((function(t){return[t,e[t]]})):_r(e)?Ct(e).map((function(t){return[t,e.get(t)]})):br(e)?Array.from(e.entries()):Bt(e)?e.map((function(e,t){return[t,e]})):void t(7)},e.extendObservable=ht,e.flow=ir,e.flowResult=function(e){return e},e.get=function(e,n){if(wt(e,n))return Gt(e)?e[P].ct(n):_r(e)?e.get(n):Bt(e)?e[n]:void t(11)},e.getAtom=Xt,e.getDebugName=Qt,e.getDependencyTree=function(e,t){return gt(Xt(e,t))},e.getObserverTree=function(e,t){return _t(Xt(e,t))},e.has=wt,e.intercept=function(e,t,n){return a(n)?function(e,t,n){return Zt(e,t).St(n)}(e,t,n):function(e,t){return Zt(e).St(t)}(e,t)},e.isAction=lt,e.isBoxedObservable=In,e.isComputed=function(e){return bt(e)},e.isComputedProp=function(e,t){return bt(e,t)},e.isFlow=yt,e.isFlowCancellationError=function(e){return e instanceof tr},e.isObservable=St,e.isObservableArray=Bt,e.isObservableMap=_r,e.isObservableObject=Gt,e.isObservableProp=function(e,t){return xt(e,t)},e.isObservableSet=br,e.keys=Ct,e.makeAutoObservable=function(e,t,n){return c(e)?ht(e,e,t,n):($t((function(){var r=Ut(e,n)[P];if(!e[or]){var i=Object.getPrototypeOf(e),a=new Set([].concat(pn(e),pn(i)));a.delete(`constructor`),a.delete(P),u(i,or,a)}e[or].forEach((function(e){return r.o(e,!t||!(e in t)||t[e])}))})),e)},e.makeObservable=function(e,t,n){return $t((function(){var r=Ut(e,n)[P];t??=function(e){return g(e,hn)||u(e,hn,ee({},e[hn])),e[hn]}(e),pn(t).forEach((function(e){return r.o(e,t[e])}))})),e},e.observable=Dn,e.observe=function(e,t,n,r){return a(n)?function(e,t,n,r){return Zt(e,t)._t(n,r)}(e,t,n,r):function(e,t,n){return Zt(e)._t(t,n)}(e,t,n)},e.onBecomeObserved=ft,e.onBecomeUnobserved=pt,e.onReactionError=function(e){return R.globalReactionErrorHandlers.push(e),function(){var t=R.globalReactionErrorHandlers.indexOf(e);t>=0&&R.globalReactionErrorHandlers.splice(t,1)}},e.override=yn,e.ownKeys=Tt,e.reaction=function(e,t,n){function r(){if(p=!1,!h.isDisposed){var t=!1,r=s;h.track((function(){var n=Re(!1,(function(){return e(h)}));t=f||!m(s,n),s=n})),(f&&n.fireImmediately||!f&&t)&&l(s,r,h),f=!1}}var i;n===void 0&&(n=ln);var a,o,s,c=n.name??`Reaction`,l=Zn(c,n.onError?(a=n.onError,o=t,function(){try{return o.apply(this,arguments)}catch(e){a.call(this,e)}}):t),u=!n.scheduler&&!n.delay,d=dt(n),f=!0,p=!1,m=n.compareStructural?vn.structural:n.equals||vn.default,h=new Wn(c,(function(){f||u?r():p||(p=!0,d(r))}),n.onError,n.requiresObservable);return(i=n)!=null&&(i=i.signal)!=null&&i.aborted||h.Y(),h.Z(n?.signal)},e.remove=function(e,n){Gt(e)?e[P].Ut(n):_r(e)||br(e)?e.delete(n):Bt(e)?(typeof n!=`number`&&(n=parseInt(n,10)),e.splice(n,1)):t(9)},e.runInAction=ct,e.set=function e(n,r,i){if(arguments.length!==2||br(n))Gt(n)?n[P].ht(r,i):_r(n)?n.set(r,i):br(n)?n.add(r):Bt(n)?(typeof r!=`number`&&(r=parseInt(r,10)),r<0&&t(`Invalid index: '`+r+`'`),et(),r>=n.length&&(n.length=r+1),n[r]=i,tt()):t(8);else{et();var a=r;try{for(var o in a)e(n,o,a[o])}finally{tt()}}},e.spy=ot,e.toJS=function(e){return function e(t,n){if(typeof t!=`object`||!t||t instanceof Date||!St(t))return t;if(In(t)||L(t))return e(t.get(),n);if(n.has(t))return n.get(t);if(Bt(t)){var r=Et(n,t,Array(t.length));return t.forEach((function(t,i){r[i]=e(t,n)})),r}if(br(t)){var i=Et(n,t,new Set);return t.forEach((function(t){i.add(e(t,n))})),i}if(_r(t)){var a=Et(n,t,new Map);return t.forEach((function(t,r){a.set(r,e(t,n))})),a}var o=Et(n,t,{});return Tt(t).forEach((function(r){sn.propertyIsEnumerable.call(t,r)&&(o[r]=e(t[r],n))})),o}(e,new Map)},e.trace=function(){},e.transaction=Dt,e.untracked=Ge,e.values=function(e){return Gt(e)?Ct(e).map((function(t){return e[t]})):_r(e)?Ct(e).map((function(t){return e.get(t)})):br(e)?Array.from(e.values()):Bt(e)?e.slice():void t(6)},e.when=function(e,t,n){return arguments.length===1||t&&typeof t==`object`?kt(e,t):Ot(e,t,n||{})}})),c_=me((e=>{Object.defineProperty(e,`__esModule`,{value:!0});var t={0:`Invalid value for configuration 'enforceActions', expected 'never', 'always' or 'observed'`,1:function(e,t){return`Cannot apply '`+e+`' to '`+t.toString()+`': Field not found.`},5:`'keys()' can only be used on observable objects, arrays, sets and maps`,6:`'values()' can only be used on observable objects, arrays, sets and maps`,7:`'entries()' can only be used on observable objects, arrays and maps`,8:`'set()' can only be used on observable objects, arrays and maps`,9:`'remove()' can only be used on observable objects, arrays and maps`,10:`'has()' can only be used on observable objects, arrays and maps`,11:`'get()' can only be used on observable objects, arrays and maps`,12:`Invalid annotation`,13:`Dynamic observable objects cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)`,14:`Intercept handlers should return nothing or a change object`,15:`Observable arrays cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)`,16:`Modification exception: the internal structure of an observable array was changed.`,17:function(e,t){return`[mobx.array] Index out of bounds, `+e+` is larger than `+t},18:`mobx.map requires Map polyfill for the current browser. Check babel-polyfill or core-js/es6/map.js`,19:function(e){return`Cannot initialize from classes that inherit from Map: `+e.constructor.name},20:function(e){return`Cannot initialize map from `+e},21:function(e){return`Cannot convert to map from '`+e+`'`},22:`mobx.set requires Set polyfill for the current browser. Check babel-polyfill or core-js/es6/set.js`,23:`It is not possible to get index atoms from arrays`,24:function(e){return`Cannot obtain administration from `+e},25:function(e,t){return`the entry '`+e+`' does not exist in the observable map '`+t+`'`},26:`please specify a property`,27:function(e,t){return`no observable property '`+e.toString()+`' found on the observable object '`+t+`'`},28:function(e){return`Cannot obtain atom from `+e},29:`Expecting some object`,30:`invalid action stack. did you forget to finish an action?`,31:`missing option for computed: get`,32:function(e,t){return`Cycle detected in computation `+e+`: `+t},33:function(e){return`The setter of computed value '`+e+`' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?`},34:function(e){return`[ComputedValue '`+e+`'] It is not possible to assign a new value to a computed value.`},35:"There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`",36:`isolateGlobalState should be called before MobX is running any reactions`,37:function(e){return"[mobx] `observableArray."+e+"()` mutates the array in-place, which is not allowed inside a derivation. Use `array.slice()."+e+"()` instead"},38:`'ownKeys()' can only be used on observable objects`,39:`'defineProperty()' can only be used on observable objects`};function n(e){var n=[...arguments].slice(1),r=typeof e==`string`?e:t[e];throw typeof r==`function`&&(r=r.apply(null,n)),Error(`[MobX] `+r)}var r={};function i(){return typeof globalThis<`u`?globalThis:typeof window<`u`?window:typeof global<`u`?global:typeof self<`u`?self:r}var a=Object.assign,o=Object.getOwnPropertyDescriptor,s=Object.defineProperty,c=Object.prototype,l=[];Object.freeze(l);var u={};Object.freeze(u);var d=typeof Proxy<`u`,f=Object.toString();function p(){d||n("`Proxy` objects are not available in the current environment. Please configure MobX to enable a fallback implementation.`")}function m(e){F.verifyProxies&&n(`MobX is currently configured to be able to run in ES5 mode, but in ES5 MobX won't be able to `+e)}function h(){return++F.mobxGuid}function g(e){var t=!1;return function(){if(!t)return t=!0,e.apply(this,arguments)}}var _=function(){};function v(e){return typeof e==`function`}function y(e){switch(typeof e){case`string`:case`symbol`:case`number`:return!0}return!1}function b(e){return typeof e==`object`&&!!e}function x(e){if(!b(e))return!1;var t=Object.getPrototypeOf(e);if(t==null)return!0;var n=Object.hasOwnProperty.call(t,`constructor`)&&t.constructor;return typeof n==`function`&&n.toString()===f}function S(e){var t=e?.constructor;return t?t.name===`GeneratorFunction`||t.displayName===`GeneratorFunction`:!1}function C(e,t,n){s(e,t,{enumerable:!1,writable:!0,configurable:!0,value:n})}function ee(e,t,n){s(e,t,{enumerable:!1,writable:!1,configurable:!0,value:n})}function te(e,t){var n=`isMobX`+e;return t.prototype[n]=!0,function(e){return b(e)&&e[n]===!0}}function ne(e){return e!=null&&Object.prototype.toString.call(e)===`[object Map]`}function re(e){return Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(e)))===null}function ie(e){return e!=null&&Object.prototype.toString.call(e)===`[object Set]`}var ae=Object.getOwnPropertySymbols!==void 0;function w(e){var t=Object.keys(e);if(!ae)return t;var n=Object.getOwnPropertySymbols(e);return n.length?[].concat(t,n.filter(function(t){return c.propertyIsEnumerable.call(e,t)})):t}var T=typeof Reflect<`u`&&Reflect.ownKeys?Reflect.ownKeys:ae?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames;function oe(e){return typeof e==`string`?e:typeof e==`symbol`?e.toString():new String(e).toString()}function se(e){return e===null?null:typeof e==`object`?``+e:e}function ce(e,t){return c.hasOwnProperty.call(e,t)}var le=Object.getOwnPropertyDescriptors||function(e){var t={};return T(e).forEach(function(n){t[n]=o(e,n)}),t};function ue(e,t){return!!(e&t)}function de(e,t,n){return n?e|=t:e&=~t,e}function fe(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function pe(e,t,n){if(be())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var i=new(e.bind.apply(e,r));return n&&xe(i,n.prototype),i}function me(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,Ce(r.key),r)}}function he(e,t,n){return t&&me(e.prototype,t),n&&me(e,n),Object.defineProperty(e,`prototype`,{writable:!1}),e}function ge(e,t){var n=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=we(e))||t&&e&&typeof e.length==`number`){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw TypeError(`Invalid attempt to iterate non-iterable instance.
56
+ '`+s.i+`' can only be used on properties with a function value.`)}function he(e,t,n,r,i){var a,o,s;i===void 0&&(i=R.safeDescriptors);var c=r.value;return(a=t.u)!=null&&a.bound&&(c=c.bind(e.v??e.h)),{value:Pe(t.u?.name??n.toString(),c,(o=t.u?.autoAction)!=null&&o,(s=t.u)!=null&&s.bound?e.v??e.h:void 0),configurable:!i||e.p,enumerable:!1,writable:!i}}function ge(e,t){return{i:e,u:t,o:E,s:_e,t:ve}}function E(e,t,n,r){var i;return r===e.h?this.s(e,t,n,!1)===null?0:2:(i=this.u)!=null&&i.bound&&(!g(e.h,t)||!yt(e.h[t]))&&this.s(e,t,n,!1)===null?0:yt(n.value)?1:(on(r,t,ye(e,0,0,n,!1,!1)),2)}function _e(e,t,n,r){var i=ye(e,0,0,n,this.u?.bound);return e.l(t,i,r)}function ve(e,t){var n,r=t.name,i=t.addInitializer;return yt(e)||(e=ir(e)),(n=this.u)!=null&&n.bound&&i((function(){var e=this[r].bind(this);e.isMobXFlow=!0,this[r]=e})),e}function ye(e,t,n,r,i,a){a===void 0&&(a=R.safeDescriptors);var o=r.value;return yt(o)||(o=ir(o)),i&&((o=o.bind(e.v??e.h)).isMobXFlow=!0),{value:o,configurable:!a||e.p,enumerable:!1,writable:!a}}function be(e,t){return{i:e,u:t,o:xe,s:Se,t:Ce}}function xe(e,t,n){return this.s(e,t,n,!1)===null?0:1}function Se(e,t,n,r){return e.m(t,ee({},this.u,{get:n.get,set:n.set}),r)}function Ce(e,t){var n=this,r=t.name;return(0,t.addInitializer)((function(){var t=Ut(this)[P],i=ee({},n.u,{get:e,context:this});i.name||=`ObservableObject.`+r.toString(),t.j.set(r,new Ln(i))})),function(){return this[P].O(r)}}function we(e,t){return{i:e,u:t,o:Te,s:Ee,t:De}}function Te(e,t,n){return this.s(e,t,n,!1)===null?0:1}function Ee(e,t,n,r){return e.g(t,n.value,this.u?.enhancer??le,r)}function De(e,t){function n(e,t){var n=Ut(e)[P],i=new Fn(t,r.u?.enhancer??le,`ObservableObject.`+a.toString(),!1);n.j.set(a,i),o.add(e)}var r=this,i=t.kind,a=t.name,o=new WeakSet;if(i==`accessor`)return{get:function(){return o.has(this)||n(this,e.get.call(this)),this[P].O(a)},set:function(e){return o.has(this)||n(this,e),this[P].S(a,e)},init:function(e){return o.has(this)||n(this,e),e}}}function Oe(e){return{i:`true`,u:e,o:ke,s:Ae,t:je}}function ke(e,t,n,r){var i,a,o;if(n.get)return An.o(e,t,n,r);if(n.set){var s=lt(n.set)?n.set:Pe(t.toString(),n.set);return r===e.h?e.l(t,{configurable:!R.safeDescriptors||e.p,set:s})===null?0:2:(on(r,t,{configurable:!0,set:s}),2)}if(r!==e.h&&typeof n.value==`function`)return l(n.value)?((o=this.u)!=null&&o.autoBind?ir.bound:ir).o(e,t,n,r):((a=this.u)!=null&&a.autoBind?Qn.bound:Qn).o(e,t,n,r);var c=!1===this.u?.deep?Dn.ref:Dn;return typeof n.value==`function`&&(i=this.u)!=null&&i.autoBind&&(n.value=n.value.bind(e.v??e.h)),c.o(e,t,n,r)}function Ae(e,t,n,r){var i;return n.get?An.s(e,t,n,r):n.set?e.l(t,{configurable:!R.safeDescriptors||e.p,set:Pe(t.toString(),n.set)},r):(typeof n.value==`function`&&(i=this.u)!=null&&i.autoBind&&(n.value=n.value.bind(e.v??e.h)),(!1===this.u?.deep?Dn.ref:Dn).s(e,t,n,r))}function je(){t(`'`+this.i+`' cannot be used as a decorator`)}function Me(e){return e||xn}function D(e){return!0===e.deep?le:!1===e.deep?ue:(t=e.defaultDecorator)&&(n=(r=t.u)?.enhancer)!=null?n:le;var t,n,r}function Ne(e,t,n){return se(t)?Sn.t(e,t):o(t)?void oe(e,t,Sn):St(e)?e:c(e)?Dn.object(e,t,n):Array.isArray(e)?Dn.array(e,t):p(e)?Dn.map(e,t):m(e)?Dn.set(e,t):typeof e==`object`&&e?e:Dn.box(e,t)}function Pe(e,t,n,r){function i(){return Fe(0,n,t,r||this,arguments)}return n===void 0&&(n=!1),i.isMobxAction=!0,i.toString=function(){return t.toString()},Nn&&(Pn.value=e,on(i,`name`,Pn)),i}function Fe(e,t,n,r,i){var a=Ie(0,t);try{return n.apply(r,i)}catch(e){throw a._=e,e}finally{Le(a)}}function Ie(e,t){var n=R.trackingDerivation,r=!t||!n;et();var i=R.allowStateChanges;r&&(Ke(),i=ze(!0));var a={A:r,k:n,M:i,V:Je(!0),R:!1,N:0,T:Mn++,C:jn};return jn=a.T,a}function Le(e){jn!==e.T&&t(30),jn=e.C,e._!==void 0&&(R.suppressReactionErrors=!0),Be(e.M),Ye(e.V),tt(),e.A&&qe(e.k),R.suppressReactionErrors=!1}function Re(e,t){var n=ze(e);try{return t()}finally{Be(n)}}function ze(e){var t=R.allowStateChanges;return R.allowStateChanges=e,t}function Be(e){R.allowStateChanges=e}function Ve(e){return e instanceof zn}function He(e){switch(e.I){case I.L:return!1;case I.P:case I.K:return!0;case I.B:for(var t=Je(!0),n=Ke(),r=e.D,i=r.length,a=0;a<i;a++){var o=r[a];if(L(o)){if(R.disableErrorBoundaries)o.get();else try{o.get()}catch{return qe(n),Ye(t),!0}if(e.I===I.K)return qe(n),Ye(t),!0}}return Xe(e),qe(n),Ye(t),!1}}function Ue(e,t,n){var r=Je(!0);Xe(e),e.W=Array(e.q===0?100:e.D.length),e.G=0,e.q=++R.runId;var i,a=R.trackingDerivation;if(R.trackingDerivation=e,R.inBatch++,!0===R.disableErrorBoundaries)i=t.call(n);else try{i=t.call(n)}catch(e){i=new zn(e)}return R.inBatch--,R.trackingDerivation=a,function(e){for(var t=e.D,n=e.D=e.W,r=I.L,i=0,a=e.G,o=0;o<a;o++){var s=n[o];s.diffValue===0&&(s.diffValue=1,i!==o&&(n[i]=s),i++),s.I>r&&(r=s.I)}for(n.length=i,e.W=null,a=t.length;a--;){var c=t[a];c.diffValue===0&&Qe(c,e),c.diffValue=0}for(;i--;){var l=n[i];l.diffValue===1&&(l.diffValue=0,Ze(l,e))}r!==I.L&&(e.I=r,e.H())}(e),Ye(r),i}function We(e){var t=e.D;e.D=[];for(var n=t.length;n--;)Qe(t[n],e);e.I=I.P}function Ge(e){var t=Ke();try{return e()}finally{qe(t)}}function Ke(){var e=R.trackingDerivation;return R.trackingDerivation=null,e}function qe(e){R.trackingDerivation=e}function Je(e){var t=R.allowStateReads;return R.allowStateReads=e,t}function Ye(e){R.allowStateReads=e}function Xe(e){if(e.I!==I.L){e.I=I.L;for(var t=e.D,n=t.length;n--;)t[n].U=I.L}}function Ze(e,t){e.F.add(t),e.U>t.I&&(e.U=t.I)}function Qe(e,t){e.F.delete(t),e.F.size===0&&$e(e)}function $e(e){!1===e.isPendingUnobservation&&(e.isPendingUnobservation=!0,R.pendingUnobservations.push(e))}function et(){R.inBatch++}function tt(){if(--R.inBatch==0){it();for(var e=R.pendingUnobservations,t=0;t<e.length;t++){var n=e[t];n.isPendingUnobservation=!1,n.F.size===0&&(n.isBeingObserved&&(n.isBeingObserved=!1,n.onBUO()),n instanceof Ln&&n.X())}R.pendingUnobservations=[]}}function nt(e){var t=R.trackingDerivation;return t===null?(e.F.size===0&&R.inBatch>0&&$e(e),!1):(t.q!==e.$&&(e.$=t.q,t.W[t.G++]=e,!e.isBeingObserved&&R.trackingContext&&(e.isBeingObserved=!0,e.onBO())),e.isBeingObserved)}function rt(e){e.U!==I.K&&(e.U=I.K,e.F.forEach((function(e){e.I===I.L&&e.H(),e.I=I.K})))}function it(){R.inBatch>0||R.isRunningReactions||Gn(at)}function at(){R.isRunningReactions=!0;for(var e=R.pendingReactions,t=0;e.length>0;){++t==100&&(console.error(`[mobx] cycle in reaction: `+e[0]),e.splice(0));for(var n=e.splice(0),r=0,i=n.length;r<i;r++)n[r].J()}R.isRunningReactions=!1}function ot(){return console.warn(`[mobx.spy] Is a no-op in production builds`),function(){}}function st(e){return function(t,n){return a(t)?Pe(t.name||`<unnamed action>`,t,e):a(n)?Pe(t,n,e):se(n)?(e?Yn:qn).t(t,n):o(n)?oe(t,n,e?Yn:qn):o(t)?T(de(e?`autoAction`:`action`,{name:t,autoAction:e})):void 0}}function ct(e){return Fe(0,!1,e,this,void 0)}function lt(e){return a(e)&&!0===e.isMobxAction}function ut(e,t){function n(){e(i)}var r;t===void 0&&(t=ln);var i,a=t?.name??`Autorun`;if(t.scheduler||t.delay){var o=dt(t),s=!1;i=new Wn(a,(function(){s||(s=!0,o((function(){s=!1,i.isDisposed||i.track(n)})))}),t.onError,t.requiresObservable)}else i=new Wn(a,(function(){this.track(n)}),t.onError,t.requiresObservable);return(r=t)!=null&&(r=r.signal)!=null&&r.aborted||i.Y(),i.Z(t?.signal)}function dt(e){return e.scheduler?e.scheduler:e.delay?function(t){return setTimeout(t,e.delay)}:$n}function ft(e,t,n){return mt(`onBO`,e,t,n)}function pt(e,t,n){return mt(`onBUO`,e,t,n)}function mt(e,t,n,r){var i=typeof r==`function`?Xt(t,n):Xt(t),o=a(r)?r:n,s=e+`L`;return i[s]?i[s].add(o):i[s]=new Set([o]),function(){var e=i[s];e&&(e.delete(o),e.size===0&&delete i[s])}}function ht(e,t,n,r){var i=mn(t);return $t((function(){var t=Ut(e,r)[P];pn(i).forEach((function(e){t.s(e,i[e],!n||!(e in n)||n[e])}))})),e}function gt(e){var t,n={name:e.tt};return e.D&&e.D.length>0&&(n.dependencies=(t=e.D,Array.from(new Set(t))).map(gt)),n}function _t(e){var t={name:e.tt};return function(e){return e.F&&e.F.size>0}(e)&&(t.observers=Array.from(function(e){return e.F}(e)).map(_t)),t}function vt(e){a(e.cancel)&&e.cancel()}function yt(e){return!0===e?.isMobXFlow}function bt(e,t){return t===void 0?L(e):!1===Gt(e)||!e[P].j.has(t)?!1:L(Xt(e,t))}function xt(e,t){return!!e&&(t===void 0?Gt(e)||!!e[P]||_n(e)||Kn(e)||L(e):!!Gt(e)&&e[P].j.has(t))}function St(e){return xt(e)}function Ct(e){return Gt(e)?e[P].nt():_r(e)||br(e)?Array.from(e.keys()):Bt(e)?e.map((function(e,t){return t})):void t(5)}function wt(e,n){return Gt(e)?e[P].it(n):_r(e)||br(e)?e.has(n):Bt(e)?n>=0&&n<e.length:void t(10)}function Tt(e){if(Gt(e))return e[P].rt();t(38)}function Et(e,t,n){return e.set(t,n),n}function Dt(e,t){t===void 0&&(t=void 0),et();try{return e.apply(t)}finally{tt()}}function Ot(e,t,n){var r;if(typeof n.timeout==`number`){var i=Error(`WHEN_TIMEOUT`);r=setTimeout((function(){if(!o[P].isDisposed){if(o(),!n.onError)throw i;n.onError(i)}}),n.timeout)}n.name=`When`;var a=Pe(`When-effect`,t),o=ut((function(t){Re(!1,e)&&(t.dispose(),r&&clearTimeout(r),a())}),n);return o}function kt(e,t){var n,r,i;if(t!=null&&(n=t.signal)!=null&&n.aborted)return Object.assign(Promise.reject(Error(`WHEN_ABORTED`)),{cancel:function(){return null}});var a=new Promise((function(n,a){var o,s=Ot(e,n,ee({},t,{onError:a}));r=function(){s(),a(Error(`WHEN_CANCELLED`))},i=function(){s(),a(Error(`WHEN_ABORTED`))},t==null||(o=t.signal)==null||o.addEventListener==null||o.addEventListener(`abort`,i)})).finally((function(){var e;return t==null||(e=t.signal)==null||e.removeEventListener==null?void 0:e.removeEventListener(`abort`,i)}));return a.cancel=r,a}function At(e){return e[P]}function jt(e){return e.et!==void 0&&e.et.length>0}function Mt(e,t){var n=e.et||=[];return n.push(t),i((function(){var e=n.indexOf(t);e!==-1&&n.splice(e,1)}))}function Nt(e,n){var r=Ke();try{for(var i=[].concat(e.et||[]),a=0,o=i.length;a<o&&((n=i[a](n))&&!n.type&&t(14),n);a++);return n}finally{qe(r)}}function Pt(e){return e.ut!==void 0&&e.ut.length>0}function Ft(e,t){var n=e.ut||=[];return n.push(t),i((function(){var e=n.indexOf(t);e!==-1&&n.splice(e,1)}))}function It(e,t){var n=Ke(),r=e.ut;if(r){for(var i=0,a=(r=r.slice()).length;i<a;i++)r[i](t);qe(n)}}function Lt(e,t,n,i){return n===void 0&&(n=`ObservableArray`),i===void 0&&(i=!1),r(),$t((function(){var r=new lr(n,t,i,!1);d(r.j,P,r);var a=new Proxy(r.j,cr);return r.v=a,e&&e.length&&r.ot(0,0,e),a}))}function O(e,t){typeof Array.prototype[e]==`function`&&(ur[e]=t(e))}function Rt(e){return function(){var t=this[P];t.st.reportObserved();var n=t.ft(t.j);return n[e].apply(n,arguments)}}function k(e){return function(t,n){var r=this,i=this[P];return i.st.reportObserved(),i.ft(i.j)[e]((function(e,i){return t.call(n,e,i,r)}))}}function zt(e){return function(){var t=this,n=this[P];n.st.reportObserved();var r=n.ft(n.j),i=arguments[0];return arguments[0]=function(e,n,r){return i(e,n,r,t)},r[e].apply(r,arguments)}}function Bt(e){return s(e)&&pr(e[P])}function Vt(e){return e[Symbol.toStringTag]=`MapIterator`,tn(e)}function Ht(e){return e[Symbol.toStringTag]=`SetIterator`,tn(e)}function Ut(e,t){if(g(e,P))return e;var n=t?.name??`ObservableObject`;return u(e,P,new Sr(e,new Map,String(n),function(e){return e?e.defaultDecorator??Oe(e):void 0}(t))),e}function Wt(e){return xr[e]||(xr[e]={get:function(){return this[P].O(e)},set:function(t){return this[P].S(e,t)}})}function Gt(e){return!!s(e)&&z(e[P])}function Kt(e,t,n){var r;(r=e.h[hn])==null||delete r[n]}function qt(e){return{enumerable:!1,configurable:!0,get:function(){return this[P].ct(e)},set:function(t){this[P].ht(e,t)}}}function A(e){on(Dr.prototype,``+e,qt(e))}function Jt(e){if(e>Tr){for(var t=Tr;t<e+100;t++)A(t);Tr=e}}function Yt(e,t,n){return new Dr(e,t,n)}function Xt(e,n){if(typeof e==`object`&&e){if(Bt(e))return n!==void 0&&t(23),e[P].st;if(br(e))return e.st;if(_r(e)){if(n===void 0)return e.lt;var r=e.vt.get(n)||e.dt.get(n);return r||t(25,n,Qt(e)),r}if(Gt(e)){if(!n)return t(26);var i=e[P].j.get(n);return i||t(27,n,Qt(e)),i}if(_n(e)||L(e)||Kn(e))return e}else if(a(e)&&Kn(e[P]))return e[P];t(28)}function Zt(e,n){return e||t(29),n===void 0?_n(e)||L(e)||Kn(e)||_r(e)||br(e)?e:e[P]?e[P]:void t(24,e):Zt(Xt(e,n))}function Qt(e,t){var n;if(t!==void 0)n=Xt(e,t);else{if(lt(e))return e.name;n=Gt(e)||_r(e)||br(e)?Zt(e):Xt(e)}return n.tt}function $t(e){var t=Ke(),n=ze(!0);et();try{return e()}finally{tt(),Be(n),qe(t)}}function en(e,t,n){return n===void 0&&(n=-1),function e(t,n,r,i,o){if(t===n)return t!==0||1/t==1/n;if(t==null||n==null)return!1;if(t!=t)return n!=n;var s=typeof t;if(s!==`function`&&s!==`object`&&typeof n!=`object`)return!1;var c=Or.call(t);if(c!==Or.call(n))return!1;switch(c){case`[object RegExp]`:case`[object String]`:return``+t==``+n;case`[object Number]`:return+t==+t?+t==0?1/t==1/n:+t==+n:+n!=+n;case`[object Date]`:case`[object Boolean]`:return+t==+n;case`[object Symbol]`:return typeof Symbol<`u`&&Symbol.valueOf.call(t)===Symbol.valueOf.call(n);case`[object Map]`:case`[object Set]`:r>=0&&r++}t=j(t),n=j(n);var l=c===`[object Array]`;if(!l){if(typeof t!=`object`||typeof n!=`object`)return!1;var u=t.constructor,d=n.constructor;if(u!==d&&!(a(u)&&u instanceof u&&a(d)&&d instanceof d)&&`constructor`in t&&`constructor`in n)return!1}if(r===0)return!1;r<0&&(r=-1),o||=[];for(var f=(i||=[]).length;f--;)if(i[f]===t)return o[f]===n;if(i.push(t),o.push(n),l){if((f=t.length)!==n.length)return!1;for(;f--;)if(!e(t[f],n[f],r-1,i,o))return!1}else{var p=Object.keys(t),m=p.length;if(Object.keys(n).length!==m)return!1;for(var h=0;h<m;h++){var _=p[h];if(!g(n,_)||!e(t[_],n[_],r-1,i,o))return!1}}return i.pop(),o.pop(),!0}(e,t,n)}function j(e){return Bt(e)?e.slice():p(e)||_r(e)||m(e)||br(e)?Array.from(e.entries()):e}function tn(e){return e[Symbol.iterator]=nn,Object.assign(Object.create(kr),e)}function nn(){return this}Object.defineProperty(e,`__esModule`,{value:!0});var rn={},M=Object.assign,an=Object.getOwnPropertyDescriptor,on=Object.defineProperty,sn=Object.prototype,cn=[];Object.freeze(cn);var ln={};Object.freeze(ln);var N=typeof Proxy<`u`,un=Object.toString(),dn=function(){},fn=Object.getOwnPropertySymbols!==void 0,pn=typeof Reflect<`u`&&Reflect.ownKeys?Reflect.ownKeys:fn?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames,mn=Object.getOwnPropertyDescriptors||function(e){var t={};return pn(e).forEach((function(n){t[n]=an(e,n)})),t},hn=Symbol(`mobx-stored-annotations`),P=Symbol(`mobx administration`),gn=function(){function e(e){e===void 0&&(e=`Atom`),this.tt=void 0,this.bt=0,this.F=new Set,this.$=0,this.U=I.P,this.onBOL=void 0,this.onBUOL=void 0,this.tt=e}var t=e.prototype;return t.onBO=function(){this.onBOL&&this.onBOL.forEach((function(e){return e()}))},t.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(e){return e()}))},t.reportObserved=function(){return nt(this)},t.reportChanged=function(){et(),rt(this),tt()},t.toString=function(){return this.tt},S(e,[{key:`isBeingObserved`,get:function(){return _(this.bt,e.pt)},set:function(t){this.bt=v(this.bt,e.pt,t)}},{key:`isPendingUnobservation`,get:function(){return _(this.bt,e.yt)},set:function(t){this.bt=v(this.bt,e.yt,t)}},{key:`diffValue`,get:function(){return+!!_(this.bt,e.wt)},set:function(t){this.bt=v(this.bt,e.wt,t===1)}}])}();gn.pt=1,gn.yt=2,gn.wt=4;var _n=f(`Atom`,gn),vn={identity:function(e,t){return e===t},structural:function(e,t){return en(e,t)},default:function(e,t){return Object.is?Object.is(e,t):e===t?e!==0||1/e==1/t:e!=e&&t!=t},shallow:function(e,t){return en(e,t,1)}},yn=T({i:`override`,o:function(){return 0},s:function(){t(`'`+this.i+`' can only be used with 'makeObservable'`)},t:function(){console.warn(`'`+this.i+`' cannot be used with decorators - this is a no-op`)}}),bn=Oe(),xn={deep:!0,name:void 0,defaultDecorator:void 0,proxy:!0};Object.freeze(xn);var Sn=we(`observable`),Cn=we(`observable.ref`,{enhancer:ue}),F=we(`observable.shallow`,{enhancer:function(e,t,n){return e==null||Gt(e)||Bt(e)||_r(e)||br(e)?e:Array.isArray(e)?Dn.array(e,{name:n,deep:!1}):c(e)?Dn.object(e,void 0,{name:n,deep:!1}):p(e)?Dn.map(e,{name:n,deep:!1}):m(e)?Dn.set(e,{name:n,deep:!1}):void 0}}),wn=we(`observable.struct`,{enhancer:function(e,t){return en(e,t)?t:e}}),Tn=T(Sn);M(Ne,Tn);var En,Dn=M(Ne,{box:function(e,t){var n=Me(t);return new Fn(e,D(n),n.name,!0,n.equals)},array:function(e,t){var n=Me(t);return(!1===R.useProxies||!1===n.proxy?Yt:Lt)(e,D(n),n.name)},map:function(e,t){var n=Me(t);return new gr(e,D(n),n.name)},set:function(e,t){var n=Me(t);return new yr(e,D(n),n.name)},object:function(e,t,n){return $t((function(){return ht(!1===R.useProxies||!1===n?.proxy?Ut({},n):function(e,t){var n;return r(),(n=(e=Ut(e,t))[P]).v??(n.v=new Proxy(e,ar))}({},n),e,t)}))},ref:T(Cn),shallow:T(F),deep:Tn,struct:T(wn)}),On=be(`computed`),kn=be(`computed.struct`,{equals:vn.structural}),An=function(e,t){if(se(t))return On.t(e,t);if(o(t))return oe(e,t,On);if(c(e))return T(be(`computed`,e));var n=c(t)?t:{};return n.get=e,n.name||=e.name||``,new Ln(n)};Object.assign(An,On),An.struct=T(kn);var jn=0,Mn=1,Nn=(En=an((function(){}),`name`)?.configurable)!=null&&En,Pn={value:`action`,configurable:!0,writable:!1,enumerable:!1},Fn=function(e){function t(t,n,r,i,a){var o;return r===void 0&&(r=`ObservableValue`),a===void 0&&(a=vn.default),(o=e.call(this,r)||this).enhancer=void 0,o.tt=void 0,o.equals=void 0,o.jt=!1,o.et=void 0,o.ut=void 0,o.Ot=void 0,o.dehancer=void 0,o.enhancer=n,o.tt=r,o.equals=a,o.Ot=n(t,void 0,r),o}ne(t,e);var n=t.prototype;return n.dehanceValue=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.set=function(e){(e=this.xt(e))!==R.UNCHANGED&&this.gt(e)},n.xt=function(e){if(jt(this)){var t=Nt(this,{object:this,type:sr,newValue:e});if(!t)return R.UNCHANGED;e=t.newValue}return e=this.enhancer(e,this.Ot,this.tt),this.equals(this.Ot,e)?R.UNCHANGED:e},n.gt=function(e){var t=this.Ot;this.Ot=e,this.reportChanged(),Pt(this)&&It(this,{type:sr,object:this,newValue:e,oldValue:t})},n.get=function(){return this.reportObserved(),this.dehanceValue(this.Ot)},n.St=function(e){return Mt(this,e)},n._t=function(e,t){return t&&e({observableKind:`value`,debugObjectName:this.tt,object:this,type:sr,newValue:this.Ot,oldValue:void 0}),Ft(this,e)},n.raw=function(){return this.Ot},n.toJSON=function(){return this.get()},n.toString=function(){return this.tt+`[`+this.Ot+`]`},n.valueOf=function(){return h(this.get())},n[Symbol.toPrimitive]=function(){return this.valueOf()},t}(gn),In=f(`ObservableValue`,Fn),Ln=function(){function e(e){this.I=I.P,this.D=[],this.W=null,this.F=new Set,this.q=0,this.$=0,this.U=I.L,this.G=0,this.Ot=new zn(null),this.tt=void 0,this.At=void 0,this.bt=0,this.derivation=void 0,this.kt=void 0,this.Mt=Rn.NONE,this.Et=void 0,this.Vt=void 0,this.Rt=void 0,this.Nt=void 0,this.onBOL=void 0,this.onBUOL=void 0,e.get||t(31),this.derivation=e.get,this.tt=e.name||`ComputedValue`,e.set&&(this.kt=Pe(`ComputedValue-setter`,e.set)),this.Vt=e.equals||(e.compareStructural||e.struct?vn.structural:vn.default),this.Et=e.context,this.Rt=e.requiresReaction,this.Nt=!!e.keepAlive}var n=e.prototype;return n.H=function(){(function(e){e.U===I.L&&(e.U=I.B,e.F.forEach((function(e){e.I===I.L&&(e.I=I.B,e.H())})))})(this)},n.onBO=function(){this.onBOL&&this.onBOL.forEach((function(e){return e()}))},n.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(e){return e()}))},n.get=function(){if(this.isComputing&&t(32,this.tt,this.derivation),R.inBatch!==0||this.F.size!==0||this.Nt){if(nt(this),He(this)){var e=R.trackingContext;this.Nt&&!e&&(R.trackingContext=this),this.trackAndCompute()&&function(e){e.U!==I.K&&(e.U=I.K,e.F.forEach((function(t){t.I===I.B?t.I=I.K:t.I===I.L&&(e.U=I.L)})))}(this),R.trackingContext=e}}else He(this)&&(this.Tt(),et(),this.Ot=this.Ct(!1),tt());var n=this.Ot;if(Ve(n))throw n.cause;return n},n.set=function(e){if(this.kt){this.isRunningSetter&&t(33,this.tt),this.isRunningSetter=!0;try{this.kt.call(this.Et,e)}finally{this.isRunningSetter=!1}}else t(34,this.tt)},n.trackAndCompute=function(){var e=this.Ot,t=this.I===I.P,n=this.Ct(!0),r=t||Ve(e)||Ve(n)||!this.Vt(e,n);return r&&(this.Ot=n),r},n.Ct=function(e){this.isComputing=!0;var t,n=ze(!1);if(e)t=Ue(this,this.derivation,this.Et);else if(!0===R.disableErrorBoundaries)t=this.derivation.call(this.Et);else try{t=this.derivation.call(this.Et)}catch(e){t=new zn(e)}return Be(n),this.isComputing=!1,t},n.X=function(){this.Nt||(We(this),this.Ot=void 0)},n._t=function(e,t){var n=this,r=!0,i=void 0;return ut((function(){var a=n.get();if(!r||t){var o=Ke();e({observableKind:`computed`,debugObjectName:n.tt,type:sr,object:n,newValue:a,oldValue:i}),qe(o)}r=!1,i=a}))},n.Tt=function(){},n.toString=function(){return this.tt+`[`+this.derivation.toString()+`]`},n.valueOf=function(){return h(this.get())},n[Symbol.toPrimitive]=function(){return this.valueOf()},S(e,[{key:`isComputing`,get:function(){return _(this.bt,e.It)},set:function(t){this.bt=v(this.bt,e.It,t)}},{key:`isRunningSetter`,get:function(){return _(this.bt,e.Lt)},set:function(t){this.bt=v(this.bt,e.Lt,t)}},{key:`isBeingObserved`,get:function(){return _(this.bt,e.pt)},set:function(t){this.bt=v(this.bt,e.pt,t)}},{key:`isPendingUnobservation`,get:function(){return _(this.bt,e.yt)},set:function(t){this.bt=v(this.bt,e.yt,t)}},{key:`diffValue`,get:function(){return+!!_(this.bt,e.wt)},set:function(t){this.bt=v(this.bt,e.wt,t===1)}}])}();Ln.It=1,Ln.Lt=2,Ln.pt=4,Ln.yt=8,Ln.wt=16;var I,Rn,L=f(`ComputedValue`,Ln);(function(e){e[e.P=-1]=`NOT_TRACKING_`,e[e.L=0]=`UP_TO_DATE_`,e[e.B=1]=`POSSIBLY_STALE_`,e[e.K=2]=`STALE_`})(I||={}),function(e){e[e.NONE=0]=`NONE`,e[e.LOG=1]=`LOG`,e[e.BREAK=2]=`BREAK`}(Rn||={});var zn=function(e){this.cause=void 0,this.cause=e},Bn=[`mobxGuid`,`spyListeners`,`enforceActions`,`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`allowStateReads`,`disableErrorBoundaries`,`runId`,`UNCHANGED`,`useProxies`],Vn=function(){this.version=6,this.UNCHANGED={},this.trackingDerivation=null,this.trackingContext=null,this.runId=0,this.mobxGuid=0,this.inBatch=0,this.pendingUnobservations=[],this.pendingReactions=[],this.isRunningReactions=!1,this.allowStateChanges=!1,this.allowStateReads=!0,this.enforceActions=!0,this.spyListeners=[],this.globalReactionErrorHandlers=[],this.computedRequiresReaction=!1,this.reactionRequiresObservable=!1,this.observableRequiresReaction=!1,this.disableErrorBoundaries=!1,this.suppressReactionErrors=!1,this.useProxies=!0,this.verifyProxies=!1,this.safeDescriptors=!0},Hn=!0,Un=!1,R=function(){var e=n();return e.__mobxInstanceCount>0&&!e.__mobxGlobals&&(Hn=!1),e.__mobxGlobals&&e.__mobxGlobals.version!==new Vn().version&&(Hn=!1),Hn?e.__mobxGlobals?(e.__mobxInstanceCount+=1,e.__mobxGlobals.UNCHANGED||(e.__mobxGlobals.UNCHANGED={}),e.__mobxGlobals):(e.__mobxInstanceCount=1,e.__mobxGlobals=new Vn):(setTimeout((function(){Un||t(35)}),1),new Vn)}(),Wn=function(){function e(e,t,n,r){e===void 0&&(e=`Reaction`),this.tt=void 0,this.Pt=void 0,this.Kt=void 0,this.Bt=void 0,this.D=[],this.W=[],this.I=I.P,this.q=0,this.G=0,this.bt=0,this.Mt=Rn.NONE,this.tt=e,this.Pt=t,this.Kt=n,this.Bt=r}var t=e.prototype;return t.H=function(){this.Y()},t.Y=function(){this.isScheduled||(this.isScheduled=!0,R.pendingReactions.push(this),it())},t.J=function(){if(!this.isDisposed){et(),this.isScheduled=!1;var e=R.trackingContext;if(R.trackingContext=this,He(this)){this.isTrackPending=!0;try{this.Pt()}catch(e){this.Dt(e)}}R.trackingContext=e,tt()}},t.track=function(e){if(!this.isDisposed){et(),this.isRunning=!0;var t=R.trackingContext;R.trackingContext=this;var n=Ue(this,e,void 0);R.trackingContext=t,this.isRunning=!1,this.isTrackPending=!1,this.isDisposed&&We(this),Ve(n)&&this.Dt(n.cause),tt()}},t.Dt=function(e){var t=this;if(this.Kt)this.Kt(e,this);else{if(R.disableErrorBoundaries)throw e;R.suppressReactionErrors||console.error(`[mobx] uncaught error in '`+this+`'`,e),R.globalReactionErrorHandlers.forEach((function(n){return n(e,t)}))}},t.dispose=function(){this.isDisposed||(this.isDisposed=!0,this.isRunning||(et(),We(this),tt()))},t.Z=function(e){var t=this,n=function n(){t.dispose(),e==null||e.removeEventListener==null||e.removeEventListener(`abort`,n)};return e==null||e.addEventListener==null||e.addEventListener(`abort`,n),n[P]=this,`dispose`in Symbol&&typeof Symbol.dispose==`symbol`&&(n[Symbol.dispose]=n),n},t.toString=function(){return`Reaction[`+this.tt+`]`},t.trace=function(){},S(e,[{key:`isDisposed`,get:function(){return _(this.bt,e.Wt)},set:function(t){this.bt=v(this.bt,e.Wt,t)}},{key:`isScheduled`,get:function(){return _(this.bt,e.qt)},set:function(t){this.bt=v(this.bt,e.qt,t)}},{key:`isTrackPending`,get:function(){return _(this.bt,e.Gt)},set:function(t){this.bt=v(this.bt,e.Gt,t)}},{key:`isRunning`,get:function(){return _(this.bt,e.Ht)},set:function(t){this.bt=v(this.bt,e.Ht,t)}},{key:`diffValue`,get:function(){return+!!_(this.bt,e.wt)},set:function(t){this.bt=v(this.bt,e.wt,t===1)}}])}();Wn.Wt=1,Wn.qt=2,Wn.Gt=4,Wn.Ht=8,Wn.wt=16;var Gn=function(e){return e()},Kn=f(`Reaction`,Wn),qn=de(`action`),Jn=de(`action.bound`,{bound:!0}),Yn=de(`autoAction`,{autoAction:!0}),Xn=de(`autoAction.bound`,{autoAction:!0,bound:!0}),Zn=st(!1);Object.assign(Zn,qn);var Qn=st(!0);Object.assign(Qn,Yn),Zn.bound=T(Jn),Qn.bound=T(Xn);var $n=function(e){return e()},er=0,tr=function(e){function t(){var n;return n=e.call(this,`FLOW_CANCELLED`)||this,Object.setPrototypeOf(n,(this instanceof t?this.constructor:void 0).prototype),n.name=`FlowCancellationError`,n}return ne(t,e),t.prototype.toString=function(){return`Error: `+this.message},t}(w(Error)),nr=ge(`flow`),rr=ge(`flow.bound`,{bound:!0}),ir=Object.assign((function(e,t){if(se(t))return nr.t(e,t);if(o(t))return oe(e,t,nr);var n=e,r=n.name||`<unnamed flow>`,i=function(){var e,t=this,i=arguments,o=++er,s=Zn(r+` - runid: `+o+` - init`,n).apply(t,i),c=void 0,l=new Promise((function(t,n){function i(e){var t;c=void 0;try{t=Zn(r+` - runid: `+o+` - yield `+ d++,s.next).call(s,e)}catch(e){return n(e)}u(t)}function l(e){var t;c=void 0;try{t=Zn(r+` - runid: `+o+` - yield `+ d++,s.throw).call(s,e)}catch(e){return n(e)}u(t)}function u(e){if(!a(e?.then))return e.done?t(e.value):(c=Promise.resolve(e.value)).then(i,l);e.then(u,n)}var d=0;e=n,i(void 0)}));return l.cancel=Zn(r+` - runid: `+o+` - cancel`,(function(){try{c&&vt(c);var t=s.return(void 0),n=Promise.resolve(t.value);n.then(dn,dn),vt(n),e(new tr)}catch(t){e(t)}})),l};return i.isMobXFlow=!0,i}),nr);ir.bound=T(rr);var ar={has:function(e,t){return At(e).it(t)},get:function(e,t){return At(e).ct(t)},set:function(e,t,n){var r;return!!o(t)&&((r=At(e).ht(t,n,!0))==null||r)},deleteProperty:function(e,t){var n;return!!o(t)&&((n=At(e).Ut(t,!0))==null||n)},defineProperty:function(e,t,n){var r;return(r=At(e).l(t,n))==null||r},ownKeys:function(e){return At(e).rt()},preventExtensions:function(){t(13)}},or=Symbol(`mobx-keys`),sr=`update`,cr={get:function(e,t){var n=e[P];return t===P?n:t===`length`?n.Ft():typeof t!=`string`||isNaN(t)?g(ur,t)?ur[t]:e[t]:n.ct(parseInt(t))},set:function(e,t,n){var r=e[P];return t===`length`&&r.Xt(n),typeof t==`symbol`||isNaN(t)?e[t]=n:r.ht(parseInt(t),n),!0},preventExtensions:function(){t(15)}},lr=function(){function e(e,t,n,r){e===void 0&&(e=`ObservableArray`),this.zt=void 0,this.$t=void 0,this.st=void 0,this.j=[],this.et=void 0,this.ut=void 0,this.Jt=void 0,this.dehancer=void 0,this.v=void 0,this.Yt=0,this.zt=n,this.$t=r,this.st=new gn(e),this.Jt=function(e,n){return t(e,n,`ObservableArray[..]`)}}var n=e.prototype;return n.Qt=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.ft=function(e){return this.dehancer!==void 0&&e.length>0?e.map(this.dehancer):e},n.St=function(e){return Mt(this,e)},n._t=function(e,t){return t===void 0&&(t=!1),t&&e({observableKind:`array`,object:this.v,debugObjectName:this.st.tt,type:`splice`,index:0,added:this.j.slice(),addedCount:this.j.length,removed:[],removedCount:0}),Ft(this,e)},n.Ft=function(){return this.st.reportObserved(),this.j.length},n.Xt=function(e){(typeof e!=`number`||isNaN(e)||e<0)&&t(`Out of range: `+e);var n=this.j.length;if(e!==n)if(e>n){for(var r=Array(e-n),i=0;i<e-n;i++)r[i]=void 0;this.ot(n,0,r)}else this.ot(e,n-e)},n.Zt=function(e,n){e!==this.Yt&&t(16),this.Yt+=n,this.$t&&n>0&&Jt(e+n+1)},n.ot=function(e,t,n){var r=this,i=this.j.length;if(e===void 0?e=0:e>i?e=i:e<0&&(e=Math.max(0,i+e)),t=arguments.length===1?i-e:t==null?0:Math.max(0,Math.min(t,i-e)),n===void 0&&(n=cn),jt(this)){var a=Nt(this,{object:this.v,type:`splice`,index:e,removedCount:t,added:n});if(!a)return cn;t=a.removedCount,n=a.added}if(n=n.length===0?n:n.map((function(e){return r.Jt(e,void 0)})),this.$t){var o=n.length-t;this.Zt(i,o)}var s=this.tn(e,t,n);return t===0&&n.length===0||this.nn(e,n,s),this.ft(s)},n.tn=function(e,t,n){var r;if(n.length<1e4)return(r=this.j).splice.apply(r,[e,t].concat(n));var i=this.j.slice(e,e+t),a=this.j.slice(e+t);this.j.length+=n.length-t;for(var o=0;o<n.length;o++)this.j[e+o]=n[o];for(var s=0;s<a.length;s++)this.j[e+n.length+s]=a[s];return i},n.in=function(e,t,n){var r=!this.zt&&!1,i=Pt(this),a=i||r?{observableKind:`array`,object:this.v,type:sr,debugObjectName:this.st.tt,index:e,newValue:t,oldValue:n}:null;this.st.reportChanged(),i&&It(this,a)},n.nn=function(e,t,n){var r=!this.zt&&!1,i=Pt(this),a=i||r?{observableKind:`array`,object:this.v,debugObjectName:this.st.tt,type:`splice`,index:e,removed:n,added:t,removedCount:n.length,addedCount:t.length}:null;this.st.reportChanged(),i&&It(this,a)},n.ct=function(e){if(!(this.$t&&e>=this.j.length))return this.st.reportObserved(),this.Qt(this.j[e]);console.warn(`[mobx] Out of bounds read: `+e)},n.ht=function(e,n){var r=this.j;if(this.$t&&e>r.length&&t(17,e,r.length),e<r.length){var i=r[e];if(jt(this)){var a=Nt(this,{type:sr,object:this.v,index:e,newValue:n});if(!a)return;n=a.newValue}(n=this.Jt(n,i))!==i&&(r[e]=n,this.in(e,n,i))}else{for(var o=Array(e+1-r.length),s=0;s<o.length-1;s++)o[s]=void 0;o[o.length-1]=n,this.ot(r.length,0,o)}},e}(),ur={clear:function(){return this.splice(0)},replace:function(e){var t=this[P];return t.ot(0,t.j.length,e)},toJSON:function(){return this.slice()},splice:function(e,t){var n=[...arguments].slice(2),r=this[P];switch(arguments.length){case 0:return[];case 1:return r.ot(e);case 2:return r.ot(e,t)}return r.ot(e,t,n)},spliceWithArray:function(e,t,n){return this[P].ot(e,t,n)},push:function(){for(var e=this[P],t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];return e.ot(e.j.length,0,n),e.j.length},pop:function(){return this.splice(Math.max(this[P].j.length-1,0),1)[0]},shift:function(){return this.splice(0,1)[0]},unshift:function(){for(var e=this[P],t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];return e.ot(0,0,n),e.j.length},reverse:function(){return R.trackingDerivation&&t(37,`reverse`),this.replace(this.slice().reverse()),this},sort:function(){R.trackingDerivation&&t(37,`sort`);var e=this.slice();return e.sort.apply(e,arguments),this.replace(e),this},remove:function(e){var t=this[P],n=t.ft(t.j).indexOf(e);return n>-1&&(this.splice(n,1),!0)}};O(`at`,Rt),O(`concat`,Rt),O(`flat`,Rt),O(`includes`,Rt),O(`indexOf`,Rt),O(`join`,Rt),O(`lastIndexOf`,Rt),O(`slice`,Rt),O(`toString`,Rt),O(`toLocaleString`,Rt),O(`toSorted`,Rt),O(`toSpliced`,Rt),O(`with`,Rt),O(`every`,k),O(`filter`,k),O(`find`,k),O(`findIndex`,k),O(`findLast`,k),O(`findLastIndex`,k),O(`flatMap`,k),O(`forEach`,k),O(`map`,k),O(`some`,k),O(`toReversed`,k),O(`reduce`,zt),O(`reduceRight`,zt);var dr,fr,pr=f(`ObservableArrayAdministration`,lr),mr={},hr=`add`,gr=function(){function e(e,n,r){var i=this;n===void 0&&(n=le),r===void 0&&(r=`ObservableMap`),this.Jt=void 0,this.tt=void 0,this[P]=mr,this.vt=void 0,this.dt=void 0,this.lt=void 0,this.et=void 0,this.ut=void 0,this.dehancer=void 0,this.Jt=n,this.tt=r,a(Map)||t(18),$t((function(){i.lt=ce(`ObservableMap.keys()`),i.vt=new Map,i.dt=new Map,e&&i.merge(e)}))}var n=e.prototype;return n.it=function(e){return this.vt.has(e)},n.has=function(e){var t=this;if(!R.trackingDerivation)return this.it(e);var n=this.dt.get(e);if(!n){var r=n=new Fn(this.it(e),ue,`ObservableMap.key?`,!1);this.dt.set(e,r),pt(r,(function(){return t.dt.delete(e)}))}return n.get()},n.set=function(e,t){var n=this.it(e);if(jt(this)){var r=Nt(this,{type:n?sr:hr,object:this,newValue:t,name:e});if(!r)return this;t=r.newValue}return n?this.rn(e,t):this.en(e,t),this},n.delete=function(e){var t=this;if(jt(this)&&!Nt(this,{type:`delete`,object:this,name:e}))return!1;if(this.it(e)){var n=Pt(this),r=n?{observableKind:`map`,debugObjectName:this.tt,type:`delete`,object:this,oldValue:this.vt.get(e).Ot,name:e}:null;return Dt((function(){var n;t.lt.reportChanged(),(n=t.dt.get(e))==null||n.gt(!1),t.vt.get(e).gt(void 0),t.vt.delete(e)})),n&&It(this,r),!0}return!1},n.rn=function(e,t){var n=this.vt.get(e);if((t=n.xt(t))!==R.UNCHANGED){var r=Pt(this),i=r?{observableKind:`map`,debugObjectName:this.tt,type:sr,object:this,oldValue:n.Ot,name:e,newValue:t}:null;n.gt(t),r&&It(this,i)}},n.en=function(e,t){var n=this;Dt((function(){var r,i=new Fn(t,n.Jt,`ObservableMap.key`,!1);n.vt.set(e,i),t=i.Ot,(r=n.dt.get(e))==null||r.gt(!0),n.lt.reportChanged()}));var r=Pt(this);r&&It(this,r?{observableKind:`map`,debugObjectName:this.tt,type:hr,object:this,name:e,newValue:t}:null)},n.get=function(e){return this.has(e)?this.Qt(this.vt.get(e).get()):this.Qt(void 0)},n.Qt=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.keys=function(){return this.lt.reportObserved(),this.vt.keys()},n.values=function(){var e=this,t=this.keys();return Vt({next:function(){var n=t.next(),r=n.done;return{done:r,value:r?void 0:e.get(n.value)}}})},n.entries=function(){var e=this,t=this.keys();return Vt({next:function(){var n=t.next(),r=n.done,i=n.value;return{done:r,value:r?void 0:[i,e.get(i)]}}})},n[Symbol.iterator]=function(){return this.entries()},n.forEach=function(e,t){for(var n,r=C(this);!(n=r()).done;){var i=n.value;e.call(t,i[1],i[0],this)}},n.merge=function(e){var n=this;return _r(e)&&(e=new Map(e)),Dt((function(){var r,i;c(e)?function(e){var t=Object.keys(e);if(!fn)return t;var n=Object.getOwnPropertySymbols(e);return n.length?[].concat(t,n.filter((function(t){return sn.propertyIsEnumerable.call(e,t)}))):t}(e).forEach((function(t){return n.set(t,e[t])})):Array.isArray(e)?e.forEach((function(e){return n.set(e[0],e[1])})):p(e)?(r=Object.getPrototypeOf(e),i=Object.getPrototypeOf(r),Object.getPrototypeOf(i)!==null&&t(19,e),e.forEach((function(e,t){return n.set(t,e)}))):e!=null&&t(20,e)})),this},n.clear=function(){var e=this;Dt((function(){Ge((function(){for(var t,n=C(e.keys());!(t=n()).done;)e.delete(t.value)}))}))},n.replace=function(e){var n=this;return Dt((function(){for(var r,i=function(e){if(p(e)||_r(e))return e;if(Array.isArray(e))return new Map(e);if(c(e)){var n=new Map;for(var r in e)n.set(r,e[r]);return n}return t(21,e)}(e),a=new Map,o=!1,s=C(n.vt.keys());!(r=s()).done;){var l=r.value;if(!i.has(l))if(n.delete(l))o=!0;else{var u=n.vt.get(l);a.set(l,u)}}for(var d,f=C(i.entries());!(d=f()).done;){var m=d.value,h=m[0],g=m[1],_=n.vt.has(h);if(n.set(h,g),n.vt.has(h)){var v=n.vt.get(h);a.set(h,v),_||(o=!0)}}if(!o)if(n.vt.size!==a.size)n.lt.reportChanged();else for(var y=n.vt.keys(),b=a.keys(),x=y.next(),S=b.next();!x.done;){if(x.value!==S.value){n.lt.reportChanged();break}x=y.next(),S=b.next()}n.vt=a})),this},n.toString=function(){return`[object ObservableMap]`},n.toJSON=function(){return Array.from(this)},n._t=function(e){return Ft(this,e)},n.St=function(e){return Mt(this,e)},S(e,[{key:`size`,get:function(){return this.lt.reportObserved(),this.vt.size}},{key:Symbol.toStringTag,get:function(){return`Map`}}])}(),_r=f(`ObservableMap`,gr),vr={},yr=function(){function e(e,n,r){var i=this;n===void 0&&(n=le),r===void 0&&(r=`ObservableSet`),this.tt=void 0,this[P]=vr,this.vt=new Set,this.st=void 0,this.ut=void 0,this.et=void 0,this.dehancer=void 0,this.Jt=void 0,this.tt=r,a(Set)||t(22),this.Jt=function(e,t){return n(e,t,r)},$t((function(){i.st=ce(i.tt),e&&i.replace(e)}))}var n=e.prototype;return n.Qt=function(e){return this.dehancer===void 0?e:this.dehancer(e)},n.clear=function(){var e=this;Dt((function(){Ge((function(){for(var t,n=C(e.vt.values());!(t=n()).done;)e.delete(t.value)}))}))},n.forEach=function(e,t){for(var n,r=C(this);!(n=r()).done;){var i=n.value;e.call(t,i,i,this)}},n.add=function(e){var t=this;if(jt(this)){var n=Nt(this,{type:hr,object:this,newValue:e});if(!n)return this;e=n.newValue}if(!this.has(e)){Dt((function(){t.vt.add(t.Jt(e,void 0)),t.st.reportChanged()}));var r=Pt(this);r&&It(this,r?{observableKind:`set`,debugObjectName:this.tt,type:hr,object:this,newValue:e}:null)}return this},n.delete=function(e){var t=this;if(jt(this)&&!Nt(this,{type:`delete`,object:this,oldValue:e}))return!1;if(this.has(e)){var n=Pt(this),r=n?{observableKind:`set`,debugObjectName:this.tt,type:`delete`,object:this,oldValue:e}:null;return Dt((function(){t.st.reportChanged(),t.vt.delete(e)})),n&&It(this,r),!0}return!1},n.has=function(e){return this.st.reportObserved(),this.vt.has(this.Qt(e))},n.entries=function(){var e=this.values();return Ht({next:function(){var t=e.next(),n=t.value,r=t.done;return r?{value:void 0,done:r}:{value:[n,n],done:r}}})},n.keys=function(){return this.values()},n.values=function(){this.st.reportObserved();var e=this,t=this.vt.values();return Ht({next:function(){var n=t.next(),r=n.done;return r?{value:void 0,done:r}:{value:e.Qt(n.value),done:r}}})},n.intersection=function(e){return m(e)&&!br(e)?e.intersection(this):new Set(this).intersection(e)},n.union=function(e){return m(e)&&!br(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)&&!br(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)&&!br(e)?e.isDisjointFrom(this):new Set(this).isDisjointFrom(e)},n.replace=function(e){var n=this;return br(e)&&(e=new Set(e)),Dt((function(){Array.isArray(e)||m(e)?(n.clear(),e.forEach((function(e){return n.add(e)}))):e!=null&&t(`Cannot initialize set from `+e)})),this},n._t=function(e){return Ft(this,e)},n.St=function(e){return Mt(this,e)},n.toJSON=function(){return Array.from(this)},n.toString=function(){return`[object ObservableSet]`},n[Symbol.iterator]=function(){return this.values()},S(e,[{key:`size`,get:function(){return this.st.reportObserved(),this.vt.size}},{key:Symbol.toStringTag,get:function(){return`Set`}}])}(),br=f(`ObservableSet`,yr),xr=Object.create(null),Sr=function(){function e(e,t,n,r){t===void 0&&(t=new Map),r===void 0&&(r=bn),this.h=void 0,this.j=void 0,this.tt=void 0,this.un=void 0,this.lt=void 0,this.ut=void 0,this.et=void 0,this.v=void 0,this.p=void 0,this.on=void 0,this.sn=void 0,this.h=e,this.j=t,this.tt=n,this.un=r,this.lt=new gn(`ObservableObject.keys`),this.p=c(this.h)}var n=e.prototype;return n.O=function(e){return this.j.get(e).get()},n.S=function(e,t){var n=this.j.get(e);if(n instanceof Ln)return n.set(t),!0;if(jt(this)){var r=Nt(this,{type:sr,object:this.v||this.h,name:e,newValue:t});if(!r)return null;t=r.newValue}if((t=n.xt(t))!==R.UNCHANGED){var i=Pt(this),a=i?{type:sr,observableKind:`object`,debugObjectName:this.tt,object:this.v||this.h,oldValue:n.Ot,name:e,newValue:t}:null;n.gt(t),i&&It(this,a)}return!0},n.ct=function(e){return R.trackingDerivation&&!g(this.h,e)&&this.it(e),this.h[e]},n.ht=function(e,t,n){return n===void 0&&(n=!1),g(this.h,e)?this.j.has(e)?this.S(e,t):n?Reflect.set(this.h,e,t):(this.h[e]=t,!0):this.s(e,{value:t,enumerable:!0,writable:!0,configurable:!0},this.un,n)},n.it=function(e){if(!R.trackingDerivation)return e in this.h;this.sn||=new Map;var t=this.sn.get(e);return t||(t=new Fn(e in this.h,ue,`ObservableObject.key?`,!1),this.sn.set(e,t)),t.get()},n.o=function(e,n){if(!0===n&&(n=this.un),!1!==n){if(!(e in this.h)){var r;if((r=this.h[hn])!=null&&r[e])return;t(1,n.i,this.tt+`.`+e.toString())}for(var i=this.h;i&&i!==sn;){var a=an(i,e);if(a){var o=n.o(this,e,a,i);if(o===0)return;if(o===1)break}i=Object.getPrototypeOf(i)}Kt(this,0,e)}},n.s=function(e,t,n,r){if(r===void 0&&(r=!1),!0===n&&(n=this.un),!1===n)return this.l(e,t,r);var i=n.s(this,e,t,r);return i&&Kt(this,0,e),i},n.l=function(e,t,n){n===void 0&&(n=!1);try{et();var r=this.Ut(e);if(!r)return r;if(jt(this)){var i=Nt(this,{object:this.v||this.h,name:e,type:hr,newValue:t.value});if(!i)return null;var a=i.newValue;t.value!==a&&(t=ee({},t,{value:a}))}if(n){if(!Reflect.defineProperty(this.h,e,t))return!1}else on(this.h,e,t);this.fn(e,t.value)}finally{tt()}return!0},n.g=function(e,t,n,r){r===void 0&&(r=!1);try{et();var i=this.Ut(e);if(!i)return i;if(jt(this)){var a=Nt(this,{object:this.v||this.h,name:e,type:hr,newValue:t});if(!a)return null;t=a.newValue}var o=Wt(e),s={configurable:!R.safeDescriptors||this.p,enumerable:!0,get:o.get,set:o.set};if(r){if(!Reflect.defineProperty(this.h,e,s))return!1}else on(this.h,e,s);var c=new Fn(t,n,`ObservableObject.key`,!1);this.j.set(e,c),this.fn(e,c.Ot)}finally{tt()}return!0},n.m=function(e,t,n){n===void 0&&(n=!1);try{et();var r=this.Ut(e);if(!r)return r;if(jt(this)&&!Nt(this,{object:this.v||this.h,name:e,type:hr,newValue:void 0}))return null;t.name||=`ObservableObject.key`,t.context=this.v||this.h;var i=Wt(e),a={configurable:!R.safeDescriptors||this.p,enumerable:!1,get:i.get,set:i.set};if(n){if(!Reflect.defineProperty(this.h,e,a))return!1}else on(this.h,e,a);this.j.set(e,new Ln(t)),this.fn(e,void 0)}finally{tt()}return!0},n.Ut=function(e,t){if(t===void 0&&(t=!1),!g(this.h,e))return!0;if(jt(this)&&!Nt(this,{object:this.v||this.h,name:e,type:`remove`}))return null;try{var n;et();var r=Pt(this),i=this.j.get(e),a=void 0;if(!i&&r&&(a=an(this.h,e)?.value),t){if(!Reflect.deleteProperty(this.h,e))return!1}else delete this.h[e];i&&(this.j.delete(e),i instanceof Fn&&(a=i.Ot),rt(i)),this.lt.reportChanged(),(n=this.sn)==null||(n=n.get(e))==null||n.set(e in this.h),r&&r&&It(this,{type:`remove`,observableKind:`object`,object:this.v||this.h,debugObjectName:this.tt,oldValue:a,name:e})}finally{tt()}return!0},n._t=function(e){return Ft(this,e)},n.St=function(e){return Mt(this,e)},n.fn=function(e,t){var n,r=Pt(this);r&&r&&It(this,r?{type:hr,observableKind:`object`,debugObjectName:this.tt,object:this.v||this.h,name:e,newValue:t}:null),(n=this.sn)==null||(n=n.get(e))==null||n.set(!0),this.lt.reportChanged()},n.rt=function(){return this.lt.reportObserved(),pn(this.h)},n.nt=function(){return this.lt.reportObserved(),Object.keys(this.h)},e}(),z=f(`ObservableObjectAdministration`,Sr),Cr=qt(0),wr=function(){var e=!1,t={};return Object.defineProperty(t,`0`,{set:function(){e=!0}}),Object.create(t)[0]=1,!1===e}(),Tr=0,Er=function(){};dr=Er,fr=Array.prototype,Object.setPrototypeOf?Object.setPrototypeOf(dr.prototype,fr):dr.prototype.__proto__===void 0?dr.prototype=fr:dr.prototype.__proto__=fr;var Dr=function(e){function t(t,n,r,i){var a;return r===void 0&&(r=`ObservableArray`),i===void 0&&(i=!1),a=e.call(this)||this,$t((function(){var e=new lr(r,n,i,!0);e.v=a,d(a,P,e),t&&t.length&&a.spliceWithArray(0,0,t),wr&&Object.defineProperty(a,`0`,Cr)})),a}ne(t,e);var n=t.prototype;return n.concat=function(){this[P].st.reportObserved();var e=[...arguments];return Array.prototype.concat.apply(this.slice(),e.map((function(e){return Bt(e)?e.slice():e})))},n[Symbol.iterator]=function(){var e=this,t=0;return tn({next:function(){return t<e.length?{value:e[t++],done:!1}:{done:!0,value:void 0}}})},S(t,[{key:`length`,get:function(){return this[P].Ft()},set:function(e){this[P].Xt(e)}},{key:Symbol.toStringTag,get:function(){return`Array`}}])}(Er);Object.entries(ur).forEach((function(e){var t=e[0];t!==`concat`&&u(Dr.prototype,t,e[1])})),Jt(1e3);var Or=sn.toString,kr=n().Iterator?.prototype||{};[`Symbol`,`Map`,`Set`].forEach((function(e){n()[e]===void 0&&t(`MobX requires global '`+e+`' to be available or polyfilled`)})),typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__==`object`&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:ot,extras:{getDebugName:Qt},$mobx:P}),e.$mobx=P,e.FlowCancellationError=tr,e.ObservableMap=gr,e.ObservableSet=yr,e.Reaction=Wn,e._allowStateChanges=Re,e._allowStateChangesInsideComputed=ct,e._allowStateReadsEnd=Ye,e._allowStateReadsStart=Je,e._autoAction=Qn,e._endAction=Le,e._getAdministration=Zt,e._getGlobalState=function(){return R},e._interceptReads=function(e,t,n){var r;return _r(e)||Bt(e)||In(e)?r=Zt(e):Gt(e)&&(r=Zt(e,t)),r.dehancer=typeof t==`function`?t:n,function(){r.dehancer=void 0}},e._isComputingDerivation=function(){return R.trackingDerivation!==null},e._resetGlobalState=function(){var e=new Vn;for(var t in e)Bn.indexOf(t)===-1&&(R[t]=e[t]);R.allowStateChanges=!R.enforceActions},e._startAction=Ie,e.action=Zn,e.autorun=ut,e.comparer=vn,e.computed=An,e.configure=function(e){!0===e.isolateGlobalState&&function(){if((R.pendingReactions.length||R.inBatch||R.isRunningReactions)&&t(36),Un=!0,Hn){var e=n();--e.__mobxInstanceCount==0&&(e.__mobxGlobals=void 0),R=new Vn}}();var r,i,a=e.useProxies,o=e.enforceActions;if(a!==void 0&&(R.useProxies=a===`always`||a!==`never`&&typeof Proxy<`u`),a===`ifavailable`&&(R.verifyProxies=!0),o!==void 0){var s=o===`always`?`always`:o===`observed`;R.enforceActions=s,R.allowStateChanges=!0!==s&&s!==`always`}[`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`disableErrorBoundaries`,`safeDescriptors`].forEach((function(t){t in e&&(R[t]=!!e[t])})),R.allowStateReads=!R.observableRequiresReaction,e.reactionScheduler&&(r=e.reactionScheduler,i=Gn,Gn=function(e){return r((function(){return i(e)}))})},e.createAtom=ce,e.defineProperty=function(e,n,r){if(Gt(e))return e[P].l(n,r);t(39)},e.entries=function(e){return Gt(e)?Ct(e).map((function(t){return[t,e[t]]})):_r(e)?Ct(e).map((function(t){return[t,e.get(t)]})):br(e)?Array.from(e.entries()):Bt(e)?e.map((function(e,t){return[t,e]})):void t(7)},e.extendObservable=ht,e.flow=ir,e.flowResult=function(e){return e},e.get=function(e,n){if(wt(e,n))return Gt(e)?e[P].ct(n):_r(e)?e.get(n):Bt(e)?e[n]:void t(11)},e.getAtom=Xt,e.getDebugName=Qt,e.getDependencyTree=function(e,t){return gt(Xt(e,t))},e.getObserverTree=function(e,t){return _t(Xt(e,t))},e.has=wt,e.intercept=function(e,t,n){return a(n)?function(e,t,n){return Zt(e,t).St(n)}(e,t,n):function(e,t){return Zt(e).St(t)}(e,t)},e.isAction=lt,e.isBoxedObservable=In,e.isComputed=function(e){return bt(e)},e.isComputedProp=function(e,t){return bt(e,t)},e.isFlow=yt,e.isFlowCancellationError=function(e){return e instanceof tr},e.isObservable=St,e.isObservableArray=Bt,e.isObservableMap=_r,e.isObservableObject=Gt,e.isObservableProp=function(e,t){return xt(e,t)},e.isObservableSet=br,e.keys=Ct,e.makeAutoObservable=function(e,t,n){return c(e)?ht(e,e,t,n):($t((function(){var r=Ut(e,n)[P];if(!e[or]){var i=Object.getPrototypeOf(e),a=new Set([].concat(pn(e),pn(i)));a.delete(`constructor`),a.delete(P),u(i,or,a)}e[or].forEach((function(e){return r.o(e,!t||!(e in t)||t[e])}))})),e)},e.makeObservable=function(e,t,n){return $t((function(){var r=Ut(e,n)[P];t??=function(e){return g(e,hn)||u(e,hn,ee({},e[hn])),e[hn]}(e),pn(t).forEach((function(e){return r.o(e,t[e])}))})),e},e.observable=Dn,e.observe=function(e,t,n,r){return a(n)?function(e,t,n,r){return Zt(e,t)._t(n,r)}(e,t,n,r):function(e,t,n){return Zt(e)._t(t,n)}(e,t,n)},e.onBecomeObserved=ft,e.onBecomeUnobserved=pt,e.onReactionError=function(e){return R.globalReactionErrorHandlers.push(e),function(){var t=R.globalReactionErrorHandlers.indexOf(e);t>=0&&R.globalReactionErrorHandlers.splice(t,1)}},e.override=yn,e.ownKeys=Tt,e.reaction=function(e,t,n){function r(){if(p=!1,!h.isDisposed){var t=!1,r=s;h.track((function(){var n=Re(!1,(function(){return e(h)}));t=f||!m(s,n),s=n})),(f&&n.fireImmediately||!f&&t)&&l(s,r,h),f=!1}}var i;n===void 0&&(n=ln);var a,o,s,c=n.name??`Reaction`,l=Zn(c,n.onError?(a=n.onError,o=t,function(){try{return o.apply(this,arguments)}catch(e){a.call(this,e)}}):t),u=!n.scheduler&&!n.delay,d=dt(n),f=!0,p=!1,m=n.compareStructural?vn.structural:n.equals||vn.default,h=new Wn(c,(function(){f||u?r():p||(p=!0,d(r))}),n.onError,n.requiresObservable);return(i=n)!=null&&(i=i.signal)!=null&&i.aborted||h.Y(),h.Z(n?.signal)},e.remove=function(e,n){Gt(e)?e[P].Ut(n):_r(e)||br(e)?e.delete(n):Bt(e)?(typeof n!=`number`&&(n=parseInt(n,10)),e.splice(n,1)):t(9)},e.runInAction=ct,e.set=function e(n,r,i){if(arguments.length!==2||br(n))Gt(n)?n[P].ht(r,i):_r(n)?n.set(r,i):br(n)?n.add(r):Bt(n)?(typeof r!=`number`&&(r=parseInt(r,10)),r<0&&t(`Invalid index: '`+r+`'`),et(),r>=n.length&&(n.length=r+1),n[r]=i,tt()):t(8);else{et();var a=r;try{for(var o in a)e(n,o,a[o])}finally{tt()}}},e.spy=ot,e.toJS=function(e){return function e(t,n){if(typeof t!=`object`||!t||t instanceof Date||!St(t))return t;if(In(t)||L(t))return e(t.get(),n);if(n.has(t))return n.get(t);if(Bt(t)){var r=Et(n,t,Array(t.length));return t.forEach((function(t,i){r[i]=e(t,n)})),r}if(br(t)){var i=Et(n,t,new Set);return t.forEach((function(t){i.add(e(t,n))})),i}if(_r(t)){var a=Et(n,t,new Map);return t.forEach((function(t,r){a.set(r,e(t,n))})),a}var o=Et(n,t,{});return Tt(t).forEach((function(r){sn.propertyIsEnumerable.call(t,r)&&(o[r]=e(t[r],n))})),o}(e,new Map)},e.trace=function(){},e.transaction=Dt,e.untracked=Ge,e.values=function(e){return Gt(e)?Ct(e).map((function(t){return e[t]})):_r(e)?Ct(e).map((function(t){return e.get(t)})):br(e)?Array.from(e.values()):Bt(e)?e.slice():void t(6)},e.when=function(e,t,n){return arguments.length===1||t&&typeof t==`object`?kt(e,t):Ot(e,t,n||{})}})),m_=me((e=>{Object.defineProperty(e,`__esModule`,{value:!0});var t={0:`Invalid value for configuration 'enforceActions', expected 'never', 'always' or 'observed'`,1:function(e,t){return`Cannot apply '`+e+`' to '`+t.toString()+`': Field not found.`},5:`'keys()' can only be used on observable objects, arrays, sets and maps`,6:`'values()' can only be used on observable objects, arrays, sets and maps`,7:`'entries()' can only be used on observable objects, arrays and maps`,8:`'set()' can only be used on observable objects, arrays and maps`,9:`'remove()' can only be used on observable objects, arrays and maps`,10:`'has()' can only be used on observable objects, arrays and maps`,11:`'get()' can only be used on observable objects, arrays and maps`,12:`Invalid annotation`,13:`Dynamic observable objects cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)`,14:`Intercept handlers should return nothing or a change object`,15:`Observable arrays cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)`,16:`Modification exception: the internal structure of an observable array was changed.`,17:function(e,t){return`[mobx.array] Index out of bounds, `+e+` is larger than `+t},18:`mobx.map requires Map polyfill for the current browser. Check babel-polyfill or core-js/es6/map.js`,19:function(e){return`Cannot initialize from classes that inherit from Map: `+e.constructor.name},20:function(e){return`Cannot initialize map from `+e},21:function(e){return`Cannot convert to map from '`+e+`'`},22:`mobx.set requires Set polyfill for the current browser. Check babel-polyfill or core-js/es6/set.js`,23:`It is not possible to get index atoms from arrays`,24:function(e){return`Cannot obtain administration from `+e},25:function(e,t){return`the entry '`+e+`' does not exist in the observable map '`+t+`'`},26:`please specify a property`,27:function(e,t){return`no observable property '`+e.toString()+`' found on the observable object '`+t+`'`},28:function(e){return`Cannot obtain atom from `+e},29:`Expecting some object`,30:`invalid action stack. did you forget to finish an action?`,31:`missing option for computed: get`,32:function(e,t){return`Cycle detected in computation `+e+`: `+t},33:function(e){return`The setter of computed value '`+e+`' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?`},34:function(e){return`[ComputedValue '`+e+`'] It is not possible to assign a new value to a computed value.`},35:"There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`",36:`isolateGlobalState should be called before MobX is running any reactions`,37:function(e){return"[mobx] `observableArray."+e+"()` mutates the array in-place, which is not allowed inside a derivation. Use `array.slice()."+e+"()` instead"},38:`'ownKeys()' can only be used on observable objects`,39:`'defineProperty()' can only be used on observable objects`};function n(e){var n=[...arguments].slice(1),r=typeof e==`string`?e:t[e];throw typeof r==`function`&&(r=r.apply(null,n)),Error(`[MobX] `+r)}var r={};function i(){return typeof globalThis<`u`?globalThis:typeof window<`u`?window:typeof global<`u`?global:typeof self<`u`?self:r}var a=Object.assign,o=Object.getOwnPropertyDescriptor,s=Object.defineProperty,c=Object.prototype,l=[];Object.freeze(l);var u={};Object.freeze(u);var d=typeof Proxy<`u`,f=Object.toString();function p(){d||n("`Proxy` objects are not available in the current environment. Please configure MobX to enable a fallback implementation.`")}function m(e){F.verifyProxies&&n(`MobX is currently configured to be able to run in ES5 mode, but in ES5 MobX won't be able to `+e)}function h(){return++F.mobxGuid}function g(e){var t=!1;return function(){if(!t)return t=!0,e.apply(this,arguments)}}var _=function(){};function v(e){return typeof e==`function`}function y(e){switch(typeof e){case`string`:case`symbol`:case`number`:return!0}return!1}function b(e){return typeof e==`object`&&!!e}function x(e){if(!b(e))return!1;var t=Object.getPrototypeOf(e);if(t==null)return!0;var n=Object.hasOwnProperty.call(t,`constructor`)&&t.constructor;return typeof n==`function`&&n.toString()===f}function S(e){var t=e?.constructor;return t?t.name===`GeneratorFunction`||t.displayName===`GeneratorFunction`:!1}function C(e,t,n){s(e,t,{enumerable:!1,writable:!0,configurable:!0,value:n})}function ee(e,t,n){s(e,t,{enumerable:!1,writable:!1,configurable:!0,value:n})}function te(e,t){var n=`isMobX`+e;return t.prototype[n]=!0,function(e){return b(e)&&e[n]===!0}}function ne(e){return e!=null&&Object.prototype.toString.call(e)===`[object Map]`}function re(e){return Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(e)))===null}function ie(e){return e!=null&&Object.prototype.toString.call(e)===`[object Set]`}var ae=Object.getOwnPropertySymbols!==void 0;function w(e){var t=Object.keys(e);if(!ae)return t;var n=Object.getOwnPropertySymbols(e);return n.length?[].concat(t,n.filter(function(t){return c.propertyIsEnumerable.call(e,t)})):t}var T=typeof Reflect<`u`&&Reflect.ownKeys?Reflect.ownKeys:ae?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames;function oe(e){return typeof e==`string`?e:typeof e==`symbol`?e.toString():new String(e).toString()}function se(e){return e===null?null:typeof e==`object`?``+e:e}function ce(e,t){return c.hasOwnProperty.call(e,t)}var le=Object.getOwnPropertyDescriptors||function(e){var t={};return T(e).forEach(function(n){t[n]=o(e,n)}),t};function ue(e,t){return!!(e&t)}function de(e,t,n){return n?e|=t:e&=~t,e}function fe(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function pe(e,t,n){if(be())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var i=new(e.bind.apply(e,r));return n&&xe(i,n.prototype),i}function me(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,Ce(r.key),r)}}function he(e,t,n){return t&&me(e.prototype,t),n&&me(e,n),Object.defineProperty(e,`prototype`,{writable:!1}),e}function ge(e,t){var n=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=we(e))||t&&e&&typeof e.length==`number`){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw TypeError(`Invalid attempt to iterate non-iterable instance.
57
57
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function E(){return E=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},E.apply(null,arguments)}function _e(e){return _e=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},_e(e)}function ve(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,xe(e,t)}function ye(e){try{return Function.toString.call(e).indexOf(`[native code]`)!==-1}catch{return typeof e==`function`}}function be(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(be=function(){return!!e})()}function xe(e,t){return xe=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},xe(e,t)}function Se(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function Ce(e){var t=Se(e,`string`);return typeof t==`symbol`?t:t+``}function we(e,t){if(e){if(typeof e==`string`)return fe(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?fe(e,t):void 0}}function Te(e){var t=typeof Map==`function`?new Map:void 0;return Te=function(e){if(e===null||!ye(e))return e;if(typeof e!=`function`)throw TypeError(`Super expression must either be null or a function`);if(t!==void 0){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return pe(e,arguments,_e(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),xe(n,e)},Te(e)}var Ee=Symbol(`mobx-stored-annotations`);function De(e){function t(t,n){if(je(n))return e.decorate_20223_(t,n);Oe(t,n,e)}return Object.assign(t,e)}function Oe(e,t,r){ce(e,Ee)||C(e,Ee,E({},e[Ee])),qe(r)&&!ce(e[Ee],t)&&n(`'`+(e.constructor.name+`.prototype.`+t.toString())+`' is decorated with 'override', but no such decorated member was found on prototype.`),ke(e,r,t),qe(r)||(e[Ee][t]=r)}function ke(e,t,r){if(!qe(t)&&ce(e[Ee],r)){var i=e.constructor.name+`.prototype.`+r.toString(),a=e[Ee][r].annotationType_,o=t.annotationType_;n(`Cannot apply '@`+o+`' to '`+i+`':`+(`
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,D,new Zi(e,new Map,String(r),Lt(t))),e}var $i=te(`ObservableObjectAdministration`,Zi);function ea(e){return Yi[e]||(Yi[e]={get:function(){return this[D].getObservablePropValue_(e)},set:function(t){return this[D].setObservablePropValue_(e,t)}})}function ta(e){return b(e)?$i(e[D]):!1}function na(e,t,n){var r;e.appliedAnnotations_[n]=t,(r=e.target_[Ee])==null||delete r[n]}function ra(e,t,r){if(Ta(t)||n(`Cannot annotate '`+e.name_+`.`+r.toString()+`': Invalid annotation.`),!qe(t)&&ce(e.appliedAnnotations_,r)){var i=e.name_+`.`+r.toString(),a=e.appliedAnnotations_[r].annotationType_,o=t.annotationType_;n(`Cannot apply '`+o+`' to '`+i+`':`+(`
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 ia=ua(0),aa=function(){var e=!1,t={};return Object.defineProperty(t,`0`,{set:function(){e=!0}}),Object.create(t)[0]=1,e===!1}(),oa=0,sa=function(){};function ca(e,t){Object.setPrototypeOf?Object.setPrototypeOf(e.prototype,t):e.prototype.__proto__===void 0?e.prototype=t:e.prototype.__proto__=t}ca(sa,Array.prototype);var la=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,_a(function(){var e=new Ai(r,n,i,!0);e.proxy_=a,ee(a,D,e),t&&t.length&&a.spliceWithArray(0,0,t),aa&&Object.defineProperty(a,`0`,ia)}),a}ve(t,e);var n=t.prototype;return n.concat=function(){this[D].atom_.reportObserved();var e=[...arguments];return Array.prototype.concat.apply(this.slice(),e.map(function(e){return Li(e)?e.slice():e}))},n[Symbol.iterator]=function(){var e=this,t=0;return Ca({next:function(){return t<e.length?{value:e[t++],done:!1}:{done:!0,value:void 0}}})},he(t,[{key:`length`,get:function(){return this[D].getArrayLength_()},set:function(e){this[D].setArrayLength_(e)}},{key:Symbol.toStringTag,get:function(){return`Array`}}])}(sa);Object.entries(Mi).forEach(function(e){var t=e[0],n=e[1];t!==`concat`&&C(la.prototype,t,n)});function ua(e){return{enumerable:!1,configurable:!0,get:function(){return this[D].get_(e)},set:function(t){this[D].set_(e,t)}}}function da(e){s(la.prototype,``+e,ua(e))}function fa(e){if(e>oa){for(var t=oa;t<e+100;t++)da(t);oa=e}}fa(1e3);function pa(e,t,n){return new la(e,t,n)}function ma(e,t){if(typeof e==`object`&&e){if(Li(e))return t!==void 0&&n(23),e[D].atom_;if(qi(e))return e.atom_;if(Hi(e)){if(t===void 0)return e.keysAtom_;var r=e.data_.get(t)||e.hasMap_.get(t);return r||n(25,t,ga(e)),r}if(ta(e)){if(!t)return n(26);var i=e[D].values_.get(t);return i||n(27,t,ga(e)),i}if(Pe(e)||rn(e)||R(e))return e}else if(v(e)&&R(e[D]))return e[D];n(28)}function ha(e,t){if(e||n(29),t!==void 0)return ha(ma(e,t));if(Pe(e)||rn(e)||R(e)||Hi(e)||qi(e))return e;if(e[D])return e[D];n(24,e)}function ga(e,t){var n;if(t!==void 0)n=ma(e,t);else if(ur(e))return e.name;else n=ta(e)||Hi(e)||qi(e)?ha(e):ma(e);return n.name_}function _a(e){var t=P(),n=Qt(!0);Mn();try{return e()}finally{Nn(),$t(n),gn(t)}}var va=c.toString;function ya(e,t,n){return n===void 0&&(n=-1),ba(e,t,n)}function ba(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=va.call(e);if(o!==va.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=xa(e),t=xa(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(!ba(e[u],t[u],n-1,r,i))return!1}else{var d=Object.keys(e),f=d.length;if(Object.keys(t).length!==f)return!1;for(var p=0;p<f;p++){var m=d[p];if(!(ce(t,m)&&ba(e[m],t[m],n-1,r,i)))return!1}}return r.pop(),i.pop(),!0}function xa(e){return Li(e)?e.slice():ne(e)||Hi(e)||ie(e)||qi(e)?Array.from(e.entries()):e}var Sa=i().Iterator?.prototype||{};function Ca(e){return e[Symbol.iterator]=wa,Object.assign(Object.create(Sa),e)}function wa(){return this}function Ta(e){return e instanceof Object&&typeof e.annotationType_==`string`&&v(e.make_)&&v(e.extend_)}[`Symbol`,`Map`,`Set`].forEach(function(e){i()[e]===void 0&&n(`MobX requires global '`+e+`' to be available or polyfilled`)}),typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__==`object`&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:Xn,extras:{getDebugName:ga},$mobx:D}),e.$mobx=D,e.FlowCancellationError=jr,e.ObservableMap=Vi,e.ObservableSet=Ki,e.Reaction=L,e._allowStateChanges=Zt,e._allowStateChangesInsideComputed=lr,e._allowStateReadsEnd=vn,e._allowStateReadsStart=_n,e._autoAction=cr,e._endAction=Xt,e._getAdministration=ha,e._getGlobalState=Tn,e._interceptReads=Rr,e._isComputingDerivation=ln,e._resetGlobalState=En,e._startAction=Yt,e.action=sr,e.autorun=dr,e.comparer=Be,e.computed=Ut,e.configure=Cr,e.createAtom=Fe,e.defineProperty=ti,e.entries=Xr,e.extendObservable=wr,e.flow=Fr,e.flowResult=Ir,e.get=ei,e.getAtom=ma,e.getDebugName=ga,e.getDependencyTree=Tr,e.getObserverTree=Dr,e.has=$r,e.intercept=zr,e.isAction=ur,e.isBoxedObservable=tn,e.isComputed=Ur,e.isComputedProp=Wr,e.isFlow=Lr,e.isFlowCancellationError=Mr,e.isObservable=Kr,e.isObservableArray=Li,e.isObservableMap=Hi,e.isObservableObject=ta,e.isObservableProp=qr,e.isObservableSet=qi,e.keys=Jr,e.makeAutoObservable=Ti,e.makeObservable=Ci,e.observable=k,e.observe=ri,e.onBecomeObserved=vr,e.onBecomeUnobserved=yr,e.onReactionError=zn,e.override=Ke,e.ownKeys=ni,e.reaction=mr,e.remove=Qr,e.runInAction=lr,e.set=Zr,e.spy=Xn,e.toJS=si,e.trace=ci,e.transaction=ui,e.untracked=hn,e.values=Yr,e.when=di})),l_=me(((e,t)=>{process.env.NODE_ENV===`production`?t.exports=s_():t.exports=c_()}))();function u_(e){if(Array.isArray(e))return Object.freeze(e.map(u_));if(typeof e==`object`&&e){let t=Object.create(null),n=Object.entries(e).sort(([e],[t])=>e<t?-1:+(e>t));for(let[e,r]of n)t[e]=u_(r);return Object.freeze(t)}return e}function d_(e){let t=typeof e;if(t===`string`||t===`number`||t===`boolean`)return t;throw TypeError(`Variable values must be string|number|boolean (got ${t})`)}function f_(e){return typeof e==`string`?e:String(e)}function p_(e){if(typeof e==`number`)return e;if(typeof e==`boolean`)return+!!e;let t=e.trim();if(t===``)throw TypeError(`Cannot cast empty string to number`);let n=Number(t);if(!Number.isFinite(n))throw TypeError(`Cannot cast ${JSON.stringify(e)} to number`);return n}function m_(e){if(typeof e==`boolean`)return e;if(typeof e==`number`){if(e===0||e===1)return e===1;throw TypeError(`Cannot cast number ${e} to bool (only 0 and 1 are accepted)`)}if(e===`true`)return!0;if(e===`false`)return!1;throw TypeError(`Cannot cast ${JSON.stringify(e)} to bool (expected "true" or "false")`)}function h_(e,t){if(!(e instanceof V))throw TypeError(`template function expected a RichText fragment, got ${typeof e==`object`?Object.prototype.toString.call(e):typeof e}`);let n=e.copy();return n.style=g_(e.style).add(t),n}function g_(e){if(e instanceof z)return e;try{return z.parse(e)}catch(t){throw t instanceof xr?TypeError(`template function cannot style a fragment whose base style "${e}" is not a style definition: a style name resolves only against the theme of a render`,{cause:t}):t}}function __(e){return{fn:(t=>h_(t,e)),argTypes:[`liftable`],returnType:`T`}}function v_(e){return{fn:((t,n)=>h_(n,new z({[e]:N.parse(t)}))),argTypes:[`string`,`liftable`],returnType:`T`}}function y_(e,t){return new z({[e]:t})}function b_(){let e={};for(let t of vr)e[t]=__(y_(t,!0)),e[`not_${t}`]=__(y_(t,!1));for(let[t,n]of Object.entries(br))e[t]=__(y_(n,!0));return e}const x_={fn:((e,t)=>h_(t,z.parse(e))),argTypes:[`string`,`liftable`],returnType:`T`},S_={fn:((e,t)=>h_(t,new z({link:e}))),argTypes:[`string`,`liftable`],returnType:`T`};function C_(){return{fg:v_(`color`),bg:v_(`bgcolor`),...b_(),link:S_,style:x_}}function w_(e,t){if(!Bn.test(e.trim()))throw TypeError(`${t} expected a color (#RRGGBB or #RRGGBBAA), got ${JSON.stringify(e)} — to use a palette name here, wrap it: ${t} (color ${JSON.stringify(e)}) …`);return Vn(e)}function T_(e,t){return{fn:t,argTypes:e,returnType:`string`}}function E_(e,t,n,r){let i=r===void 0||e>=r.min&&e<=r.max;if(!Number.isFinite(e)||!i){let i=r===void 0?`a finite number`:`within ${r.min}..${r.max} (${r.note})`;throw RangeError(`${t}'s ${n} must be ${i}, got ${e}`+(e===void 0?` — ${t} takes it as its last argument`:``))}return e}const D_=T_([`string`,`int`],((e,t)=>qn(w_(e,`darken`),E_(t,`darken`,`levels`)).hex)),O_=T_([`string`,`int`],((e,t)=>qn(w_(e,`lighten`),-E_(t,`lighten`,`levels`)).hex)),k_={min:0,max:100,note:`0 = from, 100 = toward`},A_=T_([`string`,`string`,`float`],((e,t,n)=>gn(w_(e,`mix`),w_(t,`mix`),E_(n,`mix`,`percentage`,k_)/100).hex)),j_={min:1,max:21,note:`4.5 = AA body text, 3 = AA large text`},M_=T_([`string`],(e=>Jn(w_(e,`contrastOn`)).hex)),N_=e=>T_([`string`,`string`,`float`],((t,n,r)=>Yn(w_(t,`readableOn`),w_(n,`readableOn`),E_(r,`readableOn`,`ratio`,j_),e()).hex)),P_={hueShift:`shiftHue`,chromaScale:`scaleChroma`,lightnessScale:`scaleLightness`,lightnessShift:`shiftLightness`};function F_(){let e={};for(let[t,n]of Object.entries(P_)){let r=t;e[n]=T_([`string`,`float`],((e,t)=>{let i={...kn,[r]:E_(t,n,`amount`)};return L.fromRgba(w_(e,n)).applyKey(i).toRgba().hex}))}return e}function I_(e=()=>j.TRUECOLOR){return{darken:D_,lighten:O_,mix:A_,contrastOn:M_,readableOn:N_(e),...F_()}}function L_(e,t){if(e.length===0)throw RangeError(`ramp needs at least one stop after the easing: ramp <value> <easing> <position> <color> …`);if(e.length%2!=0)throw RangeError(`ramp's last stop (position ${String(e[e.length-1])}) has no color — stops are <position> <color> pairs`);let n=[];for(let r=0;r<e.length;r+=2)n.push({at:e[r],color:Hn(t,e[r+1])});return n}function R_(e){return{color:{fn:(t=>Hn(e(),t).hex),argTypes:[`string`],returnType:`string`},ramp:{fn:((...t)=>{if(t.length<2)throw RangeError(`ramp needs a value and an easing before its stops (got ${t.length}): ramp <value> "linear"|"step" <position> <color> …`);let[n,r,...i]=t;return new _r(gr(r),L_(i,e())).at(n).hex}),argTypes:[`float`,`string`],argTypePattern:`alternating`,returnType:`string`}}}function z_(e){return{...C_(),...I_(e)}}new z({color:`red`,dim:!0});const B_=/^(?:(?:global|apac|au|eu|us|us-east-\d|us-west-\d|eu-west-\d|eu-central-\d)\.)?(?:anthropic\.|azure_ai\/|bedrock\/|vertex_ai\/)?claude-(?:(?<family>opus|sonnet|haiku)-(?<newMajor>\d+)(?:-(?<newMinor>\d))?|(?<oldMajor>\d+)(?:-(?<oldMinor>\d))?-(?<oldFamily>opus|sonnet|haiku))(?:[-@]\d{8})?(?:-v\d+:\d+)?(?:-latest)?$/i,V_=/^(?<family>opus|sonnet|haiku)\s+(?<major>\d+)(?:\.(?<minor>\d))?$/i;function H_(e){if(!e)return`Claude`;let t=e.trim().replace(/\s*\([^)]*\)\s*$/,``).replace(/\s*\[[^\]]*\]\s*$/,``).trim(),n=t.match(B_);if(n?.groups){let{family:e,newMajor:t,newMinor:r,oldMajor:i,oldMinor:a,oldFamily:o}=n.groups,s=e||o,c=t||i,l=r||a;if(s&&c)return`${s.charAt(0).toUpperCase()+s.slice(1).toLowerCase()} ${l?`${c}.${l}`:c}`}let r=t.match(V_);if(r?.groups){let e=r.groups.family,t=r.groups.major,n=r.groups.minor;return`${e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()} ${n?`${t}.${n}`:t}`}return t||e}function U_(e){let t=e.match(V_);if(!t?.groups)return e;let n=t.groups.family,r=t.groups.major,i=t.groups.minor;return`${n.charAt(0).toUpperCase()}${i?`${r}.${i}`:r}`}function W_(e){let t=e.split(`/`),n=t.length-1;return t.map((e,t)=>{if(t===n)return e;let r=e.match(/^\.*./);return r?r[0]:e}).join(`/`)}function G_(e){return e.toLocaleString()}function K_(e){if(e.length===0)throw Error(`a cascade needs at least one stop, e.g. "0:calm"`);let t=[];for(let[n,r]of e.entries()){let e=r.indexOf(`:`),i=e<0?NaN:Number(r.slice(0,e));if(!Number.isFinite(i))throw Error(`cascade stop ${n} ("${r}") must be "<position>:<result>", e.g. "80:hot" — the position must be a number`);let a=t[n-1];if(a!==void 0&&i<a.at)throw Error(`cascade stops must be in ascending position order; stop ${n} at ${i} follows stop ${n-1} at ${a.at}`);t.push({at:i,text:r.slice(e+1)})}return t}function q_(e,t){if(!Number.isFinite(e))throw Error(`a cascade needs a finite value, got ${e}`);let n=-1;for(;n+1<t.length&&t[n+1].at<=e;)n++;return(n<0?t[0]:t[n]).text}const J_=[`▁`,`▂`,`▃`,`▄`,`▅`,`▆`,`▇`,`█`],Y_=J_.length;function X_(e,t){let n=t===void 0?e:t<=0?[]:e.slice(-t);if(n.length===0)return``;let r=n[0],i=n[0];for(let e of n)e<r&&(r=e),e>i&&(i=e);let a=i-r,o=``;for(let e of n){let t=a===0?0:Math.round((e-r)/a*(Y_-1));o+=J_[t]}return o}function Z_(e){let t=[];for(let n of e.split(`,`)){let e=n.trim();if(e===``)continue;let r=Number(e);if(!Number.isFinite(r))throw TypeError(`sparkline: non-numeric series element ${JSON.stringify(n)}`);t.push(r)}return t}const Q_=Ca(),$_=[...Na];function ev(){return{basename:{fn:e=>l(e),argTypes:[`string`]},dirname:{fn:e=>u(e),argTypes:[`string`]},abbreviatePath:{fn:e=>W_(e),argTypes:[`string`]},int:{fn:e=>p_(e),argTypes:[`value`]},string:{fn:e=>f_(e),argTypes:[`value`]},bool:{fn:e=>m_(e),argTypes:[`value`]},urlEncode:{fn:e=>encodeURIComponent(e),argTypes:[`string`]},themes:{fn:()=>Q_,argTypes:[]},styles:{fn:()=>$_,argTypes:[]},sparkline:{fn:(e,t)=>X_(Z_(e),t),argTypes:[`string`,`int`]},cascade:{fn:(e,...t)=>q_(e,K_(t)),argTypes:[`float`,`string`]}}}function tv(e=()=>new Date){return{minutesUntilReset:{fn:t=>Math.round(Math.max(0,t*1e3-e().getTime())/6e4),argTypes:[`int`]},formatInteger:{fn:e=>G_(e),argTypes:[`int`]},round:{fn:e=>Math.round(e),argTypes:[`float`]},formatModelName:{fn:e=>H_(e),argTypes:[`string`]},shortenModelName:{fn:e=>U_(e),argTypes:[`string`]}}}function nv(e,t=()=>new Date,n){return sf({fromString:e=>new V(e),toString:e=>e.plain,isT:e=>e instanceof V,clock:t,missingKey:`error`,funcs:{...Jp(),...ig(),...Pm(),...nh(),...Bp(t),...Af(),...cm(),...z_(n),...ev(),...tv(t),...e??{}}})}function rv(e){return iv(e,new Set(e.names()),``)}function iv(e,t,n){return new Proxy(Object.create(null),{has(e,r){if(typeof r!=`string`)return!1;let i=n?`${n}.${r}`:r;if(t.has(i))return!0;let a=`${i}.`;for(let e of t)if(e.startsWith(a))return!0;return!1},get(r,i){if(typeof i!=`string`)return;let a=n?`${n}.${i}`:i;if(t.has(a))return e.getKind(a)===`document`?ov(a,e.readDocument(a)):e.read(a);let o=`${a}.`;for(let n of t)if(n.startsWith(o))return iv(e,t,a)}})}function av(e,t){return new Proxy(e,{has:(e,t)=>t===`settings`||Reflect.has(e,t),get:(e,n)=>n===`settings`?t:Reflect.get(e,n)})}function ov(e,t){switch(t.kind){case`ok`:return t.value;case`absent`:throw Error(`variable "${e}" has no value yet: its source has not completed a scan`);case`failed`:throw Error(`variable "${e}": ${t.reason}`)}}function J(e){return{kind:`ok`,value:e}}const Y={kind:`absent`};function X(e){return{kind:`failed`,reason:e}}function sv(e,t){return e?.kind===`ok`?e.value:t}function cv(e,t,n){return t.ok?J(t.stdout):t.reason===`non-zero`&&n===`absent`||t.reason===`non-zero`&&n===t.exitCode?Y:X(`${e}: ${[t.reason,t.exitCode==null?null:`exit ${t.exitCode}`,t.error??lv(t.stderr)].filter(Boolean).join(`, `)}`)}function lv(e){return e.trim().split(`
87
- `,1)[0]??``}function uv(e,t){if(e.kind!==`ok`)return e;let n=t(e.value);return n===null?Y:J(n)}function dv(e){if(e.kind!==`ok`)return e;let t=e.value.trim();return t?J(t):Y}const fv=/^[A-Za-z]:[\\/]/;function pv(e){let t=e.trim();if(fv.test(t))return null;let n=t.match(/^(?:[^@/]+@)?(\[[^\]]+\]):(.*)$/)??t.match(/^(?:[^@/:]+@)?([^/:]+):(?!\/\/)(.*)$/),r=n?`ssh://${n[1]}/${n[2].replace(/^\/+/,``)}`:t,i;try{i=new URL(r)}catch{return null}return{scheme:i.protocol.replace(/:$/,``),host:i.hostname.toLowerCase(),port:i.port,path:i.pathname.replace(/^\/+/,``).replace(/\/+$/,``)}}function mv(e){return pv(e)?.host||null}function hv(e){let t=mv(e);return t?t===`github.com`||t.endsWith(`.github.com`)?`github`:/(^|\.)gitlab\./.test(t)?`gitlab`:null:null}function gv(e){let t=new Map;for(let n of e.split(`
88
- `)){let e=n.match(/^remote\.(.+)\.url\s+(\S.*)$/);if(!e)continue;let r=t.get(e[1])??[];r.push(e[2].trim()),t.set(e[1],r)}return[...t].map(([e,t])=>({name:e,urls:t}))}function _v(e){return e.urls.find(e=>Sv(e)!==null)??e.urls[0]??null}function vv(e){return e.find(e=>e.name===`origin`)??e[0]??null}function yv(e){let t=vv(e);return t?_v(t):null}function bv(e){let t=vv(e);return t?t.urls.find(e=>hv(e)!==null)??_v(t):null}function xv(e){let t=(pv(e)?.path??e.replace(/[\\/]+$/,``)).split(`/`);return(t[t.length-1]??``).replace(/\.git$/,``)||null}function Sv(e){let t=pv(e);if(!t)return null;let n=t.scheme===`https`?{scheme:`https`,port:t.port}:t.scheme===`http`?{scheme:`http`,port:t.port}:t.scheme===`ssh`||t.scheme===`git`?{scheme:`https`,port:``}:null;if(!n||!t.host)return null;let r=t.path.replace(/\.git$/,``);if(!r)return null;let i=n.port?`${t.host}:${n.port}`:t.host;return`${n.scheme}://${i}/${r}`}function Cv(e){let t=yv(e);return t===null?null:Sv(t)}function wv(e,t,n,r){return t.ok?r(t.stdout):t.reason===`spawn-error`&&/ENOENT/i.test(t.error??``)||t.reason===`non-zero`&&n.test(t.stderr)?Y:X(`${e}: ${[t.reason,t.exitCode==null?null:`exit ${t.exitCode}`,t.error??lv(t.stderr)].filter(Boolean).join(`, `)}`)}function Tv(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Ev(e){let t=`detached`,n=Y,r=Y,i=Y,a=0,o=0,s=0,c=0;for(let l of e.split(`
89
- `)){if(!l)continue;if(l.startsWith(`# `)){let e=l.slice(2);if(e.startsWith(`branch.oid `)){let t=e.slice(11).trim();n=t===`(initial)`?Y:J(t)}else if(e.startsWith(`branch.head `)){let n=e.slice(12).trim();t=n===`(detached)`?`detached`:n}else if(e.startsWith(`branch.upstream `))r=J(e.slice(16).trim());else if(e.startsWith(`branch.ab `)){let t=e.slice(10).trim().match(/^\+(\d+)\s+-(\d+)$/);t&&(i=J({ahead:parseInt(t[1],10),behind:parseInt(t[2],10)}))}continue}let e=l[0];if(e===`1`||e===`2`){let e=l.slice(2,4);e[0]!==`.`&&a++,e[1]!==`.`&&o++}else e===`u`?c++:e===`?`&&s++}let l=`clean`;return c>0?l=`conflicts`:(a||o||s)&&(l=`dirty`),{branch:t,status:l,aheadBehind:i,oid:n,upstream:r,workingTree:{staged:a,unstaged:o,untracked:s,conflicts:c}}}function Dv(e){let t;try{t=JSON.parse(e)}catch(e){return X(`gh pr view: unparseable JSON (${e instanceof Error?e.message:String(e)})`)}if(!Tv(t))return X(`gh pr view: JSON is not an object`);let{number:n,state:r,url:i}=t;return typeof n!=`number`||typeof r!=`string`||typeof i!=`string`?X(`gh pr view: missing number/state/url`):r.toUpperCase()===`OPEN`?J({number:n,state:r,url:i}):Y}function Ov(e){let t;try{t=JSON.parse(e)}catch(e){return X(`glab mr view: unparseable JSON (${e instanceof Error?e.message:String(e)})`)}if(!Tv(t))return X(`glab mr view: JSON is not an object`);let n=t.iid,r=t.state,i=t.web_url;return typeof n!=`number`||typeof r!=`string`||typeof i!=`string`?X(`glab mr view: missing iid/state/web_url`):r.toLowerCase()===`opened`?J({number:n,state:r,url:i}):Y}function kv(e){try{let t=r.statSync(e);return{key:`${t.dev}:${t.ino}`,stamp:`${t.mtimeMs}:${t.size}`}}catch{return null}}var Av=class{isGitRepo(e){try{return r.existsSync(c.join(e,`.git`))}catch{return!1}}async execGitAsync(e,t){return Ee({bin:`git`,args:[...e],cwd:t.cwd,env:{...process.env,GIT_OPTIONAL_LOCKS:`0`},timeoutMs:t.timeout,category:`git`})}async resolveEffectiveGitDir(e,t){return this.isWorktree(e)?J(e):t&&this.isGitRepo(t)?J(t):this.isGitRepo(e)?J(e):this.findGitRoot(e)}async findGitRoot(e){let t=c.resolve(e);for(;;){if(this.isGitRepo(t))return J(t);let e=c.dirname(t);if(e===t)return Y;t=e}}async getGitInfo(e,t={},n){try{return await this.computeGitInfo(e,t,n)}catch(e){return X(`git: ${e instanceof Error?e.message:String(e)}`)}}async computeGitInfo(e,t={},n){let r,i=this.isWorktree(e);if(i)r=e;else if(n&&this.isGitRepo(n))r=n;else if(this.isGitRepo(e))r=e;else{let t=await this.findGitRoot(e);if(t.kind!==`ok`)return t;r=t.value}let a=await this.getCoreAsync(r);if(a.kind!==`ok`)return a;let o={branch:a.value.branch,status:a.value.status,aheadBehind:a.value.aheadBehind};t.showWorkingTree&&(o.workingTree=a.value.workingTree),t.showSha&&(o.sha=uv(a.value.oid,e=>e.slice(0,7))),t.showUpstream&&(o.upstream=a.value.upstream),t.showTag&&(o.tag=await this.getNearestTagAsync(r)),t.showTimeSinceCommit&&(o.timeSinceCommit=await this.timeSinceCommit(r,a.value.oid)),t.showStashCount&&(o.stashCount=this.getStashCount(r));let s=t.showRepoName||t.showRepoUrl?await this.getRemotesAsync(r):void 0;return s!==void 0&&t.showRepoName&&(o.repoName=uv(s,e=>this.repoNameFrom(e,r)),o.isWorktree=i),s!==void 0&&t.showRepoUrl&&(o.repoUrl=uv(s,Cv)),t.showOperation&&(o.operation=this.getOngoingOperation(r)),J(o)}resolveGitDir(e){let t=c.join(e,`.git`);try{if(r.existsSync(t)&&r.statSync(t).isFile()){let n=r.readFileSync(t,`utf-8`).match(/^gitdir:\s*(.+)$/m);if(n?.[1])return c.resolve(e,n[1].trim())}}catch{}return t}getOngoingOperation(e){try{let t=this.resolveGitDir(e);return r.existsSync(c.join(t,`MERGE_HEAD`))?J(`MERGE`):r.existsSync(c.join(t,`CHERRY_PICK_HEAD`))?J(`CHERRY-PICK`):r.existsSync(c.join(t,`REVERT_HEAD`))?J(`REVERT`):r.existsSync(c.join(t,`BISECT_LOG`))?J(`BISECT`):r.existsSync(c.join(t,`rebase-merge`))||r.existsSync(c.join(t,`rebase-apply`))?J(`REBASE`):Y}catch(e){return X(`git operation probe: ${e instanceof Error?e.message:String(e)}`)}}async getNearestTagAsync(e){return dv(cv(`git describe --tags`,await this.execGitAsync([`describe`,`--tags`,`--abbrev=0`],{cwd:e,timeout:2e3}),`absent`))}async timeSinceCommit(e,t){return t.kind===`ok`?uv(await this.commitTimestampMs(e,t.value),e=>Math.floor((Date.now()-e)/1e3)):t}commitTimes=new Map;async commitTimestampMs(e,t){let n=this.commitTimes.get(t);if(n!==void 0)return this.commitTimes.delete(t),this.commitTimes.set(t,n),n;let r=this.readCommitTimestampMs(e,t);for(this.commitTimes.set(t,r),r.then(e=>{e.kind!==`ok`&&this.commitTimes.get(t)===r&&this.commitTimes.delete(t)},()=>{this.commitTimes.get(t)===r&&this.commitTimes.delete(t)});this.commitTimes.size>256;){let e=this.commitTimes.keys().next().value;if(e===void 0)break;this.commitTimes.delete(e)}return r}async readCommitTimestampMs(e,t){let n=dv(cv(`git log -1`,await this.execGitAsync([`log`,`-1`,`--format=%ct`,t,`--`],{cwd:e,timeout:2e3}),`absent`));if(n.kind!==`ok`)return n;let r=parseInt(n.value,10)*1e3;return Number.isNaN(r)?X(`git log -1: unparseable timestamp "${n.value}"`):J(r)}resolveCommonGitDir(e){let t=this.resolveGitDir(e);try{let e=r.readFileSync(c.join(t,`commondir`),`utf-8`).trim();if(e)return c.resolve(t,e)}catch{}return t}getStashCount(e){let t=c.join(this.resolveCommonGitDir(e),`logs`,`refs`,`stash`),n;try{n=r.readFileSync(t,`utf-8`)}catch(e){return e.code===`ENOENT`?J(0):X(`git stash reflog ${t}: ${e instanceof Error?e.message:String(e)}`)}let i=n.trim();return J(i?i.split(`
90
- `).length:0)}async getRemotesAsync(e){let t=kv(c.join(this.resolveCommonGitDir(e),`config`));if(t===null)return this.readRemotes(e);let{key:n,stamp:r}=t,i=this.remotesByConfig.get(n);if(i!==void 0&&i.stamp===r)return this.remotesByConfig.delete(n),this.remotesByConfig.set(n,i),i.remotes;let a=this.readRemotes(e);for(this.remotesByConfig.set(n,{stamp:r,remotes:a}),a.then(e=>{let t=this.remotesByConfig.get(n);e.kind!==`ok`&&t?.remotes===a&&this.remotesByConfig.delete(n)},()=>{this.remotesByConfig.get(n)?.remotes===a&&this.remotesByConfig.delete(n)});this.remotesByConfig.size>256;){let e=this.remotesByConfig.keys().next().value;if(e===void 0)break;this.remotesByConfig.delete(e)}return a}remotesByConfig=new Map;async readRemotes(e){let t=cv(`git config --get-regexp remote url`,await this.execGitAsync([`config`,`--local`,`--get-regexp`,`^remote\\..*\\.url$`],{cwd:e,timeout:2e3}),1);return t.kind===`failed`?t:J(t.kind===`ok`?gv(t.value):[])}repoNameFrom(e,t){let n=yv(e);return(n===null?null:xv(n))??c.basename(t)}async getRepoRemoteUrl(e){let t=await this.getRemotesAsync(e);if(t.kind!==`ok`)return t;let n=bv(t.value);return n===null?Y:J(n)}async execForgeAsync(e,t,n){return Ee({bin:e,args:[...t],cwd:n.cwd,env:{...process.env},timeoutMs:n.timeout,category:`forge`})}async resolvePullRequest(e,t){let n=hv(t);return n===`github`?wv(`gh pr view`,await this.execForgeAsync(`gh`,[`pr`,`view`,`--json`,`number,state,url`],{cwd:e,timeout:5e3}),/no (open )?pull requests? found/i,Dv):n===`gitlab`?wv(`glab mr view`,await this.execForgeAsync(`glab`,[`mr`,`view`,`--output`,`json`],{cwd:e,timeout:5e3}),/no (open )?merge requests? (found|available)/i,Ov):Y}isWorktree(e){try{let t=c.join(e,`.git`);return!!(r.existsSync(t)&&r.statSync(t).isFile())}catch{return!1}}async getCoreAsync(e){E(`[GIT-EXEC] Running git status --porcelain=v2 in ${e}`);let t=cv(`git status --porcelain=v2 --branch`,await this.execGitAsync([`status`,`--porcelain=v2`,`--branch`],{cwd:e,timeout:2e3}),`failed`);return t.kind===`ok`?J(Ev(t.value)):t}};const jv=(e,t)=>E(t);var Mv=class{slots=new Map;maxWatchers;counters;logger;closed=!1;constructor(e={}){this.maxWatchers=e.maxWatchers??128,this.counters=e.counters,this.logger=e.logger??jv}acquire(e,t,n){if(this.closed)return{release:()=>{}};let r=this.slots.get(e);if(r)return r.refcount++,r.onInvalidate=n,r.lastTouched=Date.now(),this.slots.delete(e),this.slots.set(e,r),this.makeHandle(e);let i={key:e,watchers:[],refcount:1,debounceTimer:null,onInvalidate:n,targets:t,lastTouched:Date.now()};return this.openWatchers(i),this.slots.set(e,i),this.counters&&this.counters.watchersOpened++,this.evictIfNeeded(),this.makeHandle(e)}makeHandle(e){let t=!1;return{release:()=>{if(t)return;t=!0;let n=this.slots.get(e);n&&(n.refcount=Math.max(0,n.refcount-1),n.refcount===0&&(this.closeSlot(n),this.slots.delete(e)))}}}openWatchers(e){let t=()=>{e.debounceTimer||(e.debounceTimer=setTimeout(()=>{e.debounceTimer=null;try{e.onInvalidate()}catch(e){this.logger(`warn`,`watcher invalidate threw: ${e.message}`)}},50),e.debounceTimer.unref())};for(let n of e.targets.files)try{let i=r.watch(n,{persistent:!1},t);i.on(`error`,e=>{this.logger(`warn`,`watcher error ${n}: ${e.message}`)}),e.watchers.push(i)}catch(e){this.logger(`warn`,`watch failed ${n}: ${e.message}`)}for(let n of e.targets.dirs)try{let i=n.filenames?new Set(n.filenames):null,a=r.watch(n.path,{persistent:!1},(e,n)=>{i&&(!n||!i.has(n))||t()});a.on(`error`,e=>{this.logger(`warn`,`watcher error ${n.path}: ${e.message}`)}),e.watchers.push(a)}catch(e){this.logger(`warn`,`watch failed ${n.path}: ${e.message}`)}}closeSlot(e){e.debounceTimer&&=(clearTimeout(e.debounceTimer),null);for(let t of e.watchers)try{t.close()}catch{}e.watchers=[],this.counters&&this.counters.watchersClosed++}evictIfNeeded(){for(;this.slots.size>this.maxWatchers;){let e=this.slots.keys().next().value;if(e===void 0)break;let t=this.slots.get(e);this.closeSlot(t),this.slots.delete(e),this.counters&&this.counters.watchersEvicted++;try{t.onInvalidate()}catch{}this.logger(`info`,`watcher LRU evict ${e}`)}}size(){return this.slots.size}closeAll(){this.closed=!0;for(let e of this.slots.values())this.closeSlot(e);this.slots.clear()}},Nv=class{running=new Set;again=new Set;run(e,t){return this.again.add(e),this.running.has(e)?{kind:`queued`}:(this.running.add(e),{kind:`started`,done:this.loop(e,t)})}async loop(e,t){try{do this.again.delete(e),await t();while(this.again.has(e))}finally{this.running.delete(e),this.again.delete(e)}}clear(){this.running.clear(),this.again.clear()}get size(){return this.running.size}};const Pv=(e,t)=>E(t),Fv={showSha:!0,showStashCount:!0};function Iv(e){let t=Object.keys(e).sort(),n={};for(let r of t)n[r]=e[r];return JSON.stringify(n)}function Lv(e){let t=t=>{try{return r.statSync(c.join(e,t)).mtimeMs}catch{return 0}};return{head:t(`HEAD`),index:t(`index`)}}function Rv(e,t){return e.head!==t.head||e.index!==t.index}function zv(e){let t=[],n=c.join(e,`refs/heads`);try{r.statSync(n).isDirectory()&&t.push({path:n})}catch{}return{files:[c.join(e,`HEAD`),c.join(e,`index`)],dirs:t}}var Bv=class extends Av{entries=new Map;subscribersByRepo=new Map;fetchInFlight=new Map;resolutions=new Map;prCache=new Map;prFetchInFlight=new Map;refreshes=new Nv;hits=0;misses=0;invalidations=0;inner;ttlMs;maxEntries;watchers;ownsWatchers;logger;sanityTimer=null;constructor(e={}){super(),this.inner=e.inner??new Av,this.ttlMs=e.ttlMs??3e4,this.maxEntries=e.maxEntries??64,this.logger=e.logger??Pv,e.watchers?(this.watchers=e.watchers,this.ownsWatchers=!1):(this.watchers=new Mv({logger:this.logger}),this.ownsWatchers=!0);let t=e.sanityIntervalMs??3e5;t>0&&(this.sanityTimer=setInterval(()=>this.runSanityCheck(),t),this.sanityTimer.unref())}getWatcherRegistry(){return this.watchers}getStats(){return{size:this.entries.size,hits:this.hits,misses:this.misses,invalidations:this.invalidations,watchers:this.watchers.size()}}resolveEffectiveGitDir(e,t){let n=`${e}|${t??``}`,r=Date.now(),i=this.resolutions.get(n);if(i&&r-i.computedAt<this.ttlMs)return this.resolutions.delete(n),this.resolutions.set(n,i),i.dir;let a=this.inner.resolveEffectiveGitDir(e,t);return this.resolutions.set(n,{dir:a,computedAt:r}),a.catch(()=>{this.resolutions.get(n)?.dir===a&&this.resolutions.delete(n)}),this.evictResolutionsIfNeeded(),a}evictResolutionsIfNeeded(){for(;this.resolutions.size>this.maxEntries;){let e=this.resolutions.keys().next().value;if(e===void 0)break;this.resolutions.delete(e)}}async getGitInfo(e,t={},n){let r=await this.resolveEffectiveGitDir(e,n);return r.kind===`ok`?this.getGitInfoForRoot(r.value,t):r}getGitInfoForRoot(e,t){let n=`${e}|${Iv(t)}`,r=Date.now(),i=this.entries.get(n);if(i&&r-i.computedAt<this.ttlMs)return this.entries.delete(n),this.entries.set(n,i),this.hits++,Promise.resolve(J(i.info));let a=this.fetchInFlight.get(n);if(a)return a;let o=this.doFetch(e,n,t,r).finally(()=>{this.fetchInFlight.delete(n)});return this.fetchInFlight.set(n,o),o}async doFetch(e,t,n,r){this.misses++;let i=this.inner.resolveGitDir(e),a=Lv(i),o=await this.inner.getGitInfo(e,n);if(o.kind!==`ok`)return o;let s=o.value;n.showPullRequest&&(s.pullRequest=await this.getPullRequestCached(e,s.branch)),this.dropEntry(t);let c=this.watchers.acquire(`git:${e}`,zv(i),()=>this.invalidateRepo(e));return this.entries.set(t,{info:s,computedAt:r,mtime:a,watcher:c,repoRoot:e}),this.evictIfNeeded(),o}async getPullRequestCached(e,t){let n=await this.inner.getRepoRemoteUrl(e);if(n.kind===`failed`)return n;if(n.kind===`absent`)return Y;let r=n.value,i=`${e}|${t}|${r}`,a=Date.now(),o=this.prCache.get(i);if(o){let e=o.pr.kind===`failed`?45e3:3e5;if(a-o.computedAt<e)return this.prCache.delete(i),this.prCache.set(i,o),o.pr}let s=this.prFetchInFlight.get(i);if(s)return s;let c=this.inner.resolvePullRequest(e,r).then(e=>(this.prCache.set(i,{pr:e,computedAt:Date.now()}),this.evictPrIfNeeded(),e)).finally(()=>{this.prFetchInFlight.delete(i)});return this.prFetchInFlight.set(i,c),c}evictPrIfNeeded(){for(;this.prCache.size>this.maxEntries;){let e=this.prCache.keys().next().value;if(e===void 0)break;this.prCache.delete(e)}}deliverable(e,t){return e.kind===`failed`?(this.logger(`warn`,`git fetch failed (${t}): ${e.reason}`),null):e.kind===`ok`?e.value:null}subscribe(e,t){let n=!1,r=null;return{firstDelivery:(async()=>{let i=await this.resolveEffectiveGitDir(e);if(n)return;if(i.kind!==`ok`){i.kind===`failed`&&this.logger(`warn`,`git resolve failed (subscribe ${e}): ${i.reason}`),this.safeInvoke(t,null);return}let a=i.value,o=this.subscribersByRepo.get(a);if(!o){let t=this.inner.resolveGitDir(a),n=this.watchers.acquire(`git:${a}`,zv(t),()=>this.invalidateRepo(a));o={workingDir:e,repoRoot:a,callbacks:new Set,watcher:n},this.subscribersByRepo.set(a,o)}o.callbacks.add(t),r={repoRoot:a,entry:o};let s=await this.getGitInfoForRoot(a,{...Fv});n||this.safeInvoke(t,this.deliverable(s,a))})(),unsubscribe:()=>{if(n=!0,!r)return;let{repoRoot:e,entry:i}=r;i.callbacks.delete(t),i.callbacks.size===0&&(i.watcher.release(),this.subscribersByRepo.delete(e))}}}invalidateRepo(e){let t=0;for(let[n,r]of this.entries)r.repoRoot===e&&(r.watcher.release(),this.entries.delete(n),t++);t>0&&(this.invalidations+=t,this.logger(`info`,`gitCache invalidate ${e} dropped=${t}`)),this.refreshSubscribers(e)}refreshSubscribers(e){let t=this.subscribersByRepo.get(e);!t||t.callbacks.size===0||this.refreshes.run(e,()=>this.refreshOnce(e))}async refreshOnce(e){let t=this.subscribersByRepo.get(e);if(!t||t.callbacks.size===0)return;let n=await this.getGitInfoForRoot(e,{...Fv}),r=this.deliverable(n,e),i=this.subscribersByRepo.get(e);if(!(!i||i.callbacks.size===0))for(let e of[...i.callbacks])i.callbacks.has(e)&&this.safeInvoke(e,r)}safeInvoke(e,t){try{e(t)}catch(e){this.logger(`warn`,`git subscriber threw: ${e.message??String(e)}`)}}dropEntry(e){let t=this.entries.get(e);t&&(t.watcher.release(),this.entries.delete(e))}evictIfNeeded(){for(;this.entries.size>this.maxEntries;){let e=this.entries.keys().next().value;if(e===void 0)break;this.dropEntry(e),this.logger(`info`,`gitCache evict ${e}`)}}runSanityCheck(){let e=new Map;for(let t of this.entries.values()){let n=e.get(t.repoRoot);n||(n=Lv(this.inner.resolveGitDir(t.repoRoot)),e.set(t.repoRoot,n)),Rv(t.mtime,n)&&this.invalidateRepo(t.repoRoot)}}runSanityCheckNow(){this.runSanityCheck()}close(){this.sanityTimer&&=(clearInterval(this.sanityTimer),null);for(let e of this.entries.values())e.watcher.release();this.entries.clear();for(let e of this.subscribersByRepo.values())e.callbacks.clear(),e.watcher.release();this.subscribersByRepo.clear(),this.refreshes.clear(),this.fetchInFlight.clear(),this.prCache.clear(),this.prFetchInFlight.clear(),this.resolutions.clear(),this.ownsWatchers&&this.watchers.closeAll()}};const Vv=/\r\n|\r|\n/g,Hv=e=>J(e.replace(Vv,` `).trim());function Uv(e){return t=>{let n=e.exec(t)?.[1];return n===void 0?X(`regex no-match`):J(n.replace(Vv,` `))}}const Wv=e=>{try{return J(JSON.parse(e))}catch(e){return X(`JSON parse failed: ${e.message}`)}};function Gv(e,t){return t.kind!==`ttl`||t.durationMs>=500?t:(E(`declareShell "${e}": ttl ${t.durationMs}ms below floor 500ms; clamping`),{kind:`ttl`,durationMs:500})}function Kv(e){let t=/^(\d+(?:\.\d+)?)(ms|s|m|h)$/.exec(e);if(!t)throw RangeError(`Invalid duration: "${e}"`);let n=parseFloat(t[1]);switch(t[2]){case`ms`:return n;case`s`:return n*1e3;case`m`:return n*6e4;case`h`:return n*36e5;default:throw RangeError(`Unexpected duration unit: "${t[2]}"`)}}const qv=`session.id`;function Jv(e,t){return{where:`output of "${e}"`,read:async()=>{let n=await Ee({bin:`/bin/sh`,args:[`-c`,e],category:`user-shell`,signal:t});if(!n.ok&&n.reason===`aborted`)throw t.reason;return n.ok?J(n.stdout):X(`shell "${e}" ${n.exitCode===null?[n.reason,n.error].filter(e=>e!==void 0).join(`: `):`exited with code ${n.exitCode}`}`)}}}function Yv(e,t,n){return{where:`"${e}"`,read:async()=>{try{let r=await v(e,{encoding:`utf8`,signal:n});return J(t===`first-line`?r.split(/\r?\n/)[0]??``:r)}catch{if(n.aborted)throw n.reason;return X(`file unreadable: ${e}`)}}}}function Xv(e,t,n){if(e.kind!==`ok`)return e;let r=t(e.value);return r.kind===`failed`?X(`${r.reason} in ${n}`):r}const Zv=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],Qv=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],$v=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],ey=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`];function ty(e,t){let n=[[`2006`,e=>String(e.getFullYear())],[`January`,e=>Zv[e.getMonth()]],[`Monday`,e=>$v[e.getDay()]],[`Jan`,e=>Qv[e.getMonth()]],[`Mon`,e=>ey[e.getDay()]],[`15`,e=>String(e.getHours()).padStart(2,`0`)],[`06`,e=>String(e.getFullYear()%100).padStart(2,`0`)],[`01`,e=>String(e.getMonth()+1).padStart(2,`0`)],[`02`,e=>String(e.getDate()).padStart(2,`0`)],[`04`,e=>String(e.getMinutes()).padStart(2,`0`)],[`05`,e=>String(e.getSeconds()).padStart(2,`0`)],[`PM`,e=>e.getHours()<12?`AM`:`PM`],[`pm`,e=>e.getHours()<12?`am`:`pm`],[`1`,e=>String(e.getMonth()+1)],[`2`,e=>String(e.getDate())],[`3`,e=>String(e.getHours()%12||12)],[`4`,e=>String(e.getMinutes())],[`5`,e=>String(e.getSeconds())]],r=``,i=0;for(;i<e.length;){let a=!1;for(let[o,s]of n)if(e.startsWith(o,i)){r+=s(t),i+=o.length,a=!0;break}a||(r+=e[i],i++)}return r}const ny={branch:`string`,sha:`string`,dirty:`boolean`,ahead:`number`,behind:`number`,stash:`number`};function ry(e,t,n,r){if(e===null){if(n!==void 0)return n;let e=ny[t];try{return sy(r,e)}catch{return cy(e)}}switch(t){case`branch`:return e.branch===`detached`?``:e.branch;case`sha`:return sv(e.sha,``);case`dirty`:return e.status!==`clean`;case`ahead`:return sv(e.aheadBehind,{ahead:0,behind:0}).ahead;case`behind`:return sv(e.aheadBehind,{ahead:0,behind:0}).behind;case`stash`:return sv(e.stashCount,0)}}var iy=class{watchers=new Map;subscribe(e,t){let n=this.watchers.get(e);if(!n){let t=new Set,r;try{r=s(e,()=>{for(let e of t)e()})}catch{return()=>{}}n={watcher:r,callbacks:t},this.watchers.set(e,n)}return n.callbacks.add(t),()=>this.unsubscribe(e,t)}unsubscribe(e,t){let n=this.watchers.get(e);n&&(n.callbacks.delete(t),n.callbacks.size===0&&(n.watcher.close(),this.watchers.delete(e)))}dispose(){for(let{watcher:e}of this.watchers.values())e.close();this.watchers.clear()}size(){return this.watchers.size}},ay=class{buckets=new Map;subscribe(e,t){let n=this.buckets.get(e);if(!n){let t=new Set;n={timer:S(()=>{for(let e of t)e()},e),callbacks:t},this.buckets.set(e,n)}return n.callbacks.add(t),()=>this.unsubscribe(e,t)}unsubscribe(e,t){let n=this.buckets.get(e);n&&(n.callbacks.delete(t),n.callbacks.size===0&&(x(n.timer),this.buckets.delete(e)))}dispose(){for(let{timer:e}of this.buckets.values())x(e);this.buckets.clear()}bucketCount(){return this.buckets.size}};function oy(e,t){let n=e;for(let e of t.split(`.`)){if(typeof n!=`object`||!n)return;n=n[e]}return n}function sy(e,t){if(typeof e!=`string`&&typeof e!=`number`&&typeof e!=`boolean`)throw TypeError(`Expected string|number|boolean from payload, got ${typeof e}`);return t===`string`?f_(e):t===`number`?p_(e):m_(e)}function cy(e){return e===`number`?0:e===`boolean`?!1:``}var ly=class{inputMetas=new Map;lastErrors=new Map;watchMgr=new iy;ttlMgr=new ay;gitSubscriptions=new Map;cleanups=[];inFlight=new Map;reads=new Nv;abort=new AbortController;drawn=l_.observable.box(j.TRUECOLOR);drawnAt=()=>this.drawn.get();engine=nv(void 0,void 0,this.drawnAt);gitProvider;ownsGitProvider;sessionState;constructor(e,t=``,n,r){this.store=e,this.defaultEmptyValue=t,n?(this.gitProvider=n,this.ownsGitProvider=!1):(this.gitProvider=new Bv({sanityIntervalMs:0}),this.ownsGitProvider=!0),this.sessionState=r}get variableStore(){return this.store}declareLiteral(e,t){this.store.defineBox(e,d_(t),t)}declareInput(e,t,n,r){let i=r===void 0?this.defaultFor(n):r;this.store.defineBox(e,n,i),this.inputMetas.set(e,{path:t,varDefault:r})}declareEnv(e,t,n){let r=process.env[t];if(r!==void 0){this.store.defineBox(e,`string`,r);return}let i=n===void 0?typeof this.defaultEmptyValue==`string`?this.defaultEmptyValue:``:n;this.store.defineBox(e,`string`,i),this.recordError(e,`env var "${t}" is not set`)}declareShell(e,t,n){this.declareSource(e,Jv(t,this.abort.signal),Gv(e,n.cache),n.parse)}declareFile(e,t,n){this.declareSource(e,Yv(t,n.readMode??`whole`,this.abort.signal),n.cache,n.parse)}declareSource(e,t,n,r){let i=this.publisherFor(e,r,t.where),a=()=>this.runSource(e,t,i);a(),this.registerCachePolicy(e,n,a)}publisherFor(e,t,n){switch(t.kind){case`text`:return this.scalarPublisher(e,Hv,t.default,n);case`regex`:return this.scalarPublisher(e,Uv(t.regex),t.default,n);case`json`:return this.documentPublisher(e,t.default,n)}}scalarPublisher(e,t,n,r){let i=this.stringInitial(n);return this.store.defineBox(e,`string`,i),n=>{let a=Xv(n,t,r);this.noteOutcome(e,a),this.store.setBox(e,sv(a,i))}}documentPublisher(e,t,n){let r=t===void 0?Y:J(t);return this.store.defineDocument(e,r),i=>{let a=Xv(i,Wv,n);this.noteOutcome(e,a),this.store.setDocument(e,a.kind===`ok`||t===void 0?a:r)}}runSource(e,t,n){let r=this.reads.run(e,()=>t.read().then(n,e=>{if(e!==this.abort.signal.reason)throw e}));r.kind===`started`&&this.track(e,r.done)}track(e,t){let n=t.finally(()=>{this.inFlight.get(e)===n&&this.inFlight.delete(e)});this.inFlight.set(e,n)}async settled(e){let t=Date.now()+e;for(;this.inFlight.size>0;){let e=t-Date.now();if(e<=0)break;let n,r=await Promise.race([Promise.all(this.inFlight.values()).then(()=>`settled`),new Promise(t=>{n=setTimeout(()=>t(`deadline`),e)})]);if(clearTimeout(n),r===`deadline`)break}return[...this.inFlight.keys()]}declareTemplate(e,t,n={}){let r=this.engine.parse(t);this.store.defineComputed(e,`string`,t=>{let i=rv(this.store);try{let t=r.evaluate(i).map(e=>e.plain).join(``);return this.lastErrors.delete(e),t}catch(t){let r=t instanceof Error?t.message:String(t);if(this.recordError(e,r),n.varDefault===void 0)throw Error(`variable "${e}": ${r}`);return n.varDefault}});try{this.store.read(e)}catch{}}declareTime(e,t){let n=t.ttlMs??1e3;this.store.defineBox(e,`string`,(e=>{try{return ty(t.format,e)}catch{return this.stringInitial(t.varDefault)}})(new Date));let r=this.ttlMgr.subscribe(n,()=>{try{this.store.setBox(e,ty(t.format,new Date)),this.lastErrors.delete(e)}catch(n){this.applyFallback(e,`string`,t.varDefault,n instanceof Error?n.message:String(n))}});this.cleanups.push(r)}declareGit(e,t){let n=ny[t.field],r=t.varDefault===void 0?cy(n):sy(t.varDefault,n);this.store.defineBox(e,n,r);let i=this.gitSubscriptions.get(t.cwd);if(!i){let e=new Map,n=this.gitProvider.subscribe(t.cwd,t=>{this.store.runInAction(()=>{for(let[n,r]of e)for(let{name:e,varDefault:i}of r)this.store.setBox(e,ry(t,n,i,this.defaultEmptyValue))})});i={fieldSubs:e,firstDelivery:n.firstDelivery,unsubscribe:n.unsubscribe},this.gitSubscriptions.set(t.cwd,i)}let a=i.fieldSubs.get(t.field);a||(a=[],i.fieldSubs.set(t.field,a)),a.push({name:e,varDefault:t.varDefault}),this.track(e,i.firstDelivery)}declareState(e,t){if(!this.sessionState)throw Error(`declareState("${e}"): SourceRegistry was constructed without a SessionState — state-kind variables require a SessionState (the daemon provides one; tests must supply one)`);let n=this.sessionState,r=t.varDefault??this.stringInitial(void 0);this.store.defineComputed(e,`string`,e=>{let i=e(qv);if(typeof i!=`string`||!i)return r;let a=n.get(i,t.key);return a===null?r:a})}applyInput(e){this.store.runInAction(()=>{for(let[t,n]of this.inputMetas){let r=oy(e,n.path),i=this.store.getType(t);if(r!==void 0)try{this.store.setBox(t,sy(r,i)),this.lastErrors.delete(t)}catch(e){this.applyFallback(t,i,n.varDefault,e instanceof Error?e.message:String(e))}else this.applyFallback(t,i,n.varDefault,`input path "${n.path}" not found in payload`)}})}drawAt(e){this.store.runInAction(()=>this.drawn.set(e))}getLastError(e){return this.lastErrors.get(e)}dispose(){this.abort.abort();for(let e of this.cleanups)e();this.cleanups.length=0;for(let e of this.gitSubscriptions.values())e.unsubscribe();this.gitSubscriptions.clear(),this.reads.clear(),this.watchMgr.dispose(),this.ttlMgr.dispose(),this.ownsGitProvider&&this.gitProvider.close()}registerCachePolicy(e,t,n){switch(t.kind){case`never`:break;case`ttl`:{let e=this.ttlMgr.subscribe(t.durationMs,n);this.cleanups.push(e);break}case`watch_file`:{let e=this.watchMgr.subscribe(t.path,n);this.cleanups.push(e);break}case`key`:{let e=this.engine.parse(t.template),r=(0,l_.reaction)(()=>{let t=rv(this.store);try{return e.evaluate(t).map(e=>e.plain).join(``)}catch{return``}},n);this.cleanups.push(r);break}case`depends_on`:{let e=(0,l_.reaction)(()=>t.varNames.map(e=>this.store.changeKey(e)).join(`,`),n);this.cleanups.push(e);break}}}applyFallback(e,t,n,r){if(this.recordError(e,r),n!==void 0){this.store.setBox(e,n);return}try{this.store.setBox(e,sy(this.defaultEmptyValue,t))}catch{this.store.setBox(e,cy(t))}}defaultFor(e){try{return sy(this.defaultEmptyValue,e)}catch{return cy(e)}}stringInitial(e){return e===void 0?typeof this.defaultEmptyValue==`string`?this.defaultEmptyValue:``:e}recordError(e,t){this.lastErrors.set(e,{timestamp:Date.now(),message:t})}noteOutcome(e,t){t.kind===`ok`?this.lastErrors.delete(e):this.recordError(e,t.kind===`failed`?t.reason:`no value`)}};const uy={project_dir:{kind:`input`,path:`workspace.project_dir`,default:``},[qv]:{kind:`input`,path:`session_id`,default:``},transcript_path:{kind:`input`,path:`transcript_path`,default:``},"theme.effective":{kind:`input`,path:`theme.effective`,default:``},"look.effective":{kind:`input`,path:`look.effective`,default:``},"preset.effective":{kind:`input`,path:`preset.effective`,default:``},"preset.customized":{kind:`input`,path:`preset.customized`,type:`boolean`,default:!1},"preset.bundled":{kind:`input`,path:`preset.bundled`,type:`boolean`,default:!0},"style.effective":{kind:`input`,path:`style.effective`,default:``},"progression.effective":{kind:`input`,path:`progression.effective`,default:``},"charset.effective":{kind:`input`,path:`charset.effective`,default:``},"colorCompatibility.effective":{kind:`input`,path:`colorCompatibility.effective`,default:``},"autoWrap.effective":{kind:`input`,path:`autoWrap.effective`,type:`boolean`,default:!0},"padding.effective":{kind:`input`,path:`padding.effective`,type:`number`,default:1},"term.cols":{kind:`input`,path:`term.cols`,type:`number`,default:80},"git.repoUrl":{kind:`input`,path:`git.repoUrl`,default:``}},dy={theme:{configKey:`palette`,sessionKey:`theme`,effectiveVar:`theme.effective`},preset:{configKey:`preset`,sessionKey:`preset`,effectiveVar:`preset.effective`},look:{configKey:`look`,sessionKey:`look`,effectiveVar:`look.effective`},style:{configKey:`style`,sessionKey:`style`,effectiveVar:`style.effective`},progression:{configKey:`progression`,sessionKey:`progression`,effectiveVar:`progression.effective`},charset:{configKey:`charset`,sessionKey:`charset`,effectiveVar:`charset.effective`},colorCompatibility:{configKey:`colorCompatibility`,sessionKey:`colorCompatibility`,effectiveVar:`colorCompatibility.effective`},autoWrap:{configKey:`autoWrap`,sessionKey:`autoWrap`,effectiveVar:`autoWrap.effective`},padding:{configKey:`padding`,sessionKey:`padding`,effectiveVar:`padding.effective`}},fy=Object.values(dy),py=new Map(fy.map(e=>[e.configKey,e.effectiveVar])),my=new Map(fy.map(e=>[e.sessionKey,e.effectiveVar])),hy=new Map(Object.keys(dy).map(e=>[dy[e].sessionKey,e]));function gy(e,t,n){let r=new Set,i=e=>{for(let t of $g(e??``,n).keys())r.add(t)};for(let t of Object.values(e.segments))i(t.template),i(t.bg),i(t.fg),i(t.when);for(let e of t)for(let t of ns(e))i(t.when);for(let t of Object.values(e.variables))t.kind===`template`&&i(t.template),t.kind===`state`&&r.add(qv);for(let t of Object.values(e.actions)){r.add(qv),`copy`in t&&i(t.copy),`open`in t&&i(t.open);let e=`set`in t?my.get(t.set):void 0,n=`persist`in t?py.get(t.persist):void 0;e!==void 0&&r.add(e),n!==void 0&&r.add(n)}return r}function _y(e,t,n){let r=a_({...n,variables:{...n.variables,...e.variables},segments:{...n.segments,...e.segments}}),i={};for(let a of gy(e,t,n.helpers)){if(i_(a,r))continue;let e=uy[a];if(e===void 0)throw Error(`synthesized chrome reads ".${a}", which it does not declare and PAYLOAD_INPUTS does not supply`);i[a]=e}return i}const vy=/^segments\.([^.]+)\.palette$/,yy=/^presets\.(.+)\.root$/,by=/^presets\.(.+)\.globals\.([^.]+)$/;function xy(e){return`presets.${e}.root`}function Sy(e,t){return`presets.${e}.globals.${t}`}function Cy(e){if(Pc(e))return{scope:`globals`,field:e};let t=vy.exec(e);if(t)return{scope:`segment-palette`,segment:t[1]};let n=by.exec(e);if(n&&Dc(n[2]))return{scope:`preset-globals`,preset:n[1],field:n[2]};let r=yy.exec(e);return r?{scope:`preset-root`,preset:r[1]}:null}function wy(e){switch(e.scope){case`globals`:return[`globals`,e.field];case`preset-globals`:return[`presets`,e.preset,`globals`,e.field];case`segment-palette`:return[`segments`,e.segment,`palette`]}}const Ty=`open`;function Ey(e,t,n,r){let i={variable:e,key:e,member:Ty};return r.variables[e]=pc(e,ic),r.actions[e]=mc(e,Ty),r.segments[e]={template:fc(e,`(?)`,`✕`),...Dy(n)},lc(e,i,{kind:`container`,direction:`horizontal`,children:t.map((t,n)=>{let i=`${e}.${n}`;return r.segments[i]={template:t},{kind:`segment`,name:i}})},`drop`)}function Dy(e){let[t,...n]=e;return t===void 0?{}:{when:uc(t,...n)}}const Oy={help:[`-h`,`--help`],version:[`-V`,`--version`]},ky=[`✚ inserts here`,`🚫 removes its segment`,`↺ resets layout`],Ay=`
86
+ Use 'override' annotation for methods overridden by subclass.`)}}var ia=ua(0),aa=function(){var e=!1,t={};return Object.defineProperty(t,`0`,{set:function(){e=!0}}),Object.create(t)[0]=1,e===!1}(),oa=0,sa=function(){};function ca(e,t){Object.setPrototypeOf?Object.setPrototypeOf(e.prototype,t):e.prototype.__proto__===void 0?e.prototype=t:e.prototype.__proto__=t}ca(sa,Array.prototype);var la=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,_a(function(){var e=new Ai(r,n,i,!0);e.proxy_=a,ee(a,D,e),t&&t.length&&a.spliceWithArray(0,0,t),aa&&Object.defineProperty(a,`0`,ia)}),a}ve(t,e);var n=t.prototype;return n.concat=function(){this[D].atom_.reportObserved();var e=[...arguments];return Array.prototype.concat.apply(this.slice(),e.map(function(e){return Li(e)?e.slice():e}))},n[Symbol.iterator]=function(){var e=this,t=0;return Ca({next:function(){return t<e.length?{value:e[t++],done:!1}:{done:!0,value:void 0}}})},he(t,[{key:`length`,get:function(){return this[D].getArrayLength_()},set:function(e){this[D].setArrayLength_(e)}},{key:Symbol.toStringTag,get:function(){return`Array`}}])}(sa);Object.entries(Mi).forEach(function(e){var t=e[0],n=e[1];t!==`concat`&&C(la.prototype,t,n)});function ua(e){return{enumerable:!1,configurable:!0,get:function(){return this[D].get_(e)},set:function(t){this[D].set_(e,t)}}}function da(e){s(la.prototype,``+e,ua(e))}function fa(e){if(e>oa){for(var t=oa;t<e+100;t++)da(t);oa=e}}fa(1e3);function pa(e,t,n){return new la(e,t,n)}function ma(e,t){if(typeof e==`object`&&e){if(Li(e))return t!==void 0&&n(23),e[D].atom_;if(qi(e))return e.atom_;if(Hi(e)){if(t===void 0)return e.keysAtom_;var r=e.data_.get(t)||e.hasMap_.get(t);return r||n(25,t,ga(e)),r}if(ta(e)){if(!t)return n(26);var i=e[D].values_.get(t);return i||n(27,t,ga(e)),i}if(Pe(e)||rn(e)||R(e))return e}else if(v(e)&&R(e[D]))return e[D];n(28)}function ha(e,t){if(e||n(29),t!==void 0)return ha(ma(e,t));if(Pe(e)||rn(e)||R(e)||Hi(e)||qi(e))return e;if(e[D])return e[D];n(24,e)}function ga(e,t){var n;if(t!==void 0)n=ma(e,t);else if(ur(e))return e.name;else n=ta(e)||Hi(e)||qi(e)?ha(e):ma(e);return n.name_}function _a(e){var t=P(),n=Qt(!0);Mn();try{return e()}finally{Nn(),$t(n),gn(t)}}var va=c.toString;function ya(e,t,n){return n===void 0&&(n=-1),ba(e,t,n)}function ba(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=va.call(e);if(o!==va.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=xa(e),t=xa(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(!ba(e[u],t[u],n-1,r,i))return!1}else{var d=Object.keys(e),f=d.length;if(Object.keys(t).length!==f)return!1;for(var p=0;p<f;p++){var m=d[p];if(!(ce(t,m)&&ba(e[m],t[m],n-1,r,i)))return!1}}return r.pop(),i.pop(),!0}function xa(e){return Li(e)?e.slice():ne(e)||Hi(e)||ie(e)||qi(e)?Array.from(e.entries()):e}var Sa=i().Iterator?.prototype||{};function Ca(e){return e[Symbol.iterator]=wa,Object.assign(Object.create(Sa),e)}function wa(){return this}function Ta(e){return e instanceof Object&&typeof e.annotationType_==`string`&&v(e.make_)&&v(e.extend_)}[`Symbol`,`Map`,`Set`].forEach(function(e){i()[e]===void 0&&n(`MobX requires global '`+e+`' to be available or polyfilled`)}),typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__==`object`&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:Xn,extras:{getDebugName:ga},$mobx:D}),e.$mobx=D,e.FlowCancellationError=jr,e.ObservableMap=Vi,e.ObservableSet=Ki,e.Reaction=L,e._allowStateChanges=Zt,e._allowStateChangesInsideComputed=lr,e._allowStateReadsEnd=vn,e._allowStateReadsStart=_n,e._autoAction=cr,e._endAction=Xt,e._getAdministration=ha,e._getGlobalState=Tn,e._interceptReads=Rr,e._isComputingDerivation=ln,e._resetGlobalState=En,e._startAction=Yt,e.action=sr,e.autorun=dr,e.comparer=Be,e.computed=Ut,e.configure=Cr,e.createAtom=Fe,e.defineProperty=ti,e.entries=Xr,e.extendObservable=wr,e.flow=Fr,e.flowResult=Ir,e.get=ei,e.getAtom=ma,e.getDebugName=ga,e.getDependencyTree=Tr,e.getObserverTree=Dr,e.has=$r,e.intercept=zr,e.isAction=ur,e.isBoxedObservable=tn,e.isComputed=Ur,e.isComputedProp=Wr,e.isFlow=Lr,e.isFlowCancellationError=Mr,e.isObservable=Kr,e.isObservableArray=Li,e.isObservableMap=Hi,e.isObservableObject=ta,e.isObservableProp=qr,e.isObservableSet=qi,e.keys=Jr,e.makeAutoObservable=Ti,e.makeObservable=Ci,e.observable=k,e.observe=ri,e.onBecomeObserved=vr,e.onBecomeUnobserved=yr,e.onReactionError=zn,e.override=Ke,e.ownKeys=ni,e.reaction=mr,e.remove=Qr,e.runInAction=lr,e.set=Zr,e.spy=Xn,e.toJS=si,e.trace=ci,e.transaction=ui,e.untracked=hn,e.values=Yr,e.when=di})),h_=me(((e,t)=>{process.env.NODE_ENV===`production`?t.exports=p_():t.exports=m_()}))();function g_(e){if(Array.isArray(e))return Object.freeze(e.map(g_));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]=g_(r);return Object.freeze(t)}return e}function __(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 v_(e){return typeof e==`string`?e:String(e)}function y_(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 b_(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 x_(e,t){if(!(e instanceof V))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=S_(e.style).add(t),n}function S_(e){if(e instanceof z)return e;try{return z.parse(e)}catch(t){throw t instanceof xr?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 C_(e){return{fn:(t=>x_(t,e)),argTypes:[`liftable`],returnType:`T`}}function w_(e){return{fn:((t,n)=>x_(n,new z({[e]:N.parse(t)}))),argTypes:[`string`,`liftable`],returnType:`T`}}function T_(e,t){return new z({[e]:t})}function E_(){let e={};for(let t of vr)e[t]=C_(T_(t,!0)),e[`not_${t}`]=C_(T_(t,!1));for(let[t,n]of Object.entries(br))e[t]=C_(T_(n,!0));return e}const D_={fn:((e,t)=>x_(t,z.parse(e))),argTypes:[`string`,`liftable`],returnType:`T`},O_={fn:((e,t)=>x_(t,new z({link:e}))),argTypes:[`string`,`liftable`],returnType:`T`};function k_(){return{fg:w_(`color`),bg:w_(`bgcolor`),...E_(),link:O_,style:D_}}function A_(e,t){if(!Bn.test(e.trim()))throw TypeError(`${t} expected a color (#RRGGBB or #RRGGBBAA), got ${JSON.stringify(e)} — to use a palette name here, wrap it: ${t} (color ${JSON.stringify(e)}) …`);return Vn(e)}function j_(e,t){return{fn:t,argTypes:e,returnType:`string`}}function M_(e,t,n,r){let i=r===void 0||e>=r.min&&e<=r.max;if(!Number.isFinite(e)||!i){let i=r===void 0?`a finite number`:`within ${r.min}..${r.max} (${r.note})`;throw RangeError(`${t}'s ${n} must be ${i}, got ${e}`+(e===void 0?` — ${t} takes it as its last argument`:``))}return e}const N_=j_([`string`,`int`],((e,t)=>qn(A_(e,`darken`),M_(t,`darken`,`levels`)).hex)),P_=j_([`string`,`int`],((e,t)=>qn(A_(e,`lighten`),-M_(t,`lighten`,`levels`)).hex)),F_={min:0,max:100,note:`0 = from, 100 = toward`},I_=j_([`string`,`string`,`float`],((e,t,n)=>gn(A_(e,`mix`),A_(t,`mix`),M_(n,`mix`,`percentage`,F_)/100).hex)),L_={min:1,max:21,note:`4.5 = AA body text, 3 = AA large text`},R_=j_([`string`],(e=>Jn(A_(e,`contrastOn`)).hex)),z_=e=>j_([`string`,`string`,`float`],((t,n,r)=>Yn(A_(t,`readableOn`),A_(n,`readableOn`),M_(r,`readableOn`,`ratio`,L_),e()).hex)),B_={hueShift:`shiftHue`,chromaScale:`scaleChroma`,lightnessScale:`scaleLightness`,lightnessShift:`shiftLightness`};function V_(){let e={};for(let[t,n]of Object.entries(B_)){let r=t;e[n]=j_([`string`,`float`],((e,t)=>{let i={...kn,[r]:M_(t,n,`amount`)};return L.fromRgba(A_(e,n)).applyKey(i).toRgba().hex}))}return e}function H_(e=()=>j.TRUECOLOR){return{darken:N_,lighten:P_,mix:I_,contrastOn:R_,readableOn:z_(e),...V_()}}function U_(e,t){if(e.length===0)throw RangeError(`ramp needs at least one stop after the easing: ramp <value> <easing> <position> <color> …`);if(e.length%2!=0)throw RangeError(`ramp's last stop (position ${String(e[e.length-1])}) has no color — stops are <position> <color> pairs`);let n=[];for(let r=0;r<e.length;r+=2)n.push({at:e[r],color:Hn(t,e[r+1])});return n}function W_(e){return{color:{fn:(t=>Hn(e(),t).hex),argTypes:[`string`],returnType:`string`},ramp:{fn:((...t)=>{if(t.length<2)throw RangeError(`ramp needs a value and an easing before its stops (got ${t.length}): ramp <value> "linear"|"step" <position> <color> …`);let[n,r,...i]=t;return new _r(gr(r),U_(i,e())).at(n).hex}),argTypes:[`float`,`string`],argTypePattern:`alternating`,returnType:`string`}}}function G_(e){return{...k_(),...H_(e)}}new z({color:`red`,dim:!0});const K_=/^(?:(?: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,q_=/^(?<family>opus|sonnet|haiku)\s+(?<major>\d+)(?:\.(?<minor>\d))?$/i;function J_(e){if(!e)return`Claude`;let t=e.trim().replace(/\s*\([^)]*\)\s*$/,``).replace(/\s*\[[^\]]*\]\s*$/,``).trim(),n=t.match(K_);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(q_);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 Y_(e){let t=e.match(q_);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 X_(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 Z_(e){return e.toLocaleString()}function Q_(e){if(e.length===0)throw Error(`a cascade needs at least one stop, e.g. "0:calm"`);let t=[];for(let[n,r]of e.entries()){let e=r.indexOf(`:`),i=e<0?NaN:Number(r.slice(0,e));if(!Number.isFinite(i))throw Error(`cascade stop ${n} ("${r}") must be "<position>:<result>", e.g. "80:hot" — the position must be a number`);let a=t[n-1];if(a!==void 0&&i<a.at)throw Error(`cascade stops must be in ascending position order; stop ${n} at ${i} follows stop ${n-1} at ${a.at}`);t.push({at:i,text:r.slice(e+1)})}return t}function $_(e,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 ev=[`▁`,`▂`,`▃`,`▄`,`▅`,`▆`,`▇`,`█`],tv=ev.length;function nv(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*(tv-1));o+=ev[t]}return o}function rv(e){let t=[];for(let n of e.split(`,`)){let e=n.trim();if(e===``)continue;let r=Number(e);if(!Number.isFinite(r))throw TypeError(`sparkline: non-numeric series element ${JSON.stringify(n)}`);t.push(r)}return t}const iv=Ca(),av=[...Na];function ov(){return{basename:{fn:e=>l(e),argTypes:[`string`]},dirname:{fn:e=>u(e),argTypes:[`string`]},abbreviatePath:{fn:e=>X_(e),argTypes:[`string`]},int:{fn:e=>y_(e),argTypes:[`value`]},string:{fn:e=>v_(e),argTypes:[`value`]},bool:{fn:e=>b_(e),argTypes:[`value`]},urlEncode:{fn:e=>encodeURIComponent(e),argTypes:[`string`]},themes:{fn:()=>iv,argTypes:[]},styles:{fn:()=>av,argTypes:[]},sparkline:{fn:(e,t)=>nv(rv(e),t),argTypes:[`string`,`int`]},cascade:{fn:(e,...t)=>$_(e,Q_(t)),argTypes:[`float`,`string`]}}}function sv(e=()=>new Date){return{minutesUntilReset:{fn:t=>Math.round(Math.max(0,t*1e3-e().getTime())/6e4),argTypes:[`int`]},formatInteger:{fn:e=>Z_(e),argTypes:[`int`]},round:{fn:e=>Math.round(e),argTypes:[`float`]},formatModelName:{fn:e=>J_(e),argTypes:[`string`]},shortenModelName:{fn:e=>Y_(e),argTypes:[`string`]}}}function cv(e,t=()=>new Date,n){return df({fromString:e=>new V(e),toString:e=>e.plain,isT:e=>e instanceof V,clock:t,missingKey:`error`,funcs:{...Qp(),...cg(),...Rm(),...oh(),...Wp(t),...Pf(),...fm(),...G_(n),...ov(),...sv(t),...e??{}}})}function lv(e){return uv(e,new Set(e.names()),``)}function uv(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`?fv(a,e.readDocument(a)):e.read(a);let o=`${a}.`;for(let n of t)if(n.startsWith(o))return uv(e,t,a)}})}function dv(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 fv(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 pv(e,t){return e?.kind===`ok`?e.value:t}function mv(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??hv(t.stderr)].filter(Boolean).join(`, `)}`)}function hv(e){return e.trim().split(`
87
+ `,1)[0]??``}function gv(e,t){if(e.kind!==`ok`)return e;let n=t(e.value);return n===null?Y:J(n)}function _v(e){if(e.kind!==`ok`)return e;let t=e.value.trim();return t?J(t):Y}const vv=/^[A-Za-z]:[\\/]/;function yv(e){let t=e.trim();if(vv.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 bv(e){return yv(e)?.host||null}function xv(e){let t=bv(e);return t?t===`github.com`||t.endsWith(`.github.com`)?`github`:/(^|\.)gitlab\./.test(t)?`gitlab`:null:null}function Sv(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 Cv(e){return e.urls.find(e=>Ov(e)!==null)??e.urls[0]??null}function wv(e){return e.find(e=>e.name===`origin`)??e[0]??null}function Tv(e){let t=wv(e);return t?Cv(t):null}function Ev(e){let t=wv(e);return t?t.urls.find(e=>xv(e)!==null)??Cv(t):null}function Dv(e){let t=(yv(e)?.path??e.replace(/[\\/]+$/,``)).split(`/`);return(t[t.length-1]??``).replace(/\.git$/,``)||null}function Ov(e){let t=yv(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 kv(e){let t=Tv(e);return t===null?null:Ov(t)}function Av(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??hv(t.stderr)].filter(Boolean).join(`, `)}`)}function jv(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Mv(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 Nv(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(!jv(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 Pv(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(!jv(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 Fv(e){try{let t=r.statSync(e);return{key:`${t.dev}:${t.ino}`,stamp:`${t.mtimeMs}:${t.size}`}}catch{return null}}var Iv=class{isGitRepo(e){try{return r.existsSync(c.join(e,`.git`))}catch{return!1}}async execGitAsync(e,t){return Ee({bin:`git`,args:[...e],cwd:t.cwd,env:{...process.env,GIT_OPTIONAL_LOCKS:`0`},timeoutMs:t.timeout,category:`git`})}async resolveEffectiveGitDir(e,t){return this.isWorktree(e)?J(e):t&&this.isGitRepo(t)?J(t):this.isGitRepo(e)?J(e):this.findGitRoot(e)}async findGitRoot(e){let t=c.resolve(e);for(;;){if(this.isGitRepo(t))return J(t);let e=c.dirname(t);if(e===t)return Y;t=e}}async getGitInfo(e,t={},n){try{return await this.computeGitInfo(e,t,n)}catch(e){return X(`git: ${e instanceof Error?e.message:String(e)}`)}}async computeGitInfo(e,t={},n){let r,i=this.isWorktree(e);if(i)r=e;else if(n&&this.isGitRepo(n))r=n;else if(this.isGitRepo(e))r=e;else{let t=await this.findGitRoot(e);if(t.kind!==`ok`)return t;r=t.value}let a=await this.getCoreAsync(r);if(a.kind!==`ok`)return a;let o={branch:a.value.branch,status:a.value.status,aheadBehind:a.value.aheadBehind};t.showWorkingTree&&(o.workingTree=a.value.workingTree),t.showSha&&(o.sha=gv(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=gv(s,e=>this.repoNameFrom(e,r)),o.isWorktree=i),s!==void 0&&t.showRepoUrl&&(o.repoUrl=gv(s,kv)),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 _v(mv(`git describe --tags`,await this.execGitAsync([`describe`,`--tags`,`--abbrev=0`],{cwd:e,timeout:2e3}),`absent`))}async timeSinceCommit(e,t){return t.kind===`ok`?gv(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=_v(mv(`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=Fv(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=mv(`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`?Sv(t.value):[])}repoNameFrom(e,t){let n=Tv(e);return(n===null?null:Dv(n))??c.basename(t)}async getRepoRemoteUrl(e){let t=await this.getRemotesAsync(e);if(t.kind!==`ok`)return t;let n=Ev(t.value);return n===null?Y:J(n)}async execForgeAsync(e,t,n){return Ee({bin:e,args:[...t],cwd:n.cwd,env:{...process.env},timeoutMs:n.timeout,category:`forge`})}async resolvePullRequest(e,t){let n=xv(t);return n===`github`?Av(`gh pr view`,await this.execForgeAsync(`gh`,[`pr`,`view`,`--json`,`number,state,url`],{cwd:e,timeout:5e3}),/no (open )?pull requests? found/i,Nv):n===`gitlab`?Av(`glab mr view`,await this.execForgeAsync(`glab`,[`mr`,`view`,`--output`,`json`],{cwd:e,timeout:5e3}),/no (open )?merge requests? (found|available)/i,Pv):Y}isWorktree(e){try{let t=c.join(e,`.git`);return!!(r.existsSync(t)&&r.statSync(t).isFile())}catch{return!1}}async getCoreAsync(e){E(`[GIT-EXEC] Running git status --porcelain=v2 in ${e}`);let t=mv(`git status --porcelain=v2 --branch`,await this.execGitAsync([`status`,`--porcelain=v2`,`--branch`],{cwd:e,timeout:2e3}),`failed`);return t.kind===`ok`?J(Mv(t.value)):t}};const Lv=(e,t)=>E(t);var Rv=class{slots=new Map;maxWatchers;counters;logger;closed=!1;constructor(e={}){this.maxWatchers=e.maxWatchers??128,this.counters=e.counters,this.logger=e.logger??Lv}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()}},zv=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 Bv=(e,t)=>E(t),Vv={showSha:!0,showStashCount:!0};function Hv(e){let t=Object.keys(e).sort(),n={};for(let r of t)n[r]=e[r];return JSON.stringify(n)}function Uv(e){let t=t=>{try{return r.statSync(c.join(e,t)).mtimeMs}catch{return 0}};return{head:t(`HEAD`),index:t(`index`)}}function Wv(e,t){return e.head!==t.head||e.index!==t.index}function Gv(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 Kv=class extends Iv{entries=new Map;subscribersByRepo=new Map;fetchInFlight=new Map;resolutions=new Map;prCache=new Map;prFetchInFlight=new Map;refreshes=new zv;hits=0;misses=0;invalidations=0;inner;ttlMs;maxEntries;watchers;ownsWatchers;logger;sanityTimer=null;constructor(e={}){super(),this.inner=e.inner??new Iv,this.ttlMs=e.ttlMs??3e4,this.maxEntries=e.maxEntries??64,this.logger=e.logger??Bv,e.watchers?(this.watchers=e.watchers,this.ownsWatchers=!1):(this.watchers=new Rv({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}|${Hv(t)}`,r=Date.now(),i=this.entries.get(n);if(i&&r-i.computedAt<this.ttlMs)return this.entries.delete(n),this.entries.set(n,i),this.hits++,Promise.resolve(J(i.info));let a=this.fetchInFlight.get(n);if(a)return a;let o=this.doFetch(e,n,t,r).finally(()=>{this.fetchInFlight.delete(n)});return this.fetchInFlight.set(n,o),o}async doFetch(e,t,n,r){this.misses++;let i=this.inner.resolveGitDir(e),a=Uv(i),o=await this.inner.getGitInfo(e,n);if(o.kind!==`ok`)return o;let s=o.value;n.showPullRequest&&(s.pullRequest=await this.getPullRequestCached(e,s.branch)),this.dropEntry(t);let c=this.watchers.acquire(`git:${e}`,Gv(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}`,Gv(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,{...Vv});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,{...Vv}),r=this.deliverable(n,e),i=this.subscribersByRepo.get(e);if(!(!i||i.callbacks.size===0))for(let e of[...i.callbacks])i.callbacks.has(e)&&this.safeInvoke(e,r)}safeInvoke(e,t){try{e(t)}catch(e){this.logger(`warn`,`git subscriber threw: ${e.message??String(e)}`)}}dropEntry(e){let t=this.entries.get(e);t&&(t.watcher.release(),this.entries.delete(e))}evictIfNeeded(){for(;this.entries.size>this.maxEntries;){let e=this.entries.keys().next().value;if(e===void 0)break;this.dropEntry(e),this.logger(`info`,`gitCache evict ${e}`)}}runSanityCheck(){let e=new Map;for(let t of this.entries.values()){let n=e.get(t.repoRoot);n||(n=Uv(this.inner.resolveGitDir(t.repoRoot)),e.set(t.repoRoot,n)),Wv(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 qv=/\r\n|\r|\n/g,Jv=e=>J(e.replace(qv,` `).trim());function Yv(e){return t=>{let n=e.exec(t)?.[1];return n===void 0?X(`regex no-match`):J(n.replace(qv,` `))}}const Xv=e=>{try{return J(JSON.parse(e))}catch(e){return X(`JSON parse failed: ${e.message}`)}};function Zv(e,t){return t.kind!==`ttl`||t.durationMs>=500?t:(E(`declareShell "${e}": ttl ${t.durationMs}ms below floor 500ms; clamping`),{kind:`ttl`,durationMs:500})}function Qv(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 $v=`session.id`;function ey(e,t){return{where:`output of "${e}"`,read:async()=>{let n=await Ee({bin:`/bin/sh`,args:[`-c`,e],category:`user-shell`,signal:t});if(!n.ok&&n.reason===`aborted`)throw t.reason;return n.ok?J(n.stdout):X(`shell "${e}" ${n.exitCode===null?[n.reason,n.error].filter(e=>e!==void 0).join(`: `):`exited with code ${n.exitCode}`}`)}}}function ty(e,t,n){return{where:`"${e}"`,read:async()=>{try{let r=await v(e,{encoding:`utf8`,signal:n});return J(t===`first-line`?r.split(/\r?\n/)[0]??``:r)}catch{if(n.aborted)throw n.reason;return X(`file unreadable: ${e}`)}}}}function ny(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 ry=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],iy=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],ay=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],oy=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`];function sy(e,t){let n=[[`2006`,e=>String(e.getFullYear())],[`January`,e=>ry[e.getMonth()]],[`Monday`,e=>ay[e.getDay()]],[`Jan`,e=>iy[e.getMonth()]],[`Mon`,e=>oy[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 cy={branch:`string`,sha:`string`,dirty:`boolean`,ahead:`number`,behind:`number`,stash:`number`};function ly(e,t,n,r){if(e===null){if(n!==void 0)return n;let e=cy[t];try{return py(r,e)}catch{return my(e)}}switch(t){case`branch`:return e.branch===`detached`?``:e.branch;case`sha`:return pv(e.sha,``);case`dirty`:return e.status!==`clean`;case`ahead`:return pv(e.aheadBehind,{ahead:0,behind:0}).ahead;case`behind`:return pv(e.aheadBehind,{ahead:0,behind:0}).behind;case`stash`:return pv(e.stashCount,0)}}var uy=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}},dy=class{buckets=new Map;subscribe(e,t){let n=this.buckets.get(e);if(!n){let t=new Set;n={timer:S(()=>{for(let e of t)e()},e),callbacks:t},this.buckets.set(e,n)}return n.callbacks.add(t),()=>this.unsubscribe(e,t)}unsubscribe(e,t){let n=this.buckets.get(e);n&&(n.callbacks.delete(t),n.callbacks.size===0&&(x(n.timer),this.buckets.delete(e)))}dispose(){for(let{timer:e}of this.buckets.values())x(e);this.buckets.clear()}bucketCount(){return this.buckets.size}};function fy(e,t){let n=e;for(let e of t.split(`.`)){if(typeof n!=`object`||!n)return;n=n[e]}return n}function py(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`?v_(e):t===`number`?y_(e):b_(e)}function my(e){return e===`number`?0:e===`boolean`?!1:``}var hy=class{inputMetas=new Map;lastErrors=new Map;watchMgr=new uy;ttlMgr=new dy;gitSubscriptions=new Map;cleanups=[];inFlight=new Map;reads=new zv;abort=new AbortController;drawn=h_.observable.box(j.TRUECOLOR);drawnAt=()=>this.drawn.get();engine=cv(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 Kv({sanityIntervalMs:0}),this.ownsGitProvider=!0),this.sessionState=r}get variableStore(){return this.store}declareLiteral(e,t){this.store.defineBox(e,__(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,ey(t,this.abort.signal),Zv(e,n.cache),n.parse)}declareFile(e,t,n){this.declareSource(e,ty(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,Jv,t.default,n);case`regex`:return this.scalarPublisher(e,Yv(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=ny(n,t,r);this.noteOutcome(e,a),this.store.setBox(e,pv(a,i))}}documentPublisher(e,t,n){let r=t===void 0?Y:J(t);return this.store.defineDocument(e,r),i=>{let a=ny(i,Xv,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=lv(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 sy(t.format,e)}catch{return this.stringInitial(t.varDefault)}})(new Date));let r=this.ttlMgr.subscribe(n,()=>{try{this.store.setBox(e,sy(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=cy[t.field],r=t.varDefault===void 0?my(n):py(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,ly(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($v);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=fy(e,n.path),i=this.store.getType(t);if(r!==void 0)try{this.store.setBox(t,py(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,h_.reaction)(()=>{let t=lv(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,h_.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,py(this.defaultEmptyValue,t))}catch{this.store.setBox(e,my(t))}}defaultFor(e){try{return py(this.defaultEmptyValue,e)}catch{return my(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 gy={project_dir:{kind:`input`,path:`workspace.project_dir`,default:``},[$v]:{kind:`input`,path:`session_id`,default:``},transcript_path:{kind:`input`,path:`transcript_path`,default:``},"theme.effective":{kind:`input`,path:`theme.effective`,default:``},"look.effective":{kind:`input`,path:`look.effective`,default:``},"preset.effective":{kind:`input`,path:`preset.effective`,default:``},"preset.customized":{kind:`input`,path:`preset.customized`,type:`boolean`,default:!1},"preset.bundled":{kind:`input`,path:`preset.bundled`,type:`boolean`,default:!0},"style.effective":{kind:`input`,path:`style.effective`,default:``},"progression.effective":{kind:`input`,path:`progression.effective`,default:``},"charset.effective":{kind:`input`,path:`charset.effective`,default:``},"colorCompatibility.effective":{kind:`input`,path:`colorCompatibility.effective`,default:``},"autoWrap.effective":{kind:`input`,path:`autoWrap.effective`,type:`boolean`,default:!0},"padding.effective":{kind:`input`,path:`padding.effective`,type:`number`,default:1},"term.cols":{kind:`input`,path:`term.cols`,type:`number`,default:80},"git.repoUrl":{kind:`input`,path:`git.repoUrl`,default:``}},_y={theme:{configKey:`palette`,sessionKey:`theme`,effectiveVar:`theme.effective`},preset:{configKey:`preset`,sessionKey:`preset`,effectiveVar:`preset.effective`},look:{configKey:`look`,sessionKey:`look`,effectiveVar:`look.effective`},style:{configKey:`style`,sessionKey:`style`,effectiveVar:`style.effective`},progression:{configKey:`progression`,sessionKey:`progression`,effectiveVar:`progression.effective`},charset:{configKey:`charset`,sessionKey:`charset`,effectiveVar:`charset.effective`},colorCompatibility:{configKey:`colorCompatibility`,sessionKey:`colorCompatibility`,effectiveVar:`colorCompatibility.effective`},autoWrap:{configKey:`autoWrap`,sessionKey:`autoWrap`,effectiveVar:`autoWrap.effective`},padding:{configKey:`padding`,sessionKey:`padding`,effectiveVar:`padding.effective`}},vy=Object.values(_y),yy=new Map(vy.map(e=>[e.configKey,e.effectiveVar])),by=new Map(vy.map(e=>[e.sessionKey,e.effectiveVar])),xy=new Map(Object.keys(_y).map(e=>[_y[e].sessionKey,e]));function Sy(e,t,n){let r=new Set,i=e=>{for(let t of a_(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 is(e))i(t.when);for(let t of Object.values(e.variables))t.kind===`template`&&i(t.template),t.kind===`state`&&r.add($v);for(let t of Object.values(e.actions)){r.add($v),`copy`in t&&i(t.copy),`open`in t&&i(t.open);let e=`set`in t?by.get(t.set):void 0,n=`persist`in t?yy.get(t.persist):void 0;e!==void 0&&r.add(e),n!==void 0&&r.add(n)}return r}function Cy(e,t,n){let r=d_({...n,variables:{...n.variables,...e.variables},segments:{...n.segments,...e.segments}}),i={};for(let a of Sy(e,t,n.helpers)){if(u_(a,r))continue;let e=gy[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 wy=/^segments\.([^.]+)\.palette$/,Ty=/^presets\.(.+)\.root$/,Ey=/^presets\.(.+)\.globals\.([^.]+)$/;function Dy(e){return`presets.${e}.root`}function Oy(e,t){return`presets.${e}.globals.${t}`}function ky(e){if(Rc(e))return{scope:`globals`,field:e};let t=wy.exec(e);if(t)return{scope:`segment-palette`,segment:t[1]};let n=Ey.exec(e);if(n&&jc(n[2]))return{scope:`preset-globals`,preset:n[1],field:n[2]};let r=Ty.exec(e);return r?{scope:`preset-root`,preset:r[1]}:null}function Ay(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 jy=`open`;function My(e,t,n,r){let i={variable:e,key:e,member:jy};return r.variables[e]=_c(e,cc),r.actions[e]=vc(e,jy),r.segments[e]={template:gc(e,`(?)`,`✕`),...Ny(n)},pc(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 Ny(e){let[t,...n]=e;return t===void 0?{}:{when:mc(t,...n)}}const Py={help:[`-h`,`--help`],version:[`-V`,`--version`]},Fy=[`✚ inserts`,`🚫 removes`,`⚙ configures`,`↺ resets layout`],Iy=`
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
- ${Oy.help.join(`, `).padEnd(25)}Show this help
97
- ${Oy.version.join(`, `).padEnd(25)}Print the version of this runtime (cc-candybar <version>)
96
+ ${Py.help.join(`, `).padEnd(25)}Show this help
97
+ ${Py.version.join(`, `).padEnd(25)}Print the version of this runtime (cc-candybar <version>)
98
98
 
99
99
  Debugging:
100
100
  CC_CANDYBAR_DEBUG=1 Enable debug logging for troubleshooting
@@ -107,7 +107,7 @@ Configuration:
107
107
 
108
108
  Every bar carries a settings menu, whatever your config says — no config
109
109
  needed, and writing your own \`root\` cannot delete it. Click
110
- it on the bar (${ac} by default; globals.menuGlyph changes it) for
110
+ it on the bar (${lc} by default; globals.menuGlyph changes it) for
111
111
  quick actions, preset switching, edit mode, and a config menu of
112
112
  clickable theme/look/style/progression/charset/colour-depth/wrap/padding
113
113
  controls. A change applies to this session at once; 💾 save appears while
@@ -116,7 +116,7 @@ Configuration:
116
116
  failed row's [fix] to repair it (the same checks \`cc-candybar doctor\` runs).
117
117
 
118
118
  Anywhere the bar shows (?), clicking it reveals these same instructions
119
- in place. In edit mode: ${ky.join(`, `)}.
119
+ in place. In edit mode: ${Fy.join(`, `)}.
120
120
 
121
121
  Subcommands:
122
122
  install One-shot setup: stages the runtime (native render
@@ -154,37 +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
- `,jy=`${Cl}live`,My=[`☐ live`,`☑ live`],Ny=`${Cl}done`,Py={variable:jy,key:jy,member:`open`},Fy=`and ${dc(Lg)} (not ${dc(Py)})`,Iy=`{{ ${Fy} }}`;function Ly(e,t){return`{{ if ${Fy} }}${e}{{ else }}${t}{{ end }}`}const Ry=`{{ and ${dc(Lg)} .preset.customized }}`,zy=Tl,By=`${Cl}addable`;function Vy(e){return new Map([[By,{members:Object.keys(e.segments).filter(e=>!zy(e))}]])}function Hy(e,t,n){return n.segments[e]={template:t,when:Rg},{kind:`segment`,name:e}}function Uy(e,t,n,r,i){let a=`${Cl}${e}.remove.${n}`;return i.actions[a]={persist:t,removeSegment:r},`{{ if ${dc(Lg)} }}{{ action "${a}" "🚫" }}{{ end }}`}const Wy=`${Cl}label:`;function Gy(e){if(e.startsWith(Wy)){let t=e.slice(Wy.length);return t.slice(t.indexOf(`:`)+1)}return e.startsWith(`edit.`)?void 0:e}function Ky(e,t,n){let r=`${Wy}${e}:${t}`;return n.segments[r]={template:`{{ "${cc(e)}" }}`,when:Iy},{kind:`segment`,name:r}}function qy(e,t,n,r,i,a,o){let s=`${Cl}${e}.insert.${n}`,c=`${Cl}${e}.insertSeg.${n}`;o.actions[s]={persist:t,insertSegmentFrom:r,anchor:i,relation:a};let l=ag(s),u=og(c,s,void 0),d=lg(u),f=cg(u,l);return o.variables[u]=pc(u,ic),o.variables[d]={kind:`state`,key:d,default:`0`},o.actions[f]=mc(u,l),o.actions[d]={set:d,int:!0},{host:c,template:`{{ $m := menu "${s}" "✚" "✕" }}{{ if ${dc({variable:u,key:u,member:l})} }}{{ $m }}{{ else }}{{ fg (${`readableOn (color "success") (bgOf) ${$i}`}) $m }}{{ end }}`}}function Jy(e,t,n,r,i,a){let o=[],s=e.children.findIndex(e=>e.kind===`segment`&&!zy(e.name)),c=e=>Jy(e,t,n,r,i,a);for(let[l,u]of e.children.entries()){if(u.kind===`container`){o.push(c(u));continue}let d=ts(u,c);if(zy(u.name)){o.push(d);continue}let f=Qo(u),p=(e,a)=>qy(t,n,a,r,f,e,i),m=l===s?[p(`before`,String(a.n++))]:[],h=String(a.n++),g=p(`after`,h),_=Uy(t,n,h,f,i),v={kind:`container`,direction:`horizontal`,children:[...m.map(e=>Hy(e.host,e.template,i)),{...Ky(f,u.name,i),trail:_},{...d,when:Ly(`false`,u.when??`true`),trail:_},Hy(g.host,g.template,i)]};o.push(e.direction===`vertical`?{kind:`container`,direction:`horizontal`,children:[v]}:v)}return{...e,children:o,...e.when!==void 0&&{when:Ly(`true`,e.when)}}}function Yy(e,t,n,r,i,a,o){let s=`${Cl}${n}.resetLayout`,c=`${Cl}${n}.customized`;i.actions[s]={reset:r};let l=cc(t);return i.segments[c]={template:`{{ action "${s}" "↺ ${l} customized" }}`,when:Ry},{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[a,{kind:`segment`,name:c}]},Xy(e,o)]}}function Xy(e,t){if(e.kind===`segment`)return{kind:`container`,direction:`horizontal`,children:[e,t]};let n=e.children.at(-1);return e.direction===`vertical`&&n!==void 0&&(n.kind===`segment`||n.when===void 0)?{...e,children:[...e.children.slice(0,-1),Xy(n,t)]}:{...e,children:[...e.children,t]}}function Zy(e,t,n,r,i){let{node:a}=yg(e,t),o=xy(t),s=By,c=bl(t);return Yy(Jy(a,c,o,s,n,{n:0}),t,c,o,n,r,i)}function Qy(e){let t={variables:{},actions:{},segments:{}},n=Ey(`${Cl}help`,ky,[Lg],t);t.variables[jy]=pc(jy,ic),t.actions[jy]=mc(jy,Py.member),t.segments[jy]={template:fc(jy,...My),when:Rg};let r={kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:jy},n]};t.segments[Ny]={template:`{{ action "${Fg}" "✎ done" }}`,when:Rg};let i={kind:`segment`,name:Ny},a={...e.presets},o=[];for(let n of gg(e.presets)){let s=Zy(e,n,t,i,r);o.push(s),a[n]={...vg(e.presets,n),root:s}}let s=_y(t,o,e);return{...e,variables:{...s,...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:a}}const $y={socket:`TMUX`,pane:`TMUX_PANE`,truecolor:`CLAUDE_CODE_TMUX_TRUECOLOR`};function eb(e){let t=e[$y.socket]??``,n=e[$y.pane]??``;if(t===``||n===``)return null;let r=e[$y.truecolor]??``;return{socket:t.split(`,`)[0],pane:n,truecolor:r===``?null:r}}const tb=$y.truecolor,nb=[{name:`tmuxTruecolor`,label:`tmux truecolor`,probe:({tmux:e,claudeSettingsEnv:t})=>{switch(e.kind){case`unreported`:return{ok:!1,reason:"the client reported no tmux facts — re-run `cc-candybar install` to stage a current client"};case`outside`:return{ok:!0};case`inside`:{if(e.termfeatures.kind===`failed`)return{ok:!1,reason:`tmux could not be asked: ${e.termfeatures.reason}`};if(!e.termfeatures.value.includes(`RGB`)||e.hint.truecolor!==null)return{ok:!0};let n=t[tb];return typeof n==`string`&&n!==``?{ok:!1,reason:`${tb} is set in ~/.claude/settings.json — restart Claude Code to apply`}:{ok:!1,reason:`Claude Code renders the bar in 256 colours inside tmux`,fix:{kind:`claude-settings-env`,name:tb,value:`1`}}}}}}];function rb(e){return nb.map(t=>({check:t,verdict:t.probe(e)}))}function ib(e){return nb.find(t=>t.name===e)}const ab=`${K}doctor.`;function ob(e){let t=`${ab}${e}.`;return{verdict:`${t}verdict`,reason:`${t}reason`,fixable:`${t}fixable`}}function sb(e){return e.flatMap(({check:e,verdict:t})=>{let n=ob(e.name);return t.ok?[{key:n.verdict,value:`ok`},{key:n.reason,value:``},{key:n.fixable,value:Ya}]:[{key:n.verdict,value:`failed`},{key:n.reason,value:t.reason},{key:n.fixable,value:t.fix===void 0?Ya:Ja}]})}const cb={copySession:{copy:`{{ .session.id }}`},openProject:{open:`{{ .project_dir }}`},openTranscript:{open:`{{ .transcript_path }}`}};function lb(e){let t=t=>`${e}${t}`;return{template:`{{ action "${t(`copySession`)}" "⎘ id" }} {{ action "${t(`openProject`)}" "↗ proj" }} {{ action "${t(`openTranscript`)}" "↗ log" }}{{ if ne .git.repoUrl "" }} {{ link .git.repoUrl "↗ repo" }}{{ end }}`,actions:Object.fromEntries(Object.entries(cb).map(([t,n])=>[`${e}${t}`,n]))}}const ub=`${K}menu`,db=Ig,fb=`${K}edit`,pb=`${K}close`,mb=`${K}toolbar`,hb=lb(K),gb=`${K}config`,_b=`${K}save`,vb=`${K}unsaved`,yb=`${K}preset.save`,bb=`${K}preset.delete`,xb=`${K}resetAll`,Sb=`${xb}.arm`,Cb=`${xb}.disarm`,wb=`armed`,Tb=`disarmed`,Eb=`${ub}.toggle`,Db=`${gb}.toggle`,Ob={variable:ub,key:ub,member:db},kb={variable:gb,key:gb,member:db},Ab=`${K}tools`,jb={variable:Ab,key:Ab,member:db},Mb=[{seg:`${K}undo`,depth:`undo`,action:{undo:!0},display:`↶ undo`},{seg:`${K}redo`,depth:`redo`,action:{redo:!0},display:`↷ redo`}],Nb=e=>`${K}history.${e}`,Pb=`${K}doctor`,Fb=`${Pb}.run`,Ib=e=>`${Pb}.fix.${e}`,Lb=e=>`${Pb}.${e}`,Rb=`${K}pickers`,zb=[`{{ themePreview }}`],Bb=[{name:`preset`,...dy.preset,glyph:`▦`,domain:`presets`,beneath:[`{{ layoutPreview }}`,`{{ action "${yb}" "⊕ save as preset" }}{{ if not .preset.bundled }} {{ action "${bb}" (printf "🗑 delete %s" .${dy.preset.effectiveVar}) }}{{ end }}`]}],Vb=[{name:`theme`,...dy.theme,glyph:`🎨`,domain:`themes`,beneath:zb},{name:`look`,...dy.look,glyph:`◐`,domain:`looks`,beneath:zb},{name:`style`,...dy.style,glyph:`✦`,domain:`styles`,beneath:[]},{name:`progression`,...dy.progression,glyph:`🎼`,domain:`progressions`,beneath:[`{{ layoutPreview }}`]},{name:`charset`,...dy.charset,glyph:`🔣`,domain:`charsets`,beneath:[]},{name:`colorCompatibility`,...dy.colorCompatibility,glyph:`🌈`,domain:`colorCompatibilities`,beneath:[]}],Hb={name:`wrap`,...dy.autoWrap},Ub={name:`padding`,...dy.padding},Wb=`${K}${Hb.name}`,Gb=`${K}${Ub.name}`,Kb=[...Bb,...Vb],qb=[...Kb,Hb,Ub];new Set(qb.flatMap(e=>[e.sessionKey,e.configKey]));const Jb=e=>`${K}${e}`,Yb=e=>`${K}apply.${e}`,Xb=e=>`${K}reset.${e}`,Zb=e=>`${K}carousel.${e}`,Qb=(e,t)=>`${Zb(e)}.${t}`,$b=sg(Rb),ex=e=>({variable:$b,key:$b,member:ag(Yb(e.name))});function tx(e){return lc(Jb(e.name),ex(e),{kind:`container`,direction:`vertical`,children:[{kind:`segment`,name:Zb(e.name)},...e.beneath.map((t,n)=>({kind:`segment`,name:Qb(e.name,n)}))]},`drop`)}function nx(e){return e===ub}function rx(e){let t={kind:`segment`,name:ub};if(e.kind===`container`&&e.direction===`vertical`){let[n,...r]=e.children;return e.when===void 0&&n!==void 0?{...e,children:[rx(n),...r]}:{kind:`container`,direction:`vertical`,children:[t,e]}}return e.kind===`container`&&e.when===void 0?{...e,children:[t,...e.children]}:{kind:`container`,direction:`horizontal`,children:[t,e]}}function ix(e){return ax(e)>0?e:rx(e)}function ax(e){let t=0;for(let n of ns(e))n.kind===`segment`&&nx(n.name)&&(t+=1);return t}function ox(e,t=!1){let n=t||e.when!==void 0;return e.kind===`segment`?n&&nx(e.name)||e.opens!==void 0&&ox(e.opens.body,!0):e.children.some(e=>ox(e,n))}function sx(e){return e.kind===`segment`?nx(e.name)?lc(e.name,Ob,{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:mb},...Bb.map(tx),{kind:`segment`,name:_b},lc(gb,kb,{kind:`container`,direction:`horizontal`,children:[...Vb.map(tx),{kind:`segment`,name:Wb},{kind:`segment`,name:Gb},{kind:`segment`,name:xb}]},`drop`),lc(Ab,jb,{kind:`container`,direction:`vertical`,children:[{kind:`segment`,name:Pb},...nb.map(e=>({kind:`segment`,name:Lb(e.name)}))]},`drop`),{kind:`segment`,name:fb},...Mb.map(e=>({kind:`segment`,name:e.seg}))]},`inline`):e:cx(e)}function cx(e){return{...e,children:e.children.map(e=>sx(e))}}function lx(e){let t={variables:{[ub]:pc(ub,ic)},actions:{[Eb]:mc(ub,db),[ub]:{do:[Eb,Cb]},[Db]:mc(gb,db),[gb]:{do:[Db,Cb]},[Ab]:mc(Ab,db),[Fb]:{doctor:`run`},[pb]:{set:Ob.key,to:ic},[fb]:{do:[Fg,pb]},...hb.actions,[_b]:{save:!0},[yb]:{preset:`save`},[bb]:{preset:`delete`,name:`{{ .${dy.preset.effectiveVar} }}`}},segments:{[ub]:{template:fc(ub,e,`❌`)},[mb]:{template:hb.template},[_b]:{when:`{{ gt .${vb} 0 }}`,template:`{{ action "${_b}" (printf "💾 save %d" .${vb}) }}`},[gb]:{template:fc(gb,`⚙ config ▸`,`⚙ config ▾`)},[Ab]:{template:fc(Ab,`🧰 tools ▸`,`🧰 tools ▾`)},[Pb]:{template:`{{ action "${Fb}" "🩺 doctor" }}`},[Wb]:{template:`{{ action "${Yb(`wrap`)}" "wrap: on" "wrap: off" }} {{ action "${Xb(`wrap`)}" "↺" }}`},[Gb]:{template:`{{ action "${Yb(`padding`)}.down" "◀" }} padding {{ .${Ub.effectiveVar} }} {{ action "${Yb(`padding`)}.up" "▶" }} {{ action "${Xb(`padding`)}" "↺" }}`},[fb]:{template:`{{ action "${fb}" "✎ edit" "✎ done" }}`},[xb]:{template:`{{ if eq .${xb} "${wb}" }}{{ action "${xb}" "⟲ confirm reset all" }}{{ else }}{{ action "${Sb}" "⟲ reset all" }}{{ end }}`}}};return t.variables[vb]={kind:`input`,path:`unsaved`,type:`number`,default:0},t.variables[gb]=pc(gb,ic),t.variables[Ab]=pc(Ab,ic),t.variables[xb]={kind:`state`,key:xb,default:Tb},fx(t),dx(t),ux(t),t}function ux(e){for(let t of Mb){let n=Nb(t.depth);e.variables[n]={kind:`input`,path:`history.${t.depth}`,type:`number`,default:0},e.actions[t.seg]=t.action,e.segments[t.seg]={when:`{{ gt .${n} 0 }}`,template:`{{ action "${t.seg}" "${t.display}" }}`}}}function dx(e){for(let t of nb){let n=ob(t.name),r=Ib(t.name);for(let t of Object.values(n))e.variables[t]={kind:`state`,key:t,default:``};e.actions[r]={doctor:`fix`,check:t.name},e.segments[Lb(t.name)]={when:`{{ ne .${n.verdict} "" }}`,template:`{{ if eq .${n.verdict} "ok" }}✓ ${t.label}{{ else }}✗ ${t.label} — {{ .${n.reason} }}{{ if eq .${n.fixable} "${Ja}" }} {{ action "${r}" "[fix]" }}{{ end }}{{ end }}`}}}function fx(e){for(let t of Kb){let n=Yb(t.name);e.actions[n]={set:t.sessionKey,from:t.domain},e.actions[Xb(t.name)]={reset:t.configKey},px(t,e)}e.actions[Yb(Hb.name)]={set:Hb.sessionKey,cycle:[...Xa]},e.actions[Xb(Hb.name)]={reset:Hb.configKey};for(let t of[-1,1])e.actions[`${Yb(Ub.name)}.${t<0?`down`:`up`}`]={set:Ub.sessionKey,...Za,by:t};e.actions[Xb(Ub.name)]={reset:Ub.configKey},e.actions[Sb]={set:xb,to:wb},e.actions[Cb]={set:xb,to:Tb},e.actions[xb]={do:[Cb,...qb.map(e=>Xb(e.name))]}}function px(e,t){let n=Yb(e.name),r=ex(e),i=cg(r.key,r.member);t.variables[r.key]=pc(r.key,ic),t.actions[i]=mc(r.key,r.member),t.segments[Jb(e.name)]={template:`${e.glyph} {{ .${e.effectiveVar} }} ${fc(i,`▸`,`▾`)} {{ action "${Xb(e.name)}" "↺" }}`},t.segments[Zb(e.name)]={template:`{{ carousel "${n}" }}`},e.beneath.forEach((n,r)=>{t.segments[Qb(e.name,r)]={template:n}})}function mx(e){e.variables[Pg]=pc(Pg,ic),e.actions[Fg]=mc(Pg,Ig)}function hx(e){let t=lx(e.globals.menuGlyph??`🍫`);mx(t);let n={...e.presets},r=[];for(let t of gg(e.presets)){let{node:i}=yg(e,t),a=sx(ix(i));r.push(a),n[t]={...vg(e.presets,t),root:a}}let i=_y(t,r,e);return{...e,variables:{...i,...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:n}}const gx=[`set`,`persist`,`copy`,`open`,`reset`,`undo`,`redo`,`save`,`preset`,`doctor`,`ceiling`,`do`];function _x(e){return e.ceiling===`set`?[`set`,e.to]:[`clear`]}function vx(e){return`from`in e||`int`in e||`insertSegmentFrom`in e}function yx(e,t){if(t===void 0)return{};if(!xs(t))return Z(e,`actions`,`actions must be an object, got ${Ss(t)}`),{};let n=Object.create(null);for(let[r,i]of Object.entries(t)){let t=bx(e,`actions.${r}`,i);t!==null&&(n[r]=t)}return n}function Z(e,t,n){e.issues.push({path:t,message:n,line:U(e.source,t.split(`.`))})}function bx(e,t,n){if(!xs(n))return Z(e,t,`${t} must be an action object, got ${Ss(n)}`),null;if(`persistWhen`in n)return Z(e,t,`${t}.persistWhen was removed: declare the \`set\` alone — a session pick is a draft until a \`{ save: true }\` action writes every unsaved setting to the config file`),null;let r=gx.filter(e=>e in n);return r.length===1?xx[r[0]](e,t,n):(Z(e,t,`action must declare exactly one of: ${gx.join(`, `)}${r.length>1?` (found: ${r.join(`, `)})`:``}`),null)}const xx={set:(e,t,n)=>Qx(e,t,n,`set`,Jx),persist:(e,t,n)=>Qx(e,t,n,`persist`,Yx),copy:Sx(`copy`),open:Sx(`open`),reset:Cx,undo:Tx(`undo`),redo:Tx(`redo`),save:Tx(`save`),preset:Ex,doctor:Dx,ceiling:Ox,do:kx};function Sx(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=gs(t,n,r,e);return i===null?null:{[e]:i}}}function Cx(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=Ax(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 wx={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 Tx(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 — ${wx[e]}), got ${W(r[e])}`),null)}}function Ex(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 ${W(r)}`),null;if(r===`save`)return{preset:`save`};let a=gs(e,t,n,`name`);return a===null?null:{preset:`delete`,name:a}}function Dx(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 ${W(r)}`),null;if(r===`run`)return{doctor:`run`};let a=n.check;return typeof a!=`string`||ib(a)===void 0?(Z(e,`${t}.check`,`doctor fix must name a check (have: ${nb.map(e=>e.name).join(`, `)}), got ${W(a)}`),null):{doctor:`fix`,check:a}}function Ox(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 ${W(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 ${W(a)}`),null):{ceiling:`set`,to:a}}function kx(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 ${W(r)}`),null):{do:r}}function Ax(e,t,n,r,i,a){let o=gs(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 jx={set:`the SessionState key to write`,persist:`the config globals field to write`};function Mx(e,t,n,r){let i=jx[r],a=Ax(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 Nx(e){return e===`set`?`set-state`:`set-config`}const Px={to:$x(`set`)},Fx={to:$x(`persist`)},Ix={from:eS(`set`)},Lx={from:eS(`persist`)},Rx={min:aS(),max:aS(),by:aS()},zx={int:nS()},Bx={cycle:tS(`set`)},Vx={cycle:tS(`persist`)},Hx={removeSegment:rS(`removeSegment`)},Ux={insertSegment:rS(`insertSegment`),anchor:rS(`anchor`),relation:iS()},Wx={insertSegmentFrom:eS(`persist`),anchor:rS(`anchor`),relation:iS()},Gx={ok:e=>e.min<e.max,issue:e=>({field:`min`,message:`min (${e.min}) must be less than max (${e.max})`})},Kx={ok:e=>e.by!==0,issue:()=>({field:`by`,message:`by must be a non-zero integer (the per-click increment; negative steps down)`})};function qx(e,t,n=[],r){let i=Object.keys(t),a=r??i,o=[e],s=(e,n,r)=>ws(e,t,n,r),c=zs(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?Ms(s,...n):s}}const Jx=[qx(`set`,Px),qx(`set`,Ix),qx(`set`,Rx,[Gx,Kx]),qx(`set`,zx),qx(`set`,Bx)],Yx=[qx(`persist`,Fx),qx(`persist`,Lx),qx(`persist`,Rx,[Gx,Kx]),qx(`persist`,Vx),qx(`persist`,Hx),qx(`persist`,Ux,[],[`insertSegment`]),qx(`persist`,Wx,[],[`insertSegmentFrom`])];function Xx(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 Zx(e){let t=Xx(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 Qx(e,t,n,r,i){let a=Mx(e,t,n,r),o=i.filter(e=>e.detect.some(e=>e in n));if(o.length!==1)return Z(e,t,`${Zx(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 $x(e){let t=Nx(e);return{required:!0,json:{type:`string`},parse:(n,r,i,a)=>Ax(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 eS(e){let t=Nx(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 ${W(o)}`)}}}function tS(e){let t=Nx(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 ${Ss(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 nS(){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 ${W(r[n])}`);return}return!0}}}function rS(e){return{required:!0,json:{type:`string`},parse:(t,n,r,i)=>{let a=gs(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 iS(){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 ${W(i)}`);return}return i}}}function aS(){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 ${W(i)}`);return}return i}}}const oS={noun:`look key`,fields:{hueShift:Fs(),chromaScale:Fs({min:0}),lightnessScale:Fs(),lightnessShift:Fs()}};function sS(e,t){if(!xs(t))return e.issues.push({path:`looks`,message:`looks must be an object mapping look names to adaptation objects, got ${Ss(t)}`,line:U(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:U(e.source,[`looks`,r])});continue}let t=Cs(e,oS,`looks.${r}`,i);t!==null&&(n[r]={...kn,...t})}return n}const cS={noun:`preset key`,fields:{root:{required:!1,json:{$ref:`#/definitions/RootFragment`},parse:(e,t,n,r)=>r[n]===void 0?void 0:fu(e,`${t}.${n}`,r[n])},globals:{required:!1,json:jc(),parse:(e,t,n,r)=>r[n]===void 0?void 0:Ac(e,`${t}.${n}`,r[n])}}};function lS(e,t){if(!xs(t))return e.issues.push({path:`presets`,message:`presets must be an object mapping preset names to config fragments, got ${Ss(t)}`,line:U(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:U(e.source,[`presets`,r])});continue}let t=Cs(e,cS,`presets.${r}`,i);t!==null&&(n[r]=t)}return n}function uS(e,t){if(t===void 0)return{};if(!xs(t))return e.issues.push({path:`helpers`,message:`helpers must be an object, got ${Ss(t)}`,line:U(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 ${W(i)}`,line:U(e.source,[`helpers`,r])});continue}n[r]=i}return n}const dS=new Map,fS=new Map;function pS(e){let t=mS(e);if(t===null)throw Error(`Palette "${e}" (resolved "${ya(e)}") did not resolve in the theme registry — allowed names and the registry are inconsistent`);return t}function mS(e){let t=ya(e),n=dS.get(t);if(n!==void 0)return n;let r=ar(t);return r===null?null:(dS.set(t,r),r)}function hS(e,t){let n=`${e.name} ${t.hueShift} ${t.chromaScale} ${t.lightnessScale} ${t.lightnessShift}`,r=fS.get(n);if(r!==void 0)return r;let i=pr(e,t);return fS.set(n,i),i}function gS(e){let t=mS(e);return t===null?null:{kind:`decided`,name:e,value:t}}function _S(e,t){let n=gS(e);return n===null?(t(`globals.palette rendered "${ba}": "${e}" names no installed theme`),yS()):n}function vS(e,t,n){return Da(e,t,n,yS(),gS)}function yS(){return gS(ba)}function bS(e){return Oa(vS(void 0,null,e),()=>ba,yS).value}const xS=new Map;function SS(e,t,n){xS.set(e,{permanent:!0,resolve:t,paletteOf:n})}SS(`themes`,()=>Ca(),e=>pS(e)),SS(`styles`,()=>Na),SS(`progressions`,()=>Ga),SS(`charsets`,()=>Ia),SS(`colorCompatibilities`,()=>Ba);function CS(e){return new Map([[`looks`,{members:Object.keys(e.looks),paletteOf:(t,n)=>hS(n,e.looks[t])}],[`presets`,{members:gg(e.presets)}]])}function wS(e){return[...new Set([...xS.keys(),...e.keys()])]}function TS(e,t){if(typeof e!=`string`)return{members:e};let n=t.get(e);if(n)return n;let r=xS.get(e);if(r)return{members:r.resolve(),paletteOf:r.paletteOf};throw Error(`unknown option domain "${e}" (have: ${wS(t).join(`, `)})`)}function ES(e,t){let n=new Map;for(let e of Object.keys(t)){let t=bl(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:U(e.source,[`presets`])})}function DS(e,t,n){t.globals.look!==void 0&&!Ea(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:U(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:U(e.source,[`globals`,`preset`])}),ES(e,t.presets);let r=CS(t);for(let[n,i]of Object.entries(t.actions))!(`set`in i)||!(`from`in i)||typeof i.from!=`string`||wS(r).includes(i.from)||e.issues.push({path:`actions.${n}.from`,message:`actions.${n} from: references unknown option domain "${i.from}" (have: ${wS(r).join(`, `)})`,line:U(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&&vx(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:U(e.source,[`actions`,n,`do`])})});for(let[n,r]of Object.entries(t.actions)){let i=`persist`in r?r.persist:`reset`in r?r.reset:null;if(i===null)continue;let a=`persist`in r?`persist`:`reset`,o=Cy(i);if(o===null){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" is not a config globals field (have: ${Fc().join(`, `)}), a "segments.<name>.palette" target, a "presets.<name>.globals.<field>" target, or a "presets.<name>.root" target`,line:U(e.source,[`actions`,n,a])});continue}let s=OS.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:U(e.source,[`actions`,n,a])});continue}if(o.scope===`preset-root`){kS(e,t,n,a,i,o.preset,r);continue}if(o.scope===`preset-globals`&&!gg(t.presets).includes(o.preset)){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" names preset "${o.preset}" which is not declared (have: ${gg(t.presets).join(`, `)})`,line:U(e.source,[`actions`,n,a])});continue}if(o.scope===`segment-palette`){if(!Object.prototype.hasOwnProperty.call(t.segments,o.segment)){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" names segment "${o.segment}" which is not declared (have segments: ${Object.keys(t.segments).join(`, `)})${kl(o.segment)}`,line:U(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:U(e.source,[`actions`,n,a])})}}let i=a_(t);for(let t of i.names)t!==`settings`&&!t.startsWith(AS)||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:U(e.source,[`variables`,t])});let a=(t,n,r)=>{ax(t)>1&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${ub}" ${ax(t)} times — it may appear at most once per layout (it is one disclosure, and one state key holds one open state). Remove all but the placement you want; removing every placement puts the menu at its default position.`,line:r}),ox(t)&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${ub}" under a \`when\` or inside a disclosure body — the menu is visible under every condition, so its placement may not be gated. Move it to an ungated position, or remove it to put the menu at its default position.`,line:r}),o(t)&&e.issues.push({path:n,message:`${n} sets "distribution" on a container inside a bar cell — everything inside a cell wears that cell's hue and tone, so it would place nothing. Set it on the row whose children are the cells (the horizontal container) or on the root, which places the rows.`,line:r});let i=new Map;for(let e of ns(t)){if(e.kind!==`segment`)continue;let t=Qo(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=es(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||Zo[e.direction]===`cell`))}let s=(n,r)=>{for(let[a,o]of Qs(n,r)){let n=U(e.source,o.split(`.`));a.when!==void 0&&(IS(e,`${o}.when`,a.when,i,{line:n}),FS(e,`${o}.when`,a.when,n)),a.kind===`segment`&&(nx(a.name)||(Object.prototype.hasOwnProperty.call(t.segments,a.name)||e.issues.push({path:o,message:`${r} entry "${a.name}" does not match any declared segment${kl(a.name)}`,line:n}),MS(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`,Xs(t.root)]]);for(let e of gg(t.presets)){let{node:n,path:r}=yg(t,e);c.set(r,n)}for(let[t,n]of c)a(n,t,U(e.source,t.split(`.`)));for(let[n,r]of Object.entries(t.variables))NS(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))NS(e,`segments.${n}.vars.${t}`,a,i,n);let a=jS(i,r.settings);for(let i of[`template`,`bg`,`fg`,`when`]){let o=r[i];if(typeof o==`string`){IS(e,`segments.${n}.${i}`,o,a,{segCtx:n,settings:r.settings});for(let r of t_(o))Object.prototype.hasOwnProperty.call(t.actions,r)||e.issues.push({path:`segments.${n}.${i}`,message:`${i} references unknown action "${r}"`,line:U(e.source,[`segments`,n,i])});for(let r of r_(o))Object.prototype.hasOwnProperty.call(t.actions,r)||e.issues.push({path:`segments.${n}.${i}`,message:`${i} references unknown action "${r}" (in a picker, menu or carousel)`,line:U(e.source,[`segments`,n,i])})}}}for(let[n,r]of Object.entries(t.variables))PS(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))PS(e,`segments.${n}.vars.${t}`,a,i,n)}const OS=[`removeSegment`,`insertSegment`,`insertSegmentFrom`];function kS(e,t,n,r,i,a,o){let s=`actions.${n}.${r}`,c=U(e.source,[`actions`,n,r]);if(!gg(t.presets).includes(a)){e.issues.push({path:s,message:`actions.${n}: "${i}" names preset "${a}" which is not declared (have: ${gg(t.presets).join(`, `)})`,line:c});return}if(r===`reset`)return;let l=`removeSegment`in o,u=`insertSegment`in o,d=`insertSegmentFrom`in o;if(!l&&!u&&!d){e.issues.push({path:s,message:`actions.${n}: "${i}" is a "presets.<name>.root" target and can only be paired with "removeSegment", "insertSegment", or "insertSegmentFrom" (not "to"/"from"/"cycle"/bounded — those have no meaning as a tree op)`,line:c});return}let f=(r,i)=>{Object.prototype.hasOwnProperty.call(t.segments,i)||e.issues.push({path:s,message:`actions.${n}: ${r} "${i}" is not a declared segment (have: ${Object.keys(t.segments).join(`, `)})${kl(i)}`,line:c})},p=new Set($o(yg(t,a).node)),m=(r,i)=>{!Ol.has(i)||p.has(i)||Object.prototype.hasOwnProperty.call(t.segments,i)||e.issues.push({path:s,message:`actions.${n}: ${r} "${i}" names no placement${kl(i)}`,line:c})};`removeSegment`in o&&m(`removeSegment`,o.removeSegment),`insertSegment`in o&&f(`insertSegment`,o.insertSegment),(`insertSegment`in o||`insertSegmentFrom`in o)&&m(`anchor`,o.anchor)}const AS=`settings.`;function jS(e,t){let n=Object.keys(t??{});return n.length===0?e:{...e,names:new Set([...e.names,...n.map(e=>AS+e)])}}function MS(e,t,n,r,i){let a=Object.prototype.hasOwnProperty.call(t.segments,n.name)?t.segments[n.name]:void 0;if(a===void 0)return;let o=a.settings??{},s=`${r}: placement "${Qo(n)}" of segment "${n.name}"`;for(let[t,a]of Object.entries(n.settings??{})){let c=Object.prototype.hasOwnProperty.call(o,t)?o[t]:void 0,l=c===void 0?`sets "${t}", which segment "${n.name}" does not declare (${Object.keys(o).length===0?`it declares no settings`:`it declares: ${Object.keys(o).join(`, `)}`})`:fs(c,a)?void 0:`sets "${t}" to ${JSON.stringify(a)}, but it must be ${ps(c)}`;l!==void 0&&e.issues.push({path:r,message:`${s} ${l}`,line:i})}}function NS(e,t,n,r,i){n.kind===`template`&&IS(e,`${t}.template`,n.template,r,{segCtx:i}),ls(n)&&n.cache&&`key`in n.cache&&IS(e,`${t}.cache.key`,n.cache.key,r,{segCtx:i})}function PS(e,t,n,r,i){if(ls(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:U(e.source,[...t.split(`.`),`cache`,`depends_on`])})}}function FS(e,t,n,r){try{Ng.parse(n)}catch(n){e.issues.push({path:t,message:`Template parse error in ${t}: ${n.message}`,line:r})}}function IS(e,t,n,r,i){for(let[a,o]of $g(n,r.helpers)){if(i_(a,r))continue;if(o!==null){LS(e,o,a);continue}if(i?.segCtx!==void 0&&a.startsWith(AS)){let n=Object.keys(i.settings??{});e.issues.push({path:t,message:`Template reads ".${a}", but segment "${i.segCtx}" declares no setting "${a.slice(9)}" (${n.length===0?`it declares no settings`:`it declares: ${n.join(`, `)}`}) — declare it under segments.${i.segCtx}.settings`,line:i.line??U(e.source,t.split(`.`))});continue}let n=i?.segCtx===void 0?void 0:`${i.segCtx}.${a}`,s=n!==void 0&&i_(n,r)?` (segment-local vars are namespaced — write ".${n}")`:``;e.issues.push({path:t,message:`Template references unknown variable ".${a}"${s}`,line:i?.line??U(e.source,t.split(`.`))})}}function LS(e,t,n){let r=`helpers.${t}`,i=`Template references unknown variable ".${n}"`;e.issues.some(e=>e.path===r&&e.message===i)||e.issues.push({path:r,message:i,line:U(e.source,[`helpers`,t])})}function RS(e,t){let{graph:n,nodeInfo:r}=zS(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:U(e.source,o?.linePathParts??[`variables`,i])}),!0}if(t===0&&o(s))return!0}return i.set(t,2),a.pop(),!1}}function zS(e){let t=new Set(Object.keys(e.variables)),n=new Map;for(let t of Object.keys(e.variables))n.set(t,{declarationPath:`variables.${t}`,linePathParts:[`variables`,t]});for(let[r,i]of Object.entries(e.segments))if(i.vars)for(let e of Object.keys(i.vars)){let i=`${r}.${e}`;t.add(i),n.set(i,{declarationPath:`segments.${r}.vars.${e}`,linePathParts:[`segments`,r,`vars`,e]})}let r=new Map;for(let e of t)r.set(e,new Set);let i=(n,i)=>{for(let a of $g(i,e.helpers).keys()){if(t.has(a)){r.get(n).add(a);continue}let e=a.split(`.`)[0];e!==a&&t.has(e)&&r.get(n).add(e)}},a=(e,n)=>{if(n.kind===`template`&&i(e,n.template),ls(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 BS=[`json5`,`json`];function VS(e){try{return r.statSync(e,{throwIfNoEntry:!1})===void 0?`absent`:`present`}catch(t){return{path:e,error:t.message}}}function HS(e){return e===`~`||e.startsWith(`~/`)||e.startsWith(`~\\`)?f.homedir()+e.slice(1):e}function US(e,t,n){if(n!==void 0)return[n];let r=t??process.cwd();return[...new Set([...e?BS.map(t=>c.join(e,`.cc-candybar.${t}`)):[],...BS.map(e=>c.join(r,`.cc-candybar.${e}`)),...BS.map(e=>`${WS()}.${e}`)])]}function WS(){let e=process.env.XDG_CONFIG_HOME??c.join(f.homedir(),`.config`);return c.join(e,`cc-candybar`,`config`)}function GS(e,t,n){let r=[];for(let i of US(e,t,n)){let e=VS(i);if(e===`present`)return{kind:`file`,path:i,unchecked:r};e!==`absent`&&r.push(e)}if(n===void 0)return{kind:`default`,unchecked:r};let[i]=r;return i===void 0?{kind:`missing`,path:n}:{kind:`unreadable`,...i}}function KS(e,t,n){let r=GS(e,t,n);return r.kind===`default`?`${WS()}.${BS[0]}`:r.path}function qS(e){return JS(e).join(`
158
- `)||null}function JS(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 YS(e,t){let n=US(e,t).filter(e=>VS(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 XS(e,t,n){return e===null?{...QS,config:tc(QS.raw,t)}:ZS(e,r.readFileSync(e,`utf-8`),t,n)}function ZS(e,t,n,r){let i={source:t,...tC(e,t,r,Hl(n))};return{...i,config:tc(i.raw,n)}}const QS={raw:{},source:``,warnings:[]};function $S({config:e,raw:t,source:n},r=`<config>`,i=new Set(Ca())){let a=[],o={source:n,issues:a,allowedPalettes:i,groups:[]};if(DS(o,e,t),RS(o,e),a.length>0)throw new Go(r,a);let s=Mg(e,a);if(a.length>0)throw new Go(r,a);return Qy(hx(s))}function eC(e,t,n=new Set(Ca()),r=nC){return tC(e,t,n,r).raw}function tC(e,t,n,r){let i=rC(e,t),a=Jo(e,t),o=a===null?[]:[a],s=[],c={source:t,issues:s,allowedPalettes:n??new Set(Ca()),groups:[]};if(!xs(i))throw new Go(e,[{path:``,message:`Config root must be an object, got ${Ss(i)}`}],o);let l=iC(c,i,r);if(s.length>0)throw new Go(e,s,o);return{raw:l,warnings:o}}const nC=new Set;function rC(e,t){try{return Ze.default.parse(t)}catch(t){let n=t;throw new Go(e,[{path:``,message:`JSON5 syntax error: ${n.message}`,line:n.lineNumber,col:n.columnNumber}])}}function iC(e,t,n){for(let n of Object.keys(t))aC.has(n)||e.issues.push({path:n,message:`Unknown top-level key "${n}". Expected one of: ${[...aC].join(`, `)}`,line:U(e.source,[n])});let r={};return t.globals!==void 0&&(r.globals=kc(e,`globals`,t.globals)),t.variables!==void 0&&(r.variables=Yc(e,`variables`,t.variables)),t.segments!==void 0&&(r.segments=Ul(e,t.segments,n)),t.layout!==void 0&&e.issues.push({path:`layout`,message:`"layout" is no longer supported — use "root" with the A-grammar instead.
157
+ `,Ly=`${Dl}live`,Ry=[`☐ live`,`☑ live`],zy=`${Dl}done`,By={variable:Ly,key:Ly,member:`open`},Vy=`and ${hc(Ug)} (not ${hc(By)})`,Hy=`{{ ${Vy} }}`;function Uy(e,t){return`{{ if ${Vy} }}${e}{{ else }}${t}{{ end }}`}const Wy=`{{ and ${hc(Ug)} .preset.customized }}`,Gy=kl,Ky=`${Dl}addable`;function qy(e){return new Map([[Ky,{members:Object.keys(e.segments).filter(e=>!Gy(e))}]])}function Jy(e,t,n){return n.segments[e]={template:t,when:Wg},{kind:`segment`,name:e}}function Yy(e,t,n){let r=`${Dl}${e.presetIdent}.remove.${t}`;return e.artifacts.actions[r]={persist:e.rootKey,removeSegment:n},`{{ action "${r}" "🚫" }}`}function Xy(e){return`{{ if ${hc(Ug)} }}${e.join(``)}{{ end }}`}function Zy(e,t){return e.reduce((e,t)=>`{{ if ${hc(t)} }}true{{ else }}${e}{{ end }}`,t)}function Qy(e){return e.flatMap(e=>[...is(e)].flatMap(e=>e.kind===`segment`&&e.opens?.ref.key===`edit.mode`?[e.opens.ref]:[]))}function $y(e,t,n){return`${Vg}${e}.${t}.${n}`}function eb(e,t,n,r,i){let a=fc(e.label),{domain:o}=e;if(o===`bool`)return i.actions[r]={set:t,cycle:[`false`,`true`]},`{{ action "${r}" "☐ ${a}" "☑ ${a}" }}`;if(`min`in o){for(let e of[-1,1])i.actions[`${r}.${e<0?`down`:`up`}`]={set:t,min:o.min,max:o.max,by:e};return`{{ action "${r}.down" "◀" }} {{ "${a}" }} {{ .${n} }} {{ action "${r}.up" "▶" }}`}return i.actions[r]={set:t,cycle:[...o]},`{{ action "${r}" ${o.map(e=>`"${a}: ${fc(e)}"`).join(` `)} }}`}function tb(e,t,n,r){let i=es(n),a=`${Dl}${e.presetIdent}`,o=Hg(e.presetIdent,i),s=`${a}.configure.${t}`;e.artifacts.actions[s]={set:Rg,to:o};let c={},l=Object.entries(r).map(([r,o])=>{let s=$y(e.presetIdent,i,r),l=`${Vg}p${e.presetIdent}.d${t}.${r}`;e.artifacts.variables[l]={kind:`state`,key:s,default:hs(n.settings?.[r]??o.default)},c[r]={key:s,variable:l};let u=`${a}.setting.${t}.${r}`;return e.artifacts.segments[u]={template:eb(o,s,l,u,e.artifacts)},{kind:`segment`,name:u}});return{term:`{{ action "${s}" "⚙" }}`,ref:{variable:Rg,key:Rg,member:o},body:{kind:`container`,direction:`horizontal`,children:l},drafts:c}}const nb=`${Dl}label:`;function rb(e){if(e.startsWith(nb)){let t=e.slice(nb.length);return t.slice(t.indexOf(`:`)+1)}return e.startsWith(`edit.`)?void 0:e}function ib(e,t,n,r){let i=`${nb}${e}:${t}`;return n.segments[i]={template:`{{ "${fc(e)}" }}`,when:Zy(r===null?[]:[r.ref],Hy)},r===null?{kind:`segment`,name:i}:pc(i,r.ref,r.body,`drop`)}function ab(e,t,n,r){let{presetIdent:i,artifacts:a}=e,o=`${Dl}${i}.insert.${t}`,s=`${Dl}${i}.insertSeg.${t}`;a.actions[o]={persist:e.rootKey,insertSegmentFrom:Ky,anchor:n,relation:r};let c=lg(o),l=ug(s,o,void 0),u=pg(l),d=fg(l,c);return a.variables[l]=_c(l,cc),a.variables[u]={kind:`state`,key:u,default:`0`},a.actions[d]=vc(l,c),a.actions[u]={set:u,int:!0},{host:s,template:`{{ $m := menu "${o}" "✚" "✕" }}{{ if ${hc({variable:l,key:l,member:c})} }}{{ $m }}{{ else }}{{ fg (${`readableOn (color "success") (bgOf) ${$i}`}) $m }}{{ end }}`}}function ob(e,t){let n=[],r=e.children.findIndex(e=>e.kind===`segment`&&!Gy(e.name)),i=e=>ob(e,t);for(let[a,o]of e.children.entries()){if(o.kind===`container`){n.push(i(o));continue}let s=rs(o,i);if(Gy(o.name)){n.push(s);continue}let c=es(o),l=a===r?[ab(t,String(t.posCounter.n++),c,`before`)]:[],u=String(t.posCounter.n++),d=ab(t,u,c,`after`),f=Yy(t,u,c),p=t.segments[o.name]?.settings??{},m=Object.keys(p).length===0?null:tb(t,u,o,p),h=Xy([...m?[m.term]:[],f]),g={kind:`container`,direction:`horizontal`,children:[...l.map(e=>Jy(e.host,e.template,t.artifacts)),{...ib(c,o.name,t.artifacts,m),trail:h},{...s,when:Uy(`false`,o.when??`true`),trail:h,...m&&{drafts:m.drafts}},Jy(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:Zy(Qy(n),Uy(`true`,e.when))}}}function sb(e,t,n,r,i,a,o){let s=`${Dl}${n}.resetLayout`,c=`${Dl}${n}.customized`;i.actions[s]={reset:r};let l=fc(t);return i.segments[c]={template:`{{ action "${s}" "↺ ${l} customized" }}`,when:Wy},{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[a,{kind:`segment`,name:c}]},cb(e,o)]}}function cb(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),cb(n,t)]}:{...e,children:[...e.children,t]}}function lb(e,t,n,r,i){let{node:a}=Cg(e,t),o={presetIdent:wl(t),rootKey:Dy(t),segments:e.segments,artifacts:n,posCounter:{n:0}};return sb(ob(a,o),t,o.presetIdent,o.rootKey,n,r,i)}function ub(e){let t={variables:{},actions:{},segments:{}},n=My(`${Dl}help`,Fy,[Ug],t);t.variables[Ly]=_c(Ly,cc),t.actions[Ly]=vc(Ly,By.member),t.segments[Ly]={template:gc(Ly,...Ry),when:Wg};let r={kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:Ly},n]};t.segments[zy]={template:`{{ action "${zg}" "✎ done" }}`,when:Wg};let i={kind:`segment`,name:zy},a={...e.presets},o=[];for(let n of bg(e.presets)){let s=lb(e,n,t,i,r);o.push(s),a[n]={...Sg(e.presets,n),root:s}}let s=Cy(t,o,e);return{...e,variables:{...s,...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:a}}const db={socket:`TMUX`,pane:`TMUX_PANE`,truecolor:`CLAUDE_CODE_TMUX_TRUECOLOR`};function fb(e){let t=e[db.socket]??``,n=e[db.pane]??``;if(t===``||n===``)return null;let r=e[db.truecolor]??``;return{socket:t.split(`,`)[0],pane:n,truecolor:r===``?null:r}}const pb=db.truecolor,mb=[{name:`tmuxTruecolor`,label:`tmux truecolor`,probe:({tmux:e,claudeSettingsEnv:t})=>{switch(e.kind){case`unreported`:return{ok:!1,reason:"the client reported no tmux facts — re-run `cc-candybar install` to stage a current client"};case`outside`:return{ok:!0};case`inside`:{if(e.termfeatures.kind===`failed`)return{ok:!1,reason:`tmux could not be asked: ${e.termfeatures.reason}`};if(!e.termfeatures.value.includes(`RGB`)||e.hint.truecolor!==null)return{ok:!0};let n=t[pb];return typeof n==`string`&&n!==``?{ok:!1,reason:`${pb} is set in ~/.claude/settings.json — restart Claude Code to apply`}:{ok:!1,reason:`Claude Code renders the bar in 256 colours inside tmux`,fix:{kind:`claude-settings-env`,name:pb,value:`1`}}}}}}];function hb(e){return mb.map(t=>({check:t,verdict:t.probe(e)}))}function gb(e){return mb.find(t=>t.name===e)}const _b=`${K}doctor.`;function vb(e){let t=`${_b}${e}.`;return{verdict:`${t}verdict`,reason:`${t}reason`,fixable:`${t}fixable`}}function yb(e){return e.flatMap(({check:e,verdict:t})=>{let n=vb(e.name);return t.ok?[{key:n.verdict,value:`ok`},{key:n.reason,value:``},{key:n.fixable,value:Ya}]:[{key:n.verdict,value:`failed`},{key:n.reason,value:t.reason},{key:n.fixable,value:t.fix===void 0?Ya:Ja}]})}const bb={copySession:{copy:`{{ .session.id }}`},openProject:{open:`{{ .project_dir }}`},openTranscript:{open:`{{ .transcript_path }}`}};function xb(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(bb).map(([t,n])=>[`${e}${t}`,n]))}}const Sb=`${K}menu`,Cb=`open`,wb=`${K}edit`,Tb=`${K}close`,Eb=`${K}toolbar`,Db=xb(K),Ob=`${K}config`,kb=`${K}save`,Ab=`${K}unsaved`,jb=`${K}preset.save`,Mb=`${K}preset.delete`,Nb=`${K}resetAll`,Pb=`${Nb}.arm`,Fb=`${Nb}.disarm`,Ib=`armed`,Lb=`disarmed`,Rb=`${Sb}.toggle`,zb=`${Ob}.toggle`,Bb={variable:Sb,key:Sb,member:Cb},Vb={variable:Ob,key:Ob,member:Cb},Hb=`${K}tools`,Ub={variable:Hb,key:Hb,member:Cb},Wb=[{seg:`${K}undo`,depth:`undo`,action:{undo:!0},display:`↶ undo`},{seg:`${K}redo`,depth:`redo`,action:{redo:!0},display:`↷ redo`}],Gb=e=>`${K}history.${e}`,Kb=`${K}doctor`,qb=`${Kb}.run`,Jb=e=>`${Kb}.fix.${e}`,Yb=e=>`${Kb}.${e}`,Xb=`${K}pickers`,Zb=[`{{ themePreview }}`],Qb=[{name:`preset`,..._y.preset,glyph:`▦`,domain:`presets`,beneath:[`{{ layoutPreview }}`,`{{ action "${jb}" "⊕ save as preset" }}{{ if not .preset.bundled }} {{ action "${Mb}" (printf "🗑 delete %s" .${_y.preset.effectiveVar}) }}{{ end }}`]}],$b=[{name:`theme`,..._y.theme,glyph:`🎨`,domain:`themes`,beneath:Zb},{name:`look`,..._y.look,glyph:`◐`,domain:`looks`,beneath:Zb},{name:`style`,..._y.style,glyph:`✦`,domain:`styles`,beneath:[]},{name:`progression`,..._y.progression,glyph:`🎼`,domain:`progressions`,beneath:[`{{ layoutPreview }}`]},{name:`charset`,..._y.charset,glyph:`🔣`,domain:`charsets`,beneath:[]},{name:`colorCompatibility`,..._y.colorCompatibility,glyph:`🌈`,domain:`colorCompatibilities`,beneath:[]}],ex={name:`wrap`,..._y.autoWrap},tx={name:`padding`,..._y.padding},nx=`${K}${ex.name}`,rx=`${K}${tx.name}`,ix=[...Qb,...$b],ax=[...ix,ex,tx];new Set(ax.flatMap(e=>[e.sessionKey,e.configKey]));const ox=e=>`${K}${e}`,sx=e=>`${K}apply.${e}`,cx=e=>`${K}reset.${e}`,lx=e=>`${K}carousel.${e}`,ux=(e,t)=>`${lx(e)}.${t}`,dx=dg(Xb),fx=e=>({variable:dx,key:dx,member:lg(sx(e.name))});function px(e){return pc(ox(e.name),fx(e),{kind:`container`,direction:`vertical`,children:[{kind:`segment`,name:lx(e.name)},...e.beneath.map((t,n)=>({kind:`segment`,name:ux(e.name,n)}))]},`drop`)}function mx(e){return e===Sb}function hx(e){let t={kind:`segment`,name:Sb};if(e.kind===`container`&&e.direction===`vertical`){let[n,...r]=e.children;return e.when===void 0&&n!==void 0?{...e,children:[hx(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 gx(e){return _x(e)>0?e:hx(e)}function _x(e){let t=0;for(let n of is(e))n.kind===`segment`&&mx(n.name)&&(t+=1);return t}function vx(e,t=!1){let n=t||e.when!==void 0;return e.kind===`segment`?n&&mx(e.name)||e.opens!==void 0&&vx(e.opens.body,!0):e.children.some(e=>vx(e,n))}function yx(e){return e.kind===`segment`?mx(e.name)?pc(e.name,Bb,{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:Eb},...Qb.map(px),{kind:`segment`,name:kb},pc(Ob,Vb,{kind:`container`,direction:`horizontal`,children:[...$b.map(px),{kind:`segment`,name:nx},{kind:`segment`,name:rx},{kind:`segment`,name:Nb}]},`drop`),pc(Hb,Ub,{kind:`container`,direction:`vertical`,children:[{kind:`segment`,name:Kb},...mb.map(e=>({kind:`segment`,name:Yb(e.name)}))]},`drop`),{kind:`segment`,name:wb},...Wb.map(e=>({kind:`segment`,name:e.seg}))]},`inline`):e:bx(e)}function bx(e){return{...e,children:e.children.map(e=>yx(e))}}function xx(e){let t={variables:{[Sb]:_c(Sb,cc)},actions:{[Rb]:vc(Sb,Cb),[Sb]:{do:[Rb,Fb]},[zb]:vc(Ob,Cb),[Ob]:{do:[zb,Fb]},[Hb]:vc(Hb,Cb),[qb]:{doctor:`run`},[Tb]:{set:Bb.key,to:cc},[wb]:{do:[zg,Tb]},...Db.actions,[kb]:{save:!0},[jb]:{preset:`save`},[Mb]:{preset:`delete`,name:`{{ .${_y.preset.effectiveVar} }}`}},segments:{[Sb]:{template:gc(Sb,e,`❌`)},[Eb]:{template:Db.template},[kb]:{when:`{{ gt .${Ab} 0 }}`,template:`{{ action "${kb}" (printf "💾 save %d" .${Ab}) }}`},[Ob]:{template:gc(Ob,`⚙ config ▸`,`⚙ config ▾`)},[Hb]:{template:gc(Hb,`🧰 tools ▸`,`🧰 tools ▾`)},[Kb]:{template:`{{ action "${qb}" "🩺 doctor" }}`},[nx]:{template:`{{ action "${sx(`wrap`)}" "wrap: on" "wrap: off" }} {{ action "${cx(`wrap`)}" "↺" }}`},[rx]:{template:`{{ action "${sx(`padding`)}.down" "◀" }} padding {{ .${tx.effectiveVar} }} {{ action "${sx(`padding`)}.up" "▶" }} {{ action "${cx(`padding`)}" "↺" }}`},[wb]:{template:`{{ action "${wb}" "✎ edit" "✎ done" }}`},[Nb]:{template:`{{ if eq .${Nb} "${Ib}" }}{{ action "${Nb}" "⟲ confirm reset all" }}{{ else }}{{ action "${Pb}" "⟲ reset all" }}{{ end }}`}}};return t.variables[Ab]={kind:`input`,path:`unsaved`,type:`number`,default:0},t.variables[Ob]=_c(Ob,cc),t.variables[Hb]=_c(Hb,cc),t.variables[Nb]={kind:`state`,key:Nb,default:Lb},wx(t),Cx(t),Sx(t),t}function Sx(e){for(let t of Wb){let n=Gb(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 Cx(e){for(let t of mb){let n=vb(t.name),r=Jb(t.name);for(let t of Object.values(n))e.variables[t]={kind:`state`,key:t,default:``};e.actions[r]={doctor:`fix`,check:t.name},e.segments[Yb(t.name)]={when:`{{ ne .${n.verdict} "" }}`,template:`{{ if eq .${n.verdict} "ok" }}✓ ${t.label}{{ else }}✗ ${t.label} — {{ .${n.reason} }}{{ if eq .${n.fixable} "${Ja}" }} {{ action "${r}" "[fix]" }}{{ end }}{{ end }}`}}}function wx(e){for(let t of ix){let n=sx(t.name);e.actions[n]={set:t.sessionKey,from:t.domain},e.actions[cx(t.name)]={reset:t.configKey},Tx(t,e)}e.actions[sx(ex.name)]={set:ex.sessionKey,cycle:[...Xa]},e.actions[cx(ex.name)]={reset:ex.configKey};for(let t of[-1,1])e.actions[`${sx(tx.name)}.${t<0?`down`:`up`}`]={set:tx.sessionKey,...Za,by:t};e.actions[cx(tx.name)]={reset:tx.configKey},e.actions[Pb]={set:Nb,to:Ib},e.actions[Fb]={set:Nb,to:Lb},e.actions[Nb]={do:[Fb,...ax.map(e=>cx(e.name))]}}function Tx(e,t){let n=sx(e.name),r=fx(e),i=fg(r.key,r.member);t.variables[r.key]=_c(r.key,cc),t.actions[i]=vc(r.key,r.member),t.segments[ox(e.name)]={template:`${e.glyph} {{ .${e.effectiveVar} }} ${gc(i,`▸`,`▾`)} {{ action "${cx(e.name)}" "↺" }}`},t.segments[lx(e.name)]={template:`{{ carousel "${n}" }}`},e.beneath.forEach((n,r)=>{t.segments[ux(e.name,r)]={template:n}})}function Ex(e){e.variables[Rg]=_c(Rg,cc),e.actions[zg]=vc(Rg,Bg)}function Dx(e){let t=xx(e.globals.menuGlyph??`🍫`);Ex(t);let n={...e.presets},r=[];for(let t of bg(e.presets)){let{node:i}=Cg(e,t),a=yx(gx(i));r.push(a),n[t]={...Sg(e.presets,t),root:a}}let i=Cy(t,r,e);return{...e,variables:{...i,...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:n}}const Ox=[`set`,`persist`,`copy`,`open`,`reset`,`undo`,`redo`,`save`,`preset`,`doctor`,`ceiling`,`slash`,`do`];function kx(e){return e.ceiling===`set`?[`set`,e.to]:[`clear`]}function Ax(e){return`from`in e||`int`in e||`insertSegmentFrom`in e}const jx=RegExp(`^/[^\\s\\x00-\\x1f\\x7f-\\x9f/][^\\x00-\\x1f\\x7f-\\x9f]*$`);function Mx(e){return typeof e==`string`&&jx.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 Nx(e,t){if(t===void 0)return{};if(!Ts(t))return Z(e,`actions`,`actions must be an object, got ${Es(t)}`),{};let n=Object.create(null);for(let[r,i]of Object.entries(t)){let t=Px(e,`actions.${r}`,i);t!==null&&(n[r]=t)}return n}function Z(e,t,n){e.issues.push({path:t,message:n,line:U(e.source,t.split(`.`))})}function Px(e,t,n){if(!Ts(n))return Z(e,t,`${t} must be an action object, got ${Es(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=Ox.filter(e=>e in n);return r.length===1?Fx[r[0]](e,t,n):(Z(e,t,`action must declare exactly one of: ${Ox.join(`, `)}${r.length>1?` (found: ${r.join(`, `)})`:``}`),null)}const Fx={set:(e,t,n)=>pS(e,t,n,`set`,lS),persist:(e,t,n)=>pS(e,t,n,`persist`,uS),copy:Ix(`copy`),open:Ix(`open`),reset:Lx,undo:zx(`undo`),redo:zx(`redo`),save:zx(`save`),preset:Bx,doctor:Vx,ceiling:Hx,slash:Ux,do:Wx};function Ix(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=bs(t,n,r,e);return i===null?null:{[e]:i}}}function Lx(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=Gx(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 Rx={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 zx(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 — ${Rx[e]}), got ${W(r[e])}`),null)}}function Bx(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 ${W(r)}`),null;if(r===`save`)return{preset:`save`};let a=bs(e,t,n,`name`);return a===null?null:{preset:`delete`,name:a}}function Vx(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 ${W(r)}`),null;if(r===`run`)return{doctor:`run`};let a=n.check;return typeof a!=`string`||gb(a)===void 0?(Z(e,`${t}.check`,`doctor fix must name a check (have: ${mb.map(e=>e.name).join(`, `)}), got ${W(a)}`),null):{doctor:`fix`,check:a}}function Hx(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 ${W(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 ${W(a)}`),null):{ceiling:`set`,to:a}}function Ux(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=Mx(n.slash);return r.kind===`refused`?(Z(e,`${t}.slash`,r.reason),null):{slash:r.line}}function Wx(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 ${W(r)}`),null):{do:r}}function Gx(e,t,n,r,i,a){let o=bs(e,t,r,n);if(o===null)return null;let s=`${t}.${n}`;return o===``?(Z(e,s,i),null):o.includes(`/`)?(Z(e,s,a(o)),null):o}const Kx={set:`the SessionState key to write`,persist:`the config globals field to write`};function qx(e,t,n,r){let i=Kx[r],a=Gx(e,t,r,n,`${r} key must be non-empty (${i})`,e=>`${r} key "${e}" contains "/" — keys must be slash-free`);return a===null?null:{[r]:a}}function Jx(e){return e===`set`?`set-state`:`set-config`}const Yx={to:mS(`set`)},Xx={to:mS(`persist`)},Zx={from:hS(`set`)},Qx={from:hS(`persist`)},$x={min:bS(),max:bS(),by:bS()},eS={int:_S()},tS={cycle:gS(`set`)},nS={cycle:gS(`persist`)},rS={removeSegment:vS(`removeSegment`)},iS={insertSegment:vS(`insertSegment`),anchor:vS(`anchor`),relation:yS()},aS={insertSegmentFrom:hS(`persist`),anchor:vS(`anchor`),relation:yS()},oS={ok:e=>e.min<e.max,issue:e=>({field:`min`,message:`min (${e.min}) must be less than max (${e.max})`})},sS={ok:e=>e.by!==0,issue:()=>({field:`by`,message:`by must be a non-zero integer (the per-click increment; negative steps down)`})};function cS(e,t,n=[],r){let i=Object.keys(t),a=r??i,o=[e],s=(e,n,r)=>Os(e,t,n,r),c=Us(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?Is(s,...n):s}}const lS=[cS(`set`,Yx),cS(`set`,Zx),cS(`set`,$x,[oS,sS]),cS(`set`,eS),cS(`set`,tS)],uS=[cS(`persist`,Xx),cS(`persist`,Qx),cS(`persist`,$x,[oS,sS]),cS(`persist`,nS),cS(`persist`,rS),cS(`persist`,iS,[],[`insertSegment`]),cS(`persist`,aS,[],[`insertSegmentFrom`])];function dS(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 fS(e){let t=dS(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 pS(e,t,n,r,i){let a=qx(e,t,n,r),o=i.filter(e=>e.detect.some(e=>e in n));if(o.length!==1)return Z(e,t,`${fS(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 mS(e){let t=Jx(e);return{required:!0,json:{type:`string`},parse:(n,r,i,a)=>Gx(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 hS(e){let t=Jx(e);return{required:!0,json:{anyOf:[{type:`string`,minLength:1},{type:`array`,items:{type:`string`,minLength:1},minItems:1,uniqueItems:!0}]},parse:(n,r,i,a)=>{let o=a[i],s=`${r}.${i}`;if(typeof o==`string`){if(o===``){Z(n,s,`${i} must be a non-empty domain name`);return}return o}if(Array.isArray(o)&&o.every(e=>typeof e==`string`)){let r=o;if(r.length===0){Z(n,s,`${i} must name a domain (a non-empty string) or declare an inline domain (a non-empty array of values)`);return}if(r.some(e=>e===``)){Z(n,s,`${i} array members must be non-empty — an empty value cannot be delivered on the ${t} wire`);return}let a=r.filter(e=>e.includes(`/`));if(a.length>0){Z(n,s,`${i} array member(s) ${a.map(e=>`"${e}"`).join(`, `)} contain "/" — ${e} values must be slash-free`);return}if(new Set(r).size!==r.length){Z(n,s,`${i} array members must be unique — a duplicated value would render the same picker option twice`);return}return r}Z(n,s,`${i} must be a domain name (a string) or an inline domain (an array of strings), got ${W(o)}`)}}}function gS(e){let t=Jx(e);return{required:!0,json:{type:`array`,items:{type:`string`,minLength:1},minItems:2,uniqueItems:!0},parse:(n,r,i,a)=>{let o=a[i],s=`${r}.${i}`;if(!Array.isArray(o)||o.some(e=>typeof e!=`string`)){Z(n,s,`cycle must be an array of strings (the enumerated values a click steps through), got ${Es(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 _S(){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 ${W(r[n])}`);return}return!0}}}function vS(e){return{required:!0,json:{type:`string`},parse:(t,n,r,i)=>{let a=bs(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 yS(){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 ${W(i)}`);return}return i}}}function bS(){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 ${W(i)}`);return}return i}}}const xS={noun:`look key`,fields:{hueShift:zs(),chromaScale:zs({min:0}),lightnessScale:zs(),lightnessShift:zs()}};function SS(e,t){if(!Ts(t))return e.issues.push({path:`looks`,message:`looks must be an object mapping look names to adaptation objects, got ${Es(t)}`,line:U(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:U(e.source,[`looks`,r])});continue}let t=Ds(e,xS,`looks.${r}`,i);t!==null&&(n[r]={...kn,...t})}return n}const CS={noun:`preset key`,fields:{root:{required:!1,json:{$ref:`#/definitions/RootFragment`},parse:(e,t,n,r)=>r[n]===void 0?void 0:gu(e,`${t}.${n}`,r[n])},globals:{required:!1,json:Fc(),parse:(e,t,n,r)=>r[n]===void 0?void 0:Pc(e,`${t}.${n}`,r[n])}}};function wS(e,t){if(!Ts(t))return e.issues.push({path:`presets`,message:`presets must be an object mapping preset names to config fragments, got ${Es(t)}`,line:U(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:U(e.source,[`presets`,r])});continue}let t=Ds(e,CS,`presets.${r}`,i);t!==null&&(n[r]=t)}return n}function TS(e,t){if(t===void 0)return{};if(!Ts(t))return e.issues.push({path:`helpers`,message:`helpers must be an object, got ${Es(t)}`,line:U(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 ${W(i)}`,line:U(e.source,[`helpers`,r])});continue}n[r]=i}return n}const ES=new Map,DS=new Map;function OS(e){let t=kS(e);if(t===null)throw Error(`Palette "${e}" (resolved "${ya(e)}") did not resolve in the theme registry — allowed names and the registry are inconsistent`);return t}function kS(e){let t=ya(e),n=ES.get(t);if(n!==void 0)return n;let r=ar(t);return r===null?null:(ES.set(t,r),r)}function AS(e,t){let n=`${e.name} ${t.hueShift} ${t.chromaScale} ${t.lightnessScale} ${t.lightnessShift}`,r=DS.get(n);if(r!==void 0)return r;let i=pr(e,t);return DS.set(n,i),i}function jS(e){let t=kS(e);return t===null?null:{kind:`decided`,name:e,value:t}}function MS(e,t){let n=jS(e);return n===null?(t(`globals.palette rendered "${ba}": "${e}" names no installed theme`),PS()):n}function NS(e,t,n){return Da(e,t,n,PS(),jS)}function PS(){return jS(ba)}function FS(e){return Oa(NS(void 0,null,e),()=>ba,PS).value}const IS=new Map;function LS(e,t,n){IS.set(e,{permanent:!0,resolve:t,paletteOf:n})}LS(`themes`,()=>Ca(),e=>OS(e)),LS(`styles`,()=>Na),LS(`progressions`,()=>Ga),LS(`charsets`,()=>Ia),LS(`colorCompatibilities`,()=>Ba);function RS(e){return new Map([[`looks`,{members:Object.keys(e.looks),paletteOf:(t,n)=>AS(n,e.looks[t])}],[`presets`,{members:bg(e.presets)}]])}function zS(e){return[...new Set([...IS.keys(),...e.keys()])]}function BS(e,t){if(typeof e!=`string`)return{members:e};let n=t.get(e);if(n)return n;let r=IS.get(e);if(r)return{members:r.resolve(),paletteOf:r.paletteOf};throw Error(`unknown option domain "${e}" (have: ${zS(t).join(`, `)})`)}function VS(e,t){let n=new Map;for(let e of Object.keys(t)){let t=wl(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:U(e.source,[`presets`])})}function HS(e,t,n){t.globals.look!==void 0&&!Ea(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:U(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:U(e.source,[`globals`,`preset`])}),VS(e,t.presets);let r=RS(t);for(let[n,i]of Object.entries(t.actions))!(`set`in i)||!(`from`in i)||typeof i.from!=`string`||zS(r).includes(i.from)||e.issues.push({path:`actions.${n}.from`,message:`actions.${n} from: references unknown option domain "${i.from}" (have: ${zS(r).join(`, `)})`,line:U(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&&Ax(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:U(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=ky(i);if(o===null){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" is not a config globals field (have: ${zc().join(`, `)}), a "segments.<name>.palette" target, a "presets.<name>.globals.<field>" target, or a "presets.<name>.root" target`,line:U(e.source,[`actions`,n,a])});continue}let s=US.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:U(e.source,[`actions`,n,a])});continue}if(o.scope===`preset-root`){WS(e,t,n,a,i,o.preset,r);continue}if(o.scope===`preset-globals`&&!bg(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: ${bg(t.presets).join(`, `)})`,line:U(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(`, `)})${Nl(o.segment)}`,line:U(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:U(e.source,[`actions`,n,a])})}}let i=d_(t);for(let t of i.names)t!==`settings`&&!t.startsWith(GS)||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:U(e.source,[`variables`,t])});let a=(t,n,r)=>{_x(t)>1&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${Sb}" ${_x(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}),vx(t)&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${Sb}" 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 is(t)){if(e.kind!==`segment`)continue;let t=es(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=ns(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||$o[e.direction]===`cell`))}let s=(n,r)=>{for(let[a,o]of nc(n,r)){let n=U(e.source,o.split(`.`));a.when!==void 0&&(ZS(e,`${o}.when`,a.when,i,{line:n}),XS(e,`${o}.when`,a.when,n)),a.kind===`segment`&&(mx(a.name)||(Object.prototype.hasOwnProperty.call(t.segments,a.name)||e.issues.push({path:o,message:`${r} entry "${a.name}" does not match any declared segment${Nl(a.name)}`,line:n}),qS(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`,ec(t.root)]]);for(let e of bg(t.presets)){let{node:n,path:r}=Cg(t,e);c.set(r,n)}for(let[t,n]of c)a(n,t,U(e.source,t.split(`.`)));for(let[n,r]of Object.entries(t.variables))JS(e,`variables.${n}`,r,i);for(let[n,r]of Object.entries(t.segments)){if(r.vars)for(let[t,a]of Object.entries(r.vars))JS(e,`segments.${n}.vars.${t}`,a,i,n);let a=KS(i,r.settings);for(let i of[`template`,`bg`,`fg`,`when`]){let o=r[i];if(typeof o==`string`){ZS(e,`segments.${n}.${i}`,o,a,{segCtx:n,settings:r.settings});for(let r of s_(o))Object.prototype.hasOwnProperty.call(t.actions,r)||e.issues.push({path:`segments.${n}.${i}`,message:`${i} references unknown action "${r}"`,line:U(e.source,[`segments`,n,i])});for(let r of l_(o))Object.prototype.hasOwnProperty.call(t.actions,r)||e.issues.push({path:`segments.${n}.${i}`,message:`${i} references unknown action "${r}" (in a picker, menu or carousel)`,line:U(e.source,[`segments`,n,i])})}}}for(let[n,r]of Object.entries(t.variables))YS(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))YS(e,`segments.${n}.vars.${t}`,a,i,n)}const US=[`removeSegment`,`insertSegment`,`insertSegmentFrom`];function WS(e,t,n,r,i,a,o){let s=`actions.${n}.${r}`,c=U(e.source,[`actions`,n,r]);if(!bg(t.presets).includes(a)){e.issues.push({path:s,message:`actions.${n}: "${i}" names preset "${a}" which is not declared (have: ${bg(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(`, `)})${Nl(i)}`,line:c})},p=new Set(ts(Cg(t,a).node)),m=(r,i)=>{!Ml.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${Nl(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 GS=`settings.`;function KS(e,t){let n=Object.keys(t??{});return n.length===0?e:{...e,names:new Set([...e.names,...n.map(e=>GS+e)])}}function qS(e,t,n,r,i){let a=Object.prototype.hasOwnProperty.call(t.segments,n.name)?t.segments[n.name]:void 0;if(a===void 0)return;let o=a.settings??{},s=`${r}: placement "${es(n)}" of segment "${n.name}"`;for(let[t,a]of Object.entries(n.settings??{})){let c=Object.prototype.hasOwnProperty.call(o,t)?o[t]:void 0,l=c===void 0?`sets "${t}", which segment "${n.name}" does not declare (${Object.keys(o).length===0?`it declares no settings`:`it declares: ${Object.keys(o).join(`, `)}`})`:ms(c,a)?void 0:`sets "${t}" to ${JSON.stringify(a)}, but it must be ${_s(c)}`;l!==void 0&&e.issues.push({path:r,message:`${s} ${l}`,line:i})}}function JS(e,t,n,r,i){n.kind===`template`&&ZS(e,`${t}.template`,n.template,r,{segCtx:i}),ds(n)&&n.cache&&`key`in n.cache&&ZS(e,`${t}.cache.key`,n.cache.key,r,{segCtx:i})}function YS(e,t,n,r,i){if(ds(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:U(e.source,[...t.split(`.`),`cache`,`depends_on`])})}}function XS(e,t,n,r){try{Lg.parse(n)}catch(n){e.issues.push({path:t,message:`Template parse error in ${t}: ${n.message}`,line:r})}}function ZS(e,t,n,r,i){for(let[a,o]of a_(n,r.helpers)){if(u_(a,r))continue;if(o!==null){QS(e,o,a);continue}if(i?.segCtx!==void 0&&a.startsWith(GS)){let n=Object.keys(i.settings??{});e.issues.push({path:t,message:`Template reads ".${a}", but segment "${i.segCtx}" declares no setting "${a.slice(9)}" (${n.length===0?`it declares no settings`:`it declares: ${n.join(`, `)}`}) — declare it under segments.${i.segCtx}.settings`,line:i.line??U(e.source,t.split(`.`))});continue}let n=i?.segCtx===void 0?void 0:`${i.segCtx}.${a}`,s=n!==void 0&&u_(n,r)?` (segment-local vars are namespaced — write ".${n}")`:``;e.issues.push({path:t,message:`Template references unknown variable ".${a}"${s}`,line:i?.line??U(e.source,t.split(`.`))})}}function QS(e,t,n){let r=`helpers.${t}`,i=`Template references unknown variable ".${n}"`;e.issues.some(e=>e.path===r&&e.message===i)||e.issues.push({path:r,message:i,line:U(e.source,[`helpers`,t])})}function $S(e,t){let{graph:n,nodeInfo:r}=eC(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:U(e.source,o?.linePathParts??[`variables`,i])}),!0}if(t===0&&o(s))return!0}return i.set(t,2),a.pop(),!1}}function eC(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 a_(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),ds(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 tC=[`json5`,`json`];function nC(e){try{return r.statSync(e,{throwIfNoEntry:!1})===void 0?`absent`:`present`}catch(t){return{path:e,error:t.message}}}function rC(e){return e===`~`||e.startsWith(`~/`)||e.startsWith(`~\\`)?f.homedir()+e.slice(1):e}function iC(e,t,n){if(n!==void 0)return[n];let r=t??process.cwd();return[...new Set([...e?tC.map(t=>c.join(e,`.cc-candybar.${t}`)):[],...tC.map(e=>c.join(r,`.cc-candybar.${e}`)),...tC.map(e=>`${aC()}.${e}`)])]}function aC(){let e=process.env.XDG_CONFIG_HOME??c.join(f.homedir(),`.config`);return c.join(e,`cc-candybar`,`config`)}function oC(e,t,n){let r=[];for(let i of iC(e,t,n)){let e=nC(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 sC(e,t,n){let r=oC(e,t,n);return r.kind===`default`?`${aC()}.${tC[0]}`:r.path}function cC(e){return lC(e).join(`
158
+ `)||null}function lC(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 uC(e,t){let n=iC(e,t).filter(e=>nC(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 dC(e,t,n){return e===null?{...pC,config:ac(pC.raw,t)}:fC(e,r.readFileSync(e,`utf-8`),t,n)}function fC(e,t,n,r){let i={source:t,...gC(e,t,r,Kl(n))};return{...i,config:ac(i.raw,n)}}const pC={raw:{},source:``,warnings:[]};function mC({config:e,raw:t,source:n},r=`<config>`,i=new Set(Ca())){let a=[],o={source:n,issues:a,allowedPalettes:i,groups:[]};if(HS(o,e,t),$S(o,e),a.length>0)throw new qo(r,a);let s=Ig(e,a);if(a.length>0)throw new qo(r,a);return ub(Dx(s))}function hC(e,t,n=new Set(Ca()),r=_C){return gC(e,t,n,r).raw}function gC(e,t,n,r){let i=vC(e,t),a=Xo(e,t),o=a===null?[]:[a],s=[],c={source:t,issues:s,allowedPalettes:n??new Set(Ca()),groups:[]};if(!Ts(i))throw new qo(e,[{path:``,message:`Config root must be an object, got ${Es(i)}`}],o);let l=yC(c,i,r);if(s.length>0)throw new qo(e,s,o);return{raw:l,warnings:o}}const _C=new Set;function vC(e,t){try{return Ze.default.parse(t)}catch(t){let n=t;throw new qo(e,[{path:``,message:`JSON5 syntax error: ${n.message}`,line:n.lineNumber,col:n.columnNumber}])}}function yC(e,t,n){for(let n of Object.keys(t))bC.has(n)||e.issues.push({path:n,message:`Unknown top-level key "${n}". Expected one of: ${[...bC].join(`, `)}`,line:U(e.source,[n])});let r={};return t.globals!==void 0&&(r.globals=Nc(e,`globals`,t.globals)),t.variables!==void 0&&(r.variables=$c(e,`variables`,t.variables)),t.segments!==void 0&&(r.segments=ql(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:U(e.source,[`layout`])}),t.root!==void 0&&(r.root=fu(e,`root`,t.root)),t.actions!==void 0&&(r.actions=yx(e,t.actions)),t.looks!==void 0&&(r.looks=sS(e,t.looks)),t.presets!==void 0&&(r.presets=lS(e,t.presets)),t.editGlobals!==void 0&&(r.editGlobals=Mc(e,`editGlobals`,t.editGlobals)),t.helpers!==void 0&&(r.helpers=uS(e,t.helpers)),bu(e,r),Ag(e,r),Vg(e,r),Dl(e,r,K,`the global settings menu`),r}const aC=new Set([`globals`,`variables`,`segments`,`layout`,`root`,`actions`,`looks`,`presets`,`editGlobals`,`helpers`]);function oC(e){let t=uC(e.termCols),n=uC(e.termRows),r=dC(e.ssh),i=cC(e.tmux),a=sC(e.configEnv);return{...t!==void 0&&{termCols:t},...n!==void 0&&{termRows:n},...r!==void 0&&{ssh:r},...i!==void 0&&{tmux:i},...a!==void 0&&{configEnv:a}}}function sC(e){return typeof e==`string`&&e!==``?HS(e):void 0}function cC(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 lC=1e4;function uC(e){if(typeof e!=`number`||!Number.isFinite(e))return;let t=Math.floor(e);if(!(t<=0))return t>lC?lC:t}function dC(e){return typeof e==`boolean`?e:void 0}var fC=class extends Error{constructor(e){super(e),this.name=`ProtocolError`}};function pC(e){let t=Buffer.from(JSON.stringify(e),`utf8`),n=Buffer.alloc(4);return n.writeUInt32BE(t.length,0),Buffer.concat([n,t])}function mC(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 fC(`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 fC(e instanceof Error?e.message:String(e));e instanceof Error&&(n.cause=e),t(n);return}}}}function hC(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=mC(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(pC(t))})}async function gC(e,t,n){let r=null;try{r=await xC(Pe(),t.connectMs);let i=await hC(r,{v:3,...e},t.budgetMs);return yC(e.kind,i,n)}catch(e){return bC(e)}finally{r&&r.destroy()}}function _C(e,t){return typeof e==`string`?e:t}function vC(e){return typeof e==`number`&&Number.isInteger(e)&&e>=0?e:0}function yC(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=_C(r.error,`(no error message)`);switch(r.code){case`VERSION_MISMATCH`:return{kind:`permanent`,cause:`version_mismatch`,clientV:3,daemonV:vC(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 bC(e){if(e instanceof fC||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 xC(e,t){return new Promise((n,r)=>{let i=g.createConnection({path:e}),a=setTimeout(()=>{i.destroy(),r(Error(`CONNECT_TIMEOUT`))},t);i.once(`connect`,()=>{clearTimeout(a),n(i)}),i.once(`error`,e=>{clearTimeout(a),r(e)})})}function SC(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 CC={connectMs:50,budgetMs:150},wC={connectMs:50,budgetMs:200};function TC(e){let t=e.output;return typeof t==`string`?t:void 0}function EC(e,t,n,r){return gC({kind:`render`,hookData:e,args:t,cwd:n,...r},CC,TC)}function DC(e,t){return gC({kind:`click`,verb:e,value:t},wC,TC)}let OC=null;function kC(e){if(OC!==null)return OC;r.mkdirSync(c.dirname(e),{recursive:!0});try{OC=r.statSync(e).size}catch{OC=0}return OC}function AC(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{}OC=0}function Q(e,t){let n=`${new Date().toISOString()} [${e}] ${t}\n`;try{let e=Ke(),t=kC(e);r.appendFileSync(e,n),OC=t+Buffer.byteLength(n,`utf8`),OC>=5242880&&AC(e)}catch(e){OC=null;try{process.stderr.write(`${n}cc-candybar: daemon.log unwritable: ${e.message}\n`)}catch{}}}function jC(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 MC(e,t){return e===`darwin`?[NC(`footprint`,[`-p`,String(t)]),NC(`vmmap`,[`--summary`,String(t)])]:e===`linux`?[PC(`/proc/self/smaps_rollup`),PC(`/proc/self/status`)]:[]}function NC(e,t){return{name:`${e} ${t.join(` `)}`,read:()=>{let n=De({bin:e,args:[...t],timeoutMs:5e3,category:`limits.memory-report`});return n.ok?n.stdout.trim().length>0?{kind:`text`,text:n.stdout}:{kind:`unavailable`,reason:`exited 0 but printed nothing`}:{kind:`unavailable`,reason:`${n.reason}${n.error===void 0?``:`: ${n.error}`}${FC(n.stderr)}`}}}}function PC(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 FC(e){let t=e.split(`
163
- `).map(e=>e.trim()).find(e=>e.length>0);return t===void 0?``:` (${t})`}const IC=`CC_CANDYBAR_RSS_LIMIT_MB`;function LC(e){let t=e[IC];if(t===void 0)return 512;let n=/^\d+$/.test(t)?Number(t):NaN;if(!Number.isSafeInteger(n)||n<=0)throw Error(`${IC} must be a positive integer (MB), got ${JSON.stringify(t)}`);return n}function RC(e){return LC(e)*2}const zC=1024*1024;function BC(e){return LC(e)*zC}const VC={memoryReport:{prefix:`memory-`,suffix:`.txt`},heapSnapshot:{prefix:`heap-`,suffix:`.heapsnapshot`}};function HC(e,t,n){let{prefix:r,suffix:i}=VC[t];return c.join(e,`${r}${n}${i}`)}function UC(e){for(let t of Object.keys(VC)){let{prefix:n,suffix:r}=VC[t];if(e.startsWith(n)&&e.endsWith(r))return t}return null}function WC(e){let t=e.rssLimitBytes??512*zC,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 GC(e.log,`memory report`,()=>{let t=HC(e.snapshotDir,`memoryReport`,o);e.writeMemoryReport(t,e.captureMemoryReport()),e.log(`info`,`memory report written: ${t}`)}),GC(e.log,`heap snapshot`,()=>{let t=HC(e.snapshotDir,`heapSnapshot`,o);e.log(`info`,`heap snapshot written: ${e.writeHeapSnapshot(t)}`)}),GC(e.log,`artifact rotation`,()=>{qC(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 GC(e,t,n){try{n()}catch(n){e(`warn`,`${t} failed: ${n.message}`)}}function KC(e){let t=e.slice(e.lastIndexOf(`/`)+1),n=UC(t);if(n===null)return t;let{prefix:r,suffix:i}=VC[n];return t.slice(r.length,t.length-i.length)}function qC(e,t,n){let r=new Map;for(let t of e){let e=KC(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 JC(e,t,n={}){let i=Ne();return{now:()=>Date.now(),pid:process.pid,snapshotDir:i,log:Q,memoryBytes:()=>{let e=process.memoryUsage();return{rss:e.rss,heapTotal:e.heapTotal}},captureMemoryReport:()=>jC(MC(process.platform,process.pid)),writeMemoryReport:(e,t)=>r.writeFileSync(e,t,{mode:384}),writeHeapSnapshot:e=>C.writeHeapSnapshot(e),listArtifacts:()=>{try{return r.readdirSync(i).filter(e=>UC(e)!==null).map(e=>c.join(i,e))}catch{return[]}},removeFile:e=>r.unlinkSync(e),shutdown:t,startedAtMs:e,...n}}function YC(e={}){if(dw()!==null)return;let n=e.spawn??fw,r=cw();if(r.kind===`contended`){let e=ZC();e!==null&&e>2e3&&(t.stderr.write(`cc-candybar: spawn-lock held ${e}ms (likely crashed holder) — spawning unlocked\n`),XC(n));return}if(r.kind===`error`){t.stderr.write(`cc-candybar: spawn-lock unavailable (${r.reason}) — spawning unlocked\n`),XC(n);return}try{XC(n)}finally{uw()}}function XC(e){iw()&&QC(e)}function ZC(){try{let e=r.statSync(He());return Date.now()-e.mtimeMs}catch{return null}}function QC(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 $C(e,t){return e===null?{kind:`allow`}:e<-1e4?{kind:`allow-future-garbage`,futureMs:-e}:e<t?{kind:`deny`}:{kind:`allow`}}function ew(e){return Math.min(3e3*2**Math.min(Math.max(e,0),5),6e4)}function tw(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 nw(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 rw(){try{r.unlinkSync(We())}catch(e){e.code!==`ENOENT`&&t.stderr.write(`cc-candybar: could not reset spawn.backoff: ${e.message}\n`)}}function iw(){let e=Ue(),n=We(),r=tw(n),i=$C(aw(e),ew(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`),ow(e),nw(n,Math.min(r+1,5)),!0)}function aw(e){try{return Date.now()-r.statSync(e).mtimeMs}catch{return null}}function ow(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 sw=null;function cw(){let e=He();for(let n=0;n<2;n++){try{let n=r.openSync(e,`wx`,384);try{r.writeSync(n,JSON.stringify({pid:t.pid,ts:Date.now()}))}catch{}return sw={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(!lw(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 lw(e){try{let t=r.statSync(e);return Date.now()-t.mtimeMs>1e4}catch{return!0}}function uw(){if(!sw)return;let{fd:e,path:t}=sw;sw=null;try{r.closeSync(e)}catch{}try{r.unlinkSync(t)}catch{}}function dw(){try{return r.mkdirSync(Ne(),{recursive:!0}),null}catch(e){return`mkdir ${Ne()}: ${e.message}`}}function fw(){let e=t.execPath,n=t.argv[1];return n?Oe({bin:e,args:[`--max-old-space-size=${RC(t.env)}`,n,`daemon`],category:`daemon-spawn`}).ok:!1}const pw=`cc-candybar`,mw=`dispatch`,hw=`set-state`,gw=`step-state`,_w=`copy`,vw=`open-vscode`,yw=`toolbar-toggle`,bw=`show-config-error`,xw=`show-config-warning`,Sw=`set-config`,Cw=`step-config`,ww=`save`,Tw=`save-preset`,Ew=`delete-preset`,Dw=`reset-config`,Ow=`apply-layout-op`,kw=`undo`,Aw=`redo`,jw=`apply-update`,Mw=`doctor-run`,Nw=`doctor-fix`,Pw=`ceiling`;function Fw(e){return e.map(encodeURIComponent).join(`/`)}function Iw(e){return e.length===0?[]:e.split(`/`).map(decodeURIComponent)}function Lw(e){return`${pw}://${mw}/${e.map(e=>`e=${encodeURIComponent(`${e.verb}/${Fw(e.args)}`)}`).join(`&`)}`}function Rw(e){return new te(e).getAll(`e`).map(Hw)}const zw=new Set([hw,Dw]);function Bw(e){return e.reduce((e,t)=>{let n=e.at(-1),r=n&&Vw(n,t);return r?[...e.slice(0,-1),r]:[...e,t]},[])}function Vw(e,t){if(e.verb!==t.verb||!zw.has(e.verb))return;let[n,r]=[Hw(e.value),Hw(t.value)];return n.verb===r.verb?{verb:e.verb,value:`${n.verb}/${n.value}/${r.value}`}:void 0}function Hw(e){let t=e.indexOf(`/`);return t===-1?{verb:e,value:``}:{verb:e.slice(0,t),value:e.slice(t+1)}}const Uw=`1.90.0`;function Ww(){return c.join(f.homedir(),`.claude`,`settings.json`)}function Gw(){let e=process.env.CLAUDE_CONFIG_DIR?.split(`,`)[0]?.trim();return c.join(e||c.join(f.homedir(),`.claude`),`plugins`,`installed_plugins.json`)}const Kw=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/;function qw(e){let t=Kw.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 Jw(e){return e.join(`.`)}function Yw([e,t,n],[r,i,a]){return e-r||t-i||n-a}const Xw=`@promptctl/cc-candybar`;async function Zw(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`?qw(n.latest):Y}catch(e){return X(e instanceof Error?e.message:String(e))}}function Qw(e,t){let n=qw(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=Yw(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 $w(e,t){switch(t.kind){case`current`:return{stream:`stdout`,text:`✓ cc-candybar ${Jw(t.installed)} is the latest release.\n`};case`ahead`:return{stream:`stdout`,text:`cc-candybar ${Jw(t.installed)} is newer than the registry's latest release (${Jw(t.latest)}): an unpublished build.\n`};case`stale`:{let n=Jw(t.latest);return{stream:`stderr`,text:`⚠ cc-candybar ${Jw(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 eT=`CCCandybarURLHandler`,tT=[],nT={"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 rT(e){return/^[A-Za-z0-9_./=,:-]+$/.test(e)?e:`'${e.replace(/'/g,`'\\''`)}'`}function iT(e,t){return[e,...t].map(rT).join(` `)}function aT(){return c.join(f.homedir(),`Applications`,`${eT}.app`)}function oT(){if(process.platform!==`darwin`)throw Error(`URL handler installation requires macOS (found platform: ${process.platform}).`)}function sT(){if(process.platform===`darwin`)return c.join(f.homedir(),`Library`,`Application Support`,`CCCandybar`);let e=process.env.XDG_DATA_HOME??c.join(f.homedir(),`.local`,`share`);return c.join(e,`cc-candybar`)}function cT(){return c.join(sT(),`bin`,`cc-candybar`)}function lT(){return c.join(sT(),`dist`,`index.mjs`)}function uT(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 dT(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 fT(t){let n=nT[`${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 pT(e,t){c.resolve(e)!==c.resolve(t)&&r.copyFileSync(e,t)}function mT(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 ${Xw}@latest install`);return n.toString(`latin1`)===`#!`?`node-shim`:`native`}finally{r.closeSync(t)}}function hT(){let e=dT(process.argv[1]);if(!r.existsSync(e))throw Error(`install: bundled dist not found at ${e}. Reinstall the package.`);let t=fT(e);if(!r.existsSync(t.sourcePath))throw Error(`install: render entry not found at ${t.sourcePath}. Reinstall the package.`);r.mkdirSync(c.dirname(lT()),{recursive:!0}),r.mkdirSync(c.dirname(cT()),{recursive:!0}),pT(e,lT()),pT(t.sourcePath,cT()),r.chmodSync(cT(),493),r.rmSync(c.join(sT(),`url-handler.mjs`),{force:!0});let n=mT(cT());return process.stdout.write(`Staged cc-candybar v${Uw} runtime at ${sT()}\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:cT(),distPath:lT(),entryKind:n}}function gT(){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>${pw}</string>`,` </array>`,` </dict>`,`</array>`].join(`
166
- `)}]}function _T(e){let t=aT();r.mkdirSync(c.dirname(t),{recursive:!0}),r.existsSync(t)&&r.rmSync(t,{recursive:!0,force:!0}),process.stdout.write(`Building ${t}\n`);let n=De({bin:`/usr/bin/osacompile`,args:[`-o`,t,`-e`,uT(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 gT())De({bin:`/usr/bin/plutil`,args:[`-remove`,e,i],category:`install.plutil`});for(let{key:e,xml:t}of gT()){let n=De({bin:`/usr/bin/plutil`,args:[`-insert`,e,`-xml`,t,i],category:`install.plutil`});if(!n.ok)throw process.stderr.write(n.stderr),Error(`plutil -insert ${e} failed (${n.reason})`)}process.stdout.write(`Registering ${pw}:// with Launch Services\n`);let a=De({bin:`/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister`,args:[`-f`,t],category:`install.lsregister`});if(!a.ok)throw process.stderr.write(a.stderr),Error(`lsregister failed (${a.reason})`);process.stdout.write(`✓ ${eT}.app installed and registered.\n`),process.stdout.write(` Test: open '${pw}://hello-world' && pbpaste\n`)}function vT(){oT(),_T(hT().distPath)}function yT(e,t=pw){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:_w,value:r}:{verb:decodeURIComponent(r.slice(0,i)),value:r.slice(i+1)}}async function bT(e){e||(process.stderr.write(`url-handle: missing URL argument.
167
- `),process.exit(1));let t;try{t=yT(e)}catch(e){process.stderr.write(`url-handle: ${e instanceof Error?e.message:String(e)}\n`),process.exit(1)}let n=await DC(t.verb,t.value);n.kind===`ok`&&process.exit(0),n.kind===`transient`&&(YC(),process.stderr.write(`url-handle: daemon unavailable (${n.cause}: ${n.message})\n`),process.exit(1)),process.stderr.write(xT(n)+`
168
- `),process.exit(1)}function xT(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 ST(){return`✓ install complete.
161
+ Single-row example: root: { h: ["seg1", "seg2"] }`,line:U(e.source,[`layout`])}),t.root!==void 0&&(r.root=gu(e,`root`,t.root)),t.actions!==void 0&&(r.actions=Nx(e,t.actions)),t.looks!==void 0&&(r.looks=SS(e,t.looks)),t.presets!==void 0&&(r.presets=wS(e,t.presets)),t.editGlobals!==void 0&&(r.editGlobals=Ic(e,`editGlobals`,t.editGlobals)),t.helpers!==void 0&&(r.helpers=TS(e,t.helpers)),wu(e,r),Pg(e,r),qg(e,r),jl(e,r,K,`the global settings menu`),r}const bC=new Set([`globals`,`variables`,`segments`,`layout`,`root`,`actions`,`looks`,`presets`,`editGlobals`,`helpers`]);function xC(e){let t=TC(e.termCols),n=TC(e.termRows),r=EC(e.ssh),i=CC(e.tmux),a=SC(e.configEnv);return{...t!==void 0&&{termCols:t},...n!==void 0&&{termRows:n},...r!==void 0&&{ssh:r},...i!==void 0&&{tmux:i},...a!==void 0&&{configEnv:a}}}function SC(e){return typeof e==`string`&&e!==``?rC(e):void 0}function CC(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 wC=1e4;function TC(e){if(typeof e!=`number`||!Number.isFinite(e))return;let t=Math.floor(e);if(!(t<=0))return t>wC?wC:t}function EC(e){return typeof e==`boolean`?e:void 0}var DC=class extends Error{constructor(e){super(e),this.name=`ProtocolError`}};function OC(e){let t=Buffer.from(JSON.stringify(e),`utf8`),n=Buffer.alloc(4);return n.writeUInt32BE(t.length,0),Buffer.concat([n,t])}function kC(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 DC(`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 DC(e instanceof Error?e.message:String(e));e instanceof Error&&(n.cause=e),t(n);return}}}}function AC(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=kC(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(OC(t))})}async function jC(e,t,n){let r=null;try{r=await IC(Pe(),t.connectMs);let i=await AC(r,{v:3,...e},t.budgetMs);return PC(e.kind,i,n)}catch(e){return FC(e)}finally{r&&r.destroy()}}function MC(e,t){return typeof e==`string`?e:t}function NC(e){return typeof e==`number`&&Number.isInteger(e)&&e>=0?e:0}function PC(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=MC(r.error,`(no error message)`);switch(r.code){case`VERSION_MISMATCH`:return{kind:`permanent`,cause:`version_mismatch`,clientV:3,daemonV:NC(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 FC(e){if(e instanceof DC||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 IC(e,t){return new Promise((n,r)=>{let i=g.createConnection({path:e}),a=setTimeout(()=>{i.destroy(),r(Error(`CONNECT_TIMEOUT`))},t);i.once(`connect`,()=>{clearTimeout(a),n(i)}),i.once(`error`,e=>{clearTimeout(a),r(e)})})}function LC(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 RC={connectMs:50,budgetMs:150},zC={connectMs:50,budgetMs:200};function BC(e){let t=e.output;return typeof t==`string`?t:void 0}function VC(e,t,n,r){return jC({kind:`render`,hookData:e,args:t,cwd:n,...r},RC,BC)}function HC(e,t){return jC({kind:`click`,verb:e,value:t},zC,BC)}let UC=null;function WC(e){if(UC!==null)return UC;r.mkdirSync(c.dirname(e),{recursive:!0});try{UC=r.statSync(e).size}catch{UC=0}return UC}function GC(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{}UC=0}function Q(e,t){let n=`${new Date().toISOString()} [${e}] ${t}\n`;try{let e=Ke(),t=WC(e);r.appendFileSync(e,n),UC=t+Buffer.byteLength(n,`utf8`),UC>=5242880&&GC(e)}catch(e){UC=null;try{process.stderr.write(`${n}cc-candybar: daemon.log unwritable: ${e.message}\n`)}catch{}}}function KC(e){let t=[];for(let n of e){let e=n.read();if(e.kind===`text`)return`# memory report from: ${n.name}\n${e.text}`;t.push(`# ${n.name}: unavailable — ${e.reason}`)}return[`# memory report: no probe answered`,...t.length>0?t:[`# no probe is known for this platform`]].join(`
162
+ `)}function qC(e,t){return e===`darwin`?[JC(`footprint`,[`-p`,String(t)]),JC(`vmmap`,[`--summary`,String(t)])]:e===`linux`?[YC(`/proc/self/smaps_rollup`),YC(`/proc/self/status`)]:[]}function JC(e,t){return{name:`${e} ${t.join(` `)}`,read:()=>{let n=De({bin:e,args:[...t],timeoutMs:5e3,category:`limits.memory-report`});return n.ok?n.stdout.trim().length>0?{kind:`text`,text:n.stdout}:{kind:`unavailable`,reason:`exited 0 but printed nothing`}:{kind:`unavailable`,reason:`${n.reason}${n.error===void 0?``:`: ${n.error}`}${XC(n.stderr)}`}}}}function YC(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 XC(e){let t=e.split(`
163
+ `).map(e=>e.trim()).find(e=>e.length>0);return t===void 0?``:` (${t})`}const ZC=`CC_CANDYBAR_RSS_LIMIT_MB`;function QC(e){let t=e[ZC];if(t===void 0)return 512;let n=/^\d+$/.test(t)?Number(t):NaN;if(!Number.isSafeInteger(n)||n<=0)throw Error(`${ZC} must be a positive integer (MB), got ${JSON.stringify(t)}`);return n}function $C(e){return QC(e)*2}const ew=1024*1024;function tw(e){return QC(e)*ew}const nw={memoryReport:{prefix:`memory-`,suffix:`.txt`},heapSnapshot:{prefix:`heap-`,suffix:`.heapsnapshot`}};function rw(e,t,n){let{prefix:r,suffix:i}=nw[t];return c.join(e,`${r}${n}${i}`)}function iw(e){for(let t of Object.keys(nw)){let{prefix:n,suffix:r}=nw[t];if(e.startsWith(n)&&e.endsWith(r))return t}return null}function aw(e){let t=e.rssLimitBytes??512*ew,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 ow(e.log,`memory report`,()=>{let t=rw(e.snapshotDir,`memoryReport`,o);e.writeMemoryReport(t,e.captureMemoryReport()),e.log(`info`,`memory report written: ${t}`)}),ow(e.log,`heap snapshot`,()=>{let t=rw(e.snapshotDir,`heapSnapshot`,o);e.log(`info`,`heap snapshot written: ${e.writeHeapSnapshot(t)}`)}),ow(e.log,`artifact rotation`,()=>{cw(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 ow(e,t,n){try{n()}catch(n){e(`warn`,`${t} failed: ${n.message}`)}}function sw(e){let t=e.slice(e.lastIndexOf(`/`)+1),n=iw(t);if(n===null)return t;let{prefix:r,suffix:i}=nw[n];return t.slice(r.length,t.length-i.length)}function cw(e,t,n){let r=new Map;for(let t of e){let e=sw(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 lw(e,t,n={}){let i=Ne();return{now:()=>Date.now(),pid:process.pid,snapshotDir:i,log:Q,memoryBytes:()=>{let e=process.memoryUsage();return{rss:e.rss,heapTotal:e.heapTotal}},captureMemoryReport:()=>KC(qC(process.platform,process.pid)),writeMemoryReport:(e,t)=>r.writeFileSync(e,t,{mode:384}),writeHeapSnapshot:e=>C.writeHeapSnapshot(e),listArtifacts:()=>{try{return r.readdirSync(i).filter(e=>iw(e)!==null).map(e=>c.join(i,e))}catch{return[]}},removeFile:e=>r.unlinkSync(e),shutdown:t,startedAtMs:e,...n}}function uw(e={}){if(Ew()!==null)return;let n=e.spawn??Dw,r=Cw();if(r.kind===`contended`){let e=fw();e!==null&&e>2e3&&(t.stderr.write(`cc-candybar: spawn-lock held ${e}ms (likely crashed holder) — spawning unlocked\n`),dw(n));return}if(r.kind===`error`){t.stderr.write(`cc-candybar: spawn-lock unavailable (${r.reason}) — spawning unlocked\n`),dw(n);return}try{dw(n)}finally{Tw()}}function dw(e){yw()&&pw(e)}function fw(){try{let e=r.statSync(He());return Date.now()-e.mtimeMs}catch{return null}}function pw(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 mw(e,t){return e===null?{kind:`allow`}:e<-1e4?{kind:`allow-future-garbage`,futureMs:-e}:e<t?{kind:`deny`}:{kind:`allow`}}function hw(e){return Math.min(3e3*2**Math.min(Math.max(e,0),5),6e4)}function gw(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 _w(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 vw(){try{r.unlinkSync(We())}catch(e){e.code!==`ENOENT`&&t.stderr.write(`cc-candybar: could not reset spawn.backoff: ${e.message}\n`)}}function yw(){let e=Ue(),n=We(),r=gw(n),i=mw(bw(e),hw(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`),xw(e),_w(n,Math.min(r+1,5)),!0)}function bw(e){try{return Date.now()-r.statSync(e).mtimeMs}catch{return null}}function xw(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 Sw=null;function Cw(){let e=He();for(let n=0;n<2;n++){try{let n=r.openSync(e,`wx`,384);try{r.writeSync(n,JSON.stringify({pid:t.pid,ts:Date.now()}))}catch{}return Sw={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(!ww(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 ww(e){try{let t=r.statSync(e);return Date.now()-t.mtimeMs>1e4}catch{return!0}}function Tw(){if(!Sw)return;let{fd:e,path:t}=Sw;Sw=null;try{r.closeSync(e)}catch{}try{r.unlinkSync(t)}catch{}}function Ew(){try{return r.mkdirSync(Ne(),{recursive:!0}),null}catch(e){return`mkdir ${Ne()}: ${e.message}`}}function Dw(){let e=t.execPath,n=t.argv[1];return n?Oe({bin:e,args:[`--max-old-space-size=${$C(t.env)}`,n,`daemon`],category:`daemon-spawn`}).ok:!1}const Ow=`cc-candybar`,kw=`dispatch`,Aw=`set-state`,jw=`step-state`,Mw=`copy`,Nw=`open-vscode`,Pw=`toolbar-toggle`,Fw=`show-config-error`,Iw=`show-config-warning`,Lw=`set-config`,Rw=`step-config`,zw=`save`,Bw=`save-preset`,Vw=`delete-preset`,Hw=`reset-config`,Uw=`apply-layout-op`,Ww=`undo`,Gw=`redo`,Kw=`apply-update`,qw=`doctor-run`,Jw=`doctor-fix`,Yw=`ceiling`,Xw=`slash`;function Zw(e){return e.map(encodeURIComponent).join(`/`)}function Qw(e){return e.length===0?[]:e.split(`/`).map(decodeURIComponent)}function $w(e){return`${Ow}://${kw}/${e.map(e=>`e=${encodeURIComponent(`${e.verb}/${Zw(e.args)}`)}`).join(`&`)}`}function eT(e){return new te(e).getAll(`e`).map(iT)}const tT=new Set([Aw,Hw]);function nT(e){return e.reduce((e,t)=>{let n=e.at(-1),r=n&&rT(n,t);return r?[...e.slice(0,-1),r]:[...e,t]},[])}function rT(e,t){if(e.verb!==t.verb||!tT.has(e.verb))return;let[n,r]=[iT(e.value),iT(t.value)];return n.verb===r.verb?{verb:e.verb,value:`${n.verb}/${n.value}/${r.value}`}:void 0}function iT(e){let t=e.indexOf(`/`);return t===-1?{verb:e,value:``}:{verb:e.slice(0,t),value:e.slice(t+1)}}const aT=`1.91.0`;function oT(){return c.join(f.homedir(),`.claude`,`settings.json`)}function sT(){let e=process.env.CLAUDE_CONFIG_DIR?.split(`,`)[0]?.trim();return c.join(e||c.join(f.homedir(),`.claude`),`plugins`,`installed_plugins.json`)}const cT=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/;function lT(e){let t=cT.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 uT(e){return e.join(`.`)}function dT([e,t,n],[r,i,a]){return e-r||t-i||n-a}const fT=`@promptctl/cc-candybar`;async function pT(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`?lT(n.latest):Y}catch(e){return X(e instanceof Error?e.message:String(e))}}function mT(e,t){let n=lT(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=dT(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 hT(e,t){switch(t.kind){case`current`:return{stream:`stdout`,text:`✓ cc-candybar ${uT(t.installed)} is the latest release.\n`};case`ahead`:return{stream:`stdout`,text:`cc-candybar ${uT(t.installed)} is newer than the registry's latest release (${uT(t.latest)}): an unpublished build.\n`};case`stale`:{let n=uT(t.latest);return{stream:`stderr`,text:`⚠ cc-candybar ${uT(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 gT=`CCCandybarURLHandler`,_T=[],vT={"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 yT(e){return/^[A-Za-z0-9_./=,:-]+$/.test(e)?e:`'${e.replace(/'/g,`'\\''`)}'`}function bT(e,t){return[e,...t].map(yT).join(` `)}function xT(){return c.join(f.homedir(),`Applications`,`${gT}.app`)}function ST(){if(process.platform!==`darwin`)throw Error(`URL handler installation requires macOS (found platform: ${process.platform}).`)}function CT(){if(process.platform===`darwin`)return c.join(f.homedir(),`Library`,`Application Support`,`CCCandybar`);let e=process.env.XDG_DATA_HOME??c.join(f.homedir(),`.local`,`share`);return c.join(e,`cc-candybar`)}function wT(){return c.join(CT(),`bin`,`cc-candybar`)}function TT(){return c.join(CT(),`dist`,`index.mjs`)}function ET(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 DT(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 OT(t){let n=vT[`${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 kT(e,t){c.resolve(e)!==c.resolve(t)&&r.copyFileSync(e,t)}function AT(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 ${fT}@latest install`);return n.toString(`latin1`)===`#!`?`node-shim`:`native`}finally{r.closeSync(t)}}function jT(){let e=DT(process.argv[1]);if(!r.existsSync(e))throw Error(`install: bundled dist not found at ${e}. Reinstall the package.`);let t=OT(e);if(!r.existsSync(t.sourcePath))throw Error(`install: render entry not found at ${t.sourcePath}. Reinstall the package.`);r.mkdirSync(c.dirname(TT()),{recursive:!0}),r.mkdirSync(c.dirname(wT()),{recursive:!0}),kT(e,TT()),kT(t.sourcePath,wT()),r.chmodSync(wT(),493),r.rmSync(c.join(CT(),`url-handler.mjs`),{force:!0});let n=AT(wT());return process.stdout.write(`Staged cc-candybar v${aT} runtime at ${CT()}\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:wT(),distPath:TT(),entryKind:n}}function MT(){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>${Ow}</string>`,` </array>`,` </dict>`,`</array>`].join(`
166
+ `)}]}function NT(e){let t=xT();r.mkdirSync(c.dirname(t),{recursive:!0}),r.existsSync(t)&&r.rmSync(t,{recursive:!0,force:!0}),process.stdout.write(`Building ${t}\n`);let n=De({bin:`/usr/bin/osacompile`,args:[`-o`,t,`-e`,ET(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 MT())De({bin:`/usr/bin/plutil`,args:[`-remove`,e,i],category:`install.plutil`});for(let{key:e,xml:t}of MT()){let n=De({bin:`/usr/bin/plutil`,args:[`-insert`,e,`-xml`,t,i],category:`install.plutil`});if(!n.ok)throw process.stderr.write(n.stderr),Error(`plutil -insert ${e} failed (${n.reason})`)}process.stdout.write(`Registering ${Ow}:// with Launch Services\n`);let a=De({bin:`/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister`,args:[`-f`,t],category:`install.lsregister`});if(!a.ok)throw process.stderr.write(a.stderr),Error(`lsregister failed (${a.reason})`);process.stdout.write(`✓ ${gT}.app installed and registered.\n`),process.stdout.write(` Test: open '${Ow}://hello-world' && pbpaste\n`)}function PT(){ST(),NT(jT().distPath)}function FT(e,t=Ow){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:Mw,value:r}:{verb:decodeURIComponent(r.slice(0,i)),value:r.slice(i+1)}}async function IT(e){e||(process.stderr.write(`url-handle: missing URL argument.
167
+ `),process.exit(1));let t;try{t=FT(e)}catch(e){process.stderr.write(`url-handle: ${e instanceof Error?e.message:String(e)}\n`),process.exit(1)}let n=await HC(t.verb,t.value);n.kind===`ok`&&process.exit(0),n.kind===`transient`&&(uw(),process.stderr.write(`url-handle: daemon unavailable (${n.cause}: ${n.message})\n`),process.exit(1)),process.stderr.write(LT(n)+`
168
+ `),process.exit(1)}function LT(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 RT(){return`✓ install complete.
169
169
  Restart Claude Code to pick up the new statusline.
170
- Tip: every bar carries a settings menu — click it (${ac} by\n default) for quick actions, preset switching, edit mode, and clickable\n theme/look/style/wrap/padding controls.\n`}async function CT(e){let t=e.includes(`--force`),n=e.filter(e=>e!==`--force`),r=n.length>0?n:[...tT],i=hT();process.platform===`darwin`?_T(i.distPath):process.stdout.write(`Skipping URL handler (cmd-click verbs are macOS-only).
171
- `),wT(i.binPath,r,t),process.stdout.write(ST());let a=$w(Xw,Qw(Uw,await Zw(Xw,fetch,`https://registry.npmjs.org`)));process[a.stream].write(a.text)}function wT(e,t,n,i){let a=i??Ww();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,rT(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:iT(e,t)},Ae(a,JSON.stringify(o,null,2)),process.stdout.write(`Updated ${a}\n`)}function TT(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 ET(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 DT(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 OT(e,t){let n=ET(e);if(n.kind===`owned`&&n.pid===t)try{r.unlinkSync(e)}catch{}}function kT(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 AT(e,t,n,r){let i=jT(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 jT(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 MT(e){let t=!1;function n(){let n=AT(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 NT(e,t=De){let n=t({bin:`ps`,args:[`-o`,`lstart=`,`-p`,String(e)],category:`process-fingerprint`,timeoutMs:2e3,env:{...process.env,LC_ALL:`C`,TZ:`UTC`}});if(n.ok){let e=n.stdout.trim();return e.length>0?{kind:`start`,token:e}:{kind:`unavailable`,detail:`ps produced no start-time`}}return{kind:`unavailable`,detail:n.reason===`spawn-error`?n.error??`ps spawn failed`:`ps ${n.reason} (exit ${n.exitCode})`}}function PT(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 FT(e,t=NT){let n=t(e);return n.kind===`start`?n.token:null}const IT=`CC_CANDYBAR_PARENT_PID`;function LT(e){let t=e[IT];if(t===void 0)return{kind:`outlives-nobody`};let n=Number.parseInt(t,10);if(!Number.isInteger(n)||n<=0)throw Error(`${IT} must be a positive integer pid, got ${JSON.stringify(t)}`);return{kind:`anchored`,pid:n}}function RT(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 zT(e){try{return t.kill(e,0),!0}catch(e){return e.code===`EPERM`}}function BT(){let e=Number(process.env.CC_CANDYBAR_DAEMON_CEILING??``);return Number.isInteger(e)&&e>0?e:16}function VT(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 HT(e){try{return r.readdirSync(e).filter(e=>e.endsWith(`.json`)).map(t=>c.join(e,t))}catch{return[]}}function UT(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 WT(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 GT(e){if(!e.isolated)return{decision:VT(!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=VT(!0,WT(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 KT(e,t,n,r){let i=n(e);if(i!==null&&i.pid===t)try{r(e)}catch{}}function qT(e,t={}){return{isolated:!!process.env.CC_CANDYBAR_SOCKET,registryDir:Ve(),ceiling:BT(),pid:process.pid,startTime:e,isSameLiveProcess:(e,t)=>PT(e,t,{readStartTime:NT,pidAlive:zT}),listFiles:HT,readEntry:UT,removeFile:e=>{try{r.unlinkSync(e)}catch{}},writeEntry:(e,t)=>{let n=`${e}.${t.pid}.tmp`;try{r.writeFileSync(n,JSON.stringify(t),{mode:384}),r.renameSync(n,e)}catch(e){try{r.unlinkSync(n)}catch(e){e.code}throw e}},ensureDirSafe:process.env.CC_CANDYBAR_DAEMON_REGISTRY_DIR?Fe:e=>{Fe(c.dirname(e)),Fe(e)},...t}}function JT(e){return e<32||e===127||e>=128&&e<=159}function YT(e){let t=``;for(let n of e)t+=JT(n.codePointAt(0)??0)?` `:n;return t.replace(/\s+/g,` `).trim()}function XT(e,t){let n=YT(e),r=``,i=0;for(let e of n){if(i===t)return r.replace(/.$/u,`…`);r+=e,i++}return r}const ZT=`\x1B[38;2;255;255;255m`,QT=`\x1B[48;2;200;40;40m`;function $T(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 eE={fg:$T(ZT),bg:$T(QT)},tE={fg:$T(`\x1B[38;2;0;0;0m`),bg:$T(`\x1B[48;2;220;160;40m`)},nE={unicode:gi,ascii:{glyph:`>`,divider:`|`,lead:`<`,tail:`>`}},rE={unicode:{},ascii:{left:`(`,right:`)`}};function iE(e,t,n){switch(e){case`capsule`:return new vi(rE[t]);case`plain`:return new yi(n===void 0?{}:{separator:n});case`powerline`:return new _i(nE[t]);default:return e}}const aE=new Map;function oE(e){let t=JSON.stringify([e.style,e.charset,e.separator??null]),n=aE.get(t);if(n!==void 0)return n;let r=iE(e.style,e.charset,e.separator),i=e=>new V(`x`,{end:``,noWrap:!0,style:new z({bgcolor:e})}),a=e=>new V(Si(new si(e,r),{colorSystem:null}).replace(/\n$/,``)).cellLength,o=a([i(`#101010`)]),s={chrome:o-1,seam:a([i(`#101010`),i(`#202020`)])-o-1};return aE.set(t,s),s}function sE(e){return oE(e).chrome}function cE(e){return oE(e).seam}function lE(e,t){if(e.length===0)return``;let n=iE(t.style,t.charset,t.separator),r=t.colorCompatibility,i=t.wrap&&Number.isFinite(t.width)?Si(new Oi([...e],{joiner:n}),{width:t.width,colorSystem:r}):Si(new si([...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 uE(e){return Math.min(20,e??20)}const dE={heading:`ERROR`,glyph:`⚠`,colors:eE},fE={heading:`WARNING`,glyph:`⚠`,colors:tE},pE={heading:`UPDATE`,glyph:`⬆`,colors:tE};function mE(e,t){return{text:YT(e),link:t}}function hE(e,t,n){let[r,...i]=[gE(e,dE,bw),t,gE(n,fE,xw)].flat();return r===void 0?null:{channels:[r,...i]}}function gE(e,t,n){let r=Lw([{verb:n,args:[e]}]),[i,...a]=e.split(/\r\n|\r|\n/).map(e=>mE(e,r)).filter(e=>e.text!==``).map(e=>[e]);return i===void 0?[]:[{severity:t,message:e,lines:[i,...a]}]}function _E(e){return e.channels.map(e=>`${e.severity.heading}\n${e.message}\n`).join(`
173
- `)}function vE(e,t,n,r){if(t===null)return e;let i=yE(r),a=t.channels.flatMap(e=>bE(e,i)),o=n.failedConfigFile!==null||a.length>r.rowCap,s=a.slice(0,r.rowCap-Number(o)),c=o?[xE(t,n,a.length-s.length,i)]:[],l=[...s,...c].join(`
174
- `);return e?`${l}\n${e}`:l}function yE(e){return{style:`plain`,separator:``,width:e.width,wrap:!0,padding:0,charset:`unicode`,colorCompatibility:e.colorCompatibility}}function bE(e,t){let n=new z({bgcolor:e.severity.colors.bg,color:e.severity.colors.fg}),r=Rt(Math.max(2,t.width-1)),i=(e,t)=>new V(`${e} `,{style:t,end:``,noWrap:!0});return e.lines.flatMap((a,o)=>lE([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 xE(e,t,n,r){let{colors:i}=e.channels[0].severity,{fullText:a,failedConfigFile:o}=t,s=new z({bgcolor:i.bg,color:i.fg}),c=(e,t)=>new V(e,{style:t,end:``,noWrap:!0}),l=n>0?[c(`${n} more rows · `,s),a.kind===`file`?c(`open full text`,s.withLink(re(a.path).href)):c(`full text unavailable: ${YT(a.reason)}`,s)]:[],u=o===null?[]:[c(`${l.length>0?` · `:``}open `,s),c(YT(o),s.withLink(re(o).href))],d=[c(`↳ `,s),...l,...u.slice(0,-1)],f=d.reduce((e,t)=>e+t.cellLength,0),p=u.slice(-1).map(e=>e.truncate(Math.max(1,r.width-f),{mode:`middle`})),m=V.fromFragments([...d,...p]).truncate(r.width);return m.noWrap=!0,lE([m],r)}const SE=e=>!e.startsWith(`.`)&&!e.endsWith(`~`);function CE(e,t){return t.isSymbolicLink()?Buffer.from(r.readlinkSync(e)):r.readFileSync(e)}function wE(e,t){return r.readdirSync(t).filter(SE).sort().flatMap(n=>{let i=c.join(t,n),a=r.lstatSync(i,{throwIfNoEntry:!1});return a===void 0?[]:a.isDirectory()?wE(e,i):[[c.relative(e,i).split(c.sep).join(`/`),CE(i,a)]]})}function TE(e){let t=ae.createHash(`sha256`);for(let[n,r]of wE(e,e))t.update(n).update(`\0`).update(r).update(`\0`);return t.digest(`hex`)}const EE=e=>e.slice(0,7);function DE(e){return c.dirname(c.dirname(e))}function OE(){return{version:Uw,digest:`a191fd28037173f953af6d195ad35d46823cc257bfd0f37d0dec1195a2d24d1c`}}function kE(e){let t=JSON.parse(r.readFileSync(c.join(e,`package.json`),`utf8`)),n=typeof t==`object`&&t?t.version:void 0;if(typeof n!=`string`)throw Error(`${c.join(e,`package.json`)} has no version string`);return n}function AE(e,t){try{let n=DE(ne(e)),i=c.join(n,`src`);if(!r.existsSync(i))return{kind:`not-source-checkout`};let a=t(),o=TE(i);return o===a.digest?{kind:`current`,root:n,stamp:a}:{kind:`stale`,root:n,source:{version:kE(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 jE(e){return e.op===`remove`?`remove:${e.target}`:`insert:${e.segment}:${e.anchor}:${e.relation}`}function ME(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 NE(e,t,n){let r=es(e,new Set(n.map($o).filter(e=>e.includes(t)).flat()));return r===e?{seg:e}:{seg:e,id:r}}const PE=/^-?\d+$/;function FE(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 IE(e){return t=>{if(!t)return{ok:!1,reason:`${e} value is required`};if(!PE.test(t))return{ok:!1,reason:`${e} must be an integer, got "${t}"`};let n=t[0]===`-`,r=(n?t.slice(1):t).replace(/^0+/,``);return r===``?{ok:!0,value:`0`}:{ok:!0,value:n?`-${r}`:r}}}function LE(e,t,n){return r=>r?PE.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 RE(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=>!PE.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 zE(e){return e===`config`?`set-config`:`set-state`}function BE(e,t,n){return t.kind===`int`?IE(`menu page "${e}"`):t.kind===`range`?LE(t.min,t.max,`${n} stepper "${e}"`):FE(t.allowed,`${n} "${e}"`,zE(n))}function VE(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:RE(e,n,t)}))}function HE(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=RE(e,[...a.specs,i],t);a.specs.push(i),a.merged=n,a.validator=BE(e,n,t)}else{let r=RE(e,[i],t);n.set(e,{permanent:!1,specs:[i],merged:r,validator:BE(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=RE(e,r.specs,t),r.validator=BE(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 UE=HE({},`config`);function WE(){return UE.listKeys()}function GE(e,t){return UE.validate(e,t)}function KE(e){return UE.rangeParamsFor(e)}function qE(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:TS(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:[jE({op:`remove`,target:e.removeSegment})]}}]:`insertSegment`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:[jE({op:`insert`,segment:e.insertSegment,anchor:e.anchor,relation:e.relation})]}}]:`insertSegmentFrom`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:TS(e.insertSegmentFrom,t).members.map(t=>jE({op:`insert`,segment:t,anchor:e.anchor,relation:e.relation}))}}]:[{key:e.persist,spec:{kind:`range`,min:e.min,max:e.max}}]:[]}function JE(e,t){let n=Lc(e.globals).get(t);return n===void 0?null:String(n)}function YE(e){let t=new Set;for(let n of Object.values(e.actions)){`reset`in n&&t.add(n.reset);let e=`persist`in n?Cy(n.persist):null;e?.scope===`preset-root`&&t.add(xy(e.preset))}return[...t].map(e=>({key:e,spec:{kind:`allow-list`,allowed:[]}}))}function XE(e){let t=new Map([...CS(e),...Vy(e)]);return[...YE(e),...Object.values(e.actions).flatMap(e=>qE(e,t))]}function ZE(e){return VE(XE(e),`config`)}function QE(e,t){return UE.register(e,t)}const $E=`trimPrefix "/" (trimPrefix .project_dir .current_dir)`,eD=`{{ \$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 (${$E}) (basename .project_dir) (ne (${$E}) "") }}{{ end }}{{ end }}{{ abbreviatePath \$dir }}`,tD={globals:{palette:`tokyo-night`},variables:{...uy,current_dir:{kind:`input`,path:`workspace.current_dir`,default:`?`},"model.display_name":{kind:`input`,path:`model.display_name`,default:``},version:{kind:`input`,path:`version`,default:``},home:{kind:`input`,path:`home`,default:``},"tmux.session":{kind:`input`,path:`tmux.session`,default:``},"host.name":{kind:`input`,path:`host.name`,default:``},"host.user":{kind:`input`,path:`host.user`,default:``},"host.ssh":{kind:`input`,path:`host.ssh`,type:`boolean`,default:!1},"git.repoName":{kind:`input`,path:`git.repoName`,default:``},"git.branch":{kind:`input`,path:`git.branch`,default:``},"git.sha":{kind:`input`,path:`git.sha`,default:``},"git.ahead":{kind:`input`,path:`git.ahead`,type:`number`,default:0},"git.behind":{kind:`input`,path:`git.behind`,type:`number`,default:0},"git.staged":{kind:`input`,path:`git.staged`,type:`number`,default:0},"git.unstaged":{kind:`input`,path:`git.unstaged`,type:`number`,default:0},"git.untracked":{kind:`input`,path:`git.untracked`,type:`number`,default:0},"git.conflicts":{kind:`input`,path:`git.conflicts`,type:`number`,default:0},"git.upstream":{kind:`input`,path:`git.upstream`,default:``},"git.stash":{kind:`input`,path:`git.stash`,type:`number`,default:0},"git.status":{kind:`input`,path:`git.status`,default:`clean`},"git.operation":{kind:`input`,path:`git.operation`,default:``},"git.timeSinceCommit":{kind:`input`,path:`git.timeSinceCommit`,type:`number`,default:0},"git.color.branch":{kind:`literal`,value:`primary`},"git.color.staged":{kind:`literal`,value:`success`},"git.color.unstaged":{kind:`literal`,value:`warning`},"git.color.untracked":{kind:`literal`,value:`accent`},"git.color.conflicts":{kind:`literal`,value:`error`},"git.color.ahead":{kind:`literal`,value:`success`},"git.color.behind":{kind:`literal`,value:`warning`},"git.color.stash":{kind:`literal`,value:`accent`},"git.detail":{kind:`state`,key:`git-detail`,default:`collapsed`},"git.prNumber":{kind:`input`,path:`git.prNumber`,type:`number`,default:0},"git.prState":{kind:`input`,path:`git.prState`,default:``},"git.prUrl":{kind:`input`,path:`git.prUrl`,default:``},"git.prError":{kind:`input`,path:`git.prError`,default:``},"cache.expiresAt":{kind:`input`,path:`cache.expiresAt`,type:`number`,default:0},"session.cost":{kind:`input`,path:`session.cost`,type:`number`,default:0},"session.tokens":{kind:`input`,path:`session.tokens`,type:`number`,default:0},"session.budget.amount":{kind:`literal`,value:0},"session.budget.warningThreshold":{kind:`literal`,value:80},"today.cost":{kind:`input`,path:`today.cost`,type:`number`,default:0},"today.tokens":{kind:`input`,path:`today.tokens`,type:`number`,default:0},"today.budget.amount":{kind:`literal`,value:50},"today.budget.warningThreshold":{kind:`literal`,value:80},"block.nativeUtilization":{kind:`input`,path:`block.nativeUtilization`,type:`number`,default:0},"block.resetsAt":{kind:`input`,path:`block.resetsAt`,type:`number`,default:0},"block.budget.warningThreshold":{kind:`literal`,value:80},"block.budget.heatThreshold":{kind:`literal`,value:50},"weekly.percentage":{kind:`input`,path:`weekly.percentage`,type:`number`,default:0},"weekly.resetsAt":{kind:`input`,path:`weekly.resetsAt`,type:`number`,default:0},"weekly.budget.warningThreshold":{kind:`literal`,value:80},"weekly.budget.heatThreshold":{kind:`literal`,value:50},"burn.costPerHour":{kind:`input`,path:`burn.costPerHour`,type:`number`,default:-1},"block.etaMinutes":{kind:`input`,path:`block.etaMinutes`,type:`number`,default:-1},"weekly.etaMinutes":{kind:`input`,path:`weekly.etaMinutes`,type:`number`,default:-1},"burn.eta.warnMinutes":{kind:`literal`,value:60},"burn.eta.errorMinutes":{kind:`literal`,value:30},"speed.input":{kind:`input`,path:`speed.input`,type:`number`,default:-1},"speed.output":{kind:`input`,path:`speed.output`,type:`number`,default:-1},"speed.total":{kind:`input`,path:`speed.total`,type:`number`,default:-1},"speed.history":{kind:`input`,path:`speed.history`,type:`string`,default:``},"context.totalTokens":{kind:`input`,path:`context.totalTokens`,type:`number`,default:0},"context.contextLeft":{kind:`input`,path:`context.contextLeft`,type:`number`,default:100},"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:``},"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:eD},model:{description:`The active model's display name.`,template:`✱ {{ formatModelName .model.display_name }}`,when:`{{ ne .model.display_name "" }}`},sessionId:{description:`The session id, truncated to 8 characters.`,template:`⌗{{ trunc 8 .session.id }}`,when:`{{ ne .session.id "" }}`},version:{description:`The Claude Code version reported in the hook payload.`,template:`◈ v{{ .version }}`,when:`{{ ne .version "" }}`},tmux:{description:`The tmux session name; hidden when not inside tmux.`,template:`tmux:{{ .tmux.session | default "none" }}`,when:`{{ ne .tmux.session "" }}`},host:{description:`user@host on a warning background, shown only over SSH.`,template:`⇄ {{ .host.user | default "?" }}@{{ .host.name | default "?" }}`,bg:`warning`,when:`{{ .host.ssh }}`},gitaculous:{description:`The git state: a summary (branch, ahead/behind, S/U/? flags) that the arrow at its right edge expands to every fact — repo, in-progress operation, sha, upstream ±, stash count, time since the last commit.`,template:`{{ if eq .git.detail "expanded" }}{{ template "gitExpanded" . }}{{ else }}{{ template "gitCollapsed" . }}{{ end }} {{ action "gitDetail" "▸" "◂" }}`,fg:`{{ readableOn (mix (color "foreground") (bgOf) 60) (bgOf) 3 }}`,when:`{{ ne .git.branch "" }}`},gitPr:{description:"The pull request open for this branch, as a link; `⚠ PR` when the forge lookup failed.",template:`{{ if ne .git.prUrl "" }}{{ link .git.prUrl (printf "⇆ #%v" .git.prNumber) }}{{ else }}⚠ PR{{ end }}`,when:`{{ or (ne .git.prUrl "") (ne .git.prError "") }}`},toolbar:{description:`Quick actions: copy the session id, and open the project, transcript or repo.`,template:lb(``).template},themeSwitcher:{description:"`◀ <theme> ▶`: the theme the bar is wearing; ◀ and ▶ switch this session to the previous or next theme, wrapping at the ends.",template:`{{ carousel "stepTheme" 0 }}`},session:{description:`This session's cost and token total, with a budget warning once a budget is configured.`,template:`§ {{ template "formatCost" .session.cost }} ({{ template "formatTokens" .session.tokens }}){{ template "budgetStatus" (dict "cost" .session.cost "budget" .session.budget.amount "warn" .session.budget.warningThreshold) }}`},today:{description:`Today's cost and tokens across every session, with a budget warning once a budget is configured.`,template:`☉ {{ template "formatCost" .today.cost }} ({{ template "formatTokens" .today.tokens }}){{ template "budgetStatus" (dict "cost" .today.cost "budget" .today.budget.amount "warn" .today.budget.warningThreshold) }}`},block:{description:`The 5-hour rate-limit block: percent used and time to reset, heating to warning then error.`,template:`◱ {{ round .block.nativeUtilization }}% ({{ template "formatResetCountdown" .block.resetsAt }})`,bg:`{{ ramp (round .block.nativeUtilization) "step" 0 (tint) .block.budget.heatThreshold "warning" .block.budget.warningThreshold "error" }}`,when:`{{ gt .block.resetsAt 0 }}`},weekly:{description:`The weekly rate-limit quota: percent used and time to reset, heating to warning then error.`,template:`◑ {{ round .weekly.percentage }}% ({{ template "formatResetCountdown" .weekly.resetsAt }})`,bg:`{{ ramp (round .weekly.percentage) "step" 0 (tint) .weekly.budget.heatThreshold "warning" .weekly.budget.warningThreshold "error" }}`,when:`{{ gt .weekly.resetsAt 0 }}`},burnrate:{description:`Spend per hour, with the projected time to the 5-hour and weekly limits.`,template:`⚡ {{ template "formatRate" .burn.costPerHour }} · {{ template "formatEta" .block.etaMinutes }} to 5h · {{ template "formatEta" .weekly.etaMinutes }} to wk`,bg:`{{ ramp .block.etaMinutes "step" -1 (tint) 0 "error" .burn.eta.errorMinutes "warning" .burn.eta.warnMinutes (tint) }}`,when:`{{ or (gt .block.resetsAt 0) (gt .weekly.resetsAt 0) }}`},speed:{description:`Token throughput for the latest exchange: output, input, and total.`,template:`⇅ out {{ template "formatSpeed" .speed.output }} · in {{ template "formatSpeed" .speed.input }} · tot {{ template "formatSpeed" .speed.total }}`,when:`{{ gt .session.tokens 0 }}`},tokenSparkline:{description:`A sparkline of recent token throughput.`,template:`⚡ {{ sparkline .speed.history 24 }}`,when:`{{ ne .speed.history "" }}`},cacheTimer:{description:"Minutes until the prompt cache expires, or `cold` once it has.",template:`◴ {{ if le (minutesUntilReset .cache.expiresAt) 0 }}cold{{ else }}{{ minutesUntilReset .cache.expiresAt }}m{{ end }}`,fg:`{{ readableOn (color (cascade (minutesUntilReset .cache.expiresAt) "0:error" "9:warning" "21:foreground")) (bgOf) ${$i} }}`,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 "") }}`},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:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`activity`}]}}},actions:{...lb(``).actions,copyDir:{copy:`{{ .current_dir }}`},stepTheme:{set:`theme`,from:`themes`},gitDetail:{set:`git-detail`,cycle:[`collapsed`,`expanded`]},"ceiling.raise":{ceiling:`set`,to:`+100_000`},"ceiling.lower":{ceiling:`set`,to:`-100_000`},"ceiling.off":{ceiling:`set`,to:`off`},"ceiling.clear":{ceiling:`clear`}},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:`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:`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:`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) ${$i}) .text }}`,gitCollapsed:`{{ template "gitBranch" . }}{{ template "gitAheadBehind" . }}{{ template "gitFlags" . }}`,gitExpanded:`(git){{ template "gitRepo" . }}{{ template "gitOperation" . }}{{ template "gitSha" . }}{{ template "gitFlags" . }} {{ template "gitBranch" . }}{{ template "gitUpstream" . }}{{ template "gitStash" . }}{{ template "gitAge" . }}`,gitBranch:`⎇ {{ template "gitPaint" (dict "color" .git.color.branch "text" .git.branch) }}`,gitRepo:`{{ if ne .git.repoName "" }} {{ .git.repoName }}{{ end }}`,gitOperation:`{{ if ne .git.operation "" }} [{{ .git.operation }}]{{ end }}`,gitSha:`{{ if ne .git.sha "" }} {{ .git.sha }}{{ end }}`,gitFlags:`{{ if or (gt .git.staged 0) (gt .git.unstaged 0) (gt .git.untracked 0) (gt .git.conflicts 0) }} {{ if gt .git.staged 0 }}{{ template "gitPaint" (dict "color" .git.color.staged "text" "S") }}{{ end }}{{ if gt .git.unstaged 0 }}{{ template "gitPaint" (dict "color" .git.color.unstaged "text" "U") }}{{ end }}{{ if gt .git.untracked 0 }}{{ template "gitPaint" (dict "color" .git.color.untracked "text" "?") }}{{ end }}{{ if gt .git.conflicts 0 }}{{ template "gitPaint" (dict "color" .git.color.conflicts "text" (printf "!%v" .git.conflicts)) }}{{ end }}{{ end }}`,gitAheadBehind:`{{ if or (gt .git.ahead 0) (gt .git.behind 0) }} {{ if gt .git.ahead 0 }}{{ template "gitPaint" (dict "color" .git.color.ahead "text" (printf "+%v" .git.ahead)) }}{{ end }}{{ if and (gt .git.ahead 0) (gt .git.behind 0) }}/{{ end }}{{ if gt .git.behind 0 }}{{ template "gitPaint" (dict "color" .git.color.behind "text" (printf "-%v" .git.behind)) }}{{ end }}{{ end }}`,gitUpstream:`{{ if ne .git.upstream "" }} [{{ .git.upstream }}{{ template "gitAheadBehind" . }}]{{ end }}`,gitStash:`{{ if gt .git.stash 0 }} {{ template "gitPaint" (dict "color" .git.color.stash "text" (printf "(%v stashed)" .git.stash)) }}{{ end }}`,gitAge:`{{ if gt .git.timeSinceCommit 0 }} ◷ {{ template "formatTimeSince" .git.timeSinceCommit }}{{ end }}`,formatCost:'{{ if lt . 0.01 }}<$0.01{{ else }}${{ printf "%.2f" . }}{{ end }}',formatTokenCount:`{{ if ge . 1000000 }}{{ printf "%.1f" (divf . 1000000) }}M{{ else if ge . 1000 }}{{ printf "%.1f" (divf . 1000) }}K{{ else }}{{ . }}{{ end }}`,formatTokens:`{{ template "formatTokenCount" . }} tokens`,formatToolTally:`{{ $names := splitList "," . }}{{ range $i, $pair := $names }}{{ if lt $i 2 }}{{ if $i }} {{ end }}{{ $kv := splitList ":" $pair }}{{ index $kv 0 }}{{ if ne (index $kv 1) "1" }}×{{ index $kv 1 }}{{ end }}{{ end }}{{ end }}{{ if gt (len $names) 2 }} +{{ sub (len $names) 2 }}{{ end }}`,formatRate:`{{ if lt . 0 }}—/hr{{ else }}{{ template "formatCost" . }}/hr{{ end }}`,formatEta:`{{ if lt . 0 }}—{{ else }}{{ template "formatLongTimeRemaining" . }}{{ end }}`,formatSpeed:`{{ if lt . 0 }}—{{ else }}{{ template "formatTokenCount" (round .) }}/s{{ end }}`,formatTokenBreakdown:`{{ $first := true }}{{ if gt .input 0 }}{{ template "formatTokenCount" .input }} in{{ $first = false }}{{ end }}{{ if gt .output 0 }}{{ if not $first }} + {{ end }}{{ template "formatTokenCount" .output }} out{{ $first = false }}{{ end }}{{ if or (gt .cacheCreation 0) (gt .cacheRead 0) }}{{ if not $first }} + {{ end }}{{ template "formatTokenCount" (add .cacheCreation .cacheRead) }} cached{{ $first = false }}{{ end }}{{ if $first }}0 tokens{{ end }}`,budgetStatus:`{{ if or (le .budget 0) (lt .cost 0) }}{{ else }}{{ $pct := minf 100 (mulf (divf .cost .budget) 100) }}{{ $p := printf "%.0f%%" $pct }}{{ if ge $pct .warn }} !{{ $p }}{{ else }}{{ if ge $pct 50 }} +{{ $p }}{{ else }} {{ $p }}{{ end }}{{ end }}{{ end }}`,formatTimeSince:`{{ if lt . 60 }}{{ . }}s{{ else if lt . 3600 }}{{ div . 60 }}m{{ else if lt . 86400 }}{{ div . 3600 }}h{{ else if lt . 604800 }}{{ div . 86400 }}d{{ else }}{{ div . 604800 }}w{{ end }}`,formatDuration:`{{ if lt . 60 }}{{ printf "%.0f" . }}s{{ else if lt . 3600 }}{{ printf "%.0f" (divf . 60) }}m{{ else if lt . 86400 }}{{ printf "%.1f" (divf . 3600) }}h{{ else }}{{ printf "%.1f" (divf . 86400) }}d{{ end }}`,formatResponseTime:`{{ if lt . 60 }}{{ printf "%.1f" . }}s{{ else }}{{ printf "%.1f" (divf . 60) }}m{{ end }}`,formatLongTimeRemaining:`{{ if ge . 1440 }}{{ $d := div . 1440 }}{{ $h := div (mod . 1440) 60 }}{{ if gt $h 0 }}{{ $d }}d {{ $h }}h{{ else }}{{ $d }}d{{ end }}{{ else if ge . 60 }}{{ $h := div . 60 }}{{ $m := mod . 60 }}{{ if gt $m 0 }}{{ $h }}h {{ $m }}m{{ else }}{{ $h }}h{{ end }}{{ else }}{{ . }}m{{ end }}`,formatResetCountdown:`{{ template "formatLongTimeRemaining" (add 1 (minutesUntilReset .)) }}`}},nD=new Set([tD.globals.palette,...Object.values(tD.segments).map(e=>e.palette)].filter(e=>e!==void 0)),rD=tc(eC(`<default>`,JSON.stringify(tD),nD),tD),iD=gg(rD.presets);function aD(e){return iD.includes(e)}function oD(e){if(!e)return 0;try{return o(e).mtimeMs}catch{return 0}}const sD=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 cD(e){return((...t)=>sD.run(()=>e(...t)))}const lD=cD(y),uD=cD(v),dD=cD(b);async function fD(e,t){return sD.run(async()=>{let n=null;try{n=await _(e,`r`);let{size:r,mtimeMs:i,ino:a}=await n.stat(),o=t!==void 0&&(a!==t.ino||r<t.offset),s=o||t===void 0?0:t.offset;if(s>=r)return J({buf:Buffer.alloc(0),start:s,size:r,mtimeMs:i,ino:a,reset:o});let c=Buffer.alloc(r-s),l=0;for(;l<c.length;){let{bytesRead:e}=await n.read(c,l,c.length-l,s+l);if(e===0)break;l+=e}return J({buf:l===c.length?c:c.subarray(0,l),start:s,size:r,mtimeMs:i,ino:a,reset:o})}catch(t){return t.code===`ENOENT`?Y:X(`readAppended ${e}: ${t instanceof Error?t.message:String(t)}`)}finally{await n?.close().catch(e=>{E(`transcript-fs: close failed: ${e instanceof Error?e.message:String(e)}`)})}})}async function pD(e,t){return sD.run(async()=>{let n=null;try{n=await _(e,`r`);let{size:r}=await n.stat(),i=Math.max(0,r-t),a=Buffer.alloc(r-i),o=0;for(;o<a.length;){let{bytesRead:e}=await n.read(a,o,a.length-o,i+o);if(e===0)break;o+=e}return J({buf:o===a.length?a:a.subarray(0,o),fromStart:i===0})}catch(t){return t.code===`ENOENT`?Y:X(`readTail ${e}: ${t instanceof Error?t.message:String(t)}`)}finally{await n?.close().catch(e=>{E(`transcript-fs: close failed: ${e instanceof Error?e.message:String(e)}`)})}})}const mD=/"(?:cache_read_input_tokens|cache_creation_input_tokens)":[1-9]/;function hD(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 gD(e){let t=await _D(e);return t.kind===`ok`?J(Math.floor((t.value+36e5)/1e3)):t}async function _D(e){for(let t of[65536,1048576]){let n=await pD(e,t);if(n.kind!==`ok`)return n;let r=vD(n.value.buf,n.value.fromStart);if(r!=null)return J(r);if(n.value.fromStart)return Y}return Y}function vD(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||!mD.test(t))continue;let r=hD(t);if(r!=null)return r}return null}function yD(e,t,n){let r=_g(t(`preset`),e.globals.preset,e.presets),i=bg(e,r),a=t(`edit.mode`)===`open`?e.editGlobals:{};return{preset:r,presetCustomized:n(r),theme:vS(a.palette,t(`theme`),i.palette),look:Ma(a.look,t(`look`),i.look,e.looks),style:Fa(a.style,t(`style`),i.style),progression:qa(a.progression,t(`progression`),i.progression),separator:a.default_separator??i.default_separator,autoWrap:eo(a.autoWrap,t(`autoWrap`),i.autoWrap),padding:to(a.padding,t(`padding`),i.padding),charset:za(a.charset,t(`charset`),i.charset),updateNotice:a.updateNotice??i.updateNotice??!0,colorCompatibility:Ua(a.colorCompatibility,t(`colorCompatibility`),i.colorCompatibility)}}function bD(e,t){return{style:e.style,separator:e.separator,colorCompatibility:e.colorCompatibility,wrap:e.autoWrap,padding:e.padding,charset:e.charset,width:t}}function xD(e){return{theme:e.theme,look:e.look,preset:e.preset,progression:e.progression}}function SD(e){return{preset:{effective:e.preset,customized:e.presetCustomized,bundled:aD(e.preset)},style:{effective:e.style},progression:{effective:e.progression},charset:{effective:e.charset},colorCompatibility:{effective:e.colorCompatibility},autoWrap:{effective:e.autoWrap},padding:{effective:e.padding}}}const CD=10*1e3;function wD(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 TD(e,t){if(!(t<60))return e*3600/t}function ED(e,t,n,r){let i=r-t;if(i<50||i>CD)return;let a=n-e;if(!(a<=0))return a*1e3/i}function DD(e){let{prev:t,cur:n}=e;if(t===void 0)return;let r=ED(t.input,t.atMs,n.input,n.atMs),i=ED(t.output,t.atMs,n.output,n.atMs),a=ED(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 OD(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>CD)continue;let o=ED(r.total,r.atMs,i.total,i.atMs);n.push(o??0)}if(n.length!==0)return n.join(`,`)}function kD(e){let t=e.indexOf(`.`);return t<0?e:e.slice(0,t)}function AD(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`,()=>kD(f.hostname())),i=n(`user`,()=>f.userInfo().username);return{host:{...r!==void 0&&{name:r},...i!==void 0&&{user:i},...e.ssh!==void 0&&{ssh:e.ssh}},failures:t}}function jD(e,t){let n=new Map;for(let[t,r]of Object.entries(e.variables))n.set(t,r);for(let[t,r]of Object.entries(e.segments))if(r.vars)for(let[e,i]of Object.entries(r.vars))n.set(`${t}.${e}`,i);let r=[],i=new Set,a=t=>$g(t,e.helpers).keys();for(let n of ns(yg(e,t).node)){if(n.when)for(let e of a(n.when))r.push(e);if(n.kind!==`segment`)continue;let t=e.segments[n.name];if(t){for(let e of[t.template,t.when,t.bg,t.fg])if(e)for(let t of a(e))r.push(t)}}let o=new Set;for(;r.length>0;){let e=r.pop();for(let t of ND(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 MD(e){let t=new Map;return n=>{let r=t.get(n);if(r!==void 0)return r;let i=jD(e,n);return t.set(n,i),i}}function ND(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 PD(e,t){for(let n of e)if(n===t||n.startsWith(t+`.`))return!0;return!1}function FD(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 ID(e,t,n,r,i,a,o){let s=e=>PD(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]=await Promise.all([l(`git`,s(`git`),()=>t.gitProvider.getGitInfo(n??e.workspace?.current_dir,FD(r),e.workspace?.project_dir)),l(`session`,s(`session.cost`)||s(`session.tokens`)||s(`burn`),()=>t.usageStore.getUsageInfo(e.session_id,e)),l(`today`,s(`today`),()=>t.usageStore.getTodayInfo(e)),l(`context`,s(`context`),()=>t.contextProvider.getContextInfo(e)),l(`metrics`,s(`metrics`)||s(`burn`),()=>t.metricsProvider.getMetricsInfo(e.session_id,e)),l(`activity`,s(`activity`),()=>t.activityProvider.getActivityInfo(e.session_id,e)),l(`tmux`,s(`tmux`),()=>t.tmuxService.getSessionId()),l(`cache`,s(`cache`),()=>gD(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??``}))]),b=[],x=e=>{if(e.kind===`failed`){b.push(e.reason);return}return e.kind===`ok`?e.value:void 0},S=UD(u);b.push(...S.failures);let C=AD(a);b.push(...C.failures);let ee=x(d),te=x(f),ne=x(p),re=x(m),ie=x(h),ae=x(g),w=x(_),T=RD(y);y.kind===`failed`&&b.push(`memento: ${y.reason}`);for(let e of b)t.log(`warn`,`provider fetch failed: ${e}`);let oe=e.rate_limits?.five_hour,se=e.rate_limits?.seven_day,ce=oe?wD(oe.used_percentage,oe.resets_at,18e6,c):void 0,le=se?wD(se.used_percentage,se.resets_at,6048e5,c):void 0,ue=ee?.session.cost,de=re?.sessionDuration,fe=s(`burn`)&&ue!=null&&de!=null?TD(ue,de):void 0,pe=x(v),me=pe===void 0?void 0:DD(pe),he=pe===void 0?void 0:OD(pe),ge=me!==void 0||he!==void 0?{...me,...he!==void 0&&{history:he}}:void 0,E=HD(process.env.HOME??process.env.USERPROFILE),_e=e.workspace?{...e.workspace,current_dir:HD(e.workspace.current_dir)??``,project_dir:HD(e.workspace.project_dir)??``}:e.workspace,ve=ee===void 0?void 0:VD({cost:ee.session.cost,tokens:ee.session.tokens}),ye=te===void 0?void 0:{cost:te.cost,tokens:te.tokens},be=re===void 0?void 0:VD({lastResponseTime:re.lastResponseTime,responseTime:re.responseTime,sessionDuration:re.sessionDuration,messageCount:re.messageCount,linesAdded:re.linesAdded,linesRemoved:re.linesRemoved}),xe=ie===void 0?void 0:zD(ie);return{...e,..._e!==void 0&&{workspace:_e},...E!==void 0&&{home:E},...S.git!==void 0&&{git:S.git},...ae!==void 0&&{tmux:{session:ae}},host:C.host,...SD(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`)&&oe!==void 0&&{block:{nativeUtilization:oe.used_percentage,resetsAt:oe.resets_at,...ce!==void 0&&{etaMinutes:ce}}},...se!==void 0&&{weekly:{percentage:se.used_percentage,resetsAt:se.resets_at,...le!==void 0&&{etaMinutes:le}}},...w!==void 0&&{cache:{expiresAt:w}},...ne!==void 0&&{context:{totalTokens:ne.totalTokens,contextLeft:ne.contextLeftPercentage}},...be!==void 0&&{metrics:be},...xe!==void 0&&{activity:xe},...T!==void 0&&{memento:T}}}const LD=e=>e.trim().split(`
177
- `).at(-1).trim();function RD(e){switch(e.kind){case`absent`:return;case`failed`:return{error:LD(e.reason)};case`ok`:{let{ceiling:t,session:n}=e.value;return{ceiling:t===`off`?0:t,off:t===`off`,session:n??``}}}}function zD(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=BD(e.running),i=BD(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 BD(e){return e.length===0?void 0:e.map(e=>`${e.name}:${e.count}`).join(`,`)}function VD(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 HD(e){return e===void 0||e.length===0||c.sep!==`\\`?e:e.replace(/\\/g,`/`)}function UD(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 WD={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?Ja:Ya,padding:e=>String(e.padding)},GD=Object.entries(dy),KD=new Set(fy.map(e=>e.sessionKey)),qD=()=>!1;function JD(e,t){return yD(e,e=>KD.has(e)?t(e):null,qD)}function YD(e,t,n,r){return e.flatMap(([e,i])=>{let a=WD[e](t);return a===null||a===WD[e](n(e))?[]:[{...i,value:a,target:r(i)}]})}function XD(e,t,n){return WD[n](JD(e,t))}function ZD(e,t){let n=JD(e,t),r=yD(e,()=>null,qD),i=yD(e,e=>e===dy.preset.sessionKey?n.preset:null,qD),a=vg(e.presets,n.preset).globals??{};return YD(GD,n,e=>e===`preset`?r:i,e=>e.configKey in a?Sy(n.preset,e.configKey):e.configKey)}function QD(e,t){let n=JD(e,t),r=yD(e,e=>e===dy.preset.sessionKey?n.preset:null,qD);return{from:n.preset,globals:vg(e.presets,n.preset).globals??{},picks:YD(GD.filter(([e])=>e!==`preset`),n,()=>r,e=>e.configKey)}}function $D(e){return{sessionKeys:fy.filter(t=>t.configKey===e).map(e=>e.sessionKey),fileKeys:[e,...Dc(e)?iD.map(t=>Sy(t,e)):[]]}}const eO=Ca(),tO=new Set(eO),nO=new Set(Na),rO=e=>e?tO.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown theme "${e}" (have: ${eO.join(`, `)})`}:{ok:!1,reason:`theme name is required`},iO=e=>e?nO.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown style "${e}" (have: ${Na.join(`, `)})`}:{ok:!1,reason:`style name is required`},aO=new Set([`1`,`true`]),oO=new Set([`0`,`false`]),sO=HE({style:iO,theme:rO,"toolbar-expanded":e=>aO.has(e)?{ok:!0,value:`1`}:oO.has(e)?{ok:!0,value:``}:{ok:!1,reason:`expected boolean-ish (1, 0, true, false), got "${e}"`}});function cO(){return sO.listKeys()}function lO(e,t){return sO.register(e,t)}function uO(e,t){return sO.validate(e,t)}function dO(e){return sO.rangeParamsFor(e)}function fO(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:TS(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 pO(e){let t=new Set(sO.listBaselineKeys());return e.filter(e=>e.spec.kind!==`allow-list`||!t.has(e.key))}function mO(e,t,n){let r=hy.get(n);if(r!==void 0)return XD(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 hO(e){let t=CS(e);return pO(Object.values(e.actions).flatMap(e=>fO(e,t)))}function gO(e){return VE(hO(e))}const _O=`update.dismissed`,vO=`updateNotice`;function yO(e){return e.kind===`source`?e.newer.digest:Jw(e.newer)}const bO=e=>`${e.version} [${EE(e.digest)}]`;function xO(e){switch(e.kind){case`source`:return{headline:`Newer source`,newer:bO(e.newer),running:bO(e.running),act:`rebuild`,busy:`rebuilding…`,command:{bin:`pnpm`,args:[`build`],cwd:e.root}};case`release`:return{headline:`Newer release`,newer:Jw(e.newer),running:Jw(e.running),act:`upgrade`,busy:`upgrading…`,command:{bin:`pnpm`,args:[`dlx`,`${Xw}@${Jw(e.newer)}`,`install`]}}}}const SO={kind:`idle`},CO={kind:`running`};function wO(e,t,n){if(e===null)return[];let r=yO(e);if(!n.enabled||n.dismissed===r)return[];let i=xO(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=Lw([{verb:xw,args:[s]}]),l=t.kind===`running`?mE(`[${i.busy}]`,c):mE(`[${i.act}]`,Lw([{verb:jw,args:[n.sessionId]}]));return[{severity:pE,message:s,lines:[[mE(a,c),l,mE(`[dismiss]`,Lw([{verb:hw,args:[n.sessionId,_O,r]}])),mE(`[disable]`,Lw([{verb:Sw,args:[n.sessionId,vO,`false`]}]))],...o.map(e=>[mE(e,c)])]}]}function TO(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 EO(e){switch(e.kind){case`current`:return[`info`,`build: current ${bO(e.stamp)}`];case`stale`:return[`info`,`build: stale — source ${bO(e.source)}, running ${bO(e.running)}`];case`not-source-checkout`:return[`info`,`build: not a source checkout`];case`unchecked`:return[`warn`,`build: unchecked: ${e.reason}`]}}function DO(e){switch(e.kind){case`current`:return[`info`,`release: current ${Jw(e.installed)}`];case`stale`:return[`info`,`release: stale — latest ${Jw(e.latest)}, running ${Jw(e.installed)}`];case`ahead`:return[`info`,`release: ahead — running ${Jw(e.installed)}, latest ${Jw(e.latest)}`];case`unchecked`:return[`warn`,`release: unchecked: ${e.reason}`]}}function OO(e){let t=null;return([n,r])=>{r!==t&&(t=r,e(n,r))}}const kO=e=>e.split(/\r?\n/).map(e=>e.trim()).filter(e=>e!==``).at(-1);function AO(e){let t=e.exitCode===null?``:` (exit ${e.exitCode})`,n=kO(e.stderr)??e.error??kO(e.stdout)??`no output`;return`${e.reason}${t}: ${n}`}function jO(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=SO,d=null,f=OO(s),p=OO(s),m=()=>TO(c,l);function h(){let e=m(),t=e===null?null:yO(e);(d===null?null:d.identity)!==t&&(d?.dispose(),d=t===null?null:{identity:t,dispose:lO(_O,{kind:`allow-list`,allowed:[t]})})}function g(){c=AE(t,OE),f(EO(c)),h()}async function _(){l=Qw(Uw,await Zw(Xw,a,i)),p(DO(l)),h()}return{arm(){QE(vO,{kind:`allow-list`,allowed:[`false`]}),g(),setInterval(g,n).unref(),c.kind===`not-source-checkout`&&(_(),setInterval(()=>void _(),r).unref())},notice:e=>wO(m(),u,e),act(){let e=m();if(e===null)throw new $(`apply-update: nothing newer is known to apply`);let t=xO(e);if(u.kind===`running`)throw new $(`apply-update: already ${t.busy}`);u=CO,s(`info`,`apply-update: ${t.act} — ${t.command.bin} ${t.command.args?.join(` `)??``}`),Ee({...t.command,category:`update.apply`,timeoutMs:6e5}).then(n=>{if(n.ok){u=SO,s(`info`,`apply-update: ${t.act} succeeded`),g(),o();return}let r=AO(n);u={kind:`failed`,identity:yO(e),reason:r},s(`error`,`apply-update: ${t.act} failed: ${r}`)})}}}var MO=class{static CACHE_DIR=D();static USAGE_CACHE_DIR=c.join(this.CACHE_DIR,`usage`);static LOCKS_DIR=c.join(this.CACHE_DIR,`locks`);static isLocked(e){let t=c.join(this.LOCKS_DIR,e);if(!r.existsSync(t))return!1;try{let n=r.readFileSync(t,`utf-8`),i=parseInt(n.trim(),10);if(isNaN(i))return E(`Invalid PID in lock file ${e}, removing stale lock`),r.unlinkSync(t),!1;try{return process.kill(i,0),!0}catch(n){return n.code===`ESRCH`?(E(`Removing stale lock file ${e} for dead process ${i}`),r.unlinkSync(t),!1):(E(`Error checking process ${i} for lock ${e}:`,n),!0)}}catch(t){return E(`Error reading lock file ${e}:`,t),!0}}static async acquireLock(e,t=5e3){await this.ensureCacheDirectories();let n=c.join(this.LOCKS_DIR,e),i=Date.now(),a=String(process.pid);for(;Date.now()-i<t;)try{return await r.promises.writeFile(n,a,{flag:`wx`}),E(`Lock acquired for ${e}`),!0}catch(e){if(e.code===`EEXIST`)await oe(50);else throw e}return E(`Failed to acquire lock for ${e} within ${t}ms`),!1}static async releaseLock(e){let t=c.join(this.LOCKS_DIR,e);try{await r.promises.unlink(t),E(`Lock released for ${e}`)}catch(t){t.code!==`ENOENT`&&E(`Error releasing lock for ${e}:`,t)}}static async ensureCacheDirectories(){try{await Promise.all([r.promises.mkdir(this.CACHE_DIR,{recursive:!0}),r.promises.mkdir(this.USAGE_CACHE_DIR,{recursive:!0}),r.promises.mkdir(this.LOCKS_DIR,{recursive:!0})])}catch(e){E(`Failed to create cache directories:`,e)}}static createProjectHash(e){return w(`md5`).update(e).digest(`hex`).substring(0,8)}static async getUsageCache(e,t){await this.ensureCacheDirectories();let n=c.join(this.USAGE_CACHE_DIR,`${e}.json`),i=`${e}.usage.lock`;for(let a=0;a<3;a++){if(this.isLocked(i)){E(`Cache for ${e} is locked, waiting...`),await oe(75);continue}try{let i=await r.promises.readFile(n,`utf-8`),a=JSON.parse(i);return!t||a.timestamp>=t?(E(`[CACHE-HIT] ${e} disk cache: found`),this.deserializeDates(a.data)):(E(`${e} cache outdated: cache=${a.timestamp}, latest=${t}`),null)}catch(t){if(t.code===`ENOENT`)return E(`No shared ${e} usage cache found`),null;E(`Attempt ${a+1} failed to read ${e} cache: ${t.message}. Retrying...`),await oe(75)}}return E(`Failed to read ${e} cache after 3 attempts.`),null}static deserializeDates(e){return Array.isArray(e)?e.map(e=>({...e,timestamp:new Date(e.timestamp)})):e}static async setUsageCache(e,t,n){let i=`${e}.usage.lock`;if(!await this.acquireLock(i)){E(`Could not acquire lock to set usage cache for ${e}`);return}try{await this.ensureCacheDirectories();let i=c.join(this.USAGE_CACHE_DIR,`${e}.json`),a=JSON.stringify({data:t,timestamp:n||Date.now()});await r.promises.writeFile(i,a,`utf-8`),E(`[CACHE-SET] ${e} disk cache stored`)}catch(t){E(`Failed to save ${e} usage cache:`,t)}finally{await this.releaseLock(i)}}};const NO={"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 PO=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 MO.getUsageCache(`pricing`,e)}static async saveDiskCache(e){await MO.setUsageCache(`pricing`,e)}static async fetchPricingData(){return new Promise(e=>{let t=new ee(this.GITHUB_PRICING_URL),n=T({hostname:t.hostname,path:t.pathname,headers:{"User-Agent":`cc-candybar`,"Cache-Control":`no-cache`},timeout:5e3},t=>{if(t.statusCode!==200){E(`HTTP ${t.statusCode}: ${t.statusMessage}`),e(null);return}let r=``,i=0;t.on(`data`,t=>{if(i+=t.length,i>1048576){E(`Response too large`),n.destroy(),e(null);return}r+=t}),t.on(`end`,()=>{try{let t=JSON.parse(r),n=t._meta,i={};for(let[e,n]of Object.entries(t))e!==`_meta`&&(i[e]=n);this.validatePricingData(i)?(E(`Fetched fresh pricing from GitHub for ${Object.keys(i).length} models`),E(`Pricing last updated: ${n?.updated||`unknown`}`),e(i)):(E(`Invalid pricing data structure`),e(null))}catch(t){E(`Failed to parse JSON:`,t),e(null)}}),t.on(`error`,t=>{E(`Response error:`,t),e(null)})});n.on(`error`,t=>{E(`Request error:`,t),e(null)}),n.on(`timeout`,()=>{E(`Request timeout`),n.destroy(),e(null)}),n.end()})}static async getCurrentPricing(){if(this.executionCache!==null)return E(`[CACHE-HIT] Pricing execution cache: ${Object.keys(this.executionCache).length} models`),this.executionCache;let e=await this.loadDiskCache();if(e)return E(`[CACHE-HIT] Pricing disk cache: ${Object.keys(e).length} models`),this.executionCache=e,E(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(e).length} models`),e;let t=await this.fetchPricingData();return t?(await this.saveDiskCache(t),E(`[CACHE-SET] Pricing disk cache stored: ${Object.keys(t).length} models`),this.executionCache=t,E(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(t).length} models`),t):(E(`[CACHE-FALLBACK] Using offline pricing data: ${Object.keys(NO).length} models`),this.executionCache=NO,E(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(NO).length} models`),NO)}static validatePricingData(e){if(!e||typeof e!=`object`)return!1;for(let[,t]of Object.entries(e)){if(!t||typeof t!=`object`)return!1;let e=t;if(typeof e.input!=`number`||typeof e.output!=`number`||typeof e.cache_read!=`number`)return!1}return!0}static async getModelPricing(e){if(this.modelPricingCache.has(e))return E(`[CACHE-HIT] Model pricing cache: ${e}`),this.modelPricingCache.get(e);let t=await this.getCurrentPricing(),n;return n=t[e]?t[e]:this.fuzzyMatchModel(e,t),this.modelPricingCache.set(e,n),E(`[CACHE-SET] Model pricing cache: ${e}`),n}static fuzzyMatchModel(e,t){let n=e.toLowerCase();for(let[e,r]of Object.entries(t))if(e.toLowerCase()===n)return r;for(let{pattern:e,fallback:r}of[{pattern:[`opus-4-6`,`claude-opus-4-6`],fallback:`claude-opus-4-6-20260205`},{pattern:[`opus-4-5`,`claude-opus-4-5`],fallback:`claude-opus-4-5-20251101`},{pattern:[`opus-4-1`,`claude-opus-4-1`],fallback:`claude-opus-4-1-20250805`},{pattern:[`opus-4`,`claude-opus-4`],fallback:`claude-opus-4-20250514`},{pattern:[`sonnet-4-6`,`sonnet-4.6`,`claude-sonnet-4-6`],fallback:`claude-sonnet-4-6`},{pattern:[`sonnet-4.5`,`4-5-sonnet`,`sonnet-4-5`],fallback:`claude-sonnet-4-5-20250929`},{pattern:[`sonnet-4`,`claude-sonnet-4`],fallback:`claude-sonnet-4-20250514`},{pattern:[`haiku-4.5`,`4-5-haiku`,`haiku-4-5`],fallback:`claude-haiku-4-5-20251001`},{pattern:[`haiku`],fallback:`claude-haiku-4-5-20251001`},{pattern:[`opus`],fallback:`claude-opus-4-20250514`},{pattern:[`sonnet`],fallback:`claude-sonnet-4-5-20250929`}])if(e.some(e=>n.includes(e))&&t[r])return t[r];return t[`claude-sonnet-4-5-20250929`]||{name:`${e} (Unknown Model)`,input:3,cache_write_5m:3.75,cache_write_1h:6,cache_read:.3,output:15}}static async calculateCostForEntry(e){let t=e.message?.usage;if(!t)return 0;let n=this.extractModelId(e),r=await this.getModelPricing(n),i=t.input_tokens||0,a=t.output_tokens||0,o=t.cache_creation_input_tokens||0,s=t.cache_read_input_tokens||0,c=i/1e6*r.input,l=a/1e6*r.output,u=s/1e6*r.cache_read,d=o/1e6*r.cache_write_5m;return c+l+d+u}static extractModelId(e){if(e.model&&typeof e.model==`string`)return e.model;let t=e.message;if(t?.model){let e=t.model;if(typeof e==`string`)return e;let n=e;return(typeof n?.id==`string`?n.id:null)||`claude-sonnet-4-5-20250929`}return e.model_id&&typeof e.model_id==`string`?e.model_id:`claude-sonnet-4-5-20250929`}};const FO=/<command-name>\s*([^<\s][^<]*?)\s*<\/command-name>/;function IO(e){if(typeof e==`string`)return FO.exec(e)?.[1]}function LO(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 RO(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=LO(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?IO(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 zO(){let e=[],t=process.env.CLAUDE_CONFIG_DIR;if(t&&t.split(`,`).forEach(t=>{let n=t.trim();a(n)&&e.push(n)}),e.length===0){let t=p(),n=d(t,`.config`,`claude`),r=d(t,`.claude`);a(n)&&e.push(n),a(r)&&e.push(r)}return e}async function BO(e){let t=[];for(let n of e){let e=d(n,`projects`);if(a(e))try{let n=await lD(e,{withFileTypes:!0});for(let r of n)if(r.isDirectory()){let n=d(e,r.name);t.push(n)}}catch(t){E(`Failed to read projects directory ${e}:`,t)}}return t}async function VO(e,t,n){let r=[],i=d(t,e,`subagents`);try{let t=(await lD(i)).filter(e=>e.startsWith(`agent-`)&&e.endsWith(`.jsonl`));for(let a of t){let t=d(i,a);if(n?.has(t)){r.push(t);continue}try{let n=(await uD(t,`utf-8`)).split(`
179
- `)[0];n&&JSON.parse(n).sessionId===e&&r.push(t)}catch{E(`Failed to check agent file ${t}`)}}}catch(e){E(`Failed to read subagents directory ${i}:`,e)}return r}function HO(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 UO=new Map;async function WO(e){try{let t=await dD(e),n=t.size,r=UO.get(e);if(r&&r.mtime===t.mtimeMs&&r.size===n)return E(`[parse-cache] hit ${e}`),UO.delete(e),UO.set(e,r),r.entries;let i;return n>1048576?(E(`Using streaming parser for large file ${e} (${Math.round(n/1024)}KB)`),i=await YO(e)):i=await qO(e),E(`Parsed ${i.length} entries from ${e}`),n>5242880?i:(UO.delete(e),UO.size>=16&&UO.delete(UO.keys().next().value),UO.set(e,{mtime:t.mtimeMs,size:n,entries:i}),i)}catch(t){if(t.code===`ENOENT`)return E(`Transcript not present yet: ${e}`),[];throw t}}function GO(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:RO(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 KO(e){let t=[];for(let n of e.split(`
180
- `))if(n.trim())try{let e=GO(JSON.parse(n));e&&t.push(e)}catch(e){E(`Failed to parse JSONL line: ${e}`);continue}return t}async function qO(e){return KO(await uD(e,`utf-8`))}async function JO(e,t){let n=await fD(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:KO(r.subarray(0,c+1).toString(`utf-8`)),cursor:{offset:i+c+1,mtimeMs:a,ino:o},reset:s})}async function YO(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=GO(JSON.parse(t));e&&r.push(e)}catch(e){E(`Failed to parse JSONL line: ${e}`)}}),o.on(`close`,()=>{t(r)}),o.on(`error`,t=>{E(`Streaming parser error for ${e}:`,t),n(t)}),a.on(`error`,t=>{E(`File stream error for ${e}:`,t),n(t)})})}var XO=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 ZO(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 QO={cost:0,input:0,output:0,cacheCreation:0,cacheRead:0},$O={cost:null,calculatedCost:null,officialCost:null,tokens:null,tokenBreakdown:null};function ek(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function tk(){let e=new Date;return e.setHours(0,0,0,0),e.setDate(e.getDate()-1),e.getTime()}function nk(){return{input:0,output:0,cacheCreation:0,cacheRead:0}}async function rk(e,t,n,r){let i=ek(new Date(tk())),a=e&&!t?e:void 0,o=a?.entries??0,s=a?.cost??0,c=a?{...a.breakdown}:nk(),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 PO.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=ek(new Date(e.timestamp));if(r<i)continue;let a=l.get(r)??{...QO};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 ik(e){let t=0,n=0,r=nk(),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)??{...QO};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:$O,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 ak(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 ok=class{entries=new Map;flight=new XO;seeded=new Map;speedRings=new Map;speedFlight=new XO;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:$O,i=t?.cost?.total_cost_usd??null;return J({session:{...r,cost:i??r.cost,officialCost:i}})}async getTodayInfo(e){let t=ek(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={...QO},i=!1;for(let e of this.entries.values()){i||=e.days.has(t);let n=e.days.get(t)??QO;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=oD(t);return this.speedFlight.run(`${e}:${r}`,async()=>{let i=await this.ingest(e,t,r);if(i.kind===`failed`)return i;let a=ZO(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??oD(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 VO(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 JO(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 rk(r,l,s,c)),e===t&&(a=c.mtimeMs)}return J({files:i,...ik(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=tk(),n=await BO(zO()),r=[];for(let e of n){let n;try{n=await lD(e)}catch{continue}for(let i of n){if(!i.endsWith(`.jsonl`))continue;let n=d(e,i),a;try{a=(await dD(n)).mtimeMs}catch{continue}a<t||r.push({sessionId:i.slice(0,-6),path:n,mtime:a})}}await ak(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 sk(e,t){return e===void 0?!0:e.evaluate(t).map(e=>e.plain).join(``)!==`false`}function ck(e,t){let n=V.fromFragments(e);return n.end=``,n.noWrap=!0,t!==void 0&&!t.isNull&&(n.style=t),n}function lk(e,t,n){e.cellLength>t?e.truncate(t,{mode:n.truncate,marker:n.truncateMarker}):e.cellLength<t&&e.align(n.justify,t)}function uk({text:e,trail:t}){if(t===void 0)return e;let n=ck([e,t]);return n.style=e.style,n}function dk(e,t){let{width:n,justify:r,truncate:i,truncateMarker:a=`…`,baseStyle:o,padding:s,trail:c=[]}=t;if(e.length===0)return[];let l=ck(e,o).pad(s),u=c.length===0?{}:{trail:ck([...c,new V(` `.repeat(s))],o)};if(n===`auto`)return[{text:l,...u}];let d={justify:r,truncate:i,truncateMarker:a};return n===`fill`?[{text:l,fill:d,...u}]:(lk(l,n,d),[{text:l,...u}])}const fk=RegExp(`\\x1b\\[[0-9;]*m|${Yr.source}`,`g`);function pk(e){return O(e.replace(fk,``))}function mk(e,t){let n=e.map(uk),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=lE(n,t).split(`
181
- `);if(i.length>1)return n;let a=Math.max(0,t.width-pk(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];lk(l,l.cellLength+c,i),n[t]=uk(e[t])}),n}function hk(e,t){let n=[],r=[],i=()=>{if(!r.length)return;let e=gk(r,t);e.plain.length>0&&n.push(e),r=[]};for(let a of e)if(vk(a.style).link){i();let e=gk([a],t);e.plain.length>0&&n.push(e)}else r.push(a);return i(),n}function gk(e,t){let n=t!==void 0&&!t.isNull?e.map(e=>_k(e,t)):e,r=V.fromFragments(n);return r.end=``,r.noWrap=!0,n.length===1?r.style=n[0].style:t!==void 0&&!t.isNull&&(r.style=t),r}function _k(e,t){let n=e.copy();return n.style=t.add(vk(e.style)),n}function vk(e){return e instanceof z?e:z.parse(e)}var yk=class extends Error{constructor(e,t,n){super(`Invalid ${t} color ${JSON.stringify(e)}: ${n}`),this.name=`ColorSpecError`}};function bk(e,t,n,r,i){let{palette:a,tint:o}=e,s=xk(n,i),c=s===void 0?o:Sk(a,s,`bg`);e.bg=c;let l=xk(r,i),u=l===void 0?ea(a,c,t):Sk(a,l,`fg`);return new z({bgcolor:N.fromRgba(c),color:N.fromRgba(u)})}function xk(e,t){if(e!==void 0)return e.evaluate(t).map(e=>e.plain).join(``)}function Sk(e,t,n){try{return Hn(e,t)}catch(e){throw e instanceof zn?new yk(t,n,e.message):e}}function Ck(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,wk(e,t,o,n,r,i));return i}function wk(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=TS(n.from,i);return{kind:`set-option`,key:n.set,stateVar:e,options:[...t.members],paletteOf:t.paletteOf}}return`int`in n?{kind:`set-int`,key:n.set,stateVar:e}:`cycle`in n?{kind:`set-cycle`,key:n.set,stateVar:e,members:n.cycle}:{kind:`set-bounded`,key:n.set,by:n.by}}if(`persist`in n){let e=py.get(n.persist)??n.persist;if(`to`in n)return{kind:`persist-literal`,key:n.persist,value:n.to,stateVar:e};if(`from`in n){let t=TS(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=TS(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:Ek(e,n.copy,t)};if(`open`in n)return{kind:`open`,target:Ek(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:_x(n)};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:Ek(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 Tk(e){return e.kind===`do`?Tk(e.head):e}function Ek(e,t,n){try{return e(t)}catch(e){throw Error(`Template parse error in actions.${n}: ${e.message}`,{cause:e})}}function Dk(e,t){return e.has(t)?f_(e.read(t)):``}function Ok(e,t){return e.evaluate(t).map(e=>e.plain).join(``)}function kk(e,t,n,r){let i=new V(e,{style:z.combine([r,new z({link:t,bold:n})])});return i.noWrap=!0,i.end=``,i}function Ak(e,t){return Math.max(e.members.indexOf(Dk(t,e.stateVar)),0)}function jk(e,t,n,r,i){switch(e.kind){case`set-literal`:{let t=Dk(r,e.stateVar);return{effects:[{verb:hw,args:[i,e.key,e.value]}],active:t===e.value}}case`set-option`:{let a=n??t,o=Dk(r,e.stateVar);return{effects:[{verb:hw,args:[i,e.key,a]}],active:o===a}}case`set-int`:{let a=n??t,o=Dk(r,e.stateVar);return{effects:[{verb:hw,args:[i,e.key,a]}],active:o===a}}case`set-cycle`:{let t=e.members[(Ak(e,r)+1)%e.members.length];return{effects:[{verb:hw,args:[i,e.key,t]}],active:!1}}case`set-bounded`:return{effects:[{verb:gw,args:[i,e.key,String(e.by)]}],active:!1};case`copy`:return{effects:[{verb:_w,args:[Ok(e.text,rv(r))]}],active:!1};case`open`:return{effects:[{verb:vw,args:[Ok(e.target,rv(r))]}],active:!1};case`persist-literal`:{let t=Dk(r,e.stateVar);return{effects:[{verb:Sw,args:[i,e.key,e.value]}],active:t===e.value}}case`persist-option`:{let a=n??t,o=Dk(r,e.stateVar);return{effects:[{verb:Sw,args:[i,e.key,a]}],active:o===a}}case`persist-cycle`:{let t=e.members[(Ak(e,r)+1)%e.members.length];return{effects:[{verb:Sw,args:[i,e.key,t]}],active:!1}}case`persist-bounded`:return{effects:[{verb:Cw,args:[i,e.key,String(e.by)]}],active:!1};case`reset`:return{effects:[{verb:Dw,args:[i,e.key]}],active:!1};case`undo`:return{effects:[{verb:kw,args:[i]}],active:!1};case`redo`:return{effects:[{verb:Aw,args:[i]}],active:!1};case`save`:return{effects:[{verb:ww,args:[i]}],active:!1};case`preset-save`:return{effects:[{verb:Tw,args:[i]}],active:!1};case`preset-delete`:return{effects:[{verb:Ew,args:[i,Ok(e.name,rv(r))]}],active:!1};case`doctor-run`:return{effects:[{verb:Mw,args:[i]}],active:!1};case`doctor-fix`:return{effects:[{verb:Nw,args:[i,e.check]}],active:!1};case`ceiling`:return{effects:[{verb:Pw,args:[i,...e.args]}],active:!1};case`layout-op`:return{effects:[{verb:Ow,args:[i,e.key,jE(e.op)]}],active:!1};case`do`:{let a=jk(e.head,t,n,r,i);return{effects:[...a.effects,...e.rest.flatMap(e=>jk(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:Ow,args:[i,e.key,jE(r)]}],active:!1}}}}function Mk(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:sc(`action "${e}"`,n,t.members.length,Ak(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 Nk(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}=Mk(e,Tk(r),t,i),{effects:s,active:c}=jk(r,a,o,i,Dk(i,`session.id`));return kk(a,Lw(s),c)}function Pk(e){return{action:{fn:(t,...n)=>Nk(t,n,e),argTypes:[`string`,`string`],returnType:`T`}}}function Fk(e,t){return kk(`✕`,Lw([{verb:hw,args:[Dk(e,`session.id`),t,ic]}]),!1)}function Ik(e,t,n){return new z({bgcolor:N.fromRgba(t),color:N.fromRgba(ea(e,t,n))})}function Lk(e,t,n){return Ik(e.palette,pa(e.palette,e.disclosure,[t],n),n)}function Rk(e,t,n,r,i){return r===void 0?n=>Lk(e,{...n,distribution:t},i):(e,t)=>zk(r(t,n),i)}function zk(e,t){let n=Wi(e,`background`);return new z({bgcolor:N.fromRgba(n),color:N.fromRgba(Yn(Wi(e,`primary`),n,4.5,t))})}function Bk(e){return{current:null,drawnAt:e}}function Vk(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 Hk(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 Uk(e){return new V(e).cellLength}function Wk(e){return Math.max(1,e.width-e.chromeCols-2*e.padding)}function Gk(e){return Math.max(1,Wk(e)-(Uk(`✕`)+2*e.padding+e.seamCols))}function Kk(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 qk(e,t){let n=[];for(let t of e)n.length>0&&n.push(new V(` `)),n.push(t);let r=V.fromFragments(n);return r.noWrap=t,r.end=``,r}function Jk(e,t,n,r){let i=e.compiled.get(t);if(!i||i.kind!==n)throw Error(`picker references action "${t}" which must be ${r}, got ${i?`a ${i.kind} action`:`no such action`}`);return i}function Yk(e,t,n){let r=e.compiled.get(t),i=r&&Tk(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 Xk(e,t,n,r,i,a,o){let s=Yk(a,e,`picker`),c=a.compiled.get(e),l=a.store,u=Dk(l,`session.id`),d=`stateVar`in s?Dk(l,s.stateVar):void 0,f=s.options.map(Uk),p=i?Wk(a):1/0,m=Uk(`✕`)+1,h=Uk(`←`)+1+Uk(`→`)+1,g=Kk(f,p,m),_=g.length>1?Kk(f,p,m+h):g,v=parseInt(Dk(l,t.stateVar),10),y=Number.isInteger(v)?Math.max(0,Math.min(v,_.length-1)):0,b=_[y]??[],x=e=>Lw([{verb:hw,args:[u,t.key,String(e)]}]),S=n.flatMap(([e,t])=>[e,t]),C=Lw([{verb:hw,args:[u,...S]}]),ee=r?[{verb:hw,args:[u,...S]}]:[],te=e=>Lw([...jk(c,e,e,l,u).effects,...ee]),ne=[kk(`✕`,C,!1)];y>0&&ne.push(kk(`←`,x(y-1),!1));for(let e of b){let t=s.options[e];ne.push(kk(t,te(t),t===d,o({index:e,count:s.options.length},t)))}return y<_.length-1&&ne.push(kk(`→`,x(y+1),!1)),qk(ne,i)}function Zk(e,t){return{picker:{fn:(n,r,i,a)=>{let o=Jk(e,r,`set-int`,`an int action ({ set, int: true })`);return Xk(n,{key:o.key,stateVar:o.stateVar},[[o.key,`-1`]],i===!0,a===!0,e,Rk(Hk(t,`{{ picker }}`),Ri(void 0),e.basePalette,Yk(e,n,`picker`).paletteOf,t.drawnAt()))},argTypes:[`string`,`string`,`bool`,`bool`],returnType:`T`}}}function Qk(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+Uk(e(-(s+1)))+1+Uk(e(s+1))+1;if(t>r)break;o=t,s+=1}return s}function $k(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=Dk(a,`session.id`),{options:c}=t,l=c.length,u=Dk(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=Lw(jk(o,p(e),p(e),a,s).effects);return m.set(e,n),n},g=e=>kk(p(e),h(e),p(e)===u,r({index:f(e),count:l},p(e))),_=Qk(p,l,Uk(`◀`)+1+Uk(p(0))+1+Uk(`▶`),Gk(n),i),v=e=>Array.from({length:_},(t,n)=>g(e*(n+1)));return qk([...v(-1).reverse(),kk(`◀`,h(-1),!1),g(0),kk(`▶`,h(1),!1),...v(1)],!0)}function eA(e,t){return{carousel:{fn:(n,r,...i)=>{if(i.length>0)throw Error(`carousel "${n}": takes at most one neighbours count after the action name, got ${1+i.length}`);if(r!==void 0&&!(Number.isInteger(r)&&r>=0))throw Error(`carousel "${n}": neighbours must be a whole number ≥ 0 (0 shows only ◀ CURRENT ▶), got ${String(r)}`);let a=r??1/0,o=Yk(e,n,`carousel`);return $k(n,o,e,Rk(Hk(t,`{{ carousel }}`),Ri(void 0),e.basePalette,o.paletteOf,t.drawnAt()),a)},argTypes:[`string`,`float`],returnType:`T`}}}const tA=[`~/code`,`main`,`opus`,`42%`,`5m`,`$1.20`];function nA(e,t,n){let r=oa(e,{hue:ji,depth:0},n);return[H(t).map((t,n)=>({text:tA[n%tA.length],colour:Gi(e,t)})),[{text:`▾ open`,colour:r.state},{text:`menu`,colour:r.plane}],[{text:`warn`,colour:Wi(e,`warning`)},{text:`error`,colour:Wi(e,`error`)}]]}function rA(e,t,n,r){let i=nA(e,t,n).flatMap((t,r)=>t.map(({text:t,colour:i},a)=>({gap:r>0&&a===0?` `:``,cell:new V(` ${t} `,{style:Ik(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 V(e)),a.push(t)}let s=V.fromFragments(a);return s.noWrap=!0,s.end=``,s}function iA(e,t){return{themePreview:{fn:()=>rA(e.palette,e.progression,t.drawnAt(),Gk(e)),argTypes:[],returnType:`T`}}}const aA=e=>e.slice(e.lastIndexOf(`.`)+1),oA=(e,t)=>{let n=new V(aA(e));return n.truncate(t,{marker:`…`}),n.plain};function sA(e,t){let n=e.map(e=>e.map(({name:e})=>Uk(aA(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 cA(e,t,n,r){let i=sA(e,r),a=e.map(e=>{let a=[],o=0;for(let{name:s,address:c,palette:l}of e){let e=new V(` ${oA(s,i)} `,{style:Ik(l,_a(l,{kind:`bar`,progression:t,address:c},n).tint,n)});if(o+=e.cellLength,o>r)break;a.push(e)}return a}),o=V.fromFragments(a.flatMap((e,t)=>t===0?e:[new V(`
182
- `),...e]));return o.noWrap=!0,o.end=``,o}function lA(e,t){return{layoutPreview:{fn:()=>cA(e.layout(),e.progression,t.drawnAt(),Gk(e)),argTypes:[],returnType:`T`}}}function uA(e,t,n,r){let i=Hk(r.activeSegment,`{{ menu }}`),a=r.action,o=og(i.placementId,e,n.key),s=lg(o),c=ag(e),l=Dk(a.store,o)===c,u=Dk(a.store,`session.id`),d=l?ic:c,f=kk(sc(`{{ menu "${e}" }}`,t,2,+!!l),Lw([{verb:hw,args:[u,o,d,s,`0`]}]),!1);return i.drops.push(...l?[Xk(e,{key:s,stateVar:s},[[o,ic],[s,`0`]],n.closeOnPick,n.paged,a,Rk(i,n.distribution,a.basePalette,Yk(a,e,`menu`).paletteOf,r.activeSegment.drawnAt()))]:[]),f}const dA=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function fA(e,t){let n=t[t.length-1],r=dA(n)?n:void 0,i=r===void 0?t:t.slice(0,-1),a=i.findIndex(e=>typeof e!=`string`);if(a!==-1)throw Error(`{{ menu "${e}" }} display #${a+1} is not text (${JSON.stringify(i[a])}) — a menu binds its trigger text, then an optional trailing (dict …) of options`);return{displays:i,options:pg(r??{})}}function pA(e){return{menu:{fn:(t,...n)=>{let{displays:r,options:i}=fA(t,n);return uA(t,r,i,e)},argTypes:[`string`,`value`],returnType:`T`}}}function mA(e){let{value:t,max:n,width:r,filled:i,empty:a,colourAt:o}=e,s=hA(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 V(t?i:a,{style:l===void 0?void 0:new z({color:l})}))}let l=V.fromFragments(c);return l.end=``,l.noWrap=!0,l}function hA(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 gA(e){let t={fn:(()=>{let t=Hk(e,`{{ bgOf }}`);if(t.bg===void 0)throw Error(`{{ bgOf }} is not available while segments.${t.segName}'s own "bg:" is being evaluated — the background is what that template computes. Reach for a palette color there instead, e.g. bg: '{{ darken (color "surface") 1 }}'.`);return t.bg.hex}),argTypes:[],returnType:`string`},n={fn:(()=>Hk(e,`{{ tint }}`).tint.hex),argTypes:[],returnType:`string`},r=R_(()=>Hk(e,`{{ color }} / {{ ramp }} / {{ gauge }}`).palette),i={fn:((e,t,n,i,a,o,...s)=>mA({value:e,max:t,width:n,filled:i,empty:a,colourAt:o===void 0||s.length===0?void 0:e=>String(r.ramp.fn(e,o,..._A(s)))})),argTypes:[`float`,`float`,`int`,`string`,`string`,`string`,`string`],returnType:`T`};return{...r,bgOf:t,tint:n,gauge:i}}function _A(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 vA(e){let t=[],n=[];for(let r of e){if(!r.contains(`
170
+ Tip: every bar carries a settings menu — click it (${lc} by\n default) for quick actions, preset switching, edit mode, and clickable\n theme/look/style/wrap/padding controls.\n`}async function zT(e){let t=e.includes(`--force`),n=e.filter(e=>e!==`--force`),r=n.length>0?n:[..._T],i=jT();process.platform===`darwin`?NT(i.distPath):process.stdout.write(`Skipping URL handler (cmd-click verbs are macOS-only).
171
+ `),BT(i.binPath,r,t),process.stdout.write(RT());let a=hT(fT,mT(aT,await pT(fT,fetch,`https://registry.npmjs.org`)));process[a.stream].write(a.text)}function BT(e,t,n,i){let a=i??oT();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,yT(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:bT(e,t)},Ae(a,JSON.stringify(o,null,2)),process.stdout.write(`Updated ${a}\n`)}function VT(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 HT(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 UT(e,n){let i=`${e}.${t.pid}.tmp`;try{return r.writeFileSync(i,JSON.stringify(n),{mode:384}),r.renameSync(i,e),null}catch(e){let t=e.message;try{r.unlinkSync(i)}catch(e){if(e.code!==`ENOENT`)return`${t}; also failed to remove temp ${i}: ${e.message}`}return t}}function WT(e,t){let n=HT(e);if(n.kind===`owned`&&n.pid===t)try{r.unlinkSync(e)}catch{}}function GT(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 KT(e,t,n,r){let i=qT(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 qT(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 JT(e){let t=!1;function n(){let n=KT(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 YT(e,t=De){let n=t({bin:`ps`,args:[`-o`,`lstart=`,`-p`,String(e)],category:`process-fingerprint`,timeoutMs:2e3,env:{...process.env,LC_ALL:`C`,TZ:`UTC`}});if(n.ok){let e=n.stdout.trim();return e.length>0?{kind:`start`,token:e}:{kind:`unavailable`,detail:`ps produced no start-time`}}return{kind:`unavailable`,detail:n.reason===`spawn-error`?n.error??`ps spawn failed`:`ps ${n.reason} (exit ${n.exitCode})`}}function XT(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 ZT(e,t=YT){let n=t(e);return n.kind===`start`?n.token:null}const QT=`CC_CANDYBAR_PARENT_PID`;function $T(e){let t=e[QT];if(t===void 0)return{kind:`outlives-nobody`};let n=Number.parseInt(t,10);if(!Number.isInteger(n)||n<=0)throw Error(`${QT} must be a positive integer pid, got ${JSON.stringify(t)}`);return{kind:`anchored`,pid:n}}function eE(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 tE(e){try{return t.kill(e,0),!0}catch(e){return e.code===`EPERM`}}function nE(){let e=Number(process.env.CC_CANDYBAR_DAEMON_CEILING??``);return Number.isInteger(e)&&e>0?e:16}function rE(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 iE(e){try{return r.readdirSync(e).filter(e=>e.endsWith(`.json`)).map(t=>c.join(e,t))}catch{return[]}}function aE(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 oE(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 sE(e){if(!e.isolated)return{decision:rE(!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=rE(!0,oE(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 cE(e,t,n,r){let i=n(e);if(i!==null&&i.pid===t)try{r(e)}catch{}}function lE(e,t={}){return{isolated:!!process.env.CC_CANDYBAR_SOCKET,registryDir:Ve(),ceiling:nE(),pid:process.pid,startTime:e,isSameLiveProcess:(e,t)=>XT(e,t,{readStartTime:YT,pidAlive:tE}),listFiles:iE,readEntry:aE,removeFile:e=>{try{r.unlinkSync(e)}catch{}},writeEntry:(e,t)=>{let n=`${e}.${t.pid}.tmp`;try{r.writeFileSync(n,JSON.stringify(t),{mode:384}),r.renameSync(n,e)}catch(e){try{r.unlinkSync(n)}catch(e){e.code}throw e}},ensureDirSafe:process.env.CC_CANDYBAR_DAEMON_REGISTRY_DIR?Fe:e=>{Fe(c.dirname(e)),Fe(e)},...t}}function uE(e){return e<32||e===127||e>=128&&e<=159}function dE(e){let t=``;for(let n of e)t+=uE(n.codePointAt(0)??0)?` `:n;return t.replace(/\s+/g,` `).trim()}function fE(e,t){let n=dE(e),r=``,i=0;for(let e of n){if(i===t)return r.replace(/.$/u,`…`);r+=e,i++}return r}const pE=`\x1B[38;2;255;255;255m`,mE=`\x1B[48;2;200;40;40m`;function hE(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 gE={fg:hE(pE),bg:hE(mE)},_E={fg:hE(`\x1B[38;2;0;0;0m`),bg:hE(`\x1B[48;2;220;160;40m`)},vE={unicode:gi,ascii:{glyph:`>`,divider:`|`,lead:`<`,tail:`>`}},yE={unicode:{},ascii:{left:`(`,right:`)`}};function bE(e,t,n){switch(e){case`capsule`:return new vi(yE[t]);case`plain`:return new yi(n===void 0?{}:{separator:n});case`powerline`:return new _i(vE[t]);default:return e}}const xE=new Map;function SE(e){let t=JSON.stringify([e.style,e.charset,e.separator??null]),n=xE.get(t);if(n!==void 0)return n;let r=bE(e.style,e.charset,e.separator),i=e=>new V(`x`,{end:``,noWrap:!0,style:new z({bgcolor:e})}),a=e=>new V(Si(new si(e,r),{colorSystem:null}).replace(/\n$/,``)).cellLength,o=a([i(`#101010`)]),s={chrome:o-1,seam:a([i(`#101010`),i(`#202020`)])-o-1};return xE.set(t,s),s}function CE(e){return SE(e).chrome}function wE(e){return SE(e).seam}function TE(e,t){if(e.length===0)return``;let n=bE(t.style,t.charset,t.separator),r=t.colorCompatibility,i=t.wrap&&Number.isFinite(t.width)?Si(new Oi([...e],{joiner:n}),{width:t.width,colorSystem:r}):Si(new si([...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 EE(e){return Math.min(20,e??20)}const DE={heading:`ERROR`,glyph:`⚠`,colors:gE},OE={heading:`WARNING`,glyph:`⚠`,colors:_E},kE={heading:`UPDATE`,glyph:`⬆`,colors:_E};function AE(e,t){return{text:dE(e),link:t}}function jE(e,t,n){let[r,...i]=[ME(e,DE,Fw),t,ME(n,OE,Iw)].flat();return r===void 0?null:{channels:[r,...i]}}function ME(e,t,n){let r=$w([{verb:n,args:[e]}]),[i,...a]=e.split(/\r\n|\r|\n/).map(e=>AE(e,r)).filter(e=>e.text!==``).map(e=>[e]);return i===void 0?[]:[{severity:t,message:e,lines:[i,...a]}]}function NE(e){return e.channels.map(e=>`${e.severity.heading}\n${e.message}\n`).join(`
173
+ `)}function PE(e,t,n,r){if(t===null)return e;let i=FE(r),a=t.channels.flatMap(e=>IE(e,i)),o=n.failedConfigFile!==null||a.length>r.rowCap,s=a.slice(0,r.rowCap-Number(o)),c=o?[LE(t,n,a.length-s.length,i)]:[],l=[...s,...c].join(`
174
+ `);return e?`${l}\n${e}`:l}function FE(e){return{style:`plain`,separator:``,width:e.width,wrap:!0,padding:0,charset:`unicode`,colorCompatibility:e.colorCompatibility}}function IE(e,t){let n=new z({bgcolor:e.severity.colors.bg,color:e.severity.colors.fg}),r=Rt(Math.max(2,t.width-1)),i=(e,t)=>new V(`${e} `,{style:t,end:``,noWrap:!0});return e.lines.flatMap((a,o)=>TE([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 LE(e,t,n,r){let{colors:i}=e.channels[0].severity,{fullText:a,failedConfigFile:o}=t,s=new z({bgcolor:i.bg,color:i.fg}),c=(e,t)=>new V(e,{style:t,end:``,noWrap:!0}),l=n>0?[c(`${n} more rows · `,s),a.kind===`file`?c(`open full text`,s.withLink(re(a.path).href)):c(`full text unavailable: ${dE(a.reason)}`,s)]:[],u=o===null?[]:[c(`${l.length>0?` · `:``}open `,s),c(dE(o),s.withLink(re(o).href))],d=[c(`↳ `,s),...l,...u.slice(0,-1)],f=d.reduce((e,t)=>e+t.cellLength,0),p=u.slice(-1).map(e=>e.truncate(Math.max(1,r.width-f),{mode:`middle`})),m=V.fromFragments([...d,...p]).truncate(r.width);return m.noWrap=!0,TE([m],r)}const RE=e=>!e.startsWith(`.`)&&!e.endsWith(`~`);function zE(e,t){return t.isSymbolicLink()?Buffer.from(r.readlinkSync(e)):r.readFileSync(e)}function BE(e,t){return r.readdirSync(t).filter(RE).sort().flatMap(n=>{let i=c.join(t,n),a=r.lstatSync(i,{throwIfNoEntry:!1});return a===void 0?[]:a.isDirectory()?BE(e,i):[[c.relative(e,i).split(c.sep).join(`/`),zE(i,a)]]})}function VE(e){let t=ae.createHash(`sha256`);for(let[n,r]of BE(e,e))t.update(n).update(`\0`).update(r).update(`\0`);return t.digest(`hex`)}const HE=e=>e.slice(0,7);function UE(e){return c.dirname(c.dirname(e))}function WE(){return{version:aT,digest:`abf366e83d142812351e0194a6515393e2919d434d79a41b38744813742ebb53`}}function GE(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 KE(e,t){try{let n=UE(ne(e)),i=c.join(n,`src`);if(!r.existsSync(i))return{kind:`not-source-checkout`};let a=t(),o=VE(i);return o===a.digest?{kind:`current`,root:n,stamp:a}:{kind:`stale`,root:n,source:{version:GE(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 qE(e){return e.op===`remove`?`remove:${e.target}`:`insert:${e.segment}:${e.anchor}:${e.relation}`}function JE(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 YE(e,t,n){let r=ns(e,new Set(n.map(ts).filter(e=>e.includes(t)).flat()));return r===e?{seg:e}:{seg:e,id:r}}const XE=/^-?\d+$/;function ZE(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 QE(e){return t=>{if(!t)return{ok:!1,reason:`${e} value is required`};if(!XE.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 $E(e,t,n){return r=>r?XE.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 eD(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=>!XE.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 tD(e){return e===`config`?`set-config`:`set-state`}function nD(e,t,n){return t.kind===`int`?QE(`menu page "${e}"`):t.kind===`range`?$E(t.min,t.max,`${n} stepper "${e}"`):ZE(t.allowed,`${n} "${e}"`,tD(n))}function rD(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:eD(e,n,t)}))}function iD(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=eD(e,[...a.specs,i],t);a.specs.push(i),a.merged=n,a.validator=nD(e,n,t)}else{let r=eD(e,[i],t);n.set(e,{permanent:!1,specs:[i],merged:r,validator:nD(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=eD(e,r.specs,t),r.validator=nD(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 aD=iD({},`config`);function oD(){return aD.listKeys()}function sD(e,t){return aD.validate(e,t)}function cD(e){return aD.rangeParamsFor(e)}function lD(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:BS(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:[qE({op:`remove`,target:e.removeSegment})]}}]:`insertSegment`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:[qE({op:`insert`,segment:e.insertSegment,anchor:e.anchor,relation:e.relation})]}}]:`insertSegmentFrom`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:BS(e.insertSegmentFrom,t).members.map(t=>qE({op:`insert`,segment:t,anchor:e.anchor,relation:e.relation}))}}]:[{key:e.persist,spec:{kind:`range`,min:e.min,max:e.max}}]:[]}function uD(e,t){let n=Vc(e.globals).get(t);return n===void 0?null:String(n)}function dD(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?ky(n.persist):null;e?.scope===`preset-root`&&t.add(Dy(e.preset))}return[...t].map(e=>({key:e,spec:{kind:`allow-list`,allowed:[]}}))}function fD(e){let t=new Map([...RS(e),...qy(e)]);return[...dD(e),...Object.values(e.actions).flatMap(e=>lD(e,t))]}function pD(e){return rD(fD(e),`config`)}function mD(e,t){return aD.register(e,t)}const hD=`trimPrefix "/" (trimPrefix .project_dir .current_dir)`,gD=`{{ \$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 (${hD}) (basename .project_dir) (ne (${hD}) "") }}{{ end }}{{ end }}{{ abbreviatePath \$dir }}`,_D={globals:{palette:`tokyo-night`},variables:{...gy,current_dir:{kind:`input`,path:`workspace.current_dir`,default:`?`},"model.display_name":{kind:`input`,path:`model.display_name`,default:``},version:{kind:`input`,path:`version`,default:``},home:{kind:`input`,path:`home`,default:``},"tmux.session":{kind:`input`,path:`tmux.session`,default:``},"host.name":{kind:`input`,path:`host.name`,default:``},"host.user":{kind:`input`,path:`host.user`,default:``},"host.ssh":{kind:`input`,path:`host.ssh`,type:`boolean`,default:!1},"git.repoName":{kind:`input`,path:`git.repoName`,default:``},"git.branch":{kind:`input`,path:`git.branch`,default:``},"git.sha":{kind:`input`,path:`git.sha`,default:``},"git.ahead":{kind:`input`,path:`git.ahead`,type:`number`,default:0},"git.behind":{kind:`input`,path:`git.behind`,type:`number`,default:0},"git.staged":{kind:`input`,path:`git.staged`,type:`number`,default:0},"git.unstaged":{kind:`input`,path:`git.unstaged`,type:`number`,default:0},"git.untracked":{kind:`input`,path:`git.untracked`,type:`number`,default:0},"git.conflicts":{kind:`input`,path:`git.conflicts`,type:`number`,default:0},"git.upstream":{kind:`input`,path:`git.upstream`,default:``},"git.stash":{kind:`input`,path:`git.stash`,type:`number`,default:0},"git.status":{kind:`input`,path:`git.status`,default:`clean`},"git.operation":{kind:`input`,path:`git.operation`,default:``},"git.timeSinceCommit":{kind:`input`,path:`git.timeSinceCommit`,type:`number`,default:0},"git.color.branch":{kind:`literal`,value:`primary`},"git.color.staged":{kind:`literal`,value:`success`},"git.color.unstaged":{kind:`literal`,value:`warning`},"git.color.untracked":{kind:`literal`,value:`accent`},"git.color.conflicts":{kind:`literal`,value:`error`},"git.color.ahead":{kind:`literal`,value:`success`},"git.color.behind":{kind:`literal`,value:`warning`},"git.color.stash":{kind:`literal`,value:`accent`},"git.detail":{kind:`state`,key:`git-detail`,default:`collapsed`},"git.prNumber":{kind:`input`,path:`git.prNumber`,type:`number`,default:0},"git.prState":{kind:`input`,path:`git.prState`,default:``},"git.prUrl":{kind:`input`,path:`git.prUrl`,default:``},"git.prError":{kind:`input`,path:`git.prError`,default:``},"cache.expiresAt":{kind:`input`,path:`cache.expiresAt`,type:`number`,default:0},"session.cost":{kind:`input`,path:`session.cost`,type:`number`,default:0},"session.tokens":{kind:`input`,path:`session.tokens`,type:`number`,default:0},"session.budget.amount":{kind:`literal`,value:0},"session.budget.warningThreshold":{kind:`literal`,value:80},"today.cost":{kind:`input`,path:`today.cost`,type:`number`,default:0},"today.tokens":{kind:`input`,path:`today.tokens`,type:`number`,default:0},"today.budget.amount":{kind:`literal`,value:50},"today.budget.warningThreshold":{kind:`literal`,value:80},"block.nativeUtilization":{kind:`input`,path:`block.nativeUtilization`,type:`number`,default:0},"block.resetsAt":{kind:`input`,path:`block.resetsAt`,type:`number`,default:0},"block.budget.warningThreshold":{kind:`literal`,value:80},"block.budget.heatThreshold":{kind:`literal`,value:50},"weekly.percentage":{kind:`input`,path:`weekly.percentage`,type:`number`,default:0},"weekly.resetsAt":{kind:`input`,path:`weekly.resetsAt`,type:`number`,default:0},"weekly.budget.warningThreshold":{kind:`literal`,value:80},"weekly.budget.heatThreshold":{kind:`literal`,value:50},"burn.costPerHour":{kind:`input`,path:`burn.costPerHour`,type:`number`,default:-1},"block.etaMinutes":{kind:`input`,path:`block.etaMinutes`,type:`number`,default:-1},"weekly.etaMinutes":{kind:`input`,path:`weekly.etaMinutes`,type:`number`,default:-1},"burn.eta.warnMinutes":{kind:`literal`,value:60},"burn.eta.errorMinutes":{kind:`literal`,value:30},"speed.input":{kind:`input`,path:`speed.input`,type:`number`,default:-1},"speed.output":{kind:`input`,path:`speed.output`,type:`number`,default:-1},"speed.total":{kind:`input`,path:`speed.total`,type:`number`,default:-1},"speed.history":{kind:`input`,path:`speed.history`,type:`string`,default:``},"context.totalTokens":{kind:`input`,path:`context.totalTokens`,type:`number`,default:0},"context.contextLeft":{kind:`input`,path:`context.contextLeft`,type:`number`,default:100},"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:``},"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:gD},model:{description:`The active model's display name.`,template:`✱ {{ formatModelName .model.display_name }}`,when:`{{ ne .model.display_name "" }}`},sessionId:{description:`The session id, truncated to 8 characters.`,template:`⌗{{ trunc 8 .session.id }}`,when:`{{ ne .session.id "" }}`},version:{description:`The Claude Code version reported in the hook payload.`,template:`◈ v{{ .version }}`,when:`{{ ne .version "" }}`},tmux:{description:`The tmux session name; hidden when not inside tmux.`,template:`tmux:{{ .tmux.session | default "none" }}`,when:`{{ ne .tmux.session "" }}`},host:{description:`user@host on a warning background, shown only over SSH.`,template:`⇄ {{ .host.user | default "?" }}@{{ .host.name | default "?" }}`,bg:`warning`,when:`{{ .host.ssh }}`},gitaculous:{description:`The git state: a summary (branch, ahead/behind, S/U/? flags) that the arrow at its right edge expands to every fact — repo, in-progress operation, sha, upstream ±, stash count, time since the last commit.`,template:`{{ if eq .git.detail "expanded" }}{{ template "gitExpanded" . }}{{ else }}{{ template "gitCollapsed" . }}{{ end }} {{ action "gitDetail" "▸" "◂" }}`,fg:`{{ readableOn (mix (color "foreground") (bgOf) 60) (bgOf) 3 }}`,when:`{{ ne .git.branch "" }}`},gitPr:{description:"The pull request open for this branch, as a link; `⚠ PR` when the forge lookup failed.",template:`{{ if ne .git.prUrl "" }}{{ link .git.prUrl (printf "⇆ #%v" .git.prNumber) }}{{ else }}⚠ PR{{ end }}`,when:`{{ or (ne .git.prUrl "") (ne .git.prError "") }}`},toolbar:{description:`Quick actions: copy the session id, and open the project, transcript or repo.`,template:xb(``).template},themeSwitcher:{description:"`◀ <theme> ▶`: the theme the bar is wearing; ◀ and ▶ switch this session to the previous or next theme, wrapping at the ends.",template:`{{ carousel "stepTheme" 0 }}`},session:{description:`This session's cost and token total, with a budget warning once a budget is configured.`,template:`§ {{ template "formatCost" .session.cost }} ({{ template "formatTokens" .session.tokens }}){{ template "budgetStatus" (dict "cost" .session.cost "budget" .session.budget.amount "warn" .session.budget.warningThreshold) }}`},today:{description:`Today's cost and tokens across every session, with a budget warning once a budget is configured.`,template:`☉ {{ template "formatCost" .today.cost }} ({{ template "formatTokens" .today.tokens }}){{ template "budgetStatus" (dict "cost" .today.cost "budget" .today.budget.amount "warn" .today.budget.warningThreshold) }}`},block:{description:`The 5-hour rate-limit block: percent used and time to reset, heating to warning then error.`,template:`◱ {{ round .block.nativeUtilization }}% ({{ template "formatResetCountdown" .block.resetsAt }})`,bg:`{{ ramp (round .block.nativeUtilization) "step" 0 (tint) .block.budget.heatThreshold "warning" .block.budget.warningThreshold "error" }}`,when:`{{ gt .block.resetsAt 0 }}`},weekly:{description:`The weekly rate-limit quota: percent used and time to reset, heating to warning then error.`,template:`◑ {{ round .weekly.percentage }}% ({{ template "formatResetCountdown" .weekly.resetsAt }})`,bg:`{{ ramp (round .weekly.percentage) "step" 0 (tint) .weekly.budget.heatThreshold "warning" .weekly.budget.warningThreshold "error" }}`,when:`{{ gt .weekly.resetsAt 0 }}`},burnrate:{description:`Spend per hour, with the projected time to the 5-hour and weekly limits.`,template:`⚡ {{ template "formatRate" .burn.costPerHour }} · {{ template "formatEta" .block.etaMinutes }} to 5h · {{ template "formatEta" .weekly.etaMinutes }} to wk`,bg:`{{ ramp .block.etaMinutes "step" -1 (tint) 0 "error" .burn.eta.errorMinutes "warning" .burn.eta.warnMinutes (tint) }}`,when:`{{ or (gt .block.resetsAt 0) (gt .weekly.resetsAt 0) }}`},speed:{description:`Token throughput for the latest exchange: output, input, and total.`,template:`⇅ out {{ template "formatSpeed" .speed.output }} · in {{ template "formatSpeed" .speed.input }} · tot {{ template "formatSpeed" .speed.total }}`,when:`{{ gt .session.tokens 0 }}`},tokenSparkline:{description:`A sparkline of recent token throughput.`,template:`⚡ {{ sparkline .speed.history 24 }}`,when:`{{ ne .speed.history "" }}`},cacheTimer:{description:"Minutes until the prompt cache expires, or `cold` once it has.",template:`◴ {{ if le (minutesUntilReset .cache.expiresAt) 0 }}cold{{ else }}{{ minutesUntilReset .cache.expiresAt }}m{{ end }}`,fg:`{{ readableOn (color (cascade (minutesUntilReset .cache.expiresAt) "0:error" "9:warning" "21:foreground")) (bgOf) ${$i} }}`,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 "") }}`},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:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`activity`}]}}},actions:{...xb(``).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`}},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:`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:`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:`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) ${$i}) .text }}`,gitCollapsed:`{{ template "gitBranch" . }}{{ template "gitAheadBehind" . }}{{ template "gitFlags" . }}`,gitExpanded:`(git){{ template "gitRepo" . }}{{ template "gitOperation" . }}{{ template "gitSha" . }}{{ template "gitFlags" . }} {{ template "gitBranch" . }}{{ template "gitUpstream" . }}{{ template "gitStash" . }}{{ template "gitAge" . }}`,gitBranch:`⎇ {{ template "gitPaint" (dict "color" .git.color.branch "text" .git.branch) }}`,gitRepo:`{{ if ne .git.repoName "" }} {{ .git.repoName }}{{ end }}`,gitOperation:`{{ if ne .git.operation "" }} [{{ .git.operation }}]{{ end }}`,gitSha:`{{ if ne .git.sha "" }} {{ .git.sha }}{{ end }}`,gitFlags:`{{ if or (gt .git.staged 0) (gt .git.unstaged 0) (gt .git.untracked 0) (gt .git.conflicts 0) }} {{ if gt .git.staged 0 }}{{ template "gitPaint" (dict "color" .git.color.staged "text" "S") }}{{ end }}{{ if gt .git.unstaged 0 }}{{ template "gitPaint" (dict "color" .git.color.unstaged "text" "U") }}{{ end }}{{ if gt .git.untracked 0 }}{{ template "gitPaint" (dict "color" .git.color.untracked "text" "?") }}{{ end }}{{ if gt .git.conflicts 0 }}{{ template "gitPaint" (dict "color" .git.color.conflicts "text" (printf "!%v" .git.conflicts)) }}{{ end }}{{ end }}`,gitAheadBehind:`{{ if or (gt .git.ahead 0) (gt .git.behind 0) }} {{ if gt .git.ahead 0 }}{{ template "gitPaint" (dict "color" .git.color.ahead "text" (printf "+%v" .git.ahead)) }}{{ end }}{{ if and (gt .git.ahead 0) (gt .git.behind 0) }}/{{ end }}{{ if gt .git.behind 0 }}{{ template "gitPaint" (dict "color" .git.color.behind "text" (printf "-%v" .git.behind)) }}{{ end }}{{ end }}`,gitUpstream:`{{ if ne .git.upstream "" }} [{{ .git.upstream }}{{ template "gitAheadBehind" . }}]{{ end }}`,gitStash:`{{ if gt .git.stash 0 }} {{ template "gitPaint" (dict "color" .git.color.stash "text" (printf "(%v stashed)" .git.stash)) }}{{ end }}`,gitAge:`{{ if gt .git.timeSinceCommit 0 }} ◷ {{ template "formatTimeSince" .git.timeSinceCommit }}{{ end }}`,formatCost:'{{ if lt . 0.01 }}<$0.01{{ else }}${{ printf "%.2f" . }}{{ end }}',formatTokenCount:`{{ if ge . 1000000 }}{{ printf "%.1f" (divf . 1000000) }}M{{ else if ge . 1000 }}{{ printf "%.1f" (divf . 1000) }}K{{ else }}{{ . }}{{ end }}`,formatTokens:`{{ template "formatTokenCount" . }} tokens`,formatToolTally:`{{ $names := splitList "," . }}{{ range $i, $pair := $names }}{{ if lt $i 2 }}{{ if $i }} {{ end }}{{ $kv := splitList ":" $pair }}{{ index $kv 0 }}{{ if ne (index $kv 1) "1" }}×{{ index $kv 1 }}{{ end }}{{ end }}{{ end }}{{ if gt (len $names) 2 }} +{{ sub (len $names) 2 }}{{ end }}`,formatRate:`{{ if lt . 0 }}—/hr{{ else }}{{ template "formatCost" . }}/hr{{ end }}`,formatEta:`{{ if lt . 0 }}—{{ else }}{{ template "formatLongTimeRemaining" . }}{{ end }}`,formatSpeed:`{{ if lt . 0 }}—{{ else }}{{ template "formatTokenCount" (round .) }}/s{{ end }}`,formatTokenBreakdown:`{{ $first := true }}{{ if gt .input 0 }}{{ template "formatTokenCount" .input }} in{{ $first = false }}{{ end }}{{ if gt .output 0 }}{{ if not $first }} + {{ end }}{{ template "formatTokenCount" .output }} out{{ $first = false }}{{ end }}{{ if or (gt .cacheCreation 0) (gt .cacheRead 0) }}{{ if not $first }} + {{ end }}{{ template "formatTokenCount" (add .cacheCreation .cacheRead) }} cached{{ $first = false }}{{ end }}{{ if $first }}0 tokens{{ end }}`,budgetStatus:`{{ if or (le .budget 0) (lt .cost 0) }}{{ else }}{{ $pct := minf 100 (mulf (divf .cost .budget) 100) }}{{ $p := printf "%.0f%%" $pct }}{{ if ge $pct .warn }} !{{ $p }}{{ else }}{{ if ge $pct 50 }} +{{ $p }}{{ else }} {{ $p }}{{ end }}{{ end }}{{ end }}`,formatTimeSince:`{{ if lt . 60 }}{{ . }}s{{ else if lt . 3600 }}{{ div . 60 }}m{{ else if lt . 86400 }}{{ div . 3600 }}h{{ else if lt . 604800 }}{{ div . 86400 }}d{{ else }}{{ div . 604800 }}w{{ end }}`,formatDuration:`{{ if lt . 60 }}{{ printf "%.0f" . }}s{{ else if lt . 3600 }}{{ printf "%.0f" (divf . 60) }}m{{ else if lt . 86400 }}{{ printf "%.1f" (divf . 3600) }}h{{ else }}{{ printf "%.1f" (divf . 86400) }}d{{ end }}`,formatResponseTime:`{{ if lt . 60 }}{{ printf "%.1f" . }}s{{ else }}{{ printf "%.1f" (divf . 60) }}m{{ end }}`,formatLongTimeRemaining:`{{ if ge . 1440 }}{{ $d := div . 1440 }}{{ $h := div (mod . 1440) 60 }}{{ if gt $h 0 }}{{ $d }}d {{ $h }}h{{ else }}{{ $d }}d{{ end }}{{ else if ge . 60 }}{{ $h := div . 60 }}{{ $m := mod . 60 }}{{ if gt $m 0 }}{{ $h }}h {{ $m }}m{{ else }}{{ $h }}h{{ end }}{{ else }}{{ . }}m{{ end }}`,formatResetCountdown:`{{ template "formatLongTimeRemaining" (add 1 (minutesUntilReset .)) }}`}},vD=new Set([_D.globals.palette,...Object.values(_D.segments).map(e=>e.palette)].filter(e=>e!==void 0)),yD=ac(hC(`<default>`,JSON.stringify(_D),vD),_D),bD=bg(yD.presets);function xD(e){return bD.includes(e)}function SD(e){if(!e)return 0;try{return o(e).mtimeMs}catch{return 0}}const CD=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 wD(e){return((...t)=>CD.run(()=>e(...t)))}const TD=wD(y),ED=wD(v),DD=wD(b);async function OD(e,t){return CD.run(async()=>{let n=null;try{n=await _(e,`r`);let{size:r,mtimeMs:i,ino:a}=await n.stat(),o=t!==void 0&&(a!==t.ino||r<t.offset),s=o||t===void 0?0:t.offset;if(s>=r)return J({buf:Buffer.alloc(0),start:s,size:r,mtimeMs:i,ino:a,reset:o});let c=Buffer.alloc(r-s),l=0;for(;l<c.length;){let{bytesRead:e}=await n.read(c,l,c.length-l,s+l);if(e===0)break;l+=e}return J({buf:l===c.length?c:c.subarray(0,l),start:s,size:r,mtimeMs:i,ino:a,reset:o})}catch(t){return t.code===`ENOENT`?Y:X(`readAppended ${e}: ${t instanceof Error?t.message:String(t)}`)}finally{await n?.close().catch(e=>{E(`transcript-fs: close failed: ${e instanceof Error?e.message:String(e)}`)})}})}async function kD(e,t){return CD.run(async()=>{let n=null;try{n=await _(e,`r`);let{size:r}=await n.stat(),i=Math.max(0,r-t),a=Buffer.alloc(r-i),o=0;for(;o<a.length;){let{bytesRead:e}=await n.read(a,o,a.length-o,i+o);if(e===0)break;o+=e}return J({buf:o===a.length?a:a.subarray(0,o),fromStart:i===0})}catch(t){return t.code===`ENOENT`?Y:X(`readTail ${e}: ${t instanceof Error?t.message:String(t)}`)}finally{await n?.close().catch(e=>{E(`transcript-fs: close failed: ${e instanceof Error?e.message:String(e)}`)})}})}const AD=/"(?:cache_read_input_tokens|cache_creation_input_tokens)":[1-9]/;function jD(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 MD(e){let t=await ND(e);return t.kind===`ok`?J(Math.floor((t.value+36e5)/1e3)):t}async function ND(e){for(let t of[65536,1048576]){let n=await kD(e,t);if(n.kind!==`ok`)return n;let r=PD(n.value.buf,n.value.fromStart);if(r!=null)return J(r);if(n.value.fromStart)return Y}return Y}function PD(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||!AD.test(t))continue;let r=jD(t);if(r!=null)return r}return null}function FD(e,t,n){let r=xg(t(`preset`),e.globals.preset,e.presets),i=wg(e,r),a=t(`edit.mode`)===`arrange`?e.editGlobals:{};return{preset:r,presetCustomized:n(r),theme:NS(a.palette,t(`theme`),i.palette),look:Ma(a.look,t(`look`),i.look,e.looks),style:Fa(a.style,t(`style`),i.style),progression:qa(a.progression,t(`progression`),i.progression),separator:a.default_separator??i.default_separator,autoWrap:eo(a.autoWrap,t(`autoWrap`),i.autoWrap),padding:to(a.padding,t(`padding`),i.padding),charset:za(a.charset,t(`charset`),i.charset),updateNotice:a.updateNotice??i.updateNotice??!0,colorCompatibility:Ua(a.colorCompatibility,t(`colorCompatibility`),i.colorCompatibility)}}function ID(e,t){return{style:e.style,separator:e.separator,colorCompatibility:e.colorCompatibility,wrap:e.autoWrap,padding:e.padding,charset:e.charset,width:t}}function LD(e){return{theme:e.theme,look:e.look,preset:e.preset,progression:e.progression}}function RD(e){return{preset:{effective:e.preset,customized:e.presetCustomized,bundled:xD(e.preset)},style:{effective:e.style},progression:{effective:e.progression},charset:{effective:e.charset},colorCompatibility:{effective:e.colorCompatibility},autoWrap:{effective:e.autoWrap},padding:{effective:e.padding}}}const zD=10*1e3;function BD(e,t,n,r){let i=n-(t*1e3-r);if(i<3e5||e<=0)return;let a=e/i,o=(100-e)/a;return Math.max(0,Math.round(o/6e4))}function VD(e,t){if(!(t<60))return e*3600/t}function HD(e,t,n,r){let i=r-t;if(i<50||i>zD)return;let a=n-e;if(!(a<=0))return a*1e3/i}function UD(e){let{prev:t,cur:n}=e;if(t===void 0)return;let r=HD(t.input,t.atMs,n.input,n.atMs),i=HD(t.output,t.atMs,n.output,n.atMs),a=HD(t.total,t.atMs,n.total,n.atMs);if(!(r===void 0&&i===void 0&&a===void 0))return{...r!==void 0&&{input:r},...i!==void 0&&{output:i},...a!==void 0&&{total:a}}}function WD(e){let{samples:t}=e,n=[];for(let e=1;e<t.length;e++){let r=t[e-1],i=t[e],a=i.atMs-r.atMs;if(a<50||a>zD)continue;let o=HD(r.total,r.atMs,i.total,i.atMs);n.push(o??0)}if(n.length!==0)return n.join(`,`)}function GD(e){let t=e.indexOf(`.`);return t<0?e:e.slice(0,t)}function KD(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`,()=>GD(f.hostname())),i=n(`user`,()=>f.userInfo().username);return{host:{...r!==void 0&&{name:r},...i!==void 0&&{user:i},...e.ssh!==void 0&&{ssh:e.ssh}},failures:t}}function qD(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=>a_(t,e.helpers).keys();for(let n of is(Cg(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 YD(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 JD(e){let t=new Map;return n=>{let r=t.get(n);if(r!==void 0)return r;let i=qD(e,n);return t.set(n,i),i}}function YD(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 XD(e,t){for(let n of e)if(n===t||n.startsWith(t+`.`))return!0;return!1}function ZD(e){let t=t=>e.has(t),n=t(`git.staged`)||t(`git.unstaged`)||t(`git.untracked`)||t(`git.conflicts`);return{...t(`git.sha`)&&{showSha:!0},...n&&{showWorkingTree:!0},...t(`git.stash`)&&{showStashCount:!0},...t(`git.upstream`)&&{showUpstream:!0},...t(`git.repoName`)&&{showRepoName:!0},...t(`git.repoUrl`)&&{showRepoUrl:!0},...t(`git.operation`)&&{showOperation:!0},...t(`git.timeSinceCommit`)&&{showTimeSinceCommit:!0},...(t(`git.prNumber`)||t(`git.prState`)||t(`git.prUrl`)||t(`git.prError`))&&{showPullRequest:!0}}}async function QD(e,t,n,r,i,a,o){let s=e=>XD(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]=await Promise.all([l(`git`,s(`git`),()=>t.gitProvider.getGitInfo(n??e.workspace?.current_dir,ZD(r),e.workspace?.project_dir)),l(`session`,s(`session.cost`)||s(`session.tokens`)||s(`burn`),()=>t.usageStore.getUsageInfo(e.session_id,e)),l(`today`,s(`today`),()=>t.usageStore.getTodayInfo(e)),l(`context`,s(`context`),()=>t.contextProvider.getContextInfo(e)),l(`metrics`,s(`metrics`)||s(`burn`),()=>t.metricsProvider.getMetricsInfo(e.session_id,e)),l(`activity`,s(`activity`),()=>t.activityProvider.getActivityInfo(e.session_id,e)),l(`tmux`,s(`tmux`),()=>t.tmuxService.getSessionId()),l(`cache`,s(`cache`),()=>MD(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??``}))]),b=[],x=e=>{if(e.kind===`failed`){b.push(e.reason);return}return e.kind===`ok`?e.value:void 0},S=aO(u);b.push(...S.failures);let C=KD(a);b.push(...C.failures);let ee=x(d),te=x(f),ne=x(p),re=x(m),ie=x(h),ae=x(g),w=x(_),T=eO(y);y.kind===`failed`&&b.push(`memento: ${y.reason}`);for(let e of b)t.log(`warn`,`provider fetch failed: ${e}`);let oe=e.rate_limits?.five_hour,se=e.rate_limits?.seven_day,ce=oe?BD(oe.used_percentage,oe.resets_at,18e6,c):void 0,le=se?BD(se.used_percentage,se.resets_at,6048e5,c):void 0,ue=ee?.session.cost,de=re?.sessionDuration,fe=s(`burn`)&&ue!=null&&de!=null?VD(ue,de):void 0,pe=x(v),me=pe===void 0?void 0:UD(pe),he=pe===void 0?void 0:WD(pe),ge=me!==void 0||he!==void 0?{...me,...he!==void 0&&{history:he}}:void 0,E=iO(process.env.HOME??process.env.USERPROFILE),_e=e.workspace?{...e.workspace,current_dir:iO(e.workspace.current_dir)??``,project_dir:iO(e.workspace.project_dir)??``}:e.workspace,ve=ee===void 0?void 0:rO({cost:ee.session.cost,tokens:ee.session.tokens}),ye=te===void 0?void 0:{cost:te.cost,tokens:te.tokens},be=re===void 0?void 0:rO({lastResponseTime:re.lastResponseTime,responseTime:re.responseTime,sessionDuration:re.sessionDuration,messageCount:re.messageCount,linesAdded:re.linesAdded,linesRemoved:re.linesRemoved}),xe=ie===void 0?void 0:tO(ie);return{...e,..._e!==void 0&&{workspace:_e},...E!==void 0&&{home:E},...S.git!==void 0&&{git:S.git},...ae!==void 0&&{tmux:{session:ae}},host:C.host,...RD(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`)&&oe!==void 0&&{block:{nativeUtilization:oe.used_percentage,resetsAt:oe.resets_at,...ce!==void 0&&{etaMinutes:ce}}},...se!==void 0&&{weekly:{percentage:se.used_percentage,resetsAt:se.resets_at,...le!==void 0&&{etaMinutes:le}}},...w!==void 0&&{cache:{expiresAt:w}},...ne!==void 0&&{context:{totalTokens:ne.totalTokens,contextLeft:ne.contextLeftPercentage}},...be!==void 0&&{metrics:be},...xe!==void 0&&{activity:xe},...T!==void 0&&{memento:T}}}const $D=e=>e.trim().split(`
177
+ `).at(-1).trim();function eO(e){switch(e.kind){case`absent`:return;case`failed`:return{error:$D(e.reason)};case`ok`:{let{ceiling:t,session:n}=e.value;return{ceiling:t===`off`?0:t,off:t===`off`,session:n??``}}}}function tO(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=nO(e.running),i=nO(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 nO(e){return e.length===0?void 0:e.map(e=>`${e.name}:${e.count}`).join(`,`)}function rO(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 iO(e){return e===void 0||e.length===0||c.sep!==`\\`?e:e.replace(/\\/g,`/`)}function aO(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 oO={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?Ja:Ya,padding:e=>String(e.padding)},sO=Object.entries(_y),cO=new Set(vy.map(e=>e.sessionKey)),lO=()=>!1;function uO(e,t){return FD(e,e=>cO.has(e)?t(e):null,lO)}function dO(e,t,n,r){return e.flatMap(([e,i])=>{let a=oO[e](t);return a===null||a===oO[e](n(e))?[]:[{...i,value:a,target:r(i)}]})}function fO(e,t,n){return oO[n](uO(e,t))}function pO(e,t){let n=uO(e,t),r=FD(e,()=>null,lO),i=FD(e,e=>e===_y.preset.sessionKey?n.preset:null,lO),a=Sg(e.presets,n.preset).globals??{};return dO(sO,n,e=>e===`preset`?r:i,e=>e.configKey in a?Oy(n.preset,e.configKey):e.configKey)}function mO(e,t){let{preset:n}=uO(e,t);return gO(e,n).flatMap(({id:e,setting:r,key:i,decl:a,saved:o})=>{let s=t(i),c=s===null?void 0:gs(a,s);return c===void 0||hs(c)===hs(o)?[]:[{preset:n,id:e,setting:r,key:i,value:c}]})}const hO=new WeakMap;function gO(e,t){let n=hO.get(e)??new Map;hO.set(e,n);let r=n.get(t);if(r!==void 0)return r;let i=[...is(Cg(e,t).node)].flatMap(t=>t.kind!==`segment`||t.drafts===void 0?[]:Object.entries(t.drafts).map(([n,{key:r}])=>{let i=e.segments[t.name].settings[n];return{id:es(t),setting:n,key:r,decl:i,saved:t.settings?.[n]??i.default}}));return n.set(t,i),i}function _O(e,t){let n=uO(e,t),r=FD(e,e=>e===_y.preset.sessionKey?n.preset:null,lO);return{from:n.preset,globals:Sg(e.presets,n.preset).globals??{},picks:dO(sO.filter(([e])=>e!==`preset`),n,()=>r,e=>e.configKey),placements:mO(e,t)}}function vO(e){return{sessionKeys:vy.filter(t=>t.configKey===e).map(e=>e.sessionKey),fileKeys:[e,...jc(e)?bD.map(t=>Oy(t,e)):[]]}}const yO=Ca(),bO=new Set(yO),xO=new Set(Na),SO=e=>e?bO.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown theme "${e}" (have: ${yO.join(`, `)})`}:{ok:!1,reason:`theme name is required`},CO=e=>e?xO.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown style "${e}" (have: ${Na.join(`, `)})`}:{ok:!1,reason:`style name is required`},wO=new Set([`1`,`true`]),TO=new Set([`0`,`false`]),EO=iD({style:CO,theme:SO,"toolbar-expanded":e=>wO.has(e)?{ok:!0,value:`1`}:TO.has(e)?{ok:!0,value:``}:{ok:!1,reason:`expected boolean-ish (1, 0, true, false), got "${e}"`}});function DO(){return EO.listKeys()}function OO(e,t){return EO.register(e,t)}function kO(e,t){return EO.validate(e,t)}function AO(e){return EO.rangeParamsFor(e)}function jO(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:BS(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 MO(e){let t=new Set(EO.listBaselineKeys());return e.filter(e=>e.spec.kind!==`allow-list`||!t.has(e.key))}function NO(e,t,n){let r=xy.get(n);if(r!==void 0)return fO(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 PO(e){let t=RS(e);return MO(Object.values(e.actions).flatMap(e=>jO(e,t)))}function FO(e){return rD(PO(e))}const IO=`update.dismissed`,LO=`updateNotice`;function RO(e){return e.kind===`source`?e.newer.digest:uT(e.newer)}const zO=e=>`${e.version} [${HE(e.digest)}]`;function BO(e){switch(e.kind){case`source`:return{headline:`Newer source`,newer:zO(e.newer),running:zO(e.running),act:`rebuild`,busy:`rebuilding…`,command:{bin:`pnpm`,args:[`build`],cwd:e.root}};case`release`:return{headline:`Newer release`,newer:uT(e.newer),running:uT(e.running),act:`upgrade`,busy:`upgrading…`,command:{bin:`pnpm`,args:[`dlx`,`${fT}@${uT(e.newer)}`,`install`]}}}}const VO={kind:`idle`},HO={kind:`running`};function UO(e,t,n){if(e===null)return[];let r=RO(e);if(!n.enabled||n.dismissed===r)return[];let i=BO(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=$w([{verb:Iw,args:[s]}]),l=t.kind===`running`?AE(`[${i.busy}]`,c):AE(`[${i.act}]`,$w([{verb:Kw,args:[n.sessionId]}]));return[{severity:kE,message:s,lines:[[AE(a,c),l,AE(`[dismiss]`,$w([{verb:Aw,args:[n.sessionId,IO,r]}])),AE(`[disable]`,$w([{verb:Lw,args:[n.sessionId,LO,`false`]}]))],...o.map(e=>[AE(e,c)])]}]}function WO(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 GO(e){switch(e.kind){case`current`:return[`info`,`build: current ${zO(e.stamp)}`];case`stale`:return[`info`,`build: stale — source ${zO(e.source)}, running ${zO(e.running)}`];case`not-source-checkout`:return[`info`,`build: not a source checkout`];case`unchecked`:return[`warn`,`build: unchecked: ${e.reason}`]}}function KO(e){switch(e.kind){case`current`:return[`info`,`release: current ${uT(e.installed)}`];case`stale`:return[`info`,`release: stale — latest ${uT(e.latest)}, running ${uT(e.installed)}`];case`ahead`:return[`info`,`release: ahead — running ${uT(e.installed)}, latest ${uT(e.latest)}`];case`unchecked`:return[`warn`,`release: unchecked: ${e.reason}`]}}function qO(e){let t=null;return([n,r])=>{r!==t&&(t=r,e(n,r))}}const JO=e=>e.split(/\r?\n/).map(e=>e.trim()).filter(e=>e!==``).at(-1);function YO(e){let t=e.exitCode===null?``:` (exit ${e.exitCode})`,n=JO(e.stderr)??e.error??JO(e.stdout)??`no output`;return`${e.reason}${t}: ${n}`}function XO(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=VO,d=null,f=qO(s),p=qO(s),m=()=>WO(c,l);function h(){let e=m(),t=e===null?null:RO(e);(d===null?null:d.identity)!==t&&(d?.dispose(),d=t===null?null:{identity:t,dispose:OO(IO,{kind:`allow-list`,allowed:[t]})})}function g(){c=KE(t,WE),f(GO(c)),h()}async function _(){l=mT(aT,await pT(fT,a,i)),p(KO(l)),h()}return{arm(){mD(LO,{kind:`allow-list`,allowed:[`false`]}),g(),setInterval(g,n).unref(),c.kind===`not-source-checkout`&&(_(),setInterval(()=>void _(),r).unref())},notice:e=>UO(m(),u,e),act(){let e=m();if(e===null)throw new $(`apply-update: nothing newer is known to apply`);let t=BO(e);if(u.kind===`running`)throw new $(`apply-update: already ${t.busy}`);u=HO,s(`info`,`apply-update: ${t.act} — ${t.command.bin} ${t.command.args?.join(` `)??``}`),Ee({...t.command,category:`update.apply`,timeoutMs:6e5}).then(n=>{if(n.ok){u=VO,s(`info`,`apply-update: ${t.act} succeeded`),g(),o();return}let r=YO(n);u={kind:`failed`,identity:RO(e),reason:r},s(`error`,`apply-update: ${t.act} failed: ${r}`)})}}}var ZO=class{static CACHE_DIR=D();static USAGE_CACHE_DIR=c.join(this.CACHE_DIR,`usage`);static LOCKS_DIR=c.join(this.CACHE_DIR,`locks`);static isLocked(e){let t=c.join(this.LOCKS_DIR,e);if(!r.existsSync(t))return!1;try{let n=r.readFileSync(t,`utf-8`),i=parseInt(n.trim(),10);if(isNaN(i))return E(`Invalid PID in lock file ${e}, removing stale lock`),r.unlinkSync(t),!1;try{return process.kill(i,0),!0}catch(n){return n.code===`ESRCH`?(E(`Removing stale lock file ${e} for dead process ${i}`),r.unlinkSync(t),!1):(E(`Error checking process ${i} for lock ${e}:`,n),!0)}}catch(t){return E(`Error reading lock file ${e}:`,t),!0}}static async acquireLock(e,t=5e3){await this.ensureCacheDirectories();let n=c.join(this.LOCKS_DIR,e),i=Date.now(),a=String(process.pid);for(;Date.now()-i<t;)try{return await r.promises.writeFile(n,a,{flag:`wx`}),E(`Lock acquired for ${e}`),!0}catch(e){if(e.code===`EEXIST`)await oe(50);else throw e}return E(`Failed to acquire lock for ${e} within ${t}ms`),!1}static async releaseLock(e){let t=c.join(this.LOCKS_DIR,e);try{await r.promises.unlink(t),E(`Lock released for ${e}`)}catch(t){t.code!==`ENOENT`&&E(`Error releasing lock for ${e}:`,t)}}static async ensureCacheDirectories(){try{await Promise.all([r.promises.mkdir(this.CACHE_DIR,{recursive:!0}),r.promises.mkdir(this.USAGE_CACHE_DIR,{recursive:!0}),r.promises.mkdir(this.LOCKS_DIR,{recursive:!0})])}catch(e){E(`Failed to create cache directories:`,e)}}static createProjectHash(e){return w(`md5`).update(e).digest(`hex`).substring(0,8)}static async getUsageCache(e,t){await this.ensureCacheDirectories();let n=c.join(this.USAGE_CACHE_DIR,`${e}.json`),i=`${e}.usage.lock`;for(let a=0;a<3;a++){if(this.isLocked(i)){E(`Cache for ${e} is locked, waiting...`),await oe(75);continue}try{let i=await r.promises.readFile(n,`utf-8`),a=JSON.parse(i);return!t||a.timestamp>=t?(E(`[CACHE-HIT] ${e} disk cache: found`),this.deserializeDates(a.data)):(E(`${e} cache outdated: cache=${a.timestamp}, latest=${t}`),null)}catch(t){if(t.code===`ENOENT`)return E(`No shared ${e} usage cache found`),null;E(`Attempt ${a+1} failed to read ${e} cache: ${t.message}. Retrying...`),await oe(75)}}return E(`Failed to read ${e} cache after 3 attempts.`),null}static deserializeDates(e){return Array.isArray(e)?e.map(e=>({...e,timestamp:new Date(e.timestamp)})):e}static async setUsageCache(e,t,n){let i=`${e}.usage.lock`;if(!await this.acquireLock(i)){E(`Could not acquire lock to set usage cache for ${e}`);return}try{await this.ensureCacheDirectories();let i=c.join(this.USAGE_CACHE_DIR,`${e}.json`),a=JSON.stringify({data:t,timestamp:n||Date.now()});await r.promises.writeFile(i,a,`utf-8`),E(`[CACHE-SET] ${e} disk cache stored`)}catch(t){E(`Failed to save ${e} usage cache:`,t)}finally{await this.releaseLock(i)}}};const QO={"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 $O=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 ZO.getUsageCache(`pricing`,e)}static async saveDiskCache(e){await ZO.setUsageCache(`pricing`,e)}static async fetchPricingData(){return new Promise(e=>{let t=new ee(this.GITHUB_PRICING_URL),n=T({hostname:t.hostname,path:t.pathname,headers:{"User-Agent":`cc-candybar`,"Cache-Control":`no-cache`},timeout:5e3},t=>{if(t.statusCode!==200){E(`HTTP ${t.statusCode}: ${t.statusMessage}`),e(null);return}let r=``,i=0;t.on(`data`,t=>{if(i+=t.length,i>1048576){E(`Response too large`),n.destroy(),e(null);return}r+=t}),t.on(`end`,()=>{try{let t=JSON.parse(r),n=t._meta,i={};for(let[e,n]of Object.entries(t))e!==`_meta`&&(i[e]=n);this.validatePricingData(i)?(E(`Fetched fresh pricing from GitHub for ${Object.keys(i).length} models`),E(`Pricing last updated: ${n?.updated||`unknown`}`),e(i)):(E(`Invalid pricing data structure`),e(null))}catch(t){E(`Failed to parse JSON:`,t),e(null)}}),t.on(`error`,t=>{E(`Response error:`,t),e(null)})});n.on(`error`,t=>{E(`Request error:`,t),e(null)}),n.on(`timeout`,()=>{E(`Request timeout`),n.destroy(),e(null)}),n.end()})}static async getCurrentPricing(){if(this.executionCache!==null)return E(`[CACHE-HIT] Pricing execution cache: ${Object.keys(this.executionCache).length} models`),this.executionCache;let e=await this.loadDiskCache();if(e)return E(`[CACHE-HIT] Pricing disk cache: ${Object.keys(e).length} models`),this.executionCache=e,E(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(e).length} models`),e;let t=await this.fetchPricingData();return t?(await this.saveDiskCache(t),E(`[CACHE-SET] Pricing disk cache stored: ${Object.keys(t).length} models`),this.executionCache=t,E(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(t).length} models`),t):(E(`[CACHE-FALLBACK] Using offline pricing data: ${Object.keys(QO).length} models`),this.executionCache=QO,E(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(QO).length} models`),QO)}static validatePricingData(e){if(!e||typeof e!=`object`)return!1;for(let[,t]of Object.entries(e)){if(!t||typeof t!=`object`)return!1;let e=t;if(typeof e.input!=`number`||typeof e.output!=`number`||typeof e.cache_read!=`number`)return!1}return!0}static async getModelPricing(e){if(this.modelPricingCache.has(e))return E(`[CACHE-HIT] Model pricing cache: ${e}`),this.modelPricingCache.get(e);let t=await this.getCurrentPricing(),n;return n=t[e]?t[e]:this.fuzzyMatchModel(e,t),this.modelPricingCache.set(e,n),E(`[CACHE-SET] Model pricing cache: ${e}`),n}static fuzzyMatchModel(e,t){let n=e.toLowerCase();for(let[e,r]of Object.entries(t))if(e.toLowerCase()===n)return r;for(let{pattern:e,fallback:r}of[{pattern:[`opus-4-6`,`claude-opus-4-6`],fallback:`claude-opus-4-6-20260205`},{pattern:[`opus-4-5`,`claude-opus-4-5`],fallback:`claude-opus-4-5-20251101`},{pattern:[`opus-4-1`,`claude-opus-4-1`],fallback:`claude-opus-4-1-20250805`},{pattern:[`opus-4`,`claude-opus-4`],fallback:`claude-opus-4-20250514`},{pattern:[`sonnet-4-6`,`sonnet-4.6`,`claude-sonnet-4-6`],fallback:`claude-sonnet-4-6`},{pattern:[`sonnet-4.5`,`4-5-sonnet`,`sonnet-4-5`],fallback:`claude-sonnet-4-5-20250929`},{pattern:[`sonnet-4`,`claude-sonnet-4`],fallback:`claude-sonnet-4-20250514`},{pattern:[`haiku-4.5`,`4-5-haiku`,`haiku-4-5`],fallback:`claude-haiku-4-5-20251001`},{pattern:[`haiku`],fallback:`claude-haiku-4-5-20251001`},{pattern:[`opus`],fallback:`claude-opus-4-20250514`},{pattern:[`sonnet`],fallback:`claude-sonnet-4-5-20250929`}])if(e.some(e=>n.includes(e))&&t[r])return t[r];return t[`claude-sonnet-4-5-20250929`]||{name:`${e} (Unknown Model)`,input:3,cache_write_5m:3.75,cache_write_1h:6,cache_read:.3,output:15}}static async calculateCostForEntry(e){let t=e.message?.usage;if(!t)return 0;let n=this.extractModelId(e),r=await this.getModelPricing(n),i=t.input_tokens||0,a=t.output_tokens||0,o=t.cache_creation_input_tokens||0,s=t.cache_read_input_tokens||0,c=i/1e6*r.input,l=a/1e6*r.output,u=s/1e6*r.cache_read,d=o/1e6*r.cache_write_5m;return c+l+d+u}static extractModelId(e){if(e.model&&typeof e.model==`string`)return e.model;let t=e.message;if(t?.model){let e=t.model;if(typeof e==`string`)return e;let n=e;return(typeof n?.id==`string`?n.id:null)||`claude-sonnet-4-5-20250929`}return e.model_id&&typeof e.model_id==`string`?e.model_id:`claude-sonnet-4-5-20250929`}};const ek=/<command-name>\s*([^<\s][^<]*?)\s*<\/command-name>/;function tk(e){if(typeof e==`string`)return ek.exec(e)?.[1]}function nk(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 rk(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=nk(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?tk(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 ik(){let e=[],t=process.env.CLAUDE_CONFIG_DIR;if(t&&t.split(`,`).forEach(t=>{let n=t.trim();a(n)&&e.push(n)}),e.length===0){let t=p(),n=d(t,`.config`,`claude`),r=d(t,`.claude`);a(n)&&e.push(n),a(r)&&e.push(r)}return e}async function ak(e){let t=[];for(let n of e){let e=d(n,`projects`);if(a(e))try{let n=await TD(e,{withFileTypes:!0});for(let r of n)if(r.isDirectory()){let n=d(e,r.name);t.push(n)}}catch(t){E(`Failed to read projects directory ${e}:`,t)}}return t}async function ok(e,t,n){let r=[],i=d(t,e,`subagents`);try{let t=(await TD(i)).filter(e=>e.startsWith(`agent-`)&&e.endsWith(`.jsonl`));for(let a of t){let t=d(i,a);if(n?.has(t)){r.push(t);continue}try{let n=(await ED(t,`utf-8`)).split(`
179
+ `)[0];n&&JSON.parse(n).sessionId===e&&r.push(t)}catch{E(`Failed to check agent file ${t}`)}}}catch(e){E(`Failed to read subagents directory ${i}:`,e)}return r}function sk(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 ck=new Map;async function lk(e){try{let t=await DD(e),n=t.size,r=ck.get(e);if(r&&r.mtime===t.mtimeMs&&r.size===n)return E(`[parse-cache] hit ${e}`),ck.delete(e),ck.set(e,r),r.entries;let i;return n>1048576?(E(`Using streaming parser for large file ${e} (${Math.round(n/1024)}KB)`),i=await mk(e)):i=await fk(e),E(`Parsed ${i.length} entries from ${e}`),n>5242880?i:(ck.delete(e),ck.size>=16&&ck.delete(ck.keys().next().value),ck.set(e,{mtime:t.mtimeMs,size:n,entries:i}),i)}catch(t){if(t.code===`ENOENT`)return E(`Transcript not present yet: ${e}`),[];throw t}}function uk(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:rk(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 dk(e){let t=[];for(let n of e.split(`
180
+ `))if(n.trim())try{let e=uk(JSON.parse(n));e&&t.push(e)}catch(e){E(`Failed to parse JSONL line: ${e}`);continue}return t}async function fk(e){return dk(await ED(e,`utf-8`))}async function pk(e,t){let n=await OD(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:dk(r.subarray(0,c+1).toString(`utf-8`)),cursor:{offset:i+c+1,mtimeMs:a,ino:o},reset:s})}async function mk(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=uk(JSON.parse(t));e&&r.push(e)}catch(e){E(`Failed to parse JSONL line: ${e}`)}}),o.on(`close`,()=>{t(r)}),o.on(`error`,t=>{E(`Streaming parser error for ${e}:`,t),n(t)}),a.on(`error`,t=>{E(`File stream error for ${e}:`,t),n(t)})})}var hk=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 gk(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 _k={cost:0,input:0,output:0,cacheCreation:0,cacheRead:0},vk={cost:null,calculatedCost:null,officialCost:null,tokens:null,tokenBreakdown:null};function yk(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function bk(){let e=new Date;return e.setHours(0,0,0,0),e.setDate(e.getDate()-1),e.getTime()}function xk(){return{input:0,output:0,cacheCreation:0,cacheRead:0}}async function Sk(e,t,n,r){let i=yk(new Date(bk())),a=e&&!t?e:void 0,o=a?.entries??0,s=a?.cost??0,c=a?{...a.breakdown}:xk(),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 $O.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=yk(new Date(e.timestamp));if(r<i)continue;let a=l.get(r)??{..._k};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 Ck(e){let t=0,n=0,r=xk(),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)??{..._k};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:vk,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 wk(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 Tk=class{entries=new Map;flight=new hk;seeded=new Map;speedRings=new Map;speedFlight=new hk;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:vk,i=t?.cost?.total_cost_usd??null;return J({session:{...r,cost:i??r.cost,officialCost:i}})}async getTodayInfo(e){let t=yk(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={..._k},i=!1;for(let e of this.entries.values()){i||=e.days.has(t);let n=e.days.get(t)??_k;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=SD(t);return this.speedFlight.run(`${e}:${r}`,async()=>{let i=await this.ingest(e,t,r);if(i.kind===`failed`)return i;let a=gk(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??SD(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 ok(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 pk(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 Sk(r,l,s,c)),e===t&&(a=c.mtimeMs)}return J({files:i,...Ck(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=bk(),n=await ak(ik()),r=[];for(let e of n){let n;try{n=await TD(e)}catch{continue}for(let i of n){if(!i.endsWith(`.jsonl`))continue;let n=d(e,i),a;try{a=(await DD(n)).mtimeMs}catch{continue}a<t||r.push({sessionId:i.slice(0,-6),path:n,mtime:a})}}await wk(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 Ek(e,t){return e===void 0?!0:e.evaluate(t).map(e=>e.plain).join(``)!==`false`}function Dk(e,t){let n=V.fromFragments(e);return n.end=``,n.noWrap=!0,t!==void 0&&!t.isNull&&(n.style=t),n}function Ok(e,t,n){e.cellLength>t?e.truncate(t,{mode:n.truncate,marker:n.truncateMarker}):e.cellLength<t&&e.align(n.justify,t)}function kk({text:e,trail:t}){if(t===void 0)return e;let n=Dk([e,t]);return n.style=e.style,n}function Ak(e,t){let{width:n,justify:r,truncate:i,truncateMarker:a=`…`,baseStyle:o,padding:s,trail:c=[]}=t;if(e.length===0)return[];let l=Dk(e,o).pad(s),u=c.length===0?{}:{trail:Dk([...c,new V(` `.repeat(s))],o)};if(n===`auto`)return[{text:l,...u}];let d={justify:r,truncate:i,truncateMarker:a};return n===`fill`?[{text:l,fill:d,...u}]:(Ok(l,n,d),[{text:l,...u}])}const jk=RegExp(`\\x1b\\[[0-9;]*m|${Yr.source}`,`g`);function Mk(e){return O(e.replace(jk,``))}function Nk(e,t){let n=e.map(kk),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=TE(n,t).split(`
181
+ `);if(i.length>1)return n;let a=Math.max(0,t.width-Mk(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];Ok(l,l.cellLength+c,i),n[t]=kk(e[t])}),n}function Pk(e,t){let n=[],r=[],i=()=>{if(!r.length)return;let e=Fk(r,t);e.plain.length>0&&n.push(e),r=[]};for(let a of e)if(Lk(a.style).link){i();let e=Fk([a],t);e.plain.length>0&&n.push(e)}else r.push(a);return i(),n}function Fk(e,t){let n=t!==void 0&&!t.isNull?e.map(e=>Ik(e,t)):e,r=V.fromFragments(n);return r.end=``,r.noWrap=!0,n.length===1?r.style=n[0].style:t!==void 0&&!t.isNull&&(r.style=t),r}function Ik(e,t){let n=e.copy();return n.style=t.add(Lk(e.style)),n}function Lk(e){return e instanceof z?e:z.parse(e)}var Rk=class extends Error{constructor(e,t,n){super(`Invalid ${t} color ${JSON.stringify(e)}: ${n}`),this.name=`ColorSpecError`}};function zk(e,t,n,r,i){let{palette:a,tint:o}=e,s=Bk(n,i),c=s===void 0?o:Vk(a,s,`bg`);e.bg=c;let l=Bk(r,i),u=l===void 0?ea(a,c,t):Vk(a,l,`fg`);return new z({bgcolor:N.fromRgba(c),color:N.fromRgba(u)})}function Bk(e,t){if(e!==void 0)return e.evaluate(t).map(e=>e.plain).join(``)}function Vk(e,t,n){try{return Hn(e,t)}catch(e){throw e instanceof zn?new Rk(t,n,e.message):e}}function Hk(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,Uk(e,t,o,n,r,i));return i}function Uk(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=BS(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=yy.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=BS(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=BS(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:Gk(e,n.copy,t)};if(`open`in n)return{kind:`open`,target:Gk(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:kx(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:Gk(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 Wk(e){return e.kind===`do`?Wk(e.head):e}function Gk(e,t,n){try{return e(t)}catch(e){throw Error(`Template parse error in actions.${n}: ${e.message}`,{cause:e})}}function Kk(e,t){return e.has(t)?v_(e.read(t)):``}function qk(e,t){return e.evaluate(t).map(e=>e.plain).join(``)}function Jk(e,t,n,r){let i=new V(e,{style:z.combine([r,new z({link:t,bold:n})])});return i.noWrap=!0,i.end=``,i}function Yk(e,t){return Math.max(e.members.indexOf(Kk(t,e.stateVar)),0)}function Xk(e,t,n,r,i){switch(e.kind){case`set-literal`:{let t=Kk(r,e.stateVar);return{effects:[{verb:Aw,args:[i,e.key,e.value]}],active:t===e.value}}case`set-option`:{let a=n??t,o=Kk(r,e.stateVar);return{effects:[{verb:Aw,args:[i,e.key,a]}],active:o===a}}case`set-int`:{let a=n??t,o=Kk(r,e.stateVar);return{effects:[{verb:Aw,args:[i,e.key,a]}],active:o===a}}case`set-cycle`:{let t=e.members[(Yk(e,r)+1)%e.members.length];return{effects:[{verb:Aw,args:[i,e.key,t]}],active:!1}}case`set-bounded`:return{effects:[{verb:jw,args:[i,e.key,String(e.by)]}],active:!1};case`copy`:return{effects:[{verb:Mw,args:[qk(e.text,lv(r))]}],active:!1};case`open`:return{effects:[{verb:Nw,args:[qk(e.target,lv(r))]}],active:!1};case`persist-literal`:{let t=Kk(r,e.stateVar);return{effects:[{verb:Lw,args:[i,e.key,e.value]}],active:t===e.value}}case`persist-option`:{let a=n??t,o=Kk(r,e.stateVar);return{effects:[{verb:Lw,args:[i,e.key,a]}],active:o===a}}case`persist-cycle`:{let t=e.members[(Yk(e,r)+1)%e.members.length];return{effects:[{verb:Lw,args:[i,e.key,t]}],active:!1}}case`persist-bounded`:return{effects:[{verb:Rw,args:[i,e.key,String(e.by)]}],active:!1};case`reset`:return{effects:[{verb:Hw,args:[i,e.key]}],active:!1};case`undo`:return{effects:[{verb:Ww,args:[i]}],active:!1};case`redo`:return{effects:[{verb:Gw,args:[i]}],active:!1};case`save`:return{effects:[{verb:zw,args:[i]}],active:!1};case`preset-save`:return{effects:[{verb:Bw,args:[i]}],active:!1};case`preset-delete`:return{effects:[{verb:Vw,args:[i,qk(e.name,lv(r))]}],active:!1};case`doctor-run`:return{effects:[{verb:qw,args:[i]}],active:!1};case`doctor-fix`:return{effects:[{verb:Jw,args:[i,e.check]}],active:!1};case`ceiling`:return{effects:[{verb:Yw,args:[i,...e.args]}],active:!1};case`slash`:return{effects:[{verb:Xw,args:[i,e.line]}],active:!1};case`layout-op`:return{effects:[{verb:Uw,args:[i,e.key,qE(e.op)]}],active:!1};case`do`:{let a=Xk(e.head,t,n,r,i);return{effects:[...a.effects,...e.rest.flatMap(e=>Xk(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:Uw,args:[i,e.key,qE(r)]}],active:!1}}}}function Zk(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:dc(`action "${e}"`,n,t.members.length,Yk(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 Qk(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}=Zk(e,Wk(r),t,i),{effects:s,active:c}=Xk(r,a,o,i,Kk(i,`session.id`));return Jk(a,$w(s),c)}function $k(e){return{action:{fn:(t,...n)=>Qk(t,n,e),argTypes:[`string`,`string`],returnType:`T`}}}function eA(e,t){return Jk(`✕`,$w([{verb:Aw,args:[Kk(e,`session.id`),t,cc]}]),!1)}function tA(e,t,n){return new z({bgcolor:N.fromRgba(t),color:N.fromRgba(ea(e,t,n))})}function nA(e,t,n){return tA(e.palette,pa(e.palette,e.disclosure,[t],n),n)}function rA(e,t,n,r,i){return r===void 0?n=>nA(e,{...n,distribution:t},i):(e,t)=>iA(r(t,n),i)}function iA(e,t){let n=Wi(e,`background`);return new z({bgcolor:N.fromRgba(n),color:N.fromRgba(Yn(Wi(e,`primary`),n,4.5,t))})}function aA(e){return{current:null,drawnAt:e}}function oA(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 sA(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 cA(e){return new V(e).cellLength}function lA(e){return Math.max(1,e.width-e.chromeCols-2*e.padding)}function uA(e){return Math.max(1,lA(e)-(cA(`✕`)+2*e.padding+e.seamCols))}function dA(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 fA(e,t){let n=[];for(let t of e)n.length>0&&n.push(new V(` `)),n.push(t);let r=V.fromFragments(n);return r.noWrap=t,r.end=``,r}function pA(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 mA(e,t,n){let r=e.compiled.get(t),i=r&&Wk(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 hA(e,t,n,r,i,a,o){let s=mA(a,e,`picker`),c=a.compiled.get(e),l=a.store,u=Kk(l,`session.id`),d=`stateVar`in s?Kk(l,s.stateVar):void 0,f=s.options.map(cA),p=i?lA(a):1/0,m=cA(`✕`)+1,h=cA(`←`)+1+cA(`→`)+1,g=dA(f,p,m),_=g.length>1?dA(f,p,m+h):g,v=parseInt(Kk(l,t.stateVar),10),y=Number.isInteger(v)?Math.max(0,Math.min(v,_.length-1)):0,b=_[y]??[],x=e=>$w([{verb:Aw,args:[u,t.key,String(e)]}]),S=n.flatMap(([e,t])=>[e,t]),C=$w([{verb:Aw,args:[u,...S]}]),ee=r?[{verb:Aw,args:[u,...S]}]:[],te=e=>$w([...Xk(c,e,e,l,u).effects,...ee]),ne=[Jk(`✕`,C,!1)];y>0&&ne.push(Jk(`←`,x(y-1),!1));for(let e of b){let t=s.options[e];ne.push(Jk(t,te(t),t===d,o({index:e,count:s.options.length},t)))}return y<_.length-1&&ne.push(Jk(`→`,x(y+1),!1)),fA(ne,i)}function gA(e,t){return{picker:{fn:(n,r,i,a)=>{let o=pA(e,r,`set-int`,`an int action ({ set, int: true })`);return hA(n,{key:o.key,stateVar:o.stateVar},[[o.key,`-1`]],i===!0,a===!0,e,rA(sA(t,`{{ picker }}`),Ri(void 0),e.basePalette,mA(e,n,`picker`).paletteOf,t.drawnAt()))},argTypes:[`string`,`string`,`bool`,`bool`],returnType:`T`}}}function _A(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+cA(e(-(s+1)))+1+cA(e(s+1))+1;if(t>r)break;o=t,s+=1}return s}function vA(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=Kk(a,`session.id`),{options:c}=t,l=c.length,u=Kk(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=$w(Xk(o,p(e),p(e),a,s).effects);return m.set(e,n),n},g=e=>Jk(p(e),h(e),p(e)===u,r({index:f(e),count:l},p(e))),_=_A(p,l,cA(`◀`)+1+cA(p(0))+1+cA(`▶`),uA(n),i),v=e=>Array.from({length:_},(t,n)=>g(e*(n+1)));return fA([...v(-1).reverse(),Jk(`◀`,h(-1),!1),g(0),Jk(`▶`,h(1),!1),...v(1)],!0)}function yA(e,t){return{carousel:{fn:(n,r,...i)=>{if(i.length>0)throw Error(`carousel "${n}": takes at most one neighbours count after the action name, got ${1+i.length}`);if(r!==void 0&&!(Number.isInteger(r)&&r>=0))throw Error(`carousel "${n}": neighbours must be a whole number ≥ 0 (0 shows only ◀ CURRENT ▶), got ${String(r)}`);let a=r??1/0,o=mA(e,n,`carousel`);return vA(n,o,e,rA(sA(t,`{{ carousel }}`),Ri(void 0),e.basePalette,o.paletteOf,t.drawnAt()),a)},argTypes:[`string`,`float`],returnType:`T`}}}const bA=[`~/code`,`main`,`opus`,`42%`,`5m`,`$1.20`];function xA(e,t,n){let r=oa(e,{hue:ji,depth:0},n);return[H(t).map((t,n)=>({text:bA[n%bA.length],colour:Gi(e,t)})),[{text:`▾ open`,colour:r.state},{text:`menu`,colour:r.plane}],[{text:`warn`,colour:Wi(e,`warning`)},{text:`error`,colour:Wi(e,`error`)}]]}function SA(e,t,n,r){let i=xA(e,t,n).flatMap((t,r)=>t.map(({text:t,colour:i},a)=>({gap:r>0&&a===0?` `:``,cell:new V(` ${t} `,{style:tA(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 V(e)),a.push(t)}let s=V.fromFragments(a);return s.noWrap=!0,s.end=``,s}function CA(e,t){return{themePreview:{fn:()=>SA(e.palette,e.progression,t.drawnAt(),uA(e)),argTypes:[],returnType:`T`}}}const wA=e=>e.slice(e.lastIndexOf(`.`)+1),TA=(e,t)=>{let n=new V(wA(e));return n.truncate(t,{marker:`…`}),n.plain};function EA(e,t){let n=e.map(e=>e.map(({name:e})=>cA(wA(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 DA(e,t,n,r){let i=EA(e,r),a=e.map(e=>{let a=[],o=0;for(let{name:s,address:c,palette:l}of e){let e=new V(` ${TA(s,i)} `,{style:tA(l,_a(l,{kind:`bar`,progression:t,address:c},n).tint,n)});if(o+=e.cellLength,o>r)break;a.push(e)}return a}),o=V.fromFragments(a.flatMap((e,t)=>t===0?e:[new V(`
182
+ `),...e]));return o.noWrap=!0,o.end=``,o}function OA(e,t){return{layoutPreview:{fn:()=>DA(e.layout(),e.progression,t.drawnAt(),uA(e)),argTypes:[],returnType:`T`}}}function kA(e,t,n,r){let i=sA(r.activeSegment,`{{ menu }}`),a=r.action,o=ug(i.placementId,e,n.key),s=pg(o),c=lg(e),l=Kk(a.store,o)===c,u=Kk(a.store,`session.id`),d=l?cc:c,f=Jk(dc(`{{ menu "${e}" }}`,t,2,+!!l),$w([{verb:Aw,args:[u,o,d,s,`0`]}]),!1);return i.drops.push(...l?[hA(e,{key:s,stateVar:s},[[o,cc],[s,`0`]],n.closeOnPick,n.paged,a,rA(i,n.distribution,a.basePalette,mA(a,e,`menu`).paletteOf,r.activeSegment.drawnAt()))]:[]),f}const AA=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function jA(e,t){let n=t[t.length-1],r=AA(n)?n:void 0,i=r===void 0?t:t.slice(0,-1),a=i.findIndex(e=>typeof e!=`string`);if(a!==-1)throw Error(`{{ menu "${e}" }} display #${a+1} is not text (${JSON.stringify(i[a])}) — a menu binds its trigger text, then an optional trailing (dict …) of options`);return{displays:i,options:_g(r??{})}}function MA(e){return{menu:{fn:(t,...n)=>{let{displays:r,options:i}=jA(t,n);return kA(t,r,i,e)},argTypes:[`string`,`value`],returnType:`T`}}}function NA(e){let{value:t,max:n,width:r,filled:i,empty:a,colourAt:o}=e,s=PA(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 V(t?i:a,{style:l===void 0?void 0:new z({color:l})}))}let l=V.fromFragments(c);return l.end=``,l.noWrap=!0,l}function PA(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 FA(e){let t={fn:(()=>{let t=sA(e,`{{ bgOf }}`);if(t.bg===void 0)throw Error(`{{ bgOf }} is not available while segments.${t.segName}'s own "bg:" is being evaluated — the background is what that template computes. Reach for a palette color there instead, e.g. bg: '{{ darken (color "surface") 1 }}'.`);return t.bg.hex}),argTypes:[],returnType:`string`},n={fn:(()=>sA(e,`{{ tint }}`).tint.hex),argTypes:[],returnType:`string`},r=W_(()=>sA(e,`{{ color }} / {{ ramp }} / {{ gauge }}`).palette),i={fn:((e,t,n,i,a,o,...s)=>NA({value:e,max:t,width:n,filled:i,empty:a,colourAt:o===void 0||s.length===0?void 0:e=>String(r.ramp.fn(e,o,...IA(s)))})),argTypes:[`float`,`float`,`int`,`string`,`string`,`string`,`string`],returnType:`T`};return{...r,bgOf:t,tint:n,gauge:i}}function IA(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 LA(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 yA=({text:e,trail:t})=>t===void 0?[e]:[e,t];function bA(e,t){switch(e){case`vertical`:return SA(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))]:SA(e)}}}function xA(e,t){let n=(e,r)=>t(e)?e.kind===`segment`?[{cells:[{name:e.name,address:r}],band:`own`,span:`shared`}]:bA(e.direction,e.children.map((t,i)=>n(t,[...r,CA(e,i)]))):[];return n(e,[]).map(e=>[...e.cells])}function SA(e){return e.map(e=>e.span===`row`?{...e,span:`shared`}:e)}function CA(e,t){return{index:t,count:e.children.length,distribution:e.distribution,axis:Zo[e.direction]}}const wA={compile(e,t){return{kind:`container`,direction:e.direction,when:t.when,distribution:Ri(e.distribution),children:e.children.map((e,n)=>t.compileChild(e,rs(t.path,n)))}},render(e,t){return bA(e.direction,e.children.map((n,r)=>t.renderChild(n,t.visible,CA(e,r))))}},TA={compile(e,t){return{kind:`segment`,when:t.when,name:e.name,id:Qo(e),settings:t.settingsOf(e),...e.opens!==void 0&&{opens:{open:t.parse(uc(e.opens.ref),`opens`),body:t.compileChild(e.opens.body,is(t.path)),key:e.opens.ref.key,placement:e.opens.placement}},...e.trail!==void 0&&{trail:t.parse(e.trail,`trail`)}}},render(e,t){let n=t.lookupSegment(e.name);if(!n)throw Error(`Layout segment "${e.name}" has no matching segment`);let{seg:r,compiled:i}=n;if(!t.visible)return[];let a=av(t.scope,e.settings);try{if(!sk(i.when,a))return[];let n=i.palette??t.palette,{styles:o,fragments:s,trail:c,drops:l}=t.evaluateSegment(e,a,n,t.region,{bg:i.bg,fg:i.fg,body:i.template,trail:e.trail}),u=e.opens!==void 0&&sk(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`)?dk(hk([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=vA(hk(s,d)).map((e,t)=>({cells:dk(e,{...f,trail:t===0?hk(c,d):[]}),band:`own`,span:`shared`})),b=l.map(e=>({cells:dk(hk([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(yA)),[...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:dk([new V(`⚠ ${e.id}: ${i}`,{end:``})],{width:`auto`,justify:`left`,truncate:`right`,padding:0,trail:EA(e,a,t)}),band:`own`,span:`shared`}]}}};function EA(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 DA={container:wA,segment:TA};function OA(e){return DA[e]}function kA(e){if(`ttl`in e)return{kind:`ttl`,durationMs:Kv(e.ttl)};if(`watch_file`in e)return{kind:`watch_file`,path:e.watch_file};if(`depends_on`in e)return{kind:`depends_on`,varNames:e.depends_on};if(`key`in e)return{kind:`key`,template:e.key};if(`never`in e)return{kind:`never`};throw Error(`Unknown CacheDecl discriminator — loader invariant violated: ${JSON.stringify(e)}`)}function AA(e,t){switch(ss(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 jA(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:kA(n.cache),parse:AA(n.parse,n.default)});break;case`shell`:e.declareShell(t,n.command,{cache:kA(n.cache),parse:AA(n.parse,n.default)});break;case`template`:e.declareTemplate(t,n.template,{varDefault:n.default});break;case`time`:e.declareTime(t,{format:n.layout,ttlMs:n.cache?Kv(n.cache.ttl):void 0,varDefault:n.default});break;case`git`:e.declareGit(t,{field:n.field,cwd:r,varDefault:n.default});break;case`state`:e.declareState(t,{key:n.key,...n.default!==void 0&&{varDefault:n.default}});break}}function MA(e,t){let n=qu.EMPTY;for(let[r,i]of Object.entries(t))try{n=e.parse(`{{ define "${r}" }}${i}{{ end }}`,n).defines()}catch(e){throw Error(`Template parse error in helpers.${r}: ${e.message}`,{cause:e})}return n}const NA=e=>qa(void 0,null,e.globals.progression);function PA(e,t,n){let r=n?.cwd??process.cwd(),i=bS(e.globals.palette),a={store:t.variableStore,compiled:new Map,chromeCols:sE({style:`powerline`,charset:La}),width:80,basePalette:i,palette:i,progression:Ai[NA(e)],padding:1,seamCols:cE({style:`powerline`,charset:La}),layout:()=>[]},o=Bk(t.drawnAt),s={action:a,activeSegment:o},c=Object.keys(e.looks),l=gg(e.presets),u=new Map([...CS(e),...Vy(e)]),d=nv({...Pk(a),...Zk(a,o),...eA(a,o),...iA(a,o),...lA(a,o),...pA(s),...gA(o),looks:{fn:()=>c,argTypes:[]},presets:{fn:()=>l,argTypes:[]}},n?.clock,t.drawnAt),f=MA(d,e.helpers),p=e=>d.parse(e,f),m=new Map,h=e=>{let t=m.get(e);if(t!==void 0)return t;let n=p(e);return m.set(e,n),n},g=new Map;for(let[t,n]of my)n in e.variables&&g.set(t,n);for(let[t,n]of Object.entries(e.variables))n.kind===`state`&&!g.has(n.key)&&g.set(n.key,t);for(let[t,n]of Object.entries(e.segments))if(n.vars)for(let[e,r]of Object.entries(n.vars))r.kind===`state`&&!g.has(r.key)&&g.set(r.key,`${t}.${e}`);a.compiled=Ck(p,e.actions,g,u);let _=[];for(let[n,i]of Object.entries(e.variables))try{jA(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{jA(t,`${n}.${e}`,a,r)}catch(t){_.push(`Variable "${n}.${e}": ${t.message??String(t)}`)}let v=Object.create(null);for(let[t,n]of Object.entries(e.segments)){let e=(e,n,r=p)=>{try{return r(e)}catch(e){throw Error(`Template parse error in segments.${t}.${n}: ${e.message}`,{cause:e})}};v[t]={when:n.when===void 0?void 0:e(n.when,`when`,h),template:e(n.template,`template`),bg:n.bg===void 0?void 0:e(n.bg,`bg`),fg:n.fg===void 0?void 0:e(n.fg,`fg`),palette:n.palette===void 0?void 0:pS(n.palette)}}let y=(e,t,n)=>{try{return h(e)}catch(e){throw Error(`Template parse error in ${t}.${n}: ${e.message}`,{cause:e})}},b=t=>{let n=e.segments[t.name]?.settings??{},r=Object.create(null);for(let[e,i]of Object.entries(n))r[e]=t.settings?.[e]??i.default;return Object.freeze(r)},x=(e,t)=>{let n={path:t,when:e.when===void 0?void 0:y(e.when,t,`when`),parse:(e,n)=>y(e,t,n),compileChild:x,settingsOf:b};return OA(e.kind).compile(e,n)},S=new Map;for(let t of l){let{node:n,path:r}=yg(e,t);S.set(t,x(n,r))}let C=new Map;for(let t of Ta){let n=e.globals[t];Ea(n)&&C.set(t,FA(p,t,n))}return{segments:v,roots:S,activeSegment:o,menuRuntime:s,globalExpressions:C,loadWarnings:_}}function FA(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 IA(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 LA(e,t){return e.kind===`decided`?e.name:t}function RA(e,t,n,r,i,a,o,s){let{perSegmentSink:c,onSegmentError:l,onRenderWarning:u}=o??{};r.drawAt(Wa(a.colorCompatibility));let{preset:d=mg}=s??{},f=Ai[s?.progression??NA(e)];t.menuRuntime.action.progression=f;let p=s?.look??ja(`none`,e.looks),m=s?.theme??vS(void 0,null,e.globals.palette),h=(e,t)=>({...i,term:{cols:a.width},theme:{effective:e},look:{effective:t}});r.applyInput(h(LA(m,ba),LA(p,ka))),t.menuRuntime.action.chromeCols=sE(a),t.menuRuntime.action.padding=a.padding,t.menuRuntime.action.width=a.width,t.menuRuntime.action.seamCols=cE(a);let g=rv(n),_=Oa(m,()=>IA(t,`palette`,g),e=>_S(e,e=>u?.(e))),v=Oa(p,()=>IA(t,`look`,g),t=>ja(t,e.looks));(_!==m||v!==p)&&r.applyInput(h(_.name,v.name));let y=_.value;t.menuRuntime.action.basePalette=y;let b=hS(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}=_a(i,a,s),u=Vk(t.activeSegment,e.name,e.id,i,l,c),d=bk(u,s,o.bg,o.fg,n),f=o.body.evaluate(n),p=o.trail?.evaluate(n)??[];return{styles:{closed:d,get trigger(){return Ik(i,oa(i,l,s).state,s)},get band(){return Ik(i,oa(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&&sk(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,ha(r,n)),renderBody:(e,t,n)=>C(e,i&&t,ga(n)),closeDisclosure:e=>Fk(n,e)};return OA(e.kind).render(e,o)},ee=t.roots.get(d);if(ee===void 0)throw Error(`Preset "${d}" has no compiled layout — registerDslConfig compiles one per declared preset and effectivePresetName collapses unknown names to "${mg}"; a miss here is merge/policy drift (have: ${[...t.roots.keys()].join(`, `)})`);let te=e=>{if(!sk(e.when,g))return!1;if(e.kind===`container`)return!0;if(Gy(e.name)===void 0)return!1;try{return sk(t.segments[e.name].when,av(g,e.settings))}catch{return!0}};return t.menuRuntime.action.layout=()=>xA(ee,te).map(e=>e.flatMap(e=>{let n=Gy(e.name);return n===void 0?[]:[{...e,name:n,palette:t.segments[n].palette??b}]})),C(ee,!0,ma(f)).map(e=>lE(mk(e.cells,a),a)).join(`
185
- `)}var zA=class{kind=`box`;cell;lastChangedAt;constructor(e,t,n){this.name=e,this.type=t,GA(e,t,n,`initial value`),this.cell=l_.observable.box(n,{deep:!1}),this.lastChangedAt=Date.now()}read(){return this.cell.get()}set(e){GA(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}},BA=class{kind=`computed`;cell;constructor(e,t,n){this.name=e,this.type=t,this.cell=(0,l_.computed)(()=>{let e=n();return GA(this.name,this.type,e,`computed result`),e},{keepAlive:!0})}read(){return this.cell.get()}lastUpdatedMs(){return null}},VA=class{kind=`document`;cell;lastChangedAt;constructor(e,t){this.name=e,this.cell=l_.observable.box(WA(t),{deep:!1}),this.lastChangedAt=Date.now()}read(){return this.cell.get()}set(e){let t=WA(e);UA(this.cell.get(),t)||(this.cell.set(t),this.lastChangedAt=Date.now())}lastUpdatedMs(){return this.lastChangedAt}};function HA(e){return JSON.stringify(e)}function UA(e,t){return HA(e)===HA(t)}function WA(e){return e.kind===`ok`?{kind:`ok`,value:u_(e.value)}:e}function GA(e,t,n,r){let i=d_(n);if(i!==t)throw TypeError(`Variable "${e}": ${r} type ${i} does not match declared type ${t}`)}var KA=class{nodes=new Map;defineBox(e,t,n){this.assertNotDefined(e),this.nodes.set(e,new zA(e,t,n))}defineDocument(e,t){this.assertNotDefined(e),this.nodes.set(e,new VA(e,t))}defineComputed(e,t,n){this.assertNotDefined(e);let r=e=>this.read(e);this.nodes.set(e,new BA(e,t,()=>n(r)))}read(e){return this.requireVar(e).read()}readDocument(e){let t=this.requireNode(e);if(t.kind!==`document`)throw TypeError(`Variable "${e}" is a ${t.kind}, not a document`);return t.read()}setDocument(e,t){let n=this.requireNode(e);if(n.kind!==`document`)throw TypeError(`Variable "${e}" is a ${n.kind}, not a document (use defineDocument to create one)`);(0,l_.runInAction)(()=>n.set(t))}setBox(e,t){let n=this.requireNode(e);if(n.kind!==`box`)throw TypeError(`Variable "${e}" is a ${n.kind}, not a box (use defineBox to create a settable variable)`);(0,l_.runInAction)(()=>n.set(t))}runInAction(e){(0,l_.runInAction)(e)}has(e){return this.nodes.has(e)}getType(e){return this.requireVar(e).type}getKind(e){return this.requireNode(e).kind}changeKey(e){let t=this.requireNode(e);if(t.kind===`document`)return HA(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 qA(e,t,n){return e+`\0`+t+`\0`+(n??``)}function JA(e,t){return new Set(gg(e.presets).filter(n=>yg(e,n).path===`root`?t.root!==void 0:t.presets?.[n]?.root!==void 0))}function YA(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 XA(e,t){let n=new Map;for(let t of US(e.projectDir,e.cwd,e.configFile)){let{dir:e,name:r}=YA(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 ZA(e){return e.filter(Boolean).join(`
186
- `)||null}var QA=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=qA(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=GS(e,t,n),i=r.kind===`file`?r.path:null,a=[YS(e,t),qS(r)],o;try{o=this.buildState(t,i,a)}catch(e){return e instanceof Go&&a.push(...e.warnings),{resolvedPath:i,warning:ZA(a),state:null,error:e instanceof Go||e instanceof Error?e.message:String(e)}}return{resolvedPath:i,warning:ZA(a),state:o,error:null}}buildState(e,t,n){let r=XS(t,rD),{config:i,raw:a}=r;n.push(...r.warnings);let o=$S(r,t??`<default>`),s=new KA,c=new ly(s,o.globals.default_empty_value??``,this.deps.gitService,this.deps.sessionState),l,u=[];try{l=PA(o,c,{cwd:e}),n.push(...l.loadWarnings);for(let{key:e,spec:t}of gO(o))u.push(lO(e,t));for(let{key:e,spec:t}of ZE(o))u.push(QE(e,t))}catch(e){for(let e of u)e();throw c.dispose(),e}return{config:o,store:s,registry:c,compiled:l,neededInputPaths:MD(o),lastRenderCellsBySegment:new Map,validatorDisposers:u,authoredRoots:JA(i,a)}}refreshWatcher(e,t){e.configFilePath=t;let n=XA(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 $A=16384;var ej=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<$A){this.rollingTimestamps.push(e);return}this.rollingTimestamps[this.rollingHead]=e,this.rollingHead=(this.rollingHead+1)%$A}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:Uw,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 tj={load:()=>({}),save:()=>{},flush:()=>{}};function nj(e){let t=new Map;for(let[n,r]of Object.entries(e))t.set(n,new Map(Object.entries(r)));return t}var rj=class{sessions;storage;atom=(0,l_.createAtom)(`SessionState`);constructor(e=tj,t=256){this.maxSessions=t,this.storage=e,this.sessions=new Map,this.hydrateFromStorage()}useStorage(e){this.storage=e,this.hydrateFromStorage()}hydrateFromStorage(){this.sessions=nj(this.storage.load()),this.evictOldest(),this.persist()}get(e,t){this.atom.reportObserved();let n=this.sessions.get(e);return n?(this.touch(e,n),n.get(t)??null):null}set(e,t,n){this.setBatch(e,[{key:t,value:n}])}setBatch(e,t){t.length!==0&&(0,l_.runInAction)(()=>{let n=this.sessions.get(e)??new Map;for(let{key:e,value:r}of t)n.set(e,r);this.touch(e,n),this.evictOldest(),this.persist(),this.atom.reportChanged()})}clear(e,t){(0,l_.runInAction)(()=>{let n=this.sessions.get(e);n&&(n.delete(t),n.size===0?this.sessions.delete(e):this.touch(e,n)),this.persist(),this.atom.reportChanged()})}prune(e){(0,l_.runInAction)(()=>{for(let t of this.sessions.keys())e.has(t)||this.sessions.delete(t);this.persist(),this.atom.reportChanged()})}touch(e,t){this.sessions.delete(e),this.sessions.set(e,t)}evictOldest(){let e=this.sessions.size-this.maxSessions;if(!(e<=0)){for(let t of this.sessions.keys())if(this.sessions.delete(t),--e===0)break}}flush(){this.storage.flush()}persist(){this.storage.save(this.serialize())}serialize(){let e=Object.create(null);for(let[t,n]of this.sessions)e[t]=Object.fromEntries(n);return e}};const ij=(e,t)=>E(t);function aj(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 oj=class{timer=null;pending=null;constructor(e,t=500,n=ij){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 aj(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 sj={default_bg:`string`,default_fg:`string`,default_empty_value:`string`,default_separator:`string`,default_truncate_marker:`string`,palette:`string`,look:`string`,preset:`string`,style:`string`,progression:`string`,autoWrap:`boolean`,padding:`number`,charset:`string`,updateNotice:`boolean`,colorCompatibility:`string`,menuGlyph:`string`},cj=new Set([`1`,`true`]),lj=new Set([`0`,`false`,``]);function uj(e,t){let n=Fj(e),r=n.scope===`segment-palette`?`string`:sj[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(cj.has(t))return`true`;if(lj.has(t))return`false`;throw Error(`persistValueText: "${e}" expects boolean-ish (1, 0, true, false), got "${t}"`)}function dj(e){try{return r.readFileSync(e,`utf8`)}catch(e){if(e.code===`ENOENT`)return null;throw e}}function fj(e,t,n){try{if(t===null){r.rmSync(e,{force:!0});return}r.mkdirSync(c.dirname(e),{recursive:!0}),Ae(e,t)}catch(t){let r=`config write failed (${e}): ${t.message}`;throw n(`error`,r),Error(r)}}function pj(e){return/^\s*$/.test(e)?null:co(e)}function mj(e,t){return e!==null&&uo(e,t)!==void 0}function hj(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(hj),...i}}return e}function gj(e){if(!qs(e))return hj(e);let{rows:t,...n}=e;return{rows:Object.fromEntries(Object.entries(t).map(([e,t])=>[e,hj(t)])),...n}}const _j=tD,vj=_j.segments,yj=_j.presets,bj=_j.root;function xj(e,t,n,r){if(!mj(e,t)&&n===void 0)throw new $(`cannot edit ${r}: neither the config file nor the bundled default declares ${t.join(`.`)}`)}function Sj(e,t){let n=wy(t);return t.scope===`segment-palette`&&xj(e,[`segments`,t.segment],vj[t.segment],n.join(`.`)),n}function Cj(e){return co(yo(e))}function wj(){return Object.entries(bj.rows).map(([e,t])=>{let n=hj(t);return{path:[`root`],fragment:Cj({rows:{[e]:n}}),unit:{path:[`root`,`rows`,e],value:n}}})}function Tj(e,t){let n=e===null?void 0:uo(e,t);return n===void 0?null:{path:t,fragment:n,unit:null}}function Ej(e,t){if(t===void 0)return null;let n=gj(t);return{path:e,fragment:Cj(n),unit:{path:e,value:n}}}function Dj(e,t){let n=[`presets`,t],r=[...n,`root`],i=yj[t];xj(e,n,i,r.join(`.`));let a=Tj(e,r)??Ej(r,i?.root);return a!==null&&zo(a.fragment)?a:null}function Oj(e,t){let n=Ro(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 kj(e,t){return[...wj(),Tj(e,[`root`]),Dj(e,t)].filter(e=>e!==null).reduce(Oj,new Map)}function Aj(e,t,n){for(let{node:r,...i}of kj(e,t).values())if(Vo(r,n))return i;throw new $(`${jj(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 jj(e,t){return Dj(e,t)?.path??[`root`]}function Mj(e,t){return t.scope===`preset-root`?jj(e,t.preset):wy(t)}function Nj(e,{unit:t}){return t===null?e:No(e,t.path,yo(t.value),_o)}function Pj(e){let t=Cy(e);if(t===null)throw Error(`"${e}" is not a valid persist target`);return t}function Fj(e){let t=Pj(e);if(t.scope===`preset-root`)throw Error(`"${e}" names a layout, not a value`);return t}function Ij(e,t,n,r){Lj(t,r),fj(t,r,e.logger),e.record(t,n,r)}function Lj(e,t){try{return $S(ZS(e,t,rD),e)}catch(e){throw e instanceof Go?new $(`refused: the config file would not load after this click — ${e.message}`):e}}function Rj(e,t){let n=Fj(t),r=pj(dj(e)??``),i=r===null?void 0:uo(r,wy(n));return i!==void 0&&`value`in i?i.value:void 0}function zj(e,t,n){let r=dj(t);Ij(e,t,r,n.reduce((e,[t,n])=>No(e,Sj(pj(e),Fj(t)),uj(t,n),_o),r??``))}function Bj(e,t){return Po(e,t,t[0]===`presets`&&t.length>2&&!aD(t[1])?2:0)}function Vj(e,t,n){let r=n.map(Pj),i=dj(t);if(i===null)return;let a=r.reduce((e,t)=>Bj(e,Mj(pj(e),t)),i);a!==i&&Ij(e,t,i,a)}function Hj(e){let t=e===null?void 0:uo(e,[`presets`]),n=new Set([...iD,...t?.kind===`object`?t.entries.map(e=>e.key):[]].map(bl));return Array.from({length:n.size+1},(e,t)=>`custom-${t+1}`).find(e=>!n.has(bl(e)))}function Uj(e,t,n,r,i){let a=dj(t),o=pj(a??``),s=Hj(o),c=[`presets`,s],l=Dj(o,n),u=[...l===null?[]:[[[...c,`root`],l.unit===null?po(a??``,l.fragment):yo(l.unit.value)]],...Object.keys(r).length===0?[]:[[[...c,`globals`],yo(r)]]],d=i.map(([e,t])=>{let n=Sy(s,e);return[Sj(o,Fj(n)),uj(n,t)]});return Ij(e,t,a,[...u,...d].reduce((e,[t,n])=>No(e,t,n,_o),No(a??``,c,`{}`,_o))),s}function Wj(e,t,n){if(aD(n))throw new $(`cannot delete preset "${n}": it is bundled — reset its settings instead`);let r=[`presets`,n],i=dj(t),a=pj(i??``);if(i===null||a===null||uo(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=uo(a,[`globals`,`preset`]);Ij(e,t,i,[r,...o?.kind===`string`&&o.value===n?[[`globals`,`preset`]]:[]].reduce((e,t)=>Bj(e,t),i))}function Gj(e,t,n,r){let i=Pj(n);if(i.scope!==`preset-root`)throw Error(`"${n}" is not a "presets.<name>.root" target`);let a=dj(t),o=r.op===`remove`?r.target:r.anchor,s=Aj(pj(a??``),i.preset,o),c=Nj(a??``,s),{after:l,placed:u}=Kj(c,s.path,r,()=>{let e=Lj(t,c);return gg(e.presets).map(t=>yg(e,t).node)});if(l===null)throw new $(`${s.path.join(`.`)} in ${t} has no placement "${o}" — the bar you clicked is stale (it reloads on the next render), or the action names a placement the layout never held`);return Ij(e,t,a,l),u}function Kj(e,t,n,r){switch(n.op){case`remove`:return{after:Uo(e,t,n.target),placed:null};case`insert`:{let i=NE(n.segment,n.anchor,r());return{after:Wo(e,t,i,n.anchor,n.relation),placed:i}}}}const qj={load:()=>({}),save:()=>{}},Jj=new Set(fy.map(e=>e.sessionKey)),Yj={past:[],future:[]},Xj=e=>e.kind===`session`?`session:${e.key}`:`file:${e.file}`;var Zj=class{state=new Map;constructor(e,t,n=qj){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)??Yj;return{undo:t.length,redo:n.length}}history(e){return this.state.get(e)??Yj}begin(){let e=new Map,t=(t,n)=>{let r=e.get(t)??new Map,i=r.get(Xj(n));r.set(Xj(n),i===void 0?n:{...n,before:i.before}),e.set(t,r)},n=this.sessionState,r=(e,r,i)=>{let a=r.filter(e=>Jj.has(e)).map(t=>({key:t,before:n.get(e,t)}));i();for(let{key:r,before:i}of a)t(e,{kind:`session`,key:r,before:i,after:n.get(e,r)})};return{sessionState:{get:(e,t)=>n.get(e,t),set:(e,t,i)=>r(e,[t],()=>n.set(e,t,i)),setBatch:(e,t)=>r(e,t.map(e=>e.key),()=>n.setBatch(e,t)),clear:(e,t)=>r(e,[t],()=>n.clear(e,t))},file:(e,n,r,i)=>t(e,{kind:`file`,file:n,before:r,after:i}),commit:()=>{let t=[...e];e.clear();for(let[e,n]of t){let t=[...n.values()].filter(e=>e.before!==e.after);t.length!==0&&this.put(e,{past:eM([...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:eM([...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:eM([...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(Xj));throw this.put(e,{past:tM(this.history(e).past,t),future:tM(this.history(e).future,t)}),new $(`${r}: ${o.map(rM).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):dj(t.file)}write(e,t,n){t.kind===`file`?fj(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||Qj(n)>8388608;){let[e,t]=n.entries().next().value;n.size>1?n.delete(e):n.set(e,$j(t))}this.storage.save(Object.fromEntries(n)),this.state=n}};function Qj(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 $j({past:e,future:t}){return e.length>0?{past:e.slice(1),future:t}:{past:e,future:t.slice(1)}}function eM(e){return e.slice(-50)}function tM(e,t){return e.map(e=>e.filter(e=>!t.has(Xj(e)))).filter(e=>e.length>0)}function nM(e){return e.map(rM).join(`, `)}function rM(e){return e.kind===`session`?`session setting "${e.key}"`:e.file}function iM(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 aM(e){return Array.isArray(e)&&e.every(e=>Array.isArray(e)&&e.every(iM))}function oM(e){if(typeof e!=`object`||!e)return!1;let t=e;return aM(t.past)&&aM(t.future)}function sM(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(oM))return e}catch{}return t(`warn`,`settings-history load: unexpected shape, starting empty`),{}},save:n=>{try{r.mkdirSync(c.dirname(e),{recursive:!0}),Ae(e,JSON.stringify(n),384)}catch(e){let n=`settings-history write failed — the change landed but is not undoable: ${e.message}`;throw t(`error`,n),Error(n)}}}}function cM(e){let t=De({bin:`tmux`,args:[`-S`,e.socket,`display`,`-p`,`-t`,e.pane,`#{client_termfeatures}`],timeoutMs:2e3,category:`doctor.tmux`});return t.ok?{kind:`ok`,value:t.stdout.trim().split(`,`).filter(e=>e!==``)}:{kind:`failed`,reason:`tmux display -p failed (${t.error??[t.reason,t.stderr.trim()].filter(e=>e!==``).join(`: `)})`}}function lM(){return{probeTmux:cM,claudeSettingsPath:Ww()}}function uM(e){return r.existsSync(e.claudeSettingsPath)?r.readFileSync(e.claudeSettingsPath,`utf8`):``}function dM(e){if(/^\s*$/.test(e))return{};let t=vo.parse(e);if(typeof t!=`object`||!t||Array.isArray(t))throw Error(`not a JSON object`);let n=t.env;if(n===void 0)return{};if(typeof n!=`object`||!n||Array.isArray(n))throw Error("`env` is not an object");return n}function fM(e,t){return t===void 0?{kind:`unreported`}:t===null?{kind:`outside`}:{kind:`inside`,hint:t,termfeatures:e.probeTmux(t)}}function pM(e){try{return dM(uM(e))}catch(t){throw Error(`cannot read ${e.claudeSettingsPath}: ${t instanceof Error?t.message:String(t)}`,{cause:t})}}function mM(e,t){return{tmux:fM(e,t),claudeSettingsEnv:pM(e)}}function hM(e,t,n){switch(t.kind){case`claude-settings-env`:{let i=No(uM(e),[`env`,t.name],JSON.stringify(t.value),vo);return r.mkdirSync(c.dirname(e.claudeSettingsPath),{recursive:!0}),Ae(e.claudeSettingsPath,i),{...n,claudeSettingsEnv:pM(e)}}default:return t.kind}}function gM(e){if(!e)throw new $(`session id is required`);if(e.includes(`/`)||e.includes(`..`))throw new $(`invalid session id "${e}"`);return e}function _M(e){return vM(()=>decodeURIComponent(e))}function vM(e){try{return e()}catch(e){throw e instanceof URIError?new $(`malformed wire encoding: ${e.message}`):e}}function yM(e,t){let n=De({bin:`/usr/bin/pbcopy`,stdinInput:e,category:`click.pbcopy`});if(!n.ok){if(n.reason===`rate-limited`){t.dlog(`warn`,`click.pbcopy rate-limited: ${n.error??``}`);return}throw Error(`pbcopy failed (${n.reason}, exit ${n.exitCode??`null`})`)}}const bM=(e,t)=>yM(_M(e),t),xM=(e,t)=>{let n=De({bin:`/usr/bin/open`,args:[`-a`,`Visual Studio Code`,_M(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`})`)}},SM=(e,t)=>yM(_M(e),t),CM=(e,t)=>yM(_M(e),t),wM=(e,t)=>{let n=gM(_M(e));t.sessionState.get(n,`toolbar-expanded`)?t.sessionState.clear(n,`toolbar-expanded`):t.sessionState.set(n,`toolbar-expanded`,`1`)},TM=(e,t)=>{let[n=``,...r]=vM(()=>Iw(e)),i=gM(n);if(r.length===0)throw new $(`set-state: <key>/<value> is required (have keys: ${cO().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: ${cO().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=uO(t,n);if(!i.ok)throw new $(`set-state: pair ${e/2+1}: ${i.reason}`);a.push({key:t,value:i.value})}t.sessionState.setBatch(i,a);let o=a.map(e=>`${e.key}=${e.value}`).join(` `);t.dlog(`info`,`set-state: ${o} (session=${i})`)},EM=/^-?\d+$/;function DM(e,t,n){return e>n?t:e<t?n:e}const OM=(e,t)=>{let[n=``,r=``,i=``]=vM(()=>Iw(e)),a=gM(n);if(!r)throw new $(`step-state: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!EM.test(i))throw new $(`step-state: delta must be an integer, got "${i}"`);let o=parseInt(i,10),s=dO(r);if(!s)throw new $(`step-state: key "${r}" is not a bounded (range) state key (have keys: ${cO().join(`, `)})`);let c=t.sessionState.get(a,r),l=c&&EM.test(c)?kM(s,parseInt(c,10)):AM(`step-state`,r,s,mO(t.configFor(PM(t,a)),e=>t.sessionState.get(a,e),r)),u=DM(l+o,s.min,s.max),d=uO(r,String(u));if(!d.ok)throw new $(`step-state: ${d.reason}`);t.sessionState.set(a,r,d.value),t.dlog(`info`,`step-state: ${r} ${l}→${d.value} (by ${o}, session=${a})`)};function kM(e,t){return Math.max(e.min,Math.min(e.max,t))}function AM(e,t,n,r){if(r===null)return n.min;if(!EM.test(r))throw new $(`${e}: "${t}" shows ${JSON.stringify(r)} before any click, not an integer to step`);return kM(n,parseInt(r,10))}const jM=`render-origin`;function MM(e){return JSON.stringify(e)}function NM(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 PM(e,t){let n=e.sessionState.get(t,jM);if(n===null)throw new $(`session ${t} has not rendered yet — no config to act on`);return NM(n)}function FM(e){return KS(e.projectDir,e.cwd,e.configFile??void 0)}function IM(e,t){return FM(PM(e,t))}function LM(e,t){return{record:(n,r,i)=>e.journal.file(t,n,r,i),logger:e.dlog}}const RM=(e,t)=>{let[n=``,r=``,i=``]=vM(()=>Iw(e)),a=gM(n);if(!r)throw new $(`set-config: <key>/<value> is required (have keys: ${WE().join(`, `)})`);let o=GE(r,i);if(!o.ok)throw new $(`set-config: ${o.reason}`);let s=IM(t,a);zj(LM(t,a),s,[[r,o.value]]),t.dlog(`info`,`set-config: ${r}=${o.value} → ${s} (session=${a})`)},zM=(e,t)=>{let[n=``,r=``,i=``]=vM(()=>Iw(e)),a=gM(n);if(!r)throw new $(`step-config: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!EM.test(i))throw new $(`step-config: delta must be an integer, got "${i}"`);let o=parseInt(i,10),s=KE(r);if(!s)throw new $(`step-config: key "${r}" is not a bounded (range) config key (have keys: ${WE().join(`, `)})`);let c=PM(t,a),l=FM(c),u=Rj(l,r),d=typeof u==`number`?kM(s,u):AM(`step-config`,r,s,JE(t.configFor(c),r)),f=DM(d+o,s.min,s.max),p=GE(r,String(f));if(!p.ok)throw new $(`step-config: ${p.reason}`);zj(LM(t,a),l,[[r,p.value]]),t.dlog(`info`,`step-config: ${r} ${d}→${p.value} (by ${o}) → ${l} (session=${a})`)},BM=(e,t)=>{let[n=``]=vM(()=>Iw(e)),r=gM(n),i=PM(t,r),a=ZD(t.configFor(i),e=>t.sessionState.get(r,e));if(a.length===0){t.dlog(`info`,`save: nothing unsaved (session=${r})`);return}let o=a.map(e=>{let t=uO(e.sessionKey,e.value);if(!t.ok)throw new $(`save: ${t.reason}`);return[e.target,t.value]}),s=FM(i);zj(LM(t,r),s,o),t.reloadConfig(i);for(let e of a)t.sessionState.clear(r,e.sessionKey);t.dlog(`info`,`save: ${o.map(([e,t])=>`${e}=${t}`).join(` `)} → ${s} (session=${r})`)},VM=(e,t)=>{let[n=``]=vM(()=>Iw(e)),r=gM(n),i=PM(t,r),a=QD(t.configFor(i),e=>t.sessionState.get(r,e)),o=a.picks.map(e=>{let t=uO(e.sessionKey,e.value);if(!t.ok)throw new $(`save-preset: ${t.reason}`);return[e.configKey,t.value]}),s=FM(i),c=Uj(LM(t,r),s,a.from,a.globals,o);t.reloadConfig(i);for(let e of fy)t.sessionState.clear(r,e.sessionKey);t.sessionState.set(r,dy.preset.sessionKey,c),t.dlog(`info`,`save-preset: ${[`${c} from=${a.from}`,...o.map(([e,t])=>`${e}=${t}`)].join(` `)} → ${s} (session=${r})`)},HM=(e,t)=>{let[n=``,r=``]=vM(()=>Iw(e)),i=gM(n);if(!r)throw new $(`delete-preset: <name> is required (shape: <sessionId>/<name>)`);let a=PM(t,i),o=FM(a);Wj(LM(t,i),o,r),t.reloadConfig(a);let s=dy.preset.sessionKey;t.sessionState.get(i,s)===r&&t.sessionState.clear(i,s),t.dlog(`info`,`delete-preset: ${r} ← ${o} (session=${i})`)},UM=(e,t)=>{let[n=``,...r]=vM(()=>Iw(e)),i=gM(n),a=WE(),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=PM(t,i),c=FM(s),l=r.map($D),u=l.flatMap(e=>e.fileKeys),d=l.flatMap(e=>e.sessionKeys);Vj(LM(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})`)},WM=(e,t)=>{let[n=``,r=``,i=``]=vM(()=>Iw(e)),a=gM(n);if(!r)throw new $(`apply-layout-op: <key>/<op> is required (have: ${WE().join(`, `)})`);let o=GE(r,i);if(!o.ok)throw new $(`apply-layout-op: ${o.reason}`);let s=ME(o.value);if(s===null)throw new $(`apply-layout-op: "${o.value}" is not a layout op token`);let c=FM(PM(t,a)),l=Gj(LM(t,a),c,r,s);t.dlog(`info`,`apply-layout-op: ${r} ${o.value} → ${c} placed=${JSON.stringify(l)} (session=${a})`)},GM=(e,t)=>{let[n=``]=vM(()=>Iw(e)),r=gM(n);t.journal.commit();let i=t.history.undo(r);t.dlog(`info`,`undo: restored ${nM(i)} (session=${r})`)},KM=(e,t)=>{let[n=``]=vM(()=>Iw(e)),r=gM(n);t.journal.commit();let i=t.history.redo(r);t.dlog(`info`,`redo: re-applied ${nM(i)} (session=${r})`)},qM=(e,t)=>{gM(_M(e)),t.applyUpdate()},JM=`client-hints`;function YM(e,t){let n=e.sessionState.get(t,JM);if(n===null)throw new $(`session ${t} has not rendered yet — no client facts to diagnose`);let r;try{r=JSON.parse(n)}catch{throw new $(`client hints record is not JSON: ${n}`)}if(typeof r!=`object`||!r)throw new $(`client hints record is not an object: ${n}`);return oC(r)}function XM(e,t,n){let r=rb(n);e.sessionState.setBatch(t,sb(r)),e.dlog(`info`,`doctor: ${r.map(e=>`${e.check.name}=${e.verdict.ok?`ok`:`failed`}`).join(` `)} (session=${t})`)}const ZM=(e,t)=>{let n=gM(_M(e));XM(t,n,mM(t.doctor,YM(t,n).tmux))},QM=(e,t)=>{let[n=``,r=``]=vM(()=>Iw(e)),i=gM(n),a=ib(r);if(a===void 0)throw new $(`doctor-fix: unknown check "${r}"`);let o=mM(t.doctor,YM(t,i).tmux),s=a.probe(o);if(s.ok||s.fix===void 0)throw new $(`doctor-fix: ${a.label} — ${s.ok?`nothing to fix`:s.reason}`);let c=hM(t.doctor,s.fix,o);t.dlog(`info`,`doctor-fix: ${a.name} → ${s.fix.kind} ${s.fix.name}=${s.fix.value} (session=${i})`),XM(t,i,c)},$M=(e,t)=>{let[n=``,...r]=vM(()=>Iw(e)),i=gM(n),a=PM(t,i),o=Object.values(t.configFor(a).actions).filter(e=>`ceiling`in e).find(e=>{let t=_x(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})`)},eN=`config-override`,tN=new Map([[_w,bM],[`load-config`,(e,t)=>{let n=e.indexOf(`/`);if(n===-1)throw new $(`load-config: expected <sessionId>/<path> (missing separator)`);let r=gM(vM(()=>decodeURIComponent(e.slice(0,n)))),i=vM(()=>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,eN),t.dlog(`info`,`load-config: override cleared (session=${r})`)):(t.sessionState.set(r,eN,i),t.dlog(`info`,`load-config: ${i} (session=${r})`))}],[vw,xM],[hw,TM],[gw,OM],[Sw,RM],[Cw,zM],[Dw,UM],[ww,BM],[Tw,VM],[Ew,HM],[Ow,WM],[kw,GM],[Aw,KM],[bw,SM],[xw,CM],[yw,wM],[jw,qM],[Mw,ZM],[Nw,QM],[Pw,$M]]),nN=new Set([hw,gw,Sw,Cw,Dw,ww,Tw,Ew,Ow,kw,Aw,yw,jw,Mw,Nw,Pw]),rN=(e,t)=>{let n=[],r=!1,i=null;for(let{verb:a,value:o}of Bw(Rw(e))){if(!i&&nN.has(a)){let e=Iw(o);e.length>0&&e[0]&&(i=e[0])}let e=tN.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(`
187
- `));let e=`dispatch: ${n.join(`; `)}`;throw r?Error(e):new $(e)}};function iN(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 aN=new Map([...tN,[mw,rN]].map(([e,t])=>[e,iN(t)]));Object.freeze([...aN.keys()]);const oN=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`]),sN=[[`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 cN(e){let t={missingRequired:[],typeMismatches:[],unknownTopLevelFields:[]},n=typeof e==`object`&&e&&!Array.isArray(e)?e:{};for(let[e,r]of sN){let i=uN(n,e);if(i==null)t.missingRequired.push(e);else{let n=lN(i);n!==r&&t.typeMismatches.push({path:e,expected:r,got:n})}}for(let e of Object.keys(n))oN.has(e)||t.unknownTopLevelFields.push(e);return{data:e,report:t}}function lN(e){return Array.isArray(e)?`array`:typeof e==`string`&&!e.isWellFormed()?`ill-formed string`:typeof e}function uN(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 dN(e,t){switch(e){case`vars`:return{what:e,vars:fN(t)};case`segments`:return{what:e,segments:_N(t)};case`config`:return{what:e,config:xN(t)}}}function fN(e){if(e===null)return[];let{store:t,registry:n,config:r}=e,i=hN(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,...pN(r),lastError:a===void 0?null:{timestampMs:a.timestamp,message:a.message},ageMs:mN(r.lastUpdatedMs())})}return o}function pN(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 mN(e){return e===null?null:Math.max(0,Date.now()-e)}function hN(e){let t=new Map;for(let[n,r]of Object.entries(e.variables))t.set(n,gN(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}`,gN(i));return t}function gN(e){return e.kind}function _N(e){if(e===null)return[];let{store:t,config:n,lastRenderBySegment:r}=e,i=new Set(t.names()),a=yN(n),o=vN(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:bN(t.template,n.helpers,i),placements:(o.get(e)??[]).map(e=>({id:e,lastRender:r.get(e)??null}))})}return s}function vN(e){let t=new Map;for(let n of gg(e.presets))for(let r of ns(yg(e,n).node)){if(r.kind!==`segment`)continue;let e=t.get(r.name)??[],n=Qo(r);e.includes(n)||t.set(r.name,[...e,n])}return t}function yN(e){let t=[],n=new Set;for(let r of ns(Xs(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 bN(e,t,n){let r=new Set;for(let i of $g(e,t).keys()){if(n.has(i)){r.add(i);continue}let e=i.split(`.`);for(;e.length>1;){e.pop();let t=e.join(`.`);if(n.has(t)){r.add(t);break}}}return Array.from(r).sort()}function xN(e){return e===null?null:e.config}const SN=[`vars`,`segments`,`config`];function CN(e){return typeof e==`string`&&SN.includes(e)}function wN(e){return Math.max(1,e-2)}var TN=class{thresholds={LOW:50,MEDIUM:80};getContextUsageThresholds(){return this.thresholds}ratioPercentages(e,t){let n=Math.min(100,Math.max(0,Math.round(e/t*100)));return{percentage:n,contextLeftPercentage:Math.max(0,100-n)}}calculateContextFromHookData(e){let t=e.context_window;if(!t?.current_usage)return E(`No current_usage in hook data, falling back to transcript parsing`),null;let n=t.current_usage,r=t.context_window_size,i=(n.input_tokens||0)+(n.cache_creation_input_tokens||0)+(n.cache_read_input_tokens||0);E(`Native current_usage: input=${n.input_tokens}, cache_create=${n.cache_creation_input_tokens}, cache_read=${n.cache_read_input_tokens}, total=${i} (limit: ${r})`);let a=this.ratioPercentages(i,r);return{totalTokens:i,maxTokens:r,percentage:t.used_percentage==null?a.percentage:Math.round(t.used_percentage),contextLeftPercentage:t.remaining_percentage==null?a.contextLeftPercentage:Math.round(t.remaining_percentage)}}async calculateContextTokensFromTranscript(e,t){try{E(`Calculating context tokens from transcript: ${e}`);let n=await WO(e);if(n.length===0)return E(`No entries in transcript`),Y;let r=null;for(let e=n.length-1;e>=0;e--){let t=n[e];if(t&&t.message?.usage?.input_tokens&&t.isSidechain!==!0){r=t,E(`Context segment: Found most recent entry at ${t.timestamp.toISOString()}, stopping search`);break}}if(r?.message?.usage){let e=r.message.usage,n=(e.input_tokens||0)+(e.cache_read_input_tokens||0)+(e.cache_creation_input_tokens||0);return E(`Most recent main chain context: ${n} tokens (limit: ${t})`),J({totalTokens:n,maxTokens:t,...this.ratioPercentages(n,t)})}return E(`No main chain entries with usage data found`),Y}catch(e){return X(`context transcript: ${e instanceof Error?e.message:String(e)}`)}}async getContextInfo(e){let t=this.calculateContextFromHookData(e);if(t)return J(t);let n=e.context_window?.context_window_size??2e5;return this.calculateContextTokensFromTranscript(e.transcript_path,n)}},EN=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=oD(t);if(n&&r!==0&&n.cursor.mtimeMs===r)return this.touch(e,n),{kind:`ok`,value:n.value};let i=await JO(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 DN={messageCount:0,recent:[]};function ON(e,t){if(t.isSidechain)return e;let n=[...e.recent,t];return{messageCount:e.messageCount+ +!!HO(t),recent:n.length>20?n.slice(-20):n}}function kN(e){let t=null,n=null;for(let r of e){let e=r.type||r.message?.role||r.message?.type;if(HO(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 AN=class{fold=new EN(DN,ON);async getMetricsInfo(e,t){if(E(`Getting metrics from hook data for session: ${e}`),!t.cost)return Y;let n=await this.fold.read(e,t.transcript_path);return n.kind===`failed`?X(`metrics (${e}): ${n.reason}`):J({responseTime:t.cost.total_api_duration_ms/1e3,lastResponseTime:kN(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 jN={command:null,todos:[],pending:[],done:[]};function MN(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 NN(e,t){if(t.isSidechain)return e;let n=HO(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=MN(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 PN(e){return{command:e.command,todos:e.todos,running:e.pending.reduce((e,t)=>MN(e,t.name),[]),done:e.done}}var FN=class{fold=new EN(jN,NN);async getActivityInfo(e,t){let n=await this.fold.read(e,t.transcript_path);return n.kind===`failed`?X(`activity (${e}): ${n.reason}`):J(PN(n.value))}};const IN=new Map;function LN(e){if(!e)return``;let t=e.indexOf(`,`);return t<0?e:e.slice(0,t)}var RN=class{async getSessionId(){if(!process.env.TMUX_PANE)return Y;let e=LN(process.env.TMUX),t=IN.get(e);if(t!==void 0)return t;E(`Getting tmux session ID, TMUX_PANE: ${process.env.TMUX_PANE}`);let n=await Ee({bin:`tmux`,args:[`display-message`,`-p`,`#S`],timeoutMs:1e3,category:`tmux`}),r=n.ok?n.stdout.trim()?J(n.stdout.trim()):Y:X(`tmux display-message: ${n.reason}`);return IN.set(e,r),r}isInTmux(){return!!process.env.TMUX_PANE}};const zN=e=>`${e.sessionId}|${e.projectDir}|${e.cwd}`;var BN=class{readings=new Map;inFlight=new Map;constructor(e,t=Date.now){this.edge=e,this.now=t}getCeiling(e){let t=zN(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=zN(e);try{this.edge.move(n.value,e,t)}finally{this.readings.delete(r),this.inFlight.delete(r),this.fetch(r,e)}}};const VN=c.join(`lib`,`ceiling_config.py`),HN=c.join(`skills`,`ceiling`,`bin`,`ceiling`);function UN(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 WN(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 GN(e,t){if(!r.existsSync(e))return Y;let n;try{n=UN(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=WN([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=[VN,HN].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 KN(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 qN(e){return e.stderr.trim()||e.error||`${e.reason}${e.exitCode===null?``:` (exit ${e.exitCode})`}`}function JN(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 YN(e,t){let n=await Ee({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 RA=({text:e,trail:t})=>t===void 0?[e]:[e,t];function zA(e,t){switch(e){case`vertical`:return VA(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))]:VA(e)}}}function BA(e,t){let n=(e,r)=>t(e)?e.kind===`segment`?[{cells:[{name:e.name,address:r}],band:`own`,span:`shared`}]:zA(e.direction,e.children.map((t,i)=>n(t,[...r,HA(e,i)]))):[];return n(e,[]).map(e=>[...e.cells])}function VA(e){return e.map(e=>e.span===`row`?{...e,span:`shared`}:e)}function HA(e,t){return{index:t,count:e.children.length,distribution:e.distribution,axis:$o[e.direction]}}const UA={compile(e,t){return{kind:`container`,direction:e.direction,when:t.when,distribution:Ri(e.distribution),children:e.children.map((e,n)=>t.compileChild(e,as(t.path,n)))}},render(e,t){return zA(e.direction,e.children.map((n,r)=>t.renderChild(n,t.visible,HA(e,r))))}},WA={compile(e,t){return{kind:`segment`,when:t.when,name:e.name,id:es(e),settings:t.settingsOf(e),...e.opens!==void 0&&{opens:{open:t.parse(mc(e.opens.ref),`opens`),body:t.compileChild(e.opens.body,os(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=dv(t.scope,e.settings);try{if(!Ek(i.when,a))return[];let n=i.palette??t.palette,{styles:o,fragments:s,trail:c,drops:l}=t.evaluateSegment(e,a,n,t.region,{bg:i.bg,fg:i.fg,body:i.template,trail:e.trail}),u=e.opens!==void 0&&Ek(e.opens.open,t.scope),d=l.length>0||u?o.trigger:o.closed,f={width:r.width??`auto`,justify:r.justify??`left`,truncate:r.truncate??`right`,baseStyle:d,padding:t.padding},p=e.opens===void 0?[]:t.renderBody(e.opens.body,u,o.disclosure),m=p.slice(0,+(e.opens?.placement===`inline`)),h=p.slice(m.length),g=e.opens!==void 0&&h.some(e=>e.band===`own`)?Ak(Pk([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=LA(Pk(s,d)).map((e,t)=>({cells:Ak(e,{...f,trail:t===0?Pk(c,d):[]}),band:`own`,span:`shared`})),b=l.map(e=>({cells:Ak(Pk([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(RA)),[...x.map((e,t)=>t===0&&m.length>0?{cells:[...e.cells,...m.flatMap(e=>e.cells)],band:`own`,span:`row`}:e),...v]}catch(n){let r=n.message??String(n);t.onSegmentError?.(e.id,r);let i=r.replace(/\s*\n\s*/g,` `);return[{cells:Ak([new V(`⚠ ${e.id}: ${i}`,{end:``})],{width:`auto`,justify:`left`,truncate:`right`,padding:0,trail:GA(e,a,t)}),band:`own`,span:`shared`}]}}};function GA(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 KA={container:UA,segment:WA};function qA(e){return KA[e]}function JA(e){if(`ttl`in e)return{kind:`ttl`,durationMs:Qv(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 YA(e,t){switch(ls(e)){case`json`:return{kind:`json`,default:t};case`regex`:return{kind:`regex`,regex:new RegExp(e.regex),default:t};case`text`:return{kind:`text`,default:t}}}function XA(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:JA(n.cache),parse:YA(n.parse,n.default)});break;case`shell`:e.declareShell(t,n.command,{cache:JA(n.cache),parse:YA(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?Qv(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 ZA(e,t){let n=Zu.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 QA=e=>qa(void 0,null,e.globals.progression);function $A(e,t,n){let r=n?.cwd??process.cwd(),i=FS(e.globals.palette),a={store:t.variableStore,compiled:new Map,chromeCols:CE({style:`powerline`,charset:La}),width:80,basePalette:i,palette:i,progression:Ai[QA(e)],padding:1,seamCols:wE({style:`powerline`,charset:La}),layout:()=>[]},o=aA(t.drawnAt),s={action:a,activeSegment:o},c=Object.keys(e.looks),l=bg(e.presets),u=new Map([...RS(e),...qy(e)]),d=cv({...$k(a),...gA(a,o),...yA(a,o),...CA(a,o),...OA(a,o),...MA(s),...FA(o),looks:{fn:()=>c,argTypes:[]},presets:{fn:()=>l,argTypes:[]}},n?.clock,t.drawnAt),f=ZA(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 by)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=Hk(p,e.actions,g,u);let _=[];for(let[n,i]of Object.entries(e.variables))try{XA(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{XA(t,`${n}.${e}`,a,r)}catch(t){_.push(`Variable "${n}.${e}": ${t.message??String(t)}`)}let v=Object.create(null);for(let[t,n]of Object.entries(e.segments)){let e=(e,n,r=p)=>{try{return r(e)}catch(e){throw Error(`Template parse error in segments.${t}.${n}: ${e.message}`,{cause:e})}};v[t]={when:n.when===void 0?void 0:e(n.when,`when`,h),template:e(n.template,`template`),bg:n.bg===void 0?void 0:e(n.bg,`bg`),fg:n.fg===void 0?void 0:e(n.fg,`fg`),palette:n.palette===void 0?void 0:OS(n.palette)}}let y=(e,t,n)=>{try{return h(e)}catch(e){throw Error(`Template parse error in ${t}.${n}: ${e.message}`,{cause:e})}},b=t.variableStore,x=t=>{let n=e.segments[t.name]?.settings??{},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:()=>gs(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,settingsOf:x};return qA(e.kind).compile(e,n)},C=new Map;for(let t of l){let{node:n,path:r}=Cg(e,t);C.set(t,S(n,r))}let ee=new Map;for(let t of Ta){let n=e.globals[t];Ea(n)&&ee.set(t,ej(p,t,n))}return{segments:v,roots:C,activeSegment:o,menuRuntime:s,globalExpressions:ee,loadWarnings:_}}function ej(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 tj(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 nj(e,t){return e.kind===`decided`?e.name:t}function rj(e,t,n,r,i,a,o,s){let{perSegmentSink:c,onSegmentError:l,onRenderWarning:u}=o??{};r.drawAt(Wa(a.colorCompatibility));let{preset:d=vg}=s??{},f=Ai[s?.progression??QA(e)];t.menuRuntime.action.progression=f;let p=s?.look??ja(`none`,e.looks),m=s?.theme??NS(void 0,null,e.globals.palette),h=(e,t)=>({...i,term:{cols:a.width},theme:{effective:e},look:{effective:t}});r.applyInput(h(nj(m,ba),nj(p,ka))),t.menuRuntime.action.chromeCols=CE(a),t.menuRuntime.action.padding=a.padding,t.menuRuntime.action.width=a.width,t.menuRuntime.action.seamCols=wE(a);let g=lv(n),_=Oa(m,()=>tj(t,`palette`,g),e=>MS(e,e=>u?.(e))),v=Oa(p,()=>tj(t,`look`,g),t=>ja(t,e.looks));(_!==m||v!==p)&&r.applyInput(h(_.name,v.name));let y=_.value;t.menuRuntime.action.basePalette=y;let b=AS(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}=_a(i,a,s),u=oA(t.activeSegment,e.name,e.id,i,l,c),d=zk(u,s,o.bg,o.fg,n),f=o.body.evaluate(n),p=o.trail?.evaluate(n)??[];return{styles:{closed:d,get trigger(){return tA(i,oa(i,l,s).state,s)},get band(){return tA(i,oa(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&&Ek(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,ha(r,n)),renderBody:(e,t,n)=>C(e,i&&t,ga(n)),closeDisclosure:e=>eA(n,e)};return qA(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 "${vg}"; a miss here is merge/policy drift (have: ${[...t.roots.keys()].join(`, `)})`);let te=e=>{if(!Ek(e.when,g))return!1;if(e.kind===`container`)return!0;if(rb(e.name)===void 0)return!1;try{return Ek(t.segments[e.name].when,dv(g,e.settings))}catch{return!0}};return t.menuRuntime.action.layout=()=>BA(ee,te).map(e=>e.flatMap(e=>{let n=rb(e.name);return n===void 0?[]:[{...e,name:n,palette:t.segments[n].palette??b}]})),C(ee,!0,ma(f)).map(e=>TE(Nk(e.cells,a),a)).join(`
185
+ `)}var ij=class{kind=`box`;cell;lastChangedAt;constructor(e,t,n){this.name=e,this.type=t,uj(e,t,n,`initial value`),this.cell=h_.observable.box(n,{deep:!1}),this.lastChangedAt=Date.now()}read(){return this.cell.get()}set(e){uj(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}},aj=class{kind=`computed`;cell;constructor(e,t,n){this.name=e,this.type=t,this.cell=(0,h_.computed)(()=>{let e=n();return uj(this.name,this.type,e,`computed result`),e},{keepAlive:!0})}read(){return this.cell.get()}lastUpdatedMs(){return null}},oj=class{kind=`document`;cell;lastChangedAt;constructor(e,t){this.name=e,this.cell=h_.observable.box(lj(t),{deep:!1}),this.lastChangedAt=Date.now()}read(){return this.cell.get()}set(e){let t=lj(e);cj(this.cell.get(),t)||(this.cell.set(t),this.lastChangedAt=Date.now())}lastUpdatedMs(){return this.lastChangedAt}};function sj(e){return JSON.stringify(e)}function cj(e,t){return sj(e)===sj(t)}function lj(e){return e.kind===`ok`?{kind:`ok`,value:g_(e.value)}:e}function uj(e,t,n,r){let i=__(n);if(i!==t)throw TypeError(`Variable "${e}": ${r} type ${i} does not match declared type ${t}`)}var dj=class{nodes=new Map;defineBox(e,t,n){this.assertNotDefined(e),this.nodes.set(e,new ij(e,t,n))}defineDocument(e,t){this.assertNotDefined(e),this.nodes.set(e,new oj(e,t))}defineComputed(e,t,n){this.assertNotDefined(e);let r=e=>this.read(e);this.nodes.set(e,new aj(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,h_.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,h_.runInAction)(()=>n.set(t))}runInAction(e){(0,h_.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 sj(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 fj(e,t,n){return e+`\0`+t+`\0`+(n??``)}function pj(e,t){return new Set(bg(e.presets).filter(n=>Cg(e,n).path===`root`?t.root!==void 0:t.presets?.[n]?.root!==void 0))}function mj(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 hj(e,t){let n=new Map;for(let t of iC(e.projectDir,e.cwd,e.configFile)){let{dir:e,name:r}=mj(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 gj(e){return e.filter(Boolean).join(`
186
+ `)||null}var _j=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=fj(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=oC(e,t,n),i=r.kind===`file`?r.path:null,a=[uC(e,t),cC(r)],o;try{o=this.buildState(t,i,a)}catch(e){return e instanceof qo&&a.push(...e.warnings),{resolvedPath:i,warning:gj(a),state:null,error:e instanceof qo||e instanceof Error?e.message:String(e)}}return{resolvedPath:i,warning:gj(a),state:o,error:null}}buildState(e,t,n){let r=dC(t,yD),{config:i,raw:a}=r;n.push(...r.warnings);let o=mC(r,t??`<default>`),s=new dj,c=new hy(s,o.globals.default_empty_value??``,this.deps.gitService,this.deps.sessionState),l,u=[];try{l=$A(o,c,{cwd:e}),n.push(...l.loadWarnings);for(let{key:e,spec:t}of FO(o))u.push(OO(e,t));for(let{key:e,spec:t}of pD(o))u.push(mD(e,t))}catch(e){for(let e of u)e();throw c.dispose(),e}return{config:o,store:s,registry:c,compiled:l,neededInputPaths:JD(o),lastRenderCellsBySegment:new Map,validatorDisposers:u,authoredRoots:pj(i,a)}}refreshWatcher(e,t){e.configFilePath=t;let n=hj(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 vj=16384;var yj=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<vj){this.rollingTimestamps.push(e);return}this.rollingTimestamps[this.rollingHead]=e,this.rollingHead=(this.rollingHead+1)%vj}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:aT,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 bj={load:()=>({}),save:()=>{},flush:()=>{}};function xj(e){let t=new Map;for(let[n,r]of Object.entries(e))t.set(n,new Map(Object.entries(r)));return t}var Sj=class{sessions;storage;atom=(0,h_.createAtom)(`SessionState`);constructor(e=bj,t=256){this.maxSessions=t,this.storage=e,this.sessions=new Map,this.hydrateFromStorage()}useStorage(e){this.storage=e,this.hydrateFromStorage()}hydrateFromStorage(){this.sessions=xj(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,h_.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,h_.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,h_.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 Cj=(e,t)=>E(t);function wj(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 Tj=class{timer=null;pending=null;constructor(e,t=500,n=Cj){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 wj(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 Ej={default_bg:`string`,default_fg:`string`,default_empty_value:`string`,default_separator:`string`,default_truncate_marker:`string`,palette:`string`,look:`string`,preset:`string`,style:`string`,progression:`string`,autoWrap:`boolean`,padding:`number`,charset:`string`,updateNotice:`boolean`,colorCompatibility:`string`,menuGlyph:`string`},Dj=new Set([`1`,`true`]),Oj=new Set([`0`,`false`,``]);function kj(e,t){let n=eM(e),r=n.scope===`segment-palette`?`string`:Ej[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(Dj.has(t))return`true`;if(Oj.has(t))return`false`;throw Error(`persistValueText: "${e}" expects boolean-ish (1, 0, true, false), got "${t}"`)}function Aj(e){try{return r.readFileSync(e,`utf8`)}catch(e){if(e.code===`ENOENT`)return null;throw e}}function jj(e,t,n){try{if(t===null){r.rmSync(e,{force:!0});return}r.mkdirSync(c.dirname(e),{recursive:!0}),Ae(e,t)}catch(t){let r=`config write failed (${e}): ${t.message}`;throw n(`error`,r),Error(r)}}function Mj(e){return/^\s*$/.test(e)?null:co(e)}function Nj(e,t){return e!==null&&uo(e,t)!==void 0}function Pj(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(Pj),...i}}return e}function Fj(e){if(!Zs(e))return Pj(e);let{rows:t,...n}=e;return{rows:Object.fromEntries(Object.entries(t).map(([e,t])=>[e,Pj(t)])),...n}}const Ij=_D,Lj=Ij.segments,Rj=Ij.presets,zj=Ij.root;function Bj(e,t,n,r){if(!Nj(e,t)&&n===void 0)throw new $(`cannot edit ${r}: neither the config file nor the bundled default declares ${t.join(`.`)}`)}function Vj(e,t){let n=Ay(t);return t.scope===`segment-palette`&&Bj(e,[`segments`,t.segment],Lj[t.segment],n.join(`.`)),n}function Hj(e){return co(yo(e))}function Uj(){return Object.entries(zj.rows).map(([e,t])=>{let n=Pj(t);return{path:[`root`],fragment:Hj({rows:{[e]:n}}),unit:{path:[`root`,`rows`,e],value:n}}})}function Wj(e,t){let n=e===null?void 0:uo(e,t);return n===void 0?null:{path:t,fragment:n,unit:null}}function Gj(e,t){if(t===void 0)return null;let n=Fj(t);return{path:e,fragment:Hj(n),unit:{path:e,value:n}}}function Kj(e,t){let n=[`presets`,t],r=[...n,`root`],i=Rj[t];Bj(e,n,i,r.join(`.`));let a=Wj(e,r)??Gj(r,i?.root);return a!==null&&Bo(a.fragment)?a:null}function qj(e,t){let n=zo(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 Jj(e,t){return[...Uj(),Wj(e,[`root`]),Kj(e,t)].filter(e=>e!==null).reduce(qj,new Map)}function Yj(e,t,n){for(let{node:r,...i}of Jj(e,t).values())if(Ho(r,n))return i;throw new $(`${Xj(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 Xj(e,t){return Kj(e,t)?.path??[`root`]}function Zj(e,t){return t.scope===`preset-root`?Xj(e,t.preset):Ay(t)}function Qj(e,{unit:t}){return t===null?e:No(e,t.path,yo(t.value),_o)}function $j(e){let t=ky(e);if(t===null)throw Error(`"${e}" is not a valid persist target`);return t}function eM(e){let t=$j(e);if(t.scope===`preset-root`)throw Error(`"${e}" names a layout, not a value`);return t}function tM(e,t,n,r){nM(t,r),jj(t,r,e.logger),e.record(t,n,r)}function nM(e,t){try{return mC(fC(e,t,yD),e)}catch(e){throw e instanceof qo?new $(`refused: the config file would not load after this click — ${e.message}`):e}}function rM(e,t){let n=eM(t),r=Mj(Aj(e)??``),i=r===null?void 0:uo(r,Ay(n));return i!==void 0&&`value`in i?i.value:void 0}function iM(e,t,n){aM(e,t,n,[])}function aM(e,t,n,r){let i=Aj(t);tM(e,t,i,oM(n.reduce((e,[t,n])=>No(e,Vj(Mj(e),eM(t)),kj(t,n),_o),i??``),t,r,e=>e))}function oM(e,t,n,r){return n.reduce((e,{preset:n,id:i,setting:a,value:o})=>{let s=r(e,n,i),c=Yj(Mj(s),n,i),l=Ko(Qj(s,c),c.path,i,a,yo(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 sM(e,t,n){let r=Mj(e),i=[`presets`,t,`root`];for(let[a,{path:o,unit:s,node:c}]of Jj(r,t)){if(!Ho(c,n))continue;if(i.every((e,t)=>o[t]===e))return e;let l=s===null?po(e,c):yo(s.value);if(a!==`#`)return No(e,[...i,`rows`,a],l,_o);if(Kj(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 No(e,i,l,_o)}return e}function cM(e,t){return Fo(e,t,t[0]===`presets`&&t.length>2&&!xD(t[1])?2:0)}function lM(e,t,n){let r=n.map($j),i=Aj(t);if(i===null)return;let a=r.reduce((e,t)=>cM(e,Zj(Mj(e),t)),i);a!==i&&tM(e,t,i,a)}function uM(e){let t=e===null?void 0:uo(e,[`presets`]),n=new Set([...bD,...t?.kind===`object`?t.entries.map(e=>e.key):[]].map(wl));return Array.from({length:n.size+1},(e,t)=>`custom-${t+1}`).find(e=>!n.has(wl(e)))}function dM(e,t,n,r,i,a){let o=Aj(t),s=Mj(o??``),c=uM(s),l=[`presets`,c],u=Kj(s,n),d=[...u===null?[]:[[[...l,`root`],u.unit===null?po(o??``,u.fragment):yo(u.unit.value)]],...Object.keys(r).length===0?[]:[[[...l,`globals`],yo(r)]]],f=i.map(([e,t])=>{let n=Oy(c,e);return[Vj(s,eM(n)),kj(n,t)]});return tM(e,t,o,oM([...d,...f].reduce((e,[t,n])=>No(e,t,n,_o),No(o??``,l,`{}`,_o)),t,a.map(e=>({...e,preset:c})),sM)),c}function fM(e,t,n){if(xD(n))throw new $(`cannot delete preset "${n}": it is bundled — reset its settings instead`);let r=[`presets`,n],i=Aj(t),a=Mj(i??``);if(i===null||a===null||uo(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=uo(a,[`globals`,`preset`]);tM(e,t,i,[r,...o?.kind===`string`&&o.value===n?[[`globals`,`preset`]]:[]].reduce((e,t)=>cM(e,t),i))}function pM(e,t,n,r){let i=$j(n);if(i.scope!==`preset-root`)throw Error(`"${n}" is not a "presets.<name>.root" target`);let a=Aj(t),o=r.op===`remove`?r.target:r.anchor,s=Yj(Mj(a??``),i.preset,o),c=Qj(a??``,s),{after:l,placed:u}=mM(c,s.path,r,()=>{let e=nM(t,c);return bg(e.presets).map(t=>Cg(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 tM(e,t,a,l),u}function mM(e,t,n,r){switch(n.op){case`remove`:return{after:Wo(e,t,n.target),placed:null};case`insert`:{let i=YE(n.segment,n.anchor,r());return{after:Go(e,t,i,n.anchor,n.relation),placed:i}}}}const hM={load:()=>({}),save:()=>{}},gM=new Set(vy.map(e=>e.sessionKey)),_M=e=>gM.has(e)||e.startsWith(Vg),vM={past:[],future:[]},yM=e=>e.kind===`session`?`session:${e.key}`:`file:${e.file}`;var bM=class{state=new Map;constructor(e,t,n=hM){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)??vM;return{undo:t.length,redo:n.length}}history(e){return this.state.get(e)??vM}begin(){let e=new Map,t=(t,n)=>{let r=e.get(t)??new Map,i=r.get(yM(n));r.set(yM(n),i===void 0?n:{...n,before:i.before}),e.set(t,r)},n=this.sessionState,r=(e,r,i)=>{let a=r.filter(_M).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:CM([...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:CM([...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:CM([...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(yM));throw this.put(e,{past:wM(this.history(e).past,t),future:wM(this.history(e).future,t)}),new $(`${r}: ${o.map(EM).join(`, `)} changed since that edit — refusing to overwrite it; this session's undo history no longer steps it`)}let s=[];try{for(let r of t)this.write(e,r,r[n]),s.push(r);this.put(e,i)}catch(t){try{for(let t of s.reverse())this.write(e,t,t[a])}catch(e){throw Error(`${t.message}; and putting the step back failed, so it is half-applied: ${e.message}`)}throw t}}read(e,t){return t.kind===`session`?this.sessionState.get(e,t.key):Aj(t.file)}write(e,t,n){t.kind===`file`?jj(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||xM(n)>8388608;){let[e,t]=n.entries().next().value;n.size>1?n.delete(e):n.set(e,SM(t))}this.storage.save(Object.fromEntries(n)),this.state=n}};function xM(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 SM({past:e,future:t}){return e.length>0?{past:e.slice(1),future:t}:{past:e,future:t.slice(1)}}function CM(e){return e.slice(-50)}function wM(e,t){return e.map(e=>e.filter(e=>!t.has(yM(e)))).filter(e=>e.length>0)}function TM(e){return e.map(EM).join(`, `)}function EM(e){return e.kind===`session`?`session setting "${e.key}"`:e.file}function DM(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 OM(e){return Array.isArray(e)&&e.every(e=>Array.isArray(e)&&e.every(DM))}function kM(e){if(typeof e!=`object`||!e)return!1;let t=e;return OM(t.past)&&OM(t.future)}function AM(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(kM))return e}catch{}return t(`warn`,`settings-history load: unexpected shape, starting empty`),{}},save:n=>{try{r.mkdirSync(c.dirname(e),{recursive:!0}),Ae(e,JSON.stringify(n),384)}catch(e){let n=`settings-history write failed — the change landed but is not undoable: ${e.message}`;throw t(`error`,n),Error(n)}}}}function jM(e,t,n,r){let i=De({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 MM(e){let t=jM(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 NM(){return{probeTmux:MM,claudeSettingsPath:oT()}}function PM(e){return r.existsSync(e.claudeSettingsPath)?r.readFileSync(e.claudeSettingsPath,`utf8`):``}function FM(e){if(/^\s*$/.test(e))return{};let t=vo.parse(e);if(typeof t!=`object`||!t||Array.isArray(t))throw Error(`not a JSON object`);let n=t.env;if(n===void 0)return{};if(typeof n!=`object`||!n||Array.isArray(n))throw Error("`env` is not an object");return n}function IM(e,t){return t===void 0?{kind:`unreported`}:t===null?{kind:`outside`}:{kind:`inside`,hint:t,termfeatures:e.probeTmux(t)}}function LM(e){try{return FM(PM(e))}catch(t){throw Error(`cannot read ${e.claudeSettingsPath}: ${t instanceof Error?t.message:String(t)}`,{cause:t})}}function RM(e,t){return{tmux:IM(e,t),claudeSettingsEnv:LM(e)}}function zM(e,t,n){switch(t.kind){case`claude-settings-env`:{let i=No(PM(e),[`env`,t.name],JSON.stringify(t.value),vo);return r.mkdirSync(c.dirname(e.claudeSettingsPath),{recursive:!0}),Ae(e.claudeSettingsPath,i),{...n,claudeSettingsEnv:LM(e)}}default:return t.kind}}const BM=/^─{20,}/,VM=/^❯(\s|$)/,HM=/›\s*stashed$/;function UM(e){if(e.inMode)return{kind:`in-mode`};let t=e.screen.map(e=>e.trimEnd()),n=t.flatMap((e,t)=>BM.test(e)?[t]:[]).at(-2);return n===void 0||!VM.test(t[n+1]??``)?{kind:`no-prompt`}:HM.test(t[n-1]??``)?{kind:`stashed`}:{kind:`ready`}}const WM={"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 GM(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=UM(e.read(t));if(r.kind!==`ready`)return{kind:`refused`,reason:WM[r.kind]};let i=e.type(t,n);return i.kind===`typed`?{kind:`typed`,pane:t.pane}:i}const KM=`cc-candybar-slash`;function qM(e,t,n,r){let i=jM(e,t,n,r);if(i.kind===`failed`)throw Error(i.reason);return i}function JM(e){let t=qM(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 YM(e,t){let n=qM(e,`claude-input.type`,[`load-buffer`,`-b`,KM,`-`,`;`,`send-keys`,`-t`,e.pane,`C-s`,`;`,`paste-buffer`,`-p`,`-d`,`-b`,KM,`-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 XM(){return{read:JM,type:YM}}function ZM(e){if(!e)throw new $(`session id is required`);if(e.includes(`/`)||e.includes(`..`))throw new $(`invalid session id "${e}"`);return e}function QM(e){return $M(()=>decodeURIComponent(e))}function $M(e){try{return e()}catch(e){throw e instanceof URIError?new $(`malformed wire encoding: ${e.message}`):e}}function eN(e,t){let n=De({bin:`/usr/bin/pbcopy`,stdinInput:e,category:`click.pbcopy`});if(!n.ok){if(n.reason===`rate-limited`){t.dlog(`warn`,`click.pbcopy rate-limited: ${n.error??``}`);return}throw Error(`pbcopy failed (${n.reason}, exit ${n.exitCode??`null`})`)}}const tN=(e,t)=>eN(QM(e),t),nN=(e,t)=>{let n=De({bin:`/usr/bin/open`,args:[`-a`,`Visual Studio Code`,QM(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`})`)}},rN=(e,t)=>eN(QM(e),t),iN=(e,t)=>eN(QM(e),t),aN=(e,t)=>{let n=ZM(QM(e));t.sessionState.get(n,`toolbar-expanded`)?t.sessionState.clear(n,`toolbar-expanded`):t.sessionState.set(n,`toolbar-expanded`,`1`)},oN=(e,t)=>{let[n=``,...r]=$M(()=>Qw(e)),i=ZM(n);if(r.length===0)throw new $(`set-state: <key>/<value> is required (have keys: ${DO().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: ${DO().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=kO(t,n);if(!i.ok)throw new $(`set-state: pair ${e/2+1}: ${i.reason}`);a.push({key:t,value:i.value})}t.sessionState.setBatch(i,a);let o=a.map(e=>`${e.key}=${e.value}`).join(` `);t.dlog(`info`,`set-state: ${o} (session=${i})`)},sN=/^-?\d+$/;function cN(e,t,n){return e>n?t:e<t?n:e}const lN=(e,t)=>{let[n=``,r=``,i=``]=$M(()=>Qw(e)),a=ZM(n);if(!r)throw new $(`step-state: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!sN.test(i))throw new $(`step-state: delta must be an integer, got "${i}"`);let o=parseInt(i,10),s=AO(r);if(!s)throw new $(`step-state: key "${r}" is not a bounded (range) state key (have keys: ${DO().join(`, `)})`);let c=t.sessionState.get(a,r),l=c&&sN.test(c)?uN(s,parseInt(c,10)):dN(`step-state`,r,s,NO(t.configFor(hN(t,a)),e=>t.sessionState.get(a,e),r)),u=cN(l+o,s.min,s.max),d=kO(r,String(u));if(!d.ok)throw new $(`step-state: ${d.reason}`);t.sessionState.set(a,r,d.value),t.dlog(`info`,`step-state: ${r} ${l}→${d.value} (by ${o}, session=${a})`)};function uN(e,t){return Math.max(e.min,Math.min(e.max,t))}function dN(e,t,n,r){if(r===null)return n.min;if(!sN.test(r))throw new $(`${e}: "${t}" shows ${JSON.stringify(r)} before any click, not an integer to step`);return uN(n,parseInt(r,10))}const fN=`render-origin`;function pN(e){return JSON.stringify(e)}function mN(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 hN(e,t){let n=e.sessionState.get(t,fN);if(n===null)throw new $(`session ${t} has not rendered yet — no config to act on`);return mN(n)}function gN(e){return sC(e.projectDir,e.cwd,e.configFile??void 0)}function _N(e,t){return gN(hN(e,t))}function vN(e,t){return{record:(n,r,i)=>e.journal.file(t,n,r,i),logger:e.dlog}}const yN=(e,t)=>{let[n=``,r=``,i=``]=$M(()=>Qw(e)),a=ZM(n);if(!r)throw new $(`set-config: <key>/<value> is required (have keys: ${oD().join(`, `)})`);let o=sD(r,i);if(!o.ok)throw new $(`set-config: ${o.reason}`);let s=_N(t,a);iM(vN(t,a),s,[[r,o.value]]),t.dlog(`info`,`set-config: ${r}=${o.value} → ${s} (session=${a})`)},bN=(e,t)=>{let[n=``,r=``,i=``]=$M(()=>Qw(e)),a=ZM(n);if(!r)throw new $(`step-config: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!sN.test(i))throw new $(`step-config: delta must be an integer, got "${i}"`);let o=parseInt(i,10),s=cD(r);if(!s)throw new $(`step-config: key "${r}" is not a bounded (range) config key (have keys: ${oD().join(`, `)})`);let c=hN(t,a),l=gN(c),u=rM(l,r),d=typeof u==`number`?uN(s,u):dN(`step-config`,r,s,uD(t.configFor(c),r)),f=cN(d+o,s.min,s.max),p=sD(r,String(f));if(!p.ok)throw new $(`step-config: ${p.reason}`);iM(vN(t,a),l,[[r,p.value]]),t.dlog(`info`,`step-config: ${r} ${d}→${p.value} (by ${o}) → ${l} (session=${a})`)},xN=(e,t)=>{let[n=``]=$M(()=>Qw(e)),r=ZM(n),i=hN(t,r),a=t.configFor(i),o=e=>t.sessionState.get(r,e),s=pO(a,o),c=mO(a,o);if(s.length+c.length===0){t.dlog(`info`,`save: nothing unsaved (session=${r})`);return}let l=s.map(e=>{let t=kO(e.sessionKey,e.value);if(!t.ok)throw new $(`save: ${t.reason}`);return[e.target,t.value]});CN(`save`,c);let u=gN(i);aM(vN(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(SN)].join(` `)} → ${u} (session=${r})`)},SN=e=>`${e.preset}/${e.id}.settings.${e.setting}=${hs(e.value)}`;function CN(e,t){for(let n of t){let t=kO(n.key,hs(n.value));if(!t.ok)throw new $(`${e}: ${t.reason}`)}}const wN=(e,t)=>{let[n=``]=$M(()=>Qw(e)),r=ZM(n),i=hN(t,r),a=_O(t.configFor(i),e=>t.sessionState.get(r,e)),o=a.picks.map(e=>{let t=kO(e.sessionKey,e.value);if(!t.ok)throw new $(`save-preset: ${t.reason}`);return[e.configKey,t.value]});CN(`save-preset`,a.placements);let s=gN(i),c=dM(vN(t,r),s,a.from,a.globals,o,a.placements);t.reloadConfig(i);for(let e of[...vy.map(e=>e.sessionKey),...a.placements.map(e=>e.key)])t.sessionState.clear(r,e);t.sessionState.set(r,_y.preset.sessionKey,c),t.dlog(`info`,`save-preset: ${[`${c} from=${a.from}`,...o.map(([e,t])=>`${e}=${t}`),...a.placements.map(SN)].join(` `)} → ${s} (session=${r})`)},TN=(e,t)=>{let[n=``,r=``]=$M(()=>Qw(e)),i=ZM(n);if(!r)throw new $(`delete-preset: <name> is required (shape: <sessionId>/<name>)`);let a=hN(t,i),o=gN(a);fM(vN(t,i),o,r),t.reloadConfig(a);let s=_y.preset.sessionKey;t.sessionState.get(i,s)===r&&t.sessionState.clear(i,s),t.dlog(`info`,`delete-preset: ${r} ← ${o} (session=${i})`)},EN=(e,t)=>{let[n=``,...r]=$M(()=>Qw(e)),i=ZM(n),a=oD(),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=hN(t,i),c=gN(s),l=r.map(vO),u=l.flatMap(e=>e.fileKeys),d=l.flatMap(e=>e.sessionKeys);lM(vN(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 DN(e,t){let n=(e,t)=>[...is(Cg(e,t).node)].filter(e=>e.kind===`segment`),r=new Set(bg(t.presets).flatMap(e=>n(t,e).map(t=>`${e}\0${es(t)}`)));return bg(e.presets).flatMap(t=>n(e,t).flatMap(e=>r.has(`${t}\0${es(e)}`)?[]:Object.values(e.drafts??{}).map(e=>e.key)))}const ON=(e,t)=>{let[n=``,r=``,i=``]=$M(()=>Qw(e)),a=ZM(n);if(!r)throw new $(`apply-layout-op: <key>/<op> is required (have: ${oD().join(`, `)})`);let o=sD(r,i);if(!o.ok)throw new $(`apply-layout-op: ${o.reason}`);let s=JE(o.value);if(s===null)throw new $(`apply-layout-op: "${o.value}" is not a layout op token`);let c=hN(t,a),l=gN(c),u=t.configFor(c),d=pM(vN(t,a),l,r,s);t.reloadConfig(c);let f=DN(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})`)},kN=(e,t)=>{let[n=``]=$M(()=>Qw(e)),r=ZM(n);t.journal.commit();let i=t.history.undo(r);t.dlog(`info`,`undo: restored ${TM(i)} (session=${r})`)},AN=(e,t)=>{let[n=``]=$M(()=>Qw(e)),r=ZM(n);t.journal.commit();let i=t.history.redo(r);t.dlog(`info`,`redo: re-applied ${TM(i)} (session=${r})`)},jN=(e,t)=>{ZM(QM(e)),t.applyUpdate()},MN=`client-hints`;function NN(e,t){let n=e.sessionState.get(t,MN);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 xC(r)}function PN(e,t,n){let r=hb(n);e.sessionState.setBatch(t,yb(r)),e.dlog(`info`,`doctor: ${r.map(e=>`${e.check.name}=${e.verdict.ok?`ok`:`failed`}`).join(` `)} (session=${t})`)}const FN=(e,t)=>{let n=ZM(QM(e));PN(t,n,RM(t.doctor,NN(t,n).tmux))},IN=(e,t)=>{let[n=``,r=``]=$M(()=>Qw(e)),i=ZM(n),a=gb(r);if(a===void 0)throw new $(`doctor-fix: unknown check "${r}"`);let o=RM(t.doctor,NN(t,i).tmux),s=a.probe(o);if(s.ok||s.fix===void 0)throw new $(`doctor-fix: ${a.label} — ${s.ok?`nothing to fix`:s.reason}`);let c=zM(t.doctor,s.fix,o);t.dlog(`info`,`doctor-fix: ${a.name} → ${s.fix.kind} ${s.fix.name}=${s.fix.value} (session=${i})`),PN(t,i,c)},LN=(e,t)=>{let[n=``,...r]=$M(()=>Qw(e)),i=ZM(n),a=hN(t,i),o=Object.values(t.configFor(a).actions).filter(e=>`ceiling`in e).find(e=>{let t=kx(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})`)},RN=(e,t)=>{let[n=``,r=``]=$M(()=>Qw(e)),i=ZM(n),a=Object.values(t.configFor(hN(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: ${a.map(e=>e.slash).join(`, `)||`none`})`);let s=GM(t.claudeInput,NN(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})`)},zN=`config-override`,BN=new Map([[Mw,tN],[`load-config`,(e,t)=>{let n=e.indexOf(`/`);if(n===-1)throw new $(`load-config: expected <sessionId>/<path> (missing separator)`);let r=ZM($M(()=>decodeURIComponent(e.slice(0,n)))),i=$M(()=>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,zN),t.dlog(`info`,`load-config: override cleared (session=${r})`)):(t.sessionState.set(r,zN,i),t.dlog(`info`,`load-config: ${i} (session=${r})`))}],[Nw,nN],[Aw,oN],[jw,lN],[Lw,yN],[Rw,bN],[Hw,EN],[zw,xN],[Bw,wN],[Vw,TN],[Uw,ON],[Ww,kN],[Gw,AN],[Fw,rN],[Iw,iN],[Pw,aN],[Kw,jN],[qw,FN],[Jw,IN],[Yw,LN],[Xw,RN]]),VN=new Set([Aw,jw,Lw,Rw,Hw,zw,Bw,Vw,Uw,Ww,Gw,Pw,Kw,qw,Jw,Yw,Xw]),HN=(e,t)=>{let n=[],r=!1,i=null;for(let{verb:a,value:o}of nT(eT(e))){if(!i&&VN.has(a)){let e=Qw(o);e.length>0&&e[0]&&(i=e[0])}let e=BN.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 UN(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 WN=new Map([...BN,[kw,HN]].map(([e,t])=>[e,UN(t)]));Object.freeze([...WN.keys()]);const GN=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`]),KN=[[`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 qN(e){let t={missingRequired:[],typeMismatches:[],unknownTopLevelFields:[]},n=typeof e==`object`&&e&&!Array.isArray(e)?e:{};for(let[e,r]of KN){let i=YN(n,e);if(i==null)t.missingRequired.push(e);else{let n=JN(i);n!==r&&t.typeMismatches.push({path:e,expected:r,got:n})}}for(let e of Object.keys(n))GN.has(e)||t.unknownTopLevelFields.push(e);return{data:e,report:t}}function JN(e){return Array.isArray(e)?`array`:typeof e==`string`&&!e.isWellFormed()?`ill-formed string`:typeof e}function YN(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 XN(e,t){switch(e){case`vars`:return{what:e,vars:ZN(t)};case`segments`:return{what:e,segments:nP(t)};case`config`:return{what:e,config:oP(t)}}}function ZN(e){if(e===null)return[];let{store:t,registry:n,config:r}=e,i=eP(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,...QN(r),lastError:a===void 0?null:{timestampMs:a.timestamp,message:a.message},ageMs:$N(r.lastUpdatedMs())})}return o}function QN(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 $N(e){return e===null?null:Math.max(0,Date.now()-e)}function eP(e){let t=new Map;for(let[n,r]of Object.entries(e.variables))t.set(n,tP(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}`,tP(i));return t}function tP(e){return e.kind}function nP(e){if(e===null)return[];let{store:t,config:n,lastRenderBySegment:r}=e,i=new Set(t.names()),a=iP(n),o=rP(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:aP(t.template,n.helpers,i),placements:(o.get(e)??[]).map(e=>({id:e,lastRender:r.get(e)??null}))})}return s}function rP(e){let t=new Map;for(let n of bg(e.presets))for(let r of is(Cg(e,n).node)){if(r.kind!==`segment`)continue;let e=t.get(r.name)??[],n=es(r);e.includes(n)||t.set(r.name,[...e,n])}return t}function iP(e){let t=[],n=new Set;for(let r of is(ec(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 aP(e,t,n){let r=new Set;for(let i of a_(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 oP(e){return e===null?null:e.config}const sP=[`vars`,`segments`,`config`];function cP(e){return typeof e==`string`&&sP.includes(e)}function lP(e){return Math.max(1,e-2)}var uP=class{thresholds={LOW:50,MEDIUM:80};getContextUsageThresholds(){return this.thresholds}ratioPercentages(e,t){let n=Math.min(100,Math.max(0,Math.round(e/t*100)));return{percentage:n,contextLeftPercentage:Math.max(0,100-n)}}calculateContextFromHookData(e){let t=e.context_window;if(!t?.current_usage)return E(`No current_usage in hook data, falling back to transcript parsing`),null;let n=t.current_usage,r=t.context_window_size,i=(n.input_tokens||0)+(n.cache_creation_input_tokens||0)+(n.cache_read_input_tokens||0);E(`Native current_usage: input=${n.input_tokens}, cache_create=${n.cache_creation_input_tokens}, cache_read=${n.cache_read_input_tokens}, total=${i} (limit: ${r})`);let a=this.ratioPercentages(i,r);return{totalTokens:i,maxTokens:r,percentage:t.used_percentage==null?a.percentage:Math.round(t.used_percentage),contextLeftPercentage:t.remaining_percentage==null?a.contextLeftPercentage:Math.round(t.remaining_percentage)}}async calculateContextTokensFromTranscript(e,t){try{E(`Calculating context tokens from transcript: ${e}`);let n=await lk(e);if(n.length===0)return E(`No entries in transcript`),Y;let r=null;for(let e=n.length-1;e>=0;e--){let t=n[e];if(t&&t.message?.usage?.input_tokens&&t.isSidechain!==!0){r=t,E(`Context segment: Found most recent entry at ${t.timestamp.toISOString()}, stopping search`);break}}if(r?.message?.usage){let e=r.message.usage,n=(e.input_tokens||0)+(e.cache_read_input_tokens||0)+(e.cache_creation_input_tokens||0);return E(`Most recent main chain context: ${n} tokens (limit: ${t})`),J({totalTokens:n,maxTokens:t,...this.ratioPercentages(n,t)})}return E(`No main chain entries with usage data found`),Y}catch(e){return X(`context transcript: ${e instanceof Error?e.message:String(e)}`)}}async getContextInfo(e){let t=this.calculateContextFromHookData(e);if(t)return J(t);let n=e.context_window?.context_window_size??2e5;return this.calculateContextTokensFromTranscript(e.transcript_path,n)}},dP=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=SD(t);if(n&&r!==0&&n.cursor.mtimeMs===r)return this.touch(e,n),{kind:`ok`,value:n.value};let i=await pk(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 fP={messageCount:0,recent:[]};function pP(e,t){if(t.isSidechain)return e;let n=[...e.recent,t];return{messageCount:e.messageCount+ +!!sk(t),recent:n.length>20?n.slice(-20):n}}function mP(e){let t=null,n=null;for(let r of e){let e=r.type||r.message?.role||r.message?.type;if(sk(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 hP=class{fold=new dP(fP,pP);async getMetricsInfo(e,t){if(E(`Getting metrics from hook data for session: ${e}`),!t.cost)return Y;let n=await this.fold.read(e,t.transcript_path);return n.kind===`failed`?X(`metrics (${e}): ${n.reason}`):J({responseTime:t.cost.total_api_duration_ms/1e3,lastResponseTime:mP(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 gP={command:null,todos:[],pending:[],done:[]};function _P(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 vP(e,t){if(t.isSidechain)return e;let n=sk(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=_P(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 yP(e){return{command:e.command,todos:e.todos,running:e.pending.reduce((e,t)=>_P(e,t.name),[]),done:e.done}}var bP=class{fold=new dP(gP,vP);async getActivityInfo(e,t){let n=await this.fold.read(e,t.transcript_path);return n.kind===`failed`?X(`activity (${e}): ${n.reason}`):J(yP(n.value))}};const xP=new Map;function SP(e){if(!e)return``;let t=e.indexOf(`,`);return t<0?e:e.slice(0,t)}var CP=class{async getSessionId(){if(!process.env.TMUX_PANE)return Y;let e=SP(process.env.TMUX),t=xP.get(e);if(t!==void 0)return t;E(`Getting tmux session ID, TMUX_PANE: ${process.env.TMUX_PANE}`);let n=await Ee({bin:`tmux`,args:[`display-message`,`-p`,`#S`],timeoutMs:1e3,category:`tmux`}),r=n.ok?n.stdout.trim()?J(n.stdout.trim()):Y:X(`tmux display-message: ${n.reason}`);return xP.set(e,r),r}isInTmux(){return!!process.env.TMUX_PANE}};const wP=e=>`${e.sessionId}|${e.projectDir}|${e.cwd}`;var TP=class{readings=new Map;inFlight=new Map;constructor(e,t=Date.now){this.edge=e,this.now=t}getCeiling(e){let t=wP(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=wP(e);try{this.edge.move(n.value,e,t)}finally{this.readings.delete(r),this.inFlight.delete(r),this.fetch(r,e)}}};const EP=c.join(`lib`,`ceiling_config.py`),DP=c.join(`skills`,`ceiling`,`bin`,`ceiling`);function OP(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 kP(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 AP(e,t){if(!r.existsSync(e))return Y;let n;try{n=OP(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=kP([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=[EP,DP].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 jP(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 MP(e){return e.stderr.trim()||e.error||`${e.reason}${e.exitCode===null?``:` (exit ${e.exitCode})`}`}function NP(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 PP(e,t){let n=await Ee({bin:`python3`,args:[`-c`,`
188
189
  import json, math, sys
189
190
  sys.path.insert(0, sys.argv[1])
190
191
  from ceiling_config import CONFIG_NAME, anchored, ceiling_in, in_force, session_directory
@@ -193,26 +194,26 @@ ceiling = in_force(directory, anchored(sys.argv[3]))
193
194
  layer = ceiling_in(directory / CONFIG_NAME)
194
195
  print(json.dumps({"ceiling": "off" if ceiling == math.inf else ceiling,
195
196
  "session": layer.text if layer else None}))
196
- `,c.join(e,`lib`),t.sessionId,t.cwd],env:KN(t),timeoutMs:3e3,category:`memento.read`});return n.ok?JN(n.stdout):X(qN(n))}function XN(e,t,n){let r=De({bin:c.join(e,HN),args:n.kind===`set`?[`set`,`session`,n.to]:[`clear`,`session`],env:KN(t),timeoutMs:5e3,category:`memento.move`});if(!r.ok)throw Error(qN(r))}function ZN(){let e=Gw();return{locate:t=>GN(e,t),read:YN,move:XN}}var QN=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 $N=new ej;we($N.launchStats);const eP=new Mv({counters:$N,logger:Q}),tP=new Bv({watchers:eP,logger:Q}),nP=new ok,rP=new rj,iP=new Zj(rP,Q),aP=new QN(Ge()),oP=new TN,sP=new AN,cP=new FN,lP=new RN,uP=new BN(ZN()),dP=new QA({gitService:tP,sessionState:rP,watchers:eP},{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)}`)}}),fP=60*1e3;function pP(){let e=import.meta.url,n=[];e.startsWith(`file://`)&&n.push(ne(e)),t.argv[1]&&n.push(t.argv[1]);let i=new Map;for(let e of n)try{i.set(e,r.statSync(e).mtimeMs)}catch{}let a=null,o=()=>{for(let[e,t]of i)try{if(r.statSync(e).mtimeMs!==t){Q(`info`,`binary mtime changed (${e}); shutting down`),a&&clearInterval(a),kP(0);return}}catch(e){Q(`warn`,`bin stat failed: ${e.message}`)}};return{arm(){i.size!==0&&(a=setInterval(o,fP),a.unref())},checkNow:o}}const mP=pP(),hP=jO({entryUrl:import.meta.url,intervalMs:fP,releaseIntervalMs:216e5,registryUrl:t.env.CC_CANDYBAR_REGISTRY_URL??`https://registry.npmjs.org`,fetchImpl:fetch,onApplied:()=>mP.checkNow(),log:Q});let gP=null,_P=null,vP=0;function yP(){t.on(`uncaughtException`,e=>{Q(`error`,`uncaughtException: ${e.stack||e.message}`),kP(1)}),t.on(`unhandledRejection`,e=>{Q(`error`,`unhandledRejection: ${String(e)}`),kP(1)});for(let e of[`SIGINT`,`SIGTERM`,`SIGHUP`])t.on(e,()=>{Q(`info`,`received ${e}, shutting down`),kP(0)});try{vP=BC(t.env)}catch(e){Q(`error`,`refusing to boot: ${e.message}`),kP(1);return}gP=FT(t.pid);let e=GT(qT(gP));if(!e.decision.allow){Q(`warn`,`fork-bomb breaker: ${e.decision.reason}; refusing to boot`),kP(1);return}_P=e.registryPath,r.mkdirSync(Ne(),{recursive:!0}),Ie(Pe()),rP.useStorage(new oj(ze(),500,Q)),iP.useStorage(sM(Be(),Q)),RT({anchor:LT(t.env),isAlive:zT,onOrphaned:e=>{Q(`info`,`parent watchdog: ${e}; shutting down`),kP(0)}}),bP(g.createServer({allowHalfOpen:!1},e=>{AP(e)}),Pe(),!1)}function bP(e,n,r){e.removeAllListeners(`error`),e.removeAllListeners(`listening`),e.once(`error`,i=>{if(i.code!==`EADDRINUSE`){Q(`error`,`server error: ${i.message}`),kP(1);return}if(r){Q(`info`,`lost rebind race; another daemon is alive — exiting`),t.exit(0);return}xP(e,n)}),e.listen(n,()=>SP(n))}function xP(e,n){let i=TT(ET(Le(n)),(e,t)=>PT(e,t,{readStartTime:NT,pidAlive:zT}));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}`),kP(1);return}}bP(e,n,!0)}function SP(e){let n=kT(e);if(n.kind!==`present`){Q(`warn`,`no ownable socket at bind callback (${n.kind}); exiting`),kP(0);return}EP(e);try{r.chmodSync(e,384)}catch(e){Q(`warn`,`chmod socket failed: ${e.message}`)}Q(`info`,`daemon up: pid=${t.pid} v=3 sock=${e} heapCap=${Math.round(C.getHeapStatistics().heap_size_limit/1048576)}MB rssLimit=${Math.round(vP/1048576)}MB`),rw();let i=aP.reset();i!==null&&Q(`warn`,`diagnostic dump wipe failed: ${i}`),mP.arm(),hP.arm(),TP(),CP(e,n.identity)}function CP(e,n){MT({bound:n,myPid:t.pid,readIdentity:()=>kT(e),readLease:()=>ET(Le(e)),shutdown:e=>kP(e),log:Q}).arm()}let wP=null;function TP(){wP=WC(JC($N.startedAt.getTime(),e=>kP(e),{rssLimitBytes:vP})),wP.arm()}function EP(e){let n=DT(Le(e),{pid:t.pid,version:3,binPath:t.argv[1],startTime:gP});n!==null&&Q(`warn`,`lease write failed: ${n}`)}let DP=0,OP=!1;function kP(e){if(!OP){OP=!0,setTimeout(()=>t.kill(t.pid,`SIGKILL`),500);try{tP.close()}catch(e){Q(`warn`,`gitService close failed: ${e.message}`)}try{nP.close()}catch(e){Q(`warn`,`usageStore close failed: ${e.message}`)}try{eP.closeAll()}catch(e){Q(`warn`,`watcherRegistry close failed: ${e.message}`)}try{rP.flush()}catch(e){Q(`warn`,`sessionState flush failed: ${e.message}`)}OT(Re(),t.pid),_P!==null&&KT(_P,t.pid,UT,e=>r.unlinkSync(e)),t.exit(e)}}function AP(e){DP++,$N.inFlight=DP;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:()=>kP(r);try{e.end(pC(n),i)}catch(e){Q(`warn`,`response write failed: ${e.message}`),i?.()}},r=setTimeout(()=>{$N.requestsTimedOut++,n({ok:!1,error:`request exceeded 200ms`,code:`TIMEOUT`,daemonV:3},null)},200),i=mC(e=>{MP(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),DP=Math.max(0,DP-1),$N.inFlight=DP})}const jP=e=>({resp:e,exitAfterFlush:null});async function MP(e){if(!e||typeof e!=`object`||typeof e.v!=`number`)return jP({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 jP({ok:!0,stats:$N.snapshot({gitCache:tP.getStats(),usageCache:nP.getStats(),renderCacheSize:dP.size,watchersActive:eP.size(),nextRestartReason:wP?.describeNextRestart()??null})});if(e.kind===`render`){$N.requestsTotal++;let t=Date.now();try{let{report:n}=cN(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 $N.requestsErrored++,Q(`warn`,`BAD_REQUEST: ${r.join(`; `)}`),jP({ok:!1,error:`malformed hookData: ${r.join(`; `)}`,code:`BAD_REQUEST`,daemonV:3});let i=e.hookData.workspace.project_dir,{configFile:a,unknownFlagsError:o}=NP(e.args),s=e.hookData.session_id,c=oC(e),l=JSON.stringify(c);rP.get(s,`client-hints`)!==l&&rP.set(s,JM,l);let u=rP.get(s,`config-override`)??a??c.configEnv,d=dP.getOrCreate(i,e.cwd,u),f=MM({projectDir:i,cwd:e.cwd,configFile:u??null});rP.get(s,`render-origin`)!==f&&rP.set(s,jM,f);let p=c.termCols,m=wN(p??120),h=uE(c.termRows),{authoredRoots:g}=d.state,_=t=>rP.get(e.hookData.session_id,t),v=yD(d.state.config,_,e=>g.has(e)),y=await ID(e.hookData,RP,e.cwd,d.state.neededInputPaths(v.preset),v,c,ZD(d.state.config,_).length),b=[],x=bD(v,m),S=RA(d.state.config,d.state.compiled,d.state.store,d.state.registry,y,x,{perSegmentSink:d.state.lastRenderCellsBySegment,onRenderWarning:e=>b.push(e)},xD(v)),C=rP.get(e.hookData.session_id,`click.error`);C&&rP.clear(e.hookData.session_id,`click.error`);let ee=[o,d.lastError,C].filter(Boolean).join(`
197
- `),te=hP.notice({sessionId:s,dismissed:rP.get(s,_O),enabled:v.updateNotice}),ne=d.lastError===null?null:d.configFilePath,re=hE(ee,te,[d.lastWarning??``,...b].filter(Boolean).join(`
198
- `)),ie=aP.sync(s,re===null?null:_E(re));ie!==null&&Q(`warn`,`diagnostic dump failed: ${ie}`);let ae=vE(S,re,{fullText:ie===null?{kind:`file`,path:aP.pathFor(s)}:{kind:`unavailable`,reason:ie},failedConfigFile:ne},{width:m,rowCap:h,colorCompatibility:v.colorCompatibility}),w=Date.now()-t,T=tP.getStats(),oe=nP.getStats();return Q(`info`,`render sid=${e.hookData.session_id??`?`} took=${w}ms termCols=${p??`?`} termRows=${c.termRows??`?`} width=${m} git=${T.size}/${T.hits}h/${T.misses}m usage=${oe.size}/${oe.hits}h/${oe.misses}m err=${ee?`Y`:`N`} upd=${te.length} warn=${d.lastWarning?`Y`:`N`}`),jP({ok:!0,output:ae+`
199
- `})}catch(e){throw $N.requestsErrored++,e}}if(e.kind===`click`)return jP(await zP(e.verb,e.value));if(e.kind===`debug`){if(!CN(e.what))return jP({ok:!1,error:`unknown debug 'what': ${String(e.what)} (have: ${SN.join(`, `)})`,code:`BAD_REQUEST`,daemonV:3});let t=dP.firstState(),n=t===null?null:{store:t.store,registry:t.registry,config:t.config,compiled:t.compiled,lastRenderBySegment:e.what===`segments`?LP(t.lastRenderCellsBySegment,t.config.globals.charset??`unicode`,t.config.globals.colorCompatibility??`truecolor`):IP};return jP({ok:!0,debug:dN(e.what,n)})}return jP({ok:!1,error:`unknown kind`,code:`BAD_REQUEST`,daemonV:3})}function NP(e){let{values:t,tokens:n}=ie({args:e.slice(1),options:{config:{type:`string`}},strict:!1,tokens:!0,allowPositionals:!0}),r=[...new Set((n??[]).filter(e=>e.kind===`option`&&e.name!==`config`).map(e=>`--${e.name}`))];return{configFile:sC(t.config),unknownFlagsError:r.length>0?`Unknown flags: ${r.join(`, `)}`:null}}const PP={sessionState:rP,dlog:Q,applyUpdate:()=>hP.act(),doctor:lM(),memento:uP,history:iP,configFor:e=>dP.getOrCreate(e.projectDir,e.cwd,e.configFile??void 0).state.config,reloadConfig:e=>dP.reload(e.projectDir,e.cwd,e.configFile??void 0)},FP={style:`powerline`,colorCompatibility:Va,wrap:!0,padding:1,charset:La,width:1/0},IP=new Map;function LP(e,t,n){let r=new Map;for(let[i,a]of e)r.set(i,lE(a,{...FP,charset:t,colorCompatibility:n}));return r}const RP={gitProvider:tP,usageStore:nP,contextProvider:oP,metricsProvider:sP,activityProvider:cP,tmuxService:lP,mementoProvider:uP,log:Q,clock:()=>new Date,history:e=>iP.depth(e)};function zP(e,t){let n=aN.get(e);if(!n)return{ok:!1,error:`unknown click verb: ${e}`,code:`BAD_REQUEST`,daemonV:3};try{return n(t,PP),{ok:!0,output:``}}catch(e){let t=e instanceof $?`BAD_REQUEST`:`RENDER_FAILED`;return{ok:!1,error:String(e instanceof Error?e.message:e),code:t,daemonV:3}}}const BP={connectMs:200,budgetMs:500};async function VP(e){let n=e.includes(`--json`),r=await HP();if(r.kind!==`ok`&&(t.stderr.write(`daemon-stats: ${SC(r)}\n`),t.exit(1)),n){t.stdout.write(JSON.stringify(r.value,null,2)+`
200
- `);return}t.stdout.write(KP(r.value))}function HP(){return gC({kind:`stats`},BP,e=>`stats`in e?e.stats:void 0)}function UP(e){return e<1024?`${e}B`:e<1024*1024?`${(e/1024).toFixed(1)}KB`:`${(e/1024/1024).toFixed(1)}MB`}function WP(e,t){let n=e+t;return n===0?`n/a`:`${(e/n*100).toFixed(1)}%`}function GP(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 KP(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 ${GP(e.uptimeSec)}`),t.push(` rss ${UP(e.rssBytes)}`),t.push(` heapUsed ${UP(e.heapUsedBytes)}`),t.push(` heapTotal ${UP(e.heapTotalBytes)}`),t.push(` external ${UP(e.externalBytes)}`),t.push(` arrayBuffers ${UP(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 ${WP(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 ${WP(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:jP(t),timeoutMs:3e3,category:`memento.read`});return n.ok?NP(n.stdout):X(MP(n))}function FP(e,t,n){let r=De({bin:c.join(e,DP),args:n.kind===`set`?[`set`,`session`,n.to]:[`clear`,`session`],env:jP(t),timeoutMs:5e3,category:`memento.move`});if(!r.ok)throw Error(MP(r))}function IP(){let e=sT();return{locate:t=>AP(e,t),read:PP,move:FP}}var LP=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 RP=new yj;we(RP.launchStats);const zP=new Rv({counters:RP,logger:Q}),BP=new Kv({watchers:zP,logger:Q}),VP=new Tk,HP=new Sj,UP=new bM(HP,Q),WP=new LP(Ge()),GP=new uP,KP=new hP,qP=new bP,JP=new CP,YP=new TP(IP()),XP=new _j({gitService:BP,sessionState:HP,watchers:zP},{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)}`)}}),ZP=60*1e3;function QP(){let e=import.meta.url,n=[];e.startsWith(`file://`)&&n.push(ne(e)),t.argv[1]&&n.push(t.argv[1]);let i=new Map;for(let e of n)try{i.set(e,r.statSync(e).mtimeMs)}catch{}let a=null,o=()=>{for(let[e,t]of i)try{if(r.statSync(e).mtimeMs!==t){Q(`info`,`binary mtime changed (${e}); shutting down`),a&&clearInterval(a),mF(0);return}}catch(e){Q(`warn`,`bin stat failed: ${e.message}`)}};return{arm(){i.size!==0&&(a=setInterval(o,ZP),a.unref())},checkNow:o}}const $P=QP(),eF=XO({entryUrl:import.meta.url,intervalMs:ZP,releaseIntervalMs:216e5,registryUrl:t.env.CC_CANDYBAR_REGISTRY_URL??`https://registry.npmjs.org`,fetchImpl:fetch,onApplied:()=>$P.checkNow(),log:Q});let tF=null,nF=null,rF=0;function iF(){t.on(`uncaughtException`,e=>{Q(`error`,`uncaughtException: ${e.stack||e.message}`),mF(1)}),t.on(`unhandledRejection`,e=>{Q(`error`,`unhandledRejection: ${String(e)}`),mF(1)});for(let e of[`SIGINT`,`SIGTERM`,`SIGHUP`])t.on(e,()=>{Q(`info`,`received ${e}, shutting down`),mF(0)});try{rF=tw(t.env)}catch(e){Q(`error`,`refusing to boot: ${e.message}`),mF(1);return}tF=ZT(t.pid);let e=sE(lE(tF));if(!e.decision.allow){Q(`warn`,`fork-bomb breaker: ${e.decision.reason}; refusing to boot`),mF(1);return}nF=e.registryPath,r.mkdirSync(Ne(),{recursive:!0}),Ie(Pe()),HP.useStorage(new Tj(ze(),500,Q)),UP.useStorage(AM(Be(),Q)),eE({anchor:$T(t.env),isAlive:tE,onOrphaned:e=>{Q(`info`,`parent watchdog: ${e}; shutting down`),mF(0)}}),aF(g.createServer({allowHalfOpen:!1},e=>{hF(e)}),Pe(),!1)}function aF(e,n,r){e.removeAllListeners(`error`),e.removeAllListeners(`listening`),e.once(`error`,i=>{if(i.code!==`EADDRINUSE`){Q(`error`,`server error: ${i.message}`),mF(1);return}if(r){Q(`info`,`lost rebind race; another daemon is alive — exiting`),t.exit(0);return}oF(e,n)}),e.listen(n,()=>sF(n))}function oF(e,n){let i=VT(HT(Le(n)),(e,t)=>XT(e,t,{readStartTime:YT,pidAlive:tE}));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}`),mF(1);return}}aF(e,n,!0)}function sF(e){let n=GT(e);if(n.kind!==`present`){Q(`warn`,`no ownable socket at bind callback (${n.kind}); exiting`),mF(0);return}dF(e);try{r.chmodSync(e,384)}catch(e){Q(`warn`,`chmod socket failed: ${e.message}`)}Q(`info`,`daemon up: pid=${t.pid} v=3 sock=${e} heapCap=${Math.round(C.getHeapStatistics().heap_size_limit/1048576)}MB rssLimit=${Math.round(rF/1048576)}MB`),vw();let i=WP.reset();i!==null&&Q(`warn`,`diagnostic dump wipe failed: ${i}`),$P.arm(),eF.arm(),uF(),cF(e,n.identity)}function cF(e,n){JT({bound:n,myPid:t.pid,readIdentity:()=>GT(e),readLease:()=>HT(Le(e)),shutdown:e=>mF(e),log:Q}).arm()}let lF=null;function uF(){lF=aw(lw(RP.startedAt.getTime(),e=>mF(e),{rssLimitBytes:rF})),lF.arm()}function dF(e){let n=UT(Le(e),{pid:t.pid,version:3,binPath:t.argv[1],startTime:tF});n!==null&&Q(`warn`,`lease write failed: ${n}`)}let fF=0,pF=!1;function mF(e){if(!pF){pF=!0,setTimeout(()=>t.kill(t.pid,`SIGKILL`),500);try{BP.close()}catch(e){Q(`warn`,`gitService close failed: ${e.message}`)}try{VP.close()}catch(e){Q(`warn`,`usageStore close failed: ${e.message}`)}try{zP.closeAll()}catch(e){Q(`warn`,`watcherRegistry close failed: ${e.message}`)}try{HP.flush()}catch(e){Q(`warn`,`sessionState flush failed: ${e.message}`)}WT(Re(),t.pid),nF!==null&&cE(nF,t.pid,aE,e=>r.unlinkSync(e)),t.exit(e)}}function hF(e){fF++,RP.inFlight=fF;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:()=>mF(r);try{e.end(OC(n),i)}catch(e){Q(`warn`,`response write failed: ${e.message}`),i?.()}},r=setTimeout(()=>{RP.requestsTimedOut++,n({ok:!1,error:`request exceeded 200ms`,code:`TIMEOUT`,daemonV:3},null)},200),i=kC(e=>{_F(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),fF=Math.max(0,fF-1),RP.inFlight=fF})}const gF=e=>({resp:e,exitAfterFlush:null});async function _F(e){if(!e||typeof e!=`object`||typeof e.v!=`number`)return gF({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 gF({ok:!0,stats:RP.snapshot({gitCache:BP.getStats(),usageCache:VP.getStats(),renderCacheSize:XP.size,watchersActive:zP.size(),nextRestartReason:lF?.describeNextRestart()??null})});if(e.kind===`render`){RP.requestsTotal++;let t=Date.now();try{let{report:n}=qN(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 RP.requestsErrored++,Q(`warn`,`BAD_REQUEST: ${r.join(`; `)}`),gF({ok:!1,error:`malformed hookData: ${r.join(`; `)}`,code:`BAD_REQUEST`,daemonV:3});let i=e.hookData.workspace.project_dir,{configFile:a,unknownFlagsError:o}=vF(e.args),s=e.hookData.session_id,c=xC(e),l=JSON.stringify(c);HP.get(s,`client-hints`)!==l&&HP.set(s,MN,l);let u=HP.get(s,`config-override`)??a??c.configEnv,d=XP.getOrCreate(i,e.cwd,u),f=pN({projectDir:i,cwd:e.cwd,configFile:u??null});HP.get(s,`render-origin`)!==f&&HP.set(s,fN,f);let p=c.termCols,m=lP(p??120),h=EE(c.termRows),{authoredRoots:g}=d.state,_=t=>HP.get(e.hookData.session_id,t),v=FD(d.state.config,_,e=>g.has(e)),y=await QD(e.hookData,CF,e.cwd,d.state.neededInputPaths(v.preset),v,c,pO(d.state.config,_).length+mO(d.state.config,_).length),b=[],x=ID(v,m),S=rj(d.state.config,d.state.compiled,d.state.store,d.state.registry,y,x,{perSegmentSink:d.state.lastRenderCellsBySegment,onRenderWarning:e=>b.push(e)},LD(v)),C=HP.get(e.hookData.session_id,`click.error`);C&&HP.clear(e.hookData.session_id,`click.error`);let ee=[o,d.lastError,C].filter(Boolean).join(`
198
+ `),te=eF.notice({sessionId:s,dismissed:HP.get(s,IO),enabled:v.updateNotice}),ne=d.lastError===null?null:d.configFilePath,re=jE(ee,te,[d.lastWarning??``,...b].filter(Boolean).join(`
199
+ `)),ie=WP.sync(s,re===null?null:NE(re));ie!==null&&Q(`warn`,`diagnostic dump failed: ${ie}`);let ae=PE(S,re,{fullText:ie===null?{kind:`file`,path:WP.pathFor(s)}:{kind:`unavailable`,reason:ie},failedConfigFile:ne},{width:m,rowCap:h,colorCompatibility:v.colorCompatibility}),w=Date.now()-t,T=BP.getStats(),oe=VP.getStats();return Q(`info`,`render sid=${e.hookData.session_id??`?`} took=${w}ms termCols=${p??`?`} termRows=${c.termRows??`?`} width=${m} git=${T.size}/${T.hits}h/${T.misses}m usage=${oe.size}/${oe.hits}h/${oe.misses}m err=${ee?`Y`:`N`} upd=${te.length} warn=${d.lastWarning?`Y`:`N`}`),gF({ok:!0,output:ae+`
200
+ `})}catch(e){throw RP.requestsErrored++,e}}if(e.kind===`click`)return gF(await wF(e.verb,e.value));if(e.kind===`debug`){if(!cP(e.what))return gF({ok:!1,error:`unknown debug 'what': ${String(e.what)} (have: ${sP.join(`, `)})`,code:`BAD_REQUEST`,daemonV:3});let t=XP.firstState(),n=t===null?null:{store:t.store,registry:t.registry,config:t.config,compiled:t.compiled,lastRenderBySegment:e.what===`segments`?SF(t.lastRenderCellsBySegment,t.config.globals.charset??`unicode`,t.config.globals.colorCompatibility??`truecolor`):xF};return gF({ok:!0,debug:XN(e.what,n)})}return gF({ok:!1,error:`unknown kind`,code:`BAD_REQUEST`,daemonV:3})}function vF(e){let{values:t,tokens:n}=ie({args:e.slice(1),options:{config:{type:`string`}},strict:!1,tokens:!0,allowPositionals:!0}),r=[...new Set((n??[]).filter(e=>e.kind===`option`&&e.name!==`config`).map(e=>`--${e.name}`))];return{configFile:SC(t.config),unknownFlagsError:r.length>0?`Unknown flags: ${r.join(`, `)}`:null}}const yF={sessionState:HP,dlog:Q,applyUpdate:()=>eF.act(),doctor:NM(),memento:YP,claudeInput:XM(),history:UP,configFor:e=>XP.getOrCreate(e.projectDir,e.cwd,e.configFile??void 0).state.config,reloadConfig:e=>XP.reload(e.projectDir,e.cwd,e.configFile??void 0)},bF={style:`powerline`,colorCompatibility:Va,wrap:!0,padding:1,charset:La,width:1/0},xF=new Map;function SF(e,t,n){let r=new Map;for(let[i,a]of e)r.set(i,TE(a,{...bF,charset:t,colorCompatibility:n}));return r}const CF={gitProvider:BP,usageStore:VP,contextProvider:GP,metricsProvider:KP,activityProvider:qP,tmuxService:JP,mementoProvider:YP,log:Q,clock:()=>new Date,history:e=>UP.depth(e)};function wF(e,t){let n=WN.get(e);if(!n)return{ok:!1,error:`unknown click verb: ${e}`,code:`BAD_REQUEST`,daemonV:3};try{return n(t,yF),{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 TF={connectMs:200,budgetMs:500};async function EF(e){let n=e.includes(`--json`),r=await DF();if(r.kind!==`ok`&&(t.stderr.write(`daemon-stats: ${LC(r)}\n`),t.exit(1)),n){t.stdout.write(JSON.stringify(r.value,null,2)+`
201
+ `);return}t.stdout.write(jF(r.value))}function DF(){return jC({kind:`stats`},TF,e=>`stats`in e?e.stats:void 0)}function OF(e){return e<1024?`${e}B`:e<1024*1024?`${(e/1024).toFixed(1)}KB`:`${(e/1024/1024).toFixed(1)}MB`}function kF(e,t){let n=e+t;return n===0?`n/a`:`${(e/n*100).toFixed(1)}%`}function AF(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 jF(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 ${AF(e.uptimeSec)}`),t.push(` rss ${OF(e.rssBytes)}`),t.push(` heapUsed ${OF(e.heapUsedBytes)}`),t.push(` heapTotal ${OF(e.heapTotalBytes)}`),t.push(` external ${OF(e.externalBytes)}`),t.push(` arrayBuffers ${OF(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 ${kF(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 ${kF(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(`
201
202
  `)+`
202
- `}const qP={connectMs:200,budgetMs:500};async function JP(e,n){let r=n.includes(`--json`),i=await YP(e);if(i.kind!==`ok`&&(t.stderr.write(`${e}: ${SC(i)}\n`),t.exit(1)),r){t.stdout.write(JSON.stringify(i.value,null,2)+`
203
- `);return}t.stdout.write(XP(i.value))}function YP(e){return gC({kind:`debug`,what:e},qP,e=>`debug`in e?e.debug:void 0)}function XP(e){switch(e.what){case`vars`:return ZP(e.vars);case`segments`:return QP(e.segments);case`config`:return $P(e.config);default:return e}}function ZP(e){if(e.length===0)return`no variables (DSL not active)
204
- `;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?``:` ${tF(a.ageMs)}`,o=a.lastError?` ✗ ${a.lastError.message}`:``;t.push(` ${a.name.padEnd(n)} ${(a.source??`—`).padEnd(r)} ${a.type.padEnd(i)} ${eF(a.value)}${e}${o}`)}return t.join(`
203
+ `}const MF={connectMs:200,budgetMs:500};async function NF(e,n){let r=n.includes(`--json`),i=await PF(e);if(i.kind!==`ok`&&(t.stderr.write(`${e}: ${LC(i)}\n`),t.exit(1)),r){t.stdout.write(JSON.stringify(i.value,null,2)+`
204
+ `);return}t.stdout.write(FF(i.value))}function PF(e){return jC({kind:`debug`,what:e},MF,e=>`debug`in e?e.debug:void 0)}function FF(e){switch(e.what){case`vars`:return IF(e.vars);case`segments`:return LF(e.segments);case`config`:return RF(e.config);default:return e}}function IF(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?``:` ${BF(a.ageMs)}`,o=a.lastError?` ✗ ${a.lastError.message}`:``;t.push(` ${a.name.padEnd(n)} ${(a.source??`—`).padEnd(r)} ${a.type.padEnd(i)} ${zF(a.value)}${e}${o}`)}return t.join(`
205
206
  `)+`
206
- `}function QP(e){if(e.length===0)return`no segments (DSL not active)
207
+ `}function LF(e){if(e.length===0)return`no segments (DSL not active)
207
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(`
208
209
  `)+`
209
- `}function $P(e){return e===null?`config: DSL not active
210
+ `}function RF(e){return e===null?`config: DSL not active
210
211
  `:JSON.stringify(e,null,2)+`
211
- `}function eF(e){let t=typeof e==`string`?e:JSON.stringify(e);return t.length>60?t.slice(0,57)+`…`:t}function tF(e){return e<1e3?`${e}ms`:e<6e4?`${(e/1e3).toFixed(1)}s`:`${Math.floor(e/6e4)}m`}function nF(){let e=iF();return e===null?null:r.readFileSync(e,`utf-8`)}function rF(){let e;try{e=nF()}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 iF(){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 aF(e){let t=e.CC_CANDYBAR_CONFIG??``;return t===``?void 0:t}const oF=5e3;function sF(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},...SD(e),history:{undo:1,redo:1},unsaved:1}}function cF(e,t){let n=GS(e,e),r=qS(n);return r!==null&&t.push(r),n.kind===`file`?n.path:null}async function lF(e,n=t.cwd()){let i=[],a=e===void 0?cF(n,i):c.resolve(HS(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=YS(n,n);o!==null&&i.push(o);try{return{kind:`clean`,configPath:a,warnings:i,rendered:await fF(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 Go&&i.push(...e.warnings),{kind:`fatal`,configPath:a,message:e instanceof Go||e instanceof Error?e.message:String(e),warnings:i})}}async function uF(e,t,n){let r=XS(e,rD);n.push(...r.warnings);let i=$S(r,e??`<default>`),a=new KA,o=new ly(a,i.globals.default_empty_value??``,void 0,new rj);try{let e=PA(i,o,{cwd:t});n.push(...e.loadWarnings);let r=await o.settled(oF);return r.length>0&&n.push(`source${r.length===1?``:`s`} still running after ${oF} ms, rendered with fallback values: ${r.join(`, `)}`),{config:i,compiled:e,store:a,registry:o}}catch(e){throw o.dispose(),e}}function dF({config:e,compiled:t,store:n,registry:r},i,a){let o=new Map;return{rendered:RA(e,t,n,r,sF(i),bD(i,a),{onSegmentError:(e,t)=>o.set(`segment "${e}"`,t),onRenderWarning:e=>o.set(`globals.palette`,e)},xD(i)),failures:o}}async function fF(e,t,n){let r=await uF(e,t,n),{config:i}=r;try{gO(i);let e=yD(i,()=>null,()=>!1),t=e=>dF(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(`
212
- `));return n.rendered}finally{r.registry.dispose()}}function pF(e){return e.map(e=>`warning: ${e}\n`).join(``)}function mF(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:pF(e.warnings),code:0};case`fatal`:return{stdout:``,stderr:pF(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 hF=`--render`,gF=`Usage: cc-candybar check [${hF}] [config-file]\n`;function _F(e){let t=e.filter(e=>e.startsWith(`--`)),n=e.filter(e=>!e.startsWith(`--`)),r=t.filter(e=>e!==hF);return r.length>0?{kind:`usage`,message:`check: unknown option ${r.join(` `)}\n${gF}`}:n.length>1||n[0]===``?{kind:`usage`,message:`check: expected at most one non-empty path\n${gF}`}:{kind:`run`,target:n[0],render:t.includes(hF)}}async function vF(e){let n=_F(e),r=n.kind===`usage`?{stdout:``,stderr:n.message,code:2}:mF(await lF(n.target??aF(t.env)),n.render);t.stdout.write(r.stdout),t.stderr.write(r.stderr),t.exit(r.code)}const yF=`${QT}${ZT}`;function bF(e){return`${yF}⚠ cc-candybar: ${xF(e)}\n`}function xF(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: ${XT(e.message,60)}`;case`render_failed`:return`render failed: ${XT(e.message,60)}`;case`malformed_response`:return`malformed daemon response: ${XT(e.message,60)}`}}function SF(e){switch(e.kind){case`ok`:return{output:e.value,kick:!1,debug:null};case`transient`:return{output:`
213
- `,kick:!0,debug:`daemon unavailable (transient: ${e.cause}: ${e.message}) — kicking daemon`};case`permanent`:return{output:bF(e),kick:!1,debug:`daemon refused request (permanent: ${e.cause}) — not kicking`}}}function CF(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 wF=` (fix: click the settings menu (${ac} by default) › 🧰 tools ▸ 🩺 doctor, then [fix] on the bar)`;function TF({check:e,verdict:t}){return t.ok?`✓ ${e.label}\n`:`✗ ${e.label} — ${t.reason}${t.fix===void 0?``:wF}\n`}function EF(e,t){let n;try{n=mM(e,eb(t))}catch(e){return{stdout:``,stderr:`doctor: ${e instanceof Error?e.message:String(e)}\n`,code:2}}let r=rb(n);return{stdout:r.map(TF).join(``),stderr:``,code:+!r.every(e=>e.verdict.ok)}}function DF(e){e.length>0&&(t.stderr.write(`doctor: takes no arguments
212
+ `}function zF(e){let t=typeof e==`string`?e:JSON.stringify(e);return t.length>60?t.slice(0,57)+`…`:t}function BF(e){return e<1e3?`${e}ms`:e<6e4?`${(e/1e3).toFixed(1)}s`:`${Math.floor(e/6e4)}m`}function VF(){let e=UF();return e===null?null:r.readFileSync(e,`utf-8`)}function HF(){let e;try{e=VF()}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 UF(){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 WF(e){let t=e.CC_CANDYBAR_CONFIG??``;return t===``?void 0:t}const GF=5e3;function KF(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},...RD(e),history:{undo:1,redo:1},unsaved:1}}function qF(e,t){let n=oC(e,e),r=cC(n);return r!==null&&t.push(r),n.kind===`file`?n.path:null}async function JF(e,n=t.cwd()){let i=[],a=e===void 0?qF(n,i):c.resolve(rC(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=uC(n,n);o!==null&&i.push(o);try{return{kind:`clean`,configPath:a,warnings:i,rendered:await ZF(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 qo&&i.push(...e.warnings),{kind:`fatal`,configPath:a,message:e instanceof qo||e instanceof Error?e.message:String(e),warnings:i})}}async function YF(e,t,n){let r=dC(e,yD);n.push(...r.warnings);let i=mC(r,e??`<default>`),a=new dj,o=new hy(a,i.globals.default_empty_value??``,void 0,new Sj);try{let e=$A(i,o,{cwd:t});n.push(...e.loadWarnings);let r=await o.settled(GF);return r.length>0&&n.push(`source${r.length===1?``:`s`} still running after ${GF} ms, rendered with fallback values: ${r.join(`, `)}`),{config:i,compiled:e,store:a,registry:o}}catch(e){throw o.dispose(),e}}function XF({config:e,compiled:t,store:n,registry:r},i,a){let o=new Map;return{rendered:rj(e,t,n,r,KF(i),ID(i,a),{onSegmentError:(e,t)=>o.set(`segment "${e}"`,t),onRenderWarning:e=>o.set(`globals.palette`,e)},LD(i)),failures:o}}async function ZF(e,t,n){let r=await YF(e,t,n),{config:i}=r;try{FO(i);let e=FD(i,()=>null,()=>!1),t=e=>XF(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 QF(e){return e.map(e=>`warning: ${e}\n`).join(``)}function $F(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:QF(e.warnings),code:0};case`fatal`:return{stdout:``,stderr:QF(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 eI=`--render`,tI=`Usage: cc-candybar check [${eI}] [config-file]\n`;function nI(e){let t=e.filter(e=>e.startsWith(`--`)),n=e.filter(e=>!e.startsWith(`--`)),r=t.filter(e=>e!==eI);return r.length>0?{kind:`usage`,message:`check: unknown option ${r.join(` `)}\n${tI}`}:n.length>1||n[0]===``?{kind:`usage`,message:`check: expected at most one non-empty path\n${tI}`}:{kind:`run`,target:n[0],render:t.includes(eI)}}async function rI(e){let n=nI(e),r=n.kind===`usage`?{stdout:``,stderr:n.message,code:2}:$F(await JF(n.target??WF(t.env)),n.render);t.stdout.write(r.stdout),t.stderr.write(r.stderr),t.exit(r.code)}const iI=`${mE}${pE}`;function aI(e){return`${iI}⚠ cc-candybar: ${oI(e)}\n`}function oI(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: ${fE(e.message,60)}`;case`render_failed`:return`render failed: ${fE(e.message,60)}`;case`malformed_response`:return`malformed daemon response: ${fE(e.message,60)}`}}function sI(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:aI(e),kick:!1,debug:`daemon refused request (permanent: ${e.cause}) — not kicking`}}}function cI(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 lI=` (fix: click the settings menu (${lc} by default) › 🧰 tools ▸ 🩺 doctor, then [fix] on the bar)`;function uI({check:e,verdict:t}){return t.ok?`✓ ${e.label}\n`:`✗ ${e.label} — ${t.reason}${t.fix===void 0?``:lI}\n`}function dI(e,t){let n;try{n=RM(e,fb(t))}catch(e){return{stdout:``,stderr:`doctor: ${e instanceof Error?e.message:String(e)}\n`,code:2}}let r=hb(n);return{stdout:r.map(uI).join(``),stderr:``,code:+!r.every(e=>e.verdict.ok)}}function fI(e){e.length>0&&(t.stderr.write(`doctor: takes no arguments
214
215
  Usage: cc-candybar doctor
215
- `),t.exit(2));let n=EF(lM(),t.env);t.stdout.write(n.stdout),t.stderr.write(n.stderr),t.exit(n.code)}function OF(){return CF(t.env.COLUMNS,t.stderr.columns)}function kF(){return CF(t.env.LINES,t.stderr.rows)}const AF=[`SSH_CONNECTION`,`SSH_CLIENT`,`SSH_TTY`],jF=e=>e.some(e=>t.argv.includes(e));function MF(){return AF.some(e=>(t.env[e]??``)!==``)}function NF(){console.log(Ay)}async function PF(){try{jF(Oy.help)&&(NF(),t.exit(0)),jF(Oy.version)&&(console.log(`cc-candybar ${Uw}`),t.exit(0));let e=t.argv[2];if(e===`install`&&(await CT(t.argv.slice(3)),t.exit(0)),e===`install-url-handler`&&(vT(),t.exit(0)),e===`url-handle`){await bT(t.argv[3]);return}if(e===`daemon`){yP();return}if(e===`daemon-stats`&&(await VP(t.argv.slice(3)),t.exit(0)),e===`check`||e===`lint`){await vF(t.argv.slice(3));return}if(e===`schema`){rF();return}if(e===`doctor`){DF(t.argv.slice(3));return}CN(e)&&(await JP(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=dI(NM(),t.env);t.stdout.write(n.stdout),t.stderr.write(n.stderr),t.exit(n.code)}function pI(){return cI(t.env.COLUMNS,t.stderr.columns)}function mI(){return cI(t.env.LINES,t.stderr.rows)}const hI=[`SSH_CONNECTION`,`SSH_CLIENT`,`SSH_TTY`],gI=e=>e.some(e=>t.argv.includes(e));function _I(){return hI.some(e=>(t.env[e]??``)!==``)}function vI(){console.log(Iy)}async function yI(){try{gI(Py.help)&&(vI(),t.exit(0)),gI(Py.version)&&(console.log(`cc-candybar ${aT}`),t.exit(0));let e=t.argv[2];if(e===`install`&&(await zT(t.argv.slice(3)),t.exit(0)),e===`install-url-handler`&&(PT(),t.exit(0)),e===`url-handle`){await IT(t.argv[3]);return}if(e===`daemon`){iF();return}if(e===`daemon-stats`&&(await EF(t.argv.slice(3)),t.exit(0)),e===`check`||e===`lint`){await rI(t.argv.slice(3));return}if(e===`schema`){HF();return}if(e===`doctor`){fI(t.argv.slice(3));return}cP(e)&&(await NF(e,t.argv.slice(3)),t.exit(0)),t.stdin.isTTY===!0&&(console.error(`Error: This tool requires input from Claude Code
216
217
 
217
218
  cc-candybar is designed to be used as a Claude Code statusLine command.
218
219
  It reads hook data from stdin and outputs formatted statusline.
@@ -228,4 +229,4 @@ Add to ~/.claude/settings.json:
228
229
  Run with --help for more options.
229
230
 
230
231
  To test output manually:
231
- echo '{"session_id":"test-session","workspace":{"project_dir":"/path/to/project"},"model":{"id":"claude-sonnet-4-5","display_name":"Claude"}}' | cc-candybar --style=powerline`),t.exit(1)),E(`Working directory: ${t.cwd()}`),E(`Process args:`,t.argv);let r=await n(t.stdin);E(`Received hook data:`,JSON.stringify(r,null,2)),r||(console.error(`Error: No input data received from stdin`),NF(),t.exit(1));let i=SF(await EC(r,t.argv,t.cwd(),{termCols:OF(),termRows:kF(),ssh:MF(),tmux:eb(t.env),configEnv:aF(t.env)}));i.debug!==null&&E(i.debug),i.kick&&YC(),t.stdout.write(i.output),t.exit(0)}catch(e){let n=e instanceof Error?e.message:String(e);console.error(`Error generating statusline:`,n),t.exit(1)}}PF();export{};
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)),E(`Working directory: ${t.cwd()}`),E(`Process args:`,t.argv);let r=await n(t.stdin);E(`Received hook data:`,JSON.stringify(r,null,2)),r||(console.error(`Error: No input data received from stdin`),vI(),t.exit(1));let i=sI(await VC(r,t.argv,t.cwd(),{termCols:pI(),termRows:mI(),ssh:_I(),tmux:fb(t.env),configEnv:WF(t.env)}));i.debug!==null&&E(i.debug),i.kick&&uw(),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)}}yI();export{};