@promptctl/cc-candybar 1.148.3 → 1.148.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.mjs +80 -80
- package/package.json +5 -5
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{URL as n,URLSearchParams as r,fileURLToPath as i,pathToFileURL as a}from"node:url";import{json as o}from"node:stream/consumers";import s,{closeSync as c,constants as l,createReadStream as u,existsSync as d,fstatSync as f,openSync as p,readSync as m,realpathSync as h,statSync as g,watch as _}from"node:fs";import v,{basename as y,dirname as b,isAbsolute as x,join as S,sep as C}from"node:path";import w,{homedir as ee}from"node:os";import{spawn as te,spawnSync as ne}from"node:child_process";import{inspect as T,parseArgs as re,types as E}from"node:util";import D from"node:net";import ie from"node:v8";import{open as O,readFile as ae,readdir as oe,stat as se}from"node:fs/promises";import ce,{createHash as le,randomUUID as ue}from"node:crypto";import{clearInterval as de,setImmediate as fe,setInterval as pe}from"node:timers";import{get as me}from"node:https";import{setTimeout as he}from"node:timers/promises";import{createInterface as ge}from"node:readline";import{WriteStream as _e}from"node:tty";var ve=Object.create,ye=Object.defineProperty,be=Object.getOwnPropertyDescriptor,xe=Object.getOwnPropertyNames,Se=Object.getPrototypeOf,Ce=Object.prototype.hasOwnProperty,we=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),Te=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=xe(t),a=0,o=i.length,s;a<o;a++)s=i[a],!Ce.call(e,s)&&s!==n&&ye(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=be(t,s))||r.enumerable});return e},Ee=(e,t,n)=>(n=e==null?{}:ve(Se(e)),Te(t||!e||!e.__esModule?ye(n,`default`,{value:e,enumerable:!0}):n,e));function k(e,...t){process.env.CC_CANDYBAR_DEBUG&&console.error(`[DEBUG] ${e}`,...t)}function De(e,t){return E.isNativeError(e)?e.code===`ENOENT`&&t!==void 0&&!d(t)?`working directory does not exist: ${t}`:e.message:String(e)}const Oe={"click.pbcopy":1e3,"click.open":1e3,"doctor.tmux":1e3,"doctor.font":1e3,"doctor.process":1e3,"claude-input.type":1e3},ke=new Map;function Ae(e){let t=Oe[e];if(t===void 0)return{allowed:!0};let n=ke.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 je(e){ke.set(e,Date.now())}function Me(e){return e.env??process.env}function Ne(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 Pe=null;function Fe(e){Pe=e}function Ie(e,t){try{process.kill(-e,t)}catch(e){if(e.code!==`ESRCH`)throw e}}async function Le(e){if(e.signal?.aborted)return{ok:!1,reason:`aborted`,stdout:``,stderr:``,exitCode:null,signal:null};let t=Ae(e.category);if(!t.allowed)return Ne(e.category,t.minIntervalMs,t.sinceLastMs);je(e.category);let n=Date.now();return Pe?.onStart(e.category),new Promise(t=>{let r;try{r=te(e.bin,e.args??[],{cwd:e.cwd,env:Me(e),stdio:[`pipe`,`pipe`,`pipe`],detached:!0})}catch(r){Pe?.onEnd(e.category,Date.now()-n),t({ok:!1,reason:`spawn-error`,stdout:``,stderr:``,exitCode:null,signal:null,error:De(r,e.cwd)});return}let i=``,a=``,o=!1,s=null,c=null,l=null,u=()=>m(`aborted`),d=t=>{o||(o=!0,s&&clearTimeout(s),c&&clearTimeout(c),e.signal?.removeEventListener(`abort`,u),Pe?.onEnd(e.category,Date.now()-n),t())},f=e=>d(()=>t(e)),p=(e,t)=>{try{Ie(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)})}},m=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`,t=>{f({ok:!1,reason:`spawn-error`,stdout:i,stderr:a,exitCode:null,signal:null,error:De(t,e.cwd)})}),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(()=>m(`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 Re(e){let t=Ae(e.category);if(!t.allowed)return Ne(e.category,t.minIntervalMs,t.sinceLastMs);je(e.category);let n=Date.now();Pe?.onStart(e.category);let r=[`pipe`,`pipe`,`pipe`];try{let t=ne(e.bin,e.args??[],{cwd:e.cwd,env:Me(e),input:e.stdinInput,timeout:e.timeoutMs&&e.timeoutMs>0?e.timeoutMs:void 0,stdio:r,encoding:`utf8`});Pe?.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:De(t.error,e.cwd)};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 Pe?.onEnd(e.category,Date.now()-n),{ok:!1,reason:`spawn-error`,stdout:``,stderr:``,exitCode:null,signal:null,error:De(t,e.cwd)}}}function ze(e){let t=Ae(e.category);if(!t.allowed)return Ne(e.category,t.minIntervalMs,t.sinceLastMs);je(e.category);let n=Date.now();Pe?.onStart(e.category);let r=Be(e);return Pe?.onEnd(e.category,Date.now()-n),r}function Be(e){let t;try{t=te(e.bin,e.args??[],{cwd:e.cwd,env:Me(e),detached:!0,stdio:`ignore`})}catch(t){return{ok:!1,reason:`spawn-error`,stdout:``,stderr:``,exitCode:null,signal:null,error:De(t,e.cwd)}}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 Ve(e,t,n){let r=He(e);s.mkdirSync(v.dirname(r),{recursive:!0});let i=`${r}.tmp`,a=n??s.statSync(r,{throwIfNoEntry:!1})?.mode;try{s.writeFileSync(i,t,a===void 0?{}:{mode:a}),s.renameSync(i,r)}catch(e){throw s.rmSync(i,{force:!0}),e}}function He(e){let t=e;for(let e=0;e<Ue;e++){let e;try{e=s.lstatSync(t)}catch(e){if(e.code===`ENOENT`)return t;throw e}if(!e.isSymbolicLink())return t;t=v.resolve(s.realpathSync(v.dirname(t)),s.readlinkSync(t))}throw Error(`${e}: more than ${Ue} symbolic links`)}const Ue=40;function We(e,t){let n=e[t];return n&&n.length>0?n:void 0}function Ge(e=process.env){let t=We(e,`XDG_STATE_HOME`)??v.join(w.homedir(),`.local`,`state`);return v.join(t,`cc-candybar`)}function Ke(){let e=We(process.env,`XDG_CACHE_HOME`)??v.join(w.homedir(),`.cache`);return v.join(e,`cc-candybar`)}function qe(){return Ge()}function Je(){return process.env.CC_CANDYBAR_SOCKET||Ye()}function Ye(){let e=w.userInfo().uid;return v.join(`/tmp`,`cc-candybar-${e}`,`socket`)}function Xe(e){s.mkdirSync(e,{recursive:!0,mode:448});let t=s.lstatSync(e);if(t.isSymbolicLink())throw Error(`directory is a symlink: ${e}`);if(!t.isDirectory())throw Error(`not a directory: ${e}`);let n=w.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 Ze(e){Xe(v.dirname(e));for(let t of[e,Qe(e)])try{if(s.lstatSync(t).isSymbolicLink())throw Error(`path is a symlink: ${t}`)}catch(e){if(e.code!==`ENOENT`)throw e}}function Qe(e){return`${e}.lease`}function $e(){return Qe(Je())}function et(){return v.join(Ge(),`session-state.json`)}function tt(){return v.join(Ge(),`settings-history.json`)}function nt(){let e=process.env.CC_CANDYBAR_DAEMON_REGISTRY_DIR;if(e)return e;let t=w.userInfo().uid;return v.join(`/tmp`,`cc-candybar-${t}`,`daemons`)}function rt(){return v.join(Ge(),`spawn.lock`)}function it(){return v.join(Ge(),`spawn.cooldown`)}function at(){return v.join(Ge(),`spawn.backoff`)}function ot(){return v.join(Ge(),`diagnostics`)}function st(e=process.env){return v.join(Ge(e),`daemon.log`)}const ct=[`MEMENTO_CONFIG_HOME`,`XDG_CONFIG_HOME`];function lt(e,t){return Object.fromEntries(ct.flatMap(n=>{let r=e[n]??``;return r===``?[]:[[n,v.resolve(t,r)]]}))}const ut=[`TERM_PROGRAM`,`TERM_PROGRAM_VERSION`,`TERM`,`ITERM_PROFILE`,`XDG_CONFIG_HOME`];function A(e){return Object.fromEntries(ut.flatMap(t=>{let n=e[t]??``;return n===``?[]:[[t,n]]}))}const dt=[`native`,`node`,`frames`];function ft(e,t){return{kind:e,bundle:t,source:null}}const pt=Object.keys({termCols:!0,termRows:!0,ssh:!0,tmux:!0,configEnv:!0,claudeConfigDir:!0,mementoEnv:!0,terminalEnv:!0,client:!0});function mt(e){let t=xt(e.termCols),n=xt(e.termRows),r=St(e.ssh),i=yt(e.tmux),a=vt(e.configEnv),o=vt(e.claudeConfigDir),s=gt(e.mementoEnv),c=_t(e.terminalEnv),l=kt(e.client);return{...t!==void 0&&{termCols:t},...n!==void 0&&{termRows:n},...r!==void 0&&{ssh:r},...i!==void 0&&{tmux:i},...a!==void 0&&{configEnv:a},...o!==void 0&&{claudeConfigDir:o},...s!==void 0&&{mementoEnv:s},...c!==void 0&&{terminalEnv:c},...l!==void 0&&{client:l}}}function j(e,t){return pt.filter(n=>e[n]!==void 0&&t[n]===void 0).map(t=>({hint:t,sent:e[t]}))}function ht(e){return e.length===0?null:`Client hints refused: ${e.map(({hint:e,sent:t})=>`${e}=${JSON.stringify(t)}`).join(`, `)} — is the statusline client older than the daemon? Reinstall it (\`cc-candybar install\`, or \`just install-rust\` in a checkout).`}function gt(e){if(typeof e!=`object`||!e||Array.isArray(e))return;let t=e,n=ct.filter(e=>t[e]!==void 0);return n.every(e=>vt(t[e])!==void 0)?Object.fromEntries(n.map(e=>[e,t[e]])):void 0}function _t(e){if(typeof e!=`object`||!e||Array.isArray(e))return;let t=e,n=ut.filter(e=>t[e]!==void 0);return n.every(e=>typeof t[e]==`string`&&t[e]!==``)?Object.fromEntries(n.map(e=>[e,t[e]])):void 0}function vt(e){return typeof e==`string`&&v.isAbsolute(e)?e:void 0}function yt(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 bt=1e4;function xt(e){if(typeof e!=`number`||!Number.isFinite(e))return;let t=Math.floor(e);if(!(t<=0))return t>bt?bt:t}function St(e){return typeof e==`boolean`?e:void 0}function Ct(e){return typeof e==`string`&&e!==``&&e.length<=64?e:null}var wt=class extends Error{constructor(e){super(e),this.name=`ProtocolError`}};function Tt(e){return Et(JSON.stringify(e))}function Et(e){let t=Buffer.from(e,`utf8`),n=Buffer.alloc(4);return n.writeUInt32BE(t.length,0),Buffer.concat([n,t])}function Dt(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 wt(`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 wt(e instanceof Error?e.message:String(e));e instanceof Error&&(n.cause=e),t(n);return}}}}function Ot(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=Dt(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(Tt(t))})}function kt(e){if(typeof e!=`object`||!e||Array.isArray(e))return;let{kind:t,bundle:n,source:r}=e,i=vt(n);return dt.includes(t)&&i!==void 0&&(r===null||typeof r==`string`&&r!==``)?{kind:t,bundle:i,source:r}:void 0}async function At(e,t,n){let r=null;try{r=await Ft(Je(),t.connectMs);let i=await Ot(r,{v:3,...e},t.budgetMs);return Nt(e.kind,i,n)}catch(e){return Pt(e)}finally{r&&r.destroy()}}function jt(e,t){return typeof e==`string`?e:t}function Mt(e){return typeof e==`number`&&Number.isInteger(e)&&e>=0?e:0}function Nt(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=jt(r.error,`(no error message)`);switch(r.code){case`VERSION_MISMATCH`:return{kind:`permanent`,cause:`version_mismatch`,clientV:3,daemonV:Mt(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};case`SWITCHED_OFF`:return{kind:`permanent`,cause:`switched_off`,message:i};default:return{kind:`permanent`,cause:`malformed_response`,message:`unknown error code: ${String(r.code)}`}}}function Pt(e){if(e instanceof wt||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 Ft(e,t){return new Promise((n,r)=>{let i=D.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 It(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`switched_off`:case`malformed_response`:return`daemon error (${e.cause}): ${e.message}`}}const Lt=`1.148.3`,Rt={connectMs:50,budgetMs:150},zt={connectMs:50,budgetMs:200};function Bt(e){let t=e.output;return typeof t==`string`?t:void 0}function Vt(e){return Nt(`render`,e,Bt)}function Ht(e,t,n,r){return At({kind:`render`,hookData:e,args:t,cwd:n,...r},Rt,Bt)}function M(e,t){return At({kind:`pane-session`,socket:e,pane:t},zt,e=>`paneSession`in e?e.paneSession:void 0)}function Ut(e,t){return At({kind:`click`,verb:e,value:t,clientVersion:Lt},zt,Bt)}let Wt=null;function Gt(e){if(Wt!==null)return Wt;s.mkdirSync(v.dirname(e),{recursive:!0});try{Wt=s.statSync(e).size}catch{Wt=0}return Wt}function Kt(e){for(let t=2;t>=1;t--){let n=`${e}.${t}`,r=`${e}.${t+1}`;try{s.renameSync(n,r)}catch{}}try{s.renameSync(e,`${e}.1`)}catch{}Wt=0}const qt=(e,t)=>k(t);function N(e,t){let n=`${new Date().toISOString()} [${e}] ${t}\n`;try{let e=st(),t=Gt(e);s.appendFileSync(e,n),Wt=t+Buffer.byteLength(n,`utf8`),Wt>=5242880&&Kt(e)}catch(e){Wt=null;try{process.stderr.write(`${n}cc-candybar: daemon.log unwritable: ${e.message}\n`)}catch{}}}function P(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(`
|
|
2
|
+
import{createRequire as e}from"node:module";import t from"node:process";import{URL as n,URLSearchParams as r,fileURLToPath as i,pathToFileURL as a}from"node:url";import{json as o}from"node:stream/consumers";import s,{closeSync as c,constants as l,createReadStream as u,existsSync as d,fstatSync as f,openSync as p,readSync as m,realpathSync as h,statSync as g,watch as _}from"node:fs";import v,{basename as y,dirname as b,isAbsolute as x,join as S,sep as C}from"node:path";import w,{homedir as ee}from"node:os";import{spawn as te,spawnSync as ne}from"node:child_process";import{inspect as T,parseArgs as re,types as E}from"node:util";import D from"node:net";import ie from"node:v8";import{open as O,readFile as ae,readdir as oe,stat as se}from"node:fs/promises";import ce,{createHash as le,randomUUID as ue}from"node:crypto";import{clearInterval as de,setImmediate as fe,setInterval as pe}from"node:timers";import{get as me}from"node:https";import{setTimeout as he}from"node:timers/promises";import{createInterface as ge}from"node:readline";import{WriteStream as _e}from"node:tty";var ve=Object.create,ye=Object.defineProperty,be=Object.getOwnPropertyDescriptor,xe=Object.getOwnPropertyNames,Se=Object.getPrototypeOf,Ce=Object.prototype.hasOwnProperty,we=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),Te=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=xe(t),a=0,o=i.length,s;a<o;a++)s=i[a],!Ce.call(e,s)&&s!==n&&ye(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=be(t,s))||r.enumerable});return e},Ee=(e,t,n)=>(n=e==null?{}:ve(Se(e)),Te(t||!e||!e.__esModule?ye(n,`default`,{value:e,enumerable:!0}):n,e));function k(e,...t){process.env.CC_CANDYBAR_DEBUG&&console.error(`[DEBUG] ${e}`,...t)}function De(e,t){return E.isNativeError(e)?e.code===`ENOENT`&&t!==void 0&&!d(t)?`working directory does not exist: ${t}`:e.message:String(e)}const Oe={"click.pbcopy":1e3,"click.open":1e3,"doctor.tmux":1e3,"doctor.font":1e3,"doctor.process":1e3,"claude-input.type":1e3},ke=new Map;function Ae(e){let t=Oe[e];if(t===void 0)return{allowed:!0};let n=ke.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 je(e){ke.set(e,Date.now())}function Me(e){return e.env??process.env}function Ne(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 Pe=null;function Fe(e){Pe=e}function Ie(e,t){try{process.kill(-e,t)}catch(e){if(e.code!==`ESRCH`)throw e}}async function Le(e){if(e.signal?.aborted)return{ok:!1,reason:`aborted`,stdout:``,stderr:``,exitCode:null,signal:null};let t=Ae(e.category);if(!t.allowed)return Ne(e.category,t.minIntervalMs,t.sinceLastMs);je(e.category);let n=Date.now();return Pe?.onStart(e.category),new Promise(t=>{let r;try{r=te(e.bin,e.args??[],{cwd:e.cwd,env:Me(e),stdio:[`pipe`,`pipe`,`pipe`],detached:!0})}catch(r){Pe?.onEnd(e.category,Date.now()-n),t({ok:!1,reason:`spawn-error`,stdout:``,stderr:``,exitCode:null,signal:null,error:De(r,e.cwd)});return}let i=``,a=``,o=!1,s=null,c=null,l=null,u=()=>m(`aborted`),d=t=>{o||(o=!0,s&&clearTimeout(s),c&&clearTimeout(c),e.signal?.removeEventListener(`abort`,u),Pe?.onEnd(e.category,Date.now()-n),t())},f=e=>d(()=>t(e)),p=(e,t)=>{try{Ie(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)})}},m=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`,t=>{f({ok:!1,reason:`spawn-error`,stdout:i,stderr:a,exitCode:null,signal:null,error:De(t,e.cwd)})}),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(()=>m(`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 Re(e){let t=Ae(e.category);if(!t.allowed)return Ne(e.category,t.minIntervalMs,t.sinceLastMs);je(e.category);let n=Date.now();Pe?.onStart(e.category);let r=[`pipe`,`pipe`,`pipe`];try{let t=ne(e.bin,e.args??[],{cwd:e.cwd,env:Me(e),input:e.stdinInput,timeout:e.timeoutMs&&e.timeoutMs>0?e.timeoutMs:void 0,stdio:r,encoding:`utf8`});Pe?.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:De(t.error,e.cwd)};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 Pe?.onEnd(e.category,Date.now()-n),{ok:!1,reason:`spawn-error`,stdout:``,stderr:``,exitCode:null,signal:null,error:De(t,e.cwd)}}}function ze(e){let t=Ae(e.category);if(!t.allowed)return Ne(e.category,t.minIntervalMs,t.sinceLastMs);je(e.category);let n=Date.now();Pe?.onStart(e.category);let r=Be(e);return Pe?.onEnd(e.category,Date.now()-n),r}function Be(e){let t;try{t=te(e.bin,e.args??[],{cwd:e.cwd,env:Me(e),detached:!0,stdio:`ignore`})}catch(t){return{ok:!1,reason:`spawn-error`,stdout:``,stderr:``,exitCode:null,signal:null,error:De(t,e.cwd)}}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 Ve(e,t,n){let r=He(e);s.mkdirSync(v.dirname(r),{recursive:!0});let i=`${r}.tmp`,a=n??s.statSync(r,{throwIfNoEntry:!1})?.mode;try{s.writeFileSync(i,t,a===void 0?{}:{mode:a}),s.renameSync(i,r)}catch(e){throw s.rmSync(i,{force:!0}),e}}function He(e){let t=e;for(let e=0;e<Ue;e++){let e;try{e=s.lstatSync(t)}catch(e){if(e.code===`ENOENT`)return t;throw e}if(!e.isSymbolicLink())return t;t=v.resolve(s.realpathSync(v.dirname(t)),s.readlinkSync(t))}throw Error(`${e}: more than ${Ue} symbolic links`)}const Ue=40;function We(e,t){let n=e[t];return n&&n.length>0?n:void 0}function Ge(e=process.env){let t=We(e,`XDG_STATE_HOME`)??v.join(w.homedir(),`.local`,`state`);return v.join(t,`cc-candybar`)}function Ke(){let e=We(process.env,`XDG_CACHE_HOME`)??v.join(w.homedir(),`.cache`);return v.join(e,`cc-candybar`)}function qe(){return Ge()}function Je(){return process.env.CC_CANDYBAR_SOCKET||Ye()}function Ye(){let e=w.userInfo().uid;return v.join(`/tmp`,`cc-candybar-${e}`,`socket`)}function Xe(e){s.mkdirSync(e,{recursive:!0,mode:448});let t=s.lstatSync(e);if(t.isSymbolicLink())throw Error(`directory is a symlink: ${e}`);if(!t.isDirectory())throw Error(`not a directory: ${e}`);let n=w.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 Ze(e){Xe(v.dirname(e));for(let t of[e,Qe(e)])try{if(s.lstatSync(t).isSymbolicLink())throw Error(`path is a symlink: ${t}`)}catch(e){if(e.code!==`ENOENT`)throw e}}function Qe(e){return`${e}.lease`}function $e(){return Qe(Je())}function et(){return v.join(Ge(),`session-state.json`)}function tt(){return v.join(Ge(),`settings-history.json`)}function nt(){let e=process.env.CC_CANDYBAR_DAEMON_REGISTRY_DIR;if(e)return e;let t=w.userInfo().uid;return v.join(`/tmp`,`cc-candybar-${t}`,`daemons`)}function rt(){return v.join(Ge(),`spawn.lock`)}function it(){return v.join(Ge(),`spawn.cooldown`)}function at(){return v.join(Ge(),`spawn.backoff`)}function ot(){return v.join(Ge(),`diagnostics`)}function st(e=process.env){return v.join(Ge(e),`daemon.log`)}const ct=[`MEMENTO_CONFIG_HOME`,`XDG_CONFIG_HOME`];function lt(e,t){return Object.fromEntries(ct.flatMap(n=>{let r=e[n]??``;return r===``?[]:[[n,v.resolve(t,r)]]}))}const ut=[`TERM_PROGRAM`,`TERM_PROGRAM_VERSION`,`TERM`,`ITERM_PROFILE`,`XDG_CONFIG_HOME`];function A(e){return Object.fromEntries(ut.flatMap(t=>{let n=e[t]??``;return n===``?[]:[[t,n]]}))}const dt=[`native`,`node`,`frames`];function ft(e,t){return{kind:e,bundle:t,source:null}}const pt=Object.keys({termCols:!0,termRows:!0,ssh:!0,tmux:!0,configEnv:!0,claudeConfigDir:!0,mementoEnv:!0,terminalEnv:!0,client:!0});function mt(e){let t=xt(e.termCols),n=xt(e.termRows),r=St(e.ssh),i=yt(e.tmux),a=vt(e.configEnv),o=vt(e.claudeConfigDir),s=gt(e.mementoEnv),c=_t(e.terminalEnv),l=kt(e.client);return{...t!==void 0&&{termCols:t},...n!==void 0&&{termRows:n},...r!==void 0&&{ssh:r},...i!==void 0&&{tmux:i},...a!==void 0&&{configEnv:a},...o!==void 0&&{claudeConfigDir:o},...s!==void 0&&{mementoEnv:s},...c!==void 0&&{terminalEnv:c},...l!==void 0&&{client:l}}}function j(e,t){return pt.filter(n=>e[n]!==void 0&&t[n]===void 0).map(t=>({hint:t,sent:e[t]}))}function ht(e){return e.length===0?null:`Client hints refused: ${e.map(({hint:e,sent:t})=>`${e}=${JSON.stringify(t)}`).join(`, `)} — is the statusline client older than the daemon? Reinstall it (\`cc-candybar install\`, or \`just install-rust\` in a checkout).`}function gt(e){if(typeof e!=`object`||!e||Array.isArray(e))return;let t=e,n=ct.filter(e=>t[e]!==void 0);return n.every(e=>vt(t[e])!==void 0)?Object.fromEntries(n.map(e=>[e,t[e]])):void 0}function _t(e){if(typeof e!=`object`||!e||Array.isArray(e))return;let t=e,n=ut.filter(e=>t[e]!==void 0);return n.every(e=>typeof t[e]==`string`&&t[e]!==``)?Object.fromEntries(n.map(e=>[e,t[e]])):void 0}function vt(e){return typeof e==`string`&&v.isAbsolute(e)?e:void 0}function yt(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 bt=1e4;function xt(e){if(typeof e!=`number`||!Number.isFinite(e))return;let t=Math.floor(e);if(!(t<=0))return t>bt?bt:t}function St(e){return typeof e==`boolean`?e:void 0}function Ct(e){return typeof e==`string`&&e!==``&&e.length<=64?e:null}var wt=class extends Error{constructor(e){super(e),this.name=`ProtocolError`}};function Tt(e){return Et(JSON.stringify(e))}function Et(e){let t=Buffer.from(e,`utf8`),n=Buffer.alloc(4);return n.writeUInt32BE(t.length,0),Buffer.concat([n,t])}function Dt(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 wt(`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 wt(e instanceof Error?e.message:String(e));e instanceof Error&&(n.cause=e),t(n);return}}}}function Ot(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=Dt(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(Tt(t))})}function kt(e){if(typeof e!=`object`||!e||Array.isArray(e))return;let{kind:t,bundle:n,source:r}=e,i=vt(n);return dt.includes(t)&&i!==void 0&&(r===null||typeof r==`string`&&r!==``)?{kind:t,bundle:i,source:r}:void 0}async function At(e,t,n){let r=null;try{r=await Ft(Je(),t.connectMs);let i=await Ot(r,{v:3,...e},t.budgetMs);return Nt(e.kind,i,n)}catch(e){return Pt(e)}finally{r&&r.destroy()}}function jt(e,t){return typeof e==`string`?e:t}function Mt(e){return typeof e==`number`&&Number.isInteger(e)&&e>=0?e:0}function Nt(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=jt(r.error,`(no error message)`);switch(r.code){case`VERSION_MISMATCH`:return{kind:`permanent`,cause:`version_mismatch`,clientV:3,daemonV:Mt(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};case`SWITCHED_OFF`:return{kind:`permanent`,cause:`switched_off`,message:i};default:return{kind:`permanent`,cause:`malformed_response`,message:`unknown error code: ${String(r.code)}`}}}function Pt(e){if(e instanceof wt||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 Ft(e,t){return new Promise((n,r)=>{let i=D.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 It(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`switched_off`:case`malformed_response`:return`daemon error (${e.cause}): ${e.message}`}}const Lt=`1.148.4`,Rt={connectMs:50,budgetMs:150},zt={connectMs:50,budgetMs:200};function Bt(e){let t=e.output;return typeof t==`string`?t:void 0}function Vt(e){return Nt(`render`,e,Bt)}function Ht(e,t,n,r){return At({kind:`render`,hookData:e,args:t,cwd:n,...r},Rt,Bt)}function M(e,t){return At({kind:`pane-session`,socket:e,pane:t},zt,e=>`paneSession`in e?e.paneSession:void 0)}function Ut(e,t){return At({kind:`click`,verb:e,value:t,clientVersion:Lt},zt,Bt)}let Wt=null;function Gt(e){if(Wt!==null)return Wt;s.mkdirSync(v.dirname(e),{recursive:!0});try{Wt=s.statSync(e).size}catch{Wt=0}return Wt}function Kt(e){for(let t=2;t>=1;t--){let n=`${e}.${t}`,r=`${e}.${t+1}`;try{s.renameSync(n,r)}catch{}}try{s.renameSync(e,`${e}.1`)}catch{}Wt=0}const qt=(e,t)=>k(t);function N(e,t){let n=`${new Date().toISOString()} [${e}] ${t}\n`;try{let e=st(),t=Gt(e);s.appendFileSync(e,n),Wt=t+Buffer.byteLength(n,`utf8`),Wt>=5242880&&Kt(e)}catch(e){Wt=null;try{process.stderr.write(`${n}cc-candybar: daemon.log unwritable: ${e.message}\n`)}catch{}}}function P(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(`
|
|
3
3
|
`)}function Jt(e,t){return e===`darwin`?[Yt(`footprint`,[`-p`,String(t)]),Yt(`vmmap`,[`--summary`,String(t)])]:e===`linux`?[Xt(`/proc/self/smaps_rollup`),Xt(`/proc/self/status`)]:[]}function Yt(e,t){return{name:`${e} ${t.join(` `)}`,read:()=>{let n=Re({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}`}${Zt(n.stderr)}`}}}}function Xt(e){return{name:e,read:()=>{try{let t=s.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 Zt(e){let t=e.split(`
|
|
4
4
|
`).map(e=>e.trim()).find(e=>e.length>0);return t===void 0?``:` (${t})`}const Qt=`CC_CANDYBAR_RSS_LIMIT_MB`;function $t(e){let t=e[Qt];if(t===void 0)return 512;let n=/^\d+$/.test(t)?Number(t):NaN;if(!Number.isSafeInteger(n)||n<=0)throw Error(`${Qt} must be a positive integer (MB), got ${JSON.stringify(t)}`);return n}function en(e){return $t(e)*2}const tn=1024*1024,nn=e=>Math.round(e/tn);function rn(e){return $t(e)*tn}const an={memoryReport:{prefix:`memory-`,suffix:`.txt`},heapSnapshot:{prefix:`heap-`,suffix:`.heapsnapshot`}};function on(e,t){return e>t}function sn(e,t){return e>t*.75}function cn(e,t,n){let{prefix:r,suffix:i}=an[t];return v.join(e,`${r}${n}${i}`)}function ln(e){for(let t of Object.keys(an)){let{prefix:n,suffix:r}=an[t];if(e.startsWith(n)&&e.endsWith(r))return t}return null}function un(e){let t=e.rssLimitBytes??512*tn,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 dn(e.log,`memory report`,()=>{let t=cn(e.snapshotDir,`memoryReport`,o);e.writeMemoryReport(t,e.captureMemoryReport()),e.log(`info`,`memory report written: ${t}`)}),dn(e.log,`heap snapshot`,()=>{let t=cn(e.snapshotDir,`heapSnapshot`,o);e.log(`info`,`heap snapshot written: ${e.writeHeapSnapshot(t)}`)}),dn(e.log,`artifact rotation`,()=>{for(let{artifacts:t}of fn(e.listArtifacts()).slice(n))for(let n of Object.values(t))dn(e.log,`evicting ${n}`,()=>e.removeFile(n))}),e.shutdown(0),!0}function a(){let{rss:n,heapTotal:r}=e.memoryBytes();return sn(n,t)?`rss ${n} approaching limit ${t} (v8 heap ${r})`:null}function o(){let{rss:n}=e.memoryBytes(),r;try{r={kind:`ok`,value:fn(e.listArtifacts())}}catch(e){r={kind:`failed`,reason:e.message}}return{pid:e.pid,rss:n,rssLimit:t,postMortems:r}}function s(e=6e4){let t=setInterval(()=>{i()},e);return t.unref(),{disarm:()=>clearInterval(t)}}return{checkRss:i,describeNextRestart:a,serving:o,arm:s}}function dn(e,t,n){try{n()}catch(n){e(`warn`,`${t} failed: ${n.message}`)}}function fn(e){let t=new Map;for(let n of e){let e=v.basename(n),r=ln(e);if(r===null)continue;let{prefix:i,suffix:a}=an[r],o=e.slice(i.length,e.length-a.length);t.set(o,{...t.get(o),[r]:n})}let n=Object.keys(an);return[...t].sort(([e],[t])=>on(e,t)?-1:1).map(([e,t])=>({identity:e,artifacts:Object.fromEntries(n.flatMap(e=>t[e]===void 0?[]:[[e,t[e]]]))}))}function pn(e,t,n={}){let r=qe();return{now:()=>Date.now(),pid:process.pid,snapshotDir:r,log:N,memoryBytes:()=>{let e=process.memoryUsage();return{rss:e.rss,heapTotal:e.heapTotal}},captureMemoryReport:()=>P(Jt(process.platform,process.pid)),writeMemoryReport:(e,t)=>s.writeFileSync(e,t,{mode:384}),writeHeapSnapshot:e=>ie.writeHeapSnapshot(e),listArtifacts:()=>{let e;try{e=s.readdirSync(r)}catch(e){if(e.code===`ENOENT`)return[];throw e}return e.filter(e=>ln(e)!==null).map(e=>v.join(r,e))},removeFile:e=>s.unlinkSync(e),shutdown:t,startedAtMs:e,...n}}function mn(e={}){if(kn()!==null)return;let n=e.spawn??An,r=En();if(r.kind===`contended`){let e=gn();e!==null&&e>2e3&&(t.stderr.write(`cc-candybar: spawn-lock held ${e}ms (likely crashed holder) — spawning unlocked\n`),hn(n));return}if(r.kind===`error`){t.stderr.write(`cc-candybar: spawn-lock unavailable (${r.reason}) — spawning unlocked\n`),hn(n);return}try{hn(n)}finally{On()}}function hn(e){Cn()&&_n(e)}function gn(){try{let e=s.statSync(rt());return Date.now()-e.mtimeMs}catch{return null}}function _n(e){try{e()||t.stderr.write(`cc-candybar: daemon spawn returned false (unable to resolve script path?)
|
|
5
5
|
`)}catch(e){t.stderr.write(`cc-candybar: daemon spawn failed: ${e.message}\n`)}}function vn(e,t){return e===null?{kind:`allow`}:e<-1e4?{kind:`allow-future-garbage`,futureMs:-e}:e<t?{kind:`deny`}:{kind:`allow`}}function yn(e){return Math.min(3e3*2**Math.min(Math.max(e,0),5),6e4)}function bn(e){try{let t=s.readFileSync(e,`utf8`).trim(),n=Number(t);return!Number.isInteger(n)||n<0?0:Math.min(n,5)}catch{return 0}}function xn(e,n){try{s.mkdirSync(v.dirname(e),{recursive:!0}),s.writeFileSync(e,String(n),{mode:384})}catch(e){t.stderr.write(`cc-candybar: could not record spawn.backoff: ${e.message}\n`)}}function Sn(){try{s.unlinkSync(at())}catch(e){e.code!==`ENOENT`&&t.stderr.write(`cc-candybar: could not reset spawn.backoff: ${e.message}\n`)}}function Cn(){let e=it(),n=at(),r=bn(n),i=vn(F(e),yn(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`),wn(e),xn(n,Math.min(r+1,5)),!0)}function F(e){try{return Date.now()-s.statSync(e).mtimeMs}catch{return null}}function wn(e){try{s.mkdirSync(v.dirname(e),{recursive:!0}),s.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 Tn=null;function En(){let e=rt();for(let n=0;n<2;n++){try{let n=s.openSync(e,`wx`,384);try{s.writeSync(n,JSON.stringify({pid:t.pid,ts:Date.now()}))}catch{}return Tn={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(!Dn(e))return{kind:`contended`};try{s.unlinkSync(e)}catch(e){if(e.code!==`ENOENT`)return{kind:`error`,reason:`unlink stale spawn.lock: ${e.message}`}}}return{kind:`contended`}}function Dn(e){try{let t=s.statSync(e);return Date.now()-t.mtimeMs>1e4}catch{return!0}}function On(){if(!Tn)return;let{fd:e,path:t}=Tn;Tn=null;try{s.closeSync(e)}catch{}try{s.unlinkSync(t)}catch{}}function kn(){try{return s.mkdirSync(qe(),{recursive:!0}),null}catch(e){return`mkdir ${qe()}: ${e.message}`}}function An(){let e=t.execPath,n=t.argv[1];return n?ze({bin:e,args:[`--max-old-space-size=${en(t.env)}`,n,`daemon`],category:`daemon-spawn`}).ok:!1}const jn=`cc-candybar`,Mn=`dispatch`,Nn=`set-state`,Pn=`step-state`,Fn=`copy`,In=`open-vscode`,Ln=`toolbar-toggle`,Rn=`show-config-error`,zn=`show-config-warning`,Bn=`set-config`,Vn=`step-config`,Hn=`save`,Un=`save-preset`,Wn=`save-theme-default`,Gn=`delete-preset`,Kn=`reset-config`,qn=`apply-layout-op`,Jn=`undo`,Yn=`redo`,Xn=`back`,Zn=`rewind`,Qn=`apply-update`,$n=`doctor-run`,er=`doctor-fix`,tr=`doctor-mark`,nr=`doctor-probe`,rr=`ceiling`,ir=`slash`;function ar(e){return e.map(encodeURIComponent).join(`/`)}function or(e){return e.length===0?[]:e.split(`/`).map(decodeURIComponent)}function sr(e){return`${jn}://${Mn}/${e.map(e=>`e=${encodeURIComponent(`${e.verb}/${ar(e.args)}`)}`).join(`&`)}`}function cr(e){return new r(e).getAll(`e`).map(fr)}const lr=new Set([Nn,Kn]);function ur(e){return e.reduce((e,t)=>{let n=e.at(-1),r=n&&dr(n,t);return r?[...e.slice(0,-1),r]:[...e,t]},[])}function dr(e,t){if(e.verb!==t.verb||!lr.has(e.verb))return;let[n,r]=[fr(e.value),fr(t.value)];return n.verb===r.verb?{verb:e.verb,value:`${n.verb}/${n.value}/${r.value}`}:void 0}function fr(e){let t=e.indexOf(`/`);return t===-1?{verb:e,value:``}:{verb:e.slice(0,t),value:e.slice(t+1)}}const pr=`closed`,mr=`🍫`;function hr(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 gr(e,t,n,r){let i=hr(e,t.length,n);if(i!==void 0)throw Error(i);return t.length===1?t[0]:t[r]}function _r(e){return e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}function vr(e,t,n,r,i){return{kind:`segment`,name:e,opens:{ref:t,body:n,placement:r},...i!==void 0&&{when:i}}}function yr(e,...t){return`{{ and ${[e,...t].map(br).join(` `)} }}`}function br(e){return`(eq .${e.variable} "${_r(e.member)}")`}function xr(e,t,n){return`{{ ${Sr(e,Cr(t),Cr(n))} }}`}function Sr(e,t,n){return`action "${e}" ${t} ${n}`}function Cr(e){return`"${_r(e)}"`}function wr(e,t){return{kind:`state`,key:e,default:t}}function Tr(e,t){return{set:e,cycle:[pr,t]}}const Er=/^[A-Za-z0-9_./,:@%+-][A-Za-z0-9_./,:@%+=-]*$/;function Dr(e){return`'${e.replaceAll(`'`,`'\\''`)}'`}function Or(e){return Er.test(e)?e:Dr(e)}var kr=we(((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]/})),Ar=we(((e,t)=>{let n=kr();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)}}})),jr=we(((e,t)=>{let n=Ar(),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(),ne[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===`
|
|
@@ -50,35 +50,35 @@ import{createRequire as e}from"node:module";import t from"node:process";import{U
|
|
|
50
50
|
`).forEach((e,i)=>{i>0&&n.push([]);let a=n.at(-1);a.push({end:(a.at(-1)?.end??0)+Co(e),free:!t[r]})})}),n.map(e=>t=>{let n=0,r=e.length;for(;n<r;){let i=n+r>>1;e[i].end<=t?n=i+1:r=i}return e[n].free})}function*Ju(e,t,n,r,i){if(n+r===0)return yield*e;let a=e.filter(e=>e.text!==``),o=e=>` `.repeat(e),s=G.getLineLength(a);if(s===0)return yield new G(o(n+r),i);let c=a.length-1,l=n>0&&a[0].cellLength>0&&t(0),u=r>0&&a[c].cellLength>0&&t(s-1),d=+!!l,f=u?c:c+1;if(d>f){yield new G(o(n)+a[0].text+o(r),i);return}n>0&&(yield new G(o(n)+(l?a[0].text:``),i)),yield*a.slice(d,f),r>0&&(yield new G((u?a[c].text:``)+o(r),i))}const Yu=Object.freeze({name:`join`});var Xu=class{fg;bg;constructor(e,t){this.fg=e,this.bg=t}};function Zu(e,t){for(let n=e;n;n=n.inner){if(t.has(n.owner))return{fg:!0,bg:!0};if(n.owner instanceof Xu){let{fg:e,bg:r}=n.owner;return{fg:e!==null&&t.has(e),bg:r!==null&&t.has(r)}}}return{fg:!1,bg:!1}}function Qu(e,t,n,r){let i=e.join(t,n,r);return{render:e=>G.anchorLines([[...hu(i,e)]],Yu)[0]}}function $u(e){return{render:t=>G.anchorLines([[...hu(e,t)]],e)[0]}}var ed=class{items;joiner;constructor(e,t){this.items=e,this.joiner=t}*render(e){let t=this.items;if(t.length===0)return;let n={...e,justify:void 0};yield*hu(Qu(this.joiner,null,t[0],{index:0}),n);for(let e=0;e<t.length;e++){let r=t[e];yield*hu($u(r),n);let i=e+1<t.length?t[e+1]:null;yield*hu(Qu(this.joiner,r,i,{index:e+1}),n)}yield G.line()}contents(){return this.items}measure(e){let t=0;for(let n of hu(this,e))t+=n.cellLength;return{minimum:t,maximum:t}}};const td=[`seam`,`divider`,`lead`,`tail`];function*nd(e){yield e,`mix`in e&&(yield*nd(e.mix[0]),yield*nd(e.mix[1]))}const rd=e=>typeof e.glyph==`string`?[e.glyph]:e.glyph.oneOf,id=(e,t,n,r)=>{let i=rd(e);return i[Math.floor(parseInt(Du(`${t}:${n}:${r}`),16)/2**32*i.length)]},ad=e=>Co(rd(e)[0]??``),od=e=>e.reduce((e,t)=>e+ad(t),0);function sd(e,t,n){if(e===`ground`)return n(`mixes ground, whose colour is unknown`);let r=typeof e==`object`&&e?e:{};if((r.edge===`left`||r.edge===`right`)&&(r.part===`bg`||r.part===`fg`))return r.edge===t&&n(`names the ${t} neighbour, which this part is drawn without`),Object.freeze({edge:r.edge,part:r.part});if(typeof r.role==`string`)return Object.freeze({role:r.role});if(Array.isArray(r.mix)&&r.mix.length===3){let[e,i,a]=r.mix;return(typeof a!=`number`||!(a>=0&&a<=1))&&n(`mixes at ${String(a)}, outside 0..1`),Object.freeze({mix:Object.freeze([sd(e,t,n),sd(i,t,n),a])})}return n(`has a colour that is not a Paint: ${JSON.stringify(e)}`)}const cd=(e,t,n)=>e===`ground`?e:sd(e,t,n),ld={seam:void 0,divider:void 0,lead:`left`,tail:`right`},ud={seam:`seam`,divider:`seam`,lead:`caps`,tail:`caps`};function dd(e,t,n,r){let i=e.glyph,a=typeof i==`object`&&i?i.oneOf:void 0;typeof i!=`string`&&!(Array.isArray(a)&&a.every(e=>typeof e==`string`))&&r(`has a glyph that is neither a string nor a oneOf of strings: ${JSON.stringify(i)}`),e.fg===`ground`&&e.bg===`ground`&&r(`has ground on both sides`);let o=rd(e);return o.length===0&&r(`has an empty oneOf`),o.some(t=>Co(t)!==ad(e))&&r(`has oneOf members of different widths`),t===`ascii`&&!o.every(uu)&&r(`is not ASCII`),Object.freeze({glyph:typeof e.glyph==`string`?e.glyph:Object.freeze({oneOf:Object.freeze([...o])}),fg:cd(e.fg,ld[n],r),bg:cd(e.bg,ld[n],r)})}function fd(e,t,n,r){let i=e,a=ud[n];if(typeof i?.[t]!=`object`||i[t]===null)throw Error(`${a}: has no ${t} form`);let o=i[t][n];if(!Array.isArray(o))throw Error(`${a}: ${t} ${n} is not a list of cells`);return Object.freeze(o.map((e,i)=>{let o=e=>{throw Error(`${a}: ${t} ${n}[${i}] ${e}`)};return typeof e==`object`&&e?r(e,o):o(`is not a cell`)}))}const pd=(e,t)=>(n,r)=>dd(n,e,t,r),md=(e,t)=>(n,r)=>{if(!(`cap`in n))return dd(n,e,t,r);let{cap:i}=n;return Object.keys(n).length!==1&&r(`names a cap and draws cells of its own; a cell is one or the other`),i===`lead`||i===`tail`?Object.freeze({cap:i}):r(`names a cap that is neither lead nor tail: ${JSON.stringify(i)}`)},hd=e=>[od(e.filter(e=>!(`cap`in e))),e.filter(e=>`cap`in e&&e.cap===`lead`).length,e.filter(e=>`cap`in e&&e.cap===`tail`).length];function gd(e){let t=t=>{let n=fd(e,t,`seam`,md(t,`seam`)),r=e[t].divider===e[t].seam?n:fd(e,t,`divider`,md(t,`divider`)),[i,a]=[hd(n),hd(r)];if(i.some((e,t)=>e!==a[t]))throw Error(`seam: ${t} divider is not the width of the seam under every caps`);return Object.freeze({seam:n,divider:r})};return Object.freeze({glyph:t(`glyph`),ascii:t(`ascii`)})}function _d(e){let t=t=>Object.freeze({lead:fd(e,t,`lead`,pd(t,`lead`)),tail:fd(e,t,`tail`,pd(t,`tail`))});return Object.freeze({glyph:t(`glyph`),ascii:t(`ascii`)})}function vd(e,t){let n=e=>e.flatMap(e=>`cap`in e?t[e.cap]:[e]),r=n(e.seam);return{seam:r,divider:e.divider===e.seam?r:n(e.divider),lead:t.lead,tail:t.tail}}const yd=(e,t)=>e.some(e=>[e.fg,e.bg].some(e=>e!==`ground`&&[...nd(e)].some(e=>`edge`in e&&e.edge===t&&e.part===`bg`)));function bd(e){let t=[...e.seam,...e.divider];return{shape:e,reads:{seam:{left:yd(t,`left`),right:yd(t,`right`)},lead:yd(e.lead,`right`),tail:yd(e.tail,`left`)}}}function xd(e){return e!==void 0&&!e.isDefault?e:void 0}function Sd(e){return e.flattenAlpha(Yo)}function Cd(e,t){if(e.reverse)return!1;let{color:n,bgcolor:r}=e.drawnColors(t??V.TRUECOLOR);if(n===void 0||r===void 0)return!1;let i=n.fixedValue,a=r.fixedValue;return i!==void 0&&a!==void 0?ac.fromRgba(i).deltaE(ac.fromRgba(a))<.04:n.number===void 0?n.name===r.name:n.number===r.number}function wd(e,t,n){if(`edge`in e){let n=t[e.edge];if(e.part===`fg`)return n?.color;let r=xd(n?.bgcolor);return r&&Sd(r)}if(`role`in e)return fu(n,e.role).color;let[r,i,a]=e.mix,o=wd(r,t,n),s=wd(i,t,n);return o&&s&&H.blend(o,s,a)}function Td(e,t,n){return e.fg===`ground`?new U({color:e.bg===`ground`?void 0:wd(e.bg,t,n),reverse:!0}):new U({color:wd(e.fg,t,n),bgcolor:e.bg===`ground`?void 0:wd(e.bg,t,n)})}const Ed=e=>td.flatMap(t=>e[t].flatMap(rd)).join(``);var Dd=class{seam;caps;_forms;constructor(e,t){this.seam=gd(e),this.caps=_d(t),this._forms={glyph:bd(vd(this.seam.glyph,this.caps.glyph)),ascii:bd(vd(this.seam.ascii,this.caps.ascii))}}join(e,t,{index:n}){let r=this._forms;return{*render(i){let{shape:a,reads:o}=du(i,r.glyph,r.ascii,e=>Ed(e.shape)),s={left:e?.edgeStyle(`right`,i),right:t?.edgeStyle(`left`,i)},c=xd(s.left?.bgcolor),l=xd(s.right?.bgcolor),u=e!==null&&(!o.seam.left||c!==void 0),d=t!==null&&(!o.seam.right||l!==void 0),f=d&&(!o.lead||l!==void 0),p=u&&(!o.tail||c!==void 0),m={left:e,right:t},h=e=>e!==`ground`&&`edge`in e?m[e.edge]:null,g=e=>a[e].map((t,r)=>{let a=new Xu(h(t.fg),h(t.bg));return new G(id(t,e,n,r),Td(t,s,i).withAnchor({owner:a,row:0,col:0,inner:void 0}))});if(!u||!d){(f||p)&&(yield*g(f?`lead`:`tail`));return}let _=g(`seam`);yield*a.divider!==a.seam&&_.every(e=>e.style!==void 0&&Cd(e.style,i.colorSystem))?g(`divider`):_}}}};const Od={edge:`left`,part:`bg`},kd={edge:`right`,part:`bg`},Ad={edge:`left`,part:`fg`},jd={mix:[Od,kd,1/2]},Md=`ground`,Nd={cap:`lead`},Pd={cap:`tail`},Fd=(e,t)=>({glyph:e,ascii:t}),Id={glyph:``,thin:``,ascii:`>`,asciiThin:`>`},Ld={glyph:``,thin:``,ascii:`/`,asciiThin:`/`},Rd={glyph:``,thin:``,ascii:`\\`,asciiThin:`\\`},zd={glyph:``,thin:``,ascii:`}`,asciiThin:`}`},Bd={glyph:``,thin:``,ascii:`#`,asciiThin:`>`},Vd={glyph:``,thin:``,ascii:`]`,asciiThin:`>`},Hd={glyph:``,thin:``,ascii:`)`,asciiThin:`)`},Ud=(e,t)=>({seam:[{glyph:e,fg:Od,bg:kd}],divider:[{glyph:t,fg:Ad,bg:Od}]}),Wd=e=>Fd(Ud(e.glyph,e.thin),Ud(e.ascii,e.asciiThin));function Gd(e,t){let n=e=>({mix:[Od,kd,e]}),r={glyph:` `,fg:Ad,bg:Od};return{seam:[{glyph:e,fg:Od,bg:n(1/3)},{glyph:e,fg:n(1/3),bg:n(2/3)},{glyph:e,fg:n(2/3),bg:kd}],divider:[r,{glyph:t,fg:Ad,bg:Od},r]}}function Kd(e){let t=[Pd,...e,Nd];return{seam:t,divider:t}}function qd(e,t){let n=[{glyph:e,fg:t,bg:jd}];return{seam:n,divider:n}}function Jd(e){return{seam:qd({oneOf:e},Od).seam,divider:[{glyph:{oneOf:e},fg:Ad,bg:jd}]}}const Yd=[{glyph:` | `,fg:{role:`strip.separator`},bg:Md}],Xd={seam:Yd,divider:Yd},Zd={glyph:` `,fg:Ad,bg:Md},Qd=e=>({glyph:e,fg:{role:`strip.rail`},bg:Md}),$d=Object.freeze({powerline:gd(Wd(Id)),prism:gd(Fd(Gd(Id.glyph,Id.thin),Gd(Id.ascii,Id.asciiThin))),slant:gd(Wd(Ld)),backslant:gd(Wd(Rd)),flame:gd(Wd(zd)),pixel:gd(Wd(Bd)),ice:gd(Wd(Vd)),bubble:gd(Wd(Hd)),capsule:gd(Fd(Kd([Zd]),Kd([Zd]))),wrapper:gd(Fd(Kd([]),Kd([]))),metro:gd(Fd(Kd([Qd(`──`)]),Kd([Qd(`--`)]))),stitch:gd(Fd(qd(`┊`,Ad),qd(`:`,Ad))),torn:gd(Fd(Jd([`▚▞`,`▞▚`,`▘▗`,`▝▖`,`▖▝`,`▗▘`]),Jd([`/\\`,`\\/`]))),plain:gd(Fd(Xd,Xd))}),ef=e=>Fd({lead:[{glyph:e.glyph,fg:Md,bg:kd}],tail:[{glyph:e.glyph,fg:Od,bg:Md}]},{lead:[],tail:[{glyph:e.ascii,fg:Od,bg:Md}]}),tf=(e,t)=>({lead:[{glyph:e,fg:kd,bg:Md}],tail:[{glyph:t,fg:Od,bg:Md}]}),nf={lead:[],tail:[]},rf=Object.freeze({powerline:_d(ef(Id)),slant:_d(ef(Ld)),backslant:_d(ef(Rd)),flame:_d(ef(zd)),pixel:_d(ef(Bd)),ice:_d(ef(Vd)),bubble:_d(ef(Hd)),capsule:_d(Fd(tf(``,``),tf(`(`,`)`))),wrapper:_d(Fd(tf(``,``),tf(`<`,`>`))),flat:_d(Fd(nf,nf))}),af=Object.freeze({powerline:new Dd($d.powerline,rf.powerline),prism:new Dd($d.prism,rf.powerline),slant:new Dd($d.slant,rf.slant),backslant:new Dd($d.backslant,rf.backslant),flame:new Dd($d.flame,rf.flame),pixel:new Dd($d.pixel,rf.pixel),ice:new Dd($d.ice,rf.ice),bubble:new Dd($d.bubble,rf.bubble),capsule:new Dd($d.capsule,rf.capsule),wrapper:new Dd($d.wrapper,rf.wrapper),metro:new Dd($d.metro,rf.capsule),stitch:new Dd($d.stitch,rf.flat),torn:new Dd($d.torn,rf.flat),plain:new Dd($d.plain,rf.flat)});function of(e,t){if(e.isControl)return``;let{text:n,style:r}=e;if(n.length===0||r===void 0)return n;let i=t.colorSystem===null?``:r.toSgrCodes(t.colorSystem),a=i.length>0?`\x1b[${i}m${n}\x1b[0m`:n,o=t.hyperlinks?r.link:void 0;return o===void 0?a:`${ju(o)}${a}]8;;\\`}function sf(e,t){let n=[];for(let r of e)n.push(of(r,t));return n.join(``)}const cf=/\r|\x1b\[([0-9;:]*)m|\x1b\[([012]?)K|\x1b\[[0-?]*[ -/]*[@-~]|\x1b[\]P_^X][\s\S]*?(?:\x07|\x1b\\|\x9c|$)|\x1b[ -/]*[0-~]/g;function*lf(e){let t=0;for(let n of e.matchAll(cf))n.index>t&&(yield{kind:`text`,text:e.slice(t,n.index)}),n[0]===`\r`&&(yield{kind:`return`}),n[1]!==void 0&&(yield{kind:`sgr`,params:n[1]}),n[2]!==void 0&&(yield{kind:`erase`,mode:n[2]||`0`}),t=n.index+n[0].length;t<e.length&&(yield{kind:`text`,text:e.slice(t)})}function*uf(e){let t=0;for(let n of Pu(e))yield*lf(e.slice(t,n.index)),yield{kind:`link`,uri:n.uri},t=n.index+n.length;yield*lf(e.slice(t))}function df(e){let t=new U(e);return e=>e.add(t)}function ff(e){let t=e.next();return t.done?void 0:t.value}function pf(e){let t=ff(e);if(t===5){let t=ff(e);return t===void 0?void 0:H.fromAnsi(t)}if(t===2){let[t,n,r]=[ff(e),ff(e),ff(e)];return r===void 0?void 0:H.fromRgb(t,n,r)}}const mf=new Map([[0,()=>W],...Ul.map(e=>[Wl[e],df({[e]:!0})]),[22,df({bold:!1,dim:!1})],[23,df({italic:!1})],[24,df({underline:!1,underline2:!1})],[25,df({blink:!1,blink2:!1})],[27,df({reverse:!1})],[28,df({conceal:!1})],[29,df({strike:!1})],[38,(e,t)=>e.add(new U({color:pf(t)}))],[39,df({color:H.default()})],[48,(e,t)=>e.add(new U({bgcolor:pf(t)}))],[49,df({bgcolor:H.default()})],[58,(e,t)=>(pf(t),e)],[54,df({frame:!1,encircle:!1})],[55,df({overline:!1})],...Array.from({length:8},(e,t)=>[[30+t,df({color:H.fromAnsi(t)})],[40+t,df({bgcolor:H.fromAnsi(t)})],[90+t,df({color:H.fromAnsi(t+8)})],[100+t,df({bgcolor:H.fromAnsi(t+8)})]]).flat()]),hf=e=>e;function gf(e,t){let n=t.split(`;`).filter(e=>/^\d*$/.test(e)).map(e=>Math.min(255,Number(e))).values(),r=e;for(let e of n)r=(mf.get(e)??hf)(r,n);return r}const _f=[` `,W];function vf(e,t,n){n!==`0`&&e.fill(_f,0,Math.min(t+1,e.length)),n!==`1`&&(e.length=Math.min(t,e.length))}var yf=class{sgr=W;link=void 0;decode(e){return(e.match(/[^\n]*\n|[^\n]+/g)??[]).map(e=>this.decodeLine(e.replace(/\r?\n$/,``)))}decodeLine(e){let t=[],n=0;for(let r of uf(e))switch(r.kind){case`text`:{let e=this.sgr.withLink(this.link);for(let i of r.text)t[n++]=[i,e];break}case`return`:n=0;break;case`erase`:vf(t,n,r.mode);break;case`sgr`:this.sgr=gf(this.sgr,r.params);break;case`link`:this.link=r.uri===``?void 0:r.uri;break}let r=[];for(let[e,n]of t){let t=r.at(-1);t?.[1].equals(n)?t[0]+=e:r.push([e,n])}return K.assemble(r)}};function bf(e){return e.end=``,e.plain=e.plain.replaceAll(`
|
|
51
51
|
`,` `),e.expandTabs()}var xf=class{renderable;effect;t;key;theme;constructor(e,t,n){if(this.renderable=e,this.effect=t,!Number.isFinite(n.t))throw RangeError(`Effected needs a finite t, got ${n.t}`);this.t=n.t,this.key=n.key,this.theme=n.theme}render(e){let t=hu(this.renderable,e);return e.colorSystem===null?t:this._moved(t,e)}*contents(){yield this.renderable}*_moved(e,t){let n=t.colorSystem??V.TRUECOLOR,r=Cf(e,n,this.theme),i=wf(r),a=this.effect(Ef(r,()=>i,n,this.theme));yield*G.applyStyle(this._recolored(i,a.at(this.t),n),new U({nextChange:a.nextChange(this.t)}))}*_recolored(e,t,n){for(let{segment:r,look:i,glyphs:a}of e){if(i===void 0){yield r;continue}let{style:e,wire:o,slots:s,pair:c}=i,{terminal:l}=c,u={fg:c.fg,bg:c.bg},d=[];for(let{glyph:e,cell:r}of a){let i=r===void 0?s:Of(t(u,{...r,seed:this.seed(r.row,r.col),terminal:l,reverse:c.reverse}),c.reverse),a=d[d.length-1],f=a!==void 0&&Nf(a.colors,i)?a.drawn:this.respec(o,s,i,n);a!==void 0&&Af(a.drawn,f)?(a.text+=e,a.cells+=Co(e),a.colors=i):d.push({text:e,cells:Co(e),colors:i,drawn:f})}if(d.every(e=>Af(e.drawn,o))){yield r;continue}let f=0;for(let t of d){let n=e.shiftedBy(f),r=Af(t.drawn,o)?n:n.add(U.fromColor(t.drawn.color,t.drawn.bgcolor));yield new G(t.text,r),f+=t.cells}}}measure(e){return bu.get(e,this.renderable)}static shows(e,t,n,r){let i=Of(e,e.reverse),a=kf(i,Of(t,e.reverse),n,r);return Of({fg:a.fg?.getTruecolor(r,!0)??i.fg,bg:a.bg?.getTruecolor(r,!1)??i.bg},e.reverse)}respec(e,t,n,r){let i=kf(t,n,r,this.theme);return{color:i.fg??e.color,bgcolor:i.bg??e.bgcolor}}seed(e,t){return Number.parseInt(Du(`${this.key}:${e}:${t}`),16)/4294967296}};const Sf=H.default();function Cf(e,t,n){return[...e].map(e=>{if(e.isControl)return{segment:e,look:void 0};let r=e.style??U.null(),i=r.drawnColors(t),a={fg:(i.color??Sf).getTruecolor(n,!0),bg:(i.bgcolor??Sf).getTruecolor(n,!1)},o=r.reverse===!0,s=Of({fg:i.color?.isDefault??!0,bg:i.bgcolor?.isDefault??!0},o);return{segment:e,look:{style:r,wire:i,slots:a,pair:{...Of(a,o),terminal:s,reverse:o}}}})}function wf(e){let t=0,n=0;return e.map(({segment:e,look:r})=>{if(r===void 0)return{segment:e,look:r,glyphs:[]};let i=r.style.anchor,a=0;return{segment:e,look:r,glyphs:[...Po(e.text)].map(e=>{let r=e===`
|
|
52
52
|
`?void 0:{row:t,col:n,anchor:i&&Vl(i,a)};return[t,n]=e===`
|
|
53
|
-
`?[t+1,0]:[t,n+Co(e)],a+=Co(e),{glyph:e,cell:r}})}})}function Tf(e){return[e.underline,e.underline2,e.strike,e.overline,e.frame,e.encircle].some(e=>e===!0)}function Ef(e,t,n,r){let i=r.backgroundColor.hex,a,o=()=>t().flatMap(({look:e,glyphs:t})=>{if(e===void 0)return[];let n=e.pair.bg.hex!==i||Tf(e.style);return t.flatMap(({glyph:e,cell:t})=>t!==void 0&&(e.trim()!==``||n)?[t]:[])}),s=e.flatMap(({segment:e,look:t})=>t!==void 0&&e.text.trim()!==``&&!Hl(t.style.anchor,Yu)?[t.pair]:[]),c=[...new Map(s.map(e=>[`${e.fg.hex}/${e.bg.hex}/${e.terminal.fg}/${e.terminal.bg}/${e.reverse}`,e])).values()],l=e=>c.flatMap(t=>t.terminal[e]?[]:[t[e].hex]);return{cells:()=>a??=o(),pairs:c,colors:new Set([...l(`fg`),...l(`bg`)]),fills:new Set(l(`bg`)),depth:n,theme:r}}function Df(e,...t){let n=new Set(t),r=e=>Zu(e.anchor,n),i=({fg:e,bg:t})=>e||t,a=e=>({...e,cells:()=>e.cells().filter(e=>i(r(e)))});return t=>Ml.map(e(a(t)),e=>(t,n)=>{let a=r(n);if(!i(a))return t;let o=e(t,n);return{fg:a.fg?o.fg:t.fg,bg:a.bg?o.bg:t.bg}})}function Of(e,t){return t?{fg:e.bg,bg:e.fg}:e}function kf(e,t,n,r){let i=t.bg.compositeOver(Yo),a=t.fg.compositeOver(i);return{fg:H.matchMove(e.fg,a,n,r,!0),bg:H.matchMove(e.bg,i,n,r,!1)}}function Af(e,t){return jf(e.color,t.color,!0)&&jf(e.bgcolor,t.bgcolor,!1)}function jf(e,t,n){return e===t||Mf(e,n)===Mf(t,n)}function Mf(e,t){return e?.getAnsiCodes(t).join(`;`)??``}function Nf(e,t){return Pf(e.fg,t.fg)&&Pf(e.bg,t.bg)}function Pf(e,t){return e.red===t.red&&e.green===t.green&&e.blue===t.blue&&e.alpha===t.alpha}const Ff=(()=>{let e=[151,160,137,91,90,15,131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23,190,6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33,88,237,149,56,87,174,20,125,136,171,168,68,175,74,165,71,134,139,48,27,166,77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,55,46,245,40,244,102,143,54,65,25,63,161,1,216,80,73,209,76,132,187,208,89,18,169,200,196,135,130,116,188,159,86,164,100,109,198,173,186,3,64,52,217,226,250,124,123,5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42,223,183,170,213,119,248,152,2,44,154,163,70,221,153,101,155,167,43,172,9,129,22,39,253,19,98,108,110,79,113,224,232,178,185,112,104,218,246,97,228,251,34,242,193,238,210,144,12,191,179,162,241,81,51,145,235,249,14,239,107,49,192,214,31,181,199,106,157,184,84,204,176,115,121,50,45,127,4,150,254,138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180];return[...e,...e]})(),If=e=>e*e*e*(e*(e*6-15)+10),Lf=(e,t,n)=>e+n*(t-e);function Rf(e,t,n,r){let i=e&15,a=i<8?t:n,o=i<4?n:i===12||i===14?t:r;return(i&1?-a:a)+(i&2?-o:o)}function zf(e,t,n){let r=Math.floor(e),i=Math.floor(t),a=Math.floor(n),o=r&255,s=i&255,c=a&255;e-=r,t-=i,n-=a;let l=If(e),u=If(t),d=If(n),f=Ff[o]+s,p=Ff[f]+c,m=Ff[f+1]+c,h=Ff[o+1]+s,g=Ff[h]+c,_=Ff[h+1]+c;return Lf(Lf(Lf(Rf(Ff[p],e,t,n),Rf(Ff[g],e-1,t,n),l),Lf(Rf(Ff[m],e,t-1,n),Rf(Ff[_],e-1,t-1,n),l),u),Lf(Lf(Rf(Ff[p+1],e,t,n-1),Rf(Ff[g+1],e-1,t,n-1),l),Lf(Rf(Ff[m+1],e,t-1,n-1),Rf(Ff[_+1],e-1,t-1,n-1),l),u),d)}function Bf(e,t,n,r){let i=0,a=1,o=0;for(let s=0;s<r;s++){let r=2**s;i+=a*zf(e*r,t*r,n*r),o+=a,a/=2}return i/o}function Vf(e,t){let n=Math.sin(e*12.9898+t*78.233)*43758.5453;return n-Math.floor(n)}function Hf(e,t,n){let r=Math.min(1,Math.max(0,(n-e)/(t-e)));return r*r*(3-2*r)}const Uf=Array.from({length:48},(e,t)=>(t+1)/48);function Wf(e,t){return Math.min(Zo(e.fg,e.bg),4.5)-(t===V.TRUECOLOR?.01:0)}const Gf=[`fg`,`bg`];function Kf({pairs:e,depth:t,theme:n},r,i){let a=(e,t)=>e.terminal[t]?void 0:e[t].hex,o=new Map(e.flatMap(e=>Gf.flatMap(t=>{let n=a(e,t);return n===void 0?[]:[[n,e[t]]]}))),s=new Map([...r].filter(e=>!o.has(e)).map(e=>[e,1])),c=e=>ac.fromRgba(o.get(e)).l;for(let l of[...r].filter(e=>o.has(e)).sort((e,t)=>c(t)-c(e))){let r=e.flatMap(e=>{let t=Gf.find(t=>a(e,t)===l);if(t===void 0)return[];let n=a(e,t===`fg`?`bg`:`fg`);return[[e,t,n===void 0?0:s.get(n)??0]]}),o=e=>r.every(([r,a,o])=>{let s=Wf(r,t),c=(t,n)=>$f(i,r[t],(t===a?e:o)*n);return Uf.every(e=>{let i=xf.shows(r,{fg:c(`fg`,e),bg:c(`bg`,e)},t,n);return Zo(i.fg,i.bg)>=s})}),[c,u]=o(1)?[1,1]:[0,1];for(let e=0;e<20&&u-c>.001;e++){let e=(c+u)/2;[c,u]=o(e)?[e,u]:[c,e]}s.set(l,c)}return s}function qf(e,t){let n=new WeakMap;return Zf(Xf(e,r=>{let i=t??r.colors,a=[Jf(r),`|`,...i].join(` `),o=n.get(r.theme)??new _o;return n.set(r.theme,o),o.get(a,()=>Kf(r,i,e.touch))}))}function Jf({depth:e,pairs:t}){return[e,...t.map(Yf)].join(` `)}function Yf({fg:e,bg:t,terminal:n,reverse:r}){return`${e.hex}/${t.hex}/${n.fg}/${n.bg}/${r}`}function Xf(e,t){return n=>{let r=t(n);return Ml.continuous(t=>{let i=e.field(t,n);return({fg:t,bg:n},a)=>{let o=Math.round(rp(i(a))*48)/48,s=(t,n)=>$f(e.touch,t,(n?0:r.get(t.hex)??0)*o);return{fg:s(t,a.terminal.fg),bg:s(n,a.terminal.bg)}}})}}function Zf(e){return t=>Qf(t.depth)?Ml.constant(e=>e):e(t)}function Qf(e){switch(e){case V.DEFAULT:case V.STANDARD:case V.WINDOWS:return!0;case V.EIGHT_BIT:case V.TRUECOLOR:return!1}}function $f(e,t,n){return n===0?t:e(t,n)}function ep(e){if(!(Number.isFinite(e.seconds)&&e.seconds>0))throw RangeError(`curve: seconds must be a positive number of seconds, got ${e.seconds}`);if(!(e.swing>=0&&e.swing<=1))throw RangeError(`curve: swing must be in [0, 1], got ${e.swing}`)}const tp={shimmer:{seconds:109,ease:bl.linear,swing:.9},pulse:{seconds:43,ease:bl.linear,swing:.85},sparkle:{seconds:139,ease:bl.linear,swing:.95},wheel:{seconds:907,ease:bl.linear,swing:1},fade:{seconds:20,ease:bl[`ease-in-out`],swing:1},dissolve:{seconds:30,ease:bl[`ease-in-out`],swing:1}},np={sun:new B(255,228,176),firefly:new B(222,245,140)},rp=e=>Math.min(1,Math.max(0,e));function ip(e,t,n){if(!(n>=0&&n<=1))throw RangeError(`blend: w must be in [0, 1]; got ${n}`);let r=Math.PI/180,i=(1-n)*e.c*Math.cos(e.h*r)+n*t.c*Math.cos(t.h*r),a=(1-n)*e.c*Math.sin(e.h*r)+n*t.c*Math.sin(t.h*r);return new ac((1-n)*e.l+n*t.l,Math.hypot(i,a),Math.atan2(a,i)/r,e.alpha)}function ap(e){let t=ac.fromRgba(e);return(e,n)=>{let r=ac.fromRgba(e);return ip(r,new ac(Math.max(r.l,t.l),t.c,t.h,t.alpha),n).toRgba()}}const op=(e,t)=>t*e[e.length-1][0];function sp(e,t,n){let r=t/n,i=e.findIndex(([e])=>r<e);if(!(r>0)||i<0)return 0;let[a,o]=i===0?[0,0]:e[i-1],[s,c]=e[i];return n*(o+(c-o)*(1-Math.cos(Math.PI*(r-a)/(s-a)))/2)}function cp(e,t,n){let r=op(e,n),i=t=>{let r=0;for(let i=0;i<24;i++)r+=sp(e,(i+.5)/24*t,n);return r*t};return i(Math.min(Math.max(t,0),r))/i(r)}const lp=[[.24,1],[.6,0]];function up(e,t,n){ep(e);let r=.9+.2*Vf(n,3.1),i=t=>.1*zf(t/(3*e.seconds),.5,.5+n),a=i(0);return{touch:ap(t),field:t=>{let o=r*t/e.seconds+i(t)-a,s=Math.floor(o),c=.7+.3*Hf(-.5,.5,zf(s*.37,2.1,n)),l=.5-.5*Math.cos(2*Math.PI*(o-s)),u=e.swing*e.ease(c*l);return()=>u}}}const dp=e=>Math.abs(e)>=1?0:(1-e*e)**3;function fp(e,t,n,r){ep(e);let i=e.seconds,a=i/2,o=e=>Hf(-.4,.4,zf(e/7,3.3,5.5+r)),s=.7,c=.51,l=.4,u=(e,n,u)=>{let d=o(e),f=(Vf(e,7.5+r)<.35+.6*d)*(.3+.7*d*(.6+.4*Vf(e,8.5+r))),p=i*u/80*(c+l*Vf(e,5.5+r)),m=rp((n-(e+s*Vf(e,6.5+r))*a)/p);return{strength:f,centre:m*u-t+.06*u*Math.sin(Math.PI*m)*zf(m,2.7,e+r)}},d=(e,t)=>{let n=s+(c+l)*i*t/80/a,r=Math.floor(e/a),o=[];for(let i=Math.max(0,Math.ceil(r-n));i<=r;i++)o.push(u(i,e,t));return o},f=(e,t,n)=>Math.exp(-((zf(e,t,n)/.8)**2));return{touch:ap(n),field:(n,i)=>{let[a,o]=vp(i.cells().map(e=>e.col)),s=d(n,o-a+1+2*t);return i=>{let o=0;for(let{strength:e,centre:n}of s)o=Math.max(o,e*dp((i.col-a-n)/t));let c=i.row+r,l=.8*zf(i.col*.05,c*.3+1.3,n*.02),u=(f(i.col*.21+l,c*.9,n*.022)*f(i.col*.33+9.1-l,c*.7,n*.018+4.2))**2;return e.swing*e.ease(o*(.1+.6*u))}}}}function pp(e,t,n){ep(e);let r=e.seconds,i=22.1,a=3.1,o=(e,t,i,a,o)=>{let s=e*4.9+t*31.7+.3+n,c=e+.5+.7*zf(e*1.7+.2,.3+t*2.9,.5+n),l=i+Vf(e+t*1013,.7+n)*r,u=Math.floor(l/r),d=Vf(u,s+1)<.15?0:1,f=.5+.5*Vf(u,s+2),p=Vf(u,s+3)*(1-op(lp,f)),m=l/r-u-p;return{x:a+c*8+5*(2*Vf(u,s+4)-1)+5*f*(2*Vf(u,s+5)-1)*cp(lp,m,f)+1.5*zf(s,.1,i*.035),y:o+t*3+.6*zf(s,2.2,i*.035),glow:d*sp(lp,m,f)}};return{touch:ap(t),field:(t,n)=>{let r=n.cells(),[s,c]=vp(r.map(e=>e.col)),[l,u]=vp(r.map(e=>e.row)),d=e=>(e-s)/8-.5,f=e=>(e-l)/3,[p,m]=[Math.ceil(d(s-i)),Math.floor(d(c+i))],[h,g]=[Math.ceil(f(l-a)),Math.floor(f(u+a))],_=Array.from({length:g-h+1},(e,n)=>Array.from({length:m-p+1},(e,r)=>o(p+r,h+n,t,s,l)));return t=>{let n=0,[r,o]=[Math.max(p,Math.ceil(d(t.col-i))),Math.min(m,Math.floor(d(t.col+i)))],[s,c]=[Math.max(h,Math.ceil(f(t.row-a))),Math.min(g,Math.floor(f(t.row+a)))];for(let e=s;e<=c;e++)for(let i=r;i<=o;i++){let r=_[e-h][i-p];n=Math.max(n,r.glow*dp(Math.hypot(t.col-r.x,2*(t.row-r.y))/5))}return e.swing*e.ease(n)}}}}function mp(e,t){return n=>{let r=ac.fromRgba(n.theme.backgroundColor);return Ml.continuous(i=>{let a=e(i,n);return(e,n)=>{let i=t*(1-rp(a(n)));if(i===0)return e;let o=ip(ac.fromRgba(e.bg),r,i);return{fg:ip(ac.fromRgba(e.fg),o,i).toRgba(),bg:o.toRgba()}}})}}function hp(e){let t=new Map;return n=>{let r=`${n.row}:${n.col}`,i=t.get(r)??rp(.5+1.1*Bf(n.col*.09+1.4*zf(n.col*.035,n.row*.2+2.6,e+.5),n.row*.45,e,3));return t.set(r,i),i}}function gp(e,t){let n=t=>t>=e.seconds;return{effect:r=>{let i=t(r);return{at:e=>i.at(e),nextChange:e=>n(e)?1/0:i.nextChange(e),lastChange:t=>n(t)?e.seconds:i.lastChange(t)}},done:n}}function _p(e,t){let n=new Map,r=e=>`${e.row}:${e.col}`;return i=>{let[a,o]=vp(i.map(t)),s=(o>a?.55:0)*e.seconds,c=jl.once(0,e.seconds-s),l=e=>{let n=o>a?rp((t(e)-a)/(o-a)):0;return{along:n,progress:e=>c(e-n*s)}};for(let e of i){let t=r(e);n.set(t,n.get(t)??l(e))}return e=>n.get(r(e))??l(e)}}function vp(e){let t=e[0]??0,n=t;for(let r of e)t=Math.min(t,r),n=Math.max(n,r);return[t,n]}function yp(e,t){ep(e);let n=_p(e,hp(1.7+t));return gp(e,mp((t,r)=>{let i=n(r.cells());return n=>e.ease(i(n).progress(t))},e.swing))}const bp={depth:.4,from:.5,to:.95,maskFrom:.35,maskTo:.75,late:.6};function xp(e,t){ep(e);let n=hp(9.3+t),r=_p(e,hp(4.2+t)),{depth:i,from:a,to:o,maskFrom:s,maskTo:c,late:l}=bp;return gp(e,mp((t,u)=>{let d=r(u.cells());return r=>{let{along:u,progress:f}=d(r),p=e.ease(f(t)),m=rp((p-a)/(o-a)),h=i*Hf(s,c,n(r))*(1-l+l*u)*Math.sin(Math.PI*m)**2;return 1-p+h}},e.swing))}const Sp=[211,337];function Cp(e,t){ep(e);let n=e.seconds,r=e=>Vf(Number.parseInt(e.slice(1),16)*1e-4,17.3+t),i=(e,n)=>zf(n/Sp[0],5.9+97*e,t)+.5*zf(n/Sp[1],2.3+89*e,t+7.1),a=(t,a)=>{let o=r(t);return 360*a/n+e.swing*180*((i(o,a)-i(o,0))/1.5)},o=new WeakMap;return Zf(e=>{let{colors:t,fills:n,depth:r,theme:i}=e,s=(e,n)=>!e&&t.has(n.hex),c=(e,t,r)=>n.has(e.hex)||!r?e.hex:t.hex,l=(e,t)=>`${e.hex} ${t}`,u=o.get(i)??new _o;o.set(i,u);let d=u.get(Jf(e),()=>kp(e.pairs,r,(e,t)=>{let n=t===`fg`?`bg`:`fg`;return s(e.terminal[t],e[t])?l(e[t],c(e[t],e[n],s(e.terminal[n],e[n]))):void 0})),f=Mp(r,i);return Ml.continuous(e=>{let t=new Map,n=(t,n)=>{let i=wp(t,a(n,e));return Np(i.looks,t,r===V.TRUECOLOR?i.either.map(Ap):f,d.get(l(t,n))??Ep)},i=(e,r)=>{let i=t.get(l(e,r))??n(e,r);return t.set(l(e,r),i),i};return(e,t)=>{let n={fg:s(t.terminal.fg,e.fg),bg:s(t.terminal.bg,e.bg)},r=(e,t,n,r)=>t?i(e,c(e,n,r)):e;return{fg:r(e.fg,n.fg,e.bg,n.bg),bg:r(e.bg,n.bg,e.fg,n.fg)}}})})}function wp(e,t){if(t===0)return{looks:e,either:[e]};let n=ac.fromRgba(e),r=Xo(e),i=e=>new ac(e,n.c,n.h+t,n.alpha).toRgba(),[a,o]=[0,1];for(let e=0;e<24;e++){let e=(a+o)/2;[a,o]=Xo(i(e))<r?[e,o]:[a,e]}return{looks:i(o),either:[i(a),i(o)]}}const Tp=e=>Math.log(Zo(e,new B(0,0,0))),Ep={lo:-1/0,hi:1/0},Dp={lo:1/0,hi:-1/0},Op=Math.log(1.031);function kp(e,t,n){let r=new Map;for(let i of e.filter(e=>Wf(e,t)>1)){let e=(Math.log(Zo(i.fg,i.bg))-Math.log(Wf(i,t)))/Gf.filter(e=>n(i,e)!==void 0).length;for(let t of Gf){let a=n(i,t);if(a===void 0)continue;let[o,s]=[Tp(i[t]),Tp(i[t===`fg`?`bg`:`fg`])],{lo:c,hi:l}=r.get(a)??Ep;r.set(a,o>=s?{lo:Math.max(c,o-e),hi:l}:{lo:c,hi:Math.min(l,o+e)})}}return new Map([...r].map(([e,{lo:t,hi:n}])=>[e,n-t<Op?Dp:{lo:t,hi:n}]))}const Ap=e=>({color:e,looks:ac.fromRgba(e),stop:Tp(e)}),jp=new WeakMap;function Mp(e,t){let n=H.indexed(e,t),r=jp.get(n)??n.map(([,e])=>Ap(e));return jp.set(n,r),r}function Np(e,t,n,{lo:r,hi:i}){return Pp(e,[Ap(t),...n.filter(({stop:e})=>e>=r&&e<=i)]).color}function Pp(e,t){let n=ac.fromRgba(e),r;for(let e of t){let t=n.deltaE(e.looks);(r===void 0||t<r[1])&&(r=[e,t])}return r?.[0]}const Fp={loops:{shimmer:(e,t=tp.shimmer)=>qf(fp(t,24,np.sun,e.z)),pulse:(e,t=tp.pulse)=>qf(up(t,np.sun,e.z)),sparkle:(e,t=tp.sparkle)=>qf(pp(t,np.firefly,e.z)),wheel:(e,t=tp.wheel)=>Cp(t,e.z)},transitions:{fade:(e,t=tp.fade)=>yp(t,e.z),dissolve:(e,t=tp.dissolve)=>xp(t,e.z)}};var Ip=class{beat;width;_shown;constructor(e){this.beat=Al(e.map(e=>e.seconds));let t=e.map(e=>bf(e.text.copy())),n=t.map(e=>e.cellLength);this.width=Math.max(...n),this._shown=t.map((e,t)=>(e.noWrap=!0,e.overflow=`crop`,e.padRight(this.width-n[t])))}at(e){return this._shown[this.beat.at(e)].copy()}nextChange(e){return this.beat.nextChange(e)}lastChange(e){return this.beat.lastChange(e)}};function Lp(e,t){return e.at(t).copy().stylize(new U({nextChange:e.nextChange(t)}))}function Rp(e,t){let n=[...hu(e,t)],r=0;for(let e of n)r+=e.cellLength;return{segments:n,width:r}}const zp={segments:[],width:0},Bp={left:()=>0,justify:()=>0,center:e=>Math.floor(e/2),right:e=>e};function Vp(e,t){return Bp[e](t)}function Hp(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 Up=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`}contents(){return this.items}*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=>Rp($u(t),e)),o=n=>i?Rp(Qu(i,null,t[n],{index:n}),e):zp,s=n=>i?Rp(Qu(i,t[n],null,{index:n+1}),e):zp,c=(n,r)=>i?Rp(Qu(i,t[n],t[r],{index:r}),e):zp,l=[],u=null,d=r>0?{segments:[new G(` `.repeat(r))],width:r}:zp;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=Vp(p,i),o=Hp(p,r,i,t.itemBlockIndices.length),s=new Map;t.itemBlockIndices.forEach((e,t)=>s.set(e,t)),a>0&&(yield new G(` `.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 G(` `.repeat(e)))}yield*t.blocks[e].segments}yield G.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=Rp(t[i],e).width,o=this.joiner?Rp(Qu(this.joiner,null,t[i],{index:i}),e).width:0,s=this.joiner?Rp(Qu(this.joiner,t[i],null,{index:i+1}),e).width:0;n=Math.max(n,a+o+s),r+=a,i>0&&(r+=this.gap*2,this.joiner&&(r+=Rp(Qu(this.joiner,t[i-1],t[i],{index:i}),e).width))}return this.joiner&&(r+=Rp(Qu(this.joiner,null,t[0],{index:0}),e).width,r+=Rp(Qu(this.joiner,t[t.length-1],null,{index:t.length}),e).width),{minimum:n,maximum:r}}};function Wp(e){return e<32||e>=127&&e<=159||e>=8234&&e<=8238||e>=8294&&e<=8303}function Gp(e){let t=``;for(let n of e)t+=Wp(n.codePointAt(0)??0)?` `:n;return t.replace(/\s+/g,` `).trim()}function Kp(e,t){let n=Gp(e),r=``,i=0;for(let e of n){if(i===t)return r.replace(/.$/u,`…`);r+=e,i++}return r}const qp=`\x1B[38;2;255;255;255m`,Jp=`\x1B[48;2;200;40;40m`,Yp=`\x1B[0m`;function Xp(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 Zp={fg:Xp(qp),bg:Xp(Jp)},Qp={fg:Xp(`\x1B[38;2;0;0;0m`),bg:Xp(`\x1B[48;2;220;160;40m`)},$p=new Xl({"strip.separator":`default`,"strip.rail":`default`});function em(e){return $p.resolve(e)}function tm(){let e=new WeakMap;return(t,n,r)=>{let i=e.get(t);i===void 0&&(i=new Map,e.set(t,i));let a=i.get(n);if(a!==void 0)return a;let o=r();return i.set(n,o),o}}const nm=[`primary`,`secondary`,`accent`],rm=[`darken-3`,`darken-2`,`darken-1`,`base`,`lighten-1`,`lighten-2`,`lighten-3`],im={"darken-3":`-darken-3`,"darken-2":`-darken-2`,"darken-1":`-darken-1`,base:``,"lighten-1":`-lighten-1`,"lighten-2":`-lighten-2`,"lighten-3":`-lighten-3`,muted:`-muted`},am=(e,t)=>`${e}${im[t]}`,om=(e,t,n,r)=>zm(e,n,r),sm=(e,t,n,r)=>Vm(e,km(e,`text-${t}`),n,r),cm=e=>({tones:[rm[e],rm[e+2],rm[e+1]],text:om}),lm={muted:{tones:[`muted`],text:sm},deepest:cm(0),deeper:cm(1),middle:cm(2),brighter:cm(3),brightest:cm(4)},um=1/0,dm={accent:{hues:[`secondary`,`accent`],run:um},duo:{hues:[`primary`,`secondary`],run:um},mono:{hues:[`primary`],run:um},alt:{hues:[`secondary`,`accent`],run:3}},fm=e=>e.variation.hues.flatMap(t=>e.shade.tones.map(e=>({hue:t,shade:e}))),pm=e=>{let t=0,n=.5;for(let r=e;r>0;r>>=1,n/=2)t+=n*(r&1);return t},mm=[`van-der-corput`,`golden-angle`,`ends-interleaved`,`monotonic`,`uniform`],hm=e=>typeof e==`string`&&mm.includes(e),gm={"van-der-corput":pm,"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},_m=e=>gm[e??`van-der-corput`];function vm(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 ym=(e,t)=>Math.floor(e*t),bm=(e,t)=>Math.round(e*t)%t;function xm(e){return e===void 0?0:e.distribution(e.index,e.count)}function Sm(e,t,n){let r=e[n(xm(t),e.length)];if(r===void 0)throw Error(`vocabularySelect: empty vocabulary`);return r}function Cm(e){let t=e.findIndex(e=>e.axis===`cell`),n=t===-1?e:e.slice(0,t);return{row:n.at(-1),cell:e[n.length]}}const wm=(e,t)=>ym(xm(t),e.hues.length);function Tm(e,t){let{row:n,cell:r}=Cm(t);return Em(e,n,r)}function Em(e,t,n){let{hues:r,run:i}=e.variation,a=n===void 0?0:Math.floor(n.index/i),o=r[(wm(e.variation,t)+a)%r.length];if(o===void 0)throw Error(`decorEntryFor: empty variation`);return{hue:o,shade:Sm(e.shade.tones,n,bm)}}function Dm(e,t){let{row:n,cell:r}=Cm(t),i=r===void 0?[void 0]:Array.from({length:r.count},(e,t)=>({...r,index:t}));return[...new Map(i.map(t=>Em(e,n,t)).map(e=>[am(e.hue,e.shade),e])).values()].sort((e,t)=>nm.indexOf(e.hue)-nm.indexOf(t.hue)||Om.indexOf(e.shade)-Om.indexOf(t.shade))}const Om=[...rm,`muted`];function km(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}const Am=(e,t)=>km(e,am(t.hue,t.shade)),jm=2.2,Mm=(e,t)=>t.map(t=>Am(e,t)),Nm=e=>t=>vc(t,e),Pm=Nm(V.TRUECOLOR);function Fm(e,t,n,r){return Im(e,`${t}|${n.map(e=>e.hex).join(`+`)}|${r}`,()=>Lm(e,t,n,r))}const Im=tm();function Lm(e,t,n,r){let i=n.map(Pm),a=km(e,t),o=new B(0,0,0),s=new B(255,255,255),c=(e,t)=>ac.fromRgba(a).mixAxes(ac.fromRgba(e),{l:t,c:0,h:0,alpha:0}).toRgba(),l=e=>Array.from({length:12},(t,n)=>c(e,(n+1)/12)),u=l(o),d=[a,...l(s).flatMap((e,t)=>[e,u[t]])],f=e=>{let t=Nm(e),n=i.map(t);return e=>Math.min(1/0,...n.map(n=>Zo(t(e),n)))},p=f(V.TRUECOLOR),m=f(r),h=e=>_c(e,r,(e,t)=>i.every(n=>Zo(e,t(n))>=jm)),g=e=>p(e)>=2.2&&h(e)!==void 0,_=(e,t)=>{let n=n=>Zo(Pm(n),e)-Zo(Pm(n),t),r=n(a)<0?o:s,i=r===o?1:-1,[l,u]=[0,1];for(let e=0;e<40;e++){let e=(l+u)/2;i*n(c(r,e))>0?u=e:l=e}return[c(r,l),c(r,u)]},v=()=>{let e=[...i].sort((e,t)=>Xo(e)-Xo(t));return e.slice(1).flatMap((t,n)=>_(t,e[n]))},y=d.find(g)??[...d,...v()].reduce((e,t)=>m(t)>m(e)?t:e),b=h(y)??y,x=m(b);return{anchor:y,state:b,short:x>=2.2?null:x}}const Rm=4.5;function zm(e,t,n){return Bm(e,`${t.hex}|${n}`,()=>{let r=hc(t);return Vm(e,[`background`,`foreground`].map(t=>km(e,t)).reduce((e,t)=>Zo(r,t)<Zo(r,e)?t:e),t,n)})}const Bm=tm();function Vm(e,t,n,r){return Hm(e,`${t.hex}|${n.hex}|${r}`,()=>gc(t,n,Rm,r))}const Hm=tm();function Um(e,t,n){return t.depth===0?Mm(e,t.ground):Wm(e,t,n)}const Wm=(e,t,n)=>t.depth===0?[]:[th(e,{...t,depth:t.depth-1},n).plane],Gm=(e,{short:t},n)=>t===null?[]:[`theme "${e.name}": no open-trigger colour stands ${jm}:1 off every cell beside it — the nearest stands ${t.toFixed(2)}:1 as drawn at depth ${V[n]}; another shade or variation clears it`],Km=(e,t,n)=>t>=Xm.triggerPlane?[]:[`theme "${e.name}": an open band's plane stands ΔE ${t.toFixed(3)} off the trigger that opened it as drawn at depth ${V[n]}, under the ${Xm.triggerPlane} that tells them apart; another style clears it`],qm={base:.42,perDepth:.14,cap:.75},Jm={floor:.12,span:.8};function Ym(e,t){return nm[(nm.indexOf(e)+t)%nm.length]}const Xm={triggerPlane:.1,nestedPlane:.035};function Zm(e,t,n){return Qm(e,`${$m(t)}|${n}`,()=>{let r=Fm(e,Ym(t.hue,t.depth),Um(e,t,n),n),{state:i}=r,a=ah(e,t,i,n),o=_c(th(e,t,n).plane,n,(e,t)=>a.every(n=>n(e,t)));if(o===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 ${V[n]}`);let s=Nm(n);return{state:i,plane:o,shortfalls:n===V.DEFAULT?[]:[...Gm(e,r,n),...Km(e,eh(s(i),s(o)),n)]}})}const Qm=tm(),$m=({hue:e,depth:t,ground:n})=>`${e}|${t}|${n.map(e=>am(e.hue,e.shade)).join(`+`)}`,eh=(e,t)=>ac.fromRgba(e).deltaE(ac.fromRgba(t));function th(e,t,n){return nh(e,`${$m(t)}|${n}`,()=>rh(e,t,n))}const nh=tm();function rh(e,t,n){let{anchor:r}=Fm(e,Ym(t.hue,t.depth),Um(e,t,n),n),i=Math.min(qm.cap,qm.base+qm.perDepth*t.depth),a=(t,n)=>As(r,km(e,t),n),o=Wm(e,t,n),s=e=>eh(Pm(r),Pm(e))>=Xm.triggerPlane&&o.every(t=>eh(Pm(t),Pm(e))>=Xm.nestedPlane),c=a(`background`,i);return{state:r,plane:[c,a(`foreground`,i),a(`background`,qm.cap),a(`foreground`,qm.cap),...ih.toSorted((e,t)=>Math.abs(e-i)-Math.abs(t-i)).flatMap(e=>[a(`background`,e),a(`foreground`,e)])].find(s)??c}}const ih=Array.from({length:12},(e,t)=>(t+1)/12);function ah(e,t,n,r){let{hue:i,depth:a,ground:o}=t,s=t=>th(e,{hue:i,depth:t,ground:o},r).state,c=t=>th(e,{hue:i,depth:t,ground:o},r).plane,l=c(a),u=(e,t)=>eh(Pm(l),Pm(t))>=e?e:0,d=Fm(e,Ym(i,a+1),Um(e,{hue:i,depth:a+1,ground:o},r),r),f=Zo(Pm(l),Pm(d.anchor))>=2.2?jm:0,p=(e,t)=>(n,r)=>eh(n,r(e))>=t;return[p(n,u(Xm.triggerPlane,s(a))),(e,t)=>Zo(e,t(d.state))>=f,...a>0?[p(Zm(e,{hue:i,depth:a-1,ground:o},r).plane,u(Xm.nestedPlane,c(a-1)))]:[]]}function oh(e,t,n,r){let i=Zm(e,t,r),a=th(e,t,r),o=e=>As(a.plane,a.state,e),s=Jm.floor+Jm.span*vm(n),c=Jm.floor+Jm.span/2,l=(e,t)=>e.hex!==t(i.plane).hex&&e.hex!==t(i.state).hex;for(let e=0;e<=12;e++){let t=_c(o(s+(c-s)*e/12),r,l);if(t!==void 0)return t}return o(s)}const sh=e=>({kind:`bar`,decor:e,address:[]}),ch=(e,t)=>({...e,address:[...e.address,t]}),lh=e=>({kind:`band`,band:e,address:[]});function uh(e,t,n){switch(t.kind){case`bar`:{let{decor:r,address:i}=t,a=Tm(r,i),o=Am(e,a),s;return{tint:o,text:r.shade.text(e,a.hue,o,n),disclosure:{hue:`accent`,depth:0,get ground(){return s??=Dm(r,i)}}}}case`band`:{let{band:r,address:i}=t,a=oh(e,r,i,n);return{tint:a,text:zm(e,a,n),disclosure:{...r,depth:r.depth+1}}}}}const dh=new Map([[`dark`,`textual-dark`],[`light`,`textual-light`]]);function fh(e){let t=typeof e==`string`?dh.get(e):void 0;return t===void 0?``:` — "${e}" was retired; write "${t}", the same palette`}const ph=`textual-dark`;function mh(e,t,n,r,i){let a=t===null?null:i(t);return e??a??n??r}function hh(){return zc()}function gh(){return[`bar`,...hh()]}let _h;function vh(e){return _h??=new Set(gh()),_h.has(e)}function yh(e,t,n,r,i){let a=e=>Object.prototype.hasOwnProperty.call(i,e)?e:null;return mh(e===void 0?null:a(e),t,a(n??r),r,a)}const bh=[`style`,`palette`,`effect`];function xh(e){return e!==void 0&&e.includes(`{{`)}function Sh(e,t,n,r,i){let a=xh(n)?{kind:`expression`,source:n}:i(n??r.name);return mh(e===void 0?null:i(e),t,a,r,i)}function Ch(e,t){return e.kind===`decided`?e:t(e.source)}const wh=`none`;function Th(e,t){let n=t[e];return n===void 0?null:{kind:`decided`,name:e,value:n}}function Eh(e,t){return Th(e,t)??Th(`none`,t)??{kind:`decided`,name:`none`,value:Js}}function Dh(e,t,n,r){return Sh(e,t,n,Eh(wh,r),e=>Th(e,r))}const Oh=`none`,kh={style:wh,palette:ph,effect:Oh};function Ah(e,t,n){return`${e} rendered "${kh[t]}": ${n}`}const jh=Object.freeze([Oh,...Object.keys(Fp.loops)]),Mh=Object.freeze([`bar`,...jh]);function Nh(e){let t=jh.find(t=>t===e);return t===void 0?null:{kind:`decided`,name:e,value:t}}function Ph(e){return Nh(e)??{kind:`decided`,name:`none`,value:`none`}}function Fh(e,t,n){return Sh(e,t,n,Ph(Oh),Nh)}const Ih=Object.freeze(Object.keys(af));function Lh(e){return Ih.includes(e)}const Rh=[`powerline`,`capsule`,`plain`];function zh(e){return Rh.includes(e)}function Bh(e,t,n){return mh(e,t,n,`powerline`,e=>Lh(e)?e:null)}const Vh=[`truecolor`,`256`,`ansi`,`none`];function Hh(e){return us(e)??V.DEFAULT}const Uh=Object.keys(dm);function Wh(e){return Uh.includes(e)}function Gh(e,t,n){return mh(e,t,n,`accent`,e=>Wh(e)?e:null)}const Kh=Object.keys(lm);function qh(e){return Kh.includes(e)}function Jh(e,t,n){return mh(e,t,n,`middle`,e=>qh(e)?e:null)}const Yh=`true`,Xh=`false`,Zh=[Yh,Xh],Qh={min:0,max:16};function $h(e){return e===`true`?!0:e===`false`?!1:null}function eg(e,t){let n=Number(e);return Number.isInteger(n)&&String(n)===e&&n>=t.min&&n<=t.max?n:null}function tg(e){return eg(e,Qh)}function ng(e,t,n){return mh(e,t,n,!0,$h)}function rg(e,t,n){return mh(e,t,n,!0,$h)}function ig(e,t,n){return mh(e,t,n,!1,$h)}function ag(e,t,n){return mh(e,t,n,1,tg)}const og={kind:`still`},sg=Symbol(`bar`);function cg(e){return e.name!==Oh}function lg(e,t){return n=>Ml.map(Ml.all(t.map(({t,effect:r})=>Bl.run(Bl.play(e-t),r(n)))),e=>(t,n)=>e.reduce((e,t)=>t(e,n),t))}const ug=Jc;function dg(e,t){let n=new js(t,ug.foregroundColor,ug.ansiColors,ug.palette);return t=>e({...t,theme:n})}function fg(e,t){return n=>Df(()=>e(n),...t)(n)}function pg(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619)>>>0;return t/4294967296}const mg=4096;var hg=class{inForce=null;placements=new Map;made=new Map;drawn=null;frame={effect:Oh,t:0,made:0,reused:0,own:[],basis:`off`,revision:0,fades:[],leaves:[]};constructor(e){this.key=e}lastFrame(){return this.frame}get heldCount(){let e=[...this.drawn?.placements.values()??[]].filter(({passage:e})=>e!==null).length;return[...this.made.values()].reduce((e,t)=>e+t.size,e)}motion(e,t,n){let r=this.inForce?.name===e?this.inForce:{name:e,since:t},i={scope:sg,name:e,t:t-r.since},a=this.placements,o=new Map,s=this.made,c=new Map,l=[],u=this.drawn,d=n.transitions?u!==null&&u.source.config===n.source.config&&u.source.preset===n.source.preset&&u.source.revision===n.source.revision&&u.source.width===n.source.width?`compared`:`fresh`:`off`,f=d===`compared`?u.placements:null,p=new Map,m=[],h=[],g={effect:e,t:i.t,made:0,reused:0,own:l,basis:d,revision:n.source.revision,fades:m,leaves:h},_=(e,n,{ground:r})=>{let i=Fp.transitions[e]({z:pg(`${this.key}@${n}`)*mg});return{name:e,since:t,transition:{effect:dg(i.effect,r),done:e=>i.done(e)}}},v=({since:e,transition:n})=>n.done(t-e),y=(e,t,n)=>({drawing:t,passage:f===null?null:n===void 0||n.passage?.name===`dissolve`?_(`fade`,e,t):n.passage!==null&&!v(n.passage)?n.passage:null}),b=(e,t)=>{if(t===void 0||t.drawing.own.length===0)return;if(t.passage?.name===`dissolve`)return v(t.passage)?void 0:t;let r={...t.drawing,own:t.drawing.own.map(n.hold)};return{drawing:r,passage:_(`dissolve`,e,r)}},x=(e,r)=>{if(p.has(e))throw Error(`placement "${e}" was reached twice in one frame`);let i=f?.get(e),{drawing:a,deeper:o}=n.returned(e,r),s=a===null?b(e,i):y(e,a,i);return s===void 0?r:(p.set(e,s),s.passage!==null&&(s.passage.name===`fade`?m:h).push({placement:e,t:t-s.passage.since}),a===null?[...s.drawing.own,...o]:r)},S=(e,n)=>{let r=o.get(e)??a.get(e),i=r?.name===n?r:{name:n,since:t},s=t-i.since;return o.has(e)||(o.set(e,i),l.push({placement:e,effect:n,t:s})),{scope:e,name:n,t:s}},C=(e,t)=>{let n=c.get(e)??new Map;c.set(e,n);let r=n.get(t.scope);if(r!==void 0)return r.effect;let i=s.get(e)?.get(t.scope),a=i?.name===t.name,o=pg(t.scope===sg?e:`${e}@${t.scope}`),l=a?i.effect:Fp.loops[t.name]({z:o*mg});return g[a?`reused`:`made`]++,n.set(t.scope,{name:t.name,effect:l}),l},w=e=>{let t=new Map;for(let{owner:n,placement:r}of e){let e=r.effect===`bar`?i:S(r.id,r.effect),a=t.get(e.scope);a===void 0?t.set(e.scope,{...e,owners:[n]}):a.owners.push(n)}return[...t.values()]},ee=e=>{let n=new Map;for(let{owner:t,placement:r}of e){let e=n.get(r.id);e===void 0?n.set(r.id,[t]):e.push(t)}return[...n].flatMap(([e,n])=>{let r=p.get(e)?.passage??null;return r===null?[]:[{t:t-r.since,effect:Df(r.transition.effect,...n)}]})};return{placed:d===`off`?(e,t)=>t:x,row:(e,t)=>{let n=(t.some(e=>e.placement.effect!==`bar`)?w(t):[{...i,owners:void 0}]).filter(cg),r=ee(t);if(n.length===0&&r.length===0)return og;let a=`${this.key}#${e}`;return{kind:`moving`,wrap:e=>new xf(e,lg(i.t,[...n.map(e=>{let t=C(a,e);return{t:e.t,effect:e.owners===void 0?t:fg(t,e.owners)}}),...r]),{t:i.t,key:a,theme:ug})}},drawn:()=>{this.inForce=r,this.placements=o,this.made=c,this.drawn=d===`off`?null:{source:n.source,placements:p},this.frame=g}}}},gg=class{sessions=new Map;constructor(e=256){this.maxSessions=e}of(e){let t=this.sessions.get(e)??new hg(e);this.sessions.delete(e),this.sessions.set(e,t);for(let e of this.sessions.keys()){if(this.sessions.size<=this.maxSessions)break;this.sessions.delete(e)}return t}getStats(){let e=0;for(let t of this.sessions.values())e+=t.heldCount;return{sessions:this.sessions.size,effects:e}}};function _g(e,t){let n=ls(t.colorSystem),r=[...hu(e,{maxWidth:t.width??80,isTerminal:!1,asciiOnly:!1,theme:$p,colorSystem:n.colorSystem,onStyleError:e=>{throw e}})];return{text:sf(r,n),moves:Number.isFinite(G.nextChange(r))}}const vg=new Map;function yg(e){let t=vg.get(e);if(t!==void 0)return t;let n=t=>{let n=t.seam.map(t=>`cap`in t?t:{...t,glyph:e});return{seam:n,divider:n}},{seam:r,caps:i}=af.plain,a=new Dd({glyph:n(r.glyph),ascii:r.ascii},i);return vg.set(e,a),a}function bg(e,t){return e===`plain`&&t!==void 0?yg(t):af[e]}const xg=new Map;function Sg(e){let t=JSON.stringify([e.endcaps,e.separator??null]),n=xg.get(t);if(n!==void 0)return n;let r=bg(e.endcaps,e.separator),i=e=>new K(`x`,{end:``,overflow:`ignore`,style:new U({bgcolor:e})}),a=e=>new K(_g(new ed(e,r),{colorSystem:null}).text.replace(/\n$/,``)).cellLength,o=a([i(`#101010`)]),s={chrome:o-1,seam:a([i(`#101010`),i(`#202020`)])-o-1};return xg.set(t,s),s}function Cg(e){return Sg(e).chrome}function wg(e){return Sg(e).seam}const Tg=/[\u{E000}-\u{F8FF}\u{F0000}-\u{FFFFD}\u{100000}-\u{10FFFD}]/gu;function Eg(e){return[...new Set(e.match(Tg)??[])].join(``)}function Dg(e){let t=bg(e.endcaps,e.separator),n=e=>new K(`x`,{end:``,style:new U({bgcolor:e})});return Eg(_g(new ed([n(`#101010`),n(`#202020`),n(`#202020`)],t),{colorSystem:null}).text)}function Og(e,t,n=og){if(e.length===0)return{text:``,moves:!1};let r=bg(t.endcaps,t.separator),i=t.wrap&&Number.isFinite(t.width),a={colorSystem:t.colorCompatibility,...i?{width:t.width}:{}},o=i?new Up([...e],{joiner:r}):new ed([...e],r),s=_g(n.kind===`still`?o:n.wrap(o),a);if(!s.text.endsWith(`
|
|
54
|
-
`))throw Error(`drawStripCells: rich-js strip output did not end its last line`);return{text:s.text.slice(0,-1),moves:s.moves}}function
|
|
55
|
-
`)}function
|
|
56
|
-
`);return e?`${l}\n${e}`:l}function
|
|
57
|
-
`))}function Vg(e,t,n,r){let{colors:i}=e.channels[0].severity,{fullText:o,failedConfigFile:s}=t,c=new U({bgcolor:i.bg,color:i.fg}),l=(e,t)=>new K(e,{style:t,end:``,overflow:`ignore`}),u=n>0?[l(`${n} more rows · `,c),o.kind===`file`?l(`open full text`,c.withLink(a(o.path).href)):l(`full text unavailable: ${Gp(o.reason)}`,c)]:[],d=s===null?[]:[l(`${u.length>0?` · `:``}open `,c),l(Gp(s),c.withLink(a(s).href))],f=[l(`↳ `,c),...u,...d.slice(0,-1)],p=f.reduce((e,t)=>e+t.cellLength,0),m=d.slice(-1).map(e=>e.truncate(Math.max(1,r.width-p),{mode:`middle`})),h=K.fromFragments([...f,...m]).truncate(r.width);return h.overflow=`ignore`,kg([h],r)}const Hg=e=>!e.startsWith(`.`)&&!e.endsWith(`~`);function Ug(e,t){return t.isSymbolicLink()?Buffer.from(s.readlinkSync(e)):s.readFileSync(e)}function Wg(e,t,n=Hg){return s.readdirSync(t).filter(n).sort().flatMap(n=>{let r=v.join(t,n),i=s.lstatSync(r,{throwIfNoEntry:!1});return i===void 0?[]:i.isDirectory()?Wg(e,r):[[v.relative(e,r).split(v.sep).join(`/`),Ug(r,i)]]})}function Gg(e){let t=ce.createHash(`sha256`);for(let[n,r]of e)t.update(n).update(`\0`).update(r).update(`\0`);return t.digest(`hex`)}function Kg(e){return Gg(Wg(e,e))}const qg=[`Cargo.toml`,`Cargo.lock`,`src`];function Jg(e){return Gg(Wg(e,e,e=>qg.includes(e)))}const Yg=e=>e.slice(0,7);function Xg(e){let t=v.dirname(v.dirname(e));return s.existsSync(v.join(t,`src`))?t:null}function Zg(){let e=Qg();if(e===null)throw Error("this bundle carries no source digest (build via `pnpm build`, which stamps it)");return{version:Lt,digest:e}}function Qg(){return`fc0b46730e87b1a155583ac3167d92adb464626199f3467db79bd144d6aab835`}function $g(e){let t=JSON.parse(s.readFileSync(v.join(e,`package.json`),`utf8`)),n=typeof t==`object`&&t?t.version:void 0;if(typeof n!=`string`)throw Error(`${v.join(e,`package.json`)} has no version string`);return n}function e_(e,t){try{let n=Xg(i(e));if(n===null)return{kind:`not-source-checkout`};let r=t(),a=Kg(v.join(n,`src`));return a===r.digest?{kind:`current`,root:n,stamp:r}:{kind:`stale`,root:n,source:{version:$g(n),digest:a},running:r}}catch(e){return{kind:`unchecked`,reason:e.message}}}var q=class extends Error{constructor(e){super(e),this.name=`BadVerbArgs`}};const t_=new Map;function n_(e){let t=i_(e);if(t===null)throw Error(`Palette "${e}" did not resolve in the theme registry — allowed names and the registry are inconsistent`);return t}function r_(e,t){return e===`bar`?t:n_(e)}function i_(e){let t=t_.get(e);if(t!==void 0)return t;let n=Bc(e);return n===null?null:(t_.set(e,n),n)}function a_(e,t){return o_(e,`${t.hueShift} ${t.chromaScale} ${t.lightnessScale} ${t.lightnessShift}`,()=>Qc(e,t))}const o_=tm();function s_(e){let t=i_(e);return t===null?null:{kind:`decided`,name:e,value:t}}function c_(e,t,n){let r=s_(e);return r===null?(n(Ah(t,`palette`,`"${e}" names no installed theme${fh(e)}`)),u_()):r}function l_(e,t,n){return Sh(e,t,n,u_(),s_)}function u_(){return{kind:`decided`,name:ph,value:n_(ph)}}const d_=[`vertical`,`horizontal`],f_={vertical:`row`,horizontal:`cell`};function p_(e){return e.id??e.name}function m_(e){return[...__(e)].flatMap(e=>e.kind===`segment`?[p_(e)]:[])}function h_(e,t){if(!t.has(e))return e;let n=2;for(;t.has(`${e}-${n}`);)n++;return`${e}-${n}`}function g_(e,t){return e.opens===void 0?e:{...e,opens:{...e.opens,body:t(e.opens.body)}}}function*__(e){yield e;for(let t of x_(e))yield*__(t)}const v_=(e,t)=>`${e}.children[${t}]`,y_=e=>`${e}.opens.body`;function*b_(e,t){if(yield[e,t],e.kind===`container`)for(let[n,r]of e.children.entries())yield*b_(r,v_(t,n));else e.opens!==void 0&&(yield*b_(e.opens.body,y_(t)))}function x_(e){return e.kind===`container`?e.children:e.opens===void 0?[]:[e.opens.body]}const S_=[`shade`,`variation`,`style`];function C_(e){return e===void 0||`text`in e?`text`:`regex`in e?`regex`:`json`}const w_=[`ttl`,`watch_file`,`depends_on`,`key`,`never`];function T_(e){return e.kind===`file`||e.kind===`shell`}const E_=[`branch`,`sha`,`dirty`,`ahead`,`behind`,`stash`],D_=[`fail`,`ignore`];function O_(e){return e.missingData??`fail`}function*k_(e){for(let[t,n]of Object.entries(e.variables))n.kind===`state`&&(yield[t,n]);for(let[t,n]of Object.entries(e.segments))if(n.vars)for(let[e,r]of Object.entries(n.vars))r.kind===`state`&&(yield[`${t}.${e}`,r])}const A_=`theme`,j_=`effect`,M_=[A_,j_];function N_(e){return{...e.settings,[A_]:{label:A_,domain:`theme`,default:e.palette??`bar`},[j_]:{label:j_,domain:Mh,default:`bar`}}}function P_(e){let t=e?.domain;return typeof t==`object`&&`min`in t?t:void 0}function F_(e,t){return Object.entries(e).flatMap(([n,r])=>{let i=P_(r)?.atLeast;if(i===void 0)return[];let a=t[n],o=t[i];return a>=o?[]:[{setting:n,message:`"${n}" (${a}) is below "${i}" (${o}) — ${r.label} must be at least ${e[i].label}`}]})}function I_(e,t){let{domain:n}=e;return n===`bool`?typeof t==`boolean`:n===`theme`?typeof t==`string`&&vh(t):`min`in n?typeof t==`number`&&Number.isInteger(t)&&t>=n.min&&t<=n.max:typeof t==`string`&&n.includes(t)}function L_(e){return String(e)}function R_(e,t){let{domain:n}=e;if(typeof n==`object`&&`min`in n)return eg(t,n)??void 0;let r=n===`bool`?t===`true`?!0:t===`false`?!1:t:t;return I_(e,r)?r:void 0}function z_(e,t,n,r){let i=e.settings?.[t]??n.default,a=e.drafts?.[t],o=a===void 0?null:r(a);return(o===null?void 0:R_(n,o))??i}function B_(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 V_=[`left`,`center`,`right`],H_=[`right`,`left`,`middle`],U_=/^[A-Za-z_][A-Za-z0-9_]*$/;function W_(e){return`#${e+1}`}const G_={rows:{}};function K_(e){return`rows`in e}function q_(e){return Object.fromEntries(e.map((e,t)=>[W_(t),e]))}function J_(e){if(e.kind===`container`&&e.direction===`vertical`){let{kind:t,direction:n,children:r,...i}=e;return{...i,rows:q_(r)}}let{when:t,...n}=e;return{...t!==void 0&&{when:t},rows:q_([n])}}function Y_(e){let{rows:t,...n}=e;return{kind:`container`,direction:`vertical`,children:Object.values(t),...n}}function X_(e){return K_(e)?Y_(e):e}function*Z_(e,t){if(!K_(e)){yield*b_(e,t);return}yield[Y_(e),t];for(let[n,r]of Object.entries(e.rows))yield*b_(r,`${t}.rows.${n}`)}function Q_(e,t){return K_(e)?{...t,...e,rows:{...t.rows,...e.rows}}:J_(e)}function $_(e){if(!K_(e))return!0;let{rows:t,...n}=e;return Object.values(n).some(e=>e!==void 0)||Object.keys(t).length>0}const ev=`default`,tv={};function nv(e){return[...new Set([ev,...Object.keys(e)])]}function rv(e,t,n){return yh(void 0,e,t,ev,n)}function iv(e,t){let n={[ev]:tv,...e}[t];if(n===void 0)throw Error(`Preset "${t}" is not declared in this config — effectivePresetName collapses unknown names to "${ev}", which always resolves; a miss here means a raw name reached this function without going through that resolution`);return n}function av(e,t){let n=iv(e.presets,t).root??G_;return{node:Y_(Q_(n,e.root)),path:$_(n)?`presets.${t}.root`:`root`}}function ov(e,t){return{...e.globals,...iv(e.presets,t).globals}}const sv=new Map;function cv(e,t,n){sv.set(e,{permanent:!0,resolve:t,paletteOf:n})}cv(`themes`,()=>hh(),e=>n_(e));const lv=`placementThemes`;cv(lv,gh,(e,t)=>r_(e,t.palette)),cv(`endcaps`,()=>Ih),cv(`variations`,()=>Uh),cv(`shades`,()=>Kh),cv(`colorCompatibilities`,()=>Vh);function uv(e){return new Map([[`styles`,{members:Object.keys(e.styles),paletteOf:(t,n)=>a_(n.basePalette,e.styles[t])}],[`presets`,{members:nv(e.presets)}]])}function dv(e){return[...new Set([...sv.keys(),...e.keys()])]}function fv(e,t){if(typeof e!=`string`)return{members:e};let n=t.get(e);if(n)return n;let r=sv.get(e);if(r)return{members:r.resolve(),paletteOf:r.paletteOf};throw Error(mv(e,t))}const pv=new Map([[`looks`,`styles`],[`progressions`,`variations`]]);function mv(e,t){let n=pv.get(e);return`unknown option domain "${e}"${n===void 0?``:` — it was renamed "${n}"; write from: "${n}"`} (have: ${dv(t).join(`, `)})`}const hv=/"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|`[^`]*`/g;function*gv(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 _v=`[A-Za-z_]\\w*(?:\\.[A-Za-z_]\\w*)*`,vv=RegExp(`^(?:(\\$)(?:\\.(${_v}))?|\\.(${_v})?)(?=[\\s)]|$)`);function yv(e,t,n){let r=vv.exec(e.trimStart());if(r===null)return null;let[i,a]=r[1]===void 0?[t,r[3]]:[n,r[2]];return i===null?null:a===void 0?i:`${i}${a}.`}const bv=/^(\w+)\b\s*([\s\S]*)$/;function*xv(e,t){let n=[t];for(let r of gv(e)){let e=r.replace(/^-(?=\s)/,``).trim(),[,i=``,a=``]=bv.exec(e)??[],o=n[n.length-1],s=n.length>1?n[n.length-2]:o;if(i===`end`){n.length>1&&n.pop();continue}if(i===`else`){yield{code:e,dot:s};let r=/^with\b([\s\S]*)$/.exec(a);n[n.length-1]=r===null?s:yv(r[1],s,t);continue}yield{code:e,dot:o},i===`if`&&n.push(o),i===`with`&&n.push(yv(a,o,t)),(i===`range`||i===`define`||i===`block`)&&n.push(null)}}const Sv=/(?<![.$])\btemplate\s+$/;function*Cv(e,t,n){let r=0;for(let i of[...e.matchAll(hv)]){let a=i.index+i[0].length;Sv.test(e.slice(r,i.index))&&(yield{name:i[0].slice(1,-1),at:yv(e.slice(a),t,n)}),r=a}}function*wv(e,t){let n=new Set;function*r(e,i,a,o){for(let{code:s,dot:c}of[...xv(e,i)]){yield{code:s,dot:c,root:i,via:a};for(let e of[...Cv(s,c,i)]){let i=Object.hasOwn(t,e.name)?t[e.name]:void 0,a=`${e.name}\0${e.at??`\0`}`;i===void 0||o.has(e.name)||n.has(a)||(n.add(a),yield*r(i,e.at,e.name,new Set([...o,e.name])))}}}yield*r(e,``,null,new Set)}const Tv=RegExp(`(?<![A-Za-z0-9_)$])(\\$?)\\.(${_v})`,`g`);function*Ev({code:e,dot:t,root:n}){let r=e.replace(hv,``);for(let e of[...r.matchAll(Tv)]){let r=e[1]===`$`?n:t;r!==null&&(yield`${r}${e[2]}`)}}function Dv(e,t){let n=new Map;for(let r of wv(e,t))for(let e of Ev(r))n.has(e)||n.set(e,r.via);return n}const Ov=/(?<![.$])\b(action|picker|menu|carousel|swatches|swatch|themePreview)\s+$/,kv={action:1,picker:2,menu:1,carousel:2,swatch:1,swatches:2,themePreview:1};function*Av(e){let t=0,n=0,r=0,i=`action`;for(let a of[...e.matchAll(hv)]){let o=e.slice(t,a.index),s=Ov.exec(o);if(s!==null)n=kv[s[1]],r=0,i=s[1]===`action`?`action`:`options`;else for(let e of o)e===`(`&&r++,e===`)`&&r--,(r<0||e===`|`&&r===0)&&(n=0);n>0&&r===0&&(yield{name:a[0].slice(1,-1),site:i},n--),t=a.index+a[0].length}}function jv(e,t){let n=new Map;for(let{code:r,via:i}of wv(e,t))for(let{name:e,site:t}of Av(r)){let r=`${e}\0${i??`\0`}`;n.has(r)||n.set(r,{name:e,site:t,via:i})}return[...n.values()]}function Mv(e,t){return new Set([...Nv(e,t)].filter(e=>Object.hasOwn(t,e)))}function Nv(e,t){let n=new Set;for(let{code:r,dot:i,root:a}of wv(e,t))for(let{name:e}of Cv(r,i,a))n.add(e);return n}function Pv(e,t){if(t.names.has(e))return!0;let n=`${e}.`;for(let e of t.names)if(e.startsWith(n))return!0;for(let n of t.documents)if(e.startsWith(`${n}.`))return!0;return!1}function Fv(e){let t=new Set,n=new Set,r=(e,r)=>{t.add(e),Iv(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 Iv(e){return e.kind===`dropped`||(e.kind===`shell`||e.kind===`file`)&&C_(e.parse)===`json`}function Lv(e){let t=v.basename(e),n=v.dirname(e);for(;;){let r=Rv(n);if(r!==null)return{dir:r,name:t,leaf:n===v.dirname(e)};t=v.basename(n),n=v.dirname(n)}}function Rv(e){try{return s.statSync(e).isDirectory()?s.realpathSync(e):null}catch{return null}}var zv=we((e=>{function t(e,...t){throw Error(`[MobX] minified error nr: ${e}${t.length?` `+t.map(String).join(`,`):``}. See mobx.js.org/errors`)}function n(e){let t=!1;return function(){if(!t)return t=!0,e.apply(this,arguments)}}function r(e){return typeof e==`function`}function i(e){switch(typeof e){case`string`:case`symbol`:case`number`:return!0}return!1}function a(e){return typeof e==`object`&&!!e}function o(e){if(!a(e))return!1;let t=Object.getPrototypeOf(e);if(t==null)return!0;let n=p(t,`constructor`)&&t.constructor;return typeof n==`function`&&n.toString()===zt}function s(e){let t=e?.constructor;return!!t&&(t.name===`GeneratorFunction`||t.displayName===`GeneratorFunction`)}function c(e,t,n){Ft(e,t,{enumerable:!1,writable:!0,configurable:!0,value:n})}function l(e,t){let n=`isMobX`+e;return t.prototype[n]=!0,function(e){return a(e)&&!0===e[n]}}function u(e){return e!=null&&Object.prototype.toString.call(e)===`[object Map]`}function d(e){return e!=null&&Object.prototype.toString.call(e)===`[object Set]`}function f(e){return e===null?null:typeof e==`object`?``+e:e}function p(e,t){return It.hasOwnProperty.call(e,t)}function m(e,t){return!!(e&t)}function h(e,t,n){return n?e|=t:e&=~t,e}function g(e,t=Bt,n=Bt){let r=new Ut(e);return t!==Bt&&(r.onBOL=new Set([t])),n!==Bt&&(r.onBUOL=new Set([n])),r}function _(e,t){return Ot(e,t)}function v(e,t,n){return e===null||typeof e!=`object`&&typeof e!=`function`||$e(e)?e:Array.isArray(e)?an.array(e,{name:n}):o(e)?an.object(e,void 0,{name:n}):u(e)?an.map(e,{name:n}):d(e)?an.set(e,{name:n}):typeof e!=`function`||He(e)||Xe(e)?e:s(e)?Un(e):Fn(n,e)}function y(e){return e}function b(e,t){return{t:e,i:t,o:x,u:S}}function x(e,t,n,r){var i;return(i=this.i)!=null&&i.bound?this.u(e,t,n,!1)===null?0:1:r===e.h?this.u(e,t,n,!1)===null?0:2:He(n.value)?1:(Ft(r,t,w(e,this,t,n,!1)),2)}function S(e,t,n,r){let i=w(e,this,t,n);return e.l(t,i,r)}function C(e,n,r){let{kind:i,name:a,addInitializer:o}=r,s=e,c=e=>{var t;return _e(s.i?.name??a.toString(),e,(t=s.i?.autoAction)!=null&&t)};return i==`field`?function(e){var t;let n=e;return He(n)||(n=c(n)),(t=s.i)!=null&&t.bound&&(n=n.bind(this),n.isMobxAction=!0),n}:i==`method`?(He(n)||(n=c(n)),(l=s.i)!=null&&l.bound&&o(function(){let e=this,t=e[a].bind(e);t.isMobxAction=!0,e[a]=t}),n):void t(43,s.t,String(a),i);var l}function w(e,t,n,r,i=F.safeDescriptors){var a,o,s;let{value:c}=r;return(a=t.i)!=null&&a.bound&&(c=c.bind(e.v??e.h)),{value:_e(t.i?.name??n.toString(),c,(o=t.i?.autoAction)!=null&&o,(s=t.i)!=null&&s.bound?e.v??e.h:void 0),configurable:!i||e.p,enumerable:!1,writable:!i}}function ee(e,t){return{t:e,i:t,o:te,u:ne}}function te(e,t,n,r){var i;return r===e.h?this.u(e,t,n,!1)===null?0:2:(i=this.i)!=null&&i.bound&&(!p(e.h,t)||!Xe(e.h[t]))&&this.u(e,t,n,!1)===null?0:Xe(n.value)?1:(Ft(r,t,re(e,0,0,n,!1,!1)),2)}function ne(e,t,n,r){let i=re(e,0,0,n,this.i?.bound);return e.l(t,i,r)}function T(e,t,n){var r;let{name:i,addInitializer:a}=n;return Xe(t)||(t=Un(t)),(r=e.i)!=null&&r.bound&&a(function(){let e=this,t=e[i].bind(e);t.isMobXFlow=!0,e[i]=t}),t}function re(e,t,n,r,i,a=F.safeDescriptors){let{value:o}=r;return Xe(o)||(o=Un(o)),i&&(o=o.bind(e.v??e.h),o.isMobXFlow=!0),{value:o,configurable:!a||e.p,enumerable:!1,writable:!a}}function E(e,t){return{t:e,i:t,o:D,u:ie}}function D(e,t,n){return this.u(e,t,n,!1)===null?0:1}function ie(e,t,n,r){return e.m(t,Nt({},this.i,{get:n.get,set:n.set}),r)}function O(e,t,n){function r(e){let n=Nt({},i.i,{get:t,context:e});return n.name||=`ObservableObject.${a.toString()}`,new _n(n)}let i=e,{name:a,addInitializer:o}=n,s;return o(function(){let e=xt(this)[M],n=this,i=e.j.get(a);i instanceof _n&&i.derivation!==t&&e.j.delete(a),(e.O??=new Map).set(a,()=>r(n))}),function(){let e=this[M],n=e.j.get(a);if(n instanceof _n&&n.derivation!==t){let e=s?.get(this);return e||(e=r(this),(s??=new WeakMap).set(this,e)),e.get()}return e._(a)}}function ae(e,t){return{t:e,i:t,o:oe,u:se}}function oe(e,t,n){return this.u(e,t,n,!1)===null?0:1}function se(e,t,n,r){return e.S(t,n.value,this.i?.A??v,r)}function ce(e,t,n){function r(e,t){let n=xt(e)[M];return(n.V??=new Map).set(o,()=>new hn(t,i.i?.A??v,`ObservableObject.${o.toString()}`,!1)),n}let i=e,{kind:a,name:o}=n;if(a===`accessor`)return{get(){return(this[M]??r(this,t.get.call(this)))._(o)},set(e){return(this[M]??r(this,e)).M(o,e)},init(e){return r(this,e),e}}}function le(e){return{t:qt,i:e,o:ue,u:de}}function ue(e,t,n,r){var i,a,o;if(n.get)return ln.o(e,t,n,r);if(n.set){let i=He(n.set)?n.set:_e(t.toString(),n.set);return r===e.h?e.l(t,{configurable:!F.safeDescriptors||e.p,set:i})===null?0:2:(Ft(r,t,{configurable:!0,set:i}),2)}if(r!==e.h&&typeof n.value==`function`)return s(n.value)?((o=this.i)!=null&&o.autoBind?Wn:Un).o(e,t,n,r):((a=this.i)!=null&&a.autoBind?Ln:Fn).o(e,t,n,r);let c=!1===this.i?.deep?en:an;return typeof n.value==`function`&&(i=this.i)!=null&&i.autoBind&&(n.value=n.value.bind(e.v??e.h)),c.o(e,t,n,r)}function de(e,t,n,r){var i;return n.get?ln.u(e,t,n,r):n.set?e.l(t,{configurable:!F.safeDescriptors||e.p,set:_e(t.toString(),n.set)},r):(typeof n.value==`function`&&(i=this.i)!=null&&i.autoBind&&(n.value=n.value.bind(e.v??e.h)),(!1===this.i?.deep?en:an).u(e,t,n,r))}function fe(e,t){return Nt(function(n,r){if(r&&typeof r.kind==`string`)return t(e,n,r)},e)}function pe(e){return e||Jt}function me(e){return fe(e,ce)}function he(e){return!0===e.deep?v:!1===e.deep?y:(t=e.defaultDecorator)&&(n=(r=t.i)?.A)!=null?n:v;var t,n,r}function ge(e){return fe(e,O)}function _e(e,t,n=!1,r){function i(){return ve(0,n,t,r||this,arguments)}return i.isMobxAction=!0,i.toString=()=>t.toString(),pn&&(mn.value=e,Ft(i,`name`,mn)),i}function ve(e,t,n,r,i){let a=ye(0,t);try{return n.apply(r,i)}catch(e){throw a.N=e,e}finally{be(a)}}function ye(e,t){let n=F.trackingDerivation,r=!t||!n;Me();let i=F.allowStateChanges;r&&k();let a={R:r,k:n,C:i,I:F.allowStateReads,P:!1,T:0,B:fn++,D:dn};return dn=a.B,a}function be(e){dn!==e.B&&t(30),dn=e.D,e.N!==void 0&&(F.suppressReactionErrors=!0),Ne(),e.R&&De(e.k),F.suppressReactionErrors=!1}function xe(e,t){let n=function(e){let t=F.allowStateChanges;return F.allowStateChanges=e,t}(e);try{return t()}finally{(function(e){F.allowStateChanges=e})(n)}}function Se(e){return e instanceof yn}function Ce(e){switch(e.K){case 0:return!1;case-1:case 2:return!0;case 1:{let t=k(),n=e.L,r=n.length;for(let i=0;i<r;i++){let r=n[i];if(vn(r)){if(F.disableErrorBoundaries)r.get();else try{r.get()}catch{return De(t),!0}if(e.K===2)return De(t),!0}}return Oe(e),De(t),!1}}}function we(e,t,n){Oe(e),e.$=Array(e.U===0?100:e.L.length),e.W=0,e.U=++F.runId;let r=F.trackingDerivation,i;if(F.trackingDerivation=e,F.inBatch++,!0===F.disableErrorBoundaries)i=t.call(n);else try{i=t.call(n)}catch(e){i=new yn(e)}return F.inBatch--,F.trackingDerivation=r,function(e){let t=e.L,n=e.L=e.$,r=0,i=0,a=e.W;for(let e=0;e<a;e++){let t=n[e];t.diffValue===0&&(t.diffValue=1,i!==e&&(n[i]=t),i++),t.K>r&&(r=t.K)}for(n.length=i,e.$=null,a=t.length;a--;){let n=t[a];n.diffValue===0&&Ae(n,e),n.diffValue=0}for(;i--;){let t=n[i];t.diffValue===1&&(t.diffValue=0,ke(t,e))}r!==0&&(e.K=r,e.q())}(e),i}function Te(e){let t=e.L;e.L=[];let n=t.length;for(;n--;)Ae(t[n],e);e.K=-1}function Ee(e){let t=k();try{return e()}finally{De(t)}}function k(){let e=F.trackingDerivation;return F.trackingDerivation=null,e}function De(e){F.trackingDerivation=e}function Oe(e){if(e.K===0)return;e.K=0;let t=e.L,n=t.length;for(;n--;)t[n].F=0}function ke(e,t){(e.H??=new Set).add(t),e.F>t.K&&(e.F=t.K)}function Ae(e,t){let n=e.H;n&&(n.delete(t),n.size===0&&je(e))}function je(e){!1===e.isPendingUnobservation&&(e.isPendingUnobservation=!0,F.pendingUnobservations.push(e))}function Me(){F.inBatch++}function Ne(){--F.inBatch===0&&(Le(),!F.isRunningUnobservations&&F.pendingUnobservations.length>0&&function(){F.isRunningUnobservations=!0;try{let e=F.pendingUnobservations;for(let t=0;t<e.length;t++){let n=e[t];n.isPendingUnobservation=!1,n.H&&n.H.size!==0||(n.H=null,n.isBeingObserved&&(n.isBeingObserved=!1,n.onBUO()),n instanceof _n&&n.G())}F.pendingUnobservations=[]}finally{F.isRunningUnobservations=!1}}())}function Pe(e){var t;e.isBeingObserved||(e.isBeingObserved=!0,e.onBO(),(t=e.L)==null||t.forEach(Pe))}function Fe(e){let t=F.trackingDerivation;return t===null?((!e.H||e.H.size===0)&&F.inBatch>0&&je(e),!1):(t.U!==e.J&&(e.J=t.U,t.$[t.W++]=e,!e.isBeingObserved&&F.trackingContext&&(e.isBeingObserved=!0,e.onBO())),e.isBeingObserved)}function Ie(e){var t;e.F!==2&&(e.F=2,(t=e.H)==null||t.forEach(e=>{e.K===0&&e.q(),e.K=2}))}function Le(){F.inBatch>0||F.isRunningReactions||En(Re)}function Re(){F.isRunningReactions=!0;let e=F.pendingReactions,t=0;for(;e.length>0;){++t===Tn&&(console.error(`[mobx] cycle in reaction: ${e[0]}`),e.splice(0));let n=e.splice(0);for(let e=0,t=n.length;e<t;e++)n[e].X()}F.isRunningReactions=!1}function ze(e){return fe(e,C)}function Be(e){return function(t,n){return n&&typeof n.kind==`string`?C(e?Mn:An,t,n):r(t)?_e(t.name||`<unnamed action>`,t,e):r(n)?_e(t,n,e):i(t)?ze(b(e?kn:On,{name:t,autoAction:e})):void 0}}function Ve(e){return ve(0,!1,e,this,void 0)}function He(e){return r(e)&&!0===e.isMobxAction}function Ue(e,t=Rt){function n(){e(a)}var r;let i=t?.name??`Autorun`,a;if(t.scheduler||t.delay){let e=We(t),r=!1;a=new wn(i,()=>{r||(r=!0,e(()=>{r=!1,a.isDisposed||a.track(n)}))},t.onError,t.requiresObservable)}else a=new wn(i,function(){this.track(n)},t.onError,t.requiresObservable);return t!=null&&(r=t.signal)!=null&&r.aborted||a.Y(),a.Z(t?.signal)}function We(e){return e.scheduler?e.scheduler:e.delay?t=>setTimeout(t,e.delay):Rn}function Ge(e,t,n,i){let a=typeof i==`function`?wt(t,n):wt(t),o=r(i)?i:n,s=`${e}L`;return a[s]?a[s].add(o):a[s]=new Set([o]),function(){let e=a[s];e&&(e.delete(o),e.size===0&&delete a[s])}}function Ke(e,t,n,r){let i=Ht(t);return Dt(()=>{let t=xt(e,r)[M];Vt(i).forEach(e=>{t.u(e,i[e],!n||!(e in n)||n[e])})}),e}function qe(e){let t={name:e.tt};var n;return e.L&&e.L.length>0&&(t.dependencies=(n=e.L,Array.from(new Set(n))).map(qe)),t}function Je(e){let t={name:e.tt};return function(e){return!!e.H&&e.H.size>0}(e)&&(t.observers=Array.from(function(e){return e.H??new Set}(e),Je)),t}function Ye(e){r(e.cancel)&&e.cancel()}function Xe(e){return!0===e?.isMobXFlow}function Ze(e,t){var n;if(t===void 0)return vn(e);if(!1===Ct(e))return!1;let r=e[M];return(n=r.O)!=null&&n.has(t)?!0:r.j.has(t)?vn(wt(e,t)):!1}function Qe(e,t){if(!e)return!1;if(t!==void 0){if(Ct(e)){var n,r;let i=e[M];return i.j.has(t)||!((n=i.O)==null||!n.has(t))||!((r=i.V)==null||!r.has(t))}return!1}return Ct(e)||!!e[M]||Wt(e)||Dn(e)||vn(e)}function $e(e){return Qe(e)}function et(e){return Ct(e)?e[M].nt():nr(e)||ar(e)?Array.from(e.keys()):vt(e)?e.map((e,t)=>t):void t(5)}function tt(e,n){return Ct(e)?e[M].et(n):nr(e)||ar(e)?e.has(n):vt(e)?n>=0&&n<e.length:void t(10)}function nt(e){if(Ct(e))return e[M].it();t(38)}function rt(e,t,n){if(vn(e)){let r,i=!0;return Ue(()=>{let a=e.get();if(!i||n){let n=k();t({observableKind:`computed`,debugObjectName:e.tt,type:Jn,object:e,newValue:a,oldValue:r}),De(n)}i=!1,r=a})}return n&&t({observableKind:`value`,debugObjectName:e.tt,object:e,type:Jn,newValue:e.rt,oldValue:void 0}),ft(e,t)}function it(e,t,n){return e.set(t,n),n}function at(e,t){if(typeof e!=`object`||!e||e instanceof Date||!$e(e))return e;if(gn(e)||vn(e))return at(e.get(),t);if(t.has(e))return t.get(e);if(vt(e)){let n=it(t,e,Array(e.length));return e.forEach((e,r)=>{n[r]=at(e,t)}),n}if(ar(e)){let n=it(t,e,new Set);return e.forEach(e=>{n.add(at(e,t))}),n}if(nr(e)){let n=it(t,e,new Map);return e.forEach((e,r)=>{n.set(r,at(e,t))}),n}{let n=it(t,e,{});return nt(e).forEach(r=>{It.propertyIsEnumerable.call(e,r)&&(n[r]=at(e[r],t))}),n}}function ot(e,t){Me();try{return e.apply(t)}finally{Ne()}}function st(e,t,n){let r;if(typeof n.timeout==`number`){let e=Error(`WHEN_TIMEOUT`);r=setTimeout(()=>{if(!a[M].isDisposed){if(a(),!n.onError)throw e;n.onError(e)}},n.timeout)}n.name=`When`;let i=_e(`When-effect`,t);var a=Ue(t=>{xe(!1,e)&&(t.dispose(),r&&clearTimeout(r),i())},n);return a}function ct(e){return e[M]}function lt(e){return e.st!==void 0&&e.st.length>0}function ut(e,t){let r=e.st;return r?r.push(t):r=e.st=[t],n(()=>{let e=r.indexOf(t);e!==-1&&r.splice(e,1)})}function A(e,n){let r=k();try{let r=[...e.st||[]];for(let e=0,i=r.length;e<i&&((n=r[e](n))&&!n.type&&t(14),n);e++);return n}finally{De(r)}}function dt(e){return e.ot!==void 0&&e.ot.length>0}function ft(e,t){let r=e.ot;return r?r.push(t):r=e.ot=[t],n(()=>{let e=r.indexOf(t);e!==-1&&r.splice(e,1)})}function pt(e,t){let n=k(),r=e.ot;if(r){r=r.slice();for(let e=0,n=r.length;e<n;e++)r[e](t);De(n)}}function mt(e,n,r){if(!0===r&&(r=e.ut),!1===r)return;n in e.h||t(1,r.t,`${e.tt}.${n.toString()}`);let i=e.h;for(;i&&i!==It;){let t=Pt(i,n);if(t){let a=r.o(e,n,t,i);if(a===0)return;if(a===1)break}i=Object.getPrototypeOf(i)}}function j(e,t){typeof Array.prototype[e]==`function`&&(Zn[e]=t(e))}function ht(e){return function(){let t=this[M];t.ct.reportObserved();let n=t.ht(t.j);return n[e].apply(n,arguments)}}function gt(e){return function(t,n){let r=this[M];return r.ct.reportObserved(),r.ht(r.j)[e]((e,r)=>t.call(n,e,r,this))}}function _t(e){return function(){let t=this[M];t.ct.reportObserved();let n=t.ht(t.j),r=arguments[0];return arguments[0]=(e,t,n)=>r(e,t,n,this),n[e].apply(n,arguments)}}function vt(e){return a(e)&&Qn(e[M])}function yt(e){return e[Symbol.toStringTag]=`MapIterator`,jt(e)}function bt(e){return e[Symbol.toStringTag]=`SetIterator`,jt(e)}function xt(e,t){if(p(e,M))return e;let n=t?.name??`ObservableObject`;return c(e,M,new cr(e,new Map,String(n),function(e){return e?e.defaultDecorator??function(e){let t=!1!==e.deep,n=!!e.autoBind,r=!t|(n?2:0);return P[r]??(P[r]=le({deep:t,autoBind:n}))}(e):void 0}(t))),e}function St(e){return or[e]||(or[e]={get(){return this[M]._(e)},set(t){return this[M].M(e,t)}})}function Ct(e){return!!a(e)&&lr(e[M])}function wt(e,n){if(typeof e==`object`&&e){if(vt(e))return n!==void 0&&t(23),e[M].ct;if(ar(e))return e.ct;if(nr(e)){if(n===void 0)return e.lt;let r=e.ft.get(n)||e.dt.get(n);return r||t(25,n,Et(e)),r}if(Ct(e)){if(!n)return t(26);let r=e[M],i=r.j.get(n)??r.vt(n)??r.bt(n);return i||t(27,n,Et(e)),i}if(Wt(e)||vn(e)||Dn(e))return e}else if(r(e)&&Dn(e[M]))return e[M];t(28)}function Tt(e,n){return e||t(29),n===void 0?Wt(e)||vn(e)||Dn(e)||nr(e)||ar(e)?e:e[M]?e[M]:void t(24,e):Tt(wt(e,n))}function Et(e,t){let n;if(t!==void 0)n=wt(e,t);else{if(He(e))return e.name;n=Ct(e)||nr(e)||ar(e)?Tt(e):wt(e)}return n.tt}function Dt(e){let t=k();Me();try{return e()}finally{Ne(),De(t)}}function Ot(e,t,n=-1){return kt(e,t,n)}function kt(e,t,n,i,a){if(e===t)return e!==0||1/e==1/t;if(e==null||t==null)return!1;if(e!=e)return t!=t;let o=typeof e;if(o!==`function`&&o!==`object`&&typeof t!=`object`)return!1;let s=ur.call(e);if(s!==ur.call(t))return!1;switch(s){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++}e=At(e),t=At(t);let c=s===`[object Array]`;if(!c){if(typeof e!=`object`||typeof t!=`object`)return!1;let n=e.constructor,i=t.constructor;if(n!==i&&!(r(n)&&n instanceof n&&r(i)&&i instanceof i)&&`constructor`in e&&`constructor`in t)return!1}if(n===0)return!1;n<0&&(n=-1),a||=[];let l=(i||=[]).length;for(;l--;)if(i[l]===e)return a[l]===t;if(i.push(e),a.push(t),c){if(l=e.length,l!==t.length)return!1;for(;l--;)if(!kt(e[l],t[l],n-1,i,a))return!1}else{let r=Object.keys(e),o=r.length;if(Object.keys(t).length!==o)return!1;for(let s=0;s<o;s++){let o=r[s];if(!p(t,o)||!kt(e[o],t[o],n-1,i,a))return!1}}return i.pop(),a.pop(),!0}function At(e){return vt(e)?e.slice():u(e)||nr(e)||d(e)||ar(e)?Array.from(e.entries()):e}function jt(e){return e[Symbol.iterator]=Mt,Nt(Object.create(dr),e)}function Mt(){return this}Object.defineProperty(e,`__esModule`,{value:!0});let Nt=Object.assign,Pt=Object.getOwnPropertyDescriptor,Ft=Object.defineProperty,It=Object.prototype,Lt=[];Object.freeze(Lt);let Rt={};Object.freeze(Rt);let zt=Object.toString(),Bt=()=>{},Vt=Reflect.ownKeys,Ht=Object.getOwnPropertyDescriptors,M=Symbol(`mobx administration`);var Ut=class{constructor(e=`Atom`){this.tt=void 0,this.yt=0,this.H=null,this.J=0,this.F=-1,this.onBOL=void 0,this.onBUOL=void 0,this.tt=e}get isBeingObserved(){return m(this.yt,1)}set isBeingObserved(e){this.yt=h(this.yt,1,e)}get isPendingUnobservation(){return m(this.yt,2)}set isPendingUnobservation(e){this.yt=h(this.yt,2,e)}get diffValue(){return+!!m(this.yt,4)}set diffValue(e){this.yt=h(this.yt,4,e===1)}onBO(){this.onBOL&&this.onBOL.forEach(e=>e())}onBUO(){this.onBUOL&&this.onBUOL.forEach(e=>e())}reportObserved(){return Fe(this)}reportChanged(){Me(),Ie(this),Ne()}toString(){return this.tt}};let Wt=l(`Atom`,Ut),Gt=Object.is,Kt={t:`override`,o:function(){return 0},u:function(){t(44,this.t)}},qt=`true`,N=le(),P=[N],Jt={deep:!0,name:void 0,defaultDecorator:void 0};Object.freeze(Jt);let Yt=ae(`observable`),Xt=ae(`observable.ref`,{A:y}),Zt=ae(`observable.shallow`,{A:function(e,t,n){return e==null||Ct(e)||vt(e)||nr(e)||ar(e)?e:Array.isArray(e)?an.array(e,{name:n,deep:!1}):o(e)?an.object(e,void 0,{name:n,deep:!1}):u(e)?an.map(e,{name:n,deep:!1}):d(e)?an.set(e,{name:n,deep:!1}):void 0}}),Qt=ae(`observable.struct`,{A:function(e,t){return Ot(e,t)?t:e}}),$t={box(e,t){let n=pe(t);return new hn(e,he(n),n.name,!0,n.equals)},array(e,t){let n=pe(t);return function(e,t,n=`ObservableArray`,r=!1){return Dt(()=>{let i=new Xn(n,t,r);Ft(i.j,M,{enumerable:!1,writable:!1,configurable:!0,value:i});let a=new Proxy(i.j,Yn);return i.v=a,e&&e.length&&i.wt(0,0,e),a})}(e,he(n),n.name)},map(e,t){let n=pe(t);return new tr(e,he(n),n.name)},set(e,t){let n=pe(t);return new ir(e,he(n),n.name)},object:(e,t,n)=>Dt(()=>Ke(function(e,t){var n;return(n=(e=xt(e,t))[M]).v??(n.v=new Proxy(e,Gn))}({},n),e,t))},en=me(Xt),tn=me(Zt),nn=me(Yt),rn=me(Qt);var an=Nt(function(e,t,n){return t&&typeof t.kind==`string`?ce(Yt,e,t):$e(e)?e:o(e)?an.object(e,t,n):Array.isArray(e)?an.array(e,t):u(e)?an.map(e,t):d(e)?an.set(e,t):typeof e==`object`&&e?e:an.box(e,t)},Yt,$t);let on=`computed`,sn=E(on),cn=ge(E(`computed.struct`,{equals:_})),ln=function(e,t){if(t&&typeof t.kind==`string`)return O(sn,e,t);if(o(e))return ge(E(on,e));let n=o(t)?t:{};return n.get=e,n.name||=e.name||``,new _n(n)};var un;Nt(ln,sn);let dn=0,fn=1,pn=(un=Pt(()=>{},`name`)?.configurable)!=null&&un,mn={value:`action`,configurable:!0,writable:!1,enumerable:!1};var hn=class extends Ut{constructor(e,t,n=`ObservableValue`,r=!0,i=Gt){super(n),this.A=void 0,this.tt=void 0,this.xt=void 0,this.gt=!1,this.st=void 0,this.ot=void 0,this.rt=void 0,this.dehancer=void 0,this.A=t,this.tt=n,this.xt=i,this.rt=t(e,void 0,n)}dehanceValue(e){return this.dehancer===void 0?e:this.dehancer(e)}set(e){(e=this.jt(e))!==F.UNCHANGED&&this.Ot(e)}jt(e){if(lt(this)){let t=A(this,{object:this,type:Jn,newValue:e});if(!t)return F.UNCHANGED;e=t.newValue}return e=this.A(e,this.rt,this.tt),this.xt(this.rt,e)?F.UNCHANGED:e}Ot(e){let t=this.rt;this.rt=e,this.reportChanged(),dt(this)&&pt(this,{type:Jn,object:this,newValue:e,oldValue:t})}get(){return this.reportObserved(),this.dehanceValue(this.rt)}raw(){return this.rt}toJSON(){return this.get()}toString(){return`${this.tt}[${this.rt}]`}valueOf(){return f(this.get())}[Symbol.toPrimitive](){return this.valueOf()}};let gn=l(`ObservableValue`,hn);var _n=class{constructor(e){this.K=-1,this.L=[],this.$=null,this.H=null,this.U=0,this.J=0,this.F=0,this.W=0,this.rt=new yn(null),this.tt=void 0,this._t=void 0,this.yt=0,this.derivation=void 0,this.St=void 0,this.At=void 0,this.xt=void 0,this.Vt=void 0,this.Mt=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.St=_e(`ComputedValue-setter`,e.set)),this.xt=e.equals||Gt,this.At=e.context,this.Vt=e.requiresReaction,this.Mt=!!e.keepAlive}q(){(function(e){var t;e.F===0&&(e.F=1,(t=e.H)==null||t.forEach(e=>{e.K===0&&(e.K=1,e.q())}))})(this)}onBO(){this.onBOL&&this.onBOL.forEach(e=>e())}onBUO(){this.onBUOL&&this.onBUOL.forEach(e=>e())}get isComputing(){return m(this.yt,1)}set isComputing(e){this.yt=h(this.yt,1,e)}get isRunningSetter(){return m(this.yt,2)}set isRunningSetter(e){this.yt=h(this.yt,2,e)}get isBeingObserved(){return m(this.yt,4)}set isBeingObserved(e){this.yt=h(this.yt,4,e)}get isPendingUnobservation(){return m(this.yt,8)}set isPendingUnobservation(e){this.yt=h(this.yt,8,e)}get diffValue(){return+!!m(this.yt,16)}set diffValue(e){this.yt=h(this.yt,16,e===1)}get(){if(this.isComputing&&t(32,this.tt,this.derivation),F.inBatch!==0||this.H&&this.H.size!==0||this.Mt){let e=this.isBeingObserved;if(Fe(this),Ce(this)){let e=F.trackingContext;e||!this.Mt&&!this.isBeingObserved||(F.trackingContext=this),this.trackAndCompute()&&function(e){var t;e.F!==2&&(e.F=2,(t=e.H)==null||t.forEach(t=>{t.K===1?t.K=2:t.K===0&&(e.F=0)}))}(this),F.trackingContext=e}else !e&&this.isBeingObserved&&this.L.forEach(Pe)}else Ce(this)&&(this.Nt(),Me(),this.rt=this.Rt(!1),Ne());let e=this.rt;if(Se(e))throw e.cause;return e}set(e){if(this.St){this.isRunningSetter&&t(33,this.tt),this.isRunningSetter=!0;try{this.St.call(this.At,e)}finally{this.isRunningSetter=!1}}else t(34,this.tt)}trackAndCompute(){let e=this.rt,t=this.K===-1,n=this.Rt(!0),r=t||Se(e)||Se(n)||!this.xt(e,n);return r&&(this.rt=n),r}Rt(e){let t;if(this.isComputing=!0,e)t=we(this,this.derivation,this.At);else if(!0===F.disableErrorBoundaries)t=this.derivation.call(this.At);else try{t=this.derivation.call(this.At)}catch(e){t=new yn(e)}return this.isComputing=!1,t}G(){this.Mt||(Te(this),this.rt=void 0)}Nt(){}toString(){return`${this.tt}[${this.derivation.toString()}]`}valueOf(){return f(this.get())}[Symbol.toPrimitive](){return this.valueOf()}};let vn=l(`ComputedValue`,_n);var yn=class{constructor(e){this.cause=void 0,this.cause=e}};let bn=[`mobxGuid`,`spyListeners`,`enforceActions`,`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`allowStateReads`,`disableErrorBoundaries`,`runId`,`UNCHANGED`];var xn=class{constructor(){this.version=7,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.isRunningUnobservations=!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.safeDescriptors=!0}};let Sn=!0,Cn=!1,F=function(){let e=globalThis;return e.__mobxInstanceCount>0&&!e.__mobxGlobals&&(Sn=!1),e.__mobxGlobals&&e.__mobxGlobals.version!==7&&(Sn=!1),Sn?e.__mobxGlobals?(e.__mobxInstanceCount+=1,e.__mobxGlobals.UNCHANGED||(e.__mobxGlobals.UNCHANGED={}),e.__mobxGlobals):(e.__mobxInstanceCount=1,e.__mobxGlobals=new xn):(setTimeout(()=>{Cn||t(35)},1),new xn)}();var wn=class{constructor(e=`Reaction`,t,n,r){this.tt=void 0,this.Et=void 0,this.kt=void 0,this.Ct=void 0,this.L=[],this.$=[],this.K=-1,this.U=0,this.W=0,this.yt=0,this.It=void 0,this.tt=e,this.Et=t,this.kt=n,this.Ct=r}get isDisposed(){return m(this.yt,1)}set isDisposed(e){this.yt=h(this.yt,1,e)}get isScheduled(){return m(this.yt,2)}set isScheduled(e){this.yt=h(this.yt,2,e)}get isTrackPending(){return m(this.yt,4)}set isTrackPending(e){this.yt=h(this.yt,4,e)}get isRunning(){return m(this.yt,8)}set isRunning(e){this.yt=h(this.yt,8,e)}get diffValue(){return+!!m(this.yt,16)}set diffValue(e){this.yt=h(this.yt,16,e===1)}q(){this.Y()}Y(){this.isScheduled||(this.isScheduled=!0,F.pendingReactions.push(this),Le())}X(){if(!this.isDisposed){Me(),this.isScheduled=!1;let e=F.trackingContext;if(F.trackingContext=this,Ce(this)){this.isTrackPending=!0;try{this.Et()}catch(e){this.Pt(e)}}F.trackingContext=e,Ne()}}track(e){if(this.isDisposed)return;Me(),this.isRunning=!0;let t=F.trackingContext;F.trackingContext=this;let n=we(this,e,void 0);F.trackingContext=t,this.isRunning=!1,this.isTrackPending=!1,this.isDisposed&&Te(this),Se(n)&&this.Pt(n.cause),Ne()}Pt(e){if(this.kt)this.kt(e,this);else{if(F.disableErrorBoundaries)throw e;F.suppressReactionErrors||console.error(`[mobx] uncaught error in '${this}'`,e),F.globalReactionErrorHandlers.forEach(t=>t(e,this))}}dispose(){var e;this.isDisposed||(this.isDisposed=!0,(e=this.It)==null||e.call(this),this.isRunning||(Me(),Te(this),Ne()))}Z(e){let t=()=>this.dispose();return e!=null&&e.addEventListener&&!this.isDisposed&&(e.addEventListener(`abort`,t),this.It=()=>e.removeEventListener==null?void 0:e.removeEventListener(`abort`,t)),t[M]=this,`dispose`in Symbol&&typeof Symbol.dispose==`symbol`&&(t[Symbol.dispose]=t),t}toString(){return`Reaction[${this.tt}]`}};let Tn=100,En=e=>e(),Dn=l(`Reaction`,wn),On=`action`,kn=`autoAction`,An=b(On),jn=b(`action.bound`,{bound:!0}),Mn=b(kn,{autoAction:!0}),Nn=b(`autoAction.bound`,{autoAction:!0,bound:!0}),Pn=Be(!1);Nt(Pn,An);let Fn=Be(!0);Nt(Fn,Mn);let In=ze(jn),Ln=ze(Nn),Rn=e=>e(),zn=`always`;var Bn=class extends Error{constructor(){super(`FLOW_CANCELLED`),Object.setPrototypeOf(this,new.target.prototype),this.name=`FlowCancellationError`}toString(){return`Error: ${this.message}`}};let Vn=ee(`flow`),Hn=ee(`flow.bound`,{bound:!0}),Un=Nt(function(e,t){if(t&&typeof t.kind==`string`)return T(Vn,e,t);let n=e,i=n.name||`flow`,a=function(){let e=arguments,t=Pn(i,n).apply(this,e),a,o,s=new Promise(function(e,n){function s(e){let r;o=void 0;try{r=Pn(i,t.next).call(t,e)}catch(e){return n(e)}l(r)}function c(e){let r;o=void 0;try{r=Pn(i,t.throw).call(t,e)}catch(e){return n(e)}l(r)}function l(t){if(!r(t?.then))return t.done?e(t.value):(o=Promise.resolve(t.value),o.then(s,c));t.then(l,n)}a=n,s(void 0)});return s.cancel=Pn(i,function(){try{o&&Ye(o);let e=t.return(void 0),n=Promise.resolve(e.value);n.then(Bt,Bt),Ye(n),a(new Bn)}catch(e){a(e)}}),s};return a.isMobXFlow=!0,a},Vn),Wn=fe(Hn,T),Gn={has:(e,t)=>ct(e).et(t),get:(e,t)=>ct(e).Tt(t),set(e,t,n){var r;return!!i(t)&&((r=ct(e).Bt(t,n,!0))==null||r)},deleteProperty(e,t){var n;return!!i(t)&&((n=ct(e).Dt(t,!0))==null||n)},defineProperty(e,t,n){var r;return(r=ct(e).l(t,n))==null||r},ownKeys:e=>ct(e).it(),preventExtensions(e){t(13)}},Kn=Symbol(`mobx-keys`),qn=`splice`,Jn=`update`,Yn={get(e,t){let n=e[M];return t===M?n:t===`length`?n.Kt():typeof t!=`string`||isNaN(t)?p(Zn,t)?Zn[t]:e[t]:n.Tt(parseInt(t))},set(e,t,n){let r=e[M];return t===`length`?r.Lt(n):typeof t==`symbol`||isNaN(t)?e[t]=n:r.Bt(parseInt(t),n),!0},preventExtensions(){t(15)}};var Xn=class{constructor(e=`ObservableArray`,t,n){this.$t=void 0,this.ct=void 0,this.j=[],this.st=void 0,this.ot=void 0,this.A=void 0,this.dehancer=void 0,this.v=void 0,this.Ut=0,this.$t=n,this.ct=new Ut(e),this.A=(e,n)=>t(e,n,`ObservableArray[..]`)}Wt(e){return this.dehancer===void 0?e:this.dehancer(e)}ht(e){return this.dehancer!==void 0&&e.length>0?e.map(this.dehancer):e}Kt(){return this.ct.reportObserved(),this.j.length}Lt(e){(!Number.isInteger(e)||e<0)&&t(40,e);let n=this.j.length;if(e!==n)if(e>n){let t=Array.from({length:e-n});this.wt(n,0,t)}else this.wt(e,n-e)}zt(e,n){e!==this.Ut&&t(16),this.Ut+=n}wt(e,t,n){let r=this.j.length;if(e===void 0?e=0:e>r?e=r:e<0&&(e=Math.max(0,r+e)),t=arguments.length===1?r-e:t==null?0:Math.max(0,Math.min(t,r-e)),n===void 0&&(n=Lt),lt(this)){let r=A(this,{object:this.v,type:qn,index:e,removedCount:t,added:n});if(!r)return Lt;t=r.removedCount,n=r.added}n=n.length===0?n:n.map(e=>this.A(e,void 0));let i=this.qt(e,t,n);return t===0&&n.length===0||this.Ft(e,n,i),this.ht(i)}qt(e,t,n){if(n.length<1e4)return this.j.splice(e,t,...n);{let r=this.j.slice(e,e+t),i=this.j.slice(e+t);this.j.length+=n.length-t;for(let t=0;t<n.length;t++)this.j[e+t]=n[t];for(let t=0;t<i.length;t++)this.j[e+n.length+t]=i[t];return r}}Ht(e,t,n){let r=dt(this),i=r?{observableKind:`array`,object:this.v,type:Jn,debugObjectName:this.ct.tt,index:e,newValue:t,oldValue:n}:null;this.ct.reportChanged(),r&&pt(this,i)}Ft(e,t,n){let r=dt(this),i=r?{observableKind:`array`,object:this.v,debugObjectName:this.ct.tt,type:qn,index:e,removed:n,added:t,removedCount:n.length,addedCount:t.length}:null;this.ct.reportChanged(),r&&pt(this,i)}Tt(e){return this.ct.reportObserved(),this.Wt(this.j[e])}Bt(e,t){let n=this.j;if(e<n.length){let r=n[e];if(lt(this)){let n=A(this,{type:Jn,object:this.v,index:e,newValue:t});if(!n)return;t=n.newValue}(t=this.A(t,r))!==r&&(n[e]=t,this.Ht(e,t,r))}else{let r=Array.from({length:e+1-n.length});r[r.length-1]=t,this.wt(n.length,0,r)}}},Zn={clear(){return this.splice(0)},replace(e){let t=this[M];return t.wt(0,t.j.length,e)},toJSON(){return this.slice()},splice(e,t,...n){let r=this[M];switch(arguments.length){case 0:return[];case 1:return r.wt(e);case 2:return r.wt(e,t)}return r.wt(e,t,n)},spliceWithArray(e,t,n){return this[M].wt(e,t,n)},push(...e){let t=this[M];return t.wt(t.j.length,0,e),t.j.length},pop(){return this.splice(Math.max(this[M].j.length-1,0),1)[0]},shift(){return this.splice(0,1)[0]},unshift(...e){let t=this[M];return t.wt(0,0,e),t.j.length},reverse(){return F.trackingDerivation&&t(37,`reverse`),this.replace(this.slice().reverse()),this},sort(){F.trackingDerivation&&t(37,`sort`);let e=this.slice();return e.sort.apply(e,arguments),this.replace(e),this},remove(e){let t=this[M],n=t.ht(t.j).indexOf(e);return n>-1&&(this.splice(n,1),!0)}};j(`at`,ht),j(`concat`,ht),j(`flat`,ht),j(`includes`,ht),j(`indexOf`,ht),j(`join`,ht),j(`lastIndexOf`,ht),j(`slice`,ht),j(`toString`,ht),j(`toLocaleString`,ht),j(`toSorted`,ht),j(`toSpliced`,ht),j(`with`,ht),j(`every`,gt),j(`filter`,gt),j(`find`,gt),j(`findIndex`,gt),j(`findLast`,gt),j(`findLastIndex`,gt),j(`flatMap`,gt),j(`forEach`,gt),j(`map`,gt),j(`some`,gt),j(`toReversed`,gt),j(`reduce`,_t),j(`reduceRight`,_t);let Qn=l(`ObservableArrayAdministration`,Xn),$n={},er=`delete`;var tr=class{constructor(e,t=v,n=`ObservableMap`){this.A=void 0,this.tt=void 0,this[M]=$n,this.ft=void 0,this.dt=void 0,this.lt=void 0,this.st=void 0,this.ot=void 0,this.dehancer=void 0,this.A=t,this.tt=n,Dt(()=>{this.lt=g(`ObservableMap.keys()`),this.ft=new Map,this.dt=new Map,e&&this.merge(e)})}et(e){return this.ft.has(e)}has(e){if(!F.trackingDerivation)return this.et(e);let t=this.dt.get(e);if(!t){let n=t=new hn(this.et(e),y,`ObservableMap.key?`,!1);this.dt.set(e,n),n.onBUOL=new Set([()=>this.dt.delete(e)])}return t.get()}set(e,t){let n=this.et(e);if(lt(this)){let r=A(this,{type:n?Jn:`add`,object:this,newValue:t,name:e});if(!r)return this;t=r.newValue}return n?this.Gt(e,t):this.Jt(e,t),this}delete(e){if(lt(this)&&!A(this,{type:er,object:this,name:e}))return!1;if(this.et(e)){let t=dt(this),n=t?{observableKind:`map`,debugObjectName:this.tt,type:er,object:this,oldValue:this.ft.get(e).rt,name:e}:null;return ot(()=>{var t;this.lt.reportChanged(),(t=this.dt.get(e))==null||t.Ot(!1),this.ft.get(e).Ot(void 0),this.ft.delete(e)}),t&&pt(this,n),!0}return!1}Gt(e,t){let n=this.ft.get(e);if((t=n.jt(t))!==F.UNCHANGED){let r=dt(this),i=r?{observableKind:`map`,debugObjectName:this.tt,type:Jn,object:this,oldValue:n.rt,name:e,newValue:t}:null;n.Ot(t),r&&pt(this,i)}}Jt(e,t){ot(()=>{var n;let r=new hn(t,this.A,`ObservableMap.key`,!1);this.ft.set(e,r),t=r.rt,(n=this.dt.get(e))==null||n.Ot(!0),this.lt.reportChanged()});let n=dt(this);n&&pt(this,n?{observableKind:`map`,debugObjectName:this.tt,type:`add`,object:this,name:e,newValue:t}:null)}get(e){return this.has(e)?this.Wt(this.ft.get(e).get()):this.Wt(void 0)}getOrInsert(e,t){return this.has(e)||this.set(e,t),this.get(e)}getOrInsertComputed(e,t){return this.has(e)||this.set(e,t(e)),this.get(e)}Wt(e){return this.dehancer===void 0?e:this.dehancer(e)}keys(){return this.lt.reportObserved(),this.ft.keys()}values(){let e=this,t=this.keys();return yt({next(){let{done:n,value:r}=t.next();return{done:n,value:n?void 0:e.get(r)}}})}entries(){let e=this,t=this.keys();return yt({next(){let{done:n,value:r}=t.next();return{done:n,value:n?void 0:[r,e.get(r)]}}})}[Symbol.iterator](){return this.entries()}forEach(e,t){for(let[n,r]of this)e.call(t,r,n,this)}merge(e){return nr(e)&&(e=new Map(e)),ot(()=>{o(e)?function(e){let t=Object.keys(e),n=Object.getOwnPropertySymbols(e);return n.length?[...t,...n.filter(t=>It.propertyIsEnumerable.call(e,t))]:t}(e).forEach(t=>this.set(t,e[t])):Array.isArray(e)?e.forEach(([e,t])=>this.set(e,t)):u(e)?(function(e){return Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(e)))===null}(e)||t(19,e),e.forEach((e,t)=>this.set(t,e))):e!=null&&t(20,e)}),this}clear(){ot(()=>{Ee(()=>{for(let e of this.keys())this.delete(e)})})}replace(e){return ot(()=>{let n=function(e){if(u(e)||nr(e))return e;if(Array.isArray(e))return new Map(e);if(o(e)){let t=new Map;for(let n in e)t.set(n,e[n]);return t}return t(21,e)}(e),r=new Map,i=!1;for(let e of this.ft.keys())if(!n.has(e))if(this.delete(e))i=!0;else{let t=this.ft.get(e);r.set(e,t)}for(let[e,t]of n.entries()){let n=this.ft.has(e);if(this.set(e,t),this.ft.has(e)){let t=this.ft.get(e);r.set(e,t),n||(i=!0)}}if(!i)if(this.ft.size!==r.size)this.lt.reportChanged();else{let e=this.ft.keys(),t=r.keys(),n=e.next(),i=t.next();for(;!n.done;){if(n.value!==i.value){this.lt.reportChanged();break}n=e.next(),i=t.next()}}this.ft=r}),this}get size(){return this.lt.reportObserved(),this.ft.size}toString(){return`[object ObservableMap]`}toJSON(){return Array.from(this)}get[Symbol.toStringTag](){return`Map`}},nr=l(`ObservableMap`,tr);let rr={};var ir=class{constructor(e,t=v,n=`ObservableSet`){this.tt=void 0,this[M]=rr,this.ft=new Set,this.ct=void 0,this.ot=void 0,this.st=void 0,this.dehancer=void 0,this.A=void 0,this.tt=n,this.A=(e,r)=>t(e,r,n),Dt(()=>{this.ct=g(this.tt),e&&this.replace(e)})}Wt(e){return this.dehancer===void 0?e:this.dehancer(e)}clear(){ot(()=>{Ee(()=>{for(let e of this.ft.values())this.delete(e)})})}forEach(e,t){for(let n of this)e.call(t,n,n,this)}get size(){return this.ct.reportObserved(),this.ft.size}add(e){if(lt(this)){let t=A(this,{type:`add`,object:this,newValue:e});if(!t)return this;e=t.newValue}if(!this.has(e)){ot(()=>{e=this.A(e,void 0),this.ft.add(e),this.ct.reportChanged()});let t=dt(this);t&&pt(this,t?{observableKind:`set`,debugObjectName:this.tt,type:`add`,object:this,newValue:e}:null)}return this}delete(e){if(lt(this)&&!A(this,{type:er,object:this,oldValue:e}))return!1;if(this.has(e)){let t=dt(this),n=t?{observableKind:`set`,debugObjectName:this.tt,type:er,object:this,oldValue:e}:null;return ot(()=>{this.ct.reportChanged(),this.ft.delete(e)}),t&&pt(this,n),!0}return!1}has(e){return this.ct.reportObserved(),this.ft.has(this.Wt(e))}entries(){let e=this.values();return bt({next(){let{value:t,done:n}=e.next();return n?{value:void 0,done:n}:{value:[t,t],done:n}}})}keys(){return this.values()}values(){this.ct.reportObserved();let e=this,t=this.ft.values();return bt({next(){let{value:n,done:r}=t.next();return r?{value:void 0,done:r}:{value:e.Wt(n),done:r}}})}intersection(e){return new Set(this).intersection(e)}union(e){return new Set(this).union(e)}difference(e){return new Set(this).difference(e)}symmetricDifference(e){return new Set(this).symmetricDifference(e)}isSubsetOf(e){return new Set(this).isSubsetOf(e)}isSupersetOf(e){return new Set(this).isSupersetOf(e)}isDisjointFrom(e){return new Set(this).isDisjointFrom(e)}replace(e){return ar(e)&&(e=new Set(e)),Array.isArray(e)||d(e)?ot(()=>{let t=d(e)?e:new Set(e);if(t.size!==0)if(this.ft.size!==0){for(let e of this.ft.values())t.has(this.Wt(e))||this.delete(e);t.forEach(e=>this.add(e))}else t.forEach(e=>this.add(e));else this.clear()}):e!=null&&t(41,e),this}toJSON(){return Array.from(this)}toString(){return`[object ObservableSet]`}[Symbol.iterator](){return this.values()}get[Symbol.toStringTag](){return`Set`}},ar=l(`ObservableSet`,ir);let or=Object.create(null),sr=`remove`;var cr=class{constructor(e,t=new Map,n,r=N){this.h=void 0,this.j=void 0,this.tt=void 0,this.ut=void 0,this.lt=void 0,this.ot=void 0,this.st=void 0,this.v=void 0,this.p=void 0,this.Xt=void 0,this.Qt=void 0,this.O=void 0,this.V=void 0,this.h=e,this.j=t,this.tt=n,this.ut=r,this.lt=new Ut(`ObservableObject.keys`),this.p=o(this.h)}_(e){return(this.j.get(e)??this.vt(e)??this.bt(e)).get()}vt(e){let t=this.O?.get(e);if(!t)return;this.O.delete(e),this.O.size===0&&(this.O=void 0);let n=t();return this.j.set(e,n),n}bt(e){let t=this.V?.get(e);if(!t)return;this.V.delete(e),this.V.size===0&&(this.V=void 0);let n=t();return this.j.set(e,n),n}M(e,t){let n=this.j.get(e)??this.vt(e)??this.bt(e);if(n instanceof _n)return n.set(t),!0;if(lt(this)){let n=A(this,{type:Jn,object:this.v||this.h,name:e,newValue:t});if(!n)return null;t=n.newValue}if((t=n.jt(t))!==F.UNCHANGED){let r=dt(this),i=r?{type:Jn,observableKind:`object`,debugObjectName:this.tt,object:this.v||this.h,oldValue:n.rt,name:e,newValue:t}:null;n.Ot(t),r&&pt(this,i)}return!0}Tt(e){return F.trackingDerivation&&!p(this.h,e)&&this.et(e),this.h[e]}Bt(e,t,n=!1){return p(this.h,e)?this.j.has(e)?this.M(e,t):n?Reflect.set(this.h,e,t):(this.h[e]=t,!0):this.u(e,{value:t,enumerable:!0,writable:!0,configurable:!0},this.ut,n)}et(e){if(!F.trackingDerivation)return e in this.h;this.Qt||=new Map;let t=this.Qt.get(e);return t||(t=new hn(e in this.h,y,`ObservableObject.key?`,!1),this.Qt.set(e,t)),t.get()}u(e,t,n,r=!1){return!0===n&&(n=this.ut),!1===n?this.l(e,t,r):n.u(this,e,t,r)}l(e,t,n=!1){try{Me();let r=this.Dt(e);if(!r)return r;if(lt(this)){let n=A(this,{object:this.v||this.h,name:e,type:`add`,newValue:t.value});if(!n)return null;let{newValue:r}=n;t.value!==r&&(t=Nt({},t,{value:r}))}if(n){if(!Reflect.defineProperty(this.h,e,t))return!1}else Ft(this.h,e,t);this.Yt(e,t.value)}finally{Ne()}return!0}S(e,t,n,r=!1){try{Me();let i=this.Dt(e);if(!i)return i;if(lt(this)){let n=A(this,{object:this.v||this.h,name:e,type:`add`,newValue:t});if(!n)return null;t=n.newValue}let a=St(e),o={configurable:!F.safeDescriptors||this.p,enumerable:!0,get:a.get,set:a.set};if(r){if(!Reflect.defineProperty(this.h,e,o))return!1}else Ft(this.h,e,o);let s=new hn(t,n,`ObservableObject.key`,!1);this.j.set(e,s),this.Yt(e,s.rt)}finally{Ne()}return!0}m(e,t,n=!1){try{Me();let r=this.Dt(e);if(!r)return r;if(lt(this)&&!A(this,{object:this.v||this.h,name:e,type:`add`,newValue:void 0}))return null;t.name||=`ObservableObject.key`,t.context=this.v||this.h;let i=St(e),a={configurable:!F.safeDescriptors||this.p,enumerable:!1,get:i.get,set:i.set};if(n){if(!Reflect.defineProperty(this.h,e,a))return!1}else Ft(this.h,e,a);this.j.set(e,new _n(t)),this.Yt(e,void 0)}finally{Ne()}return!0}Dt(e,t=!1){if(!p(this.h,e))return!0;if(lt(this)&&!A(this,{object:this.v||this.h,name:e,type:sr}))return null;try{var n;Me();let r=dt(this),i=this.j.get(e),a;if(i||!r||(a=Pt(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 hn&&(a=i.rt),Ie(i)),this.lt.reportChanged(),(n=this.Qt)==null||(n=n.get(e))==null||n.set(e in this.h),r&&r&&pt(this,{type:sr,observableKind:`object`,object:this.v||this.h,debugObjectName:this.tt,oldValue:a,name:e})}finally{Ne()}return!0}Yt(e,t){var n;let r=dt(this);r&&r&&pt(this,r?{type:`add`,observableKind:`object`,debugObjectName:this.tt,object:this.v||this.h,name:e,newValue:t}:null),(n=this.Qt)==null||(n=n.get(e))==null||n.set(!0),this.lt.reportChanged()}it(){return this.lt.reportObserved(),Vt(this.h)}nt(){return this.lt.reportObserved(),Object.keys(this.h)}};let lr=l(`ObservableObjectAdministration`,cr),ur=It.toString,dr=globalThis.Iterator?.prototype||{};e.$mobx=M,e.FlowCancellationError=Bn,e.ObservableMap=tr,e.ObservableSet=ir,e.Reaction=wn,e._allowStateChanges=xe,e._allowStateChangesInsideComputed=Ve,e._allowStateReadsEnd=function(e){F.allowStateReads=e},e._allowStateReadsStart=function(e){let t=F.allowStateReads;return F.allowStateReads=e,t},e._autoAction=Fn,e._autoActionBound=Ln,e._endAction=be,e._getAdministration=Tt,e._getGlobalState=function(){return F},e._interceptReads=function(e,t,n){let r;return nr(e)||vt(e)||gn(e)?r=Tt(e):Ct(e)&&(r=Tt(e,t)),r.dehancer=typeof t==`function`?t:n,()=>{r.dehancer=void 0}},e._isComputingDerivation=function(){return F.trackingDerivation!==null},e._resetGlobalState=function(){let e=new xn;for(let t in e)bn.indexOf(t)===-1&&(F[t]=e[t]);F.allowStateChanges=!F.enforceActions},e._startAction=ye,e.action=Pn,e.actionBound=In,e.autorun=Ue,e.compareDefault=Gt,e.compareIdentity=function(e,t){return e===t},e.compareShallow=function(e,t){return Ot(e,t,1)},e.compareStructural=_,e.computed=ln,e.computedStruct=cn,e.configure=function(e){!0===e.isolateGlobalState&&function(){if((F.pendingReactions.length||F.inBatch||F.isRunningReactions)&&t(36),Cn=!0,Sn){let e=globalThis;--e.__mobxInstanceCount===0&&(e.__mobxGlobals=void 0),F=new xn}}();let{enforceActions:n}=e;if(n!==void 0){let e=n===zn?zn:n===`observed`;F.enforceActions=e,F.allowStateChanges=!0!==e&&e!==zn}[`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`disableErrorBoundaries`,`safeDescriptors`].forEach(t=>{t in e&&(F[t]=!!e[t])}),F.allowStateReads=!F.observableRequiresReaction,e.reactionScheduler&&function(e){let t=En;En=n=>e(()=>t(n))}(e.reactionScheduler)},e.createAtom=g,e.defineProperty=function(e,n,r){if(Ct(e))return e[M].l(n,r);t(39)},e.entries=function(e){return Ct(e)?et(e).map(t=>[t,e[t]]):nr(e)?et(e).map(t=>[t,e.get(t)]):ar(e)?Array.from(e.entries()):vt(e)?e.map((e,t)=>[t,e]):void t(7)},e.extendObservable=Ke,e.flow=Un,e.flowBound=Wn,e.flowResult=function(e){return e},e.get=function(e,n){if(tt(e,n))return Ct(e)?e[M].Tt(n):nr(e)?e.get(n):vt(e)?e[n]:void t(11)},e.getAtom=wt,e.getDebugName=Et,e.getDependencyTree=function(e,t){return qe(wt(e,t))},e.getObserverTree=function(e,t){return Je(wt(e,t))},e.has=tt,e.intercept=function(e,t,n){return r(n)?function(e,t,n){return ut(Tt(e,t),n)}(e,t,n):function(e,t){return ut(Tt(e),t)}(e,t)},e.isAction=He,e.isBoxedObservable=gn,e.isComputed=function(e){return Ze(e)},e.isComputedProp=function(e,t){return Ze(e,t)},e.isFlow=Xe,e.isFlowCancellationError=function(e){return e instanceof Bn},e.isObservable=$e,e.isObservableArray=vt,e.isObservableMap=nr,e.isObservableObject=Ct,e.isObservableProp=function(e,t){return Qe(e,t)},e.isObservableSet=ar,e.keys=et,e.makeAutoObservable=function(e,t,n){return o(e)?Ke(e,e,t,n):(Dt(()=>{let r=xt(e,n)[M];if(!e[Kn]){let t=Object.getPrototypeOf(e),n=new Set([...Vt(e),...Vt(t)]);n.delete(`constructor`),n.delete(M),c(t,Kn,n)}e[Kn].forEach(e=>mt(r,e,!t||!(e in t)||t[e]))}),e)},e.makeObservable=function(e,t,n){return Dt(()=>{let r=xt(e,n)[M];Vt(t).forEach(e=>mt(r,e,t[e]))}),e},e.observable=an,e.observableDeep=nn,e.observableRef=en,e.observableShallow=tn,e.observableStruct=rn,e.observe=function(e,t,n,i){return r(n)?function(e,t,n,r){return rt(Tt(e,t),n,r)}(e,t,n,i):function(e,t,n){let r=Tt(e);if(vt(e))n&&t({observableKind:`array`,object:r.v,debugObjectName:r.ct.tt,type:`splice`,index:0,added:r.j.slice(),addedCount:r.j.length,removed:[],removedCount:0});else if(!nr(e)&&!ar(e)&&!Ct(e))return rt(r,t,n);return ft(r,t)}(e,t,n)},e.onBecomeObserved=function(e,t,n){return Ge(`onBO`,e,t,n)},e.onBecomeUnobserved=function(e,t,n){return Ge(`onBUO`,e,t,n)},e.onReactionError=function(e){return F.globalReactionErrorHandlers.push(e),()=>{let t=F.globalReactionErrorHandlers.indexOf(e);t>=0&&F.globalReactionErrorHandlers.splice(t,1)}},e.override=Kt,e.ownKeys=nt,e.reaction=function(e,t,n=Rt){function r(){if(p=!1,h.isDisposed)return;let t=!1,r=d;h.track(()=>{let n=xe(!1,()=>e(h));t=f||!m(d,n),d=n}),(f&&n.fireImmediately||!f&&t)&&o(d,r,h),f=!1}var i;let a=n.name??`Reaction`,o=Pn(a,n.onError?(s=n.onError,c=t,function(){try{return c.apply(this,arguments)}catch(e){s.call(this,e)}}):t);var s,c;let l=!n.scheduler&&!n.delay,u=We(n),d,f=!0,p=!1,m=n.equals||Gt,h=new wn(a,()=>{f||l?r():p||(p=!0,u(r))},n.onError,n.requiresObservable);return n!=null&&(i=n.signal)!=null&&i.aborted||h.Y(),h.Z(n?.signal)},e.remove=function(e,n){Ct(e)?e[M].Dt(n):nr(e)||ar(e)?e.delete(n):vt(e)?(typeof n!=`number`&&(n=parseInt(n,10)),e.splice(n,1)):t(9)},e.runInAction=Ve,e.set=function e(n,r,i){if(arguments.length===2&&!ar(n)){Me();let t=r;try{for(let r in t)e(n,r,t[r])}finally{Ne()}return}Ct(n)?n[M].Bt(r,i):nr(n)?n.set(r,i):ar(n)?n.add(r):vt(n)?(typeof r!=`number`&&(r=parseInt(r,10)),r<0&&t(42,r),Me(),r>=n.length&&(n.length=r+1),n[r]=i,Ne()):t(8)},e.spy=function(){return console.warn(`[mobx.spy] Is a no-op in production builds`),function(){}},e.toJS=function(e){return at(e,new Map)},e.transaction=ot,e.untracked=Ee,e.values=function(e){return Ct(e)?et(e).map(t=>e[t]):nr(e)?et(e).map(t=>e.get(t)):ar(e)?Array.from(e.values()):vt(e)?e.slice():void t(6)},e.when=function(e,t,n){return arguments.length===1||t&&typeof t==`object`?function(e,t){var n;if(t!=null&&(n=t.signal)!=null&&n.aborted)return Nt(Promise.reject(Error(`WHEN_ABORTED`)),{cancel:()=>null});let r,i,a=new Promise((n,a)=>{var o;let s=st(e,n,Nt({},t,{onError:a}));r=()=>{s(),a(Error(`WHEN_CANCELLED`))},i=()=>{s(),a(Error(`WHEN_ABORTED`))},t==null||(o=t.signal)==null||o.addEventListener==null||o.addEventListener(`abort`,i)}).finally(()=>{var e;return t==null||(e=t.signal)==null||e.removeEventListener==null?void 0:e.removeEventListener(`abort`,i)});return a.cancel=r,a}(e,t):st(e,t,n||{})}})),Bv=we((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t={0:`Invalid value for configuration 'enforceActions', expected 'never', 'always' or 'observed'`,1(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.`,19(e){return`Cannot initialize from classes that inherit from Map: `+e.constructor.name},20(e){return`Cannot initialize map from `+e},21(e){return`Cannot convert to map from '${e}'`},23:`It is not possible to get index atoms from arrays`,24(e){return`Cannot obtain administration from `+e},25(e,t){return`the entry '${e}' does not exist in the observable map '${t}'`},26:`please specify a property`,27(e,t){return`no observable property '${e.toString()}' found on the observable object '${t}'`},28(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(e,t){return`Cycle detected in computation ${e}: ${t}`},33(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(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(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`,40(e){return`Out of range: `+e},41(e){return`Cannot initialize set from `+e},42(e){return`Invalid index: '${e}'`},43(e,t,n){return`Cannot apply '${e}' to '${t}' (kind: ${n}):\n'${e}' can only be used on properties with a function value.`},44(e){return`'${e}' can only be used with 'makeObservable'`}};function n(e,...n){{let r=typeof e==`string`?e:t[e];throw typeof r==`function`&&(r=r.apply(null,n)),Error(`[MobX] ${r}`)}}let r=Object.assign,i=Object.getOwnPropertyDescriptor,a=Object.defineProperty,o=Object.prototype,s=[];Object.freeze(s);let c={};Object.freeze(c);let l=Object.toString();function u(){return++P.mobxGuid}function d(e){let t=!1;return function(){if(!t)return t=!0,e.apply(this,arguments)}}let f=()=>{};function p(e){return typeof e==`function`}function m(e){switch(typeof e){case`string`:case`symbol`:case`number`:return!0}return!1}function h(e){return typeof e==`object`&&!!e}function g(e){if(!h(e))return!1;let t=Object.getPrototypeOf(e);if(t==null)return!0;let n=T(t,`constructor`)&&t.constructor;return typeof n==`function`&&n.toString()===l}function _(e){let t=e?.constructor;return t?t.name===`GeneratorFunction`||t.displayName===`GeneratorFunction`:!1}function v(e,t,n){a(e,t,{enumerable:!1,writable:!0,configurable:!0,value:n})}function y(e,t,n){a(e,t,{enumerable:!1,writable:!1,configurable:!0,value:n})}function b(e,t){let n=`isMobX`+e;return t.prototype[n]=!0,function(e){return h(e)&&e[n]===!0}}function x(e){return e!=null&&Object.prototype.toString.call(e)===`[object Map]`}function S(e){return Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(e)))===null}function C(e){return e!=null&&Object.prototype.toString.call(e)===`[object Set]`}function w(e){let t=Object.keys(e),n=Object.getOwnPropertySymbols(e);return n.length?[...t,...n.filter(t=>o.propertyIsEnumerable.call(e,t))]:t}let ee=Reflect.ownKeys;function te(e){return typeof e==`string`?e:typeof e==`symbol`?e.toString():new String(e).toString()}function ne(e){return e===null?null:typeof e==`object`?``+e:e}function T(e,t){return o.hasOwnProperty.call(e,t)}let re=Object.getOwnPropertyDescriptors;function E(e,t){return!!(e&t)}function D(e,t,n){return n?e|=t:e&=~t,e}function ie(e,t){t.includes(e.kind)||n(`The decorator applied to '${String(e.name)}' cannot be used on a ${e.kind} element`)}let O=Symbol(`mobx administration`);var ae=class{constructor(e=`Atom@`+u()){this.name_=void 0,this.flags_=0,this.observers_=null,this.lastAccessedBy_=0,this.lowestObserverState_=-1,this.onBOL=void 0,this.onBUOL=void 0,this.name_=e}get isBeingObserved(){return E(this.flags_,1)}set isBeingObserved(e){this.flags_=D(this.flags_,1,e)}get isPendingUnobservation(){return E(this.flags_,2)}set isPendingUnobservation(e){this.flags_=D(this.flags_,2,e)}get diffValue(){return+!!E(this.flags_,4)}set diffValue(e){this.flags_=D(this.flags_,4,e===1)}onBO(){this.onBOL&&this.onBOL.forEach(e=>e())}onBUO(){this.onBUOL&&this.onBUOL.forEach(e=>e())}reportObserved(){return sn(this)}reportChanged(){nn(),cn(this),rn()}toString(){return this.name_}};let oe=b(`Atom`,ae);function se(e,t=f,n=f){let r=new ae(e);return t!==f&&(r.onBOL=new Set([t])),n!==f&&(r.onBUOL=new Set([n])),r}function ce(e,t){return e===t}function le(e,t){return Mi(e,t)}function ue(e,t){return Mi(e,t,1)}let de=Object.is;function fe(e,t,n){return e===null||typeof e!=`object`&&typeof e!=`function`||yr(e)?e:Array.isArray(e)?A.array(e,{name:n}):g(e)?A.object(e,void 0,{name:n}):x(e)?A.map(e,{name:n}):C(e)?A.set(e,{name:n}):typeof e==`function`&&!Ln(e)&&!ur(e)?_(e)?or(e):Nn(n,e):e}function pe(e,t,r){if(e==null||wi(e)||ui(e)||mi(e)||yi(e))return e;if(Array.isArray(e))return A.array(e,{name:r,deep:!1});if(g(e))return A.object(e,void 0,{name:r,deep:!1});if(x(e))return A.map(e,{name:r,deep:!1});if(C(e))return A.set(e,{name:r,deep:!1});n(`The shallow modifier / decorator can only used in combination with arrays, objects, maps and sets`)}function me(e){return e}function he(e,t){return yr(e)&&n(`observable.struct should not be used with observable values`),Mi(e,t)?t:e}let ge=`override`,_e={annotationType_:ge,make_:ye,extend_:be};function ve(e){return e.annotationType_===ge}function ye(e,t){return e.isPlainObject_&&n(`Cannot apply '${this.annotationType_}' to '${e.name_}.${t.toString()}':\n'${this.annotationType_}' cannot be used on plain objects.`),T(e.appliedAnnotations_,t)||n(`'${e.name_}.${t.toString()}' is annotated with '${this.annotationType_}', but no such annotated member was found on prototype.`),0}function be(e,t,r,i){n(44,this.annotationType_)}function xe(e,t){return{annotationType_:e,options_:t,make_:Se,extend_:Ce}}function Se(e,t,n,r){var i;return(i=this.options_)!=null&&i.bound?this.extend_(e,t,n,!1)===null?0:1:r===e.target_?this.extend_(e,t,n,!1)===null?0:2:Ln(n.value)?1:(a(r,t,Ee(e,this,t,n,!1)),2)}function Ce(e,t,n,r){let i=Ee(e,this,t,n);return e.defineProperty_(t,i,r)}function we(e,t,r){ie(r,[`method`,`field`]);let{kind:i,name:a,addInitializer:o}=r,s=e,c=e=>yt(s.options_?.name??a.toString(),e,s.options_?.autoAction??!1);if(i==`field`)return function(e){var t;let n=e;return Ln(n)||(n=c(n)),(t=s.options_)!=null&&t.bound&&(n=n.bind(this),n.isMobxAction=!0),n};if(i==`method`){var l;return Ln(t)||(t=c(t)),(l=s.options_)!=null&&l.bound&&o(function(){let e=this,t=e[a].bind(e);t.isMobxAction=!0,e[a]=t}),t}n(43,s.annotationType_,String(a),i)}function Te(e,{annotationType_:t},r,{value:i}){p(i)||n(`Cannot apply '${t}' to '${e.name_}.${r.toString()}':\n'${t}' can only be used on properties with a function value.`)}function Ee(e,t,n,r,i=P.safeDescriptors){var a,o;Te(e,t,n,r);let{value:s}=r;return(a=t.options_)!=null&&a.bound&&(s=s.bind(e.proxy_??e.target_)),{value:yt(t.options_?.name??n.toString(),s,t.options_?.autoAction??!1,(o=t.options_)!=null&&o.bound?e.proxy_??e.target_:void 0),configurable:i?e.isPlainObject_:!0,enumerable:!1,writable:!i}}function k(e,t){return{annotationType_:e,options_:t,make_:De,extend_:Oe}}function De(e,t,n,r){var i;return r===e.target_?this.extend_(e,t,n,!1)===null?0:2:(i=this.options_)!=null&&i.bound&&(!T(e.target_,t)||!ur(e.target_[t]))&&this.extend_(e,t,n,!1)===null?0:ur(n.value)?1:(a(r,t,je(e,this,t,n,!1,!1)),2)}function Oe(e,t,n,r){let i=je(e,this,t,n,this.options_?.bound);return e.defineProperty_(t,i,r)}function ke(e,t,n){var r;ie(n,[`method`]);let{name:i,addInitializer:a}=n;return ur(t)||(t=or(t)),(r=e.options_)!=null&&r.bound&&a(function(){let e=this,t=e[i].bind(e);t.isMobXFlow=!0,e[i]=t}),t}function Ae(e,{annotationType_:t},r,{value:i}){p(i)||n(`Cannot apply '${t}' to '${e.name_}.${r.toString()}':\n'${t}' can only be used on properties with a generator function value.`)}function je(e,t,n,r,i,a=P.safeDescriptors){Ae(e,t,n,r);let{value:o}=r;return ur(o)||(o=or(o)),i&&(o=o.bind(e.proxy_??e.target_),o.isMobXFlow=!0),{value:o,configurable:a?e.isPlainObject_:!0,enumerable:!1,writable:!a}}function Me(e,t){return{annotationType_:e,options_:t,make_:Ne,extend_:Pe}}function Ne(e,t,n){return this.extend_(e,t,n,!1)===null?0:1}function Pe(e,t,n,i){return Ie(e,this,t,n),e.defineComputedProperty_(t,r({},this.options_,{get:n.get,set:n.set}),i)}function Fe(e,t,n){ie(n,[`getter`]);let i=e,{name:a,addInitializer:o}=n,s;function c(e,n){let o=r({},i.options_,{get:t,context:e});return o.name||=`${n.name_}.${a.toString()}`,new Ot(o)}return o(function(){let e=R(this)[O],n=this,r=e.values_.get(a);r instanceof Ot&&r.derivation!==t&&e.values_.delete(a),(e.lazyComputedKeys_??=new Map).set(a,()=>c(n,e))}),function(){let e=this[O],n=e.values_.get(a);if(n instanceof Ot&&n.derivation!==t){let t=s?.get(this);return t||(t=c(this,e),(s??=new WeakMap).set(this,t)),t.get()}return e.getObservablePropValue_(a)}}function Ie(e,{annotationType_:t},r,{get:i}){i||n(`Cannot apply '${t}' to '${e.name_}.${r.toString()}':\n'${t}' can only be used on getter(+setter) properties.`)}function Le(e,t){return{annotationType_:e,options_:t,make_:Re,extend_:ze}}function Re(e,t,n){return this.extend_(e,t,n,!1)===null?0:1}function ze(e,t,n,r){return Ve(e,this,t,n),e.defineObservableProperty_(t,n.value,this.options_?.enhancer_??fe,r)}function Be(e,t,r){if(r.kind===`field`)throw n(`Please use \`@observable accessor ${String(r.name)}\` instead of \`@observable ${String(r.name)}\``);ie(r,[`accessor`]);let i=e,{kind:a,name:o}=r;if(a!==`accessor`)return;function s(e,t){let n=R(e)[O];return(n.lazyObservableKeys_??=new Map).set(o,()=>new Et(t,i.options_?.enhancer_??fe,`${n.name_}.${o.toString()}`,!1)),n}return{get(){return(this[O]??s(this,t.get.call(this))).getObservablePropValue_(o)},set(e){return(this[O]??s(this,e)).setObservablePropValue_(o,e)},init(e){return s(this,e),e}}}function Ve(e,{annotationType_:t},r,i){`value`in i||n(`Cannot apply '${t}' to '${e.name_}.${r.toString()}':\n'${t}' cannot be used on getter/setter properties`)}let He=Ue();function Ue(e){return{annotationType_:`true`,options_:e,make_:Ke,extend_:qe}}let We=[He];function Ge(e){let t=e.deep!==!1,n=!!e.autoBind,r=!t|(n?2:0);return We[r]??(We[r]=Ue({deep:t,autoBind:n}))}function Ke(e,t,n,r){var i;if(n.get)return j.make_(e,t,n,r);if(n.set){let i=Ln(n.set)?n.set:yt(t.toString(),n.set);return r===e.target_?e.defineProperty_(t,{configurable:P.safeDescriptors?e.isPlainObject_:!0,set:i})===null?0:2:(a(r,t,{configurable:!0,set:i}),2)}if(r!==e.target_&&typeof n.value==`function`){var o;if(_(n.value)){var s;return((s=this.options_)!=null&&s.autoBind?sr:or).make_(e,t,n,r)}return((o=this.options_)!=null&&o.autoBind?Fn:Nn).make_(e,t,n,r)}let c=this.options_?.deep===!1?st:A;return typeof n.value==`function`&&(i=this.options_)!=null&&i.autoBind&&(n.value=n.value.bind(e.proxy_??e.target_)),c.make_(e,t,n,r)}function qe(e,t,n,r){var i;return n.get?j.extend_(e,t,n,r):n.set?e.defineProperty_(t,{configurable:P.safeDescriptors?e.isPlainObject_:!0,set:yt(t.toString(),n.set)},r):(typeof n.value==`function`&&(i=this.options_)!=null&&i.autoBind&&(n.value=n.value.bind(e.proxy_??e.target_)),(this.options_?.deep===!1?st:A).extend_(e,t,n,r))}function Je(e,t){return r(function(r,i){if(i&&typeof i.kind==`string`)return t(e,r,i);n(`Invalid arguments for \`${e.annotationType_}\``)},e)}let Ye={deep:!0,name:void 0,defaultDecorator:void 0};Object.freeze(Ye);function Xe(e){return e||Ye}let Ze=Le(`observable`),Qe=Le(`observable.ref`,{enhancer_:me}),$e=Le(`observable.shallow`,{enhancer_:pe}),et=Le(`observable.struct`,{enhancer_:he});function tt(e){return Je(e,Be)}function nt(e){return e.deep===!0?fe:e.deep===!1?me:it(e.defaultDecorator)}function rt(e){return e?e.defaultDecorator??Ge(e):void 0}function it(e){return e?e.options_?.enhancer_??fe:fe}function at(e,t,n){return t&&typeof t.kind==`string`?Be(Ze,e,t):yr(e)?e:g(e)?A.object(e,t,n):Array.isArray(e)?A.array(e,t):x(e)?A.map(e,t):C(e)?A.set(e,t):typeof e==`object`&&e?e:A.box(e,t)}let ot={box(e,t){let n=Xe(t);return new Et(e,nt(n),n.name,!0,n.equals)},array(e,t){let n=Xe(t);return ii(e,nt(n),n.name)},map(e,t){let n=Xe(t);return new pi(e,nt(n),n.name)},set(e,t){let n=Xe(t);return new vi(e,nt(n),n.name)},object(e,t,n){return Ai(()=>Jn(Ur({},n),e,t))}},st=tt(Qe),ct=tt($e),lt=tt(Ze),ut=tt(et);var A=r(at,Ze,ot);let dt=`computed`;function ft(e){return Je(e,Fe)}let pt=Me(dt),mt=ft(Me(`computed.struct`,{equals:le})),j=function(e,t){if(t&&typeof t.kind==`string`)return Fe(pt,e,t);if(g(e))return ft(Me(dt,e));p(e)||n("First argument to `computed` should be an expression."),p(t)&&n("A setter as second argument is no longer supported, use `{ set: fn }` option instead");let r=g(t)?t:{};return r.get=e,r.name||=e.name||``,new Ot(r)};r(j,pt);let ht=0,gt=1,_t=i(()=>{},`name`)?.configurable??!1,vt={value:`action`,configurable:!0,writable:!1,enumerable:!1};function yt(e,t,r=!1,i){p(t)||n("`action` can only be invoked on functions"),(typeof e!=`string`||!e)&&n(`actions should have valid names, got: '${e}'`);function o(){return bt(e,r,t,i||this,arguments)}return o.isMobxAction=!0,o.toString=()=>t.toString(),_t&&(vt.value=e,a(o,`name`,vt)),o}function bt(e,t,n,r,i){let a=xt(e,t,r,i);try{return n.apply(r,i)}catch(e){throw a.error_=e,e}finally{St(a)}}function xt(e,t,n,r){let i=vn()&&!!e,a=0;i&&(a=Date.now(),bn({type:F,name:e,object:n,arguments:r?Array.from(r):s}));let o=P.trackingDerivation,c=!t||!o;nn();let l=P.allowStateChanges;c&&(Vt(),l=wt(!0));let u=P.allowStateReads;M(!0);let d={runAsAction_:c,prevDerivation_:o,prevAllowStateChanges_:l,prevAllowStateReads_:u,notifySpy_:i,startTime_:a,actionId_:gt++,parentActionId_:ht};return ht=d.actionId_,d}function St(e){ht!==e.actionId_&&n(30),ht=e.parentActionId_,e.error_!==void 0&&(P.suppressReactionErrors=!0),Tt(e.prevAllowStateChanges_),Ut(e.prevAllowStateReads_),rn(),e.runAsAction_&&Ht(e.prevDerivation_),e.notifySpy_&&Sn({time:Date.now()-e.startTime_}),P.suppressReactionErrors=!1}function Ct(e,t){let n=wt(e);try{return t()}finally{Tt(n)}}function wt(e){let t=P.allowStateChanges;return P.allowStateChanges=e,t}function Tt(e){P.allowStateChanges=e}var Et=class extends ae{constructor(e,t,n=`ObservableValue@`+u(),r=!0,i=de){super(n),this.enhancer_=void 0,this.name_=void 0,this.equals_=void 0,this.hasUnreportedChange_=!1,this.interceptors_=void 0,this.changeListeners_=void 0,this.value_=void 0,this.dehancer=void 0,this.enhancer_=t,this.name_=n,this.equals_=i,this.value_=t(e,void 0,n),r&&vn()&&yn({type:`create`,object:this,observableKind:`value`,debugObjectName:this.name_,newValue:this.value_})}dehanceValue(e){return this.dehancer===void 0?e:this.dehancer(e)}set(e){let t=this.value_;if(e=this.prepareNewValue_(e),e!==P.UNCHANGED){let n=vn();n&&bn({type:ti,object:this,observableKind:`value`,debugObjectName:this.name_,newValue:e,oldValue:t}),this.setNewValue_(e),n&&Sn()}}prepareNewValue_(e){if(Pt(this),Wr(this)){let t=Kr(this,{object:this,type:ti,newValue:e});if(!t)return P.UNCHANGED;e=t.newValue}return e=this.enhancer_(e,this.value_,this.name_),this.equals_(this.value_,e)?P.UNCHANGED:e}setNewValue_(e){let t=this.value_;this.value_=e,this.reportChanged(),qr(this)&&Yr(this,{type:ti,object:this,newValue:e,oldValue:t})}get(){return this.reportObserved(),this.dehanceValue(this.value_)}raw(){return this.value_}toJSON(){return this.get()}toString(){return`${this.name_}[${this.value_}]`}valueOf(){return ne(this.get())}[Symbol.toPrimitive](){return this.valueOf()}};let Dt=b(`ObservableValue`,Et);var Ot=class{constructor(e){this.dependenciesState_=-1,this.observing_=[],this.newObserving_=null,this.observers_=null,this.runId_=0,this.lastAccessedBy_=0,this.lowestObserverState_=0,this.unboundDepsCount_=0,this.value_=new At(null),this.name_=void 0,this.triggeredBy_=void 0,this.flags_=0,this.derivation=void 0,this.setter_=void 0,this.scope_=void 0,this.equals_=void 0,this.requiresReaction_=void 0,this.keepAlive_=void 0,this.onBOL=void 0,this.onBUOL=void 0,e.get||n(31),this.derivation=e.get,this.name_=e.name||`ComputedValue@`+u(),e.set&&(this.setter_=yt(this.name_+`-setter`,e.set)),this.equals_=e.equals||de,this.scope_=e.context,this.requiresReaction_=e.requiresReaction,this.keepAlive_=!!e.keepAlive}onBecomeStale_(){un(this)}onBO(){this.onBOL&&this.onBOL.forEach(e=>e())}onBUO(){this.onBUOL&&this.onBUOL.forEach(e=>e())}get isComputing(){return E(this.flags_,1)}set isComputing(e){this.flags_=D(this.flags_,1,e)}get isRunningSetter(){return E(this.flags_,2)}set isRunningSetter(e){this.flags_=D(this.flags_,2,e)}get isBeingObserved(){return E(this.flags_,4)}set isBeingObserved(e){this.flags_=D(this.flags_,4,e)}get isPendingUnobservation(){return E(this.flags_,8)}set isPendingUnobservation(e){this.flags_=D(this.flags_,8,e)}get diffValue(){return+!!E(this.flags_,16)}set diffValue(e){this.flags_=D(this.flags_,16,e===1)}get(){if(this.isComputing&&n(32,this.name_,this.derivation),P.inBatch===0&&(!this.observers_||this.observers_.size===0)&&!this.keepAlive_)Mt(this)&&(this.warnAboutUntrackedRead_(),nn(),this.value_=this.computeValue_(!1),rn());else{let e=this.isBeingObserved;if(sn(this),Mt(this)){let e=P.trackingContext;!e&&(this.keepAlive_||this.isBeingObserved)&&(P.trackingContext=this),this.trackAndCompute()&&ln(this),P.trackingContext=e}else !e&&this.isBeingObserved&&this.observing_.forEach(on)}let e=this.value_;if(jt(e))throw e.cause;return e}set(e){if(this.setter_){this.isRunningSetter&&n(33,this.name_),this.isRunningSetter=!0;try{this.setter_.call(this.scope_,e)}finally{this.isRunningSetter=!1}}else n(34,this.name_)}trackAndCompute(){let e=this.value_,t=this.dependenciesState_===-1,n=this.computeValue_(!0),r=t||jt(e)||jt(n)||!this.equals_(e,n);return r&&(this.value_=n,vn()&&yn({observableKind:`computed`,debugObjectName:this.name_,object:this.scope_,type:`update`,oldValue:e,newValue:n})),r}computeValue_(e){this.isComputing=!0;let t=wt(!1),n;if(e)n=It(this,this.derivation,this.scope_);else if(P.disableErrorBoundaries===!0)n=this.derivation.call(this.scope_);else try{n=this.derivation.call(this.scope_)}catch(e){n=new At(e)}return Tt(t),this.isComputing=!1,n}suspend_(){this.keepAlive_||(zt(this),this.value_=void 0)}warnAboutUntrackedRead_(){(typeof this.requiresReaction_==`boolean`?this.requiresReaction_:P.computedRequiresReaction)&&console.warn(`[mobx] Computed value '${this.name_}' is being read outside a reactive context. Doing a full recompute.`)}toString(){return`${this.name_}[${this.derivation.toString()}]`}valueOf(){return ne(this.get())}[Symbol.toPrimitive](){return this.valueOf()}};let kt=b(`ComputedValue`,Ot);var At=class{constructor(e){this.cause=void 0,this.cause=e}};function jt(e){return e instanceof At}function Mt(e){switch(e.dependenciesState_){case 0:return!1;case-1:case 2:return!0;case 1:{let t=M(!0),n=Vt(),r=e.observing_,i=r.length;for(let a=0;a<i;a++){let i=r[a];if(kt(i)){if(P.disableErrorBoundaries)i.get();else try{i.get()}catch{return Ht(n),Ut(t),!0}if(e.dependenciesState_===2)return Ht(n),Ut(t),!0}}return Wt(e),Ht(n),Ut(t),!1}}}function Nt(){return P.trackingDerivation!==null}function Pt(e){let t=!!e.observers_&&e.observers_.size>0;!P.allowStateChanges&&(t||P.enforceActions===`always`)&&console.warn(`[MobX] `+(P.enforceActions?`Since strict-mode is enabled, changing (observed) observable values without using an action is not allowed. Tried to modify: `:`Side effects like changing state are not allowed at this point. Are you trying to modify state from, for example, a computed value or the render function of a React component? You can wrap side effects in 'runInAction' (or decorate functions with 'action') if needed. Tried to modify: `)+e.name_)}function Ft(e){!P.allowStateReads&&P.observableRequiresReaction&&console.warn(`[mobx] Observable '${e.name_}' being read outside a reactive context.`)}function It(e,t,n){let r=M(!0);Wt(e),e.newObserving_=Array(e.runId_===0?100:e.observing_.length),e.unboundDepsCount_=0,e.runId_=++P.runId;let i=P.trackingDerivation;P.trackingDerivation=e,P.inBatch++;let a;if(P.disableErrorBoundaries===!0)a=t.call(n);else try{a=t.call(n)}catch(e){a=new At(e)}return P.inBatch--,P.trackingDerivation=i,Rt(e),Lt(e),Ut(r),a}function Lt(e){e.observing_.length===0&&(typeof e.requiresObservable_==`boolean`?e.requiresObservable_:P.reactionRequiresObservable)&&console.warn(`[mobx] Derivation '${e.name_}' is created/updated without reading any observable value.`)}function Rt(e){let t=e.observing_,n=e.observing_=e.newObserving_,r=0,i=0,a=e.unboundDepsCount_;for(let e=0;e<a;e++){let t=n[e];t.diffValue===0&&(t.diffValue=1,i!==e&&(n[i]=t),i++),t.dependenciesState_>r&&(r=t.dependenciesState_)}for(n.length=i,e.newObserving_=null,a=t.length;a--;){let n=t[a];n.diffValue===0&&en(n,e),n.diffValue=0}for(;i--;){let t=n[i];t.diffValue===1&&(t.diffValue=0,$t(t,e))}r!==0&&(e.dependenciesState_=r,e.onBecomeStale_())}function zt(e){let t=e.observing_;e.observing_=[];let n=t.length;for(;n--;)en(t[n],e);e.dependenciesState_=-1}function Bt(e){let t=Vt();try{return e()}finally{Ht(t)}}function Vt(){let e=P.trackingDerivation;return P.trackingDerivation=null,e}function Ht(e){P.trackingDerivation=e}function M(e){let t=P.allowStateReads;return P.allowStateReads=e,t}function Ut(e){P.allowStateReads=e}function Wt(e){if(e.dependenciesState_===0)return;e.dependenciesState_=0;let t=e.observing_,n=t.length;for(;n--;)t[n].lowestObserverState_=0}let Gt=[`mobxGuid`,`spyListeners`,`enforceActions`,`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`allowStateReads`,`disableErrorBoundaries`,`runId`,`UNCHANGED`];var Kt=class{constructor(){this.version=7,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.isRunningUnobservations=!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.safeDescriptors=!0}};let qt=!0,N=!1,P=function(){let e=globalThis;return e.__mobxInstanceCount>0&&!e.__mobxGlobals&&(qt=!1),e.__mobxGlobals&&e.__mobxGlobals.version!==7&&(qt=!1),qt?e.__mobxGlobals?(e.__mobxInstanceCount+=1,e.__mobxGlobals.UNCHANGED||(e.__mobxGlobals.UNCHANGED={}),e.__mobxGlobals):(e.__mobxInstanceCount=1,e.__mobxGlobals=new Kt):(setTimeout(()=>{N||n(35)},1),new Kt)}();function Jt(){if((P.pendingReactions.length||P.inBatch||P.isRunningReactions)&&n(36),N=!0,qt){let e=globalThis;--e.__mobxInstanceCount===0&&(e.__mobxGlobals=void 0),P=new Kt}}function Yt(){return P}function Xt(){let e=new Kt;for(let t in e)Gt.indexOf(t)===-1&&(P[t]=e[t]);P.allowStateChanges=!P.enforceActions}function Zt(e){return!!e.observers_&&e.observers_.size>0}function Qt(e){return e.observers_??new Set}function $t(e,t){(e.observers_??=new Set).add(t),e.lowestObserverState_>t.dependenciesState_&&(e.lowestObserverState_=t.dependenciesState_)}function en(e,t){let n=e.observers_;n&&(n.delete(t),n.size===0&&tn(e))}function tn(e){e.isPendingUnobservation===!1&&(e.isPendingUnobservation=!0,P.pendingUnobservations.push(e))}function nn(){P.inBatch++}function rn(){--P.inBatch===0&&(mn(),!P.isRunningUnobservations&&P.pendingUnobservations.length>0&&an())}function an(){P.isRunningUnobservations=!0;try{let e=P.pendingUnobservations;for(let t=0;t<e.length;t++){let n=e[t];n.isPendingUnobservation=!1,(!n.observers_||n.observers_.size===0)&&(n.observers_=null,n.isBeingObserved&&(n.isBeingObserved=!1,n.onBUO()),n instanceof Ot&&n.suspend_())}P.pendingUnobservations=[]}finally{P.isRunningUnobservations=!1}}function on(e){var t;e.isBeingObserved||(e.isBeingObserved=!0,e.onBO(),(t=e.observing_)==null||t.forEach(on))}function sn(e){Ft(e);let t=P.trackingDerivation;return t===null?((!e.observers_||e.observers_.size===0)&&P.inBatch>0&&tn(e),!1):(t.runId_!==e.lastAccessedBy_&&(e.lastAccessedBy_=t.runId_,t.newObserving_[t.unboundDepsCount_++]=e,!e.isBeingObserved&&P.trackingContext&&(e.isBeingObserved=!0,e.onBO())),e.isBeingObserved)}function cn(e){var t;e.lowestObserverState_!==2&&(e.lowestObserverState_=2,(t=e.observers_)==null||t.forEach(e=>{e.dependenciesState_===0&&e.onBecomeStale_(),e.dependenciesState_=2}))}function ln(e){var t;e.lowestObserverState_!==2&&(e.lowestObserverState_=2,(t=e.observers_)==null||t.forEach(t=>{t.dependenciesState_===1?t.dependenciesState_=2:t.dependenciesState_===0&&(e.lowestObserverState_=0)}))}function un(e){var t;e.lowestObserverState_===0&&(e.lowestObserverState_=1,(t=e.observers_)==null||t.forEach(e=>{e.dependenciesState_===0&&(e.dependenciesState_=1,e.onBecomeStale_())}))}var dn=class{constructor(e=`Reaction@`+u(),t,n,r){this.name_=void 0,this.onInvalidate_=void 0,this.errorHandler_=void 0,this.requiresObservable_=void 0,this.observing_=[],this.newObserving_=[],this.dependenciesState_=-1,this.runId_=0,this.unboundDepsCount_=0,this.flags_=0,this.removeAbortListener_=void 0,this.name_=e,this.onInvalidate_=t,this.errorHandler_=n,this.requiresObservable_=r}get isDisposed(){return E(this.flags_,1)}set isDisposed(e){this.flags_=D(this.flags_,1,e)}get isScheduled(){return E(this.flags_,2)}set isScheduled(e){this.flags_=D(this.flags_,2,e)}get isTrackPending(){return E(this.flags_,4)}set isTrackPending(e){this.flags_=D(this.flags_,4,e)}get isRunning(){return E(this.flags_,8)}set isRunning(e){this.flags_=D(this.flags_,8,e)}get diffValue(){return+!!E(this.flags_,16)}set diffValue(e){this.flags_=D(this.flags_,16,e===1)}onBecomeStale_(){this.schedule_()}schedule_(){this.isScheduled||(this.isScheduled=!0,P.pendingReactions.push(this),mn())}runReaction_(){if(!this.isDisposed){nn(),this.isScheduled=!1;let e=P.trackingContext;if(P.trackingContext=this,Mt(this)){this.isTrackPending=!0;try{this.onInvalidate_(),this.isTrackPending&&vn()&&yn({name:this.name_,type:`scheduled-reaction`})}catch(e){this.reportExceptionInDerivation_(e)}}P.trackingContext=e,rn()}}track(e){if(this.isDisposed)return;nn();let t=vn(),n;t&&(n=Date.now(),bn({name:this.name_,type:`reaction`})),this.isRunning=!0;let r=P.trackingContext;P.trackingContext=this;let i=It(this,e,void 0);P.trackingContext=r,this.isRunning=!1,this.isTrackPending=!1,this.isDisposed&&zt(this),jt(i)&&this.reportExceptionInDerivation_(i.cause),t&&Sn({time:Date.now()-n}),rn()}reportExceptionInDerivation_(e){if(this.errorHandler_){this.errorHandler_(e,this);return}if(P.disableErrorBoundaries)throw e;let t=`[mobx] Encountered an uncaught exception that was thrown by a reaction or observer component, in: '${this}'`;P.suppressReactionErrors?console.warn(`[mobx] (error in reaction '${this.name_}' suppressed, fix error of causing action below)`):console.error(t,e),vn()&&yn({type:`error`,name:this.name_,message:t,error:``+e}),P.globalReactionErrorHandlers.forEach(t=>t(e,this))}dispose(){if(!this.isDisposed){var e;this.isDisposed=!0,(e=this.removeAbortListener_)==null||e.call(this),this.isRunning||(nn(),zt(this),rn())}}getDisposer_(e){let t=()=>this.dispose();return e!=null&&e.addEventListener&&!this.isDisposed&&(e.addEventListener(`abort`,t),this.removeAbortListener_=()=>e.removeEventListener==null?void 0:e.removeEventListener(`abort`,t)),t[O]=this,`dispose`in Symbol&&typeof Symbol.dispose==`symbol`&&(t[Symbol.dispose]=t),t}toString(){return`Reaction[${this.name_}]`}};function fn(e){return P.globalReactionErrorHandlers.push(e),()=>{let t=P.globalReactionErrorHandlers.indexOf(e);t>=0&&P.globalReactionErrorHandlers.splice(t,1)}}let pn=e=>e();function mn(){P.inBatch>0||P.isRunningReactions||pn(hn)}function hn(){P.isRunningReactions=!0;let e=P.pendingReactions,t=0;for(;e.length>0;){++t===100&&(console.error(`Reaction doesn't converge to a stable state after 100 iterations. Probably there is a cycle in the reactive function: ${e[0]}`),e.splice(0));let n=e.splice(0);for(let e=0,t=n.length;e<t;e++)n[e].runReaction_()}P.isRunningReactions=!1}let gn=b(`Reaction`,dn);function _n(e){let t=pn;pn=n=>e(()=>t(n))}function vn(){return!!P.spyListeners.length}function yn(e){if(!P.spyListeners.length)return;let t=P.spyListeners;for(let n=0,r=t.length;n<r;n++)t[n](e)}function bn(e){yn(r({},e,{spyReportStart:!0}))}let xn={type:`report-end`,spyReportEnd:!0};function Sn(e){yn(e?r({},e,{type:`report-end`,spyReportEnd:!0}):xn)}function Cn(e){return P.spyListeners.push(e),d(()=>{P.spyListeners=P.spyListeners.filter(t=>t!==e)})}let F=`action`,wn=`autoAction`,Tn=`<unnamed action>`,En=xe(F),Dn=xe(`action.bound`,{bound:!0}),On=xe(wn,{autoAction:!0}),kn=xe(`autoAction.bound`,{autoAction:!0,bound:!0});function An(e){return Je(e,we)}function jn(e){return function(t,r){if(r&&typeof r.kind==`string`)return we(e?On:En,t,r);if(p(t))return yt(t.name||Tn,t,e);if(p(r))return yt(t,r,e);if(m(t))return An(xe(e?wn:F,{name:t,autoAction:e}));n("Invalid arguments for `action`")}}let Mn=jn(!1);r(Mn,En);let Nn=jn(!0);r(Nn,On);let Pn=An(Dn),Fn=An(kn);function In(e){return bt(e.name||Tn,!1,e,this,void 0)}function Ln(e){return p(e)&&e.isMobxAction===!0}function Rn(e,t=c){var r;p(e)||n(`Autorun expects a function as first argument`),Ln(e)&&n(`Autorun does not accept actions since actions are untrackable`);let i=t?.name??(e.name||`Autorun@`+u()),a=!t.scheduler&&!t.delay,o;if(a)o=new dn(i,function(){this.track(s)},t.onError,t.requiresObservable);else{let e=Bn(t),n=!1;o=new dn(i,()=>{n||(n=!0,e(()=>{n=!1,o.isDisposed||o.track(s)}))},t.onError,t.requiresObservable)}function s(){e(o)}return t!=null&&(r=t.signal)!=null&&r.aborted||o.schedule_(),o.getDisposer_(t?.signal)}let zn=e=>e();function Bn(e){return e.scheduler?e.scheduler:e.delay?t=>setTimeout(t,e.delay):zn}function Vn(e,t,r=c){var i;(!p(e)||!p(t))&&n(`First and second argument to reaction should be functions`),g(r)||n(`Third argument of reactions should be an object`);let a=r.name??`Reaction@`+u(),o=Mn(a,r.onError?Hn(r.onError,t):t),s=!r.scheduler&&!r.delay,l=Bn(r),d=!0,f=!1,m,h=r.equals||de,_=new dn(a,()=>{d||s?v():f||(f=!0,l(v))},r.onError,r.requiresObservable);function v(){if(f=!1,_.isDisposed)return;let t=!1,n=m;_.track(()=>{let n=Ct(!1,()=>e(_));t=d||!h(m,n),m=n}),(d&&r.fireImmediately||!d&&t)&&o(m,n,_),d=!1}return r!=null&&(i=r.signal)!=null&&i.aborted||_.schedule_(),_.getDisposer_(r?.signal)}function Hn(e,t){return function(){try{return t.apply(this,arguments)}catch(t){e.call(this,t)}}}function Un(e,t,n){return Gn(`onBO`,e,t,n)}function Wn(e,t,n){return Gn(`onBUO`,e,t,n)}function Gn(e,t,n,r){let i=typeof r==`function`?Di(t,n):Di(t),a=p(r)?r:n,o=`${e}L`;return i[o]?i[o].add(a):i[o]=new Set([a]),function(){let e=i[o];e&&(e.delete(a),e.size===0&&delete i[o])}}let Kn=`always`;function qn(e){e.isolateGlobalState===!0&&Jt();let{enforceActions:t}=e;if(t!==void 0){let e=t===Kn?Kn:t===`observed`;P.enforceActions=e,P.allowStateChanges=!(e===!0||e===Kn)}[`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`disableErrorBoundaries`,`safeDescriptors`].forEach(t=>{t in e&&(P[t]=!!e[t])}),P.allowStateReads=!P.observableRequiresReaction,P.disableErrorBoundaries===!0&&console.warn("WARNING: Debug feature only. MobX will NOT recover from errors when `disableErrorBoundaries` is enabled."),e.reactionScheduler&&_n(e.reactionScheduler)}function Jn(e,t,r,i){arguments.length>4&&n(`'extendObservable' expected 2-4 arguments`),typeof e!=`object`&&n(`'extendObservable' expects an object as first argument`),mi(e)&&n(`'extendObservable' should not be used on maps, use map.merge instead`),g(t)||n(`'extendObservable' only accepts plain objects as second argument`),(yr(t)||yr(r))&&n(`Extending an object with another observable (object) is not supported`);let a=re(t);return Ai(()=>{let t=R(e,i)[O];ee(a).forEach(e=>{t.extend_(e,a[e],r&&e in r?r[e]:!0)})}),e}function Yn(e,t){return Xn(Di(e,t))}function Xn(e){let t={name:e.name_};return e.observing_&&e.observing_.length>0&&(t.dependencies=$n(e.observing_).map(Xn)),t}function Zn(e,t){return Qn(Di(e,t))}function Qn(e){let t={name:e.name_};return Zt(e)&&(t.observers=Array.from(Qt(e),Qn)),t}function $n(e){return Array.from(new Set(e))}let er=0;var tr=class extends Error{constructor(){super(`FLOW_CANCELLED`),Object.setPrototypeOf(this,new.target.prototype),this.name=`FlowCancellationError`}toString(){return`Error: ${this.message}`}};function nr(e){return e instanceof tr}function rr(e){return Je(e,ke)}let ir=k(`flow`),ar=k(`flow.bound`,{bound:!0}),or=r(function(e,t){if(t&&typeof t.kind==`string`)return ke(ir,e,t);arguments.length!==1&&n(`Flow expects single argument with generator function`);let r=e,i=r.name||`<unnamed flow>`,a=function(){let e=this,t=arguments,n=++er,a=Mn(`${i} - runid: ${n} - init`,r).apply(e,t),o,s,c=new Promise(function(e,t){let r=0;o=t;function c(e){s=void 0;let o;try{o=Mn(`${i} - runid: ${n} - yield ${r++}`,a.next).call(a,e)}catch(e){return t(e)}u(o)}function l(e){s=void 0;let o;try{o=Mn(`${i} - runid: ${n} - yield ${r++}`,a.throw).call(a,e)}catch(e){return t(e)}u(o)}function u(n){if(p(n?.then)){n.then(u,t);return}return n.done?e(n.value):(s=Promise.resolve(n.value),s.then(c,l))}c(void 0)});return c.cancel=Mn(`${i} - runid: ${n} - cancel`,function(){try{s&&cr(s);let e=a.return(void 0),t=Promise.resolve(e.value);t.then(f,f),cr(t),o(new tr)}catch(e){o(e)}}),c};return a.isMobXFlow=!0,a},ir),sr=rr(ar);function cr(e){p(e.cancel)&&e.cancel()}function lr(e){return e}function ur(e){return e?.isMobXFlow===!0}function dr(e,t,r){let i;if(mi(e)||ui(e)||Dt(e))i=Oi(e);else if(wi(e)){if(!m(t))return n(`InterceptReads can only be used with a specific property, not with an object in general`);i=Oi(e,t)}else return n(`Expected observable map, object or array as first array`);return i.dehancer===void 0?(i.dehancer=typeof t==`function`?t:r,()=>{i.dehancer=void 0}):n(`An intercept reader was already established`)}function fr(e,t,n){return p(n)?mr(e,t,n):pr(e,t)}function pr(e,t){return Gr(Oi(e),t)}function mr(e,t,n){return Gr(Oi(e,t),n)}function hr(e,t){var n;if(t===void 0)return kt(e);if(wi(e)===!1)return!1;let r=e[O];return(n=r.lazyComputedKeys_)!=null&&n.has(t)?!0:r.values_.has(t)?kt(Di(e,t)):!1}function gr(e){return arguments.length>1?n(`isComputed expects only 1 argument. Use isComputedProp to inspect the observability of a property`):hr(e)}function _r(e,t){return m(t)?hr(e,t):n(`isComputed expected a property name as second argument`)}function vr(e,t){if(!e)return!1;if(t!==void 0){if(mi(e)||ui(e))return n(`isObservable(object, propertyName) is not supported for arrays and maps. Use map.has or array.length instead.`);if(wi(e)){var r,i;let n=e[O];return n.values_.has(t)||!!((r=n.lazyComputedKeys_)!=null&&r.has(t))||!!((i=n.lazyObservableKeys_)!=null&&i.has(t))}return!1}return wi(e)||!!e[O]||oe(e)||gn(e)||kt(e)}function yr(e){return arguments.length!==1&&n(`isObservable expects only 1 argument. Use isObservableProp to inspect the observability of a property`),vr(e)}function br(e,t){return m(t)?vr(e,t):n(`expected a property name as second argument`)}function xr(e){if(wi(e))return e[O].keys_();if(mi(e)||yi(e))return Array.from(e.keys());if(ui(e))return e.map((e,t)=>t);n(5)}function Sr(e){if(wi(e))return xr(e).map(t=>e[t]);if(mi(e))return xr(e).map(t=>e.get(t));if(yi(e))return Array.from(e.values());if(ui(e))return e.slice();n(6)}function Cr(e){if(wi(e))return xr(e).map(t=>[t,e[t]]);if(mi(e))return xr(e).map(t=>[t,e.get(t)]);if(yi(e))return Array.from(e.entries());if(ui(e))return e.map((e,t)=>[t,e]);n(7)}function wr(e,t,r){if(arguments.length===2&&!yi(e)){nn();let n=t;try{for(let t in n)wr(e,t,n[t])}finally{rn()}return}wi(e)?e[O].set_(t,r):mi(e)?e.set(t,r):yi(e)?e.add(t):ui(e)?(typeof t!=`number`&&(t=parseInt(t,10)),t<0&&n(42,t),nn(),t>=e.length&&(e.length=t+1),e[t]=r,rn()):n(8)}function Tr(e,t){wi(e)?e[O].delete_(t):mi(e)||yi(e)?e.delete(t):ui(e)?(typeof t!=`number`&&(t=parseInt(t,10)),e.splice(t,1)):n(9)}function Er(e,t){if(wi(e))return e[O].has_(t);if(mi(e)||yi(e))return e.has(t);if(ui(e))return t>=0&&t<e.length;n(10)}function Dr(e,t){if(Er(e,t)){if(wi(e))return e[O].get_(t);if(mi(e))return e.get(t);if(ui(e))return e[t];n(11)}}function Or(e,t,r){if(wi(e))return e[O].defineProperty_(t,r);n(39)}function kr(e){if(wi(e))return e[O].ownKeys_();n(38)}function Ar(e,t,n,r){return p(n)?Mr(e,t,n,r):jr(e,t,n)}function jr(e,t,r){let i=Oi(e);if(ui(e))r&&t({observableKind:`array`,object:i.proxy_,debugObjectName:i.atom_.name_,type:`splice`,index:0,added:i.values_.slice(),addedCount:i.values_.length,removed:[],removedCount:0});else if(mi(e))r===!0&&n("`observe` doesn't support fireImmediately=true in combination with maps.");else if(yi(e))r===!0&&n("`observe` doesn't support fireImmediately=true in combination with sets.");else if(wi(e))r===!0&&n("`observe` doesn't support the fire immediately property for observable objects.");else return Nr(i,t,r);return Jr(i,t)}function Mr(e,t,n,r){return Nr(Oi(e,t),n,r)}function Nr(e,t,n){if(kt(e)){let r=!0,i;return Rn(()=>{let a=e.get();if(!r||n){let n=Vt();t({observableKind:`computed`,debugObjectName:e.name_,type:ti,object:e,newValue:a,oldValue:i}),Ht(n)}r=!1,i=a})}return n&&t({observableKind:`value`,debugObjectName:e.name_,object:e,type:ti,newValue:e.value_,oldValue:void 0}),Jr(e,t)}function Pr(e,t,n){return e.set(t,n),n}function Fr(e,t){if(typeof e!=`object`||!e||e instanceof Date||!yr(e))return e;if(Dt(e)||kt(e))return Fr(e.get(),t);if(t.has(e))return t.get(e);if(ui(e)){let n=Pr(t,e,Array(e.length));return e.forEach((e,r)=>{n[r]=Fr(e,t)}),n}if(yi(e)){let n=Pr(t,e,new Set);return e.forEach(e=>{n.add(Fr(e,t))}),n}if(mi(e)){let n=Pr(t,e,new Map);return e.forEach((e,r)=>{n.set(r,Fr(e,t))}),n}else{let n=Pr(t,e,{});return kr(e).forEach(r=>{o.propertyIsEnumerable.call(e,r)&&(n[r]=Fr(e[r],t))}),n}}function Ir(e,t){return t&&n(`toJS no longer supports options`),Fr(e,new Map)}function Lr(e,t=void 0){nn();try{return e.apply(t)}finally{rn()}}function Rr(e,t,n){return arguments.length===1||t&&typeof t==`object`?Br(e,t):zr(e,t,n||{})}function zr(e,t,n){let r;if(typeof n.timeout==`number`){let e=Error(`WHEN_TIMEOUT`);r=setTimeout(()=>{if(!a[O].isDisposed)if(a(),n.onError)n.onError(e);else throw e},n.timeout)}n.name=n.name||`When@`+u();let i=yt(n.name+`-effect`,t);var a=Rn(t=>{Ct(!1,e)&&(t.dispose(),r&&clearTimeout(r),i())},n);return a}function Br(e,t){var i;if(t&&t.onError)return n(`the options 'onError' and 'promise' cannot be combined`);if(t!=null&&(i=t.signal)!=null&&i.aborted)return r(Promise.reject(Error(`WHEN_ABORTED`)),{cancel:()=>null});let a,o,s=new Promise((n,i)=>{var s;let c=zr(e,n,r({},t,{onError:i}));a=()=>{c(),i(Error(`WHEN_CANCELLED`))},o=()=>{c(),i(Error(`WHEN_ABORTED`))},t==null||(s=t.signal)==null||s.addEventListener==null||s.addEventListener(`abort`,o)}).finally(()=>{var e;return t==null||(e=t.signal)==null||e.removeEventListener==null?void 0:e.removeEventListener(`abort`,o)});return s.cancel=a,s}function Vr(e){return e[O]}let Hr={has(e,t){return Vr(e).has_(t)},get(e,t){return Vr(e).get_(t)},set(e,t,n){return m(t)?Vr(e).set_(t,n,!0)??!0:!1},deleteProperty(e,t){return m(t)?Vr(e).delete_(t,!0)??!0:!1},defineProperty(e,t,n){return Vr(e).defineProperty_(t,n)??!0},ownKeys(e){return Vr(e).ownKeys_()},preventExtensions(e){n(13)}};function Ur(e,t){var n;return e=R(e,t),(n=e[O]).proxy_??(n.proxy_=new Proxy(e,Hr))}function Wr(e){return e.interceptors_!==void 0&&e.interceptors_.length>0}function Gr(e,t){let n=e.interceptors_;return n?n.push(t):n=e.interceptors_=[t],d(()=>{let e=n.indexOf(t);e!==-1&&n.splice(e,1)})}function Kr(e,t){let r=Vt();try{let r=[...e.interceptors_||[]];for(let e=0,i=r.length;e<i&&(t=r[e](t),t&&!t.type&&n(14),t);e++);return t}finally{Ht(r)}}function qr(e){return e.changeListeners_!==void 0&&e.changeListeners_.length>0}function Jr(e,t){let n=e.changeListeners_;return n?n.push(t):n=e.changeListeners_=[t],d(()=>{let e=n.indexOf(t);e!==-1&&n.splice(e,1)})}function Yr(e,t){let n=Vt(),r=e.changeListeners_;if(r){r=r.slice();for(let e=0,n=r.length;e<n;e++)r[e](t);Ht(n)}}function Xr(e,t,n){return Ai(()=>{let r=R(e,n)[O];ee(t).forEach(e=>$r(r,e,t[e]))}),e}let Zr=Symbol(`mobx-keys`);function Qr(e,t,r){return!g(e)&&!g(Object.getPrototypeOf(e))&&n(`'makeAutoObservable' can only be used for classes that don't have a superclass`),wi(e)&&n(`makeAutoObservable can only be used on objects not already made observable`),g(e)?Jn(e,e,t,r):(Ai(()=>{let n=R(e,r)[O];if(!e[Zr]){let t=Object.getPrototypeOf(e),n=new Set([...ee(e),...ee(t)]);n.delete(`constructor`),n.delete(O),v(t,Zr,n)}e[Zr].forEach(e=>$r(n,e,t&&e in t?t[e]:!0))}),e)}function $r(e,t,r){if(r===!0&&(r=e.defaultAnnotation_),r===!1)return;Ei(e,r,t),t in e.target_||n(1,r.annotationType_,`${e.name_}.${t.toString()}`);let a=e.target_;for(;a&&a!==o;){let n=i(a,t);if(n){let i=r.make_(e,t,n,a);if(i===0)return;if(i===1)break}a=Object.getPrototypeOf(a)}Ti(e,r,t)}let ei=`splice`,ti=`update`,ni={get(e,t){let n=e[O];return t===O?n:t===`length`?n.getArrayLength_():typeof t==`string`&&!isNaN(t)?n.get_(parseInt(t)):T(ai,t)?ai[t]:e[t]},set(e,t,n){let r=e[O];return t===`length`?r.setArrayLength_(n):typeof t==`symbol`||isNaN(t)?e[t]=n:r.set_(parseInt(t),n),!0},preventExtensions(){n(15)}};var ri=class{constructor(e=`ObservableArray@`+u(),t,n){this.owned_=void 0,this.atom_=void 0,this.values_=[],this.interceptors_=void 0,this.changeListeners_=void 0,this.enhancer_=void 0,this.dehancer=void 0,this.proxy_=void 0,this.lastKnownLength_=0,this.owned_=n,this.atom_=new ae(e),this.enhancer_=(n,r)=>t(n,r,e+`[..]`)}dehanceValue_(e){return this.dehancer===void 0?e:this.dehancer(e)}dehanceValues_(e){return this.dehancer!==void 0&&e.length>0?e.map(this.dehancer):e}getArrayLength_(){return this.atom_.reportObserved(),this.values_.length}setArrayLength_(e){(!Number.isInteger(e)||e<0)&&n(40,e);let t=this.values_.length;if(e!==t)if(e>t){let n=Array.from({length:e-t});this.spliceWithArray_(t,0,n)}else this.spliceWithArray_(e,t-e)}updateArrayLength_(e,t){e!==this.lastKnownLength_&&n(16),this.lastKnownLength_+=t}spliceWithArray_(e,t,n){Pt(this.atom_);let r=this.values_.length;if(e===void 0?e=0:e>r?e=r:e<0&&(e=Math.max(0,r+e)),t=arguments.length===1?r-e:t==null?0:Math.max(0,Math.min(t,r-e)),n===void 0&&(n=s),Wr(this)){let r=Kr(this,{object:this.proxy_,type:ei,index:e,removedCount:t,added:n});if(!r)return s;t=r.removedCount,n=r.added}n=n.length===0?n:n.map(e=>this.enhancer_(e,void 0));{let e=n.length-t;this.updateArrayLength_(r,e)}let i=this.spliceItemsIntoValues_(e,t,n);return(t!==0||n.length!==0)&&this.notifyArraySplice_(e,n,i),this.dehanceValues_(i)}spliceItemsIntoValues_(e,t,n){if(n.length<1e4)return this.values_.splice(e,t,...n);{let r=this.values_.slice(e,e+t),i=this.values_.slice(e+t);this.values_.length+=n.length-t;for(let t=0;t<n.length;t++)this.values_[e+t]=n[t];for(let t=0;t<i.length;t++)this.values_[e+n.length+t]=i[t];return r}}notifyArrayChildUpdate_(e,t,n){let r=!this.owned_&&vn(),i=qr(this),a=i||r?{observableKind:`array`,object:this.proxy_,type:ti,debugObjectName:this.atom_.name_,index:e,newValue:t,oldValue:n}:null;r&&bn(a),this.atom_.reportChanged(),i&&Yr(this,a),r&&Sn()}notifyArraySplice_(e,t,n){let r=!this.owned_&&vn(),i=qr(this),a=i||r?{observableKind:`array`,object:this.proxy_,debugObjectName:this.atom_.name_,type:ei,index:e,removed:n,added:t,removedCount:n.length,addedCount:t.length}:null;r&&bn(a),this.atom_.reportChanged(),i&&Yr(this,a),r&&Sn()}get_(e){return this.atom_.reportObserved(),this.dehanceValue_(this.values_[e])}set_(e,t){let n=this.values_;if(e<n.length){Pt(this.atom_);let r=n[e];if(Wr(this)){let n=Kr(this,{type:ti,object:this.proxy_,index:e,newValue:t});if(!n)return;t=n.newValue}t=this.enhancer_(t,r),t!==r&&(n[e]=t,this.notifyArrayChildUpdate_(e,t,r))}else{let r=Array.from({length:e+1-n.length});r[r.length-1]=t,this.spliceWithArray_(n.length,0,r)}}};function ii(e,t,n=`ObservableArray@`+u(),r=!1){return Ai(()=>{let i=new ri(n,t,r);y(i.values_,O,i);let a=new Proxy(i.values_,ni);return i.proxy_=a,e&&e.length&&i.spliceWithArray_(0,0,e),a})}var ai={clear(){return this.splice(0)},replace(e){let t=this[O];return t.spliceWithArray_(0,t.values_.length,e)},toJSON(){return this.slice()},splice(e,t,...n){let r=this[O];switch(arguments.length){case 0:return[];case 1:return r.spliceWithArray_(e);case 2:return r.spliceWithArray_(e,t)}return r.spliceWithArray_(e,t,n)},spliceWithArray(e,t,n){return this[O].spliceWithArray_(e,t,n)},push(...e){let t=this[O];return t.spliceWithArray_(t.values_.length,0,e),t.values_.length},pop(){return this.splice(Math.max(this[O].values_.length-1,0),1)[0]},shift(){return this.splice(0,1)[0]},unshift(...e){let t=this[O];return t.spliceWithArray_(0,0,e),t.values_.length},reverse(){return P.trackingDerivation&&n(37,`reverse`),this.replace(this.slice().reverse()),this},sort(){P.trackingDerivation&&n(37,`sort`);let e=this.slice();return e.sort.apply(e,arguments),this.replace(e),this},remove(e){let t=this[O],n=t.dehanceValues_(t.values_).indexOf(e);return n>-1?(this.splice(n,1),!0):!1}};I(`at`,oi),I(`concat`,oi),I(`flat`,oi),I(`includes`,oi),I(`indexOf`,oi),I(`join`,oi),I(`lastIndexOf`,oi),I(`slice`,oi),I(`toString`,oi),I(`toLocaleString`,oi),I(`toSorted`,oi),I(`toSpliced`,oi),I(`with`,oi),I(`every`,si),I(`filter`,si),I(`find`,si),I(`findIndex`,si),I(`findLast`,si),I(`findLastIndex`,si),I(`flatMap`,si),I(`forEach`,si),I(`map`,si),I(`some`,si),I(`toReversed`,si),I(`reduce`,ci),I(`reduceRight`,ci);function I(e,t){typeof Array.prototype[e]==`function`&&(ai[e]=t(e))}function oi(e){return function(){let t=this[O];t.atom_.reportObserved();let n=t.dehanceValues_(t.values_);return n[e].apply(n,arguments)}}function si(e){return function(t,n){let r=this[O];return r.atom_.reportObserved(),r.dehanceValues_(r.values_)[e]((e,r)=>t.call(n,e,r,this))}}function ci(e){return function(){let t=this[O];t.atom_.reportObserved();let n=t.dehanceValues_(t.values_),r=arguments[0];return arguments[0]=(e,t,n)=>r(e,t,n,this),n[e].apply(n,arguments)}}let li=b(`ObservableArrayAdministration`,ri);function ui(e){return h(e)&&li(e[O])}let di={},fi=`delete`;var pi=class{constructor(e,t=fe,n=`ObservableMap@`+u()){this.enhancer_=void 0,this.name_=void 0,this[O]=di,this.data_=void 0,this.hasMap_=void 0,this.keysAtom_=void 0,this.interceptors_=void 0,this.changeListeners_=void 0,this.dehancer=void 0,this.enhancer_=t,this.name_=n,Ai(()=>{this.keysAtom_=se(`${this.name_}.keys()`),this.data_=new Map,this.hasMap_=new Map,e&&this.merge(e)})}has_(e){return this.data_.has(e)}has(e){if(!P.trackingDerivation)return this.has_(e);let t=this.hasMap_.get(e);if(!t){let n=t=new Et(this.has_(e),me,`${this.name_}.${te(e)}?`,!1);this.hasMap_.set(e,n),n.onBUOL=new Set([()=>this.hasMap_.delete(e)])}return t.get()}set(e,t){let n=this.has_(e);if(Wr(this)){let r=Kr(this,{type:n?ti:`add`,object:this,newValue:t,name:e});if(!r)return this;t=r.newValue}return n?this.updateValue_(e,t):this.addValue_(e,t),this}delete(e){if(Pt(this.keysAtom_),Wr(this)&&!Kr(this,{type:fi,object:this,name:e}))return!1;if(this.has_(e)){let t=vn(),n=qr(this),r=n||t?{observableKind:`map`,debugObjectName:this.name_,type:fi,object:this,oldValue:this.data_.get(e).value_,name:e}:null;return t&&bn(r),Lr(()=>{var t;this.keysAtom_.reportChanged(),(t=this.hasMap_.get(e))==null||t.setNewValue_(!1),this.data_.get(e).setNewValue_(void 0),this.data_.delete(e)}),n&&Yr(this,r),t&&Sn(),!0}return!1}updateValue_(e,t){let n=this.data_.get(e);if(t=n.prepareNewValue_(t),t!==P.UNCHANGED){let r=vn(),i=qr(this),a=i||r?{observableKind:`map`,debugObjectName:this.name_,type:ti,object:this,oldValue:n.value_,name:e,newValue:t}:null;r&&bn(a),n.setNewValue_(t),i&&Yr(this,a),r&&Sn()}}addValue_(e,t){Pt(this.keysAtom_),Lr(()=>{var n;let r=new Et(t,this.enhancer_,`${this.name_}.${te(e)}`,!1);this.data_.set(e,r),t=r.value_,(n=this.hasMap_.get(e))==null||n.setNewValue_(!0),this.keysAtom_.reportChanged()});let n=vn(),r=qr(this),i=r||n?{observableKind:`map`,debugObjectName:this.name_,type:`add`,object:this,name:e,newValue:t}:null;n&&bn(i),r&&Yr(this,i),n&&Sn()}get(e){return this.has(e)?this.dehanceValue_(this.data_.get(e).get()):this.dehanceValue_(void 0)}getOrInsert(e,t){return this.has(e)||this.set(e,t),this.get(e)}getOrInsertComputed(e,t){return this.has(e)||this.set(e,t(e)),this.get(e)}dehanceValue_(e){return this.dehancer===void 0?e:this.dehancer(e)}keys(){return this.keysAtom_.reportObserved(),this.data_.keys()}values(){let e=this,t=this.keys();return hi({next(){let{done:n,value:r}=t.next();return{done:n,value:n?void 0:e.get(r)}}})}entries(){let e=this,t=this.keys();return hi({next(){let{done:n,value:r}=t.next();return{done:n,value:n?void 0:[r,e.get(r)]}}})}[Symbol.iterator](){return this.entries()}forEach(e,t){for(let[n,r]of this)e.call(t,r,n,this)}merge(e){return mi(e)&&(e=new Map(e)),Lr(()=>{g(e)?w(e).forEach(t=>this.set(t,e[t])):Array.isArray(e)?e.forEach(([e,t])=>this.set(e,t)):x(e)?(S(e)||n(19,e),e.forEach((e,t)=>this.set(t,e))):e!=null&&n(20,e)}),this}clear(){Lr(()=>{Bt(()=>{for(let e of this.keys())this.delete(e)})})}replace(e){return Lr(()=>{let t=gi(e),n=new Map,r=!1;for(let e of this.data_.keys())if(!t.has(e))if(this.delete(e))r=!0;else{let t=this.data_.get(e);n.set(e,t)}for(let[e,i]of t.entries()){let t=this.data_.has(e);if(this.set(e,i),this.data_.has(e)){let i=this.data_.get(e);n.set(e,i),t||(r=!0)}}if(!r)if(this.data_.size!==n.size)this.keysAtom_.reportChanged();else{let e=this.data_.keys(),t=n.keys(),r=e.next(),i=t.next();for(;!r.done;){if(r.value!==i.value){this.keysAtom_.reportChanged();break}r=e.next(),i=t.next()}}this.data_=n}),this}get size(){return this.keysAtom_.reportObserved(),this.data_.size}toString(){return`[object ObservableMap]`}toJSON(){return Array.from(this)}get[Symbol.toStringTag](){return`Map`}},mi=b(`ObservableMap`,pi);function hi(e){return e[Symbol.toStringTag]=`MapIterator`,Ii(e)}function gi(e){if(x(e)||mi(e))return e;if(Array.isArray(e))return new Map(e);if(g(e)){let t=new Map;for(let n in e)t.set(n,e[n]);return t}else return n(21,e)}let _i={};var vi=class{constructor(e,t=fe,n=`ObservableSet@`+u()){this.name_=void 0,this[O]=_i,this.data_=new Set,this.atom_=void 0,this.changeListeners_=void 0,this.interceptors_=void 0,this.dehancer=void 0,this.enhancer_=void 0,this.name_=n,this.enhancer_=(e,r)=>t(e,r,n),Ai(()=>{this.atom_=se(this.name_),e&&this.replace(e)})}dehanceValue_(e){return this.dehancer===void 0?e:this.dehancer(e)}clear(){Lr(()=>{Bt(()=>{for(let e of this.data_.values())this.delete(e)})})}forEach(e,t){for(let n of this)e.call(t,n,n,this)}get size(){return this.atom_.reportObserved(),this.data_.size}add(e){if(Pt(this.atom_),Wr(this)){let t=Kr(this,{type:`add`,object:this,newValue:e});if(!t)return this;e=t.newValue}if(!this.has(e)){Lr(()=>{e=this.enhancer_(e,void 0),this.data_.add(e),this.atom_.reportChanged()});let t=vn(),n=qr(this),r=n||t?{observableKind:`set`,debugObjectName:this.name_,type:`add`,object:this,newValue:e}:null;t&&bn(r),n&&Yr(this,r),t&&Sn()}return this}delete(e){if(Wr(this)&&!Kr(this,{type:fi,object:this,oldValue:e}))return!1;if(this.has(e)){let t=vn(),n=qr(this),r=n||t?{observableKind:`set`,debugObjectName:this.name_,type:fi,object:this,oldValue:e}:null;return t&&bn(r),Lr(()=>{this.atom_.reportChanged(),this.data_.delete(e)}),n&&Yr(this,r),t&&Sn(),!0}return!1}has(e){return this.atom_.reportObserved(),this.data_.has(this.dehanceValue_(e))}entries(){let e=this.values();return bi({next(){let{value:t,done:n}=e.next();return n?{value:void 0,done:n}:{value:[t,t],done:n}}})}keys(){return this.values()}values(){this.atom_.reportObserved();let e=this,t=this.data_.values();return bi({next(){let{value:n,done:r}=t.next();return r?{value:void 0,done:r}:{value:e.dehanceValue_(n),done:r}}})}intersection(e){return new Set(this).intersection(e)}union(e){return new Set(this).union(e)}difference(e){return new Set(this).difference(e)}symmetricDifference(e){return new Set(this).symmetricDifference(e)}isSubsetOf(e){return new Set(this).isSubsetOf(e)}isSupersetOf(e){return new Set(this).isSupersetOf(e)}isDisjointFrom(e){return new Set(this).isDisjointFrom(e)}replace(e){return yi(e)&&(e=new Set(e)),Array.isArray(e)||C(e)?Lr(()=>{let t=C(e)?e:new Set(e);if(t.size===0){this.clear();return}if(this.data_.size===0){t.forEach(e=>this.add(e));return}for(let e of this.data_.values())t.has(this.dehanceValue_(e))||this.delete(e);t.forEach(e=>this.add(e))}):e!=null&&n(41,e),this}toJSON(){return Array.from(this)}toString(){return`[object ObservableSet]`}[Symbol.iterator](){return this.values()}get[Symbol.toStringTag](){return`Set`}},yi=b(`ObservableSet`,vi);function bi(e){return e[Symbol.toStringTag]=`SetIterator`,Ii(e)}let xi=Object.create(null),Si=`remove`;var L=class{constructor(e,t=new Map,r,i=He){this.target_=void 0,this.values_=void 0,this.name_=void 0,this.defaultAnnotation_=void 0,this.keysAtom_=void 0,this.changeListeners_=void 0,this.interceptors_=void 0,this.proxy_=void 0,this.isPlainObject_=void 0,this.appliedAnnotations_=void 0,this.pendingKeys_=void 0,this.lazyComputedKeys_=void 0,this.lazyObservableKeys_=void 0,this.target_=e,this.values_=t,this.name_=r,this.defaultAnnotation_=i,this.keysAtom_=new ae(`${this.name_}.keys`),this.isPlainObject_=g(this.target_),Ri(this.defaultAnnotation_)||n(`defaultAnnotation must be valid annotation`),this.appliedAnnotations_={}}getObservablePropValue_(e){return(this.values_.get(e)??this.materializeLazyComputed_(e)??this.materializeLazyObservable_(e)).get()}materializeLazyComputed_(e){let t=this.lazyComputedKeys_?.get(e);if(!t)return;this.lazyComputedKeys_.delete(e),this.lazyComputedKeys_.size===0&&(this.lazyComputedKeys_=void 0);let n=t();return this.values_.set(e,n),n}materializeLazyObservable_(e){let t=this.lazyObservableKeys_?.get(e);if(!t)return;this.lazyObservableKeys_.delete(e),this.lazyObservableKeys_.size===0&&(this.lazyObservableKeys_=void 0);let n=t();return this.values_.set(e,n),n}setObservablePropValue_(e,t){let n=this.values_.get(e)??this.materializeLazyComputed_(e)??this.materializeLazyObservable_(e);if(n instanceof Ot)return n.set(t),!0;if(Wr(this)){let n=Kr(this,{type:ti,object:this.proxy_||this.target_,name:e,newValue:t});if(!n)return null;t=n.newValue}if(t=n.prepareNewValue_(t),t!==P.UNCHANGED){let r=qr(this),i=vn(),a=r||i?{type:ti,observableKind:`object`,debugObjectName:this.name_,object:this.proxy_||this.target_,oldValue:n.value_,name:e,newValue:t}:null;i&&bn(a),n.setNewValue_(t),r&&Yr(this,a),i&&Sn()}return!0}get_(e){return P.trackingDerivation&&!T(this.target_,e)&&this.has_(e),this.target_[e]}set_(e,t,n=!1){return T(this.target_,e)?this.values_.has(e)?this.setObservablePropValue_(e,t):n?Reflect.set(this.target_,e,t):(this.target_[e]=t,!0):this.extend_(e,{value:t,enumerable:!0,writable:!0,configurable:!0},this.defaultAnnotation_,n)}has_(e){if(!P.trackingDerivation)return e in this.target_;this.pendingKeys_||=new Map;let t=this.pendingKeys_.get(e);return t||(t=new Et(e in this.target_,me,`${this.name_}.${te(e)}?`,!1),this.pendingKeys_.set(e,t)),t.get()}extend_(e,t,n,r=!1){if(n===!0&&(n=this.defaultAnnotation_),n===!1)return this.defineProperty_(e,t,r);Ei(this,n,e);let i=n.extend_(this,e,t,r);return i&&Ti(this,n,e),i}defineProperty_(e,t,n=!1){Pt(this.keysAtom_);try{nn();let i=this.delete_(e);if(!i)return i;if(Wr(this)){let n=Kr(this,{object:this.proxy_||this.target_,name:e,type:`add`,newValue:t.value});if(!n)return null;let{newValue:i}=n;t.value!==i&&(t=r({},t,{value:i}))}if(n){if(!Reflect.defineProperty(this.target_,e,t))return!1}else a(this.target_,e,t);this.notifyPropertyAddition_(e,t.value)}finally{rn()}return!0}defineObservableProperty_(e,t,n,r=!1){Pt(this.keysAtom_);try{nn();let i=this.delete_(e);if(!i)return i;if(Wr(this)){let n=Kr(this,{object:this.proxy_||this.target_,name:e,type:`add`,newValue:t});if(!n)return null;t=n.newValue}let o=Ci(e),s={configurable:P.safeDescriptors?this.isPlainObject_:!0,enumerable:!0,get:o.get,set:o.set};if(r){if(!Reflect.defineProperty(this.target_,e,s))return!1}else a(this.target_,e,s);let c=new Et(t,n,`${this.name_}.${e.toString()}`,!1);this.values_.set(e,c),this.notifyPropertyAddition_(e,c.value_)}finally{rn()}return!0}defineComputedProperty_(e,t,n=!1){Pt(this.keysAtom_);try{nn();let r=this.delete_(e);if(!r)return r;if(Wr(this)&&!Kr(this,{object:this.proxy_||this.target_,name:e,type:`add`,newValue:void 0}))return null;t.name||=`${this.name_}.${e.toString()}`,t.context=this.proxy_||this.target_;let i=Ci(e),o={configurable:P.safeDescriptors?this.isPlainObject_:!0,enumerable:!1,get:i.get,set:i.set};if(n){if(!Reflect.defineProperty(this.target_,e,o))return!1}else a(this.target_,e,o);this.values_.set(e,new Ot(t)),this.notifyPropertyAddition_(e,void 0)}finally{rn()}return!0}delete_(e,t=!1){if(Pt(this.keysAtom_),!T(this.target_,e))return!0;if(Wr(this)&&!Kr(this,{object:this.proxy_||this.target_,name:e,type:Si}))return null;try{var n;nn();let r=qr(this),a=vn(),o=this.values_.get(e),s;if(!o&&(r||a)&&(s=i(this.target_,e)?.value),t){if(!Reflect.deleteProperty(this.target_,e))return!1}else delete this.target_[e];if(delete this.appliedAnnotations_[e],o&&(this.values_.delete(e),o instanceof Et&&(s=o.value_),cn(o)),this.keysAtom_.reportChanged(),(n=this.pendingKeys_)==null||(n=n.get(e))==null||n.set(e in this.target_),r||a){let t={type:Si,observableKind:`object`,object:this.proxy_||this.target_,debugObjectName:this.name_,oldValue:s,name:e};a&&bn(t),r&&Yr(this,t),a&&Sn()}}finally{rn()}return!0}notifyPropertyAddition_(e,t){var n;let r=qr(this),i=vn();if(r||i){let n=r||i?{type:`add`,observableKind:`object`,debugObjectName:this.name_,object:this.proxy_||this.target_,name:e,newValue:t}:null;i&&bn(n),r&&Yr(this,n),i&&Sn()}(n=this.pendingKeys_)==null||(n=n.get(e))==null||n.set(!0),this.keysAtom_.reportChanged()}ownKeys_(){return this.keysAtom_.reportObserved(),ee(this.target_)}keys_(){return this.keysAtom_.reportObserved(),Object.keys(this.target_)}};function R(e,t){if(t&&wi(e)&&n(`Options can't be provided for already observable objects.`),T(e,O))return Oi(e)instanceof L||n(`Cannot convert '${ki(e)}' into observable object:\nThe target is already observable of different type.\nExtending builtins is not supported.`),e;Object.isExtensible(e)||n(`Cannot make the designated object observable; it is not extensible`);let r=t?.name??`${g(e)?`ObservableObject`:e.constructor.name}@${u()}`;return v(e,O,new L(e,new Map,String(r),rt(t))),e}let z=b(`ObservableObjectAdministration`,L);function Ci(e){return xi[e]||(xi[e]={get(){return this[O].getObservablePropValue_(e)},set(t){return this[O].setObservablePropValue_(e,t)}})}function wi(e){return h(e)?z(e[O]):!1}function Ti(e,t,n){e.appliedAnnotations_[n]=t}function Ei(e,t,r){if(Ri(t)||n(`Cannot annotate '${e.name_}.${r.toString()}': Invalid annotation.`),!ve(t)&&T(e.appliedAnnotations_,r)){let i=`${e.name_}.${r.toString()}`,a=e.appliedAnnotations_[r].annotationType_,o=t.annotationType_;n(`Cannot apply '${o}' to '${i}':\nThe field is already annotated with '${a}'.\nRe-annotating fields is not allowed.\nUse 'override' annotation for methods overridden by subclass.`)}}function Di(e,t){if(typeof e==`object`&&e){if(ui(e))return t!==void 0&&n(23),e[O].atom_;if(yi(e))return e.atom_;if(mi(e)){if(t===void 0)return e.keysAtom_;let r=e.data_.get(t)||e.hasMap_.get(t);return r||n(25,t,ki(e)),r}if(wi(e)){if(!t)return n(26);let r=e[O],i=r.values_.get(t)??r.materializeLazyComputed_(t)??r.materializeLazyObservable_(t);return i||n(27,t,ki(e)),i}if(oe(e)||kt(e)||gn(e))return e}else if(p(e)&&gn(e[O]))return e[O];n(28)}function Oi(e,t){if(e||n(29),t!==void 0)return Oi(Di(e,t));if(oe(e)||kt(e)||gn(e)||mi(e)||yi(e))return e;if(e[O])return e[O];n(24,e)}function ki(e,t){let n;if(t!==void 0)n=Di(e,t);else if(Ln(e))return e.name;else n=wi(e)||mi(e)||yi(e)?Oi(e):Di(e);return n.name_}function Ai(e){let t=Vt(),n=wt(!0);nn();try{return e()}finally{rn(),Tt(n),Ht(t)}}let ji=o.toString;function Mi(e,t,n=-1){return Ni(e,t,n)}function Ni(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;let a=typeof e;if(a!==`function`&&a!==`object`&&typeof t!=`object`)return!1;let o=ji.call(e);if(o!==ji.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=Pi(e),t=Pi(t);let s=o===`[object Array]`;if(!s){if(typeof e!=`object`||typeof t!=`object`)return!1;let n=e.constructor,r=t.constructor;if(n!==r&&!(p(n)&&n instanceof n&&p(r)&&r instanceof r)&&`constructor`in e&&`constructor`in t)return!1}if(n===0)return!1;n<0&&(n=-1),r||=[],i||=[];let c=r.length;for(;c--;)if(r[c]===e)return i[c]===t;if(r.push(e),i.push(t),s){if(c=e.length,c!==t.length)return!1;for(;c--;)if(!Ni(e[c],t[c],n-1,r,i))return!1}else{let a=Object.keys(e),o=a.length;if(Object.keys(t).length!==o)return!1;for(let s=0;s<o;s++){let o=a[s];if(!(T(t,o)&&Ni(e[o],t[o],n-1,r,i)))return!1}}return r.pop(),i.pop(),!0}function Pi(e){return ui(e)?e.slice():x(e)||mi(e)||C(e)||yi(e)?Array.from(e.entries()):e}let Fi=globalThis.Iterator?.prototype||{};function Ii(e){return e[Symbol.iterator]=Li,r(Object.create(Fi),e)}function Li(){return this}function Ri(e){return e instanceof Object&&typeof e.annotationType_==`string`&&p(e.make_)&&p(e.extend_)}{let e=globalThis;[`Symbol`,`Map`,`Set`,`Proxy`].forEach(t=>{e[t]===void 0&&n(`MobX requires global '${t}' to be available or polyfilled`)})}typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__==`object`&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:Cn,extras:{getDebugName:ki},$mobx:O}),e.$mobx=O,e.FlowCancellationError=tr,e.ObservableMap=pi,e.ObservableSet=vi,e.Reaction=dn,e._allowStateChanges=Ct,e._allowStateChangesInsideComputed=In,e._allowStateReadsEnd=Ut,e._allowStateReadsStart=M,e._autoAction=Nn,e._autoActionBound=Fn,e._endAction=St,e._getAdministration=Oi,e._getGlobalState=Yt,e._interceptReads=dr,e._isComputingDerivation=Nt,e._resetGlobalState=Xt,e._startAction=xt,e.action=Mn,e.actionBound=Pn,e.autorun=Rn,e.compareDefault=de,e.compareIdentity=ce,e.compareShallow=ue,e.compareStructural=le,e.computed=j,e.computedStruct=mt,e.configure=qn,e.createAtom=se,e.defineProperty=Or,e.entries=Cr,e.extendObservable=Jn,e.flow=or,e.flowBound=sr,e.flowResult=lr,e.get=Dr,e.getAtom=Di,e.getDebugName=ki,e.getDependencyTree=Yn,e.getObserverTree=Zn,e.has=Er,e.intercept=fr,e.isAction=Ln,e.isBoxedObservable=Dt,e.isComputed=gr,e.isComputedProp=_r,e.isFlow=ur,e.isFlowCancellationError=nr,e.isObservable=yr,e.isObservableArray=ui,e.isObservableMap=mi,e.isObservableObject=wi,e.isObservableProp=br,e.isObservableSet=yi,e.keys=xr,e.makeAutoObservable=Qr,e.makeObservable=Xr,e.observable=A,e.observableDeep=lt,e.observableRef=st,e.observableShallow=ct,e.observableStruct=ut,e.observe=Ar,e.onBecomeObserved=Un,e.onBecomeUnobserved=Wn,e.onReactionError=fn,e.override=_e,e.ownKeys=kr,e.reaction=Vn,e.remove=Tr,e.runInAction=In,e.set=wr,e.spy=Cn,e.toJS=Ir,e.transaction=Lr,e.untracked=Bt,e.values=Sr,e.when=Rr})),Vv=we(((e,t)=>{process.env.NODE_ENV===`production`?t.exports=zv():t.exports=Bv()}))();function Hv(e){if(Array.isArray(e))return Object.freeze(e.map(Hv));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]=Hv(r);return Object.freeze(t)}return e}function Uv(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 Wv(e){return typeof e==`string`?e:String(e)}function Gv(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 Kv(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")`)}var qv=class extends Error{constructor(e,t){super(t),this.variable=e}};function Jv(e){return e instanceof qv||e instanceof Error&&e.cause!==void 0&&Jv(e.cause)}var Yv=class extends Error{name=`TemplateError`;kind=`EvalError`;pos;source;constructor(e,t,n={}){super(e,{cause:n.cause}),this.pos=t,this.source=n.source}get sourceSnippet(){return this.source?iy(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}},Xv=class extends Yv{name=`ParseError`;kind=`ParseError`;expected;found;constructor(e,t,n={}){super(e,t,n),this.expected=n.expected,this.found=n.found}},Zv=class extends Yv{name=`EvalError`;kind=`EvalError`},Qv=class extends Zv{name=`FuncNotFoundError`;kind=`FuncNotFoundError`;funcName;suggestions;constructor(e,t,n={}){let r=ay(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}},$v=class extends Zv{name=`ArgCountError`;kind=`ArgCountError`;funcName;accepted;got;constructor(e,t,n,r,i={}){let a=t.minimum===t.maximum?`${t.minimum}`:`at least ${t.minimum}`;super(`wrong number of args for ${e}: want ${a} got ${n}`,r,i),this.funcName=e,this.accepted=t,this.got=n}},ey=class extends Zv{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}},ty=class extends ey{constructor(e,t,n,r,i={}){super(e,t,`integer`,String(n),r,i),this.message=Number.isInteger(Number(n))?`integer out of range: ${String(n)}`:`expected integer; found ${String(n)}`}},ny=class extends Zv{name=`MissingFieldError`;kind=`MissingFieldError`;path;constructor(e,t,n={}){super(`field "${e.join(`.`)}" not found on receiver`,t,n),this.path=e}},ry=class extends Zv{name=`FailError`;kind=`FailError`;constructor(e,t={line:0,column:0,offset:0},n={}){super(e,t,n)}};function iy(e,t){let n=e.split(`
|
|
53
|
+
`?[t+1,0]:[t,n+Co(e)],a+=Co(e),{glyph:e,cell:r}})}})}function Tf(e){return[e.underline,e.underline2,e.strike,e.overline,e.frame,e.encircle].some(e=>e===!0)}function Ef(e,t,n,r){let i=r.backgroundColor.hex,a,o=()=>t().flatMap(({look:e,glyphs:t})=>{if(e===void 0)return[];let n=e.pair.bg.hex!==i||Tf(e.style);return t.flatMap(({glyph:e,cell:t})=>t!==void 0&&(e.trim()!==``||n)?[t]:[])}),s=e.flatMap(({segment:e,look:t})=>t!==void 0&&e.text.trim()!==``&&!Hl(t.style.anchor,Yu)?[t.pair]:[]),c=[...new Map(s.map(e=>[`${e.fg.hex}/${e.bg.hex}/${e.terminal.fg}/${e.terminal.bg}/${e.reverse}`,e])).values()],l=e=>c.flatMap(t=>t.terminal[e]?[]:[t[e].hex]);return{cells:()=>a??=o(),pairs:c,colors:new Set([...l(`fg`),...l(`bg`)]),fills:new Set(l(`bg`)),depth:n,theme:r}}function Df(e,...t){let n=new Set(t),r=e=>Zu(e.anchor,n),i=({fg:e,bg:t})=>e||t,a=e=>({...e,cells:()=>e.cells().filter(e=>i(r(e)))});return t=>Ml.map(e(a(t)),e=>(t,n)=>{let a=r(n);if(!i(a))return t;let o=e(t,n);return{fg:a.fg?o.fg:t.fg,bg:a.bg?o.bg:t.bg}})}function Of(e,t){return t?{fg:e.bg,bg:e.fg}:e}function kf(e,t,n,r){let i=t.bg.compositeOver(Yo),a=t.fg.compositeOver(i);return{fg:H.matchMove(e.fg,a,n,r,!0),bg:H.matchMove(e.bg,i,n,r,!1)}}function Af(e,t){return jf(e.color,t.color,!0)&&jf(e.bgcolor,t.bgcolor,!1)}function jf(e,t,n){return e===t||Mf(e,n)===Mf(t,n)}function Mf(e,t){return e?.getAnsiCodes(t).join(`;`)??``}function Nf(e,t){return Pf(e.fg,t.fg)&&Pf(e.bg,t.bg)}function Pf(e,t){return e.red===t.red&&e.green===t.green&&e.blue===t.blue&&e.alpha===t.alpha}const Ff=(()=>{let e=[151,160,137,91,90,15,131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23,190,6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33,88,237,149,56,87,174,20,125,136,171,168,68,175,74,165,71,134,139,48,27,166,77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,55,46,245,40,244,102,143,54,65,25,63,161,1,216,80,73,209,76,132,187,208,89,18,169,200,196,135,130,116,188,159,86,164,100,109,198,173,186,3,64,52,217,226,250,124,123,5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42,223,183,170,213,119,248,152,2,44,154,163,70,221,153,101,155,167,43,172,9,129,22,39,253,19,98,108,110,79,113,224,232,178,185,112,104,218,246,97,228,251,34,242,193,238,210,144,12,191,179,162,241,81,51,145,235,249,14,239,107,49,192,214,31,181,199,106,157,184,84,204,176,115,121,50,45,127,4,150,254,138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180];return[...e,...e]})(),If=e=>e*e*e*(e*(e*6-15)+10),Lf=(e,t,n)=>e+n*(t-e);function Rf(e,t,n,r){let i=e&15,a=i<8?t:n,o=i<4?n:i===12||i===14?t:r;return(i&1?-a:a)+(i&2?-o:o)}function zf(e,t,n){let r=Math.floor(e),i=Math.floor(t),a=Math.floor(n),o=r&255,s=i&255,c=a&255;e-=r,t-=i,n-=a;let l=If(e),u=If(t),d=If(n),f=Ff[o]+s,p=Ff[f]+c,m=Ff[f+1]+c,h=Ff[o+1]+s,g=Ff[h]+c,_=Ff[h+1]+c;return Lf(Lf(Lf(Rf(Ff[p],e,t,n),Rf(Ff[g],e-1,t,n),l),Lf(Rf(Ff[m],e,t-1,n),Rf(Ff[_],e-1,t-1,n),l),u),Lf(Lf(Rf(Ff[p+1],e,t,n-1),Rf(Ff[g+1],e-1,t,n-1),l),Lf(Rf(Ff[m+1],e,t-1,n-1),Rf(Ff[_+1],e-1,t-1,n-1),l),u),d)}function Bf(e,t,n,r){let i=0,a=1,o=0;for(let s=0;s<r;s++){let r=2**s;i+=a*zf(e*r,t*r,n*r),o+=a,a/=2}return i/o}function Vf(e,t){let n=Math.sin(e*12.9898+t*78.233)*43758.5453;return n-Math.floor(n)}function Hf(e,t,n){let r=Math.min(1,Math.max(0,(n-e)/(t-e)));return r*r*(3-2*r)}const Uf=Array.from({length:48},(e,t)=>(t+1)/48);function Wf(e,t){return Math.min(Zo(e.fg,e.bg),4.5)-(t===V.TRUECOLOR?.01:0)}const Gf=[`fg`,`bg`];function Kf({pairs:e,depth:t,theme:n},r,i){let a=(e,t)=>e.terminal[t]?void 0:e[t].hex,o=new Map(e.flatMap(e=>Gf.flatMap(t=>{let n=a(e,t);return n===void 0?[]:[[n,e[t]]]}))),s=new Map([...r].filter(e=>!o.has(e)).map(e=>[e,1])),c=e=>ac.fromRgba(o.get(e)).l;for(let l of[...r].filter(e=>o.has(e)).sort((e,t)=>c(t)-c(e))){let r=e.flatMap(e=>{let t=Gf.find(t=>a(e,t)===l);if(t===void 0)return[];let n=a(e,t===`fg`?`bg`:`fg`);return[[e,t,n===void 0?0:s.get(n)??0]]}),o=e=>r.every(([r,a,o])=>{let s=Wf(r,t),c=(t,n)=>$f(i,r[t],(t===a?e:o)*n);return Uf.every(e=>{let i=xf.shows(r,{fg:c(`fg`,e),bg:c(`bg`,e)},t,n);return Zo(i.fg,i.bg)>=s})}),[c,u]=o(1)?[1,1]:[0,1];for(let e=0;e<20&&u-c>.001;e++){let e=(c+u)/2;[c,u]=o(e)?[e,u]:[c,e]}s.set(l,c)}return s}function qf(e,t){let n=new WeakMap;return Zf(Xf(e,r=>{let i=t??r.colors,a=[Jf(r),`|`,...i].join(` `),o=n.get(r.theme)??new _o;return n.set(r.theme,o),o.get(a,()=>Kf(r,i,e.touch))}))}function Jf({depth:e,pairs:t}){return[e,...t.map(Yf)].join(` `)}function Yf({fg:e,bg:t,terminal:n,reverse:r}){return`${e.hex}/${t.hex}/${n.fg}/${n.bg}/${r}`}function Xf(e,t){return n=>{let r=t(n);return Ml.continuous(t=>{let i=e.field(t,n);return({fg:t,bg:n},a)=>{let o=Math.round(rp(i(a))*48)/48,s=(t,n)=>$f(e.touch,t,(n?0:r.get(t.hex)??0)*o);return{fg:s(t,a.terminal.fg),bg:s(n,a.terminal.bg)}}})}}function Zf(e){return t=>Qf(t.depth)?Ml.constant(e=>e):e(t)}function Qf(e){switch(e){case V.DEFAULT:case V.STANDARD:case V.WINDOWS:return!0;case V.EIGHT_BIT:case V.TRUECOLOR:return!1}}function $f(e,t,n){return n===0?t:e(t,n)}function ep(e){if(!(Number.isFinite(e.seconds)&&e.seconds>0))throw RangeError(`curve: seconds must be a positive number of seconds, got ${e.seconds}`);if(!(e.swing>=0&&e.swing<=1))throw RangeError(`curve: swing must be in [0, 1], got ${e.swing}`)}const tp={shimmer:{seconds:109,ease:bl.linear,swing:.9},pulse:{seconds:43,ease:bl.linear,swing:.85},sparkle:{seconds:139,ease:bl.linear,swing:.95},wheel:{seconds:907,ease:bl.linear,swing:1},fade:{seconds:20,ease:bl[`ease-in-out`],swing:1},dissolve:{seconds:30,ease:bl[`ease-in-out`],swing:1}},np={sun:new B(255,228,176),firefly:new B(222,245,140)},rp=e=>Math.min(1,Math.max(0,e));function ip(e,t,n){if(!(n>=0&&n<=1))throw RangeError(`blend: w must be in [0, 1]; got ${n}`);let r=Math.PI/180,i=(1-n)*e.c*Math.cos(e.h*r)+n*t.c*Math.cos(t.h*r),a=(1-n)*e.c*Math.sin(e.h*r)+n*t.c*Math.sin(t.h*r);return new ac((1-n)*e.l+n*t.l,Math.hypot(i,a),Math.atan2(a,i)/r,e.alpha)}function ap(e){let t=ac.fromRgba(e);return(e,n)=>{let r=ac.fromRgba(e);return ip(r,new ac(Math.max(r.l,t.l),t.c,t.h,t.alpha),n).toRgba()}}const op=(e,t)=>t*e[e.length-1][0];function sp(e,t,n){let r=t/n,i=e.findIndex(([e])=>r<e);if(!(r>0)||i<0)return 0;let[a,o]=i===0?[0,0]:e[i-1],[s,c]=e[i];return n*(o+(c-o)*(1-Math.cos(Math.PI*(r-a)/(s-a)))/2)}function cp(e,t,n){let r=op(e,n),i=t=>{let r=0;for(let i=0;i<24;i++)r+=sp(e,(i+.5)/24*t,n);return r*t};return i(Math.min(Math.max(t,0),r))/i(r)}const lp=[[.24,1],[.6,0]];function up(e,t,n){ep(e);let r=.9+.2*Vf(n,3.1),i=t=>.1*zf(t/(3*e.seconds),.5,.5+n),a=i(0);return{touch:ap(t),field:t=>{let o=r*t/e.seconds+i(t)-a,s=Math.floor(o),c=.7+.3*Hf(-.5,.5,zf(s*.37,2.1,n)),l=.5-.5*Math.cos(2*Math.PI*(o-s)),u=e.swing*e.ease(c*l);return()=>u}}}const dp=e=>Math.abs(e)>=1?0:(1-e*e)**3;function fp(e,t,n,r){ep(e);let i=e.seconds,a=i/2,o=e=>Hf(-.4,.4,zf(e/7,3.3,5.5+r)),s=.7,c=.51,l=.4,u=(e,n,u)=>{let d=o(e),f=(Vf(e,7.5+r)<.35+.6*d)*(.3+.7*d*(.6+.4*Vf(e,8.5+r))),p=i*u/80*(c+l*Vf(e,5.5+r)),m=rp((n-(e+s*Vf(e,6.5+r))*a)/p);return{strength:f,centre:m*u-t+.06*u*Math.sin(Math.PI*m)*zf(m,2.7,e+r)}},d=(e,t)=>{let n=s+(c+l)*i*t/80/a,r=Math.floor(e/a),o=[];for(let i=Math.max(0,Math.ceil(r-n));i<=r;i++)o.push(u(i,e,t));return o},f=(e,t,n)=>Math.exp(-((zf(e,t,n)/.8)**2));return{touch:ap(n),field:(n,i)=>{let[a,o]=vp(i.cells().map(e=>e.col)),s=d(n,o-a+1+2*t);return i=>{let o=0;for(let{strength:e,centre:n}of s)o=Math.max(o,e*dp((i.col-a-n)/t));let c=i.row+r,l=.8*zf(i.col*.05,c*.3+1.3,n*.02),u=(f(i.col*.21+l,c*.9,n*.022)*f(i.col*.33+9.1-l,c*.7,n*.018+4.2))**2;return e.swing*e.ease(o*(.1+.6*u))}}}}function pp(e,t,n){ep(e);let r=e.seconds,i=22.1,a=3.1,o=(e,t,i,a,o)=>{let s=e*4.9+t*31.7+.3+n,c=e+.5+.7*zf(e*1.7+.2,.3+t*2.9,.5+n),l=i+Vf(e+t*1013,.7+n)*r,u=Math.floor(l/r),d=Vf(u,s+1)<.15?0:1,f=.5+.5*Vf(u,s+2),p=Vf(u,s+3)*(1-op(lp,f)),m=l/r-u-p;return{x:a+c*8+5*(2*Vf(u,s+4)-1)+5*f*(2*Vf(u,s+5)-1)*cp(lp,m,f)+1.5*zf(s,.1,i*.035),y:o+t*3+.6*zf(s,2.2,i*.035),glow:d*sp(lp,m,f)}};return{touch:ap(t),field:(t,n)=>{let r=n.cells(),[s,c]=vp(r.map(e=>e.col)),[l,u]=vp(r.map(e=>e.row)),d=e=>(e-s)/8-.5,f=e=>(e-l)/3,[p,m]=[Math.ceil(d(s-i)),Math.floor(d(c+i))],[h,g]=[Math.ceil(f(l-a)),Math.floor(f(u+a))],_=Array.from({length:g-h+1},(e,n)=>Array.from({length:m-p+1},(e,r)=>o(p+r,h+n,t,s,l)));return t=>{let n=0,[r,o]=[Math.max(p,Math.ceil(d(t.col-i))),Math.min(m,Math.floor(d(t.col+i)))],[s,c]=[Math.max(h,Math.ceil(f(t.row-a))),Math.min(g,Math.floor(f(t.row+a)))];for(let e=s;e<=c;e++)for(let i=r;i<=o;i++){let r=_[e-h][i-p];n=Math.max(n,r.glow*dp(Math.hypot(t.col-r.x,2*(t.row-r.y))/5))}return e.swing*e.ease(n)}}}}function mp(e,t){return n=>{let r=ac.fromRgba(n.theme.backgroundColor);return Ml.continuous(i=>{let a=e(i,n);return(e,n)=>{let i=t*(1-rp(a(n)));if(i===0)return e;let o=ip(ac.fromRgba(e.bg),r,i);return{fg:ip(ac.fromRgba(e.fg),o,i).toRgba(),bg:o.toRgba()}}})}}function hp(e){let t=new Map;return n=>{let r=`${n.row}:${n.col}`,i=t.get(r)??rp(.5+1.1*Bf(n.col*.09+1.4*zf(n.col*.035,n.row*.2+2.6,e+.5),n.row*.45,e,3));return t.set(r,i),i}}function gp(e,t){let n=t=>t>=e.seconds;return{effect:r=>{let i=t(r);return{at:e=>i.at(e),nextChange:e=>n(e)?1/0:i.nextChange(e),lastChange:t=>n(t)?e.seconds:i.lastChange(t)}},done:n}}function _p(e,t){let n=new Map,r=e=>`${e.row}:${e.col}`;return i=>{let[a,o]=vp(i.map(t)),s=(o>a?.55:0)*e.seconds,c=jl.once(0,e.seconds-s),l=e=>{let n=o>a?rp((t(e)-a)/(o-a)):0;return{along:n,progress:e=>c(e-n*s)}};for(let e of i){let t=r(e);n.set(t,n.get(t)??l(e))}return e=>n.get(r(e))??l(e)}}function vp(e){let t=e[0]??0,n=t;for(let r of e)t=Math.min(t,r),n=Math.max(n,r);return[t,n]}function yp(e,t){ep(e);let n=_p(e,hp(1.7+t));return gp(e,mp((t,r)=>{let i=n(r.cells());return n=>e.ease(i(n).progress(t))},e.swing))}const bp={depth:.4,from:.5,to:.95,maskFrom:.35,maskTo:.75,late:.6};function xp(e,t){ep(e);let n=hp(9.3+t),r=_p(e,hp(4.2+t)),{depth:i,from:a,to:o,maskFrom:s,maskTo:c,late:l}=bp;return gp(e,mp((t,u)=>{let d=r(u.cells());return r=>{let{along:u,progress:f}=d(r),p=e.ease(f(t)),m=rp((p-a)/(o-a)),h=i*Hf(s,c,n(r))*(1-l+l*u)*Math.sin(Math.PI*m)**2;return 1-p+h}},e.swing))}const Sp=[211,337];function Cp(e,t){ep(e);let n=e.seconds,r=e=>Vf(Number.parseInt(e.slice(1),16)*1e-4,17.3+t),i=(e,n)=>zf(n/Sp[0],5.9+97*e,t)+.5*zf(n/Sp[1],2.3+89*e,t+7.1),a=(t,a)=>{let o=r(t);return 360*a/n+e.swing*180*((i(o,a)-i(o,0))/1.5)},o=new WeakMap;return Zf(e=>{let{colors:t,fills:n,depth:r,theme:i}=e,s=(e,n)=>!e&&t.has(n.hex),c=(e,t,r)=>n.has(e.hex)||!r?e.hex:t.hex,l=(e,t)=>`${e.hex} ${t}`,u=o.get(i)??new _o;o.set(i,u);let d=u.get(Jf(e),()=>kp(e.pairs,r,(e,t)=>{let n=t===`fg`?`bg`:`fg`;return s(e.terminal[t],e[t])?l(e[t],c(e[t],e[n],s(e.terminal[n],e[n]))):void 0})),f=Mp(r,i);return Ml.continuous(e=>{let t=new Map,n=(t,n)=>{let i=wp(t,a(n,e));return Np(i.looks,t,r===V.TRUECOLOR?i.either.map(Ap):f,d.get(l(t,n))??Ep)},i=(e,r)=>{let i=t.get(l(e,r))??n(e,r);return t.set(l(e,r),i),i};return(e,t)=>{let n={fg:s(t.terminal.fg,e.fg),bg:s(t.terminal.bg,e.bg)},r=(e,t,n,r)=>t?i(e,c(e,n,r)):e;return{fg:r(e.fg,n.fg,e.bg,n.bg),bg:r(e.bg,n.bg,e.fg,n.fg)}}})})}function wp(e,t){if(t===0)return{looks:e,either:[e]};let n=ac.fromRgba(e),r=Xo(e),i=e=>new ac(e,n.c,n.h+t,n.alpha).toRgba(),[a,o]=[0,1];for(let e=0;e<24;e++){let e=(a+o)/2;[a,o]=Xo(i(e))<r?[e,o]:[a,e]}return{looks:i(o),either:[i(a),i(o)]}}const Tp=e=>Math.log(Zo(e,new B(0,0,0))),Ep={lo:-1/0,hi:1/0},Dp={lo:1/0,hi:-1/0},Op=Math.log(1.031);function kp(e,t,n){let r=new Map;for(let i of e.filter(e=>Wf(e,t)>1)){let e=(Math.log(Zo(i.fg,i.bg))-Math.log(Wf(i,t)))/Gf.filter(e=>n(i,e)!==void 0).length;for(let t of Gf){let a=n(i,t);if(a===void 0)continue;let[o,s]=[Tp(i[t]),Tp(i[t===`fg`?`bg`:`fg`])],{lo:c,hi:l}=r.get(a)??Ep;r.set(a,o>=s?{lo:Math.max(c,o-e),hi:l}:{lo:c,hi:Math.min(l,o+e)})}}return new Map([...r].map(([e,{lo:t,hi:n}])=>[e,n-t<Op?Dp:{lo:t,hi:n}]))}const Ap=e=>({color:e,looks:ac.fromRgba(e),stop:Tp(e)}),jp=new WeakMap;function Mp(e,t){let n=H.indexed(e,t),r=jp.get(n)??n.map(([,e])=>Ap(e));return jp.set(n,r),r}function Np(e,t,n,{lo:r,hi:i}){return Pp(e,[Ap(t),...n.filter(({stop:e})=>e>=r&&e<=i)]).color}function Pp(e,t){let n=ac.fromRgba(e),r;for(let e of t){let t=n.deltaE(e.looks);(r===void 0||t<r[1])&&(r=[e,t])}return r?.[0]}const Fp={loops:{shimmer:(e,t=tp.shimmer)=>qf(fp(t,24,np.sun,e.z)),pulse:(e,t=tp.pulse)=>qf(up(t,np.sun,e.z)),sparkle:(e,t=tp.sparkle)=>qf(pp(t,np.firefly,e.z)),wheel:(e,t=tp.wheel)=>Cp(t,e.z)},transitions:{fade:(e,t=tp.fade)=>yp(t,e.z),dissolve:(e,t=tp.dissolve)=>xp(t,e.z)}};var Ip=class{beat;width;_shown;constructor(e){this.beat=Al(e.map(e=>e.seconds));let t=e.map(e=>bf(e.text.copy())),n=t.map(e=>e.cellLength);this.width=Math.max(...n),this._shown=t.map((e,t)=>(e.noWrap=!0,e.overflow=`crop`,e.padRight(this.width-n[t])))}at(e){return this._shown[this.beat.at(e)].copy()}nextChange(e){return this.beat.nextChange(e)}lastChange(e){return this.beat.lastChange(e)}};function Lp(e,t){return e.at(t).copy().stylize(new U({nextChange:e.nextChange(t)}))}function Rp(e,t){let n=[...hu(e,t)],r=0;for(let e of n)r+=e.cellLength;return{segments:n,width:r}}const zp={segments:[],width:0},Bp={left:()=>0,justify:()=>0,center:e=>Math.floor(e/2),right:e=>e};function Vp(e,t){return Bp[e](t)}function Hp(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 Up=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`}contents(){return this.items}*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=>Rp($u(t),e)),o=n=>i?Rp(Qu(i,null,t[n],{index:n}),e):zp,s=n=>i?Rp(Qu(i,t[n],null,{index:n+1}),e):zp,c=(n,r)=>i?Rp(Qu(i,t[n],t[r],{index:r}),e):zp,l=[],u=null,d=r>0?{segments:[new G(` `.repeat(r))],width:r}:zp;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=Vp(p,i),o=Hp(p,r,i,t.itemBlockIndices.length),s=new Map;t.itemBlockIndices.forEach((e,t)=>s.set(e,t)),a>0&&(yield new G(` `.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 G(` `.repeat(e)))}yield*t.blocks[e].segments}yield G.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=Rp(t[i],e).width,o=this.joiner?Rp(Qu(this.joiner,null,t[i],{index:i}),e).width:0,s=this.joiner?Rp(Qu(this.joiner,t[i],null,{index:i+1}),e).width:0;n=Math.max(n,a+o+s),r+=a,i>0&&(r+=this.gap*2,this.joiner&&(r+=Rp(Qu(this.joiner,t[i-1],t[i],{index:i}),e).width))}return this.joiner&&(r+=Rp(Qu(this.joiner,null,t[0],{index:0}),e).width,r+=Rp(Qu(this.joiner,t[t.length-1],null,{index:t.length}),e).width),{minimum:n,maximum:r}}};const Wp=[[0,31],[127,159],[8234,8238],[8294,8303]];function Gp(e){return Wp.some(([t,n])=>e>=t&&e<=n)}function Kp(e){let t=``;for(let n of e)t+=Gp(n.codePointAt(0)??0)?` `:n;return t.replace(/\s+/g,` `).trim()}function qp(e,t){let n=Kp(e),r=``,i=0;for(let e of n){if(i===t)return r.replace(/.$/u,`…`);r+=e,i++}return r}const Jp=`\x1B[38;2;255;255;255m`,Yp=`\x1B[48;2;200;40;40m`,Xp=`\x1B[0m`;function Zp(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 Qp={fg:Zp(Jp),bg:Zp(Yp)},$p={fg:Zp(`\x1B[38;2;0;0;0m`),bg:Zp(`\x1B[48;2;220;160;40m`)},em=new Xl({"strip.separator":`default`,"strip.rail":`default`});function tm(e){return em.resolve(e)}function nm(){let e=new WeakMap;return(t,n,r)=>{let i=e.get(t);i===void 0&&(i=new Map,e.set(t,i));let a=i.get(n);if(a!==void 0)return a;let o=r();return i.set(n,o),o}}const rm=[`primary`,`secondary`,`accent`],im=[`darken-3`,`darken-2`,`darken-1`,`base`,`lighten-1`,`lighten-2`,`lighten-3`],am={"darken-3":`-darken-3`,"darken-2":`-darken-2`,"darken-1":`-darken-1`,base:``,"lighten-1":`-lighten-1`,"lighten-2":`-lighten-2`,"lighten-3":`-lighten-3`,muted:`-muted`},om=(e,t)=>`${e}${am[t]}`,sm=(e,t,n,r)=>Bm(e,n,r),cm=(e,t,n,r)=>Hm(e,Am(e,`text-${t}`),n,r),lm=e=>({tones:[im[e],im[e+2],im[e+1]],text:sm}),um={muted:{tones:[`muted`],text:cm},deepest:lm(0),deeper:lm(1),middle:lm(2),brighter:lm(3),brightest:lm(4)},dm=1/0,fm={accent:{hues:[`secondary`,`accent`],run:dm},duo:{hues:[`primary`,`secondary`],run:dm},mono:{hues:[`primary`],run:dm},alt:{hues:[`secondary`,`accent`],run:3}},pm=e=>e.variation.hues.flatMap(t=>e.shade.tones.map(e=>({hue:t,shade:e}))),mm=e=>{let t=0,n=.5;for(let r=e;r>0;r>>=1,n/=2)t+=n*(r&1);return t},hm=[`van-der-corput`,`golden-angle`,`ends-interleaved`,`monotonic`,`uniform`],gm=e=>typeof e==`string`&&hm.includes(e),_m={"van-der-corput":mm,"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},vm=e=>_m[e??`van-der-corput`];function ym(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 bm=(e,t)=>Math.floor(e*t),xm=(e,t)=>Math.round(e*t)%t;function Sm(e){return e===void 0?0:e.distribution(e.index,e.count)}function Cm(e,t,n){let r=e[n(Sm(t),e.length)];if(r===void 0)throw Error(`vocabularySelect: empty vocabulary`);return r}function wm(e){let t=e.findIndex(e=>e.axis===`cell`),n=t===-1?e:e.slice(0,t);return{row:n.at(-1),cell:e[n.length]}}const Tm=(e,t)=>bm(Sm(t),e.hues.length);function Em(e,t){let{row:n,cell:r}=wm(t);return Dm(e,n,r)}function Dm(e,t,n){let{hues:r,run:i}=e.variation,a=n===void 0?0:Math.floor(n.index/i),o=r[(Tm(e.variation,t)+a)%r.length];if(o===void 0)throw Error(`decorEntryFor: empty variation`);return{hue:o,shade:Cm(e.shade.tones,n,xm)}}function Om(e,t){let{row:n,cell:r}=wm(t),i=r===void 0?[void 0]:Array.from({length:r.count},(e,t)=>({...r,index:t}));return[...new Map(i.map(t=>Dm(e,n,t)).map(e=>[om(e.hue,e.shade),e])).values()].sort((e,t)=>rm.indexOf(e.hue)-rm.indexOf(t.hue)||km.indexOf(e.shade)-km.indexOf(t.shade))}const km=[...im,`muted`];function Am(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}const jm=(e,t)=>Am(e,om(t.hue,t.shade)),Mm=2.2,Nm=(e,t)=>t.map(t=>jm(e,t)),Pm=e=>t=>vc(t,e),Fm=Pm(V.TRUECOLOR);function Im(e,t,n,r){return Lm(e,`${t}|${n.map(e=>e.hex).join(`+`)}|${r}`,()=>Rm(e,t,n,r))}const Lm=nm();function Rm(e,t,n,r){let i=n.map(Fm),a=Am(e,t),o=new B(0,0,0),s=new B(255,255,255),c=(e,t)=>ac.fromRgba(a).mixAxes(ac.fromRgba(e),{l:t,c:0,h:0,alpha:0}).toRgba(),l=e=>Array.from({length:12},(t,n)=>c(e,(n+1)/12)),u=l(o),d=[a,...l(s).flatMap((e,t)=>[e,u[t]])],f=e=>{let t=Pm(e),n=i.map(t);return e=>Math.min(1/0,...n.map(n=>Zo(t(e),n)))},p=f(V.TRUECOLOR),m=f(r),h=e=>_c(e,r,(e,t)=>i.every(n=>Zo(e,t(n))>=Mm)),g=e=>p(e)>=2.2&&h(e)!==void 0,_=(e,t)=>{let n=n=>Zo(Fm(n),e)-Zo(Fm(n),t),r=n(a)<0?o:s,i=r===o?1:-1,[l,u]=[0,1];for(let e=0;e<40;e++){let e=(l+u)/2;i*n(c(r,e))>0?u=e:l=e}return[c(r,l),c(r,u)]},v=()=>{let e=[...i].sort((e,t)=>Xo(e)-Xo(t));return e.slice(1).flatMap((t,n)=>_(t,e[n]))},y=d.find(g)??[...d,...v()].reduce((e,t)=>m(t)>m(e)?t:e),b=h(y)??y,x=m(b);return{anchor:y,state:b,short:x>=2.2?null:x}}const zm=4.5;function Bm(e,t,n){return Vm(e,`${t.hex}|${n}`,()=>{let r=hc(t);return Hm(e,[`background`,`foreground`].map(t=>Am(e,t)).reduce((e,t)=>Zo(r,t)<Zo(r,e)?t:e),t,n)})}const Vm=nm();function Hm(e,t,n,r){return Um(e,`${t.hex}|${n.hex}|${r}`,()=>gc(t,n,zm,r))}const Um=nm();function Wm(e,t,n){return t.depth===0?Nm(e,t.ground):Gm(e,t,n)}const Gm=(e,t,n)=>t.depth===0?[]:[nh(e,{...t,depth:t.depth-1},n).plane],Km=(e,{short:t},n)=>t===null?[]:[`theme "${e.name}": no open-trigger colour stands ${Mm}:1 off every cell beside it — the nearest stands ${t.toFixed(2)}:1 as drawn at depth ${V[n]}; another shade or variation clears it`],qm=(e,t,n)=>t>=Zm.triggerPlane?[]:[`theme "${e.name}": an open band's plane stands ΔE ${t.toFixed(3)} off the trigger that opened it as drawn at depth ${V[n]}, under the ${Zm.triggerPlane} that tells them apart; another style clears it`],Jm={base:.42,perDepth:.14,cap:.75},Ym={floor:.12,span:.8};function Xm(e,t){return rm[(rm.indexOf(e)+t)%rm.length]}const Zm={triggerPlane:.1,nestedPlane:.035};function Qm(e,t,n){return $m(e,`${eh(t)}|${n}`,()=>{let r=Im(e,Xm(t.hue,t.depth),Wm(e,t,n),n),{state:i}=r,a=oh(e,t,i,n),o=_c(nh(e,t,n).plane,n,(e,t)=>a.every(n=>n(e,t)));if(o===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 ${V[n]}`);let s=Pm(n);return{state:i,plane:o,shortfalls:n===V.DEFAULT?[]:[...Km(e,r,n),...qm(e,th(s(i),s(o)),n)]}})}const $m=nm(),eh=({hue:e,depth:t,ground:n})=>`${e}|${t}|${n.map(e=>om(e.hue,e.shade)).join(`+`)}`,th=(e,t)=>ac.fromRgba(e).deltaE(ac.fromRgba(t));function nh(e,t,n){return rh(e,`${eh(t)}|${n}`,()=>ih(e,t,n))}const rh=nm();function ih(e,t,n){let{anchor:r}=Im(e,Xm(t.hue,t.depth),Wm(e,t,n),n),i=Math.min(Jm.cap,Jm.base+Jm.perDepth*t.depth),a=(t,n)=>As(r,Am(e,t),n),o=Gm(e,t,n),s=e=>th(Fm(r),Fm(e))>=Zm.triggerPlane&&o.every(t=>th(Fm(t),Fm(e))>=Zm.nestedPlane),c=a(`background`,i);return{state:r,plane:[c,a(`foreground`,i),a(`background`,Jm.cap),a(`foreground`,Jm.cap),...ah.toSorted((e,t)=>Math.abs(e-i)-Math.abs(t-i)).flatMap(e=>[a(`background`,e),a(`foreground`,e)])].find(s)??c}}const ah=Array.from({length:12},(e,t)=>(t+1)/12);function oh(e,t,n,r){let{hue:i,depth:a,ground:o}=t,s=t=>nh(e,{hue:i,depth:t,ground:o},r).state,c=t=>nh(e,{hue:i,depth:t,ground:o},r).plane,l=c(a),u=(e,t)=>th(Fm(l),Fm(t))>=e?e:0,d=Im(e,Xm(i,a+1),Wm(e,{hue:i,depth:a+1,ground:o},r),r),f=Zo(Fm(l),Fm(d.anchor))>=2.2?Mm:0,p=(e,t)=>(n,r)=>th(n,r(e))>=t;return[p(n,u(Zm.triggerPlane,s(a))),(e,t)=>Zo(e,t(d.state))>=f,...a>0?[p(Qm(e,{hue:i,depth:a-1,ground:o},r).plane,u(Zm.nestedPlane,c(a-1)))]:[]]}function sh(e,t,n,r){let i=Qm(e,t,r),a=nh(e,t,r),o=e=>As(a.plane,a.state,e),s=Ym.floor+Ym.span*ym(n),c=Ym.floor+Ym.span/2,l=(e,t)=>e.hex!==t(i.plane).hex&&e.hex!==t(i.state).hex;for(let e=0;e<=12;e++){let t=_c(o(s+(c-s)*e/12),r,l);if(t!==void 0)return t}return o(s)}const ch=e=>({kind:`bar`,decor:e,address:[]}),lh=(e,t)=>({...e,address:[...e.address,t]}),uh=e=>({kind:`band`,band:e,address:[]});function dh(e,t,n){switch(t.kind){case`bar`:{let{decor:r,address:i}=t,a=Em(r,i),o=jm(e,a),s;return{tint:o,text:r.shade.text(e,a.hue,o,n),disclosure:{hue:`accent`,depth:0,get ground(){return s??=Om(r,i)}}}}case`band`:{let{band:r,address:i}=t,a=sh(e,r,i,n);return{tint:a,text:Bm(e,a,n),disclosure:{...r,depth:r.depth+1}}}}}const fh=new Map([[`dark`,`textual-dark`],[`light`,`textual-light`]]);function ph(e){let t=typeof e==`string`?fh.get(e):void 0;return t===void 0?``:` — "${e}" was retired; write "${t}", the same palette`}const mh=`textual-dark`;function hh(e,t,n,r,i){let a=t===null?null:i(t);return e??a??n??r}function gh(){return zc()}function _h(){return[`bar`,...gh()]}let vh;function yh(e){return vh??=new Set(_h()),vh.has(e)}function bh(e,t,n,r,i){let a=e=>Object.prototype.hasOwnProperty.call(i,e)?e:null;return hh(e===void 0?null:a(e),t,a(n??r),r,a)}const xh=[`style`,`palette`,`effect`];function Sh(e){return e!==void 0&&e.includes(`{{`)}function Ch(e,t,n,r,i){let a=Sh(n)?{kind:`expression`,source:n}:i(n??r.name);return hh(e===void 0?null:i(e),t,a,r,i)}function wh(e,t){return e.kind===`decided`?e:t(e.source)}const Th=`none`;function Eh(e,t){let n=t[e];return n===void 0?null:{kind:`decided`,name:e,value:n}}function Dh(e,t){return Eh(e,t)??Eh(`none`,t)??{kind:`decided`,name:`none`,value:Js}}function Oh(e,t,n,r){return Ch(e,t,n,Dh(Th,r),e=>Eh(e,r))}const kh=`none`,Ah={style:Th,palette:mh,effect:kh};function jh(e,t,n){return`${e} rendered "${Ah[t]}": ${n}`}const Mh=Object.freeze([kh,...Object.keys(Fp.loops)]),Nh=Object.freeze([`bar`,...Mh]);function Ph(e){let t=Mh.find(t=>t===e);return t===void 0?null:{kind:`decided`,name:e,value:t}}function Fh(e){return Ph(e)??{kind:`decided`,name:`none`,value:`none`}}function Ih(e,t,n){return Ch(e,t,n,Fh(kh),Ph)}const Lh=Object.freeze(Object.keys(af));function Rh(e){return Lh.includes(e)}const zh=[`powerline`,`capsule`,`plain`];function Bh(e){return zh.includes(e)}function Vh(e,t,n){return hh(e,t,n,`powerline`,e=>Rh(e)?e:null)}const Hh=[`truecolor`,`256`,`ansi`,`none`];function Uh(e){return us(e)??V.DEFAULT}const Wh=Object.keys(fm);function Gh(e){return Wh.includes(e)}function Kh(e,t,n){return hh(e,t,n,`accent`,e=>Gh(e)?e:null)}const qh=Object.keys(um);function Jh(e){return qh.includes(e)}function Yh(e,t,n){return hh(e,t,n,`middle`,e=>Jh(e)?e:null)}const Xh=`true`,Zh=`false`,Qh=[Xh,Zh],$h={min:0,max:16};function eg(e){return e===`true`?!0:e===`false`?!1:null}function tg(e,t){let n=Number(e);return Number.isInteger(n)&&String(n)===e&&n>=t.min&&n<=t.max?n:null}function ng(e){return tg(e,$h)}function rg(e,t,n){return hh(e,t,n,!0,eg)}function ig(e,t,n){return hh(e,t,n,!0,eg)}function ag(e,t,n){return hh(e,t,n,!1,eg)}function og(e,t,n){return hh(e,t,n,1,ng)}const sg={kind:`still`},cg=Symbol(`bar`);function lg(e){return e.name!==kh}function ug(e,t){return n=>Ml.map(Ml.all(t.map(({t,effect:r})=>Bl.run(Bl.play(e-t),r(n)))),e=>(t,n)=>e.reduce((e,t)=>t(e,n),t))}const dg=Jc;function fg(e,t){let n=new js(t,dg.foregroundColor,dg.ansiColors,dg.palette);return t=>e({...t,theme:n})}function pg(e,t){return n=>Df(()=>e(n),...t)(n)}function mg(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619)>>>0;return t/4294967296}const hg=4096;var gg=class{inForce=null;placements=new Map;made=new Map;drawn=null;frame={effect:kh,t:0,made:0,reused:0,own:[],basis:`off`,revision:0,fades:[],leaves:[]};constructor(e){this.key=e}lastFrame(){return this.frame}get heldCount(){let e=[...this.drawn?.placements.values()??[]].filter(({passage:e})=>e!==null).length;return[...this.made.values()].reduce((e,t)=>e+t.size,e)}motion(e,t,n){let r=this.inForce?.name===e?this.inForce:{name:e,since:t},i={scope:cg,name:e,t:t-r.since},a=this.placements,o=new Map,s=this.made,c=new Map,l=[],u=this.drawn,d=n.transitions?u!==null&&u.source.config===n.source.config&&u.source.preset===n.source.preset&&u.source.revision===n.source.revision&&u.source.width===n.source.width?`compared`:`fresh`:`off`,f=d===`compared`?u.placements:null,p=new Map,m=[],h=[],g={effect:e,t:i.t,made:0,reused:0,own:l,basis:d,revision:n.source.revision,fades:m,leaves:h},_=(e,n,{ground:r})=>{let i=Fp.transitions[e]({z:mg(`${this.key}@${n}`)*hg});return{name:e,since:t,transition:{effect:fg(i.effect,r),done:e=>i.done(e)}}},v=({since:e,transition:n})=>n.done(t-e),y=(e,t,n)=>({drawing:t,passage:f===null?null:n===void 0||n.passage?.name===`dissolve`?_(`fade`,e,t):n.passage!==null&&!v(n.passage)?n.passage:null}),b=(e,t)=>{if(t===void 0||t.drawing.own.length===0)return;if(t.passage?.name===`dissolve`)return v(t.passage)?void 0:t;let r={...t.drawing,own:t.drawing.own.map(n.hold)};return{drawing:r,passage:_(`dissolve`,e,r)}},x=(e,r)=>{if(p.has(e))throw Error(`placement "${e}" was reached twice in one frame`);let i=f?.get(e),{drawing:a,deeper:o}=n.returned(e,r),s=a===null?b(e,i):y(e,a,i);return s===void 0?r:(p.set(e,s),s.passage!==null&&(s.passage.name===`fade`?m:h).push({placement:e,t:t-s.passage.since}),a===null?[...s.drawing.own,...o]:r)},S=(e,n)=>{let r=o.get(e)??a.get(e),i=r?.name===n?r:{name:n,since:t},s=t-i.since;return o.has(e)||(o.set(e,i),l.push({placement:e,effect:n,t:s})),{scope:e,name:n,t:s}},C=(e,t)=>{let n=c.get(e)??new Map;c.set(e,n);let r=n.get(t.scope);if(r!==void 0)return r.effect;let i=s.get(e)?.get(t.scope),a=i?.name===t.name,o=mg(t.scope===cg?e:`${e}@${t.scope}`),l=a?i.effect:Fp.loops[t.name]({z:o*hg});return g[a?`reused`:`made`]++,n.set(t.scope,{name:t.name,effect:l}),l},w=e=>{let t=new Map;for(let{owner:n,placement:r}of e){let e=r.effect===`bar`?i:S(r.id,r.effect),a=t.get(e.scope);a===void 0?t.set(e.scope,{...e,owners:[n]}):a.owners.push(n)}return[...t.values()]},ee=e=>{let n=new Map;for(let{owner:t,placement:r}of e){let e=n.get(r.id);e===void 0?n.set(r.id,[t]):e.push(t)}return[...n].flatMap(([e,n])=>{let r=p.get(e)?.passage??null;return r===null?[]:[{t:t-r.since,effect:Df(r.transition.effect,...n)}]})};return{placed:d===`off`?(e,t)=>t:x,row:(e,t)=>{let n=(t.some(e=>e.placement.effect!==`bar`)?w(t):[{...i,owners:void 0}]).filter(lg),r=ee(t);if(n.length===0&&r.length===0)return sg;let a=`${this.key}#${e}`;return{kind:`moving`,wrap:e=>new xf(e,ug(i.t,[...n.map(e=>{let t=C(a,e);return{t:e.t,effect:e.owners===void 0?t:pg(t,e.owners)}}),...r]),{t:i.t,key:a,theme:dg})}},drawn:()=>{this.inForce=r,this.placements=o,this.made=c,this.drawn=d===`off`?null:{source:n.source,placements:p},this.frame=g}}}},_g=class{sessions=new Map;constructor(e=256){this.maxSessions=e}of(e){let t=this.sessions.get(e)??new gg(e);this.sessions.delete(e),this.sessions.set(e,t);for(let e of this.sessions.keys()){if(this.sessions.size<=this.maxSessions)break;this.sessions.delete(e)}return t}getStats(){let e=0;for(let t of this.sessions.values())e+=t.heldCount;return{sessions:this.sessions.size,effects:e}}};function vg(e,t){let n=ls(t.colorSystem),r=[...hu(e,{maxWidth:t.width??80,isTerminal:!1,asciiOnly:!1,theme:em,colorSystem:n.colorSystem,onStyleError:e=>{throw e}})];return{text:sf(r,n),moves:Number.isFinite(G.nextChange(r))}}const yg=new Map;function bg(e){let t=yg.get(e);if(t!==void 0)return t;let n=t=>{let n=t.seam.map(t=>`cap`in t?t:{...t,glyph:e});return{seam:n,divider:n}},{seam:r,caps:i}=af.plain,a=new Dd({glyph:n(r.glyph),ascii:r.ascii},i);return yg.set(e,a),a}function xg(e,t){return e===`plain`&&t!==void 0?bg(t):af[e]}const Sg=new Map;function Cg(e){let t=JSON.stringify([e.endcaps,e.separator??null]),n=Sg.get(t);if(n!==void 0)return n;let r=xg(e.endcaps,e.separator),i=e=>new K(`x`,{end:``,overflow:`ignore`,style:new U({bgcolor:e})}),a=e=>new K(vg(new ed(e,r),{colorSystem:null}).text.replace(/\n$/,``)).cellLength,o=a([i(`#101010`)]),s={chrome:o-1,seam:a([i(`#101010`),i(`#202020`)])-o-1};return Sg.set(t,s),s}function wg(e){return Cg(e).chrome}function Tg(e){return Cg(e).seam}const Eg=/[\u{E000}-\u{F8FF}\u{F0000}-\u{FFFFD}\u{100000}-\u{10FFFD}]/gu;function Dg(e){return[...new Set(e.match(Eg)??[])].join(``)}function Og(e){let t=xg(e.endcaps,e.separator),n=e=>new K(`x`,{end:``,style:new U({bgcolor:e})});return Dg(vg(new ed([n(`#101010`),n(`#202020`),n(`#202020`)],t),{colorSystem:null}).text)}function kg(e,t,n=sg){if(e.length===0)return{text:``,moves:!1};let r=xg(t.endcaps,t.separator),i=t.wrap&&Number.isFinite(t.width),a={colorSystem:t.colorCompatibility,...i?{width:t.width}:{}},o=i?new Up([...e],{joiner:r}):new ed([...e],r),s=vg(n.kind===`still`?o:n.wrap(o),a);if(!s.text.endsWith(`
|
|
54
|
+
`))throw Error(`drawStripCells: rich-js strip output did not end its last line`);return{text:s.text.slice(0,-1),moves:s.moves}}function Ag(e,t){return kg(e,t).text}function jg(e){return Math.min(20,e??20)}const Mg={heading:`ERROR`,glyph:`⚠`,colors:Qp},Ng={heading:`WARNING`,glyph:`⚠`,colors:$p},Pg={heading:`UPDATE`,glyph:`⬆`,colors:$p};function Fg(e,t){return{text:Kp(e),link:t}}function Ig(e,t,n){let[r,...i]=[Lg(e,Mg,Rn),t,Lg(n,Ng,zn)].flat();return r===void 0?null:{channels:[r,...i]}}function Lg(e,t,n){let r=sr([{verb:n,args:[e]}]),[i,...a]=e.split(/\r\n|\r|\n/).map(e=>Fg(e,r)).filter(e=>e.text!==``).map(e=>[e]);return i===void 0?[]:[{severity:t,message:e,lines:[i,...a]}]}function Rg(e){return e.channels.map(e=>`${e.severity.heading}\n${e.message}\n`).join(`
|
|
55
|
+
`)}function zg(e,t,n,r){if(t===null)return e;let i=Bg(r),a=t.channels.flatMap(e=>Vg(e,i)),o=n.failedConfigFile!==null||a.length>r.rowCap,s=a.slice(0,r.rowCap-Number(o)),c=o?[Hg(t,n,a.length-s.length,i)]:[],l=[...s,...c].join(`
|
|
56
|
+
`);return e?`${l}\n${e}`:l}function Bg(e){return{endcaps:`plain`,separator:``,width:e.width,wrap:!0,padding:0,colorCompatibility:e.colorCompatibility}}function Vg(e,t){let n=new U({bgcolor:e.severity.colors.bg,color:e.severity.colors.fg}),r=wo(Math.max(2,t.width-1)),i=(e,t)=>new K(`${e} `,{style:t,end:``,overflow:`ignore`});return e.lines.flatMap((a,o)=>Ag([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=>ko(e,r)).map(e=>i(e,t))})],t).split(`
|
|
57
|
+
`))}function Hg(e,t,n,r){let{colors:i}=e.channels[0].severity,{fullText:o,failedConfigFile:s}=t,c=new U({bgcolor:i.bg,color:i.fg}),l=(e,t)=>new K(e,{style:t,end:``,overflow:`ignore`}),u=n>0?[l(`${n} more rows · `,c),o.kind===`file`?l(`open full text`,c.withLink(a(o.path).href)):l(`full text unavailable: ${Kp(o.reason)}`,c)]:[],d=s===null?[]:[l(`${u.length>0?` · `:``}open `,c),l(Kp(s),c.withLink(a(s).href))],f=[l(`↳ `,c),...u,...d.slice(0,-1)],p=f.reduce((e,t)=>e+t.cellLength,0),m=d.slice(-1).map(e=>e.truncate(Math.max(1,r.width-p),{mode:`middle`})),h=K.fromFragments([...f,...m]).truncate(r.width);return h.overflow=`ignore`,Ag([h],r)}const Ug=e=>!e.startsWith(`.`)&&!e.endsWith(`~`);function Wg(e,t){return t.isSymbolicLink()?Buffer.from(s.readlinkSync(e)):s.readFileSync(e)}function Gg(e,t,n=Ug){return s.readdirSync(t).filter(n).sort().flatMap(n=>{let r=v.join(t,n),i=s.lstatSync(r,{throwIfNoEntry:!1});return i===void 0?[]:i.isDirectory()?Gg(e,r):[[v.relative(e,r).split(v.sep).join(`/`),Wg(r,i)]]})}function Kg(e){let t=ce.createHash(`sha256`);for(let[n,r]of e)t.update(n).update(`\0`).update(r).update(`\0`);return t.digest(`hex`)}function qg(e){return Kg(Gg(e,e))}const Jg=[`Cargo.toml`,`Cargo.lock`,`src`];function Yg(e){return Kg(Gg(e,e,e=>Jg.includes(e)))}const Xg=e=>e.slice(0,7);function Zg(e){let t=v.dirname(v.dirname(e));return s.existsSync(v.join(t,`src`))?t:null}function Qg(){let e=$g();if(e===null)throw Error("this bundle carries no source digest (build via `pnpm build`, which stamps it)");return{version:Lt,digest:e}}function $g(){return`395bc94f0ada446e3b758885ed841a01348cfeb6f096cc729d4fa90dc69d2289`}function e_(e){let t=JSON.parse(s.readFileSync(v.join(e,`package.json`),`utf8`)),n=typeof t==`object`&&t?t.version:void 0;if(typeof n!=`string`)throw Error(`${v.join(e,`package.json`)} has no version string`);return n}function t_(e,t){try{let n=Zg(i(e));if(n===null)return{kind:`not-source-checkout`};let r=t(),a=qg(v.join(n,`src`));return a===r.digest?{kind:`current`,root:n,stamp:r}:{kind:`stale`,root:n,source:{version:e_(n),digest:a},running:r}}catch(e){return{kind:`unchecked`,reason:e.message}}}var q=class extends Error{constructor(e){super(e),this.name=`BadVerbArgs`}};const n_=new Map;function r_(e){let t=a_(e);if(t===null)throw Error(`Palette "${e}" did not resolve in the theme registry — allowed names and the registry are inconsistent`);return t}function i_(e,t){return e===`bar`?t:r_(e)}function a_(e){let t=n_.get(e);if(t!==void 0)return t;let n=Bc(e);return n===null?null:(n_.set(e,n),n)}function o_(e,t){return s_(e,`${t.hueShift} ${t.chromaScale} ${t.lightnessScale} ${t.lightnessShift}`,()=>Qc(e,t))}const s_=nm();function c_(e){let t=a_(e);return t===null?null:{kind:`decided`,name:e,value:t}}function l_(e,t,n){let r=c_(e);return r===null?(n(jh(t,`palette`,`"${e}" names no installed theme${ph(e)}`)),d_()):r}function u_(e,t,n){return Ch(e,t,n,d_(),c_)}function d_(){return{kind:`decided`,name:mh,value:r_(mh)}}const f_=[`vertical`,`horizontal`],p_={vertical:`row`,horizontal:`cell`};function m_(e){return e.id??e.name}function h_(e){return[...v_(e)].flatMap(e=>e.kind===`segment`?[m_(e)]:[])}function g_(e,t){if(!t.has(e))return e;let n=2;for(;t.has(`${e}-${n}`);)n++;return`${e}-${n}`}function __(e,t){return e.opens===void 0?e:{...e,opens:{...e.opens,body:t(e.opens.body)}}}function*v_(e){yield e;for(let t of S_(e))yield*v_(t)}const y_=(e,t)=>`${e}.children[${t}]`,b_=e=>`${e}.opens.body`;function*x_(e,t){if(yield[e,t],e.kind===`container`)for(let[n,r]of e.children.entries())yield*x_(r,y_(t,n));else e.opens!==void 0&&(yield*x_(e.opens.body,b_(t)))}function S_(e){return e.kind===`container`?e.children:e.opens===void 0?[]:[e.opens.body]}const C_=[`shade`,`variation`,`style`];function w_(e){return e===void 0||`text`in e?`text`:`regex`in e?`regex`:`json`}const T_=[`ttl`,`watch_file`,`depends_on`,`key`,`never`];function E_(e){return e.kind===`file`||e.kind===`shell`}const D_=[`branch`,`sha`,`dirty`,`ahead`,`behind`,`stash`],O_=[`fail`,`ignore`];function k_(e){return e.missingData??`fail`}function*A_(e){for(let[t,n]of Object.entries(e.variables))n.kind===`state`&&(yield[t,n]);for(let[t,n]of Object.entries(e.segments))if(n.vars)for(let[e,r]of Object.entries(n.vars))r.kind===`state`&&(yield[`${t}.${e}`,r])}const j_=`theme`,M_=`effect`,N_=[j_,M_];function P_(e){return{...e.settings,[j_]:{label:j_,domain:`theme`,default:e.palette??`bar`},[M_]:{label:M_,domain:Nh,default:`bar`}}}function F_(e){let t=e?.domain;return typeof t==`object`&&`min`in t?t:void 0}function I_(e,t){return Object.entries(e).flatMap(([n,r])=>{let i=F_(r)?.atLeast;if(i===void 0)return[];let a=t[n],o=t[i];return a>=o?[]:[{setting:n,message:`"${n}" (${a}) is below "${i}" (${o}) — ${r.label} must be at least ${e[i].label}`}]})}function L_(e,t){let{domain:n}=e;return n===`bool`?typeof t==`boolean`:n===`theme`?typeof t==`string`&&yh(t):`min`in n?typeof t==`number`&&Number.isInteger(t)&&t>=n.min&&t<=n.max:typeof t==`string`&&n.includes(t)}function R_(e){return String(e)}function z_(e,t){let{domain:n}=e;if(typeof n==`object`&&`min`in n)return tg(t,n)??void 0;let r=n===`bool`?t===`true`?!0:t===`false`?!1:t:t;return L_(e,r)?r:void 0}function B_(e,t,n,r){let i=e.settings?.[t]??n.default,a=e.drafts?.[t],o=a===void 0?null:r(a);return(o===null?void 0:z_(n,o))??i}function V_(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 H_=[`left`,`center`,`right`],U_=[`right`,`left`,`middle`],W_=/^[A-Za-z_][A-Za-z0-9_]*$/;function G_(e){return`#${e+1}`}const K_={rows:{}};function q_(e){return`rows`in e}function J_(e){return Object.fromEntries(e.map((e,t)=>[G_(t),e]))}function Y_(e){if(e.kind===`container`&&e.direction===`vertical`){let{kind:t,direction:n,children:r,...i}=e;return{...i,rows:J_(r)}}let{when:t,...n}=e;return{...t!==void 0&&{when:t},rows:J_([n])}}function X_(e){let{rows:t,...n}=e;return{kind:`container`,direction:`vertical`,children:Object.values(t),...n}}function Z_(e){return q_(e)?X_(e):e}function*Q_(e,t){if(!q_(e)){yield*x_(e,t);return}yield[X_(e),t];for(let[n,r]of Object.entries(e.rows))yield*x_(r,`${t}.rows.${n}`)}function $_(e,t){return q_(e)?{...t,...e,rows:{...t.rows,...e.rows}}:Y_(e)}function ev(e){if(!q_(e))return!0;let{rows:t,...n}=e;return Object.values(n).some(e=>e!==void 0)||Object.keys(t).length>0}const tv=`default`,nv={};function rv(e){return[...new Set([tv,...Object.keys(e)])]}function iv(e,t,n){return bh(void 0,e,t,tv,n)}function av(e,t){let n={[tv]:nv,...e}[t];if(n===void 0)throw Error(`Preset "${t}" is not declared in this config — effectivePresetName collapses unknown names to "${tv}", which always resolves; a miss here means a raw name reached this function without going through that resolution`);return n}function ov(e,t){let n=av(e.presets,t).root??K_;return{node:X_($_(n,e.root)),path:ev(n)?`presets.${t}.root`:`root`}}function sv(e,t){return{...e.globals,...av(e.presets,t).globals}}const cv=new Map;function lv(e,t,n){cv.set(e,{permanent:!0,resolve:t,paletteOf:n})}lv(`themes`,()=>gh(),e=>r_(e));const uv=`placementThemes`;lv(uv,_h,(e,t)=>i_(e,t.palette)),lv(`endcaps`,()=>Lh),lv(`variations`,()=>Wh),lv(`shades`,()=>qh),lv(`colorCompatibilities`,()=>Hh);function dv(e){return new Map([[`styles`,{members:Object.keys(e.styles),paletteOf:(t,n)=>o_(n.basePalette,e.styles[t])}],[`presets`,{members:rv(e.presets)}]])}function fv(e){return[...new Set([...cv.keys(),...e.keys()])]}function pv(e,t){if(typeof e!=`string`)return{members:e};let n=t.get(e);if(n)return n;let r=cv.get(e);if(r)return{members:r.resolve(),paletteOf:r.paletteOf};throw Error(hv(e,t))}const mv=new Map([[`looks`,`styles`],[`progressions`,`variations`]]);function hv(e,t){let n=mv.get(e);return`unknown option domain "${e}"${n===void 0?``:` — it was renamed "${n}"; write from: "${n}"`} (have: ${fv(t).join(`, `)})`}const gv=/"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|`[^`]*`/g;function*_v(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 vv=`[A-Za-z_]\\w*(?:\\.[A-Za-z_]\\w*)*`,yv=RegExp(`^(?:(\\$)(?:\\.(${vv}))?|\\.(${vv})?)(?=[\\s)]|$)`);function bv(e,t,n){let r=yv.exec(e.trimStart());if(r===null)return null;let[i,a]=r[1]===void 0?[t,r[3]]:[n,r[2]];return i===null?null:a===void 0?i:`${i}${a}.`}const xv=/^(\w+)\b\s*([\s\S]*)$/;function*Sv(e,t){let n=[t];for(let r of _v(e)){let e=r.replace(/^-(?=\s)/,``).trim(),[,i=``,a=``]=xv.exec(e)??[],o=n[n.length-1],s=n.length>1?n[n.length-2]:o;if(i===`end`){n.length>1&&n.pop();continue}if(i===`else`){yield{code:e,dot:s};let r=/^with\b([\s\S]*)$/.exec(a);n[n.length-1]=r===null?s:bv(r[1],s,t);continue}yield{code:e,dot:o},i===`if`&&n.push(o),i===`with`&&n.push(bv(a,o,t)),(i===`range`||i===`define`||i===`block`)&&n.push(null)}}const Cv=/(?<![.$])\btemplate\s+$/;function*wv(e,t,n){let r=0;for(let i of[...e.matchAll(gv)]){let a=i.index+i[0].length;Cv.test(e.slice(r,i.index))&&(yield{name:i[0].slice(1,-1),at:bv(e.slice(a),t,n)}),r=a}}function*Tv(e,t){let n=new Set;function*r(e,i,a,o){for(let{code:s,dot:c}of[...Sv(e,i)]){yield{code:s,dot:c,root:i,via:a};for(let e of[...wv(s,c,i)]){let i=Object.hasOwn(t,e.name)?t[e.name]:void 0,a=`${e.name}\0${e.at??`\0`}`;i===void 0||o.has(e.name)||n.has(a)||(n.add(a),yield*r(i,e.at,e.name,new Set([...o,e.name])))}}}yield*r(e,``,null,new Set)}const Ev=RegExp(`(?<![A-Za-z0-9_)$])(\\$?)\\.(${vv})`,`g`);function*Dv({code:e,dot:t,root:n}){let r=e.replace(gv,``);for(let e of[...r.matchAll(Ev)]){let r=e[1]===`$`?n:t;r!==null&&(yield`${r}${e[2]}`)}}function Ov(e,t){let n=new Map;for(let r of Tv(e,t))for(let e of Dv(r))n.has(e)||n.set(e,r.via);return n}const kv=/(?<![.$])\b(action|picker|menu|carousel|swatches|swatch|themePreview)\s+$/,Av={action:1,picker:2,menu:1,carousel:2,swatch:1,swatches:2,themePreview:1};function*jv(e){let t=0,n=0,r=0,i=`action`;for(let a of[...e.matchAll(gv)]){let o=e.slice(t,a.index),s=kv.exec(o);if(s!==null)n=Av[s[1]],r=0,i=s[1]===`action`?`action`:`options`;else for(let e of o)e===`(`&&r++,e===`)`&&r--,(r<0||e===`|`&&r===0)&&(n=0);n>0&&r===0&&(yield{name:a[0].slice(1,-1),site:i},n--),t=a.index+a[0].length}}function Mv(e,t){let n=new Map;for(let{code:r,via:i}of Tv(e,t))for(let{name:e,site:t}of jv(r)){let r=`${e}\0${i??`\0`}`;n.has(r)||n.set(r,{name:e,site:t,via:i})}return[...n.values()]}function Nv(e,t){return new Set([...Pv(e,t)].filter(e=>Object.hasOwn(t,e)))}function Pv(e,t){let n=new Set;for(let{code:r,dot:i,root:a}of Tv(e,t))for(let{name:e}of wv(r,i,a))n.add(e);return n}function Fv(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 Iv(e){let t=new Set,n=new Set,r=(e,r)=>{t.add(e),Lv(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 Lv(e){return e.kind===`dropped`||(e.kind===`shell`||e.kind===`file`)&&w_(e.parse)===`json`}function Rv(e){let t=v.basename(e),n=v.dirname(e);for(;;){let r=zv(n);if(r!==null)return{dir:r,name:t,leaf:n===v.dirname(e)};t=v.basename(n),n=v.dirname(n)}}function zv(e){try{return s.statSync(e).isDirectory()?s.realpathSync(e):null}catch{return null}}var Bv=we((e=>{function t(e,...t){throw Error(`[MobX] minified error nr: ${e}${t.length?` `+t.map(String).join(`,`):``}. See mobx.js.org/errors`)}function n(e){let t=!1;return function(){if(!t)return t=!0,e.apply(this,arguments)}}function r(e){return typeof e==`function`}function i(e){switch(typeof e){case`string`:case`symbol`:case`number`:return!0}return!1}function a(e){return typeof e==`object`&&!!e}function o(e){if(!a(e))return!1;let t=Object.getPrototypeOf(e);if(t==null)return!0;let n=p(t,`constructor`)&&t.constructor;return typeof n==`function`&&n.toString()===zt}function s(e){let t=e?.constructor;return!!t&&(t.name===`GeneratorFunction`||t.displayName===`GeneratorFunction`)}function c(e,t,n){Ft(e,t,{enumerable:!1,writable:!0,configurable:!0,value:n})}function l(e,t){let n=`isMobX`+e;return t.prototype[n]=!0,function(e){return a(e)&&!0===e[n]}}function u(e){return e!=null&&Object.prototype.toString.call(e)===`[object Map]`}function d(e){return e!=null&&Object.prototype.toString.call(e)===`[object Set]`}function f(e){return e===null?null:typeof e==`object`?``+e:e}function p(e,t){return It.hasOwnProperty.call(e,t)}function m(e,t){return!!(e&t)}function h(e,t,n){return n?e|=t:e&=~t,e}function g(e,t=Bt,n=Bt){let r=new Ut(e);return t!==Bt&&(r.onBOL=new Set([t])),n!==Bt&&(r.onBUOL=new Set([n])),r}function _(e,t){return Ot(e,t)}function v(e,t,n){return e===null||typeof e!=`object`&&typeof e!=`function`||$e(e)?e:Array.isArray(e)?an.array(e,{name:n}):o(e)?an.object(e,void 0,{name:n}):u(e)?an.map(e,{name:n}):d(e)?an.set(e,{name:n}):typeof e!=`function`||He(e)||Xe(e)?e:s(e)?Un(e):Fn(n,e)}function y(e){return e}function b(e,t){return{t:e,i:t,o:x,u:S}}function x(e,t,n,r){var i;return(i=this.i)!=null&&i.bound?this.u(e,t,n,!1)===null?0:1:r===e.h?this.u(e,t,n,!1)===null?0:2:He(n.value)?1:(Ft(r,t,w(e,this,t,n,!1)),2)}function S(e,t,n,r){let i=w(e,this,t,n);return e.l(t,i,r)}function C(e,n,r){let{kind:i,name:a,addInitializer:o}=r,s=e,c=e=>{var t;return _e(s.i?.name??a.toString(),e,(t=s.i?.autoAction)!=null&&t)};return i==`field`?function(e){var t;let n=e;return He(n)||(n=c(n)),(t=s.i)!=null&&t.bound&&(n=n.bind(this),n.isMobxAction=!0),n}:i==`method`?(He(n)||(n=c(n)),(l=s.i)!=null&&l.bound&&o(function(){let e=this,t=e[a].bind(e);t.isMobxAction=!0,e[a]=t}),n):void t(43,s.t,String(a),i);var l}function w(e,t,n,r,i=F.safeDescriptors){var a,o,s;let{value:c}=r;return(a=t.i)!=null&&a.bound&&(c=c.bind(e.v??e.h)),{value:_e(t.i?.name??n.toString(),c,(o=t.i?.autoAction)!=null&&o,(s=t.i)!=null&&s.bound?e.v??e.h:void 0),configurable:!i||e.p,enumerable:!1,writable:!i}}function ee(e,t){return{t:e,i:t,o:te,u:ne}}function te(e,t,n,r){var i;return r===e.h?this.u(e,t,n,!1)===null?0:2:(i=this.i)!=null&&i.bound&&(!p(e.h,t)||!Xe(e.h[t]))&&this.u(e,t,n,!1)===null?0:Xe(n.value)?1:(Ft(r,t,re(e,0,0,n,!1,!1)),2)}function ne(e,t,n,r){let i=re(e,0,0,n,this.i?.bound);return e.l(t,i,r)}function T(e,t,n){var r;let{name:i,addInitializer:a}=n;return Xe(t)||(t=Un(t)),(r=e.i)!=null&&r.bound&&a(function(){let e=this,t=e[i].bind(e);t.isMobXFlow=!0,e[i]=t}),t}function re(e,t,n,r,i,a=F.safeDescriptors){let{value:o}=r;return Xe(o)||(o=Un(o)),i&&(o=o.bind(e.v??e.h),o.isMobXFlow=!0),{value:o,configurable:!a||e.p,enumerable:!1,writable:!a}}function E(e,t){return{t:e,i:t,o:D,u:ie}}function D(e,t,n){return this.u(e,t,n,!1)===null?0:1}function ie(e,t,n,r){return e.m(t,Nt({},this.i,{get:n.get,set:n.set}),r)}function O(e,t,n){function r(e){let n=Nt({},i.i,{get:t,context:e});return n.name||=`ObservableObject.${a.toString()}`,new _n(n)}let i=e,{name:a,addInitializer:o}=n,s;return o(function(){let e=xt(this)[M],n=this,i=e.j.get(a);i instanceof _n&&i.derivation!==t&&e.j.delete(a),(e.O??=new Map).set(a,()=>r(n))}),function(){let e=this[M],n=e.j.get(a);if(n instanceof _n&&n.derivation!==t){let e=s?.get(this);return e||(e=r(this),(s??=new WeakMap).set(this,e)),e.get()}return e._(a)}}function ae(e,t){return{t:e,i:t,o:oe,u:se}}function oe(e,t,n){return this.u(e,t,n,!1)===null?0:1}function se(e,t,n,r){return e.S(t,n.value,this.i?.A??v,r)}function ce(e,t,n){function r(e,t){let n=xt(e)[M];return(n.V??=new Map).set(o,()=>new hn(t,i.i?.A??v,`ObservableObject.${o.toString()}`,!1)),n}let i=e,{kind:a,name:o}=n;if(a===`accessor`)return{get(){return(this[M]??r(this,t.get.call(this)))._(o)},set(e){return(this[M]??r(this,e)).M(o,e)},init(e){return r(this,e),e}}}function le(e){return{t:qt,i:e,o:ue,u:de}}function ue(e,t,n,r){var i,a,o;if(n.get)return ln.o(e,t,n,r);if(n.set){let i=He(n.set)?n.set:_e(t.toString(),n.set);return r===e.h?e.l(t,{configurable:!F.safeDescriptors||e.p,set:i})===null?0:2:(Ft(r,t,{configurable:!0,set:i}),2)}if(r!==e.h&&typeof n.value==`function`)return s(n.value)?((o=this.i)!=null&&o.autoBind?Wn:Un).o(e,t,n,r):((a=this.i)!=null&&a.autoBind?Ln:Fn).o(e,t,n,r);let c=!1===this.i?.deep?en:an;return typeof n.value==`function`&&(i=this.i)!=null&&i.autoBind&&(n.value=n.value.bind(e.v??e.h)),c.o(e,t,n,r)}function de(e,t,n,r){var i;return n.get?ln.u(e,t,n,r):n.set?e.l(t,{configurable:!F.safeDescriptors||e.p,set:_e(t.toString(),n.set)},r):(typeof n.value==`function`&&(i=this.i)!=null&&i.autoBind&&(n.value=n.value.bind(e.v??e.h)),(!1===this.i?.deep?en:an).u(e,t,n,r))}function fe(e,t){return Nt(function(n,r){if(r&&typeof r.kind==`string`)return t(e,n,r)},e)}function pe(e){return e||Jt}function me(e){return fe(e,ce)}function he(e){return!0===e.deep?v:!1===e.deep?y:(t=e.defaultDecorator)&&(n=(r=t.i)?.A)!=null?n:v;var t,n,r}function ge(e){return fe(e,O)}function _e(e,t,n=!1,r){function i(){return ve(0,n,t,r||this,arguments)}return i.isMobxAction=!0,i.toString=()=>t.toString(),pn&&(mn.value=e,Ft(i,`name`,mn)),i}function ve(e,t,n,r,i){let a=ye(0,t);try{return n.apply(r,i)}catch(e){throw a.N=e,e}finally{be(a)}}function ye(e,t){let n=F.trackingDerivation,r=!t||!n;Me();let i=F.allowStateChanges;r&&k();let a={R:r,k:n,C:i,I:F.allowStateReads,P:!1,T:0,B:fn++,D:dn};return dn=a.B,a}function be(e){dn!==e.B&&t(30),dn=e.D,e.N!==void 0&&(F.suppressReactionErrors=!0),Ne(),e.R&&De(e.k),F.suppressReactionErrors=!1}function xe(e,t){let n=function(e){let t=F.allowStateChanges;return F.allowStateChanges=e,t}(e);try{return t()}finally{(function(e){F.allowStateChanges=e})(n)}}function Se(e){return e instanceof yn}function Ce(e){switch(e.K){case 0:return!1;case-1:case 2:return!0;case 1:{let t=k(),n=e.L,r=n.length;for(let i=0;i<r;i++){let r=n[i];if(vn(r)){if(F.disableErrorBoundaries)r.get();else try{r.get()}catch{return De(t),!0}if(e.K===2)return De(t),!0}}return Oe(e),De(t),!1}}}function we(e,t,n){Oe(e),e.$=Array(e.U===0?100:e.L.length),e.W=0,e.U=++F.runId;let r=F.trackingDerivation,i;if(F.trackingDerivation=e,F.inBatch++,!0===F.disableErrorBoundaries)i=t.call(n);else try{i=t.call(n)}catch(e){i=new yn(e)}return F.inBatch--,F.trackingDerivation=r,function(e){let t=e.L,n=e.L=e.$,r=0,i=0,a=e.W;for(let e=0;e<a;e++){let t=n[e];t.diffValue===0&&(t.diffValue=1,i!==e&&(n[i]=t),i++),t.K>r&&(r=t.K)}for(n.length=i,e.$=null,a=t.length;a--;){let n=t[a];n.diffValue===0&&Ae(n,e),n.diffValue=0}for(;i--;){let t=n[i];t.diffValue===1&&(t.diffValue=0,ke(t,e))}r!==0&&(e.K=r,e.q())}(e),i}function Te(e){let t=e.L;e.L=[];let n=t.length;for(;n--;)Ae(t[n],e);e.K=-1}function Ee(e){let t=k();try{return e()}finally{De(t)}}function k(){let e=F.trackingDerivation;return F.trackingDerivation=null,e}function De(e){F.trackingDerivation=e}function Oe(e){if(e.K===0)return;e.K=0;let t=e.L,n=t.length;for(;n--;)t[n].F=0}function ke(e,t){(e.H??=new Set).add(t),e.F>t.K&&(e.F=t.K)}function Ae(e,t){let n=e.H;n&&(n.delete(t),n.size===0&&je(e))}function je(e){!1===e.isPendingUnobservation&&(e.isPendingUnobservation=!0,F.pendingUnobservations.push(e))}function Me(){F.inBatch++}function Ne(){--F.inBatch===0&&(Le(),!F.isRunningUnobservations&&F.pendingUnobservations.length>0&&function(){F.isRunningUnobservations=!0;try{let e=F.pendingUnobservations;for(let t=0;t<e.length;t++){let n=e[t];n.isPendingUnobservation=!1,n.H&&n.H.size!==0||(n.H=null,n.isBeingObserved&&(n.isBeingObserved=!1,n.onBUO()),n instanceof _n&&n.G())}F.pendingUnobservations=[]}finally{F.isRunningUnobservations=!1}}())}function Pe(e){var t;e.isBeingObserved||(e.isBeingObserved=!0,e.onBO(),(t=e.L)==null||t.forEach(Pe))}function Fe(e){let t=F.trackingDerivation;return t===null?((!e.H||e.H.size===0)&&F.inBatch>0&&je(e),!1):(t.U!==e.J&&(e.J=t.U,t.$[t.W++]=e,!e.isBeingObserved&&F.trackingContext&&(e.isBeingObserved=!0,e.onBO())),e.isBeingObserved)}function Ie(e){var t;e.F!==2&&(e.F=2,(t=e.H)==null||t.forEach(e=>{e.K===0&&e.q(),e.K=2}))}function Le(){F.inBatch>0||F.isRunningReactions||En(Re)}function Re(){F.isRunningReactions=!0;let e=F.pendingReactions,t=0;for(;e.length>0;){++t===Tn&&(console.error(`[mobx] cycle in reaction: ${e[0]}`),e.splice(0));let n=e.splice(0);for(let e=0,t=n.length;e<t;e++)n[e].X()}F.isRunningReactions=!1}function ze(e){return fe(e,C)}function Be(e){return function(t,n){return n&&typeof n.kind==`string`?C(e?Mn:An,t,n):r(t)?_e(t.name||`<unnamed action>`,t,e):r(n)?_e(t,n,e):i(t)?ze(b(e?kn:On,{name:t,autoAction:e})):void 0}}function Ve(e){return ve(0,!1,e,this,void 0)}function He(e){return r(e)&&!0===e.isMobxAction}function Ue(e,t=Rt){function n(){e(a)}var r;let i=t?.name??`Autorun`,a;if(t.scheduler||t.delay){let e=We(t),r=!1;a=new wn(i,()=>{r||(r=!0,e(()=>{r=!1,a.isDisposed||a.track(n)}))},t.onError,t.requiresObservable)}else a=new wn(i,function(){this.track(n)},t.onError,t.requiresObservable);return t!=null&&(r=t.signal)!=null&&r.aborted||a.Y(),a.Z(t?.signal)}function We(e){return e.scheduler?e.scheduler:e.delay?t=>setTimeout(t,e.delay):Rn}function Ge(e,t,n,i){let a=typeof i==`function`?wt(t,n):wt(t),o=r(i)?i:n,s=`${e}L`;return a[s]?a[s].add(o):a[s]=new Set([o]),function(){let e=a[s];e&&(e.delete(o),e.size===0&&delete a[s])}}function Ke(e,t,n,r){let i=Ht(t);return Dt(()=>{let t=xt(e,r)[M];Vt(i).forEach(e=>{t.u(e,i[e],!n||!(e in n)||n[e])})}),e}function qe(e){let t={name:e.tt};var n;return e.L&&e.L.length>0&&(t.dependencies=(n=e.L,Array.from(new Set(n))).map(qe)),t}function Je(e){let t={name:e.tt};return function(e){return!!e.H&&e.H.size>0}(e)&&(t.observers=Array.from(function(e){return e.H??new Set}(e),Je)),t}function Ye(e){r(e.cancel)&&e.cancel()}function Xe(e){return!0===e?.isMobXFlow}function Ze(e,t){var n;if(t===void 0)return vn(e);if(!1===Ct(e))return!1;let r=e[M];return(n=r.O)!=null&&n.has(t)?!0:r.j.has(t)?vn(wt(e,t)):!1}function Qe(e,t){if(!e)return!1;if(t!==void 0){if(Ct(e)){var n,r;let i=e[M];return i.j.has(t)||!((n=i.O)==null||!n.has(t))||!((r=i.V)==null||!r.has(t))}return!1}return Ct(e)||!!e[M]||Wt(e)||Dn(e)||vn(e)}function $e(e){return Qe(e)}function et(e){return Ct(e)?e[M].nt():nr(e)||ar(e)?Array.from(e.keys()):vt(e)?e.map((e,t)=>t):void t(5)}function tt(e,n){return Ct(e)?e[M].et(n):nr(e)||ar(e)?e.has(n):vt(e)?n>=0&&n<e.length:void t(10)}function nt(e){if(Ct(e))return e[M].it();t(38)}function rt(e,t,n){if(vn(e)){let r,i=!0;return Ue(()=>{let a=e.get();if(!i||n){let n=k();t({observableKind:`computed`,debugObjectName:e.tt,type:Jn,object:e,newValue:a,oldValue:r}),De(n)}i=!1,r=a})}return n&&t({observableKind:`value`,debugObjectName:e.tt,object:e,type:Jn,newValue:e.rt,oldValue:void 0}),ft(e,t)}function it(e,t,n){return e.set(t,n),n}function at(e,t){if(typeof e!=`object`||!e||e instanceof Date||!$e(e))return e;if(gn(e)||vn(e))return at(e.get(),t);if(t.has(e))return t.get(e);if(vt(e)){let n=it(t,e,Array(e.length));return e.forEach((e,r)=>{n[r]=at(e,t)}),n}if(ar(e)){let n=it(t,e,new Set);return e.forEach(e=>{n.add(at(e,t))}),n}if(nr(e)){let n=it(t,e,new Map);return e.forEach((e,r)=>{n.set(r,at(e,t))}),n}{let n=it(t,e,{});return nt(e).forEach(r=>{It.propertyIsEnumerable.call(e,r)&&(n[r]=at(e[r],t))}),n}}function ot(e,t){Me();try{return e.apply(t)}finally{Ne()}}function st(e,t,n){let r;if(typeof n.timeout==`number`){let e=Error(`WHEN_TIMEOUT`);r=setTimeout(()=>{if(!a[M].isDisposed){if(a(),!n.onError)throw e;n.onError(e)}},n.timeout)}n.name=`When`;let i=_e(`When-effect`,t);var a=Ue(t=>{xe(!1,e)&&(t.dispose(),r&&clearTimeout(r),i())},n);return a}function ct(e){return e[M]}function lt(e){return e.st!==void 0&&e.st.length>0}function ut(e,t){let r=e.st;return r?r.push(t):r=e.st=[t],n(()=>{let e=r.indexOf(t);e!==-1&&r.splice(e,1)})}function A(e,n){let r=k();try{let r=[...e.st||[]];for(let e=0,i=r.length;e<i&&((n=r[e](n))&&!n.type&&t(14),n);e++);return n}finally{De(r)}}function dt(e){return e.ot!==void 0&&e.ot.length>0}function ft(e,t){let r=e.ot;return r?r.push(t):r=e.ot=[t],n(()=>{let e=r.indexOf(t);e!==-1&&r.splice(e,1)})}function pt(e,t){let n=k(),r=e.ot;if(r){r=r.slice();for(let e=0,n=r.length;e<n;e++)r[e](t);De(n)}}function mt(e,n,r){if(!0===r&&(r=e.ut),!1===r)return;n in e.h||t(1,r.t,`${e.tt}.${n.toString()}`);let i=e.h;for(;i&&i!==It;){let t=Pt(i,n);if(t){let a=r.o(e,n,t,i);if(a===0)return;if(a===1)break}i=Object.getPrototypeOf(i)}}function j(e,t){typeof Array.prototype[e]==`function`&&(Zn[e]=t(e))}function ht(e){return function(){let t=this[M];t.ct.reportObserved();let n=t.ht(t.j);return n[e].apply(n,arguments)}}function gt(e){return function(t,n){let r=this[M];return r.ct.reportObserved(),r.ht(r.j)[e]((e,r)=>t.call(n,e,r,this))}}function _t(e){return function(){let t=this[M];t.ct.reportObserved();let n=t.ht(t.j),r=arguments[0];return arguments[0]=(e,t,n)=>r(e,t,n,this),n[e].apply(n,arguments)}}function vt(e){return a(e)&&Qn(e[M])}function yt(e){return e[Symbol.toStringTag]=`MapIterator`,jt(e)}function bt(e){return e[Symbol.toStringTag]=`SetIterator`,jt(e)}function xt(e,t){if(p(e,M))return e;let n=t?.name??`ObservableObject`;return c(e,M,new cr(e,new Map,String(n),function(e){return e?e.defaultDecorator??function(e){let t=!1!==e.deep,n=!!e.autoBind,r=!t|(n?2:0);return P[r]??(P[r]=le({deep:t,autoBind:n}))}(e):void 0}(t))),e}function St(e){return or[e]||(or[e]={get(){return this[M]._(e)},set(t){return this[M].M(e,t)}})}function Ct(e){return!!a(e)&&lr(e[M])}function wt(e,n){if(typeof e==`object`&&e){if(vt(e))return n!==void 0&&t(23),e[M].ct;if(ar(e))return e.ct;if(nr(e)){if(n===void 0)return e.lt;let r=e.ft.get(n)||e.dt.get(n);return r||t(25,n,Et(e)),r}if(Ct(e)){if(!n)return t(26);let r=e[M],i=r.j.get(n)??r.vt(n)??r.bt(n);return i||t(27,n,Et(e)),i}if(Wt(e)||vn(e)||Dn(e))return e}else if(r(e)&&Dn(e[M]))return e[M];t(28)}function Tt(e,n){return e||t(29),n===void 0?Wt(e)||vn(e)||Dn(e)||nr(e)||ar(e)?e:e[M]?e[M]:void t(24,e):Tt(wt(e,n))}function Et(e,t){let n;if(t!==void 0)n=wt(e,t);else{if(He(e))return e.name;n=Ct(e)||nr(e)||ar(e)?Tt(e):wt(e)}return n.tt}function Dt(e){let t=k();Me();try{return e()}finally{Ne(),De(t)}}function Ot(e,t,n=-1){return kt(e,t,n)}function kt(e,t,n,i,a){if(e===t)return e!==0||1/e==1/t;if(e==null||t==null)return!1;if(e!=e)return t!=t;let o=typeof e;if(o!==`function`&&o!==`object`&&typeof t!=`object`)return!1;let s=ur.call(e);if(s!==ur.call(t))return!1;switch(s){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++}e=At(e),t=At(t);let c=s===`[object Array]`;if(!c){if(typeof e!=`object`||typeof t!=`object`)return!1;let n=e.constructor,i=t.constructor;if(n!==i&&!(r(n)&&n instanceof n&&r(i)&&i instanceof i)&&`constructor`in e&&`constructor`in t)return!1}if(n===0)return!1;n<0&&(n=-1),a||=[];let l=(i||=[]).length;for(;l--;)if(i[l]===e)return a[l]===t;if(i.push(e),a.push(t),c){if(l=e.length,l!==t.length)return!1;for(;l--;)if(!kt(e[l],t[l],n-1,i,a))return!1}else{let r=Object.keys(e),o=r.length;if(Object.keys(t).length!==o)return!1;for(let s=0;s<o;s++){let o=r[s];if(!p(t,o)||!kt(e[o],t[o],n-1,i,a))return!1}}return i.pop(),a.pop(),!0}function At(e){return vt(e)?e.slice():u(e)||nr(e)||d(e)||ar(e)?Array.from(e.entries()):e}function jt(e){return e[Symbol.iterator]=Mt,Nt(Object.create(dr),e)}function Mt(){return this}Object.defineProperty(e,`__esModule`,{value:!0});let Nt=Object.assign,Pt=Object.getOwnPropertyDescriptor,Ft=Object.defineProperty,It=Object.prototype,Lt=[];Object.freeze(Lt);let Rt={};Object.freeze(Rt);let zt=Object.toString(),Bt=()=>{},Vt=Reflect.ownKeys,Ht=Object.getOwnPropertyDescriptors,M=Symbol(`mobx administration`);var Ut=class{constructor(e=`Atom`){this.tt=void 0,this.yt=0,this.H=null,this.J=0,this.F=-1,this.onBOL=void 0,this.onBUOL=void 0,this.tt=e}get isBeingObserved(){return m(this.yt,1)}set isBeingObserved(e){this.yt=h(this.yt,1,e)}get isPendingUnobservation(){return m(this.yt,2)}set isPendingUnobservation(e){this.yt=h(this.yt,2,e)}get diffValue(){return+!!m(this.yt,4)}set diffValue(e){this.yt=h(this.yt,4,e===1)}onBO(){this.onBOL&&this.onBOL.forEach(e=>e())}onBUO(){this.onBUOL&&this.onBUOL.forEach(e=>e())}reportObserved(){return Fe(this)}reportChanged(){Me(),Ie(this),Ne()}toString(){return this.tt}};let Wt=l(`Atom`,Ut),Gt=Object.is,Kt={t:`override`,o:function(){return 0},u:function(){t(44,this.t)}},qt=`true`,N=le(),P=[N],Jt={deep:!0,name:void 0,defaultDecorator:void 0};Object.freeze(Jt);let Yt=ae(`observable`),Xt=ae(`observable.ref`,{A:y}),Zt=ae(`observable.shallow`,{A:function(e,t,n){return e==null||Ct(e)||vt(e)||nr(e)||ar(e)?e:Array.isArray(e)?an.array(e,{name:n,deep:!1}):o(e)?an.object(e,void 0,{name:n,deep:!1}):u(e)?an.map(e,{name:n,deep:!1}):d(e)?an.set(e,{name:n,deep:!1}):void 0}}),Qt=ae(`observable.struct`,{A:function(e,t){return Ot(e,t)?t:e}}),$t={box(e,t){let n=pe(t);return new hn(e,he(n),n.name,!0,n.equals)},array(e,t){let n=pe(t);return function(e,t,n=`ObservableArray`,r=!1){return Dt(()=>{let i=new Xn(n,t,r);Ft(i.j,M,{enumerable:!1,writable:!1,configurable:!0,value:i});let a=new Proxy(i.j,Yn);return i.v=a,e&&e.length&&i.wt(0,0,e),a})}(e,he(n),n.name)},map(e,t){let n=pe(t);return new tr(e,he(n),n.name)},set(e,t){let n=pe(t);return new ir(e,he(n),n.name)},object:(e,t,n)=>Dt(()=>Ke(function(e,t){var n;return(n=(e=xt(e,t))[M]).v??(n.v=new Proxy(e,Gn))}({},n),e,t))},en=me(Xt),tn=me(Zt),nn=me(Yt),rn=me(Qt);var an=Nt(function(e,t,n){return t&&typeof t.kind==`string`?ce(Yt,e,t):$e(e)?e:o(e)?an.object(e,t,n):Array.isArray(e)?an.array(e,t):u(e)?an.map(e,t):d(e)?an.set(e,t):typeof e==`object`&&e?e:an.box(e,t)},Yt,$t);let on=`computed`,sn=E(on),cn=ge(E(`computed.struct`,{equals:_})),ln=function(e,t){if(t&&typeof t.kind==`string`)return O(sn,e,t);if(o(e))return ge(E(on,e));let n=o(t)?t:{};return n.get=e,n.name||=e.name||``,new _n(n)};var un;Nt(ln,sn);let dn=0,fn=1,pn=(un=Pt(()=>{},`name`)?.configurable)!=null&&un,mn={value:`action`,configurable:!0,writable:!1,enumerable:!1};var hn=class extends Ut{constructor(e,t,n=`ObservableValue`,r=!0,i=Gt){super(n),this.A=void 0,this.tt=void 0,this.xt=void 0,this.gt=!1,this.st=void 0,this.ot=void 0,this.rt=void 0,this.dehancer=void 0,this.A=t,this.tt=n,this.xt=i,this.rt=t(e,void 0,n)}dehanceValue(e){return this.dehancer===void 0?e:this.dehancer(e)}set(e){(e=this.jt(e))!==F.UNCHANGED&&this.Ot(e)}jt(e){if(lt(this)){let t=A(this,{object:this,type:Jn,newValue:e});if(!t)return F.UNCHANGED;e=t.newValue}return e=this.A(e,this.rt,this.tt),this.xt(this.rt,e)?F.UNCHANGED:e}Ot(e){let t=this.rt;this.rt=e,this.reportChanged(),dt(this)&&pt(this,{type:Jn,object:this,newValue:e,oldValue:t})}get(){return this.reportObserved(),this.dehanceValue(this.rt)}raw(){return this.rt}toJSON(){return this.get()}toString(){return`${this.tt}[${this.rt}]`}valueOf(){return f(this.get())}[Symbol.toPrimitive](){return this.valueOf()}};let gn=l(`ObservableValue`,hn);var _n=class{constructor(e){this.K=-1,this.L=[],this.$=null,this.H=null,this.U=0,this.J=0,this.F=0,this.W=0,this.rt=new yn(null),this.tt=void 0,this._t=void 0,this.yt=0,this.derivation=void 0,this.St=void 0,this.At=void 0,this.xt=void 0,this.Vt=void 0,this.Mt=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.St=_e(`ComputedValue-setter`,e.set)),this.xt=e.equals||Gt,this.At=e.context,this.Vt=e.requiresReaction,this.Mt=!!e.keepAlive}q(){(function(e){var t;e.F===0&&(e.F=1,(t=e.H)==null||t.forEach(e=>{e.K===0&&(e.K=1,e.q())}))})(this)}onBO(){this.onBOL&&this.onBOL.forEach(e=>e())}onBUO(){this.onBUOL&&this.onBUOL.forEach(e=>e())}get isComputing(){return m(this.yt,1)}set isComputing(e){this.yt=h(this.yt,1,e)}get isRunningSetter(){return m(this.yt,2)}set isRunningSetter(e){this.yt=h(this.yt,2,e)}get isBeingObserved(){return m(this.yt,4)}set isBeingObserved(e){this.yt=h(this.yt,4,e)}get isPendingUnobservation(){return m(this.yt,8)}set isPendingUnobservation(e){this.yt=h(this.yt,8,e)}get diffValue(){return+!!m(this.yt,16)}set diffValue(e){this.yt=h(this.yt,16,e===1)}get(){if(this.isComputing&&t(32,this.tt,this.derivation),F.inBatch!==0||this.H&&this.H.size!==0||this.Mt){let e=this.isBeingObserved;if(Fe(this),Ce(this)){let e=F.trackingContext;e||!this.Mt&&!this.isBeingObserved||(F.trackingContext=this),this.trackAndCompute()&&function(e){var t;e.F!==2&&(e.F=2,(t=e.H)==null||t.forEach(t=>{t.K===1?t.K=2:t.K===0&&(e.F=0)}))}(this),F.trackingContext=e}else !e&&this.isBeingObserved&&this.L.forEach(Pe)}else Ce(this)&&(this.Nt(),Me(),this.rt=this.Rt(!1),Ne());let e=this.rt;if(Se(e))throw e.cause;return e}set(e){if(this.St){this.isRunningSetter&&t(33,this.tt),this.isRunningSetter=!0;try{this.St.call(this.At,e)}finally{this.isRunningSetter=!1}}else t(34,this.tt)}trackAndCompute(){let e=this.rt,t=this.K===-1,n=this.Rt(!0),r=t||Se(e)||Se(n)||!this.xt(e,n);return r&&(this.rt=n),r}Rt(e){let t;if(this.isComputing=!0,e)t=we(this,this.derivation,this.At);else if(!0===F.disableErrorBoundaries)t=this.derivation.call(this.At);else try{t=this.derivation.call(this.At)}catch(e){t=new yn(e)}return this.isComputing=!1,t}G(){this.Mt||(Te(this),this.rt=void 0)}Nt(){}toString(){return`${this.tt}[${this.derivation.toString()}]`}valueOf(){return f(this.get())}[Symbol.toPrimitive](){return this.valueOf()}};let vn=l(`ComputedValue`,_n);var yn=class{constructor(e){this.cause=void 0,this.cause=e}};let bn=[`mobxGuid`,`spyListeners`,`enforceActions`,`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`allowStateReads`,`disableErrorBoundaries`,`runId`,`UNCHANGED`];var xn=class{constructor(){this.version=7,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.isRunningUnobservations=!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.safeDescriptors=!0}};let Sn=!0,Cn=!1,F=function(){let e=globalThis;return e.__mobxInstanceCount>0&&!e.__mobxGlobals&&(Sn=!1),e.__mobxGlobals&&e.__mobxGlobals.version!==7&&(Sn=!1),Sn?e.__mobxGlobals?(e.__mobxInstanceCount+=1,e.__mobxGlobals.UNCHANGED||(e.__mobxGlobals.UNCHANGED={}),e.__mobxGlobals):(e.__mobxInstanceCount=1,e.__mobxGlobals=new xn):(setTimeout(()=>{Cn||t(35)},1),new xn)}();var wn=class{constructor(e=`Reaction`,t,n,r){this.tt=void 0,this.Et=void 0,this.kt=void 0,this.Ct=void 0,this.L=[],this.$=[],this.K=-1,this.U=0,this.W=0,this.yt=0,this.It=void 0,this.tt=e,this.Et=t,this.kt=n,this.Ct=r}get isDisposed(){return m(this.yt,1)}set isDisposed(e){this.yt=h(this.yt,1,e)}get isScheduled(){return m(this.yt,2)}set isScheduled(e){this.yt=h(this.yt,2,e)}get isTrackPending(){return m(this.yt,4)}set isTrackPending(e){this.yt=h(this.yt,4,e)}get isRunning(){return m(this.yt,8)}set isRunning(e){this.yt=h(this.yt,8,e)}get diffValue(){return+!!m(this.yt,16)}set diffValue(e){this.yt=h(this.yt,16,e===1)}q(){this.Y()}Y(){this.isScheduled||(this.isScheduled=!0,F.pendingReactions.push(this),Le())}X(){if(!this.isDisposed){Me(),this.isScheduled=!1;let e=F.trackingContext;if(F.trackingContext=this,Ce(this)){this.isTrackPending=!0;try{this.Et()}catch(e){this.Pt(e)}}F.trackingContext=e,Ne()}}track(e){if(this.isDisposed)return;Me(),this.isRunning=!0;let t=F.trackingContext;F.trackingContext=this;let n=we(this,e,void 0);F.trackingContext=t,this.isRunning=!1,this.isTrackPending=!1,this.isDisposed&&Te(this),Se(n)&&this.Pt(n.cause),Ne()}Pt(e){if(this.kt)this.kt(e,this);else{if(F.disableErrorBoundaries)throw e;F.suppressReactionErrors||console.error(`[mobx] uncaught error in '${this}'`,e),F.globalReactionErrorHandlers.forEach(t=>t(e,this))}}dispose(){var e;this.isDisposed||(this.isDisposed=!0,(e=this.It)==null||e.call(this),this.isRunning||(Me(),Te(this),Ne()))}Z(e){let t=()=>this.dispose();return e!=null&&e.addEventListener&&!this.isDisposed&&(e.addEventListener(`abort`,t),this.It=()=>e.removeEventListener==null?void 0:e.removeEventListener(`abort`,t)),t[M]=this,`dispose`in Symbol&&typeof Symbol.dispose==`symbol`&&(t[Symbol.dispose]=t),t}toString(){return`Reaction[${this.tt}]`}};let Tn=100,En=e=>e(),Dn=l(`Reaction`,wn),On=`action`,kn=`autoAction`,An=b(On),jn=b(`action.bound`,{bound:!0}),Mn=b(kn,{autoAction:!0}),Nn=b(`autoAction.bound`,{autoAction:!0,bound:!0}),Pn=Be(!1);Nt(Pn,An);let Fn=Be(!0);Nt(Fn,Mn);let In=ze(jn),Ln=ze(Nn),Rn=e=>e(),zn=`always`;var Bn=class extends Error{constructor(){super(`FLOW_CANCELLED`),Object.setPrototypeOf(this,new.target.prototype),this.name=`FlowCancellationError`}toString(){return`Error: ${this.message}`}};let Vn=ee(`flow`),Hn=ee(`flow.bound`,{bound:!0}),Un=Nt(function(e,t){if(t&&typeof t.kind==`string`)return T(Vn,e,t);let n=e,i=n.name||`flow`,a=function(){let e=arguments,t=Pn(i,n).apply(this,e),a,o,s=new Promise(function(e,n){function s(e){let r;o=void 0;try{r=Pn(i,t.next).call(t,e)}catch(e){return n(e)}l(r)}function c(e){let r;o=void 0;try{r=Pn(i,t.throw).call(t,e)}catch(e){return n(e)}l(r)}function l(t){if(!r(t?.then))return t.done?e(t.value):(o=Promise.resolve(t.value),o.then(s,c));t.then(l,n)}a=n,s(void 0)});return s.cancel=Pn(i,function(){try{o&&Ye(o);let e=t.return(void 0),n=Promise.resolve(e.value);n.then(Bt,Bt),Ye(n),a(new Bn)}catch(e){a(e)}}),s};return a.isMobXFlow=!0,a},Vn),Wn=fe(Hn,T),Gn={has:(e,t)=>ct(e).et(t),get:(e,t)=>ct(e).Tt(t),set(e,t,n){var r;return!!i(t)&&((r=ct(e).Bt(t,n,!0))==null||r)},deleteProperty(e,t){var n;return!!i(t)&&((n=ct(e).Dt(t,!0))==null||n)},defineProperty(e,t,n){var r;return(r=ct(e).l(t,n))==null||r},ownKeys:e=>ct(e).it(),preventExtensions(e){t(13)}},Kn=Symbol(`mobx-keys`),qn=`splice`,Jn=`update`,Yn={get(e,t){let n=e[M];return t===M?n:t===`length`?n.Kt():typeof t!=`string`||isNaN(t)?p(Zn,t)?Zn[t]:e[t]:n.Tt(parseInt(t))},set(e,t,n){let r=e[M];return t===`length`?r.Lt(n):typeof t==`symbol`||isNaN(t)?e[t]=n:r.Bt(parseInt(t),n),!0},preventExtensions(){t(15)}};var Xn=class{constructor(e=`ObservableArray`,t,n){this.$t=void 0,this.ct=void 0,this.j=[],this.st=void 0,this.ot=void 0,this.A=void 0,this.dehancer=void 0,this.v=void 0,this.Ut=0,this.$t=n,this.ct=new Ut(e),this.A=(e,n)=>t(e,n,`ObservableArray[..]`)}Wt(e){return this.dehancer===void 0?e:this.dehancer(e)}ht(e){return this.dehancer!==void 0&&e.length>0?e.map(this.dehancer):e}Kt(){return this.ct.reportObserved(),this.j.length}Lt(e){(!Number.isInteger(e)||e<0)&&t(40,e);let n=this.j.length;if(e!==n)if(e>n){let t=Array.from({length:e-n});this.wt(n,0,t)}else this.wt(e,n-e)}zt(e,n){e!==this.Ut&&t(16),this.Ut+=n}wt(e,t,n){let r=this.j.length;if(e===void 0?e=0:e>r?e=r:e<0&&(e=Math.max(0,r+e)),t=arguments.length===1?r-e:t==null?0:Math.max(0,Math.min(t,r-e)),n===void 0&&(n=Lt),lt(this)){let r=A(this,{object:this.v,type:qn,index:e,removedCount:t,added:n});if(!r)return Lt;t=r.removedCount,n=r.added}n=n.length===0?n:n.map(e=>this.A(e,void 0));let i=this.qt(e,t,n);return t===0&&n.length===0||this.Ft(e,n,i),this.ht(i)}qt(e,t,n){if(n.length<1e4)return this.j.splice(e,t,...n);{let r=this.j.slice(e,e+t),i=this.j.slice(e+t);this.j.length+=n.length-t;for(let t=0;t<n.length;t++)this.j[e+t]=n[t];for(let t=0;t<i.length;t++)this.j[e+n.length+t]=i[t];return r}}Ht(e,t,n){let r=dt(this),i=r?{observableKind:`array`,object:this.v,type:Jn,debugObjectName:this.ct.tt,index:e,newValue:t,oldValue:n}:null;this.ct.reportChanged(),r&&pt(this,i)}Ft(e,t,n){let r=dt(this),i=r?{observableKind:`array`,object:this.v,debugObjectName:this.ct.tt,type:qn,index:e,removed:n,added:t,removedCount:n.length,addedCount:t.length}:null;this.ct.reportChanged(),r&&pt(this,i)}Tt(e){return this.ct.reportObserved(),this.Wt(this.j[e])}Bt(e,t){let n=this.j;if(e<n.length){let r=n[e];if(lt(this)){let n=A(this,{type:Jn,object:this.v,index:e,newValue:t});if(!n)return;t=n.newValue}(t=this.A(t,r))!==r&&(n[e]=t,this.Ht(e,t,r))}else{let r=Array.from({length:e+1-n.length});r[r.length-1]=t,this.wt(n.length,0,r)}}},Zn={clear(){return this.splice(0)},replace(e){let t=this[M];return t.wt(0,t.j.length,e)},toJSON(){return this.slice()},splice(e,t,...n){let r=this[M];switch(arguments.length){case 0:return[];case 1:return r.wt(e);case 2:return r.wt(e,t)}return r.wt(e,t,n)},spliceWithArray(e,t,n){return this[M].wt(e,t,n)},push(...e){let t=this[M];return t.wt(t.j.length,0,e),t.j.length},pop(){return this.splice(Math.max(this[M].j.length-1,0),1)[0]},shift(){return this.splice(0,1)[0]},unshift(...e){let t=this[M];return t.wt(0,0,e),t.j.length},reverse(){return F.trackingDerivation&&t(37,`reverse`),this.replace(this.slice().reverse()),this},sort(){F.trackingDerivation&&t(37,`sort`);let e=this.slice();return e.sort.apply(e,arguments),this.replace(e),this},remove(e){let t=this[M],n=t.ht(t.j).indexOf(e);return n>-1&&(this.splice(n,1),!0)}};j(`at`,ht),j(`concat`,ht),j(`flat`,ht),j(`includes`,ht),j(`indexOf`,ht),j(`join`,ht),j(`lastIndexOf`,ht),j(`slice`,ht),j(`toString`,ht),j(`toLocaleString`,ht),j(`toSorted`,ht),j(`toSpliced`,ht),j(`with`,ht),j(`every`,gt),j(`filter`,gt),j(`find`,gt),j(`findIndex`,gt),j(`findLast`,gt),j(`findLastIndex`,gt),j(`flatMap`,gt),j(`forEach`,gt),j(`map`,gt),j(`some`,gt),j(`toReversed`,gt),j(`reduce`,_t),j(`reduceRight`,_t);let Qn=l(`ObservableArrayAdministration`,Xn),$n={},er=`delete`;var tr=class{constructor(e,t=v,n=`ObservableMap`){this.A=void 0,this.tt=void 0,this[M]=$n,this.ft=void 0,this.dt=void 0,this.lt=void 0,this.st=void 0,this.ot=void 0,this.dehancer=void 0,this.A=t,this.tt=n,Dt(()=>{this.lt=g(`ObservableMap.keys()`),this.ft=new Map,this.dt=new Map,e&&this.merge(e)})}et(e){return this.ft.has(e)}has(e){if(!F.trackingDerivation)return this.et(e);let t=this.dt.get(e);if(!t){let n=t=new hn(this.et(e),y,`ObservableMap.key?`,!1);this.dt.set(e,n),n.onBUOL=new Set([()=>this.dt.delete(e)])}return t.get()}set(e,t){let n=this.et(e);if(lt(this)){let r=A(this,{type:n?Jn:`add`,object:this,newValue:t,name:e});if(!r)return this;t=r.newValue}return n?this.Gt(e,t):this.Jt(e,t),this}delete(e){if(lt(this)&&!A(this,{type:er,object:this,name:e}))return!1;if(this.et(e)){let t=dt(this),n=t?{observableKind:`map`,debugObjectName:this.tt,type:er,object:this,oldValue:this.ft.get(e).rt,name:e}:null;return ot(()=>{var t;this.lt.reportChanged(),(t=this.dt.get(e))==null||t.Ot(!1),this.ft.get(e).Ot(void 0),this.ft.delete(e)}),t&&pt(this,n),!0}return!1}Gt(e,t){let n=this.ft.get(e);if((t=n.jt(t))!==F.UNCHANGED){let r=dt(this),i=r?{observableKind:`map`,debugObjectName:this.tt,type:Jn,object:this,oldValue:n.rt,name:e,newValue:t}:null;n.Ot(t),r&&pt(this,i)}}Jt(e,t){ot(()=>{var n;let r=new hn(t,this.A,`ObservableMap.key`,!1);this.ft.set(e,r),t=r.rt,(n=this.dt.get(e))==null||n.Ot(!0),this.lt.reportChanged()});let n=dt(this);n&&pt(this,n?{observableKind:`map`,debugObjectName:this.tt,type:`add`,object:this,name:e,newValue:t}:null)}get(e){return this.has(e)?this.Wt(this.ft.get(e).get()):this.Wt(void 0)}getOrInsert(e,t){return this.has(e)||this.set(e,t),this.get(e)}getOrInsertComputed(e,t){return this.has(e)||this.set(e,t(e)),this.get(e)}Wt(e){return this.dehancer===void 0?e:this.dehancer(e)}keys(){return this.lt.reportObserved(),this.ft.keys()}values(){let e=this,t=this.keys();return yt({next(){let{done:n,value:r}=t.next();return{done:n,value:n?void 0:e.get(r)}}})}entries(){let e=this,t=this.keys();return yt({next(){let{done:n,value:r}=t.next();return{done:n,value:n?void 0:[r,e.get(r)]}}})}[Symbol.iterator](){return this.entries()}forEach(e,t){for(let[n,r]of this)e.call(t,r,n,this)}merge(e){return nr(e)&&(e=new Map(e)),ot(()=>{o(e)?function(e){let t=Object.keys(e),n=Object.getOwnPropertySymbols(e);return n.length?[...t,...n.filter(t=>It.propertyIsEnumerable.call(e,t))]:t}(e).forEach(t=>this.set(t,e[t])):Array.isArray(e)?e.forEach(([e,t])=>this.set(e,t)):u(e)?(function(e){return Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(e)))===null}(e)||t(19,e),e.forEach((e,t)=>this.set(t,e))):e!=null&&t(20,e)}),this}clear(){ot(()=>{Ee(()=>{for(let e of this.keys())this.delete(e)})})}replace(e){return ot(()=>{let n=function(e){if(u(e)||nr(e))return e;if(Array.isArray(e))return new Map(e);if(o(e)){let t=new Map;for(let n in e)t.set(n,e[n]);return t}return t(21,e)}(e),r=new Map,i=!1;for(let e of this.ft.keys())if(!n.has(e))if(this.delete(e))i=!0;else{let t=this.ft.get(e);r.set(e,t)}for(let[e,t]of n.entries()){let n=this.ft.has(e);if(this.set(e,t),this.ft.has(e)){let t=this.ft.get(e);r.set(e,t),n||(i=!0)}}if(!i)if(this.ft.size!==r.size)this.lt.reportChanged();else{let e=this.ft.keys(),t=r.keys(),n=e.next(),i=t.next();for(;!n.done;){if(n.value!==i.value){this.lt.reportChanged();break}n=e.next(),i=t.next()}}this.ft=r}),this}get size(){return this.lt.reportObserved(),this.ft.size}toString(){return`[object ObservableMap]`}toJSON(){return Array.from(this)}get[Symbol.toStringTag](){return`Map`}},nr=l(`ObservableMap`,tr);let rr={};var ir=class{constructor(e,t=v,n=`ObservableSet`){this.tt=void 0,this[M]=rr,this.ft=new Set,this.ct=void 0,this.ot=void 0,this.st=void 0,this.dehancer=void 0,this.A=void 0,this.tt=n,this.A=(e,r)=>t(e,r,n),Dt(()=>{this.ct=g(this.tt),e&&this.replace(e)})}Wt(e){return this.dehancer===void 0?e:this.dehancer(e)}clear(){ot(()=>{Ee(()=>{for(let e of this.ft.values())this.delete(e)})})}forEach(e,t){for(let n of this)e.call(t,n,n,this)}get size(){return this.ct.reportObserved(),this.ft.size}add(e){if(lt(this)){let t=A(this,{type:`add`,object:this,newValue:e});if(!t)return this;e=t.newValue}if(!this.has(e)){ot(()=>{e=this.A(e,void 0),this.ft.add(e),this.ct.reportChanged()});let t=dt(this);t&&pt(this,t?{observableKind:`set`,debugObjectName:this.tt,type:`add`,object:this,newValue:e}:null)}return this}delete(e){if(lt(this)&&!A(this,{type:er,object:this,oldValue:e}))return!1;if(this.has(e)){let t=dt(this),n=t?{observableKind:`set`,debugObjectName:this.tt,type:er,object:this,oldValue:e}:null;return ot(()=>{this.ct.reportChanged(),this.ft.delete(e)}),t&&pt(this,n),!0}return!1}has(e){return this.ct.reportObserved(),this.ft.has(this.Wt(e))}entries(){let e=this.values();return bt({next(){let{value:t,done:n}=e.next();return n?{value:void 0,done:n}:{value:[t,t],done:n}}})}keys(){return this.values()}values(){this.ct.reportObserved();let e=this,t=this.ft.values();return bt({next(){let{value:n,done:r}=t.next();return r?{value:void 0,done:r}:{value:e.Wt(n),done:r}}})}intersection(e){return new Set(this).intersection(e)}union(e){return new Set(this).union(e)}difference(e){return new Set(this).difference(e)}symmetricDifference(e){return new Set(this).symmetricDifference(e)}isSubsetOf(e){return new Set(this).isSubsetOf(e)}isSupersetOf(e){return new Set(this).isSupersetOf(e)}isDisjointFrom(e){return new Set(this).isDisjointFrom(e)}replace(e){return ar(e)&&(e=new Set(e)),Array.isArray(e)||d(e)?ot(()=>{let t=d(e)?e:new Set(e);if(t.size!==0)if(this.ft.size!==0){for(let e of this.ft.values())t.has(this.Wt(e))||this.delete(e);t.forEach(e=>this.add(e))}else t.forEach(e=>this.add(e));else this.clear()}):e!=null&&t(41,e),this}toJSON(){return Array.from(this)}toString(){return`[object ObservableSet]`}[Symbol.iterator](){return this.values()}get[Symbol.toStringTag](){return`Set`}},ar=l(`ObservableSet`,ir);let or=Object.create(null),sr=`remove`;var cr=class{constructor(e,t=new Map,n,r=N){this.h=void 0,this.j=void 0,this.tt=void 0,this.ut=void 0,this.lt=void 0,this.ot=void 0,this.st=void 0,this.v=void 0,this.p=void 0,this.Xt=void 0,this.Qt=void 0,this.O=void 0,this.V=void 0,this.h=e,this.j=t,this.tt=n,this.ut=r,this.lt=new Ut(`ObservableObject.keys`),this.p=o(this.h)}_(e){return(this.j.get(e)??this.vt(e)??this.bt(e)).get()}vt(e){let t=this.O?.get(e);if(!t)return;this.O.delete(e),this.O.size===0&&(this.O=void 0);let n=t();return this.j.set(e,n),n}bt(e){let t=this.V?.get(e);if(!t)return;this.V.delete(e),this.V.size===0&&(this.V=void 0);let n=t();return this.j.set(e,n),n}M(e,t){let n=this.j.get(e)??this.vt(e)??this.bt(e);if(n instanceof _n)return n.set(t),!0;if(lt(this)){let n=A(this,{type:Jn,object:this.v||this.h,name:e,newValue:t});if(!n)return null;t=n.newValue}if((t=n.jt(t))!==F.UNCHANGED){let r=dt(this),i=r?{type:Jn,observableKind:`object`,debugObjectName:this.tt,object:this.v||this.h,oldValue:n.rt,name:e,newValue:t}:null;n.Ot(t),r&&pt(this,i)}return!0}Tt(e){return F.trackingDerivation&&!p(this.h,e)&&this.et(e),this.h[e]}Bt(e,t,n=!1){return p(this.h,e)?this.j.has(e)?this.M(e,t):n?Reflect.set(this.h,e,t):(this.h[e]=t,!0):this.u(e,{value:t,enumerable:!0,writable:!0,configurable:!0},this.ut,n)}et(e){if(!F.trackingDerivation)return e in this.h;this.Qt||=new Map;let t=this.Qt.get(e);return t||(t=new hn(e in this.h,y,`ObservableObject.key?`,!1),this.Qt.set(e,t)),t.get()}u(e,t,n,r=!1){return!0===n&&(n=this.ut),!1===n?this.l(e,t,r):n.u(this,e,t,r)}l(e,t,n=!1){try{Me();let r=this.Dt(e);if(!r)return r;if(lt(this)){let n=A(this,{object:this.v||this.h,name:e,type:`add`,newValue:t.value});if(!n)return null;let{newValue:r}=n;t.value!==r&&(t=Nt({},t,{value:r}))}if(n){if(!Reflect.defineProperty(this.h,e,t))return!1}else Ft(this.h,e,t);this.Yt(e,t.value)}finally{Ne()}return!0}S(e,t,n,r=!1){try{Me();let i=this.Dt(e);if(!i)return i;if(lt(this)){let n=A(this,{object:this.v||this.h,name:e,type:`add`,newValue:t});if(!n)return null;t=n.newValue}let a=St(e),o={configurable:!F.safeDescriptors||this.p,enumerable:!0,get:a.get,set:a.set};if(r){if(!Reflect.defineProperty(this.h,e,o))return!1}else Ft(this.h,e,o);let s=new hn(t,n,`ObservableObject.key`,!1);this.j.set(e,s),this.Yt(e,s.rt)}finally{Ne()}return!0}m(e,t,n=!1){try{Me();let r=this.Dt(e);if(!r)return r;if(lt(this)&&!A(this,{object:this.v||this.h,name:e,type:`add`,newValue:void 0}))return null;t.name||=`ObservableObject.key`,t.context=this.v||this.h;let i=St(e),a={configurable:!F.safeDescriptors||this.p,enumerable:!1,get:i.get,set:i.set};if(n){if(!Reflect.defineProperty(this.h,e,a))return!1}else Ft(this.h,e,a);this.j.set(e,new _n(t)),this.Yt(e,void 0)}finally{Ne()}return!0}Dt(e,t=!1){if(!p(this.h,e))return!0;if(lt(this)&&!A(this,{object:this.v||this.h,name:e,type:sr}))return null;try{var n;Me();let r=dt(this),i=this.j.get(e),a;if(i||!r||(a=Pt(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 hn&&(a=i.rt),Ie(i)),this.lt.reportChanged(),(n=this.Qt)==null||(n=n.get(e))==null||n.set(e in this.h),r&&r&&pt(this,{type:sr,observableKind:`object`,object:this.v||this.h,debugObjectName:this.tt,oldValue:a,name:e})}finally{Ne()}return!0}Yt(e,t){var n;let r=dt(this);r&&r&&pt(this,r?{type:`add`,observableKind:`object`,debugObjectName:this.tt,object:this.v||this.h,name:e,newValue:t}:null),(n=this.Qt)==null||(n=n.get(e))==null||n.set(!0),this.lt.reportChanged()}it(){return this.lt.reportObserved(),Vt(this.h)}nt(){return this.lt.reportObserved(),Object.keys(this.h)}};let lr=l(`ObservableObjectAdministration`,cr),ur=It.toString,dr=globalThis.Iterator?.prototype||{};e.$mobx=M,e.FlowCancellationError=Bn,e.ObservableMap=tr,e.ObservableSet=ir,e.Reaction=wn,e._allowStateChanges=xe,e._allowStateChangesInsideComputed=Ve,e._allowStateReadsEnd=function(e){F.allowStateReads=e},e._allowStateReadsStart=function(e){let t=F.allowStateReads;return F.allowStateReads=e,t},e._autoAction=Fn,e._autoActionBound=Ln,e._endAction=be,e._getAdministration=Tt,e._getGlobalState=function(){return F},e._interceptReads=function(e,t,n){let r;return nr(e)||vt(e)||gn(e)?r=Tt(e):Ct(e)&&(r=Tt(e,t)),r.dehancer=typeof t==`function`?t:n,()=>{r.dehancer=void 0}},e._isComputingDerivation=function(){return F.trackingDerivation!==null},e._resetGlobalState=function(){let e=new xn;for(let t in e)bn.indexOf(t)===-1&&(F[t]=e[t]);F.allowStateChanges=!F.enforceActions},e._startAction=ye,e.action=Pn,e.actionBound=In,e.autorun=Ue,e.compareDefault=Gt,e.compareIdentity=function(e,t){return e===t},e.compareShallow=function(e,t){return Ot(e,t,1)},e.compareStructural=_,e.computed=ln,e.computedStruct=cn,e.configure=function(e){!0===e.isolateGlobalState&&function(){if((F.pendingReactions.length||F.inBatch||F.isRunningReactions)&&t(36),Cn=!0,Sn){let e=globalThis;--e.__mobxInstanceCount===0&&(e.__mobxGlobals=void 0),F=new xn}}();let{enforceActions:n}=e;if(n!==void 0){let e=n===zn?zn:n===`observed`;F.enforceActions=e,F.allowStateChanges=!0!==e&&e!==zn}[`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`disableErrorBoundaries`,`safeDescriptors`].forEach(t=>{t in e&&(F[t]=!!e[t])}),F.allowStateReads=!F.observableRequiresReaction,e.reactionScheduler&&function(e){let t=En;En=n=>e(()=>t(n))}(e.reactionScheduler)},e.createAtom=g,e.defineProperty=function(e,n,r){if(Ct(e))return e[M].l(n,r);t(39)},e.entries=function(e){return Ct(e)?et(e).map(t=>[t,e[t]]):nr(e)?et(e).map(t=>[t,e.get(t)]):ar(e)?Array.from(e.entries()):vt(e)?e.map((e,t)=>[t,e]):void t(7)},e.extendObservable=Ke,e.flow=Un,e.flowBound=Wn,e.flowResult=function(e){return e},e.get=function(e,n){if(tt(e,n))return Ct(e)?e[M].Tt(n):nr(e)?e.get(n):vt(e)?e[n]:void t(11)},e.getAtom=wt,e.getDebugName=Et,e.getDependencyTree=function(e,t){return qe(wt(e,t))},e.getObserverTree=function(e,t){return Je(wt(e,t))},e.has=tt,e.intercept=function(e,t,n){return r(n)?function(e,t,n){return ut(Tt(e,t),n)}(e,t,n):function(e,t){return ut(Tt(e),t)}(e,t)},e.isAction=He,e.isBoxedObservable=gn,e.isComputed=function(e){return Ze(e)},e.isComputedProp=function(e,t){return Ze(e,t)},e.isFlow=Xe,e.isFlowCancellationError=function(e){return e instanceof Bn},e.isObservable=$e,e.isObservableArray=vt,e.isObservableMap=nr,e.isObservableObject=Ct,e.isObservableProp=function(e,t){return Qe(e,t)},e.isObservableSet=ar,e.keys=et,e.makeAutoObservable=function(e,t,n){return o(e)?Ke(e,e,t,n):(Dt(()=>{let r=xt(e,n)[M];if(!e[Kn]){let t=Object.getPrototypeOf(e),n=new Set([...Vt(e),...Vt(t)]);n.delete(`constructor`),n.delete(M),c(t,Kn,n)}e[Kn].forEach(e=>mt(r,e,!t||!(e in t)||t[e]))}),e)},e.makeObservable=function(e,t,n){return Dt(()=>{let r=xt(e,n)[M];Vt(t).forEach(e=>mt(r,e,t[e]))}),e},e.observable=an,e.observableDeep=nn,e.observableRef=en,e.observableShallow=tn,e.observableStruct=rn,e.observe=function(e,t,n,i){return r(n)?function(e,t,n,r){return rt(Tt(e,t),n,r)}(e,t,n,i):function(e,t,n){let r=Tt(e);if(vt(e))n&&t({observableKind:`array`,object:r.v,debugObjectName:r.ct.tt,type:`splice`,index:0,added:r.j.slice(),addedCount:r.j.length,removed:[],removedCount:0});else if(!nr(e)&&!ar(e)&&!Ct(e))return rt(r,t,n);return ft(r,t)}(e,t,n)},e.onBecomeObserved=function(e,t,n){return Ge(`onBO`,e,t,n)},e.onBecomeUnobserved=function(e,t,n){return Ge(`onBUO`,e,t,n)},e.onReactionError=function(e){return F.globalReactionErrorHandlers.push(e),()=>{let t=F.globalReactionErrorHandlers.indexOf(e);t>=0&&F.globalReactionErrorHandlers.splice(t,1)}},e.override=Kt,e.ownKeys=nt,e.reaction=function(e,t,n=Rt){function r(){if(p=!1,h.isDisposed)return;let t=!1,r=d;h.track(()=>{let n=xe(!1,()=>e(h));t=f||!m(d,n),d=n}),(f&&n.fireImmediately||!f&&t)&&o(d,r,h),f=!1}var i;let a=n.name??`Reaction`,o=Pn(a,n.onError?(s=n.onError,c=t,function(){try{return c.apply(this,arguments)}catch(e){s.call(this,e)}}):t);var s,c;let l=!n.scheduler&&!n.delay,u=We(n),d,f=!0,p=!1,m=n.equals||Gt,h=new wn(a,()=>{f||l?r():p||(p=!0,u(r))},n.onError,n.requiresObservable);return n!=null&&(i=n.signal)!=null&&i.aborted||h.Y(),h.Z(n?.signal)},e.remove=function(e,n){Ct(e)?e[M].Dt(n):nr(e)||ar(e)?e.delete(n):vt(e)?(typeof n!=`number`&&(n=parseInt(n,10)),e.splice(n,1)):t(9)},e.runInAction=Ve,e.set=function e(n,r,i){if(arguments.length===2&&!ar(n)){Me();let t=r;try{for(let r in t)e(n,r,t[r])}finally{Ne()}return}Ct(n)?n[M].Bt(r,i):nr(n)?n.set(r,i):ar(n)?n.add(r):vt(n)?(typeof r!=`number`&&(r=parseInt(r,10)),r<0&&t(42,r),Me(),r>=n.length&&(n.length=r+1),n[r]=i,Ne()):t(8)},e.spy=function(){return console.warn(`[mobx.spy] Is a no-op in production builds`),function(){}},e.toJS=function(e){return at(e,new Map)},e.transaction=ot,e.untracked=Ee,e.values=function(e){return Ct(e)?et(e).map(t=>e[t]):nr(e)?et(e).map(t=>e.get(t)):ar(e)?Array.from(e.values()):vt(e)?e.slice():void t(6)},e.when=function(e,t,n){return arguments.length===1||t&&typeof t==`object`?function(e,t){var n;if(t!=null&&(n=t.signal)!=null&&n.aborted)return Nt(Promise.reject(Error(`WHEN_ABORTED`)),{cancel:()=>null});let r,i,a=new Promise((n,a)=>{var o;let s=st(e,n,Nt({},t,{onError:a}));r=()=>{s(),a(Error(`WHEN_CANCELLED`))},i=()=>{s(),a(Error(`WHEN_ABORTED`))},t==null||(o=t.signal)==null||o.addEventListener==null||o.addEventListener(`abort`,i)}).finally(()=>{var e;return t==null||(e=t.signal)==null||e.removeEventListener==null?void 0:e.removeEventListener(`abort`,i)});return a.cancel=r,a}(e,t):st(e,t,n||{})}})),Vv=we((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t={0:`Invalid value for configuration 'enforceActions', expected 'never', 'always' or 'observed'`,1(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.`,19(e){return`Cannot initialize from classes that inherit from Map: `+e.constructor.name},20(e){return`Cannot initialize map from `+e},21(e){return`Cannot convert to map from '${e}'`},23:`It is not possible to get index atoms from arrays`,24(e){return`Cannot obtain administration from `+e},25(e,t){return`the entry '${e}' does not exist in the observable map '${t}'`},26:`please specify a property`,27(e,t){return`no observable property '${e.toString()}' found on the observable object '${t}'`},28(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(e,t){return`Cycle detected in computation ${e}: ${t}`},33(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(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(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`,40(e){return`Out of range: `+e},41(e){return`Cannot initialize set from `+e},42(e){return`Invalid index: '${e}'`},43(e,t,n){return`Cannot apply '${e}' to '${t}' (kind: ${n}):\n'${e}' can only be used on properties with a function value.`},44(e){return`'${e}' can only be used with 'makeObservable'`}};function n(e,...n){{let r=typeof e==`string`?e:t[e];throw typeof r==`function`&&(r=r.apply(null,n)),Error(`[MobX] ${r}`)}}let r=Object.assign,i=Object.getOwnPropertyDescriptor,a=Object.defineProperty,o=Object.prototype,s=[];Object.freeze(s);let c={};Object.freeze(c);let l=Object.toString();function u(){return++P.mobxGuid}function d(e){let t=!1;return function(){if(!t)return t=!0,e.apply(this,arguments)}}let f=()=>{};function p(e){return typeof e==`function`}function m(e){switch(typeof e){case`string`:case`symbol`:case`number`:return!0}return!1}function h(e){return typeof e==`object`&&!!e}function g(e){if(!h(e))return!1;let t=Object.getPrototypeOf(e);if(t==null)return!0;let n=T(t,`constructor`)&&t.constructor;return typeof n==`function`&&n.toString()===l}function _(e){let t=e?.constructor;return t?t.name===`GeneratorFunction`||t.displayName===`GeneratorFunction`:!1}function v(e,t,n){a(e,t,{enumerable:!1,writable:!0,configurable:!0,value:n})}function y(e,t,n){a(e,t,{enumerable:!1,writable:!1,configurable:!0,value:n})}function b(e,t){let n=`isMobX`+e;return t.prototype[n]=!0,function(e){return h(e)&&e[n]===!0}}function x(e){return e!=null&&Object.prototype.toString.call(e)===`[object Map]`}function S(e){return Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(e)))===null}function C(e){return e!=null&&Object.prototype.toString.call(e)===`[object Set]`}function w(e){let t=Object.keys(e),n=Object.getOwnPropertySymbols(e);return n.length?[...t,...n.filter(t=>o.propertyIsEnumerable.call(e,t))]:t}let ee=Reflect.ownKeys;function te(e){return typeof e==`string`?e:typeof e==`symbol`?e.toString():new String(e).toString()}function ne(e){return e===null?null:typeof e==`object`?``+e:e}function T(e,t){return o.hasOwnProperty.call(e,t)}let re=Object.getOwnPropertyDescriptors;function E(e,t){return!!(e&t)}function D(e,t,n){return n?e|=t:e&=~t,e}function ie(e,t){t.includes(e.kind)||n(`The decorator applied to '${String(e.name)}' cannot be used on a ${e.kind} element`)}let O=Symbol(`mobx administration`);var ae=class{constructor(e=`Atom@`+u()){this.name_=void 0,this.flags_=0,this.observers_=null,this.lastAccessedBy_=0,this.lowestObserverState_=-1,this.onBOL=void 0,this.onBUOL=void 0,this.name_=e}get isBeingObserved(){return E(this.flags_,1)}set isBeingObserved(e){this.flags_=D(this.flags_,1,e)}get isPendingUnobservation(){return E(this.flags_,2)}set isPendingUnobservation(e){this.flags_=D(this.flags_,2,e)}get diffValue(){return+!!E(this.flags_,4)}set diffValue(e){this.flags_=D(this.flags_,4,e===1)}onBO(){this.onBOL&&this.onBOL.forEach(e=>e())}onBUO(){this.onBUOL&&this.onBUOL.forEach(e=>e())}reportObserved(){return sn(this)}reportChanged(){nn(),cn(this),rn()}toString(){return this.name_}};let oe=b(`Atom`,ae);function se(e,t=f,n=f){let r=new ae(e);return t!==f&&(r.onBOL=new Set([t])),n!==f&&(r.onBUOL=new Set([n])),r}function ce(e,t){return e===t}function le(e,t){return Mi(e,t)}function ue(e,t){return Mi(e,t,1)}let de=Object.is;function fe(e,t,n){return e===null||typeof e!=`object`&&typeof e!=`function`||yr(e)?e:Array.isArray(e)?A.array(e,{name:n}):g(e)?A.object(e,void 0,{name:n}):x(e)?A.map(e,{name:n}):C(e)?A.set(e,{name:n}):typeof e==`function`&&!Ln(e)&&!ur(e)?_(e)?or(e):Nn(n,e):e}function pe(e,t,r){if(e==null||wi(e)||ui(e)||mi(e)||yi(e))return e;if(Array.isArray(e))return A.array(e,{name:r,deep:!1});if(g(e))return A.object(e,void 0,{name:r,deep:!1});if(x(e))return A.map(e,{name:r,deep:!1});if(C(e))return A.set(e,{name:r,deep:!1});n(`The shallow modifier / decorator can only used in combination with arrays, objects, maps and sets`)}function me(e){return e}function he(e,t){return yr(e)&&n(`observable.struct should not be used with observable values`),Mi(e,t)?t:e}let ge=`override`,_e={annotationType_:ge,make_:ye,extend_:be};function ve(e){return e.annotationType_===ge}function ye(e,t){return e.isPlainObject_&&n(`Cannot apply '${this.annotationType_}' to '${e.name_}.${t.toString()}':\n'${this.annotationType_}' cannot be used on plain objects.`),T(e.appliedAnnotations_,t)||n(`'${e.name_}.${t.toString()}' is annotated with '${this.annotationType_}', but no such annotated member was found on prototype.`),0}function be(e,t,r,i){n(44,this.annotationType_)}function xe(e,t){return{annotationType_:e,options_:t,make_:Se,extend_:Ce}}function Se(e,t,n,r){var i;return(i=this.options_)!=null&&i.bound?this.extend_(e,t,n,!1)===null?0:1:r===e.target_?this.extend_(e,t,n,!1)===null?0:2:Ln(n.value)?1:(a(r,t,Ee(e,this,t,n,!1)),2)}function Ce(e,t,n,r){let i=Ee(e,this,t,n);return e.defineProperty_(t,i,r)}function we(e,t,r){ie(r,[`method`,`field`]);let{kind:i,name:a,addInitializer:o}=r,s=e,c=e=>yt(s.options_?.name??a.toString(),e,s.options_?.autoAction??!1);if(i==`field`)return function(e){var t;let n=e;return Ln(n)||(n=c(n)),(t=s.options_)!=null&&t.bound&&(n=n.bind(this),n.isMobxAction=!0),n};if(i==`method`){var l;return Ln(t)||(t=c(t)),(l=s.options_)!=null&&l.bound&&o(function(){let e=this,t=e[a].bind(e);t.isMobxAction=!0,e[a]=t}),t}n(43,s.annotationType_,String(a),i)}function Te(e,{annotationType_:t},r,{value:i}){p(i)||n(`Cannot apply '${t}' to '${e.name_}.${r.toString()}':\n'${t}' can only be used on properties with a function value.`)}function Ee(e,t,n,r,i=P.safeDescriptors){var a,o;Te(e,t,n,r);let{value:s}=r;return(a=t.options_)!=null&&a.bound&&(s=s.bind(e.proxy_??e.target_)),{value:yt(t.options_?.name??n.toString(),s,t.options_?.autoAction??!1,(o=t.options_)!=null&&o.bound?e.proxy_??e.target_:void 0),configurable:i?e.isPlainObject_:!0,enumerable:!1,writable:!i}}function k(e,t){return{annotationType_:e,options_:t,make_:De,extend_:Oe}}function De(e,t,n,r){var i;return r===e.target_?this.extend_(e,t,n,!1)===null?0:2:(i=this.options_)!=null&&i.bound&&(!T(e.target_,t)||!ur(e.target_[t]))&&this.extend_(e,t,n,!1)===null?0:ur(n.value)?1:(a(r,t,je(e,this,t,n,!1,!1)),2)}function Oe(e,t,n,r){let i=je(e,this,t,n,this.options_?.bound);return e.defineProperty_(t,i,r)}function ke(e,t,n){var r;ie(n,[`method`]);let{name:i,addInitializer:a}=n;return ur(t)||(t=or(t)),(r=e.options_)!=null&&r.bound&&a(function(){let e=this,t=e[i].bind(e);t.isMobXFlow=!0,e[i]=t}),t}function Ae(e,{annotationType_:t},r,{value:i}){p(i)||n(`Cannot apply '${t}' to '${e.name_}.${r.toString()}':\n'${t}' can only be used on properties with a generator function value.`)}function je(e,t,n,r,i,a=P.safeDescriptors){Ae(e,t,n,r);let{value:o}=r;return ur(o)||(o=or(o)),i&&(o=o.bind(e.proxy_??e.target_),o.isMobXFlow=!0),{value:o,configurable:a?e.isPlainObject_:!0,enumerable:!1,writable:!a}}function Me(e,t){return{annotationType_:e,options_:t,make_:Ne,extend_:Pe}}function Ne(e,t,n){return this.extend_(e,t,n,!1)===null?0:1}function Pe(e,t,n,i){return Ie(e,this,t,n),e.defineComputedProperty_(t,r({},this.options_,{get:n.get,set:n.set}),i)}function Fe(e,t,n){ie(n,[`getter`]);let i=e,{name:a,addInitializer:o}=n,s;function c(e,n){let o=r({},i.options_,{get:t,context:e});return o.name||=`${n.name_}.${a.toString()}`,new Ot(o)}return o(function(){let e=R(this)[O],n=this,r=e.values_.get(a);r instanceof Ot&&r.derivation!==t&&e.values_.delete(a),(e.lazyComputedKeys_??=new Map).set(a,()=>c(n,e))}),function(){let e=this[O],n=e.values_.get(a);if(n instanceof Ot&&n.derivation!==t){let t=s?.get(this);return t||(t=c(this,e),(s??=new WeakMap).set(this,t)),t.get()}return e.getObservablePropValue_(a)}}function Ie(e,{annotationType_:t},r,{get:i}){i||n(`Cannot apply '${t}' to '${e.name_}.${r.toString()}':\n'${t}' can only be used on getter(+setter) properties.`)}function Le(e,t){return{annotationType_:e,options_:t,make_:Re,extend_:ze}}function Re(e,t,n){return this.extend_(e,t,n,!1)===null?0:1}function ze(e,t,n,r){return Ve(e,this,t,n),e.defineObservableProperty_(t,n.value,this.options_?.enhancer_??fe,r)}function Be(e,t,r){if(r.kind===`field`)throw n(`Please use \`@observable accessor ${String(r.name)}\` instead of \`@observable ${String(r.name)}\``);ie(r,[`accessor`]);let i=e,{kind:a,name:o}=r;if(a!==`accessor`)return;function s(e,t){let n=R(e)[O];return(n.lazyObservableKeys_??=new Map).set(o,()=>new Et(t,i.options_?.enhancer_??fe,`${n.name_}.${o.toString()}`,!1)),n}return{get(){return(this[O]??s(this,t.get.call(this))).getObservablePropValue_(o)},set(e){return(this[O]??s(this,e)).setObservablePropValue_(o,e)},init(e){return s(this,e),e}}}function Ve(e,{annotationType_:t},r,i){`value`in i||n(`Cannot apply '${t}' to '${e.name_}.${r.toString()}':\n'${t}' cannot be used on getter/setter properties`)}let He=Ue();function Ue(e){return{annotationType_:`true`,options_:e,make_:Ke,extend_:qe}}let We=[He];function Ge(e){let t=e.deep!==!1,n=!!e.autoBind,r=!t|(n?2:0);return We[r]??(We[r]=Ue({deep:t,autoBind:n}))}function Ke(e,t,n,r){var i;if(n.get)return j.make_(e,t,n,r);if(n.set){let i=Ln(n.set)?n.set:yt(t.toString(),n.set);return r===e.target_?e.defineProperty_(t,{configurable:P.safeDescriptors?e.isPlainObject_:!0,set:i})===null?0:2:(a(r,t,{configurable:!0,set:i}),2)}if(r!==e.target_&&typeof n.value==`function`){var o;if(_(n.value)){var s;return((s=this.options_)!=null&&s.autoBind?sr:or).make_(e,t,n,r)}return((o=this.options_)!=null&&o.autoBind?Fn:Nn).make_(e,t,n,r)}let c=this.options_?.deep===!1?st:A;return typeof n.value==`function`&&(i=this.options_)!=null&&i.autoBind&&(n.value=n.value.bind(e.proxy_??e.target_)),c.make_(e,t,n,r)}function qe(e,t,n,r){var i;return n.get?j.extend_(e,t,n,r):n.set?e.defineProperty_(t,{configurable:P.safeDescriptors?e.isPlainObject_:!0,set:yt(t.toString(),n.set)},r):(typeof n.value==`function`&&(i=this.options_)!=null&&i.autoBind&&(n.value=n.value.bind(e.proxy_??e.target_)),(this.options_?.deep===!1?st:A).extend_(e,t,n,r))}function Je(e,t){return r(function(r,i){if(i&&typeof i.kind==`string`)return t(e,r,i);n(`Invalid arguments for \`${e.annotationType_}\``)},e)}let Ye={deep:!0,name:void 0,defaultDecorator:void 0};Object.freeze(Ye);function Xe(e){return e||Ye}let Ze=Le(`observable`),Qe=Le(`observable.ref`,{enhancer_:me}),$e=Le(`observable.shallow`,{enhancer_:pe}),et=Le(`observable.struct`,{enhancer_:he});function tt(e){return Je(e,Be)}function nt(e){return e.deep===!0?fe:e.deep===!1?me:it(e.defaultDecorator)}function rt(e){return e?e.defaultDecorator??Ge(e):void 0}function it(e){return e?e.options_?.enhancer_??fe:fe}function at(e,t,n){return t&&typeof t.kind==`string`?Be(Ze,e,t):yr(e)?e:g(e)?A.object(e,t,n):Array.isArray(e)?A.array(e,t):x(e)?A.map(e,t):C(e)?A.set(e,t):typeof e==`object`&&e?e:A.box(e,t)}let ot={box(e,t){let n=Xe(t);return new Et(e,nt(n),n.name,!0,n.equals)},array(e,t){let n=Xe(t);return ii(e,nt(n),n.name)},map(e,t){let n=Xe(t);return new pi(e,nt(n),n.name)},set(e,t){let n=Xe(t);return new vi(e,nt(n),n.name)},object(e,t,n){return Ai(()=>Jn(Ur({},n),e,t))}},st=tt(Qe),ct=tt($e),lt=tt(Ze),ut=tt(et);var A=r(at,Ze,ot);let dt=`computed`;function ft(e){return Je(e,Fe)}let pt=Me(dt),mt=ft(Me(`computed.struct`,{equals:le})),j=function(e,t){if(t&&typeof t.kind==`string`)return Fe(pt,e,t);if(g(e))return ft(Me(dt,e));p(e)||n("First argument to `computed` should be an expression."),p(t)&&n("A setter as second argument is no longer supported, use `{ set: fn }` option instead");let r=g(t)?t:{};return r.get=e,r.name||=e.name||``,new Ot(r)};r(j,pt);let ht=0,gt=1,_t=i(()=>{},`name`)?.configurable??!1,vt={value:`action`,configurable:!0,writable:!1,enumerable:!1};function yt(e,t,r=!1,i){p(t)||n("`action` can only be invoked on functions"),(typeof e!=`string`||!e)&&n(`actions should have valid names, got: '${e}'`);function o(){return bt(e,r,t,i||this,arguments)}return o.isMobxAction=!0,o.toString=()=>t.toString(),_t&&(vt.value=e,a(o,`name`,vt)),o}function bt(e,t,n,r,i){let a=xt(e,t,r,i);try{return n.apply(r,i)}catch(e){throw a.error_=e,e}finally{St(a)}}function xt(e,t,n,r){let i=vn()&&!!e,a=0;i&&(a=Date.now(),bn({type:F,name:e,object:n,arguments:r?Array.from(r):s}));let o=P.trackingDerivation,c=!t||!o;nn();let l=P.allowStateChanges;c&&(Vt(),l=wt(!0));let u=P.allowStateReads;M(!0);let d={runAsAction_:c,prevDerivation_:o,prevAllowStateChanges_:l,prevAllowStateReads_:u,notifySpy_:i,startTime_:a,actionId_:gt++,parentActionId_:ht};return ht=d.actionId_,d}function St(e){ht!==e.actionId_&&n(30),ht=e.parentActionId_,e.error_!==void 0&&(P.suppressReactionErrors=!0),Tt(e.prevAllowStateChanges_),Ut(e.prevAllowStateReads_),rn(),e.runAsAction_&&Ht(e.prevDerivation_),e.notifySpy_&&Sn({time:Date.now()-e.startTime_}),P.suppressReactionErrors=!1}function Ct(e,t){let n=wt(e);try{return t()}finally{Tt(n)}}function wt(e){let t=P.allowStateChanges;return P.allowStateChanges=e,t}function Tt(e){P.allowStateChanges=e}var Et=class extends ae{constructor(e,t,n=`ObservableValue@`+u(),r=!0,i=de){super(n),this.enhancer_=void 0,this.name_=void 0,this.equals_=void 0,this.hasUnreportedChange_=!1,this.interceptors_=void 0,this.changeListeners_=void 0,this.value_=void 0,this.dehancer=void 0,this.enhancer_=t,this.name_=n,this.equals_=i,this.value_=t(e,void 0,n),r&&vn()&&yn({type:`create`,object:this,observableKind:`value`,debugObjectName:this.name_,newValue:this.value_})}dehanceValue(e){return this.dehancer===void 0?e:this.dehancer(e)}set(e){let t=this.value_;if(e=this.prepareNewValue_(e),e!==P.UNCHANGED){let n=vn();n&&bn({type:ti,object:this,observableKind:`value`,debugObjectName:this.name_,newValue:e,oldValue:t}),this.setNewValue_(e),n&&Sn()}}prepareNewValue_(e){if(Pt(this),Wr(this)){let t=Kr(this,{object:this,type:ti,newValue:e});if(!t)return P.UNCHANGED;e=t.newValue}return e=this.enhancer_(e,this.value_,this.name_),this.equals_(this.value_,e)?P.UNCHANGED:e}setNewValue_(e){let t=this.value_;this.value_=e,this.reportChanged(),qr(this)&&Yr(this,{type:ti,object:this,newValue:e,oldValue:t})}get(){return this.reportObserved(),this.dehanceValue(this.value_)}raw(){return this.value_}toJSON(){return this.get()}toString(){return`${this.name_}[${this.value_}]`}valueOf(){return ne(this.get())}[Symbol.toPrimitive](){return this.valueOf()}};let Dt=b(`ObservableValue`,Et);var Ot=class{constructor(e){this.dependenciesState_=-1,this.observing_=[],this.newObserving_=null,this.observers_=null,this.runId_=0,this.lastAccessedBy_=0,this.lowestObserverState_=0,this.unboundDepsCount_=0,this.value_=new At(null),this.name_=void 0,this.triggeredBy_=void 0,this.flags_=0,this.derivation=void 0,this.setter_=void 0,this.scope_=void 0,this.equals_=void 0,this.requiresReaction_=void 0,this.keepAlive_=void 0,this.onBOL=void 0,this.onBUOL=void 0,e.get||n(31),this.derivation=e.get,this.name_=e.name||`ComputedValue@`+u(),e.set&&(this.setter_=yt(this.name_+`-setter`,e.set)),this.equals_=e.equals||de,this.scope_=e.context,this.requiresReaction_=e.requiresReaction,this.keepAlive_=!!e.keepAlive}onBecomeStale_(){un(this)}onBO(){this.onBOL&&this.onBOL.forEach(e=>e())}onBUO(){this.onBUOL&&this.onBUOL.forEach(e=>e())}get isComputing(){return E(this.flags_,1)}set isComputing(e){this.flags_=D(this.flags_,1,e)}get isRunningSetter(){return E(this.flags_,2)}set isRunningSetter(e){this.flags_=D(this.flags_,2,e)}get isBeingObserved(){return E(this.flags_,4)}set isBeingObserved(e){this.flags_=D(this.flags_,4,e)}get isPendingUnobservation(){return E(this.flags_,8)}set isPendingUnobservation(e){this.flags_=D(this.flags_,8,e)}get diffValue(){return+!!E(this.flags_,16)}set diffValue(e){this.flags_=D(this.flags_,16,e===1)}get(){if(this.isComputing&&n(32,this.name_,this.derivation),P.inBatch===0&&(!this.observers_||this.observers_.size===0)&&!this.keepAlive_)Mt(this)&&(this.warnAboutUntrackedRead_(),nn(),this.value_=this.computeValue_(!1),rn());else{let e=this.isBeingObserved;if(sn(this),Mt(this)){let e=P.trackingContext;!e&&(this.keepAlive_||this.isBeingObserved)&&(P.trackingContext=this),this.trackAndCompute()&&ln(this),P.trackingContext=e}else !e&&this.isBeingObserved&&this.observing_.forEach(on)}let e=this.value_;if(jt(e))throw e.cause;return e}set(e){if(this.setter_){this.isRunningSetter&&n(33,this.name_),this.isRunningSetter=!0;try{this.setter_.call(this.scope_,e)}finally{this.isRunningSetter=!1}}else n(34,this.name_)}trackAndCompute(){let e=this.value_,t=this.dependenciesState_===-1,n=this.computeValue_(!0),r=t||jt(e)||jt(n)||!this.equals_(e,n);return r&&(this.value_=n,vn()&&yn({observableKind:`computed`,debugObjectName:this.name_,object:this.scope_,type:`update`,oldValue:e,newValue:n})),r}computeValue_(e){this.isComputing=!0;let t=wt(!1),n;if(e)n=It(this,this.derivation,this.scope_);else if(P.disableErrorBoundaries===!0)n=this.derivation.call(this.scope_);else try{n=this.derivation.call(this.scope_)}catch(e){n=new At(e)}return Tt(t),this.isComputing=!1,n}suspend_(){this.keepAlive_||(zt(this),this.value_=void 0)}warnAboutUntrackedRead_(){(typeof this.requiresReaction_==`boolean`?this.requiresReaction_:P.computedRequiresReaction)&&console.warn(`[mobx] Computed value '${this.name_}' is being read outside a reactive context. Doing a full recompute.`)}toString(){return`${this.name_}[${this.derivation.toString()}]`}valueOf(){return ne(this.get())}[Symbol.toPrimitive](){return this.valueOf()}};let kt=b(`ComputedValue`,Ot);var At=class{constructor(e){this.cause=void 0,this.cause=e}};function jt(e){return e instanceof At}function Mt(e){switch(e.dependenciesState_){case 0:return!1;case-1:case 2:return!0;case 1:{let t=M(!0),n=Vt(),r=e.observing_,i=r.length;for(let a=0;a<i;a++){let i=r[a];if(kt(i)){if(P.disableErrorBoundaries)i.get();else try{i.get()}catch{return Ht(n),Ut(t),!0}if(e.dependenciesState_===2)return Ht(n),Ut(t),!0}}return Wt(e),Ht(n),Ut(t),!1}}}function Nt(){return P.trackingDerivation!==null}function Pt(e){let t=!!e.observers_&&e.observers_.size>0;!P.allowStateChanges&&(t||P.enforceActions===`always`)&&console.warn(`[MobX] `+(P.enforceActions?`Since strict-mode is enabled, changing (observed) observable values without using an action is not allowed. Tried to modify: `:`Side effects like changing state are not allowed at this point. Are you trying to modify state from, for example, a computed value or the render function of a React component? You can wrap side effects in 'runInAction' (or decorate functions with 'action') if needed. Tried to modify: `)+e.name_)}function Ft(e){!P.allowStateReads&&P.observableRequiresReaction&&console.warn(`[mobx] Observable '${e.name_}' being read outside a reactive context.`)}function It(e,t,n){let r=M(!0);Wt(e),e.newObserving_=Array(e.runId_===0?100:e.observing_.length),e.unboundDepsCount_=0,e.runId_=++P.runId;let i=P.trackingDerivation;P.trackingDerivation=e,P.inBatch++;let a;if(P.disableErrorBoundaries===!0)a=t.call(n);else try{a=t.call(n)}catch(e){a=new At(e)}return P.inBatch--,P.trackingDerivation=i,Rt(e),Lt(e),Ut(r),a}function Lt(e){e.observing_.length===0&&(typeof e.requiresObservable_==`boolean`?e.requiresObservable_:P.reactionRequiresObservable)&&console.warn(`[mobx] Derivation '${e.name_}' is created/updated without reading any observable value.`)}function Rt(e){let t=e.observing_,n=e.observing_=e.newObserving_,r=0,i=0,a=e.unboundDepsCount_;for(let e=0;e<a;e++){let t=n[e];t.diffValue===0&&(t.diffValue=1,i!==e&&(n[i]=t),i++),t.dependenciesState_>r&&(r=t.dependenciesState_)}for(n.length=i,e.newObserving_=null,a=t.length;a--;){let n=t[a];n.diffValue===0&&en(n,e),n.diffValue=0}for(;i--;){let t=n[i];t.diffValue===1&&(t.diffValue=0,$t(t,e))}r!==0&&(e.dependenciesState_=r,e.onBecomeStale_())}function zt(e){let t=e.observing_;e.observing_=[];let n=t.length;for(;n--;)en(t[n],e);e.dependenciesState_=-1}function Bt(e){let t=Vt();try{return e()}finally{Ht(t)}}function Vt(){let e=P.trackingDerivation;return P.trackingDerivation=null,e}function Ht(e){P.trackingDerivation=e}function M(e){let t=P.allowStateReads;return P.allowStateReads=e,t}function Ut(e){P.allowStateReads=e}function Wt(e){if(e.dependenciesState_===0)return;e.dependenciesState_=0;let t=e.observing_,n=t.length;for(;n--;)t[n].lowestObserverState_=0}let Gt=[`mobxGuid`,`spyListeners`,`enforceActions`,`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`allowStateReads`,`disableErrorBoundaries`,`runId`,`UNCHANGED`];var Kt=class{constructor(){this.version=7,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.isRunningUnobservations=!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.safeDescriptors=!0}};let qt=!0,N=!1,P=function(){let e=globalThis;return e.__mobxInstanceCount>0&&!e.__mobxGlobals&&(qt=!1),e.__mobxGlobals&&e.__mobxGlobals.version!==7&&(qt=!1),qt?e.__mobxGlobals?(e.__mobxInstanceCount+=1,e.__mobxGlobals.UNCHANGED||(e.__mobxGlobals.UNCHANGED={}),e.__mobxGlobals):(e.__mobxInstanceCount=1,e.__mobxGlobals=new Kt):(setTimeout(()=>{N||n(35)},1),new Kt)}();function Jt(){if((P.pendingReactions.length||P.inBatch||P.isRunningReactions)&&n(36),N=!0,qt){let e=globalThis;--e.__mobxInstanceCount===0&&(e.__mobxGlobals=void 0),P=new Kt}}function Yt(){return P}function Xt(){let e=new Kt;for(let t in e)Gt.indexOf(t)===-1&&(P[t]=e[t]);P.allowStateChanges=!P.enforceActions}function Zt(e){return!!e.observers_&&e.observers_.size>0}function Qt(e){return e.observers_??new Set}function $t(e,t){(e.observers_??=new Set).add(t),e.lowestObserverState_>t.dependenciesState_&&(e.lowestObserverState_=t.dependenciesState_)}function en(e,t){let n=e.observers_;n&&(n.delete(t),n.size===0&&tn(e))}function tn(e){e.isPendingUnobservation===!1&&(e.isPendingUnobservation=!0,P.pendingUnobservations.push(e))}function nn(){P.inBatch++}function rn(){--P.inBatch===0&&(mn(),!P.isRunningUnobservations&&P.pendingUnobservations.length>0&&an())}function an(){P.isRunningUnobservations=!0;try{let e=P.pendingUnobservations;for(let t=0;t<e.length;t++){let n=e[t];n.isPendingUnobservation=!1,(!n.observers_||n.observers_.size===0)&&(n.observers_=null,n.isBeingObserved&&(n.isBeingObserved=!1,n.onBUO()),n instanceof Ot&&n.suspend_())}P.pendingUnobservations=[]}finally{P.isRunningUnobservations=!1}}function on(e){var t;e.isBeingObserved||(e.isBeingObserved=!0,e.onBO(),(t=e.observing_)==null||t.forEach(on))}function sn(e){Ft(e);let t=P.trackingDerivation;return t===null?((!e.observers_||e.observers_.size===0)&&P.inBatch>0&&tn(e),!1):(t.runId_!==e.lastAccessedBy_&&(e.lastAccessedBy_=t.runId_,t.newObserving_[t.unboundDepsCount_++]=e,!e.isBeingObserved&&P.trackingContext&&(e.isBeingObserved=!0,e.onBO())),e.isBeingObserved)}function cn(e){var t;e.lowestObserverState_!==2&&(e.lowestObserverState_=2,(t=e.observers_)==null||t.forEach(e=>{e.dependenciesState_===0&&e.onBecomeStale_(),e.dependenciesState_=2}))}function ln(e){var t;e.lowestObserverState_!==2&&(e.lowestObserverState_=2,(t=e.observers_)==null||t.forEach(t=>{t.dependenciesState_===1?t.dependenciesState_=2:t.dependenciesState_===0&&(e.lowestObserverState_=0)}))}function un(e){var t;e.lowestObserverState_===0&&(e.lowestObserverState_=1,(t=e.observers_)==null||t.forEach(e=>{e.dependenciesState_===0&&(e.dependenciesState_=1,e.onBecomeStale_())}))}var dn=class{constructor(e=`Reaction@`+u(),t,n,r){this.name_=void 0,this.onInvalidate_=void 0,this.errorHandler_=void 0,this.requiresObservable_=void 0,this.observing_=[],this.newObserving_=[],this.dependenciesState_=-1,this.runId_=0,this.unboundDepsCount_=0,this.flags_=0,this.removeAbortListener_=void 0,this.name_=e,this.onInvalidate_=t,this.errorHandler_=n,this.requiresObservable_=r}get isDisposed(){return E(this.flags_,1)}set isDisposed(e){this.flags_=D(this.flags_,1,e)}get isScheduled(){return E(this.flags_,2)}set isScheduled(e){this.flags_=D(this.flags_,2,e)}get isTrackPending(){return E(this.flags_,4)}set isTrackPending(e){this.flags_=D(this.flags_,4,e)}get isRunning(){return E(this.flags_,8)}set isRunning(e){this.flags_=D(this.flags_,8,e)}get diffValue(){return+!!E(this.flags_,16)}set diffValue(e){this.flags_=D(this.flags_,16,e===1)}onBecomeStale_(){this.schedule_()}schedule_(){this.isScheduled||(this.isScheduled=!0,P.pendingReactions.push(this),mn())}runReaction_(){if(!this.isDisposed){nn(),this.isScheduled=!1;let e=P.trackingContext;if(P.trackingContext=this,Mt(this)){this.isTrackPending=!0;try{this.onInvalidate_(),this.isTrackPending&&vn()&&yn({name:this.name_,type:`scheduled-reaction`})}catch(e){this.reportExceptionInDerivation_(e)}}P.trackingContext=e,rn()}}track(e){if(this.isDisposed)return;nn();let t=vn(),n;t&&(n=Date.now(),bn({name:this.name_,type:`reaction`})),this.isRunning=!0;let r=P.trackingContext;P.trackingContext=this;let i=It(this,e,void 0);P.trackingContext=r,this.isRunning=!1,this.isTrackPending=!1,this.isDisposed&&zt(this),jt(i)&&this.reportExceptionInDerivation_(i.cause),t&&Sn({time:Date.now()-n}),rn()}reportExceptionInDerivation_(e){if(this.errorHandler_){this.errorHandler_(e,this);return}if(P.disableErrorBoundaries)throw e;let t=`[mobx] Encountered an uncaught exception that was thrown by a reaction or observer component, in: '${this}'`;P.suppressReactionErrors?console.warn(`[mobx] (error in reaction '${this.name_}' suppressed, fix error of causing action below)`):console.error(t,e),vn()&&yn({type:`error`,name:this.name_,message:t,error:``+e}),P.globalReactionErrorHandlers.forEach(t=>t(e,this))}dispose(){if(!this.isDisposed){var e;this.isDisposed=!0,(e=this.removeAbortListener_)==null||e.call(this),this.isRunning||(nn(),zt(this),rn())}}getDisposer_(e){let t=()=>this.dispose();return e!=null&&e.addEventListener&&!this.isDisposed&&(e.addEventListener(`abort`,t),this.removeAbortListener_=()=>e.removeEventListener==null?void 0:e.removeEventListener(`abort`,t)),t[O]=this,`dispose`in Symbol&&typeof Symbol.dispose==`symbol`&&(t[Symbol.dispose]=t),t}toString(){return`Reaction[${this.name_}]`}};function fn(e){return P.globalReactionErrorHandlers.push(e),()=>{let t=P.globalReactionErrorHandlers.indexOf(e);t>=0&&P.globalReactionErrorHandlers.splice(t,1)}}let pn=e=>e();function mn(){P.inBatch>0||P.isRunningReactions||pn(hn)}function hn(){P.isRunningReactions=!0;let e=P.pendingReactions,t=0;for(;e.length>0;){++t===100&&(console.error(`Reaction doesn't converge to a stable state after 100 iterations. Probably there is a cycle in the reactive function: ${e[0]}`),e.splice(0));let n=e.splice(0);for(let e=0,t=n.length;e<t;e++)n[e].runReaction_()}P.isRunningReactions=!1}let gn=b(`Reaction`,dn);function _n(e){let t=pn;pn=n=>e(()=>t(n))}function vn(){return!!P.spyListeners.length}function yn(e){if(!P.spyListeners.length)return;let t=P.spyListeners;for(let n=0,r=t.length;n<r;n++)t[n](e)}function bn(e){yn(r({},e,{spyReportStart:!0}))}let xn={type:`report-end`,spyReportEnd:!0};function Sn(e){yn(e?r({},e,{type:`report-end`,spyReportEnd:!0}):xn)}function Cn(e){return P.spyListeners.push(e),d(()=>{P.spyListeners=P.spyListeners.filter(t=>t!==e)})}let F=`action`,wn=`autoAction`,Tn=`<unnamed action>`,En=xe(F),Dn=xe(`action.bound`,{bound:!0}),On=xe(wn,{autoAction:!0}),kn=xe(`autoAction.bound`,{autoAction:!0,bound:!0});function An(e){return Je(e,we)}function jn(e){return function(t,r){if(r&&typeof r.kind==`string`)return we(e?On:En,t,r);if(p(t))return yt(t.name||Tn,t,e);if(p(r))return yt(t,r,e);if(m(t))return An(xe(e?wn:F,{name:t,autoAction:e}));n("Invalid arguments for `action`")}}let Mn=jn(!1);r(Mn,En);let Nn=jn(!0);r(Nn,On);let Pn=An(Dn),Fn=An(kn);function In(e){return bt(e.name||Tn,!1,e,this,void 0)}function Ln(e){return p(e)&&e.isMobxAction===!0}function Rn(e,t=c){var r;p(e)||n(`Autorun expects a function as first argument`),Ln(e)&&n(`Autorun does not accept actions since actions are untrackable`);let i=t?.name??(e.name||`Autorun@`+u()),a=!t.scheduler&&!t.delay,o;if(a)o=new dn(i,function(){this.track(s)},t.onError,t.requiresObservable);else{let e=Bn(t),n=!1;o=new dn(i,()=>{n||(n=!0,e(()=>{n=!1,o.isDisposed||o.track(s)}))},t.onError,t.requiresObservable)}function s(){e(o)}return t!=null&&(r=t.signal)!=null&&r.aborted||o.schedule_(),o.getDisposer_(t?.signal)}let zn=e=>e();function Bn(e){return e.scheduler?e.scheduler:e.delay?t=>setTimeout(t,e.delay):zn}function Vn(e,t,r=c){var i;(!p(e)||!p(t))&&n(`First and second argument to reaction should be functions`),g(r)||n(`Third argument of reactions should be an object`);let a=r.name??`Reaction@`+u(),o=Mn(a,r.onError?Hn(r.onError,t):t),s=!r.scheduler&&!r.delay,l=Bn(r),d=!0,f=!1,m,h=r.equals||de,_=new dn(a,()=>{d||s?v():f||(f=!0,l(v))},r.onError,r.requiresObservable);function v(){if(f=!1,_.isDisposed)return;let t=!1,n=m;_.track(()=>{let n=Ct(!1,()=>e(_));t=d||!h(m,n),m=n}),(d&&r.fireImmediately||!d&&t)&&o(m,n,_),d=!1}return r!=null&&(i=r.signal)!=null&&i.aborted||_.schedule_(),_.getDisposer_(r?.signal)}function Hn(e,t){return function(){try{return t.apply(this,arguments)}catch(t){e.call(this,t)}}}function Un(e,t,n){return Gn(`onBO`,e,t,n)}function Wn(e,t,n){return Gn(`onBUO`,e,t,n)}function Gn(e,t,n,r){let i=typeof r==`function`?Di(t,n):Di(t),a=p(r)?r:n,o=`${e}L`;return i[o]?i[o].add(a):i[o]=new Set([a]),function(){let e=i[o];e&&(e.delete(a),e.size===0&&delete i[o])}}let Kn=`always`;function qn(e){e.isolateGlobalState===!0&&Jt();let{enforceActions:t}=e;if(t!==void 0){let e=t===Kn?Kn:t===`observed`;P.enforceActions=e,P.allowStateChanges=!(e===!0||e===Kn)}[`computedRequiresReaction`,`reactionRequiresObservable`,`observableRequiresReaction`,`disableErrorBoundaries`,`safeDescriptors`].forEach(t=>{t in e&&(P[t]=!!e[t])}),P.allowStateReads=!P.observableRequiresReaction,P.disableErrorBoundaries===!0&&console.warn("WARNING: Debug feature only. MobX will NOT recover from errors when `disableErrorBoundaries` is enabled."),e.reactionScheduler&&_n(e.reactionScheduler)}function Jn(e,t,r,i){arguments.length>4&&n(`'extendObservable' expected 2-4 arguments`),typeof e!=`object`&&n(`'extendObservable' expects an object as first argument`),mi(e)&&n(`'extendObservable' should not be used on maps, use map.merge instead`),g(t)||n(`'extendObservable' only accepts plain objects as second argument`),(yr(t)||yr(r))&&n(`Extending an object with another observable (object) is not supported`);let a=re(t);return Ai(()=>{let t=R(e,i)[O];ee(a).forEach(e=>{t.extend_(e,a[e],r&&e in r?r[e]:!0)})}),e}function Yn(e,t){return Xn(Di(e,t))}function Xn(e){let t={name:e.name_};return e.observing_&&e.observing_.length>0&&(t.dependencies=$n(e.observing_).map(Xn)),t}function Zn(e,t){return Qn(Di(e,t))}function Qn(e){let t={name:e.name_};return Zt(e)&&(t.observers=Array.from(Qt(e),Qn)),t}function $n(e){return Array.from(new Set(e))}let er=0;var tr=class extends Error{constructor(){super(`FLOW_CANCELLED`),Object.setPrototypeOf(this,new.target.prototype),this.name=`FlowCancellationError`}toString(){return`Error: ${this.message}`}};function nr(e){return e instanceof tr}function rr(e){return Je(e,ke)}let ir=k(`flow`),ar=k(`flow.bound`,{bound:!0}),or=r(function(e,t){if(t&&typeof t.kind==`string`)return ke(ir,e,t);arguments.length!==1&&n(`Flow expects single argument with generator function`);let r=e,i=r.name||`<unnamed flow>`,a=function(){let e=this,t=arguments,n=++er,a=Mn(`${i} - runid: ${n} - init`,r).apply(e,t),o,s,c=new Promise(function(e,t){let r=0;o=t;function c(e){s=void 0;let o;try{o=Mn(`${i} - runid: ${n} - yield ${r++}`,a.next).call(a,e)}catch(e){return t(e)}u(o)}function l(e){s=void 0;let o;try{o=Mn(`${i} - runid: ${n} - yield ${r++}`,a.throw).call(a,e)}catch(e){return t(e)}u(o)}function u(n){if(p(n?.then)){n.then(u,t);return}return n.done?e(n.value):(s=Promise.resolve(n.value),s.then(c,l))}c(void 0)});return c.cancel=Mn(`${i} - runid: ${n} - cancel`,function(){try{s&&cr(s);let e=a.return(void 0),t=Promise.resolve(e.value);t.then(f,f),cr(t),o(new tr)}catch(e){o(e)}}),c};return a.isMobXFlow=!0,a},ir),sr=rr(ar);function cr(e){p(e.cancel)&&e.cancel()}function lr(e){return e}function ur(e){return e?.isMobXFlow===!0}function dr(e,t,r){let i;if(mi(e)||ui(e)||Dt(e))i=Oi(e);else if(wi(e)){if(!m(t))return n(`InterceptReads can only be used with a specific property, not with an object in general`);i=Oi(e,t)}else return n(`Expected observable map, object or array as first array`);return i.dehancer===void 0?(i.dehancer=typeof t==`function`?t:r,()=>{i.dehancer=void 0}):n(`An intercept reader was already established`)}function fr(e,t,n){return p(n)?mr(e,t,n):pr(e,t)}function pr(e,t){return Gr(Oi(e),t)}function mr(e,t,n){return Gr(Oi(e,t),n)}function hr(e,t){var n;if(t===void 0)return kt(e);if(wi(e)===!1)return!1;let r=e[O];return(n=r.lazyComputedKeys_)!=null&&n.has(t)?!0:r.values_.has(t)?kt(Di(e,t)):!1}function gr(e){return arguments.length>1?n(`isComputed expects only 1 argument. Use isComputedProp to inspect the observability of a property`):hr(e)}function _r(e,t){return m(t)?hr(e,t):n(`isComputed expected a property name as second argument`)}function vr(e,t){if(!e)return!1;if(t!==void 0){if(mi(e)||ui(e))return n(`isObservable(object, propertyName) is not supported for arrays and maps. Use map.has or array.length instead.`);if(wi(e)){var r,i;let n=e[O];return n.values_.has(t)||!!((r=n.lazyComputedKeys_)!=null&&r.has(t))||!!((i=n.lazyObservableKeys_)!=null&&i.has(t))}return!1}return wi(e)||!!e[O]||oe(e)||gn(e)||kt(e)}function yr(e){return arguments.length!==1&&n(`isObservable expects only 1 argument. Use isObservableProp to inspect the observability of a property`),vr(e)}function br(e,t){return m(t)?vr(e,t):n(`expected a property name as second argument`)}function xr(e){if(wi(e))return e[O].keys_();if(mi(e)||yi(e))return Array.from(e.keys());if(ui(e))return e.map((e,t)=>t);n(5)}function Sr(e){if(wi(e))return xr(e).map(t=>e[t]);if(mi(e))return xr(e).map(t=>e.get(t));if(yi(e))return Array.from(e.values());if(ui(e))return e.slice();n(6)}function Cr(e){if(wi(e))return xr(e).map(t=>[t,e[t]]);if(mi(e))return xr(e).map(t=>[t,e.get(t)]);if(yi(e))return Array.from(e.entries());if(ui(e))return e.map((e,t)=>[t,e]);n(7)}function wr(e,t,r){if(arguments.length===2&&!yi(e)){nn();let n=t;try{for(let t in n)wr(e,t,n[t])}finally{rn()}return}wi(e)?e[O].set_(t,r):mi(e)?e.set(t,r):yi(e)?e.add(t):ui(e)?(typeof t!=`number`&&(t=parseInt(t,10)),t<0&&n(42,t),nn(),t>=e.length&&(e.length=t+1),e[t]=r,rn()):n(8)}function Tr(e,t){wi(e)?e[O].delete_(t):mi(e)||yi(e)?e.delete(t):ui(e)?(typeof t!=`number`&&(t=parseInt(t,10)),e.splice(t,1)):n(9)}function Er(e,t){if(wi(e))return e[O].has_(t);if(mi(e)||yi(e))return e.has(t);if(ui(e))return t>=0&&t<e.length;n(10)}function Dr(e,t){if(Er(e,t)){if(wi(e))return e[O].get_(t);if(mi(e))return e.get(t);if(ui(e))return e[t];n(11)}}function Or(e,t,r){if(wi(e))return e[O].defineProperty_(t,r);n(39)}function kr(e){if(wi(e))return e[O].ownKeys_();n(38)}function Ar(e,t,n,r){return p(n)?Mr(e,t,n,r):jr(e,t,n)}function jr(e,t,r){let i=Oi(e);if(ui(e))r&&t({observableKind:`array`,object:i.proxy_,debugObjectName:i.atom_.name_,type:`splice`,index:0,added:i.values_.slice(),addedCount:i.values_.length,removed:[],removedCount:0});else if(mi(e))r===!0&&n("`observe` doesn't support fireImmediately=true in combination with maps.");else if(yi(e))r===!0&&n("`observe` doesn't support fireImmediately=true in combination with sets.");else if(wi(e))r===!0&&n("`observe` doesn't support the fire immediately property for observable objects.");else return Nr(i,t,r);return Jr(i,t)}function Mr(e,t,n,r){return Nr(Oi(e,t),n,r)}function Nr(e,t,n){if(kt(e)){let r=!0,i;return Rn(()=>{let a=e.get();if(!r||n){let n=Vt();t({observableKind:`computed`,debugObjectName:e.name_,type:ti,object:e,newValue:a,oldValue:i}),Ht(n)}r=!1,i=a})}return n&&t({observableKind:`value`,debugObjectName:e.name_,object:e,type:ti,newValue:e.value_,oldValue:void 0}),Jr(e,t)}function Pr(e,t,n){return e.set(t,n),n}function Fr(e,t){if(typeof e!=`object`||!e||e instanceof Date||!yr(e))return e;if(Dt(e)||kt(e))return Fr(e.get(),t);if(t.has(e))return t.get(e);if(ui(e)){let n=Pr(t,e,Array(e.length));return e.forEach((e,r)=>{n[r]=Fr(e,t)}),n}if(yi(e)){let n=Pr(t,e,new Set);return e.forEach(e=>{n.add(Fr(e,t))}),n}if(mi(e)){let n=Pr(t,e,new Map);return e.forEach((e,r)=>{n.set(r,Fr(e,t))}),n}else{let n=Pr(t,e,{});return kr(e).forEach(r=>{o.propertyIsEnumerable.call(e,r)&&(n[r]=Fr(e[r],t))}),n}}function Ir(e,t){return t&&n(`toJS no longer supports options`),Fr(e,new Map)}function Lr(e,t=void 0){nn();try{return e.apply(t)}finally{rn()}}function Rr(e,t,n){return arguments.length===1||t&&typeof t==`object`?Br(e,t):zr(e,t,n||{})}function zr(e,t,n){let r;if(typeof n.timeout==`number`){let e=Error(`WHEN_TIMEOUT`);r=setTimeout(()=>{if(!a[O].isDisposed)if(a(),n.onError)n.onError(e);else throw e},n.timeout)}n.name=n.name||`When@`+u();let i=yt(n.name+`-effect`,t);var a=Rn(t=>{Ct(!1,e)&&(t.dispose(),r&&clearTimeout(r),i())},n);return a}function Br(e,t){var i;if(t&&t.onError)return n(`the options 'onError' and 'promise' cannot be combined`);if(t!=null&&(i=t.signal)!=null&&i.aborted)return r(Promise.reject(Error(`WHEN_ABORTED`)),{cancel:()=>null});let a,o,s=new Promise((n,i)=>{var s;let c=zr(e,n,r({},t,{onError:i}));a=()=>{c(),i(Error(`WHEN_CANCELLED`))},o=()=>{c(),i(Error(`WHEN_ABORTED`))},t==null||(s=t.signal)==null||s.addEventListener==null||s.addEventListener(`abort`,o)}).finally(()=>{var e;return t==null||(e=t.signal)==null||e.removeEventListener==null?void 0:e.removeEventListener(`abort`,o)});return s.cancel=a,s}function Vr(e){return e[O]}let Hr={has(e,t){return Vr(e).has_(t)},get(e,t){return Vr(e).get_(t)},set(e,t,n){return m(t)?Vr(e).set_(t,n,!0)??!0:!1},deleteProperty(e,t){return m(t)?Vr(e).delete_(t,!0)??!0:!1},defineProperty(e,t,n){return Vr(e).defineProperty_(t,n)??!0},ownKeys(e){return Vr(e).ownKeys_()},preventExtensions(e){n(13)}};function Ur(e,t){var n;return e=R(e,t),(n=e[O]).proxy_??(n.proxy_=new Proxy(e,Hr))}function Wr(e){return e.interceptors_!==void 0&&e.interceptors_.length>0}function Gr(e,t){let n=e.interceptors_;return n?n.push(t):n=e.interceptors_=[t],d(()=>{let e=n.indexOf(t);e!==-1&&n.splice(e,1)})}function Kr(e,t){let r=Vt();try{let r=[...e.interceptors_||[]];for(let e=0,i=r.length;e<i&&(t=r[e](t),t&&!t.type&&n(14),t);e++);return t}finally{Ht(r)}}function qr(e){return e.changeListeners_!==void 0&&e.changeListeners_.length>0}function Jr(e,t){let n=e.changeListeners_;return n?n.push(t):n=e.changeListeners_=[t],d(()=>{let e=n.indexOf(t);e!==-1&&n.splice(e,1)})}function Yr(e,t){let n=Vt(),r=e.changeListeners_;if(r){r=r.slice();for(let e=0,n=r.length;e<n;e++)r[e](t);Ht(n)}}function Xr(e,t,n){return Ai(()=>{let r=R(e,n)[O];ee(t).forEach(e=>$r(r,e,t[e]))}),e}let Zr=Symbol(`mobx-keys`);function Qr(e,t,r){return!g(e)&&!g(Object.getPrototypeOf(e))&&n(`'makeAutoObservable' can only be used for classes that don't have a superclass`),wi(e)&&n(`makeAutoObservable can only be used on objects not already made observable`),g(e)?Jn(e,e,t,r):(Ai(()=>{let n=R(e,r)[O];if(!e[Zr]){let t=Object.getPrototypeOf(e),n=new Set([...ee(e),...ee(t)]);n.delete(`constructor`),n.delete(O),v(t,Zr,n)}e[Zr].forEach(e=>$r(n,e,t&&e in t?t[e]:!0))}),e)}function $r(e,t,r){if(r===!0&&(r=e.defaultAnnotation_),r===!1)return;Ei(e,r,t),t in e.target_||n(1,r.annotationType_,`${e.name_}.${t.toString()}`);let a=e.target_;for(;a&&a!==o;){let n=i(a,t);if(n){let i=r.make_(e,t,n,a);if(i===0)return;if(i===1)break}a=Object.getPrototypeOf(a)}Ti(e,r,t)}let ei=`splice`,ti=`update`,ni={get(e,t){let n=e[O];return t===O?n:t===`length`?n.getArrayLength_():typeof t==`string`&&!isNaN(t)?n.get_(parseInt(t)):T(ai,t)?ai[t]:e[t]},set(e,t,n){let r=e[O];return t===`length`?r.setArrayLength_(n):typeof t==`symbol`||isNaN(t)?e[t]=n:r.set_(parseInt(t),n),!0},preventExtensions(){n(15)}};var ri=class{constructor(e=`ObservableArray@`+u(),t,n){this.owned_=void 0,this.atom_=void 0,this.values_=[],this.interceptors_=void 0,this.changeListeners_=void 0,this.enhancer_=void 0,this.dehancer=void 0,this.proxy_=void 0,this.lastKnownLength_=0,this.owned_=n,this.atom_=new ae(e),this.enhancer_=(n,r)=>t(n,r,e+`[..]`)}dehanceValue_(e){return this.dehancer===void 0?e:this.dehancer(e)}dehanceValues_(e){return this.dehancer!==void 0&&e.length>0?e.map(this.dehancer):e}getArrayLength_(){return this.atom_.reportObserved(),this.values_.length}setArrayLength_(e){(!Number.isInteger(e)||e<0)&&n(40,e);let t=this.values_.length;if(e!==t)if(e>t){let n=Array.from({length:e-t});this.spliceWithArray_(t,0,n)}else this.spliceWithArray_(e,t-e)}updateArrayLength_(e,t){e!==this.lastKnownLength_&&n(16),this.lastKnownLength_+=t}spliceWithArray_(e,t,n){Pt(this.atom_);let r=this.values_.length;if(e===void 0?e=0:e>r?e=r:e<0&&(e=Math.max(0,r+e)),t=arguments.length===1?r-e:t==null?0:Math.max(0,Math.min(t,r-e)),n===void 0&&(n=s),Wr(this)){let r=Kr(this,{object:this.proxy_,type:ei,index:e,removedCount:t,added:n});if(!r)return s;t=r.removedCount,n=r.added}n=n.length===0?n:n.map(e=>this.enhancer_(e,void 0));{let e=n.length-t;this.updateArrayLength_(r,e)}let i=this.spliceItemsIntoValues_(e,t,n);return(t!==0||n.length!==0)&&this.notifyArraySplice_(e,n,i),this.dehanceValues_(i)}spliceItemsIntoValues_(e,t,n){if(n.length<1e4)return this.values_.splice(e,t,...n);{let r=this.values_.slice(e,e+t),i=this.values_.slice(e+t);this.values_.length+=n.length-t;for(let t=0;t<n.length;t++)this.values_[e+t]=n[t];for(let t=0;t<i.length;t++)this.values_[e+n.length+t]=i[t];return r}}notifyArrayChildUpdate_(e,t,n){let r=!this.owned_&&vn(),i=qr(this),a=i||r?{observableKind:`array`,object:this.proxy_,type:ti,debugObjectName:this.atom_.name_,index:e,newValue:t,oldValue:n}:null;r&&bn(a),this.atom_.reportChanged(),i&&Yr(this,a),r&&Sn()}notifyArraySplice_(e,t,n){let r=!this.owned_&&vn(),i=qr(this),a=i||r?{observableKind:`array`,object:this.proxy_,debugObjectName:this.atom_.name_,type:ei,index:e,removed:n,added:t,removedCount:n.length,addedCount:t.length}:null;r&&bn(a),this.atom_.reportChanged(),i&&Yr(this,a),r&&Sn()}get_(e){return this.atom_.reportObserved(),this.dehanceValue_(this.values_[e])}set_(e,t){let n=this.values_;if(e<n.length){Pt(this.atom_);let r=n[e];if(Wr(this)){let n=Kr(this,{type:ti,object:this.proxy_,index:e,newValue:t});if(!n)return;t=n.newValue}t=this.enhancer_(t,r),t!==r&&(n[e]=t,this.notifyArrayChildUpdate_(e,t,r))}else{let r=Array.from({length:e+1-n.length});r[r.length-1]=t,this.spliceWithArray_(n.length,0,r)}}};function ii(e,t,n=`ObservableArray@`+u(),r=!1){return Ai(()=>{let i=new ri(n,t,r);y(i.values_,O,i);let a=new Proxy(i.values_,ni);return i.proxy_=a,e&&e.length&&i.spliceWithArray_(0,0,e),a})}var ai={clear(){return this.splice(0)},replace(e){let t=this[O];return t.spliceWithArray_(0,t.values_.length,e)},toJSON(){return this.slice()},splice(e,t,...n){let r=this[O];switch(arguments.length){case 0:return[];case 1:return r.spliceWithArray_(e);case 2:return r.spliceWithArray_(e,t)}return r.spliceWithArray_(e,t,n)},spliceWithArray(e,t,n){return this[O].spliceWithArray_(e,t,n)},push(...e){let t=this[O];return t.spliceWithArray_(t.values_.length,0,e),t.values_.length},pop(){return this.splice(Math.max(this[O].values_.length-1,0),1)[0]},shift(){return this.splice(0,1)[0]},unshift(...e){let t=this[O];return t.spliceWithArray_(0,0,e),t.values_.length},reverse(){return P.trackingDerivation&&n(37,`reverse`),this.replace(this.slice().reverse()),this},sort(){P.trackingDerivation&&n(37,`sort`);let e=this.slice();return e.sort.apply(e,arguments),this.replace(e),this},remove(e){let t=this[O],n=t.dehanceValues_(t.values_).indexOf(e);return n>-1?(this.splice(n,1),!0):!1}};I(`at`,oi),I(`concat`,oi),I(`flat`,oi),I(`includes`,oi),I(`indexOf`,oi),I(`join`,oi),I(`lastIndexOf`,oi),I(`slice`,oi),I(`toString`,oi),I(`toLocaleString`,oi),I(`toSorted`,oi),I(`toSpliced`,oi),I(`with`,oi),I(`every`,si),I(`filter`,si),I(`find`,si),I(`findIndex`,si),I(`findLast`,si),I(`findLastIndex`,si),I(`flatMap`,si),I(`forEach`,si),I(`map`,si),I(`some`,si),I(`toReversed`,si),I(`reduce`,ci),I(`reduceRight`,ci);function I(e,t){typeof Array.prototype[e]==`function`&&(ai[e]=t(e))}function oi(e){return function(){let t=this[O];t.atom_.reportObserved();let n=t.dehanceValues_(t.values_);return n[e].apply(n,arguments)}}function si(e){return function(t,n){let r=this[O];return r.atom_.reportObserved(),r.dehanceValues_(r.values_)[e]((e,r)=>t.call(n,e,r,this))}}function ci(e){return function(){let t=this[O];t.atom_.reportObserved();let n=t.dehanceValues_(t.values_),r=arguments[0];return arguments[0]=(e,t,n)=>r(e,t,n,this),n[e].apply(n,arguments)}}let li=b(`ObservableArrayAdministration`,ri);function ui(e){return h(e)&&li(e[O])}let di={},fi=`delete`;var pi=class{constructor(e,t=fe,n=`ObservableMap@`+u()){this.enhancer_=void 0,this.name_=void 0,this[O]=di,this.data_=void 0,this.hasMap_=void 0,this.keysAtom_=void 0,this.interceptors_=void 0,this.changeListeners_=void 0,this.dehancer=void 0,this.enhancer_=t,this.name_=n,Ai(()=>{this.keysAtom_=se(`${this.name_}.keys()`),this.data_=new Map,this.hasMap_=new Map,e&&this.merge(e)})}has_(e){return this.data_.has(e)}has(e){if(!P.trackingDerivation)return this.has_(e);let t=this.hasMap_.get(e);if(!t){let n=t=new Et(this.has_(e),me,`${this.name_}.${te(e)}?`,!1);this.hasMap_.set(e,n),n.onBUOL=new Set([()=>this.hasMap_.delete(e)])}return t.get()}set(e,t){let n=this.has_(e);if(Wr(this)){let r=Kr(this,{type:n?ti:`add`,object:this,newValue:t,name:e});if(!r)return this;t=r.newValue}return n?this.updateValue_(e,t):this.addValue_(e,t),this}delete(e){if(Pt(this.keysAtom_),Wr(this)&&!Kr(this,{type:fi,object:this,name:e}))return!1;if(this.has_(e)){let t=vn(),n=qr(this),r=n||t?{observableKind:`map`,debugObjectName:this.name_,type:fi,object:this,oldValue:this.data_.get(e).value_,name:e}:null;return t&&bn(r),Lr(()=>{var t;this.keysAtom_.reportChanged(),(t=this.hasMap_.get(e))==null||t.setNewValue_(!1),this.data_.get(e).setNewValue_(void 0),this.data_.delete(e)}),n&&Yr(this,r),t&&Sn(),!0}return!1}updateValue_(e,t){let n=this.data_.get(e);if(t=n.prepareNewValue_(t),t!==P.UNCHANGED){let r=vn(),i=qr(this),a=i||r?{observableKind:`map`,debugObjectName:this.name_,type:ti,object:this,oldValue:n.value_,name:e,newValue:t}:null;r&&bn(a),n.setNewValue_(t),i&&Yr(this,a),r&&Sn()}}addValue_(e,t){Pt(this.keysAtom_),Lr(()=>{var n;let r=new Et(t,this.enhancer_,`${this.name_}.${te(e)}`,!1);this.data_.set(e,r),t=r.value_,(n=this.hasMap_.get(e))==null||n.setNewValue_(!0),this.keysAtom_.reportChanged()});let n=vn(),r=qr(this),i=r||n?{observableKind:`map`,debugObjectName:this.name_,type:`add`,object:this,name:e,newValue:t}:null;n&&bn(i),r&&Yr(this,i),n&&Sn()}get(e){return this.has(e)?this.dehanceValue_(this.data_.get(e).get()):this.dehanceValue_(void 0)}getOrInsert(e,t){return this.has(e)||this.set(e,t),this.get(e)}getOrInsertComputed(e,t){return this.has(e)||this.set(e,t(e)),this.get(e)}dehanceValue_(e){return this.dehancer===void 0?e:this.dehancer(e)}keys(){return this.keysAtom_.reportObserved(),this.data_.keys()}values(){let e=this,t=this.keys();return hi({next(){let{done:n,value:r}=t.next();return{done:n,value:n?void 0:e.get(r)}}})}entries(){let e=this,t=this.keys();return hi({next(){let{done:n,value:r}=t.next();return{done:n,value:n?void 0:[r,e.get(r)]}}})}[Symbol.iterator](){return this.entries()}forEach(e,t){for(let[n,r]of this)e.call(t,r,n,this)}merge(e){return mi(e)&&(e=new Map(e)),Lr(()=>{g(e)?w(e).forEach(t=>this.set(t,e[t])):Array.isArray(e)?e.forEach(([e,t])=>this.set(e,t)):x(e)?(S(e)||n(19,e),e.forEach((e,t)=>this.set(t,e))):e!=null&&n(20,e)}),this}clear(){Lr(()=>{Bt(()=>{for(let e of this.keys())this.delete(e)})})}replace(e){return Lr(()=>{let t=gi(e),n=new Map,r=!1;for(let e of this.data_.keys())if(!t.has(e))if(this.delete(e))r=!0;else{let t=this.data_.get(e);n.set(e,t)}for(let[e,i]of t.entries()){let t=this.data_.has(e);if(this.set(e,i),this.data_.has(e)){let i=this.data_.get(e);n.set(e,i),t||(r=!0)}}if(!r)if(this.data_.size!==n.size)this.keysAtom_.reportChanged();else{let e=this.data_.keys(),t=n.keys(),r=e.next(),i=t.next();for(;!r.done;){if(r.value!==i.value){this.keysAtom_.reportChanged();break}r=e.next(),i=t.next()}}this.data_=n}),this}get size(){return this.keysAtom_.reportObserved(),this.data_.size}toString(){return`[object ObservableMap]`}toJSON(){return Array.from(this)}get[Symbol.toStringTag](){return`Map`}},mi=b(`ObservableMap`,pi);function hi(e){return e[Symbol.toStringTag]=`MapIterator`,Ii(e)}function gi(e){if(x(e)||mi(e))return e;if(Array.isArray(e))return new Map(e);if(g(e)){let t=new Map;for(let n in e)t.set(n,e[n]);return t}else return n(21,e)}let _i={};var vi=class{constructor(e,t=fe,n=`ObservableSet@`+u()){this.name_=void 0,this[O]=_i,this.data_=new Set,this.atom_=void 0,this.changeListeners_=void 0,this.interceptors_=void 0,this.dehancer=void 0,this.enhancer_=void 0,this.name_=n,this.enhancer_=(e,r)=>t(e,r,n),Ai(()=>{this.atom_=se(this.name_),e&&this.replace(e)})}dehanceValue_(e){return this.dehancer===void 0?e:this.dehancer(e)}clear(){Lr(()=>{Bt(()=>{for(let e of this.data_.values())this.delete(e)})})}forEach(e,t){for(let n of this)e.call(t,n,n,this)}get size(){return this.atom_.reportObserved(),this.data_.size}add(e){if(Pt(this.atom_),Wr(this)){let t=Kr(this,{type:`add`,object:this,newValue:e});if(!t)return this;e=t.newValue}if(!this.has(e)){Lr(()=>{e=this.enhancer_(e,void 0),this.data_.add(e),this.atom_.reportChanged()});let t=vn(),n=qr(this),r=n||t?{observableKind:`set`,debugObjectName:this.name_,type:`add`,object:this,newValue:e}:null;t&&bn(r),n&&Yr(this,r),t&&Sn()}return this}delete(e){if(Wr(this)&&!Kr(this,{type:fi,object:this,oldValue:e}))return!1;if(this.has(e)){let t=vn(),n=qr(this),r=n||t?{observableKind:`set`,debugObjectName:this.name_,type:fi,object:this,oldValue:e}:null;return t&&bn(r),Lr(()=>{this.atom_.reportChanged(),this.data_.delete(e)}),n&&Yr(this,r),t&&Sn(),!0}return!1}has(e){return this.atom_.reportObserved(),this.data_.has(this.dehanceValue_(e))}entries(){let e=this.values();return bi({next(){let{value:t,done:n}=e.next();return n?{value:void 0,done:n}:{value:[t,t],done:n}}})}keys(){return this.values()}values(){this.atom_.reportObserved();let e=this,t=this.data_.values();return bi({next(){let{value:n,done:r}=t.next();return r?{value:void 0,done:r}:{value:e.dehanceValue_(n),done:r}}})}intersection(e){return new Set(this).intersection(e)}union(e){return new Set(this).union(e)}difference(e){return new Set(this).difference(e)}symmetricDifference(e){return new Set(this).symmetricDifference(e)}isSubsetOf(e){return new Set(this).isSubsetOf(e)}isSupersetOf(e){return new Set(this).isSupersetOf(e)}isDisjointFrom(e){return new Set(this).isDisjointFrom(e)}replace(e){return yi(e)&&(e=new Set(e)),Array.isArray(e)||C(e)?Lr(()=>{let t=C(e)?e:new Set(e);if(t.size===0){this.clear();return}if(this.data_.size===0){t.forEach(e=>this.add(e));return}for(let e of this.data_.values())t.has(this.dehanceValue_(e))||this.delete(e);t.forEach(e=>this.add(e))}):e!=null&&n(41,e),this}toJSON(){return Array.from(this)}toString(){return`[object ObservableSet]`}[Symbol.iterator](){return this.values()}get[Symbol.toStringTag](){return`Set`}},yi=b(`ObservableSet`,vi);function bi(e){return e[Symbol.toStringTag]=`SetIterator`,Ii(e)}let xi=Object.create(null),Si=`remove`;var L=class{constructor(e,t=new Map,r,i=He){this.target_=void 0,this.values_=void 0,this.name_=void 0,this.defaultAnnotation_=void 0,this.keysAtom_=void 0,this.changeListeners_=void 0,this.interceptors_=void 0,this.proxy_=void 0,this.isPlainObject_=void 0,this.appliedAnnotations_=void 0,this.pendingKeys_=void 0,this.lazyComputedKeys_=void 0,this.lazyObservableKeys_=void 0,this.target_=e,this.values_=t,this.name_=r,this.defaultAnnotation_=i,this.keysAtom_=new ae(`${this.name_}.keys`),this.isPlainObject_=g(this.target_),Ri(this.defaultAnnotation_)||n(`defaultAnnotation must be valid annotation`),this.appliedAnnotations_={}}getObservablePropValue_(e){return(this.values_.get(e)??this.materializeLazyComputed_(e)??this.materializeLazyObservable_(e)).get()}materializeLazyComputed_(e){let t=this.lazyComputedKeys_?.get(e);if(!t)return;this.lazyComputedKeys_.delete(e),this.lazyComputedKeys_.size===0&&(this.lazyComputedKeys_=void 0);let n=t();return this.values_.set(e,n),n}materializeLazyObservable_(e){let t=this.lazyObservableKeys_?.get(e);if(!t)return;this.lazyObservableKeys_.delete(e),this.lazyObservableKeys_.size===0&&(this.lazyObservableKeys_=void 0);let n=t();return this.values_.set(e,n),n}setObservablePropValue_(e,t){let n=this.values_.get(e)??this.materializeLazyComputed_(e)??this.materializeLazyObservable_(e);if(n instanceof Ot)return n.set(t),!0;if(Wr(this)){let n=Kr(this,{type:ti,object:this.proxy_||this.target_,name:e,newValue:t});if(!n)return null;t=n.newValue}if(t=n.prepareNewValue_(t),t!==P.UNCHANGED){let r=qr(this),i=vn(),a=r||i?{type:ti,observableKind:`object`,debugObjectName:this.name_,object:this.proxy_||this.target_,oldValue:n.value_,name:e,newValue:t}:null;i&&bn(a),n.setNewValue_(t),r&&Yr(this,a),i&&Sn()}return!0}get_(e){return P.trackingDerivation&&!T(this.target_,e)&&this.has_(e),this.target_[e]}set_(e,t,n=!1){return T(this.target_,e)?this.values_.has(e)?this.setObservablePropValue_(e,t):n?Reflect.set(this.target_,e,t):(this.target_[e]=t,!0):this.extend_(e,{value:t,enumerable:!0,writable:!0,configurable:!0},this.defaultAnnotation_,n)}has_(e){if(!P.trackingDerivation)return e in this.target_;this.pendingKeys_||=new Map;let t=this.pendingKeys_.get(e);return t||(t=new Et(e in this.target_,me,`${this.name_}.${te(e)}?`,!1),this.pendingKeys_.set(e,t)),t.get()}extend_(e,t,n,r=!1){if(n===!0&&(n=this.defaultAnnotation_),n===!1)return this.defineProperty_(e,t,r);Ei(this,n,e);let i=n.extend_(this,e,t,r);return i&&Ti(this,n,e),i}defineProperty_(e,t,n=!1){Pt(this.keysAtom_);try{nn();let i=this.delete_(e);if(!i)return i;if(Wr(this)){let n=Kr(this,{object:this.proxy_||this.target_,name:e,type:`add`,newValue:t.value});if(!n)return null;let{newValue:i}=n;t.value!==i&&(t=r({},t,{value:i}))}if(n){if(!Reflect.defineProperty(this.target_,e,t))return!1}else a(this.target_,e,t);this.notifyPropertyAddition_(e,t.value)}finally{rn()}return!0}defineObservableProperty_(e,t,n,r=!1){Pt(this.keysAtom_);try{nn();let i=this.delete_(e);if(!i)return i;if(Wr(this)){let n=Kr(this,{object:this.proxy_||this.target_,name:e,type:`add`,newValue:t});if(!n)return null;t=n.newValue}let o=Ci(e),s={configurable:P.safeDescriptors?this.isPlainObject_:!0,enumerable:!0,get:o.get,set:o.set};if(r){if(!Reflect.defineProperty(this.target_,e,s))return!1}else a(this.target_,e,s);let c=new Et(t,n,`${this.name_}.${e.toString()}`,!1);this.values_.set(e,c),this.notifyPropertyAddition_(e,c.value_)}finally{rn()}return!0}defineComputedProperty_(e,t,n=!1){Pt(this.keysAtom_);try{nn();let r=this.delete_(e);if(!r)return r;if(Wr(this)&&!Kr(this,{object:this.proxy_||this.target_,name:e,type:`add`,newValue:void 0}))return null;t.name||=`${this.name_}.${e.toString()}`,t.context=this.proxy_||this.target_;let i=Ci(e),o={configurable:P.safeDescriptors?this.isPlainObject_:!0,enumerable:!1,get:i.get,set:i.set};if(n){if(!Reflect.defineProperty(this.target_,e,o))return!1}else a(this.target_,e,o);this.values_.set(e,new Ot(t)),this.notifyPropertyAddition_(e,void 0)}finally{rn()}return!0}delete_(e,t=!1){if(Pt(this.keysAtom_),!T(this.target_,e))return!0;if(Wr(this)&&!Kr(this,{object:this.proxy_||this.target_,name:e,type:Si}))return null;try{var n;nn();let r=qr(this),a=vn(),o=this.values_.get(e),s;if(!o&&(r||a)&&(s=i(this.target_,e)?.value),t){if(!Reflect.deleteProperty(this.target_,e))return!1}else delete this.target_[e];if(delete this.appliedAnnotations_[e],o&&(this.values_.delete(e),o instanceof Et&&(s=o.value_),cn(o)),this.keysAtom_.reportChanged(),(n=this.pendingKeys_)==null||(n=n.get(e))==null||n.set(e in this.target_),r||a){let t={type:Si,observableKind:`object`,object:this.proxy_||this.target_,debugObjectName:this.name_,oldValue:s,name:e};a&&bn(t),r&&Yr(this,t),a&&Sn()}}finally{rn()}return!0}notifyPropertyAddition_(e,t){var n;let r=qr(this),i=vn();if(r||i){let n=r||i?{type:`add`,observableKind:`object`,debugObjectName:this.name_,object:this.proxy_||this.target_,name:e,newValue:t}:null;i&&bn(n),r&&Yr(this,n),i&&Sn()}(n=this.pendingKeys_)==null||(n=n.get(e))==null||n.set(!0),this.keysAtom_.reportChanged()}ownKeys_(){return this.keysAtom_.reportObserved(),ee(this.target_)}keys_(){return this.keysAtom_.reportObserved(),Object.keys(this.target_)}};function R(e,t){if(t&&wi(e)&&n(`Options can't be provided for already observable objects.`),T(e,O))return Oi(e)instanceof L||n(`Cannot convert '${ki(e)}' into observable object:\nThe target is already observable of different type.\nExtending builtins is not supported.`),e;Object.isExtensible(e)||n(`Cannot make the designated object observable; it is not extensible`);let r=t?.name??`${g(e)?`ObservableObject`:e.constructor.name}@${u()}`;return v(e,O,new L(e,new Map,String(r),rt(t))),e}let z=b(`ObservableObjectAdministration`,L);function Ci(e){return xi[e]||(xi[e]={get(){return this[O].getObservablePropValue_(e)},set(t){return this[O].setObservablePropValue_(e,t)}})}function wi(e){return h(e)?z(e[O]):!1}function Ti(e,t,n){e.appliedAnnotations_[n]=t}function Ei(e,t,r){if(Ri(t)||n(`Cannot annotate '${e.name_}.${r.toString()}': Invalid annotation.`),!ve(t)&&T(e.appliedAnnotations_,r)){let i=`${e.name_}.${r.toString()}`,a=e.appliedAnnotations_[r].annotationType_,o=t.annotationType_;n(`Cannot apply '${o}' to '${i}':\nThe field is already annotated with '${a}'.\nRe-annotating fields is not allowed.\nUse 'override' annotation for methods overridden by subclass.`)}}function Di(e,t){if(typeof e==`object`&&e){if(ui(e))return t!==void 0&&n(23),e[O].atom_;if(yi(e))return e.atom_;if(mi(e)){if(t===void 0)return e.keysAtom_;let r=e.data_.get(t)||e.hasMap_.get(t);return r||n(25,t,ki(e)),r}if(wi(e)){if(!t)return n(26);let r=e[O],i=r.values_.get(t)??r.materializeLazyComputed_(t)??r.materializeLazyObservable_(t);return i||n(27,t,ki(e)),i}if(oe(e)||kt(e)||gn(e))return e}else if(p(e)&&gn(e[O]))return e[O];n(28)}function Oi(e,t){if(e||n(29),t!==void 0)return Oi(Di(e,t));if(oe(e)||kt(e)||gn(e)||mi(e)||yi(e))return e;if(e[O])return e[O];n(24,e)}function ki(e,t){let n;if(t!==void 0)n=Di(e,t);else if(Ln(e))return e.name;else n=wi(e)||mi(e)||yi(e)?Oi(e):Di(e);return n.name_}function Ai(e){let t=Vt(),n=wt(!0);nn();try{return e()}finally{rn(),Tt(n),Ht(t)}}let ji=o.toString;function Mi(e,t,n=-1){return Ni(e,t,n)}function Ni(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;let a=typeof e;if(a!==`function`&&a!==`object`&&typeof t!=`object`)return!1;let o=ji.call(e);if(o!==ji.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=Pi(e),t=Pi(t);let s=o===`[object Array]`;if(!s){if(typeof e!=`object`||typeof t!=`object`)return!1;let n=e.constructor,r=t.constructor;if(n!==r&&!(p(n)&&n instanceof n&&p(r)&&r instanceof r)&&`constructor`in e&&`constructor`in t)return!1}if(n===0)return!1;n<0&&(n=-1),r||=[],i||=[];let c=r.length;for(;c--;)if(r[c]===e)return i[c]===t;if(r.push(e),i.push(t),s){if(c=e.length,c!==t.length)return!1;for(;c--;)if(!Ni(e[c],t[c],n-1,r,i))return!1}else{let a=Object.keys(e),o=a.length;if(Object.keys(t).length!==o)return!1;for(let s=0;s<o;s++){let o=a[s];if(!(T(t,o)&&Ni(e[o],t[o],n-1,r,i)))return!1}}return r.pop(),i.pop(),!0}function Pi(e){return ui(e)?e.slice():x(e)||mi(e)||C(e)||yi(e)?Array.from(e.entries()):e}let Fi=globalThis.Iterator?.prototype||{};function Ii(e){return e[Symbol.iterator]=Li,r(Object.create(Fi),e)}function Li(){return this}function Ri(e){return e instanceof Object&&typeof e.annotationType_==`string`&&p(e.make_)&&p(e.extend_)}{let e=globalThis;[`Symbol`,`Map`,`Set`,`Proxy`].forEach(t=>{e[t]===void 0&&n(`MobX requires global '${t}' to be available or polyfilled`)})}typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__==`object`&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:Cn,extras:{getDebugName:ki},$mobx:O}),e.$mobx=O,e.FlowCancellationError=tr,e.ObservableMap=pi,e.ObservableSet=vi,e.Reaction=dn,e._allowStateChanges=Ct,e._allowStateChangesInsideComputed=In,e._allowStateReadsEnd=Ut,e._allowStateReadsStart=M,e._autoAction=Nn,e._autoActionBound=Fn,e._endAction=St,e._getAdministration=Oi,e._getGlobalState=Yt,e._interceptReads=dr,e._isComputingDerivation=Nt,e._resetGlobalState=Xt,e._startAction=xt,e.action=Mn,e.actionBound=Pn,e.autorun=Rn,e.compareDefault=de,e.compareIdentity=ce,e.compareShallow=ue,e.compareStructural=le,e.computed=j,e.computedStruct=mt,e.configure=qn,e.createAtom=se,e.defineProperty=Or,e.entries=Cr,e.extendObservable=Jn,e.flow=or,e.flowBound=sr,e.flowResult=lr,e.get=Dr,e.getAtom=Di,e.getDebugName=ki,e.getDependencyTree=Yn,e.getObserverTree=Zn,e.has=Er,e.intercept=fr,e.isAction=Ln,e.isBoxedObservable=Dt,e.isComputed=gr,e.isComputedProp=_r,e.isFlow=ur,e.isFlowCancellationError=nr,e.isObservable=yr,e.isObservableArray=ui,e.isObservableMap=mi,e.isObservableObject=wi,e.isObservableProp=br,e.isObservableSet=yi,e.keys=xr,e.makeAutoObservable=Qr,e.makeObservable=Xr,e.observable=A,e.observableDeep=lt,e.observableRef=st,e.observableShallow=ct,e.observableStruct=ut,e.observe=Ar,e.onBecomeObserved=Un,e.onBecomeUnobserved=Wn,e.onReactionError=fn,e.override=_e,e.ownKeys=kr,e.reaction=Vn,e.remove=Tr,e.runInAction=In,e.set=wr,e.spy=Cn,e.toJS=Ir,e.transaction=Lr,e.untracked=Bt,e.values=Sr,e.when=Rr})),Hv=we(((e,t)=>{process.env.NODE_ENV===`production`?t.exports=Bv():t.exports=Vv()}))();function Uv(e){if(Array.isArray(e))return Object.freeze(e.map(Uv));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]=Uv(r);return Object.freeze(t)}return e}function Wv(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 Gv(e){return typeof e==`string`?e:String(e)}function Kv(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 qv(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")`)}var Jv=class extends Error{constructor(e,t){super(t),this.variable=e}};function Yv(e){return e instanceof Jv||e instanceof Error&&e.cause!==void 0&&Yv(e.cause)}var Xv=class extends Error{name=`TemplateError`;kind=`EvalError`;pos;source;constructor(e,t,n={}){super(e,{cause:n.cause}),this.pos=t,this.source=n.source}get sourceSnippet(){return this.source?ay(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}},Zv=class extends Xv{name=`ParseError`;kind=`ParseError`;expected;found;constructor(e,t,n={}){super(e,t,n),this.expected=n.expected,this.found=n.found}},Qv=class extends Xv{name=`EvalError`;kind=`EvalError`},$v=class extends Qv{name=`FuncNotFoundError`;kind=`FuncNotFoundError`;funcName;suggestions;constructor(e,t,n={}){let r=oy(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}},ey=class extends Qv{name=`ArgCountError`;kind=`ArgCountError`;funcName;accepted;got;constructor(e,t,n,r,i={}){let a=t.minimum===t.maximum?`${t.minimum}`:`at least ${t.minimum}`;super(`wrong number of args for ${e}: want ${a} got ${n}`,r,i),this.funcName=e,this.accepted=t,this.got=n}},ty=class extends Qv{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}},ny=class extends ty{constructor(e,t,n,r,i={}){super(e,t,`integer`,String(n),r,i),this.message=Number.isInteger(Number(n))?`integer out of range: ${String(n)}`:`expected integer; found ${String(n)}`}},ry=class extends Qv{name=`MissingFieldError`;kind=`MissingFieldError`;path;constructor(e,t,n={}){super(`field "${e.join(`.`)}" not found on receiver`,t,n),this.path=e}},iy=class extends Qv{name=`FailError`;kind=`FailError`;constructor(e,t={line:0,column:0,offset:0},n={}){super(e,t,n)}};function ay(e,t){let n=e.split(`
|
|
58
58
|
`),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(`
|
|
59
|
-
`)}function
|
|
59
|
+
`)}function oy(e,t){if(t.length===0)return[];let n=t.map(t=>({name:t,dist:sy(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 sy(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 cy(e){throw Error(`unhandled node kind: ${JSON.stringify(e)}`)}const ly=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`]]),uy={left:`{{`,right:`}}`};var dy=class{src;leftDelim;rightDelim;offset=0;line=1;column=1;mode=`text`;pending;constructor(e,t=uy){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 Zv(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&&fy(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);fy(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);fy(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(;fy(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`;fy(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&&(my(e)||py(e)&&my(this.src[this.offset+1]??``)||e===`.`&&my(this.src[this.offset+1]??``)))return this.readNumber(t);if(e===`.`)return this.readDotOrField(t);if(e!==void 0&&yy(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===`
|
|
60
60
|
`)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===`
|
|
61
|
-
`)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(
|
|
61
|
+
`)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(py(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);hy(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);gy(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);_y(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);return this.finishNumber(t,e)}}for(;my(this.src[this.offset]??``)||this.src[this.offset]===`_`;)this.advanceBy(1);if(this.src[this.offset]===`.`)for(this.advanceBy(1);my(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),py(this.src[this.offset]??``)&&this.advanceBy(1);my(this.src[this.offset]??``);)this.advanceBy(1);return this.src[this.offset]===`i`&&this.advanceBy(1),this.finishNumber(t,e)}isHexFloatTail(e){return hy(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);by(this.src[this.offset]??``);)this.advanceBy(1);for(;this.src[this.offset]===`.`&&yy(this.src[this.offset+1]??``);)for(this.advanceBy(1);by(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),!yy(this.src[this.offset]??``))return this.makeToken(`Dot`,`.`,e);for(;by(this.src[this.offset]??``);)this.advanceBy(1);for(;this.src[this.offset]===`.`&&yy(this.src[this.offset+1]??``);)for(this.advanceBy(1);by(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(;by(this.src[this.offset]??``);)this.advanceBy(1);let n=this.src.slice(t,this.offset),r=ly.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===`
|
|
62
62
|
`)this.advanceBy(1);else return}}advanceBy(e){for(let t=0;t<e;t++){let e=this.src[this.offset];this.offset+=1,e===`
|
|
63
|
-
`?(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
|
|
64
|
-
`}function
|
|
65
|
-
`;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 Xv(`bad escape sequence \\${o}`,t,{expected:`valid escape sequence`,found:`\\${o}`,source:n})}}return r}function Ly(e,t,n){let r=Iy(`"${e.slice(1,-1).replace(/"/g,`\\"`)}"`,t,n);if(r.length===0)throw new Xv(`empty rune literal`,t,{source:n});return r.codePointAt(0)??0}function Ry(e,t){if(t(e)!==!1)for(let n of zy(e))Ry(n,t)}function zy(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 sy(e)}}const By=Symbol(`go-template-js.MISSING`);function Vy(e,t){if(e==null)return By;if(e instanceof Map)return e.has(t)?e.get(t):By;if(Array.isArray(e))return By;if(typeof e==`object`){let n=e;return t in n?n[t]:By}return By}function Hy(e,t){let n=e;for(let e of t){if(n===By)return By;n=Vy(n,e)}return n}function Uy(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)=>Uy(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)||!Uy(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=>Uy(e[n],t[n])):!1}return!1}const Wy=new WeakSet;function Gy(e){return Wy.add(e),e}function Ky(e){return Wy.has(e)}function qy(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 Jy(e,t){return{eq:{fn:(e,...t)=>t.some(t=>Zy(e,t)),argTypes:[`comparable`,`comparable`],arity:{kind:`variadic`}},ne:{fn:(e,t)=>!Zy(e,t),argTypes:[`comparable`,`comparable`],arity:{kind:`exact`}},lt:{fn:(e,t)=>Qy(e,t)<0,argTypes:[`ordered`,`ordered`],arity:{kind:`exact`}},le:{fn:(e,t)=>Qy(e,t)<=0,argTypes:[`ordered`,`ordered`],arity:{kind:`exact`}},gt:{fn:(e,t)=>Qy(e,t)>0,argTypes:[`ordered`,`ordered`],arity:{kind:`exact`}},ge:{fn:(e,t)=>Qy(e,t)>=0,argTypes:[`ordered`,`ordered`],arity:{kind:`exact`}},len:{fn:e=>$y(e),argTypes:[`sized`],arity:{kind:`exact`}},index:{fn:(e,...t)=>{let n=e;for(let e of t)n=eb(n,e);return n},argTypes:[`collection`,`index-key`],arity:{kind:`variadic`}},slice:{fn:(e,...t)=>nb(e,t),argTypes:[`sliceable`,`int`],arity:{kind:`variadic`}},print:{fn:(...t)=>ab(t,e),argTypes:[`stringifiable`],arity:{kind:`variadic`},returnType:`string`},println:{fn:(...t)=>`${ab(t,e)}\n`,argTypes:[`stringifiable`],arity:{kind:`variadic`},returnType:`string`},printf:{fn:(n,...r)=>mb(n,r,e,t),argTypes:[`string`,`stringifiable`],arity:{kind:`variadic`},returnType:`string`},toString:{fn:n=>_b(n,e,t),argTypes:[`value`],arity:{kind:`exact`},returnType:`string`},toStrings:{fn:n=>n.map(n=>_b(n,e,t)),argTypes:[`list`],arity:{kind:`exact`}},call:{fn:(e,...t)=>e(...t),argTypes:[`callable`,`value`],arity:{kind:`variadic`}},html:{fn:(...t)=>cb(ab(t,e)),argTypes:[`stringifiable`],arity:{kind:`variadic`},returnType:`string`},js:{fn:(...t)=>db(ab(t,e)),argTypes:[`stringifiable`],arity:{kind:`variadic`},returnType:`string`},urlquery:{fn:(...t)=>pb(ab(t,e)),argTypes:[`stringifiable`],arity:{kind:`variadic`},returnType:`string`},not:{fn:e=>!qy(e),argTypes:[`truthy`],arity:{kind:`exact`}}}}function Yy(){return{and:Gy({argTypes:[`truthy`,`truthy`],arity:{kind:`variadic`},fn:(...e)=>{let t=!0;for(let n of e)if(t=n(),!qy(t))return t;return t}}),or:Gy({argTypes:[`truthy`,`truthy`],arity:{kind:`variadic`},fn:(...e)=>{let t=!1;for(let n of e)if(t=n(),qy(t))return t;return t}})}}function Xy(e,t){return{...Jy(e,t),...Yy()}}function Zy(e,t){return typeof e==`number`&&typeof t==`bigint`?BigInt(e)===t:typeof e==`bigint`&&typeof t==`number`?e===BigInt(t):Uy(e,t)}function Qy(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 $y(e){return typeof e==`string`||Array.isArray(e)?e.length:e instanceof Map||e instanceof Set?e.size:Object.keys(e).length}function eb(e,t){if(Array.isArray(e)||typeof e==`string`){let n=tb(t,e.length);if(n===e.length)throw Error(`index out of range: ${n}`);return e[n]}if(e instanceof Map)return e.get(t);if(typeof e==`object`&&e){if(typeof t!=`string`)throw Error(`index: object index must be string, got ${rb(t)}`);return e[t]}throw Error(`index: cannot index ${rb(e)}`)}function tb(e,t){let n=typeof e==`bigint`?Number(e):e;if(typeof n!=`number`||!Number.isInteger(n))throw Error(`cannot index slice/array with type ${ib(e)}`);if(n<0||n>t)throw Error(`index out of range: ${String(e)}`);return n}function nb(e,t){if(t.length>3)throw Error(`too many slice indexes: ${t.length}`);if(typeof e==`string`&&t.length>2)throw Error(`cannot 3-index slice a string`);let n=e.length,r=[0,n,n];t.forEach((e,t)=>{r[t]=tb(e,n)});let[i,a,o]=r;if(i>a)throw Error(`invalid slice index: ${i} > ${a}`);if(a>o)throw Error(`invalid slice index: ${a} > ${o}`);return e.slice(i,a)}function rb(e){return e===null?`null`:e===void 0?`undefined`:Array.isArray(e)?`array`:e instanceof Map?`Map`:typeof e}function ib(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 ab(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+=ob(a,t),r=o}return n}function ob(e,t){return e==null?`<nil>`:typeof e==`string`?e:t(e)}const sb={"\0":`�`,'"':`"`,"'":`'`,"&":`&`,"<":`<`,">":`>`};function cb(e){return e.replace(/[\0"'&<>]/g,e=>sb[e]??e)}const lb={"\\":`\\\\`,"'":`\\'`,'"':`\\"`,"<":`\\u003C`,">":`\\u003E`,"&":`\\u0026`,"=":`\\u003D`},ub=/^[\p{L}\p{M}\p{N}\p{P}\p{S}]$/u;function db(e){let t=``;for(let n of e){let e=lb[n];if(e!==void 0){t+=e;continue}let r=n.codePointAt(0);if(r<32||r>=128&&!ub.test(n)){t+=`\\u${r.toString(16).toUpperCase().padStart(4,`0`)}`;continue}t+=n}return t}const fb=new TextEncoder;function pb(e){let t=``,n=fb.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 mb(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+=hb(l??``,u,d,n,r),o=c+1}return i}function hb(e,t,n,r,i){switch(e){case`s`:return typeof n==`string`?gb(t,n):gb(t,ob(n,r));case`d`:return typeof n!=`number`&&typeof n!=`bigint`?`%!${e}(${ib(n)}=${ob(n,r)})`:gb(t,String(typeof n==`bigint`?n:Math.trunc(n)));case`v`:return gb(t,_b(n,r,i));case`q`:return gb(t,JSON.stringify(ob(n,r)));case`f`:{if(typeof n!=`number`&&typeof n!=`bigint`)return`%!${e}(${ib(n)}=${ob(n,r)})`;let i=t.includes(`.`)?Number(t.split(`.`)[1]):6;return gb(t,Number(n).toFixed(i))}case`t`:return gb(t,qy(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 gb(t,r)}return typeof n!=`number`&&typeof n!=`bigint`?`%!${e}(${ib(n)}=${ob(n,r)})`:typeof n==`bigint`?gb(t,n.toString(16)):gb(t,Math.trunc(n).toString(16));default:return`%!${e}(${ib(n)}=${ob(n,r)})`}}function gb(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 _b(e,t,n){return e==null?`<nil>`:typeof e==`string`?e:n(e)?t(e):Array.isArray(e)?`[${e.map(e=>_b(e,t,n)).join(` `)}]`:e instanceof Map?vb([...e.entries()],t,n):yb(e)?vb(Object.entries(e),t,n):String(e)}function vb(e,t,n){let r=e=>_b(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 yb(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 bb(e){return{dot:e,root:e,parent:void 0,vars:new Map}}function xb(e,t){return{dot:t,root:e.root,parent:e,vars:new Map}}function Sb(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 Cb(e,t,n){e.vars.set(t,n)}const wb=[`string`,`int`,`truncating-int`,`float`,`bool`,`T`,`ordered`,`list`,`dict`,`sized`,`comparable`,`stringifiable`,`liftable`,`callable`,`collection`,`index-key`,`sliceable`,`truthy`,`reflective`,`value`,`serializable`],Tb=new Set([`default`,`zero`,`error`]);function Eb(e){if(e===void 0)return`default`;if(Tb.has(e))return e;throw Error(`EngineConfig.missingKey: expected "default" | "zero" | "error", got ${Db(e)}`)}function Db(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 Ob(e){if(e!==void 0){if(typeof e!=`object`||!e)throw Error(`EngineConfig.delims: expected { left, right } object, got ${Db(e)}`);if(typeof e.left!=`string`||e.left.length===0)throw Error(`EngineConfig.delims.left: expected non-empty string, got ${Db(e.left)}`);if(typeof e.right!=`string`||e.right.length===0)throw Error(`EngineConfig.delims.right: expected non-empty string, got ${Db(e.right)}`);return{left:e.left,right:e.right}}}function kb(e){switch(e.kind){case`exact`:return!1;case`variadic`:return!0;case`alternating`:return!0}}function Ab(e){let t=new Set(wb);for(let[n,r]of Object.entries(e)){if(r.argTypes.forEach((e,r)=>{if(!t.has(e))throw Error(`EngineConfig.funcs.${n}: argTypes[${r}] is ${JSON.stringify(e)}, which is not an ArgType; declare one of ${wb.join(`, `)}`)}),kb(r.arity)&&r.argTypes.length===0)throw Error(`EngineConfig.funcs.${n}: arity ${JSON.stringify(r.arity.kind)} needs at least one declared argType (it reads its repeating slot from the end of argTypes); declare the slots the Go signature has, or use { kind: "exact" }`);if(r.arity.kind===`alternating`&&(!Number.isSafeInteger(r.arity.minimum)||r.arity.minimum<0))throw Error(`EngineConfig.funcs.${n}: arity "alternating" needs a non-negative integer minimum, got ${String(r.arity.minimum)}; the gate rejects every count below it, so a negative or non-finite minimum would disable the lower bound`)}return e}const jb=Object.freeze({kind:`break`}),Mb=Object.freeze({kind:`continue`}),Nb={kind:`none`};let Pb;(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{Pb=(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 Fb(e){let t=new Set,n=e=>{Ry(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 Ib={kind:`dynamic`};function Lb(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=ix(e);return typeof t==`number`||typeof t==`bigint`?{kind:`literal`,value:t}:Ib}case`Pipe`:{if(e.decls.length!==0||e.cmds.length!==1)return Ib;let t=e.cmds[0];if(t===void 0)return Ib;let n=t.args[0];return n===void 0||n.type!==`Identifier`?Ib:{kind:`call`,name:n.ident,args:t.args.slice(1).map(Lb)}}default:return Ib}}function Rb(e){let t=[],n=e=>{Ry(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(Lb);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 zb=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??qb,this.isT=e.isT??Bb,this.missingKey=Eb(e.missingKey),this.delims=Ob(e.delims),this.funcs=Ab({...Xy(this.toString,this.isT),...e.funcs??{}})}parse(e,t){let n=wy(e,this.delims,t);return Pb(n.source,e=>this.evalParsed(n,e),n.defines,Fb(n),Rb(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=bb(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 jb;case`Continue`:throw Mb;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 Zv(`unexpected ${e.type} at statement position`,e.pos,{source:n.source});default:sy(e)}}evalIf(e,t,n){qy(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(qy(r)){let i=xb(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=tx(r);try{if(a.length===0){e.elseList&&this.evalList(e.elseList,t,n);return}for(let[r,o]of a){let a=xb(t,o);if(i.length===1)Cb(a,i[0]?.idents[0]??`$`,o);else if(i.length>=2){let e=i[0]?.idents[0]??`$`,t=i[1]?.idents[0]??`$`;Cb(a,e,r),Cb(a,t,o)}try{this.evalList(e.list,a,n)}catch(e){if(e===Mb)continue;throw e}}}catch(e){if(e===jb)return;throw e}}evalTemplateInvoke(e,t,n){let r=Sy(n.defines,e.name);if(!r)throw new Zv(`template ${JSON.stringify(e.name)} is not defined`,e.pos,{source:n.source});let i=xb(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=xb(t,e.pipe?this.evalPipe(e.pipe,t,n):t.dot),i=Sy(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 Zv(`empty pipeline`,e.pos,{source:n.source});let r=this.evalCommand(e.cmds[0],t,n,Nb);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)Cb(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 Zv(`empty command`,e.pos,{source:n.source});let i=e.args[0];if(i.type!==`Identifier`){if(e.args.length>1)throw new Zv(`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 Qv(i.ident,i.pos,{source:n.source,available:Object.keys(this.funcs)});let o=e.args.slice(1),s=Ky(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)}return this.invoke(i.ident,a,c,e.pos,n)}invoke(e,t,n,r,i){Hb(e,t,n,r,i.source,this.toString,this.fromString,this.isT);try{return t.fn(...n)}catch(t){throw t instanceof ey?new ey(t.funcName,t.argIndex,t.expected,t.receivedSummary,r,{source:i.source}):t instanceof ry?new ry(t.message,r,{source:i.source}):t instanceof Yv?t:new Zv(`error calling ${e}: ${$b(t)}`,r,{source:i.source,cause: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 ix(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 Qv(e.ident,e.pos,{source:n.source,available:Object.keys(this.funcs)});return this.invoke(e.ident,t,[],e.pos,n)}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 Zv(`cannot evaluate ${e.type} as a value`,e.pos,{source:n.source})}}resolveFieldChain(e,t,n,r){let i=Hy(e,t);if(i!==By)return i;if(this.missingKey===`error`)throw new ny(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=Sb(t,i);if(!a.found)throw new Zv(`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(_b(e,this.toString,this.isT)))}};const Bb=e=>typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Map);function Vb(e){return new zb(e)}function Hb(e,t,n,r,i,a=qb,o=Kb,s=Bb){let{argTypes:c,arity:l}=t,u=Ub(c,l);if(n.length<u.minimum||n.length>u.maximum)throw new $v(e,u,n.length,r,{source:i});let d=Wb(c,l),f=-1,p=-1;for(let t=0;t<n.length;t++){let c=d(t),l=n[t];if(!Gb(c,l,a,s))throw(c===`int`||c===`truncating-int`)&&(typeof l==`number`||typeof l==`bigint`)?new ty(e,t+1,l,r,{source:i}):new ey(e,t+1,Qb(c),ex(l),r,{source:i});if(c===`liftable`&&typeof l==`string`&&(n[t]=o(l)),c===`truncating-int`?n[t]=Math.trunc(Number(l)):(c===`int`||c===`float`)&&(n[t]=Number(l)),c===`ordered`){if(f===-1)f=t;else if(!Yb(n[f],l))throw new ey(e,t+1,`${Qb(`ordered`)} of the same kind as ${ex(n[f])}`,ex(l),r,{source:i})}if(c===`comparable`){if(p===-1)p=t;else if(!Xb(n[p],l))throw new ey(e,t+1,`${Qb(`comparable`)} of the same kind as ${ex(n[p])}`,ex(l),r,{source:i})}}}function Ub(e,t){switch(t.kind){case`exact`:return{minimum:e.length,maximum:e.length};case`variadic`:return{minimum:e.length-1,maximum:1/0};case`alternating`:return{minimum:t.minimum,maximum:1/0}}}function Wb(e,t){let n=e.length;switch(t.kind){case`exact`:return t=>e[t];case`variadic`:return t=>e[Math.min(t,n-1)];case`alternating`:return t=>e[t%n]}}function Gb(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.isSafeInteger(t)||typeof t==`bigint`&&Number.isSafeInteger(Number(t));case`truncating-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 yb(t);case`sized`:return typeof t==`string`||Array.isArray(t)||t instanceof Map||t instanceof Set||yb(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||yb(t);case`callable`:return typeof t==`function`;case`collection`:return typeof t==`string`||Array.isArray(t)||t instanceof Map||yb(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 Jb(t);default:throw Error(`invalid ArgType: ${String(e)}`)}}function Kb(e){return e}function qb(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 ey(`<engine.toString>`,1,`string (or a consumer-supplied toString that flattens T)`,ex(e),{line:0,column:0,offset:0})}function Jb(e){try{return JSON.stringify(e)!==void 0}catch{return!1}}function Yb(e,t){return typeof e==typeof t||typeof e==`number`&&typeof t==`bigint`||typeof e==`bigint`&&typeof t==`number`}function Xb(e,t){let n=Zb(e),r=Zb(t);return n===`nil`||r===`nil`?!0:n===r}function Zb(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 Qb(e){switch(e){case`int`:return`integer (safe-integer number or bigint)`;case`truncating-int`:return`integer (finite number, truncated toward zero, 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 $b(e){return e instanceof Error?e.message:String(e)}function ex(e){return e===null?`null`:e===void 0?`undefined`:Array.isArray(e)?`array`:e instanceof Map?`Map`:typeof e}function tx(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?nx([...e.entries()]):e instanceof Set?[...e.values()].map((e,t)=>[t,e]):typeof e==`object`?nx(Object.entries(e)):[]}function nx(e){return[...e].sort((e,t)=>rx(e[0],t[0]))}function rx(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 ix(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 ax(e){if(!/^[+-]?\d+$/.test(e))return 0;let t=Number.parseInt(e,10);return Number.isSafeInteger(t)?t:0}function ox(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 sx(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 cx(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=sx(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 lx(e){if(typeof e==`bigint`)return e;if(typeof e==`number`)return BigInt(Math.trunc(e));if(typeof e==`string`){let t=sx(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 ux(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 dx(e){return JSON.stringify(e)??`null`}function fx(){return{atoi:{fn:e=>ax(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`int`},int:{fn:e=>cx(e),argTypes:[`value`],arity:{kind:`exact`},returnType:`int`},int64:{fn:e=>lx(e),argTypes:[`value`],arity:{kind:`exact`}},float64:{fn:e=>ox(e),argTypes:[`value`],arity:{kind:`exact`},returnType:`float`},toDecimal:{fn:e=>ux(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`int`},toRawJson:{fn:e=>dx(e),argTypes:[`serializable`],arity:{kind:`exact`},returnType:`string`}}}const px={h:36e11,m:6e10,s:1e9,ms:1e6,us:1e3,µs:1e3,ns:1};function mx(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*px[a],n=n.slice(e[0].length)}return t?-r:r}function hx(e){if(e===0)return`0s`;let t=!1,n=e;n<0&&(t=!0,n=-n);let r;return r=n<px.us?`${Math.floor(n)}ns`:n<px.ms?gx(n,px.us,3,`µs`):n<px.s?gx(n,px.ms,6,`ms`):_x(n),t?`-${r}`:r}function gx(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 _x(e){let t=Math.floor(e/px.h);e-=t*px.h;let n=Math.floor(e/px.m);e-=n*px.m;let r=Math.floor(e/px.s),i=e-r*px.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 vx(e){return e*px.s}function yx(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 bx(e,t){let n=t().getTime()-yx(e).getTime();return hx(Math.round(n/1e3)*1e9)}const xx=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],Sx=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],Cx=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],wx=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`];function Tx(e){return e<10?`0${e}`:String(e)}function Ex(e){return e<10?`00${e}`:e<100?`0${e}`:String(e)}function Dx(e){return e<10?` ${e}`:String(e)}function Ox(e){let t=e>=0?`+`:`-`,n=Math.abs(e);return`${t}${Tx(Math.floor(n/60))}${Tx(n%60)}`}function kx(e){let t=e>=0?`+`:`-`,n=Math.abs(e);return`${t}${Tx(Math.floor(n/60))}:${Tx(n%60)}`}function Ax(e){return`${e>=0?`+`:`-`}${Tx(Math.floor(Math.abs(e)/60))}`}function jx(e){return e===0?`Z`:Ox(e)}function Mx(e){return e===0?`Z`:kx(e)}function Nx(e){return e===0?`Z`:Ax(e)}function Px(e,t,n){let r=e*1e6,i=String(r).padStart(9,`0`).slice(0,t);return n?i.replace(/0+$/,``):i}const Fx=[[`.000000000`,e=>`.${Px(e.ms,9,!1)}`],[`.999999999`,e=>{let t=Px(e.ms,9,!0);return t?`.${t}`:``}],[`.000000`,e=>`.${Px(e.ms,6,!1)}`],[`.999999`,e=>{let t=Px(e.ms,6,!0);return t?`.${t}`:``}],[`.000`,e=>`.${Ex(e.ms)}`],[`.999`,e=>{let t=Ex(e.ms).replace(/0+$/,``);return t?`.${t}`:``}],[`January`,e=>xx[e.month-1]??`January`],[`Monday`,e=>Cx[e.weekday]??`Monday`],[`Z07:00`,e=>Mx(e.offsetMinutes)],[`-07:00`,e=>kx(e.offsetMinutes)],[`Z0700`,e=>jx(e.offsetMinutes)],[`-0700`,e=>Ox(e.offsetMinutes)],[`2006`,e=>String(e.year)],[`Jan`,e=>Sx[e.month-1]??`Jan`],[`Mon`,e=>wx[e.weekday]??`Mon`],[`MST`,e=>e.tzAbbr],[`-07`,e=>Ax(e.offsetMinutes)],[`Z07`,e=>Nx(e.offsetMinutes)],[`15`,e=>Tx(e.hour)],[`01`,e=>Tx(e.month)],[`02`,e=>Tx(e.day)],[`_2`,e=>Dx(e.day)],[`03`,e=>Tx(e.hour12)],[`04`,e=>Tx(e.minute)],[`05`,e=>Tx(e.second)],[`06`,e=>Tx(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 Ix(e,t){let n=``,r=0;for(;r<e.length;){let i=!1;for(let[a,o]of Fx)if(e.startsWith(a,r)){n+=o(t),r+=a.length,i=!0;break}i||(n+=e[r++])}return n}const Lx={year:`numeric`,month:`2-digit`,day:`2-digit`,weekday:`long`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hour12:!1};function Rx(e){let t=new Map;for(let n of e)t.set(n.type,n.value);return t}const zx=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`];function Bx(e,t){let n;try{new Intl.DateTimeFormat(`en-US`,{timeZone:t}),n=t}catch{n=`UTC`}let r=Rx(new Intl.DateTimeFormat(`en-US`,{...Lx,timeZone:n}).formatToParts(e)),i=parseInt(r.get(`hour`)??`0`,10)%24,a=Rx(new Intl.DateTimeFormat(`en-US`,{timeZone:n,timeZoneName:`short`}).formatToParts(e)).get(`timeZoneName`)??n,o=Vx(Rx(new Intl.DateTimeFormat(`en-US`,{timeZone:n,timeZoneName:`shortOffset`}).formatToParts(e)).get(`timeZoneName`)??`GMT`),s=zx.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 Vx(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 Hx(){return Intl.DateTimeFormat().resolvedOptions().timeZone}function Ux(e,t){return Ix(e,Bx(yx(t),Hx()))}function Wx(e,t,n){return Ix(e,Bx(yx(t),n))}function Gx(e,t){let n=yx(t),r=mx(e);return Number.isNaN(r)?n:new Date(n.getTime()+r/1e6)}function Kx(e){if(typeof e==`string`){let t=parseInt(e,10);return Number.isNaN(t)?`0s`:hx(vx(t))}return typeof e==`bigint`?hx(vx(Number(e))):typeof e==`number`?hx(vx(e)):`0s`}const qx=36e11*24*365,Jx=36e11*24*30,Yx=36e11*24,Xx=36e11,Zx=6e10,Qx=1e9;function $x(e){let t=mx(String(e));if(Number.isNaN(t))return`0s`;let n=Math.abs(t);return n>qx?`${Math.floor(n/qx)}y`:n>Jx?`${Math.floor(n/Jx)}mo`:n>Yx?`${Math.floor(n/Yx)}d`:n>Xx?`${Math.floor(n/Xx)}h`:n>Zx?`${Math.floor(n/Zx)}m`:n>Qx?`${Math.floor(n/Qx)}s`:`0s`}function eS(e){let t=Bx(yx(e),Hx());return`${t.year}-${String(t.month).padStart(2,`0`)}-${String(t.day).padStart(2,`0`)}`}function tS(e,t){let n=Bx(yx(e),t);return`${n.year}-${String(n.month).padStart(2,`0`)}-${String(n.day).padStart(2,`0`)}`}function nS(e){return e()}const rS=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],iS=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`];function aS(){return{year:2e3,month:1,day:1,hour:0,minute:0,second:0,ms:0,offsetMinutes:0,isPM:!1,hour12:!1}}function oS(e,t,n){return[e.slice(t,t+n),t+n]}function sS(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 cS(e,t){for(let[n,r]of rS.entries())if(e.startsWith(r,t))return[n+1,t+r.length];throw Error(`sprig toDate: expected month name at pos ${t}`)}function lS(e,t){for(let[n,r]of iS.entries())if(e.startsWith(r,t))return[n+1,t+r.length];throw Error(`sprig toDate: expected short month name at pos ${t}`)}function uS(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 dS(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 fS(e,t){if(e[t]===` `){let[n,r]=sS(e,t+1,1,1);return[n,r]}return sS(e,t,1,2)}function pS(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]=sS(e,i,2,2);i=o;let s=0;if(n&&e[i]===`:`){let[t,n]=sS(e,i+1,2,2);s=t,i=n}else if(!n){let[t,n]=sS(e,i,2,2);s=t,i=n}return[r*(a*60+s),i]}function mS(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]=sS(e,t+1,2,2);return[n*r*60,i]}return pS(e,t,n)}function hS(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 gS(e,t,n){let[r,i]=oS(e,t,n),a=parseInt(r.padEnd(9,`0`),10);return[Math.round(a/1e6),i]}function _S(e,t,n,r){let i={...r};switch(e){case`January`:{let[e,r]=cS(t,n);return i.month=e,[r,i]}case`Monday`:return[uS(t,n),i];case`Jan`:{let[e,r]=lS(t,n);return i.month=e,[r,i]}case`Mon`:return[dS(t,n),i];case`2006`:{let[e,r]=sS(t,n,4,4);return i.year=e,[r,i]}case`06`:{let[e,r]=sS(t,n,2,2);return i.year=e<70?2e3+e:1900+e,[r,i]}case`01`:{let[e,r]=sS(t,n,2,2);return i.month=e,[r,i]}case`1`:{let[e,r]=sS(t,n,1,2);return i.month=e,[r,i]}case`_2`:{let[e,r]=fS(t,n);return i.day=e,[r,i]}case`02`:{let[e,r]=sS(t,n,2,2);return i.day=e,[r,i]}case`2`:{let[e,r]=sS(t,n,1,2);return i.day=e,[r,i]}case`15`:{let[e,r]=sS(t,n,2,2);return i.hour=e,[r,i]}case`03`:{let[e,r]=sS(t,n,2,2);return i.hour=e,i.hour12=!0,[r,i]}case`3`:{let[e,r]=sS(t,n,1,2);return i.hour=e,i.hour12=!0,[r,i]}case`04`:{let[e,r]=sS(t,n,2,2);return i.minute=e,[r,i]}case`4`:{let[e,r]=sS(t,n,1,2);return i.minute=e,[r,i]}case`05`:{let[e,r]=sS(t,n,2,2);return i.second=e,[r,i]}case`5`:{let[e,r]=sS(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[hS(t,n),i];case`-0700`:{let[e,r]=pS(t,n,!1);return i.offsetMinutes=e,[r,i]}case`-07:00`:{let[e,r]=pS(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]=sS(t,n+1,2,2);return i.offsetMinutes=e*r*60,[a,i]}case`Z0700`:{let[e,r]=mS(t,n,!1,!1);return i.offsetMinutes=e,[r,i]}case`Z07:00`:{let[e,r]=mS(t,n,!0,!1);return i.offsetMinutes=e,[r,i]}case`Z07`:{let[e,r]=mS(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]=gS(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]=gS(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]=gS(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 vS=`.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 yS(e,t){let n=0,r=0,i=aS();for(;n<e.length;){let a=!1;for(let o of vS)if(e.startsWith(o,n)){let[e,s]=_S(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 bS(e,t){return yS(e,t)}function xS(e){return String(Math.floor(yx(e).getTime()/1e3))}function SS(e=()=>new Date){return{now:{fn:()=>nS(e),argTypes:[],arity:{kind:`exact`}},date:{fn:(e,t)=>Ux(e,t),argTypes:[`string`,`value`],arity:{kind:`exact`}},dateInZone:{fn:(e,t,n)=>Wx(e,t,n),argTypes:[`string`,`value`,`string`],arity:{kind:`exact`}},dateModify:{fn:(e,t)=>Gx(e,t),argTypes:[`string`,`value`],arity:{kind:`exact`}},htmlDate:{fn:e=>eS(e),argTypes:[`value`],arity:{kind:`exact`}},htmlDateInZone:{fn:(e,t)=>tS(e,t),argTypes:[`value`,`string`],arity:{kind:`exact`}},duration:{fn:e=>Kx(e),argTypes:[`value`],arity:{kind:`exact`}},durationRound:{fn:e=>$x(e),argTypes:[`value`],arity:{kind:`exact`}},toDate:{fn:(e,t)=>bS(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},ago:{fn:t=>bx(t,e),argTypes:[`value`],arity:{kind:`exact`}},unixEpoch:{fn:e=>xS(e),argTypes:[`value`],arity:{kind:`exact`}}}}function CS(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 wS(...e){for(let t of e)if(!CS(t))return t}function TS(e,t){return CS(t)?e:t}function ES(e){return JSON.parse(e)}function DS(e,t,n){return qy(n)?e:t}function OS(e){return JSON.stringify(e)??`null`}function kS(e){return JSON.stringify(e,null,2)??`null`}function AS(){return{default:{fn:(e,t)=>TS(e,t),argTypes:[`value`,`truthy`],arity:{kind:`variadic`}},empty:{fn:e=>CS(e),argTypes:[`truthy`],arity:{kind:`exact`}},coalesce:{fn:(...e)=>wS(...e),argTypes:[`truthy`],arity:{kind:`variadic`}},ternary:{fn:(e,t,n)=>DS(e,t,n),argTypes:[`value`,`value`,`truthy`],arity:{kind:`exact`}},fromJson:{fn:e=>ES(e),argTypes:[`string`],arity:{kind:`exact`}},toJson:{fn:e=>OS(e),argTypes:[`serializable`],arity:{kind:`exact`},returnType:`string`},toPrettyJson:{fn:e=>kS(e),argTypes:[`serializable`],arity:{kind:`exact`},returnType:`string`}}}function jS(...e){let t={};for(let n=0;n<e.length;n+=2)t[e[n]]=e[n+1];return t}function MS(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 jS(...t)}function NS(e,t){return e[t]}function PS(e,t){return t in e}function FS(e){return Object.keys(e)}function IS(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 LS(e,...t){let n={...e};for(let e of t)Object.assign(n,e);return n}function RS(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 zS(e,...t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function BS(e,...t){let n=[];for(let r of t)e in r&&n.push(r[e]);return n}function VS(e,t,n){return e[t]=n,e}function HS(e,t){return delete e[t],e}function US(e){return Object.values(e)}function WS(){return{dict:{fn:(...e)=>jS(...e),argTypes:[`string`,`value`],arity:{kind:`alternating`,minimum:0}},get:{fn:(e,t)=>NS(e,t),argTypes:[`dict`,`string`],arity:{kind:`exact`}},set:{fn:(e,t,n)=>VS(e,t,n),argTypes:[`dict`,`string`,`value`],arity:{kind:`exact`}},unset:{fn:(e,t)=>HS(e,t),argTypes:[`dict`,`string`],arity:{kind:`exact`}},keys:{fn:e=>FS(e),argTypes:[`dict`],arity:{kind:`variadic`}},values:{fn:e=>US(e),argTypes:[`dict`],arity:{kind:`exact`}},pluck:{fn:(e,...t)=>BS(e,...t),argTypes:[`string`,`dict`],arity:{kind:`variadic`}},pick:{fn:(e,...t)=>zS(e,...t),argTypes:[`dict`,`string`],arity:{kind:`variadic`}},omit:{fn:(e,...t)=>RS(e,...t),argTypes:[`dict`,`string`],arity:{kind:`variadic`}},hasKey:{fn:(e,t)=>PS(e,t),argTypes:[`dict`,`string`],arity:{kind:`exact`}},merge:{fn:(e,...t)=>IS(e,...t),argTypes:[`dict`,`dict`],arity:{kind:`variadic`}},mergeOverwrite:{fn:(e,...t)=>LS(e,...t),argTypes:[`dict`,`dict`],arity:{kind:`variadic`}}}}function GS(e){throw new ry(e)}function KS(){return{fail:{fn:e=>GS(e),argTypes:[`string`],arity:{kind:`exact`}}}}new TextEncoder,new Map(Array.from(`ABCDEFGHIJKLMNOPQRSTUVWXYZ234567`).map((e,t)=>[e,t])),new TextDecoder,new TextEncoder,new TextDecoder,new TextEncoder;function qS(...e){for(let t of e)if(CS(t))return!1;return!0}function JS(...e){for(let t of e)if(!CS(t))return!0;return!1}function YS(e,t){return[...e,t]}function XS(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 ZS(e){return e.filter(e=>!CS(e))}function QS(...e){let t=[];for(let n of e)t.push(...n);return t}const $S={line:0,column:0,offset:0};function eC(e,t,n,r){return new ey(e,t,n,r,$S)}function tC(...e){if(e.length<3)throw eC(`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(!rC(t))throw eC(`dig`,e.length-1,`dict`,iC(t));for(let e=0;e<r.length;e++)if(typeof r[e]!=`string`)throw eC(`dig`,e,`string`,iC(r[e]));return nC(t,n,r,e.length)}function nC(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(!rC(a))throw eC(`dig`,r-1,`dict at intermediate key`,iC(a));return nC(a,t,n.slice(1),r)}function rC(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Map)&&!(e instanceof Set)}function iC(e){return e===null?`null`:Array.isArray(e)?`array`:e instanceof Map?`Map`:e instanceof Set?`Set`:typeof e}function aC(e){return e[0]}function oC(e,t){return t.some(t=>Uy(t,e))}function sC(e){return e.slice(0,-1)}function cC(e){return e[e.length-1]}function lC(e){return Array.isArray(e)||typeof e==`string`?e.length:e instanceof Map||e instanceof Set?e.size:Object.keys(e).length}function uC(...e){return e}function dC(e,t){return[t,...e]}function fC(e){return e.slice(1)}function pC(e){return[...e].reverse()}function mC(e,t,n){let r=t===void 0?0:t,i=n===void 0?e.length:n;return e.slice(r,i)}function hC(e){let t=[];for(let n of e)n!=null&&t.push(String(n));return t.sort()}function gC(e){let t=[];for(let n of e)t.some(e=>Uy(e,n))||t.push(n);return t}function _C(e,...t){return e.filter(e=>!t.some(t=>Uy(t,e)))}function vC(){return{list:{fn:(...e)=>uC(...e),argTypes:[`value`],arity:{kind:`variadic`}},first:{fn:e=>aC(e),argTypes:[`list`],arity:{kind:`exact`}},last:{fn:e=>cC(e),argTypes:[`list`],arity:{kind:`exact`}},rest:{fn:e=>fC(e),argTypes:[`list`],arity:{kind:`exact`}},initial:{fn:e=>sC(e),argTypes:[`list`],arity:{kind:`exact`}},len:{fn:e=>lC(e),argTypes:[`sized`],arity:{kind:`exact`}},reverse:{fn:e=>pC(e),argTypes:[`list`],arity:{kind:`exact`}},uniq:{fn:e=>gC(e),argTypes:[`list`],arity:{kind:`exact`}},without:{fn:(e,...t)=>_C(e,...t),argTypes:[`list`,`value`],arity:{kind:`variadic`}},has:{fn:(e,t)=>oC(e,t),argTypes:[`value`,`list`],arity:{kind:`exact`}},compact:{fn:e=>ZS(e),argTypes:[`list`],arity:{kind:`exact`}},slice:{fn:(e,t,n)=>mC(e,t,n),argTypes:[`list`,`truncating-int`],arity:{kind:`variadic`}},concat:{fn:(...e)=>QS(...e),argTypes:[`list`],arity:{kind:`variadic`}},chunk:{fn:(e,t)=>XS(e,t),argTypes:[`int`,`list`],arity:{kind:`exact`}},prepend:{fn:(e,t)=>dC(e,t),argTypes:[`list`,`value`],arity:{kind:`exact`}},append:{fn:(e,t)=>YS(e,t),argTypes:[`list`,`value`],arity:{kind:`exact`}},sortAlpha:{fn:e=>hC(e),argTypes:[`list`],arity:{kind:`exact`},returnType:`list`},push:{fn:(e,t)=>YS(e,t),argTypes:[`list`,`value`],arity:{kind:`exact`}},tuple:{fn:(...e)=>uC(...e),argTypes:[`value`],arity:{kind:`variadic`}},dig:{fn:(...e)=>tC(...e),argTypes:[`value`],arity:{kind:`variadic`}},all:{fn:(...e)=>qS(...e),argTypes:[`truthy`],arity:{kind:`variadic`},returnType:`bool`},any:{fn:(...e)=>JS(...e),argTypes:[`truthy`],arity:{kind:`variadic`},returnType:`bool`}}}function yC(...e){return e.reduce((e,t)=>e+t,0)}function bC(e){return e+1}function xC(e){return e+1}function SC(...e){return e.reduce((e,t)=>e+t,0)}function CC(e){return Math.ceil(e)}function wC(e,t){return Math.trunc(e/t)}function TC(e,...t){return t.reduce((e,t)=>e/t,e)}function EC(e){return Math.floor(e)}function DC(...e){return e.reduce((e,t)=>t>e?t:e,-1/0)}function OC(...e){return e.reduce((e,t)=>Math.max(e,t),-1/0)}function kC(...e){return e.reduce((e,t)=>t<e?t:e,1/0)}function AC(...e){return e.reduce((e,t)=>Math.min(e,t),1/0)}function jC(e,t){return e%t}function MC(...e){return e.reduce((e,t)=>e*t,1)}function NC(...e){return e.reduce((e,t)=>e*t,1)}function PC(e,t=0){let n=10**t;return Math.sign(e)*Math.round(Math.abs(e)*n)/n}function FC(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 IC(...e){let t=1;switch(e.length){case 0:return``;case 1:{let n=e[0];return n<1&&(t=-1),FC(1,n+t,t).join(` `)}case 2:{let t=e[0],n=e[1],r=n<t?-1:1;return FC(t,n+r,r).join(` `)}case 3:{let n=e[0],r=e[1],i=e[2];return i<n&&(t=-1,r>0)?``:FC(n,i+t,r).join(` `)}default:return``}}function LC(e,t){return e-t}function RC(e,...t){return t.reduce((e,t)=>e-t,e)}function zC(e){return FC(0,e,e<0?-1:1)}function BC(){return{add:{fn:(...e)=>yC(...e),argTypes:[`truncating-int`],arity:{kind:`variadic`}},sub:{fn:(e,t)=>LC(e,t),argTypes:[`truncating-int`,`truncating-int`],arity:{kind:`exact`}},mul:{fn:(...e)=>MC(...e),argTypes:[`truncating-int`,`truncating-int`],arity:{kind:`variadic`}},div:{fn:(e,t)=>wC(e,t),argTypes:[`truncating-int`,`truncating-int`],arity:{kind:`exact`}},mod:{fn:(e,t)=>jC(e,t),argTypes:[`truncating-int`,`truncating-int`],arity:{kind:`exact`}},min:{fn:(...e)=>kC(...e),argTypes:[`truncating-int`,`truncating-int`],arity:{kind:`variadic`}},max:{fn:(...e)=>DC(...e),argTypes:[`truncating-int`,`truncating-int`],arity:{kind:`variadic`}},floor:{fn:e=>EC(e),argTypes:[`float`],arity:{kind:`exact`}},ceil:{fn:e=>CC(e),argTypes:[`float`],arity:{kind:`exact`}},round:{fn:(e,t)=>PC(e,t),argTypes:[`float`,`int`,`float`],arity:{kind:`variadic`}},addf:{fn:(...e)=>SC(...e),argTypes:[`float`],arity:{kind:`variadic`}},subf:{fn:(e,...t)=>RC(e,...t),argTypes:[`float`,`float`],arity:{kind:`variadic`}},mulf:{fn:(...e)=>NC(...e),argTypes:[`float`,`float`],arity:{kind:`variadic`}},divf:{fn:(e,...t)=>TC(e,...t),argTypes:[`float`,`float`],arity:{kind:`variadic`}},add1:{fn:e=>bC(e),argTypes:[`truncating-int`],arity:{kind:`exact`}},add1f:{fn:e=>xC(e),argTypes:[`float`],arity:{kind:`exact`}},maxf:{fn:(...e)=>OC(...e),argTypes:[`float`,`float`],arity:{kind:`variadic`}},minf:{fn:(...e)=>AC(...e),argTypes:[`float`,`float`],arity:{kind:`variadic`}},biggest:{fn:(...e)=>DC(...e),argTypes:[`truncating-int`,`truncating-int`],arity:{kind:`variadic`}},seq:{fn:(...e)=>IC(...e),argTypes:[`int`],arity:{kind:`variadic`},returnType:`string`},until:{fn:e=>zC(e),argTypes:[`int`],arity:{kind:`exact`},returnType:`list`},untilStep:{fn:(e,t,n)=>FC(e,t,n),argTypes:[`int`,`int`,`int`],arity:{kind:`exact`},returnType:`list`}}}Array.from({length:95},(e,t)=>String.fromCharCode(t+32)).join(``);function VC(e){return Array.from(e)}function HC(e,t){return e===``?VC(t):t.split(e)}function UC(e,t){let n=VC(t);return n.length<=e||e<4?t:`${n.slice(0,e-3).join(``)}...`}function WC(e,t,n){let r=VC(n);return t<7||r.length<t||e<0||e>r.length-t+1?n:`...${r.slice(e,e+t-6).join(``)}...`}const J={Invalid:0,Number:1,UpperCase:2,Alphabet:3,Connector:4,Punct:5,Other:6},GC=/^[-_\s]$/,KC=/^\p{P}$/u,qC=/^\p{L}$/u,JC=/^\p{Lu}$/u,YC=/^\p{N}$/u;function XC(e){return e!==void 0&&GC.test(e)}function ZC(e){return e!==void 0&&qC.test(e)}function QC(e){return e!==void 0&&JC.test(e)}function $C(e){return e!==void 0&&YC.test(e)}function ew(e){return e!==void 0&&KC.test(e)}function tw(e,t){if(t>=e.length)return{word:{wt:J.Invalid,text:``},next:t};let n=e[t],r=t+1;if(XC(n)){for(;r<e.length&&XC(e[r]);)r++;return{word:{wt:J.Connector,text:e.slice(t,r).join(``)},next:r}}if(ew(n)){for(;r<e.length&&ew(e[r]);)r++;return{word:{wt:J.Punct,text:e.slice(t,r).join(``)},next:r}}if(QC(n)){if(r>=e.length)return{word:{wt:J.UpperCase,text:n},next:r};if(QC(e[r])){let n=r;for(;n<e.length&&QC(e[n]);)n++;return n<e.length&&ZC(e[n])?{word:{wt:J.UpperCase,text:e.slice(t,n-1).join(``)},next:n-1}:{word:{wt:J.UpperCase,text:e.slice(t,n).join(``)},next:n}}if(ZC(e[r])){let n=r+1;for(;n<e.length&&ZC(e[n])&&!QC(e[n]);)n++;return{word:{wt:J.UpperCase,text:e.slice(t,n).join(``)},next:n}}return{word:{wt:J.UpperCase,text:n},next:r}}if(ZC(n)){for(;r<e.length&&ZC(e[r])&&!QC(e[r]);)r++;return{word:{wt:J.Alphabet,text:e.slice(t,r).join(``)},next:r}}if($C(n)){for(;r<e.length&&$C(e[r]);)r++;return{word:{wt:J.Number,text:e.slice(t,r).join(``)},next:r}}for(;r<e.length&&!XC(e[r])&&!ZC(e[r])&&!$C(e[r])&&!ew(e[r]);)r++;return{word:{wt:J.Other,text:e.slice(t,r).join(``)},next:r}}function nw(e,t,n){if(t.wt!==J.UpperCase&&t.wt!==J.Connector){e.push(t.text);return}for(let r of t.text)XC(r)?e.push(n):QC(r)?e.push(r.toLowerCase()):e.push(r)}function rw(e,t){if(e.length===0)return``;let n=VC(e),r=[],{word:i,next:a}=tw(n,0);for(;a<n.length;){i.wt!==J.Connector&&nw(r,i,t);let e=i,o=i;if({word:i,next:a}=tw(n,a),e.wt===J.Number){for(;i.wt===J.Alphabet||i.wt===J.Number;)nw(r,i,t),{word:i,next:a}=tw(n,a);i.wt!==J.Invalid&&i.wt!==J.Punct&&i.wt!==J.Connector&&r.push(t);continue}if(e.wt===J.Connector){nw(r,o,t);continue}if(e.wt===J.Punct)continue;if(i.wt!==J.Number){i.wt!==J.Connector&&i.wt!==J.Punct&&r.push(t);continue}if(a>=n.length)continue;let s=i;if({word:i,next:a}=tw(n,a),i.wt!==J.Alphabet){nw(r,s,t),i.wt!==J.Connector&&i.wt!==J.Punct&&r.push(t);continue}for(r.push(t),nw(r,s,t);i.wt===J.Alphabet||i.wt===J.Number;)nw(r,i,t),{word:i,next:a}=tw(n,a);i.wt!==J.Invalid&&i.wt!==J.Connector&&i.wt!==J.Punct&&r.push(t)}return nw(r,i,t),r.join(``).toLowerCase()}function iw(e){if(e.length===0)return``;let t=VC(e),n=[],r=0,i=``;for(;r<t.length;){if(i=t[r],r++,!XC(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++,XC(i)&&XC(e)){n.push(e);continue}XC(e)?i=i.toUpperCase():(i=i.toLowerCase(),n.push(e))}return n.push(i),n.join(``)}function aw(e){return iw(e)}function ow(...e){return e.join(` `)}function sw(e,t){return t.includes(e)}function cw(e,t){return t.startsWith(e)}function lw(e,t){return t.endsWith(e)}function uw(e,t){let n=` `.repeat(Math.max(0,e));return t.split(`
|
|
63
|
+
`?(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 fy(e){return e===` `||e===` `||e===`\r`||e===`
|
|
64
|
+
`}function py(e){return e===`+`||e===`-`}function my(e){return e>=`0`&&e<=`9`}function hy(e){return my(e)||e>=`a`&&e<=`f`||e>=`A`&&e<=`F`}function gy(e){return e>=`0`&&e<=`7`}function _y(e){return e===`0`||e===`1`}function vy(e){return e>=`a`&&e<=`z`||e>=`A`&&e<=`Z`}function yy(e){return vy(e)||e===`_`}function by(e){return yy(e)||my(e)}let xy,Sy;function Cy(e,t){return Sy(e,t)}var wy=class e{static EMPTY=new e(new Map,void 0);#e;#t;constructor(e,t){this.#e=e,this.#t=t}static{xy=(t,n)=>new e(t,n),Sy=(e,t)=>e.#e.get(t)??(e.#t&&Sy(e.#t,t))}has(e){return Sy(this,e)!==void 0}};function Ty(e,t,n=wy.EMPTY){return new Ey(e,t,n).parseTemplate()}var Ey=class{lex;buf=[];defines=new Map;inherit;source;rangeDepth=0;constructor(e,t,n){this.source=e,this.inherit=n,this.lex=t?new dy(e,t):new dy(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:ky(n)});return n}errAt(e,t,n={}){return new Zv(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 ${ky(e)}`,{found:ky(e)})}return{root:e,defines:xy(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=Oy(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 Dy(e,t);let r=this.parseAction();r!==null&&t.push(r);continue}throw this.errAt(n,`unexpected ${ky(n)} at top level`,{found:ky(n)})}return Dy(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 Zv(`{{${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 Zv(`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:ky(e)});return Ly(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(!Ay(e.type))throw this.errAt(e,"missing command after `|`",{expected:`command`,found:ky(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=[jy(this.next())];for(;this.peek().type===`Comma`;)this.next(),n.push(jy(this.expect(`Variable`,`$variable`)));return{vars:n,isAssign:this.next().type===`Assign`}}parseCommand(){let e=this.peek().pos,t=[this.parsePrimary()];for(;Ay(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 jy(e);case`Identifier`:return{type:`Identifier`,pos:e.pos,ident:e.value};case`String`:return{type:`String`,pos:e.pos,raw:e.value,value:Ly(e.value,e.pos,this.source)};case`Number`:return Ny(e);case`Char`:return Py(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 ${ky(e)}`,{expected:`command argument`,found:ky(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 Dy(e,t){return{type:`List`,pos:e,nodes:t}}function Oy(e){return{trimLeft:e.trimLeft===!0,trimRight:e.trimRight===!0}}function ky(e){return e.type===`EOF`?`end of input`:e.value||e.type}function Ay(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 jy(e){return{type:`Variable`,pos:e.pos,idents:My(e.value)}}function My(e){let t=e.indexOf(`.`);return t===-1?[e]:[e.slice(0,t),...e.slice(t+1).split(`.`)]}function Ny(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=Fy(i);return{...s,intValue:e}}if(a){let e=Iy(i);return{...s,floatValue:e}}let c=Iy(i);return{...s,complexValue:[0,c]}}function Py(e,t){let n=Ry(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 Fy(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 Iy(e){return Number(e)}function Ly(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+=`
|
|
65
|
+
`;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 Zv(`bad escape sequence \\${o}`,t,{expected:`valid escape sequence`,found:`\\${o}`,source:n})}}return r}function Ry(e,t,n){let r=Ly(`"${e.slice(1,-1).replace(/"/g,`\\"`)}"`,t,n);if(r.length===0)throw new Zv(`empty rune literal`,t,{source:n});return r.codePointAt(0)??0}function zy(e,t){if(t(e)!==!1)for(let n of By(e))zy(n,t)}function By(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 cy(e)}}const Vy=Symbol(`go-template-js.MISSING`);function Hy(e,t){if(e==null)return Vy;if(e instanceof Map)return e.has(t)?e.get(t):Vy;if(Array.isArray(e))return Vy;if(typeof e==`object`){let n=e;return t in n?n[t]:Vy}return Vy}function Uy(e,t){let n=e;for(let e of t){if(n===Vy)return Vy;n=Hy(n,e)}return n}function Wy(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)=>Wy(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)||!Wy(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=>Wy(e[n],t[n])):!1}return!1}const Gy=new WeakSet;function Ky(e){return Gy.add(e),e}function qy(e){return Gy.has(e)}function Jy(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 Yy(e,t){return{eq:{fn:(e,...t)=>t.some(t=>Qy(e,t)),argTypes:[`comparable`,`comparable`],arity:{kind:`variadic`}},ne:{fn:(e,t)=>!Qy(e,t),argTypes:[`comparable`,`comparable`],arity:{kind:`exact`}},lt:{fn:(e,t)=>$y(e,t)<0,argTypes:[`ordered`,`ordered`],arity:{kind:`exact`}},le:{fn:(e,t)=>$y(e,t)<=0,argTypes:[`ordered`,`ordered`],arity:{kind:`exact`}},gt:{fn:(e,t)=>$y(e,t)>0,argTypes:[`ordered`,`ordered`],arity:{kind:`exact`}},ge:{fn:(e,t)=>$y(e,t)>=0,argTypes:[`ordered`,`ordered`],arity:{kind:`exact`}},len:{fn:e=>eb(e),argTypes:[`sized`],arity:{kind:`exact`}},index:{fn:(e,...t)=>{let n=e;for(let e of t)n=tb(n,e);return n},argTypes:[`collection`,`index-key`],arity:{kind:`variadic`}},slice:{fn:(e,...t)=>rb(e,t),argTypes:[`sliceable`,`int`],arity:{kind:`variadic`}},print:{fn:(...t)=>ob(t,e),argTypes:[`stringifiable`],arity:{kind:`variadic`},returnType:`string`},println:{fn:(...t)=>`${ob(t,e)}\n`,argTypes:[`stringifiable`],arity:{kind:`variadic`},returnType:`string`},printf:{fn:(n,...r)=>hb(n,r,e,t),argTypes:[`string`,`stringifiable`],arity:{kind:`variadic`},returnType:`string`},toString:{fn:n=>vb(n,e,t),argTypes:[`value`],arity:{kind:`exact`},returnType:`string`},toStrings:{fn:n=>n.map(n=>vb(n,e,t)),argTypes:[`list`],arity:{kind:`exact`}},call:{fn:(e,...t)=>e(...t),argTypes:[`callable`,`value`],arity:{kind:`variadic`}},html:{fn:(...t)=>lb(ob(t,e)),argTypes:[`stringifiable`],arity:{kind:`variadic`},returnType:`string`},js:{fn:(...t)=>fb(ob(t,e)),argTypes:[`stringifiable`],arity:{kind:`variadic`},returnType:`string`},urlquery:{fn:(...t)=>mb(ob(t,e)),argTypes:[`stringifiable`],arity:{kind:`variadic`},returnType:`string`},not:{fn:e=>!Jy(e),argTypes:[`truthy`],arity:{kind:`exact`}}}}function Xy(){return{and:Ky({argTypes:[`truthy`,`truthy`],arity:{kind:`variadic`},fn:(...e)=>{let t=!0;for(let n of e)if(t=n(),!Jy(t))return t;return t}}),or:Ky({argTypes:[`truthy`,`truthy`],arity:{kind:`variadic`},fn:(...e)=>{let t=!1;for(let n of e)if(t=n(),Jy(t))return t;return t}})}}function Zy(e,t){return{...Yy(e,t),...Xy()}}function Qy(e,t){return typeof e==`number`&&typeof t==`bigint`?BigInt(e)===t:typeof e==`bigint`&&typeof t==`number`?e===BigInt(t):Wy(e,t)}function $y(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 eb(e){return typeof e==`string`||Array.isArray(e)?e.length:e instanceof Map||e instanceof Set?e.size:Object.keys(e).length}function tb(e,t){if(Array.isArray(e)||typeof e==`string`){let n=nb(t,e.length);if(n===e.length)throw Error(`index out of range: ${n}`);return e[n]}if(e instanceof Map)return e.get(t);if(typeof e==`object`&&e){if(typeof t!=`string`)throw Error(`index: object index must be string, got ${ib(t)}`);return e[t]}throw Error(`index: cannot index ${ib(e)}`)}function nb(e,t){let n=typeof e==`bigint`?Number(e):e;if(typeof n!=`number`||!Number.isInteger(n))throw Error(`cannot index slice/array with type ${ab(e)}`);if(n<0||n>t)throw Error(`index out of range: ${String(e)}`);return n}function rb(e,t){if(t.length>3)throw Error(`too many slice indexes: ${t.length}`);if(typeof e==`string`&&t.length>2)throw Error(`cannot 3-index slice a string`);let n=e.length,r=[0,n,n];t.forEach((e,t)=>{r[t]=nb(e,n)});let[i,a,o]=r;if(i>a)throw Error(`invalid slice index: ${i} > ${a}`);if(a>o)throw Error(`invalid slice index: ${a} > ${o}`);return e.slice(i,a)}function ib(e){return e===null?`null`:e===void 0?`undefined`:Array.isArray(e)?`array`:e instanceof Map?`Map`:typeof e}function ab(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 ob(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+=sb(a,t),r=o}return n}function sb(e,t){return e==null?`<nil>`:typeof e==`string`?e:t(e)}const cb={"\0":`�`,'"':`"`,"'":`'`,"&":`&`,"<":`<`,">":`>`};function lb(e){return e.replace(/[\0"'&<>]/g,e=>cb[e]??e)}const ub={"\\":`\\\\`,"'":`\\'`,'"':`\\"`,"<":`\\u003C`,">":`\\u003E`,"&":`\\u0026`,"=":`\\u003D`},db=/^[\p{L}\p{M}\p{N}\p{P}\p{S}]$/u;function fb(e){let t=``;for(let n of e){let e=ub[n];if(e!==void 0){t+=e;continue}let r=n.codePointAt(0);if(r<32||r>=128&&!db.test(n)){t+=`\\u${r.toString(16).toUpperCase().padStart(4,`0`)}`;continue}t+=n}return t}const pb=new TextEncoder;function mb(e){let t=``,n=pb.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 hb(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+=gb(l??``,u,d,n,r),o=c+1}return i}function gb(e,t,n,r,i){switch(e){case`s`:return typeof n==`string`?_b(t,n):_b(t,sb(n,r));case`d`:return typeof n!=`number`&&typeof n!=`bigint`?`%!${e}(${ab(n)}=${sb(n,r)})`:_b(t,String(typeof n==`bigint`?n:Math.trunc(n)));case`v`:return _b(t,vb(n,r,i));case`q`:return _b(t,JSON.stringify(sb(n,r)));case`f`:{if(typeof n!=`number`&&typeof n!=`bigint`)return`%!${e}(${ab(n)}=${sb(n,r)})`;let i=t.includes(`.`)?Number(t.split(`.`)[1]):6;return _b(t,Number(n).toFixed(i))}case`t`:return _b(t,Jy(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 _b(t,r)}return typeof n!=`number`&&typeof n!=`bigint`?`%!${e}(${ab(n)}=${sb(n,r)})`:typeof n==`bigint`?_b(t,n.toString(16)):_b(t,Math.trunc(n).toString(16));default:return`%!${e}(${ab(n)}=${sb(n,r)})`}}function _b(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 vb(e,t,n){return e==null?`<nil>`:typeof e==`string`?e:n(e)?t(e):Array.isArray(e)?`[${e.map(e=>vb(e,t,n)).join(` `)}]`:e instanceof Map?yb([...e.entries()],t,n):bb(e)?yb(Object.entries(e),t,n):String(e)}function yb(e,t,n){let r=e=>vb(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 bb(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 xb(e){return{dot:e,root:e,parent:void 0,vars:new Map}}function Sb(e,t){return{dot:t,root:e.root,parent:e,vars:new Map}}function Cb(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 wb(e,t,n){e.vars.set(t,n)}const Tb=[`string`,`int`,`truncating-int`,`float`,`bool`,`T`,`ordered`,`list`,`dict`,`sized`,`comparable`,`stringifiable`,`liftable`,`callable`,`collection`,`index-key`,`sliceable`,`truthy`,`reflective`,`value`,`serializable`],Eb=new Set([`default`,`zero`,`error`]);function Db(e){if(e===void 0)return`default`;if(Eb.has(e))return e;throw Error(`EngineConfig.missingKey: expected "default" | "zero" | "error", got ${Ob(e)}`)}function Ob(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 kb(e){if(e!==void 0){if(typeof e!=`object`||!e)throw Error(`EngineConfig.delims: expected { left, right } object, got ${Ob(e)}`);if(typeof e.left!=`string`||e.left.length===0)throw Error(`EngineConfig.delims.left: expected non-empty string, got ${Ob(e.left)}`);if(typeof e.right!=`string`||e.right.length===0)throw Error(`EngineConfig.delims.right: expected non-empty string, got ${Ob(e.right)}`);return{left:e.left,right:e.right}}}function Ab(e){switch(e.kind){case`exact`:return!1;case`variadic`:return!0;case`alternating`:return!0}}function jb(e){let t=new Set(Tb);for(let[n,r]of Object.entries(e)){if(r.argTypes.forEach((e,r)=>{if(!t.has(e))throw Error(`EngineConfig.funcs.${n}: argTypes[${r}] is ${JSON.stringify(e)}, which is not an ArgType; declare one of ${Tb.join(`, `)}`)}),Ab(r.arity)&&r.argTypes.length===0)throw Error(`EngineConfig.funcs.${n}: arity ${JSON.stringify(r.arity.kind)} needs at least one declared argType (it reads its repeating slot from the end of argTypes); declare the slots the Go signature has, or use { kind: "exact" }`);if(r.arity.kind===`alternating`&&(!Number.isSafeInteger(r.arity.minimum)||r.arity.minimum<0))throw Error(`EngineConfig.funcs.${n}: arity "alternating" needs a non-negative integer minimum, got ${String(r.arity.minimum)}; the gate rejects every count below it, so a negative or non-finite minimum would disable the lower bound`)}return e}const Mb=Object.freeze({kind:`break`}),Nb=Object.freeze({kind:`continue`}),Pb={kind:`none`};let Fb;(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{Fb=(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 Ib(e){let t=new Set,n=e=>{zy(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 Lb={kind:`dynamic`};function Rb(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=ax(e);return typeof t==`number`||typeof t==`bigint`?{kind:`literal`,value:t}:Lb}case`Pipe`:{if(e.decls.length!==0||e.cmds.length!==1)return Lb;let t=e.cmds[0];if(t===void 0)return Lb;let n=t.args[0];return n===void 0||n.type!==`Identifier`?Lb:{kind:`call`,name:n.ident,args:t.args.slice(1).map(Rb)}}default:return Lb}}function zb(e){let t=[],n=e=>{zy(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(Rb);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 Bb=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??Jb,this.isT=e.isT??Vb,this.missingKey=Db(e.missingKey),this.delims=kb(e.delims),this.funcs=jb({...Zy(this.toString,this.isT),...e.funcs??{}})}parse(e,t){let n=Ty(e,this.delims,t);return Fb(n.source,e=>this.evalParsed(n,e),n.defines,Ib(n),zb(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=xb(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 Mb;case`Continue`:throw Nb;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 Qv(`unexpected ${e.type} at statement position`,e.pos,{source:n.source});default:cy(e)}}evalIf(e,t,n){Jy(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(Jy(r)){let i=Sb(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=nx(r);try{if(a.length===0){e.elseList&&this.evalList(e.elseList,t,n);return}for(let[r,o]of a){let a=Sb(t,o);if(i.length===1)wb(a,i[0]?.idents[0]??`$`,o);else if(i.length>=2){let e=i[0]?.idents[0]??`$`,t=i[1]?.idents[0]??`$`;wb(a,e,r),wb(a,t,o)}try{this.evalList(e.list,a,n)}catch(e){if(e===Nb)continue;throw e}}}catch(e){if(e===Mb)return;throw e}}evalTemplateInvoke(e,t,n){let r=Cy(n.defines,e.name);if(!r)throw new Qv(`template ${JSON.stringify(e.name)} is not defined`,e.pos,{source:n.source});let i=Sb(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=Sb(t,e.pipe?this.evalPipe(e.pipe,t,n):t.dot),i=Cy(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 Qv(`empty pipeline`,e.pos,{source:n.source});let r=this.evalCommand(e.cmds[0],t,n,Pb);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)wb(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 Qv(`empty command`,e.pos,{source:n.source});let i=e.args[0];if(i.type!==`Identifier`){if(e.args.length>1)throw new Qv(`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 $v(i.ident,i.pos,{source:n.source,available:Object.keys(this.funcs)});let o=e.args.slice(1),s=qy(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)}return this.invoke(i.ident,a,c,e.pos,n)}invoke(e,t,n,r,i){Ub(e,t,n,r,i.source,this.toString,this.fromString,this.isT);try{return t.fn(...n)}catch(t){throw t instanceof ty?new ty(t.funcName,t.argIndex,t.expected,t.receivedSummary,r,{source:i.source}):t instanceof iy?new iy(t.message,r,{source:i.source}):t instanceof Xv?t:new Qv(`error calling ${e}: ${ex(t)}`,r,{source:i.source,cause: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 ax(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 $v(e.ident,e.pos,{source:n.source,available:Object.keys(this.funcs)});return this.invoke(e.ident,t,[],e.pos,n)}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 Qv(`cannot evaluate ${e.type} as a value`,e.pos,{source:n.source})}}resolveFieldChain(e,t,n,r){let i=Uy(e,t);if(i!==Vy)return i;if(this.missingKey===`error`)throw new ry(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=Cb(t,i);if(!a.found)throw new Qv(`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(vb(e,this.toString,this.isT)))}};const Vb=e=>typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Map);function Hb(e){return new Bb(e)}function Ub(e,t,n,r,i,a=Jb,o=qb,s=Vb){let{argTypes:c,arity:l}=t,u=Wb(c,l);if(n.length<u.minimum||n.length>u.maximum)throw new ey(e,u,n.length,r,{source:i});let d=Gb(c,l),f=-1,p=-1;for(let t=0;t<n.length;t++){let c=d(t),l=n[t];if(!Kb(c,l,a,s))throw(c===`int`||c===`truncating-int`)&&(typeof l==`number`||typeof l==`bigint`)?new ny(e,t+1,l,r,{source:i}):new ty(e,t+1,$b(c),tx(l),r,{source:i});if(c===`liftable`&&typeof l==`string`&&(n[t]=o(l)),c===`truncating-int`?n[t]=Math.trunc(Number(l)):(c===`int`||c===`float`)&&(n[t]=Number(l)),c===`ordered`){if(f===-1)f=t;else if(!Xb(n[f],l))throw new ty(e,t+1,`${$b(`ordered`)} of the same kind as ${tx(n[f])}`,tx(l),r,{source:i})}if(c===`comparable`){if(p===-1)p=t;else if(!Zb(n[p],l))throw new ty(e,t+1,`${$b(`comparable`)} of the same kind as ${tx(n[p])}`,tx(l),r,{source:i})}}}function Wb(e,t){switch(t.kind){case`exact`:return{minimum:e.length,maximum:e.length};case`variadic`:return{minimum:e.length-1,maximum:1/0};case`alternating`:return{minimum:t.minimum,maximum:1/0}}}function Gb(e,t){let n=e.length;switch(t.kind){case`exact`:return t=>e[t];case`variadic`:return t=>e[Math.min(t,n-1)];case`alternating`:return t=>e[t%n]}}function Kb(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.isSafeInteger(t)||typeof t==`bigint`&&Number.isSafeInteger(Number(t));case`truncating-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 bb(t);case`sized`:return typeof t==`string`||Array.isArray(t)||t instanceof Map||t instanceof Set||bb(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||bb(t);case`callable`:return typeof t==`function`;case`collection`:return typeof t==`string`||Array.isArray(t)||t instanceof Map||bb(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 Yb(t);default:throw Error(`invalid ArgType: ${String(e)}`)}}function qb(e){return e}function Jb(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 ty(`<engine.toString>`,1,`string (or a consumer-supplied toString that flattens T)`,tx(e),{line:0,column:0,offset:0})}function Yb(e){try{return JSON.stringify(e)!==void 0}catch{return!1}}function Xb(e,t){return typeof e==typeof t||typeof e==`number`&&typeof t==`bigint`||typeof e==`bigint`&&typeof t==`number`}function Zb(e,t){let n=Qb(e),r=Qb(t);return n===`nil`||r===`nil`?!0:n===r}function Qb(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 $b(e){switch(e){case`int`:return`integer (safe-integer number or bigint)`;case`truncating-int`:return`integer (finite number, truncated toward zero, 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 ex(e){return e instanceof Error?e.message:String(e)}function tx(e){return e===null?`null`:e===void 0?`undefined`:Array.isArray(e)?`array`:e instanceof Map?`Map`:typeof e}function nx(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?rx([...e.entries()]):e instanceof Set?[...e.values()].map((e,t)=>[t,e]):typeof e==`object`?rx(Object.entries(e)):[]}function rx(e){return[...e].sort((e,t)=>ix(e[0],t[0]))}function ix(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 ax(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 ox(e){if(!/^[+-]?\d+$/.test(e))return 0;let t=Number.parseInt(e,10);return Number.isSafeInteger(t)?t:0}function sx(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 cx(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 lx(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=cx(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 ux(e){if(typeof e==`bigint`)return e;if(typeof e==`number`)return BigInt(Math.trunc(e));if(typeof e==`string`){let t=cx(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 dx(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 fx(e){return JSON.stringify(e)??`null`}function px(){return{atoi:{fn:e=>ox(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`int`},int:{fn:e=>lx(e),argTypes:[`value`],arity:{kind:`exact`},returnType:`int`},int64:{fn:e=>ux(e),argTypes:[`value`],arity:{kind:`exact`}},float64:{fn:e=>sx(e),argTypes:[`value`],arity:{kind:`exact`},returnType:`float`},toDecimal:{fn:e=>dx(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`int`},toRawJson:{fn:e=>fx(e),argTypes:[`serializable`],arity:{kind:`exact`},returnType:`string`}}}const mx={h:36e11,m:6e10,s:1e9,ms:1e6,us:1e3,µs:1e3,ns:1};function hx(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*mx[a],n=n.slice(e[0].length)}return t?-r:r}function gx(e){if(e===0)return`0s`;let t=!1,n=e;n<0&&(t=!0,n=-n);let r;return r=n<mx.us?`${Math.floor(n)}ns`:n<mx.ms?_x(n,mx.us,3,`µs`):n<mx.s?_x(n,mx.ms,6,`ms`):vx(n),t?`-${r}`:r}function _x(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 vx(e){let t=Math.floor(e/mx.h);e-=t*mx.h;let n=Math.floor(e/mx.m);e-=n*mx.m;let r=Math.floor(e/mx.s),i=e-r*mx.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 yx(e){return e*mx.s}function bx(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 xx(e,t){let n=t().getTime()-bx(e).getTime();return gx(Math.round(n/1e3)*1e9)}const Sx=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],Cx=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],wx=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],Tx=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`];function Ex(e){return e<10?`0${e}`:String(e)}function Dx(e){return e<10?`00${e}`:e<100?`0${e}`:String(e)}function Ox(e){return e<10?` ${e}`:String(e)}function kx(e){let t=e>=0?`+`:`-`,n=Math.abs(e);return`${t}${Ex(Math.floor(n/60))}${Ex(n%60)}`}function Ax(e){let t=e>=0?`+`:`-`,n=Math.abs(e);return`${t}${Ex(Math.floor(n/60))}:${Ex(n%60)}`}function jx(e){return`${e>=0?`+`:`-`}${Ex(Math.floor(Math.abs(e)/60))}`}function Mx(e){return e===0?`Z`:kx(e)}function Nx(e){return e===0?`Z`:Ax(e)}function Px(e){return e===0?`Z`:jx(e)}function Fx(e,t,n){let r=e*1e6,i=String(r).padStart(9,`0`).slice(0,t);return n?i.replace(/0+$/,``):i}const Ix=[[`.000000000`,e=>`.${Fx(e.ms,9,!1)}`],[`.999999999`,e=>{let t=Fx(e.ms,9,!0);return t?`.${t}`:``}],[`.000000`,e=>`.${Fx(e.ms,6,!1)}`],[`.999999`,e=>{let t=Fx(e.ms,6,!0);return t?`.${t}`:``}],[`.000`,e=>`.${Dx(e.ms)}`],[`.999`,e=>{let t=Dx(e.ms).replace(/0+$/,``);return t?`.${t}`:``}],[`January`,e=>Sx[e.month-1]??`January`],[`Monday`,e=>wx[e.weekday]??`Monday`],[`Z07:00`,e=>Nx(e.offsetMinutes)],[`-07:00`,e=>Ax(e.offsetMinutes)],[`Z0700`,e=>Mx(e.offsetMinutes)],[`-0700`,e=>kx(e.offsetMinutes)],[`2006`,e=>String(e.year)],[`Jan`,e=>Cx[e.month-1]??`Jan`],[`Mon`,e=>Tx[e.weekday]??`Mon`],[`MST`,e=>e.tzAbbr],[`-07`,e=>jx(e.offsetMinutes)],[`Z07`,e=>Px(e.offsetMinutes)],[`15`,e=>Ex(e.hour)],[`01`,e=>Ex(e.month)],[`02`,e=>Ex(e.day)],[`_2`,e=>Ox(e.day)],[`03`,e=>Ex(e.hour12)],[`04`,e=>Ex(e.minute)],[`05`,e=>Ex(e.second)],[`06`,e=>Ex(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 Lx(e,t){let n=``,r=0;for(;r<e.length;){let i=!1;for(let[a,o]of Ix)if(e.startsWith(a,r)){n+=o(t),r+=a.length,i=!0;break}i||(n+=e[r++])}return n}const Rx={year:`numeric`,month:`2-digit`,day:`2-digit`,weekday:`long`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hour12:!1};function zx(e){let t=new Map;for(let n of e)t.set(n.type,n.value);return t}const Bx=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`];function Vx(e,t){let n;try{new Intl.DateTimeFormat(`en-US`,{timeZone:t}),n=t}catch{n=`UTC`}let r=zx(new Intl.DateTimeFormat(`en-US`,{...Rx,timeZone:n}).formatToParts(e)),i=parseInt(r.get(`hour`)??`0`,10)%24,a=zx(new Intl.DateTimeFormat(`en-US`,{timeZone:n,timeZoneName:`short`}).formatToParts(e)).get(`timeZoneName`)??n,o=Hx(zx(new Intl.DateTimeFormat(`en-US`,{timeZone:n,timeZoneName:`shortOffset`}).formatToParts(e)).get(`timeZoneName`)??`GMT`),s=Bx.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 Hx(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 Ux(){return Intl.DateTimeFormat().resolvedOptions().timeZone}function Wx(e,t){return Lx(e,Vx(bx(t),Ux()))}function Gx(e,t,n){return Lx(e,Vx(bx(t),n))}function Kx(e,t){let n=bx(t),r=hx(e);return Number.isNaN(r)?n:new Date(n.getTime()+r/1e6)}function qx(e){if(typeof e==`string`){let t=parseInt(e,10);return Number.isNaN(t)?`0s`:gx(yx(t))}return typeof e==`bigint`?gx(yx(Number(e))):typeof e==`number`?gx(yx(e)):`0s`}const Jx=36e11*24*365,Yx=36e11*24*30,Xx=36e11*24,Zx=36e11,Qx=6e10,$x=1e9;function eS(e){let t=hx(String(e));if(Number.isNaN(t))return`0s`;let n=Math.abs(t);return n>Jx?`${Math.floor(n/Jx)}y`:n>Yx?`${Math.floor(n/Yx)}mo`:n>Xx?`${Math.floor(n/Xx)}d`:n>Zx?`${Math.floor(n/Zx)}h`:n>Qx?`${Math.floor(n/Qx)}m`:n>$x?`${Math.floor(n/$x)}s`:`0s`}function tS(e){let t=Vx(bx(e),Ux());return`${t.year}-${String(t.month).padStart(2,`0`)}-${String(t.day).padStart(2,`0`)}`}function nS(e,t){let n=Vx(bx(e),t);return`${n.year}-${String(n.month).padStart(2,`0`)}-${String(n.day).padStart(2,`0`)}`}function rS(e){return e()}const iS=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],aS=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`];function oS(){return{year:2e3,month:1,day:1,hour:0,minute:0,second:0,ms:0,offsetMinutes:0,isPM:!1,hour12:!1}}function sS(e,t,n){return[e.slice(t,t+n),t+n]}function cS(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 lS(e,t){for(let[n,r]of iS.entries())if(e.startsWith(r,t))return[n+1,t+r.length];throw Error(`sprig toDate: expected month name at pos ${t}`)}function uS(e,t){for(let[n,r]of aS.entries())if(e.startsWith(r,t))return[n+1,t+r.length];throw Error(`sprig toDate: expected short month name at pos ${t}`)}function dS(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 fS(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 pS(e,t){if(e[t]===` `){let[n,r]=cS(e,t+1,1,1);return[n,r]}return cS(e,t,1,2)}function mS(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]=cS(e,i,2,2);i=o;let s=0;if(n&&e[i]===`:`){let[t,n]=cS(e,i+1,2,2);s=t,i=n}else if(!n){let[t,n]=cS(e,i,2,2);s=t,i=n}return[r*(a*60+s),i]}function hS(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]=cS(e,t+1,2,2);return[n*r*60,i]}return mS(e,t,n)}function gS(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 _S(e,t,n){let[r,i]=sS(e,t,n),a=parseInt(r.padEnd(9,`0`),10);return[Math.round(a/1e6),i]}function vS(e,t,n,r){let i={...r};switch(e){case`January`:{let[e,r]=lS(t,n);return i.month=e,[r,i]}case`Monday`:return[dS(t,n),i];case`Jan`:{let[e,r]=uS(t,n);return i.month=e,[r,i]}case`Mon`:return[fS(t,n),i];case`2006`:{let[e,r]=cS(t,n,4,4);return i.year=e,[r,i]}case`06`:{let[e,r]=cS(t,n,2,2);return i.year=e<70?2e3+e:1900+e,[r,i]}case`01`:{let[e,r]=cS(t,n,2,2);return i.month=e,[r,i]}case`1`:{let[e,r]=cS(t,n,1,2);return i.month=e,[r,i]}case`_2`:{let[e,r]=pS(t,n);return i.day=e,[r,i]}case`02`:{let[e,r]=cS(t,n,2,2);return i.day=e,[r,i]}case`2`:{let[e,r]=cS(t,n,1,2);return i.day=e,[r,i]}case`15`:{let[e,r]=cS(t,n,2,2);return i.hour=e,[r,i]}case`03`:{let[e,r]=cS(t,n,2,2);return i.hour=e,i.hour12=!0,[r,i]}case`3`:{let[e,r]=cS(t,n,1,2);return i.hour=e,i.hour12=!0,[r,i]}case`04`:{let[e,r]=cS(t,n,2,2);return i.minute=e,[r,i]}case`4`:{let[e,r]=cS(t,n,1,2);return i.minute=e,[r,i]}case`05`:{let[e,r]=cS(t,n,2,2);return i.second=e,[r,i]}case`5`:{let[e,r]=cS(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[gS(t,n),i];case`-0700`:{let[e,r]=mS(t,n,!1);return i.offsetMinutes=e,[r,i]}case`-07:00`:{let[e,r]=mS(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]=cS(t,n+1,2,2);return i.offsetMinutes=e*r*60,[a,i]}case`Z0700`:{let[e,r]=hS(t,n,!1,!1);return i.offsetMinutes=e,[r,i]}case`Z07:00`:{let[e,r]=hS(t,n,!0,!1);return i.offsetMinutes=e,[r,i]}case`Z07`:{let[e,r]=hS(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]=_S(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]=_S(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]=_S(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 yS=`.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 bS(e,t){let n=0,r=0,i=oS();for(;n<e.length;){let a=!1;for(let o of yS)if(e.startsWith(o,n)){let[e,s]=vS(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 xS(e,t){return bS(e,t)}function SS(e){return String(Math.floor(bx(e).getTime()/1e3))}function CS(e=()=>new Date){return{now:{fn:()=>rS(e),argTypes:[],arity:{kind:`exact`}},date:{fn:(e,t)=>Wx(e,t),argTypes:[`string`,`value`],arity:{kind:`exact`}},dateInZone:{fn:(e,t,n)=>Gx(e,t,n),argTypes:[`string`,`value`,`string`],arity:{kind:`exact`}},dateModify:{fn:(e,t)=>Kx(e,t),argTypes:[`string`,`value`],arity:{kind:`exact`}},htmlDate:{fn:e=>tS(e),argTypes:[`value`],arity:{kind:`exact`}},htmlDateInZone:{fn:(e,t)=>nS(e,t),argTypes:[`value`,`string`],arity:{kind:`exact`}},duration:{fn:e=>qx(e),argTypes:[`value`],arity:{kind:`exact`}},durationRound:{fn:e=>eS(e),argTypes:[`value`],arity:{kind:`exact`}},toDate:{fn:(e,t)=>xS(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},ago:{fn:t=>xx(t,e),argTypes:[`value`],arity:{kind:`exact`}},unixEpoch:{fn:e=>SS(e),argTypes:[`value`],arity:{kind:`exact`}}}}function wS(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 TS(...e){for(let t of e)if(!wS(t))return t}function ES(e,t){return wS(t)?e:t}function DS(e){return JSON.parse(e)}function OS(e,t,n){return Jy(n)?e:t}function kS(e){return JSON.stringify(e)??`null`}function AS(e){return JSON.stringify(e,null,2)??`null`}function jS(){return{default:{fn:(e,t)=>ES(e,t),argTypes:[`value`,`truthy`],arity:{kind:`variadic`}},empty:{fn:e=>wS(e),argTypes:[`truthy`],arity:{kind:`exact`}},coalesce:{fn:(...e)=>TS(...e),argTypes:[`truthy`],arity:{kind:`variadic`}},ternary:{fn:(e,t,n)=>OS(e,t,n),argTypes:[`value`,`value`,`truthy`],arity:{kind:`exact`}},fromJson:{fn:e=>DS(e),argTypes:[`string`],arity:{kind:`exact`}},toJson:{fn:e=>kS(e),argTypes:[`serializable`],arity:{kind:`exact`},returnType:`string`},toPrettyJson:{fn:e=>AS(e),argTypes:[`serializable`],arity:{kind:`exact`},returnType:`string`}}}function MS(...e){let t={};for(let n=0;n<e.length;n+=2)t[e[n]]=e[n+1];return t}function NS(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 MS(...t)}function PS(e,t){return e[t]}function FS(e,t){return t in e}function IS(e){return Object.keys(e)}function LS(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 RS(e,...t){let n={...e};for(let e of t)Object.assign(n,e);return n}function zS(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 BS(e,...t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function VS(e,...t){let n=[];for(let r of t)e in r&&n.push(r[e]);return n}function HS(e,t,n){return e[t]=n,e}function US(e,t){return delete e[t],e}function WS(e){return Object.values(e)}function GS(){return{dict:{fn:(...e)=>MS(...e),argTypes:[`string`,`value`],arity:{kind:`alternating`,minimum:0}},get:{fn:(e,t)=>PS(e,t),argTypes:[`dict`,`string`],arity:{kind:`exact`}},set:{fn:(e,t,n)=>HS(e,t,n),argTypes:[`dict`,`string`,`value`],arity:{kind:`exact`}},unset:{fn:(e,t)=>US(e,t),argTypes:[`dict`,`string`],arity:{kind:`exact`}},keys:{fn:e=>IS(e),argTypes:[`dict`],arity:{kind:`variadic`}},values:{fn:e=>WS(e),argTypes:[`dict`],arity:{kind:`exact`}},pluck:{fn:(e,...t)=>VS(e,...t),argTypes:[`string`,`dict`],arity:{kind:`variadic`}},pick:{fn:(e,...t)=>BS(e,...t),argTypes:[`dict`,`string`],arity:{kind:`variadic`}},omit:{fn:(e,...t)=>zS(e,...t),argTypes:[`dict`,`string`],arity:{kind:`variadic`}},hasKey:{fn:(e,t)=>FS(e,t),argTypes:[`dict`,`string`],arity:{kind:`exact`}},merge:{fn:(e,...t)=>LS(e,...t),argTypes:[`dict`,`dict`],arity:{kind:`variadic`}},mergeOverwrite:{fn:(e,...t)=>RS(e,...t),argTypes:[`dict`,`dict`],arity:{kind:`variadic`}}}}function KS(e){throw new iy(e)}function qS(){return{fail:{fn:e=>KS(e),argTypes:[`string`],arity:{kind:`exact`}}}}new TextEncoder,new Map(Array.from(`ABCDEFGHIJKLMNOPQRSTUVWXYZ234567`).map((e,t)=>[e,t])),new TextDecoder,new TextEncoder,new TextDecoder,new TextEncoder;function JS(...e){for(let t of e)if(wS(t))return!1;return!0}function YS(...e){for(let t of e)if(!wS(t))return!0;return!1}function XS(e,t){return[...e,t]}function ZS(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 QS(e){return e.filter(e=>!wS(e))}function $S(...e){let t=[];for(let n of e)t.push(...n);return t}const eC={line:0,column:0,offset:0};function tC(e,t,n,r){return new ty(e,t,n,r,eC)}function nC(...e){if(e.length<3)throw tC(`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(!iC(t))throw tC(`dig`,e.length-1,`dict`,aC(t));for(let e=0;e<r.length;e++)if(typeof r[e]!=`string`)throw tC(`dig`,e,`string`,aC(r[e]));return rC(t,n,r,e.length)}function rC(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(!iC(a))throw tC(`dig`,r-1,`dict at intermediate key`,aC(a));return rC(a,t,n.slice(1),r)}function iC(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Map)&&!(e instanceof Set)}function aC(e){return e===null?`null`:Array.isArray(e)?`array`:e instanceof Map?`Map`:e instanceof Set?`Set`:typeof e}function oC(e){return e[0]}function sC(e,t){return t.some(t=>Wy(t,e))}function cC(e){return e.slice(0,-1)}function lC(e){return e[e.length-1]}function uC(e){return Array.isArray(e)||typeof e==`string`?e.length:e instanceof Map||e instanceof Set?e.size:Object.keys(e).length}function dC(...e){return e}function fC(e,t){return[t,...e]}function pC(e){return e.slice(1)}function mC(e){return[...e].reverse()}function hC(e,t,n){let r=t===void 0?0:t,i=n===void 0?e.length:n;return e.slice(r,i)}function gC(e){let t=[];for(let n of e)n!=null&&t.push(String(n));return t.sort()}function _C(e){let t=[];for(let n of e)t.some(e=>Wy(e,n))||t.push(n);return t}function vC(e,...t){return e.filter(e=>!t.some(t=>Wy(t,e)))}function yC(){return{list:{fn:(...e)=>dC(...e),argTypes:[`value`],arity:{kind:`variadic`}},first:{fn:e=>oC(e),argTypes:[`list`],arity:{kind:`exact`}},last:{fn:e=>lC(e),argTypes:[`list`],arity:{kind:`exact`}},rest:{fn:e=>pC(e),argTypes:[`list`],arity:{kind:`exact`}},initial:{fn:e=>cC(e),argTypes:[`list`],arity:{kind:`exact`}},len:{fn:e=>uC(e),argTypes:[`sized`],arity:{kind:`exact`}},reverse:{fn:e=>mC(e),argTypes:[`list`],arity:{kind:`exact`}},uniq:{fn:e=>_C(e),argTypes:[`list`],arity:{kind:`exact`}},without:{fn:(e,...t)=>vC(e,...t),argTypes:[`list`,`value`],arity:{kind:`variadic`}},has:{fn:(e,t)=>sC(e,t),argTypes:[`value`,`list`],arity:{kind:`exact`}},compact:{fn:e=>QS(e),argTypes:[`list`],arity:{kind:`exact`}},slice:{fn:(e,t,n)=>hC(e,t,n),argTypes:[`list`,`truncating-int`],arity:{kind:`variadic`}},concat:{fn:(...e)=>$S(...e),argTypes:[`list`],arity:{kind:`variadic`}},chunk:{fn:(e,t)=>ZS(e,t),argTypes:[`int`,`list`],arity:{kind:`exact`}},prepend:{fn:(e,t)=>fC(e,t),argTypes:[`list`,`value`],arity:{kind:`exact`}},append:{fn:(e,t)=>XS(e,t),argTypes:[`list`,`value`],arity:{kind:`exact`}},sortAlpha:{fn:e=>gC(e),argTypes:[`list`],arity:{kind:`exact`},returnType:`list`},push:{fn:(e,t)=>XS(e,t),argTypes:[`list`,`value`],arity:{kind:`exact`}},tuple:{fn:(...e)=>dC(...e),argTypes:[`value`],arity:{kind:`variadic`}},dig:{fn:(...e)=>nC(...e),argTypes:[`value`],arity:{kind:`variadic`}},all:{fn:(...e)=>JS(...e),argTypes:[`truthy`],arity:{kind:`variadic`},returnType:`bool`},any:{fn:(...e)=>YS(...e),argTypes:[`truthy`],arity:{kind:`variadic`},returnType:`bool`}}}function bC(...e){return e.reduce((e,t)=>e+t,0)}function xC(e){return e+1}function SC(e){return e+1}function CC(...e){return e.reduce((e,t)=>e+t,0)}function wC(e){return Math.ceil(e)}function TC(e,t){return Math.trunc(e/t)}function EC(e,...t){return t.reduce((e,t)=>e/t,e)}function DC(e){return Math.floor(e)}function OC(...e){return e.reduce((e,t)=>t>e?t:e,-1/0)}function kC(...e){return e.reduce((e,t)=>Math.max(e,t),-1/0)}function AC(...e){return e.reduce((e,t)=>t<e?t:e,1/0)}function jC(...e){return e.reduce((e,t)=>Math.min(e,t),1/0)}function MC(e,t){return e%t}function NC(...e){return e.reduce((e,t)=>e*t,1)}function PC(...e){return e.reduce((e,t)=>e*t,1)}function FC(e,t=0){let n=10**t;return Math.sign(e)*Math.round(Math.abs(e)*n)/n}function IC(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 LC(...e){let t=1;switch(e.length){case 0:return``;case 1:{let n=e[0];return n<1&&(t=-1),IC(1,n+t,t).join(` `)}case 2:{let t=e[0],n=e[1],r=n<t?-1:1;return IC(t,n+r,r).join(` `)}case 3:{let n=e[0],r=e[1],i=e[2];return i<n&&(t=-1,r>0)?``:IC(n,i+t,r).join(` `)}default:return``}}function RC(e,t){return e-t}function zC(e,...t){return t.reduce((e,t)=>e-t,e)}function BC(e){return IC(0,e,e<0?-1:1)}function VC(){return{add:{fn:(...e)=>bC(...e),argTypes:[`truncating-int`],arity:{kind:`variadic`}},sub:{fn:(e,t)=>RC(e,t),argTypes:[`truncating-int`,`truncating-int`],arity:{kind:`exact`}},mul:{fn:(...e)=>NC(...e),argTypes:[`truncating-int`,`truncating-int`],arity:{kind:`variadic`}},div:{fn:(e,t)=>TC(e,t),argTypes:[`truncating-int`,`truncating-int`],arity:{kind:`exact`}},mod:{fn:(e,t)=>MC(e,t),argTypes:[`truncating-int`,`truncating-int`],arity:{kind:`exact`}},min:{fn:(...e)=>AC(...e),argTypes:[`truncating-int`,`truncating-int`],arity:{kind:`variadic`}},max:{fn:(...e)=>OC(...e),argTypes:[`truncating-int`,`truncating-int`],arity:{kind:`variadic`}},floor:{fn:e=>DC(e),argTypes:[`float`],arity:{kind:`exact`}},ceil:{fn:e=>wC(e),argTypes:[`float`],arity:{kind:`exact`}},round:{fn:(e,t)=>FC(e,t),argTypes:[`float`,`int`,`float`],arity:{kind:`variadic`}},addf:{fn:(...e)=>CC(...e),argTypes:[`float`],arity:{kind:`variadic`}},subf:{fn:(e,...t)=>zC(e,...t),argTypes:[`float`,`float`],arity:{kind:`variadic`}},mulf:{fn:(...e)=>PC(...e),argTypes:[`float`,`float`],arity:{kind:`variadic`}},divf:{fn:(e,...t)=>EC(e,...t),argTypes:[`float`,`float`],arity:{kind:`variadic`}},add1:{fn:e=>xC(e),argTypes:[`truncating-int`],arity:{kind:`exact`}},add1f:{fn:e=>SC(e),argTypes:[`float`],arity:{kind:`exact`}},maxf:{fn:(...e)=>kC(...e),argTypes:[`float`,`float`],arity:{kind:`variadic`}},minf:{fn:(...e)=>jC(...e),argTypes:[`float`,`float`],arity:{kind:`variadic`}},biggest:{fn:(...e)=>OC(...e),argTypes:[`truncating-int`,`truncating-int`],arity:{kind:`variadic`}},seq:{fn:(...e)=>LC(...e),argTypes:[`int`],arity:{kind:`variadic`},returnType:`string`},until:{fn:e=>BC(e),argTypes:[`int`],arity:{kind:`exact`},returnType:`list`},untilStep:{fn:(e,t,n)=>IC(e,t,n),argTypes:[`int`,`int`,`int`],arity:{kind:`exact`},returnType:`list`}}}Array.from({length:95},(e,t)=>String.fromCharCode(t+32)).join(``);function HC(e){return Array.from(e)}function UC(e,t){return e===``?HC(t):t.split(e)}function WC(e,t){let n=HC(t);return n.length<=e||e<4?t:`${n.slice(0,e-3).join(``)}...`}function GC(e,t,n){let r=HC(n);return t<7||r.length<t||e<0||e>r.length-t+1?n:`...${r.slice(e,e+t-6).join(``)}...`}const J={Invalid:0,Number:1,UpperCase:2,Alphabet:3,Connector:4,Punct:5,Other:6},KC=/^[-_\s]$/,qC=/^\p{P}$/u,JC=/^\p{L}$/u,YC=/^\p{Lu}$/u,XC=/^\p{N}$/u;function ZC(e){return e!==void 0&&KC.test(e)}function QC(e){return e!==void 0&&JC.test(e)}function $C(e){return e!==void 0&&YC.test(e)}function ew(e){return e!==void 0&&XC.test(e)}function tw(e){return e!==void 0&&qC.test(e)}function nw(e,t){if(t>=e.length)return{word:{wt:J.Invalid,text:``},next:t};let n=e[t],r=t+1;if(ZC(n)){for(;r<e.length&&ZC(e[r]);)r++;return{word:{wt:J.Connector,text:e.slice(t,r).join(``)},next:r}}if(tw(n)){for(;r<e.length&&tw(e[r]);)r++;return{word:{wt:J.Punct,text:e.slice(t,r).join(``)},next:r}}if($C(n)){if(r>=e.length)return{word:{wt:J.UpperCase,text:n},next:r};if($C(e[r])){let n=r;for(;n<e.length&&$C(e[n]);)n++;return n<e.length&&QC(e[n])?{word:{wt:J.UpperCase,text:e.slice(t,n-1).join(``)},next:n-1}:{word:{wt:J.UpperCase,text:e.slice(t,n).join(``)},next:n}}if(QC(e[r])){let n=r+1;for(;n<e.length&&QC(e[n])&&!$C(e[n]);)n++;return{word:{wt:J.UpperCase,text:e.slice(t,n).join(``)},next:n}}return{word:{wt:J.UpperCase,text:n},next:r}}if(QC(n)){for(;r<e.length&&QC(e[r])&&!$C(e[r]);)r++;return{word:{wt:J.Alphabet,text:e.slice(t,r).join(``)},next:r}}if(ew(n)){for(;r<e.length&&ew(e[r]);)r++;return{word:{wt:J.Number,text:e.slice(t,r).join(``)},next:r}}for(;r<e.length&&!ZC(e[r])&&!QC(e[r])&&!ew(e[r])&&!tw(e[r]);)r++;return{word:{wt:J.Other,text:e.slice(t,r).join(``)},next:r}}function rw(e,t,n){if(t.wt!==J.UpperCase&&t.wt!==J.Connector){e.push(t.text);return}for(let r of t.text)ZC(r)?e.push(n):$C(r)?e.push(r.toLowerCase()):e.push(r)}function iw(e,t){if(e.length===0)return``;let n=HC(e),r=[],{word:i,next:a}=nw(n,0);for(;a<n.length;){i.wt!==J.Connector&&rw(r,i,t);let e=i,o=i;if({word:i,next:a}=nw(n,a),e.wt===J.Number){for(;i.wt===J.Alphabet||i.wt===J.Number;)rw(r,i,t),{word:i,next:a}=nw(n,a);i.wt!==J.Invalid&&i.wt!==J.Punct&&i.wt!==J.Connector&&r.push(t);continue}if(e.wt===J.Connector){rw(r,o,t);continue}if(e.wt===J.Punct)continue;if(i.wt!==J.Number){i.wt!==J.Connector&&i.wt!==J.Punct&&r.push(t);continue}if(a>=n.length)continue;let s=i;if({word:i,next:a}=nw(n,a),i.wt!==J.Alphabet){rw(r,s,t),i.wt!==J.Connector&&i.wt!==J.Punct&&r.push(t);continue}for(r.push(t),rw(r,s,t);i.wt===J.Alphabet||i.wt===J.Number;)rw(r,i,t),{word:i,next:a}=nw(n,a);i.wt!==J.Invalid&&i.wt!==J.Connector&&i.wt!==J.Punct&&r.push(t)}return rw(r,i,t),r.join(``).toLowerCase()}function aw(e){if(e.length===0)return``;let t=HC(e),n=[],r=0,i=``;for(;r<t.length;){if(i=t[r],r++,!ZC(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++,ZC(i)&&ZC(e)){n.push(e);continue}ZC(e)?i=i.toUpperCase():(i=i.toLowerCase(),n.push(e))}return n.push(i),n.join(``)}function ow(e){return aw(e)}function sw(...e){return e.join(` `)}function cw(e,t){return t.includes(e)}function lw(e,t){return t.startsWith(e)}function uw(e,t){return t.endsWith(e)}function dw(e,t){let n=` `.repeat(Math.max(0,e));return t.split(`
|
|
66
66
|
`).map(e=>n+e).join(`
|
|
67
|
-
`)}function
|
|
68
|
-
`,t)}function
|
|
69
|
-
`)){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 Uw(e,t,n){return Hw(e,t,n)}function Ww(){return{abbrev:{fn:(e,t)=>UC(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},abbrevboth:{fn:(e,t,n)=>WC(e,t,n),argTypes:[`int`,`int`,`string`],arity:{kind:`exact`}},camelcase:{fn:e=>aw(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},cat:{fn:(...e)=>ow(...e),argTypes:[`string`],arity:{kind:`variadic`}},contains:{fn:(e,t)=>sw(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},hasPrefix:{fn:(e,t)=>cw(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},hasSuffix:{fn:(e,t)=>lw(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},indent:{fn:(e,t)=>uw(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},initials:{fn:e=>dw(e),argTypes:[`string`],arity:{kind:`exact`}},join:{fn:(e,t)=>fw(e,t),argTypes:[`string`,`list`],arity:{kind:`exact`}},kebabcase:{fn:e=>mw(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},lower:{fn:e=>hw(e),argTypes:[`string`],arity:{kind:`exact`}},nindent:{fn:(e,t)=>gw(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},nospace:{fn:e=>_w(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},plural:{fn:(e,t,n)=>vw(e,t,n),argTypes:[`string`,`string`,`int`],arity:{kind:`exact`},returnType:`string`},quote:{fn:(...e)=>yw(...e),argTypes:[`string`],arity:{kind:`variadic`}},regexQuoteMeta:{fn:e=>bw(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},repeat:{fn:(e,t)=>xw(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},replace:{fn:(e,t,n)=>Sw(e,t,n),argTypes:[`string`,`string`,`string`],arity:{kind:`exact`}},snakecase:{fn:e=>Cw(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},split:{fn:(e,t)=>ww(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},splitList:{fn:(e,t)=>Tw(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},splitn:{fn:(e,t,n)=>Ew(e,t,n),argTypes:[`string`,`int`,`string`],arity:{kind:`exact`},returnType:`dict`},squote:{fn:(...e)=>Ow(...e),argTypes:[`string`],arity:{kind:`variadic`}},substr:{fn:(e,t,n)=>kw(e,t,n),argTypes:[`int`,`int`,`string`],arity:{kind:`exact`}},swapcase:{fn:e=>Aw(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},title:{fn:e=>Nw(e),argTypes:[`string`],arity:{kind:`exact`}},trim:{fn:e=>Pw(e),argTypes:[`string`],arity:{kind:`exact`}},trimAll:{fn:(e,t)=>Fw(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},trimPrefix:{fn:(e,t)=>Iw(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},trimSuffix:{fn:(e,t)=>Lw(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},trunc:{fn:(e,t)=>Rw(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},untitle:{fn:e=>zw(e),argTypes:[`string`],arity:{kind:`exact`}},upper:{fn:e=>Bw(e),argTypes:[`string`],arity:{kind:`exact`}},wrap:{fn:(e,t)=>Vw(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},wrapWith:{fn:(e,t,n)=>Uw(e,t,n),argTypes:[`int`,`string`,`string`],arity:{kind:`exact`}}}}function Gw(e,t){let n=Kw(e),r=n.copy();return r.style=Yl(n.style,t),r}function Kw(e){if(!(e instanceof K))throw TypeError(`template function expected a RichText fragment, got ${typeof e==`object`?Object.prototype.toString.call(e):typeof e}`);return e}function qw(e){return{fn:(t=>Gw(t,e)),argTypes:[`liftable`],arity:{kind:`exact`},returnType:`T`}}function Jw(e){return{fn:((t,n)=>Gw(n,new U({[e]:H.parse(t)}))),argTypes:[`string`,`liftable`],arity:{kind:`exact`},returnType:`T`}}function Yw(e,t){return new U({[e]:t})}function Xw(){let e={};for(let t of Ul)e[t]=qw(Yw(t,!0)),e[`not_${t}`]=qw(Yw(t,!1));for(let[t,n]of Object.entries(Gl))e[t]=qw(Yw(n,!0));return e}const Zw={fn:((e,t)=>Gw(t,U.parse(e))),argTypes:[`string`,`liftable`],arity:{kind:`exact`},returnType:`T`},Qw={fn:((e,t)=>Gw(t,new U({link:e}))),argTypes:[`string`,`liftable`],arity:{kind:`exact`},returnType:`T`};function $w(){return{fg:Jw(`color`),bg:Jw(`bgcolor`),...Xw(),link:Qw,style:Zw}}function eT(e,t){let n;try{n=ks(e.trim())}catch(n){throw n instanceof ds?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)}) …`,{cause:n}):n}return tT(n,t,JSON.stringify(e))}function tT(e,t,n){if(e.alpha===0)throw RangeError(`${t} got ${n}, which is fully transparent: it draws no colour of its own, so there is nothing to compute with — use the colour of the surface it sits on, e.g. (color "background")`);return e}function nT(e,t){return{fn:t,argTypes:e,arity:{kind:`exact`},returnType:`string`}}function rT(e,t,n,r){let i=r===void 0||e>=r.min&&e<=r.max;if(!Number.isFinite(e)||!i){let i=r===void 0?`a finite number`:`within ${r.min}..${r.max} (${r.note})`;throw RangeError(`${t}'s ${n} must be ${i}, got ${e}`)}return e}const iT=nT([`string`,`int`],((e,t)=>pc(eT(e,`darken`),t).hex)),aT=nT([`string`,`int`],((e,t)=>pc(eT(e,`lighten`),-t).hex)),oT={min:0,max:100,note:`0 = from, 100 = toward`},sT=nT([`string`,`string`,`float`],((e,t,n)=>As(eT(e,`mix`),eT(t,`mix`),rT(n,`mix`,`percentage`,oT)/100).hex)),cT={min:1,max:21,note:`4.5 = AA body text, 3 = AA large text`},lT=nT([`string`],(e=>hc(eT(e,`contrastOn`)).hex)),uT={depth:V.TRUECOLOR},dT=e=>nT([`string`,`string`,`float`],((t,n,r)=>{let{depth:i,terminal:a}=e();return gc(eT(t,`readableOn`),eT(n,`readableOn`),rT(r,`readableOn`,`ratio`,cT),i,void 0,a).hex})),fT={hueShift:`shiftHue`,chromaScale:`scaleChroma`,lightnessScale:`scaleLightness`,lightnessShift:`shiftLightness`};function pT(){let e={};for(let[t,n]of Object.entries(fT)){let r=t;e[n]=nT([`string`,`float`],((e,t)=>{let i={...Js,[r]:rT(t,n,`amount`)};return ac.fromRgba(eT(e,n)).applyKey(i).toRgba().hex}))}return e}function mT(e=()=>uT){return{darken:iT,lighten:aT,mix:sT,contrastOn:lT,readableOn:dT(e),...pT()}}function hT(e,t){if(e.length%2!=0)throw RangeError(`ramp's last stop (position ${String(e[e.length-1])}) has no color — stops are <position> <color> pairs`);let n=[];for(let r=0;r<e.length;r+=2)n.push({at:e[r],color:tT(sc(t,e[r+1]),`ramp`,JSON.stringify(e[r+1]))});return n}function gT(e){return{color:{fn:(t=>sc(e(),t).hex),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},ramp:{fn:((t,n,...r)=>new Pl(xl(n),hT(r,e())).at(t).hex),argTypes:[`float`,`string`],arity:{kind:`alternating`,minimum:4},returnType:`string`}}}function _T(e,t,n){if(t.length%2!=0)throw RangeError(`last hold (${String(t[t.length-1])} s) has no ${e} — the arguments are <seconds> <${e}> pairs`);let r=[];for(let e=0;e<t.length;e+=2){let i=t[e];if(!Number.isFinite(i)||i<=0)throw RangeError(`hold ${e/2} must be a positive number of seconds, got ${i}`);r.push({seconds:i,value:n(t[e+1])})}return r}function vT(e){return{frames:{fn:((...t)=>Lp(new Ip(_T(`frame`,t,Kw).map(({seconds:e,value:t})=>({seconds:e,text:t}))),e())),argTypes:[`float`,`liftable`],arity:{kind:`alternating`,minimum:2},returnType:`T`},stepped:{fn:((...t)=>{let n=_T(`color`,t,e=>eT(e,`stepped`));return n[Al(n.map(e=>e.seconds)).at(e())].value.hex}),argTypes:[`float`,`string`],arity:{kind:`alternating`,minimum:2},returnType:`string`}}}function yT(e){return{...$w(),...mT(e)}}new U({color:`red`,dim:!0});const bT=/^(?:(?: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,xT=/^(?<family>opus|sonnet|haiku)\s+(?<major>\d+)(?:\.(?<minor>\d))?$/i;function ST(e){if(!e)return`Claude`;let t=e.trim().replace(/\s*\([^)]*\)\s*$/,``).replace(/\s*\[[^\]]*\]\s*$/,``).trim(),n=t.match(bT);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(xT);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 CT(e){let t=e.match(xT);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 wT(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 TT(e){return e.toLocaleString()}function ET(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 DT(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 OT=[`▁`,`▂`,`▃`,`▄`,`▅`,`▆`,`▇`,`█`],kT=OT.length;function AT(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*(kT-1));o+=OT[t]}return o}function jT(e){let t=[];for(let n of e.split(`,`)){let e=n.trim();if(e===``)continue;let r=Number(e);if(!Number.isFinite(r))throw TypeError(`sparkline: non-numeric series element ${JSON.stringify(n)}`);t.push(r)}return t}function MT(e,t,n){if(n.length!==0)throw Error(`${e}: takes at most ${t.length} optional argument${t.length===1?``:`s`} (${t.join(`, `)}), got ${t.length+n.length}`)}const NT=hh(),PT=[...Ih];function FT(){return{basename:{fn:e=>y(e),argTypes:[`string`],arity:{kind:`exact`}},dirname:{fn:e=>b(e),argTypes:[`string`],arity:{kind:`exact`}},abbreviatePath:{fn:e=>wT(e),argTypes:[`string`],arity:{kind:`exact`}},int:{fn:e=>Math.trunc(Gv(e)),argTypes:[`value`],arity:{kind:`exact`}},string:{fn:e=>Wv(e),argTypes:[`value`],arity:{kind:`exact`}},bool:{fn:e=>Kv(e),argTypes:[`value`],arity:{kind:`exact`}},urlEncode:{fn:e=>encodeURIComponent(e),argTypes:[`string`],arity:{kind:`exact`}},themes:{fn:()=>NT,argTypes:[],arity:{kind:`exact`}},endcaps:{fn:()=>PT,argTypes:[],arity:{kind:`exact`}},sparkline:{fn:(e,t,...n)=>(MT(`sparkline`,[`width`],n),AT(jT(e),t)),argTypes:[`string`,`int`],arity:{kind:`variadic`}},cascade:{fn:(e,...t)=>DT(e,ET(t)),argTypes:[`float`,`string`],arity:{kind:`variadic`}}}}function IT(e){return{minutesUntilReset:{fn:t=>Math.round(Math.max(0,t*1e3-e().getTime())/6e4),argTypes:[`int`],arity:{kind:`exact`}},formatInteger:{fn:e=>TT(e),argTypes:[`int`],arity:{kind:`exact`}},round:{fn:e=>Math.round(e),argTypes:[`float`],arity:{kind:`exact`}},formatModelName:{fn:e=>ST(e),argTypes:[`string`],arity:{kind:`exact`}},shortenModelName:{fn:e=>CT(e),argTypes:[`string`],arity:{kind:`exact`}}}}function LT(e){let{clock:t,drawnAt:n,extraFuncs:r}=e;return Vb({fromString:e=>new K(e),toString:e=>e.plain,isT:e=>e instanceof K,clock:t,missingKey:`error`,funcs:{...AS(),...Ww(),...vC(),...BC(),...SS(t),...fx(),...KS(),...WS(),...yT(n&&(()=>({depth:n()}))),...vT(()=>t().getTime()/1e3),...FT(),...IT(t),...r??{}}})}function RT(e){return zT(e,new Set(e.names()),``)}function zT(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`?VT(a,e.readDocument(a)):e.read(a);let o=`${a}.`;for(let n of t)if(n.startsWith(o))return zT(e,t,a)}})}function BT(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 VT(e,t){switch(t.kind){case`ok`:return t.value;case`absent`:throw new qv(e,`variable "${e}" has no value yet: its source has not completed a scan`);case`failed`:throw Error(`variable "${e}": ${t.reason}`)}}function HT(e){return s.existsSync(v.join(e,`.git`))}function UT(e){let t=v.resolve(e);for(;;){if(HT(t))return t;let e=v.dirname(t);if(e===t)return;t=e}}function WT(e){let t=UT(e);return t===void 0?{root:v.resolve(e),git:!1}:{root:t,git:!0}}function GT(e,t){return e.kind===`absent`?L(`none`):e.kind===`failed`?e:t.kind===`failed`?t:L(t.kind===`ok`?`tracked`:`gone`)}function KT(e,t){return e.kind!==`ok`||e.value.state===`open`?e:t.kind===`failed`?z(`HEAD: ${t.reason}`):t.kind===`ok`&&t.value===e.value.head?e:{kind:`earlier`,value:e.value}}const qT={OPEN:`open`,MERGED:`merged`,CLOSED:`closed`},JT={opened:`open`,locked:`open`,merged:`merged`,closed:`closed`};function YT(e,t,n){return Object.hasOwn(t,n)?L(t[n]):z(`${e}: unknown state ${JSON.stringify(n)}`)}function XT(e,t,n){return t.ok?L(t.stdout):t.reason===`non-zero`&&n===`absent`||t.reason===`non-zero`&&n===t.exitCode?R:z(ZT(e,t))}function ZT(e,t){return`${e}: ${[t.reason,t.exitCode==null?null:`exit ${t.exitCode}`,t.error??QT(t.stderr)].filter(Boolean).join(`, `)}`}function QT(e){return e.trim().split(`
|
|
70
|
-
`,1)[0]??``}function
|
|
71
|
-
`)){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
|
|
72
|
-
`)){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)`?R:L(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=L(e.slice(16).trim());else if(e.startsWith(`branch.ab `)){let t=e.slice(10).trim().match(/^\+(\d+)\s+-(\d+)$/);t&&(i=L({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
|
|
73
|
-
`).length:0)}async getRemotesAsync(e){let t=SE(v.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){return cE(await this.execGitAsync(sE,{cwd:e,timeout:2e3}))}repoNameFrom(e,t){let n=fE(e);return(n===null?null:mE(n))??v.basename(t)}async getRepoRemoteUrl(e){let t=await this.getRemotesAsync(e);if(t.kind!==`ok`)return t;let n=pE(t.value);return n===null?R:L(n)}async execForgeAsync(e,t,n){return Le({bin:e,args:[...t],cwd:n.cwd,env:{...process.env},timeoutMs:n.timeout,category:`forge`})}async resolvePullRequest(e,t){let n=oE(t);return n===`github`?_E(`gh pr view`,await this.execForgeAsync(tE.github,[`pr`,`view`,`--json`,`number,state,url,headRefOid`],{cwd:e,timeout:5e3}),/no (open )?pull requests? found/i,bE):n===`gitlab`?_E(`glab mr view`,await this.execForgeAsync(tE.gitlab,[`mr`,`view`,`--output`,`json`],{cwd:e,timeout:5e3}),/no (open )?merge requests? (found|available)/i,xE):R}isWorktree(e){try{let t=v.join(e,`.git`);return!!(s.existsSync(t)&&s.statSync(t).isFile())}catch{return!1}}async getCoreAsync(e){k(`[GIT-EXEC] Running git status --porcelain=v2 in ${e}`);let t=XT(`git status --porcelain=v2 --branch`,await this.execGitAsync([`status`,`--porcelain=v2`,`--branch`],{cwd:e,timeout:2e3}),`failed`);return t.kind===`ok`?L(yE(t.value)):t}};const wE=(e,t)=>k(t);var TE=class{slots=new Map;maxWatchers;counters;logger;closed=!1;constructor(e={}){this.maxWatchers=e.maxWatchers??128,this.counters=e.counters,this.logger=e.logger??wE}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 r=s.watch(n,{persistent:!1},t);r.on(`error`,e=>{this.logger(`warn`,`watcher error ${n}: ${e.message}`)}),e.watchers.push(r)}catch(e){this.logger(`warn`,`watch failed ${n}: ${e.message}`)}for(let n of e.targets.dirs)try{let r=n.filenames?new Set(n.filenames):null,i=s.watch(n.path,{persistent:!1},(e,n)=>{r&&(!n||!r.has(n))||t()});i.on(`error`,e=>{this.logger(`warn`,`watcher error ${n.path}: ${e.message}`)}),e.watchers.push(i)}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()}},EE=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 DE={showSha:!0,showStashCount:!0};function OE(e){let t=Object.keys(e).sort(),n={};for(let r of t)n[r]=e[r];return JSON.stringify(n)}function kE(e){let t=t=>{try{return s.statSync(v.join(e,t)).mtimeMs}catch{return 0}};return{head:t(`HEAD`),index:t(`index`)}}function AE(e,t){return e.head!==t.head||e.index!==t.index}function jE(e){let t=[],n=v.join(e,`refs/heads`);try{s.statSync(n).isDirectory()&&t.push({path:n})}catch{}return{files:[v.join(e,`HEAD`),v.join(e,`index`)],dirs:t}}var ME=class extends CE{entries=new Map;subscribersByRepo=new Map;fetchInFlight=new Map;resolutions=new Map;prCache=new Map;prFetchInFlight=new Map;refreshes=new EE;hits=0;misses=0;invalidations=0;inner;ttlMs;maxEntries;watchers;ownsWatchers;logger;sanityTimer=null;constructor(e={}){super(),this.inner=e.inner??new CE,this.ttlMs=e.ttlMs??3e4,this.maxEntries=e.maxEntries??64,this.logger=e.logger??qt,e.watchers?(this.watchers=e.watchers,this.ownsWatchers=!1):(this.watchers=new TE({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}|${OE(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(L(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=kE(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}`,jE(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 R;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}`,jE(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,{...DE});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,{...DE}),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=kE(this.inner.resolveGitDir(t.repoRoot)),e.set(t.repoRoot,n)),AE(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 NE=/\r\n|\r|\n/g,PE=e=>L(e.replace(NE,` `).trim());function FE(e){return t=>{let n=e.exec(t)?.[1];return n===void 0?z(`regex no-match`):L(n.replace(NE,` `))}}const IE=e=>{try{return L(JSON.parse(e))}catch(e){return z(`JSON parse failed: ${e.message}`)}},LE=e=>e.getTime()/1e3,RE=e=>new Date(e*1e3);function zE(e,t){return t.kind!==`ttl`||t.durationMs>=500?t:(k(`declareShell "${e}": ttl ${t.durationMs}ms below floor 500ms; clamping`),{kind:`ttl`,durationMs:500})}function BE(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 VE=`session.id`;function HE(e,t,n){return{where:`output of "${e}" in ${t}`,read:async()=>{let r=await Le({bin:`/bin/sh`,args:[`-c`,e],cwd:t,category:`user-shell`,signal:n});if(!r.ok&&r.reason===`aborted`)throw n.reason;return r.ok?L(r.stdout):z(`shell "${e}" ${r.exitCode===null?[r.reason,r.error].filter(e=>e!==void 0).join(`: `):`exited with code ${r.exitCode}`} in ${t}`)}}}function UE(e,t,n){return{where:`"${e}"`,read:async()=>{try{let r=await ae(e,{encoding:`utf8`,signal:n});return L(t===`first-line`?r.split(/\r?\n/)[0]??``:r)}catch{if(n.aborted)throw n.reason;return z(`file unreadable: ${e}`)}}}}function WE(e,t,n){if(e.kind!==`ok`)return e;let r=t(e.value);return r.kind===`failed`?z(`${r.reason} in ${n}`):r}const GE=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],KE=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],qE=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],JE=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`];function YE(e,t){let n=[[`2006`,e=>String(e.getFullYear())],[`January`,e=>GE[e.getMonth()]],[`Monday`,e=>qE[e.getDay()]],[`Jan`,e=>KE[e.getMonth()]],[`Mon`,e=>JE[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 XE={branch:`string`,sha:`string`,dirty:`boolean`,ahead:`number`,behind:`number`,stash:`number`};function ZE(e,t,n,r){if(e===null){if(n!==void 0)return n;let e=XE[t];try{return aD(r,e)}catch{return oD(e)}}switch(t){case`branch`:return e.branch===`detached`?``:e.branch;case`sha`:return Ci(e.sha,``);case`dirty`:return e.status!==`clean`;case`ahead`:return Ci(e.aheadBehind,{ahead:0,behind:0}).ahead;case`behind`:return Ci(e.aheadBehind,{ahead:0,behind:0}).behind;case`stash`:return Ci(e.stashCount,0)}}function QE(e){try{return h(e)}catch{return e}}function $E(e){try{return g(e).isDirectory()}catch{return!1}}function eD(e){let t=QE(e);return $E(t)?{dir:t,name:null,leaf:!0}:Lv(t)}const tD=e=>`${e.dir}\0${e.name??``}`;var nD=class{watchers=new Map;subscribe(e,t,n){let r=this.watchers.get(e)??this.arm(e);return r.subscribers.set(t,n),r.watcher===null&&n(r.failure),()=>this.unsubscribe(e,t)}arm(e){let t={watcher:null,failure:``,target:eD(e),subscribers:new Map};return t.watcher=this.open(e,t,t.target),this.watchers.set(e,t),t}rearm(e,t){let n=eD(e);if(t.watcher!==null&&tD(n)===tD(t.target))return;let r=this.open(e,t,n);r!==null&&(t.watcher?.close(),t.watcher=r,t.target=n)}open(e,t,n){let{dir:r,name:i}=n,a=v.basename(r);try{return _(r,(n,r)=>{if(!(r===null||i===null||r===i)&&r!==a)return;let o=t.target.leaf;if(this.rearm(e,t),!(!o&&!t.target.leaf))for(let e of t.subscribers.keys())e()})}catch(n){let i=`watch_file ${e}: cannot watch ${r} — ${n instanceof Error?n.message:String(n)}`;t.failure=i;for(let e of t.subscribers.values())e(i);return null}}unsubscribe(e,t){let n=this.watchers.get(e);n&&(n.subscribers.delete(t),n.subscribers.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}},rD=class{buckets=new Map;subscribe(e,t){let n=this.buckets.get(e);if(!n){let t=new Set;n={timer:pe(()=>{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&&(de(n.timer),this.buckets.delete(e)))}dispose(){for(let{timer:e}of this.buckets.values())de(e);this.buckets.clear()}bucketCount(){return this.buckets.size}};function iD(e,t){let n=e;for(let e of t.split(`.`)){if(typeof n!=`object`||!n)return;n=n[e]}return n}function aD(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`?Wv(e):t===`number`?Gv(e):Kv(e)}function oD(e){return e===`number`?0:e===`boolean`?!1:``}var sD=class{inputMetas=new Map;lastErrors=new Map;policyFaults=new Map;watchMgr=new nD;ttlMgr=new rD;gitSubscriptions=new Map;cleanups=[];inFlight=new Map;reads=new EE;abort=new AbortController;drawn=Vv.observable.box(V.TRUECOLOR);drawnAt=()=>this.drawn.get();instant=Vv.observable.box(null);now=()=>{let e=this.instant.get();if(e===null)throw Error(`the time was read before any render published its instant`);return RE(e)};engine=LT({clock:this.now,drawnAt: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 ME({sanityIntervalMs:0}),this.ownsGitProvider=!0),this.sessionState=r}get variableStore(){return this.store}declareLiteral(e,t){this.store.defineBox(e,Uv(t),t)}declareFailedDocument(e,t){this.store.defineDocument(e,z(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,HE(t,n.cwd,this.abort.signal),zE(e,n.cache),n.parse)}declareFile(e,t,n){this.declareSource(e,UE(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,PE,t.default,n);case`regex`:return this.scalarPublisher(e,FE(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=WE(n,t,r);this.noteOutcome(e,a),this.store.setBox(e,Ci(a,i))}}documentPublisher(e,t,n){let r=t===void 0?R:L(t);this.store.defineDocument(e,r);let i,a=!1;return this.cleanups.push(()=>clearTimeout(i)),o=>{clearTimeout(i);let s=o.kind===`ok`&&o.value.trim()===``?R:o,c=WE(s,IE,n);this.noteOutcome(e,c);let l=c.kind===`ok`||s.kind===`ok`||t===void 0?c:r,u=a&&s.kind===`ok`&&c.kind!==`ok`,d=()=>{a=c.kind===`ok`,this.store.setDocument(e,l)};u?i=setTimeout(d,250):d()}}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.declareDerived(e,()=>r.evaluate(RT(this.store)).map(e=>e.plain).join(``),n.varDefault)}declareTime(e,t){this.declareDerived(e,()=>YE(t.format,this.now()),t.varDefault)}declareDerived(e,t,n){this.store.defineComputed(e,`string`,()=>{try{let n=t();return this.lastErrors.delete(e),n}catch(t){let r=t instanceof Error?t.message:String(t);if(this.recordError(e,r),n===void 0)throw Jv(t)?new qv(e,`variable "${e}": ${r}`):Error(`variable "${e}": ${r}`);return n}})}declareGit(e,t){let n=XE[t.field],r=t.varDefault===void 0?oD(n):aD(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,ZE(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(VE);if(typeof i!=`string`||!i)return r;let a=n.get(i,t.key);return a===null?r:a})}stateRevision(){let e=this.store.has(`session.id`)?this.store.read(VE):``;return this.sessionState!==void 0&&typeof e==`string`&&e!==``?this.sessionState.revision(e):0}applyInput(e){this.store.runInAction(()=>{for(let[t,n]of this.inputMetas){let r=iD(e,n.path),i=this.store.getType(t);if(r!==void 0)try{this.store.setBox(t,aD(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))}renderAt(e){this.store.runInAction(()=>this.instant.set(e))}getLastError(e){let t=this.lastErrors.get(e),n=this.policyFaults.get(e);return n===void 0?t:t===void 0?n:{timestamp:t.timestamp,message:`${n.message}; ${t.message}`}}cachePolicyFaults(){return this.policyFaults}dispose(){this.abort.abort();for(let e of this.cleanups)e();this.cleanups.length=0;for(let e of this.gitSubscriptions.values())e.unsubscribe();return this.gitSubscriptions.clear(),this.reads.clear(),this.watchMgr.dispose(),this.ttlMgr.dispose(),this.ownsGitProvider&&this.gitProvider.close(),this.store.dispose()}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 r=this.watchMgr.subscribe(t.path,n,t=>this.notePolicy(e,z(t)));this.cleanups.push(r);break}case`key`:{let r=this.engine.parse(t.template),i=()=>{try{return L(r.evaluate(RT(this.store)).map(e=>e.plain).join(``))}catch(e){return Jv(e)?R:z(`cache key: ${e instanceof Error?e.message:String(e)}`)}},a=i();this.notePolicy(e,a);let o=a.kind===`ok`?a.value:void 0,s=(0,Vv.reaction)(i,t=>{this.notePolicy(e,t),!(t.kind!==`ok`||t.value===o)&&(o=t.value,n())});this.cleanups.push(s);break}case`depends_on`:{let e=(0,Vv.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,aD(this.defaultEmptyValue,t))}catch{this.store.setBox(e,oD(t))}}defaultFor(e){try{return aD(this.defaultEmptyValue,e)}catch{return oD(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})}notePolicy(e,t){t.kind===`failed`?this.policyFaults.set(e,{timestamp:Date.now(),message:t.reason}):this.policyFaults.delete(e)}noteOutcome(e,t){t.kind===`ok`?this.lastErrors.delete(e):this.recordError(e,t.kind===`failed`?t.reason:`no value`)}};const cD={project_dir:{kind:`input`,path:`workspace.project_dir`,default:``},[VE]:{kind:`input`,path:`session_id`,default:``},transcript_path:{kind:`input`,path:`transcript_path`,default:``},resume_command:{kind:`input`,path:`resumeCommand`,default:``},config_path:{kind:`input`,path:`configPath`,default:``},"theme.effective":{kind:`input`,path:`theme.effective`,default:``},"style.effective":{kind:`input`,path:`style.effective`,default:``},"effect.effective":{kind:`input`,path:`effect.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},"endcaps.effective":{kind:`input`,path:`endcaps.effective`,default:``},"variation.effective":{kind:`input`,path:`variation.effective`,default:``},"shade.effective":{kind:`input`,path:`shade.effective`,default:``},"colorCompatibility.effective":{kind:`input`,path:`colorCompatibility.effective`,default:``},"transitions.effective":{kind:`input`,path:`transitions.effective`,type:`boolean`,default:!1},"autoWrap.effective":{kind:`input`,path:`autoWrap.effective`,type:`boolean`,default:!0},"padding.effective":{kind:`input`,path:`padding.effective`,type:`number`,default:1},"updateNotice.effective":{kind:`input`,path:`updateNotice.effective`,type:`boolean`,default:!0},...Object.fromEntries(Qa.map(e=>[to(e),{kind:`input`,path:to(e),type:`boolean`,default:!1}])),"term.cols":{kind:`input`,path:`term.cols`,type:`number`,default:80},"tmux.pane":{kind:`input`,path:`tmux.pane`,default:``},"autocompact.window":{kind:`input`,path:`autocompact.window`,type:`number`,default:-1},...Object.fromEntries([`applied`,`lower`,`higher`].map(e=>[`autocompact.${e}`,{kind:`input`,path:`autocompact.${e}`,type:`number`,default:0}])),"autocompact.error":{kind:`input`,path:`autocompact.error`,default:``},"git.repoUrl":{kind:`input`,path:`git.repoUrl`,default:``}},lD=`ne .tmux.pane ""`;function uD(e,t,n){let r=new Set,i=e=>{for(let t of Dv(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 __(e))i(t.when),t.kind===`segment`&&(i(t.lead),i(t.trail));for(let t of Object.values(e.variables))t.kind===`template`&&i(t.template),t.kind===`state`&&r.add(VE);for(let t of Object.values(e.actions)){r.add(VE),`copy`in t&&i(t.copy),`open`in t&&i(t.open);let e=`set`in t?lo.get(t.set):void 0,n=`persist`in t?co.get(t.persist):void 0;e!==void 0&&r.add(e),n!==void 0&&r.add(n)}return r}function dD(e,t,n){let r=Fv({...n,variables:{...n.variables,...e.variables},segments:{...n.segments,...e.segments}}),i={};for(let a of uD(e,t,n.helpers)){if(Pv(a,r))continue;let e=cD[a];if(e===void 0)throw Error(`synthesized chrome reads ".${a}", which it does not declare and PAYLOAD_INPUTS does not supply`);i[a]=e}return i}function fD(e){return e.replace(/[^A-Za-z0-9]+/g,`_`)}var pD=class extends Error{file;issues;warnings;constructor(e,t,n=[]){super(_D(e,t)),this.name=`ConfigError`,this.file=e,this.issues=t,this.warnings=n}};function Y(e,t){let n=0,r;for(let i of t){if(i===``||/^\d+$/.test(i))continue;let t=mD(e,n,i);if(t===-1)return r===void 0?void 0:hD(e,r);n=t,r=t}return r===void 0?void 0:hD(e,r)}function mD(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 hD(e,t){let n=1;for(let r=0;r<t&&r<e.length;r++)e.charCodeAt(r)===10&&n++;return n}function gD(e,t){try{return Br(t),null}catch(n){if(!(n instanceof Pr))throw n;return`${e}:${hD(t,n.offset)}: ${n.reason} — the settings menu cannot edit this file until it is fixed`}}function _D(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(`
|
|
74
|
-
`)}const vD=`groups.`,yD=`menus.`,bD=`edit.`,X=`candybar.`,xD=[vD,yD,bD,X];function SD(e){return xD.some(t=>e.startsWith(t))}function CD(e){let t=fD(e);return xD.find(e=>t.startsWith(fD(e)))}function wD(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:Y(e.source,[`root`])})}function TD(e){return e}function ED(e,t,n){return n===void 0?yD+fD(e)+`.`+fD(t):DD(n)}function DD(e){return yD+fD(e)}function OD(e,t){return e+`.`+t}function kD(e){return e+`.page`}const AD=[`closeOnPick`,`paged`,`key`,`distribution`],jD=e=>AD.includes(e),MD=`"closeOnPick" (bool, default false), "paged" (bool, default true), "key" (string, accordion grouping), "distribution" (one of ${mm.map(e=>`"${e}"`).join(`, `)}; default "van-der-corput")`;function ND(e){for(let t of Object.keys(e))if(!jD(t))throw Error(`unknown {{ menu }} option "${t}" — the options dict takes ${MD}`);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&&!hm(r))throw Error(`{{ menu }} option "distribution" must be one of: ${mm.join(`, `)}; got ${JSON.stringify(r)}`);return{closeOnPick:t(`closeOnPick`,!1),paged:t(`paged`,!0),key:n,distribution:_m(r)}}const PD=e=>`from`in e?e.from:e.themes;function FD(e,t,n){return e===`bool`?$h(t)!==null:`min`in e?eg(t,e)!==null:fv(PD(e),n).members.includes(t)}function ID(e,t){if(e===`bool`)return Zh.join(` or `);if(!(`min`in e)){let n=PD(e),{members:r}=fv(n,t),i=r.map(e=>JSON.stringify(e));if(r.length<=8)return`one of ${i.join(`, `)}`;let a=typeof n==`string`?` "${n}"`:``;return`one of the ${r.length}${a} names, such as ${i.slice(0,3).join(`, `)}`}return`an integer from ${e.min} to ${e.max}`}function LD(e){return{label:e.label,domain:RD(e.domain)}}function RD(e){return e===`theme`?{themes:lv}:e===`bool`||`min`in e?e:{from:e}}function zD(e,t,n,r,i){let a=_r(e.label),{domain:o}=e;if(o===`bool`)return{kind:`inline`,template:`{{ action "${r}" "☑ ${a}" "☐ ${a}" }}`,actions:{[r]:{set:t,cycle:[...Zh]}},variables:{}};if(`from`in o)return BD(t,r,i,o.from,e=>({template:`{{ "${a}" }} {{ carousel "${e.apply}" 0 "${e.open}" }}`,rows:[`{{ picker "${e.apply}" "${e.page}" false true true }}`]}));if(`themes`in o)return BD(t,r,i,o.themes,e=>({template:`{{ action "${e.open}" "${a}" .${n} }} {{ action "${e.open}" (swatch "${e.apply}") }}`,rows:[`{{ swatches "${e.apply}" "${e.page}" }}`,`{{ themePreview "${e.apply}" }}`]}));let s=e=>({set:t,min:o.min,max:o.max,by:e});return{kind:`inline`,template:`{{ action "${r}.down" "◀" }} {{ "${a}" }} {{ .${n} }} {{ action "${r}.up" "▶" }}`,actions:{[`${r}.down`]:s(-o.step),[`${r}.up`]:s(o.step)},variables:{}}}function BD(e,t,n,r,i){let a={variable:n,key:n,member:t},o=OD(n,t),s=`${t}.open`,c=kD(n),l=`${c}.current`,{template:u,rows:d}=i({apply:t,open:s,page:c});return{kind:`picker`,template:u,actions:{[t]:{set:e,from:r},[o]:Tr(n,t),[c]:{set:c,int:!0},[l]:{set:c,to:`-1`},[s]:{do:[o,l]}},variables:{[n]:wr(n,pr),[c]:{kind:`state`,key:c,default:`0`}},list:{ref:a,rows:d}}}function VD(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 ${qD(i)}`,line:Y(e.source,[...t.split(`.`),r])}),null)}function HD(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 ${qD(i)}`,line:Y(e.source,[...t.split(`.`),`default`])});return}return i}}function UD(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 ${qD(i)}`,line:Y(e.source,[...t.split(`.`),r])});return}return i}}function WD(e,t,n){let r=UD(e,t,n,`palette`);if(r!==void 0){if(!e.allowedPalettes.has(r)){e.issues.push({path:`${t}.palette`,message:`Unknown palette "${r}"${fh(r)}. Expected one of: ${[...e.allowedPalettes].sort().join(`, `)}`,line:Y(e.source,[...t.split(`.`),`palette`])});return}return r}}function GD(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 ${Z(a)}`,line:Y(e.source,[...t.split(`.`),r])});return}return a}}function KD(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function qD(e){return e===null?`null`:Array.isArray(e)?`array`:typeof e}function Z(e){return typeof e==`string`?JSON.stringify(e):e===void 0?`undefined`:String(e)}function JD(e,t,n,r){return KD(r)?(QD(e,n,r,t.noun,new Set(Object.keys(t.fields)),YD(e,t.removed??{},n,r)),XD(e,t.fields,n,r)):(e.issues.push({path:n,message:`${n} must be an object, got ${qD(r)}`,line:Y(e.source,n.split(`.`))}),null)}function YD(e,t,n,r){let i=Object.entries(t).filter(([e])=>r[e]!==void 0);for(let[t,r]of i)$D(e,`${n}.${t}`,`${n}.${t} was removed: ${r}`);return new Set(i.map(([e])=>`${n}.${e}`))}function XD(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 ZD=new Set;function QD(e,t,n,r,i,a=ZD){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:Y(e.source,[...t.split(`.`),o])})}function $D(e,t,n){return e.issues.push({path:t,message:n,line:Y(e.source,t.split(`.`))}),null}function eO(e,t,n,r){if(!KD(r))return e.issues.push({path:n,message:`${t.noun} must be an object, got ${qD(r)}`,line:Y(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:Y(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:Y(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:Y(e.source,n.split(`.`))}),null;let c=o[0];return i[c].parse(e,`${n}.${c}`,r[c])}function tO(e,t,n,r){if(!KD(r))return e.issues.push({path:n,message:`${n} must be an object, got ${qD(r)}`,line:Y(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 ${qD(i)}`,line:Y(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:Y(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 QD(e,n,r,`${i} ${t.memberNoun} key`,o.keys,l),c}function nO(e,t,n){return{json:gO(mO(n),e,t),keys:new Set([e,...Object.keys(n)])}}function rO(e){return(...t)=>e()(...t)}function iO(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:Y(n.source,o.split(`.`))}),null}return a}}function aO(){return{required:!1,json:{type:`string`},parse:(e,t,n,r)=>UD(e,t,r,n)}}function oO(){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 ${qD(i)}`,line:Y(e.source,[n])});return}return i}}}}function sO(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 ${Z(o)}`,line:Y(e.source,[i])});return}return o}}}}function cO(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 ${Z(a)}`,line:Y(e.source,[r])});return}return a}}}}function lO(){return{required:!1,json:{type:`string`},parse:(e,t,n,r)=>WD(e,t,r)}}function uO(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>VD(e,t,r,n)??void 0}}function dO(e,t){return x(t)?null:`${e} must be an absolute path (\`~\` and relative paths are not expanded), got ${JSON.stringify(t)}`}function fO(){return{required:!0,json:{type:`string`,pattern:`^/`},parse:(e,t,n,r)=>{let i=VD(e,t,r,n);if(i===null)return;let a=dO(`${t}.${n}`,i);return a===null?i:$D(e,`${t}.${n}`,a)??void 0}}}function pO(e){return{required:!1,json:{enum:[...e]},parse:(t,n,r,i)=>GD(t,n,i,r,e)}}function mO(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 hO(e){return mO(e.fields)}function gO(e,t,n){let r=e,i={[t]:{const:n},...r.properties},a=[t,...r.required??[]];return{...r,properties:i,required:a}}function _O(e){let t=e.arms;return{anyOf:Object.values(t).map(e=>e.json)}}function vO(e){let t=e.arms;return{anyOf:Object.entries(t).map(([e,t])=>({type:`object`,properties:{[e]:t.json},required:[e],additionalProperties:!1}))}}const yO={required:!1,json:{enum:[...Vh]},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: ${Vh.join(`, `)}`,line:Y(e.source,[...t.split(`.`),n])});return}return GD(e,t,r,n,Vh)}},bO={required:!1,json:{type:`string`},parse:(e,t,n,r)=>{let i=UD(e,t,r,n);return xh(i)?i:WD(e,t,r)}},xO={required:!1,json:{anyOf:[{enum:[...jh]},{type:`string`,pattern:`\\{\\{`}]},parse:(e,t,n,r)=>{let i=r[n];return typeof i==`string`&&xh(i)?i:GD(e,t,r,n,jh)}},SO=/^[^\r\n]*\S[^\r\n]*$/u,CO=RegExp(`^(?:✖|✕)[\\uFE0E\\uFE0F]?$`,`u`),wO={required:!1,json:{type:`string`,pattern:SO.source,not:{pattern:CO.source}},parse:(e,t,n,r)=>{let i=UD(e,t,r,n);if(i===void 0||SO.test(i)&&!CO.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:Y(e.source,[...t.split(`.`),n])})}};function TO(e){return{spec:pO(e),domain:{from:e}}}function EO(){return{spec:oO(),domain:`bool`}}function DO(e){return{spec:e,domain:`text`}}const OO={default_empty_value:DO(aO()),default_separator:DO(aO()),palette:{spec:bO,domain:{themes:`themes`}},style:{spec:aO(),domain:{from:`styles`}},effect:{spec:xO,domain:{from:jh}},preset:{spec:aO(),domain:{from:`presets`}},endcaps:TO(Ih),variation:TO(Uh),shade:TO(Kh),autoWrap:EO(),padding:{spec:sO(Qh),domain:{...Qh,step:1}},updateNotice:EO(),transitions:EO(),experimentalBand:EO(),experimentalStatusline:EO(),experimentalPane:EO(),colorCompatibility:{spec:yO,domain:{from:Vh}},menuGlyph:DO(wO)},kO=Object.fromEntries(Object.entries(OO).map(([e,t])=>[e,t.spec]));function AO(e){return OO[e].domain}function jO(e){let t=AO(e);if(t===`text`)throw Error(`globals.${e} is free text, which no control can change — list it in UNCONTROLLED_GLOBALS instead of SETTINGS`);return t}function MO(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:Y(e.source,[...n.split(`.`),r])})}}}function NO(e){return MO(`${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 PO(e){return MO(`${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.`)}function FO(e,t,n){return{...e,json:{...e.json,not:{pattern:`\\{\\{`}},parse:(r,i,a,o)=>{let s=o[a];if(typeof s==`string`&&xh(s)){r.issues.push({path:`${i}.${a}`,message:`${i}.${a}: a rule is not allowed here — ${t} ${n}, so it names a value. Write the rule in globals.${a} (or a preset's globals.${a}) instead.`,line:Y(r.source,[...i.split(`.`),a])});return}return e.parse(r,i,a,o)}}}const IO={default_bg:"nothing reads it — a segment with no `bg:` wears the decoration tint of its place in the bar. Delete the key, and author `bg:` on the segments that need a fixed colour.",default_fg:"nothing reads it — a segment with no `fg:` wears text chosen for contrast against its background. Delete the key, and author `fg:` on the segments that need a fixed colour.",default_truncate_marker:'nothing reads it — a segment clipped to its `width:` always ends in "…". Delete the key.',look:`it was renamed "style" — write the same name as style: "<name>"`,progression:`it was renamed "variation", and its values with it: accent (was secondary-accent), duo (was primary-secondary), mono (was primary)`,charset:"the bar always draws Nerd Font glyphs. Delete the key; `cc-candybar doctor` names what your terminal's font is missing."},LO={noun:`globals key`,fields:kO,removed:IO},RO={preset:NO(`a preset`),menuGlyph:PO(`a preset`)},zO={noun:`preset globals key`,fields:{...kO,...RO},removed:IO};function BO(e){return XO(e)&&!(e in RO)}const VO=`is decided later than any rule could be settled`,HO={noun:`editGlobals key`,removed:IO,fields:{...kO,preset:NO(`the editGlobals fragment`),menuGlyph:PO(`the editGlobals fragment`),palette:FO(kO.palette,`the editGlobals fragment`,VO),style:FO(kO.style,`the editGlobals fragment`,VO),effect:FO(kO.effect,`the editGlobals fragment`,VO)}},UO={noun:`theme default key`,fields:{...Object.fromEntries(S_.map(e=>[e,kO[e]])),style:FO(kO.style,`a theme's default`,`is the look that theme wears by name`)}};function WO(e,t){if(!KD(t))return e.issues.push({path:`themeDefaults`,message:`themeDefaults must be an object mapping theme names to { shade, variation, style }, got ${qD(t)}`,line:Y(e.source,[`themeDefaults`])}),{};let n={};for(let[r,i]of Object.entries(t)){let t=`themeDefaults.${r}`;if(!e.allowedPalettes.has(r)){e.issues.push({path:t,message:`${t}: "${r}" is not an installed theme${fh(r)}. Expected one of: ${[...e.allowedPalettes].sort().join(`, `)}`,line:Y(e.source,[`themeDefaults`,r])});continue}let a=JD(e,UO,t,i);a!==null&&(n[r]=a)}return n}function GO(e,t,n){return n===void 0?{}:JD(e,LO,t,n)??{}}function KO(e,t,n){return JD(e,zO,t,n)??{}}function qO(){return hO(zO)}function JO(e,t,n){return JD(e,HO,t,n)??{}}const YO=new Set(Object.keys(kO));function XO(e){return YO.has(e)}function ZO(e){return Object.hasOwn(IO,e)?IO[e]:void 0}function QO(){return[...YO]}const $O={padding:1};function ek(e){let t=new Map;for(let[n,r]of Object.entries($O)){let i=e[n];t.set(n,typeof i==`number`?i:r)}return t}const tk=/^segments\.([^.]+)\.palette$/,nk=/^presets\.(.+)\.root$/,rk=/^presets\.(.+)\.globals\.([^.]+)$/,ik=/^themeDefaults\.(.+)\.([^.]+)$/;function ak(e){return`presets.${e}.root`}function ok(e,t){return`themeDefaults.${e}.${t}`}const sk=e=>S_.includes(e);function ck(e,t){return`presets.${e}.globals.${t}`}function lk(e){if(XO(e))return{scope:`globals`,field:e};let t=tk.exec(e);if(t)return{scope:`segment-palette`,segment:t[1]};let n=rk.exec(e);if(n&&BO(n[2]))return{scope:`preset-globals`,preset:n[1],field:n[2]};let r=ik.exec(e);if(r&&sk(r[2]))return{scope:`theme-default`,theme:r[1],field:r[2]};let i=nk.exec(e);return i?{scope:`preset-root`,preset:i[1]}:null}function uk(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`];case`theme-default`:return[`themeDefaults`,e.theme,e.field]}}const dk=[`location`,`git`,`model-context`,`cost-limits`,`activity`,`session-tools`],fk=[...dk,`other`],pk={location:`location`,git:`git`,"model-context":`model & context`,"cost-limits":`cost & limits`,activity:`activity`,"session-tools":`session tools`,other:`other`},mk=Vb({fromString:e=>e}),hk=`edit.mode`,gk=`edit.configure`,_k=`edit.toggle`,vk=`edit.unconfigure`,yk=[_k,vk],bk=`arrange`,xk=`${bD}draft.`;function Sk(e,t){return`${e}:${t}`}const Ck={variable:hk,key:hk,member:bk},wk=yr(Ck);function Tk(e){try{return mk.parse(e).referencedCalls().some(e=>e.name===`action`&&e.args[0]===`edit.toggle`)}catch{return!1}}function Ek(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`&&Tk(e))return!0;return!1}function Dk(e,t){if(wD(e,t,bD,`edit mode`),!Ek(t))return;let{variables:n,actions:r}=Ok();t.variables={...t.variables??{},...n},t.actions={...t.actions??{},...r}}function Ok(){return{variables:{[hk]:wr(hk,pr),[gk]:wr(gk,pr)},actions:{[_k]:Tr(hk,bk),[vk]:{set:gk,to:pr}}}}const kk=`open`;function Ak(e,t,n,r){let i={variable:e,key:e,member:kk};return r.variables[e]=wr(e,pr),r.actions[e]=Tr(e,kk),r.segments[e]={template:xr(e,`(?)`,`✕`),...jk(n)},vr(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 jk(e){let[t,...n]=e;return t===void 0?{}:{when:yr(t,...n)}}const Mk=`none`;function Nk(e){return sc(e,`background`)}var Pk=class extends Error{constructor(e,t,n){super(`Invalid ${t} color ${JSON.stringify(e)}: ${n}`),this.name=`ColorSpecError`}};function Fk(e,t,n,r,i){let{palette:a,tint:o,text:s}=e,c=Ik(n,i),l=c!==Mk,u=l?c===void 0?o:Lk(a,c,`bg`):Nk(a);e.bg=u;let d=Ik(r,i),f=d===void 0?l?(e=>e.hex===o.hex?s:zm(a,e,t))(u):void 0:Lk(a,d,`fg`);return new U({...l&&{bgcolor:H.fromRgba(u)},...f!==void 0&&{color:H.fromRgba(f)}})}function Ik(e,t){if(e!==void 0)return e.evaluate(t).map(e=>e.plain).join(``)}function Lk(e,t,n){try{return sc(e,t)}catch(e){throw e instanceof oc?new Pk(t,n,e.message):e}}const Rk=`🔧`,zk={help:[`-h`,`--help`],version:[`-V`,`--version`]},Bk=[`✚ inserts`,`✖ removes`,`${Rk} configures`,`↺ resets layout`],Vk=`
|
|
67
|
+
`)}function fw(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 pw(e,t){let n=[];for(let e of t){if(typeof e==`object`&&e)throw tC(`join`,2,`list of strings/primitives`,`list element of type ${mw(e)}`);n.push(String(e))}return n.join(e)}function mw(e){return Array.isArray(e)?`array`:e instanceof Map?`Map`:e instanceof Set?`Set`:`object`}function hw(e){return iw(e,`-`)}function gw(e){return e.toLowerCase()}function _w(e,t){return`\n${dw(e,t)}`}function vw(e){return e.replace(/\s+/g,``)}function yw(e,t,n){return n===1?e:t}function bw(...e){return e.map(e=>`"${e}"`).join(` `)}function xw(e){return e.replace(/[\\.+*?()|[\]{}^$]/g,`\\$&`)}function Sw(e,t){return t.repeat(Math.max(0,e))}function Cw(e,t,n){return UC(e,n).join(t)}function ww(e){return iw(e,`_`)}function Tw(e,t){let n=UC(e,t),r={};for(let e=0;e<n.length;e++)r[`_${e}`]=n[e];return r}function Ew(e,t){return UC(e,t)}function Dw(e,t,n){let r=Ow(n,e,t),i={};for(let e=0;e<r.length;e++)i[`_${e}`]=r[e]??``;return i}function Ow(e,t,n){if(n===0)return[];let r=UC(t,e);if(n<0||r.length<=n)return r;let i=r.slice(0,n-1),a=r.slice(n-1).join(t);return[...i,a]}function kw(...e){return e.map(e=>`'${e}'`).join(` `)}function Aw(e,t,n){let r=HC(n),i=t<0||t>r.length?r.length:t,a=Math.min(Math.max(0,e),i);return r.slice(a,i).join(``)}function jw(e){let t=``;for(let n of e)Mw(n)?t+=n.toLowerCase():Nw(n)?t+=n.toUpperCase():t+=n;return t}function Mw(e){return e!==e.toLowerCase()&&e===e.toUpperCase()}function Nw(e){return e!==e.toUpperCase()&&e===e.toLowerCase()}function Pw(e){return e.replace(/\b([a-zA-Z])/g,e=>e.toUpperCase())}function Fw(e){return e.trim()}function Iw(e,t){if(e.length===0)return t;let n=new Set(HC(e)),r=HC(t),i=0;for(;i<r.length&&n.has(r[i]);)i+=1;let a=r.length;for(;a>i&&n.has(r[a-1]);)--a;return r.slice(i,a).join(``)}function Lw(e,t){return t.startsWith(e)?t.slice(e.length):t}function Rw(e,t){return t.endsWith(e)?t.slice(0,t.length-e.length):t}function zw(e,t){let n=HC(t);if(e<0){let r=-e;return r>=n.length?t:n.slice(n.length-r).join(``)}return e>=n.length?t:n.slice(0,e).join(``)}function Bw(e){return e.replace(/\b([A-Z])/g,e=>e.toLowerCase())}function Vw(e){return e.toUpperCase()}function Hw(e,t){return Uw(e,`
|
|
68
|
+
`,t)}function Uw(e,t,n){if(e<=0)return n;let r=[];for(let t of n.split(`
|
|
69
|
+
`)){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 Ww(e,t,n){return Uw(e,t,n)}function Gw(){return{abbrev:{fn:(e,t)=>WC(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},abbrevboth:{fn:(e,t,n)=>GC(e,t,n),argTypes:[`int`,`int`,`string`],arity:{kind:`exact`}},camelcase:{fn:e=>ow(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},cat:{fn:(...e)=>sw(...e),argTypes:[`string`],arity:{kind:`variadic`}},contains:{fn:(e,t)=>cw(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},hasPrefix:{fn:(e,t)=>lw(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},hasSuffix:{fn:(e,t)=>uw(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},indent:{fn:(e,t)=>dw(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},initials:{fn:e=>fw(e),argTypes:[`string`],arity:{kind:`exact`}},join:{fn:(e,t)=>pw(e,t),argTypes:[`string`,`list`],arity:{kind:`exact`}},kebabcase:{fn:e=>hw(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},lower:{fn:e=>gw(e),argTypes:[`string`],arity:{kind:`exact`}},nindent:{fn:(e,t)=>_w(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},nospace:{fn:e=>vw(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},plural:{fn:(e,t,n)=>yw(e,t,n),argTypes:[`string`,`string`,`int`],arity:{kind:`exact`},returnType:`string`},quote:{fn:(...e)=>bw(...e),argTypes:[`string`],arity:{kind:`variadic`}},regexQuoteMeta:{fn:e=>xw(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},repeat:{fn:(e,t)=>Sw(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},replace:{fn:(e,t,n)=>Cw(e,t,n),argTypes:[`string`,`string`,`string`],arity:{kind:`exact`}},snakecase:{fn:e=>ww(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},split:{fn:(e,t)=>Tw(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},splitList:{fn:(e,t)=>Ew(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},splitn:{fn:(e,t,n)=>Dw(e,t,n),argTypes:[`string`,`int`,`string`],arity:{kind:`exact`},returnType:`dict`},squote:{fn:(...e)=>kw(...e),argTypes:[`string`],arity:{kind:`variadic`}},substr:{fn:(e,t,n)=>Aw(e,t,n),argTypes:[`int`,`int`,`string`],arity:{kind:`exact`}},swapcase:{fn:e=>jw(e),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},title:{fn:e=>Pw(e),argTypes:[`string`],arity:{kind:`exact`}},trim:{fn:e=>Fw(e),argTypes:[`string`],arity:{kind:`exact`}},trimAll:{fn:(e,t)=>Iw(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},trimPrefix:{fn:(e,t)=>Lw(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},trimSuffix:{fn:(e,t)=>Rw(e,t),argTypes:[`string`,`string`],arity:{kind:`exact`}},trunc:{fn:(e,t)=>zw(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},untitle:{fn:e=>Bw(e),argTypes:[`string`],arity:{kind:`exact`}},upper:{fn:e=>Vw(e),argTypes:[`string`],arity:{kind:`exact`}},wrap:{fn:(e,t)=>Hw(e,t),argTypes:[`int`,`string`],arity:{kind:`exact`}},wrapWith:{fn:(e,t,n)=>Ww(e,t,n),argTypes:[`int`,`string`,`string`],arity:{kind:`exact`}}}}function Kw(e,t){let n=qw(e),r=n.copy();return r.style=Yl(n.style,t),r}function qw(e){if(!(e instanceof K))throw TypeError(`template function expected a RichText fragment, got ${typeof e==`object`?Object.prototype.toString.call(e):typeof e}`);return e}function Jw(e){return{fn:(t=>Kw(t,e)),argTypes:[`liftable`],arity:{kind:`exact`},returnType:`T`}}function Yw(e){return{fn:((t,n)=>Kw(n,new U({[e]:H.parse(t)}))),argTypes:[`string`,`liftable`],arity:{kind:`exact`},returnType:`T`}}function Xw(e,t){return new U({[e]:t})}function Zw(){let e={};for(let t of Ul)e[t]=Jw(Xw(t,!0)),e[`not_${t}`]=Jw(Xw(t,!1));for(let[t,n]of Object.entries(Gl))e[t]=Jw(Xw(n,!0));return e}const Qw={fn:((e,t)=>Kw(t,U.parse(e))),argTypes:[`string`,`liftable`],arity:{kind:`exact`},returnType:`T`},$w={fn:((e,t)=>Kw(t,new U({link:e}))),argTypes:[`string`,`liftable`],arity:{kind:`exact`},returnType:`T`};function eT(){return{fg:Yw(`color`),bg:Yw(`bgcolor`),...Zw(),link:$w,style:Qw}}function tT(e,t){let n;try{n=ks(e.trim())}catch(n){throw n instanceof ds?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)}) …`,{cause:n}):n}return nT(n,t,JSON.stringify(e))}function nT(e,t,n){if(e.alpha===0)throw RangeError(`${t} got ${n}, which is fully transparent: it draws no colour of its own, so there is nothing to compute with — use the colour of the surface it sits on, e.g. (color "background")`);return e}function rT(e,t){return{fn:t,argTypes:e,arity:{kind:`exact`},returnType:`string`}}function iT(e,t,n,r){let i=r===void 0||e>=r.min&&e<=r.max;if(!Number.isFinite(e)||!i){let i=r===void 0?`a finite number`:`within ${r.min}..${r.max} (${r.note})`;throw RangeError(`${t}'s ${n} must be ${i}, got ${e}`)}return e}const aT=rT([`string`,`int`],((e,t)=>pc(tT(e,`darken`),t).hex)),oT=rT([`string`,`int`],((e,t)=>pc(tT(e,`lighten`),-t).hex)),sT={min:0,max:100,note:`0 = from, 100 = toward`},cT=rT([`string`,`string`,`float`],((e,t,n)=>As(tT(e,`mix`),tT(t,`mix`),iT(n,`mix`,`percentage`,sT)/100).hex)),lT={min:1,max:21,note:`4.5 = AA body text, 3 = AA large text`},uT=rT([`string`],(e=>hc(tT(e,`contrastOn`)).hex)),dT={depth:V.TRUECOLOR},fT=e=>rT([`string`,`string`,`float`],((t,n,r)=>{let{depth:i,terminal:a}=e();return gc(tT(t,`readableOn`),tT(n,`readableOn`),iT(r,`readableOn`,`ratio`,lT),i,void 0,a).hex})),pT={hueShift:`shiftHue`,chromaScale:`scaleChroma`,lightnessScale:`scaleLightness`,lightnessShift:`shiftLightness`};function mT(){let e={};for(let[t,n]of Object.entries(pT)){let r=t;e[n]=rT([`string`,`float`],((e,t)=>{let i={...Js,[r]:iT(t,n,`amount`)};return ac.fromRgba(tT(e,n)).applyKey(i).toRgba().hex}))}return e}function hT(e=()=>dT){return{darken:aT,lighten:oT,mix:cT,contrastOn:uT,readableOn:fT(e),...mT()}}function gT(e,t){if(e.length%2!=0)throw RangeError(`ramp's last stop (position ${String(e[e.length-1])}) has no color — stops are <position> <color> pairs`);let n=[];for(let r=0;r<e.length;r+=2)n.push({at:e[r],color:nT(sc(t,e[r+1]),`ramp`,JSON.stringify(e[r+1]))});return n}function _T(e){return{color:{fn:(t=>sc(e(),t).hex),argTypes:[`string`],arity:{kind:`exact`},returnType:`string`},ramp:{fn:((t,n,...r)=>new Pl(xl(n),gT(r,e())).at(t).hex),argTypes:[`float`,`string`],arity:{kind:`alternating`,minimum:4},returnType:`string`}}}function vT(e,t,n){if(t.length%2!=0)throw RangeError(`last hold (${String(t[t.length-1])} s) has no ${e} — the arguments are <seconds> <${e}> pairs`);let r=[];for(let e=0;e<t.length;e+=2){let i=t[e];if(!Number.isFinite(i)||i<=0)throw RangeError(`hold ${e/2} must be a positive number of seconds, got ${i}`);r.push({seconds:i,value:n(t[e+1])})}return r}function yT(e){return{frames:{fn:((...t)=>Lp(new Ip(vT(`frame`,t,qw).map(({seconds:e,value:t})=>({seconds:e,text:t}))),e())),argTypes:[`float`,`liftable`],arity:{kind:`alternating`,minimum:2},returnType:`T`},stepped:{fn:((...t)=>{let n=vT(`color`,t,e=>tT(e,`stepped`));return n[Al(n.map(e=>e.seconds)).at(e())].value.hex}),argTypes:[`float`,`string`],arity:{kind:`alternating`,minimum:2},returnType:`string`}}}function bT(e){return{...eT(),...hT(e)}}new U({color:`red`,dim:!0});const xT=/^(?:(?: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,ST=/^(?<family>opus|sonnet|haiku)\s+(?<major>\d+)(?:\.(?<minor>\d))?$/i;function CT(e){if(!e)return`Claude`;let t=e.trim().replace(/\s*\([^)]*\)\s*$/,``).replace(/\s*\[[^\]]*\]\s*$/,``).trim(),n=t.match(xT);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(ST);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 wT(e){let t=e.match(ST);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 TT(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 ET(e){return e.toLocaleString()}function DT(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 OT(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 kT=[`▁`,`▂`,`▃`,`▄`,`▅`,`▆`,`▇`,`█`],AT=kT.length;function jT(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*(AT-1));o+=kT[t]}return o}function MT(e){let t=[];for(let n of e.split(`,`)){let e=n.trim();if(e===``)continue;let r=Number(e);if(!Number.isFinite(r))throw TypeError(`sparkline: non-numeric series element ${JSON.stringify(n)}`);t.push(r)}return t}function NT(e,t,n){if(n.length!==0)throw Error(`${e}: takes at most ${t.length} optional argument${t.length===1?``:`s`} (${t.join(`, `)}), got ${t.length+n.length}`)}const PT=gh(),FT=[...Lh];function IT(){return{basename:{fn:e=>y(e),argTypes:[`string`],arity:{kind:`exact`}},dirname:{fn:e=>b(e),argTypes:[`string`],arity:{kind:`exact`}},abbreviatePath:{fn:e=>TT(e),argTypes:[`string`],arity:{kind:`exact`}},int:{fn:e=>Math.trunc(Kv(e)),argTypes:[`value`],arity:{kind:`exact`}},string:{fn:e=>Gv(e),argTypes:[`value`],arity:{kind:`exact`}},bool:{fn:e=>qv(e),argTypes:[`value`],arity:{kind:`exact`}},urlEncode:{fn:e=>encodeURIComponent(e),argTypes:[`string`],arity:{kind:`exact`}},themes:{fn:()=>PT,argTypes:[],arity:{kind:`exact`}},endcaps:{fn:()=>FT,argTypes:[],arity:{kind:`exact`}},sparkline:{fn:(e,t,...n)=>(NT(`sparkline`,[`width`],n),jT(MT(e),t)),argTypes:[`string`,`int`],arity:{kind:`variadic`}},cascade:{fn:(e,...t)=>OT(e,DT(t)),argTypes:[`float`,`string`],arity:{kind:`variadic`}}}}function LT(e){return{minutesUntilReset:{fn:t=>Math.round(Math.max(0,t*1e3-e().getTime())/6e4),argTypes:[`int`],arity:{kind:`exact`}},formatInteger:{fn:e=>ET(e),argTypes:[`int`],arity:{kind:`exact`}},round:{fn:e=>Math.round(e),argTypes:[`float`],arity:{kind:`exact`}},formatModelName:{fn:e=>CT(e),argTypes:[`string`],arity:{kind:`exact`}},shortenModelName:{fn:e=>wT(e),argTypes:[`string`],arity:{kind:`exact`}}}}function RT(e){let{clock:t,drawnAt:n,extraFuncs:r}=e;return Hb({fromString:e=>new K(e),toString:e=>e.plain,isT:e=>e instanceof K,clock:t,missingKey:`error`,funcs:{...jS(),...Gw(),...yC(),...VC(),...CS(t),...px(),...qS(),...GS(),...bT(n&&(()=>({depth:n()}))),...yT(()=>t().getTime()/1e3),...IT(),...LT(t),...r??{}}})}function zT(e){return BT(e,new Set(e.names()),``)}function BT(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`?HT(a,e.readDocument(a)):e.read(a);let o=`${a}.`;for(let n of t)if(n.startsWith(o))return BT(e,t,a)}})}function VT(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 HT(e,t){switch(t.kind){case`ok`:return t.value;case`absent`:throw new Jv(e,`variable "${e}" has no value yet: its source has not completed a scan`);case`failed`:throw Error(`variable "${e}": ${t.reason}`)}}function UT(e){return s.existsSync(v.join(e,`.git`))}function WT(e){let t=v.resolve(e);for(;;){if(UT(t))return t;let e=v.dirname(t);if(e===t)return;t=e}}function GT(e){let t=WT(e);return t===void 0?{root:v.resolve(e),git:!1}:{root:t,git:!0}}function KT(e,t){return e.kind===`absent`?L(`none`):e.kind===`failed`?e:t.kind===`failed`?t:L(t.kind===`ok`?`tracked`:`gone`)}function qT(e,t){return e.kind!==`ok`||e.value.state===`open`?e:t.kind===`failed`?z(`HEAD: ${t.reason}`):t.kind===`ok`&&t.value===e.value.head?e:{kind:`earlier`,value:e.value}}const JT={OPEN:`open`,MERGED:`merged`,CLOSED:`closed`},YT={opened:`open`,locked:`open`,merged:`merged`,closed:`closed`};function XT(e,t,n){return Object.hasOwn(t,n)?L(t[n]):z(`${e}: unknown state ${JSON.stringify(n)}`)}function ZT(e,t,n){return t.ok?L(t.stdout):t.reason===`non-zero`&&n===`absent`||t.reason===`non-zero`&&n===t.exitCode?R:z(QT(e,t))}function QT(e,t){return`${e}: ${[t.reason,t.exitCode==null?null:`exit ${t.exitCode}`,t.error??$T(t.stderr)].filter(Boolean).join(`, `)}`}function $T(e){return e.trim().split(`
|
|
70
|
+
`,1)[0]??``}function eE(e,t){if(e.kind!==`ok`)return e;let n=t(e.value);return n===null?R:L(n)}function tE(e){if(e.kind!==`ok`)return e;let t=e.value.trim();return t?L(t):R}const nE={github:`gh`,gitlab:`glab`};function rE(e){return!e.ok&&e.reason===`spawn-error`&&/ENOENT/i.test(e.error??``)}const iE=/^[A-Za-z]:[\\/]/;function aE(e){let t=e.trim();if(iE.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 oE(e){return aE(e)?.host||null}function sE(e){let t=oE(e);return t?t===`github.com`||t.endsWith(`.github.com`)?`github`:/(^|\.)gitlab\./.test(t)?`gitlab`:null:null}const cE=[`config`,`--local`,`--get-regexp`,`^remote\\..*\\.url$`];function lE(e){let t=ZT(`git config --get-regexp remote url`,e,1);return t.kind===`failed`?t:{kind:`ok`,value:t.kind===`ok`?uE(t.value):[]}}function uE(e){let t=new Map;for(let n of e.split(`
|
|
71
|
+
`)){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 dE(e){return e.urls.find(e=>gE(e)!==null)??e.urls[0]??null}function fE(e){return e.find(e=>e.name===`origin`)??e[0]??null}function pE(e){let t=fE(e);return t?dE(t):null}function mE(e){let t=fE(e);return t?t.urls.find(e=>sE(e)!==null)??dE(t):null}function hE(e){let t=(aE(e)?.path??e.replace(/[\\/]+$/,``)).split(`/`);return(t[t.length-1]??``).replace(/\.git$/,``)||null}function gE(e){let t=aE(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 _E(e){let t=pE(e);return t===null?null:gE(t)}function vE(e,t,n,r){return t.ok?r(t.stdout):rE(t)||t.reason===`non-zero`&&n.test(t.stderr)?R:z(`${e}: ${[t.reason,t.exitCode==null?null:`exit ${t.exitCode}`,t.error??$T(t.stderr)].filter(Boolean).join(`, `)}`)}function yE(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function bE(e){let t=`detached`,n=R,r=R,i=R,a=0,o=0,s=0,c=0;for(let l of e.split(`
|
|
72
|
+
`)){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)`?R:L(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=L(e.slice(16).trim());else if(e.startsWith(`branch.ab `)){let t=e.slice(10).trim().match(/^\+(\d+)\s+-(\d+)$/);t&&(i=L({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 xE(e){let t;try{t=JSON.parse(e)}catch(e){return z(`gh pr view: unparseable JSON (${e instanceof Error?e.message:String(e)})`)}if(!yE(t))return z(`gh pr view: JSON is not an object`);let{number:n,state:r,url:i,headRefOid:a}=t;if(typeof n!=`number`||typeof r!=`string`||typeof i!=`string`||typeof a!=`string`)return z(`gh pr view: missing number/state/url/headRefOid`);let o=XT(`gh pr view`,JT,r);return o.kind===`ok`?L({number:n,state:o.value,url:i,head:a}):o}function SE(e){let t;try{t=JSON.parse(e)}catch(e){return z(`glab mr view: unparseable JSON (${e instanceof Error?e.message:String(e)})`)}if(!yE(t))return z(`glab mr view: JSON is not an object`);let n=t.iid,r=t.state,i=t.web_url,a=t.sha;if(typeof n!=`number`||typeof r!=`string`||typeof i!=`string`||typeof a!=`string`)return z(`glab mr view: missing iid/state/web_url/sha`);let o=XT(`glab mr view`,YT,r);return o.kind===`ok`?L({number:n,state:o.value,url:i,head:a}):o}function CE(e){try{let t=s.statSync(e);return{key:`${t.dev}:${t.ino}`,stamp:`${t.mtimeMs}:${t.size}`}}catch{return null}}var wE=class{isGitRepo(e){return UT(e)}async execGitAsync(e,t){return Le({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)?L(e):t&&this.isGitRepo(t)?L(t):this.isGitRepo(e)?L(e):this.findGitRoot(e)}async findGitRoot(e){let t=WT(e);return t===void 0?R:L(t)}async getGitInfo(e,t={},n){try{return await this.computeGitInfo(e,t,n)}catch(e){return z(`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,head:a.value.oid};t.showWorkingTree&&(o.workingTree=a.value.workingTree),t.showSha&&(o.sha=eE(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.committedAt=await this.committedAt(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=eE(s,e=>this.repoNameFrom(e,r)),o.isWorktree=i),s!==void 0&&t.showRepoUrl&&(o.repoUrl=eE(s,_E)),t.showOperation&&(o.operation=this.getOngoingOperation(r)),L(o)}resolveGitDir(e){let t=v.join(e,`.git`);try{if(s.existsSync(t)&&s.statSync(t).isFile()){let n=s.readFileSync(t,`utf-8`).match(/^gitdir:\s*(.+)$/m);if(n?.[1])return v.resolve(e,n[1].trim())}}catch{}return t}getOngoingOperation(e){try{let t=this.resolveGitDir(e);return s.existsSync(v.join(t,`MERGE_HEAD`))?L(`MERGE`):s.existsSync(v.join(t,`CHERRY_PICK_HEAD`))?L(`CHERRY-PICK`):s.existsSync(v.join(t,`REVERT_HEAD`))?L(`REVERT`):s.existsSync(v.join(t,`BISECT_LOG`))?L(`BISECT`):s.existsSync(v.join(t,`rebase-merge`))||s.existsSync(v.join(t,`rebase-apply`))?L(`REBASE`):R}catch(e){return z(`git operation probe: ${e instanceof Error?e.message:String(e)}`)}}async getNearestTagAsync(e){return tE(ZT(`git describe --tags`,await this.execGitAsync([`describe`,`--tags`,`--abbrev=0`],{cwd:e,timeout:2e3}),`absent`))}async committedAt(e,t){return t.kind===`ok`?this.commitTimestampMs(e,t.value):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=tE(ZT(`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)?z(`git log -1: unparseable timestamp "${n.value}"`):L(r)}resolveCommonGitDir(e){let t=this.resolveGitDir(e);try{let e=s.readFileSync(v.join(t,`commondir`),`utf-8`).trim();if(e)return v.resolve(t,e)}catch{}return t}getStashCount(e){let t=v.join(this.resolveCommonGitDir(e),`logs`,`refs`,`stash`),n;try{n=s.readFileSync(t,`utf-8`)}catch(e){return e.code===`ENOENT`?L(0):z(`git stash reflog ${t}: ${e instanceof Error?e.message:String(e)}`)}let r=n.trim();return L(r?r.split(`
|
|
73
|
+
`).length:0)}async getRemotesAsync(e){let t=CE(v.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){return lE(await this.execGitAsync(cE,{cwd:e,timeout:2e3}))}repoNameFrom(e,t){let n=pE(e);return(n===null?null:hE(n))??v.basename(t)}async getRepoRemoteUrl(e){let t=await this.getRemotesAsync(e);if(t.kind!==`ok`)return t;let n=mE(t.value);return n===null?R:L(n)}async execForgeAsync(e,t,n){return Le({bin:e,args:[...t],cwd:n.cwd,env:{...process.env},timeoutMs:n.timeout,category:`forge`})}async resolvePullRequest(e,t){let n=sE(t);return n===`github`?vE(`gh pr view`,await this.execForgeAsync(nE.github,[`pr`,`view`,`--json`,`number,state,url,headRefOid`],{cwd:e,timeout:5e3}),/no (open )?pull requests? found/i,xE):n===`gitlab`?vE(`glab mr view`,await this.execForgeAsync(nE.gitlab,[`mr`,`view`,`--output`,`json`],{cwd:e,timeout:5e3}),/no (open )?merge requests? (found|available)/i,SE):R}isWorktree(e){try{let t=v.join(e,`.git`);return!!(s.existsSync(t)&&s.statSync(t).isFile())}catch{return!1}}async getCoreAsync(e){k(`[GIT-EXEC] Running git status --porcelain=v2 in ${e}`);let t=ZT(`git status --porcelain=v2 --branch`,await this.execGitAsync([`status`,`--porcelain=v2`,`--branch`],{cwd:e,timeout:2e3}),`failed`);return t.kind===`ok`?L(bE(t.value)):t}};const TE=(e,t)=>k(t);var EE=class{slots=new Map;maxWatchers;counters;logger;closed=!1;constructor(e={}){this.maxWatchers=e.maxWatchers??128,this.counters=e.counters,this.logger=e.logger??TE}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 r=s.watch(n,{persistent:!1},t);r.on(`error`,e=>{this.logger(`warn`,`watcher error ${n}: ${e.message}`)}),e.watchers.push(r)}catch(e){this.logger(`warn`,`watch failed ${n}: ${e.message}`)}for(let n of e.targets.dirs)try{let r=n.filenames?new Set(n.filenames):null,i=s.watch(n.path,{persistent:!1},(e,n)=>{r&&(!n||!r.has(n))||t()});i.on(`error`,e=>{this.logger(`warn`,`watcher error ${n.path}: ${e.message}`)}),e.watchers.push(i)}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()}},DE=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 OE={showSha:!0,showStashCount:!0};function kE(e){let t=Object.keys(e).sort(),n={};for(let r of t)n[r]=e[r];return JSON.stringify(n)}function AE(e){let t=t=>{try{return s.statSync(v.join(e,t)).mtimeMs}catch{return 0}};return{head:t(`HEAD`),index:t(`index`)}}function jE(e,t){return e.head!==t.head||e.index!==t.index}function ME(e){let t=[],n=v.join(e,`refs/heads`);try{s.statSync(n).isDirectory()&&t.push({path:n})}catch{}return{files:[v.join(e,`HEAD`),v.join(e,`index`)],dirs:t}}var NE=class extends wE{entries=new Map;subscribersByRepo=new Map;fetchInFlight=new Map;resolutions=new Map;prCache=new Map;prFetchInFlight=new Map;refreshes=new DE;hits=0;misses=0;invalidations=0;inner;ttlMs;maxEntries;watchers;ownsWatchers;logger;sanityTimer=null;constructor(e={}){super(),this.inner=e.inner??new wE,this.ttlMs=e.ttlMs??3e4,this.maxEntries=e.maxEntries??64,this.logger=e.logger??qt,e.watchers?(this.watchers=e.watchers,this.ownsWatchers=!1):(this.watchers=new EE({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}|${kE(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(L(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=AE(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}`,ME(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 R;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}`,ME(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,{...OE});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,{...OE}),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=AE(this.inner.resolveGitDir(t.repoRoot)),e.set(t.repoRoot,n)),jE(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 PE=/\r\n|\r|\n/g,FE=e=>L(e.replace(PE,` `).trim());function IE(e){return t=>{let n=e.exec(t)?.[1];return n===void 0?z(`regex no-match`):L(n.replace(PE,` `))}}const LE=e=>{try{return L(JSON.parse(e))}catch(e){return z(`JSON parse failed: ${e.message}`)}},RE=e=>e.getTime()/1e3,zE=e=>new Date(e*1e3);function BE(e,t){return t.kind!==`ttl`||t.durationMs>=500?t:(k(`declareShell "${e}": ttl ${t.durationMs}ms below floor 500ms; clamping`),{kind:`ttl`,durationMs:500})}function VE(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 HE=`session.id`;function UE(e,t,n){return{where:`output of "${e}" in ${t}`,read:async()=>{let r=await Le({bin:`/bin/sh`,args:[`-c`,e],cwd:t,category:`user-shell`,signal:n});if(!r.ok&&r.reason===`aborted`)throw n.reason;return r.ok?L(r.stdout):z(`shell "${e}" ${r.exitCode===null?[r.reason,r.error].filter(e=>e!==void 0).join(`: `):`exited with code ${r.exitCode}`} in ${t}`)}}}function WE(e,t,n){return{where:`"${e}"`,read:async()=>{try{let r=await ae(e,{encoding:`utf8`,signal:n});return L(t===`first-line`?r.split(/\r?\n/)[0]??``:r)}catch{if(n.aborted)throw n.reason;return z(`file unreadable: ${e}`)}}}}function GE(e,t,n){if(e.kind!==`ok`)return e;let r=t(e.value);return r.kind===`failed`?z(`${r.reason} in ${n}`):r}const KE=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],qE=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],JE=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],YE=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`];function XE(e,t){let n=[[`2006`,e=>String(e.getFullYear())],[`January`,e=>KE[e.getMonth()]],[`Monday`,e=>JE[e.getDay()]],[`Jan`,e=>qE[e.getMonth()]],[`Mon`,e=>YE[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 ZE={branch:`string`,sha:`string`,dirty:`boolean`,ahead:`number`,behind:`number`,stash:`number`};function QE(e,t,n,r){if(e===null){if(n!==void 0)return n;let e=ZE[t];try{return oD(r,e)}catch{return sD(e)}}switch(t){case`branch`:return e.branch===`detached`?``:e.branch;case`sha`:return Ci(e.sha,``);case`dirty`:return e.status!==`clean`;case`ahead`:return Ci(e.aheadBehind,{ahead:0,behind:0}).ahead;case`behind`:return Ci(e.aheadBehind,{ahead:0,behind:0}).behind;case`stash`:return Ci(e.stashCount,0)}}function $E(e){try{return h(e)}catch{return e}}function eD(e){try{return g(e).isDirectory()}catch{return!1}}function tD(e){let t=$E(e);return eD(t)?{dir:t,name:null,leaf:!0}:Rv(t)}const nD=e=>`${e.dir}\0${e.name??``}`;var rD=class{watchers=new Map;subscribe(e,t,n){let r=this.watchers.get(e)??this.arm(e);return r.subscribers.set(t,n),r.watcher===null&&n(r.failure),()=>this.unsubscribe(e,t)}arm(e){let t={watcher:null,failure:``,target:tD(e),subscribers:new Map};return t.watcher=this.open(e,t,t.target),this.watchers.set(e,t),t}rearm(e,t){let n=tD(e);if(t.watcher!==null&&nD(n)===nD(t.target))return;let r=this.open(e,t,n);r!==null&&(t.watcher?.close(),t.watcher=r,t.target=n)}open(e,t,n){let{dir:r,name:i}=n,a=v.basename(r);try{return _(r,(n,r)=>{if(!(r===null||i===null||r===i)&&r!==a)return;let o=t.target.leaf;if(this.rearm(e,t),!(!o&&!t.target.leaf))for(let e of t.subscribers.keys())e()})}catch(n){let i=`watch_file ${e}: cannot watch ${r} — ${n instanceof Error?n.message:String(n)}`;t.failure=i;for(let e of t.subscribers.values())e(i);return null}}unsubscribe(e,t){let n=this.watchers.get(e);n&&(n.subscribers.delete(t),n.subscribers.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}},iD=class{buckets=new Map;subscribe(e,t){let n=this.buckets.get(e);if(!n){let t=new Set;n={timer:pe(()=>{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&&(de(n.timer),this.buckets.delete(e)))}dispose(){for(let{timer:e}of this.buckets.values())de(e);this.buckets.clear()}bucketCount(){return this.buckets.size}};function aD(e,t){let n=e;for(let e of t.split(`.`)){if(typeof n!=`object`||!n)return;n=n[e]}return n}function oD(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`?Gv(e):t===`number`?Kv(e):qv(e)}function sD(e){return e===`number`?0:e===`boolean`?!1:``}var cD=class{inputMetas=new Map;lastErrors=new Map;policyFaults=new Map;watchMgr=new rD;ttlMgr=new iD;gitSubscriptions=new Map;cleanups=[];inFlight=new Map;reads=new DE;abort=new AbortController;drawn=Hv.observable.box(V.TRUECOLOR);drawnAt=()=>this.drawn.get();instant=Hv.observable.box(null);now=()=>{let e=this.instant.get();if(e===null)throw Error(`the time was read before any render published its instant`);return zE(e)};engine=RT({clock:this.now,drawnAt: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 NE({sanityIntervalMs:0}),this.ownsGitProvider=!0),this.sessionState=r}get variableStore(){return this.store}declareLiteral(e,t){this.store.defineBox(e,Wv(t),t)}declareFailedDocument(e,t){this.store.defineDocument(e,z(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,UE(t,n.cwd,this.abort.signal),BE(e,n.cache),n.parse)}declareFile(e,t,n){this.declareSource(e,WE(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,FE,t.default,n);case`regex`:return this.scalarPublisher(e,IE(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=GE(n,t,r);this.noteOutcome(e,a),this.store.setBox(e,Ci(a,i))}}documentPublisher(e,t,n){let r=t===void 0?R:L(t);this.store.defineDocument(e,r);let i,a=!1;return this.cleanups.push(()=>clearTimeout(i)),o=>{clearTimeout(i);let s=o.kind===`ok`&&o.value.trim()===``?R:o,c=GE(s,LE,n);this.noteOutcome(e,c);let l=c.kind===`ok`||s.kind===`ok`||t===void 0?c:r,u=a&&s.kind===`ok`&&c.kind!==`ok`,d=()=>{a=c.kind===`ok`,this.store.setDocument(e,l)};u?i=setTimeout(d,250):d()}}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.declareDerived(e,()=>r.evaluate(zT(this.store)).map(e=>e.plain).join(``),n.varDefault)}declareTime(e,t){this.declareDerived(e,()=>XE(t.format,this.now()),t.varDefault)}declareDerived(e,t,n){this.store.defineComputed(e,`string`,()=>{try{let n=t();return this.lastErrors.delete(e),n}catch(t){let r=t instanceof Error?t.message:String(t);if(this.recordError(e,r),n===void 0)throw Yv(t)?new Jv(e,`variable "${e}": ${r}`):Error(`variable "${e}": ${r}`);return n}})}declareGit(e,t){let n=ZE[t.field],r=t.varDefault===void 0?sD(n):oD(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,QE(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(HE);if(typeof i!=`string`||!i)return r;let a=n.get(i,t.key);return a===null?r:a})}stateRevision(){let e=this.store.has(`session.id`)?this.store.read(HE):``;return this.sessionState!==void 0&&typeof e==`string`&&e!==``?this.sessionState.revision(e):0}applyInput(e){this.store.runInAction(()=>{for(let[t,n]of this.inputMetas){let r=aD(e,n.path),i=this.store.getType(t);if(r!==void 0)try{this.store.setBox(t,oD(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))}renderAt(e){this.store.runInAction(()=>this.instant.set(e))}getLastError(e){let t=this.lastErrors.get(e),n=this.policyFaults.get(e);return n===void 0?t:t===void 0?n:{timestamp:t.timestamp,message:`${n.message}; ${t.message}`}}cachePolicyFaults(){return this.policyFaults}dispose(){this.abort.abort();for(let e of this.cleanups)e();this.cleanups.length=0;for(let e of this.gitSubscriptions.values())e.unsubscribe();return this.gitSubscriptions.clear(),this.reads.clear(),this.watchMgr.dispose(),this.ttlMgr.dispose(),this.ownsGitProvider&&this.gitProvider.close(),this.store.dispose()}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 r=this.watchMgr.subscribe(t.path,n,t=>this.notePolicy(e,z(t)));this.cleanups.push(r);break}case`key`:{let r=this.engine.parse(t.template),i=()=>{try{return L(r.evaluate(zT(this.store)).map(e=>e.plain).join(``))}catch(e){return Yv(e)?R:z(`cache key: ${e instanceof Error?e.message:String(e)}`)}},a=i();this.notePolicy(e,a);let o=a.kind===`ok`?a.value:void 0,s=(0,Hv.reaction)(i,t=>{this.notePolicy(e,t),!(t.kind!==`ok`||t.value===o)&&(o=t.value,n())});this.cleanups.push(s);break}case`depends_on`:{let e=(0,Hv.reaction)(()=>t.varNames.map(e=>this.store.changeKey(e)).join(`,`),n);this.cleanups.push(e);break}}}applyFallback(e,t,n,r){if(this.recordError(e,r),n!==void 0){this.store.setBox(e,n);return}try{this.store.setBox(e,oD(this.defaultEmptyValue,t))}catch{this.store.setBox(e,sD(t))}}defaultFor(e){try{return oD(this.defaultEmptyValue,e)}catch{return sD(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})}notePolicy(e,t){t.kind===`failed`?this.policyFaults.set(e,{timestamp:Date.now(),message:t.reason}):this.policyFaults.delete(e)}noteOutcome(e,t){t.kind===`ok`?this.lastErrors.delete(e):this.recordError(e,t.kind===`failed`?t.reason:`no value`)}};const lD={project_dir:{kind:`input`,path:`workspace.project_dir`,default:``},[HE]:{kind:`input`,path:`session_id`,default:``},transcript_path:{kind:`input`,path:`transcript_path`,default:``},resume_command:{kind:`input`,path:`resumeCommand`,default:``},config_path:{kind:`input`,path:`configPath`,default:``},"theme.effective":{kind:`input`,path:`theme.effective`,default:``},"style.effective":{kind:`input`,path:`style.effective`,default:``},"effect.effective":{kind:`input`,path:`effect.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},"endcaps.effective":{kind:`input`,path:`endcaps.effective`,default:``},"variation.effective":{kind:`input`,path:`variation.effective`,default:``},"shade.effective":{kind:`input`,path:`shade.effective`,default:``},"colorCompatibility.effective":{kind:`input`,path:`colorCompatibility.effective`,default:``},"transitions.effective":{kind:`input`,path:`transitions.effective`,type:`boolean`,default:!1},"autoWrap.effective":{kind:`input`,path:`autoWrap.effective`,type:`boolean`,default:!0},"padding.effective":{kind:`input`,path:`padding.effective`,type:`number`,default:1},"updateNotice.effective":{kind:`input`,path:`updateNotice.effective`,type:`boolean`,default:!0},...Object.fromEntries(Qa.map(e=>[to(e),{kind:`input`,path:to(e),type:`boolean`,default:!1}])),"term.cols":{kind:`input`,path:`term.cols`,type:`number`,default:80},"tmux.pane":{kind:`input`,path:`tmux.pane`,default:``},"autocompact.window":{kind:`input`,path:`autocompact.window`,type:`number`,default:-1},...Object.fromEntries([`applied`,`lower`,`higher`].map(e=>[`autocompact.${e}`,{kind:`input`,path:`autocompact.${e}`,type:`number`,default:0}])),"autocompact.error":{kind:`input`,path:`autocompact.error`,default:``},"git.repoUrl":{kind:`input`,path:`git.repoUrl`,default:``}},uD=`ne .tmux.pane ""`;function dD(e,t,n){let r=new Set,i=e=>{for(let t of Ov(e??``,n).keys())r.add(t)};for(let t of Object.values(e.segments))i(t.template),i(t.bg),i(t.fg),i(t.when);for(let e of t)for(let t of v_(e))i(t.when),t.kind===`segment`&&(i(t.lead),i(t.trail));for(let t of Object.values(e.variables))t.kind===`template`&&i(t.template),t.kind===`state`&&r.add(HE);for(let t of Object.values(e.actions)){r.add(HE),`copy`in t&&i(t.copy),`open`in t&&i(t.open);let e=`set`in t?lo.get(t.set):void 0,n=`persist`in t?co.get(t.persist):void 0;e!==void 0&&r.add(e),n!==void 0&&r.add(n)}return r}function fD(e,t,n){let r=Iv({...n,variables:{...n.variables,...e.variables},segments:{...n.segments,...e.segments}}),i={};for(let a of dD(e,t,n.helpers)){if(Fv(a,r))continue;let e=lD[a];if(e===void 0)throw Error(`synthesized chrome reads ".${a}", which it does not declare and PAYLOAD_INPUTS does not supply`);i[a]=e}return i}function pD(e){return e.replace(/[^A-Za-z0-9]+/g,`_`)}var mD=class extends Error{file;issues;warnings;constructor(e,t,n=[]){super(vD(e,t)),this.name=`ConfigError`,this.file=e,this.issues=t,this.warnings=n}};function Y(e,t){let n=0,r;for(let i of t){if(i===``||/^\d+$/.test(i))continue;let t=hD(e,n,i);if(t===-1)return r===void 0?void 0:gD(e,r);n=t,r=t}return r===void 0?void 0:gD(e,r)}function hD(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 gD(e,t){let n=1;for(let r=0;r<t&&r<e.length;r++)e.charCodeAt(r)===10&&n++;return n}function _D(e,t){try{return Br(t),null}catch(n){if(!(n instanceof Pr))throw n;return`${e}:${gD(t,n.offset)}: ${n.reason} — the settings menu cannot edit this file until it is fixed`}}function vD(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(`
|
|
74
|
+
`)}const yD=`groups.`,bD=`menus.`,xD=`edit.`,X=`candybar.`,SD=[yD,bD,xD,X];function CD(e){return SD.some(t=>e.startsWith(t))}function wD(e){let t=pD(e);return SD.find(e=>t.startsWith(pD(e)))}function TD(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:Y(e.source,[`root`])})}function ED(e){return e}function DD(e,t,n){return n===void 0?bD+pD(e)+`.`+pD(t):OD(n)}function OD(e){return bD+pD(e)}function kD(e,t){return e+`.`+t}function AD(e){return e+`.page`}const jD=[`closeOnPick`,`paged`,`key`,`distribution`],MD=e=>jD.includes(e),ND=`"closeOnPick" (bool, default false), "paged" (bool, default true), "key" (string, accordion grouping), "distribution" (one of ${hm.map(e=>`"${e}"`).join(`, `)}; default "van-der-corput")`;function PD(e){for(let t of Object.keys(e))if(!MD(t))throw Error(`unknown {{ menu }} option "${t}" — the options dict takes ${ND}`);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&&!gm(r))throw Error(`{{ menu }} option "distribution" must be one of: ${hm.join(`, `)}; got ${JSON.stringify(r)}`);return{closeOnPick:t(`closeOnPick`,!1),paged:t(`paged`,!0),key:n,distribution:vm(r)}}const FD=e=>`from`in e?e.from:e.themes;function ID(e,t,n){return e===`bool`?eg(t)!==null:`min`in e?tg(t,e)!==null:pv(FD(e),n).members.includes(t)}function LD(e,t){if(e===`bool`)return Qh.join(` or `);if(!(`min`in e)){let n=FD(e),{members:r}=pv(n,t),i=r.map(e=>JSON.stringify(e));if(r.length<=8)return`one of ${i.join(`, `)}`;let a=typeof n==`string`?` "${n}"`:``;return`one of the ${r.length}${a} names, such as ${i.slice(0,3).join(`, `)}`}return`an integer from ${e.min} to ${e.max}`}function RD(e){return{label:e.label,domain:zD(e.domain)}}function zD(e){return e===`theme`?{themes:uv}:e===`bool`||`min`in e?e:{from:e}}function BD(e,t,n,r,i){let a=_r(e.label),{domain:o}=e;if(o===`bool`)return{kind:`inline`,template:`{{ action "${r}" "☑ ${a}" "☐ ${a}" }}`,actions:{[r]:{set:t,cycle:[...Qh]}},variables:{}};if(`from`in o)return VD(t,r,i,o.from,e=>({template:`{{ "${a}" }} {{ carousel "${e.apply}" 0 "${e.open}" }}`,rows:[`{{ picker "${e.apply}" "${e.page}" false true true }}`]}));if(`themes`in o)return VD(t,r,i,o.themes,e=>({template:`{{ action "${e.open}" "${a}" .${n} }} {{ action "${e.open}" (swatch "${e.apply}") }}`,rows:[`{{ swatches "${e.apply}" "${e.page}" }}`,`{{ themePreview "${e.apply}" }}`]}));let s=e=>({set:t,min:o.min,max:o.max,by:e});return{kind:`inline`,template:`{{ action "${r}.down" "◀" }} {{ "${a}" }} {{ .${n} }} {{ action "${r}.up" "▶" }}`,actions:{[`${r}.down`]:s(-o.step),[`${r}.up`]:s(o.step)},variables:{}}}function VD(e,t,n,r,i){let a={variable:n,key:n,member:t},o=kD(n,t),s=`${t}.open`,c=AD(n),l=`${c}.current`,{template:u,rows:d}=i({apply:t,open:s,page:c});return{kind:`picker`,template:u,actions:{[t]:{set:e,from:r},[o]:Tr(n,t),[c]:{set:c,int:!0},[l]:{set:c,to:`-1`},[s]:{do:[o,l]}},variables:{[n]:wr(n,pr),[c]:{kind:`state`,key:c,default:`0`}},list:{ref:a,rows:d}}}function HD(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 ${JD(i)}`,line:Y(e.source,[...t.split(`.`),r])}),null)}function UD(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 ${JD(i)}`,line:Y(e.source,[...t.split(`.`),`default`])});return}return i}}function WD(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 ${JD(i)}`,line:Y(e.source,[...t.split(`.`),r])});return}return i}}function GD(e,t,n){let r=WD(e,t,n,`palette`);if(r!==void 0){if(!e.allowedPalettes.has(r)){e.issues.push({path:`${t}.palette`,message:`Unknown palette "${r}"${ph(r)}. Expected one of: ${[...e.allowedPalettes].sort().join(`, `)}`,line:Y(e.source,[...t.split(`.`),`palette`])});return}return r}}function KD(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 ${Z(a)}`,line:Y(e.source,[...t.split(`.`),r])});return}return a}}function qD(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function JD(e){return e===null?`null`:Array.isArray(e)?`array`:typeof e}function Z(e){return typeof e==`string`?JSON.stringify(e):e===void 0?`undefined`:String(e)}function YD(e,t,n,r){return qD(r)?($D(e,n,r,t.noun,new Set(Object.keys(t.fields)),XD(e,t.removed??{},n,r)),ZD(e,t.fields,n,r)):(e.issues.push({path:n,message:`${n} must be an object, got ${JD(r)}`,line:Y(e.source,n.split(`.`))}),null)}function XD(e,t,n,r){let i=Object.entries(t).filter(([e])=>r[e]!==void 0);for(let[t,r]of i)eO(e,`${n}.${t}`,`${n}.${t} was removed: ${r}`);return new Set(i.map(([e])=>`${n}.${e}`))}function ZD(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 QD=new Set;function $D(e,t,n,r,i,a=QD){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:Y(e.source,[...t.split(`.`),o])})}function eO(e,t,n){return e.issues.push({path:t,message:n,line:Y(e.source,t.split(`.`))}),null}function tO(e,t,n,r){if(!qD(r))return e.issues.push({path:n,message:`${t.noun} must be an object, got ${JD(r)}`,line:Y(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:Y(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:Y(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:Y(e.source,n.split(`.`))}),null;let c=o[0];return i[c].parse(e,`${n}.${c}`,r[c])}function nO(e,t,n,r){if(!qD(r))return e.issues.push({path:n,message:`${n} must be an object, got ${JD(r)}`,line:Y(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 ${JD(i)}`,line:Y(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:Y(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 $D(e,n,r,`${i} ${t.memberNoun} key`,o.keys,l),c}function rO(e,t,n){return{json:_O(hO(n),e,t),keys:new Set([e,...Object.keys(n)])}}function iO(e){return(...t)=>e()(...t)}function aO(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:Y(n.source,o.split(`.`))}),null}return a}}function oO(){return{required:!1,json:{type:`string`},parse:(e,t,n,r)=>WD(e,t,r,n)}}function sO(){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 ${JD(i)}`,line:Y(e.source,[n])});return}return i}}}}function cO(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 ${Z(o)}`,line:Y(e.source,[i])});return}return o}}}}function lO(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 ${Z(a)}`,line:Y(e.source,[r])});return}return a}}}}function uO(){return{required:!1,json:{type:`string`},parse:(e,t,n,r)=>GD(e,t,r)}}function dO(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>HD(e,t,r,n)??void 0}}function fO(e,t){return x(t)?null:`${e} must be an absolute path (\`~\` and relative paths are not expanded), got ${JSON.stringify(t)}`}function pO(){return{required:!0,json:{type:`string`,pattern:`^/`},parse:(e,t,n,r)=>{let i=HD(e,t,r,n);if(i===null)return;let a=fO(`${t}.${n}`,i);return a===null?i:eO(e,`${t}.${n}`,a)??void 0}}}function mO(e){return{required:!1,json:{enum:[...e]},parse:(t,n,r,i)=>KD(t,n,i,r,e)}}function hO(e,t={closed:!0}){let n=e,r={},i=[];for(let[e,t]of Object.entries(n))r[e]=t.json,t.required&&i.push(e);return{type:`object`,properties:r,...i.length>0&&{required:i},...t.closed&&{additionalProperties:!1}}}function gO(e){return hO(e.fields)}function _O(e,t,n){let r=e,i={[t]:{const:n},...r.properties},a=[t,...r.required??[]];return{...r,properties:i,required:a}}function vO(e){let t=e.arms;return{anyOf:Object.values(t).map(e=>e.json)}}function yO(e){let t=e.arms;return{anyOf:Object.entries(t).map(([e,t])=>({type:`object`,properties:{[e]:t.json},required:[e],additionalProperties:!1}))}}const bO={required:!1,json:{enum:[...Hh]},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: ${Hh.join(`, `)}`,line:Y(e.source,[...t.split(`.`),n])});return}return KD(e,t,r,n,Hh)}},xO={required:!1,json:{type:`string`},parse:(e,t,n,r)=>{let i=WD(e,t,r,n);return Sh(i)?i:GD(e,t,r)}},SO={required:!1,json:{anyOf:[{enum:[...Mh]},{type:`string`,pattern:`\\{\\{`}]},parse:(e,t,n,r)=>{let i=r[n];return typeof i==`string`&&Sh(i)?i:KD(e,t,r,n,Mh)}},CO=/^[^\r\n]*\S[^\r\n]*$/u,wO=RegExp(`^(?:✖|✕)[\\uFE0E\\uFE0F]?$`,`u`),TO={required:!1,json:{type:`string`,pattern:CO.source,not:{pattern:wO.source}},parse:(e,t,n,r)=>{let i=WD(e,t,r,n);if(i===void 0||CO.test(i)&&!wO.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:Y(e.source,[...t.split(`.`),n])})}};function EO(e){return{spec:mO(e),domain:{from:e}}}function DO(){return{spec:sO(),domain:`bool`}}function OO(e){return{spec:e,domain:`text`}}const kO={default_empty_value:OO(oO()),default_separator:OO(oO()),palette:{spec:xO,domain:{themes:`themes`}},style:{spec:oO(),domain:{from:`styles`}},effect:{spec:SO,domain:{from:Mh}},preset:{spec:oO(),domain:{from:`presets`}},endcaps:EO(Lh),variation:EO(Wh),shade:EO(qh),autoWrap:DO(),padding:{spec:cO($h),domain:{...$h,step:1}},updateNotice:DO(),transitions:DO(),experimentalBand:DO(),experimentalStatusline:DO(),experimentalPane:DO(),colorCompatibility:{spec:bO,domain:{from:Hh}},menuGlyph:OO(TO)},AO=Object.fromEntries(Object.entries(kO).map(([e,t])=>[e,t.spec]));function jO(e){return kO[e].domain}function MO(e){let t=jO(e);if(t===`text`)throw Error(`globals.${e} is free text, which no control can change — list it in UNCONTROLLED_GLOBALS instead of SETTINGS`);return t}function NO(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:Y(e.source,[...n.split(`.`),r])})}}}function PO(e){return NO(`${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 FO(e){return NO(`${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.`)}function IO(e,t,n){return{...e,json:{...e.json,not:{pattern:`\\{\\{`}},parse:(r,i,a,o)=>{let s=o[a];if(typeof s==`string`&&Sh(s)){r.issues.push({path:`${i}.${a}`,message:`${i}.${a}: a rule is not allowed here — ${t} ${n}, so it names a value. Write the rule in globals.${a} (or a preset's globals.${a}) instead.`,line:Y(r.source,[...i.split(`.`),a])});return}return e.parse(r,i,a,o)}}}const LO={default_bg:"nothing reads it — a segment with no `bg:` wears the decoration tint of its place in the bar. Delete the key, and author `bg:` on the segments that need a fixed colour.",default_fg:"nothing reads it — a segment with no `fg:` wears text chosen for contrast against its background. Delete the key, and author `fg:` on the segments that need a fixed colour.",default_truncate_marker:'nothing reads it — a segment clipped to its `width:` always ends in "…". Delete the key.',look:`it was renamed "style" — write the same name as style: "<name>"`,progression:`it was renamed "variation", and its values with it: accent (was secondary-accent), duo (was primary-secondary), mono (was primary)`,charset:"the bar always draws Nerd Font glyphs. Delete the key; `cc-candybar doctor` names what your terminal's font is missing."},RO={noun:`globals key`,fields:AO,removed:LO},zO={preset:PO(`a preset`),menuGlyph:FO(`a preset`)},BO={noun:`preset globals key`,fields:{...AO,...zO},removed:LO};function VO(e){return ZO(e)&&!(e in zO)}const HO=`is decided later than any rule could be settled`,UO={noun:`editGlobals key`,removed:LO,fields:{...AO,preset:PO(`the editGlobals fragment`),menuGlyph:FO(`the editGlobals fragment`),palette:IO(AO.palette,`the editGlobals fragment`,HO),style:IO(AO.style,`the editGlobals fragment`,HO),effect:IO(AO.effect,`the editGlobals fragment`,HO)}},WO={noun:`theme default key`,fields:{...Object.fromEntries(C_.map(e=>[e,AO[e]])),style:IO(AO.style,`a theme's default`,`is the look that theme wears by name`)}};function GO(e,t){if(!qD(t))return e.issues.push({path:`themeDefaults`,message:`themeDefaults must be an object mapping theme names to { shade, variation, style }, got ${JD(t)}`,line:Y(e.source,[`themeDefaults`])}),{};let n={};for(let[r,i]of Object.entries(t)){let t=`themeDefaults.${r}`;if(!e.allowedPalettes.has(r)){e.issues.push({path:t,message:`${t}: "${r}" is not an installed theme${ph(r)}. Expected one of: ${[...e.allowedPalettes].sort().join(`, `)}`,line:Y(e.source,[`themeDefaults`,r])});continue}let a=YD(e,WO,t,i);a!==null&&(n[r]=a)}return n}function KO(e,t,n){return n===void 0?{}:YD(e,RO,t,n)??{}}function qO(e,t,n){return YD(e,BO,t,n)??{}}function JO(){return gO(BO)}function YO(e,t,n){return YD(e,UO,t,n)??{}}const XO=new Set(Object.keys(AO));function ZO(e){return XO.has(e)}function QO(e){return Object.hasOwn(LO,e)?LO[e]:void 0}function $O(){return[...XO]}const ek={padding:1};function tk(e){let t=new Map;for(let[n,r]of Object.entries(ek)){let i=e[n];t.set(n,typeof i==`number`?i:r)}return t}const nk=/^segments\.([^.]+)\.palette$/,rk=/^presets\.(.+)\.root$/,ik=/^presets\.(.+)\.globals\.([^.]+)$/,ak=/^themeDefaults\.(.+)\.([^.]+)$/;function ok(e){return`presets.${e}.root`}function sk(e,t){return`themeDefaults.${e}.${t}`}const ck=e=>C_.includes(e);function lk(e,t){return`presets.${e}.globals.${t}`}function uk(e){if(ZO(e))return{scope:`globals`,field:e};let t=nk.exec(e);if(t)return{scope:`segment-palette`,segment:t[1]};let n=ik.exec(e);if(n&&VO(n[2]))return{scope:`preset-globals`,preset:n[1],field:n[2]};let r=ak.exec(e);if(r&&ck(r[2]))return{scope:`theme-default`,theme:r[1],field:r[2]};let i=rk.exec(e);return i?{scope:`preset-root`,preset:i[1]}:null}function dk(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`];case`theme-default`:return[`themeDefaults`,e.theme,e.field]}}const fk=[`location`,`git`,`model-context`,`cost-limits`,`activity`,`session-tools`],pk=[...fk,`other`],mk={location:`location`,git:`git`,"model-context":`model & context`,"cost-limits":`cost & limits`,activity:`activity`,"session-tools":`session tools`,other:`other`},hk=Hb({fromString:e=>e}),gk=`edit.mode`,_k=`edit.configure`,vk=`edit.toggle`,yk=`edit.unconfigure`,bk=[vk,yk],xk=`arrange`,Sk=`${xD}draft.`;function Ck(e,t){return`${e}:${t}`}const wk={variable:gk,key:gk,member:xk},Tk=yr(wk);function Ek(e){try{return hk.parse(e).referencedCalls().some(e=>e.name===`action`&&e.args[0]===`edit.toggle`)}catch{return!1}}function Dk(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`&&Ek(e))return!0;return!1}function Ok(e,t){if(TD(e,t,xD,`edit mode`),!Dk(t))return;let{variables:n,actions:r}=kk();t.variables={...t.variables??{},...n},t.actions={...t.actions??{},...r}}function kk(){return{variables:{[gk]:wr(gk,pr),[_k]:wr(_k,pr)},actions:{[vk]:Tr(gk,xk),[yk]:{set:_k,to:pr}}}}const Ak=`open`;function jk(e,t,n,r){let i={variable:e,key:e,member:Ak};return r.variables[e]=wr(e,pr),r.actions[e]=Tr(e,Ak),r.segments[e]={template:xr(e,`(?)`,`✕`),...Mk(n)},vr(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 Mk(e){let[t,...n]=e;return t===void 0?{}:{when:yr(t,...n)}}const Nk=`none`;function Pk(e){return sc(e,`background`)}var Fk=class extends Error{constructor(e,t,n){super(`Invalid ${t} color ${JSON.stringify(e)}: ${n}`),this.name=`ColorSpecError`}};function Ik(e,t,n,r,i){let{palette:a,tint:o,text:s}=e,c=Lk(n,i),l=c!==Nk,u=l?c===void 0?o:Rk(a,c,`bg`):Pk(a);e.bg=u;let d=Lk(r,i),f=d===void 0?l?(e=>e.hex===o.hex?s:Bm(a,e,t))(u):void 0:Rk(a,d,`fg`);return new U({...l&&{bgcolor:H.fromRgba(u)},...f!==void 0&&{color:H.fromRgba(f)}})}function Lk(e,t){if(e!==void 0)return e.evaluate(t).map(e=>e.plain).join(``)}function Rk(e,t,n){try{return sc(e,t)}catch(e){throw e instanceof oc?new Fk(t,n,e.message):e}}const zk=`🔧`,Bk={help:[`-h`,`--help`],version:[`-V`,`--version`]},Vk=[`✚ inserts`,`✖ removes`,`${zk} configures`,`↺ resets layout`],Hk=`
|
|
75
75
|
cc-candybar - Beautiful powerline statusline for Claude Code
|
|
76
76
|
|
|
77
77
|
Usage: cc-candybar [options]
|
|
78
78
|
|
|
79
79
|
Standalone Commands:
|
|
80
|
-
${
|
|
81
|
-
${
|
|
80
|
+
${Bk.help.join(`, `).padEnd(25)}Show this help
|
|
81
|
+
${Bk.version.join(`, `).padEnd(25)}Print the version of this runtime (cc-candybar <version>)
|
|
82
82
|
|
|
83
83
|
Debugging:
|
|
84
84
|
CC_CANDYBAR_DEBUG=1 Enable debug logging for troubleshooting
|
|
@@ -101,7 +101,7 @@ Configuration:
|
|
|
101
101
|
failed row's [fix] to repair it (the same checks \`cc-candybar doctor\` runs).
|
|
102
102
|
|
|
103
103
|
Anywhere the bar shows (?), clicking it reveals these same instructions
|
|
104
|
-
in place. In edit mode: ${
|
|
104
|
+
in place. In edit mode: ${Vk.join(`, `)}.
|
|
105
105
|
|
|
106
106
|
Subcommands:
|
|
107
107
|
install One-shot setup: stages the runtime (native render
|
|
@@ -165,15 +165,15 @@ Config tooling:
|
|
|
165
165
|
config [--json] The effective merged config. (All three query the
|
|
166
166
|
running daemon; none spawn one.)
|
|
167
167
|
|
|
168
|
-
`,
|
|
169
|
-
`).map(e=>e.trim()).filter(e=>e!==``),...e.warnings];return{ok:!1,reason:t,more:n}}case`loaded`:return CA([...e.warnings,...e.unused.map(({kind:e,name:t})=>`${e} "${t}" ${kA[e]}`)])}}},jA="re-run `cc-candybar install`";function MA(e){if(e.kind===`failed`)return[`Launch Services could not be asked which app opens cc-candybar:// — ${e.reason}`];if(e.value===null)return[`no app is registered for cc-candybar:// — ${jA}`];let{app:t,missing:n}=e.value;return n.kind===`failed`?[`${t} opens cc-candybar://, but ${n.reason} — ${jA}`]:n.value.map(e=>`${e} is missing, and ${t} runs it — ${jA}`)}const NA={name:`urlHandler`,label:`URL handler`,takesMark:!1,probe:({urlHandler:e})=>{switch(e.kind){case`unsupported`:return{ok:!0};case`unprobed`:return{ok:!1,reason:e.reason};case`arrived`:return e.handler===e.bar?{ok:!0}:{ok:!1,reason:e.handler===null?`the URL handler does not report its version, so it is older than the bar (${e.bar}) — ${jA}`:`the URL handler runs cc-candybar ${e.handler}; the bar runs ${e.bar} — ${jA}`};case`lost`:return CA([...MA(e.opener),e.unopened===null?`a cc-candybar:// link was opened and did not arrive at the daemon`:`a cc-candybar:// link could not be opened — ${e.unopened}`])}}};function PA({bundle:e,checkout:t},n){return{bundle:n.bundle.kind===`failed`?{kind:`unresolved`,reason:n.bundle.reason}:n.bundle.value===e?{kind:`same`}:{kind:`other`,path:n.bundle.value},source:n.client!==`native`||t===null?{kind:`uncompared`}:t.rustSource.kind===`failed`?{kind:`unreadable`,root:t.root,reason:t.rustSource.reason}:n.source===null?{kind:`unstamped`}:n.source===t.rustSource.value?{kind:`same`}:{kind:`other`,root:t.root}}}function FA(e,t){return t===`frames`?`run \`node ${e.bundle} frames --lane <band|statusline|pane>\``:e.checkout===null?jA:`run \`just install-rust\` and point the statusLine command at ${e.checkout.root}/bin/cc-candybar-native`}function IA(e,t,n){let{checkout:r}=e;if(n.kind===`unreported`)return[`the bar is drawn by a statusline client too old to say what it is — ${FA(e,`native`)}`];let{bundle:i,source:a}=PA(e,n);switch(i.kind){case`unresolved`:return[`the statusline client's bundle cannot be resolved: ${i.reason}`];case`other`:return[`the statusline client runs ${i.path}, not the daemon's ${e.bundle} — ${FA(e,n.client)}`];case`same`:break}if(n.client===`node`&&(t||r!==null))return[`the bar is drawn by the Node fallback, which starts node on every render — ${FA(e,`native`)}`];switch(a.kind){case`uncompared`:case`same`:return[];case`unreadable`:return[`${a.root}/rust-client could not be read: ${a.reason}`];case`unstamped`:return["the native client carries no source stamp, so which source it was built from is unknown — run `just install-rust`"];case`other`:return[`the native client was built from other source than ${a.root}/rust-client holds — run \`just install-rust\``]}}const LA=`this daemon holds no render of this bar (it restarted since the bar was drawn, or has served 64 newer sessions)`,RA={name:`install`,label:`install`,takesMark:!1,probe:({install:e,askedBy:t})=>{if(e.kind===`failed`)return{ok:!1,reason:`the daemon could not be asked which clients draw the bar: ${e.reason}`};let{daemon:n,nativeShipped:r,clients:i}=e.value;return i.length===0?{ok:!1,reason:t===`click`?`${LA}, so which client draws it is unknown — run the doctor again once the bar has redrawn`:`no statusline client has drawn a bar for this daemon in the last ${300/60} minutes — run the doctor again once the bar has redrawn; if it never does, the statusLine command does not run cc-candybar`}:CA([...new Set(i.flatMap(e=>IA(n,r,e)))])}};function zA({postMortems:e},t){return e.kind===`ok`&&t.kind===`ok`?e.value.filter(e=>t.value===null||on(e.identity,t.value)):[]}function BA(e,t){return e.kind===`failed`?t:t.filter(t=>t.pid!==e.value.pid)}const VA={name:`daemon`,label:`daemon`,takesMark:!1,probe:({daemon:{serving:e,processes:t,read:n}})=>{let r=[...n.kind===`failed`?[`which post-mortems were read could not be read: ${n.reason}`]:[],...t.kind===`failed`?[`the process table could not be read: ${t.reason}`]:[]],i=t.kind===`ok`?BA(e,t.value):[];if(e.kind===`failed`){let t=i.length>0?` — daemon ${i.map(e=>e.pid).join(`, `)} running`:``;return CA([`${e.reason}${t}`,...r])}let{pid:a,rss:o,rssLimit:s,postMortems:c}=e.value,l=zA(e.value,n),u=CA([...l.map(e=>`the daemon ran out of memory and restarted (${e.identity}) — post-mortem: ${Object.values(e.artifacts).join(`, `)}`),...c.kind===`failed`?[`the daemon's post-mortems could not be listed: ${c.reason}`]:[],...r,...i.map(e=>`daemon ${e.pid} (started ${e.started}, ${nn(e.rss)} MB${e.ppid===1?``:`, child of ${e.ppid}`}) runs beside the one serving the bar (${a}) — \`kill ${e.pid}\``),...sn(o,s)?[`the daemon holds ${nn(o)} MB of its ${nn(s)} MB limit — at the limit it records a post-mortem and restarts`]:[]]),d=l[0];return u.ok||d===void 0?u:{...u,fix:{kind:`post-mortems-read`,through:d.identity}}}},HA=`click 🩺 doctor in the bar's settings menu: if it runs, links work`;function UA(e,t){let n=mA(e);return t.kind===`ok`&&n!==null&&t.value.includes(n)?{kind:`draws`}:e.kind===`known`?gA(e.terminal):{kind:`unknown`}}function WA({identified:e,tmuxClient:t},n){let r=hA(e),i=UA(e,n),a=mA(e)===null?HA:`${HA}, and the doctor remembers it for this terminal`,o=(()=>{switch(i.kind){case`draws`:return[];case`none`:return[`${r} draws no links (OSC 8), so nothing on the bar can be clicked — run Claude Code in a terminal that draws them: ${_A}`];case`older`:return[`${r} ${i.version} draws no links (OSC 8 came in ${i.since}) — update ${r}`];case`unsaid`:return[`${r} draws links (OSC 8) since ${i.since}, and did not say which release this is — ${a}`];case`unknown`:return[`the doctor does not know whether ${r} draws links (OSC 8) — ${a}`]}})(),s=n.kind===`failed`&&i.kind!==`draws`?[`the terminals a doctor click came back from could not be read: ${n.reason}`]:[],c=i.kind===`none`||t===null||t.features.includes(`hyperlinks`)?[]:[`tmux does not pass links through to ${r} — add \`set -as terminal-features ",${t.termname}:hyperlinks"\` to tmux.conf, then detach and reattach (tmux 3.4 or later)`];return[...o,...s,...c]}const GA={name:`links`,label:`links`,takesMark:!1,probe:({askedBy:e,terminal:t,clicked:n})=>{if(e===`click`)return{ok:!0};switch(t.kind){case`unreported`:return{ok:!1,reason:"the client reported no terminal — re-run `cc-candybar install` to stage a current client"};case`unasked`:return{ok:!1,reason:`tmux could not be asked which terminal is attached: ${t.reason}`};case`seen`:return CA(WA(t,n))}}},KA=e=>e.filter(e=>e.role===`statusline`).map(e=>e.frame),qA={name:`effectRefresh`,label:`effect refresh`,takesMark:!1,probe:({frames:e,claudeSettings:t,askedBy:n})=>{let r=vA(t.sources);if(r.kind===`present`&&r.refreshInterval===1)return{ok:!0,note:`statusLine.refreshInterval is 1 in ${r.from.path}`};if(e.kind===`failed`)return{ok:!1,reason:e.reason};let i=KA(e.value),a=i.includes(`moves`)?`the bar moves (an effect, a fade, or an animated segment)`:i.includes(`can-move`)?`the bar can start moving (a globals.effect rule, placements that fade in and out, or a placement with an effect of its own that is not drawn now)`:null;if(a===null)return i.includes(`still`)?{ok:!0}:{ok:!1,reason:`${i.length>0?i.includes(`drawing`)?`the bar's latest render has not finished`:`the bar's recent renders failed`:e.value.length>0?"only a `cc-candybar frames` display has drawn this bar, not Claude Code's statusline":n===`click`?LA:`no session of this Claude Code has drawn a statusline for this daemon in the last ${300/60} minutes`}, so whether it moves is unknown — run the doctor again once the bar has redrawn`};switch(r.kind){case`unread`:return{ok:!1,reason:`${a}, and Claude Code's settings could not be read: ${r.reason}`};case`absent`:return{ok:!1,reason:`${a}, and no settings file Claude Code reads here sets a statusLine (read: ${r.read.join(`, `)||`none`}) — the one that runs the bar comes from --settings, MDM or server-managed settings, which the doctor cannot read; set "refreshInterval": 1 beside its command there`};case`not-an-object`:return{ok:!1,reason:`${a}, and ${r.from.path} sets statusLine to ${JSON.stringify(r.value)}, not a statusLine object — ${r.from.scope===`user`?"re-run `cc-candybar install` to write one":`replace it there with the statusLine object that runs cc-candybar`}`};case`present`:{let{from:e,refreshInterval:t}=r,n=t===void 0?`${a}, but Claude Code redraws it only on events`:typeof t==`number`&&t>1?`${a}, but Claude Code redraws it only every ${t} s`:`${a}, but statusLine.refreshInterval is ${JSON.stringify(t)}, not a number of seconds Claude Code accepts (its minimum is 1)`;return e.scope===`managed`||e.scope===`project`?{ok:!1,reason:`${n} — its statusLine is in ${e.scope===`managed`?`managed settings`:`the project's shared settings`}, ${e.path}: set "refreshInterval": 1 there`}:{ok:!1,reason:`${n} (statusLine from ${e.path})`,fix:{kind:`claude-settings`,file:e.path,path:[`statusLine`,`refreshInterval`],value:1}}}}}},JA=e=>[...e].map(e=>`U+${e.codePointAt(0).toString(16).toUpperCase()}`).join(` `);function YA(e){switch(e.kind){case`unreported`:case`unasked`:return`this terminal`;case`unknown`:case`unnamed`:return hA(e);case`bundling`:case`unread`:case`configured`:return[iA(e.name),e.version].filter(e=>e!==null).join(` `)}}function XA(e){switch(e.kind){case`unreported`:case`unasked`:return null;case`unknown`:case`unnamed`:return mA(e);case`bundling`:case`unread`:return iA(e.name);case`configured`:{let t=iA(e.name);return e.font.kind===`ok`?`${t} with ${e.font.value.font} (${e.font.value.from})`:`${t}, its font unread: ${e.font.reason}`}}}function ZA(e){let t=XA(e.terminal);return t===null?void 0:{glyphs:e.glyphs,id:`${t}|${JA(e.glyphs)}`}}const QA={name:`nerdFont`,label:`Nerd Font`,takesMark:!0,probe:({nerdFont:e,marks:t})=>{if(e.kind===`none`)return{ok:!0};if(t.kind===`failed`)return{ok:!1,reason:`the mark book could not be read: ${t.reason}`};let n=ZA(e),r=e=>({ok:!1,reason:e,...n!==void 0&&{sighting:n}}),i=e.terminal,a=YA(i);switch(n===void 0?null:t.value.nerdFont?.[n.id]??null){case`drawn`:return{ok:!0};case`boxes`:return r(`${a} draws ${JA(e.glyphs)} as boxes — set a Nerd Font as its font`);case null:break}switch(i.kind){case`unreported`:return r("the client reported no terminal — re-run `cc-candybar install` to stage a current client");case`unasked`:return r(`tmux could not be asked which terminal is attached: ${i.reason}`);case`unknown`:case`unnamed`:case`unread`:return r(`the doctor cannot read ${a}'s font`);case`bundling`:{let e=eA[i.name].glyphs.since;if(e===null)return{ok:!0};let t=i.version===null?null:lA(i.version,e);if(t===!0)return{ok:!0};let n=iA(i.name);return r(t===null?`${n} ships Nerd Font symbols since ${e}, and did not say which release this is`:`${a} ships no Nerd Font symbols (they came in ${e}) — update ${n}, or set a Nerd Font as its font`)}case`configured`:{if(i.font.kind===`failed`)return r(`the doctor cannot read ${a}'s font: ${i.font.reason}`);let{font:e,from:t,lacks:n}=i.font.value;return n===null?r(`${a} is set to ${e} (${t}), which is not installed — install it or set a Nerd Font`):n.length===0?{ok:!0}:r(`${a} draws with ${e} (${t}), which has no ${JA(n)} — set a Nerd Font as its font`)}}}};function $A(e){return e.join(`, `)}function ej(e){return`or set missingData: "ignore" on ${$A(e)}`}function tj(e){if(e.kind===`unneeded`)return[];let{segments:t,fact:n}=e;if(n.kind===`failed`)return[`${$A(t)}: whether the forge CLI is ready could not be asked: ${n.reason}`];if(n.value===null)return[];let{cli:r,host:i,status:a}=n.value;return a===`ready`?[]:a===`missing`?[`${$A(t)}: ${r} is not installed, so no pull request is ever shown — install it, ${ej(t)}`]:[`${$A(t)}: ${r} is not logged in to ${i} (${a.loggedOut}) — run \`${r} auth login --hostname ${i}\`, ${ej(t)}`]}function nj(e,t){if(e.kind===`unneeded`)return[];let{segments:n,fact:r}=e;return r.kind===`failed`?[`${$A(n)}: ${r.reason}`]:r.value.length===0?[t===`click`?`${$A(n)}: ${LA}, so whether Claude Code sends rate_limits is unseen — run the doctor again once the bar has redrawn`:`${$A(n)}: no session of this Claude Code has drawn a bar for this daemon in the last ${300/60} minutes, so whether it sends rate_limits is unseen — run the doctor again once the bar has redrawn`]:r.value.includes(`missing`)&&!r.value.includes(`carried`)?[`${$A(n)}: Claude Code sent no rate_limits — it sends them only to Claude.ai subscription sessions; on any other account, set missingData: "ignore" on ${$A(n)}`]:[]}function rj(e){if(e.kind===`unneeded`)return[];let{segments:t,fact:n}=e;switch(n.located.kind){case`ok`:return[];case`absent`:return[`${$A(t)}: memento is not installed (or is disabled) for ${n.claudeConfigDir} — install the memento plugin, ${ej(t)}`];case`failed`:return[`${$A(t)}: whether memento is installed could not be read: ${n.located.reason}`]}}const ij={name:`segmentData`,label:`segment data`,takesMark:!1,probe:({data:e,askedBy:t})=>CA([...tj(e.pullRequests),...nj(e.rateLimits,t),...rj(e.memento)])};function aj({path:e,answered:t,read:n}){switch(n.kind){case`absent`:return t?[`the transcript ${e} does not exist, though Claude Code has answered in its session — the bar's session cost, metrics and activity read nothing`]:[];case`failed`:return[`the transcript ${e} cannot be read: ${n.reason}`];case`ok`:{let{lines:t,unparsed:r,whole:i}=n.value;return r===0?[]:[`${r} of the ${t} lines ${i?`in`:`in the last ${xA/1024/1024} MiB of`} the transcript ${e} are not JSON objects — the bar skips them, so what it counts from them is missing`]}}}const oj=[AA,RA,VA,NA,GA,EA,DA,OA,qA,QA,ij,{name:`sessionData`,label:`session data`,takesMark:!1,probe:({transcripts:e,askedBy:t})=>e.kind===`failed`?{ok:!1,reason:e.reason}:e.value.length===0?{ok:!1,reason:t===`click`?`${LA}, so which transcript it reads is unknown — run the doctor again once the bar has redrawn`:`no session has drawn a bar for this daemon in the last ${300/60} minutes, so no transcript was named — run the doctor again once the bar has redrawn`}:CA(e.value.flatMap(aj))}],sj=oj.filter(e=>e.takesMark);function cj(e){return oj.map(t=>({check:t,verdict:t.probe(e)}))}function lj(e){return oj.find(t=>t.name===e)}const uj=/^[^\s"=\\]+$/,dj=e=>uj.test(e)?e:JSON.stringify(e),fj=`${X}doctor.`;function pj(e){let t=`${fj}${e}.`;return{verdict:`${t}verdict`,reason:`${t}reason`,fixable:`${t}fixable`,sighting:`${t}sighting`}}function mj(e,t){let n=e.kind===`seen`?e.tmuxClient:null,r=e.kind===`seen`?mA(e.identified):null,i=t.kind===`failed`?`unread`:r===null?`-`:t.value.includes(r)?`yes`:`no`;return`tmuxLinks=${n===null?`-`:n.features.includes(`hyperlinks`)?`yes`:`no`} clicked=${i}`}function hj(e,t){let n=e.kind===`seen`?e.tmuxClient:null;return`cols=${t??`-`} clientUtf8=${n===null?`-`:n.utf8?`yes`:`no`}`}function gj(e){if(e.kind===`failed`)return`clients=unasked`;let{daemon:t,clients:n}=e.value;return`clients=${n.map(e=>{if(e.kind===`unreported`)return`unreported/-/-`;let{bundle:n,source:r}=PA(t,e);return`${e.client}/${n.kind}/${r.kind===`uncompared`?`-`:r.kind}`}).join(`,`)||`-`}`}function _j({serving:e,processes:t,read:n}){let r=t.kind===`failed`?`daemons=unread others=-`:`daemons=${t.value.length} others=${BA(e,t.value).map(e=>e.pid).join(`,`)||`-`}`;if(e.kind===`failed`)return`${r} rss=unasked postMortems=unasked`;let{rss:i,rssLimit:a,postMortems:o}=e.value,s=o.kind===`failed`||n.kind===`failed`?`unread`:`${zA(e.value,n).length}/${o.value.length}`;return`${r} rss=${nn(i)}/${nn(a)} postMortems=${s}`}function vj(e){let t=()=>{if(e.pullRequests.kind===`unneeded`)return`-`;let t=e.pullRequests.fact;if(t.kind===`failed`)return`failed`;if(t.value===null)return`no-forge`;let{status:n}=t.value;return typeof n==`string`?n:`logged-out`},n=()=>{if(e.rateLimits.kind===`unneeded`)return`-`;let t=e.rateLimits.fact;if(t.kind===`failed`)return`failed`;let n=e=>t.value.filter(t=>t===e).length;return`${n(`carried`)}/${n(`missing`)}/${n(`unanswered`)}`},r=e.memento.kind===`unneeded`?`-`:e.memento.fact.located.kind===`ok`?`located`:e.memento.fact.located.kind;return`data=pr:${t()},rateLimits:${n()},memento:${r}`}function yj(e){if(e.kind===`failed`)return`frames=failed`;let t=KA(e.value);return`frames=${Xk.map(e=>t.filter(t=>t===e).length).join(`/`)}`}function bj(e){let t=vA(e);switch(t.kind){case`unread`:return`statusLine=failed`;case`absent`:case`not-an-object`:return`statusLine=${t.kind}`;case`present`:return`statusLine=${dj(`${t.from.scope}:${t.refreshInterval===void 0?`-`:JSON.stringify(t.refreshInterval)}`)}`}}function xj(e){if(e.kind===`failed`)return`transcripts=failed`;let t=t=>e.value.filter(e=>e.read.kind===t).length,n=e.value.reduce((e,t)=>e+(t.read.kind===`ok`?t.read.value.unparsed:0),0);return`transcripts=${t(`ok`)}/${t(`absent`)}/${t(`failed`)} unparsed=${n}`}function Sj(e,t){if(e.kind===`none`)return`glyphs=- terminal=- font=- mark=-`;let{glyphs:n,terminal:r}=e,i=[...n].map(e=>e.codePointAt(0).toString(16)),a=(()=>{switch(r.kind){case`unreported`:case`unasked`:return r.kind;case`unknown`:return`unknown:${JSON.stringify(r.called)}`;case`unnamed`:return`unnamed:${JSON.stringify(r.term)}`;case`bundling`:case`unread`:case`configured`:return`${r.name}@${r.version??`-`}`}})(),o=(()=>{if(r.kind!==`configured`)return`-`;if(r.font.kind===`failed`)return`failed`;let{font:e,lacks:t}=r.font.value;return`${JSON.stringify(e)}:${t===null?`not-installed`:`lacks${t.length}`}`})(),s=ZA(e),c=t.kind===`failed`?`unread`:s===void 0?`-`:t.value.nerdFont?.[s.id]??`-`;return`glyphs=${i.join(`,`)} terminal=${a} font=${o} mark=${c}`}function Cj(e,t=[]){return t.length===0?e:`${e} (+${t.length} more — run \`cc-candybar doctor\`)`}function wj(e){return e.flatMap(({check:e,verdict:t})=>{let n=pj(e.name);return t.ok?[{key:n.verdict,value:`ok`},{key:n.reason,value:t.note??``},{key:n.fixable,value:Xh},{key:n.sighting,value:``}]:[{key:n.verdict,value:`failed`},{key:n.reason,value:Cj(t.reason,t.more)},{key:n.fixable,value:t.fix===void 0?Xh:Yh},{key:n.sighting,value:t.sighting?.glyphs??``}]})}const Tj={copySession:{copy:`{{ .session.id }}`},copyResume:{copy:`{{ .resume_command }}`},openProject:{open:`{{ .project_dir }}`},openTranscript:{open:`{{ .transcript_path }}`},openConfig:{open:`{{ .config_path }}`}};function Ej(e){let t=t=>`${e}${t}`;return{template:`{{ action "${t(`copySession`)}" "⎘ id" }}{{ if ne .resume_command "" }} {{ action "${t(`copyResume`)}" "⎘ resume" }}{{ end }} {{ action "${t(`openProject`)}" "↗ proj" }} {{ action "${t(`openTranscript`)}" "↗ log" }}{{ if ne .git.repoUrl "" }} {{ link .git.repoUrl "↗ repo" }}{{ end }}{{ if ne .config_path "" }} {{ action "${t(`openConfig`)}" "↗ config" }}{{ end }}`,actions:Object.fromEntries(Object.entries(Tj).map(([t,n])=>[`${e}${t}`,n]))}}const Dj=`armed`,Oj=`disarmed`,kj=`.armed`,Aj=e=>e.endsWith(kj);function jj(e,t,n){let r=`${e}${kj}`,i=`${e}.arm`,a=`${e}.disarm`,o=`(eq .${e} "${Dj}")`;return{template:`{{ if ${o} }}{{ action "${e}" "${t.confirm}" }} {{ action "${a}" "✕" }}{{ else }}{{ action "${i}" "${t.arm}" }}{{ end }}`,actions:{[i]:{set:r,to:Dj},[a]:{set:r,to:Oj},[e]:{do:[a,...n]}},armed:o,variables:{[e]:{kind:`state`,key:r,default:Oj}},disarm:a}}const Mj=RegExp(`^/[^\\s\\x00-\\x1f\\x7f-\\x9f/][^\\x00-\\x1f\\x7f-\\x9f]*$`);function Nj(e){return typeof e==`string`&&Mj.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 Pj(e){let t=Nj(e);if(t.kind===`refused`)throw Error(t.reason);return t.line}const Fj=[`/compact`,`/model`],Ij=`/clear`;function Lj(e){let t=t=>`${e}${t.slice(1)}`,n=`${e}clear.slash`,r=jj(`${e}clear`,{arm:Ij,confirm:`${Ij} ✓ confirm`},[n]);return{template:Fj.map(e=>`{{ action "${t(e)}" "${e}" }} `).join(``)+r.template,when:`{{ ${lD} }}`,actions:{...Object.fromEntries(Fj.map(e=>[t(e),{slash:Pj(e)}])),...r.actions,[n]:{slash:Pj(Ij)}},variables:r.variables,disarm:r.disarm}}const Rj=Array.from({length:10},(e,t)=>(t+1)*1e5),zj=Rj[0],Bj=Rj[Rj.length-1];function Vj(e){let t;try{t=Vi(e)}catch(e){return z(e instanceof Error?e.message:String(e))}let n=t.autoCompactWindow;return n===void 0?L(`auto`):typeof n==`number`&&Number.isInteger(n)&&n>=zj&&n<=Bj?L(n):z(`${e}: autoCompactWindow is ${JSON.stringify(n)}, not a window /autocompact accepts (${zj}–${Bj} tokens)`)}function Hj(e,t){let n=Math.min(t??Bj,Bj),r=e===`auto`?n:Math.min(e,n);return{window:e===`auto`?0:e,applied:e===`auto`?0:r,lower:Rj.filter(e=>e<r).at(-1)??0,higher:Rj.find(e=>e>r&&e<=n)??0}}function Uj(e,t){return{template:`{{ if ne .autocompact.error "" }}⇲ ⚠ {{ .autocompact.error }}{{ else }}⇲ {{ if eq .autocompact.window 0 }}auto{{ else }}${t(`.autocompact.applied`)}{{ end }}{{ if ${lD} }}{{ if gt .autocompact.lower 0 }} {{ action (printf "${e}%d" .autocompact.lower) "−" }}{{ end }}{{ if gt .autocompact.higher 0 }} {{ action (printf "${e}%d" .autocompact.higher) "+" }}{{ end }}{{ if gt .autocompact.window 0 }} {{ action "${e}auto" "↺" }}{{ end }}{{ end }}{{ end }}`,bg:`{{ if ne .autocompact.error "" }}{{ color "error" }}{{ else }}{{ tint }}{{ end }}`,when:`{{ or (ge .autocompact.window 0) (ne .autocompact.error "") }}`,actions:{[`${e}auto`]:{slash:Pj(`/autocompact auto`)},...Object.fromEntries(Rj.map(t=>[`${e}${t}`,{slash:Pj(`/autocompact ${t}`)}]))}}}const Wj=e=>`{{ if ge ${e} 1000000 }}{{ printf "%.1f" (divf ${e} 1000000) }}M{{ else if ge ${e} 1000 }}{{ printf "%.1f" (divf ${e} 1000) }}K{{ else }}{{ ${e} }}{{ end }}`,Gj=`${X}menu`,Kj=`open`,qj=`${X}edit`,Jj=`${X}toolbar`,Yj=Ej(X),Xj=`${X}commands`,Zj=Lj(`${Xj}.`),Qj=`${X}autocompact`,$j=Uj(`${Qj}.`,Wj),eM=e=>({kind:`segment`,name:e}),tM=`${X}tab`,nM=[{member:`session`,label:`⚡ session`},{member:`look`,label:`🎨 look`},{member:`layout`,label:`📐 layout`},{member:`config`,label:`⚙ config`},{member:`tools`,label:`🧰 tools`}],rM=e=>`${tM}.${e}`,iM=e=>`${rM(e)}.toggle`,aM=e=>({variable:tM,key:tM,member:e}),oM=`${X}save`,sM=`${X}preset.save`,cM=`${X}preset.delete`,lM=e=>`${X}${e}`,uM=e=>`${X}apply.${e}`,dM=e=>`${X}reset.${e}`,fM=`${X}themeDefault.save`,pM=`${X}themeDefault.differs`,mM=`${X}themeDefault.theme`,hM={when:`{{ .${pM} }}`,template:`{{ action "${fM}" (printf "⤓ default for %s" .${mM}) }} {{ swatch "${uM(`theme`)}" .${mM} }}`},gM=`${X}resetAll`,_M=`${Gj}.toggle`,vM={variable:Gj,key:Gj,member:Kj},yM=`${X}undo`,bM=`${X}back`,xM=`${bM}.step`,SM=`${X}navigation.back`,CM=bM,wM={template:`{{ if gt .${SM} 0 }}{{ action "${bM}" "◁" }}{{ else }}{{ fg (${Hk}) "◁" }}{{ end }}`},TM=`${X}redo`,EM=`${X}doctor`,DM=`${EM}.run`,OM=e=>`${EM}.fix.${e}`,kM=(e,t)=>`${EM}.mark.${e}.${t}`,AM=e=>`${EM}.${e}`,jM={drawn:`[✓ shapes]`,boxes:`[✗ boxes]`},MM=DD(`${X}pickers`),NM=`${X}gear`,PM=`gear`,FM=`${NM}.toggle`,IM={variable:MM,key:MM,member:PM},LM=DD(`${X}gearPickers`),RM=[{template:`{{ themePreview }}`}],zM={template:`{{ layoutPreview }}`},BM={preset:[zM,{when:`{{ not .preset.bundled }}`,template:`{{ action "${cM}" (printf "🚮 delete %s" .${io.preset.effectiveVar}) }}`}],style:RM,variation:[zM],shade:[zM]},VM=(e,t)=>`${X}list.${e}.${t}`,HM=e=>`${X}resettable.${e}`,UM=e=>e.length===0?`false`:`(or ${e.map(e=>`.${HM(e)}`).join(` `)})`,WM={preset:`door`,theme:`look`,style:`gear`,effect:`look`,variation:`gear`,shade:`gear`,endcaps:`look`,transitions:`look`,autoWrap:`layout`,padding:`layout`,updateNotice:`config`,experimentalBand:`config`,experimentalStatusline:`config`,experimentalPane:`config`},GM=e=>e===`gear`?WM.theme:e,KM=Object.keys(io).map(e=>{let t=io[e],n=jO(t.configKey),r=zD({label:t.label,domain:n},t.sessionKey,t.effectiveVar,uM(e),WM[e]===`gear`?LM:MM);return{...t,name:e,control:r,beneath:BM[e]??[]}}),qM=e=>KM.filter(t=>WM[t.name]===e),JM=e=>KM.filter(t=>GM(WM[t.name])===e),YM={theme:[vr(NM,IM,{kind:`container`,direction:`horizontal`,children:qM(`gear`).map(cN)},`drop`)]},XM=e=>qM(e).flatMap(e=>[cN(e),...YM[e.name]??[]]);new Set(KM.flatMap(e=>[e.sessionKey,e.configKey]));const ZM=jj(gM,{arm:`⟲`,confirm:`⟲ reset all?`},KM.map(e=>dM(e.name))),QM=[`unsaved`,`history.undo`,`history.redo`],$M=e=>`${X}${e}`,eN=$M(`unsaved`),tN=(e,t)=>({body:t,shown:`(gt .${$M(e)} 0)`}),nN=[tN(`unsaved`,`{{ action "${oM}" (printf "💾 save %d" .${eN}) }}`),tN(`history.undo`,`{{ action "${yM}" "↶" }}`),tN(`history.redo`,`{{ action "${TM}" "↷" }}`),{body:ZM.template,shown:`(or ${UM(KM.map(e=>e.name))} ${ZM.armed})`}],rN={when:`{{ or ${nN.map(e=>e.shown).join(` `)} }}`,template:`{{ $sep := "" }}`+nN.map(e=>`{{ if ${e.shown} }}{{ $sep }}${e.body}{{ $sep = " " }}{{ end }}`).join(``)},iN=[{step:ZM,place:`door`},{step:Zj,place:`session`}],aN=e=>e.map(e=>e.step.disarm),oN=aN(iN),sN=aN(iN.filter(e=>e.place!==`door`));function cN(e){let t=lM(e.name);return e.control.kind===`inline`?eM(t):vr(t,e.control.list.ref,{kind:`container`,direction:`vertical`,children:[...e.control.list.rows,...e.beneath].map((t,n)=>eM(VM(e.name,n)))},`drop`)}function lN(e){return e===Gj}function uN(e){let t=eM(Gj);if(e.kind===`container`&&e.direction===`vertical`){let[n,...r]=e.children;return e.when===void 0&&n!==void 0?{...e,children:[uN(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 dN(e){return fN(e)>0?e:uN(e)}function fN(e){let t=0;for(let n of __(e))n.kind===`segment`&&lN(n.name)&&(t+=1);return t}function pN(e,t=!1){let n=t||e.when!==void 0;return e.kind===`segment`?n&&lN(e.name)||e.opens!==void 0&&pN(e.opens.body,!0):e.children.some(e=>pN(e,n))}const mN={session:{direction:`vertical`,content:[eM(Jj),{kind:`container`,direction:`horizontal`,children:[eM(Xj),eM(Qj)]}],after:[]},look:{direction:`horizontal`,content:[],after:[eM(fM)]},layout:{direction:`horizontal`,content:[eM(sM),eM(qj)],after:[]},config:{direction:`horizontal`,content:[],after:[]},tools:{direction:`vertical`,content:[eM(EM),...oj.map(e=>eM(AM(e.name)))],after:[]}},hN=e=>({kind:`container`,direction:mN[e].direction,children:[...mN[e].content,...XM(e),...mN[e].after]});function gN(e){return e.kind===`segment`?lN(e.name)?vr(e.name,vM,vN,`above`):e:bN(e)}function _N(){return{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[eM(CM),...XM(`door`),eM(oM)]},{kind:`container`,direction:`horizontal`,children:nM.map(({member:e})=>vr(rM(e),aM(e),hN(e),`drop`))}]}}const vN=_N();function yN(e){let t=new Map;for(let e of __(vN))e.kind===`segment`&&e.opens!==void 0&&t.set(e.opens.ref.key,e.opens.ref.variable);return[...t].map(([t,n])=>{let r=e.variables[n];if(r?.kind!==`state`||r.default===void 0)throw Error(`settings menu: the door folds "${t}", but "${n}" is not a state variable the menu declares with a default`);let i=`${Gj}.fold.${fD(t)}`;return e.actions[i]={set:t,to:r.default},i})}function bN(e){return{...e,children:e.children.map(e=>gN(e))}}function xN(e){let t={variables:{[Gj]:wr(Gj,pr)},actions:{[_M]:Tr(Gj,Kj),[DM]:{doctor:`run`},[qj]:{do:[...yk]},...Yj.actions,...Zj.actions,...$j.actions,[oM]:{save:!0},[yM]:{undo:!0},[xM]:{back:!0},[bM]:{do:[xM,...oN]},[TM]:{redo:!0},[sM]:{preset:`save`},[fM]:{themeDefault:`save`},[cM]:{preset:`delete`,name:`{{ .${io.preset.effectiveVar} }}`}},segments:{[Gj]:{template:`{{ $door := ${Sr(Gj,Cr(e),Cr(`✖`))} }}{{ if ${br(vM)} }}{{ fg (keptOn (color "error") (bgOf)) $door }}{{ else }}{{ $door }}{{ end }}`},[Jj]:{template:Yj.template},[Xj]:{template:Zj.template,when:Zj.when},[Qj]:{template:$j.template,bg:$j.bg,when:$j.when},[CM]:wM,[oM]:rN,[fM]:hM,[sM]:{template:`{{ action "${sM}" "+ preset" }}`},[EM]:{template:`{{ action "${DM}" "🩺 doctor" }}`},[qj]:{template:`{{ action "${qj}" "✎ arrange" "✎ done" }}`}}};t.variables[pM]={kind:`input`,path:`themeDefault.differs`,type:`boolean`,default:!1},t.variables[mM]={kind:`input`,path:`themeDefault.theme`,type:`string`,default:``},t.variables[SM]={kind:`input`,path:`navigation.back`,type:`number`,default:0};for(let e of QM)t.variables[$M(e)]={kind:`input`,path:e,type:`number`,default:0};t.variables[tM]=wr(tM,`session`);for(let{member:e,label:n}of nM){t.actions[iM(e)]=Tr(tM,e),t.actions[rM(e)]={do:[iM(e),...sN]};let r=UM(JM(e).map(e=>e.name)),i=`(ternary ${Cr(` •`)} "" ${r})`,a=e=>`(print ${Cr(e)} ${i})`;t.segments[rM(e)]={template:`{{ ${Sr(rM(e),a(n),a(`▾ ${n}`))} }}`}}return Object.assign(t.variables,Zj.variables,ZM.variables),CN(t),SN(t),t.actions[Gj]={do:[_M,...oN,...yN(t)]},t}function SN(e){for(let t of oj){let n=pj(t.name),r=OM(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};let i=t.takesMark?bA:[];for(let n of i)e.actions[kM(t.name,n)]={doctor:`mark`,check:t.name,mark:n};let a=i.map(e=>` {{ action "${kM(t.name,e)}" "${jM[e]}" }}`).join(``);e.segments[AM(t.name)]={when:`{{ ne .${n.verdict} "" }}`,template:`{{ if eq .${n.verdict} "ok" }}✓ ${t.label}{{ if ne .${n.reason} "" }} — {{ .${n.reason} }}{{ end }}{{ else }}✗ ${t.label} — {{ .${n.reason} }}{{ if eq .${n.fixable} "${Yh}" }} {{ action "${r}" "[fix]" }}{{ end }}`+(a===``?``:`{{ if ne .${n.sighting} "" }} {{ .${n.sighting} }}${a}{{ end }}`)+`{{ end }}`}}}function CN(e){for(let t of KM){Object.assign(e.actions,t.control.actions);let n=dM(t.name);e.actions[n]={reset:t.configKey},e.variables[HM(t.name)]={kind:`input`,path:`resettable.${t.name}`,type:`boolean`,default:!1};let r=`{{ if .${HM(t.name)} }} {{ action "${n}" "↺" }}{{ end }}`;Object.assign(e.variables,t.control.variables),e.segments[lM(t.name)]={template:`${t.control.template}${r}`},t.control.kind===`picker`&&[...t.control.list.rows.map(e=>({template:e})),...t.beneath].forEach((n,r)=>{e.segments[VM(t.name,r)]=n})}Object.assign(e.actions,ZM.actions),e.actions[FM]=Tr(MM,PM),e.segments[NM]={template:`{{ action "${FM}" "⚙" }}`}}function wN(e){let{variables:t,actions:n}=Ok();Object.assign(e.variables,t),Object.assign(e.actions,n)}function TN(e){let t=xN(e.globals.menuGlyph??`🍫`);wN(t);let n={...e.presets},r=[];for(let t of nv(e.presets)){let{node:i}=av(e,t),a=gN(dN(i));r.push(a),n[t]={...iv(e.presets,t),root:a}}let i=dD(t,r,e);return{...e,variables:{...i,...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:n}}const EN=`${bD}live`,DN=[`☐ live`,`☑ live`],ON=`${bD}done`,kN=`${bD}cancel`,AN=`${bD}rewind`,jN=`${bD}changes`,MN=`(gt .${jN} 0)`,NN=`(or ${MN} (gt .${eN} 0))`,PN={variable:EN,key:EN,member:`open`};function FN(e){return`${bD}configuring.p${e}`}function IN(e){return`and ${br(Ck)} (not ${br(PN)}) (ne .${FN(e)} "true")`}function LN(e){return{kind:`template`,template:`{{ or ${e.map(e=>`(eq .${gk} "${_r(e)}")`).join(` `)} false }}`}}function RN(e,t,n){return`{{ if ${IN(e)} }}${t}{{ else }}${n}{{ end }}`}const zN=`{{ and ${br(Ck)} .preset.customized }}`,BN=SD;function VN(e){return new Map([...uv(e),...UN(e)])}const HN=`${bD}addable`;function UN(e){return new Map([[HN,{members:Object.keys(e.segments).filter(e=>!BN(e)),library:{groups:fk.map(e=>({id:e,label:pk[e]})),entry:t=>{let n=e.segments[t];return{group:n.group??`other`,...n.description!==void 0&&{description:n.description}}}}}]])}function WN(e,t,n){return n.segments[e]={template:t,when:wk,bg:Mk},{kind:`segment`,name:e}}function GN(e,t,n){let r=`${bD}${e.presetIdent}.remove.${t}`;return e.artifacts.actions[r]={persist:e.rootKey,removeSegment:n},`{{ fg (${`readableOn (color "error") (bgOf) ${Rm}`}) (action "${r}" "✖") }}`}function KN(e){return`{{ if ${br(Ck)} }}${e}{{ end }}`}function qN(e,t){return e.reduce((e,t)=>`{{ if and ${br(Ck)} ${br(t)} }}true{{ else }}${e}{{ end }}`,t)}function JN(e){return e.flatMap(e=>[...__(e)].flatMap(e=>e.kind===`segment`&&e.opens?.ref.key===`edit.configure`?[e.opens.ref]:[]))}function YN(e,t,n){return`${xk}${e}.${t}.${n}`}function XN(e,t,n,r){let i=p_(n),a=`${bD}${e.presetIdent}`,o=Sk(e.presetIdent,i);e.configured.push(o);let s=`${a}.configure.${t}`,c=DD(s),l=`${s}.fold`;e.artifacts.actions[l]={set:c,to:pr},e.artifacts.actions[s]={do:[`${s}.open`,l]},e.artifacts.actions[`${s}.open`]={set:gk,to:o};let u={},d=Object.entries(r).map(([r,o])=>{let s=YN(e.presetIdent,i,r),l=`${xk}p${e.presetIdent}.d${t}.${r}`;e.artifacts.variables[l]={kind:`state`,key:s,default:L_(n.settings?.[r]??o.default)},u[r]={id:i,key:s,variable:l};let d=`${a}.setting.${t}.${r}`,f=zD(LD(o),s,l,d,c);if(Object.assign(e.artifacts.actions,f.actions),Object.assign(e.artifacts.variables,f.variables),f.kind===`inline`)return e.artifacts.segments[d]={template:f.template},{kind:`segment`,name:d};e.artifacts.segments[d]={template:f.template};let p=f.list.rows.map((t,n)=>{let r=`${d}.list.${n}`;return e.artifacts.segments[r]={template:t},{kind:`segment`,name:r}});return vr(d,f.list.ref,{kind:`container`,direction:`vertical`,children:p},`drop`)});return{term:`{{ action "${s}" "${Rk}" }}`,ref:{variable:gk,key:gk,member:o},body:{kind:`container`,direction:`vertical`,children:d},drafts:u}}const ZN=`${bD}label:`;function QN(e){if(e.startsWith(ZN)){let t=e.slice(ZN.length);return t.slice(t.indexOf(`:`)+1)}return e.startsWith(`edit.`)?void 0:e}function $N(e,t,n,r){let{artifacts:i}=n,a=p_(e),o=`${ZN}${a}:${e.name}`;i.segments[o]={template:`{{ "${_r(a)}" }}`,...t.palette!==void 0&&{palette:t.palette}};let s=Object.fromEntries(M_.flatMap(t=>{let n=e.settings?.[t];return n===void 0?[]:[[t,n]]}));return{...vr(o,r.ref,r.body,`drop`,qN([r.ref],`{{ ${IN(n.presetIdent)} }}`)),...Object.keys(s).length>0&&{settings:s},drafts:Object.fromEntries(M_.map(e=>[e,r.drafts[e]]))}}function eP(e,t,n,r){let{presetIdent:i,artifacts:a}=e,o=`${bD}${i}.insert.${t}`,s=`${bD}${i}.insertSeg.${t}`;a.actions[o]={persist:e.rootKey,insertSegmentFrom:HN,anchor:n,relation:r};let c=TD(o),l=ED(s,o,void 0),u=kD(l),d=OD(l,c);return a.variables[l]=wr(l,pr),a.variables[u]={kind:`state`,key:u,default:`0`},a.actions[d]=Tr(l,c),a.actions[u]={set:u,int:!0},{host:s,template:`{{ $m := menu "${o}" "✚" "✕" }}{{ if ${br({variable:l,key:l,member:c})} }}{{ $m }}{{ else }}{{ fg (${`readableOn (color "success") (bgOf) ${Rm}`}) $m }}{{ end }}`}}function tP(e,t){let n=[],r=e.children.findIndex(e=>e.kind===`segment`&&!BN(e.name)),i=e=>tP(e,t);for(let[a,o]of e.children.entries()){if(o.kind===`container`){n.push(i(o));continue}let s=g_(o,i);if(BN(o.name)){n.push(s);continue}let c=p_(o),l=a===r?[eP(t,String(t.posCounter.n++),c,`before`)]:[],u=String(t.posCounter.n++),d=eP(t,u,c,`after`),f=GN(t,u,c),p=t.segments[o.name],m=XN(t,u,o,N_(p)),h=KN(f),g=KN(m.term),_={kind:`container`,direction:`horizontal`,children:[...l.map(e=>WN(e.host,e.template,t.artifacts)),{...$N(o,p,t,m),lead:h,trail:g},{...s,when:RN(t.presetIdent,`false`,o.when??`true`),lead:h,trail:g,drafts:m.drafts},WN(d.host,d.template,t.artifacts)]};n.push(e.direction===`vertical`?{kind:`container`,direction:`horizontal`,children:[_]}:_)}return{...e,children:n,...e.when!==void 0&&{when:qN(JN(n),RN(t.presetIdent,`true`,e.when))}}}function nP(e,t,n,r,i,a,o){let s=`${bD}${t}.resetLayout`,c=`${bD}${t}.customized`;return r.actions[s]={reset:n},r.segments[c]={template:`{{ action "${s}" "↺ reset layout" }}`,when:zN},{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[...i,{kind:`segment`,name:c},a]},rP(e,o)]}}function rP(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),rP(n,t)]}:{...e,children:[...e.children,t]}}function iP(e,t,n,r,i,a){let{node:o}=av(e,t),s={presetIdent:fD(t),rootKey:ak(t),segments:e.segments,artifacts:n,posCounter:{n:0},configured:[]},c=tP(o,s);return n.variables[FN(s.presetIdent)]=LN(s.configured),nP(c,s.presetIdent,s.rootKey,n,r,i,a)}function aP(e){let t={variables:{},actions:{},segments:{}},n=Ak(`${bD}help`,Bk,[Ck],t);t.variables[EN]=wr(EN,pr),t.actions[EN]=Tr(EN,PN.member),t.segments[EN]={template:xr(EN,...DN),when:wk};let r={kind:`segment`,name:EN},i=n;t.variables[jN]={kind:`input`,path:`history.sinceEdit`,type:`number`,default:0},t.actions[ON]={do:[oM,...yk]},t.segments[ON]={template:`{{ if ${NN} }}{{ action "${ON}" "✓ save" }}{{ else }}{{ action "${ON}" "✓ done" }}{{ end }}`,when:wk},t.actions[AN]={rewind:!0},t.actions[kN]={do:[AN,...yk]},t.segments[kN]={template:`{{ action "${kN}" "↩ cancel" }}`,when:`{{ and ${br(Ck)} ${MN} }}`};let a=[{kind:`segment`,name:ON},{kind:`segment`,name:kN}],o={...e.presets},s=[];for(let n of nv(e.presets)){let c=iP(e,n,t,a,r,i);s.push(c),o[n]={...iv(e.presets,n),root:c}}let c=dD(t,s,e);return{...e,variables:{...c,...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:o}}function oP(e){return e.op===`remove`?`remove:${e.target}`:`insert:${e.segment}:${e.anchor}:${e.relation}`}function sP(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 cP(e,t,n){let r=h_(e,new Set(n.map(m_).filter(e=>e.includes(t)).flat()));return r===e?{seg:e}:{seg:e,id:r}}const lP=/^-?\d+$/;function uP(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 dP(e){return t=>{if(!t)return{ok:!1,reason:`${e} value is required`};if(!lP.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 fP(e,t,n){return r=>r?lP.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 pP(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=>!lP.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 mP(e){return e===`config`?`set-config`:`set-state`}function hP(e,t,n){return t.kind===`int`?dP(`menu page "${e}"`):t.kind===`range`?fP(t.min,t.max,`${n} stepper "${e}"`):uP(t.allowed,`${n} "${e}"`,mP(n))}function gP(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:pP(e,n,t)}))}function _P(e,t,n,r){let i=new Map(Object.entries(e)),a=new Map,o=new Set(t.map(e=>e.key));for(let{key:e,spec:t}of n)if(o.has(e)&&t.kind!==`allow-list`)throw Error(`${r} gate: key "${e}" is written by the daemon's own links as one of a list of values, and cannot be declared as ${t.kind===`int`?`a paged cursor (int)`:`a bounded value (range)`}. Use a distinct key.`);let s=[...t.map(({key:e,allowed:t})=>({key:e,spec:{kind:`allow-list`,allowed:t}})),...n];for(let{key:t,spec:n}of gP(s,r)){if(!t)throw Error(`${r} gate: key is required`);if(t.includes(`/`))throw Error(`${r} gate: key "${t}" contains "/" — the wire shape splits on "/" so a slash-bearing key cannot be addressed. Use a slash-free key.`);if(Object.hasOwn(e,t))throw Error(`${r} gate: key "${t}" is a built-in ${r} key and cannot be re-claimed (built-in keys: ${Object.keys(e).join(`, `)})`);i.set(t,hP(t,n,r)),n.kind===`range`&&a.set(t,{min:n.min,max:n.max})}return{validate(e,t){let n=i.get(e);return n?n(t):{ok:!1,reason:`unknown ${r} key "${e}" (have: ${[...i.keys()].join(`, `)})`}},listKeys:()=>[...i.keys()],rangeParamsFor:e=>a.get(e)??null}}function vP(e,t,n){let r=[],i=0,a=new WeakMap;return{register(n,a){let o={key:n,allowed:a};_P(e,[o],[],t),r.push(o),i++;let s=!0;return()=>{s&&(s=!1,r.splice(r.indexOf(o),1),i++)}},gateFor(o){let s=a.get(o);if(s?.epoch===i)return s.gate;let c=_P(e,r,n(o),t);return a.set(o,{epoch:i,gate:c}),c}}}const yP=vP({},`config`,EP);function bP(e,t){return yP.register(e,t)}function xP(e){return yP.gateFor(e)}function SP(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:fv(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:[oP({op:`remove`,target:e.removeSegment})]}}]:`insertSegment`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:[oP({op:`insert`,segment:e.insertSegment,anchor:e.anchor,relation:e.relation})]}}]:`insertSegmentFrom`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:fv(e.insertSegmentFrom,t).members.map(t=>oP({op:`insert`,segment:t,anchor:e.anchor,relation:e.relation}))}}]:[{key:e.persist,spec:{kind:`range`,min:e.min,max:e.max}}]:[]}function CP(e,t){let n=ek(e).get(t);return n===void 0?null:String(n)}function wP(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?lk(n.persist):null;e?.scope===`preset-root`&&t.add(ak(e.preset))}return[...t].map(e=>({key:e,spec:{kind:`allow-list`,allowed:[]}}))}function TP(e){let t=VN(e);return[...wP(e),...Object.values(e.actions).flatMap(e=>SP(e,t))]}function EP(e){return gP(TP(e),`config`)}function DP(e,t){return{globals:{...t.globals,...e.globals??{}},variables:{...t.variables,...e.variables??{}},segments:AP(t.segments,OP(t.segments,e.segments??{})),root:Q_(e.root??G_,t.root),actions:{...t.actions,...e.actions??{}},styles:{...t.styles,...e.styles??{}},presets:AP(t.presets,kP(t.presets,e.presets??{})),themeDefaults:AP(t.themeDefaults,e.themeDefaults??{}),editGlobals:{...t.editGlobals,...e.editGlobals??{}},helpers:{...t.helpers,...e.helpers??{}}}}function OP(e,t){return Object.fromEntries(Object.entries(t).map(([t,n])=>[t,n.settings===void 0?n:{...n,settings:{...e[t]?.settings,...n.settings}}]))}function kP(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 AP(e,t){return{...e,...Object.fromEntries(Object.entries(t).map(([t,n])=>[t,{...e[t],...n}]))}}function jP(e,t,n,r){return n.cache===void 0?(e.issues.push({path:`${t}.cache`,message:`${r} variables must declare a cache policy (one of: ${w_.join(`, `)})`,line:Y(e.source,t.split(`.`))}),null):PP(e,`${t}.cache`,n.cache)}function MP(e){return{required:!0,json:FP(),parse:(t,n,r,i)=>jP(t,n,i,e)??void 0}}const NP={noun:`cache`,arms:{ttl:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`&&LP(n)?{ttl:n}:$D(e,t,`cache.ttl must be a duration string like "5s", "100ms", "2m", "1h"; got ${Z(n)}`)},watch_file:{json:{type:`string`,pattern:`^/`},parse:(e,t,n)=>{if(typeof n!=`string`)return $D(e,t,`cache.watch_file must be a path string, got ${Z(n)}`);let r=dO(`cache.watch_file`,n);return r===null?{watch_file:n}:$D(e,t,r)}},depends_on:{json:{type:`array`,items:{type:`string`}},parse:(e,t,n)=>Array.isArray(n)&&n.every(e=>typeof e==`string`)?{depends_on:n}:$D(e,t,`cache.depends_on must be an array of variable-name strings, got ${Z(n)}`)},key:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`&&n!==``?{key:n}:$D(e,t,`cache.key must be a non-empty template string, got ${Z(n)}`)},never:{json:{const:!0},parse:(e,t,n)=>n===!0?{never:!0}:$D(e,t,`cache.never must be the literal boolean true, got ${Z(n)}`)}}};function PP(e,t,n){return eO(e,NP,t,n)}function FP(){return vO(NP)}const IP=/^(\d+(?:\.\d+)?)(ms|s|m|h)$/;function LP(e){return IP.test(e)}function RP(e,t,n){if(n===void 0)return{};if(!KD(n))return e.issues.push({path:t,message:`${t} must be an object, got ${qD(n)}`,line:Y(e.source,t.split(`.`))}),{};let r={};for(let[i,a]of Object.entries(n)){let n=tO(e,uF,`${t}.${i}`,a);n!==null&&(r[i]=n)}return r}function zP(){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 ${qD(i)}`,line:Y(e.source,t.split(`.`))});return}return i}}}function BP(){return{required:!0,json:{enum:[...E_]},parse:(e,t,n,r)=>{let i=r.field;if(typeof i!=`string`||!E_.includes(i)){e.issues.push({path:`${t}.field`,message:`git field must be one of: ${E_.join(`, `)}, got ${JSON.stringify(i)}`,line:Y(e.source,[...t.split(`.`),`field`])});return}return i}}}function VP(){return{required:!1,json:{type:[`string`,`number`,`boolean`]},parse:(e,t,n,r)=>{let i=r.type;return HD(e,t,r,i===`number`||i===`boolean`||i===`string`?i:`string`)}}}const HP={noun:`parse`,arms:{text:{json:{const:!0},parse:(e,t,n)=>n===!0?{text:!0}:$D(e,t,`parse.text must be the literal boolean true, got ${Z(n)}`)},regex:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`?UP(e,t,n):$D(e,t,`parse.regex must be a pattern string, got ${Z(n)}`)},json:{json:{const:!0},parse:(e,t,n)=>n===!0?{json:!0}:$D(e,t,`parse.json must be the literal boolean true, got ${Z(n)}`)}}};function UP(e,t,n){let r;try{new RegExp(n),r=RegExp(`${n}|`).exec(``).length-1}catch(n){return $D(e,t,`parse.regex is not a valid regular expression: ${n.message}`)}return r>=1?{regex:n}:$D(e,t,`parse.regex must contain a capture group — its group 1 is the value; got ${JSON.stringify(n)}`)}function WP(){return{required:!1,json:vO(HP),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:Y(e.source,[...t.split(`.`),`regex`])}),r.parse===void 0?void 0:eO(e,HP,`${t}.parse`,r.parse)??void 0)}}function GP(){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)=>KD(r.parse)&&`json`in r.parse?KP(e,t,r.default):UD(e,t,r,`default`)}}function KP(e,t,n){if(n!==void 0)return qP(n)?n:$D(e,`${t}.default`,`${t}.default must be a JSON value (a json-parsed source's document), got ${Z(n)}`)??void 0}function qP(e){return e!==null&&JP(e)}function JP(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(JP);let t=Object.getPrototypeOf(e);return(t===Object.prototype||t===null)&&Object.values(e).every(JP)}default:return!1}}const YP={value:zP(),default:aO()},XP={path:uO(),type:pO([`string`,`number`,`boolean`]),default:VP()},ZP={name:uO(),default:aO()},QP={path:fO(),readMode:pO([`whole`,`first-line`]),parse:WP(),cache:MP(`file`),default:GP()},$P={command:uO(),parse:WP(),cache:MP(`shell`),default:GP()};function eF(e){return{cache:`${e}, so it takes no cache policy — delete the key`}}const tF={template:uO(),default:aO()},nF=eF(`a template variable recomputes whenever a variable it reads changes`),rF={layout:uO(),default:aO()},iF=eF(`a time variable reads the instant its render is drawn at`),aF={field:BP(),default:aO()},oF=eF(`a git variable is refreshed by the daemon's own watch on the repository`),sF={key:uO(),default:aO()},cF=`kind`;function lF(e,t,n={}){return{...nO(cF,e,t),parse:(r,i,a)=>{YD(r,n,i,a);let o=XD(r,t,i,a);return o===null?null:{kind:e,...o}}}}const uF={tag:cF,noun:`source kind`,memberNoun:`variable`,arms:{literal:lF(`literal`,YP),input:lF(`input`,XP),env:lF(`env`,ZP),file:lF(`file`,QP),shell:lF(`shell`,$P),template:lF(`template`,tF,nF),time:lF(`time`,rF,iF),git:lF(`git`,aF,oF),state:lF(`state`,sF)}};function dF(){return _O(uF)}function fF(){return{type:`object`,additionalProperties:dF()}}const pF=new Map([[`gitTaculous`,{kind:`built-in`,to:`gitaculous`}],[`git`,{kind:`built-in`,to:`gitaculous`}],[`settings.menu`,{kind:`built-in`,to:`candybar.menu`}],[`ticket`,{kind:`plugin`,to:`plugins.lit.ticket`,source:`promptctl/links-issue-tracker`}]]);function mF(e){let t=pF.get(e);if(t===void 0)return``;switch(t.kind){case`built-in`:return` (the built-in segment "${e}" was renamed to "${t.to}" — update this reference)`;case`plugin`:return` (the built-in segment "${e}" became "${t.to}", a segment of the plugin \`cc-candybar plugin install ${t.source}\` installs — update this reference)`}}const hF=/^[A-Za-z_][A-Za-z0-9_]*$/,gF={pattern:hF.source},_F={anyOf:[{type:`boolean`},{type:`string`},{type:`integer`}]},vF={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`},step:{type:`integer`,minimum:1},atLeast:{type:`string`,...gF}}}]},default:_F}},yF=[`label`,`domain`,`default`],bF=[`min`,`max`,`step`,`atLeast`];function xF(e,t,n){e.issues.push({path:t,message:n,line:Y(e.source,t.split(`.`))})}function SF(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 xF(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 xF(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?xF(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(KD(n)){let{min:r,max:i,step:a=1,atLeast:o}=n;return Object.keys(n).filter(e=>!bF.includes(e)).length===0&&Number.isInteger(r)&&Number.isInteger(i)&&r<=i&&Number.isInteger(a)&&a>=1&&(o===void 0||typeof o==`string`)?{min:r,max:i,step:a,...o!==void 0&&{atLeast:o}}:xF(e,t,`a range domain is { min, max, step?, atLeast? } with integers min ≤ max, a whole step ≥ 1, and atLeast naming another range setting, got ${JSON.stringify(n)}`)}return xF(e,t,`domain must be "bool", a list of words, or { min, max }, got ${Z(n)}`)}function CF(e,t,n){if(!KD(n))return xF(e,t,`${t} must be { label, domain, default }, got ${qD(n)}`);for(let r of Object.keys(n))yF.includes(r)||xF(e,`${t}.${r}`,`Unknown setting key "${r}". Expected one of: ${yF.join(`, `)}`);let{label:r}=n,i=typeof r==`string`&&r.length>0&&!/[\n\r]/.test(r);i||xF(e,`${t}.label`,`a setting needs a one-line, non-empty "label" — the name its control shows, spliced into a synthesized template string — got ${Z(r)}`);let a=SF(e,`${t}.domain`,n.domain);if(!i||a===void 0)return;let o={label:r,domain:a,default:n.default};return!wF(n.default)||!I_(o,n.default)?xF(e,`${t}.default`,`default must be ${B_(o)}, got ${Z(n.default)}`):o}function wF(e){return typeof e==`boolean`||typeof e==`string`||typeof e==`number`}const TF={theme:`its default for this segment is segments.<name>.palette, and a placement sets its own with settings: { ${A_}: "<theme>" }`,effect:`a placement follows the bar's effect, or sets its own with settings: { effect: "<effect>" }`};function EF(e){return M_.includes(e)}function DF(){return{required:!1,json:{type:`object`,propertyNames:{...gF,not:{enum:[...M_]}},additionalProperties:vF},parse:(e,t,n,r)=>{let i=r[n];if(i===void 0)return;let a=`${t}.${n}`;if(!KD(i))return xF(e,a,`${a} must be an object of name → { label, domain, default }, got ${qD(i)}`);let o=Object.create(null);for(let[t,n]of Object.entries(i)){if(!hF.test(t)){xF(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(EF(t)){xF(e,`${a}.${t}`,`setting "${t}" is one every placement already has — ${TF[t]}`);continue}let r=CF(e,`${a}.${t}`,n);r!==void 0&&(o[t]=r)}return o}}}const OF=xD.map(e=>e.replace(/\./g,`\\.`)).join(`|`);function kF(){return{required:!1,json:{type:`string`,minLength:1,pattern:`^(?!${OF})[^:/]+$`},parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0)return typeof i==`string`&&i.length>0&&!/[:/]/.test(i)&&!SD(i)?i:xF(e,`${t}.${n}`,`a placement "id" must be a non-empty string without "/" or ":", outside the reserved ${xD.map(e=>`"${e}"`).join(`, `)} namespaces, got ${Z(i)}`)}}}function AF(){return{required:!1,json:{type:`object`,propertyNames:gF,additionalProperties:_F},parse:(e,t,n,r)=>{let i=r[n];if(i===void 0)return;let a=`${t}.${n}`;if(!KD(i))return xF(e,a,`a placement's "settings" must be an object of setting name → value, got ${qD(i)}`);let o=Object.create(null);for(let[t,n]of Object.entries(i))wF(n)?o[t]=n:xF(e,`${a}.${t}`,`setting "${t}" must be a boolean, a word, or a number, got ${qD(n)}`);return o}}}function jF(e){return new Set(Object.keys(e.segments).filter(e=>!SD(e)))}function MF(e,t,n){if(t===void 0)return{};if(!KD(t))return e.issues.push({path:`segments`,message:`segments must be an object, got ${qD(t)}`,line:Y(e.source,[`segments`])}),{};let r={};for(let[i,a]of Object.entries(t)){let t=JD(e,n.has(i)?RF:LF,`segments.${i}`,a);t!==null&&(r[i]=t)}return r}function NF(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>r[n]===void 0?$D(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${mF(t.slice(9))}`)??void 0:VD(e,t,r,n)??void 0}}function PF(){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 ${Z(i)}`,line:Y(e.source,[...t.split(`.`),n])})}}}}function FF(){return{required:!1,json:fF(),parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0)return RP(e,`${t}.${n}`,i)}}}const IF={template:NF(),description:aO(),group:pO(dk),width:PF(),justify:pO(V_),truncate:pO(H_),bg:aO(),fg:aO(),when:aO(),palette:lO(),vars:FF(),settings:DF(),missingData:pO(D_)},LF={noun:`segment key`,fields:IF},RF={noun:`segment key`,fields:{...IF,template:aO()}},zF=`#/definitions/LayoutNode`,BF={kind:`container`,direction:`vertical`,children:[]};function VF(e){return{required:!0,json:{const:e},parse:()=>e}}function HF(){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 ${Z(i)}`,line:Y(e.source,[`root`])}),``)}}}function UF(){return{required:!0,json:{enum:[...d_]},parse:(e,t,n,r)=>{let i=r[n];return typeof i==`string`&&d_.includes(i)?i:(e.issues.push({path:`${t}.${n}`,message:`a container "direction" must be one of: ${d_.join(`, `)} (got ${JSON.stringify(i)})`,line:Y(e.source,[`root`])}),`vertical`)}}}function WF(e){return{required:!0,json:{type:`array`,items:{$ref:zF}},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 ${qD(a)}`,line:Y(t.source,[`root`])}),[])}}}const GF={noun:`layout-node key`,fields:{kind:VF(`segment`),name:HF(),when:aO(),id:kF(),settings:AF()}},KF=()=>pO(mm),qF={noun:`layout-node key`,fields:{kind:VF(`container`),direction:UF(),children:WF(rO(()=>QF)),when:aO(),distribution:KF()}};function JF(){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 ${Z(i)}`,line:Y(e.source,[`root`])}),``)}}}const YF={noun:`layout-node key`,fields:{seg:JF(),when:aO(),id:kF(),settings:AF()}},XF={noun:`layout-node key`,fields:{h:WF(rO(()=>QF)),when:aO(),distribution:KF()}},ZF={noun:`layout-node key`,fields:{v:WF(rO(()=>QF)),when:aO(),distribution:KF()}},QF=(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:Y(e.source,[`root`])}),BF):{kind:`segment`,name:n};if(!KD(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 ${qD(n)}`,line:Y(e.source,[`root`])}),BF;if(n.kind===`container`)return JD(e,qF,t,n)??BF;if(n.kind===`segment`)return JD(e,GF,t,n)??BF;if(n.kind===`cells`)return e.issues.push({path:t,message:`kind: "cells" is no longer supported — use the h-arm spelling instead:
|
|
168
|
+
`,Uk=`readableOn (mix (color "foreground") (bgOf) 60) (bgOf) 3`,Wk={socket:`TMUX`,pane:`TMUX_PANE`,truecolor:`CLAUDE_CODE_TMUX_TRUECOLOR`};function Gk(e){let t=e[Wk.socket]??``,n=e[Wk.pane]??``;if(t===``||n===``)return null;let r=e[Wk.truecolor]??``;return{socket:t.split(`,`)[0],pane:n,truecolor:r===``?null:r}}const Kk=[`moves`,`can-move`,`still`];function qk(e){let t=e.context_window?.current_usage;return t===null?`no`:t===void 0?`unknown`:`yes`}const Jk=[`carried`,`missing`,`unanswered`];function Yk(e){let t=e.rate_limits;return t?.five_hour!=null||t?.seven_day!=null?`carried`:qk(e)===`no`?`unanswered`:`missing`}function Xk(e){return{path:e.transcript_path,answered:qk(e)===`yes`}}const Zk=[...Kk,`failed`,`drawing`],Qk=[`statusline`,`frames`],$k=e=>e?.kind===`frames`?`frames`:`statusline`;var eA=class{seen=new Map;see(e,t,n,r){let i=$k(t.client),a=JSON.stringify([e,i]),o=this.seen.get(a);o!==void 0&&o.order>r||(this.seen.delete(a),this.seen.set(a,{sessionId:e,said:{...t,role:i},at:n,order:r}),this.seen.size>64&&this.seen.delete(this.seen.keys().next().value))}list(e){return[...this.seen.values()].map(({said:t,at:n})=>({...t,ago:e-n}))}ofSession(e){return[...this.seen.values()].filter(t=>t.sessionId===e).map(e=>e.said)}};const tA={kitty:{label:`kitty`,xtversion:`kitty`,program:null,programVersion:!0,term:`xterm-kitty`,links:{since:`0.19.0`},glyphs:{kind:`bundled`,since:`0.36.0`}},wezterm:{label:`WezTerm`,xtversion:`WezTerm`,program:`WezTerm`,programVersion:!0,term:`wezterm`,links:{since:null},glyphs:{kind:`bundled`,since:`20230712`}},ghostty:{label:`Ghostty`,xtversion:`ghostty`,program:`ghostty`,programVersion:!0,term:`xterm-ghostty`,links:{since:null},glyphs:{kind:`bundled`,since:null}},iterm2:{label:`iTerm2`,xtversion:`iTerm2`,program:`iTerm.app`,programVersion:!0,term:null,links:{since:`3.1`},glyphs:{kind:`configured`}},alacritty:{label:`Alacritty`,xtversion:`alacritty`,program:null,programVersion:!0,term:`alacritty`,links:{since:`0.11.0`},glyphs:{kind:`configured`}},"apple-terminal":{label:`Terminal`,xtversion:null,program:`Apple_Terminal`,programVersion:!0,term:null,links:null,glyphs:{kind:`unread`}},vscode:{label:`VS Code`,xtversion:null,program:`vscode`,programVersion:!1,term:null,links:{since:`1.72`},glyphs:{kind:`unread`}}},nA=e=>tA[e];function rA(e){return nA(e).glyphs.kind===`bundled`}function iA(e){return nA(e).glyphs.kind===`configured`}const aA=e=>nA(e).label,oA=[{since:`3.5.0`,from:57504,to:57507},{since:`3.5.0`,from:57520,to:57554},{since:`3.5.0`,from:57556,to:57556},{since:`3.5.6`,from:57558,to:57559}];function sA(e,t){let n=t.codePointAt(0);return oA.some(({since:t,from:r,to:i})=>r<=n&&n<=i&&e!==null&&uA(e,t)===!0)}const cA=Object.keys(tA);function lA(e){let t=/^\d+(?:\.\d+)*/.exec(e);return t===null?null:t[0].split(`.`).map(Number)}function uA(e,t){let n=lA(e),r=lA(t);if(n===null)return null;for(let e=0;e<Math.max(n.length,r.length);e++){let t=n[e]??0,i=r[e]??0;if(t!==i)return t>i}return!0}function dA(e){for(let t of cA){let n=nA(t).xtversion;if(n!==null&&e.toLowerCase().startsWith(n.toLowerCase())){let r=e.slice(n.length).replace(/^[\s(]+/,``);return{name:t,version:/^[^\s)]+/.exec(r)?.[0]??null}}}return null}function fA(e){let t=cA.find(t=>nA(t).term===e);return t===void 0?null:{name:t,version:null}}function pA(e){let t=dA(e.termtype)??fA(e.termname);if(t!==null)return{kind:`known`,terminal:t};let n=/^[^\s(]*/.exec(e.termtype)[0];return n===``?{kind:`unnamed`,term:e.termname}:{kind:`unknown`,called:n}}function mA(e){let t=e.TERM_PROGRAM,n=cA.find(e=>nA(e).program===t),r=n===void 0?fA(e.TERM):{name:n,version:nA(n).programVersion?e.TERM_PROGRAM_VERSION??null:null};return r===null?t===void 0||t===`tmux`?{kind:`unnamed`,term:e.TERM??``}:{kind:`unknown`,called:t}:{kind:`known`,terminal:r}}function hA(e){switch(e.kind){case`known`:return aA(e.terminal.name);case`unknown`:return e.called;case`unnamed`:return e.term||null}}function gA(e){switch(e.kind){case`known`:return aA(e.terminal.name);case`unknown`:return e.called;case`unnamed`:return e.term||`this terminal`}}function _A({name:e,version:t}){let n=nA(e).links;if(n===null)return{kind:`none`};if(n.since===null)return{kind:`draws`};if(t===null)return{kind:`unsaid`,since:n.since};let r=uA(t,n.since);return r===null?{kind:`unsaid`,since:n.since}:r?{kind:`draws`}:{kind:`older`,since:n.since,version:t}}const vA=cA.filter(e=>nA(e).links!==null).map(aA).join(`, `);function yA(e){if(e.kind===`failed`)return{kind:`unread`,reason:e.reason};let t=e.value.flatMap(({scope:e,path:t,settings:n})=>`statusLine`in n?[{from:{scope:e,path:t},line:n.statusLine}]:[]),n=t[0];if(n===void 0)return{kind:`absent`,read:e.value.map(e=>e.path)};if(!Ki(n.line))return{kind:`not-an-object`,value:n.line,from:n.from};for(let{from:e,line:r}of t){if(e.scope!==n.from.scope||!Ki(r))break;if(`refreshInterval`in r)return{kind:`present`,refreshInterval:r.refreshInterval,from:e}}return{kind:`present`,refreshInterval:void 0,from:n.from}}function bA(e){return e.kind===`failed`?e:{kind:`ok`,value:e.value.find(e=>e.scope===`user`)?.env??{}}}const xA=[`drawn`,`boxes`],SA=1024*1024;function CA(e){switch(e.kind){case`claude-settings`:return`${e.kind} ${e.path.join(`.`)}=${JSON.stringify(e.value)} file=${JSON.stringify(e.file)}`;case`post-mortems-read`:return`${e.kind} through=${e.through}`}}function wA(e){let[t,...n]=e;return t===void 0?{ok:!0}:{ok:!1,reason:t,more:n}}const TA=Wk.truecolor;function EA(e,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`:return e.client.kind===`failed`?{ok:!1,reason:`tmux could not be asked: ${e.client.reason}`}:e.client.value===null?{ok:!0}:t(e.client.value,e.hint)}}const DA={name:`tmuxTruecolor`,label:`tmux truecolor`,takesMark:!1,probe:({tmux:e,claudeSettings:t})=>EA(e,(e,n)=>{if(!e.features.includes(`RGB`)||n.truecolor!==null)return{ok:!0};let r=bA(t.sources);if(r.kind===`failed`)return{ok:!1,reason:r.reason};let{userFile:i}=t.at,a=r.value[TA];return typeof a==`string`&&a!==``?{ok:!1,reason:`${TA} is set in ${i} — restart Claude Code to apply`}:{ok:!1,reason:`Claude Code renders the bar in 256 colours inside tmux`,fix:{kind:`claude-settings`,file:i,path:[`env`,TA],value:`1`}}})},OA={name:`utf8`,label:`UTF-8`,takesMark:!1,probe:({tmux:e})=>EA(e,e=>e.utf8?{ok:!0}:{ok:!1,reason:"tmux draws this terminal without UTF-8, so every glyph on the bar arrives as `_` — attach with `tmux -u`, or set a UTF-8 LC_ALL/LC_CTYPE/LANG in the shell that runs tmux"})},kA={name:`termWidth`,label:`terminal width`,takesMark:!1,probe:({termCols:e})=>e===null?{ok:!1,reason:`no terminal width was measured (no COLUMNS, and no terminal to ask — or the daemon refused the width sent, which the bar's red strip names), so the bar is laid out as if the terminal were 120 columns wide`}:{ok:!0}},AA={variable:`is never read`,action:`is never clicked`,helper:`is never called`,segment:`is in no preset`},jA={name:`config`,label:`config`,takesMark:!1,probe:({config:e})=>{switch(e.kind){case`failed`:{let[t=`the config failed to load`,...n]=[...e.error.split(`
|
|
169
|
+
`).map(e=>e.trim()).filter(e=>e!==``),...e.warnings];return{ok:!1,reason:t,more:n}}case`loaded`:return wA([...e.warnings,...e.unused.map(({kind:e,name:t})=>`${e} "${t}" ${AA[e]}`)])}}},MA="re-run `cc-candybar install`";function NA(e){if(e.kind===`failed`)return[`Launch Services could not be asked which app opens cc-candybar:// — ${e.reason}`];if(e.value===null)return[`no app is registered for cc-candybar:// — ${MA}`];let{app:t,missing:n}=e.value;return n.kind===`failed`?[`${t} opens cc-candybar://, but ${n.reason} — ${MA}`]:n.value.map(e=>`${e} is missing, and ${t} runs it — ${MA}`)}const PA={name:`urlHandler`,label:`URL handler`,takesMark:!1,probe:({urlHandler:e})=>{switch(e.kind){case`unsupported`:return{ok:!0};case`unprobed`:return{ok:!1,reason:e.reason};case`arrived`:return e.handler===e.bar?{ok:!0}:{ok:!1,reason:e.handler===null?`the URL handler does not report its version, so it is older than the bar (${e.bar}) — ${MA}`:`the URL handler runs cc-candybar ${e.handler}; the bar runs ${e.bar} — ${MA}`};case`lost`:return wA([...NA(e.opener),e.unopened===null?`a cc-candybar:// link was opened and did not arrive at the daemon`:`a cc-candybar:// link could not be opened — ${e.unopened}`])}}};function FA({bundle:e,checkout:t},n){return{bundle:n.bundle.kind===`failed`?{kind:`unresolved`,reason:n.bundle.reason}:n.bundle.value===e?{kind:`same`}:{kind:`other`,path:n.bundle.value},source:n.client!==`native`||t===null?{kind:`uncompared`}:t.rustSource.kind===`failed`?{kind:`unreadable`,root:t.root,reason:t.rustSource.reason}:n.source===null?{kind:`unstamped`}:n.source===t.rustSource.value?{kind:`same`}:{kind:`other`,root:t.root}}}function IA(e,t){return t===`frames`?`run \`node ${e.bundle} frames --lane <band|statusline|pane>\``:e.checkout===null?MA:`run \`just install-rust\` and point the statusLine command at ${e.checkout.root}/bin/cc-candybar-native`}function LA(e,t,n){let{checkout:r}=e;if(n.kind===`unreported`)return[`the bar is drawn by a statusline client too old to say what it is — ${IA(e,`native`)}`];let{bundle:i,source:a}=FA(e,n);switch(i.kind){case`unresolved`:return[`the statusline client's bundle cannot be resolved: ${i.reason}`];case`other`:return[`the statusline client runs ${i.path}, not the daemon's ${e.bundle} — ${IA(e,n.client)}`];case`same`:break}if(n.client===`node`&&(t||r!==null))return[`the bar is drawn by the Node fallback, which starts node on every render — ${IA(e,`native`)}`];switch(a.kind){case`uncompared`:case`same`:return[];case`unreadable`:return[`${a.root}/rust-client could not be read: ${a.reason}`];case`unstamped`:return["the native client carries no source stamp, so which source it was built from is unknown — run `just install-rust`"];case`other`:return[`the native client was built from other source than ${a.root}/rust-client holds — run \`just install-rust\``]}}const RA=`this daemon holds no render of this bar (it restarted since the bar was drawn, or has served 64 newer sessions)`,zA={name:`install`,label:`install`,takesMark:!1,probe:({install:e,askedBy:t})=>{if(e.kind===`failed`)return{ok:!1,reason:`the daemon could not be asked which clients draw the bar: ${e.reason}`};let{daemon:n,nativeShipped:r,clients:i}=e.value;return i.length===0?{ok:!1,reason:t===`click`?`${RA}, so which client draws it is unknown — run the doctor again once the bar has redrawn`:`no statusline client has drawn a bar for this daemon in the last ${300/60} minutes — run the doctor again once the bar has redrawn; if it never does, the statusLine command does not run cc-candybar`}:wA([...new Set(i.flatMap(e=>LA(n,r,e)))])}};function BA({postMortems:e},t){return e.kind===`ok`&&t.kind===`ok`?e.value.filter(e=>t.value.through===null||on(e.identity,t.value.through)):[]}function VA(e,t){return e.kind===`failed`?t:t.filter(t=>t.pid!==e.value.pid)}const HA={name:`daemon`,label:`daemon`,takesMark:!1,probe:({daemon:{serving:e,processes:t,read:n}})=>{let r=[...n.kind===`failed`?[`which post-mortems were read could not be read: ${n.reason}`]:[],...t.kind===`failed`?[`the process table could not be read: ${t.reason}`]:[]],i=t.kind===`ok`?VA(e,t.value):[];if(e.kind===`failed`){let t=i.length>0?` — daemon ${i.map(e=>e.pid).join(`, `)} running`:``;return wA([`${e.reason}${t}`,...r])}let{pid:a,rss:o,rssLimit:s,postMortems:c}=e.value,l=BA(e.value,n),u=wA([...l.map(e=>`the daemon ran out of memory and restarted (${e.identity}) — post-mortem: ${Object.values(e.artifacts).join(`, `)}`),...c.kind===`failed`?[`the daemon's post-mortems could not be listed: ${c.reason}`]:[],...r,...i.map(e=>`daemon ${e.pid} (started ${e.started}, ${nn(e.rss)} MB${e.ppid===1?``:`, child of ${e.ppid}`}) runs beside the one serving the bar (${a}) — \`kill ${e.pid}\``),...sn(o,s)?[`the daemon holds ${nn(o)} MB of its ${nn(s)} MB limit — at the limit it records a post-mortem and restarts`]:[]]),d=l[0];return u.ok||d===void 0?u:{...u,fix:{kind:`post-mortems-read`,through:d.identity}}}},UA=`click 🩺 doctor in the bar's settings menu: if it runs, links work`;function WA(e,t){let n=hA(e);return t.kind===`ok`&&n!==null&&t.value.includes(n)?{kind:`draws`}:e.kind===`known`?_A(e.terminal):{kind:`unknown`}}function GA({identified:e,tmuxClient:t},n){let r=gA(e),i=WA(e,n),a=hA(e)===null?UA:`${UA}, and the doctor remembers it for this terminal`,o=(()=>{switch(i.kind){case`draws`:return[];case`none`:return[`${r} draws no links (OSC 8), so nothing on the bar can be clicked — run Claude Code in a terminal that draws them: ${vA}`];case`older`:return[`${r} ${i.version} draws no links (OSC 8 came in ${i.since}) — update ${r}`];case`unsaid`:return[`${r} draws links (OSC 8) since ${i.since}, and did not say which release this is — ${a}`];case`unknown`:return[`the doctor does not know whether ${r} draws links (OSC 8) — ${a}`]}})(),s=n.kind===`failed`&&i.kind!==`draws`?[`the terminals a doctor click came back from could not be read: ${n.reason}`]:[],c=i.kind===`none`||t===null||t.features.includes(`hyperlinks`)?[]:[`tmux does not pass links through to ${r} — add \`set -as terminal-features ",${t.termname}:hyperlinks"\` to tmux.conf, then detach and reattach (tmux 3.4 or later)`];return[...o,...s,...c]}const KA={name:`links`,label:`links`,takesMark:!1,probe:({askedBy:e,terminal:t,clicked:n})=>{if(e===`click`)return{ok:!0};switch(t.kind){case`unreported`:return{ok:!1,reason:"the client reported no terminal — re-run `cc-candybar install` to stage a current client"};case`unasked`:return{ok:!1,reason:`tmux could not be asked which terminal is attached: ${t.reason}`};case`seen`:return wA(GA(t,n))}}},qA=e=>e.filter(e=>e.role===`statusline`).map(e=>e.frame),JA={name:`effectRefresh`,label:`effect refresh`,takesMark:!1,probe:({frames:e,claudeSettings:t,askedBy:n})=>{let r=yA(t.sources);if(r.kind===`present`&&r.refreshInterval===1)return{ok:!0,note:`statusLine.refreshInterval is 1 in ${r.from.path}`};if(e.kind===`failed`)return{ok:!1,reason:e.reason};let i=qA(e.value),a=i.includes(`moves`)?`the bar moves (an effect, a fade, or an animated segment)`:i.includes(`can-move`)?`the bar can start moving (a globals.effect rule, placements that fade in and out, or a placement with an effect of its own that is not drawn now)`:null;if(a===null)return i.includes(`still`)?{ok:!0}:{ok:!1,reason:`${i.length>0?i.includes(`drawing`)?`the bar's latest render has not finished`:`the bar's recent renders failed`:e.value.length>0?"only a `cc-candybar frames` display has drawn this bar, not Claude Code's statusline":n===`click`?RA:`no session of this Claude Code has drawn a statusline for this daemon in the last ${300/60} minutes`}, so whether it moves is unknown — run the doctor again once the bar has redrawn`};switch(r.kind){case`unread`:return{ok:!1,reason:`${a}, and Claude Code's settings could not be read: ${r.reason}`};case`absent`:return{ok:!1,reason:`${a}, and no settings file Claude Code reads here sets a statusLine (read: ${r.read.join(`, `)||`none`}) — the one that runs the bar comes from --settings, MDM or server-managed settings, which the doctor cannot read; set "refreshInterval": 1 beside its command there`};case`not-an-object`:return{ok:!1,reason:`${a}, and ${r.from.path} sets statusLine to ${JSON.stringify(r.value)}, not a statusLine object — ${r.from.scope===`user`?"re-run `cc-candybar install` to write one":`replace it there with the statusLine object that runs cc-candybar`}`};case`present`:{let{from:e,refreshInterval:t}=r,n=t===void 0?`${a}, but Claude Code redraws it only on events`:typeof t==`number`&&t>1?`${a}, but Claude Code redraws it only every ${t} s`:`${a}, but statusLine.refreshInterval is ${JSON.stringify(t)}, not a number of seconds Claude Code accepts (its minimum is 1)`;return e.scope===`managed`||e.scope===`project`?{ok:!1,reason:`${n} — its statusLine is in ${e.scope===`managed`?`managed settings`:`the project's shared settings`}, ${e.path}: set "refreshInterval": 1 there`}:{ok:!1,reason:`${n} (statusLine from ${e.path})`,fix:{kind:`claude-settings`,file:e.path,path:[`statusLine`,`refreshInterval`],value:1}}}}}},YA=e=>[...e].map(e=>`U+${e.codePointAt(0).toString(16).toUpperCase()}`).join(` `);function XA(e){switch(e.kind){case`unreported`:case`unasked`:return`this terminal`;case`unknown`:case`unnamed`:return gA(e);case`bundling`:case`unread`:case`configured`:return[aA(e.name),e.version].filter(e=>e!==null).join(` `)}}function ZA(e){switch(e.kind){case`unreported`:case`unasked`:return null;case`unknown`:case`unnamed`:return hA(e);case`bundling`:case`unread`:return aA(e.name);case`configured`:{let t=aA(e.name);return e.font.kind===`ok`?`${t} with ${e.font.value.font} (${e.font.value.from})`:`${t}, its font unread: ${e.font.reason}`}}}function QA(e){let t=ZA(e.terminal);return t===null?void 0:{glyphs:e.glyphs,id:`${t}|${YA(e.glyphs)}`}}const $A={name:`nerdFont`,label:`Nerd Font`,takesMark:!0,probe:({nerdFont:e,marks:t})=>{if(e.kind===`none`)return{ok:!0};if(t.kind===`failed`)return{ok:!1,reason:`the mark book could not be read: ${t.reason}`};let n=QA(e),r=e=>({ok:!1,reason:e,...n!==void 0&&{sighting:n}}),i=e.terminal,a=XA(i);switch(n===void 0?null:t.value.nerdFont?.[n.id]??null){case`drawn`:return{ok:!0};case`boxes`:return r(`${a} draws ${YA(e.glyphs)} as boxes — set a Nerd Font as its font`);case null:break}switch(i.kind){case`unreported`:return r("the client reported no terminal — re-run `cc-candybar install` to stage a current client");case`unasked`:return r(`tmux could not be asked which terminal is attached: ${i.reason}`);case`unknown`:case`unnamed`:case`unread`:return r(`the doctor cannot read ${a}'s font`);case`bundling`:{let e=tA[i.name].glyphs.since;if(e===null)return{ok:!0};let t=i.version===null?null:uA(i.version,e);if(t===!0)return{ok:!0};let n=aA(i.name);return r(t===null?`${n} ships Nerd Font symbols since ${e}, and did not say which release this is`:`${a} ships no Nerd Font symbols (they came in ${e}) — update ${n}, or set a Nerd Font as its font`)}case`configured`:{if(i.font.kind===`failed`)return r(`the doctor cannot read ${a}'s font: ${i.font.reason}`);let{font:e,from:t,lacks:n}=i.font.value;return n===null?r(`${a} is set to ${e} (${t}), which is not installed — install it or set a Nerd Font`):n.length===0?{ok:!0}:r(`${a} draws with ${e} (${t}), which has no ${YA(n)} — set a Nerd Font as its font`)}}}};function ej(e){return e.join(`, `)}function tj(e){return`or set missingData: "ignore" on ${ej(e)}`}function nj(e){if(e.kind===`unneeded`)return[];let{segments:t,fact:n}=e;if(n.kind===`failed`)return[`${ej(t)}: whether the forge CLI is ready could not be asked: ${n.reason}`];if(n.value===null)return[];let{cli:r,host:i,status:a}=n.value;return a===`ready`?[]:a===`missing`?[`${ej(t)}: ${r} is not installed, so no pull request is ever shown — install it, ${tj(t)}`]:[`${ej(t)}: ${r} is not logged in to ${i} (${a.loggedOut}) — run \`${r} auth login --hostname ${i}\`, ${tj(t)}`]}function rj(e,t){if(e.kind===`unneeded`)return[];let{segments:n,fact:r}=e;return r.kind===`failed`?[`${ej(n)}: ${r.reason}`]:r.value.length===0?[t===`click`?`${ej(n)}: ${RA}, so whether Claude Code sends rate_limits is unseen — run the doctor again once the bar has redrawn`:`${ej(n)}: no session of this Claude Code has drawn a bar for this daemon in the last ${300/60} minutes, so whether it sends rate_limits is unseen — run the doctor again once the bar has redrawn`]:r.value.includes(`missing`)&&!r.value.includes(`carried`)?[`${ej(n)}: Claude Code sent no rate_limits — it sends them only to Claude.ai subscription sessions; on any other account, set missingData: "ignore" on ${ej(n)}`]:[]}function ij(e){if(e.kind===`unneeded`)return[];let{segments:t,fact:n}=e;switch(n.located.kind){case`ok`:return[];case`absent`:return[`${ej(t)}: memento is not installed (or is disabled) for ${n.claudeConfigDir} — install the memento plugin, ${tj(t)}`];case`failed`:return[`${ej(t)}: whether memento is installed could not be read: ${n.located.reason}`]}}const aj={name:`segmentData`,label:`segment data`,takesMark:!1,probe:({data:e,askedBy:t})=>wA([...nj(e.pullRequests),...rj(e.rateLimits,t),...ij(e.memento)])};function oj({path:e,answered:t,read:n}){switch(n.kind){case`absent`:return t?[`the transcript ${e} does not exist, though Claude Code has answered in its session — the bar's session cost, metrics and activity read nothing`]:[];case`failed`:return[`the transcript ${e} cannot be read: ${n.reason}`];case`ok`:{let{lines:t,unparsed:r,whole:i}=n.value;return r===0?[]:[`${r} of the ${t} lines ${i?`in`:`in the last ${SA/1024/1024} MiB of`} the transcript ${e} are not JSON objects — the bar skips them, so what it counts from them is missing`]}}}const sj=[jA,zA,HA,PA,KA,DA,OA,kA,JA,$A,aj,{name:`sessionData`,label:`session data`,takesMark:!1,probe:({transcripts:e,askedBy:t})=>e.kind===`failed`?{ok:!1,reason:e.reason}:e.value.length===0?{ok:!1,reason:t===`click`?`${RA}, so which transcript it reads is unknown — run the doctor again once the bar has redrawn`:`no session has drawn a bar for this daemon in the last ${300/60} minutes, so no transcript was named — run the doctor again once the bar has redrawn`}:wA(e.value.flatMap(oj))}],cj=sj.filter(e=>e.takesMark);function lj(e){return sj.map(t=>({check:t,verdict:t.probe(e)}))}function uj(e){return sj.find(t=>t.name===e)}const dj=/^[^\s"=\\]+$/,fj=e=>dj.test(e)?e:JSON.stringify(e),pj=`${X}doctor.`;function mj(e){let t=`${pj}${e}.`;return{verdict:`${t}verdict`,reason:`${t}reason`,fixable:`${t}fixable`,sighting:`${t}sighting`}}function hj(e,t){let n=e.kind===`seen`?e.tmuxClient:null,r=e.kind===`seen`?hA(e.identified):null,i=t.kind===`failed`?`unread`:r===null?`-`:t.value.includes(r)?`yes`:`no`;return`tmuxLinks=${n===null?`-`:n.features.includes(`hyperlinks`)?`yes`:`no`} clicked=${i}`}function gj(e,t){let n=e.kind===`seen`?e.tmuxClient:null;return`cols=${t??`-`} clientUtf8=${n===null?`-`:n.utf8?`yes`:`no`}`}function _j(e){if(e.kind===`failed`)return`clients=unasked`;let{daemon:t,clients:n}=e.value;return`clients=${n.map(e=>{if(e.kind===`unreported`)return`unreported/-/-`;let{bundle:n,source:r}=FA(t,e);return`${e.client}/${n.kind}/${r.kind===`uncompared`?`-`:r.kind}`}).join(`,`)||`-`}`}function vj({serving:e,processes:t,read:n}){let r=t.kind===`failed`?`daemons=unread others=-`:`daemons=${t.value.length} others=${VA(e,t.value).map(e=>e.pid).join(`,`)||`-`}`;if(e.kind===`failed`)return`${r} rss=unasked postMortems=unasked`;let{rss:i,rssLimit:a,postMortems:o}=e.value,s=o.kind===`failed`||n.kind===`failed`?`unread`:`${BA(e.value,n).length}/${o.value.length}`;return`${r} rss=${nn(i)}/${nn(a)} postMortems=${s}`}function yj(e){let t=()=>{if(e.pullRequests.kind===`unneeded`)return`-`;let t=e.pullRequests.fact;if(t.kind===`failed`)return`failed`;if(t.value===null)return`no-forge`;let{status:n}=t.value;return typeof n==`string`?n:`logged-out`},n=()=>{if(e.rateLimits.kind===`unneeded`)return`-`;let t=e.rateLimits.fact;if(t.kind===`failed`)return`failed`;let n=e=>t.value.filter(t=>t===e).length;return`${n(`carried`)}/${n(`missing`)}/${n(`unanswered`)}`},r=e.memento.kind===`unneeded`?`-`:e.memento.fact.located.kind===`ok`?`located`:e.memento.fact.located.kind;return`data=pr:${t()},rateLimits:${n()},memento:${r}`}function bj(e){if(e.kind===`failed`)return`frames=failed`;let t=qA(e.value);return`frames=${Zk.map(e=>t.filter(t=>t===e).length).join(`/`)}`}function xj(e){let t=yA(e);switch(t.kind){case`unread`:return`statusLine=failed`;case`absent`:case`not-an-object`:return`statusLine=${t.kind}`;case`present`:return`statusLine=${fj(`${t.from.scope}:${t.refreshInterval===void 0?`-`:JSON.stringify(t.refreshInterval)}`)}`}}function Sj(e){if(e.kind===`failed`)return`transcripts=failed`;let t=t=>e.value.filter(e=>e.read.kind===t).length,n=e.value.reduce((e,t)=>e+(t.read.kind===`ok`?t.read.value.unparsed:0),0);return`transcripts=${t(`ok`)}/${t(`absent`)}/${t(`failed`)} unparsed=${n}`}function Cj(e,t){if(e.kind===`none`)return`glyphs=- terminal=- font=- mark=-`;let{glyphs:n,terminal:r}=e,i=[...n].map(e=>e.codePointAt(0).toString(16)),a=(()=>{switch(r.kind){case`unreported`:case`unasked`:return r.kind;case`unknown`:return`unknown:${JSON.stringify(r.called)}`;case`unnamed`:return`unnamed:${JSON.stringify(r.term)}`;case`bundling`:case`unread`:case`configured`:return`${r.name}@${r.version??`-`}`}})(),o=(()=>{if(r.kind!==`configured`)return`-`;if(r.font.kind===`failed`)return`failed`;let{font:e,lacks:t}=r.font.value;return`${JSON.stringify(e)}:${t===null?`not-installed`:`lacks${t.length}`}`})(),s=QA(e),c=t.kind===`failed`?`unread`:s===void 0?`-`:t.value.nerdFont?.[s.id]??`-`;return`glyphs=${i.join(`,`)} terminal=${a} font=${o} mark=${c}`}function wj(e,t=[]){return t.length===0?e:`${e} (+${t.length} more — run \`cc-candybar doctor\`)`}function Tj(e){return e.flatMap(({check:e,verdict:t})=>{let n=mj(e.name);return t.ok?[{key:n.verdict,value:`ok`},{key:n.reason,value:t.note??``},{key:n.fixable,value:Zh},{key:n.sighting,value:``}]:[{key:n.verdict,value:`failed`},{key:n.reason,value:wj(t.reason,t.more)},{key:n.fixable,value:t.fix===void 0?Zh:Xh},{key:n.sighting,value:t.sighting?.glyphs??``}]})}const Ej={copySession:{copy:`{{ .session.id }}`},copyResume:{copy:`{{ .resume_command }}`},openProject:{open:`{{ .project_dir }}`},openTranscript:{open:`{{ .transcript_path }}`},openConfig:{open:`{{ .config_path }}`}};function Dj(e){let t=t=>`${e}${t}`;return{template:`{{ action "${t(`copySession`)}" "⎘ id" }}{{ if ne .resume_command "" }} {{ action "${t(`copyResume`)}" "⎘ resume" }}{{ end }} {{ action "${t(`openProject`)}" "↗ proj" }} {{ action "${t(`openTranscript`)}" "↗ log" }}{{ if ne .git.repoUrl "" }} {{ link .git.repoUrl "↗ repo" }}{{ end }}{{ if ne .config_path "" }} {{ action "${t(`openConfig`)}" "↗ config" }}{{ end }}`,actions:Object.fromEntries(Object.entries(Ej).map(([t,n])=>[`${e}${t}`,n]))}}const Oj=`armed`,kj=`disarmed`,Aj=`.armed`,jj=e=>e.endsWith(Aj);function Mj(e,t,n){let r=`${e}${Aj}`,i=`${e}.arm`,a=`${e}.disarm`,o=`(eq .${e} "${Oj}")`;return{template:`{{ if ${o} }}{{ action "${e}" "${t.confirm}" }} {{ action "${a}" "✕" }}{{ else }}{{ action "${i}" "${t.arm}" }}{{ end }}`,actions:{[i]:{set:r,to:Oj},[a]:{set:r,to:kj},[e]:{do:[a,...n]}},armed:o,variables:{[e]:{kind:`state`,key:r,default:kj}},disarm:a}}const Nj=RegExp(`^/[^\\s\\x00-\\x1f\\x7f-\\x9f/][^\\x00-\\x1f\\x7f-\\x9f]*$`);function Pj(e){return typeof e==`string`&&Nj.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 Fj(e){let t=Pj(e);if(t.kind===`refused`)throw Error(t.reason);return t.line}const Ij=[`/compact`,`/model`],Lj=`/clear`;function Rj(e){let t=t=>`${e}${t.slice(1)}`,n=`${e}clear.slash`,r=Mj(`${e}clear`,{arm:Lj,confirm:`${Lj} ✓ confirm`},[n]);return{template:Ij.map(e=>`{{ action "${t(e)}" "${e}" }} `).join(``)+r.template,when:`{{ ${uD} }}`,actions:{...Object.fromEntries(Ij.map(e=>[t(e),{slash:Fj(e)}])),...r.actions,[n]:{slash:Fj(Lj)}},variables:r.variables,disarm:r.disarm}}const zj=Array.from({length:10},(e,t)=>(t+1)*1e5),Bj=zj[0],Vj=zj[zj.length-1];function Hj(e){let t;try{t=Vi(e)}catch(e){return z(e instanceof Error?e.message:String(e))}let n=t.autoCompactWindow;return n===void 0?L(`auto`):typeof n==`number`&&Number.isInteger(n)&&n>=Bj&&n<=Vj?L(n):z(`${e}: autoCompactWindow is ${JSON.stringify(n)}, not a window /autocompact accepts (${Bj}–${Vj} tokens)`)}function Uj(e,t){let n=Math.min(t??Vj,Vj),r=e===`auto`?n:Math.min(e,n);return{window:e===`auto`?0:e,applied:e===`auto`?0:r,lower:zj.filter(e=>e<r).at(-1)??0,higher:zj.find(e=>e>r&&e<=n)??0}}function Wj(e,t){return{template:`{{ if ne .autocompact.error "" }}⇲ ⚠ {{ .autocompact.error }}{{ else }}⇲ {{ if eq .autocompact.window 0 }}auto{{ else }}${t(`.autocompact.applied`)}{{ end }}{{ if ${uD} }}{{ if gt .autocompact.lower 0 }} {{ action (printf "${e}%d" .autocompact.lower) "−" }}{{ end }}{{ if gt .autocompact.higher 0 }} {{ action (printf "${e}%d" .autocompact.higher) "+" }}{{ end }}{{ if gt .autocompact.window 0 }} {{ action "${e}auto" "↺" }}{{ end }}{{ end }}{{ end }}`,bg:`{{ if ne .autocompact.error "" }}{{ color "error" }}{{ else }}{{ tint }}{{ end }}`,when:`{{ or (ge .autocompact.window 0) (ne .autocompact.error "") }}`,actions:{[`${e}auto`]:{slash:Fj(`/autocompact auto`)},...Object.fromEntries(zj.map(t=>[`${e}${t}`,{slash:Fj(`/autocompact ${t}`)}]))}}}const Gj=e=>`{{ if ge ${e} 1000000 }}{{ printf "%.1f" (divf ${e} 1000000) }}M{{ else if ge ${e} 1000 }}{{ printf "%.1f" (divf ${e} 1000) }}K{{ else }}{{ ${e} }}{{ end }}`,Kj=`${X}menu`,qj=`open`,Jj=`${X}edit`,Yj=`${X}toolbar`,Xj=Dj(X),Zj=`${X}commands`,Qj=Rj(`${Zj}.`),$j=`${X}autocompact`,eM=Wj(`${$j}.`,Gj),tM=e=>({kind:`segment`,name:e}),nM=`${X}tab`,rM=[{member:`session`,label:`⚡ session`},{member:`look`,label:`🎨 look`},{member:`layout`,label:`📐 layout`},{member:`config`,label:`⚙ config`},{member:`tools`,label:`🧰 tools`}],iM=e=>`${nM}.${e}`,aM=e=>`${iM(e)}.toggle`,oM=e=>({variable:nM,key:nM,member:e}),sM=`${X}save`,cM=`${X}preset.save`,lM=`${X}preset.delete`,uM=e=>`${X}${e}`,dM=e=>`${X}apply.${e}`,fM=e=>`${X}reset.${e}`,pM=`${X}themeDefault.save`,mM=`${X}themeDefault.differs`,hM=`${X}themeDefault.theme`,gM={when:`{{ .${mM} }}`,template:`{{ action "${pM}" (printf "⤓ default for %s" .${hM}) }} {{ swatch "${dM(`theme`)}" .${hM} }}`},_M=`${X}resetAll`,vM=`${Kj}.toggle`,yM={variable:Kj,key:Kj,member:qj},bM=`${X}undo`,xM=`${X}back`,SM=`${xM}.step`,CM=`${X}navigation.back`,wM=xM,TM={template:`{{ if gt .${CM} 0 }}{{ action "${xM}" "◁" }}{{ else }}{{ fg (${Uk}) "◁" }}{{ end }}`},EM=`${X}redo`,DM=`${X}doctor`,OM=`${DM}.run`,kM=e=>`${DM}.fix.${e}`,AM=(e,t)=>`${DM}.mark.${e}.${t}`,jM=e=>`${DM}.${e}`,MM={drawn:`[✓ shapes]`,boxes:`[✗ boxes]`},NM=OD(`${X}pickers`),PM=`${X}gear`,FM=`gear`,IM=`${PM}.toggle`,LM={variable:NM,key:NM,member:FM},RM=OD(`${X}gearPickers`),zM=[{template:`{{ themePreview }}`}],BM={template:`{{ layoutPreview }}`},VM={preset:[BM,{when:`{{ not .preset.bundled }}`,template:`{{ action "${lM}" (printf "🚮 delete %s" .${io.preset.effectiveVar}) }}`}],style:zM,variation:[BM],shade:[BM]},HM=(e,t)=>`${X}list.${e}.${t}`,UM=e=>`${X}resettable.${e}`,WM=e=>e.length===0?`false`:`(or ${e.map(e=>`.${UM(e)}`).join(` `)})`,GM={preset:`door`,theme:`look`,style:`gear`,effect:`look`,variation:`gear`,shade:`gear`,endcaps:`look`,transitions:`look`,autoWrap:`layout`,padding:`layout`,updateNotice:`config`,experimentalBand:`config`,experimentalStatusline:`config`,experimentalPane:`config`},KM=e=>e===`gear`?GM.theme:e,qM=Object.keys(io).map(e=>{let t=io[e],n=MO(t.configKey),r=BD({label:t.label,domain:n},t.sessionKey,t.effectiveVar,dM(e),GM[e]===`gear`?RM:NM);return{...t,name:e,control:r,beneath:VM[e]??[]}}),JM=e=>qM.filter(t=>GM[t.name]===e),YM=e=>qM.filter(t=>KM(GM[t.name])===e),XM={theme:[vr(PM,LM,{kind:`container`,direction:`horizontal`,children:JM(`gear`).map(lN)},`drop`)]},ZM=e=>JM(e).flatMap(e=>[lN(e),...XM[e.name]??[]]);new Set(qM.flatMap(e=>[e.sessionKey,e.configKey]));const QM=Mj(_M,{arm:`⟲`,confirm:`⟲ reset all?`},qM.map(e=>fM(e.name))),$M=[`unsaved`,`history.undo`,`history.redo`],eN=e=>`${X}${e}`,tN=eN(`unsaved`),nN=(e,t)=>({body:t,shown:`(gt .${eN(e)} 0)`}),rN=[nN(`unsaved`,`{{ action "${sM}" (printf "💾 save %d" .${tN}) }}`),nN(`history.undo`,`{{ action "${bM}" "↶" }}`),nN(`history.redo`,`{{ action "${EM}" "↷" }}`),{body:QM.template,shown:`(or ${WM(qM.map(e=>e.name))} ${QM.armed})`}],iN={when:`{{ or ${rN.map(e=>e.shown).join(` `)} }}`,template:`{{ $sep := "" }}`+rN.map(e=>`{{ if ${e.shown} }}{{ $sep }}${e.body}{{ $sep = " " }}{{ end }}`).join(``)},aN=[{step:QM,place:`door`},{step:Qj,place:`session`}],oN=e=>e.map(e=>e.step.disarm),sN=oN(aN),cN=oN(aN.filter(e=>e.place!==`door`));function lN(e){let t=uM(e.name);return e.control.kind===`inline`?tM(t):vr(t,e.control.list.ref,{kind:`container`,direction:`vertical`,children:[...e.control.list.rows,...e.beneath].map((t,n)=>tM(HM(e.name,n)))},`drop`)}function uN(e){return e===Kj}function dN(e){let t=tM(Kj);if(e.kind===`container`&&e.direction===`vertical`){let[n,...r]=e.children;return e.when===void 0&&n!==void 0?{...e,children:[dN(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 fN(e){return pN(e)>0?e:dN(e)}function pN(e){let t=0;for(let n of v_(e))n.kind===`segment`&&uN(n.name)&&(t+=1);return t}function mN(e,t=!1){let n=t||e.when!==void 0;return e.kind===`segment`?n&&uN(e.name)||e.opens!==void 0&&mN(e.opens.body,!0):e.children.some(e=>mN(e,n))}const hN={session:{direction:`vertical`,content:[tM(Yj),{kind:`container`,direction:`horizontal`,children:[tM(Zj),tM($j)]}],after:[]},look:{direction:`horizontal`,content:[],after:[tM(pM)]},layout:{direction:`horizontal`,content:[tM(cM),tM(Jj)],after:[]},config:{direction:`horizontal`,content:[],after:[]},tools:{direction:`vertical`,content:[tM(DM),...sj.map(e=>tM(jM(e.name)))],after:[]}},gN=e=>({kind:`container`,direction:hN[e].direction,children:[...hN[e].content,...ZM(e),...hN[e].after]});function _N(e){return e.kind===`segment`?uN(e.name)?vr(e.name,yM,yN,`above`):e:xN(e)}function vN(){return{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[tM(wM),...ZM(`door`),tM(sM)]},{kind:`container`,direction:`horizontal`,children:rM.map(({member:e})=>vr(iM(e),oM(e),gN(e),`drop`))}]}}const yN=vN();function bN(e){let t=new Map;for(let e of v_(yN))e.kind===`segment`&&e.opens!==void 0&&t.set(e.opens.ref.key,e.opens.ref.variable);return[...t].map(([t,n])=>{let r=e.variables[n];if(r?.kind!==`state`||r.default===void 0)throw Error(`settings menu: the door folds "${t}", but "${n}" is not a state variable the menu declares with a default`);let i=`${Kj}.fold.${pD(t)}`;return e.actions[i]={set:t,to:r.default},i})}function xN(e){return{...e,children:e.children.map(e=>_N(e))}}function SN(e){let t={variables:{[Kj]:wr(Kj,pr)},actions:{[vM]:Tr(Kj,qj),[OM]:{doctor:`run`},[Jj]:{do:[...bk]},...Xj.actions,...Qj.actions,...eM.actions,[sM]:{save:!0},[bM]:{undo:!0},[SM]:{back:!0},[xM]:{do:[SM,...sN]},[EM]:{redo:!0},[cM]:{preset:`save`},[pM]:{themeDefault:`save`},[lM]:{preset:`delete`,name:`{{ .${io.preset.effectiveVar} }}`}},segments:{[Kj]:{template:`{{ $door := ${Sr(Kj,Cr(e),Cr(`✖`))} }}{{ if ${br(yM)} }}{{ fg (keptOn (color "error") (bgOf)) $door }}{{ else }}{{ $door }}{{ end }}`},[Yj]:{template:Xj.template},[Zj]:{template:Qj.template,when:Qj.when},[$j]:{template:eM.template,bg:eM.bg,when:eM.when},[wM]:TM,[sM]:iN,[pM]:gM,[cM]:{template:`{{ action "${cM}" "+ preset" }}`},[DM]:{template:`{{ action "${OM}" "🩺 doctor" }}`},[Jj]:{template:`{{ action "${Jj}" "✎ arrange" "✎ done" }}`}}};t.variables[mM]={kind:`input`,path:`themeDefault.differs`,type:`boolean`,default:!1},t.variables[hM]={kind:`input`,path:`themeDefault.theme`,type:`string`,default:``},t.variables[CM]={kind:`input`,path:`navigation.back`,type:`number`,default:0};for(let e of $M)t.variables[eN(e)]={kind:`input`,path:e,type:`number`,default:0};t.variables[nM]=wr(nM,`session`);for(let{member:e,label:n}of rM){t.actions[aM(e)]=Tr(nM,e),t.actions[iM(e)]={do:[aM(e),...cN]};let r=WM(YM(e).map(e=>e.name)),i=`(ternary ${Cr(` •`)} "" ${r})`,a=e=>`(print ${Cr(e)} ${i})`;t.segments[iM(e)]={template:`{{ ${Sr(iM(e),a(n),a(`▾ ${n}`))} }}`}}return Object.assign(t.variables,Qj.variables,QM.variables),wN(t),CN(t),t.actions[Kj]={do:[vM,...sN,...bN(t)]},t}function CN(e){for(let t of sj){let n=mj(t.name),r=kM(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};let i=t.takesMark?xA:[];for(let n of i)e.actions[AM(t.name,n)]={doctor:`mark`,check:t.name,mark:n};let a=i.map(e=>` {{ action "${AM(t.name,e)}" "${MM[e]}" }}`).join(``);e.segments[jM(t.name)]={when:`{{ ne .${n.verdict} "" }}`,template:`{{ if eq .${n.verdict} "ok" }}✓ ${t.label}{{ if ne .${n.reason} "" }} — {{ .${n.reason} }}{{ end }}{{ else }}✗ ${t.label} — {{ .${n.reason} }}{{ if eq .${n.fixable} "${Xh}" }} {{ action "${r}" "[fix]" }}{{ end }}`+(a===``?``:`{{ if ne .${n.sighting} "" }} {{ .${n.sighting} }}${a}{{ end }}`)+`{{ end }}`}}}function wN(e){for(let t of qM){Object.assign(e.actions,t.control.actions);let n=fM(t.name);e.actions[n]={reset:t.configKey},e.variables[UM(t.name)]={kind:`input`,path:`resettable.${t.name}`,type:`boolean`,default:!1};let r=`{{ if .${UM(t.name)} }} {{ action "${n}" "↺" }}{{ end }}`;Object.assign(e.variables,t.control.variables),e.segments[uM(t.name)]={template:`${t.control.template}${r}`},t.control.kind===`picker`&&[...t.control.list.rows.map(e=>({template:e})),...t.beneath].forEach((n,r)=>{e.segments[HM(t.name,r)]=n})}Object.assign(e.actions,QM.actions),e.actions[IM]=Tr(NM,FM),e.segments[PM]={template:`{{ action "${IM}" "⚙" }}`}}function TN(e){let{variables:t,actions:n}=kk();Object.assign(e.variables,t),Object.assign(e.actions,n)}function EN(e){let t=SN(e.globals.menuGlyph??`🍫`);TN(t);let n={...e.presets},r=[];for(let t of rv(e.presets)){let{node:i}=ov(e,t),a=_N(fN(i));r.push(a),n[t]={...av(e.presets,t),root:a}}let i=fD(t,r,e);return{...e,variables:{...i,...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:n}}const DN=`${xD}live`,ON=[`☐ live`,`☑ live`],kN=`${xD}done`,AN=`${xD}cancel`,jN=`${xD}rewind`,MN=`${xD}changes`,NN=`(gt .${MN} 0)`,PN=`(or ${NN} (gt .${tN} 0))`,FN={variable:DN,key:DN,member:`open`};function IN(e){return`${xD}configuring.p${e}`}function LN(e){return`and ${br(wk)} (not ${br(FN)}) (ne .${IN(e)} "true")`}function RN(e){return{kind:`template`,template:`{{ or ${e.map(e=>`(eq .${_k} "${_r(e)}")`).join(` `)} false }}`}}function zN(e,t,n){return`{{ if ${LN(e)} }}${t}{{ else }}${n}{{ end }}`}const BN=`{{ and ${br(wk)} .preset.customized }}`,VN=CD;function HN(e){return new Map([...dv(e),...WN(e)])}const UN=`${xD}addable`;function WN(e){return new Map([[UN,{members:Object.keys(e.segments).filter(e=>!VN(e)),library:{groups:pk.map(e=>({id:e,label:mk[e]})),entry:t=>{let n=e.segments[t];return{group:n.group??`other`,...n.description!==void 0&&{description:n.description}}}}}]])}function GN(e,t,n){return n.segments[e]={template:t,when:Tk,bg:Nk},{kind:`segment`,name:e}}function KN(e,t,n){let r=`${xD}${e.presetIdent}.remove.${t}`;return e.artifacts.actions[r]={persist:e.rootKey,removeSegment:n},`{{ fg (${`readableOn (color "error") (bgOf) ${zm}`}) (action "${r}" "✖") }}`}function qN(e){return`{{ if ${br(wk)} }}${e}{{ end }}`}function JN(e,t){return e.reduce((e,t)=>`{{ if and ${br(wk)} ${br(t)} }}true{{ else }}${e}{{ end }}`,t)}function YN(e){return e.flatMap(e=>[...v_(e)].flatMap(e=>e.kind===`segment`&&e.opens?.ref.key===`edit.configure`?[e.opens.ref]:[]))}function XN(e,t,n){return`${Sk}${e}.${t}.${n}`}function ZN(e,t,n,r){let i=m_(n),a=`${xD}${e.presetIdent}`,o=Ck(e.presetIdent,i);e.configured.push(o);let s=`${a}.configure.${t}`,c=OD(s),l=`${s}.fold`;e.artifacts.actions[l]={set:c,to:pr},e.artifacts.actions[s]={do:[`${s}.open`,l]},e.artifacts.actions[`${s}.open`]={set:_k,to:o};let u={},d=Object.entries(r).map(([r,o])=>{let s=XN(e.presetIdent,i,r),l=`${Sk}p${e.presetIdent}.d${t}.${r}`;e.artifacts.variables[l]={kind:`state`,key:s,default:R_(n.settings?.[r]??o.default)},u[r]={id:i,key:s,variable:l};let d=`${a}.setting.${t}.${r}`,f=BD(RD(o),s,l,d,c);if(Object.assign(e.artifacts.actions,f.actions),Object.assign(e.artifacts.variables,f.variables),f.kind===`inline`)return e.artifacts.segments[d]={template:f.template},{kind:`segment`,name:d};e.artifacts.segments[d]={template:f.template};let p=f.list.rows.map((t,n)=>{let r=`${d}.list.${n}`;return e.artifacts.segments[r]={template:t},{kind:`segment`,name:r}});return vr(d,f.list.ref,{kind:`container`,direction:`vertical`,children:p},`drop`)});return{term:`{{ action "${s}" "${zk}" }}`,ref:{variable:_k,key:_k,member:o},body:{kind:`container`,direction:`vertical`,children:d},drafts:u}}const QN=`${xD}label:`;function $N(e){if(e.startsWith(QN)){let t=e.slice(QN.length);return t.slice(t.indexOf(`:`)+1)}return e.startsWith(`edit.`)?void 0:e}function eP(e,t,n,r){let{artifacts:i}=n,a=m_(e),o=`${QN}${a}:${e.name}`;i.segments[o]={template:`{{ "${_r(a)}" }}`,...t.palette!==void 0&&{palette:t.palette}};let s=Object.fromEntries(N_.flatMap(t=>{let n=e.settings?.[t];return n===void 0?[]:[[t,n]]}));return{...vr(o,r.ref,r.body,`drop`,JN([r.ref],`{{ ${LN(n.presetIdent)} }}`)),...Object.keys(s).length>0&&{settings:s},drafts:Object.fromEntries(N_.map(e=>[e,r.drafts[e]]))}}function tP(e,t,n,r){let{presetIdent:i,artifacts:a}=e,o=`${xD}${i}.insert.${t}`,s=`${xD}${i}.insertSeg.${t}`;a.actions[o]={persist:e.rootKey,insertSegmentFrom:UN,anchor:n,relation:r};let c=ED(o),l=DD(s,o,void 0),u=AD(l),d=kD(l,c);return a.variables[l]=wr(l,pr),a.variables[u]={kind:`state`,key:u,default:`0`},a.actions[d]=Tr(l,c),a.actions[u]={set:u,int:!0},{host:s,template:`{{ $m := menu "${o}" "✚" "✕" }}{{ if ${br({variable:l,key:l,member:c})} }}{{ $m }}{{ else }}{{ fg (${`readableOn (color "success") (bgOf) ${zm}`}) $m }}{{ end }}`}}function nP(e,t){let n=[],r=e.children.findIndex(e=>e.kind===`segment`&&!VN(e.name)),i=e=>nP(e,t);for(let[a,o]of e.children.entries()){if(o.kind===`container`){n.push(i(o));continue}let s=__(o,i);if(VN(o.name)){n.push(s);continue}let c=m_(o),l=a===r?[tP(t,String(t.posCounter.n++),c,`before`)]:[],u=String(t.posCounter.n++),d=tP(t,u,c,`after`),f=KN(t,u,c),p=t.segments[o.name],m=ZN(t,u,o,P_(p)),h=qN(f),g=qN(m.term),_={kind:`container`,direction:`horizontal`,children:[...l.map(e=>GN(e.host,e.template,t.artifacts)),{...eP(o,p,t,m),lead:h,trail:g},{...s,when:zN(t.presetIdent,`false`,o.when??`true`),lead:h,trail:g,drafts:m.drafts},GN(d.host,d.template,t.artifacts)]};n.push(e.direction===`vertical`?{kind:`container`,direction:`horizontal`,children:[_]}:_)}return{...e,children:n,...e.when!==void 0&&{when:JN(YN(n),zN(t.presetIdent,`true`,e.when))}}}function rP(e,t,n,r,i,a,o){let s=`${xD}${t}.resetLayout`,c=`${xD}${t}.customized`;return r.actions[s]={reset:n},r.segments[c]={template:`{{ action "${s}" "↺ reset layout" }}`,when:BN},{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[...i,{kind:`segment`,name:c},a]},iP(e,o)]}}function iP(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),iP(n,t)]}:{...e,children:[...e.children,t]}}function aP(e,t,n,r,i,a){let{node:o}=ov(e,t),s={presetIdent:pD(t),rootKey:ok(t),segments:e.segments,artifacts:n,posCounter:{n:0},configured:[]},c=nP(o,s);return n.variables[IN(s.presetIdent)]=RN(s.configured),rP(c,s.presetIdent,s.rootKey,n,r,i,a)}function oP(e){let t={variables:{},actions:{},segments:{}},n=jk(`${xD}help`,Vk,[wk],t);t.variables[DN]=wr(DN,pr),t.actions[DN]=Tr(DN,FN.member),t.segments[DN]={template:xr(DN,...ON),when:Tk};let r={kind:`segment`,name:DN},i=n;t.variables[MN]={kind:`input`,path:`history.sinceEdit`,type:`number`,default:0},t.actions[kN]={do:[sM,...bk]},t.segments[kN]={template:`{{ if ${PN} }}{{ action "${kN}" "✓ save" }}{{ else }}{{ action "${kN}" "✓ done" }}{{ end }}`,when:Tk},t.actions[jN]={rewind:!0},t.actions[AN]={do:[jN,...bk]},t.segments[AN]={template:`{{ action "${AN}" "↩ cancel" }}`,when:`{{ and ${br(wk)} ${NN} }}`};let a=[{kind:`segment`,name:kN},{kind:`segment`,name:AN}],o={...e.presets},s=[];for(let n of rv(e.presets)){let c=aP(e,n,t,a,r,i);s.push(c),o[n]={...av(e.presets,n),root:c}}let c=fD(t,s,e);return{...e,variables:{...c,...e.variables,...t.variables},actions:{...e.actions,...t.actions},segments:{...e.segments,...t.segments},presets:o}}function sP(e){return e.op===`remove`?`remove:${e.target}`:`insert:${e.segment}:${e.anchor}:${e.relation}`}function cP(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 lP(e,t,n){let r=g_(e,new Set(n.map(h_).filter(e=>e.includes(t)).flat()));return r===e?{seg:e}:{seg:e,id:r}}const uP=/^-?\d+$/;function dP(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 fP(e){return t=>{if(!t)return{ok:!1,reason:`${e} value is required`};if(!uP.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 pP(e,t,n){return r=>r?uP.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 mP(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=>!uP.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 hP(e){return e===`config`?`set-config`:`set-state`}function gP(e,t,n){return t.kind===`int`?fP(`menu page "${e}"`):t.kind===`range`?pP(t.min,t.max,`${n} stepper "${e}"`):dP(t.allowed,`${n} "${e}"`,hP(n))}function _P(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:mP(e,n,t)}))}function vP(e,t,n,r){let i=new Map(Object.entries(e)),a=new Map,o=new Set(t.map(e=>e.key));for(let{key:e,spec:t}of n)if(o.has(e)&&t.kind!==`allow-list`)throw Error(`${r} gate: key "${e}" is written by the daemon's own links as one of a list of values, and cannot be declared as ${t.kind===`int`?`a paged cursor (int)`:`a bounded value (range)`}. Use a distinct key.`);let s=[...t.map(({key:e,allowed:t})=>({key:e,spec:{kind:`allow-list`,allowed:t}})),...n];for(let{key:t,spec:n}of _P(s,r)){if(!t)throw Error(`${r} gate: key is required`);if(t.includes(`/`))throw Error(`${r} gate: key "${t}" contains "/" — the wire shape splits on "/" so a slash-bearing key cannot be addressed. Use a slash-free key.`);if(Object.hasOwn(e,t))throw Error(`${r} gate: key "${t}" is a built-in ${r} key and cannot be re-claimed (built-in keys: ${Object.keys(e).join(`, `)})`);i.set(t,gP(t,n,r)),n.kind===`range`&&a.set(t,{min:n.min,max:n.max})}return{validate(e,t){let n=i.get(e);return n?n(t):{ok:!1,reason:`unknown ${r} key "${e}" (have: ${[...i.keys()].join(`, `)})`}},listKeys:()=>[...i.keys()],rangeParamsFor:e=>a.get(e)??null}}function yP(e,t,n){let r=[],i=0,a=new WeakMap;return{register(n,a){let o={key:n,allowed:a};vP(e,[o],[],t),r.push(o),i++;let s=!0;return()=>{s&&(s=!1,r.splice(r.indexOf(o),1),i++)}},gateFor(o){let s=a.get(o);if(s?.epoch===i)return s.gate;let c=vP(e,r,n(o),t);return a.set(o,{epoch:i,gate:c}),c}}}const bP=yP({},`config`,DP);function xP(e,t){return bP.register(e,t)}function SP(e){return bP.gateFor(e)}function CP(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:pv(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:[sP({op:`remove`,target:e.removeSegment})]}}]:`insertSegment`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:[sP({op:`insert`,segment:e.insertSegment,anchor:e.anchor,relation:e.relation})]}}]:`insertSegmentFrom`in e?[{key:e.persist,spec:{kind:`allow-list`,allowed:pv(e.insertSegmentFrom,t).members.map(t=>sP({op:`insert`,segment:t,anchor:e.anchor,relation:e.relation}))}}]:[{key:e.persist,spec:{kind:`range`,min:e.min,max:e.max}}]:[]}function wP(e,t){let n=tk(e).get(t);return n===void 0?null:String(n)}function TP(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?uk(n.persist):null;e?.scope===`preset-root`&&t.add(ok(e.preset))}return[...t].map(e=>({key:e,spec:{kind:`allow-list`,allowed:[]}}))}function EP(e){let t=HN(e);return[...TP(e),...Object.values(e.actions).flatMap(e=>CP(e,t))]}function DP(e){return _P(EP(e),`config`)}function OP(e,t){return{globals:{...t.globals,...e.globals??{}},variables:{...t.variables,...e.variables??{}},segments:jP(t.segments,kP(t.segments,e.segments??{})),root:$_(e.root??K_,t.root),actions:{...t.actions,...e.actions??{}},styles:{...t.styles,...e.styles??{}},presets:jP(t.presets,AP(t.presets,e.presets??{})),themeDefaults:jP(t.themeDefaults,e.themeDefaults??{}),editGlobals:{...t.editGlobals,...e.editGlobals??{}},helpers:{...t.helpers,...e.helpers??{}}}}function kP(e,t){return Object.fromEntries(Object.entries(t).map(([t,n])=>[t,n.settings===void 0?n:{...n,settings:{...e[t]?.settings,...n.settings}}]))}function AP(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 jP(e,t){return{...e,...Object.fromEntries(Object.entries(t).map(([t,n])=>[t,{...e[t],...n}]))}}function MP(e,t,n,r){return n.cache===void 0?(e.issues.push({path:`${t}.cache`,message:`${r} variables must declare a cache policy (one of: ${T_.join(`, `)})`,line:Y(e.source,t.split(`.`))}),null):FP(e,`${t}.cache`,n.cache)}function NP(e){return{required:!0,json:IP(),parse:(t,n,r,i)=>MP(t,n,i,e)??void 0}}const PP={noun:`cache`,arms:{ttl:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`&&RP(n)?{ttl:n}:eO(e,t,`cache.ttl must be a duration string like "5s", "100ms", "2m", "1h"; got ${Z(n)}`)},watch_file:{json:{type:`string`,pattern:`^/`},parse:(e,t,n)=>{if(typeof n!=`string`)return eO(e,t,`cache.watch_file must be a path string, got ${Z(n)}`);let r=fO(`cache.watch_file`,n);return r===null?{watch_file:n}:eO(e,t,r)}},depends_on:{json:{type:`array`,items:{type:`string`}},parse:(e,t,n)=>Array.isArray(n)&&n.every(e=>typeof e==`string`)?{depends_on:n}:eO(e,t,`cache.depends_on must be an array of variable-name strings, got ${Z(n)}`)},key:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`&&n!==``?{key:n}:eO(e,t,`cache.key must be a non-empty template string, got ${Z(n)}`)},never:{json:{const:!0},parse:(e,t,n)=>n===!0?{never:!0}:eO(e,t,`cache.never must be the literal boolean true, got ${Z(n)}`)}}};function FP(e,t,n){return tO(e,PP,t,n)}function IP(){return yO(PP)}const LP=/^(\d+(?:\.\d+)?)(ms|s|m|h)$/;function RP(e){return LP.test(e)}function zP(e,t,n){if(n===void 0)return{};if(!qD(n))return e.issues.push({path:t,message:`${t} must be an object, got ${JD(n)}`,line:Y(e.source,t.split(`.`))}),{};let r={};for(let[i,a]of Object.entries(n)){let n=nO(e,dF,`${t}.${i}`,a);n!==null&&(r[i]=n)}return r}function BP(){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 ${JD(i)}`,line:Y(e.source,t.split(`.`))});return}return i}}}function VP(){return{required:!0,json:{enum:[...D_]},parse:(e,t,n,r)=>{let i=r.field;if(typeof i!=`string`||!D_.includes(i)){e.issues.push({path:`${t}.field`,message:`git field must be one of: ${D_.join(`, `)}, got ${JSON.stringify(i)}`,line:Y(e.source,[...t.split(`.`),`field`])});return}return i}}}function HP(){return{required:!1,json:{type:[`string`,`number`,`boolean`]},parse:(e,t,n,r)=>{let i=r.type;return UD(e,t,r,i===`number`||i===`boolean`||i===`string`?i:`string`)}}}const UP={noun:`parse`,arms:{text:{json:{const:!0},parse:(e,t,n)=>n===!0?{text:!0}:eO(e,t,`parse.text must be the literal boolean true, got ${Z(n)}`)},regex:{json:{type:`string`},parse:(e,t,n)=>typeof n==`string`?WP(e,t,n):eO(e,t,`parse.regex must be a pattern string, got ${Z(n)}`)},json:{json:{const:!0},parse:(e,t,n)=>n===!0?{json:!0}:eO(e,t,`parse.json must be the literal boolean true, got ${Z(n)}`)}}};function WP(e,t,n){let r;try{new RegExp(n),r=RegExp(`${n}|`).exec(``).length-1}catch(n){return eO(e,t,`parse.regex is not a valid regular expression: ${n.message}`)}return r>=1?{regex:n}:eO(e,t,`parse.regex must contain a capture group — its group 1 is the value; got ${JSON.stringify(n)}`)}function GP(){return{required:!1,json:yO(UP),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:Y(e.source,[...t.split(`.`),`regex`])}),r.parse===void 0?void 0:tO(e,UP,`${t}.parse`,r.parse)??void 0)}}function KP(){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)=>qD(r.parse)&&`json`in r.parse?qP(e,t,r.default):WD(e,t,r,`default`)}}function qP(e,t,n){if(n!==void 0)return JP(n)?n:eO(e,`${t}.default`,`${t}.default must be a JSON value (a json-parsed source's document), got ${Z(n)}`)??void 0}function JP(e){return e!==null&&YP(e)}function YP(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(YP);let t=Object.getPrototypeOf(e);return(t===Object.prototype||t===null)&&Object.values(e).every(YP)}default:return!1}}const XP={value:BP(),default:oO()},ZP={path:dO(),type:mO([`string`,`number`,`boolean`]),default:HP()},QP={name:dO(),default:oO()},$P={path:pO(),readMode:mO([`whole`,`first-line`]),parse:GP(),cache:NP(`file`),default:KP()},eF={command:dO(),parse:GP(),cache:NP(`shell`),default:KP()};function tF(e){return{cache:`${e}, so it takes no cache policy — delete the key`}}const nF={template:dO(),default:oO()},rF=tF(`a template variable recomputes whenever a variable it reads changes`),iF={layout:dO(),default:oO()},aF=tF(`a time variable reads the instant its render is drawn at`),oF={field:VP(),default:oO()},sF=tF(`a git variable is refreshed by the daemon's own watch on the repository`),cF={key:dO(),default:oO()},lF=`kind`;function uF(e,t,n={}){return{...rO(lF,e,t),parse:(r,i,a)=>{XD(r,n,i,a);let o=ZD(r,t,i,a);return o===null?null:{kind:e,...o}}}}const dF={tag:lF,noun:`source kind`,memberNoun:`variable`,arms:{literal:uF(`literal`,XP),input:uF(`input`,ZP),env:uF(`env`,QP),file:uF(`file`,$P),shell:uF(`shell`,eF),template:uF(`template`,nF,rF),time:uF(`time`,iF,aF),git:uF(`git`,oF,sF),state:uF(`state`,cF)}};function fF(){return vO(dF)}function pF(){return{type:`object`,additionalProperties:fF()}}const mF=new Map([[`gitTaculous`,{kind:`built-in`,to:`gitaculous`}],[`git`,{kind:`built-in`,to:`gitaculous`}],[`settings.menu`,{kind:`built-in`,to:`candybar.menu`}],[`ticket`,{kind:`plugin`,to:`plugins.lit.ticket`,source:`promptctl/links-issue-tracker`}]]);function hF(e){let t=mF.get(e);if(t===void 0)return``;switch(t.kind){case`built-in`:return` (the built-in segment "${e}" was renamed to "${t.to}" — update this reference)`;case`plugin`:return` (the built-in segment "${e}" became "${t.to}", a segment of the plugin \`cc-candybar plugin install ${t.source}\` installs — update this reference)`}}const gF=/^[A-Za-z_][A-Za-z0-9_]*$/,_F={pattern:gF.source},vF={anyOf:[{type:`boolean`},{type:`string`},{type:`integer`}]},yF={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`},step:{type:`integer`,minimum:1},atLeast:{type:`string`,..._F}}}]},default:vF}},bF=[`label`,`domain`,`default`],xF=[`min`,`max`,`step`,`atLeast`];function SF(e,t,n){e.issues.push({path:t,message:n,line:Y(e.source,t.split(`.`))})}function CF(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 SF(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 SF(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?SF(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(qD(n)){let{min:r,max:i,step:a=1,atLeast:o}=n;return Object.keys(n).filter(e=>!xF.includes(e)).length===0&&Number.isInteger(r)&&Number.isInteger(i)&&r<=i&&Number.isInteger(a)&&a>=1&&(o===void 0||typeof o==`string`)?{min:r,max:i,step:a,...o!==void 0&&{atLeast:o}}:SF(e,t,`a range domain is { min, max, step?, atLeast? } with integers min ≤ max, a whole step ≥ 1, and atLeast naming another range setting, got ${JSON.stringify(n)}`)}return SF(e,t,`domain must be "bool", a list of words, or { min, max }, got ${Z(n)}`)}function wF(e,t,n){if(!qD(n))return SF(e,t,`${t} must be { label, domain, default }, got ${JD(n)}`);for(let r of Object.keys(n))bF.includes(r)||SF(e,`${t}.${r}`,`Unknown setting key "${r}". Expected one of: ${bF.join(`, `)}`);let{label:r}=n,i=typeof r==`string`&&r.length>0&&!/[\n\r]/.test(r);i||SF(e,`${t}.label`,`a setting needs a one-line, non-empty "label" — the name its control shows, spliced into a synthesized template string — got ${Z(r)}`);let a=CF(e,`${t}.domain`,n.domain);if(!i||a===void 0)return;let o={label:r,domain:a,default:n.default};return!TF(n.default)||!L_(o,n.default)?SF(e,`${t}.default`,`default must be ${V_(o)}, got ${Z(n.default)}`):o}function TF(e){return typeof e==`boolean`||typeof e==`string`||typeof e==`number`}const EF={theme:`its default for this segment is segments.<name>.palette, and a placement sets its own with settings: { ${j_}: "<theme>" }`,effect:`a placement follows the bar's effect, or sets its own with settings: { effect: "<effect>" }`};function DF(e){return N_.includes(e)}function OF(){return{required:!1,json:{type:`object`,propertyNames:{..._F,not:{enum:[...N_]}},additionalProperties:yF},parse:(e,t,n,r)=>{let i=r[n];if(i===void 0)return;let a=`${t}.${n}`;if(!qD(i))return SF(e,a,`${a} must be an object of name → { label, domain, default }, got ${JD(i)}`);let o=Object.create(null);for(let[t,n]of Object.entries(i)){if(!gF.test(t)){SF(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(DF(t)){SF(e,`${a}.${t}`,`setting "${t}" is one every placement already has — ${EF[t]}`);continue}let r=wF(e,`${a}.${t}`,n);r!==void 0&&(o[t]=r)}return o}}}const kF=SD.map(e=>e.replace(/\./g,`\\.`)).join(`|`);function AF(){return{required:!1,json:{type:`string`,minLength:1,pattern:`^(?!${kF})[^:/]+$`},parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0)return typeof i==`string`&&i.length>0&&!/[:/]/.test(i)&&!CD(i)?i:SF(e,`${t}.${n}`,`a placement "id" must be a non-empty string without "/" or ":", outside the reserved ${SD.map(e=>`"${e}"`).join(`, `)} namespaces, got ${Z(i)}`)}}}function jF(){return{required:!1,json:{type:`object`,propertyNames:_F,additionalProperties:vF},parse:(e,t,n,r)=>{let i=r[n];if(i===void 0)return;let a=`${t}.${n}`;if(!qD(i))return SF(e,a,`a placement's "settings" must be an object of setting name → value, got ${JD(i)}`);let o=Object.create(null);for(let[t,n]of Object.entries(i))TF(n)?o[t]=n:SF(e,`${a}.${t}`,`setting "${t}" must be a boolean, a word, or a number, got ${JD(n)}`);return o}}}function MF(e){return new Set(Object.keys(e.segments).filter(e=>!CD(e)))}function NF(e,t,n){if(t===void 0)return{};if(!qD(t))return e.issues.push({path:`segments`,message:`segments must be an object, got ${JD(t)}`,line:Y(e.source,[`segments`])}),{};let r={};for(let[i,a]of Object.entries(t)){let t=YD(e,n.has(i)?zF:RF,`segments.${i}`,a);t!==null&&(r[i]=t)}return r}function PF(){return{required:!0,json:{type:`string`},parse:(e,t,n,r)=>r[n]===void 0?eO(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${hF(t.slice(9))}`)??void 0:HD(e,t,r,n)??void 0}}function FF(){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 ${Z(i)}`,line:Y(e.source,[...t.split(`.`),n])})}}}}function IF(){return{required:!1,json:pF(),parse:(e,t,n,r)=>{let i=r[n];if(i!==void 0)return zP(e,`${t}.${n}`,i)}}}const LF={template:PF(),description:oO(),group:mO(fk),width:FF(),justify:mO(H_),truncate:mO(U_),bg:oO(),fg:oO(),when:oO(),palette:uO(),vars:IF(),settings:OF(),missingData:mO(O_)},RF={noun:`segment key`,fields:LF},zF={noun:`segment key`,fields:{...LF,template:oO()}},BF=`#/definitions/LayoutNode`,VF={kind:`container`,direction:`vertical`,children:[]};function HF(e){return{required:!0,json:{const:e},parse:()=>e}}function UF(){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 ${Z(i)}`,line:Y(e.source,[`root`])}),``)}}}function WF(){return{required:!0,json:{enum:[...f_]},parse:(e,t,n,r)=>{let i=r[n];return typeof i==`string`&&f_.includes(i)?i:(e.issues.push({path:`${t}.${n}`,message:`a container "direction" must be one of: ${f_.join(`, `)} (got ${JSON.stringify(i)})`,line:Y(e.source,[`root`])}),`vertical`)}}}function GF(e){return{required:!0,json:{type:`array`,items:{$ref:BF}},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 ${JD(a)}`,line:Y(t.source,[`root`])}),[])}}}const KF={noun:`layout-node key`,fields:{kind:HF(`segment`),name:UF(),when:oO(),id:AF(),settings:jF()}},qF=()=>mO(hm),JF={noun:`layout-node key`,fields:{kind:HF(`container`),direction:WF(),children:GF(iO(()=>$F)),when:oO(),distribution:qF()}};function YF(){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 ${Z(i)}`,line:Y(e.source,[`root`])}),``)}}}const XF={noun:`layout-node key`,fields:{seg:YF(),when:oO(),id:AF(),settings:jF()}},ZF={noun:`layout-node key`,fields:{h:GF(iO(()=>$F)),when:oO(),distribution:qF()}},QF={noun:`layout-node key`,fields:{v:GF(iO(()=>$F)),when:oO(),distribution:qF()}},$F=(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:Y(e.source,[`root`])}),VF):{kind:`segment`,name:n};if(!qD(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 ${JD(n)}`,line:Y(e.source,[`root`])}),VF;if(n.kind===`container`)return YD(e,JF,t,n)??VF;if(n.kind===`segment`)return YD(e,KF,t,n)??VF;if(n.kind===`cells`)return e.issues.push({path:t,message:`kind: "cells" is no longer supported — use the h-arm spelling instead:
|
|
170
170
|
Old: { kind: "cells", segments: ["seg1", "seg2"] }
|
|
171
|
-
New: { h: ["seg1", "seg2"] }`,line:Y(e.source,[`root`])}),BF;if(n.kind===`group`){let r=JD(e,aI,t,n);return r===null?BF:(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}),sI(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:Y(e.source,[`root`])}),BF}if(a){let r=JD(e,YF,t,n);return r===null?BF:{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=JD(e,XF,t,n);return r===null?BF:{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=JD(e,ZF,t,n);return r===null?BF:{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:Y(e.source,[`root`])}),BF};function $F(){return{required:!0,json:{type:`object`,propertyNames:{pattern:U_.source},additionalProperties:{$ref:zF}},parse:(e,t,n,r)=>{let i=r[n];if(!KD(i))return e.issues.push({path:`${t}.${n}`,message:`"rows" must be an object of row name → layout node, got ${qD(i)}`,line:Y(e.source,[...t.split(`.`),n])}),{};let a={};for(let[r,o]of Object.entries(i)){if(!U_.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:Y(e.source,[...t.split(`.`),n,r])});continue}a[r]=QF(e,`${t}.${n}.${r}`,o)}return a}}}const eI={noun:`root key`,fields:{rows:$F(),when:aO(),distribution:KF()}};function tI(e,t,n){return KD(n)&&`rows`in n?JD(e,eI,t,n)??{rows:{}}:QF(e,t,n)}function nI(){return{required:!0,json:{type:`string`,pattern:U_.source},parse:(e,t,n,r)=>{let i=r[n];if(typeof i!=`string`||!U_.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 "${pr}", got ${Z(i)}`,line:Y(e.source,[`root`])});return}return i}}}function rI(){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 ${Z(i)}`,line:Y(e.source,[`root`])});return}return i}}}}function iI(){return{required:!0,json:{type:`string`,pattern:`^[^\\n\\r]*$`},parse:(e,t,n,r)=>{let i=VD(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:Y(e.source,[...t.split(`.`),n])});return}return i}}}}const aI={noun:`layout-node key`,fields:{kind:VF(`group`),name:nI(),label:iI(),open:oO(),direction:pO(d_),key:rI(),bg:aO(),fg:aO(),when:aO(),distribution:KF(),children:WF(rO(()=>QF))}};function oI(e){return e.key??`groups.`+e.name}function sI(e){let t=vD+e.name;return vr(t,{variable:t,key:oI(e),member:e.name},{kind:`container`,direction:e.direction??`vertical`,children:e.children,...e.distribution!==void 0&&{distribution:e.distribution}},`drop`,e.when)}function cI(e,t,n){e.issues.push({path:t,message:n,line:Y(e.source,[`root`])})}function lI(e,t){wD(e,t,vD,`group nodes`);let n=e.groups;if(n.length===0)return;let r=new Set;for(let t of n)r.has(t.name)&&cI(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}.`)&&oI(t)===oI(r)&&cI(e,t.path,`group "${t.name}" shares key "${oI(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=oI(t);if(i.has(n)||i.set(n,pr),t.open===!0){let r=i.get(n);r!==`closed`&&cI(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=vD+e.name,r=oI(e),c=n.filter(t=>t!==e&&e.path.startsWith(t.path+`.`)).length,l=` `.repeat(c);a[t]=wr(r,i.get(r)),o[t]=Tr(r,e.name),s[t]={template:xr(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}}const uI=`menu`,dI=`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`,fI=e=>e.kind===`call`&&e.name===`dict`,pI=e=>e.kind===`literal`&&typeof e.value!=`object`,mI=e=>hr(``,e,2)===void 0;function hI(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&&fI(i)?i:void 0,o=a===void 0?r:r.slice(0,-1);if(o.some(fI))return t(`whose options (dict …) is not its last argument — ${dI}`);if(i!==void 0&&a===void 0&&!pI(i)&&mI(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=hr(`whose trigger`,o.length,2);if(s!==void 0)return t(`${s} — ${dI}`);let c=a===void 0?{}:MS(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=ND(c)}catch(e){return t(`with invalid options — ${e.message}`)}let u=l.key;if(u!==void 0){let e=CD(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 "${DD(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 gI(e){let t=Vb({fromString:e=>e});try{return t.parse(e).referencedCalls().filter(e=>e.name===uI).map(hI)}catch{return`parse-failed`}}function _I(e){let t=Vb({fromString:e=>e});try{return t.parse(e).referencedFunctions().has(uI)}catch{return!1}}function vI(e,t,n){e.issues.push({path:t,message:n,line:Y(e.source,[`root`])})}function yI(e,t){wD(e,t,yD,`{{ menu }} helpers`);for(let[n,r]of Object.entries(t.helpers??{}))_I(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:Y(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`&&_I(i)&&vI(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 __(X_(t.root)))typeof n.when==`string`&&_I(n.when)&&vI(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||!_I(r))continue;let n=gI(r);if(n!==`parse-failed`)for(let r of n){let n=r.kind===`issue`?r.message:bI(r.apply);n!==void 0&&vI(e,`segments.${t}`,`segment "${t}" has a {{ menu }} ${n}.`)}}}function bI(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(TD(e)===`closed`)return`whose apply action is named "${pr}", which collides with the menu's closed-state sentinel and leaves it unopenable. Rename the action`}function xI(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 nv(e.presets)){let a=new Map,s=new Map;for(let c of __(av(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,gI(t.template));let l=i.get(c.name);if(l===`parse-failed`)continue;let u=p_(c);for(let[e,t]of l.entries()){if(t.kind===`issue`||bI(t.apply)!==void 0)continue;let{apply:i,options:l}=t,d=TD(i),f=ED(u,i,l.key),p=kD(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=OD(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]=Tr(f,d),n[f]=wr(f,pr),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 SI=[`set`,`persist`,`copy`,`open`,`reset`,`undo`,`redo`,`back`,`rewind`,`save`,`preset`,`themeDefault`,`doctor`,`ceiling`,`slash`,`do`];function CI(e){return e.ceiling===`set`?[`set`,e.to]:[`clear`]}function wI(e){return`from`in e||`int`in e||`insertSegmentFrom`in e}function TI(e,t){if(t===void 0)return{};if(!KD(t))return Q(e,`actions`,`actions must be an object, got ${qD(t)}`),{};let n=Object.create(null);for(let[r,i]of Object.entries(t)){let t=EI(e,`actions.${r}`,i);t!==null&&(n[r]=t)}return n}function Q(e,t,n){e.issues.push({path:t,message:n,line:Y(e.source,t.split(`.`))})}function EI(e,t,n){if(!KD(n))return Q(e,t,`${t} must be an action object, got ${qD(n)}`),null;if(`persistWhen`in n)return Q(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=SI.filter(e=>e in n);return r.length===1?DI[r[0]](e,t,n):(Q(e,t,`action must declare exactly one of: ${SI.join(`, `)}${r.length>1?` (found: ${r.join(`, `)})`:``}`),null)}const DI={set:(e,t,n)=>sL(e,t,n,`set`,rL),persist:(e,t,n)=>sL(e,t,n,`persist`,iL),copy:OI(`copy`),open:OI(`open`),reset:kI,undo:jI(`undo`),redo:jI(`redo`),back:jI(`back`),rewind:jI(`rewind`),save:jI(`save`),preset:MI,themeDefault:NI,doctor:FI,ceiling:II,slash:LI,do:RI};function OI(e){return(t,n,r)=>{for(let i of Object.keys(r))i!==e&&Q(t,`${n}.${i}`,`Unknown key "${i}" on a ${e} action. Expected only: ${e}`);let i=VD(t,n,r,e);return i===null?null:{[e]:i}}}function kI(e,t,n){for(let r of Object.keys(n))r!==`reset`&&Q(e,`${t}.${r}`,`Unknown key "${r}" on a reset action. Expected only: reset`);let r=zI(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 AI={undo:`it steps the session's settings history`,redo:`it steps the session's settings history`,back:`it steps the session's navigation history`,rewind:`it steps the session's settings history back to where edit mode opened`,save:`it saves the session's unsaved settings`};function jI(e){return(t,n,r)=>{for(let i of Object.keys(r))i!==e&&Q(t,`${n}.${i}`,`Unknown key "${i}" on a ${e} action. Expected only: ${e}`);return r[e]===!0?{[e]:!0}:(Q(t,`${n}.${e}`,`${e} must be the literal true (it takes no key — ${AI[e]}), got ${Z(r[e])}`),null)}}function MI(e,t,n){let r=n.preset,i=r===`save`?[`preset`]:[`preset`,`name`];for(let r of Object.keys(n))i.includes(r)||Q(e,`${t}.${r}`,`Unknown key "${r}" on a preset action. Expected only: ${i.join(`, `)}`);if(r!==`save`&&r!==`delete`)return Q(e,`${t}.preset`,`preset must be "save" or "delete", got ${Z(r)}`),null;if(r===`save`)return{preset:`save`};let a=VD(e,t,n,`name`);return a===null?null:{preset:`delete`,name:a}}function NI(e,t,n){for(let r of Object.keys(n))r!==`themeDefault`&&Q(e,`${t}.${r}`,`Unknown key "${r}" on a themeDefault action. Expected only: themeDefault`);return n.themeDefault===`save`?{themeDefault:`save`}:(Q(e,`${t}.themeDefault`,`themeDefault must be "save" (it saves the look the session draws as the active theme's default), got ${Z(n.themeDefault)}`),null)}const PI={run:[`doctor`],fix:[`doctor`,`check`],mark:[`doctor`,`check`,`mark`]};function FI(e,t,n){let r=n.doctor,i=typeof r==`string`&&Object.hasOwn(PI,r),a=i?PI[r]:[...new Set(Object.values(PI).flat())];for(let r of Object.keys(n))a.includes(r)||Q(e,`${t}.${r}`,`Unknown key "${r}" on a doctor action. Expected only: ${a.join(`, `)}`);if(!i)return Q(e,`${t}.doctor`,`doctor must be ${Object.keys(PI).map(e=>`"${e}"`).join(`, `)}, got ${Z(r)}`),null;if(r===`run`)return{doctor:`run`};let o=n.check,s=r===`mark`?sj:oj;if(typeof o!=`string`||!s.some(e=>e.name===o))return Q(e,`${t}.check`,`doctor ${r} must name a check (have: ${s.map(e=>e.name).join(`, `)}), got ${Z(o)}`),null;if(r===`fix`)return{doctor:`fix`,check:o};let c=n.mark;return bA.includes(c)?{doctor:`mark`,check:o,mark:c}:(Q(e,`${t}.mark`,`doctor mark must be ${bA.map(e=>`"${e}"`).join(` or `)}, got ${Z(c)}`),null)}function II(e,t,n){let r=n.ceiling,i=r===`clear`?[`ceiling`]:[`ceiling`,`to`];for(let r of Object.keys(n))i.includes(r)||Q(e,`${t}.${r}`,`Unknown key "${r}" on a ceiling action. Expected only: ${i.join(`, `)}`);if(r===`clear`)return{ceiling:`clear`};if(r!==`set`)return Q(e,`${t}.ceiling`,`ceiling must be "set" or "clear", got ${Z(r)}`),null;let a=n.to;return typeof a!=`string`||a.trim()===``?(Q(e,`${t}.to`,`ceiling set needs \`to\`: a memento ceiling value such as "+100_000", "400000" or "off", got ${Z(a)}`),null):{ceiling:`set`,to:a}}function LI(e,t,n){for(let r of Object.keys(n))r!==`slash`&&Q(e,`${t}.${r}`,`Unknown key "${r}" on a slash action. Expected only: slash`);let r=Nj(n.slash);return r.kind===`refused`?(Q(e,`${t}.slash`,r.reason),null):{slash:r.line}}function RI(e,t,n){for(let r of Object.keys(n))r!==`do`&&Q(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===``)?(Q(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 ${Z(r)}`),null):{do:r}}function zI(e,t,n,r,i,a){let o=VD(e,t,r,n);if(o===null)return null;let s=`${t}.${n}`;return o===``?(Q(e,s,i),null):o.includes(`/`)?(Q(e,s,a(o)),null):o}const BI={set:`the SessionState key to write`,persist:`the config globals field to write`};function VI(e,t,n,r){let i=BI[r],a=zI(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 HI(e){return e===`set`?`set-state`:`set-config`}const UI={to:cL(`set`)},WI={to:cL(`persist`)},GI={from:lL(`set`)},KI={from:lL(`persist`)},qI={min:mL(),max:mL(),by:mL()},JI={int:dL()},YI={cycle:uL(`set`)},XI={cycle:uL(`persist`)},ZI={removeSegment:fL(`removeSegment`)},QI={insertSegment:fL(`insertSegment`),anchor:fL(`anchor`),relation:pL()},$I={insertSegmentFrom:lL(`persist`),anchor:fL(`anchor`),relation:pL()},eL={ok:e=>e.min<e.max,issue:e=>({field:`min`,message:`min (${e.min}) must be less than max (${e.max})`})},tL={ok:e=>e.by!==0,issue:()=>({field:`by`,message:`by must be a non-zero integer (the per-click increment; negative steps down)`})};function nL(e,t,n=[],r){let i=Object.keys(t),a=r??i,o=[e],s=(e,n,r)=>XD(e,t,n,r),c=mO(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?iO(s,...n):s}}const rL=[nL(`set`,UI),nL(`set`,GI),nL(`set`,qI,[eL,tL]),nL(`set`,JI),nL(`set`,YI)],iL=[nL(`persist`,WI),nL(`persist`,KI),nL(`persist`,qI,[eL,tL]),nL(`persist`,XI),nL(`persist`,ZI),nL(`persist`,QI,[],[`insertSegment`]),nL(`persist`,$I,[],[`insertSegmentFrom`])];function aL(e){let t=[`"to" (a literal value)`,`"from" (an option domain — a registered domain name like "themes"/"endcaps"/"styles", 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 oL(e){let t=aL(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 sL(e,t,n,r,i){let a=VI(e,t,n,r),o=i.filter(e=>e.detect.some(e=>e in n));if(o.length!==1)return Q(e,t,`${oL(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)||Q(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 cL(e){let t=HI(e);return{required:!0,json:{type:`string`},parse:(n,r,i,a)=>zI(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 lL(e){let t=HI(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===``){Q(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){Q(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===``)){Q(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){Q(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){Q(n,s,`${i} array members must be unique — a duplicated value would render the same picker option twice`);return}return r}Q(n,s,`${i} must be a domain name (a string) or an inline domain (an array of strings), got ${Z(o)}`)}}}function uL(e){let t=HI(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`)){Q(n,s,`cycle must be an array of strings (the enumerated values a click steps through), got ${qD(o)}`);return}let c=o;if(c.length<2){Q(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){Q(n,s,`cycle members must be non-empty — an empty value cannot be delivered on the ${t} wire`);return}if(u.length>0){Q(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){Q(n,s,`cycle members must be unique — the successor of a duplicated member is ambiguous`);return}return c}}}function dL(){return{required:!0,json:{const:!0},parse:(e,t,n,r)=>{if(r[n]!==!0){Q(e,`${t}.${n}`,`int must be the literal true (declares the key an unbounded integer cursor — a paged picker's page key), got ${Z(r[n])}`);return}return!0}}}function fL(e){return{required:!0,json:{type:`string`},parse:(t,n,r,i)=>{let a=VD(t,n,i,r);if(a===null)return;let o=`${n}.${r}`;if(a===``){Q(t,o,`${e} must be non-empty (a segment name)`);return}if(a.includes(`/`)||a.includes(`:`)){Q(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 pL(){return{required:!0,json:{enum:[`before`,`after`]},parse:(e,t,n,r)=>{let i=r[n];if(i!==`before`&&i!==`after`){Q(e,`${t}.${n}`,`relation must be "before" or "after", got ${Z(i)}`);return}return i}}}function mL(){return{required:!0,json:{type:`integer`},parse:(e,t,n,r)=>{let i=r[n];if(typeof i!=`number`||!Number.isInteger(i)){Q(e,`${t}.${n}`,`${n} must be an integer, got ${Z(i)}`);return}return i}}}function hL(e,t,n){return`${e}: "${t}" is an endcaps shape, not a style — endcaps were renamed from "style" to "endcaps"; write ${n}: "${t}"`}const gL={noun:`style key`,fields:{hueShift:cO(),chromaScale:cO({min:0}),lightnessScale:cO(),lightnessShift:cO()}};function _L(e,t){if(!KD(t))return e.issues.push({path:`styles`,message:`styles must be an object mapping style names to adaptation objects, got ${qD(t)}`,line:Y(e.source,[`styles`])}),{};let n={};for(let[r,i]of Object.entries(t)){if(r===``||r.includes(`/`)){e.issues.push({path:`styles.${r}`,message:`style name ${JSON.stringify(r)} must be non-empty and slash-free — a style picker writes the name on the set-state wire, which rejects empty values and splits on "/"`,line:Y(e.source,[`styles`,r])});continue}if(zh(r)){e.issues.push({path:`styles.${r}`,message:hL(`styles.${r}`,r,`globals.endcaps`),line:Y(e.source,[`styles`,r])});continue}let t=JD(e,gL,`styles.${r}`,i);t!==null&&(n[r]={...Js,...t})}return n}const vL={noun:`preset key`,fields:{root:{required:!1,json:{$ref:`#/definitions/RootFragment`},parse:(e,t,n,r)=>r[n]===void 0?void 0:tI(e,`${t}.${n}`,r[n])},globals:{required:!1,json:qO(),parse:(e,t,n,r)=>r[n]===void 0?void 0:KO(e,`${t}.${n}`,r[n])}}};function yL(e,t){if(!KD(t))return e.issues.push({path:`presets`,message:`presets must be an object mapping preset names to config fragments, got ${qD(t)}`,line:Y(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:Y(e.source,[`presets`,r])});continue}let t=JD(e,vL,`presets.${r}`,i);t!==null&&(n[r]=t)}return n}function bL(e,t){if(t===void 0)return{};if(!KD(t))return e.issues.push({path:`helpers`,message:`helpers must be an object, got ${qD(t)}`,line:Y(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 ${Z(i)}`,line:Y(e.source,[`helpers`,r])});continue}n[r]=i}return n}const xL=new Map([[`session.budget.amount`,{segment:`session`,setting:`budget`}],[`session.budget.warningThreshold`,{segment:`session`,setting:`warnAt`}],[`today.budget.amount`,{segment:`today`,setting:`budget`}],[`today.budget.warningThreshold`,{segment:`today`,setting:`warnAt`}],[`block.budget.heatThreshold`,{segment:`block`,setting:`warnAt`}],[`block.budget.warningThreshold`,{segment:`block`,setting:`errorAt`}],[`weekly.budget.heatThreshold`,{segment:`weekly`,setting:`warnAt`}],[`weekly.budget.warningThreshold`,{segment:`weekly`,setting:`errorAt`}],[`burn.eta.errorMinutes`,{segment:`burnrate`,setting:`errorWithin`}],[`burn.eta.warnMinutes`,{segment:`burnrate`,setting:`warnWithin`}]]);function SL(e){return`it became the "${e.setting}" setting of each "${e.segment}" placement — set it on the placement where a row places "${e.segment}" ({ seg: "${e.segment}", settings: { ${e.setting}: <value> } }), or redeclare segments.${e.segment}.settings.${e.setting} with the default every placement should start from`}function CL(e){let t=xL.get(e);return t===void 0?void 0:`variables.${e} is no longer read: ${SL(t)}`}function wL(e){let t=xL.get(e);return t===void 0?``:` — ".${e}" is no longer a variable: ${SL(t)}; a "${t.segment}" template reads it as ".settings.${t.setting}"`}function TL(e,t){let n=new Map;for(let e of Object.keys(t)){let t=fD(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:Y(e.source,[`presets`])})}function EL(e,t,n){let r=[[[`globals`],t.globals.style,`globals.endcaps`],[[`editGlobals`],t.editGlobals.style,`editGlobals.endcaps`],...Object.entries(t.presets).map(([e,t])=>[[`presets`,e,`globals`],t.globals?.style,`presets.${e}.globals.endcaps`]),...Object.entries(t.themeDefaults).map(([e,t])=>[[`themeDefaults`,e],t.style,`globals.endcaps`])];for(let[n,i,a]of r){if(i===void 0||xh(i)||Object.prototype.hasOwnProperty.call(t.styles,i))continue;let r=`${n.join(`.`)}.style`;e.issues.push({path:r,message:zh(i)?hL(r,i,a):`${r} "${i}" does not match any declared style (have: ${Object.keys(t.styles).join(`, `)})`,line:Y(e.source,[...n,`style`])})}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:Y(e.source,[`globals`,`preset`])}),TL(e,t.presets);let i=Fv(t);for(let t of i.names)t!==`settings`&&!t.startsWith(kL)||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:Y(e.source,[`variables`,t])});let a=(t,n,r)=>{fN(t)>1&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${Gj}" ${fN(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}),pN(t)&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${Gj}" 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 shade, 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 __(t)){if(e.kind!==`segment`)continue;let t=p_(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=h_(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||f_[e.direction]===`cell`))}let s=(n,r)=>{for(let[a,o]of Z_(n,r)){let n=Y(e.source,o.split(`.`));if(a.when!==void 0&&(VL(e,`${o}.when`,a.when,i,{line:n}),BL(e,`${o}.when`,a.when,n)),a.kind===`segment`){if(lN(a.name)){(a.id!==void 0||a.settings!==void 0)&&e.issues.push({path:o,message:`${r} gives the global settings menu anchor "${Gj}" an id or settings — the anchor only marks where the menu goes, so place it as the bare name "${Gj}"`,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${mF(a.name)}`,line:n}),LL(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`,Y_(t.root)]]);for(let e of nv(t.presets)){let{node:n,path:r}=av(t,e);c.set(r,n)}for(let[t,n]of c)a(n,t,Y(e.source,t.split(`.`)));JL(e,t,i,()=>!0)}const DL=[`removeSegment`,`insertSegment`,`insertSegmentFrom`];function OL(e,t,n,r,i,a,o){let s=`actions.${n}.${r}`,c=Y(e.source,[`actions`,n,r]);if(!nv(t.presets).includes(a)){e.issues.push({path:s,message:`actions.${n}: "${i}" names preset "${a}" which is not declared (have: ${nv(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(`, `)})${mF(i)}`,line:c})},p=new Set(m_(av(t,a).node)),m=(r,i)=>{!pF.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${mF(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 kL=`settings.`;function AL(e,t){return{...e,names:new Set([...e.names,...Object.keys(t).map(e=>kL+e)])}}function jL(e,t,n){let r=e=>`segments.${t}.settings.${e}`,i=(n,i)=>{e.issues.push({path:r(n),message:`${r(n)}: ${i}`,line:Y(e.source,[`segments`,t,`settings`,n])})},a=PL(n);for(let{setting:e,message:t}of a)i(e,t);if(!(a.length>0))for(let{setting:e,message:t}of F_(n,NL(n)))i(e,`the defaults do not stand together: ${t}`)}function ML(e){return PL(e).length>0||F_(e,NL(e)).length>0}function NL(e){return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,t.default]))}function PL(e){let t=t=>P_(FL(e,t))?.atLeast;return Object.keys(e).flatMap(n=>{let r=t(n);if(r===void 0)return[];if(r===n||P_(FL(e,r))===void 0)return[{setting:n,message:`atLeast "${r}" must name another range setting of this segment (its range settings: ${IL(e,n).join(`, `)||`none`})`}];let i=[n];for(let e=r;e!==void 0;e=t(e)){if(e===n)return i.every(e=>n<=e)?[{setting:n,message:`atLeast closes a cycle (${[...i,n].join(` ≥ `)}) — every setting on it could only ever equal the rest`}]:[];if(i.includes(e))return[];i.push(e)}return[]})}function FL(e,t){return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0}function IL(e,t){return Object.entries(e).filter(([e,n])=>e!==t&&P_(n)!==void 0).map(([e])=>e)}function LL(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=N_(a),s=`${r}: placement "${p_(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(`, `)})`:I_(c,a)?void 0:`sets "${t}" to ${JSON.stringify(a)}${c.domain===`theme`?fh(a):``}, but it must be ${B_(c)}`;l!==void 0&&e.issues.push({path:r,message:`${s} ${l}`,line:i})}let c=Object.fromEntries(Object.entries(o).map(([e,t])=>[e,n.settings?.[e]??t.default]));if(!(!Object.entries(c).every(([e,t])=>I_(o[e],t))||ML(o)))for(let{message:t}of F_(o,c))e.issues.push({path:r,message:`${s}: ${t}`,line:i})}function RL(e,t,n,r,i){n.kind===`template`&&VL(e,`${t}.template`,n.template,r,{segCtx:i}),T_(n)&&`key`in n.cache&&VL(e,`${t}.cache.key`,n.cache.key,r,{segCtx:i})}function zL(e,t,n,r,i){if(!(!T_(n)||!(`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:Y(e.source,[...t.split(`.`),`cache`,`depends_on`])})}}function BL(e,t,n,r){try{mk.parse(n)}catch(n){e.issues.push({path:t,message:`Template parse error in ${t}: ${n.message}`,line:r})}}function VL(e,t,n,r,i){for(let[a,o]of Dv(n,r.helpers)){if(Pv(a,r))continue;if(a.startsWith(kL)){let n=o===null?``:` through helper "${o}"`,r=a.slice(9),s=i?.segCtx===void 0||i.settings===void 0?`Template reads ".${a}"${n}, but only a segment's own templates have settings — call it from a segment that declares "${r}"`:`Template reads ".${a}"${n}, but segment "${i.segCtx}" has no setting "${r}" (it has: ${Object.keys(i.settings).join(`, `)}) — declare it under segments.${i.segCtx}.settings`;e.issues.push({path:t,message:s,line:i?.line??Y(e.source,t.split(`.`))});continue}if(o!==null){HL(e,o,`Template references unknown variable ".${a}"${wL(a)}`);continue}let n=i?.segCtx===void 0?void 0:`${i.segCtx}.${a}`,s=n!==void 0&&Pv(n,r)?` (segment-local vars are namespaced — write ".${n}")`:wL(a);e.issues.push({path:t,message:`Template references unknown variable ".${a}"${s}`,line:i?.line??Y(e.source,t.split(`.`))})}}function HL(e,t,n){let r=`helpers.${t}`;e.issues.some(e=>e.path===r&&e.message===n)||e.issues.push({path:r,message:n,line:Y(e.source,[`helpers`,t])})}function UL(e,t,n,r,i){let a=n.set,o=jO(io[r].configKey),s=`${a} takes ${ID(o,i)}`;if(`min`in n&&(o===`bool`||!(`min`in o))){e.issues.push({path:`actions.${t}.min`,message:`actions.${t}: a stepper writes the integers from ${n.min} to ${n.max}, and ${a} is not an integer range; ${s}`,line:Y(e.source,[`actions`,t,`min`])});return}let c=KL(n,i);if(c===GL){e.issues.push({path:`actions.${t}.int`,message:`actions.${t}.int: an int cursor writes whatever integer the template binds, and a click outside the ${a} domain would change nothing; ${s}`,line:Y(e.source,[`actions`,t,`int`])});return}let l=c.filter(e=>!FD(o,e.value,i));if(l.length!==0){if(a===io.style.sessionKey&&(`from`in n&&n.from===`endcaps`||c.every(e=>zh(e.value)))){let r=io.endcaps.sessionKey;e.issues.push(`to`in n?{path:`actions.${t}.to`,message:hL(`actions.${t}.to`,n.to,`set: "${r}", to`),line:Y(e.source,[`actions`,t,`to`])}:{path:`actions.${t}.set`,message:`actions.${t}.set: "${a}" here writes only endcaps shapes, not styles — endcaps were renamed from "style" to "endcaps"; write set: "${r}"`,line:Y(e.source,[`actions`,t,`set`])});return}for(let n of new Set(l.map(e=>e.field))){let r=l.filter(e=>e.field===n).map(e=>JSON.stringify(e.value)),i=r.length<=WL?r.join(`, `):`${r.slice(0,WL).join(`, `)} and ${r.length-WL} more`,o=`actions.${t}.${n}`;e.issues.push({path:o,message:`${o}: ${i} ${r.length===1?`is`:`are`} outside the ${a} domain — a click would write it and nothing would change; ${s}`,line:Y(e.source,[`actions`,t,n])})}}}const WL=3,GL=Symbol(`any integer`);function KL(e,t){return`to`in e?[{field:`to`,value:e.to}]:`cycle`in e?e.cycle.map(e=>({field:`cycle`,value:e})):`from`in e?fv(e.from,t).members.map(e=>({field:`from`,value:e})):`min`in e?[{field:`min`,value:String(e.min)},{field:`max`,value:String(e.max)}]:GL}function qL(e,t){return Object.entries(e).filter(([e])=>t(e))}function JL(e,t,n,r){let i=VN(t),a=dv(i);for(let[n,o]of qL(t.actions,r)){let[t,r]=`from`in o?[`from`,o.from]:`insertSegmentFrom`in o?[`insertSegmentFrom`,o.insertSegmentFrom]:[null,null];if(t!==null&&typeof r==`string`&&!a.includes(r)){e.issues.push({path:`actions.${n}.${t}`,message:`actions.${n} ${t}: references ${mv(r,i)}`,line:Y(e.source,[`actions`,n,t])});continue}if(!(`set`in o))continue;so.has(o.set)&&e.issues.push({path:`actions.${n}.set`,message:`actions.${n} sets "${o.set}", which has no session pick — globals.${o.set} is set in the config file only, so a click would change nothing; write it with { persist: "${o.set}", … } instead`,line:Y(e.source,[`actions`,n,`set`])});let s=fo.get(o.set);s!==void 0&&UL(e,n,o,s,i)}for(let[n,i]of qL(t.actions,r))`do`in i&&i.do.forEach((r,a)=>{let o=Object.prototype.hasOwnProperty.call(t.actions,r)?t.actions[r]:void 0,s=o===void 0?`references unknown action "${r}"`:`do`in o?`"${r}" is itself a do action — list its members here instead`:i.do.indexOf(r)===a?a>0&&wI(o)?`"${r}" 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:`"${r}" 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:Y(e.source,[`actions`,n,`do`])})});for(let[n,i]of qL(t.actions,r)){let r=`persist`in i?i.persist:`reset`in i?i.reset:null;if(r===null)continue;let a=`persist`in i?`persist`:`reset`,o=lk(r);if(o===null){let t=ZO(r);e.issues.push({path:`actions.${n}.${a}`,message:t===void 0?`actions.${n}: "${r}" is not a config globals field (have: ${QO().join(`, `)}), a "segments.<name>.palette" target, a "presets.<name>.globals.<field>" target, a "themeDefaults.<theme>.<shade|variation|style>" target, or a "presets.<name>.root" target`:`actions.${n}: the globals field "${r}" was removed: ${t}`,line:Y(e.source,[`actions`,n,a])});continue}let s=DL.filter(e=>e in i);if(o.scope!==`preset-root`&&s.length>0){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${r}" is not a "presets.<name>.root" target — ${s.map(e=>`"${e}"`).join(`/`)} is a tree op and applies only to one`,line:Y(e.source,[`actions`,n,a])});continue}if(o.scope===`preset-root`){OL(e,t,n,a,r,o.preset,i);continue}if(o.scope===`preset-globals`&&!nv(t.presets).includes(o.preset)){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${r}" names preset "${o.preset}" which is not declared (have: ${nv(t.presets).join(`, `)})`,line:Y(e.source,[`actions`,n,a])});continue}if(o.scope===`theme-default`&&!e.allowedPalettes.has(o.theme)){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${r}" names theme "${o.theme}" which is not installed${fh(o.theme)} (have: ${[...e.allowedPalettes].sort().join(`, `)})`,line:Y(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}: "${r}" names segment "${o.segment}" which is not declared (have segments: ${Object.keys(t.segments).join(`, `)})${mF(o.segment)}`,line:Y(e.source,[`actions`,n,a])});continue}`min`in i&&e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${r}" is a segment palette target and cannot use a bounded stepper (min/max/by) — use "to", "from", or "cycle" instead`,line:Y(e.source,[`actions`,n,a])})}}for(let[i,a]of qL(t.variables,r)){RL(e,`variables.${i}`,a,n);let t=CL(i);t!==void 0&&e.issues.push({path:`variables.${i}`,message:t,line:Y(e.source,[`variables`,i])})}for(let[i,a]of qL(t.segments,r)){if(a.vars)for(let[t,r]of Object.entries(a.vars))RL(e,`segments.${i}.vars.${t}`,r,n,i);let r=N_(a);jL(e,i,r);let o=AL(n,r);for(let n of[`template`,`bg`,`fg`,`when`]){let s=a[n];if(typeof s==`string`){VL(e,`segments.${i}.${n}`,s,o,{segCtx:i,settings:r});for(let{name:r,site:a,via:o}of jv(s,t.helpers)){if(Object.prototype.hasOwnProperty.call(t.actions,r))continue;let s=a===`options`?` (in a picker, menu, carousel, swatch, swatches or themePreview)`:``;if(o!==null){HL(e,o,`Template references unknown action "${r}"${s}`);continue}e.issues.push({path:`segments.${i}.${n}`,message:`${n} references unknown action "${r}"${s}`,line:Y(e.source,[`segments`,i,n])})}}}}for(let[i,a]of qL(t.variables,r))zL(e,`variables.${i}`,a,n);for(let[i,a]of qL(t.segments,r))if(a.vars)for(let[t,r]of Object.entries(a.vars))zL(e,`segments.${i}.vars.${t}`,r,n,i)}function YL(e,t,n=()=>!0){let{graph:r,nodeInfo:i}=XL(t),a=new Map,o=[];for(let e of r.keys())a.set(e,0);for(let e of r.keys())if(!(!n(e)||a.get(e)!==0)&&s(e))return;function s(t){a.set(t,1),o.push(t);for(let c of r.get(t)??[]){if(!n(c))continue;let t=a.get(c);if(t===1){let t=o.indexOf(c),n=[...o.slice(t),c],r=n[0],a=i.get(r);return e.issues.push({path:a?.declarationPath??`variables.${r}`,message:`Dependency cycle: ${n.join(` → `)}`,line:Y(e.source,a?.linePathParts??[`variables`,r])}),!0}if(t===0&&s(c))return!0}return a.set(t,2),o.pop(),!1}}function XL(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 Dv(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),T_(n)&&(`key`in n.cache&&i(e,n.cache.key),`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}}function ZL(e){return e===`~`||e.startsWith(`~/`)||e.startsWith(`~\\`)?w.homedir()+e.slice(1):e}function QL(e,t){return v.resolve(e,ZL(t))}function $L(e,t){return typeof t==`string`&&t!==``?QL(e,t):void 0}function eR(e){return`plugin ${e.path} was not loaded: ${e.reason}`}const tR=new Set([`data`,`segments`,`helpers`,`actions`]),nR=`plugin.json5`,rR=/^[a-z][a-z0-9_]*$/;function iR(e){let t=v.basename(v.dirname(e));return rR.test(t)?t:void 0}const aR=`plugins.`;function oR(e){return`${aR}${e}.data`}function sR(e){try{return{ok:!0,value:e()}}catch(e){return{ok:!1,reason:cR(e)}}}function cR(e){return e instanceof pD?e.issues.map(e=>e.path===``||e.message.includes(e.path)?e.message:`${e.path}: ${e.message}`).join(`; `):e instanceof Error?e.message:String(e)}function lR(e,t){return e.map(e=>QL(v.dirname(t),e))}function uR(e,t,n,r){let i=new Map;return e.reduce((e,n)=>{let a=iR(n),o=(t,r)=>{let i=new Map(e.rendering);return a!==void 0&&r!==e.config&&i.delete(a),{...e,config:r,rendering:i,dropped:[...e.dropped,{path:n,plugin:a,reason:t}]}};if(v.basename(n)!==`plugin.json5`){let t=`a plugin is a folder holding its ${nR}, and the folder's name is the plugin's: move this file to <dir>/<name>/${nR} and list that`;return o(t,a===void 0?e.config:pR(fR(e.config,a),a,{path:n,plugin:a,reason:t}))}if(a===void 0)return o(`its folder "${v.basename(v.dirname(n))}" is not a plugin name (one matching ${rR}: it prefixes every name the plugin declares)`,e.config);let c=i.get(a);if(c!==void 0)return o(`plugin "${a}" is already listed, from ${c}`,e.config);i.set(a,n);let l=fR(e.config,a),u=sR(()=>{let i=s.readFileSync(n,`utf-8`),o=DP(yR(n,a,{source:i,json:Nr.default.parse(i)},t),l);return r(o,a,l!==e.config),o});if(u.ok)return{...e,config:u.value,loaded:[...e.loaded,n],rendering:new Map([...e.rendering,[a,n]])};let d={path:n,plugin:a,reason:u.reason};return o(u.reason,pR(l,a,d))},{config:n.config,rendering:n.rendering,loaded:[],dropped:[]})}function dR(e){let t=`${aR}${e}.`;return e=>e.startsWith(t)}function fR(e,t){let n=dR(t),r=e=>Object.fromEntries(Object.entries(e).filter(([e])=>!n(e)));return[e.variables,e.segments,e.helpers,e.actions].some(e=>Object.keys(e).some(n))?{...e,variables:r(e.variables),segments:r(e.segments),helpers:r(e.helpers),actions:r(e.actions)}:e}function pR(e,t,n){return{...e,variables:{...e.variables,[oR(t)]:{kind:`dropped`,reason:eR(n),definition:n.path}}}}function mR(e){return e.startsWith(`plugins.`)?e.slice(8).split(`.`)[0]:void 0}function hR(e,t){let n=new Set([...Object.keys(e.config.variables),...Object.keys(e.config.segments)].map(mR)),r=[...t,...e.dropped].filter(e=>e.plugin===void 0).map(e=>({definition:e.path,notice:eR(e)}));return t=>{let i=mR(t);if(i===void 0)return[];let a=e.config.variables[oR(i)];return a?.kind===`dropped`?[{definition:a.definition,notice:a.reason}]:n.has(i)?[]:r}}function gR(e,t){let n=nv(e.presets).flatMap(t=>[...__(av(e,t).node)]).flatMap(e=>e.kind===`segment`?[e]:[]),r=[...new Set([...n.map(e=>e.name),...Object.keys(e.segments)])].map(e=>({name:e,cause:t(e)})).filter(({cause:e})=>e.length>0),i=Object.fromEntries(r.map(({name:e,cause:t})=>[e,_R(e,t.map(e=>e.notice),n.filter(t=>t.name===e))])),a=t=>{let n=mR(t),r=n===void 0?void 0:e.variables[oR(n)];return r?.kind===`dropped`?{definition:r.definition,notice:r.reason}:void 0},o=Object.values(e.variables).some(e=>e.kind===`dropped`),s=o?Object.values(e.segments).flatMap(e=>[`template`,`bg`,`fg`,`when`].flatMap(t=>e[t]===void 0?[]:[e[t]])):[],c=o?Object.values(e.actions).flatMap(e=>`do`in e?[...e.do]:[]):[],l=(e,t)=>[...new Set(e)].flatMap(e=>{let n=e in t?void 0:a(e);return n===void 0?[]:[[e,n]]}),u=l([...s.flatMap(t=>jv(t,e.helpers).map(e=>e.name)),...c],e.actions),d=l(s.flatMap(t=>[...Nv(t,e.helpers)]),e.helpers),f=new Set([...r.flatMap(({cause:e})=>e.map(e=>e.definition)),...[...u,...d].map(([,e])=>e.definition)]);return{config:{...e,segments:{...e.segments,...i},actions:{...e.actions,...Object.fromEntries(u.map(([e])=>[e,{copy:`{{ .${oR(mR(e)??``)} }}`}]))},helpers:{...e.helpers,...Object.fromEntries(d.map(([e,t])=>[e,`{{ fail ${JSON.stringify(t.notice)} }}`]))}},reached:f}}function _R(e,t,n){let r=`⚠ ${e}: ${t.join(`; `)}`,i=new Map;for(let e of n)for(let[t,n]of Object.entries(e.settings??{})){let e=i.get(t);i.set(t,e===void 0?[n]:[...e,n])}let a=Object.fromEntries([...i].map(([e,t])=>[e,vR(e,t)]));return{template:`{{ ${JSON.stringify(r)} }}`,bg:`error`,description:`stands in for a segment whose plugin did not load`,settings:a}}function vR(e,t){let[n]=t,r=t.filter(e=>typeof e==`number`);return typeof n==`boolean`?{label:e,domain:`bool`,default:n}:typeof n==`number`?{label:e,domain:{min:Math.min(...r),max:Math.max(...r),step:1},default:n}:{label:e,domain:[...new Set(t.map(String))],default:n}}function yR(e,t,{source:n,json:r},{checkout:i}){let a=[],o=()=>{throw new pD(e,a)};if(!KD(r))return a.push({path:``,message:`a plugin definition must be an object, got ${qD(r)}`}),o();for(let e of Object.keys(r))tR.has(e)||a.push({path:e,message:e===`plugin`?`a plugin definition does not name itself: its name is its folder's ("${t}") — remove "plugin"`:`a plugin definition may not declare "${e}". Expected only: ${[...tR].join(`, `)}`});let s=TR(r.data,e,i,a);if(KD(r.segments)||a.push({path:`segments`,message:`"segments" must be an object naming the plugin's segments`}),a.length>0||s===void 0)return o();let c={source:n,issues:a,allowedPalettes:new Set(hh()),groups:[]},l=RP(c,`data`,{[oR(t)]:{kind:`file`,path:s,parse:{json:!0},cache:{watch_file:s},default:{}}});for(let[e,t]of Object.entries(r.segments))if(!(!KD(t)||!KD(t.vars)))for(let[n,r]of Object.entries(t.vars)){let t=KD(r)?r.kind:void 0;typeof t!=`string`||t===`state`||a.push({path:`segments.${e}.vars.${n}`,message:`a plugin segment's vars may declare only state variables (kind: "state"), never a source such as ${JSON.stringify(t)}: a plugin's only source is its data file`})}let u={variables:l,segments:xR(t,CR(t,MF(c,r.segments,new Set))),helpers:xR(t,bL(c,r.helpers)),actions:xR(t,wR(t,TI(c,r.actions)))};for(let[e,t]of bR(u))try{mk.parse(t)}catch(t){a.push({path:e,message:`Template parse error in ${e}: ${t.message}`})}return a.length>0&&o(),u}function*bR(e){for(let[t,n]of Object.entries(e.segments??{}))for(let e of[`template`,`bg`,`fg`,`when`]){let r=n[e];r!==void 0&&(yield[`segments.${t}.${e}`,r])}for(let[t,n]of Object.entries(e.helpers??{}))yield[`helpers.${t}`,`{{ define "${t}" }}${n}{{ end }}`];for(let[t,n]of Object.entries(e.actions??{}))`copy`in n&&(yield[`actions.${t}.copy`,n.copy]),`open`in n&&(yield[`actions.${t}.open`,n.open]),`preset`in n&&n.preset===`delete`&&(yield[`actions.${t}.name`,n.name])}function xR(e,t){return Object.fromEntries(Object.entries(t).map(([t,n])=>[`${aR}${e}.${t}`,n]))}function SR(e,t){return`${aR}${e}.${t}`}function CR(e,t){return Object.fromEntries(Object.entries(t).map(([t,n])=>[t,n.vars===void 0?n:{...n,vars:Object.fromEntries(Object.entries(n.vars).map(([t,n])=>[t,n.kind===`state`?{...n,key:SR(e,n.key)}:n]))}]))}function wR(e,t){return Object.fromEntries(Object.entries(t).map(([t,n])=>[t,`set`in n?{...n,set:SR(e,n.set)}:n]))}function TR(e,t,n,r){if(typeof e==`string`&&e!==``)return QL(v.dirname(t),e);if(KD(e)&&Object.keys(e).length===1&&typeof e.checkout==`string`&&e.checkout!==``){let t=e.checkout;if(v.isAbsolute(t)||t.startsWith(`~`)||v.normalize(t).split(v.sep)[0]===`..`){r.push({path:`data.checkout`,message:`data.checkout "${t}" must be a path inside the checkout, relative to its root (like ".lit/statusline.json"): no absolute path, "~" or ".."`});return}if(n===null){r.push({path:`data.checkout`,message:`data is read from the session's checkout, and this load has no session`});return}return v.resolve(n.root,t)}if(KD(e)&&`project`in e){r.push({path:`data.project`,message:`data: { project } is now data: { checkout }: the same path, relative to the root of the git checkout the session works in (a linked worktree is its own checkout)`});return}r.push({path:`data`,message:`"data" must be the path of the plugin's JSON data file relative to this definition, or { checkout: "<path>" } relative to the root of the session's checkout`})}function ER(e){let t=[...[...(process.env.XDG_DATA_DIRS||kR()).split(`:`).filter(e=>e!==``)].reverse().map(e=>v.join(e,`cc-candybar`,`plugins`)),DR(),...e===null?[]:[v.join(e,OR)]];return t.filter((e,n)=>t.lastIndexOf(e)===n)}function DR(){let e=process.env.XDG_DATA_HOME||v.join(w.homedir(),`.local`,`share`);return v.join(e,`cc-candybar`,`plugins`)}const OR=v.join(`.cc-candybar`,`plugins`);function kR(){let e=`/usr/local/share:/usr/share`;return process.platform===`darwin`?`${v.join(process.env.HOMEBREW_PREFIX||`/opt/homebrew`,`share`)}:${e}`:e}function AR(e){let t=ER(e),n=new Map,r=[],i=[];for(let e of t){let t=jR(e);if(`error`in t){r.push(t);continue}for(let r of t.folders)n.delete(r),n.set(r,v.join(e,r,nR));for(let n of t.files)i.push({path:v.join(e,n),plugin:void 0,reason:`a plugin is a folder holding its ${nR}: move this file to ${v.join(e,`<name>`,nR)}`})}return{roots:t,definitions:[...n.values()],unchecked:r,strays:i}}function jR(e){try{let t=s.readdirSync(e,{withFileTypes:!0}).filter(e=>!e.name.startsWith(`.`)).sort((e,t)=>e.name<t.name?-1:+(e.name>t.name)),n=t=>t.isDirectory()||MR(e,t);return{folders:t.filter(n).map(e=>e.name),files:t.filter(e=>!n(e)).map(e=>e.name)}}catch(t){return t.code===`ENOENT`?{folders:[],files:[]}:{path:e,error:t.message}}}function MR(e,t){if(!t.isSymbolicLink())return!1;try{return s.statSync(v.join(e,t.name)).isDirectory()}catch{return!0}}const NR=[`json5`,`json`];function PR(e){try{return s.statSync(e,{throwIfNoEntry:!1})===void 0?`absent`:`present`}catch(t){return{path:e,error:t.message}}}function FR(e,t,n){if(n!==void 0)return[n];let r=t??process.cwd();return[...new Set([...e?NR.map(t=>v.join(e,`.cc-candybar.${t}`)):[],...NR.map(e=>v.join(r,`.cc-candybar.${e}`)),...NR.map(e=>`${IR()}.${e}`)])]}function IR(){let e=process.env.XDG_CONFIG_HOME??v.join(w.homedir(),`.config`);return v.join(e,`cc-candybar`,`config`)}function LR(e,t,n){let r=[],i=new Map;for(let a of FR(e,t,n)){let e=PR(a);if(e===`absent`)continue;if(e!==`present`){r.push(e);continue}let t=v.join(s.realpathSync(v.dirname(a)),v.basename(a).replace(/\.(json5|json)$/,``));i.has(t)||i.set(t,a)}let a=[...i.values()].reverse();if(n===void 0)return{kind:`chain`,layers:a,home:RR(a),unchecked:r};let[o]=r,c=n;return a.length>0?{kind:`chain`,layers:a,home:c,unchecked:r}:o===void 0?{kind:`missing`,path:n,home:c}:{kind:`unreadable`,...o,home:c}}function RR(e){let t=IR();return e.find(e=>NR.some(n=>e===`${t}.${n}`))??`${t}.${NR[0]}`}function zR(e,t,n){let r=LR(e,t,n),i=r.kind===`chain`?r.layers:[];return{path:r.home,above:i.filter(e=>e!==r.home),projectDir:e??null,cwd:t??null}}function BR(e){return VR(e).join(`
|
|
172
|
-
`)||null}function
|
|
171
|
+
New: { h: ["seg1", "seg2"] }`,line:Y(e.source,[`root`])}),VF;if(n.kind===`group`){let r=YD(e,oI,t,n);return r===null?VF:(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}),cI(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:Y(e.source,[`root`])}),VF}if(a){let r=YD(e,XF,t,n);return r===null?VF:{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=YD(e,ZF,t,n);return r===null?VF:{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=YD(e,QF,t,n);return r===null?VF:{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:Y(e.source,[`root`])}),VF};function eI(){return{required:!0,json:{type:`object`,propertyNames:{pattern:W_.source},additionalProperties:{$ref:BF}},parse:(e,t,n,r)=>{let i=r[n];if(!qD(i))return e.issues.push({path:`${t}.${n}`,message:`"rows" must be an object of row name → layout node, got ${JD(i)}`,line:Y(e.source,[...t.split(`.`),n])}),{};let a={};for(let[r,o]of Object.entries(i)){if(!W_.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:Y(e.source,[...t.split(`.`),n,r])});continue}a[r]=$F(e,`${t}.${n}.${r}`,o)}return a}}}const tI={noun:`root key`,fields:{rows:eI(),when:oO(),distribution:qF()}};function nI(e,t,n){return qD(n)&&`rows`in n?YD(e,tI,t,n)??{rows:{}}:$F(e,t,n)}function rI(){return{required:!0,json:{type:`string`,pattern:W_.source},parse:(e,t,n,r)=>{let i=r[n];if(typeof i!=`string`||!W_.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 "${pr}", got ${Z(i)}`,line:Y(e.source,[`root`])});return}return i}}}function iI(){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 ${Z(i)}`,line:Y(e.source,[`root`])});return}return i}}}}function aI(){return{required:!0,json:{type:`string`,pattern:`^[^\\n\\r]*$`},parse:(e,t,n,r)=>{let i=HD(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:Y(e.source,[...t.split(`.`),n])});return}return i}}}}const oI={noun:`layout-node key`,fields:{kind:HF(`group`),name:rI(),label:aI(),open:sO(),direction:mO(f_),key:iI(),bg:oO(),fg:oO(),when:oO(),distribution:qF(),children:GF(iO(()=>$F))}};function sI(e){return e.key??`groups.`+e.name}function cI(e){let t=yD+e.name;return vr(t,{variable:t,key:sI(e),member:e.name},{kind:`container`,direction:e.direction??`vertical`,children:e.children,...e.distribution!==void 0&&{distribution:e.distribution}},`drop`,e.when)}function lI(e,t,n){e.issues.push({path:t,message:n,line:Y(e.source,[`root`])})}function uI(e,t){TD(e,t,yD,`group nodes`);let n=e.groups;if(n.length===0)return;let r=new Set;for(let t of n)r.has(t.name)&&lI(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}.`)&&sI(t)===sI(r)&&lI(e,t.path,`group "${t.name}" shares key "${sI(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=sI(t);if(i.has(n)||i.set(n,pr),t.open===!0){let r=i.get(n);r!==`closed`&&lI(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=yD+e.name,r=sI(e),c=n.filter(t=>t!==e&&e.path.startsWith(t.path+`.`)).length,l=` `.repeat(c);a[t]=wr(r,i.get(r)),o[t]=Tr(r,e.name),s[t]={template:xr(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}}const dI=`menu`,fI=`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`,pI=e=>e.kind===`call`&&e.name===`dict`,mI=e=>e.kind===`literal`&&typeof e.value!=`object`,hI=e=>hr(``,e,2)===void 0;function gI(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&&pI(i)?i:void 0,o=a===void 0?r:r.slice(0,-1);if(o.some(pI))return t(`whose options (dict …) is not its last argument — ${fI}`);if(i!==void 0&&a===void 0&&!mI(i)&&hI(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=hr(`whose trigger`,o.length,2);if(s!==void 0)return t(`${s} — ${fI}`);let c=a===void 0?{}:NS(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=PD(c)}catch(e){return t(`with invalid options — ${e.message}`)}let u=l.key;if(u!==void 0){let e=wD(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 "${OD(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 _I(e){let t=Hb({fromString:e=>e});try{return t.parse(e).referencedCalls().filter(e=>e.name===dI).map(gI)}catch{return`parse-failed`}}function vI(e){let t=Hb({fromString:e=>e});try{return t.parse(e).referencedFunctions().has(dI)}catch{return!1}}function yI(e,t,n){e.issues.push({path:t,message:n,line:Y(e.source,[`root`])})}function bI(e,t){TD(e,t,bD,`{{ menu }} helpers`);for(let[n,r]of Object.entries(t.helpers??{}))vI(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:Y(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`&&vI(i)&&yI(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 v_(Z_(t.root)))typeof n.when==`string`&&vI(n.when)&&yI(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||!vI(r))continue;let n=_I(r);if(n!==`parse-failed`)for(let r of n){let n=r.kind===`issue`?r.message:xI(r.apply);n!==void 0&&yI(e,`segments.${t}`,`segment "${t}" has a {{ menu }} ${n}.`)}}}function xI(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(ED(e)===`closed`)return`whose apply action is named "${pr}", which collides with the menu's closed-state sentinel and leaves it unopenable. Rename the action`}function SI(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 rv(e.presets)){let a=new Map,s=new Map;for(let c of v_(ov(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,_I(t.template));let l=i.get(c.name);if(l===`parse-failed`)continue;let u=m_(c);for(let[e,t]of l.entries()){if(t.kind===`issue`||xI(t.apply)!==void 0)continue;let{apply:i,options:l}=t,d=ED(i),f=DD(u,i,l.key),p=AD(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=kD(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]=Tr(f,d),n[f]=wr(f,pr),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 CI=[`set`,`persist`,`copy`,`open`,`reset`,`undo`,`redo`,`back`,`rewind`,`save`,`preset`,`themeDefault`,`doctor`,`ceiling`,`slash`,`do`];function wI(e){return e.ceiling===`set`?[`set`,e.to]:[`clear`]}function TI(e){return`from`in e||`int`in e||`insertSegmentFrom`in e}function EI(e,t){if(t===void 0)return{};if(!qD(t))return Q(e,`actions`,`actions must be an object, got ${JD(t)}`),{};let n=Object.create(null);for(let[r,i]of Object.entries(t)){let t=DI(e,`actions.${r}`,i);t!==null&&(n[r]=t)}return n}function Q(e,t,n){e.issues.push({path:t,message:n,line:Y(e.source,t.split(`.`))})}function DI(e,t,n){if(!qD(n))return Q(e,t,`${t} must be an action object, got ${JD(n)}`),null;if(`persistWhen`in n)return Q(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=CI.filter(e=>e in n);return r.length===1?OI[r[0]](e,t,n):(Q(e,t,`action must declare exactly one of: ${CI.join(`, `)}${r.length>1?` (found: ${r.join(`, `)})`:``}`),null)}const OI={set:(e,t,n)=>cL(e,t,n,`set`,iL),persist:(e,t,n)=>cL(e,t,n,`persist`,aL),copy:kI(`copy`),open:kI(`open`),reset:AI,undo:MI(`undo`),redo:MI(`redo`),back:MI(`back`),rewind:MI(`rewind`),save:MI(`save`),preset:NI,themeDefault:PI,doctor:II,ceiling:LI,slash:RI,do:zI};function kI(e){return(t,n,r)=>{for(let i of Object.keys(r))i!==e&&Q(t,`${n}.${i}`,`Unknown key "${i}" on a ${e} action. Expected only: ${e}`);let i=HD(t,n,r,e);return i===null?null:{[e]:i}}}function AI(e,t,n){for(let r of Object.keys(n))r!==`reset`&&Q(e,`${t}.${r}`,`Unknown key "${r}" on a reset action. Expected only: reset`);let r=BI(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 jI={undo:`it steps the session's settings history`,redo:`it steps the session's settings history`,back:`it steps the session's navigation history`,rewind:`it steps the session's settings history back to where edit mode opened`,save:`it saves the session's unsaved settings`};function MI(e){return(t,n,r)=>{for(let i of Object.keys(r))i!==e&&Q(t,`${n}.${i}`,`Unknown key "${i}" on a ${e} action. Expected only: ${e}`);return r[e]===!0?{[e]:!0}:(Q(t,`${n}.${e}`,`${e} must be the literal true (it takes no key — ${jI[e]}), got ${Z(r[e])}`),null)}}function NI(e,t,n){let r=n.preset,i=r===`save`?[`preset`]:[`preset`,`name`];for(let r of Object.keys(n))i.includes(r)||Q(e,`${t}.${r}`,`Unknown key "${r}" on a preset action. Expected only: ${i.join(`, `)}`);if(r!==`save`&&r!==`delete`)return Q(e,`${t}.preset`,`preset must be "save" or "delete", got ${Z(r)}`),null;if(r===`save`)return{preset:`save`};let a=HD(e,t,n,`name`);return a===null?null:{preset:`delete`,name:a}}function PI(e,t,n){for(let r of Object.keys(n))r!==`themeDefault`&&Q(e,`${t}.${r}`,`Unknown key "${r}" on a themeDefault action. Expected only: themeDefault`);return n.themeDefault===`save`?{themeDefault:`save`}:(Q(e,`${t}.themeDefault`,`themeDefault must be "save" (it saves the look the session draws as the active theme's default), got ${Z(n.themeDefault)}`),null)}const FI={run:[`doctor`],fix:[`doctor`,`check`],mark:[`doctor`,`check`,`mark`]};function II(e,t,n){let r=n.doctor,i=typeof r==`string`&&Object.hasOwn(FI,r),a=i?FI[r]:[...new Set(Object.values(FI).flat())];for(let r of Object.keys(n))a.includes(r)||Q(e,`${t}.${r}`,`Unknown key "${r}" on a doctor action. Expected only: ${a.join(`, `)}`);if(!i)return Q(e,`${t}.doctor`,`doctor must be ${Object.keys(FI).map(e=>`"${e}"`).join(`, `)}, got ${Z(r)}`),null;if(r===`run`)return{doctor:`run`};let o=n.check,s=r===`mark`?cj:sj;if(typeof o!=`string`||!s.some(e=>e.name===o))return Q(e,`${t}.check`,`doctor ${r} must name a check (have: ${s.map(e=>e.name).join(`, `)}), got ${Z(o)}`),null;if(r===`fix`)return{doctor:`fix`,check:o};let c=n.mark;return xA.includes(c)?{doctor:`mark`,check:o,mark:c}:(Q(e,`${t}.mark`,`doctor mark must be ${xA.map(e=>`"${e}"`).join(` or `)}, got ${Z(c)}`),null)}function LI(e,t,n){let r=n.ceiling,i=r===`clear`?[`ceiling`]:[`ceiling`,`to`];for(let r of Object.keys(n))i.includes(r)||Q(e,`${t}.${r}`,`Unknown key "${r}" on a ceiling action. Expected only: ${i.join(`, `)}`);if(r===`clear`)return{ceiling:`clear`};if(r!==`set`)return Q(e,`${t}.ceiling`,`ceiling must be "set" or "clear", got ${Z(r)}`),null;let a=n.to;return typeof a!=`string`||a.trim()===``?(Q(e,`${t}.to`,`ceiling set needs \`to\`: a memento ceiling value such as "+100_000", "400000" or "off", got ${Z(a)}`),null):{ceiling:`set`,to:a}}function RI(e,t,n){for(let r of Object.keys(n))r!==`slash`&&Q(e,`${t}.${r}`,`Unknown key "${r}" on a slash action. Expected only: slash`);let r=Pj(n.slash);return r.kind===`refused`?(Q(e,`${t}.slash`,r.reason),null):{slash:r.line}}function zI(e,t,n){for(let r of Object.keys(n))r!==`do`&&Q(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===``)?(Q(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 ${Z(r)}`),null):{do:r}}function BI(e,t,n,r,i,a){let o=HD(e,t,r,n);if(o===null)return null;let s=`${t}.${n}`;return o===``?(Q(e,s,i),null):o.includes(`/`)?(Q(e,s,a(o)),null):o}const VI={set:`the SessionState key to write`,persist:`the config globals field to write`};function HI(e,t,n,r){let i=VI[r],a=BI(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 UI(e){return e===`set`?`set-state`:`set-config`}const WI={to:lL(`set`)},GI={to:lL(`persist`)},KI={from:uL(`set`)},qI={from:uL(`persist`)},JI={min:hL(),max:hL(),by:hL()},YI={int:fL()},XI={cycle:dL(`set`)},ZI={cycle:dL(`persist`)},QI={removeSegment:pL(`removeSegment`)},$I={insertSegment:pL(`insertSegment`),anchor:pL(`anchor`),relation:mL()},eL={insertSegmentFrom:uL(`persist`),anchor:pL(`anchor`),relation:mL()},tL={ok:e=>e.min<e.max,issue:e=>({field:`min`,message:`min (${e.min}) must be less than max (${e.max})`})},nL={ok:e=>e.by!==0,issue:()=>({field:`by`,message:`by must be a non-zero integer (the per-click increment; negative steps down)`})};function rL(e,t,n=[],r){let i=Object.keys(t),a=r??i,o=[e],s=(e,n,r)=>ZD(e,t,n,r),c=hO(t);return{detect:a,allowed:[...o,...i],label:i.join(`/`),json:{type:`object`,properties:{...Object.fromEntries(o.map(e=>[e,{type:`string`}])),...c.properties},required:[...o,...c.required??[]],additionalProperties:!1},parse:n.length?aO(s,...n):s}}const iL=[rL(`set`,WI),rL(`set`,KI),rL(`set`,JI,[tL,nL]),rL(`set`,YI),rL(`set`,XI)],aL=[rL(`persist`,GI),rL(`persist`,qI),rL(`persist`,JI,[tL,nL]),rL(`persist`,ZI),rL(`persist`,QI),rL(`persist`,$I,[],[`insertSegment`]),rL(`persist`,eL,[],[`insertSegmentFrom`])];function oL(e){let t=[`"to" (a literal value)`,`"from" (an option domain — a registered domain name like "themes"/"endcaps"/"styles", 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 sL(e){let t=oL(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 cL(e,t,n,r,i){let a=HI(e,t,n,r),o=i.filter(e=>e.detect.some(e=>e in n));if(o.length!==1)return Q(e,t,`${sL(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)||Q(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 lL(e){let t=UI(e);return{required:!0,json:{type:`string`},parse:(n,r,i,a)=>BI(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 uL(e){let t=UI(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===``){Q(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){Q(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===``)){Q(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){Q(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){Q(n,s,`${i} array members must be unique — a duplicated value would render the same picker option twice`);return}return r}Q(n,s,`${i} must be a domain name (a string) or an inline domain (an array of strings), got ${Z(o)}`)}}}function dL(e){let t=UI(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`)){Q(n,s,`cycle must be an array of strings (the enumerated values a click steps through), got ${JD(o)}`);return}let c=o;if(c.length<2){Q(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){Q(n,s,`cycle members must be non-empty — an empty value cannot be delivered on the ${t} wire`);return}if(u.length>0){Q(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){Q(n,s,`cycle members must be unique — the successor of a duplicated member is ambiguous`);return}return c}}}function fL(){return{required:!0,json:{const:!0},parse:(e,t,n,r)=>{if(r[n]!==!0){Q(e,`${t}.${n}`,`int must be the literal true (declares the key an unbounded integer cursor — a paged picker's page key), got ${Z(r[n])}`);return}return!0}}}function pL(e){return{required:!0,json:{type:`string`},parse:(t,n,r,i)=>{let a=HD(t,n,i,r);if(a===null)return;let o=`${n}.${r}`;if(a===``){Q(t,o,`${e} must be non-empty (a segment name)`);return}if(a.includes(`/`)||a.includes(`:`)){Q(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 mL(){return{required:!0,json:{enum:[`before`,`after`]},parse:(e,t,n,r)=>{let i=r[n];if(i!==`before`&&i!==`after`){Q(e,`${t}.${n}`,`relation must be "before" or "after", got ${Z(i)}`);return}return i}}}function hL(){return{required:!0,json:{type:`integer`},parse:(e,t,n,r)=>{let i=r[n];if(typeof i!=`number`||!Number.isInteger(i)){Q(e,`${t}.${n}`,`${n} must be an integer, got ${Z(i)}`);return}return i}}}function gL(e,t,n){return`${e}: "${t}" is an endcaps shape, not a style — endcaps were renamed from "style" to "endcaps"; write ${n}: "${t}"`}const _L={noun:`style key`,fields:{hueShift:lO(),chromaScale:lO({min:0}),lightnessScale:lO(),lightnessShift:lO()}};function vL(e,t){if(!qD(t))return e.issues.push({path:`styles`,message:`styles must be an object mapping style names to adaptation objects, got ${JD(t)}`,line:Y(e.source,[`styles`])}),{};let n={};for(let[r,i]of Object.entries(t)){if(r===``||r.includes(`/`)){e.issues.push({path:`styles.${r}`,message:`style name ${JSON.stringify(r)} must be non-empty and slash-free — a style picker writes the name on the set-state wire, which rejects empty values and splits on "/"`,line:Y(e.source,[`styles`,r])});continue}if(Bh(r)){e.issues.push({path:`styles.${r}`,message:gL(`styles.${r}`,r,`globals.endcaps`),line:Y(e.source,[`styles`,r])});continue}let t=YD(e,_L,`styles.${r}`,i);t!==null&&(n[r]={...Js,...t})}return n}const yL={noun:`preset key`,fields:{root:{required:!1,json:{$ref:`#/definitions/RootFragment`},parse:(e,t,n,r)=>r[n]===void 0?void 0:nI(e,`${t}.${n}`,r[n])},globals:{required:!1,json:JO(),parse:(e,t,n,r)=>r[n]===void 0?void 0:qO(e,`${t}.${n}`,r[n])}}};function bL(e,t){if(!qD(t))return e.issues.push({path:`presets`,message:`presets must be an object mapping preset names to config fragments, got ${JD(t)}`,line:Y(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:Y(e.source,[`presets`,r])});continue}let t=YD(e,yL,`presets.${r}`,i);t!==null&&(n[r]=t)}return n}function xL(e,t){if(t===void 0)return{};if(!qD(t))return e.issues.push({path:`helpers`,message:`helpers must be an object, got ${JD(t)}`,line:Y(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 ${Z(i)}`,line:Y(e.source,[`helpers`,r])});continue}n[r]=i}return n}const SL=new Map([[`session.budget.amount`,{segment:`session`,setting:`budget`}],[`session.budget.warningThreshold`,{segment:`session`,setting:`warnAt`}],[`today.budget.amount`,{segment:`today`,setting:`budget`}],[`today.budget.warningThreshold`,{segment:`today`,setting:`warnAt`}],[`block.budget.heatThreshold`,{segment:`block`,setting:`warnAt`}],[`block.budget.warningThreshold`,{segment:`block`,setting:`errorAt`}],[`weekly.budget.heatThreshold`,{segment:`weekly`,setting:`warnAt`}],[`weekly.budget.warningThreshold`,{segment:`weekly`,setting:`errorAt`}],[`burn.eta.errorMinutes`,{segment:`burnrate`,setting:`errorWithin`}],[`burn.eta.warnMinutes`,{segment:`burnrate`,setting:`warnWithin`}]]);function CL(e){return`it became the "${e.setting}" setting of each "${e.segment}" placement — set it on the placement where a row places "${e.segment}" ({ seg: "${e.segment}", settings: { ${e.setting}: <value> } }), or redeclare segments.${e.segment}.settings.${e.setting} with the default every placement should start from`}function wL(e){let t=SL.get(e);return t===void 0?void 0:`variables.${e} is no longer read: ${CL(t)}`}function TL(e){let t=SL.get(e);return t===void 0?``:` — ".${e}" is no longer a variable: ${CL(t)}; a "${t.segment}" template reads it as ".settings.${t.setting}"`}function EL(e,t){let n=new Map;for(let e of Object.keys(t)){let t=pD(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:Y(e.source,[`presets`])})}function DL(e,t,n){let r=[[[`globals`],t.globals.style,`globals.endcaps`],[[`editGlobals`],t.editGlobals.style,`editGlobals.endcaps`],...Object.entries(t.presets).map(([e,t])=>[[`presets`,e,`globals`],t.globals?.style,`presets.${e}.globals.endcaps`]),...Object.entries(t.themeDefaults).map(([e,t])=>[[`themeDefaults`,e],t.style,`globals.endcaps`])];for(let[n,i,a]of r){if(i===void 0||Sh(i)||Object.prototype.hasOwnProperty.call(t.styles,i))continue;let r=`${n.join(`.`)}.style`;e.issues.push({path:r,message:Bh(i)?gL(r,i,a):`${r} "${i}" does not match any declared style (have: ${Object.keys(t.styles).join(`, `)})`,line:Y(e.source,[...n,`style`])})}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:Y(e.source,[`globals`,`preset`])}),EL(e,t.presets);let i=Iv(t);for(let t of i.names)t!==`settings`&&!t.startsWith(AL)||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:Y(e.source,[`variables`,t])});let a=(t,n,r)=>{pN(t)>1&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${Kj}" ${pN(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}),mN(t)&&e.issues.push({path:n,message:`${n} places the global settings menu anchor "${Kj}" 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 shade, 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 v_(t)){if(e.kind!==`segment`)continue;let t=m_(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=g_(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||p_[e.direction]===`cell`))}let s=(n,r)=>{for(let[a,o]of Q_(n,r)){let n=Y(e.source,o.split(`.`));if(a.when!==void 0&&(HL(e,`${o}.when`,a.when,i,{line:n}),VL(e,`${o}.when`,a.when,n)),a.kind===`segment`){if(uN(a.name)){(a.id!==void 0||a.settings!==void 0)&&e.issues.push({path:o,message:`${r} gives the global settings menu anchor "${Kj}" an id or settings — the anchor only marks where the menu goes, so place it as the bare name "${Kj}"`,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${hF(a.name)}`,line:n}),RL(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`,X_(t.root)]]);for(let e of rv(t.presets)){let{node:n,path:r}=ov(t,e);c.set(r,n)}for(let[t,n]of c)a(n,t,Y(e.source,t.split(`.`)));YL(e,t,i,()=>!0)}const OL=[`removeSegment`,`insertSegment`,`insertSegmentFrom`];function kL(e,t,n,r,i,a,o){let s=`actions.${n}.${r}`,c=Y(e.source,[`actions`,n,r]);if(!rv(t.presets).includes(a)){e.issues.push({path:s,message:`actions.${n}: "${i}" names preset "${a}" which is not declared (have: ${rv(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(`, `)})${hF(i)}`,line:c})},p=new Set(h_(ov(t,a).node)),m=(r,i)=>{!mF.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${hF(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 AL=`settings.`;function jL(e,t){return{...e,names:new Set([...e.names,...Object.keys(t).map(e=>AL+e)])}}function ML(e,t,n){let r=e=>`segments.${t}.settings.${e}`,i=(n,i)=>{e.issues.push({path:r(n),message:`${r(n)}: ${i}`,line:Y(e.source,[`segments`,t,`settings`,n])})},a=FL(n);for(let{setting:e,message:t}of a)i(e,t);if(!(a.length>0))for(let{setting:e,message:t}of I_(n,PL(n)))i(e,`the defaults do not stand together: ${t}`)}function NL(e){return FL(e).length>0||I_(e,PL(e)).length>0}function PL(e){return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,t.default]))}function FL(e){let t=t=>F_(IL(e,t))?.atLeast;return Object.keys(e).flatMap(n=>{let r=t(n);if(r===void 0)return[];if(r===n||F_(IL(e,r))===void 0)return[{setting:n,message:`atLeast "${r}" must name another range setting of this segment (its range settings: ${LL(e,n).join(`, `)||`none`})`}];let i=[n];for(let e=r;e!==void 0;e=t(e)){if(e===n)return i.every(e=>n<=e)?[{setting:n,message:`atLeast closes a cycle (${[...i,n].join(` ≥ `)}) — every setting on it could only ever equal the rest`}]:[];if(i.includes(e))return[];i.push(e)}return[]})}function IL(e,t){return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0}function LL(e,t){return Object.entries(e).filter(([e,n])=>e!==t&&F_(n)!==void 0).map(([e])=>e)}function RL(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=P_(a),s=`${r}: placement "${m_(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(`, `)})`:L_(c,a)?void 0:`sets "${t}" to ${JSON.stringify(a)}${c.domain===`theme`?ph(a):``}, but it must be ${V_(c)}`;l!==void 0&&e.issues.push({path:r,message:`${s} ${l}`,line:i})}let c=Object.fromEntries(Object.entries(o).map(([e,t])=>[e,n.settings?.[e]??t.default]));if(!(!Object.entries(c).every(([e,t])=>L_(o[e],t))||NL(o)))for(let{message:t}of I_(o,c))e.issues.push({path:r,message:`${s}: ${t}`,line:i})}function zL(e,t,n,r,i){n.kind===`template`&&HL(e,`${t}.template`,n.template,r,{segCtx:i}),E_(n)&&`key`in n.cache&&HL(e,`${t}.cache.key`,n.cache.key,r,{segCtx:i})}function BL(e,t,n,r,i){if(!(!E_(n)||!(`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:Y(e.source,[...t.split(`.`),`cache`,`depends_on`])})}}function VL(e,t,n,r){try{hk.parse(n)}catch(n){e.issues.push({path:t,message:`Template parse error in ${t}: ${n.message}`,line:r})}}function HL(e,t,n,r,i){for(let[a,o]of Ov(n,r.helpers)){if(Fv(a,r))continue;if(a.startsWith(AL)){let n=o===null?``:` through helper "${o}"`,r=a.slice(9),s=i?.segCtx===void 0||i.settings===void 0?`Template reads ".${a}"${n}, but only a segment's own templates have settings — call it from a segment that declares "${r}"`:`Template reads ".${a}"${n}, but segment "${i.segCtx}" has no setting "${r}" (it has: ${Object.keys(i.settings).join(`, `)}) — declare it under segments.${i.segCtx}.settings`;e.issues.push({path:t,message:s,line:i?.line??Y(e.source,t.split(`.`))});continue}if(o!==null){UL(e,o,`Template references unknown variable ".${a}"${TL(a)}`);continue}let n=i?.segCtx===void 0?void 0:`${i.segCtx}.${a}`,s=n!==void 0&&Fv(n,r)?` (segment-local vars are namespaced — write ".${n}")`:TL(a);e.issues.push({path:t,message:`Template references unknown variable ".${a}"${s}`,line:i?.line??Y(e.source,t.split(`.`))})}}function UL(e,t,n){let r=`helpers.${t}`;e.issues.some(e=>e.path===r&&e.message===n)||e.issues.push({path:r,message:n,line:Y(e.source,[`helpers`,t])})}function WL(e,t,n,r,i){let a=n.set,o=MO(io[r].configKey),s=`${a} takes ${LD(o,i)}`;if(`min`in n&&(o===`bool`||!(`min`in o))){e.issues.push({path:`actions.${t}.min`,message:`actions.${t}: a stepper writes the integers from ${n.min} to ${n.max}, and ${a} is not an integer range; ${s}`,line:Y(e.source,[`actions`,t,`min`])});return}let c=qL(n,i);if(c===KL){e.issues.push({path:`actions.${t}.int`,message:`actions.${t}.int: an int cursor writes whatever integer the template binds, and a click outside the ${a} domain would change nothing; ${s}`,line:Y(e.source,[`actions`,t,`int`])});return}let l=c.filter(e=>!ID(o,e.value,i));if(l.length!==0){if(a===io.style.sessionKey&&(`from`in n&&n.from===`endcaps`||c.every(e=>Bh(e.value)))){let r=io.endcaps.sessionKey;e.issues.push(`to`in n?{path:`actions.${t}.to`,message:gL(`actions.${t}.to`,n.to,`set: "${r}", to`),line:Y(e.source,[`actions`,t,`to`])}:{path:`actions.${t}.set`,message:`actions.${t}.set: "${a}" here writes only endcaps shapes, not styles — endcaps were renamed from "style" to "endcaps"; write set: "${r}"`,line:Y(e.source,[`actions`,t,`set`])});return}for(let n of new Set(l.map(e=>e.field))){let r=l.filter(e=>e.field===n).map(e=>JSON.stringify(e.value)),i=r.length<=GL?r.join(`, `):`${r.slice(0,GL).join(`, `)} and ${r.length-GL} more`,o=`actions.${t}.${n}`;e.issues.push({path:o,message:`${o}: ${i} ${r.length===1?`is`:`are`} outside the ${a} domain — a click would write it and nothing would change; ${s}`,line:Y(e.source,[`actions`,t,n])})}}}const GL=3,KL=Symbol(`any integer`);function qL(e,t){return`to`in e?[{field:`to`,value:e.to}]:`cycle`in e?e.cycle.map(e=>({field:`cycle`,value:e})):`from`in e?pv(e.from,t).members.map(e=>({field:`from`,value:e})):`min`in e?[{field:`min`,value:String(e.min)},{field:`max`,value:String(e.max)}]:KL}function JL(e,t){return Object.entries(e).filter(([e])=>t(e))}function YL(e,t,n,r){let i=HN(t),a=fv(i);for(let[n,o]of JL(t.actions,r)){let[t,r]=`from`in o?[`from`,o.from]:`insertSegmentFrom`in o?[`insertSegmentFrom`,o.insertSegmentFrom]:[null,null];if(t!==null&&typeof r==`string`&&!a.includes(r)){e.issues.push({path:`actions.${n}.${t}`,message:`actions.${n} ${t}: references ${hv(r,i)}`,line:Y(e.source,[`actions`,n,t])});continue}if(!(`set`in o))continue;so.has(o.set)&&e.issues.push({path:`actions.${n}.set`,message:`actions.${n} sets "${o.set}", which has no session pick — globals.${o.set} is set in the config file only, so a click would change nothing; write it with { persist: "${o.set}", … } instead`,line:Y(e.source,[`actions`,n,`set`])});let s=fo.get(o.set);s!==void 0&&WL(e,n,o,s,i)}for(let[n,i]of JL(t.actions,r))`do`in i&&i.do.forEach((r,a)=>{let o=Object.prototype.hasOwnProperty.call(t.actions,r)?t.actions[r]:void 0,s=o===void 0?`references unknown action "${r}"`:`do`in o?`"${r}" is itself a do action — list its members here instead`:i.do.indexOf(r)===a?a>0&&TI(o)?`"${r}" 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:`"${r}" 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:Y(e.source,[`actions`,n,`do`])})});for(let[n,i]of JL(t.actions,r)){let r=`persist`in i?i.persist:`reset`in i?i.reset:null;if(r===null)continue;let a=`persist`in i?`persist`:`reset`,o=uk(r);if(o===null){let t=QO(r);e.issues.push({path:`actions.${n}.${a}`,message:t===void 0?`actions.${n}: "${r}" is not a config globals field (have: ${$O().join(`, `)}), a "segments.<name>.palette" target, a "presets.<name>.globals.<field>" target, a "themeDefaults.<theme>.<shade|variation|style>" target, or a "presets.<name>.root" target`:`actions.${n}: the globals field "${r}" was removed: ${t}`,line:Y(e.source,[`actions`,n,a])});continue}let s=OL.filter(e=>e in i);if(o.scope!==`preset-root`&&s.length>0){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${r}" is not a "presets.<name>.root" target — ${s.map(e=>`"${e}"`).join(`/`)} is a tree op and applies only to one`,line:Y(e.source,[`actions`,n,a])});continue}if(o.scope===`preset-root`){kL(e,t,n,a,r,o.preset,i);continue}if(o.scope===`preset-globals`&&!rv(t.presets).includes(o.preset)){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${r}" names preset "${o.preset}" which is not declared (have: ${rv(t.presets).join(`, `)})`,line:Y(e.source,[`actions`,n,a])});continue}if(o.scope===`theme-default`&&!e.allowedPalettes.has(o.theme)){e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${r}" names theme "${o.theme}" which is not installed${ph(o.theme)} (have: ${[...e.allowedPalettes].sort().join(`, `)})`,line:Y(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}: "${r}" names segment "${o.segment}" which is not declared (have segments: ${Object.keys(t.segments).join(`, `)})${hF(o.segment)}`,line:Y(e.source,[`actions`,n,a])});continue}`min`in i&&e.issues.push({path:`actions.${n}.${a}`,message:`actions.${n}: "${r}" is a segment palette target and cannot use a bounded stepper (min/max/by) — use "to", "from", or "cycle" instead`,line:Y(e.source,[`actions`,n,a])})}}for(let[i,a]of JL(t.variables,r)){zL(e,`variables.${i}`,a,n);let t=wL(i);t!==void 0&&e.issues.push({path:`variables.${i}`,message:t,line:Y(e.source,[`variables`,i])})}for(let[i,a]of JL(t.segments,r)){if(a.vars)for(let[t,r]of Object.entries(a.vars))zL(e,`segments.${i}.vars.${t}`,r,n,i);let r=P_(a);ML(e,i,r);let o=jL(n,r);for(let n of[`template`,`bg`,`fg`,`when`]){let s=a[n];if(typeof s==`string`){HL(e,`segments.${i}.${n}`,s,o,{segCtx:i,settings:r});for(let{name:r,site:a,via:o}of Mv(s,t.helpers)){if(Object.prototype.hasOwnProperty.call(t.actions,r))continue;let s=a===`options`?` (in a picker, menu, carousel, swatch, swatches or themePreview)`:``;if(o!==null){UL(e,o,`Template references unknown action "${r}"${s}`);continue}e.issues.push({path:`segments.${i}.${n}`,message:`${n} references unknown action "${r}"${s}`,line:Y(e.source,[`segments`,i,n])})}}}}for(let[i,a]of JL(t.variables,r))BL(e,`variables.${i}`,a,n);for(let[i,a]of JL(t.segments,r))if(a.vars)for(let[t,r]of Object.entries(a.vars))BL(e,`segments.${i}.vars.${t}`,r,n,i)}function XL(e,t,n=()=>!0){let{graph:r,nodeInfo:i}=ZL(t),a=new Map,o=[];for(let e of r.keys())a.set(e,0);for(let e of r.keys())if(!(!n(e)||a.get(e)!==0)&&s(e))return;function s(t){a.set(t,1),o.push(t);for(let c of r.get(t)??[]){if(!n(c))continue;let t=a.get(c);if(t===1){let t=o.indexOf(c),n=[...o.slice(t),c],r=n[0],a=i.get(r);return e.issues.push({path:a?.declarationPath??`variables.${r}`,message:`Dependency cycle: ${n.join(` → `)}`,line:Y(e.source,a?.linePathParts??[`variables`,r])}),!0}if(t===0&&s(c))return!0}return a.set(t,2),o.pop(),!1}}function ZL(e){let t=new Set(Object.keys(e.variables)),n=new Map;for(let t of Object.keys(e.variables))n.set(t,{declarationPath:`variables.${t}`,linePathParts:[`variables`,t]});for(let[r,i]of Object.entries(e.segments))if(i.vars)for(let e of Object.keys(i.vars)){let i=`${r}.${e}`;t.add(i),n.set(i,{declarationPath:`segments.${r}.vars.${e}`,linePathParts:[`segments`,r,`vars`,e]})}let r=new Map;for(let e of t)r.set(e,new Set);let i=(n,i)=>{for(let a of Ov(i,e.helpers).keys()){if(t.has(a)){r.get(n).add(a);continue}let e=a.split(`.`)[0];e!==a&&t.has(e)&&r.get(n).add(e)}},a=(e,n)=>{if(n.kind===`template`&&i(e,n.template),E_(n)&&(`key`in n.cache&&i(e,n.cache.key),`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}}function QL(e){return e===`~`||e.startsWith(`~/`)||e.startsWith(`~\\`)?w.homedir()+e.slice(1):e}function $L(e,t){return v.resolve(e,QL(t))}function eR(e,t){return typeof t==`string`&&t!==``?$L(e,t):void 0}function tR(e){return`plugin ${e.path} was not loaded: ${e.reason}`}const nR=new Set([`data`,`segments`,`helpers`,`actions`]),rR=`plugin.json5`,iR=/^[a-z][a-z0-9_]*$/;function aR(e){let t=v.basename(v.dirname(e));return iR.test(t)?t:void 0}const oR=`plugins.`;function sR(e){return`${oR}${e}.data`}function cR(e){try{return{ok:!0,value:e()}}catch(e){return{ok:!1,reason:lR(e)}}}function lR(e){return e instanceof mD?e.issues.map(e=>e.path===``||e.message.includes(e.path)?e.message:`${e.path}: ${e.message}`).join(`; `):e instanceof Error?e.message:String(e)}function uR(e,t){return e.map(e=>$L(v.dirname(t),e))}function dR(e,t,n,r){let i=new Map;return e.reduce((e,n)=>{let a=aR(n),o=(t,r)=>{let i=new Map(e.rendering);return a!==void 0&&r!==e.config&&i.delete(a),{...e,config:r,rendering:i,dropped:[...e.dropped,{path:n,plugin:a,reason:t}]}};if(v.basename(n)!==`plugin.json5`){let t=`a plugin is a folder holding its ${rR}, and the folder's name is the plugin's: move this file to <dir>/<name>/${rR} and list that`;return o(t,a===void 0?e.config:mR(pR(e.config,a),a,{path:n,plugin:a,reason:t}))}if(a===void 0)return o(`its folder "${v.basename(v.dirname(n))}" is not a plugin name (one matching ${iR}: it prefixes every name the plugin declares)`,e.config);let c=i.get(a);if(c!==void 0)return o(`plugin "${a}" is already listed, from ${c}`,e.config);i.set(a,n);let l=pR(e.config,a),u=cR(()=>{let i=s.readFileSync(n,`utf-8`),o=OP(bR(n,a,{source:i,json:Nr.default.parse(i)},t),l);return r(o,a,l!==e.config),o});if(u.ok)return{...e,config:u.value,loaded:[...e.loaded,n],rendering:new Map([...e.rendering,[a,n]])};let d={path:n,plugin:a,reason:u.reason};return o(u.reason,mR(l,a,d))},{config:n.config,rendering:n.rendering,loaded:[],dropped:[]})}function fR(e){let t=`${oR}${e}.`;return e=>e.startsWith(t)}function pR(e,t){let n=fR(t),r=e=>Object.fromEntries(Object.entries(e).filter(([e])=>!n(e)));return[e.variables,e.segments,e.helpers,e.actions].some(e=>Object.keys(e).some(n))?{...e,variables:r(e.variables),segments:r(e.segments),helpers:r(e.helpers),actions:r(e.actions)}:e}function mR(e,t,n){return{...e,variables:{...e.variables,[sR(t)]:{kind:`dropped`,reason:tR(n),definition:n.path}}}}function hR(e){return e.startsWith(`plugins.`)?e.slice(8).split(`.`)[0]:void 0}function gR(e,t){let n=new Set([...Object.keys(e.config.variables),...Object.keys(e.config.segments)].map(hR)),r=[...t,...e.dropped].filter(e=>e.plugin===void 0).map(e=>({definition:e.path,notice:tR(e)}));return t=>{let i=hR(t);if(i===void 0)return[];let a=e.config.variables[sR(i)];return a?.kind===`dropped`?[{definition:a.definition,notice:a.reason}]:n.has(i)?[]:r}}function _R(e,t){let n=rv(e.presets).flatMap(t=>[...v_(ov(e,t).node)]).flatMap(e=>e.kind===`segment`?[e]:[]),r=[...new Set([...n.map(e=>e.name),...Object.keys(e.segments)])].map(e=>({name:e,cause:t(e)})).filter(({cause:e})=>e.length>0),i=Object.fromEntries(r.map(({name:e,cause:t})=>[e,vR(e,t.map(e=>e.notice),n.filter(t=>t.name===e))])),a=t=>{let n=hR(t),r=n===void 0?void 0:e.variables[sR(n)];return r?.kind===`dropped`?{definition:r.definition,notice:r.reason}:void 0},o=Object.values(e.variables).some(e=>e.kind===`dropped`),s=o?Object.values(e.segments).flatMap(e=>[`template`,`bg`,`fg`,`when`].flatMap(t=>e[t]===void 0?[]:[e[t]])):[],c=o?Object.values(e.actions).flatMap(e=>`do`in e?[...e.do]:[]):[],l=(e,t)=>[...new Set(e)].flatMap(e=>{let n=e in t?void 0:a(e);return n===void 0?[]:[[e,n]]}),u=l([...s.flatMap(t=>Mv(t,e.helpers).map(e=>e.name)),...c],e.actions),d=l(s.flatMap(t=>[...Pv(t,e.helpers)]),e.helpers),f=new Set([...r.flatMap(({cause:e})=>e.map(e=>e.definition)),...[...u,...d].map(([,e])=>e.definition)]);return{config:{...e,segments:{...e.segments,...i},actions:{...e.actions,...Object.fromEntries(u.map(([e])=>[e,{copy:`{{ .${sR(hR(e)??``)} }}`}]))},helpers:{...e.helpers,...Object.fromEntries(d.map(([e,t])=>[e,`{{ fail ${JSON.stringify(t.notice)} }}`]))}},reached:f}}function vR(e,t,n){let r=`⚠ ${e}: ${t.join(`; `)}`,i=new Map;for(let e of n)for(let[t,n]of Object.entries(e.settings??{})){let e=i.get(t);i.set(t,e===void 0?[n]:[...e,n])}let a=Object.fromEntries([...i].map(([e,t])=>[e,yR(e,t)]));return{template:`{{ ${JSON.stringify(r)} }}`,bg:`error`,description:`stands in for a segment whose plugin did not load`,settings:a}}function yR(e,t){let[n]=t,r=t.filter(e=>typeof e==`number`);return typeof n==`boolean`?{label:e,domain:`bool`,default:n}:typeof n==`number`?{label:e,domain:{min:Math.min(...r),max:Math.max(...r),step:1},default:n}:{label:e,domain:[...new Set(t.map(String))],default:n}}function bR(e,t,{source:n,json:r},{checkout:i}){let a=[],o=()=>{throw new mD(e,a)};if(!qD(r))return a.push({path:``,message:`a plugin definition must be an object, got ${JD(r)}`}),o();for(let e of Object.keys(r))nR.has(e)||a.push({path:e,message:e===`plugin`?`a plugin definition does not name itself: its name is its folder's ("${t}") — remove "plugin"`:`a plugin definition may not declare "${e}". Expected only: ${[...nR].join(`, `)}`});let s=ER(r.data,e,i,a);if(qD(r.segments)||a.push({path:`segments`,message:`"segments" must be an object naming the plugin's segments`}),a.length>0||s===void 0)return o();let c={source:n,issues:a,allowedPalettes:new Set(gh()),groups:[]},l=zP(c,`data`,{[sR(t)]:{kind:`file`,path:s,parse:{json:!0},cache:{watch_file:s},default:{}}});for(let[e,t]of Object.entries(r.segments))if(!(!qD(t)||!qD(t.vars)))for(let[n,r]of Object.entries(t.vars)){let t=qD(r)?r.kind:void 0;typeof t!=`string`||t===`state`||a.push({path:`segments.${e}.vars.${n}`,message:`a plugin segment's vars may declare only state variables (kind: "state"), never a source such as ${JSON.stringify(t)}: a plugin's only source is its data file`})}let u={variables:l,segments:SR(t,wR(t,NF(c,r.segments,new Set))),helpers:SR(t,xL(c,r.helpers)),actions:SR(t,TR(t,EI(c,r.actions)))};for(let[e,t]of xR(u))try{hk.parse(t)}catch(t){a.push({path:e,message:`Template parse error in ${e}: ${t.message}`})}return a.length>0&&o(),u}function*xR(e){for(let[t,n]of Object.entries(e.segments??{}))for(let e of[`template`,`bg`,`fg`,`when`]){let r=n[e];r!==void 0&&(yield[`segments.${t}.${e}`,r])}for(let[t,n]of Object.entries(e.helpers??{}))yield[`helpers.${t}`,`{{ define "${t}" }}${n}{{ end }}`];for(let[t,n]of Object.entries(e.actions??{}))`copy`in n&&(yield[`actions.${t}.copy`,n.copy]),`open`in n&&(yield[`actions.${t}.open`,n.open]),`preset`in n&&n.preset===`delete`&&(yield[`actions.${t}.name`,n.name])}function SR(e,t){return Object.fromEntries(Object.entries(t).map(([t,n])=>[`${oR}${e}.${t}`,n]))}function CR(e,t){return`${oR}${e}.${t}`}function wR(e,t){return Object.fromEntries(Object.entries(t).map(([t,n])=>[t,n.vars===void 0?n:{...n,vars:Object.fromEntries(Object.entries(n.vars).map(([t,n])=>[t,n.kind===`state`?{...n,key:CR(e,n.key)}:n]))}]))}function TR(e,t){return Object.fromEntries(Object.entries(t).map(([t,n])=>[t,`set`in n?{...n,set:CR(e,n.set)}:n]))}function ER(e,t,n,r){if(typeof e==`string`&&e!==``)return $L(v.dirname(t),e);if(qD(e)&&Object.keys(e).length===1&&typeof e.checkout==`string`&&e.checkout!==``){let t=e.checkout;if(v.isAbsolute(t)||t.startsWith(`~`)||v.normalize(t).split(v.sep)[0]===`..`){r.push({path:`data.checkout`,message:`data.checkout "${t}" must be a path inside the checkout, relative to its root (like ".lit/statusline.json"): no absolute path, "~" or ".."`});return}if(n===null){r.push({path:`data.checkout`,message:`data is read from the session's checkout, and this load has no session`});return}return v.resolve(n.root,t)}if(qD(e)&&`project`in e){r.push({path:`data.project`,message:`data: { project } is now data: { checkout }: the same path, relative to the root of the git checkout the session works in (a linked worktree is its own checkout)`});return}r.push({path:`data`,message:`"data" must be the path of the plugin's JSON data file relative to this definition, or { checkout: "<path>" } relative to the root of the session's checkout`})}function DR(e){let t=[...[...(process.env.XDG_DATA_DIRS||AR()).split(`:`).filter(e=>e!==``)].reverse().map(e=>v.join(e,`cc-candybar`,`plugins`)),OR(),...e===null?[]:[v.join(e,kR)]];return t.filter((e,n)=>t.lastIndexOf(e)===n)}function OR(){let e=process.env.XDG_DATA_HOME||v.join(w.homedir(),`.local`,`share`);return v.join(e,`cc-candybar`,`plugins`)}const kR=v.join(`.cc-candybar`,`plugins`);function AR(){let e=`/usr/local/share:/usr/share`;return process.platform===`darwin`?`${v.join(process.env.HOMEBREW_PREFIX||`/opt/homebrew`,`share`)}:${e}`:e}function jR(e){let t=DR(e),n=new Map,r=[],i=[];for(let e of t){let t=MR(e);if(`error`in t){r.push(t);continue}for(let r of t.folders)n.delete(r),n.set(r,v.join(e,r,rR));for(let n of t.files)i.push({path:v.join(e,n),plugin:void 0,reason:`a plugin is a folder holding its ${rR}: move this file to ${v.join(e,`<name>`,rR)}`})}return{roots:t,definitions:[...n.values()],unchecked:r,strays:i}}function MR(e){try{let t=s.readdirSync(e,{withFileTypes:!0}).filter(e=>!e.name.startsWith(`.`)).sort((e,t)=>e.name<t.name?-1:+(e.name>t.name)),n=t=>t.isDirectory()||NR(e,t);return{folders:t.filter(n).map(e=>e.name),files:t.filter(e=>!n(e)).map(e=>e.name)}}catch(t){return t.code===`ENOENT`?{folders:[],files:[]}:{path:e,error:t.message}}}function NR(e,t){if(!t.isSymbolicLink())return!1;try{return s.statSync(v.join(e,t.name)).isDirectory()}catch{return!0}}const PR=[`json5`,`json`];function FR(e){try{return s.statSync(e,{throwIfNoEntry:!1})===void 0?`absent`:`present`}catch(t){return{path:e,error:t.message}}}function IR(e,t,n){if(n!==void 0)return[n];let r=t??process.cwd();return[...new Set([...e?PR.map(t=>v.join(e,`.cc-candybar.${t}`)):[],...PR.map(e=>v.join(r,`.cc-candybar.${e}`)),...PR.map(e=>`${LR()}.${e}`)])]}function LR(){let e=process.env.XDG_CONFIG_HOME??v.join(w.homedir(),`.config`);return v.join(e,`cc-candybar`,`config`)}function RR(e,t,n){let r=[],i=new Map;for(let a of IR(e,t,n)){let e=FR(a);if(e===`absent`)continue;if(e!==`present`){r.push(e);continue}let t=v.join(s.realpathSync(v.dirname(a)),v.basename(a).replace(/\.(json5|json)$/,``));i.has(t)||i.set(t,a)}let a=[...i.values()].reverse();if(n===void 0)return{kind:`chain`,layers:a,home:zR(a),unchecked:r};let[o]=r,c=n;return a.length>0?{kind:`chain`,layers:a,home:c,unchecked:r}:o===void 0?{kind:`missing`,path:n,home:c}:{kind:`unreadable`,...o,home:c}}function zR(e){let t=LR();return e.find(e=>PR.some(n=>e===`${t}.${n}`))??`${t}.${PR[0]}`}function BR(e,t,n){let r=RR(e,t,n),i=r.kind===`chain`?r.layers:[];return{path:r.home,above:i.filter(e=>e!==r.home),projectDir:e??null,cwd:t??null}}function VR(e){return HR(e).join(`
|
|
172
|
+
`)||null}function HR(e){switch(e.kind){case`chain`: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 UR(e,t){let n=IR(e,t).filter(e=>FR(e)===`present`),r=new Map;for(let e of n){let t=v.dirname(e),n=v.basename(e).replace(/\.(json5|json)$/,``),i=v.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 WR(e,t,n,r){return e===null?{...ez,config:OP(ez.raw,t)}:KR(e,s.readFileSync(e,`utf-8`),t,n,r)}const GR={projectDir:null,checkout:null,beneath:{dropped:[],rendering:new Map}};function KR(e,t,n,r,i){let a=rz(e,t,i,(t,a)=>{let o=dR(uR(t,e),r,{config:n,rendering:r.beneath.rendering},(t,n,r)=>QR(t,n,r,e,i)),s=gR(o,r.beneath.dropped);return{inherited:new Set([...MF(o.config),...a.filter(e=>s(e).length>0)]),layer:{plugins:o,owning:s}}}),{plugins:o,owning:s}=a.layer,c=_R(OP(a.raw,o.config),s);return{source:t,raw:a.raw,warnings:[...a.warnings,...o.dropped.map(tR)],plugins:{loaded:o.loaded,dropped:o.dropped,reached:c.reached,rendering:o.rendering},config:c.config}}const qR=new WeakMap;function JR(e,t,n,r){let i=JSON.stringify([[...r??[]].sort(),e.map(e=>[e,XR(e)])]),a=qR.get(n)??new Map;qR.set(n,a);let o=JSON.stringify([t.projectDir,t.checkout?.root??null]),s=a.get(o);if(s?.key===i)return s.layer;let c=dR(e,t,{config:n,rendering:new Map},(e,t,n)=>QR(e,t,n,`<installed plugins>`,r));return a.set(o,{key:i,layer:c}),c}function YR(e,t,n){return dR(e,{projectDir:null,checkout:n},{config:t,rendering:new Map},(e,t,n)=>QR(e,t,n,`<plugin install>`,void 0)).dropped}function XR(e){try{let t=s.statSync(e);return`${t.ino}:${t.size}:${t.mtimeMs}`}catch(e){return e.code??`unreadable`}}function ZR(e,t,n,r,i=e=>s.readFileSync(e,`utf-8`),a){let o={projectDir:r.projectDir,checkout:r.cwd===null?null:GT(r.cwd)},c=jR(o.projectDir),l=JR(c.definitions,o,t,a),u={...l,dropped:[...l.dropped,...c.strays]};n.warned(c.unchecked.map(e=>`Plugin folder could not be listed: ${e.path} — ${e.error}`));let d=u.config,f=[];for(let t of e){n.entered(t);let e=f.at(-1)?.plugins,r=KR(t,i(t),f.at(-1)?.config??d,{...o,beneath:{dropped:[...u.dropped,...f.flatMap(e=>e.plugins.dropped)],rendering:e?.rendering??u.rendering}},a);n.warned(r.warnings),f.push({...r,path:t})}let p=new Set(f.flatMap(e=>[...e.plugins.reached])),m=e=>p.has(e.path),h=u.dropped.filter(m),g=u.dropped.filter(e=>!m(e));n.warned(h.map(tR));let _={checkout:o.checkout,roots:c.roots,loaded:u.loaded,dropped:h,unreached:g,reached:p,rendering:f.at(-1)?.plugins.rendering??u.rendering},v=f.at(-1);if(v===void 0)return{layers:f,base:d,installed:_,config:tz(WR(null,d,GR),`<default>`,a)};try{return{layers:f,base:d,installed:_,config:tz(v,v.path,a)}}catch(e){for(let e of f.slice(0,-1))n.entered(e.path),tz(e,e.path,a);throw n.entered(v.path),e}}function QR(e,t,n,r,i){if(n){tz($R(e),r,i);return}let a=fR(t),o=[],s={source:``,issues:o,allowedPalettes:new Set,groups:[]};if(YL(s,e,Iv(e),a),XL(s,e,a),o.length>0)throw new mD(r,o)}function $R(e){return{config:e,raw:{root:e.root,presets:e.presets},source:``}}const ez={raw:{},source:``,warnings:[],plugins:{loaded:[],dropped:[],reached:new Set,rendering:new Map}};function tz({config:e,raw:t,source:n},r=`<config>`,i=new Set(gh())){let a=[],o={source:n,issues:a,allowedPalettes:i,groups:[]};if(DL(o,e,t),XL(o,e),a.length>0)throw new mD(r,a);let s=SI(e,a);if(a.length>0)throw new mD(r,a);return oP(EN(s))}function nz(e,t,n=new Set(gh()),r=iz){return rz(e,t,n,()=>({inherited:r,layer:null})).raw}function rz(e,t,n,r){let i=az(e,t),a=_D(e,t),o=a===null?[]:[a],s=[],c={source:t,issues:s,allowedPalettes:n??new Set(gh()),groups:[]};if(!qD(i))throw new mD(e,[{path:``,message:`Config root must be an object, got ${JD(i)}`}],o);let{inherited:l,layer:u}=r(i.plugins===void 0?[]:cz({...c,issues:[]},i.plugins)??[],qD(i.segments)?Object.keys(i.segments):[]),d=oz(c,i,l);if(s.length>0)throw new mD(e,s,o);return{raw:d,warnings:o,layer:u}}const iz=new Set;function az(e,t){try{return Nr.default.parse(t)}catch(t){let n=t;throw new mD(e,[{path:``,message:`JSON5 syntax error: ${n.message}`,line:n.lineNumber,col:n.columnNumber}])}}function oz(e,t,n){for(let n of Object.keys(t))sz.has(n)||e.issues.push({path:n,message:`Unknown top-level key "${n}". Expected one of: ${[...sz].join(`, `)}`,line:Y(e.source,[n])});let r={};return t.globals!==void 0&&(r.globals=KO(e,`globals`,t.globals)),t.variables!==void 0&&(r.variables=zP(e,`variables`,t.variables)),t.segments!==void 0&&(r.segments=NF(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.
|
|
173
173
|
Replace: layout: [["seg1", "seg2"], ["seg3"]]
|
|
174
174
|
With: root: { v: [{ h: ["seg1", "seg2"] }, "seg3"] }
|
|
175
|
-
Single-row example: root: { h: ["seg1", "seg2"] }`,line:Y(e.source,[`layout`])}),t.root!==void 0&&(r.root=tI(e,`root`,t.root)),t.actions!==void 0&&(r.actions=TI(e,t.actions)),t.looks!==void 0&&e.issues.push({path:`looks`,message:`"looks" was renamed "styles" — move the block under styles: { … } (and globals.look to globals.style)`,line:Y(e.source,[`looks`])}),t.styles!==void 0&&(r.styles=_L(e,t.styles)),t.themeDefaults!==void 0&&(r.themeDefaults=WO(e,t.themeDefaults)),t.presets!==void 0&&(r.presets=yL(e,t.presets)),t.editGlobals!==void 0&&(r.editGlobals=JO(e,`editGlobals`,t.editGlobals)),t.helpers!==void 0&&(r.helpers=bL(e,t.helpers)),t.plugins!==void 0&&(r.plugins=sz(e,t.plugins)),lI(e,r),yI(e,r),Dk(e,r),wD(e,r,X,`the global settings menu`),r}const oz=new Set([`globals`,`variables`,`segments`,`layout`,`looks`,`root`,`actions`,`styles`,`themeDefaults`,`presets`,`editGlobals`,`helpers`,`plugins`]);function sz(e,t){if(Array.isArray(t)&&t.every(e=>typeof e==`string`&&e!==``))return t;e.issues.push({path:`plugins`,message:`"plugins" must be a list of plugin definition paths, got ${qD(t)}`,line:Y(e.source,[`plugins`])})}const cz={},lz=Lj(`commands.`),uz=Uj(`autocompact.`,e=>`{{ template "formatTokenCount" ${e} }}`),dz=`trimPrefix "/" (trimPrefix .project_dir .current_dir)`,fz=`{{ \$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 (${dz}) (basename .project_dir) (ne (${dz}) "") }}{{ end }}{{ end }}{{ action "copyDir" (abbreviatePath \$dir) }}`,pz=`{{ ${Hk} }}`,mz={min:0,max:100,step:5},hz={warnAt:{label:`warning at %`,domain:mz,default:50},errorAt:{label:`error at %`,domain:{...mz,atLeast:`warnAt`},default:80}};function gz(e){return{budget:{label:`budget $`,domain:{min:0,max:1e4,step:5},default:e},warnAt:{label:`warning at %`,domain:mz,default:80}}}const _z={globals:{palette:`tokyo-night`},variables:{...lz.variables,...cD,current_dir:{kind:`input`,path:`workspace.current_dir`,default:`?`},"model.display_name":{kind:`input`,path:`model.display_name`,default:``},"effort.level":{kind:`input`,path:`effort.level`,default:``},"effort.glyphs":{kind:`literal`,value:`? `},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.tracking":{kind:`input`,path:`git.tracking`,default:``},"git.stash":{kind:`input`,path:`git.stash`,type:`number`,default:0},"git.status":{kind:`input`,path:`git.status`,default:`clean`},"git.operation":{kind:`input`,path:`git.operation`,default:``},"git.timeSinceCommit":{kind:`input`,path:`git.timeSinceCommit`,type:`number`,default:0},"git.color.branch":{kind:`literal`,value:`primary`},"git.color.staged":{kind:`literal`,value:`success`},"git.color.unstaged":{kind:`literal`,value:`warning`},"git.color.untracked":{kind:`literal`,value:`accent`},"git.color.conflicts":{kind:`literal`,value:`error`},"git.color.ahead":{kind:`literal`,value:`success`},"git.color.behind":{kind:`literal`,value:`warning`},"git.color.stash":{kind:`literal`,value:`accent`},"git.detail":{kind:`state`,key:`git-detail`,default:`collapsed`},"git.prNumber":{kind:`input`,path:`git.prNumber`,type:`number`,default:0},"git.prState":{kind:`input`,path:`git.prState`,default:``},"git.prUrl":{kind:`input`,path:`git.prUrl`,default:``},"git.prError":{kind:`input`,path:`git.prError`,default:``},"cache.expiresAt":{kind:`input`,path:`cache.expiresAt`,type:`number`,default:0},"session.cost":{kind:`input`,path:`session.cost`,type:`number`,default:0},"session.tokens":{kind:`input`,path:`session.tokens`,type:`number`,default:0},"today.cost":{kind:`input`,path:`today.cost`,type:`number`,default:0},"today.tokens":{kind:`input`,path:`today.tokens`,type:`number`,default:0},"block.nativeUtilization":{kind:`input`,path:`block.nativeUtilization`,type:`number`,default:0},"block.resetsAt":{kind:`input`,path:`block.resetsAt`,type:`number`,default:0},"weekly.percentage":{kind:`input`,path:`weekly.percentage`,type:`number`,default:0},"weekly.resetsAt":{kind:`input`,path:`weekly.resetsAt`,type:`number`,default:0},"burn.costPerHour":{kind:`input`,path:`burn.costPerHour`,type:`number`,default:-1},"block.etaMinutes":{kind:`input`,path:`block.etaMinutes`,type:`number`,default:-1},"weekly.etaMinutes":{kind:`input`,path:`weekly.etaMinutes`,type:`number`,default:-1},"speed.input":{kind:`input`,path:`speed.input`,type:`number`,default:-1},"speed.output":{kind:`input`,path:`speed.output`,type:`number`,default:-1},"speed.total":{kind:`input`,path:`speed.total`,type:`number`,default:-1},"speed.history":{kind:`input`,path:`speed.history`,type:`string`,default:``},"context.totalTokens":{kind:`input`,path:`context.totalTokens`,type:`number`,default:0},"context.contextLeft":{kind:`input`,path:`context.contextLeft`,type:`number`,default:100},"memento.ceiling":{kind:`input`,path:`memento.ceiling`,type:`number`,default:-1},"memento.off":{kind:`input`,path:`memento.off`,type:`boolean`,default:!1},"memento.session":{kind:`input`,path:`memento.session`,default:``},"memento.error":{kind:`input`,path:`memento.error`,default:``},"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:{group:`location`,description:"The current directory, shortened fish-style — `~` under home, project-relative inside the project. Click to copy the full path.",template:fz},model:{group:`model-context`,description:`The active model's display name, followed by the effort gauge (a chevron ladder, climbing on a bubble at max) when an effort level is set.`,template:`✱ {{ formatModelName .model.display_name }}{{ if ne .effort.level "" }} {{ template "effortGauge" . }}{{ end }}`,when:`{{ ne .model.display_name "" }}`},sessionId:{group:`session-tools`,description:`The session id, truncated to 8 characters.`,template:`⌗{{ trunc 8 .session.id }}`,when:`{{ ne .session.id "" }}`},version:{group:`model-context`,description:`The Claude Code version reported in the hook payload.`,template:`◈ v{{ .version }}`,when:`{{ ne .version "" }}`},tmux:{group:`location`,description:`The tmux session name; hidden when not inside tmux.`,template:`tmux:{{ .tmux.session | default "none" }}`,when:`{{ ne .tmux.session "" }}`},host:{group:`location`,description:`user@host on a warning background, shown only over SSH.`,template:`⇄ {{ .host.user | default "?" }}@{{ .host.name | default "?" }}`,bg:`warning`,when:`{{ .host.ssh }}`},gitaculous:{group:`git`,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:pz,when:`{{ ne .git.branch "" }}`,settings:{aheadBehind:{label:`ahead/behind`,domain:`bool`,default:!0},flags:{label:`dirty flags`,domain:`bool`,default:!0},operation:{label:`operation`,domain:`bool`,default:!0},repo:{label:`repo name`,domain:`bool`,default:!0},sha:{label:`commit hash`,domain:`bool`,default:!0},stash:{label:`stash`,domain:`bool`,default:!0},upstream:{label:`upstream`,domain:`bool`,default:!0},age:{label:`time since commit`,domain:`bool`,default:!0}}},gitPr:{group:`git`,description:"The pull request open for this branch, as a link; `⚠ PR` when the forge lookup failed.",template:`{{ if eq .git.prState "open" }}{{ link .git.prUrl (printf "⇆ #%v" .git.prNumber) }}{{ else }}⚠ PR{{ end }}`,when:`{{ or (eq .git.prState "open") (ne .git.prError "") }}`},toolbar:{group:`session-tools`,description:`Quick actions: copy the session id, and open the project, transcript or repo.`,template:Ej(``).template},commands:{group:`session-tools`,description:`Type /compact, /model or /clear into this session; /clear asks for a second click. Hidden when not inside tmux.`,template:lz.template,when:lz.when},themeSwitcher:{group:`session-tools`,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:{group:`cost-limits`,description:`This session's cost and token total, with a budget warning once a budget is configured.`,template:`§ {{ template "formatCost" .session.cost }} ({{ template "formatTokens" .session.tokens }}){{ template "budgetStatus" (dict "cost" .session.cost "budget" .settings.budget "warn" .settings.warnAt) }}`,settings:gz(0)},today:{group:`cost-limits`,description:`Today's cost and tokens across every session, with a budget warning once a budget is configured.`,template:`☉ {{ template "formatCost" .today.cost }} ({{ template "formatTokens" .today.tokens }}){{ template "budgetStatus" (dict "cost" .today.cost "budget" .settings.budget "warn" .settings.warnAt) }}`,settings:gz(50)},block:{group:`cost-limits`,description:`The 5-hour rate-limit block: percent used and time to reset, heating to warning then error.`,template:`◱ {{ round .block.nativeUtilization }}% ({{ template "formatResetCountdown" .block.resetsAt }})`,bg:`{{ ramp (round .block.nativeUtilization) "step" 0 (tint) .settings.warnAt "warning" .settings.errorAt "error" }}`,settings:hz,when:`{{ gt .block.resetsAt 0 }}`},weekly:{group:`cost-limits`,description:`The weekly rate-limit quota: percent used and time to reset, heating to warning then error.`,template:`◑ {{ round .weekly.percentage }}% ({{ template "formatResetCountdown" .weekly.resetsAt }})`,bg:`{{ ramp (round .weekly.percentage) "step" 0 (tint) .settings.warnAt "warning" .settings.errorAt "error" }}`,settings:hz,when:`{{ gt .weekly.resetsAt 0 }}`},burnrate:{group:`cost-limits`,description:`Spend per hour, with the projected time to the 5-hour and weekly limits.`,template:`⚡ {{ template "formatRate" .burn.costPerHour }} · {{ template "formatEta" .block.etaMinutes }} to 5h · {{ template "formatEta" .weekly.etaMinutes }} to wk`,bg:`{{ ramp .block.etaMinutes "step" -1 (tint) 0 "error" .settings.errorWithin "warning" .settings.warnWithin (tint) }}`,settings:{errorWithin:{label:`error within (min)`,domain:{min:0,max:300,step:5},default:30},warnWithin:{label:`warning within (min)`,domain:{min:0,max:300,step:5,atLeast:`errorWithin`},default:60}},when:`{{ or (gt .block.resetsAt 0) (gt .weekly.resetsAt 0) }}`},speed:{group:`activity`,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:{group:`activity`,description:`A sparkline of recent token throughput.`,template:`⚡ {{ sparkline .speed.history 24 }}`,when:`{{ ne .speed.history "" }}`},cacheTimer:{group:`activity`,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) ${Rm} }}`,when:`{{ gt .cache.expiresAt 0 }}`},context:{group:`model-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:{group:`model-context`,description:`The memento plugin's context ceiling for this session: − and + move it by 100K, ∞ lifts it, ↺ drops this session's own setting.`,template:`{{ if ne .memento.error "" }}⌈ ⚠ {{ .memento.error }} {{ action "ceiling.clear" "↺" }}{{ else }}⌈ {{ if .memento.off }}off{{ else }}{{ template "formatTokenCount" .memento.ceiling }} {{ action "ceiling.lower" "−" }} {{ action "ceiling.raise" "+" }} {{ action "ceiling.off" "∞" }}{{ end }}{{ if ne .memento.session "" }} {{ action "ceiling.clear" "↺" }}{{ end }}{{ end }}`,bg:`{{ if ne .memento.error "" }}{{ color "error" }}{{ else }}{{ tint }}{{ end }}`,when:`{{ or (ge .memento.ceiling 0) (ne .memento.error "") }}`},autocompact:{group:`model-context`,description:`Claude Code's auto-compact window: − and + move it by 100K, ↺ returns it to auto. Clicks type /autocompact into this session, so the controls show only inside tmux.`,template:uz.template,bg:uz.bg,when:uz.when},metrics:{group:`activity`,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:{group:`activity`,description:`What Claude is doing: the slash command that opened the turn, the in-progress todo, and the tools in flight.`,template:`{{ if .activity.command }} ⌘ {{ .activity.command }}{{ end }}{{ if .activity.todo.total }}{{ if .activity.todo.active }} ☐ {{ .activity.todo.position }}/{{ .activity.todo.total }} {{ abbrev 32 .activity.todo.active }}{{ else }} ☑ {{ .activity.todo.completed }}/{{ .activity.todo.total }}{{ end }}{{ end }}{{ if .activity.tool.running }} ⟳ {{ template "formatToolTally" .activity.tool.running }}{{ end }}{{ if .activity.tool.done }} ✓ {{ template "formatToolTally" .activity.tool.done }}{{ end }} `,when:`{{ or (ne .activity.command "") (gt .activity.todo.total 0) (ne .activity.tool.running "") (ne .activity.tool.done "") }}`}},root:{rows:{identity:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`host`},{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`}]},status:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`context`},{kind:`segment`,name:`ceiling`},{kind:`segment`,name:`autocompact`}]},{kind:`segment`,name:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`activity`}]}}},actions:{...Ej(``).actions,...lz.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`},...uz.actions},styles:{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}},themeDefaults:cz,presets:{default:{},compact:{root:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`segment`,name:`context`}]},globals:{padding:0}},verbose:{root:{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`segment`,name:`gitPr`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`context`},{kind:`segment`,name:`ceiling`},{kind:`segment`,name:`autocompact`}]},{kind:`segment`,name:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`burnrate`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`speed`},{kind:`segment`,name:`tokenSparkline`}]}]}},zen:{root:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`directory`},{kind:`segment`,name:`context`}]},globals:{endcaps:`plain`,style:`dim`}},git:{root:{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`host`},{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`segment`,name:`gitPr`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`segment`,name:`context`},{kind:`segment`,name:`activity`}]}]}},usage:{root:{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`context`},{kind:`segment`,name:`ceiling`},{kind:`segment`,name:`autocompact`}]},{kind:`segment`,name:`cacheTimer`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`burnrate`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`session`},{kind:`segment`,name:`today`},{kind:`segment`,name:`speed`},{kind:`segment`,name:`tokenSparkline`}]}]}},dense:{root:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`host`},{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`segment`,name:`model`},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`context`},{kind:`segment`,name:`ceiling`},{kind:`segment`,name:`autocompact`}]},{kind:`segment`,name:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`session`},{kind:`segment`,name:`activity`}]},globals:{padding:0}}},editGlobals:{endcaps:`plain`,default_separator:` | `},helpers:{effortGauge:`{{ \$ord := default 0 (get (dict "low" 1 "medium" 2 "high" 3 "xhigh" 4 "max" 5) .effort.level) }}{{ \$glyphs := compact (splitList " " .effort.glyphs) }}{{ $bubble := readableOn (mix (bgOf) (color "accent") 40) (bgOf) 1.08 }}{{ $climbing := readableOn (stepped 1 (color "primary") 1 (color "secondary") 1 (color "accent")) $bubble ${Rm} }}{{ \$climb := frames 1 (index \$glyphs 1) 1 (index \$glyphs 3) 1 (index \$glyphs 4) }}{{ if eq \$ord 5 }}{{ fg \$bubble "" }}{{ bg \$bubble (fg \$climbing \$climb) }}{{ fg \$bubble "" }}{{ else }}{{ fg (ramp $ord "step" 0 (${Hk}) 2 (readableOn (color "accent") (bgOf) ${Rm})) (index $glyphs $ord) }}{{ end }}`,gitPaint:`{{ fg (readableOn (color .color) (bgOf) ${Rm}) .text }}`,gitCollapsed:`{{ template "gitBranch" . }}{{ template "gitAheadBehind" . }}{{ template "gitFlags" . }}`,gitExpanded:`(git){{ template "gitRepo" . }}{{ template "gitOperation" . }}{{ template "gitSha" . }}{{ template "gitFlags" . }} {{ template "gitBranch" . }}{{ template "gitUpstream" . }}{{ template "gitStash" . }}{{ template "gitAge" . }}`,gitBranch:`⎇ {{ template "gitPaint" (dict "color" .git.color.branch "text" .git.branch) }}`,gitRepo:`{{ if and .settings.repo (ne .git.repoName "") }} {{ .git.repoName }}{{ end }}`,gitOperation:`{{ if and .settings.operation (ne .git.operation "") }} [{{ .git.operation }}]{{ end }}`,gitSha:`{{ if and .settings.sha (ne .git.sha "") }} {{ .git.sha }}{{ end }}`,gitFlags:`{{ if and .settings.flags (or (gt .git.staged 0) (gt .git.unstaged 0) (gt .git.untracked 0) (gt .git.conflicts 0)) }} {{ if gt .git.staged 0 }}{{ template "gitPaint" (dict "color" .git.color.staged "text" "S") }}{{ end }}{{ if gt .git.unstaged 0 }}{{ template "gitPaint" (dict "color" .git.color.unstaged "text" "U") }}{{ end }}{{ if gt .git.untracked 0 }}{{ template "gitPaint" (dict "color" .git.color.untracked "text" "?") }}{{ end }}{{ if gt .git.conflicts 0 }}{{ template "gitPaint" (dict "color" .git.color.conflicts "text" (printf "!%v" .git.conflicts)) }}{{ end }}{{ end }}`,gitAheadBehind:`{{ if and .settings.aheadBehind (or (gt .git.ahead 0) (gt .git.behind 0)) }} {{ if gt .git.ahead 0 }}{{ template "gitPaint" (dict "color" .git.color.ahead "text" (printf "+%v" .git.ahead)) }}{{ end }}{{ if and (gt .git.ahead 0) (gt .git.behind 0) }}/{{ end }}{{ if gt .git.behind 0 }}{{ template "gitPaint" (dict "color" .git.color.behind "text" (printf "-%v" .git.behind)) }}{{ end }}{{ end }}`,gitUpstream:`{{ if and .settings.upstream (ne .git.upstream "") }} [{{ .git.upstream }}{{ template "gitAheadBehind" . }}]{{ end }}`,gitStash:`{{ if and .settings.stash (gt .git.stash 0) }} {{ template "gitPaint" (dict "color" .git.color.stash "text" (printf "(%v stashed)" .git.stash)) }}{{ end }}`,gitAge:`{{ if and .settings.age (gt .git.timeSinceCommit 0) }} ◷ {{ template "formatTimeSince" .git.timeSinceCommit }}{{ end }}`,formatCost:'{{ if lt . 0.01 }}<$0.01{{ else }}${{ printf "%.2f" . }}{{ end }}',formatTokenCount:Wj(`.`),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 .)) }}`}},vz=new Set([_z.globals.palette,...Object.keys(_z.themeDefaults),...Object.values(_z.segments).map(e=>e.palette)].filter(e=>e!==void 0)),yz=DP(tz(`<default>`,JSON.stringify(_z),vz),_z),bz=nv(yz.presets);function xz(e){return bz.includes(e)}const Sz=Object.freeze({});function Cz(e,t){return e.kind===`decided`?t[e.name]??Sz:Sz}function wz(e,t){return{...e,...Object.fromEntries(S_.map(n=>[n,e[n]??t[n]]))}}const Tz=/"(?:cache_read_input_tokens|cache_creation_input_tokens)":[1-9]/;function Ez(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 Dz(e){let t=await Oz(e);return t.kind===`ok`?L(Math.floor((t.value+36e5)/1e3)):t}async function Oz(e){for(let t of[65536,1048576]){let n=await Mi(e,t);if(n.kind!==`ok`)return n;let r=kz(n.value.buf,n.value.fromStart);if(r!=null)return L(r);if(n.value.fromStart)return R}return R}function kz(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||!
|
|
175
|
+
Single-row example: root: { h: ["seg1", "seg2"] }`,line:Y(e.source,[`layout`])}),t.root!==void 0&&(r.root=nI(e,`root`,t.root)),t.actions!==void 0&&(r.actions=EI(e,t.actions)),t.looks!==void 0&&e.issues.push({path:`looks`,message:`"looks" was renamed "styles" — move the block under styles: { … } (and globals.look to globals.style)`,line:Y(e.source,[`looks`])}),t.styles!==void 0&&(r.styles=vL(e,t.styles)),t.themeDefaults!==void 0&&(r.themeDefaults=GO(e,t.themeDefaults)),t.presets!==void 0&&(r.presets=bL(e,t.presets)),t.editGlobals!==void 0&&(r.editGlobals=YO(e,`editGlobals`,t.editGlobals)),t.helpers!==void 0&&(r.helpers=xL(e,t.helpers)),t.plugins!==void 0&&(r.plugins=cz(e,t.plugins)),uI(e,r),bI(e,r),Ok(e,r),TD(e,r,X,`the global settings menu`),r}const sz=new Set([`globals`,`variables`,`segments`,`layout`,`looks`,`root`,`actions`,`styles`,`themeDefaults`,`presets`,`editGlobals`,`helpers`,`plugins`]);function cz(e,t){if(Array.isArray(t)&&t.every(e=>typeof e==`string`&&e!==``))return t;e.issues.push({path:`plugins`,message:`"plugins" must be a list of plugin definition paths, got ${JD(t)}`,line:Y(e.source,[`plugins`])})}const lz={},uz=Rj(`commands.`),dz=Wj(`autocompact.`,e=>`{{ template "formatTokenCount" ${e} }}`),fz=`trimPrefix "/" (trimPrefix .project_dir .current_dir)`,pz=`{{ \$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 (${fz}) (basename .project_dir) (ne (${fz}) "") }}{{ end }}{{ end }}{{ action "copyDir" (abbreviatePath \$dir) }}`,mz=`{{ ${Uk} }}`,hz={min:0,max:100,step:5},gz={warnAt:{label:`warning at %`,domain:hz,default:50},errorAt:{label:`error at %`,domain:{...hz,atLeast:`warnAt`},default:80}};function _z(e){return{budget:{label:`budget $`,domain:{min:0,max:1e4,step:5},default:e},warnAt:{label:`warning at %`,domain:hz,default:80}}}const vz={globals:{palette:`tokyo-night`},variables:{...uz.variables,...lD,current_dir:{kind:`input`,path:`workspace.current_dir`,default:`?`},"model.display_name":{kind:`input`,path:`model.display_name`,default:``},"effort.level":{kind:`input`,path:`effort.level`,default:``},"effort.glyphs":{kind:`literal`,value:`? `},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.tracking":{kind:`input`,path:`git.tracking`,default:``},"git.stash":{kind:`input`,path:`git.stash`,type:`number`,default:0},"git.status":{kind:`input`,path:`git.status`,default:`clean`},"git.operation":{kind:`input`,path:`git.operation`,default:``},"git.timeSinceCommit":{kind:`input`,path:`git.timeSinceCommit`,type:`number`,default:0},"git.color.branch":{kind:`literal`,value:`primary`},"git.color.staged":{kind:`literal`,value:`success`},"git.color.unstaged":{kind:`literal`,value:`warning`},"git.color.untracked":{kind:`literal`,value:`accent`},"git.color.conflicts":{kind:`literal`,value:`error`},"git.color.ahead":{kind:`literal`,value:`success`},"git.color.behind":{kind:`literal`,value:`warning`},"git.color.stash":{kind:`literal`,value:`accent`},"git.detail":{kind:`state`,key:`git-detail`,default:`collapsed`},"git.prNumber":{kind:`input`,path:`git.prNumber`,type:`number`,default:0},"git.prState":{kind:`input`,path:`git.prState`,default:``},"git.prUrl":{kind:`input`,path:`git.prUrl`,default:``},"git.prError":{kind:`input`,path:`git.prError`,default:``},"cache.expiresAt":{kind:`input`,path:`cache.expiresAt`,type:`number`,default:0},"session.cost":{kind:`input`,path:`session.cost`,type:`number`,default:0},"session.tokens":{kind:`input`,path:`session.tokens`,type:`number`,default:0},"today.cost":{kind:`input`,path:`today.cost`,type:`number`,default:0},"today.tokens":{kind:`input`,path:`today.tokens`,type:`number`,default:0},"block.nativeUtilization":{kind:`input`,path:`block.nativeUtilization`,type:`number`,default:0},"block.resetsAt":{kind:`input`,path:`block.resetsAt`,type:`number`,default:0},"weekly.percentage":{kind:`input`,path:`weekly.percentage`,type:`number`,default:0},"weekly.resetsAt":{kind:`input`,path:`weekly.resetsAt`,type:`number`,default:0},"burn.costPerHour":{kind:`input`,path:`burn.costPerHour`,type:`number`,default:-1},"block.etaMinutes":{kind:`input`,path:`block.etaMinutes`,type:`number`,default:-1},"weekly.etaMinutes":{kind:`input`,path:`weekly.etaMinutes`,type:`number`,default:-1},"speed.input":{kind:`input`,path:`speed.input`,type:`number`,default:-1},"speed.output":{kind:`input`,path:`speed.output`,type:`number`,default:-1},"speed.total":{kind:`input`,path:`speed.total`,type:`number`,default:-1},"speed.history":{kind:`input`,path:`speed.history`,type:`string`,default:``},"context.totalTokens":{kind:`input`,path:`context.totalTokens`,type:`number`,default:0},"context.contextLeft":{kind:`input`,path:`context.contextLeft`,type:`number`,default:100},"memento.ceiling":{kind:`input`,path:`memento.ceiling`,type:`number`,default:-1},"memento.off":{kind:`input`,path:`memento.off`,type:`boolean`,default:!1},"memento.session":{kind:`input`,path:`memento.session`,default:``},"memento.error":{kind:`input`,path:`memento.error`,default:``},"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:{group:`location`,description:"The current directory, shortened fish-style — `~` under home, project-relative inside the project. Click to copy the full path.",template:pz},model:{group:`model-context`,description:`The active model's display name, followed by the effort gauge (a chevron ladder, climbing on a bubble at max) when an effort level is set.`,template:`✱ {{ formatModelName .model.display_name }}{{ if ne .effort.level "" }} {{ template "effortGauge" . }}{{ end }}`,when:`{{ ne .model.display_name "" }}`},sessionId:{group:`session-tools`,description:`The session id, truncated to 8 characters.`,template:`⌗{{ trunc 8 .session.id }}`,when:`{{ ne .session.id "" }}`},version:{group:`model-context`,description:`The Claude Code version reported in the hook payload.`,template:`◈ v{{ .version }}`,when:`{{ ne .version "" }}`},tmux:{group:`location`,description:`The tmux session name; hidden when not inside tmux.`,template:`tmux:{{ .tmux.session | default "none" }}`,when:`{{ ne .tmux.session "" }}`},host:{group:`location`,description:`user@host on a warning background, shown only over SSH.`,template:`⇄ {{ .host.user | default "?" }}@{{ .host.name | default "?" }}`,bg:`warning`,when:`{{ .host.ssh }}`},gitaculous:{group:`git`,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:mz,when:`{{ ne .git.branch "" }}`,settings:{aheadBehind:{label:`ahead/behind`,domain:`bool`,default:!0},flags:{label:`dirty flags`,domain:`bool`,default:!0},operation:{label:`operation`,domain:`bool`,default:!0},repo:{label:`repo name`,domain:`bool`,default:!0},sha:{label:`commit hash`,domain:`bool`,default:!0},stash:{label:`stash`,domain:`bool`,default:!0},upstream:{label:`upstream`,domain:`bool`,default:!0},age:{label:`time since commit`,domain:`bool`,default:!0}}},gitPr:{group:`git`,description:"The pull request open for this branch, as a link; `⚠ PR` when the forge lookup failed.",template:`{{ if eq .git.prState "open" }}{{ link .git.prUrl (printf "⇆ #%v" .git.prNumber) }}{{ else }}⚠ PR{{ end }}`,when:`{{ or (eq .git.prState "open") (ne .git.prError "") }}`},toolbar:{group:`session-tools`,description:`Quick actions: copy the session id, and open the project, transcript or repo.`,template:Dj(``).template},commands:{group:`session-tools`,description:`Type /compact, /model or /clear into this session; /clear asks for a second click. Hidden when not inside tmux.`,template:uz.template,when:uz.when},themeSwitcher:{group:`session-tools`,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:{group:`cost-limits`,description:`This session's cost and token total, with a budget warning once a budget is configured.`,template:`§ {{ template "formatCost" .session.cost }} ({{ template "formatTokens" .session.tokens }}){{ template "budgetStatus" (dict "cost" .session.cost "budget" .settings.budget "warn" .settings.warnAt) }}`,settings:_z(0)},today:{group:`cost-limits`,description:`Today's cost and tokens across every session, with a budget warning once a budget is configured.`,template:`☉ {{ template "formatCost" .today.cost }} ({{ template "formatTokens" .today.tokens }}){{ template "budgetStatus" (dict "cost" .today.cost "budget" .settings.budget "warn" .settings.warnAt) }}`,settings:_z(50)},block:{group:`cost-limits`,description:`The 5-hour rate-limit block: percent used and time to reset, heating to warning then error.`,template:`◱ {{ round .block.nativeUtilization }}% ({{ template "formatResetCountdown" .block.resetsAt }})`,bg:`{{ ramp (round .block.nativeUtilization) "step" 0 (tint) .settings.warnAt "warning" .settings.errorAt "error" }}`,settings:gz,when:`{{ gt .block.resetsAt 0 }}`},weekly:{group:`cost-limits`,description:`The weekly rate-limit quota: percent used and time to reset, heating to warning then error.`,template:`◑ {{ round .weekly.percentage }}% ({{ template "formatResetCountdown" .weekly.resetsAt }})`,bg:`{{ ramp (round .weekly.percentage) "step" 0 (tint) .settings.warnAt "warning" .settings.errorAt "error" }}`,settings:gz,when:`{{ gt .weekly.resetsAt 0 }}`},burnrate:{group:`cost-limits`,description:`Spend per hour, with the projected time to the 5-hour and weekly limits.`,template:`⚡ {{ template "formatRate" .burn.costPerHour }} · {{ template "formatEta" .block.etaMinutes }} to 5h · {{ template "formatEta" .weekly.etaMinutes }} to wk`,bg:`{{ ramp .block.etaMinutes "step" -1 (tint) 0 "error" .settings.errorWithin "warning" .settings.warnWithin (tint) }}`,settings:{errorWithin:{label:`error within (min)`,domain:{min:0,max:300,step:5},default:30},warnWithin:{label:`warning within (min)`,domain:{min:0,max:300,step:5,atLeast:`errorWithin`},default:60}},when:`{{ or (gt .block.resetsAt 0) (gt .weekly.resetsAt 0) }}`},speed:{group:`activity`,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:{group:`activity`,description:`A sparkline of recent token throughput.`,template:`⚡ {{ sparkline .speed.history 24 }}`,when:`{{ ne .speed.history "" }}`},cacheTimer:{group:`activity`,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) ${zm} }}`,when:`{{ gt .cache.expiresAt 0 }}`},context:{group:`model-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:{group:`model-context`,description:`The memento plugin's context ceiling for this session: − and + move it by 100K, ∞ lifts it, ↺ drops this session's own setting.`,template:`{{ if ne .memento.error "" }}⌈ ⚠ {{ .memento.error }} {{ action "ceiling.clear" "↺" }}{{ else }}⌈ {{ if .memento.off }}off{{ else }}{{ template "formatTokenCount" .memento.ceiling }} {{ action "ceiling.lower" "−" }} {{ action "ceiling.raise" "+" }} {{ action "ceiling.off" "∞" }}{{ end }}{{ if ne .memento.session "" }} {{ action "ceiling.clear" "↺" }}{{ end }}{{ end }}`,bg:`{{ if ne .memento.error "" }}{{ color "error" }}{{ else }}{{ tint }}{{ end }}`,when:`{{ or (ge .memento.ceiling 0) (ne .memento.error "") }}`},autocompact:{group:`model-context`,description:`Claude Code's auto-compact window: − and + move it by 100K, ↺ returns it to auto. Clicks type /autocompact into this session, so the controls show only inside tmux.`,template:dz.template,bg:dz.bg,when:dz.when},metrics:{group:`activity`,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:{group:`activity`,description:`What Claude is doing: the slash command that opened the turn, the in-progress todo, and the tools in flight.`,template:`{{ if .activity.command }} ⌘ {{ .activity.command }}{{ end }}{{ if .activity.todo.total }}{{ if .activity.todo.active }} ☐ {{ .activity.todo.position }}/{{ .activity.todo.total }} {{ abbrev 32 .activity.todo.active }}{{ else }} ☑ {{ .activity.todo.completed }}/{{ .activity.todo.total }}{{ end }}{{ end }}{{ if .activity.tool.running }} ⟳ {{ template "formatToolTally" .activity.tool.running }}{{ end }}{{ if .activity.tool.done }} ✓ {{ template "formatToolTally" .activity.tool.done }}{{ end }} `,when:`{{ or (ne .activity.command "") (gt .activity.todo.total 0) (ne .activity.tool.running "") (ne .activity.tool.done "") }}`}},root:{rows:{identity:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`host`},{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`}]},status:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`context`},{kind:`segment`,name:`ceiling`},{kind:`segment`,name:`autocompact`}]},{kind:`segment`,name:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`activity`}]}}},actions:{...Dj(``).actions,...uz.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`},...dz.actions},styles:{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}},themeDefaults:lz,presets:{default:{},compact:{root:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`segment`,name:`context`}]},globals:{padding:0}},verbose:{root:{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`segment`,name:`gitPr`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`context`},{kind:`segment`,name:`ceiling`},{kind:`segment`,name:`autocompact`}]},{kind:`segment`,name:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`burnrate`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`speed`},{kind:`segment`,name:`tokenSparkline`}]}]}},zen:{root:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`directory`},{kind:`segment`,name:`context`}]},globals:{endcaps:`plain`,style:`dim`}},git:{root:{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`host`},{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`segment`,name:`gitPr`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`segment`,name:`context`},{kind:`segment`,name:`activity`}]}]}},usage:{root:{kind:`container`,direction:`vertical`,children:[{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`model`},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`context`},{kind:`segment`,name:`ceiling`},{kind:`segment`,name:`autocompact`}]},{kind:`segment`,name:`cacheTimer`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`burnrate`}]},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`session`},{kind:`segment`,name:`today`},{kind:`segment`,name:`speed`},{kind:`segment`,name:`tokenSparkline`}]}]}},dense:{root:{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`host`},{kind:`segment`,name:`directory`},{kind:`segment`,name:`gitaculous`},{kind:`segment`,name:`model`},{kind:`container`,direction:`horizontal`,children:[{kind:`segment`,name:`context`},{kind:`segment`,name:`ceiling`},{kind:`segment`,name:`autocompact`}]},{kind:`segment`,name:`cacheTimer`},{kind:`segment`,name:`block`},{kind:`segment`,name:`weekly`},{kind:`segment`,name:`session`},{kind:`segment`,name:`activity`}]},globals:{padding:0}}},editGlobals:{endcaps:`plain`,default_separator:` | `},helpers:{effortGauge:`{{ \$ord := default 0 (get (dict "low" 1 "medium" 2 "high" 3 "xhigh" 4 "max" 5) .effort.level) }}{{ \$glyphs := compact (splitList " " .effort.glyphs) }}{{ $bubble := readableOn (mix (bgOf) (color "accent") 40) (bgOf) 1.08 }}{{ $climbing := readableOn (stepped 1 (color "primary") 1 (color "secondary") 1 (color "accent")) $bubble ${zm} }}{{ \$climb := frames 1 (index \$glyphs 1) 1 (index \$glyphs 3) 1 (index \$glyphs 4) }}{{ if eq \$ord 5 }}{{ fg \$bubble "" }}{{ bg \$bubble (fg \$climbing \$climb) }}{{ fg \$bubble "" }}{{ else }}{{ fg (ramp $ord "step" 0 (${Uk}) 2 (readableOn (color "accent") (bgOf) ${zm})) (index $glyphs $ord) }}{{ end }}`,gitPaint:`{{ fg (readableOn (color .color) (bgOf) ${zm}) .text }}`,gitCollapsed:`{{ template "gitBranch" . }}{{ template "gitAheadBehind" . }}{{ template "gitFlags" . }}`,gitExpanded:`(git){{ template "gitRepo" . }}{{ template "gitOperation" . }}{{ template "gitSha" . }}{{ template "gitFlags" . }} {{ template "gitBranch" . }}{{ template "gitUpstream" . }}{{ template "gitStash" . }}{{ template "gitAge" . }}`,gitBranch:`⎇ {{ template "gitPaint" (dict "color" .git.color.branch "text" .git.branch) }}`,gitRepo:`{{ if and .settings.repo (ne .git.repoName "") }} {{ .git.repoName }}{{ end }}`,gitOperation:`{{ if and .settings.operation (ne .git.operation "") }} [{{ .git.operation }}]{{ end }}`,gitSha:`{{ if and .settings.sha (ne .git.sha "") }} {{ .git.sha }}{{ end }}`,gitFlags:`{{ if and .settings.flags (or (gt .git.staged 0) (gt .git.unstaged 0) (gt .git.untracked 0) (gt .git.conflicts 0)) }} {{ if gt .git.staged 0 }}{{ template "gitPaint" (dict "color" .git.color.staged "text" "S") }}{{ end }}{{ if gt .git.unstaged 0 }}{{ template "gitPaint" (dict "color" .git.color.unstaged "text" "U") }}{{ end }}{{ if gt .git.untracked 0 }}{{ template "gitPaint" (dict "color" .git.color.untracked "text" "?") }}{{ end }}{{ if gt .git.conflicts 0 }}{{ template "gitPaint" (dict "color" .git.color.conflicts "text" (printf "!%v" .git.conflicts)) }}{{ end }}{{ end }}`,gitAheadBehind:`{{ if and .settings.aheadBehind (or (gt .git.ahead 0) (gt .git.behind 0)) }} {{ if gt .git.ahead 0 }}{{ template "gitPaint" (dict "color" .git.color.ahead "text" (printf "+%v" .git.ahead)) }}{{ end }}{{ if and (gt .git.ahead 0) (gt .git.behind 0) }}/{{ end }}{{ if gt .git.behind 0 }}{{ template "gitPaint" (dict "color" .git.color.behind "text" (printf "-%v" .git.behind)) }}{{ end }}{{ end }}`,gitUpstream:`{{ if and .settings.upstream (ne .git.upstream "") }} [{{ .git.upstream }}{{ template "gitAheadBehind" . }}]{{ end }}`,gitStash:`{{ if and .settings.stash (gt .git.stash 0) }} {{ template "gitPaint" (dict "color" .git.color.stash "text" (printf "(%v stashed)" .git.stash)) }}{{ end }}`,gitAge:`{{ if and .settings.age (gt .git.timeSinceCommit 0) }} ◷ {{ template "formatTimeSince" .git.timeSinceCommit }}{{ end }}`,formatCost:'{{ if lt . 0.01 }}<$0.01{{ else }}${{ printf "%.2f" . }}{{ end }}',formatTokenCount:Gj(`.`),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 .)) }}`}},yz=new Set([vz.globals.palette,...Object.keys(vz.themeDefaults),...Object.values(vz.segments).map(e=>e.palette)].filter(e=>e!==void 0)),bz=OP(nz(`<default>`,JSON.stringify(vz),yz),vz),xz=rv(bz.presets);function Sz(e){return xz.includes(e)}const Cz=Object.freeze({});function wz(e,t){return e.kind===`decided`?t[e.name]??Cz:Cz}function Tz(e,t){return{...e,...Object.fromEntries(C_.map(n=>[n,e[n]??t[n]]))}}const Ez=/"(?:cache_read_input_tokens|cache_creation_input_tokens)":[1-9]/;function Dz(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 Oz(e){let t=await kz(e);return t.kind===`ok`?L(Math.floor((t.value+36e5)/1e3)):t}async function kz(e){for(let t of[65536,1048576]){let n=await Mi(e,t);if(n.kind!==`ok`)return n;let r=Az(n.value.buf,n.value.fromStart);if(r!=null)return L(r);if(n.value.fromStart)return R}return R}function Az(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||!Ez.test(t))continue;let r=Dz(t);if(r!=null)return r}return null}function jz(e,t){return{...e,claudeConfigDir:Fi(t.claudeConfigDir),env:t.mementoEnv}}const Mz=v.join(`lib`,`ceiling_config.py`),Nz=v.join(`skills`,`ceiling`,`bin`,`ceiling`);function Pz(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 Fz(e,t){let n=!0;for(let r of e){if(!s.existsSync(r))continue;let e;try{e=JSON.parse(s.readFileSync(r,`utf8`))?.enabledPlugins?.[t]}catch(e){return z(`memento lookup: ${r}: ${e.message}`)}typeof e==`boolean`&&(n=e)}return L(n)}function Iz(e,t){if(!s.existsSync(e))return R;let n;try{n=Pz(JSON.parse(s.readFileSync(e,`utf8`)),e)}catch(e){return z(`memento lookup: ${e.message}`)}let r=n.find(e=>e.projectPath===t)??n.find(e=>e.scope===`user`);if(r===void 0)return R;let i=Fz([v.join(v.dirname(v.dirname(e)),`settings.json`),v.join(t,`.claude`,`settings.json`),v.join(t,`.claude`,`settings.local.json`)],r.key);if(i.kind!==`ok`)return i;if(!i.value)return R;let a=[Mz,Nz].filter(e=>!s.existsSync(v.join(r.installPath,e)));return a.length===0?L(r.installPath):z(`memento at ${r.installPath} has no ${a.join(` or `)} — upgrade the plugin`)}function Lz(e,t=process.env){let n=new Set([`CLAUDE_PROJECT_DIR`,`CLAUDE_CODE_SESSION_ID`,...e.env===void 0?[]:ct]);return{...Object.fromEntries(Object.entries(t).filter(([e])=>!n.has(e))),...e.env,CLAUDE_CODE_SESSION_ID:e.sessionId,CLAUDE_PROJECT_DIR:e.projectDir||e.cwd}}function Rz(e){return e.stderr.trim()||e.error||`${e.reason}${e.exitCode===null?``:` (exit ${e.exitCode})`}`}function zz(e){let t;try{t=JSON.parse(e)}catch{return z(`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`)?L({ceiling:i,session:r}):z(`memento read: unexpected answer: ${e.trim()}`)}async function Bz(e,t){let n=await Le({bin:`python3`,args:[`-c`,`
|
|
177
177
|
import json, math, sys
|
|
178
178
|
sys.path.insert(0, sys.argv[1])
|
|
179
179
|
from ceiling_config import CONFIG_NAME, anchored, ceiling_in, in_force, session_directory
|
|
@@ -182,20 +182,20 @@ ceiling = in_force(directory, anchored(sys.argv[3]))
|
|
|
182
182
|
layer = ceiling_in(directory / CONFIG_NAME)
|
|
183
183
|
print(json.dumps({"ceiling": "off" if ceiling == math.inf else ceiling,
|
|
184
184
|
"session": layer.text if layer else None}))
|
|
185
|
-
`,v.join(e,`lib`),t.sessionId,t.cwd],env:
|
|
186
|
-
`).at(-1).trim();function
|
|
187
|
-
`),c=sr([{verb:zn,args:[s]}]),l=t.kind===`running`?
|
|
188
|
-
`,kick:!0,debug:`daemon unavailable (transient: ${e.cause}: ${e.message}) — kicking daemon`};case`permanent`:return{output:EV(e),kick:!1,debug:`daemon refused request (permanent: ${e.cause}) — not kicking`}}}const kV=[`black`,`red`,`green`,`yellow`,`blue`,`magenta`,`cyan`,`white`,`blackBright`,`redBright`,`greenBright`,`yellowBright`,`blueBright`,`magentaBright`,`cyanBright`,`whiteBright`];function AV(e){if(e===void 0||e.isDefault)return;let t=e.fixedValue;if(t!==void 0)return t.hex;let n=e.type===V.STANDARD&&e.number!==void 0?kV[e.number]:void 0;if(n===void 0)throw Error(`frames: no band colour for ${e.name}`);return n}const jV={bold:`bold`,dim:`dimColor`,italic:`italic`,underline:`underline`,strike:`strikethrough`,reverse:`inverse`,blink:null,blink2:null,conceal:null,underline2:null,frame:null,encircle:null,overline:null},MV=Object.keys(jV);function NV(e,t){let n=AV(t.color),r=AV(t.bgcolor),i={};for(let e of MV){if(t[e]!==!0)continue;let n=jV[e];if(n===null)throw Error(`frames: the band cannot draw ${e} text`);i[n]=!0}return{text:e,...n!==void 0&&{color:n},...r!==void 0&&{backgroundColor:r},...i,...t.link!==void 0&&{href:t.link}}}const PV=new U;function FV(e){return{ok:!0,band:new yf().decode(e).map(e=>{let t=e.plain,n=[],r=0;for(let i of e.spans){if(!(i.style instanceof U))throw Error(`frames: the decoder gave a span a ${typeof i.style} style`);i.start>r&&n.push(NV(t.slice(r,i.start),PV)),n.push(NV(t.slice(i.start,i.end),i.style)),r=i.end}return r<t.length&&n.push(NV(t.slice(r),PV)),n})}}function IV(e){let t=OV(Vt(e)).output;try{return FV(t)}catch(e){return FV(`${Jp}${qp}⚠ cc-candybar ${Gp(e instanceof Error?e.message:String(e))}${Yp}\n`)}}const LV={band:e=>JSON.stringify(IV(e)),statusline:(e,t)=>t,pane:(e,t)=>t};var RV=class{static CACHE_DIR=Ke();static USAGE_CACHE_DIR=v.join(this.CACHE_DIR,`usage`);static LOCKS_DIR=v.join(this.CACHE_DIR,`locks`);static isLocked(e){let t=v.join(this.LOCKS_DIR,e);if(!s.existsSync(t))return!1;try{let n=s.readFileSync(t,`utf-8`),r=parseInt(n.trim(),10);if(isNaN(r))return k(`Invalid PID in lock file ${e}, removing stale lock`),s.unlinkSync(t),!1;try{return process.kill(r,0),!0}catch(n){return n.code===`ESRCH`?(k(`Removing stale lock file ${e} for dead process ${r}`),s.unlinkSync(t),!1):(k(`Error checking process ${r} for lock ${e}:`,n),!0)}}catch(t){return k(`Error reading lock file ${e}:`,t),!0}}static async acquireLock(e,t=5e3){await this.ensureCacheDirectories();let n=v.join(this.LOCKS_DIR,e),r=Date.now(),i=String(process.pid);for(;Date.now()-r<t;)try{return await s.promises.writeFile(n,i,{flag:`wx`}),k(`Lock acquired for ${e}`),!0}catch(e){if(e.code===`EEXIST`)await he(50);else throw e}return k(`Failed to acquire lock for ${e} within ${t}ms`),!1}static async releaseLock(e){let t=v.join(this.LOCKS_DIR,e);try{await s.promises.unlink(t),k(`Lock released for ${e}`)}catch(t){t.code!==`ENOENT`&&k(`Error releasing lock for ${e}:`,t)}}static async ensureCacheDirectories(){try{await Promise.all([s.promises.mkdir(this.CACHE_DIR,{recursive:!0}),s.promises.mkdir(this.USAGE_CACHE_DIR,{recursive:!0}),s.promises.mkdir(this.LOCKS_DIR,{recursive:!0})])}catch(e){k(`Failed to create cache directories:`,e)}}static createProjectHash(e){return le(`md5`).update(e).digest(`hex`).substring(0,8)}static async getUsageCache(e,t){await this.ensureCacheDirectories();let n=v.join(this.USAGE_CACHE_DIR,`${e}.json`),r=`${e}.usage.lock`;for(let i=0;i<3;i++){if(this.isLocked(r)){k(`Cache for ${e} is locked, waiting...`),await he(75);continue}try{let r=await s.promises.readFile(n,`utf-8`),i=JSON.parse(r);return!t||i.timestamp>=t?(k(`[CACHE-HIT] ${e} disk cache: found`),this.deserializeDates(i.data)):(k(`${e} cache outdated: cache=${i.timestamp}, latest=${t}`),null)}catch(t){if(t.code===`ENOENT`)return k(`No shared ${e} usage cache found`),null;k(`Attempt ${i+1} failed to read ${e} cache: ${t.message}. Retrying...`),await he(75)}}return k(`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 r=`${e}.usage.lock`;if(!await this.acquireLock(r)){k(`Could not acquire lock to set usage cache for ${e}`);return}try{await this.ensureCacheDirectories();let r=v.join(this.USAGE_CACHE_DIR,`${e}.json`),i=JSON.stringify({data:t,timestamp:n||Date.now()});await s.promises.writeFile(r,i,`utf-8`),k(`[CACHE-SET] ${e} disk cache stored`)}catch(t){k(`Failed to save ${e} usage cache:`,t)}finally{await this.releaseLock(r)}}};const zV={"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 BV=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 RV.getUsageCache(`pricing`,e)}static async saveDiskCache(e){await RV.setUsageCache(`pricing`,e)}static async fetchPricingData(){return new Promise(e=>{let t=new n(this.GITHUB_PRICING_URL),r=me({hostname:t.hostname,path:t.pathname,headers:{"User-Agent":`cc-candybar`,"Cache-Control":`no-cache`},timeout:5e3},t=>{if(t.statusCode!==200){k(`HTTP ${t.statusCode}: ${t.statusMessage}`),e(null);return}let n=``,i=0;t.on(`data`,t=>{if(i+=t.length,i>1048576){k(`Response too large`),r.destroy(),e(null);return}n+=t}),t.on(`end`,()=>{try{let t=JSON.parse(n),r=t._meta,i={};for(let[e,n]of Object.entries(t))e!==`_meta`&&(i[e]=n);this.validatePricingData(i)?(k(`Fetched fresh pricing from GitHub for ${Object.keys(i).length} models`),k(`Pricing last updated: ${r?.updated||`unknown`}`),e(i)):(k(`Invalid pricing data structure`),e(null))}catch(t){k(`Failed to parse JSON:`,t),e(null)}}),t.on(`error`,t=>{k(`Response error:`,t),e(null)})});r.on(`error`,t=>{k(`Request error:`,t),e(null)}),r.on(`timeout`,()=>{k(`Request timeout`),r.destroy(),e(null)}),r.end()})}static async getCurrentPricing(){if(this.executionCache!==null)return k(`[CACHE-HIT] Pricing execution cache: ${Object.keys(this.executionCache).length} models`),this.executionCache;let e=await this.loadDiskCache();if(e)return k(`[CACHE-HIT] Pricing disk cache: ${Object.keys(e).length} models`),this.executionCache=e,k(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(e).length} models`),e;let t=await this.fetchPricingData();return t?(await this.saveDiskCache(t),k(`[CACHE-SET] Pricing disk cache stored: ${Object.keys(t).length} models`),this.executionCache=t,k(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(t).length} models`),t):(k(`[CACHE-FALLBACK] Using offline pricing data: ${Object.keys(zV).length} models`),this.executionCache=zV,k(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(zV).length} models`),zV)}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 k(`[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),k(`[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 VV=/<command-name>\s*([^<\s][^<]*?)\s*<\/command-name>/;function HV(e){if(typeof e==`string`)return VV.exec(e)?.[1]}function UV(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 WV(e){return typeof e==`string`?e:Array.isArray(e)?e.find(e=>typeof e==`object`&&!!e&&e.type===`text`&&typeof e.text==`string`)?.text??``:``}function GV(e,t){let n=e.message?.content,r=[],i=[],a;if(Array.isArray(n))for(let e of n){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=UV(t.input)??a);break}case`tool_result`:{let e=t.tool_use_id;typeof e==`string`&&i.push(e);break}default:break}}let o=t===`prompt`?HV(WV(n)):void 0;if(!(r.length===0&&i.length===0&&a===void 0&&o===void 0))return{...r.length>0&&{started:r},...i.length>0&&{finished:i},...a!==void 0&&{todos:a},...o!==void 0&&{command:o}}}function KV(e){if(e!==void 0)return[e];let t=ee();return[S(t,`.config`,`claude`),S(t,`.claude`)].filter(e=>d(e))}async function qV(e){let t=[];for(let n of e){let e=S(n,`projects`);if(d(e))try{let n=await Oi(e,{withFileTypes:!0});for(let r of n)if(r.isDirectory()){let n=S(e,r.name);t.push(n)}}catch(t){k(`Failed to read projects directory ${e}:`,t)}}return t}async function JV(e,t,n){let r=[],i=S(t,e,`subagents`);try{let t=(await Oi(i)).filter(e=>e.startsWith(`agent-`)&&e.endsWith(`.jsonl`));for(let a of t){let t=S(i,a);if(n?.has(t)){r.push(t);continue}try{let n=(await ki(t,`utf-8`)).split(`
|
|
189
|
-
`)[0];n&&JSON.parse(n).sessionId===e&&r.push(t)}catch{k(`Failed to check agent file ${t}`)}}}catch(e){k(`Failed to read subagents directory ${i}:`,e)}return r}function
|
|
190
|
-
`)){let e=nH(n);e&&t.push(e)}return t}async function iH(e){return rH(await ki(e,`utf-8`))}async function aH(e,t){let n=await ji(e,t===void 0?void 0:{offset:t.offset,ino:t.ino});if(n.kind!==`ok`)return n;let{buf:r,start:i,stamp:a,ino:o,reset:s}=n.value,c=r.lastIndexOf(10);return L(c<0?{entries:[],cursor:{offset:i,stamp:a,ino:o},reset:s}:{entries:rH(r.subarray(0,c+1).toString(`utf-8`)),cursor:{offset:i+c+1,stamp:a,ino:o},reset:s})}async function oH(e){return new Promise((t,n)=>{let r=[],i=u(e,{encoding:`utf8`}),a=ge({input:i,crlfDelay:1/0});a.on(`line`,e=>{let t=nH(e);t&&r.push(t)}),a.on(`close`,()=>{t(r)}),a.on(`error`,t=>{k(`Streaming parser error for ${e}:`,t),n(t)}),i.on(`error`,t=>{k(`File stream error for ${e}:`,t),n(t)})})}var sH=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 cH(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 lH=new Map,uH={cost:0,input:0,output:0,cacheCreation:0,cacheRead:0},dH={cost:null,calculatedCost:null,officialCost:null,tokens:null,tokenBreakdown:null};function fH(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function pH(){let e=new Date;return e.setHours(0,0,0,0),e.setDate(e.getDate()-1),e.getTime()}function mH(){return{input:0,output:0,cacheCreation:0,cacheRead:0}}async function hH(e,t,n,r){let i=fH(new Date(pH())),a=e&&!t?e:void 0,o=a?.entries??0,s=a?.cost??0,c=a?{...a.breakdown}:mH(),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 BV.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=fH(new Date(e.timestamp));if(r<i)continue;let a=l.get(r)??{...uH};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 gH(e){let t=0,n=0,r=mH(),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)??{...uH};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:dH,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 _H(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 vH=class{sessions=new Map;flight=new sH;seeded=new Map;seededDay=``;rescanIntervalMs;speedFlight=new sH;staleAgeMs;log;renderTally={hits:0,misses:0};sweeps=0;scans={seed:0,rescan:0};sweepTimer=null;constructor(e={}){this.log=e.logger??qt,this.staleAgeMs=e.staleAgeMs??864e5,this.rescanIntervalMs=e.rescanIntervalMs??6e4;let t=e.sweepIntervalMs??3e5;t>0&&(this.sweepTimer=setInterval(()=>this.sweepStale(),t),this.sweepTimer.unref())}getStats(){return{size:this.sessions.size,hits:this.renderTally.hits,misses:this.renderTally.misses,sweeps:this.sweeps,seeds:this.scans.seed,rescans:this.scans.rescan}}async getUsageInfo(e,t){let n=await this.ingest(e,t?.transcript_path,this.renderTally);if(n.kind===`failed`)return n;let r=n.kind===`ok`?n.value.sessionInfo:dH,i=t?.cost?.total_cost_usd??null;return L({session:{...r,cost:i??r.cost,officialCost:i}})}async getTodayInfo(e,t,n){let r=fH(RE(n)),i=KV(t);try{await this.ensureSeeded(r,i,n*1e3)}catch(e){return z(`usage seed: ${e instanceof Error?e.message:String(e)}`)}let a=await this.ingest(e?.session_id??``,e?.transcript_path,this.renderTally);if(a.kind===`failed`)return a;let o=i.map(e=>S(e,`projects`)+C),s={...uH},c=!1;for(let[t,{record:n}]of this.sessions){let i=n?.transcriptPath??``,a=t===e?.session_id||o.some(e=>i.startsWith(e))?n?.days??lH:lH;c||=a.has(r);let l=a.get(r)??uH;s.cost+=l.cost,s.input+=l.input,s.output+=l.output,s.cacheCreation+=l.cacheCreation,s.cacheRead+=l.cacheRead}return c?L({cost:s.cost,tokens:s.input+s.output+s.cacheCreation+s.cacheRead,tokenBreakdown:{input:s.input,output:s.output,cacheCreation:s.cacheCreation,cacheRead:s.cacheRead},date:r}):R}async observeSpeed(e,t,n){if(!e)return R;let r=wi(t);return this.speedFlight.run(`${e}:${r}`,async()=>{let i=await this.ingest(e,t,this.renderTally,r);if(i.kind===`failed`)return i;let a=cH(i.kind===`ok`?i.value.sessionInfo.tokenBreakdown:null,n),{ring:o}=this.hold(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(),L({...s!==void 0&&{prev:s},cur:a,samples:[...o]})})}async ingest(e,t,n,r){if(!e)return R;let i=r??wi(t),a=this.see(e)?.record;if(a&&i!==``&&a.transcriptStamp===i)return n.hits++,L(a);if(!t)return a?L(a):R;n.misses++;let o;try{o=await this.flight.run(`${e}:${i}`,async()=>{let n=this.sessions.get(e)?.record;return{prior:n,outcome:await this.refold(e,t,n)}})}catch(t){return z(`usage refold (${e}): ${t instanceof Error?t.message:String(t)}`)}let{prior:s,outcome:c}=o;if(c.kind!==`ok`)return c;let l={files:c.value.files,sessionInfo:c.value.sessionInfo,days:c.value.days,transcriptStamp:c.value.mainStamp,transcriptPath:t};return this.sessions.get(e)?.record===s&&(this.hold(e).record=l),L(l)}see(e){let t=this.sessions.get(e);return t&&(t.lastSeenAt=Date.now()),t}hold(e){let t=this.see(e);if(t)return t;let n={lastSeenAt:Date.now(),record:void 0,ring:[]};return this.sessions.set(e,n),n}async refold(e,t,n){let r=await JV(e,b(t),n===void 0?void 0:new Set(n.files.keys())),i=new Map,a=``;for(let e of[t,...r]){let r=n?.files.get(e),o=await aH(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 hH(r,l,s,c)),e===t&&(a=c.stamp)}return L({files:i,...gH(i),mainStamp:a})}ensureSeeded(e,t,n){this.seededDay!==e&&(this.seeded.clear(),this.seededDay=e);let r=t.join(`\0`),i=this.seeded.get(r);if(!i){let e=this.seed(t,`seed`),i={done:e,scanning:e,startedAtMs:n};return this.seeded.set(r,i),this.settle(r,i,e),e}return i.scanning===void 0&&n-i.startedAtMs>=this.rescanIntervalMs&&(i.startedAtMs=n,i.scanning=this.seed(t,`rescan`),this.settle(r,i,i.scanning)),i.done}settle(e,t,n){n.then(()=>{t.scanning=void 0},n=>{this.log(`warn`,`usageStore scan: ${n instanceof Error?n.message:String(n)}`),this.seeded.get(e)===t&&this.seeded.delete(e)})}async scanned(){await Promise.allSettled([...this.seeded.values()].map(e=>e.scanning))}async seed(e,t){let n=Date.now(),r=pH(),i=await qV(e),a=[];for(let e of i){let t;try{t=await Oi(e)}catch{continue}for(let n of t){if(!n.endsWith(`.jsonl`))continue;let t=S(e,n),i;try{i=await Ai(t)}catch{continue}i.mtimeMs<r||a.push({sessionId:n.slice(0,-6),path:t,stamp:Ti(i)})}}let o={hits:0,misses:0};await _H(a,8,async e=>{let n=await this.ingest(e.sessionId,e.path,o,e.stamp);n.kind===`failed`&&this.log(`warn`,`usageStore ${t}: ${n.reason}`)}),this.log(`info`,`usageStore ${t} sessions=${a.length} read=${o.misses} dirs=${e.join(`,`)} ms=${Date.now()-n}`),this.scans[t]++}sweepStale(){let e=Date.now(),t=0,n=0,r=0;for(let[i,{lastSeenAt:a,record:o}]of this.sessions)if(!(e-a<=this.staleAgeMs)){if(o?.days.has(this.seededDay)){n++;continue}this.sessions.delete(i),t++,o===void 0&&r++}return t>0&&this.sweeps++,(t>0||n>0)&&this.log(`info`,`usageStore sweep dropped=${t} noRecord=${r} held=${n}`),t}close(){this.sweepTimer&&=(clearInterval(this.sweepTimer),null),this.sessions.clear(),this.seeded.clear()}},yH=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 k(`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);k(`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{k(`Calculating context tokens from transcript: ${e}`);let n=await $V(e);if(n.length===0)return k(`No entries in transcript`),R;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,k(`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 k(`Most recent main chain context: ${n} tokens (limit: ${t})`),L({totalTokens:n,maxTokens:t,...this.ratioPercentages(n,t)})}return k(`No main chain entries with usage data found`),R}catch(e){return z(`context transcript: ${e instanceof Error?e.message:String(e)}`)}}async getContextInfo(e){let t=this.calculateContextFromHookData(e);if(t)return L(t);let n=e.context_window?.context_window_size??2e5;return this.calculateContextTokensFromTranscript(e.transcript_path,n)}},bH=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=wi(t);if(n&&r!==``&&n.cursor.stamp===r)return this.touch(e,n),{kind:`ok`,value:n.value};let i=await aH(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 xH={messageCount:0,nonPrompts:0,recent:[]},SH=new Set([`turn`,`interrupt`,`claude-code`]);function CH(e,t){if(t.isSidechain)return e;let n=[...e.recent,t];return{messageCount:e.messageCount+ +(t.userEntry===`prompt`),nonPrompts:e.nonPrompts+ +!!SH.has(t.userEntry),recent:n.length>20?n.slice(-20):n}}function wH(e){let t=null,n=null;for(let r of e){let e=r.type||r.message?.role||r.message?.type;if(r.userEntry===`prompt`||r.userEntry===`turn`)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 TH=class{fold=new bH(xH,CH);async getMetricsInfo(e,t){if(k(`Getting metrics from hook data for session: ${e}`),!t.cost)return R;let n=await this.fold.read(e,t.transcript_path);return n.kind===`failed`?z(`metrics (${e}): ${n.reason}`):L({responseTime:t.cost.total_api_duration_ms/1e3,lastResponseTime:wH(n.value.recent),sessionDuration:t.cost.total_duration_ms/1e3,messageCount:n.value.messageCount,nonPrompts:n.value.nonPrompts,linesAdded:t.cost.total_lines_added,linesRemoved:t.cost.total_lines_removed})}};const EH={command:null,todos:[],pending:[],done:[]};function DH(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 OH(e,t){switch(t.userEntry){case`prompt`:return{...e,command:t.activity?.command??null,pending:[],done:[]};case`interrupt`:return{...e,pending:[]};case`turn`:case`tool-result`:case`claude-code`:case void 0:return e}}function kH(e,t){if(t.isSidechain)return e;let n=OH(e,t),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=DH(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 AH(e){return{command:e.command,todos:e.todos,running:e.pending.reduce((e,t)=>DH(e,t.name),[]),done:e.done}}var jH=class{fold=new bH(EH,kH);async getActivityInfo(e,t){let n=await this.fold.read(e,t.transcript_path);return n.kind===`failed`?z(`activity (${e}): ${n.reason}`):L(AH(n.value))}};function MH(e,t,n,r){return{bin:`tmux`,args:[`-S`,e.socket,...n],timeoutMs:2e3,category:t,stdinInput:r}}function NH(e,t){if(e.ok)return{kind:`ok`,stdout:e.stdout};if(e.reason===`rate-limited`)return{kind:`rate-limited`,reason:e.error??`rate-limited`};let n=e.error??[e.reason,e.stderr.trim()].filter(e=>e!==``).join(`: `);return{kind:`failed`,reason:`tmux ${t[0]} failed (${n})`}}function PH(e,t,n,r){return NH(Re(MH(e,t,n,r)),n)}async function FH(e,t,n){return NH(await Le(MH(e,t,n)),n)}const IH=e=>`${e.socket}\n${e.pane}`;var LH=class{names=new Map;asking=new sH;constructor(e=Date.now){this.now=e}getSessionName(e){let t=IH(e),n=this.names.get(t);if(n&&this.now()-n.at<3e4)return Promise.resolve(n.outcome);let r=this.asking.run(t,()=>this.ask(t,e));return n?Promise.resolve(n.outcome):r}async ask(e,t){k(`Getting tmux session name for pane ${t.pane} on ${t.socket}`);let n=await FH(t,`tmux`,[`display-message`,`-p`,`-t`,t.pane,`#S`]),r=n.kind===`ok`?n.stdout.trim():``,i=n.kind===`ok`?r?L(r):R:z(n.reason);for(this.names.delete(e),this.names.set(e,{outcome:i,at:this.now()});this.names.size>64;)this.names.delete(this.names.keys().next().value);return i}};const RH=e=>JSON.stringify([e.sessionId,e.projectDir,e.cwd,e.claudeConfigDir,e.env===void 0?null:ct.map(t=>e.env?.[t]??null)]);var zH=class{readings=new Map;inFlight=new Map;constructor(e,t=Date.now){this.edge=e,this.now=t}getCeiling(e){let t=RH(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),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);if(n.kind!==`ok`)throw Error(n.kind===`failed`?n.reason:`memento is not installed or not enabled for this project`);let r=RH(e);try{this.edge.move(n.value,e,t)}finally{this.readings.delete(r),this.inFlight.delete(r),this.fetch(r,e)}}};function BH(e){return{gitProvider:new ME({watchers:e.watchers,logger:e.logger}),usageStore:new vH({logger:e.logger}),contextProvider:new yH,metricsProvider:new TH,activityProvider:new jH,tmuxService:new LH,mementoProvider:new zH(Hz()),autoCompact:Vj,log:e.logger}}function VH(e,t){return e===void 0?!0:e.evaluate(t).map(e=>e.plain).join(``)!==`false`}const HH={kind:`hidden`},UH={kind:`shown`};function WH(e,t){try{return VH(e,t)?UH:HH}catch(e){return{kind:`failed`,message:e instanceof Error?e.message:String(e)}}}function GH(e,t){let n=K.fromFragments(e);return n.end=``,n.overflow=`ignore`,t!==void 0&&!t.isNull&&(n.style=t),n}function KH(e,t,n){e.cellLength>t?e.truncate(t,{mode:n.truncate,marker:`…`}):e.cellLength<t&&e.align(n.justify,t)}function qH({lead:e,text:t,trail:n}){return[...e===void 0?[]:[e],t,...n===void 0?[]:[n]]}function JH({text:e,placement:t,lead:n,trail:r}){return{text:YH(e),placement:t,...n!==void 0&&{lead:YH(n)},...r!==void 0&&{trail:YH(r)}}}function YH(e){let t=e.blankCopy(e.plain);t.style=em(e.style).clearMetaAndLinks();for(let{start:n,end:r,style:i}of e.spans)t.stylize(em(i).clearMetaAndLinks(),n,r);return t}function XH(e){let t=qH(e);if(t.length===1)return e.text;let n=GH(t);return n.style=e.text.style,n}function ZH(e,t){let{width:n,justify:r,truncate:i,baseStyle:a,padding:o,placement:s,lead:c=[],trail:l=[]}=t;if(e.length===0)return[];let u=GH(e,a).pad(o),d=new K(` `.repeat(o)),f={placement:s,...c.length>0&&{lead:GH([d,...c],a)},...l.length>0&&{trail:GH([...l,d],a)}};if(n===`auto`)return[{text:u,...f}];let p={justify:r,truncate:i};return n===`fill`?[{text:u,fill:p,...f}]:(KH(u,n,p),[{text:u,...f}])}const QH=RegExp(`\\x1b\\[[0-9;]*m|${Mu.source}`,`g`);function $H(e){return Math.max(0,...e.split(`
|
|
191
|
-
`).map(e=>Co(e.replace(
|
|
192
|
-
`);if(i.length>1)return n();let a=Math.max(0,t.width-$H(i[0]??``)),o=Math.floor(a/r.length),s=a-o*r.length;return r.forEach(({at:t,how:n},i)=>{let a=o+(i===r.length-1?s:0),{text:c}=e[t];KH(c,c.cellLength+a,n)}),n()}function tU(e,t){let n=[],r=[],i=()=>{if(!r.length)return;let e=nU(r,t);e.plain.length>0&&n.push(e),r=[]};for(let a of e){let e={frag:a,style:em(a.style)};if(e.style.link){i();let r=nU([e],t);r.plain.length>0&&n.push(r)}else r.push(e)}return i(),n}function nU(e,t){let n=t!==void 0&&!t.isNull?t:void 0,r=e.map(e=>rU(e.frag,n?n.add(e.style):e.style)),i=K.fromFragments(r);return i.end=``,i.overflow=`ignore`,r.length===1?i.style=r[0].style:n!==void 0&&(i.style=n),i}function rU(e,t){let n=e.copy();return n.style=t,n}function iU(e,t){if(e.look===void 0)throw Error(`${t} read the render's look before any render resolved one`);return e.look}function aU(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,oU(e,t,o,n,r,i));return i}function oU(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=fv(n.from,i);return{kind:`set-option`,key:n.set,stateVar:e,options:[...t.members],paletteOf:t.paletteOf,library:t.library}}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=co.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=fv(n.from,i);return{kind:`persist-option`,key:n.persist,stateVar:e,options:[...t.members],paletteOf:t.paletteOf,library:t.library}}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=fv(n.insertSegmentFrom,i);return{kind:`layout-op-option`,key:n.persist,anchor:n.anchor,relation:n.relation,options:[...e.members],paletteOf:e.paletteOf,library:e.library}}return{kind:`persist-bounded`,key:n.persist,by:n.by}}if(`copy`in n)return{kind:`copy`,text:lU(e,n.copy,t)};if(`open`in n)return{kind:`open`,target:lU(e,n.open,t)};if(`reset`in n)return{kind:`reset`,key:n.reset};if(`doctor`in n)switch(n.doctor){case`run`:return{kind:`doctor-run`};case`fix`:return{kind:`doctor-fix`,check:n.check};case`mark`:return{kind:`doctor-mark`,check:n.check,mark:n.mark}}if(`ceiling`in n)return{kind:`ceiling`,args:CI(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(`back`in n)return{kind:`back`};if(`rewind`in n)return{kind:`rewind`};if(`save`in n)return{kind:`save`};if(`preset`in n)return n.preset===`save`?{kind:`preset-save`}:{kind:`preset-delete`,name:lU(e,n.name,t)};if(`themeDefault`in n)return{kind:`theme-default-save`};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 sU(e){return e.kind===`do`?sU(e.head):e}function cU(e){switch(sU(e).kind){case`set-option`:case`set-int`:case`persist-option`:case`layout-op-option`:return!0;case`set-literal`:case`set-bounded`:case`set-cycle`:case`copy`:case`open`:case`persist-literal`:case`persist-bounded`:case`persist-cycle`:case`reset`:case`layout-op`:case`undo`:case`redo`:case`back`:case`rewind`:case`save`:case`preset-save`:case`preset-delete`:case`theme-default-save`:case`doctor-run`:case`doctor-fix`:case`doctor-mark`:case`ceiling`:case`slash`:case`do`:return!1}}function lU(e,t,n){try{return e(t)}catch(e){throw Error(`Template parse error in actions.${n}: ${e.message}`,{cause:e})}}function uU(e,t){return e.has(t)?Wv(e.read(t)):``}function dU(e,t){return e.evaluate(t).map(e=>e.plain).join(``)}function fU(e,t,n,r){let i=new K(e,{style:U.combine([r,new U({link:t,bold:n})])});return i.overflow=`ignore`,i.end=``,i}function pU(e,t,n=!1){let r=new U({link:t,bold:n?!0:void 0}),i=new K(e.plain,{style:U.combine([em(e.style),r])});for(let t of e.spans)i.stylize(U.combine([em(t.style),r]),t.start,t.end);return i.overflow=`ignore`,i.end=``,i}function mU(e,t){return Math.max(e.members.indexOf(uU(t,e.stateVar)),0)}function hU(e,t,n,r,i){switch(e.kind){case`set-literal`:{let t=uU(r,e.stateVar);return{effects:[{verb:Nn,args:[i,e.key,e.value]}],active:t===e.value}}case`set-option`:{let a=n??t,o=uU(r,e.stateVar);return{effects:[{verb:Nn,args:[i,e.key,a]}],active:o===a}}case`set-int`:{let a=n??t,o=uU(r,e.stateVar);return{effects:[{verb:Nn,args:[i,e.key,a]}],active:o===a}}case`set-cycle`:{let t=e.members[(mU(e,r)+1)%e.members.length];return{effects:[{verb:Nn,args:[i,e.key,t]}],active:!1}}case`set-bounded`:return{effects:[{verb:Pn,args:[i,e.key,String(e.by)]}],active:!1};case`copy`:return{effects:[{verb:Fn,args:[dU(e.text,RT(r))]}],active:!1};case`open`:return{effects:[{verb:In,args:[dU(e.target,RT(r))]}],active:!1};case`persist-literal`:{let t=uU(r,e.stateVar);return{effects:[{verb:Bn,args:[i,e.key,e.value]}],active:t===e.value}}case`persist-option`:{let a=n??t,o=uU(r,e.stateVar);return{effects:[{verb:Bn,args:[i,e.key,a]}],active:o===a}}case`persist-cycle`:{let t=e.members[(mU(e,r)+1)%e.members.length];return{effects:[{verb:Bn,args:[i,e.key,t]}],active:!1}}case`persist-bounded`:return{effects:[{verb:Vn,args:[i,e.key,String(e.by)]}],active:!1};case`reset`:return{effects:[{verb:Kn,args:[i,e.key]}],active:!1};case`undo`:return{effects:[{verb:Jn,args:[i]}],active:!1};case`redo`:return{effects:[{verb:Yn,args:[i]}],active:!1};case`back`:return{effects:[{verb:Xn,args:[i]}],active:!1};case`rewind`:return{effects:[{verb:Zn,args:[i]}],active:!1};case`save`:return{effects:[{verb:Hn,args:[i]}],active:!1};case`preset-save`:return{effects:[{verb:Un,args:[i]}],active:!1};case`theme-default-save`:return{effects:[{verb:Wn,args:[i]}],active:!1};case`preset-delete`:return{effects:[{verb:Gn,args:[i,dU(e.name,RT(r))]}],active:!1};case`doctor-run`:return{effects:[{verb:$n,args:[i]}],active:!1};case`doctor-fix`:return{effects:[{verb:er,args:[i,e.check]}],active:!1};case`doctor-mark`:return{effects:[{verb:tr,args:[i,e.check,e.mark]}],active:!1};case`ceiling`:return{effects:[{verb:rr,args:[i,...e.args]}],active:!1};case`slash`:return{effects:[{verb:ir,args:[i,e.line]}],active:!1};case`layout-op`:return{effects:[{verb:qn,args:[i,e.key,oP(e.op)]}],active:!1};case`do`:{let a=hU(e.head,t,n,r,i);return{effects:[...a.effects,...e.rest.flatMap(e=>hU(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:qn,args:[i,e.key,oP(r)]}],active:!1}}}}function gU(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:gr(`action "${e}"`,n,t.members.length,mU(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]?.plain}}function _U(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}=gU(e,sU(r),t,i),s=uU(i,`session.id`),{effects:c,active:l}=hU(r,a.plain,o,i,s);return pU(a,sr(c),l)}function vU(e){return{action:{fn:(t,...n)=>_U(t,n,e),argTypes:[`string`,`liftable`],arity:{kind:`variadic`},returnType:`T`}}}function yU(e,t){return fU(`✕`,sr([{verb:Nn,args:[uU(e,`session.id`),t,pr]}]),!1)}function bU(e,t,n){return new U({bgcolor:H.fromRgba(t),color:H.fromRgba(zm(e,t,n))})}function xU({tint:e,text:t}){return new U({bgcolor:H.fromRgba(e),color:H.fromRgba(t)})}function SU(e,t,n){return new U({color:H.fromRgba(gc(km(e,`warning`),t,Rm,n))})}function CU(e,t,n){return U.combine([bU(e,t,n),SU(e,t,n)])}function wU(e,t,n){return bU(e.palette,oh(e.palette,e.disclosure,[t],n),n)}function TU(e){let t=H.fromRgba(km(e,`background`)),n=K.fromFragments(nm.map(n=>new K(`▀`,{style:new U({color:H.fromRgba(km(e,n)),bgcolor:t})})));return n.overflow=`ignore`,n.end=``,n}const EU=(e,t)=>{let n=typeof e==`string`?new K(e,{style:t}):e;return n.overflow=`ignore`,n.end=``,n},DU=e=>new U({bold:e});function OU(e,t,n,r,i,a){if(r===void 0)return(n,r,a,o)=>EU(a,U.combine([wU(e,{...n,distribution:t},i),DU(o)]));let o=bU(e.palette,a,i);return(e,t,i,a)=>kU(i,U.combine([o,DU(a)]),r(t,n))}const kU=(e,t,n)=>EU(K.fromFragments([EU(e,t),EU(` `,t),TU(n)]));function AU(e,t){return t===void 0?(e,t,n)=>EU(n):(n,r,i)=>kU(i,void 0,t(r,e))}function jU(e,t,n,r,i){let a=bU(e.palette,i,r);return(e,r,i,o)=>EU(K.fromFragments([EU(o?`[`:` `,a),TU(n(r,t)),EU(o?`]`:` `,a)]))}function MU(e,t,n){let r=t.map(t=>({label:t.label,indices:e.flatMap((e,n)=>e.group===t.id?[n]:[])})).filter(e=>e.indices.length>0);if(r.reduce((e,t)=>e+t.indices.length,0)!==e.length){let n=new Set(t.map(e=>e.id)),r=e.flatMap((e,t)=>n.has(e.group)?[]:[`#${t} (group "${e.group}")`]);throw Error(`library: ${r.join(`, `)} name a group the domain does not list (${[...n].join(`, `)})`)}return n?r.flatMap(e=>NU(e.indices,8).map(t=>[{label:e.label,indices:t}])):[r]}function NU(e,t){return Array.from({length:Math.ceil(e.length/t)},(n,r)=>e.slice(r*t,(r+1)*t))}function PU(e,t){return new K(e).truncate(t,{marker:`…`}).plain}function FU(e){return{current:null,drawnAt:e}}function IU(e,t,n,r,i,a,o){let s={segName:t,placementId:n,palette:r,disclosure:i,tint:a,text:o,bg:void 0,drops:[]};return e.current=s,s}function LU(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 RU(e){return new K(e).cellLength}function zU(e){return Math.max(1,e.width-e.chromeCols-2*e.padding)}function BU(e){return Math.max(1,zU(e)-(RU(`✕`)+2*e.padding+e.seamCols))}function VU(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 HU(e,t,n){let r=RU(`←`)+1+RU(`→`)+1,i=VU(e,t,n);return(i.length>1?VU(e,t,n+r):i).map(e=>[{label:``,indices:e}])}function UU(e,t){let n=[];for(let t of e)n.length>0&&n.push(new K(` `)),n.push(t);let r=K.fromFragments(n);return r.overflow=t?`ignore`:void 0,r.end=``,r}function WU(e,t,n,r,i){let a=e.compiled.get(t);if(!a||a.kind!==n)throw Error(`${i} references action "${t}" which must be ${r}, got ${a?`a ${a.kind} action`:`no such action`}`);return a}function GU(e,t,n){let r=e.compiled.get(t),i=r&&sU(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 KU(e,t,n,r,i,a,o,s,c=[]){let l=a.compiled.get(e),u=a.store,d=uU(u,`session.id`),f=`stateVar`in t?uU(u,t.stateVar):void 0,p=(e,n)=>{let r=t.options[e];return o({index:e,count:t.options.length},r,n,r===f)},m=i?r.kind===`led`?BU(a):zU(a):1/0,h=(r.kind===`led`?0:RU(`✕`)+1)+c.reduce((e,t)=>e+RU(t.glyph)+1,0),g=t.library&&{groups:t.library.groups,entries:t.options.map(t.library.entry)},_=g===void 0?t.options.map((e,t)=>p(t,e)):[],v=g===void 0?HU(_.map(e=>e.cellLength),m,h):MU(g.entries,g.groups,i),y=parseInt(uU(u,n.stateVar),10),b=e=>Math.max(0,v.findIndex(t=>t.some(t=>t.indices.includes(e)))),x=b(f===void 0?-1:t.options.indexOf(f)),S=Number.isInteger(y)?y<0?x:Math.min(y,v.length-1):0,C=v[S]??[],w=e=>sr([{verb:Nn,args:[d,n.key,String(e)]}]),ee=r.kind===`led`?[]:[{verb:Nn,args:[d,...r.writes.flatMap(([e,t])=>[e,t])]}],te=r.kind===`own`&&r.onPick?ee:[],ne=e=>sr([...hU(l,e,e,u,d).effects,...te]),T=(e,n)=>pU(e,ne(t.options[n])),re=r.kind===`led`?[]:[fU(`✕`,sr(ee),!1,s)];re.push(...c.map(({glyph:e,option:r})=>fU(e,sr([...hU(l,r,r,u,d).effects,{verb:Nn,args:[d,n.key,String(b(t.options.indexOf(r)))]}]),!1))),S>0&&re.push(fU(`←`,w(S-1),!1));let E=S<v.length-1?[fU(`→`,w(S+1),!1)]:[];if(g===void 0){let e=C.flatMap(e=>e.indices);return[UU([...re,...e.map(e=>T(_[e],e)),...E],i)]}let D=new U({bold:!0}),ie=v.length>1?` ${S+1}/${v.length}`:``,O=C.length===1?[new K(`${C[0].label}${ie}`,{style:D})]:[],ae=[UU([...re,...O,...E],i)];for(let e of C){C.length>1&&ae.push(UU([new K(e.label,{style:D})],i));let n=Math.max(...e.indices.map(e=>RU(t.options[e])));for(let r of e.indices){let e=t.options[r],a=g.entries[r].description,o=a===void 0?void 0:Gp(a),s=` `.repeat(n-RU(e)+2),c=o===void 0?e:`${e}${s}${o}`;ae.push(UU([T(p(r,PU(c,m)),r)],i))}}return ae}function qU(e,t){return{picker:{fn:(n,r,i,a,o,...s)=>{MT(`picker "${n}"`,[`closeOnPick`,`paged`,`inBody`],s);let c=WU(e,r,`set-int`,`an int action ({ set, int: true })`,`picker`);if(o===!0&&i===!0)throw Error(`{{ picker "${n}" … }} sets both closeOnPick and inBody; a picker in a body is closed by the body's ✕, so it has no close to fold into a pick`);let l=GU(e,n,`picker`);if(l.library!==void 0)throw Error(`{{ picker "${n}" … }} ranges a catalogue domain, which lays out as one row per member; a catalogue renders in a {{ menu }} body`);let u=LU(t,`{{ picker }}`);if(u.bg===void 0)throw Error(`{{ picker }} is not available while segments.${u.segName}'s own "bg:" is being evaluated — a picker is drawn on that background`);let[d]=KU(n,l,{key:c.key,stateVar:c.stateVar},o===!0?{kind:`led`}:{kind:`own`,writes:[[c.key,`-1`]],onPick:i===!0},a===!0,e,OU(u,_m(void 0),iU(e,`{{ picker }}`),l.paletteOf,t.drawnAt(),u.bg),SU(u.palette,u.bg,t.drawnAt()));return d},argTypes:[`string`,`string`,`bool`],arity:{kind:`variadic`},returnType:`T`}}}function JU(e,t){let n=e.length,r=Math.max(e.indexOf(t),0);return e=>((r+e)%n+n)%n}function YU(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+e(-(s+1))+1+e(s+1)+1;if(t>r)break;o=t,s+=1}return s}function XU(e,t,n,r,i,a){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 o=n.store;if(!o.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 s=n.compiled.get(e),c=uU(o,`session.id`),{options:l}=t,u=l.length;if(u===0)return UU([],!0);let d=uU(o,t.stateVar),f=JU(l,d),p=e=>l[f(e)],m=new Map,h=e=>{let t=m.get(e);if(t!==void 0)return t;let n=sr(hU(s,p(e),p(e),o,c).effects);return m.set(e,n),n},g=e=>r({index:f(e),count:u},p(e),p(e),p(e)===d),_=new Map,v=e=>{let t=_.get(e);if(t!==void 0)return t;let n=pU(g(e),h(e));return _.set(e,n),n},y=a===void 0?v(0):pU(AU(iU(n,`{{ carousel }}`),t.paletteOf)({index:f(0),count:u},p(0),p(0),!1),sr(hU(n.compiled.get(a),p(0),void 0,o,c).effects)),b=YU(e=>v(e).cellLength,u,RU(`◀`)+1+y.cellLength+1+RU(`▶`),BU(n),i),x=e=>Array.from({length:b},(t,n)=>v(e*(n+1)));return UU([...x(-1).reverse(),fU(`◀`,h(-1),!1),y,fU(`▶`,h(1),!1),...x(1)],!0)}function ZU(e,t){return{carousel:{fn:(n,...r)=>{let[i,a,...o]=r;if(MT(`carousel "${n}"`,[`neighbours`,`centre`],o),i!==void 0&&!(Number.isInteger(i)&&i>=0))throw Error(`carousel "${n}": neighbours must be a whole number ≥ 0 (0 shows only ◀ CURRENT ▶), got ${String(i)}`);if(a!==void 0&&!(typeof a==`string`&&e.compiled.has(a)))throw Error(`carousel "${n}": centre must name a declared action, got ${JSON.stringify(a)}`);if(a!==void 0&&cU(e.compiled.get(a)))throw Error(`carousel "${n}": centre "${a}" writes a value the template binds, and the centre binds none — name an action that writes a fixed value, a cycle, or a do of them`);let s=i??1/0,c=GU(e,n,`carousel`),l=LU(t,`{{ carousel }}`);if(l.bg===void 0)throw Error(`{{ carousel }} is not available while segments.${l.segName}'s own "bg:" is being evaluated — a carousel is drawn on that background`);return XU(n,c,e,OU(l,_m(void 0),iU(e,`{{ carousel }}`),c.paletteOf,t.drawnAt(),l.bg),s,a)},argTypes:[`string`,`value`],arity:{kind:`variadic`},returnType:`T`}}}function QU(e,t,n){let r=GU(e,t,n);if(!(`stateVar`in r))throw Error(`${n} references action "${t}", which inserts a segment and holds no current value — a ${n} needs a { set, from } or { persist, from } action`);if(r.paletteOf===void 0)throw Error(`${n} references action "${t}", whose options are not colour-valued — a swatch draws the palette an option puts in force, as the "themes", "placementThemes" and "styles" domains do`);return r}function $U(e,t,n){let r=Math.imul(e^e>>>16,73244475);return r=Math.imul(r^r>>>16,73244475),r^=r>>>16,(n+1+(r>>>0)%Math.max(t-1,1))%t}function eW(e,t,n,r){let i=QU(e,t,n),a=r??uU(e.store,i.stateVar);if(!i.options.includes(a))throw Error(`${n} "${t}": "${a}" is not one of its options, so it has no palette to draw`);return i.paletteOf(a,iU(e,`{{ ${n} }}`))}function tW(e,t,n){return{swatch:{fn:(t,...n)=>{let[r,...i]=n;if(MT(`swatch "${t}"`,[`option`],i),r!==void 0&&typeof r!=`string`)throw Error(`swatch "${t}": option must be text, got ${JSON.stringify(r)}`);return TU(eW(e,t,`swatch`,r))},argTypes:[`string`,`value`],arity:{kind:`variadic`},returnType:`T`},swatches:{fn:(r,i)=>{let a=QU(e,r,`swatches`),o=WU(e,i,`set-int`,`an int action ({ set, int: true })`,`swatches`),s=LU(t,`{{ swatches }}`);if(s.bg===void 0)throw Error(`{{ swatches }} is not available while segments.${s.segName}'s own "bg:" is being evaluated — a swatch row is drawn on that background`);let c=t.drawnAt(),{options:l}=a,u=l.length,[d]=KU(r,a,{key:o.key,stateVar:o.stateVar},{kind:`led`},!0,e,jU(s,iU(e,`{{ swatches }}`),a.paletteOf,c,s.bg),SU(s.palette,s.bg,c),u===0?[]:(()=>{let t=JU(l,uU(e.store,a.stateVar));return[{glyph:`◀`,option:l[t(-1)]},{glyph:`?`,option:l[$U(n().getTime(),u,t(0))]},{glyph:`▶`,option:l[t(1)]}]})());return d},argTypes:[`string`,`string`],arity:{kind:`exact`},returnType:`T`}}}const nW=[`~/code`,`main`,`opus`,`42%`,`5m`,`$1.20`];function rW(e,t,n,r){let i=Zm(e,n,r),a=(t,n)=>({text:t,colour:n,ink:zm(e,n,r)});return[[fm(t).map((n,i)=>{let a=Am(e,n);return{text:nW[i%nW.length],colour:a,ink:t.shade.text(e,n.hue,a,r)}})],[[a(`▾ open`,i.state),a(`menu`,i.plane)],[a(`warn`,km(e,`warning`)),a(`error`,km(e,`error`))]]]}function iW(e,t){let n=e.flatMap((e,t)=>e.map(({text:e,colour:n,ink:r},i)=>({gap:t>0&&i===0?` `:``,cell:new K(` ${e} `,{style:xU({tint:n,text:r})})}))),r=[],i=0;for(let{gap:e,cell:a}of n){if(i+=e.length+a.cellLength,i>t)break;e!==``&&r.push(new K(e)),r.push(a)}return r}function aW(e,t,n,r,i){let a=rW(e,t,n,r).map(e=>iW(e,i)),o=K.fromFragments(a.flatMap((e,t)=>t===0?e:[new K(`
|
|
193
|
-
`),...e]));return o.overflow=`ignore`,o.end=``,o}function
|
|
194
|
-
`),...e]));return o.overflow=`ignore`,o.end=``,o}function
|
|
185
|
+
`,v.join(e,`lib`),t.sessionId,t.cwd],env:Lz(t),timeoutMs:3e3,category:`memento.read`});return n.ok?zz(n.stdout):z(Rz(n))}function Vz(e,t,n){let r=Re({bin:v.join(e,Nz),args:n.kind===`set`?[`set`,`session`,n.to]:[`clear`,`session`],env:Lz(t),timeoutMs:5e3,category:`memento.move`});if(!r.ok)throw Error(Rz(r))}function Hz(e,t){return Iz(Li(e),t)}function Uz(){return{locate:e=>Hz(e.claudeConfigDir,e.projectDir),read:Bz,move:Vz}}function Wz(e,t,n){let r=n===void 0?``:`CLAUDE_CONFIG_DIR=${Or(n)} `,i=e.added_dirs.map(e=>` --add-dir ${Or(e)}`).join(``);return`cd ${Or(e.project_dir)} && ${r}claude --resume ${Or(t)}${i}`}function Gz(e,t,n){let r=iv(t(`preset`),e.globals.preset,e.presets),i=sv(e,r),a=t(`edit.mode`)===`arrange`?e.editGlobals:{},o=u_(a.palette,t(`theme`),i.palette),s=Tz(i,wz(o,e.themeDefaults));return{preset:r,presetCustomized:n(r),theme:o,style:Oh(a.style,t(`style`),s.style,e.styles),effect:Ih(a.effect,t(`effect`),s.effect),endcaps:Vh(a.endcaps,t(`endcaps`),s.endcaps),variation:Kh(a.variation,t(`variation`),s.variation),shade:Yh(a.shade,t(`shade`),s.shade),separator:a.default_separator??s.default_separator,autoWrap:rg(a.autoWrap,t(`autoWrap`),s.autoWrap),padding:og(a.padding,t(`padding`),s.padding),updateNotice:ig(a.updateNotice,t(`updateNotice`),s.updateNotice),transitions:ag(a.transitions,t(`transitions`),s.transitions),colorCompatibility:a.colorCompatibility??s.colorCompatibility??`truecolor`,lanes:$a(e=>{let n=Za[e].setting;return hh(a[n],t(n),s[n],!1,eg)})}}function Kz(e,t){return{endcaps:e.endcaps,separator:e.separator,colorCompatibility:e.colorCompatibility,wrap:e.autoWrap,padding:e.padding,width:t}}function qz(e){return{theme:e.theme,style:e.style,effect:e.effect,preset:e.preset,variation:e.variation,shade:e.shade,transitions:e.transitions}}function Jz(e){return{preset:{effective:e.preset,customized:e.presetCustomized,bundled:Sz(e.preset)},endcaps:{effective:e.endcaps},variation:{effective:e.variation},shade:{effective:e.shade},colorCompatibility:{effective:e.colorCompatibility},autoWrap:{effective:e.autoWrap},padding:{effective:e.padding},updateNotice:{effective:e.updateNotice},transitions:{effective:e.transitions},lanes:$a(t=>({effective:e.lanes[t]}))}}const Yz={prNumber:!0,prState:!0,prUrl:!0,prError:!0,prEarlier:!0};function Xz(e){return e?.prState===void 0?e?.prError===void 0?e?.prEarlier===void 0?`-`:`earlier-${e.prEarlier}`:`failed`:e.prState}const Zz=10*1e3;function Qz(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 $z(e,t){if(!(t<60))return e*3600/t}function eB(e,t,n,r){let i=r-t;if(i<50||i>Zz)return;let a=n-e;if(!(a<=0))return a*1e3/i}function tB(e){let{prev:t,cur:n}=e;if(t===void 0)return;let r=eB(t.input,t.atMs,n.input,n.atMs),i=eB(t.output,t.atMs,n.output,n.atMs),a=eB(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 nB(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>Zz)continue;let o=eB(r.total,r.atMs,i.total,i.atMs);n.push(o??0)}if(n.length!==0)return n.join(`,`)}function rB(e){let t=e.indexOf(`.`);return t<0?e:e.slice(0,t)}function iB(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`,()=>rB(w.hostname())),i=n(`user`,()=>w.userInfo().username);return{host:{...r!==void 0&&{name:r},...i!==void 0&&{user:i},...e.ssh!==void 0&&{ssh:e.ssh}},failures:t}}function aB(e,t){let n=[],r=t=>Ov(t,e.helpers).keys(),i=sv(e,t);for(let e of xh){let t=i[e];if(Sh(t))for(let e of r(t))n.push(e)}for(let i of v_(ov(e,t).node)){if(i.when)for(let e of r(i.when))n.push(e);i.kind===`segment`&&n.push(...oB(e,i.name))}return cB(e,n)}function oB(e,t){let n=e.segments[t];return n?[n.template,n.when,n.bg,n.fg].flatMap(t=>t?[...Ov(t,e.helpers).keys()]:[]):[]}function sB(e,t,n){return cB(e,[...oB(e,t),...n.flatMap(t=>[...Ov(t,e.helpers).keys()])])}function cB(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=[...t],i=new Set,a=t=>Ov(t,e.helpers).keys(),o=new Set;for(;r.length>0;){let e=r.pop();for(let t of uB(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 lB(e){let t=new Map;return n=>{let r=t.get(n);if(r!==void 0)return r;let i=aB(e,n);return t.set(n,i),i}}function uB(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 dB(e,t){for(let n of e)if(n===t||n.startsWith(t+`.`))return!0;return!1}function fB(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`)||t(`git.tracking`))&&{showUpstream:!0},...t(`git.repoName`)&&{showRepoName:!0},...t(`git.repoUrl`)&&{showRepoUrl:!0},...t(`git.operation`)&&{showOperation:!0},...t(`git.timeSinceCommit`)&&{showTimeSinceCommit:!0},...Object.keys(Yz).some(e=>t(`git.${e}`))&&{showPullRequest:!0}}}async function pB(e,t,n,r,i,a,o,{configPath:s,...c}){let l=e=>dB(i,e),u=zE(t).getTime(),d=o.tmux??null,f=(e,t,n)=>t?n().catch(t=>z(`${e}: ${String(t)}`)):Promise.resolve(R),[p,m,h,g,_,v,y,b,x,S,C]=await Promise.all([f(`git`,l(`git`),()=>n.gitProvider.getGitInfo(r??e.workspace?.current_dir,fB(i),e.workspace?.project_dir)),f(`session`,l(`session.cost`)||l(`session.tokens`)||l(`burn`),()=>n.usageStore.getUsageInfo(e.session_id,e)),f(`today`,l(`today`),()=>n.usageStore.getTodayInfo(e,o.claudeConfigDir,t)),f(`context`,l(`context`)||l(`autocompact`),()=>n.contextProvider.getContextInfo(e)),f(`metrics`,l(`metrics`)||l(`burn`),()=>n.metricsProvider.getMetricsInfo(e.session_id,e)),f(`activity`,l(`activity`),()=>n.activityProvider.getActivityInfo(e.session_id,e)),f(`tmux`,l(`tmux.session`),()=>d===null?Promise.resolve(R):n.tmuxService.getSessionName(d)),f(`cache`,l(`cache`),()=>Oz(e.transcript_path)),f(`speed`,l(`speed`),()=>n.usageStore.observeSpeed(e.session_id,e.transcript_path,u)),f(`memento`,l(`memento`),()=>n.mementoProvider.getCeiling(jz({sessionId:e.session_id,projectDir:e.workspace?.project_dir??``,cwd:r??e.workspace?.current_dir??``},o))),f(`autocompact`,l(`autocompact`),()=>Promise.resolve(n.autoCompact(Ii(Fi(o.claudeConfigDir)))))]),w=[],ee=e=>{if(e.kind===`failed`){w.push(e.reason);return}return e.kind===`ok`?e.value:void 0},te=xB(p,u);w.push(...te.failures);let ne=iB(o);w.push(...ne.failures);let T=ee(m),re=ee(h),E=ee(g),D=ee(_),ie=ee(v),O=ee(y),ae=ee(b),oe=gB(S);S.kind===`failed`&&w.push(`memento: ${S.reason}`);let se=mB(C,E?.maxTokens);C.kind===`failed`&&w.push(`autocompact: ${C.reason}`);for(let e of w)n.log(`warn`,`provider fetch failed: ${e}`);let ce=e.rate_limits?.five_hour,le=e.rate_limits?.seven_day,ue=ce?Qz(ce.used_percentage,ce.resets_at,18e6,u):void 0,de=le?Qz(le.used_percentage,le.resets_at,6048e5,u):void 0,fe=T?.session.cost,pe=D?.sessionDuration,me=l(`burn`)&&fe!=null&&pe!=null?$z(fe,pe):void 0,he=ee(x),ge=he===void 0?void 0:tB(he),_e=he===void 0?void 0:nB(he),ve=ge!==void 0||_e!==void 0?{...ge,..._e!==void 0&&{history:_e}}:void 0,ye=bB(process.env.HOME??process.env.USERPROFILE),be=e.workspace?{...e.workspace,current_dir:bB(e.workspace.current_dir)??``,project_dir:bB(e.workspace.project_dir)??``,added_dirs:(e.workspace.added_dirs??[]).map(e=>bB(e)??e)}:e.workspace,xe=T===void 0?void 0:yB({cost:T.session.cost,tokens:T.session.tokens}),Se=re===void 0?void 0:{cost:re.cost,tokens:re.tokens},Ce=D===void 0?void 0:yB({lastResponseTime:D.lastResponseTime,responseTime:D.responseTime,sessionDuration:D.sessionDuration,messageCount:D.messageCount,nonPrompts:D.nonPrompts,linesAdded:D.linesAdded,linesRemoved:D.linesRemoved}),we=ie===void 0?void 0:_B(ie);return{...e,...be!==void 0&&{workspace:be},...ye!==void 0&&{home:ye},...te.git!==void 0&&{git:te.git},...d!==null&&{tmux:{pane:d.pane,...O!==void 0&&{session:O}}},host:ne.host,...Jz(a),history:n.history(e.session_id),navigation:{back:n.navigation(e.session_id)},...c,...s!==null&&{configPath:s},resumeCommand:Wz(be,e.session_id,o.claudeConfigDir),...xe!==void 0&&{session:xe},...Se!==void 0&&{today:Se},...me!==void 0&&{burn:{costPerHour:me}},...ve!==void 0&&{speed:ve},...l(`block`)&&ce!==void 0&&{block:{nativeUtilization:ce.used_percentage,resetsAt:ce.resets_at,...ue!==void 0&&{etaMinutes:ue}}},...le!==void 0&&{weekly:{percentage:le.used_percentage,resetsAt:le.resets_at,...de!==void 0&&{etaMinutes:de}}},...ae!==void 0&&{cache:{expiresAt:ae}},...E!==void 0&&{context:{totalTokens:E.totalTokens,contextLeft:E.contextLeftPercentage}},...Ce!==void 0&&{metrics:Ce},...we!==void 0&&{activity:we},...oe!==void 0&&{memento:oe},...se!==void 0&&{autocompact:se}}}function mB(e,t){switch(e.kind){case`absent`:return;case`failed`:return{error:e.reason};case`ok`:return Uj(e.value,t)}}const hB=e=>e.trim().split(`
|
|
186
|
+
`).at(-1).trim();function gB(e){switch(e.kind){case`absent`:return;case`failed`:return{error:hB(e.reason)};case`ok`:{let{ceiling:t,session:n}=e.value;return{ceiling:t===`off`?0:t,off:t===`off`,session:n??``}}}}function _B(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=vB(e.running),i=vB(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 vB(e){return e.length===0?void 0:e.map(e=>`${e.name}:${e.count}`).join(`,`)}function yB(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 bB(e){return e===void 0||e.length===0||v.sep!==`\\`?e:e.replace(/\\/g,`/`)}function xB(e,t){if(e.kind===`absent`)return{failures:[]};if(e.kind===`failed`)return{failures:[e.reason]};let n=e.value,r=[],i=(e,t)=>{if(!(t===void 0||t.kind===`absent`)){if(t.kind===`failed`){r.push(`git.${e}: ${t.reason}`);return}return t.value}},a=i(`aheadBehind`,n.aheadBehind),o=i(`sha`,n.sha),s=i(`operation`,n.operation),c=i(`timeSinceCommit`,n.committedAt),l=c===void 0?void 0:Math.floor((t-c)/1e3),u=i(`stash`,n.stashCount),d=i(`upstream`,n.upstream),f=n.upstream===void 0?void 0:i(`tracking`,KT(n.upstream,n.aheadBehind)),p=i(`repoName`,n.repoName),m=i(`repoUrl`,n.repoUrl),h=n.pullRequest===void 0?void 0:qT(n.pullRequest,n.head),g={};switch(h?.kind){case`ok`:g={prNumber:h.value.number,prState:h.value.state,prUrl:h.value.url};break;case`failed`:r.push(`git.pr: ${h.reason}`),g={prError:h.reason};break;case`earlier`:g={prEarlier:h.value.state};break;case`absent`:case void 0:break}return{git:{branch:n.branch,status:n.status,...a!==void 0&&{ahead:a.ahead,behind:a.behind},...n.workingTree!==void 0&&{staged:n.workingTree.staged,unstaged:n.workingTree.unstaged,untracked:n.workingTree.untracked,conflicts:n.workingTree.conflicts},...o!==void 0&&{sha:o},...s!==void 0&&{operation:s},...l!==void 0&&{timeSinceCommit:l},...u!==void 0&&{stash:u},...d!==void 0&&{upstream:d},...f!==void 0&&{tracking:f},...p!==void 0&&{repoName:p},...m!==void 0&&{repoUrl:m},...g},failures:r}}const SB={theme:e=>e.theme.kind===`decided`?e.theme.name:null,preset:e=>e.preset,style:e=>e.style.kind===`decided`?e.style.name:null,effect:e=>e.effect.kind===`decided`?e.effect.name:null,endcaps:e=>e.endcaps,variation:e=>e.variation,shade:e=>e.shade,transitions:e=>e.transitions?Xh:Zh,autoWrap:e=>e.autoWrap?Xh:Zh,padding:e=>String(e.padding),updateNotice:e=>e.updateNotice?Xh:Zh,experimentalBand:e=>e.lanes.band?Xh:Zh,experimentalStatusline:e=>e.lanes.statusline?Xh:Zh,experimentalPane:e=>e.lanes.pane?Xh:Zh},CB=Object.entries(io),wB=new Set(ao.map(e=>e.sessionKey)),TB=()=>!1;function EB(e,t){return Gz(e,e=>wB.has(e)?t(e):null,TB)}const DB=[`preset`,`theme`];function OB(e,t,n){let r=new Set(DB.slice(0,n).map(e=>io[e].sessionKey));return Gz(e,e=>r.has(e)?t(e):null,TB)}function kB(e,t){let n=Array.from({length:DB.length+1},(n,r)=>OB(e,t,r));return e=>{let t=DB.indexOf(e);return n[t===-1?DB.length:t]}}function AB(e,t,n,r){return e.flatMap(([e,i])=>{let a=SB[e](t);return a===null||a===SB[e](n(e))?[]:[{...i,value:a,target:r(i)}]})}function jB(e,t,n){return SB[n](EB(e,t))}function MB(e,t){let n=EB(e,t);return AB(CB,n,kB(e,t),t=>NB(e,n.preset,t.configKey))}function NB(e,t,n){return n in(av(e.presets,t).globals??{})?lk(t,n):n}function PB(e,t,n){let r=iv(t(io.preset.sessionKey),e.globals.preset,e.presets),i=uk(n);return{key:i?.scope===`globals`?NB(e,r,i.field):n,globals:sv(e,r)}}function FB(e,t){let{preset:n}=EB(e,t);return RB(e,n).flatMap(({id:e,setting:r,key:i,decl:a,saved:o})=>{let s=t(i),c=s===null?void 0:z_(a,s);return c===void 0||R_(c)===R_(o)?[]:[{preset:n,id:e,setting:r,key:i,value:c}]})}function IB(e,t,n){let r=new Map(n.map(e=>[e.key,e.value]));return rv(e.presets).flatMap(n=>{let i=RB(e,n);return[...new Set(i.filter(e=>r.has(e.key)).map(e=>e.id))].flatMap(e=>{let n=i.filter(t=>t.id===e);return I_(Object.fromEntries(n.map(e=>[e.setting,e.decl])),Object.fromEntries(n.map(e=>{let n=r.get(e.key)??t(e.key),i=n===null?void 0:z_(e.decl,n);return[e.setting,i??e.saved]}))).map(({message:t})=>`placement "${e}": ${t}`)})})}const LB=new WeakMap;function RB(e,t){let n=LB.get(e)??new Map;LB.set(e,n);let r=n.get(t);if(r!==void 0)return r;let i=[...v_(ov(e,t).node)].flatMap(t=>t.kind!==`segment`||t.drafts===void 0?[]:Object.entries(t.drafts).map(([n,{id:r,key:i}])=>{let a=P_(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 zB(e,t){let n=EB(e,t);return{from:n.preset,globals:av(e.presets,n.preset).globals??{},picks:AB(CB.filter(([e])=>e!==`preset`),n,kB(e,t),e=>e.configKey),placements:FB(e,t)}}function BB(e,t){return Gz({...e,globals:{palette:t},presets:{}},()=>null,TB)}function VB(e,t){let n=EB(e,t),r=SB.theme(n);if(r===null)return{kind:`rule`};let i=BB(e,r),a=sv(e,n.preset),o=Object.fromEntries(C_.map(e=>[e,SB[e](a[e]===void 0?n:i)]));return{kind:`look`,theme:r,look:o,differs:C_.some(e=>o[e]!==SB[e](i))}}function HB(e){return{sessionKeys:ao.filter(t=>t.configKey===e).map(e=>e.sessionKey),fileKeys:[e,...VO(e)?xz.map(t=>lk(t,e)):[],...ck(e)?gh().map(t=>sk(t,e)):[]]}}function UB(e){return new Set(ao.map(e=>e.configKey).filter(t=>HB(t).fileKeys.some(t=>KB(e,GB(t)))))}function WB(e,t,n){let r=MB(e,n),i=new Set(r.map(e=>e.configKey)),a=uo(e=>i.has(io[e].configKey)||t.has(io[e].configKey)),o=VB(e,n);return{unsaved:r.length+FB(e,n).length,resettable:a,themeDefault:o.kind===`look`&&o.differs?{differs:!0,theme:o.theme}:{differs:!1}}}function GB(e){let t=uk(e);if(t===null||t.scope===`preset-root`)throw Error(`reset layer "${e}" is not a value path`);return dk(t)}function KB(e,t){let[n,...r]=t;return n===void 0?e!==void 0:typeof e==`object`&&!!e&&KB(e[n],r)}const qB=gh(),JB=new Set(qB),YB=new Set(Lh),XB=e=>e?JB.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown theme "${e}" (have: ${qB.join(`, `)})`}:{ok:!1,reason:`theme name is required`},ZB=e=>e?YB.has(e)?{ok:!0,value:e}:{ok:!1,reason:`unknown endcaps "${e}" (have: ${Lh.join(`, `)})`}:{ok:!1,reason:`endcaps name is required`},QB=new Set([`1`,`true`]),$B=new Set([`0`,`false`]),eV={endcaps:ZB,theme:XB,"toolbar-expanded":e=>QB.has(e)?{ok:!0,value:`1`}:$B.has(e)?{ok:!0,value:``}:{ok:!1,reason:`expected boolean-ish (1, 0, true, false), got "${e}"`}},tV=yP(eV,`state`,cV);function nV(e,t){return tV.register(e,t)}function rV(e){return tV.gateFor(e)}function iV(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:pv(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 aV(e){return e.filter(e=>e.spec.kind!==`allow-list`||!Object.hasOwn(eV,e.key))}function oV(e,t,n){let r=fo.get(n);if(r!==void 0)return jB(e,t,r);for(let[,t]of A_(e))if(t.key===n)return t.default??null;return null}function sV(e){let t=HN(e);return aV(Object.values(e.actions).flatMap(e=>iV(e,t)))}function cV(e){return _P(sV(e))}const lV=`update.dismissed`,uV=`updateNotice`,dV=io.updateNotice.sessionKey;function fV(e){return e.kind===`source`?e.newer.digest:Xi(e.newer)}const pV=e=>`${e.version} [${Xg(e.digest)}]`;function mV(e){switch(e.kind){case`source`:return{headline:`Newer source`,newer:pV(e.newer),running:pV(e.running),act:`rebuild`,busy:`rebuilding…`,command:{bin:`pnpm`,args:[`build`],cwd:e.root}};case`release`:return{headline:`Newer release`,newer:Xi(e.newer),running:Xi(e.running),act:`upgrade`,busy:`upgrading…`,command:{bin:`pnpm`,args:[`dlx`,`${Qi}@${Xi(e.newer)}`,`install`]}}}}const hV={kind:`idle`},gV={kind:`running`};function _V(e,t,n){if(e===null)return[];let r=fV(e);if(!n.enabled||n.dismissed===r)return[];let i=mV(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(`
|
|
187
|
+
`),c=sr([{verb:zn,args:[s]}]),l=t.kind===`running`?Fg(`[${i.busy}]`,c):Fg(`[${i.act}]`,sr([{verb:Qn,args:[n.sessionId]}]));return[{severity:Pg,message:s,lines:[[Fg(a,c),l,Fg(`[dismiss]`,sr([{verb:Nn,args:[n.sessionId,lV,r]}])),Fg(`[disable]`,sr([{verb:Bn,args:[n.sessionId,uV,`false`]},{verb:Nn,args:[n.sessionId,dV,`false`]}]))],...o.map(e=>[Fg(e,c)])]}]}function vV(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 yV(e){switch(e.kind){case`current`:return[`info`,`build: current ${pV(e.stamp)}`];case`stale`:return[`info`,`build: stale — source ${pV(e.source)}, running ${pV(e.running)}`];case`not-source-checkout`:return[`info`,`build: not a source checkout`];case`unchecked`:return[`warn`,`build: unchecked: ${e.reason}`]}}function bV(e){switch(e.kind){case`current`:return[`info`,`release: current ${Xi(e.installed)}`];case`stale`:return[`info`,`release: stale — latest ${Xi(e.latest)}, running ${Xi(e.installed)}`];case`ahead`:return[`info`,`release: ahead — running ${Xi(e.installed)}, latest ${Xi(e.latest)}`];case`unchecked`:return[`warn`,`release: unchecked: ${e.reason}`]}}function xV(e){let t=null;return([n,r])=>{r!==t&&(t=r,e(n,r))}}const SV=e=>e.split(/\r?\n/).map(e=>e.trim()).filter(e=>e!==``).at(-1);function CV(e){let t=e.exitCode===null?``:` (exit ${e.exitCode})`,n=SV(e.stderr)??e.error??SV(e.stdout)??`no output`;return`${e.reason}${t}: ${n}`}function wV(){let e=[xP(uV,[`false`]),nV(dV,[`false`]),nV(lV,[])];return()=>e.forEach(e=>e())}function TV(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=hV,d=null,f=xV(s),p=xV(s),m=()=>vV(c,l);function h(){let e=m(),t=e===null?null:fV(e);(d===null?null:d.identity)!==t&&(d?.dispose(),d=t===null?null:{identity:t,dispose:nV(lV,[t])})}function g(){c=t_(t,Qg),f(yV(c)),h()}async function _(){l=ea(Lt,await $i(Qi,a,i)),p(bV(l)),h()}return{arm(){wV(),g(),setInterval(g,n).unref(),c.kind===`not-source-checkout`&&(_(),setInterval(()=>void _(),r).unref())},notice:e=>_V(m(),u,e),act(){let e=m();if(e===null)throw new q(`apply-update: nothing newer is known to apply`);let t=mV(e);if(u.kind===`running`)throw new q(`apply-update: already ${t.busy}`);u=gV,s(`info`,`apply-update: ${t.act} — ${t.command.bin} ${t.command.args?.join(` `)??``}`),Le({...t.command,category:`update.apply`,timeoutMs:6e5}).then(n=>{if(n.ok){u=hV,s(`info`,`apply-update: ${t.act} succeeded`),g(),o();return}let r=CV(n);u={kind:`failed`,identity:fV(e),reason:r},s(`error`,`apply-update: ${t.act} failed: ${r}`)})}}}function EV(e,t){try{return L(t(e).mtimeMs)}catch(e){let t=e.code;return t===`ENOENT`||t===`ENOTDIR`?R:z(e.message)}}function DV(e,t){return e.kind===`ok`&&t.kind===`ok`?e.value===t.value:e.kind===t.kind}function OV(e){let{targets:t,intervalMs:n,stat:r,exit:i,log:a}=e,o=t.map(e=>({path:e,stamp:EV(e,r)})),s=o.filter(({stamp:e})=>e.kind!==`failed`),c=null,l=()=>{for(let{path:e,stamp:t}of s){let n=EV(e,r);if(n.kind===`failed`){a(`warn`,`binary stat failed (${e}): ${n.reason}`);continue}if(!DV(t,n)){a(`info`,`binary ${n.kind===`absent`?`gone`:`changed`} (${e}); shutting down`),c&&clearInterval(c),i();return}}};return{arm(){for(let{path:e,stamp:t}of o)t.kind===`failed`&&a(`warn`,`binary stat failed at boot (${e}): ${t.reason}; not watched`);c=setInterval(l,n),c.unref()},checkNow:l}}const kV=`${Yp}${Jp}`;function AV(e){return`${kV}⚠ cc-candybar: ${jV(e)}${Xp}\n`}function jV(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: ${qp(e.message,60)}`;case`render_failed`:return`render failed: ${qp(e.message,60)}`;case`switched_off`:return`switched off: ${qp(e.message,60)}`;case`malformed_response`:return`malformed daemon response: ${qp(e.message,60)}`}}function MV(e){switch(e.kind){case`ok`:return{output:e.value,kick:!1,debug:null};case`transient`:return{output:`
|
|
188
|
+
`,kick:!0,debug:`daemon unavailable (transient: ${e.cause}: ${e.message}) — kicking daemon`};case`permanent`:return{output:AV(e),kick:!1,debug:`daemon refused request (permanent: ${e.cause}) — not kicking`}}}const NV=[`black`,`red`,`green`,`yellow`,`blue`,`magenta`,`cyan`,`white`,`blackBright`,`redBright`,`greenBright`,`yellowBright`,`blueBright`,`magentaBright`,`cyanBright`,`whiteBright`];function PV(e){if(e===void 0||e.isDefault)return;let t=e.fixedValue;if(t!==void 0)return t.hex;let n=e.type===V.STANDARD&&e.number!==void 0?NV[e.number]:void 0;if(n===void 0)throw Error(`frames: no band colour for ${e.name}`);return n}const FV={bold:`bold`,dim:`dimColor`,italic:`italic`,underline:`underline`,strike:`strikethrough`,reverse:`inverse`,blink:null,blink2:null,conceal:null,underline2:null,frame:null,encircle:null,overline:null},IV=Object.keys(FV);function LV(e,t){let n=PV(t.color),r=PV(t.bgcolor),i={};for(let e of IV){if(t[e]!==!0)continue;let n=FV[e];if(n===null)throw Error(`frames: the band cannot draw ${e} text`);i[n]=!0}return{text:e,...n!==void 0&&{color:n},...r!==void 0&&{backgroundColor:r},...i,...t.link!==void 0&&{href:t.link}}}const RV=new U;function zV(e){return{ok:!0,band:new yf().decode(e).map(e=>{let t=e.plain,n=[],r=0;for(let i of e.spans){if(!(i.style instanceof U))throw Error(`frames: the decoder gave a span a ${typeof i.style} style`);i.start>r&&n.push(LV(t.slice(r,i.start),RV)),n.push(LV(t.slice(i.start,i.end),i.style)),r=i.end}return r<t.length&&n.push(LV(t.slice(r),RV)),n})}}function BV(e){let t=MV(Vt(e)).output;try{return zV(t)}catch(e){return zV(`${Yp}${Jp}⚠ cc-candybar ${Kp(e instanceof Error?e.message:String(e))}${Xp}\n`)}}const VV={band:e=>JSON.stringify(BV(e)),statusline:(e,t)=>t,pane:(e,t)=>t};var HV=class{static CACHE_DIR=Ke();static USAGE_CACHE_DIR=v.join(this.CACHE_DIR,`usage`);static LOCKS_DIR=v.join(this.CACHE_DIR,`locks`);static isLocked(e){let t=v.join(this.LOCKS_DIR,e);if(!s.existsSync(t))return!1;try{let n=s.readFileSync(t,`utf-8`),r=parseInt(n.trim(),10);if(isNaN(r))return k(`Invalid PID in lock file ${e}, removing stale lock`),s.unlinkSync(t),!1;try{return process.kill(r,0),!0}catch(n){return n.code===`ESRCH`?(k(`Removing stale lock file ${e} for dead process ${r}`),s.unlinkSync(t),!1):(k(`Error checking process ${r} for lock ${e}:`,n),!0)}}catch(t){return k(`Error reading lock file ${e}:`,t),!0}}static async acquireLock(e,t=5e3){await this.ensureCacheDirectories();let n=v.join(this.LOCKS_DIR,e),r=Date.now(),i=String(process.pid);for(;Date.now()-r<t;)try{return await s.promises.writeFile(n,i,{flag:`wx`}),k(`Lock acquired for ${e}`),!0}catch(e){if(e.code===`EEXIST`)await he(50);else throw e}return k(`Failed to acquire lock for ${e} within ${t}ms`),!1}static async releaseLock(e){let t=v.join(this.LOCKS_DIR,e);try{await s.promises.unlink(t),k(`Lock released for ${e}`)}catch(t){t.code!==`ENOENT`&&k(`Error releasing lock for ${e}:`,t)}}static async ensureCacheDirectories(){try{await Promise.all([s.promises.mkdir(this.CACHE_DIR,{recursive:!0}),s.promises.mkdir(this.USAGE_CACHE_DIR,{recursive:!0}),s.promises.mkdir(this.LOCKS_DIR,{recursive:!0})])}catch(e){k(`Failed to create cache directories:`,e)}}static createProjectHash(e){return le(`md5`).update(e).digest(`hex`).substring(0,8)}static async getUsageCache(e,t){await this.ensureCacheDirectories();let n=v.join(this.USAGE_CACHE_DIR,`${e}.json`),r=`${e}.usage.lock`;for(let i=0;i<3;i++){if(this.isLocked(r)){k(`Cache for ${e} is locked, waiting...`),await he(75);continue}try{let r=await s.promises.readFile(n,`utf-8`),i=JSON.parse(r);return!t||i.timestamp>=t?(k(`[CACHE-HIT] ${e} disk cache: found`),this.deserializeDates(i.data)):(k(`${e} cache outdated: cache=${i.timestamp}, latest=${t}`),null)}catch(t){if(t.code===`ENOENT`)return k(`No shared ${e} usage cache found`),null;k(`Attempt ${i+1} failed to read ${e} cache: ${t.message}. Retrying...`),await he(75)}}return k(`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 r=`${e}.usage.lock`;if(!await this.acquireLock(r)){k(`Could not acquire lock to set usage cache for ${e}`);return}try{await this.ensureCacheDirectories();let r=v.join(this.USAGE_CACHE_DIR,`${e}.json`),i=JSON.stringify({data:t,timestamp:n||Date.now()});await s.promises.writeFile(r,i,`utf-8`),k(`[CACHE-SET] ${e} disk cache stored`)}catch(t){k(`Failed to save ${e} usage cache:`,t)}finally{await this.releaseLock(r)}}};const UV={"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 WV=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 HV.getUsageCache(`pricing`,e)}static async saveDiskCache(e){await HV.setUsageCache(`pricing`,e)}static async fetchPricingData(){return new Promise(e=>{let t=new n(this.GITHUB_PRICING_URL),r=me({hostname:t.hostname,path:t.pathname,headers:{"User-Agent":`cc-candybar`,"Cache-Control":`no-cache`},timeout:5e3},t=>{if(t.statusCode!==200){k(`HTTP ${t.statusCode}: ${t.statusMessage}`),e(null);return}let n=``,i=0;t.on(`data`,t=>{if(i+=t.length,i>1048576){k(`Response too large`),r.destroy(),e(null);return}n+=t}),t.on(`end`,()=>{try{let t=JSON.parse(n),r=t._meta,i={};for(let[e,n]of Object.entries(t))e!==`_meta`&&(i[e]=n);this.validatePricingData(i)?(k(`Fetched fresh pricing from GitHub for ${Object.keys(i).length} models`),k(`Pricing last updated: ${r?.updated||`unknown`}`),e(i)):(k(`Invalid pricing data structure`),e(null))}catch(t){k(`Failed to parse JSON:`,t),e(null)}}),t.on(`error`,t=>{k(`Response error:`,t),e(null)})});r.on(`error`,t=>{k(`Request error:`,t),e(null)}),r.on(`timeout`,()=>{k(`Request timeout`),r.destroy(),e(null)}),r.end()})}static async getCurrentPricing(){if(this.executionCache!==null)return k(`[CACHE-HIT] Pricing execution cache: ${Object.keys(this.executionCache).length} models`),this.executionCache;let e=await this.loadDiskCache();if(e)return k(`[CACHE-HIT] Pricing disk cache: ${Object.keys(e).length} models`),this.executionCache=e,k(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(e).length} models`),e;let t=await this.fetchPricingData();return t?(await this.saveDiskCache(t),k(`[CACHE-SET] Pricing disk cache stored: ${Object.keys(t).length} models`),this.executionCache=t,k(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(t).length} models`),t):(k(`[CACHE-FALLBACK] Using offline pricing data: ${Object.keys(UV).length} models`),this.executionCache=UV,k(`[CACHE-SET] Pricing execution cache stored: ${Object.keys(UV).length} models`),UV)}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 k(`[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),k(`[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 GV=/<command-name>\s*([^<\s][^<]*?)\s*<\/command-name>/;function KV(e){if(typeof e==`string`)return GV.exec(e)?.[1]}function qV(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 JV(e){return typeof e==`string`?e:Array.isArray(e)?e.find(e=>typeof e==`object`&&!!e&&e.type===`text`&&typeof e.text==`string`)?.text??``:``}function YV(e,t){let n=e.message?.content,r=[],i=[],a;if(Array.isArray(n))for(let e of n){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=qV(t.input)??a);break}case`tool_result`:{let e=t.tool_use_id;typeof e==`string`&&i.push(e);break}default:break}}let o=t===`prompt`?KV(JV(n)):void 0;if(!(r.length===0&&i.length===0&&a===void 0&&o===void 0))return{...r.length>0&&{started:r},...i.length>0&&{finished:i},...a!==void 0&&{todos:a},...o!==void 0&&{command:o}}}function XV(e){if(e!==void 0)return[e];let t=ee();return[S(t,`.config`,`claude`),S(t,`.claude`)].filter(e=>d(e))}async function ZV(e){let t=[];for(let n of e){let e=S(n,`projects`);if(d(e))try{let n=await Oi(e,{withFileTypes:!0});for(let r of n)if(r.isDirectory()){let n=S(e,r.name);t.push(n)}}catch(t){k(`Failed to read projects directory ${e}:`,t)}}return t}async function QV(e,t,n){let r=[],i=S(t,e,`subagents`);try{let t=(await Oi(i)).filter(e=>e.startsWith(`agent-`)&&e.endsWith(`.jsonl`));for(let a of t){let t=S(i,a);if(n?.has(t)){r.push(t);continue}try{let n=(await ki(t,`utf-8`)).split(`
|
|
189
|
+
`)[0];n&&JSON.parse(n).sessionId===e&&r.push(t)}catch{k(`Failed to check agent file ${t}`)}}}catch(e){k(`Failed to read subagents directory ${i}:`,e)}return r}function $V(e){let t=e.message;if((e.type||t?.role||t?.type)!==`user`)return;if(tH(t)===`tool_result`)return`tool-result`;let n=typeof e.origin==`object`&&e.origin!==null?e.origin.kind:void 0;if(n!==void 0&&n!==`human`)return`turn`;let r=JV(t?.content).trimStart();return r.startsWith(`[Request interrupted by user`)?`interrupt`:e.isMeta===!0||e.isCompactSummary===!0||eH.test(r)?`claude-code`:`prompt`}const eH=/^<(?:command-name|local-command-std(?:out|err)|bash-(?:input|stdout|stderr))>/;function tH(e){let t=e?.content;return Array.isArray(t)&&typeof t[0]==`object`&&t[0]?t[0].type:void 0}const nH=new Map;async function rH(e){try{let t=await Ai(e),n=t.size,r=nH.get(e);if(r&&r.mtime===t.mtimeMs&&r.size===n)return k(`[parse-cache] hit ${e}`),nH.delete(e),nH.set(e,r),r.entries;let i;return n>1048576?(k(`Using streaming parser for large file ${e} (${Math.round(n/1024)}KB)`),i=await uH(e)):i=await cH(e),k(`Parsed ${i.length} entries from ${e}`),n>5242880?i:(nH.delete(e),nH.size>=16&&nH.delete(nH.keys().next().value),nH.set(e,{mtime:t.mtimeMs,size:n,entries:i}),i)}catch(t){if(t.code===`ENOENT`)return k(`Transcript not present yet: ${e}`),[];throw t}}function iH(e){if(!e.timestamp)return null;let t=e.message,n=t?.usage,r=$V(e);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}:void 0,costUSD:typeof e.costUSD==`number`?e.costUSD:void 0,isSidechain:e.isSidechain===!0,userEntry:r,activity:YV(e,r),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 aH(e){let t=e.trim();if(!t)return{kind:`blank`};try{let e=JSON.parse(t);return typeof e==`object`&&e&&!Array.isArray(e)?{kind:`object`,value:e}:{kind:`unparsed`,reason:`not a JSON object`}}catch(e){return{kind:`unparsed`,reason:String(e)}}}function oH(e){let t=aH(e);if(t.kind===`unparsed`)return k(`Failed to parse JSONL line: ${t.reason}`),null;if(t.kind===`blank`)return null;try{return iH(t.value)}catch(e){return k(`Failed to project JSONL line: ${e}`),null}}function sH(e){let t=[];for(let n of e.split(`
|
|
190
|
+
`)){let e=oH(n);e&&t.push(e)}return t}async function cH(e){return sH(await ki(e,`utf-8`))}async function lH(e,t){let n=await ji(e,t===void 0?void 0:{offset:t.offset,ino:t.ino});if(n.kind!==`ok`)return n;let{buf:r,start:i,stamp:a,ino:o,reset:s}=n.value,c=r.lastIndexOf(10);return L(c<0?{entries:[],cursor:{offset:i,stamp:a,ino:o},reset:s}:{entries:sH(r.subarray(0,c+1).toString(`utf-8`)),cursor:{offset:i+c+1,stamp:a,ino:o},reset:s})}async function uH(e){return new Promise((t,n)=>{let r=[],i=u(e,{encoding:`utf8`}),a=ge({input:i,crlfDelay:1/0});a.on(`line`,e=>{let t=oH(e);t&&r.push(t)}),a.on(`close`,()=>{t(r)}),a.on(`error`,t=>{k(`Streaming parser error for ${e}:`,t),n(t)}),i.on(`error`,t=>{k(`File stream error for ${e}:`,t),n(t)})})}var dH=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 fH(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 pH=new Map,mH={cost:0,input:0,output:0,cacheCreation:0,cacheRead:0},hH={cost:null,calculatedCost:null,officialCost:null,tokens:null,tokenBreakdown:null};function gH(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function _H(){let e=new Date;return e.setHours(0,0,0,0),e.setDate(e.getDate()-1),e.getTime()}function vH(){return{input:0,output:0,cacheCreation:0,cacheRead:0}}async function yH(e,t,n,r){let i=gH(new Date(_H())),a=e&&!t?e:void 0,o=a?.entries??0,s=a?.cost??0,c=a?{...a.breakdown}:vH(),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 WV.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=gH(new Date(e.timestamp));if(r<i)continue;let a=l.get(r)??{...mH};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 bH(e){let t=0,n=0,r=vH(),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)??{...mH};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:hH,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 xH(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 SH=class{sessions=new Map;flight=new dH;seeded=new Map;seededDay=``;rescanIntervalMs;speedFlight=new dH;staleAgeMs;log;renderTally={hits:0,misses:0};sweeps=0;scans={seed:0,rescan:0};sweepTimer=null;constructor(e={}){this.log=e.logger??qt,this.staleAgeMs=e.staleAgeMs??864e5,this.rescanIntervalMs=e.rescanIntervalMs??6e4;let t=e.sweepIntervalMs??3e5;t>0&&(this.sweepTimer=setInterval(()=>this.sweepStale(),t),this.sweepTimer.unref())}getStats(){return{size:this.sessions.size,hits:this.renderTally.hits,misses:this.renderTally.misses,sweeps:this.sweeps,seeds:this.scans.seed,rescans:this.scans.rescan}}async getUsageInfo(e,t){let n=await this.ingest(e,t?.transcript_path,this.renderTally);if(n.kind===`failed`)return n;let r=n.kind===`ok`?n.value.sessionInfo:hH,i=t?.cost?.total_cost_usd??null;return L({session:{...r,cost:i??r.cost,officialCost:i}})}async getTodayInfo(e,t,n){let r=gH(zE(n)),i=XV(t);try{await this.ensureSeeded(r,i,n*1e3)}catch(e){return z(`usage seed: ${e instanceof Error?e.message:String(e)}`)}let a=await this.ingest(e?.session_id??``,e?.transcript_path,this.renderTally);if(a.kind===`failed`)return a;let o=i.map(e=>S(e,`projects`)+C),s={...mH},c=!1;for(let[t,{record:n}]of this.sessions){let i=n?.transcriptPath??``,a=t===e?.session_id||o.some(e=>i.startsWith(e))?n?.days??pH:pH;c||=a.has(r);let l=a.get(r)??mH;s.cost+=l.cost,s.input+=l.input,s.output+=l.output,s.cacheCreation+=l.cacheCreation,s.cacheRead+=l.cacheRead}return c?L({cost:s.cost,tokens:s.input+s.output+s.cacheCreation+s.cacheRead,tokenBreakdown:{input:s.input,output:s.output,cacheCreation:s.cacheCreation,cacheRead:s.cacheRead},date:r}):R}async observeSpeed(e,t,n){if(!e)return R;let r=wi(t);return this.speedFlight.run(`${e}:${r}`,async()=>{let i=await this.ingest(e,t,this.renderTally,r);if(i.kind===`failed`)return i;let a=fH(i.kind===`ok`?i.value.sessionInfo.tokenBreakdown:null,n),{ring:o}=this.hold(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(),L({...s!==void 0&&{prev:s},cur:a,samples:[...o]})})}async ingest(e,t,n,r){if(!e)return R;let i=r??wi(t),a=this.see(e)?.record;if(a&&i!==``&&a.transcriptStamp===i)return n.hits++,L(a);if(!t)return a?L(a):R;n.misses++;let o;try{o=await this.flight.run(`${e}:${i}`,async()=>{let n=this.sessions.get(e)?.record;return{prior:n,outcome:await this.refold(e,t,n)}})}catch(t){return z(`usage refold (${e}): ${t instanceof Error?t.message:String(t)}`)}let{prior:s,outcome:c}=o;if(c.kind!==`ok`)return c;let l={files:c.value.files,sessionInfo:c.value.sessionInfo,days:c.value.days,transcriptStamp:c.value.mainStamp,transcriptPath:t};return this.sessions.get(e)?.record===s&&(this.hold(e).record=l),L(l)}see(e){let t=this.sessions.get(e);return t&&(t.lastSeenAt=Date.now()),t}hold(e){let t=this.see(e);if(t)return t;let n={lastSeenAt:Date.now(),record:void 0,ring:[]};return this.sessions.set(e,n),n}async refold(e,t,n){let r=await QV(e,b(t),n===void 0?void 0:new Set(n.files.keys())),i=new Map,a=``;for(let e of[t,...r]){let r=n?.files.get(e),o=await lH(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 yH(r,l,s,c)),e===t&&(a=c.stamp)}return L({files:i,...bH(i),mainStamp:a})}ensureSeeded(e,t,n){this.seededDay!==e&&(this.seeded.clear(),this.seededDay=e);let r=t.join(`\0`),i=this.seeded.get(r);if(!i){let e=this.seed(t,`seed`),i={done:e,scanning:e,startedAtMs:n};return this.seeded.set(r,i),this.settle(r,i,e),e}return i.scanning===void 0&&n-i.startedAtMs>=this.rescanIntervalMs&&(i.startedAtMs=n,i.scanning=this.seed(t,`rescan`),this.settle(r,i,i.scanning)),i.done}settle(e,t,n){n.then(()=>{t.scanning=void 0},n=>{this.log(`warn`,`usageStore scan: ${n instanceof Error?n.message:String(n)}`),this.seeded.get(e)===t&&this.seeded.delete(e)})}async scanned(){await Promise.allSettled([...this.seeded.values()].map(e=>e.scanning))}async seed(e,t){let n=Date.now(),r=_H(),i=await ZV(e),a=[];for(let e of i){let t;try{t=await Oi(e)}catch{continue}for(let n of t){if(!n.endsWith(`.jsonl`))continue;let t=S(e,n),i;try{i=await Ai(t)}catch{continue}i.mtimeMs<r||a.push({sessionId:n.slice(0,-6),path:t,stamp:Ti(i)})}}let o={hits:0,misses:0};await xH(a,8,async e=>{let n=await this.ingest(e.sessionId,e.path,o,e.stamp);n.kind===`failed`&&this.log(`warn`,`usageStore ${t}: ${n.reason}`)}),this.log(`info`,`usageStore ${t} sessions=${a.length} read=${o.misses} dirs=${e.join(`,`)} ms=${Date.now()-n}`),this.scans[t]++}sweepStale(){let e=Date.now(),t=0,n=0,r=0;for(let[i,{lastSeenAt:a,record:o}]of this.sessions)if(!(e-a<=this.staleAgeMs)){if(o?.days.has(this.seededDay)){n++;continue}this.sessions.delete(i),t++,o===void 0&&r++}return t>0&&this.sweeps++,(t>0||n>0)&&this.log(`info`,`usageStore sweep dropped=${t} noRecord=${r} held=${n}`),t}close(){this.sweepTimer&&=(clearInterval(this.sweepTimer),null),this.sessions.clear(),this.seeded.clear()}},CH=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 k(`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);k(`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{k(`Calculating context tokens from transcript: ${e}`);let n=await rH(e);if(n.length===0)return k(`No entries in transcript`),R;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,k(`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 k(`Most recent main chain context: ${n} tokens (limit: ${t})`),L({totalTokens:n,maxTokens:t,...this.ratioPercentages(n,t)})}return k(`No main chain entries with usage data found`),R}catch(e){return z(`context transcript: ${e instanceof Error?e.message:String(e)}`)}}async getContextInfo(e){let t=this.calculateContextFromHookData(e);if(t)return L(t);let n=e.context_window?.context_window_size??2e5;return this.calculateContextTokensFromTranscript(e.transcript_path,n)}},wH=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=wi(t);if(n&&r!==``&&n.cursor.stamp===r)return this.touch(e,n),{kind:`ok`,value:n.value};let i=await lH(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 TH={messageCount:0,nonPrompts:0,recent:[]},EH=new Set([`turn`,`interrupt`,`claude-code`]);function DH(e,t){if(t.isSidechain)return e;let n=[...e.recent,t];return{messageCount:e.messageCount+ +(t.userEntry===`prompt`),nonPrompts:e.nonPrompts+ +!!EH.has(t.userEntry),recent:n.length>20?n.slice(-20):n}}function OH(e){let t=null,n=null;for(let r of e){let e=r.type||r.message?.role||r.message?.type;if(r.userEntry===`prompt`||r.userEntry===`turn`)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 kH=class{fold=new wH(TH,DH);async getMetricsInfo(e,t){if(k(`Getting metrics from hook data for session: ${e}`),!t.cost)return R;let n=await this.fold.read(e,t.transcript_path);return n.kind===`failed`?z(`metrics (${e}): ${n.reason}`):L({responseTime:t.cost.total_api_duration_ms/1e3,lastResponseTime:OH(n.value.recent),sessionDuration:t.cost.total_duration_ms/1e3,messageCount:n.value.messageCount,nonPrompts:n.value.nonPrompts,linesAdded:t.cost.total_lines_added,linesRemoved:t.cost.total_lines_removed})}};const AH={command:null,todos:[],pending:[],done:[]};function jH(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 MH(e,t){switch(t.userEntry){case`prompt`:return{...e,command:t.activity?.command??null,pending:[],done:[]};case`interrupt`:return{...e,pending:[]};case`turn`:case`tool-result`:case`claude-code`:case void 0:return e}}function NH(e,t){if(t.isSidechain)return e;let n=MH(e,t),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=jH(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 PH(e){return{command:e.command,todos:e.todos,running:e.pending.reduce((e,t)=>jH(e,t.name),[]),done:e.done}}var FH=class{fold=new wH(AH,NH);async getActivityInfo(e,t){let n=await this.fold.read(e,t.transcript_path);return n.kind===`failed`?z(`activity (${e}): ${n.reason}`):L(PH(n.value))}};function IH(e,t,n,r){return{bin:`tmux`,args:[`-S`,e.socket,...n],timeoutMs:2e3,category:t,stdinInput:r}}function LH(e,t){if(e.ok)return{kind:`ok`,stdout:e.stdout};if(e.reason===`rate-limited`)return{kind:`rate-limited`,reason:e.error??`rate-limited`};let n=e.error??[e.reason,e.stderr.trim()].filter(e=>e!==``).join(`: `);return{kind:`failed`,reason:`tmux ${t[0]} failed (${n})`}}function RH(e,t,n,r){return LH(Re(IH(e,t,n,r)),n)}async function zH(e,t,n){return LH(await Le(IH(e,t,n)),n)}const BH=e=>`${e.socket}\n${e.pane}`;var VH=class{names=new Map;asking=new dH;constructor(e=Date.now){this.now=e}getSessionName(e){let t=BH(e),n=this.names.get(t);if(n&&this.now()-n.at<3e4)return Promise.resolve(n.outcome);let r=this.asking.run(t,()=>this.ask(t,e));return n?Promise.resolve(n.outcome):r}async ask(e,t){k(`Getting tmux session name for pane ${t.pane} on ${t.socket}`);let n=await zH(t,`tmux`,[`display-message`,`-p`,`-t`,t.pane,`#S`]),r=n.kind===`ok`?n.stdout.trim():``,i=n.kind===`ok`?r?L(r):R:z(n.reason);for(this.names.delete(e),this.names.set(e,{outcome:i,at:this.now()});this.names.size>64;)this.names.delete(this.names.keys().next().value);return i}};const HH=e=>JSON.stringify([e.sessionId,e.projectDir,e.cwd,e.claudeConfigDir,e.env===void 0?null:ct.map(t=>e.env?.[t]??null)]);var UH=class{readings=new Map;inFlight=new Map;constructor(e,t=Date.now){this.edge=e,this.now=t}getCeiling(e){let t=HH(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),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);if(n.kind!==`ok`)throw Error(n.kind===`failed`?n.reason:`memento is not installed or not enabled for this project`);let r=HH(e);try{this.edge.move(n.value,e,t)}finally{this.readings.delete(r),this.inFlight.delete(r),this.fetch(r,e)}}};function WH(e){return{gitProvider:new NE({watchers:e.watchers,logger:e.logger}),usageStore:new SH({logger:e.logger}),contextProvider:new CH,metricsProvider:new kH,activityProvider:new FH,tmuxService:new VH,mementoProvider:new UH(Uz()),autoCompact:Hj,log:e.logger}}function GH(e,t){return e===void 0?!0:e.evaluate(t).map(e=>e.plain).join(``)!==`false`}const KH={kind:`hidden`},qH={kind:`shown`};function JH(e,t){try{return GH(e,t)?qH:KH}catch(e){return{kind:`failed`,message:e instanceof Error?e.message:String(e)}}}function YH(e,t){let n=K.fromFragments(e);return n.end=``,n.overflow=`ignore`,t!==void 0&&!t.isNull&&(n.style=t),n}function XH(e,t,n){e.cellLength>t?e.truncate(t,{mode:n.truncate,marker:`…`}):e.cellLength<t&&e.align(n.justify,t)}function ZH({lead:e,text:t,trail:n}){return[...e===void 0?[]:[e],t,...n===void 0?[]:[n]]}function QH({text:e,placement:t,lead:n,trail:r}){return{text:$H(e),placement:t,...n!==void 0&&{lead:$H(n)},...r!==void 0&&{trail:$H(r)}}}function $H(e){let t=e.blankCopy(e.plain);t.style=tm(e.style).clearMetaAndLinks();for(let{start:n,end:r,style:i}of e.spans)t.stylize(tm(i).clearMetaAndLinks(),n,r);return t}function eU(e){let t=ZH(e);if(t.length===1)return e.text;let n=YH(t);return n.style=e.text.style,n}function tU(e,t){let{width:n,justify:r,truncate:i,baseStyle:a,padding:o,placement:s,lead:c=[],trail:l=[]}=t;if(e.length===0)return[];let u=YH(e,a).pad(o),d=new K(` `.repeat(o)),f={placement:s,...c.length>0&&{lead:YH([d,...c],a)},...l.length>0&&{trail:YH([...l,d],a)}};if(n===`auto`)return[{text:u,...f}];let p={justify:r,truncate:i};return n===`fill`?[{text:u,fill:p,...f}]:(XH(u,n,p),[{text:u,...f}])}const nU=RegExp(`\\x1b\\[[0-9;]*m|${Mu.source}`,`g`);function rU(e){return Math.max(0,...e.split(`
|
|
191
|
+
`).map(e=>Co(e.replace(nU,``))))}function iU(e,t){let n=()=>e.map(e=>({owner:eU(e),placement:e.placement})),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=Ag(e.map(eU),t).split(`
|
|
192
|
+
`);if(i.length>1)return n();let a=Math.max(0,t.width-rU(i[0]??``)),o=Math.floor(a/r.length),s=a-o*r.length;return r.forEach(({at:t,how:n},i)=>{let a=o+(i===r.length-1?s:0),{text:c}=e[t];XH(c,c.cellLength+a,n)}),n()}function aU(e,t){let n=[],r=[],i=()=>{if(!r.length)return;let e=oU(r,t);e.plain.length>0&&n.push(e),r=[]};for(let a of e){let e={frag:a,style:tm(a.style)};if(e.style.link){i();let r=oU([e],t);r.plain.length>0&&n.push(r)}else r.push(e)}return i(),n}function oU(e,t){let n=t!==void 0&&!t.isNull?t:void 0,r=e.map(e=>sU(e.frag,n?n.add(e.style):e.style)),i=K.fromFragments(r);return i.end=``,i.overflow=`ignore`,r.length===1?i.style=r[0].style:n!==void 0&&(i.style=n),i}function sU(e,t){let n=e.copy();return n.style=t,n}function cU(e,t){if(e.look===void 0)throw Error(`${t} read the render's look before any render resolved one`);return e.look}function lU(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,uU(e,t,o,n,r,i));return i}function uU(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=pv(n.from,i);return{kind:`set-option`,key:n.set,stateVar:e,options:[...t.members],paletteOf:t.paletteOf,library:t.library}}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=co.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=pv(n.from,i);return{kind:`persist-option`,key:n.persist,stateVar:e,options:[...t.members],paletteOf:t.paletteOf,library:t.library}}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=pv(n.insertSegmentFrom,i);return{kind:`layout-op-option`,key:n.persist,anchor:n.anchor,relation:n.relation,options:[...e.members],paletteOf:e.paletteOf,library:e.library}}return{kind:`persist-bounded`,key:n.persist,by:n.by}}if(`copy`in n)return{kind:`copy`,text:pU(e,n.copy,t)};if(`open`in n)return{kind:`open`,target:pU(e,n.open,t)};if(`reset`in n)return{kind:`reset`,key:n.reset};if(`doctor`in n)switch(n.doctor){case`run`:return{kind:`doctor-run`};case`fix`:return{kind:`doctor-fix`,check:n.check};case`mark`:return{kind:`doctor-mark`,check:n.check,mark:n.mark}}if(`ceiling`in n)return{kind:`ceiling`,args:wI(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(`back`in n)return{kind:`back`};if(`rewind`in n)return{kind:`rewind`};if(`save`in n)return{kind:`save`};if(`preset`in n)return n.preset===`save`?{kind:`preset-save`}:{kind:`preset-delete`,name:pU(e,n.name,t)};if(`themeDefault`in n)return{kind:`theme-default-save`};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 dU(e){return e.kind===`do`?dU(e.head):e}function fU(e){switch(dU(e).kind){case`set-option`:case`set-int`:case`persist-option`:case`layout-op-option`:return!0;case`set-literal`:case`set-bounded`:case`set-cycle`:case`copy`:case`open`:case`persist-literal`:case`persist-bounded`:case`persist-cycle`:case`reset`:case`layout-op`:case`undo`:case`redo`:case`back`:case`rewind`:case`save`:case`preset-save`:case`preset-delete`:case`theme-default-save`:case`doctor-run`:case`doctor-fix`:case`doctor-mark`:case`ceiling`:case`slash`:case`do`:return!1}}function pU(e,t,n){try{return e(t)}catch(e){throw Error(`Template parse error in actions.${n}: ${e.message}`,{cause:e})}}function mU(e,t){return e.has(t)?Gv(e.read(t)):``}function hU(e,t){return e.evaluate(t).map(e=>e.plain).join(``)}function gU(e,t,n,r){let i=new K(e,{style:U.combine([r,new U({link:t,bold:n})])});return i.overflow=`ignore`,i.end=``,i}function _U(e,t,n=!1){let r=new U({link:t,bold:n?!0:void 0}),i=new K(e.plain,{style:U.combine([tm(e.style),r])});for(let t of e.spans)i.stylize(U.combine([tm(t.style),r]),t.start,t.end);return i.overflow=`ignore`,i.end=``,i}function vU(e,t){return Math.max(e.members.indexOf(mU(t,e.stateVar)),0)}function yU(e,t,n,r,i){switch(e.kind){case`set-literal`:{let t=mU(r,e.stateVar);return{effects:[{verb:Nn,args:[i,e.key,e.value]}],active:t===e.value}}case`set-option`:{let a=n??t,o=mU(r,e.stateVar);return{effects:[{verb:Nn,args:[i,e.key,a]}],active:o===a}}case`set-int`:{let a=n??t,o=mU(r,e.stateVar);return{effects:[{verb:Nn,args:[i,e.key,a]}],active:o===a}}case`set-cycle`:{let t=e.members[(vU(e,r)+1)%e.members.length];return{effects:[{verb:Nn,args:[i,e.key,t]}],active:!1}}case`set-bounded`:return{effects:[{verb:Pn,args:[i,e.key,String(e.by)]}],active:!1};case`copy`:return{effects:[{verb:Fn,args:[hU(e.text,zT(r))]}],active:!1};case`open`:return{effects:[{verb:In,args:[hU(e.target,zT(r))]}],active:!1};case`persist-literal`:{let t=mU(r,e.stateVar);return{effects:[{verb:Bn,args:[i,e.key,e.value]}],active:t===e.value}}case`persist-option`:{let a=n??t,o=mU(r,e.stateVar);return{effects:[{verb:Bn,args:[i,e.key,a]}],active:o===a}}case`persist-cycle`:{let t=e.members[(vU(e,r)+1)%e.members.length];return{effects:[{verb:Bn,args:[i,e.key,t]}],active:!1}}case`persist-bounded`:return{effects:[{verb:Vn,args:[i,e.key,String(e.by)]}],active:!1};case`reset`:return{effects:[{verb:Kn,args:[i,e.key]}],active:!1};case`undo`:return{effects:[{verb:Jn,args:[i]}],active:!1};case`redo`:return{effects:[{verb:Yn,args:[i]}],active:!1};case`back`:return{effects:[{verb:Xn,args:[i]}],active:!1};case`rewind`:return{effects:[{verb:Zn,args:[i]}],active:!1};case`save`:return{effects:[{verb:Hn,args:[i]}],active:!1};case`preset-save`:return{effects:[{verb:Un,args:[i]}],active:!1};case`theme-default-save`:return{effects:[{verb:Wn,args:[i]}],active:!1};case`preset-delete`:return{effects:[{verb:Gn,args:[i,hU(e.name,zT(r))]}],active:!1};case`doctor-run`:return{effects:[{verb:$n,args:[i]}],active:!1};case`doctor-fix`:return{effects:[{verb:er,args:[i,e.check]}],active:!1};case`doctor-mark`:return{effects:[{verb:tr,args:[i,e.check,e.mark]}],active:!1};case`ceiling`:return{effects:[{verb:rr,args:[i,...e.args]}],active:!1};case`slash`:return{effects:[{verb:ir,args:[i,e.line]}],active:!1};case`layout-op`:return{effects:[{verb:qn,args:[i,e.key,sP(e.op)]}],active:!1};case`do`:{let a=yU(e.head,t,n,r,i);return{effects:[...a.effects,...e.rest.flatMap(e=>yU(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:qn,args:[i,e.key,sP(r)]}],active:!1}}}}function bU(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:gr(`action "${e}"`,n,t.members.length,vU(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]?.plain}}function xU(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}=bU(e,dU(r),t,i),s=mU(i,`session.id`),{effects:c,active:l}=yU(r,a.plain,o,i,s);return _U(a,sr(c),l)}function SU(e){return{action:{fn:(t,...n)=>xU(t,n,e),argTypes:[`string`,`liftable`],arity:{kind:`variadic`},returnType:`T`}}}function CU(e,t){return gU(`✕`,sr([{verb:Nn,args:[mU(e,`session.id`),t,pr]}]),!1)}function wU(e,t,n){return new U({bgcolor:H.fromRgba(t),color:H.fromRgba(Bm(e,t,n))})}function TU({tint:e,text:t}){return new U({bgcolor:H.fromRgba(e),color:H.fromRgba(t)})}function EU(e,t,n){return new U({color:H.fromRgba(gc(Am(e,`warning`),t,zm,n))})}function DU(e,t,n){return U.combine([wU(e,t,n),EU(e,t,n)])}function OU(e,t,n){return wU(e.palette,sh(e.palette,e.disclosure,[t],n),n)}function kU(e){let t=H.fromRgba(Am(e,`background`)),n=K.fromFragments(rm.map(n=>new K(`▀`,{style:new U({color:H.fromRgba(Am(e,n)),bgcolor:t})})));return n.overflow=`ignore`,n.end=``,n}const AU=(e,t)=>{let n=typeof e==`string`?new K(e,{style:t}):e;return n.overflow=`ignore`,n.end=``,n},jU=e=>new U({bold:e});function MU(e,t,n,r,i,a){if(r===void 0)return(n,r,a,o)=>AU(a,U.combine([OU(e,{...n,distribution:t},i),jU(o)]));let o=wU(e.palette,a,i);return(e,t,i,a)=>NU(i,U.combine([o,jU(a)]),r(t,n))}const NU=(e,t,n)=>AU(K.fromFragments([AU(e,t),AU(` `,t),kU(n)]));function PU(e,t){return t===void 0?(e,t,n)=>AU(n):(n,r,i)=>NU(i,void 0,t(r,e))}function FU(e,t,n,r,i){let a=wU(e.palette,i,r);return(e,r,i,o)=>AU(K.fromFragments([AU(o?`[`:` `,a),kU(n(r,t)),AU(o?`]`:` `,a)]))}function IU(e,t,n){let r=t.map(t=>({label:t.label,indices:e.flatMap((e,n)=>e.group===t.id?[n]:[])})).filter(e=>e.indices.length>0);if(r.reduce((e,t)=>e+t.indices.length,0)!==e.length){let n=new Set(t.map(e=>e.id)),r=e.flatMap((e,t)=>n.has(e.group)?[]:[`#${t} (group "${e.group}")`]);throw Error(`library: ${r.join(`, `)} name a group the domain does not list (${[...n].join(`, `)})`)}return n?r.flatMap(e=>LU(e.indices,8).map(t=>[{label:e.label,indices:t}])):[r]}function LU(e,t){return Array.from({length:Math.ceil(e.length/t)},(n,r)=>e.slice(r*t,(r+1)*t))}function RU(e,t){return new K(e).truncate(t,{marker:`…`}).plain}function zU(e){return{current:null,drawnAt:e}}function BU(e,t,n,r,i,a,o){let s={segName:t,placementId:n,palette:r,disclosure:i,tint:a,text:o,bg:void 0,drops:[]};return e.current=s,s}function VU(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 HU(e){return new K(e).cellLength}function UU(e){return Math.max(1,e.width-e.chromeCols-2*e.padding)}function WU(e){return Math.max(1,UU(e)-(HU(`✕`)+2*e.padding+e.seamCols))}function GU(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 KU(e,t,n){let r=HU(`←`)+1+HU(`→`)+1,i=GU(e,t,n);return(i.length>1?GU(e,t,n+r):i).map(e=>[{label:``,indices:e}])}function qU(e,t){let n=[];for(let t of e)n.length>0&&n.push(new K(` `)),n.push(t);let r=K.fromFragments(n);return r.overflow=t?`ignore`:void 0,r.end=``,r}function JU(e,t,n,r,i){let a=e.compiled.get(t);if(!a||a.kind!==n)throw Error(`${i} references action "${t}" which must be ${r}, got ${a?`a ${a.kind} action`:`no such action`}`);return a}function YU(e,t,n){let r=e.compiled.get(t),i=r&&dU(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 XU(e,t,n,r,i,a,o,s,c=[]){let l=a.compiled.get(e),u=a.store,d=mU(u,`session.id`),f=`stateVar`in t?mU(u,t.stateVar):void 0,p=(e,n)=>{let r=t.options[e];return o({index:e,count:t.options.length},r,n,r===f)},m=i?r.kind===`led`?WU(a):UU(a):1/0,h=(r.kind===`led`?0:HU(`✕`)+1)+c.reduce((e,t)=>e+HU(t.glyph)+1,0),g=t.library&&{groups:t.library.groups,entries:t.options.map(t.library.entry)},_=g===void 0?t.options.map((e,t)=>p(t,e)):[],v=g===void 0?KU(_.map(e=>e.cellLength),m,h):IU(g.entries,g.groups,i),y=parseInt(mU(u,n.stateVar),10),b=e=>Math.max(0,v.findIndex(t=>t.some(t=>t.indices.includes(e)))),x=b(f===void 0?-1:t.options.indexOf(f)),S=Number.isInteger(y)?y<0?x:Math.min(y,v.length-1):0,C=v[S]??[],w=e=>sr([{verb:Nn,args:[d,n.key,String(e)]}]),ee=r.kind===`led`?[]:[{verb:Nn,args:[d,...r.writes.flatMap(([e,t])=>[e,t])]}],te=r.kind===`own`&&r.onPick?ee:[],ne=e=>sr([...yU(l,e,e,u,d).effects,...te]),T=(e,n)=>_U(e,ne(t.options[n])),re=r.kind===`led`?[]:[gU(`✕`,sr(ee),!1,s)];re.push(...c.map(({glyph:e,option:r})=>gU(e,sr([...yU(l,r,r,u,d).effects,{verb:Nn,args:[d,n.key,String(b(t.options.indexOf(r)))]}]),!1))),S>0&&re.push(gU(`←`,w(S-1),!1));let E=S<v.length-1?[gU(`→`,w(S+1),!1)]:[];if(g===void 0){let e=C.flatMap(e=>e.indices);return[qU([...re,...e.map(e=>T(_[e],e)),...E],i)]}let D=new U({bold:!0}),ie=v.length>1?` ${S+1}/${v.length}`:``,O=C.length===1?[new K(`${C[0].label}${ie}`,{style:D})]:[],ae=[qU([...re,...O,...E],i)];for(let e of C){C.length>1&&ae.push(qU([new K(e.label,{style:D})],i));let n=Math.max(...e.indices.map(e=>HU(t.options[e])));for(let r of e.indices){let e=t.options[r],a=g.entries[r].description,o=a===void 0?void 0:Kp(a),s=` `.repeat(n-HU(e)+2),c=o===void 0?e:`${e}${s}${o}`;ae.push(qU([T(p(r,RU(c,m)),r)],i))}}return ae}function ZU(e,t){return{picker:{fn:(n,r,i,a,o,...s)=>{NT(`picker "${n}"`,[`closeOnPick`,`paged`,`inBody`],s);let c=JU(e,r,`set-int`,`an int action ({ set, int: true })`,`picker`);if(o===!0&&i===!0)throw Error(`{{ picker "${n}" … }} sets both closeOnPick and inBody; a picker in a body is closed by the body's ✕, so it has no close to fold into a pick`);let l=YU(e,n,`picker`);if(l.library!==void 0)throw Error(`{{ picker "${n}" … }} ranges a catalogue domain, which lays out as one row per member; a catalogue renders in a {{ menu }} body`);let u=VU(t,`{{ picker }}`);if(u.bg===void 0)throw Error(`{{ picker }} is not available while segments.${u.segName}'s own "bg:" is being evaluated — a picker is drawn on that background`);let[d]=XU(n,l,{key:c.key,stateVar:c.stateVar},o===!0?{kind:`led`}:{kind:`own`,writes:[[c.key,`-1`]],onPick:i===!0},a===!0,e,MU(u,vm(void 0),cU(e,`{{ picker }}`),l.paletteOf,t.drawnAt(),u.bg),EU(u.palette,u.bg,t.drawnAt()));return d},argTypes:[`string`,`string`,`bool`],arity:{kind:`variadic`},returnType:`T`}}}function QU(e,t){let n=e.length,r=Math.max(e.indexOf(t),0);return e=>((r+e)%n+n)%n}function $U(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+e(-(s+1))+1+e(s+1)+1;if(t>r)break;o=t,s+=1}return s}function eW(e,t,n,r,i,a){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 o=n.store;if(!o.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 s=n.compiled.get(e),c=mU(o,`session.id`),{options:l}=t,u=l.length;if(u===0)return qU([],!0);let d=mU(o,t.stateVar),f=QU(l,d),p=e=>l[f(e)],m=new Map,h=e=>{let t=m.get(e);if(t!==void 0)return t;let n=sr(yU(s,p(e),p(e),o,c).effects);return m.set(e,n),n},g=e=>r({index:f(e),count:u},p(e),p(e),p(e)===d),_=new Map,v=e=>{let t=_.get(e);if(t!==void 0)return t;let n=_U(g(e),h(e));return _.set(e,n),n},y=a===void 0?v(0):_U(PU(cU(n,`{{ carousel }}`),t.paletteOf)({index:f(0),count:u},p(0),p(0),!1),sr(yU(n.compiled.get(a),p(0),void 0,o,c).effects)),b=$U(e=>v(e).cellLength,u,HU(`◀`)+1+y.cellLength+1+HU(`▶`),WU(n),i),x=e=>Array.from({length:b},(t,n)=>v(e*(n+1)));return qU([...x(-1).reverse(),gU(`◀`,h(-1),!1),y,gU(`▶`,h(1),!1),...x(1)],!0)}function tW(e,t){return{carousel:{fn:(n,...r)=>{let[i,a,...o]=r;if(NT(`carousel "${n}"`,[`neighbours`,`centre`],o),i!==void 0&&!(Number.isInteger(i)&&i>=0))throw Error(`carousel "${n}": neighbours must be a whole number ≥ 0 (0 shows only ◀ CURRENT ▶), got ${String(i)}`);if(a!==void 0&&!(typeof a==`string`&&e.compiled.has(a)))throw Error(`carousel "${n}": centre must name a declared action, got ${JSON.stringify(a)}`);if(a!==void 0&&fU(e.compiled.get(a)))throw Error(`carousel "${n}": centre "${a}" writes a value the template binds, and the centre binds none — name an action that writes a fixed value, a cycle, or a do of them`);let s=i??1/0,c=YU(e,n,`carousel`),l=VU(t,`{{ carousel }}`);if(l.bg===void 0)throw Error(`{{ carousel }} is not available while segments.${l.segName}'s own "bg:" is being evaluated — a carousel is drawn on that background`);return eW(n,c,e,MU(l,vm(void 0),cU(e,`{{ carousel }}`),c.paletteOf,t.drawnAt(),l.bg),s,a)},argTypes:[`string`,`value`],arity:{kind:`variadic`},returnType:`T`}}}function nW(e,t,n){let r=YU(e,t,n);if(!(`stateVar`in r))throw Error(`${n} references action "${t}", which inserts a segment and holds no current value — a ${n} needs a { set, from } or { persist, from } action`);if(r.paletteOf===void 0)throw Error(`${n} references action "${t}", whose options are not colour-valued — a swatch draws the palette an option puts in force, as the "themes", "placementThemes" and "styles" domains do`);return r}function rW(e,t,n){let r=Math.imul(e^e>>>16,73244475);return r=Math.imul(r^r>>>16,73244475),r^=r>>>16,(n+1+(r>>>0)%Math.max(t-1,1))%t}function iW(e,t,n,r){let i=nW(e,t,n),a=r??mU(e.store,i.stateVar);if(!i.options.includes(a))throw Error(`${n} "${t}": "${a}" is not one of its options, so it has no palette to draw`);return i.paletteOf(a,cU(e,`{{ ${n} }}`))}function aW(e,t,n){return{swatch:{fn:(t,...n)=>{let[r,...i]=n;if(NT(`swatch "${t}"`,[`option`],i),r!==void 0&&typeof r!=`string`)throw Error(`swatch "${t}": option must be text, got ${JSON.stringify(r)}`);return kU(iW(e,t,`swatch`,r))},argTypes:[`string`,`value`],arity:{kind:`variadic`},returnType:`T`},swatches:{fn:(r,i)=>{let a=nW(e,r,`swatches`),o=JU(e,i,`set-int`,`an int action ({ set, int: true })`,`swatches`),s=VU(t,`{{ swatches }}`);if(s.bg===void 0)throw Error(`{{ swatches }} is not available while segments.${s.segName}'s own "bg:" is being evaluated — a swatch row is drawn on that background`);let c=t.drawnAt(),{options:l}=a,u=l.length,[d]=XU(r,a,{key:o.key,stateVar:o.stateVar},{kind:`led`},!0,e,FU(s,cU(e,`{{ swatches }}`),a.paletteOf,c,s.bg),EU(s.palette,s.bg,c),u===0?[]:(()=>{let t=QU(l,mU(e.store,a.stateVar));return[{glyph:`◀`,option:l[t(-1)]},{glyph:`?`,option:l[rW(n().getTime(),u,t(0))]},{glyph:`▶`,option:l[t(1)]}]})());return d},argTypes:[`string`,`string`],arity:{kind:`exact`},returnType:`T`}}}const oW=[`~/code`,`main`,`opus`,`42%`,`5m`,`$1.20`];function sW(e,t,n,r){let i=Qm(e,n,r),a=(t,n)=>({text:t,colour:n,ink:Bm(e,n,r)});return[[pm(t).map((n,i)=>{let a=jm(e,n);return{text:oW[i%oW.length],colour:a,ink:t.shade.text(e,n.hue,a,r)}})],[[a(`▾ open`,i.state),a(`menu`,i.plane)],[a(`warn`,Am(e,`warning`)),a(`error`,Am(e,`error`))]]]}function cW(e,t){let n=e.flatMap((e,t)=>e.map(({text:e,colour:n,ink:r},i)=>({gap:t>0&&i===0?` `:``,cell:new K(` ${e} `,{style:TU({tint:n,text:r})})}))),r=[],i=0;for(let{gap:e,cell:a}of n){if(i+=e.length+a.cellLength,i>t)break;e!==``&&r.push(new K(e)),r.push(a)}return r}function lW(e,t,n,r,i){let a=sW(e,t,n,r).map(e=>cW(e,i)),o=K.fromFragments(a.flatMap((e,t)=>t===0?e:[new K(`
|
|
193
|
+
`),...e]));return o.overflow=`ignore`,o.end=``,o}function uW(e,t){return{themePreview:{fn:(...n)=>{let[r,...i]=n;if(NT(`themePreview`,[`applyAction`],i),r!==void 0&&typeof r!=`string`)throw Error(`themePreview: applyAction must name a declared action, got ${JSON.stringify(r)}`);let{palette:a,decor:o}=cU(e,`{{ themePreview }}`);return lW(r===void 0?a:iW(e,r,`themePreview`),o,{...VU(t,`{{ themePreview }}`).disclosure,depth:0},t.drawnAt(),WU(e))},argTypes:[`value`],arity:{kind:`variadic`},returnType:`T`}}}const dW=e=>e.slice(e.lastIndexOf(`.`)+1),fW=(e,t)=>{let n=new K(dW(e));return n.truncate(t,{marker:`…`}),n.plain};function pW(e,t){let n=e.map(e=>e.map(({name:e})=>HU(dW(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 mW(e,t,n,r){let i=pW(e,r),a=e.map(e=>{let a=[],o=0;for(let{name:s,address:c,palette:l}of e){let e=new K(` ${fW(s,i)} `,{style:TU(dh(l,{kind:`bar`,decor:t,address:c},n))});if(o+=e.cellLength,o>r)break;a.push(e)}return a}),o=K.fromFragments(a.flatMap((e,t)=>t===0?e:[new K(`
|
|
194
|
+
`),...e]));return o.overflow=`ignore`,o.end=``,o}function hW(e,t){return{layoutPreview:{fn:()=>mW(e.layout(),cU(e,`{{ layoutPreview }}`).decor,t.drawnAt(),WU(e)),argTypes:[],arity:{kind:`exact`},returnType:`T`}}}function gW(e,t,n,r){let i=VU(r.activeSegment,`{{ menu }}`),a=r.action,o=DD(i.placementId,e,n.key),s=AD(o),c=ED(e),l=mU(a.store,o)===c,u=mU(a.store,`session.id`),d=l?pr:c,f=gU(gr(`{{ menu "${e}" }}`,t,2,+!!l),sr([{verb:Nn,args:[u,o,d,s,`0`]}]),!1);return i.drops.push(...l?(()=>{let t=r.activeSegment.drawnAt(),c=Qm(i.palette,i.disclosure,t).plane,l=YU(a,e,`menu`);return XU(e,l,{key:s,stateVar:s},{kind:`own`,writes:[[o,pr],[s,`0`]],onPick:n.closeOnPick},n.paged,a,MU(i,n.distribution,cU(a,`{{ menu }}`),l.paletteOf,t,c),EU(i.palette,c,t))})():[]),f}const _W=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function vW(e,t){let n=t[t.length-1],r=_W(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:PD(r??{})}}function yW(e){return{menu:{fn:(t,...n)=>{let{displays:r,options:i}=vW(t,n);return gW(t,r,i,e)},argTypes:[`string`,`value`],arity:{kind:`variadic`},returnType:`T`}}}function bW(e){let{value:t,max:n,width:r,filled:i,empty:a,colourAt:o}=e,s=xW(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 K(t?i:a,{style:l===void 0?void 0:new U({color:l})}))}let l=K.fromFragments(c);return l.end=``,l.overflow=`ignore`,l}function xW(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 SW(e){let t={fn:(()=>{let t=VU(e,`{{ bgOf }}`);if(t.bg===void 0)throw Error(`{{ bgOf }} is not available while segments.${t.segName}'s own "bg:" is being evaluated — the background is what that template computes. Reach for a palette color there instead, e.g. bg: '{{ darken (color "surface") 1 }}'.`);return t.bg.hex}),argTypes:[],arity:{kind:`exact`},returnType:`string`},n={fn:(()=>VU(e,`{{ tint }}`).tint.hex),argTypes:[],arity:{kind:`exact`},returnType:`string`},r={fn:((t,n)=>{let{palette:r}=VU(e,`{{ keptOn }}`),i=sc(r,t),a=sc(r,n),o=Zo(vc(i,V.TRUECOLOR),vc(a,V.TRUECOLOR)),s=Math.min(zm,Math.max(o,3));return(_c(i,e.drawnAt(),(e,t)=>Zo(e,t(a))>=s)??i).hex}),argTypes:[`string`,`string`],arity:{kind:`exact`},returnType:`string`},i=_T(()=>VU(e,`{{ color }} / {{ ramp }} / {{ gauge }}`).palette),a={fn:((e,t,n,r,a,o,...s)=>{let c=o===void 0?void 0:[o,...CW(s)];return bW({value:e,max:t,width:n,filled:r,empty:a,colourAt:c===void 0?void 0:e=>String(i.ramp.fn(e,...c))})}),argTypes:[`float`,`float`,`int`,`string`,`string`,`string`],arity:{kind:`variadic`},returnType:`T`};return{...i,bgOf:t,tint:n,keptOn:r,gauge:a}}function CW(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 wW(e){let t=[],n=[];for(let r of e){if(!r.contains(`
|
|
195
195
|
`)){n.push(r);continue}let e=r.split(`
|
|
196
|
-
`);n.push(e[0]);for(let r=1;r<e.length;r++)t.push(n),n=[e[r]]}return t.push(n),t}function xW(e){let t=new Map;return e.map(e=>{let n=`${e.place}.${e.band}`,r=t.get(n)??0;return t.set(n,r+1),{line:e,row:`${n}#${r}`}})}function SW(e,t){let n=[],r=[],i;for(let a of t)(a.band===`own`?n:r).push(a),i??=a.cells.find(t=>t.placement.id===e)?.placement.ground;return{drawing:i===void 0?null:{own:r.length===0?n:[],ground:i},deeper:r}}function CW(e){return{...e,cells:e.cells.map(JH)}}function wW(e,t){let n=t.flatMap(e=>e.filter(e=>e.place===`above`)),r=t.map(e=>e.filter(e=>e.place===`flow`));return[...n,...TW(e,r)]}function TW(e,t){switch(e){case`vertical`:return t.flatMap(e=>e);case`horizontal`:return t.reduce((e,t)=>Math.max(e,t.length),0)===0?[]:[{cells:t.flatMap(e=>e[0]?.cells??[]),band:`own`,place:`flow`},...t.flatMap(e=>e.slice(1))]}}function EW(e,t){let n=(e,r)=>t(e)?e.kind===`segment`?[{cells:[{name:e.name,address:r,settings:e.settings}],band:`own`,place:`flow`}]:wW(e.direction,e.children.map((t,i)=>n(t,[...r,DW(e,i)]))):[];return n(e,[]).map(e=>[...e.cells])}function DW(e,t){return{index:t,count:e.children.length,distribution:e.distribution,axis:f_[e.direction]}}const OW={compile(e,t){return{kind:`container`,direction:e.direction,when:t.when,distribution:_m(e.distribution),children:e.children.map((e,n)=>t.compileChild(e,v_(t.path,n)))}},render(e,t){return t.gate.kind===`failed`&&t.gate.report(),wW(e.direction,e.children.map((n,r)=>t.renderChild(n,t.gate.kind===`shown`,DW(e,r))))}},kW={drop:e=>e.place,above:()=>`above`},AW={drop:(e,t)=>({lead:t(),stays:e}),above:e=>({lead:e.slice(0,1).flatMap(e=>e.cells),stays:e.slice(1)})},jW={compile(e,t){return{kind:`segment`,when:t.when,name:e.name,id:p_(e),settings:t.placementSettings(e),...e.opens!==void 0&&{opens:{open:t.parse(yr(e.opens.ref),`opens`),body:t.compileChild(e.opens.body,y_(t.path)),key:e.opens.ref.key,placement:e.opens.placement}},...e.lead!==void 0&&{lead:t.parse(e.lead,`lead`)},...e.trail!==void 0&&{trail:t.parse(e.trail,`trail`)}}},render:(e,t)=>t.placed(e.id,MW(e,t))};function MW(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.gate.kind===`hidden`)return[];let a=BT(t.scope,e.settings);if(t.gate.kind===`failed`)return NW(e,a,t,t.gate.message);try{if(!VH(i.when,a))return[];let n=r_(e.settings.theme,t.palette),o={id:e.id,effect:e.settings.effect,ground:Nk(n)},s=e.opens!==void 0&&VH(e.opens.open,t.scope),{styles:c,fragments:l,lead:u,trail:d,drops:f,open:p}=t.evaluateSegment(e,a,n,t.region,{bg:i.bg,fg:i.fg,body:i.template,lead:e.lead,trail:e.trail},s),m=p?c.trigger:c.closed,h={width:r.width??`auto`,justify:r.justify??`left`,truncate:r.truncate??`right`,baseStyle:m,padding:t.padding,placement:o},g=e.opens,_=g===void 0?[]:t.renderBody(g.body,s,c.disclosure).map(e=>({...e,place:kW[g.placement](e)})),v=bW(tU(l,m)).map((e,t)=>({cells:ZH(e,{...h,lead:t===0?tU(u,m):[],trail:t===0?tU(d,m):[]}),band:`own`,place:`flow`})),y=f.map(e=>({cells:ZH(tU([e],c.band),{...h,baseStyle:c.band}),band:`deeper`,place:`flow`})),b=(e,t,n)=>ZH(tU([e],t),{...h,width:`auto`,baseStyle:t,padding:n}),x=_.findIndex(e=>e.band===`own`),{lead:S,stays:C}=g!==void 0&&x!==-1?AW[g.placement](v,()=>b(t.closeDisclosure(g.key),c.close,t.padding)):{lead:[],stays:v},w=S.flatMap(e=>b(new K(` `.repeat(qH(e).reduce((e,t)=>e+t.cellLength,0))),c.trigger,0)),ee=(e,t)=>e.band===`own`?t===x?S:w:[],te=_.map((e,t)=>({cells:[...ee(e,t),...e.cells],band:`deeper`,place:e.place})),ne=[...C,...y];return t.perSegmentSink!==void 0&&t.perSegmentSink.set(e.id,[...ne.flatMap(e=>e.cells),..._.flatMap(ee)].flatMap(qH)),[...ne,...te]}catch(n){return NW(e,a,t,n.message??String(n))}}function NW(e,t,n,r){n.onSegmentError?.(e.id,r);let i=r.replace(/\s*\n\s*/g,` `);return[{cells:ZH([new K(`⚠ ${e.id}: ${i}`,{end:``})],{width:`auto`,justify:`left`,truncate:`right`,padding:0,placement:{id:e.id,effect:`bar`,ground:Nk(n.palette)},lead:PW(e.lead,e,t,n),trail:PW(e.trail,e,t,n)}),band:`own`,place:`flow`}]}function PW(e,t,n,r){if(e===void 0)return[];try{return r.evaluateSegment(t,n,r.palette,r.region,{bg:void 0,fg:void 0,body:e,lead:void 0,trail:void 0},!1).fragments}catch(e){return r.onSegmentError?.(t.id,e.message??String(e)),[]}}const FW={container:OW,segment:jW};function IW(e){return FW[e]}function LW(e){if(`ttl`in e)return{kind:`ttl`,durationMs:BE(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 RW(e,t){switch(C_(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 zW(e,t,n,r){switch(n.kind){case`literal`:e.declareLiteral(t,n.value);break;case`dropped`:e.declareFailedDocument(t,n.reason);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:LW(n.cache),parse:RW(n.parse,n.default)});break;case`shell`:e.declareShell(t,n.command,{cwd:r,cache:LW(n.cache),parse:RW(n.parse,n.default)});break;case`template`:e.declareTemplate(t,n.template,{varDefault:n.default});break;case`time`:e.declareTime(t,{format:n.layout,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 BW(e,t){let n=Cy.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 VW=(e,t,n,r,i)=>{let a=wz(t,Cz(n,e.themeDefaults));return{variation:dm[r??Gh(void 0,null,a.variation)],shade:lm[i??Jh(void 0,null,a.shade)]}};function HW(e,t,n){let r=n.cwd,i={store:t.variableStore,compiled:new Map,chromeCols:Cg({endcaps:`powerline`}),width:80,padding:1,seamCols:wg({endcaps:`powerline`}),layout:()=>[],look:void 0},a=FU(t.drawnAt),o={action:i,activeSegment:a},s=Object.keys(e.styles),c=nv(e.presets),l=VN(e),u=LT({extraFuncs:{...vU(i),...qU(i,a),...ZU(i,a),...oW(i,a),...tW(i,a,t.now),...dW(i,a),...hW(o),...vW(a),styles:{fn:()=>s,argTypes:[],arity:{kind:`exact`}},presets:{fn:()=>c,argTypes:[],arity:{kind:`exact`}}},clock:t.now,drawnAt:t.drawnAt}),d=BW(u,e.helpers),f=e=>u.parse(e,d),p=new Map,m=e=>{let t=p.get(e);if(t!==void 0)return t;let n=f(e);return p.set(e,n),n},h=new Map;for(let[t,n]of lo)n in e.variables&&h.set(t,n);for(let[t,n]of k_(e))h.has(n.key)||h.set(n.key,t);i.compiled=aU(f,e.actions,h,l);let g=[];for(let[n,i]of Object.entries(e.variables))try{zW(t,n,i,r)}catch(e){g.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{zW(t,`${n}.${e}`,a,r)}catch(t){g.push(`Variable "${n}.${e}": ${t.message??String(t)}`)}let _=Object.create(null);for(let[t,n]of Object.entries(e.segments)){let e=(e,n,r=f)=>{try{return r(e)}catch(e){throw Error(`Template parse error in segments.${t}.${n}: ${e.message}`,{cause:e})}};_[t]={when:n.when===void 0?void 0:e(n.when,`when`,m),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 v=(e,t,n)=>{try{return m(e)}catch(e){throw Error(`Template parse error in ${t}.${n}: ${e.message}`,{cause:e})}},y=t.variableStore,b=t=>{let n=N_(e.segments[t.name]),r=Object.create(null);for(let[e,i]of Object.entries(n))Object.defineProperty(r,e,{enumerable:!0,get:()=>z_(t,e,i,e=>String(y.read(e.variable)))});return Object.freeze(r)},x=(e,t)=>{let n={path:t,when:e.when===void 0?void 0:v(e.when,t,`when`),parse:(e,n)=>v(e,t,n),compileChild:x,placementSettings:b};return IW(e.kind).compile(e,n)},S=new Map;for(let t of c){let{node:n,path:r}=av(e,t);S.set(t,x(n,r))}let C=new Map(bh.map(e=>[e,new Map])),w=[[`globals`,e.globals],...Object.entries(e.presets).map(([e,t])=>[`presets.${e}.globals`,t.globals??{}])];for(let[e,t]of w)for(let n of bh){let r=t[n];if(!xh(r))continue;let i=`${e}.${n}`,a=C.get(n),o=a.get(r);a.set(r,o===void 0?{where:i,template:UW(f,i,r)}:{where:`${o.where}, ${i}`,template:o.template})}return{segments:_,roots:S,activeSegment:a,menuRuntime:o,globalExpressions:C,loadWarnings:g}}function UW(e,t,n){try{return e(n)}catch(e){throw Error(`${t} is not a valid template: ${e instanceof Error?e.message:String(e)}`)}}function WW(e,t,n){let r=e.globalExpressions.get(t).get(n);if(r===void 0)throw Error(`the ${t} rule ${JSON.stringify(n)} reached the render but no compiled template exists — registerDslConfig and the resolution disagree about isExpression`);return r}function GW(e,t,n,r){try{return t.template.evaluate(n).map(e=>e.plain).join(``)}catch(n){return r({kind:`rule`,slot:e,message:Ah(t.where,e,`the rule failed — ${n instanceof Error?n.message:String(n)}`)}),kh[e]}}function KW(e,t){return e.kind===`decided`?e.name:kh[t]}function qW(e){return JW(e).filter(e=>!e.name.startsWith(bD)).map(e=>e.id)}function JW(e){return e.kind===`container`?e.children.flatMap(JW):[e,...e.opens===void 0?[]:JW(e.opens.body)]}function YW(...e){return XW(...e).text}function XW(e,t,n,r,i,a,o,s,c){let{perSegmentSink:l,onSegmentError:u,onRenderWarning:d}=s??{},f=e=>d?.(e),p=new Set;r.renderAt(a),r.drawAt(Hh(o.colorCompatibility));let{preset:m=ev}=c??{},h=ov(e,m),g=c?.style??Eh(`none`,e.styles),_=c?.theme??l_(void 0,null,h.palette),v=VW(e,h,_,c?.variation,c?.shade),y=c?.effect??Fh(void 0,null,h.effect),b=(e,t,n)=>({...i,term:{cols:o.width},theme:{effective:e},style:{effective:t},effect:{effective:n}});r.applyInput(b(KW(_,`palette`),KW(g,`style`),KW(y,`effect`))),t.menuRuntime.action.chromeCols=Cg(o),t.menuRuntime.action.padding=o.padding,t.menuRuntime.action.width=o.width,t.menuRuntime.action.seamCols=wg(o);let x=RT(n),S=Ch(_,e=>{let n=WW(t,`palette`,e);return c_(GW(`palette`,n,x,f),n.where,e=>f({kind:`rule`,slot:`palette`,message:e}))}),C=Ch(g,n=>Eh(GW(`style`,WW(t,`style`,n),x,f),e.styles)),w=Ch(y,e=>Ph(GW(`effect`,WW(t,`effect`,e),x,f)));(S!==_||C!==g||w!==y)&&r.applyInput(b(S.name,C.name,w.name));let ee=S.value,te=a_(ee,C.value);t.menuRuntime.action.look={basePalette:ee,palette:te,decor:v};let ne=c?.transitions??ig(void 0,null,h.transitions),T=(c?.effects??new hg(``)).motion(w.value,a,{transitions:ne,source:{config:t,preset:m,revision:r.stateRevision(),width:o.width},returned:SW,hold:CW});l?.clear();let re=n=>{let r=e.segments[n],i=t.segments[n];return r!==void 0&&i!==void 0?{seg:r,compiled:i}:void 0},E=(e,n,i,a,o,s)=>{try{let c=r.drawnAt(),{tint:l,text:u,disclosure:d}=uh(i,a,c),f=IU(t.activeSegment,e.name,e.id,i,d,l,u),m=Fk(f,c,o.bg,o.fg,n),h=()=>Zm(i,d,c);s&&(f.bg=h().state);let g=o.body.evaluate(n),_=f.drops.length>0||s;if(_){let e=h();f.bg=e.state;for(let t of e.shortfalls)p.add(t)}let v=o.lead?.evaluate(n)??[],y=o.trail?.evaluate(n)??[];return{styles:{closed:m,get trigger(){return bU(i,h().state,c)},get band(){return bU(i,h().plane,c)},get close(){return CU(i,h().state,c)},disclosure:d},fragments:g,lead:v,trail:y,drops:f.drops,open:_}}finally{t.activeSegment.current=null}},D=(e,t,r)=>{let i=t?WH(e.when,x):HH,a=i.kind===`failed`?{...i,report:()=>{let t=`when over ${qW(e).join(`, `)||`no placement`}`;f({kind:`when`,where:t,error:i.message,message:`${t}: ${i.message} — what it gates is hidden`})}}:i,s={scope:x,palette:te,gate:a,padding:o.padding,region:r,perSegmentSink:l,onSegmentError:u,evaluateSegment:E,lookupSegment:re,renderChild:(e,t,n)=>D(e,t,ch(r,n)),renderBody:(e,t,n)=>D(e,a.kind===`shown`&&t,lh(n)),closeDisclosure:e=>yU(n,e),placed:T.placed};return IW(e.kind).render(e,s)},ie=t.roots.get(m);if(ie===void 0)throw Error(`Preset "${m}" has no compiled layout — registerDslConfig compiles one per declared preset and effectivePresetName collapses unknown names to "${ev}"; a miss here is merge/policy drift (have: ${[...t.roots.keys()].join(`, `)})`);let O=e=>{let n=WH(e.when,x);if(e.kind===`container`)return n.kind===`shown`;if(QN(e.name)===void 0)return!1;if(n.kind!==`shown`)return n.kind===`failed`;try{return VH(t.segments[e.name].when,BT(x,e.settings))}catch{return!0}};t.menuRuntime.action.layout=()=>EW(ie,O).map(e=>e.flatMap(({name:e,address:t,settings:n})=>{let r=QN(e);return r===void 0?[]:[{name:r,address:t,palette:r_(n.theme,te)}]}));let ae=xW(D(ie,!0,sh(v))).map(({line:e,row:t})=>{let n=eU(e.cells,o);return Og(n.map(e=>e.owner),o,T.row(t,n))});T.drawn();let oe=ae.some(e=>e.moves)?`moves`:y.kind===`expression`||ne||JW(ie).some(({settings:e})=>e.effect!==`bar`&&e.effect!==`none`)?`can-move`:`still`;for(let e of p)f({kind:`band-floor`,message:e});for(let[e,t]of r.cachePolicyFaults())f({kind:`refresh`,variable:e,error:t.message,message:`variable "${e}" cannot refresh: ${t.message}`});return{text:ae.map(e=>e.text).join(`
|
|
197
|
-
`),motion:oe}}function*
|
|
198
|
-
`)||null}function hG(e,t,n,r,i=()=>{}){let{layers:a,config:o,installed:s}=XR(t.layers,yz,{entered:i,warned:e=>n.push(...e)},{projectDir:t.projectDir,cwd:e});i(a.length===1?a[0].path:null);let c=a.at(-1)?.config??yz,l=a.find(e=>e.path===t.home)?.raw??{},u=new cG,d=new sD(u,o.globals.default_empty_value??``,r.gitService,r.sessionState),f;try{f=HW(o,d,{cwd:e}),n.push(...f.loadWarnings),nV(o),xP(o)}catch(e){throw d.dispose(),e}return{config:o,store:u,registry:d,compiled:f,neededInputPaths:cB(o),lastRenderCellsBySegment:new Map,authoredRoots:fG(c,l),fileHeldSettings:HB(l),unused:[...new Map(a.flatMap(e=>eG(e.raw,c)).map(e=>[`${e.kind}:${e.name}`,e])).values()],plugins:{checkout:s.checkout,roots:s.roots,loaded:[...s.rendering.values()],dropped:[...s.dropped,...a.flatMap(e=>e.plugins.dropped)],unreached:s.unreached,reached:s.reached,rendering:s.rendering}}}function gG(e,t,n,r){let i=LR(e,t,n),a={layers:i.kind===`chain`?i.layers:[],home:i.home,projectDir:e},o=[HR(e,t),BR(i)],s,c=null;try{s=hG(t,a,o,r,e=>{c=e})}catch(e){return e instanceof pD&&o.push(...e.warnings),{layers:a.layers,home:a.home,failedFile:c,warning:mG(o),state:null,error:e instanceof pD||e instanceof Error?e.message:String(e)}}return{layers:a.layers,home:a.home,warning:mG(o),state:s,error:null}}function _G(e,t,n){return hG(e,{layers:[],home:``,projectDir:t},[],n)}var vG=class{entries=new Map;holds=new Map;deps;log;maxEntries;observers;constructor(e,t={}){this.deps=e,this.log=e.log??qt,this.maxEntries=t.maxEntries??256,this.observers=t.observers??{}}getOrCreate(e,t,n){let r=dG(e,t,n),i=this.entries.get(r);if(i)return this.entries.delete(r),this.entries.set(r,i),i;let a=gG(e,t,n,this.deps);a.state!==null&&this.log(`info`,lG(a.layers,a.state));let o={projectDir:e,cwd:t,configFile:n,configLayers:[],configHome:``,failedFile:null,lastError:a.error,lastWarning:a.warning,state:a.state??_G(t,e,this.deps),watcher:null,watcherKey:null};if(this.serve(o.state),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.watcher?.release(),this.entries.delete(t),this.retire(n.state,`evict`)}}return this.refreshWatcher(o,a),this.observers.onReload?.(o),o}hold(e,t,n){let r=this.getOrCreate(e,t,n),{state:i}=r,a=this.holdOf(i);a.holders++;let o=!1;return{entry:r,state:i,[Symbol.dispose]:()=>{if(o)throw Error(`render-cache hold released twice`);o=!0,a.holders--,this.reclaim(i,a)}}}get stats(){let e=0,t=0;for(let n of this.holds.values())n.holders>0&&e++,n.retired!==null&&t++;return{size:this.entries.size,held:e,retired:t}}serve(e){this.holds.set(e,{holders:0,retired:null})}holdOf(e){let t=this.holds.get(e);if(t===void 0)throw Error(`render-cache state never served`);return t}retire(e,t){let n=this.holdOf(e);n.retired={reason:t,held:n.holders},this.reclaim(e,n)}reclaim(e,t){t.retired===null||t.holders>0||(this.holds.delete(e),this.log(`info`,uG(t.retired,e.registry.dispose())))}reload(e,t,n){this.reloadInto(this.getOrCreate(e,t,n))}reloadInto(e){let t=gG(e.projectDir,e.cwd,e.configFile,this.deps);if(e.lastWarning=t.warning,e.lastError=t.error,t.state!==null){this.log(`info`,lG(t.layers,t.state));let n=e.state;e.state=t.state,this.serve(t.state),this.retire(n,`reload`)}this.refreshWatcher(e,t),this.observers.onReload?.(e)}refreshWatcher(e,t){e.configLayers=t.layers,e.configHome=t.home,e.failedFile=t.error===null?null:t.failedFile;let n=pG(e,t.layers),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){this.log(`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 yG=16384;var bG=class e{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<yG){this.rollingTimestamps.push(e);return}this.rollingTimestamps[this.rollingHead]=e,this.rollingHead=(this.rollingHead+1)%yG}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}}static referenceSnapshot(){return new e().snapshot({gitCache:{size:0,hits:0,misses:0,invalidations:0,watchers:0},usageCache:{size:0,hits:0,misses:0,sweeps:0},renderCache:{size:0,held:0,retired:0},effectCache:{sessions:0,effects:0},sessionState:{sessions:0,observers:0,revision:0},frameFeeds:{feeds:0,subscribers:0,drawn:0,pushed:0,refused:0,lookups:0,found:0},watchersActive:0,handlerProbes:[],clients:[],bundle:`/`,daemon:{pid:0,rss:0,rssLimit:0,postMortems:{kind:`ok`,value:[]}}})}snapshot(e){let t=process.memoryUsage();return{pid:process.pid,version:Lt,sourceDigest:Qg(),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:e.renderCache,effectCache:e.effectCache,sessionState:e.sessionState,frameFeeds:e.frameFeeds,watchers:{active:e.watchersActive,opened:this.watchersOpened,closed:this.watchersClosed,evicted:this.watchersEvicted},subprocesses:this.snapshotSubprocesses(),nextRestartReason:e.nextRestartReason??null,handlerProbes:e.handlerProbes,clients:e.clients,bundle:e.bundle,daemon:e.daemon}}};function xG(e,t,n){let r=(r,i,a)=>{let o=i.filter(t).map(t=>({key:t,before:e.get(r,t)}));a();for(let{key:t,before:i}of o)n(r,t,i,e.get(r,t))};return{get:(t,n)=>e.get(t,n),revision:t=>e.revision(t),set:(t,n,i)=>r(t,[n],()=>e.set(t,n,i)),setBatch:(t,n)=>r(t,n.map(e=>e.key),()=>e.setBatch(t,n)),clear:(t,n)=>r(t,[n],()=>e.clear(t,n))}}const SG={load:()=>({}),save:()=>{},flush:()=>{}};var CG=class{sessions;storage;head=0;atom=(0,Vv.createAtom)(`SessionState`);constructor(e=SG,t=256){this.maxSessions=t,this.storage=e,this.sessions=new Map,this.hydrateFromStorage()}useStorage(e){this.storage=e,this.hydrateFromStorage()}hydrateFromStorage(){this.sessions=new Map(Object.entries(this.storage.load()).map(([e,t])=>[e,{values:new Map(Object.entries(t)),revision:++this.head}])),this.evictOldest(),this.persist()}get(e,t){this.atom.reportObserved();let n=this.sessions.get(e);return n?(this.touch(e,n),n.values.get(t)??null):null}revision(e){return this.atom.reportObserved(),this.sessions.get(e)?.revision??0}observers(){return this.atom.observers_?.size??0}latestRevision(){return this.head}size(){return this.sessions.size}set(e,t,n){this.setBatch(e,[{key:t,value:n}])}setBatch(e,t){t.length!==0&&(0,Vv.runInAction)(()=>{let n=this.sessions.get(e)??{values:new Map,revision:0};t.some(({key:e,value:t})=>n.values.get(e)!==t)&&(n.revision=++this.head);for(let{key:e,value:r}of t)n.values.set(e,r);this.touch(e,n),this.evictOldest(),this.persist(),this.atom.reportChanged()})}clear(e,t){(0,Vv.runInAction)(()=>{let n=this.sessions.get(e);n&&(n.values.delete(t)&&(n.revision=++this.head),n.values.size===0?this.sessions.delete(e):this.touch(e,n)),this.persist(),this.atom.reportChanged()})}prune(e){(0,Vv.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,{values:n}]of this.sessions)e[t]=Object.fromEntries(n);return e}};function wG(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 TG=class{timer=null;pending=null;constructor(e,t=500,n=qt){this.filePath=e,this.debounceMs=t,this.logger=n}load(){let e;try{e=s.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 wG(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{s.mkdirSync(v.dirname(this.filePath),{recursive:!0});let t=`${this.filePath}.tmp`;s.writeFileSync(t,JSON.stringify(e),{mode:384}),s.chmodSync(t,384),s.renameSync(t,this.filePath),this.pending=null}catch(e){this.logger(`warn`,`session-state save failed: ${e.message}`)}}};const EG={default_empty_value:`string`,default_separator:`string`,palette:`string`,style:`string`,effect:`string`,preset:`string`,endcaps:`string`,variation:`string`,shade:`string`,autoWrap:`boolean`,padding:`number`,updateNotice:`boolean`,transitions:`boolean`,experimentalBand:`boolean`,experimentalStatusline:`boolean`,experimentalPane:`boolean`,colorCompatibility:`string`,menuGlyph:`string`},DG=new Set([`1`,`true`]),OG=new Set([`0`,`false`,``]);function kG(e,t){let n=eK(e),r=n.scope===`segment-palette`?`string`:EG[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(DG.has(t))return`true`;if(OG.has(t))return`false`;throw Error(`persistValueText: "${e}" expects boolean-ish (1, 0, true, false), got "${t}"`)}function AG(e){try{return s.readFileSync(e,`utf8`)}catch(e){if(e.code===`ENOENT`)return null;throw e}}function jG(e,t,n){try{if(t===null){s.rmSync(He(e),{force:!0});return}Ve(e,t)}catch(t){let r=`config write failed (${e}): ${t.message}`;throw n(`error`,r),Error(r)}}function MG(e){return/^\s*$/.test(e)?null:Br(e)}function NG(e,t){return e!==null&&Hr(e,t)!==void 0}function PG(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(PG),...i}}return e}function FG(e){if(!K_(e))return PG(e);let{rows:t,...n}=e;return{rows:Object.fromEntries(Object.entries(t).map(([e,t])=>[e,PG(t)])),...n}}const IG=_z,LG=IG.segments,RG=IG.presets,zG=IG.root;function BG(e,t,n,r){if(!NG(e,t)&&n===void 0)throw new q(`cannot edit ${r}: neither the config file nor the bundled default declares ${t.join(`.`)}`)}function VG(e,t){let n=uk(t);return t.scope===`segment-palette`&&BG(e,[`segments`,t.segment],LG[t.segment],n.join(`.`)),n}function HG(e){return Br(Xr(e))}function UG(){return Object.entries(zG.rows).map(([e,t])=>{let n=PG(t);return{path:[`root`],fragment:HG({rows:{[e]:n}}),unit:{path:[`root`,`rows`,e],value:n}}})}function WG(e,t){let n=e===null?void 0:Hr(e,t);return n===void 0?null:{path:t,fragment:n,unit:null}}function GG(e,t){if(t===void 0)return null;let n=FG(t);return{path:e,fragment:HG(n),unit:{path:e,value:n}}}function KG(e,t){let n=[`presets`,t],r=[...n,`root`],i=RG[t];BG(e,n,i,r.join(`.`));let a=WG(e,r)??GG(r,i?.root);return a!==null&&gi(a.fragment)?a:null}function qG(e,t){let n=hi(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 JG(e,t){return[...UG(),WG(e,[`root`]),KG(e,t)].filter(e=>e!==null).reduce(qG,new Map)}function YG(e,t,n){for(let{node:r,...i}of JG(e,t).values())if(vi(r,n))return i;throw new q(`${XG(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 XG(e,t){return KG(e,t)?.path??[`root`]}function ZG(e,t){return t.scope===`preset-root`?XG(e,t.preset):uk(t)}function QG(e,{unit:t}){return t===null?e:li(e,t.path,Xr(t.value),Jr)}function $G(e){let t=lk(e);if(t===null)throw Error(`"${e}" is not a valid persist target`);return t}function eK(e){let t=$G(e);if(t.scope===`preset-root`)throw Error(`"${e}" names a layout, not a value`);return t}function tK(e,t,n,r,i){i(t,n,fK(t,r)),jG(t.path,r,e.logger),e.record(t.path,n,r)}function nK(e,t,n){let r=aK(e,t,n);if(r.length>0)throw new q(`refused: ${e.above.join(`, `)} sets ${r.join(`, `)} over ${e.path}, so this click would change nothing on the bar — edit it there`)}const rK=()=>{};function iK(e,t){try{return t()}catch(t){throw!(t instanceof q)||e.above.length===0?t:new q(`${t.message} — or it is declared by ${e.above.join(`, `)}, which the bar does not edit`)}}function aK(e,t,n){let r=oK(e,t);if(r===null)return[];let i=new Set(uK(lK(r),lK(n)));return uK(cK(e,r),cK(e,n)).filter(e=>!i.has(e))}function oK(e,t){try{return sK(e,t)}catch(e){if(e instanceof pD)return null;throw e}}function sK(e,t){return XR(t===null?e.above:[e.path,...e.above],yz,{entered:()=>{},warned:()=>{}},{projectDir:e.projectDir,cwd:e.cwd},n=>n===e.path&&t!==null?t:s.readFileSync(n,`utf8`))}function cK(e,t){let[n]=t.layers;return n?.path===e.path?n.config:t.base}function lK(e){return e.layers.at(-1)?.config??e.base}function uK(e,t,n=``){return!dK(e)||!dK(t)?JSON.stringify(e)===JSON.stringify(t)?[]:[n]:[...new Set([...Object.keys(e),...Object.keys(t)])].flatMap(r=>uK(e[r],t[r],n===``?r:`${n}.${r}`))}function dK(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function fK(e,t){try{return sK(e,t)}catch(e){throw e instanceof pD?new q(`refused: the config file would not load after this click — ${e.message}`):e}}function pK(e,t){let n=eK(t),r=MG(AG(e)??``),i=r===null?void 0:Hr(r,uk(n));return i!==void 0&&`value`in i?i.value:void 0}function mK(e,t,n){hK(e,t,n,[])}function hK(e,t,n,r){let i=AG(t.path),a=n.reduce((e,[t,n])=>li(e,VG(MG(e),eK(t)),kG(t,n),Jr),i??``);tK(e,t,i,iK(t,()=>gK(a,t.path,r,e=>e)),nK)}function gK(e,t,n,r){return n.reduce((e,{preset:n,id:i,setting:a,value:o})=>{let s=r(e,n,i),c=YG(MG(s),n,i),l=Si(QG(s,c),c.path,i,a,Xr(o));if(l===null)throw new q(`${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 _K(e,t,n){let r=MG(e),i=[`presets`,t,`root`];for(let[a,{path:o,unit:s,node:c}]of JG(r,t)){if(!vi(c,n))continue;if(i.every((e,t)=>o[t]===e))return e;let l=s===null?Wr(e,c):Xr(s.value);if(a!==`#`)return li(e,[...i,`rows`,a],l,Jr);if(KG(r,t)!==null)throw new q(`cannot give preset "${t}" its own copy of ${o.join(`.`)}: it already stages rows of its own over that tree`);return li(e,i,l,Jr)}return e}function vK(e,t){return di(e,t,t[0]===`presets`&&t.length>2&&!xz(t[1])?2:0)}function yK(e,t,n){let r=n.map($G),i=AG(t.path);if(i===null)return;let a=r.reduce((e,t)=>vK(e,ZG(MG(e),t)),i);a!==i&&tK(e,t,i,a,rK)}function bK(e){let t=e===null?void 0:Hr(e,[`presets`]);return t?.kind===`object`?t.entries.map(e=>e.key):[]}function xK(e,t){let n=new Set([...bz,...bK(e),...t.above.flatMap(e=>Object.keys(Nr.default.parse(s.readFileSync(e,`utf8`)).presets??{}))].map(fD));return Array.from({length:n.size+1},(e,t)=>`custom-${t+1}`).find(e=>!n.has(fD(e)))}function SK(e,t,n,r,i,a){let o=AG(t.path),s=MG(o??``),c=xK(s,t),l=[`presets`,c],u=iK(t,()=>KG(s,n)),d=[...u===null?[]:[[[...l,`root`],u.unit===null?Wr(o??``,u.fragment):Xr(u.unit.value)]],...Object.keys(r).length===0?[]:[[[...l,`globals`],Xr(r)]]],f=i.map(([e,t])=>{let n=ck(c,e);return[VG(s,eK(n)),kG(n,t)]}),p=[...d,...f].reduce((e,[t,n])=>li(e,t,n,Jr),li(o??``,l,`{}`,Jr));return tK(e,t,o,iK(t,()=>gK(p,t.path,a.map(e=>({...e,preset:c})),_K)),nK),c}function CK(e,t,n,r){let i=AG(t.path);tK(e,t,i,li(i??``,[`themeDefaults`,n],Xr(r),Jr),nK)}function wK(e,t,n){if(xz(n))throw new q(`cannot delete preset "${n}": it is bundled — reset its settings instead`);let r=[`presets`,n],i=AG(t.path),a=MG(i??``);if(i===null||a===null||Hr(a,r)===void 0)throw new q(`cannot delete preset "${n}": ${t.path} declares no ${r.join(`.`)} — the bar you clicked is stale; it reloads on the next render`);let o=Hr(a,[`globals`,`preset`]);tK(e,t,i,[r,...o?.kind===`string`&&o.value===n?[[`globals`,`preset`]]:[]].reduce((e,t)=>vK(e,t),i),rK)}function TK(e,t,n,r){let i=$G(n);if(i.scope!==`preset-root`)throw Error(`"${n}" is not a "presets.<name>.root" target`);let a=AG(t.path),o=r.op===`remove`?r.target:r.anchor,s=iK(t,()=>YG(MG(a??``),i.preset,o)),c=QG(a??``,s),{after:l,placed:u}=EK(c,s.path,r,()=>{let e=fK(t,c).config;return nv(e.presets).map(t=>av(e,t).node)});if(l===null)throw new q(`${s.path.join(`.`)} in ${t.path} 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 tK(e,t,a,l,nK),u}function EK(e,t,n,r){switch(n.op){case`remove`:return{after:bi(e,t,n.target),placed:null};case`insert`:{let i=cP(n.segment,n.anchor,r());return{after:xi(e,t,i,n.anchor,n.relation),placed:i}}}}const DK={load:()=>({}),save:()=>{}},OK=new Set(ao.map(e=>e.sessionKey)),kK=e=>OK.has(e)||e.startsWith(xk),AK=8*1024*1024,jK={past:[],future:[]},MK=e=>e.kind===`session`?`session:${e.key}`:`file:${e.file}`;var NK=class{state=new Map;constructor(e,t,n=DK){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,savepoint:r}=this.state.get(e)??jK;return{undo:t.length,redo:n.length,sinceEdit:r?.net.length??0}}history(e){return this.state.get(e)??jK}begin(){let e=new Map,t=(t,n)=>{let r=e.get(t)??new Map,i=r.get(MK(n));r.set(MK(n),i===void 0?n:{...n,before:i.before}),e.set(t,r)},n=new Map;return{sessionState:xG(this.sessionState,e=>kK(e)||e===`edit.mode`,(e,r,i,a)=>{if(r===`edit.mode`){let t=n.get(e);n.set(e,{before:t===void 0?i:t.before,after:a});return}t(e,{kind:`session`,key:r,before:i,after:a})}),file:(e,n,r,i)=>t(e,{kind:`file`,file:n,before:r,after:i}),commit:()=>{let t=new Map(e),r=new Map(n);e.clear(),n.clear();for(let e of new Set([...t.keys(),...r.keys()])){let n=[...t.get(e)?.values()??[]].filter(e=>e.before!==e.after),i=this.history(e),a=n.length===0?i:VK(i,n),o=r.get(e),s=o===void 0?a:GK(a,o);s!==i&&this.put(e,s)}}}}undo(e){let t=this.history(e),n=t.past.at(-1);if(n===void 0)throw new q(`undo: nothing to undo`);return this.apply(e,n,`before`,`undo`,UK(t,n)),n}rewind(e){let t=this.history(e),{savepoint:n}=t;if(n===void 0)throw new q(`rewind: edit mode has no savepoint — nothing to cancel`);let r=n.net.filter(t=>this.read(e,t)!==t.after),i=new Set(r.map(MK)),a=n.net.filter(e=>!i.has(MK(e))),o=IK(KK(WK(t,n),i));if(this.apply(e,a,`before`,`rewind`,{past:o,future:[],savepoint:{at:o.length,net:[],below:[]}}),r.length>0)throw new q(`rewind: ${r.map(JK).join(`, `)} changed since edit mode opened — kept as it is; everything else edit mode changed was put back`);return a}redo(e){let t=this.history(e),{past:n,future:r}=t,i=r.at(-1);if(i===void 0)throw new q(`redo: nothing to redo`);let a=[...n,i],o=IK(a);return this.apply(e,i,`after`,`redo`,{past:o,future:r.slice(0,-1),...RK(t.savepoint,a.length-o.length,i)}),i}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(MK)),{past:n,future:i,savepoint:a}=this.history(e);throw this.put(e,{past:KK(n,t),future:KK(i,t),...a!==void 0&&{savepoint:{at:KK([...n,...[...i].reverse()].slice(0,a.at),t).length,net:a.net.filter(e=>!t.has(MK(e))),below:KK(a.below,t)}}}),new q(`${r}: ${o.map(JK).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):AG(t.file)}write(e,t,n){t.kind===`file`?jG(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||t.savepoint!==void 0)&&n.set(e,t);n.size>32||PK(n)>AK;){let[e,t]=n.entries().next().value;n.size>1?n.delete(e):t.past.length+t.future.length>0?n.set(e,FK(t)):(this.logger(`warn`,`settings-history: edit mode's changes for session ${e} exceed ${AK} bytes; cancel is no longer available`),n.delete(e))}this.storage.save(Object.fromEntries(n)),this.state=n}};function PK(e){let t=0;for(let{past:n,future:r,savepoint:i}of e.values())for(let e of[...n,...r,...i===void 0?[]:[i.net,...i.below]])for(let n of e)t+=(n.before?.length??0)+(n.after?.length??0);return t}function FK({past:e,future:t,savepoint:n}){return e.length>0?{past:e.slice(1),future:t,...RK(n,1,[])}:{past:e,future:t.slice(1),...RK(n,0,[])}}function IK(e){return e.slice(-50)}const LK=e=>e===Ck.member;function RK(e,t,n){return e===void 0?{}:{savepoint:{at:Math.max(0,e.at-t),net:zK(e.net,n),below:e.below}}}function zK(e,t){let n=new Map(e.map(e=>[MK(e),e]));for(let e of t){let t=n.get(MK(e));n.set(MK(e),t===void 0?e:{...t,after:e.after})}return[...n.values()].filter(e=>e.before!==e.after)}const BK=e=>e.map(e=>({...e,before:e.after,after:e.before}));function VK(e,t){let n=[...e.past,t],r=IK(n),{savepoint:i}=e,a=i===void 0?0:Math.max(0,i.at-e.past.length);return{past:r,future:[],...RK(i&&{at:Math.min(i.at,e.past.length),net:i.net,below:[...HK(e.future,a),...i.below]},n.length-r.length,t)}}function HK(e,t){let n=Math.min(t,e.length);return e.slice(e.length-n).reverse()}function UK(e,t){return{past:e.past.slice(0,-1),future:IK([...e.future,t]),...RK(e.savepoint,0,BK(t))}}function WK(e,t){let{past:n,future:r}=e,i=n.slice(0,t.at);return[...i,...HK(r,t.at-i.length),...t.below]}function GK(e,t){if(LK(t.after)&&!LK(t.before))return{...e,savepoint:{at:e.past.length,net:[],below:[]}};if(!LK(t.after)&&LK(t.before)){let{past:t,future:n}=e;return{past:t,future:n}}return e}function KK(e,t){return e.map(e=>e.filter(e=>!t.has(MK(e)))).filter(e=>e.length>0)}function qK(e){return e.map(JK).join(`, `)}function JK(e){return e.kind===`session`?`session setting "${e.key}"`:e.file}function YK(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 XK(e){return Array.isArray(e)&&e.every(e=>Array.isArray(e)&&e.every(YK))}function ZK(e){if(typeof e!=`object`||!e)return!1;let t=e;return Number.isInteger(t.at)&&t.at>=0&&Array.isArray(t.net)&&t.net.every(YK)&&XK(t.below)}function QK(e){if(typeof e!=`object`||!e)return!1;let t=e;return XK(t.past)&&XK(t.future)&&(t.savepoint===void 0||ZK(t.savepoint))}function $K(e,t){let n=e=>e.kind===`file`||kK(e.key)?!0:(t.add(e.key),!1),r=e=>e.map(e=>e.filter(n)).filter(e=>e.length>0),{savepoint:i}=e,a=r(e.past),o=r(e.future);return i===void 0?{past:a,future:o}:{past:a,future:o,savepoint:{at:r(e.past.slice(0,i.at)).length,net:i.net.filter(n),below:r(i.below)}}}function eq(e,t){return{load:()=>{let n;try{n=s.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(QK)){let n=new Set,r=Object.fromEntries(Object.entries(e).map(([e,t])=>[e,$K(t,n)]));return n.size>0&&t(`warn`,`settings-history load: dropped the changes to ${[...n].map(e=>`"${e}"`).join(`, `)}, no longer a setting`),r}}catch{}return t(`warn`,`settings-history load: unexpected shape, starting empty`),{}},save:n=>{try{s.mkdirSync(v.dirname(e),{recursive:!0}),Ve(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)}}}}const tq=e=>!kK(e)&&!Aj(e)&&e!==`update.dismissed`;var nq=class{past=new Map;depth(e,t,n){return this.restorable(e,t,n).length}restorable(e,t,n){let r=new Map,i=n=>r.has(n)?r.get(n):t.get(e,n),a=[];for(let t of[...this.past.get(e)??[]].reverse())if(t.every(e=>i(e.key)===e.after&&(e.before===null||n.validate(e.key,e.before).ok))){a.unshift(t);for(let e of t)r.set(e.key,e.before)}return a}begin(e){let t=new Map;return{sessionState:xG(e,tq,(e,n,r,i)=>{let a=t.get(e)??new Map,o=a.get(n);a.set(n,{key:n,before:o?o.before:r,after:i}),t.set(e,a)}),commit:()=>{for(let[e,n]of t){let t=[...n.values()].filter(e=>e.before!==e.after);t.length>0&&this.push(e,t)}t.clear()}}}back(e,t,n){let r=this.past.get(e)??[],i=this.restorable(e,t,n),a=i.at(-1),o=r.length-i.length;if(a===void 0)throw this.put(e,i),new q(`back: nothing to go back to${o>0?` (${o} step(s) over a view since gone, discarded)`:``}`);return(0,Vv.runInAction)(()=>{let n=a.flatMap(({key:e,before:t})=>t===null?[]:[{key:e,value:t}]);n.length>0&&t.setBatch(e,n);for(let{key:n,before:r}of a)r===null&&t.clear(e,n)}),this.put(e,i.slice(0,-1)),{step:a,discarded:o}}push(e,t){let n=this.past.get(e)??[];this.put(e,[...n,t].slice(-20))}put(e,t){for(this.past.delete(e),t.length>0&&this.past.set(e,t);this.past.size>32;)this.past.delete(this.past.keys().next().value)}};const rq=`click.error`;function iq(e,t,n,r){let i={text:n,at:r,answered:!1};e.set(t,rq,JSON.stringify(i))}function aq(e,t,n){let r=oq(e,t);!(r?.at===n.at&&r.text===n.text)||r.answered||e.set(t,rq,JSON.stringify({...r,answered:!0}))}function oq(e,t){let n=e.get(t,rq);return n===null?null:cq(n)}function sq(e,t,n,r){let i=oq(e,t);return i===null?{kind:`none`}:n<i.at+5?{kind:`held`,error:i}:r===`request`&&!i.answered?{kind:`owed`,error:i}:{kind:`over`}}function cq(e){let t;try{t=JSON.parse(e)}catch{return null}if(typeof t!=`object`||!t)return null;let{text:n,at:r,answered:i}=t;return typeof n==`string`&&typeof r==`number`&&(i===void 0||typeof i==`boolean`)?{text:n,at:r,answered:i===!0}:null}const lq=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function uq(e,t){let n=e=>({kind:`failed`,reason:`${t} ${e}`}),r;try{r=JSON.parse(e)}catch(e){return n(`is not JSON: ${e.message}`)}if(!lq(r))return n(`is not an object`);for(let[e,t]of Object.entries(r)){if(!lq(t))return n(`holds ${JSON.stringify(e)} as something other than its sightings`);for(let[e,r]of Object.entries(t))if(!bA.includes(r))return n(`marks ${JSON.stringify(e)} ${JSON.stringify(r)}, not ${bA.join(` or `)}`)}return{kind:`ok`,value:r}}function dq(e,t,n,r){return{...e,[t]:{...e[t],[n]:r}}}function fq(e=v.join(Ge(),`doctor-marks.json`)){let t=()=>{let t;try{t=s.readFileSync(e,`utf8`)}catch(t){return t.code===`ENOENT`?{kind:`ok`,value:{}}:{kind:`failed`,reason:`${e}: ${t.message}`}}return uq(t,e)};return{read:t,record:(n,r,i)=>{let a=t();if(a.kind===`failed`)throw Error(`doctor: the mark book could not be read: ${a.reason}`);s.mkdirSync(v.dirname(e),{recursive:!0}),Ve(e,`${JSON.stringify(dq(a.value,n,r,i),null,2)}\n`)}}}var pq=class extends Error{constructor(e){super(`the doctor looked at ${e} less than a second ago — click again`),this.name=`DoctorBusy`}};const mq={pullRequests:e=>dB(e).showPullRequest===!0,rateLimits:e=>uB(e,`block`)||uB(e,`weekly`),memento:e=>uB(e,`memento`)};function hq(e,t){let n=new Map;for(let r of __(av(e,t).node)){if(r.kind!==`segment`)continue;let e=n.get(r.name)??[];r.when&&e.push(r.when),n.set(r.name,e)}let r=[...n.keys()].filter(t=>O_(e.segments[t])===`fail`),i=new Map(r.map(t=>[t,oB(e,t,n.get(t))])),a=e=>r.filter(t=>mq[e](i.get(t)));return{pullRequests:a(`pullRequests`),rateLimits:a(`rateLimits`),memento:a(`memento`)}}
|
|
196
|
+
`);n.push(e[0]);for(let r=1;r<e.length;r++)t.push(n),n=[e[r]]}return t.push(n),t}function TW(e){let t=new Map;return e.map(e=>{let n=`${e.place}.${e.band}`,r=t.get(n)??0;return t.set(n,r+1),{line:e,row:`${n}#${r}`}})}function EW(e,t){let n=[],r=[],i;for(let a of t)(a.band===`own`?n:r).push(a),i??=a.cells.find(t=>t.placement.id===e)?.placement.ground;return{drawing:i===void 0?null:{own:r.length===0?n:[],ground:i},deeper:r}}function DW(e){return{...e,cells:e.cells.map(QH)}}function OW(e,t){let n=t.flatMap(e=>e.filter(e=>e.place===`above`)),r=t.map(e=>e.filter(e=>e.place===`flow`));return[...n,...kW(e,r)]}function kW(e,t){switch(e){case`vertical`:return t.flatMap(e=>e);case`horizontal`:return t.reduce((e,t)=>Math.max(e,t.length),0)===0?[]:[{cells:t.flatMap(e=>e[0]?.cells??[]),band:`own`,place:`flow`},...t.flatMap(e=>e.slice(1))]}}function AW(e,t){let n=(e,r)=>t(e)?e.kind===`segment`?[{cells:[{name:e.name,address:r,settings:e.settings}],band:`own`,place:`flow`}]:OW(e.direction,e.children.map((t,i)=>n(t,[...r,jW(e,i)]))):[];return n(e,[]).map(e=>[...e.cells])}function jW(e,t){return{index:t,count:e.children.length,distribution:e.distribution,axis:p_[e.direction]}}const MW={compile(e,t){return{kind:`container`,direction:e.direction,when:t.when,distribution:vm(e.distribution),children:e.children.map((e,n)=>t.compileChild(e,y_(t.path,n)))}},render(e,t){return t.gate.kind===`failed`&&t.gate.report(),OW(e.direction,e.children.map((n,r)=>t.renderChild(n,t.gate.kind===`shown`,jW(e,r))))}},NW={drop:e=>e.place,above:()=>`above`},PW={drop:(e,t)=>({lead:t(),stays:e}),above:e=>({lead:e.slice(0,1).flatMap(e=>e.cells),stays:e.slice(1)})},FW={compile(e,t){return{kind:`segment`,when:t.when,name:e.name,id:m_(e),settings:t.placementSettings(e),...e.opens!==void 0&&{opens:{open:t.parse(yr(e.opens.ref),`opens`),body:t.compileChild(e.opens.body,b_(t.path)),key:e.opens.ref.key,placement:e.opens.placement}},...e.lead!==void 0&&{lead:t.parse(e.lead,`lead`)},...e.trail!==void 0&&{trail:t.parse(e.trail,`trail`)}}},render:(e,t)=>t.placed(e.id,IW(e,t))};function IW(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.gate.kind===`hidden`)return[];let a=VT(t.scope,e.settings);if(t.gate.kind===`failed`)return LW(e,a,t,t.gate.message);try{if(!GH(i.when,a))return[];let n=i_(e.settings.theme,t.palette),o={id:e.id,effect:e.settings.effect,ground:Pk(n)},s=e.opens!==void 0&&GH(e.opens.open,t.scope),{styles:c,fragments:l,lead:u,trail:d,drops:f,open:p}=t.evaluateSegment(e,a,n,t.region,{bg:i.bg,fg:i.fg,body:i.template,lead:e.lead,trail:e.trail},s),m=p?c.trigger:c.closed,h={width:r.width??`auto`,justify:r.justify??`left`,truncate:r.truncate??`right`,baseStyle:m,padding:t.padding,placement:o},g=e.opens,_=g===void 0?[]:t.renderBody(g.body,s,c.disclosure).map(e=>({...e,place:NW[g.placement](e)})),v=wW(aU(l,m)).map((e,t)=>({cells:tU(e,{...h,lead:t===0?aU(u,m):[],trail:t===0?aU(d,m):[]}),band:`own`,place:`flow`})),y=f.map(e=>({cells:tU(aU([e],c.band),{...h,baseStyle:c.band}),band:`deeper`,place:`flow`})),b=(e,t,n)=>tU(aU([e],t),{...h,width:`auto`,baseStyle:t,padding:n}),x=_.findIndex(e=>e.band===`own`),{lead:S,stays:C}=g!==void 0&&x!==-1?PW[g.placement](v,()=>b(t.closeDisclosure(g.key),c.close,t.padding)):{lead:[],stays:v},w=S.flatMap(e=>b(new K(` `.repeat(ZH(e).reduce((e,t)=>e+t.cellLength,0))),c.trigger,0)),ee=(e,t)=>e.band===`own`?t===x?S:w:[],te=_.map((e,t)=>({cells:[...ee(e,t),...e.cells],band:`deeper`,place:e.place})),ne=[...C,...y];return t.perSegmentSink!==void 0&&t.perSegmentSink.set(e.id,[...ne.flatMap(e=>e.cells),..._.flatMap(ee)].flatMap(ZH)),[...ne,...te]}catch(n){return LW(e,a,t,n.message??String(n))}}function LW(e,t,n,r){n.onSegmentError?.(e.id,r);let i=r.replace(/\s*\n\s*/g,` `);return[{cells:tU([new K(`⚠ ${e.id}: ${i}`,{end:``})],{width:`auto`,justify:`left`,truncate:`right`,padding:0,placement:{id:e.id,effect:`bar`,ground:Pk(n.palette)},lead:RW(e.lead,e,t,n),trail:RW(e.trail,e,t,n)}),band:`own`,place:`flow`}]}function RW(e,t,n,r){if(e===void 0)return[];try{return r.evaluateSegment(t,n,r.palette,r.region,{bg:void 0,fg:void 0,body:e,lead:void 0,trail:void 0},!1).fragments}catch(e){return r.onSegmentError?.(t.id,e.message??String(e)),[]}}const zW={container:MW,segment:FW};function BW(e){return zW[e]}function VW(e){if(`ttl`in e)return{kind:`ttl`,durationMs:VE(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 HW(e,t){switch(w_(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 UW(e,t,n,r){switch(n.kind){case`literal`:e.declareLiteral(t,n.value);break;case`dropped`:e.declareFailedDocument(t,n.reason);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:VW(n.cache),parse:HW(n.parse,n.default)});break;case`shell`:e.declareShell(t,n.command,{cwd:r,cache:VW(n.cache),parse:HW(n.parse,n.default)});break;case`template`:e.declareTemplate(t,n.template,{varDefault:n.default});break;case`time`:e.declareTime(t,{format:n.layout,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 WW(e,t){let n=wy.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 GW=(e,t,n,r,i)=>{let a=Tz(t,wz(n,e.themeDefaults));return{variation:fm[r??Kh(void 0,null,a.variation)],shade:um[i??Yh(void 0,null,a.shade)]}};function KW(e,t,n){let r=n.cwd,i={store:t.variableStore,compiled:new Map,chromeCols:wg({endcaps:`powerline`}),width:80,padding:1,seamCols:Tg({endcaps:`powerline`}),layout:()=>[],look:void 0},a=zU(t.drawnAt),o={action:i,activeSegment:a},s=Object.keys(e.styles),c=rv(e.presets),l=HN(e),u=RT({extraFuncs:{...SU(i),...ZU(i,a),...tW(i,a),...uW(i,a),...aW(i,a,t.now),...hW(i,a),...yW(o),...SW(a),styles:{fn:()=>s,argTypes:[],arity:{kind:`exact`}},presets:{fn:()=>c,argTypes:[],arity:{kind:`exact`}}},clock:t.now,drawnAt:t.drawnAt}),d=WW(u,e.helpers),f=e=>u.parse(e,d),p=new Map,m=e=>{let t=p.get(e);if(t!==void 0)return t;let n=f(e);return p.set(e,n),n},h=new Map;for(let[t,n]of lo)n in e.variables&&h.set(t,n);for(let[t,n]of A_(e))h.has(n.key)||h.set(n.key,t);i.compiled=lU(f,e.actions,h,l);let g=[];for(let[n,i]of Object.entries(e.variables))try{UW(t,n,i,r)}catch(e){g.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{UW(t,`${n}.${e}`,a,r)}catch(t){g.push(`Variable "${n}.${e}": ${t.message??String(t)}`)}let _=Object.create(null);for(let[t,n]of Object.entries(e.segments)){let e=(e,n,r=f)=>{try{return r(e)}catch(e){throw Error(`Template parse error in segments.${t}.${n}: ${e.message}`,{cause:e})}};_[t]={when:n.when===void 0?void 0:e(n.when,`when`,m),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 v=(e,t,n)=>{try{return m(e)}catch(e){throw Error(`Template parse error in ${t}.${n}: ${e.message}`,{cause:e})}},y=t.variableStore,b=t=>{let n=P_(e.segments[t.name]),r=Object.create(null);for(let[e,i]of Object.entries(n))Object.defineProperty(r,e,{enumerable:!0,get:()=>B_(t,e,i,e=>String(y.read(e.variable)))});return Object.freeze(r)},x=(e,t)=>{let n={path:t,when:e.when===void 0?void 0:v(e.when,t,`when`),parse:(e,n)=>v(e,t,n),compileChild:x,placementSettings:b};return BW(e.kind).compile(e,n)},S=new Map;for(let t of c){let{node:n,path:r}=ov(e,t);S.set(t,x(n,r))}let C=new Map(xh.map(e=>[e,new Map])),w=[[`globals`,e.globals],...Object.entries(e.presets).map(([e,t])=>[`presets.${e}.globals`,t.globals??{}])];for(let[e,t]of w)for(let n of xh){let r=t[n];if(!Sh(r))continue;let i=`${e}.${n}`,a=C.get(n),o=a.get(r);a.set(r,o===void 0?{where:i,template:qW(f,i,r)}:{where:`${o.where}, ${i}`,template:o.template})}return{segments:_,roots:S,activeSegment:a,menuRuntime:o,globalExpressions:C,loadWarnings:g}}function qW(e,t,n){try{return e(n)}catch(e){throw Error(`${t} is not a valid template: ${e instanceof Error?e.message:String(e)}`)}}function JW(e,t,n){let r=e.globalExpressions.get(t).get(n);if(r===void 0)throw Error(`the ${t} rule ${JSON.stringify(n)} reached the render but no compiled template exists — registerDslConfig and the resolution disagree about isExpression`);return r}function YW(e,t,n,r){try{return t.template.evaluate(n).map(e=>e.plain).join(``)}catch(n){return r({kind:`rule`,slot:e,message:jh(t.where,e,`the rule failed — ${n instanceof Error?n.message:String(n)}`)}),Ah[e]}}function XW(e,t){return e.kind===`decided`?e.name:Ah[t]}function ZW(e){return QW(e).filter(e=>!e.name.startsWith(xD)).map(e=>e.id)}function QW(e){return e.kind===`container`?e.children.flatMap(QW):[e,...e.opens===void 0?[]:QW(e.opens.body)]}function $W(...e){return eG(...e).text}function eG(e,t,n,r,i,a,o,s,c){let{perSegmentSink:l,onSegmentError:u,onRenderWarning:d}=s??{},f=e=>d?.(e),p=new Set;r.renderAt(a),r.drawAt(Uh(o.colorCompatibility));let{preset:m=tv}=c??{},h=sv(e,m),g=c?.style??Dh(`none`,e.styles),_=c?.theme??u_(void 0,null,h.palette),v=GW(e,h,_,c?.variation,c?.shade),y=c?.effect??Ih(void 0,null,h.effect),b=(e,t,n)=>({...i,term:{cols:o.width},theme:{effective:e},style:{effective:t},effect:{effective:n}});r.applyInput(b(XW(_,`palette`),XW(g,`style`),XW(y,`effect`))),t.menuRuntime.action.chromeCols=wg(o),t.menuRuntime.action.padding=o.padding,t.menuRuntime.action.width=o.width,t.menuRuntime.action.seamCols=Tg(o);let x=zT(n),S=wh(_,e=>{let n=JW(t,`palette`,e);return l_(YW(`palette`,n,x,f),n.where,e=>f({kind:`rule`,slot:`palette`,message:e}))}),C=wh(g,n=>Dh(YW(`style`,JW(t,`style`,n),x,f),e.styles)),w=wh(y,e=>Fh(YW(`effect`,JW(t,`effect`,e),x,f)));(S!==_||C!==g||w!==y)&&r.applyInput(b(S.name,C.name,w.name));let ee=S.value,te=o_(ee,C.value);t.menuRuntime.action.look={basePalette:ee,palette:te,decor:v};let ne=c?.transitions??ag(void 0,null,h.transitions),T=(c?.effects??new gg(``)).motion(w.value,a,{transitions:ne,source:{config:t,preset:m,revision:r.stateRevision(),width:o.width},returned:EW,hold:DW});l?.clear();let re=n=>{let r=e.segments[n],i=t.segments[n];return r!==void 0&&i!==void 0?{seg:r,compiled:i}:void 0},E=(e,n,i,a,o,s)=>{try{let c=r.drawnAt(),{tint:l,text:u,disclosure:d}=dh(i,a,c),f=BU(t.activeSegment,e.name,e.id,i,d,l,u),m=Ik(f,c,o.bg,o.fg,n),h=()=>Qm(i,d,c);s&&(f.bg=h().state);let g=o.body.evaluate(n),_=f.drops.length>0||s;if(_){let e=h();f.bg=e.state;for(let t of e.shortfalls)p.add(t)}let v=o.lead?.evaluate(n)??[],y=o.trail?.evaluate(n)??[];return{styles:{closed:m,get trigger(){return wU(i,h().state,c)},get band(){return wU(i,h().plane,c)},get close(){return DU(i,h().state,c)},disclosure:d},fragments:g,lead:v,trail:y,drops:f.drops,open:_}}finally{t.activeSegment.current=null}},D=(e,t,r)=>{let i=t?JH(e.when,x):KH,a=i.kind===`failed`?{...i,report:()=>{let t=`when over ${ZW(e).join(`, `)||`no placement`}`;f({kind:`when`,where:t,error:i.message,message:`${t}: ${i.message} — what it gates is hidden`})}}:i,s={scope:x,palette:te,gate:a,padding:o.padding,region:r,perSegmentSink:l,onSegmentError:u,evaluateSegment:E,lookupSegment:re,renderChild:(e,t,n)=>D(e,t,lh(r,n)),renderBody:(e,t,n)=>D(e,a.kind===`shown`&&t,uh(n)),closeDisclosure:e=>CU(n,e),placed:T.placed};return BW(e.kind).render(e,s)},ie=t.roots.get(m);if(ie===void 0)throw Error(`Preset "${m}" has no compiled layout — registerDslConfig compiles one per declared preset and effectivePresetName collapses unknown names to "${tv}"; a miss here is merge/policy drift (have: ${[...t.roots.keys()].join(`, `)})`);let O=e=>{let n=JH(e.when,x);if(e.kind===`container`)return n.kind===`shown`;if($N(e.name)===void 0)return!1;if(n.kind!==`shown`)return n.kind===`failed`;try{return GH(t.segments[e.name].when,VT(x,e.settings))}catch{return!0}};t.menuRuntime.action.layout=()=>AW(ie,O).map(e=>e.flatMap(({name:e,address:t,settings:n})=>{let r=$N(e);return r===void 0?[]:[{name:r,address:t,palette:i_(n.theme,te)}]}));let ae=TW(D(ie,!0,ch(v))).map(({line:e,row:t})=>{let n=iU(e.cells,o);return kg(n.map(e=>e.owner),o,T.row(t,n))});T.drawn();let oe=ae.some(e=>e.moves)?`moves`:y.kind===`expression`||ne||QW(ie).some(({settings:e})=>e.effect!==`bar`&&e.effect!==`none`)?`can-move`:`still`;for(let e of p)f({kind:`band-floor`,message:e});for(let[e,t]of r.cachePolicyFaults())f({kind:`refresh`,variable:e,error:t.message,message:`variable "${e}" cannot refresh: ${t.message}`});return{text:ae.map(e=>e.text).join(`
|
|
197
|
+
`),motion:oe}}function*tG(e){yield*Object.entries(e.variables??{});for(let[t,n]of Object.entries(e.segments??{}))for(let[e,r]of Object.entries(n.vars??{}))yield[`${t}.${e}`,r]}function*nG(e){for(let t of Object.values(e.segments))for(let e of[t.template,t.bg,t.fg,t.when])e!==void 0&&(yield e);for(let t of rv(e.presets)){for(let n of v_(ov(e,t).node))n.when!==void 0&&(yield n.when);let n=sv(e,t);for(let e of xh){let t=n[e];Sh(t)&&(yield t)}}for(let[,t]of tG(e))t.kind===`template`&&(yield t.template),E_(t)&&`key`in t.cache&&(yield t.cache.key);for(let t of Object.values(e.actions))`copy`in t&&(yield t.copy),`open`in t&&(yield t.open),`preset`in t&&t.preset===`delete`&&(yield t.name)}function rG(e,t){return e===t||t.startsWith(`${e}.`)||e.startsWith(`${t}.`)}function iG(e,t){let n=new Set,r=new Set,i=new Set;for(let e of nG(t)){for(let r of Ov(e,t.helpers).keys())n.add(r);for(let{name:n}of Mv(e,t.helpers))r.add(n);for(let n of Nv(e,t.helpers))i.add(n)}for(let[,e]of tG(t))if(E_(e)&&`depends_on`in e.cache)for(let t of e.cache.depends_on)n.add(t);let a=new Set(r);for(let e of r){let n=t.actions[e];if(n!==void 0&&`do`in n)for(let e of n.do)a.add(e)}let o=new Set,s=new Set;for(let e of a){let n=t.actions[e];if(n!==void 0&&(`set`in n&&o.add(n.set),`insertSegment`in n&&s.add(n.insertSegment),`insertSegmentFrom`in n&&Array.isArray(n.insertSegmentFrom)))for(let e of n.insertSegmentFrom)s.add(e)}for(let e of rv(t.presets))for(let n of v_(ov(t,e).node))n.kind===`segment`&&s.add(n.name);let c=(e,t)=>[...n].some(t=>rG(t,e))||t.kind===`state`&&o.has(t.key),l=e=>[...e].filter(e=>!CD(e)),u=(e,t,n)=>l(t).filter(e=>!n(e)).map(t=>({kind:e,name:t})),d=new Map(tG(e));return[...u(`variable`,d.keys(),e=>c(e,d.get(e))),...u(`action`,Object.keys(e.actions??{}),e=>a.has(e)),...u(`helper`,Object.keys(e.helpers??{}),e=>i.has(e)),...u(`segment`,Object.keys(e.segments??{}),e=>s.has(e))]}var aG=class{kind=`box`;cell;lastChangedAt;constructor(e,t,n){this.name=e,this.type=t,dG(e,t,n,`initial value`),this.cell=Hv.observable.box(n,{deep:!1}),this.lastChangedAt=Date.now()}read(){return this.cell.get()}set(e){dG(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}},oG=class{kind=`computed`;cell;constructor(e,t,n){if(this.name=e,this.type=t,this.cell=(0,Hv.computed)(()=>{let e=n();return dG(this.name,this.type,e,`computed result`),e},{keepAlive:!0}),typeof this.cell.suspend_!=`function`)throw TypeError(`Variable "${e}": this MobX's computed has no suspend_; release() cannot unsubscribe it`);if(typeof this.cell.keepAlive_!=`boolean`)throw TypeError(`Variable "${e}": this MobX's computed has no keepAlive_ flag; release() cannot lift it`)}read(){return this.cell.get()}release(){this.cell.keepAlive_=!1,this.cell.suspend_()}lastUpdatedMs(){return null}},sG=class{kind=`document`;cell;lastChangedAt;constructor(e,t){this.name=e,this.cell=Hv.observable.box(uG(t),{deep:!1}),this.lastChangedAt=Date.now()}read(){return this.cell.get()}set(e){let t=uG(e);lG(this.cell.get(),t)||(this.cell.set(t),this.lastChangedAt=Date.now())}lastUpdatedMs(){return this.lastChangedAt}};function cG(e){return JSON.stringify(e)}function lG(e,t){return cG(e)===cG(t)}function uG(e){return e.kind===`ok`?{kind:`ok`,value:Uv(e.value)}:e}function dG(e,t,n,r){let i=Wv(n);if(i!==t)throw TypeError(`Variable "${e}": ${r} type ${i} does not match declared type ${t}`)}var fG=class{nodes=Hv.observable.map(void 0,{deep:!1});defineBox(e,t,n){this.declare(e,new aG(e,t,n))}defineDocument(e,t){this.declare(e,new sG(e,t))}defineComputed(e,t,n){let r=e=>this.read(e);this.declare(e,new oG(e,t,()=>n(r)))}read(e){return this.requireVar(e).read()}readDocument(e){let t=this.requireNode(e);if(t.kind!==`document`)throw TypeError(`Variable "${e}" is a ${t.kind}, not a document`);return t.read()}setDocument(e,t){let n=this.requireNode(e);if(n.kind!==`document`)throw TypeError(`Variable "${e}" is a ${n.kind}, not a document (use defineDocument to create one)`);(0,Hv.runInAction)(()=>n.set(t))}setBox(e,t){let n=this.requireNode(e);if(n.kind!==`box`)throw TypeError(`Variable "${e}" is a ${n.kind}, not a box (use defineBox to create a settable variable)`);(0,Hv.runInAction)(()=>n.set(t))}runInAction(e){(0,Hv.runInAction)(e)}has(e){return this.nodes.has(e)}getType(e){return this.requireVar(e).type}getKind(e){return this.requireNode(e).kind}changeKey(e){let t=this.requireNode(e);if(t.kind===`document`)return cG(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()]}dispose(){if(this.disposed)return 0;this.disposed=!0;let e=0;return(0,Hv.runInAction)(()=>{for(let t of this.nodes.values())t instanceof oG&&(t.release(),e++)}),e}disposed=!1;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}declare(e,t){if(this.disposed)throw Error(`Variable "${e}": cannot declare on a disposed store`);if(this.nodes.has(e))throw Error(`Variable "${e}" is already declared`);(0,Hv.runInAction)(()=>this.nodes.set(e,t))}};function pG(e,{plugins:t,config:n}){let{checkout:r,loaded:i,dropped:a,unreached:o}=t,s=r===null?`-`:`${r.git?`git`:`dir`}:${r.root}`,c=e=>{let t=aR(e),r=t===void 0?void 0:n.variables[sR(t)];return r?.kind===`file`?r.path:`none`};return`config load ${e.join(` < `)||`<default>`}: plugins loaded=${i.length} dropped=${a.length} unplaced=${o.length} checkout=${s}`+i.map(e=>` +${e} data=${c(e)}`).join(``)+a.map(e=>` -${e.path} (${e.reason})`).join(``)+o.map(e=>` ~${e.path} (${e.reason})`).join(``)}function mG(e,t){return`config disposed reason=${e.reason} released=${t} held=${e.held}`}function hG(e,t,n){return e+`\0`+t+`\0`+(n??``)}function gG(e,t){return new Set(rv(e.presets).filter(n=>ov(e,n).path===`root`?t.root!==void 0:t.presets?.[n]?.root!==void 0))}function _G(e,t){let n=new Map,{roots:r,loaded:i,dropped:a,unreached:o}=e.state.plugins;for(let t of[...IR(e.projectDir,e.cwd,e.configFile),...r,...i,...[...a,...o].map(e=>e.path)]){let{dir:e,name:r}=Rv(t),i=n.has(e)?n.get(e):new Set;i?.add(r),n.set(e,i)}for(let e of r){let{dir:t,name:r,leaf:i}=Rv(v.join(e,`_`));i&&r===`_`&&n.set(t,null)}return{files:t,dirs:[...n.entries()].sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>t===null?{path:e}:{path:e,filenames:[...t].sort()})}}function vG(e){return e.filter(Boolean).join(`
|
|
198
|
+
`)||null}function yG(e,t,n,r,i=()=>{}){let{layers:a,config:o,installed:s}=ZR(t.layers,bz,{entered:i,warned:e=>n.push(...e)},{projectDir:t.projectDir,cwd:e});i(a.length===1?a[0].path:null);let c=a.at(-1)?.config??bz,l=a.find(e=>e.path===t.home)?.raw??{},u=new fG,d=new cD(u,o.globals.default_empty_value??``,r.gitService,r.sessionState),f;try{f=KW(o,d,{cwd:e}),n.push(...f.loadWarnings),rV(o),SP(o)}catch(e){throw d.dispose(),e}return{config:o,store:u,registry:d,compiled:f,neededInputPaths:lB(o),lastRenderCellsBySegment:new Map,authoredRoots:gG(c,l),fileHeldSettings:UB(l),unused:[...new Map(a.flatMap(e=>iG(e.raw,c)).map(e=>[`${e.kind}:${e.name}`,e])).values()],plugins:{checkout:s.checkout,roots:s.roots,loaded:[...s.rendering.values()],dropped:[...s.dropped,...a.flatMap(e=>e.plugins.dropped)],unreached:s.unreached,reached:s.reached,rendering:s.rendering}}}function bG(e,t,n,r){let i=RR(e,t,n),a={layers:i.kind===`chain`?i.layers:[],home:i.home,projectDir:e},o=[UR(e,t),VR(i)],s,c=null;try{s=yG(t,a,o,r,e=>{c=e})}catch(e){return e instanceof mD&&o.push(...e.warnings),{layers:a.layers,home:a.home,failedFile:c,warning:vG(o),state:null,error:e instanceof mD||e instanceof Error?e.message:String(e)}}return{layers:a.layers,home:a.home,warning:vG(o),state:s,error:null}}function xG(e,t,n){return yG(e,{layers:[],home:``,projectDir:t},[],n)}var SG=class{entries=new Map;holds=new Map;deps;log;maxEntries;observers;constructor(e,t={}){this.deps=e,this.log=e.log??qt,this.maxEntries=t.maxEntries??256,this.observers=t.observers??{}}getOrCreate(e,t,n){let r=hG(e,t,n),i=this.entries.get(r);if(i)return this.entries.delete(r),this.entries.set(r,i),i;let a=bG(e,t,n,this.deps);a.state!==null&&this.log(`info`,pG(a.layers,a.state));let o={projectDir:e,cwd:t,configFile:n,configLayers:[],configHome:``,failedFile:null,lastError:a.error,lastWarning:a.warning,state:a.state??xG(t,e,this.deps),watcher:null,watcherKey:null};if(this.serve(o.state),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.watcher?.release(),this.entries.delete(t),this.retire(n.state,`evict`)}}return this.refreshWatcher(o,a),this.observers.onReload?.(o),o}hold(e,t,n){let r=this.getOrCreate(e,t,n),{state:i}=r,a=this.holdOf(i);a.holders++;let o=!1;return{entry:r,state:i,[Symbol.dispose]:()=>{if(o)throw Error(`render-cache hold released twice`);o=!0,a.holders--,this.reclaim(i,a)}}}get stats(){let e=0,t=0;for(let n of this.holds.values())n.holders>0&&e++,n.retired!==null&&t++;return{size:this.entries.size,held:e,retired:t}}serve(e){this.holds.set(e,{holders:0,retired:null})}holdOf(e){let t=this.holds.get(e);if(t===void 0)throw Error(`render-cache state never served`);return t}retire(e,t){let n=this.holdOf(e);n.retired={reason:t,held:n.holders},this.reclaim(e,n)}reclaim(e,t){t.retired===null||t.holders>0||(this.holds.delete(e),this.log(`info`,mG(t.retired,e.registry.dispose())))}reload(e,t,n){this.reloadInto(this.getOrCreate(e,t,n))}reloadInto(e){let t=bG(e.projectDir,e.cwd,e.configFile,this.deps);if(e.lastWarning=t.warning,e.lastError=t.error,t.state!==null){this.log(`info`,pG(t.layers,t.state));let n=e.state;e.state=t.state,this.serve(t.state),this.retire(n,`reload`)}this.refreshWatcher(e,t),this.observers.onReload?.(e)}refreshWatcher(e,t){e.configLayers=t.layers,e.configHome=t.home,e.failedFile=t.error===null?null:t.failedFile;let n=_G(e,t.layers),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){this.log(`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 CG=16384;var wG=class e{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<CG){this.rollingTimestamps.push(e);return}this.rollingTimestamps[this.rollingHead]=e,this.rollingHead=(this.rollingHead+1)%CG}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}}static referenceSnapshot(){return new e().snapshot({gitCache:{size:0,hits:0,misses:0,invalidations:0,watchers:0},usageCache:{size:0,hits:0,misses:0,sweeps:0},renderCache:{size:0,held:0,retired:0},effectCache:{sessions:0,effects:0},sessionState:{sessions:0,observers:0,revision:0},frameFeeds:{feeds:0,subscribers:0,drawn:0,pushed:0,refused:0,lookups:0,found:0},watchersActive:0,handlerProbes:[],clients:[],bundle:`/`,daemon:{pid:0,rss:0,rssLimit:0,postMortems:{kind:`ok`,value:[]}}})}snapshot(e){let t=process.memoryUsage();return{pid:process.pid,version:Lt,sourceDigest:$g(),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:e.renderCache,effectCache:e.effectCache,sessionState:e.sessionState,frameFeeds:e.frameFeeds,watchers:{active:e.watchersActive,opened:this.watchersOpened,closed:this.watchersClosed,evicted:this.watchersEvicted},subprocesses:this.snapshotSubprocesses(),nextRestartReason:e.nextRestartReason??null,handlerProbes:e.handlerProbes,clients:e.clients,bundle:e.bundle,daemon:e.daemon}}};function TG(e,t,n){let r=(r,i,a)=>{let o=i.filter(t).map(t=>({key:t,before:e.get(r,t)}));a();for(let{key:t,before:i}of o)n(r,t,i,e.get(r,t))};return{get:(t,n)=>e.get(t,n),revision:t=>e.revision(t),set:(t,n,i)=>r(t,[n],()=>e.set(t,n,i)),setBatch:(t,n)=>r(t,n.map(e=>e.key),()=>e.setBatch(t,n)),clear:(t,n)=>r(t,[n],()=>e.clear(t,n))}}const EG={load:()=>({}),save:()=>{},flush:()=>{}};var DG=class{sessions;storage;head=0;atom=(0,Hv.createAtom)(`SessionState`);constructor(e=EG,t=256){this.maxSessions=t,this.storage=e,this.sessions=new Map,this.hydrateFromStorage()}useStorage(e){this.storage=e,this.hydrateFromStorage()}hydrateFromStorage(){this.sessions=new Map(Object.entries(this.storage.load()).map(([e,t])=>[e,{values:new Map(Object.entries(t)),revision:++this.head}])),this.evictOldest(),this.persist()}get(e,t){this.atom.reportObserved();let n=this.sessions.get(e);return n?(this.touch(e,n),n.values.get(t)??null):null}revision(e){return this.atom.reportObserved(),this.sessions.get(e)?.revision??0}observers(){return this.atom.observers_?.size??0}latestRevision(){return this.head}size(){return this.sessions.size}set(e,t,n){this.setBatch(e,[{key:t,value:n}])}setBatch(e,t){t.length!==0&&(0,Hv.runInAction)(()=>{let n=this.sessions.get(e)??{values:new Map,revision:0};t.some(({key:e,value:t})=>n.values.get(e)!==t)&&(n.revision=++this.head);for(let{key:e,value:r}of t)n.values.set(e,r);this.touch(e,n),this.evictOldest(),this.persist(),this.atom.reportChanged()})}clear(e,t){(0,Hv.runInAction)(()=>{let n=this.sessions.get(e);n&&(n.values.delete(t)&&(n.revision=++this.head),n.values.size===0?this.sessions.delete(e):this.touch(e,n)),this.persist(),this.atom.reportChanged()})}prune(e){(0,Hv.runInAction)(()=>{for(let t of this.sessions.keys())e.has(t)||this.sessions.delete(t);this.persist(),this.atom.reportChanged()})}touch(e,t){this.sessions.delete(e),this.sessions.set(e,t)}evictOldest(){let e=this.sessions.size-this.maxSessions;if(!(e<=0)){for(let t of this.sessions.keys())if(this.sessions.delete(t),--e===0)break}}flush(){this.storage.flush()}persist(){this.storage.save(this.serialize())}serialize(){let e=Object.create(null);for(let[t,{values:n}]of this.sessions)e[t]=Object.fromEntries(n);return e}};function OG(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 kG=class{timer=null;pending=null;constructor(e,t=500,n=qt){this.filePath=e,this.debounceMs=t,this.logger=n}load(){let e;try{e=s.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 OG(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{s.mkdirSync(v.dirname(this.filePath),{recursive:!0});let t=`${this.filePath}.tmp`;s.writeFileSync(t,JSON.stringify(e),{mode:384}),s.chmodSync(t,384),s.renameSync(t,this.filePath),this.pending=null}catch(e){this.logger(`warn`,`session-state save failed: ${e.message}`)}}};const AG={default_empty_value:`string`,default_separator:`string`,palette:`string`,style:`string`,effect:`string`,preset:`string`,endcaps:`string`,variation:`string`,shade:`string`,autoWrap:`boolean`,padding:`number`,updateNotice:`boolean`,transitions:`boolean`,experimentalBand:`boolean`,experimentalStatusline:`boolean`,experimentalPane:`boolean`,colorCompatibility:`string`,menuGlyph:`string`},jG=new Set([`1`,`true`]),MG=new Set([`0`,`false`,``]);function NG(e,t){let n=iK(e),r=n.scope===`segment-palette`?`string`:AG[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(jG.has(t))return`true`;if(MG.has(t))return`false`;throw Error(`persistValueText: "${e}" expects boolean-ish (1, 0, true, false), got "${t}"`)}function PG(e){try{return s.readFileSync(e,`utf8`)}catch(e){if(e.code===`ENOENT`)return null;throw e}}function FG(e,t,n){try{if(t===null){s.rmSync(He(e),{force:!0});return}Ve(e,t)}catch(t){let r=`config write failed (${e}): ${t.message}`;throw n(`error`,r),Error(r)}}function IG(e){return/^\s*$/.test(e)?null:Br(e)}function LG(e,t){return e!==null&&Hr(e,t)!==void 0}function RG(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(RG),...i}}return e}function zG(e){if(!q_(e))return RG(e);let{rows:t,...n}=e;return{rows:Object.fromEntries(Object.entries(t).map(([e,t])=>[e,RG(t)])),...n}}const BG=vz,VG=BG.segments,HG=BG.presets,UG=BG.root;function WG(e,t,n,r){if(!LG(e,t)&&n===void 0)throw new q(`cannot edit ${r}: neither the config file nor the bundled default declares ${t.join(`.`)}`)}function GG(e,t){let n=dk(t);return t.scope===`segment-palette`&&WG(e,[`segments`,t.segment],VG[t.segment],n.join(`.`)),n}function KG(e){return Br(Xr(e))}function qG(){return Object.entries(UG.rows).map(([e,t])=>{let n=RG(t);return{path:[`root`],fragment:KG({rows:{[e]:n}}),unit:{path:[`root`,`rows`,e],value:n}}})}function JG(e,t){let n=e===null?void 0:Hr(e,t);return n===void 0?null:{path:t,fragment:n,unit:null}}function YG(e,t){if(t===void 0)return null;let n=zG(t);return{path:e,fragment:KG(n),unit:{path:e,value:n}}}function XG(e,t){let n=[`presets`,t],r=[...n,`root`],i=HG[t];WG(e,n,i,r.join(`.`));let a=JG(e,r)??YG(r,i?.root);return a!==null&&gi(a.fragment)?a:null}function ZG(e,t){let n=hi(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 QG(e,t){return[...qG(),JG(e,[`root`]),XG(e,t)].filter(e=>e!==null).reduce(ZG,new Map)}function $G(e,t,n){for(let{node:r,...i}of QG(e,t).values())if(vi(r,n))return i;throw new q(`${eK(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 eK(e,t){return XG(e,t)?.path??[`root`]}function tK(e,t){return t.scope===`preset-root`?eK(e,t.preset):dk(t)}function nK(e,{unit:t}){return t===null?e:li(e,t.path,Xr(t.value),Jr)}function rK(e){let t=uk(e);if(t===null)throw Error(`"${e}" is not a valid persist target`);return t}function iK(e){let t=rK(e);if(t.scope===`preset-root`)throw Error(`"${e}" names a layout, not a value`);return t}function aK(e,t,n,r,i){i(t,n,gK(t,r)),FG(t.path,r,e.logger),e.record(t.path,n,r)}function oK(e,t,n){let r=lK(e,t,n);if(r.length>0)throw new q(`refused: ${e.above.join(`, `)} sets ${r.join(`, `)} over ${e.path}, so this click would change nothing on the bar — edit it there`)}const sK=()=>{};function cK(e,t){try{return t()}catch(t){throw!(t instanceof q)||e.above.length===0?t:new q(`${t.message} — or it is declared by ${e.above.join(`, `)}, which the bar does not edit`)}}function lK(e,t,n){let r=uK(e,t);if(r===null)return[];let i=new Set(mK(pK(r),pK(n)));return mK(fK(e,r),fK(e,n)).filter(e=>!i.has(e))}function uK(e,t){try{return dK(e,t)}catch(e){if(e instanceof mD)return null;throw e}}function dK(e,t){return ZR(t===null?e.above:[e.path,...e.above],bz,{entered:()=>{},warned:()=>{}},{projectDir:e.projectDir,cwd:e.cwd},n=>n===e.path&&t!==null?t:s.readFileSync(n,`utf8`))}function fK(e,t){let[n]=t.layers;return n?.path===e.path?n.config:t.base}function pK(e){return e.layers.at(-1)?.config??e.base}function mK(e,t,n=``){return!hK(e)||!hK(t)?JSON.stringify(e)===JSON.stringify(t)?[]:[n]:[...new Set([...Object.keys(e),...Object.keys(t)])].flatMap(r=>mK(e[r],t[r],n===``?r:`${n}.${r}`))}function hK(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function gK(e,t){try{return dK(e,t)}catch(e){throw e instanceof mD?new q(`refused: the config file would not load after this click — ${e.message}`):e}}function _K(e,t){let n=iK(t),r=IG(PG(e)??``),i=r===null?void 0:Hr(r,dk(n));return i!==void 0&&`value`in i?i.value:void 0}function vK(e,t,n){yK(e,t,n,[])}function yK(e,t,n,r){let i=PG(t.path),a=n.reduce((e,[t,n])=>li(e,GG(IG(e),iK(t)),NG(t,n),Jr),i??``);aK(e,t,i,cK(t,()=>bK(a,t.path,r,e=>e)),oK)}function bK(e,t,n,r){return n.reduce((e,{preset:n,id:i,setting:a,value:o})=>{let s=r(e,n,i),c=$G(IG(s),n,i),l=Si(nK(s,c),c.path,i,a,Xr(o));if(l===null)throw new q(`${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 xK(e,t,n){let r=IG(e),i=[`presets`,t,`root`];for(let[a,{path:o,unit:s,node:c}]of QG(r,t)){if(!vi(c,n))continue;if(i.every((e,t)=>o[t]===e))return e;let l=s===null?Wr(e,c):Xr(s.value);if(a!==`#`)return li(e,[...i,`rows`,a],l,Jr);if(XG(r,t)!==null)throw new q(`cannot give preset "${t}" its own copy of ${o.join(`.`)}: it already stages rows of its own over that tree`);return li(e,i,l,Jr)}return e}function SK(e,t){return di(e,t,t[0]===`presets`&&t.length>2&&!Sz(t[1])?2:0)}function CK(e,t,n){let r=n.map(rK),i=PG(t.path);if(i===null)return;let a=r.reduce((e,t)=>SK(e,tK(IG(e),t)),i);a!==i&&aK(e,t,i,a,sK)}function wK(e){let t=e===null?void 0:Hr(e,[`presets`]);return t?.kind===`object`?t.entries.map(e=>e.key):[]}function TK(e,t){let n=new Set([...xz,...wK(e),...t.above.flatMap(e=>Object.keys(Nr.default.parse(s.readFileSync(e,`utf8`)).presets??{}))].map(pD));return Array.from({length:n.size+1},(e,t)=>`custom-${t+1}`).find(e=>!n.has(pD(e)))}function EK(e,t,n,r,i,a){let o=PG(t.path),s=IG(o??``),c=TK(s,t),l=[`presets`,c],u=cK(t,()=>XG(s,n)),d=[...u===null?[]:[[[...l,`root`],u.unit===null?Wr(o??``,u.fragment):Xr(u.unit.value)]],...Object.keys(r).length===0?[]:[[[...l,`globals`],Xr(r)]]],f=i.map(([e,t])=>{let n=lk(c,e);return[GG(s,iK(n)),NG(n,t)]}),p=[...d,...f].reduce((e,[t,n])=>li(e,t,n,Jr),li(o??``,l,`{}`,Jr));return aK(e,t,o,cK(t,()=>bK(p,t.path,a.map(e=>({...e,preset:c})),xK)),oK),c}function DK(e,t,n,r){let i=PG(t.path);aK(e,t,i,li(i??``,[`themeDefaults`,n],Xr(r),Jr),oK)}function OK(e,t,n){if(Sz(n))throw new q(`cannot delete preset "${n}": it is bundled — reset its settings instead`);let r=[`presets`,n],i=PG(t.path),a=IG(i??``);if(i===null||a===null||Hr(a,r)===void 0)throw new q(`cannot delete preset "${n}": ${t.path} declares no ${r.join(`.`)} — the bar you clicked is stale; it reloads on the next render`);let o=Hr(a,[`globals`,`preset`]);aK(e,t,i,[r,...o?.kind===`string`&&o.value===n?[[`globals`,`preset`]]:[]].reduce((e,t)=>SK(e,t),i),sK)}function kK(e,t,n,r){let i=rK(n);if(i.scope!==`preset-root`)throw Error(`"${n}" is not a "presets.<name>.root" target`);let a=PG(t.path),o=r.op===`remove`?r.target:r.anchor,s=cK(t,()=>$G(IG(a??``),i.preset,o)),c=nK(a??``,s),{after:l,placed:u}=AK(c,s.path,r,()=>{let e=gK(t,c).config;return rv(e.presets).map(t=>ov(e,t).node)});if(l===null)throw new q(`${s.path.join(`.`)} in ${t.path} 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 aK(e,t,a,l,oK),u}function AK(e,t,n,r){switch(n.op){case`remove`:return{after:bi(e,t,n.target),placed:null};case`insert`:{let i=lP(n.segment,n.anchor,r());return{after:xi(e,t,i,n.anchor,n.relation),placed:i}}}}const jK={load:()=>({}),save:()=>{}},MK=new Set(ao.map(e=>e.sessionKey)),NK=e=>MK.has(e)||e.startsWith(Sk),PK=8*1024*1024,FK={past:[],future:[]},IK=e=>e.kind===`session`?`session:${e.key}`:`file:${e.file}`;var LK=class{state=new Map;constructor(e,t,n=jK){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,savepoint:r}=this.state.get(e)??FK;return{undo:t.length,redo:n.length,sinceEdit:r?.net.length??0}}history(e){return this.state.get(e)??FK}begin(){let e=new Map,t=(t,n)=>{let r=e.get(t)??new Map,i=r.get(IK(n));r.set(IK(n),i===void 0?n:{...n,before:i.before}),e.set(t,r)},n=new Map;return{sessionState:TG(this.sessionState,e=>NK(e)||e===`edit.mode`,(e,r,i,a)=>{if(r===`edit.mode`){let t=n.get(e);n.set(e,{before:t===void 0?i:t.before,after:a});return}t(e,{kind:`session`,key:r,before:i,after:a})}),file:(e,n,r,i)=>t(e,{kind:`file`,file:n,before:r,after:i}),commit:()=>{let t=new Map(e),r=new Map(n);e.clear(),n.clear();for(let e of new Set([...t.keys(),...r.keys()])){let n=[...t.get(e)?.values()??[]].filter(e=>e.before!==e.after),i=this.history(e),a=n.length===0?i:GK(i,n),o=r.get(e),s=o===void 0?a:YK(a,o);s!==i&&this.put(e,s)}}}}undo(e){let t=this.history(e),n=t.past.at(-1);if(n===void 0)throw new q(`undo: nothing to undo`);return this.apply(e,n,`before`,`undo`,qK(t,n)),n}rewind(e){let t=this.history(e),{savepoint:n}=t;if(n===void 0)throw new q(`rewind: edit mode has no savepoint — nothing to cancel`);let r=n.net.filter(t=>this.read(e,t)!==t.after),i=new Set(r.map(IK)),a=n.net.filter(e=>!i.has(IK(e))),o=BK(XK(JK(t,n),i));if(this.apply(e,a,`before`,`rewind`,{past:o,future:[],savepoint:{at:o.length,net:[],below:[]}}),r.length>0)throw new q(`rewind: ${r.map(QK).join(`, `)} changed since edit mode opened — kept as it is; everything else edit mode changed was put back`);return a}redo(e){let t=this.history(e),{past:n,future:r}=t,i=r.at(-1);if(i===void 0)throw new q(`redo: nothing to redo`);let a=[...n,i],o=BK(a);return this.apply(e,i,`after`,`redo`,{past:o,future:r.slice(0,-1),...HK(t.savepoint,a.length-o.length,i)}),i}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(IK)),{past:n,future:i,savepoint:a}=this.history(e);throw this.put(e,{past:XK(n,t),future:XK(i,t),...a!==void 0&&{savepoint:{at:XK([...n,...[...i].reverse()].slice(0,a.at),t).length,net:a.net.filter(e=>!t.has(IK(e))),below:XK(a.below,t)}}}),new q(`${r}: ${o.map(QK).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):PG(t.file)}write(e,t,n){t.kind===`file`?FG(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||t.savepoint!==void 0)&&n.set(e,t);n.size>32||RK(n)>PK;){let[e,t]=n.entries().next().value;n.size>1?n.delete(e):t.past.length+t.future.length>0?n.set(e,zK(t)):(this.logger(`warn`,`settings-history: edit mode's changes for session ${e} exceed ${PK} bytes; cancel is no longer available`),n.delete(e))}this.storage.save(Object.fromEntries(n)),this.state=n}};function RK(e){let t=0;for(let{past:n,future:r,savepoint:i}of e.values())for(let e of[...n,...r,...i===void 0?[]:[i.net,...i.below]])for(let n of e)t+=(n.before?.length??0)+(n.after?.length??0);return t}function zK({past:e,future:t,savepoint:n}){return e.length>0?{past:e.slice(1),future:t,...HK(n,1,[])}:{past:e,future:t.slice(1),...HK(n,0,[])}}function BK(e){return e.slice(-50)}const VK=e=>e===wk.member;function HK(e,t,n){return e===void 0?{}:{savepoint:{at:Math.max(0,e.at-t),net:UK(e.net,n),below:e.below}}}function UK(e,t){let n=new Map(e.map(e=>[IK(e),e]));for(let e of t){let t=n.get(IK(e));n.set(IK(e),t===void 0?e:{...t,after:e.after})}return[...n.values()].filter(e=>e.before!==e.after)}const WK=e=>e.map(e=>({...e,before:e.after,after:e.before}));function GK(e,t){let n=[...e.past,t],r=BK(n),{savepoint:i}=e,a=i===void 0?0:Math.max(0,i.at-e.past.length);return{past:r,future:[],...HK(i&&{at:Math.min(i.at,e.past.length),net:i.net,below:[...KK(e.future,a),...i.below]},n.length-r.length,t)}}function KK(e,t){let n=Math.min(t,e.length);return e.slice(e.length-n).reverse()}function qK(e,t){return{past:e.past.slice(0,-1),future:BK([...e.future,t]),...HK(e.savepoint,0,WK(t))}}function JK(e,t){let{past:n,future:r}=e,i=n.slice(0,t.at);return[...i,...KK(r,t.at-i.length),...t.below]}function YK(e,t){if(VK(t.after)&&!VK(t.before))return{...e,savepoint:{at:e.past.length,net:[],below:[]}};if(!VK(t.after)&&VK(t.before)){let{past:t,future:n}=e;return{past:t,future:n}}return e}function XK(e,t){return e.map(e=>e.filter(e=>!t.has(IK(e)))).filter(e=>e.length>0)}function ZK(e){return e.map(QK).join(`, `)}function QK(e){return e.kind===`session`?`session setting "${e.key}"`:e.file}function $K(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 eq(e){return Array.isArray(e)&&e.every(e=>Array.isArray(e)&&e.every($K))}function tq(e){if(typeof e!=`object`||!e)return!1;let t=e;return Number.isInteger(t.at)&&t.at>=0&&Array.isArray(t.net)&&t.net.every($K)&&eq(t.below)}function nq(e){if(typeof e!=`object`||!e)return!1;let t=e;return eq(t.past)&&eq(t.future)&&(t.savepoint===void 0||tq(t.savepoint))}function rq(e,t){let n=e=>e.kind===`file`||NK(e.key)?!0:(t.add(e.key),!1),r=e=>e.map(e=>e.filter(n)).filter(e=>e.length>0),{savepoint:i}=e,a=r(e.past),o=r(e.future);return i===void 0?{past:a,future:o}:{past:a,future:o,savepoint:{at:r(e.past.slice(0,i.at)).length,net:i.net.filter(n),below:r(i.below)}}}function iq(e,t){return{load:()=>{let n;try{n=s.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(nq)){let n=new Set,r=Object.fromEntries(Object.entries(e).map(([e,t])=>[e,rq(t,n)]));return n.size>0&&t(`warn`,`settings-history load: dropped the changes to ${[...n].map(e=>`"${e}"`).join(`, `)}, no longer a setting`),r}}catch{}return t(`warn`,`settings-history load: unexpected shape, starting empty`),{}},save:n=>{try{s.mkdirSync(v.dirname(e),{recursive:!0}),Ve(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)}}}}const aq=e=>!NK(e)&&!jj(e)&&e!==`update.dismissed`;var oq=class{past=new Map;depth(e,t,n){return this.restorable(e,t,n).length}restorable(e,t,n){let r=new Map,i=n=>r.has(n)?r.get(n):t.get(e,n),a=[];for(let t of[...this.past.get(e)??[]].reverse())if(t.every(e=>i(e.key)===e.after&&(e.before===null||n.validate(e.key,e.before).ok))){a.unshift(t);for(let e of t)r.set(e.key,e.before)}return a}begin(e){let t=new Map;return{sessionState:TG(e,aq,(e,n,r,i)=>{let a=t.get(e)??new Map,o=a.get(n);a.set(n,{key:n,before:o?o.before:r,after:i}),t.set(e,a)}),commit:()=>{for(let[e,n]of t){let t=[...n.values()].filter(e=>e.before!==e.after);t.length>0&&this.push(e,t)}t.clear()}}}back(e,t,n){let r=this.past.get(e)??[],i=this.restorable(e,t,n),a=i.at(-1),o=r.length-i.length;if(a===void 0)throw this.put(e,i),new q(`back: nothing to go back to${o>0?` (${o} step(s) over a view since gone, discarded)`:``}`);return(0,Hv.runInAction)(()=>{let n=a.flatMap(({key:e,before:t})=>t===null?[]:[{key:e,value:t}]);n.length>0&&t.setBatch(e,n);for(let{key:n,before:r}of a)r===null&&t.clear(e,n)}),this.put(e,i.slice(0,-1)),{step:a,discarded:o}}push(e,t){let n=this.past.get(e)??[];this.put(e,[...n,t].slice(-20))}put(e,t){for(this.past.delete(e),t.length>0&&this.past.set(e,t);this.past.size>32;)this.past.delete(this.past.keys().next().value)}};const sq=`click.error`;function cq(e,t,n,r){let i={text:n,at:r,answered:!1};e.set(t,sq,JSON.stringify(i))}function lq(e,t,n){let r=uq(e,t);!(r?.at===n.at&&r.text===n.text)||r.answered||e.set(t,sq,JSON.stringify({...r,answered:!0}))}function uq(e,t){let n=e.get(t,sq);return n===null?null:fq(n)}function dq(e,t,n,r){let i=uq(e,t);return i===null?{kind:`none`}:n<i.at+5?{kind:`held`,error:i}:r===`request`&&!i.answered?{kind:`owed`,error:i}:{kind:`over`}}function fq(e){let t;try{t=JSON.parse(e)}catch{return null}if(typeof t!=`object`||!t)return null;let{text:n,at:r,answered:i}=t;return typeof n==`string`&&typeof r==`number`&&(i===void 0||typeof i==`boolean`)?{text:n,at:r,answered:i===!0}:null}function pq(e,t,n){let r=()=>{let r;try{r=s.readFileSync(e,`utf8`)}catch(n){return n.code===`ENOENT`?{kind:`ok`,value:t}:{kind:`failed`,reason:`${e}: ${n.message}`}}let i;try{i=JSON.parse(r)}catch(t){return{kind:`failed`,reason:`${e} is not JSON: ${t.message}`}}let a=n(i);return a.kind===`ok`?a:{kind:`failed`,reason:`${e} ${a.reason}`}};return{read:r,update:t=>{let n=r();if(n.kind===`failed`)return n;let i=t(n.value);return i!==n.value&&Ve(e,`${JSON.stringify(i,null,2)}\n`),{kind:`ok`,value:i}}}}const mq=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function hq(e){let t=e=>({kind:`failed`,reason:e});if(!mq(e))return t(`is not an object`);for(let[n,r]of Object.entries(e)){if(!mq(r))return t(`holds ${JSON.stringify(n)} as something other than its sightings`);for(let[e,n]of Object.entries(r))if(!xA.includes(n))return t(`marks ${JSON.stringify(e)} ${JSON.stringify(n)}, not ${xA.join(` or `)}`)}return{kind:`ok`,value:e}}function gq(e,t,n,r){return{...e,[t]:{...e[t],[n]:r}}}const _q=(e=v.join(Ge(),`doctor-marks.json`))=>pq(e,{},hq),vq=e=>Array.isArray(e)&&e.every(e=>typeof e==`string`)?{kind:`ok`,value:e}:{kind:`failed`,reason:`is not a list of terminals`},yq=(e,t)=>e.includes(t)?e:[...e,t],bq=(e=v.join(Ge(),`doctor-clicked-terminals.json`))=>pq(e,[],vq);var xq=class extends Error{constructor(e){super(`the doctor looked at ${e} less than a second ago — click again`),this.name=`DoctorBusy`}};const Sq={pullRequests:e=>fB(e).showPullRequest===!0,rateLimits:e=>dB(e,`block`)||dB(e,`weekly`),memento:e=>dB(e,`memento`)};function Cq(e,t){let n=new Map;for(let r of v_(ov(e,t).node)){if(r.kind!==`segment`)continue;let e=n.get(r.name)??[];r.when&&e.push(r.when),n.set(r.name,e)}let r=[...n.keys()].filter(t=>k_(e.segments[t])===`fail`),i=new Map(r.map(t=>[t,sB(e,t,n.get(t))])),a=e=>r.filter(t=>Sq[e](i.get(t)));return{pullRequests:a(`pullRequests`),rateLimits:a(`rateLimits`),memento:a(`memento`)}}
|
|
199
199
|
/*!
|
|
200
200
|
* Copyright (c) Squirrel Chat et al., All rights reserved.
|
|
201
201
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
@@ -223,9 +223,9 @@ print(json.dumps({"ceiling": "off" if ceiling == math.inf else ceiling,
|
|
|
223
223
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
224
224
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
225
225
|
*/
|
|
226
|
-
function
|
|
226
|
+
function wq(e,t){let n=e.slice(0,t).split(/\r?\n/);return[n.length,n.pop().length+1]}function Tq(e,t,n){let r=e.split(/\r?\n/),i=``,a=(Math.log10(t+1)|0)+1;for(let e=t-1;e<=t+1;e++){let o=r[e-1];o&&(i+=e.toString().padEnd(a,` `),i+=`: `,i+=o,i+=`
|
|
227
227
|
`,e===t&&(i+=` `.repeat(a+n+2),i+=`^
|
|
228
|
-
`))}return i}var $=class e extends Error{line;column;codeblock;constructor(e,t){let[n,r]=
|
|
228
|
+
`))}return i}var $=class e extends Error{line;column;codeblock;constructor(e,t){let[n,r]=wq(t.toml,t.ptr),i=Tq(t.toml,n,r);super(`Invalid TOML document: ${e}\n\n${i}`,t),this.line=n,this.column=r,this.codeblock=i}static x(t,n,r){throw new e(t,{toml:n.s,ptr:r??n.p})}};
|
|
229
229
|
/*!
|
|
230
230
|
* Copyright (c) Squirrel Chat et al., All rights reserved.
|
|
231
231
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
@@ -253,7 +253,7 @@ function gq(e,t){let n=e.slice(0,t).split(/\r?\n/);return[n.length,n.pop().lengt
|
|
|
253
253
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
254
254
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
255
255
|
*/
|
|
256
|
-
function
|
|
256
|
+
function Eq(e){let t=e.p,n=e.s.charCodeAt(e.p++),r=n,i=n===39,a=n===e.s.charCodeAt(e.p)&&n===e.s.charCodeAt(e.p+1);a&&((n=e.s.charCodeAt(e.p+=2))===10?e.p++:n===13&&e.s.charCodeAt(e.p+1)===10&&(e.p+=2));let o=``,s=e.p,c=0;for(;e.p<e.s.length;e.p++)if(n=e.s.charCodeAt(e.p),a&&(n===10||n===13&&e.s.charCodeAt(e.p+1)===10))c&&=3;else if(n<32&&n!==9||n===127)$.x(`control characters are not allowed in strings`,e);else if((!c||c===3)&&n===r&&(!a||e.s.charCodeAt(e.p+1)===r&&e.s.charCodeAt(e.p+2)===r)){if(a&&(e.s.charCodeAt(e.p+3)===r&&e.p++,e.s.charCodeAt(e.p+3)===r&&e.p++),!c){let t=e.s.slice(s,e.p);o=o?o+t:t}return e.p+=a?3:1,o}else if(!c)!i&&n===92&&(o+=e.s.slice(s,s=e.p),c=1);else if(c===1)if(n===120||n===117||n===85){let t=e.p++-1,r=0,i=n===120?2:n===117?4:8;for(let t=0;t<i;t++,e.p++){let t=e.s.charCodeAt(e.p),n=t>=48&&t<=57?t-48:t>=65&&t<=70?t-65+10:t>=97&&t<=102?t-97+10:-1;n<0&&$.x(`invalid non-hex character in unicode escape`,e),r=r<<4|n}(r<0||r>1114111||r>=55296&&r<=57343)&&$.x(`invalid unicode escape`,e,t),o+=String.fromCodePoint(r),s=e.p--,c=0}else a&&(n===32||n===9)?c=2:(n===98?o+=`\b`:n===116?o+=` `:n===110?o+=`
|
|
257
257
|
`:n===102?o+=`\f`:n===114?o+=`\r`:n===101?o+=`\x1B`:n===34?o+=`"`:n===92?o+=`\\`:$.x(`unrecognised escape sequence`,e),s=e.p+1,c=0);else n!==32&&n!==9&&(c===2&&$.x(`invalid escape: only line-ending whitespace may be escaped`,e,s),c=+(!i&&n===92),s=e.p);$.x(`unfinished string`,e,t)}
|
|
258
258
|
/*!
|
|
259
259
|
* Copyright (c) Squirrel Chat et al., All rights reserved.
|
|
@@ -282,7 +282,7 @@ function vq(e){let t=e.p,n=e.s.charCodeAt(e.p++),r=n,i=n===39,a=n===e.s.charCode
|
|
|
282
282
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
283
283
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
284
284
|
*/
|
|
285
|
-
let
|
|
285
|
+
let Dq=/^(\d{4}-\d{2}-\d{2})?[Tt ]?(?:(\d{2}):\d{2}(?::\d{2}(?:\.\d+)?)?)?(Z|z|[-+]\d{2}:\d{2})?$/i;var Oq=class e extends Date{#e=!1;#t=!1;#n=null;constructor(e,t,n){let r=!0,i=!0,a=`Z`,o;if(typeof e==`string`)if(t)prep:{if(t<3){if(+e.slice(11,13)>23){e=``;break prep}t===2?(a=null,e+=`Z`):(o=e.charCodeAt(e.length-1))!==90&&o!==122&&(a=e.slice(e.length-6)),n&&(e=e.slice(0,10)+`T`+e.slice(11))}else t===4&&(e=+e.slice(0,2)>23?``:`0000-01-01T${e}Z`);r=t!==4,i=t!==3}else{let t=e.match(Dq);t?(t[1]||(r=!1,e=`0000-01-01T${e}`),i=!!t[2],i&&e[10]===` `&&(e=e.replace(` `,`T`)),t[2]&&+t[2]>23?e=``:(a=t[3]||null,!a&&i&&(e+=`Z`))):e=``}super(e),isNaN(this.getTime())||(this.#e=r,this.#t=i,this.#n=a)}isDateTime(){return this.#e&&this.#t}isLocal(){return!this.#e||!this.#t||!this.#n}isDate(){return this.#e&&!this.#t}isTime(){return this.#t&&!this.#e}isValid(){return this.#e||this.#t}toISOString(){let e=super.toISOString();if(this.isDate())return e.slice(0,10);if(this.isTime())return e.slice(11,23);if(this.#n===null)return e.slice(0,-1);if(this.#n===`Z`||this.#n===`z`)return e;let t=this.#n.slice(1,3)*60+ +this.#n.slice(4,6);return t=this.#n[0]===`-`?t:-t,new Date(this.getTime()-t*6e4).toISOString().slice(0,-1)+this.#n}static wrapAsOffsetDateTime(t,n=`Z`){let r=new e(t);return r.#n=n,r}static wrapAsLocalDateTime(t){let n=new e(t);return n.#n=null,n}static wrapAsLocalDate(t){let n=new e(t);return n.#t=!1,n.#n=null,n}static wrapAsLocalTime(t){let n=new e(t);return n.#e=!1,n.#n=null,n}};
|
|
286
286
|
/*!
|
|
287
287
|
* Copyright (c) Squirrel Chat et al., All rights reserved.
|
|
288
288
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
@@ -310,7 +310,7 @@ let yq=/^(\d{4}-\d{2}-\d{2})?[Tt ]?(?:(\d{2}):\d{2}(?::\d{2}(?:\.\d+)?)?)?(Z|z|[
|
|
|
310
310
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
311
311
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
312
312
|
*/
|
|
313
|
-
function
|
|
313
|
+
function kq(e,t=10){return t===16?e>47&&e<58||e>64&&e<71||e>96&&e<103:e>47&&e<48+t}function Aq(e,t){return e===32||e===9||e===10||e===13||t&&(e===t||e===44)||e===35}function jq(e,t){let n=e.p,r=e.s.charCodeAt(e.p);if(r===91||r===123){e.d--||$.x(`document contains excessively nested structures. aborting.`,e);let t=r===91?Hq(e):Vq(e);return e.d++,t}return r===34||r===39?Eq(e):r===116?((e.s.charCodeAt(++e.p)!==114||e.s.charCodeAt(++e.p)!==117||e.s.charCodeAt(++e.p)!==101)&&$.x(`invalid value`,e,n),e.p++,!0):r===102?((e.s.charCodeAt(++e.p)!==97||e.s.charCodeAt(++e.p)!==108||e.s.charCodeAt(++e.p)!==115||e.s.charCodeAt(++e.p)!==101)&&$.x(`invalid value`,e,n),e.p++,!1):r===43||r===45?Mq(e,e.p,e.s.charCodeAt(++e.p),44-r,t):e.s.charCodeAt(e.p+4)===45&&e.s.charCodeAt(e.p+7)===45?Fq(e,r,t):e.s.charCodeAt(e.p+2)===58?Iq(e,r,t):Mq(e,e.p,r,0,t)}function Mq(e,t,n,r,i){let a=n,o=0,s=!1;if(a===105)return(e.s.charCodeAt(++e.p)!==110||e.s.charCodeAt(++e.p)!==102)&&$.x(`invalid value`,e,t),e.p++,(r||1)/0;if(a===110)return(e.s.charCodeAt(++e.p)!==97||e.s.charCodeAt(++e.p)!==110)&&$.x(`invalid value`,e,t),e.p++,NaN;if(a===48){if(++e.p>=e.s.length||Aq(a=e.s.charCodeAt(e.p),i))return e.bi===!0?0n:0;if(!r){if(a===120)return Nq(e,t,16,i);if(a===98)return Nq(e,t,2,i);if(a===111)return Nq(e,t,8,i)}a===46?o=2:a===101||a===69?o=4:$.x(`illegal leading zero`,e,t)}else kq(a)||$.x(`invalid value`,e,t);for(;++e.p<e.s.length&&(a=e.s.charCodeAt(e.p),!Aq(a,i));)o||=1,a===95?(o&1||$.x(`illegal underscore`,e),o+=11,s=!0):o===1&&a===46?o=2:(o===1||o===3)&&(a===101||a===69)?o=4:o===4&&(a===43||a===45)?o=6:kq(a)?o>9?o-=11:o&1||o++:$.x(`illegal character in numeric literal`,e);if(!o){let t=(n-48)*(r||1);return e.bi===!0?BigInt(t):t}o&1||$.x(`unfinished numeric value`,e,t);let c=e.s.slice(t,e.p);return s&&(c=c.replaceAll(`_`,``)),o>1?parseFloat(c):Pq(e,c,10,t)}function Nq(e,t,n,r){let i,a=1;for(;++e.p<e.s.length&&(i=e.s.charCodeAt(e.p),!Aq(i,r));)i===95?(a&1&&$.x(`illegal underscore`,e),a=3):kq(i,n)?a&1&&a--:$.x(`illegal character in numeric literal`,e);a&1&&$.x(`unfinished numeric value`,e);let o=e.s.slice(t+2,e.p);return a&&(o=o.replaceAll(`_`,``)),Pq(e,o,n,t)}function Pq(e,t,n,r){if(e.bi!==!0)int:{let i=parseInt(t,n);if(!Number.isSafeInteger(i)){if(e.bi)break int;$.x(`integer value cannot be represented losslessly`,e,r)}return i}return BigInt(n===10?t:(n===2?`0b`:n===8?`0o`:`0x`)+t)}function Fq(e,t,n){let r=e.p++,i;if(!kq(t)||!kq(e.s.charCodeAt(e.p++))||!kq(e.s.charCodeAt(e.p++))||!kq(e.s.charCodeAt(e.p++)))return Mq(e,e.p=r,t,0,n);if(e.p+=5,kq(e.s.charCodeAt(e.p++))||$.x(`invalid date-time: date part is malformed`,e,r),e.p>=e.s.length||((t=e.s.charCodeAt(e.p))!==32||(i=!0,!kq(e.s.charCodeAt(e.p+1))))&&t!==84&&t!==116)return Lq(e,e.s.slice(r,e.p),3,!1,r);if(e.s.charCodeAt(e.p+=3)!==58&&$.x(`invalid date-time: time part is malformed`,e,r),e.s.charCodeAt(e.p+=3)===58&&(e.p+=3),e.s.charCodeAt(e.p)===46)for(;kq(e.s.charCodeAt(++e.p)););if(t=e.s.charCodeAt(e.p)){if(t===90||t===122)return Lq(e,e.s.slice(r,++e.p),1,i,r,`[+00:00]`);if(t===43||t===45)return Lq(e,e.s.slice(r,e.p+=6),1,i,r,!e.ld&&`[`+e.s.slice(e.p-6,e.p)+`]`)}return Lq(e,e.s.slice(r,e.p),2,i,r)}function Iq(e,t,n){let r=e.p;if(!kq(t)||!kq(e.s.charCodeAt(++e.p)))return Mq(e,--e.p,t,0,n);if(e.s.charCodeAt(e.p+=4)===58&&(e.p+=3),e.s.charCodeAt(e.p)===46)for(;kq(e.s.charCodeAt(++e.p)););return Lq(e,e.s.slice(r,e.p),4,!1,r)}function Lq(e,t,n,r,i,a){if(e.ld){let a=new Oq(t,n,r);return a.isValid()||$.x(`invalid date`,e,i),a}try{switch(a&&(t+=a),n){case 1:return Temporal.ZonedDateTime.from(t);case 2:return Temporal.PlainDateTime.from(t);case 3:return Temporal.PlainDate.from(t);case 4:return Temporal.PlainTime.from(t)}}catch(t){$.x(t instanceof Error?t.message:``+t,e,i)}}
|
|
314
314
|
/*!
|
|
315
315
|
* Copyright (c) Squirrel Chat et al., All rights reserved.
|
|
316
316
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
@@ -338,7 +338,7 @@ function xq(e,t=10){return t===16?e>47&&e<58||e>64&&e<71||e>96&&e<103:e>47&&e<48
|
|
|
338
338
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
339
339
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
340
340
|
*/
|
|
341
|
-
function
|
|
341
|
+
function Rq(e){for(;e.p<e.s.length;e.p++){let t=e.s.charCodeAt(e.p);if(t===10)break;if(t===13&&e.s.charCodeAt(e.p+1)===10){e.p++;break}(t<32&&t!==9||t===127)&&$.x(`control characters are not allowed in comments`,e)}}function zq(e,t,n){let r;for(;e.p<e.s.length;){for(;e.p<e.s.length&&((r=e.s.charCodeAt(e.p))===32||r===9||!t&&(r===10||r===13&&e.s.charCodeAt(e.p+1)===10));)e.p++;if(n||r!==35)break;Rq(e)}}
|
|
342
342
|
/*!
|
|
343
343
|
* Copyright (c) Squirrel Chat et al., All rights reserved.
|
|
344
344
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
@@ -366,7 +366,7 @@ function Aq(e){for(;e.p<e.s.length;e.p++){let t=e.s.charCodeAt(e.p);if(t===10)br
|
|
|
366
366
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
367
367
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
368
368
|
*/
|
|
369
|
-
function
|
|
369
|
+
function Bq(e,t=61){let n,r=0,i=[],a,o=e.s.charCodeAt(n=e.p);do if(o===t)return r||$.x(`unexpected end of key`,e),r===1&&i.push(e.s.slice(a,e.p)),e.p++,i;else o===46?(r||$.x(`illegal empty bare key`,e),r===1&&i.push(e.s.slice(a,e.p)),r=0):!r&&(o===34||o===39)?(o===e.s.charCodeAt(e.p+1)&&o===e.s.charCodeAt(e.p+2)&&$.x(`illegal quoted key: multiline strings are not allowed`,e),i.push(Eq(e)),r=2,e.p--):o===32||o===9?r===1&&(i.push(e.s.slice(a,e.p)),r=2):r===2||o<48&&o!==45||o>57&&o<65||o>90&&o<97&&o!==95||o>122?$.x(`illegal character in key`,e):r||(r=1,a=e.p);while(o=e.s.charCodeAt(++e.p));$.x(`incomplete key-value: cannot find end of key`,e,n)}function Vq(e){let t=e.p++,n=Object.create(null),r=new Set,i;for(;e.p<e.s.length;){if(zq(e),(i=e.s.charCodeAt(e.p))===125)return e.p++,n;let t,a=n,o=!1,s=e.p,c=Bq(e);for(let n=0;n<c.length;n++){n&&(a=o?a[t]:a[t]=Object.create(null)),t=c[n],(o=Object.hasOwn(a,t))&&(typeof a[t]!=`object`||r.has(a[t]))&&$.x(`trying to redefine an already defined value`,e,s);let i=t===`__proto__`;if(e.uk&&(i||t===`constructor`)){a=e.uk!==1&&$.x(`document contains an unsafe property`,e,s);break}!o&&i&&Object.defineProperty(a,t,{enumerable:!0,configurable:!0,writable:!0})}o&&$.x(`trying to redefine an already defined value`,e,s),zq(e,!0,!0);let l=jq(e,125);if(a&&typeof(a[t]=l)==`object`&&r.add(l),zq(e),(i=e.s.charCodeAt(e.p++))===125)return n;i!==44&&$.x(`expected comma or end of structure`,e,e.p-1)}$.x(`unfinished table`,e,t)}function Hq(e){let t=e.p++,n=[],r;for(;e.p<e.s.length;){if(zq(e),(r=e.s.charCodeAt(e.p))===93)return e.p++,n;if(n.push(jq(e,93)),zq(e),(r=e.s.charCodeAt(e.p++))===93)return n;r!==44&&$.x(`expected comma or end of structure`,e,e.p-1)}$.x(`unfinished array`,e,t)}
|
|
370
370
|
/*!
|
|
371
371
|
* Copyright (c) Squirrel Chat et al., All rights reserved.
|
|
372
372
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
@@ -394,7 +394,7 @@ function Mq(e,t=61){let n,r=0,i=[],a,o=e.s.charCodeAt(n=e.p);do if(o===t)return
|
|
|
394
394
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
395
395
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
396
396
|
*/
|
|
397
|
-
function
|
|
397
|
+
function Uq(e,t,n,r,i){let a=n,o=r,s,c=!1,l;for(let n=0;n<t.length;n++){if(n){if(a=c?a[s]:a[s]=Object.create(null),o=(l=o[s]).c,i===0&&(l.t===1||l.t===2))return null;if(l.t===2){let e=a.length-1;a=a[e],o=o[e].c}}if(s=t[n],(c=Object.hasOwn(a,s))&&o[s]?.t===0&&o[s]?.d)return null;if(!c){let r=s===`__proto__`;if(e.uk&&(r||s===`constructor`))return!1;r&&(Object.defineProperty(a,s,{enumerable:!0,configurable:!0,writable:!0}),Object.defineProperty(o,s,{enumerable:!0,configurable:!0,writable:!0})),o[s]={t:n<t.length-1&&i===2?3:i,d:!1,i:0,c:Object.create(null)}}}if(l=o[s],l.t!==i&&!(i===1&&l.t===3)||(i===2&&(l.d||(l.d=!0,a[s]=[]),a[s].push(a=Object.create(null)),l.c[l.i++]=l={t:1,d:!1,i:0,c:Object.create(null)}),l.d))return null;if(l.d=!0,i===1)a=c?a[s]:a[s]=Object.create(null);else if(i===0&&c)return null;return[s,a,l.c]}function Wq(e,t,n){(t===null||e.uk===2)&&$.x(t===null?`trying to redefine an already defined table or value`:`document contains an unsafe property`,e,n)}function Gq(e,t={}){let n={s:e,p:0,d:t.maxDepth??1e3,bi:t.integersAsBigInt??!1,ld:t.useLegacyDate??!0,uk:t.unsafeKeyBehaviour===`throw`?2:+(t.unsafeKeyBehaviour===`drop`)},r=Object.create(null),i=Object.create(null),a,o=!1,s=r,c=i;for(e.charCodeAt(0)===65279&&n.p++,zq(n);n.p<e.length;){if(e.charCodeAt(n.p)===91){let t=e.charCodeAt(++n.p)===91;a=n.p+=+t,o=!1;let l=Bq(n,93);t&&(e.charCodeAt(n.p)!==93&&$.x(`expected end of table array declaration`,n),n.p++);let u=Uq(n,l,r,i,t?2:1);u?(c=u[2],s=u[1]):(Wq(n,u,a),o=!0)}else{a=n.p;let e=Uq(n,Bq(n),s,c,0);!e&&!o&&Wq(n,e,a),zq(n,!0,!0);let t=jq(n,void 0);e&&!o&&(e[1][e[0]]=t)}zq(n,!0),n.p<e.length&&(a=e.charCodeAt(n.p))!==10&&(a!==13||e.charCodeAt(n.p+1)!==10)&&$.x(`each key-value declaration must be followed by an end-of-line`,n),zq(n)}return r}``.isWellFormed;
|
|
398
398
|
/*!
|
|
399
399
|
* Copyright (c) Squirrel Chat et al., All rights reserved.
|
|
400
400
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
@@ -422,7 +422,7 @@ function Fq(e,t,n,r,i){let a=n,o=r,s,c=!1,l;for(let n=0;n<t.length;n++){if(n){if
|
|
|
422
422
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
423
423
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
424
424
|
*/
|
|
425
|
-
const
|
|
425
|
+
const Kq=e=>e.codePointAt(0).toString(16).toUpperCase(),qq=String.raw`
|
|
426
426
|
ObjC.import("AppKit");
|
|
427
427
|
ObjC.import("CoreText");
|
|
428
428
|
function lacksOf(font, points) {
|
|
@@ -469,44 +469,44 @@ function run(argv) {
|
|
|
469
469
|
: iterm(argv[1], points),
|
|
470
470
|
);
|
|
471
471
|
}
|
|
472
|
-
`;function
|
|
473
|
-
`).filter(e=>e!==``).map(e=>{let t=e.indexOf(` `);return t<=0?null:{family:e.slice(0,t),ranges:e.slice(t+1).split(/\s+/).filter(e=>e!==``).map(e=>{let[t,n=t]=e.split(`-`).map(e=>parseInt(e,16));return[t,n]})}});if(n.length===0||n.some(e=>e===null))return{kind:`failed`,reason:`fc-match answered ${JSON.stringify(e.slice(0,200))}, not families and their charsets`};let r=n.flatMap(e=>e.ranges),i=[...t].filter(e=>{let t=e.codePointAt(0);return!r.some(([e,n])=>e<=t&&t<=n)});return{kind:`ok`,value:{font:n[0].family,lacks:i}}}const
|
|
474
|
-
`,`:family=${
|
|
475
|
-
`)){let e=/^\s*(\d+)\s+(\d+)\s+(.*)$/.exec(t);if(e===null)continue;let r=e[3].trim();n.set(Number(e[1]),{ppid:Number(e[2]),name:r.slice(r.lastIndexOf(`/`)+1)})}if(!n.has(t))return{kind:`failed`,reason:`process ${t} is not running`};let r=new Set;for(let e=n.get(t);e!==void 0;e=n.get(e.ppid)){if(
|
|
476
|
-
`)){let e=/^\s*(\d+)\s+(\d+)\s+(\d+)\s+(\w{3} \w{3}\s+\d+ [\d:]{8} \d{4})\s+.* (\/.*) daemon$/.exec(r);e===null||!t(e[5])||n.push({pid:Number(e[1]),ppid:Number(e[2]),rss:Number(e[3])*1024,started:`${e[4].replace(/\s+/g,` `)} UTC`})}return n.filter(e=>!n.some(t=>t.ppid===e.pid))}function
|
|
472
|
+
`;function Jq(e){let t=Re({bin:`osascript`,args:[`-l`,`JavaScript`,`-e`,qq,...e],timeoutMs:3e3,category:`doctor.font`});if(!t.ok){if(t.reason===`rate-limited`)throw new xq(`the font`);return{kind:`failed`,reason:`osascript failed (${t.error??`${t.reason}: ${t.stderr.trim()}`})`}}let n;try{n=JSON.parse(t.stdout)}catch{return{kind:`failed`,reason:`osascript answered ${JSON.stringify(t.stdout.trim())}, not JSON`}}return typeof n==`object`&&n&&`error`in n?{kind:`failed`,reason:n.error}:{kind:`ok`,value:n}}const Yq=e=>e.map(e=>String.fromCodePoint(parseInt(e,16))),Xq=e=>[...e].map(Kq).join(`,`);function Zq(e,t){let n=Jq([`font`,e.kind,e.name,Xq(t)]);if(n.kind===`failed`)return n;let{lacks:r}=n.value;return{kind:`ok`,value:{font:e.name,lacks:r===null?null:Yq(r)}}}function Qq(e,t){if(e.font===null)return{kind:`failed`,reason:`iTerm2 profile ${JSON.stringify(e.name)} names no font`};let n=`iTerm2 profile ${JSON.stringify(e.name)}`+(e.nonAscii?`, its non-ASCII font`:``)+(e.powerline?`, built-in Powerline glyphs on`:``),r=e.lacks===null||!e.powerline?e.lacks:e.lacks.filter(e=>!sA(t,e));return{kind:`ok`,value:{font:e.font,from:n,lacks:r}}}const $q=e=>e.kind===`ok`&&e.value.lacks!==null&&e.value.lacks.length===0;function eJ(e,t,n){if(e.length===0)return{kind:`failed`,reason:t===null?`iTerm2 has no profiles in its preferences`:`iTerm2 has no profile named ${JSON.stringify(t)}`};let r=e.map(e=>Qq(e,n));if(t!==null)return r[0];let i=r.find(e=>!$q(e));return i===void 0?{kind:`ok`,value:{font:[...new Set(r.flatMap(e=>e.kind===`ok`?[e.value.font]:[]))].join(`, `),from:`every iTerm2 profile, since the session does not say which draws the bar`,lacks:[]}}:i.kind===`failed`?i:{kind:`ok`,value:{...i.value,from:`${i.value.from}, one of its profiles, and the session does not say which draws the bar`}}}function tJ(e,t,n){if(process.platform!==`darwin`)return{kind:`failed`,reason:`iTerm2 runs only on macOS`};let r=t.ITERM_PROFILE??null,i=Jq([`iterm`,r??``,Xq(n)]);return i.kind===`failed`?i:eJ(i.value.profiles.map(e=>({...e,lacks:e.lacks===null?null:Yq(e.lacks)})),r,e)}function nJ(e,t){let n=e.split(`
|
|
473
|
+
`).filter(e=>e!==``).map(e=>{let t=e.indexOf(` `);return t<=0?null:{family:e.slice(0,t),ranges:e.slice(t+1).split(/\s+/).filter(e=>e!==``).map(e=>{let[t,n=t]=e.split(`-`).map(e=>parseInt(e,16));return[t,n]})}});if(n.length===0||n.some(e=>e===null))return{kind:`failed`,reason:`fc-match answered ${JSON.stringify(e.slice(0,200))}, not families and their charsets`};let r=n.flatMap(e=>e.ranges),i=[...t].filter(e=>{let t=e.codePointAt(0);return!r.some(([e,n])=>e<=t&&t<=n)});return{kind:`ok`,value:{font:n[0].family,lacks:i}}}const rJ=e=>e.replace(/[\\:,=-]/g,`\\$&`);function iJ(e,t){let n=Re({bin:`fc-match`,args:[`--sort`,`--format`,`%{family[0]} %{charset}
|
|
474
|
+
`,`:family=${rJ(e)}`],timeoutMs:3e3,category:`doctor.font`});if(!n.ok){if(n.reason===`rate-limited`)throw new xq(`the font`);return{kind:`failed`,reason:`fc-match failed (${n.error??`${n.reason}: ${n.stderr.trim()}`})`}}return nJ(n.stdout,t)}function aJ(e,t){return process.platform===`darwin`?Zq(e,t):iJ(e.name,t)}function oJ(e,t){let n=t||v.join(e,`.config`);return[v.join(n,`alacritty`,`alacritty.toml`),v.join(n,`alacritty.toml`),v.join(e,`.config`,`alacritty`,`alacritty.toml`),v.join(e,`.alacritty.toml`)]}function sJ(e){return e===`darwin`?`Menlo`:`monospace`}const cJ=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function lJ(e){let t=cJ(e.font)?e.font:{},n=cJ(t.normal)?t.normal:{},r=(cJ(e.general)?e.general:{}).import??e.import??[];return{family:typeof n.family==`string`?n.family:null,imports:Array.isArray(r)?r.filter(e=>typeof e==`string`):[]}}function uJ(e,t,n){let r;try{r=s.readFileSync(e,`utf8`)}catch(t){return{kind:`failed`,reason:`cannot read ${e}: ${t.message}`}}let i;try{i=Gq(r)}catch(t){return{kind:`failed`,reason:`cannot parse ${e}: ${t.message}`}}let a=lJ(i);if(a.family!==null)return{kind:`ok`,value:{family:a.family,from:e}};if(n===5)return{kind:`ok`,value:null};let o=null;for(let r of a.imports){let i=r.startsWith(`~/`)?v.join(t,r.slice(2)):v.resolve(v.dirname(e),r);if(!s.existsSync(i))continue;let a=uJ(i,t,n+1);if(a.kind===`failed`)return a;o=a.value??o}return{kind:`ok`,value:o}}function dJ(e,t){let n=w.homedir(),r=oJ(n,e.XDG_CONFIG_HOME).find(e=>s.existsSync(e)),i=r===void 0?{kind:`ok`,value:null}:uJ(r,n,0);if(i.kind===`failed`)return i;let a=i.value?.family??sJ(process.platform),o=i.value?.from??(r===void 0?`Alacritty's default, no config file`:`Alacritty's default, ${r} sets none`),c=aJ({kind:`family`,name:a},t);if(c.kind===`failed`)return c;let{font:l,lacks:u}=c.value;return{kind:`ok`,value:{font:l,from:l===a?o:`${o}; ${a} as fontconfig matches it`,lacks:u}}}const fJ={iterm2:tJ,alacritty:(e,t,n)=>dJ(t,n)};function pJ(e,t,n){return fJ[e.name](e.version,t,n)}function mJ(e){let t=e?.through;return typeof t==`string`||t===null?{kind:`ok`,value:{through:t}}:{kind:`failed`,reason:`names no post-mortem read`}}const hJ=(e=v.join(Ge(),`doctor-post-mortems-read.json`))=>pq(e,{through:null},mJ);function gJ(e){try{return{kind:`ok`,value:e()}}catch(e){return{kind:`failed`,reason:e instanceof Error?e.message:String(e)}}}const _J={realpath:e=>gJ(()=>s.realpathSync(e)),checkoutOf:Zg,digest:e=>gJ(()=>Yg(e)),nativeShipped:ra(process.platform,process.arch)};function vJ(e,t,n){let r=e.realpath(t);if(r.kind===`failed`)return{kind:`failed`,reason:`the daemon's bundle ${t} cannot be resolved: ${r.reason}`};let i=e.checkoutOf(r.value);return{kind:`ok`,value:{daemon:{bundle:r.value,checkout:i===null?null:{root:i,rustSource:e.digest(v.join(i,`rust-client`))}},nativeShipped:e.nativeShipped,clients:n.map(t=>t===null?{kind:`unreported`}:{kind:`reported`,client:t.kind,bundle:e.realpath(t.bundle),source:t.source})}}}function yJ(e){let t=e.replace(/\n$/,``);if(t===` `)return{kind:`ok`,value:null};let n=t.split(` `),[r,i,a,o,s]=n;return n.length!==5||!/^[1-9]\d*$/.test(o)||!/^[01]$/.test(s)?{kind:`failed`,reason:`tmux answered ${JSON.stringify(e)}, not the five fields asked for`}:{kind:`ok`,value:{features:r.split(`,`).filter(e=>e!==``),termtype:i,termname:a,pid:Number(o),utf8:s===`1`}}}const bJ=/^(sshd|mosh-server)\b/;function xJ(e,t){let n=new Map;for(let t of e.split(`
|
|
475
|
+
`)){let e=/^\s*(\d+)\s+(\d+)\s+(.*)$/.exec(t);if(e===null)continue;let r=e[3].trim();n.set(Number(e[1]),{ppid:Number(e[2]),name:r.slice(r.lastIndexOf(`/`)+1)})}if(!n.has(t))return{kind:`failed`,reason:`process ${t} is not running`};let r=new Set;for(let e=n.get(t);e!==void 0;e=n.get(e.ppid)){if(bJ.test(e.name))return{kind:`ok`,value:!0};if(r.has(e.ppid))break;r.add(e.ppid)}return{kind:`ok`,value:!1}}function SJ(e){let t=Re({bin:`ps`,args:[`-A`,`-o`,`pid=,ppid=,comm=`],timeoutMs:2e3,category:`doctor.process`});if(!t.ok){if(t.reason===`rate-limited`)throw new xq(`the processes`);return{kind:`failed`,reason:`ps failed (${t.error??`${t.reason}: ${t.stderr.trim()}`})`}}return xJ(t.stdout,e)}const CJ=/^(.*)\/(?:dist\/index\.mjs|src\/index\.ts|bin\/cc-candybar)$/;function wJ(e,t){let n=[];for(let r of e.split(`
|
|
476
|
+
`)){let e=/^\s*(\d+)\s+(\d+)\s+(\d+)\s+(\w{3} \w{3}\s+\d+ [\d:]{8} \d{4})\s+.* (\/.*) daemon$/.exec(r);e===null||!t(e[5])||n.push({pid:Number(e[1]),ppid:Number(e[2]),rss:Number(e[3])*1024,started:`${e[4].replace(/\s+/g,` `)} UTC`})}return n.filter(e=>!n.some(t=>t.ppid===e.pid))}function TJ(e){let t;try{t=s.realpathSync(e)}catch{return!1}let n=CJ.exec(t)?.[1];return n!==void 0&&s.existsSync(v.join(n,`bin`,`cc-candybar`))}function EJ(){let e=Re({bin:`ps`,args:[`-U`,String(w.userInfo().uid),`-ww`,`-o`,`pid=,ppid=,rss=,lstart=,args=`],timeoutMs:2e3,category:`doctor.daemons`,env:{...process.env,LC_ALL:`C`,TZ:`UTC`}});return e.ok?{kind:`ok`,value:wJ(e.stdout,TJ)}:{kind:`failed`,reason:`ps failed (${e.error??`${e.reason}: ${e.stderr.trim()}`})`}}function DJ(e){let t=RH(e,`doctor.tmux`,[`display`,`-p`,`-t`,e.pane,`#{client_termfeatures} #{client_termtype} #{client_termname} #{client_pid} #{client_utf8}`]);if(t.kind===`rate-limited`)throw new xq(`tmux`);return t.kind===`failed`?{kind:`failed`,reason:t.reason}:yJ(t.stdout)}function OJ(e){return{probeTmux:DJ,remoteLogin:SJ,fontInUse:pJ,loadConfig:e,managedSettingsDir:process.env.CC_CANDYBAR_CLAUDE_MANAGED_DIR??Ui(process.platform),marks:_q(),clicked:bq(),install:_J,daemons:EJ,postMortemsRead:hJ(),forge:NJ,memento:Hz,transcript:AJ}}function kJ(e,t){let n=e.toString(`utf-8`),r=t?0:n.indexOf(`
|
|
477
477
|
`)+1,i=n.lastIndexOf(`
|
|
478
478
|
`)+1,a=0,o=0;for(let e of n.slice(r,i).split(`
|
|
479
|
-
`)){let t=
|
|
480
|
-
`)};return e.error===null?{...t,kind:`loaded`,unused:e.unused}:{...t,kind:`failed`,error:e.error}}function
|
|
481
|
-
`);let i=
|
|
479
|
+
`)){let t=aH(e);t.kind!==`blank`&&(a++,t.kind===`unparsed`&&o++)}return{lines:a,unparsed:o,whole:t}}function AJ(e){let t=Ni(e,SA+1);return t.kind===`ok`?L(kJ(t.value.buf,t.value.fromStart)):t}function jJ(e,t){if(t.kind===`failed`)return t;let n=new Map;for(let{path:e,answered:r}of t.value)n.set(e,r||(n.get(e)??!1));return{kind:`ok`,value:[...n].map(([t,n])=>({path:t,answered:n,read:e.transcript(t)}))}}const MJ={github:{loginHost:()=>`github.com`,args:e=>[`auth`,`token`,`--hostname`,e],nonZero:`logged-out`},gitlab:{loginHost:e=>e,args:()=>[`--version`],nonZero:`failed`}};function NJ(e){if(WT(e)===void 0)return{kind:`ok`,value:null};let t=lE(Re({bin:`git`,args:[...cE],cwd:e,env:{...process.env,GIT_OPTIONAL_LOCKS:`0`},timeoutMs:2e3,category:`doctor.forge`}));if(t.kind===`failed`)return t;let n=mE(t.value);if(n===null)return{kind:`ok`,value:null};let r=sE(n);if(r===null)return{kind:`ok`,value:null};let i=nE[r],a=MJ[r],o=a.loginHost(oE(n)),s=Re({bin:i,args:[...a.args(o)],cwd:e,timeoutMs:2e3,category:`doctor.forge`});return PJ(i,o,a.nonZero,s)}function PJ(e,t,n,r){let i=n=>({kind:`ok`,value:{cli:e,host:t,status:n}});return r.ok?i(`ready`):rE(r)?i(`missing`):r.reason===`non-zero`&&n===`logged-out`?i({loggedOut:$T(r.stderr)}):{kind:`failed`,reason:QT(e,r)}}function FJ(e){let t={layers:e.layers,warnings:e.warning===null?[]:e.warning.split(`
|
|
480
|
+
`)};return e.error===null?{...t,kind:`loaded`,unused:e.unused}:{...t,kind:`failed`,error:e.error}}function IJ(e){return{at:e,sources:gJ(()=>Wi(e))}}function LJ(e,t){return t===void 0?{kind:`unreported`}:t===null?{kind:`outside`}:{kind:`inside`,hint:t,client:e.probeTmux(t)}}function RJ(e,t){switch(e.kind){case`unreported`:return{kind:`unreported`};case`outside`:return t===void 0?{kind:`unreported`}:{kind:`seen`,identified:mA(t),tmuxClient:null};case`inside`:{if(e.client.kind===`failed`)return{kind:`unasked`,reason:e.client.reason};let t=e.client.value;return t===null?{kind:`unasked`,reason:`tmux has no client attached to the pane's session`}:{kind:`seen`,identified:pA(t),tmuxClient:t}}}}function zJ(e,t,n,r){if(t.kind!==`seen`)return t;let{identified:i,tmuxClient:a}=t,o=n.terminalEnv;if(i.kind!==`known`)return i;let{name:s,version:c}=i.terminal;if(rA(s))return{kind:`bundling`,name:s,version:c};if(!iA(s))return{kind:`unread`,name:s,version:c};let{ITERM_PROFILE:l,...u}=o??{},d=a===null?{kind:`ok`,value:n.ssh===!0}:e.remoteLogin(a.pid);return{kind:`configured`,name:s,version:c,font:d.kind===`failed`?{kind:`failed`,reason:`whether the terminal is remote could not be asked: ${d.reason}`}:d.value?{kind:`failed`,reason:`the terminal is on the far side of a remote login, so its font is on the machine it runs on`}:e.fontInUse({name:s,version:c},a===null?o??{}:u,r)}}function BJ(e){return{kind:`arrived`,handler:e,bar:Lt}}function VJ(e,t){let[n,...r]=e;return n===void 0?{kind:`unneeded`}:{kind:`needed`,segments:[n,...r],fact:t()}}function HJ(e,t,n,r,i){return{pullRequests:VJ(t.pullRequests,()=>e.forge(n.cwd)),rateLimits:VJ(t.rateLimits,()=>i),memento:VJ(t.memento,()=>({located:e.memento(r,n.projectDir),claudeConfigDir:r}))}}function UJ(e,t,n,r,i,a,o,s){let c=e.loadConfig(n),l=Gz(c.config,r,()=>!1),u=LJ(e,t.tmux),d=RJ(u,t.terminalEnv),f=[...new Set([...Og(l),...Dg(JSON.stringify(c.config))])].join(``);return{tmux:u,termCols:t.termCols??null,terminal:d,nerdFont:f===``?{kind:`none`}:{kind:`glyphs`,glyphs:f,terminal:zJ(e,d,t,f)},marks:e.marks.read(),clicked:e.clicked.read(),daemon:{serving:i,processes:e.daemons(),read:e.postMortemsRead.read()},config:FJ(c),frames:s,data:HJ(e,Cq(c.config,l.preset),n,Fi(t.claudeConfigDir),a),transcripts:jJ(e,o),claudeSettings:IJ({managedDir:e.managedSettingsDir,projectDir:n.projectDir,userFile:Ii(Fi(t.claudeConfigDir))})}}function WJ(e,t,n){switch(t.kind){case`claude-settings`:{let e=t.file;return Ve(e,li(Bi(e),t.path,JSON.stringify(t.value),Yr)),{kind:`ok`,value:{...n,claudeSettings:IJ(n.claudeSettings.at)}}}case`post-mortems-read`:{let r=e.postMortemsRead.update(e=>e.through===null||on(t.through,e.through)?{through:t.through}:e);return r.kind===`failed`?r:{kind:`ok`,value:{...n,daemon:{...n.daemon,read:r}}}}default:return t}}const GJ={connectMs:200,budgetMs:500};async function KJ(e){let n=e.includes(`--json`),r=await qJ();r.kind!==`ok`&&(t.stderr.write(`daemon-stats: ${It(r)}\n`),t.exit(1)),n&&t.stdout.write(JSON.stringify(r.value,null,2)+`
|
|
481
|
+
`);let i=JJ(r.value);if(i!==null){t.stderr.write(`daemon-stats: ${i}\n`),t.exitCode=1;return}n||t.stdout.write(nY(r.value))}function qJ(){return At({kind:`stats`},GJ,e=>`stats`in e?e.stats:void 0)}function JJ(e,t=YJ){let n=wG.referenceSnapshot(),r=XJ(Object.fromEntries(t.map(e=>[e,n[e]])),e);if(r.length===0)return null;let i=QJ(e.version,e.sourceDigest??null),a=QJ(Lt,$g());return`the daemon (${i}) reports no ${r.join(`, `)}; it is another build than this client (${a}), and restarts only when its own bundle changes`}const YJ=Object.keys(wG.referenceSnapshot());function XJ(e,t,n=``){if(Array.isArray(e))return Array.isArray(t)?[]:[n||`<snapshot>`];if(!ZJ(e))return[];if(!ZJ(t))return[n||`<snapshot>`];if(`kind`in e)return[];let r=[];for(let i of Object.keys(e)){let a=n===``?i:`${n}.${i}`;i in t?r.push(...XJ(e[i],t[i],a)):r.push(a)}return r}function ZJ(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function QJ(e,t){return`${e} [${t===null?`no digest`:Xg(t)}]`}function $J(e){return e<1024?`${e}B`:e<1024*1024?`${(e/1024).toFixed(1)}KB`:`${(e/1024/1024).toFixed(1)}MB`}function eY(e,t){let n=e+t;return n===0?`n/a`:`${(e/n*100).toFixed(1)}%`}function tY(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 nY(e){let t=[];t.push(`cc-candybar daemon stats`),t.push(``),t.push(`process`),t.push(` pid ${e.pid}`),t.push(` build ${QJ(e.version,e.sourceDigest)}`),t.push(` protocol ${e.protocolVersion}`),t.push(` startedAt ${e.startedAt}`),t.push(` uptime ${tY(e.uptimeSec)}`),t.push(` rss ${$J(e.rssBytes)}`),t.push(` heapUsed ${$J(e.heapUsedBytes)}`),t.push(` heapTotal ${$J(e.heapTotalBytes)}`),t.push(` external ${$J(e.externalBytes)}`),t.push(` arrayBuffers ${$J(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 ${eY(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 ${eY(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(` held ${e.renderCache.held}`),t.push(` retired ${e.renderCache.retired}`),t.push(``),t.push(`effectCache`),t.push(` sessions ${e.effectCache.sessions}`),t.push(` effects ${e.effectCache.effects}`),t.push(``),t.push(`sessionState`),t.push(` sessions ${e.sessionState.sessions}`),t.push(` observers ${e.sessionState.observers}`),t.push(` revision ${e.sessionState.revision}`),t.push(``),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(`
|
|
482
482
|
`)+`
|
|
483
|
-
`}const
|
|
484
|
-
`).join(` — `));let t=
|
|
485
|
-
`);return{inMode:n!==`0`,screen:r}}function vY(e,t){let n=gY(e,`claude-input.type`,[`load-buffer`,`-b`,hY,`-`,`;`,`send-keys`,`-t`,e.pane,`C-s`,`;`,`paste-buffer`,`-p`,`-d`,`-b`,hY,`-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 yY(){return{read:_Y,type:vY}}function bY(e){if(!e)throw new q(`session id is required`);if(e.includes(`/`)||e.includes(`..`))throw new q(`invalid session id "${e}"`);return e}function xY(e){return SY(()=>decodeURIComponent(e))}function SY(e){try{return e()}catch(e){throw e instanceof URIError?new q(`malformed wire encoding: ${e.message}`):e}}function CY(e,t){let n=Re({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 wY=(e,t)=>CY(xY(e),t),TY=(e,t)=>{let n=Re({bin:`/usr/bin/open`,args:[`-a`,`Visual Studio Code`,xY(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`})`)}},EY=(e,t)=>CY(xY(e),t),DY=(e,t)=>CY(xY(e),t),OY=(e,t)=>{let n=bY(xY(e));t.navigating.get(n,`toolbar-expanded`)?t.navigating.clear(n,`toolbar-expanded`):t.navigating.set(n,`toolbar-expanded`,`1`)},kY=(e,t)=>{let[n=``,...r]=SY(()=>or(e)),i=bY(n),a=nV(UY(t,i));if(r.length===0)throw new q(`set-state: <key>/<value> is required (have keys: ${a.listKeys().join(`, `)})`);if(r.length%2!=0)throw new q(`set-state: expected even-count <key>/<value> pairs, got ${r.length} segment(s) after session id (have keys: ${a.listKeys().join(`, `)})`);let o=[];for(let e=0;e<r.length;e+=2){let t=r[e],n=r[e+1];if(!t)throw new q(`set-state: empty key at pair ${e/2+1} (expected <sessionId>/<key>/<value>[/<key>/<value>...] segments)`);let i=a.validate(t,n);if(!i.ok)throw new q(`set-state: pair ${e/2+1}: ${i.reason}`);o.push({key:t,value:i.value})}NY(t,i,`set-state`,o),t.navigating.setBatch(i,o);let s=o.map(e=>`${e.key}=${e.value}`).join(` `);t.dlog(`info`,`set-state: ${s} (session=${i})`)},AY=/^-?\d+$/;function jY(e,t,n,r){let i=e+t;return i>r?e===r?n:r:i<n?e===n?r:n:i}const MY=(e,t)=>{let[n=``,r=``,i=``]=SY(()=>or(e)),a=bY(n);if(!r)throw new q(`step-state: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!AY.test(i))throw new q(`step-state: delta must be an integer, got "${i}"`);let o=parseInt(i,10),s=UY(t,a),c=nV(s),l=c.rangeParamsFor(r);if(!l)throw new q(`step-state: key "${r}" is not a bounded (range) state key (have keys: ${c.listKeys().join(`, `)})`);let u=t.sessionState.get(a,r),d=u&&AY.test(u)?PY(l,parseInt(u,10)):FY(`step-state`,r,l,aV(s,e=>t.sessionState.get(a,e),r)),f=jY(d,o,l.min,l.max),p=c.validate(r,String(f));if(!p.ok)throw new q(`step-state: ${p.reason}`);NY(t,a,`step-state`,[{key:r,value:p.value}]),t.navigating.set(a,r,p.value),t.dlog(`info`,`step-state: ${r} ${d}→${p.value} (by ${o}, session=${a})`)};function NY(e,t,n,r){let i=r.filter(e=>e.key.startsWith(xk));if(i.length===0)return;let a=FB(UY(e,t),n=>e.sessionState.get(t,n),i);if(a.length>0)throw new q(`${n}: refused — ${a.join(`; `)}`)}function PY(e,t){return Math.max(e.min,Math.min(e.max,t))}function FY(e,t,n,r){if(r===null)return n.min;if(!AY.test(r))throw new q(`${e}: "${t}" shows ${JSON.stringify(r)} before any click, not an integer to step`);return PY(n,parseInt(r,10))}const IY=`render-origin`;function LY(e,t,n){return{...e,configFile:t.get(n,`config-override`)??e.configFile}}function RY(e){return JSON.stringify(e)}function zY(e){let t;try{t=JSON.parse(e)}catch{throw new q(`render origin is not JSON: ${e}`)}if(typeof t!=`object`||!t)throw new q(`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 q(`render origin has the wrong shape: ${e}`);return{projectDir:n,cwd:r,configFile:i}}function BY(e,t){let n=VY(e,t);if(n===null)throw new q(`session ${t} has not rendered yet — no config to act on`);return n}function VY(e,t){let n=e.sessionState.get(t,IY);return n===null?null:LY(zY(n),e.sessionState,t)}function HY(e,t,n){let r=VY(e,t);if(r===null)return;let{path:i}=WY(r);n.some(e=>e.kind===`file`&&e.file===i)&&e.reloadConfig(r)}function UY(e,t){return e.configFor(BY(e,t))}function WY(e){return zR(e.projectDir,e.cwd,e.configFile??void 0)}function GY(e,t){return{record:(n,r,i)=>e.journal.file(t,n,r,i),logger:e.dlog}}const KY=(e,t)=>{let[n=``,r=``,i=``]=SY(()=>or(e)),a=bY(n),o=BY(t,a),s=t.configFor(o),c=xP(s);if(!r)throw new q(`set-config: <key>/<value> is required (have keys: ${c.listKeys().join(`, `)})`);let l=c.validate(r,i);if(!l.ok)throw new q(`set-config: ${l.reason}`);let u=WY(o),d=NB(s,e=>t.sessionState.get(a,e),r);mK(GY(t,a),u,[[d.key,l.value]]),t.reloadConfig(o),t.dlog(`info`,`set-config: ${d.key}=${l.value} → ${u.path} (session=${a})`)},qY=(e,t)=>{let[n=``,r=``,i=``]=SY(()=>or(e)),a=bY(n);if(!r)throw new q(`step-config: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!AY.test(i))throw new q(`step-config: delta must be an integer, got "${i}"`);let o=parseInt(i,10),s=BY(t,a),c=t.configFor(s),l=xP(c),u=l.rangeParamsFor(r);if(!u)throw new q(`step-config: key "${r}" is not a bounded (range) config key (have keys: ${l.listKeys().join(`, `)})`);let d=WY(s),f=NB(c,e=>t.sessionState.get(a,e),r),p=pK(d.path,f.key),m=typeof p==`number`?PY(u,p):FY(`step-config`,r,u,CP(f.globals,r)),h=jY(m,o,u.min,u.max),g=l.validate(r,String(h));if(!g.ok)throw new q(`step-config: ${g.reason}`);mK(GY(t,a),d,[[f.key,g.value]]),t.reloadConfig(s),t.dlog(`info`,`step-config: ${f.key} ${m}→${g.value} (by ${o}) → ${d.path} (session=${a})`)},JY=(e,t)=>{let[n=``]=SY(()=>or(e)),r=bY(n),i=BY(t,r),a=t.configFor(i),o=e=>t.sessionState.get(r,e),s=jB(a,o),c=PB(a,o);if(s.length+c.length===0){t.dlog(`info`,`save: nothing unsaved (session=${r})`);return}let l=nV(a),u=s.map(e=>{let t=l.validate(e.sessionKey,e.value);if(!t.ok)throw new q(`save: ${t.reason}`);return[e.target,t.value]});XY(`save`,l,c);let d=WY(i);hK(GY(t,r),d,u,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: ${[...u.map(([e,t])=>`${e}=${t}`),...c.map(YY)].join(` `)} → ${d.path} (session=${r})`)},YY=e=>`${e.preset}/${e.id}.settings.${e.setting}=${L_(e.value)}`;function XY(e,t,n){for(let r of n){let n=t.validate(r.key,L_(r.value));if(!n.ok)throw new q(`${e}: ${n.reason}`)}}const ZY=(e,t)=>{let[n=``]=SY(()=>or(e)),r=bY(n),i=BY(t,r),a=t.configFor(i),o=RB(a,e=>t.sessionState.get(r,e)),s=nV(a),c=o.picks.map(e=>{let t=s.validate(e.sessionKey,e.value);if(!t.ok)throw new q(`save-preset: ${t.reason}`);return[e.configKey,t.value]});XY(`save-preset`,s,o.placements);let l=WY(i),u=SK(GY(t,r),l,o.from,o.globals,c,o.placements);t.reloadConfig(i);for(let e of[...ao.map(e=>e.sessionKey),...o.placements.map(e=>e.key)])t.sessionState.clear(r,e);t.sessionState.set(r,io.preset.sessionKey,u),t.dlog(`info`,`save-preset: ${[`${u} from=${o.from}`,...c.map(([e,t])=>`${e}=${t}`),...o.placements.map(YY)].join(` `)} → ${l.path} (session=${r})`)},QY=(e,t)=>{let[n=``]=SY(()=>or(e)),r=bY(n),i=BY(t,r),a=BB(t.configFor(i),e=>t.sessionState.get(r,e));if(a.kind===`rule`)throw new q(`save-theme-default: the theme is chosen by a rule (globals.palette), so there is no name to save as a theme's default — pick one in the menu first`);let o=WY(i);CK(GY(t,r),o,a.theme,a.look),t.reloadConfig(i);let s=new Set(jB(t.configFor(i),e=>t.sessionState.get(r,e)).map(e=>e.sessionKey)),c=S_.map(e=>io[e].sessionKey).filter(e=>!s.has(e));for(let e of c)t.sessionState.clear(r,e);t.dlog(`info`,`save-theme-default: ${a.theme} ${S_.map(e=>`${e}=${a.look[e]}`).join(` `)} → ${o.path} (session=${r})`)},$Y=(e,t)=>{let[n=``,r=``]=SY(()=>or(e)),i=bY(n);if(!r)throw new q(`delete-preset: <name> is required (shape: <sessionId>/<name>)`);let a=BY(t,i),o=WY(a);wK(GY(t,i),o,r),t.reloadConfig(a);let s=io.preset.sessionKey;t.sessionState.get(i,s)===r&&t.sessionState.clear(i,s),t.dlog(`info`,`delete-preset: ${r} ← ${o.path} (session=${i})`)},eX=(e,t)=>{let[n=``,...r]=SY(()=>or(e)),i=bY(n),a=BY(t,i),o=xP(t.configFor(a)).listKeys(),s=r.length===0?[``]:r.filter(e=>!o.includes(e));if(s.length>0)throw new q(`reset-config: unknown config key "${s.join(`", "`)}" (have: ${o.join(`, `)})`);let c=WY(a),l=r.map(VB),u=l.flatMap(e=>e.fileKeys),d=l.flatMap(e=>e.sessionKeys);yK(GY(t,i),c,u),t.reloadConfig(a);for(let e of d)t.sessionState.clear(i,e);t.dlog(`info`,`reset-config: ${[...u,...d.map(e=>`session:${e}`)].join(` `)} ← ${c.path} (session=${i})`)};function tX(e,t){let n=(e,t)=>[...__(av(e,t).node)].filter(e=>e.kind===`segment`),r=new Set(nv(t.presets).flatMap(e=>n(t,e).map(t=>Sk(fD(e),p_(t)))));return nv(e.presets).flatMap(t=>n(e,t).map(e=>({member:Sk(fD(t),p_(e)),node:e})).filter(({member:e})=>!r.has(e)))}function nX(e,t){return e.flatMap(({member:e,node:n})=>[...Object.values(n.drafts??{}).map(e=>e.key),...e===t?[gk]:[]])}const rX=(e,t)=>{let[n=``,r=``,i=``]=SY(()=>or(e)),a=bY(n),o=BY(t,a),s=t.configFor(o),c=xP(s);if(!r)throw new q(`apply-layout-op: <key>/<op> is required (have: ${c.listKeys().join(`, `)})`);let l=c.validate(r,i);if(!l.ok)throw new q(`apply-layout-op: ${l.reason}`);let u=sP(l.value);if(u===null)throw new q(`apply-layout-op: "${l.value}" is not a layout op token`);let d=WY(o),f=TK(GY(t,a),d,r,u);t.reloadConfig(o);let p=nX(tX(s,t.configFor(o)),t.sessionState.get(a,gk)).filter(e=>t.sessionState.get(a,e)!==null);for(let e of p)t.sessionState.clear(a,e);t.dlog(`info`,`apply-layout-op: ${r} ${l.value} → ${d.path} placed=${JSON.stringify(f)} released=${JSON.stringify(p)} (session=${a})`)},iX=(e,t)=>{let[n=``]=SY(()=>or(e)),r=bY(n);t.journal.commit();let i=t.history.undo(r);HY(t,r,i),t.dlog(`info`,`undo: restored ${qK(i)} (session=${r})`)},aX=(e,t)=>{let n=bY(xY(e)),{step:r,discarded:i}=t.navigation.back(n,t.sessionState,nV(UY(t,n))),a=r.map(e=>`${e.key}=${e.before??`∅`}`).join(` `);t.dlog(`info`,`back: ${a} discarded=${i} (session=${n})`)},oX=(e,t)=>{let n=bY(xY(e));t.journal.commit();let r=t.history.rewind(n);HY(t,n,r),t.dlog(`info`,`rewind: put back ${qK(r)||`nothing`} as edit mode found it (session=${n})`)},sX=(e,t)=>{let[n=``]=SY(()=>or(e)),r=bY(n);t.journal.commit();let i=t.history.redo(r);HY(t,r,i),t.dlog(`info`,`redo: re-applied ${qK(i)} (session=${r})`)},cX=(e,t)=>{bY(xY(e)),t.applyUpdate()},lX=`client-hints`;function uX(e,t){let n=e.sessionState.get(t,lX);if(n===null)throw new q(`session ${t} has not rendered yet — no client facts are recorded for it`);let r;try{r=JSON.parse(n)}catch{throw new q(`client hints record is not JSON: ${n}`)}if(typeof r!=`object`||!r)throw new q(`client hints record is not an object: ${n}`);return mt(r)}function dX(e,t,n){let r=cj(n);e.sessionState.setBatch(t,wj(r)),e.dlog(`info`,`doctor: ${r.map(e=>`${e.check.name}=${e.verdict.ok?`ok`:`failed(${1+(e.verdict.more?.length??0)})`}`).join(` `)} ${Sj(n.nerdFont,n.marks)} ${mj(n.terminal,n.clicked)} ${hj(n.terminal,n.termCols)} ${gj(n.install)} ${_j(n.daemon)} ${vj(n.data)} ${xj(n.transcripts)} ${yj(n.frames)} ${bj(n.claudeSettings.sources)} (session=${t})`)}function fX(e,t){let n=e.clients.ofSession(t),r;try{r=LJ(e.doctor,uX(e,t),BY(e,t),n=>e.sessionState.get(t,n),{kind:`ok`,value:e.serving()},{kind:`ok`,value:n.map(e=>e.rateLimits)},{kind:`ok`,value:n.map(e=>e.transcript)},{kind:`ok`,value:n.map(({role:e,frame:t})=>({role:e,frame:t}))})}catch(e){throw e instanceof pq?new q(e.message):e}return{...r,urlHandler:PJ(e.clientVersion),install:fJ(e.doctor.install,e.bundle,n.map(e=>e.client)),askedBy:`click`,clicked:pX(e,r)}}function pX(e,{terminal:t,clicked:n}){let r=t.kind===`seen`?mA(t.identified):null;if(r===null||n.kind===`failed`)return n;try{e.doctor.clicked.record(r)}catch(t){return e.dlog(`warn`,`doctor: clicked terminal not filed for ${JSON.stringify(r)}: ${t instanceof Error?t.message:String(t)}`),n}return{kind:`ok`,value:n.value.includes(r)?n.value:[...n.value,r]}}const mX=(e,t)=>{let n=bY(xY(e));dX(t,n,fX(t,n))},hX=(e,t)=>{let n=tY(xY(e));if(n===null)throw new q(`doctor-probe: the value is not a probe nonce`);t.probes.arrive({nonce:n,handler:t.clientVersion}),t.dlog(`info`,`doctor-probe: arrived nonce=${n} handler=${t.clientVersion??`unreported`}`)},gX=(e,t)=>{let[n=``,r=``]=SY(()=>or(e)),i=bY(n),a=lj(r);if(a===void 0)throw new q(`doctor-fix: unknown check "${r}"`);let o=fX(t,i),s=a.probe(o);if(s.ok||s.fix===void 0)throw new q(`doctor-fix: ${a.label} — ${s.ok?`nothing to fix`:s.reason}`);let c=RJ(t.doctor,s.fix,o);t.dlog(`info`,`doctor-fix: ${a.name} → ${SA(s.fix)} (session=${i})`),dX(t,i,c)},_X=(e,t)=>{let[n=``,r=``,i=``]=SY(()=>or(e)),a=bY(n),o=lj(r);if(o===void 0)throw new q(`doctor-mark: unknown check "${r}"`);if(!bA.includes(i))throw new q(`doctor-mark: the mark is ${JSON.stringify(i)}, not ${bA.join(` or `)}`);let s=fX(t,a),c=o.probe(s);if(c.ok||c.sighting===void 0)throw new q(`doctor-mark: ${o.label} — ${c.ok?`nothing to mark`:`shows nothing to look at`}`);if(s.marks.kind===`failed`)throw new q(`doctor-mark: ${s.marks.reason}`);let l=[o.name,c.sighting.id,i];t.doctor.marks.record(...l),t.dlog(`info`,`doctor-mark: ${o.name} ${i} on ${c.sighting.id} (session=${a})`),dX(t,a,{...s,marks:{kind:`ok`,value:dq(s.marks.value,...l)}})},vX=(e,t)=>{let[n=``,...r]=SY(()=>or(e)),i=bY(n),a=BY(t,i),o=Object.values(t.configFor(a).actions).filter(e=>`ceiling`in e).find(e=>{let t=CI(e);return t.length===r.length&&t.every((e,t)=>e===r[t])});if(o===void 0)throw new q(`ceiling: "${r.join(` `)}" is not a move this config declares`);let s=o.ceiling===`set`?{kind:`set`,to:o.to}:{kind:`clear`},c=Az({sessionId:i,projectDir:a.projectDir,cwd:a.cwd},uX(t,i));t.memento.move(c,s),t.dlog(`info`,`ceiling: ${r.join(` `)} (session=${i} claudeConfigDir=${c.claudeConfigDir})`)},yX=(e,t)=>{let[n=``,r=``]=SY(()=>or(e)),i=bY(n),a=Object.values(t.configFor(BY(t,i)).actions).filter(e=>`slash`in e),o=a.find(e=>e.slash===r);if(o===void 0)throw new q(`${JSON.stringify(r)} is not a command this config declares (it declares: ${[...new Set(a.map(e=>e.slash))].join(`, `)||`none`})`);let s=mY(t.claudeInput,uX(t,i).tmux,o.slash);if(s.kind===`refused`)throw t.dlog(`warn`,`slash: ${r} refused — ${s.reason} (session=${i})`),new q(`${r} was not typed: ${s.reason}`);t.dlog(`info`,`slash: typed ${r} into ${s.pane} (session=${i})`)},bX=`config-override`,xX=new Map([[Fn,wY],[`load-config`,(e,t)=>{let n=e.indexOf(`/`);if(n===-1)throw new q(`load-config: expected <sessionId>/<path> (missing separator)`);let r=bY(SY(()=>decodeURIComponent(e.slice(0,n)))),i=SY(()=>decodeURIComponent(e.slice(n+1))).trim();if(i!==``){if(!i.startsWith(`/`))throw new q(`load-config: path must be absolute, got "${i}"`);if(!/\.(json5?|json)$/.test(i))throw new q(`load-config: path must end with .json5 or .json, got "${i}"`)}i===``?(t.sessionState.clear(r,bX),t.dlog(`info`,`load-config: override cleared (session=${r})`)):(t.sessionState.set(r,bX,i),t.dlog(`info`,`load-config: ${i} (session=${r})`))}],[In,TY],[Nn,kY],[Pn,MY],[Bn,KY],[Vn,qY],[Kn,eX],[Hn,JY],[Un,ZY],[Wn,QY],[Gn,$Y],[qn,rX],[Jn,iX],[Yn,sX],[Xn,aX],[Zn,oX],[Rn,EY],[zn,DY],[Ln,OY],[Qn,cX],[$n,mX],[er,gX],[tr,_X],[nr,hX],[rr,vX],[ir,yX]]),SX=new Set([Nn,Pn,Bn,Vn,Kn,Hn,Un,Wn,Gn,qn,Jn,Yn,Xn,Zn,Ln,Qn,$n,er,tr,rr,ir]),CX=(e,t)=>{let n=[],r=!1,i=null;for(let{verb:a,value:o}of ur(cr(e))){if(!i&&SX.has(a)){let e=or(o);e.length>0&&e[0]&&(i=e[0])}let e=xX.get(a);if(!e){n.push(`unknown effect verb "${a}"`);continue}try{e(o,t)}catch(e){e instanceof q||(r=!0),n.push(`${a}: ${e instanceof Error?e.message:String(e)}`)}}if(n.length>0){i&&iq(t.sessionState,i,n.join(`
|
|
486
|
-
`),
|
|
487
|
-
`)){let[e,r]=n.trim().split(` `);e!==void 0&&r===`1`&&t.add(e)}return t}function
|
|
488
|
-
`)){let[e,i,a,o,s,c]=r.trim().split(` `);e===void 0||e===``||i===void 0||Number(a)>0&&(o===`1`||t.has(i))&&(s!==`1`||c===`1`)&&n.add(e)}return n}var eZ=class{servers=new Map;loop={kind:`idle`};constructor(e){this.deps=e}follow(){switch(this.loop.kind){case`idle`:this.deps.log(`info`,`visibility following`),this.ask();break;case`asking`:this.loop.following=!0;break;case`due`:break}return()=>this.stop()}stop(){switch(this.loop.kind){case`due`:clearTimeout(this.loop.timer),this.end();return;case`asking`:this.loop.following=!1;return;case`idle`:return}}ask(){let e={kind:`asking`,following:!0};this.loop=e,Promise.resolve().then(()=>this.refresh(this.deps.sockets())).catch(e=>this.deps.log(`error`,`visibility refresh threw: ${T(e)}`)).then(()=>{if(e.following){this.loop={kind:`due`,timer:setTimeout(()=>this.ask(),this.deps.intervalMs).unref()};return}this.end()})}end(){this.deps.log(`info`,`visibility stopped forgot=${this.servers.size}`),this.loop={kind:`idle`},this.servers.clear()}shown(e){if(e==null)return!0;let t=this.servers.get(e.socket);return t?.kind!==`asked`||t.shown.has(e.pane)}async refresh(e){for(let t of this.servers.keys())e.has(t)||this.servers.delete(t);let t=await Promise.all([...e].map(async e=>{let[t,n]=await Promise.all([this.deps.listPanes(e),this.deps.listClients(e)]);return[e,t.kind===`ok`?n.kind===`ok`?{kind:`asked`,shown:$X(t.stdout,QX(n.stdout))}:{kind:`unasked`,reason:n.reason}:{kind:`unasked`,reason:t.reason}]})),n=new Set;for(let[e,r]of t){let t=this.servers.get(e);this.servers.set(e,r),!tZ(t,r)&&(n.add(e),this.deps.log(r.kind===`asked`?`info`:`warn`,r.kind===`asked`?`visibility socket=${JSON.stringify(e)} shown=${[...r.shown].join(`,`)||`-`}`:`visibility socket=${JSON.stringify(e)} unasked: ${r.reason} — its panes count as shown`))}n.size>0&&this.deps.onChange(n)}};function tZ(e,t){return e===void 0||e.kind!==t.kind?!1:e.kind===`unasked`||t.kind===`unasked`?!0:e.shown.size===t.shown.size&&[...e.shown].every(e=>t.shown.has(e))}const nZ={order:-1/0,text:null,failure:null};var rZ=class{synced=new Map;constructor(e){this.dir=e}pathFor(e){return v.join(this.dir,`${encodeURIComponent(e)}.txt`)}sync(e,t,n){let r=this.synced.get(e)??nZ;if(t<r.order)return{link:this.linkFor(e,n),failure:null};let i=n===r.text&&r.failure===null?null:this.write(e,n);return this.synced.delete(e),this.synced.set(e,{order:t,text:n,failure:i}),this.forgetOldestClean(),{link:this.linkFor(e,n),failure:i}}linkFor(e,t){let n=this.synced.get(e)??nZ;return n.text===t?n.failure===null?{kind:`file`,path:this.pathFor(e)}:{kind:`unavailable`,reason:n.failure}:{kind:`unavailable`,reason:`the file holds another render's text until the session's next statusline request`}}forgetOldestClean(){let e=0;for(let t of this.synced.values())t.text===null&&t.failure===null&&e++;for(let[t,n]of this.synced){if(e<=256)return;n.text!==null||n.failure!==null||(this.synced.delete(t),e--)}}write(e,t){let n=this.pathFor(e);try{return t===null?s.rmSync(n,{force:!0}):(s.mkdirSync(this.dir,{recursive:!0,mode:448}),s.writeFileSync(n,t,{mode:384})),null}catch(e){return`${n}: ${e.message}`}}reset(){this.synced.clear();try{return s.rmSync(this.dir,{recursive:!0,force:!0}),null}catch(e){return`${this.dir}: ${e.message}`}}};function iZ(e,t){for(let n of Object.entries(t))e.push(n)}const aZ={ok:`info`,"bad-request":`warn`,threw:`error`};function oZ(e){switch(e.kind){case`ok`:return[];case`bad-request`:return[[`problems`,e.problems.join(`; `)]];case`threw`:return[[`error`,T(e.error)]]}}function sZ(e,t,n){let r=[...e,[`took`,`${n}ms`],[`outcome`,t.kind],...oZ(t)];return{level:aZ[t.kind],line:`render${r.map(([e,t])=>` ${e}=${dj(t)}`).join(``)}`}}function cZ(){var e=typeof SuppressedError==`function`?SuppressedError:function(e,t){var n=Error();return n.name=`SuppressedError`,n.error=e,n.suppressed=t,n},t={},n=[];function r(e,t){if(t!=null){if(Object(t)!==t)throw TypeError(`using declarations can only be used with objects, functions, null, or undefined.`);if(e)var r=t[Symbol.asyncDispose||Symbol.for(`Symbol.asyncDispose`)];if(r===void 0&&(r=t[Symbol.dispose||Symbol.for(`Symbol.dispose`)],e))var i=r;if(typeof r!=`function`)throw TypeError(`Object is not disposable.`);i&&(r=function(){try{i.call(t)}catch(e){return Promise.reject(e)}}),n.push({v:t,d:r,a:e})}else e&&n.push({d:t,a:e});return t}return{e:t,u:r.bind(null,!1),a:r.bind(null,!0),d:function(){var r,i=this.e,a=0;function o(){for(;r=n.pop();)try{if(!r.a&&a===1)return a=0,n.push(r),Promise.resolve().then(o);if(r.d){var e=r.d.call(r.v);if(r.a)return a|=2,Promise.resolve(e).then(o,s)}else a|=1}catch(e){return s(e)}if(a===1)return i===t?Promise.resolve():Promise.reject(i);if(i!==t)throw i}function s(n){return i=i===t?n:new e(n,i),o()}return o()}}}const lZ=new bG,uZ=new $J,dZ=new $k,fZ=i(import.meta.url);Fe(lZ.launchStats);const pZ=new TE({counters:lZ,logger:N}),mZ=BH({watchers:pZ,logger:N}),{gitProvider:hZ,usageStore:gZ,mementoProvider:_Z}=mZ,vZ=new CG,yZ=new NK(vZ,N),bZ=new nq,xZ=new gg,SZ=new JX({render:e=>lQ(e),watch:(e,t)=>(0,Vv.reaction)(()=>vZ.revision(e),t,{scheduler:e=>fe(e)}),lanes:e=>dQ(e),shown:e=>CZ.shown(e.hints.tmux),watching:()=>CZ.follow(),periods:qX,now:()=>Date.now(),log:N}),CZ=new eZ({listPanes:e=>FH({socket:e},`frames.visibility`,[`list-panes`,`-a`,`-F`,XX]),listClients:e=>FH({socket:e},`frames.visibility`,[`list-clients`,`-F`,ZX]),sockets:()=>new Set(SZ.watched().flatMap(({req:e})=>wZ(e))),onChange:e=>SZ.wakeWhere(t=>wZ(t).some(t=>e.has(t))),intervalMs:1e3,log:N});function wZ({hints:{tmux:e}}){return e==null?[]:[e.socket]}const TZ=new rZ(ot()),EZ=new vG({gitService:hZ,sessionState:vZ,watchers:pZ,log:N},{observers:{onReload:e=>N(`info`,`config loaded projectDir=${e.projectDir} cwd=${e.cwd} files=${e.configLayers.join(` < `)||`<bundled default>`} error=${e.lastError===null?`none`:JSON.stringify(e.lastError)} warning=${e.lastWarning===null?`none`:JSON.stringify(e.lastWarning)}`)}}),DZ=60*1e3;function OZ(){let e=import.meta.url,n=[];e.startsWith(`file://`)&&n.push(i(e)),t.argv[1]&&n.push(t.argv[1]);let r=new Map;for(let e of n)try{r.set(e,s.statSync(e).mtimeMs)}catch{}let a=null,o=()=>{for(let[e,t]of r)try{if(s.statSync(e).mtimeMs!==t){N(`info`,`binary mtime changed (${e}); shutting down`),a&&clearInterval(a),GZ(0);return}}catch(e){N(`warn`,`bin stat failed: ${e.message}`)}};return{arm(){r.size!==0&&(a=setInterval(o,DZ),a.unref())},checkNow:o}}const kZ=OZ(),AZ=wV({entryUrl:import.meta.url,intervalMs:DZ,releaseIntervalMs:216e5,registryUrl:t.env.CC_CANDYBAR_REGISTRY_URL??`https://registry.npmjs.org`,fetchImpl:fetch,onApplied:()=>kZ.checkNow(),log:N});let jZ=null,MZ=null,NZ=0;function PZ(){t.on(`uncaughtException`,e=>{N(`error`,`uncaughtException: ${e.stack||e.message}`),GZ(1)}),t.on(`unhandledRejection`,e=>{N(`error`,`unhandledRejection: ${String(e)}`),GZ(1)});for(let e of[`SIGINT`,`SIGTERM`,`SIGHUP`])t.on(e,()=>{N(`info`,`received ${e}, shutting down`),GZ(0)});try{VZ(t.env)}catch(e){N(`error`,`refusing to boot: ${e.message}`),GZ(1);return}jZ=Ra(t.pid);let e=Ja(Xa(jZ));if(!e.decision.allow){N(`warn`,`fork-bomb breaker: ${e.decision.reason}; refusing to boot`),GZ(1);return}MZ=e.registryPath,s.mkdirSync(qe(),{recursive:!0}),Ze(Je()),vZ.useStorage(new TG(et(),500,N)),yZ.useStorage(eq(tt(),N)),Va({anchor:Ba(t.env),isAlive:Ha,onOrphaned:e=>{N(`info`,`parent watchdog: ${e}; shutting down`),GZ(0)}}),FZ(D.createServer({allowHalfOpen:!1},e=>{KZ(e)}),Je(),!1)}function FZ(e,n,r){e.removeAllListeners(`error`),e.removeAllListeners(`listening`),e.once(`error`,i=>{if(i.code!==`EADDRINUSE`){N(`error`,`server error: ${i.message}`),GZ(1);return}if(r){N(`info`,`lost rebind race; another daemon is alive — exiting`),t.exit(0);return}IZ(e,n)}),e.listen(n,()=>LZ(n))}function IZ(e,n){let r=Oa(ka(Qe(n)),(e,t)=>La(e,t,{readStartTime:Ia,pidAlive:Ha}));if(r.kind===`attach-and-exit`){N(`info`,`EADDRINUSE: ${r.reason} — exiting`),t.exit(0);return}N(`warn`,`EADDRINUSE: ${r.reason} — unlinking stale socket and rebinding`);try{s.unlinkSync(n)}catch(e){if(e.code!==`ENOENT`){N(`error`,`cannot unlink stale socket ${n}: ${e.message}`),GZ(1);return}}FZ(e,n,!0)}function LZ(e){let n=Ma(e);if(n.kind!==`present`){N(`warn`,`no ownable socket at bind callback (${n.kind}); exiting`),GZ(0);return}HZ(e);try{s.chmodSync(e,384)}catch(e){N(`warn`,`chmod socket failed: ${e.message}`)}N(`info`,`daemon up: pid=${t.pid} v=3 sock=${e} heapCap=${nn(ie.getHeapStatistics().heap_size_limit)}MB rssLimit=${nn(NZ)}MB`),Sn();let r=TZ.reset();r!==null&&N(`warn`,`diagnostic dump wipe failed: ${r}`),kZ.arm(),AZ.arm(),BZ().arm(),RZ(e,n.identity)}function RZ(e,n){Fa({bound:n,myPid:t.pid,readIdentity:()=>Ma(e),readLease:()=>ka(Qe(e)),shutdown:e=>GZ(e),log:N}).arm()}let zZ=null;function BZ(){if(zZ===null)throw Error(`daemon: limits not yet established`);return zZ}function VZ(e){NZ=rn(e),zZ=un(pn(lZ.startedAt.getTime(),e=>GZ(e),{rssLimitBytes:NZ}))}function HZ(e){let n=Aa(Qe(e),{pid:t.pid,version:3,binPath:t.argv[1],startTime:jZ});n!==null&&N(`warn`,`lease write failed: ${n}`)}let UZ=0,WZ=!1;function GZ(e){if(!WZ){WZ=!0,setTimeout(()=>t.kill(t.pid,`SIGKILL`),500);try{hZ.close()}catch(e){N(`warn`,`gitService close failed: ${e.message}`)}try{gZ.close()}catch(e){N(`warn`,`usageStore close failed: ${e.message}`)}try{pZ.closeAll()}catch(e){N(`warn`,`watcherRegistry close failed: ${e.message}`)}try{vZ.flush()}catch(e){N(`warn`,`sessionState flush failed: ${e.message}`)}ja($e(),t.pid),MZ!==null&&Ya(MZ,t.pid,Ka,e=>s.unlinkSync(e)),t.exit(e)}}function KZ(e){UZ++,lZ.inFlight=UZ;let t=!1,n=!0,r=()=>{n&&(n=!1,UZ=Math.max(0,UZ-1),lZ.inFlight=UZ)},i=(n,r,i)=>{if(t){r!==null&&N(`warn`,`exit-after-flush dropped: an earlier responder settled this socket`);return}t=!0;let a=r===null?void 0:()=>GZ(r);try{e.end(Tt(n),e=>{e??i(),a?.()})}catch(e){N(`warn`,`response write failed: ${e.message}`),a?.()}},a=!1,o=setTimeout(()=>{a=!0,lZ.requestsTimedOut++,i({ok:!1,error:`request exceeded 200ms`,code:`TIMEOUT`,daemonV:3},null,qZ)},200),s=Dt(e=>{eQ(e,()=>a).then(e=>e.kind===`reply`?i(e.resp,e.exitAfterFlush,e.delivered):c(e.sessionId,e.lane)).catch(e=>{N(`error`,`handler threw: ${T(e)}`),i(ZZ(e),null,qZ)})},e=>{N(`warn`,`frame parse failed: ${e.message}`),i({ok:!1,error:e.message,code:`BAD_REQUEST`,daemonV:3},null,qZ)}),c=(n,i)=>{if(t||e.destroyed)return;clearTimeout(o),r(),e.off(`data`,s);let a=YX(e),c=SZ.subscribe(n,{lane:i,frame:(e,t)=>a(Et(LV[i](e,t))),refused:t=>e.end(Tt(t))});t=!0,e.on(`close`,c)};e.on(`data`,s),e.on(`error`,e=>{N(`warn`,`socket error: ${e.message}`)}),e.on(`close`,()=>{clearTimeout(o),r()})}const qZ=()=>{},JZ=e=>({resp:e,exitAfterFlush:null,delivered:qZ}),YZ=e=>({kind:`reply`,...e}),XZ={render:!0,"pane-session":!0,shutdown:!0,stats:!0,click:!0,debug:!0},ZZ=e=>({ok:!1,error:e instanceof Error?e.message:T(e),code:`RENDER_FAILED`,daemonV:3}),QZ=(e,t)=>YZ(JZ({ok:!1,error:t,code:e,daemonV:3}));function $Z(e){if(typeof e.sessionId!=`string`||e.sessionId===``)return QZ(`BAD_REQUEST`,`subscribe needs a non-empty string sessionId`);if(e.lane===void 0)return QZ(`VERSION_MISMATCH`,`this client's subscribe names no lane (${Qa.join(`, `)}): it predates the lane toggles — update it`);let t=eo(e.lane);return t===null?QZ(`BAD_REQUEST`,`subscribe needs a lane, one of ${Qa.join(`, `)}: got ${JSON.stringify(e.lane)}`):{kind:`subscribe`,sessionId:e.sessionId,lane:t}}async function eQ(e,t){return!e||typeof e!=`object`||typeof e.v!=`number`?QZ(`BAD_REQUEST`,`malformed request`):e.v===3?e.kind===`subscribe`?$Z(e):typeof e.kind!=`string`||!Object.hasOwn(XZ,e.kind)?QZ(`BAD_REQUEST`,`unknown kind`):YZ(await tQ(e,t)):(e.v>3?N(`info`,`version mismatch: client=${e.v} > daemon=3; binary likely upgraded — exiting after the response flushes`):N(`info`,`version mismatch: client=${e.v} < daemon=3; client is stale — staying up`),{kind:`reply`,resp:{ok:!1,error:`protocol v${e.v} not supported (daemon at v3)`,code:`VERSION_MISMATCH`,daemonV:3},exitAfterFlush:e.v>3?0:null,delivered:qZ})}async function tQ(e,t){if(e.kind===`shutdown`)return{resp:{ok:!0,output:``},exitAfterFlush:0,delivered:qZ};if(e.kind===`pane-session`){let{socket:t,pane:n}=e;return JZ(typeof t!=`string`||typeof n!=`string`?{ok:!1,error:`pane-session needs a string socket and pane`,code:`BAD_REQUEST`,daemonV:3}:{ok:!0,paneSession:SZ.newestWhere(({hints:{tmux:e}})=>e!=null&&e.socket===t&&e.pane===n)})}if(e.kind===`stats`)return JZ({ok:!0,stats:lZ.snapshot({gitCache:hZ.getStats(),usageCache:gZ.getStats(),renderCache:EZ.stats,effectCache:xZ.getStats(),sessionState:{sessions:vZ.size(),observers:vZ.observers(),revision:vZ.latestRevision()},frameFeeds:SZ.getStats(),watchersActive:pZ.size(),nextRestartReason:BZ().describeNextRestart(),handlerProbes:uZ.list(),clients:dZ.list(LE(new Date)),bundle:fZ,daemon:BZ().serving()})});if(e.kind===`render`){let n=new Date,r=LE(n),i=n.getTime(),a=[],o=++lZ.requestsTotal,s=fQ(e),c=(e,t)=>dZ.see(e.hookData.session_id,{client:e.hints.client??null,rateLimits:e.rateLimits,claudeConfigDir:Fi(e.hints.claudeConfigDir),transcript:Yk(e.hookData),frame:t},r,o);s.ok&&c(s.req,`drawing`);let l=s.ok?await vQ(s.req,o,r,a).then(({output:e,motion:t,clickShown:n})=>{c(s.req,t);let r={ok:!0,output:e};return SZ.note(s.req.hookData.session_id,s.req,o,{resp:r,drawnAt:i,moves:t===`moves`,failure:null}),{outcome:{kind:`ok`},resp:r,delivered:n===null?qZ:()=>aq(vZ,s.req.hookData.session_id,n)}},e=>(c(s.req,`failed`),{outcome:{kind:`threw`,error:e},resp:ZZ(e),delivered:qZ})):pQ(s.problems);l.outcome.kind!==`ok`&&lZ.requestsErrored++,iZ(a,{timedOut:t()?`Y`:`N`});let{level:u,line:d}=sZ(a,l.outcome,Date.now()-i);return N(u,d),{resp:l.resp,exitAfterFlush:null,delivered:l.delivered}}if(e.kind===`click`)return JZ(cQ(e.verb,e.value,Ct(e.clientVersion)));if(e.kind===`debug`){if(!GX(e.what))return JZ({ok:!1,error:`unknown debug 'what': ${String(e.what)} (have: ${WX.join(`, `)})`,code:`BAD_REQUEST`,daemonV:3});let t=EZ.firstState(),n=t===null?null:{store:t.store,registry:t.registry,config:t.config,compiled:t.compiled,lastRenderBySegment:e.what===`segments`?oQ(t.lastRenderCellsBySegment,t.config.globals.colorCompatibility??`truecolor`):aQ};return JZ({ok:!0,debug:NX(e.what,n)})}throw Error(`no reply for request ${T(e)}`)}function nQ(e,t){let{values:n,tokens:r}=re({args:e.slice(1),options:{config:{type:`string`}},strict:!1,tokens:!0,allowPositionals:!0}),i=[...new Set((r??[]).filter(e=>e.kind===`option`&&e.name!==`config`).map(e=>`--${e.name}`))];return{configFile:$L(t,n.config),unknownFlagsError:i.length>0?`Unknown flags: ${i.join(`, `)}`:null}}const rQ={sessionState:vZ,dlog:N,applyUpdate:()=>AZ.act(),doctor:SJ(e=>{let t=[e.projectDir,e.cwd,e.configFile??void 0];EZ.reload(...t);let n=EZ.getOrCreate(...t);return{layers:n.configLayers,error:n.lastError,warning:n.lastWarning,unused:n.state.unused,config:n.state.config}}),probes:uZ,clients:dZ,bundle:fZ,serving:()=>BZ().serving(),memento:_Z,claudeInput:yY(),history:yZ,navigation:bZ,configFor:e=>EZ.getOrCreate(e.projectDir,e.cwd,e.configFile??void 0).state.config,reloadConfig:e=>EZ.reload(e.projectDir,e.cwd,e.configFile??void 0)};rQ.reloadConfig;const iQ={endcaps:`powerline`,colorCompatibility:`truecolor`,wrap:!0,padding:1,width:1/0},aQ=new Map;function oQ(e,t){let n=new Map;for(let[r,i]of e)n.set(r,kg(i,{...iQ,colorCompatibility:t}));return n}const sQ={...mZ,history:e=>yZ.depth(e)};function cQ(e,t,n){let r=TX.get(e);if(!r)return{ok:!1,error:`unknown click verb: ${e}`,code:`BAD_REQUEST`,daemonV:3};try{return r(t,{...rQ,clientVersion:n}),{ok:!0,output:``}}catch(e){let t=e instanceof q?`BAD_REQUEST`:`RENDER_FAILED`;return{ok:!1,error:String(e instanceof Error?e.message:e),code:t,daemonV:3}}}async function lQ(e){let t=new Date,n=[];try{let{drawn:r,motion:i}=await mQ(e,LE(t),n,`frame`);return{resp:{ok:!0,output:hQ(r,TZ.linkFor(e.hookData.session_id,gQ(r)))},drawnAt:t.getTime(),moves:i===`moves`,failure:null}}catch(e){let{level:r,line:i}=sZ(n,{kind:`threw`,error:e},Date.now()-t.getTime());return{resp:ZZ(e),drawnAt:t.getTime(),moves:!1,failure:{level:r,line:`frame ${i}`}}}}function uQ(e,t){return Wz(t.config,t=>vZ.get(e,t),e=>t.authoredRoots.has(e))}function dQ(e){try{var t=cZ();let n=e.hookData.session_id,r=LY(e.requested,vZ,n);return uQ(n,t.u(EZ.hold(r.projectDir,r.cwd,r.configFile??void 0)).state).lanes}catch(e){t.e=e}finally{t.d()}}function fQ(e){let{report:t}=kX(e.hookData);for(let e of t.unknownTopLevelFields)N(`info`,`schema: unknown field '${e}' — Anthropic may have added it`);let n=[];for(let e of t.missingRequired)n.push(`missing required field '${e}'`);for(let{path:e,expected:r,got:i}of t.typeMismatches)n.push(`field '${e}' expected ${r}, got ${i}`);if((typeof e.cwd!=`string`||!x(e.cwd))&&n.push(`request 'cwd' is not an absolute path: ${JSON.stringify(e.cwd)}`),(!Array.isArray(e.args)||!e.args.every(e=>typeof e==`string`))&&n.push(`request 'args' is not a list of strings: ${JSON.stringify(e.args)}`),n.length>0)return{ok:!1,problems:n};let r=mt(e),{configFile:i,unknownFlagsError:a}=nQ(e.args,e.cwd);return{ok:!0,req:{...e,hints:r,rateLimits:Jk(e.hookData),requested:{projectDir:e.hookData.workspace.project_dir,cwd:e.cwd,configFile:i??r.configEnv??null},unknownFlagsError:a}}}const pQ=e=>({outcome:{kind:`bad-request`,problems:e},resp:{ok:!1,error:`malformed hookData: ${e.join(`; `)}`,code:`BAD_REQUEST`,daemonV:3},delivered:qZ});async function mQ(e,t,n,r){try{var i=cZ();iZ(n,{sid:e.hookData.session_id,at:t.toFixed(3)});let{unknownFlagsError:a}=e,o=e.hookData.session_id,s=e.hints,c=j(e,s),l=ht(c);iZ(n,{termCols:String(s.termCols??`?`),termRows:String(s.termRows??`?`),refused:c.map(e=>e.hint).join(`,`)||`-`,client:s.client?.kind??`unreported`,rateLimits:e.rateLimits});let u=LY(e.requested,vZ,o),{entry:d,state:f}=i.u(EZ.hold(u.projectDir,u.cwd,u.configFile??void 0)),p=s.termCols,m=KX(p??120),h=Ag(s.termRows);iZ(n,{width:String(m)});let g=t=>vZ.get(e.hookData.session_id,t),_=uQ(o,f);iZ(n,{lanes:Qa.filter(e=>_.lanes[e]).join(`,`)||`-`});let v=await fB(e.hookData,t,{...sQ,navigation:e=>bZ.depth(e,vZ,nV(f.config))},e.cwd,f.neededInputPaths(_.preset),_,s,{...UB(f.config,f.fileHeldSettings,g),configPath:d.configLayers.includes(d.configHome)?d.configHome:null});iZ(n,{prompts:String(v.metrics?.messageCount??`-`),nonPrompts:String(v.metrics?.nonPrompts??`-`),pr:Yz(v.git)});let y=[],b=Gz(_,m),x=xZ.of(o),S=XW(f.config,f.compiled,f.store,f.registry,v,t,b,{perSegmentSink:f.lastRenderCellsBySegment,onRenderWarning:e=>y.push(e)},{...Kz(_),effects:x}),C=sq(vZ,o,t,r),w=C.kind===`held`||C.kind===`owed`?C.error:null,ee=w?.text??null,te=[a,l,d.lastError,ee].filter(Boolean).join(`
|
|
489
|
-
`),ne=
|
|
490
|
-
`)),D=
|
|
491
|
-
`}function
|
|
492
|
-
`);return}t.stdout.write(
|
|
493
|
-
`;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?``:` ${
|
|
483
|
+
`}const rY=e=>({kind:`ok`,value:e}),iY=e=>({kind:`failed`,reason:e});var aY=class{arrivals=[];arrive(e){this.arrivals=[...this.arrivals,e].slice(-16)}list(){return this.arrivals}};const oY=/^[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$/;function sY(e){return oY.test(e)?e:null}function cY(e){let t=e.opener();if(t.kind===`failed`)return t;if(t.value===null)return rY(null);let n=t.value,r=e.script(n);if(r.kind===`failed`)return rY({app:n,missing:iY(`its script could not be read (${r.reason})`)});let i=pa(r.value);return rY({app:n,missing:i===null?iY("its script is not one `cc-candybar install` wrote"):rY([i.node,i.script].filter(t=>!e.exists(t)))})}async function lY(e,t){let n=e.now()+5e3;for(;e.now()<n;){await e.pause();let n=await e.daemon(),r=n.kind===`ok`?n.value.arrivals.find(e=>e.nonce===t):void 0;if(n.kind===`ok`&&r!==void 0)return{kind:`arrived`,handler:r.handler,bar:n.value.version}}return null}async function uY(e){if(e.platform!==`darwin`)return{kind:`unsupported`};if(e.sockets.own!==e.sockets.handler)return{kind:`unprobed`,reason:`this shell's daemon is at ${e.sockets.own} (CC_CANDYBAR_SOCKET); the URL handler delivers links to ${e.sockets.handler}`};let t=await e.daemon();if(t.kind===`failed`)return{kind:`unprobed`,reason:`the daemon could not be asked whether a link arrives: ${t.reason}`};let n=e.nonce(),r=e.open(`${jn}://${nr}/${n}`);return(r===null?await lY(e,n):null)??{kind:`lost`,unopened:r,opener:cY(e)}}function dY(e,t,n){let r=Re({bin:t,args:[...n],category:e,timeoutMs:5e3});return r.ok?rY(r.stdout):iY(r.stderr.trim()||r.error||r.reason)}const fY=`ObjC.import("AppKit");var u = $.NSWorkspace.sharedWorkspace.URLForApplicationToOpenURL($.NSURL.URLWithString("${jn}://probe"));u.isNil() ? "" : u.path.js`;async function pY(){let e=await qJ();if(e.kind!==`ok`)return iY(It(e).split(`
|
|
484
|
+
`).join(` — `));let t=JJ(e.value,[`handlerProbes`]);if(t!==null)return iY(t);let{version:n,handlerProbes:r}=e.value;return rY({version:n,arrivals:r})}function mY(){return{platform:process.platform,sockets:{own:Je(),handler:Ye()},now:Date.now,nonce:ue,daemon:pY,open:e=>{let t=dY(`doctor.open`,`/usr/bin/open`,[`-g`,e]);return t.kind===`ok`?null:t.reason},pause:()=>new Promise(e=>setTimeout(e,100)),opener:()=>{let e=dY(`doctor.launch-services`,`/usr/bin/osascript`,[`-l`,`JavaScript`,`-e`,fY]);if(e.kind===`failed`)return e;let t=e.value.trim();return rY(t===``?null:t)},script:e=>dY(`doctor.osadecompile`,`/usr/bin/osadecompile`,[ma(e)]),exists:s.existsSync}}const hY=/^─{20,}/,gY=/^❯(\s|$)/,_Y=/›\s*stashed$/;function vY(e){if(e.inMode)return{kind:`in-mode`};let t=e.screen.map(e=>e.trimEnd()),n=t.flatMap((e,t)=>hY.test(e)?[t]:[]).at(-2);return n===void 0||!gY.test(t[n+1]??``)?{kind:`no-prompt`}:_Y.test(t[n-1]??``)?{kind:`stashed`}:{kind:`ready`}}const yY={"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 bY(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=vY(e.read(t));if(r.kind!==`ready`)return{kind:`refused`,reason:yY[r.kind]};let i=e.type(t,n);return i.kind===`typed`?{kind:`typed`,pane:t.pane}:i}const xY=`cc-candybar-slash`;function SY(e,t,n,r){let i=RH(e,t,n,r);if(i.kind===`failed`)throw Error(i.reason);return i}function CY(e){let t=SY(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(`
|
|
485
|
+
`);return{inMode:n!==`0`,screen:r}}function wY(e,t){let n=SY(e,`claude-input.type`,[`load-buffer`,`-b`,xY,`-`,`;`,`send-keys`,`-t`,e.pane,`C-s`,`;`,`paste-buffer`,`-p`,`-d`,`-b`,xY,`-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 TY(){return{read:CY,type:wY}}function EY(e){if(!e)throw new q(`session id is required`);if(e.includes(`/`)||e.includes(`..`))throw new q(`invalid session id "${e}"`);return e}function DY(e){return OY(()=>decodeURIComponent(e))}function OY(e){try{return e()}catch(e){throw e instanceof URIError?new q(`malformed wire encoding: ${e.message}`):e}}function kY(e,t){let n=Re({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 AY=(e,t)=>kY(DY(e),t),jY=(e,t)=>{let n=Re({bin:`/usr/bin/open`,args:[`-a`,`Visual Studio Code`,DY(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`})`)}},MY=(e,t)=>kY(DY(e),t),NY=(e,t)=>kY(DY(e),t),PY=(e,t)=>{let n=EY(DY(e));t.navigating.get(n,`toolbar-expanded`)?t.navigating.clear(n,`toolbar-expanded`):t.navigating.set(n,`toolbar-expanded`,`1`)},FY=(e,t)=>{let[n=``,...r]=OY(()=>or(e)),i=EY(n),a=rV(YY(t,i));if(r.length===0)throw new q(`set-state: <key>/<value> is required (have keys: ${a.listKeys().join(`, `)})`);if(r.length%2!=0)throw new q(`set-state: expected even-count <key>/<value> pairs, got ${r.length} segment(s) after session id (have keys: ${a.listKeys().join(`, `)})`);let o=[];for(let e=0;e<r.length;e+=2){let t=r[e],n=r[e+1];if(!t)throw new q(`set-state: empty key at pair ${e/2+1} (expected <sessionId>/<key>/<value>[/<key>/<value>...] segments)`);let i=a.validate(t,n);if(!i.ok)throw new q(`set-state: pair ${e/2+1}: ${i.reason}`);o.push({key:t,value:i.value})}zY(t,i,`set-state`,o),t.navigating.setBatch(i,o);let s=o.map(e=>`${e.key}=${e.value}`).join(` `);t.dlog(`info`,`set-state: ${s} (session=${i})`)},IY=/^-?\d+$/;function LY(e,t,n,r){let i=e+t;return i>r?e===r?n:r:i<n?e===n?r:n:i}const RY=(e,t)=>{let[n=``,r=``,i=``]=OY(()=>or(e)),a=EY(n);if(!r)throw new q(`step-state: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!IY.test(i))throw new q(`step-state: delta must be an integer, got "${i}"`);let o=parseInt(i,10),s=YY(t,a),c=rV(s),l=c.rangeParamsFor(r);if(!l)throw new q(`step-state: key "${r}" is not a bounded (range) state key (have keys: ${c.listKeys().join(`, `)})`);let u=t.sessionState.get(a,r),d=u&&IY.test(u)?BY(l,parseInt(u,10)):VY(`step-state`,r,l,oV(s,e=>t.sessionState.get(a,e),r)),f=LY(d,o,l.min,l.max),p=c.validate(r,String(f));if(!p.ok)throw new q(`step-state: ${p.reason}`);zY(t,a,`step-state`,[{key:r,value:p.value}]),t.navigating.set(a,r,p.value),t.dlog(`info`,`step-state: ${r} ${d}→${p.value} (by ${o}, session=${a})`)};function zY(e,t,n,r){let i=r.filter(e=>e.key.startsWith(Sk));if(i.length===0)return;let a=IB(YY(e,t),n=>e.sessionState.get(t,n),i);if(a.length>0)throw new q(`${n}: refused — ${a.join(`; `)}`)}function BY(e,t){return Math.max(e.min,Math.min(e.max,t))}function VY(e,t,n,r){if(r===null)return n.min;if(!IY.test(r))throw new q(`${e}: "${t}" shows ${JSON.stringify(r)} before any click, not an integer to step`);return BY(n,parseInt(r,10))}const HY=`render-origin`;function UY(e,t,n){return{...e,configFile:t.get(n,`config-override`)??e.configFile}}function WY(e){return JSON.stringify(e)}function GY(e){let t;try{t=JSON.parse(e)}catch{throw new q(`render origin is not JSON: ${e}`)}if(typeof t!=`object`||!t)throw new q(`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 q(`render origin has the wrong shape: ${e}`);return{projectDir:n,cwd:r,configFile:i}}function KY(e,t){let n=qY(e,t);if(n===null)throw new q(`session ${t} has not rendered yet — no config to act on`);return n}function qY(e,t){let n=e.sessionState.get(t,HY);return n===null?null:UY(GY(n),e.sessionState,t)}function JY(e,t,n){let r=qY(e,t);if(r===null)return;let{path:i}=XY(r);n.some(e=>e.kind===`file`&&e.file===i)&&e.reloadConfig(r)}function YY(e,t){return e.configFor(KY(e,t))}function XY(e){return BR(e.projectDir,e.cwd,e.configFile??void 0)}function ZY(e,t){return{record:(n,r,i)=>e.journal.file(t,n,r,i),logger:e.dlog}}const QY=(e,t)=>{let[n=``,r=``,i=``]=OY(()=>or(e)),a=EY(n),o=KY(t,a),s=t.configFor(o),c=SP(s);if(!r)throw new q(`set-config: <key>/<value> is required (have keys: ${c.listKeys().join(`, `)})`);let l=c.validate(r,i);if(!l.ok)throw new q(`set-config: ${l.reason}`);let u=XY(o),d=PB(s,e=>t.sessionState.get(a,e),r);vK(ZY(t,a),u,[[d.key,l.value]]),t.reloadConfig(o),t.dlog(`info`,`set-config: ${d.key}=${l.value} → ${u.path} (session=${a})`)},$Y=(e,t)=>{let[n=``,r=``,i=``]=OY(()=>or(e)),a=EY(n);if(!r)throw new q(`step-config: <key> is required (shape: <sessionId>/<key>/<by>)`);if(!IY.test(i))throw new q(`step-config: delta must be an integer, got "${i}"`);let o=parseInt(i,10),s=KY(t,a),c=t.configFor(s),l=SP(c),u=l.rangeParamsFor(r);if(!u)throw new q(`step-config: key "${r}" is not a bounded (range) config key (have keys: ${l.listKeys().join(`, `)})`);let d=XY(s),f=PB(c,e=>t.sessionState.get(a,e),r),p=_K(d.path,f.key),m=typeof p==`number`?BY(u,p):VY(`step-config`,r,u,wP(f.globals,r)),h=LY(m,o,u.min,u.max),g=l.validate(r,String(h));if(!g.ok)throw new q(`step-config: ${g.reason}`);vK(ZY(t,a),d,[[f.key,g.value]]),t.reloadConfig(s),t.dlog(`info`,`step-config: ${f.key} ${m}→${g.value} (by ${o}) → ${d.path} (session=${a})`)},eX=(e,t)=>{let[n=``]=OY(()=>or(e)),r=EY(n),i=KY(t,r),a=t.configFor(i),o=e=>t.sessionState.get(r,e),s=MB(a,o),c=FB(a,o);if(s.length+c.length===0){t.dlog(`info`,`save: nothing unsaved (session=${r})`);return}let l=rV(a),u=s.map(e=>{let t=l.validate(e.sessionKey,e.value);if(!t.ok)throw new q(`save: ${t.reason}`);return[e.target,t.value]});nX(`save`,l,c);let d=XY(i);yK(ZY(t,r),d,u,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: ${[...u.map(([e,t])=>`${e}=${t}`),...c.map(tX)].join(` `)} → ${d.path} (session=${r})`)},tX=e=>`${e.preset}/${e.id}.settings.${e.setting}=${R_(e.value)}`;function nX(e,t,n){for(let r of n){let n=t.validate(r.key,R_(r.value));if(!n.ok)throw new q(`${e}: ${n.reason}`)}}const rX=(e,t)=>{let[n=``]=OY(()=>or(e)),r=EY(n),i=KY(t,r),a=t.configFor(i),o=zB(a,e=>t.sessionState.get(r,e)),s=rV(a),c=o.picks.map(e=>{let t=s.validate(e.sessionKey,e.value);if(!t.ok)throw new q(`save-preset: ${t.reason}`);return[e.configKey,t.value]});nX(`save-preset`,s,o.placements);let l=XY(i),u=EK(ZY(t,r),l,o.from,o.globals,c,o.placements);t.reloadConfig(i);for(let e of[...ao.map(e=>e.sessionKey),...o.placements.map(e=>e.key)])t.sessionState.clear(r,e);t.sessionState.set(r,io.preset.sessionKey,u),t.dlog(`info`,`save-preset: ${[`${u} from=${o.from}`,...c.map(([e,t])=>`${e}=${t}`),...o.placements.map(tX)].join(` `)} → ${l.path} (session=${r})`)},iX=(e,t)=>{let[n=``]=OY(()=>or(e)),r=EY(n),i=KY(t,r),a=VB(t.configFor(i),e=>t.sessionState.get(r,e));if(a.kind===`rule`)throw new q(`save-theme-default: the theme is chosen by a rule (globals.palette), so there is no name to save as a theme's default — pick one in the menu first`);let o=XY(i);DK(ZY(t,r),o,a.theme,a.look),t.reloadConfig(i);let s=new Set(MB(t.configFor(i),e=>t.sessionState.get(r,e)).map(e=>e.sessionKey)),c=C_.map(e=>io[e].sessionKey).filter(e=>!s.has(e));for(let e of c)t.sessionState.clear(r,e);t.dlog(`info`,`save-theme-default: ${a.theme} ${C_.map(e=>`${e}=${a.look[e]}`).join(` `)} → ${o.path} (session=${r})`)},aX=(e,t)=>{let[n=``,r=``]=OY(()=>or(e)),i=EY(n);if(!r)throw new q(`delete-preset: <name> is required (shape: <sessionId>/<name>)`);let a=KY(t,i),o=XY(a);OK(ZY(t,i),o,r),t.reloadConfig(a);let s=io.preset.sessionKey;t.sessionState.get(i,s)===r&&t.sessionState.clear(i,s),t.dlog(`info`,`delete-preset: ${r} ← ${o.path} (session=${i})`)},oX=(e,t)=>{let[n=``,...r]=OY(()=>or(e)),i=EY(n),a=KY(t,i),o=SP(t.configFor(a)).listKeys(),s=r.length===0?[``]:r.filter(e=>!o.includes(e));if(s.length>0)throw new q(`reset-config: unknown config key "${s.join(`", "`)}" (have: ${o.join(`, `)})`);let c=XY(a),l=r.map(HB),u=l.flatMap(e=>e.fileKeys),d=l.flatMap(e=>e.sessionKeys);CK(ZY(t,i),c,u),t.reloadConfig(a);for(let e of d)t.sessionState.clear(i,e);t.dlog(`info`,`reset-config: ${[...u,...d.map(e=>`session:${e}`)].join(` `)} ← ${c.path} (session=${i})`)};function sX(e,t){let n=(e,t)=>[...v_(ov(e,t).node)].filter(e=>e.kind===`segment`),r=new Set(rv(t.presets).flatMap(e=>n(t,e).map(t=>Ck(pD(e),m_(t)))));return rv(e.presets).flatMap(t=>n(e,t).map(e=>({member:Ck(pD(t),m_(e)),node:e})).filter(({member:e})=>!r.has(e)))}function cX(e,t){return e.flatMap(({member:e,node:n})=>[...Object.values(n.drafts??{}).map(e=>e.key),...e===t?[_k]:[]])}const lX=(e,t)=>{let[n=``,r=``,i=``]=OY(()=>or(e)),a=EY(n),o=KY(t,a),s=t.configFor(o),c=SP(s);if(!r)throw new q(`apply-layout-op: <key>/<op> is required (have: ${c.listKeys().join(`, `)})`);let l=c.validate(r,i);if(!l.ok)throw new q(`apply-layout-op: ${l.reason}`);let u=cP(l.value);if(u===null)throw new q(`apply-layout-op: "${l.value}" is not a layout op token`);let d=XY(o),f=kK(ZY(t,a),d,r,u);t.reloadConfig(o);let p=cX(sX(s,t.configFor(o)),t.sessionState.get(a,_k)).filter(e=>t.sessionState.get(a,e)!==null);for(let e of p)t.sessionState.clear(a,e);t.dlog(`info`,`apply-layout-op: ${r} ${l.value} → ${d.path} placed=${JSON.stringify(f)} released=${JSON.stringify(p)} (session=${a})`)},uX=(e,t)=>{let[n=``]=OY(()=>or(e)),r=EY(n);t.journal.commit();let i=t.history.undo(r);JY(t,r,i),t.dlog(`info`,`undo: restored ${ZK(i)} (session=${r})`)},dX=(e,t)=>{let n=EY(DY(e)),{step:r,discarded:i}=t.navigation.back(n,t.sessionState,rV(YY(t,n))),a=r.map(e=>`${e.key}=${e.before??`∅`}`).join(` `);t.dlog(`info`,`back: ${a} discarded=${i} (session=${n})`)},fX=(e,t)=>{let n=EY(DY(e));t.journal.commit();let r=t.history.rewind(n);JY(t,n,r),t.dlog(`info`,`rewind: put back ${ZK(r)||`nothing`} as edit mode found it (session=${n})`)},pX=(e,t)=>{let[n=``]=OY(()=>or(e)),r=EY(n);t.journal.commit();let i=t.history.redo(r);JY(t,r,i),t.dlog(`info`,`redo: re-applied ${ZK(i)} (session=${r})`)},mX=(e,t)=>{EY(DY(e)),t.applyUpdate()},hX=`client-hints`;function gX(e,t){let n=e.sessionState.get(t,hX);if(n===null)throw new q(`session ${t} has not rendered yet — no client facts are recorded for it`);let r;try{r=JSON.parse(n)}catch{throw new q(`client hints record is not JSON: ${n}`)}if(typeof r!=`object`||!r)throw new q(`client hints record is not an object: ${n}`);return mt(r)}function _X(e,t,n){let r=lj(n);e.sessionState.setBatch(t,Tj(r)),e.dlog(`info`,`doctor: ${r.map(e=>`${e.check.name}=${e.verdict.ok?`ok`:`failed(${1+(e.verdict.more?.length??0)})`}`).join(` `)} ${Cj(n.nerdFont,n.marks)} ${hj(n.terminal,n.clicked)} ${gj(n.terminal,n.termCols)} ${_j(n.install)} ${vj(n.daemon)} ${yj(n.data)} ${Sj(n.transcripts)} ${bj(n.frames)} ${xj(n.claudeSettings.sources)} (session=${t})`)}function vX(e,t){let n=e.clients.ofSession(t),r;try{r=UJ(e.doctor,gX(e,t),KY(e,t),n=>e.sessionState.get(t,n),{kind:`ok`,value:e.serving()},{kind:`ok`,value:n.map(e=>e.rateLimits)},{kind:`ok`,value:n.map(e=>e.transcript)},{kind:`ok`,value:n.map(({role:e,frame:t})=>({role:e,frame:t}))})}catch(e){throw e instanceof xq?new q(e.message):e}return{...r,urlHandler:BJ(e.clientVersion),install:vJ(e.doctor.install,e.bundle,n.map(e=>e.client)),askedBy:`click`,clicked:yX(e,r)}}function yX(e,{terminal:t,clicked:n}){let r=t.kind===`seen`?hA(t.identified):null;if(r===null)return n;try{return e.doctor.clicked.update(e=>yq(e,r))}catch(t){return e.dlog(`warn`,`doctor: clicked terminal not filed for ${JSON.stringify(r)}: ${t instanceof Error?t.message:String(t)}`),n}}const bX=(e,t)=>{let n=EY(DY(e));_X(t,n,vX(t,n))},xX=(e,t)=>{let n=sY(DY(e));if(n===null)throw new q(`doctor-probe: the value is not a probe nonce`);t.probes.arrive({nonce:n,handler:t.clientVersion}),t.dlog(`info`,`doctor-probe: arrived nonce=${n} handler=${t.clientVersion??`unreported`}`)},SX=(e,t)=>{let[n=``,r=``]=OY(()=>or(e)),i=EY(n),a=uj(r);if(a===void 0)throw new q(`doctor-fix: unknown check "${r}"`);let o=vX(t,i),s=a.probe(o);if(s.ok||s.fix===void 0)throw new q(`doctor-fix: ${a.label} — ${s.ok?`nothing to fix`:s.reason}`);let c=WJ(t.doctor,s.fix,o);if(c.kind===`failed`)throw new q(`doctor-fix: ${a.label} — ${c.reason}`);t.dlog(`info`,`doctor-fix: ${a.name} → ${CA(s.fix)} (session=${i})`),_X(t,i,c.value)},CX=(e,t)=>{let[n=``,r=``,i=``]=OY(()=>or(e)),a=EY(n),o=uj(r);if(o===void 0)throw new q(`doctor-mark: unknown check "${r}"`);if(!xA.includes(i))throw new q(`doctor-mark: the mark is ${JSON.stringify(i)}, not ${xA.join(` or `)}`);let s=vX(t,a),c=o.probe(s);if(c.ok||c.sighting===void 0)throw new q(`doctor-mark: ${o.label} — ${c.ok?`nothing to mark`:`shows nothing to look at`}`);let l=[o.name,c.sighting.id,i],u=t.doctor.marks.update(e=>gq(e,...l));if(u.kind===`failed`)throw new q(`doctor-mark: ${u.reason}`);t.dlog(`info`,`doctor-mark: ${o.name} ${i} on ${c.sighting.id} (session=${a})`),_X(t,a,{...s,marks:u})},wX=(e,t)=>{let[n=``,...r]=OY(()=>or(e)),i=EY(n),a=KY(t,i),o=Object.values(t.configFor(a).actions).filter(e=>`ceiling`in e).find(e=>{let t=wI(e);return t.length===r.length&&t.every((e,t)=>e===r[t])});if(o===void 0)throw new q(`ceiling: "${r.join(` `)}" is not a move this config declares`);let s=o.ceiling===`set`?{kind:`set`,to:o.to}:{kind:`clear`},c=jz({sessionId:i,projectDir:a.projectDir,cwd:a.cwd},gX(t,i));t.memento.move(c,s),t.dlog(`info`,`ceiling: ${r.join(` `)} (session=${i} claudeConfigDir=${c.claudeConfigDir})`)},TX=(e,t)=>{let[n=``,r=``]=OY(()=>or(e)),i=EY(n),a=Object.values(t.configFor(KY(t,i)).actions).filter(e=>`slash`in e),o=a.find(e=>e.slash===r);if(o===void 0)throw new q(`${JSON.stringify(r)} is not a command this config declares (it declares: ${[...new Set(a.map(e=>e.slash))].join(`, `)||`none`})`);let s=bY(t.claudeInput,gX(t,i).tmux,o.slash);if(s.kind===`refused`)throw t.dlog(`warn`,`slash: ${r} refused — ${s.reason} (session=${i})`),new q(`${r} was not typed: ${s.reason}`);t.dlog(`info`,`slash: typed ${r} into ${s.pane} (session=${i})`)},EX=`config-override`,DX=new Map([[Fn,AY],[`load-config`,(e,t)=>{let n=e.indexOf(`/`);if(n===-1)throw new q(`load-config: expected <sessionId>/<path> (missing separator)`);let r=EY(OY(()=>decodeURIComponent(e.slice(0,n)))),i=OY(()=>decodeURIComponent(e.slice(n+1))).trim();if(i!==``){if(!i.startsWith(`/`))throw new q(`load-config: path must be absolute, got "${i}"`);if(!/\.(json5?|json)$/.test(i))throw new q(`load-config: path must end with .json5 or .json, got "${i}"`)}i===``?(t.sessionState.clear(r,EX),t.dlog(`info`,`load-config: override cleared (session=${r})`)):(t.sessionState.set(r,EX,i),t.dlog(`info`,`load-config: ${i} (session=${r})`))}],[In,jY],[Nn,FY],[Pn,RY],[Bn,QY],[Vn,$Y],[Kn,oX],[Hn,eX],[Un,rX],[Wn,iX],[Gn,aX],[qn,lX],[Jn,uX],[Yn,pX],[Xn,dX],[Zn,fX],[Rn,MY],[zn,NY],[Ln,PY],[Qn,mX],[$n,bX],[er,SX],[tr,CX],[nr,xX],[rr,wX],[ir,TX]]),OX=new Set([Nn,Pn,Bn,Vn,Kn,Hn,Un,Wn,Gn,qn,Jn,Yn,Xn,Zn,Ln,Qn,$n,er,tr,rr,ir]),kX=(e,t)=>{let n=[],r=!1,i=null;for(let{verb:a,value:o}of ur(cr(e))){if(!i&&OX.has(a)){let e=or(o);e.length>0&&e[0]&&(i=e[0])}let e=DX.get(a);if(!e){n.push(`unknown effect verb "${a}"`);continue}try{e(o,t)}catch(e){e instanceof q||(r=!0),n.push(`${a}: ${e instanceof Error?e.message:String(e)}`)}}if(n.length>0){i&&cq(t.sessionState,i,n.join(`
|
|
486
|
+
`),RE(new Date));let e=`dispatch: ${n.join(`; `)}`;throw r?Error(e):new q(e)}};function AX(e){return(t,n)=>{let r=n.history.begin(),i=n.navigation.begin(r.sessionState),a=[];try{e(t,{...n,sessionState:r.sessionState,journal:r,navigating:i.sessionState})}catch(e){a.push(e)}i.commit();try{r.commit()}catch(e){a.push(e)}if(a.length===1)throw a[0];if(a.length>1)throw Error(a.map(e=>String(e.message??e)).join(`; `))}}const jX=new Map([...DX,[Mn,kX]].map(([e,t])=>[e,AX(t)]));Object.freeze([...jX.keys()]);const MX=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`]),NX=[[`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`]],PX=[[`workspace.added_dirs`,`string-list`]];function FX(e){let t={missingRequired:[],typeMismatches:[],unknownTopLevelFields:[]},n=typeof e==`object`&&e&&!Array.isArray(e)?e:{};for(let[e,r]of NX){let i=RX(n,e);if(i==null)t.missingRequired.push(e);else{let n=IX(i);n!==r&&t.typeMismatches.push({path:e,expected:r,got:n})}}for(let[e,r]of PX){let i=RX(n,e),a=i===void 0?r:LX(i);a!==r&&t.typeMismatches.push({path:e,expected:r,got:a})}for(let e of Object.keys(n))MX.has(e)||t.unknownTopLevelFields.push(e);return{data:e,report:t}}function IX(e){return Array.isArray(e)?`array`:typeof e==`string`&&!e.isWellFormed()?`ill-formed string`:typeof e}function LX(e){return Array.isArray(e)&&e.every(e=>IX(e)===`string`)?`string-list`:IX(e)}function RX(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 zX(e,t){switch(e){case`vars`:return{what:e,vars:BX(t)};case`segments`:return{what:e,segments:GX(t)};case`config`:return{what:e,config:YX(t)}}}function BX(e){if(e===null)return[];let{store:t,registry:n,config:r}=e,i=UX(r),a=t.names().sort(),o=[];for(let e of a){let r=t.getNode(e),a=VX(r),s=n.getLastError(e);o.push({name:e,source:i.get(e)??null,...a,lastError:s===void 0?null:{timestampMs:s.timestamp,message:s.message},ageMs:HX(r.lastUpdatedMs())})}return o}function VX(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 HX(e){return e===null?null:Math.max(0,Date.now()-e)}function UX(e){let t=new Map;for(let[n,r]of Object.entries(e.variables))t.set(n,WX(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}`,WX(i));return t}function WX(e){return e.kind}function GX(e){if(e===null)return[];let{store:t,config:n,lastRenderBySegment:r}=e,i=new Set(t.names()),a=qX(n),o=KX(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:JX(t.template,n.helpers,i),placements:(o.get(e)??[]).map(e=>({id:e,lastRender:r.get(e)??null}))})}return s}function KX(e){let t=new Map;for(let n of rv(e.presets))for(let r of v_(ov(e,n).node)){if(r.kind!==`segment`)continue;let e=t.get(r.name)??[],n=m_(r);e.includes(n)||t.set(r.name,[...e,n])}return t}function qX(e){let t=[],n=new Set;for(let r of v_(X_(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 JX(e,t,n){let r=new Set;for(let i of Ov(e,t).keys()){if(n.has(i)){r.add(i);continue}let e=i.split(`.`);for(;e.length>1;){e.pop();let t=e.join(`.`);if(n.has(t)){r.add(t);break}}}return Array.from(r).sort()}function YX(e){return e===null?null:e.config}const XX=[`vars`,`segments`,`config`];function ZX(e){return typeof e==`string`&&XX.includes(e)}function QX(e){return Math.max(1,e-2)}const $X={moving:1e3/30,still:1e3};var eZ=class{requests=new Map;feeds=new Map;stopWatching=null;drawn=0;pushed=0;refused=0;lookups=0;found=0;constructor(e){this.deps=e}note(e,t,n,r){let i=this.requests.get(e);if(i!==void 0&&i.order>n)return;this.requests.delete(e),this.requests.set(e,{req:t,order:n});for(let e of this.requests.keys()){if(this.requests.size<=256)break;this.feeds.has(e)||this.requests.delete(e)}let a=this.feeds.get(e);if(a===void 0)return;if(a.last!==null&&r.drawnAt<a.last.drawnAt){this.wake(e);return}if(a.noted++,this.countFailure(a,r),this.push(a,r),this.feeds.get(e)!==a)return;let o=this.deps.now();switch(a.phase.kind){case`drawing`:a.phase.superseded={frame:r,at:o};return;case`due`:clearTimeout(a.phase.timer);break;case`waiting`:break}this.schedule(a,r,o,o)}subscribe(e,t){let n=this.requests.get(e);if(n!==void 0&&!this.deps.lanes(n.req)[t.lane])return this.refuse(e,t),()=>{};let r=this.feeds.get(e)??this.open(e);return r.sinks.add(t),r.last!==null&&t.frame(r.last.resp,r.last.bytes),this.deps.log(`info`,`feed sid=${JSON.stringify(e)} subscribed lane=${t.lane} subscribers=${r.sinks.size} data=${this.requests.has(e)?`Y`:`N`}`),()=>this.unsubscribe(r,t)}wake(e){let t=this.feeds.get(e);if(t!==void 0)switch(t.phase.kind){case`drawing`:t.phase.again=!0;return;case`due`:clearTimeout(t.phase.timer),this.draw(t);return;case`waiting`:this.draw(t);return}}wakeWhere(e){for(let{sessionId:t,req:n}of this.watched())e(n)&&this.wake(t)}newestWhere(e){let t=null;for(let[n,{req:r,order:i}]of this.requests)e(r)&&(t===null||i>t.order)&&(t={sessionId:n,order:i});return this.lookups++,t!==null&&this.found++,t?.sessionId??null}watched(){return[...this.feeds.keys()].flatMap(e=>{let t=this.requests.get(e);return t===void 0?[]:[{sessionId:e,req:t.req}]})}getStats(){let e=0;for(let t of this.feeds.values())e+=t.sinks.size;return{feeds:this.feeds.size,subscribers:e,drawn:this.drawn,pushed:this.pushed,refused:this.refused,lookups:this.lookups,found:this.found}}open(e){let t=this.deps.now(),n={sessionId:e,sinks:new Set,unwatch:this.deps.watch(e,()=>this.wake(e)),phase:{kind:`waiting`},last:null,since:t,drawn:0,noted:0,moving:0,unseen:0,failed:0,pushed:0,drawMs:0,summarizedAt:t};return this.feeds.set(e,n),this.stopWatching??=this.deps.watching(),this.draw(n),n}unsubscribe(e,t){!e.sinks.delete(t)||e.sinks.size>0||(e.phase.kind===`due`&&clearTimeout(e.phase.timer),e.unwatch(),this.feeds.delete(e.sessionId),this.feeds.size===0&&(this.stopWatching?.(),this.stopWatching=null),this.summarize(e,`closed`))}draw(e){return this.step(e).catch(t=>{if(this.deps.log(`error`,`feed sid=${JSON.stringify(e.sessionId)} threw: ${T(t)}`),this.feeds.get(e.sessionId)!==e)return;let n=this.deps.now();this.schedule(e,null,n,n)})}async step(e){let t=this.requests.get(e.sessionId);if(t===void 0){e.phase={kind:`waiting`};return}let{req:n}=t,r={kind:`drawing`,again:!1,superseded:null};e.phase=r;let i=this.deps.now(),a=await this.deps.render(n),o=this.deps.now();if(this.drawn++,e.drawn++,e.drawMs+=o-i,this.feeds.get(e.sessionId)!==e||(this.countFailure(e,a),this.requests.get(e.sessionId)===t&&(this.push(e,a),this.feeds.get(e.sessionId)!==e)))return;if(o-e.summarizedAt>=6e4&&this.summarize(e,`running`),r.again){this.draw(e);return}let s=r.superseded??{frame:a,at:i};this.schedule(e,s.frame,s.at,o)}schedule(e,t,n,r){let i=t?.moves===!0,a=i&&this.shown(e);a&&e.moving++,i&&!a&&e.unseen++;let o=a?this.deps.periods.moving:this.deps.periods.still;e.phase={kind:`due`,timer:setTimeout(()=>void this.draw(e),Math.max(0,n+o-r))}}shown(e){let t=this.requests.get(e.sessionId);return t===void 0||this.deps.shown(t.req)}countFailure(e,t){t.failure!==null&&e.failed++}push(e,t){let n=this.requests.get(e.sessionId);if(n!==void 0){let t=this.deps.lanes(n.req);for(let n of[...e.sinks])t[n.lane]||(this.unsubscribe(e,n),this.refuse(e.sessionId,n))}if(e.sinks.size===0)return;let{resp:r}=t,i=JSON.stringify(r);if(e.last?.bytes!==i){e.last={resp:r,bytes:i,drawnAt:t.drawnAt},this.pushed++,e.pushed++,t.failure!==null&&this.deps.log(t.failure.level,t.failure.line);for(let t of e.sinks)t.frame(r,i)}}refuse(e,t){this.refused++,this.deps.log(`info`,`feed sid=${JSON.stringify(e)} refused lane=${t.lane} switched-off`),t.refused({ok:!1,error:no(t.lane),code:`SWITCHED_OFF`,daemonV:3})}summarize(e,t){let n=this.deps.now();this.deps.log(`info`,`feed sid=${JSON.stringify(e.sessionId)} ${t} subscribers=${e.sinks.size} lanes=${[...e.sinks].map(e=>e.lane).join(`,`)||`-`} for=${Math.round((n-e.since)/1e3)}s drawn=${e.drawn} noted=${e.noted} moving=${e.moving} unseen=${e.unseen} failed=${e.failed} pushed=${e.pushed} meanDraw=${e.drawn===0?`-`:(e.drawMs/e.drawn).toFixed(2)}ms`),e.summarizedAt=n}};function tZ(e){let t=null;return e.on(`drain`,()=>{let n=t;t=null,n!==null&&e.write(n)}),n=>{if(e.writable){if(e.writableNeedDrain){t=n;return}e.write(n)}}}const nZ=`#{pane_id} #{session_id} #{session_attached} #{window_active} #{window_zoomed_flag} #{pane_active}`,rZ=`#{session_id} #{client_control_mode}`;function iZ(e){let t=new Set;for(let n of e.split(`
|
|
487
|
+
`)){let[e,r]=n.trim().split(` `);e!==void 0&&r===`1`&&t.add(e)}return t}function aZ(e,t){let n=new Set;for(let r of e.split(`
|
|
488
|
+
`)){let[e,i,a,o,s,c]=r.trim().split(` `);e===void 0||e===``||i===void 0||Number(a)>0&&(o===`1`||t.has(i))&&(s!==`1`||c===`1`)&&n.add(e)}return n}var oZ=class{servers=new Map;loop={kind:`idle`};constructor(e){this.deps=e}follow(){switch(this.loop.kind){case`idle`:this.deps.log(`info`,`visibility following`),this.ask();break;case`asking`:this.loop.following=!0;break;case`due`:break}return()=>this.stop()}stop(){switch(this.loop.kind){case`due`:clearTimeout(this.loop.timer),this.end();return;case`asking`:this.loop.following=!1;return;case`idle`:return}}ask(){let e={kind:`asking`,following:!0};this.loop=e,Promise.resolve().then(()=>this.refresh(this.deps.sockets())).catch(e=>this.deps.log(`error`,`visibility refresh threw: ${T(e)}`)).then(()=>{if(e.following){this.loop={kind:`due`,timer:setTimeout(()=>this.ask(),this.deps.intervalMs).unref()};return}this.end()})}end(){this.deps.log(`info`,`visibility stopped forgot=${this.servers.size}`),this.loop={kind:`idle`},this.servers.clear()}shown(e){if(e==null)return!0;let t=this.servers.get(e.socket);return t?.kind!==`asked`||t.shown.has(e.pane)}async refresh(e){for(let t of this.servers.keys())e.has(t)||this.servers.delete(t);let t=await Promise.all([...e].map(async e=>{let[t,n]=await Promise.all([this.deps.listPanes(e),this.deps.listClients(e)]);return[e,t.kind===`ok`?n.kind===`ok`?{kind:`asked`,shown:aZ(t.stdout,iZ(n.stdout))}:{kind:`unasked`,reason:n.reason}:{kind:`unasked`,reason:t.reason}]})),n=new Set;for(let[e,r]of t){let t=this.servers.get(e);this.servers.set(e,r),!sZ(t,r)&&(n.add(e),this.deps.log(r.kind===`asked`?`info`:`warn`,r.kind===`asked`?`visibility socket=${JSON.stringify(e)} shown=${[...r.shown].join(`,`)||`-`}`:`visibility socket=${JSON.stringify(e)} unasked: ${r.reason} — its panes count as shown`))}n.size>0&&this.deps.onChange(n)}};function sZ(e,t){return e===void 0||e.kind!==t.kind?!1:e.kind===`unasked`||t.kind===`unasked`?!0:e.shown.size===t.shown.size&&[...e.shown].every(e=>t.shown.has(e))}const cZ={order:-1/0,text:null,failure:null};var lZ=class{synced=new Map;constructor(e){this.dir=e}pathFor(e){return v.join(this.dir,`${encodeURIComponent(e)}.txt`)}sync(e,t,n){let r=this.synced.get(e)??cZ;if(t<r.order)return{link:this.linkFor(e,n),failure:null};let i=n===r.text&&r.failure===null?null:this.write(e,n);return this.synced.delete(e),this.synced.set(e,{order:t,text:n,failure:i}),this.forgetOldestClean(),{link:this.linkFor(e,n),failure:i}}linkFor(e,t){let n=this.synced.get(e)??cZ;return n.text===t?n.failure===null?{kind:`file`,path:this.pathFor(e)}:{kind:`unavailable`,reason:n.failure}:{kind:`unavailable`,reason:`the file holds another render's text until the session's next statusline request`}}forgetOldestClean(){let e=0;for(let t of this.synced.values())t.text===null&&t.failure===null&&e++;for(let[t,n]of this.synced){if(e<=256)return;n.text!==null||n.failure!==null||(this.synced.delete(t),e--)}}write(e,t){let n=this.pathFor(e);try{return t===null?s.rmSync(n,{force:!0}):(s.mkdirSync(this.dir,{recursive:!0,mode:448}),s.writeFileSync(n,t,{mode:384})),null}catch(e){return`${n}: ${e.message}`}}reset(){this.synced.clear();try{return s.rmSync(this.dir,{recursive:!0,force:!0}),null}catch(e){return`${this.dir}: ${e.message}`}}};function uZ(e,t){for(let n of Object.entries(t))e.push(n)}const dZ={ok:`info`,"bad-request":`warn`,threw:`error`};function fZ(e){switch(e.kind){case`ok`:return[];case`bad-request`:return[[`problems`,e.problems.join(`; `)]];case`threw`:return[[`error`,T(e.error)]]}}function pZ(e,t,n){let r=[...e,[`took`,`${n}ms`],[`outcome`,t.kind],...fZ(t)];return{level:dZ[t.kind],line:`render${r.map(([e,t])=>` ${e}=${fj(t)}`).join(``)}`}}function mZ(){var e=typeof SuppressedError==`function`?SuppressedError:function(e,t){var n=Error();return n.name=`SuppressedError`,n.error=e,n.suppressed=t,n},t={},n=[];function r(e,t){if(t!=null){if(Object(t)!==t)throw TypeError(`using declarations can only be used with objects, functions, null, or undefined.`);if(e)var r=t[Symbol.asyncDispose||Symbol.for(`Symbol.asyncDispose`)];if(r===void 0&&(r=t[Symbol.dispose||Symbol.for(`Symbol.dispose`)],e))var i=r;if(typeof r!=`function`)throw TypeError(`Object is not disposable.`);i&&(r=function(){try{i.call(t)}catch(e){return Promise.reject(e)}}),n.push({v:t,d:r,a:e})}else e&&n.push({d:t,a:e});return t}return{e:t,u:r.bind(null,!1),a:r.bind(null,!0),d:function(){var r,i=this.e,a=0;function o(){for(;r=n.pop();)try{if(!r.a&&a===1)return a=0,n.push(r),Promise.resolve().then(o);if(r.d){var e=r.d.call(r.v);if(r.a)return a|=2,Promise.resolve(e).then(o,s)}else a|=1}catch(e){return s(e)}if(a===1)return i===t?Promise.resolve():Promise.reject(i);if(i!==t)throw i}function s(n){return i=i===t?n:new e(n,i),o()}return o()}}}const hZ=new wG,gZ=new aY,_Z=new eA,vZ=i(import.meta.url);Fe(hZ.launchStats);const yZ=new EE({counters:hZ,logger:N}),bZ=WH({watchers:yZ,logger:N}),{gitProvider:xZ,usageStore:SZ,mementoProvider:CZ}=bZ,wZ=new DG,TZ=new LK(wZ,N),EZ=new oq,DZ=new _g,OZ=new eZ({render:e=>mQ(e),watch:(e,t)=>(0,Hv.reaction)(()=>wZ.revision(e),t,{scheduler:e=>fe(e)}),lanes:e=>gQ(e),shown:e=>kZ.shown(e.hints.tmux),watching:()=>kZ.follow(),periods:$X,now:()=>Date.now(),log:N}),kZ=new oZ({listPanes:e=>zH({socket:e},`frames.visibility`,[`list-panes`,`-a`,`-F`,nZ]),listClients:e=>zH({socket:e},`frames.visibility`,[`list-clients`,`-F`,rZ]),sockets:()=>new Set(OZ.watched().flatMap(({req:e})=>AZ(e))),onChange:e=>OZ.wakeWhere(t=>AZ(t).some(t=>e.has(t))),intervalMs:1e3,log:N});function AZ({hints:{tmux:e}}){return e==null?[]:[e.socket]}const jZ=new lZ(ot()),MZ=new SG({gitService:xZ,sessionState:wZ,watchers:yZ,log:N},{observers:{onReload:e=>N(`info`,`config loaded projectDir=${e.projectDir} cwd=${e.cwd} files=${e.configLayers.join(` < `)||`<bundled default>`} error=${e.lastError===null?`none`:JSON.stringify(e.lastError)} warning=${e.lastWarning===null?`none`:JSON.stringify(e.lastWarning)}`)}}),NZ=60*1e3,PZ=OV({targets:[...new Set([...import.meta.url.startsWith(`file://`)?[i(import.meta.url)]:[],...t.argv[1]?[t.argv[1]]:[]])],intervalMs:NZ,stat:s.statSync,exit:()=>XZ(0),log:N}),FZ=TV({entryUrl:import.meta.url,intervalMs:NZ,releaseIntervalMs:216e5,registryUrl:t.env.CC_CANDYBAR_REGISTRY_URL??`https://registry.npmjs.org`,fetchImpl:fetch,onApplied:()=>PZ.checkNow(),log:N});let IZ=null,LZ=null,RZ=0;function zZ(){t.on(`uncaughtException`,e=>{N(`error`,`uncaughtException: ${e.stack||e.message}`),XZ(1)}),t.on(`unhandledRejection`,e=>{N(`error`,`unhandledRejection: ${String(e)}`),XZ(1)});for(let e of[`SIGINT`,`SIGTERM`,`SIGHUP`])t.on(e,()=>{N(`info`,`received ${e}, shutting down`),XZ(0)});try{KZ(t.env)}catch(e){N(`error`,`refusing to boot: ${e.message}`),XZ(1);return}IZ=Ra(t.pid);let e=Ja(Xa(IZ));if(!e.decision.allow){N(`warn`,`fork-bomb breaker: ${e.decision.reason}; refusing to boot`),XZ(1);return}LZ=e.registryPath,s.mkdirSync(qe(),{recursive:!0}),Ze(Je()),wZ.useStorage(new kG(et(),500,N)),TZ.useStorage(iq(tt(),N)),Va({anchor:Ba(t.env),isAlive:Ha,onOrphaned:e=>{N(`info`,`parent watchdog: ${e}; shutting down`),XZ(0)}}),BZ(D.createServer({allowHalfOpen:!1},e=>{ZZ(e)}),Je(),!1)}function BZ(e,n,r){e.removeAllListeners(`error`),e.removeAllListeners(`listening`),e.once(`error`,i=>{if(i.code!==`EADDRINUSE`){N(`error`,`server error: ${i.message}`),XZ(1);return}if(r){N(`info`,`lost rebind race; another daemon is alive — exiting`),t.exit(0);return}VZ(e,n)}),e.listen(n,()=>HZ(n))}function VZ(e,n){let r=Oa(ka(Qe(n)),(e,t)=>La(e,t,{readStartTime:Ia,pidAlive:Ha}));if(r.kind===`attach-and-exit`){N(`info`,`EADDRINUSE: ${r.reason} — exiting`),t.exit(0);return}N(`warn`,`EADDRINUSE: ${r.reason} — unlinking stale socket and rebinding`);try{s.unlinkSync(n)}catch(e){if(e.code!==`ENOENT`){N(`error`,`cannot unlink stale socket ${n}: ${e.message}`),XZ(1);return}}BZ(e,n,!0)}function HZ(e){let n=Ma(e);if(n.kind!==`present`){N(`warn`,`no ownable socket at bind callback (${n.kind}); exiting`),XZ(0);return}qZ(e);try{s.chmodSync(e,384)}catch(e){N(`warn`,`chmod socket failed: ${e.message}`)}N(`info`,`daemon up: pid=${t.pid} v=3 sock=${e} heapCap=${nn(ie.getHeapStatistics().heap_size_limit)}MB rssLimit=${nn(RZ)}MB`),Sn();let r=jZ.reset();r!==null&&N(`warn`,`diagnostic dump wipe failed: ${r}`),PZ.arm(),FZ.arm(),GZ().arm(),UZ(e,n.identity)}function UZ(e,n){Fa({bound:n,myPid:t.pid,readIdentity:()=>Ma(e),readLease:()=>ka(Qe(e)),shutdown:e=>XZ(e),log:N}).arm()}let WZ=null;function GZ(){if(WZ===null)throw Error(`daemon: limits not yet established`);return WZ}function KZ(e){RZ=rn(e),WZ=un(pn(hZ.startedAt.getTime(),e=>XZ(e),{rssLimitBytes:RZ}))}function qZ(e){let n=Aa(Qe(e),{pid:t.pid,version:3,binPath:t.argv[1],startTime:IZ});n!==null&&N(`warn`,`lease write failed: ${n}`)}let JZ=0,YZ=!1;function XZ(e){if(!YZ){YZ=!0,setTimeout(()=>t.kill(t.pid,`SIGKILL`),500);try{xZ.close()}catch(e){N(`warn`,`gitService close failed: ${e.message}`)}try{SZ.close()}catch(e){N(`warn`,`usageStore close failed: ${e.message}`)}try{yZ.closeAll()}catch(e){N(`warn`,`watcherRegistry close failed: ${e.message}`)}try{wZ.flush()}catch(e){N(`warn`,`sessionState flush failed: ${e.message}`)}ja($e(),t.pid),LZ!==null&&Ya(LZ,t.pid,Ka,e=>s.unlinkSync(e)),t.exit(e)}}function ZZ(e){JZ++,hZ.inFlight=JZ;let t=!1,n=!0,r=()=>{n&&(n=!1,JZ=Math.max(0,JZ-1),hZ.inFlight=JZ)},i=(n,r,i)=>{if(t){r!==null&&N(`warn`,`exit-after-flush dropped: an earlier responder settled this socket`);return}t=!0;let a=r===null?void 0:()=>XZ(r);try{e.end(Tt(n),e=>{e??i(),a?.()})}catch(e){N(`warn`,`response write failed: ${e.message}`),a?.()}},a=!1,o=setTimeout(()=>{a=!0,hZ.requestsTimedOut++,i({ok:!1,error:`request exceeded 200ms`,code:`TIMEOUT`,daemonV:3},null,QZ)},200),s=Dt(e=>{aQ(e,()=>a).then(e=>e.kind===`reply`?i(e.resp,e.exitAfterFlush,e.delivered):c(e.sessionId,e.lane)).catch(e=>{N(`error`,`handler threw: ${T(e)}`),i(nQ(e),null,QZ)})},e=>{N(`warn`,`frame parse failed: ${e.message}`),i({ok:!1,error:e.message,code:`BAD_REQUEST`,daemonV:3},null,QZ)}),c=(n,i)=>{if(t||e.destroyed)return;clearTimeout(o),r(),e.off(`data`,s);let a=tZ(e),c=OZ.subscribe(n,{lane:i,frame:(e,t)=>a(Et(VV[i](e,t))),refused:t=>e.end(Tt(t))});t=!0,e.on(`close`,c)};e.on(`data`,s),e.on(`error`,e=>{N(`warn`,`socket error: ${e.message}`)}),e.on(`close`,()=>{clearTimeout(o),r()})}const QZ=()=>{},$Z=e=>({resp:e,exitAfterFlush:null,delivered:QZ}),eQ=e=>({kind:`reply`,...e}),tQ={render:!0,"pane-session":!0,shutdown:!0,stats:!0,click:!0,debug:!0},nQ=e=>({ok:!1,error:e instanceof Error?e.message:T(e),code:`RENDER_FAILED`,daemonV:3}),rQ=(e,t)=>eQ($Z({ok:!1,error:t,code:e,daemonV:3}));function iQ(e){if(typeof e.sessionId!=`string`||e.sessionId===``)return rQ(`BAD_REQUEST`,`subscribe needs a non-empty string sessionId`);if(e.lane===void 0)return rQ(`VERSION_MISMATCH`,`this client's subscribe names no lane (${Qa.join(`, `)}): it predates the lane toggles — update it`);let t=eo(e.lane);return t===null?rQ(`BAD_REQUEST`,`subscribe needs a lane, one of ${Qa.join(`, `)}: got ${JSON.stringify(e.lane)}`):{kind:`subscribe`,sessionId:e.sessionId,lane:t}}async function aQ(e,t){return!e||typeof e!=`object`||typeof e.v!=`number`?rQ(`BAD_REQUEST`,`malformed request`):e.v===3?e.kind===`subscribe`?iQ(e):typeof e.kind!=`string`||!Object.hasOwn(tQ,e.kind)?rQ(`BAD_REQUEST`,`unknown kind`):eQ(await oQ(e,t)):(e.v>3?N(`info`,`version mismatch: client=${e.v} > daemon=3; binary likely upgraded — exiting after the response flushes`):N(`info`,`version mismatch: client=${e.v} < daemon=3; client is stale — staying up`),{kind:`reply`,resp:{ok:!1,error:`protocol v${e.v} not supported (daemon at v3)`,code:`VERSION_MISMATCH`,daemonV:3},exitAfterFlush:e.v>3?0:null,delivered:QZ})}async function oQ(e,t){if(e.kind===`shutdown`)return{resp:{ok:!0,output:``},exitAfterFlush:0,delivered:QZ};if(e.kind===`pane-session`){let{socket:t,pane:n}=e;return $Z(typeof t!=`string`||typeof n!=`string`?{ok:!1,error:`pane-session needs a string socket and pane`,code:`BAD_REQUEST`,daemonV:3}:{ok:!0,paneSession:OZ.newestWhere(({hints:{tmux:e}})=>e!=null&&e.socket===t&&e.pane===n)})}if(e.kind===`stats`)return $Z({ok:!0,stats:hZ.snapshot({gitCache:xZ.getStats(),usageCache:SZ.getStats(),renderCache:MZ.stats,effectCache:DZ.getStats(),sessionState:{sessions:wZ.size(),observers:wZ.observers(),revision:wZ.latestRevision()},frameFeeds:OZ.getStats(),watchersActive:yZ.size(),nextRestartReason:GZ().describeNextRestart(),handlerProbes:gZ.list(),clients:_Z.list(RE(new Date)),bundle:vZ,daemon:GZ().serving()})});if(e.kind===`render`){let n=new Date,r=RE(n),i=n.getTime(),a=[],o=++hZ.requestsTotal,s=_Q(e),c=(e,t)=>_Z.see(e.hookData.session_id,{client:e.hints.client??null,rateLimits:e.rateLimits,claudeConfigDir:Fi(e.hints.claudeConfigDir),transcript:Xk(e.hookData),frame:t},r,o);s.ok&&c(s.req,`drawing`);let l=s.ok?await CQ(s.req,o,r,a).then(({output:e,motion:t,clickShown:n})=>{c(s.req,t);let r={ok:!0,output:e};return OZ.note(s.req.hookData.session_id,s.req,o,{resp:r,drawnAt:i,moves:t===`moves`,failure:null}),{outcome:{kind:`ok`},resp:r,delivered:n===null?QZ:()=>lq(wZ,s.req.hookData.session_id,n)}},e=>(c(s.req,`failed`),{outcome:{kind:`threw`,error:e},resp:nQ(e),delivered:QZ})):vQ(s.problems);l.outcome.kind!==`ok`&&hZ.requestsErrored++,uZ(a,{timedOut:t()?`Y`:`N`});let{level:u,line:d}=pZ(a,l.outcome,Date.now()-i);return N(u,d),{resp:l.resp,exitAfterFlush:null,delivered:l.delivered}}if(e.kind===`click`)return $Z(pQ(e.verb,e.value,Ct(e.clientVersion)));if(e.kind===`debug`){if(!ZX(e.what))return $Z({ok:!1,error:`unknown debug 'what': ${String(e.what)} (have: ${XX.join(`, `)})`,code:`BAD_REQUEST`,daemonV:3});let t=MZ.firstState(),n=t===null?null:{store:t.store,registry:t.registry,config:t.config,compiled:t.compiled,lastRenderBySegment:e.what===`segments`?dQ(t.lastRenderCellsBySegment,t.config.globals.colorCompatibility??`truecolor`):uQ};return $Z({ok:!0,debug:zX(e.what,n)})}throw Error(`no reply for request ${T(e)}`)}function sQ(e,t){let{values:n,tokens:r}=re({args:e.slice(1),options:{config:{type:`string`}},strict:!1,tokens:!0,allowPositionals:!0}),i=[...new Set((r??[]).filter(e=>e.kind===`option`&&e.name!==`config`).map(e=>`--${e.name}`))];return{configFile:eR(t,n.config),unknownFlagsError:i.length>0?`Unknown flags: ${i.join(`, `)}`:null}}const cQ={sessionState:wZ,dlog:N,applyUpdate:()=>FZ.act(),doctor:OJ(e=>{let t=[e.projectDir,e.cwd,e.configFile??void 0];MZ.reload(...t);let n=MZ.getOrCreate(...t);return{layers:n.configLayers,error:n.lastError,warning:n.lastWarning,unused:n.state.unused,config:n.state.config}}),probes:gZ,clients:_Z,bundle:vZ,serving:()=>GZ().serving(),memento:CZ,claudeInput:TY(),history:TZ,navigation:EZ,configFor:e=>MZ.getOrCreate(e.projectDir,e.cwd,e.configFile??void 0).state.config,reloadConfig:e=>MZ.reload(e.projectDir,e.cwd,e.configFile??void 0)};cQ.reloadConfig;const lQ={endcaps:`powerline`,colorCompatibility:`truecolor`,wrap:!0,padding:1,width:1/0},uQ=new Map;function dQ(e,t){let n=new Map;for(let[r,i]of e)n.set(r,Ag(i,{...lQ,colorCompatibility:t}));return n}const fQ={...bZ,history:e=>TZ.depth(e)};function pQ(e,t,n){let r=jX.get(e);if(!r)return{ok:!1,error:`unknown click verb: ${e}`,code:`BAD_REQUEST`,daemonV:3};try{return r(t,{...cQ,clientVersion:n}),{ok:!0,output:``}}catch(e){let t=e instanceof q?`BAD_REQUEST`:`RENDER_FAILED`;return{ok:!1,error:String(e instanceof Error?e.message:e),code:t,daemonV:3}}}async function mQ(e){let t=new Date,n=[];try{let{drawn:r,motion:i}=await yQ(e,RE(t),n,`frame`);return{resp:{ok:!0,output:bQ(r,jZ.linkFor(e.hookData.session_id,xQ(r)))},drawnAt:t.getTime(),moves:i===`moves`,failure:null}}catch(e){let{level:r,line:i}=pZ(n,{kind:`threw`,error:e},Date.now()-t.getTime());return{resp:nQ(e),drawnAt:t.getTime(),moves:!1,failure:{level:r,line:`frame ${i}`}}}}function hQ(e,t){return Gz(t.config,t=>wZ.get(e,t),e=>t.authoredRoots.has(e))}function gQ(e){try{var t=mZ();let n=e.hookData.session_id,r=UY(e.requested,wZ,n);return hQ(n,t.u(MZ.hold(r.projectDir,r.cwd,r.configFile??void 0)).state).lanes}catch(e){t.e=e}finally{t.d()}}function _Q(e){let{report:t}=FX(e.hookData);for(let e of t.unknownTopLevelFields)N(`info`,`schema: unknown field '${e}' — Anthropic may have added it`);let n=[];for(let e of t.missingRequired)n.push(`missing required field '${e}'`);for(let{path:e,expected:r,got:i}of t.typeMismatches)n.push(`field '${e}' expected ${r}, got ${i}`);if((typeof e.cwd!=`string`||!x(e.cwd))&&n.push(`request 'cwd' is not an absolute path: ${JSON.stringify(e.cwd)}`),(!Array.isArray(e.args)||!e.args.every(e=>typeof e==`string`))&&n.push(`request 'args' is not a list of strings: ${JSON.stringify(e.args)}`),n.length>0)return{ok:!1,problems:n};let r=mt(e),{configFile:i,unknownFlagsError:a}=sQ(e.args,e.cwd);return{ok:!0,req:{...e,hints:r,rateLimits:Yk(e.hookData),requested:{projectDir:e.hookData.workspace.project_dir,cwd:e.cwd,configFile:i??r.configEnv??null},unknownFlagsError:a}}}const vQ=e=>({outcome:{kind:`bad-request`,problems:e},resp:{ok:!1,error:`malformed hookData: ${e.join(`; `)}`,code:`BAD_REQUEST`,daemonV:3},delivered:QZ});async function yQ(e,t,n,r){try{var i=mZ();uZ(n,{sid:e.hookData.session_id,at:t.toFixed(3)});let{unknownFlagsError:a}=e,o=e.hookData.session_id,s=e.hints,c=j(e,s),l=ht(c);uZ(n,{termCols:String(s.termCols??`?`),termRows:String(s.termRows??`?`),refused:c.map(e=>e.hint).join(`,`)||`-`,client:s.client?.kind??`unreported`,rateLimits:e.rateLimits});let u=UY(e.requested,wZ,o),{entry:d,state:f}=i.u(MZ.hold(u.projectDir,u.cwd,u.configFile??void 0)),p=s.termCols,m=QX(p??120),h=jg(s.termRows);uZ(n,{width:String(m)});let g=t=>wZ.get(e.hookData.session_id,t),_=hQ(o,f);uZ(n,{lanes:Qa.filter(e=>_.lanes[e]).join(`,`)||`-`});let v=await pB(e.hookData,t,{...fQ,navigation:e=>EZ.depth(e,wZ,rV(f.config))},e.cwd,f.neededInputPaths(_.preset),_,s,{...WB(f.config,f.fileHeldSettings,g),configPath:d.configLayers.includes(d.configHome)?d.configHome:null});uZ(n,{prompts:String(v.metrics?.messageCount??`-`),nonPrompts:String(v.metrics?.nonPrompts??`-`),pr:Xz(v.git)});let y=[],b=Kz(_,m),x=DZ.of(o),S=eG(f.config,f.compiled,f.store,f.registry,v,t,b,{perSegmentSink:f.lastRenderCellsBySegment,onRenderWarning:e=>y.push(e)},{...qz(_),effects:x}),C=dq(wZ,o,t,r),w=C.kind===`held`||C.kind===`owed`?C.error:null,ee=w?.text??null,te=[a,l,d.lastError,ee].filter(Boolean).join(`
|
|
489
|
+
`),ne=FZ.notice({sessionId:o,dismissed:wZ.get(o,lV),enabled:_.updateNotice}),T=d.lastError===null?null:d.failedFile,re=[...d.lastWarning===null?[]:[{kind:`load`,message:d.lastWarning}],...y],E=Ig(te,ne,re.map(e=>e.message).join(`
|
|
490
|
+
`)),D=xZ.getStats(),ie=SZ.getStats(),O=x.lastFrame(),ae=O.own.map(e=>`${e.placement}:${e.effect}@${e.t.toFixed(3)}`).join(`,`)||`-`,oe=e=>e.map(e=>`${e.placement}@${e.t.toFixed(3)}`).join(`,`)||`-`,se=re.map(e=>{switch(e.kind){case`rule`:return`rule:${e.slot}`;case`refresh`:return`refresh:${e.variable}`;case`load`:case`band-floor`:case`when`:return e.kind}}).join(`,`)||`-`;return uZ(n,{git:`${D.size}/${D.hits}h/${D.misses}m`,usage:`${ie.size}/${ie.hits}h/${ie.misses}m`,effect:O.effect,effectT:O.t.toFixed(3),effectRows:`${O.made}made/${O.reused}reused`,effectOwn:ae,fadeBasis:O.basis,stateRev:String(O.revision),fades:oe(O.fades),leaves:oe(O.leaves),motion:S.motion,err:te?`Y`:`N`,clickError:C.kind===`none`?`-`:C.kind,upd:String(ne.length),warn:se}),{drawn:{body:S.text,diagnostics:E,failedConfigFile:T,geometry:{width:m,rowCap:h,colorCompatibility:_.colorCompatibility}},motion:S.motion,clickShown:w}}catch(e){i.e=e}finally{i.d()}}function bQ(e,t){return zg(e.body,e.diagnostics,{fullText:t,failedConfigFile:e.failedConfigFile},e.geometry)+`
|
|
491
|
+
`}function xQ(e){return e.diagnostics===null?null:Rg(e.diagnostics)}function SQ(e){let t=e.hookData.session_id,{client:n,...r}=e.hints,i=JSON.stringify(r);wZ.get(t,`client-hints`)!==i&&wZ.set(t,hX,i);let a=WY(e.requested);wZ.get(t,`render-origin`)!==a&&wZ.set(t,HY,a)}async function CQ(e,t,n,r){SQ(e);let{drawn:i,motion:a,clickShown:o}=await yQ(e,n,r,`request`),{link:s,failure:c}=jZ.sync(e.hookData.session_id,t,xQ(i));return uZ(r,{dumpFailed:c===null?`-`:JSON.stringify(c)}),{output:bQ(i,s),motion:a,clickShown:o}}const wQ={connectMs:200,budgetMs:500};async function TQ(e,n){let r=n.includes(`--json`),i=await EQ(e);if(i.kind!==`ok`&&(t.stderr.write(`${e}: ${It(i)}\n`),t.exit(1)),r){t.stdout.write(JSON.stringify(i.value,null,2)+`
|
|
492
|
+
`);return}t.stdout.write(DQ(i.value))}function EQ(e){return At({kind:`debug`,what:e},wQ,e=>`debug`in e?e.debug:void 0)}function DQ(e){switch(e.what){case`vars`:return OQ(e.vars);case`segments`:return kQ(e.segments);case`config`:return AQ(e.config);default:return e}}function OQ(e){if(e.length===0)return`no variables (DSL not active)
|
|
493
|
+
`;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?``:` ${MQ(a.ageMs)}`,o=a.lastError?` ✗ ${a.lastError.message}`:``;t.push(` ${a.name.padEnd(n)} ${(a.source??`—`).padEnd(r)} ${a.type.padEnd(i)} ${jQ(a.value)}${e}${o}`)}return t.join(`
|
|
494
494
|
`)+`
|
|
495
|
-
`}function
|
|
495
|
+
`}function kQ(e){if(e.length===0)return`no segments (DSL not active)
|
|
496
496
|
`;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(`
|
|
497
497
|
`)+`
|
|
498
|
-
`}function
|
|
498
|
+
`}function AQ(e){return e===null?`config: DSL not active
|
|
499
499
|
`:JSON.stringify(e,null,2)+`
|
|
500
|
-
`}function
|
|
500
|
+
`}function jQ(e){let t=typeof e==`string`?e:JSON.stringify(e);return t.length>60?t.slice(0,57)+`…`:t}function MQ(e){return e<1e3?`${e}ms`:e<6e4?`${(e/1e3).toFixed(1)}s`:`${Math.floor(e/6e4)}m`}function NQ(){let e=FQ();return e===null?null:s.readFileSync(e,`utf-8`)}function PQ(){let e;try{e=NQ()}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 FQ(){let e=v.join(`schema`,`cc-candybar.schema.json`),n=t.argv[1];if(n===void 0)return null;let r=v.dirname(v.resolve(n));for(;;){let t=v.join(r,e);if(s.existsSync(t))return t;let n=v.dirname(r);if(n===r)return null;r=n}}function IQ(e,t){return eR(t,e.CC_CANDYBAR_CONFIG)}const LQ=5e3;function RQ(e,t,n){let r=`/home/tester`,i=Math.floor(n),a=`test0a1b-2c3d-4e5f-6a7b-8c9d0e1f2a3b`,o={current_dir:`${r}/code/cc-candybar/src`,project_dir:`${r}/code/cc-candybar`,added_dirs:[]};return{hook_event_name:`Status`,session_id:a,version:`1.15.0`,home:r,cwd:`${r}/code/cc-candybar/src`,transcript_path:`${r}/.claude/projects/x/test.jsonl`,model:{id:`claude-opus-4-8`,display_name:`Opus 4.8`},effort:{level:`xhigh`},workspace:o,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`,tracking:`tracked`,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:i+2*3600},weekly:{percentage:21,resetsAt:i+5*86400},cache:{expiresAt:i+900},tmux:{pane:`%0`,session:`work`},host:{name:`tester-box`,user:`tester`,ssh:!0},autocompact:Uj(4e5,1e6),...Jz(e),history:{undo:1,redo:1,sinceEdit:1},navigation:{back:1},unsaved:1,resettable:uo(()=>!0),themeDefault:{differs:!0,theme:`<theme>`},resumeCommand:Wz(o,a,void 0),configPath:t??`${r}/.config/cc-candybar/config.json5`}}function zQ(e,t){let n=RR(e,e),r=VR(n);return r!==null&&t.push(r),n.kind===`chain`?n.layers:[]}async function BQ(e,n=t.cwd()){let r=[],i=eR(n,e)??null,a=i===null?zQ(n,r):[i];if(i!==null){let e;try{e=s.statSync(i,{throwIfNoEntry:!1})}catch(e){return{kind:`unreadable`,path:i,message:e instanceof Error?e.message:String(e)}}if(e!==void 0&&!e.isFile())return{kind:`unreadable`,path:i,message:`not a file`}}let o=UR(n,n);o!==null&&r.push(o);try{return{kind:`clean`,layers:a,warnings:r,rendered:await UQ(a,n,r)}}catch(e){let t=e;return typeof t==`object`&&t&&typeof t.code==`string`&&typeof t.path==`string`&&a.includes(t.path)&&typeof t.message==`string`?{kind:`unreadable`,path:t.path,message:t.message}:(e instanceof mD&&r.push(...e.warnings),{kind:`fatal`,layers:a,message:e instanceof mD||e instanceof Error?e.message:String(e),warnings:r})}}async function VQ(e,t,n){let r=ZR(e,bz,{entered:()=>{},warned:e=>n.push(...e)},{projectDir:t,cwd:t}),{config:i}=r,a=new fG,o=new cD(a,i.globals.default_empty_value??``,void 0,new DG);try{let s=KW(i,o,{cwd:t});n.push(...s.loadWarnings);let c=await o.settled(LQ);return c.length>0&&n.push(`source${c.length===1?``:`s`} still running after ${LQ} ms, rendered with fallback values: ${c.join(`, `)}`),{layers:e,droppedPlugins:[...r.installed.dropped,...r.layers.flatMap(e=>e.plugins.dropped)],config:i,compiled:s,store:a,registry:o}}catch(e){throw o.dispose(),e}}function HQ({layers:e,config:t,compiled:n,store:r,registry:i},a,o,s){let c=new Map,l=new Set;return{rendered:$W(t,n,r,i,RQ(a,e.at(-1)??null,s),s,Kz(a,o),{onSegmentError:(e,t)=>c.set(`segment "${e}"`,t),onRenderWarning:e=>{switch(e.kind){case`rule`:c.set(`${e.slot} rule`,e.message);return;case`when`:c.set(e.where,e.error);return;case`refresh`:c.set(`variable "${e.variable}"`,`cannot refresh: ${e.error}`);return;case`band-floor`:l.add(e.message);return;default:}}},qz(a)),failures:c,advisories:l}}async function UQ(e,t,n){let r=await VQ(e,t,n),{config:i}=r,a=RE(new Date);try{let e=wV();try{rV(i),SP(i)}finally{e()}let t=iv(null,i.globals.preset,i.presets),o=(e,t)=>{let n=Gz(i,t=>t===`preset`?e:null,()=>t),o;try{o=HQ(r,n,200,a)}catch(e){o={failures:new Map([[`render`,e instanceof Error?e.message:String(e)]]),advisories:new Set}}return{preset:e,customized:t,...o}},s=o(t,!1),c=[s,o(t,!0),...rv(i.presets).filter(e=>e!==t).flatMap(e=>[o(e,!1),o(e,!0)])],l=e=>{let n=new Map;for(let t of c)for(let r of e(t)){let e=n.get(r)??new Map;e.set(t.preset,(e.get(t.preset)??new Set).add(t.customized)),n.set(r,e)}return[...n].map(([e,n])=>n.get(t)?.has(!1)?e:`${e} (under ${[...n].map(([e,n])=>[...e===t?[]:[`preset "${e}"`],...n.has(!1)?[]:[`.preset.customized = true`]].join(`, `)).join(`; `)})`)};n.push(...l(e=>e.advisories));let u=l(e=>[...e.failures].map(([e,t])=>`${e}: ${t}`)),d=s.rendered,f=r.droppedPlugins.length,p=[...f>0?[`${f} plugin${f===1?``:`s`} did not load (named in the warnings)`]:[],...u.length>0||d===void 0?[`config renders with ${u.length} render error${u.length===1?``:`s`} (the daemon would show them on the bar):\n`+u.map(e=>` ${e}`).join(`
|
|
501
501
|
`)]:[]];if(p.length>0||d===void 0)throw Error(p.join(`
|
|
502
|
-
`));return d}finally{r.registry.dispose()}}function
|
|
503
|
-
`))delete i[e];r(i,`clone`,`--quiet`,`--depth`,`1`,`--filter=blob:none`,`--sparse`,`--`,e,n),r(i,`-C`,n,`sparse-checkout`,`set`,`--no-cone`,`/${
|
|
504
|
-
`));let c=a.map(e=>{let n=v.basename(e),r=v.join(t,n);return{folder:e,name:n,target:r,placed
|
|
505
|
-
`).join(` — `)};return{clients:t,rateLimits:t,transcripts:t,frames:t,serving:t}}return{clients:
|
|
502
|
+
`));return d}finally{r.registry.dispose()}}function WQ(e){return e.map(e=>`warning: ${e}\n`).join(``)}function GQ(e,t=!1){switch(e.kind){case`clean`:return{stdout:`✓ ${e.layers.join(` < `)||`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:WQ(e.warnings),code:0};case`fatal`:return{stdout:``,stderr:WQ(e.warnings)+`✗ ${e.layers.join(` < `)||`<default>`}\n${e.message}\n`,code:1};case`unreadable`:return{stdout:``,stderr:`check: cannot read ${e.path}: ${e.message}\n`,code:2}}}const KQ=`--render`,qQ=`Usage: cc-candybar check [${KQ}] [config-file]\n`;function JQ(e){let t=e.filter(e=>e.startsWith(`--`)),n=e.filter(e=>!e.startsWith(`--`)),r=t.filter(e=>e!==KQ);return r.length>0?{kind:`usage`,message:`check: unknown option ${r.join(` `)}\n${qQ}`}:n.length>1||n[0]===``?{kind:`usage`,message:`check: expected at most one non-empty path\n${qQ}`}:{kind:`run`,target:n[0],render:t.includes(KQ)}}async function YQ(e){let n=JQ(e),r=n.kind===`usage`?{stdout:``,stderr:n.message,code:2}:GQ(await BQ(n.target??IQ(t.env,t.cwd())),n.render);t.stdout.write(r.stdout),t.stderr.write(r.stderr),t.exit(r.code)}const XQ=/^[a-z][a-z0-9+.-]*:\/\//i,ZQ=/^[^@\s/]+@[^:\s/]+:/,QQ=/^([A-Za-z0-9-]+\/[A-Za-z0-9._-]+?)(?:\.git)?$/;function $Q(e){if(!URL.canParse(e))return e;let t=new URL(e);return t.password===``?e:(t.password=`***`,t.href)}function e$(e,t,n){let r=$L(t,e);if(n(r))return{kind:`path`,dir:r};if(XQ.test(e)||ZQ.test(e))return{kind:`git`,url:e,shown:$Q(e)};let i=QQ.exec(e);if(i){let e=`https://github.com/${i[1]}.git`;return{kind:`git`,url:e,shown:e}}return{error:`"${e}" is not a directory, a GitHub repo slug (owner/repo) or a git URL`}}function t$(e,t){let n=v.join(e,kR),r=MR(n);if(`error`in r)throw Error(`${t}: could not list ${kR}: ${r.error}`);if(r.folders.length===0)throw Error(`${t} has no plugins: none at ${kR}/<name>/${rR}`);return r.folders.map(e=>v.join(n,e,rR))}function n$(e,t,n){let r=(n,...r)=>{let i=Re({bin:`git`,args:r,env:n,category:`plugin.git`});if(!i.ok)throw Error(`git ${r.map(n=>n===e?t:n).join(` `)} failed (${i.reason}): ${i.stderr.trim()||i.error||``}`);return i.stdout},i={...process.env,GIT_TERMINAL_PROMPT:`0`};for(let e of r(i,`rev-parse`,`--local-env-vars`).split(`
|
|
503
|
+
`))delete i[e];r(i,`clone`,`--quiet`,`--depth`,`1`,`--filter=blob:none`,`--sparse`,`--`,e,n),r(i,`-C`,n,`sparse-checkout`,`set`,`--no-cone`,`/${kR}/`)}function r$(e,t){switch(e.kind){case`path`:return t(e.dir);case`git`:{let n=s.mkdtempSync(v.join(w.tmpdir(),`cc-candybar-plugin-`));try{return n$(e.url,e.shown,v.join(n,`repo`)),t(v.join(n,`repo`))}finally{s.rmSync(n,{recursive:!0,force:!0})}}}}function i$(e){let t;try{t=s.lstatSync(e)}catch(e){if(e.code===`ENOENT`)return`installed`;throw e}if(t.isDirectory())return`updated`;if(t.isSymbolicLink())return`replaced`;throw Error(`${e} is a file, not a plugin folder: move it, then install again`)}function a$(e,t,n,r){switch(r){case`updated`:s.renameSync(v.join(e,rR),v.join(t,rR));return;case`replaced`:s.renameSync(t,n),s.renameSync(e,t);return;case`installed`:s.renameSync(e,t);return}}function o$(e,t,n){let r=t$(e,n);s.mkdirSync(t,{recursive:!0});let i=s.mkdtempSync(v.join(t,`.install-`));try{let a=r.map(e=>{let t=v.join(i,v.basename(v.dirname(e)));s.mkdirSync(t);try{s.copyFileSync(e,v.join(t,rR))}catch(e){if(e.code!==`ENOENT`)throw e}return t}),o=YR(a.map(e=>v.join(e,rR)),bz,{root:e,git:!1});if(o.length>0)throw Error(o.map(e=>`${n}: ${v.join(kR,v.relative(i,e.path))} would not load: ${e.reason.split(i).join(v.join(n,kR))}`).join(`
|
|
504
|
+
`));let c=a.map(e=>{let n=v.basename(e),r=v.join(t,n);return{folder:e,name:n,target:r,placed:i$(r)}}),l=[];try{for(let{folder:e,name:t,target:n,placed:r}of c)a$(e,n,v.join(i,`.replaced-${t}`),r),l.push(t)}catch(e){throw Error(`${e.message} (placed before it: ${l.join(`, `)||`none`})`)}return c.map(({target:e,placed:t})=>({path:v.join(e,rR),placed:t}))}finally{s.rmSync(i,{recursive:!0,force:!0})}}function s$(e){let[t,n,...r]=e;if(t!==`install`||n===void 0||r.length>0)return console.error(`Usage: cc-candybar plugin install <path | owner/repo | git URL>`),2;let i=e$(n,process.cwd(),eD);if(`error`in i)return console.error(`plugin install: ${i.error}`),2;try{let e=i.kind===`path`?i.dir:i.shown,t=r$(i,t=>o$(t,OR(),e));for(let{path:n,placed:r}of t)console.log(`${r} plugin ${v.basename(v.dirname(n))} → ${n} (from ${e})`);return 0}catch(e){return console.error(`plugin install: ${e.message}`),1}}function c$(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 l$=[`SSH_CONNECTION`,`SSH_CLIENT`,`SSH_TTY`];function u$(e,t,n){return{termCols:c$(e.COLUMNS,n.columns),termRows:c$(e.LINES,n.rows),ssh:l$.some(t=>(e[t]??``)!==``),tmux:Gk(e),configEnv:IQ(e,t),claudeConfigDir:Pi(e,t),mementoEnv:lt(e,t),terminalEnv:A(e)}}function d$(e){return e.clients.map(e=>typeof e==`object`&&e?e:{})}function f$(e){let t=JJ(e,[`bundle`,`clients`]);if(t!==null)return{kind:`failed`,reason:t};if(typeof e.bundle!=`string`)return{kind:`failed`,reason:`the running daemon (${e.version}) reported its bundle as ${JSON.stringify(e.bundle)}`};let n=d$(e);return n.every(e=>typeof e.ago==`number`)?{kind:`ok`,value:{bundle:e.bundle,clients:n.map(e=>({client:kt(e.client)??null,ago:e.ago}))}}:{kind:`failed`,reason:`the running daemon (${e.version}) reported clients without their age: ${JSON.stringify(e.clients)}`}}const p$=e=>{let{identity:t,artifacts:n}=e??{};return typeof t==`string`&&typeof n==`object`&&!!n&&Object.values(n).every(e=>typeof e==`string`)};function m$(e){let t=JJ(e,[`daemon`]);if(t!==null)return{kind:`failed`,reason:t};let n=e.daemon,r=n?.postMortems;return typeof n?.pid==`number`&&typeof n.rss==`number`&&typeof n.rssLimit==`number`&&(r?.kind===`ok`&&Array.isArray(r.value)&&r.value.every(p$)||r?.kind===`failed`&&typeof r.reason==`string`)?{kind:`ok`,value:n}:{kind:`failed`,reason:`the running daemon (${e.version}) reported itself as ${JSON.stringify(e.daemon)}`}}function h$(e){let t=JJ(e,[`clients`]);if(t!==null)return{kind:`failed`,reason:t};let n=d$(e);return n.every(e=>typeof e.ago==`number`&&typeof e.claudeConfigDir==`string`&&Jk.includes(e.rateLimits))?{kind:`ok`,value:n}:{kind:`failed`,reason:`the running daemon (${e.version}) reported its renders without the rate-limit windows they carried — restart it on this build: ${JSON.stringify(e.clients)}`}}function g$(e){let t=JJ(e,[`clients`]);if(t!==null)return{kind:`failed`,reason:t};let n=d$(e);return n.every(e=>{let t=e.transcript;return typeof e.ago==`number`&&typeof t?.path==`string`&&typeof t.answered==`boolean`})?{kind:`ok`,value:n}:{kind:`failed`,reason:`the running daemon (${e.version}) reported its renders without their transcripts — restart it on this build: ${JSON.stringify(e.clients)}`}}function _$(e){let t=JJ(e,[`clients`]);if(t!==null)return{kind:`failed`,reason:t};let n=d$(e);return n.every(e=>typeof e.ago==`number`&&typeof e.claudeConfigDir==`string`&&Qk.includes(e.role)&&Zk.includes(e.frame))?{kind:`ok`,value:n}:{kind:`failed`,reason:`the running daemon (${e.version}) reported its renders without what they drew — restart it on this build: ${JSON.stringify(e.clients)}`}}async function v$(){let e=await qJ();if(e.kind!==`ok`){let t={kind:`failed`,reason:It(e).split(`
|
|
505
|
+
`).join(` — `)};return{clients:t,rateLimits:t,transcripts:t,frames:t,serving:t}}return{clients:f$(e.value),rateLimits:h$(e.value),transcripts:g$(e.value),frames:_$(e.value),serving:m$(e.value)}}const y$=` (fix: click the settings menu (${mr} by default) › 🧰 tools › 🩺 doctor, then [fix] on the bar)`,b$=`mark them ✓ shapes or ✗ boxes in the bar's doctor, and this command reads your mark: the settings menu (${mr} by default) › 🧰 tools › 🩺 doctor`;function x$({check:e,verdict:t}){return t.ok?`✓ ${e.label}${t.note===void 0?``:` — ${t.note}`}\n`:`✗ ${e.label} — ${t.reason}${t.fix===void 0?``:y$}\n`+(t.more??[]).map(e=>` ${e}\n`).join(``)+(t.sighting===void 0?``:` look: ${t.sighting.glyphs} — ${b$}\n`)}function S$(e){let t={sessionState:new DG},n=bG(e.projectDir,e.cwd,e.configFile??void 0,t),r=n.state??xG(e.cwd,e.projectDir,t);return r.registry.dispose(),{layers:n.layers,error:n.error,warning:n.warning,unused:r.unused,config:r.config}}function C$(e,t){return t.kind===`failed`?t:vJ(e,t.value.bundle,t.value.clients.filter(({ago:e})=>e<=300).map(({client:e})=>e))}function w$(e,t){return e.kind===`failed`?e:{kind:`ok`,value:e.value.filter(e=>e.ago<=300&&e.claudeConfigDir===t).map(e=>e.rateLimits)}}function T$(e){return e.kind===`failed`?e:{kind:`ok`,value:e.value.filter(e=>e.ago<=300).map(e=>e.transcript)}}function E$(e,t){return e.kind===`failed`?e:{kind:`ok`,value:e.value.filter(e=>e.ago<=300&&e.claudeConfigDir===t).map(({role:e,frame:t})=>({role:e,frame:t}))}}async function D$(e,t,n,r,i,a,o=void 0){let s;try{let c=await n(),l=u$(r,i,a());s={...UJ(e,l,{projectDir:i,cwd:i,configFile:eR(i,o)??IQ(r,i)??null},()=>null,c.serving,w$(c.rateLimits,Fi(l.claudeConfigDir)),T$(c.transcripts),E$(c.frames,Fi(l.claudeConfigDir))),urlHandler:await uY(t),install:C$(e.install,c.clients),askedBy:`command`}}catch(e){return{stdout:``,stderr:`doctor: ${e instanceof Error?e.message:String(e)}\n`,code:2}}let c=lj(s);return{stdout:c.map(x$).join(``),stderr:``,code:+!c.every(e=>e.verdict.ok)}}function O$(){if(t.stderr.isTTY)return t.stderr;let e;try{e=p(`/dev/tty`,`r+`)}catch{return{}}let n=new _e(e),{columns:r}=n;return n.destroy(),{columns:r}}async function k$(e){(e.length>1||e[0]===``||e[0]?.startsWith(`--`))&&(t.stderr.write(`doctor: expected at most one config file
|
|
506
506
|
Usage: cc-candybar doctor [config-file]
|
|
507
|
-
`),t.exit(2));let n=t.cwd(),r=await
|
|
508
|
-
`);return{bytes:t.map((e,t)=>`\x1b[${t+1}H[2K${e}`).join(``)+`\x1B[J`,rows:t.length}}const
|
|
509
|
-
`).map(e=>e.trim().split(` `));return i.some(([e])=>e===n)
|
|
507
|
+
`),t.exit(2));let n=t.cwd(),r=await D$(OJ(S$),mY(),v$,t.env,n,O$,e[0]);t.stdout.write(r.stdout),t.stderr.write(r.stderr),t.exit(r.code)}function A$(e){return!e.ok&&e.code!==`RENDER_FAILED`}function j$(e,t,n,r,i){let a=null,o=e=>{a===null&&(a=e,s.destroy(),i(e))},s=D.createConnection({path:e}),c={v:3,kind:`subscribe`,sessionId:t,lane:n};return s.once(`connect`,()=>s.write(Tt(c))),s.on(`data`,Dt(e=>{let t=e;A$(t)?o({kind:`refused`,resp:t}):r(t)},e=>o({kind:`failed`,error:e}))),s.on(`error`,e=>o({kind:`failed`,error:e})),s.on(`close`,()=>o({kind:`closed-there`})),{close:()=>o({kind:`closed-here`})}}function M$(e,t){switch(t){case`frame-ok`:return 250;case`frame-failed`:return e;case`fault`:return Math.min(2e3,e*2)}}function N$(e){switch(e.kind){case`failed`:return{kind:`reconnect`,reason:`stream failed (${e.error.message})`,kick:!0};case`closed-there`:return{kind:`reconnect`,reason:`daemon closed the stream`,kick:!1};case`refused`:return e.resp.code===`SWITCHED_OFF`?{kind:`off`,resp:e.resp}:e.resp.code===`TIMEOUT`?{kind:`reconnect`,reason:`the daemon was too busy to open the stream (${e.resp.error})`,kick:!1}:e.resp.code===`BAD_REQUEST`?{kind:`reconnect`,reason:`the daemon does not take subscribe (${e.resp.error}); it restarts on the new build`,kick:!1}:e.resp.code===`VERSION_MISMATCH`&&e.resp.daemonV!==void 0&&e.resp.daemonV<3?{kind:`reconnect`,reason:`the daemon is older than this client (${e.resp.error})`,kick:!0}:{kind:`exit`,reason:`the daemon refused the stream: ${e.resp.code}: ${e.resp.error}`}}}function P$(e,t,n,r){let i=null,a=null,o=!1,s=250,c=(e,t)=>{a=setTimeout(()=>{a=null,((t?r.beforeReconnect?.():void 0)??Promise.resolve()).then(()=>{o||l()})},e)},l=()=>{i=j$(e,t,n,e=>{s=M$(s,e.ok?`frame-ok`:`frame-failed`),r.frame(e)},e=>{if(e.kind===`closed-here`||o)return;let t=N$(e);switch(t.kind){case`exit`:r.exit(t.reason);return;case`off`:r.off(t.resp),c(5e3,!1);return;case`reconnect`:{r.fault(t.reason,s),t.kick&&mn();let e=s;s=M$(s,`fault`),c(e,!0);return}}})};return l(),{close:()=>{o=!0,a!==null&&clearTimeout(a),i?.close()}}}function F$(e,t){return t.kind===`frame`||t.kind!==e.kind?!0:t.kind===`fault`&&e.kind===`fault`&&t.reason!==e.reason}async function I$(e,n){let{values:r,tokens:i}=re({args:e.slice(3),options:{config:{type:`string`},lane:{type:`string`}},strict:!0,tokens:!0}),a=[e[1],...i.flatMap(e=>e.kind===`option`&&e.name===`config`?[e.rawName,e.value]:[])],o=t.cwd(),s=e=>{t.stderr.write(`cc-candybar frames: ${e}\n`)},c=eo(r.lane);c===null&&(s(`--lane needs one of ${Qa.join(`, `)}`),t.exit(2)),t.stdout.on(`error`,()=>t.exit(0));let l=tZ(t.stdout),u=null,d=null,f=null,p={kind:`none`},m=(e,t)=>{F$(p,e)&&t(),p=e},h=async e=>{let r=await Ht(e,a,o,{...u$(t.env,o,t.stderr),client:ft(`frames`,n)});r.kind!==`ok`&&(s(It(r)),r.kind===`transient`&&mn())},g=e=>{f?.close(),f=P$(Je(),e,c,{frame:e=>m({kind:`frame`},()=>l(`${JSON.stringify(e)}\n`)),off:e=>m({kind:`off`},()=>l(`${JSON.stringify(e)}\n`)),fault:(e,t)=>m({kind:`fault`,reason:e},()=>s(`${e}; reconnecting in ${t}ms`)),exit:e=>{s(e),t.exit(1)},beforeReconnect:()=>d===null?Promise.resolve():h(d)})};for await(let e of ge({input:t.stdin})){if(e.trim()===``)continue;let t;try{t=JSON.parse(e)}catch(e){s(`stdin line is not JSON: ${e.message}`);continue}if(typeof t.session_id!=`string`||t.session_id===``){s(`stdin line carries no session_id`);continue}d=t,await h(t),t.session_id!==u&&(u=t.session_id,g(u))}t.exit(0)}function L$(e){let t=e.replace(/\n+$/,``).split(`
|
|
508
|
+
`);return{bytes:t.map((e,t)=>`\x1b[${t+1}H[2K${e}`).join(``)+`\x1B[J`,rows:t.length}}const R$=5e3,z$=`usage: cc-candybar bar-pane <claude-code-pane-id, e.g. %3>`;function B$(e,t,n,r){let i=e.split(`
|
|
509
|
+
`).map(e=>e.trim().split(` `));return i.some(([e])=>e===n)?aZ(e,iZ(t)).has(r)?{kind:`shown`,zoomed:i.some(([e,,,,t])=>e===r&&t===`1`)}:{kind:`hidden`}:{kind:`gone`}}async function V$(e,t){let[n,r]=await Promise.all([zH(e,`bar-pane.tmux`,[`list-panes`,`-a`,`-f`,`#{||:#{==:#{pane_id},${t}},#{==:#{pane_id},${e.pane}}}`,`-F`,nZ]),zH(e,`bar-pane.tmux`,[`list-clients`,`-F`,rZ])]);return n.kind===`ok`?r.kind===`ok`?{kind:`ok`,placement:B$(n.stdout,r.stdout,t,e.pane)}:r:n}function H$(){let e=Date.now();return t=>{if(t.kind===`ok`)e=Date.now();else if(Date.now()-e>R$)throw Error(`tmux has not answered for ${R$/1e3} s: ${t.reason}`)}}function U$(e){let{positionals:t}=(()=>{try{return re({args:[...e],allowPositionals:!0})}catch(e){throw Error(`${e.message}\n${z$}`)}})(),[n,...r]=t;if(n===void 0||r.length>0||!/^%\d+$/.test(n))throw Error(z$);return{pane:n}}async function W$(e){try{return await G$(e),0}catch(e){return t.stderr.write(`cc-candybar bar-pane: ${e.message}\n`),1}}async function G$(e){let{pane:n}=U$(e),r=Gk(t.env);if(r===null)throw Error(`cc-candybar bar-pane runs in a tmux pane`);if(!t.stdout.isTTY)throw Error(`cc-candybar bar-pane draws on its pane's terminal`);let i=await V$(r,n);if(i.kind!==`ok`)throw Error(i.reason);let a=i.placement;if(a.kind===`gone`)throw Error(`no pane ${n} on this tmux server (${r.socket})`);t.stdout.write(`\x1B[?25l\x1B[?7l`),t.on(`exit`,()=>t.stdout.write(`\x1B[?25h\x1B[?7h`));for(let[e,n]of[[`SIGINT`,130],[`SIGTERM`,143],[`SIGHUP`,129]])t.once(e,()=>t.exit(n));let o=e=>{t.stderr.write(`cc-candybar bar-pane: ${e.message}\n`),t.exit(1)},s=null,c=`waiting for pane ${n}'s bar`,l=()=>s?.said.latest??c,u=``,d=H$(),f=async()=>{if(a.kind!==`shown`)return;let e=L$(l());e.rows!==t.stdout.rows&&!a.zoomed&&d(await zH(r,`bar-pane.tmux`,[`resize-pane`,`-t`,r.pane,`-y`,String(e.rows)])),e.bytes!==u&&t.stdout.write(e.bytes),u=e.bytes},p=null,m=!1,h=()=>{m=!0,p??=(async()=>{try{for(;m;)m=!1,await f()}finally{p=null}})(),p.catch(o)};t.stdout.on(`resize`,()=>{u=``,h()});let g=e=>{if(s?.sessionId===e)return;if(s?.follower.close(),e===null){s=null;return}let t={latest:null},n=e=>{t.latest=e,h()};s={sessionId:e,said:t,follower:P$(Je(),e,`pane`,{frame:e=>n(MV(Vt(e)).output),off:e=>n(e.error),fault:n,exit:e=>o(Error(e))})}},_=H$();for(;a.kind!==`gone`;){if(a.kind===`hidden`)g(null);else{let e=await M(r.socket,n);e.kind===`ok`?(g(e.value),c=e.value===null?`waiting for pane ${n}'s statusline to render on ${Je()}`:`waiting for pane ${n}'s bar`):(e.kind===`transient`&&(mn(),u=``),c=It(e))}h(),await he(500);let e=await V$(r,n);_(e),e.kind===`ok`&&(a=e.placement)}g(null),t.stderr.write(`cc-candybar bar-pane: pane ${n} closed\n`)}const K$=i(import.meta.url),q$=e=>e.some(e=>t.argv.includes(e));function J$(){console.log(Hk)}const Y$={install:async e=>{await Ea(e,K$),t.exit(0)},"install-url-handler":async()=>{xa(K$),t.exit(0)},"url-handle":async e=>{await Ca(e[0])},daemon:async()=>{zZ()},"daemon-stats":async e=>{await KJ(e),t.exit(0)},frames:async()=>{await I$(t.argv,K$)},check:async e=>{await YQ(e)},lint:async e=>{await YQ(e)},plugin:async e=>{t.exit(s$(e))},schema:async()=>{PQ()},doctor:async e=>{await k$(e)},"bar-pane":async e=>{t.exit(await W$(e))},...Object.fromEntries(XX.map(e=>[e,async n=>{await TQ(e,n),t.exit(0)}]))};async function X$(){try{let e=t.argv[2],n=e!==void 0&&!e.startsWith(`-`)?e:null;if(n!==null&&!Object.hasOwn(Y$,n)&&(console.error(`cc-candybar: unknown subcommand ${JSON.stringify(n)} — see --help`),t.exit(2)),q$(Bk.help)&&(J$(),t.exit(0)),q$(Bk.version)&&(console.log(`cc-candybar ${Lt}`),t.exit(0)),n!==null){await Y$[n](t.argv.slice(3));return}t.stdin.isTTY===!0&&(console.error(`Error: This tool requires input from Claude Code
|
|
510
510
|
|
|
511
511
|
cc-candybar is designed to be used as a Claude Code statusLine command.
|
|
512
512
|
It reads hook data from stdin and outputs formatted statusline.
|
|
@@ -522,4 +522,4 @@ Add to ~/.claude/settings.json:
|
|
|
522
522
|
Run with --help for more options.
|
|
523
523
|
|
|
524
524
|
To test output manually:
|
|
525
|
-
echo '{"session_id":"test-session","workspace":{"project_dir":"/path/to/project"},"model":{"id":"claude-sonnet-4-5","display_name":"Claude"}}' | cc-candybar`),t.exit(1)),k(`Working directory: ${t.cwd()}`),k(`Process args:`,t.argv);let r=await o(t.stdin);k(`Received hook data:`,JSON.stringify(r,null,2)),r||(console.error(`Error: No input data received from stdin`),
|
|
525
|
+
echo '{"session_id":"test-session","workspace":{"project_dir":"/path/to/project"},"model":{"id":"claude-sonnet-4-5","display_name":"Claude"}}' | cc-candybar`),t.exit(1)),k(`Working directory: ${t.cwd()}`),k(`Process args:`,t.argv);let r=await o(t.stdin);k(`Received hook data:`,JSON.stringify(r,null,2)),r||(console.error(`Error: No input data received from stdin`),J$(),t.exit(1));let i=MV(await Ht(r,t.argv,t.cwd(),{...u$(t.env,t.cwd(),t.stderr),client:ft(`node`,K$)}));i.debug!==null&&k(i.debug),i.kick&&mn(),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)}}X$();export{};
|