@promptctl/cc-candybar 1.90.0 → 1.92.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`
@@ -21,39 +21,39 @@ import{createRequire as e}from"node:module";import t from"node:process";import{j
21
21
  `,this._tabSize=t?.tabSize??8,this._noWrap=t?.noWrap??!1}get plain(){return this._text}set plain(e){let t=Zr(e);this._text=t;let n=t.length;this._spans=this._spans.map(e=>e.end>n?new oi(e.start,Math.min(e.end,n),e.style):e).filter(e=>e.start<n)}get length(){return this._text.length}get cellLength(){return O(this._text)}get hasContent(){return this._text.length>0}get style(){return this._style}set style(e){this._style=ni(e)}get justify(){return this._justify}set justify(e){this._justify=e}get overflow(){return this._overflow}set overflow(e){this._overflow=e}get end(){return this._end}set end(e){this._end=e}get noWrap(){return this._noWrap}set noWrap(e){this._noWrap=e}get spans(){return this._spans}resolvedStyle(e){return ii(e,this._style)}edgeStyle(e,t){let n=this.resolvedStyle(t);if(this._text.length===0)return n;let r=e===`left`?0:this._text.length-1,i=n;for(let e of this._spans)e.start<=r&&r<e.end&&(i=i.add(ii(t,e.style)));return i}append(t,n){if(t instanceof e){if(n!==void 0)throw Error(`Style argument must not be provided when appending RichText`);let e=this._text.length;this._text+=t._text;for(let n of t._spans)this._spans.push(n.move(e));return this}let r=Zr(t),i=this._text.length;return this._text+=r,this._addSpan(i,this._text.length,n??``),this}contains(t){let n=t instanceof e?t._text:t;return this._text.includes(n)}at(t){let n=t<0?this._text.length+t:t;return this._text[n]===void 0?new e(``):this.slice(n,n+1)}slice(e,t){let n=this._text,r=n.length,i=e??0,a=t??r,o=i<0?Math.max(0,r+i):Math.min(i,r),s=a<0?Math.max(0,r+a):Math.min(a,r);if(o>=s)return this.blankCopy();let c=n.slice(o,s),l=this.blankCopy(c);for(let e of this._spans){let t=Math.max(e.start,o)-o,n=Math.min(e.end,s)-o;t<n&&l._spans.push(new oi(t,n,e.style))}return l}_addSpan(e,t,n){ri(n)||this._spans.push(new oi(e,t,ni(n)))}stylize(e,t,n){let r=this._text.length,i=t===void 0?0:t<0?r+t:t,a=n===void 0?r:n<0?r+n:n;if(i>=a||i>=r||a<=0)return this;let o=Math.max(0,i),s=Math.min(r,a);return this._addSpan(o,s,e),this}highlightRegex(e,t){let n=this._text,r=0,i=e.flags.includes(`g`)?e.flags:e.flags+`g`,a=new RegExp(e.source,i),o;for(;(o=a.exec(n))!==null;){if(o[0].length===0){a.lastIndex++;continue}if(o.groups){let e=0;for(let[t,n]of Object.entries(o.groups))if(n!==void 0){let r=o[0].indexOf(n,e);if(r>=0){let i=o.index+r;this._addSpan(i,i+n.length,t),e=r+n.length}}r++;continue}this._addSpan(o.index,o.index+o[0].length,t??``),r++}return r}highlightWords(e,t,n){let r=n?.caseSensitive!==!1,i=0;for(let n of e){if(n.length===0)continue;let e=n.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),a=r?`g`:`gi`,o=RegExp(`\\b${e}\\b`,a),s;for(;(s=o.exec(this._text))!==null;)this._addSpan(s.index,s.index+s[0].length,t),i++}return i}copy(){let t=new e(this._text,{style:this._style,justify:this._justify,overflow:this._overflow,end:this._end,tabSize:this._tabSize,noWrap:this._noWrap});return t._spans=this._spans.slice(),t}blankCopy(t){return new e(t??``,{style:this._style,justify:this._justify,overflow:this._overflow,end:this._end,tabSize:this._tabSize,noWrap:this._noWrap})}split(e){let t=e??`
22
22
  `,n=this._text,r=[],i=0;for(;;){let e=n.indexOf(t,i);if(e===-1){r.push(this.slice(i));break}r.push(this.slice(i,e)),i=e+t.length}return r}divide(e){if(e.length===0)return[this.copy()];let t=[],n=0;for(let r of e)t.push(this.slice(n,r)),n=r;return t.push(this.slice(n)),t}rstrip(){let e=this._text.replace(/\s+$/,``);return e.length<this._text.length&&(this.plain=e),this}pad(e,t){let n=(t??` `).repeat(e);return this._spans=this._spans.map(t=>t.move(e)),this._text=n+this._text+n,this}padLeft(e,t){let n=t??` `;return this._spans=this._spans.map(t=>t.move(e)),this._text=n.repeat(e)+this._text,this}padRight(e,t){let n=t??` `;return this._text+=n.repeat(e),this}setLength(e){return this._text.length<e?this._text+=` `.repeat(e-this._text.length):this._text.length>e&&(this.plain=this._text.slice(0,e)),this}extendStyle(e){let t=this._text.length;return this._text+=` `.repeat(e),this._spans=this._spans.map(n=>n.end===t?n.extend(e):n),this}truncate(e,t){if(this.cellLength<=e)return this;let n=t?.mode??`right`,r=t?.marker??`…`,i=O(r);if(e<=0)return this.plain=``,this;let a=Math.max(0,e-i);if(n===`right`)return this._cropRightTo(a),r&&(this._text+=r),this;if(n===`left`)return this._cropLeftTo(a),r&&(this._spans=this._spans.map(e=>e.move(r.length)),this._text=r+this._text),this;let o=Math.floor(a/2),s=a-o,c=this._cellPrefixCharLength(o),l=this._cellSuffixStartCharIndex(s),u=this._text.slice(0,c),d=this._text.slice(l),f=c,p=l,m=r.length-(p-f),h=[];for(let e of this._spans)e.end<=f?h.push(e):e.start>=p?h.push(e.move(m)):(e.start<f&&h.push(new oi(e.start,f,e.style)),e.end>p&&h.push(new oi(p+m,e.end+m,e.style)));return this._text=u+r+d,this._spans=h,this}_cropRightTo(e){let t=this._cellPrefixCharLength(e);this.plain=this._text.slice(0,t)}_cropLeftTo(e){let t=this._cellSuffixStartCharIndex(e),n=-t;this._spans=this._spans.map(e=>{if(!(e.end<=t))return new oi(Math.max(0,e.start+n),e.end+n,e.style)}).filter(e=>e!==void 0),this._text=this._text.slice(t)}_cellPrefixCharLength(e){let t=0,n=0;for(let r of this._text){let i=O(r);if(t+i>e)break;t+=i,n+=r.length}return n}_cellSuffixStartCharIndex(e){let t=[...this._text],n=0,r=0;for(let i=t.length-1;i>=0;i--){let a=O(t[i]);if(n+a>e)break;n+=a,r+=t[i].length}return this._text.length-r}align(e,t){let n=this.cellLength;if(n>=t)return this;let r=t-n;switch(e){case`left`:this.padRight(r);break;case`right`:this.padLeft(r);break;case`center`:{let e=Math.floor(r/2),t=r-e;this.padLeft(e),this.padRight(t);break}}return this}removeSuffix(e){return this._text.endsWith(e)&&(this.plain=this._text.slice(0,-e.length)),this}appendTokens(e){for(let[t,n]of e)this.append(t,n);return this}static assemble(t,n){let r=new e(``,{style:n?.style});for(let n of t)if(typeof n==`string`)r.append(n);else if(n instanceof e)r.append(n);else{let[e,t]=n;r.append(e,t)}return r}static styled(t,n){let r=new e(t);return r.stylize(n),r}static fromFragments(t,n){let r=new e(``,{end:n?.end??``});for(let e of t){let t=r.length;r.append(e.plain),r.stylize(e.style,t,r.length);for(let n of e.spans)r.stylize(n.style,t+n.start,t+n.end)}return r}*render(e){let t=this._expandTabs(this._text),n=this.resolvedStyle(e),r=this._buildSegments(t,n,e),i=B.splitLines(r),a=zt(zr(e,this).maxWidth),o=this._overflow??e.overflow??`fold`,s=this._justify??e.justify,c=this._noWrap||(e.noWrap??!1)?zt(1/0):a,l=t.endsWith(`
23
23
  `);for(let e=0;e<i.length;e+=1){let t=i[e],r=e<i.length-1||l,u=Hr($r(t),c,{fold:o===`fold`}),d=B.divide(t,u),f=this._justifyLines(d.map(e=>[...this._fitLine(e,c,o)]),a,n,s);for(let e=0;e<f.length;e+=1)yield*f[e],(e<f.length-1||r)&&(yield B.line())}this._end&&(yield new B(this._end))}measure(e){let t=this._expandTabs(this._text).split(`
24
- `),n=0,r=0;for(let e of t){let t=O(e);n=Math.max(n,t);let i=e.split(/\s+/);for(let e of i)e.length>0&&(r=Math.max(r,O(e)))}let i=zt(e.maxWidth);return{minimum:Math.min(r,i),maximum:Math.min(n,i)}}_expandTabs(e){return e.includes(` `)?e.replace(/\t/g,` `.repeat(this._tabSize)):e}_buildSegments(e,t,n){let r=t=>Math.max(0,Math.min(t,e.length)),i=new Set([0,e.length]);for(let e of this._spans)i.add(r(e.start)),i.add(r(e.end));let a=[...i].sort((e,t)=>e-t),o=new Map(a.map((e,t)=>[e,t])),s=a.slice(0,-1).map(()=>t);for(let e of this._spans){let t=r(e.end),i=ii(n,e.style),c=o.get(r(e.start));for(let e=c;a[e]<t;e++)s[e]=s[e].add(i)}return s.map((t,n)=>new B(e.slice(a[n],a[n+1]),t.isNull?void 0:t))}_justifyLines(e,t,n,r){return r===`full`?e.map((r,i)=>i===e.length-1?r:this._fillLine(r,t,n)):e.map(e=>[...this._justifyLine(e,t,r)])}*_justifyLine(e,t,n){switch(n){case`center`:case`right`:{let r=B.adjustLineLength(e,B.getLineLength(e)-ei(e),void 0,!1),i=Math.max(t-B.getLineLength(r),0),a=n===`center`?Math.floor(i/2):i;a>0&&(yield new B(` `.repeat(a))),yield*r;let o=i-a;o>0&&(yield new B(` `.repeat(o)));break}case`left`:yield*B.adjustLineLength(e,Math.max(t,B.getLineLength(e)));break;default:yield*e;break}}_fillLine(e,t,n){let r=$r(e),i=r.split(` `);r.endsWith(` `)&&i.pop();let a=i.length-1,o=Array(a).fill(1),s=i.reduce((e,t)=>e+O(t),0)+a;for(let e=0;s<t&&a>0;e=(e+1)%a)o[a-1-e]+=1,s+=1;let c=[],l=0;for(let e=0;e<i.length;e+=1)l+=O(i[e]),c.push(l),l+=1,e<a&&c.push(l);let u=B.divide(e,c),d=(e,t)=>e.filter(e=>e.hasText).at(t)?.style??n,f=[];for(let e=0;e<i.length;e+=1)if(f.push(...u[e*2]),e<a){let t=d(u[e*2],-1),r=d(u[e*2+2],0),i=t.equals(r)?t:n;f.push(new B(` `.repeat(o[e]),i.isNull?void 0:i))}return f}*_fitLine(e,t,n){let r=B.getLineLength(e);if(r-ei(e)<=t){yield*B.adjustLineLength(e,Math.min(r,t),void 0,!1);return}if(n===`ellipsis`&&t>0){yield*B.adjustLineLength(e,t-1,void 0,!1),yield new B(`…`);return}yield*B.adjustLineLength(e,t,void 0,!1)}},si=class{items;joiner;constructor(e,t){this.items=e,this.joiner=t}*render(e){let t=this.items;if(t.length!==0){yield*this.joiner.join(null,t[0]).render(e);for(let n=0;n<t.length;n++){let r=t[n];yield*r.render(e);let i=n+1<t.length?t[n+1]:null;yield*this.joiner.join(r,i).render(e)}yield B.line()}}};const ci={*render(e){}};var li=class{_text;_style;constructor(e,t){this._text=e,this._style=t}*render(e){yield new B(this._text,this._style)}};function ui(e){return{render:e}}function di(e){return new z({color:e.bgcolor})}function fi(e){return e!==void 0&&!e.isDefault?e:void 0}function pi(e){return new z({bgcolor:e}).drawnColors().bgcolor}function*mi(e,t){e!==``&&(yield new B(e,new z({color:pi(t)})))}function hi(e,t){let{color:n,bgcolor:r}=e.drawnColors(t??j.TRUECOLOR);if(n===void 0||r===void 0)return!1;let i=n.fixedValue,a=r.fixedValue;return i!==void 0&&a!==void 0?L.fromRgba(i).deltaE(L.fromRgba(a))<.04:n.number===r.number}const gi=Object.freeze({glyph:``,divider:``,lead:``,tail:``});var _i=class{_glyph;_divider;_lead;_tail;constructor(e=gi){this._glyph=e.glyph,this._divider=e.divider,this._lead=e.lead,this._tail=e.tail}join(e,t){let n=this._glyph,r=this._divider,i=this._lead,a=this._tail;return ui(function*(o){let s=e?.edgeStyle(`right`,o),c=fi(s?.bgcolor),l=fi(t?.edgeStyle(`left`,o).bgcolor);if(c===void 0){l!==void 0&&(yield*mi(i,l));return}if(l===void 0){yield*mi(a,c);return}let u=new z({color:pi(c),bgcolor:l});yield hi(u,o.colorSystem)?new B(r,new z({color:s?.color,bgcolor:c})):new B(n,u)})}},vi=class{_left;_right;_separator;constructor(e){this._left=e?.left??``,this._right=e?.right??``,this._separator=e?.separator??` `}*_emit(e,t,n){if(!(e===null&&t===null)){if(e===null){yield new B(this._left,di(t.edgeStyle(`left`,n)));return}if(t===null){yield new B(this._right,di(e.edgeStyle(`right`,n)));return}yield new B(this._right,di(e.edgeStyle(`right`,n))),this._separator.length>0&&(yield new B(this._separator)),yield new B(this._left,di(t.edgeStyle(`left`,n)))}}join(e,t){return ui(n=>this._emit(e,t,n))}},yi=class{_separator;_style;constructor(e){this._separator=e?.separator??` | `,this._style=e?.style??z.parse(`dim`)}join(e,t){return e===null||t===null?ci:new li(this._separator,this._style)}};function bi(e,t){if(e.isControl||e.text.length===0)return;let n=e.style;return!n||n.isNull?{text:e.text,sgrCodes:``,link:void 0}:{text:e.text,sgrCodes:t.colorSystem===null?``:n.toSgrCodes(t.colorSystem),link:t.hyperlinks?n.link:void 0}}function xi(e,t){let n=[];for(let r of e){let e=bi(r,t);e&&n.push(e)}if(n.length===0)return``;let r=[],i=0;for(;i<n.length;){let e=n[i].sgrCodes,t=i+1;for(;t<n.length&&n[t].sgrCodes===e;)t++;e.length>0&&r.push(`\x1b[${e}m`);let a=i;for(;a<t;){let e=n[a].link,i=a+1;for(;i<t&&n[i].link===e;)i++;if(e){r.push(Jr(e));for(let e=a;e<i;e++)r.push(n[e].text);r.push(`\x1B]8;;\x1B\\`)}else for(let e=a;e<i;e++)r.push(n[e].text);a=i}e.length>0&&r.push(`\x1B[0m`),i=t}return r.join(``)}function Si(e,t){let n=t?.width??80,r={};t?.env!==void 0&&(r.env=t.env),t?.isTTY!==void 0&&(r.isTTY=t.isTTY);let i=t?.colorSystem,a=on(i===void 0?j.TRUECOLOR:i,r),o={colorSystem:t?.noColor?null:a.colorSystem,hyperlinks:t?.hyperlinks??a.hyperlinks},s={maxWidth:n,isTerminal:!1,encoding:`utf-8`,asciiOnly:!1,colorSystem:o.colorSystem};return xi(e.render(s),o)}function Ci(e,t){let n=[...e.render(t)],r=0;for(let e of n)r+=e.cellLength;return{segments:n,width:r}}const wi={segments:[],width:0},Ti={left:()=>0,justify:()=>0,center:e=>Math.floor(e/2),right:e=>e};function Ei(e,t){return Ti[e](t)}function Di(e,t,n,r){let i=Math.max(0,r-1),a=e===`justify`&&!t&&i>0&&n>0?n:0,o=i>0?Math.floor(a/i):0,s=a-o*i;return Array.from({length:i},(e,t)=>o+ +(t<s))}var Oi=class{items;joiner;gap;align;constructor(e,t){this.items=e,this.joiner=t?.joiner,this.gap=t?.gap??0,this.align=t?.align??`left`}*render(e){let t=this.items;if(t.length===0)return;let n=Math.max(1,e.maxWidth),r=this.gap,i=this.joiner,a=t.map(t=>Ci(t,e)),o=n=>i?Ci(i.join(null,t[n]),e):wi,s=n=>i?Ci(i.join(t[n],null),e):wi,c=(n,r)=>i?Ci(i.join(t[n],t[r]),e):wi,l=[],u=null,d=r>0?{segments:[new B(` `.repeat(r))],width:r}:wi;for(let e=0;e<t.length;e++){let t=a[e];if(u===null){let n=o(e),r=s(e),i=n.width>0?[n,t]:[t],a=[i.length-1];u={blocks:i,width:n.width+t.width,lastIndex:e,itemBlockIndices:a},u.endCap=r;continue}let i=u.lastIndex,f=c(i,e),p=s(e),m=(r>0?r:0)+f.width+(r>0?r:0)+t.width;if(u.width+m+p.width<=n)r>0&&u.blocks.push(d),f.width>0&&u.blocks.push(f),r>0&&u.blocks.push(d),u.blocks.push(t),u.itemBlockIndices.push(u.blocks.length-1),u.width+=m,u.lastIndex=e,u.endCap=p;else{let n=u.endCap;n.width>0&&u.blocks.push(n),u.width+=n.width,l.push(u);let r=o(e),i=s(e),a=r.width>0?[r,t]:[t],c=[a.length-1];u={blocks:a,width:r.width+t.width,lastIndex:e,itemBlockIndices:c},u.endCap=i}}let f=u;{let e=f.endCap;e.width>0&&f.blocks.push(e),f.width+=e.width,l.push(f)}let p=this.align;for(let e=0;e<l.length;e++){let t=l[e],r=e===l.length-1,i=Math.max(0,n-t.width),a=Ei(p,i),o=Di(p,r,i,t.itemBlockIndices.length),s=new Map;t.itemBlockIndices.forEach((e,t)=>s.set(e,t)),a>0&&(yield new B(` `.repeat(a)));for(let e=0;e<t.blocks.length;e++){let n=s.get(e);if(n!==void 0&&n>0){let e=o[n-1];e>0&&(yield new B(` `.repeat(e)))}yield*t.blocks[e].segments}yield B.line()}}measure(e){let t=this.items;if(t.length===0)return{minimum:0,maximum:0};let n=0,r=0;for(let i=0;i<t.length;i++){let a=Ci(t[i],e).width,o=this.joiner?Ci(this.joiner.join(null,t[i]),e).width:0,s=this.joiner?Ci(this.joiner.join(t[i],null),e).width:0;n=Math.max(n,a+o+s),r+=a,i>0&&(r+=this.gap*2,this.joiner&&(r+=Ci(this.joiner.join(t[i-1],t[i]),e).width))}return this.joiner&&(r+=Ci(this.joiner.join(null,t[0]),e).width,r+=Ci(this.joiner.join(t[t.length-1],null),e).width),{minimum:n,maximum:r}}};const ki=[`primary`,`secondary`,`accent`],Ai={"secondary-accent":[`secondary`,`accent`],"primary-secondary":[`primary`,`secondary`],primary:[`primary`]},ji=`accent`,Mi=[0,.5,1],H=e=>e.flatMap(e=>Mi.map(t=>({hue:e,tone:t}))),Ni=H(ki.filter(e=>Object.values(Ai).some(t=>t.includes(e)))),Pi=e=>{let t=0,n=.5;for(let r=e;r>0;r>>=1,n/=2)t+=n*(r&1);return t},Fi=[`van-der-corput`,`golden-angle`,`ends-interleaved`,`monotonic`,`uniform`],Ii=e=>typeof e==`string`&&Fi.includes(e),Li={"van-der-corput":Pi,"golden-angle":e=>e*.6180339887498949%1,"ends-interleaved":(e,t)=>((e%2==0?e/2:t-1-(e-1)/2)+.5)/t,monotonic:(e,t)=>(e+.5)/t,uniform:()=>.5},Ri=e=>Li[e??`van-der-corput`];function zi(e){let t=0,n=1;for(let{index:r,count:i,distribution:a}of e)t+=a(r,i)*n,n*=.37;return t%1}const Bi=(e,t)=>Math.floor(e*t),Vi=(e,t)=>Math.round(e*t)%t;function Hi(e,t,n){let r=e[n(t===void 0?0:t.distribution(t.index,t.count),e.length)];if(r===void 0)throw Error(`vocabularySelect: empty vocabulary`);return r}function Ui(e,t){let n=t.findIndex(e=>e.axis===`cell`),r=n===-1?t:t.slice(0,n);return{hue:Hi(e,r.at(-1),Bi),tone:Hi(Mi,t[r.length],Vi)}}function Wi(e,t){let n=e.get(t);if(n===void 0)throw Error(`palette "${e.name}" has no "${t}" role; decoration needs it`);return n}function Gi(e,t){let n=Ki.get(e);n===void 0&&(n=new Map,Ki.set(e,n));let r=`${t.hue}|${t.tone}`,i=n.get(r);if(i!==void 0)return i;let a=L.fromRgba(Wi(e,t.hue)),o=L.fromRgba(Wi(e,`surface`)),s=(e,t)=>e.mixAxes(a,{l:t,c:.8,h:1,alpha:0}),c=s(o.mixAxes(L.fromRgba(Wi(e,`background`)),{l:.5,c:0,h:0,alpha:0}),0).mixAxes(s(o,.35),{l:t.tone,c:t.tone,h:t.tone,alpha:0}).toRgba();return n.set(r,c),c}const Ki=new WeakMap,qi=(e,t,n)=>Gi(e,Ui(t,n)),Ji=2.2;function Yi(e,t,n){let r=Xi(e,t,n);if(`refused`in r)throw Error(r.refused);return r.state}function Xi(e,t,n){let r=Zi.get(e);r===void 0&&(r=new Map,Zi.set(e,r));let i=`${t}|${n}`,a=r.get(i);if(a!==void 0)return a;let o=Qi(e,t,n);return r.set(i,o),o}const Zi=new WeakMap;function Qi(e,t,n){let r=Ni.map(t=>Zn(Gi(e,t),j.TRUECOLOR)),i=gn(Wi(e,`surface`),Wi(e,t),.92),a=Wi(e,`foreground`),o=r.reduce((e,t)=>Yn(e,t,Ji),a),s=[...Array.from({length:13},(e,t)=>gn(i,a,t/12)),o].find(e=>r.every(t=>Xt(Zn(e,j.TRUECOLOR),t)>=Ji));if(s===void 0)return{refused:`palette "${e.name}": "${t}" cannot clear the ${Ji} state floor even beyond foreground`};let c=Xn(s,n,(e,t)=>r.every(n=>Xt(e,t(n))>=Ji));return c===void 0?{refused:`palette "${e.name}": "${t}" cannot clear the ${Ji} state floor on the colours drawn at depth ${j[n]}`}:{state:c}}const $i=4.5;function ea(e,t,n){let r=ta.get(e);r===void 0&&(r=new Map,ta.set(e,r));let i=`${t.hex}|${n}`,a=r.get(i);if(a!==void 0)return a;let o=Jn(t),s=Yn([`background`,`foreground`].map(t=>Wi(e,t)).reduce((e,t)=>Xt(o,t)<Xt(o,e)?t:e),t,$i,n);return r.set(i,s),s}const ta=new WeakMap,na={base:.42,perDepth:.14,cap:.75},ra={floor:.12,span:.8};function ia(e,t){return ki[(ki.indexOf(e)+t)%ki.length]}const aa={triggerPlane:.1,nestedPlane:.035,nestedTriggerPlane:.08};function oa(e,t,n){let r=`${t.hue}|${t.depth}|${n}`,i=fa.get(e);i===void 0&&(i=new Map,fa.set(e,i));let a=i.get(r);if(a!==void 0)return a;let o=Yi(e,ia(t.hue,t.depth),n),s=da(e,t,o,n),c=Xn(ca(e,t).plane,n,(e,t)=>s.every(([n,r])=>sa(e,t(n))>=r));if(c===void 0)throw Error(`palette "${e.name}": the ${t.hue} band at depth ${t.depth} cannot keep its floors on the colours drawn at depth ${j[n]}`);let l={state:o,plane:c};return i.set(r,l),l}const sa=(e,t)=>L.fromRgba(e).deltaE(L.fromRgba(t));function ca(e,t){let n=`${t.hue}|${t.depth}`,r=la.get(e);r===void 0&&(r=new Map,la.set(e,r));let i=r.get(n);if(i!==void 0)return i;let a=ua(e,t);return r.set(n,a),a}const la=new WeakMap;function ua(e,t){let n=Yi(e,ia(t.hue,t.depth),j.TRUECOLOR),r=Math.min(na.cap,na.base+na.perDepth*t.depth);return{state:n,plane:gn(n,Wi(e,`background`),r)}}function da(e,t,n,r){let{hue:i,depth:a}=t,o=t=>ca(e,{hue:i,depth:t}).state,s=t=>ca(e,{hue:i,depth:t}).plane,c=e=>Zn(e,j.TRUECOLOR),l=s(a),u=(e,t)=>sa(c(l),c(t))>=e?e:0,d=ia(i,a+1),f=Xi(e,d,r),p=Xi(e,d,j.TRUECOLOR);return[[n,u(aa.triggerPlane,o(a))],...`state`in f&&`state`in p?[[f.state,u(aa.nestedTriggerPlane,p.state)]]:[],...a>0?[[oa(e,{hue:i,depth:a-1},r).plane,u(aa.nestedPlane,s(a-1))]]:[]]}const fa=new WeakMap;function pa(e,t,n,r){let i=oa(e,t,r),a=ca(e,t),o=Xn(gn(a.plane,a.state,ra.floor+ra.span*zi(n)),r,(e,t)=>e.hex!==t(i.plane).hex&&e.hex!==t(i.state).hex);if(o===void 0)throw Error(`palette "${e.name}": a ${t.hue} band item at depth ${t.depth} is drawn as its plane or its trigger at depth ${j[r]}, and nothing that depth draws is neither`);return o}const ma=e=>({kind:`bar`,progression:e,address:[]}),ha=(e,t)=>({...e,address:[...e.address,t]}),ga=e=>({kind:`band`,band:e,address:[]});function _a(e,t,n){switch(t.kind){case`bar`:return{tint:qi(e,t.progression,t.address),disclosure:{hue:ji,depth:0}};case`band`:return{tint:pa(e,t.band,t.address,n),disclosure:{hue:t.band.hue,depth:t.band.depth+1}}}}const va={dark:`textual-dark`,light:`textual-light`};function ya(e){return va[e]??e}const ba=`textual-dark`;function xa(e,t,n,r,i){let a=t===null?null:i(t);return e??a??n??r}function Sa(){return Object.keys(va)}function Ca(){return[...ir(),...Sa()]}function wa(e,t,n,r,i){let a=e=>Object.prototype.hasOwnProperty.call(i,e)?e:null;return xa(e===void 0?null:a(e),t,a(n??r),r,a)}const Ta=[`look`,`palette`];function Ea(e){return e!==void 0&&e.includes(`{{`)}function Da(e,t,n,r,i){let a=Ea(n)?{kind:`expression`,source:n}:i(n??r.name);return xa(e===void 0?null:i(e),t,a,r,i)}function Oa(e,t,n){return e.kind===`decided`?e:n(t())}const ka=`none`;function Aa(e,t){let n=t[e];return n===void 0?null:{kind:`decided`,name:e,value:n}}function ja(e,t){return Aa(e,t)??Aa(`none`,t)??{kind:`decided`,name:`none`,value:kn}}function Ma(e,t,n,r){return Da(e,t,n,ja(ka,r),e=>Aa(e,r))}const Na=[`powerline`,`capsule`,`plain`];function Pa(e){return Na.includes(e)}function Fa(e,t,n){return xa(e,t,n,`powerline`,e=>Pa(e)?e:null)}const Ia=[`unicode`,`ascii`],La=`unicode`;function Ra(e){return Ia.includes(e)}function za(e,t,n){return xa(e,t,n,La,e=>Ra(e)?e:null)}const Ba=[`truecolor`,`256`,`ansi`,`none`],Va=`truecolor`;function Ha(e){return Ba.includes(e)}function Ua(e,t,n){return xa(e,t,n,Va,e=>Ha(e)?e:null)}function Wa(e){return sn(e)??j.DEFAULT}const Ga=Object.keys(Ai);function Ka(e){return Ga.includes(e)}function qa(e,t,n){return xa(e,t,n,`secondary-accent`,e=>Ka(e)?e:null)}const Ja=`true`,Ya=`false`,Xa=[Ja,Ya],Za={min:0,max:16};function Qa(e){return e===`true`?!0:e===`false`?!1:null}function $a(e){if(!/^\d+$/.test(e))return null;let t=Number(e);return t>=Za.min&&t<=Za.max?t:null}function eo(e,t,n){return xa(e,t,n,!0,Qa)}function to(e,t,n){return xa(e,t,n,1,$a)}var no=class extends Error{constructor(e,t){super(`${e} (at offset ${t})`),this.reason=e,this.offset=t,this.name=`Json5EditError`}};const ro=/[A-Za-z_$\p{L}]/u,io=/[A-Za-z0-9_$\u200C\u200D\p{L}\p{N}]/u,ao=/[A-Za-z0-9_$.+\-\p{L}\p{N}]/u,oo=/[\t\n\v\f\r \u00A0\uFEFF\u2028\u2029\p{Zs}]/u;var so=class{pos=0;constructor(e){this.text=e}peek(){return this.text[this.pos]??``}fail(e){throw new no(e,this.pos)}skipTrivia(){for(;;){let e=this.peek();if(e===``)return;if(oo.test(e))this.pos++;else if(e===`/`&&this.text[this.pos+1]===`/`){let e=this.text.indexOf(`
25
- `,this.pos);this.pos=e===-1?this.text.length:e}else if(e===`/`&&this.text[this.pos+1]===`*`){let e=this.text.indexOf(`*/`,this.pos+2);e===-1&&this.fail(`unterminated block comment`),this.pos=e+2}else return}}expect(e){this.peek()!==e&&this.fail(`expected "${e}"`),this.pos++}value(){this.skipTrivia();let e=this.peek();if(e===`{`)return this.object();if(e===`[`)return this.array();if(e===`"`||e===`'`){let e=this.stringSpan();return{kind:`string`,span:e,value:this.decode(e)}}e===``&&this.fail(`unexpected end of input`);let t=this.pos;for(;this.pos<this.text.length&&ao.test(this.peek());)this.pos++;this.pos===t&&this.fail(`unexpected character "${e}"`);let n={start:t,end:this.pos},r=this.decode(n);return r===null?{kind:`null`,span:n}:typeof r==`boolean`?{kind:`boolean`,span:n,value:r}:typeof r==`number`?{kind:`number`,span:n,value:r}:this.fail(`unexpected word "${this.text.slice(t,this.pos)}"`)}decode(e){try{return Ze.default.parse(this.text.slice(e.start,e.end))}catch(t){throw new no(t.message,e.start)}}stringSpan(){let e=this.pos,t=this.peek();for(this.pos++;;){let n=this.peek();if(n===``&&this.fail(`unterminated string`),n===`\\`){let e=this.text.startsWith(`\r
24
+ `),n=0,r=0;for(let e of t){let t=O(e);n=Math.max(n,t);let i=e.split(/\s+/);for(let e of i)e.length>0&&(r=Math.max(r,O(e)))}let i=zt(e.maxWidth);return{minimum:Math.min(r,i),maximum:Math.min(n,i)}}_expandTabs(e){return e.includes(` `)?e.replace(/\t/g,` `.repeat(this._tabSize)):e}_buildSegments(e,t,n){let r=t=>Math.max(0,Math.min(t,e.length)),i=new Set([0,e.length]);for(let e of this._spans)i.add(r(e.start)),i.add(r(e.end));let a=[...i].sort((e,t)=>e-t),o=new Map(a.map((e,t)=>[e,t])),s=a.slice(0,-1).map(()=>t);for(let e of this._spans){let t=r(e.end),i=ii(n,e.style),c=o.get(r(e.start));for(let e=c;a[e]<t;e++)s[e]=s[e].add(i)}return s.map((t,n)=>new B(e.slice(a[n],a[n+1]),t.isNull?void 0:t))}_justifyLines(e,t,n,r){return r===`full`?e.map((r,i)=>i===e.length-1?r:this._fillLine(r,t,n)):e.map(e=>[...this._justifyLine(e,t,r)])}*_justifyLine(e,t,n){switch(n){case`center`:case`right`:{let r=B.adjustLineLength(e,B.getLineLength(e)-ei(e),void 0,!1),i=Math.max(t-B.getLineLength(r),0),a=n===`center`?Math.floor(i/2):i;a>0&&(yield new B(` `.repeat(a))),yield*r;let o=i-a;o>0&&(yield new B(` `.repeat(o)));break}case`left`:yield*B.adjustLineLength(e,Math.max(t,B.getLineLength(e)));break;default:yield*e;break}}_fillLine(e,t,n){let r=$r(e),i=r.split(` `);r.endsWith(` `)&&i.pop();let a=i.length-1,o=Array(a).fill(1),s=i.reduce((e,t)=>e+O(t),0)+a;for(let e=0;s<t&&a>0;e=(e+1)%a)o[a-1-e]+=1,s+=1;let c=[],l=0;for(let e=0;e<i.length;e+=1)l+=O(i[e]),c.push(l),l+=1,e<a&&c.push(l);let u=B.divide(e,c),d=(e,t)=>e.filter(e=>e.hasText).at(t)?.style??n,f=[];for(let e=0;e<i.length;e+=1)if(f.push(...u[e*2]),e<a){let t=d(u[e*2],-1),r=d(u[e*2+2],0),i=t.equals(r)?t:n;f.push(new B(` `.repeat(o[e]),i.isNull?void 0:i))}return f}*_fitLine(e,t,n){let r=B.getLineLength(e);if(r-ei(e)<=t){yield*B.adjustLineLength(e,Math.min(r,t),void 0,!1);return}if(n===`ellipsis`&&t>0){yield*B.adjustLineLength(e,t-1,void 0,!1),yield new B(`…`);return}yield*B.adjustLineLength(e,t,void 0,!1)}},si=class{items;joiner;constructor(e,t){this.items=e,this.joiner=t}*render(e){let t=this.items;if(t.length!==0){yield*this.joiner.join(null,t[0]).render(e);for(let n=0;n<t.length;n++){let r=t[n];yield*r.render(e);let i=n+1<t.length?t[n+1]:null;yield*this.joiner.join(r,i).render(e)}yield B.line()}}};const ci={*render(e){}};var li=class{_text;_style;constructor(e,t){this._text=e,this._style=t}*render(e){yield new B(this._text,this._style)}};function ui(e){return{render:e}}function di(e){return new z({color:e.bgcolor})}function fi(e){return e!==void 0&&!e.isDefault?e:void 0}function pi(e){return new z({bgcolor:e}).drawnColors().bgcolor}function*mi(e,t){e!==``&&(yield new B(e,new z({color:pi(t)})))}function hi(e,t){let{color:n,bgcolor:r}=e.drawnColors(t??j.TRUECOLOR);if(n===void 0||r===void 0)return!1;let i=n.fixedValue,a=r.fixedValue;return i!==void 0&&a!==void 0?L.fromRgba(i).deltaE(L.fromRgba(a))<.04:n.number===r.number}const gi=Object.freeze({glyph:``,divider:``,lead:``,tail:``});var _i=class{_glyph;_divider;_lead;_tail;constructor(e=gi){this._glyph=e.glyph,this._divider=e.divider,this._lead=e.lead,this._tail=e.tail}join(e,t){let n=this._glyph,r=this._divider,i=this._lead,a=this._tail;return ui(function*(o){let s=e?.edgeStyle(`right`,o),c=fi(s?.bgcolor),l=fi(t?.edgeStyle(`left`,o).bgcolor);if(c===void 0){l!==void 0&&(yield*mi(i,l));return}if(l===void 0){yield*mi(a,c);return}let u=new z({color:pi(c),bgcolor:l});yield hi(u,o.colorSystem)?new B(r,new z({color:s?.color,bgcolor:c})):new B(n,u)})}},vi=class{_left;_right;_separator;constructor(e){this._left=e?.left??``,this._right=e?.right??``,this._separator=e?.separator??` `}*_emit(e,t,n){if(!(e===null&&t===null)){if(e===null){yield new B(this._left,di(t.edgeStyle(`left`,n)));return}if(t===null){yield new B(this._right,di(e.edgeStyle(`right`,n)));return}yield new B(this._right,di(e.edgeStyle(`right`,n))),this._separator.length>0&&(yield new B(this._separator)),yield new B(this._left,di(t.edgeStyle(`left`,n)))}}join(e,t){return ui(n=>this._emit(e,t,n))}},yi=class{_separator;_style;constructor(e){this._separator=e?.separator??` | `,this._style=e?.style??z.parse(`dim`)}join(e,t){return e===null||t===null?ci:new li(this._separator,this._style)}};function bi(e,t){if(e.isControl||e.text.length===0)return;let n=e.style;return!n||n.isNull?{text:e.text,sgrCodes:``,link:void 0}:{text:e.text,sgrCodes:t.colorSystem===null?``:n.toSgrCodes(t.colorSystem),link:t.hyperlinks?n.link:void 0}}function xi(e,t){let n=[];for(let r of e){let e=bi(r,t);e&&n.push(e)}if(n.length===0)return``;let r=[],i=0;for(;i<n.length;){let e=n[i].sgrCodes,t=i+1;for(;t<n.length&&n[t].sgrCodes===e;)t++;e.length>0&&r.push(`\x1b[${e}m`);let a=i;for(;a<t;){let e=n[a].link,i=a+1;for(;i<t&&n[i].link===e;)i++;if(e){r.push(Jr(e));for(let e=a;e<i;e++)r.push(n[e].text);r.push(`\x1B]8;;\x1B\\`)}else for(let e=a;e<i;e++)r.push(n[e].text);a=i}e.length>0&&r.push(`\x1B[0m`),i=t}return r.join(``)}function Si(e,t){let n=t?.width??80,r={};t?.env!==void 0&&(r.env=t.env),t?.isTTY!==void 0&&(r.isTTY=t.isTTY);let i=t?.colorSystem,a=on(i===void 0?j.TRUECOLOR:i,r),o={colorSystem:t?.noColor?null:a.colorSystem,hyperlinks:t?.hyperlinks??a.hyperlinks},s={maxWidth:n,isTerminal:!1,encoding:`utf-8`,asciiOnly:!1,colorSystem:o.colorSystem};return xi(e.render(s),o)}function Ci(e,t){let n=[...e.render(t)],r=0;for(let e of n)r+=e.cellLength;return{segments:n,width:r}}const wi={segments:[],width:0},Ti={left:()=>0,justify:()=>0,center:e=>Math.floor(e/2),right:e=>e};function Ei(e,t){return Ti[e](t)}function Di(e,t,n,r){let i=Math.max(0,r-1),a=e===`justify`&&!t&&i>0&&n>0?n:0,o=i>0?Math.floor(a/i):0,s=a-o*i;return Array.from({length:i},(e,t)=>o+ +(t<s))}var Oi=class{items;joiner;gap;align;constructor(e,t){this.items=e,this.joiner=t?.joiner,this.gap=t?.gap??0,this.align=t?.align??`left`}*render(e){let t=this.items;if(t.length===0)return;let n=Math.max(1,e.maxWidth),r=this.gap,i=this.joiner,a=t.map(t=>Ci(t,e)),o=n=>i?Ci(i.join(null,t[n]),e):wi,s=n=>i?Ci(i.join(t[n],null),e):wi,c=(n,r)=>i?Ci(i.join(t[n],t[r]),e):wi,l=[],u=null,d=r>0?{segments:[new B(` `.repeat(r))],width:r}:wi;for(let e=0;e<t.length;e++){let t=a[e];if(u===null){let n=o(e),r=s(e),i=n.width>0?[n,t]:[t],a=[i.length-1];u={blocks:i,width:n.width+t.width,lastIndex:e,itemBlockIndices:a},u.endCap=r;continue}let i=u.lastIndex,f=c(i,e),p=s(e),m=(r>0?r:0)+f.width+(r>0?r:0)+t.width;if(u.width+m+p.width<=n)r>0&&u.blocks.push(d),f.width>0&&u.blocks.push(f),r>0&&u.blocks.push(d),u.blocks.push(t),u.itemBlockIndices.push(u.blocks.length-1),u.width+=m,u.lastIndex=e,u.endCap=p;else{let n=u.endCap;n.width>0&&u.blocks.push(n),u.width+=n.width,l.push(u);let r=o(e),i=s(e),a=r.width>0?[r,t]:[t],c=[a.length-1];u={blocks:a,width:r.width+t.width,lastIndex:e,itemBlockIndices:c},u.endCap=i}}let f=u;{let e=f.endCap;e.width>0&&f.blocks.push(e),f.width+=e.width,l.push(f)}let p=this.align;for(let e=0;e<l.length;e++){let t=l[e],r=e===l.length-1,i=Math.max(0,n-t.width),a=Ei(p,i),o=Di(p,r,i,t.itemBlockIndices.length),s=new Map;t.itemBlockIndices.forEach((e,t)=>s.set(e,t)),a>0&&(yield new B(` `.repeat(a)));for(let e=0;e<t.blocks.length;e++){let n=s.get(e);if(n!==void 0&&n>0){let e=o[n-1];e>0&&(yield new B(` `.repeat(e)))}yield*t.blocks[e].segments}yield B.line()}}measure(e){let t=this.items;if(t.length===0)return{minimum:0,maximum:0};let n=0,r=0;for(let i=0;i<t.length;i++){let a=Ci(t[i],e).width,o=this.joiner?Ci(this.joiner.join(null,t[i]),e).width:0,s=this.joiner?Ci(this.joiner.join(t[i],null),e).width:0;n=Math.max(n,a+o+s),r+=a,i>0&&(r+=this.gap*2,this.joiner&&(r+=Ci(this.joiner.join(t[i-1],t[i]),e).width))}return this.joiner&&(r+=Ci(this.joiner.join(null,t[0]),e).width,r+=Ci(this.joiner.join(t[t.length-1],null),e).width),{minimum:n,maximum:r}}};const ki=[`primary`,`secondary`,`accent`],Ai={"secondary-accent":[`secondary`,`accent`],"primary-secondary":[`primary`,`secondary`],primary:[`primary`]},ji=`accent`,Mi=[0,.5,1],H=e=>e.flatMap(e=>Mi.map(t=>({hue:e,tone:t}))),Ni=H(ki.filter(e=>Object.values(Ai).some(t=>t.includes(e)))),Pi=e=>{let t=0,n=.5;for(let r=e;r>0;r>>=1,n/=2)t+=n*(r&1);return t},Fi=[`van-der-corput`,`golden-angle`,`ends-interleaved`,`monotonic`,`uniform`],Ii=e=>typeof e==`string`&&Fi.includes(e),Li={"van-der-corput":Pi,"golden-angle":e=>e*.6180339887498949%1,"ends-interleaved":(e,t)=>((e%2==0?e/2:t-1-(e-1)/2)+.5)/t,monotonic:(e,t)=>(e+.5)/t,uniform:()=>.5},Ri=e=>Li[e??`van-der-corput`];function zi(e){let t=0,n=1;for(let{index:r,count:i,distribution:a}of e)t+=a(r,i)*n,n*=.37;return t%1}const Bi=(e,t)=>Math.floor(e*t),Vi=(e,t)=>Math.round(e*t)%t;function Hi(e,t,n){let r=e[n(t===void 0?0:t.distribution(t.index,t.count),e.length)];if(r===void 0)throw Error(`vocabularySelect: empty vocabulary`);return r}function Ui(e,t){let n=t.findIndex(e=>e.axis===`cell`),r=n===-1?t:t.slice(0,n);return{hue:Hi(e,r.at(-1),Bi),tone:Hi(Mi,t[r.length],Vi)}}function Wi(e,t){let n=e.get(t);if(n===void 0)throw Error(`palette "${e.name}" has no "${t}" role; decoration needs it`);return n}function Gi(e,t){let n=Ki.get(e);n===void 0&&(n=new Map,Ki.set(e,n));let r=`${t.hue}|${t.tone}`,i=n.get(r);if(i!==void 0)return i;let a=L.fromRgba(Wi(e,t.hue)),o=L.fromRgba(Wi(e,`surface`)),s=(e,t)=>e.mixAxes(a,{l:t,c:.8,h:1,alpha:0}),c=s(o.mixAxes(L.fromRgba(Wi(e,`background`)),{l:.5,c:0,h:0,alpha:0}),0).mixAxes(s(o,.35),{l:t.tone,c:t.tone,h:t.tone,alpha:0}).toRgba();return n.set(r,c),c}const Ki=new WeakMap,qi=(e,t,n)=>Gi(e,Ui(t,n)),Ji=2.2;function Yi(e,t,n){let r=Xi(e,t,n);if(`refused`in r)throw Error(r.refused);return r.state}function Xi(e,t,n){let r=Zi.get(e);r===void 0&&(r=new Map,Zi.set(e,r));let i=`${t}|${n}`,a=r.get(i);if(a!==void 0)return a;let o=Qi(e,t,n);return r.set(i,o),o}const Zi=new WeakMap;function Qi(e,t,n){let r=Ni.map(t=>Zn(Gi(e,t),j.TRUECOLOR)),i=gn(Wi(e,`surface`),Wi(e,t),.92),a=Wi(e,`foreground`),o=r.reduce((e,t)=>Yn(e,t,Ji),a),s=[...Array.from({length:13},(e,t)=>gn(i,a,t/12)),o].find(e=>r.every(t=>Xt(Zn(e,j.TRUECOLOR),t)>=Ji));if(s===void 0)return{refused:`palette "${e.name}": "${t}" cannot clear the ${Ji} state floor even beyond foreground`};let c=Xn(s,n,(e,t)=>r.every(n=>Xt(e,t(n))>=Ji));return c===void 0?{refused:`palette "${e.name}": "${t}" cannot clear the ${Ji} state floor on the colours drawn at depth ${j[n]}`}:{state:c}}const $i=4.5;function ea(e,t,n){let r=ta.get(e);r===void 0&&(r=new Map,ta.set(e,r));let i=`${t.hex}|${n}`,a=r.get(i);if(a!==void 0)return a;let o=Jn(t),s=Yn([`background`,`foreground`].map(t=>Wi(e,t)).reduce((e,t)=>Xt(o,t)<Xt(o,e)?t:e),t,$i,n);return r.set(i,s),s}const ta=new WeakMap,na={base:.42,perDepth:.14,cap:.75},ra={floor:.12,span:.8};function ia(e,t){return ki[(ki.indexOf(e)+t)%ki.length]}const aa={triggerPlane:.1,nestedPlane:.035,nestedTriggerPlane:.08};function oa(e,t,n){let r=`${t.hue}|${t.depth}|${n}`,i=fa.get(e);i===void 0&&(i=new Map,fa.set(e,i));let a=i.get(r);if(a!==void 0)return a;let o=Yi(e,ia(t.hue,t.depth),n),s=da(e,t,o,n),c=Xn(ca(e,t).plane,n,(e,t)=>s.every(([n,r])=>sa(e,t(n))>=r));if(c===void 0)throw Error(`palette "${e.name}": the ${t.hue} band at depth ${t.depth} cannot keep its floors on the colours drawn at depth ${j[n]}`);let l={state:o,plane:c};return i.set(r,l),l}const sa=(e,t)=>L.fromRgba(e).deltaE(L.fromRgba(t));function ca(e,t){let n=`${t.hue}|${t.depth}`,r=la.get(e);r===void 0&&(r=new Map,la.set(e,r));let i=r.get(n);if(i!==void 0)return i;let a=ua(e,t);return r.set(n,a),a}const la=new WeakMap;function ua(e,t){let n=Yi(e,ia(t.hue,t.depth),j.TRUECOLOR),r=Math.min(na.cap,na.base+na.perDepth*t.depth);return{state:n,plane:gn(n,Wi(e,`background`),r)}}function da(e,t,n,r){let{hue:i,depth:a}=t,o=t=>ca(e,{hue:i,depth:t}).state,s=t=>ca(e,{hue:i,depth:t}).plane,c=e=>Zn(e,j.TRUECOLOR),l=s(a),u=(e,t)=>sa(c(l),c(t))>=e?e:0,d=ia(i,a+1),f=Xi(e,d,r),p=Xi(e,d,j.TRUECOLOR);return[[n,u(aa.triggerPlane,o(a))],...`state`in f&&`state`in p?[[f.state,u(aa.nestedTriggerPlane,p.state)]]:[],...a>0?[[oa(e,{hue:i,depth:a-1},r).plane,u(aa.nestedPlane,s(a-1))]]:[]]}const fa=new WeakMap;function pa(e,t,n,r){let i=oa(e,t,r),a=ca(e,t),o=Xn(gn(a.plane,a.state,ra.floor+ra.span*zi(n)),r,(e,t)=>e.hex!==t(i.plane).hex&&e.hex!==t(i.state).hex);if(o===void 0)throw Error(`palette "${e.name}": a ${t.hue} band item at depth ${t.depth} is drawn as its plane or its trigger at depth ${j[r]}, and nothing that depth draws is neither`);return o}const ma=e=>({kind:`bar`,progression:e,address:[]}),ha=(e,t)=>({...e,address:[...e.address,t]}),ga=e=>({kind:`band`,band:e,address:[]});function _a(e,t,n){switch(t.kind){case`bar`:return{tint:qi(e,t.progression,t.address),disclosure:{hue:ji,depth:0}};case`band`:return{tint:pa(e,t.band,t.address,n),disclosure:{hue:t.band.hue,depth:t.band.depth+1}}}}const va={dark:`textual-dark`,light:`textual-light`};function ya(e){return va[e]??e}const ba=`textual-dark`;function xa(e,t,n,r,i){let a=t===null?null:i(t);return e??a??n??r}function Sa(){return Object.keys(va)}function Ca(){return[...ir(),...Sa()]}function wa(){return[`bar`,...Ca()]}let Ta;function Ea(e){return Ta??=new Set(wa()),Ta.has(e)}function Da(e,t,n,r,i){let a=e=>Object.prototype.hasOwnProperty.call(i,e)?e:null;return xa(e===void 0?null:a(e),t,a(n??r),r,a)}const Oa=[`look`,`palette`];function ka(e){return e!==void 0&&e.includes(`{{`)}function Aa(e,t,n,r,i){let a=ka(n)?{kind:`expression`,source:n}:i(n??r.name);return xa(e===void 0?null:i(e),t,a,r,i)}function ja(e,t,n){return e.kind===`decided`?e:n(t())}const Ma=`none`;function Na(e,t){let n=t[e];return n===void 0?null:{kind:`decided`,name:e,value:n}}function Pa(e,t){return Na(e,t)??Na(`none`,t)??{kind:`decided`,name:`none`,value:kn}}function Fa(e,t,n,r){return Aa(e,t,n,Pa(Ma,r),e=>Na(e,r))}const Ia=[`powerline`,`capsule`,`plain`];function La(e){return Ia.includes(e)}function Ra(e,t,n){return xa(e,t,n,`powerline`,e=>La(e)?e:null)}const za=[`unicode`,`ascii`],Ba=`unicode`;function Va(e){return za.includes(e)}function Ha(e,t,n){return xa(e,t,n,Ba,e=>Va(e)?e:null)}const Ua=[`truecolor`,`256`,`ansi`,`none`],Wa=`truecolor`;function Ga(e){return Ua.includes(e)}function Ka(e,t,n){return xa(e,t,n,Wa,e=>Ga(e)?e:null)}function qa(e){return sn(e)??j.DEFAULT}const Ja=Object.keys(Ai);function Ya(e){return Ja.includes(e)}function Xa(e,t,n){return xa(e,t,n,`secondary-accent`,e=>Ya(e)?e:null)}const Za=`true`,Qa=`false`,$a=[Za,Qa],eo={min:0,max:16};function to(e){return e===`true`?!0:e===`false`?!1:null}function no(e){if(!/^\d+$/.test(e))return null;let t=Number(e);return t>=eo.min&&t<=eo.max?t:null}function ro(e,t,n){return xa(e,t,n,!0,to)}function io(e,t,n){return xa(e,t,n,1,no)}var ao=class extends Error{constructor(e,t){super(`${e} (at offset ${t})`),this.reason=e,this.offset=t,this.name=`Json5EditError`}};const oo=/[A-Za-z_$\p{L}]/u,so=/[A-Za-z0-9_$\u200C\u200D\p{L}\p{N}]/u,co=/[A-Za-z0-9_$.+\-\p{L}\p{N}]/u,lo=/[\t\n\v\f\r \u00A0\uFEFF\u2028\u2029\p{Zs}]/u;var uo=class{pos=0;constructor(e){this.text=e}peek(){return this.text[this.pos]??``}fail(e){throw new ao(e,this.pos)}skipTrivia(){for(;;){let e=this.peek();if(e===``)return;if(lo.test(e))this.pos++;else if(e===`/`&&this.text[this.pos+1]===`/`){let e=this.text.indexOf(`
25
+ `,this.pos);this.pos=e===-1?this.text.length:e}else if(e===`/`&&this.text[this.pos+1]===`*`){let e=this.text.indexOf(`*/`,this.pos+2);e===-1&&this.fail(`unterminated block comment`),this.pos=e+2}else return}}expect(e){this.peek()!==e&&this.fail(`expected "${e}"`),this.pos++}value(){this.skipTrivia();let e=this.peek();if(e===`{`)return this.object();if(e===`[`)return this.array();if(e===`"`||e===`'`){let e=this.stringSpan();return{kind:`string`,span:e,value:this.decode(e)}}e===``&&this.fail(`unexpected end of input`);let t=this.pos;for(;this.pos<this.text.length&&co.test(this.peek());)this.pos++;this.pos===t&&this.fail(`unexpected character "${e}"`);let n={start:t,end:this.pos},r=this.decode(n);return r===null?{kind:`null`,span:n}:typeof r==`boolean`?{kind:`boolean`,span:n,value:r}:typeof r==`number`?{kind:`number`,span:n,value:r}:this.fail(`unexpected word "${this.text.slice(t,this.pos)}"`)}decode(e){try{return Ze.default.parse(this.text.slice(e.start,e.end))}catch(t){throw new ao(t.message,e.start)}}stringSpan(){let e=this.pos,t=this.peek();for(this.pos++;;){let n=this.peek();if(n===``&&this.fail(`unterminated string`),n===`\\`){let e=this.text.startsWith(`\r
26
26
  `,this.pos+1);this.pos+=e?3:2;continue}if(this.pos++,n===t)return{start:e,end:this.pos};n===`
27
- `&&this.fail(`unterminated string`)}}key(){let e=this.peek();if(e===`"`||e===`'`){let e=this.stringSpan();return{key:this.decode(e),span:e}}let t=this.pos;for(ro.test(e)||this.fail(`expected an object key`);this.pos<this.text.length&&io.test(this.peek());)this.pos++;return{key:this.text.slice(t,this.pos),span:{start:t,end:this.pos}}}object(){let e=this.pos;this.expect(`{`);let t=[];for(;this.skipTrivia(),this.peek()!==`}`;){let{key:e,span:n}=this.key();if(t.some(t=>t.key===e))throw new no(`duplicate key "${e}"`,n.start);this.skipTrivia(),this.expect(`:`);let r=this.value();if(t.push({key:e,keySpan:n,value:r,span:{start:n.start,end:r.span.end}}),this.skipTrivia(),this.peek()===`,`){this.pos++;continue}this.peek()!==`}`&&this.fail(`expected "," or "}"`)}return this.expect(`}`),{kind:`object`,span:{start:e,end:this.pos},entries:t}}array(){let e=this.pos;this.expect(`[`);let t=[];for(;this.skipTrivia(),this.peek()!==`]`;){if(t.push(this.value()),this.skipTrivia(),this.peek()===`,`){this.pos++;continue}this.peek()!==`]`&&this.fail(`expected "," or "]"`)}return this.expect(`]`),{kind:`array`,span:{start:e,end:this.pos},elements:t}}};function co(e){let t=new so(e),n=t.value();return t.skipTrivia(),t.pos!==e.length&&t.fail(`trailing content after the document`),n}function lo(e,t){return e.kind===`object`?e.entries.find(e=>e.key===t):void 0}function uo(e,t){let n=e;for(let e of t)n=n===void 0?void 0:lo(n,e)?.value;return n}function fo(e,t){return e.slice(t.span.start,t.span.end)}function po(e,t){let n=Eo(e,t.span.start),r=mo(t),i=e=>r.some(t=>t.start<e&&e<t.end),a=t.span.start;return fo(e,t).split(`
27
+ `&&this.fail(`unterminated string`)}}key(){let e=this.peek();if(e===`"`||e===`'`){let e=this.stringSpan();return{key:this.decode(e),span:e}}let t=this.pos;for(oo.test(e)||this.fail(`expected an object key`);this.pos<this.text.length&&so.test(this.peek());)this.pos++;return{key:this.text.slice(t,this.pos),span:{start:t,end:this.pos}}}object(){let e=this.pos;this.expect(`{`);let t=[];for(;this.skipTrivia(),this.peek()!==`}`;){let{key:e,span:n}=this.key();if(t.some(t=>t.key===e))throw new ao(`duplicate key "${e}"`,n.start);this.skipTrivia(),this.expect(`:`);let r=this.value();if(t.push({key:e,keySpan:n,value:r,span:{start:n.start,end:r.span.end}}),this.skipTrivia(),this.peek()===`,`){this.pos++;continue}this.peek()!==`}`&&this.fail(`expected "," or "}"`)}return this.expect(`}`),{kind:`object`,span:{start:e,end:this.pos},entries:t}}array(){let e=this.pos;this.expect(`[`);let t=[];for(;this.skipTrivia(),this.peek()!==`]`;){if(t.push(this.value()),this.skipTrivia(),this.peek()===`,`){this.pos++;continue}this.peek()!==`]`&&this.fail(`expected "," or "]"`)}return this.expect(`]`),{kind:`array`,span:{start:e,end:this.pos},elements:t}}};function fo(e){let t=new uo(e),n=t.value();return t.skipTrivia(),t.pos!==e.length&&t.fail(`trailing content after the document`),n}function po(e,t){return e.kind===`object`?e.entries.find(e=>e.key===t):void 0}function mo(e,t){let n=e;for(let e of t)n=n===void 0?void 0:po(n,e)?.value;return n}function ho(e,t){return e.slice(t.span.start,t.span.end)}function go(e,t){let n=ko(e,t.span.start),r=_o(t),i=e=>r.some(t=>t.start<e&&e<t.end),a=t.span.start;return ho(e,t).split(`
28
28
  `).map((e,t)=>{let r=a;return a+=e.length+1,(t>0&&!i(r-1)&&e.startsWith(n)?e.slice(n.length):e).replace(/\r$/,``)}).join(`
29
- `)}function mo(e){switch(e.kind){case`object`:return e.entries.flatMap(e=>[e.keySpan,...mo(e.value)]);case`array`:return e.elements.flatMap(mo);case`string`:return[e.span];default:return[]}}const ho=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function go(e){return ho.test(e)?e:JSON.stringify(e)}const _o={key:go,trailingComma:`,`,parse:e=>Ze.default.parse(e)},vo={key:e=>JSON.stringify(e),trailingComma:``,parse:e=>JSON.parse(e)};function yo(e){if(Array.isArray(e))return e.length===0?`[]`:`[\n${e.map(e=>` ${xo(yo(e),` `,`
29
+ `)}function _o(e){switch(e.kind){case`object`:return e.entries.flatMap(e=>[e.keySpan,..._o(e.value)]);case`array`:return e.elements.flatMap(_o);case`string`:return[e.span];default:return[]}}const vo=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function yo(e){return vo.test(e)?e:JSON.stringify(e)}const bo={key:yo,trailingComma:`,`,parse:e=>Ze.default.parse(e)},xo={key:e=>JSON.stringify(e),trailingComma:``,parse:e=>JSON.parse(e)};function So(e){if(Array.isArray(e))return e.length===0?`[]`:`[\n${e.map(e=>` ${wo(So(e),` `,`
30
30
  `)},`).join(`
31
- `)}\n]`;if(typeof e==`object`&&e){let t=Object.entries(e).filter(([,e])=>e!==void 0);return t.length===0?`{}`:`{\n${t.map(([e,t])=>` ${go(e)}: ${xo(yo(t),` `,`
31
+ `)}\n]`;if(typeof e==`object`&&e){let t=Object.entries(e).filter(([,e])=>e!==void 0);return t.length===0?`{}`:`{\n${t.map(([e,t])=>` ${yo(e)}: ${wo(So(t),` `,`
32
32
  `)},`).join(`
33
- `)}\n}`}return JSON.stringify(e)}function bo(e){return e.includes(`\r
33
+ `)}\n}`}return JSON.stringify(e)}function Co(e){return e.includes(`\r
34
34
  `)?`\r
35
35
  `:`
36
- `}function xo(e,t,n){return e.split(`
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
- `)}${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:
36
+ `}function wo(e,t,n){return e.split(`
37
+ `).join(`${n}${t}`)}function To(e,t,n){let[r,...i]=e,a=i.length===0?t:`{\n ${wo(To(i,t,n),` `,`
38
+ `)}${n.trailingComma}\n}`;return`${n.key(r)}: ${a}`}function Eo(e,t,n,r){return e.slice(0,t)+r+e.slice(n)}function Do(e,t){return e.lastIndexOf(`
39
+ `,t-1)+1}function Oo(e){return/^[ \t]*$/.test(e)}function ko(e,t){let n=Do(e,t);return/^[ \t]*/.exec(e.slice(n))[0]}function Ao(e,t){return Oo(e.slice(Do(e,t),t))}const jo=/(?:\/\/[^\n]*?)?(\r\n|\n|$)/y;function Mo(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++;jo.lastIndex=n;let i=jo.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 No(e,t){let{commaEnd:n,line:r}=Mo(e,t.end);if(Ao(e,t.start)&&r!==null)return Eo(e,Do(e,t.start),r.next,``);if(n!==-1){let r=n;for(;r<e.length&&e[r]===` `;)r++;return Eo(e,t.start,r,``)}let i=t.start;for(;i>0&&(e[i-1]===` `||e[i-1]===` `);)i--;return e[i-1]===`,`?Eo(e,i-1,t.end,``):Eo(e,t.start,t.end,``)}function Po(e,t,n,r,i){let a=n.commaEnd!==-1,o=a?e:Eo(e,t.end,t.end,`,`),s=n.line.at+ +!a,c=Co(e);return Eo(o,s,s,`${c}${i}${wo(r,i,c)}${a?`,`:``}`)}function Fo(e,t,n,r){let i=t.kind===`object`?t.entries:t.elements,a=i[i.length-1],o=ko(e,t.span.start);if(a===void 0){let i=o+` `,a=Co(e);return Eo(e,t.span.start+1,t.span.end-1,`${a}${i}${wo(n,i,a)}${r.trailingComma}${a}${o}`)}let{commaEnd:s,line:c}=Mo(e,a.span.end);if(Ao(e,a.span.start)&&c!==null){let t=e.slice(Do(e,a.span.start),a.span.start);return Po(e,a.span,{commaEnd:s,line:c},n,t)}let l=s===-1?a.span.end:s;return Eo(e,l,l,`${s===-1?`, `:` `}${n}${s===-1?``:`,`}`)}function Io(e,t,n,r){if(t.length===0)throw new ao(`setValue needs a non-empty path`,0);if(/^\s*$/.test(e)){let i=Co(e);return`{${i} ${wo(To(t,n,r),` `,i)}${r.trailingComma}${i}}${i}`}return Lo(e,fo(e),t,n,r)}function Lo(e,t,n,r,i){let a=t;for(let t=0;t<n.length;t++){if(a.kind!==`object`)throw new ao(`cannot set ${n.join(`.`)}: ${n.slice(0,t).join(`.`)||`the document`} is not an object`,a.span.start);let o=po(a,n[t]);if(o===void 0)return Fo(e,a,To(n.slice(t),r,i),i);if(t===n.length-1){let t=ko(e,o.keySpan.start);return Eo(e,o.value.span.start,o.value.span.end,wo(r,t,Co(e)))}a=o.value}throw new ao(`unreachable: path exhausted`,0)}function Ro(e,t,n=0){if(t.length===0)throw new ao(`deleteValue needs a non-empty path`,0);if(/^\s*$/.test(e))return e;let r=t.slice(0,-1),i=mo(fo(e),r),a=i===void 0?void 0:po(i,t[t.length-1]);if(a===void 0||i?.kind!==`object`)return e;let o=No(e,a.span);return r.length>n&&i.entries.length===1?Ro(o,r,n):o}const zo=[`h`,`v`,`children`];function Bo(e){if(e.kind===`string`)return e.value;if(e.kind!==`object`)return;let t=po(e,`seg`)?.value,n=po(e,`kind`)?.value,r=po(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=po(e,`id`)?.value;return a?.kind===`string`?a.value:i}function Vo(e){return e.kind===`object`?zo.map(t=>po(e,t)?.value).filter(e=>e?.kind===`array`):[]}function Ho(e){let t=po(e,`rows`)?.value;return t?.kind===`object`?t.entries:null}function Uo(e){if(e.kind!==`object`)return!0;let t=Ho(e);return t===null||t.length>0||e.entries.some(e=>e.key!==`rows`)}function*Wo(e,t){yield{node:e,bareAt:t};for(let t of Vo(e))for(let e of t.elements)yield*Wo(e,null);for(let n of Ho(e)??[])yield*Wo(n.value,t===null?null:[...t,`rows`,n.key])}function Go(e,t){for(let{node:n}of Wo(e,null))if(Bo(n)===t)return!0;return!1}function Ko(e,t,n){let r=mo(fo(e),t);if(r===void 0)return null;for(let{node:i,bareAt:a}of Wo(r,t))if(Bo(i)===n)return a===null?{text:e,ref:i}:Ko(Io(e,a,`{ h: [${ho(e,i)}] }`,bo),t,n);return null}function qo(e,t,n){let r=Ko(e,t,n);return r===null?null:No(r.text,r.ref.span)}function Jo(e,t,n,r,i){let a=Ko(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}=Mo(o,s.span.end);if(Ao(o,s.span.start)&&u!==null){let e=o.slice(Do(o,s.span.start),s.span.start);return i===`after`?Po(o,s.span,{commaEnd:l,line:u},c,e):Eo(o,s.span.start,s.span.start,`${c},${Co(o)}${e}`)}let d=ho(o,s),f=i===`before`?`${c}, ${d}`:`${d}, ${c}`;return Eo(o,s.span.start,s.span.end,f)}function Yo(e,t,n,r,i){let a=Ko(e,t,n);if(a===null)return null;let{text:o,ref:s}=a,c=`{ ${yo(r)}: ${i} }`;return s.kind===`string`?Eo(o,s.span.start,s.span.end,`{ seg: ${JSON.stringify(s.value)}, settings: ${c} }`):po(s,`settings`)===void 0?Lo(o,s,[`settings`],c,bo):Lo(o,s,[`settings`,r],i,bo)}var Xo=class extends Error{file;issues;warnings;constructor(e,t,n=[]){super(es(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=Zo(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 Zo(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 $o(e,t){try{return fo(t),null}catch(n){if(!(n instanceof ao))throw n;return`${e}:${Qo(t,n.offset)}: ${n.reason} — the settings menu cannot edit this file until it is fixed`}}function es(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 ts=[`vertical`,`horizontal`],ns={vertical:`row`,horizontal:`cell`};function rs(e){return e.id??e.name}function is(e){return[...ss(e)].flatMap(e=>e.kind===`segment`?[rs(e)]:[])}function as(e,t){if(!t.has(e))return e;let n=2;for(;t.has(`${e}-${n}`);)n++;return`${e}-${n}`}function os(e,t){return e.opens===void 0?e:{...e,opens:{...e.opens,body:t(e.opens.body)}}}function*ss(e){yield e;for(let t of ds(e))yield*ss(t)}const cs=(e,t)=>`${e}.children[${t}]`,ls=e=>`${e}.opens.body`;function*us(e,t){if(yield[e,t],e.kind===`container`)for(let[n,r]of e.children.entries())yield*us(r,cs(t,n));else e.opens!==void 0&&(yield*us(e.opens.body,ls(t)))}function ds(e){return e.kind===`container`?e.children:e.opens===void 0?[]:[e.opens.body]}function fs(e){return e===void 0||`text`in e?`text`:`regex`in e?`regex`:`json`}const ps=[`ttl`,`watch_file`,`depends_on`,`key`,`never`];function ms(e){return e.kind!==`literal`&&e.kind!==`input`&&e.kind!==`env`&&e.kind!==`state`}const hs=[`branch`,`sha`,`dirty`,`ahead`,`behind`,`stash`],gs=[`file`,`shell`,`git`],_s=`theme`;function vs(e){return{...e.settings,[_s]:{label:_s,domain:`theme`,default:e.palette??`bar`}}}function ys(e,t){let{domain:n}=e;return n===`bool`?typeof t==`boolean`:n===`theme`?typeof t==`string`&&Ea(t):`min`in n?typeof t==`number`&&Number.isInteger(t)&&t>=n.min&&t<=n.max:typeof t==`string`&&n.includes(t)}function bs(e){return String(e)}function xs(e,t){let{domain:n}=e,r=n===`bool`?t===`true`?!0:t===`false`?!1:t:typeof n==`object`&&`min`in n&&/^-?\d+$/.test(t)?Number(t):t;return ys(e,r)?r:void 0}function Ss(e){let{domain:t}=e;return t===`bool`?`true or false`:t===`theme`?`"bar" (the bar's own theme) or an installed theme name`:`min`in t?`an integer from ${t.min} to ${t.max}`:`one of ${t.map(e=>JSON.stringify(e)).join(`, `)}`}const Cs=[`left`,`center`,`right`],ws=[`right`,`left`,`middle`];function Ts(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 ${js(i)}`,line:U(e.source,[...t.split(`.`),r])}),null)}function Es(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 ${js(i)}`,line:U(e.source,[...t.split(`.`),`default`])});return}return i}}function Ds(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 ${js(i)}`,line:U(e.source,[...t.split(`.`),r])});return}return i}}function Os(e,t,n){let r=Ds(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 ks(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 As(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function js(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 Ms(e,t,n,r){return As(r)?(Fs(e,n,r,t.noun,new Set(Object.keys(t.fields))),Ns(e,t.fields,n,r)):(e.issues.push({path:n,message:`${n} must be an object, got ${js(r)}`,line:U(e.source,n.split(`.`))}),null)}function Ns(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 Ps=new Set;function Fs(e,t,n,r,i,a=Ps){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 Is(e,t,n){return e.issues.push({path:t,message:n,line:U(e.source,t.split(`.`))}),null}function Ls(e,t,n,r){if(!As(r))return e.issues.push({path:n,message:`${t.noun} must be an object, got ${js(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 Rs(e,t,n,r){if(!As(r))return e.issues.push({path:n,message:`${n} must be an object, got ${js(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 ${js(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 Fs(e,n,r,`${i} ${t.memberNoun} key`,o.keys,l),c}function zs(e,t,n){return{json:Xs(Js(n),e,t),keys:new Set([e,...Object.keys(n)])}}function Bs(e){return(...t)=>e()(...t)}function Vs(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)=>Ds(e,t,r,n)}}function Hs(){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 ${js(i)}`,line:U(e.source,[n])});return}return i}}}}function Us(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 Ws(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 Gs(){return{required:!1,json:{type:`string`},parse:(e,t,n,r)=>Os(e,t,r)}}function Ks(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>Ts(e,t,r,n)??void 0}}function qs(e){return{required:!1,json:{enum:[...e]},parse:(t,n,r,i)=>ks(t,n,i,r,e)}}function Js(e,t={closed:!0}){let n=e,r={},i=[];for(let[e,t]of Object.entries(n))r[e]=t.json,t.required&&i.push(e);return{type:`object`,properties:r,...i.length>0&&{required:i},...t.closed&&{additionalProperties:!1}}}function Ys(e){return Js(e.fields)}function Xs(e,t,n){let r=e,i={[t]:{const:n},...r.properties},a=[t,...r.required??[]];return{...r,properties:i,required:a}}function Zs(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 $s=/^[A-Za-z_][A-Za-z0-9_]*$/;function ec(e){return`#${e+1}`}const tc={rows:{}};function nc(e){return`rows`in e}function rc(e){return Object.fromEntries(e.map((e,t)=>[ec(t),e]))}function ic(e){if(e.kind===`container`&&e.direction===`vertical`){let{kind:t,direction:n,children:r,...i}=e;return{...i,rows:rc(r)}}let{when:t,...n}=e;return{...t!==void 0&&{when:t},rows:rc([n])}}function ac(e){let{rows:t,...n}=e;return{kind:`container`,direction:`vertical`,children:Object.values(t),...n}}function oc(e){return nc(e)?ac(e):e}function*sc(e,t){if(!nc(e)){yield*us(e,t);return}yield[ac(e),t];for(let[n,r]of Object.entries(e.rows))yield*us(r,`${t}.rows.${n}`)}function cc(e,t){return nc(e)?{...t,...e,rows:{...t.rows,...e.rows}}:ic(e)}function lc(e){if(!nc(e))return!0;let{rows:t,...n}=e;return Object.values(n).some(e=>e!==void 0)||Object.keys(t).length>0}function uc(e,t){return{globals:{...t.globals,...e.globals??{}},variables:{...t.variables,...e.variables??{}},segments:fc(t.segments,e.segments??{}),root:cc(e.root??tc,t.root),actions:{...t.actions,...e.actions??{}},looks:{...t.looks,...e.looks??{}},presets:fc(t.presets,dc(t.presets,e.presets??{})),editGlobals:{...t.editGlobals,...e.editGlobals??{}},helpers:{...t.helpers,...e.helpers??{}}}}function dc(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 fc(e,t){return{...e,...Object.fromEntries(Object.entries(t).map(([t,n])=>[t,{...e[t],...n}]))}}const pc=`closed`,mc=`🍫`;function hc(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 gc(e,t,n,r){let i=hc(e,t.length,n);if(i!==void 0)throw Error(i);return t.length===1?t[0]:t[r]}function _c(e){return e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}function vc(e,t,n,r,i){return{kind:`segment`,name:e,opens:{ref:t,body:n,placement:r},...i!==void 0&&{when:i}}}function yc(e,...t){return`{{ and ${[e,...t].map(bc).join(` `)} }}`}function bc(e){return`(eq .${e.variable} "${_c(e.member)}")`}function xc(e,t,n){return`{{ action "${e}" "${_c(t)}" "${_c(n)}" }}`}function Sc(e,t){return{kind:`state`,key:e,default:t}}function Cc(e,t){return{set:e,cycle:[pc,t]}}const wc={required:!1,json:{enum:[...Ua]},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: ${Ua.join(`, `)}`,line:U(e.source,[...t.split(`.`),n])});return}return ks(e,t,r,n,Ua)}},Tc={required:!1,json:{type:`string`},parse:(e,t,n,r)=>{let i=Ds(e,t,r,n);return ka(i)?i:Os(e,t,r)}},Ec=/^[^\r\n]*\S[^\r\n]*$/u,Dc=RegExp(`^(?:❌|✕)[\\uFE0E\\uFE0F]?$`,`u`),Oc={required:!1,json:{type:`string`,pattern:Ec.source,not:{pattern:Dc.source}},parse:(e,t,n,r)=>{let i=Ds(e,t,r,n);if(i===void 0||Ec.test(i)&&!Dc.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])})}},kc={default_bg:G(),default_fg:G(),default_empty_value:G(),default_separator:G(),default_truncate_marker:G(),palette:Tc,look:G(),preset:G(),style:qs(Ia),progression:qs(Ja),autoWrap:Hs(),padding:Us(eo),charset:qs(za),updateNotice:Hs(),colorCompatibility:wc,menuGlyph:Oc},Ac={noun:`globals key`,fields:kc};function jc(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 Mc(e){return jc(`${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 Nc(e){return jc(`${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 Pc={preset:Mc(`a preset`),menuGlyph:Nc(`a preset`)},Fc={noun:`preset globals key`,fields:{...kc,...Pc}};function Ic(e){return Uc(e)&&!(e in Pc)}const Lc={noun:`editGlobals key`,fields:{...kc,preset:Mc(`the editGlobals fragment`),menuGlyph:Nc(`the editGlobals fragment`)}};function Rc(e,t,n){return n===void 0?{}:Ms(e,Ac,t,n)??{}}function zc(e,t,n){return Ms(e,Fc,t,n)??{}}function Bc(){return Ys(Fc)}function Vc(e,t,n){return Ms(e,Lc,t,n)??{}}const Hc=new Set(Object.keys(Ac.fields));function Uc(e){return Hc.has(e)}function Wc(){return[...Hc]}const Gc={padding:1};function Kc(e){let t=new Map;for(let[n,r]of Object.entries(Gc)){let i=e[n];t.set(n,typeof i==`number`?i:r)}return t}function qc(e,t,n,r){return n.cache===void 0?(gs.includes(r)&&e.issues.push({path:`${t}.cache`,message:`${r} variables must declare a cache policy (one of: ${ps.join(`, `)})`,line:U(e.source,t.split(`.`))}),null):Qc(e,`${t}.cache`,n.cache)}function Jc(e,t,n){if(n.cache!==void 0)return Qc(e,`${t}.cache`,n.cache)??void 0}function Yc(e){return{required:!0,json:tl(),parse:(t,n,r,i)=>qc(t,n,i,e)??void 0}}function Xc(){return{required:!1,json:tl(),parse:(e,t,n,r)=>Jc(e,t,r)}}const Zc={noun:`cache`,arms:{ttl:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`&&rl(n)?{ttl:n}:Is(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}:Is(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}:Is(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}:Is(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}:Is(e,t,`cache.never must be the literal boolean true, got ${W(n)}`)}}};function Qc(e,t,n){return Ls(e,Zc,t,n)}const $c={noun:`time-variable cache`,arms:{ttl:Zc.arms.ttl}};function el(){return{required:!1,json:Qs($c),parse:(e,t,n,r)=>r.cache===void 0?void 0:Ls(e,$c,`${t}.cache`,r.cache)??void 0}}function tl(){return Qs(Zc)}const nl=/^(\d+(?:\.\d+)?)(ms|s|m|h)$/;function rl(e){return nl.test(e)}function il(e,t,n){if(n===void 0)return{};if(!As(n))return e.issues.push({path:t,message:`${t} must be an object, got ${js(n)}`,line:U(e.source,t.split(`.`))}),{};let r={};for(let[i,a]of Object.entries(n)){let n=Rs(e,El,`${t}.${i}`,a);n!==null&&(r[i]=n)}return r}function al(){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 ${js(i)}`,line:U(e.source,t.split(`.`))});return}return i}}}function ol(){return{required:!0,json:{enum:[...hs]},parse:(e,t,n,r)=>{let i=r.field;if(typeof i!=`string`||!hs.includes(i)){e.issues.push({path:`${t}.field`,message:`git field must be one of: ${hs.join(`, `)}, got ${JSON.stringify(i)}`,line:U(e.source,[...t.split(`.`),`field`])});return}return i}}}function sl(){return{required:!1,json:{type:[`string`,`number`,`boolean`]},parse:(e,t,n,r)=>{let i=r.type;return Es(e,t,r,i===`number`||i===`boolean`||i===`string`?i:`string`)}}}const cl={noun:`parse`,arms:{text:{json:{const:!0},parse:(e,t,n)=>n===!0?{text:!0}:Is(e,t,`parse.text must be the literal boolean true, got ${W(n)}`)},regex:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`?ll(e,t,n):Is(e,t,`parse.regex must be a pattern string, got ${W(n)}`)},json:{json:{const:!0},parse:(e,t,n)=>n===!0?{json:!0}:Is(e,t,`parse.json must be the literal boolean true, got ${W(n)}`)}}};function ll(e,t,n){let r;try{new RegExp(n),r=RegExp(`${n}|`).exec(``).length-1}catch(n){return Is(e,t,`parse.regex is not a valid regular expression: ${n.message}`)}return r>=1?{regex:n}:Is(e,t,`parse.regex must contain a capture group — its group 1 is the value; got ${JSON.stringify(n)}`)}function ul(){return{required:!1,json:Qs(cl),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:Ls(e,cl,`${t}.parse`,r.parse)??void 0)}}function dl(){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)=>As(r.parse)&&`json`in r.parse?fl(e,t,r.default):Ds(e,t,r,`default`)}}function fl(e,t,n){if(n!==void 0)return pl(n)?n:Is(e,`${t}.default`,`${t}.default must be a JSON value (a json-parsed source's document), got ${W(n)}`)??void 0}function pl(e){return e!==null&&ml(e)}function ml(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(ml);let t=Object.getPrototypeOf(e);return(t===Object.prototype||t===null)&&Object.values(e).every(ml)}default:return!1}}const hl={value:al(),default:G()},gl={path:Ks(),type:qs([`string`,`number`,`boolean`]),default:sl()},_l={name:Ks(),default:G()},vl={path:Ks(),readMode:qs([`whole`,`first-line`]),parse:ul(),cache:Yc(`file`),default:dl()},yl={command:Ks(),parse:ul(),cache:Yc(`shell`),default:dl()},bl={template:Ks(),cache:Xc(),default:G()},xl={layout:Ks(),cache:el(),default:G()},Sl={field:ol(),cache:Yc(`git`),default:G()},Cl={key:Ks(),default:G()},wl=`kind`;function Tl(e,t){return{...zs(wl,e,t),parse:(n,r,i)=>{let a=Ns(n,t,r,i);return a===null?null:{kind:e,...a}}}}const El={tag:wl,noun:`source kind`,memberNoun:`variable`,arms:{literal:Tl(`literal`,hl),input:Tl(`input`,gl),env:Tl(`env`,_l),file:Tl(`file`,vl),shell:Tl(`shell`,yl),template:Tl(`template`,bl),time:Tl(`time`,xl),git:Tl(`git`,Sl),state:Tl(`state`,Cl)}};function Dl(){return Zs(El)}function Ol(){return{type:`object`,additionalProperties:Dl()}}function kl(e){return e.replace(/[^A-Za-z0-9]+/g,`_`)}const Al=`groups.`,jl=`menus.`,Ml=`edit.`,K=`candybar.`,Nl=[Al,jl,Ml,K];function Pl(e){return Nl.some(t=>e.startsWith(t))}function Fl(e){let t=kl(e);return Nl.find(e=>t.startsWith(kl(e)))}function Il(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 Ll=new Map([[`gitTaculous`,`gitaculous`],[`git`,`gitaculous`],[`settings.menu`,`candybar.menu`]]);function Rl(e){let t=Ll.get(e);return t===void 0?``:` (the built-in segment "${e}" was renamed to "${t}" — update this reference)`}const zl=/^[A-Za-z_][A-Za-z0-9_]*$/,Bl={pattern:zl.source},Vl={anyOf:[{type:`boolean`},{type:`string`},{type:`integer`}]},Hl={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:Vl}},Ul=[`label`,`domain`,`default`];function Wl(e,t,n){e.issues.push({path:t,message:n,line:U(e.source,t.split(`.`))})}function Gl(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 Wl(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 Wl(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?Wl(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(As(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}:Wl(e,t,`a range domain is { min, max } with integers min ≤ max, got ${JSON.stringify(n)}`)}return Wl(e,t,`domain must be "bool", a list of words, or { min, max }, got ${W(n)}`)}function Kl(e,t,n){if(!As(n))return Wl(e,t,`${t} must be { label, domain, default }, got ${js(n)}`);for(let r of Object.keys(n))Ul.includes(r)||Wl(e,`${t}.${r}`,`Unknown setting key "${r}". Expected one of: ${Ul.join(`, `)}`);let{label:r}=n,i=typeof r==`string`&&r.length>0&&!/[\n\r]/.test(r);i||Wl(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=Gl(e,`${t}.domain`,n.domain);if(!i||a===void 0)return;let o={label:r,domain:a,default:n.default};return!ql(n.default)||!ys(o,n.default)?Wl(e,`${t}.default`,`default must be ${Ss(o)}, got ${W(n.default)}`):o}function ql(e){return typeof e==`boolean`||typeof e==`string`||typeof e==`number`}function Jl(){return{required:!1,json:{type:`object`,propertyNames:{...Bl,not:{const:_s}},additionalProperties:Hl},parse:(e,t,n,r)=>{let i=r[n];if(i===void 0)return;let a=`${t}.${n}`;if(!As(i))return Wl(e,a,`${a} must be an object of name → { label, domain, default }, got ${js(i)}`);let o=Object.create(null);for(let[t,n]of Object.entries(i)){if(!zl.test(t)){Wl(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}if(t===`theme`){Wl(e,`${a}.${t}`,`setting "${_s}" is one every placement already has — its default for this segment is segments.<name>.palette, and a placement sets its own with settings: { ${_s}: "<theme>" }`);continue}let r=Kl(e,`${a}.${t}`,n);r!==void 0&&(o[t]=r)}return o}}}function Yl(){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:Wl(e,`${t}.${n}`,`a placement "id" must be a non-empty string without "/" or ":", got ${W(i)}`)}}}function Xl(){return{required:!1,json:{type:`object`,propertyNames:Bl,additionalProperties:Vl},parse:(e,t,n,r)=>{let i=r[n];if(i===void 0)return;let a=`${t}.${n}`;if(!As(i))return Wl(e,a,`a placement's "settings" must be an object of setting name → value, got ${js(i)}`);let o=Object.create(null);for(let[t,n]of Object.entries(i))ql(n)?o[t]=n:Wl(e,`${a}.${t}`,`setting "${t}" must be a boolean, a word, or a number, got ${js(n)}`);return o}}}function Zl(e){return new Set(Object.keys(e.segments).filter(e=>!Pl(e)))}function Ql(e,t,n){if(t===void 0)return{};if(!As(t))return e.issues.push({path:`segments`,message:`segments must be an object, got ${js(t)}`,line:U(e.source,[`segments`])}),{};let r={};for(let[i,a]of Object.entries(t)){let t=Ms(e,n.has(i)?iu:ru,`segments.${i}`,a);t!==null&&(r[i]=t)}return r}function $l(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>r[n]===void 0?Is(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${Rl(t.slice(9))}`)??void 0:Ts(e,t,r,n)??void 0}}function eu(){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 tu(){return{required:!1,json:Ol(),parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0)return il(e,`${t}.${n}`,i)}}}const nu={template:$l(),description:G(),width:eu(),justify:qs(Cs),truncate:qs(ws),bg:G(),fg:G(),when:G(),palette:Gs(),vars:tu(),settings:Jl()},ru={noun:`segment key`,fields:nu},iu={noun:`segment key`,fields:{...nu,template:G()}},au=`#/definitions/LayoutNode`,ou={kind:`container`,direction:`vertical`,children:[]};function su(e){return{required:!0,json:{const:e},parse:()=>e}}function cu(){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 lu(){return{required:!0,json:{enum:[...ts]},parse:(e,t,n,r)=>{let i=r[n];return typeof i==`string`&&ts.includes(i)?i:(e.issues.push({path:`${t}.${n}`,message:`a container "direction" must be one of: ${ts.join(`, `)} (got ${JSON.stringify(i)})`,line:U(e.source,[`root`])}),`vertical`)}}}function uu(e){return{required:!0,json:{type:`array`,items:{$ref:au}},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 ${js(a)}`,line:U(t.source,[`root`])}),[])}}}const du={noun:`layout-node key`,fields:{kind:su(`segment`),name:cu(),when:G(),id:Yl(),settings:Xl()}},fu=()=>qs(Fi),pu={noun:`layout-node key`,fields:{kind:su(`container`),direction:lu(),children:uu(Bs(()=>vu)),when:G(),distribution:fu()}};function mu(){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 hu={noun:`layout-node key`,fields:{seg:mu(),when:G(),id:Yl(),settings:Xl()}},gu={noun:`layout-node key`,fields:{h:uu(Bs(()=>vu)),when:G(),distribution:fu()}},_u={noun:`layout-node key`,fields:{v:uu(Bs(()=>vu)),when:G(),distribution:fu()}},vu=(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`])}),ou):{kind:`segment`,name:n};if(!As(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 ${js(n)}`,line:U(e.source,[`root`])}),ou;if(n.kind===`container`)return Ms(e,pu,t,n)??ou;if(n.kind===`segment`)return Ms(e,du,t,n)??ou;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`])}),ou;if(n.kind===`group`){let r=Ms(e,Tu,t,n);return r===null?ou:(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}),Du(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`])}),ou}if(a){let r=Ms(e,hu,t,n);return r===null?ou:{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=Ms(e,gu,t,n);return r===null?ou:{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=Ms(e,_u,t,n);return r===null?ou:{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`])}),ou};function yu(){return{required:!0,json:{type:`object`,propertyNames:{pattern:$s.source},additionalProperties:{$ref:au}},parse:(e,t,n,r)=>{let i=r[n];if(!As(i))return e.issues.push({path:`${t}.${n}`,message:`"rows" must be an object of row name → layout node, got ${js(i)}`,line:U(e.source,[...t.split(`.`),n])}),{};let a={};for(let[r,o]of Object.entries(i)){if(!$s.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]=vu(e,`${t}.${n}.${r}`,o)}return a}}}const bu={noun:`root key`,fields:{rows:yu(),when:G(),distribution:fu()}};function xu(e,t,n){return As(n)&&`rows`in n?Ms(e,bu,t,n)??{rows:{}}:vu(e,t,n)}function Su(){return{required:!0,json:{type:`string`,pattern:$s.source},parse:(e,t,n,r)=>{let i=r[n];if(typeof i!=`string`||!$s.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 "${pc}", got ${W(i)}`,line:U(e.source,[`root`])});return}return i}}}function Cu(){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 wu(){return{required:!0,json:{type:`string`,pattern:`^[^\\n\\r]*$`},parse:(e,t,n,r)=>{let i=Ts(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 Tu={noun:`layout-node key`,fields:{kind:su(`group`),name:Su(),label:wu(),open:Hs(),direction:qs(ts),key:Cu(),bg:G(),fg:G(),when:G(),distribution:fu(),children:uu(Bs(()=>vu))}};function Eu(e){return e.key??`groups.`+e.name}function Du(e){let t=Al+e.name;return vc(t,{variable:t,key:Eu(e),member:e.name},{kind:`container`,direction:e.direction??`vertical`,children:e.children,...e.distribution!==void 0&&{distribution:e.distribution}},`drop`,e.when)}function Ou(e,t,n){e.issues.push({path:t,message:n,line:U(e.source,[`root`])})}function ku(e,t){Il(e,t,Al,`group nodes`);let n=e.groups;if(n.length===0)return;let r=new Set;for(let t of n)r.has(t.name)&&Ou(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}.`)&&Eu(t)===Eu(r)&&Ou(e,t.path,`group "${t.name}" shares key "${Eu(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=Eu(t);if(i.has(n)||i.set(n,pc),t.open===!0){let r=i.get(n);r!==`closed`&&Ou(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=Al+e.name,r=Eu(e),c=n.filter(t=>t!==e&&e.path.startsWith(t.path+`.`)).length,l=` `.repeat(c);a[t]=Sc(r,i.get(r)),o[t]=Cc(r,e.name),s[t]={template:xc(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 Au=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?Lu(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}},ju=class extends Au{name=`ParseError`;kind=`ParseError`;expected;found;constructor(e,t,n={}){super(e,t,n),this.expected=n.expected,this.found=n.found}},Mu=class extends Au{name=`EvalError`;kind=`EvalError`},Nu=class extends Mu{name=`FuncNotFoundError`;kind=`FuncNotFoundError`;funcName;suggestions;constructor(e,t,n={}){let r=Ru(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}},Pu=class extends Mu{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}},Fu=class extends Mu{name=`MissingFieldError`;kind=`MissingFieldError`;path;constructor(e,t,n={}){super(`field "${e.join(`.`)}" not found on receiver`,t,n),this.path=e}},Iu=class extends Mu{name=`FailError`;kind=`FailError`;constructor(e,t={line:0,column:0,offset:0},n={}){super(e,t,n)}};function Lu(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 Ru(e,t){if(t.length===0)return[];let n=t.map(t=>({name:t,dist:zu(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 zu(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 Bu(e){throw Error(`unhandled node kind: ${JSON.stringify(e)}`)}const Vu=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`]]),Hu={left:`{{`,right:`}}`};var Uu=class{src;leftDelim;rightDelim;offset=0;line=1;column=1;mode=`text`;pending;constructor(e,t=Hu){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 ju(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&&Wu(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);Wu(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);Wu(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(;Wu(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`;Wu(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&&(Ku(e)||Gu(e)&&Ku(this.src[this.offset+1]??``)||e===`.`&&Ku(this.src[this.offset+1]??``)))return this.readNumber(t);if(e===`.`)return this.readDotOrField(t);if(e!==void 0&&Zu(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(Gu(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);qu(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);Ju(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);Yu(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);return this.finishNumber(t,e)}}for(;Ku(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);if(this.src[this.offset]===`.`)for(this.advanceBy(1);Ku(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),Gu(this.src[this.offset]??``)&&this.advanceBy(1);Ku(this.src[this.offset]??``);)this.advanceBy(1);return this.src[this.offset]===`i`&&this.advanceBy(1),this.finishNumber(t,e)}isHexFloatTail(e){return qu(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]===`.`&&Zu(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),!Zu(this.src[this.offset]??``))return this.makeToken(`Dot`,`.`,e);for(;Qu(this.src[this.offset]??``);)this.advanceBy(1);for(;this.src[this.offset]===`.`&&Zu(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=Vu.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 Wu(e){return e===` `||e===` `||e===`\r`||e===`
49
+ `}function Gu(e){return e===`+`||e===`-`}function Ku(e){return e>=`0`&&e<=`9`}function qu(e){return Ku(e)||e>=`a`&&e<=`f`||e>=`A`&&e<=`F`}function Ju(e){return e>=`0`&&e<=`7`}function Yu(e){return e===`0`||e===`1`}function Xu(e){return e>=`a`&&e<=`z`||e>=`A`&&e<=`Z`}function Zu(e){return Xu(e)||e===`_`}function Qu(e){return Zu(e)||Ku(e)}let $u,ed;function td(e,t){return ed(e,t)}var nd=class e{static EMPTY=new e(new Map,void 0);#e;#t;constructor(e,t){this.#e=e,this.#t=t}static{$u=(t,n)=>new e(t,n),ed=(e,t)=>e.#e.get(t)??(e.#t&&ed(e.#t,t))}has(e){return ed(this,e)!==void 0}};function rd(e,t,n=nd.EMPTY){return new id(e,t,n).parseTemplate()}var id=class{lex;buf=[];defines=new Map;inherit;source;rangeDepth=0;constructor(e,t,n){this.source=e,this.inherit=n,this.lex=t?new Uu(e,t):new Uu(e)}peek(e=0){for(;this.buf.length<=e;)this.buf.push(this.lex.next());return this.buf[e]}next(){return this.buf.length>0?this.buf.shift():this.lex.next()}expect(e,t){let n=this.next();if(n.type!==e)throw this.errAt(n,`expected ${t}`,{expected:t,found:sd(n)});return n}errAt(e,t,n={}){return new ju(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 ${sd(e)}`,{found:sd(e)})}return{root:e,defines:$u(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=od(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 ad(e,t);let r=this.parseAction();r!==null&&t.push(r);continue}throw this.errAt(n,`unexpected ${sd(n)} at top level`,{found:sd(n)})}return ad(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 ju(`{{${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 ju(`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:sd(e)});return hd(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(!cd(e.type))throw this.errAt(e,"missing command after `|`",{expected:`command`,found:sd(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=[ld(this.next())];for(;this.peek().type===`Comma`;)this.next(),n.push(ld(this.expect(`Variable`,`$variable`)));return{vars:n,isAssign:this.next().type===`Assign`}}parseCommand(){let e=this.peek().pos,t=[this.parsePrimary()];for(;cd(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 ld(e);case`Identifier`:return{type:`Identifier`,pos:e.pos,ident:e.value};case`String`:return{type:`String`,pos:e.pos,raw:e.value,value:hd(e.value,e.pos,this.source)};case`Number`:return dd(e);case`Char`:return fd(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 ${sd(e)}`,{expected:`command argument`,found:sd(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 ad(e,t){return{type:`List`,pos:e,nodes:t}}function od(e){return{trimLeft:e.trimLeft===!0,trimRight:e.trimRight===!0}}function sd(e){return e.type===`EOF`?`end of input`:e.value||e.type}function cd(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 ld(e){return{type:`Variable`,pos:e.pos,idents:ud(e.value)}}function ud(e){let t=e.indexOf(`.`);return t===-1?[e]:[e.slice(0,t),...e.slice(t+1).split(`.`)]}function dd(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=pd(i);return{...s,intValue:e}}if(a){let e=md(i);return{...s,floatValue:e}}let c=md(i);return{...s,complexValue:[0,c]}}function fd(e,t){let n=gd(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 pd(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 md(e){return Number(e)}function hd(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 ju(`bad escape sequence \\${o}`,t,{expected:`valid escape sequence`,found:`\\${o}`,source:n})}}return r}function gd(e,t,n){let r=hd(`"${e.slice(1,-1).replace(/"/g,`\\"`)}"`,t,n);if(r.length===0)throw new ju(`empty rune literal`,t,{source:n});return r.codePointAt(0)??0}function _d(e,t){if(t(e)!==!1)for(let n of vd(e))_d(n,t)}function vd(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 Bu(e)}}const yd=Symbol(`go-template-js.MISSING`);function bd(e,t){if(e==null)return yd;if(e instanceof Map)return e.has(t)?e.get(t):yd;if(Array.isArray(e))return yd;if(typeof e==`object`){let n=e;return t in n?n[t]:yd}return yd}function xd(e,t){let n=e;for(let e of t){if(n===yd)return yd;n=bd(n,e)}return n}function Sd(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)=>Sd(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)||!Sd(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=>Sd(e[n],t[n])):!1}return!1}const Cd=new WeakSet;function wd(e){return Cd.add(e),e}function Td(e){return Cd.has(e)}function Ed(e){return e==null||e===!1?!1:typeof e==`number`?e!==0&&!Number.isNaN(e):typeof e==`bigint`?e!==0n:typeof e==`string`||Array.isArray(e)?e.length>0:e instanceof Map||e instanceof Set?e.size>0:typeof e==`object`?Object.keys(e).length>0:!!e}function Dd(e,t){return{eq:{fn:(e,...t)=>t.some(t=>Ad(e,t)),argTypes:[`comparable`]},ne:{fn:(e,t)=>!Ad(e,t),argTypes:[`comparable`,`comparable`]},lt:{fn:(e,t)=>jd(e,t)<0,argTypes:[`ordered`,`ordered`]},le:{fn:(e,t)=>jd(e,t)<=0,argTypes:[`ordered`,`ordered`]},gt:{fn:(e,t)=>jd(e,t)>0,argTypes:[`ordered`,`ordered`]},ge:{fn:(e,t)=>jd(e,t)>=0,argTypes:[`ordered`,`ordered`]},len:{fn:e=>Md(e),argTypes:[`sized`]},index:{fn:(e,...t)=>{let n=e;for(let e of t)n=Nd(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)=>Id(t,e),argTypes:[`stringifiable`],returnType:`string`},println:{fn:(...t)=>`${Id(t,e)}\n`,argTypes:[`stringifiable`],returnType:`string`},printf:{fn:(n,...r)=>Gd(n,r,e,t),argTypes:[`string`,`stringifiable`],returnType:`string`},toString:{fn:n=>Jd(n,e,t),argTypes:[`value`],returnType:`string`},toStrings:{fn:n=>n.map(n=>Jd(n,e,t)),argTypes:[`list`]},call:{fn:(e,...t)=>e(...t),argTypes:[`callable`,`value`]},html:{fn:(...t)=>zd(Id(t,e)),argTypes:[`stringifiable`],returnType:`string`},js:{fn:(...t)=>Hd(Id(t,e)),argTypes:[`stringifiable`],returnType:`string`},urlquery:{fn:(...t)=>Wd(Id(t,e)),argTypes:[`stringifiable`],returnType:`string`},not:{fn:e=>!Ed(e),argTypes:[`truthy`]}}}function Od(){return{and:wd({argTypes:[`truthy`],fn:(...e)=>{let t=!0;for(let n of e)if(t=n(),!Ed(t))return t;return t}}),or:wd({argTypes:[`truthy`],fn:(...e)=>{let t=!1;for(let n of e)if(t=n(),Ed(t))return t;return t}})}}function kd(e,t){return{...Dd(e,t),...Od()}}function Ad(e,t){return typeof e==`number`&&typeof t==`bigint`?BigInt(e)===t:typeof e==`bigint`&&typeof t==`number`?e===BigInt(t):Sd(e,t)}function jd(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 Md(e){return typeof e==`string`||Array.isArray(e)?e.length:e instanceof Map||e instanceof Set?e.size:Object.keys(e).length}function Nd(e,t){if(Array.isArray(e)){let n=Number(t);if(!Number.isInteger(n))throw Error(`index: array index must be integer, got ${Pd(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 ${Pd(t)}`);return e[t]}throw Error(`index: cannot index ${Pd(e)}`)}function Pd(e){return e===null?`null`:e===void 0?`undefined`:Array.isArray(e)?`array`:e instanceof Map?`Map`:typeof e}function Fd(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 Id(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+=Ld(a,t),r=o}return n}function Ld(e,t){return e==null?`<nil>`:typeof e==`string`?e:t(e)}const Rd={"\0":`�`,'"':`&#34;`,"'":`&#39;`,"&":`&amp;`,"<":`&lt;`,">":`&gt;`};function zd(e){return e.replace(/[\0"'&<>]/g,e=>Rd[e]??e)}const Bd={"\\":`\\\\`,"'":`\\'`,'"':`\\"`,"<":`\\u003C`,">":`\\u003E`,"&":`\\u0026`,"=":`\\u003D`},Vd=/^[\p{L}\p{M}\p{N}\p{P}\p{S}]$/u;function Hd(e){let t=``;for(let n of e){let e=Bd[n];if(e!==void 0){t+=e;continue}let r=n.codePointAt(0);if(r<32||r>=128&&!Vd.test(n)){t+=`\\u${r.toString(16).toUpperCase().padStart(4,`0`)}`;continue}t+=n}return t}const Ud=new TextEncoder;function Wd(e){let t=``,n=Ud.encode(e);for(let e of n)e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===45||e===46||e===95||e===126?t+=String.fromCharCode(e):e===32?t+=`+`:t+=`%${e.toString(16).toUpperCase().padStart(2,`0`)}`;return t}function Gd(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+=Kd(l??``,u,d,n,r),o=c+1}return i}function Kd(e,t,n,r,i){switch(e){case`s`:return typeof n==`string`?qd(t,n):qd(t,Ld(n,r));case`d`:return typeof n!=`number`&&typeof n!=`bigint`?`%!${e}(${Fd(n)}=${Ld(n,r)})`:qd(t,String(typeof n==`bigint`?n:Math.trunc(n)));case`v`:return qd(t,Jd(n,r,i));case`q`:return qd(t,JSON.stringify(Ld(n,r)));case`f`:{if(typeof n!=`number`&&typeof n!=`bigint`)return`%!${e}(${Fd(n)}=${Ld(n,r)})`;let i=t.includes(`.`)?Number(t.split(`.`)[1]):6;return qd(t,Number(n).toFixed(i))}case`t`:return qd(t,Ed(n)?`true`:`false`);case`x`:if(typeof n==`string`){let e=new TextEncoder().encode(n),r=``;for(let t of e)r+=t.toString(16).padStart(2,`0`);return qd(t,r)}return typeof n!=`number`&&typeof n!=`bigint`?`%!${e}(${Fd(n)}=${Ld(n,r)})`:typeof n==`bigint`?qd(t,n.toString(16)):qd(t,Math.trunc(n).toString(16));default:return`%!${e}(${Fd(n)}=${Ld(n,r)})`}}function qd(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 Jd(e,t,n){return e==null?`<nil>`:typeof e==`string`?e:n(e)?t(e):Array.isArray(e)?`[${e.map(e=>Jd(e,t,n)).join(` `)}]`:e instanceof Map?Yd([...e.entries()],t,n):Xd(e)?Yd(Object.entries(e),t,n):String(e)}function Yd(e,t,n){let r=e=>Jd(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 Xd(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 Zd(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 $d(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 ef(e,t,n){e.vars.set(t,n)}const tf=new Set([`default`,`zero`,`error`]);function nf(e){if(e===void 0)return`default`;if(tf.has(e))return e;throw Error(`EngineConfig.missingKey: expected "default" | "zero" | "error", got ${rf(e)}`)}function rf(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 af(e){if(e!==void 0){if(typeof e!=`object`||!e)throw Error(`EngineConfig.delims: expected { left, right } object, got ${rf(e)}`);if(typeof e.left!=`string`||e.left.length===0)throw Error(`EngineConfig.delims.left: expected non-empty string, got ${rf(e.left)}`);if(typeof e.right!=`string`||e.right.length===0)throw Error(`EngineConfig.delims.right: expected non-empty string, got ${rf(e.right)}`);return{left:e.left,right:e.right}}}const of=Object.freeze({kind:`break`}),sf=Object.freeze({kind:`continue`}),cf={kind:`none`};let lf;(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{lf=(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 uf(e){let t=new Set,n=e=>{_d(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 df={kind:`dynamic`};function ff(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=jf(e);return typeof t==`number`||typeof t==`bigint`?{kind:`literal`,value:t}:df}case`Pipe`:{if(e.decls.length!==0||e.cmds.length!==1)return df;let t=e.cmds[0];if(t===void 0)return df;let n=t.args[0];return n===void 0||n.type!==`Identifier`?df:{kind:`call`,name:n.ident,args:t.args.slice(1).map(ff)}}default:return df}}function pf(e){let t=[],n=e=>{_d(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(ff);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 mf=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??xf,this.isT=e.isT??hf,this.missingKey=nf(e.missingKey),this.delims=af(e.delims),this.funcs={...kd(this.toString,this.isT),...e.funcs??{}}}parse(e,t){let n=rd(e,this.delims,t);return lf(n.source,e=>this.evalParsed(n,e),n.defines,uf(n),pf(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=Zd(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 of;case`Continue`:throw sf;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 Mu(`unexpected ${e.type} at statement position`,e.pos,{source:n.source});default:Bu(e)}}evalIf(e,t,n){Ed(this.evalPipe(e.pipe,t,n))?this.evalList(e.list,t,n):e.elseList&&this.evalList(e.elseList,t,n)}evalWith(e,t,n){let r=this.evalPipe(e.pipe,t,n);if(Ed(r)){let i=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=Of(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)ef(a,i[0]?.idents[0]??`$`,o);else if(i.length>=2){let e=i[0]?.idents[0]??`$`,t=i[1]?.idents[0]??`$`;ef(a,e,r),ef(a,t,o)}try{this.evalList(e.list,a,n)}catch(e){if(e===sf)continue;throw e}}}catch(e){if(e===of)return;throw e}}evalTemplateInvoke(e,t,n){let r=td(n.defines,e.name);if(!r)throw new Mu(`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=td(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 Mu(`empty pipeline`,e.pos,{source:n.source});let r=this.evalCommand(e.cmds[0],t,n,cf);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)ef(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 Mu(`empty command`,e.pos,{source:n.source});let i=e.args[0];if(i.type!==`Identifier`){if(e.args.length>1)throw new Mu(`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 Nu(i.ident,i.pos,{source:n.source,available:Object.keys(this.funcs)});let o=e.args.slice(1),s=Td(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)}_f(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 Pu?new Pu(t.funcName,t.argIndex,t.expected,t.receivedSummary,e.pos,{source:n.source}):t instanceof Iu?new Iu(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 jf(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 Nu(e.ident,e.pos,{source:n.source,available:Object.keys(this.funcs)});return _f(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 Mu(`cannot evaluate ${e.type} as a value`,e.pos,{source:n.source})}}resolveFieldChain(e,t,n,r){let i=xd(e,t);if(i!==yd)return i;if(this.missingKey===`error`)throw new Fu(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=$d(t,i);if(!a.found)throw new Mu(`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(Jd(e,this.toString,this.isT)))}};const hf=e=>typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Map);function gf(e){return new mf(e)}function _f(e,t,n,r,i,a=xf,o,s=bf,c=hf){let l=vf(t,o),u=-1,d=-1;for(let t=0;t<n.length;t++){let o=l(t),f=n[t];if(!yf(o,f,a,c))throw new Pu(e,t+1,Ef(o),Df(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(!Cf(n[u],f))throw new Pu(e,t+1,`${Ef(`ordered`)} of the same kind as ${Df(n[u])}`,Df(f),r,{source:i})}if(o===`comparable`){if(d===-1)d=t;else if(!wf(n[d],f))throw new Pu(e,t+1,`${Ef(`comparable`)} of the same kind as ${Df(n[d])}`,Df(f),r,{source:i})}}}function vf(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 yf(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 Xd(t);case`sized`:return typeof t==`string`||Array.isArray(t)||t instanceof Map||t instanceof Set||Xd(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||Xd(t);case`callable`:return typeof t==`function`;case`collection`:return typeof t==`string`||Array.isArray(t)||t instanceof Map||Xd(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 Sf(t);default:throw Error(`invalid ArgType: ${String(e)}`)}}function bf(e){return e}function xf(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 Pu(`<engine.toString>`,1,`string (or a consumer-supplied toString that flattens T)`,Df(e),{line:0,column:0,offset:0})}function Sf(e){try{return JSON.stringify(e)!==void 0}catch{return!1}}function Cf(e,t){return typeof e==typeof t||typeof e==`number`&&typeof t==`bigint`||typeof e==`bigint`&&typeof t==`number`}function wf(e,t){let n=Tf(e),r=Tf(t);return n===`nil`||r===`nil`?!0:n===r}function Tf(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 Ef(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 Df(e){return e===null?`null`:e===void 0?`undefined`:Array.isArray(e)?`array`:e instanceof Map?`Map`:typeof e}function Of(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?kf([...e.entries()]):e instanceof Set?[...e.values()].map((e,t)=>[t,e]):typeof e==`object`?kf(Object.entries(e)):[]}function kf(e){return[...e].sort((e,t)=>Af(e[0],t[0]))}function Af(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 jf(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 Mf(e){if(!/^[+-]?\d+$/.test(e))return 0;let t=Number.parseInt(e,10);return Number.isSafeInteger(t)?t:0}function Nf(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 Pf(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 Ff(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=Pf(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 If(e){if(typeof e==`bigint`)return e;if(typeof e==`number`)return BigInt(Math.trunc(e));if(typeof e==`string`){let t=Pf(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 Lf(e){if(!/^[+-]?[0-7]+$/.test(e))return 0;let t=e[0]===`-`?-1:1,n=e[0]===`+`||e[0]===`-`?e.slice(1):e,r=t*Number.parseInt(n,8);return Number.isSafeInteger(r)?r:0}function Rf(e){return JSON.stringify(e)??`null`}function zf(){return{atoi:{fn:e=>Mf(e),argTypes:[`string`],returnType:`int`},int:{fn:e=>Ff(e),argTypes:[`value`],returnType:`int`},int64:{fn:e=>If(e),argTypes:[`value`]},float64:{fn:e=>Nf(e),argTypes:[`value`],returnType:`float`},toDecimal:{fn:e=>Lf(e),argTypes:[`string`],returnType:`int`},toRawJson:{fn:e=>Rf(e),argTypes:[`serializable`],returnType:`string`}}}const Bf={h:36e11,m:6e10,s:1e9,ms:1e6,us:1e3,µs:1e3,ns:1};function Vf(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*Bf[a],n=n.slice(e[0].length)}return t?-r:r}function Hf(e){if(e===0)return`0s`;let t=!1,n=e;n<0&&(t=!0,n=-n);let r;return r=n<Bf.us?`${Math.floor(n)}ns`:n<Bf.ms?Uf(n,Bf.us,3,`µs`):n<Bf.s?Uf(n,Bf.ms,6,`ms`):Wf(n),t?`-${r}`:r}function Uf(e,t,n,r){let i=Math.floor(e/t),a=Math.round(e%t);return a===0?`${i}${r}`:`${i}.${String(a).padStart(n,`0`).replace(/0+$/,``)}${r}`}function Wf(e){let t=Math.floor(e/Bf.h);e-=t*Bf.h;let n=Math.floor(e/Bf.m);e-=n*Bf.m;let r=Math.floor(e/Bf.s),i=e-r*Bf.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 Gf(e){return e*Bf.s}function Kf(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 qf(e,t){let n=t().getTime()-Kf(e).getTime();return Hf(Math.round(n/1e3)*1e9)}const Jf=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],Yf=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],Xf=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],Zf=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`];function Qf(e){return e<10?`0${e}`:String(e)}function $f(e){return e<10?`00${e}`:e<100?`0${e}`:String(e)}function ep(e){return e<10?` ${e}`:String(e)}function tp(e){let t=e>=0?`+`:`-`,n=Math.abs(e);return`${t}${Qf(Math.floor(n/60))}${Qf(n%60)}`}function np(e){let t=e>=0?`+`:`-`,n=Math.abs(e);return`${t}${Qf(Math.floor(n/60))}:${Qf(n%60)}`}function rp(e){return`${e>=0?`+`:`-`}${Qf(Math.floor(Math.abs(e)/60))}`}function ip(e){return e===0?`Z`:tp(e)}function ap(e){return e===0?`Z`:np(e)}function op(e){return e===0?`Z`:rp(e)}function sp(e,t,n){let r=e*1e6,i=String(r).padStart(9,`0`).slice(0,t);return n?i.replace(/0+$/,``):i}const cp=[[`.000000000`,e=>`.${sp(e.ms,9,!1)}`],[`.999999999`,e=>{let t=sp(e.ms,9,!0);return t?`.${t}`:``}],[`.000000`,e=>`.${sp(e.ms,6,!1)}`],[`.999999`,e=>{let t=sp(e.ms,6,!0);return t?`.${t}`:``}],[`.000`,e=>`.${$f(e.ms)}`],[`.999`,e=>{let t=$f(e.ms).replace(/0+$/,``);return t?`.${t}`:``}],[`January`,e=>Jf[e.month-1]??`January`],[`Monday`,e=>Xf[e.weekday]??`Monday`],[`Z07:00`,e=>ap(e.offsetMinutes)],[`-07:00`,e=>np(e.offsetMinutes)],[`Z0700`,e=>ip(e.offsetMinutes)],[`-0700`,e=>tp(e.offsetMinutes)],[`2006`,e=>String(e.year)],[`Jan`,e=>Yf[e.month-1]??`Jan`],[`Mon`,e=>Zf[e.weekday]??`Mon`],[`MST`,e=>e.tzAbbr],[`-07`,e=>rp(e.offsetMinutes)],[`Z07`,e=>op(e.offsetMinutes)],[`15`,e=>Qf(e.hour)],[`01`,e=>Qf(e.month)],[`02`,e=>Qf(e.day)],[`_2`,e=>ep(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 lp(e,t){let n=``,r=0;for(;r<e.length;){let i=!1;for(let[a,o]of cp)if(e.startsWith(a,r)){n+=o(t),r+=a.length,i=!0;break}i||(n+=e[r++])}return n}const up={year:`numeric`,month:`2-digit`,day:`2-digit`,weekday:`long`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hour12:!1};function dp(e){let t=new Map;for(let n of e)t.set(n.type,n.value);return t}const fp=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`];function pp(e,t){let n;try{new Intl.DateTimeFormat(`en-US`,{timeZone:t}),n=t}catch{n=`UTC`}let r=dp(new Intl.DateTimeFormat(`en-US`,{...up,timeZone:n}).formatToParts(e)),i=parseInt(r.get(`hour`)??`0`,10)%24,a=dp(new Intl.DateTimeFormat(`en-US`,{timeZone:n,timeZoneName:`short`}).formatToParts(e)).get(`timeZoneName`)??n,o=mp(dp(new Intl.DateTimeFormat(`en-US`,{timeZone:n,timeZoneName:`shortOffset`}).formatToParts(e)).get(`timeZoneName`)??`GMT`),s=fp.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 mp(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 hp(){return Intl.DateTimeFormat().resolvedOptions().timeZone}function gp(e,t){return lp(e,pp(Kf(t),hp()))}function _p(e,t,n){return lp(e,pp(Kf(t),n))}function vp(e,t){let n=Kf(t),r=Vf(e);return Number.isNaN(r)?n:new Date(n.getTime()+r/1e6)}function yp(e){if(typeof e==`string`){let t=parseInt(e,10);return Number.isNaN(t)?`0s`:Hf(Gf(t))}return typeof e==`bigint`?Hf(Gf(Number(e))):typeof e==`number`?Hf(Gf(e)):`0s`}const bp=36e11*24*365,xp=36e11*24*30,Sp=36e11*24,Cp=36e11,wp=6e10,Tp=1e9;function Ep(e){let t=Vf(String(e));if(Number.isNaN(t))return`0s`;let n=Math.abs(t);return n>bp?`${Math.floor(n/bp)}y`:n>xp?`${Math.floor(n/xp)}mo`:n>Sp?`${Math.floor(n/Sp)}d`:n>Cp?`${Math.floor(n/Cp)}h`:n>wp?`${Math.floor(n/wp)}m`:n>Tp?`${Math.floor(n/Tp)}s`:`0s`}function Dp(e){let t=pp(Kf(e),hp());return`${t.year}-${String(t.month).padStart(2,`0`)}-${String(t.day).padStart(2,`0`)}`}function Op(e,t){let n=pp(Kf(e),t);return`${n.year}-${String(n.month).padStart(2,`0`)}-${String(n.day).padStart(2,`0`)}`}function kp(e){return e()}const Ap=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],jp=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`];function Mp(){return{year:2e3,month:1,day:1,hour:0,minute:0,second:0,ms:0,offsetMinutes:0,isPM:!1,hour12:!1}}function Np(e,t,n){return[e.slice(t,t+n),t+n]}function Pp(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 Fp(e,t){for(let[n,r]of Ap.entries())if(e.startsWith(r,t))return[n+1,t+r.length];throw Error(`sprig toDate: expected month name at pos ${t}`)}function Ip(e,t){for(let[n,r]of jp.entries())if(e.startsWith(r,t))return[n+1,t+r.length];throw Error(`sprig toDate: expected short month name at pos ${t}`)}function Lp(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 Rp(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 zp(e,t){if(e[t]===` `){let[n,r]=Pp(e,t+1,1,1);return[n,r]}return Pp(e,t,1,2)}function Bp(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]=Pp(e,i,2,2);i=o;let s=0;if(n&&e[i]===`:`){let[t,n]=Pp(e,i+1,2,2);s=t,i=n}else if(!n){let[t,n]=Pp(e,i,2,2);s=t,i=n}return[r*(a*60+s),i]}function Vp(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]=Pp(e,t+1,2,2);return[n*r*60,i]}return Bp(e,t,n)}function Hp(e,t){let n=t;for(;n<e.length&&e.charCodeAt(n)>=65&&e.charCodeAt(n)<=90;)n++;if(n===t)throw Error(`sprig toDate: expected timezone abbreviation at pos ${t}`);return n}function Up(e,t,n){let[r,i]=Np(e,t,n),a=parseInt(r.padEnd(9,`0`),10);return[Math.round(a/1e6),i]}function Wp(e,t,n,r){let i={...r};switch(e){case`January`:{let[e,r]=Fp(t,n);return i.month=e,[r,i]}case`Monday`:return[Lp(t,n),i];case`Jan`:{let[e,r]=Ip(t,n);return i.month=e,[r,i]}case`Mon`:return[Rp(t,n),i];case`2006`:{let[e,r]=Pp(t,n,4,4);return i.year=e,[r,i]}case`06`:{let[e,r]=Pp(t,n,2,2);return i.year=e<70?2e3+e:1900+e,[r,i]}case`01`:{let[e,r]=Pp(t,n,2,2);return i.month=e,[r,i]}case`1`:{let[e,r]=Pp(t,n,1,2);return i.month=e,[r,i]}case`_2`:{let[e,r]=zp(t,n);return i.day=e,[r,i]}case`02`:{let[e,r]=Pp(t,n,2,2);return i.day=e,[r,i]}case`2`:{let[e,r]=Pp(t,n,1,2);return i.day=e,[r,i]}case`15`:{let[e,r]=Pp(t,n,2,2);return i.hour=e,[r,i]}case`03`:{let[e,r]=Pp(t,n,2,2);return i.hour=e,i.hour12=!0,[r,i]}case`3`:{let[e,r]=Pp(t,n,1,2);return i.hour=e,i.hour12=!0,[r,i]}case`04`:{let[e,r]=Pp(t,n,2,2);return i.minute=e,[r,i]}case`4`:{let[e,r]=Pp(t,n,1,2);return i.minute=e,[r,i]}case`05`:{let[e,r]=Pp(t,n,2,2);return i.second=e,[r,i]}case`5`:{let[e,r]=Pp(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[Hp(t,n),i];case`-0700`:{let[e,r]=Bp(t,n,!1);return i.offsetMinutes=e,[r,i]}case`-07:00`:{let[e,r]=Bp(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]=Pp(t,n+1,2,2);return i.offsetMinutes=e*r*60,[a,i]}case`Z0700`:{let[e,r]=Vp(t,n,!1,!1);return i.offsetMinutes=e,[r,i]}case`Z07:00`:{let[e,r]=Vp(t,n,!0,!1);return i.offsetMinutes=e,[r,i]}case`Z07`:{let[e,r]=Vp(t,n,!1,!0);return i.offsetMinutes=e,[r,i]}case`.000000000`:{if(t[n]!==`.`)throw Error(`sprig toDate: expected . at pos ${n}`);let[e,r]=Up(t,n+1,9);return i.ms=e,[r,i]}case`.999999999`:{if(t[n]!==`.`)return[n,i];let e=n+1,r=e;for(;r<t.length&&t.charCodeAt(r)>=48&&t.charCodeAt(r)<=57;)r++;let a=t.slice(e,r).padEnd(9,`0`);return i.ms=Math.round(parseInt(a,10)/1e6),[r,i]}case`.000000`:{if(t[n]!==`.`)throw Error(`sprig toDate: expected . at pos ${n}`);let[e,r]=Up(t,n+1,6);return i.ms=e,[r,i]}case`.999999`:{if(t[n]!==`.`)return[n,i];let e=n+1,r=e;for(;r<t.length&&t.charCodeAt(r)>=48&&t.charCodeAt(r)<=57;)r++;let a=t.slice(e,r).padEnd(9,`0`);return i.ms=Math.round(parseInt(a,10)/1e6),[r,i]}case`.000`:{if(t[n]!==`.`)throw Error(`sprig toDate: expected . at pos ${n}`);let[e,r]=Up(t,n+1,3);return i.ms=e,[r,i]}case`.999`:{if(t[n]!==`.`)return[n,i];let e=n+1,r=e;for(;r<t.length&&t.charCodeAt(r)>=48&&t.charCodeAt(r)<=57;)r++;let a=t.slice(e,r).padEnd(3,`0`);return i.ms=parseInt(a,10),[r,i]}}throw Error(`sprig toDate: unhandled token ${e}`)}const Gp=`.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 Kp(e,t){let n=0,r=0,i=Mp();for(;n<e.length;){let a=!1;for(let o of Gp)if(e.startsWith(o,n)){let[e,s]=Wp(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 qp(e,t){return Kp(e,t)}function Jp(e){return String(Math.floor(Kf(e).getTime()/1e3))}function Yp(e=()=>new Date){return{now:{fn:()=>kp(e),argTypes:[]},date:{fn:(e,t)=>gp(e,t),argTypes:[`string`,`value`]},dateInZone:{fn:(e,t,n)=>_p(e,t,n),argTypes:[`string`,`value`,`string`]},dateModify:{fn:(e,t)=>vp(e,t),argTypes:[`string`,`value`]},htmlDate:{fn:e=>Dp(e),argTypes:[`value`]},htmlDateInZone:{fn:(e,t)=>Op(e,t),argTypes:[`value`,`string`]},duration:{fn:e=>yp(e),argTypes:[`value`]},durationRound:{fn:e=>Ep(e),argTypes:[`value`]},toDate:{fn:(e,t)=>qp(e,t),argTypes:[`string`,`string`]},ago:{fn:t=>qf(t,e),argTypes:[`value`]},unixEpoch:{fn:e=>Jp(e),argTypes:[`value`]}}}function Xp(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 Zp(...e){for(let t of e)if(!Xp(t))return t}function Qp(e,t){return Xp(t)?e:t}function $p(e){return JSON.parse(e)}function em(e,t,n){return Ed(n)?e:t}function tm(e){return JSON.stringify(e)??`null`}function nm(e){return JSON.stringify(e,null,2)??`null`}function rm(){return{default:{fn:(e,t)=>Qp(e,t),argTypes:[`value`,`truthy`]},empty:{fn:e=>Xp(e),argTypes:[`truthy`]},coalesce:{fn:(...e)=>Zp(...e),argTypes:[`truthy`]},ternary:{fn:(e,t,n)=>em(e,t,n),argTypes:[`value`,`value`,`truthy`]},fromJson:{fn:e=>$p(e),argTypes:[`string`]},toJson:{fn:e=>tm(e),argTypes:[`serializable`],returnType:`string`},toPrettyJson:{fn:e=>nm(e),argTypes:[`serializable`],returnType:`string`}}}function im(...e){let t={};for(let n=0;n<e.length;n+=2)t[e[n]]=e[n+1];return t}function am(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 im(...t)}function om(e,t){return e[t]}function sm(e,t){return t in e}function cm(e){return Object.keys(e)}function lm(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 um(e,...t){let n={...e};for(let e of t)Object.assign(n,e);return n}function dm(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 fm(e,...t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function pm(e,...t){let n=[];for(let r of t)e in r&&n.push(r[e]);return n}function mm(e,t,n){return e[t]=n,e}function hm(e,t){return delete e[t],e}function gm(e){return Object.values(e)}function _m(){return{dict:{fn:(...e)=>im(...e),argTypes:[`string`,`value`],argTypePattern:`alternating`},get:{fn:(e,t)=>om(e,t),argTypes:[`dict`,`string`]},set:{fn:(e,t,n)=>mm(e,t,n),argTypes:[`dict`,`string`,`value`]},unset:{fn:(e,t)=>hm(e,t),argTypes:[`dict`,`string`]},keys:{fn:e=>cm(e),argTypes:[`dict`]},values:{fn:e=>gm(e),argTypes:[`dict`]},pluck:{fn:(e,...t)=>pm(e,...t),argTypes:[`string`,`dict`]},pick:{fn:(e,...t)=>fm(e,...t),argTypes:[`dict`,`string`]},omit:{fn:(e,...t)=>dm(e,...t),argTypes:[`dict`,`string`]},hasKey:{fn:(e,t)=>sm(e,t),argTypes:[`dict`,`string`]},merge:{fn:(e,...t)=>lm(e,...t),argTypes:[`dict`]},mergeOverwrite:{fn:(e,...t)=>um(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 vm(...e){for(let t of e)if(Xp(t))return!1;return!0}function ym(...e){for(let t of e)if(!Xp(t))return!0;return!1}function bm(e,t){return[...e,t]}function xm(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 Sm(e){return e.filter(e=>!Xp(e))}function Cm(...e){let t=[];for(let n of e)t.push(...n);return t}const wm={line:0,column:0,offset:0};function Tm(e,t,n,r){return new Pu(e,t,n,r,wm)}function Em(...e){if(e.length<3)throw Tm(`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(!Om(t))throw Tm(`dig`,e.length-1,`dict`,km(t));for(let e=0;e<r.length;e++)if(typeof r[e]!=`string`)throw Tm(`dig`,e,`string`,km(r[e]));return Dm(t,n,r,e.length)}function Dm(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(!Om(a))throw Tm(`dig`,r-1,`dict at intermediate key`,km(a));return Dm(a,t,n.slice(1),r)}function Om(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Map)&&!(e instanceof Set)}function km(e){return e===null?`null`:Array.isArray(e)?`array`:e instanceof Map?`Map`:e instanceof Set?`Set`:typeof e}function Am(e){return e[0]}function jm(e,t){return t.some(t=>Sd(t,e))}function Mm(e){return e.slice(0,-1)}function Nm(e){return e[e.length-1]}function Pm(e){return Array.isArray(e)||typeof e==`string`?e.length:e instanceof Map||e instanceof Set?e.size:Object.keys(e).length}function Fm(...e){return e}function Im(e,t){return[t,...e]}function Lm(e){return e.slice(1)}function Rm(e){return[...e].reverse()}function zm(e,t,n){let r=t===void 0?0:t,i=n===void 0?e.length:n;return e.slice(r,i)}function Bm(e){let t=[];for(let n of e)n!=null&&t.push(String(n));return t.sort()}function Vm(e){let t=[];for(let n of e)t.some(e=>Sd(e,n))||t.push(n);return t}function Hm(e,...t){return e.filter(e=>!t.some(t=>Sd(t,e)))}function Um(){return{list:{fn:(...e)=>Fm(...e),argTypes:[`value`]},first:{fn:e=>Am(e),argTypes:[`list`]},last:{fn:e=>Nm(e),argTypes:[`list`]},rest:{fn:e=>Lm(e),argTypes:[`list`]},initial:{fn:e=>Mm(e),argTypes:[`list`]},len:{fn:e=>Pm(e),argTypes:[`sized`]},reverse:{fn:e=>Rm(e),argTypes:[`list`]},uniq:{fn:e=>Vm(e),argTypes:[`list`]},without:{fn:(e,...t)=>Hm(e,...t),argTypes:[`list`,`value`]},has:{fn:(e,t)=>jm(e,t),argTypes:[`value`,`list`]},compact:{fn:e=>Sm(e),argTypes:[`list`]},slice:{fn:(e,t,n)=>zm(e,t,n),argTypes:[`list`,`int`,`int`]},concat:{fn:(...e)=>Cm(...e),argTypes:[`list`]},chunk:{fn:(e,t)=>xm(e,t),argTypes:[`int`,`list`]},prepend:{fn:(e,t)=>Im(e,t),argTypes:[`list`,`value`]},append:{fn:(e,t)=>bm(e,t),argTypes:[`list`,`value`]},sortAlpha:{fn:e=>Bm(e),argTypes:[`list`],returnType:`list`},push:{fn:(e,t)=>bm(e,t),argTypes:[`list`,`value`]},tuple:{fn:(...e)=>Fm(...e),argTypes:[`value`]},dig:{fn:(...e)=>Em(...e),argTypes:[`value`]},all:{fn:(...e)=>vm(...e),argTypes:[`truthy`],returnType:`bool`},any:{fn:(...e)=>ym(...e),argTypes:[`truthy`],returnType:`bool`}}}function Wm(...e){return e.reduce((e,t)=>e+t,0)}function Gm(e){return e+1}function Km(e){return e+1}function qm(...e){return e.reduce((e,t)=>e+t,0)}function Jm(e){return Math.ceil(e)}function Ym(e,t){return Math.trunc(e/t)}function Xm(e,t){return e/t}function Zm(e){return Math.floor(e)}function Qm(...e){return e.reduce((e,t)=>t>e?t:e,-1/0)}function $m(...e){return e.reduce((e,t)=>Math.max(e,t),-1/0)}function eh(...e){return e.reduce((e,t)=>t<e?t:e,1/0)}function th(...e){return e.reduce((e,t)=>Math.min(e,t),1/0)}function nh(e,t){return e%t}function rh(...e){return e.reduce((e,t)=>e*t,1)}function ih(...e){return e.reduce((e,t)=>e*t,1)}function ah(e,t=0){let n=10**t;return Math.sign(e)*Math.round(Math.abs(e)*n)/n}function oh(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 sh(...e){let t=1;switch(e.length){case 0:return``;case 1:{let n=e[0];return n<1&&(t=-1),oh(1,n+t,t).join(` `)}case 2:{let t=e[0],n=e[1],r=n<t?-1:1;return oh(t,n+r,r).join(` `)}case 3:{let n=e[0],r=e[1],i=e[2];return i<n&&(t=-1,r>0)?``:oh(n,i+t,r).join(` `)}default:return``}}function ch(e,t){return e-t}function lh(e,t){return e-t}function uh(e){return oh(0,e,e<0?-1:1)}function dh(){return{add:{fn:(...e)=>Wm(...e),argTypes:[`int`]},sub:{fn:(e,t)=>ch(e,t),argTypes:[`int`,`int`]},mul:{fn:(...e)=>rh(...e),argTypes:[`int`]},div:{fn:(e,t)=>Ym(e,t),argTypes:[`int`,`int`]},mod:{fn:(e,t)=>nh(e,t),argTypes:[`int`,`int`]},min:{fn:(...e)=>eh(...e),argTypes:[`int`]},max:{fn:(...e)=>Qm(...e),argTypes:[`int`]},floor:{fn:e=>Zm(e),argTypes:[`float`]},ceil:{fn:e=>Jm(e),argTypes:[`float`]},round:{fn:(e,t)=>ah(e,t),argTypes:[`float`,`int`]},addf:{fn:(...e)=>qm(...e),argTypes:[`float`]},subf:{fn:(e,t)=>lh(e,t),argTypes:[`float`,`float`]},mulf:{fn:(...e)=>ih(...e),argTypes:[`float`]},divf:{fn:(e,t)=>Xm(e,t),argTypes:[`float`,`float`]},add1:{fn:e=>Gm(e),argTypes:[`int`]},add1f:{fn:e=>Km(e),argTypes:[`float`]},maxf:{fn:(...e)=>$m(...e),argTypes:[`float`]},minf:{fn:(...e)=>th(...e),argTypes:[`float`]},biggest:{fn:(...e)=>Qm(...e),argTypes:[`int`]},seq:{fn:(...e)=>sh(...e),argTypes:[`int`],returnType:`string`},until:{fn:e=>uh(e),argTypes:[`int`],returnType:`list`},untilStep:{fn:(e,t,n)=>oh(e,t,n),argTypes:[`int`,`int`,`int`],returnType:`list`}}}Array.from({length:95},(e,t)=>String.fromCharCode(t+32)).join(``);function fh(e,t){return t.length<=e||e<4?t:`${t.slice(0,e-3)}...`}function ph(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},mh=/^[-_\s]$/,hh=/^\p{P}$/u,gh=/^\p{L}$/u,_h=/^\p{Lu}$/u,vh=/^\p{N}$/u;function yh(e){return e!==void 0&&mh.test(e)}function bh(e){return e!==void 0&&gh.test(e)}function xh(e){return e!==void 0&&_h.test(e)}function Sh(e){return e!==void 0&&vh.test(e)}function Ch(e){return e!==void 0&&hh.test(e)}function wh(e,t){if(t>=e.length)return{word:{wt:q.Invalid,text:``},next:t};let n=e[t],r=t+1;if(yh(n)){for(;r<e.length&&yh(e[r]);)r++;return{word:{wt:q.Connector,text:e.slice(t,r).join(``)},next:r}}if(Ch(n)){for(;r<e.length&&Ch(e[r]);)r++;return{word:{wt:q.Punct,text:e.slice(t,r).join(``)},next:r}}if(xh(n)){if(r>=e.length)return{word:{wt:q.UpperCase,text:n},next:r};if(xh(e[r])){let n=r;for(;n<e.length&&xh(e[n]);)n++;return n<e.length&&bh(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(bh(e[r])){let n=r+1;for(;n<e.length&&bh(e[n])&&!xh(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(bh(n)){for(;r<e.length&&bh(e[r])&&!xh(e[r]);)r++;return{word:{wt:q.Alphabet,text:e.slice(t,r).join(``)},next:r}}if(Sh(n)){for(;r<e.length&&Sh(e[r]);)r++;return{word:{wt:q.Number,text:e.slice(t,r).join(``)},next:r}}for(;r<e.length&&!yh(e[r])&&!bh(e[r])&&!Sh(e[r])&&!Ch(e[r]);)r++;return{word:{wt:q.Other,text:e.slice(t,r).join(``)},next:r}}function Th(e,t,n){if(t.wt!==q.UpperCase&&t.wt!==q.Connector){e.push(t.text);return}for(let r of t.text)yh(r)?e.push(n):xh(r)?e.push(r.toLowerCase()):e.push(r)}function Eh(e,t){if(e.length===0)return``;let n=Array.from(e),r=[],{word:i,next:a}=wh(n,0);for(;a<n.length;){i.wt!==q.Connector&&Th(r,i,t);let e=i,o=i;if({word:i,next:a}=wh(n,a),e.wt===q.Number){for(;i.wt===q.Alphabet||i.wt===q.Number;)Th(r,i,t),{word:i,next:a}=wh(n,a);i.wt!==q.Invalid&&i.wt!==q.Punct&&i.wt!==q.Connector&&r.push(t);continue}if(e.wt===q.Connector){Th(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}=wh(n,a),i.wt!==q.Alphabet){Th(r,s,t),i.wt!==q.Connector&&i.wt!==q.Punct&&r.push(t);continue}for(r.push(t),Th(r,s,t);i.wt===q.Alphabet||i.wt===q.Number;)Th(r,i,t),{word:i,next:a}=wh(n,a);i.wt!==q.Invalid&&i.wt!==q.Connector&&i.wt!==q.Punct&&r.push(t)}return Th(r,i,t),r.join(``).toLowerCase()}function Dh(e){if(e.length===0)return``;let t=Array.from(e),n=[],r=0,i=``;for(;r<t.length;){if(i=t[r],r++,!yh(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++,yh(i)&&yh(e)){n.push(e);continue}yh(e)?i=i.toUpperCase():(i=i.toLowerCase(),n.push(e))}return n.push(i),n.join(``)}function Oh(e){return Dh(e)}function kh(...e){return e.join(` `)}function Ah(e,t){return t.includes(e)}function jh(e,t){return t.startsWith(e)}function Mh(e,t){return t.endsWith(e)}function Nh(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 Ph(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 Fh(e,t){let n=[];for(let e of t){if(typeof e==`object`&&e)throw Tm(`join`,2,`list of strings/primitives`,`list element of type ${Ih(e)}`);n.push(String(e))}return n.join(e)}function Ih(e){return Array.isArray(e)?`array`:e instanceof Map?`Map`:e instanceof Set?`Set`:`object`}function Lh(e){return Eh(e,`-`)}function Rh(e){return e.toLowerCase()}function zh(e,t){return`\n${Nh(e,t)}`}function Bh(e){return e.replace(/\s+/g,``)}function Vh(e,t,n){return n===1?e:t}function Hh(...e){return e.map(e=>`"${e}"`).join(` `)}function Uh(e){return e.replace(/[\\.+*?()|[\]{}^$]/g,`\\$&`)}function Wh(e,t){return t.repeat(Math.max(0,e))}function Gh(e,t,n){return n.split(e).join(t)}function Kh(e){return Eh(e,`_`)}function qh(e,t){let n=t.split(e),r={};for(let e=0;e<n.length;e++)r[`_${e}`]=n[e];return r}function Jh(e,t){return t.split(e)}function Yh(e,t,n){let r=Xh(n,e,t),i={};for(let e=0;e<r.length;e++)i[`_${e}`]=r[e]??``;return i}function Xh(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 Zh(...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 $h(e){let t=``;for(let n of e)eg(n)?t+=n.toLowerCase():tg(n)?t+=n.toUpperCase():t+=n;return t}function eg(e){return e!==e.toLowerCase()&&e===e.toUpperCase()}function tg(e){return e!==e.toUpperCase()&&e===e.toLowerCase()}function ng(e){return e.replace(/\b([a-zA-Z])/g,e=>e.toUpperCase())}function rg(e){return e.trim()}function ig(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 ag(e,t){return t.startsWith(e)?t.slice(e.length):t}function og(e,t){return t.endsWith(e)?t.slice(0,t.length-e.length):t}function sg(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 cg(e){return e.replace(/\b([A-Z])/g,e=>e.toLowerCase())}function lg(e){return e.toUpperCase()}function ug(e,t){return dg(e,`
53
+ `,t)}function dg(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 fg(e,t,n){return dg(e,t,n)}function pg(){return{abbrev:{fn:(e,t)=>fh(e,t),argTypes:[`int`,`string`]},abbrevboth:{fn:(e,t,n)=>ph(e,t,n),argTypes:[`int`,`int`,`string`]},camelcase:{fn:e=>Oh(e),argTypes:[`string`],returnType:`string`},cat:{fn:(...e)=>kh(...e),argTypes:[`string`]},contains:{fn:(e,t)=>Ah(e,t),argTypes:[`string`,`string`]},hasPrefix:{fn:(e,t)=>jh(e,t),argTypes:[`string`,`string`]},hasSuffix:{fn:(e,t)=>Mh(e,t),argTypes:[`string`,`string`]},indent:{fn:(e,t)=>Nh(e,t),argTypes:[`int`,`string`]},initials:{fn:e=>Ph(e),argTypes:[`string`]},join:{fn:(e,t)=>Fh(e,t),argTypes:[`string`,`list`]},kebabcase:{fn:e=>Lh(e),argTypes:[`string`],returnType:`string`},lower:{fn:e=>Rh(e),argTypes:[`string`]},nindent:{fn:(e,t)=>zh(e,t),argTypes:[`int`,`string`]},nospace:{fn:e=>Bh(e),argTypes:[`string`],returnType:`string`},plural:{fn:(e,t,n)=>Vh(e,t,n),argTypes:[`string`,`string`,`int`],returnType:`string`},quote:{fn:(...e)=>Hh(...e),argTypes:[`string`]},regexQuoteMeta:{fn:e=>Uh(e),argTypes:[`string`],returnType:`string`},repeat:{fn:(e,t)=>Wh(e,t),argTypes:[`int`,`string`]},replace:{fn:(e,t,n)=>Gh(e,t,n),argTypes:[`string`,`string`,`string`]},snakecase:{fn:e=>Kh(e),argTypes:[`string`],returnType:`string`},split:{fn:(e,t)=>qh(e,t),argTypes:[`string`,`string`]},splitList:{fn:(e,t)=>Jh(e,t),argTypes:[`string`,`string`]},splitn:{fn:(e,t,n)=>Yh(e,t,n),argTypes:[`string`,`int`,`string`],returnType:`dict`},squote:{fn:(...e)=>Zh(...e),argTypes:[`string`]},substr:{fn:(e,t,n)=>Qh(e,t,n),argTypes:[`int`,`int`,`string`]},swapcase:{fn:e=>$h(e),argTypes:[`string`],returnType:`string`},title:{fn:e=>ng(e),argTypes:[`string`]},trim:{fn:e=>rg(e),argTypes:[`string`]},trimAll:{fn:(e,t)=>ig(e,t),argTypes:[`string`,`string`]},trimPrefix:{fn:(e,t)=>ag(e,t),argTypes:[`string`,`string`]},trimSuffix:{fn:(e,t)=>og(e,t),argTypes:[`string`,`string`]},trunc:{fn:(e,t)=>sg(e,t),argTypes:[`int`,`string`]},untitle:{fn:e=>cg(e),argTypes:[`string`]},upper:{fn:e=>lg(e),argTypes:[`string`]},wrap:{fn:(e,t)=>ug(e,t),argTypes:[`int`,`string`]},wrapWith:{fn:(e,t,n)=>fg(e,t,n),argTypes:[`int`,`string`,`string`]}}}function mg(e){return e}function hg(e,t,n){return n===void 0?jl+kl(e)+`.`+kl(t):gg(n)}function gg(e){return jl+kl(e)}function _g(e,t){return e+`.`+t}function vg(e){return e+`.page`}const yg=[`closeOnPick`,`paged`,`key`,`distribution`],bg=e=>yg.includes(e),xg=`"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 Sg(e){for(let t of Object.keys(e))if(!bg(t))throw Error(`unknown {{ menu }} option "${t}" — the options dict takes ${xg}`);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 Cg=`default`,wg={};function Tg(e){return[...new Set([Cg,...Object.keys(e)])]}function Eg(e,t,n){return Da(void 0,e,t,Cg,n)}function Dg(e,t){let n={[Cg]:wg,...e}[t];if(n===void 0)throw Error(`Preset "${t}" is not declared in this config — effectivePresetName collapses unknown names to "${Cg}", which always resolves; a miss here means a raw name reached this function without going through that resolution`);return n}function Og(e,t){let n=Dg(e.presets,t).root??tc;return{node:ac(cc(n,e.root)),path:lc(n)?`presets.${t}.root`:`root`}}function kg(e,t){return{...e.globals,...Dg(e.presets,t).globals}}const Ag=`menu`,jg=`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`,Mg=e=>e.kind===`call`&&e.name===`dict`,Ng=e=>e.kind===`literal`&&typeof e.value!=`object`,Pg=e=>hc(``,e,2)===void 0;function Fg(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&&Mg(i)?i:void 0,o=a===void 0?r:r.slice(0,-1);if(o.some(Mg))return t(`whose options (dict …) is not its last argument — ${jg}`);if(i!==void 0&&a===void 0&&!Ng(i)&&Pg(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=hc(`whose trigger`,o.length,2);if(s!==void 0)return t(`${s} — ${jg}`);let c=a===void 0?{}:am(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=Sg(c)}catch(e){return t(`with invalid options — ${e.message}`)}let u=l.key;if(u!==void 0){let e=Fl(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 "${gg(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 Ig(e){let t=gf({fromString:e=>e});try{return t.parse(e).referencedCalls().filter(e=>e.name===Ag).map(Fg)}catch{return`parse-failed`}}function Lg(e){let t=gf({fromString:e=>e});try{return t.parse(e).referencedFunctions().has(Ag)}catch{return!1}}function Rg(e,t,n){e.issues.push({path:t,message:n,line:U(e.source,[`root`])})}function zg(e,t){Il(e,t,jl,`{{ menu }} helpers`);for(let[n,r]of Object.entries(t.helpers??{}))Lg(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`&&Lg(i)&&Rg(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 ss(oc(t.root)))typeof n.when==`string`&&Lg(n.when)&&Rg(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||!Lg(r))continue;let n=Ig(r);if(n!==`parse-failed`)for(let r of n){let n=r.kind===`issue`?r.message:Bg(r.apply);n!==void 0&&Rg(e,`segments.${t}`,`segment "${t}" has a {{ menu }} ${n}.`)}}}function Bg(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(mg(e)===`closed`)return`whose apply action is named "${pc}", which collides with the menu's closed-state sentinel and leaves it unopenable. Rename the action`}function Vg(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 Tg(e.presets)){let a=new Map,s=new Map;for(let c of ss(Og(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,Ig(t.template));let l=i.get(c.name);if(l===`parse-failed`)continue;let u=rs(c);for(let[e,t]of l.entries()){if(t.kind===`issue`||Bg(t.apply)!==void 0)continue;let{apply:i,options:l}=t,d=mg(i),f=hg(u,i,l.key),p=vg(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=_g(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]=Cc(f,d),n[f]=Sc(f,pc),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 Hg=gf({fromString:e=>e}),Ug=`edit.mode`,Wg=`edit.toggle`,Gg=`arrange`,Kg=`${Ml}draft.`;function qg(e,t){return`configure:${e}:${t}`}const Jg={variable:Ug,key:Ug,member:Gg},Yg=yc(Jg);function Xg(e){try{return Hg.parse(e).referencedCalls().some(e=>e.name===`action`&&e.args[0]===`edit.toggle`)}catch{return!1}}function Zg(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`&&Xg(e))return!0;return!1}function Qg(e,t){if(Il(e,t,Ml,`edit mode`),!Zg(t))return;let n={[Ug]:Sc(Ug,pc)},r={[Wg]:Cc(Ug,Gg)};t.variables={...t.variables??{},...n},t.actions={...t.actions??{},...r}}const $g=/"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|`[^`]*`/g;function*e_(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 t_=`[A-Za-z_]\\w*(?:\\.[A-Za-z_]\\w*)*`,n_=RegExp(`^(?:(\\$)(?:\\.(${t_}))?|\\.(${t_})?)(?=[\\s)]|$)`);function r_(e,t){let n=n_.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 i_=/^(\w+)\b\s*([\s\S]*)$/;function*a_(e){let t=[``];for(let n of e_(e)){let e=n.replace(/^-(?=\s)/,``).trim(),[,r=``,i=``]=i_.exec(e)??[],a=t[t.length-1],o=t.length>1?t[t.length-2]:a;if(r===`end`){t.length>1&&t.pop();continue}if(r===`else`){yield{code:e,dot:o};let n=/^with\b([\s\S]*)$/.exec(i);t[t.length-1]=n===null?o:r_(n[1],o);continue}yield{code:e,dot:a},r===`if`&&t.push(a),r===`with`&&t.push(r_(i,a)),(r===`range`||r===`define`||r===`block`)&&t.push(null)}}const o_=RegExp(`(?<![A-Za-z0-9_)$])(\\$?)\\.(${t_})`,`g`);function*s_(e,t){let n=e.replace($g,``);for(let e of[...n.matchAll(o_)])e[1]===`$`?yield e[2]:t!==null&&(yield`${t}${e[2]}`)}const c_=/\btemplate\s+$/;function*l_(e,t){let n=0;for(let r of[...e.matchAll($g)]){let i=r.index+r[0].length;if(c_.test(e.slice(n,r.index))){let n=r_(e.slice(i),t);n!==null&&(yield{name:r[0].slice(1,-1),at:n})}n=i}}function u_(e,t){let n=new Map,r=new Set,i=(e,a,o,s)=>{for(let{code:c,dot:l}of[...a_(e)]){for(let e of s_(c,l))n.has(a+e)||n.set(a+e,o);for(let e of[...l_(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 d_=/\baction\s+$/;function f_(e){let t=new Set;for(let n of e_(e)){let e=0,r;for($g.lastIndex=0;(r=$g.exec(n))!==null;)d_.test(n.slice(e,r.index))&&t.add(r[0].slice(1,-1)),e=r.index+r[0].length}return t}const p_=/\b(picker|menu|carousel)\s+$/;function m_(e){let t=new Set;for(let n of e_(e)){let e=0,r=0,i;for($g.lastIndex=0;(i=$g.exec(n))!==null;){let a=p_.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 h_(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 g_(e){let t=new Set,n=new Set,r=(e,r)=>{t.add(e),__(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 __(e){return(e.kind===`shell`||e.kind===`file`)&&fs(e.parse)===`json`}var v_=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||{})}})),y_=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})),b_=me(((e,t)=>{process.env.NODE_ENV===`production`?t.exports=v_():t.exports=y_()}))();function x_(e){if(Array.isArray(e))return Object.freeze(e.map(x_));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]=x_(r);return Object.freeze(t)}return e}function S_(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 C_(e){return typeof e==`string`?e:String(e)}function w_(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 T_(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 E_(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=D_(e.style).add(t),n}function D_(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 O_(e){return{fn:(t=>E_(t,e)),argTypes:[`liftable`],returnType:`T`}}function k_(e){return{fn:((t,n)=>E_(n,new z({[e]:N.parse(t)}))),argTypes:[`string`,`liftable`],returnType:`T`}}function A_(e,t){return new z({[e]:t})}function j_(){let e={};for(let t of vr)e[t]=O_(A_(t,!0)),e[`not_${t}`]=O_(A_(t,!1));for(let[t,n]of Object.entries(br))e[t]=O_(A_(n,!0));return e}const M_={fn:((e,t)=>E_(t,z.parse(e))),argTypes:[`string`,`liftable`],returnType:`T`},N_={fn:((e,t)=>E_(t,new z({link:e}))),argTypes:[`string`,`liftable`],returnType:`T`};function P_(){return{fg:k_(`color`),bg:k_(`bgcolor`),...j_(),link:N_,style:M_}}function F_(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 I_(e,t){return{fn:t,argTypes:e,returnType:`string`}}function L_(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 R_=I_([`string`,`int`],((e,t)=>qn(F_(e,`darken`),L_(t,`darken`,`levels`)).hex)),z_=I_([`string`,`int`],((e,t)=>qn(F_(e,`lighten`),-L_(t,`lighten`,`levels`)).hex)),B_={min:0,max:100,note:`0 = from, 100 = toward`},V_=I_([`string`,`string`,`float`],((e,t,n)=>gn(F_(e,`mix`),F_(t,`mix`),L_(n,`mix`,`percentage`,B_)/100).hex)),H_={min:1,max:21,note:`4.5 = AA body text, 3 = AA large text`},U_=I_([`string`],(e=>Jn(F_(e,`contrastOn`)).hex)),W_=e=>I_([`string`,`string`,`float`],((t,n,r)=>Yn(F_(t,`readableOn`),F_(n,`readableOn`),L_(r,`readableOn`,`ratio`,H_),e()).hex)),G_={hueShift:`shiftHue`,chromaScale:`scaleChroma`,lightnessScale:`scaleLightness`,lightnessShift:`shiftLightness`};function K_(){let e={};for(let[t,n]of Object.entries(G_)){let r=t;e[n]=I_([`string`,`float`],((e,t)=>{let i={...kn,[r]:L_(t,n,`amount`)};return L.fromRgba(F_(e,n)).applyKey(i).toRgba().hex}))}return e}function q_(e=()=>j.TRUECOLOR){return{darken:R_,lighten:z_,mix:V_,contrastOn:U_,readableOn:W_(e),...K_()}}function J_(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 Y_(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),J_(i,e())).at(n).hex}),argTypes:[`float`,`string`],argTypePattern:`alternating`,returnType:`string`}}}function X_(e){return{...P_(),...q_(e)}}new z({color:`red`,dim:!0});const Z_=/^(?:(?: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 $_(e){if(!e)return`Claude`;let t=e.trim().replace(/\s*\([^)]*\)\s*$/,``).replace(/\s*\[[^\]]*\]\s*$/,``).trim(),n=t.match(Z_);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 ev(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 tv(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 nv(e){return e.toLocaleString()}function rv(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 iv(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 av=[`▁`,`▂`,`▃`,`▄`,`▅`,`▆`,`▇`,`█`],ov=av.length;function sv(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*(ov-1));o+=av[t]}return o}function cv(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 lv=Ca(),uv=[...Ia];function dv(){return{basename:{fn:e=>l(e),argTypes:[`string`]},dirname:{fn:e=>u(e),argTypes:[`string`]},abbreviatePath:{fn:e=>tv(e),argTypes:[`string`]},int:{fn:e=>w_(e),argTypes:[`value`]},string:{fn:e=>C_(e),argTypes:[`value`]},bool:{fn:e=>T_(e),argTypes:[`value`]},urlEncode:{fn:e=>encodeURIComponent(e),argTypes:[`string`]},themes:{fn:()=>lv,argTypes:[]},styles:{fn:()=>uv,argTypes:[]},sparkline:{fn:(e,t)=>sv(cv(e),t),argTypes:[`string`,`int`]},cascade:{fn:(e,...t)=>iv(e,rv(t)),argTypes:[`float`,`string`]}}}function fv(e=()=>new Date){return{minutesUntilReset:{fn:t=>Math.round(Math.max(0,t*1e3-e().getTime())/6e4),argTypes:[`int`]},formatInteger:{fn:e=>nv(e),argTypes:[`int`]},round:{fn:e=>Math.round(e),argTypes:[`float`]},formatModelName:{fn:e=>$_(e),argTypes:[`string`]},shortenModelName:{fn:e=>ev(e),argTypes:[`string`]}}}function pv(e,t=()=>new Date,n){return gf({fromString:e=>new V(e),toString:e=>e.plain,isT:e=>e instanceof V,clock:t,missingKey:`error`,funcs:{...rm(),...pg(),...Um(),...dh(),...Yp(t),...zf(),..._m(),...X_(n),...dv(),...fv(t),...e??{}}})}function mv(e){return hv(e,new Set(e.names()),``)}function hv(e,t,n){return new Proxy(Object.create(null),{has(e,r){if(typeof r!=`string`)return!1;let i=n?`${n}.${r}`:r;if(t.has(i))return!0;let a=`${i}.`;for(let e of t)if(e.startsWith(a))return!0;return!1},get(r,i){if(typeof i!=`string`)return;let a=n?`${n}.${i}`:i;if(t.has(a))return e.getKind(a)===`document`?_v(a,e.readDocument(a)):e.read(a);let o=`${a}.`;for(let n of t)if(n.startsWith(o))return hv(e,t,a)}})}function gv(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 _v(e,t){switch(t.kind){case`ok`:return t.value;case`absent`:throw Error(`variable "${e}" has no value yet: its source has not completed a scan`);case`failed`:throw Error(`variable "${e}": ${t.reason}`)}}function J(e){return{kind:`ok`,value:e}}const Y={kind:`absent`};function X(e){return{kind:`failed`,reason:e}}function vv(e,t){return e?.kind===`ok`?e.value:t}function yv(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??bv(t.stderr)].filter(Boolean).join(`, `)}`)}function bv(e){return e.trim().split(`
87
+ `,1)[0]??``}function xv(e,t){if(e.kind!==`ok`)return e;let n=t(e.value);return n===null?Y:J(n)}function Sv(e){if(e.kind!==`ok`)return e;let t=e.value.trim();return t?J(t):Y}const Cv=/^[A-Za-z]:[\\/]/;function wv(e){let t=e.trim();if(Cv.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 Tv(e){return wv(e)?.host||null}function Ev(e){let t=Tv(e);return t?t===`github.com`||t.endsWith(`.github.com`)?`github`:/(^|\.)gitlab\./.test(t)?`gitlab`:null:null}function Dv(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 Ov(e){return e.urls.find(e=>Nv(e)!==null)??e.urls[0]??null}function kv(e){return e.find(e=>e.name===`origin`)??e[0]??null}function Av(e){let t=kv(e);return t?Ov(t):null}function jv(e){let t=kv(e);return t?t.urls.find(e=>Ev(e)!==null)??Ov(t):null}function Mv(e){let t=(wv(e)?.path??e.replace(/[\\/]+$/,``)).split(`/`);return(t[t.length-1]??``).replace(/\.git$/,``)||null}function Nv(e){let t=wv(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 Pv(e){let t=Av(e);return t===null?null:Nv(t)}function Fv(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??bv(t.stderr)].filter(Boolean).join(`, `)}`)}function Iv(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Lv(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 Rv(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(!Iv(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 zv(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(!Iv(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 Bv(e){try{let t=r.statSync(e);return{key:`${t.dev}:${t.ino}`,stamp:`${t.mtimeMs}:${t.size}`}}catch{return null}}var Vv=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=xv(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=xv(s,e=>this.repoNameFrom(e,r)),o.isWorktree=i),s!==void 0&&t.showRepoUrl&&(o.repoUrl=xv(s,Pv)),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 Sv(yv(`git describe --tags`,await this.execGitAsync([`describe`,`--tags`,`--abbrev=0`],{cwd:e,timeout:2e3}),`absent`))}async timeSinceCommit(e,t){return t.kind===`ok`?xv(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=Sv(yv(`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=Bv(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=yv(`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`?Dv(t.value):[])}repoNameFrom(e,t){let n=Av(e);return(n===null?null:Mv(n))??c.basename(t)}async getRepoRemoteUrl(e){let t=await this.getRemotesAsync(e);if(t.kind!==`ok`)return t;let n=jv(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=Ev(t);return n===`github`?Fv(`gh pr view`,await this.execForgeAsync(`gh`,[`pr`,`view`,`--json`,`number,state,url`],{cwd:e,timeout:5e3}),/no (open )?pull requests? found/i,Rv):n===`gitlab`?Fv(`glab mr view`,await this.execForgeAsync(`glab`,[`mr`,`view`,`--output`,`json`],{cwd:e,timeout:5e3}),/no (open )?merge requests? (found|available)/i,zv):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=yv(`git status --porcelain=v2 --branch`,await this.execGitAsync([`status`,`--porcelain=v2`,`--branch`],{cwd:e,timeout:2e3}),`failed`);return t.kind===`ok`?J(Lv(t.value)):t}};const Hv=(e,t)=>E(t);var Uv=class{slots=new Map;maxWatchers;counters;logger;closed=!1;constructor(e={}){this.maxWatchers=e.maxWatchers??128,this.counters=e.counters,this.logger=e.logger??Hv}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()}},Wv=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 Gv=(e,t)=>E(t),Kv={showSha:!0,showStashCount:!0};function qv(e){let t=Object.keys(e).sort(),n={};for(let r of t)n[r]=e[r];return JSON.stringify(n)}function Jv(e){let t=t=>{try{return r.statSync(c.join(e,t)).mtimeMs}catch{return 0}};return{head:t(`HEAD`),index:t(`index`)}}function Yv(e,t){return e.head!==t.head||e.index!==t.index}function Xv(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 Zv=class extends Vv{entries=new Map;subscribersByRepo=new Map;fetchInFlight=new Map;resolutions=new Map;prCache=new Map;prFetchInFlight=new Map;refreshes=new Wv;hits=0;misses=0;invalidations=0;inner;ttlMs;maxEntries;watchers;ownsWatchers;logger;sanityTimer=null;constructor(e={}){super(),this.inner=e.inner??new Vv,this.ttlMs=e.ttlMs??3e4,this.maxEntries=e.maxEntries??64,this.logger=e.logger??Gv,e.watchers?(this.watchers=e.watchers,this.ownsWatchers=!1):(this.watchers=new Uv({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}|${qv(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=Jv(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}`,Xv(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}`,Xv(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,{...Kv});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,{...Kv}),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=Jv(this.inner.resolveGitDir(t.repoRoot)),e.set(t.repoRoot,n)),Yv(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,$v=e=>J(e.replace(Qv,` `).trim());function ey(e){return t=>{let n=e.exec(t)?.[1];return n===void 0?X(`regex no-match`):J(n.replace(Qv,` `))}}const ty=e=>{try{return J(JSON.parse(e))}catch(e){return X(`JSON parse failed: ${e.message}`)}};function ny(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 ry(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 iy=`session.id`;function ay(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 oy(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 sy(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 cy=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],ly=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],uy=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],dy=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`];function fy(e,t){let n=[[`2006`,e=>String(e.getFullYear())],[`January`,e=>cy[e.getMonth()]],[`Monday`,e=>uy[e.getDay()]],[`Jan`,e=>ly[e.getMonth()]],[`Mon`,e=>dy[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 py={branch:`string`,sha:`string`,dirty:`boolean`,ahead:`number`,behind:`number`,stash:`number`};function my(e,t,n,r){if(e===null){if(n!==void 0)return n;let e=py[t];try{return vy(r,e)}catch{return yy(e)}}switch(t){case`branch`:return e.branch===`detached`?``:e.branch;case`sha`:return vv(e.sha,``);case`dirty`:return e.status!==`clean`;case`ahead`:return vv(e.aheadBehind,{ahead:0,behind:0}).ahead;case`behind`:return vv(e.aheadBehind,{ahead:0,behind:0}).behind;case`stash`:return vv(e.stashCount,0)}}var hy=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}},gy=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 _y(e,t){let n=e;for(let e of t.split(`.`)){if(typeof n!=`object`||!n)return;n=n[e]}return n}function vy(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`?C_(e):t===`number`?w_(e):T_(e)}function yy(e){return e===`number`?0:e===`boolean`?!1:``}var by=class{inputMetas=new Map;lastErrors=new Map;watchMgr=new hy;ttlMgr=new gy;gitSubscriptions=new Map;cleanups=[];inFlight=new Map;reads=new Wv;abort=new AbortController;drawn=b_.observable.box(j.TRUECOLOR);drawnAt=()=>this.drawn.get();engine=pv(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 Zv({sanityIntervalMs:0}),this.ownsGitProvider=!0),this.sessionState=r}get variableStore(){return this.store}declareLiteral(e,t){this.store.defineBox(e,S_(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,ay(t,this.abort.signal),ny(e,n.cache),n.parse)}declareFile(e,t,n){this.declareSource(e,oy(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,$v,t.default,n);case`regex`:return this.scalarPublisher(e,ey(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=sy(n,t,r);this.noteOutcome(e,a),this.store.setBox(e,vv(a,i))}}documentPublisher(e,t,n){let r=t===void 0?Y:J(t);return this.store.defineDocument(e,r),i=>{let a=sy(i,ty,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=mv(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 fy(t.format,e)}catch{return this.stringInitial(t.varDefault)}})(new Date));let r=this.ttlMgr.subscribe(n,()=>{try{this.store.setBox(e,fy(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=py[t.field],r=t.varDefault===void 0?yy(n):vy(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,my(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(iy);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=_y(e,n.path),i=this.store.getType(t);if(r!==void 0)try{this.store.setBox(t,vy(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,b_.reaction)(()=>{let t=mv(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,b_.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,vy(this.defaultEmptyValue,t))}catch{this.store.setBox(e,yy(t))}}defaultFor(e){try{return vy(this.defaultEmptyValue,e)}catch{return yy(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 xy={project_dir:{kind:`input`,path:`workspace.project_dir`,default:``},[iy]:{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:``}},Sy={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`}},Cy=Object.values(Sy),wy=new Map(Cy.map(e=>[e.configKey,e.effectiveVar])),Ty=new Map(Cy.map(e=>[e.sessionKey,e.effectiveVar])),Ey=new Map(Object.keys(Sy).map(e=>[Sy[e].sessionKey,e]));function Dy(e,t,n){let r=new Set,i=e=>{for(let t of u_(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 ss(e))i(t.when);for(let t of Object.values(e.variables))t.kind===`template`&&i(t.template),t.kind===`state`&&r.add(iy);for(let t of Object.values(e.actions)){r.add(iy),`copy`in t&&i(t.copy),`open`in t&&i(t.open);let e=`set`in t?Ty.get(t.set):void 0,n=`persist`in t?wy.get(t.persist):void 0;e!==void 0&&r.add(e),n!==void 0&&r.add(n)}return r}function Oy(e,t,n){let r=g_({...n,variables:{...n.variables,...e.variables},segments:{...n.segments,...e.segments}}),i={};for(let a of Dy(e,t,n.helpers)){if(h_(a,r))continue;let e=xy[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 ky=new Map,Ay=new Map;function jy(e){let t=Ny(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 My(e,t){return e===`bar`?t:jy(e)}function Ny(e){let t=ya(e),n=ky.get(t);if(n!==void 0)return n;let r=ar(t);return r===null?null:(ky.set(t,r),r)}function Py(e,t){let n=`${e.name} ${t.hueShift} ${t.chromaScale} ${t.lightnessScale} ${t.lightnessShift}`,r=Ay.get(n);if(r!==void 0)return r;let i=pr(e,t);return Ay.set(n,i),i}function Fy(e){let t=Ny(e);return t===null?null:{kind:`decided`,name:e,value:t}}function Iy(e,t){let n=Fy(e);return n===null?(t(`globals.palette rendered "${ba}": "${e}" names no installed theme`),Ry()):n}function Ly(e,t,n){return Aa(e,t,n,Ry(),Fy)}function Ry(){return Fy(ba)}function zy(e){return ja(Ly(void 0,null,e),()=>ba,Ry).value}const By=new Map;function Vy(e,t,n){By.set(e,{permanent:!0,resolve:t,paletteOf:n})}Vy(`themes`,()=>Ca(),e=>jy(e));const Hy=`placementThemes`;Vy(Hy,wa,(e,t)=>My(e,t.palette)),Vy(`styles`,()=>Ia),Vy(`progressions`,()=>Ja),Vy(`charsets`,()=>za),Vy(`colorCompatibilities`,()=>Ua);function Uy(e){return new Map([[`looks`,{members:Object.keys(e.looks),paletteOf:(t,n)=>Py(n.basePalette,e.looks[t])}],[`presets`,{members:Tg(e.presets)}]])}function Wy(e){return[...new Set([...By.keys(),...e.keys()])]}function Gy(e,t){if(typeof e!=`string`)return{members:e};let n=t.get(e);if(n)return n;let r=By.get(e);if(r)return{members:r.resolve(),paletteOf:r.paletteOf};throw Error(`unknown option domain "${e}" (have: ${Wy(t).join(`, `)})`)}const Ky=/^segments\.([^.]+)\.palette$/,qy=/^presets\.(.+)\.root$/,Jy=/^presets\.(.+)\.globals\.([^.]+)$/;function Yy(e){return`presets.${e}.root`}function Xy(e,t){return`presets.${e}.globals.${t}`}function Zy(e){if(Uc(e))return{scope:`globals`,field:e};let t=Ky.exec(e);if(t)return{scope:`segment-palette`,segment:t[1]};let n=Jy.exec(e);if(n&&Ic(n[2]))return{scope:`preset-globals`,preset:n[1],field:n[2]};let r=qy.exec(e);return r?{scope:`preset-root`,preset:r[1]}:null}function Qy(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 $y=`open`;function eb(e,t,n,r){let i={variable:e,key:e,member:$y};return r.variables[e]=Sc(e,pc),r.actions[e]=Cc(e,$y),r.segments[e]={template:xc(e,`(?)`,`✕`),...tb(n)},vc(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 tb(e){let[t,...n]=e;return t===void 0?{}:{when:yc(t,...n)}}const nb={help:[`-h`,`--help`],version:[`-V`,`--version`]},rb=[`✚ inserts`,`🚫 removes`,`⚙ configures`,`↺ resets layout`],ib=`
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
+ ${nb.help.join(`, `).padEnd(25)}Show this help
97
+ ${nb.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 (${mc} 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: ${rb.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
+ `,ab=`${Ml}live`,ob=[`☐ live`,`☑ live`],sb=`${Ml}done`,cb={variable:ab,key:ab,member:`open`},lb=`and ${bc(Jg)} (not ${bc(cb)})`,ub=`{{ ${lb} }}`;function db(e,t){return`{{ if ${lb} }}${e}{{ else }}${t}{{ end }}`}const fb=`{{ and ${bc(Jg)} .preset.customized }}`,pb=Pl,mb=`${Ml}addable`;function hb(e){return new Map([[mb,{members:Object.keys(e.segments).filter(e=>!pb(e))}]])}function gb(e,t,n){return n.segments[e]={template:t,when:Yg},{kind:`segment`,name:e}}function _b(e,t,n){let r=`${Ml}${e.presetIdent}.remove.${t}`;return e.artifacts.actions[r]={persist:e.rootKey,removeSegment:n},`{{ action "${r}" "🚫" }}`}function vb(e){return`{{ if ${bc(Jg)} }}${e.join(``)}{{ end }}`}function yb(e,t){return e.reduce((e,t)=>`{{ if ${bc(t)} }}true{{ else }}${e}{{ end }}`,t)}function bb(e){return e.flatMap(e=>[...ss(e)].flatMap(e=>e.kind===`segment`&&e.opens?.ref.key===`edit.mode`?[e.opens.ref]:[]))}function xb(e,t,n){return`${Kg}${e}.${t}.${n}`}function Sb(e,t,n,r,i){let a=_c(e.label),{domain:o}=e;if(o===`bool`)return i.actions[r]={set:t,cycle:[`false`,`true`]},`{{ action "${r}" "☐ ${a}" "☑ ${a}" }}`;if(o===`theme`)return i.actions[r]={set:t,from:Hy},`{{ "${a}" }} {{ carousel "${r}" }}`;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}: ${_c(e)}"`).join(` `)} }}`}function Cb(e,t,n,r){let i=rs(n),a=`${Ml}${e.presetIdent}`,o=qg(e.presetIdent,i),s=`${a}.configure.${t}`;e.artifacts.actions[s]={set:Ug,to:o};let c={},l=Object.entries(r).map(([r,o])=>{let s=xb(e.presetIdent,i,r),l=`${Kg}p${e.presetIdent}.d${t}.${r}`;e.artifacts.variables[l]={kind:`state`,key:s,default:bs(n.settings?.[r]??o.default)},c[r]={id:i,key:s,variable:l};let u=`${a}.setting.${t}.${r}`;return e.artifacts.segments[u]={template:Sb(o,s,l,u,e.artifacts)},{kind:`segment`,name:u}});return{term:`{{ action "${s}" "⚙" }}`,ref:{variable:Ug,key:Ug,member:o},body:{kind:`container`,direction:`vertical`,children:l},drafts:c}}const wb=`${Ml}label:`;function Tb(e){if(e.startsWith(wb)){let t=e.slice(wb.length);return t.slice(t.indexOf(`:`)+1)}return e.startsWith(`edit.`)?void 0:e}function Eb(e,t,n,r){let i=rs(e),a=`${wb}${i}:${e.name}`;n.segments[a]={template:`{{ "${_c(i)}" }}`,...t.palette!==void 0&&{palette:t.palette}};let o=e.settings?.[_s];return{...vc(a,r.ref,r.body,`drop`,yb([r.ref],ub)),...o!==void 0&&{settings:{theme:o}},drafts:{[_s]:r.drafts[_s]}}}function Db(e,t,n,r){let{presetIdent:i,artifacts:a}=e,o=`${Ml}${i}.insert.${t}`,s=`${Ml}${i}.insertSeg.${t}`;a.actions[o]={persist:e.rootKey,insertSegmentFrom:mb,anchor:n,relation:r};let c=mg(o),l=hg(s,o,void 0),u=vg(l),d=_g(l,c);return a.variables[l]=Sc(l,pc),a.variables[u]={kind:`state`,key:u,default:`0`},a.actions[d]=Cc(l,c),a.actions[u]={set:u,int:!0},{host:s,template:`{{ $m := menu "${o}" "✚" "✕" }}{{ if ${bc({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`&&!pb(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=os(o,i);if(pb(o.name)){n.push(s);continue}let c=rs(o),l=a===r?[Db(t,String(t.posCounter.n++),c,`before`)]:[],u=String(t.posCounter.n++),d=Db(t,u,c,`after`),f=_b(t,u,c),p=t.segments[o.name],m=Cb(t,u,o,vs(p)),h=vb([m.term,f]),g={kind:`container`,direction:`horizontal`,children:[...l.map(e=>gb(e.host,e.template,t.artifacts)),{...Eb(o,p,t.artifacts,m),trail:h},{...s,when:db(`false`,o.when??`true`),trail:h,drafts:m.drafts},gb(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:yb(bb(n),db(`true`,e.when))}}}function kb(e,t,n,r,i,a,o){let s=`${Ml}${n}.resetLayout`,c=`${Ml}${n}.customized`;i.actions[s]={reset:r};let l=_c(t);return i.segments[c]={template:`{{ action "${s}" "↺ ${l} customized" }}`,when:fb},{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[a,{kind:`segment`,name:c}]},Ab(e,o)]}}function Ab(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),Ab(n,t)]}:{...e,children:[...e.children,t]}}function jb(e,t,n,r,i){let{node:a}=Og(e,t),o={presetIdent:kl(t),rootKey:Yy(t),segments:e.segments,artifacts:n,posCounter:{n:0}};return kb(Ob(a,o),t,o.presetIdent,o.rootKey,n,r,i)}function Mb(e){let t={variables:{},actions:{},segments:{}},n=eb(`${Ml}help`,rb,[Jg],t);t.variables[ab]=Sc(ab,pc),t.actions[ab]=Cc(ab,cb.member),t.segments[ab]={template:xc(ab,...ob),when:Yg};let r={kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:ab},n]};t.segments[sb]={template:`{{ action "${Wg}" "✎ done" }}`,when:Yg};let i={kind:`segment`,name:sb},a={...e.presets},o=[];for(let n of Tg(e.presets)){let s=jb(e,n,t,i,r);o.push(s),a[n]={...Dg(e.presets,n),root:s}}let s=Oy(t,o,e);return{...e,variables:{...s,...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:a}}const Nb={socket:`TMUX`,pane:`TMUX_PANE`,truecolor:`CLAUDE_CODE_TMUX_TRUECOLOR`};function Pb(e){let t=e[Nb.socket]??``,n=e[Nb.pane]??``;if(t===``||n===``)return null;let r=e[Nb.truecolor]??``;return{socket:t.split(`,`)[0],pane:n,truecolor:r===``?null:r}}const Fb=Nb.truecolor,Ib=[{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[Fb];return typeof n==`string`&&n!==``?{ok:!1,reason:`${Fb} 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:Fb,value:`1`}}}}}}];function Lb(e){return Ib.map(t=>({check:t,verdict:t.probe(e)}))}function Rb(e){return Ib.find(t=>t.name===e)}const zb=`${K}doctor.`;function Bb(e){let t=`${zb}${e}.`;return{verdict:`${t}verdict`,reason:`${t}reason`,fixable:`${t}fixable`}}function Vb(e){return e.flatMap(({check:e,verdict:t})=>{let n=Bb(e.name);return t.ok?[{key:n.verdict,value:`ok`},{key:n.reason,value:``},{key:n.fixable,value:Qa}]:[{key:n.verdict,value:`failed`},{key:n.reason,value:t.reason},{key:n.fixable,value:t.fix===void 0?Qa:Za}]})}const Hb={copySession:{copy:`{{ .session.id }}`},openProject:{open:`{{ .project_dir }}`},openTranscript:{open:`{{ .transcript_path }}`}};function Ub(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(Hb).map(([t,n])=>[`${e}${t}`,n]))}}const Wb=`${K}menu`,Gb=`open`,Kb=`${K}edit`,qb=`${K}close`,Jb=`${K}toolbar`,Yb=Ub(K),Xb=`${K}config`,Zb=`${K}save`,Qb=`${K}unsaved`,$b=`${K}preset.save`,ex=`${K}preset.delete`,tx=`${K}resetAll`,nx=`${tx}.arm`,rx=`${tx}.disarm`,ix=`armed`,ax=`disarmed`,ox=`${Wb}.toggle`,sx=`${Xb}.toggle`,cx={variable:Wb,key:Wb,member:Gb},lx={variable:Xb,key:Xb,member:Gb},ux=`${K}tools`,dx={variable:ux,key:ux,member:Gb},fx=[{seg:`${K}undo`,depth:`undo`,action:{undo:!0},display:`↶ undo`},{seg:`${K}redo`,depth:`redo`,action:{redo:!0},display:`↷ redo`}],px=e=>`${K}history.${e}`,mx=`${K}doctor`,hx=`${mx}.run`,gx=e=>`${mx}.fix.${e}`,_x=e=>`${mx}.${e}`,vx=`${K}pickers`,yx=[`{{ themePreview }}`],bx=[{name:`preset`,...Sy.preset,glyph:`▦`,domain:`presets`,beneath:[`{{ layoutPreview }}`,`{{ action "${$b}" "⊕ save as preset" }}{{ if not .preset.bundled }} {{ action "${ex}" (printf "🗑 delete %s" .${Sy.preset.effectiveVar}) }}{{ end }}`]}],xx=[{name:`theme`,...Sy.theme,glyph:`🎨`,domain:`themes`,beneath:yx},{name:`look`,...Sy.look,glyph:`◐`,domain:`looks`,beneath:yx},{name:`style`,...Sy.style,glyph:`✦`,domain:`styles`,beneath:[]},{name:`progression`,...Sy.progression,glyph:`🎼`,domain:`progressions`,beneath:[`{{ layoutPreview }}`]},{name:`charset`,...Sy.charset,glyph:`🔣`,domain:`charsets`,beneath:[]},{name:`colorCompatibility`,...Sy.colorCompatibility,glyph:`🌈`,domain:`colorCompatibilities`,beneath:[]}],Sx={name:`wrap`,...Sy.autoWrap},Cx={name:`padding`,...Sy.padding},wx=`${K}${Sx.name}`,Tx=`${K}${Cx.name}`,Ex=[...bx,...xx],Dx=[...Ex,Sx,Cx];new Set(Dx.flatMap(e=>[e.sessionKey,e.configKey]));const Ox=e=>`${K}${e}`,kx=e=>`${K}apply.${e}`,Ax=e=>`${K}reset.${e}`,jx=e=>`${K}carousel.${e}`,Mx=(e,t)=>`${jx(e)}.${t}`,Nx=gg(vx),Px=e=>({variable:Nx,key:Nx,member:mg(kx(e.name))});function Fx(e){return vc(Ox(e.name),Px(e),{kind:`container`,direction:`vertical`,children:[{kind:`segment`,name:jx(e.name)},...e.beneath.map((t,n)=>({kind:`segment`,name:Mx(e.name,n)}))]},`drop`)}function Ix(e){return e===Wb}function Lx(e){let t={kind:`segment`,name:Wb};if(e.kind===`container`&&e.direction===`vertical`){let[n,...r]=e.children;return e.when===void 0&&n!==void 0?{...e,children:[Lx(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 Rx(e){return zx(e)>0?e:Lx(e)}function zx(e){let t=0;for(let n of ss(e))n.kind===`segment`&&Ix(n.name)&&(t+=1);return t}function Bx(e,t=!1){let n=t||e.when!==void 0;return e.kind===`segment`?n&&Ix(e.name)||e.opens!==void 0&&Bx(e.opens.body,!0):e.children.some(e=>Bx(e,n))}function Vx(e){return e.kind===`segment`?Ix(e.name)?vc(e.name,cx,{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:Jb},...bx.map(Fx),{kind:`segment`,name:Zb},vc(Xb,lx,{kind:`container`,direction:`horizontal`,children:[...xx.map(Fx),{kind:`segment`,name:wx},{kind:`segment`,name:Tx},{kind:`segment`,name:tx}]},`drop`),vc(ux,dx,{kind:`container`,direction:`vertical`,children:[{kind:`segment`,name:mx},...Ib.map(e=>({kind:`segment`,name:_x(e.name)}))]},`drop`),{kind:`segment`,name:Kb},...fx.map(e=>({kind:`segment`,name:e.seg}))]},`inline`):e:Hx(e)}function Hx(e){return{...e,children:e.children.map(e=>Vx(e))}}function Ux(e){let t={variables:{[Wb]:Sc(Wb,pc)},actions:{[ox]:Cc(Wb,Gb),[Wb]:{do:[ox,rx]},[sx]:Cc(Xb,Gb),[Xb]:{do:[sx,rx]},[ux]:Cc(ux,Gb),[hx]:{doctor:`run`},[qb]:{set:cx.key,to:pc},[Kb]:{do:[Wg,qb]},...Yb.actions,[Zb]:{save:!0},[$b]:{preset:`save`},[ex]:{preset:`delete`,name:`{{ .${Sy.preset.effectiveVar} }}`}},segments:{[Wb]:{template:xc(Wb,e,`❌`)},[Jb]:{template:Yb.template},[Zb]:{when:`{{ gt .${Qb} 0 }}`,template:`{{ action "${Zb}" (printf "💾 save %d" .${Qb}) }}`},[Xb]:{template:xc(Xb,`⚙ config ▸`,`⚙ config ▾`)},[ux]:{template:xc(ux,`🧰 tools ▸`,`🧰 tools ▾`)},[mx]:{template:`{{ action "${hx}" "🩺 doctor" }}`},[wx]:{template:`{{ action "${kx(`wrap`)}" "wrap: on" "wrap: off" }} {{ action "${Ax(`wrap`)}" "↺" }}`},[Tx]:{template:`{{ action "${kx(`padding`)}.down" "◀" }} padding {{ .${Cx.effectiveVar} }} {{ action "${kx(`padding`)}.up" "▶" }} {{ action "${Ax(`padding`)}" "↺" }}`},[Kb]:{template:`{{ action "${Kb}" "✎ edit" "✎ done" }}`},[tx]:{template:`{{ if eq .${tx} "${ix}" }}{{ action "${tx}" "⟲ confirm reset all" }}{{ else }}{{ action "${nx}" "⟲ reset all" }}{{ end }}`}}};return t.variables[Qb]={kind:`input`,path:`unsaved`,type:`number`,default:0},t.variables[Xb]=Sc(Xb,pc),t.variables[ux]=Sc(ux,pc),t.variables[tx]={kind:`state`,key:tx,default:ax},Kx(t),Gx(t),Wx(t),t}function Wx(e){for(let t of fx){let n=px(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 Gx(e){for(let t of Ib){let n=Bb(t.name),r=gx(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[_x(t.name)]={when:`{{ ne .${n.verdict} "" }}`,template:`{{ if eq .${n.verdict} "ok" }}✓ ${t.label}{{ else }}✗ ${t.label} — {{ .${n.reason} }}{{ if eq .${n.fixable} "${Za}" }} {{ action "${r}" "[fix]" }}{{ end }}{{ end }}`}}}function Kx(e){for(let t of Ex){let n=kx(t.name);e.actions[n]={set:t.sessionKey,from:t.domain},e.actions[Ax(t.name)]={reset:t.configKey},qx(t,e)}e.actions[kx(Sx.name)]={set:Sx.sessionKey,cycle:[...$a]},e.actions[Ax(Sx.name)]={reset:Sx.configKey};for(let t of[-1,1])e.actions[`${kx(Cx.name)}.${t<0?`down`:`up`}`]={set:Cx.sessionKey,...eo,by:t};e.actions[Ax(Cx.name)]={reset:Cx.configKey},e.actions[nx]={set:tx,to:ix},e.actions[rx]={set:tx,to:ax},e.actions[tx]={do:[rx,...Dx.map(e=>Ax(e.name))]}}function qx(e,t){let n=kx(e.name),r=Px(e),i=_g(r.key,r.member);t.variables[r.key]=Sc(r.key,pc),t.actions[i]=Cc(r.key,r.member),t.segments[Ox(e.name)]={template:`${e.glyph} {{ .${e.effectiveVar} }} ${xc(i,`▸`,`▾`)} {{ action "${Ax(e.name)}" "↺" }}`},t.segments[jx(e.name)]={template:`{{ carousel "${n}" }}`},e.beneath.forEach((n,r)=>{t.segments[Mx(e.name,r)]={template:n}})}function Jx(e){e.variables[Ug]=Sc(Ug,pc),e.actions[Wg]=Cc(Ug,Gg)}function Yx(e){let t=Ux(e.globals.menuGlyph??`🍫`);Jx(t);let n={...e.presets},r=[];for(let t of Tg(e.presets)){let{node:i}=Og(e,t),a=Vx(Rx(i));r.push(a),n[t]={...Dg(e.presets,t),root:a}}let i=Oy(t,r,e);return{...e,variables:{...i,...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:n}}const Xx=[`set`,`persist`,`copy`,`open`,`reset`,`undo`,`redo`,`save`,`preset`,`doctor`,`ceiling`,`slash`,`do`];function Zx(e){return e.ceiling===`set`?[`set`,e.to]:[`clear`]}function Qx(e){return`from`in e||`int`in e||`insertSegmentFrom`in e}const $x=RegExp(`^/[^\\s\\x00-\\x1f\\x7f-\\x9f/][^\\x00-\\x1f\\x7f-\\x9f]*$`);function eS(e){return typeof e==`string`&&$x.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 tS(e,t){if(t===void 0)return{};if(!As(t))return Z(e,`actions`,`actions must be an object, got ${js(t)}`),{};let n=Object.create(null);for(let[r,i]of Object.entries(t)){let t=nS(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 nS(e,t,n){if(!As(n))return Z(e,t,`${t} must be an action object, got ${js(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=Xx.filter(e=>e in n);return r.length===1?rS[r[0]](e,t,n):(Z(e,t,`action must declare exactly one of: ${Xx.join(`, `)}${r.length>1?` (found: ${r.join(`, `)})`:``}`),null)}const rS={set:(e,t,n)=>FS(e,t,n,`set`,jS),persist:(e,t,n)=>FS(e,t,n,`persist`,MS),copy:iS(`copy`),open:iS(`open`),reset:aS,undo:sS(`undo`),redo:sS(`redo`),save:sS(`save`),preset:cS,doctor:lS,ceiling:uS,slash:dS,do:fS};function iS(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=Ts(t,n,r,e);return i===null?null:{[e]:i}}}function aS(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=pS(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 oS={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 sS(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 — ${oS[e]}), got ${W(r[e])}`),null)}}function cS(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=Ts(e,t,n,`name`);return a===null?null:{preset:`delete`,name:a}}function lS(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`||Rb(a)===void 0?(Z(e,`${t}.check`,`doctor fix must name a check (have: ${Ib.map(e=>e.name).join(`, `)}), got ${W(a)}`),null):{doctor:`fix`,check:a}}function uS(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 dS(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=eS(n.slash);return r.kind===`refused`?(Z(e,`${t}.slash`,r.reason),null):{slash:r.line}}function fS(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 pS(e,t,n,r,i,a){let o=Ts(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 mS={set:`the SessionState key to write`,persist:`the config globals field to write`};function hS(e,t,n,r){let i=mS[r],a=pS(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 gS(e){return e===`set`?`set-state`:`set-config`}const _S={to:IS(`set`)},vS={to:IS(`persist`)},yS={from:LS(`set`)},bS={from:LS(`persist`)},xS={min:HS(),max:HS(),by:HS()},SS={int:zS()},CS={cycle:RS(`set`)},wS={cycle:RS(`persist`)},TS={removeSegment:BS(`removeSegment`)},ES={insertSegment:BS(`insertSegment`),anchor:BS(`anchor`),relation:VS()},DS={insertSegmentFrom:LS(`persist`),anchor:BS(`anchor`),relation:VS()},OS={ok:e=>e.min<e.max,issue:e=>({field:`min`,message:`min (${e.min}) must be less than max (${e.max})`})},kS={ok:e=>e.by!==0,issue:()=>({field:`by`,message:`by must be a non-zero integer (the per-click increment; negative steps down)`})};function AS(e,t,n=[],r){let i=Object.keys(t),a=r??i,o=[e],s=(e,n,r)=>Ns(e,t,n,r),c=Js(t);return{detect:a,allowed:[...o,...i],label:i.join(`/`),json:{type:`object`,properties:{...Object.fromEntries(o.map(e=>[e,{type:`string`}])),...c.properties},required:[...o,...c.required??[]],additionalProperties:!1},parse:n.length?Vs(s,...n):s}}const jS=[AS(`set`,_S),AS(`set`,yS),AS(`set`,xS,[OS,kS]),AS(`set`,SS),AS(`set`,CS)],MS=[AS(`persist`,vS),AS(`persist`,bS),AS(`persist`,xS,[OS,kS]),AS(`persist`,wS),AS(`persist`,TS),AS(`persist`,ES,[],[`insertSegment`]),AS(`persist`,DS,[],[`insertSegmentFrom`])];function NS(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 PS(e){let t=NS(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 FS(e,t,n,r,i){let a=hS(e,t,n,r),o=i.filter(e=>e.detect.some(e=>e in n));if(o.length!==1)return Z(e,t,`${PS(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 IS(e){let t=gS(e);return{required:!0,json:{type:`string`},parse:(n,r,i,a)=>pS(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 LS(e){let t=gS(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 RS(e){let t=gS(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 ${js(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 zS(){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 BS(e){return{required:!0,json:{type:`string`},parse:(t,n,r,i)=>{let a=Ts(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 VS(){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 HS(){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 US={noun:`look key`,fields:{hueShift:Ws(),chromaScale:Ws({min:0}),lightnessScale:Ws(),lightnessShift:Ws()}};function WS(e,t){if(!As(t))return e.issues.push({path:`looks`,message:`looks must be an object mapping look names to adaptation objects, got ${js(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=Ms(e,US,`looks.${r}`,i);t!==null&&(n[r]={...kn,...t})}return n}const GS={noun:`preset key`,fields:{root:{required:!1,json:{$ref:`#/definitions/RootFragment`},parse:(e,t,n,r)=>r[n]===void 0?void 0:xu(e,`${t}.${n}`,r[n])},globals:{required:!1,json:Bc(),parse:(e,t,n,r)=>r[n]===void 0?void 0:zc(e,`${t}.${n}`,r[n])}}};function KS(e,t){if(!As(t))return e.issues.push({path:`presets`,message:`presets must be an object mapping preset names to config fragments, got ${js(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=Ms(e,GS,`presets.${r}`,i);t!==null&&(n[r]=t)}return n}function qS(e,t){if(t===void 0)return{};if(!As(t))return e.issues.push({path:`helpers`,message:`helpers must be an object, got ${js(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}function JS(e,t){let n=new Map;for(let e of Object.keys(t)){let t=kl(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 YS(e,t,n){t.globals.look!==void 0&&!ka(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`])}),JS(e,t.presets);let r=Uy(t);for(let[n,i]of Object.entries(t.actions))!(`set`in i)||!(`from`in i)||typeof i.from!=`string`||Wy(r).includes(i.from)||e.issues.push({path:`actions.${n}.from`,message:`actions.${n} from: references unknown option domain "${i.from}" (have: ${Wy(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&&Qx(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=Zy(i);if(o===null){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${i}" is not a config globals field (have: ${Wc().join(`, `)}), a "segments.<name>.palette" target, a "presets.<name>.globals.<field>" target, or a "presets.<name>.root" target`,line:U(e.source,[`actions`,n,a])});continue}let s=XS.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`){ZS(e,t,n,a,i,o.preset,r);continue}if(o.scope===`preset-globals`&&!Tg(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: ${Tg(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(`, `)})${Rl(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=g_(t);for(let t of i.names)t!==`settings`&&!t.startsWith(QS)||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)=>{zx(t)>1&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${Wb}" ${zx(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}),Bx(t)&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${Wb}" 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 ss(t)){if(e.kind!==`segment`)continue;let t=rs(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=as(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||ns[e.direction]===`cell`))}let s=(n,r)=>{for(let[a,o]of sc(n,r)){let n=U(e.source,o.split(`.`));if(a.when!==void 0&&(iC(e,`${o}.when`,a.when,i,{line:n}),rC(e,`${o}.when`,a.when,n)),a.kind===`segment`){if(Ix(a.name)){(a.id!==void 0||a.settings!==void 0)&&e.issues.push({path:o,message:`${r} gives the global settings menu anchor "${Wb}" an id or settings — the anchor only marks where the menu goes, so place it as the bare name "${Wb}"`,line:n});continue}Object.prototype.hasOwnProperty.call(t.segments,a.name)||e.issues.push({path:o,message:`${r} entry "${a.name}" does not match any declared segment${Rl(a.name)}`,line:n}),eC(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`,ac(t.root)]]);for(let e of Tg(t.presets)){let{node:n,path:r}=Og(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))tC(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))tC(e,`segments.${n}.vars.${t}`,a,i,n);let a=vs(r),o=$S(i,a);for(let i of[`template`,`bg`,`fg`,`when`]){let s=r[i];if(typeof s==`string`){iC(e,`segments.${n}.${i}`,s,o,{segCtx:n,settings:a});for(let r of f_(s))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 m_(s))Object.prototype.hasOwnProperty.call(t.actions,r)||e.issues.push({path:`segments.${n}.${i}`,message:`${i} references unknown action "${r}" (in a picker, menu or carousel)`,line:U(e.source,[`segments`,n,i])})}}}for(let[n,r]of Object.entries(t.variables))nC(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))nC(e,`segments.${n}.vars.${t}`,a,i,n)}const XS=[`removeSegment`,`insertSegment`,`insertSegmentFrom`];function ZS(e,t,n,r,i,a,o){let s=`actions.${n}.${r}`,c=U(e.source,[`actions`,n,r]);if(!Tg(t.presets).includes(a)){e.issues.push({path:s,message:`actions.${n}: "${i}" names preset "${a}" which is not declared (have: ${Tg(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(`, `)})${Rl(i)}`,line:c})},p=new Set(is(Og(t,a).node)),m=(r,i)=>{!Ll.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${Rl(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 QS=`settings.`;function $S(e,t){return{...e,names:new Set([...e.names,...Object.keys(t).map(e=>QS+e)])}}function eC(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=vs(a),s=`${r}: placement "${rs(n)}" of segment "${n.name}"`;for(let[t,a]of Object.entries(n.settings??{})){let c=Object.prototype.hasOwnProperty.call(o,t)?o[t]:void 0,l=c===void 0?`sets "${t}", which segment "${n.name}" does not declare (it has: ${Object.keys(o).join(`, `)})`:ys(c,a)?void 0:`sets "${t}" to ${JSON.stringify(a)}, but it must be ${Ss(c)}`;l!==void 0&&e.issues.push({path:r,message:`${s} ${l}`,line:i})}}function tC(e,t,n,r,i){n.kind===`template`&&iC(e,`${t}.template`,n.template,r,{segCtx:i}),ms(n)&&n.cache&&`key`in n.cache&&iC(e,`${t}.cache.key`,n.cache.key,r,{segCtx:i})}function nC(e,t,n,r,i){if(ms(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 rC(e,t,n,r){try{Hg.parse(n)}catch(n){e.issues.push({path:t,message:`Template parse error in ${t}: ${n.message}`,line:r})}}function iC(e,t,n,r,i){for(let[a,o]of u_(n,r.helpers)){if(h_(a,r))continue;if(o!==null){aC(e,o,a);continue}if(i?.segCtx!==void 0&&a.startsWith(QS)){let n=Object.keys(i.settings??{});e.issues.push({path:t,message:`Template reads ".${a}", but segment "${i.segCtx}" has no setting "${a.slice(9)}" (it has: ${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&&h_(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 aC(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 oC(e,t){let{graph:n,nodeInfo:r}=sC(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 sC(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 u_(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),ms(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 cC=[`json5`,`json`];function lC(e){try{return r.statSync(e,{throwIfNoEntry:!1})===void 0?`absent`:`present`}catch(t){return{path:e,error:t.message}}}function uC(e){return e===`~`||e.startsWith(`~/`)||e.startsWith(`~\\`)?f.homedir()+e.slice(1):e}function dC(e,t,n){if(n!==void 0)return[n];let r=t??process.cwd();return[...new Set([...e?cC.map(t=>c.join(e,`.cc-candybar.${t}`)):[],...cC.map(e=>c.join(r,`.cc-candybar.${e}`)),...cC.map(e=>`${fC()}.${e}`)])]}function fC(){let e=process.env.XDG_CONFIG_HOME??c.join(f.homedir(),`.config`);return c.join(e,`cc-candybar`,`config`)}function pC(e,t,n){let r=[];for(let i of dC(e,t,n)){let e=lC(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 mC(e,t,n){let r=pC(e,t,n);return r.kind===`default`?`${fC()}.${cC[0]}`:r.path}function hC(e){return gC(e).join(`
158
+ `)||null}function gC(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 _C(e,t){let n=dC(e,t).filter(e=>lC(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 vC(e,t,n){return e===null?{...bC,config:uc(bC.raw,t)}:yC(e,r.readFileSync(e,`utf-8`),t,n)}function yC(e,t,n,r){let i={source:t,...CC(e,t,r,Zl(n))};return{...i,config:uc(i.raw,n)}}const bC={raw:{},source:``,warnings:[]};function xC({config:e,raw:t,source:n},r=`<config>`,i=new Set(Ca())){let a=[],o={source:n,issues:a,allowedPalettes:i,groups:[]};if(YS(o,e,t),oC(o,e),a.length>0)throw new Xo(r,a);let s=Vg(e,a);if(a.length>0)throw new Xo(r,a);return Mb(Yx(s))}function SC(e,t,n=new Set(Ca()),r=wC){return CC(e,t,n,r).raw}function CC(e,t,n,r){let i=TC(e,t),a=$o(e,t),o=a===null?[]:[a],s=[],c={source:t,issues:s,allowedPalettes:n??new Set(Ca()),groups:[]};if(!As(i))throw new Xo(e,[{path:``,message:`Config root must be an object, got ${js(i)}`}],o);let l=EC(c,i,r);if(s.length>0)throw new Xo(e,s,o);return{raw:l,warnings:o}}const wC=new Set;function TC(e,t){try{return Ze.default.parse(t)}catch(t){let n=t;throw new Xo(e,[{path:``,message:`JSON5 syntax error: ${n.message}`,line:n.lineNumber,col:n.columnNumber}])}}function EC(e,t,n){for(let n of Object.keys(t))DC.has(n)||e.issues.push({path:n,message:`Unknown top-level key "${n}". Expected one of: ${[...DC].join(`, `)}`,line:U(e.source,[n])});let r={};return t.globals!==void 0&&(r.globals=Rc(e,`globals`,t.globals)),t.variables!==void 0&&(r.variables=il(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=xu(e,`root`,t.root)),t.actions!==void 0&&(r.actions=tS(e,t.actions)),t.looks!==void 0&&(r.looks=WS(e,t.looks)),t.presets!==void 0&&(r.presets=KS(e,t.presets)),t.editGlobals!==void 0&&(r.editGlobals=Vc(e,`editGlobals`,t.editGlobals)),t.helpers!==void 0&&(r.helpers=qS(e,t.helpers)),ku(e,r),zg(e,r),Qg(e,r),Il(e,r,K,`the global settings menu`),r}const DC=new Set([`globals`,`variables`,`segments`,`layout`,`root`,`actions`,`looks`,`presets`,`editGlobals`,`helpers`]);function OC(e){let t=MC(e.termCols),n=MC(e.termRows),r=NC(e.ssh),i=AC(e.tmux),a=kC(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 kC(e){return typeof e==`string`&&e!==``?uC(e):void 0}function AC(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 jC=1e4;function MC(e){if(typeof e!=`number`||!Number.isFinite(e))return;let t=Math.floor(e);if(!(t<=0))return t>jC?jC:t}function NC(e){return typeof e==`boolean`?e:void 0}var PC=class extends Error{constructor(e){super(e),this.name=`ProtocolError`}};function FC(e){let t=Buffer.from(JSON.stringify(e),`utf8`),n=Buffer.alloc(4);return n.writeUInt32BE(t.length,0),Buffer.concat([n,t])}function IC(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 PC(`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 PC(e instanceof Error?e.message:String(e));e instanceof Error&&(n.cause=e),t(n);return}}}}function LC(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=IC(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(FC(t))})}async function RC(e,t,n){let r=null;try{r=await UC(Pe(),t.connectMs);let i=await LC(r,{v:3,...e},t.budgetMs);return VC(e.kind,i,n)}catch(e){return HC(e)}finally{r&&r.destroy()}}function zC(e,t){return typeof e==`string`?e:t}function BC(e){return typeof e==`number`&&Number.isInteger(e)&&e>=0?e:0}function VC(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=zC(r.error,`(no error message)`);switch(r.code){case`VERSION_MISMATCH`:return{kind:`permanent`,cause:`version_mismatch`,clientV:3,daemonV:BC(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 HC(e){if(e instanceof PC||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 UC(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 WC(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 GC={connectMs:50,budgetMs:150},KC={connectMs:50,budgetMs:200};function qC(e){let t=e.output;return typeof t==`string`?t:void 0}function JC(e,t,n,r){return RC({kind:`render`,hookData:e,args:t,cwd:n,...r},GC,qC)}function YC(e,t){return RC({kind:`click`,verb:e,value:t},KC,qC)}let XC=null;function ZC(e){if(XC!==null)return XC;r.mkdirSync(c.dirname(e),{recursive:!0});try{XC=r.statSync(e).size}catch{XC=0}return XC}function QC(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{}XC=0}function Q(e,t){let n=`${new Date().toISOString()} [${e}] ${t}\n`;try{let e=Ke(),t=ZC(e);r.appendFileSync(e,n),XC=t+Buffer.byteLength(n,`utf8`),XC>=5242880&&QC(e)}catch(e){XC=null;try{process.stderr.write(`${n}cc-candybar: daemon.log unwritable: ${e.message}\n`)}catch{}}}function $C(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 ew(e,t){return e===`darwin`?[tw(`footprint`,[`-p`,String(t)]),tw(`vmmap`,[`--summary`,String(t)])]:e===`linux`?[nw(`/proc/self/smaps_rollup`),nw(`/proc/self/status`)]:[]}function tw(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}`}${rw(n.stderr)}`}}}}function nw(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 rw(e){let t=e.split(`
163
+ `).map(e=>e.trim()).find(e=>e.length>0);return t===void 0?``:` (${t})`}const iw=`CC_CANDYBAR_RSS_LIMIT_MB`;function aw(e){let t=e[iw];if(t===void 0)return 512;let n=/^\d+$/.test(t)?Number(t):NaN;if(!Number.isSafeInteger(n)||n<=0)throw Error(`${iw} must be a positive integer (MB), got ${JSON.stringify(t)}`);return n}function ow(e){return aw(e)*2}const sw=1024*1024;function cw(e){return aw(e)*sw}const lw={memoryReport:{prefix:`memory-`,suffix:`.txt`},heapSnapshot:{prefix:`heap-`,suffix:`.heapsnapshot`}};function uw(e,t,n){let{prefix:r,suffix:i}=lw[t];return c.join(e,`${r}${n}${i}`)}function dw(e){for(let t of Object.keys(lw)){let{prefix:n,suffix:r}=lw[t];if(e.startsWith(n)&&e.endsWith(r))return t}return null}function fw(e){let t=e.rssLimitBytes??512*sw,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 pw(e.log,`memory report`,()=>{let t=uw(e.snapshotDir,`memoryReport`,o);e.writeMemoryReport(t,e.captureMemoryReport()),e.log(`info`,`memory report written: ${t}`)}),pw(e.log,`heap snapshot`,()=>{let t=uw(e.snapshotDir,`heapSnapshot`,o);e.log(`info`,`heap snapshot written: ${e.writeHeapSnapshot(t)}`)}),pw(e.log,`artifact rotation`,()=>{hw(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 pw(e,t,n){try{n()}catch(n){e(`warn`,`${t} failed: ${n.message}`)}}function mw(e){let t=e.slice(e.lastIndexOf(`/`)+1),n=dw(t);if(n===null)return t;let{prefix:r,suffix:i}=lw[n];return t.slice(r.length,t.length-i.length)}function hw(e,t,n){let r=new Map;for(let t of e){let e=mw(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 gw(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:()=>$C(ew(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=>dw(e)!==null).map(e=>c.join(i,e))}catch{return[]}},removeFile:e=>r.unlinkSync(e),shutdown:t,startedAtMs:e,...n}}function _w(e={}){if(Nw()!==null)return;let n=e.spawn??Pw,r=Aw();if(r.kind===`contended`){let e=yw();e!==null&&e>2e3&&(t.stderr.write(`cc-candybar: spawn-lock held ${e}ms (likely crashed holder) — spawning unlocked\n`),vw(n));return}if(r.kind===`error`){t.stderr.write(`cc-candybar: spawn-lock unavailable (${r.reason}) — spawning unlocked\n`),vw(n);return}try{vw(n)}finally{Mw()}}function vw(e){Ew()&&bw(e)}function yw(){try{let e=r.statSync(He());return Date.now()-e.mtimeMs}catch{return null}}function bw(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 xw(e,t){return e===null?{kind:`allow`}:e<-1e4?{kind:`allow-future-garbage`,futureMs:-e}:e<t?{kind:`deny`}:{kind:`allow`}}function Sw(e){return Math.min(3e3*2**Math.min(Math.max(e,0),5),6e4)}function Cw(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 ww(e,n){try{r.mkdirSync(c.dirname(e),{recursive:!0}),r.writeFileSync(e,String(n),{mode:384})}catch(e){t.stderr.write(`cc-candybar: could not record spawn.backoff: ${e.message}\n`)}}function Tw(){try{r.unlinkSync(We())}catch(e){e.code!==`ENOENT`&&t.stderr.write(`cc-candybar: could not reset spawn.backoff: ${e.message}\n`)}}function Ew(){let e=Ue(),n=We(),r=Cw(n),i=xw(Dw(e),Sw(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),ww(n,Math.min(r+1,5)),!0)}function Dw(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 kw=null;function Aw(){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 kw={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(!jw(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 jw(e){try{let t=r.statSync(e);return Date.now()-t.mtimeMs>1e4}catch{return!0}}function Mw(){if(!kw)return;let{fd:e,path:t}=kw;kw=null;try{r.closeSync(e)}catch{}try{r.unlinkSync(t)}catch{}}function Nw(){try{return r.mkdirSync(Ne(),{recursive:!0}),null}catch(e){return`mkdir ${Ne()}: ${e.message}`}}function Pw(){let e=t.execPath,n=t.argv[1];return n?Oe({bin:e,args:[`--max-old-space-size=${ow(t.env)}`,n,`daemon`],category:`daemon-spawn`}).ok:!1}const Fw=`cc-candybar`,Iw=`dispatch`,Lw=`set-state`,Rw=`step-state`,zw=`copy`,Bw=`open-vscode`,Vw=`toolbar-toggle`,Hw=`show-config-error`,Uw=`show-config-warning`,Ww=`set-config`,Gw=`step-config`,Kw=`save`,qw=`save-preset`,Jw=`delete-preset`,Yw=`reset-config`,Xw=`apply-layout-op`,Zw=`undo`,Qw=`redo`,$w=`apply-update`,eT=`doctor-run`,tT=`doctor-fix`,nT=`ceiling`,rT=`slash`;function iT(e){return e.map(encodeURIComponent).join(`/`)}function aT(e){return e.length===0?[]:e.split(`/`).map(decodeURIComponent)}function oT(e){return`${Fw}://${Iw}/${e.map(e=>`e=${encodeURIComponent(`${e.verb}/${iT(e.args)}`)}`).join(`&`)}`}function sT(e){return new te(e).getAll(`e`).map(dT)}const cT=new Set([Lw,Yw]);function lT(e){return e.reduce((e,t)=>{let n=e.at(-1),r=n&&uT(n,t);return r?[...e.slice(0,-1),r]:[...e,t]},[])}function uT(e,t){if(e.verb!==t.verb||!cT.has(e.verb))return;let[n,r]=[dT(e.value),dT(t.value)];return n.verb===r.verb?{verb:e.verb,value:`${n.verb}/${n.value}/${r.value}`}:void 0}function dT(e){let t=e.indexOf(`/`);return t===-1?{verb:e,value:``}:{verb:e.slice(0,t),value:e.slice(t+1)}}const fT=`1.92.0`;function pT(){return c.join(f.homedir(),`.claude`,`settings.json`)}function mT(){let e=process.env.CLAUDE_CONFIG_DIR?.split(`,`)[0]?.trim();return c.join(e||c.join(f.homedir(),`.claude`),`plugins`,`installed_plugins.json`)}const hT=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/;function gT(e){let t=hT.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 _T(e){return e.join(`.`)}function vT([e,t,n],[r,i,a]){return e-r||t-i||n-a}const yT=`@promptctl/cc-candybar`;async function bT(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`?gT(n.latest):Y}catch(e){return X(e instanceof Error?e.message:String(e))}}function xT(e,t){let n=gT(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=vT(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 ST(e,t){switch(t.kind){case`current`:return{stream:`stdout`,text:`✓ cc-candybar ${_T(t.installed)} is the latest release.\n`};case`ahead`:return{stream:`stdout`,text:`cc-candybar ${_T(t.installed)} is newer than the registry's latest release (${_T(t.latest)}): an unpublished build.\n`};case`stale`:{let n=_T(t.latest);return{stream:`stderr`,text:`⚠ cc-candybar ${_T(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 CT=`CCCandybarURLHandler`,wT=[],TT={"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 ET(e){return/^[A-Za-z0-9_./=,:-]+$/.test(e)?e:`'${e.replace(/'/g,`'\\''`)}'`}function DT(e,t){return[e,...t].map(ET).join(` `)}function OT(){return c.join(f.homedir(),`Applications`,`${CT}.app`)}function kT(){if(process.platform!==`darwin`)throw Error(`URL handler installation requires macOS (found platform: ${process.platform}).`)}function AT(){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 jT(){return c.join(AT(),`bin`,`cc-candybar`)}function MT(){return c.join(AT(),`dist`,`index.mjs`)}function NT(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 PT(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=TT[`${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 IT(e,t){c.resolve(e)!==c.resolve(t)&&r.copyFileSync(e,t)}function LT(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 ${yT}@latest install`);return n.toString(`latin1`)===`#!`?`node-shim`:`native`}finally{r.closeSync(t)}}function RT(){let e=PT(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(MT()),{recursive:!0}),r.mkdirSync(c.dirname(jT()),{recursive:!0}),IT(e,MT()),IT(t.sourcePath,jT()),r.chmodSync(jT(),493),r.rmSync(c.join(AT(),`url-handler.mjs`),{force:!0});let n=LT(jT());return process.stdout.write(`Staged cc-candybar v${fT} runtime at ${AT()}\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:jT(),distPath:MT(),entryKind:n}}function zT(){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>${Fw}</string>`,` </array>`,` </dict>`,`</array>`].join(`
166
+ `)}]}function BT(e){let t=OT();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`,NT(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 zT())De({bin:`/usr/bin/plutil`,args:[`-remove`,e,i],category:`install.plutil`});for(let{key:e,xml:t}of zT()){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 ${Fw}:// 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(`✓ ${CT}.app installed and registered.\n`),process.stdout.write(` Test: open '${Fw}://hello-world' && pbpaste\n`)}function VT(){kT(),BT(RT().distPath)}function HT(e,t=Fw){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:zw,value:r}:{verb:decodeURIComponent(r.slice(0,i)),value:r.slice(i+1)}}async function UT(e){e||(process.stderr.write(`url-handle: missing URL argument.
167
+ `),process.exit(1));let t;try{t=HT(e)}catch(e){process.stderr.write(`url-handle: ${e instanceof Error?e.message:String(e)}\n`),process.exit(1)}let n=await YC(t.verb,t.value);n.kind===`ok`&&process.exit(0),n.kind===`transient`&&(_w(),process.stderr.write(`url-handle: daemon unavailable (${n.cause}: ${n.message})\n`),process.exit(1)),process.stderr.write(WT(n)+`
168
+ `),process.exit(1)}function WT(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 GT(){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 (${mc} by\n default) for quick actions, preset switching, edit mode, and clickable\n theme/look/style/wrap/padding controls.\n`}async function KT(e){let t=e.includes(`--force`),n=e.filter(e=>e!==`--force`),r=n.length>0?n:[...wT],i=RT();process.platform===`darwin`?BT(i.distPath):process.stdout.write(`Skipping URL handler (cmd-click verbs are macOS-only).
171
+ `),qT(i.binPath,r,t),process.stdout.write(GT());let a=ST(yT,xT(fT,await bT(yT,fetch,`https://registry.npmjs.org`)));process[a.stream].write(a.text)}function qT(e,t,n,i){let a=i??pT();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,ET(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:DT(e,t)},Ae(a,JSON.stringify(o,null,2)),process.stdout.write(`Updated ${a}\n`)}function JT(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 YT(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 XT(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 ZT(e,t){let n=YT(e);if(n.kind===`owned`&&n.pid===t)try{r.unlinkSync(e)}catch{}}function QT(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 $T(e,t,n,r){let i=eE(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 eE(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 tE(e){let t=!1;function n(){let n=$T(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 nE(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 rE(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 iE(e,t=nE){let n=t(e);return n.kind===`start`?n.token:null}const aE=`CC_CANDYBAR_PARENT_PID`;function oE(e){let t=e[aE];if(t===void 0)return{kind:`outlives-nobody`};let n=Number.parseInt(t,10);if(!Number.isInteger(n)||n<=0)throw Error(`${aE} must be a positive integer pid, got ${JSON.stringify(t)}`);return{kind:`anchored`,pid:n}}function sE(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 cE(e){try{return t.kill(e,0),!0}catch(e){return e.code===`EPERM`}}function lE(){let e=Number(process.env.CC_CANDYBAR_DAEMON_CEILING??``);return Number.isInteger(e)&&e>0?e:16}function uE(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 dE(e){try{return r.readdirSync(e).filter(e=>e.endsWith(`.json`)).map(t=>c.join(e,t))}catch{return[]}}function fE(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 pE(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 mE(e){if(!e.isolated)return{decision:uE(!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=uE(!0,pE(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 hE(e,t,n,r){let i=n(e);if(i!==null&&i.pid===t)try{r(e)}catch{}}function gE(e,t={}){return{isolated:!!process.env.CC_CANDYBAR_SOCKET,registryDir:Ve(),ceiling:lE(),pid:process.pid,startTime:e,isSameLiveProcess:(e,t)=>rE(e,t,{readStartTime:nE,pidAlive:cE}),listFiles:dE,readEntry:fE,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 _E(e){return e<32||e===127||e>=128&&e<=159}function vE(e){let t=``;for(let n of e)t+=_E(n.codePointAt(0)??0)?` `:n;return t.replace(/\s+/g,` `).trim()}function yE(e,t){let n=vE(e),r=``,i=0;for(let e of n){if(i===t)return r.replace(/.$/u,`…`);r+=e,i++}return r}const bE=`\x1B[38;2;255;255;255m`,xE=`\x1B[48;2;200;40;40m`;function SE(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 CE={fg:SE(bE),bg:SE(xE)},wE={fg:SE(`\x1B[38;2;0;0;0m`),bg:SE(`\x1B[48;2;220;160;40m`)},TE={unicode:gi,ascii:{glyph:`>`,divider:`|`,lead:`<`,tail:`>`}},EE={unicode:{},ascii:{left:`(`,right:`)`}};function DE(e,t,n){switch(e){case`capsule`:return new vi(EE[t]);case`plain`:return new yi(n===void 0?{}:{separator:n});case`powerline`:return new _i(TE[t]);default:return e}}const OE=new Map;function kE(e){let t=JSON.stringify([e.style,e.charset,e.separator??null]),n=OE.get(t);if(n!==void 0)return n;let r=DE(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 OE.set(t,s),s}function AE(e){return kE(e).chrome}function jE(e){return kE(e).seam}function ME(e,t){if(e.length===0)return``;let n=DE(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 NE(e){return Math.min(20,e??20)}const PE={heading:`ERROR`,glyph:`⚠`,colors:CE},FE={heading:`WARNING`,glyph:`⚠`,colors:wE},IE={heading:`UPDATE`,glyph:`⬆`,colors:wE};function LE(e,t){return{text:vE(e),link:t}}function RE(e,t,n){let[r,...i]=[zE(e,PE,Hw),t,zE(n,FE,Uw)].flat();return r===void 0?null:{channels:[r,...i]}}function zE(e,t,n){let r=oT([{verb:n,args:[e]}]),[i,...a]=e.split(/\r\n|\r|\n/).map(e=>LE(e,r)).filter(e=>e.text!==``).map(e=>[e]);return i===void 0?[]:[{severity:t,message:e,lines:[i,...a]}]}function BE(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=HE(r),a=t.channels.flatMap(e=>UE(e,i)),o=n.failedConfigFile!==null||a.length>r.rowCap,s=a.slice(0,r.rowCap-Number(o)),c=o?[WE(t,n,a.length-s.length,i)]:[],l=[...s,...c].join(`
174
+ `);return e?`${l}\n${e}`:l}function HE(e){return{style:`plain`,separator:``,width:e.width,wrap:!0,padding:0,charset:`unicode`,colorCompatibility:e.colorCompatibility}}function UE(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)=>ME([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 WE(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: ${vE(a.reason)}`,s)]:[],u=o===null?[]:[c(`${l.length>0?` · `:``}open `,s),c(vE(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,ME([m],r)}const GE=e=>!e.startsWith(`.`)&&!e.endsWith(`~`);function KE(e,t){return t.isSymbolicLink()?Buffer.from(r.readlinkSync(e)):r.readFileSync(e)}function qE(e,t){return r.readdirSync(t).filter(GE).sort().flatMap(n=>{let i=c.join(t,n),a=r.lstatSync(i,{throwIfNoEntry:!1});return a===void 0?[]:a.isDirectory()?qE(e,i):[[c.relative(e,i).split(c.sep).join(`/`),KE(i,a)]]})}function JE(e){let t=ae.createHash(`sha256`);for(let[n,r]of qE(e,e))t.update(n).update(`\0`).update(r).update(`\0`);return t.digest(`hex`)}const YE=e=>e.slice(0,7);function XE(e){return c.dirname(c.dirname(e))}function ZE(){return{version:fT,digest:`3a46aeb99bd170c274920faf3250390e55e65cdbea28ae18be4a4788ea4312e5`}}function QE(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 $E(e,t){try{let n=XE(ne(e)),i=c.join(n,`src`);if(!r.existsSync(i))return{kind:`not-source-checkout`};let a=t(),o=JE(i);return o===a.digest?{kind:`current`,root:n,stamp:a}:{kind:`stale`,root:n,source:{version:QE(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 eD(e){return e.op===`remove`?`remove:${e.target}`:`insert:${e.segment}:${e.anchor}:${e.relation}`}function tD(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 nD(e,t,n){let r=as(e,new Set(n.map(is).filter(e=>e.includes(t)).flat()));return r===e?{seg:e}:{seg:e,id:r}}const rD=/^-?\d+$/;function iD(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 aD(e){return t=>{if(!t)return{ok:!1,reason:`${e} value is required`};if(!rD.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 oD(e,t,n){return r=>r?rD.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 sD(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=>!rD.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 cD(e){return e===`config`?`set-config`:`set-state`}function lD(e,t,n){return t.kind===`int`?aD(`menu page "${e}"`):t.kind===`range`?oD(t.min,t.max,`${n} stepper "${e}"`):iD(t.allowed,`${n} "${e}"`,cD(n))}function uD(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:sD(e,n,t)}))}function dD(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=sD(e,[...a.specs,i],t);a.specs.push(i),a.merged=n,a.validator=lD(e,n,t)}else{let r=sD(e,[i],t);n.set(e,{permanent:!1,specs:[i],merged:r,validator:lD(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=sD(e,r.specs,t),r.validator=lD(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 fD=dD({},`config`);function pD(){return fD.listKeys()}function mD(e,t){return fD.validate(e,t)}function hD(e){return fD.rangeParamsFor(e)}function gD(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:Gy(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:[eD({op:`remove`,target:e.removeSegment})]}}]:`insertSegment`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:[eD({op:`insert`,segment:e.insertSegment,anchor:e.anchor,relation:e.relation})]}}]:`insertSegmentFrom`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:Gy(e.insertSegmentFrom,t).members.map(t=>eD({op:`insert`,segment:t,anchor:e.anchor,relation:e.relation}))}}]:[{key:e.persist,spec:{kind:`range`,min:e.min,max:e.max}}]:[]}function _D(e,t){let n=Kc(e.globals).get(t);return n===void 0?null:String(n)}function vD(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?Zy(n.persist):null;e?.scope===`preset-root`&&t.add(Yy(e.preset))}return[...t].map(e=>({key:e,spec:{kind:`allow-list`,allowed:[]}}))}function yD(e){let t=new Map([...Uy(e),...hb(e)]);return[...vD(e),...Object.values(e.actions).flatMap(e=>gD(e,t))]}function bD(e){return uD(yD(e),`config`)}function xD(e,t){return fD.register(e,t)}const SD=`trimPrefix "/" (trimPrefix .project_dir .current_dir)`,CD=`{{ \$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 (${SD}) (basename .project_dir) (ne (${SD}) "") }}{{ end }}{{ end }}{{ abbreviatePath \$dir }}`,wD={globals:{palette:`tokyo-night`},variables:{...xy,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:CD},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:Ub(``).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:{...Ub(``).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 .)) }}`}},TD=new Set([wD.globals.palette,...Object.values(wD.segments).map(e=>e.palette)].filter(e=>e!==void 0)),ED=uc(SC(`<default>`,JSON.stringify(wD),TD),wD),DD=Tg(ED.presets);function OD(e){return DD.includes(e)}function kD(e){if(!e)return 0;try{return o(e).mtimeMs}catch{return 0}}const AD=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 jD(e){return((...t)=>AD.run(()=>e(...t)))}const MD=jD(y),ND=jD(v),PD=jD(b);async function FD(e,t){return AD.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 ID(e,t){return AD.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 LD=/"(?:cache_read_input_tokens|cache_creation_input_tokens)":[1-9]/;function RD(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 zD(e){let t=await BD(e);return t.kind===`ok`?J(Math.floor((t.value+36e5)/1e3)):t}async function BD(e){for(let t of[65536,1048576]){let n=await ID(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||!LD.test(t))continue;let r=RD(t);if(r!=null)return r}return null}function HD(e,t,n){let r=Eg(t(`preset`),e.globals.preset,e.presets),i=kg(e,r),a=t(`edit.mode`)===`arrange`?e.editGlobals:{};return{preset:r,presetCustomized:n(r),theme:Ly(a.palette,t(`theme`),i.palette),look:Fa(a.look,t(`look`),i.look,e.looks),style:Ra(a.style,t(`style`),i.style),progression:Xa(a.progression,t(`progression`),i.progression),separator:a.default_separator??i.default_separator,autoWrap:ro(a.autoWrap,t(`autoWrap`),i.autoWrap),padding:io(a.padding,t(`padding`),i.padding),charset:Ha(a.charset,t(`charset`),i.charset),updateNotice:a.updateNotice??i.updateNotice??!0,colorCompatibility:Ka(a.colorCompatibility,t(`colorCompatibility`),i.colorCompatibility)}}function UD(e,t){return{style:e.style,separator:e.separator,colorCompatibility:e.colorCompatibility,wrap:e.autoWrap,padding:e.padding,charset:e.charset,width:t}}function WD(e){return{theme:e.theme,look:e.look,preset:e.preset,progression:e.progression}}function GD(e){return{preset:{effective:e.preset,customized:e.presetCustomized,bundled:OD(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 KD=10*1e3;function qD(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 JD(e,t){if(!(t<60))return e*3600/t}function YD(e,t,n,r){let i=r-t;if(i<50||i>KD)return;let a=n-e;if(!(a<=0))return a*1e3/i}function XD(e){let{prev:t,cur:n}=e;if(t===void 0)return;let r=YD(t.input,t.atMs,n.input,n.atMs),i=YD(t.output,t.atMs,n.output,n.atMs),a=YD(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 ZD(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>KD)continue;let o=YD(r.total,r.atMs,i.total,i.atMs);n.push(o??0)}if(n.length!==0)return n.join(`,`)}function QD(e){let t=e.indexOf(`.`);return t<0?e:e.slice(0,t)}function $D(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`,()=>QD(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 eO(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=>u_(t,e.helpers).keys();for(let n of ss(Og(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 nO(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 tO(e){let t=new Map;return n=>{let r=t.get(n);if(r!==void 0)return r;let i=eO(e,n);return t.set(n,i),i}}function nO(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 rO(e,t){for(let n of e)if(n===t||n.startsWith(t+`.`))return!0;return!1}function iO(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 aO(e,t,n,r,i,a,o){let s=e=>rO(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,iO(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`),()=>zD(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=fO(u);b.push(...S.failures);let C=$D(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=sO(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?qD(oe.used_percentage,oe.resets_at,18e6,c):void 0,le=se?qD(se.used_percentage,se.resets_at,6048e5,c):void 0,ue=ee?.session.cost,de=re?.sessionDuration,fe=s(`burn`)&&ue!=null&&de!=null?JD(ue,de):void 0,pe=x(v),me=pe===void 0?void 0:XD(pe),he=pe===void 0?void 0:ZD(pe),ge=me!==void 0||he!==void 0?{...me,...he!==void 0&&{history:he}}:void 0,E=dO(process.env.HOME??process.env.USERPROFILE),_e=e.workspace?{...e.workspace,current_dir:dO(e.workspace.current_dir)??``,project_dir:dO(e.workspace.project_dir)??``}:e.workspace,ve=ee===void 0?void 0:uO({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:uO({lastResponseTime:re.lastResponseTime,responseTime:re.responseTime,sessionDuration:re.sessionDuration,messageCount:re.messageCount,linesAdded:re.linesAdded,linesRemoved:re.linesRemoved}),xe=ie===void 0?void 0:cO(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,...GD(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 oO=e=>e.trim().split(`
177
+ `).at(-1).trim();function sO(e){switch(e.kind){case`absent`:return;case`failed`:return{error:oO(e.reason)};case`ok`:{let{ceiling:t,session:n}=e.value;return{ceiling:t===`off`?0:t,off:t===`off`,session:n??``}}}}function cO(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=lO(e.running),i=lO(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 lO(e){return e.length===0?void 0:e.map(e=>`${e.name}:${e.count}`).join(`,`)}function uO(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 dO(e){return e===void 0||e.length===0||c.sep!==`\\`?e:e.replace(/\\/g,`/`)}function fO(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 pO={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?Za:Qa,padding:e=>String(e.padding)},mO=Object.entries(Sy),hO=new Set(Cy.map(e=>e.sessionKey)),gO=()=>!1;function _O(e,t){return HD(e,e=>hO.has(e)?t(e):null,gO)}function vO(e,t,n,r){return e.flatMap(([e,i])=>{let a=pO[e](t);return a===null||a===pO[e](n(e))?[]:[{...i,value:a,target:r(i)}]})}function yO(e,t,n){return pO[n](_O(e,t))}function bO(e,t){let n=_O(e,t),r=HD(e,()=>null,gO),i=HD(e,e=>e===Sy.preset.sessionKey?n.preset:null,gO),a=Dg(e.presets,n.preset).globals??{};return vO(mO,n,e=>e===`preset`?r:i,e=>e.configKey in a?Xy(n.preset,e.configKey):e.configKey)}function xO(e,t){let{preset:n}=_O(e,t);return CO(e,n).flatMap(({id:e,setting:r,key:i,decl:a,saved:o})=>{let s=t(i),c=s===null?void 0:xs(a,s);return c===void 0||bs(c)===bs(o)?[]:[{preset:n,id:e,setting:r,key:i,value:c}]})}const SO=new WeakMap;function CO(e,t){let n=SO.get(e)??new Map;SO.set(e,n);let r=n.get(t);if(r!==void 0)return r;let i=[...ss(Og(e,t).node)].flatMap(t=>t.kind!==`segment`||t.drafts===void 0?[]:Object.entries(t.drafts).map(([n,{id:r,key:i}])=>{let a=vs(e.segments[t.name])[n];return{id:r,setting:n,key:i,decl:a,saved:t.settings?.[n]??a.default}})),a=[...new Map(i.map(e=>[e.key,e])).values()];return n.set(t,a),a}function wO(e,t){let n=_O(e,t),r=HD(e,e=>e===Sy.preset.sessionKey?n.preset:null,gO);return{from:n.preset,globals:Dg(e.presets,n.preset).globals??{},picks:vO(mO.filter(([e])=>e!==`preset`),n,()=>r,e=>e.configKey),placements:xO(e,t)}}function TO(e){return{sessionKeys:Cy.filter(t=>t.configKey===e).map(e=>e.sessionKey),fileKeys:[e,...Ic(e)?DD.map(t=>Xy(t,e)):[]]}}const EO=Ca(),DO=new Set(EO),OO=new Set(Ia),kO=e=>e?DO.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown theme "${e}" (have: ${EO.join(`, `)})`}:{ok:!1,reason:`theme name is required`},AO=e=>e?OO.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown style "${e}" (have: ${Ia.join(`, `)})`}:{ok:!1,reason:`style name is required`},jO=new Set([`1`,`true`]),MO=new Set([`0`,`false`]),NO=dD({style:AO,theme:kO,"toolbar-expanded":e=>jO.has(e)?{ok:!0,value:`1`}:MO.has(e)?{ok:!0,value:``}:{ok:!1,reason:`expected boolean-ish (1, 0, true, false), got "${e}"`}});function PO(){return NO.listKeys()}function FO(e,t){return NO.register(e,t)}function IO(e,t){return NO.validate(e,t)}function LO(e){return NO.rangeParamsFor(e)}function RO(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:Gy(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 zO(e){let t=new Set(NO.listBaselineKeys());return e.filter(e=>e.spec.kind!==`allow-list`||!t.has(e.key))}function BO(e,t,n){let r=Ey.get(n);if(r!==void 0)return yO(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 VO(e){let t=Uy(e);return zO(Object.values(e.actions).flatMap(e=>RO(e,t)))}function HO(e){return uD(VO(e))}const UO=`update.dismissed`,WO=`updateNotice`;function GO(e){return e.kind===`source`?e.newer.digest:_T(e.newer)}const KO=e=>`${e.version} [${YE(e.digest)}]`;function qO(e){switch(e.kind){case`source`:return{headline:`Newer source`,newer:KO(e.newer),running:KO(e.running),act:`rebuild`,busy:`rebuilding…`,command:{bin:`pnpm`,args:[`build`],cwd:e.root}};case`release`:return{headline:`Newer release`,newer:_T(e.newer),running:_T(e.running),act:`upgrade`,busy:`upgrading…`,command:{bin:`pnpm`,args:[`dlx`,`${yT}@${_T(e.newer)}`,`install`]}}}}const JO={kind:`idle`},YO={kind:`running`};function XO(e,t,n){if(e===null)return[];let r=GO(e);if(!n.enabled||n.dismissed===r)return[];let i=qO(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=oT([{verb:Uw,args:[s]}]),l=t.kind===`running`?LE(`[${i.busy}]`,c):LE(`[${i.act}]`,oT([{verb:$w,args:[n.sessionId]}]));return[{severity:IE,message:s,lines:[[LE(a,c),l,LE(`[dismiss]`,oT([{verb:Lw,args:[n.sessionId,UO,r]}])),LE(`[disable]`,oT([{verb:Ww,args:[n.sessionId,WO,`false`]}]))],...o.map(e=>[LE(e,c)])]}]}function ZO(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 QO(e){switch(e.kind){case`current`:return[`info`,`build: current ${KO(e.stamp)}`];case`stale`:return[`info`,`build: stale — source ${KO(e.source)}, running ${KO(e.running)}`];case`not-source-checkout`:return[`info`,`build: not a source checkout`];case`unchecked`:return[`warn`,`build: unchecked: ${e.reason}`]}}function $O(e){switch(e.kind){case`current`:return[`info`,`release: current ${_T(e.installed)}`];case`stale`:return[`info`,`release: stale — latest ${_T(e.latest)}, running ${_T(e.installed)}`];case`ahead`:return[`info`,`release: ahead — running ${_T(e.installed)}, latest ${_T(e.latest)}`];case`unchecked`:return[`warn`,`release: unchecked: ${e.reason}`]}}function ek(e){let t=null;return([n,r])=>{r!==t&&(t=r,e(n,r))}}const tk=e=>e.split(/\r?\n/).map(e=>e.trim()).filter(e=>e!==``).at(-1);function nk(e){let t=e.exitCode===null?``:` (exit ${e.exitCode})`,n=tk(e.stderr)??e.error??tk(e.stdout)??`no output`;return`${e.reason}${t}: ${n}`}function rk(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=JO,d=null,f=ek(s),p=ek(s),m=()=>ZO(c,l);function h(){let e=m(),t=e===null?null:GO(e);(d===null?null:d.identity)!==t&&(d?.dispose(),d=t===null?null:{identity:t,dispose:FO(UO,{kind:`allow-list`,allowed:[t]})})}function g(){c=$E(t,ZE),f(QO(c)),h()}async function _(){l=xT(fT,await bT(yT,a,i)),p($O(l)),h()}return{arm(){xD(WO,{kind:`allow-list`,allowed:[`false`]}),g(),setInterval(g,n).unref(),c.kind===`not-source-checkout`&&(_(),setInterval(()=>void _(),r).unref())},notice:e=>XO(m(),u,e),act(){let e=m();if(e===null)throw new $(`apply-update: nothing newer is known to apply`);let t=qO(e);if(u.kind===`running`)throw new $(`apply-update: already ${t.busy}`);u=YO,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=JO,s(`info`,`apply-update: ${t.act} succeeded`),g(),o();return}let r=nk(n);u={kind:`failed`,identity:GO(e),reason:r},s(`error`,`apply-update: ${t.act} failed: ${r}`)})}}}var ik=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 ak={"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 ok=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 ik.getUsageCache(`pricing`,e)}static async saveDiskCache(e){await ik.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(ak).length} models`),this.executionCache=ak,E(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(ak).length} models`),ak)}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 sk=/<command-name>\s*([^<\s][^<]*?)\s*<\/command-name>/;function ck(e){if(typeof e==`string`)return sk.exec(e)?.[1]}function lk(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 uk(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=lk(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?ck(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 dk(){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 fk(e){let t=[];for(let n of e){let e=d(n,`projects`);if(a(e))try{let n=await MD(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 pk(e,t,n){let r=[],i=d(t,e,`subagents`);try{let t=(await MD(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 ND(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 mk(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 hk=new Map;async function gk(e){try{let t=await PD(e),n=t.size,r=hk.get(e);if(r&&r.mtime===t.mtimeMs&&r.size===n)return E(`[parse-cache] hit ${e}`),hk.delete(e),hk.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 xk(e)):i=await yk(e),E(`Parsed ${i.length} entries from ${e}`),n>5242880?i:(hk.delete(e),hk.size>=16&&hk.delete(hk.keys().next().value),hk.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 _k(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:uk(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 vk(e){let t=[];for(let n of e.split(`
180
+ `))if(n.trim())try{let e=_k(JSON.parse(n));e&&t.push(e)}catch(e){E(`Failed to parse JSONL line: ${e}`);continue}return t}async function yk(e){return vk(await ND(e,`utf-8`))}async function bk(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:vk(r.subarray(0,c+1).toString(`utf-8`)),cursor:{offset:i+c+1,mtimeMs:a,ino:o},reset:s})}async function xk(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=_k(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 Sk=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 Ck(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 wk={cost:0,input:0,output:0,cacheCreation:0,cacheRead:0},Tk={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 Dk(){let e=new Date;return e.setHours(0,0,0,0),e.setDate(e.getDate()-1),e.getTime()}function Ok(){return{input:0,output:0,cacheCreation:0,cacheRead:0}}async function kk(e,t,n,r){let i=Ek(new Date(Dk())),a=e&&!t?e:void 0,o=a?.entries??0,s=a?.cost??0,c=a?{...a.breakdown}:Ok(),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 ok.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)??{...wk};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 Ak(e){let t=0,n=0,r=Ok(),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)??{...wk};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:Tk,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 jk(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 Mk=class{entries=new Map;flight=new Sk;seeded=new Map;speedRings=new Map;speedFlight=new Sk;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:Tk,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={...wk},i=!1;for(let e of this.entries.values()){i||=e.days.has(t);let n=e.days.get(t)??wk;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=kD(t);return this.speedFlight.run(`${e}:${r}`,async()=>{let i=await this.ingest(e,t,r);if(i.kind===`failed`)return i;let a=Ck(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??kD(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 pk(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 bk(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 kk(r,l,s,c)),e===t&&(a=c.mtimeMs)}return J({files:i,...Ak(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=Dk(),n=await fk(dk()),r=[];for(let e of n){let n;try{n=await MD(e)}catch{continue}for(let i of n){if(!i.endsWith(`.jsonl`))continue;let n=d(e,i),a;try{a=(await PD(n)).mtimeMs}catch{continue}a<t||r.push({sessionId:i.slice(0,-6),path:n,mtime:a})}}await jk(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 Nk(e,t){return e===void 0?!0:e.evaluate(t).map(e=>e.plain).join(``)!==`false`}function Pk(e,t){let n=V.fromFragments(e);return n.end=``,n.noWrap=!0,t!==void 0&&!t.isNull&&(n.style=t),n}function Fk(e,t,n){e.cellLength>t?e.truncate(t,{mode:n.truncate,marker:n.truncateMarker}):e.cellLength<t&&e.align(n.justify,t)}function Ik({text:e,trail:t}){if(t===void 0)return e;let n=Pk([e,t]);return n.style=e.style,n}function Lk(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=Pk(e,o).pad(s),u=c.length===0?{}:{trail:Pk([...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}]:(Fk(l,n,d),[{text:l,...u}])}const Rk=RegExp(`\\x1b\\[[0-9;]*m|${Yr.source}`,`g`);function zk(e){return O(e.replace(Rk,``))}function Bk(e,t){let n=e.map(Ik),r=[];if(e.forEach(({fill:e},t)=>{e!==void 0&&r.push({at:t,how:e})}),r.length===0||!Number.isFinite(t.width))return n;let i=ME(n,t).split(`
181
+ `);if(i.length>1)return n;let a=Math.max(0,t.width-zk(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];Fk(l,l.cellLength+c,i),n[t]=Ik(e[t])}),n}function Vk(e,t){let n=[],r=[],i=()=>{if(!r.length)return;let e=Hk(r,t);e.plain.length>0&&n.push(e),r=[]};for(let a of e)if(Wk(a.style).link){i();let e=Hk([a],t);e.plain.length>0&&n.push(e)}else r.push(a);return i(),n}function Hk(e,t){let n=t!==void 0&&!t.isNull?e.map(e=>Uk(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 Uk(e,t){let n=e.copy();return n.style=t.add(Wk(e.style)),n}function Wk(e){return e instanceof z?e:z.parse(e)}var Gk=class extends Error{constructor(e,t,n){super(`Invalid ${t} color ${JSON.stringify(e)}: ${n}`),this.name=`ColorSpecError`}};function Kk(e,t,n,r,i){let{palette:a,tint:o}=e,s=qk(n,i),c=s===void 0?o:Jk(a,s,`bg`);e.bg=c;let l=qk(r,i),u=l===void 0?ea(a,c,t):Jk(a,l,`fg`);return new z({bgcolor:N.fromRgba(c),color:N.fromRgba(u)})}function qk(e,t){if(e!==void 0)return e.evaluate(t).map(e=>e.plain).join(``)}function Jk(e,t,n){try{return Hn(e,t)}catch(e){throw e instanceof zn?new Gk(t,n,e.message):e}}function Yk(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,Xk(e,t,o,n,r,i));return i}function Xk(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=Gy(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=wy.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=Gy(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=Gy(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:Qk(e,n.copy,t)};if(`open`in n)return{kind:`open`,target:Qk(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:Zx(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:Qk(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 Zk(e){return e.kind===`do`?Zk(e.head):e}function Qk(e,t,n){try{return e(t)}catch(e){throw Error(`Template parse error in actions.${n}: ${e.message}`,{cause:e})}}function $k(e,t){return e.has(t)?C_(e.read(t)):``}function eA(e,t){return e.evaluate(t).map(e=>e.plain).join(``)}function tA(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 nA(e,t){return Math.max(e.members.indexOf($k(t,e.stateVar)),0)}function rA(e,t,n,r,i){switch(e.kind){case`set-literal`:{let t=$k(r,e.stateVar);return{effects:[{verb:Lw,args:[i,e.key,e.value]}],active:t===e.value}}case`set-option`:{let a=n??t,o=$k(r,e.stateVar);return{effects:[{verb:Lw,args:[i,e.key,a]}],active:o===a}}case`set-int`:{let a=n??t,o=$k(r,e.stateVar);return{effects:[{verb:Lw,args:[i,e.key,a]}],active:o===a}}case`set-cycle`:{let t=e.members[(nA(e,r)+1)%e.members.length];return{effects:[{verb:Lw,args:[i,e.key,t]}],active:!1}}case`set-bounded`:return{effects:[{verb:Rw,args:[i,e.key,String(e.by)]}],active:!1};case`copy`:return{effects:[{verb:zw,args:[eA(e.text,mv(r))]}],active:!1};case`open`:return{effects:[{verb:Bw,args:[eA(e.target,mv(r))]}],active:!1};case`persist-literal`:{let t=$k(r,e.stateVar);return{effects:[{verb:Ww,args:[i,e.key,e.value]}],active:t===e.value}}case`persist-option`:{let a=n??t,o=$k(r,e.stateVar);return{effects:[{verb:Ww,args:[i,e.key,a]}],active:o===a}}case`persist-cycle`:{let t=e.members[(nA(e,r)+1)%e.members.length];return{effects:[{verb:Ww,args:[i,e.key,t]}],active:!1}}case`persist-bounded`:return{effects:[{verb:Gw,args:[i,e.key,String(e.by)]}],active:!1};case`reset`:return{effects:[{verb:Yw,args:[i,e.key]}],active:!1};case`undo`:return{effects:[{verb:Zw,args:[i]}],active:!1};case`redo`:return{effects:[{verb:Qw,args:[i]}],active:!1};case`save`:return{effects:[{verb:Kw,args:[i]}],active:!1};case`preset-save`:return{effects:[{verb:qw,args:[i]}],active:!1};case`preset-delete`:return{effects:[{verb:Jw,args:[i,eA(e.name,mv(r))]}],active:!1};case`doctor-run`:return{effects:[{verb:eT,args:[i]}],active:!1};case`doctor-fix`:return{effects:[{verb:tT,args:[i,e.check]}],active:!1};case`ceiling`:return{effects:[{verb:nT,args:[i,...e.args]}],active:!1};case`slash`:return{effects:[{verb:rT,args:[i,e.line]}],active:!1};case`layout-op`:return{effects:[{verb:Xw,args:[i,e.key,eD(e.op)]}],active:!1};case`do`:{let a=rA(e.head,t,n,r,i);return{effects:[...a.effects,...e.rest.flatMap(e=>rA(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:Xw,args:[i,e.key,eD(r)]}],active:!1}}}}function iA(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:gc(`action "${e}"`,n,t.members.length,nA(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 aA(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}=iA(e,Zk(r),t,i),{effects:s,active:c}=rA(r,a,o,i,$k(i,`session.id`));return tA(a,oT(s),c)}function oA(e){return{action:{fn:(t,...n)=>aA(t,n,e),argTypes:[`string`,`string`],returnType:`T`}}}function sA(e,t){return tA(`✕`,oT([{verb:Lw,args:[$k(e,`session.id`),t,pc]}]),!1)}function cA(e,t,n){return new z({bgcolor:N.fromRgba(t),color:N.fromRgba(ea(e,t,n))})}function lA(e,t,n){return cA(e.palette,pa(e.palette,e.disclosure,[t],n),n)}function uA(e,t,n,r,i){return r===void 0?n=>lA(e,{...n,distribution:t},i):(e,t)=>dA(r(t,n),i)}function dA(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 fA(e){return{current:null,drawnAt:e}}function pA(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 mA(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 hA(e){return new V(e).cellLength}function gA(e){return Math.max(1,e.width-e.chromeCols-2*e.padding)}function _A(e){return Math.max(1,gA(e)-(hA(`✕`)+2*e.padding+e.seamCols))}function vA(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 yA(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 bA(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 xA(e,t,n){let r=e.compiled.get(t),i=r&&Zk(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 SA(e,t,n,r,i,a,o){let s=xA(a,e,`picker`),c=a.compiled.get(e),l=a.store,u=$k(l,`session.id`),d=`stateVar`in s?$k(l,s.stateVar):void 0,f=s.options.map(hA),p=i?gA(a):1/0,m=hA(`✕`)+1,h=hA(`←`)+1+hA(`→`)+1,g=vA(f,p,m),_=g.length>1?vA(f,p,m+h):g,v=parseInt($k(l,t.stateVar),10),y=Number.isInteger(v)?Math.max(0,Math.min(v,_.length-1)):0,b=_[y]??[],x=e=>oT([{verb:Lw,args:[u,t.key,String(e)]}]),S=n.flatMap(([e,t])=>[e,t]),C=oT([{verb:Lw,args:[u,...S]}]),ee=r?[{verb:Lw,args:[u,...S]}]:[],te=e=>oT([...rA(c,e,e,l,u).effects,...ee]),ne=[tA(`✕`,C,!1)];y>0&&ne.push(tA(`←`,x(y-1),!1));for(let e of b){let t=s.options[e];ne.push(tA(t,te(t),t===d,o({index:e,count:s.options.length},t)))}return y<_.length-1&&ne.push(tA(`→`,x(y+1),!1)),yA(ne,i)}function CA(e,t){return{picker:{fn:(n,r,i,a)=>{let o=bA(e,r,`set-int`,`an int action ({ set, int: true })`);return SA(n,{key:o.key,stateVar:o.stateVar},[[o.key,`-1`]],i===!0,a===!0,e,uA(mA(t,`{{ picker }}`),Ri(void 0),e,xA(e,n,`picker`).paletteOf,t.drawnAt()))},argTypes:[`string`,`string`,`bool`,`bool`],returnType:`T`}}}function wA(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+hA(e(-(s+1)))+1+hA(e(s+1))+1;if(t>r)break;o=t,s+=1}return s}function TA(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=$k(a,`session.id`),{options:c}=t,l=c.length,u=$k(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=oT(rA(o,p(e),p(e),a,s).effects);return m.set(e,n),n},g=e=>tA(p(e),h(e),p(e)===u,r({index:f(e),count:l},p(e))),_=wA(p,l,hA(`◀`)+1+hA(p(0))+1+hA(`▶`),_A(n),i),v=e=>Array.from({length:_},(t,n)=>g(e*(n+1)));return yA([...v(-1).reverse(),tA(`◀`,h(-1),!1),g(0),tA(`▶`,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=xA(e,n,`carousel`);return TA(n,o,e,uA(mA(t,`{{ carousel }}`),Ri(void 0),e,o.paletteOf,t.drawnAt()),a)},argTypes:[`string`,`float`],returnType:`T`}}}const DA=[`~/code`,`main`,`opus`,`42%`,`5m`,`$1.20`];function OA(e,t,n){let r=oa(e,{hue:ji,depth:0},n);return[H(t).map((t,n)=>({text:DA[n%DA.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 kA(e,t,n,r){let i=OA(e,t,n).flatMap((t,r)=>t.map(({text:t,colour:i},a)=>({gap:r>0&&a===0?` `:``,cell:new V(` ${t} `,{style:cA(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 AA(e,t){return{themePreview:{fn:()=>kA(e.palette,e.progression,t.drawnAt(),_A(e)),argTypes:[],returnType:`T`}}}const jA=e=>e.slice(e.lastIndexOf(`.`)+1),MA=(e,t)=>{let n=new V(jA(e));return n.truncate(t,{marker:`…`}),n.plain};function NA(e,t){let n=e.map(e=>e.map(({name:e})=>hA(jA(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 PA(e,t,n,r){let i=NA(e,r),a=e.map(e=>{let a=[],o=0;for(let{name:s,address:c,palette:l}of e){let e=new V(` ${MA(s,i)} `,{style:cA(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 FA(e,t){return{layoutPreview:{fn:()=>PA(e.layout(),e.progression,t.drawnAt(),_A(e)),argTypes:[],returnType:`T`}}}function IA(e,t,n,r){let i=mA(r.activeSegment,`{{ menu }}`),a=r.action,o=hg(i.placementId,e,n.key),s=vg(o),c=mg(e),l=$k(a.store,o)===c,u=$k(a.store,`session.id`),d=l?pc:c,f=tA(gc(`{{ menu "${e}" }}`,t,2,+!!l),oT([{verb:Lw,args:[u,o,d,s,`0`]}]),!1);return i.drops.push(...l?[SA(e,{key:s,stateVar:s},[[o,pc],[s,`0`]],n.closeOnPick,n.paged,a,uA(i,n.distribution,a,xA(a,e,`menu`).paletteOf,r.activeSegment.drawnAt()))]:[]),f}const LA=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function RA(e,t){let n=t[t.length-1],r=LA(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:Sg(r??{})}}function zA(e){return{menu:{fn:(t,...n)=>{let{displays:r,options:i}=RA(t,n);return IA(t,r,i,e)},argTypes:[`string`,`value`],returnType:`T`}}}function BA(e){let{value:t,max:n,width:r,filled:i,empty:a,colourAt:o}=e,s=VA(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 VA(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 HA(e){let t={fn:(()=>{let t=mA(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:(()=>mA(e,`{{ tint }}`).tint.hex),argTypes:[],returnType:`string`},r=Y_(()=>mA(e,`{{ color }} / {{ ramp }} / {{ gauge }}`).palette),i={fn:((e,t,n,i,a,o,...s)=>BA({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,...UA(s)))})),argTypes:[`float`,`float`,`int`,`string`,`string`,`string`,`string`],returnType:`T`};return{...r,bgOf:t,tint:n,gauge:i}}function UA(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 WA(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 GA=({text:e,trail:t})=>t===void 0?[e]:[e,t];function KA(e,t){switch(e){case`vertical`:return JA(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))]:JA(e)}}}function qA(e,t){let n=(e,r)=>t(e)?e.kind===`segment`?[{cells:[{name:e.name,address:r,settings:e.settings}],band:`own`,span:`shared`}]:KA(e.direction,e.children.map((t,i)=>n(t,[...r,YA(e,i)]))):[];return n(e,[]).map(e=>[...e.cells])}function JA(e){return e.map(e=>e.span===`row`?{...e,span:`shared`}:e)}function YA(e,t){return{index:t,count:e.children.length,distribution:e.distribution,axis:ns[e.direction]}}const XA={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,cs(t.path,n)))}},render(e,t){return KA(e.direction,e.children.map((n,r)=>t.renderChild(n,t.visible,YA(e,r))))}},ZA={compile(e,t){return{kind:`segment`,when:t.when,name:e.name,id:rs(e),settings:t.placementSettings(e),...e.opens!==void 0&&{opens:{open:t.parse(yc(e.opens.ref),`opens`),body:t.compileChild(e.opens.body,ls(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=gv(t.scope,e.settings);try{if(!Nk(i.when,a))return[];let n=My(e.settings.theme,t.palette),{styles:o,fragments:s,trail:c,drops:l}=t.evaluateSegment(e,a,n,t.region,{bg:i.bg,fg:i.fg,body:i.template,trail:e.trail}),u=e.opens!==void 0&&Nk(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`)?Lk(Vk([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=WA(Vk(s,d)).map((e,t)=>({cells:Lk(e,{...f,trail:t===0?Vk(c,d):[]}),band:`own`,span:`shared`})),b=l.map(e=>({cells:Lk(Vk([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(GA)),[...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:Lk([new V(`⚠ ${e.id}: ${i}`,{end:``})],{width:`auto`,justify:`left`,truncate:`right`,padding:0,trail:QA(e,a,t)}),band:`own`,span:`shared`}]}}};function QA(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 $A={container:XA,segment:ZA};function ej(e){return $A[e]}function tj(e){if(`ttl`in e)return{kind:`ttl`,durationMs:ry(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 nj(e,t){switch(fs(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 rj(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:tj(n.cache),parse:nj(n.parse,n.default)});break;case`shell`:e.declareShell(t,n.command,{cache:tj(n.cache),parse:nj(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?ry(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 ij(e,t){let n=nd.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 aj=e=>Xa(void 0,null,e.globals.progression);function oj(e,t,n){let r=n?.cwd??process.cwd(),i=zy(e.globals.palette),a={store:t.variableStore,compiled:new Map,chromeCols:AE({style:`powerline`,charset:Ba}),width:80,basePalette:i,palette:i,progression:Ai[aj(e)],padding:1,seamCols:jE({style:`powerline`,charset:Ba}),layout:()=>[]},o=fA(t.drawnAt),s={action:a,activeSegment:o},c=Object.keys(e.looks),l=Tg(e.presets),u=new Map([...Uy(e),...hb(e)]),d=pv({...oA(a),...CA(a,o),...EA(a,o),...AA(a,o),...FA(a,o),...zA(s),...HA(o),looks:{fn:()=>c,argTypes:[]},presets:{fn:()=>l,argTypes:[]}},n?.clock,t.drawnAt),f=ij(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 Ty)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=Yk(p,e.actions,g,u);let _=[];for(let[n,i]of Object.entries(e.variables))try{rj(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{rj(t,`${n}.${e}`,a,r)}catch(t){_.push(`Variable "${n}.${e}": ${t.message??String(t)}`)}let v=Object.create(null);for(let[t,n]of Object.entries(e.segments)){let e=(e,n,r=p)=>{try{return r(e)}catch(e){throw Error(`Template parse error in segments.${t}.${n}: ${e.message}`,{cause:e})}};v[t]={when:n.when===void 0?void 0:e(n.when,`when`,h),template:e(n.template,`template`),bg:n.bg===void 0?void 0:e(n.bg,`bg`),fg:n.fg===void 0?void 0:e(n.fg,`fg`)}}let y=(e,t,n)=>{try{return h(e)}catch(e){throw Error(`Template parse error in ${t}.${n}: ${e.message}`,{cause:e})}},b=t.variableStore,x=t=>{let n=vs(e.segments[t.name]),r=Object.create(null);for(let[e,i]of Object.entries(n)){let n=t.settings?.[e]??i.default,a=t.drafts?.[e];Object.defineProperty(r,e,{enumerable:!0,get:a===void 0?()=>n:()=>xs(i,String(b.read(a.variable)))??n})}return Object.freeze(r)},S=(e,t)=>{let n={path:t,when:e.when===void 0?void 0:y(e.when,t,`when`),parse:(e,n)=>y(e,t,n),compileChild:S,placementSettings:x};return ej(e.kind).compile(e,n)},C=new Map;for(let t of l){let{node:n,path:r}=Og(e,t);C.set(t,S(n,r))}let ee=new Map;for(let t of Oa){let n=e.globals[t];ka(n)&&ee.set(t,sj(p,t,n))}return{segments:v,roots:C,activeSegment:o,menuRuntime:s,globalExpressions:ee,loadWarnings:_}}function sj(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 cj(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 lj(e,t){return e.kind===`decided`?e.name:t}function uj(e,t,n,r,i,a,o,s){let{perSegmentSink:c,onSegmentError:l,onRenderWarning:u}=o??{};r.drawAt(qa(a.colorCompatibility));let{preset:d=Cg}=s??{},f=Ai[s?.progression??aj(e)];t.menuRuntime.action.progression=f;let p=s?.look??Pa(`none`,e.looks),m=s?.theme??Ly(void 0,null,e.globals.palette),h=(e,t)=>({...i,term:{cols:a.width},theme:{effective:e},look:{effective:t}});r.applyInput(h(lj(m,ba),lj(p,Ma))),t.menuRuntime.action.chromeCols=AE(a),t.menuRuntime.action.padding=a.padding,t.menuRuntime.action.width=a.width,t.menuRuntime.action.seamCols=jE(a);let g=mv(n),_=ja(m,()=>cj(t,`palette`,g),e=>Iy(e,e=>u?.(e))),v=ja(p,()=>cj(t,`look`,g),t=>Pa(t,e.looks));(_!==m||v!==p)&&r.applyInput(h(_.name,v.name));let y=_.value;t.menuRuntime.action.basePalette=y;let b=Py(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=pA(t.activeSegment,e.name,e.id,i,l,c),d=Kk(u,s,o.bg,o.fg,n),f=o.body.evaluate(n),p=o.trail?.evaluate(n)??[];return{styles:{closed:d,get trigger(){return cA(i,oa(i,l,s).state,s)},get band(){return cA(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&&Nk(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=>sA(n,e)};return ej(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 "${Cg}"; a miss here is merge/policy drift (have: ${[...t.roots.keys()].join(`, `)})`);let te=e=>{if(!Nk(e.when,g))return!1;if(e.kind===`container`)return!0;if(Tb(e.name)===void 0)return!1;try{return Nk(t.segments[e.name].when,gv(g,e.settings))}catch{return!0}};return t.menuRuntime.action.layout=()=>qA(ee,te).map(e=>e.flatMap(({name:e,address:t,settings:n})=>{let r=Tb(e);return r===void 0?[]:[{name:r,address:t,palette:My(n.theme,b)}]})),C(ee,!0,ma(f)).map(e=>ME(Bk(e.cells,a),a)).join(`
185
+ `)}var dj=class{kind=`box`;cell;lastChangedAt;constructor(e,t,n){this.name=e,this.type=t,_j(e,t,n,`initial value`),this.cell=b_.observable.box(n,{deep:!1}),this.lastChangedAt=Date.now()}read(){return this.cell.get()}set(e){_j(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}},fj=class{kind=`computed`;cell;constructor(e,t,n){this.name=e,this.type=t,this.cell=(0,b_.computed)(()=>{let e=n();return _j(this.name,this.type,e,`computed result`),e},{keepAlive:!0})}read(){return this.cell.get()}lastUpdatedMs(){return null}},pj=class{kind=`document`;cell;lastChangedAt;constructor(e,t){this.name=e,this.cell=b_.observable.box(gj(t),{deep:!1}),this.lastChangedAt=Date.now()}read(){return this.cell.get()}set(e){let t=gj(e);hj(this.cell.get(),t)||(this.cell.set(t),this.lastChangedAt=Date.now())}lastUpdatedMs(){return this.lastChangedAt}};function mj(e){return JSON.stringify(e)}function hj(e,t){return mj(e)===mj(t)}function gj(e){return e.kind===`ok`?{kind:`ok`,value:x_(e.value)}:e}function _j(e,t,n,r){let i=S_(n);if(i!==t)throw TypeError(`Variable "${e}": ${r} type ${i} does not match declared type ${t}`)}var vj=class{nodes=new Map;defineBox(e,t,n){this.assertNotDefined(e),this.nodes.set(e,new dj(e,t,n))}defineDocument(e,t){this.assertNotDefined(e),this.nodes.set(e,new pj(e,t))}defineComputed(e,t,n){this.assertNotDefined(e);let r=e=>this.read(e);this.nodes.set(e,new fj(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,b_.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,b_.runInAction)(()=>n.set(t))}runInAction(e){(0,b_.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 mj(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 yj(e,t,n){return e+`\0`+t+`\0`+(n??``)}function bj(e,t){return new Set(Tg(e.presets).filter(n=>Og(e,n).path===`root`?t.root!==void 0:t.presets?.[n]?.root!==void 0))}function xj(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 Sj(e,t){let n=new Map;for(let t of dC(e.projectDir,e.cwd,e.configFile)){let{dir:e,name:r}=xj(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 Cj(e){return e.filter(Boolean).join(`
186
+ `)||null}var wj=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=yj(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=pC(e,t,n),i=r.kind===`file`?r.path:null,a=[_C(e,t),hC(r)],o;try{o=this.buildState(t,i,a)}catch(e){return e instanceof Xo&&a.push(...e.warnings),{resolvedPath:i,warning:Cj(a),state:null,error:e instanceof Xo||e instanceof Error?e.message:String(e)}}return{resolvedPath:i,warning:Cj(a),state:o,error:null}}buildState(e,t,n){let r=vC(t,ED),{config:i,raw:a}=r;n.push(...r.warnings);let o=xC(r,t??`<default>`),s=new vj,c=new by(s,o.globals.default_empty_value??``,this.deps.gitService,this.deps.sessionState),l,u=[];try{l=oj(o,c,{cwd:e}),n.push(...l.loadWarnings);for(let{key:e,spec:t}of HO(o))u.push(FO(e,t));for(let{key:e,spec:t}of bD(o))u.push(xD(e,t))}catch(e){for(let e of u)e();throw c.dispose(),e}return{config:o,store:s,registry:c,compiled:l,neededInputPaths:tO(o),lastRenderCellsBySegment:new Map,validatorDisposers:u,authoredRoots:bj(i,a)}}refreshWatcher(e,t){e.configFilePath=t;let n=Sj(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 Tj=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<Tj){this.rollingTimestamps.push(e);return}this.rollingTimestamps[this.rollingHead]=e,this.rollingHead=(this.rollingHead+1)%Tj}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:fT,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 Dj={load:()=>({}),save:()=>{},flush:()=>{}};function Oj(e){let t=new Map;for(let[n,r]of Object.entries(e))t.set(n,new Map(Object.entries(r)));return t}var kj=class{sessions;storage;atom=(0,b_.createAtom)(`SessionState`);constructor(e=Dj,t=256){this.maxSessions=t,this.storage=e,this.sessions=new Map,this.hydrateFromStorage()}useStorage(e){this.storage=e,this.hydrateFromStorage()}hydrateFromStorage(){this.sessions=Oj(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,b_.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,b_.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,b_.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 Aj=(e,t)=>E(t);function jj(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 Mj=class{timer=null;pending=null;constructor(e,t=500,n=Aj){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 jj(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 Nj={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`},Pj=new Set([`1`,`true`]),Fj=new Set([`0`,`false`,``]);function Ij(e,t){let n=sM(e),r=n.scope===`segment-palette`?`string`:Nj[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(Pj.has(t))return`true`;if(Fj.has(t))return`false`;throw Error(`persistValueText: "${e}" expects boolean-ish (1, 0, true, false), got "${t}"`)}function Lj(e){try{return r.readFileSync(e,`utf8`)}catch(e){if(e.code===`ENOENT`)return null;throw e}}function Rj(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 zj(e){return/^\s*$/.test(e)?null:fo(e)}function Bj(e,t){return e!==null&&mo(e,t)!==void 0}function Vj(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(Vj),...i}}return e}function Hj(e){if(!nc(e))return Vj(e);let{rows:t,...n}=e;return{rows:Object.fromEntries(Object.entries(t).map(([e,t])=>[e,Vj(t)])),...n}}const Uj=wD,Wj=Uj.segments,Gj=Uj.presets,Kj=Uj.root;function qj(e,t,n,r){if(!Bj(e,t)&&n===void 0)throw new $(`cannot edit ${r}: neither the config file nor the bundled default declares ${t.join(`.`)}`)}function Jj(e,t){let n=Qy(t);return t.scope===`segment-palette`&&qj(e,[`segments`,t.segment],Wj[t.segment],n.join(`.`)),n}function Yj(e){return fo(So(e))}function Xj(){return Object.entries(Kj.rows).map(([e,t])=>{let n=Vj(t);return{path:[`root`],fragment:Yj({rows:{[e]:n}}),unit:{path:[`root`,`rows`,e],value:n}}})}function Zj(e,t){let n=e===null?void 0:mo(e,t);return n===void 0?null:{path:t,fragment:n,unit:null}}function Qj(e,t){if(t===void 0)return null;let n=Hj(t);return{path:e,fragment:Yj(n),unit:{path:e,value:n}}}function $j(e,t){let n=[`presets`,t],r=[...n,`root`],i=Gj[t];qj(e,n,i,r.join(`.`));let a=Zj(e,r)??Qj(r,i?.root);return a!==null&&Uo(a.fragment)?a:null}function eM(e,t){let n=Ho(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 tM(e,t){return[...Xj(),Zj(e,[`root`]),$j(e,t)].filter(e=>e!==null).reduce(eM,new Map)}function nM(e,t,n){for(let{node:r,...i}of tM(e,t).values())if(Go(r,n))return i;throw new $(`${rM(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 rM(e,t){return $j(e,t)?.path??[`root`]}function iM(e,t){return t.scope===`preset-root`?rM(e,t.preset):Qy(t)}function aM(e,{unit:t}){return t===null?e:Io(e,t.path,So(t.value),bo)}function oM(e){let t=Zy(e);if(t===null)throw Error(`"${e}" is not a valid persist target`);return t}function sM(e){let t=oM(e);if(t.scope===`preset-root`)throw Error(`"${e}" names a layout, not a value`);return t}function cM(e,t,n,r){lM(t,r),Rj(t,r,e.logger),e.record(t,n,r)}function lM(e,t){try{return xC(yC(e,t,ED),e)}catch(e){throw e instanceof Xo?new $(`refused: the config file would not load after this click — ${e.message}`):e}}function uM(e,t){let n=sM(t),r=zj(Lj(e)??``),i=r===null?void 0:mo(r,Qy(n));return i!==void 0&&`value`in i?i.value:void 0}function dM(e,t,n){fM(e,t,n,[])}function fM(e,t,n,r){let i=Lj(t);cM(e,t,i,pM(n.reduce((e,[t,n])=>Io(e,Jj(zj(e),sM(t)),Ij(t,n),bo),i??``),t,r,e=>e))}function pM(e,t,n,r){return n.reduce((e,{preset:n,id:i,setting:a,value:o})=>{let s=r(e,n,i),c=nM(zj(s),n,i),l=Yo(aM(s,c),c.path,i,a,So(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 mM(e,t,n){let r=zj(e),i=[`presets`,t,`root`];for(let[a,{path:o,unit:s,node:c}]of tM(r,t)){if(!Go(c,n))continue;if(i.every((e,t)=>o[t]===e))return e;let l=s===null?go(e,c):So(s.value);if(a!==`#`)return Io(e,[...i,`rows`,a],l,bo);if($j(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 Io(e,i,l,bo)}return e}function hM(e,t){return Ro(e,t,t[0]===`presets`&&t.length>2&&!OD(t[1])?2:0)}function gM(e,t,n){let r=n.map(oM),i=Lj(t);if(i===null)return;let a=r.reduce((e,t)=>hM(e,iM(zj(e),t)),i);a!==i&&cM(e,t,i,a)}function _M(e){let t=e===null?void 0:mo(e,[`presets`]),n=new Set([...DD,...t?.kind===`object`?t.entries.map(e=>e.key):[]].map(kl));return Array.from({length:n.size+1},(e,t)=>`custom-${t+1}`).find(e=>!n.has(kl(e)))}function vM(e,t,n,r,i,a){let o=Lj(t),s=zj(o??``),c=_M(s),l=[`presets`,c],u=$j(s,n),d=[...u===null?[]:[[[...l,`root`],u.unit===null?go(o??``,u.fragment):So(u.unit.value)]],...Object.keys(r).length===0?[]:[[[...l,`globals`],So(r)]]],f=i.map(([e,t])=>{let n=Xy(c,e);return[Jj(s,sM(n)),Ij(n,t)]});return cM(e,t,o,pM([...d,...f].reduce((e,[t,n])=>Io(e,t,n,bo),Io(o??``,l,`{}`,bo)),t,a.map(e=>({...e,preset:c})),mM)),c}function yM(e,t,n){if(OD(n))throw new $(`cannot delete preset "${n}": it is bundled — reset its settings instead`);let r=[`presets`,n],i=Lj(t),a=zj(i??``);if(i===null||a===null||mo(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=mo(a,[`globals`,`preset`]);cM(e,t,i,[r,...o?.kind===`string`&&o.value===n?[[`globals`,`preset`]]:[]].reduce((e,t)=>hM(e,t),i))}function bM(e,t,n,r){let i=oM(n);if(i.scope!==`preset-root`)throw Error(`"${n}" is not a "presets.<name>.root" target`);let a=Lj(t),o=r.op===`remove`?r.target:r.anchor,s=nM(zj(a??``),i.preset,o),c=aM(a??``,s),{after:l,placed:u}=xM(c,s.path,r,()=>{let e=lM(t,c);return Tg(e.presets).map(t=>Og(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 cM(e,t,a,l),u}function xM(e,t,n,r){switch(n.op){case`remove`:return{after:qo(e,t,n.target),placed:null};case`insert`:{let i=nD(n.segment,n.anchor,r());return{after:Jo(e,t,i,n.anchor,n.relation),placed:i}}}}const SM={load:()=>({}),save:()=>{}},CM=new Set(Cy.map(e=>e.sessionKey)),wM=e=>CM.has(e)||e.startsWith(Kg),TM={past:[],future:[]},EM=e=>e.kind===`session`?`session:${e.key}`:`file:${e.file}`;var DM=class{state=new Map;constructor(e,t,n=SM){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)??TM;return{undo:t.length,redo:n.length}}history(e){return this.state.get(e)??TM}begin(){let e=new Map,t=(t,n)=>{let r=e.get(t)??new Map,i=r.get(EM(n));r.set(EM(n),i===void 0?n:{...n,before:i.before}),e.set(t,r)},n=this.sessionState,r=(e,r,i)=>{let a=r.filter(wM).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:AM([...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:AM([...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:AM([...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(EM));throw this.put(e,{past:jM(this.history(e).past,t),future:jM(this.history(e).future,t)}),new $(`${r}: ${o.map(NM).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):Lj(t.file)}write(e,t,n){t.kind===`file`?Rj(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||OM(n)>8388608;){let[e,t]=n.entries().next().value;n.size>1?n.delete(e):n.set(e,kM(t))}this.storage.save(Object.fromEntries(n)),this.state=n}};function OM(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 kM({past:e,future:t}){return e.length>0?{past:e.slice(1),future:t}:{past:e,future:t.slice(1)}}function AM(e){return e.slice(-50)}function jM(e,t){return e.map(e=>e.filter(e=>!t.has(EM(e)))).filter(e=>e.length>0)}function MM(e){return e.map(NM).join(`, `)}function NM(e){return e.kind===`session`?`session setting "${e.key}"`:e.file}function PM(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 FM(e){return Array.isArray(e)&&e.every(e=>Array.isArray(e)&&e.every(PM))}function IM(e){if(typeof e!=`object`||!e)return!1;let t=e;return FM(t.past)&&FM(t.future)}function LM(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(IM))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 RM(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 zM(e){let t=RM(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 BM(){return{probeTmux:zM,claudeSettingsPath:pT()}}function VM(e){return r.existsSync(e.claudeSettingsPath)?r.readFileSync(e.claudeSettingsPath,`utf8`):``}function HM(e){if(/^\s*$/.test(e))return{};let t=xo.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 UM(e,t){return t===void 0?{kind:`unreported`}:t===null?{kind:`outside`}:{kind:`inside`,hint:t,termfeatures:e.probeTmux(t)}}function WM(e){try{return HM(VM(e))}catch(t){throw Error(`cannot read ${e.claudeSettingsPath}: ${t instanceof Error?t.message:String(t)}`,{cause:t})}}function GM(e,t){return{tmux:UM(e,t),claudeSettingsEnv:WM(e)}}function KM(e,t,n){switch(t.kind){case`claude-settings-env`:{let i=Io(VM(e),[`env`,t.name],JSON.stringify(t.value),xo);return r.mkdirSync(c.dirname(e.claudeSettingsPath),{recursive:!0}),Ae(e.claudeSettingsPath,i),{...n,claudeSettingsEnv:WM(e)}}default:return t.kind}}const qM=/^─{20,}/,JM=/^❯(\s|$)/,YM=/›\s*stashed$/;function XM(e){if(e.inMode)return{kind:`in-mode`};let t=e.screen.map(e=>e.trimEnd()),n=t.flatMap((e,t)=>qM.test(e)?[t]:[]).at(-2);return n===void 0||!JM.test(t[n+1]??``)?{kind:`no-prompt`}:YM.test(t[n-1]??``)?{kind:`stashed`}:{kind:`ready`}}const ZM={"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 QM(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=XM(e.read(t));if(r.kind!==`ready`)return{kind:`refused`,reason:ZM[r.kind]};let i=e.type(t,n);return i.kind===`typed`?{kind:`typed`,pane:t.pane}:i}const $M=`cc-candybar-slash`;function eN(e,t,n,r){let i=RM(e,t,n,r);if(i.kind===`failed`)throw Error(i.reason);return i}function tN(e){let t=eN(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 nN(e,t){let n=eN(e,`claude-input.type`,[`load-buffer`,`-b`,$M,`-`,`;`,`send-keys`,`-t`,e.pane,`C-s`,`;`,`paste-buffer`,`-p`,`-d`,`-b`,$M,`-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 rN(){return{read:tN,type:nN}}function iN(e){if(!e)throw new $(`session id is required`);if(e.includes(`/`)||e.includes(`..`))throw new $(`invalid session id "${e}"`);return e}function aN(e){return oN(()=>decodeURIComponent(e))}function oN(e){try{return e()}catch(e){throw e instanceof URIError?new $(`malformed wire encoding: ${e.message}`):e}}function sN(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 cN=(e,t)=>sN(aN(e),t),lN=(e,t)=>{let n=De({bin:`/usr/bin/open`,args:[`-a`,`Visual Studio Code`,aN(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`})`)}},uN=(e,t)=>sN(aN(e),t),dN=(e,t)=>sN(aN(e),t),fN=(e,t)=>{let n=iN(aN(e));t.sessionState.get(n,`toolbar-expanded`)?t.sessionState.clear(n,`toolbar-expanded`):t.sessionState.set(n,`toolbar-expanded`,`1`)},pN=(e,t)=>{let[n=``,...r]=oN(()=>aT(e)),i=iN(n);if(r.length===0)throw new $(`set-state: <key>/<value> is required (have keys: ${PO().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: ${PO().join(`, `)})`);let a=[];for(let e=0;e<r.length;e+=2){let t=r[e],n=r[e+1];if(!t)throw new $(`set-state: empty key at pair ${e/2+1} (expected <sessionId>/<key>/<value>[/<key>/<value>...] segments)`);let i=IO(t,n);if(!i.ok)throw new $(`set-state: pair ${e/2+1}: ${i.reason}`);a.push({key:t,value:i.value})}t.sessionState.setBatch(i,a);let o=a.map(e=>`${e.key}=${e.value}`).join(` `);t.dlog(`info`,`set-state: ${o} (session=${i})`)},mN=/^-?\d+$/;function hN(e,t,n){return e>n?t:e<t?n:e}const gN=(e,t)=>{let[n=``,r=``,i=``]=oN(()=>aT(e)),a=iN(n);if(!r)throw new $(`step-state: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!mN.test(i))throw new $(`step-state: delta must be an integer, got "${i}"`);let o=parseInt(i,10),s=LO(r);if(!s)throw new $(`step-state: key "${r}" is not a bounded (range) state key (have keys: ${PO().join(`, `)})`);let c=t.sessionState.get(a,r),l=c&&mN.test(c)?_N(s,parseInt(c,10)):vN(`step-state`,r,s,BO(t.configFor(SN(t,a)),e=>t.sessionState.get(a,e),r)),u=hN(l+o,s.min,s.max),d=IO(r,String(u));if(!d.ok)throw new $(`step-state: ${d.reason}`);t.sessionState.set(a,r,d.value),t.dlog(`info`,`step-state: ${r} ${l}→${d.value} (by ${o}, session=${a})`)};function _N(e,t){return Math.max(e.min,Math.min(e.max,t))}function vN(e,t,n,r){if(r===null)return n.min;if(!mN.test(r))throw new $(`${e}: "${t}" shows ${JSON.stringify(r)} before any click, not an integer to step`);return _N(n,parseInt(r,10))}const yN=`render-origin`;function bN(e){return JSON.stringify(e)}function xN(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 SN(e,t){let n=e.sessionState.get(t,yN);if(n===null)throw new $(`session ${t} has not rendered yet — no config to act on`);return xN(n)}function CN(e){return mC(e.projectDir,e.cwd,e.configFile??void 0)}function wN(e,t){return CN(SN(e,t))}function TN(e,t){return{record:(n,r,i)=>e.journal.file(t,n,r,i),logger:e.dlog}}const EN=(e,t)=>{let[n=``,r=``,i=``]=oN(()=>aT(e)),a=iN(n);if(!r)throw new $(`set-config: <key>/<value> is required (have keys: ${pD().join(`, `)})`);let o=mD(r,i);if(!o.ok)throw new $(`set-config: ${o.reason}`);let s=wN(t,a);dM(TN(t,a),s,[[r,o.value]]),t.dlog(`info`,`set-config: ${r}=${o.value} → ${s} (session=${a})`)},DN=(e,t)=>{let[n=``,r=``,i=``]=oN(()=>aT(e)),a=iN(n);if(!r)throw new $(`step-config: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!mN.test(i))throw new $(`step-config: delta must be an integer, got "${i}"`);let o=parseInt(i,10),s=hD(r);if(!s)throw new $(`step-config: key "${r}" is not a bounded (range) config key (have keys: ${pD().join(`, `)})`);let c=SN(t,a),l=CN(c),u=uM(l,r),d=typeof u==`number`?_N(s,u):vN(`step-config`,r,s,_D(t.configFor(c),r)),f=hN(d+o,s.min,s.max),p=mD(r,String(f));if(!p.ok)throw new $(`step-config: ${p.reason}`);dM(TN(t,a),l,[[r,p.value]]),t.dlog(`info`,`step-config: ${r} ${d}→${p.value} (by ${o}) → ${l} (session=${a})`)},ON=(e,t)=>{let[n=``]=oN(()=>aT(e)),r=iN(n),i=SN(t,r),a=t.configFor(i),o=e=>t.sessionState.get(r,e),s=bO(a,o),c=xO(a,o);if(s.length+c.length===0){t.dlog(`info`,`save: nothing unsaved (session=${r})`);return}let l=s.map(e=>{let t=IO(e.sessionKey,e.value);if(!t.ok)throw new $(`save: ${t.reason}`);return[e.target,t.value]});AN(`save`,c);let u=CN(i);fM(TN(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(kN)].join(` `)} → ${u} (session=${r})`)},kN=e=>`${e.preset}/${e.id}.settings.${e.setting}=${bs(e.value)}`;function AN(e,t){for(let n of t){let t=IO(n.key,bs(n.value));if(!t.ok)throw new $(`${e}: ${t.reason}`)}}const jN=(e,t)=>{let[n=``]=oN(()=>aT(e)),r=iN(n),i=SN(t,r),a=wO(t.configFor(i),e=>t.sessionState.get(r,e)),o=a.picks.map(e=>{let t=IO(e.sessionKey,e.value);if(!t.ok)throw new $(`save-preset: ${t.reason}`);return[e.configKey,t.value]});AN(`save-preset`,a.placements);let s=CN(i),c=vM(TN(t,r),s,a.from,a.globals,o,a.placements);t.reloadConfig(i);for(let e of[...Cy.map(e=>e.sessionKey),...a.placements.map(e=>e.key)])t.sessionState.clear(r,e);t.sessionState.set(r,Sy.preset.sessionKey,c),t.dlog(`info`,`save-preset: ${[`${c} from=${a.from}`,...o.map(([e,t])=>`${e}=${t}`),...a.placements.map(kN)].join(` `)} → ${s} (session=${r})`)},MN=(e,t)=>{let[n=``,r=``]=oN(()=>aT(e)),i=iN(n);if(!r)throw new $(`delete-preset: <name> is required (shape: <sessionId>/<name>)`);let a=SN(t,i),o=CN(a);yM(TN(t,i),o,r),t.reloadConfig(a);let s=Sy.preset.sessionKey;t.sessionState.get(i,s)===r&&t.sessionState.clear(i,s),t.dlog(`info`,`delete-preset: ${r} ← ${o} (session=${i})`)},NN=(e,t)=>{let[n=``,...r]=oN(()=>aT(e)),i=iN(n),a=pD(),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=SN(t,i),c=CN(s),l=r.map(TO),u=l.flatMap(e=>e.fileKeys),d=l.flatMap(e=>e.sessionKeys);gM(TN(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 PN(e,t){let n=(e,t)=>[...ss(Og(e,t).node)].filter(e=>e.kind===`segment`),r=new Set(Tg(t.presets).flatMap(e=>n(t,e).map(t=>`${e}\0${rs(t)}`)));return Tg(e.presets).flatMap(t=>n(e,t).flatMap(e=>r.has(`${t}\0${rs(e)}`)?[]:Object.values(e.drafts??{}).map(e=>e.key)))}const FN=(e,t)=>{let[n=``,r=``,i=``]=oN(()=>aT(e)),a=iN(n);if(!r)throw new $(`apply-layout-op: <key>/<op> is required (have: ${pD().join(`, `)})`);let o=mD(r,i);if(!o.ok)throw new $(`apply-layout-op: ${o.reason}`);let s=tD(o.value);if(s===null)throw new $(`apply-layout-op: "${o.value}" is not a layout op token`);let c=SN(t,a),l=CN(c),u=t.configFor(c),d=bM(TN(t,a),l,r,s);t.reloadConfig(c);let f=PN(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})`)},IN=(e,t)=>{let[n=``]=oN(()=>aT(e)),r=iN(n);t.journal.commit();let i=t.history.undo(r);t.dlog(`info`,`undo: restored ${MM(i)} (session=${r})`)},LN=(e,t)=>{let[n=``]=oN(()=>aT(e)),r=iN(n);t.journal.commit();let i=t.history.redo(r);t.dlog(`info`,`redo: re-applied ${MM(i)} (session=${r})`)},RN=(e,t)=>{iN(aN(e)),t.applyUpdate()},zN=`client-hints`;function BN(e,t){let n=e.sessionState.get(t,zN);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 OC(r)}function VN(e,t,n){let r=Lb(n);e.sessionState.setBatch(t,Vb(r)),e.dlog(`info`,`doctor: ${r.map(e=>`${e.check.name}=${e.verdict.ok?`ok`:`failed`}`).join(` `)} (session=${t})`)}const HN=(e,t)=>{let n=iN(aN(e));VN(t,n,GM(t.doctor,BN(t,n).tmux))},UN=(e,t)=>{let[n=``,r=``]=oN(()=>aT(e)),i=iN(n),a=Rb(r);if(a===void 0)throw new $(`doctor-fix: unknown check "${r}"`);let o=GM(t.doctor,BN(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=KM(t.doctor,s.fix,o);t.dlog(`info`,`doctor-fix: ${a.name} → ${s.fix.kind} ${s.fix.name}=${s.fix.value} (session=${i})`),VN(t,i,c)},WN=(e,t)=>{let[n=``,...r]=oN(()=>aT(e)),i=iN(n),a=SN(t,i),o=Object.values(t.configFor(a).actions).filter(e=>`ceiling`in e).find(e=>{let t=Zx(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})`)},GN=(e,t)=>{let[n=``,r=``]=oN(()=>aT(e)),i=iN(n),a=Object.values(t.configFor(SN(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=QM(t.claudeInput,BN(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})`)},KN=`config-override`,qN=new Map([[zw,cN],[`load-config`,(e,t)=>{let n=e.indexOf(`/`);if(n===-1)throw new $(`load-config: expected <sessionId>/<path> (missing separator)`);let r=iN(oN(()=>decodeURIComponent(e.slice(0,n)))),i=oN(()=>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,KN),t.dlog(`info`,`load-config: override cleared (session=${r})`)):(t.sessionState.set(r,KN,i),t.dlog(`info`,`load-config: ${i} (session=${r})`))}],[Bw,lN],[Lw,pN],[Rw,gN],[Ww,EN],[Gw,DN],[Yw,NN],[Kw,ON],[qw,jN],[Jw,MN],[Xw,FN],[Zw,IN],[Qw,LN],[Hw,uN],[Uw,dN],[Vw,fN],[$w,RN],[eT,HN],[tT,UN],[nT,WN],[rT,GN]]),JN=new Set([Lw,Rw,Ww,Gw,Yw,Kw,qw,Jw,Xw,Zw,Qw,Vw,$w,eT,tT,nT,rT]),YN=(e,t)=>{let n=[],r=!1,i=null;for(let{verb:a,value:o}of lT(sT(e))){if(!i&&JN.has(a)){let e=aT(o);e.length>0&&e[0]&&(i=e[0])}let e=qN.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 XN(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 ZN=new Map([...qN,[Iw,YN]].map(([e,t])=>[e,XN(t)]));Object.freeze([...ZN.keys()]);const QN=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`]),$N=[[`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 eP(e){let t={missingRequired:[],typeMismatches:[],unknownTopLevelFields:[]},n=typeof e==`object`&&e&&!Array.isArray(e)?e:{};for(let[e,r]of $N){let i=nP(n,e);if(i==null)t.missingRequired.push(e);else{let n=tP(i);n!==r&&t.typeMismatches.push({path:e,expected:r,got:n})}}for(let e of Object.keys(n))QN.has(e)||t.unknownTopLevelFields.push(e);return{data:e,report:t}}function tP(e){return Array.isArray(e)?`array`:typeof e==`string`&&!e.isWellFormed()?`ill-formed string`:typeof e}function nP(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 rP(e,t){switch(e){case`vars`:return{what:e,vars:iP(t)};case`segments`:return{what:e,segments:lP(t)};case`config`:return{what:e,config:pP(t)}}}function iP(e){if(e===null)return[];let{store:t,registry:n,config:r}=e,i=sP(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,...aP(r),lastError:a===void 0?null:{timestampMs:a.timestamp,message:a.message},ageMs:oP(r.lastUpdatedMs())})}return o}function aP(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 oP(e){return e===null?null:Math.max(0,Date.now()-e)}function sP(e){let t=new Map;for(let[n,r]of Object.entries(e.variables))t.set(n,cP(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}`,cP(i));return t}function cP(e){return e.kind}function lP(e){if(e===null)return[];let{store:t,config:n,lastRenderBySegment:r}=e,i=new Set(t.names()),a=dP(n),o=uP(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:fP(t.template,n.helpers,i),placements:(o.get(e)??[]).map(e=>({id:e,lastRender:r.get(e)??null}))})}return s}function uP(e){let t=new Map;for(let n of Tg(e.presets))for(let r of ss(Og(e,n).node)){if(r.kind!==`segment`)continue;let e=t.get(r.name)??[],n=rs(r);e.includes(n)||t.set(r.name,[...e,n])}return t}function dP(e){let t=[],n=new Set;for(let r of ss(ac(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 fP(e,t,n){let r=new Set;for(let i of u_(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 pP(e){return e===null?null:e.config}const mP=[`vars`,`segments`,`config`];function hP(e){return typeof e==`string`&&mP.includes(e)}function gP(e){return Math.max(1,e-2)}var _P=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 gk(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)}},vP=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=kD(t);if(n&&r!==0&&n.cursor.mtimeMs===r)return this.touch(e,n),{kind:`ok`,value:n.value};let i=await bk(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 yP={messageCount:0,recent:[]};function bP(e,t){if(t.isSidechain)return e;let n=[...e.recent,t];return{messageCount:e.messageCount+ +!!mk(t),recent:n.length>20?n.slice(-20):n}}function xP(e){let t=null,n=null;for(let r of e){let e=r.type||r.message?.role||r.message?.type;if(mk(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 SP=class{fold=new vP(yP,bP);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:xP(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 CP={command:null,todos:[],pending:[],done:[]};function wP(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 TP(e,t){if(t.isSidechain)return e;let n=mk(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=wP(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 EP(e){return{command:e.command,todos:e.todos,running:e.pending.reduce((e,t)=>wP(e,t.name),[]),done:e.done}}var DP=class{fold=new vP(CP,TP);async getActivityInfo(e,t){let n=await this.fold.read(e,t.transcript_path);return n.kind===`failed`?X(`activity (${e}): ${n.reason}`):J(EP(n.value))}};const OP=new Map;function kP(e){if(!e)return``;let t=e.indexOf(`,`);return t<0?e:e.slice(0,t)}var AP=class{async getSessionId(){if(!process.env.TMUX_PANE)return Y;let e=kP(process.env.TMUX),t=OP.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 OP.set(e,r),r}isInTmux(){return!!process.env.TMUX_PANE}};const jP=e=>`${e.sessionId}|${e.projectDir}|${e.cwd}`;var MP=class{readings=new Map;inFlight=new Map;constructor(e,t=Date.now){this.edge=e,this.now=t}getCeiling(e){let t=jP(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=jP(e);try{this.edge.move(n.value,e,t)}finally{this.readings.delete(r),this.inFlight.delete(r),this.fetch(r,e)}}};const NP=c.join(`lib`,`ceiling_config.py`),PP=c.join(`skills`,`ceiling`,`bin`,`ceiling`);function FP(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 IP(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 LP(e,t){if(!r.existsSync(e))return Y;let n;try{n=FP(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=IP([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=[NP,PP].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 RP(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 zP(e){return e.stderr.trim()||e.error||`${e.reason}${e.exitCode===null?``:` (exit ${e.exitCode})`}`}function BP(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 VP(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:RP(t),timeoutMs:3e3,category:`memento.read`});return n.ok?BP(n.stdout):X(zP(n))}function HP(e,t,n){let r=De({bin:c.join(e,PP),args:n.kind===`set`?[`set`,`session`,n.to]:[`clear`,`session`],env:RP(t),timeoutMs:5e3,category:`memento.move`});if(!r.ok)throw Error(zP(r))}function UP(){let e=mT();return{locate:t=>LP(e,t),read:VP,move:HP}}var WP=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 GP=new Ej;we(GP.launchStats);const KP=new Uv({counters:GP,logger:Q}),qP=new Zv({watchers:KP,logger:Q}),JP=new Mk,YP=new kj,XP=new DM(YP,Q),ZP=new WP(Ge()),QP=new _P,$P=new SP,eF=new DP,tF=new AP,nF=new MP(UP()),rF=new wj({gitService:qP,sessionState:YP,watchers:KP},{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)}`)}}),iF=60*1e3;function aF(){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),xF(0);return}}catch(e){Q(`warn`,`bin stat failed: ${e.message}`)}};return{arm(){i.size!==0&&(a=setInterval(o,iF),a.unref())},checkNow:o}}const oF=aF(),sF=rk({entryUrl:import.meta.url,intervalMs:iF,releaseIntervalMs:216e5,registryUrl:t.env.CC_CANDYBAR_REGISTRY_URL??`https://registry.npmjs.org`,fetchImpl:fetch,onApplied:()=>oF.checkNow(),log:Q});let cF=null,lF=null,uF=0;function dF(){t.on(`uncaughtException`,e=>{Q(`error`,`uncaughtException: ${e.stack||e.message}`),xF(1)}),t.on(`unhandledRejection`,e=>{Q(`error`,`unhandledRejection: ${String(e)}`),xF(1)});for(let e of[`SIGINT`,`SIGTERM`,`SIGHUP`])t.on(e,()=>{Q(`info`,`received ${e}, shutting down`),xF(0)});try{uF=cw(t.env)}catch(e){Q(`error`,`refusing to boot: ${e.message}`),xF(1);return}cF=iE(t.pid);let e=mE(gE(cF));if(!e.decision.allow){Q(`warn`,`fork-bomb breaker: ${e.decision.reason}; refusing to boot`),xF(1);return}lF=e.registryPath,r.mkdirSync(Ne(),{recursive:!0}),Ie(Pe()),YP.useStorage(new Mj(ze(),500,Q)),XP.useStorage(LM(Be(),Q)),sE({anchor:oE(t.env),isAlive:cE,onOrphaned:e=>{Q(`info`,`parent watchdog: ${e}; shutting down`),xF(0)}}),fF(g.createServer({allowHalfOpen:!1},e=>{SF(e)}),Pe(),!1)}function fF(e,n,r){e.removeAllListeners(`error`),e.removeAllListeners(`listening`),e.once(`error`,i=>{if(i.code!==`EADDRINUSE`){Q(`error`,`server error: ${i.message}`),xF(1);return}if(r){Q(`info`,`lost rebind race; another daemon is alive — exiting`),t.exit(0);return}pF(e,n)}),e.listen(n,()=>mF(n))}function pF(e,n){let i=JT(YT(Le(n)),(e,t)=>rE(e,t,{readStartTime:nE,pidAlive:cE}));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}`),xF(1);return}}fF(e,n,!0)}function mF(e){let n=QT(e);if(n.kind!==`present`){Q(`warn`,`no ownable socket at bind callback (${n.kind}); exiting`),xF(0);return}vF(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(uF/1048576)}MB`),Tw();let i=ZP.reset();i!==null&&Q(`warn`,`diagnostic dump wipe failed: ${i}`),oF.arm(),sF.arm(),_F(),hF(e,n.identity)}function hF(e,n){tE({bound:n,myPid:t.pid,readIdentity:()=>QT(e),readLease:()=>YT(Le(e)),shutdown:e=>xF(e),log:Q}).arm()}let gF=null;function _F(){gF=fw(gw(GP.startedAt.getTime(),e=>xF(e),{rssLimitBytes:uF})),gF.arm()}function vF(e){let n=XT(Le(e),{pid:t.pid,version:3,binPath:t.argv[1],startTime:cF});n!==null&&Q(`warn`,`lease write failed: ${n}`)}let yF=0,bF=!1;function xF(e){if(!bF){bF=!0,setTimeout(()=>t.kill(t.pid,`SIGKILL`),500);try{qP.close()}catch(e){Q(`warn`,`gitService close failed: ${e.message}`)}try{JP.close()}catch(e){Q(`warn`,`usageStore close failed: ${e.message}`)}try{KP.closeAll()}catch(e){Q(`warn`,`watcherRegistry close failed: ${e.message}`)}try{YP.flush()}catch(e){Q(`warn`,`sessionState flush failed: ${e.message}`)}ZT(Re(),t.pid),lF!==null&&hE(lF,t.pid,fE,e=>r.unlinkSync(e)),t.exit(e)}}function SF(e){yF++,GP.inFlight=yF;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:()=>xF(r);try{e.end(FC(n),i)}catch(e){Q(`warn`,`response write failed: ${e.message}`),i?.()}},r=setTimeout(()=>{GP.requestsTimedOut++,n({ok:!1,error:`request exceeded 200ms`,code:`TIMEOUT`,daemonV:3},null)},200),i=IC(e=>{wF(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),yF=Math.max(0,yF-1),GP.inFlight=yF})}const CF=e=>({resp:e,exitAfterFlush:null});async function wF(e){if(!e||typeof e!=`object`||typeof e.v!=`number`)return CF({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 CF({ok:!0,stats:GP.snapshot({gitCache:qP.getStats(),usageCache:JP.getStats(),renderCacheSize:rF.size,watchersActive:KP.size(),nextRestartReason:gF?.describeNextRestart()??null})});if(e.kind===`render`){GP.requestsTotal++;let t=Date.now();try{let{report:n}=eP(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 GP.requestsErrored++,Q(`warn`,`BAD_REQUEST: ${r.join(`; `)}`),CF({ok:!1,error:`malformed hookData: ${r.join(`; `)}`,code:`BAD_REQUEST`,daemonV:3});let i=e.hookData.workspace.project_dir,{configFile:a,unknownFlagsError:o}=TF(e.args),s=e.hookData.session_id,c=OC(e),l=JSON.stringify(c);YP.get(s,`client-hints`)!==l&&YP.set(s,zN,l);let u=YP.get(s,`config-override`)??a??c.configEnv,d=rF.getOrCreate(i,e.cwd,u),f=bN({projectDir:i,cwd:e.cwd,configFile:u??null});YP.get(s,`render-origin`)!==f&&YP.set(s,yN,f);let p=c.termCols,m=gP(p??120),h=NE(c.termRows),{authoredRoots:g}=d.state,_=t=>YP.get(e.hookData.session_id,t),v=HD(d.state.config,_,e=>g.has(e)),y=await aO(e.hookData,AF,e.cwd,d.state.neededInputPaths(v.preset),v,c,bO(d.state.config,_).length+xO(d.state.config,_).length),b=[],x=UD(v,m),S=uj(d.state.config,d.state.compiled,d.state.store,d.state.registry,y,x,{perSegmentSink:d.state.lastRenderCellsBySegment,onRenderWarning:e=>b.push(e)},WD(v)),C=YP.get(e.hookData.session_id,`click.error`);C&&YP.clear(e.hookData.session_id,`click.error`);let ee=[o,d.lastError,C].filter(Boolean).join(`
198
+ `),te=sF.notice({sessionId:s,dismissed:YP.get(s,UO),enabled:v.updateNotice}),ne=d.lastError===null?null:d.configFilePath,re=RE(ee,te,[d.lastWarning??``,...b].filter(Boolean).join(`
199
+ `)),ie=ZP.sync(s,re===null?null:BE(re));ie!==null&&Q(`warn`,`diagnostic dump failed: ${ie}`);let ae=VE(S,re,{fullText:ie===null?{kind:`file`,path:ZP.pathFor(s)}:{kind:`unavailable`,reason:ie},failedConfigFile:ne},{width:m,rowCap:h,colorCompatibility:v.colorCompatibility}),w=Date.now()-t,T=qP.getStats(),oe=JP.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`}`),CF({ok:!0,output:ae+`
200
+ `})}catch(e){throw GP.requestsErrored++,e}}if(e.kind===`click`)return CF(await jF(e.verb,e.value));if(e.kind===`debug`){if(!hP(e.what))return CF({ok:!1,error:`unknown debug 'what': ${String(e.what)} (have: ${mP.join(`, `)})`,code:`BAD_REQUEST`,daemonV:3});let t=rF.firstState(),n=t===null?null:{store:t.store,registry:t.registry,config:t.config,compiled:t.compiled,lastRenderBySegment:e.what===`segments`?kF(t.lastRenderCellsBySegment,t.config.globals.charset??`unicode`,t.config.globals.colorCompatibility??`truecolor`):OF};return CF({ok:!0,debug:rP(e.what,n)})}return CF({ok:!1,error:`unknown kind`,code:`BAD_REQUEST`,daemonV:3})}function TF(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:kC(t.config),unknownFlagsError:r.length>0?`Unknown flags: ${r.join(`, `)}`:null}}const EF={sessionState:YP,dlog:Q,applyUpdate:()=>sF.act(),doctor:BM(),memento:nF,claudeInput:rN(),history:XP,configFor:e=>rF.getOrCreate(e.projectDir,e.cwd,e.configFile??void 0).state.config,reloadConfig:e=>rF.reload(e.projectDir,e.cwd,e.configFile??void 0)},DF={style:`powerline`,colorCompatibility:Wa,wrap:!0,padding:1,charset:Ba,width:1/0},OF=new Map;function kF(e,t,n){let r=new Map;for(let[i,a]of e)r.set(i,ME(a,{...DF,charset:t,colorCompatibility:n}));return r}const AF={gitProvider:qP,usageStore:JP,contextProvider:QP,metricsProvider:$P,activityProvider:eF,tmuxService:tF,mementoProvider:nF,log:Q,clock:()=>new Date,history:e=>XP.depth(e)};function jF(e,t){let n=ZN.get(e);if(!n)return{ok:!1,error:`unknown click verb: ${e}`,code:`BAD_REQUEST`,daemonV:3};try{return n(t,EF),{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 MF={connectMs:200,budgetMs:500};async function NF(e){let n=e.includes(`--json`),r=await PF();if(r.kind!==`ok`&&(t.stderr.write(`daemon-stats: ${WC(r)}\n`),t.exit(1)),n){t.stdout.write(JSON.stringify(r.value,null,2)+`
201
+ `);return}t.stdout.write(RF(r.value))}function PF(){return RC({kind:`stats`},MF,e=>`stats`in e?e.stats:void 0)}function FF(e){return e<1024?`${e}B`:e<1024*1024?`${(e/1024).toFixed(1)}KB`:`${(e/1024/1024).toFixed(1)}MB`}function IF(e,t){let n=e+t;return n===0?`n/a`:`${(e/n*100).toFixed(1)}%`}function LF(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 RF(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 ${LF(e.uptimeSec)}`),t.push(` rss ${FF(e.rssBytes)}`),t.push(` heapUsed ${FF(e.heapUsedBytes)}`),t.push(` heapTotal ${FF(e.heapTotalBytes)}`),t.push(` external ${FF(e.externalBytes)}`),t.push(` arrayBuffers ${FF(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 ${IF(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 ${IF(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 zF={connectMs:200,budgetMs:500};async function BF(e,n){let r=n.includes(`--json`),i=await VF(e);if(i.kind!==`ok`&&(t.stderr.write(`${e}: ${WC(i)}\n`),t.exit(1)),r){t.stdout.write(JSON.stringify(i.value,null,2)+`
204
+ `);return}t.stdout.write(HF(i.value))}function VF(e){return RC({kind:`debug`,what:e},zF,e=>`debug`in e?e.debug:void 0)}function HF(e){switch(e.what){case`vars`:return UF(e.vars);case`segments`:return WF(e.segments);case`config`:return GF(e.config);default:return e}}function UF(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?``:` ${qF(a.ageMs)}`,o=a.lastError?` ✗ ${a.lastError.message}`:``;t.push(` ${a.name.padEnd(n)} ${(a.source??`—`).padEnd(r)} ${a.type.padEnd(i)} ${KF(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 WF(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 GF(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 KF(e){let t=typeof e==`string`?e:JSON.stringify(e);return t.length>60?t.slice(0,57)+`…`:t}function qF(e){return e<1e3?`${e}ms`:e<6e4?`${(e/1e3).toFixed(1)}s`:`${Math.floor(e/6e4)}m`}function JF(){let e=XF();return e===null?null:r.readFileSync(e,`utf-8`)}function YF(){let e;try{e=JF()}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 XF(){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 ZF(e){let t=e.CC_CANDYBAR_CONFIG??``;return t===``?void 0:t}const QF=5e3;function $F(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},...GD(e),history:{undo:1,redo:1},unsaved:1}}function eI(e,t){let n=pC(e,e),r=hC(n);return r!==null&&t.push(r),n.kind===`file`?n.path:null}async function tI(e,n=t.cwd()){let i=[],a=e===void 0?eI(n,i):c.resolve(uC(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=_C(n,n);o!==null&&i.push(o);try{return{kind:`clean`,configPath:a,warnings:i,rendered:await iI(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 Xo&&i.push(...e.warnings),{kind:`fatal`,configPath:a,message:e instanceof Xo||e instanceof Error?e.message:String(e),warnings:i})}}async function nI(e,t,n){let r=vC(e,ED);n.push(...r.warnings);let i=xC(r,e??`<default>`),a=new vj,o=new by(a,i.globals.default_empty_value??``,void 0,new kj);try{let e=oj(i,o,{cwd:t});n.push(...e.loadWarnings);let r=await o.settled(QF);return r.length>0&&n.push(`source${r.length===1?``:`s`} still running after ${QF} ms, rendered with fallback values: ${r.join(`, `)}`),{config:i,compiled:e,store:a,registry:o}}catch(e){throw o.dispose(),e}}function rI({config:e,compiled:t,store:n,registry:r},i,a){let o=new Map;return{rendered:uj(e,t,n,r,$F(i),UD(i,a),{onSegmentError:(e,t)=>o.set(`segment "${e}"`,t),onRenderWarning:e=>o.set(`globals.palette`,e)},WD(i)),failures:o}}async function iI(e,t,n){let r=await nI(e,t,n),{config:i}=r;try{HO(i);let e=HD(i,()=>null,()=>!1),t=e=>rI(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 aI(e){return e.map(e=>`warning: ${e}\n`).join(``)}function oI(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:aI(e.warnings),code:0};case`fatal`:return{stdout:``,stderr:aI(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 sI=`--render`,cI=`Usage: cc-candybar check [${sI}] [config-file]\n`;function lI(e){let t=e.filter(e=>e.startsWith(`--`)),n=e.filter(e=>!e.startsWith(`--`)),r=t.filter(e=>e!==sI);return r.length>0?{kind:`usage`,message:`check: unknown option ${r.join(` `)}\n${cI}`}:n.length>1||n[0]===``?{kind:`usage`,message:`check: expected at most one non-empty path\n${cI}`}:{kind:`run`,target:n[0],render:t.includes(sI)}}async function uI(e){let n=lI(e),r=n.kind===`usage`?{stdout:``,stderr:n.message,code:2}:oI(await tI(n.target??ZF(t.env)),n.render);t.stdout.write(r.stdout),t.stderr.write(r.stderr),t.exit(r.code)}const dI=`${xE}${bE}`;function fI(e){return`${dI}⚠ cc-candybar: ${pI(e)}\n`}function pI(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: ${yE(e.message,60)}`;case`render_failed`:return`render failed: ${yE(e.message,60)}`;case`malformed_response`:return`malformed daemon response: ${yE(e.message,60)}`}}function mI(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:fI(e),kick:!1,debug:`daemon refused request (permanent: ${e.cause}) — not kicking`}}}function hI(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 gI=` (fix: click the settings menu (${mc} by default) › 🧰 tools ▸ 🩺 doctor, then [fix] on the bar)`;function _I({check:e,verdict:t}){return t.ok?`✓ ${e.label}\n`:`✗ ${e.label} — ${t.reason}${t.fix===void 0?``:gI}\n`}function vI(e,t){let n;try{n=GM(e,Pb(t))}catch(e){return{stdout:``,stderr:`doctor: ${e instanceof Error?e.message:String(e)}\n`,code:2}}let r=Lb(n);return{stdout:r.map(_I).join(``),stderr:``,code:+!r.every(e=>e.verdict.ok)}}function yI(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=vI(BM(),t.env);t.stdout.write(n.stdout),t.stderr.write(n.stderr),t.exit(n.code)}function bI(){return hI(t.env.COLUMNS,t.stderr.columns)}function xI(){return hI(t.env.LINES,t.stderr.rows)}const SI=[`SSH_CONNECTION`,`SSH_CLIENT`,`SSH_TTY`],CI=e=>e.some(e=>t.argv.includes(e));function wI(){return SI.some(e=>(t.env[e]??``)!==``)}function TI(){console.log(ib)}async function EI(){try{CI(nb.help)&&(TI(),t.exit(0)),CI(nb.version)&&(console.log(`cc-candybar ${fT}`),t.exit(0));let e=t.argv[2];if(e===`install`&&(await KT(t.argv.slice(3)),t.exit(0)),e===`install-url-handler`&&(VT(),t.exit(0)),e===`url-handle`){await UT(t.argv[3]);return}if(e===`daemon`){dF();return}if(e===`daemon-stats`&&(await NF(t.argv.slice(3)),t.exit(0)),e===`check`||e===`lint`){await uI(t.argv.slice(3));return}if(e===`schema`){YF();return}if(e===`doctor`){yI(t.argv.slice(3));return}hP(e)&&(await BF(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`),TI(),t.exit(1));let i=mI(await JC(r,t.argv,t.cwd(),{termCols:bI(),termRows:xI(),ssh:wI(),tmux:Pb(t.env),configEnv:ZF(t.env)}));i.debug!==null&&E(i.debug),i.kick&&_w(),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)}}EI();export{};