@reddb-io/red-skills 3.11.2 → 3.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,72 +1,71 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
3
- var fh=Object.create;var vs=Object.defineProperty;var hh=Object.getOwnPropertyDescriptor;var yh=Object.getOwnPropertyNames;var kh=Object.getPrototypeOf,bh=Object.prototype.hasOwnProperty;var _h=(e,r)=>()=>(e&&(r=e(e=0)),r);var Yl=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports),Rh=(e,r)=>{for(var t in r)vs(e,t,{get:r[t],enumerable:!0})},wh=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of yh(r))!bh.call(e,o)&&o!==t&&vs(e,o,{get:()=>r[o],enumerable:!(n=hh(r,o))||n.enumerable});return e};var Ss=(e,r,t)=>(t=e!=null?fh(kh(e)):{},wh(r||!e||!e.__esModule?vs(t,"default",{value:e,enumerable:!0}):t,e));var Lc={};Rh(Lc,{REDSKILLED_BIN_ENV:()=>ki,REDSKILLED_BUNDLE_ASSET:()=>Be,REDSKILLED_ENTRY_UNRESOLVED:()=>en,RedskilledDaemonEntryError:()=>rn,isRedskilledEntryPath:()=>_i,isResolvedRedskilledEntry:()=>He,redskilledBundleCacheRoot:()=>Eo,redskilledServeArgv:()=>Lr,requireRedskilledEntry:()=>vo,resolveRedskilledEntry:()=>ur});import{existsSync as Tb,readdirSync as xb}from"node:fs";import{homedir as Pb}from"node:os";import{basename as yi,dirname as hi,join as Se,resolve as wo}from"node:path";function He(e){return"command"in e}function Lr(e,r={}){let t=["serve","--socket",e.socketPath,"--lease",e.leasePath,"--events",e.eventLanePath,"--session-key-hash",e.sessionKeyHash,"--machine-id-hash",e.machineIdHash,"--machine-claim",e.machineClaimPath];return r.idleMs!=null&&t.push("--idle-ms",String(r.idleMs)),r.daemonVersion!=null&&t.push("--daemon-version",r.daemonVersion),t}function Eo(e=process.env){return jc(e)}function ur(e={},r={}){if(e.serverCommand)return{command:e.serverCommand,args:e.serverArgs??[],source:"server-command"};let t=r.env??process.env,n=r.exists??Tb,o=r.execPath??process.execPath,s=r.execArgv??[],i=r.callerEntry===void 0?process.argv[1]:r.callerEntry,a=(c,u)=>({command:o,args:[...s,c],source:u,entry:c}),l=t[ki];if(l)return{command:l,args:[],source:"env-redskilled-bin",entry:l};if(i&&_i(i))return a(wo(i),"caller-entry");let d=[];for(let[c,u]of jb(i,r.rootDir,t,r.listDir??Ib))if(d.push(c),n(c))return a(c,u);return{diagnostic:en,searched:d,...i?{callerEntry:wo(i)}:{}}}function vo(e={},r={}){let t=ur(e,r);if(He(t))return t;throw new rn(t)}function _i(e){let r=yi(e);return r===Be||bi.test(r)||r==="red-skills-redskilled"||r==="red-skills-redskilled.mjs"?!0:r!=="cli.js"&&r!=="cli.mjs"&&r!=="cli.ts"?!1:Db(wo(e))}function Db(e){let r=hi(e);for(let t=0;t<4;t++){if(yi(r)==="redskilled")return!0;let n=hi(r);if(n===r)return!1;r=n}return!1}function*jb(e,r,t,n){if(e){let s=hi(wo(e));yield[Se(s,Be),"caller-sibling-bundle"];let i=Ob.exec(yi(e));i&&(yield[Se(s,`redskilled-${i[2]}.bundle.min.mjs`),"caller-sibling-bundle"]),yield[Se(s,"..","dist",Be),"caller-sibling-bundle"]}for(let s of Ab){let i=t[s];i&&(yield[Se(i,"dist",Be),"plugin-root-bundle"],yield[Se(i,"..","..","dist",Be),"plugin-root-bundle"])}r&&(yield[Se(r,"dist",Be),"repo-bundle"],yield[Se(r,"apps","redskilled","dist","cli.js"),"workspace-entry"],yield[Se(r,"node_modules","@reddb-io","redskilled","dist","cli.js"),"node-modules-entry"]);let o=jc(t);yield[Se(o,Be),"bundle-cache"];for(let s of Lb(o,n))yield[Se(o,s),"bundle-cache"]}function jc(e){if(e.RED_SKILLS_CACHE_DIR)return e.RED_SKILLS_CACHE_DIR;let r=e.XDG_CACHE_HOME||Se(e.HOME||Pb(),".cache");return Se(r,"red-skills","bundles")}function Lb(e,r){return r(e).filter(t=>bi.test(t)).sort((t,n)=>Gb(Dc(n),Dc(t)))}function Dc(e){return bi.exec(e)?.[1]??""}function Gb(e,r){let t=s=>s.split(".").map(i=>Number.parseInt(i,10)),[n,o]=[t(e),t(r)];for(let s=0;s<Math.max(n.length,o.length);s++){let[i,a]=[n[s],o[s]];if(Number.isNaN(i)||i===void 0)return Number.isNaN(a)||a===void 0?e.localeCompare(r):-1;if(Number.isNaN(a)||a===void 0)return 1;if(i!==a)return i-a}return 0}function Ib(e){try{return xb(e)}catch{return[]}}var Be,en,ki,rn,Ob,bi,Ab,tr=_h(()=>{"use strict";Be="redskilled.bundle.min.mjs",en="redskilled-daemon-entry-unresolved",ki="REDSKILLED_BIN";rn=class extends Error{code=en;searched;callerEntry;constructor(r){super(`${en}: no published ${Be} found to spawn the redskilled daemon from${r.callerEntry?` (caller entry: ${r.callerEntry}, which is NOT used as a fallback)`:""}
3
+ var px=Object.create;var jl=Object.defineProperty;var fx=Object.getOwnPropertyDescriptor;var gx=Object.getOwnPropertyNames;var hx=Object.getPrototypeOf,mx=Object.prototype.hasOwnProperty;var bx=(e,t)=>()=>(e&&(t=e(e=0)),t);var wf=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),yx=(e,t)=>{for(var r in t)jl(e,r,{get:t[r],enumerable:!0})},kx=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of gx(t))!mx.call(e,o)&&o!==r&&jl(e,o,{get:()=>t[o],enumerable:!(n=fx(t,o))||n.enumerable});return e};var Bl=(e,t,r)=>(r=e!=null?px(hx(e)):{},kx(t||!e||!e.__esModule?jl(r,"default",{value:e,enumerable:!0}):r,e));var zg={};yx(zg,{REDSKILLED_BIN_ENV:()=>Pd,REDSKILLED_BUNDLE_ASSET:()=>_r,REDSKILLED_ENTRY_UNRESOLVED:()=>ms,RedskilledDaemonEntryError:()=>bs,isRedskilledEntryPath:()=>Cd,isResolvedRedskilledEntry:()=>xr,redskilledBundleCacheRoot:()=>Xi,redskilledServeArgv:()=>Fn,requireRedskilledEntry:()=>Zi,resolveRedskilledEntry:()=>rn});import{existsSync as sS,readdirSync as iS}from"node:fs";import{homedir as aS}from"node:os";import{basename as Td,dirname as Sd,join as Kt,resolve as Qi}from"node:path";function xr(e){return"command"in e}function Fn(e,t={}){let r=["serve","--socket",e.socketPath,"--lease",e.leasePath,"--events",e.eventLanePath,"--session-key-hash",e.sessionKeyHash,"--machine-id-hash",e.machineIdHash,"--machine-claim",e.machineClaimPath];return t.idleMs!=null&&r.push("--idle-ms",String(t.idleMs)),t.daemonVersion!=null&&r.push("--daemon-version",t.daemonVersion),r}function Xi(e=process.env){return Vg(e)}function rn(e={},t={}){if(e.serverCommand)return{command:e.serverCommand,args:e.serverArgs??[],source:"server-command"};let r=t.env??process.env,n=t.exists??sS,o=t.execPath??process.execPath,s=t.execArgv??[],i=t.callerEntry===void 0?process.argv[1]:t.callerEntry,a=(c,u)=>({command:o,args:[...s,c],source:u,entry:c}),l=r[Pd];if(l)return{command:l,args:[],source:"env-redskilled-bin",entry:l};if(i&&Cd(i))return a(Qi(i),"caller-entry");let d=[];for(let[c,u]of uS(i,t.rootDir,r,t.listDir??gS))if(d.push(c),n(c))return a(c,u);return{diagnostic:ms,searched:d,...i?{callerEntry:Qi(i)}:{}}}function Zi(e={},t={}){let r=rn(e,t);if(xr(r))return r;throw new bs(r)}function Cd(e){let t=Td(e);return t===_r||Ad.test(t)||t==="red-skills-redskilled"||t==="red-skills-redskilled.mjs"?!0:t!=="cli.js"&&t!=="cli.mjs"&&t!=="cli.ts"?!1:cS(Qi(e))}function cS(e){let t=Sd(e);for(let r=0;r<4;r++){if(Td(t)==="redskilled")return!0;let n=Sd(t);if(n===t)return!1;t=n}return!1}function*uS(e,t,r,n){if(e){let s=Sd(Qi(e));yield[Kt(s,_r),"caller-sibling-bundle"];let i=lS.exec(Td(e));i&&(yield[Kt(s,`redskilled-${i[2]}.bundle.min.mjs`),"caller-sibling-bundle"]),yield[Kt(s,"..","dist",_r),"caller-sibling-bundle"]}for(let s of dS){let i=r[s];i&&(yield[Kt(i,"dist",_r),"plugin-root-bundle"],yield[Kt(i,"..","..","dist",_r),"plugin-root-bundle"])}t&&(yield[Kt(t,"dist",_r),"repo-bundle"],yield[Kt(t,"apps","redskilled","dist","cli.js"),"workspace-entry"],yield[Kt(t,"node_modules","@reddb-io","redskilled","dist","cli.js"),"node-modules-entry"]);let o=Vg(r);yield[Kt(o,_r),"bundle-cache"];for(let s of pS(o,n))yield[Kt(o,s),"bundle-cache"]}function Vg(e){if(e.RED_SKILLS_CACHE_DIR)return e.RED_SKILLS_CACHE_DIR;let t=e.XDG_CACHE_HOME||Kt(e.HOME||aS(),".cache");return Kt(t,"red-skills","bundles")}function pS(e,t){return t(e).filter(r=>Ad.test(r)).sort((r,n)=>fS(Kg(n),Kg(r)))}function Kg(e){return Ad.exec(e)?.[1]??""}function fS(e,t){let r=s=>s.split(".").map(i=>Number.parseInt(i,10)),[n,o]=[r(e),r(t)];for(let s=0;s<Math.max(n.length,o.length);s++){let[i,a]=[n[s],o[s]];if(Number.isNaN(i)||i===void 0)return Number.isNaN(a)||a===void 0?e.localeCompare(t):-1;if(Number.isNaN(a)||a===void 0)return 1;if(i!==a)return i-a}return 0}function gS(e){try{return iS(e)}catch{return[]}}var _r,ms,Pd,bs,lS,Ad,dS,Hr=bx(()=>{"use strict";_r="redskilled.bundle.min.mjs",ms="redskilled-daemon-entry-unresolved",Pd="REDSKILLED_BIN";bs=class extends Error{code=ms;searched;callerEntry;constructor(t){super(`${ms}: no published ${_r} found to spawn the redskilled daemon from${t.callerEntry?` (caller entry: ${t.callerEntry}, which is NOT used as a fallback)`:""}
4
4
  searched:
5
- ${r.searched.map(t=>` ${t}`).join(`
6
- `)}`),this.name="RedskilledDaemonEntryError",this.searched=r.searched,r.callerEntry!=null&&(this.callerEntry=r.callerEntry)}};Ob=/^([a-z0-9-]+)-(.+)\.bundle\.min\.mjs$/,bi=/^redskilled-(.+)\.bundle\.min\.mjs$/,Ab=["RED_SKILLS_DEV_PLUGIN_ROOT","CLAUDE_PLUGIN_ROOT","CODEX_PLUGIN_ROOT","OPENCODE_PLUGIN_ROOT"]});var Ki=Yl((qi,Vi)=>{(function(e,r){typeof qi=="object"&&typeof Vi<"u"?Vi.exports=r():typeof define=="function"&&define.amd?define(r):e.Bottleneck=r()})(qi,function(){"use strict";var e=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function r(D){return D&&D.default||D}var t=function(D,b,g={}){var _,R,E;for(_ in b)E=b[_],g[_]=(R=D[_])!=null?R:E;return g},n=function(D,b,g={}){var _,R;for(_ in D)R=D[_],b[_]!==void 0&&(g[_]=R);return g},o={load:t,overwrite:n},s;s=class{constructor(b,g){this.incr=b,this.decr=g,this._first=null,this._last=null,this.length=0}push(b){var g;this.length++,typeof this.incr=="function"&&this.incr(),g={value:b,prev:this._last,next:null},this._last!=null?(this._last.next=g,this._last=g):this._first=this._last=g}shift(){var b;if(this._first!=null)return this.length--,typeof this.decr=="function"&&this.decr(),b=this._first.value,(this._first=this._first.next)!=null?this._first.prev=null:this._last=null,b}first(){if(this._first!=null)return this._first.value}getArray(){var b,g,_;for(b=this._first,_=[];b!=null;)_.push((g=b,b=b.next,g.value));return _}forEachShift(b){var g;for(g=this.shift();g!=null;)b(g),g=this.shift()}debug(){var b,g,_,R,E;for(b=this._first,E=[];b!=null;)E.push((g=b,b=b.next,{value:g.value,prev:(_=g.prev)!=null?_.value:void 0,next:(R=g.next)!=null?R.value:void 0}));return E}};var i=s,a;a=class{constructor(b){if(this.instance=b,this._events={},this.instance.on!=null||this.instance.once!=null||this.instance.removeAllListeners!=null)throw new Error("An Emitter already exists for this object");this.instance.on=(g,_)=>this._addListener(g,"many",_),this.instance.once=(g,_)=>this._addListener(g,"once",_),this.instance.removeAllListeners=(g=null)=>g!=null?delete this._events[g]:this._events={}}_addListener(b,g,_){var R;return(R=this._events)[b]==null&&(R[b]=[]),this._events[b].push({cb:_,status:g}),this.instance}listenerCount(b){return this._events[b]!=null?this._events[b].length:0}async trigger(b,...g){var _,R;try{return b!=="debug"&&this.trigger("debug",`Event triggered: ${b}`,g),this._events[b]==null?void 0:(this._events[b]=this._events[b].filter(function(E){return E.status!=="none"}),R=this._events[b].map(async E=>{var x,A;if(E.status!=="none"){E.status==="once"&&(E.status="none");try{return A=typeof E.cb=="function"?E.cb(...g):void 0,typeof A?.then=="function"?await A:A}catch(N){return x=N,this.trigger("error",x),null}}}),(await Promise.all(R)).find(function(E){return E!=null}))}catch(E){return _=E,this.trigger("error",_),null}}};var l=a,d,c,u;d=i,c=l,u=class{constructor(b){var g;this.Events=new c(this),this._length=0,this._lists=function(){var _,R,E;for(E=[],g=_=1,R=b;1<=R?_<=R:_>=R;g=1<=R?++_:--_)E.push(new d(()=>this.incr(),()=>this.decr()));return E}.call(this)}incr(){if(this._length++===0)return this.Events.trigger("leftzero")}decr(){if(--this._length===0)return this.Events.trigger("zero")}push(b){return this._lists[b.options.priority].push(b)}queued(b){return b!=null?this._lists[b].length:this._length}shiftAll(b){return this._lists.forEach(function(g){return g.forEachShift(b)})}getFirst(b=this._lists){var g,_,R;for(g=0,_=b.length;g<_;g++)if(R=b[g],R.length>0)return R;return[]}shiftLastFrom(b){return this.getFirst(this._lists.slice(b).reverse()).shift()}};var m=u,f;f=class extends Error{};var h=f,v,k,T,I,F;I=10,k=5,F=o,v=h,T=class{constructor(b,g,_,R,E,x,A,N){this.task=b,this.args=g,this.rejectOnDrop=E,this.Events=x,this._states=A,this.Promise=N,this.options=F.load(_,R),this.options.priority=this._sanitizePriority(this.options.priority),this.options.id===R.id&&(this.options.id=`${this.options.id}-${this._randomIndex()}`),this.promise=new this.Promise((V,z)=>{this._resolve=V,this._reject=z}),this.retryCount=0}_sanitizePriority(b){var g;return g=~~b!==b?k:b,g<0?0:g>I-1?I-1:g}_randomIndex(){return Math.random().toString(36).slice(2)}doDrop({error:b,message:g="This job has been dropped by Bottleneck"}={}){return this._states.remove(this.options.id)?(this.rejectOnDrop&&this._reject(b??new v(g)),this.Events.trigger("dropped",{args:this.args,options:this.options,task:this.task,promise:this.promise}),!0):!1}_assertStatus(b){var g;if(g=this._states.jobStatus(this.options.id),!(g===b||b==="DONE"&&g===null))throw new v(`Invalid job status ${g}, expected ${b}. Please open an issue at https://github.com/SGrondin/bottleneck/issues`)}doReceive(){return this._states.start(this.options.id),this.Events.trigger("received",{args:this.args,options:this.options})}doQueue(b,g){return this._assertStatus("RECEIVED"),this._states.next(this.options.id),this.Events.trigger("queued",{args:this.args,options:this.options,reachedHWM:b,blocked:g})}doRun(){return this.retryCount===0?(this._assertStatus("QUEUED"),this._states.next(this.options.id)):this._assertStatus("EXECUTING"),this.Events.trigger("scheduled",{args:this.args,options:this.options})}async doExecute(b,g,_,R){var E,x,A;this.retryCount===0?(this._assertStatus("RUNNING"),this._states.next(this.options.id)):this._assertStatus("EXECUTING"),x={args:this.args,options:this.options,retryCount:this.retryCount},this.Events.trigger("executing",x);try{if(A=await(b!=null?b.schedule(this.options,this.task,...this.args):this.task(...this.args)),g())return this.doDone(x),await R(this.options,x),this._assertStatus("DONE"),this._resolve(A)}catch(N){return E=N,this._onFailure(E,x,g,_,R)}}doExpire(b,g,_){var R,E;return this._states.jobStatus(this.options.id==="RUNNING")&&this._states.next(this.options.id),this._assertStatus("EXECUTING"),E={args:this.args,options:this.options,retryCount:this.retryCount},R=new v(`This job timed out after ${this.options.expiration} ms.`),this._onFailure(R,E,b,g,_)}async _onFailure(b,g,_,R,E){var x,A;if(_())return x=await this.Events.trigger("failed",b,g),x!=null?(A=~~x,this.Events.trigger("retry",`Retrying ${this.options.id} after ${A} ms`,g),this.retryCount++,R(A)):(this.doDone(g),await E(this.options,g),this._assertStatus("DONE"),this._reject(b))}doDone(b){return this._assertStatus("EXECUTING"),this._states.next(this.options.id),this.Events.trigger("done",b)}};var G=T,H,ee,q;q=o,H=h,ee=class{constructor(b,g,_){this.instance=b,this.storeOptions=g,this.clientId=this.instance._randomIndex(),q.load(_,_,this),this._nextRequest=this._lastReservoirRefresh=this._lastReservoirIncrease=Date.now(),this._running=0,this._done=0,this._unblockTime=0,this.ready=this.Promise.resolve(),this.clients={},this._startHeartbeat()}_startHeartbeat(){var b;return this.heartbeat==null&&(this.storeOptions.reservoirRefreshInterval!=null&&this.storeOptions.reservoirRefreshAmount!=null||this.storeOptions.reservoirIncreaseInterval!=null&&this.storeOptions.reservoirIncreaseAmount!=null)?typeof(b=this.heartbeat=setInterval(()=>{var g,_,R,E,x;if(E=Date.now(),this.storeOptions.reservoirRefreshInterval!=null&&E>=this._lastReservoirRefresh+this.storeOptions.reservoirRefreshInterval&&(this._lastReservoirRefresh=E,this.storeOptions.reservoir=this.storeOptions.reservoirRefreshAmount,this.instance._drainAll(this.computeCapacity())),this.storeOptions.reservoirIncreaseInterval!=null&&E>=this._lastReservoirIncrease+this.storeOptions.reservoirIncreaseInterval&&({reservoirIncreaseAmount:g,reservoirIncreaseMaximum:R,reservoir:x}=this.storeOptions,this._lastReservoirIncrease=E,_=R!=null?Math.min(g,R-x):g,_>0))return this.storeOptions.reservoir+=_,this.instance._drainAll(this.computeCapacity())},this.heartbeatInterval)).unref=="function"?b.unref():void 0:clearInterval(this.heartbeat)}async __publish__(b){return await this.yieldLoop(),this.instance.Events.trigger("message",b.toString())}async __disconnect__(b){return await this.yieldLoop(),clearInterval(this.heartbeat),this.Promise.resolve()}yieldLoop(b=0){return new this.Promise(function(g,_){return setTimeout(g,b)})}computePenalty(){var b;return(b=this.storeOptions.penalty)!=null?b:15*this.storeOptions.minTime||5e3}async __updateSettings__(b){return await this.yieldLoop(),q.overwrite(b,b,this.storeOptions),this._startHeartbeat(),this.instance._drainAll(this.computeCapacity()),!0}async __running__(){return await this.yieldLoop(),this._running}async __queued__(){return await this.yieldLoop(),this.instance.queued()}async __done__(){return await this.yieldLoop(),this._done}async __groupCheck__(b){return await this.yieldLoop(),this._nextRequest+this.timeout<b}computeCapacity(){var b,g;return{maxConcurrent:b,reservoir:g}=this.storeOptions,b!=null&&g!=null?Math.min(b-this._running,g):b!=null?b-this._running:g??null}conditionsCheck(b){var g;return g=this.computeCapacity(),g==null||b<=g}async __incrementReservoir__(b){var g;return await this.yieldLoop(),g=this.storeOptions.reservoir+=b,this.instance._drainAll(this.computeCapacity()),g}async __currentReservoir__(){return await this.yieldLoop(),this.storeOptions.reservoir}isBlocked(b){return this._unblockTime>=b}check(b,g){return this.conditionsCheck(b)&&this._nextRequest-g<=0}async __check__(b){var g;return await this.yieldLoop(),g=Date.now(),this.check(b,g)}async __register__(b,g,_){var R,E;return await this.yieldLoop(),R=Date.now(),this.conditionsCheck(g)?(this._running+=g,this.storeOptions.reservoir!=null&&(this.storeOptions.reservoir-=g),E=Math.max(this._nextRequest-R,0),this._nextRequest=R+E+this.storeOptions.minTime,{success:!0,wait:E,reservoir:this.storeOptions.reservoir}):{success:!1}}strategyIsBlock(){return this.storeOptions.strategy===3}async __submit__(b,g){var _,R,E;if(await this.yieldLoop(),this.storeOptions.maxConcurrent!=null&&g>this.storeOptions.maxConcurrent)throw new H(`Impossible to add a job having a weight of ${g} to a limiter having a maxConcurrent setting of ${this.storeOptions.maxConcurrent}`);return R=Date.now(),E=this.storeOptions.highWater!=null&&b===this.storeOptions.highWater&&!this.check(g,R),_=this.strategyIsBlock()&&(E||this.isBlocked(R)),_&&(this._unblockTime=R+this.computePenalty(),this._nextRequest=this._unblockTime+this.storeOptions.minTime,this.instance._dropAllQueued()),{reachedHWM:E,blocked:_,strategy:this.storeOptions.strategy}}async __free__(b,g){return await this.yieldLoop(),this._running-=g,this._done+=g,this.instance._drainAll(this.computeCapacity()),{running:this._running}}};var he=ee,Er,Nn;Er=h,Nn=class{constructor(b){this.status=b,this._jobs={},this.counts=this.status.map(function(){return 0})}next(b){var g,_;if(g=this._jobs[b],_=g+1,g!=null&&_<this.status.length)return this.counts[g]--,this.counts[_]++,this._jobs[b]++;if(g!=null)return this.counts[g]--,delete this._jobs[b]}start(b){var g;return g=0,this._jobs[b]=g,this.counts[g]++}remove(b){var g;return g=this._jobs[b],g!=null&&(this.counts[g]--,delete this._jobs[b]),g!=null}jobStatus(b){var g;return(g=this.status[this._jobs[b]])!=null?g:null}statusJobs(b){var g,_,R,E,x;if(b!=null){if(_=this.status.indexOf(b),_<0)throw new Er(`status must be one of ${this.status.join(", ")}`);R=this._jobs,E=[];for(g in R)x=R[g],x===_&&E.push(g);return E}else return Object.keys(this._jobs)}statusCounts(){return this.counts.reduce((b,g,_)=>(b[this.status[_]]=g,b),{})}};var Mn=Nn,Fn,Br;Fn=i,Br=class{constructor(b,g){this.schedule=this.schedule.bind(this),this.name=b,this.Promise=g,this._running=0,this._queue=new Fn}isEmpty(){return this._queue.length===0}async _tryToRun(){var b,g,_,R,E,x,A;if(this._running<1&&this._queue.length>0)return this._running++,{task:A,args:b,resolve:E,reject:R}=this._queue.shift(),g=await async function(){try{return x=await A(...b),function(){return E(x)}}catch(N){return _=N,function(){return R(_)}}}(),this._running--,this._tryToRun(),g()}schedule(b,...g){var _,R,E;return E=R=null,_=new this.Promise(function(x,A){return E=x,R=A}),this._queue.push({task:b,args:g,resolve:E,reject:R}),this._tryToRun(),_}};var ps=Br,St="2.19.5",Wn={version:St},Un=Object.freeze({version:St,default:Wn}),Tt=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),xt=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),Bn=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),Pt,Hn,qn,Ot,At,vr;vr=o,Pt=l,Ot=Tt,qn=xt,At=Bn,Hn=function(){class D{constructor(g={}){this.deleteKey=this.deleteKey.bind(this),this.limiterOptions=g,vr.load(this.limiterOptions,this.defaults,this),this.Events=new Pt(this),this.instances={},this.Bottleneck=U,this._startAutoCleanup(),this.sharedConnection=this.connection!=null,this.connection==null&&(this.limiterOptions.datastore==="redis"?this.connection=new Ot(Object.assign({},this.limiterOptions,{Events:this.Events})):this.limiterOptions.datastore==="ioredis"&&(this.connection=new qn(Object.assign({},this.limiterOptions,{Events:this.Events}))))}key(g=""){var _;return(_=this.instances[g])!=null?_:(()=>{var R;return R=this.instances[g]=new this.Bottleneck(Object.assign(this.limiterOptions,{id:`${this.id}-${g}`,timeout:this.timeout,connection:this.connection})),this.Events.trigger("created",R,g),R})()}async deleteKey(g=""){var _,R;return R=this.instances[g],this.connection&&(_=await this.connection.__runCommand__(["del",...At.allKeys(`${this.id}-${g}`)])),R!=null&&(delete this.instances[g],await R.disconnect()),R!=null||_>0}limiters(){var g,_,R,E;_=this.instances,R=[];for(g in _)E=_[g],R.push({key:g,limiter:E});return R}keys(){return Object.keys(this.instances)}async clusterKeys(){var g,_,R,E,x,A,N,V,z;if(this.connection==null)return this.Promise.resolve(this.keys());for(A=[],g=null,z=`b_${this.id}-`.length,_=9;g!==0;)for([V,R]=await this.connection.__runCommand__(["scan",g??0,"match",`b_${this.id}-*_settings`,"count",1e4]),g=~~V,E=0,N=R.length;E<N;E++)x=R[E],A.push(x.slice(z,-_));return A}_startAutoCleanup(){var g;return clearInterval(this.interval),typeof(g=this.interval=setInterval(async()=>{var _,R,E,x,A,N;A=Date.now(),E=this.instances,x=[];for(R in E){N=E[R];try{await N._store.__groupCheck__(A)?x.push(this.deleteKey(R)):x.push(void 0)}catch(V){_=V,x.push(N.Events.trigger("error",_))}}return x},this.timeout/2)).unref=="function"?g.unref():void 0}updateSettings(g={}){if(vr.overwrite(g,this.defaults,this),vr.overwrite(g,g,this.limiterOptions),g.timeout!=null)return this._startAutoCleanup()}disconnect(g=!0){var _;if(!this.sharedConnection)return(_=this.connection)!=null?_.disconnect(g):void 0}}return D.prototype.defaults={timeout:1e3*60*5,connection:null,Promise,id:"group-key"},D}.call(e);var be=Hn,Dt,Sr,$e;$e=o,Sr=l,Dt=function(){class D{constructor(g={}){this.options=g,$e.load(this.options,this.defaults,this),this.Events=new Sr(this),this._arr=[],this._resetPromise(),this._lastFlush=Date.now()}_resetPromise(){return this._promise=new this.Promise((g,_)=>this._resolve=g)}_flush(){return clearTimeout(this._timeout),this._lastFlush=Date.now(),this._resolve(),this.Events.trigger("batch",this._arr),this._arr=[],this._resetPromise()}add(g){var _;return this._arr.push(g),_=this._promise,this._arr.length===this.maxSize?this._flush():this.maxTime!=null&&this._arr.length===1&&(this._timeout=setTimeout(()=>this._flush(),this.maxTime)),_}}return D.prototype.defaults={maxTime:null,maxSize:null,Promise},D}.call(e);var Hr=Dt,jt=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),Lt=r(Un),Gt,Vn,C,ir,Pe,Ce,ar,qr,Tr,lr,_e,Vr=[].splice;Ce=10,Vn=5,_e=o,ar=m,ir=G,Pe=he,qr=jt,C=l,Tr=Mn,lr=ps,Gt=function(){class D{constructor(g={},..._){var R,E;this._addToQueue=this._addToQueue.bind(this),this._validateOptions(g,_),_e.load(g,this.instanceDefaults,this),this._queues=new ar(Ce),this._scheduled={},this._states=new Tr(["RECEIVED","QUEUED","RUNNING","EXECUTING"].concat(this.trackDoneStatus?["DONE"]:[])),this._limiter=null,this.Events=new C(this),this._submitLock=new lr("submit",this.Promise),this._registerLock=new lr("register",this.Promise),E=_e.load(g,this.storeDefaults,{}),this._store=function(){if(this.datastore==="redis"||this.datastore==="ioredis"||this.connection!=null)return R=_e.load(g,this.redisStoreDefaults,{}),new qr(this,E,R);if(this.datastore==="local")return R=_e.load(g,this.localStoreDefaults,{}),new Pe(this,E,R);throw new D.prototype.BottleneckError(`Invalid datastore type: ${this.datastore}`)}.call(this),this._queues.on("leftzero",()=>{var x;return(x=this._store.heartbeat)!=null&&typeof x.ref=="function"?x.ref():void 0}),this._queues.on("zero",()=>{var x;return(x=this._store.heartbeat)!=null&&typeof x.unref=="function"?x.unref():void 0})}_validateOptions(g,_){if(!(g!=null&&typeof g=="object"&&_.length===0))throw new D.prototype.BottleneckError("Bottleneck v2 takes a single object argument. Refer to https://github.com/SGrondin/bottleneck#upgrading-to-v2 if you're upgrading from Bottleneck v1.")}ready(){return this._store.ready}clients(){return this._store.clients}channel(){return`b_${this.id}`}channel_client(){return`b_${this.id}_${this._store.clientId}`}publish(g){return this._store.__publish__(g)}disconnect(g=!0){return this._store.__disconnect__(g)}chain(g){return this._limiter=g,this}queued(g){return this._queues.queued(g)}clusterQueued(){return this._store.__queued__()}empty(){return this.queued()===0&&this._submitLock.isEmpty()}running(){return this._store.__running__()}done(){return this._store.__done__()}jobStatus(g){return this._states.jobStatus(g)}jobs(g){return this._states.statusJobs(g)}counts(){return this._states.statusCounts()}_randomIndex(){return Math.random().toString(36).slice(2)}check(g=1){return this._store.__check__(g)}_clearGlobalState(g){return this._scheduled[g]!=null?(clearTimeout(this._scheduled[g].expiration),delete this._scheduled[g],!0):!1}async _free(g,_,R,E){var x,A;try{if({running:A}=await this._store.__free__(g,R.weight),this.Events.trigger("debug",`Freed ${R.id}`,E),A===0&&this.empty())return this.Events.trigger("idle")}catch(N){return x=N,this.Events.trigger("error",x)}}_run(g,_,R){var E,x,A;return _.doRun(),E=this._clearGlobalState.bind(this,g),A=this._run.bind(this,g,_),x=this._free.bind(this,g,_),this._scheduled[g]={timeout:setTimeout(()=>_.doExecute(this._limiter,E,A,x),R),expiration:_.options.expiration!=null?setTimeout(function(){return _.doExpire(E,A,x)},R+_.options.expiration):void 0,job:_}}_drainOne(g){return this._registerLock.schedule(()=>{var _,R,E,x,A;return this.queued()===0?this.Promise.resolve(null):(A=this._queues.getFirst(),{options:x,args:_}=E=A.first(),g!=null&&x.weight>g?this.Promise.resolve(null):(this.Events.trigger("debug",`Draining ${x.id}`,{args:_,options:x}),R=this._randomIndex(),this._store.__register__(R,x.weight,x.expiration).then(({success:N,wait:V,reservoir:z})=>{var Ye;return this.Events.trigger("debug",`Drained ${x.id}`,{success:N,args:_,options:x}),N?(A.shift(),Ye=this.empty(),Ye&&this.Events.trigger("empty"),z===0&&this.Events.trigger("depleted",Ye),this._run(R,E,V),this.Promise.resolve(x.weight)):this.Promise.resolve(null)})))})}_drainAll(g,_=0){return this._drainOne(g).then(R=>{var E;return R!=null?(E=g!=null?g-R:g,this._drainAll(E,_+R)):this.Promise.resolve(_)}).catch(R=>this.Events.trigger("error",R))}_dropAllQueued(g){return this._queues.shiftAll(function(_){return _.doDrop({message:g})})}stop(g={}){var _,R;return g=_e.load(g,this.stopDefaults),R=E=>{var x;return x=()=>{var A;return A=this._states.counts,A[0]+A[1]+A[2]+A[3]===E},new this.Promise((A,N)=>x()?A():this.on("done",()=>{if(x())return this.removeAllListeners("done"),A()}))},_=g.dropWaitingJobs?(this._run=function(E,x){return x.doDrop({message:g.dropErrorMessage})},this._drainOne=()=>this.Promise.resolve(null),this._registerLock.schedule(()=>this._submitLock.schedule(()=>{var E,x,A;x=this._scheduled;for(E in x)A=x[E],this.jobStatus(A.job.options.id)==="RUNNING"&&(clearTimeout(A.timeout),clearTimeout(A.expiration),A.job.doDrop({message:g.dropErrorMessage}));return this._dropAllQueued(g.dropErrorMessage),R(0)}))):this.schedule({priority:Ce-1,weight:0},()=>R(1)),this._receive=function(E){return E._reject(new D.prototype.BottleneckError(g.enqueueErrorMessage))},this.stop=()=>this.Promise.reject(new D.prototype.BottleneckError("stop() has already been called")),_}async _addToQueue(g){var _,R,E,x,A,N,V;({args:_,options:x}=g);try{({reachedHWM:A,blocked:R,strategy:V}=await this._store.__submit__(this.queued(),x.weight))}catch(z){return E=z,this.Events.trigger("debug",`Could not queue ${x.id}`,{args:_,options:x,error:E}),g.doDrop({error:E}),!1}return R?(g.doDrop(),!0):A&&(N=V===D.prototype.strategy.LEAK?this._queues.shiftLastFrom(x.priority):V===D.prototype.strategy.OVERFLOW_PRIORITY?this._queues.shiftLastFrom(x.priority+1):V===D.prototype.strategy.OVERFLOW?g:void 0,N?.doDrop(),N==null||V===D.prototype.strategy.OVERFLOW)?(N==null&&g.doDrop(),A):(g.doQueue(A,R),this._queues.push(g),await this._drainAll(),A)}_receive(g){return this._states.jobStatus(g.options.id)!=null?(g._reject(new D.prototype.BottleneckError(`A job with the same id already exists (id=${g.options.id})`)),!1):(g.doReceive(),this._submitLock.schedule(this._addToQueue,g))}submit(...g){var _,R,E,x,A,N,V;return typeof g[0]=="function"?(A=g,[R,...g]=A,[_]=Vr.call(g,-1),x=_e.load({},this.jobDefaults)):(N=g,[x,R,...g]=N,[_]=Vr.call(g,-1),x=_e.load(x,this.jobDefaults)),V=(...z)=>new this.Promise(function(Ye,xr){return R(...z,function(...se){return(se[0]!=null?xr:Ye)(se)})}),E=new ir(V,g,x,this.jobDefaults,this.rejectOnDrop,this.Events,this._states,this.Promise),E.promise.then(function(z){return typeof _=="function"?_(...z):void 0}).catch(function(z){return Array.isArray(z)?typeof _=="function"?_(...z):void 0:typeof _=="function"?_(z):void 0}),this._receive(E)}schedule(...g){var _,R,E;return typeof g[0]=="function"?([E,...g]=g,R={}):[R,E,...g]=g,_=new ir(E,g,R,this.jobDefaults,this.rejectOnDrop,this.Events,this._states,this.Promise),this._receive(_),_.promise}wrap(g){var _,R;return _=this.schedule.bind(this),R=function(...E){return _(g.bind(this),...E)},R.withOptions=function(E,...x){return _(E,g,...x)},R}async updateSettings(g={}){return await this._store.__updateSettings__(_e.overwrite(g,this.storeDefaults)),_e.overwrite(g,this.instanceDefaults,this),this}currentReservoir(){return this._store.__currentReservoir__()}incrementReservoir(g=0){return this._store.__incrementReservoir__(g)}}return D.default=D,D.Events=C,D.version=D.prototype.version=Lt.version,D.strategy=D.prototype.strategy={LEAK:1,OVERFLOW:2,OVERFLOW_PRIORITY:4,BLOCK:3},D.BottleneckError=D.prototype.BottleneckError=h,D.Group=D.prototype.Group=be,D.RedisConnection=D.prototype.RedisConnection=Tt,D.IORedisConnection=D.prototype.IORedisConnection=xt,D.Batcher=D.prototype.Batcher=Hr,D.prototype.jobDefaults={priority:Vn,weight:1,expiration:null,id:"<no-id>"},D.prototype.storeDefaults={maxConcurrent:null,minTime:0,highWater:null,strategy:D.prototype.strategy.LEAK,penalty:null,reservoir:null,reservoirRefreshInterval:null,reservoirRefreshAmount:null,reservoirIncreaseInterval:null,reservoirIncreaseAmount:null,reservoirIncreaseMaximum:null},D.prototype.localStoreDefaults={Promise,timeout:null,heartbeatInterval:250},D.prototype.redisStoreDefaults={Promise,timeout:null,heartbeatInterval:5e3,clientTimeout:1e4,Redis:null,clientOptions:{},clusterNodes:null,clearDatastore:!1,connection:null},D.prototype.instanceDefaults={datastore:"local",connection:null,id:"<no-id>",rejectOnDrop:!0,trackDoneStatus:!1,Promise},D.prototype.stopDefaults={enqueueErrorMessage:"This limiter has been stopped and cannot accept new jobs.",dropWaitingJobs:!0,dropErrorMessage:"This limiter has been stopped."},D}.call(e);var U=Gt,oe=U;return oe})});var hp=Yl(Co=>{"use strict";Object.defineProperty(Co,"__esModule",{value:!0});Co.format=XR;Co.parse=ZR;var zR=/^[\u0009\u0020-\u007e\u0080-\u00ff]*$/,up=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,QR=/[\\"]/g,YR=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,pp=(()=>{let e=function(){};return e.prototype=Object.create(null),e})();function XR(e){let{type:r,parameters:t}=e;if(!r||!YR.test(r))throw new TypeError(`Invalid type: ${r}`);let n=r;if(t)for(let o of Object.keys(t)){if(!up.test(o))throw new TypeError(`Invalid parameter name: ${o}`);n+=`; ${o}=${nw(t[o])}`}return n}function ZR(e,r){let t=e.length,n=Zi(e,0,t),o=n;n=Xi(e,n,t);let s=ea(e,o,n),i=e.slice(o,s).toLowerCase(),a=r?.parameters===!1?new pp:tw(e,n,t);return{type:i,parameters:a}}var mp=32,gp=9,fp=59,ew=61,cp=34,rw=92;function tw(e,r,t){let n=new pp;e:for(;r<t;){r=Zi(e,r+1,t);let o=r;for(;r<t;){let s=e.charCodeAt(r);if(s===fp)continue e;if(s===ew){let i=ea(e,o,r),a=e.slice(o,i).toLowerCase();if(r=Zi(e,r+1,t),r<t&&e.charCodeAt(r)===cp){r++;let d="";for(;r<t;){let c=e.charCodeAt(r++);if(c===cp){r=Xi(e,r,t),n[a]===void 0&&(n[a]=d);break}if(c===rw&&r<t){d+=e[r++];continue}d+=String.fromCharCode(c)}continue e}let l=r;if(r=Xi(e,r,t),n[a]===void 0){let d=ea(e,l,r);n[a]=e.slice(l,d)}continue e}r++}}return n}function Xi(e,r,t){for(;r<t&&e.charCodeAt(r)!==fp;)r++;return r}function Zi(e,r,t){for(;r<t;){let n=e.charCodeAt(r);if(n!==mp&&n!==gp)break;r++}return r}function ea(e,r,t){for(;t>r;){let n=e.charCodeAt(t-1);if(n!==mp&&n!==gp)break;t--}return t}function nw(e){if(up.test(e))return e;if(zR.test(e))return`"${e.replace(QR,"\\$&")}"`;throw new TypeError(`Invalid parameter value: ${e}`)}});import{execFileSync as vx}from"node:child_process";import{homedir as $n}from"node:os";import{join as us}from"node:path";var et=class extends Error{constructor(r,t){super(r===0?t:`line ${r}: ${t}`),this.name="ToonError",this.line=r,this.reason=t}},Or=class extends Error{constructor(r,t){super(r===0?t:`line ${r}: ${t}`),this.name="ToonlError",this.line=r,this.reason=t}};function P(e,r){return new et(e,r)}function M(e,r){return new Or(e,r)}function rt(e){return e instanceof Or?e:e instanceof et?new Or(e.line,e.reason):new Or(0,String(e&&e.message?e.message:e))}var Xl=["type","kind","event"],Ar="|",Zl=new Set(["order","discriminator","rows","common"]);var K=",";function io(e){let r=e.split(`
7
- `);return r.length>0&&r[r.length-1]===""&&r.pop(),r.map(t=>t.endsWith("\r")?t.slice(0,-1):t)}function Ne(e){return P(e,"invalid quoted string")}function Ee(e,r){if(e==="")return"";if(e.startsWith('"'))return td(e,r);if(e.includes('"'))throw Ne(r);return e==="true"?!0:e==="false"?!1:e==="null"?null:Eh(e)?Number(e):e}function Oe(e,r){let t=e.trim();if(t.startsWith('"'))return[td(t,r),!0];if(t.includes('"')||/\s/.test(t))throw P(r,"expected non-empty field name");return[t,!1]}var ed=/["\\\u0000-\u0008\u000a-\u001f]/g;function td(e,r){if(e.charCodeAt(0)!==34)throw Ne(r);let t="",n=1;for(;n<e.length;){ed.lastIndex=n;let o=ed.exec(e);if(o===null)break;if(o[0]==='"'){if(e.slice(o.index+1).trim()==="")return t+e.slice(n,o.index);throw Ne(r)}if(o[0]!=="\\")throw Ne(r);t+=e.slice(n,o.index);let s=e[o.index+1];switch(n=o.index+2,s){case'"':t+='"';break;case"\\":t+="\\";break;case"n":t+=`
8
- `;break;case"r":t+="\r";break;case"t":t+=" ";break;case"u":{let i=e.slice(n,n+4);if(!/^[0-9a-fA-F]{4}$/.test(i))throw Ne(r);let a=Number.parseInt(i,16);if(a>=55296&&a<=57343)throw Ne(r);t+=String.fromCharCode(a),n+=4;break}default:throw Ne(r)}}throw Ne(r)}function nd(e,r,t){for(;;){let n=e.indexOf('"',r),o=e.indexOf("\\",r);if(o!==-1&&(n===-1||o<n)){if(o===e.length-1)throw Ne(t);r=o+2;continue}if(n===-1)throw Ne(t);return n+1}}function Ae(e,r,t){if(e==="")return[];let n=[],o=0,s=0;for(;s<e.length;){let i=e.indexOf('"',s),a=e.indexOf(r,s);if(a!==-1&&(i===-1||a<i))n.push(e.slice(o,a).trim()),o=a+1,s=a+1;else if(i!==-1)s=nd(e,i+1,t);else break}return n.push(e.slice(o).trim()),n}function de(e,r,t){let n=0;for(;n<e.length;){let o=e.indexOf('"',n),s=e.indexOf(r,n);if(s!==-1&&(o===-1||s<o))return s;if(o===-1)return-1;n=nd(e,o+1,t)}return-1}function Eh(e){return/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function vh(e){return/^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function Sh(e){if(Object.is(e,-0))return"0";if(!Number.isFinite(e))throw P(0,"number is not representable in TOON");return String(e)}function Me(e){return e===null||typeof e=="boolean"||typeof e=="number"||typeof e=="string"}function ce(e,r){if(e===null)return"null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="number")return Sh(e);if(typeof e=="string")return xh(e,r);throw P(0,"not a primitive")}function Th(e){return/^[A-Za-z_][A-Za-z0-9_.]*$/.test(e)}function ne(e){return Th(e)?e:ao(e)}function xh(e,r){return Ts(e,r)?ao(e):e}function Ts(e,r){return e===""||e.trim()!==e||e==="true"||e==="false"||e==="null"||vh(e)||/[:"\\[\]{}]/.test(e)||/[\u0000-\u001f]/.test(e)||e.includes(r)||e.startsWith("-")}var rd=/["\\\u0000-\u001f]/g;function ao(e){let r='"',t=0;rd.lastIndex=0;let n;for(;(n=rd.exec(e))!==null;){let o=e.charCodeAt(n.index),s;o===34?s='\\"':o===92?s="\\\\":o===10?s="\\n":o===13?s="\\r":o===9?s="\\t":s=`\\u${o.toString(16).padStart(4,"0")}`,r+=e.slice(t,n.index)+s,t=n.index+1}return`${r}${e.slice(t)}"`}function De(e,r,t){Object.defineProperty(e,r,{value:t,writable:!0,enumerable:!0,configurable:!0})}function Y(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function od(e={}){let r=e.maxDepth??1e3,t=r===Number.POSITIVE_INFINITY?0:Math.max(0,Math.floor(r));return{indent:Math.max(1,e.indent??2),strict:e.strict??!0,expandPaths:e.expandPaths==="safe"||e.expandPaths===!0,cyclicDiscriminatedArrays:e.cyclicDiscriminatedArrays!==!1,maxDepth:t}}function sd(e,r){let t=[],n=!1;return io(e).forEach((o,s)=>{let i=s+1;if(o.trim()===""){n=!0;return}let a=o.length-o.replace(/^ +/,"").length;if(o[a]===" ")throw P(i,"invalid indentation");if(r.strict&&a%r.indent!==0)throw P(i,"invalid indentation");let l=Math.floor(a/r.indent);Fe(l,i,r),t.push({number:i,depth:l,content:o.slice(a),blankBefore:n}),n=!1}),t}function Fe(e,r,t){if(t.maxDepth!==0&&e>t.maxDepth)throw P(r,`maximum nesting depth exceeded (maxDepth ${t.maxDepth})`)}function Kt(e,r,t){if(t.maxDepth===0)return;let n=0,o=!1,s=!1;for(let i of e){if(s){s=!1;continue}if(o&&i==="\\"){s=!0;continue}if(i==='"'){o=!o;continue}o||(i==="{"?(n+=1,Fe(n,r,t)):i==="}"&&(n=Math.max(0,n-1)))}}function ld(e){if(!Y(e)||Object.keys(e).length===0)return e;let r={};for(let[t,n]of Object.entries(e)){let o=Ph(n,1);if(o===void 0)return e;De(r,t,o)}return r}function Ph(e,r){if(!Y(e)||!Oh(e))return;let{order:t,discriminator:n,rows:o}=e;if(typeof t!="string"||typeof n!="string"||!Number.isSafeInteger(o)||o<0)throw ie(r);let s=Ah(t,o,r),i=e.common,a=i===void 0?Array.from({length:o},()=>({})):i;if(!Array.isArray(a)||a.length!==o||!a.every(Y))throw dd(r);let l=new Map;for(let[u,m]of Object.entries(e))if(!Zl.has(u)){if(!Array.isArray(m)||!m.every(Y))throw ie(r);l.set(u,m)}if(l.size===0)throw ie(r);let d=new Map,c=s.map((u,m)=>{let f=l.get(u);if(f===void 0)throw xs(r);let h=d.get(u)??0,v=f[h];if(v===void 0)throw xs(r);return d.set(u,h+1),Dh(n,u,a[m],v,r)});for(let[u,m]of l)if((d.get(u)??0)!==m.length)throw xs(r);return c}function Oh(e){return Object.prototype.hasOwnProperty.call(e,"order")||Object.prototype.hasOwnProperty.call(e,"discriminator")||Object.prototype.hasOwnProperty.call(e,"rows")}function Ah(e,r,t){if(!e.startsWith("cycle("))throw ie(t);let n=e.slice(6),o=n.indexOf(")*");if(o===-1)throw ie(t);let s=n.slice(0,o),i=n.slice(o+2);if(s===""||i.includes("+tail("))throw ie(t);let a=s.split(",").map(c=>Ih(c,t));if(a.some(c=>c===""))throw ie(t);let l=Gh(i,t),d=a.length*l;if(!Number.isSafeInteger(d))throw ie(t);if(d!==r)throw dd(t);return Array.from({length:d},(c,u)=>a[u%a.length])}function Dh(e,r,t,n,o){let s={};De(s,e,r);for(let[i,a]of Object.entries(t??{})){if(i===e||Object.prototype.hasOwnProperty.call(s,i))throw ie(o);De(s,i,a)}for(let[i,a]of Object.entries(jh(n,o))){if(i===e||Object.prototype.hasOwnProperty.call(s,i))throw ie(o);De(s,i,a)}return s}function jh(e,r){let t={};for(let[n,o]of Object.entries(e))Lh(t,n.split("."),o,r);return lo(t,r)}function Lh(e,r,t,n){if(r.some(s=>s===""))throw ie(n);let o=e;for(let s=0;s<r.length;s+=1){let i=r[s];if(s===r.length-1){o[i]=t;return}if(o[i]??={},o=o[i],!Y(o))throw ie(n)}}function lo(e,r){return Array.isArray(e)?e.map(t=>lo(t,r)):Y(e)?Number.isSafeInteger(e.length)&&e.length>=0?Array.from({length:e.length},(t,n)=>{if(!Object.prototype.hasOwnProperty.call(e,String(n)))throw ie(r);return lo(e[String(n)],r)}):Object.fromEntries(Object.entries(e).map(([t,n])=>[t,lo(n,r)])):e}function Gh(e,r){if(e===""||e.length>1&&e.startsWith("0")||!/^[0-9]+$/.test(e))throw ie(r);let t=Number(e);if(!Number.isSafeInteger(t))throw ie(r);return t}function Ih(e,r){try{return decodeURIComponent(e)}catch{throw ie(r)}}function id(e){return encodeURIComponent(e)}function ie(e){return P(e,"invalid cyclic array wire")}function dd(e){return P(e,"cyclic array length mismatch")}function xs(e){return P(e,"cyclic array group length mismatch")}function cd(e){if(!Y(e))return;let r=Object.entries(e);if(r.length===0)return;let t=[];for(let[o,s]of r){let i=$h(s);if(i===void 0)return;t.push([o,i])}let n=[];for(let[o,s]of t)Fh(n,o,s);return n.join("")}function $h(e){if(!Array.isArray(e)||e.length===0||!e.every(Y))return;let r=Ch(e);if(r===void 0)return;let t=e.map(a=>a[r]),n=Nh(t);if(n===void 0)return;let o=Mh(e,r),s=new Map;for(let a of e){let l=a[r];s.has(l)||s.set(l,[]);let d={};for(let[c,u]of Object.entries(a))if(c!==r&&!o.includes(c)&&!Ps(u,c,d))return;s.get(l).push(d)}let i=[];for(let a of n.cycle){let l=s.get(a),d=Uh(l);if(d===void 0||d.length===0)return;i.push({fields:d,label:a,rows:l})}return{common:o,commonRows:e.map(a=>Object.fromEntries(o.map(l=>[l,a[l]]))),discriminator:r,groups:i,order:n,rows:e}}function Ch(e){return Xl.find(r=>e.every(t=>typeof t[r]=="string"))}function Nh(e){if(!(e.length<12))for(let r=2;r<=Math.min(8,Math.floor(e.length/3));r+=1){if(e.length%r!==0)continue;let t=e.slice(0,r);if(new Set(t).size<2||!e.every((i,a)=>i===t[a%r]))continue;let n=e.length/r;if(n<3)continue;let o=e.map(id).join(","),s=`cycle(${t.map(id).join(",")})*${n}`;if(s.length<=o.length*.4)return{cycle:t,encoded:s,repeats:n}}}function Mh(e,r){let t=[],n=Object.keys(e[0]),o=n.indexOf(r)+1;for(let s of n.slice(o).filter(i=>i!==r)){if(!Wh(s)||!e.every(i=>Object.prototype.hasOwnProperty.call(i,s))||!e.every(i=>Me(i[s])))break;t.push(s)}return t}function Fh(e,r,t){e.push(ne(r),`:
9
- `),e.push(" order: ",ce(t.order.encoded,Ar),`
10
- `),e.push(" discriminator: ",ce(t.discriminator,Ar),`
11
- `),e.push(" rows: ",String(t.rows.length),`
12
- `),t.common.length>0&&ad(e,"common",t.common,t.commonRows);for(let n of t.groups)ad(e,n.label,n.fields,n.rows)}function ad(e,r,t,n){e.push(" ",ne(r),"[",String(n.length),Ar,"]{",t.map(ne).join(Ar),`}:
13
- `);for(let o of n)e.push(" ",t.map(s=>ce(o[s],Ar)).join(Ar),`
14
- `)}function Wh(e){return e!==""&&Os(e)}function Ps(e,r,t,n=new Set){if(!Os(r))return!1;if(Me(e))return t[r]=e,!0;if(Array.isArray(e)){if(n.has(e))return!1;n.add(e),t[`${r}.length`]=e.length;let o=e.every((s,i)=>Ps(s,`${r}.${i}`,t,n));return n.delete(e),o}if(Y(e)){if(n.has(e))return!1;n.add(e);let o=Object.entries(e).every(([s,i])=>!s.includes(".")&&Ps(i,`${r}.${s}`,t,n));return n.delete(e),o}return!1}function Uh(e){let r=Object.keys(e[0]??{});if(e.every(t=>Bh(Object.keys(t),r)))return r.every(Os)?r:void 0}function Bh(e,r){return e.length===r.length&&e.every((t,n)=>t===r[n])}function Os(e){return e.split(".").every(r=>/^[A-Za-z_][A-Za-z0-9_]*$|^(?:0|[1-9][0-9]*)$/.test(r))}function tt(e,r){let t=e[r]??e[e.length-1];return P(t===void 0?1:t.number,"array length mismatch")}function co(e,r){if(r===-1)throw P(0,"array header missing colon");let t=e.slice(0,r),n=de(t,"[",0);if(n===-1)throw P(0,"invalid array header");let o,s;try{[o,s]=Oe(t.slice(0,n),0)}catch{throw P(0,"invalid array header")}let i=t.slice(n+1),a=i.indexOf("]");if(a===-1)throw P(0,"invalid array header");let l=i.slice(0,a),d=/^[0-9]*/.exec(l)[0];if(d===""||d.length>1&&d.startsWith("0"))throw P(0,"invalid array header");let c=Number.parseInt(d,10),u;switch(l.slice(d.length)){case"":u=",";break;case" ":u=" ";break;case"|":u="|";break;default:throw P(0,"invalid array header")}let m=i.slice(a+1),f,h;if(m==="")f=void 0,h=void 0;else if(m.startsWith("{")&&m.endsWith("}")&&m.length>=2)try{h=qh(m.slice(1,-1),u),f=Ds(h)}catch(v){throw P(0,v.reason==="duplicate key"?"duplicate key":"invalid array header")}else throw P(0,"invalid array header");return{key:o,keyQuoted:s,len:c,delimiter:u,fields:f,fieldTree:h}}function ud(e){let r=de(e,"{",0);if(r===-1||!e.endsWith("}"))throw P(0,"invalid keyed map header");let t,n;try{[t,n]=Oe(e.slice(0,r),0)}catch{throw P(0,"invalid keyed map header")}if(t===""&&!n)throw P(0,"expected non-empty field name");let o=e.slice(r+1,-1),s=K;(o.startsWith("|")||o.startsWith(" "))&&(s=o[0],o=o.slice(1));let i;try{i=Hh(o,s,s)}catch(a){throw P(0,a.reason==="duplicate key"?"duplicate key":"invalid keyed map header")}return{key:t,keyQuoted:n,delimiter:s,fields:i}}function Hh(e,r,t){let n=[],o=0;function s(l,d){let c=0;for(;o<e.length&&!(d&&e[o]==="}");){if(e[o]===r||e[o]==="}")throw P(0,"invalid array header");let u=o;for(;o<e.length;){let h=e[o];if(h==='"'){i();continue}if(h===r||h==="{"||h==="}"||h==="[")break;o+=1}let[m,f]=Oe(e.slice(u,o),0);if(m===""&&!f)throw P(0,"invalid array header");if(c+=1,e[o]==="["){o+=1;let h=o;for(;o<e.length&&e[o]!=="]";)o+=1;if(o>=e.length)throw P(0,"invalid array header");let v=e.slice(h,o);if(!pd(v,t))throw P(0,"invalid array header");o+=1,n.push({path:[...l,m],listDelimiter:v})}else if(e[o]==="{"){o+=1;let h=n.length;if(s([...l,m],!0),e[o]!=="}"||n.length===h)throw P(0,"invalid array header");o+=1}else n.push({path:[...l,m],listDelimiter:void 0});if(e[o]===r){if(o+=1,o>=e.length||e[o]==="}")throw P(0,"invalid array header");continue}if(d?e[o]==="}":o===e.length)break;throw P(0,"invalid array header")}if(c===0)throw P(0,"invalid array header")}function i(){for(o+=1;o<e.length;){let l=e[o];if(o+=1,l==="\\")o+=1;else if(l==='"')return}}if(s([],!1),o!==e.length)throw P(0,"invalid array header");let a=new Set;for(let l=0;l<n.length;l+=1)for(let d=l+1;d<n.length;d+=1)if(md(n[l].path,n[d].path)||Jt(n[l].path,n[d].path)||Jt(n[d].path,n[l].path))throw P(0,"duplicate key");for(let l of n){let c=l.path.join("\0");if(a.has(c))throw P(0,"duplicate key");a.add(c)}return n}function qh(e,r){if(r!==K&&e.includes(K)&&(e.includes("[")||e.includes("{")))return As(e,K,r);try{return As(e,r,r)}catch(t){if(r!==K&&t.reason!=="duplicate key")return As(e,K,r);throw t}}function As(e,r,t){let n=0;function o(l){let d=[];for(;n<e.length&&!(l&&e[n]==="}");){if(e[n]===r||e[n]==="}")throw P(0,"invalid array header");let c=n;for(;n<e.length;){let h=e[n];if(h==='"'){s();continue}if(h===r||h==="{"||h==="}"||h==="[")break;n+=1}let[u,m]=Oe(e.slice(c,n),0);if(u===""&&!m)throw P(0,"invalid array header");let f={key:u};if(e[n]==="["){n+=1;let h=n;for(;n<e.length&&e[n]!=="]";)n+=1;if(n>=e.length)throw P(0,"invalid array header");let v=e.slice(h,n);n+=1;let k=Vh(v);if(k!==void 0){if(k.delimiter!==t)throw P(0,"invalid array header");f.fixedLength=k.len,f.fixedDelimiter=k.delimiter}else if(pd(v,t))f.listDelimiter=v;else throw P(0,"invalid array header")}else if(e[n]==="{"){if(n+=1,f.children=o(!0),e[n]!=="}"||f.children.length===0)throw P(0,"invalid array header");n+=1}if(d.push(f),e[n]===r){if(n+=1,n>=e.length||e[n]==="}")throw P(0,"invalid array header");continue}if(l?e[n]==="}":n===e.length)break;throw P(0,"invalid array header")}if(d.length===0)throw P(0,"invalid array header");return d}function s(){for(n+=1;n<e.length;){let l=e[n];if(n+=1,l==="\\")n+=1;else if(l==='"')return}}let i=o(!1);if(n!==e.length)throw P(0,"invalid array header");let a=Ds(i);for(let l=0;l<a.length;l+=1)for(let d=l+1;d<a.length;d+=1)if(md(a[l].path,a[d].path)||Jt(a[l].path,a[d].path)||Jt(a[d].path,a[l].path))throw P(0,"duplicate key");return i}function Vh(e){let r=/^[0-9]+/.exec(e)?.[0];if(r===void 0||r.length>1&&r.startsWith("0"))return;let t=e.slice(r.length),n;switch(t){case"":n=K;break;case" ":n=" ";break;case"|":n="|";break;default:return}return{len:Number.parseInt(r,10),delimiter:n}}function Ds(e,r=[]){return e.flatMap(t=>{let n=[...r,t.key];return t.children!==void 0?Ds(t.children,n):[{path:n,listDelimiter:t.listDelimiter}]})}function uo(e,r,t){return e.listDelimiter===void 0?Ee(r,t):Ae(r,e.listDelimiter,t).map(n=>Ee(n,t))}function pd(e,r){return e.length===1&&e!==r&&!/[ \t\r\n"[\]{}:]/.test(e)}function md(e,r){return e.length===r.length&&Jt(e,r)}function Jt(e,r){return r.every((t,n)=>e[n]===t)}function po(e,r){return P(r,e.reason??String(e.message))}function me(e,r){let t=od(r),n=sd(e,t),o=n[0];if(o===void 0)return{};if(o.depth!==0)throw P(o.number,"invalid indentation");let s=n.length===1;if(s&&o.content.trim()==="[]")return[];if(o.content.startsWith("[")){Kt(o.content,o.number,t);let d;try{d=co(o.content,de(o.content,":",o.number))}catch(c){if(t.strict)throw po(c,o.number);d=void 0}if(d!==void 0)return zh(d,n,t)}if(s&&de(o.content,":",o.number)===-1)return Ee(o.content.trim(),o.number);let i={index:0},a=Ls(n,i,0,t),l=n[i.index];if(l!==void 0)throw P(l.number,"expected end of document");return t.cyclicDiscriminatedArrays?ld(a):a}function Ls(e,r,t,n){let o={};for(;r.index<e.length;){let s=e[r.index];if(s.depth<t)break;if(s.depth>t)throw P(s.number,"invalid indentation");let{key:i,quoted:a,value:l}=Kh(e,r,t,n);_d(o,i,a,l,n,s.number)}return o}function Kh(e,r,t,n){let o=e[r.index],s=o.content,i=de(s,":",o.number);if(i===-1)throw P(o.number,"expected `key: value`");let a=s.slice(0,i),l=s.slice(i+1),d=de(a,"[",o.number),c=de(a,"{",o.number);if(c!==-1&&(d===-1||c<d)){Kt(a,o.number,n);let h;try{h=ud(a)}catch(k){if(n.strict)throw po(k,o.number);r.index+=1;let T=js(e,r,t,l,o.number,n);return{key:a.trim(),quoted:!1,value:T}}if(l.trim()!=="")throw P(o.number,"expected keyed map rows");let v=Jh(h,e,r,t+1,n);return{key:h.key,quoted:h.keyQuoted,value:v}}if(d!==-1){Kt(a,o.number,n);let h;try{h=co(a,i)}catch(k){if(n.strict)throw po(k,o.number);r.index+=1;let T=js(e,r,t,l,o.number,n);return{key:a.trim(),quoted:!1,value:T}}if(h.key===""&&!h.keyQuoted)throw P(o.number,"expected non-empty field name");let v=Gs(h,l,e,r,t,n);return{key:h.key,quoted:h.keyQuoted,value:v}}let[u,m]=Oe(a,o.number);if(u===""&&!m)throw P(o.number,"expected non-empty field name");r.index+=1;let f=js(e,r,t,l,o.number,n);return{key:u,quoted:m,value:f}}function js(e,r,t,n,o,s){let i=n.trim();if(i==="[]")return[];if(i!=="")return Ee(i,o);let a=e[r.index];return a!==void 0&&a.depth>t?Ls(e,r,t+1,s):{}}function Jh(e,r,t,n,o){let s={};for(t.index+=1;t.index<r.length;){let i=r[t.index];if(i.depth<n)break;if(i.depth>n)throw P(i.number,"invalid indentation");if(i.blankBefore&&o.strict)throw P(i.number,"blank line inside keyed map");let a=de(i.content,":",i.number);if(a===-1)throw P(i.number,"expected `key: value`");let[l,d]=Oe(i.content.slice(0,a),i.number);if(l===""&&!d)throw P(i.number,"expected non-empty field name");let c=Ae(i.content.slice(a+1).trim(),e.delimiter,i.number);if(c.length!==e.fields.length)throw P(i.number,"keyed map row length mismatch");let u={};e.fields.forEach((m,f)=>{ot(u,m.path,uo(m,c[f],i.number),o,i.number)}),_d(s,l,d,u,o,i.number),t.index+=1}return s}function zh(e,r,t){let n=r[0],o=de(n.content,":",n.number);if(o===-1)throw P(n.number,"expected `key: value`");let s=n.content.slice(o+1),i={index:0},a=Gs(e,s,r,i,0,t),l=r[i.index];if(l!==void 0)throw P(l.number,"expected end of document");return a}function Gs(e,r,t,n,o,s){let i=t[n.index].number,a=r.trim();if(n.index+=1,e.fields!==void 0){if(a!=="")throw P(i,"expected tabular rows");return Qh(e,e.fields,t,n,o+1,s)}if(a!==""){let l=Ae(a,e.delimiter,i).map(d=>Ee(d,i));if(l.length!==e.len)throw P(i,"array length mismatch");return l}return ny(e,t,n,o+1,s)}function Qh(e,r,t,n,o,s){if(e.fieldTree!==void 0&&ry(e.fieldTree))return Yh(e,t,n,o,s);let i=[];for(;i.length<e.len;){let l=t[n.index];if(l===void 0)throw tt(t,n.index);if(l.depth<o)break;if(l.depth>o)throw P(l.number,"invalid indentation");if(l.blankBefore&&s.strict)throw P(l.number,"blank line inside array");if(!nt(l.content,e.delimiter,l.number))break;let d=Ae(l.content,e.delimiter,l.number);if(d.length!==r.length)throw P(l.number,"array row length mismatch");let c={};r.forEach((u,m)=>{ot(c,u.path,uo(u,d[m],l.number),s,l.number)}),i.push(c),n.index+=1}if(i.length!==e.len)throw tt(t,n.index);let a=t[n.index];if(a!==void 0&&a.depth>=o&&nt(a.content,e.delimiter,a.number))throw P(a.number,"array length mismatch");return i}function Yh(e,r,t,n,o){return gd(e.len,e.fieldTree,e.delimiter,r,t,n,o,!0)}function gd(e,r,t,n,o,s,i,a){let l=[],d=hd(e,r,t,n,o.index,s,i);for(;l.length<e;){let u=n[o.index];if(u===void 0)throw tt(n,o.index);if(u.depth<s)break;if(u.depth>s)throw P(u.number,"invalid indentation");if(u.blankBefore&&i.strict)throw P(u.number,"blank line inside array");if(!nt(u.content,t,u.number))break;let m=Ae(u.content,t,u.number),f={cellIndex:0,nextIndex:o.index+1,flatWidth:mo(r),childTableFields:d},h=fd(r,m,u.number,n,f,s+1,t,i);if(f.cellIndex!==m.length)throw P(u.number,"array row length mismatch");l.push(ey(r,h,a)),o.index=f.nextIndex}if(l.length!==e)throw tt(n,o.index);let c=n[o.index];if(c!==void 0&&c.depth>=s&&nt(c.content,t,c.number))throw P(c.number,"array length mismatch");return l}function fd(e,r,t,n,o,s,i,a){let l={};return e.forEach((d,c)=>{let u=e.slice(c+1),m=Xh(d,u,r,t,n,o,s,i,a);ot(l,[d.key],m,a,t)}),l}function Xh(e,r,t,n,o,s,i,a,l){if(e.fixedLength!==void 0){if(s.cellIndex+e.fixedLength>t.length)throw P(n,"array row length mismatch");let c=t.slice(s.cellIndex,s.cellIndex+e.fixedLength).map(u=>Ee(u,n));return s.cellIndex+=e.fixedLength,c}if(e.children!==void 0){let c=mo(e.children),u=t[s.cellIndex],m=kd(u),f=t.length-s.cellIndex-1,h=o[s.nextIndex],v=h!==void 0&&h.depth===i,k=s.childTableFields===void 0?void 0:s.childTableFields.has(e);if(k===void 0?m!==void 0&&(v||t.length!==s.flatWidth&&f<c+ty(r)):k){if(m===void 0)throw P(n,"array row length mismatch");return s.cellIndex+=1,gd(m,e.children,a,o,{get index(){return s.nextIndex},set index(I){s.nextIndex=I}},i,l,!1)}return fd(e.children,t,n,o,s,i,a,l)}let d=t[s.cellIndex];if(d===void 0)throw P(n,"array row length mismatch");return s.cellIndex+=1,uo(e,d,n)}function hd(e,r,t,n,o,s,i){let a=r.filter(c=>c.children!==void 0);if(a.length===0)return new Set;if(a.length>12)return;let l,d=1<<a.length;for(let c=0;c<d;c+=1){let u=new Set;a.forEach((f,h)=>{c&1<<h&&u.add(f)});let m=yd(e,r,u,t,n,o,s,i);m!==void 0&&(l===void 0||m.consumedChildRows>l.consumedChildRows||m.consumedChildRows===l.consumedChildRows&&u.size<l.childTableFields.size)&&(l={childTableFields:u,consumedChildRows:m.consumedChildRows})}return l?.childTableFields}function yd(e,r,t,n,o,s,i,a){let l=s,d=0;try{for(let u=0;u<e;u+=1){let m=o[l];if(m===void 0||m.depth!==i||m.blankBefore&&a.strict||!nt(m.content,n,m.number))return;let f=Ae(m.content,n,m.number),h=Zh(r,t,f,n,o,l+1,i+1,a);if(h===void 0||o[h.nextIndex]?.depth>i)return;d+=h.consumedChildRows,l=h.nextIndex}let c=o[l];if(c!==void 0&&c.depth>=i&&nt(c.content,n,c.number))return}catch{return}return{nextIndex:l,consumedChildRows:d}}function Zh(e,r,t,n,o,s,i,a){let l=0,d=s,c=0;for(let u of e){if(u.fixedLength!==void 0)l+=u.fixedLength;else if(u.children!==void 0)if(r.has(u)){let m=kd(t[l]);if(m===void 0)return;l+=1;let f=hd(m,u.children,n,o,d,i,a);if(f===void 0)return;let h=yd(m,u.children,f,n,o,d,i,a);if(h===void 0)return;d=h.nextIndex,c+=m+h.consumedChildRows}else l+=mo(u.children);else l+=1;if(l>t.length)return}if(l===t.length)return{nextIndex:d,consumedChildRows:c}}function ey(e,r,t){return t&&e.length===1&&e[0].fixedLength!==void 0?r[e[0].key]:r}function kd(e){if(!(e===void 0||!/^(0|[1-9][0-9]*)$/.test(e)))return Number.parseInt(e,10)}function ry(e){return e.some(r=>r.fixedLength!==void 0||r.children!==void 0)}function mo(e){return e.reduce((r,t)=>r+bd(t),0)}function bd(e){return e.fixedLength!==void 0?e.fixedLength:e.children!==void 0?mo(e.children):1}function ty(e){return e.reduce((r,t)=>t.children!==void 0?r+1:r+bd(t),0)}function nt(e,r,t){let n=de(e,":",t);if(n===-1)return!0;let o=de(e,r,t);return o===-1?!1:o<n}function ny(e,r,t,n,o){let s=[];for(;s.length<e.len;){let a=r[t.index];if(a===void 0||a.depth<n)throw tt(r,t.index);if(a.depth>n)throw P(a.number,"invalid indentation");if(a.blankBefore&&o.strict)throw P(a.number,"blank line inside array");s.push(oy(r,t,n,o))}let i=r[t.index];if(i!==void 0&&i.depth>=n)throw P(i.number,"array length mismatch");return s}function oy(e,r,t,n){let o=e[r.index];if(!o.content.startsWith("-"))throw P(o.number,"expected array item");let s=o.content.slice(1).replace(/^\s+/,"");if(s==="")return r.index+=1,{};if(s.startsWith("[")){let i=de(s,":",o.number);Kt(s,o.number,n);let a;try{a=co(s,i)}catch{a=void 0}if(a!==void 0){let l=s.slice(i+1);return Gs(a,l,e,r,t,n)}}if(de(s,":",o.number)!==-1){let i=[{number:o.number,depth:t+1,content:s,blankBefore:!1}];for(r.index+=1;r.index<e.length;){let a=e[r.index];if(a.depth<=t)break;i.push(a),r.index+=1}return Ls(i,{index:0},t+1,n)}return r.index+=1,Ee(s,o.number)}function _d(e,r,t,n,o,s){if(o.expandPaths&&!t&&r.includes(".")){let i=r.split(".");if(i.every(sy)){ot(e,i,n,o,s);return}}ot(e,[r],n,o,s)}function ot(e,r,t,n,o){Fe(r.length-1,o,n);let s=r[0],i=Object.prototype.hasOwnProperty.call(e,s);if(r.length===1){if(i&&n.strict)throw P(o,"duplicate key");De(e,s,t);return}if(i&&!Y(e[s])){if(n.strict)throw P(o,"path expansion conflict");De(e,s,{})}else i||De(e,s,{});ot(e[s],r.slice(1),t,n,o)}function sy(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}function X(e,r={}){let t=r.maxDepth??1e3,n=r.delimiter??K;if(![K,"|"," "].includes(n))throw P(0,"invalid array header");let o={nestedTabularHeaders:r.nestedTabularHeaders===!0,keyedMapCollapse:r.keyedMapCollapse===!0,primitiveArrayColumns:r.primitiveArrayColumns===!0,objectArrayColumns:r.objectArrayColumns===!0,cyclicDiscriminatedArrays:r.cyclicDiscriminatedArrays===!0,delimiter:n,maxDepth:t===Number.POSITIVE_INFINITY?0:Math.max(0,Math.floor(t))};if(o.cyclicDiscriminatedArrays){let i=cd(e);if(i!==void 0)return i}let s=[];return Array.isArray(e)?Ns(s,void 0,e,0,!1,o):Y(e)?Rd(s,e,0,o):s.push(ce(e,n)),s.join("")}function st(e,r){e.push(" ".repeat(r*2))}function Rd(e,r,t,n){Fe(t,0,n);for(let[o,s]of Object.entries(r))st(e,t),$s(e,o,s,t,n)}function $s(e,r,t,n,o){if(Fe(n,0,o),Array.isArray(t)){Ns(e,r,t,n,!1,o);return}if(Y(t)){let s=o.keyedMapCollapse?ay(t,o,n+1):void 0;if(s!==void 0){e.push(ne(r),"{",Ms(o.delimiter),s.fields.map(i=>Us(i,o.delimiter)).join(o.delimiter),`}:
15
- `);for(let[i,a]of Object.entries(t)){st(e,n+1);let l=[];e.push(ne(i),": ",s.paths.map(d=>Bs(Ws(a,d.path),d,o.delimiter,o,l,n+2)).join(o.delimiter),`
16
- `),e.push(...l)}return}e.push(ne(r),`:
17
- `),Rd(e,t,n+1,o);return}e.push(ne(r),": ",ce(t,o.delimiter),`
18
- `)}function Ns(e,r,t,n,o,s){if(Fe(n,0,s),t.length===0){r!==void 0?e.push(ne(r),`: []
5
+ ${t.searched.map(r=>` ${r}`).join(`
6
+ `)}`),this.name="RedskilledDaemonEntryError",this.searched=t.searched,t.callerEntry!=null&&(this.callerEntry=t.callerEntry)}};lS=/^([a-z0-9-]+)-(.+)\.bundle\.min\.mjs$/,Ad=/^redskilled-(.+)\.bundle\.min\.mjs$/,dS=["RED_SKILLS_DEV_PLUGIN_ROOT","CLAUDE_PLUGIN_ROOT","CODEX_PLUGIN_ROOT","OPENCODE_PLUGIN_ROOT"]});var oc=wf((rc,nc)=>{(function(e,t){typeof rc=="object"&&typeof nc<"u"?nc.exports=t():typeof define=="function"&&define.amd?define(t):e.Bottleneck=t()})(rc,function(){"use strict";var e=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function t(Q){return Q&&Q.default||Q}var r=function(Q,C,w={}){var F,M,B;for(F in C)B=C[F],w[F]=(M=Q[F])!=null?M:B;return w},n=function(Q,C,w={}){var F,M;for(F in Q)M=Q[F],C[F]!==void 0&&(w[F]=M);return w},o={load:r,overwrite:n},s;s=class{constructor(C,w){this.incr=C,this.decr=w,this._first=null,this._last=null,this.length=0}push(C){var w;this.length++,typeof this.incr=="function"&&this.incr(),w={value:C,prev:this._last,next:null},this._last!=null?(this._last.next=w,this._last=w):this._first=this._last=w}shift(){var C;if(this._first!=null)return this.length--,typeof this.decr=="function"&&this.decr(),C=this._first.value,(this._first=this._first.next)!=null?this._first.prev=null:this._last=null,C}first(){if(this._first!=null)return this._first.value}getArray(){var C,w,F;for(C=this._first,F=[];C!=null;)F.push((w=C,C=C.next,w.value));return F}forEachShift(C){var w;for(w=this.shift();w!=null;)C(w),w=this.shift()}debug(){var C,w,F,M,B;for(C=this._first,B=[];C!=null;)B.push((w=C,C=C.next,{value:w.value,prev:(F=w.prev)!=null?F.value:void 0,next:(M=w.next)!=null?M.value:void 0}));return B}};var i=s,a;a=class{constructor(C){if(this.instance=C,this._events={},this.instance.on!=null||this.instance.once!=null||this.instance.removeAllListeners!=null)throw new Error("An Emitter already exists for this object");this.instance.on=(w,F)=>this._addListener(w,"many",F),this.instance.once=(w,F)=>this._addListener(w,"once",F),this.instance.removeAllListeners=(w=null)=>w!=null?delete this._events[w]:this._events={}}_addListener(C,w,F){var M;return(M=this._events)[C]==null&&(M[C]=[]),this._events[C].push({cb:F,status:w}),this.instance}listenerCount(C){return this._events[C]!=null?this._events[C].length:0}async trigger(C,...w){var F,M;try{return C!=="debug"&&this.trigger("debug",`Event triggered: ${C}`,w),this._events[C]==null?void 0:(this._events[C]=this._events[C].filter(function(B){return B.status!=="none"}),M=this._events[C].map(async B=>{var U,X;if(B.status!=="none"){B.status==="once"&&(B.status="none");try{return X=typeof B.cb=="function"?B.cb(...w):void 0,typeof X?.then=="function"?await X:X}catch(be){return U=be,this.trigger("error",U),null}}}),(await Promise.all(M)).find(function(B){return B!=null}))}catch(B){return F=B,this.trigger("error",F),null}}};var l=a,d,c,u;d=i,c=l,u=class{constructor(C){var w;this.Events=new c(this),this._length=0,this._lists=function(){var F,M,B;for(B=[],w=F=1,M=C;1<=M?F<=M:F>=M;w=1<=M?++F:--F)B.push(new d(()=>this.incr(),()=>this.decr()));return B}.call(this)}incr(){if(this._length++===0)return this.Events.trigger("leftzero")}decr(){if(--this._length===0)return this.Events.trigger("zero")}push(C){return this._lists[C.options.priority].push(C)}queued(C){return C!=null?this._lists[C].length:this._length}shiftAll(C){return this._lists.forEach(function(w){return w.forEachShift(C)})}getFirst(C=this._lists){var w,F,M;for(w=0,F=C.length;w<F;w++)if(M=C[w],M.length>0)return M;return[]}shiftLastFrom(C){return this.getFirst(this._lists.slice(C).reverse()).shift()}};var p=u,g;g=class extends Error{};var f=g,k,b,v,T,$;T=10,b=5,$=o,k=f,v=class{constructor(C,w,F,M,B,U,X,be){this.task=C,this.args=w,this.rejectOnDrop=B,this.Events=U,this._states=X,this.Promise=be,this.options=$.load(F,M),this.options.priority=this._sanitizePriority(this.options.priority),this.options.id===M.id&&(this.options.id=`${this.options.id}-${this._randomIndex()}`),this.promise=new this.Promise((je,Be)=>{this._resolve=je,this._reject=Be}),this.retryCount=0}_sanitizePriority(C){var w;return w=~~C!==C?b:C,w<0?0:w>T-1?T-1:w}_randomIndex(){return Math.random().toString(36).slice(2)}doDrop({error:C,message:w="This job has been dropped by Bottleneck"}={}){return this._states.remove(this.options.id)?(this.rejectOnDrop&&this._reject(C??new k(w)),this.Events.trigger("dropped",{args:this.args,options:this.options,task:this.task,promise:this.promise}),!0):!1}_assertStatus(C){var w;if(w=this._states.jobStatus(this.options.id),!(w===C||C==="DONE"&&w===null))throw new k(`Invalid job status ${w}, expected ${C}. Please open an issue at https://github.com/SGrondin/bottleneck/issues`)}doReceive(){return this._states.start(this.options.id),this.Events.trigger("received",{args:this.args,options:this.options})}doQueue(C,w){return this._assertStatus("RECEIVED"),this._states.next(this.options.id),this.Events.trigger("queued",{args:this.args,options:this.options,reachedHWM:C,blocked:w})}doRun(){return this.retryCount===0?(this._assertStatus("QUEUED"),this._states.next(this.options.id)):this._assertStatus("EXECUTING"),this.Events.trigger("scheduled",{args:this.args,options:this.options})}async doExecute(C,w,F,M){var B,U,X;this.retryCount===0?(this._assertStatus("RUNNING"),this._states.next(this.options.id)):this._assertStatus("EXECUTING"),U={args:this.args,options:this.options,retryCount:this.retryCount},this.Events.trigger("executing",U);try{if(X=await(C!=null?C.schedule(this.options,this.task,...this.args):this.task(...this.args)),w())return this.doDone(U),await M(this.options,U),this._assertStatus("DONE"),this._resolve(X)}catch(be){return B=be,this._onFailure(B,U,w,F,M)}}doExpire(C,w,F){var M,B;return this._states.jobStatus(this.options.id==="RUNNING")&&this._states.next(this.options.id),this._assertStatus("EXECUTING"),B={args:this.args,options:this.options,retryCount:this.retryCount},M=new k(`This job timed out after ${this.options.expiration} ms.`),this._onFailure(M,B,C,w,F)}async _onFailure(C,w,F,M,B){var U,X;if(F())return U=await this.Events.trigger("failed",C,w),U!=null?(X=~~U,this.Events.trigger("retry",`Retrying ${this.options.id} after ${X} ms`,w),this.retryCount++,M(X)):(this.doDone(w),await B(this.options,w),this._assertStatus("DONE"),this._reject(C))}doDone(C){return this._assertStatus("EXECUTING"),this._states.next(this.options.id),this.Events.trigger("done",C)}};var D=v,L,W,K;K=o,L=f,W=class{constructor(C,w,F){this.instance=C,this.storeOptions=w,this.clientId=this.instance._randomIndex(),K.load(F,F,this),this._nextRequest=this._lastReservoirRefresh=this._lastReservoirIncrease=Date.now(),this._running=0,this._done=0,this._unblockTime=0,this.ready=this.Promise.resolve(),this.clients={},this._startHeartbeat()}_startHeartbeat(){var C;return this.heartbeat==null&&(this.storeOptions.reservoirRefreshInterval!=null&&this.storeOptions.reservoirRefreshAmount!=null||this.storeOptions.reservoirIncreaseInterval!=null&&this.storeOptions.reservoirIncreaseAmount!=null)?typeof(C=this.heartbeat=setInterval(()=>{var w,F,M,B,U;if(B=Date.now(),this.storeOptions.reservoirRefreshInterval!=null&&B>=this._lastReservoirRefresh+this.storeOptions.reservoirRefreshInterval&&(this._lastReservoirRefresh=B,this.storeOptions.reservoir=this.storeOptions.reservoirRefreshAmount,this.instance._drainAll(this.computeCapacity())),this.storeOptions.reservoirIncreaseInterval!=null&&B>=this._lastReservoirIncrease+this.storeOptions.reservoirIncreaseInterval&&({reservoirIncreaseAmount:w,reservoirIncreaseMaximum:M,reservoir:U}=this.storeOptions,this._lastReservoirIncrease=B,F=M!=null?Math.min(w,M-U):w,F>0))return this.storeOptions.reservoir+=F,this.instance._drainAll(this.computeCapacity())},this.heartbeatInterval)).unref=="function"?C.unref():void 0:clearInterval(this.heartbeat)}async __publish__(C){return await this.yieldLoop(),this.instance.Events.trigger("message",C.toString())}async __disconnect__(C){return await this.yieldLoop(),clearInterval(this.heartbeat),this.Promise.resolve()}yieldLoop(C=0){return new this.Promise(function(w,F){return setTimeout(w,C)})}computePenalty(){var C;return(C=this.storeOptions.penalty)!=null?C:15*this.storeOptions.minTime||5e3}async __updateSettings__(C){return await this.yieldLoop(),K.overwrite(C,C,this.storeOptions),this._startHeartbeat(),this.instance._drainAll(this.computeCapacity()),!0}async __running__(){return await this.yieldLoop(),this._running}async __queued__(){return await this.yieldLoop(),this.instance.queued()}async __done__(){return await this.yieldLoop(),this._done}async __groupCheck__(C){return await this.yieldLoop(),this._nextRequest+this.timeout<C}computeCapacity(){var C,w;return{maxConcurrent:C,reservoir:w}=this.storeOptions,C!=null&&w!=null?Math.min(C-this._running,w):C!=null?C-this._running:w??null}conditionsCheck(C){var w;return w=this.computeCapacity(),w==null||C<=w}async __incrementReservoir__(C){var w;return await this.yieldLoop(),w=this.storeOptions.reservoir+=C,this.instance._drainAll(this.computeCapacity()),w}async __currentReservoir__(){return await this.yieldLoop(),this.storeOptions.reservoir}isBlocked(C){return this._unblockTime>=C}check(C,w){return this.conditionsCheck(C)&&this._nextRequest-w<=0}async __check__(C){var w;return await this.yieldLoop(),w=Date.now(),this.check(C,w)}async __register__(C,w,F){var M,B;return await this.yieldLoop(),M=Date.now(),this.conditionsCheck(w)?(this._running+=w,this.storeOptions.reservoir!=null&&(this.storeOptions.reservoir-=w),B=Math.max(this._nextRequest-M,0),this._nextRequest=M+B+this.storeOptions.minTime,{success:!0,wait:B,reservoir:this.storeOptions.reservoir}):{success:!1}}strategyIsBlock(){return this.storeOptions.strategy===3}async __submit__(C,w){var F,M,B;if(await this.yieldLoop(),this.storeOptions.maxConcurrent!=null&&w>this.storeOptions.maxConcurrent)throw new L(`Impossible to add a job having a weight of ${w} to a limiter having a maxConcurrent setting of ${this.storeOptions.maxConcurrent}`);return M=Date.now(),B=this.storeOptions.highWater!=null&&C===this.storeOptions.highWater&&!this.check(w,M),F=this.strategyIsBlock()&&(B||this.isBlocked(M)),F&&(this._unblockTime=M+this.computePenalty(),this._nextRequest=this._unblockTime+this.storeOptions.minTime,this.instance._dropAllQueued()),{reachedHWM:B,blocked:F,strategy:this.storeOptions.strategy}}async __free__(C,w){return await this.yieldLoop(),this._running-=w,this._done+=w,this.instance._drainAll(this.computeCapacity()),{running:this._running}}};var H=W,I,N;I=f,N=class{constructor(C){this.status=C,this._jobs={},this.counts=this.status.map(function(){return 0})}next(C){var w,F;if(w=this._jobs[C],F=w+1,w!=null&&F<this.status.length)return this.counts[w]--,this.counts[F]++,this._jobs[C]++;if(w!=null)return this.counts[w]--,delete this._jobs[C]}start(C){var w;return w=0,this._jobs[C]=w,this.counts[w]++}remove(C){var w;return w=this._jobs[C],w!=null&&(this.counts[w]--,delete this._jobs[C]),w!=null}jobStatus(C){var w;return(w=this.status[this._jobs[C]])!=null?w:null}statusJobs(C){var w,F,M,B,U;if(C!=null){if(F=this.status.indexOf(C),F<0)throw new I(`status must be one of ${this.status.join(", ")}`);M=this._jobs,B=[];for(w in M)U=M[w],U===F&&B.push(w);return B}else return Object.keys(this._jobs)}statusCounts(){return this.counts.reduce((C,w,F)=>(C[this.status[F]]=w,C),{})}};var V=N,ge,fe;ge=i,fe=class{constructor(C,w){this.schedule=this.schedule.bind(this),this.name=C,this.Promise=w,this._running=0,this._queue=new ge}isEmpty(){return this._queue.length===0}async _tryToRun(){var C,w,F,M,B,U,X;if(this._running<1&&this._queue.length>0)return this._running++,{task:X,args:C,resolve:B,reject:M}=this._queue.shift(),w=await async function(){try{return U=await X(...C),function(){return B(U)}}catch(be){return F=be,function(){return M(F)}}}(),this._running--,this._tryToRun(),w()}schedule(C,...w){var F,M,B;return B=M=null,F=new this.Promise(function(U,X){return B=U,M=X}),this._queue.push({task:C,args:w,resolve:B,reject:M}),this._tryToRun(),F}};var de=fe,te="2.19.5",me={version:te},Oe=Object.freeze({version:te,default:me}),ve=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),ke=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),J=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),ie,Re,Ae,Ee,we,Se;Se=o,ie=l,Ee=ve,Ae=ke,we=J,Re=function(){class Q{constructor(w={}){this.deleteKey=this.deleteKey.bind(this),this.limiterOptions=w,Se.load(this.limiterOptions,this.defaults,this),this.Events=new ie(this),this.instances={},this.Bottleneck=Ce,this._startAutoCleanup(),this.sharedConnection=this.connection!=null,this.connection==null&&(this.limiterOptions.datastore==="redis"?this.connection=new Ee(Object.assign({},this.limiterOptions,{Events:this.Events})):this.limiterOptions.datastore==="ioredis"&&(this.connection=new Ae(Object.assign({},this.limiterOptions,{Events:this.Events}))))}key(w=""){var F;return(F=this.instances[w])!=null?F:(()=>{var M;return M=this.instances[w]=new this.Bottleneck(Object.assign(this.limiterOptions,{id:`${this.id}-${w}`,timeout:this.timeout,connection:this.connection})),this.Events.trigger("created",M,w),M})()}async deleteKey(w=""){var F,M;return M=this.instances[w],this.connection&&(F=await this.connection.__runCommand__(["del",...we.allKeys(`${this.id}-${w}`)])),M!=null&&(delete this.instances[w],await M.disconnect()),M!=null||F>0}limiters(){var w,F,M,B;F=this.instances,M=[];for(w in F)B=F[w],M.push({key:w,limiter:B});return M}keys(){return Object.keys(this.instances)}async clusterKeys(){var w,F,M,B,U,X,be,je,Be;if(this.connection==null)return this.Promise.resolve(this.keys());for(X=[],w=null,Be=`b_${this.id}-`.length,F=9;w!==0;)for([je,M]=await this.connection.__runCommand__(["scan",w??0,"match",`b_${this.id}-*_settings`,"count",1e4]),w=~~je,B=0,be=M.length;B<be;B++)U=M[B],X.push(U.slice(Be,-F));return X}_startAutoCleanup(){var w;return clearInterval(this.interval),typeof(w=this.interval=setInterval(async()=>{var F,M,B,U,X,be;X=Date.now(),B=this.instances,U=[];for(M in B){be=B[M];try{await be._store.__groupCheck__(X)?U.push(this.deleteKey(M)):U.push(void 0)}catch(je){F=je,U.push(be.Events.trigger("error",F))}}return U},this.timeout/2)).unref=="function"?w.unref():void 0}updateSettings(w={}){if(Se.overwrite(w,this.defaults,this),Se.overwrite(w,w,this.limiterOptions),w.timeout!=null)return this._startAutoCleanup()}disconnect(w=!0){var F;if(!this.sharedConnection)return(F=this.connection)!=null?F.disconnect(w):void 0}}return Q.prototype.defaults={timeout:1e3*60*5,connection:null,Promise,id:"group-key"},Q}.call(e);var ce=Re,oe,_e,Fe;Fe=o,_e=l,oe=function(){class Q{constructor(w={}){this.options=w,Fe.load(this.options,this.defaults,this),this.Events=new _e(this),this._arr=[],this._resetPromise(),this._lastFlush=Date.now()}_resetPromise(){return this._promise=new this.Promise((w,F)=>this._resolve=w)}_flush(){return clearTimeout(this._timeout),this._lastFlush=Date.now(),this._resolve(),this.Events.trigger("batch",this._arr),this._arr=[],this._resetPromise()}add(w){var F;return this._arr.push(w),F=this._promise,this._arr.length===this.maxSize?this._flush():this.maxTime!=null&&this._arr.length===1&&(this._timeout=setTimeout(()=>this._flush(),this.maxTime)),F}}return Q.prototype.defaults={maxTime:null,maxSize:null,Promise},Q}.call(e);var it=oe,$t=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),Yr=t(Oe),Qr,lo,le,Gt,ct,Ze,wt,at,ut,Rt,_t,jr=[].splice;Ze=10,lo=5,_t=o,wt=p,Gt=D,ct=H,at=$t,le=l,ut=V,Rt=de,Qr=function(){class Q{constructor(w={},...F){var M,B;this._addToQueue=this._addToQueue.bind(this),this._validateOptions(w,F),_t.load(w,this.instanceDefaults,this),this._queues=new wt(Ze),this._scheduled={},this._states=new ut(["RECEIVED","QUEUED","RUNNING","EXECUTING"].concat(this.trackDoneStatus?["DONE"]:[])),this._limiter=null,this.Events=new le(this),this._submitLock=new Rt("submit",this.Promise),this._registerLock=new Rt("register",this.Promise),B=_t.load(w,this.storeDefaults,{}),this._store=function(){if(this.datastore==="redis"||this.datastore==="ioredis"||this.connection!=null)return M=_t.load(w,this.redisStoreDefaults,{}),new at(this,B,M);if(this.datastore==="local")return M=_t.load(w,this.localStoreDefaults,{}),new ct(this,B,M);throw new Q.prototype.BottleneckError(`Invalid datastore type: ${this.datastore}`)}.call(this),this._queues.on("leftzero",()=>{var U;return(U=this._store.heartbeat)!=null&&typeof U.ref=="function"?U.ref():void 0}),this._queues.on("zero",()=>{var U;return(U=this._store.heartbeat)!=null&&typeof U.unref=="function"?U.unref():void 0})}_validateOptions(w,F){if(!(w!=null&&typeof w=="object"&&F.length===0))throw new Q.prototype.BottleneckError("Bottleneck v2 takes a single object argument. Refer to https://github.com/SGrondin/bottleneck#upgrading-to-v2 if you're upgrading from Bottleneck v1.")}ready(){return this._store.ready}clients(){return this._store.clients}channel(){return`b_${this.id}`}channel_client(){return`b_${this.id}_${this._store.clientId}`}publish(w){return this._store.__publish__(w)}disconnect(w=!0){return this._store.__disconnect__(w)}chain(w){return this._limiter=w,this}queued(w){return this._queues.queued(w)}clusterQueued(){return this._store.__queued__()}empty(){return this.queued()===0&&this._submitLock.isEmpty()}running(){return this._store.__running__()}done(){return this._store.__done__()}jobStatus(w){return this._states.jobStatus(w)}jobs(w){return this._states.statusJobs(w)}counts(){return this._states.statusCounts()}_randomIndex(){return Math.random().toString(36).slice(2)}check(w=1){return this._store.__check__(w)}_clearGlobalState(w){return this._scheduled[w]!=null?(clearTimeout(this._scheduled[w].expiration),delete this._scheduled[w],!0):!1}async _free(w,F,M,B){var U,X;try{if({running:X}=await this._store.__free__(w,M.weight),this.Events.trigger("debug",`Freed ${M.id}`,B),X===0&&this.empty())return this.Events.trigger("idle")}catch(be){return U=be,this.Events.trigger("error",U)}}_run(w,F,M){var B,U,X;return F.doRun(),B=this._clearGlobalState.bind(this,w),X=this._run.bind(this,w,F),U=this._free.bind(this,w,F),this._scheduled[w]={timeout:setTimeout(()=>F.doExecute(this._limiter,B,X,U),M),expiration:F.options.expiration!=null?setTimeout(function(){return F.doExpire(B,X,U)},M+F.options.expiration):void 0,job:F}}_drainOne(w){return this._registerLock.schedule(()=>{var F,M,B,U,X;return this.queued()===0?this.Promise.resolve(null):(X=this._queues.getFirst(),{options:U,args:F}=B=X.first(),w!=null&&U.weight>w?this.Promise.resolve(null):(this.Events.trigger("debug",`Draining ${U.id}`,{args:F,options:U}),M=this._randomIndex(),this._store.__register__(M,U.weight,U.expiration).then(({success:be,wait:je,reservoir:Be})=>{var Qt;return this.Events.trigger("debug",`Drained ${U.id}`,{success:be,args:F,options:U}),be?(X.shift(),Qt=this.empty(),Qt&&this.Events.trigger("empty"),Be===0&&this.Events.trigger("depleted",Qt),this._run(M,B,je),this.Promise.resolve(U.weight)):this.Promise.resolve(null)})))})}_drainAll(w,F=0){return this._drainOne(w).then(M=>{var B;return M!=null?(B=w!=null?w-M:w,this._drainAll(B,F+M)):this.Promise.resolve(F)}).catch(M=>this.Events.trigger("error",M))}_dropAllQueued(w){return this._queues.shiftAll(function(F){return F.doDrop({message:w})})}stop(w={}){var F,M;return w=_t.load(w,this.stopDefaults),M=B=>{var U;return U=()=>{var X;return X=this._states.counts,X[0]+X[1]+X[2]+X[3]===B},new this.Promise((X,be)=>U()?X():this.on("done",()=>{if(U())return this.removeAllListeners("done"),X()}))},F=w.dropWaitingJobs?(this._run=function(B,U){return U.doDrop({message:w.dropErrorMessage})},this._drainOne=()=>this.Promise.resolve(null),this._registerLock.schedule(()=>this._submitLock.schedule(()=>{var B,U,X;U=this._scheduled;for(B in U)X=U[B],this.jobStatus(X.job.options.id)==="RUNNING"&&(clearTimeout(X.timeout),clearTimeout(X.expiration),X.job.doDrop({message:w.dropErrorMessage}));return this._dropAllQueued(w.dropErrorMessage),M(0)}))):this.schedule({priority:Ze-1,weight:0},()=>M(1)),this._receive=function(B){return B._reject(new Q.prototype.BottleneckError(w.enqueueErrorMessage))},this.stop=()=>this.Promise.reject(new Q.prototype.BottleneckError("stop() has already been called")),F}async _addToQueue(w){var F,M,B,U,X,be,je;({args:F,options:U}=w);try{({reachedHWM:X,blocked:M,strategy:je}=await this._store.__submit__(this.queued(),U.weight))}catch(Be){return B=Be,this.Events.trigger("debug",`Could not queue ${U.id}`,{args:F,options:U,error:B}),w.doDrop({error:B}),!1}return M?(w.doDrop(),!0):X&&(be=je===Q.prototype.strategy.LEAK?this._queues.shiftLastFrom(U.priority):je===Q.prototype.strategy.OVERFLOW_PRIORITY?this._queues.shiftLastFrom(U.priority+1):je===Q.prototype.strategy.OVERFLOW?w:void 0,be?.doDrop(),be==null||je===Q.prototype.strategy.OVERFLOW)?(be==null&&w.doDrop(),X):(w.doQueue(X,M),this._queues.push(w),await this._drainAll(),X)}_receive(w){return this._states.jobStatus(w.options.id)!=null?(w._reject(new Q.prototype.BottleneckError(`A job with the same id already exists (id=${w.options.id})`)),!1):(w.doReceive(),this._submitLock.schedule(this._addToQueue,w))}submit(...w){var F,M,B,U,X,be,je;return typeof w[0]=="function"?(X=w,[M,...w]=X,[F]=jr.call(w,-1),U=_t.load({},this.jobDefaults)):(be=w,[U,M,...w]=be,[F]=jr.call(w,-1),U=_t.load(U,this.jobDefaults)),je=(...Be)=>new this.Promise(function(Qt,hr){return M(...Be,function(...Ve){return(Ve[0]!=null?hr:Qt)(Ve)})}),B=new Gt(je,w,U,this.jobDefaults,this.rejectOnDrop,this.Events,this._states,this.Promise),B.promise.then(function(Be){return typeof F=="function"?F(...Be):void 0}).catch(function(Be){return Array.isArray(Be)?typeof F=="function"?F(...Be):void 0:typeof F=="function"?F(Be):void 0}),this._receive(B)}schedule(...w){var F,M,B;return typeof w[0]=="function"?([B,...w]=w,M={}):[M,B,...w]=w,F=new Gt(B,w,M,this.jobDefaults,this.rejectOnDrop,this.Events,this._states,this.Promise),this._receive(F),F.promise}wrap(w){var F,M;return F=this.schedule.bind(this),M=function(...B){return F(w.bind(this),...B)},M.withOptions=function(B,...U){return F(B,w,...U)},M}async updateSettings(w={}){return await this._store.__updateSettings__(_t.overwrite(w,this.storeDefaults)),_t.overwrite(w,this.instanceDefaults,this),this}currentReservoir(){return this._store.__currentReservoir__()}incrementReservoir(w=0){return this._store.__incrementReservoir__(w)}}return Q.default=Q,Q.Events=le,Q.version=Q.prototype.version=Yr.version,Q.strategy=Q.prototype.strategy={LEAK:1,OVERFLOW:2,OVERFLOW_PRIORITY:4,BLOCK:3},Q.BottleneckError=Q.prototype.BottleneckError=f,Q.Group=Q.prototype.Group=ce,Q.RedisConnection=Q.prototype.RedisConnection=ve,Q.IORedisConnection=Q.prototype.IORedisConnection=ke,Q.Batcher=Q.prototype.Batcher=it,Q.prototype.jobDefaults={priority:lo,weight:1,expiration:null,id:"<no-id>"},Q.prototype.storeDefaults={maxConcurrent:null,minTime:0,highWater:null,strategy:Q.prototype.strategy.LEAK,penalty:null,reservoir:null,reservoirRefreshInterval:null,reservoirRefreshAmount:null,reservoirIncreaseInterval:null,reservoirIncreaseAmount:null,reservoirIncreaseMaximum:null},Q.prototype.localStoreDefaults={Promise,timeout:null,heartbeatInterval:250},Q.prototype.redisStoreDefaults={Promise,timeout:null,heartbeatInterval:5e3,clientTimeout:1e4,Redis:null,clientOptions:{},clusterNodes:null,clearDatastore:!1,connection:null},Q.prototype.instanceDefaults={datastore:"local",connection:null,id:"<no-id>",rejectOnDrop:!0,trackDoneStatus:!1,Promise},Q.prototype.stopDefaults={enqueueErrorMessage:"This limiter has been stopped and cannot accept new jobs.",dropWaitingJobs:!0,dropErrorMessage:"This limiter has been stopped."},Q}.call(e);var Ce=Qr,Le=Ce;return Le})});var Wm=wf(pa=>{"use strict";Object.defineProperty(pa,"__esModule",{value:!0});pa.format=MP;pa.parse=LP;var DP=/^[\u0009\u0020-\u007e\u0080-\u00ff]*$/,jm=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,FP=/[\\"]/g,IP=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,Bm=(()=>{let e=function(){};return e.prototype=Object.create(null),e})();function MP(e){let{type:t,parameters:r}=e;if(!t||!IP.test(t))throw new TypeError(`Invalid type: ${t}`);let n=t;if(r)for(let o of Object.keys(r)){if(!jm.test(o))throw new TypeError(`Invalid parameter name: ${o}`);n+=`; ${o}=${GP(r[o])}`}return n}function LP(e,t){let r=e.length,n=cc(e,0,r),o=n;n=dc(e,n,r);let s=uc(e,o,n),i=e.slice(o,s).toLowerCase(),a=t?.parameters===!1?new Bm:$P(e,n,r);return{type:i,parameters:a}}var $m=32,Gm=9,Nm=59,jP=61,Lm=34,BP=92;function $P(e,t,r){let n=new Bm;e:for(;t<r;){t=cc(e,t+1,r);let o=t;for(;t<r;){let s=e.charCodeAt(t);if(s===Nm)continue e;if(s===jP){let i=uc(e,o,t),a=e.slice(o,i).toLowerCase();if(t=cc(e,t+1,r),t<r&&e.charCodeAt(t)===Lm){t++;let d="";for(;t<r;){let c=e.charCodeAt(t++);if(c===Lm){t=dc(e,t,r),n[a]===void 0&&(n[a]=d);break}if(c===BP&&t<r){d+=e[t++];continue}d+=String.fromCharCode(c)}continue e}let l=t;if(t=dc(e,t,r),n[a]===void 0){let d=uc(e,l,t);n[a]=e.slice(l,d)}continue e}t++}}return n}function dc(e,t,r){for(;t<r&&e.charCodeAt(t)!==Nm;)t++;return t}function cc(e,t,r){for(;t<r;){let n=e.charCodeAt(t);if(n!==$m&&n!==Gm)break;t++}return t}function uc(e,t,r){for(;r>t;){let n=e.charCodeAt(r-1);if(n!==$m&&n!==Gm)break;r--}return r}function GP(e){if(jm.test(e))return e;if(DP.test(e))return`"${e.replace(FP,"\\$&")}"`;throw new TypeError(`Invalid parameter value: ${e}`)}});import{execFileSync as Dj}from"node:child_process";import{homedir as _i}from"node:os";import{join as Cl}from"node:path";var go=class extends Error{constructor(t,r){super(t===0?r:`line ${t}: ${r}`),this.name="ToonError",this.line=t,this.reason=r}},An=class extends Error{constructor(t,r){super(t===0?r:`line ${t}: ${r}`),this.name="ToonlError",this.line=t,this.reason=r}};function q(e,t){return new go(e,t)}function Te(e,t){return new An(e,t)}function ho(e){return e instanceof An?e:e instanceof go?new An(e.line,e.reason):new An(0,String(e&&e.message?e.message:e))}var Rf=["type","kind","event"],Cn="|",_f=new Set(["order","discriminator","rows","common"]);var ze=",";function Li(e){let t=e.split(`
7
+ `);return t.length>0&&t[t.length-1]===""&&t.pop(),t.map(r=>r.endsWith("\r")?r.slice(0,-1):r)}function br(e){return q(e,"invalid quoted string")}function Ut(e,t){if(e==="")return"";if(e.startsWith('"'))return vf(e,t);if(e.includes('"'))throw br(t);return e==="true"?!0:e==="false"?!1:e==="null"?null:wx(e)?Number(e):e}function Zt(e,t){let r=e.trim();if(r.startsWith('"'))return[vf(r,t),!0];if(r.includes('"')||/\s/.test(r))throw q(t,"expected non-empty field name");return[r,!1]}var xf=/["\\\u0000-\u0008\u000a-\u001f]/g;function vf(e,t){if(e.charCodeAt(0)!==34)throw br(t);let r="",n=1;for(;n<e.length;){xf.lastIndex=n;let o=xf.exec(e);if(o===null)break;if(o[0]==='"'){if(e.slice(o.index+1).trim()==="")return r+e.slice(n,o.index);throw br(t)}if(o[0]!=="\\")throw br(t);r+=e.slice(n,o.index);let s=e[o.index+1];switch(n=o.index+2,s){case'"':r+='"';break;case"\\":r+="\\";break;case"n":r+=`
8
+ `;break;case"r":r+="\r";break;case"t":r+=" ";break;case"u":{let i=e.slice(n,n+4);if(!/^[0-9a-fA-F]{4}$/.test(i))throw br(t);let a=Number.parseInt(i,16);if(a>=55296&&a<=57343)throw br(t);r+=String.fromCharCode(a),n+=4;break}default:throw br(t)}}throw br(t)}function Sf(e,t,r){for(;;){let n=e.indexOf('"',t),o=e.indexOf("\\",t);if(o!==-1&&(n===-1||o<n)){if(o===e.length-1)throw br(r);t=o+2;continue}if(n===-1)throw br(r);return n+1}}function er(e,t,r){if(e==="")return[];let n=[],o=0,s=0;for(;s<e.length;){let i=e.indexOf('"',s),a=e.indexOf(t,s);if(a!==-1&&(i===-1||a<i))n.push(e.slice(o,a).trim()),o=a+1,s=a+1;else if(i!==-1)s=Sf(e,i+1,r);else break}return n.push(e.slice(o).trim()),n}function Et(e,t,r){let n=0;for(;n<e.length;){let o=e.indexOf('"',n),s=e.indexOf(t,n);if(s!==-1&&(o===-1||s<o))return s;if(o===-1)return-1;n=Sf(e,o+1,r)}return-1}function wx(e){return/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function Rx(e){return/^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function _x(e){if(Object.is(e,-0))return"0";if(!Number.isFinite(e))throw q(0,"number is not representable in TOON");return String(e)}function yr(e){return e===null||typeof e=="boolean"||typeof e=="number"||typeof e=="string"}function vt(e,t){if(e===null)return"null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="number")return _x(e);if(typeof e=="string")return Ex(e,t);throw q(0,"not a primitive")}function xx(e){return/^[A-Za-z_][A-Za-z0-9_.]*$/.test(e)}function ft(e){return xx(e)?e:ji(e)}function Ex(e,t){return $l(e,t)?ji(e):e}function $l(e,t){return e===""||e.trim()!==e||e==="true"||e==="false"||e==="null"||Rx(e)||/[:"\\[\]{}]/.test(e)||/[\u0000-\u001f]/.test(e)||e.includes(t)||e.startsWith("-")}var Ef=/["\\\u0000-\u001f]/g;function ji(e){let t='"',r=0;Ef.lastIndex=0;let n;for(;(n=Ef.exec(e))!==null;){let o=e.charCodeAt(n.index),s;o===34?s='\\"':o===92?s="\\\\":o===10?s="\\n":o===13?s="\\r":o===9?s="\\t":s=`\\u${o.toString(16).padStart(4,"0")}`,t+=e.slice(r,n.index)+s,r=n.index+1}return`${t}${e.slice(r)}"`}function tr(e,t,r){Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0})}function rt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Tf(e={}){let t=e.maxDepth??1e3,r=t===Number.POSITIVE_INFINITY?0:Math.max(0,Math.floor(t));return{indent:Math.max(1,e.indent??2),strict:e.strict??!0,expandPaths:e.expandPaths==="safe"||e.expandPaths===!0,cyclicDiscriminatedArrays:e.cyclicDiscriminatedArrays!==!1,maxDepth:r}}function Pf(e,t){let r=[],n=!1;return Li(e).forEach((o,s)=>{let i=s+1;if(o.trim()===""){n=!0;return}let a=o.length-o.replace(/^ +/,"").length;if(o[a]===" ")throw q(i,"invalid indentation");if(t.strict&&a%t.indent!==0)throw q(i,"invalid indentation");let l=Math.floor(a/t.indent);kr(l,i,t),r.push({number:i,depth:l,content:o.slice(a),blankBefore:n}),n=!1}),r}function kr(e,t,r){if(r.maxDepth!==0&&e>r.maxDepth)throw q(t,`maximum nesting depth exceeded (maxDepth ${r.maxDepth})`)}function ds(e,t,r){if(r.maxDepth===0)return;let n=0,o=!1,s=!1;for(let i of e){if(s){s=!1;continue}if(o&&i==="\\"){s=!0;continue}if(i==='"'){o=!o;continue}o||(i==="{"?(n+=1,kr(n,t,r)):i==="}"&&(n=Math.max(0,n-1)))}}function Of(e){if(!rt(e)||Object.keys(e).length===0)return e;let t={};for(let[r,n]of Object.entries(e)){let o=vx(n,1);if(o===void 0)return e;tr(t,r,o)}return t}function vx(e,t){if(!rt(e)||!Sx(e))return;let{order:r,discriminator:n,rows:o}=e;if(typeof r!="string"||typeof n!="string"||!Number.isSafeInteger(o)||o<0)throw mt(t);let s=Tx(r,o,t),i=e.common,a=i===void 0?Array.from({length:o},()=>({})):i;if(!Array.isArray(a)||a.length!==o||!a.every(rt))throw Df(t);let l=new Map;for(let[u,p]of Object.entries(e))if(!_f.has(u)){if(!Array.isArray(p)||!p.every(rt))throw mt(t);l.set(u,p)}if(l.size===0)throw mt(t);let d=new Map,c=s.map((u,p)=>{let g=l.get(u);if(g===void 0)throw Gl(t);let f=d.get(u)??0,k=g[f];if(k===void 0)throw Gl(t);return d.set(u,f+1),Px(n,u,a[p],k,t)});for(let[u,p]of l)if((d.get(u)??0)!==p.length)throw Gl(t);return c}function Sx(e){return Object.prototype.hasOwnProperty.call(e,"order")||Object.prototype.hasOwnProperty.call(e,"discriminator")||Object.prototype.hasOwnProperty.call(e,"rows")}function Tx(e,t,r){if(!e.startsWith("cycle("))throw mt(r);let n=e.slice(6),o=n.indexOf(")*");if(o===-1)throw mt(r);let s=n.slice(0,o),i=n.slice(o+2);if(s===""||i.includes("+tail("))throw mt(r);let a=s.split(",").map(c=>Dx(c,r));if(a.some(c=>c===""))throw mt(r);let l=Ox(i,r),d=a.length*l;if(!Number.isSafeInteger(d))throw mt(r);if(d!==t)throw Df(r);return Array.from({length:d},(c,u)=>a[u%a.length])}function Px(e,t,r,n,o){let s={};tr(s,e,t);for(let[i,a]of Object.entries(r??{})){if(i===e||Object.prototype.hasOwnProperty.call(s,i))throw mt(o);tr(s,i,a)}for(let[i,a]of Object.entries(Ax(n,o))){if(i===e||Object.prototype.hasOwnProperty.call(s,i))throw mt(o);tr(s,i,a)}return s}function Ax(e,t){let r={};for(let[n,o]of Object.entries(e))Cx(r,n.split("."),o,t);return Bi(r,t)}function Cx(e,t,r,n){if(t.some(s=>s===""))throw mt(n);let o=e;for(let s=0;s<t.length;s+=1){let i=t[s];if(s===t.length-1){o[i]=r;return}if(o[i]??={},o=o[i],!rt(o))throw mt(n)}}function Bi(e,t){return Array.isArray(e)?e.map(r=>Bi(r,t)):rt(e)?Number.isSafeInteger(e.length)&&e.length>=0?Array.from({length:e.length},(r,n)=>{if(!Object.prototype.hasOwnProperty.call(e,String(n)))throw mt(t);return Bi(e[String(n)],t)}):Object.fromEntries(Object.entries(e).map(([r,n])=>[r,Bi(n,t)])):e}function Ox(e,t){if(e===""||e.length>1&&e.startsWith("0")||!/^[0-9]+$/.test(e))throw mt(t);let r=Number(e);if(!Number.isSafeInteger(r))throw mt(t);return r}function Dx(e,t){try{return decodeURIComponent(e)}catch{throw mt(t)}}function Af(e){return encodeURIComponent(e)}function mt(e){return q(e,"invalid cyclic array wire")}function Df(e){return q(e,"cyclic array length mismatch")}function Gl(e){return q(e,"cyclic array group length mismatch")}function Ff(e){if(!rt(e))return;let t=Object.entries(e);if(t.length===0)return;let r=[];for(let[o,s]of t){let i=Fx(s);if(i===void 0)return;r.push([o,i])}let n=[];for(let[o,s]of r)jx(n,o,s);return n.join("")}function Fx(e){if(!Array.isArray(e)||e.length===0||!e.every(rt))return;let t=Ix(e);if(t===void 0)return;let r=e.map(a=>a[t]),n=Mx(r);if(n===void 0)return;let o=Lx(e,t),s=new Map;for(let a of e){let l=a[t];s.has(l)||s.set(l,[]);let d={};for(let[c,u]of Object.entries(a))if(c!==t&&!o.includes(c)&&!Nl(u,c,d))return;s.get(l).push(d)}let i=[];for(let a of n.cycle){let l=s.get(a),d=$x(l);if(d===void 0||d.length===0)return;i.push({fields:d,label:a,rows:l})}return{common:o,commonRows:e.map(a=>Object.fromEntries(o.map(l=>[l,a[l]]))),discriminator:t,groups:i,order:n,rows:e}}function Ix(e){return Rf.find(t=>e.every(r=>typeof r[t]=="string"))}function Mx(e){if(!(e.length<12))for(let t=2;t<=Math.min(8,Math.floor(e.length/3));t+=1){if(e.length%t!==0)continue;let r=e.slice(0,t);if(new Set(r).size<2||!e.every((i,a)=>i===r[a%t]))continue;let n=e.length/t;if(n<3)continue;let o=e.map(Af).join(","),s=`cycle(${r.map(Af).join(",")})*${n}`;if(s.length<=o.length*.4)return{cycle:r,encoded:s,repeats:n}}}function Lx(e,t){let r=[],n=Object.keys(e[0]),o=n.indexOf(t)+1;for(let s of n.slice(o).filter(i=>i!==t)){if(!Bx(s)||!e.every(i=>Object.prototype.hasOwnProperty.call(i,s))||!e.every(i=>yr(i[s])))break;r.push(s)}return r}function jx(e,t,r){e.push(ft(t),`:
9
+ `),e.push(" order: ",vt(r.order.encoded,Cn),`
10
+ `),e.push(" discriminator: ",vt(r.discriminator,Cn),`
11
+ `),e.push(" rows: ",String(r.rows.length),`
12
+ `),r.common.length>0&&Cf(e,"common",r.common,r.commonRows);for(let n of r.groups)Cf(e,n.label,n.fields,n.rows)}function Cf(e,t,r,n){e.push(" ",ft(t),"[",String(n.length),Cn,"]{",r.map(ft).join(Cn),`}:
13
+ `);for(let o of n)e.push(" ",r.map(s=>vt(o[s],Cn)).join(Cn),`
14
+ `)}function Bx(e){return e!==""&&Wl(e)}function Nl(e,t,r,n=new Set){if(!Wl(t))return!1;if(yr(e))return r[t]=e,!0;if(Array.isArray(e)){if(n.has(e))return!1;n.add(e),r[`${t}.length`]=e.length;let o=e.every((s,i)=>Nl(s,`${t}.${i}`,r,n));return n.delete(e),o}if(rt(e)){if(n.has(e))return!1;n.add(e);let o=Object.entries(e).every(([s,i])=>!s.includes(".")&&Nl(i,`${t}.${s}`,r,n));return n.delete(e),o}return!1}function $x(e){let t=Object.keys(e[0]??{});if(e.every(r=>Gx(Object.keys(r),t)))return t.every(Wl)?t:void 0}function Gx(e,t){return e.length===t.length&&e.every((r,n)=>r===t[n])}function Wl(e){return e.split(".").every(t=>/^[A-Za-z_][A-Za-z0-9_]*$|^(?:0|[1-9][0-9]*)$/.test(t))}function mo(e,t){let r=e[t]??e[e.length-1];return q(r===void 0?1:r.number,"array length mismatch")}function $i(e,t){if(t===-1)throw q(0,"array header missing colon");let r=e.slice(0,t),n=Et(r,"[",0);if(n===-1)throw q(0,"invalid array header");let o,s;try{[o,s]=Zt(r.slice(0,n),0)}catch{throw q(0,"invalid array header")}let i=r.slice(n+1),a=i.indexOf("]");if(a===-1)throw q(0,"invalid array header");let l=i.slice(0,a),d=/^[0-9]*/.exec(l)[0];if(d===""||d.length>1&&d.startsWith("0"))throw q(0,"invalid array header");let c=Number.parseInt(d,10),u;switch(l.slice(d.length)){case"":u=",";break;case" ":u=" ";break;case"|":u="|";break;default:throw q(0,"invalid array header")}let p=i.slice(a+1),g,f;if(p==="")g=void 0,f=void 0;else if(p.startsWith("{")&&p.endsWith("}")&&p.length>=2)try{f=Wx(p.slice(1,-1),u),g=Ul(f)}catch(k){throw q(0,k.reason==="duplicate key"?"duplicate key":"invalid array header")}else throw q(0,"invalid array header");return{key:o,keyQuoted:s,len:c,delimiter:u,fields:g,fieldTree:f}}function If(e){let t=Et(e,"{",0);if(t===-1||!e.endsWith("}"))throw q(0,"invalid keyed map header");let r,n;try{[r,n]=Zt(e.slice(0,t),0)}catch{throw q(0,"invalid keyed map header")}if(r===""&&!n)throw q(0,"expected non-empty field name");let o=e.slice(t+1,-1),s=ze;(o.startsWith("|")||o.startsWith(" "))&&(s=o[0],o=o.slice(1));let i;try{i=Nx(o,s,s)}catch(a){throw q(0,a.reason==="duplicate key"?"duplicate key":"invalid keyed map header")}return{key:r,keyQuoted:n,delimiter:s,fields:i}}function Nx(e,t,r){let n=[],o=0;function s(l,d){let c=0;for(;o<e.length&&!(d&&e[o]==="}");){if(e[o]===t||e[o]==="}")throw q(0,"invalid array header");let u=o;for(;o<e.length;){let f=e[o];if(f==='"'){i();continue}if(f===t||f==="{"||f==="}"||f==="[")break;o+=1}let[p,g]=Zt(e.slice(u,o),0);if(p===""&&!g)throw q(0,"invalid array header");if(c+=1,e[o]==="["){o+=1;let f=o;for(;o<e.length&&e[o]!=="]";)o+=1;if(o>=e.length)throw q(0,"invalid array header");let k=e.slice(f,o);if(!Mf(k,r))throw q(0,"invalid array header");o+=1,n.push({path:[...l,p],listDelimiter:k})}else if(e[o]==="{"){o+=1;let f=n.length;if(s([...l,p],!0),e[o]!=="}"||n.length===f)throw q(0,"invalid array header");o+=1}else n.push({path:[...l,p],listDelimiter:void 0});if(e[o]===t){if(o+=1,o>=e.length||e[o]==="}")throw q(0,"invalid array header");continue}if(d?e[o]==="}":o===e.length)break;throw q(0,"invalid array header")}if(c===0)throw q(0,"invalid array header")}function i(){for(o+=1;o<e.length;){let l=e[o];if(o+=1,l==="\\")o+=1;else if(l==='"')return}}if(s([],!1),o!==e.length)throw q(0,"invalid array header");let a=new Set;for(let l=0;l<n.length;l+=1)for(let d=l+1;d<n.length;d+=1)if(Lf(n[l].path,n[d].path)||cs(n[l].path,n[d].path)||cs(n[d].path,n[l].path))throw q(0,"duplicate key");for(let l of n){let c=l.path.join("\0");if(a.has(c))throw q(0,"duplicate key");a.add(c)}return n}function Wx(e,t){if(t!==ze&&e.includes(ze)&&(e.includes("[")||e.includes("{")))return Hl(e,ze,t);try{return Hl(e,t,t)}catch(r){if(t!==ze&&r.reason!=="duplicate key")return Hl(e,ze,t);throw r}}function Hl(e,t,r){let n=0;function o(l){let d=[];for(;n<e.length&&!(l&&e[n]==="}");){if(e[n]===t||e[n]==="}")throw q(0,"invalid array header");let c=n;for(;n<e.length;){let f=e[n];if(f==='"'){s();continue}if(f===t||f==="{"||f==="}"||f==="[")break;n+=1}let[u,p]=Zt(e.slice(c,n),0);if(u===""&&!p)throw q(0,"invalid array header");let g={key:u};if(e[n]==="["){n+=1;let f=n;for(;n<e.length&&e[n]!=="]";)n+=1;if(n>=e.length)throw q(0,"invalid array header");let k=e.slice(f,n);n+=1;let b=Hx(k);if(b!==void 0){if(b.delimiter!==r)throw q(0,"invalid array header");g.fixedLength=b.len,g.fixedDelimiter=b.delimiter}else if(Mf(k,r))g.listDelimiter=k;else throw q(0,"invalid array header")}else if(e[n]==="{"){if(n+=1,g.children=o(!0),e[n]!=="}"||g.children.length===0)throw q(0,"invalid array header");n+=1}if(d.push(g),e[n]===t){if(n+=1,n>=e.length||e[n]==="}")throw q(0,"invalid array header");continue}if(l?e[n]==="}":n===e.length)break;throw q(0,"invalid array header")}if(d.length===0)throw q(0,"invalid array header");return d}function s(){for(n+=1;n<e.length;){let l=e[n];if(n+=1,l==="\\")n+=1;else if(l==='"')return}}let i=o(!1);if(n!==e.length)throw q(0,"invalid array header");let a=Ul(i);for(let l=0;l<a.length;l+=1)for(let d=l+1;d<a.length;d+=1)if(Lf(a[l].path,a[d].path)||cs(a[l].path,a[d].path)||cs(a[d].path,a[l].path))throw q(0,"duplicate key");return i}function Hx(e){let t=/^[0-9]+/.exec(e)?.[0];if(t===void 0||t.length>1&&t.startsWith("0"))return;let r=e.slice(t.length),n;switch(r){case"":n=ze;break;case" ":n=" ";break;case"|":n="|";break;default:return}return{len:Number.parseInt(t,10),delimiter:n}}function Ul(e,t=[]){return e.flatMap(r=>{let n=[...t,r.key];return r.children!==void 0?Ul(r.children,n):[{path:n,listDelimiter:r.listDelimiter}]})}function Gi(e,t,r){return e.listDelimiter===void 0?Ut(t,r):er(t,e.listDelimiter,r).map(n=>Ut(n,r))}function Mf(e,t){return e.length===1&&e!==t&&!/[ \t\r\n"[\]{}:]/.test(e)}function Lf(e,t){return e.length===t.length&&cs(e,t)}function cs(e,t){return t.every((r,n)=>e[n]===r)}function Ni(e,t){return q(t,e.reason??String(e.message))}function Ct(e,t){let r=Tf(t),n=Pf(e,r),o=n[0];if(o===void 0)return{};if(o.depth!==0)throw q(o.number,"invalid indentation");let s=n.length===1;if(s&&o.content.trim()==="[]")return[];if(o.content.startsWith("[")){ds(o.content,o.number,r);let d;try{d=$i(o.content,Et(o.content,":",o.number))}catch(c){if(r.strict)throw Ni(c,o.number);d=void 0}if(d!==void 0)return Kx(d,n,r)}if(s&&Et(o.content,":",o.number)===-1)return Ut(o.content.trim(),o.number);let i={index:0},a=Kl(n,i,0,r),l=n[i.index];if(l!==void 0)throw q(l.number,"expected end of document");return r.cyclicDiscriminatedArrays?Of(a):a}function Kl(e,t,r,n){let o={};for(;t.index<e.length;){let s=e[t.index];if(s.depth<r)break;if(s.depth>r)throw q(s.number,"invalid indentation");let{key:i,quoted:a,value:l}=Ux(e,t,r,n);Hf(o,i,a,l,n,s.number)}return o}function Ux(e,t,r,n){let o=e[t.index],s=o.content,i=Et(s,":",o.number);if(i===-1)throw q(o.number,"expected `key: value`");let a=s.slice(0,i),l=s.slice(i+1),d=Et(a,"[",o.number),c=Et(a,"{",o.number);if(c!==-1&&(d===-1||c<d)){ds(a,o.number,n);let f;try{f=If(a)}catch(b){if(n.strict)throw Ni(b,o.number);t.index+=1;let v=ql(e,t,r,l,o.number,n);return{key:a.trim(),quoted:!1,value:v}}if(l.trim()!=="")throw q(o.number,"expected keyed map rows");let k=qx(f,e,t,r+1,n);return{key:f.key,quoted:f.keyQuoted,value:k}}if(d!==-1){ds(a,o.number,n);let f;try{f=$i(a,i)}catch(b){if(n.strict)throw Ni(b,o.number);t.index+=1;let v=ql(e,t,r,l,o.number,n);return{key:a.trim(),quoted:!1,value:v}}if(f.key===""&&!f.keyQuoted)throw q(o.number,"expected non-empty field name");let k=Vl(f,l,e,t,r,n);return{key:f.key,quoted:f.keyQuoted,value:k}}let[u,p]=Zt(a,o.number);if(u===""&&!p)throw q(o.number,"expected non-empty field name");t.index+=1;let g=ql(e,t,r,l,o.number,n);return{key:u,quoted:p,value:g}}function ql(e,t,r,n,o,s){let i=n.trim();if(i==="[]")return[];if(i!=="")return Ut(i,o);let a=e[t.index];return a!==void 0&&a.depth>r?Kl(e,t,r+1,s):{}}function qx(e,t,r,n,o){let s={};for(r.index+=1;r.index<t.length;){let i=t[r.index];if(i.depth<n)break;if(i.depth>n)throw q(i.number,"invalid indentation");if(i.blankBefore&&o.strict)throw q(i.number,"blank line inside keyed map");let a=Et(i.content,":",i.number);if(a===-1)throw q(i.number,"expected `key: value`");let[l,d]=Zt(i.content.slice(0,a),i.number);if(l===""&&!d)throw q(i.number,"expected non-empty field name");let c=er(i.content.slice(a+1).trim(),e.delimiter,i.number);if(c.length!==e.fields.length)throw q(i.number,"keyed map row length mismatch");let u={};e.fields.forEach((p,g)=>{yo(u,p.path,Gi(p,c[g],i.number),o,i.number)}),Hf(s,l,d,u,o,i.number),r.index+=1}return s}function Kx(e,t,r){let n=t[0],o=Et(n.content,":",n.number);if(o===-1)throw q(n.number,"expected `key: value`");let s=n.content.slice(o+1),i={index:0},a=Vl(e,s,t,i,0,r),l=t[i.index];if(l!==void 0)throw q(l.number,"expected end of document");return a}function Vl(e,t,r,n,o,s){let i=r[n.index].number,a=t.trim();if(n.index+=1,e.fields!==void 0){if(a!=="")throw q(i,"expected tabular rows");return Vx(e,e.fields,r,n,o+1,s)}if(a!==""){let l=er(a,e.delimiter,i).map(d=>Ut(d,i));if(l.length!==e.len)throw q(i,"array length mismatch");return l}return eE(e,r,n,o+1,s)}function Vx(e,t,r,n,o,s){if(e.fieldTree!==void 0&&Xx(e.fieldTree))return zx(e,r,n,o,s);let i=[];for(;i.length<e.len;){let l=r[n.index];if(l===void 0)throw mo(r,n.index);if(l.depth<o)break;if(l.depth>o)throw q(l.number,"invalid indentation");if(l.blankBefore&&s.strict)throw q(l.number,"blank line inside array");if(!bo(l.content,e.delimiter,l.number))break;let d=er(l.content,e.delimiter,l.number);if(d.length!==t.length)throw q(l.number,"array row length mismatch");let c={};t.forEach((u,p)=>{yo(c,u.path,Gi(u,d[p],l.number),s,l.number)}),i.push(c),n.index+=1}if(i.length!==e.len)throw mo(r,n.index);let a=r[n.index];if(a!==void 0&&a.depth>=o&&bo(a.content,e.delimiter,a.number))throw q(a.number,"array length mismatch");return i}function zx(e,t,r,n,o){return jf(e.len,e.fieldTree,e.delimiter,t,r,n,o,!0)}function jf(e,t,r,n,o,s,i,a){let l=[],d=$f(e,t,r,n,o.index,s,i);for(;l.length<e;){let u=n[o.index];if(u===void 0)throw mo(n,o.index);if(u.depth<s)break;if(u.depth>s)throw q(u.number,"invalid indentation");if(u.blankBefore&&i.strict)throw q(u.number,"blank line inside array");if(!bo(u.content,r,u.number))break;let p=er(u.content,r,u.number),g={cellIndex:0,nextIndex:o.index+1,flatWidth:Wi(t),childTableFields:d},f=Bf(t,p,u.number,n,g,s+1,r,i);if(g.cellIndex!==p.length)throw q(u.number,"array row length mismatch");l.push(Qx(t,f,a)),o.index=g.nextIndex}if(l.length!==e)throw mo(n,o.index);let c=n[o.index];if(c!==void 0&&c.depth>=s&&bo(c.content,r,c.number))throw q(c.number,"array length mismatch");return l}function Bf(e,t,r,n,o,s,i,a){let l={};return e.forEach((d,c)=>{let u=e.slice(c+1),p=Jx(d,u,t,r,n,o,s,i,a);yo(l,[d.key],p,a,r)}),l}function Jx(e,t,r,n,o,s,i,a,l){if(e.fixedLength!==void 0){if(s.cellIndex+e.fixedLength>r.length)throw q(n,"array row length mismatch");let c=r.slice(s.cellIndex,s.cellIndex+e.fixedLength).map(u=>Ut(u,n));return s.cellIndex+=e.fixedLength,c}if(e.children!==void 0){let c=Wi(e.children),u=r[s.cellIndex],p=Nf(u),g=r.length-s.cellIndex-1,f=o[s.nextIndex],k=f!==void 0&&f.depth===i,b=s.childTableFields===void 0?void 0:s.childTableFields.has(e);if(b===void 0?p!==void 0&&(k||r.length!==s.flatWidth&&g<c+Zx(t)):b){if(p===void 0)throw q(n,"array row length mismatch");return s.cellIndex+=1,jf(p,e.children,a,o,{get index(){return s.nextIndex},set index(T){s.nextIndex=T}},i,l,!1)}return Bf(e.children,r,n,o,s,i,a,l)}let d=r[s.cellIndex];if(d===void 0)throw q(n,"array row length mismatch");return s.cellIndex+=1,Gi(e,d,n)}function $f(e,t,r,n,o,s,i){let a=t.filter(c=>c.children!==void 0);if(a.length===0)return new Set;if(a.length>12)return;let l,d=1<<a.length;for(let c=0;c<d;c+=1){let u=new Set;a.forEach((g,f)=>{c&1<<f&&u.add(g)});let p=Gf(e,t,u,r,n,o,s,i);p!==void 0&&(l===void 0||p.consumedChildRows>l.consumedChildRows||p.consumedChildRows===l.consumedChildRows&&u.size<l.childTableFields.size)&&(l={childTableFields:u,consumedChildRows:p.consumedChildRows})}return l?.childTableFields}function Gf(e,t,r,n,o,s,i,a){let l=s,d=0;try{for(let u=0;u<e;u+=1){let p=o[l];if(p===void 0||p.depth!==i||p.blankBefore&&a.strict||!bo(p.content,n,p.number))return;let g=er(p.content,n,p.number),f=Yx(t,r,g,n,o,l+1,i+1,a);if(f===void 0||o[f.nextIndex]?.depth>i)return;d+=f.consumedChildRows,l=f.nextIndex}let c=o[l];if(c!==void 0&&c.depth>=i&&bo(c.content,n,c.number))return}catch{return}return{nextIndex:l,consumedChildRows:d}}function Yx(e,t,r,n,o,s,i,a){let l=0,d=s,c=0;for(let u of e){if(u.fixedLength!==void 0)l+=u.fixedLength;else if(u.children!==void 0)if(t.has(u)){let p=Nf(r[l]);if(p===void 0)return;l+=1;let g=$f(p,u.children,n,o,d,i,a);if(g===void 0)return;let f=Gf(p,u.children,g,n,o,d,i,a);if(f===void 0)return;d=f.nextIndex,c+=p+f.consumedChildRows}else l+=Wi(u.children);else l+=1;if(l>r.length)return}if(l===r.length)return{nextIndex:d,consumedChildRows:c}}function Qx(e,t,r){return r&&e.length===1&&e[0].fixedLength!==void 0?t[e[0].key]:t}function Nf(e){if(!(e===void 0||!/^(0|[1-9][0-9]*)$/.test(e)))return Number.parseInt(e,10)}function Xx(e){return e.some(t=>t.fixedLength!==void 0||t.children!==void 0)}function Wi(e){return e.reduce((t,r)=>t+Wf(r),0)}function Wf(e){return e.fixedLength!==void 0?e.fixedLength:e.children!==void 0?Wi(e.children):1}function Zx(e){return e.reduce((t,r)=>r.children!==void 0?t+1:t+Wf(r),0)}function bo(e,t,r){let n=Et(e,":",r);if(n===-1)return!0;let o=Et(e,t,r);return o===-1?!1:o<n}function eE(e,t,r,n,o){let s=[];for(;s.length<e.len;){let a=t[r.index];if(a===void 0||a.depth<n)throw mo(t,r.index);if(a.depth>n)throw q(a.number,"invalid indentation");if(a.blankBefore&&o.strict)throw q(a.number,"blank line inside array");s.push(tE(t,r,n,o))}let i=t[r.index];if(i!==void 0&&i.depth>=n)throw q(i.number,"array length mismatch");return s}function tE(e,t,r,n){let o=e[t.index];if(!o.content.startsWith("-"))throw q(o.number,"expected array item");let s=o.content.slice(1).replace(/^\s+/,"");if(s==="")return t.index+=1,{};if(s.startsWith("[")){let i=Et(s,":",o.number);ds(s,o.number,n);let a;try{a=$i(s,i)}catch{a=void 0}if(a!==void 0){let l=s.slice(i+1);return Vl(a,l,e,t,r,n)}}if(Et(s,":",o.number)!==-1){let i=[{number:o.number,depth:r+1,content:s,blankBefore:!1}];for(t.index+=1;t.index<e.length;){let a=e[t.index];if(a.depth<=r)break;i.push(a),t.index+=1}return Kl(i,{index:0},r+1,n)}return t.index+=1,Ut(s,o.number)}function Hf(e,t,r,n,o,s){if(o.expandPaths&&!r&&t.includes(".")){let i=t.split(".");if(i.every(rE)){yo(e,i,n,o,s);return}}yo(e,[t],n,o,s)}function yo(e,t,r,n,o){kr(t.length-1,o,n);let s=t[0],i=Object.prototype.hasOwnProperty.call(e,s);if(t.length===1){if(i&&n.strict)throw q(o,"duplicate key");tr(e,s,r);return}if(i&&!rt(e[s])){if(n.strict)throw q(o,"path expansion conflict");tr(e,s,{})}else i||tr(e,s,{});yo(e[s],t.slice(1),r,n,o)}function rE(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}function nt(e,t={}){let r=t.maxDepth??1e3,n=t.delimiter??ze;if(![ze,"|"," "].includes(n))throw q(0,"invalid array header");let o={nestedTabularHeaders:t.nestedTabularHeaders===!0,keyedMapCollapse:t.keyedMapCollapse===!0,primitiveArrayColumns:t.primitiveArrayColumns===!0,objectArrayColumns:t.objectArrayColumns===!0,cyclicDiscriminatedArrays:t.cyclicDiscriminatedArrays===!0,delimiter:n,maxDepth:r===Number.POSITIVE_INFINITY?0:Math.max(0,Math.floor(r))};if(o.cyclicDiscriminatedArrays){let i=Ff(e);if(i!==void 0)return i}let s=[];return Array.isArray(e)?Ql(s,void 0,e,0,!1,o):rt(e)?Uf(s,e,0,o):s.push(vt(e,n)),s.join("")}function ko(e,t){e.push(" ".repeat(t*2))}function Uf(e,t,r,n){kr(r,0,n);for(let[o,s]of Object.entries(t))ko(e,r),Jl(e,o,s,r,n)}function Jl(e,t,r,n,o){if(kr(n,0,o),Array.isArray(r)){Ql(e,t,r,n,!1,o);return}if(rt(r)){let s=o.keyedMapCollapse?oE(r,o,n+1):void 0;if(s!==void 0){e.push(ft(t),"{",Xl(o.delimiter),s.fields.map(i=>td(i,o.delimiter)).join(o.delimiter),`}:
15
+ `);for(let[i,a]of Object.entries(r)){ko(e,n+1);let l=[];e.push(ft(i),": ",s.paths.map(d=>rd(ed(a,d.path),d,o.delimiter,o,l,n+2)).join(o.delimiter),`
16
+ `),e.push(...l)}return}e.push(ft(t),`:
17
+ `),Uf(e,r,n+1,o);return}e.push(ft(t),": ",vt(r,o.delimiter),`
18
+ `)}function Ql(e,t,r,n,o,s){if(kr(n,0,s),r.length===0){t!==void 0?e.push(ft(t),`: []
19
19
  `):o?e.push(`[0]:
20
20
  `):e.push(`[]
21
- `);return}if(t.every(Me)){Is(e,r,t.length,void 0,s.delimiter),e.push(" "),e.push(t.map(a=>ce(a,s.delimiter)).join(s.delimiter)),e.push(`
22
- `);return}let i=o?void 0:wd(t,s,n+1);if(i!==void 0){Is(e,r,t.length,i.fields,s.delimiter),e.push(`
23
- `);for(let a of t){st(e,n+1);let l=[];e.push(i.paths.map(d=>Bs(Ws(a,d.path),d,s.delimiter,s,l,n+2)).join(s.delimiter)),e.push(`
24
- `),e.push(...l)}return}Is(e,r,t.length,void 0,s.delimiter),e.push(`
25
- `);for(let a of t)st(e,n+1),iy(e,a,n+1,s)}function iy(e,r,t,n){if(Fe(t,0,n),Array.isArray(r)){e.push("- "),Ns(e,void 0,r,t,!0,n);return}if(Y(r)){let o=Object.entries(r);if(o.length===0){e.push(`-
26
- `);return}e.push("- "),$s(e,o[0][0],o[0][1],t+1,n);for(let[s,i]of o.slice(1))st(e,t+1),$s(e,s,i,t+1,n);return}e.push("- ",ce(r,n.delimiter),`
27
- `)}function Is(e,r,t,n,o){r!==void 0&&e.push(ne(r)),e.push("[",String(t),Ms(o),"]"),n!==void 0&&e.push("{",n.map(s=>Us(s,o)).join(o),"}"),e.push(":")}function Ms(e){return e===K?"":e}function wd(e,r,t){let n=ly(e,r);if(n!==void 0)return n;let o=Cs(e.map(s=>({value:s})),r,t);return o===void 0?void 0:{fields:o,paths:Fs(o)}}function ay(e,r,t){let n=Object.values(e);if(!(n.length<2))return wd(n,r,t)}function Cs(e,r,t){Fe(t,0,r);let n=e[0]?.value;if(!Y(n))return;let o=Object.keys(n).map(s=>({key:s}));if(o.length!==0){for(let{value:s}of e)if(!Y(s)||Object.keys(s).length!==o.length||o.some(a=>!Object.prototype.hasOwnProperty.call(s,a.key)))return;for(let s of o){let i=e.map(({value:l})=>({value:l[s.key]}));if(i.every(({value:l})=>Me(l)))continue;if(r.primitiveArrayColumns&&i.every(({value:l})=>Array.isArray(l)&&l.every(Me))){s.listDelimiter=";";continue}if(r.objectArrayColumns&&i.every(({value:l})=>Array.isArray(l))){let l=Ed(i.map(({value:c})=>c));if(l!==void 0){s.fixedLength=l.fixedLength,s.fixedDelimiter=r.delimiter;continue}let d=Cs(i.flatMap(({value:c})=>c.map(u=>({value:u}))),r,t+1);if(d!==void 0){s.children=d,s.childTable=!0;continue}}if(!r.nestedTabularHeaders)return;let a=Cs(i,r,t+1);if(a===void 0)return;s.children=a}return o}}function ly(e,r){if(!r.objectArrayColumns)return;let t=Ed(e);return t===void 0?void 0:{fields:[{key:"values",fixedLength:t.fixedLength,fixedDelimiter:r.delimiter}],paths:[{path:[],fixedLength:t.fixedLength}]}}function Ed(e){let r=e[0]?.length;if(!(!Number.isInteger(r)||r===0)&&e.every(t=>Array.isArray(t)&&t.length===r&&t.every(Me)))return{fixedLength:r}}function Fs(e,r=[]){return e.flatMap(t=>{let n=[...r,t.key];return t.childTable===!0?[{path:n,childFields:t.children}]:t.fixedLength!==void 0?[{path:n,fixedLength:t.fixedLength}]:t.children===void 0?[{path:n,listDelimiter:t.listDelimiter}]:Fs(t.children,n)})}function Ws(e,r){let t=e;for(let n of r)t=t[n];return t}function Us(e,r){return e.listDelimiter!==void 0?`${ne(e.key)}[${e.listDelimiter}]`:e.fixedLength!==void 0?`${ne(e.key)}[${e.fixedLength}${Ms(r)}]`:e.children===void 0?ne(e.key):`${ne(e.key)}{${e.children.map(t=>Us(t,r)).join(r)}}`}function Bs(e,r,t,n,o,s){return r.childFields!==void 0?(dy(o,e,r.childFields,n,s),String(e.length)):r.fixedLength!==void 0?e.map(i=>ce(i,t)).join(t):r.listDelimiter===void 0?ce(e,t):e.map(i=>cy(i,t,r.listDelimiter)).join(r.listDelimiter)}function dy(e,r,t,n,o){for(let s of r){st(e,o);let i=[];e.push(Fs(t).map(a=>Bs(Ws(s,a.path),a,n.delimiter,n,i,o+1)).join(n.delimiter)),e.push(`
28
- `),e.push(...i)}}function cy(e,r,t){return typeof e!="string"?ce(e,r):Ts(e,r)||e.includes(t)?ao(e):e}var Dd=[K,"|"," "];var jd=8,Ld=/^[A-Za-z0-9_-]+$/,HP=new TextEncoder,qP=new TextDecoder;function gy(e,r){if(!(e.startsWith("[=")&&e.endsWith("]")))return null;let t=e.slice(2,-1);if(!/^[0-9]+$/.test(t))throw M(r,"invalid trailer count");return Number.parseInt(t,10)}function Gd(e,r){if(!Ld.test(e))throw M(r,"invalid tag")}function fy(e,r){let t=e.indexOf(":");if(t<=0)return null;let n=e.slice(0,t);if(!Ld.test(n)){if(/^[A-Za-z0-9_-]/.test(n)&&/^[^,[\]|{}:\t ]+$/.test(n))throw M(r,"invalid tag");return null}return{tag:n,cellsText:e.slice(t+1)}}function hy(e,r){if(!e.startsWith("["))return null;let t=e.slice(1),n=t.indexOf("]");if(n===-1)throw M(r,"invalid header");let o=t.slice(0,n),s=o.startsWith("~"),i=s?o.slice(1):o;if(!s&&i.startsWith("="))return null;if(!Dd.includes(i)&&i!=="")throw M(r,"invalid header delimiter");let a=i===""?K:i,l=t.slice(n+1),d=null;if(!s&&l.startsWith("<")){let m=l.indexOf(">");if(m===-1)throw M(r,"invalid tag");if(d=l.slice(1,m),Gd(d,r),i!=="")throw M(r,"invalid header delimiter");l=l.slice(m+1)}if(!l.startsWith("{")||!l.endsWith("}:"))throw M(r,"invalid header");let c=l.slice(1,-2),u;try{u=Ae(c,a,r).map(m=>Oe(m,r)[0])}catch(m){throw rt(m)}if(u.length===0||u.some(m=>m===""))throw M(r,"invalid header fields");return{delimiter:a,fields:u,fieldText:c,continuation:s,tag:d}}function yy(e,r,t){if(e===null||e.delimiter===void 0)throw M(t,"continuation header before header");if(e.delimiter!==r.delimiter||e.fieldText!==r.fieldText)throw M(t,"continuation header mismatch")}function vd(e,r,t,n){let o;try{o=Ae(e,r,n)}catch(s){throw rt(s)}if(o.length!==t)throw M(n,"row arity mismatch");for(let s of o)try{Ee(s,n)}catch(i){throw rt(i)}return o}function ky(e,r,t){let n={};return e.forEach((o,s)=>{try{De(n,o,Ee(r[s],t))}catch(i){throw rt(i)}}),n}function by(e,r,t){if(e.startsWith("- "))throw M(r,"reserved line prefix");let n=gy(e,r);if(n!==null){if(t===null||t.delimiter===void 0)throw M(r,"trailer without header");if(t.rowCount!==n)throw M(r,"trailer count mismatch");return{kind:"trailer"}}let o=hy(e,r);if(o!==null)return o.continuation?(yy(t,o,r),{kind:"continuation"}):o.tag!==null?{kind:"tag-header",header:o}:{kind:"header",header:o};let s=fy(e,r);if(s!==null){let i=t?.taggedLanes?.get(s.tag);if(i===void 0)throw M(r,"unknown tag");return{kind:"tagged-row",tag:s.tag,cells:vd(s.cellsText,i.delimiter,i.fields.length,r)}}if(t===null||t.delimiter===void 0)throw M(r,"row before header");return{kind:"row",cells:vd(e,t.delimiter,t.fields.length,r)}}function _y(e,r={}){let t=[],n=new Map,o=[],s=[],i=null,a=!1,l=!1;function d(f,h){let v=s.at(-1);if(v!==void 0&&v.lane===f.lane&&v.delimiter===f.delimiter&&v.fieldText===f.fieldText){v.rows.push(h);return}s.push({lane:f.lane,delimiter:f.delimiter,fields:f.fields,fieldText:f.fieldText,rows:[h]})}function c(){i!==null&&o.push({delimiter:i.delimiter,fields:i.fields,fieldText:i.fieldText,lane:i.lane,rows:i.rows})}function u(f,h,v){let k=n.get(f);if(k===void 0){if(n.size>=jd)throw M(v,"too many tagged lanes");k={segments:[],current:null},n.set(f,k),t.push(f)}else k.current!==null&&k.segments.push(k.current);k.current={lane:f,delimiter:h.delimiter,fields:h.fields,fieldText:h.fieldText,rows:[]},k.delimiter=h.delimiter,k.fields=h.fields,k.fieldText=h.fieldText}if(io(e).forEach((f,h)=>{let v=h+1;if(f==="")return;let k=i===null?{taggedLanes:n}:{delimiter:i.delimiter,fields:i.fields,fieldText:i.fieldText,rowCount:i.rows.length,taggedLanes:n},T=by(f,v,k);if(T.kind==="trailer"){c(),i=null;return}if(T.kind!=="continuation"){if(T.kind==="tag-header"){l=!0,u(T.header.tag,T.header,v);return}if(T.kind==="header"){c(),a||(t.push(null),a=!0),i={lane:null,delimiter:T.header.delimiter,fields:T.header.fields,fieldText:T.header.fieldText,rows:[]};return}if(T.kind==="tagged-row"){l=!0;let I=n.get(T.tag).current;I.rows.push(T.cells),d(I,T.cells);return}if(i===null)throw M(v,"row before header");i.rows.push(T.cells),d(i,T.cells)}}),!l)return c(),r.preserveInterleaving===!0,o;let m=[];c();for(let f of t){if(f===null){m.push(...o);continue}let h=n.get(f);m.push(...h.segments),h.current!==null&&m.push(h.current)}return r.preserveInterleaving===!0?s:m}function We(e){return _y(e).flatMap(r=>r.rows.map(t=>ky(r.fields,t,0)))}function Ry(e){if(!Dd.includes(e))throw M(0,"invalid header delimiter")}function Sd(e,r,t=!1){return`[${`${t?"~":""}${e===K?"":e}`}]{${r}}:
29
- `}function Td(e,r){return`[]<${e}>{${r}}:
30
- `}function Hs(e,r){return r.map(ne).join(e)}function wy(e){if(!Array.isArray(e)||e.length===0)throw M(0,"TOONL header requires fields");return e.map(r=>{let t;try{[t]=Oe(String(r),0)}catch(n){throw rt(n)}if(t==="")throw M(0,"TOONL header requires fields");return t})}function xd(e,r){return e!==null&&e.length===r.length&&e.every((t,n)=>t===r[n])}function Pd(e){if(e!==void 0&&(!Number.isInteger(e)||e<=0))throw M(0,"TOONL continuation cadence must be positive")}function Ey(e,r,t){return e.continuationEveryRows!==void 0&&r>=e.continuationEveryRows||e.continuationEveryBytes!==void 0&&t>=e.continuationEveryBytes}function Od(e){if(e===null||typeof e!="object"||Array.isArray(e))throw M(0,"TOONL output requires object rows");let r=Object.keys(e);if(r.length===0)throw M(0,"TOONL output requires object rows");if(r.some(t=>!Me(e[t])))throw M(0,"TOONL rows must be flat objects");return r}function vy(e){return JSON.stringify([...e].sort())}function Ad(e,r){let t=vy(e),n=r.get(t);return n!==void 0?n:(r.set(t,e),e)}function ye({delimiter:e=K,trailer:r=!0,continuationEveryRows:t,continuationEveryBytes:n}={}){Ry(e),Pd(t),Pd(n);let o=null,s="",i=new Map,a=0,l=0,d=0,c=new Map,u=!1,m={continuationEveryRows:t,continuationEveryBytes:n},f=()=>o===null||!r?"":`[=${a}]
31
- `,h=()=>Ey(m,l,d)?(l=0,d=0,Sd(e,s,!0)):"",v=k=>{Gd(k,0);let T=c.get(k);if(T===void 0){if(c.size>=jd)throw M(0,"too many tagged lanes");T={fields:null,fieldsByShape:new Map},c.set(k,T)}return T};return{push(k){if(u)throw M(0,"TOONL encoder is closed");let T=Ad(Od(k),i),I="";(o===null||o.length!==T.length||o.some((H,ee)=>H!==T[ee]))&&(I+=f(),o=T,s=Hs(e,o),a=0,l=0,d=0,I+=Sd(e,s));let F=o.map(H=>ce(k[H],e));I+=h();let G=`${F.join(e)}
32
- `;return I+=G,a+=1,l+=1,d+=G.length,I},declareLane(k,T){if(u)throw M(0,"TOONL encoder is closed");let I=wy(T),F=Hs(K,I),G=v(k);return xd(G.fields,I)?"":(G.fields=I,Td(k,F))},pushTagged(k,T){if(u)throw M(0,"TOONL encoder is closed");let I=v(k),F=Ad(Od(T),I.fieldsByShape),G=Hs(K,F),H=F.map(q=>ce(T[q],K)),ee="";return xd(I.fields,F)||(I.fields=F,ee+=Td(k,G)),`${ee}${k}:${H.join(K)}
33
- `},end(){return u?"":(u=!0,f())}}}function qs(e){let r={app:e,version:Sy(it("__RED_BUILD_VERSION__",()=>"3.11.2")??"0.0.0-dev"),gitSha:it("__RED_BUILD_GIT_SHA__",()=>"dc3ba09fca02e4128474e28f3cfa7d693eee0856")??"unknown",buildTime:it("__RED_BUILD_TIME__",()=>"2026-08-07T15:47:14-03:00")??"unknown",bundleAsset:it("__RED_BUNDLE_ASSET__",()=>"redskilled.bundle.min.mjs")??"unknown"},t=it("__REDDB_SDK_VERSION__",()=>""),n=it("__REDDB_BINARY_TAG__",()=>"");return t&&(r.reddbSdkVersion=t),n&&(r.reddbBinaryTag=n),r}function Sy(e){return e.startsWith("v")?e.slice(1):e}function Id(e){return`${e.app} ${e.version} ${e.gitSha}`}function it(e,r){try{let t=r();return typeof t=="string"&&t.length>0?t:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}var $d={"=":"data",":=":{to:"data",typed:!0},":":"meta"},Ty=/^[a-z][a-z0-9+.-]*:\/\//i;function xy(e,r){return typeof r=="string"?{separator:e,to:r,typed:!1,prefix:!1}:{separator:e,to:r.to,typed:r.typed??!1,prefix:r.prefix??!1}}function Py(e=$d){return Object.entries(e).map(([r,t])=>xy(r,t)).sort((r,t)=>t.separator.length-r.separator.length)}function Oy(e){return/^-\d+(\.\d+)?$/.test(e)}function zt(e){return!(!e||e.startsWith("-")&&!Oy(e))}function go(e){if(e==="true")return!0;if(e==="false")return!1;if(e==="null")return null;let r=Number(e);return!Number.isNaN(r)&&Number.isFinite(r)&&e.trim()!==""?r:e}function Cd(e){if(e==="true")return!0;if(e==="false")return!1;if(e==="null")return null;if(e.startsWith("[")&&e.endsWith("]")||e.startsWith("{")&&e.endsWith("}"))try{return JSON.parse(e)}catch{}let r=Number(e);return!Number.isNaN(r)&&Number.isFinite(r)&&e.trim()!==""?r:e.includes(",")?e.split(",").map(t=>Cd(t.trim())):e}function Dr(e,r){switch(r){case"boolean":return Ay(e);case"number":return Dy(e);case"array":return e.split(",").map(t=>go(t.trim()));case"string":default:return e}}function Ay(e){let r=e.toLowerCase().trim();return r==="true"||r==="yes"||r==="1"||r==="on"}function Dy(e){if(e.trim()==="")throw new TypeError(`Cannot convert "${e}" to number`);let r=Number(e);if(Number.isNaN(r))throw new TypeError(`Cannot convert "${e}" to number`);return r}function dr(e){return e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'")?e.slice(1,-1):e}function jy(e,r={}){return e.map(t=>{let n=r[t.type];return n?n(t.value):t.value}).join("")}function W(e,r){return{type:e,value:r}}function Ly(e){let r=[],t=Iy(e);if(r.push(W("section-header","Usage:"),W("text"," "),W("usage-text",t),W("newline",`
34
- `),W("newline",`
35
- `)),e.positional&&e.positional.length>0){r.push(W("section-header","Arguments:"),W("newline",`
36
- `));for(let n of e.positional)if(n.description){let o=n.variadic?`${n.name}...`:n.name;r.push(W("indent"," "),W("positional-name",`<${o}>`)),n.required||r.push(W("positional-optional"," (optional)")),r.push(W("newline",`
37
- `),W("indent"," "),W("option-description",n.description),W("newline",`
38
- `))}r.push(W("newline",`
39
- `))}if(e.options&&Object.keys(e.options).length>0){r.push(W("section-header","Options:"),W("newline",`
40
- `));let n=$y(e.options);r.push(...n)}return r}function Gy(e,r){let t=Ly(e);return jy(t,r)}function Iy(e){let r=["[options]"];if(e.positional)for(let t of e.positional)t.variadic?r.push(t.required?`<${t.name}...>`:`[${t.name}...]`):r.push(t.required?`<${t.name}>`:`[${t.name}]`);return r.join(" ")}function $y(e,r=!1){let t=[],n=[],o=r?"global-option-flag":"option-flag",s=r?"global-option-type":"option-type",i=r?"global-option-default":"option-default",a=r?"global-option-description":"option-description";for(let[d,c]of Object.entries(e)){if(c.hidden)continue;let u=[],m=v=>{u.includes(v)||u.push(v)};c.short&&m(`-${c.short}`),m(`--${d}`);for(let v of c.aliases??[])v.length===1?m(`-${v}`):m(`--${v}`);let f=u.join(", "),h=c.type&&c.type!=="boolean"?`<${c.type}>`:void 0;n.push({flags:f,type:h,desc:c.description??"",default:c.default!==void 0?String(c.default):void 0})}let l=Math.max(...n.map(d=>d.flags.length+(d.type?d.type.length+1:0)),20);for(let d of n){let c=d.flags.length+(d.type?d.type.length+1:0),u=" ".repeat(l-c+2);t.push(W("indent"," ")),t.push(W(o,d.flags)),d.type&&(t.push(W("text"," ")),t.push(W(s,d.type))),t.push(W("text",u)),t.push(W(a,d.desc)),d.default!==void 0&&(t.push(W("text"," ")),t.push(W(i,`(default: ${d.default})`))),t.push(W("newline",`
41
- `))}return t}function Nd(e){let r=By(e.options??{},e.autoShort??!1),t=Py(e.separators??$d);return{schema:e,parse(n){return Cy(n,e,r,t)},help(){return Gy(e,e.formatter)}}}function Cy(e,r,t,n){let o={positional:{},options:{},errors:[],rest:[]},s=new Set(n.map(c=>c.to));for(let c of s)o[c]={};let i=0,a=r.positional??[],l=0,d=!1;for(;l<e.length;){let c=e[l];if(r.stopEarly&&i>0){o.rest=e.slice(l);break}if(c==="--"&&!d){d=!0,l++;continue}if(d){if(i<a.length){let m=a[i];if(m.variadic){let f=[];for(;l<e.length;){let h=e[l];f.push(m.type?Dr(h,m.type):h),l++}o.positional[m.name]=f,i++}else{let f=m.type?Dr(c,m.type):c;o.positional[m.name]=f,i++,l++}}else r.allowUnknown!==!1&&(o.rest=o.rest??[],o.rest.push(c)),l++;continue}if(c.startsWith("--")){l=Wy(c,l,e,o,t,r);continue}if(c.startsWith("-")&&c.length>1&&!Jy(c)){l=Uy(c,l,e,o,t,r);continue}let u=Ny(c,n);if(u){let{key:m,value:f,config:h}=u,v=o,k=v[h.to]??(v[h.to]={});k[m]=h.typed?Cd(f):dr(f),l++;continue}if(i<a.length){let m=a[i];if(m.variadic){let h=[];for(;l<e.length&&!e[l].startsWith("-");){let v=e[l];h.push(m.type?Dr(v,m.type):v),l++}o.positional[m.name]=h,i++;continue}let f=m.type?Dr(c,m.type):c;o.positional[m.name]=f,i++}else r.allowUnknown!==!1?o.rest.push(c):o.errors.push(`Unexpected positional argument: ${c}`);l++}return qy(o,r,t),Vy(o,r,a),Ky(o,r,t),o}function Ny(e,r){if(Ty.test(e))return null;for(let t of r){if(t.prefix&&e.startsWith(t.separator)){let o=e.slice(t.separator.length),s=o.indexOf(":");if(s>0){let i=o.slice(0,s),a=o.slice(s+1);if(My(i))return{key:i,value:a,config:t}}continue}let n=e.indexOf(t.separator);if(n>0){let o=e.slice(0,n),s=e.slice(n+t.separator.length);if(Fy(o,s,t))return{key:o,value:s,config:t}}}return null}function My(e){return e?/^[a-zA-Z_][a-zA-Z0-9_-]*$/.test(e):!1}function Fy(e,r,t){return e?t.separator===":"?e.includes("/")||e.includes(".")||/^\d+$/.test(r)?!1:/^[A-Z][a-zA-Z0-9-]*$/.test(e):!((t.separator==="="||t.separator===":=")&&e.includes("/")):!1}function Wy(e,r,t,n,o,s){let i=e.slice(2);if(i.startsWith("no-")){let l=i.slice(3),d=o.get(l);if(d?.negatable!==!1&&d?.type==="boolean")return n.options[d.name]=!1,r+1}if(i.includes("=")){let l=i.indexOf("="),d=i.slice(0,l),c=i.slice(l+1);return fo(d,c,r+1,n,o,s)}let a=o.get(i);if(a){if(a.type!=="boolean"){let l=t[r+1];return zt(l)?fo(a.name,l,r+2,n,o,s):(n.errors.push(`Option --${i} requires a value`),r+1)}return n.options[a.name]=!0,r+1}return s.strict?n.errors.push(`Unknown option: --${i}`):s.allowUnknown!==!1&&(n.options[i]=!0),r+1}function Uy(e,r,t,n,o,s){let i=e.slice(1);if(i.includes("=")){let a=i.indexOf("="),l=i.slice(0,a),d=i.slice(a+1),c=Vs(l,o);return c?fo(c.name,d,r+1,n,o,s):(s.strict?n.errors.push(`Unknown option: -${l}`):s.allowUnknown!==!1&&(n.options[l]=go(dr(d))),r+1)}if(i.length===1){let a=Vs(i,o);if(a){if(a.type!=="boolean"){let l=t[r+1];return zt(l)?fo(a.name,l,r+2,n,o,s):(n.errors.push(`Option -${i} requires a value`),r+1)}return n.options[a.name]=!0,r+1}if(s.strict)n.errors.push(`Unknown option: -${i}`);else if(s.allowUnknown!==!1){let l=t[r+1];if(zt(l))return n.options[i]=go(dr(l)),r+2;n.options[i]=!0}return r+1}for(let a of i){let l=Vs(a,o);l?l.type==="boolean"?n.options[l.name]=!0:n.errors.push(`Option -${a} requires a value`):s.strict?n.errors.push(`Unknown option: -${a}`):s.allowUnknown!==!1&&(n.options[a]=!0)}return r+1}function fo(e,r,t,n,o,s){let i=o.get(e);if(i){if(i.choices){let l=i.type?Dr(dr(r),i.type):dr(r);if(!i.choices.includes(l))return n.errors.push(`Invalid value for '${e}': '${r}'. Allowed: ${i.choices.join(", ")}`),t}let a=i.type?Dr(dr(r),i.type):dr(r);if(i.type==="array"){let l=n.options[e];Array.isArray(l)?l.push(...a):n.options[e]=a}else n.options[e]=a}else s.strict?n.errors.push(`Unknown option: --${e}`):s.allowUnknown!==!1&&(n.options[e]=go(dr(r)));return t}function By(e,r=!1){let t=new Map,n=Object.entries(e).sort(([s],[i])=>s.localeCompare(i)),o=new Set;for(let[,s]of n)s.short&&o.add(s.short);for(let[s,i]of n){let a=i.short??"";r&&!a&&(a=Hy(s,o),a&&o.add(a));let l={name:s,short:a,aliases:i.aliases??[],type:i.type??"string",description:i.description??"",required:i.required??!1,hidden:i.hidden??!1,negatable:i.negatable??!0,default:i.default,choices:i.choices,env:i.env,validate:i.validate};t.set(s,l);for(let d of l.aliases)t.set(d,l)}return t}function Hy(e,r){for(let t of e){if(!/[a-zA-Z]/.test(t))continue;let n=t.toLowerCase();if(!r.has(n))return n;let o=t.toUpperCase();if(!r.has(o))return o}return""}function Vs(e,r){for(let t of r.values())if(t.short===e||t.aliases.includes(e))return t}function qy(e,r,t){for(let n of t.values())if(e.options[n.name]===void 0)if(n.env&&process.env[n.env]!==void 0){let o=process.env[n.env];e.options[n.name]=n.type?Dr(o,n.type):o}else n.default!==void 0&&(e.options[n.name]=n.default);for(let n of r.positional??[])e.positional[n.name]===void 0&&n.default!==void 0&&(e.positional[n.name]=n.default)}function Vy(e,r,t){if(r.options)for(let[n,o]of Object.entries(r.options))o.required&&e.options[n]===void 0&&e.errors.push(`Missing required option: --${n}`);for(let n of t)n.required&&e.positional[n.name]===void 0&&e.errors.push(`Missing required argument: <${n.name}>`)}function Ky(e,r,t){for(let n of t.values()){let o=e.options[n.name];if(n.validate&&o!==void 0){let s=n.validate(o);s!==!0&&e.errors.push(s)}}for(let n of r.positional??[]){let o=e.positional[n.name];if(n.validate&&o!==void 0){let s=n.validate(o);s!==!0&&e.errors.push(s)}}}function Jy(e){return/^-\d+(\.\d+)?$/.test(e)}var Ks=class extends Error{flag;known;constructor(r,t){super(`unknown flag '${r}'; expected one of: ${t.join(", ")}`),this.name="UnknownFlagError",this.flag=r,this.known=t}};function zy(e){let r={};for(let[t,n]of Object.entries(e))r[t]={type:n.kind==="boolean"?"boolean":"string",...t.length===1?{short:t}:{},...n.aliases===void 0?{}:{aliases:n.aliases}};return r}function Qy(e,r){let t=new Map;for(let[o,s]of Object.entries(r))if(!(s.kind!=="value"||s.type!=="array")){t.set(o,o);for(let i of s.aliases??[])t.set(i,o)}let n=new Map;for(let o=0;o<e.length;o+=1){let s=e[o];if(s==="--")break;let i=s.match(/^--([^=]+)(?:=(.*))?$/)??s.match(/^-([^=])(?:=(.*))?$/);if(i===null)continue;let a=t.get(i[1]);if(a===void 0)continue;let l=i[2];if(l===void 0&&zt(e[o+1])&&(l=e[o+1],o+=1),l===void 0)continue;let d=n.get(a)??[];d.push(l),n.set(a,d)}return n}function cr(e,r,t={}){let o=Nd({options:zy(r),separators:{},allowUnknown:!0}).parse([...e]),s={},i=Qy(e,r),a=o.errors.find(l=>/^Option --?\S+ requires a value$/.test(l));if(a!==void 0)throw new Error(a.replace(/^Option /,""));if(o.errors.length>0)throw new Error(o.errors[0]);if(t.unknownFlags==="error"){let l=new Set(Object.keys(r));for(let d of Object.keys(o.options))if(!l.has(d))throw new Ks(d.length===1?`-${d}`:`--${d}`,Object.keys(r).map(c=>c.length===1?`-${c}`:`--${c}`))}for(let[l,d]of Object.entries(r)){let c=o.options[l];c!==void 0&&(d.kind==="boolean"?s[l]=c:d.type==="array"?s[l]=(i.get(l)??[]).map(u=>d.coerce(u)):s[l]=d.coerce(String(c)))}return{values:s,positionals:o.rest}}var Js=class extends Error{token;known;constructor(r,t){super(`unknown command '${r}'; expected one of: ${t.join(", ")}`),this.name="UnknownCommandError",this.token=r,this.known=t}};function Md(e,r){let[t,...n]=e;if(t!==void 0){for(let[s,i]of Object.entries(r.commands))if(t===s||(i.aliases??[]).includes(t))return{command:s,args:n};if(r.errorOnUnknownCommand&&!t.startsWith("-"))throw new Js(t,Object.keys(r.commands))}let o=r.keepArgvOnDefault??!0;return{command:r.default,args:o?[...e]:n}}import{appendFileSync as ak,mkdirSync as lk,readFileSync as zd,statSync as dk}from"node:fs";import{dirname as Yd,join as ck}from"node:path";var Fd="RED_WORKER_SCOPE",Wd="RED_WORKER_MEMORY_CEILING",Ud="RED_WORKER_SCOPE_DEGRADATION",Qs={scope:null,memory_ceiling:null,scope_degradation:null};function Ys(e){return{scope:zs(e[Fd]),memory_ceiling:zs(e[Wd]),scope_degradation:zs(e[Ud])}}function Qt(e){let r={};return e.scope!=null&&e.scope!==""&&(r[Fd]=e.scope),e.memory_ceiling!=null&&e.memory_ceiling!==""&&(r[Wd]=e.memory_ceiling),e.scope_degradation!=null&&e.scope_degradation!==""&&(r[Ud]=e.scope_degradation),r}function zs(e){let r=(e??"").trim();return r===""?null:r}import{mkdirSync as Zy,readdirSync as ek,readFileSync as Vd,rmSync as rk,writeFileSync as tk}from"node:fs";import{basename as nk,join as at}from"node:path";import{isAbsolute as vO,join as ho,resolve as SO}from"node:path";function Yy(e){if(!e)throw new Error("root is required");return e.replace(/\/$/,"")}var Bd="deaths",Hd="deaths.toonl";function yo(e){return ho(Yy(e),Bd)}function Yt(e){return ho(yo(e),Hd)}var Xt="live",qd="attributions.toonl";function ko(e){return ho(yo(e),Xt)}function Xs(e){return ho(yo(e),qd)}var ei=at("sys","kernel","random","boot_id"),Kd=1;function ri(e,r={}){let t=r.procRoot??"/proc",n=e.pid??process.pid;return{version:Kd,ts:(r.now??(()=>new Date().toISOString()))(),kind:e.kind,id:e.id,pid:n,ppid:e.ppid??process.ppid,boot_id:Jd(at(t,ei)),cgroup:ok(t,n),last_phase:e.last_phase}}function Jd(e){try{let r=Vd(e,"utf8").trim();return r===""?null:r}catch{return null}}function ok(e,r){let t=Jd(at(e,String(r),"cgroup"));if(t===null)return null;let n=t.split(`
42
- `),o=n.find(i=>i.startsWith("0::"));if(o)return o.slice(3)||null;let s=n[0]?.split(":").slice(2).join(":");return s===void 0||s===""?null:s}function ti(e){let r=e.id.replace(/[^A-Za-z0-9._-]/g,"_");return`${e.kind}-${r}-${e.pid}.toon`}function ni(e,r){let t=at(e,ti(r));try{return Zy(e,{recursive:!0,mode:448}),tk(t,ye({trailer:!1}).push(ik(r)),{encoding:"utf8",mode:384}),t}catch{return null}}function jr(e,r){try{rk(at(e,ti(r)),{force:!0})}catch{}}function oi(e,r){let t;try{t=ek(e)}catch{return[]}let n=[];for(let o of t.sort()){if(!o.endsWith(".toon"))continue;let s=at(e,o);try{let a=We(Vd(s,"utf8"))[0];if(a===void 0)throw new Error("anchor holds no record");n.push(sk(a))}catch(i){r?.(nk(s),i instanceof Error?i.message:String(i))}}return n}function sk(e){let r=e.kind;if(r!=="launcher"&&r!=="worker"&&r!=="daemon")throw new Error(`presence anchor has unknown kind ${String(r)}`);return{version:Zs(e.version),ts:String(e.ts),kind:r,id:String(e.id),pid:Zs(e.pid),ppid:Zs(e.ppid),boot_id:e.boot_id==null?null:String(e.boot_id),cgroup:e.cgroup==null?null:String(e.cgroup),last_phase:String(e.last_phase)}}function Zs(e){return typeof e=="number"?e:Number(e)}function ik(e){return{...e}}var uk=1,pk=new Set(["exit","signal","uncaught-exception","unhandled-rejection"]);function mk(e){return typeof e=="string"&&pk.has(e)}var gk="startup";function fk(e,r){return{...e.scope??Qs,version:uk,ts:e.ts,kind:e.kind,id:e.id,pid:e.pid,exit_path:e.exit_path,signal:e.signal??null,exit_code:e.exit_code??null,last_phase:e.last_phase,detail:e.detail??null,...r}}function hk(e){let r=e.resourceUsage();return{uptime_s:Math.round(e.uptime()),rss_kb:Math.round(e.memoryUsage().rss/1024),max_rss_kb:r.maxRSS,user_cpu_us:r.userCPUTime,system_cpu_us:r.systemCPUTime,minor_page_faults:r.minorPageFault,major_page_faults:r.majorPageFault,voluntary_ctx_switches:r.voluntaryContextSwitches,involuntary_ctx_switches:r.involuntaryContextSwitches}}var ii={mkdir(e){lk(e,{recursive:!0,mode:448})},endsClean(e){let r;try{r=dk(e).size}catch{return!0}if(r===0)return!0;try{return zd(e,"utf8").endsWith(`
43
- `)}catch{return!0}},append(e,r){ak(e,r,{encoding:"utf8",mode:384})},read(e){return zd(e,"utf8")}};function yk(e){let r={};for(let[t,n]of Object.entries(e))r[t]=n;return r}function kk(e,r,t=ii){let n=ye({trailer:!1}).push(yk(r));return t.mkdir(Yd(e)),t.endsClean(e)||t.append(e,`
44
- `),t.append(e,n),r}function Xd(e){let r=e.endsWith(`
21
+ `);return}if(r.every(yr)){zl(e,t,r.length,void 0,s.delimiter),e.push(" "),e.push(r.map(a=>vt(a,s.delimiter)).join(s.delimiter)),e.push(`
22
+ `);return}let i=o?void 0:qf(r,s,n+1);if(i!==void 0){zl(e,t,r.length,i.fields,s.delimiter),e.push(`
23
+ `);for(let a of r){ko(e,n+1);let l=[];e.push(i.paths.map(d=>rd(ed(a,d.path),d,s.delimiter,s,l,n+2)).join(s.delimiter)),e.push(`
24
+ `),e.push(...l)}return}zl(e,t,r.length,void 0,s.delimiter),e.push(`
25
+ `);for(let a of r)ko(e,n+1),nE(e,a,n+1,s)}function nE(e,t,r,n){if(kr(r,0,n),Array.isArray(t)){e.push("- "),Ql(e,void 0,t,r,!0,n);return}if(rt(t)){let o=Object.entries(t);if(o.length===0){e.push(`-
26
+ `);return}e.push("- "),Jl(e,o[0][0],o[0][1],r+1,n);for(let[s,i]of o.slice(1))ko(e,r+1),Jl(e,s,i,r+1,n);return}e.push("- ",vt(t,n.delimiter),`
27
+ `)}function zl(e,t,r,n,o){t!==void 0&&e.push(ft(t)),e.push("[",String(r),Xl(o),"]"),n!==void 0&&e.push("{",n.map(s=>td(s,o)).join(o),"}"),e.push(":")}function Xl(e){return e===ze?"":e}function qf(e,t,r){let n=sE(e,t);if(n!==void 0)return n;let o=Yl(e.map(s=>({value:s})),t,r);return o===void 0?void 0:{fields:o,paths:Zl(o)}}function oE(e,t,r){let n=Object.values(e);if(!(n.length<2))return qf(n,t,r)}function Yl(e,t,r){kr(r,0,t);let n=e[0]?.value;if(!rt(n))return;let o=Object.keys(n).map(s=>({key:s}));if(o.length!==0){for(let{value:s}of e)if(!rt(s)||Object.keys(s).length!==o.length||o.some(a=>!Object.prototype.hasOwnProperty.call(s,a.key)))return;for(let s of o){let i=e.map(({value:l})=>({value:l[s.key]}));if(i.every(({value:l})=>yr(l)))continue;if(t.primitiveArrayColumns&&i.every(({value:l})=>Array.isArray(l)&&l.every(yr))){s.listDelimiter=";";continue}if(t.objectArrayColumns&&i.every(({value:l})=>Array.isArray(l))){let l=Kf(i.map(({value:c})=>c));if(l!==void 0){s.fixedLength=l.fixedLength,s.fixedDelimiter=t.delimiter;continue}let d=Yl(i.flatMap(({value:c})=>c.map(u=>({value:u}))),t,r+1);if(d!==void 0){s.children=d,s.childTable=!0;continue}}if(!t.nestedTabularHeaders)return;let a=Yl(i,t,r+1);if(a===void 0)return;s.children=a}return o}}function sE(e,t){if(!t.objectArrayColumns)return;let r=Kf(e);return r===void 0?void 0:{fields:[{key:"values",fixedLength:r.fixedLength,fixedDelimiter:t.delimiter}],paths:[{path:[],fixedLength:r.fixedLength}]}}function Kf(e){let t=e[0]?.length;if(!(!Number.isInteger(t)||t===0)&&e.every(r=>Array.isArray(r)&&r.length===t&&r.every(yr)))return{fixedLength:t}}function Zl(e,t=[]){return e.flatMap(r=>{let n=[...t,r.key];return r.childTable===!0?[{path:n,childFields:r.children}]:r.fixedLength!==void 0?[{path:n,fixedLength:r.fixedLength}]:r.children===void 0?[{path:n,listDelimiter:r.listDelimiter}]:Zl(r.children,n)})}function ed(e,t){let r=e;for(let n of t)r=r[n];return r}function td(e,t){return e.listDelimiter!==void 0?`${ft(e.key)}[${e.listDelimiter}]`:e.fixedLength!==void 0?`${ft(e.key)}[${e.fixedLength}${Xl(t)}]`:e.children===void 0?ft(e.key):`${ft(e.key)}{${e.children.map(r=>td(r,t)).join(t)}}`}function rd(e,t,r,n,o,s){return t.childFields!==void 0?(iE(o,e,t.childFields,n,s),String(e.length)):t.fixedLength!==void 0?e.map(i=>vt(i,r)).join(r):t.listDelimiter===void 0?vt(e,r):e.map(i=>aE(i,r,t.listDelimiter)).join(t.listDelimiter)}function iE(e,t,r,n,o){for(let s of t){ko(e,o);let i=[];e.push(Zl(r).map(a=>rd(ed(s,a.path),a,n.delimiter,n,i,o+1)).join(n.delimiter)),e.push(`
28
+ `),e.push(...i)}}function aE(e,t,r){return typeof e!="string"?vt(e,t):$l(e,t)||e.includes(r)?ji(e):e}var eg=[ze,"|"," "];var tg=8,rg=/^[A-Za-z0-9_-]+$/,QB=new TextEncoder,XB=new TextDecoder;function uE(e,t){if(!(e.startsWith("[=")&&e.endsWith("]")))return null;let r=e.slice(2,-1);if(!/^[0-9]+$/.test(r))throw Te(t,"invalid trailer count");return Number.parseInt(r,10)}function ng(e,t){if(!rg.test(e))throw Te(t,"invalid tag")}function pE(e,t){let r=e.indexOf(":");if(r<=0)return null;let n=e.slice(0,r);if(!rg.test(n)){if(/^[A-Za-z0-9_-]/.test(n)&&/^[^,[\]|{}:\t ]+$/.test(n))throw Te(t,"invalid tag");return null}return{tag:n,cellsText:e.slice(r+1)}}function fE(e,t){if(!e.startsWith("["))return null;let r=e.slice(1),n=r.indexOf("]");if(n===-1)throw Te(t,"invalid header");let o=r.slice(0,n),s=o.startsWith("~"),i=s?o.slice(1):o;if(!s&&i.startsWith("="))return null;if(!eg.includes(i)&&i!=="")throw Te(t,"invalid header delimiter");let a=i===""?ze:i,l=r.slice(n+1),d=null;if(!s&&l.startsWith("<")){let p=l.indexOf(">");if(p===-1)throw Te(t,"invalid tag");if(d=l.slice(1,p),ng(d,t),i!=="")throw Te(t,"invalid header delimiter");l=l.slice(p+1)}if(!l.startsWith("{")||!l.endsWith("}:"))throw Te(t,"invalid header");let c=l.slice(1,-2),u;try{u=er(c,a,t).map(p=>Zt(p,t)[0])}catch(p){throw ho(p)}if(u.length===0||u.some(p=>p===""))throw Te(t,"invalid header fields");return{delimiter:a,fields:u,fieldText:c,continuation:s,tag:d}}function gE(e,t,r){if(e===null||e.delimiter===void 0)throw Te(r,"continuation header before header");if(e.delimiter!==t.delimiter||e.fieldText!==t.fieldText)throw Te(r,"continuation header mismatch")}function Vf(e,t,r,n){let o;try{o=er(e,t,n)}catch(s){throw ho(s)}if(o.length!==r)throw Te(n,"row arity mismatch");for(let s of o)try{Ut(s,n)}catch(i){throw ho(i)}return o}function hE(e,t,r){let n={};return e.forEach((o,s)=>{try{tr(n,o,Ut(t[s],r))}catch(i){throw ho(i)}}),n}function mE(e,t,r){if(e.startsWith("- "))throw Te(t,"reserved line prefix");let n=uE(e,t);if(n!==null){if(r===null||r.delimiter===void 0)throw Te(t,"trailer without header");if(r.rowCount!==n)throw Te(t,"trailer count mismatch");return{kind:"trailer"}}let o=fE(e,t);if(o!==null)return o.continuation?(gE(r,o,t),{kind:"continuation"}):o.tag!==null?{kind:"tag-header",header:o}:{kind:"header",header:o};let s=pE(e,t);if(s!==null){let i=r?.taggedLanes?.get(s.tag);if(i===void 0)throw Te(t,"unknown tag");return{kind:"tagged-row",tag:s.tag,cells:Vf(s.cellsText,i.delimiter,i.fields.length,t)}}if(r===null||r.delimiter===void 0)throw Te(t,"row before header");return{kind:"row",cells:Vf(e,r.delimiter,r.fields.length,t)}}function bE(e,t={}){let r=[],n=new Map,o=[],s=[],i=null,a=!1,l=!1;function d(g,f){let k=s.at(-1);if(k!==void 0&&k.lane===g.lane&&k.delimiter===g.delimiter&&k.fieldText===g.fieldText){k.rows.push(f);return}s.push({lane:g.lane,delimiter:g.delimiter,fields:g.fields,fieldText:g.fieldText,rows:[f]})}function c(){i!==null&&o.push({delimiter:i.delimiter,fields:i.fields,fieldText:i.fieldText,lane:i.lane,rows:i.rows})}function u(g,f,k){let b=n.get(g);if(b===void 0){if(n.size>=tg)throw Te(k,"too many tagged lanes");b={segments:[],current:null},n.set(g,b),r.push(g)}else b.current!==null&&b.segments.push(b.current);b.current={lane:g,delimiter:f.delimiter,fields:f.fields,fieldText:f.fieldText,rows:[]},b.delimiter=f.delimiter,b.fields=f.fields,b.fieldText=f.fieldText}if(Li(e).forEach((g,f)=>{let k=f+1;if(g==="")return;let b=i===null?{taggedLanes:n}:{delimiter:i.delimiter,fields:i.fields,fieldText:i.fieldText,rowCount:i.rows.length,taggedLanes:n},v=mE(g,k,b);if(v.kind==="trailer"){c(),i=null;return}if(v.kind!=="continuation"){if(v.kind==="tag-header"){l=!0,u(v.header.tag,v.header,k);return}if(v.kind==="header"){c(),a||(r.push(null),a=!0),i={lane:null,delimiter:v.header.delimiter,fields:v.header.fields,fieldText:v.header.fieldText,rows:[]};return}if(v.kind==="tagged-row"){l=!0;let T=n.get(v.tag).current;T.rows.push(v.cells),d(T,v.cells);return}if(i===null)throw Te(k,"row before header");i.rows.push(v.cells),d(i,v.cells)}}),!l)return c(),t.preserveInterleaving===!0,o;let p=[];c();for(let g of r){if(g===null){p.push(...o);continue}let f=n.get(g);p.push(...f.segments),f.current!==null&&p.push(f.current)}return t.preserveInterleaving===!0?s:p}function wr(e){return bE(e).flatMap(t=>t.rows.map(r=>hE(t.fields,r,0)))}function yE(e){if(!eg.includes(e))throw Te(0,"invalid header delimiter")}function zf(e,t,r=!1){return`[${`${r?"~":""}${e===ze?"":e}`}]{${t}}:
29
+ `}function Jf(e,t){return`[]<${e}>{${t}}:
30
+ `}function nd(e,t){return t.map(ft).join(e)}function kE(e){if(!Array.isArray(e)||e.length===0)throw Te(0,"TOONL header requires fields");return e.map(t=>{let r;try{[r]=Zt(String(t),0)}catch(n){throw ho(n)}if(r==="")throw Te(0,"TOONL header requires fields");return r})}function Yf(e,t){return e!==null&&e.length===t.length&&e.every((r,n)=>r===t[n])}function Qf(e){if(e!==void 0&&(!Number.isInteger(e)||e<=0))throw Te(0,"TOONL continuation cadence must be positive")}function wE(e,t,r){return e.continuationEveryRows!==void 0&&t>=e.continuationEveryRows||e.continuationEveryBytes!==void 0&&r>=e.continuationEveryBytes}function Xf(e){if(e===null||typeof e!="object"||Array.isArray(e))throw Te(0,"TOONL output requires object rows");let t=Object.keys(e);if(t.length===0)throw Te(0,"TOONL output requires object rows");if(t.some(r=>!yr(e[r])))throw Te(0,"TOONL rows must be flat objects");return t}function RE(e){return JSON.stringify([...e].sort())}function Zf(e,t){let r=RE(e),n=t.get(r);return n!==void 0?n:(t.set(r,e),e)}function Mt({delimiter:e=ze,trailer:t=!0,continuationEveryRows:r,continuationEveryBytes:n}={}){yE(e),Qf(r),Qf(n);let o=null,s="",i=new Map,a=0,l=0,d=0,c=new Map,u=!1,p={continuationEveryRows:r,continuationEveryBytes:n},g=()=>o===null||!t?"":`[=${a}]
31
+ `,f=()=>wE(p,l,d)?(l=0,d=0,zf(e,s,!0)):"",k=b=>{ng(b,0);let v=c.get(b);if(v===void 0){if(c.size>=tg)throw Te(0,"too many tagged lanes");v={fields:null,fieldsByShape:new Map},c.set(b,v)}return v};return{push(b){if(u)throw Te(0,"TOONL encoder is closed");let v=Zf(Xf(b),i),T="";(o===null||o.length!==v.length||o.some((L,W)=>L!==v[W]))&&(T+=g(),o=v,s=nd(e,o),a=0,l=0,d=0,T+=zf(e,s));let $=o.map(L=>vt(b[L],e));T+=f();let D=`${$.join(e)}
32
+ `;return T+=D,a+=1,l+=1,d+=D.length,T},declareLane(b,v){if(u)throw Te(0,"TOONL encoder is closed");let T=kE(v),$=nd(ze,T),D=k(b);return Yf(D.fields,T)?"":(D.fields=T,Jf(b,$))},pushTagged(b,v){if(u)throw Te(0,"TOONL encoder is closed");let T=k(b),$=Zf(Xf(v),T.fieldsByShape),D=nd(ze,$),L=$.map(K=>vt(v[K],ze)),W="";return Yf(T.fields,$)||(T.fields=$,W+=Jf(b,D)),`${W}${b}:${L.join(ze)}
33
+ `},end(){return u?"":(u=!0,g())}}}function od(e){let t={app:e,version:_E(wo("__RED_BUILD_VERSION__",()=>"3.12.0")??"0.0.0-dev"),gitSha:wo("__RED_BUILD_GIT_SHA__",()=>"b6a5b25eaec8a3121b0886329408c5a48e032c2e")??"unknown",buildTime:wo("__RED_BUILD_TIME__",()=>"2026-08-07T19:18:58Z")??"unknown",bundleAsset:wo("__RED_BUNDLE_ASSET__",()=>"redskilled.bundle.min.mjs")??"unknown"},r=wo("__REDDB_SDK_VERSION__",()=>""),n=wo("__REDDB_BINARY_TAG__",()=>"");return r&&(t.reddbSdkVersion=r),n&&(t.reddbBinaryTag=n),t}function _E(e){return e.startsWith("v")?e.slice(1):e}function og(e){return`${e.app} ${e.version} ${e.gitSha}`}function wo(e,t){try{let r=t();return typeof r=="string"&&r.length>0?r:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}var sg={"=":"data",":=":{to:"data",typed:!0},":":"meta"},xE=/^[a-z][a-z0-9+.-]*:\/\//i;function EE(e,t){return typeof t=="string"?{separator:e,to:t,typed:!1,prefix:!1}:{separator:e,to:t.to,typed:t.typed??!1,prefix:t.prefix??!1}}function vE(e=sg){return Object.entries(e).map(([t,r])=>EE(t,r)).sort((t,r)=>r.separator.length-t.separator.length)}function SE(e){return/^-\d+(\.\d+)?$/.test(e)}function us(e){return!(!e||e.startsWith("-")&&!SE(e))}function Hi(e){if(e==="true")return!0;if(e==="false")return!1;if(e==="null")return null;let t=Number(e);return!Number.isNaN(t)&&Number.isFinite(t)&&e.trim()!==""?t:e}function ig(e){if(e==="true")return!0;if(e==="false")return!1;if(e==="null")return null;if(e.startsWith("[")&&e.endsWith("]")||e.startsWith("{")&&e.endsWith("}"))try{return JSON.parse(e)}catch{}let t=Number(e);return!Number.isNaN(t)&&Number.isFinite(t)&&e.trim()!==""?t:e.includes(",")?e.split(",").map(r=>ig(r.trim())):e}function On(e,t){switch(t){case"boolean":return TE(e);case"number":return PE(e);case"array":return e.split(",").map(r=>Hi(r.trim()));case"string":default:return e}}function TE(e){let t=e.toLowerCase().trim();return t==="true"||t==="yes"||t==="1"||t==="on"}function PE(e){if(e.trim()==="")throw new TypeError(`Cannot convert "${e}" to number`);let t=Number(e);if(Number.isNaN(t))throw new TypeError(`Cannot convert "${e}" to number`);return t}function en(e){return e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'")?e.slice(1,-1):e}function AE(e,t={}){return e.map(r=>{let n=t[r.type];return n?n(r.value):r.value}).join("")}function Me(e,t){return{type:e,value:t}}function CE(e){let t=[],r=DE(e);if(t.push(Me("section-header","Usage:"),Me("text"," "),Me("usage-text",r),Me("newline",`
34
+ `),Me("newline",`
35
+ `)),e.positional&&e.positional.length>0){t.push(Me("section-header","Arguments:"),Me("newline",`
36
+ `));for(let n of e.positional)if(n.description){let o=n.variadic?`${n.name}...`:n.name;t.push(Me("indent"," "),Me("positional-name",`<${o}>`)),n.required||t.push(Me("positional-optional"," (optional)")),t.push(Me("newline",`
37
+ `),Me("indent"," "),Me("option-description",n.description),Me("newline",`
38
+ `))}t.push(Me("newline",`
39
+ `))}if(e.options&&Object.keys(e.options).length>0){t.push(Me("section-header","Options:"),Me("newline",`
40
+ `));let n=FE(e.options);t.push(...n)}return t}function OE(e,t){let r=CE(e);return AE(r,t)}function DE(e){let t=["[options]"];if(e.positional)for(let r of e.positional)r.variadic?t.push(r.required?`<${r.name}...>`:`[${r.name}...]`):t.push(r.required?`<${r.name}>`:`[${r.name}]`);return t.join(" ")}function FE(e,t=!1){let r=[],n=[],o=t?"global-option-flag":"option-flag",s=t?"global-option-type":"option-type",i=t?"global-option-default":"option-default",a=t?"global-option-description":"option-description";for(let[d,c]of Object.entries(e)){if(c.hidden)continue;let u=[],p=k=>{u.includes(k)||u.push(k)};c.short&&p(`-${c.short}`),p(`--${d}`);for(let k of c.aliases??[])k.length===1?p(`-${k}`):p(`--${k}`);let g=u.join(", "),f=c.type&&c.type!=="boolean"?`<${c.type}>`:void 0;n.push({flags:g,type:f,desc:c.description??"",default:c.default!==void 0?String(c.default):void 0})}let l=Math.max(...n.map(d=>d.flags.length+(d.type?d.type.length+1:0)),20);for(let d of n){let c=d.flags.length+(d.type?d.type.length+1:0),u=" ".repeat(l-c+2);r.push(Me("indent"," ")),r.push(Me(o,d.flags)),d.type&&(r.push(Me("text"," ")),r.push(Me(s,d.type))),r.push(Me("text",u)),r.push(Me(a,d.desc)),d.default!==void 0&&(r.push(Me("text"," ")),r.push(Me(i,`(default: ${d.default})`))),r.push(Me("newline",`
41
+ `))}return r}function ag(e){let t=GE(e.options??{},e.autoShort??!1),r=vE(e.separators??sg);return{schema:e,parse(n){return IE(n,e,t,r)},help(){return OE(e,e.formatter)}}}function IE(e,t,r,n){let o={positional:{},options:{},errors:[],rest:[]},s=new Set(n.map(c=>c.to));for(let c of s)o[c]={};let i=0,a=t.positional??[],l=0,d=!1;for(;l<e.length;){let c=e[l];if(t.stopEarly&&i>0){o.rest=e.slice(l);break}if(c==="--"&&!d){d=!0,l++;continue}if(d){if(i<a.length){let p=a[i];if(p.variadic){let g=[];for(;l<e.length;){let f=e[l];g.push(p.type?On(f,p.type):f),l++}o.positional[p.name]=g,i++}else{let g=p.type?On(c,p.type):c;o.positional[p.name]=g,i++,l++}}else t.allowUnknown!==!1&&(o.rest=o.rest??[],o.rest.push(c)),l++;continue}if(c.startsWith("--")){l=BE(c,l,e,o,r,t);continue}if(c.startsWith("-")&&c.length>1&&!qE(c)){l=$E(c,l,e,o,r,t);continue}let u=ME(c,n);if(u){let{key:p,value:g,config:f}=u,k=o,b=k[f.to]??(k[f.to]={});b[p]=f.typed?ig(g):en(g),l++;continue}if(i<a.length){let p=a[i];if(p.variadic){let f=[];for(;l<e.length&&!e[l].startsWith("-");){let k=e[l];f.push(p.type?On(k,p.type):k),l++}o.positional[p.name]=f,i++;continue}let g=p.type?On(c,p.type):c;o.positional[p.name]=g,i++}else t.allowUnknown!==!1?o.rest.push(c):o.errors.push(`Unexpected positional argument: ${c}`);l++}return WE(o,t,r),HE(o,t,a),UE(o,t,r),o}function ME(e,t){if(xE.test(e))return null;for(let r of t){if(r.prefix&&e.startsWith(r.separator)){let o=e.slice(r.separator.length),s=o.indexOf(":");if(s>0){let i=o.slice(0,s),a=o.slice(s+1);if(LE(i))return{key:i,value:a,config:r}}continue}let n=e.indexOf(r.separator);if(n>0){let o=e.slice(0,n),s=e.slice(n+r.separator.length);if(jE(o,s,r))return{key:o,value:s,config:r}}}return null}function LE(e){return e?/^[a-zA-Z_][a-zA-Z0-9_-]*$/.test(e):!1}function jE(e,t,r){return e?r.separator===":"?e.includes("/")||e.includes(".")||/^\d+$/.test(t)?!1:/^[A-Z][a-zA-Z0-9-]*$/.test(e):!((r.separator==="="||r.separator===":=")&&e.includes("/")):!1}function BE(e,t,r,n,o,s){let i=e.slice(2);if(i.startsWith("no-")){let l=i.slice(3),d=o.get(l);if(d?.negatable!==!1&&d?.type==="boolean")return n.options[d.name]=!1,t+1}if(i.includes("=")){let l=i.indexOf("="),d=i.slice(0,l),c=i.slice(l+1);return Ui(d,c,t+1,n,o,s)}let a=o.get(i);if(a){if(a.type!=="boolean"){let l=r[t+1];return us(l)?Ui(a.name,l,t+2,n,o,s):(n.errors.push(`Option --${i} requires a value`),t+1)}return n.options[a.name]=!0,t+1}return s.strict?n.errors.push(`Unknown option: --${i}`):s.allowUnknown!==!1&&(n.options[i]=!0),t+1}function $E(e,t,r,n,o,s){let i=e.slice(1);if(i.includes("=")){let a=i.indexOf("="),l=i.slice(0,a),d=i.slice(a+1),c=sd(l,o);return c?Ui(c.name,d,t+1,n,o,s):(s.strict?n.errors.push(`Unknown option: -${l}`):s.allowUnknown!==!1&&(n.options[l]=Hi(en(d))),t+1)}if(i.length===1){let a=sd(i,o);if(a){if(a.type!=="boolean"){let l=r[t+1];return us(l)?Ui(a.name,l,t+2,n,o,s):(n.errors.push(`Option -${i} requires a value`),t+1)}return n.options[a.name]=!0,t+1}if(s.strict)n.errors.push(`Unknown option: -${i}`);else if(s.allowUnknown!==!1){let l=r[t+1];if(us(l))return n.options[i]=Hi(en(l)),t+2;n.options[i]=!0}return t+1}for(let a of i){let l=sd(a,o);l?l.type==="boolean"?n.options[l.name]=!0:n.errors.push(`Option -${a} requires a value`):s.strict?n.errors.push(`Unknown option: -${a}`):s.allowUnknown!==!1&&(n.options[a]=!0)}return t+1}function Ui(e,t,r,n,o,s){let i=o.get(e);if(i){if(i.choices){let l=i.type?On(en(t),i.type):en(t);if(!i.choices.includes(l))return n.errors.push(`Invalid value for '${e}': '${t}'. Allowed: ${i.choices.join(", ")}`),r}let a=i.type?On(en(t),i.type):en(t);if(i.type==="array"){let l=n.options[e];Array.isArray(l)?l.push(...a):n.options[e]=a}else n.options[e]=a}else s.strict?n.errors.push(`Unknown option: --${e}`):s.allowUnknown!==!1&&(n.options[e]=Hi(en(t)));return r}function GE(e,t=!1){let r=new Map,n=Object.entries(e).sort(([s],[i])=>s.localeCompare(i)),o=new Set;for(let[,s]of n)s.short&&o.add(s.short);for(let[s,i]of n){let a=i.short??"";t&&!a&&(a=NE(s,o),a&&o.add(a));let l={name:s,short:a,aliases:i.aliases??[],type:i.type??"string",description:i.description??"",required:i.required??!1,hidden:i.hidden??!1,negatable:i.negatable??!0,default:i.default,choices:i.choices,env:i.env,validate:i.validate};r.set(s,l);for(let d of l.aliases)r.set(d,l)}return r}function NE(e,t){for(let r of e){if(!/[a-zA-Z]/.test(r))continue;let n=r.toLowerCase();if(!t.has(n))return n;let o=r.toUpperCase();if(!t.has(o))return o}return""}function sd(e,t){for(let r of t.values())if(r.short===e||r.aliases.includes(e))return r}function WE(e,t,r){for(let n of r.values())if(e.options[n.name]===void 0)if(n.env&&process.env[n.env]!==void 0){let o=process.env[n.env];e.options[n.name]=n.type?On(o,n.type):o}else n.default!==void 0&&(e.options[n.name]=n.default);for(let n of t.positional??[])e.positional[n.name]===void 0&&n.default!==void 0&&(e.positional[n.name]=n.default)}function HE(e,t,r){if(t.options)for(let[n,o]of Object.entries(t.options))o.required&&e.options[n]===void 0&&e.errors.push(`Missing required option: --${n}`);for(let n of r)n.required&&e.positional[n.name]===void 0&&e.errors.push(`Missing required argument: <${n.name}>`)}function UE(e,t,r){for(let n of r.values()){let o=e.options[n.name];if(n.validate&&o!==void 0){let s=n.validate(o);s!==!0&&e.errors.push(s)}}for(let n of t.positional??[]){let o=e.positional[n.name];if(n.validate&&o!==void 0){let s=n.validate(o);s!==!0&&e.errors.push(s)}}}function qE(e){return/^-\d+(\.\d+)?$/.test(e)}var id=class extends Error{flag;known;constructor(t,r){super(`unknown flag '${t}'; expected one of: ${r.join(", ")}`),this.name="UnknownFlagError",this.flag=t,this.known=r}};function KE(e){let t={};for(let[r,n]of Object.entries(e))t[r]={type:n.kind==="boolean"?"boolean":"string",...r.length===1?{short:r}:{},...n.aliases===void 0?{}:{aliases:n.aliases}};return t}function VE(e,t){let r=new Map;for(let[o,s]of Object.entries(t))if(!(s.kind!=="value"||s.type!=="array")){r.set(o,o);for(let i of s.aliases??[])r.set(i,o)}let n=new Map;for(let o=0;o<e.length;o+=1){let s=e[o];if(s==="--")break;let i=s.match(/^--([^=]+)(?:=(.*))?$/)??s.match(/^-([^=])(?:=(.*))?$/);if(i===null)continue;let a=r.get(i[1]);if(a===void 0)continue;let l=i[2];if(l===void 0&&us(e[o+1])&&(l=e[o+1],o+=1),l===void 0)continue;let d=n.get(a)??[];d.push(l),n.set(a,d)}return n}function tn(e,t,r={}){let o=ag({options:KE(t),separators:{},allowUnknown:!0}).parse([...e]),s={},i=VE(e,t),a=o.errors.find(l=>/^Option --?\S+ requires a value$/.test(l));if(a!==void 0)throw new Error(a.replace(/^Option /,""));if(o.errors.length>0)throw new Error(o.errors[0]);if(r.unknownFlags==="error"){let l=new Set(Object.keys(t));for(let d of Object.keys(o.options))if(!l.has(d))throw new id(d.length===1?`-${d}`:`--${d}`,Object.keys(t).map(c=>c.length===1?`-${c}`:`--${c}`))}for(let[l,d]of Object.entries(t)){let c=o.options[l];c!==void 0&&(d.kind==="boolean"?s[l]=c:d.type==="array"?s[l]=(i.get(l)??[]).map(u=>d.coerce(u)):s[l]=d.coerce(String(c)))}return{values:s,positionals:o.rest}}var ad=class extends Error{token;known;constructor(t,r){super(`unknown command '${t}'; expected one of: ${r.join(", ")}`),this.name="UnknownCommandError",this.token=t,this.known=r}};function lg(e,t){let[r,...n]=e;if(r!==void 0){for(let[s,i]of Object.entries(t.commands))if(r===s||(i.aliases??[]).includes(r))return{command:s,args:n};if(t.errorOnUnknownCommand&&!r.startsWith("-"))throw new ad(r,Object.keys(t.commands))}let o=t.keepArgvOnDefault??!0;return{command:t.default,args:o?[...e]:n}}import{appendFileSync as ov,mkdirSync as sv,readFileSync as yg,statSync as iv}from"node:fs";import{dirname as wg,join as av}from"node:path";var dg="RED_WORKER_SCOPE",cg="RED_WORKER_MEMORY_CEILING",ug="RED_WORKER_SCOPE_DEGRADATION",dd={scope:null,memory_ceiling:null,scope_degradation:null};function cd(e){return{scope:ld(e[dg]),memory_ceiling:ld(e[cg]),scope_degradation:ld(e[ug])}}function ps(e){let t={};return e.scope!=null&&e.scope!==""&&(t[dg]=e.scope),e.memory_ceiling!=null&&e.memory_ceiling!==""&&(t[cg]=e.memory_ceiling),e.scope_degradation!=null&&e.scope_degradation!==""&&(t[ug]=e.scope_degradation),t}function ld(e){let t=(e??"").trim();return t===""?null:t}import{mkdirSync as YE,readdirSync as QE,readFileSync as hg,rmSync as XE,writeFileSync as ZE}from"node:fs";import{basename as ev,join as Ro}from"node:path";import{isAbsolute as O$,join as qi,resolve as D$}from"node:path";function zE(e){if(!e)throw new Error("root is required");return e.replace(/\/$/,"")}var pg="deaths",fg="deaths.toonl";function Ki(e){return qi(zE(e),pg)}function fs(e){return qi(Ki(e),fg)}var gs="live",gg="attributions.toonl";function Vi(e){return qi(Ki(e),gs)}function ud(e){return qi(Ki(e),gg)}var fd=Ro("sys","kernel","random","boot_id"),mg=1;function gd(e,t={}){let r=t.procRoot??"/proc",n=e.pid??process.pid;return{version:mg,ts:(t.now??(()=>new Date().toISOString()))(),kind:e.kind,id:e.id,pid:n,ppid:e.ppid??process.ppid,boot_id:bg(Ro(r,fd)),cgroup:tv(r,n),last_phase:e.last_phase}}function bg(e){try{let t=hg(e,"utf8").trim();return t===""?null:t}catch{return null}}function tv(e,t){let r=bg(Ro(e,String(t),"cgroup"));if(r===null)return null;let n=r.split(`
42
+ `),o=n.find(i=>i.startsWith("0::"));if(o)return o.slice(3)||null;let s=n[0]?.split(":").slice(2).join(":");return s===void 0||s===""?null:s}function hd(e){let t=e.id.replace(/[^A-Za-z0-9._-]/g,"_");return`${e.kind}-${t}-${e.pid}.toon`}function md(e,t){let r=Ro(e,hd(t));try{return YE(e,{recursive:!0,mode:448}),ZE(r,Mt({trailer:!1}).push(nv(t)),{encoding:"utf8",mode:384}),r}catch{return null}}function Dn(e,t){try{XE(Ro(e,hd(t)),{force:!0})}catch{}}function bd(e,t){let r;try{r=QE(e)}catch{return[]}let n=[];for(let o of r.sort()){if(!o.endsWith(".toon"))continue;let s=Ro(e,o);try{let a=wr(hg(s,"utf8"))[0];if(a===void 0)throw new Error("anchor holds no record");n.push(rv(a))}catch(i){t?.(ev(s),i instanceof Error?i.message:String(i))}}return n}function rv(e){let t=e.kind;if(t!=="launcher"&&t!=="worker"&&t!=="daemon")throw new Error(`presence anchor has unknown kind ${String(t)}`);return{version:pd(e.version),ts:String(e.ts),kind:t,id:String(e.id),pid:pd(e.pid),ppid:pd(e.ppid),boot_id:e.boot_id==null?null:String(e.boot_id),cgroup:e.cgroup==null?null:String(e.cgroup),last_phase:String(e.last_phase)}}function pd(e){return typeof e=="number"?e:Number(e)}function nv(e){return{...e}}var lv=1,dv=new Set(["exit","signal","uncaught-exception","unhandled-rejection"]);function cv(e){return typeof e=="string"&&dv.has(e)}var uv="startup";function pv(e,t){return{...e.scope??dd,version:lv,ts:e.ts,kind:e.kind,id:e.id,pid:e.pid,exit_path:e.exit_path,signal:e.signal??null,exit_code:e.exit_code??null,last_phase:e.last_phase,detail:e.detail??null,...t}}function fv(e){let t=e.resourceUsage();return{uptime_s:Math.round(e.uptime()),rss_kb:Math.round(e.memoryUsage().rss/1024),max_rss_kb:t.maxRSS,user_cpu_us:t.userCPUTime,system_cpu_us:t.systemCPUTime,minor_page_faults:t.minorPageFault,major_page_faults:t.majorPageFault,voluntary_ctx_switches:t.voluntaryContextSwitches,involuntary_ctx_switches:t.involuntaryContextSwitches}}var kd={mkdir(e){sv(e,{recursive:!0,mode:448})},endsClean(e){let t;try{t=iv(e).size}catch{return!0}if(t===0)return!0;try{return yg(e,"utf8").endsWith(`
43
+ `)}catch{return!0}},append(e,t){ov(e,t,{encoding:"utf8",mode:384})},read(e){return yg(e,"utf8")}};function gv(e){let t={};for(let[r,n]of Object.entries(e))t[r]=n;return t}function hv(e,t,r=kd){let n=Mt({trailer:!1}).push(gv(t));return r.mkdir(wg(e)),r.endsClean(e)||r.append(e,`
44
+ `),r.append(e,n),t}function Rg(e){let t=e.endsWith(`
45
45
  `)?e:e.slice(0,e.lastIndexOf(`
46
- `)+1);return r===""?[]:We(r).map(bk)}function bk(e){let r=e.exit_path;if(!mk(r))throw new Error(`death record has unknown exit_path ${JSON.stringify(r)}`);let t=e.kind;if(t!=="launcher"&&t!=="worker"&&t!=="daemon")throw new Error(`death record has unknown kind ${JSON.stringify(t)}`);return{version:ve(e.version),ts:String(e.ts),kind:t,id:String(e.id),pid:ve(e.pid),exit_path:r,signal:e.signal==null?null:String(e.signal),exit_code:e.exit_code==null?null:ve(e.exit_code),last_phase:String(e.last_phase),detail:e.detail==null?null:String(e.detail),scope:e.scope==null?null:String(e.scope),memory_ceiling:e.memory_ceiling==null?null:String(e.memory_ceiling),scope_degradation:e.scope_degradation==null?null:String(e.scope_degradation),uptime_s:ve(e.uptime_s),rss_kb:ve(e.rss_kb),max_rss_kb:ve(e.max_rss_kb),user_cpu_us:ve(e.user_cpu_us),system_cpu_us:ve(e.system_cpu_us),minor_page_faults:ve(e.minor_page_faults),major_page_faults:ve(e.major_page_faults),voluntary_ctx_switches:ve(e.voluntary_ctx_switches),involuntary_ctx_switches:ve(e.involuntary_ctx_switches)}}function ve(e){return typeof e=="number"?e:Number(e)}function Zd(e,r=ii){let t;try{t=r.read(e)}catch(n){if(n.code==="ENOENT")return[];throw n}return Xd(t)}var _k=["SIGTERM","SIGINT","SIGHUP","SIGQUIT"],si=null;function ec(e){let r=e.host??process,t=e.io??ii,n=e.clock??(()=>new Date().toISOString()),o=r.pid,s=e.scope??Ys(process.env),i=e.phase??gk,a=null,l=e.presenceDir===void 0?ck(Yd(e.lanePath),Xt):e.presenceDir,d=null,c=()=>{l!==null&&(d=ri({kind:e.kind,id:e.id,last_phase:i,pid:o},{procRoot:e.procRoot}),ni(l,d))},u=k=>{if(!a){try{a=kk(e.lanePath,fk({ts:n(),kind:e.kind,id:e.id,pid:o,last_phase:i,scope:s,...k},hk(r)),t)}catch{}l!==null&&d!==null&&jr(l,d)}},m={signal(k){u({exit_path:"signal",signal:k})},exit(k){u({exit_path:"exit",exit_code:k})},uncaughtException(k){u({exit_path:"uncaught-exception",detail:Qd(k)})},unhandledRejection(k){u({exit_path:"unhandled-rejection",detail:Qd(k)})}},h=[...(e.signals??_k).map(k=>{let T=()=>{if(m.signal(k),!(r.listenerCount?.(k)!==1||!r.kill)){r.off(k,T);try{r.kill(o,k)}catch{}}};return[k,T]}),["uncaughtException",(...k)=>m.uncaughtException(k[0])],["unhandledRejection",(...k)=>m.unhandledRejection(k[0])],["exit",(...k)=>m.exit(typeof k[0]=="number"?k[0]:null)]];for(let[k,T]of h)r.on(k,T);let v={lanePath:e.lanePath,phase(k){i=k,a||c()},currentPhase:()=>i,written:()=>a,uninstall(){for(let[k,T]of h)r.off(k,T);l!==null&&d!==null&&jr(l,d),si===v&&(si=null)},handlers:m};return e.setActive!==!1&&(si=v),c(),v}function Qd(e){if(e instanceof Error)return`${e.name}: ${e.message}`;try{return String(e)}catch{return"(undescribable)"}}import{mkdirSync as Rk,readdirSync as wk,readFileSync as bo,statSync as Ek,writeFileSync as vk}from"node:fs";import{join as oc}from"node:path";var Sk=1,Tk=["/var/log/kern.log","/var/log/syslog","/var/log/messages"],xk=512*1024;function Pk(e={}){let r=e.procRoot??"/proc",t=e.journalPaths??Tk,n=[],o=oc(r,ei),s=null;try{let l=bo(o,"utf8").trim();s=l===""?null:l,n.push({source:o,result:s?"read":"empty",detail:s})}catch(l){n.push({source:o,result:ai(l),detail:null})}let i=new Set;try{for(let l of wk(r))/^\d+$/.test(l)&&i.add(Number(l));n.push({source:r,result:"read",detail:`${i.size} live pids`})}catch(l){n.push({source:r,result:ai(l),detail:null})}let a=[];for(let l of t)try{let c=Ok(l,e.tailBytes??xk).split(`
47
- `).filter(u=>u.trim()!=="");a.push(...c),n.push({source:l,result:c.length===0?"empty":"read",detail:`${c.length} lines`})}catch(d){n.push({source:l,result:ai(d),detail:null})}return{boot_id:s,live_pids:i,journal:a,probes:n}}function ai(e){return e.code==="ENOENT"?"absent":"unreadable"}function Ok(e,r){let t=Ek(e).size,n=bo(e,"utf8");return t<=r?n:n.slice(n.length-r)}var Ak=/(?:Out of memory|Memory cgroup out of memory)[^\n]*?Killed process (\d+)/,Dk=/oom[-_]kill:[^\n]*?\bpid=(\d+)/,jk=/Killed (\/\S*) due to memory pressure/,Lk=/\bopid=(\d+)\b/,rc=/\bsig=(\d+)\b/,Gk=/\buid=(\d+)\b/,Ik=/systemd-shutdown|Powering off|System is powering down|Reboot: |Unmounting file systems/,$k={2:"SIGINT",9:"SIGKILL",15:"SIGTERM"};function Ck(e,r,t,n){let o=e.boot_id!==null&&r.boot_id!==null&&e.boot_id!==r.boot_id,s=[...r.probes.map(u=>`${u.source}: ${u.result}${u.detail?` (${u.detail})`:""}`),`boot id: anchored under ${e.boot_id??"unknown"}, host now ${r.boot_id??"unknown"} (${o?"changed":"same"})`,`parent account: ppid ${e.ppid}`,`cgroup: ${e.cgroup??"unknown"}`],i=(u,m,f,h)=>({version:Sk,ts:n,kind:e.kind,id:e.id,pid:e.pid,last_seen:e.ts,last_phase:e.last_phase,sender_class:u,confidence:m,signal:f,host_boot_changed:o,evidence:h,checked:s}),a=o?["the host rebooted since the anchor, so this line may name a reused pid"]:[],l=r.journal.find(u=>tc(u,e.pid,Ak)||tc(u,e.pid,Dk));if(l!==void 0)return i("oomd",o?"medium":"high","SIGKILL",[l,...a]);if(e.cgroup!==null)for(let u of r.journal){let m=jk.exec(u)?.[1];if(m!==void 0){if(m===e.cgroup)return i("oomd",o?"medium":"high","SIGKILL",[u,...a]);if(e.cgroup.startsWith(`${m}/`))return i("oomd","medium","SIGKILL",[u,`the killed scope ${m} is an ancestor of this process's ${e.cgroup}`,...a])}}let d=r.journal.find(u=>Number(Lk.exec(u)?.[1])===e.pid&&rc.test(u));if(d!==void 0){let u=Number(rc.exec(d)?.[1]),m=Gk.exec(d)?.[1];return i("user-signal",o?"medium":"high",$k[u]??null,[d,...m===void 0?[]:[`sent by uid ${m}`],...a])}let c=t.find(u=>u.pid===e.ppid);if(c!==void 0&&!r.live_pids.has(e.ppid))return i("parent-death","medium",null,[`parent pid ${e.ppid} (${c.kind} ${c.id}) recorded its own death at ${c.ts} via ${c.exit_path}${c.signal?` ${c.signal}`:""}`]);if(o){let u=r.journal.find(m=>Ik.test(m));return u!==void 0?i("teardown","high",null,[`host boot id changed from ${e.boot_id} to ${r.boot_id}`,u]):i("teardown","medium",null,[`host boot id changed from ${e.boot_id} to ${r.boot_id}`,"no shutdown record on any journal read: the host stopped without announcing it (a freeze or a power loss, not an orderly teardown)"])}return i("unknown","none",null,[])}function tc(e,r,t){return Number(t.exec(e)?.[1])===r}var Nk=" | ";function nc(e){return e.map(r=>r.replace(/[|\n\r]+/g," ").trim()).join(Nk)}function Mk(e){return{version:e.version,ts:e.ts,kind:e.kind,id:e.id,pid:e.pid,last_seen:e.last_seen,last_phase:e.last_phase,sender_class:e.sender_class,confidence:e.confidence,signal:e.signal,host_boot_changed:e.host_boot_changed,evidence:nc(e.evidence),checked:nc(e.checked)}}function Fk(e){let r=ye({trailer:!1});return e.map(t=>r.push(Mk(t))).join("")}function sc(e){let r=ko(e.stateRoot),t=Xs(e.stateRoot),n=e.now??(()=>new Date().toISOString()),o=e.evidence??Pk({procRoot:e.procRoot,journalPaths:e.journalPaths}),s=[],i=oi(r,u=>s.push(u)),a=Zd(Yt(e.stateRoot)),l=[],d=[],c=[];for(let u of i){if(o.live_pids.has(u.pid)){d.push(u);continue}if(a.find(f=>f.pid===u.pid&&f.id===u.id)!==void 0){c.push(u),jr(r,u);continue}l.push(Ck(u,o,a,n())),jr(r,u)}return l.length>0&&Wk(t,l),{attributions:l,alive:d,self_recorded:c,skipped:s,laneText:()=>{try{return bo(t,"utf8")}catch{return""}}}}function ic(e){let r=e.skipped.length===0?"":` | unreadable anchors=${e.skipped.join(",")}`;if(e.attributions.length===0)return`death reaper: no un-recorded deaths (live=${e.alive.length} self-recorded=${e.self_recorded.length})${r}`;let t=e.attributions.map(n=>` | ${n.kind} ${n.id} pid=${n.pid} ${n.sender_class}/${n.confidence} phase=${n.last_phase}`+(n.evidence[0]?` evidence="${n.evidence[0]}"`:"")).join("");return`death reaper: attributed ${e.attributions.length}${t}${r}`}function Wk(e,r){try{Rk(oc(e,".."),{recursive:!0,mode:448});let t=Uk(e),n=t===""||t.endsWith(`
46
+ `)+1);return t===""?[]:wr(t).map(mv)}function mv(e){let t=e.exit_path;if(!cv(t))throw new Error(`death record has unknown exit_path ${JSON.stringify(t)}`);let r=e.kind;if(r!=="launcher"&&r!=="worker"&&r!=="daemon")throw new Error(`death record has unknown kind ${JSON.stringify(r)}`);return{version:qt(e.version),ts:String(e.ts),kind:r,id:String(e.id),pid:qt(e.pid),exit_path:t,signal:e.signal==null?null:String(e.signal),exit_code:e.exit_code==null?null:qt(e.exit_code),last_phase:String(e.last_phase),detail:e.detail==null?null:String(e.detail),scope:e.scope==null?null:String(e.scope),memory_ceiling:e.memory_ceiling==null?null:String(e.memory_ceiling),scope_degradation:e.scope_degradation==null?null:String(e.scope_degradation),uptime_s:qt(e.uptime_s),rss_kb:qt(e.rss_kb),max_rss_kb:qt(e.max_rss_kb),user_cpu_us:qt(e.user_cpu_us),system_cpu_us:qt(e.system_cpu_us),minor_page_faults:qt(e.minor_page_faults),major_page_faults:qt(e.major_page_faults),voluntary_ctx_switches:qt(e.voluntary_ctx_switches),involuntary_ctx_switches:qt(e.involuntary_ctx_switches)}}function qt(e){return typeof e=="number"?e:Number(e)}function _g(e,t=kd){let r;try{r=t.read(e)}catch(n){if(n.code==="ENOENT")return[];throw n}return Rg(r)}var bv=["SIGTERM","SIGINT","SIGHUP","SIGQUIT"],yd=null;function xg(e){let t=e.host??process,r=e.io??kd,n=e.clock??(()=>new Date().toISOString()),o=t.pid,s=e.scope??cd(process.env),i=e.phase??uv,a=null,l=e.presenceDir===void 0?av(wg(e.lanePath),gs):e.presenceDir,d=null,c=()=>{l!==null&&(d=gd({kind:e.kind,id:e.id,last_phase:i,pid:o},{procRoot:e.procRoot}),md(l,d))},u=b=>{if(!a){try{a=hv(e.lanePath,pv({ts:n(),kind:e.kind,id:e.id,pid:o,last_phase:i,scope:s,...b},fv(t)),r)}catch{}l!==null&&d!==null&&Dn(l,d)}},p={signal(b){u({exit_path:"signal",signal:b})},exit(b){u({exit_path:"exit",exit_code:b})},uncaughtException(b){u({exit_path:"uncaught-exception",detail:kg(b)})},unhandledRejection(b){u({exit_path:"unhandled-rejection",detail:kg(b)})}},f=[...(e.signals??bv).map(b=>{let v=()=>{if(p.signal(b),!(t.listenerCount?.(b)!==1||!t.kill)){t.off(b,v);try{t.kill(o,b)}catch{}}};return[b,v]}),["uncaughtException",(...b)=>p.uncaughtException(b[0])],["unhandledRejection",(...b)=>p.unhandledRejection(b[0])],["exit",(...b)=>p.exit(typeof b[0]=="number"?b[0]:null)]];for(let[b,v]of f)t.on(b,v);let k={lanePath:e.lanePath,phase(b){i=b,a||c()},currentPhase:()=>i,written:()=>a,uninstall(){for(let[b,v]of f)t.off(b,v);l!==null&&d!==null&&Dn(l,d),yd===k&&(yd=null)},handlers:p};return e.setActive!==!1&&(yd=k),c(),k}function kg(e){if(e instanceof Error)return`${e.name}: ${e.message}`;try{return String(e)}catch{return"(undescribable)"}}import{mkdirSync as yv,readdirSync as kv,readFileSync as zi,statSync as wv,writeFileSync as Rv}from"node:fs";import{join as Tg}from"node:path";var _v=1,xv=["/var/log/kern.log","/var/log/syslog","/var/log/messages"],Ev=512*1024;function vv(e={}){let t=e.procRoot??"/proc",r=e.journalPaths??xv,n=[],o=Tg(t,fd),s=null;try{let l=zi(o,"utf8").trim();s=l===""?null:l,n.push({source:o,result:s?"read":"empty",detail:s})}catch(l){n.push({source:o,result:wd(l),detail:null})}let i=new Set;try{for(let l of kv(t))/^\d+$/.test(l)&&i.add(Number(l));n.push({source:t,result:"read",detail:`${i.size} live pids`})}catch(l){n.push({source:t,result:wd(l),detail:null})}let a=[];for(let l of r)try{let c=Sv(l,e.tailBytes??Ev).split(`
47
+ `).filter(u=>u.trim()!=="");a.push(...c),n.push({source:l,result:c.length===0?"empty":"read",detail:`${c.length} lines`})}catch(d){n.push({source:l,result:wd(d),detail:null})}return{boot_id:s,live_pids:i,journal:a,probes:n}}function wd(e){return e.code==="ENOENT"?"absent":"unreadable"}function Sv(e,t){let r=wv(e).size,n=zi(e,"utf8");return r<=t?n:n.slice(n.length-t)}var Tv=/(?:Out of memory|Memory cgroup out of memory)[^\n]*?Killed process (\d+)/,Pv=/oom[-_]kill:[^\n]*?\bpid=(\d+)/,Av=/Killed (\/\S*) due to memory pressure/,Cv=/\bopid=(\d+)\b/,Eg=/\bsig=(\d+)\b/,Ov=/\buid=(\d+)\b/,Dv=/systemd-shutdown|Powering off|System is powering down|Reboot: |Unmounting file systems/,Fv={2:"SIGINT",9:"SIGKILL",15:"SIGTERM"};function Iv(e,t,r,n){let o=e.boot_id!==null&&t.boot_id!==null&&e.boot_id!==t.boot_id,s=[...t.probes.map(u=>`${u.source}: ${u.result}${u.detail?` (${u.detail})`:""}`),`boot id: anchored under ${e.boot_id??"unknown"}, host now ${t.boot_id??"unknown"} (${o?"changed":"same"})`,`parent account: ppid ${e.ppid}`,`cgroup: ${e.cgroup??"unknown"}`],i=(u,p,g,f)=>({version:_v,ts:n,kind:e.kind,id:e.id,pid:e.pid,last_seen:e.ts,last_phase:e.last_phase,sender_class:u,confidence:p,signal:g,host_boot_changed:o,evidence:f,checked:s}),a=o?["the host rebooted since the anchor, so this line may name a reused pid"]:[],l=t.journal.find(u=>vg(u,e.pid,Tv)||vg(u,e.pid,Pv));if(l!==void 0)return i("oomd",o?"medium":"high","SIGKILL",[l,...a]);if(e.cgroup!==null)for(let u of t.journal){let p=Av.exec(u)?.[1];if(p!==void 0){if(p===e.cgroup)return i("oomd",o?"medium":"high","SIGKILL",[u,...a]);if(e.cgroup.startsWith(`${p}/`))return i("oomd","medium","SIGKILL",[u,`the killed scope ${p} is an ancestor of this process's ${e.cgroup}`,...a])}}let d=t.journal.find(u=>Number(Cv.exec(u)?.[1])===e.pid&&Eg.test(u));if(d!==void 0){let u=Number(Eg.exec(d)?.[1]),p=Ov.exec(d)?.[1];return i("user-signal",o?"medium":"high",Fv[u]??null,[d,...p===void 0?[]:[`sent by uid ${p}`],...a])}let c=r.find(u=>u.pid===e.ppid);if(c!==void 0&&!t.live_pids.has(e.ppid))return i("parent-death","medium",null,[`parent pid ${e.ppid} (${c.kind} ${c.id}) recorded its own death at ${c.ts} via ${c.exit_path}${c.signal?` ${c.signal}`:""}`]);if(o){let u=t.journal.find(p=>Dv.test(p));return u!==void 0?i("teardown","high",null,[`host boot id changed from ${e.boot_id} to ${t.boot_id}`,u]):i("teardown","medium",null,[`host boot id changed from ${e.boot_id} to ${t.boot_id}`,"no shutdown record on any journal read: the host stopped without announcing it (a freeze or a power loss, not an orderly teardown)"])}return i("unknown","none",null,[])}function vg(e,t,r){return Number(r.exec(e)?.[1])===t}var Mv=" | ";function Sg(e){return e.map(t=>t.replace(/[|\n\r]+/g," ").trim()).join(Mv)}function Lv(e){return{version:e.version,ts:e.ts,kind:e.kind,id:e.id,pid:e.pid,last_seen:e.last_seen,last_phase:e.last_phase,sender_class:e.sender_class,confidence:e.confidence,signal:e.signal,host_boot_changed:e.host_boot_changed,evidence:Sg(e.evidence),checked:Sg(e.checked)}}function jv(e){let t=Mt({trailer:!1});return e.map(r=>t.push(Lv(r))).join("")}function Pg(e){let t=Vi(e.stateRoot),r=ud(e.stateRoot),n=e.now??(()=>new Date().toISOString()),o=e.evidence??vv({procRoot:e.procRoot,journalPaths:e.journalPaths}),s=[],i=bd(t,u=>s.push(u)),a=_g(fs(e.stateRoot)),l=[],d=[],c=[];for(let u of i){if(o.live_pids.has(u.pid)){d.push(u);continue}if(a.find(g=>g.pid===u.pid&&g.id===u.id)!==void 0){c.push(u),Dn(t,u);continue}l.push(Iv(u,o,a,n())),Dn(t,u)}return l.length>0&&Bv(r,l),{attributions:l,alive:d,self_recorded:c,skipped:s,laneText:()=>{try{return zi(r,"utf8")}catch{return""}}}}function Ag(e){let t=e.skipped.length===0?"":` | unreadable anchors=${e.skipped.join(",")}`;if(e.attributions.length===0)return`death reaper: no un-recorded deaths (live=${e.alive.length} self-recorded=${e.self_recorded.length})${t}`;let r=e.attributions.map(n=>` | ${n.kind} ${n.id} pid=${n.pid} ${n.sender_class}/${n.confidence} phase=${n.last_phase}`+(n.evidence[0]?` evidence="${n.evidence[0]}"`:"")).join("");return`death reaper: attributed ${e.attributions.length}${r}${t}`}function Bv(e,t){try{yv(Tg(e,".."),{recursive:!0,mode:448});let r=$v(e),n=r===""||r.endsWith(`
48
48
  `)?"":`
49
- `;vk(e,`${t}${n}${Fk(r)}`,{encoding:"utf8",mode:384})}catch{}}function Uk(e){try{return bo(e,"utf8")}catch{return""}}import{join as Bk}from"node:path";var Hk=[".red","redskilled"],rr=448;function Ue(e){return Bk(e,...Hk)}import{execFileSync as ob}from"node:child_process";import{readFileSync as sb}from"node:fs";import{dirname as mc,join as ib}from"node:path";import{existsSync as qk,readFileSync as tA}from"node:fs";import{dirname as Vk,join as Kk}from"node:path";function ac(e,r){let t=e;for(let n=0;n<16;n++){let o=Kk(t,r);if(qk(o))return o;let s=Vk(t);if(s===t)break;t=s}return null}function Jk(e){let r=e.indexOf(" #");return(r>=0?e.slice(0,r):e).trim()}function lt(e,r){let t=[];for(let n of e.split(`
50
- `)){let o=n.replace(/\r$/,""),s=o.trim();if(!s||s.startsWith("#"))continue;let i=o.indexOf(":");if(i<0)continue;let a=o.length-o.trimStart().length,l=o.slice(0,i).trim();if(!l)continue;let d=o.slice(i+1).trim();for(;t.length&&t[t.length-1].indent>=a;)t.pop();if(t.push({indent:a,key:l}),d&&t.map(u=>u.key).join(".")===r)return Jk(d)}}import{createHash as zk}from"node:crypto";var Qk="project.name";function dc(e){let r=lt(e,Qk)?.trim();return r===void 0||r===""?void 0:r}var Yk=8,cc="project";function uc(e){let r=tb(e.gitCommonDir),t=(e.declaredName??"").trim(),n=t!==""?{name:t,source:"declared"}:Xk(e.remoteUrl)??{name:Zk(e.checkoutPath,r),source:"basename"},o=rb(r??li(e.checkoutPath));return{name:n.name,slug:`${eb(n.name)}-${o}`,hash:o,source:n.source}}function pc(e){let r=(e??"").trim();if(r==="")return;let t=r.replace(/^[a-zA-Z][a-zA-Z0-9+.-]*:\/\//,""),n=/^[^/]*?:(?!\d)(.+)$/.exec(t),s=(n?n[1]:t.replace(/^[^/]*/,"")).replace(/\.git$/,"").split("/").map(i=>i.trim()).filter(i=>i!=="");if(s.length!==0)return s.slice(-2).join("/")}function Xk(e){let r=pc(e);return r===void 0?void 0:{name:r,source:"remote"}}function Zk(e,r){let t=r===void 0?"":lc(nb(r));if(t!=="")return t;let n=lc(li(e));return n===""?cc:n}function eb(e){let t=e.split("/").map(n=>n.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")).filter(n=>n!=="").join("--");return t===""?cc:t}function rb(e){return zk("sha256").update(e).digest("hex").slice(0,Yk)}function tb(e){let r=li(e??"");return r===""?void 0:r}function li(e){let r=e.trim().replace(/\\/g,"/");return r.length>1?r.replace(/\/+$/,""):r}function lc(e){let r=e.split("/").filter(t=>t!=="");return r[r.length-1]??""}function nb(e){return e.split("/").filter(t=>t!=="").slice(0,-1).join("/")}var ab=2e3;function gc(e){return lb(e).name}function lb(e){let r=ci(e),t=di(e,["rev-parse","--absolute-git-dir"])??di(e,["rev-parse","--git-common-dir"]),n=di(e,["remote","get-url","origin"]);return uc({checkoutPath:r.root??e,...t!==void 0?{gitCommonDir:t}:{},...n!==void 0?{remoteUrl:n}:{},...r.name!==void 0?{declaredName:r.name}:{}})}function ci(e){let r=ac(e,ib(".red","config.yaml"));if(r==null)return{};let t;try{t=sb(r,"utf8")}catch{return{}}let n=dc(t),o=mc(mc(r));return{...n===void 0?{}:{name:n},configText:t,root:o}}function di(e,r){try{let t=ob("git",[...r],{cwd:e,encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:ab}).trim();return t===""?void 0:t}catch{return}}import{randomUUID as tf}from"node:crypto";import{spawn as ST}from"node:child_process";import{mkdir as TT}from"node:fs/promises";import{dirname as xT}from"node:path";import{createHash as ub}from"node:crypto";import{constants as fi}from"node:fs";import{mkdir as Ec,open as pb,readFile as mb,rm as vc,stat as gb}from"node:fs/promises";import{createConnection as fb}from"node:net";import{tmpdir as hb}from"node:os";import{dirname as Sc,join as Zt}from"node:path";var db="toon";function yc(e){return e.trimStart().startsWith("{")?"json":"toon"}function pi(e){let r=0;for(;e[r]===`
51
- `||e[r]==="\r";)r+=1;let t=e.slice(r);if(t==="")return null;let n=yc(t);if(n==="json"){let s=t.indexOf(`
52
- `);return s<0?null:{frame:t.slice(0,s),dialect:n,rest:t.slice(s+1)}}let o=t.indexOf(`
49
+ `;Rv(e,`${r}${n}${jv(t)}`,{encoding:"utf8",mode:384})}catch{}}function $v(e){try{return zi(e,"utf8")}catch{return""}}import{join as Gv}from"node:path";var Nv=[".red","redskilled"],Wr=448;function Rr(e){return Gv(e,...Nv)}import{randomUUID as R0}from"node:crypto";import{spawn as c1}from"node:child_process";import{mkdir as u1}from"node:fs/promises";import{dirname as p1}from"node:path";import{createHash as Uv}from"node:crypto";import{constants as vd}from"node:fs";import{mkdir as Bg,open as qv,readFile as Kv,rm as $g,stat as Vv}from"node:fs/promises";import{createConnection as zv}from"node:net";import{tmpdir as Jv}from"node:os";import{dirname as Gg,join as hs}from"node:path";var Wv="toon";function Dg(e){return e.trimStart().startsWith("{")?"json":"toon"}function _d(e){let t=0;for(;e[t]===`
50
+ `||e[t]==="\r";)t+=1;let r=e.slice(t);if(r==="")return null;let n=Dg(r);if(n==="json"){let s=r.indexOf(`
51
+ `);return s<0?null:{frame:r.slice(0,s),dialect:n,rest:r.slice(s+1)}}let o=r.indexOf(`
53
52
 
54
- `);return o<0?null:{frame:t.slice(0,o+1),dialect:n,rest:t.slice(o+2)}}function mi(e){let r=yc(e)==="json"?ui:fc,t=r===ui?fc:ui;try{return r(e)}catch(n){try{return t(e)}catch{throw n}}}function ui(e){return JSON.parse(e)}function fc(e){return me(e)}function gi(e,r){if(r==="toon"){let t=cb(e);if(t!==null)return t.endsWith(`
55
- `)?`${t}
56
- `:`${t}
53
+ `);return o<0?null:{frame:r.slice(0,o+1),dialect:n,rest:r.slice(o+2)}}function xd(e){let t=Dg(e)==="json"?Rd:Cg,r=t===Rd?Cg:Rd;try{return t(e)}catch(n){try{return r(e)}catch{throw n}}}function Rd(e){return JSON.parse(e)}function Cg(e){return Ct(e)}function Ed(e,t){if(t==="toon"){let r=Hv(e);if(r!==null)return r.endsWith(`
54
+ `)?`${r}
55
+ `:`${r}
57
56
 
58
57
  `}return`${JSON.stringify(e)}
59
- `}function cb(e){try{let r=JSON.stringify(e);if(r===void 0)return null;let t=X(JSON.parse(r));return t.trim()===""?null:t}catch{return null}}function kc(e,r){return!hc(e)||!hc(r)||r.ok!==!1?!1:typeof e.id=="string"&&typeof r.id=="string"&&r.id!==e.id}function hc(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var bc=new Set;function _c(e){return bc.has(e)?"json":db}function Rc(e){bc.add(e)}var yb=108;async function _o(e,r,t="resident server"){let n=e.wire,o=n??_c(e.socketPath),s=await wc(e,r,t,o);return n||o==="json"||!kc(r,s)?s:(Rc(e.socketPath),await wc(e,r,t,"json"))}async function wc(e,r,t,n){let o=e.timeoutMs??1e3;return await new Promise((s,i)=>{let a=fb(e.socketPath),l=!1,d="",c=setTimeout(()=>{u(()=>i(new Error(`${t} timed out`))),a.destroy()},o);function u(m){l||(l=!0,clearTimeout(c),m())}a.on("connect",()=>{a.write(gi(r,n))}),a.on("data",m=>{d+=m.toString("utf8");let f=pi(d);f&&(d=f.rest,u(()=>{try{s(mi(f.frame))}catch(h){i(h)}}),a.end())}),a.on("error",m=>u(()=>i(m))),a.on("close",()=>{l||u(()=>i(new Error(`${t} closed without response`)))})})}function Tc(e,r,t){let n="";e.setEncoding("utf8"),e.on("error",()=>{}),e.on("data",o=>{n+=o;let s=pi(n);if(!s)return;n=s.rest,e.pause();let i=a=>{if(!(e.destroyed||!e.writable))try{e.write(gi(a,s.dialect))}catch{}};(async()=>{let a;try{a=mi(s.frame),await r(a,i)}catch(l){t(l,a,i)}finally{e.end()}})()})}async function kb(e){await Ec(Sc(e),{recursive:!0,mode:448});try{return await pb(e,fi.O_CREAT|fi.O_EXCL|fi.O_RDWR)}catch(r){if(r.code!=="EEXIST")throw r;return null}}var bb=6e4,xc="resident-spawn-lock v1",_b=3;async function Pc(e,r={}){let t=r.maxAgeMs??bb,n=r.now??Date.now,o=r.pid??process.pid,s=r.isPidAlive??re;await Ec(Sc(e),{recursive:!0,mode:448});let i=[];for(let a=0;;a+=1){let l=await kb(e);if(l)return await l.writeFile(`${xc} pid=${o} taken=${new Date(n()).toISOString()}
60
- `).catch(()=>{}),{acquired:!0,lockPath:e,handle:l,reaped:i};let d=await wb(e),c=await vb(e,d,n());if(a>=_b||c==null)return{acquired:!1,lockPath:e,holder:d,ageMs:c};let u=Rb(d,c,t,s);if(u==null)return{acquired:!1,lockPath:e,holder:d,ageMs:c};let m={lockPath:e,reason:u,holder:d,ageMs:c};await vc(e,{force:!0}),i.push(m),r.onReap?.(m)}}async function Oc(e){await e.handle.close().catch(()=>{}),await vc(e.lockPath,{force:!0})}function Rb(e,r,t,n){return e==null?r>t?"unattributed":null:n(e.pid)?r>t?"aged-out":null:"holder-dead"}function Ac(e){let r=e.ageMs==null?"of unknown age":`taken ${Math.round(e.ageMs/1e3)}s ago`,t=e.holder==null?"an owner it does not name":`pid ${e.holder.pid} (at ${e.holder.takenAt})`;return`no spawn was attempted: the spawn lock ${JSON.stringify(e.lockPath)} is held by ${t}, ${r}. If that process is gone, remove the file to clear it`}async function wb(e){try{return Eb(await mb(e,"utf8"))}catch{return null}}function Eb(e){let r=e.split(`
61
- `,1)[0]?.trim()??"";if(!r.startsWith(xc))return null;let t=Number(/\bpid=(\d+)\b/.exec(r)?.[1]??""),n=/\btaken=(\S+)/.exec(r)?.[1]??"";return!Number.isInteger(t)||t<=0||!Number.isFinite(Date.parse(n))?null:{pid:t,takenAt:n}}async function vb(e,r,t){let n=r==null?Number.NaN:Date.parse(r.takenAt);if(Number.isFinite(n))return Math.max(0,t-n);try{return Math.max(0,t-(await gb(e)).mtimeMs)}catch{return null}}function re(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch(r){return r.code==="EPERM"}}var Sb="/tmp";function Ro(e){let r=e.env??process.env,t=ub("sha256").update(e.key).digest("hex").slice(0,20),n=l=>Zt(l,e.socketFileName).length<yb,o=r.XDG_RUNTIME_DIR;if(o){let l=Zt(o,"red-skills",t);if(n(l))return l}let s=e.uid??(typeof process.getuid=="function"?process.getuid():"nouid"),i=Zt(`red-skills-${s}`,t),a=Zt(hb(),i);return n(a)||process.platform==="win32"?a:Zt(Sb,i)}tr();import{homedir as Jb}from"node:os";import{join as xi}from"node:path";import{spawnSync as zb}from"node:child_process";import{createHash as Qb}from"node:crypto";import{existsSync as Yb,readdirSync as Xb}from"node:fs";import{mkdir as Nc,readFile as Zb,rename as e_,writeFile as r_}from"node:fs/promises";import{dirname as t_}from"node:path";var Ir="@reddb-io/red-skills",$b="https://registry.npmjs.org",Cb="canary",Gr=class extends Error{kind;cause;constructor(r,t,n){super(t),this.name="BundleFetchError",this.kind=r,this.cause=n}},Nb=/^\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.+-]+)?$/;function wi(e){return typeof e=="string"&&Nb.test(e.trim())}function Gc(e){return`${e}-.bundle.min.mjs`}var Mb=".unversioned";function Fb(e,r,t="stable"){if(t==="canary")return`${e}-canary.bundle.min.mjs`;if(!wi(r))throw new Gr("invalid-version",`refusing to key the ${e} bundle cache on ${JSON.stringify(r??"")}: it would mint ${Gc(e)}, a name no resolver prefers and one whose mere existence satisfies the cache-first test forever (#3153)`);return`${e}-${r.trim()}.bundle.min.mjs`}function So(e){let{plugin:r,version:t,cacheDir:n,channel:o}=e;return tn(n,Fb(r,t,o))}function Wb(e){return e==="dev"?["rsp","redskilled"]:[]}function Ub(e){return`${e}.bundle.min.mjs`}function Bb(e){return tn("dist",Ub(e))}function Hb(e,r="stable"){return`${Ir}@${r==="canary"?Cb:e}`}function Ei(e=Ir){return`${$b}/${e.replace("/","%2F")}`}async function vi(e,r){let{plugin:t,version:n,cacheDir:o,channel:s="stable"}=r,i=So({plugin:t,version:n,cacheDir:o,channel:s}),a=Wb(t),l=a.map(m=>So({plugin:m,version:n,cacheDir:o,channel:s}));if(s!=="canary"&&await e.exists(i)&&await Vb(e,l))return i;let d=Hb(n,s),c=tn(o,`.staging-${t}-${s==="canary"?"canary":n}`),u;try{u=await e.materialize(d,c)}catch(m){throw Cc(m,d)}for(let m of[t,...a]){let f=Bb(m),h=tn(u,f);if(!await e.exists(h))throw new Gr("bundle-missing",`npm package ${d} has no ${f}`);let v=m===t?i:So({plugin:m,version:n,cacheDir:o,channel:s});await e.writeFile(v,await e.readFile(h))}return await qb(e,o,[t,...a]),i}async function qb(e,r,t){if(e.rename)for(let n of t){let o=tn(r,Gc(n));try{if(!await e.exists(o))continue;await e.rename(o,`${o}${Mb}`)}catch{}}}async function Vb(e,r){for(let t of r)if(!await e.exists(t))return!1;return!0}async function Ic(e,r,t=Ir){let n;try{n=await e.fetchText(Ei(t))}catch(s){throw Cc(s,t)}let o=Si(n);return{sameMajor:Kb(o,r),newest:Ti(o)}}function Si(e){let r;try{r=JSON.parse(e)}catch{return[]}if(typeof r!="object"||r===null)return[];let t=r.versions;return typeof t!="object"||t===null?[]:Object.keys(t)}function Kb(e,r){let t=Ri(r);if(t===null)return null;let n=null;for(let o of e)Ri(o)===t&&(n===null||$c(o,n)>0)&&(n=o);return n}function Ti(e){let r=null;for(let t of e){let n=String(t).trim();Ri(n)===null||/^\d+\.\d+\.\d+[-+]/.test(n)||(r===null||$c(n,r)>0)&&(r=n)}return r}function Ri(e){let r=/^(\d+)\.(\d+)\.(\d+)/.exec(String(e).trim());return r?Number(r[1]):null}function $c(e,r){let t=/^(\d+)\.(\d+)\.(\d+)/.exec(e.trim()),n=/^(\d+)\.(\d+)\.(\d+)/.exec(r.trim());return!t||!n?0:Number(t[1])-Number(n[1])||Number(t[2])-Number(n[2])||Number(t[3])-Number(n[3])}function Cc(e,r){let t=e instanceof Error?e.message:String(e);return/ENOENT|command not found|spawn npm/i.test(t)?new Gr("npm-unavailable",`npm is unavailable while resolving ${r}: ${t}`,e):/\b404\b|E404|not found|no matching version|notarget/i.test(t)?new Gr("package-missing",`npm could not resolve ${r}: ${t}`,e):new Gr("network",`failed to resolve ${r}: ${t}`,e)}function tn(e,r){return e.endsWith("/")?`${e}${r}`:`${e}/${r}`}tr();var Mc={async materialize(e,r){await Nc(r,{recursive:!0});let t=zb("npm",["install",e,"--prefix",r,"--no-save","--no-audit","--no-fund","--ignore-scripts","--loglevel=error"],{stdio:["ignore","ignore","pipe"],encoding:"utf8"});if(t.error)throw t.error;if(t.status!==0)throw new Error(`npm install ${e} -> ${t.status}: ${(t.stderr||"").trim()}`);return xi(r,"node_modules",...Ir.split("/"))},async readFile(e){return new Uint8Array(await Zb(e))},async writeFile(e,r){await Nc(t_(e),{recursive:!0}),await r_(e,r)},async exists(e){return Yb(e)},sha256(e){return Qb("sha256").update(e).digest("hex")},async fetchText(e){let r=await fetch(e,{redirect:"follow"});if(!r.ok)throw new Error(`GET ${e} -> ${r.status}`);return await r.text()},async rename(e,r){await e_(e,r)}},n_="redskilled";function o_(e=process.env){if(e.RED_SKILLS_CACHE_DIR)return e.RED_SKILLS_CACHE_DIR;let r=e.XDG_CACHE_HOME||xi(e.HOME||Jb(),".cache");return xi(r,"red-skills","bundles")}var s_=/^([a-z0-9-]+)-(\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.+-]+)?)\.bundle\.min\.mjs$/;async function i_(e,r){if(wi(e.version))return e.version.trim();let t=e.listCacheDir??d_,n=a_(t(r),"dev");if(n)return n;try{let s=await(e.bundleIO??Mc).fetchText(Ei());return Ti(Si(s))}catch{return null}}function a_(e,r){let t=null;for(let n of e){let o=s_.exec(n);if(!o||o[1]!==r)continue;let s=o[2];(t===null||l_(s,t)>0)&&(t=s)}return t}function l_(e,r){let t=/^(\d+)\.(\d+)\.(\d+)/.exec(e),n=/^(\d+)\.(\d+)\.(\d+)/.exec(r);return Number(t[1])-Number(n[1])||Number(t[2])-Number(n[2])||Number(t[3])-Number(n[3])}function d_(e){try{return Xb(e)}catch{return[]}}async function c_(e={},r={},t={}){let n=ur(e,r);if(He(n))return n;let o=t.env??r.env??process.env,s=o_(o),i=await i_(t,s);if(i===null)return n;try{await vi(t.bundleIO??Mc,{plugin:n_,version:i,cacheDir:s})}catch{return n}return ur(e,r)}async function Fc(e={},r={},t={}){let n=await c_(e,r,t);if(He(n))return n;let{RedskilledDaemonEntryError:o}=await Promise.resolve().then(()=>(tr(),Lc));throw new o(n)}var dt=3e5,Wc=1e4,Uc=6e4,Bc=15e3,Pi=3e4,Hc=Pi*2,qc=6e4,nn=16;function Vc(e,r={}){if(e.event!=="worker-death"&&e.event!=="worker-budget-kill")return null;let t=e.event==="worker-budget-kill",n=!t&&r.refusal!=null,o=r.refusal??e.detail??`redskilled observed exit code=${e.exit_code??"null"} signal=${e.signal??"null"}`,s=r.startedAt==null?null:Date.parse(r.startedAt),i=Date.parse(e.ts),a=s!=null&&Number.isFinite(s)&&Number.isFinite(i)?Math.max(0,i-s)/1e3:void 0;return{version:1,ts:e.ts,kind:"worker",id:e.worker_id,pid:e.pid,last_seen:e.ts,last_phase:n?"boot-refused":"unreported",sender_class:t?"teardown":n?"boot-refused":"unknown",confidence:t||n?"high":"none",signal:e.signal,host_boot_changed:!1,evidence:t||n?[o]:[],checked:n?["Worker log tail"]:[`redskilled host event: ${o}`],project_label:e.project_label,...a===void 0?{}:{uptime_s:a},detail:r.refusal??e.detail}}function Oi(e){let r=e?.match(/\bsession-error:\s*(.+)$/)?.[1]?.trim();return r==null||r===""?null:r}var Kc="no tracker transport was given to this daemon, so no queue depth was ever asked for";import{randomUUID as Xg}from"node:crypto";import{mkdir as _T,rm as RT}from"node:fs/promises";import{dirname as wT}from"node:path";import{randomUUID as Jc}from"node:crypto";import{rm as u_}from"node:fs/promises";import{connect as p_,createServer as m_}from"node:net";var qe=class extends Error{constructor(t,n){super(`a redskilled daemon already owns ${JSON.stringify(t)}`);this.socketPath=t;this.lease=n;this.name="RedskilledAlreadyRunningError"}};async function Ai(e,r=250){return await new Promise(t=>{let n=p_(e),o=!1,s=a=>{o||(o=!0,clearTimeout(i),n.destroy(),t(a))},i=setTimeout(()=>s("unknown"),r);i.unref?.(),n.once("connect",()=>s("owned")),n.once("error",a=>{s(a.code==="ECONNREFUSED"||a.code==="ENOENT"?"unowned":"unknown")})})}async function zc(e,r){for(let t=0;t<2;t++){let n=m_();try{return await new Promise((o,s)=>{n.once("error",s),n.listen(e,()=>{n.off("error",s),o()})}),n}catch(o){if(n.close(),o.code!=="EADDRINUSE")throw o;if(await Ai(e)!=="unowned")throw new qe(e);if(await r?.())throw new qe(e);await u_(e,{force:!0})}}throw new qe(e)}async function Ve(e,r=250){try{return(await _o({socketPath:e,timeoutMs:r},{id:Jc(),op:"ping"},"redskilled daemon")).ok===!0}catch{return!1}}function Qc(e,r){Tc(e,(t,n)=>r(t,n),(t,n,o)=>{o({id:n?.id??Jc(),ok:!1,error:t instanceof Error?t.message:String(t)})})}import{availableParallelism as Zc,totalmem as f_}from"node:os";function on(e){if(e.applied_budget!=null)return e.applied_budget;let r=e.budget??{};return r.memory_max==null&&r.memory_high==null&&e.memory_ceiling!=null?{...r,memory_max:e.memory_ceiling}:r}function Yc(e,r={}){let t=0,n=0,o=0,s=[],i=[];for(let d of e){let c=on(d),u=!1;for(let[m,f]of[[c.memory_high,h=>t+=h],[c.memory_max,h=>n+=h]]){if(m==null)continue;let h=ct(m);h==null?u=!0:f(h)}c.cpu_weight!=null&&(o+=c.cpu_weight),u&&s.push(d.worker_id),d.isolated||i.push(d.worker_id)}let a=r.hostCeilingBytes??null,l=a==null?0:Math.max(0,n-a);return{version:1,worker_count:e.length,memory_high_bytes:t,memory_max_bytes:n,cpu_weight_total:o,unaccounted_workers:s.sort(),unisolated_workers:i.sort(),memory_ceiling_bytes:a,over_committed_bytes:l,over_commitment_reason:l===0?null:g_(e.length,n,a,l)}}function g_(e,r,t,n){return`this host's ${e} Worker(s) carry ${r} bytes of applied MemoryMax against a host ceiling of ${t} bytes \u2014 ${n} bytes over. A per-Worker MemoryMax is a wall rather than a reservation, so the host stays safe only while the Workers do not all peak together; the ceiling is not enforced host-wide.`}function ct(e){let r=/^\s*(\d+(?:\.\d+)?)\s*([KMGT]?)(?:B)?\s*$/i.exec(e);if(!r)return null;let t={"":1,k:1024,m:1024**2,g:1024**3,t:1024**4}[r[2].toLowerCase()];return Math.round(Number(r[1])*t)}function Xc(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let r=e;return r.version===1&&Number.isInteger(r.worker_count)&&typeof r.memory_high_bytes=="number"&&typeof r.memory_max_bytes=="number"&&typeof r.cpu_weight_total=="number"&&Array.isArray(r.unaccounted_workers)&&Array.isArray(r.unisolated_workers)}var eu="REDSKILLED_MEMORY_CEILING",ji="REDSKILLED_WORKER_CEILING",ou="REDSKILLED_VALIDATION_CEILING",ru="REDSKILLED_INTERACTIVE_RESERVATION",sn=1,tu=.7,h_=2*1024**3,y_=2;function su(e){let r=e?.memory_max??e?.memory_high;if(r!=null)return ct(r)}function xo(e){let r=0,t=[];for(let n of e){let o=su(n.budget);o===null?t.push(n.worker_id):o!==void 0&&(r+=o)}return{worker_count:e.length,memory_bytes:r,unaccounted_workers:t.sort()}}function iu(e){let{ceiling:r}=e,t=xo(e.workers),n=su(e.budget),o=n===void 0?null:n,s=t.memory_bytes+(n??0),i=t.worker_count+1,a=Math.max(0,r.interactive_reservation??sn),l=e.projectLabel!=null&&e.projectLabel!==""?` for project ${JSON.stringify(e.projectLabel)}`:"",d=`the host is already holding ${t.memory_bytes} bytes across ${t.worker_count} Worker(s)`,c=(f,h)=>({version:1,admitted:!1,verdict:f,reason:h,ceiling:r,consumption:t,requested_memory_bytes:o,projected_worker_count:i,projected_memory_bytes:s}),u=r.worker_count==null?0:i-r.worker_count;if(u>0){if(e.reservation!=="interactive")return c("refused-over-worker-ceiling",`redskilled refused this Worker${l}: it would be Worker ${i} past a host ceiling of ${r.worker_count} Worker(s); ${a} extra slot(s) are reserved for interactive dispatches, and ${d}`);if(u>a)return c("refused-over-interactive-reservation",`redskilled refused this interactive Worker${l}: reserved slot ${u}/${a} is outside the bounded interactive reservation above the host ceiling of ${r.worker_count} Worker(s), and ${d}`)}if(r.memory_bytes!=null&&n===null)return c("refused-unaccountable-budget",`redskilled refused this Worker${l}: its declared memory budget cannot be reduced to bytes, so it cannot be proven to fit under the host ceiling of ${r.memory_bytes} bytes, and ${d}`);if(r.memory_bytes!=null&&s>r.memory_bytes)return c("refused-over-memory-ceiling",`redskilled refused this Worker${l}: it would take the host to ${s} bytes of declared Worker memory, past the host ceiling of ${r.memory_bytes} bytes, and ${d}`);let m=e.reservation==="interactive"&&u>0;return{version:1,admitted:!0,verdict:m?"admitted-interactive-reservation":"admitted",reason:m?`redskilled admitted this interactive Worker${l} into reserved interactive slot ${u}/${a} above the host ceiling of ${r.worker_count} Worker(s): ${s} bytes of declared Worker memory against a host ceiling of ${r.memory_bytes??"unbounded"} bytes, and ${d}`:`redskilled admitted this Worker${l}: ${s} bytes of declared Worker memory against a host ceiling of ${r.memory_bytes??"unbounded"} bytes, and ${d}`,ceiling:r,consumption:t,requested_memory_bytes:o,projected_worker_count:i,projected_memory_bytes:s}}function au(e){let r=e.budget?.memory_max??e.budget?.memory_high;if(r!=null)return{memory_max:r,reason:`the client declared this Worker's memory ceiling (${r}), so the host derived none`};if(e.ceiling.memory_bytes==null)return{memory_max:null,reason:"this host admits Workers against no memory ceiling, so there is no accounting to derive a per-Worker ceiling from; the daemon's RSS sampling floor is the only remaining ceiling"};let t=xo(e.workers),n=e.ceiling.memory_bytes-t.memory_bytes,o=e.ceiling.worker_count,s=o==null?n:Math.floor(e.ceiling.memory_bytes/o),i=Math.min(n,s);if(i<=0)return{memory_max:null,reason:`this host's memory ceiling of ${e.ceiling.memory_bytes} bytes is already fully committed to ${t.worker_count} Worker(s), so no positive per-Worker ceiling can be derived; the daemon's RSS sampling floor is the only remaining ceiling`};let a=o==null?`the headroom under this host's memory ceiling of ${e.ceiling.memory_bytes} bytes; this host declares no Worker slot count (${ji} is unset), so this ceiling is a per-Worker wall and not memory the host sets aside \u2014 N Workers may carry N such walls, and the host ceiling is not enforced host-wide. Declare a slot count to make it divide into shares that sum to it`:`this host's memory ceiling of ${e.ceiling.memory_bytes} bytes shared across its ${o} Worker slot(s)`;return{memory_max:String(i),reason:`derived from ${a} (ceiling source: ${e.ceiling.source})`}}function Po(e=process.env,r=f_(),t={}){let n=Di(t.flags?.memoryCeiling,e[eu],t.config?.memoryCeiling),o=Di(t.flags?.workerCeiling,e[ji],t.config?.workerCeiling),s=Di(t.flags?.validationCeiling,e[ou],t.config?.validationCeiling),i=n?.value??"",a=o?.value??"",l=(e[ru]??"").trim(),d=lu(a),c=l===""?sn:__(l),u=o?.source??"derived-default";if(a!==""&&d===null&&!k_(a)&&(To(`redskilled: ${Li(o)} ${ji}=${JSON.stringify(a)} is not a positive integer; this host admits an unbounded number of Workers instead.`),u="derived-default"),i!==""){let m=b_(i,r);if(m!==void 0)return nu({memory_bytes:m,worker_count:d,interactive_reservation:c??sn,source:"declared",memory_source:n.source,worker_source:u},s,t.availableParallelism??Zc());To(`redskilled: ${Li(n)} ${eu}=${JSON.stringify(i)} is not a memory ceiling this host can read; using ${tu*100}% of host memory instead. Accepted forms: systemd bytes (\`8G\`), a percentage (\`50%\`), or \`infinity\`.`)}return l!==""&&c===void 0&&To(`redskilled: ${ru}=${JSON.stringify(l)} is not a non-negative integer; using the default reservation of ${sn} Worker(s) instead.`),nu({memory_bytes:Math.floor(r*tu),worker_count:d,interactive_reservation:c??sn,memory_source:"derived-default",worker_source:u,source:"host-fraction"},s,t.availableParallelism??Zc())}function nu(e,r,t){if(r!==void 0){let i=lu(r.value);if(i!==null)return{...e,validation_count:i,validation_source:r.source};To(`redskilled: ${Li(r)} ${ou}=${JSON.stringify(r.value)} is not a positive integer; deriving the validation ceiling from host CPU, memory, and Worker capacity instead.`)}let n=Math.max(1,Math.floor(Math.max(1,t)/y_)),o=e.memory_bytes==null?Number.POSITIVE_INFINITY:Math.max(1,Math.floor(e.memory_bytes/h_)),s=e.worker_count??Number.POSITIVE_INFINITY;return{...e,validation_count:Math.max(1,Math.min(n,o,s)),validation_source:"derived-default"}}function Di(e,r,t){if(e?.trim())return{value:e.trim(),source:"flag"};if(r?.trim())return{value:r.trim(),source:"environment"};if(t?.trim())return{value:t.trim(),source:"home-config"}}function Li(e){return e.source==="flag"?"serve flag":e.source==="environment"?"environment":e.source==="home-config"?"home config":"derived default"}function k_(e){return["infinity","none","off","unbounded"].includes(e.trim().toLowerCase())}var To=e=>process.stderr.write(`${e}
62
- `);function b_(e,r){let t=e.toLowerCase();if(["infinity","none","off","unbounded"].includes(t))return null;let n=/^(\d+(?:\.\d+)?)\s*%$/.exec(e);return n?Math.floor(r*(Number(n[1])/100)):ct(e)??void 0}function lu(e){if(e===""||["infinity","none","off","unbounded"].includes(e.toLowerCase()))return null;let r=Number(e);return Number.isSafeInteger(r)&&r>0?r:null}function __(e){let r=Number(e);return Number.isSafeInteger(r)&&r>=0?r:void 0}import{appendFile as R_,mkdir as w_,open as E_,readFile as v_,stat as S_,truncate as du}from"node:fs/promises";import{dirname as T_}from"node:path";var x_=["worker-birth","worker-activity","worker-drift","worker-heal","worker-death","worker-budget-kill"],P_=["demand-refusal","daemon-stop"],cu="redskilled.log.toonl";function Oo(e){let r=e.worker.budget??{},t="kind"in e?e.kind:e.event;return{version:1,ts:e.ts,kind:t,event:t,worker_id:e.worker.worker_id,project_label:e.worker.project_label,pid:e.worker.pid,workspace_path:e.worker.workspace_path,fork_sha:e.worker.fork_sha??null,log_path:e.worker.log_path??null,isolated:e.worker.isolated,unit:e.worker.unit??null,memory_high:r.memory_high??null,memory_max:r.memory_max??null,cpu_weight:r.cpu_weight??null,admission_verdict:"admissionVerdict"in e?e.admissionVerdict??null:null,phase:"phase"in e?e.phase??null:null,step:"step"in e?e.step??null:null,base_head_sha:"baseHeadSha"in e?e.baseHeadSha??null:null,base_commits_ahead:"baseCommitsAhead"in e?e.baseCommitsAhead??null:null,heal_kind:"healKind"in e?e.healKind??null:null,detail:e.detail??null,exit_code:e.exitCode??null,signal:e.signal??null,reason:"reason"in e?e.reason??null:null}}var O_="daemon:";function A_(e){return{version:1,ts:e.ts,kind:"daemon-stop",event:"daemon-stop",worker_id:`${O_}${e.pid}`,project_label:"",pid:e.pid,workspace_path:e.socketPath,fork_sha:null,log_path:null,isolated:!1,unit:null,memory_high:null,memory_max:null,cpu_weight:null,admission_verdict:null,phase:null,step:null,base_head_sha:null,base_commits_ahead:null,heal_kind:null,detail:e.detail,exit_code:null,signal:e.signal??null,reason:e.reason}}function D_(e){return{version:1,ts:e.ts,kind:"demand-refusal",event:"demand-refusal",worker_id:`demand:${e.projectLabel}`,project_label:e.projectLabel,pid:0,workspace_path:"",fork_sha:null,log_path:null,isolated:!1,unit:null,memory_high:null,memory_max:null,cpu_weight:null,admission_verdict:null,phase:null,step:null,base_head_sha:null,base_commits_ahead:null,heal_kind:null,detail:e.detail,exit_code:null,signal:null,reason:null}}function uu(e){let r=ye({trailer:!1}),t=Promise.resolve();async function n(o){let s=t.then(async()=>{await w_(T_(e),{recursive:!0,mode:448}),await j_(e),await R_(e,r.push($_(o)),{encoding:"utf8",mode:384})});return t=s.catch(()=>{}),await s,o}return{path:e,record:o=>n(Oo(o)),recordWorker:o=>n(Oo(o)),recordDemandRefusal:o=>n(D_(o)),recordDaemonStop:o=>n(A_(o)),read:()=>L_(e),flush:async()=>{await t}}}async function j_(e){let r;try{r=(await S_(e)).size}catch(o){if(o.code==="ENOENT")return;throw o}if(r===0)return;let t=64*1024,n=await E_(e,"r");try{let o=Buffer.alloc(1);if(await n.read(o,0,1,r-1),o[0]===10)return;for(let s=r;s>0;s-=t){let i=Math.min(t,s),a=Buffer.alloc(i);await n.read(a,0,i,s-i);let l=a.lastIndexOf(10);if(l>=0){await du(e,s-i+l+1);return}}await du(e,0)}finally{await n.close()}}async function L_(e){let r;try{r=await v_(e,"utf8")}catch(t){if(t.code==="ENOENT")return[];throw t}return G_(r)}function G_(e){let r=e.split(`
63
- `);return r.pop(),r.length===0?[]:We(`${r.join(`
58
+ `}function Hv(e){try{let t=JSON.stringify(e);if(t===void 0)return null;let r=nt(JSON.parse(t));return r.trim()===""?null:r}catch{return null}}function Fg(e,t){return!Og(e)||!Og(t)||t.ok!==!1?!1:typeof e.id=="string"&&typeof t.id=="string"&&t.id!==e.id}function Og(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Ig=new Set;function Mg(e){return Ig.has(e)?"json":Wv}function Lg(e){Ig.add(e)}var Yv=108;async function Ji(e,t,r="resident server"){let n=e.wire,o=n??Mg(e.socketPath),s=await jg(e,t,r,o);return n||o==="json"||!Fg(t,s)?s:(Lg(e.socketPath),await jg(e,t,r,"json"))}async function jg(e,t,r,n){let o=e.timeoutMs??1e3;return await new Promise((s,i)=>{let a=zv(e.socketPath),l=!1,d="",c=setTimeout(()=>{u(()=>i(new Error(`${r} timed out`))),a.destroy()},o);function u(p){l||(l=!0,clearTimeout(c),p())}a.on("connect",()=>{a.write(Ed(t,n))}),a.on("data",p=>{d+=p.toString("utf8");let g=_d(d);g&&(d=g.rest,u(()=>{try{s(xd(g.frame))}catch(f){i(f)}}),a.end())}),a.on("error",p=>u(()=>i(p))),a.on("close",()=>{l||u(()=>i(new Error(`${r} closed without response`)))})})}function Ng(e,t,r){let n="";e.setEncoding("utf8"),e.on("error",()=>{}),e.on("data",o=>{n+=o;let s=_d(n);if(!s)return;n=s.rest,e.pause();let i=a=>{if(!(e.destroyed||!e.writable))try{e.write(Ed(a,s.dialect))}catch{}};(async()=>{let a;try{a=xd(s.frame),await t(a,i)}catch(l){r(l,a,i)}finally{e.end()}})()})}async function Qv(e){await Bg(Gg(e),{recursive:!0,mode:448});try{return await qv(e,vd.O_CREAT|vd.O_EXCL|vd.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}var Xv=6e4,Wg="resident-spawn-lock v1",Zv=3;async function Hg(e,t={}){let r=t.maxAgeMs??Xv,n=t.now??Date.now,o=t.pid??process.pid,s=t.isPidAlive??lt;await Bg(Gg(e),{recursive:!0,mode:448});let i=[];for(let a=0;;a+=1){let l=await Qv(e);if(l)return await l.writeFile(`${Wg} pid=${o} taken=${new Date(n()).toISOString()}
59
+ `).catch(()=>{}),{acquired:!0,lockPath:e,handle:l,reaped:i};let d=await tS(e),c=await nS(e,d,n());if(a>=Zv||c==null)return{acquired:!1,lockPath:e,holder:d,ageMs:c};let u=eS(d,c,r,s);if(u==null)return{acquired:!1,lockPath:e,holder:d,ageMs:c};let p={lockPath:e,reason:u,holder:d,ageMs:c};await $g(e,{force:!0}),i.push(p),t.onReap?.(p)}}async function Ug(e){await e.handle.close().catch(()=>{}),await $g(e.lockPath,{force:!0})}function eS(e,t,r,n){return e==null?t>r?"unattributed":null:n(e.pid)?t>r?"aged-out":null:"holder-dead"}function qg(e){let t=e.ageMs==null?"of unknown age":`taken ${Math.round(e.ageMs/1e3)}s ago`,r=e.holder==null?"an owner it does not name":`pid ${e.holder.pid} (at ${e.holder.takenAt})`;return`no spawn was attempted: the spawn lock ${JSON.stringify(e.lockPath)} is held by ${r}, ${t}. If that process is gone, remove the file to clear it`}async function tS(e){try{return rS(await Kv(e,"utf8"))}catch{return null}}function rS(e){let t=e.split(`
60
+ `,1)[0]?.trim()??"";if(!t.startsWith(Wg))return null;let r=Number(/\bpid=(\d+)\b/.exec(t)?.[1]??""),n=/\btaken=(\S+)/.exec(t)?.[1]??"";return!Number.isInteger(r)||r<=0||!Number.isFinite(Date.parse(n))?null:{pid:r,takenAt:n}}async function nS(e,t,r){let n=t==null?Number.NaN:Date.parse(t.takenAt);if(Number.isFinite(n))return Math.max(0,r-n);try{return Math.max(0,r-(await Vv(e)).mtimeMs)}catch{return null}}function lt(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}var oS="/tmp";function Yi(e){let t=e.env??process.env,r=Uv("sha256").update(e.key).digest("hex").slice(0,20),n=l=>hs(l,e.socketFileName).length<Yv,o=t.XDG_RUNTIME_DIR;if(o){let l=hs(o,"red-skills",r);if(n(l))return l}let s=e.uid??(typeof process.getuid=="function"?process.getuid():"nouid"),i=hs(`red-skills-${s}`,r),a=hs(Jv(),i);return n(a)||process.platform==="win32"?a:hs(oS,i)}Hr();import{homedir as TS}from"node:os";import{join as jd}from"node:path";import{spawnSync as PS}from"node:child_process";import{createHash as AS}from"node:crypto";import{existsSync as CS,readdirSync as OS}from"node:fs";import{mkdir as Zg,readFile as DS,rename as FS,writeFile as IS}from"node:fs/promises";import{dirname as MS}from"node:path";var Mn="@reddb-io/red-skills",hS="https://registry.npmjs.org",mS="canary",In=class extends Error{kind;cause;constructor(t,r,n){super(r),this.name="BundleFetchError",this.kind=t,this.cause=n}},bS=/^\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.+-]+)?$/;function Dd(e){return typeof e=="string"&&bS.test(e.trim())}function Jg(e){return`${e}-.bundle.min.mjs`}var yS=".unversioned";function kS(e,t,r="stable"){if(r==="canary")return`${e}-canary.bundle.min.mjs`;if(!Dd(t))throw new In("invalid-version",`refusing to key the ${e} bundle cache on ${JSON.stringify(t??"")}: it would mint ${Jg(e)}, a name no resolver prefers and one whose mere existence satisfies the cache-first test forever (#3153)`);return`${e}-${t.trim()}.bundle.min.mjs`}function ea(e){let{plugin:t,version:r,cacheDir:n,channel:o}=e;return ys(n,kS(t,r,o))}function wS(e){return e==="dev"?["rsp","redskilled"]:[]}function RS(e){return`${e}.bundle.min.mjs`}function _S(e){return ys("dist",RS(e))}function xS(e,t="stable"){return`${Mn}@${t==="canary"?mS:e}`}function Fd(e=Mn){return`${hS}/${e.replace("/","%2F")}`}async function Id(e,t){let{plugin:r,version:n,cacheDir:o,channel:s="stable"}=t,i=ea({plugin:r,version:n,cacheDir:o,channel:s}),a=wS(r),l=a.map(p=>ea({plugin:p,version:n,cacheDir:o,channel:s}));if(s!=="canary"&&await e.exists(i)&&await vS(e,l))return i;let d=xS(n,s),c=ys(o,`.staging-${r}-${s==="canary"?"canary":n}`),u;try{u=await e.materialize(d,c)}catch(p){throw Xg(p,d)}for(let p of[r,...a]){let g=_S(p),f=ys(u,g);if(!await e.exists(f))throw new In("bundle-missing",`npm package ${d} has no ${g}`);let k=p===r?i:ea({plugin:p,version:n,cacheDir:o,channel:s});await e.writeFile(k,await e.readFile(f))}return await ES(e,o,[r,...a]),i}async function ES(e,t,r){if(e.rename)for(let n of r){let o=ys(t,Jg(n));try{if(!await e.exists(o))continue;await e.rename(o,`${o}${yS}`)}catch{}}}async function vS(e,t){for(let r of t)if(!await e.exists(r))return!1;return!0}async function Yg(e,t,r=Mn){let n;try{n=await e.fetchText(Fd(r))}catch(s){throw Xg(s,r)}let o=Md(n);return{sameMajor:SS(o,t),newest:Ld(o)}}function Md(e){let t;try{t=JSON.parse(e)}catch{return[]}if(typeof t!="object"||t===null)return[];let r=t.versions;return typeof r!="object"||r===null?[]:Object.keys(r)}function SS(e,t){let r=Od(t);if(r===null)return null;let n=null;for(let o of e)Od(o)===r&&(n===null||Qg(o,n)>0)&&(n=o);return n}function Ld(e){let t=null;for(let r of e){let n=String(r).trim();Od(n)===null||/^\d+\.\d+\.\d+[-+]/.test(n)||(t===null||Qg(n,t)>0)&&(t=n)}return t}function Od(e){let t=/^(\d+)\.(\d+)\.(\d+)/.exec(String(e).trim());return t?Number(t[1]):null}function Qg(e,t){let r=/^(\d+)\.(\d+)\.(\d+)/.exec(e.trim()),n=/^(\d+)\.(\d+)\.(\d+)/.exec(t.trim());return!r||!n?0:Number(r[1])-Number(n[1])||Number(r[2])-Number(n[2])||Number(r[3])-Number(n[3])}function Xg(e,t){let r=e instanceof Error?e.message:String(e);return/ENOENT|command not found|spawn npm/i.test(r)?new In("npm-unavailable",`npm is unavailable while resolving ${t}: ${r}`,e):/\b404\b|E404|not found|no matching version|notarget/i.test(r)?new In("package-missing",`npm could not resolve ${t}: ${r}`,e):new In("network",`failed to resolve ${t}: ${r}`,e)}function ys(e,t){return e.endsWith("/")?`${e}${t}`:`${e}/${t}`}Hr();var eh={async materialize(e,t){await Zg(t,{recursive:!0});let r=PS("npm",["install",e,"--prefix",t,"--no-save","--no-audit","--no-fund","--ignore-scripts","--loglevel=error"],{stdio:["ignore","ignore","pipe"],encoding:"utf8"});if(r.error)throw r.error;if(r.status!==0)throw new Error(`npm install ${e} -> ${r.status}: ${(r.stderr||"").trim()}`);return jd(t,"node_modules",...Mn.split("/"))},async readFile(e){return new Uint8Array(await DS(e))},async writeFile(e,t){await Zg(MS(e),{recursive:!0}),await IS(e,t)},async exists(e){return CS(e)},sha256(e){return AS("sha256").update(e).digest("hex")},async fetchText(e){let t=await fetch(e,{redirect:"follow"});if(!t.ok)throw new Error(`GET ${e} -> ${t.status}`);return await t.text()},async rename(e,t){await FS(e,t)}},LS="redskilled";function jS(e=process.env){if(e.RED_SKILLS_CACHE_DIR)return e.RED_SKILLS_CACHE_DIR;let t=e.XDG_CACHE_HOME||jd(e.HOME||TS(),".cache");return jd(t,"red-skills","bundles")}var BS=/^([a-z0-9-]+)-(\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.+-]+)?)\.bundle\.min\.mjs$/;async function $S(e,t){if(Dd(e.version))return e.version.trim();let r=e.listCacheDir??WS,n=GS(r(t),"dev");if(n)return n;try{let s=await(e.bundleIO??eh).fetchText(Fd());return Ld(Md(s))}catch{return null}}function GS(e,t){let r=null;for(let n of e){let o=BS.exec(n);if(!o||o[1]!==t)continue;let s=o[2];(r===null||NS(s,r)>0)&&(r=s)}return r}function NS(e,t){let r=/^(\d+)\.(\d+)\.(\d+)/.exec(e),n=/^(\d+)\.(\d+)\.(\d+)/.exec(t);return Number(r[1])-Number(n[1])||Number(r[2])-Number(n[2])||Number(r[3])-Number(n[3])}function WS(e){try{return OS(e)}catch{return[]}}async function HS(e={},t={},r={}){let n=rn(e,t);if(xr(n))return n;let o=r.env??t.env??process.env,s=jS(o),i=await $S(r,s);if(i===null)return n;try{await Id(r.bundleIO??eh,{plugin:LS,version:i,cacheDir:s})}catch{return n}return rn(e,t)}async function th(e={},t={},r={}){let n=await HS(e,t,r);if(xr(n))return n;let{RedskilledDaemonEntryError:o}=await Promise.resolve().then(()=>(Hr(),zg));throw new o(n)}var _o=3e5,rh=1e4,nh=6e4,oh=15e3,Bd=3e4,sh=Bd*2,ih=6e4,ks=16;function ah(e,t={}){if(e.event!=="worker-death"&&e.event!=="worker-budget-kill")return null;let r=e.event==="worker-budget-kill",n=!r&&t.refusal!=null,o=t.refusal??e.detail??`redskilled observed exit code=${e.exit_code??"null"} signal=${e.signal??"null"}`,s=t.startedAt==null?null:Date.parse(t.startedAt),i=Date.parse(e.ts),a=s!=null&&Number.isFinite(s)&&Number.isFinite(i)?Math.max(0,i-s)/1e3:void 0;return{version:1,ts:e.ts,kind:"worker",id:e.worker_id,pid:e.pid,last_seen:e.ts,last_phase:n?"boot-refused":"unreported",sender_class:r?"teardown":n?"boot-refused":"unknown",confidence:r||n?"high":"none",signal:e.signal,host_boot_changed:!1,evidence:r||n?[o]:[],checked:n?["Worker log tail"]:[`redskilled host event: ${o}`],project_label:e.project_label,...a===void 0?{}:{uptime_s:a},detail:t.refusal??e.detail}}function $d(e){let t=e?.match(/\bsession-error:\s*(.+)$/)?.[1]?.trim();return t==null||t===""?null:t}var lh="no tracker transport was given to this daemon, so no queue depth was ever asked for";import{randomUUID as b0}from"node:crypto";import{mkdir as s1,rm as i1}from"node:fs/promises";import{dirname as a1}from"node:path";import{randomUUID as dh}from"node:crypto";import{rm as US}from"node:fs/promises";import{connect as qS,createServer as KS}from"node:net";var Er=class extends Error{constructor(r,n){super(`a redskilled daemon already owns ${JSON.stringify(r)}`);this.socketPath=r;this.lease=n;this.name="RedskilledAlreadyRunningError"}};async function Gd(e,t=250){return await new Promise(r=>{let n=qS(e),o=!1,s=a=>{o||(o=!0,clearTimeout(i),n.destroy(),r(a))},i=setTimeout(()=>s("unknown"),t);i.unref?.(),n.once("connect",()=>s("owned")),n.once("error",a=>{s(a.code==="ECONNREFUSED"||a.code==="ENOENT"?"unowned":"unknown")})})}async function ch(e,t){for(let r=0;r<2;r++){let n=KS();try{return await new Promise((o,s)=>{n.once("error",s),n.listen(e,()=>{n.off("error",s),o()})}),n}catch(o){if(n.close(),o.code!=="EADDRINUSE")throw o;if(await Gd(e)!=="unowned")throw new Er(e);if(await t?.())throw new Er(e);await US(e,{force:!0})}}throw new Er(e)}async function vr(e,t=250){try{return(await Ji({socketPath:e,timeoutMs:t},{id:dh(),op:"ping"},"redskilled daemon")).ok===!0}catch{return!1}}function uh(e,t){Ng(e,(r,n)=>t(r,n),(r,n,o)=>{o({id:n?.id??dh(),ok:!1,error:r instanceof Error?r.message:String(r)})})}function kh(e){return{generated_at:e.now,hour:fh("hour",36e5,e),day:fh("day",864e5,e),history_48h:VS(e)}}function VS(e){let t=nn(e.now),r=t==null?null:Math.floor(t/36e5)*36e5,n=r==null?null:r-47*36e5,o=Array.from({length:48},(d,c)=>n==null?null:n+c*36e5),s=zS(e.observations,o,t),i=o.map((d,c)=>({hour:d==null?e.now:new Date(d).toISOString(),value:s[c]??null,absent_reason:s[c]==null?"no token samples span this hour":null})),a=e.outcomes.map(d=>nn(d.ts)).filter(d=>d!=null&&n!=null&&t!=null&&d>=n&&d<=t),l=o.map(d=>{let c=d==null||a.length===0?null:a.filter(u=>u>=d&&u<d+36e5).length;return{hour:d==null?e.now:new Date(d).toISOString(),value:c,absent_reason:c==null?"no Worker outcome history is available for the last 48 hours":null}});return{hours:48,from:n==null?e.now:new Date(n).toISOString(),to:e.now,tokens_per_hour:ph(i),tickets_per_hour:ph(l)}}function zS(e,t,r){if(r==null||t.some(i=>i==null))return t.map(()=>null);let n=new Map;for(let i of e){let a=nn(i.observed_at);if(a==null||i.tokens==null||!Number.isFinite(i.tokens))continue;let l=n.get(i.worker_id)??[];l.push({at:a,count:i.tokens}),n.set(i.worker_id,l)}let o=t.map(()=>0),s=t.map(()=>!1);for(let i of n.values()){i.sort((l,d)=>l.at-d.at);let a=t.map(()=>({tokens:0,duration:0}));for(let l=1;l<i.length;l+=1){let d=i[l-1],c=i[l];if(d==null||c==null||c.at<=d.at||c.count<d.count)continue;let u=c.at-d.at,p=c.count-d.count;for(let g=0;g<t.length;g+=1){let f=t[g],k=Math.min(f+36e5,r),b=Math.max(0,Math.min(c.at,k)-Math.max(d.at,f));b!==0&&(a[g].tokens+=p*(b/u),a[g].duration+=b)}}for(let l=0;l<a.length;l+=1){let d=a[l];d.duration<=0||(o[l]+=d.tokens/(d.duration/36e5),s[l]=!0)}}return o.map((i,a)=>s[a]?i:null)}function ph(e){let t=e.at(-1),r=e.at(-2),n=t?.value??null,o=e.filter(i=>i.value!=null).length,s=null;return n!=null&&r?.value!=null&&(s=n===r.value?"flat":n>r.value?"up":"down"),{buckets:e,current:{value:n,absent_reason:t?.absent_reason??"the current hourly bucket is unavailable",samples:o},trend:s,trend_absent_reason:s==null?"the current and previous hourly buckets are not both measured":null}}function Ln(e,t,r){let n=nn(r.now),o=r.retentionMs??1764e5,s=r.limit??8192,i=e.filter(a=>{let l=nn(t(a));return l==null?!1:n==null||n-l<=o});return i.length<=s?i:i.slice(i.length-s)}function fh(e,t,r){let n=nn(r.now),o=n==null?null:n-t,s=e==="hour"?"1h":"24h",i=r.observations.map(u=>({observation:u,at:nn(u.observed_at)})).filter(u=>u.at!=null&&mh(u.at,o,n)).sort((u,p)=>u.at-p.at),a=r.outcomes.map(u=>nn(u.ts)).filter(u=>u!=null&&mh(u,o,n)),l=gh(i,u=>u.tokens,"tokens",s),d=gh(i,u=>u.tools,"tools",s),c=[];return i.length===0?c.push("worker-vitals"):(l.samples===0&&c.push("worker-vitals.tokens"),d.samples===0&&c.push("worker-vitals.tools")),a.length===0&&c.push("worker-outcomes"),{window:e,window_ms:t,from:o==null?r.now:new Date(o).toISOString(),to:r.now,tokens_per_min:l,tools_per_min:d,issues_per_hour:JS(a.length,t,s),runner_share:hh("runner",i,u=>u.runner,s),model_share:hh("model",i,u=>u.model,s),unavailable:c}}function gh(e,t,r,n){let o=new Map,s=0;for(let d of e){let c=t(d.observation);if(c==null||!Number.isFinite(c))continue;s+=1;let u=o.get(d.observation.worker_id)??[];u.push({at:d.at,count:c}),o.set(d.observation.worker_id,u)}if(s===0)return{value:null,absent_reason:`no Worker published a ${r} count in the last ${n}`,samples:0};let i=0,a=null,l=null;for(let d of o.values()){if(d.length<2)continue;for(let p=1;p<d.length;p++){let g=d[p-1],f=d[p];g==null||f==null||(i+=Math.max(0,f.count-g.count))}let c=d[0],u=d[d.length-1];c!=null&&(a=a==null?c.at:Math.min(a,c.at)),u!=null&&(l=l==null?u.at:Math.max(l,u.at))}return a==null||l==null||l<=a?{value:null,absent_reason:`the last ${n} holds one sample of ${r} per Worker, and one instant spans no rate`,samples:s}:{value:i/((l-a)/6e4),absent_reason:null,samples:s}}function JS(e,t,r){return e===0?{value:null,absent_reason:`no Worker outcome was recorded in the last ${r}`,samples:0}:{value:e/(t/36e5),absent_reason:null,samples:e}}function hh(e,t,r,n){let o=new Map;for(let d of t){let c=r(d.observation);c!=null?o.set(d.observation.worker_id,c):o.has(d.observation.worker_id)||o.set(d.observation.worker_id,null)}let s=new Map,i=0,a=0;for(let d of o.values()){if(d==null){a+=1;continue}i+=1,s.set(d,(s.get(d)??0)+1)}let l=[...s.entries()].map(([d,c])=>({key:d,worker_count:c,share:c/i})).sort((d,c)=>c.worker_count-d.worker_count||d.key.localeCompare(c.key));return{dimension:e,attributed_workers:i,unattributed_workers:a,shares:l,absent_reason:l.length>0?null:o.size===0?`no Worker was observed in the last ${n}`:`no Worker published a ${e} in the last ${n}`}}function mh(e,t,r){return t==null||r==null?!0:e>=t&&e<=r}function nn(e){let t=Date.parse(e);return Number.isFinite(t)?t:null}function wh(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let t=e;return typeof t.generated_at=="string"&&yh(t.hour)&&yh(t.day)&&(t.history_48h===void 0||YS(t.history_48h))}function YS(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let t=e;return t.hours===48&&bh(t.tokens_per_hour)&&bh(t.tickets_per_hour)}function bh(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let t=e;return Array.isArray(t.buckets)&&t.buckets.length===48&&t.buckets.every(r=>{if(r===null||typeof r!="object"||Array.isArray(r))return!1;let n=r;return typeof n.hour=="string"&&(n.value===null||typeof n.value=="number")&&(n.absent_reason===null||typeof n.absent_reason=="string")})}function yh(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let t=e;return typeof t.window=="string"&&typeof t.window_ms=="number"&&Nd(t.tokens_per_min)&&Nd(t.tools_per_min)&&Nd(t.issues_per_hour)&&Array.isArray(t.unavailable)}function Nd(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let t=e;return(t.value===null||typeof t.value=="number")&&(t.absent_reason===null||typeof t.absent_reason=="string")&&Number.isInteger(t.samples)}function Rh(e,t,r,n){let o={worker_id:r.worker_id,observed_at:t.published_at,tokens:t.display.tokens,tools:t.display.tools,runner:t.display.runner,model:t.display.model};return{observations:Ln([...e,o],s=>s.observed_at,{now:n}),record:{kind:"worker-metrics",worker:r,ts:o.observed_at,tokens:o.tokens,tools:o.tools,runner:o.runner,model:o.model}}}function _h(e,t){return Ln(e.filter(r=>r.kind==="worker-metrics").map(r=>({worker_id:r.worker_id,observed_at:r.ts,tokens:r.tokens??null,tools:r.tools??null,runner:r.runner??null,model:r.model??null})),r=>r.observed_at,{now:t})}import{availableParallelism as vh,totalmem as XS}from"node:os";function ws(e){if(e.applied_budget!=null)return e.applied_budget;let t=e.budget??{};return t.memory_max==null&&t.memory_high==null&&e.memory_ceiling!=null?{...t,memory_max:e.memory_ceiling}:t}function xh(e,t={}){let r=0,n=0,o=0,s=[],i=[];for(let d of e){let c=ws(d),u=!1;for(let[p,g]of[[c.memory_high,f=>r+=f],[c.memory_max,f=>n+=f]]){if(p==null)continue;let f=xo(p);f==null?u=!0:g(f)}c.cpu_weight!=null&&(o+=c.cpu_weight),u&&s.push(d.worker_id),d.isolated||i.push(d.worker_id)}let a=t.hostCeilingBytes??null,l=a==null?0:Math.max(0,n-a);return{version:1,worker_count:e.length,memory_high_bytes:r,memory_max_bytes:n,cpu_weight_total:o,unaccounted_workers:s.sort(),unisolated_workers:i.sort(),memory_ceiling_bytes:a,over_committed_bytes:l,over_commitment_reason:l===0?null:QS(e.length,n,a,l)}}function QS(e,t,r,n){return`this host's ${e} Worker(s) carry ${t} bytes of applied MemoryMax against a host ceiling of ${r} bytes \u2014 ${n} bytes over. A per-Worker MemoryMax is a wall rather than a reservation, so the host stays safe only while the Workers do not all peak together; the ceiling is not enforced host-wide.`}function xo(e){let t=/^\s*(\d+(?:\.\d+)?)\s*([KMGT]?)(?:B)?\s*$/i.exec(e);if(!t)return null;let r={"":1,k:1024,m:1024**2,g:1024**3,t:1024**4}[t[2].toLowerCase()];return Math.round(Number(t[1])*r)}function Eh(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let t=e;return t.version===1&&Number.isInteger(t.worker_count)&&typeof t.memory_high_bytes=="number"&&typeof t.memory_max_bytes=="number"&&typeof t.cpu_weight_total=="number"&&Array.isArray(t.unaccounted_workers)&&Array.isArray(t.unisolated_workers)}var Sh="REDSKILLED_MEMORY_CEILING",Hd="REDSKILLED_WORKER_CEILING",Ch="REDSKILLED_VALIDATION_CEILING",Th="REDSKILLED_INTERACTIVE_RESERVATION",Rs=1,Ph=.7,ZS=2*1024**3,eT=2;function Oh(e){let t=e?.memory_max??e?.memory_high;if(t!=null)return xo(t)}function ra(e){let t=0,r=[];for(let n of e){let o=Oh(n.budget);o===null?r.push(n.worker_id):o!==void 0&&(t+=o)}return{worker_count:e.length,memory_bytes:t,unaccounted_workers:r.sort()}}function Dh(e){let{ceiling:t}=e,r=ra(e.workers),n=Oh(e.budget),o=n===void 0?null:n,s=r.memory_bytes+(n??0),i=r.worker_count+1,a=Math.max(0,t.interactive_reservation??Rs),l=e.projectLabel!=null&&e.projectLabel!==""?` for project ${JSON.stringify(e.projectLabel)}`:"",d=`the host is already holding ${r.memory_bytes} bytes across ${r.worker_count} Worker(s)`,c=(g,f)=>({version:1,admitted:!1,verdict:g,reason:f,ceiling:t,consumption:r,requested_memory_bytes:o,projected_worker_count:i,projected_memory_bytes:s}),u=t.worker_count==null?0:i-t.worker_count;if(u>0){if(e.reservation!=="interactive")return c("refused-over-worker-ceiling",`redskilled refused this Worker${l}: it would be Worker ${i} past a host ceiling of ${t.worker_count} Worker(s); ${a} extra slot(s) are reserved for interactive dispatches, and ${d}`);if(u>a)return c("refused-over-interactive-reservation",`redskilled refused this interactive Worker${l}: reserved slot ${u}/${a} is outside the bounded interactive reservation above the host ceiling of ${t.worker_count} Worker(s), and ${d}`)}if(t.memory_bytes!=null&&n===null)return c("refused-unaccountable-budget",`redskilled refused this Worker${l}: its declared memory budget cannot be reduced to bytes, so it cannot be proven to fit under the host ceiling of ${t.memory_bytes} bytes, and ${d}`);if(t.memory_bytes!=null&&s>t.memory_bytes)return c("refused-over-memory-ceiling",`redskilled refused this Worker${l}: it would take the host to ${s} bytes of declared Worker memory, past the host ceiling of ${t.memory_bytes} bytes, and ${d}`);let p=e.reservation==="interactive"&&u>0;return{version:1,admitted:!0,verdict:p?"admitted-interactive-reservation":"admitted",reason:p?`redskilled admitted this interactive Worker${l} into reserved interactive slot ${u}/${a} above the host ceiling of ${t.worker_count} Worker(s): ${s} bytes of declared Worker memory against a host ceiling of ${t.memory_bytes??"unbounded"} bytes, and ${d}`:`redskilled admitted this Worker${l}: ${s} bytes of declared Worker memory against a host ceiling of ${t.memory_bytes??"unbounded"} bytes, and ${d}`,ceiling:t,consumption:r,requested_memory_bytes:o,projected_worker_count:i,projected_memory_bytes:s}}function Fh(e){let t=e.budget?.memory_max??e.budget?.memory_high;if(t!=null)return{memory_max:t,reason:`the client declared this Worker's memory ceiling (${t}), so the host derived none`};if(e.ceiling.memory_bytes==null)return{memory_max:null,reason:"this host admits Workers against no memory ceiling, so there is no accounting to derive a per-Worker ceiling from; the daemon's RSS sampling floor is the only remaining ceiling"};let r=ra(e.workers),n=e.ceiling.memory_bytes-r.memory_bytes,o=e.ceiling.worker_count,s=o==null?n:Math.floor(e.ceiling.memory_bytes/o),i=Math.min(n,s);if(i<=0)return{memory_max:null,reason:`this host's memory ceiling of ${e.ceiling.memory_bytes} bytes is already fully committed to ${r.worker_count} Worker(s), so no positive per-Worker ceiling can be derived; the daemon's RSS sampling floor is the only remaining ceiling`};let a=o==null?`the headroom under this host's memory ceiling of ${e.ceiling.memory_bytes} bytes; this host declares no Worker slot count (${Hd} is unset), so this ceiling is a per-Worker wall and not memory the host sets aside \u2014 N Workers may carry N such walls, and the host ceiling is not enforced host-wide. Declare a slot count to make it divide into shares that sum to it`:`this host's memory ceiling of ${e.ceiling.memory_bytes} bytes shared across its ${o} Worker slot(s)`;return{memory_max:String(i),reason:`derived from ${a} (ceiling source: ${e.ceiling.source})`}}function na(e=process.env,t=XS(),r={}){let n=Wd(r.flags?.memoryCeiling,e[Sh],r.config?.memoryCeiling),o=Wd(r.flags?.workerCeiling,e[Hd],r.config?.workerCeiling),s=Wd(r.flags?.validationCeiling,e[Ch],r.config?.validationCeiling),i=n?.value??"",a=o?.value??"",l=(e[Th]??"").trim(),d=Ih(a),c=l===""?Rs:nT(l),u=o?.source??"derived-default";if(a!==""&&d===null&&!tT(a)&&(ta(`redskilled: ${Ud(o)} ${Hd}=${JSON.stringify(a)} is not a positive integer; this host admits an unbounded number of Workers instead.`),u="derived-default"),i!==""){let p=rT(i,t);if(p!==void 0)return Ah({memory_bytes:p,worker_count:d,interactive_reservation:c??Rs,source:"declared",memory_source:n.source,worker_source:u},s,r.availableParallelism??vh());ta(`redskilled: ${Ud(n)} ${Sh}=${JSON.stringify(i)} is not a memory ceiling this host can read; using ${Ph*100}% of host memory instead. Accepted forms: systemd bytes (\`8G\`), a percentage (\`50%\`), or \`infinity\`.`)}return l!==""&&c===void 0&&ta(`redskilled: ${Th}=${JSON.stringify(l)} is not a non-negative integer; using the default reservation of ${Rs} Worker(s) instead.`),Ah({memory_bytes:Math.floor(t*Ph),worker_count:d,interactive_reservation:c??Rs,memory_source:"derived-default",worker_source:u,source:"host-fraction"},s,r.availableParallelism??vh())}function Ah(e,t,r){if(t!==void 0){let i=Ih(t.value);if(i!==null)return{...e,validation_count:i,validation_source:t.source};ta(`redskilled: ${Ud(t)} ${Ch}=${JSON.stringify(t.value)} is not a positive integer; deriving the validation ceiling from host CPU, memory, and Worker capacity instead.`)}let n=Math.max(1,Math.floor(Math.max(1,r)/eT)),o=e.memory_bytes==null?Number.POSITIVE_INFINITY:Math.max(1,Math.floor(e.memory_bytes/ZS)),s=e.worker_count??Number.POSITIVE_INFINITY;return{...e,validation_count:Math.max(1,Math.min(n,o,s)),validation_source:"derived-default"}}function Wd(e,t,r){if(e?.trim())return{value:e.trim(),source:"flag"};if(t?.trim())return{value:t.trim(),source:"environment"};if(r?.trim())return{value:r.trim(),source:"home-config"}}function Ud(e){return e.source==="flag"?"serve flag":e.source==="environment"?"environment":e.source==="home-config"?"home config":"derived default"}function tT(e){return["infinity","none","off","unbounded"].includes(e.trim().toLowerCase())}var ta=e=>process.stderr.write(`${e}
61
+ `);function rT(e,t){let r=e.toLowerCase();if(["infinity","none","off","unbounded"].includes(r))return null;let n=/^(\d+(?:\.\d+)?)\s*%$/.exec(e);return n?Math.floor(t*(Number(n[1])/100)):xo(e)??void 0}function Ih(e){if(e===""||["infinity","none","off","unbounded"].includes(e.toLowerCase()))return null;let t=Number(e);return Number.isSafeInteger(t)&&t>0?t:null}function nT(e){let t=Number(e);return Number.isSafeInteger(t)&&t>=0?t:void 0}import{appendFile as oT,mkdir as sT,open as iT,readFile as aT,stat as lT,truncate as Mh}from"node:fs/promises";import{dirname as dT}from"node:path";var cT=["worker-birth","worker-activity","worker-metrics","worker-drift","worker-heal","worker-death","worker-budget-kill"],uT=["demand-refusal","daemon-stop"],Lh="redskilled.log.toonl";function oa(e){let t=e.worker.budget??{},r="kind"in e?e.kind:e.event;return{version:1,ts:e.ts,kind:r,event:r,worker_id:e.worker.worker_id,project_label:e.worker.project_label,pid:e.worker.pid,workspace_path:e.worker.workspace_path,fork_sha:e.worker.fork_sha??null,log_path:e.worker.log_path??null,isolated:e.worker.isolated,unit:e.worker.unit??null,memory_high:t.memory_high??null,memory_max:t.memory_max??null,cpu_weight:t.cpu_weight??null,admission_verdict:"admissionVerdict"in e?e.admissionVerdict??null:null,phase:"phase"in e?e.phase??null:null,step:"step"in e?e.step??null:null,tokens:"tokens"in e?e.tokens??null:null,tools:"tools"in e?e.tools??null:null,runner:"runner"in e?e.runner??null:null,model:"model"in e?e.model??null:null,base_head_sha:"baseHeadSha"in e?e.baseHeadSha??null:null,base_commits_ahead:"baseCommitsAhead"in e?e.baseCommitsAhead??null:null,heal_kind:"healKind"in e?e.healKind??null:null,detail:e.detail??null,exit_code:e.exitCode??null,signal:e.signal??null,reason:"reason"in e?e.reason??null:null}}var pT="daemon:";function fT(e){return{version:1,ts:e.ts,kind:"daemon-stop",event:"daemon-stop",worker_id:`${pT}${e.pid}`,project_label:"",pid:e.pid,workspace_path:e.socketPath,fork_sha:null,log_path:null,isolated:!1,unit:null,memory_high:null,memory_max:null,cpu_weight:null,admission_verdict:null,phase:null,step:null,tokens:null,tools:null,runner:null,model:null,base_head_sha:null,base_commits_ahead:null,heal_kind:null,detail:e.detail,exit_code:null,signal:e.signal??null,reason:e.reason}}function gT(e){return{version:1,ts:e.ts,kind:"demand-refusal",event:"demand-refusal",worker_id:`demand:${e.projectLabel}`,project_label:e.projectLabel,pid:0,workspace_path:"",fork_sha:null,log_path:null,isolated:!1,unit:null,memory_high:null,memory_max:null,cpu_weight:null,admission_verdict:null,phase:null,step:null,tokens:null,tools:null,runner:null,model:null,base_head_sha:null,base_commits_ahead:null,heal_kind:null,detail:e.detail,exit_code:null,signal:null,reason:null}}function jh(e){let t=Mt({trailer:!1}),r=Promise.resolve();async function n(o){let s=r.then(async()=>{await sT(dT(e),{recursive:!0,mode:448}),await hT(e),await oT(e,t.push(kT(o)),{encoding:"utf8",mode:384})});return r=s.catch(()=>{}),await s,o}return{path:e,record:o=>n(oa(o)),recordWorker:o=>n(oa(o)),recordDemandRefusal:o=>n(gT(o)),recordDaemonStop:o=>n(fT(o)),read:()=>mT(e),flush:async()=>{await r}}}async function hT(e){let t;try{t=(await lT(e)).size}catch(o){if(o.code==="ENOENT")return;throw o}if(t===0)return;let r=64*1024,n=await iT(e,"r");try{let o=Buffer.alloc(1);if(await n.read(o,0,1,t-1),o[0]===10)return;for(let s=t;s>0;s-=r){let i=Math.min(r,s),a=Buffer.alloc(i);await n.read(a,0,i,s-i);let l=a.lastIndexOf(10);if(l>=0){await Mh(e,s-i+l+1);return}}await Mh(e,0)}finally{await n.close()}}async function mT(e){let t;try{t=await aT(e,"utf8")}catch(r){if(r.code==="ENOENT")return[];throw r}return bT(t)}function bT(e){let t=e.split(`
62
+ `);return t.pop(),t.length===0?[]:wr(`${t.join(`
64
63
  `)}
65
- `).filter(C_).map(N_)}function pu(e){let r=new Map;for(let t of e)t.kind==="daemon-stop"||t.kind==="demand-refusal"||(t.kind==="worker-birth"?r.set(t.worker_id,I_(t)):(t.kind==="worker-death"||t.kind==="worker-budget-kill")&&r.delete(t.worker_id));return[...r.values()]}function I_(e){let r={...e.memory_high!=null?{memory_high:e.memory_high}:{},...e.memory_max!=null?{memory_max:e.memory_max}:{},...e.cpu_weight!=null?{cpu_weight:e.cpu_weight}:{}};return{worker_id:e.worker_id,project_label:e.project_label,pid:e.pid,started_at:e.ts,workspace_path:e.workspace_path,...e.fork_sha!=null?{fork_sha:e.fork_sha}:{},...e.log_path!=null?{log_path:e.log_path}:{},isolated:e.isolated,...e.unit!=null?{unit:e.unit}:{},...Object.keys(r).length>0?{budget:r}:{},warnings:[]}}function $_(e){return{...e}}function C_(e){let r=e.kind??e.event;return e.version===1&&typeof e.ts=="string"&&typeof e.worker_id=="string"&&[...x_,...P_].includes(r)}function N_(e){let r=e.kind??e.event;return{version:1,ts:String(e.ts),kind:r,event:r,worker_id:String(e.worker_id),project_label:ue(e.project_label)??"",pid:Number(e.pid??0),workspace_path:ue(e.workspace_path)??"",fork_sha:ue(e.fork_sha),log_path:ue(e.log_path),isolated:e.isolated===!0||e.isolated==="true",unit:ue(e.unit),memory_high:ue(e.memory_high),memory_max:ue(e.memory_max),cpu_weight:e.cpu_weight==null||e.cpu_weight===""?null:Number(e.cpu_weight),admission_verdict:ue(e.admission_verdict),phase:ue(e.phase),step:ue(e.step),base_head_sha:ue(e.base_head_sha),base_commits_ahead:e.base_commits_ahead==null||e.base_commits_ahead===""?null:Number(e.base_commits_ahead),heal_kind:ue(e.heal_kind),detail:ue(e.detail),exit_code:e.exit_code==null||e.exit_code===""?null:Number(e.exit_code),signal:ue(e.signal),reason:ue(e.reason)}}function ue(e){return e==null||e===""?null:String(e)}function mu(e){let r=[...e.projects].sort((i,a)=>i.project_label.localeCompare(a.project_label)),t=e.backoffUntilMs??null,n=t!=null&&e.nowMs<t,o=[],s=[];for(let i of r){let a=Math.max(0,e.live[i.project_label]??0),l=Object.prototype.hasOwnProperty.call(e.queue,i.project_label),d=l?e.queue[i.project_label]??null:null,c={project_label:i.project_label,queue_depth:d,target:i.target,live:a};if(n){o.push({...c,outcome:"backing-off",wanted:0,detail:`the host refused a Worker, so no project is asked for one again before ${new Date(t).toISOString()}`});continue}let u=e.birthHealth?.[i.project_label],m=u?.haltUntilMs??e.birthHaltUntilMs?.[i.project_label];if(m!=null&&e.nowMs<m){o.push({...c,outcome:"birth-halted",wanted:0,detail:`project ${JSON.stringify(i.project_label)} lost 3 Workers in a row inside 60000ms of birth, so it is not asked for another before ${new Date(m).toISOString()} \u2014 a Worker that cannot survive boot will not survive the next one either, and every birth spends host quota shared with every project`});continue}if(u?.probeWorkerId!=null){o.push({...c,outcome:"half-open-probe",wanted:0,detail:`project ${JSON.stringify(i.project_label)} is half-open and probe Worker ${JSON.stringify(u.probeWorkerId)} has not yet survived 60000ms, so no second birth is admitted`});continue}if(d==null){o.push({...c,outcome:"queue-unknown",wanted:0,detail:l?`the last poll produced no depth for project ${JSON.stringify(i.project_label)}, and an absent depth is not a drained queue`:`no poll has counted project ${JSON.stringify(i.project_label)} yet, so it is not asked for a Worker on a depth nobody measured`});continue}if(d===0){o.push({...c,outcome:"queue-drained",wanted:0,detail:`project ${JSON.stringify(i.project_label)} has nothing queued, so it is asked for no Worker`});continue}let f=Math.max(0,Math.min(Math.max(0,i.target),d)-a);if(f===0){o.push({...c,outcome:"at-target",wanted:0,detail:`project ${JSON.stringify(i.project_label)} holds ${a} Worker(s) against a target of ${i.target} and a queue of ${d}, so it asks for none`});continue}let h=u?.haltUntilMs!=null&&e.nowMs>=u.haltUntilMs,v=h?1:f;o.push({...c,outcome:h?"half-open-probe":"asking",wanted:v,detail:h?`project ${JSON.stringify(i.project_label)} finished its birth-breaker cooldown, so exactly one probe Worker is admitted before the remaining ${Math.max(0,f-1)} birth(s)`:`project ${JSON.stringify(i.project_label)} holds ${a} Worker(s) against a target of ${i.target} and a queue of ${d}, so it asks for ${f} more`});for(let k=0;k<v;k+=1)(s[k]??(s[k]=[])).push({project_label:i.project_label,index:a+k,argv:i.argv,workspace_path:i.workspace_path})}return{intents:o,births:s.flat()}}function gu(e){return{version:1,at:e,requested:0,granted:[],shortfall:0,refusal:null,retry_after:null,projects:[]}}function fu(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let r=e;return r.version===1&&typeof r.at=="string"&&Number.isInteger(r.requested)&&Array.isArray(r.granted)&&Number.isInteger(r.shortfall)&&(r.refusal===null||typeof r.refusal=="string")&&(r.retry_after===null||typeof r.retry_after=="string")&&Array.isArray(r.projects)}var an={shortLifeStreak:0,haltUntilMs:null,openedAtMs:null,probeWorkerId:null};function hu(e,r,t){if(r>=6e4)return an;let n=e.shortLifeStreak+1;return!(e.haltUntilMs!=null||e.probeWorkerId!=null)&&n<3?{shortLifeStreak:n,haltUntilMs:null,openedAtMs:null,probeWorkerId:null}:{shortLifeStreak:n,haltUntilMs:t+6e5,openedAtMs:t,probeWorkerId:null}}function yu(e,r){return e.haltUntilMs==null?e:{...e,probeWorkerId:r}}function Gi(){return an}function M_(e,r,t){if(r.haltUntilMs==null||r.openedAtMs==null)return null;let n=t>=r.haltUntilMs;return{name:"project-birth-breaker",project_label:e,state:n?"half-open":"open",opened_at:new Date(r.openedAtMs).toISOString(),reason:`${r.shortLifeStreak} Workers from this project died before surviving 60000ms`,closes:n?r.probeWorkerId==null?"the next demand tick admits one probe Worker; surviving the short-life window closes the latch":`probe Worker ${JSON.stringify(r.probeWorkerId)} surviving 60000ms closes the latch; a fast death re-opens it with a fresh cooldown`:`the cooldown ends at ${new Date(r.haltUntilMs).toISOString()}, then one probe Worker is admitted; surviving the short-life window closes the latch`,probe_worker_id:r.probeWorkerId,repair:{tool:"project_reset",args:{latch:"project-birth-breaker"},why:"clear the project's birth-breaker history and allow the next demand tick to birth normally"}}}function ku(e,r){return Object.entries(e).sort(([t],[n])=>t.localeCompare(n)).map(([t,n])=>M_(t,n,r)).filter(t=>t!=null)}function _u(e){let r=e.workers.map(F_),t=[...new Set([...r.map(o=>o.project_label),...e.projects??[]])].filter(o=>o!=="").sort(),n=r.filter(o=>o.survives).map(o=>o.worker_id);return{version:1,running:!0,stopped:!0,reason:e.reason,socket_path:e.socketPath,daemon_version:e.daemonVersion,pid:e.pid,holding:{workers:r,projects:t},surviving:n,detail:U_({reason:e.reason,socketPath:e.socketPath,daemonVersion:e.daemonVersion,pid:e.pid,held:r.length,projects:t.length,surviving:n.length})}}function Ru(e){return{version:1,running:!1,stopped:!1,reason:"not-running",socket_path:e,daemon_version:null,pid:null,holding:{workers:[],projects:[]},surviving:[],detail:`no redskilled daemon is answering on ${JSON.stringify(e)}, so there was nothing to stop`}}function F_(e){return{worker_id:e.worker_id,project_label:e.project_label,pid:e.pid,unit:e.unit??null,isolated:e.isolated,survives:!0}}function W_(e){return e==="requested"?"an operator asked for it":e==="signal"?"the daemon was signalled":e==="idle"?"the daemon was idle and held nothing":e==="replaced"?"a newer published bundle is taking the session over":"no daemon was running"}function U_(e){let r=`stopping the redskilled daemon (pid ${e.pid}, version ${e.daemonVersion}) on ${JSON.stringify(e.socketPath)}: ${W_(e.reason)}`;return e.held===0?`${r}; it holds no Workers, so nothing survives the stop`:`${r}; it holds ${bu(e.held,"Worker")} across ${bu(e.projects,"project")}, and ${e.surviving} of them survive it \u2014 a Worker is an init-system unit, so this is a restart and not an evacuation`}function bu(e,r){return`${e} ${r}${e===1?"":"s"}`}function Ii(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let r=e,t=r.holding;return r.version===1&&typeof r.running=="boolean"&&typeof r.stopped=="boolean"&&typeof r.reason=="string"&&typeof r.socket_path=="string"&&typeof r.detail=="string"&&(r.daemon_version===null||typeof r.daemon_version=="string")&&(r.pid===null||typeof r.pid=="number")&&t!=null&&Array.isArray(t.workers)&&Array.isArray(t.projects)&&Array.isArray(r.surviving)}import{chmod as B_,mkdir as H_,readFile as q_,rm as V_,writeFile as K_}from"node:fs/promises";import{dirname as wu,join as Tu}from"node:path";import{tmpdir as Eu}from"node:os";var J_="redskilled.machine.claim.toon",z_="REDSKILLED_MACHINE_DIR",Q_=8,pr=class extends Error{constructor(t,n,o){super(X_(t,n,o));this.claimPath=t;this.reason=n;this.claim=o;this.name="RedskilledMachineHeldError"}},vu;function xu(){return vu??={pid:process.pid,startTime:new Date(Date.now()-Math.round(process.uptime()*1e3)).toISOString(),uid:typeof process.getuid=="function"?process.getuid():-1},vu}function Y_(e={machineIdHash:"unknown"}){let r=e.env??process.env,t=r[z_]?.trim();if(t)return t;let o=(e.platform??process.platform)==="win32"?r.PROGRAMDATA?.trim()||Eu():Eu();return Tu(o,`redskilled-${e.machineIdHash}`)}function Ao(e){return Tu(Y_(e),J_)}function Do(e,r,t={}){let n=t.clock??(()=>new Date().toISOString()),o=t.isPidAlive??re;async function s(){let l;try{l=await q_(e,"utf8")}catch(c){if(c.code==="ENOENT"||$i(c))return;throw c}let d=eR(l);return rR(d)?d:void 0}function i(l,d){return{version:1,scope:"machine",pid:l.pid,start_time:l.startTime,uid:l.uid,machine_id_hash:r.machineIdHash,session_key_hash:r.sessionKeyHash,socket_path:r.socketPath,acquired_at:d,renewed_at:d}}async function a(){try{return await V_(e,{force:!0}),!0}catch(l){if($i(l))return!1;throw l}}return{claimPath:e,read:s,async claim(l){await H_(wu(e),{recursive:!0,mode:1023})!=null&&await B_(wu(e),1023).catch(()=>{});let c=!1;for(let u=0;u<Q_;u+=1){let m=i(l,n());try{return await K_(e,Z_(m),{encoding:"utf8",mode:420,flag:"wx"}),{claimed:!0,reaped:c,claim:m}}catch(h){if(h.code!=="EEXIST"){if($i(h))return{claimed:!1,reason:"stale-claim-not-reapable"};throw h}}let f=await s();if(!f){if(!await a())return{claimed:!1,reason:"stale-claim-not-reapable"};c=!0;continue}if(Su(f,l,r.socketPath))return{claimed:!0,reaped:c,claim:f};if(await o(f.pid))return{claimed:!1,reason:"held",claim:f};if(!await a())return{claimed:!1,reason:"stale-claim-not-reapable",claim:f};c=!0}return{claimed:!1,reason:"contended"}},async release(l){let d=await s();return!d||!Su(d,l,r.socketPath)?!1:await a()}}}function Pu(e,r,t){return{kind:"machine",claim_path:e,owner_uid:t.uid,machine_id_hash:r.machineIdHash,session_key_hash:r.sessionKeyHash,socket_path:r.socketPath}}function Ou(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let r=e;return r.kind==="machine"&&typeof r.claim_path=="string"&&typeof r.owner_uid=="number"&&typeof r.machine_id_hash=="string"&&typeof r.session_key_hash=="string"&&typeof r.socket_path=="string"}function X_(e,r,t){let n=t==null?"":` \u2014 held by pid ${t.pid} (uid ${t.uid}) on socket ${JSON.stringify(t.socket_path)}`;return r==="held"?`this machine already has a redskilled daemon${n}; a second one would void the host budget, so none was started. Reach that daemon, or stop it before starting another.`:r==="stale-claim-not-reapable"?`the redskilled machine claim ${JSON.stringify(e)} is stale and cannot be removed by this user${n}; remove it as its owner, then start again. No second daemon was started.`:`the redskilled machine claim ${JSON.stringify(e)} changed hands repeatedly; no daemon was started.`}function $i(e){let r=e?.code;return r==="EACCES"||r==="EPERM"||r==="EROFS"}function Su(e,r,t){return e.pid===r.pid&&e.start_time===r.startTime&&e.socket_path===t}function Z_(e){return`${X(e,{keyedMapCollapse:!0})}
66
- `}function eR(e){let r=e.trim();if(!r)return null;try{return JSON.parse(r)}catch{try{return me(r)}catch{return null}}}function rR(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let r=e;if(r.version!==1||r.scope!=="machine"||!Number.isInteger(r.pid)||r.pid<=0||!Number.isInteger(r.uid))return!1;for(let t of["start_time","machine_id_hash","session_key_hash","socket_path","acquired_at","renewed_at"])if(typeof r[t]!="string"||r[t].length===0)return!1;return!0}var tR=["worker_id","slot","workspace_path","log_path"],jo=class extends Error{constructor(t,n){super(`redskilled cannot expand ${JSON.stringify(`{{${t}}}`)} in ${n}: the facts a birth supplies are ${tR.join(", ")}, and a Worker started with the placeholder left in it is one nobody meant to start`);this.fact=t;this.name="RedskilledLaunchFactError"}},Au=/\{\{([a-z_]+)\}\}/g;function nR(e,r){let t=(i,a)=>i.replace(Au,(l,d)=>{switch(d){case"worker_id":return r.worker_id;case"slot":return String(r.slot);case"workspace_path":return r.workspace_path;case"log_path":return r.log_path??"";default:throw new jo(d,a)}}),n=e.argv.map((i,a)=>t(i,`argv word ${a}`)),o={};for(let[i,a]of Object.entries(e.env??{}))o[i]=t(a,`env entry ${JSON.stringify(i)}`);let s=e.log_path==null?void 0:t(e.log_path,"the log path");return{argv:n,env:o,...s==null||s===""?{}:{log_path:s}}}function Du(e,r){if(!(e==null||e.trim()===""))return e.replace(Au,(t,n)=>{switch(n){case"worker_id":return r.worker_id;case"workspace_path":return r.workspace_path;default:throw new jo(n,"the log path")}})}function ju(e,r,t){let n=nR(e,r),o=n.log_path??r.log_path,[s,...i]=n.argv;if(s===void 0||s==="")throw new Error(`redskilled cannot start a Worker for project ${JSON.stringify(t.project_label)}: its launch expanded to an argv with no command`);return{worker_id:r.worker_id,project_label:t.project_label,workspace_path:r.workspace_path,...o==null||o===""?{}:{log_path:o},command:s,args:i,env:n.env}}function Ci(e,r){if(!Array.isArray(e)||e.length===0)throw new Error(`redskilled needs an argv to register project ${JSON.stringify(r)}: a registration with nothing to run is a project the host could never start a Worker for`);return e.map((t,n)=>{if(typeof t!="string"||t==="")throw new Error(`redskilled needs every word of an argv to be a non-empty string, and word ${n} of project ${JSON.stringify(r)} is not`);return t})}function Ni(e,r){if(e!=null){if(typeof e!="string"||e.trim()==="")throw new Error(`redskilled needs a declared log path to be a non-empty string to register project ${JSON.stringify(r)}, not ${JSON.stringify(e)}: a project that declares an empty path states a Worker whose output no surface can ever show, which reads as a Worker with nothing to say`);return e}}function Mi(e,r){if(e==null)return{};if(typeof e!="object"||Array.isArray(e))throw new Error(`redskilled needs a launch env to be a map of strings to register project ${JSON.stringify(r)}, not ${JSON.stringify(e)}`);let t={};for(let[n,o]of Object.entries(e)){if(n==="")throw new Error(`redskilled needs every launch env name of project ${JSON.stringify(r)} to be named`);if(typeof o!="string")throw new Error(`redskilled needs every launch env value to be a string, and ${JSON.stringify(n)} of project ${JSON.stringify(r)} is ${JSON.stringify(o)}`);t[n]=o}return t}var oR=3e5,sR=.5,Fi=class extends Error{constructor(t){super(`redskilled already holds a registration for project ${JSON.stringify(t.project_label)}, registered at ${t.registered_at} for a target of ${t.target} and standing until ${t.renew_by}: a project contributes one registration, so a second one is refused rather than silently replacing the first`);this.held=t;this.name="RedskilledProjectRegisteredError"}};function Lu(e,r){if(r.held!=null)throw new Fi(r.held);let t=ln(e.project_label,"a project label"),n=ln(e.selector,"a selector"),o=dR(e.queue_poll,t),s=Ci(e.argv,t),i=Mi(e.env,t),a=Ni(e.log_path,t),l=ln(e.workspace_path,`a workspace path for project ${JSON.stringify(t)}`),d=e.trunk==null?void 0:{remote:ln(e.trunk.remote,`a trunk remote for project ${JSON.stringify(t)}`),branch:ln(e.trunk.branch,`a trunk branch for project ${JSON.stringify(t)}`)};if(!Number.isInteger(e.target)||e.target<0)throw new Error(`redskilled needs a whole, non-negative target to register project ${JSON.stringify(t)}, not ${JSON.stringify(e.target)}`);let c=e.renew_within_ms??oR;if(!Number.isFinite(c)||c<=0)throw new Error(`redskilled needs a positive renewal window to register project ${JSON.stringify(t)}, not ${JSON.stringify(e.renew_within_ms)}: a registration that lapses on arrival is a poll nobody asked for`);let u=Date.parse(r.now);if(!Number.isFinite(u))throw new Error(`redskilled needs an instant to date a registration, not ${JSON.stringify(r.now)}`);return{version:1,project_label:t,selector:n,...o==null?{}:{queue_poll:o},argv:s,workspace_path:l,...d==null?{}:{trunk:d},env:i,...a==null?{}:{log_path:a},target:e.target,registered_at:new Date(u).toISOString(),renew_within_ms:c,renew_by:new Date(u+c).toISOString(),renewed_at:new Date(u).toISOString(),renewals:0,session_renewals:0,launch_revision:0}}var $r=class extends Error{constructor(t,n={kind:"never"}){super(iR(t,n));this.projectLabel=t;this.absence=n;this.name="RedskilledProjectUnregisteredError"}};function iR(e,r){let t=JSON.stringify(e);if(r.kind==="lapsed"){let n=r.registered_at==null?"":` (registered ${r.registered_at})`;return`redskilled holds no registration for project ${t} to renew: it lapsed at ${r.at}${n}; renewal stopped \u2014 find why before registering it again`}return r.kind==="stopped"?`redskilled holds no registration for project ${t} to renew: it was stopped at ${r.at}; this is the requested state, so there is nothing to renew`:r.kind==="orphaned"?`redskilled holds no registration for project ${t} to renew: it is registered on a daemon this socket does not reach \u2014 do not register it again`:`redskilled holds no registration for project ${t} to renew: it was never registered on this host; register it first, stating the selector, the argv and the target`}function Gu(e,r){let t=Date.parse(r.now);if(!Number.isFinite(t))throw new Error(`redskilled needs an instant to date a renewal, not ${JSON.stringify(r.now)}`);let n=r.renew_within_ms??e.renew_within_ms;if(!Number.isFinite(n)||n<=0)throw new Error(`redskilled needs a positive renewal window to renew project ${JSON.stringify(e.project_label)}, not ${JSON.stringify(r.renew_within_ms)}`);let o=r.launch==null?{env:e.env??{},launch_revision:e.launch_revision??0}:{argv:Ci(r.launch.argv,e.project_label),env:Mi(r.launch.env,e.project_label),launch_revision:(e.launch_revision??0)+1},s=r.launch==null?e.log_path:Ni(r.launch.log_path,e.project_label),{log_path:i,...a}=e;return{...a,...s==null?{}:{log_path:s},...o,renew_within_ms:n,renewed_at:new Date(t).toISOString(),renew_by:new Date(t+n).toISOString(),renewals:e.renewals+1,session_renewals:(e.session_renewals??e.renewals)+1}}function Wi(e,r){let t=Date.parse(r.now);if(!Number.isFinite(t))throw new Error(`redskilled needs an instant to sustain a registration, not ${JSON.stringify(r.now)}`);let n=JSON.stringify(e.project_label),o=Math.max(0,r.liveWorkers??0),s=r.queue,i=s!=null&&s.outcome==="counted"?s.depth:null,a=i!=null&&i>0?"open-work":o>0?"live-worker":null;if(a==null){let l=i===0?"drained":"uncounted";return{registration:e,verdict:l,detail:l==="drained"?`project ${n} has nothing queued and no Worker running, so nothing holds its registration up and it lapses at ${e.renew_by}`:`no poll counted project ${n}, and an uncounted queue never sustains a registration \u2014 it stands on its own deadline of ${e.renew_by}`}}return{registration:{...e,renew_by:new Date(t+e.renew_within_ms).toISOString(),sustained_at:new Date(t).toISOString(),sustains:(e.sustains??0)+1,sustained_by:a,renewals:e.renewals+1,session_renewals:e.session_renewals??e.renewals},verdict:a,detail:a==="open-work"?`project ${n} has ${i} item(s) queued, so its registration stands past its window`:`project ${n} holds ${o} Worker(s), so its registration stands past its window`}}function aR(e,r){let t=Date.parse(e.renew_by);return Number.isFinite(t)?r>=t:!1}function Iu(e,r){let t=Date.parse(e.renewed_at??e.registered_at),n=s=>Number.isFinite(s)&&r-s<=e.renew_within_ms*sR;if(n(t))return"renewing";let o=e.sustained_at==null?Number.NaN:Date.parse(e.sustained_at);return n(o)?"self-renewing":"running-on"}function $u(e,r){let t=[],n=[];for(let o of e)(aR(o,r)?n:t).push(o);return{standing:t,lapsed:n}}function dn(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let r=e;return r.version===1&&typeof r.project_label=="string"&&typeof r.selector=="string"&&(r.queue_poll===void 0||Cu(r.queue_poll))&&Array.isArray(r.argv)&&r.argv.every(t=>typeof t=="string")&&typeof r.workspace_path=="string"&&(r.trunk===void 0||lR(r.trunk))&&Number.isInteger(r.target)&&typeof r.registered_at=="string"&&typeof r.renew_within_ms=="number"&&typeof r.renew_by=="string"&&(r.renewed_at===void 0||typeof r.renewed_at=="string")&&(r.renewals===void 0||Number.isInteger(r.renewals))&&(r.session_renewals===void 0||Number.isInteger(r.session_renewals))&&(r.env===void 0||cR(r.env))&&(r.log_path===void 0||typeof r.log_path=="string")&&(r.launch_revision===void 0||Number.isInteger(r.launch_revision))&&(r.sustained_at===void 0||typeof r.sustained_at=="string")&&(r.sustains===void 0||Number.isInteger(r.sustains))&&(r.sustained_by===void 0||r.sustained_by==="open-work"||r.sustained_by==="live-worker")}function lR(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let r=e;return typeof r.remote=="string"&&r.remote.trim()!==""&&typeof r.branch=="string"&&r.branch.trim()!==""}function dR(e,r){if(e!==void 0){if(!Cu(e))throw new Error(`redskilled needs a complete queue poll plan for project ${JSON.stringify(r)} when one is stated`);return e}}function Cu(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let r=e;return typeof r.owner=="string"&&r.owner!==""&&typeof r.repo=="string"&&r.repo!==""&&Array.isArray(r.labels)&&r.labels.length>0&&r.labels.every(t=>typeof t=="string"&&t!=="")&&(r.creator===void 0||typeof r.creator=="string")}function cR(e){return e===null||typeof e!="object"||Array.isArray(e)?!1:Object.values(e).every(r=>typeof r=="string")}function ln(e,r){if(typeof e!="string"||e==="")throw new Error(`redskilled needs ${r} to register a project, not ${JSON.stringify(e)}`);return e}var uR={ping:"host-read","host-state":"host-read","statusline-payload":"host-read",shutdown:"daemon-life","worker-start":"project-write","worker-stop":"project-write","worker-recycle":"project-write","worker-steer":"project-write","worker-heartbeat":"project-write","project-register":"project-write","project-renew":"project-write","project-reset":"project-write","project-deregister":"project-write"};function Nu(e){return`worker-${e}`}function Mu(e){let r=uR[e.op]??"project-write",t=e.sessionProject??null,n=e.targetProject??null,o={version:1,op:e.op,reach:r,session_project:t,target_project:n};return r==="host-read"?{...o,permitted:!0,verdict:"permitted-host-read",reason:`redskilled permitted ${e.op}: a session reads the whole host, whichever project it was started in`}:r==="daemon-life"?{...o,permitted:!0,verdict:"permitted-daemon-life",reason:`redskilled permitted ${e.op}: it acts on the daemon's own process, not on any project's Workers`}:t==null||t===""?{...o,permitted:!0,verdict:"permitted-unattributed",reason:`redskilled permitted ${e.op}: the session named no project of its own, so there is nothing to refuse it against`}:n!=null&&n===t?{...o,permitted:!0,verdict:"permitted-own-project",reason:`redskilled permitted ${e.op}: the target belongs to project ${JSON.stringify(t)}, which is this session's own`}:{...o,permitted:!1,verdict:"refused-cross-project",reason:`redskilled refused ${e.op} from a session in project ${JSON.stringify(t)}: ${n==null?"it names no Worker of that project":`the target belongs to project ${JSON.stringify(n)}`}. A session reads the whole host and writes only its own project.`}}function Fu(e){return e==="single-object"?"rest":"graphql"}function Wu(e,r){return e==="stable-poll"?"rest":Fu(r)}function Te(e){return{none:e}}function Z(e,r,t,n,o,s,i){let a=typeof o=="string"?{fallback:o}:{fallback:null,noFallbackBecause:o.none};return{key:e,kind:"read",cardinality:r,volatility:t,surface:i??Wu(t,r),budget:n,...a,...i?{only:i}:{},why:s}}function ge(e,r,t,n){return{key:e,kind:"write",cardinality:"single-object",surface:r,budget:t,fallback:null,noFallbackBecause:"a mutation has one observed GitHub API method",why:n}}var Uu=[Z("issue view","single-object","stable-poll","rest","graphql","one issue by number, repeatedly polled while usually unchanged; REST answers in one request"),Z("pr view","single-object","stable-poll","rest","graphql","one pull request by number, polled per Worker per iteration"),Z("repo view","single-object","stable-poll","rest","graphql","one repository's own metadata, repeatedly read while usually unchanged"),Z("run view","single-object","stable-poll","rest",Te("Actions runs have no GraphQL resource"),"one Actions run repeatedly polled to terminal"),Z("release view","single-object","stable-poll","rest",Te("release lookup has no GraphQL client method"),"one release by tag, repeatedly checked while usually absent or unchanged"),Z("pr diff","single-object","one-shot","rest",Te("the complete diff is exposed as a REST media type"),"one pull request's diff, read once for review"),Z("issue list","multi-node","stable-poll","rest","graphql","a repeatedly polled, usually-unchanged issue collection; REST can make an unchanged poll free"),Z("pr list","multi-node","stable-poll","rest","graphql","a repeatedly polled, usually-unchanged pull-request collection; REST can make an unchanged poll free"),Z("pr checks","multi-node","stable-poll","rest","graphql","check contexts are repeatedly polled while awaiting terminal state"),Z("release list","multi-node","stable-poll","rest",Te("Releases has no GraphQL collection client method"),"release waits poll a usually-unchanged list"),Z("run list","multi-node","stable-poll","rest",Te("Actions has no GraphQL collection client method"),"run waits poll a usually-unchanged list"),Z("label list","multi-node","one-shot","graphql","rest","a label connection loaded once for the current operation"),Z("issue list (search)","multi-node","stable-poll","search",Te("search is ineligible for diverted traffic"),"queue discovery polls usually-unchanged search results through the 30/min search connection"),Z("pr list (search)","multi-node","stable-poll","search",Te("search is ineligible for diverted traffic"),"PR discovery polls usually-unchanged search results through the 30/min search connection"),Z("search issues","multi-repository","one-shot","search",Te("search is ineligible for diverted traffic"),"a one-shot cross-repository read through the REST search endpoint, metered 30/min","rest"),Z("search prs","multi-repository","one-shot","search",Te("search is ineligible for diverted traffic"),"a one-shot cross-repository read through the REST search endpoint, metered 30/min","rest"),Z("search repos","multi-repository","one-shot","search",Te("search is ineligible for diverted traffic"),"a one-shot cross-repository read through the REST search endpoint, metered 30/min","rest"),Z("api graphql","multi-node","one-shot","graphql",Te("the caller explicitly chose GraphQL"),"the caller supplies one explicit GraphQL query rather than a routed poll"),Z("api rest","single-object","one-shot","rest",Te("the caller explicitly chose REST"),"the caller supplies one explicit REST path rather than a routed poll"),ge("issue create","graphql","graphql","gh files an issue with the createIssue mutation \u2014 an exhausted GraphQL pool blocks filing"),ge("issue edit","graphql","graphql","gh edits labels, body and assignees with GraphQL mutations"),ge("issue close","graphql","graphql","gh closes with the closeIssue mutation"),ge("issue reopen","graphql","graphql","gh reopens with the reopenIssue mutation"),ge("issue comment","rest","rest","gh POSTs to `repos/{o}/{r}/issues/{n}/comments`, a REST request"),ge("issue develop","graphql","graphql","linked-branch creation is a GraphQL mutation"),ge("pr create","rest","rest","gh POSTs to `repos/{o}/{r}/pulls`, a REST request"),ge("pr comment","rest","rest","a pull request comment is an issue comment: the same REST POST"),ge("pr merge","graphql","graphql","gh merges with the mergePullRequest mutation"),ge("pr close","graphql","graphql","gh closes with a GraphQL mutation"),ge("pr edit","graphql","graphql","gh edits with GraphQL mutations"),ge("pr ready","graphql","graphql","marking ready-for-review is a GraphQL mutation"),ge("pr update-branch","rest","rest","gh PUTs `repos/{o}/{r}/pulls/{n}/update-branch`, a REST request"),ge("label create","rest","rest","gh POSTs `repos/{o}/{r}/labels`, a REST request")],pR=new Map(Uu.map(e=>[e.key,e]));function Bu(e){let r=[],t=0;for(;t<e.length&&e[t].startsWith("-");)t+=e[t]==="-R"||e[t]==="--repo"?2:1;for(;t<e.length&&!e[t].startsWith("-")&&r.length<2;)r.push(e[t]),t+=1;return r}function Ui(e){let r=Bu(e);if(r.length===0)return"";if(r[0]==="api")return r[1]==="graphql"?"api graphql":"api rest";let t=r.length===1?r[0]:`${r[0]} ${r[1]}`;return r[1]==="list"&&e.includes("--search")?`${t} (search)`:t}var Lo=class extends Error{name="UnclassifiedGithubOperationError";operation;args;constructor(r){let t=Ui(r);super(`unclassified GitHub operation ${JSON.stringify(t||"(empty argv)")}: add an entry to GITHUB_OPERATIONS in packages/github/surface.ts stating its cardinality. Defaulting to GraphQL is what sent every single-object poll to the node-point pool (ADR 0132 decision 4).`),this.operation=t,this.args=[...r]}};function Hu(e){return pR.get(Ui(e))??null}function qu(e){let r=Hu(e);if(!r)throw new Lo(e);return r}function Bi(e){return qu(e).surface}import{appendFile as mR,mkdir as gR,readFile as fR}from"node:fs/promises";import{dirname as hR}from"node:path";function Go(e){let r=e.now??(()=>new Date().toISOString()),t=Promise.resolve();return{record(n){let o=yR(n.operation,n.cost,n.observedAt??r(),n.actor),s=ye().push(bR(o));return t=t.then(async()=>{await gR(hR(e.path),{recursive:!0}),await mR(e.path,s,"utf8")}),t},async report(n){await t;let o=Hi(n.from,"report window start"),s=Hi(n.to,"report window end");if(s<=o)throw new Error("GitHub attribution report window end must be after its start");let i=await kR(e.path),a=new Map;for(let d of i.observations){let c=Date.parse(d.observed_at);if(c<o||c>=s||n.pool!==void 0&&d.pool!==n.pool)continue;let u=`${d.pool}\0${d.operation_key}\0${d.actor??""}`,m=a.get(u);a.set(u,{operation_key:d.operation_key,pool:d.pool,...d.actor===void 0?{}:{actor:d.actor},count:(m?.count??0)+1,cost:(m?.cost??0)+d.cost})}let l=[...a.values()].sort((d,c)=>c.cost-d.cost||c.count-d.count||d.operation_key.localeCompare(c.operation_key)||d.pool.localeCompare(c.pool)||(d.actor??"").localeCompare(c.actor??""));return{version:1,origin:"process-attribution",window:{from:n.from,to:n.to},pool:n.pool??null,total_count:l.reduce((d,c)=>d+c.count,0),total_cost:l.reduce((d,c)=>d+c.cost,0),operations:l,unreadable_records:i.unreadable}}}}function yR(e,r,t,n){if(Hi(t,"GitHub spend observation"),!Number.isSafeInteger(r)||r<0)throw new Error(`GitHub spend observation cost must be a non-negative safe integer; received ${r}`);if(n!==void 0&&n.trim()==="")throw new Error("GitHub spend observation actor must be non-empty when supplied");return{version:1,observed_at:t,operation_key:e.key,pool:e.budget,...n===void 0?{}:{actor:n},cost:r}}async function kR(e){let r;try{r=await fR(e,"utf8")}catch(s){if(wR(s)&&s.code==="ENOENT")return{observations:[],unreadable:0};throw s}let t=[],n=0,o=r.split(`
67
- `);for(let s=0;s<o.length;s+=1){let i=o[s];if(i.trim()==="")continue;let a=o[s+1];if(!i.startsWith("[]{")||a===void 0||a.trim()===""){n+=1;continue}let l;try{l=We(`${i}
64
+ `).filter(wT).map(RT)}function Bh(e){let t=new Map;for(let r of e)r.kind==="daemon-stop"||r.kind==="demand-refusal"||(r.kind==="worker-birth"?t.set(r.worker_id,yT(r)):(r.kind==="worker-death"||r.kind==="worker-budget-kill")&&t.delete(r.worker_id));return[...t.values()]}function yT(e){let t={...e.memory_high!=null?{memory_high:e.memory_high}:{},...e.memory_max!=null?{memory_max:e.memory_max}:{},...e.cpu_weight!=null?{cpu_weight:e.cpu_weight}:{}};return{worker_id:e.worker_id,project_label:e.project_label,pid:e.pid,started_at:e.ts,workspace_path:e.workspace_path,...e.fork_sha!=null?{fork_sha:e.fork_sha}:{},...e.log_path!=null?{log_path:e.log_path}:{},isolated:e.isolated,...e.unit!=null?{unit:e.unit}:{},...Object.keys(t).length>0?{budget:t}:{},warnings:[]}}function kT(e){return{...e}}function wT(e){let t=e.kind??e.event;return e.version===1&&typeof e.ts=="string"&&typeof e.worker_id=="string"&&[...cT,...uT].includes(t)}function RT(e){let t=e.kind??e.event;return{version:1,ts:String(e.ts),kind:t,event:t,worker_id:String(e.worker_id),project_label:gt(e.project_label)??"",pid:Number(e.pid??0),workspace_path:gt(e.workspace_path)??"",fork_sha:gt(e.fork_sha),log_path:gt(e.log_path),isolated:e.isolated===!0||e.isolated==="true",unit:gt(e.unit),memory_high:gt(e.memory_high),memory_max:gt(e.memory_max),cpu_weight:e.cpu_weight==null||e.cpu_weight===""?null:Number(e.cpu_weight),admission_verdict:gt(e.admission_verdict),phase:gt(e.phase),step:gt(e.step),tokens:e.tokens==null||e.tokens===""?null:Number(e.tokens),tools:e.tools==null||e.tools===""?null:Number(e.tools),runner:gt(e.runner),model:gt(e.model),base_head_sha:gt(e.base_head_sha),base_commits_ahead:e.base_commits_ahead==null||e.base_commits_ahead===""?null:Number(e.base_commits_ahead),heal_kind:gt(e.heal_kind),detail:gt(e.detail),exit_code:e.exit_code==null||e.exit_code===""?null:Number(e.exit_code),signal:gt(e.signal),reason:gt(e.reason)}}function gt(e){return e==null||e===""?null:String(e)}function $h(e){let t=[...e.projects].sort((i,a)=>i.project_label.localeCompare(a.project_label)),r=e.backoffUntilMs??null,n=r!=null&&e.nowMs<r,o=[],s=[];for(let i of t){let a=Math.max(0,e.live[i.project_label]??0),l=Object.prototype.hasOwnProperty.call(e.queue,i.project_label),d=l?e.queue[i.project_label]??null:null,c={project_label:i.project_label,queue_depth:d,target:i.target,live:a};if(n){o.push({...c,outcome:"backing-off",wanted:0,detail:`the host refused a Worker, so no project is asked for one again before ${new Date(r).toISOString()}`});continue}let u=e.birthHealth?.[i.project_label],p=u?.haltUntilMs??e.birthHaltUntilMs?.[i.project_label];if(p!=null&&e.nowMs<p){o.push({...c,outcome:"birth-halted",wanted:0,detail:`project ${JSON.stringify(i.project_label)} lost 3 Workers in a row inside 60000ms of birth, so it is not asked for another before ${new Date(p).toISOString()} \u2014 a Worker that cannot survive boot will not survive the next one either, and every birth spends host quota shared with every project`});continue}if(u?.probeWorkerId!=null){o.push({...c,outcome:"half-open-probe",wanted:0,detail:`project ${JSON.stringify(i.project_label)} is half-open and probe Worker ${JSON.stringify(u.probeWorkerId)} has not yet survived 60000ms, so no second birth is admitted`});continue}if(d==null){o.push({...c,outcome:"queue-unknown",wanted:0,detail:l?`the last poll produced no depth for project ${JSON.stringify(i.project_label)}, and an absent depth is not a drained queue`:`no poll has counted project ${JSON.stringify(i.project_label)} yet, so it is not asked for a Worker on a depth nobody measured`});continue}if(d===0){o.push({...c,outcome:"queue-drained",wanted:0,detail:`project ${JSON.stringify(i.project_label)} has nothing queued, so it is asked for no Worker`});continue}let g=Math.max(0,Math.min(Math.max(0,i.target),d)-a);if(g===0){o.push({...c,outcome:"at-target",wanted:0,detail:`project ${JSON.stringify(i.project_label)} holds ${a} Worker(s) against a target of ${i.target} and a queue of ${d}, so it asks for none`});continue}let f=u?.haltUntilMs!=null&&e.nowMs>=u.haltUntilMs,k=f?1:g;o.push({...c,outcome:f?"half-open-probe":"asking",wanted:k,detail:f?`project ${JSON.stringify(i.project_label)} finished its birth-breaker cooldown, so exactly one probe Worker is admitted before the remaining ${Math.max(0,g-1)} birth(s)`:`project ${JSON.stringify(i.project_label)} holds ${a} Worker(s) against a target of ${i.target} and a queue of ${d}, so it asks for ${g} more`});for(let b=0;b<k;b+=1)(s[b]??(s[b]=[])).push({project_label:i.project_label,index:a+b,argv:i.argv,workspace_path:i.workspace_path})}return{intents:o,births:s.flat()}}function Gh(e){return{version:1,at:e,requested:0,granted:[],shortfall:0,refusal:null,retry_after:null,projects:[]}}function Nh(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let t=e;return t.version===1&&typeof t.at=="string"&&Number.isInteger(t.requested)&&Array.isArray(t.granted)&&Number.isInteger(t.shortfall)&&(t.refusal===null||typeof t.refusal=="string")&&(t.retry_after===null||typeof t.retry_after=="string")&&Array.isArray(t.projects)}var _s={shortLifeStreak:0,haltUntilMs:null,openedAtMs:null,probeWorkerId:null};function Wh(e,t,r){if(t>=6e4)return _s;let n=e.shortLifeStreak+1;return!(e.haltUntilMs!=null||e.probeWorkerId!=null)&&n<3?{shortLifeStreak:n,haltUntilMs:null,openedAtMs:null,probeWorkerId:null}:{shortLifeStreak:n,haltUntilMs:r+6e5,openedAtMs:r,probeWorkerId:null}}function Hh(e,t){return e.haltUntilMs==null?e:{...e,probeWorkerId:t}}function qd(){return _s}function _T(e,t,r){if(t.haltUntilMs==null||t.openedAtMs==null)return null;let n=r>=t.haltUntilMs;return{name:"project-birth-breaker",project_label:e,state:n?"half-open":"open",opened_at:new Date(t.openedAtMs).toISOString(),reason:`${t.shortLifeStreak} Workers from this project died before surviving 60000ms`,closes:n?t.probeWorkerId==null?"the next demand tick admits one probe Worker; surviving the short-life window closes the latch":`probe Worker ${JSON.stringify(t.probeWorkerId)} surviving 60000ms closes the latch; a fast death re-opens it with a fresh cooldown`:`the cooldown ends at ${new Date(t.haltUntilMs).toISOString()}, then one probe Worker is admitted; surviving the short-life window closes the latch`,probe_worker_id:t.probeWorkerId,repair:{tool:"project_reset",args:{latch:"project-birth-breaker"},why:"clear the project's birth-breaker history and allow the next demand tick to birth normally"}}}function Uh(e,t){return Object.entries(e).sort(([r],[n])=>r.localeCompare(n)).map(([r,n])=>_T(r,n,t)).filter(r=>r!=null)}function Kh(e){let t=e.workers.map(xT),r=[...new Set([...t.map(o=>o.project_label),...e.projects??[]])].filter(o=>o!=="").sort(),n=t.filter(o=>o.survives).map(o=>o.worker_id);return{version:1,running:!0,stopped:!0,reason:e.reason,socket_path:e.socketPath,daemon_version:e.daemonVersion,pid:e.pid,holding:{workers:t,projects:r},surviving:n,detail:vT({reason:e.reason,socketPath:e.socketPath,daemonVersion:e.daemonVersion,pid:e.pid,held:t.length,projects:r.length,surviving:n.length})}}function Vh(e){return{version:1,running:!1,stopped:!1,reason:"not-running",socket_path:e,daemon_version:null,pid:null,holding:{workers:[],projects:[]},surviving:[],detail:`no redskilled daemon is answering on ${JSON.stringify(e)}, so there was nothing to stop`}}function xT(e){return{worker_id:e.worker_id,project_label:e.project_label,pid:e.pid,unit:e.unit??null,isolated:e.isolated,survives:!0}}function ET(e){return e==="requested"?"an operator asked for it":e==="signal"?"the daemon was signalled":e==="idle"?"the daemon was idle and held nothing":e==="replaced"?"a newer published bundle is taking the session over":"no daemon was running"}function vT(e){let t=`stopping the redskilled daemon (pid ${e.pid}, version ${e.daemonVersion}) on ${JSON.stringify(e.socketPath)}: ${ET(e.reason)}`;return e.held===0?`${t}; it holds no Workers, so nothing survives the stop`:`${t}; it holds ${qh(e.held,"Worker")} across ${qh(e.projects,"project")}, and ${e.surviving} of them survive it \u2014 a Worker is an init-system unit, so this is a restart and not an evacuation`}function qh(e,t){return`${e} ${t}${e===1?"":"s"}`}function Kd(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let t=e,r=t.holding;return t.version===1&&typeof t.running=="boolean"&&typeof t.stopped=="boolean"&&typeof t.reason=="string"&&typeof t.socket_path=="string"&&typeof t.detail=="string"&&(t.daemon_version===null||typeof t.daemon_version=="string")&&(t.pid===null||typeof t.pid=="number")&&r!=null&&Array.isArray(r.workers)&&Array.isArray(r.projects)&&Array.isArray(t.surviving)}import{chmod as ST,mkdir as TT,readFile as PT,rm as AT,writeFile as CT}from"node:fs/promises";import{dirname as zh,join as Xh}from"node:path";import{tmpdir as Jh}from"node:os";var OT="redskilled.machine.claim.toon",DT="REDSKILLED_MACHINE_DIR",FT=8,on=class extends Error{constructor(r,n,o){super(MT(r,n,o));this.claimPath=r;this.reason=n;this.claim=o;this.name="RedskilledMachineHeldError"}},Yh;function Zh(){return Yh??={pid:process.pid,startTime:new Date(Date.now()-Math.round(process.uptime()*1e3)).toISOString(),uid:typeof process.getuid=="function"?process.getuid():-1},Yh}function IT(e={machineIdHash:"unknown"}){let t=e.env??process.env,r=t[DT]?.trim();if(r)return r;let o=(e.platform??process.platform)==="win32"?t.PROGRAMDATA?.trim()||Jh():Jh();return Xh(o,`redskilled-${e.machineIdHash}`)}function sa(e){return Xh(IT(e),OT)}function ia(e,t,r={}){let n=r.clock??(()=>new Date().toISOString()),o=r.isPidAlive??lt;async function s(){let l;try{l=await PT(e,"utf8")}catch(c){if(c.code==="ENOENT"||Vd(c))return;throw c}let d=jT(l);return BT(d)?d:void 0}function i(l,d){return{version:1,scope:"machine",pid:l.pid,start_time:l.startTime,uid:l.uid,machine_id_hash:t.machineIdHash,session_key_hash:t.sessionKeyHash,socket_path:t.socketPath,acquired_at:d,renewed_at:d}}async function a(){try{return await AT(e,{force:!0}),!0}catch(l){if(Vd(l))return!1;throw l}}return{claimPath:e,read:s,async claim(l){await TT(zh(e),{recursive:!0,mode:1023})!=null&&await ST(zh(e),1023).catch(()=>{});let c=!1;for(let u=0;u<FT;u+=1){let p=i(l,n());try{return await CT(e,LT(p),{encoding:"utf8",mode:420,flag:"wx"}),{claimed:!0,reaped:c,claim:p}}catch(f){if(f.code!=="EEXIST"){if(Vd(f))return{claimed:!1,reason:"stale-claim-not-reapable"};throw f}}let g=await s();if(!g){if(!await a())return{claimed:!1,reason:"stale-claim-not-reapable"};c=!0;continue}if(Qh(g,l,t.socketPath))return{claimed:!0,reaped:c,claim:g};if(await o(g.pid))return{claimed:!1,reason:"held",claim:g};if(!await a())return{claimed:!1,reason:"stale-claim-not-reapable",claim:g};c=!0}return{claimed:!1,reason:"contended"}},async release(l){let d=await s();return!d||!Qh(d,l,t.socketPath)?!1:await a()}}}function em(e,t,r){return{kind:"machine",claim_path:e,owner_uid:r.uid,machine_id_hash:t.machineIdHash,session_key_hash:t.sessionKeyHash,socket_path:t.socketPath}}function tm(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let t=e;return t.kind==="machine"&&typeof t.claim_path=="string"&&typeof t.owner_uid=="number"&&typeof t.machine_id_hash=="string"&&typeof t.session_key_hash=="string"&&typeof t.socket_path=="string"}function MT(e,t,r){let n=r==null?"":` \u2014 held by pid ${r.pid} (uid ${r.uid}) on socket ${JSON.stringify(r.socket_path)}`;return t==="held"?`this machine already has a redskilled daemon${n}; a second one would void the host budget, so none was started. Reach that daemon, or stop it before starting another.`:t==="stale-claim-not-reapable"?`the redskilled machine claim ${JSON.stringify(e)} is stale and cannot be removed by this user${n}; remove it as its owner, then start again. No second daemon was started.`:`the redskilled machine claim ${JSON.stringify(e)} changed hands repeatedly; no daemon was started.`}function Vd(e){let t=e?.code;return t==="EACCES"||t==="EPERM"||t==="EROFS"}function Qh(e,t,r){return e.pid===t.pid&&e.start_time===t.startTime&&e.socket_path===r}function LT(e){return`${nt(e,{keyedMapCollapse:!0})}
65
+ `}function jT(e){let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{try{return Ct(t)}catch{return null}}}function BT(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let t=e;if(t.version!==1||t.scope!=="machine"||!Number.isInteger(t.pid)||t.pid<=0||!Number.isInteger(t.uid))return!1;for(let r of["start_time","machine_id_hash","session_key_hash","socket_path","acquired_at","renewed_at"])if(typeof t[r]!="string"||t[r].length===0)return!1;return!0}var $T=["worker_id","slot","workspace_path","log_path"],aa=class extends Error{constructor(r,n){super(`redskilled cannot expand ${JSON.stringify(`{{${r}}}`)} in ${n}: the facts a birth supplies are ${$T.join(", ")}, and a Worker started with the placeholder left in it is one nobody meant to start`);this.fact=r;this.name="RedskilledLaunchFactError"}},rm=/\{\{([a-z_]+)\}\}/g;function GT(e,t){let r=(i,a)=>i.replace(rm,(l,d)=>{switch(d){case"worker_id":return t.worker_id;case"slot":return String(t.slot);case"workspace_path":return t.workspace_path;case"log_path":return t.log_path??"";default:throw new aa(d,a)}}),n=e.argv.map((i,a)=>r(i,`argv word ${a}`)),o={};for(let[i,a]of Object.entries(e.env??{}))o[i]=r(a,`env entry ${JSON.stringify(i)}`);let s=e.log_path==null?void 0:r(e.log_path,"the log path");return{argv:n,env:o,...s==null||s===""?{}:{log_path:s}}}function nm(e,t){if(!(e==null||e.trim()===""))return e.replace(rm,(r,n)=>{switch(n){case"worker_id":return t.worker_id;case"workspace_path":return t.workspace_path;default:throw new aa(n,"the log path")}})}function om(e,t,r){let n=GT(e,t),o=n.log_path??t.log_path,[s,...i]=n.argv;if(s===void 0||s==="")throw new Error(`redskilled cannot start a Worker for project ${JSON.stringify(r.project_label)}: its launch expanded to an argv with no command`);return{worker_id:t.worker_id,project_label:r.project_label,workspace_path:t.workspace_path,...o==null||o===""?{}:{log_path:o},command:s,args:i,env:n.env}}function zd(e,t){if(!Array.isArray(e)||e.length===0)throw new Error(`redskilled needs an argv to register project ${JSON.stringify(t)}: a registration with nothing to run is a project the host could never start a Worker for`);return e.map((r,n)=>{if(typeof r!="string"||r==="")throw new Error(`redskilled needs every word of an argv to be a non-empty string, and word ${n} of project ${JSON.stringify(t)} is not`);return r})}function Jd(e,t){if(e!=null){if(typeof e!="string"||e.trim()==="")throw new Error(`redskilled needs a declared log path to be a non-empty string to register project ${JSON.stringify(t)}, not ${JSON.stringify(e)}: a project that declares an empty path states a Worker whose output no surface can ever show, which reads as a Worker with nothing to say`);return e}}function Yd(e,t){if(e==null)return{};if(typeof e!="object"||Array.isArray(e))throw new Error(`redskilled needs a launch env to be a map of strings to register project ${JSON.stringify(t)}, not ${JSON.stringify(e)}`);let r={};for(let[n,o]of Object.entries(e)){if(n==="")throw new Error(`redskilled needs every launch env name of project ${JSON.stringify(t)} to be named`);if(typeof o!="string")throw new Error(`redskilled needs every launch env value to be a string, and ${JSON.stringify(n)} of project ${JSON.stringify(t)} is ${JSON.stringify(o)}`);r[n]=o}return r}var NT=3e5,WT=.5,Qd=class extends Error{constructor(r){super(`redskilled already holds a registration for project ${JSON.stringify(r.project_label)}, registered at ${r.registered_at} for a target of ${r.target} and standing until ${r.renew_by}: a project contributes one registration, so a second one is refused rather than silently replacing the first`);this.held=r;this.name="RedskilledProjectRegisteredError"}};function sm(e,t){if(t.held!=null)throw new Qd(t.held);let r=xs(e.project_label,"a project label"),n=xs(e.selector,"a selector"),o=KT(e.queue_poll,r),s=zd(e.argv,r),i=Yd(e.env,r),a=Jd(e.log_path,r),l=xs(e.workspace_path,`a workspace path for project ${JSON.stringify(r)}`),d=e.trunk==null?void 0:{remote:xs(e.trunk.remote,`a trunk remote for project ${JSON.stringify(r)}`),branch:xs(e.trunk.branch,`a trunk branch for project ${JSON.stringify(r)}`)};if(!Number.isInteger(e.target)||e.target<0)throw new Error(`redskilled needs a whole, non-negative target to register project ${JSON.stringify(r)}, not ${JSON.stringify(e.target)}`);let c=e.renew_within_ms??NT;if(!Number.isFinite(c)||c<=0)throw new Error(`redskilled needs a positive renewal window to register project ${JSON.stringify(r)}, not ${JSON.stringify(e.renew_within_ms)}: a registration that lapses on arrival is a poll nobody asked for`);let u=Date.parse(t.now);if(!Number.isFinite(u))throw new Error(`redskilled needs an instant to date a registration, not ${JSON.stringify(t.now)}`);return{version:1,project_label:r,selector:n,...o==null?{}:{queue_poll:o},argv:s,workspace_path:l,...d==null?{}:{trunk:d},env:i,...a==null?{}:{log_path:a},target:e.target,registered_at:new Date(u).toISOString(),renew_within_ms:c,renew_by:new Date(u+c).toISOString(),renewed_at:new Date(u).toISOString(),renewals:0,session_renewals:0,launch_revision:0}}var jn=class extends Error{constructor(r,n={kind:"never"}){super(HT(r,n));this.projectLabel=r;this.absence=n;this.name="RedskilledProjectUnregisteredError"}};function HT(e,t){let r=JSON.stringify(e);if(t.kind==="lapsed"){let n=t.registered_at==null?"":` (registered ${t.registered_at})`;return`redskilled holds no registration for project ${r} to renew: it lapsed at ${t.at}${n}; renewal stopped \u2014 find why before registering it again`}return t.kind==="stopped"?`redskilled holds no registration for project ${r} to renew: it was stopped at ${t.at}; this is the requested state, so there is nothing to renew`:t.kind==="orphaned"?`redskilled holds no registration for project ${r} to renew: it is registered on a daemon this socket does not reach \u2014 do not register it again`:`redskilled holds no registration for project ${r} to renew: it was never registered on this host; register it first, stating the selector, the argv and the target`}function im(e,t){let r=Date.parse(t.now);if(!Number.isFinite(r))throw new Error(`redskilled needs an instant to date a renewal, not ${JSON.stringify(t.now)}`);let n=t.renew_within_ms??e.renew_within_ms;if(!Number.isFinite(n)||n<=0)throw new Error(`redskilled needs a positive renewal window to renew project ${JSON.stringify(e.project_label)}, not ${JSON.stringify(t.renew_within_ms)}`);let o=t.launch==null?{env:e.env??{},launch_revision:e.launch_revision??0}:{argv:zd(t.launch.argv,e.project_label),env:Yd(t.launch.env,e.project_label),launch_revision:(e.launch_revision??0)+1},s=t.launch==null?e.log_path:Jd(t.launch.log_path,e.project_label),{log_path:i,...a}=e;return{...a,...s==null?{}:{log_path:s},...o,renew_within_ms:n,renewed_at:new Date(r).toISOString(),renew_by:new Date(r+n).toISOString(),renewals:e.renewals+1,session_renewals:(e.session_renewals??e.renewals)+1}}function Xd(e,t){let r=Date.parse(t.now);if(!Number.isFinite(r))throw new Error(`redskilled needs an instant to sustain a registration, not ${JSON.stringify(t.now)}`);let n=JSON.stringify(e.project_label),o=Math.max(0,t.liveWorkers??0),s=t.queue,i=s!=null&&s.outcome==="counted"?s.depth:null,a=i!=null&&i>0?"open-work":o>0?"live-worker":null;if(a==null){let l=i===0?"drained":"uncounted";return{registration:e,verdict:l,detail:l==="drained"?`project ${n} has nothing queued and no Worker running, so nothing holds its registration up and it lapses at ${e.renew_by}`:`no poll counted project ${n}, and an uncounted queue never sustains a registration \u2014 it stands on its own deadline of ${e.renew_by}`}}return{registration:{...e,renew_by:new Date(r+e.renew_within_ms).toISOString(),sustained_at:new Date(r).toISOString(),sustains:(e.sustains??0)+1,sustained_by:a,renewals:e.renewals+1,session_renewals:e.session_renewals??e.renewals},verdict:a,detail:a==="open-work"?`project ${n} has ${i} item(s) queued, so its registration stands past its window`:`project ${n} holds ${o} Worker(s), so its registration stands past its window`}}function UT(e,t){let r=Date.parse(e.renew_by);return Number.isFinite(r)?t>=r:!1}function am(e,t){let r=Date.parse(e.renewed_at??e.registered_at),n=s=>Number.isFinite(s)&&t-s<=e.renew_within_ms*WT;if(n(r))return"renewing";let o=e.sustained_at==null?Number.NaN:Date.parse(e.sustained_at);return n(o)?"self-renewing":"running-on"}function lm(e,t){let r=[],n=[];for(let o of e)(UT(o,t)?n:r).push(o);return{standing:r,lapsed:n}}function Es(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let t=e;return t.version===1&&typeof t.project_label=="string"&&typeof t.selector=="string"&&(t.queue_poll===void 0||dm(t.queue_poll))&&Array.isArray(t.argv)&&t.argv.every(r=>typeof r=="string")&&typeof t.workspace_path=="string"&&(t.trunk===void 0||qT(t.trunk))&&Number.isInteger(t.target)&&typeof t.registered_at=="string"&&typeof t.renew_within_ms=="number"&&typeof t.renew_by=="string"&&(t.renewed_at===void 0||typeof t.renewed_at=="string")&&(t.renewals===void 0||Number.isInteger(t.renewals))&&(t.session_renewals===void 0||Number.isInteger(t.session_renewals))&&(t.env===void 0||VT(t.env))&&(t.log_path===void 0||typeof t.log_path=="string")&&(t.launch_revision===void 0||Number.isInteger(t.launch_revision))&&(t.sustained_at===void 0||typeof t.sustained_at=="string")&&(t.sustains===void 0||Number.isInteger(t.sustains))&&(t.sustained_by===void 0||t.sustained_by==="open-work"||t.sustained_by==="live-worker")}function qT(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let t=e;return typeof t.remote=="string"&&t.remote.trim()!==""&&typeof t.branch=="string"&&t.branch.trim()!==""}function KT(e,t){if(e!==void 0){if(!dm(e))throw new Error(`redskilled needs a complete queue poll plan for project ${JSON.stringify(t)} when one is stated`);return e}}function dm(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let t=e;return typeof t.owner=="string"&&t.owner!==""&&typeof t.repo=="string"&&t.repo!==""&&Array.isArray(t.labels)&&t.labels.length>0&&t.labels.every(r=>typeof r=="string"&&r!=="")&&(t.creator===void 0||typeof t.creator=="string")}function VT(e){return e===null||typeof e!="object"||Array.isArray(e)?!1:Object.values(e).every(t=>typeof t=="string")}function xs(e,t){if(typeof e!="string"||e==="")throw new Error(`redskilled needs ${t} to register a project, not ${JSON.stringify(e)}`);return e}var zT={ping:"host-read","host-state":"host-read","statusline-payload":"host-read",shutdown:"daemon-life","worker-start":"project-write","worker-stop":"project-write","worker-recycle":"project-write","worker-steer":"project-write","worker-heartbeat":"project-write","project-register":"project-write","project-renew":"project-write","project-reset":"project-write","project-deregister":"project-write"};function cm(e){return`worker-${e}`}function um(e){let t=zT[e.op]??"project-write",r=e.sessionProject??null,n=e.targetProject??null,o={version:1,op:e.op,reach:t,session_project:r,target_project:n};return t==="host-read"?{...o,permitted:!0,verdict:"permitted-host-read",reason:`redskilled permitted ${e.op}: a session reads the whole host, whichever project it was started in`}:t==="daemon-life"?{...o,permitted:!0,verdict:"permitted-daemon-life",reason:`redskilled permitted ${e.op}: it acts on the daemon's own process, not on any project's Workers`}:r==null||r===""?{...o,permitted:!0,verdict:"permitted-unattributed",reason:`redskilled permitted ${e.op}: the session named no project of its own, so there is nothing to refuse it against`}:n!=null&&n===r?{...o,permitted:!0,verdict:"permitted-own-project",reason:`redskilled permitted ${e.op}: the target belongs to project ${JSON.stringify(r)}, which is this session's own`}:{...o,permitted:!1,verdict:"refused-cross-project",reason:`redskilled refused ${e.op} from a session in project ${JSON.stringify(r)}: ${n==null?"it names no Worker of that project":`the target belongs to project ${JSON.stringify(n)}`}. A session reads the whole host and writes only its own project.`}}function pm(e){return e==="single-object"?"rest":"graphql"}function fm(e,t){return e==="stable-poll"?"rest":pm(t)}function Vt(e){return{none:e}}function ot(e,t,r,n,o,s,i){let a=typeof o=="string"?{fallback:o}:{fallback:null,noFallbackBecause:o.none};return{key:e,kind:"read",cardinality:t,volatility:r,surface:i??fm(r,t),budget:n,...a,...i?{only:i}:{},why:s}}function Ot(e,t,r,n){return{key:e,kind:"write",cardinality:"single-object",surface:t,budget:r,fallback:null,noFallbackBecause:"a mutation has one observed GitHub API method",why:n}}var gm=[ot("issue view","single-object","stable-poll","rest","graphql","one issue by number, repeatedly polled while usually unchanged; REST answers in one request"),ot("pr view","single-object","stable-poll","rest","graphql","one pull request by number, polled per Worker per iteration"),ot("repo view","single-object","stable-poll","rest","graphql","one repository's own metadata, repeatedly read while usually unchanged"),ot("run view","single-object","stable-poll","rest",Vt("Actions runs have no GraphQL resource"),"one Actions run repeatedly polled to terminal"),ot("release view","single-object","stable-poll","rest",Vt("release lookup has no GraphQL client method"),"one release by tag, repeatedly checked while usually absent or unchanged"),ot("pr diff","single-object","one-shot","rest",Vt("the complete diff is exposed as a REST media type"),"one pull request's diff, read once for review"),ot("issue list","multi-node","stable-poll","rest","graphql","a repeatedly polled, usually-unchanged issue collection; REST can make an unchanged poll free"),ot("pr list","multi-node","stable-poll","rest","graphql","a repeatedly polled, usually-unchanged pull-request collection; REST can make an unchanged poll free"),ot("pr checks","multi-node","stable-poll","rest","graphql","check contexts are repeatedly polled while awaiting terminal state"),ot("release list","multi-node","stable-poll","rest",Vt("Releases has no GraphQL collection client method"),"release waits poll a usually-unchanged list"),ot("run list","multi-node","stable-poll","rest",Vt("Actions has no GraphQL collection client method"),"run waits poll a usually-unchanged list"),ot("label list","multi-node","one-shot","graphql","rest","a label connection loaded once for the current operation"),ot("issue list (search)","multi-node","stable-poll","search",Vt("search is ineligible for diverted traffic"),"queue discovery polls usually-unchanged search results through the 30/min search connection"),ot("pr list (search)","multi-node","stable-poll","search",Vt("search is ineligible for diverted traffic"),"PR discovery polls usually-unchanged search results through the 30/min search connection"),ot("search issues","multi-repository","one-shot","search",Vt("search is ineligible for diverted traffic"),"a one-shot cross-repository read through the REST search endpoint, metered 30/min","rest"),ot("search prs","multi-repository","one-shot","search",Vt("search is ineligible for diverted traffic"),"a one-shot cross-repository read through the REST search endpoint, metered 30/min","rest"),ot("search repos","multi-repository","one-shot","search",Vt("search is ineligible for diverted traffic"),"a one-shot cross-repository read through the REST search endpoint, metered 30/min","rest"),ot("api graphql","multi-node","one-shot","graphql",Vt("the caller explicitly chose GraphQL"),"the caller supplies one explicit GraphQL query rather than a routed poll"),ot("api rest","single-object","one-shot","rest",Vt("the caller explicitly chose REST"),"the caller supplies one explicit REST path rather than a routed poll"),Ot("issue create","graphql","graphql","gh files an issue with the createIssue mutation \u2014 an exhausted GraphQL pool blocks filing"),Ot("issue edit","graphql","graphql","gh edits labels, body and assignees with GraphQL mutations"),Ot("issue close","graphql","graphql","gh closes with the closeIssue mutation"),Ot("issue reopen","graphql","graphql","gh reopens with the reopenIssue mutation"),Ot("issue comment","rest","rest","gh POSTs to `repos/{o}/{r}/issues/{n}/comments`, a REST request"),Ot("issue develop","graphql","graphql","linked-branch creation is a GraphQL mutation"),Ot("pr create","rest","rest","gh POSTs to `repos/{o}/{r}/pulls`, a REST request"),Ot("pr comment","rest","rest","a pull request comment is an issue comment: the same REST POST"),Ot("pr merge","graphql","graphql","gh merges with the mergePullRequest mutation"),Ot("pr close","graphql","graphql","gh closes with a GraphQL mutation"),Ot("pr edit","graphql","graphql","gh edits with GraphQL mutations"),Ot("pr ready","graphql","graphql","marking ready-for-review is a GraphQL mutation"),Ot("pr update-branch","rest","rest","gh PUTs `repos/{o}/{r}/pulls/{n}/update-branch`, a REST request"),Ot("label create","rest","rest","gh POSTs `repos/{o}/{r}/labels`, a REST request")],JT=new Map(gm.map(e=>[e.key,e]));function hm(e){let t=[],r=0;for(;r<e.length&&e[r].startsWith("-");)r+=e[r]==="-R"||e[r]==="--repo"?2:1;for(;r<e.length&&!e[r].startsWith("-")&&t.length<2;)t.push(e[r]),r+=1;return t}function Zd(e){let t=hm(e);if(t.length===0)return"";if(t[0]==="api")return t[1]==="graphql"?"api graphql":"api rest";let r=t.length===1?t[0]:`${t[0]} ${t[1]}`;return t[1]==="list"&&e.includes("--search")?`${r} (search)`:r}var la=class extends Error{name="UnclassifiedGithubOperationError";operation;args;constructor(t){let r=Zd(t);super(`unclassified GitHub operation ${JSON.stringify(r||"(empty argv)")}: add an entry to GITHUB_OPERATIONS in packages/github/surface.ts stating its cardinality. Defaulting to GraphQL is what sent every single-object poll to the node-point pool (ADR 0132 decision 4).`),this.operation=r,this.args=[...t]}};function mm(e){return JT.get(Zd(e))??null}function bm(e){let t=mm(e);if(!t)throw new la(e);return t}function ec(e){return bm(e).surface}import{appendFile as YT,mkdir as QT,readFile as XT}from"node:fs/promises";import{dirname as ZT}from"node:path";function da(e){let t=e.now??(()=>new Date().toISOString()),r=Promise.resolve();return{record(n){let o=eP(n.operation,n.cost,n.observedAt??t(),n.actor),s=Mt().push(rP(o));return r=r.then(async()=>{await QT(ZT(e.path),{recursive:!0}),await YT(e.path,s,"utf8")}),r},async report(n){await r;let o=tc(n.from,"report window start"),s=tc(n.to,"report window end");if(s<=o)throw new Error("GitHub attribution report window end must be after its start");let i=await tP(e.path),a=new Map;for(let d of i.observations){let c=Date.parse(d.observed_at);if(c<o||c>=s||n.pool!==void 0&&d.pool!==n.pool)continue;let u=`${d.pool}\0${d.operation_key}\0${d.actor??""}`,p=a.get(u);a.set(u,{operation_key:d.operation_key,pool:d.pool,...d.actor===void 0?{}:{actor:d.actor},count:(p?.count??0)+1,cost:(p?.cost??0)+d.cost})}let l=[...a.values()].sort((d,c)=>c.cost-d.cost||c.count-d.count||d.operation_key.localeCompare(c.operation_key)||d.pool.localeCompare(c.pool)||(d.actor??"").localeCompare(c.actor??""));return{version:1,origin:"process-attribution",window:{from:n.from,to:n.to},pool:n.pool??null,total_count:l.reduce((d,c)=>d+c.count,0),total_cost:l.reduce((d,c)=>d+c.cost,0),operations:l,unreadable_records:i.unreadable}}}}function eP(e,t,r,n){if(tc(r,"GitHub spend observation"),!Number.isSafeInteger(t)||t<0)throw new Error(`GitHub spend observation cost must be a non-negative safe integer; received ${t}`);if(n!==void 0&&n.trim()==="")throw new Error("GitHub spend observation actor must be non-empty when supplied");return{version:1,observed_at:r,operation_key:e.key,pool:e.budget,...n===void 0?{}:{actor:n},cost:t}}async function tP(e){let t;try{t=await XT(e,"utf8")}catch(s){if(sP(s)&&s.code==="ENOENT")return{observations:[],unreadable:0};throw s}let r=[],n=0,o=t.split(`
66
+ `);for(let s=0;s<o.length;s+=1){let i=o[s];if(i.trim()==="")continue;let a=o[s+1];if(!i.startsWith("[]{")||a===void 0||a.trim()===""){n+=1;continue}let l;try{l=wr(`${i}
68
67
  ${a}
69
- `)[0]}catch{n+=1,s+=1;continue}if(!_R(l)){n+=1,s+=1;continue}t.push(l),s+=1}return{observations:t,unreadable:n}}function bR(e){return{version:e.version,observed_at:e.observed_at,operation_key:e.operation_key,pool:e.pool,...e.actor===void 0?{}:{actor:e.actor},cost:e.cost}}function _R(e){return RR(e)?e.version===1&&typeof e.observed_at=="string"&&Number.isFinite(Date.parse(e.observed_at))&&typeof e.operation_key=="string"&&e.operation_key!==""&&(e.pool==="rest"||e.pool==="graphql"||e.pool==="search")&&(e.actor===void 0||typeof e.actor=="string"&&e.actor!=="")&&typeof e.cost=="number"&&Number.isSafeInteger(e.cost)&&e.cost>=0:!1}function Hi(e,r){let t=Date.parse(e);if(!Number.isFinite(t))throw new Error(`${r} must be an ISO-8601 instant; received ${JSON.stringify(e)}`);return t}function RR(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function wR(e){return e instanceof Error&&"code"in e}var Ku=Ss(Ki(),1);var nr=class extends Error{name;status;request;response;constructor(r,t,n){super(r,{cause:n.cause}),this.name="HttpError",this.status=Number.parseInt(t),Number.isNaN(this.status)&&(this.status=0);"response"in n&&(this.response=n.response);let o=Object.assign({},n.request);n.request.headers.authorization&&(o.headers=Object.assign({},n.request.headers,{authorization:n.request.headers.authorization.replace(/(?<! ) .*$/," [REDACTED]")})),o.url=o.url.replace(/\bclient_secret=\w+/g,"client_secret=[REDACTED]").replace(/\baccess_token=\w+/g,"access_token=[REDACTED]"),this.request=o}};var ER="0.0.0-development";function vR(e){return e.request!==void 0}async function Vu(e,r,t,n){if(!vR(t)||!t?.request.request)throw t;if(t.status>=400&&!e.doNotRetry.includes(t.status)){let o=n.request.retries!=null?n.request.retries:e.retries,s=Math.pow((n.request.retryCount||0)+1,2);throw r.retry.retryRequest(t,o,s)}throw t}async function SR(e,r,t,n){let o=new Ku.default;return o.on("failed",function(s,i){let a=~~s.request.request?.retries,l=~~s.request.request?.retryAfter;if(n.request.retryCount=i.retryCount+1,a>i.retryCount)return l*e.retryAfterBaseValue}),o.schedule(TR.bind(null,e,r,t),n)}async function TR(e,r,t,n){let o=await t(n);if(o.data&&o.data.errors&&o.data.errors.length>0&&/Something went wrong while executing your query/.test(o.data.errors[0].message)){let s=new nr(o.data.errors[0].message,500,{request:n,response:o});return Vu(e,r,s,n)}return o}function Ji(e,r){let t=Object.assign({enabled:!0,retryAfterBaseValue:1e3,doNotRetry:[400,401,403,404,410,422,451],retries:3},r.retry),n={retry:{retryRequest:(o,s,i)=>(o.request.request=Object.assign({},o.request.request,{retries:s,retryAfter:i}),o)}};return t.enabled&&(e.hook.error("request",Vu.bind(null,t,n)),e.hook.wrap("request",SR.bind(null,t,n))),n}Ji.VERSION=ER;var zu=Ss(Ki(),1),xR="0.0.0-development",zi=()=>Promise.resolve();function PR(e,r,t){return e.retryLimiter.schedule(OR,e,r,t)}async function OR(e,r,t){let{pathname:n}=new URL(t.url,"http://github.test"),o=AR(t.method,n),s=!o&&t.method!=="GET"&&t.method!=="HEAD",i=t.method==="GET"&&n.startsWith("/search/"),a=n.startsWith("/graphql"),d=~~r.retryCount>0?{priority:0,weight:0}:{};e.clustering&&(d.expiration=1e3*60),(s||a)&&await e.write.key(e.id).schedule(d,zi),s&&e.triggersNotification(n)&&await e.notifications.key(e.id).schedule(d,zi),i&&await e.search.key(e.id).schedule(d,zi);let c=(o?e.auth:e.global).key(e.id).schedule(d,r,t);if(a){let u=await c;if(u.data.errors!=null&&u.data.errors.some(m=>m.type==="RATE_LIMITED"))throw Object.assign(new Error("GraphQL Rate Limit Exceeded"),{response:u,data:u.data})}return c}function AR(e,r){return e==="PATCH"&&/^\/applications\/[^/]+\/token\/scoped$/.test(r)||e==="POST"&&(/^\/applications\/[^/]+\/token$/.test(r)||/^\/app\/installations\/[^/]+\/access_tokens$/.test(r)||r==="/login/oauth/access_token")}var DR=["/orgs/{org}/invitations","/orgs/{org}/invitations/{invitation_id}","/orgs/{org}/teams/{team_slug}/discussions","/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments","/repos/{owner}/{repo}/collaborators/{username}","/repos/{owner}/{repo}/commits/{commit_sha}/comments","/repos/{owner}/{repo}/issues","/repos/{owner}/{repo}/issues/{issue_number}/comments","/repos/{owner}/{repo}/issues/{issue_number}/sub_issue","/repos/{owner}/{repo}/issues/{issue_number}/sub_issues/priority","/repos/{owner}/{repo}/pulls","/repos/{owner}/{repo}/pulls/{pull_number}/comments","/repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies","/repos/{owner}/{repo}/pulls/{pull_number}/merge","/repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers","/repos/{owner}/{repo}/pulls/{pull_number}/reviews","/repos/{owner}/{repo}/releases","/teams/{team_id}/discussions","/teams/{team_id}/discussions/{discussion_number}/comments"];function jR(e){let t=`^(?:${e.map(n=>n.split("/").map(o=>o.startsWith("{")?"(?:.+?)":o).join("/")).map(n=>`(?:${n})`).join("|")})[^/]*$`;return new RegExp(t,"i")}var Ju=jR(DR),Qu=Ju.test.bind(Ju),je={},LR=function(e,r){je.global=new e.Group({id:"octokit-global",maxConcurrent:10,...r}),je.auth=new e.Group({id:"octokit-auth",maxConcurrent:1,...r}),je.search=new e.Group({id:"octokit-search",maxConcurrent:1,minTime:2e3,...r}),je.write=new e.Group({id:"octokit-write",maxConcurrent:1,minTime:1e3,...r}),je.notifications=new e.Group({id:"octokit-notifications",maxConcurrent:1,minTime:3e3,...r})};function Io(e,r){let{enabled:t=!0,Bottleneck:n=zu.default,id:o="no-id",timeout:s=1e3*60*2,connection:i}=r.throttle||{};if(!t)return{};let a={timeout:s};typeof i<"u"&&(a.connection=i);let l=Object.assign({clustering:i!=null,triggersNotification:Qu,fallbackSecondaryRateRetryAfter:60,retryAfterBaseValue:1e3,id:o},r.throttle);if(typeof l.onSecondaryRateLimit!="function"||typeof l.onRateLimit!="function")throw new Error(`octokit/plugin-throttling error:
68
+ `)[0]}catch{n+=1,s+=1;continue}if(!nP(l)){n+=1,s+=1;continue}r.push(l),s+=1}return{observations:r,unreadable:n}}function rP(e){return{version:e.version,observed_at:e.observed_at,operation_key:e.operation_key,pool:e.pool,...e.actor===void 0?{}:{actor:e.actor},cost:e.cost}}function nP(e){return oP(e)?e.version===1&&typeof e.observed_at=="string"&&Number.isFinite(Date.parse(e.observed_at))&&typeof e.operation_key=="string"&&e.operation_key!==""&&(e.pool==="rest"||e.pool==="graphql"||e.pool==="search")&&(e.actor===void 0||typeof e.actor=="string"&&e.actor!=="")&&typeof e.cost=="number"&&Number.isSafeInteger(e.cost)&&e.cost>=0:!1}function tc(e,t){let r=Date.parse(e);if(!Number.isFinite(r))throw new Error(`${t} must be an ISO-8601 instant; received ${JSON.stringify(e)}`);return r}function oP(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function sP(e){return e instanceof Error&&"code"in e}var km=Bl(oc(),1);var Ur=class extends Error{name;status;request;response;constructor(t,r,n){super(t,{cause:n.cause}),this.name="HttpError",this.status=Number.parseInt(r),Number.isNaN(this.status)&&(this.status=0);"response"in n&&(this.response=n.response);let o=Object.assign({},n.request);n.request.headers.authorization&&(o.headers=Object.assign({},n.request.headers,{authorization:n.request.headers.authorization.replace(/(?<! ) .*$/," [REDACTED]")})),o.url=o.url.replace(/\bclient_secret=\w+/g,"client_secret=[REDACTED]").replace(/\baccess_token=\w+/g,"access_token=[REDACTED]"),this.request=o}};var iP="0.0.0-development";function aP(e){return e.request!==void 0}async function ym(e,t,r,n){if(!aP(r)||!r?.request.request)throw r;if(r.status>=400&&!e.doNotRetry.includes(r.status)){let o=n.request.retries!=null?n.request.retries:e.retries,s=Math.pow((n.request.retryCount||0)+1,2);throw t.retry.retryRequest(r,o,s)}throw r}async function lP(e,t,r,n){let o=new km.default;return o.on("failed",function(s,i){let a=~~s.request.request?.retries,l=~~s.request.request?.retryAfter;if(n.request.retryCount=i.retryCount+1,a>i.retryCount)return l*e.retryAfterBaseValue}),o.schedule(dP.bind(null,e,t,r),n)}async function dP(e,t,r,n){let o=await r(n);if(o.data&&o.data.errors&&o.data.errors.length>0&&/Something went wrong while executing your query/.test(o.data.errors[0].message)){let s=new Ur(o.data.errors[0].message,500,{request:n,response:o});return ym(e,t,s,n)}return o}function sc(e,t){let r=Object.assign({enabled:!0,retryAfterBaseValue:1e3,doNotRetry:[400,401,403,404,410,422,451],retries:3},t.retry),n={retry:{retryRequest:(o,s,i)=>(o.request.request=Object.assign({},o.request.request,{retries:s,retryAfter:i}),o)}};return r.enabled&&(e.hook.error("request",ym.bind(null,r,n)),e.hook.wrap("request",lP.bind(null,r,n))),n}sc.VERSION=iP;var Rm=Bl(oc(),1),cP="0.0.0-development",ic=()=>Promise.resolve();function uP(e,t,r){return e.retryLimiter.schedule(pP,e,t,r)}async function pP(e,t,r){let{pathname:n}=new URL(r.url,"http://github.test"),o=fP(r.method,n),s=!o&&r.method!=="GET"&&r.method!=="HEAD",i=r.method==="GET"&&n.startsWith("/search/"),a=n.startsWith("/graphql"),d=~~t.retryCount>0?{priority:0,weight:0}:{};e.clustering&&(d.expiration=1e3*60),(s||a)&&await e.write.key(e.id).schedule(d,ic),s&&e.triggersNotification(n)&&await e.notifications.key(e.id).schedule(d,ic),i&&await e.search.key(e.id).schedule(d,ic);let c=(o?e.auth:e.global).key(e.id).schedule(d,t,r);if(a){let u=await c;if(u.data.errors!=null&&u.data.errors.some(p=>p.type==="RATE_LIMITED"))throw Object.assign(new Error("GraphQL Rate Limit Exceeded"),{response:u,data:u.data})}return c}function fP(e,t){return e==="PATCH"&&/^\/applications\/[^/]+\/token\/scoped$/.test(t)||e==="POST"&&(/^\/applications\/[^/]+\/token$/.test(t)||/^\/app\/installations\/[^/]+\/access_tokens$/.test(t)||t==="/login/oauth/access_token")}var gP=["/orgs/{org}/invitations","/orgs/{org}/invitations/{invitation_id}","/orgs/{org}/teams/{team_slug}/discussions","/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments","/repos/{owner}/{repo}/collaborators/{username}","/repos/{owner}/{repo}/commits/{commit_sha}/comments","/repos/{owner}/{repo}/issues","/repos/{owner}/{repo}/issues/{issue_number}/comments","/repos/{owner}/{repo}/issues/{issue_number}/sub_issue","/repos/{owner}/{repo}/issues/{issue_number}/sub_issues/priority","/repos/{owner}/{repo}/pulls","/repos/{owner}/{repo}/pulls/{pull_number}/comments","/repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies","/repos/{owner}/{repo}/pulls/{pull_number}/merge","/repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers","/repos/{owner}/{repo}/pulls/{pull_number}/reviews","/repos/{owner}/{repo}/releases","/teams/{team_id}/discussions","/teams/{team_id}/discussions/{discussion_number}/comments"];function hP(e){let r=`^(?:${e.map(n=>n.split("/").map(o=>o.startsWith("{")?"(?:.+?)":o).join("/")).map(n=>`(?:${n})`).join("|")})[^/]*$`;return new RegExp(r,"i")}var wm=hP(gP),_m=wm.test.bind(wm),rr={},mP=function(e,t){rr.global=new e.Group({id:"octokit-global",maxConcurrent:10,...t}),rr.auth=new e.Group({id:"octokit-auth",maxConcurrent:1,...t}),rr.search=new e.Group({id:"octokit-search",maxConcurrent:1,minTime:2e3,...t}),rr.write=new e.Group({id:"octokit-write",maxConcurrent:1,minTime:1e3,...t}),rr.notifications=new e.Group({id:"octokit-notifications",maxConcurrent:1,minTime:3e3,...t})};function ca(e,t){let{enabled:r=!0,Bottleneck:n=Rm.default,id:o="no-id",timeout:s=1e3*60*2,connection:i}=t.throttle||{};if(!r)return{};let a={timeout:s};typeof i<"u"&&(a.connection=i);let l=Object.assign({clustering:i!=null,triggersNotification:_m,fallbackSecondaryRateRetryAfter:60,retryAfterBaseValue:1e3,id:o},t.throttle);if(typeof l.onSecondaryRateLimit!="function"||typeof l.onRateLimit!="function")throw new Error(`octokit/plugin-throttling error:
70
69
  You must pass the onSecondaryRateLimit and onRateLimit error handlers.
71
70
  See https://octokit.github.io/rest.js/#throttling
72
71
 
@@ -76,32 +75,33 @@ ${a}
76
75
  onRateLimit: (retryAfter, options) => {/* ... */}
77
76
  }
78
77
  })
79
- `);let d=!1,c=()=>{if(d)return;d=!0,je.global==null&&LR(n,a),l.global=l.global??je.global,l.auth=l.auth??je.auth,l.search=l.search??je.search,l.write=l.write??je.write,l.notifications=l.notifications??je.notifications,l.retryLimiter=l.retryLimiter??new n;let u={},m=new n.Events(u);u.on("secondary-limit",l.onSecondaryRateLimit),u.on("rate-limit",l.onRateLimit),u.on("error",f=>e.log.warn("Error in throttling-plugin limit handler",f)),l.retryLimiter.on("failed",async function(f,h){let[v,k,T]=h.args,{pathname:I}=new URL(T.url,"http://github.test");if(!(I.startsWith("/graphql")&&f.status!==401||f.status===403||f.status===429))return;let G=~~k.retryCount;k.retryCount=G,T.request.retryCount=G;let{wantRetry:H,retryAfter:ee=0}=await async function(){if(/\bsecondary rate\b/i.test(f.message)){let q=Number(f.response.headers["retry-after"])||v.fallbackSecondaryRateRetryAfter;return{wantRetry:await m.trigger("secondary-limit",q,T,e,G),retryAfter:q}}if(f.response.headers!=null&&f.response.headers["x-ratelimit-remaining"]==="0"||(f.response.data?.errors??[]).some(q=>q.type==="RATE_LIMITED")){let q=new Date(~~f.response.headers["x-ratelimit-reset"]*1e3).getTime(),he=Math.max(Math.ceil((q-Date.now())/1e3)+1,0);return{wantRetry:await m.trigger("rate-limit",he,T,e,G),retryAfter:he}}return{}}();if(H)return k.retryCount++,ee*v.retryAfterBaseValue})};return e.hook.wrap("request",(u,m)=>(c(),PR(l,u,m))),{}}Io.VERSION=xR;Io.triggersNotification=Qu;function mr(){return typeof navigator=="object"&&"userAgent"in navigator?navigator.userAgent:typeof process=="object"&&process.version!==void 0?`Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`:"<environment undetectable>"}function $o(e,r,t,n){if(typeof t!="function")throw new Error("method for before hook must be a function");return n||(n={}),Array.isArray(r)?r.reverse().reduce((o,s)=>$o.bind(null,e,s,o,n),t)():Promise.resolve().then(()=>e.registry[r]?e.registry[r].reduce((o,s)=>s.hook.bind(null,o,n),t)():t(n))}function Yu(e,r,t,n){let o=n;e.registry[t]||(e.registry[t]=[]),r==="before"&&(n=(s,i)=>Promise.resolve().then(o.bind(null,i)).then(s.bind(null,i))),r==="after"&&(n=(s,i)=>{let a;return Promise.resolve().then(s.bind(null,i)).then(l=>(a=l,o(a,i))).then(()=>a)}),r==="error"&&(n=(s,i)=>Promise.resolve().then(s.bind(null,i)).catch(a=>o(a,i))),e.registry[t].push({hook:n,orig:o})}function Xu(e,r,t){if(!e.registry[r])return;let n=e.registry[r].map(o=>o.orig).indexOf(t);n!==-1&&e.registry[r].splice(n,1)}var Zu=Function.bind,ep=Zu.bind(Zu);function rp(e,r,t){let n=ep(Xu,null).apply(null,t?[r,t]:[r]);e.api={remove:n},e.remove=n,["before","error","after","wrap"].forEach(o=>{let s=t?[r,o,t]:[r,o];e[o]=e.api[o]=ep(Yu,null).apply(null,s)})}function GR(){let e=Symbol("Singular"),r={registry:{}},t=$o.bind(null,r,e);return rp(t,r,e),t}function IR(){let e={registry:{}},r=$o.bind(null,e);return rp(r,e),r}var tp={Singular:GR,Collection:IR};var $R="0.0.0-development",CR=`octokit-endpoint.js/${$R} ${mr()}`,NR={method:"GET",baseUrl:"https://api.github.com",headers:{accept:"application/vnd.github.v3+json","user-agent":CR},mediaType:{format:""}};function MR(e){return e?Object.keys(e).reduce((r,t)=>(r[t.toLowerCase()]=e[t],r),{}):{}}function FR(e){if(typeof e!="object"||e===null||Object.prototype.toString.call(e)!=="[object Object]")return!1;let r=Object.getPrototypeOf(e);if(r===null)return!0;let t=Object.prototype.hasOwnProperty.call(r,"constructor")&&r.constructor;return typeof t=="function"&&t instanceof t&&Function.prototype.call(t)===Function.prototype.call(e)}function sp(e,r){let t=Object.assign({},e);return Object.keys(r).forEach(n=>{FR(r[n])?n in e?t[n]=sp(e[n],r[n]):Object.assign(t,{[n]:r[n]}):Object.assign(t,{[n]:r[n]})}),t}function np(e){for(let r in e)e[r]===void 0&&delete e[r];return e}function Yi(e,r,t){if(typeof r=="string"){let[o,s]=r.split(" ");t=Object.assign(s?{method:o,url:s}:{url:o},t)}else t=Object.assign({},r);t.headers=MR(t.headers),np(t),np(t.headers);let n=sp(e||{},t);return t.url==="/graphql"&&(e&&e.mediaType.previews?.length&&(n.mediaType.previews=e.mediaType.previews.filter(o=>!n.mediaType.previews.includes(o)).concat(n.mediaType.previews)),n.mediaType.previews=(n.mediaType.previews||[]).map(o=>o.replace(/-preview/,""))),n}function WR(e,r){let t=/\?/.test(e)?"&":"?",n=Object.keys(r);return n.length===0?e:e+t+n.map(o=>o==="q"?"q="+r.q.split("+").map(encodeURIComponent).join("+"):`${o}=${encodeURIComponent(r[o])}`).join("&")}var UR=/\{[^{}}]+\}/g;function BR(e){return e.replace(/(?:^\W+)|(?:(?<!\W)\W+$)/g,"").split(/,/)}function HR(e){let r=e.match(UR);return r?r.map(BR).reduce((t,n)=>t.concat(n),[]):[]}function op(e,r){let t={__proto__:null};for(let n of Object.keys(e))r.indexOf(n)===-1&&(t[n]=e[n]);return t}function ip(e){return e.split(/(%[0-9A-Fa-f]{2})/g).map(function(r){return/%[0-9A-Fa-f]/.test(r)||(r=encodeURI(r).replace(/%5B/g,"[").replace(/%5D/g,"]")),r}).join("")}function pt(e){return encodeURIComponent(e).replace(/[!'()*]/g,function(r){return"%"+r.charCodeAt(0).toString(16).toUpperCase()})}function cn(e,r,t){return r=e==="+"||e==="#"?ip(r):pt(r),t?pt(t)+"="+r:r}function ut(e){return e!=null}function Qi(e){return e===";"||e==="&"||e==="?"}function qR(e,r,t,n){var o=e[t],s=[];if(ut(o)&&o!=="")if(typeof o=="string"||typeof o=="number"||typeof o=="bigint"||typeof o=="boolean")o=o.toString(),n&&n!=="*"&&(o=o.substring(0,parseInt(n,10))),s.push(cn(r,o,Qi(r)?t:""));else if(n==="*")Array.isArray(o)?o.filter(ut).forEach(function(i){s.push(cn(r,i,Qi(r)?t:""))}):Object.keys(o).forEach(function(i){ut(o[i])&&s.push(cn(r,o[i],i))});else{let i=[];Array.isArray(o)?o.filter(ut).forEach(function(a){i.push(cn(r,a))}):Object.keys(o).forEach(function(a){ut(o[a])&&(i.push(pt(a)),i.push(cn(r,o[a].toString())))}),Qi(r)?s.push(pt(t)+"="+i.join(",")):i.length!==0&&s.push(i.join(","))}else r===";"?ut(o)&&s.push(pt(t)):o===""&&(r==="&"||r==="?")?s.push(pt(t)+"="):o===""&&s.push("");return s}function VR(e){return{expand:KR.bind(null,e)}}function KR(e,r){var t=["+","#",".","/",";","?","&"];return e=e.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g,function(n,o,s){if(o){let a="",l=[];if(t.indexOf(o.charAt(0))!==-1&&(a=o.charAt(0),o=o.substr(1)),o.split(/,/g).forEach(function(d){var c=/([^:\*]*)(?::(\d+)|(\*))?/.exec(d);l.push(qR(r,a,c[1],c[2]||c[3]))}),a&&a!=="+"){var i=",";return a==="?"?i="&":a!=="#"&&(i=a),(l.length!==0?a:"")+l.join(i)}else return l.join(",")}else return ip(s)}),e==="/"?e:e.replace(/\/$/,"")}function ap(e){let r=e.method.toUpperCase(),t=(e.url||"/").replace(/:([a-z]\w+)/g,"{$1}"),n=Object.assign({},e.headers),o,s=op(e,["method","baseUrl","url","headers","request","mediaType"]),i=HR(t);t=VR(t).expand(s),/^http/.test(t)||(t=e.baseUrl+t);let a=Object.keys(e).filter(c=>i.includes(c)).concat("baseUrl"),l=op(s,a);if(!/application\/octet-stream/i.test(n.accept)&&(e.mediaType.format&&(n.accept=n.accept.split(/,/).map(c=>c.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/,`application/vnd$1$2.${e.mediaType.format}`)).join(",")),t.endsWith("/graphql")&&e.mediaType.previews?.length)){let c=n.accept.match(/(?<![\w-])[\w-]+(?=-preview)/g)||[];n.accept=c.concat(e.mediaType.previews).map(u=>{let m=e.mediaType.format?`.${e.mediaType.format}`:"+json";return`application/vnd.github.${u}-preview${m}`}).join(",")}return["GET","HEAD"].includes(r)?t=WR(t,l):"data"in l?o=l.data:Object.keys(l).length&&(o=l),!n["content-type"]&&typeof o<"u"&&(n["content-type"]="application/json; charset=utf-8"),["PATCH","PUT"].includes(r)&&typeof o>"u"&&(o=""),Object.assign({method:r,url:t,headers:n},typeof o<"u"?{body:o}:null,e.request?{request:e.request}:null)}function JR(e,r,t){return ap(Yi(e,r,t))}function lp(e,r){let t=Yi(e,r),n=JR.bind(null,t);return Object.assign(n,{DEFAULTS:t,defaults:lp.bind(null,t),merge:Yi.bind(null,t),parse:ap})}var dp=lp(null,NR);var xp=Ss(hp(),1);var ow=/^-?\d+$/,Mo=/^-?\d+n+$/,gr=JSON.stringify,ra=JSON.parse,Rp=/^-?\d+n$/,yp=/([\[:])?"(-?\d+)n"($|\s*[,\}\]])/g,kp=/([\[:])?("-?\d+n+)n("$|"\s*[,\}\]])/g,ta=e=>e===void 0||typeof e=="function"||typeof e=="symbol",na=e=>e!==null&&typeof e=="object"&&e.constructor&&e.constructor.name==="RawJSON",sw=(e,r,t)=>{let n="";typeof t=="number"?n=" ".repeat(Math.min(10,Math.max(0,Math.floor(t)))):typeof t=="string"&&(n=t.slice(0,10));let o=typeof r=="function",s=Array.isArray(r)?new Set(r.map(String)):null,i=(h,v,k)=>(k!==null&&typeof k=="object"&&typeof k.toJSON=="function"&&(k=k.toJSON(v)),typeof k=="string"&&Mo.test(k)?k+"n":typeof k=="bigint"?"rawJSON"in JSON?JSON.rawJSON(k.toString()):k.toString()+"n":(o&&(k=r.call(h,v,k)),k!==null&&typeof k=="object"&&(k instanceof Number||k instanceof String||k instanceof Boolean)&&(k=k.valueOf()),k)),a=i({"":e},"",e);if(ta(a))return;let l=a===null||typeof a!="object",d=na(a);if(l||d)return gr(a);let c=[],u=0,m=[{parent:{"":a},key:"",val:a,isArray:Array.isArray(a),keys:Array.isArray(a)?null:Object.keys(a),index:0,first:!0}],f=new WeakSet([a]);for(;m.length>0;){let h=m[m.length-1];h.index===0&&(c.push(h.isArray?"[":"{"),u++);let v=!1;if(h.isArray)if(h.index<h.val.length){h.first||c.push(","),n&&c.push(`
80
- `+n.repeat(u));let k=h.val[h.index],T=i(h.val,String(h.index),k);if(ta(T))c.push("null"),h.first=!1,h.index++;else{let I=T!==null&&typeof T=="object",F=na(T);if(I&&!F){if(f.has(T))throw new TypeError("Converting circular structure to JSON");f.add(T),m.push({parent:h.val,key:String(h.index),val:T,isArray:Array.isArray(T),keys:Array.isArray(T)?null:Object.keys(T),index:0,first:!0}),h.first=!1,h.index++}else c.push(gr(T)),h.first=!1,h.index++}}else v=!0;else{for(;h.index<h.keys.length;){let T=h.keys[h.index++];if(s&&!s.has(T))continue;let F=h.val[T],G=i(h.val,T,F);if(ta(G))continue;h.first||c.push(","),n?c.push(`
81
- `+n.repeat(u)+gr(T)+": "):c.push(gr(T)+":");let H=G!==null&&typeof G=="object",ee=na(G);if(H&&!ee){if(f.has(G))throw new TypeError("Converting circular structure to JSON");f.add(G),m.push({parent:h.val,key:T,val:G,isArray:Array.isArray(G),keys:Array.isArray(G)?null:Object.keys(G),index:0,first:!0}),h.first=!1;break}else c.push(gr(G)),h.first=!1}h.index>=h.keys.length&&m[m.length-1]===h&&(v=!0)}v&&(u--,!h.first&&n&&c.push(`
82
- `+n.repeat(u)),c.push(h.isArray?"]":"}"),f.delete(h.val),m.pop())}return c.join("")},wp=(e,r,t)=>{try{return"rawJSON"in JSON?gr(e,(a,l)=>typeof l=="bigint"?JSON.rawJSON(l.toString()):typeof r=="function"?r(a,l):(Array.isArray(r)&&r.includes(a),l),t):e?gr(e,(a,l)=>typeof l=="string"&&Mo.test(l)||typeof l=="bigint"?l.toString()+"n":typeof r=="function"?r(a,l):(Array.isArray(r)&&r.includes(a),l),t).replace(yp,"$1$2$3").replace(kp,"$1$2$3"):gr(e,r,t)}catch(n){if(n instanceof RangeError){let o=sw(e,r,t);return o===void 0?void 0:"rawJSON"in JSON?o:o.replace(yp,"$1$2$3").replace(kp,"$1$2$3")}throw n}},No=new Map,iw=()=>{let e=JSON.parse.toString();if(No.has(e))return No.get(e);try{let r=JSON.parse("1",(t,n,o)=>!!o?.source&&o.source==="1");return No.set(e,r),r}catch{return No.set(e,!1),!1}},aw=(e,r,t,n)=>typeof r=="string"&&Rp.test(r)?BigInt(r.slice(0,-1)):typeof r=="string"&&Mo.test(r)?r.slice(0,-1):typeof n=="function"?n(e,r,t):r,lw=(e,r)=>JSON.parse(e,(t,n,o)=>{let s=typeof n=="number",i=n>Number.MAX_SAFE_INTEGER||n<Number.MIN_SAFE_INTEGER,a=s&&i,l=o&&ow.test(o.source);return a&&l?BigInt(o.source):typeof r=="function"?r(t,n,o):n}),Ep=Number.MAX_SAFE_INTEGER.toString(),bp=Ep.length,dw=/"(?:\\.|[^"])*"|-?(0|[1-9][0-9]*)(\.[0-9]+)?([eE][+-]?[0-9]+)?/g,cw=/^"-?\d+n+"$/,uw=(e,r)=>{let t={"":e},n=[{parent:t,key:"",visited:!1}];for(;n.length>0;){let o=n[n.length-1];if(o.visited){let{parent:s,key:i}=o,a=s[i];typeof a=="string"&&(Rp.test(a)?a=BigInt(a.slice(0,-1)):Mo.test(a)&&(a=a.slice(0,-1))),typeof r=="function"&&(a=r.call(s,i,a)),a===void 0?delete s[i]:s[i]=a,n.pop()}else{o.visited=!0;let s=o.parent[o.key];if(s!==null&&typeof s=="object"){let a=Object.keys(s);for(let l=a.length-1;l>=0;l--)n.push({parent:s,key:a[l],visited:!1})}}}return t[""]},_p=e=>e.replace(dw,(r,t,n,o)=>{let s=r[0]==='"';if(s&&cw.test(r))return r.substring(0,r.length-1)+'n"';let a=n||o,l=t&&(t.length<bp||t.length===bp&&t<=Ep);return s||a||l?r:'"'+r+'n"'}),vp=(e,r)=>{if(!e)return ra(e,r);try{if(iw())return lw(e,r);let t=_p(e);return ra(t,(n,o,s)=>aw(n,o,s,r))}catch(t){if(t instanceof RangeError){let n=_p(e),o=ra(n);return uw(o,r)}throw t}};var pw="10.0.13",mw={headers:{"user-agent":`octokit-request.js/${pw} ${mr()}`}};function gw(e){if(typeof e!="object"||e===null||Object.prototype.toString.call(e)!=="[object Object]")return!1;let r=Object.getPrototypeOf(e);if(r===null)return!0;let t=Object.prototype.hasOwnProperty.call(r,"constructor")&&r.constructor;return typeof t=="function"&&t instanceof t&&Function.prototype.call(t)===Function.prototype.call(e)}var Sp=()=>"";async function Tp(e){let r=e.request?.fetch||globalThis.fetch;if(!r)throw new Error("fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing");let t=e.request?.log||console,n=e.request?.parseSuccessResponseBody!==!1,o=gw(e.body)||Array.isArray(e.body)?wp(e.body):e.body,s=Object.fromEntries(Object.entries(e.headers).map(([u,m])=>[u,String(m)])),i;try{i=await r(e.url,{method:e.method,body:o,redirect:e.request?.redirect,headers:s,signal:e.request?.signal,...e.body&&{duplex:"half"}})}catch(u){let m="Unknown Error";if(u instanceof Error){if(u.name==="AbortError")throw u.status=500,u;m=u.message,u.name==="TypeError"&&"cause"in u&&(u.cause instanceof Error?m=u.cause.message:typeof u.cause=="string"&&(m=u.cause))}let f=new nr(m,500,{request:e});throw f.cause=u,f}let a=i.status,l=i.url,d={};for(let[u,m]of i.headers)d[u]=m;let c={url:l,status:a,headers:d,data:""};if("deprecation"in d){let u=d.link&&d.link.match(/<([^<>]+)>; rel="deprecation"/),m=u&&u.pop();t.warn(`[@octokit/request] "${e.method} ${e.url}" is deprecated. It is scheduled to be removed on ${d.sunset}${m?`. See ${m}`:""}`)}if(a===204||a===205)return c;if(e.method==="HEAD"){if(a<400)return c;throw new nr(i.statusText,a,{response:c,request:e})}if(a===304)throw c.data=await oa(i),new nr("Not modified",a,{response:c,request:e});if(a>=400)throw c.data=await oa(i),new nr(hw(c.data),a,{response:c,request:e});return c.data=n?await oa(i):i.body,c}async function oa(e){let r=e.headers.get("content-type");if(!r)return e.text().catch(Sp);let t=(0,xp.parse)(r);if(fw(t)){let n="";try{return n=await e.text(),vp(n)}catch{return n}}else return t.type.startsWith("text/")||t.parameters.charset?.toLowerCase()==="utf-8"&&t.type!=="application/octet-stream"?e.text().catch(Sp):e.arrayBuffer().catch(()=>new ArrayBuffer(0))}function fw(e){return e.type==="application/json"||e.type==="application/scim+json"}function hw(e){if(typeof e=="string")return e;if(e instanceof ArrayBuffer)return"Unknown error";if(typeof e=="object"&&e!==null&&"message"in e){let r=e,t="documentation_url"in r?` - ${r.documentation_url}`:"";return Array.isArray(r.errors)?`${r.message}: ${r.errors.map(n=>JSON.stringify(n)).join(", ")}${t}`:`${r.message}${t}`}return`Unknown error: ${JSON.stringify(e)}`}function sa(e,r){let t=e.defaults(r);return Object.assign(function(o,s){let i=t.merge(o,s);if(!i.request||!i.request.hook)return Tp(t.parse(i));let a=(l,d)=>Tp(t.parse(t.merge(l,d)));return Object.assign(a,{endpoint:t,defaults:sa.bind(null,t)}),i.request.hook(a,i)},{endpoint:t,defaults:sa.bind(null,t)})}var un=sa(dp,mw);var yw="0.0.0-development";function kw(e){return`Request failed due to following response errors:
83
- `+e.errors.map(r=>` - ${r.message}`).join(`
84
- `)}var bw=class extends Error{constructor(e,r,t){super(kw(t)),this.request=e,this.headers=r,this.response=t,this.errors=t.errors,this.data=t.data,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}request;headers;response;name="GraphqlResponseError";errors;data},_w=["method","baseUrl","url","headers","request","query","mediaType","operationName"],Rw=["query","method","url"],Pp=/\/api\/v3\/?$/;function ww(e,r,t){if(t){if(typeof r=="string"&&"query"in t)return Promise.reject(new Error('[@octokit/graphql] "query" cannot be used as variable name'));for(let i in t)if(Rw.includes(i))return Promise.reject(new Error(`[@octokit/graphql] "${i}" cannot be used as variable name`))}let n=typeof r=="string"?Object.assign({query:r},t):r,o=Object.keys(n).reduce((i,a)=>_w.includes(a)?(i[a]=n[a],i):(i.variables||(i.variables={}),i.variables[a]=n[a],i),{}),s=n.baseUrl||e.endpoint.DEFAULTS.baseUrl;return Pp.test(s)&&(o.url=s.replace(Pp,"/api/graphql")),e(o).then(i=>{if(i.data.errors){let a={};for(let l of Object.keys(i.headers))a[l]=i.headers[l];throw new bw(o,a,i.data)}return i.data.data})}function ia(e,r){let t=e.defaults(r);return Object.assign((o,s)=>ww(t,o,s),{defaults:ia.bind(null,t),endpoint:t.endpoint})}var zD=ia(un,{headers:{"user-agent":`octokit-graphql.js/${yw} ${mr()}`},method:"POST",url:"/graphql"});function Op(e){return ia(e,{method:"POST",url:"/graphql"})}var aa="(?:[a-zA-Z0-9_-]+)",Ap="\\.",Dp=new RegExp(`^${aa}${Ap}${aa}${Ap}${aa}$`),Ew=Dp.test.bind(Dp);async function vw(e){let r=Ew(e),t=e.startsWith("v1.")||e.startsWith("ghs_"),n=e.startsWith("ghu_");return{type:"token",token:e,tokenType:r?"app":t?"installation":n?"user-to-server":"oauth"}}function Sw(e){return e.split(/\./).length===3?`bearer ${e}`:`token ${e}`}async function Tw(e,r,t,n){let o=r.endpoint.merge(t,n);return o.headers.authorization=Sw(e),r(o)}var jp=function(r){if(!r)throw new Error("[@octokit/auth-token] No token passed to createTokenAuth");if(typeof r!="string")throw new Error("[@octokit/auth-token] Token passed to createTokenAuth is not a string");return r=r.replace(/^(token|bearer) +/i,""),Object.assign(vw.bind(null,r),{hook:Tw.bind(null,r)})};var la="7.0.7";var Lp=()=>{},xw=console.warn.bind(console),Pw=console.error.bind(console);function Ow(e={}){return typeof e.debug!="function"&&(e.debug=Lp),typeof e.info!="function"&&(e.info=Lp),typeof e.warn!="function"&&(e.warn=xw),typeof e.error!="function"&&(e.error=Pw),e}var Gp=`octokit-core.js/${la} ${mr()}`,Fo=class{static VERSION=la;static defaults(r){return class extends this{constructor(...n){let o=n[0]||{};if(typeof r=="function"){super(r(o));return}super(Object.assign({},r,o,o.userAgent&&r.userAgent?{userAgent:`${o.userAgent} ${r.userAgent}`}:null))}}}static plugins=[];static plugin(...r){let t=this.plugins;return class extends this{static plugins=t.concat(r.filter(o=>!t.includes(o)))}}constructor(r={}){let t=new tp.Collection,n={baseUrl:un.endpoint.DEFAULTS.baseUrl,headers:{},request:Object.assign({},r.request,{hook:t.bind(null,"request")}),mediaType:{previews:[],format:""}};if(n.headers["user-agent"]=r.userAgent?`${r.userAgent} ${Gp}`:Gp,r.baseUrl&&(n.baseUrl=r.baseUrl),r.previews&&(n.mediaType.previews=r.previews),r.timeZone&&(n.headers["time-zone"]=r.timeZone),this.request=un.defaults(n),this.graphql=Op(this.request).defaults(n),this.log=Ow(r.log),this.hook=t,r.authStrategy){let{authStrategy:s,...i}=r,a=s(Object.assign({request:this.request,log:this.log,octokit:this,octokitOptions:i},r.auth));t.wrap("request",a.hook),this.auth=a}else if(!r.auth)this.auth=async()=>({type:"unauthenticated"});else{let s=jp(r.auth);t.wrap("request",s.hook),this.auth=s}let o=this.constructor;for(let s=0;s<o.plugins.length;++s)Object.assign(this,o.plugins[s](this,r))}request;graphql;log;hook;auth};var Ip="6.0.0";function da(e){e.hook.wrap("request",(r,t)=>{e.log.debug("request",t);let n=Date.now(),o=e.request.endpoint.parse(t),s=o.url.replace(t.baseUrl,"");return r(t).then(i=>{let a=i.headers["x-github-request-id"];return e.log.info(`${o.method} ${s} - ${i.status} with id ${a} in ${Date.now()-n}ms`),i}).catch(i=>{let a=i.response?.headers["x-github-request-id"]||"UNKNOWN";throw e.log.error(`${o.method} ${s} - ${i.status} with id ${a} in ${Date.now()-n}ms`),i})})}da.VERSION=Ip;var Aw="0.0.0-development";function Dw(e){if(!e.data)return{...e,data:[]};if(!(("total_count"in e.data||"total_commits"in e.data)&&!("url"in e.data)))return e;let t=e.data.incomplete_results,n=e.data.repository_selection,o=e.data.total_count,s=e.data.total_commits;delete e.data.incomplete_results,delete e.data.repository_selection,delete e.data.total_count,delete e.data.total_commits;let i=Object.keys(e.data)[0],a=e.data[i];return e.data=a,typeof t<"u"&&(e.data.incomplete_results=t),typeof n<"u"&&(e.data.repository_selection=n),e.data.total_count=o,e.data.total_commits=s,e}function ca(e,r,t){let n=typeof r=="function"?r.endpoint(t):e.request.endpoint(r,t),o=typeof r=="function"?r:e.request,s=n.method,i=n.headers,a=n.url;return{[Symbol.asyncIterator]:()=>({async next(){if(!a)return{done:!0};try{let l=await o({method:s,url:a,headers:i}),d=Dw(l);if(a=((d.headers.link||"").match(/<([^<>]+)>;\s*rel="next"/)||[])[1],!a&&"total_commits"in d.data){let c=new URL(d.url),u=c.searchParams,m=parseInt(u.get("page")||"1",10),f=parseInt(u.get("per_page")||"250",10);m*f<d.data.total_commits&&(u.set("page",String(m+1)),a=c.toString())}return{value:d}}catch(l){if(l.status!==409)throw l;return a="",{value:{status:200,headers:{},data:[]}}}}})}}function $p(e,r,t,n){return typeof t=="function"&&(n=t,t=void 0),Cp(e,[],ca(e,r,t)[Symbol.asyncIterator](),n)}function Cp(e,r,t,n){return t.next().then(o=>{if(o.done)return r;let s=!1;function i(){s=!0}return r=r.concat(n?n(o.value,i):o.value.data),s?r:Cp(e,r,t,n)})}var pj=Object.assign($p,{iterator:ca});function ua(e){return{paginate:Object.assign($p.bind(null,e),{iterator:ca.bind(null,e)})}}ua.VERSION=Aw;var pa="17.0.0";var jw={actions:{addCustomLabelsToSelfHostedRunnerForOrg:["POST /orgs/{org}/actions/runners/{runner_id}/labels"],addCustomLabelsToSelfHostedRunnerForRepo:["POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],addRepoAccessToSelfHostedRunnerGroupInOrg:["PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}"],addSelectedRepoToOrgSecret:["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"],addSelectedRepoToOrgVariable:["PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}"],approveWorkflowRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve"],cancelWorkflowRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel"],createEnvironmentVariable:["POST /repos/{owner}/{repo}/environments/{environment_name}/variables"],createHostedRunnerForOrg:["POST /orgs/{org}/actions/hosted-runners"],createOrUpdateEnvironmentSecret:["PUT /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}"],createOrUpdateOrgSecret:["PUT /orgs/{org}/actions/secrets/{secret_name}"],createOrUpdateRepoSecret:["PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}"],createOrgVariable:["POST /orgs/{org}/actions/variables"],createRegistrationTokenForOrg:["POST /orgs/{org}/actions/runners/registration-token"],createRegistrationTokenForRepo:["POST /repos/{owner}/{repo}/actions/runners/registration-token"],createRemoveTokenForOrg:["POST /orgs/{org}/actions/runners/remove-token"],createRemoveTokenForRepo:["POST /repos/{owner}/{repo}/actions/runners/remove-token"],createRepoVariable:["POST /repos/{owner}/{repo}/actions/variables"],createWorkflowDispatch:["POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches"],deleteActionsCacheById:["DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}"],deleteActionsCacheByKey:["DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}"],deleteArtifact:["DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"],deleteCustomImageFromOrg:["DELETE /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}"],deleteCustomImageVersionFromOrg:["DELETE /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions/{version}"],deleteEnvironmentSecret:["DELETE /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}"],deleteEnvironmentVariable:["DELETE /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}"],deleteHostedRunnerForOrg:["DELETE /orgs/{org}/actions/hosted-runners/{hosted_runner_id}"],deleteOrgSecret:["DELETE /orgs/{org}/actions/secrets/{secret_name}"],deleteOrgVariable:["DELETE /orgs/{org}/actions/variables/{name}"],deleteRepoSecret:["DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}"],deleteRepoVariable:["DELETE /repos/{owner}/{repo}/actions/variables/{name}"],deleteSelfHostedRunnerFromOrg:["DELETE /orgs/{org}/actions/runners/{runner_id}"],deleteSelfHostedRunnerFromRepo:["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}"],deleteWorkflowRun:["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"],deleteWorkflowRunLogs:["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs"],disableSelectedRepositoryGithubActionsOrganization:["DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}"],disableWorkflow:["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable"],downloadArtifact:["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}"],downloadJobLogsForWorkflowRun:["GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs"],downloadWorkflowRunAttemptLogs:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs"],downloadWorkflowRunLogs:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs"],enableSelectedRepositoryGithubActionsOrganization:["PUT /orgs/{org}/actions/permissions/repositories/{repository_id}"],enableWorkflow:["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable"],forceCancelWorkflowRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel"],generateRunnerJitconfigForOrg:["POST /orgs/{org}/actions/runners/generate-jitconfig"],generateRunnerJitconfigForRepo:["POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig"],getActionsCacheList:["GET /repos/{owner}/{repo}/actions/caches"],getActionsCacheUsage:["GET /repos/{owner}/{repo}/actions/cache/usage"],getActionsCacheUsageByRepoForOrg:["GET /orgs/{org}/actions/cache/usage-by-repository"],getActionsCacheUsageForOrg:["GET /orgs/{org}/actions/cache/usage"],getAllowedActionsOrganization:["GET /orgs/{org}/actions/permissions/selected-actions"],getAllowedActionsRepository:["GET /repos/{owner}/{repo}/actions/permissions/selected-actions"],getArtifact:["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"],getCustomImageForOrg:["GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}"],getCustomImageVersionForOrg:["GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions/{version}"],getCustomOidcSubClaimForRepo:["GET /repos/{owner}/{repo}/actions/oidc/customization/sub"],getEnvironmentPublicKey:["GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/public-key"],getEnvironmentSecret:["GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}"],getEnvironmentVariable:["GET /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}"],getGithubActionsDefaultWorkflowPermissionsOrganization:["GET /orgs/{org}/actions/permissions/workflow"],getGithubActionsDefaultWorkflowPermissionsRepository:["GET /repos/{owner}/{repo}/actions/permissions/workflow"],getGithubActionsPermissionsOrganization:["GET /orgs/{org}/actions/permissions"],getGithubActionsPermissionsRepository:["GET /repos/{owner}/{repo}/actions/permissions"],getHostedRunnerForOrg:["GET /orgs/{org}/actions/hosted-runners/{hosted_runner_id}"],getHostedRunnersGithubOwnedImagesForOrg:["GET /orgs/{org}/actions/hosted-runners/images/github-owned"],getHostedRunnersLimitsForOrg:["GET /orgs/{org}/actions/hosted-runners/limits"],getHostedRunnersMachineSpecsForOrg:["GET /orgs/{org}/actions/hosted-runners/machine-sizes"],getHostedRunnersPartnerImagesForOrg:["GET /orgs/{org}/actions/hosted-runners/images/partner"],getHostedRunnersPlatformsForOrg:["GET /orgs/{org}/actions/hosted-runners/platforms"],getJobForWorkflowRun:["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"],getOrgPublicKey:["GET /orgs/{org}/actions/secrets/public-key"],getOrgSecret:["GET /orgs/{org}/actions/secrets/{secret_name}"],getOrgVariable:["GET /orgs/{org}/actions/variables/{name}"],getPendingDeploymentsForRun:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"],getRepoPermissions:["GET /repos/{owner}/{repo}/actions/permissions",{},{renamed:["actions","getGithubActionsPermissionsRepository"]}],getRepoPublicKey:["GET /repos/{owner}/{repo}/actions/secrets/public-key"],getRepoSecret:["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"],getRepoVariable:["GET /repos/{owner}/{repo}/actions/variables/{name}"],getReviewsForRun:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals"],getSelfHostedRunnerForOrg:["GET /orgs/{org}/actions/runners/{runner_id}"],getSelfHostedRunnerForRepo:["GET /repos/{owner}/{repo}/actions/runners/{runner_id}"],getWorkflow:["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"],getWorkflowAccessToRepository:["GET /repos/{owner}/{repo}/actions/permissions/access"],getWorkflowRun:["GET /repos/{owner}/{repo}/actions/runs/{run_id}"],getWorkflowRunAttempt:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}"],getWorkflowRunUsage:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing"],getWorkflowUsage:["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing"],listArtifactsForRepo:["GET /repos/{owner}/{repo}/actions/artifacts"],listCustomImageVersionsForOrg:["GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions"],listCustomImagesForOrg:["GET /orgs/{org}/actions/hosted-runners/images/custom"],listEnvironmentSecrets:["GET /repos/{owner}/{repo}/environments/{environment_name}/secrets"],listEnvironmentVariables:["GET /repos/{owner}/{repo}/environments/{environment_name}/variables"],listGithubHostedRunnersInGroupForOrg:["GET /orgs/{org}/actions/runner-groups/{runner_group_id}/hosted-runners"],listHostedRunnersForOrg:["GET /orgs/{org}/actions/hosted-runners"],listJobsForWorkflowRun:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"],listJobsForWorkflowRunAttempt:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"],listLabelsForSelfHostedRunnerForOrg:["GET /orgs/{org}/actions/runners/{runner_id}/labels"],listLabelsForSelfHostedRunnerForRepo:["GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],listOrgSecrets:["GET /orgs/{org}/actions/secrets"],listOrgVariables:["GET /orgs/{org}/actions/variables"],listRepoOrganizationSecrets:["GET /repos/{owner}/{repo}/actions/organization-secrets"],listRepoOrganizationVariables:["GET /repos/{owner}/{repo}/actions/organization-variables"],listRepoSecrets:["GET /repos/{owner}/{repo}/actions/secrets"],listRepoVariables:["GET /repos/{owner}/{repo}/actions/variables"],listRepoWorkflows:["GET /repos/{owner}/{repo}/actions/workflows"],listRunnerApplicationsForOrg:["GET /orgs/{org}/actions/runners/downloads"],listRunnerApplicationsForRepo:["GET /repos/{owner}/{repo}/actions/runners/downloads"],listSelectedReposForOrgSecret:["GET /orgs/{org}/actions/secrets/{secret_name}/repositories"],listSelectedReposForOrgVariable:["GET /orgs/{org}/actions/variables/{name}/repositories"],listSelectedRepositoriesEnabledGithubActionsOrganization:["GET /orgs/{org}/actions/permissions/repositories"],listSelfHostedRunnersForOrg:["GET /orgs/{org}/actions/runners"],listSelfHostedRunnersForRepo:["GET /repos/{owner}/{repo}/actions/runners"],listWorkflowRunArtifacts:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"],listWorkflowRuns:["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"],listWorkflowRunsForRepo:["GET /repos/{owner}/{repo}/actions/runs"],reRunJobForWorkflowRun:["POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun"],reRunWorkflow:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"],reRunWorkflowFailedJobs:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs"],removeAllCustomLabelsFromSelfHostedRunnerForOrg:["DELETE /orgs/{org}/actions/runners/{runner_id}/labels"],removeAllCustomLabelsFromSelfHostedRunnerForRepo:["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],removeCustomLabelFromSelfHostedRunnerForOrg:["DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}"],removeCustomLabelFromSelfHostedRunnerForRepo:["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}"],removeSelectedRepoFromOrgSecret:["DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"],removeSelectedRepoFromOrgVariable:["DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}"],reviewCustomGatesForRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule"],reviewPendingDeploymentsForRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"],setAllowedActionsOrganization:["PUT /orgs/{org}/actions/permissions/selected-actions"],setAllowedActionsRepository:["PUT /repos/{owner}/{repo}/actions/permissions/selected-actions"],setCustomLabelsForSelfHostedRunnerForOrg:["PUT /orgs/{org}/actions/runners/{runner_id}/labels"],setCustomLabelsForSelfHostedRunnerForRepo:["PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],setCustomOidcSubClaimForRepo:["PUT /repos/{owner}/{repo}/actions/oidc/customization/sub"],setGithubActionsDefaultWorkflowPermissionsOrganization:["PUT /orgs/{org}/actions/permissions/workflow"],setGithubActionsDefaultWorkflowPermissionsRepository:["PUT /repos/{owner}/{repo}/actions/permissions/workflow"],setGithubActionsPermissionsOrganization:["PUT /orgs/{org}/actions/permissions"],setGithubActionsPermissionsRepository:["PUT /repos/{owner}/{repo}/actions/permissions"],setSelectedReposForOrgSecret:["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories"],setSelectedReposForOrgVariable:["PUT /orgs/{org}/actions/variables/{name}/repositories"],setSelectedRepositoriesEnabledGithubActionsOrganization:["PUT /orgs/{org}/actions/permissions/repositories"],setWorkflowAccessToRepository:["PUT /repos/{owner}/{repo}/actions/permissions/access"],updateEnvironmentVariable:["PATCH /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}"],updateHostedRunnerForOrg:["PATCH /orgs/{org}/actions/hosted-runners/{hosted_runner_id}"],updateOrgVariable:["PATCH /orgs/{org}/actions/variables/{name}"],updateRepoVariable:["PATCH /repos/{owner}/{repo}/actions/variables/{name}"]},activity:{checkRepoIsStarredByAuthenticatedUser:["GET /user/starred/{owner}/{repo}"],deleteRepoSubscription:["DELETE /repos/{owner}/{repo}/subscription"],deleteThreadSubscription:["DELETE /notifications/threads/{thread_id}/subscription"],getFeeds:["GET /feeds"],getRepoSubscription:["GET /repos/{owner}/{repo}/subscription"],getThread:["GET /notifications/threads/{thread_id}"],getThreadSubscriptionForAuthenticatedUser:["GET /notifications/threads/{thread_id}/subscription"],listEventsForAuthenticatedUser:["GET /users/{username}/events"],listNotificationsForAuthenticatedUser:["GET /notifications"],listOrgEventsForAuthenticatedUser:["GET /users/{username}/events/orgs/{org}"],listPublicEvents:["GET /events"],listPublicEventsForRepoNetwork:["GET /networks/{owner}/{repo}/events"],listPublicEventsForUser:["GET /users/{username}/events/public"],listPublicOrgEvents:["GET /orgs/{org}/events"],listReceivedEventsForUser:["GET /users/{username}/received_events"],listReceivedPublicEventsForUser:["GET /users/{username}/received_events/public"],listRepoEvents:["GET /repos/{owner}/{repo}/events"],listRepoNotificationsForAuthenticatedUser:["GET /repos/{owner}/{repo}/notifications"],listReposStarredByAuthenticatedUser:["GET /user/starred"],listReposStarredByUser:["GET /users/{username}/starred"],listReposWatchedByUser:["GET /users/{username}/subscriptions"],listStargazersForRepo:["GET /repos/{owner}/{repo}/stargazers"],listWatchedReposForAuthenticatedUser:["GET /user/subscriptions"],listWatchersForRepo:["GET /repos/{owner}/{repo}/subscribers"],markNotificationsAsRead:["PUT /notifications"],markRepoNotificationsAsRead:["PUT /repos/{owner}/{repo}/notifications"],markThreadAsDone:["DELETE /notifications/threads/{thread_id}"],markThreadAsRead:["PATCH /notifications/threads/{thread_id}"],setRepoSubscription:["PUT /repos/{owner}/{repo}/subscription"],setThreadSubscription:["PUT /notifications/threads/{thread_id}/subscription"],starRepoForAuthenticatedUser:["PUT /user/starred/{owner}/{repo}"],unstarRepoForAuthenticatedUser:["DELETE /user/starred/{owner}/{repo}"]},apps:{addRepoToInstallation:["PUT /user/installations/{installation_id}/repositories/{repository_id}",{},{renamed:["apps","addRepoToInstallationForAuthenticatedUser"]}],addRepoToInstallationForAuthenticatedUser:["PUT /user/installations/{installation_id}/repositories/{repository_id}"],checkToken:["POST /applications/{client_id}/token"],createFromManifest:["POST /app-manifests/{code}/conversions"],createInstallationAccessToken:["POST /app/installations/{installation_id}/access_tokens"],deleteAuthorization:["DELETE /applications/{client_id}/grant"],deleteInstallation:["DELETE /app/installations/{installation_id}"],deleteToken:["DELETE /applications/{client_id}/token"],getAuthenticated:["GET /app"],getBySlug:["GET /apps/{app_slug}"],getInstallation:["GET /app/installations/{installation_id}"],getOrgInstallation:["GET /orgs/{org}/installation"],getRepoInstallation:["GET /repos/{owner}/{repo}/installation"],getSubscriptionPlanForAccount:["GET /marketplace_listing/accounts/{account_id}"],getSubscriptionPlanForAccountStubbed:["GET /marketplace_listing/stubbed/accounts/{account_id}"],getUserInstallation:["GET /users/{username}/installation"],getWebhookConfigForApp:["GET /app/hook/config"],getWebhookDelivery:["GET /app/hook/deliveries/{delivery_id}"],listAccountsForPlan:["GET /marketplace_listing/plans/{plan_id}/accounts"],listAccountsForPlanStubbed:["GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"],listInstallationReposForAuthenticatedUser:["GET /user/installations/{installation_id}/repositories"],listInstallationRequestsForAuthenticatedApp:["GET /app/installation-requests"],listInstallations:["GET /app/installations"],listInstallationsForAuthenticatedUser:["GET /user/installations"],listPlans:["GET /marketplace_listing/plans"],listPlansStubbed:["GET /marketplace_listing/stubbed/plans"],listReposAccessibleToInstallation:["GET /installation/repositories"],listSubscriptionsForAuthenticatedUser:["GET /user/marketplace_purchases"],listSubscriptionsForAuthenticatedUserStubbed:["GET /user/marketplace_purchases/stubbed"],listWebhookDeliveries:["GET /app/hook/deliveries"],redeliverWebhookDelivery:["POST /app/hook/deliveries/{delivery_id}/attempts"],removeRepoFromInstallation:["DELETE /user/installations/{installation_id}/repositories/{repository_id}",{},{renamed:["apps","removeRepoFromInstallationForAuthenticatedUser"]}],removeRepoFromInstallationForAuthenticatedUser:["DELETE /user/installations/{installation_id}/repositories/{repository_id}"],resetToken:["PATCH /applications/{client_id}/token"],revokeInstallationAccessToken:["DELETE /installation/token"],scopeToken:["POST /applications/{client_id}/token/scoped"],suspendInstallation:["PUT /app/installations/{installation_id}/suspended"],unsuspendInstallation:["DELETE /app/installations/{installation_id}/suspended"],updateWebhookConfigForApp:["PATCH /app/hook/config"]},billing:{getGithubActionsBillingOrg:["GET /orgs/{org}/settings/billing/actions"],getGithubActionsBillingUser:["GET /users/{username}/settings/billing/actions"],getGithubBillingPremiumRequestUsageReportOrg:["GET /organizations/{org}/settings/billing/premium_request/usage"],getGithubBillingPremiumRequestUsageReportUser:["GET /users/{username}/settings/billing/premium_request/usage"],getGithubBillingUsageReportOrg:["GET /organizations/{org}/settings/billing/usage"],getGithubBillingUsageReportUser:["GET /users/{username}/settings/billing/usage"],getGithubPackagesBillingOrg:["GET /orgs/{org}/settings/billing/packages"],getGithubPackagesBillingUser:["GET /users/{username}/settings/billing/packages"],getSharedStorageBillingOrg:["GET /orgs/{org}/settings/billing/shared-storage"],getSharedStorageBillingUser:["GET /users/{username}/settings/billing/shared-storage"]},campaigns:{createCampaign:["POST /orgs/{org}/campaigns"],deleteCampaign:["DELETE /orgs/{org}/campaigns/{campaign_number}"],getCampaignSummary:["GET /orgs/{org}/campaigns/{campaign_number}"],listOrgCampaigns:["GET /orgs/{org}/campaigns"],updateCampaign:["PATCH /orgs/{org}/campaigns/{campaign_number}"]},checks:{create:["POST /repos/{owner}/{repo}/check-runs"],createSuite:["POST /repos/{owner}/{repo}/check-suites"],get:["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"],getSuite:["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"],listAnnotations:["GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"],listForRef:["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"],listForSuite:["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"],listSuitesForRef:["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"],rerequestRun:["POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest"],rerequestSuite:["POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest"],setSuitesPreferences:["PATCH /repos/{owner}/{repo}/check-suites/preferences"],update:["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"]},codeScanning:{commitAutofix:["POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix/commits"],createAutofix:["POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix"],createVariantAnalysis:["POST /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses"],deleteAnalysis:["DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}"],deleteCodeqlDatabase:["DELETE /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}"],getAlert:["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}",{},{renamedParameters:{alert_id:"alert_number"}}],getAnalysis:["GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}"],getAutofix:["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix"],getCodeqlDatabase:["GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}"],getDefaultSetup:["GET /repos/{owner}/{repo}/code-scanning/default-setup"],getSarif:["GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}"],getVariantAnalysis:["GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}"],getVariantAnalysisRepoTask:["GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}/repos/{repo_owner}/{repo_name}"],listAlertInstances:["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"],listAlertsForOrg:["GET /orgs/{org}/code-scanning/alerts"],listAlertsForRepo:["GET /repos/{owner}/{repo}/code-scanning/alerts"],listAlertsInstances:["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances",{},{renamed:["codeScanning","listAlertInstances"]}],listCodeqlDatabases:["GET /repos/{owner}/{repo}/code-scanning/codeql/databases"],listRecentAnalyses:["GET /repos/{owner}/{repo}/code-scanning/analyses"],updateAlert:["PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}"],updateDefaultSetup:["PATCH /repos/{owner}/{repo}/code-scanning/default-setup"],uploadSarif:["POST /repos/{owner}/{repo}/code-scanning/sarifs"]},codeSecurity:{attachConfiguration:["POST /orgs/{org}/code-security/configurations/{configuration_id}/attach"],attachEnterpriseConfiguration:["POST /enterprises/{enterprise}/code-security/configurations/{configuration_id}/attach"],createConfiguration:["POST /orgs/{org}/code-security/configurations"],createConfigurationForEnterprise:["POST /enterprises/{enterprise}/code-security/configurations"],deleteConfiguration:["DELETE /orgs/{org}/code-security/configurations/{configuration_id}"],deleteConfigurationForEnterprise:["DELETE /enterprises/{enterprise}/code-security/configurations/{configuration_id}"],detachConfiguration:["DELETE /orgs/{org}/code-security/configurations/detach"],getConfiguration:["GET /orgs/{org}/code-security/configurations/{configuration_id}"],getConfigurationForRepository:["GET /repos/{owner}/{repo}/code-security-configuration"],getConfigurationsForEnterprise:["GET /enterprises/{enterprise}/code-security/configurations"],getConfigurationsForOrg:["GET /orgs/{org}/code-security/configurations"],getDefaultConfigurations:["GET /orgs/{org}/code-security/configurations/defaults"],getDefaultConfigurationsForEnterprise:["GET /enterprises/{enterprise}/code-security/configurations/defaults"],getRepositoriesForConfiguration:["GET /orgs/{org}/code-security/configurations/{configuration_id}/repositories"],getRepositoriesForEnterpriseConfiguration:["GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}/repositories"],getSingleConfigurationForEnterprise:["GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}"],setConfigurationAsDefault:["PUT /orgs/{org}/code-security/configurations/{configuration_id}/defaults"],setConfigurationAsDefaultForEnterprise:["PUT /enterprises/{enterprise}/code-security/configurations/{configuration_id}/defaults"],updateConfiguration:["PATCH /orgs/{org}/code-security/configurations/{configuration_id}"],updateEnterpriseConfiguration:["PATCH /enterprises/{enterprise}/code-security/configurations/{configuration_id}"]},codesOfConduct:{getAllCodesOfConduct:["GET /codes_of_conduct"],getConductCode:["GET /codes_of_conduct/{key}"]},codespaces:{addRepositoryForSecretForAuthenticatedUser:["PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"],addSelectedRepoToOrgSecret:["PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"],checkPermissionsForDevcontainer:["GET /repos/{owner}/{repo}/codespaces/permissions_check"],codespaceMachinesForAuthenticatedUser:["GET /user/codespaces/{codespace_name}/machines"],createForAuthenticatedUser:["POST /user/codespaces"],createOrUpdateOrgSecret:["PUT /orgs/{org}/codespaces/secrets/{secret_name}"],createOrUpdateRepoSecret:["PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"],createOrUpdateSecretForAuthenticatedUser:["PUT /user/codespaces/secrets/{secret_name}"],createWithPrForAuthenticatedUser:["POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces"],createWithRepoForAuthenticatedUser:["POST /repos/{owner}/{repo}/codespaces"],deleteForAuthenticatedUser:["DELETE /user/codespaces/{codespace_name}"],deleteFromOrganization:["DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}"],deleteOrgSecret:["DELETE /orgs/{org}/codespaces/secrets/{secret_name}"],deleteRepoSecret:["DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"],deleteSecretForAuthenticatedUser:["DELETE /user/codespaces/secrets/{secret_name}"],exportForAuthenticatedUser:["POST /user/codespaces/{codespace_name}/exports"],getCodespacesForUserInOrg:["GET /orgs/{org}/members/{username}/codespaces"],getExportDetailsForAuthenticatedUser:["GET /user/codespaces/{codespace_name}/exports/{export_id}"],getForAuthenticatedUser:["GET /user/codespaces/{codespace_name}"],getOrgPublicKey:["GET /orgs/{org}/codespaces/secrets/public-key"],getOrgSecret:["GET /orgs/{org}/codespaces/secrets/{secret_name}"],getPublicKeyForAuthenticatedUser:["GET /user/codespaces/secrets/public-key"],getRepoPublicKey:["GET /repos/{owner}/{repo}/codespaces/secrets/public-key"],getRepoSecret:["GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"],getSecretForAuthenticatedUser:["GET /user/codespaces/secrets/{secret_name}"],listDevcontainersInRepositoryForAuthenticatedUser:["GET /repos/{owner}/{repo}/codespaces/devcontainers"],listForAuthenticatedUser:["GET /user/codespaces"],listInOrganization:["GET /orgs/{org}/codespaces",{},{renamedParameters:{org_id:"org"}}],listInRepositoryForAuthenticatedUser:["GET /repos/{owner}/{repo}/codespaces"],listOrgSecrets:["GET /orgs/{org}/codespaces/secrets"],listRepoSecrets:["GET /repos/{owner}/{repo}/codespaces/secrets"],listRepositoriesForSecretForAuthenticatedUser:["GET /user/codespaces/secrets/{secret_name}/repositories"],listSecretsForAuthenticatedUser:["GET /user/codespaces/secrets"],listSelectedReposForOrgSecret:["GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories"],preFlightWithRepoForAuthenticatedUser:["GET /repos/{owner}/{repo}/codespaces/new"],publishForAuthenticatedUser:["POST /user/codespaces/{codespace_name}/publish"],removeRepositoryForSecretForAuthenticatedUser:["DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"],removeSelectedRepoFromOrgSecret:["DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"],repoMachinesForAuthenticatedUser:["GET /repos/{owner}/{repo}/codespaces/machines"],setRepositoriesForSecretForAuthenticatedUser:["PUT /user/codespaces/secrets/{secret_name}/repositories"],setSelectedReposForOrgSecret:["PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories"],startForAuthenticatedUser:["POST /user/codespaces/{codespace_name}/start"],stopForAuthenticatedUser:["POST /user/codespaces/{codespace_name}/stop"],stopInOrganization:["POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop"],updateForAuthenticatedUser:["PATCH /user/codespaces/{codespace_name}"]},copilot:{addCopilotSeatsForTeams:["POST /orgs/{org}/copilot/billing/selected_teams"],addCopilotSeatsForUsers:["POST /orgs/{org}/copilot/billing/selected_users"],cancelCopilotSeatAssignmentForTeams:["DELETE /orgs/{org}/copilot/billing/selected_teams"],cancelCopilotSeatAssignmentForUsers:["DELETE /orgs/{org}/copilot/billing/selected_users"],copilotMetricsForOrganization:["GET /orgs/{org}/copilot/metrics"],copilotMetricsForTeam:["GET /orgs/{org}/team/{team_slug}/copilot/metrics"],getCopilotOrganizationDetails:["GET /orgs/{org}/copilot/billing"],getCopilotSeatDetailsForUser:["GET /orgs/{org}/members/{username}/copilot"],listCopilotSeats:["GET /orgs/{org}/copilot/billing/seats"]},credentials:{revoke:["POST /credentials/revoke"]},dependabot:{addSelectedRepoToOrgSecret:["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"],createOrUpdateOrgSecret:["PUT /orgs/{org}/dependabot/secrets/{secret_name}"],createOrUpdateRepoSecret:["PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"],deleteOrgSecret:["DELETE /orgs/{org}/dependabot/secrets/{secret_name}"],deleteRepoSecret:["DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"],getAlert:["GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"],getOrgPublicKey:["GET /orgs/{org}/dependabot/secrets/public-key"],getOrgSecret:["GET /orgs/{org}/dependabot/secrets/{secret_name}"],getRepoPublicKey:["GET /repos/{owner}/{repo}/dependabot/secrets/public-key"],getRepoSecret:["GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"],listAlertsForEnterprise:["GET /enterprises/{enterprise}/dependabot/alerts"],listAlertsForOrg:["GET /orgs/{org}/dependabot/alerts"],listAlertsForRepo:["GET /repos/{owner}/{repo}/dependabot/alerts"],listOrgSecrets:["GET /orgs/{org}/dependabot/secrets"],listRepoSecrets:["GET /repos/{owner}/{repo}/dependabot/secrets"],listSelectedReposForOrgSecret:["GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"],removeSelectedRepoFromOrgSecret:["DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"],repositoryAccessForOrg:["GET /organizations/{org}/dependabot/repository-access"],setRepositoryAccessDefaultLevel:["PUT /organizations/{org}/dependabot/repository-access/default-level"],setSelectedReposForOrgSecret:["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories"],updateAlert:["PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"],updateRepositoryAccessForOrg:["PATCH /organizations/{org}/dependabot/repository-access"]},dependencyGraph:{createRepositorySnapshot:["POST /repos/{owner}/{repo}/dependency-graph/snapshots"],diffRange:["GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}"],exportSbom:["GET /repos/{owner}/{repo}/dependency-graph/sbom"]},emojis:{get:["GET /emojis"]},enterpriseTeamMemberships:{add:["PUT /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}"],bulkAdd:["POST /enterprises/{enterprise}/teams/{enterprise-team}/memberships/add"],bulkRemove:["POST /enterprises/{enterprise}/teams/{enterprise-team}/memberships/remove"],get:["GET /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}"],list:["GET /enterprises/{enterprise}/teams/{enterprise-team}/memberships"],remove:["DELETE /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}"]},enterpriseTeamOrganizations:{add:["PUT /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}"],bulkAdd:["POST /enterprises/{enterprise}/teams/{enterprise-team}/organizations/add"],bulkRemove:["POST /enterprises/{enterprise}/teams/{enterprise-team}/organizations/remove"],delete:["DELETE /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}"],getAssignment:["GET /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}"],getAssignments:["GET /enterprises/{enterprise}/teams/{enterprise-team}/organizations"]},enterpriseTeams:{create:["POST /enterprises/{enterprise}/teams"],delete:["DELETE /enterprises/{enterprise}/teams/{team_slug}"],get:["GET /enterprises/{enterprise}/teams/{team_slug}"],list:["GET /enterprises/{enterprise}/teams"],update:["PATCH /enterprises/{enterprise}/teams/{team_slug}"]},gists:{checkIsStarred:["GET /gists/{gist_id}/star"],create:["POST /gists"],createComment:["POST /gists/{gist_id}/comments"],delete:["DELETE /gists/{gist_id}"],deleteComment:["DELETE /gists/{gist_id}/comments/{comment_id}"],fork:["POST /gists/{gist_id}/forks"],get:["GET /gists/{gist_id}"],getComment:["GET /gists/{gist_id}/comments/{comment_id}"],getRevision:["GET /gists/{gist_id}/{sha}"],list:["GET /gists"],listComments:["GET /gists/{gist_id}/comments"],listCommits:["GET /gists/{gist_id}/commits"],listForUser:["GET /users/{username}/gists"],listForks:["GET /gists/{gist_id}/forks"],listPublic:["GET /gists/public"],listStarred:["GET /gists/starred"],star:["PUT /gists/{gist_id}/star"],unstar:["DELETE /gists/{gist_id}/star"],update:["PATCH /gists/{gist_id}"],updateComment:["PATCH /gists/{gist_id}/comments/{comment_id}"]},git:{createBlob:["POST /repos/{owner}/{repo}/git/blobs"],createCommit:["POST /repos/{owner}/{repo}/git/commits"],createRef:["POST /repos/{owner}/{repo}/git/refs"],createTag:["POST /repos/{owner}/{repo}/git/tags"],createTree:["POST /repos/{owner}/{repo}/git/trees"],deleteRef:["DELETE /repos/{owner}/{repo}/git/refs/{ref}"],getBlob:["GET /repos/{owner}/{repo}/git/blobs/{file_sha}"],getCommit:["GET /repos/{owner}/{repo}/git/commits/{commit_sha}"],getRef:["GET /repos/{owner}/{repo}/git/ref/{ref}"],getTag:["GET /repos/{owner}/{repo}/git/tags/{tag_sha}"],getTree:["GET /repos/{owner}/{repo}/git/trees/{tree_sha}"],listMatchingRefs:["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"],updateRef:["PATCH /repos/{owner}/{repo}/git/refs/{ref}"]},gitignore:{getAllTemplates:["GET /gitignore/templates"],getTemplate:["GET /gitignore/templates/{name}"]},hostedCompute:{createNetworkConfigurationForOrg:["POST /orgs/{org}/settings/network-configurations"],deleteNetworkConfigurationFromOrg:["DELETE /orgs/{org}/settings/network-configurations/{network_configuration_id}"],getNetworkConfigurationForOrg:["GET /orgs/{org}/settings/network-configurations/{network_configuration_id}"],getNetworkSettingsForOrg:["GET /orgs/{org}/settings/network-settings/{network_settings_id}"],listNetworkConfigurationsForOrg:["GET /orgs/{org}/settings/network-configurations"],updateNetworkConfigurationForOrg:["PATCH /orgs/{org}/settings/network-configurations/{network_configuration_id}"]},interactions:{getRestrictionsForAuthenticatedUser:["GET /user/interaction-limits"],getRestrictionsForOrg:["GET /orgs/{org}/interaction-limits"],getRestrictionsForRepo:["GET /repos/{owner}/{repo}/interaction-limits"],getRestrictionsForYourPublicRepos:["GET /user/interaction-limits",{},{renamed:["interactions","getRestrictionsForAuthenticatedUser"]}],removeRestrictionsForAuthenticatedUser:["DELETE /user/interaction-limits"],removeRestrictionsForOrg:["DELETE /orgs/{org}/interaction-limits"],removeRestrictionsForRepo:["DELETE /repos/{owner}/{repo}/interaction-limits"],removeRestrictionsForYourPublicRepos:["DELETE /user/interaction-limits",{},{renamed:["interactions","removeRestrictionsForAuthenticatedUser"]}],setRestrictionsForAuthenticatedUser:["PUT /user/interaction-limits"],setRestrictionsForOrg:["PUT /orgs/{org}/interaction-limits"],setRestrictionsForRepo:["PUT /repos/{owner}/{repo}/interaction-limits"],setRestrictionsForYourPublicRepos:["PUT /user/interaction-limits",{},{renamed:["interactions","setRestrictionsForAuthenticatedUser"]}]},issues:{addAssignees:["POST /repos/{owner}/{repo}/issues/{issue_number}/assignees"],addBlockedByDependency:["POST /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by"],addLabels:["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"],addSubIssue:["POST /repos/{owner}/{repo}/issues/{issue_number}/sub_issues"],checkUserCanBeAssigned:["GET /repos/{owner}/{repo}/assignees/{assignee}"],checkUserCanBeAssignedToIssue:["GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}"],create:["POST /repos/{owner}/{repo}/issues"],createComment:["POST /repos/{owner}/{repo}/issues/{issue_number}/comments"],createLabel:["POST /repos/{owner}/{repo}/labels"],createMilestone:["POST /repos/{owner}/{repo}/milestones"],deleteComment:["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}"],deleteLabel:["DELETE /repos/{owner}/{repo}/labels/{name}"],deleteMilestone:["DELETE /repos/{owner}/{repo}/milestones/{milestone_number}"],get:["GET /repos/{owner}/{repo}/issues/{issue_number}"],getComment:["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"],getEvent:["GET /repos/{owner}/{repo}/issues/events/{event_id}"],getLabel:["GET /repos/{owner}/{repo}/labels/{name}"],getMilestone:["GET /repos/{owner}/{repo}/milestones/{milestone_number}"],getParent:["GET /repos/{owner}/{repo}/issues/{issue_number}/parent"],list:["GET /issues"],listAssignees:["GET /repos/{owner}/{repo}/assignees"],listComments:["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"],listCommentsForRepo:["GET /repos/{owner}/{repo}/issues/comments"],listDependenciesBlockedBy:["GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by"],listDependenciesBlocking:["GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocking"],listEvents:["GET /repos/{owner}/{repo}/issues/{issue_number}/events"],listEventsForRepo:["GET /repos/{owner}/{repo}/issues/events"],listEventsForTimeline:["GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"],listForAuthenticatedUser:["GET /user/issues"],listForOrg:["GET /orgs/{org}/issues"],listForRepo:["GET /repos/{owner}/{repo}/issues"],listLabelsForMilestone:["GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"],listLabelsForRepo:["GET /repos/{owner}/{repo}/labels"],listLabelsOnIssue:["GET /repos/{owner}/{repo}/issues/{issue_number}/labels"],listMilestones:["GET /repos/{owner}/{repo}/milestones"],listSubIssues:["GET /repos/{owner}/{repo}/issues/{issue_number}/sub_issues"],lock:["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"],removeAllLabels:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels"],removeAssignees:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees"],removeDependencyBlockedBy:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by/{issue_id}"],removeLabel:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}"],removeSubIssue:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/sub_issue"],reprioritizeSubIssue:["PATCH /repos/{owner}/{repo}/issues/{issue_number}/sub_issues/priority"],setLabels:["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"],unlock:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"],update:["PATCH /repos/{owner}/{repo}/issues/{issue_number}"],updateComment:["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"],updateLabel:["PATCH /repos/{owner}/{repo}/labels/{name}"],updateMilestone:["PATCH /repos/{owner}/{repo}/milestones/{milestone_number}"]},licenses:{get:["GET /licenses/{license}"],getAllCommonlyUsed:["GET /licenses"],getForRepo:["GET /repos/{owner}/{repo}/license"]},markdown:{render:["POST /markdown"],renderRaw:["POST /markdown/raw",{headers:{"content-type":"text/plain; charset=utf-8"}}]},meta:{get:["GET /meta"],getAllVersions:["GET /versions"],getOctocat:["GET /octocat"],getZen:["GET /zen"],root:["GET /"]},migrations:{deleteArchiveForAuthenticatedUser:["DELETE /user/migrations/{migration_id}/archive"],deleteArchiveForOrg:["DELETE /orgs/{org}/migrations/{migration_id}/archive"],downloadArchiveForOrg:["GET /orgs/{org}/migrations/{migration_id}/archive"],getArchiveForAuthenticatedUser:["GET /user/migrations/{migration_id}/archive"],getStatusForAuthenticatedUser:["GET /user/migrations/{migration_id}"],getStatusForOrg:["GET /orgs/{org}/migrations/{migration_id}"],listForAuthenticatedUser:["GET /user/migrations"],listForOrg:["GET /orgs/{org}/migrations"],listReposForAuthenticatedUser:["GET /user/migrations/{migration_id}/repositories"],listReposForOrg:["GET /orgs/{org}/migrations/{migration_id}/repositories"],listReposForUser:["GET /user/migrations/{migration_id}/repositories",{},{renamed:["migrations","listReposForAuthenticatedUser"]}],startForAuthenticatedUser:["POST /user/migrations"],startForOrg:["POST /orgs/{org}/migrations"],unlockRepoForAuthenticatedUser:["DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock"],unlockRepoForOrg:["DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock"]},oidc:{getOidcCustomSubTemplateForOrg:["GET /orgs/{org}/actions/oidc/customization/sub"],updateOidcCustomSubTemplateForOrg:["PUT /orgs/{org}/actions/oidc/customization/sub"]},orgs:{addSecurityManagerTeam:["PUT /orgs/{org}/security-managers/teams/{team_slug}",{},{deprecated:"octokit.rest.orgs.addSecurityManagerTeam() is deprecated, see https://docs.github.com/rest/orgs/security-managers#add-a-security-manager-team"}],assignTeamToOrgRole:["PUT /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}"],assignUserToOrgRole:["PUT /orgs/{org}/organization-roles/users/{username}/{role_id}"],blockUser:["PUT /orgs/{org}/blocks/{username}"],cancelInvitation:["DELETE /orgs/{org}/invitations/{invitation_id}"],checkBlockedUser:["GET /orgs/{org}/blocks/{username}"],checkMembershipForUser:["GET /orgs/{org}/members/{username}"],checkPublicMembershipForUser:["GET /orgs/{org}/public_members/{username}"],convertMemberToOutsideCollaborator:["PUT /orgs/{org}/outside_collaborators/{username}"],createArtifactStorageRecord:["POST /orgs/{org}/artifacts/metadata/storage-record"],createInvitation:["POST /orgs/{org}/invitations"],createIssueType:["POST /orgs/{org}/issue-types"],createWebhook:["POST /orgs/{org}/hooks"],customPropertiesForOrgsCreateOrUpdateOrganizationValues:["PATCH /organizations/{org}/org-properties/values"],customPropertiesForOrgsGetOrganizationValues:["GET /organizations/{org}/org-properties/values"],customPropertiesForReposCreateOrUpdateOrganizationDefinition:["PUT /orgs/{org}/properties/schema/{custom_property_name}"],customPropertiesForReposCreateOrUpdateOrganizationDefinitions:["PATCH /orgs/{org}/properties/schema"],customPropertiesForReposCreateOrUpdateOrganizationValues:["PATCH /orgs/{org}/properties/values"],customPropertiesForReposDeleteOrganizationDefinition:["DELETE /orgs/{org}/properties/schema/{custom_property_name}"],customPropertiesForReposGetOrganizationDefinition:["GET /orgs/{org}/properties/schema/{custom_property_name}"],customPropertiesForReposGetOrganizationDefinitions:["GET /orgs/{org}/properties/schema"],customPropertiesForReposGetOrganizationValues:["GET /orgs/{org}/properties/values"],delete:["DELETE /orgs/{org}"],deleteAttestationsBulk:["POST /orgs/{org}/attestations/delete-request"],deleteAttestationsById:["DELETE /orgs/{org}/attestations/{attestation_id}"],deleteAttestationsBySubjectDigest:["DELETE /orgs/{org}/attestations/digest/{subject_digest}"],deleteIssueType:["DELETE /orgs/{org}/issue-types/{issue_type_id}"],deleteWebhook:["DELETE /orgs/{org}/hooks/{hook_id}"],disableSelectedRepositoryImmutableReleasesOrganization:["DELETE /orgs/{org}/settings/immutable-releases/repositories/{repository_id}"],enableSelectedRepositoryImmutableReleasesOrganization:["PUT /orgs/{org}/settings/immutable-releases/repositories/{repository_id}"],get:["GET /orgs/{org}"],getImmutableReleasesSettings:["GET /orgs/{org}/settings/immutable-releases"],getImmutableReleasesSettingsRepositories:["GET /orgs/{org}/settings/immutable-releases/repositories"],getMembershipForAuthenticatedUser:["GET /user/memberships/orgs/{org}"],getMembershipForUser:["GET /orgs/{org}/memberships/{username}"],getOrgRole:["GET /orgs/{org}/organization-roles/{role_id}"],getOrgRulesetHistory:["GET /orgs/{org}/rulesets/{ruleset_id}/history"],getOrgRulesetVersion:["GET /orgs/{org}/rulesets/{ruleset_id}/history/{version_id}"],getWebhook:["GET /orgs/{org}/hooks/{hook_id}"],getWebhookConfigForOrg:["GET /orgs/{org}/hooks/{hook_id}/config"],getWebhookDelivery:["GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}"],list:["GET /organizations"],listAppInstallations:["GET /orgs/{org}/installations"],listArtifactStorageRecords:["GET /orgs/{org}/artifacts/{subject_digest}/metadata/storage-records"],listAttestationRepositories:["GET /orgs/{org}/attestations/repositories"],listAttestations:["GET /orgs/{org}/attestations/{subject_digest}"],listAttestationsBulk:["POST /orgs/{org}/attestations/bulk-list{?per_page,before,after}"],listBlockedUsers:["GET /orgs/{org}/blocks"],listFailedInvitations:["GET /orgs/{org}/failed_invitations"],listForAuthenticatedUser:["GET /user/orgs"],listForUser:["GET /users/{username}/orgs"],listInvitationTeams:["GET /orgs/{org}/invitations/{invitation_id}/teams"],listIssueTypes:["GET /orgs/{org}/issue-types"],listMembers:["GET /orgs/{org}/members"],listMembershipsForAuthenticatedUser:["GET /user/memberships/orgs"],listOrgRoleTeams:["GET /orgs/{org}/organization-roles/{role_id}/teams"],listOrgRoleUsers:["GET /orgs/{org}/organization-roles/{role_id}/users"],listOrgRoles:["GET /orgs/{org}/organization-roles"],listOrganizationFineGrainedPermissions:["GET /orgs/{org}/organization-fine-grained-permissions"],listOutsideCollaborators:["GET /orgs/{org}/outside_collaborators"],listPatGrantRepositories:["GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories"],listPatGrantRequestRepositories:["GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories"],listPatGrantRequests:["GET /orgs/{org}/personal-access-token-requests"],listPatGrants:["GET /orgs/{org}/personal-access-tokens"],listPendingInvitations:["GET /orgs/{org}/invitations"],listPublicMembers:["GET /orgs/{org}/public_members"],listSecurityManagerTeams:["GET /orgs/{org}/security-managers",{},{deprecated:"octokit.rest.orgs.listSecurityManagerTeams() is deprecated, see https://docs.github.com/rest/orgs/security-managers#list-security-manager-teams"}],listWebhookDeliveries:["GET /orgs/{org}/hooks/{hook_id}/deliveries"],listWebhooks:["GET /orgs/{org}/hooks"],pingWebhook:["POST /orgs/{org}/hooks/{hook_id}/pings"],redeliverWebhookDelivery:["POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"],removeMember:["DELETE /orgs/{org}/members/{username}"],removeMembershipForUser:["DELETE /orgs/{org}/memberships/{username}"],removeOutsideCollaborator:["DELETE /orgs/{org}/outside_collaborators/{username}"],removePublicMembershipForAuthenticatedUser:["DELETE /orgs/{org}/public_members/{username}"],removeSecurityManagerTeam:["DELETE /orgs/{org}/security-managers/teams/{team_slug}",{},{deprecated:"octokit.rest.orgs.removeSecurityManagerTeam() is deprecated, see https://docs.github.com/rest/orgs/security-managers#remove-a-security-manager-team"}],reviewPatGrantRequest:["POST /orgs/{org}/personal-access-token-requests/{pat_request_id}"],reviewPatGrantRequestsInBulk:["POST /orgs/{org}/personal-access-token-requests"],revokeAllOrgRolesTeam:["DELETE /orgs/{org}/organization-roles/teams/{team_slug}"],revokeAllOrgRolesUser:["DELETE /orgs/{org}/organization-roles/users/{username}"],revokeOrgRoleTeam:["DELETE /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}"],revokeOrgRoleUser:["DELETE /orgs/{org}/organization-roles/users/{username}/{role_id}"],setImmutableReleasesSettings:["PUT /orgs/{org}/settings/immutable-releases"],setImmutableReleasesSettingsRepositories:["PUT /orgs/{org}/settings/immutable-releases/repositories"],setMembershipForUser:["PUT /orgs/{org}/memberships/{username}"],setPublicMembershipForAuthenticatedUser:["PUT /orgs/{org}/public_members/{username}"],unblockUser:["DELETE /orgs/{org}/blocks/{username}"],update:["PATCH /orgs/{org}"],updateIssueType:["PUT /orgs/{org}/issue-types/{issue_type_id}"],updateMembershipForAuthenticatedUser:["PATCH /user/memberships/orgs/{org}"],updatePatAccess:["POST /orgs/{org}/personal-access-tokens/{pat_id}"],updatePatAccesses:["POST /orgs/{org}/personal-access-tokens"],updateWebhook:["PATCH /orgs/{org}/hooks/{hook_id}"],updateWebhookConfigForOrg:["PATCH /orgs/{org}/hooks/{hook_id}/config"]},packages:{deletePackageForAuthenticatedUser:["DELETE /user/packages/{package_type}/{package_name}"],deletePackageForOrg:["DELETE /orgs/{org}/packages/{package_type}/{package_name}"],deletePackageForUser:["DELETE /users/{username}/packages/{package_type}/{package_name}"],deletePackageVersionForAuthenticatedUser:["DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}"],deletePackageVersionForOrg:["DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"],deletePackageVersionForUser:["DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"],getAllPackageVersionsForAPackageOwnedByAnOrg:["GET /orgs/{org}/packages/{package_type}/{package_name}/versions",{},{renamed:["packages","getAllPackageVersionsForPackageOwnedByOrg"]}],getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser:["GET /user/packages/{package_type}/{package_name}/versions",{},{renamed:["packages","getAllPackageVersionsForPackageOwnedByAuthenticatedUser"]}],getAllPackageVersionsForPackageOwnedByAuthenticatedUser:["GET /user/packages/{package_type}/{package_name}/versions"],getAllPackageVersionsForPackageOwnedByOrg:["GET /orgs/{org}/packages/{package_type}/{package_name}/versions"],getAllPackageVersionsForPackageOwnedByUser:["GET /users/{username}/packages/{package_type}/{package_name}/versions"],getPackageForAuthenticatedUser:["GET /user/packages/{package_type}/{package_name}"],getPackageForOrganization:["GET /orgs/{org}/packages/{package_type}/{package_name}"],getPackageForUser:["GET /users/{username}/packages/{package_type}/{package_name}"],getPackageVersionForAuthenticatedUser:["GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}"],getPackageVersionForOrganization:["GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"],getPackageVersionForUser:["GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"],listDockerMigrationConflictingPackagesForAuthenticatedUser:["GET /user/docker/conflicts"],listDockerMigrationConflictingPackagesForOrganization:["GET /orgs/{org}/docker/conflicts"],listDockerMigrationConflictingPackagesForUser:["GET /users/{username}/docker/conflicts"],listPackagesForAuthenticatedUser:["GET /user/packages"],listPackagesForOrganization:["GET /orgs/{org}/packages"],listPackagesForUser:["GET /users/{username}/packages"],restorePackageForAuthenticatedUser:["POST /user/packages/{package_type}/{package_name}/restore{?token}"],restorePackageForOrg:["POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}"],restorePackageForUser:["POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}"],restorePackageVersionForAuthenticatedUser:["POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"],restorePackageVersionForOrg:["POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"],restorePackageVersionForUser:["POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"]},privateRegistries:{createOrgPrivateRegistry:["POST /orgs/{org}/private-registries"],deleteOrgPrivateRegistry:["DELETE /orgs/{org}/private-registries/{secret_name}"],getOrgPrivateRegistry:["GET /orgs/{org}/private-registries/{secret_name}"],getOrgPublicKey:["GET /orgs/{org}/private-registries/public-key"],listOrgPrivateRegistries:["GET /orgs/{org}/private-registries"],updateOrgPrivateRegistry:["PATCH /orgs/{org}/private-registries/{secret_name}"]},projects:{addItemForOrg:["POST /orgs/{org}/projectsV2/{project_number}/items"],addItemForUser:["POST /users/{username}/projectsV2/{project_number}/items"],deleteItemForOrg:["DELETE /orgs/{org}/projectsV2/{project_number}/items/{item_id}"],deleteItemForUser:["DELETE /users/{username}/projectsV2/{project_number}/items/{item_id}"],getFieldForOrg:["GET /orgs/{org}/projectsV2/{project_number}/fields/{field_id}"],getFieldForUser:["GET /users/{username}/projectsV2/{project_number}/fields/{field_id}"],getForOrg:["GET /orgs/{org}/projectsV2/{project_number}"],getForUser:["GET /users/{username}/projectsV2/{project_number}"],getOrgItem:["GET /orgs/{org}/projectsV2/{project_number}/items/{item_id}"],getUserItem:["GET /users/{username}/projectsV2/{project_number}/items/{item_id}"],listFieldsForOrg:["GET /orgs/{org}/projectsV2/{project_number}/fields"],listFieldsForUser:["GET /users/{username}/projectsV2/{project_number}/fields"],listForOrg:["GET /orgs/{org}/projectsV2"],listForUser:["GET /users/{username}/projectsV2"],listItemsForOrg:["GET /orgs/{org}/projectsV2/{project_number}/items"],listItemsForUser:["GET /users/{username}/projectsV2/{project_number}/items"],updateItemForOrg:["PATCH /orgs/{org}/projectsV2/{project_number}/items/{item_id}"],updateItemForUser:["PATCH /users/{username}/projectsV2/{project_number}/items/{item_id}"]},pulls:{checkIfMerged:["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"],create:["POST /repos/{owner}/{repo}/pulls"],createReplyForReviewComment:["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies"],createReview:["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"],createReviewComment:["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments"],deletePendingReview:["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"],deleteReviewComment:["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}"],dismissReview:["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals"],get:["GET /repos/{owner}/{repo}/pulls/{pull_number}"],getReview:["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"],getReviewComment:["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"],list:["GET /repos/{owner}/{repo}/pulls"],listCommentsForReview:["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"],listCommits:["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"],listFiles:["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"],listRequestedReviewers:["GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"],listReviewComments:["GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"],listReviewCommentsForRepo:["GET /repos/{owner}/{repo}/pulls/comments"],listReviews:["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"],merge:["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"],removeRequestedReviewers:["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"],requestReviewers:["POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"],submitReview:["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events"],update:["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"],updateBranch:["PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch"],updateReview:["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"],updateReviewComment:["PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}"]},rateLimit:{get:["GET /rate_limit"]},reactions:{createForCommitComment:["POST /repos/{owner}/{repo}/comments/{comment_id}/reactions"],createForIssue:["POST /repos/{owner}/{repo}/issues/{issue_number}/reactions"],createForIssueComment:["POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"],createForPullRequestReviewComment:["POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"],createForRelease:["POST /repos/{owner}/{repo}/releases/{release_id}/reactions"],createForTeamDiscussionCommentInOrg:["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"],createForTeamDiscussionInOrg:["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"],deleteForCommitComment:["DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}"],deleteForIssue:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}"],deleteForIssueComment:["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}"],deleteForPullRequestComment:["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}"],deleteForRelease:["DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}"],deleteForTeamDiscussion:["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}"],deleteForTeamDiscussionComment:["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}"],listForCommitComment:["GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"],listForIssue:["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"],listForIssueComment:["GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"],listForPullRequestReviewComment:["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"],listForRelease:["GET /repos/{owner}/{repo}/releases/{release_id}/reactions"],listForTeamDiscussionCommentInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"],listForTeamDiscussionInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"]},repos:{acceptInvitation:["PATCH /user/repository_invitations/{invitation_id}",{},{renamed:["repos","acceptInvitationForAuthenticatedUser"]}],acceptInvitationForAuthenticatedUser:["PATCH /user/repository_invitations/{invitation_id}"],addAppAccessRestrictions:["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",{},{mapToData:"apps"}],addCollaborator:["PUT /repos/{owner}/{repo}/collaborators/{username}"],addStatusCheckContexts:["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",{},{mapToData:"contexts"}],addTeamAccessRestrictions:["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",{},{mapToData:"teams"}],addUserAccessRestrictions:["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",{},{mapToData:"users"}],cancelPagesDeployment:["POST /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}/cancel"],checkAutomatedSecurityFixes:["GET /repos/{owner}/{repo}/automated-security-fixes"],checkCollaborator:["GET /repos/{owner}/{repo}/collaborators/{username}"],checkImmutableReleases:["GET /repos/{owner}/{repo}/immutable-releases"],checkPrivateVulnerabilityReporting:["GET /repos/{owner}/{repo}/private-vulnerability-reporting"],checkVulnerabilityAlerts:["GET /repos/{owner}/{repo}/vulnerability-alerts"],codeownersErrors:["GET /repos/{owner}/{repo}/codeowners/errors"],compareCommits:["GET /repos/{owner}/{repo}/compare/{base}...{head}"],compareCommitsWithBasehead:["GET /repos/{owner}/{repo}/compare/{basehead}"],createAttestation:["POST /repos/{owner}/{repo}/attestations"],createAutolink:["POST /repos/{owner}/{repo}/autolinks"],createCommitComment:["POST /repos/{owner}/{repo}/commits/{commit_sha}/comments"],createCommitSignatureProtection:["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"],createCommitStatus:["POST /repos/{owner}/{repo}/statuses/{sha}"],createDeployKey:["POST /repos/{owner}/{repo}/keys"],createDeployment:["POST /repos/{owner}/{repo}/deployments"],createDeploymentBranchPolicy:["POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"],createDeploymentProtectionRule:["POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules"],createDeploymentStatus:["POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"],createDispatchEvent:["POST /repos/{owner}/{repo}/dispatches"],createForAuthenticatedUser:["POST /user/repos"],createFork:["POST /repos/{owner}/{repo}/forks"],createInOrg:["POST /orgs/{org}/repos"],createOrUpdateEnvironment:["PUT /repos/{owner}/{repo}/environments/{environment_name}"],createOrUpdateFileContents:["PUT /repos/{owner}/{repo}/contents/{path}"],createOrgRuleset:["POST /orgs/{org}/rulesets"],createPagesDeployment:["POST /repos/{owner}/{repo}/pages/deployments"],createPagesSite:["POST /repos/{owner}/{repo}/pages"],createRelease:["POST /repos/{owner}/{repo}/releases"],createRepoRuleset:["POST /repos/{owner}/{repo}/rulesets"],createUsingTemplate:["POST /repos/{template_owner}/{template_repo}/generate"],createWebhook:["POST /repos/{owner}/{repo}/hooks"],customPropertiesForReposCreateOrUpdateRepositoryValues:["PATCH /repos/{owner}/{repo}/properties/values"],customPropertiesForReposGetRepositoryValues:["GET /repos/{owner}/{repo}/properties/values"],declineInvitation:["DELETE /user/repository_invitations/{invitation_id}",{},{renamed:["repos","declineInvitationForAuthenticatedUser"]}],declineInvitationForAuthenticatedUser:["DELETE /user/repository_invitations/{invitation_id}"],delete:["DELETE /repos/{owner}/{repo}"],deleteAccessRestrictions:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"],deleteAdminBranchProtection:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],deleteAnEnvironment:["DELETE /repos/{owner}/{repo}/environments/{environment_name}"],deleteAutolink:["DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}"],deleteBranchProtection:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection"],deleteCommitComment:["DELETE /repos/{owner}/{repo}/comments/{comment_id}"],deleteCommitSignatureProtection:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"],deleteDeployKey:["DELETE /repos/{owner}/{repo}/keys/{key_id}"],deleteDeployment:["DELETE /repos/{owner}/{repo}/deployments/{deployment_id}"],deleteDeploymentBranchPolicy:["DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"],deleteFile:["DELETE /repos/{owner}/{repo}/contents/{path}"],deleteInvitation:["DELETE /repos/{owner}/{repo}/invitations/{invitation_id}"],deleteOrgRuleset:["DELETE /orgs/{org}/rulesets/{ruleset_id}"],deletePagesSite:["DELETE /repos/{owner}/{repo}/pages"],deletePullRequestReviewProtection:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"],deleteRelease:["DELETE /repos/{owner}/{repo}/releases/{release_id}"],deleteReleaseAsset:["DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}"],deleteRepoRuleset:["DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}"],deleteWebhook:["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"],disableAutomatedSecurityFixes:["DELETE /repos/{owner}/{repo}/automated-security-fixes"],disableDeploymentProtectionRule:["DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}"],disableImmutableReleases:["DELETE /repos/{owner}/{repo}/immutable-releases"],disablePrivateVulnerabilityReporting:["DELETE /repos/{owner}/{repo}/private-vulnerability-reporting"],disableVulnerabilityAlerts:["DELETE /repos/{owner}/{repo}/vulnerability-alerts"],downloadArchive:["GET /repos/{owner}/{repo}/zipball/{ref}",{},{renamed:["repos","downloadZipballArchive"]}],downloadTarballArchive:["GET /repos/{owner}/{repo}/tarball/{ref}"],downloadZipballArchive:["GET /repos/{owner}/{repo}/zipball/{ref}"],enableAutomatedSecurityFixes:["PUT /repos/{owner}/{repo}/automated-security-fixes"],enableImmutableReleases:["PUT /repos/{owner}/{repo}/immutable-releases"],enablePrivateVulnerabilityReporting:["PUT /repos/{owner}/{repo}/private-vulnerability-reporting"],enableVulnerabilityAlerts:["PUT /repos/{owner}/{repo}/vulnerability-alerts"],generateReleaseNotes:["POST /repos/{owner}/{repo}/releases/generate-notes"],get:["GET /repos/{owner}/{repo}"],getAccessRestrictions:["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"],getAdminBranchProtection:["GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],getAllDeploymentProtectionRules:["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules"],getAllEnvironments:["GET /repos/{owner}/{repo}/environments"],getAllStatusCheckContexts:["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"],getAllTopics:["GET /repos/{owner}/{repo}/topics"],getAppsWithAccessToProtectedBranch:["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"],getAutolink:["GET /repos/{owner}/{repo}/autolinks/{autolink_id}"],getBranch:["GET /repos/{owner}/{repo}/branches/{branch}"],getBranchProtection:["GET /repos/{owner}/{repo}/branches/{branch}/protection"],getBranchRules:["GET /repos/{owner}/{repo}/rules/branches/{branch}"],getClones:["GET /repos/{owner}/{repo}/traffic/clones"],getCodeFrequencyStats:["GET /repos/{owner}/{repo}/stats/code_frequency"],getCollaboratorPermissionLevel:["GET /repos/{owner}/{repo}/collaborators/{username}/permission"],getCombinedStatusForRef:["GET /repos/{owner}/{repo}/commits/{ref}/status"],getCommit:["GET /repos/{owner}/{repo}/commits/{ref}"],getCommitActivityStats:["GET /repos/{owner}/{repo}/stats/commit_activity"],getCommitComment:["GET /repos/{owner}/{repo}/comments/{comment_id}"],getCommitSignatureProtection:["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"],getCommunityProfileMetrics:["GET /repos/{owner}/{repo}/community/profile"],getContent:["GET /repos/{owner}/{repo}/contents/{path}"],getContributorsStats:["GET /repos/{owner}/{repo}/stats/contributors"],getCustomDeploymentProtectionRule:["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}"],getDeployKey:["GET /repos/{owner}/{repo}/keys/{key_id}"],getDeployment:["GET /repos/{owner}/{repo}/deployments/{deployment_id}"],getDeploymentBranchPolicy:["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"],getDeploymentStatus:["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}"],getEnvironment:["GET /repos/{owner}/{repo}/environments/{environment_name}"],getLatestPagesBuild:["GET /repos/{owner}/{repo}/pages/builds/latest"],getLatestRelease:["GET /repos/{owner}/{repo}/releases/latest"],getOrgRuleSuite:["GET /orgs/{org}/rulesets/rule-suites/{rule_suite_id}"],getOrgRuleSuites:["GET /orgs/{org}/rulesets/rule-suites"],getOrgRuleset:["GET /orgs/{org}/rulesets/{ruleset_id}"],getOrgRulesets:["GET /orgs/{org}/rulesets"],getPages:["GET /repos/{owner}/{repo}/pages"],getPagesBuild:["GET /repos/{owner}/{repo}/pages/builds/{build_id}"],getPagesDeployment:["GET /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}"],getPagesHealthCheck:["GET /repos/{owner}/{repo}/pages/health"],getParticipationStats:["GET /repos/{owner}/{repo}/stats/participation"],getPullRequestReviewProtection:["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"],getPunchCardStats:["GET /repos/{owner}/{repo}/stats/punch_card"],getReadme:["GET /repos/{owner}/{repo}/readme"],getReadmeInDirectory:["GET /repos/{owner}/{repo}/readme/{dir}"],getRelease:["GET /repos/{owner}/{repo}/releases/{release_id}"],getReleaseAsset:["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"],getReleaseByTag:["GET /repos/{owner}/{repo}/releases/tags/{tag}"],getRepoRuleSuite:["GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}"],getRepoRuleSuites:["GET /repos/{owner}/{repo}/rulesets/rule-suites"],getRepoRuleset:["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}"],getRepoRulesetHistory:["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history"],getRepoRulesetVersion:["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history/{version_id}"],getRepoRulesets:["GET /repos/{owner}/{repo}/rulesets"],getStatusChecksProtection:["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"],getTeamsWithAccessToProtectedBranch:["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"],getTopPaths:["GET /repos/{owner}/{repo}/traffic/popular/paths"],getTopReferrers:["GET /repos/{owner}/{repo}/traffic/popular/referrers"],getUsersWithAccessToProtectedBranch:["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"],getViews:["GET /repos/{owner}/{repo}/traffic/views"],getWebhook:["GET /repos/{owner}/{repo}/hooks/{hook_id}"],getWebhookConfigForRepo:["GET /repos/{owner}/{repo}/hooks/{hook_id}/config"],getWebhookDelivery:["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}"],listActivities:["GET /repos/{owner}/{repo}/activity"],listAttestations:["GET /repos/{owner}/{repo}/attestations/{subject_digest}"],listAutolinks:["GET /repos/{owner}/{repo}/autolinks"],listBranches:["GET /repos/{owner}/{repo}/branches"],listBranchesForHeadCommit:["GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head"],listCollaborators:["GET /repos/{owner}/{repo}/collaborators"],listCommentsForCommit:["GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"],listCommitCommentsForRepo:["GET /repos/{owner}/{repo}/comments"],listCommitStatusesForRef:["GET /repos/{owner}/{repo}/commits/{ref}/statuses"],listCommits:["GET /repos/{owner}/{repo}/commits"],listContributors:["GET /repos/{owner}/{repo}/contributors"],listCustomDeploymentRuleIntegrations:["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps"],listDeployKeys:["GET /repos/{owner}/{repo}/keys"],listDeploymentBranchPolicies:["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"],listDeploymentStatuses:["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"],listDeployments:["GET /repos/{owner}/{repo}/deployments"],listForAuthenticatedUser:["GET /user/repos"],listForOrg:["GET /orgs/{org}/repos"],listForUser:["GET /users/{username}/repos"],listForks:["GET /repos/{owner}/{repo}/forks"],listInvitations:["GET /repos/{owner}/{repo}/invitations"],listInvitationsForAuthenticatedUser:["GET /user/repository_invitations"],listLanguages:["GET /repos/{owner}/{repo}/languages"],listPagesBuilds:["GET /repos/{owner}/{repo}/pages/builds"],listPublic:["GET /repositories"],listPullRequestsAssociatedWithCommit:["GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls"],listReleaseAssets:["GET /repos/{owner}/{repo}/releases/{release_id}/assets"],listReleases:["GET /repos/{owner}/{repo}/releases"],listTags:["GET /repos/{owner}/{repo}/tags"],listTeams:["GET /repos/{owner}/{repo}/teams"],listWebhookDeliveries:["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries"],listWebhooks:["GET /repos/{owner}/{repo}/hooks"],merge:["POST /repos/{owner}/{repo}/merges"],mergeUpstream:["POST /repos/{owner}/{repo}/merge-upstream"],pingWebhook:["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"],redeliverWebhookDelivery:["POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"],removeAppAccessRestrictions:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",{},{mapToData:"apps"}],removeCollaborator:["DELETE /repos/{owner}/{repo}/collaborators/{username}"],removeStatusCheckContexts:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",{},{mapToData:"contexts"}],removeStatusCheckProtection:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"],removeTeamAccessRestrictions:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",{},{mapToData:"teams"}],removeUserAccessRestrictions:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",{},{mapToData:"users"}],renameBranch:["POST /repos/{owner}/{repo}/branches/{branch}/rename"],replaceAllTopics:["PUT /repos/{owner}/{repo}/topics"],requestPagesBuild:["POST /repos/{owner}/{repo}/pages/builds"],setAdminBranchProtection:["POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],setAppAccessRestrictions:["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",{},{mapToData:"apps"}],setStatusCheckContexts:["PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",{},{mapToData:"contexts"}],setTeamAccessRestrictions:["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",{},{mapToData:"teams"}],setUserAccessRestrictions:["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",{},{mapToData:"users"}],testPushWebhook:["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"],transfer:["POST /repos/{owner}/{repo}/transfer"],update:["PATCH /repos/{owner}/{repo}"],updateBranchProtection:["PUT /repos/{owner}/{repo}/branches/{branch}/protection"],updateCommitComment:["PATCH /repos/{owner}/{repo}/comments/{comment_id}"],updateDeploymentBranchPolicy:["PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"],updateInformationAboutPagesSite:["PUT /repos/{owner}/{repo}/pages"],updateInvitation:["PATCH /repos/{owner}/{repo}/invitations/{invitation_id}"],updateOrgRuleset:["PUT /orgs/{org}/rulesets/{ruleset_id}"],updatePullRequestReviewProtection:["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"],updateRelease:["PATCH /repos/{owner}/{repo}/releases/{release_id}"],updateReleaseAsset:["PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}"],updateRepoRuleset:["PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}"],updateStatusCheckPotection:["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks",{},{renamed:["repos","updateStatusCheckProtection"]}],updateStatusCheckProtection:["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"],updateWebhook:["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"],updateWebhookConfigForRepo:["PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config"],uploadReleaseAsset:["POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}",{baseUrl:"https://uploads.github.com"}]},search:{code:["GET /search/code"],commits:["GET /search/commits"],issuesAndPullRequests:["GET /search/issues"],labels:["GET /search/labels"],repos:["GET /search/repositories"],topics:["GET /search/topics"],users:["GET /search/users"]},secretScanning:{createPushProtectionBypass:["POST /repos/{owner}/{repo}/secret-scanning/push-protection-bypasses"],getAlert:["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"],getScanHistory:["GET /repos/{owner}/{repo}/secret-scanning/scan-history"],listAlertsForOrg:["GET /orgs/{org}/secret-scanning/alerts"],listAlertsForRepo:["GET /repos/{owner}/{repo}/secret-scanning/alerts"],listLocationsForAlert:["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations"],listOrgPatternConfigs:["GET /orgs/{org}/secret-scanning/pattern-configurations"],updateAlert:["PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"],updateOrgPatternConfigs:["PATCH /orgs/{org}/secret-scanning/pattern-configurations"]},securityAdvisories:{createFork:["POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/forks"],createPrivateVulnerabilityReport:["POST /repos/{owner}/{repo}/security-advisories/reports"],createRepositoryAdvisory:["POST /repos/{owner}/{repo}/security-advisories"],createRepositoryAdvisoryCveRequest:["POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve"],getGlobalAdvisory:["GET /advisories/{ghsa_id}"],getRepositoryAdvisory:["GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}"],listGlobalAdvisories:["GET /advisories"],listOrgRepositoryAdvisories:["GET /orgs/{org}/security-advisories"],listRepositoryAdvisories:["GET /repos/{owner}/{repo}/security-advisories"],updateRepositoryAdvisory:["PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}"]},teams:{addOrUpdateMembershipForUserInOrg:["PUT /orgs/{org}/teams/{team_slug}/memberships/{username}"],addOrUpdateRepoPermissionsInOrg:["PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"],checkPermissionsForRepoInOrg:["GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"],create:["POST /orgs/{org}/teams"],createDiscussionCommentInOrg:["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"],createDiscussionInOrg:["POST /orgs/{org}/teams/{team_slug}/discussions"],deleteDiscussionCommentInOrg:["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"],deleteDiscussionInOrg:["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"],deleteInOrg:["DELETE /orgs/{org}/teams/{team_slug}"],getByName:["GET /orgs/{org}/teams/{team_slug}"],getDiscussionCommentInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"],getDiscussionInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"],getMembershipForUserInOrg:["GET /orgs/{org}/teams/{team_slug}/memberships/{username}"],list:["GET /orgs/{org}/teams"],listChildInOrg:["GET /orgs/{org}/teams/{team_slug}/teams"],listDiscussionCommentsInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"],listDiscussionsInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions"],listForAuthenticatedUser:["GET /user/teams"],listMembersInOrg:["GET /orgs/{org}/teams/{team_slug}/members"],listPendingInvitationsInOrg:["GET /orgs/{org}/teams/{team_slug}/invitations"],listReposInOrg:["GET /orgs/{org}/teams/{team_slug}/repos"],removeMembershipForUserInOrg:["DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}"],removeRepoInOrg:["DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"],updateDiscussionCommentInOrg:["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"],updateDiscussionInOrg:["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"],updateInOrg:["PATCH /orgs/{org}/teams/{team_slug}"]},users:{addEmailForAuthenticated:["POST /user/emails",{},{renamed:["users","addEmailForAuthenticatedUser"]}],addEmailForAuthenticatedUser:["POST /user/emails"],addSocialAccountForAuthenticatedUser:["POST /user/social_accounts"],block:["PUT /user/blocks/{username}"],checkBlocked:["GET /user/blocks/{username}"],checkFollowingForUser:["GET /users/{username}/following/{target_user}"],checkPersonIsFollowedByAuthenticated:["GET /user/following/{username}"],createGpgKeyForAuthenticated:["POST /user/gpg_keys",{},{renamed:["users","createGpgKeyForAuthenticatedUser"]}],createGpgKeyForAuthenticatedUser:["POST /user/gpg_keys"],createPublicSshKeyForAuthenticated:["POST /user/keys",{},{renamed:["users","createPublicSshKeyForAuthenticatedUser"]}],createPublicSshKeyForAuthenticatedUser:["POST /user/keys"],createSshSigningKeyForAuthenticatedUser:["POST /user/ssh_signing_keys"],deleteAttestationsBulk:["POST /users/{username}/attestations/delete-request"],deleteAttestationsById:["DELETE /users/{username}/attestations/{attestation_id}"],deleteAttestationsBySubjectDigest:["DELETE /users/{username}/attestations/digest/{subject_digest}"],deleteEmailForAuthenticated:["DELETE /user/emails",{},{renamed:["users","deleteEmailForAuthenticatedUser"]}],deleteEmailForAuthenticatedUser:["DELETE /user/emails"],deleteGpgKeyForAuthenticated:["DELETE /user/gpg_keys/{gpg_key_id}",{},{renamed:["users","deleteGpgKeyForAuthenticatedUser"]}],deleteGpgKeyForAuthenticatedUser:["DELETE /user/gpg_keys/{gpg_key_id}"],deletePublicSshKeyForAuthenticated:["DELETE /user/keys/{key_id}",{},{renamed:["users","deletePublicSshKeyForAuthenticatedUser"]}],deletePublicSshKeyForAuthenticatedUser:["DELETE /user/keys/{key_id}"],deleteSocialAccountForAuthenticatedUser:["DELETE /user/social_accounts"],deleteSshSigningKeyForAuthenticatedUser:["DELETE /user/ssh_signing_keys/{ssh_signing_key_id}"],follow:["PUT /user/following/{username}"],getAuthenticated:["GET /user"],getById:["GET /user/{account_id}"],getByUsername:["GET /users/{username}"],getContextForUser:["GET /users/{username}/hovercard"],getGpgKeyForAuthenticated:["GET /user/gpg_keys/{gpg_key_id}",{},{renamed:["users","getGpgKeyForAuthenticatedUser"]}],getGpgKeyForAuthenticatedUser:["GET /user/gpg_keys/{gpg_key_id}"],getPublicSshKeyForAuthenticated:["GET /user/keys/{key_id}",{},{renamed:["users","getPublicSshKeyForAuthenticatedUser"]}],getPublicSshKeyForAuthenticatedUser:["GET /user/keys/{key_id}"],getSshSigningKeyForAuthenticatedUser:["GET /user/ssh_signing_keys/{ssh_signing_key_id}"],list:["GET /users"],listAttestations:["GET /users/{username}/attestations/{subject_digest}"],listAttestationsBulk:["POST /users/{username}/attestations/bulk-list{?per_page,before,after}"],listBlockedByAuthenticated:["GET /user/blocks",{},{renamed:["users","listBlockedByAuthenticatedUser"]}],listBlockedByAuthenticatedUser:["GET /user/blocks"],listEmailsForAuthenticated:["GET /user/emails",{},{renamed:["users","listEmailsForAuthenticatedUser"]}],listEmailsForAuthenticatedUser:["GET /user/emails"],listFollowedByAuthenticated:["GET /user/following",{},{renamed:["users","listFollowedByAuthenticatedUser"]}],listFollowedByAuthenticatedUser:["GET /user/following"],listFollowersForAuthenticatedUser:["GET /user/followers"],listFollowersForUser:["GET /users/{username}/followers"],listFollowingForUser:["GET /users/{username}/following"],listGpgKeysForAuthenticated:["GET /user/gpg_keys",{},{renamed:["users","listGpgKeysForAuthenticatedUser"]}],listGpgKeysForAuthenticatedUser:["GET /user/gpg_keys"],listGpgKeysForUser:["GET /users/{username}/gpg_keys"],listPublicEmailsForAuthenticated:["GET /user/public_emails",{},{renamed:["users","listPublicEmailsForAuthenticatedUser"]}],listPublicEmailsForAuthenticatedUser:["GET /user/public_emails"],listPublicKeysForUser:["GET /users/{username}/keys"],listPublicSshKeysForAuthenticated:["GET /user/keys",{},{renamed:["users","listPublicSshKeysForAuthenticatedUser"]}],listPublicSshKeysForAuthenticatedUser:["GET /user/keys"],listSocialAccountsForAuthenticatedUser:["GET /user/social_accounts"],listSocialAccountsForUser:["GET /users/{username}/social_accounts"],listSshSigningKeysForAuthenticatedUser:["GET /user/ssh_signing_keys"],listSshSigningKeysForUser:["GET /users/{username}/ssh_signing_keys"],setPrimaryEmailVisibilityForAuthenticated:["PATCH /user/email/visibility",{},{renamed:["users","setPrimaryEmailVisibilityForAuthenticatedUser"]}],setPrimaryEmailVisibilityForAuthenticatedUser:["PATCH /user/email/visibility"],unblock:["DELETE /user/blocks/{username}"],unfollow:["DELETE /user/following/{username}"],updateAuthenticated:["PATCH /user"]}},Np=jw;var Cr=new Map;for(let[e,r]of Object.entries(Np))for(let[t,n]of Object.entries(r)){let[o,s,i]=n,[a,l]=o.split(/ /),d=Object.assign({method:a,url:l},s);Cr.has(e)||Cr.set(e,new Map),Cr.get(e).set(t,{scope:e,methodName:t,endpointDefaults:d,decorations:i})}var Lw={has({scope:e},r){return Cr.get(e).has(r)},getOwnPropertyDescriptor(e,r){return{value:this.get(e,r),configurable:!0,writable:!0,enumerable:!0}},defineProperty(e,r,t){return Object.defineProperty(e.cache,r,t),!0},deleteProperty(e,r){return delete e.cache[r],!0},ownKeys({scope:e}){return[...Cr.get(e).keys()]},set(e,r,t){return e.cache[r]=t},get({octokit:e,scope:r,cache:t},n){if(t[n])return t[n];let o=Cr.get(r).get(n);if(!o)return;let{endpointDefaults:s,decorations:i}=o;return i?t[n]=Gw(e,r,n,s,i):t[n]=e.request.defaults(s),t[n]}};function ma(e){let r={};for(let t of Cr.keys())r[t]=new Proxy({octokit:e,scope:t,cache:{}},Lw);return r}function Gw(e,r,t,n,o){let s=e.request.defaults(n);function i(...a){let l=s.endpoint.merge(...a);if(o.mapToData)return l=Object.assign({},l,{data:l[o.mapToData],[o.mapToData]:void 0}),s(l);if(o.renamed){let[d,c]=o.renamed;e.log.warn(`octokit.${r}.${t}() has been renamed to octokit.${d}.${c}()`)}if(o.deprecated&&e.log.warn(o.deprecated),o.renamedParameters){let d=s.endpoint.merge(...a);for(let[c,u]of Object.entries(o.renamedParameters))c in d&&(e.log.warn(`"${c}" parameter is deprecated for "octokit.${r}.${t}()". Use "${u}" instead`),u in d||(d[u]=d[c]),delete d[c]);return s(d)}return s(...a)}return Object.assign(i,s)}function Iw(e){return{rest:ma(e)}}Iw.VERSION=pa;function ga(e){let r=ma(e);return{...r,rest:r}}ga.VERSION=pa;var Mp="22.0.1";var Fp=Fo.plugin(da,ga,ua).defaults({userAgent:`octokit-rest.js/${Mp}`});function $w(e){return`r${e}`}function Wp(e){if(e.length===0)throw new Error("an aliased single-object query needs at least one read");let r=e[0].kind;if(e.some(s=>s.kind!==r))throw new Error("an aliased single-object query may contain only one object kind");let t={},n=r==="pr"?"pullRequest":"issue";return{query:["query CoalescedSingleObjectReads {",...e.map((s,i)=>{if(!Number.isSafeInteger(s.number)||s.number<=0)throw new Error(`an aliased single-object read needs a positive number, got ${s.number}`);let a=s.selection.trim();if(a==="")throw new Error("an aliased single-object read needs a field selection");let l=$w(i);return t[l]=s,[` ${l}: repository(owner: ${JSON.stringify(s.owner)}, name: ${JSON.stringify(s.repo)}) {`,` object: ${n}(number: ${s.number}) { ${a} }`," }"].join(`
78
+ `);let d=!1,c=()=>{if(d)return;d=!0,rr.global==null&&mP(n,a),l.global=l.global??rr.global,l.auth=l.auth??rr.auth,l.search=l.search??rr.search,l.write=l.write??rr.write,l.notifications=l.notifications??rr.notifications,l.retryLimiter=l.retryLimiter??new n;let u={},p=new n.Events(u);u.on("secondary-limit",l.onSecondaryRateLimit),u.on("rate-limit",l.onRateLimit),u.on("error",g=>e.log.warn("Error in throttling-plugin limit handler",g)),l.retryLimiter.on("failed",async function(g,f){let[k,b,v]=f.args,{pathname:T}=new URL(v.url,"http://github.test");if(!(T.startsWith("/graphql")&&g.status!==401||g.status===403||g.status===429))return;let D=~~b.retryCount;b.retryCount=D,v.request.retryCount=D;let{wantRetry:L,retryAfter:W=0}=await async function(){if(/\bsecondary rate\b/i.test(g.message)){let K=Number(g.response.headers["retry-after"])||k.fallbackSecondaryRateRetryAfter;return{wantRetry:await p.trigger("secondary-limit",K,v,e,D),retryAfter:K}}if(g.response.headers!=null&&g.response.headers["x-ratelimit-remaining"]==="0"||(g.response.data?.errors??[]).some(K=>K.type==="RATE_LIMITED")){let K=new Date(~~g.response.headers["x-ratelimit-reset"]*1e3).getTime(),H=Math.max(Math.ceil((K-Date.now())/1e3)+1,0);return{wantRetry:await p.trigger("rate-limit",H,v,e,D),retryAfter:H}}return{}}();if(L)return b.retryCount++,W*k.retryAfterBaseValue})};return e.hook.wrap("request",(u,p)=>(c(),uP(l,u,p))),{}}ca.VERSION=cP;ca.triggersNotification=_m;function sn(){return typeof navigator=="object"&&"userAgent"in navigator?navigator.userAgent:typeof process=="object"&&process.version!==void 0?`Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`:"<environment undetectable>"}function ua(e,t,r,n){if(typeof r!="function")throw new Error("method for before hook must be a function");return n||(n={}),Array.isArray(t)?t.reverse().reduce((o,s)=>ua.bind(null,e,s,o,n),r)():Promise.resolve().then(()=>e.registry[t]?e.registry[t].reduce((o,s)=>s.hook.bind(null,o,n),r)():r(n))}function xm(e,t,r,n){let o=n;e.registry[r]||(e.registry[r]=[]),t==="before"&&(n=(s,i)=>Promise.resolve().then(o.bind(null,i)).then(s.bind(null,i))),t==="after"&&(n=(s,i)=>{let a;return Promise.resolve().then(s.bind(null,i)).then(l=>(a=l,o(a,i))).then(()=>a)}),t==="error"&&(n=(s,i)=>Promise.resolve().then(s.bind(null,i)).catch(a=>o(a,i))),e.registry[r].push({hook:n,orig:o})}function Em(e,t,r){if(!e.registry[t])return;let n=e.registry[t].map(o=>o.orig).indexOf(r);n!==-1&&e.registry[t].splice(n,1)}var vm=Function.bind,Sm=vm.bind(vm);function Tm(e,t,r){let n=Sm(Em,null).apply(null,r?[t,r]:[t]);e.api={remove:n},e.remove=n,["before","error","after","wrap"].forEach(o=>{let s=r?[t,o,r]:[t,o];e[o]=e.api[o]=Sm(xm,null).apply(null,s)})}function bP(){let e=Symbol("Singular"),t={registry:{}},r=ua.bind(null,t,e);return Tm(r,t,e),r}function yP(){let e={registry:{}},t=ua.bind(null,e);return Tm(t,e),t}var Pm={Singular:bP,Collection:yP};var kP="0.0.0-development",wP=`octokit-endpoint.js/${kP} ${sn()}`,RP={method:"GET",baseUrl:"https://api.github.com",headers:{accept:"application/vnd.github.v3+json","user-agent":wP},mediaType:{format:""}};function _P(e){return e?Object.keys(e).reduce((t,r)=>(t[r.toLowerCase()]=e[r],t),{}):{}}function xP(e){if(typeof e!="object"||e===null||Object.prototype.toString.call(e)!=="[object Object]")return!1;let t=Object.getPrototypeOf(e);if(t===null)return!0;let r=Object.prototype.hasOwnProperty.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&Function.prototype.call(r)===Function.prototype.call(e)}function Om(e,t){let r=Object.assign({},e);return Object.keys(t).forEach(n=>{xP(t[n])?n in e?r[n]=Om(e[n],t[n]):Object.assign(r,{[n]:t[n]}):Object.assign(r,{[n]:t[n]})}),r}function Am(e){for(let t in e)e[t]===void 0&&delete e[t];return e}function lc(e,t,r){if(typeof t=="string"){let[o,s]=t.split(" ");r=Object.assign(s?{method:o,url:s}:{url:o},r)}else r=Object.assign({},t);r.headers=_P(r.headers),Am(r),Am(r.headers);let n=Om(e||{},r);return r.url==="/graphql"&&(e&&e.mediaType.previews?.length&&(n.mediaType.previews=e.mediaType.previews.filter(o=>!n.mediaType.previews.includes(o)).concat(n.mediaType.previews)),n.mediaType.previews=(n.mediaType.previews||[]).map(o=>o.replace(/-preview/,""))),n}function EP(e,t){let r=/\?/.test(e)?"&":"?",n=Object.keys(t);return n.length===0?e:e+r+n.map(o=>o==="q"?"q="+t.q.split("+").map(encodeURIComponent).join("+"):`${o}=${encodeURIComponent(t[o])}`).join("&")}var vP=/\{[^{}}]+\}/g;function SP(e){return e.replace(/(?:^\W+)|(?:(?<!\W)\W+$)/g,"").split(/,/)}function TP(e){let t=e.match(vP);return t?t.map(SP).reduce((r,n)=>r.concat(n),[]):[]}function Cm(e,t){let r={__proto__:null};for(let n of Object.keys(e))t.indexOf(n)===-1&&(r[n]=e[n]);return r}function Dm(e){return e.split(/(%[0-9A-Fa-f]{2})/g).map(function(t){return/%[0-9A-Fa-f]/.test(t)||(t=encodeURI(t).replace(/%5B/g,"[").replace(/%5D/g,"]")),t}).join("")}function vo(e){return encodeURIComponent(e).replace(/[!'()*]/g,function(t){return"%"+t.charCodeAt(0).toString(16).toUpperCase()})}function vs(e,t,r){return t=e==="+"||e==="#"?Dm(t):vo(t),r?vo(r)+"="+t:t}function Eo(e){return e!=null}function ac(e){return e===";"||e==="&"||e==="?"}function PP(e,t,r,n){var o=e[r],s=[];if(Eo(o)&&o!=="")if(typeof o=="string"||typeof o=="number"||typeof o=="bigint"||typeof o=="boolean")o=o.toString(),n&&n!=="*"&&(o=o.substring(0,parseInt(n,10))),s.push(vs(t,o,ac(t)?r:""));else if(n==="*")Array.isArray(o)?o.filter(Eo).forEach(function(i){s.push(vs(t,i,ac(t)?r:""))}):Object.keys(o).forEach(function(i){Eo(o[i])&&s.push(vs(t,o[i],i))});else{let i=[];Array.isArray(o)?o.filter(Eo).forEach(function(a){i.push(vs(t,a))}):Object.keys(o).forEach(function(a){Eo(o[a])&&(i.push(vo(a)),i.push(vs(t,o[a].toString())))}),ac(t)?s.push(vo(r)+"="+i.join(",")):i.length!==0&&s.push(i.join(","))}else t===";"?Eo(o)&&s.push(vo(r)):o===""&&(t==="&"||t==="?")?s.push(vo(r)+"="):o===""&&s.push("");return s}function AP(e){return{expand:CP.bind(null,e)}}function CP(e,t){var r=["+","#",".","/",";","?","&"];return e=e.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g,function(n,o,s){if(o){let a="",l=[];if(r.indexOf(o.charAt(0))!==-1&&(a=o.charAt(0),o=o.substr(1)),o.split(/,/g).forEach(function(d){var c=/([^:\*]*)(?::(\d+)|(\*))?/.exec(d);l.push(PP(t,a,c[1],c[2]||c[3]))}),a&&a!=="+"){var i=",";return a==="?"?i="&":a!=="#"&&(i=a),(l.length!==0?a:"")+l.join(i)}else return l.join(",")}else return Dm(s)}),e==="/"?e:e.replace(/\/$/,"")}function Fm(e){let t=e.method.toUpperCase(),r=(e.url||"/").replace(/:([a-z]\w+)/g,"{$1}"),n=Object.assign({},e.headers),o,s=Cm(e,["method","baseUrl","url","headers","request","mediaType"]),i=TP(r);r=AP(r).expand(s),/^http/.test(r)||(r=e.baseUrl+r);let a=Object.keys(e).filter(c=>i.includes(c)).concat("baseUrl"),l=Cm(s,a);if(!/application\/octet-stream/i.test(n.accept)&&(e.mediaType.format&&(n.accept=n.accept.split(/,/).map(c=>c.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/,`application/vnd$1$2.${e.mediaType.format}`)).join(",")),r.endsWith("/graphql")&&e.mediaType.previews?.length)){let c=n.accept.match(/(?<![\w-])[\w-]+(?=-preview)/g)||[];n.accept=c.concat(e.mediaType.previews).map(u=>{let p=e.mediaType.format?`.${e.mediaType.format}`:"+json";return`application/vnd.github.${u}-preview${p}`}).join(",")}return["GET","HEAD"].includes(t)?r=EP(r,l):"data"in l?o=l.data:Object.keys(l).length&&(o=l),!n["content-type"]&&typeof o<"u"&&(n["content-type"]="application/json; charset=utf-8"),["PATCH","PUT"].includes(t)&&typeof o>"u"&&(o=""),Object.assign({method:t,url:r,headers:n},typeof o<"u"?{body:o}:null,e.request?{request:e.request}:null)}function OP(e,t,r){return Fm(lc(e,t,r))}function Im(e,t){let r=lc(e,t),n=OP.bind(null,r);return Object.assign(n,{DEFAULTS:r,defaults:Im.bind(null,r),merge:lc.bind(null,r),parse:Fm})}var Mm=Im(null,RP);var Zm=Bl(Wm(),1);var NP=/^-?\d+$/,ga=/^-?\d+n+$/,an=JSON.stringify,pc=JSON.parse,Vm=/^-?\d+n$/,Hm=/([\[:])?"(-?\d+)n"($|\s*[,\}\]])/g,Um=/([\[:])?("-?\d+n+)n("$|"\s*[,\}\]])/g,fc=e=>e===void 0||typeof e=="function"||typeof e=="symbol",gc=e=>e!==null&&typeof e=="object"&&e.constructor&&e.constructor.name==="RawJSON",WP=(e,t,r)=>{let n="";typeof r=="number"?n=" ".repeat(Math.min(10,Math.max(0,Math.floor(r)))):typeof r=="string"&&(n=r.slice(0,10));let o=typeof t=="function",s=Array.isArray(t)?new Set(t.map(String)):null,i=(f,k,b)=>(b!==null&&typeof b=="object"&&typeof b.toJSON=="function"&&(b=b.toJSON(k)),typeof b=="string"&&ga.test(b)?b+"n":typeof b=="bigint"?"rawJSON"in JSON?JSON.rawJSON(b.toString()):b.toString()+"n":(o&&(b=t.call(f,k,b)),b!==null&&typeof b=="object"&&(b instanceof Number||b instanceof String||b instanceof Boolean)&&(b=b.valueOf()),b)),a=i({"":e},"",e);if(fc(a))return;let l=a===null||typeof a!="object",d=gc(a);if(l||d)return an(a);let c=[],u=0,p=[{parent:{"":a},key:"",val:a,isArray:Array.isArray(a),keys:Array.isArray(a)?null:Object.keys(a),index:0,first:!0}],g=new WeakSet([a]);for(;p.length>0;){let f=p[p.length-1];f.index===0&&(c.push(f.isArray?"[":"{"),u++);let k=!1;if(f.isArray)if(f.index<f.val.length){f.first||c.push(","),n&&c.push(`
79
+ `+n.repeat(u));let b=f.val[f.index],v=i(f.val,String(f.index),b);if(fc(v))c.push("null"),f.first=!1,f.index++;else{let T=v!==null&&typeof v=="object",$=gc(v);if(T&&!$){if(g.has(v))throw new TypeError("Converting circular structure to JSON");g.add(v),p.push({parent:f.val,key:String(f.index),val:v,isArray:Array.isArray(v),keys:Array.isArray(v)?null:Object.keys(v),index:0,first:!0}),f.first=!1,f.index++}else c.push(an(v)),f.first=!1,f.index++}}else k=!0;else{for(;f.index<f.keys.length;){let v=f.keys[f.index++];if(s&&!s.has(v))continue;let $=f.val[v],D=i(f.val,v,$);if(fc(D))continue;f.first||c.push(","),n?c.push(`
80
+ `+n.repeat(u)+an(v)+": "):c.push(an(v)+":");let L=D!==null&&typeof D=="object",W=gc(D);if(L&&!W){if(g.has(D))throw new TypeError("Converting circular structure to JSON");g.add(D),p.push({parent:f.val,key:v,val:D,isArray:Array.isArray(D),keys:Array.isArray(D)?null:Object.keys(D),index:0,first:!0}),f.first=!1;break}else c.push(an(D)),f.first=!1}f.index>=f.keys.length&&p[p.length-1]===f&&(k=!0)}k&&(u--,!f.first&&n&&c.push(`
81
+ `+n.repeat(u)),c.push(f.isArray?"]":"}"),g.delete(f.val),p.pop())}return c.join("")},zm=(e,t,r)=>{try{return"rawJSON"in JSON?an(e,(a,l)=>typeof l=="bigint"?JSON.rawJSON(l.toString()):typeof t=="function"?t(a,l):(Array.isArray(t)&&t.includes(a),l),r):e?an(e,(a,l)=>typeof l=="string"&&ga.test(l)||typeof l=="bigint"?l.toString()+"n":typeof t=="function"?t(a,l):(Array.isArray(t)&&t.includes(a),l),r).replace(Hm,"$1$2$3").replace(Um,"$1$2$3"):an(e,t,r)}catch(n){if(n instanceof RangeError){let o=WP(e,t,r);return o===void 0?void 0:"rawJSON"in JSON?o:o.replace(Hm,"$1$2$3").replace(Um,"$1$2$3")}throw n}},fa=new Map,HP=()=>{let e=JSON.parse.toString();if(fa.has(e))return fa.get(e);try{let t=JSON.parse("1",(r,n,o)=>!!o?.source&&o.source==="1");return fa.set(e,t),t}catch{return fa.set(e,!1),!1}},UP=(e,t,r,n)=>typeof t=="string"&&Vm.test(t)?BigInt(t.slice(0,-1)):typeof t=="string"&&ga.test(t)?t.slice(0,-1):typeof n=="function"?n(e,t,r):t,qP=(e,t)=>JSON.parse(e,(r,n,o)=>{let s=typeof n=="number",i=n>Number.MAX_SAFE_INTEGER||n<Number.MIN_SAFE_INTEGER,a=s&&i,l=o&&NP.test(o.source);return a&&l?BigInt(o.source):typeof t=="function"?t(r,n,o):n}),Jm=Number.MAX_SAFE_INTEGER.toString(),qm=Jm.length,KP=/"(?:\\.|[^"])*"|-?(0|[1-9][0-9]*)(\.[0-9]+)?([eE][+-]?[0-9]+)?/g,VP=/^"-?\d+n+"$/,zP=(e,t)=>{let r={"":e},n=[{parent:r,key:"",visited:!1}];for(;n.length>0;){let o=n[n.length-1];if(o.visited){let{parent:s,key:i}=o,a=s[i];typeof a=="string"&&(Vm.test(a)?a=BigInt(a.slice(0,-1)):ga.test(a)&&(a=a.slice(0,-1))),typeof t=="function"&&(a=t.call(s,i,a)),a===void 0?delete s[i]:s[i]=a,n.pop()}else{o.visited=!0;let s=o.parent[o.key];if(s!==null&&typeof s=="object"){let a=Object.keys(s);for(let l=a.length-1;l>=0;l--)n.push({parent:s,key:a[l],visited:!1})}}}return r[""]},Km=e=>e.replace(KP,(t,r,n,o)=>{let s=t[0]==='"';if(s&&VP.test(t))return t.substring(0,t.length-1)+'n"';let a=n||o,l=r&&(r.length<qm||r.length===qm&&r<=Jm);return s||a||l?t:'"'+t+'n"'}),Ym=(e,t)=>{if(!e)return pc(e,t);try{if(HP())return qP(e,t);let r=Km(e);return pc(r,(n,o,s)=>UP(n,o,s,t))}catch(r){if(r instanceof RangeError){let n=Km(e),o=pc(n);return zP(o,t)}throw r}};var JP="10.0.13",YP={headers:{"user-agent":`octokit-request.js/${JP} ${sn()}`}};function QP(e){if(typeof e!="object"||e===null||Object.prototype.toString.call(e)!=="[object Object]")return!1;let t=Object.getPrototypeOf(e);if(t===null)return!0;let r=Object.prototype.hasOwnProperty.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&Function.prototype.call(r)===Function.prototype.call(e)}var Qm=()=>"";async function Xm(e){let t=e.request?.fetch||globalThis.fetch;if(!t)throw new Error("fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing");let r=e.request?.log||console,n=e.request?.parseSuccessResponseBody!==!1,o=QP(e.body)||Array.isArray(e.body)?zm(e.body):e.body,s=Object.fromEntries(Object.entries(e.headers).map(([u,p])=>[u,String(p)])),i;try{i=await t(e.url,{method:e.method,body:o,redirect:e.request?.redirect,headers:s,signal:e.request?.signal,...e.body&&{duplex:"half"}})}catch(u){let p="Unknown Error";if(u instanceof Error){if(u.name==="AbortError")throw u.status=500,u;p=u.message,u.name==="TypeError"&&"cause"in u&&(u.cause instanceof Error?p=u.cause.message:typeof u.cause=="string"&&(p=u.cause))}let g=new Ur(p,500,{request:e});throw g.cause=u,g}let a=i.status,l=i.url,d={};for(let[u,p]of i.headers)d[u]=p;let c={url:l,status:a,headers:d,data:""};if("deprecation"in d){let u=d.link&&d.link.match(/<([^<>]+)>; rel="deprecation"/),p=u&&u.pop();r.warn(`[@octokit/request] "${e.method} ${e.url}" is deprecated. It is scheduled to be removed on ${d.sunset}${p?`. See ${p}`:""}`)}if(a===204||a===205)return c;if(e.method==="HEAD"){if(a<400)return c;throw new Ur(i.statusText,a,{response:c,request:e})}if(a===304)throw c.data=await hc(i),new Ur("Not modified",a,{response:c,request:e});if(a>=400)throw c.data=await hc(i),new Ur(ZP(c.data),a,{response:c,request:e});return c.data=n?await hc(i):i.body,c}async function hc(e){let t=e.headers.get("content-type");if(!t)return e.text().catch(Qm);let r=(0,Zm.parse)(t);if(XP(r)){let n="";try{return n=await e.text(),Ym(n)}catch{return n}}else return r.type.startsWith("text/")||r.parameters.charset?.toLowerCase()==="utf-8"&&r.type!=="application/octet-stream"?e.text().catch(Qm):e.arrayBuffer().catch(()=>new ArrayBuffer(0))}function XP(e){return e.type==="application/json"||e.type==="application/scim+json"}function ZP(e){if(typeof e=="string")return e;if(e instanceof ArrayBuffer)return"Unknown error";if(typeof e=="object"&&e!==null&&"message"in e){let t=e,r="documentation_url"in t?` - ${t.documentation_url}`:"";return Array.isArray(t.errors)?`${t.message}: ${t.errors.map(n=>JSON.stringify(n)).join(", ")}${r}`:`${t.message}${r}`}return`Unknown error: ${JSON.stringify(e)}`}function mc(e,t){let r=e.defaults(t);return Object.assign(function(o,s){let i=r.merge(o,s);if(!i.request||!i.request.hook)return Xm(r.parse(i));let a=(l,d)=>Xm(r.parse(r.merge(l,d)));return Object.assign(a,{endpoint:r,defaults:mc.bind(null,r)}),i.request.hook(a,i)},{endpoint:r,defaults:mc.bind(null,r)})}var Ss=mc(Mm,YP);var eA="0.0.0-development";function tA(e){return`Request failed due to following response errors:
82
+ `+e.errors.map(t=>` - ${t.message}`).join(`
83
+ `)}var rA=class extends Error{constructor(e,t,r){super(tA(r)),this.request=e,this.headers=t,this.response=r,this.errors=r.errors,this.data=r.data,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}request;headers;response;name="GraphqlResponseError";errors;data},nA=["method","baseUrl","url","headers","request","query","mediaType","operationName"],oA=["query","method","url"],eb=/\/api\/v3\/?$/;function sA(e,t,r){if(r){if(typeof t=="string"&&"query"in r)return Promise.reject(new Error('[@octokit/graphql] "query" cannot be used as variable name'));for(let i in r)if(oA.includes(i))return Promise.reject(new Error(`[@octokit/graphql] "${i}" cannot be used as variable name`))}let n=typeof t=="string"?Object.assign({query:t},r):t,o=Object.keys(n).reduce((i,a)=>nA.includes(a)?(i[a]=n[a],i):(i.variables||(i.variables={}),i.variables[a]=n[a],i),{}),s=n.baseUrl||e.endpoint.DEFAULTS.baseUrl;return eb.test(s)&&(o.url=s.replace(eb,"/api/graphql")),e(o).then(i=>{if(i.data.errors){let a={};for(let l of Object.keys(i.headers))a[l]=i.headers[l];throw new rA(o,a,i.data)}return i.data.data})}function bc(e,t){let r=e.defaults(t);return Object.assign((o,s)=>sA(r,o,s),{defaults:bc.bind(null,r),endpoint:r.endpoint})}var VG=bc(Ss,{headers:{"user-agent":`octokit-graphql.js/${eA} ${sn()}`},method:"POST",url:"/graphql"});function tb(e){return bc(e,{method:"POST",url:"/graphql"})}var yc="(?:[a-zA-Z0-9_-]+)",rb="\\.",nb=new RegExp(`^${yc}${rb}${yc}${rb}${yc}$`),iA=nb.test.bind(nb);async function aA(e){let t=iA(e),r=e.startsWith("v1.")||e.startsWith("ghs_"),n=e.startsWith("ghu_");return{type:"token",token:e,tokenType:t?"app":r?"installation":n?"user-to-server":"oauth"}}function lA(e){return e.split(/\./).length===3?`bearer ${e}`:`token ${e}`}async function dA(e,t,r,n){let o=t.endpoint.merge(r,n);return o.headers.authorization=lA(e),t(o)}var ob=function(t){if(!t)throw new Error("[@octokit/auth-token] No token passed to createTokenAuth");if(typeof t!="string")throw new Error("[@octokit/auth-token] Token passed to createTokenAuth is not a string");return t=t.replace(/^(token|bearer) +/i,""),Object.assign(aA.bind(null,t),{hook:dA.bind(null,t)})};var kc="7.0.7";var sb=()=>{},cA=console.warn.bind(console),uA=console.error.bind(console);function pA(e={}){return typeof e.debug!="function"&&(e.debug=sb),typeof e.info!="function"&&(e.info=sb),typeof e.warn!="function"&&(e.warn=cA),typeof e.error!="function"&&(e.error=uA),e}var ib=`octokit-core.js/${kc} ${sn()}`,ha=class{static VERSION=kc;static defaults(t){return class extends this{constructor(...n){let o=n[0]||{};if(typeof t=="function"){super(t(o));return}super(Object.assign({},t,o,o.userAgent&&t.userAgent?{userAgent:`${o.userAgent} ${t.userAgent}`}:null))}}}static plugins=[];static plugin(...t){let r=this.plugins;return class extends this{static plugins=r.concat(t.filter(o=>!r.includes(o)))}}constructor(t={}){let r=new Pm.Collection,n={baseUrl:Ss.endpoint.DEFAULTS.baseUrl,headers:{},request:Object.assign({},t.request,{hook:r.bind(null,"request")}),mediaType:{previews:[],format:""}};if(n.headers["user-agent"]=t.userAgent?`${t.userAgent} ${ib}`:ib,t.baseUrl&&(n.baseUrl=t.baseUrl),t.previews&&(n.mediaType.previews=t.previews),t.timeZone&&(n.headers["time-zone"]=t.timeZone),this.request=Ss.defaults(n),this.graphql=tb(this.request).defaults(n),this.log=pA(t.log),this.hook=r,t.authStrategy){let{authStrategy:s,...i}=t,a=s(Object.assign({request:this.request,log:this.log,octokit:this,octokitOptions:i},t.auth));r.wrap("request",a.hook),this.auth=a}else if(!t.auth)this.auth=async()=>({type:"unauthenticated"});else{let s=ob(t.auth);r.wrap("request",s.hook),this.auth=s}let o=this.constructor;for(let s=0;s<o.plugins.length;++s)Object.assign(this,o.plugins[s](this,t))}request;graphql;log;hook;auth};var ab="6.0.0";function wc(e){e.hook.wrap("request",(t,r)=>{e.log.debug("request",r);let n=Date.now(),o=e.request.endpoint.parse(r),s=o.url.replace(r.baseUrl,"");return t(r).then(i=>{let a=i.headers["x-github-request-id"];return e.log.info(`${o.method} ${s} - ${i.status} with id ${a} in ${Date.now()-n}ms`),i}).catch(i=>{let a=i.response?.headers["x-github-request-id"]||"UNKNOWN";throw e.log.error(`${o.method} ${s} - ${i.status} with id ${a} in ${Date.now()-n}ms`),i})})}wc.VERSION=ab;var fA="0.0.0-development";function gA(e){if(!e.data)return{...e,data:[]};if(!(("total_count"in e.data||"total_commits"in e.data)&&!("url"in e.data)))return e;let r=e.data.incomplete_results,n=e.data.repository_selection,o=e.data.total_count,s=e.data.total_commits;delete e.data.incomplete_results,delete e.data.repository_selection,delete e.data.total_count,delete e.data.total_commits;let i=Object.keys(e.data)[0],a=e.data[i];return e.data=a,typeof r<"u"&&(e.data.incomplete_results=r),typeof n<"u"&&(e.data.repository_selection=n),e.data.total_count=o,e.data.total_commits=s,e}function Rc(e,t,r){let n=typeof t=="function"?t.endpoint(r):e.request.endpoint(t,r),o=typeof t=="function"?t:e.request,s=n.method,i=n.headers,a=n.url;return{[Symbol.asyncIterator]:()=>({async next(){if(!a)return{done:!0};try{let l=await o({method:s,url:a,headers:i}),d=gA(l);if(a=((d.headers.link||"").match(/<([^<>]+)>;\s*rel="next"/)||[])[1],!a&&"total_commits"in d.data){let c=new URL(d.url),u=c.searchParams,p=parseInt(u.get("page")||"1",10),g=parseInt(u.get("per_page")||"250",10);p*g<d.data.total_commits&&(u.set("page",String(p+1)),a=c.toString())}return{value:d}}catch(l){if(l.status!==409)throw l;return a="",{value:{status:200,headers:{},data:[]}}}}})}}function lb(e,t,r,n){return typeof r=="function"&&(n=r,r=void 0),db(e,[],Rc(e,t,r)[Symbol.asyncIterator](),n)}function db(e,t,r,n){return r.next().then(o=>{if(o.done)return t;let s=!1;function i(){s=!0}return t=t.concat(n?n(o.value,i):o.value.data),s?t:db(e,t,r,n)})}var cN=Object.assign(lb,{iterator:Rc});function _c(e){return{paginate:Object.assign(lb.bind(null,e),{iterator:Rc.bind(null,e)})}}_c.VERSION=fA;var xc="17.0.0";var hA={actions:{addCustomLabelsToSelfHostedRunnerForOrg:["POST /orgs/{org}/actions/runners/{runner_id}/labels"],addCustomLabelsToSelfHostedRunnerForRepo:["POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],addRepoAccessToSelfHostedRunnerGroupInOrg:["PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}"],addSelectedRepoToOrgSecret:["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"],addSelectedRepoToOrgVariable:["PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}"],approveWorkflowRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve"],cancelWorkflowRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel"],createEnvironmentVariable:["POST /repos/{owner}/{repo}/environments/{environment_name}/variables"],createHostedRunnerForOrg:["POST /orgs/{org}/actions/hosted-runners"],createOrUpdateEnvironmentSecret:["PUT /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}"],createOrUpdateOrgSecret:["PUT /orgs/{org}/actions/secrets/{secret_name}"],createOrUpdateRepoSecret:["PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}"],createOrgVariable:["POST /orgs/{org}/actions/variables"],createRegistrationTokenForOrg:["POST /orgs/{org}/actions/runners/registration-token"],createRegistrationTokenForRepo:["POST /repos/{owner}/{repo}/actions/runners/registration-token"],createRemoveTokenForOrg:["POST /orgs/{org}/actions/runners/remove-token"],createRemoveTokenForRepo:["POST /repos/{owner}/{repo}/actions/runners/remove-token"],createRepoVariable:["POST /repos/{owner}/{repo}/actions/variables"],createWorkflowDispatch:["POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches"],deleteActionsCacheById:["DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}"],deleteActionsCacheByKey:["DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}"],deleteArtifact:["DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"],deleteCustomImageFromOrg:["DELETE /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}"],deleteCustomImageVersionFromOrg:["DELETE /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions/{version}"],deleteEnvironmentSecret:["DELETE /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}"],deleteEnvironmentVariable:["DELETE /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}"],deleteHostedRunnerForOrg:["DELETE /orgs/{org}/actions/hosted-runners/{hosted_runner_id}"],deleteOrgSecret:["DELETE /orgs/{org}/actions/secrets/{secret_name}"],deleteOrgVariable:["DELETE /orgs/{org}/actions/variables/{name}"],deleteRepoSecret:["DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}"],deleteRepoVariable:["DELETE /repos/{owner}/{repo}/actions/variables/{name}"],deleteSelfHostedRunnerFromOrg:["DELETE /orgs/{org}/actions/runners/{runner_id}"],deleteSelfHostedRunnerFromRepo:["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}"],deleteWorkflowRun:["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"],deleteWorkflowRunLogs:["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs"],disableSelectedRepositoryGithubActionsOrganization:["DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}"],disableWorkflow:["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable"],downloadArtifact:["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}"],downloadJobLogsForWorkflowRun:["GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs"],downloadWorkflowRunAttemptLogs:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs"],downloadWorkflowRunLogs:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs"],enableSelectedRepositoryGithubActionsOrganization:["PUT /orgs/{org}/actions/permissions/repositories/{repository_id}"],enableWorkflow:["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable"],forceCancelWorkflowRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel"],generateRunnerJitconfigForOrg:["POST /orgs/{org}/actions/runners/generate-jitconfig"],generateRunnerJitconfigForRepo:["POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig"],getActionsCacheList:["GET /repos/{owner}/{repo}/actions/caches"],getActionsCacheUsage:["GET /repos/{owner}/{repo}/actions/cache/usage"],getActionsCacheUsageByRepoForOrg:["GET /orgs/{org}/actions/cache/usage-by-repository"],getActionsCacheUsageForOrg:["GET /orgs/{org}/actions/cache/usage"],getAllowedActionsOrganization:["GET /orgs/{org}/actions/permissions/selected-actions"],getAllowedActionsRepository:["GET /repos/{owner}/{repo}/actions/permissions/selected-actions"],getArtifact:["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"],getCustomImageForOrg:["GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}"],getCustomImageVersionForOrg:["GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions/{version}"],getCustomOidcSubClaimForRepo:["GET /repos/{owner}/{repo}/actions/oidc/customization/sub"],getEnvironmentPublicKey:["GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/public-key"],getEnvironmentSecret:["GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}"],getEnvironmentVariable:["GET /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}"],getGithubActionsDefaultWorkflowPermissionsOrganization:["GET /orgs/{org}/actions/permissions/workflow"],getGithubActionsDefaultWorkflowPermissionsRepository:["GET /repos/{owner}/{repo}/actions/permissions/workflow"],getGithubActionsPermissionsOrganization:["GET /orgs/{org}/actions/permissions"],getGithubActionsPermissionsRepository:["GET /repos/{owner}/{repo}/actions/permissions"],getHostedRunnerForOrg:["GET /orgs/{org}/actions/hosted-runners/{hosted_runner_id}"],getHostedRunnersGithubOwnedImagesForOrg:["GET /orgs/{org}/actions/hosted-runners/images/github-owned"],getHostedRunnersLimitsForOrg:["GET /orgs/{org}/actions/hosted-runners/limits"],getHostedRunnersMachineSpecsForOrg:["GET /orgs/{org}/actions/hosted-runners/machine-sizes"],getHostedRunnersPartnerImagesForOrg:["GET /orgs/{org}/actions/hosted-runners/images/partner"],getHostedRunnersPlatformsForOrg:["GET /orgs/{org}/actions/hosted-runners/platforms"],getJobForWorkflowRun:["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"],getOrgPublicKey:["GET /orgs/{org}/actions/secrets/public-key"],getOrgSecret:["GET /orgs/{org}/actions/secrets/{secret_name}"],getOrgVariable:["GET /orgs/{org}/actions/variables/{name}"],getPendingDeploymentsForRun:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"],getRepoPermissions:["GET /repos/{owner}/{repo}/actions/permissions",{},{renamed:["actions","getGithubActionsPermissionsRepository"]}],getRepoPublicKey:["GET /repos/{owner}/{repo}/actions/secrets/public-key"],getRepoSecret:["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"],getRepoVariable:["GET /repos/{owner}/{repo}/actions/variables/{name}"],getReviewsForRun:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals"],getSelfHostedRunnerForOrg:["GET /orgs/{org}/actions/runners/{runner_id}"],getSelfHostedRunnerForRepo:["GET /repos/{owner}/{repo}/actions/runners/{runner_id}"],getWorkflow:["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"],getWorkflowAccessToRepository:["GET /repos/{owner}/{repo}/actions/permissions/access"],getWorkflowRun:["GET /repos/{owner}/{repo}/actions/runs/{run_id}"],getWorkflowRunAttempt:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}"],getWorkflowRunUsage:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing"],getWorkflowUsage:["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing"],listArtifactsForRepo:["GET /repos/{owner}/{repo}/actions/artifacts"],listCustomImageVersionsForOrg:["GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions"],listCustomImagesForOrg:["GET /orgs/{org}/actions/hosted-runners/images/custom"],listEnvironmentSecrets:["GET /repos/{owner}/{repo}/environments/{environment_name}/secrets"],listEnvironmentVariables:["GET /repos/{owner}/{repo}/environments/{environment_name}/variables"],listGithubHostedRunnersInGroupForOrg:["GET /orgs/{org}/actions/runner-groups/{runner_group_id}/hosted-runners"],listHostedRunnersForOrg:["GET /orgs/{org}/actions/hosted-runners"],listJobsForWorkflowRun:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"],listJobsForWorkflowRunAttempt:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"],listLabelsForSelfHostedRunnerForOrg:["GET /orgs/{org}/actions/runners/{runner_id}/labels"],listLabelsForSelfHostedRunnerForRepo:["GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],listOrgSecrets:["GET /orgs/{org}/actions/secrets"],listOrgVariables:["GET /orgs/{org}/actions/variables"],listRepoOrganizationSecrets:["GET /repos/{owner}/{repo}/actions/organization-secrets"],listRepoOrganizationVariables:["GET /repos/{owner}/{repo}/actions/organization-variables"],listRepoSecrets:["GET /repos/{owner}/{repo}/actions/secrets"],listRepoVariables:["GET /repos/{owner}/{repo}/actions/variables"],listRepoWorkflows:["GET /repos/{owner}/{repo}/actions/workflows"],listRunnerApplicationsForOrg:["GET /orgs/{org}/actions/runners/downloads"],listRunnerApplicationsForRepo:["GET /repos/{owner}/{repo}/actions/runners/downloads"],listSelectedReposForOrgSecret:["GET /orgs/{org}/actions/secrets/{secret_name}/repositories"],listSelectedReposForOrgVariable:["GET /orgs/{org}/actions/variables/{name}/repositories"],listSelectedRepositoriesEnabledGithubActionsOrganization:["GET /orgs/{org}/actions/permissions/repositories"],listSelfHostedRunnersForOrg:["GET /orgs/{org}/actions/runners"],listSelfHostedRunnersForRepo:["GET /repos/{owner}/{repo}/actions/runners"],listWorkflowRunArtifacts:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"],listWorkflowRuns:["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"],listWorkflowRunsForRepo:["GET /repos/{owner}/{repo}/actions/runs"],reRunJobForWorkflowRun:["POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun"],reRunWorkflow:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"],reRunWorkflowFailedJobs:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs"],removeAllCustomLabelsFromSelfHostedRunnerForOrg:["DELETE /orgs/{org}/actions/runners/{runner_id}/labels"],removeAllCustomLabelsFromSelfHostedRunnerForRepo:["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],removeCustomLabelFromSelfHostedRunnerForOrg:["DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}"],removeCustomLabelFromSelfHostedRunnerForRepo:["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}"],removeSelectedRepoFromOrgSecret:["DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"],removeSelectedRepoFromOrgVariable:["DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}"],reviewCustomGatesForRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule"],reviewPendingDeploymentsForRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"],setAllowedActionsOrganization:["PUT /orgs/{org}/actions/permissions/selected-actions"],setAllowedActionsRepository:["PUT /repos/{owner}/{repo}/actions/permissions/selected-actions"],setCustomLabelsForSelfHostedRunnerForOrg:["PUT /orgs/{org}/actions/runners/{runner_id}/labels"],setCustomLabelsForSelfHostedRunnerForRepo:["PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],setCustomOidcSubClaimForRepo:["PUT /repos/{owner}/{repo}/actions/oidc/customization/sub"],setGithubActionsDefaultWorkflowPermissionsOrganization:["PUT /orgs/{org}/actions/permissions/workflow"],setGithubActionsDefaultWorkflowPermissionsRepository:["PUT /repos/{owner}/{repo}/actions/permissions/workflow"],setGithubActionsPermissionsOrganization:["PUT /orgs/{org}/actions/permissions"],setGithubActionsPermissionsRepository:["PUT /repos/{owner}/{repo}/actions/permissions"],setSelectedReposForOrgSecret:["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories"],setSelectedReposForOrgVariable:["PUT /orgs/{org}/actions/variables/{name}/repositories"],setSelectedRepositoriesEnabledGithubActionsOrganization:["PUT /orgs/{org}/actions/permissions/repositories"],setWorkflowAccessToRepository:["PUT /repos/{owner}/{repo}/actions/permissions/access"],updateEnvironmentVariable:["PATCH /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}"],updateHostedRunnerForOrg:["PATCH /orgs/{org}/actions/hosted-runners/{hosted_runner_id}"],updateOrgVariable:["PATCH /orgs/{org}/actions/variables/{name}"],updateRepoVariable:["PATCH /repos/{owner}/{repo}/actions/variables/{name}"]},activity:{checkRepoIsStarredByAuthenticatedUser:["GET /user/starred/{owner}/{repo}"],deleteRepoSubscription:["DELETE /repos/{owner}/{repo}/subscription"],deleteThreadSubscription:["DELETE /notifications/threads/{thread_id}/subscription"],getFeeds:["GET /feeds"],getRepoSubscription:["GET /repos/{owner}/{repo}/subscription"],getThread:["GET /notifications/threads/{thread_id}"],getThreadSubscriptionForAuthenticatedUser:["GET /notifications/threads/{thread_id}/subscription"],listEventsForAuthenticatedUser:["GET /users/{username}/events"],listNotificationsForAuthenticatedUser:["GET /notifications"],listOrgEventsForAuthenticatedUser:["GET /users/{username}/events/orgs/{org}"],listPublicEvents:["GET /events"],listPublicEventsForRepoNetwork:["GET /networks/{owner}/{repo}/events"],listPublicEventsForUser:["GET /users/{username}/events/public"],listPublicOrgEvents:["GET /orgs/{org}/events"],listReceivedEventsForUser:["GET /users/{username}/received_events"],listReceivedPublicEventsForUser:["GET /users/{username}/received_events/public"],listRepoEvents:["GET /repos/{owner}/{repo}/events"],listRepoNotificationsForAuthenticatedUser:["GET /repos/{owner}/{repo}/notifications"],listReposStarredByAuthenticatedUser:["GET /user/starred"],listReposStarredByUser:["GET /users/{username}/starred"],listReposWatchedByUser:["GET /users/{username}/subscriptions"],listStargazersForRepo:["GET /repos/{owner}/{repo}/stargazers"],listWatchedReposForAuthenticatedUser:["GET /user/subscriptions"],listWatchersForRepo:["GET /repos/{owner}/{repo}/subscribers"],markNotificationsAsRead:["PUT /notifications"],markRepoNotificationsAsRead:["PUT /repos/{owner}/{repo}/notifications"],markThreadAsDone:["DELETE /notifications/threads/{thread_id}"],markThreadAsRead:["PATCH /notifications/threads/{thread_id}"],setRepoSubscription:["PUT /repos/{owner}/{repo}/subscription"],setThreadSubscription:["PUT /notifications/threads/{thread_id}/subscription"],starRepoForAuthenticatedUser:["PUT /user/starred/{owner}/{repo}"],unstarRepoForAuthenticatedUser:["DELETE /user/starred/{owner}/{repo}"]},apps:{addRepoToInstallation:["PUT /user/installations/{installation_id}/repositories/{repository_id}",{},{renamed:["apps","addRepoToInstallationForAuthenticatedUser"]}],addRepoToInstallationForAuthenticatedUser:["PUT /user/installations/{installation_id}/repositories/{repository_id}"],checkToken:["POST /applications/{client_id}/token"],createFromManifest:["POST /app-manifests/{code}/conversions"],createInstallationAccessToken:["POST /app/installations/{installation_id}/access_tokens"],deleteAuthorization:["DELETE /applications/{client_id}/grant"],deleteInstallation:["DELETE /app/installations/{installation_id}"],deleteToken:["DELETE /applications/{client_id}/token"],getAuthenticated:["GET /app"],getBySlug:["GET /apps/{app_slug}"],getInstallation:["GET /app/installations/{installation_id}"],getOrgInstallation:["GET /orgs/{org}/installation"],getRepoInstallation:["GET /repos/{owner}/{repo}/installation"],getSubscriptionPlanForAccount:["GET /marketplace_listing/accounts/{account_id}"],getSubscriptionPlanForAccountStubbed:["GET /marketplace_listing/stubbed/accounts/{account_id}"],getUserInstallation:["GET /users/{username}/installation"],getWebhookConfigForApp:["GET /app/hook/config"],getWebhookDelivery:["GET /app/hook/deliveries/{delivery_id}"],listAccountsForPlan:["GET /marketplace_listing/plans/{plan_id}/accounts"],listAccountsForPlanStubbed:["GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"],listInstallationReposForAuthenticatedUser:["GET /user/installations/{installation_id}/repositories"],listInstallationRequestsForAuthenticatedApp:["GET /app/installation-requests"],listInstallations:["GET /app/installations"],listInstallationsForAuthenticatedUser:["GET /user/installations"],listPlans:["GET /marketplace_listing/plans"],listPlansStubbed:["GET /marketplace_listing/stubbed/plans"],listReposAccessibleToInstallation:["GET /installation/repositories"],listSubscriptionsForAuthenticatedUser:["GET /user/marketplace_purchases"],listSubscriptionsForAuthenticatedUserStubbed:["GET /user/marketplace_purchases/stubbed"],listWebhookDeliveries:["GET /app/hook/deliveries"],redeliverWebhookDelivery:["POST /app/hook/deliveries/{delivery_id}/attempts"],removeRepoFromInstallation:["DELETE /user/installations/{installation_id}/repositories/{repository_id}",{},{renamed:["apps","removeRepoFromInstallationForAuthenticatedUser"]}],removeRepoFromInstallationForAuthenticatedUser:["DELETE /user/installations/{installation_id}/repositories/{repository_id}"],resetToken:["PATCH /applications/{client_id}/token"],revokeInstallationAccessToken:["DELETE /installation/token"],scopeToken:["POST /applications/{client_id}/token/scoped"],suspendInstallation:["PUT /app/installations/{installation_id}/suspended"],unsuspendInstallation:["DELETE /app/installations/{installation_id}/suspended"],updateWebhookConfigForApp:["PATCH /app/hook/config"]},billing:{getGithubActionsBillingOrg:["GET /orgs/{org}/settings/billing/actions"],getGithubActionsBillingUser:["GET /users/{username}/settings/billing/actions"],getGithubBillingPremiumRequestUsageReportOrg:["GET /organizations/{org}/settings/billing/premium_request/usage"],getGithubBillingPremiumRequestUsageReportUser:["GET /users/{username}/settings/billing/premium_request/usage"],getGithubBillingUsageReportOrg:["GET /organizations/{org}/settings/billing/usage"],getGithubBillingUsageReportUser:["GET /users/{username}/settings/billing/usage"],getGithubPackagesBillingOrg:["GET /orgs/{org}/settings/billing/packages"],getGithubPackagesBillingUser:["GET /users/{username}/settings/billing/packages"],getSharedStorageBillingOrg:["GET /orgs/{org}/settings/billing/shared-storage"],getSharedStorageBillingUser:["GET /users/{username}/settings/billing/shared-storage"]},campaigns:{createCampaign:["POST /orgs/{org}/campaigns"],deleteCampaign:["DELETE /orgs/{org}/campaigns/{campaign_number}"],getCampaignSummary:["GET /orgs/{org}/campaigns/{campaign_number}"],listOrgCampaigns:["GET /orgs/{org}/campaigns"],updateCampaign:["PATCH /orgs/{org}/campaigns/{campaign_number}"]},checks:{create:["POST /repos/{owner}/{repo}/check-runs"],createSuite:["POST /repos/{owner}/{repo}/check-suites"],get:["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"],getSuite:["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"],listAnnotations:["GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"],listForRef:["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"],listForSuite:["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"],listSuitesForRef:["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"],rerequestRun:["POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest"],rerequestSuite:["POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest"],setSuitesPreferences:["PATCH /repos/{owner}/{repo}/check-suites/preferences"],update:["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"]},codeScanning:{commitAutofix:["POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix/commits"],createAutofix:["POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix"],createVariantAnalysis:["POST /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses"],deleteAnalysis:["DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}"],deleteCodeqlDatabase:["DELETE /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}"],getAlert:["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}",{},{renamedParameters:{alert_id:"alert_number"}}],getAnalysis:["GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}"],getAutofix:["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix"],getCodeqlDatabase:["GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}"],getDefaultSetup:["GET /repos/{owner}/{repo}/code-scanning/default-setup"],getSarif:["GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}"],getVariantAnalysis:["GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}"],getVariantAnalysisRepoTask:["GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}/repos/{repo_owner}/{repo_name}"],listAlertInstances:["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"],listAlertsForOrg:["GET /orgs/{org}/code-scanning/alerts"],listAlertsForRepo:["GET /repos/{owner}/{repo}/code-scanning/alerts"],listAlertsInstances:["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances",{},{renamed:["codeScanning","listAlertInstances"]}],listCodeqlDatabases:["GET /repos/{owner}/{repo}/code-scanning/codeql/databases"],listRecentAnalyses:["GET /repos/{owner}/{repo}/code-scanning/analyses"],updateAlert:["PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}"],updateDefaultSetup:["PATCH /repos/{owner}/{repo}/code-scanning/default-setup"],uploadSarif:["POST /repos/{owner}/{repo}/code-scanning/sarifs"]},codeSecurity:{attachConfiguration:["POST /orgs/{org}/code-security/configurations/{configuration_id}/attach"],attachEnterpriseConfiguration:["POST /enterprises/{enterprise}/code-security/configurations/{configuration_id}/attach"],createConfiguration:["POST /orgs/{org}/code-security/configurations"],createConfigurationForEnterprise:["POST /enterprises/{enterprise}/code-security/configurations"],deleteConfiguration:["DELETE /orgs/{org}/code-security/configurations/{configuration_id}"],deleteConfigurationForEnterprise:["DELETE /enterprises/{enterprise}/code-security/configurations/{configuration_id}"],detachConfiguration:["DELETE /orgs/{org}/code-security/configurations/detach"],getConfiguration:["GET /orgs/{org}/code-security/configurations/{configuration_id}"],getConfigurationForRepository:["GET /repos/{owner}/{repo}/code-security-configuration"],getConfigurationsForEnterprise:["GET /enterprises/{enterprise}/code-security/configurations"],getConfigurationsForOrg:["GET /orgs/{org}/code-security/configurations"],getDefaultConfigurations:["GET /orgs/{org}/code-security/configurations/defaults"],getDefaultConfigurationsForEnterprise:["GET /enterprises/{enterprise}/code-security/configurations/defaults"],getRepositoriesForConfiguration:["GET /orgs/{org}/code-security/configurations/{configuration_id}/repositories"],getRepositoriesForEnterpriseConfiguration:["GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}/repositories"],getSingleConfigurationForEnterprise:["GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}"],setConfigurationAsDefault:["PUT /orgs/{org}/code-security/configurations/{configuration_id}/defaults"],setConfigurationAsDefaultForEnterprise:["PUT /enterprises/{enterprise}/code-security/configurations/{configuration_id}/defaults"],updateConfiguration:["PATCH /orgs/{org}/code-security/configurations/{configuration_id}"],updateEnterpriseConfiguration:["PATCH /enterprises/{enterprise}/code-security/configurations/{configuration_id}"]},codesOfConduct:{getAllCodesOfConduct:["GET /codes_of_conduct"],getConductCode:["GET /codes_of_conduct/{key}"]},codespaces:{addRepositoryForSecretForAuthenticatedUser:["PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"],addSelectedRepoToOrgSecret:["PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"],checkPermissionsForDevcontainer:["GET /repos/{owner}/{repo}/codespaces/permissions_check"],codespaceMachinesForAuthenticatedUser:["GET /user/codespaces/{codespace_name}/machines"],createForAuthenticatedUser:["POST /user/codespaces"],createOrUpdateOrgSecret:["PUT /orgs/{org}/codespaces/secrets/{secret_name}"],createOrUpdateRepoSecret:["PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"],createOrUpdateSecretForAuthenticatedUser:["PUT /user/codespaces/secrets/{secret_name}"],createWithPrForAuthenticatedUser:["POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces"],createWithRepoForAuthenticatedUser:["POST /repos/{owner}/{repo}/codespaces"],deleteForAuthenticatedUser:["DELETE /user/codespaces/{codespace_name}"],deleteFromOrganization:["DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}"],deleteOrgSecret:["DELETE /orgs/{org}/codespaces/secrets/{secret_name}"],deleteRepoSecret:["DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"],deleteSecretForAuthenticatedUser:["DELETE /user/codespaces/secrets/{secret_name}"],exportForAuthenticatedUser:["POST /user/codespaces/{codespace_name}/exports"],getCodespacesForUserInOrg:["GET /orgs/{org}/members/{username}/codespaces"],getExportDetailsForAuthenticatedUser:["GET /user/codespaces/{codespace_name}/exports/{export_id}"],getForAuthenticatedUser:["GET /user/codespaces/{codespace_name}"],getOrgPublicKey:["GET /orgs/{org}/codespaces/secrets/public-key"],getOrgSecret:["GET /orgs/{org}/codespaces/secrets/{secret_name}"],getPublicKeyForAuthenticatedUser:["GET /user/codespaces/secrets/public-key"],getRepoPublicKey:["GET /repos/{owner}/{repo}/codespaces/secrets/public-key"],getRepoSecret:["GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"],getSecretForAuthenticatedUser:["GET /user/codespaces/secrets/{secret_name}"],listDevcontainersInRepositoryForAuthenticatedUser:["GET /repos/{owner}/{repo}/codespaces/devcontainers"],listForAuthenticatedUser:["GET /user/codespaces"],listInOrganization:["GET /orgs/{org}/codespaces",{},{renamedParameters:{org_id:"org"}}],listInRepositoryForAuthenticatedUser:["GET /repos/{owner}/{repo}/codespaces"],listOrgSecrets:["GET /orgs/{org}/codespaces/secrets"],listRepoSecrets:["GET /repos/{owner}/{repo}/codespaces/secrets"],listRepositoriesForSecretForAuthenticatedUser:["GET /user/codespaces/secrets/{secret_name}/repositories"],listSecretsForAuthenticatedUser:["GET /user/codespaces/secrets"],listSelectedReposForOrgSecret:["GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories"],preFlightWithRepoForAuthenticatedUser:["GET /repos/{owner}/{repo}/codespaces/new"],publishForAuthenticatedUser:["POST /user/codespaces/{codespace_name}/publish"],removeRepositoryForSecretForAuthenticatedUser:["DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"],removeSelectedRepoFromOrgSecret:["DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"],repoMachinesForAuthenticatedUser:["GET /repos/{owner}/{repo}/codespaces/machines"],setRepositoriesForSecretForAuthenticatedUser:["PUT /user/codespaces/secrets/{secret_name}/repositories"],setSelectedReposForOrgSecret:["PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories"],startForAuthenticatedUser:["POST /user/codespaces/{codespace_name}/start"],stopForAuthenticatedUser:["POST /user/codespaces/{codespace_name}/stop"],stopInOrganization:["POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop"],updateForAuthenticatedUser:["PATCH /user/codespaces/{codespace_name}"]},copilot:{addCopilotSeatsForTeams:["POST /orgs/{org}/copilot/billing/selected_teams"],addCopilotSeatsForUsers:["POST /orgs/{org}/copilot/billing/selected_users"],cancelCopilotSeatAssignmentForTeams:["DELETE /orgs/{org}/copilot/billing/selected_teams"],cancelCopilotSeatAssignmentForUsers:["DELETE /orgs/{org}/copilot/billing/selected_users"],copilotMetricsForOrganization:["GET /orgs/{org}/copilot/metrics"],copilotMetricsForTeam:["GET /orgs/{org}/team/{team_slug}/copilot/metrics"],getCopilotOrganizationDetails:["GET /orgs/{org}/copilot/billing"],getCopilotSeatDetailsForUser:["GET /orgs/{org}/members/{username}/copilot"],listCopilotSeats:["GET /orgs/{org}/copilot/billing/seats"]},credentials:{revoke:["POST /credentials/revoke"]},dependabot:{addSelectedRepoToOrgSecret:["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"],createOrUpdateOrgSecret:["PUT /orgs/{org}/dependabot/secrets/{secret_name}"],createOrUpdateRepoSecret:["PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"],deleteOrgSecret:["DELETE /orgs/{org}/dependabot/secrets/{secret_name}"],deleteRepoSecret:["DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"],getAlert:["GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"],getOrgPublicKey:["GET /orgs/{org}/dependabot/secrets/public-key"],getOrgSecret:["GET /orgs/{org}/dependabot/secrets/{secret_name}"],getRepoPublicKey:["GET /repos/{owner}/{repo}/dependabot/secrets/public-key"],getRepoSecret:["GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"],listAlertsForEnterprise:["GET /enterprises/{enterprise}/dependabot/alerts"],listAlertsForOrg:["GET /orgs/{org}/dependabot/alerts"],listAlertsForRepo:["GET /repos/{owner}/{repo}/dependabot/alerts"],listOrgSecrets:["GET /orgs/{org}/dependabot/secrets"],listRepoSecrets:["GET /repos/{owner}/{repo}/dependabot/secrets"],listSelectedReposForOrgSecret:["GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"],removeSelectedRepoFromOrgSecret:["DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"],repositoryAccessForOrg:["GET /organizations/{org}/dependabot/repository-access"],setRepositoryAccessDefaultLevel:["PUT /organizations/{org}/dependabot/repository-access/default-level"],setSelectedReposForOrgSecret:["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories"],updateAlert:["PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"],updateRepositoryAccessForOrg:["PATCH /organizations/{org}/dependabot/repository-access"]},dependencyGraph:{createRepositorySnapshot:["POST /repos/{owner}/{repo}/dependency-graph/snapshots"],diffRange:["GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}"],exportSbom:["GET /repos/{owner}/{repo}/dependency-graph/sbom"]},emojis:{get:["GET /emojis"]},enterpriseTeamMemberships:{add:["PUT /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}"],bulkAdd:["POST /enterprises/{enterprise}/teams/{enterprise-team}/memberships/add"],bulkRemove:["POST /enterprises/{enterprise}/teams/{enterprise-team}/memberships/remove"],get:["GET /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}"],list:["GET /enterprises/{enterprise}/teams/{enterprise-team}/memberships"],remove:["DELETE /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}"]},enterpriseTeamOrganizations:{add:["PUT /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}"],bulkAdd:["POST /enterprises/{enterprise}/teams/{enterprise-team}/organizations/add"],bulkRemove:["POST /enterprises/{enterprise}/teams/{enterprise-team}/organizations/remove"],delete:["DELETE /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}"],getAssignment:["GET /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}"],getAssignments:["GET /enterprises/{enterprise}/teams/{enterprise-team}/organizations"]},enterpriseTeams:{create:["POST /enterprises/{enterprise}/teams"],delete:["DELETE /enterprises/{enterprise}/teams/{team_slug}"],get:["GET /enterprises/{enterprise}/teams/{team_slug}"],list:["GET /enterprises/{enterprise}/teams"],update:["PATCH /enterprises/{enterprise}/teams/{team_slug}"]},gists:{checkIsStarred:["GET /gists/{gist_id}/star"],create:["POST /gists"],createComment:["POST /gists/{gist_id}/comments"],delete:["DELETE /gists/{gist_id}"],deleteComment:["DELETE /gists/{gist_id}/comments/{comment_id}"],fork:["POST /gists/{gist_id}/forks"],get:["GET /gists/{gist_id}"],getComment:["GET /gists/{gist_id}/comments/{comment_id}"],getRevision:["GET /gists/{gist_id}/{sha}"],list:["GET /gists"],listComments:["GET /gists/{gist_id}/comments"],listCommits:["GET /gists/{gist_id}/commits"],listForUser:["GET /users/{username}/gists"],listForks:["GET /gists/{gist_id}/forks"],listPublic:["GET /gists/public"],listStarred:["GET /gists/starred"],star:["PUT /gists/{gist_id}/star"],unstar:["DELETE /gists/{gist_id}/star"],update:["PATCH /gists/{gist_id}"],updateComment:["PATCH /gists/{gist_id}/comments/{comment_id}"]},git:{createBlob:["POST /repos/{owner}/{repo}/git/blobs"],createCommit:["POST /repos/{owner}/{repo}/git/commits"],createRef:["POST /repos/{owner}/{repo}/git/refs"],createTag:["POST /repos/{owner}/{repo}/git/tags"],createTree:["POST /repos/{owner}/{repo}/git/trees"],deleteRef:["DELETE /repos/{owner}/{repo}/git/refs/{ref}"],getBlob:["GET /repos/{owner}/{repo}/git/blobs/{file_sha}"],getCommit:["GET /repos/{owner}/{repo}/git/commits/{commit_sha}"],getRef:["GET /repos/{owner}/{repo}/git/ref/{ref}"],getTag:["GET /repos/{owner}/{repo}/git/tags/{tag_sha}"],getTree:["GET /repos/{owner}/{repo}/git/trees/{tree_sha}"],listMatchingRefs:["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"],updateRef:["PATCH /repos/{owner}/{repo}/git/refs/{ref}"]},gitignore:{getAllTemplates:["GET /gitignore/templates"],getTemplate:["GET /gitignore/templates/{name}"]},hostedCompute:{createNetworkConfigurationForOrg:["POST /orgs/{org}/settings/network-configurations"],deleteNetworkConfigurationFromOrg:["DELETE /orgs/{org}/settings/network-configurations/{network_configuration_id}"],getNetworkConfigurationForOrg:["GET /orgs/{org}/settings/network-configurations/{network_configuration_id}"],getNetworkSettingsForOrg:["GET /orgs/{org}/settings/network-settings/{network_settings_id}"],listNetworkConfigurationsForOrg:["GET /orgs/{org}/settings/network-configurations"],updateNetworkConfigurationForOrg:["PATCH /orgs/{org}/settings/network-configurations/{network_configuration_id}"]},interactions:{getRestrictionsForAuthenticatedUser:["GET /user/interaction-limits"],getRestrictionsForOrg:["GET /orgs/{org}/interaction-limits"],getRestrictionsForRepo:["GET /repos/{owner}/{repo}/interaction-limits"],getRestrictionsForYourPublicRepos:["GET /user/interaction-limits",{},{renamed:["interactions","getRestrictionsForAuthenticatedUser"]}],removeRestrictionsForAuthenticatedUser:["DELETE /user/interaction-limits"],removeRestrictionsForOrg:["DELETE /orgs/{org}/interaction-limits"],removeRestrictionsForRepo:["DELETE /repos/{owner}/{repo}/interaction-limits"],removeRestrictionsForYourPublicRepos:["DELETE /user/interaction-limits",{},{renamed:["interactions","removeRestrictionsForAuthenticatedUser"]}],setRestrictionsForAuthenticatedUser:["PUT /user/interaction-limits"],setRestrictionsForOrg:["PUT /orgs/{org}/interaction-limits"],setRestrictionsForRepo:["PUT /repos/{owner}/{repo}/interaction-limits"],setRestrictionsForYourPublicRepos:["PUT /user/interaction-limits",{},{renamed:["interactions","setRestrictionsForAuthenticatedUser"]}]},issues:{addAssignees:["POST /repos/{owner}/{repo}/issues/{issue_number}/assignees"],addBlockedByDependency:["POST /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by"],addLabels:["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"],addSubIssue:["POST /repos/{owner}/{repo}/issues/{issue_number}/sub_issues"],checkUserCanBeAssigned:["GET /repos/{owner}/{repo}/assignees/{assignee}"],checkUserCanBeAssignedToIssue:["GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}"],create:["POST /repos/{owner}/{repo}/issues"],createComment:["POST /repos/{owner}/{repo}/issues/{issue_number}/comments"],createLabel:["POST /repos/{owner}/{repo}/labels"],createMilestone:["POST /repos/{owner}/{repo}/milestones"],deleteComment:["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}"],deleteLabel:["DELETE /repos/{owner}/{repo}/labels/{name}"],deleteMilestone:["DELETE /repos/{owner}/{repo}/milestones/{milestone_number}"],get:["GET /repos/{owner}/{repo}/issues/{issue_number}"],getComment:["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"],getEvent:["GET /repos/{owner}/{repo}/issues/events/{event_id}"],getLabel:["GET /repos/{owner}/{repo}/labels/{name}"],getMilestone:["GET /repos/{owner}/{repo}/milestones/{milestone_number}"],getParent:["GET /repos/{owner}/{repo}/issues/{issue_number}/parent"],list:["GET /issues"],listAssignees:["GET /repos/{owner}/{repo}/assignees"],listComments:["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"],listCommentsForRepo:["GET /repos/{owner}/{repo}/issues/comments"],listDependenciesBlockedBy:["GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by"],listDependenciesBlocking:["GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocking"],listEvents:["GET /repos/{owner}/{repo}/issues/{issue_number}/events"],listEventsForRepo:["GET /repos/{owner}/{repo}/issues/events"],listEventsForTimeline:["GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"],listForAuthenticatedUser:["GET /user/issues"],listForOrg:["GET /orgs/{org}/issues"],listForRepo:["GET /repos/{owner}/{repo}/issues"],listLabelsForMilestone:["GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"],listLabelsForRepo:["GET /repos/{owner}/{repo}/labels"],listLabelsOnIssue:["GET /repos/{owner}/{repo}/issues/{issue_number}/labels"],listMilestones:["GET /repos/{owner}/{repo}/milestones"],listSubIssues:["GET /repos/{owner}/{repo}/issues/{issue_number}/sub_issues"],lock:["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"],removeAllLabels:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels"],removeAssignees:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees"],removeDependencyBlockedBy:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by/{issue_id}"],removeLabel:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}"],removeSubIssue:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/sub_issue"],reprioritizeSubIssue:["PATCH /repos/{owner}/{repo}/issues/{issue_number}/sub_issues/priority"],setLabels:["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"],unlock:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"],update:["PATCH /repos/{owner}/{repo}/issues/{issue_number}"],updateComment:["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"],updateLabel:["PATCH /repos/{owner}/{repo}/labels/{name}"],updateMilestone:["PATCH /repos/{owner}/{repo}/milestones/{milestone_number}"]},licenses:{get:["GET /licenses/{license}"],getAllCommonlyUsed:["GET /licenses"],getForRepo:["GET /repos/{owner}/{repo}/license"]},markdown:{render:["POST /markdown"],renderRaw:["POST /markdown/raw",{headers:{"content-type":"text/plain; charset=utf-8"}}]},meta:{get:["GET /meta"],getAllVersions:["GET /versions"],getOctocat:["GET /octocat"],getZen:["GET /zen"],root:["GET /"]},migrations:{deleteArchiveForAuthenticatedUser:["DELETE /user/migrations/{migration_id}/archive"],deleteArchiveForOrg:["DELETE /orgs/{org}/migrations/{migration_id}/archive"],downloadArchiveForOrg:["GET /orgs/{org}/migrations/{migration_id}/archive"],getArchiveForAuthenticatedUser:["GET /user/migrations/{migration_id}/archive"],getStatusForAuthenticatedUser:["GET /user/migrations/{migration_id}"],getStatusForOrg:["GET /orgs/{org}/migrations/{migration_id}"],listForAuthenticatedUser:["GET /user/migrations"],listForOrg:["GET /orgs/{org}/migrations"],listReposForAuthenticatedUser:["GET /user/migrations/{migration_id}/repositories"],listReposForOrg:["GET /orgs/{org}/migrations/{migration_id}/repositories"],listReposForUser:["GET /user/migrations/{migration_id}/repositories",{},{renamed:["migrations","listReposForAuthenticatedUser"]}],startForAuthenticatedUser:["POST /user/migrations"],startForOrg:["POST /orgs/{org}/migrations"],unlockRepoForAuthenticatedUser:["DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock"],unlockRepoForOrg:["DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock"]},oidc:{getOidcCustomSubTemplateForOrg:["GET /orgs/{org}/actions/oidc/customization/sub"],updateOidcCustomSubTemplateForOrg:["PUT /orgs/{org}/actions/oidc/customization/sub"]},orgs:{addSecurityManagerTeam:["PUT /orgs/{org}/security-managers/teams/{team_slug}",{},{deprecated:"octokit.rest.orgs.addSecurityManagerTeam() is deprecated, see https://docs.github.com/rest/orgs/security-managers#add-a-security-manager-team"}],assignTeamToOrgRole:["PUT /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}"],assignUserToOrgRole:["PUT /orgs/{org}/organization-roles/users/{username}/{role_id}"],blockUser:["PUT /orgs/{org}/blocks/{username}"],cancelInvitation:["DELETE /orgs/{org}/invitations/{invitation_id}"],checkBlockedUser:["GET /orgs/{org}/blocks/{username}"],checkMembershipForUser:["GET /orgs/{org}/members/{username}"],checkPublicMembershipForUser:["GET /orgs/{org}/public_members/{username}"],convertMemberToOutsideCollaborator:["PUT /orgs/{org}/outside_collaborators/{username}"],createArtifactStorageRecord:["POST /orgs/{org}/artifacts/metadata/storage-record"],createInvitation:["POST /orgs/{org}/invitations"],createIssueType:["POST /orgs/{org}/issue-types"],createWebhook:["POST /orgs/{org}/hooks"],customPropertiesForOrgsCreateOrUpdateOrganizationValues:["PATCH /organizations/{org}/org-properties/values"],customPropertiesForOrgsGetOrganizationValues:["GET /organizations/{org}/org-properties/values"],customPropertiesForReposCreateOrUpdateOrganizationDefinition:["PUT /orgs/{org}/properties/schema/{custom_property_name}"],customPropertiesForReposCreateOrUpdateOrganizationDefinitions:["PATCH /orgs/{org}/properties/schema"],customPropertiesForReposCreateOrUpdateOrganizationValues:["PATCH /orgs/{org}/properties/values"],customPropertiesForReposDeleteOrganizationDefinition:["DELETE /orgs/{org}/properties/schema/{custom_property_name}"],customPropertiesForReposGetOrganizationDefinition:["GET /orgs/{org}/properties/schema/{custom_property_name}"],customPropertiesForReposGetOrganizationDefinitions:["GET /orgs/{org}/properties/schema"],customPropertiesForReposGetOrganizationValues:["GET /orgs/{org}/properties/values"],delete:["DELETE /orgs/{org}"],deleteAttestationsBulk:["POST /orgs/{org}/attestations/delete-request"],deleteAttestationsById:["DELETE /orgs/{org}/attestations/{attestation_id}"],deleteAttestationsBySubjectDigest:["DELETE /orgs/{org}/attestations/digest/{subject_digest}"],deleteIssueType:["DELETE /orgs/{org}/issue-types/{issue_type_id}"],deleteWebhook:["DELETE /orgs/{org}/hooks/{hook_id}"],disableSelectedRepositoryImmutableReleasesOrganization:["DELETE /orgs/{org}/settings/immutable-releases/repositories/{repository_id}"],enableSelectedRepositoryImmutableReleasesOrganization:["PUT /orgs/{org}/settings/immutable-releases/repositories/{repository_id}"],get:["GET /orgs/{org}"],getImmutableReleasesSettings:["GET /orgs/{org}/settings/immutable-releases"],getImmutableReleasesSettingsRepositories:["GET /orgs/{org}/settings/immutable-releases/repositories"],getMembershipForAuthenticatedUser:["GET /user/memberships/orgs/{org}"],getMembershipForUser:["GET /orgs/{org}/memberships/{username}"],getOrgRole:["GET /orgs/{org}/organization-roles/{role_id}"],getOrgRulesetHistory:["GET /orgs/{org}/rulesets/{ruleset_id}/history"],getOrgRulesetVersion:["GET /orgs/{org}/rulesets/{ruleset_id}/history/{version_id}"],getWebhook:["GET /orgs/{org}/hooks/{hook_id}"],getWebhookConfigForOrg:["GET /orgs/{org}/hooks/{hook_id}/config"],getWebhookDelivery:["GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}"],list:["GET /organizations"],listAppInstallations:["GET /orgs/{org}/installations"],listArtifactStorageRecords:["GET /orgs/{org}/artifacts/{subject_digest}/metadata/storage-records"],listAttestationRepositories:["GET /orgs/{org}/attestations/repositories"],listAttestations:["GET /orgs/{org}/attestations/{subject_digest}"],listAttestationsBulk:["POST /orgs/{org}/attestations/bulk-list{?per_page,before,after}"],listBlockedUsers:["GET /orgs/{org}/blocks"],listFailedInvitations:["GET /orgs/{org}/failed_invitations"],listForAuthenticatedUser:["GET /user/orgs"],listForUser:["GET /users/{username}/orgs"],listInvitationTeams:["GET /orgs/{org}/invitations/{invitation_id}/teams"],listIssueTypes:["GET /orgs/{org}/issue-types"],listMembers:["GET /orgs/{org}/members"],listMembershipsForAuthenticatedUser:["GET /user/memberships/orgs"],listOrgRoleTeams:["GET /orgs/{org}/organization-roles/{role_id}/teams"],listOrgRoleUsers:["GET /orgs/{org}/organization-roles/{role_id}/users"],listOrgRoles:["GET /orgs/{org}/organization-roles"],listOrganizationFineGrainedPermissions:["GET /orgs/{org}/organization-fine-grained-permissions"],listOutsideCollaborators:["GET /orgs/{org}/outside_collaborators"],listPatGrantRepositories:["GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories"],listPatGrantRequestRepositories:["GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories"],listPatGrantRequests:["GET /orgs/{org}/personal-access-token-requests"],listPatGrants:["GET /orgs/{org}/personal-access-tokens"],listPendingInvitations:["GET /orgs/{org}/invitations"],listPublicMembers:["GET /orgs/{org}/public_members"],listSecurityManagerTeams:["GET /orgs/{org}/security-managers",{},{deprecated:"octokit.rest.orgs.listSecurityManagerTeams() is deprecated, see https://docs.github.com/rest/orgs/security-managers#list-security-manager-teams"}],listWebhookDeliveries:["GET /orgs/{org}/hooks/{hook_id}/deliveries"],listWebhooks:["GET /orgs/{org}/hooks"],pingWebhook:["POST /orgs/{org}/hooks/{hook_id}/pings"],redeliverWebhookDelivery:["POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"],removeMember:["DELETE /orgs/{org}/members/{username}"],removeMembershipForUser:["DELETE /orgs/{org}/memberships/{username}"],removeOutsideCollaborator:["DELETE /orgs/{org}/outside_collaborators/{username}"],removePublicMembershipForAuthenticatedUser:["DELETE /orgs/{org}/public_members/{username}"],removeSecurityManagerTeam:["DELETE /orgs/{org}/security-managers/teams/{team_slug}",{},{deprecated:"octokit.rest.orgs.removeSecurityManagerTeam() is deprecated, see https://docs.github.com/rest/orgs/security-managers#remove-a-security-manager-team"}],reviewPatGrantRequest:["POST /orgs/{org}/personal-access-token-requests/{pat_request_id}"],reviewPatGrantRequestsInBulk:["POST /orgs/{org}/personal-access-token-requests"],revokeAllOrgRolesTeam:["DELETE /orgs/{org}/organization-roles/teams/{team_slug}"],revokeAllOrgRolesUser:["DELETE /orgs/{org}/organization-roles/users/{username}"],revokeOrgRoleTeam:["DELETE /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}"],revokeOrgRoleUser:["DELETE /orgs/{org}/organization-roles/users/{username}/{role_id}"],setImmutableReleasesSettings:["PUT /orgs/{org}/settings/immutable-releases"],setImmutableReleasesSettingsRepositories:["PUT /orgs/{org}/settings/immutable-releases/repositories"],setMembershipForUser:["PUT /orgs/{org}/memberships/{username}"],setPublicMembershipForAuthenticatedUser:["PUT /orgs/{org}/public_members/{username}"],unblockUser:["DELETE /orgs/{org}/blocks/{username}"],update:["PATCH /orgs/{org}"],updateIssueType:["PUT /orgs/{org}/issue-types/{issue_type_id}"],updateMembershipForAuthenticatedUser:["PATCH /user/memberships/orgs/{org}"],updatePatAccess:["POST /orgs/{org}/personal-access-tokens/{pat_id}"],updatePatAccesses:["POST /orgs/{org}/personal-access-tokens"],updateWebhook:["PATCH /orgs/{org}/hooks/{hook_id}"],updateWebhookConfigForOrg:["PATCH /orgs/{org}/hooks/{hook_id}/config"]},packages:{deletePackageForAuthenticatedUser:["DELETE /user/packages/{package_type}/{package_name}"],deletePackageForOrg:["DELETE /orgs/{org}/packages/{package_type}/{package_name}"],deletePackageForUser:["DELETE /users/{username}/packages/{package_type}/{package_name}"],deletePackageVersionForAuthenticatedUser:["DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}"],deletePackageVersionForOrg:["DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"],deletePackageVersionForUser:["DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"],getAllPackageVersionsForAPackageOwnedByAnOrg:["GET /orgs/{org}/packages/{package_type}/{package_name}/versions",{},{renamed:["packages","getAllPackageVersionsForPackageOwnedByOrg"]}],getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser:["GET /user/packages/{package_type}/{package_name}/versions",{},{renamed:["packages","getAllPackageVersionsForPackageOwnedByAuthenticatedUser"]}],getAllPackageVersionsForPackageOwnedByAuthenticatedUser:["GET /user/packages/{package_type}/{package_name}/versions"],getAllPackageVersionsForPackageOwnedByOrg:["GET /orgs/{org}/packages/{package_type}/{package_name}/versions"],getAllPackageVersionsForPackageOwnedByUser:["GET /users/{username}/packages/{package_type}/{package_name}/versions"],getPackageForAuthenticatedUser:["GET /user/packages/{package_type}/{package_name}"],getPackageForOrganization:["GET /orgs/{org}/packages/{package_type}/{package_name}"],getPackageForUser:["GET /users/{username}/packages/{package_type}/{package_name}"],getPackageVersionForAuthenticatedUser:["GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}"],getPackageVersionForOrganization:["GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"],getPackageVersionForUser:["GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"],listDockerMigrationConflictingPackagesForAuthenticatedUser:["GET /user/docker/conflicts"],listDockerMigrationConflictingPackagesForOrganization:["GET /orgs/{org}/docker/conflicts"],listDockerMigrationConflictingPackagesForUser:["GET /users/{username}/docker/conflicts"],listPackagesForAuthenticatedUser:["GET /user/packages"],listPackagesForOrganization:["GET /orgs/{org}/packages"],listPackagesForUser:["GET /users/{username}/packages"],restorePackageForAuthenticatedUser:["POST /user/packages/{package_type}/{package_name}/restore{?token}"],restorePackageForOrg:["POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}"],restorePackageForUser:["POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}"],restorePackageVersionForAuthenticatedUser:["POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"],restorePackageVersionForOrg:["POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"],restorePackageVersionForUser:["POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"]},privateRegistries:{createOrgPrivateRegistry:["POST /orgs/{org}/private-registries"],deleteOrgPrivateRegistry:["DELETE /orgs/{org}/private-registries/{secret_name}"],getOrgPrivateRegistry:["GET /orgs/{org}/private-registries/{secret_name}"],getOrgPublicKey:["GET /orgs/{org}/private-registries/public-key"],listOrgPrivateRegistries:["GET /orgs/{org}/private-registries"],updateOrgPrivateRegistry:["PATCH /orgs/{org}/private-registries/{secret_name}"]},projects:{addItemForOrg:["POST /orgs/{org}/projectsV2/{project_number}/items"],addItemForUser:["POST /users/{username}/projectsV2/{project_number}/items"],deleteItemForOrg:["DELETE /orgs/{org}/projectsV2/{project_number}/items/{item_id}"],deleteItemForUser:["DELETE /users/{username}/projectsV2/{project_number}/items/{item_id}"],getFieldForOrg:["GET /orgs/{org}/projectsV2/{project_number}/fields/{field_id}"],getFieldForUser:["GET /users/{username}/projectsV2/{project_number}/fields/{field_id}"],getForOrg:["GET /orgs/{org}/projectsV2/{project_number}"],getForUser:["GET /users/{username}/projectsV2/{project_number}"],getOrgItem:["GET /orgs/{org}/projectsV2/{project_number}/items/{item_id}"],getUserItem:["GET /users/{username}/projectsV2/{project_number}/items/{item_id}"],listFieldsForOrg:["GET /orgs/{org}/projectsV2/{project_number}/fields"],listFieldsForUser:["GET /users/{username}/projectsV2/{project_number}/fields"],listForOrg:["GET /orgs/{org}/projectsV2"],listForUser:["GET /users/{username}/projectsV2"],listItemsForOrg:["GET /orgs/{org}/projectsV2/{project_number}/items"],listItemsForUser:["GET /users/{username}/projectsV2/{project_number}/items"],updateItemForOrg:["PATCH /orgs/{org}/projectsV2/{project_number}/items/{item_id}"],updateItemForUser:["PATCH /users/{username}/projectsV2/{project_number}/items/{item_id}"]},pulls:{checkIfMerged:["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"],create:["POST /repos/{owner}/{repo}/pulls"],createReplyForReviewComment:["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies"],createReview:["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"],createReviewComment:["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments"],deletePendingReview:["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"],deleteReviewComment:["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}"],dismissReview:["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals"],get:["GET /repos/{owner}/{repo}/pulls/{pull_number}"],getReview:["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"],getReviewComment:["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"],list:["GET /repos/{owner}/{repo}/pulls"],listCommentsForReview:["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"],listCommits:["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"],listFiles:["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"],listRequestedReviewers:["GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"],listReviewComments:["GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"],listReviewCommentsForRepo:["GET /repos/{owner}/{repo}/pulls/comments"],listReviews:["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"],merge:["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"],removeRequestedReviewers:["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"],requestReviewers:["POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"],submitReview:["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events"],update:["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"],updateBranch:["PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch"],updateReview:["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"],updateReviewComment:["PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}"]},rateLimit:{get:["GET /rate_limit"]},reactions:{createForCommitComment:["POST /repos/{owner}/{repo}/comments/{comment_id}/reactions"],createForIssue:["POST /repos/{owner}/{repo}/issues/{issue_number}/reactions"],createForIssueComment:["POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"],createForPullRequestReviewComment:["POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"],createForRelease:["POST /repos/{owner}/{repo}/releases/{release_id}/reactions"],createForTeamDiscussionCommentInOrg:["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"],createForTeamDiscussionInOrg:["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"],deleteForCommitComment:["DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}"],deleteForIssue:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}"],deleteForIssueComment:["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}"],deleteForPullRequestComment:["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}"],deleteForRelease:["DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}"],deleteForTeamDiscussion:["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}"],deleteForTeamDiscussionComment:["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}"],listForCommitComment:["GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"],listForIssue:["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"],listForIssueComment:["GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"],listForPullRequestReviewComment:["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"],listForRelease:["GET /repos/{owner}/{repo}/releases/{release_id}/reactions"],listForTeamDiscussionCommentInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"],listForTeamDiscussionInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"]},repos:{acceptInvitation:["PATCH /user/repository_invitations/{invitation_id}",{},{renamed:["repos","acceptInvitationForAuthenticatedUser"]}],acceptInvitationForAuthenticatedUser:["PATCH /user/repository_invitations/{invitation_id}"],addAppAccessRestrictions:["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",{},{mapToData:"apps"}],addCollaborator:["PUT /repos/{owner}/{repo}/collaborators/{username}"],addStatusCheckContexts:["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",{},{mapToData:"contexts"}],addTeamAccessRestrictions:["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",{},{mapToData:"teams"}],addUserAccessRestrictions:["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",{},{mapToData:"users"}],cancelPagesDeployment:["POST /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}/cancel"],checkAutomatedSecurityFixes:["GET /repos/{owner}/{repo}/automated-security-fixes"],checkCollaborator:["GET /repos/{owner}/{repo}/collaborators/{username}"],checkImmutableReleases:["GET /repos/{owner}/{repo}/immutable-releases"],checkPrivateVulnerabilityReporting:["GET /repos/{owner}/{repo}/private-vulnerability-reporting"],checkVulnerabilityAlerts:["GET /repos/{owner}/{repo}/vulnerability-alerts"],codeownersErrors:["GET /repos/{owner}/{repo}/codeowners/errors"],compareCommits:["GET /repos/{owner}/{repo}/compare/{base}...{head}"],compareCommitsWithBasehead:["GET /repos/{owner}/{repo}/compare/{basehead}"],createAttestation:["POST /repos/{owner}/{repo}/attestations"],createAutolink:["POST /repos/{owner}/{repo}/autolinks"],createCommitComment:["POST /repos/{owner}/{repo}/commits/{commit_sha}/comments"],createCommitSignatureProtection:["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"],createCommitStatus:["POST /repos/{owner}/{repo}/statuses/{sha}"],createDeployKey:["POST /repos/{owner}/{repo}/keys"],createDeployment:["POST /repos/{owner}/{repo}/deployments"],createDeploymentBranchPolicy:["POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"],createDeploymentProtectionRule:["POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules"],createDeploymentStatus:["POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"],createDispatchEvent:["POST /repos/{owner}/{repo}/dispatches"],createForAuthenticatedUser:["POST /user/repos"],createFork:["POST /repos/{owner}/{repo}/forks"],createInOrg:["POST /orgs/{org}/repos"],createOrUpdateEnvironment:["PUT /repos/{owner}/{repo}/environments/{environment_name}"],createOrUpdateFileContents:["PUT /repos/{owner}/{repo}/contents/{path}"],createOrgRuleset:["POST /orgs/{org}/rulesets"],createPagesDeployment:["POST /repos/{owner}/{repo}/pages/deployments"],createPagesSite:["POST /repos/{owner}/{repo}/pages"],createRelease:["POST /repos/{owner}/{repo}/releases"],createRepoRuleset:["POST /repos/{owner}/{repo}/rulesets"],createUsingTemplate:["POST /repos/{template_owner}/{template_repo}/generate"],createWebhook:["POST /repos/{owner}/{repo}/hooks"],customPropertiesForReposCreateOrUpdateRepositoryValues:["PATCH /repos/{owner}/{repo}/properties/values"],customPropertiesForReposGetRepositoryValues:["GET /repos/{owner}/{repo}/properties/values"],declineInvitation:["DELETE /user/repository_invitations/{invitation_id}",{},{renamed:["repos","declineInvitationForAuthenticatedUser"]}],declineInvitationForAuthenticatedUser:["DELETE /user/repository_invitations/{invitation_id}"],delete:["DELETE /repos/{owner}/{repo}"],deleteAccessRestrictions:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"],deleteAdminBranchProtection:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],deleteAnEnvironment:["DELETE /repos/{owner}/{repo}/environments/{environment_name}"],deleteAutolink:["DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}"],deleteBranchProtection:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection"],deleteCommitComment:["DELETE /repos/{owner}/{repo}/comments/{comment_id}"],deleteCommitSignatureProtection:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"],deleteDeployKey:["DELETE /repos/{owner}/{repo}/keys/{key_id}"],deleteDeployment:["DELETE /repos/{owner}/{repo}/deployments/{deployment_id}"],deleteDeploymentBranchPolicy:["DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"],deleteFile:["DELETE /repos/{owner}/{repo}/contents/{path}"],deleteInvitation:["DELETE /repos/{owner}/{repo}/invitations/{invitation_id}"],deleteOrgRuleset:["DELETE /orgs/{org}/rulesets/{ruleset_id}"],deletePagesSite:["DELETE /repos/{owner}/{repo}/pages"],deletePullRequestReviewProtection:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"],deleteRelease:["DELETE /repos/{owner}/{repo}/releases/{release_id}"],deleteReleaseAsset:["DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}"],deleteRepoRuleset:["DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}"],deleteWebhook:["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"],disableAutomatedSecurityFixes:["DELETE /repos/{owner}/{repo}/automated-security-fixes"],disableDeploymentProtectionRule:["DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}"],disableImmutableReleases:["DELETE /repos/{owner}/{repo}/immutable-releases"],disablePrivateVulnerabilityReporting:["DELETE /repos/{owner}/{repo}/private-vulnerability-reporting"],disableVulnerabilityAlerts:["DELETE /repos/{owner}/{repo}/vulnerability-alerts"],downloadArchive:["GET /repos/{owner}/{repo}/zipball/{ref}",{},{renamed:["repos","downloadZipballArchive"]}],downloadTarballArchive:["GET /repos/{owner}/{repo}/tarball/{ref}"],downloadZipballArchive:["GET /repos/{owner}/{repo}/zipball/{ref}"],enableAutomatedSecurityFixes:["PUT /repos/{owner}/{repo}/automated-security-fixes"],enableImmutableReleases:["PUT /repos/{owner}/{repo}/immutable-releases"],enablePrivateVulnerabilityReporting:["PUT /repos/{owner}/{repo}/private-vulnerability-reporting"],enableVulnerabilityAlerts:["PUT /repos/{owner}/{repo}/vulnerability-alerts"],generateReleaseNotes:["POST /repos/{owner}/{repo}/releases/generate-notes"],get:["GET /repos/{owner}/{repo}"],getAccessRestrictions:["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"],getAdminBranchProtection:["GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],getAllDeploymentProtectionRules:["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules"],getAllEnvironments:["GET /repos/{owner}/{repo}/environments"],getAllStatusCheckContexts:["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"],getAllTopics:["GET /repos/{owner}/{repo}/topics"],getAppsWithAccessToProtectedBranch:["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"],getAutolink:["GET /repos/{owner}/{repo}/autolinks/{autolink_id}"],getBranch:["GET /repos/{owner}/{repo}/branches/{branch}"],getBranchProtection:["GET /repos/{owner}/{repo}/branches/{branch}/protection"],getBranchRules:["GET /repos/{owner}/{repo}/rules/branches/{branch}"],getClones:["GET /repos/{owner}/{repo}/traffic/clones"],getCodeFrequencyStats:["GET /repos/{owner}/{repo}/stats/code_frequency"],getCollaboratorPermissionLevel:["GET /repos/{owner}/{repo}/collaborators/{username}/permission"],getCombinedStatusForRef:["GET /repos/{owner}/{repo}/commits/{ref}/status"],getCommit:["GET /repos/{owner}/{repo}/commits/{ref}"],getCommitActivityStats:["GET /repos/{owner}/{repo}/stats/commit_activity"],getCommitComment:["GET /repos/{owner}/{repo}/comments/{comment_id}"],getCommitSignatureProtection:["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"],getCommunityProfileMetrics:["GET /repos/{owner}/{repo}/community/profile"],getContent:["GET /repos/{owner}/{repo}/contents/{path}"],getContributorsStats:["GET /repos/{owner}/{repo}/stats/contributors"],getCustomDeploymentProtectionRule:["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}"],getDeployKey:["GET /repos/{owner}/{repo}/keys/{key_id}"],getDeployment:["GET /repos/{owner}/{repo}/deployments/{deployment_id}"],getDeploymentBranchPolicy:["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"],getDeploymentStatus:["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}"],getEnvironment:["GET /repos/{owner}/{repo}/environments/{environment_name}"],getLatestPagesBuild:["GET /repos/{owner}/{repo}/pages/builds/latest"],getLatestRelease:["GET /repos/{owner}/{repo}/releases/latest"],getOrgRuleSuite:["GET /orgs/{org}/rulesets/rule-suites/{rule_suite_id}"],getOrgRuleSuites:["GET /orgs/{org}/rulesets/rule-suites"],getOrgRuleset:["GET /orgs/{org}/rulesets/{ruleset_id}"],getOrgRulesets:["GET /orgs/{org}/rulesets"],getPages:["GET /repos/{owner}/{repo}/pages"],getPagesBuild:["GET /repos/{owner}/{repo}/pages/builds/{build_id}"],getPagesDeployment:["GET /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}"],getPagesHealthCheck:["GET /repos/{owner}/{repo}/pages/health"],getParticipationStats:["GET /repos/{owner}/{repo}/stats/participation"],getPullRequestReviewProtection:["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"],getPunchCardStats:["GET /repos/{owner}/{repo}/stats/punch_card"],getReadme:["GET /repos/{owner}/{repo}/readme"],getReadmeInDirectory:["GET /repos/{owner}/{repo}/readme/{dir}"],getRelease:["GET /repos/{owner}/{repo}/releases/{release_id}"],getReleaseAsset:["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"],getReleaseByTag:["GET /repos/{owner}/{repo}/releases/tags/{tag}"],getRepoRuleSuite:["GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}"],getRepoRuleSuites:["GET /repos/{owner}/{repo}/rulesets/rule-suites"],getRepoRuleset:["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}"],getRepoRulesetHistory:["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history"],getRepoRulesetVersion:["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history/{version_id}"],getRepoRulesets:["GET /repos/{owner}/{repo}/rulesets"],getStatusChecksProtection:["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"],getTeamsWithAccessToProtectedBranch:["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"],getTopPaths:["GET /repos/{owner}/{repo}/traffic/popular/paths"],getTopReferrers:["GET /repos/{owner}/{repo}/traffic/popular/referrers"],getUsersWithAccessToProtectedBranch:["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"],getViews:["GET /repos/{owner}/{repo}/traffic/views"],getWebhook:["GET /repos/{owner}/{repo}/hooks/{hook_id}"],getWebhookConfigForRepo:["GET /repos/{owner}/{repo}/hooks/{hook_id}/config"],getWebhookDelivery:["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}"],listActivities:["GET /repos/{owner}/{repo}/activity"],listAttestations:["GET /repos/{owner}/{repo}/attestations/{subject_digest}"],listAutolinks:["GET /repos/{owner}/{repo}/autolinks"],listBranches:["GET /repos/{owner}/{repo}/branches"],listBranchesForHeadCommit:["GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head"],listCollaborators:["GET /repos/{owner}/{repo}/collaborators"],listCommentsForCommit:["GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"],listCommitCommentsForRepo:["GET /repos/{owner}/{repo}/comments"],listCommitStatusesForRef:["GET /repos/{owner}/{repo}/commits/{ref}/statuses"],listCommits:["GET /repos/{owner}/{repo}/commits"],listContributors:["GET /repos/{owner}/{repo}/contributors"],listCustomDeploymentRuleIntegrations:["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps"],listDeployKeys:["GET /repos/{owner}/{repo}/keys"],listDeploymentBranchPolicies:["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"],listDeploymentStatuses:["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"],listDeployments:["GET /repos/{owner}/{repo}/deployments"],listForAuthenticatedUser:["GET /user/repos"],listForOrg:["GET /orgs/{org}/repos"],listForUser:["GET /users/{username}/repos"],listForks:["GET /repos/{owner}/{repo}/forks"],listInvitations:["GET /repos/{owner}/{repo}/invitations"],listInvitationsForAuthenticatedUser:["GET /user/repository_invitations"],listLanguages:["GET /repos/{owner}/{repo}/languages"],listPagesBuilds:["GET /repos/{owner}/{repo}/pages/builds"],listPublic:["GET /repositories"],listPullRequestsAssociatedWithCommit:["GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls"],listReleaseAssets:["GET /repos/{owner}/{repo}/releases/{release_id}/assets"],listReleases:["GET /repos/{owner}/{repo}/releases"],listTags:["GET /repos/{owner}/{repo}/tags"],listTeams:["GET /repos/{owner}/{repo}/teams"],listWebhookDeliveries:["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries"],listWebhooks:["GET /repos/{owner}/{repo}/hooks"],merge:["POST /repos/{owner}/{repo}/merges"],mergeUpstream:["POST /repos/{owner}/{repo}/merge-upstream"],pingWebhook:["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"],redeliverWebhookDelivery:["POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"],removeAppAccessRestrictions:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",{},{mapToData:"apps"}],removeCollaborator:["DELETE /repos/{owner}/{repo}/collaborators/{username}"],removeStatusCheckContexts:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",{},{mapToData:"contexts"}],removeStatusCheckProtection:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"],removeTeamAccessRestrictions:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",{},{mapToData:"teams"}],removeUserAccessRestrictions:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",{},{mapToData:"users"}],renameBranch:["POST /repos/{owner}/{repo}/branches/{branch}/rename"],replaceAllTopics:["PUT /repos/{owner}/{repo}/topics"],requestPagesBuild:["POST /repos/{owner}/{repo}/pages/builds"],setAdminBranchProtection:["POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],setAppAccessRestrictions:["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",{},{mapToData:"apps"}],setStatusCheckContexts:["PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",{},{mapToData:"contexts"}],setTeamAccessRestrictions:["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",{},{mapToData:"teams"}],setUserAccessRestrictions:["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",{},{mapToData:"users"}],testPushWebhook:["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"],transfer:["POST /repos/{owner}/{repo}/transfer"],update:["PATCH /repos/{owner}/{repo}"],updateBranchProtection:["PUT /repos/{owner}/{repo}/branches/{branch}/protection"],updateCommitComment:["PATCH /repos/{owner}/{repo}/comments/{comment_id}"],updateDeploymentBranchPolicy:["PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"],updateInformationAboutPagesSite:["PUT /repos/{owner}/{repo}/pages"],updateInvitation:["PATCH /repos/{owner}/{repo}/invitations/{invitation_id}"],updateOrgRuleset:["PUT /orgs/{org}/rulesets/{ruleset_id}"],updatePullRequestReviewProtection:["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"],updateRelease:["PATCH /repos/{owner}/{repo}/releases/{release_id}"],updateReleaseAsset:["PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}"],updateRepoRuleset:["PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}"],updateStatusCheckPotection:["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks",{},{renamed:["repos","updateStatusCheckProtection"]}],updateStatusCheckProtection:["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"],updateWebhook:["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"],updateWebhookConfigForRepo:["PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config"],uploadReleaseAsset:["POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}",{baseUrl:"https://uploads.github.com"}]},search:{code:["GET /search/code"],commits:["GET /search/commits"],issuesAndPullRequests:["GET /search/issues"],labels:["GET /search/labels"],repos:["GET /search/repositories"],topics:["GET /search/topics"],users:["GET /search/users"]},secretScanning:{createPushProtectionBypass:["POST /repos/{owner}/{repo}/secret-scanning/push-protection-bypasses"],getAlert:["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"],getScanHistory:["GET /repos/{owner}/{repo}/secret-scanning/scan-history"],listAlertsForOrg:["GET /orgs/{org}/secret-scanning/alerts"],listAlertsForRepo:["GET /repos/{owner}/{repo}/secret-scanning/alerts"],listLocationsForAlert:["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations"],listOrgPatternConfigs:["GET /orgs/{org}/secret-scanning/pattern-configurations"],updateAlert:["PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"],updateOrgPatternConfigs:["PATCH /orgs/{org}/secret-scanning/pattern-configurations"]},securityAdvisories:{createFork:["POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/forks"],createPrivateVulnerabilityReport:["POST /repos/{owner}/{repo}/security-advisories/reports"],createRepositoryAdvisory:["POST /repos/{owner}/{repo}/security-advisories"],createRepositoryAdvisoryCveRequest:["POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve"],getGlobalAdvisory:["GET /advisories/{ghsa_id}"],getRepositoryAdvisory:["GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}"],listGlobalAdvisories:["GET /advisories"],listOrgRepositoryAdvisories:["GET /orgs/{org}/security-advisories"],listRepositoryAdvisories:["GET /repos/{owner}/{repo}/security-advisories"],updateRepositoryAdvisory:["PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}"]},teams:{addOrUpdateMembershipForUserInOrg:["PUT /orgs/{org}/teams/{team_slug}/memberships/{username}"],addOrUpdateRepoPermissionsInOrg:["PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"],checkPermissionsForRepoInOrg:["GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"],create:["POST /orgs/{org}/teams"],createDiscussionCommentInOrg:["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"],createDiscussionInOrg:["POST /orgs/{org}/teams/{team_slug}/discussions"],deleteDiscussionCommentInOrg:["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"],deleteDiscussionInOrg:["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"],deleteInOrg:["DELETE /orgs/{org}/teams/{team_slug}"],getByName:["GET /orgs/{org}/teams/{team_slug}"],getDiscussionCommentInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"],getDiscussionInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"],getMembershipForUserInOrg:["GET /orgs/{org}/teams/{team_slug}/memberships/{username}"],list:["GET /orgs/{org}/teams"],listChildInOrg:["GET /orgs/{org}/teams/{team_slug}/teams"],listDiscussionCommentsInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"],listDiscussionsInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions"],listForAuthenticatedUser:["GET /user/teams"],listMembersInOrg:["GET /orgs/{org}/teams/{team_slug}/members"],listPendingInvitationsInOrg:["GET /orgs/{org}/teams/{team_slug}/invitations"],listReposInOrg:["GET /orgs/{org}/teams/{team_slug}/repos"],removeMembershipForUserInOrg:["DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}"],removeRepoInOrg:["DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"],updateDiscussionCommentInOrg:["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"],updateDiscussionInOrg:["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"],updateInOrg:["PATCH /orgs/{org}/teams/{team_slug}"]},users:{addEmailForAuthenticated:["POST /user/emails",{},{renamed:["users","addEmailForAuthenticatedUser"]}],addEmailForAuthenticatedUser:["POST /user/emails"],addSocialAccountForAuthenticatedUser:["POST /user/social_accounts"],block:["PUT /user/blocks/{username}"],checkBlocked:["GET /user/blocks/{username}"],checkFollowingForUser:["GET /users/{username}/following/{target_user}"],checkPersonIsFollowedByAuthenticated:["GET /user/following/{username}"],createGpgKeyForAuthenticated:["POST /user/gpg_keys",{},{renamed:["users","createGpgKeyForAuthenticatedUser"]}],createGpgKeyForAuthenticatedUser:["POST /user/gpg_keys"],createPublicSshKeyForAuthenticated:["POST /user/keys",{},{renamed:["users","createPublicSshKeyForAuthenticatedUser"]}],createPublicSshKeyForAuthenticatedUser:["POST /user/keys"],createSshSigningKeyForAuthenticatedUser:["POST /user/ssh_signing_keys"],deleteAttestationsBulk:["POST /users/{username}/attestations/delete-request"],deleteAttestationsById:["DELETE /users/{username}/attestations/{attestation_id}"],deleteAttestationsBySubjectDigest:["DELETE /users/{username}/attestations/digest/{subject_digest}"],deleteEmailForAuthenticated:["DELETE /user/emails",{},{renamed:["users","deleteEmailForAuthenticatedUser"]}],deleteEmailForAuthenticatedUser:["DELETE /user/emails"],deleteGpgKeyForAuthenticated:["DELETE /user/gpg_keys/{gpg_key_id}",{},{renamed:["users","deleteGpgKeyForAuthenticatedUser"]}],deleteGpgKeyForAuthenticatedUser:["DELETE /user/gpg_keys/{gpg_key_id}"],deletePublicSshKeyForAuthenticated:["DELETE /user/keys/{key_id}",{},{renamed:["users","deletePublicSshKeyForAuthenticatedUser"]}],deletePublicSshKeyForAuthenticatedUser:["DELETE /user/keys/{key_id}"],deleteSocialAccountForAuthenticatedUser:["DELETE /user/social_accounts"],deleteSshSigningKeyForAuthenticatedUser:["DELETE /user/ssh_signing_keys/{ssh_signing_key_id}"],follow:["PUT /user/following/{username}"],getAuthenticated:["GET /user"],getById:["GET /user/{account_id}"],getByUsername:["GET /users/{username}"],getContextForUser:["GET /users/{username}/hovercard"],getGpgKeyForAuthenticated:["GET /user/gpg_keys/{gpg_key_id}",{},{renamed:["users","getGpgKeyForAuthenticatedUser"]}],getGpgKeyForAuthenticatedUser:["GET /user/gpg_keys/{gpg_key_id}"],getPublicSshKeyForAuthenticated:["GET /user/keys/{key_id}",{},{renamed:["users","getPublicSshKeyForAuthenticatedUser"]}],getPublicSshKeyForAuthenticatedUser:["GET /user/keys/{key_id}"],getSshSigningKeyForAuthenticatedUser:["GET /user/ssh_signing_keys/{ssh_signing_key_id}"],list:["GET /users"],listAttestations:["GET /users/{username}/attestations/{subject_digest}"],listAttestationsBulk:["POST /users/{username}/attestations/bulk-list{?per_page,before,after}"],listBlockedByAuthenticated:["GET /user/blocks",{},{renamed:["users","listBlockedByAuthenticatedUser"]}],listBlockedByAuthenticatedUser:["GET /user/blocks"],listEmailsForAuthenticated:["GET /user/emails",{},{renamed:["users","listEmailsForAuthenticatedUser"]}],listEmailsForAuthenticatedUser:["GET /user/emails"],listFollowedByAuthenticated:["GET /user/following",{},{renamed:["users","listFollowedByAuthenticatedUser"]}],listFollowedByAuthenticatedUser:["GET /user/following"],listFollowersForAuthenticatedUser:["GET /user/followers"],listFollowersForUser:["GET /users/{username}/followers"],listFollowingForUser:["GET /users/{username}/following"],listGpgKeysForAuthenticated:["GET /user/gpg_keys",{},{renamed:["users","listGpgKeysForAuthenticatedUser"]}],listGpgKeysForAuthenticatedUser:["GET /user/gpg_keys"],listGpgKeysForUser:["GET /users/{username}/gpg_keys"],listPublicEmailsForAuthenticated:["GET /user/public_emails",{},{renamed:["users","listPublicEmailsForAuthenticatedUser"]}],listPublicEmailsForAuthenticatedUser:["GET /user/public_emails"],listPublicKeysForUser:["GET /users/{username}/keys"],listPublicSshKeysForAuthenticated:["GET /user/keys",{},{renamed:["users","listPublicSshKeysForAuthenticatedUser"]}],listPublicSshKeysForAuthenticatedUser:["GET /user/keys"],listSocialAccountsForAuthenticatedUser:["GET /user/social_accounts"],listSocialAccountsForUser:["GET /users/{username}/social_accounts"],listSshSigningKeysForAuthenticatedUser:["GET /user/ssh_signing_keys"],listSshSigningKeysForUser:["GET /users/{username}/ssh_signing_keys"],setPrimaryEmailVisibilityForAuthenticated:["PATCH /user/email/visibility",{},{renamed:["users","setPrimaryEmailVisibilityForAuthenticatedUser"]}],setPrimaryEmailVisibilityForAuthenticatedUser:["PATCH /user/email/visibility"],unblock:["DELETE /user/blocks/{username}"],unfollow:["DELETE /user/following/{username}"],updateAuthenticated:["PATCH /user"]}},cb=hA;var Bn=new Map;for(let[e,t]of Object.entries(cb))for(let[r,n]of Object.entries(t)){let[o,s,i]=n,[a,l]=o.split(/ /),d=Object.assign({method:a,url:l},s);Bn.has(e)||Bn.set(e,new Map),Bn.get(e).set(r,{scope:e,methodName:r,endpointDefaults:d,decorations:i})}var mA={has({scope:e},t){return Bn.get(e).has(t)},getOwnPropertyDescriptor(e,t){return{value:this.get(e,t),configurable:!0,writable:!0,enumerable:!0}},defineProperty(e,t,r){return Object.defineProperty(e.cache,t,r),!0},deleteProperty(e,t){return delete e.cache[t],!0},ownKeys({scope:e}){return[...Bn.get(e).keys()]},set(e,t,r){return e.cache[t]=r},get({octokit:e,scope:t,cache:r},n){if(r[n])return r[n];let o=Bn.get(t).get(n);if(!o)return;let{endpointDefaults:s,decorations:i}=o;return i?r[n]=bA(e,t,n,s,i):r[n]=e.request.defaults(s),r[n]}};function Ec(e){let t={};for(let r of Bn.keys())t[r]=new Proxy({octokit:e,scope:r,cache:{}},mA);return t}function bA(e,t,r,n,o){let s=e.request.defaults(n);function i(...a){let l=s.endpoint.merge(...a);if(o.mapToData)return l=Object.assign({},l,{data:l[o.mapToData],[o.mapToData]:void 0}),s(l);if(o.renamed){let[d,c]=o.renamed;e.log.warn(`octokit.${t}.${r}() has been renamed to octokit.${d}.${c}()`)}if(o.deprecated&&e.log.warn(o.deprecated),o.renamedParameters){let d=s.endpoint.merge(...a);for(let[c,u]of Object.entries(o.renamedParameters))c in d&&(e.log.warn(`"${c}" parameter is deprecated for "octokit.${t}.${r}()". Use "${u}" instead`),u in d||(d[u]=d[c]),delete d[c]);return s(d)}return s(...a)}return Object.assign(i,s)}function yA(e){return{rest:Ec(e)}}yA.VERSION=xc;function vc(e){let t=Ec(e);return{...t,rest:t}}vc.VERSION=xc;var ub="22.0.1";var pb=ha.plugin(wc,vc,_c).defaults({userAgent:`octokit-rest.js/${ub}`});function kA(e){return`r${e}`}function fb(e){if(e.length===0)throw new Error("an aliased single-object query needs at least one read");let t=e[0].kind;if(e.some(s=>s.kind!==t))throw new Error("an aliased single-object query may contain only one object kind");let r={},n=t==="pr"?"pullRequest":"issue";return{query:["query CoalescedSingleObjectReads {",...e.map((s,i)=>{if(!Number.isSafeInteger(s.number)||s.number<=0)throw new Error(`an aliased single-object read needs a positive number, got ${s.number}`);let a=s.selection.trim();if(a==="")throw new Error("an aliased single-object read needs a field selection");let l=kA(i);return r[l]=s,[` ${l}: repository(owner: ${JSON.stringify(s.owner)}, name: ${JSON.stringify(s.repo)}) {`,` object: ${n}(number: ${s.number}) { ${a} }`," }"].join(`
85
84
  `)})," rateLimit { cost }","}"].join(`
86
- `),aliases:t}}function Up(e,r){let t=r!==null&&typeof r=="object"?r:{},n=t.data??t,o=n!==null&&typeof n=="object"?n:{};return Object.entries(e.aliases).map(([s,i])=>{let a=o[s];if(a===null||typeof a!="object")return{read:i,value:null};let l=a.object;return{read:i,value:l!==null&&typeof l=="object"&&!Array.isArray(l)?l:null}})}var Cw=Fp.plugin(Ji,Io);function Bp(){let e=new Map;return{get:r=>e.get(r),set:(r,t)=>e.set(r,t)}}function Hp(e){if(e?.outcome!=="asked")return Number.POSITIVE_INFINITY;let r=e.pools.rest,t=e.pools.graphql;return r===null||t===null||t.remaining<=0||t.fraction<=0?Number.POSITIVE_INFINITY:r.remaining<=0||r.fraction<=0?1:!Number.isFinite(r.fraction)||!Number.isFinite(t.fraction)?Number.POSITIVE_INFINITY:Math.max(1,Math.ceil(r.fraction/t.fraction))}var mt=class extends Error{status=401;constructor(r){super("GitHub rejected the host credential; refresh the stored login with `gh auth login` or provide a current host token",r),this.name="GithubCredentialError"}};function fa(e){let r=e.etags??Bp(),t=new Cw({auth:e.token,log:{debug:()=>{},info:()=>{},warn:()=>{},error:()=>{}},...e.baseUrl?{baseUrl:e.baseUrl}:{},...e.fetchImpl?{request:{fetch:e.fetchImpl}}:{},retry:{doNotRetry:[304,403,429],...e.retryCount===void 0?{}:{retries:e.retryCount}},throttle:e.throttle===!1?{enabled:!1}:{onRateLimit:()=>!1,onSecondaryRateLimit:()=>!1}}),n=async c=>{let u=r.get(c.cacheKey),m={...c.parameters??{}},f=fr(m.headers)?m.headers:{};m.headers={...f,...u?{"if-none-match":u.etag}:{}};try{let h=await t.request(c.route,m),v=h.headers,k=Wo(v,"etag");return k!==void 0&&r.set(c.cacheKey,{etag:k,data:h.data,headers:v}),await e.attribution?.record({operation:c.operation,cost:1,actor:c.actor}),{data:h.data,headers:v,quotaFree:!1}}catch(h){if(pn(h)===304){if(u===void 0)throw new Error(`GitHub returned 304 for ${JSON.stringify(c.cacheKey)} without a held answer to reuse`,{cause:h});let v=qp(h),k={...u.headers,...v},T=Wo(k,"etag")??u.etag;return r.set(c.cacheKey,{etag:T,data:u.data,headers:k}),await e.attribution?.record({operation:c.operation,cost:0,actor:c.actor}),{data:u.data,headers:k,quotaFree:!0}}throw pn(h)===401?new mt({cause:h}):h}},o=new Map,s=!1,i=async c=>{let u=c.input,m=u.kind==="pr";try{let f=await n({cacheKey:u.cacheKey,route:m?"GET /repos/{owner}/{repo}/pulls/{pull_number}":"GET /repos/{owner}/{repo}/issues/{issue_number}",parameters:{owner:u.owner,repo:u.repo,...m?{pull_number:u.number}:{issue_number:u.number}},operation:u.operation,actor:u.actor});c.resolve({data:u.project?u.project(f.data,"rest"):f.data,surface:"rest",quotaFree:f.quotaFree})}catch(f){c.reject(f)}},a=async c=>{try{let u=Wp(c.map(({input:k})=>k)),m=await t.graphql(u.query),f=Up(u,m),h=Mw(m),v=c[0].input;await e.attribution?.record({operation:{key:v.operation.key,budget:"graphql"},cost:h,actor:Fw(c.map(({input:k})=>k.actor))}),f.forEach((k,T)=>{let I=c[T];k.value===null?I.reject(new Error(`GitHub returned no ${k.read.kind} #${k.read.number} from the coalesced query`)):I.resolve({data:I.input.project?I.input.project(k.value,"graphql"):k.value,surface:"graphql",quotaFree:!1})})}catch(u){let m=pn(u)===401?new mt({cause:u}):u;c.forEach(f=>f.reject(m))}},l=async()=>{let c=null;try{c=await e.balance?.()??null}catch{}let u=Hp(c);s=!1;let m=[...o.values()];o.clear(),await Promise.all(m.map(async f=>{f.length>u?await a(f):await Promise.all(f.map(i))}))};return{conditionalRest:n,singleObject:c=>r.get(c.cacheKey)!==void 0?new Promise((u,m)=>{i({input:c,resolve:u,reject:m})}):new Promise((u,m)=>{let f=o.get(c.kind)??[];f.push({input:c,resolve:u,reject:m}),o.set(c.kind,f),s||(s=!0,setTimeout(()=>void l(),0))}),async conditionalPaginate(c){let u=[],m={},f=0,h=!0,v=1;for(;;){let k=await n({...c,cacheKey:`${c.cacheKey}:page:${v}`,parameters:{...c.parameters??{},per_page:100,page:v}});if(f+=1,h=h&&k.quotaFree,!Array.isArray(k.data))throw new Error(`GitHub returned a non-list body for ${JSON.stringify(c.cacheKey)} page ${v}`);if(u.push(...k.data),m=k.headers,!Nw(k.headers))break;v+=1}return{data:u,headers:m,requestCount:f,quotaFree:h}},async graphql(c,u={},m){try{let f=await t.graphql(c,u);return m&&await e.attribution?.record({operation:m.operation,cost:1,actor:m.actor}),f}catch(f){throw pn(f)===401?new mt({cause:f}):f}}}}function Nw(e){let r=Wo(e,"link");return r!==void 0&&/(?:^|,)\s*<[^>]+>;\s*rel="next"(?:\s*;|\s*(?:,|$))/i.test(r)}function mn(e){let r=pn(e),t=qp(e);return r===429||r===403&&Wo(t,"x-ratelimit-remaining")==="0"||e instanceof Error&&/secondary rate|rate limit/i.test(e.message)}function pn(e){if(fr(e))return typeof e.status=="number"?e.status:void 0}function qp(e){return!fr(e)||!fr(e.response)||!fr(e.response.headers)?{}:e.response.headers}function Wo(e,r){let t=e[r]??e[r.toLowerCase()];return typeof t=="string"?t:typeof t=="number"?String(t):void 0}function fr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Mw(e){let r=fr(e)?e:{},t=fr(r.data)?r.data:r,o=(fr(t.rateLimit)?t.rateLimit:{}).cost;if(!Number.isSafeInteger(o)||o<0)throw new Error("GitHub aliased query did not return a non-negative integer rateLimit.cost");return o}function Fw(e){let r=[...new Set(e.filter(t=>t!==void 0))].sort();if(r.length!==0)return r.length===1?r[0]:`coalesced:${r.join("+")}`}var Kp="rate_limit",Jp={rest:"core",graphql:"graphql",search:"search"},or=["rest","graphql","search"];function qo(e,r){return{version:1,origin:"asked",outcome:"unanswered",source:"GET /rate_limit",asked_at:e,request_count:0,pools:{rest:null,graphql:null,search:null},unreported_pools:[...or],detail:r??"no balance has been asked for yet, so none is known"}}var ya=15e3,gt=.15,Bo=[{at_or_below_fraction:0,every_ms:ya,why:"spent: the only event that still matters is the reset, so watch for it"},{at_or_below_fraction:gt,every_ms:3e4,why:"inside the reserved band: the posture can change between two calls"},{at_or_below_fraction:.5,every_ms:12e4,why:"below half: tightening, because the band is now reachable inside one window"},{at_or_below_fraction:1,every_ms:6e5,why:"above half: rare, because nothing this balance decides is anywhere close"}];var Gj=60*6e4,ha=2;function zp(e,r){let t=Vp(e),n=Vp(t.resources),o={rest:null,graphql:null,search:null},s=[];for(let a of or){let l=Jp[a],d=n[l],c=Bw(a,l,d);o[a]=c,c==null&&s.push(a)}let i=or.length-s.length;return{version:1,origin:"asked",outcome:i>0?"asked":"unanswered",source:"GET /rate_limit",asked_at:r.askedAt,request_count:1,pools:o,unreported_pools:s,detail:i>0?`the token's own answer for ${i} of ${or.length} pools`:"the answer carried no pool this repo budgets, so nothing about the token is known"}}async function ka(e){try{let r=await e.transport();return zp(r,{askedAt:e.now})}catch(r){let t=r instanceof Error?r.message:String(r);return{...qo(e.now,`the balance ask failed before the token answered: ${t}`),request_count:1}}}function ba(e){let r=null;for(let t of or){let n=e.pools[t];n!=null&&(r==null||n.fraction<r.fraction)&&(r=n)}return r}function Vo(e,r){let t=ba(e);if(t==null)return Ho(gt).every_ms;let n=Ho(t.fraction);if(t.remaining>0)return n.every_ms;let o=Yp(r.now,t.reset_at);return o==null?n.every_ms:Math.max(ya,Math.min(n.every_ms,o))}function _a(e,r=gt){return Math.ceil(e.limit*r)}function Qp(e,r,t=gt){let n=e.pools[r];return n==null?"unknown":n.remaining<=0?"spent":n.remaining<_a(n,t)?"reserved":"open"}function Ra(e){let r=e.reservedFraction??gt,t=e.balance;if(t==null)return{version:1,origin:"asked",outcome:"unanswered",asked_at:null,age_ms:null,threshold_ms:Ho(r).every_ms*ha,stale:!1,posture:"unknown",reserved_fraction:r,next_poll_ms:Ho(r).every_ms,pools:[],unreported_pools:[...or],reason:"this daemon has asked for no balance, so the token's budget is unknown rather than full"};let n=Vo(t,{now:e.now}),o=e.stalenessMs??n*ha,s=Yp(t.asked_at,e.now),i=t.outcome==="asked"&&(s==null||s>o),a=or.map(c=>t.pools[c]).filter(c=>c!=null),l=Uw(t,r),d=ba(t);return{version:1,origin:"asked",outcome:t.outcome,asked_at:t.asked_at,age_ms:s,threshold_ms:o,stale:i,posture:l,reserved_fraction:r,next_poll_ms:n,pools:a,unreported_pools:t.unreported_pools,reason:i?`this balance is stale: asked ${s==null?"at an unreadable instant":`${s}ms ago`}, past the ${o}ms window, so the posture below is the last one the token confirmed and not the current one`:Ww(l,d,t,r)}}function wa(e){if(!va(e))return!1;let r=e;return r.version===1&&r.origin==="asked"&&(r.outcome==="asked"||r.outcome==="unanswered")&&(r.asked_at===null||typeof r.asked_at=="string")&&(r.age_ms===null||typeof r.age_ms=="number")&&typeof r.threshold_ms=="number"&&typeof r.stale=="boolean"&&typeof r.posture=="string"&&typeof r.reserved_fraction=="number"&&typeof r.next_poll_ms=="number"&&Array.isArray(r.pools)&&Array.isArray(r.unreported_pools)&&typeof r.reason=="string"}function Ww(e,r,t,n){if(r==null)return t.detail;let o=_a(r,n);switch(e){case"spent":return`the ${r.pool} pool is spent and resets at ${r.reset_at}: work is not queued, it is refused`;case"reserved":return`the ${r.pool} pool has ${r.remaining} of ${r.limit} left, inside the reserved band of ${o}: convenience reads are refused and the claim, a landing and a closing comment still pass`;default:return`the ${r.pool} pool is the tightest at ${r.remaining} of ${r.limit}, above the reserved band of ${o}`}}function Uw(e,r){let t="unknown";for(let n of or){if(e.pools[n]==null)continue;let o=Qp(e,n,r);if(o==="spent")return"spent";(o==="reserved"||t==="unknown")&&(t=o)}return t}function Ho(e){for(let r of Bo)if(e<=r.at_or_below_fraction)return r;return Bo[Bo.length-1]}function Bw(e,r,t){if(!va(t))return null;let n=Uo(t.limit),o=Uo(t.remaining),s=Uo(t.used),i=Uo(t.reset);return n==null||n<=0||o==null?null:{pool:e,resource:r,limit:n,remaining:o,used:s??0,reset_at:i==null?"":new Date(i*1e3).toISOString(),fraction:o/n}}function Ea(e){let r=e.origin??"https://api.github.com",t=e.fetchImpl??fetch;return async()=>{let n=await t(`${r}/${Kp}`,{method:"GET",headers:{authorization:`bearer ${e.token}`,accept:"application/vnd.github+json"}});if(!n.ok)throw new Error(`the balance ask was refused with HTTP ${n.status}`);return await n.json()}}function Yp(e,r){let t=Date.parse(e),n=Date.parse(r);return!Number.isFinite(t)||!Number.isFinite(n)?null:Math.max(0,n-t)}function Uo(e){return typeof e=="number"&&Number.isFinite(e)?Math.trunc(e):null}function Vp(e){return va(e)?e:{}}function va(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function nm(e){return{generated_at:e.now,hour:Xp("hour",36e5,e),day:Xp("day",864e5,e)}}function fn(e,r,t){let n=gn(t.now),o=t.retentionMs??864e5,s=t.limit??8192,i=e.filter(a=>{let l=gn(r(a));return l==null?!1:n==null||n-l<=o});return i.length<=s?i:i.slice(i.length-s)}function Xp(e,r,t){let n=gn(t.now),o=n==null?null:n-r,s=e==="hour"?"1h":"24h",i=t.observations.map(u=>({observation:u,at:gn(u.observed_at)})).filter(u=>u.at!=null&&rm(u.at,o,n)).sort((u,m)=>u.at-m.at),a=t.outcomes.map(u=>gn(u.ts)).filter(u=>u!=null&&rm(u,o,n)),l=Zp(i,u=>u.tokens,"tokens",s),d=Zp(i,u=>u.tools,"tools",s),c=[];return i.length===0?c.push("worker-vitals"):(l.samples===0&&c.push("worker-vitals.tokens"),d.samples===0&&c.push("worker-vitals.tools")),a.length===0&&c.push("worker-outcomes"),{window:e,window_ms:r,from:o==null?t.now:new Date(o).toISOString(),to:t.now,tokens_per_min:l,tools_per_min:d,issues_per_hour:Hw(a.length,r,s),runner_share:em("runner",i,u=>u.runner,s),model_share:em("model",i,u=>u.model,s),unavailable:c}}function Zp(e,r,t,n){let o=new Map,s=0;for(let d of e){let c=r(d.observation);if(c==null||!Number.isFinite(c))continue;s+=1;let u=o.get(d.observation.worker_id)??[];u.push({at:d.at,count:c}),o.set(d.observation.worker_id,u)}if(s===0)return{value:null,absent_reason:`no Worker published a ${t} count in the last ${n}`,samples:0};let i=0,a=null,l=null;for(let d of o.values()){if(d.length<2)continue;for(let m=1;m<d.length;m++){let f=d[m-1],h=d[m];f==null||h==null||(i+=Math.max(0,h.count-f.count))}let c=d[0],u=d[d.length-1];c!=null&&(a=a==null?c.at:Math.min(a,c.at)),u!=null&&(l=l==null?u.at:Math.max(l,u.at))}return a==null||l==null||l<=a?{value:null,absent_reason:`the last ${n} holds one sample of ${t} per Worker, and one instant spans no rate`,samples:s}:{value:i/((l-a)/6e4),absent_reason:null,samples:s}}function Hw(e,r,t){return e===0?{value:null,absent_reason:`no Worker outcome was recorded in the last ${t}`,samples:0}:{value:e/(r/36e5),absent_reason:null,samples:e}}function em(e,r,t,n){let o=new Map;for(let d of r){let c=t(d.observation);c!=null?o.set(d.observation.worker_id,c):o.has(d.observation.worker_id)||o.set(d.observation.worker_id,null)}let s=new Map,i=0,a=0;for(let d of o.values()){if(d==null){a+=1;continue}i+=1,s.set(d,(s.get(d)??0)+1)}let l=[...s.entries()].map(([d,c])=>({key:d,worker_count:c,share:c/i})).sort((d,c)=>c.worker_count-d.worker_count||d.key.localeCompare(c.key));return{dimension:e,attributed_workers:i,unattributed_workers:a,shares:l,absent_reason:l.length>0?null:o.size===0?`no Worker was observed in the last ${n}`:`no Worker published a ${e} in the last ${n}`}}function rm(e,r,t){return r==null||t==null?!0:e>=r&&e<=t}function gn(e){let r=Date.parse(e);return Number.isFinite(r)?r:null}function om(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let r=e;return typeof r.generated_at=="string"&&tm(r.hour)&&tm(r.day)}function tm(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let r=e;return typeof r.window=="string"&&typeof r.window_ms=="number"&&Sa(r.tokens_per_min)&&Sa(r.tools_per_min)&&Sa(r.issues_per_hour)&&Array.isArray(r.unavailable)}function Sa(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let r=e;return(r.value===null||typeof r.value=="number")&&(r.absent_reason===null||typeof r.absent_reason=="string")&&Number.isInteger(r.samples)}import{execFileSync as qw}from"node:child_process";import{existsSync as Vw,readFileSync as Ko,readdirSync as Kw}from"node:fs";import{dirname as Jw,join as Nr}from"node:path";function hn(e){let r=on(e),t=[["MemoryMax",r.memory_max],["MemoryHigh",r.memory_high]];for(let[n,o]of t){if(o==null)continue;let s=ct(o);return s==null?null:{name:n,declared:o,bytes:s}}return null}function sm(e){let r=[],t=[];for(let n of e.workers){let o=hn(n);if(o==null){t.push({worker_id:n.worker_id,reason:(on(n).memory_max??on(n).memory_high)==null?"this Worker declared no memory budget and the host derived no ceiling for it, so the sampler has none to enforce":"this Worker's declared memory budget cannot be reduced to bytes, so the sampler has no ceiling to enforce"});continue}let s=e.rss[n.worker_id];if(typeof s!="number"||!Number.isFinite(s)){t.push({worker_id:n.worker_id,reason:"the host produced no RSS reading for this Worker on this tick, and an unmeasured Worker is never killed on suspicion"});continue}if(!(s<=o.bytes)){if(e.sources?.[n.worker_id]==="cgroup"&&o.name==="MemoryMax"){t.push({worker_id:n.worker_id,reason:`this Worker's ${o.name} of ${o.declared} is held by the kernel on its own cgroup, and the reading is memory.current \u2014 which counts reclaimable page cache the kernel drops before it kills anything, so the daemon does not duplicate an enforcement that can tell cache from anonymous memory`});continue}r.push(zw(n,o,s))}}return{terminations:r,unenforceable:t}}function zw(e,r,t){let n=`Worker ${JSON.stringify(e.worker_id)} of project ${JSON.stringify(e.project_label)}`;return{version:1,worker_id:e.worker_id,project_label:e.project_label,outcome:"terminated-over-memory-budget",classification:"budget-exceeded",stall:!1,budget_name:r.name,budget_declared:r.declared,budget_bytes:r.bytes,observed_rss_bytes:t,workspace_path:e.workspace_path,reason:`redskilled terminated ${n}: its tree RSS of ${t} bytes exceeded its ${r.name} budget of ${r.declared} (${r.bytes} bytes). This is a budget termination, not a stall, and the work in ${JSON.stringify(e.workspace_path)} is handed forward.`}}var Qw=4096;function im(e,r={}){let t=r.platform??process.platform,n={rss:{},cpu_seconds:{},sources:{}};if(e.length===0)return n;let o={},s={},i={},a=Xw(e,t,r);for(let[u,m]of a){let f=rE(m);f!=null&&(o[u]=f.memoryBytes,f.cpuSeconds!=null&&(s[u]=f.cpuSeconds),i[u]="cgroup")}let l=e.filter(u=>i[u.worker_id]==null);if(l.length===0)return{rss:o,cpu_seconds:s,sources:i};let d=oE(t,r);if(d.size===0)return{rss:o,cpu_seconds:s,sources:i};let c=new Map;for(let u of d.values()){let m=c.get(u.ppid);m?m.push(u.pid):c.set(u.ppid,[u.pid])}for(let u of l){if(!d.has(u.pid))continue;let m=0,f=0,h=[u.pid],v=new Set;for(;h.length>0;){let k=h.pop();if(v.has(k))continue;v.add(k);let T=d.get(k);if(T){m+=T.rssBytes,f+=T.cpuSeconds;for(let I of c.get(k)??[])h.push(I)}}o[u.worker_id]=m,s[u.worker_id]=f,i[u.worker_id]="process-tree"}return{rss:o,cpu_seconds:s,sources:i}}var Yw="/sys/fs/cgroup";function Xw(e,r,t){let n=new Map;if(!(t.cgroupRoot!=null)&&r!=="linux")return n;let s=t.cgroupRoot??Yw,i=e.filter(l=>l.unit!=null&&l.unit!=="");if(i.length===0)return n;let a=Zw(s,t);for(let l of i)for(let d of a){let c=Nr(d,l.unit);if(Vw(Nr(c,"memory.current"))){n.set(l.worker_id,c);break}}return n}function Zw(e,r){let t=r.selfCgroupPath??eE(),n=[],o=a=>{n.includes(a)||n.push(a)},s=t;for(;s!=null&&s!==""&&s!=="/"&&s!==".";){o(Nr(e,s));let a=Jw(s);if(a===s)break;s=a}o(e);let i=r.uid??process.getuid?.();return i!=null&&o(Nr(e,"user.slice",`user-${i}.slice`,`user@${i}.service`,"app.slice")),n}function eE(){try{for(let e of Ko("/proc/self/cgroup","utf8").split(`
87
- `))if(e.startsWith("0::"))return e.slice(3).trim()}catch{}return null}function rE(e){let r;try{r=Ko(Nr(e,"memory.current"),"utf8")}catch{return null}let t=Number(r.trim());return!Number.isFinite(t)||t<0?null:{memoryBytes:t,cpuSeconds:tE(e)}}function tE(e){let r;try{r=Ko(Nr(e,"cpu.stat"),"utf8")}catch{return null}return nE(r)}function nE(e){for(let r of e.split(`
88
- `)){let[t,n]=r.trim().split(/\s+/);if(t!=="usage_usec")continue;let o=Number(n);return!Number.isFinite(o)||o<0?null:o/1e6}return null}function oE(e,r){return r.procRoot!=null||e==="linux"?cE(r.procRoot??"/proc"):r.psTable!=null||e==="darwin"?lE(sE(r.psTable)):new Map}function sE(e){try{return(e??iE)()}catch{return""}}function iE(){return qw("ps",["-axo","pid=,ppid=,rss=,time="],{encoding:"utf8",maxBuffer:16*1024*1024})}var aE=1024;function lE(e){let r=new Map;for(let t of e.split(`
89
- `)){let n=t.trim().split(/\s+/);if(n.length!==4)continue;let[o,s,i]=n.slice(0,3).map(Number);if(![o,s,i].every(l=>l!=null&&Number.isSafeInteger(l)&&l>=0))continue;let a=dE(n[3]);a!=null&&r.set(o,{pid:o,ppid:s,rssBytes:i*aE,cpuSeconds:a})}return r}function dE(e){let r=e.indexOf("-"),t=r<0?0:Number(e.slice(0,r));if(!Number.isFinite(t)||t<0)return null;let n=e.slice(r+1).split(":"),o=t*86400,s=1;for(let i=n.length-1;i>=0;i--){let a=Number(n[i]);if(!Number.isFinite(a)||a<0||n[i]==="")return null;o+=a*s,s*=60}return o}function cE(e){let r=new Map,t;try{t=Kw(e)}catch{return r}for(let n of t){if(!/^\d+$/.test(n))continue;let o;try{o=Ko(Nr(e,n,"stat"),"utf8")}catch{continue}let s=pE(o);s&&r.set(s.pid,{pid:s.pid,ppid:s.ppid,rssBytes:s.rssPages*Qw,cpuSeconds:s.cpuTicks/uE})}return r}var uE=100;function pE(e){let r=e.lastIndexOf(")");if(r<0)return null;let t=Number(e.slice(0,e.indexOf(" "))),n=e.slice(r+1).trim().split(/\s+/),o=Number(n[1]),s=Number(n[11]),i=Number(n[12]),a=Number(n[21]);return!Number.isSafeInteger(t)||!Number.isSafeInteger(o)||!Number.isFinite(a)||!Number.isFinite(s)||!Number.isFinite(i)?null:{pid:t,ppid:o,rssPages:Math.max(0,a),cpuTicks:Math.max(0,s)+Math.max(0,i)}}var mE=["api","graphql"],pL=Bi(mE);var am=100,xa=6e4,gE=2*xa,fE=7*24*60*60*1e3,Ta=class extends Error{constructor(t,n,o){super(`redskilled polls every repository with one host token ${JSON.stringify(o)}, and project ${JSON.stringify(t)} declares its own credential ${JSON.stringify(n)}: a project needing its own credential invalidates the host-scoped poller (ADR 0130 Amendment 1) rather than bending it, so the poller returns to the projects instead of reaching this repository under the wrong identity`);this.projectLabel=t;this.tokenRef=n;this.hostTokenRef=o;this.name="RedskilledSplitCredentialError"}};function Pa(e,r){for(let t of e)if(t.token_ref!=null&&t.token_ref!==r)throw new Ta(t.project_label,t.token_ref,r)}function pm(e,r={now:new Date(0).toISOString()}){ym(e);let t=r.closedWindowMs??fE,n=Date.parse(r.now);if(!Number.isFinite(n))throw new Error(`redskilled activity fetch needs an instant, not ${JSON.stringify(r.now)}`);let o=new Date(n-Math.max(0,t)).toISOString(),s=e.map((l,d)=>({alias:`r${d}`,search_alias:`c${d}`,project:l}));return{query:["query RedskilledRepositoryActivity {"," rateLimit { cost remaining resetAt }",...s.flatMap(({alias:l,search_alias:d,project:c})=>{let u=JSON.stringify(c.owner),m=JSON.stringify(c.name),f=JSON.stringify(`repo:${c.owner}/${c.name} is:closed closed:>=${o}`);return[` ${l}: repository(owner: ${u}, name: ${m}) {`," nameWithOwner"," open_pull_requests: pullRequests(states: OPEN) { totalCount }"," open_issues: issues(states: OPEN) { totalCount }"," }",` ${d}: search(query: ${f}, type: ISSUE, first: 1) { issueCount }`]}),"}"].join(`
90
- `),aliases:s,closed_since:o}}function hE(e,r,t){let n=ft(r),o=ft(n.data),s=Array.isArray(n.errors)?n.errors.map(ft):[],i=wE(o.rateLimit,s),a=e.aliases.map(({alias:l,search_alias:d,project:c})=>{let u=c.owner+"/"+c.name,m=o[l],f=s.find(h=>cm(h.path,l)||cm(h.path,d));if(yn(m)){let h=um(m.open_pull_requests),v=um(m.open_issues),k=EE(o[d]);if(h!=null&&v!=null&&k!=null)return{project_label:c.project_label,repository:u,outcome:"counted",counts:{open_pull_requests:h,open_issues:v,recently_closed:k},detail:`counted ${u} for project ${JSON.stringify(c.project_label)}`}}return i.exhausted||km(f)?{project_label:c.project_label,repository:u,outcome:"rate-limited",counts:null,detail:`the host token's quota was spent before ${u} answered, so this project has no counts rather than zero counts${i.reset_at==null?"":`; the quota resets at ${i.reset_at}`}`}:{project_label:c.project_label,repository:u,outcome:"unreachable",counts:null,detail:`${u} is not reachable with the host token: ${Jo(f?.message)||"the query returned no such repository"}`}});return{version:1,fetched_at:t.fetchedAt,request_count:1,project_count:a.length,rate_limit:i,projects:a}}function yE(e){return{version:1,fetched_at:e,request_count:0,project_count:0,rate_limit:{remaining:null,reset_at:null,exhausted:!1,point_cost:null},projects:[]}}async function mm(e){if(e.projects.length===0)return yE(e.now);if(Pa(e.projects,e.hostTokenRef),e.transport.conditionalList)return await bE(e);let r=pm(e.projects,{now:e.now,closedWindowMs:e.closedWindowMs});try{let t=await e.transport(r.query);return hE(r,t,{fetchedAt:e.now})}catch(t){let n=t instanceof Error?t.message:String(t),o=/rate limit|secondary rate|429/i.test(n);return{version:1,fetched_at:e.now,request_count:1,project_count:e.projects.length,rate_limit:{remaining:null,reset_at:null,exhausted:o,point_cost:null},projects:e.projects.map(s=>({project_label:s.project_label,repository:`${s.owner}/${s.name}`,outcome:o?"rate-limited":"unreachable",counts:null,detail:`the activity fetch failed before ${s.owner}/${s.name} answered: ${n}`}))}}}var kE={key:"redskilled repository activity poll",budget:"rest"};async function bE(e){ym(e.projects);let r=Date.parse(e.now),t=Number.isFinite(r)?new Date(Math.floor(r/(60*60*1e3))*60*60*1e3).toISOString():e.now,n=pm(e.projects,{now:t,closedWindowMs:e.closedWindowMs}),o=e.transport.conditionalList,s=[],i=0,a={remaining:null,reset_at:null,exhausted:!1,point_cost:null};for(let l of e.projects){let d=`${l.owner}/${l.name}`,c=[["open-prs","GET /repos/{owner}/{repo}/pulls",{owner:l.owner,repo:l.name,state:"open"}],["open-issues","GET /repos/{owner}/{repo}/issues",{owner:l.owner,repo:l.name,state:"open"}],["recently-closed","GET /repos/{owner}/{repo}/issues",{owner:l.owner,repo:l.name,state:"closed",since:n.closed_since}]],u=[];try{for(let[m,f,h]of c){let v=await o({cacheKey:`activity:${d}:${m}:${JSON.stringify(h)}`,route:f,parameters:h,operation:kE});i+=v.requestCount;let k=m==="open-prs"?v.data:v.data.filter(T=>!yn(T.pull_request));u.push(m==="recently-closed"?k.filter(T=>Jo(T.closed_at)>=n.closed_since).length:k.length),a=lm(a,RE(v.headers))}s.push({project_label:l.project_label,repository:d,outcome:"counted",counts:{open_pull_requests:u[0],open_issues:u[1],recently_closed:u[2]},detail:`counted ${d} for project ${JSON.stringify(l.project_label)}`})}catch(m){let f=mn(m);a=lm(a,{remaining:null,reset_at:null,exhausted:f,point_cost:null}),s.push({project_label:l.project_label,repository:d,outcome:f?"rate-limited":"unreachable",counts:null,detail:`the activity fetch failed before ${d} answered: ${m instanceof Error?m.message:String(m)}`})}}return{version:1,fetched_at:e.now,request_count:i,project_count:s.length,rate_limit:a,projects:s}}function gm(e){let r=e.stalenessMs??gE,t=e.activity;if(t==null)return{version:1,fetched_at:null,age_ms:null,threshold_ms:r,stale:!1,request_count:0,rate_limit:{remaining:null,reset_at:null,exhausted:!1,point_cost:null},projects:[],reason:"the daemon polls no repository, so there are no counts to age"};let n=Date.parse(e.now),o=Date.parse(t.fetched_at),s=Number.isFinite(n)&&Number.isFinite(o)?Math.max(0,n-o):null,i=s==null||s>r;return{version:1,fetched_at:t.fetched_at,age_ms:s,threshold_ms:r,stale:t.projects.length>0&&i,request_count:t.request_count,rate_limit:t.rate_limit,projects:t.projects.map(a=>({...a,fetched_at:t.fetched_at,age_ms:s,stale:i})),reason:t.projects.length===0?"the daemon polls no repository, so there are no counts to age":s==null?"these counts carry no readable instant, so they cannot be presented as current":i?`these counts are ${s}ms old, past the ${r}ms window`:`fetched ${s}ms ago, within the ${r}ms window`}}function fm(e){if(!yn(e))return!1;let r=e;return r.version===1&&(r.fetched_at===null||typeof r.fetched_at=="string")&&(r.age_ms===null||typeof r.age_ms=="number")&&typeof r.threshold_ms=="number"&&typeof r.stale=="boolean"&&Number.isInteger(r.request_count)&&yn(r.rate_limit)&&Array.isArray(r.projects)&&typeof r.reason=="string"}function hm(e){let r=e.endpoint==null?void 0:_E(e.endpoint),t=fa({token:e.token,...r?{baseUrl:r}:{},...e.fetchImpl?{fetchImpl:e.fetchImpl}:{},...e.attribution?{attribution:e.attribution}:{},...e.retryCount===void 0?{}:{retryCount:e.retryCount},...e.throttle===void 0?{}:{throttle:e.throttle}}),n=async o=>await t.graphql(o);return n.conditionalList=async o=>await t.conditionalPaginate({cacheKey:o.cacheKey,route:o.route,parameters:o.parameters,operation:o.operation}),n}function _E(e){let r=new URL(e);return/\/api\/graphql\/?$/.test(r.pathname)?r.pathname=r.pathname.replace(/\/api\/graphql\/?$/,"/api/v3"):r.pathname=r.pathname.replace(/\/graphql\/?$/,""),r.search="",r.hash="",r.toString().replace(/\/$/,"")}function RE(e){let r=dm(e,"x-ratelimit-remaining"),t=dm(e,"x-ratelimit-reset");return{remaining:r,reset_at:t==null?null:new Date(t*1e3).toISOString(),exhausted:r===0,point_cost:null}}function lm(e,r){return{remaining:r.remaining==null?e.remaining:e.remaining==null?r.remaining:Math.min(e.remaining,r.remaining),reset_at:r.reset_at??e.reset_at,exhausted:e.exhausted||r.exhausted,point_cost:null}}function dm(e,r){let t=e[r];if(typeof t!="string"&&typeof t!="number")return null;let n=Number(t);return Number.isSafeInteger(n)&&n>=0?n:null}function ym(e){if(e.length===0)throw new Error("redskilled activity fetch needs at least one registered project");if(e.length>am)throw new Error(`redskilled activity fetch spans at most ${am} repositories in one query`);let r=new Set;for(let t of e){if(t.project_label===""||t.owner===""||t.name==="")throw new Error("redskilled activity fetch needs a project label and an owner/name for every registered project");if(r.has(t.project_label))throw new Error(`redskilled holds one repository per project, and ${JSON.stringify(t.project_label)} is registered twice`);r.add(t.project_label)}}function wE(e,r){let t=ft(e),n=typeof t.remaining=="number"&&Number.isFinite(t.remaining)?t.remaining:null,o=typeof t.resetAt=="string"?t.resetAt:null,s=r.some(km),i=typeof t.cost=="number"&&Number.isFinite(t.cost)?t.cost:null;return{remaining:n,reset_at:o,exhausted:s||n===0,point_cost:i}}function km(e){if(e==null)return!1;let r=Jo(e.type),t=Jo(e.message);return r==="RATE_LIMITED"||/rate limit/i.test(t)}function cm(e,r){return Array.isArray(e)&&e.includes(r)}function um(e){let r=ft(e);return Number.isInteger(r.totalCount)?r.totalCount:null}function EE(e){let r=ft(e);return Number.isInteger(r.issueCount)?r.issueCount:null}function ft(e){return yn(e)?e:{}}function yn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Jo(e){return typeof e=="string"?e:""}var vE=3e4,SE=2,TE=3,xE=4,PE=["logs","vitals","display"];function bm(e,r){if(r===void 0)return e;let t=PE.filter(o=>r[o]!==!0);if(t.length===0)return e;let n=o=>r[o]===!0;return{...e,workers:e.workers.map(o=>({...o,...n("vitals")?{}:{vitals:OE,budget:{...o.budget,used_bytes:null,used_fraction:null}},...n("logs")?{}:{log:AE},...n("display")?{}:{display:null,display_published_at:null}})),withheld:t}}var OE={rss_bytes:null,sampled_at:null,age_ms:null,fresh:!1,rss_source:null},AE={last_line:null,published_at:null,source:null};function _m(e){let r=e.stalenessMs??vE,t=hr(e.now),n=e.sampledAt==null?null:hr(e.sampledAt),o=t==null||n==null?null:Math.max(0,t-n),s=o!=null&&o<=r,i=new Set(e.reattachedWorkerIds??[]),a=e.hostState.workers.map(m=>GE(m,{rss:e.rss,sampledAt:e.sampledAt,ageMs:o,sampleFresh:s,nowMs:t,log:e.logLines?.[m.worker_id],display:e.displays?.[m.worker_id],state:i.has(m.worker_id)?"reattached":"running"})),l=a.filter(m=>m.vitals.rss_bytes==null).map(m=>m.worker_id).sort(),d=a.length-l.length,c=a.reduce((m,f)=>m+(f.vitals.rss_bytes??0),0),u=xo(e.hostState.workers);return{version:1,generated_at:e.now,daemon:{pid:e.hostState.pid,daemon_version:e.hostState.daemon_version,protocol_version:e.hostState.protocol_version,started_at:e.hostState.started_at,machine_id_hash:e.hostState.machine_id_hash,session_key_hash:e.hostState.session_key_hash},staleness:NE({sampledAt:e.sampledAt,ageMs:o,threshold:r,workerCount:a.length,measuredCount:d,unmeasured:l}),host:{worker_count:a.length,project_count:e.hostState.projects.length,ceiling:e.ceiling,consumption:u,budget_accounting:e.hostState.budget_accounting,observed_rss_bytes:c,measured_worker_count:d,ceiling_used_fraction:e.ceiling.memory_bytes==null||e.ceiling.memory_bytes<=0?null:u.memory_bytes/e.ceiling.memory_bytes},projects:CE(a),known_projects:$E(e.hostState),registered_projects:(e.hostState.registrations??[]).map(m=>m.project_label).sort((m,f)=>m.localeCompare(f)),lapsed_projects:(e.hostState.lapsed_registrations??[]).map(m=>({project_label:m.project_label,at:m.at,...m.registered_at==null?{}:{registered_at:m.registered_at},reason:m.detail})),stopped_projects:(e.hostState.stopped_registrations??[]).map(m=>({project_label:m.project_label,at:m.at})),orphaned_projects:(e.hostState.orphaned_registrations??[]).map(m=>m.project_label),workers:a,github_balance:Ra({balance:e.githubBalance??null,now:e.now,...e.reservedFraction===void 0?{}:{reservedFraction:e.reservedFraction}}),repository_activity:gm({activity:e.repositoryActivity??null,now:e.now,stalenessMs:e.activityStalenessMs}),...e.deaths===void 0?{}:{deaths:DE(e.deaths,e.recentDeathLimit??xE)},engine:LE(e.hostState),...e.metrics===void 0?{}:{metrics:e.metrics}}}function DE(e,r){let t=[...e].sort((s,i)=>(hr(i.ts)??0)-(hr(s.ts)??0)),n=t.slice(0,Math.max(0,Math.floor(r))).map(s=>({kind:s.kind,id:s.id,pid:s.pid,ts:s.ts,last_seen:s.last_seen,last_phase:s.last_phase,sender_class:s.sender_class,confidence:s.confidence,signal:s.signal,evidence:s.evidence[0]??null})),o=jE(t);return{count:t.length,recent:n,latest:n[0]??null,reaped_at:n[0]?.ts??null,...o==null?{}:{boot_loop:o}}}function jE(e){let r=new Map;for(let n of e){if(n.sender_class!=="boot-refused"||n.uptime_s==null||n.uptime_s>SE||n.project_label==null||n.project_label===""||hr(n.ts)==null)continue;let o=r.get(n.project_label)??[];o.push(n),r.set(n.project_label,o)}return[...r.entries()].filter(([,n])=>n.length>=TE).map(([n,o])=>{let s=o[0],i=hr(s.ts),a=Math.min(...o.map(d=>hr(d.ts))),l=s.detail?.trim()||s.evidence[0]?.trim();return l==null||l===""?null:{project_label:n,count:o.length,span_ms:Math.max(0,i-a),latest_refusal:l}}).filter(n=>n!=null).sort((n,o)=>o.count-n.count||o.span_ms-n.span_ms)[0]??null}function LE(e){let r=e.upgrade,t=r?.running_version??e.daemon_version,n=r?.published_version??null,o=r?.newest_published_version??null,s=(r?.newer_published??0)>0,i=(r?.major_held??0)>0;return{running_version:t,published_version:n,newer_published:s,major_held:i,current:n==null&&o==null?null:!s&&!i}}function GE(e,r){let t=r.rss[e.worker_id],n=typeof t=="number"&&Number.isFinite(t)?t:null,o=hn(e),s=e.budget?.memory_max??e.budget?.memory_high??null,i=hr(e.started_at);return{worker_id:e.worker_id,project_label:e.project_label,workspace_path:e.workspace_path,pid:e.pid,started_at:e.started_at,...e.base_commits_ahead==null?{}:{base_commits_ahead:e.base_commits_ahead},uptime_ms:r.nowMs==null||i==null?null:Math.max(0,r.nowMs-i),state:r.state,isolated:e.isolated,unit:e.unit??null,warnings:[...e.warnings],vitals:{rss_bytes:n,sampled_at:n==null?null:r.sampledAt,age_ms:n==null?null:r.ageMs,fresh:n!=null&&r.sampleFresh,rss_source:n==null?null:e.rss_source??null},budget:{name:o?.name??null,declared:o?.declared??s,bytes:o?.bytes??null,used_bytes:n,used_fraction:o==null||o.bytes<=0||n==null?null:n/o.bytes,enforceable:o!=null},log:IE(r.log),display:r.display?.display??null,display_published_at:r.display?.published_at??null}}function IE(e){let r={last_line:null,published_at:null,source:null};return e==null||e.line.trim()===""?r:{last_line:e.line,published_at:e.published_at,source:e.source}}function $E(e){let r=new Set;for(let t of e.registrations??[])r.add(t.project_label);for(let t of e.projects)r.add(t.project_label);for(let t of e.lapsed_registrations??[])r.add(t.project_label);for(let t of e.stopped_registrations??[])r.add(t.project_label);for(let t of e.orphaned_registrations??[])r.add(t.project_label);return[...r].sort((t,n)=>t.localeCompare(n))}function CE(e){let r=new Map;for(let t of e){let n=r.get(t.project_label)??{workers:0,declared:0,observed:0,measured:0};n.workers+=1,n.declared+=t.budget.bytes??0,n.observed+=t.vitals.rss_bytes??0,n.measured+=t.vitals.rss_bytes==null?0:1,r.set(t.project_label,n)}return[...r.entries()].map(([t,n])=>({project_label:t,worker_count:n.workers,declared_memory_bytes:n.declared,observed_rss_bytes:n.observed,measured_worker_count:n.measured})).sort((t,n)=>t.project_label.localeCompare(n.project_label))}function NE(e){let r={sampled_at:e.sampledAt,age_ms:e.ageMs,threshold_ms:e.threshold,measured_worker_count:e.measuredCount,unmeasured_workers:e.unmeasured};return e.workerCount===0?{...r,stale:!1,reason:"the host holds no Workers, so there is nothing to measure and nothing to age"}:e.sampledAt==null||e.ageMs==null?{...r,stale:!0,reason:`this answer is stale: the daemon has taken no measurement of its ${e.workerCount} live Worker(s) yet`}:e.ageMs>e.threshold?{...r,stale:!0,reason:`this answer is stale: its measurement is ${e.ageMs}ms old, past the ${e.threshold}ms staleness window`}:{...r,stale:!1,reason:`measured ${e.ageMs}ms ago, within the ${e.threshold}ms staleness window`}}function hr(e){let r=Date.parse(e);return Number.isFinite(r)?r:null}function Oa(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let r=e,t=r.daemon,n=r.staleness,o=r.host;return r.version===1&&typeof r.generated_at=="string"&&t!=null&&typeof t=="object"&&Number.isInteger(t.pid)&&typeof t.daemon_version=="string"&&typeof t.protocol_version=="number"&&n!=null&&typeof n=="object"&&typeof n.stale=="boolean"&&typeof n.threshold_ms=="number"&&Array.isArray(n.unmeasured_workers)&&o!=null&&typeof o=="object"&&Number.isInteger(o.worker_count)&&Number.isInteger(o.project_count)&&typeof o.observed_rss_bytes=="number"&&Array.isArray(r.projects)&&Array.isArray(r.workers)&&(r.known_projects===void 0||Array.isArray(r.known_projects)&&r.known_projects.every(s=>typeof s=="string"))&&(r.registered_projects===void 0||Array.isArray(r.registered_projects)&&r.registered_projects.every(s=>typeof s=="string"))&&(r.lapsed_projects===void 0||Array.isArray(r.lapsed_projects)&&r.lapsed_projects.every(ME))&&(r.stopped_projects===void 0||Array.isArray(r.stopped_projects)&&r.stopped_projects.every(FE))&&(r.orphaned_projects===void 0||Array.isArray(r.orphaned_projects)&&r.orphaned_projects.every(s=>typeof s=="string"))&&(r.repository_activity===void 0||fm(r.repository_activity))&&(r.github_balance===void 0||wa(r.github_balance))&&(r.deaths===void 0||WE(r.deaths))&&(r.engine===void 0||UE(r.engine))&&(r.metrics===void 0||om(r.metrics))}function ME(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let r=e;return typeof r.project_label=="string"&&typeof r.at=="string"&&(r.registered_at===void 0||typeof r.registered_at=="string")&&typeof r.reason=="string"}function FE(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let r=e;return typeof r.project_label=="string"&&typeof r.at=="string"}function WE(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let r=e;return Number.isInteger(r.count)&&Array.isArray(r.recent)}function UE(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let r=e;return typeof r.running_version=="string"&&(r.published_version===null||typeof r.published_version=="string")}var Rm={runner:null,model:null,effort:null,origin:null,issue:null,phase:null,step:null,phase_index:null,phase_total:null,failed:!1,heartbeat:null,wait_kind:null,wait_subject:null,wait_pid:null,wait_started_at:null,wait_deadline:null,wait_escalation:null,started_at:null,context:null,eta:null,added:null,removed:null,tokens:null,tools:null,reasoning:null,text:null};function wm(e,r){let t=e.display?.started_at;if(t!=null&&t!==""){let n=Date.parse(t),o=Date.parse(r);if(Number.isFinite(n)&&Number.isFinite(o))return Math.max(0,o-n)}return e.uptime_ms}var ae=e=>`\x1B[${e}m`,kn=ae("48;2;114;47;55"),Aa=ae("48;2;88;36;42"),yr=ae("38;2;255;255;255"),Da=ae("38;2;201;150;158"),bn=ae("38;2;255;214;214"),_n=ae("39"),ke=ae("38;2;224;138;148"),ja=ae("38;2;240;200;120"),La=ae("38;2;240;110;120"),Ga=ae("38;2;255;214;214"),Ia=ae("38;2;146;84;94"),$a=ae("38;2;255;95;95"),Ke=ae("49"),Le=ae("0"),zo=ae("1"),Qo=ae("22");var BE=/\x1b\[[0-9;]*m/g,HE=/(\x1b\[[0-9;]*m)/,qE=/^\x1b\[[0-9;]*m$/;function Em(e){return e.replace(BE,"")}function VE(e){return e.slice(2,-1).split(";").every(t=>t===""||Number(t)===0)}function xe(e){return[...Em(e)].length}function fe(e,r){if(r<=0)return"";if(xe(e)<=r)return e;if(r===1)return"\u2026";let t=r-1,n=0,o=!1,s="";for(let i of e.split(HE))if(i!==""){if(qE.test(i)){s+=i,o=!VE(i);continue}for(let a of i){if(n===t)return`${s}\u2026${o?Le:""}`;s+=a,n+=1}}return`${s}\u2026${o?Le:""}`}function Rn(e,r){return e+" ".repeat(Math.max(0,r-xe(e)))}function Ca(e){let r=e.toLowerCase();for(let t of["opus","sonnet","haiku","fable"]){let n=r.indexOf(t);if(n===-1)continue;let s=r.slice(n+t.length).match(/^-(\d+(?:[-.]\d+)*)/)?.[1]?.split(/[-.]/)??[];return/^\d{8}$/.test(s.at(-1)??"")&&s.pop(),s.length===0?t:`${t}-${s.join(".")}`}return e}function Ge(e){if(!Number.isFinite(e)||e<=0)return"0B";let r=["B","K","M","G","T"],t=e,n=0;for(;t>=1024&&n<r.length-1;)t/=1024,n+=1;return`${t>=100||n===0?Math.round(t).toString():t.toFixed(1).replace(/\.0$/,"")}${r[n]}`}function wn(e){if(!Number.isFinite(e)||e<=0)return"0";let r=(t,n)=>{let o=(Math.round(t*10)/10).toFixed(1);return`${o.endsWith(".0")?o.slice(0,-2):o}${n}`};return e>=1e9?r(e/1e9,"B"):e>=1e6?r(e/1e6,"M"):e>=1e3?r(e/1e3,"k"):String(Math.round(e))}function En(e){if(!Number.isFinite(e))return"\u2014";if(e>=10)return wn(e);if(e<=0)return"0";let r=(Math.round(e*10)/10).toFixed(1);return r.endsWith(".0")?r.slice(0,-2):r}function kr(e){if(e==null||!Number.isFinite(e)||e<0)return"\u2014";let r=Math.floor(e/1e3);if(r<60)return`${r}s`;let t=Math.floor(r/60);if(t<60)return`${t}m${r%60}s`;let n=Math.floor(t/60);return n<24?`${n}h${t%60}m`:`${Math.floor(n/24)}d${n%24}h`}function ht(e){if(e==null)return null;let r=e.replace(/[\u0000-\u001f\u007f]+/g," ").replace(/\s+/g," ").trim();return r===""?null:r}var vn="!unregistered",Na="!lapsed",Sn="\u21E1",sr="\u2020",yt="\u25D0",kt="\u25EF",Ma="\u21B3",Fa="redskilled unreachable \u2014 Worker state unknown";function bt(e,r){return r.mode==="global"?e.workers:r.project==null?[]:e.workers.filter(t=>t.project_label===r.project)}function Yo(e,r){return r.mode==="global"?e.projects:e.projects.filter(t=>t.project_label===r.project)}function Tn(e,r){return r==null?"unresolved":e.known_projects==null?"matched":e.known_projects.includes(r)?e.registered_projects==null||e.registered_projects.includes(r)?"matched":e.orphaned_projects?.includes(r)===!0?"orphaned":e.stopped_projects?.some(t=>t.project_label===r)===!0?"stopped":e.lapsed_projects?.some(t=>t.project_label===r)===!0?"lapsed":"name-only":"unregistered"}function Wa(e){let r=[];return e.workers.length>0&&e.workers.length<=e.maxWorkers&&r.push("workers"),e.mode==="global"&&e.projects.length>0&&e.projects.length<=e.maxProjects&&r.push("projects"),r.push("host"),r}var _r=["wid","run","org","iss","bar","phase","base","elapsed","eta","hb","loc","tks","ctx","tls","rsn","txt"],Je={mode:"local",project:null,maxWidth:200,maxRows:16},KE=" ",vm="\u2588",JE="\u25B6",zE="\u2717",QE="\u2591",YE=new Set(["gate","push-pr","merge","cascade"]),XE=new Set(["requeue"]),ZE="repair";function xn(e){return e.display?.origin===ZE}function _t(e,r=Je){let t=Tn(e,r.project),n=bt(e,r),o=n.slice(0,Math.max(0,Math.floor(r.maxRows))),s=o.map(u=>Xo(u,r,e.generated_at)),i=dv(s),a=o.map((u,m)=>({worker_id:u.worker_id,project_label:u.project_label,mine:r.project!=null&&u.project_label===r.project,cells:s[m],line:fe(cv(s[m],i),r.maxWidth)})),l=rv(e,r,n,t),d=n.length-o.length,c=[l.line,...a.map(u=>u.line)];return d>0&&c.push(fe(`\u2026 ${d} more Worker(s) \u2014 the row budget is short, not the host`,r.maxWidth)),c.push(...sv(e,r)),c.push(...ov(e,r)),{version:1,generated_at:e.generated_at,mode:r.mode,project:r.project,columns:_r,header:l,rows:a,lines:c,hidden_row_count:Math.max(0,d),stale:e.staleness.stale}}function Xo(e,r,t){let n=e.display??Rm,o=xn(e),s=[n.runner,n.model==null?null:Ca(n.model),n.effort].filter(l=>!!l).join(" "),i=n.phase!=null&&YE.has(n.phase),a=o||i||n.origin!=null&&XE.has(n.origin);return{wid:r.mode==="global"?`${e.project_label}:${e.worker_id}`:e.worker_id,run:o||s===""?"":`run=${s}`,org:o?"lane=repair":i?"org=landing":n.origin==null?"":`org=${n.origin}`,iss:n.issue==null?"":o?`pr=#${n.issue.replace(/^#/,"")}`:`iss=${n.issue}`,bar:Sm(n),phase:[n.phase,n.step].filter(l=>!!l).join("\xB7"),base:e.base_commits_ahead==null?"":`base +${e.base_commits_ahead}`,elapsed:kr(wm(e,t)),eta:n.eta==null?"":`eta=${kr(n.eta*1e3)}`,hb:ev(n,t)??`hb=${n.heartbeat??"?"}`,loc:a?"":lv(n.added,n.removed),tks:a||n.tokens==null?"":`tks=${wn(n.tokens)}`,ctx:n.context==null?"":`ctx=${wn(n.context)}`,tls:a||n.tools==null?"":`tls=${n.tools}`,rsn:a||n.reasoning==null?"":`rsn=${n.reasoning}`,txt:a||n.text==null?"":`txt=${n.text}`}}function ev(e,r){if(e.wait_kind==null||e.wait_subject==null||e.wait_pid==null||e.wait_pid<=0||e.wait_started_at==null)return null;let t=Date.parse(e.wait_started_at),n=Date.parse(r);return!Number.isFinite(t)||!Number.isFinite(n)?null:`${e.wait_kind}=${e.wait_subject} ${kr(Math.max(0,n-t))}`}function Sm(e){let r=e.phase_total,t=e.phase_index;if(r==null||r<=0||t==null||t<0)return"";let n=Math.min(Math.floor(t),Math.floor(r));if(n>=r)return vm.repeat(Math.floor(r));let o=e.failed?zE:JE;return`${vm.repeat(n)}${o}${QE.repeat(Math.floor(r)-n-1)}`}function rv(e,r,t,n){let o=(e.repository_activity?.projects??[]).find(G=>G.project_label===r.project),s={open_pull_requests:o?.counts?.open_pull_requests??null,recently_closed:o?.counts?.recently_closed??null,open_issues:o?.counts?.open_issues??null,stale:o?.stale===!0},i={memory_used_fraction:e.host.ceiling_used_fraction,memory_used_bytes:e.host.consumption.memory_bytes,memory_ceiling_bytes:e.host.ceiling.memory_bytes,worker_count:e.host.worker_count,worker_ceiling:e.host.ceiling.worker_count,interactive_reservation:e.host.ceiling.interactive_reservation??0},a=av(t),l=o?.repository??r.project,d=e.engine??null,c=d?.running_version??e.daemon.daemon_version,u=e.deaths??null,m=e.metrics??null,f=[tv(l??"host",c,d!=null&&d.current===!1?Sn:"")];(n==="unregistered"||n==="name-only")&&f.push(vn),n==="lapsed"&&f.push(Na),a!=null&&f.push(`${kn}${yr}${a}${Ke}${ke}`);let h=e.workers.filter(xn).length;if(h>0){let G=Math.max(0,e.host.worker_count-h);f.push(`${br(`workers=${G} coding +`)} ${kn}${yr}${h} repairing${Ke}${ke}`)}else f.push(br(`wrk=${t.length}/${e.host.worker_count}`));let v=i.worker_ceiling==null?"slots=\u221E":`slots=${i.worker_count}/${i.worker_ceiling}`;f.push(br(`${v} reserve=${i.interactive_reservation} interactive`)),f.push(br(iv(i))),s.open_pull_requests!=null&&f.push(br(`prs=${s.open_pull_requests}`)),s.recently_closed!=null&&f.push(br(`cpr=${s.recently_closed}`)),s.open_issues!=null&&f.push(br(`iss=${s.open_issues}`)),s.stale&&f.push("!counts stale");let k=m==null?null:Tm(m.hour),T=k==null?null:br(k);if(T!=null&&f.push(T),u!=null&&u.count>0&&u.latest!=null){let G=u.boot_loop,H=ht(G?.latest_refusal);f.push(G==null?`${sr}${u.count} ${u.latest.sender_class}`:`${sr}${u.count} boot-refused \xD7${G.count} in ${nv(G.span_ms)}`+(H==null?"":` \u2014 ${H}`))}if(e.staleness.stale){let G=e.staleness.age_ms;f.push(G==null?"!unmeasured":`!stale ${Math.round(G/1e3)}s`)}let I=`${f.join(" \xB7 ")}${Le}`,F=k!=null&&xe(I)>r.maxWidth?`${f.filter(G=>G!==T).join(" \xB7 ")}${Le}`:I;return{repo:l,project:r.project,project_match:n,version:c,engine:d,deaths:u,metrics:m,model:a,windows:i,counts:s,stale:e.staleness.stale,age_ms:e.staleness.age_ms,line:fe(F,r.maxWidth)}}function tv(e,r,t){return`${Aa}${yr}${ja}\xBB${yr} ${zo}${e}${Qo} ${Da}v${r}${t}${yr}${Ke}${ke}`}function br(e){return e.replace(/(^|\s)([A-Za-z][A-Za-z0-9/]*=)([^\s]+)/g,(r,t,n,o)=>`${t}${bn}${n}${_n}${o}${ke}`)}function nv(e){return kr(e).replace(/m0s$/,"m").replace(/h0m$/,"h").replace(/d0h$/,"d")}function Tm(e){let r=[];e.tokens_per_min.value!=null&&r.push(`tk/m=${En(e.tokens_per_min.value)}`),e.tools_per_min.value!=null&&r.push(`tl/m=${En(e.tools_per_min.value)}`),e.issues_per_hour.value!=null&&r.push(`iss/h=${En(e.issues_per_hour.value)}`);let t=e.runner_share.shares[0];return t!=null&&r.push(`${t.key}=${Math.round(t.share*100)}%`),r.length===0?null:r.join(" ")}function ov(e,r){let t=e.github_balance;if(t==null)return[];if(t.posture!=="spent"&&t.posture!=="reserved")return[];let n=t.posture==="spent"?kt:yt,o=t.age_ms==null?"":` (${Math.round(t.age_ms/1e3)}s ago)`;return[fe(`${n} github budget ${t.posture}${o} \u2014 ${t.reason}`,r.maxWidth)]}function sv(e,r){let t=e.deaths;if(t==null||t.count<=0)return[];let n=t.recent.map(s=>fe(`${sr} ${s.kind} ${s.id} pid=${s.pid} ${s.sender_class}/${s.confidence} phase=${s.last_phase}`+(s.signal==null?"":` signal=${s.signal}`)+(s.evidence==null?"":` \u2014 ${s.evidence}`),r.maxWidth)),o=t.count-t.recent.length;return o>0&&n.push(fe(`\u2026 ${o} more posed death(s) \u2014 the lane holds them all`,r.maxWidth)),n}function iv(e){if(e.memory_ceiling_bytes==null||e.memory_ceiling_bytes<=0)return`mem=${Ge(e.memory_used_bytes)}`;let r=e.memory_used_fraction==null?"":` ${Math.round(e.memory_used_fraction*100)}%`;return`mem=${Ge(e.memory_used_bytes)}/${Ge(e.memory_ceiling_bytes)}${r}`}function av(e){for(let r of e){let t=r.display;if(t==null)continue;let n=[t.runner,t.model,t.effort].filter(o=>!!o);if(n.length>0)return n.join("\xB7")}return null}function lv(e,r){if(e==null&&r==null)return"";let t=[];return e!=null&&e>0&&t.push(`+${e}`),r!=null&&r>0&&t.push(`-${r}`),`loc=${t.length>0?t.join(" "):"0"}`}function dv(e){let r=Object.fromEntries(_r.map(t=>[t,0]));for(let t of e)for(let n of _r)r[n]=Math.max(r[n],xe(t[n]));return r}function cv(e,r){let t=_r.filter(o=>r[o]>0);if(t.length===0)return"";let n=t.map((o,s)=>Zo(o,Rn(e[o],s===t.length-1?xe(e[o]):r[o])));return`${Ke}${ke}${n.join(KE)}${Le}`}function Zo(e,r){if(e==="wid")return`${zo}${r}${Qo}`;if(e==="org"&&r.trim()==="lane=repair"){let n=r.slice(r.trimEnd().length);return`${kn}${yr}${r.trimEnd()}${Ke}${ke}${n}`}if(e==="bar")return r.replace(/█+/g,n=>`${La}${n}`).replace("\u25B6",`${Ga}\u25B6`).replace("\u2717",`${$a}\u2717`).replace(/░+/g,n=>`${Ia}${n}`)+ke;let t=r.indexOf("=");return t>0?`${bn}${r.slice(0,t+1)}${_n}${r.slice(t+1)}${ke}`:r}function Ba(e){return Object.freeze({none:!0,reason:e})}function Pn(){return{tool:"project_start",args:{runner:"claude",target:1},why:"register this project with the host so its queue can drain"}}function Ua(e,r){if(e===null||typeof e=="string"||typeof e=="boolean")return e;if(typeof e=="number"){if(!Number.isFinite(e))throw new TypeError("repair args must contain only finite JSON numbers");return e}if(r.has(e))throw new TypeError("repair args must not contain cycles");r.add(e);try{if(Array.isArray(e))return Object.freeze(e.map(n=>Ua(n,r)));let t={};for(let[n,o]of Object.entries(e))t[n]=Ua(o,r);return Object.freeze(t)}finally{r.delete(e)}}function uv(e){let r=Ua(e.args,new Set);return Object.freeze({tool:e.tool,args:r,why:e.why})}function Mr(e){if("none"in e.repair)return{prose:`${e.state}; repair: none because ${e.repair.reason}`,repair:"none",repair_reason:e.repair.reason};let r=uv(e.repair);return{prose:`${e.state}; repair: call \`${r.tool}\` with \`${JSON.stringify(r.args)}\` because ${r.why}`,repair:r}}var B={mode:"local",project:null,maxWorkers:4,maxProjects:4,maxWidth:120,separator:" \xB7 ",verbose:!1};function Fr(e,r=B){let t=Tn(e,r.project),n=bt(e,r),o=Yo(e,r),s=yv(e,r.project,t),i=mv(e,r,n,t,s.prose),a=Wa({mode:r.mode,maxWorkers:r.maxWorkers,maxProjects:r.maxProjects,workers:n,projects:o}),l={detail:"host",line:i};for(let f of a){let h=f==="workers"?i:wv(i,pv(f,o),r.separator);if(l={detail:f,line:h},f==="workers"||xe(h)<=r.maxWidth)break}let d=fe(l.line,r.maxWidth),c=l.detail==="workers"?bv(n,r,e.generated_at):{lines:[],degraded:!1},u=l.detail==="workers"?n.flatMap((f,h)=>{let v=r.verbose?_v(f,r):null;return v==null?[c.lines[h]]:[c.lines[h],v]}):[],m=n.length>0?"workers":"host";return{version:1,line:d,lines:[d,...u],verbose:r.verbose,mode:r.mode,project:r.project,project_match:t,...s.repair===void 0?{}:{repair:s.repair},...s.repair_reason===void 0?{}:{repair_reason:s.repair_reason},detail:l.detail,degraded:l.detail!==m||d!==l.line||c.degraded,stale:e.staleness.stale,generated_at:e.generated_at}}function Ka(e){let r=e.options??B,t=fe(Fa,r.maxWidth);return{version:1,line:t,lines:[t],verbose:r.verbose,mode:r.mode,project:r.project,project_match:"unanswered",detail:"host",degraded:!0,stale:!0,generated_at:e.generated_at}}function pv(e,r){return e==="projects"?r.map(Rv):[]}function mv(e,r,t,n,o){let s=[],i=n!=="matched"&&n!=="name-only";r.mode==="global"?(s.push(`host ${Ha(e.workers,e.host.worker_count)}/${e.host.project_count}p`),s.push(Va(e,r))):n==="matched"?(s.push(`${r.project} ${Ha(t,t.length)}`),s.push(Va(e,r)),t.length===0&&s.push("idle")):n==="name-only"?(s.push(`${r.project} ${Ha(t,t.length)}`),s.push(Va(e,r)),s.push(vn)):s.push(o),s.push(xm(e));let a=gv(e);a!=null&&s.push(a);let l=fv(e);l!=null&&s.push(l),e.staleness.stale&&s.push(Pm(e));let d=s.join(" ");return!i||xe(d)<=r.maxWidth||a==null&&l==null?d:[a,l,o,xm(e),e.staleness.stale?Pm(e):null].filter(c=>c!=null).join(" ")}function Ha(e,r){let t=e.filter(xn).length;return t===0?`${r}w`:`${Math.max(0,r-t)} coding + ${t} repairing`}function xm(e){let r=e.engine,t=r?.running_version??e.daemon.daemon_version;return r==null||r.current!==!1?`v${t}`:`v${t}${Sn}`}function gv(e){let r=e.github_balance;return r==null?null:r.posture==="spent"?`${kt} quota spent`:r.posture==="reserved"?`${yt} quota band`:null}function fv(e){let r=e.deaths;if(r==null||r.count<=0||r.latest==null)return null;let t=r.boot_loop;if(t!=null){let n=ht(t.latest_refusal);return`${sr}${r.count} boot-refused \xD7${t.count} in ${hv(t.span_ms)}`+(n==null?"":` \u2014 ${n}`)}return`${sr}${r.count} ${r.latest.sender_class}`}function hv(e){return kr(e).replace(/m0s$/,"m").replace(/h0m$/,"h").replace(/d0h$/,"d")}function yv(e,r,t){if(t==="unregistered")return Mr({state:`project unknown \u2014 ${r} was never registered on this host`,repair:Pn()});if(t==="orphaned")return Mr({state:`project unknown \u2014 ${r} is registered on a daemon this socket does not reach`,repair:Ba("this socket cannot safely replace a registration owned by an unreachable daemon")});if(t==="stopped"){let n=e.stopped_projects?.find(o=>o.project_label===r);return Mr({state:`project unknown \u2014 ${r} was stopped${n==null?"":` at ${qa(n.at)}`}`,repair:Pn()})}if(t==="lapsed"){let n=e.lapsed_projects?.find(o=>o.project_label===r);if(n!=null){let o=n.registered_at==null?"":` (registered ${qa(n.registered_at)})`;return Mr({state:`project unknown \u2014 ${r} lapsed at ${qa(n.at)}${o}`,repair:Pn()})}return Mr({state:`project unknown \u2014 ${r} lapsed`,repair:Pn()})}return t==="unresolved"?Mr({state:"project unknown \u2014 this directory resolved to no project",repair:Ba("the directory must resolve to a project before registration args can be safe")}):{prose:""}}function qa(e){return/^\d{4}-\d{2}-\d{2}T(\d{2}:\d{2}:\d{2})/.exec(e)?.[1]??e}function Va(e,r){let t=r.mode==="global"?e.host.observed_rss_bytes:e.projects.filter(o=>o.project_label===r.project).reduce((o,s)=>o+s.observed_rss_bytes,0),n=e.host.ceiling.memory_bytes;return r.mode==="global"&&n!=null&&n>0?`${Ge(t)}/${Ge(n)}`:Ge(t)}function Pm(e){let r=e.staleness.age_ms;return r==null?"!unmeasured":`!stale ${Math.round(r/1e3)}s`}function kv(e,r,t,n){let o=t.map(s=>Zo(s,Rn(e[s],r[s])));return fe(`${Ke}${ke}${o.join(" ")}${Le}`,n)}function bv(e,r,t){let n=e.map(a=>Xo(a,r,t)),o=_r.filter(a=>n.some(l=>xe(l[a])>0)),s=[...o],i=Om(n,s);for(;s.length>1&&Am(i,s)>r.maxWidth;)s.pop(),i=Om(n,s);return{lines:n.map(a=>kv(a,i,s,r.maxWidth)),degraded:s.length<o.length||Am(i,s)>r.maxWidth}}function Om(e,r){let t=Object.fromEntries(_r.map(n=>[n,0]));for(let n of e)for(let o of r)t[o]=Math.max(t[o],xe(n[o]));return t}function Am(e,r){return r.reduce((t,n)=>t+e[n],0)+Math.max(0,r.length-1)*2}function _v(e,r){let t=ht(e.log.last_line);return t==null?null:fe(` ${Ma} ${Dm(e,r.mode)}: ${t}`,r.maxWidth)}function Dm(e,r){return r==="global"?`${e.project_label}:${e.worker_id}`:e.worker_id}function Rv(e){return`${e.project_label} ${e.worker_count}w ${Ge(e.observed_rss_bytes)}`}function wv(e,r,t){return[e,...r].join(t)}var es=1;async function On(e,r){return await _o(e,r,"redskilled daemon")}function Lm(e){let r=[...e.workers??[]],t=new Map;for(let n of r)t.set(n.project_label,(t.get(n.project_label)??0)+1);return{version:1,protocol_version:es,daemon_version:e.daemonVersion,machine_id_hash:e.machineIdHash,session_key_hash:e.sessionKeyHash,pid:e.pid,started_at:e.startedAt,...e.ceiling==null?{}:{ceiling:e.ceiling},...e.scope==null?{}:{scope:e.scope},workers:r,projects:[...t.entries()].map(([n,o])=>({project_label:n,worker_count:o})).sort((n,o)=>n.project_label.localeCompare(o.project_label)),registrations:Tv(e),...e.demand==null?{}:{demand:e.demand},...e.lapses==null||e.lapses.length===0?{}:{lapsed_registrations:[...e.lapses]},...e.stops==null||e.stops.length===0?{}:{stopped_registrations:[...e.stops]},...e.orphanedRegistrations==null||e.orphanedRegistrations.length===0?{}:{orphaned_registrations:[...e.orphanedRegistrations]},birth_latches:[...e.birthLatches??[]],budget_accounting:Yc(r,{hostCeilingBytes:e.ceiling?.memory_bytes??e.hostCeilingBytes??null}),upgrade:xv(e)}}function Tv(e){let r=e.now==null?Number.NaN:Date.parse(e.now),t=Number.isFinite(r),n=e.queue??null,o=new Map(n==null?[]:n.projects.map(s=>[s.project_label,s]));return[...e.registrations??[]].map(s=>{let i=o.get(s.project_label);return{...s,...t?{renewal:Iu(s,r)}:{},...n==null||i==null?{}:{last_poll:{at:n.fetched_at,outcome:i.outcome,depth:i.depth,request_count:n.request_count,detail:i.detail}}}}).sort((s,i)=>s.project_label.localeCompare(i.project_label))}function xv(e){let r=e.daemonVersion,t=e.published?.version??null,n=e.published?.majorHold??null;return{running_version:r,published_version:t,published_unknown:+(t===null),newer_published:+(e.published?.newer===!0),replacement:e.published?.replacement??"none",checked_at:e.published?.checkedAt??null,checks:e.published?.checks??0,hold_reason:e.published?.holdReason??null,newest_published_version:e.published?.newest??null,major_held:+(n!==null),major_hold:n}}function Gm(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let r=e;return r.version===1&&typeof r.protocol_version=="number"&&typeof r.daemon_version=="string"&&typeof r.machine_id_hash=="string"&&typeof r.session_key_hash=="string"&&Number.isInteger(r.pid)&&typeof r.started_at=="string"&&(r.ceiling===void 0||jv(r.ceiling))&&Array.isArray(r.workers)&&Array.isArray(r.projects)&&Xc(r.budget_accounting)&&(r.scope===void 0||Ou(r.scope))&&(r.registrations===void 0||Array.isArray(r.registrations)&&r.registrations.every(dn))&&(r.demand===void 0||fu(r.demand))&&(r.lapsed_registrations===void 0||Array.isArray(r.lapsed_registrations)&&r.lapsed_registrations.every(Ov))&&(r.stopped_registrations===void 0||Array.isArray(r.stopped_registrations)&&r.stopped_registrations.every(Av))&&(r.orphaned_registrations===void 0||Array.isArray(r.orphaned_registrations)&&r.orphaned_registrations.every(Dv))&&(r.birth_latches===void 0||Array.isArray(r.birth_latches)&&r.birth_latches.every(Pv))&&(r.upgrade===void 0||Lv(r.upgrade))}function Pv(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let r=e,t=r.repair;return r.name==="project-birth-breaker"&&typeof r.project_label=="string"&&(r.state==="open"||r.state==="half-open")&&typeof r.opened_at=="string"&&typeof r.reason=="string"&&typeof r.closes=="string"&&(r.probe_worker_id===null||typeof r.probe_worker_id=="string")&&t!=null&&t.tool==="project_reset"&&typeof t.args=="object"&&t.args!==null&&typeof t.why=="string"}function Ov(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let r=e;return typeof r.project_label=="string"&&(r.registered_at===void 0||typeof r.registered_at=="string")&&typeof r.at=="string"&&typeof r.renew_by=="string"&&Number.isInteger(r.renewals)&&Number.isInteger(r.sustains)&&typeof r.detail=="string"}function Av(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let r=e;return typeof r.project_label=="string"&&typeof r.registered_at=="string"&&typeof r.at=="string"&&typeof r.detail=="string"}function Dv(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let r=e;return typeof r.project_label=="string"&&(r.registered_at===void 0||typeof r.registered_at=="string")}function jv(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let r=e,t=new Set(["flag","environment","home-config","derived-default"]);return(r.memory_bytes===null||typeof r.memory_bytes=="number")&&(r.worker_count===null||typeof r.worker_count=="number")&&(r.validation_count===void 0||Number.isInteger(r.validation_count)&&Number(r.validation_count)>0)&&(r.source==="declared"||r.source==="host-fraction")&&(r.memory_source===void 0||t.has(String(r.memory_source)))&&(r.worker_source===void 0||t.has(String(r.worker_source)))&&(r.validation_source===void 0||t.has(String(r.validation_source)))}function Lv(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let r=e;return typeof r.running_version=="string"&&(r.published_version===null||typeof r.published_version=="string")&&typeof r.published_unknown=="number"&&typeof r.newer_published=="number"&&(r.replacement==="none"||r.replacement==="pending"||r.replacement==="in-progress")&&(r.checked_at===null||typeof r.checked_at=="string")&&(r.newest_published_version===void 0||r.newest_published_version===null||typeof r.newest_published_version=="string")&&(r.major_held===void 0||typeof r.major_held=="number")&&(r.checks===void 0||typeof r.checks=="number")&&(r.hold_reason===void 0||r.hold_reason===null||typeof r.hold_reason=="string")&&(r.major_hold===void 0||r.major_hold===null||Gv(r.major_hold))}function Gv(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let r=e;return typeof r.version=="string"&&Number.isInteger(r.running_major)&&Number.isInteger(r.held_major)&&typeof r.reason=="string"&&typeof r.action=="string"&&r.action.trim()!==""}import{randomUUID as Iv}from"node:crypto";import{mkdir as $v,readFile as Cv,rename as Nv,writeFile as Mv}from"node:fs/promises";import{dirname as Fv}from"node:path";function Im(e){let r=Promise.resolve(),t=null;async function n(){await r;let s;try{s=await Cv(e,"utf8")}catch(a){if(a.code==="ENOENT")return[];throw a}let i=Wv(s);return Uv(i)?i.registrations:[]}async function o(s){await $v(Fv(e),{recursive:!0,mode:448});let i=`${e}.${process.pid}.${Iv()}.tmp`,a={version:1,registrations:[...s]};await Mv(i,`${X(a,{keyedMapCollapse:!0})}
91
- `,{encoding:"utf8",mode:384}),await Nv(i,e)}return{read:n,replace(s){let i=r.then(()=>o(s));return r=i.then(()=>{t=null},a=>{t=a}),i},async flush(){if(await r,t!=null)throw t}}}function Wv(e){let r=e.trim();if(!r)return null;try{return JSON.parse(r)}catch{try{return me(r)}catch{return null}}}function Uv(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let r=e;return r.version===1&&Array.isArray(r.registrations)&&r.registrations.every(dn)}import{spawnSync as ns}from"node:child_process";import{existsSync as Xa}from"node:fs";import{delimiter as Yv,join as qm}from"node:path";import{join as $m}from"node:path";import{existsSync as Bv}from"node:fs";import{createRequire as Hv}from"node:module";var Cm="redskilled-job-object.node",Wr=100;function Rt(e){return{available:!1,reason:e}}function qv(e,r,t){return[$m(t,"prebuilds",`${e}-${r}`,Cm),$m(t,"native","build","Release",Cm)]}function Nm(e={}){let r=e.platform??process.platform,t=e.arch??process.arch;if(r!=="win32")return Rt(`Job Object placement is the Windows backend (platform=${r}), so there is no native reach to load here`);let n=e.packageRoot??Kv(),o=e.exists??Bv,s=qv(r,t,n),i=s.find(d=>o(d));if(i==null)return Rt(`no Job Object addon was found for ${r}-${t} (looked in ${s.join(", ")}); either install the prebuild for this platform and architecture or build the addon locally`);let a=e.requireFn??Hv(import.meta.url),l;try{l=a(i)}catch(d){return Rt(`the Job Object addon at ${i} could not be loaded: ${d instanceof Error?d.message:String(d)}`)}return Vv(l)?{available:!0,binding:l}:Rt(`the Job Object addon at ${i} does not export createJobObject, so it cannot be the native reach`)}function Vv(e){return typeof e=="object"&&e!=null&&typeof e.createJobObject=="function"}function Kv(){return new URL("..",import.meta.url).pathname}function Mm(e){let r=e??{},t=[],n=Jv(r);n==null&&(r.memory_max??r.memory_high)!=null&&t.push("the declared memory budget could not be reduced to bytes, so the job carries no memory ceiling");let o;return r.cpu_weight!=null&&(r.cpu_weight<Wr?o=Math.max(1,Math.min(100,Math.round(r.cpu_weight))):t.push(`cpu_weight=${r.cpu_weight} is at or above the fair share of ${Wr}, and Windows CPU rate control is an absolute cap rather than a share, so no rate limit is set`)),{...n!=null?{memory_limit_bytes:n.bytes,memory_budget_name:n.name,memory_budget_declared:n.declared}:{},...o!=null?{cpu_rate_percent:o}:{},kill_on_close:!0,...t.length>0?{note:t.join("; ")}:{}}}function Jv(e){return hn({budget:e})}var rs=5,Fm=19;function Ja(e){return{available:!1,reason:e}}var zv="an address-space rlimit is not a resident-memory ceiling: a runtime that reserves address space it never faults in would die under a limit it never used, so no memory rlimit is set and the daemon's RSS sampling floor is the ceiling that actually holds";function Um(e,r){let t=e??{},n=[],o;if(!r.canRenice)n.push("nice is not on this host, so no priority control was applied and the Worker competes with interactive work");else if(t.cpu_weight==null)o=rs;else if(t.cpu_weight<Wr){let a=Math.round(Fm*(Wr-t.cpu_weight)/Wr);o=Math.min(Fm,Math.max(rs,a))}else o=rs,n.push(`cpu_weight=${t.cpu_weight} is at or above the fair share of ${Wr}, and raising a process's priority requires privilege this daemon does not have, so the Worker keeps the default yield of nice ${rs}`);let s=Wm(t.max_processes);s==null&&t.max_processes!=null&&n.push(`max_processes=${t.max_processes} is not a positive whole number, so no ulimit -u is set`);let i=Wm(t.cpu_seconds);return i==null&&t.cpu_seconds!=null&&n.push(`cpu_seconds=${t.cpu_seconds} is not a positive whole number, so no ulimit -t is set`),{...o!=null?{nice:o}:{},...s!=null?{max_processes:s}:{},...i!=null?{cpu_seconds:i}:{},memory_ceiling:"sampling-floor",memory_ceiling_reason:zv,...n.length>0?{note:n.join("; ")}:{}}}function Bm(e){let{limits:r}=e,t=[];return r.max_processes!=null&&t.push(`ulimit -u ${r.max_processes}`),r.cpu_seconds!=null&&t.push(`ulimit -t ${r.cpu_seconds}`),t.push(r.nice!=null&&e.nice!=null?`exec ${Qv(e.nice)} -n ${r.nice} "$0" "$@"`:'exec "$0" "$@"'),["-c",t.join(`
92
- `),e.command,...e.args]}function Hm(e){let r=[];return e.nice!=null?r.push(`the Worker runs at nice ${e.nice} so it yields to interactive work`):r.push("no priority control was applied"),e.max_processes!=null&&r.push(`its processes are capped at ${e.max_processes}`),e.cpu_seconds!=null&&r.push(`its CPU time is capped at ${e.cpu_seconds} seconds`),`macOS placement applied POSIX limits: ${r.join(", ")}. macOS has no resource-group equivalent, so the Worker is charged to the daemon's own resource group, and ${e.memory_ceiling_reason}`+(e.note!=null?` (${e.note})`:"")}function za(e){let r=e??{},t=[r.max_processes!=null?"max_processes":null,r.cpu_seconds!=null?"cpu_seconds":null].filter(n=>n!=null);return t.length===0?null:`${t.join(" and ")} ${t.length===1?"is a POSIX rlimit":"are POSIX rlimits"} honoured only by the macOS placement backend, so this placement carries no equivalent`}function Wm(e){if(e!=null&&!(!Number.isSafeInteger(e)||e<=0))return e}function Qv(e){return`'${e.replace(/'/g,"'\\''")}'`}var Vm="REDSKILLED_PLACEMENT",ts="red-worker",Qa="/bin/sh";function Km(e=process.env,r=process.platform){let t=Ja(`POSIX rlimit and priority placement is the macOS backend (platform=${r})`);if(r==="win32")return{platform:r,systemdRun:null,userSession:!1,jobObjects:Nm({platform:r}),posix:t};let n=Rt(`Job Object placement is the Windows backend (platform=${r}), so there is no native reach to load here`);if(r==="darwin")return{platform:r,systemdRun:null,userSession:!1,jobObjects:n,posix:Xv(e)};if(r!=="linux")return{platform:r,systemdRun:null,userSession:!1,jobObjects:n,posix:t};let o=(e.XDG_RUNTIME_DIR??"").trim(),s=o!==""&&Xa(qm(o,"systemd","private"));return{platform:r,systemdRun:Ym("systemd-run",e),userSession:s,jobObjects:n,posix:t}}function Xv(e){return Xa(Qa)?{available:!0,shell:Qa,nice:Ym("nice",e)}:Ja(`no POSIX shell was found at ${Qa}, so there is nothing to apply rlimits or priority in`)}function Jm(e=process.env){let r=(e[Vm]??"").trim().toLowerCase();return r===""?!0:!["off","false","0","no"].includes(r)}function Zv(e,r,t=ts){return zm(e,r,t).replace(/\.service$/,"")}function zm(e,r,t=ts){return`${Ya(t,"red-worker",24)}-${Ya(e,"project",32)}-${Ya(r,"worker",32)}.service`}function Qm(e){let r=[...e.args??[]],t={...e.budget??{},...e.budget?.memory_max==null&&e.memoryCeiling?.memory_max!=null?{memory_max:e.memoryCeiling.memory_max}:{}},n=t.memory_max??t.memory_high??null,o=t.memory_high!=null||t.memory_max!=null||t.cpu_weight!=null,s=e.target??{isolation:"transient-unit"},i=u=>({isolated:!1,backend:"none",command:e.command,args:r,cwd:e.workspacePath,warning:u,budget:t,...n!=null?{memoryCeiling:n}:{},environment:Qt({scope:null,memory_ceiling:n,scope_degradation:u}),...o?{budgetWarning:"a budget was declared but this placement cannot enforce it: the daemon's RSS sampling is the only remaining floor"}:{}});if(s.isolation==="inherit")return i("placement target is `inherit`: the Worker is charged to the daemon's own resource group, so a memory-pressure kill can land on the daemon and every Worker it holds");if(e.enabled===!1)return i(`worker isolation disabled by ${Vm}: the Worker is charged to the daemon's own resource group`);if(e.probes.platform==="win32")return rS(e,r,t,n,o,i);if(e.probes.platform==="darwin")return eS(e,r,t,n,i);if(e.probes.platform!=="linux")return i(`transient-unit placement is the Linux backend (platform=${e.probes.platform}): the Worker is charged to the daemon's own resource group`);if(!e.probes.systemdRun)return i("transient-unit placement unavailable: systemd-run is not on PATH; the Worker is charged to the daemon's own resource group and a memory-pressure kill will hit the whole session");if(!e.probes.userSession)return i("transient-unit placement unavailable: no systemd --user session; the Worker is charged to the daemon's own resource group and a memory-pressure kill will hit the whole session");let a=zm(e.projectLabel,e.workerId,s.unit_prefix),l=["--user","--collect","--quiet","--wait",`--unit=${a}`,`--working-directory=${e.workspacePath}`];e.pipeOutput===!0&&l.push("--pipe"),t.memory_high!=null&&l.push(`--property=MemoryHigh=${t.memory_high}`),t.memory_max!=null&&l.push(`--property=MemoryMax=${t.memory_max}`),t.cpu_weight!=null&&l.push(`--property=CPUWeight=${t.cpu_weight}`);let d=Qt({scope:a,memory_ceiling:n,scope_degradation:null});for(let[u,m]of Object.entries({...e.env??{},...d}))l.push(`--setenv=${u}=${m}`);let c=za(e.budget);return{isolated:!0,backend:"transient-unit",unit:a,command:e.probes.systemdRun,args:[...l,"--",e.command,...r],budget:t,...n!=null?{memoryCeiling:n}:{},environment:d,...c!=null?{budgetWarning:c}:{}}}function eS(e,r,t,n,o){let s=e.probes.posix;if(!s.available)return o(`POSIX limit placement unavailable: ${s.reason}. The Worker is charged to the daemon's own resource group and the daemon's RSS sampling floor is the only remaining ceiling`);let i=Um(t,{canRenice:s.nice!=null}),a=t.memory_high!=null||t.memory_max!=null,l=Hm(i);return{isolated:!1,backend:"posix-limits",command:s.shell,args:Bm({limits:i,nice:s.nice,command:e.command,args:r}),cwd:e.workspacePath,posix:i,warning:l,budget:t,...n!=null?{memoryCeiling:n}:{},environment:Qt({scope:null,memory_ceiling:n,scope_degradation:l}),...a?{budgetWarning:"the declared memory budget is enforced by the daemon's RSS sampling floor rather than by the kernel: "+i.memory_ceiling_reason}:{}}}function rS(e,r,t,n,o,s){let i=e.probes.jobObjects;if(!i.available)return s(`Job Object placement unavailable: ${i.reason}. The Worker is charged to the daemon's own resource group and the daemon's RSS sampling floor is the only remaining ceiling`);let a=Mm(t),l=Zv(e.projectLabel,e.workerId,e.target?.unit_prefix);return{isolated:!0,backend:"job-object",command:e.command,args:[...r],cwd:e.workspacePath,job:{name:l,limits:a},budget:t,...n!=null?{memoryCeiling:n}:{},environment:Qt({scope:l,memory_ceiling:n,scope_degradation:null}),...tS(o&&a.note!=null?`${a.note}; the daemon's RSS sampling floor is the ceiling for that budget`:null,za(e.budget))}}function tS(...e){let r=e.filter(t=>t!=null&&t!=="");return r.length>0?{budgetWarning:r.join("; ")}:{}}function Ym(e,r){for(let t of(r.PATH??"").split(Yv)){if(!t)continue;let n=qm(t,e);if(Xa(n))return n}return null}function Ya(e,r,t){return(e||"").toLowerCase().replace(/[^a-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"").slice(0,t).replace(/-+$/g,"")||r}async function Za(e,r){let t=[],n=[];for(let o of e){let s=!1;try{s=await r(o)===!0}catch{s=!1}(s?t:n).push(o)}return{alive:t,dead:n}}var Xm=3e4;function Zm(e){return e.unit!=null&&e.unit!==""?nS(e.unit):re(e.pid)}function nS(e){let r=ns("systemctl",["--user","is-active","--quiet",e],{stdio:"ignore"});return r.error!=null?!1:r.status===0}var oS="REDSKILLED_UNIT_DISCOVERY",eg="(unowned)";function rg(e){let r=ns("systemctl",["--user","show","--property=MainPID","--value",e],{encoding:"utf8"});if(r.error!=null||r.status!==0)return null;let t=Number.parseInt((r.stdout??"").trim(),10);return Number.isInteger(t)&&t>0?t:null}function sS(e=process.env){let r=(e[oS]??"").trim().toLowerCase();return r===""?!0:!["off","false","0","no"].includes(r)}function tg(e,r,t=process.env){return sS(t)&&e===r}function ng(e=ts){let r=ns("systemctl",["--user","list-units","--type=service","--state=active","--plain","--no-legend","--no-pager",`${e}-*.service`],{encoding:"utf8"});return r.error!=null||r.status!==0?[]:(r.stdout??"").split(`
93
- `).map(t=>t.trim().split(/\s+/)[0]??"").filter(t=>t.startsWith(`${e}-`)&&t.endsWith(".service"))}function og(e){let r=new Set(e.held.map(o=>o.unit).filter(o=>o!=null&&o!=="")),t=new Set,n=[];for(let o of e.units)o===""||r.has(o)||t.has(o)||(t.add(o),n.push({worker_id:o.replace(/\.service$/,""),project_label:eg,pid:e.mainPid?.(o)??0,started_at:e.now,workspace_path:"",isolated:!0,unit:o,warnings:[`adopted from active unit ${JSON.stringify(o)}, which has no birth on this host's event lane: its project, its Worker id and its budget belonged to a daemon that is gone, so they are reported as unknown rather than guessed \u2014 it is counted against the host budget from here on instead of running outside it`]}));return n}function sg(e){return e.project_label.trim()!==""?e:{...e,project_label:eg,warnings:[...e.warnings,"adopted at start with no owning project on the event lane: the daemon that birthed it recorded no project label, so it is held and counted under a stated placeholder rather than dropped"]}}function ig(e){if(e.unit!=null&&e.unit!==""){let r=ns("systemctl",["--user","stop",e.unit],{stdio:"ignore"});return r.error==null&&r.status===0}try{return process.kill(e.pid,"SIGTERM"),!0}catch{return!1}}var jn=50,rl=15e3,nG=2*rl;function iS(e,r=jn){if(tl(e),!Number.isInteger(r)||r<=0)throw new Error(`redskilled queue discovery needs a whole, positive batch size, not ${JSON.stringify(r)}`);let t=[];for(let n=0;n<e.length;n+=r)t.push(e.slice(n,n+r));return t}function lg(e,r={}){let t=r.batchSize??jn;if(tl(e),e.length>t)throw new Error(`redskilled queue discovery spans at most ${t} selectors in one query, and this batch holds ${e.length}: split it with planQueueDiscoveryBatches rather than dropping the remainder`);let n=e.map((i,a)=>({alias:`q${a}`,project:i}));return{query:["query RedskilledQueueDiscovery {"," rateLimit { remaining resetAt }",...n.map(({alias:i,project:a})=>` ${i}: search(query: ${JSON.stringify(a.selector)}, type: ISSUE, first: 1) { issueCount }`),"}"].join(`
94
- `),aliases:n}}function dg(e,r){let t=Dn(r),n=Dn(t.data),o=Array.isArray(t.errors)?t.errors.map(Dn):[],s=uS(n.rateLimit,o);return{projects:e.aliases.map(({alias:a,project:l})=>{let d=mS(n[a]);if(d!=null)return{project_label:l.project_label,outcome:"counted",depth:d,detail:`project ${JSON.stringify(l.project_label)} has ${d} item(s) matching its selector`};let c=o.find(u=>pS(u.path,a));return s.exhausted||pg(c)?{project_label:l.project_label,outcome:"rate-limited",depth:null,detail:`the host token's quota was spent before project ${JSON.stringify(l.project_label)} answered, so this queue has no depth rather than a depth of zero`+(s.reset_at==null?"":`; the quota resets at ${s.reset_at}`)}:{project_label:l.project_label,outcome:"unreachable",depth:null,detail:`project ${JSON.stringify(l.project_label)} could not be counted with the host token: ${el(c?.message)||"the query returned no count for this selector"}`}}),rate_limit:s}}function aS(e){return{version:1,fetched_at:e,request_count:0,project_count:0,batch_size:jn,rate_limit:{remaining:null,reset_at:null,exhausted:!1},projects:[]}}function cg(e,r,t){return{version:1,fetched_at:r,request_count:0,project_count:e.length,batch_size:jn,rate_limit:{remaining:null,reset_at:null,exhausted:!1},projects:e.map(n=>({project_label:n.project_label,outcome:"unconfigured",depth:null,detail:`project ${JSON.stringify(n.project_label)} was not counted because this host polls no tracker: ${t}`}))}}async function ug(e){if(e.projects.length===0)return aS(e.now);if(e.transport.conditionalList)return await dS(e);let r=e.batchSize??jn,t=iS(e.projects,r),n=[],o={remaining:null,reset_at:null,exhausted:!1};for(let s of t){let i=lg(s,{batchSize:r});try{let a=await e.transport(i.query),l=dg(i,a);n.push(...l.projects),o=An(o,l.rate_limit)}catch(a){let l=a instanceof Error?a.message:String(a),d=/rate limit|secondary rate|429/i.test(l);o=An(o,{remaining:null,reset_at:null,exhausted:d});for(let c of s)n.push({project_label:c.project_label,outcome:d?"rate-limited":"unreachable",depth:null,detail:`the queue fetch failed before project ${JSON.stringify(c.project_label)} answered: ${l}`})}}return{version:1,fetched_at:e.now,request_count:t.length,project_count:n.length,batch_size:r,rate_limit:o,projects:n}}var lS={key:"redskilled queue poll",budget:"rest"};async function dS(e){tl(e.projects);let r=e.transport.conditionalList,t=[],n={remaining:null,reset_at:null,exhausted:!1},o=0;for(let s of e.projects)try{if(s.poll==null){let l=lg([s],{batchSize:1}),d=dg(l,await e.transport(l.query));o+=1,t.push(...d.projects),n=An(n,d.rate_limit);continue}let i=await r({cacheKey:`queue:${s.project_label}:${JSON.stringify(s.poll)}`,route:"GET /repos/{owner}/{repo}/issues",parameters:{owner:s.poll.owner,repo:s.poll.repo,state:"open",labels:s.poll.labels.join(","),...s.poll.creator==null?{}:{creator:s.poll.creator}},operation:lS});o+=i.requestCount;let a=i.data.filter(l=>!mg(l.pull_request)).length;n=An(n,cS(i.headers)),t.push({project_label:s.project_label,outcome:"counted",depth:a,detail:`project ${JSON.stringify(s.project_label)} has ${a} item(s) matching its selector`})}catch(i){let a=mn(i);n=An(n,{remaining:null,reset_at:null,exhausted:a}),t.push({project_label:s.project_label,outcome:a?"rate-limited":"unreachable",depth:null,detail:`the queue fetch failed before project ${JSON.stringify(s.project_label)} answered: ${i instanceof Error?i.message:String(i)}`})}return{version:1,fetched_at:e.now,request_count:o,project_count:t.length,batch_size:1,rate_limit:n,projects:t}}function tl(e){if(e.length===0)throw new Error("redskilled queue discovery needs at least one registered project");let r=new Set;for(let t of e){if(typeof t.project_label!="string"||t.project_label==="")throw new Error("redskilled queue discovery needs a project label for every registered project");if(typeof t.selector!="string"||t.selector==="")throw new Error(`redskilled queue discovery needs a selector for project ${JSON.stringify(t.project_label)}: a project that names no work has no queue to discover`);if(r.has(t.project_label))throw new Error(`redskilled holds one selector per project, and ${JSON.stringify(t.project_label)} is registered twice`);r.add(t.project_label)}}function An(e,r){return{remaining:r.remaining==null?e.remaining:e.remaining==null?r.remaining:Math.min(e.remaining,r.remaining),reset_at:r.reset_at??e.reset_at,exhausted:e.exhausted||r.exhausted}}function cS(e){let r=ag(e,"x-ratelimit-remaining"),t=ag(e,"x-ratelimit-reset");return{remaining:r,reset_at:t==null?null:new Date(t*1e3).toISOString(),exhausted:r===0}}function ag(e,r){let t=e[r];if(typeof t!="string"&&typeof t!="number")return null;let n=Number(t);return Number.isSafeInteger(n)&&n>=0?n:null}function uS(e,r){let t=Dn(e),n=typeof t.remaining=="number"&&Number.isFinite(t.remaining)?t.remaining:null,o=typeof t.resetAt=="string"?t.resetAt:null;return{remaining:n,reset_at:o,exhausted:r.some(pg)||n===0}}function pg(e){return e==null?!1:el(e.type)==="RATE_LIMITED"||/rate limit/i.test(el(e.message))}function pS(e,r){return Array.isArray(e)&&e.includes(r)}function mS(e){let r=Dn(e);return Number.isInteger(r.issueCount)?r.issueCount:null}function Dn(e){return mg(e)?e:{}}function mg(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function el(e){return typeof e=="string"?e:""}function gg(e,r,t){let n=e?.rate_limit;if(n==null)return r;if(n.exhausted){let s=n.reset_at==null?Number.NaN:Date.parse(n.reset_at),i=Number.isFinite(s)?s-t+1e3:r*4;return Math.min(gS,Math.max(r,i))}let o=n.remaining;return o==null?r:o<=fS?Math.max(r,3e4):o<=hS?Math.max(r,2e4):r}var gS=1e5,fS=250,hS=1e3;var yS={runner:null,model:null,effort:null,origin:null,issue:null,phase:null,step:null,phase_index:null,phase_total:null,failed:!1,heartbeat:null,wait_kind:null,wait_subject:null,wait_pid:null,wait_started_at:null,wait_deadline:null,wait_escalation:null,started_at:null,context:null,eta:null,added:null,removed:null,tokens:null,tools:null,reasoning:null,text:null},kS=["runner","model","effort","origin","issue","phase","step","heartbeat","wait_kind","wait_subject","wait_started_at","wait_deadline","wait_escalation","started_at"],bS=["phase_index","phase_total","wait_pid","context","eta","added","removed","tokens","tools","reasoning","text"];function fg(e){if(e===null||typeof e!="object"||Array.isArray(e))return null;let r=e,t={...yS};for(let n of kS){let o=r[n];t[n]=typeof o=="string"&&o.trim()!==""?o:null}for(let n of bS){let o=r[n];t[n]=typeof o=="number"&&Number.isFinite(o)?o:null}return t.failed=r.failed===!0,t}import{randomInt as ES}from"node:crypto";import{spawn as vS}from"node:child_process";import{appendFileSync as SS,mkdirSync as TS}from"node:fs";import{dirname as xS}from"node:path";import{delimiter as hg,dirname as _S}from"node:path";function RS(e,r=hg){return(e??"").split(r).map(t=>t.trim()).filter(t=>t!=="")}function wS(e=process.execPath){let r=(e??"").trim();if(r==="")return null;let t=_S(r);return t===""||t==="."?null:t}function yg(e,r=process.execPath,t=hg){let n=RS(e,t),o=wS(r);return o==null?n.join(t):[o,...n.filter(s=>s!==o)].join(t)}var wt=class extends Error{constructor(r){super(r),this.name="RedskilledWorkerSpecError"}},ze=class extends Error{constructor(t,n){super(t);this.admission=n;this.name="RedskilledAdmissionError"}},nl="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",kg=4,PS=nl.length**kg;function sl(e,r=ES){let t=new Set(e);for(let n=0;n<PS;n+=1){let o="h";for(let s=0;s<kg;s+=1)o+=nl[r(nl.length)];if(!t.has(o))return o}throw new wt("redskilled exhausted the host Worker id space")}function OS(e){if(e==null||e.trim()==="")return{ready:!1};let r=xS(e);try{return TS(r,{recursive:!0}),{ready:!0}}catch(t){let n=t?.code;return{ready:!1,warning:`redskilled could not create the log directory ${JSON.stringify(r)} for ${JSON.stringify(e)}${n==null?"":` (${n})`}: ${ol(t)}. This Worker runs with NO log at all, so nothing but its heartbeat can show what it did`}}}function AS(e,r){let t=(n,o)=>{if(n==null)return;let s="",i=a=>{try{SS(r,ye().push({at:new Date().toISOString(),kind:o,msg:a}),"utf8")}catch{}};n.on("data",a=>{s+=String(a);let l=s.split(`
95
- `);s=l.pop()??"";for(let d of l)i(d)}),n.on("end",()=>{s!==""&&i(s)})};t(e.stdout,"worker.stdout"),t(e.stderr,"worker.stderr")}function DS(e){let r=[["project_label",e.project_label],["workspace_path",e.workspace_path],["command",e.command]];for(let[t,n]of r)if(typeof n!="string"||n.trim()==="")throw new wt(`redskilled worker spec is missing ${t}`);if(e.args!=null&&!Array.isArray(e.args))throw new wt("redskilled worker spec args must be an array")}function jS(e){if(e==null)throw new ze("redskilled refused this Worker: no host admission verdict was handed over, and an unjudged birth is an unbudgeted one");if(!e.admitted)throw new ze(e.reason,e)}function bg(e){let{spec:r,admission:t}=e;jS(t),DS(r);let n=e.env??process.env,o=e.clock??(()=>new Date().toISOString()),s=(r.worker_id??e.workerId)?.trim()||sl(e.liveWorkerIds??[]),i=e.probes??Km(n),a=Du(r.log_path,{worker_id:s,workspace_path:r.workspace_path}),l=e.openLog===!1?{ready:!1}:OS(a),d=l.ready,c={...r.env??{},...e.forkSha==null||e.forkSha===""?{}:{RED_AFK_FORK_SHA:e.forkSha},PATH:yg(r.env?.PATH??n.PATH,e.execPath??process.execPath)},u=Qm({workerId:s,projectLabel:r.project_label,workspacePath:r.workspace_path,command:r.command,args:r.args,budget:r.budget,...e.memoryCeiling!=null?{memoryCeiling:e.memoryCeiling}:{},target:r.placement,env:c,enabled:e.enabled??Jm(n),probes:i,pipeOutput:d}),f=(e.spawnFn??vS)(u.command,u.args,{...u.cwd!=null?{cwd:u.cwd}:{},detached:!0,stdio:d?["ignore","pipe","pipe"]:"ignore",env:u.backend==="transient-unit"?{...n}:{...n,...c,...u.environment}});if(d&&a!=null&&AS(f,a),f.pid==null)throw f.once("error",()=>{}),new wt(`redskilled could not spawn ${JSON.stringify(u.command)} for worker ${s}`);let h=u.job!=null?LS(u,i,f.pid):null;f.once("error",()=>{}),f.once("exit",(I,F)=>{try{h?.job?.close()}catch{}e.onExit?.(s,I,F)}),f.unref();let v=u.job!=null?h?.job!=null:u.isolated,k=[u.warning,h?.warning,u.budgetWarning,l.warning].filter(I=>I!=null);return{worker:{worker_id:s,project_label:r.project_label,pid:f.pid,started_at:o(),workspace_path:r.workspace_path,...d&&a!=null?{log_path:a}:{},isolated:v,...u.unit!=null?{unit:u.unit}:{},...r.budget!=null?{budget:r.budget}:{},...Object.keys(u.budget).length>0?{applied_budget:u.budget}:{},...u.memoryCeiling!=null?{memory_ceiling:u.memoryCeiling,memory_ceiling_reason:e.memoryCeiling?.reason??"this Worker's ceiling is the budget its client declared"}:{},warnings:k},admission:t,...e.forkSha==null||e.forkSha===""?{}:{fork_sha:e.forkSha},warnings:k,plan:u,child:f,...h?.job!=null?{job:h.job}:{}}}function LS(e,r,t){let n=e.job;if(n==null)return{};let o="the Worker is charged to the daemon's own resource group and the daemon's RSS sampling floor is the only remaining ceiling";if(!r.jobObjects.available)return{warning:`Job Object placement unavailable: ${r.jobObjects.reason}. ${o}`};let s;try{s=r.jobObjects.binding.createJobObject({name:n.name,limits:n.limits})}catch(i){return{warning:`Job Object ${JSON.stringify(n.name)} could not be created: ${ol(i)}. ${o}`}}try{s.assign(t)}catch(i){try{s.close()}catch{}return{warning:`Worker pid ${t} could not be assigned to Job Object ${JSON.stringify(n.name)}: ${ol(i)}. ${o}`}}return{job:s}}function ol(e){return e instanceof Error?e.message:String(e)}import{execFile as GS}from"node:child_process";var IS="refs/heads/red-trunk";function os(e,r){return new Promise((t,n)=>{GS("git",[...r],{cwd:e},(o,s,i)=>{if(o!=null){n(new Error(i.trim()||o.message));return}t(s.trim())})})}async function _g(e){await os(e.workspace_path,["fetch",e.trunk.remote,e.trunk.branch]);let r=await os(e.workspace_path,["rev-parse","--verify","FETCH_HEAD^{commit}"]);if(r==="")throw new Error("the fetched trunk did not resolve to a commit");return await os(e.workspace_path,["update-ref",IS,r]),r}async function Rg(e){let r=await os(e.workspace_path,["rev-list","--count",`${e.fork_sha}..${e.head_sha}`]),t=Number(r);if(!Number.isInteger(t)||t<0)throw new Error(`git returned an invalid base movement count: ${r}`);return t}import{open as $S,stat as CS}from"node:fs/promises";var NS=16*1024;async function wg(e,r=NS){let t;try{t=(await CS(e)).size}catch{return null}if(t<=0)return null;let n=Math.min(r,t),o;try{let s=await $S(e,"r");try{let i=Buffer.alloc(n);await s.read(i,0,n,t-n),o=i.toString("utf8")}finally{await s.close()}}catch{return null}return MS(o)}function MS(e){let r=e.split(`
96
- `);for(let t=r.length-1;t>=0;t-=1){let n=r[t].replace(/\r$/,"");if(n.trim()!=="")return n}return null}import{spawn as eT}from"node:child_process";import{existsSync as rT,readdirSync as tT}from"node:fs";import{dirname as nT,join as Pg,resolve as oT}from"node:path";var FS="<version>";function Rr(e,r=[],t){let n=t&&t.trim().length>0?t.trim():FS;return[`npx -y -p ${Ir}@${n}`,e,...r].join(" ")}function Ie(e){let r=/^(\d+)\.(\d+)\.(\d+)/.exec(String(e).trim());return r?{major:Number(r[1]),minor:Number(r[2]),patch:Number(r[3])}:null}function il(e,r){let t=Ie(e),n=Ie(r);return!t||!n?0:t.major-n.major||t.minor-n.minor||t.patch-n.patch}var TG=4*60*60*1e3;tr();tr();import{spawnSync as WS}from"node:child_process";import{mkdir as US,rm as BS,writeFile as HS}from"node:fs/promises";import{existsSync as qS}from"node:fs";import{homedir as VS}from"node:os";import{dirname as KS,join as al}from"node:path";var wr="redskilled.service",ll="REDSKILLED_SUPERVISED",JS="https://github.com/reddb-io/red-skills/blob/main/.red/adr/0130-redskilled-host-scoped-execution-daemon.md";function zS(e=process.env){let r=e.XDG_CONFIG_HOME?.trim()||al(e.HOME?.trim()||VS(),".config");return al(r,"systemd","user")}function dl(e=process.env){return al(zS(e),wr)}function Eg(e,r={}){let t=r.env??process.env,n=vo(r.override??{},r.entryLookup??{}),o=[...n.args,...Lr(e,r.idleMs==null?{}:{idleMs:r.idleMs})];return{unitName:wr,unitPath:dl(t),command:n.command,args:o,text:QS(n.command,o,e)}}function QS(e,r,t){return["[Unit]","Description=redskilled \u2014 the host-scoped execution daemon (ADR 0130)",`Documentation=${JS}`,"","[Service]","Type=simple",`ExecStart=${[e,...r].map(YS).join(" ")}`,"Restart=always","RestartSec=1",`Environment="${ll}=1"`,`Environment="REDSKILLED_SESSION=${vg(t.sessionKey)}"`,"","[Install]","WantedBy=default.target",""].join(`
97
- `)}function YS(e){return/[\s"'\\$%]/.test(e)?`"${vg(e)}"`:e}function vg(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/%/g,"%%")}async function Sg(e,r={}){let t=r.writeFile??XS,n=r.run??cl,o=[];return await t(e.unitPath,e.text),o.push({step:"write-unit",ok:!0,detail:e.unitPath}),o.push(ss("daemon-reload",n,["systemctl","--user","daemon-reload"])),o.push(ss("enable",n,["systemctl","--user","enable","--now",e.unitName])),{unitPath:e.unitPath,installed:o.every(s=>s.ok),steps:o}}async function Tg(e={}){let r=e.removeFile??ZS,t=e.run??cl,n=dl(e.env??process.env),o=[ss("disable",t,["systemctl","--user","disable","--now",wr])];return await r(n),o.push({step:"remove-unit",ok:!0,detail:n}),o.push(ss("daemon-reload",t,["systemctl","--user","daemon-reload"])),{unitPath:n,installed:!1,steps:o}}function xg(e={}){let r=e.exists??qS,t=e.run??cl,n=dl(e.env??process.env),o=r(n),s=o&&t(["systemctl","--user","is-enabled",wr]).status===0,i=o&&t(["systemctl","--user","is-active",wr]).status===0,a=s&&!i?[{code:"enabled-but-inactive",evidence:`${wr} is installed and enabled but inactive`,fix:`systemctl --user restart ${wr}`}]:[];return{unitName:wr,unitPath:n,installed:o,enabled:s,active:i,findings:a,floor:"auto-spawn"}}function ss(e,r,t){let n=r(t),o=(n.stderr??n.stdout??"").trim();return{step:e,argv:t,ok:n.status===0,...o?{detail:o}:{}}}async function XS(e,r){await US(KS(e),{recursive:!0}),await HS(e,r,{encoding:"utf8",mode:420})}async function ZS(e){await BS(e,{force:!0})}function cl(e){let r=WS(e[0],[...e.slice(1)],{encoding:"utf8"});return r.error!=null?{status:null,stderr:r.error.message}:{status:r.status,stdout:r.stdout??"",stderr:r.stderr??""}}var Og=75,Dg=9e5,Ag="redskilled-replacement-entry-unresolved",sT="REDSKILLED_NO_REGISTRY_PROBE",jg="REDSKILLED_BORN_BY_REPLACEMENT";function Lg(e=process.env){return e[jg]==="1"}function Gg(e){return e===null||typeof e=="string"?{version:e,newest:null}:{version:e.version,newest:e.newest??null}}function Ig(e){let r=e.running.trim();if(Ln(r))return null;let t=e.newest?.trim()??"",n=Ie(t),o=Ie(r);return n===null||o===null||n.major<=o.major?null:{version:t,running_major:o.major,held_major:n.major,reason:`redskilled ${t} is published and this daemon runs ${r}; a major version is deliberately never adopted by the background check, because a breaking change must not arrive on a machine that is holding Workers`,action:iT(n.major,e.supervised)}}function iT(e,r){let t=`install the ${e}.x bundle (update this machine's plugin pin), then `;return r?`${t}re-point the unit and restart it: ${Rr("red-skills-redskilled",["unit","install"])} && systemctl --user restart redskilled.service`:`${t}stop this daemon \u2014 the next client start resolves the newly installed bundle`}function $g(e){let r=e.running.trim();if(Ln(r))return{act:"hold",reason:"local-build"};let t=e.published?.trim()??"";return!t||Ie(t)===null?{act:"hold",reason:"published-unknown"}:il(t,r)<=0?{act:"hold",reason:"no-newer-version"}:{act:"replace",to:t,via:e.supervised?"supervisor-exit":"self-spawn"}}function Ln(e){let r=e.trim();return Ie(r)===null?!0:/^\d+\.\d+\.\d+[-+]/.test(r)}function Cg(e=process.env){return e[ll]==="1"}var ul=class extends Error{code=Ag;searched;constructor(r,t){super(`${Ag}: the published redskilled bundle ${r} exists on no reachable path and the version-pinned dispatch is disabled
85
+ `),aliases:r}}function gb(e,t){let r=t!==null&&typeof t=="object"?t:{},n=r.data??r,o=n!==null&&typeof n=="object"?n:{};return Object.entries(e.aliases).map(([s,i])=>{let a=o[s];if(a===null||typeof a!="object")return{read:i,value:null};let l=a.object;return{read:i,value:l!==null&&typeof l=="object"&&!Array.isArray(l)?l:null}})}var wA=pb.plugin(sc,ca);function hb(){let e=new Map;return{get:t=>e.get(t),set:(t,r)=>e.set(t,r)}}function mb(e){if(e?.outcome!=="asked")return Number.POSITIVE_INFINITY;let t=e.pools.rest,r=e.pools.graphql;return t===null||r===null||r.remaining<=0||r.fraction<=0?Number.POSITIVE_INFINITY:t.remaining<=0||t.fraction<=0?1:!Number.isFinite(t.fraction)||!Number.isFinite(r.fraction)?Number.POSITIVE_INFINITY:Math.max(1,Math.ceil(t.fraction/r.fraction))}var So=class extends Error{status=401;constructor(t){super("GitHub rejected the host credential; refresh the stored login with `gh auth login` or provide a current host token",t),this.name="GithubCredentialError"}};function Sc(e){let t=e.etags??hb(),r=new wA({auth:e.token,log:{debug:()=>{},info:()=>{},warn:()=>{},error:()=>{}},...e.baseUrl?{baseUrl:e.baseUrl}:{},...e.fetchImpl?{request:{fetch:e.fetchImpl}}:{},retry:{doNotRetry:[304,403,429],...e.retryCount===void 0?{}:{retries:e.retryCount}},throttle:e.throttle===!1?{enabled:!1}:{onRateLimit:()=>!1,onSecondaryRateLimit:()=>!1}}),n=async c=>{let u=t.get(c.cacheKey),p={...c.parameters??{}},g=ln(p.headers)?p.headers:{};p.headers={...g,...u?{"if-none-match":u.etag}:{}};try{let f=await r.request(c.route,p),k=f.headers,b=ma(k,"etag");return b!==void 0&&t.set(c.cacheKey,{etag:b,data:f.data,headers:k}),await e.attribution?.record({operation:c.operation,cost:1,actor:c.actor}),{data:f.data,headers:k,quotaFree:!1}}catch(f){if(Ts(f)===304){if(u===void 0)throw new Error(`GitHub returned 304 for ${JSON.stringify(c.cacheKey)} without a held answer to reuse`,{cause:f});let k=bb(f),b={...u.headers,...k},v=ma(b,"etag")??u.etag;return t.set(c.cacheKey,{etag:v,data:u.data,headers:b}),await e.attribution?.record({operation:c.operation,cost:0,actor:c.actor}),{data:u.data,headers:b,quotaFree:!0}}throw Ts(f)===401?new So({cause:f}):f}},o=new Map,s=!1,i=async c=>{let u=c.input,p=u.kind==="pr";try{let g=await n({cacheKey:u.cacheKey,route:p?"GET /repos/{owner}/{repo}/pulls/{pull_number}":"GET /repos/{owner}/{repo}/issues/{issue_number}",parameters:{owner:u.owner,repo:u.repo,...p?{pull_number:u.number}:{issue_number:u.number}},operation:u.operation,actor:u.actor});c.resolve({data:u.project?u.project(g.data,"rest"):g.data,surface:"rest",quotaFree:g.quotaFree})}catch(g){c.reject(g)}},a=async c=>{try{let u=fb(c.map(({input:b})=>b)),p=await r.graphql(u.query),g=gb(u,p),f=_A(p),k=c[0].input;await e.attribution?.record({operation:{key:k.operation.key,budget:"graphql"},cost:f,actor:xA(c.map(({input:b})=>b.actor))}),g.forEach((b,v)=>{let T=c[v];b.value===null?T.reject(new Error(`GitHub returned no ${b.read.kind} #${b.read.number} from the coalesced query`)):T.resolve({data:T.input.project?T.input.project(b.value,"graphql"):b.value,surface:"graphql",quotaFree:!1})})}catch(u){let p=Ts(u)===401?new So({cause:u}):u;c.forEach(g=>g.reject(p))}},l=async()=>{let c=null;try{c=await e.balance?.()??null}catch{}let u=mb(c);s=!1;let p=[...o.values()];o.clear(),await Promise.all(p.map(async g=>{g.length>u?await a(g):await Promise.all(g.map(i))}))};return{conditionalRest:n,singleObject:c=>t.get(c.cacheKey)!==void 0?new Promise((u,p)=>{i({input:c,resolve:u,reject:p})}):new Promise((u,p)=>{let g=o.get(c.kind)??[];g.push({input:c,resolve:u,reject:p}),o.set(c.kind,g),s||(s=!0,setTimeout(()=>void l(),0))}),async conditionalPaginate(c){let u=[],p={},g=0,f=!0,k=1;for(;;){let b=await n({...c,cacheKey:`${c.cacheKey}:page:${k}`,parameters:{...c.parameters??{},per_page:100,page:k}});if(g+=1,f=f&&b.quotaFree,!Array.isArray(b.data))throw new Error(`GitHub returned a non-list body for ${JSON.stringify(c.cacheKey)} page ${k}`);if(u.push(...b.data),p=b.headers,!RA(b.headers))break;k+=1}return{data:u,headers:p,requestCount:g,quotaFree:f}},async graphql(c,u={},p){try{let g=await r.graphql(c,u);return p&&await e.attribution?.record({operation:p.operation,cost:1,actor:p.actor}),g}catch(g){throw Ts(g)===401?new So({cause:g}):g}}}}function RA(e){let t=ma(e,"link");return t!==void 0&&/(?:^|,)\s*<[^>]+>;\s*rel="next"(?:\s*;|\s*(?:,|$))/i.test(t)}function Ps(e){let t=Ts(e),r=bb(e);return t===429||t===403&&ma(r,"x-ratelimit-remaining")==="0"||e instanceof Error&&/secondary rate|rate limit/i.test(e.message)}function Ts(e){if(ln(e))return typeof e.status=="number"?e.status:void 0}function bb(e){return!ln(e)||!ln(e.response)||!ln(e.response.headers)?{}:e.response.headers}function ma(e,t){let r=e[t]??e[t.toLowerCase()];return typeof r=="string"?r:typeof r=="number"?String(r):void 0}function ln(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function _A(e){let t=ln(e)?e:{},r=ln(t.data)?t.data:t,o=(ln(r.rateLimit)?r.rateLimit:{}).cost;if(!Number.isSafeInteger(o)||o<0)throw new Error("GitHub aliased query did not return a non-negative integer rateLimit.cost");return o}function xA(e){let t=[...new Set(e.filter(r=>r!==void 0))].sort();if(t.length!==0)return t.length===1?t[0]:`coalesced:${t.join("+")}`}var kb="rate_limit",wb={rest:"core",graphql:"graphql",search:"search"},qr=["rest","graphql","search"];function wa(e,t){return{version:1,origin:"asked",outcome:"unanswered",source:"GET /rate_limit",asked_at:e,request_count:0,pools:{rest:null,graphql:null,search:null},unreported_pools:[...qr],detail:t??"no balance has been asked for yet, so none is known"}}var Pc=15e3,To=.15,ya=[{at_or_below_fraction:0,every_ms:Pc,why:"spent: the only event that still matters is the reset, so watch for it"},{at_or_below_fraction:To,every_ms:3e4,why:"inside the reserved band: the posture can change between two calls"},{at_or_below_fraction:.5,every_ms:12e4,why:"below half: tightening, because the band is now reachable inside one window"},{at_or_below_fraction:1,every_ms:6e5,why:"above half: rare, because nothing this balance decides is anywhere close"}];var DN=60*6e4,Tc=2;function Rb(e,t){let r=yb(e),n=yb(r.resources),o={rest:null,graphql:null,search:null},s=[];for(let a of qr){let l=wb[a],d=n[l],c=SA(a,l,d);o[a]=c,c==null&&s.push(a)}let i=qr.length-s.length;return{version:1,origin:"asked",outcome:i>0?"asked":"unanswered",source:"GET /rate_limit",asked_at:t.askedAt,request_count:1,pools:o,unreported_pools:s,detail:i>0?`the token's own answer for ${i} of ${qr.length} pools`:"the answer carried no pool this repo budgets, so nothing about the token is known"}}async function Ac(e){try{let t=await e.transport();return Rb(t,{askedAt:e.now})}catch(t){let r=t instanceof Error?t.message:String(t);return{...wa(e.now,`the balance ask failed before the token answered: ${r}`),request_count:1}}}function Cc(e){let t=null;for(let r of qr){let n=e.pools[r];n!=null&&(t==null||n.fraction<t.fraction)&&(t=n)}return t}function Ra(e,t){let r=Cc(e);if(r==null)return ka(To).every_ms;let n=ka(r.fraction);if(r.remaining>0)return n.every_ms;let o=xb(t.now,r.reset_at);return o==null?n.every_ms:Math.max(Pc,Math.min(n.every_ms,o))}function Oc(e,t=To){return Math.ceil(e.limit*t)}function _b(e,t,r=To){let n=e.pools[t];return n==null?"unknown":n.remaining<=0?"spent":n.remaining<Oc(n,r)?"reserved":"open"}function Dc(e){let t=e.reservedFraction??To,r=e.balance;if(r==null)return{version:1,origin:"asked",outcome:"unanswered",asked_at:null,age_ms:null,threshold_ms:ka(t).every_ms*Tc,stale:!1,posture:"unknown",reserved_fraction:t,next_poll_ms:ka(t).every_ms,pools:[],unreported_pools:[...qr],reason:"this daemon has asked for no balance, so the token's budget is unknown rather than full"};let n=Ra(r,{now:e.now}),o=e.stalenessMs??n*Tc,s=xb(r.asked_at,e.now),i=r.outcome==="asked"&&(s==null||s>o),a=qr.map(c=>r.pools[c]).filter(c=>c!=null),l=vA(r,t),d=Cc(r);return{version:1,origin:"asked",outcome:r.outcome,asked_at:r.asked_at,age_ms:s,threshold_ms:o,stale:i,posture:l,reserved_fraction:t,next_poll_ms:n,pools:a,unreported_pools:r.unreported_pools,reason:i?`this balance is stale: asked ${s==null?"at an unreadable instant":`${s}ms ago`}, past the ${o}ms window, so the posture below is the last one the token confirmed and not the current one`:EA(l,d,r,t)}}function Fc(e){if(!Mc(e))return!1;let t=e;return t.version===1&&t.origin==="asked"&&(t.outcome==="asked"||t.outcome==="unanswered")&&(t.asked_at===null||typeof t.asked_at=="string")&&(t.age_ms===null||typeof t.age_ms=="number")&&typeof t.threshold_ms=="number"&&typeof t.stale=="boolean"&&typeof t.posture=="string"&&typeof t.reserved_fraction=="number"&&typeof t.next_poll_ms=="number"&&Array.isArray(t.pools)&&Array.isArray(t.unreported_pools)&&typeof t.reason=="string"}function EA(e,t,r,n){if(t==null)return r.detail;let o=Oc(t,n);switch(e){case"spent":return`the ${t.pool} pool is spent and resets at ${t.reset_at}: work is not queued, it is refused`;case"reserved":return`the ${t.pool} pool has ${t.remaining} of ${t.limit} left, inside the reserved band of ${o}: convenience reads are refused and the claim, a landing and a closing comment still pass`;default:return`the ${t.pool} pool is the tightest at ${t.remaining} of ${t.limit}, above the reserved band of ${o}`}}function vA(e,t){let r="unknown";for(let n of qr){if(e.pools[n]==null)continue;let o=_b(e,n,t);if(o==="spent")return"spent";(o==="reserved"||r==="unknown")&&(r=o)}return r}function ka(e){for(let t of ya)if(e<=t.at_or_below_fraction)return t;return ya[ya.length-1]}function SA(e,t,r){if(!Mc(r))return null;let n=ba(r.limit),o=ba(r.remaining),s=ba(r.used),i=ba(r.reset);return n==null||n<=0||o==null?null:{pool:e,resource:t,limit:n,remaining:o,used:s??0,reset_at:i==null?"":new Date(i*1e3).toISOString(),fraction:o/n}}function Ic(e){let t=e.origin??"https://api.github.com",r=e.fetchImpl??fetch;return async()=>{let n=await r(`${t}/${kb}`,{method:"GET",headers:{authorization:`bearer ${e.token}`,accept:"application/vnd.github+json"}});if(!n.ok)throw new Error(`the balance ask was refused with HTTP ${n.status}`);return await n.json()}}function xb(e,t){let r=Date.parse(e),n=Date.parse(t);return!Number.isFinite(r)||!Number.isFinite(n)?null:Math.max(0,n-r)}function ba(e){return typeof e=="number"&&Number.isFinite(e)?Math.trunc(e):null}function yb(e){return Mc(e)?e:{}}function Mc(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}import{execFileSync as TA}from"node:child_process";import{existsSync as PA,readFileSync as _a,readdirSync as AA}from"node:fs";import{dirname as CA,join as $n}from"node:path";function As(e){let t=ws(e),r=[["MemoryMax",t.memory_max],["MemoryHigh",t.memory_high]];for(let[n,o]of r){if(o==null)continue;let s=xo(o);return s==null?null:{name:n,declared:o,bytes:s}}return null}function Eb(e){let t=[],r=[];for(let n of e.workers){let o=As(n);if(o==null){r.push({worker_id:n.worker_id,reason:(ws(n).memory_max??ws(n).memory_high)==null?"this Worker declared no memory budget and the host derived no ceiling for it, so the sampler has none to enforce":"this Worker's declared memory budget cannot be reduced to bytes, so the sampler has no ceiling to enforce"});continue}let s=e.rss[n.worker_id];if(typeof s!="number"||!Number.isFinite(s)){r.push({worker_id:n.worker_id,reason:"the host produced no RSS reading for this Worker on this tick, and an unmeasured Worker is never killed on suspicion"});continue}if(!(s<=o.bytes)){if(e.sources?.[n.worker_id]==="cgroup"&&o.name==="MemoryMax"){r.push({worker_id:n.worker_id,reason:`this Worker's ${o.name} of ${o.declared} is held by the kernel on its own cgroup, and the reading is memory.current \u2014 which counts reclaimable page cache the kernel drops before it kills anything, so the daemon does not duplicate an enforcement that can tell cache from anonymous memory`});continue}t.push(OA(n,o,s))}}return{terminations:t,unenforceable:r}}function OA(e,t,r){let n=`Worker ${JSON.stringify(e.worker_id)} of project ${JSON.stringify(e.project_label)}`;return{version:1,worker_id:e.worker_id,project_label:e.project_label,outcome:"terminated-over-memory-budget",classification:"budget-exceeded",stall:!1,budget_name:t.name,budget_declared:t.declared,budget_bytes:t.bytes,observed_rss_bytes:r,workspace_path:e.workspace_path,reason:`redskilled terminated ${n}: its tree RSS of ${r} bytes exceeded its ${t.name} budget of ${t.declared} (${t.bytes} bytes). This is a budget termination, not a stall, and the work in ${JSON.stringify(e.workspace_path)} is handed forward.`}}var DA=4096;function vb(e,t={}){let r=t.platform??process.platform,n={rss:{},cpu_seconds:{},sources:{}};if(e.length===0)return n;let o={},s={},i={},a=IA(e,r,t);for(let[u,p]of a){let g=jA(p);g!=null&&(o[u]=g.memoryBytes,g.cpuSeconds!=null&&(s[u]=g.cpuSeconds),i[u]="cgroup")}let l=e.filter(u=>i[u.worker_id]==null);if(l.length===0)return{rss:o,cpu_seconds:s,sources:i};let d=GA(r,t);if(d.size===0)return{rss:o,cpu_seconds:s,sources:i};let c=new Map;for(let u of d.values()){let p=c.get(u.ppid);p?p.push(u.pid):c.set(u.ppid,[u.pid])}for(let u of l){if(!d.has(u.pid))continue;let p=0,g=0,f=[u.pid],k=new Set;for(;f.length>0;){let b=f.pop();if(k.has(b))continue;k.add(b);let v=d.get(b);if(v){p+=v.rssBytes,g+=v.cpuSeconds;for(let T of c.get(b)??[])f.push(T)}}o[u.worker_id]=p,s[u.worker_id]=g,i[u.worker_id]="process-tree"}return{rss:o,cpu_seconds:s,sources:i}}var FA="/sys/fs/cgroup";function IA(e,t,r){let n=new Map;if(!(r.cgroupRoot!=null)&&t!=="linux")return n;let s=r.cgroupRoot??FA,i=e.filter(l=>l.unit!=null&&l.unit!=="");if(i.length===0)return n;let a=MA(s,r);for(let l of i)for(let d of a){let c=$n(d,l.unit);if(PA($n(c,"memory.current"))){n.set(l.worker_id,c);break}}return n}function MA(e,t){let r=t.selfCgroupPath??LA(),n=[],o=a=>{n.includes(a)||n.push(a)},s=r;for(;s!=null&&s!==""&&s!=="/"&&s!==".";){o($n(e,s));let a=CA(s);if(a===s)break;s=a}o(e);let i=t.uid??process.getuid?.();return i!=null&&o($n(e,"user.slice",`user-${i}.slice`,`user@${i}.service`,"app.slice")),n}function LA(){try{for(let e of _a("/proc/self/cgroup","utf8").split(`
86
+ `))if(e.startsWith("0::"))return e.slice(3).trim()}catch{}return null}function jA(e){let t;try{t=_a($n(e,"memory.current"),"utf8")}catch{return null}let r=Number(t.trim());return!Number.isFinite(r)||r<0?null:{memoryBytes:r,cpuSeconds:BA(e)}}function BA(e){let t;try{t=_a($n(e,"cpu.stat"),"utf8")}catch{return null}return $A(t)}function $A(e){for(let t of e.split(`
87
+ `)){let[r,n]=t.trim().split(/\s+/);if(r!=="usage_usec")continue;let o=Number(n);return!Number.isFinite(o)||o<0?null:o/1e6}return null}function GA(e,t){return t.procRoot!=null||e==="linux"?KA(t.procRoot??"/proc"):t.psTable!=null||e==="darwin"?UA(NA(t.psTable)):new Map}function NA(e){try{return(e??WA)()}catch{return""}}function WA(){return TA("ps",["-axo","pid=,ppid=,rss=,time="],{encoding:"utf8",maxBuffer:16*1024*1024})}var HA=1024;function UA(e){let t=new Map;for(let r of e.split(`
88
+ `)){let n=r.trim().split(/\s+/);if(n.length!==4)continue;let[o,s,i]=n.slice(0,3).map(Number);if(![o,s,i].every(l=>l!=null&&Number.isSafeInteger(l)&&l>=0))continue;let a=qA(n[3]);a!=null&&t.set(o,{pid:o,ppid:s,rssBytes:i*HA,cpuSeconds:a})}return t}function qA(e){let t=e.indexOf("-"),r=t<0?0:Number(e.slice(0,t));if(!Number.isFinite(r)||r<0)return null;let n=e.slice(t+1).split(":"),o=r*86400,s=1;for(let i=n.length-1;i>=0;i--){let a=Number(n[i]);if(!Number.isFinite(a)||a<0||n[i]==="")return null;o+=a*s,s*=60}return o}function KA(e){let t=new Map,r;try{r=AA(e)}catch{return t}for(let n of r){if(!/^\d+$/.test(n))continue;let o;try{o=_a($n(e,n,"stat"),"utf8")}catch{continue}let s=zA(o);s&&t.set(s.pid,{pid:s.pid,ppid:s.ppid,rssBytes:s.rssPages*DA,cpuSeconds:s.cpuTicks/VA})}return t}var VA=100;function zA(e){let t=e.lastIndexOf(")");if(t<0)return null;let r=Number(e.slice(0,e.indexOf(" "))),n=e.slice(t+1).trim().split(/\s+/),o=Number(n[1]),s=Number(n[11]),i=Number(n[12]),a=Number(n[21]);return!Number.isSafeInteger(r)||!Number.isSafeInteger(o)||!Number.isFinite(a)||!Number.isFinite(s)||!Number.isFinite(i)?null:{pid:r,ppid:o,rssPages:Math.max(0,a),cpuTicks:Math.max(0,s)+Math.max(0,i)}}var JA=["api","graphql"],d5=ec(JA);var Sb=100,jc=6e4,YA=2*jc,QA=7*24*60*60*1e3,Lc=class extends Error{constructor(r,n,o){super(`redskilled polls every repository with one host token ${JSON.stringify(o)}, and project ${JSON.stringify(r)} declares its own credential ${JSON.stringify(n)}: a project needing its own credential invalidates the host-scoped poller (ADR 0130 Amendment 1) rather than bending it, so the poller returns to the projects instead of reaching this repository under the wrong identity`);this.projectLabel=r;this.tokenRef=n;this.hostTokenRef=o;this.name="RedskilledSplitCredentialError"}};function Bc(e,t){for(let r of e)if(r.token_ref!=null&&r.token_ref!==t)throw new Lc(r.project_label,r.token_ref,t)}function Ob(e,t={now:new Date(0).toISOString()}){Lb(e);let r=t.closedWindowMs??QA,n=Date.parse(t.now);if(!Number.isFinite(n))throw new Error(`redskilled activity fetch needs an instant, not ${JSON.stringify(t.now)}`);let o=new Date(n-Math.max(0,r)).toISOString(),s=e.map((l,d)=>({alias:`r${d}`,search_alias:`c${d}`,project:l}));return{query:["query RedskilledRepositoryActivity {"," rateLimit { cost remaining resetAt }",...s.flatMap(({alias:l,search_alias:d,project:c})=>{let u=JSON.stringify(c.owner),p=JSON.stringify(c.name),g=JSON.stringify(`repo:${c.owner}/${c.name} is:closed closed:>=${o}`);return[` ${l}: repository(owner: ${u}, name: ${p}) {`," nameWithOwner"," open_pull_requests: pullRequests(states: OPEN) { totalCount }"," open_issues: issues(states: OPEN) { totalCount }"," }",` ${d}: search(query: ${g}, type: ISSUE, first: 1) { issueCount }`]}),"}"].join(`
89
+ `),aliases:s,closed_since:o}}function XA(e,t,r){let n=Po(t),o=Po(n.data),s=Array.isArray(n.errors)?n.errors.map(Po):[],i=oC(o.rateLimit,s),a=e.aliases.map(({alias:l,search_alias:d,project:c})=>{let u=c.owner+"/"+c.name,p=o[l],g=s.find(f=>Ab(f.path,l)||Ab(f.path,d));if(Cs(p)){let f=Cb(p.open_pull_requests),k=Cb(p.open_issues),b=sC(o[d]);if(f!=null&&k!=null&&b!=null)return{project_label:c.project_label,repository:u,outcome:"counted",counts:{open_pull_requests:f,open_issues:k,recently_closed:b},detail:`counted ${u} for project ${JSON.stringify(c.project_label)}`}}return i.exhausted||jb(g)?{project_label:c.project_label,repository:u,outcome:"rate-limited",counts:null,detail:`the host token's quota was spent before ${u} answered, so this project has no counts rather than zero counts${i.reset_at==null?"":`; the quota resets at ${i.reset_at}`}`}:{project_label:c.project_label,repository:u,outcome:"unreachable",counts:null,detail:`${u} is not reachable with the host token: ${xa(g?.message)||"the query returned no such repository"}`}});return{version:1,fetched_at:r.fetchedAt,request_count:1,project_count:a.length,rate_limit:i,projects:a}}function ZA(e){return{version:1,fetched_at:e,request_count:0,project_count:0,rate_limit:{remaining:null,reset_at:null,exhausted:!1,point_cost:null},projects:[]}}async function Db(e){if(e.projects.length===0)return ZA(e.now);if(Bc(e.projects,e.hostTokenRef),e.transport.conditionalList)return await tC(e);let t=Ob(e.projects,{now:e.now,closedWindowMs:e.closedWindowMs});try{let r=await e.transport(t.query);return XA(t,r,{fetchedAt:e.now})}catch(r){let n=r instanceof Error?r.message:String(r),o=/rate limit|secondary rate|429/i.test(n);return{version:1,fetched_at:e.now,request_count:1,project_count:e.projects.length,rate_limit:{remaining:null,reset_at:null,exhausted:o,point_cost:null},projects:e.projects.map(s=>({project_label:s.project_label,repository:`${s.owner}/${s.name}`,outcome:o?"rate-limited":"unreachable",counts:null,detail:`the activity fetch failed before ${s.owner}/${s.name} answered: ${n}`}))}}}var eC={key:"redskilled repository activity poll",budget:"rest"};async function tC(e){Lb(e.projects);let t=Date.parse(e.now),r=Number.isFinite(t)?new Date(Math.floor(t/(60*60*1e3))*60*60*1e3).toISOString():e.now,n=Ob(e.projects,{now:r,closedWindowMs:e.closedWindowMs}),o=e.transport.conditionalList,s=[],i=0,a={remaining:null,reset_at:null,exhausted:!1,point_cost:null};for(let l of e.projects){let d=`${l.owner}/${l.name}`,c=[["open-prs","GET /repos/{owner}/{repo}/pulls",{owner:l.owner,repo:l.name,state:"open"}],["open-issues","GET /repos/{owner}/{repo}/issues",{owner:l.owner,repo:l.name,state:"open"}],["recently-closed","GET /repos/{owner}/{repo}/issues",{owner:l.owner,repo:l.name,state:"closed",since:n.closed_since}]],u=[];try{for(let[p,g,f]of c){let k=await o({cacheKey:`activity:${d}:${p}:${JSON.stringify(f)}`,route:g,parameters:f,operation:eC});i+=k.requestCount;let b=p==="open-prs"?k.data:k.data.filter(v=>!Cs(v.pull_request));u.push(p==="recently-closed"?b.filter(v=>xa(v.closed_at)>=n.closed_since).length:b.length),a=Tb(a,nC(k.headers))}s.push({project_label:l.project_label,repository:d,outcome:"counted",counts:{open_pull_requests:u[0],open_issues:u[1],recently_closed:u[2]},detail:`counted ${d} for project ${JSON.stringify(l.project_label)}`})}catch(p){let g=Ps(p);a=Tb(a,{remaining:null,reset_at:null,exhausted:g,point_cost:null}),s.push({project_label:l.project_label,repository:d,outcome:g?"rate-limited":"unreachable",counts:null,detail:`the activity fetch failed before ${d} answered: ${p instanceof Error?p.message:String(p)}`})}}return{version:1,fetched_at:e.now,request_count:i,project_count:s.length,rate_limit:a,projects:s}}function Fb(e){let t=e.stalenessMs??YA,r=e.activity;if(r==null)return{version:1,fetched_at:null,age_ms:null,threshold_ms:t,stale:!1,request_count:0,rate_limit:{remaining:null,reset_at:null,exhausted:!1,point_cost:null},projects:[],reason:"the daemon polls no repository, so there are no counts to age"};let n=Date.parse(e.now),o=Date.parse(r.fetched_at),s=Number.isFinite(n)&&Number.isFinite(o)?Math.max(0,n-o):null,i=s==null||s>t;return{version:1,fetched_at:r.fetched_at,age_ms:s,threshold_ms:t,stale:r.projects.length>0&&i,request_count:r.request_count,rate_limit:r.rate_limit,projects:r.projects.map(a=>({...a,fetched_at:r.fetched_at,age_ms:s,stale:i})),reason:r.projects.length===0?"the daemon polls no repository, so there are no counts to age":s==null?"these counts carry no readable instant, so they cannot be presented as current":i?`these counts are ${s}ms old, past the ${t}ms window`:`fetched ${s}ms ago, within the ${t}ms window`}}function Ib(e){if(!Cs(e))return!1;let t=e;return t.version===1&&(t.fetched_at===null||typeof t.fetched_at=="string")&&(t.age_ms===null||typeof t.age_ms=="number")&&typeof t.threshold_ms=="number"&&typeof t.stale=="boolean"&&Number.isInteger(t.request_count)&&Cs(t.rate_limit)&&Array.isArray(t.projects)&&typeof t.reason=="string"}function Mb(e){let t=e.endpoint==null?void 0:rC(e.endpoint),r=Sc({token:e.token,...t?{baseUrl:t}:{},...e.fetchImpl?{fetchImpl:e.fetchImpl}:{},...e.attribution?{attribution:e.attribution}:{},...e.retryCount===void 0?{}:{retryCount:e.retryCount},...e.throttle===void 0?{}:{throttle:e.throttle}}),n=async o=>await r.graphql(o);return n.conditionalList=async o=>await r.conditionalPaginate({cacheKey:o.cacheKey,route:o.route,parameters:o.parameters,operation:o.operation}),n}function rC(e){let t=new URL(e);return/\/api\/graphql\/?$/.test(t.pathname)?t.pathname=t.pathname.replace(/\/api\/graphql\/?$/,"/api/v3"):t.pathname=t.pathname.replace(/\/graphql\/?$/,""),t.search="",t.hash="",t.toString().replace(/\/$/,"")}function nC(e){let t=Pb(e,"x-ratelimit-remaining"),r=Pb(e,"x-ratelimit-reset");return{remaining:t,reset_at:r==null?null:new Date(r*1e3).toISOString(),exhausted:t===0,point_cost:null}}function Tb(e,t){return{remaining:t.remaining==null?e.remaining:e.remaining==null?t.remaining:Math.min(e.remaining,t.remaining),reset_at:t.reset_at??e.reset_at,exhausted:e.exhausted||t.exhausted,point_cost:null}}function Pb(e,t){let r=e[t];if(typeof r!="string"&&typeof r!="number")return null;let n=Number(r);return Number.isSafeInteger(n)&&n>=0?n:null}function Lb(e){if(e.length===0)throw new Error("redskilled activity fetch needs at least one registered project");if(e.length>Sb)throw new Error(`redskilled activity fetch spans at most ${Sb} repositories in one query`);let t=new Set;for(let r of e){if(r.project_label===""||r.owner===""||r.name==="")throw new Error("redskilled activity fetch needs a project label and an owner/name for every registered project");if(t.has(r.project_label))throw new Error(`redskilled holds one repository per project, and ${JSON.stringify(r.project_label)} is registered twice`);t.add(r.project_label)}}function oC(e,t){let r=Po(e),n=typeof r.remaining=="number"&&Number.isFinite(r.remaining)?r.remaining:null,o=typeof r.resetAt=="string"?r.resetAt:null,s=t.some(jb),i=typeof r.cost=="number"&&Number.isFinite(r.cost)?r.cost:null;return{remaining:n,reset_at:o,exhausted:s||n===0,point_cost:i}}function jb(e){if(e==null)return!1;let t=xa(e.type),r=xa(e.message);return t==="RATE_LIMITED"||/rate limit/i.test(r)}function Ab(e,t){return Array.isArray(e)&&e.includes(t)}function Cb(e){let t=Po(e);return Number.isInteger(t.totalCount)?t.totalCount:null}function sC(e){let t=Po(e);return Number.isInteger(t.issueCount)?t.issueCount:null}function Po(e){return Cs(e)?e:{}}function Cs(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function xa(e){return typeof e=="string"?e:""}var iC=3e4,aC=2,lC=3,dC=4,cC=["logs","vitals","display"];function Bb(e,t){if(t===void 0)return e;let r=cC.filter(o=>t[o]!==!0);if(r.length===0)return e;let n=o=>t[o]===!0;return{...e,workers:e.workers.map(o=>({...o,...n("vitals")?{}:{vitals:uC,budget:{...o.budget,used_bytes:null,used_fraction:null}},...n("logs")?{}:{log:pC},...n("display")?{}:{display:null,display_published_at:null}})),withheld:r}}var uC={rss_bytes:null,sampled_at:null,age_ms:null,fresh:!1,rss_source:null},pC={last_line:null,published_at:null,source:null};function $b(e){let t=e.stalenessMs??iC,r=dn(e.now),n=e.sampledAt==null?null:dn(e.sampledAt),o=r==null||n==null?null:Math.max(0,r-n),s=o!=null&&o<=t,i=new Set(e.reattachedWorkerIds??[]),a=e.hostState.workers.map(p=>mC(p,{rss:e.rss,sampledAt:e.sampledAt,ageMs:o,sampleFresh:s,nowMs:r,log:e.logLines?.[p.worker_id],display:e.displays?.[p.worker_id],state:i.has(p.worker_id)?"reattached":"running"})),l=a.filter(p=>p.vitals.rss_bytes==null).map(p=>p.worker_id).sort(),d=a.length-l.length,c=a.reduce((p,g)=>p+(g.vitals.rss_bytes??0),0),u=ra(e.hostState.workers);return{version:1,generated_at:e.now,daemon:{pid:e.hostState.pid,daemon_version:e.hostState.daemon_version,protocol_version:e.hostState.protocol_version,started_at:e.hostState.started_at,machine_id_hash:e.hostState.machine_id_hash,session_key_hash:e.hostState.session_key_hash},staleness:wC({sampledAt:e.sampledAt,ageMs:o,threshold:t,workerCount:a.length,measuredCount:d,unmeasured:l}),host:{worker_count:a.length,project_count:e.hostState.projects.length,ceiling:e.ceiling,consumption:u,budget_accounting:e.hostState.budget_accounting,observed_rss_bytes:c,measured_worker_count:d,ceiling_used_fraction:e.ceiling.memory_bytes==null||e.ceiling.memory_bytes<=0?null:u.memory_bytes/e.ceiling.memory_bytes},projects:kC(a),known_projects:yC(e.hostState),registered_projects:(e.hostState.registrations??[]).map(p=>p.project_label).sort((p,g)=>p.localeCompare(g)),lapsed_projects:(e.hostState.lapsed_registrations??[]).map(p=>({project_label:p.project_label,at:p.at,...p.registered_at==null?{}:{registered_at:p.registered_at},reason:p.detail})),stopped_projects:(e.hostState.stopped_registrations??[]).map(p=>({project_label:p.project_label,at:p.at})),orphaned_projects:(e.hostState.orphaned_registrations??[]).map(p=>p.project_label),workers:a,github_balance:Dc({balance:e.githubBalance??null,now:e.now,...e.reservedFraction===void 0?{}:{reservedFraction:e.reservedFraction}}),repository_activity:Fb({activity:e.repositoryActivity??null,now:e.now,stalenessMs:e.activityStalenessMs}),...e.deaths===void 0?{}:{deaths:fC(e.deaths,e.recentDeathLimit??dC)},engine:hC(e.hostState),...e.metrics===void 0?{}:{metrics:e.metrics}}}function fC(e,t){let r=[...e].sort((s,i)=>(dn(i.ts)??0)-(dn(s.ts)??0)),n=r.slice(0,Math.max(0,Math.floor(t))).map(s=>({kind:s.kind,id:s.id,pid:s.pid,ts:s.ts,last_seen:s.last_seen,last_phase:s.last_phase,sender_class:s.sender_class,confidence:s.confidence,signal:s.signal,evidence:s.evidence[0]??null})),o=gC(r);return{count:r.length,recent:n,latest:n[0]??null,reaped_at:n[0]?.ts??null,...o==null?{}:{boot_loop:o}}}function gC(e){let t=new Map;for(let n of e){if(n.sender_class!=="boot-refused"||n.uptime_s==null||n.uptime_s>aC||n.project_label==null||n.project_label===""||dn(n.ts)==null)continue;let o=t.get(n.project_label)??[];o.push(n),t.set(n.project_label,o)}return[...t.entries()].filter(([,n])=>n.length>=lC).map(([n,o])=>{let s=o[0],i=dn(s.ts),a=Math.min(...o.map(d=>dn(d.ts))),l=s.detail?.trim()||s.evidence[0]?.trim();return l==null||l===""?null:{project_label:n,count:o.length,span_ms:Math.max(0,i-a),latest_refusal:l}}).filter(n=>n!=null).sort((n,o)=>o.count-n.count||o.span_ms-n.span_ms)[0]??null}function hC(e){let t=e.upgrade,r=t?.running_version??e.daemon_version,n=t?.published_version??null,o=t?.newest_published_version??null,s=(t?.newer_published??0)>0,i=(t?.major_held??0)>0;return{running_version:r,published_version:n,newer_published:s,major_held:i,current:n==null&&o==null?null:!s&&!i}}function mC(e,t){let r=t.rss[e.worker_id],n=typeof r=="number"&&Number.isFinite(r)?r:null,o=As(e),s=e.budget?.memory_max??e.budget?.memory_high??null,i=dn(e.started_at);return{worker_id:e.worker_id,project_label:e.project_label,workspace_path:e.workspace_path,pid:e.pid,started_at:e.started_at,...e.base_commits_ahead==null?{}:{base_commits_ahead:e.base_commits_ahead},uptime_ms:t.nowMs==null||i==null?null:Math.max(0,t.nowMs-i),state:t.state,isolated:e.isolated,unit:e.unit??null,warnings:[...e.warnings],vitals:{rss_bytes:n,sampled_at:n==null?null:t.sampledAt,age_ms:n==null?null:t.ageMs,fresh:n!=null&&t.sampleFresh,rss_source:n==null?null:e.rss_source??null},budget:{name:o?.name??null,declared:o?.declared??s,bytes:o?.bytes??null,used_bytes:n,used_fraction:o==null||o.bytes<=0||n==null?null:n/o.bytes,enforceable:o!=null},log:bC(t.log),display:t.display?.display??null,display_published_at:t.display?.published_at??null}}function bC(e){let t={last_line:null,published_at:null,source:null};return e==null||e.line.trim()===""?t:{last_line:e.line,published_at:e.published_at,source:e.source}}function yC(e){let t=new Set;for(let r of e.registrations??[])t.add(r.project_label);for(let r of e.projects)t.add(r.project_label);for(let r of e.lapsed_registrations??[])t.add(r.project_label);for(let r of e.stopped_registrations??[])t.add(r.project_label);for(let r of e.orphaned_registrations??[])t.add(r.project_label);return[...t].sort((r,n)=>r.localeCompare(n))}function kC(e){let t=new Map;for(let r of e){let n=t.get(r.project_label)??{workers:0,declared:0,observed:0,measured:0};n.workers+=1,n.declared+=r.budget.bytes??0,n.observed+=r.vitals.rss_bytes??0,n.measured+=r.vitals.rss_bytes==null?0:1,t.set(r.project_label,n)}return[...t.entries()].map(([r,n])=>({project_label:r,worker_count:n.workers,declared_memory_bytes:n.declared,observed_rss_bytes:n.observed,measured_worker_count:n.measured})).sort((r,n)=>r.project_label.localeCompare(n.project_label))}function wC(e){let t={sampled_at:e.sampledAt,age_ms:e.ageMs,threshold_ms:e.threshold,measured_worker_count:e.measuredCount,unmeasured_workers:e.unmeasured};return e.workerCount===0?{...t,stale:!1,reason:"the host holds no Workers, so there is nothing to measure and nothing to age"}:e.sampledAt==null||e.ageMs==null?{...t,stale:!0,reason:`this answer is stale: the daemon has taken no measurement of its ${e.workerCount} live Worker(s) yet`}:e.ageMs>e.threshold?{...t,stale:!0,reason:`this answer is stale: its measurement is ${e.ageMs}ms old, past the ${e.threshold}ms staleness window`}:{...t,stale:!1,reason:`measured ${e.ageMs}ms ago, within the ${e.threshold}ms staleness window`}}function dn(e){let t=Date.parse(e);return Number.isFinite(t)?t:null}function $c(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let t=e,r=t.daemon,n=t.staleness,o=t.host;return t.version===1&&typeof t.generated_at=="string"&&r!=null&&typeof r=="object"&&Number.isInteger(r.pid)&&typeof r.daemon_version=="string"&&typeof r.protocol_version=="number"&&n!=null&&typeof n=="object"&&typeof n.stale=="boolean"&&typeof n.threshold_ms=="number"&&Array.isArray(n.unmeasured_workers)&&o!=null&&typeof o=="object"&&Number.isInteger(o.worker_count)&&Number.isInteger(o.project_count)&&typeof o.observed_rss_bytes=="number"&&Array.isArray(t.projects)&&Array.isArray(t.workers)&&(t.known_projects===void 0||Array.isArray(t.known_projects)&&t.known_projects.every(s=>typeof s=="string"))&&(t.registered_projects===void 0||Array.isArray(t.registered_projects)&&t.registered_projects.every(s=>typeof s=="string"))&&(t.lapsed_projects===void 0||Array.isArray(t.lapsed_projects)&&t.lapsed_projects.every(RC))&&(t.stopped_projects===void 0||Array.isArray(t.stopped_projects)&&t.stopped_projects.every(_C))&&(t.orphaned_projects===void 0||Array.isArray(t.orphaned_projects)&&t.orphaned_projects.every(s=>typeof s=="string"))&&(t.repository_activity===void 0||Ib(t.repository_activity))&&(t.github_balance===void 0||Fc(t.github_balance))&&(t.deaths===void 0||xC(t.deaths))&&(t.engine===void 0||EC(t.engine))&&(t.metrics===void 0||wh(t.metrics))}function RC(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let t=e;return typeof t.project_label=="string"&&typeof t.at=="string"&&(t.registered_at===void 0||typeof t.registered_at=="string")&&typeof t.reason=="string"}function _C(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let t=e;return typeof t.project_label=="string"&&typeof t.at=="string"}function xC(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let t=e;return Number.isInteger(t.count)&&Array.isArray(t.recent)}function EC(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let t=e;return typeof t.running_version=="string"&&(t.published_version===null||typeof t.published_version=="string")}var Gb={runner:null,model:null,effort:null,origin:null,issue:null,phase:null,step:null,phase_index:null,phase_total:null,failed:!1,heartbeat:null,wait_kind:null,wait_subject:null,wait_pid:null,wait_started_at:null,wait_deadline:null,wait_escalation:null,started_at:null,context:null,eta:null,added:null,removed:null,tokens:null,tools:null,reasoning:null,text:null};function Nb(e,t){let r=e.display?.started_at;if(r!=null&&r!==""){let n=Date.parse(r),o=Date.parse(t);if(Number.isFinite(n)&&Number.isFinite(o))return Math.max(0,o-n)}return e.uptime_ms}var bt=e=>`\x1B[${e}m`,Os=bt("48;2;114;47;55"),Gc=bt("48;2;88;36;42"),cn=bt("38;2;255;255;255"),Nc=bt("38;2;201;150;158"),Ds=bt("38;2;255;214;214"),Fs=bt("39"),Lt=bt("38;2;224;138;148"),Wc=bt("38;2;240;200;120"),Hc=bt("38;2;240;110;120"),Uc=bt("38;2;255;214;214"),qc=bt("38;2;146;84;94"),Kc=bt("38;2;255;95;95"),Sr=bt("49"),nr=bt("0"),Ea=bt("1"),va=bt("22");var vC=/\x1b\[[0-9;]*m/g,SC=/(\x1b\[[0-9;]*m)/,TC=/^\x1b\[[0-9;]*m$/;function Sa(e){return e.replace(vC,"")}function PC(e){return e.slice(2,-1).split(";").every(r=>r===""||Number(r)===0)}function zt(e){return[...Sa(e)].length}function Qe(e,t){if(t<=0)return"";if(zt(e)<=t)return e;if(t===1)return"\u2026";let r=t-1,n=0,o=!1,s="";for(let i of e.split(SC))if(i!==""){if(TC.test(i)){s+=i,o=!PC(i);continue}for(let a of i){if(n===r)return`${s}\u2026${o?nr:""}`;s+=a,n+=1}}return`${s}\u2026${o?nr:""}`}function Is(e,t){return e+" ".repeat(Math.max(0,t-zt(e)))}function Vc(e){let t=e.toLowerCase();for(let r of["opus","sonnet","haiku","fable"]){let n=t.indexOf(r);if(n===-1)continue;let s=t.slice(n+r.length).match(/^-(\d+(?:[-.]\d+)*)/)?.[1]?.split(/[-.]/)??[];return/^\d{8}$/.test(s.at(-1)??"")&&s.pop(),s.length===0?r:`${r}-${s.join(".")}`}return e}function or(e){if(!Number.isFinite(e)||e<=0)return"0B";let t=["B","K","M","G","T"],r=e,n=0;for(;r>=1024&&n<t.length-1;)r/=1024,n+=1;return`${r>=100||n===0?Math.round(r).toString():r.toFixed(1).replace(/\.0$/,"")}${t[n]}`}function Ms(e){if(!Number.isFinite(e)||e<=0)return"0";let t=(r,n)=>{let o=(Math.round(r*10)/10).toFixed(1);return`${o.endsWith(".0")?o.slice(0,-2):o}${n}`};return e>=1e9?t(e/1e9,"B"):e>=1e6?t(e/1e6,"M"):e>=1e3?t(e/1e3,"k"):String(Math.round(e))}function un(e){if(!Number.isFinite(e))return"\u2014";if(e>=10)return Ms(e);if(e<=0)return"0";let t=(Math.round(e*10)/10).toFixed(1);return t.endsWith(".0")?t.slice(0,-2):t}function pn(e){if(e==null||!Number.isFinite(e)||e<0)return"\u2014";let t=Math.floor(e/1e3);if(t<60)return`${t}s`;let r=Math.floor(t/60);if(r<60)return`${r}m${t%60}s`;let n=Math.floor(r/60);return n<24?`${n}h${r%60}m`:`${Math.floor(n/24)}d${n%24}h`}function Ao(e){if(e==null)return null;let t=e.replace(/[\u0000-\u001f\u007f]+/g," ").replace(/\s+/g," ").trim();return t===""?null:t}var Ls="!unregistered",zc="!lapsed",js="\u21E1",Tr="\u2020",Co="\u25D0",Oo="\u25EF",Jc="\u21B3",Yc="redskilled unreachable \u2014 Worker state unknown";function Do(e,t){return t.mode==="global"?e.workers:t.project==null?[]:e.workers.filter(r=>r.project_label===t.project)}function Ta(e,t){return t.mode==="global"?e.projects:e.projects.filter(r=>r.project_label===t.project)}function Bs(e,t){return t==null?"unresolved":e.known_projects==null?"matched":e.known_projects.includes(t)?e.registered_projects==null||e.registered_projects.includes(t)?"matched":e.orphaned_projects?.includes(t)===!0?"orphaned":e.stopped_projects?.some(r=>r.project_label===t)===!0?"stopped":e.lapsed_projects?.some(r=>r.project_label===t)===!0?"lapsed":"name-only":"unregistered"}function Qc(e){let t=[];return e.workers.length>0&&e.workers.length<=e.maxWorkers&&t.push("workers"),e.mode==="global"&&e.projects.length>0&&e.projects.length<=e.maxProjects&&t.push("projects"),t.push("host"),t}var fn=["wid","run","org","iss","bar","phase","base","elapsed","eta","hb","loc","tks","ctx","tls","rsn","txt"],jt={mode:"local",project:null,maxWidth:200,maxRows:16,maxHeight:40,showDeathDetails:!1},AC=" ",Wb="\u2588",CC="\u25B6",OC="\u2717",DC="\u2591",FC=new Set(["gate","push-pr","merge","cascade"]),IC=new Set(["requeue"]),MC="repair";function $s(e){return e.display?.origin===MC}function Fo(e,t=jt){let r=Bs(e,t.project),n=Do(e,t),o=n.slice(0,Math.max(0,Math.floor(t.maxRows))),s=o.map(f=>Aa(f,t,e.generated_at)),i=zC(s),a=o.map((f,k)=>({worker_id:f.worker_id,project_label:f.project_label,mine:t.project!=null&&f.project_label===t.project,cells:s[k],line:Qe(JC(s[k],i),t.maxWidth)})),l=jC(e,t,n,r),d=n.length-o.length,c=[l.line,...HC(e,t),...a.map(f=>f.line)];d>0&&c.push(Qe(`\u2026 ${d} more Worker(s) \u2014 the row budget is short, not the host`,t.maxWidth)),c.push(...NC(e,t)),c.push(...GC(e,t));let u=Math.max(1,Math.floor(t.maxHeight??jt.maxHeight)),p=Math.max(0,c.length-u),g=p===0?c:u===1?[l.line]:[...c.slice(0,u-1),Qe(`\u2026 ${p+1} more row(s) \u2014 terminal height is ${u}`,t.maxWidth)];return{version:1,generated_at:e.generated_at,mode:t.mode,project:t.project,columns:fn,header:l,rows:a,lines:g,hidden_row_count:Math.max(0,d),stale:e.staleness.stale}}function Aa(e,t,r){let n=e.display??Gb,o=$s(e),s=[n.runner,n.model==null?null:Vc(n.model),n.effort].filter(l=>!!l).join(" "),i=n.phase!=null&&FC.has(n.phase),a=o||i||n.origin!=null&&IC.has(n.origin);return{wid:t.mode==="global"?`${e.project_label}:${e.worker_id}`:e.worker_id,run:o||s===""?"":`run=${s}`,org:o?"lane=repair":i?"org=landing":n.origin==null?"":`org=${n.origin}`,iss:n.issue==null?"":o?`pr=#${n.issue.replace(/^#/,"")}`:`iss=${n.issue}`,bar:Ub(n),phase:[n.phase,n.step].filter(l=>!!l).join("\xB7"),base:e.base_commits_ahead==null?"":`base +${e.base_commits_ahead}`,elapsed:pn(Nb(e,r)),eta:n.eta==null?"":`eta=${pn(n.eta*1e3)}`,hb:LC(n,r)??`hb=${n.heartbeat??"?"}`,loc:a?"":VC(n.added,n.removed),tks:a||n.tokens==null?"":`tks=${Ms(n.tokens)}`,ctx:n.context==null?"":`ctx=${Ms(n.context)}`,tls:a||n.tools==null?"":`tls=${n.tools}`,rsn:a||n.reasoning==null?"":`rsn=${n.reasoning}`,txt:a||n.text==null?"":`txt=${n.text}`}}function LC(e,t){if(e.wait_kind==null||e.wait_subject==null||e.wait_pid==null||e.wait_pid<=0||e.wait_started_at==null)return null;let r=Date.parse(e.wait_started_at),n=Date.parse(t);return!Number.isFinite(r)||!Number.isFinite(n)?null:`${e.wait_kind}=${e.wait_subject} ${pn(Math.max(0,n-r))}`}function Ub(e){let t=e.phase_total,r=e.phase_index;if(t==null||t<=0||r==null||r<0)return"";let n=Math.min(Math.floor(r),Math.floor(t));if(n>=t)return Wb.repeat(Math.floor(t));let o=e.failed?OC:CC;return`${Wb.repeat(n)}${o}${DC.repeat(Math.floor(t)-n-1)}`}function jC(e,t,r,n){let o=(e.repository_activity?.projects??[]).find(L=>L.project_label===t.project),s={open_pull_requests:o?.counts?.open_pull_requests??null,recently_closed:o?.counts?.recently_closed??null,open_issues:o?.counts?.open_issues??null,stale:o?.stale===!0},i={memory_used_fraction:e.host.ceiling_used_fraction,memory_used_bytes:e.host.consumption.memory_bytes,memory_ceiling_bytes:e.host.ceiling.memory_bytes,worker_count:e.host.worker_count,worker_ceiling:e.host.ceiling.worker_count,interactive_reservation:e.host.ceiling.interactive_reservation??0},a=KC(r),l=o?.repository??t.project,d=e.engine??null,c=d?.running_version??e.daemon.daemon_version,u=e.deaths??null,p=e.metrics??null,g=[BC(l??"host",c,d!=null&&d.current===!1?js:"")];(n==="unregistered"||n==="name-only")&&g.push(Ls),n==="lapsed"&&g.push(zc);let f=p?.history_48h==null?null:WC(p.history_48h);f!=null&&g.push(Kr(f));let k=e.workers.filter($s).length;if(k>0){let L=Math.max(0,e.host.worker_count-k);g.push(`${Kr(`workers=${L} coding +`)} ${Os}${cn}${k} repairing${Sr}${Lt}`)}else g.push(Kr(`wrk=${r.length}/${e.host.worker_count}`));let b=i.worker_ceiling==null?"slots=\u221E":`slots=${i.worker_count}/${i.worker_ceiling}`;g.push(Kr(`${b} reserve=${i.interactive_reservation} interactive`)),g.push(Kr(qC(i))),a!=null&&g.push(`${Os}${cn}${a}${Sr}${Lt}`),s.open_pull_requests!=null&&g.push(Kr(`prs=${s.open_pull_requests}`)),s.recently_closed!=null&&g.push(Kr(`cpr=${s.recently_closed}`)),s.open_issues!=null&&g.push(Kr(`iss=${s.open_issues}`)),s.stale&&g.push("!counts stale");let v=p==null?null:qb(p.hour),T=v==null?null:Kr(v);if(T!=null&&g.push(T),u!=null&&u.count>0&&u.latest!=null){let L=u.boot_loop,W=Ao(L?.latest_refusal);g.push(L==null?`${Tr}${u.count} ${u.latest.sender_class}`:`${Tr}${u.count} boot-refused \xD7${L.count} in ${$C(L.span_ms)}`+(W==null?"":` \u2014 ${W}`))}if(e.staleness.stale){let L=e.staleness.age_ms;g.push(L==null?"!unmeasured":`!stale ${Math.round(L/1e3)}s`)}let $=`${g.join(" \xB7 ")}${nr}`,D=v!=null&&zt($)>t.maxWidth?`${g.filter(L=>L!==T).join(" \xB7 ")}${nr}`:$;return{repo:l,project:t.project,project_match:n,version:c,engine:d,deaths:u,metrics:p,model:a,windows:i,counts:s,stale:e.staleness.stale,age_ms:e.staleness.age_ms,line:Qe(D,t.maxWidth)}}function BC(e,t,r){return`${Gc}${cn}${Wc}\xBB${cn} ${Ea}${e}${va} ${Nc}v${t}${r}${cn}${Sr}${Lt}`}function Kr(e){return e.replace(/(^|\s)([A-Za-z][A-Za-z0-9/]*=)([^\s]+)/g,(t,r,n,o)=>`${r}${Ds}${n}${Fs}${o}${Lt}`)}function $C(e){return pn(e).replace(/m0s$/,"m").replace(/h0m$/,"h").replace(/d0h$/,"d")}function qb(e){let t=[];e.tokens_per_min.value!=null&&t.push(`tk/m=${un(e.tokens_per_min.value)}`),e.tools_per_min.value!=null&&t.push(`tl/m=${un(e.tools_per_min.value)}`),e.issues_per_hour.value!=null&&t.push(`iss/h=${un(e.issues_per_hour.value)}`);let r=e.runner_share.shares[0];return r!=null&&t.push(`${r.key}=${Math.round(r.share*100)}%`),t.length===0?null:t.join(" ")}function GC(e,t){let r=e.github_balance;if(r==null)return[];if(r.posture!=="spent"&&r.posture!=="reserved")return[];let n=r.posture==="spent"?Oo:Co,o=r.age_ms==null?"":` (${Math.round(r.age_ms/1e3)}s ago)`;return[Qe(`${n} github budget ${r.posture}${o} \u2014 ${r.reason}`,t.maxWidth)]}function NC(e,t){let r=e.deaths;if(r==null||r.count<=0)return[];if(!t.showDeathDetails){let s=r.latest,i=s==null?`${r.count} posed death(s)`:`${r.count} posed death(s) \xB7 latest ${s.sender_class}/${s.confidence} ${s.last_phase}`;return[Qe(`${Tr} ${i} \xB7 use --verbose for receipts`,t.maxWidth)]}let n=r.recent.map(s=>Qe(`${Tr} ${s.kind} ${s.id} pid=${s.pid} ${s.sender_class}/${s.confidence} phase=${s.last_phase}`+(s.signal==null?"":` signal=${s.signal}`)+(s.evidence==null?"":` \u2014 ${s.evidence}`),t.maxWidth)),o=r.count-r.recent.length;return o>0&&n.push(Qe(`\u2026 ${o} more posed death(s) \u2014 the lane holds them all`,t.maxWidth)),n}function WC(e){let t=e.tokens_per_hour.current.value,r=e.tickets_per_hour.current.value,n=[];return t!=null&&n.push(`tk/h=${un(t)} ${Xc(e.tokens_per_hour.trend)}`.trim()),r!=null&&n.push(`Tickets/h=${un(r)} ${Xc(e.tickets_per_hour.trend)}`.trim()),n.length===0?null:n.join(" ")}function HC(e,t){let r=e.metrics;return r==null?[Qe("48h throughput unavailable \u2014 daemon payload carries no live metrics",t.maxWidth)]:r.history_48h==null?[Qe("48h throughput unavailable \u2014 daemon payload predates hourly history",t.maxWidth)]:[Hb("tokens",r.history_48h.tokens_per_hour,t),Hb("Tickets",r.history_48h.tickets_per_hour,t)]}var Pa=["\u2581","\u2582","\u2583","\u2584","\u2585","\u2586","\u2587","\u2588"];function Hb(e,t,r){let n=e==="tokens"?"tokens":"Tickets",o=t.current.value,s=t.buckets.filter(d=>d.value==null),i=s[0]?.absent_reason??null,a=o==null?`now unavailable (${t.current.absent_reason??"no current sample"})`:`now=${un(o)}/h ${Xc(t.trend)}`.trim();if(r.maxWidth<72)return Qe(`${n} 48h unavailable at width ${r.maxWidth} \u2014 48 hourly points need 72 columns`,r.maxWidth);let l=s.length===0?"":` \xB7 ${s.length} missing (${i??"unmeasured"})`;return Qe(`${n} 48h ${UC(t)} \xB7 ${a}${l}`,r.maxWidth)}function UC(e){let t=e.buckets.flatMap(n=>n.value==null?[]:[Math.max(0,n.value)]),r=Math.max(0,...t);return e.buckets.map(n=>n.value==null?"\xB7":r===0?Pa[0]:Pa[Math.min(Pa.length-1,Math.floor(Math.max(0,n.value)/r*(Pa.length-1)))]).join("")}function Xc(e){return e==="up"?"\u2191":e==="down"?"\u2193":e==="flat"?"\u2192":"?"}function qC(e){if(e.memory_ceiling_bytes==null||e.memory_ceiling_bytes<=0)return`mem=${or(e.memory_used_bytes)}`;let t=e.memory_used_fraction==null?"":` ${Math.round(e.memory_used_fraction*100)}%`;return`mem=${or(e.memory_used_bytes)}/${or(e.memory_ceiling_bytes)}${t}`}function KC(e){for(let t of e){let r=t.display;if(r==null)continue;let n=[r.runner,r.model,r.effort].filter(o=>!!o);if(n.length>0)return n.join("\xB7")}return null}function VC(e,t){if(e==null&&t==null)return"";let r=[];return e!=null&&e>0&&r.push(`+${e}`),t!=null&&t>0&&r.push(`-${t}`),`loc=${r.length>0?r.join(" "):"0"}`}function zC(e){let t=Object.fromEntries(fn.map(r=>[r,0]));for(let r of e)for(let n of fn)t[n]=Math.max(t[n],zt(r[n]));return t}function JC(e,t){let r=fn.filter(o=>t[o]>0);if(r.length===0)return"";let n=r.map((o,s)=>Ca(o,Is(e[o],s===r.length-1?zt(e[o]):t[o])));return`${Sr}${Lt}${n.join(AC)}${nr}`}function Ca(e,t){if(e==="wid")return`${Ea}${t}${va}`;if(e==="org"&&t.trim()==="lane=repair"){let n=t.slice(t.trimEnd().length);return`${Os}${cn}${t.trimEnd()}${Sr}${Lt}${n}`}if(e==="bar")return t.replace(/█+/g,n=>`${Hc}${n}`).replace("\u25B6",`${Uc}\u25B6`).replace("\u2717",`${Kc}\u2717`).replace(/░+/g,n=>`${qc}${n}`)+Lt;let r=t.indexOf("=");return r>0?`${Ds}${t.slice(0,r+1)}${Fs}${t.slice(r+1)}${Lt}`:t}function eu(e){return Object.freeze({none:!0,reason:e})}function Gs(){return{tool:"project_start",args:{runner:"claude",target:1},why:"register this project with the host so its queue can drain"}}function Zc(e,t){if(e===null||typeof e=="string"||typeof e=="boolean")return e;if(typeof e=="number"){if(!Number.isFinite(e))throw new TypeError("repair args must contain only finite JSON numbers");return e}if(t.has(e))throw new TypeError("repair args must not contain cycles");t.add(e);try{if(Array.isArray(e))return Object.freeze(e.map(n=>Zc(n,t)));let r={};for(let[n,o]of Object.entries(e))r[n]=Zc(o,t);return Object.freeze(r)}finally{t.delete(e)}}function YC(e){let t=Zc(e.args,new Set);return Object.freeze({tool:e.tool,args:t,why:e.why})}function Gn(e){if("none"in e.repair)return{prose:`${e.state}; repair: none because ${e.repair.reason}`,repair:"none",repair_reason:e.repair.reason};let t=YC(e.repair);return{prose:`${e.state}; repair: call \`${t.tool}\` with \`${JSON.stringify(t.args)}\` because ${t.why}`,repair:t}}var Ge={mode:"local",project:null,maxWorkers:4,maxProjects:4,maxWidth:120,separator:" \xB7 ",verbose:!1};function Nn(e,t=Ge){let r=Bs(e,t.project),n=Do(e,t),o=Ta(e,t),s=rO(e,t.project,r),i=XC(e,t,n,r,s.prose),a=Qc({mode:t.mode,maxWorkers:t.maxWorkers,maxProjects:t.maxProjects,workers:n,projects:o}),l={detail:"host",line:i};for(let g of a){let f=g==="workers"?i:aO(i,QC(g,o),t.separator);if(l={detail:g,line:f},g==="workers"||zt(f)<=t.maxWidth)break}let d=Qe(l.line,t.maxWidth),c=l.detail==="workers"?oO(n,t,e.generated_at):{lines:[],degraded:!1},u=l.detail==="workers"?n.flatMap((g,f)=>{let k=t.verbose?sO(g,t):null;return k==null?[c.lines[f]]:[c.lines[f],k]}):[],p=n.length>0?"workers":"host";return{version:1,line:d,lines:[d,...u],verbose:t.verbose,mode:t.mode,project:t.project,project_match:r,...s.repair===void 0?{}:{repair:s.repair},...s.repair_reason===void 0?{}:{repair_reason:s.repair_reason},detail:l.detail,degraded:l.detail!==p||d!==l.line||c.degraded,stale:e.staleness.stale,generated_at:e.generated_at}}function ou(e){let t=e.options??Ge,r=Qe(Yc,t.maxWidth);return{version:1,line:r,lines:[r],verbose:t.verbose,mode:t.mode,project:t.project,project_match:"unanswered",detail:"host",degraded:!0,stale:!0,generated_at:e.generated_at}}function QC(e,t){return e==="projects"?t.map(iO):[]}function XC(e,t,r,n,o){let s=[],i=n!=="matched"&&n!=="name-only";t.mode==="global"?(s.push(`host ${tu(e.workers,e.host.worker_count)}/${e.host.project_count}p`),s.push(nu(e,t))):n==="matched"?(s.push(`${t.project} ${tu(r,r.length)}`),s.push(nu(e,t)),r.length===0&&s.push("idle")):n==="name-only"?(s.push(`${t.project} ${tu(r,r.length)}`),s.push(nu(e,t)),s.push(Ls)):s.push(o),s.push(Kb(e));let a=ZC(e);a!=null&&s.push(a);let l=eO(e);l!=null&&s.push(l),e.staleness.stale&&s.push(Vb(e));let d=s.join(" ");return!i||zt(d)<=t.maxWidth||a==null&&l==null?d:[a,l,o,Kb(e),e.staleness.stale?Vb(e):null].filter(c=>c!=null).join(" ")}function tu(e,t){let r=e.filter($s).length;return r===0?`${t}w`:`${Math.max(0,t-r)} coding + ${r} repairing`}function Kb(e){let t=e.engine,r=t?.running_version??e.daemon.daemon_version;return t==null||t.current!==!1?`v${r}`:`v${r}${js}`}function ZC(e){let t=e.github_balance;return t==null?null:t.posture==="spent"?`${Oo} quota spent`:t.posture==="reserved"?`${Co} quota band`:null}function eO(e){let t=e.deaths;if(t==null||t.count<=0||t.latest==null)return null;let r=t.boot_loop;if(r!=null){let n=Ao(r.latest_refusal);return`${Tr}${t.count} boot-refused \xD7${r.count} in ${tO(r.span_ms)}`+(n==null?"":` \u2014 ${n}`)}return`${Tr}${t.count} ${t.latest.sender_class}`}function tO(e){return pn(e).replace(/m0s$/,"m").replace(/h0m$/,"h").replace(/d0h$/,"d")}function rO(e,t,r){if(r==="unregistered")return Gn({state:`project unknown \u2014 ${t} was never registered on this host`,repair:Gs()});if(r==="orphaned")return Gn({state:`project unknown \u2014 ${t} is registered on a daemon this socket does not reach`,repair:eu("this socket cannot safely replace a registration owned by an unreachable daemon")});if(r==="stopped"){let n=e.stopped_projects?.find(o=>o.project_label===t);return Gn({state:`project unknown \u2014 ${t} was stopped${n==null?"":` at ${ru(n.at)}`}`,repair:Gs()})}if(r==="lapsed"){let n=e.lapsed_projects?.find(o=>o.project_label===t);if(n!=null){let o=n.registered_at==null?"":` (registered ${ru(n.registered_at)})`;return Gn({state:`project unknown \u2014 ${t} lapsed at ${ru(n.at)}${o}`,repair:Gs()})}return Gn({state:`project unknown \u2014 ${t} lapsed`,repair:Gs()})}return r==="unresolved"?Gn({state:"project unknown \u2014 this directory resolved to no project",repair:eu("the directory must resolve to a project before registration args can be safe")}):{prose:""}}function ru(e){return/^\d{4}-\d{2}-\d{2}T(\d{2}:\d{2}:\d{2})/.exec(e)?.[1]??e}function nu(e,t){let r=t.mode==="global"?e.host.observed_rss_bytes:e.projects.filter(o=>o.project_label===t.project).reduce((o,s)=>o+s.observed_rss_bytes,0),n=e.host.ceiling.memory_bytes;return t.mode==="global"&&n!=null&&n>0?`${or(r)}/${or(n)}`:or(r)}function Vb(e){let t=e.staleness.age_ms;return t==null?"!unmeasured":`!stale ${Math.round(t/1e3)}s`}function nO(e,t,r,n){let o=r.map(s=>Ca(s,Is(e[s],t[s])));return Qe(`${Sr}${Lt}${o.join(" ")}${nr}`,n)}function oO(e,t,r){let n=e.map(a=>Aa(a,t,r)),o=fn.filter(a=>n.some(l=>zt(l[a])>0)),s=[...o],i=zb(n,s);for(;s.length>1&&Jb(i,s)>t.maxWidth;)s.pop(),i=zb(n,s);return{lines:n.map(a=>nO(a,i,s,t.maxWidth)),degraded:s.length<o.length||Jb(i,s)>t.maxWidth}}function zb(e,t){let r=Object.fromEntries(fn.map(n=>[n,0]));for(let n of e)for(let o of t)r[o]=Math.max(r[o],zt(n[o]));return r}function Jb(e,t){return t.reduce((r,n)=>r+e[n],0)+Math.max(0,t.length-1)*2}function sO(e,t){let r=Ao(e.log.last_line);return r==null?null:Qe(` ${Jc} ${Yb(e,t.mode)}: ${r}`,t.maxWidth)}function Yb(e,t){return t==="global"?`${e.project_label}:${e.worker_id}`:e.worker_id}function iO(e){return`${e.project_label} ${e.worker_count}w ${or(e.observed_rss_bytes)}`}function aO(e,t,r){return[e,...t].join(r)}var Oa=1;async function Ns(e,t){return await Ji(e,t,"redskilled daemon")}function Xb(e){let t=[...e.workers??[]],r=new Map;for(let n of t)r.set(n.project_label,(r.get(n.project_label)??0)+1);return{version:1,protocol_version:Oa,daemon_version:e.daemonVersion,machine_id_hash:e.machineIdHash,session_key_hash:e.sessionKeyHash,pid:e.pid,started_at:e.startedAt,...e.ceiling==null?{}:{ceiling:e.ceiling},...e.scope==null?{}:{scope:e.scope},workers:t,projects:[...r.entries()].map(([n,o])=>({project_label:n,worker_count:o})).sort((n,o)=>n.project_label.localeCompare(o.project_label)),registrations:uO(e),...e.demand==null?{}:{demand:e.demand},...e.lapses==null||e.lapses.length===0?{}:{lapsed_registrations:[...e.lapses]},...e.stops==null||e.stops.length===0?{}:{stopped_registrations:[...e.stops]},...e.orphanedRegistrations==null||e.orphanedRegistrations.length===0?{}:{orphaned_registrations:[...e.orphanedRegistrations]},birth_latches:[...e.birthLatches??[]],budget_accounting:xh(t,{hostCeilingBytes:e.ceiling?.memory_bytes??e.hostCeilingBytes??null}),upgrade:pO(e)}}function uO(e){let t=e.now==null?Number.NaN:Date.parse(e.now),r=Number.isFinite(t),n=e.queue??null,o=new Map(n==null?[]:n.projects.map(s=>[s.project_label,s]));return[...e.registrations??[]].map(s=>{let i=o.get(s.project_label);return{...s,...r?{renewal:am(s,t)}:{},...n==null||i==null?{}:{last_poll:{at:n.fetched_at,outcome:i.outcome,depth:i.depth,request_count:n.request_count,detail:i.detail}}}}).sort((s,i)=>s.project_label.localeCompare(i.project_label))}function pO(e){let t=e.daemonVersion,r=e.published?.version??null,n=e.published?.majorHold??null;return{running_version:t,published_version:r,published_unknown:+(r===null),newer_published:+(e.published?.newer===!0),replacement:e.published?.replacement??"none",checked_at:e.published?.checkedAt??null,checks:e.published?.checks??0,hold_reason:e.published?.holdReason??null,newest_published_version:e.published?.newest??null,major_held:+(n!==null),major_hold:n}}function Zb(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let t=e;return t.version===1&&typeof t.protocol_version=="number"&&typeof t.daemon_version=="string"&&typeof t.machine_id_hash=="string"&&typeof t.session_key_hash=="string"&&Number.isInteger(t.pid)&&typeof t.started_at=="string"&&(t.ceiling===void 0||bO(t.ceiling))&&Array.isArray(t.workers)&&Array.isArray(t.projects)&&Eh(t.budget_accounting)&&(t.scope===void 0||tm(t.scope))&&(t.registrations===void 0||Array.isArray(t.registrations)&&t.registrations.every(Es))&&(t.demand===void 0||Nh(t.demand))&&(t.lapsed_registrations===void 0||Array.isArray(t.lapsed_registrations)&&t.lapsed_registrations.every(gO))&&(t.stopped_registrations===void 0||Array.isArray(t.stopped_registrations)&&t.stopped_registrations.every(hO))&&(t.orphaned_registrations===void 0||Array.isArray(t.orphaned_registrations)&&t.orphaned_registrations.every(mO))&&(t.birth_latches===void 0||Array.isArray(t.birth_latches)&&t.birth_latches.every(fO))&&(t.upgrade===void 0||yO(t.upgrade))}function fO(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let t=e,r=t.repair;return t.name==="project-birth-breaker"&&typeof t.project_label=="string"&&(t.state==="open"||t.state==="half-open")&&typeof t.opened_at=="string"&&typeof t.reason=="string"&&typeof t.closes=="string"&&(t.probe_worker_id===null||typeof t.probe_worker_id=="string")&&r!=null&&r.tool==="project_reset"&&typeof r.args=="object"&&r.args!==null&&typeof r.why=="string"}function gO(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let t=e;return typeof t.project_label=="string"&&(t.registered_at===void 0||typeof t.registered_at=="string")&&typeof t.at=="string"&&typeof t.renew_by=="string"&&Number.isInteger(t.renewals)&&Number.isInteger(t.sustains)&&typeof t.detail=="string"}function hO(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let t=e;return typeof t.project_label=="string"&&typeof t.registered_at=="string"&&typeof t.at=="string"&&typeof t.detail=="string"}function mO(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let t=e;return typeof t.project_label=="string"&&(t.registered_at===void 0||typeof t.registered_at=="string")}function bO(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let t=e,r=new Set(["flag","environment","home-config","derived-default"]);return(t.memory_bytes===null||typeof t.memory_bytes=="number")&&(t.worker_count===null||typeof t.worker_count=="number")&&(t.validation_count===void 0||Number.isInteger(t.validation_count)&&Number(t.validation_count)>0)&&(t.source==="declared"||t.source==="host-fraction")&&(t.memory_source===void 0||r.has(String(t.memory_source)))&&(t.worker_source===void 0||r.has(String(t.worker_source)))&&(t.validation_source===void 0||r.has(String(t.validation_source)))}function yO(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let t=e;return typeof t.running_version=="string"&&(t.published_version===null||typeof t.published_version=="string")&&typeof t.published_unknown=="number"&&typeof t.newer_published=="number"&&(t.replacement==="none"||t.replacement==="pending"||t.replacement==="in-progress")&&(t.checked_at===null||typeof t.checked_at=="string")&&(t.newest_published_version===void 0||t.newest_published_version===null||typeof t.newest_published_version=="string")&&(t.major_held===void 0||typeof t.major_held=="number")&&(t.checks===void 0||typeof t.checks=="number")&&(t.hold_reason===void 0||t.hold_reason===null||typeof t.hold_reason=="string")&&(t.major_hold===void 0||t.major_hold===null||kO(t.major_hold))}function kO(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let t=e;return typeof t.version=="string"&&Number.isInteger(t.running_major)&&Number.isInteger(t.held_major)&&typeof t.reason=="string"&&typeof t.action=="string"&&t.action.trim()!==""}import{randomUUID as wO}from"node:crypto";import{mkdir as RO,readFile as _O,rename as xO,writeFile as EO}from"node:fs/promises";import{dirname as vO}from"node:path";function ey(e){let t=Promise.resolve(),r=null;async function n(){await t;let s;try{s=await _O(e,"utf8")}catch(a){if(a.code==="ENOENT")return[];throw a}let i=SO(s);return TO(i)?i.registrations:[]}async function o(s){await RO(vO(e),{recursive:!0,mode:448});let i=`${e}.${process.pid}.${wO()}.tmp`,a={version:1,registrations:[...s]};await EO(i,`${nt(a,{keyedMapCollapse:!0})}
90
+ `,{encoding:"utf8",mode:384}),await xO(i,e)}return{read:n,replace(s){let i=t.then(()=>o(s));return t=i.then(()=>{r=null},a=>{r=a}),i},async flush(){if(await t,r!=null)throw r}}}function SO(e){let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{try{return Ct(t)}catch{return null}}}function TO(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let t=e;return t.version===1&&Array.isArray(t.registrations)&&t.registrations.every(Es)}import{spawnSync as Ia}from"node:child_process";import{existsSync as du}from"node:fs";import{delimiter as LO,join as cy}from"node:path";import{join as ty}from"node:path";import{existsSync as PO}from"node:fs";import{createRequire as AO}from"node:module";var ry="redskilled-job-object.node",Wn=100;function Io(e){return{available:!1,reason:e}}function CO(e,t,r){return[ty(r,"prebuilds",`${e}-${t}`,ry),ty(r,"native","build","Release",ry)]}function ny(e={}){let t=e.platform??process.platform,r=e.arch??process.arch;if(t!=="win32")return Io(`Job Object placement is the Windows backend (platform=${t}), so there is no native reach to load here`);let n=e.packageRoot??DO(),o=e.exists??PO,s=CO(t,r,n),i=s.find(d=>o(d));if(i==null)return Io(`no Job Object addon was found for ${t}-${r} (looked in ${s.join(", ")}); either install the prebuild for this platform and architecture or build the addon locally`);let a=e.requireFn??AO(import.meta.url),l;try{l=a(i)}catch(d){return Io(`the Job Object addon at ${i} could not be loaded: ${d instanceof Error?d.message:String(d)}`)}return OO(l)?{available:!0,binding:l}:Io(`the Job Object addon at ${i} does not export createJobObject, so it cannot be the native reach`)}function OO(e){return typeof e=="object"&&e!=null&&typeof e.createJobObject=="function"}function DO(){return new URL("..",import.meta.url).pathname}function oy(e){let t=e??{},r=[],n=FO(t);n==null&&(t.memory_max??t.memory_high)!=null&&r.push("the declared memory budget could not be reduced to bytes, so the job carries no memory ceiling");let o;return t.cpu_weight!=null&&(t.cpu_weight<Wn?o=Math.max(1,Math.min(100,Math.round(t.cpu_weight))):r.push(`cpu_weight=${t.cpu_weight} is at or above the fair share of ${Wn}, and Windows CPU rate control is an absolute cap rather than a share, so no rate limit is set`)),{...n!=null?{memory_limit_bytes:n.bytes,memory_budget_name:n.name,memory_budget_declared:n.declared}:{},...o!=null?{cpu_rate_percent:o}:{},kill_on_close:!0,...r.length>0?{note:r.join("; ")}:{}}}function FO(e){return As({budget:e})}var Da=5,sy=19;function su(e){return{available:!1,reason:e}}var IO="an address-space rlimit is not a resident-memory ceiling: a runtime that reserves address space it never faults in would die under a limit it never used, so no memory rlimit is set and the daemon's RSS sampling floor is the ceiling that actually holds";function ay(e,t){let r=e??{},n=[],o;if(!t.canRenice)n.push("nice is not on this host, so no priority control was applied and the Worker competes with interactive work");else if(r.cpu_weight==null)o=Da;else if(r.cpu_weight<Wn){let a=Math.round(sy*(Wn-r.cpu_weight)/Wn);o=Math.min(sy,Math.max(Da,a))}else o=Da,n.push(`cpu_weight=${r.cpu_weight} is at or above the fair share of ${Wn}, and raising a process's priority requires privilege this daemon does not have, so the Worker keeps the default yield of nice ${Da}`);let s=iy(r.max_processes);s==null&&r.max_processes!=null&&n.push(`max_processes=${r.max_processes} is not a positive whole number, so no ulimit -u is set`);let i=iy(r.cpu_seconds);return i==null&&r.cpu_seconds!=null&&n.push(`cpu_seconds=${r.cpu_seconds} is not a positive whole number, so no ulimit -t is set`),{...o!=null?{nice:o}:{},...s!=null?{max_processes:s}:{},...i!=null?{cpu_seconds:i}:{},memory_ceiling:"sampling-floor",memory_ceiling_reason:IO,...n.length>0?{note:n.join("; ")}:{}}}function ly(e){let{limits:t}=e,r=[];return t.max_processes!=null&&r.push(`ulimit -u ${t.max_processes}`),t.cpu_seconds!=null&&r.push(`ulimit -t ${t.cpu_seconds}`),r.push(t.nice!=null&&e.nice!=null?`exec ${MO(e.nice)} -n ${t.nice} "$0" "$@"`:'exec "$0" "$@"'),["-c",r.join(`
91
+ `),e.command,...e.args]}function dy(e){let t=[];return e.nice!=null?t.push(`the Worker runs at nice ${e.nice} so it yields to interactive work`):t.push("no priority control was applied"),e.max_processes!=null&&t.push(`its processes are capped at ${e.max_processes}`),e.cpu_seconds!=null&&t.push(`its CPU time is capped at ${e.cpu_seconds} seconds`),`macOS placement applied POSIX limits: ${t.join(", ")}. macOS has no resource-group equivalent, so the Worker is charged to the daemon's own resource group, and ${e.memory_ceiling_reason}`+(e.note!=null?` (${e.note})`:"")}function iu(e){let t=e??{},r=[t.max_processes!=null?"max_processes":null,t.cpu_seconds!=null?"cpu_seconds":null].filter(n=>n!=null);return r.length===0?null:`${r.join(" and ")} ${r.length===1?"is a POSIX rlimit":"are POSIX rlimits"} honoured only by the macOS placement backend, so this placement carries no equivalent`}function iy(e){if(e!=null&&!(!Number.isSafeInteger(e)||e<=0))return e}function MO(e){return`'${e.replace(/'/g,"'\\''")}'`}var uy="REDSKILLED_PLACEMENT",Fa="red-worker",au="/bin/sh";function py(e=process.env,t=process.platform){let r=su(`POSIX rlimit and priority placement is the macOS backend (platform=${t})`);if(t==="win32")return{platform:t,systemdRun:null,userSession:!1,jobObjects:ny({platform:t}),posix:r};let n=Io(`Job Object placement is the Windows backend (platform=${t}), so there is no native reach to load here`);if(t==="darwin")return{platform:t,systemdRun:null,userSession:!1,jobObjects:n,posix:jO(e)};if(t!=="linux")return{platform:t,systemdRun:null,userSession:!1,jobObjects:n,posix:r};let o=(e.XDG_RUNTIME_DIR??"").trim(),s=o!==""&&du(cy(o,"systemd","private"));return{platform:t,systemdRun:my("systemd-run",e),userSession:s,jobObjects:n,posix:r}}function jO(e){return du(au)?{available:!0,shell:au,nice:my("nice",e)}:su(`no POSIX shell was found at ${au}, so there is nothing to apply rlimits or priority in`)}function fy(e=process.env){let t=(e[uy]??"").trim().toLowerCase();return t===""?!0:!["off","false","0","no"].includes(t)}function BO(e,t,r=Fa){return gy(e,t,r).replace(/\.service$/,"")}function gy(e,t,r=Fa){return`${lu(r,"red-worker",24)}-${lu(e,"project",32)}-${lu(t,"worker",32)}.service`}function hy(e){let t=[...e.args??[]],r={...e.budget??{},...e.budget?.memory_max==null&&e.memoryCeiling?.memory_max!=null?{memory_max:e.memoryCeiling.memory_max}:{}},n=r.memory_max??r.memory_high??null,o=r.memory_high!=null||r.memory_max!=null||r.cpu_weight!=null,s=e.target??{isolation:"transient-unit"},i=u=>({isolated:!1,backend:"none",command:e.command,args:t,cwd:e.workspacePath,warning:u,budget:r,...n!=null?{memoryCeiling:n}:{},environment:ps({scope:null,memory_ceiling:n,scope_degradation:u}),...o?{budgetWarning:"a budget was declared but this placement cannot enforce it: the daemon's RSS sampling is the only remaining floor"}:{}});if(s.isolation==="inherit")return i("placement target is `inherit`: the Worker is charged to the daemon's own resource group, so a memory-pressure kill can land on the daemon and every Worker it holds");if(e.enabled===!1)return i(`worker isolation disabled by ${uy}: the Worker is charged to the daemon's own resource group`);if(e.probes.platform==="win32")return GO(e,t,r,n,o,i);if(e.probes.platform==="darwin")return $O(e,t,r,n,i);if(e.probes.platform!=="linux")return i(`transient-unit placement is the Linux backend (platform=${e.probes.platform}): the Worker is charged to the daemon's own resource group`);if(!e.probes.systemdRun)return i("transient-unit placement unavailable: systemd-run is not on PATH; the Worker is charged to the daemon's own resource group and a memory-pressure kill will hit the whole session");if(!e.probes.userSession)return i("transient-unit placement unavailable: no systemd --user session; the Worker is charged to the daemon's own resource group and a memory-pressure kill will hit the whole session");let a=gy(e.projectLabel,e.workerId,s.unit_prefix),l=["--user","--collect","--quiet","--wait",`--unit=${a}`,`--working-directory=${e.workspacePath}`];e.pipeOutput===!0&&l.push("--pipe"),r.memory_high!=null&&l.push(`--property=MemoryHigh=${r.memory_high}`),r.memory_max!=null&&l.push(`--property=MemoryMax=${r.memory_max}`),r.cpu_weight!=null&&l.push(`--property=CPUWeight=${r.cpu_weight}`);let d=ps({scope:a,memory_ceiling:n,scope_degradation:null});for(let[u,p]of Object.entries({...e.env??{},...d}))l.push(`--setenv=${u}=${p}`);let c=iu(e.budget);return{isolated:!0,backend:"transient-unit",unit:a,command:e.probes.systemdRun,args:[...l,"--",e.command,...t],budget:r,...n!=null?{memoryCeiling:n}:{},environment:d,...c!=null?{budgetWarning:c}:{}}}function $O(e,t,r,n,o){let s=e.probes.posix;if(!s.available)return o(`POSIX limit placement unavailable: ${s.reason}. The Worker is charged to the daemon's own resource group and the daemon's RSS sampling floor is the only remaining ceiling`);let i=ay(r,{canRenice:s.nice!=null}),a=r.memory_high!=null||r.memory_max!=null,l=dy(i);return{isolated:!1,backend:"posix-limits",command:s.shell,args:ly({limits:i,nice:s.nice,command:e.command,args:t}),cwd:e.workspacePath,posix:i,warning:l,budget:r,...n!=null?{memoryCeiling:n}:{},environment:ps({scope:null,memory_ceiling:n,scope_degradation:l}),...a?{budgetWarning:"the declared memory budget is enforced by the daemon's RSS sampling floor rather than by the kernel: "+i.memory_ceiling_reason}:{}}}function GO(e,t,r,n,o,s){let i=e.probes.jobObjects;if(!i.available)return s(`Job Object placement unavailable: ${i.reason}. The Worker is charged to the daemon's own resource group and the daemon's RSS sampling floor is the only remaining ceiling`);let a=oy(r),l=BO(e.projectLabel,e.workerId,e.target?.unit_prefix);return{isolated:!0,backend:"job-object",command:e.command,args:[...t],cwd:e.workspacePath,job:{name:l,limits:a},budget:r,...n!=null?{memoryCeiling:n}:{},environment:ps({scope:l,memory_ceiling:n,scope_degradation:null}),...NO(o&&a.note!=null?`${a.note}; the daemon's RSS sampling floor is the ceiling for that budget`:null,iu(e.budget))}}function NO(...e){let t=e.filter(r=>r!=null&&r!=="");return t.length>0?{budgetWarning:t.join("; ")}:{}}function my(e,t){for(let r of(t.PATH??"").split(LO)){if(!r)continue;let n=cy(r,e);if(du(n))return n}return null}function lu(e,t,r){return(e||"").toLowerCase().replace(/[^a-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"").slice(0,r).replace(/-+$/g,"")||t}async function cu(e,t){let r=[],n=[];for(let o of e){let s=!1;try{s=await t(o)===!0}catch{s=!1}(s?r:n).push(o)}return{alive:r,dead:n}}var by=3e4;function yy(e){return e.unit!=null&&e.unit!==""?WO(e.unit):lt(e.pid)}function WO(e){let t=Ia("systemctl",["--user","is-active","--quiet",e],{stdio:"ignore"});return t.error!=null?!1:t.status===0}var HO="REDSKILLED_UNIT_DISCOVERY",ky="(unowned)";function wy(e){let t=Ia("systemctl",["--user","show","--property=MainPID","--value",e],{encoding:"utf8"});if(t.error!=null||t.status!==0)return null;let r=Number.parseInt((t.stdout??"").trim(),10);return Number.isInteger(r)&&r>0?r:null}function UO(e=process.env){let t=(e[HO]??"").trim().toLowerCase();return t===""?!0:!["off","false","0","no"].includes(t)}function Ry(e,t,r=process.env){return UO(r)&&e===t}function _y(e=Fa){let t=Ia("systemctl",["--user","list-units","--type=service","--state=active","--plain","--no-legend","--no-pager",`${e}-*.service`],{encoding:"utf8"});return t.error!=null||t.status!==0?[]:(t.stdout??"").split(`
92
+ `).map(r=>r.trim().split(/\s+/)[0]??"").filter(r=>r.startsWith(`${e}-`)&&r.endsWith(".service"))}function xy(e){let t=new Set(e.held.map(o=>o.unit).filter(o=>o!=null&&o!=="")),r=new Set,n=[];for(let o of e.units)o===""||t.has(o)||r.has(o)||(r.add(o),n.push({worker_id:o.replace(/\.service$/,""),project_label:ky,pid:e.mainPid?.(o)??0,started_at:e.now,workspace_path:"",isolated:!0,unit:o,warnings:[`adopted from active unit ${JSON.stringify(o)}, which has no birth on this host's event lane: its project, its Worker id and its budget belonged to a daemon that is gone, so they are reported as unknown rather than guessed \u2014 it is counted against the host budget from here on instead of running outside it`]}));return n}function Ey(e){return e.project_label.trim()!==""?e:{...e,project_label:ky,warnings:[...e.warnings,"adopted at start with no owning project on the event lane: the daemon that birthed it recorded no project label, so it is held and counted under a stated placeholder rather than dropped"]}}function vy(e){if(e.unit!=null&&e.unit!==""){let t=Ia("systemctl",["--user","stop",e.unit],{stdio:"ignore"});return t.error==null&&t.status===0}try{return process.kill(e.pid,"SIGTERM"),!0}catch{return!1}}var Us=50,pu=15e3,eH=2*pu;function qO(e,t=Us){if(fu(e),!Number.isInteger(t)||t<=0)throw new Error(`redskilled queue discovery needs a whole, positive batch size, not ${JSON.stringify(t)}`);let r=[];for(let n=0;n<e.length;n+=t)r.push(e.slice(n,n+t));return r}function Ty(e,t={}){let r=t.batchSize??Us;if(fu(e),e.length>r)throw new Error(`redskilled queue discovery spans at most ${r} selectors in one query, and this batch holds ${e.length}: split it with planQueueDiscoveryBatches rather than dropping the remainder`);let n=e.map((i,a)=>({alias:`q${a}`,project:i}));return{query:["query RedskilledQueueDiscovery {"," rateLimit { remaining resetAt }",...n.map(({alias:i,project:a})=>` ${i}: search(query: ${JSON.stringify(a.selector)}, type: ISSUE, first: 1) { issueCount }`),"}"].join(`
93
+ `),aliases:n}}function Py(e,t){let r=Hs(t),n=Hs(r.data),o=Array.isArray(r.errors)?r.errors.map(Hs):[],s=YO(n.rateLimit,o);return{projects:e.aliases.map(({alias:a,project:l})=>{let d=XO(n[a]);if(d!=null)return{project_label:l.project_label,outcome:"counted",depth:d,detail:`project ${JSON.stringify(l.project_label)} has ${d} item(s) matching its selector`};let c=o.find(u=>QO(u.path,a));return s.exhausted||Oy(c)?{project_label:l.project_label,outcome:"rate-limited",depth:null,detail:`the host token's quota was spent before project ${JSON.stringify(l.project_label)} answered, so this queue has no depth rather than a depth of zero`+(s.reset_at==null?"":`; the quota resets at ${s.reset_at}`)}:{project_label:l.project_label,outcome:"unreachable",depth:null,detail:`project ${JSON.stringify(l.project_label)} could not be counted with the host token: ${uu(c?.message)||"the query returned no count for this selector"}`}}),rate_limit:s}}function KO(e){return{version:1,fetched_at:e,request_count:0,project_count:0,batch_size:Us,rate_limit:{remaining:null,reset_at:null,exhausted:!1},projects:[]}}function Ay(e,t,r){return{version:1,fetched_at:t,request_count:0,project_count:e.length,batch_size:Us,rate_limit:{remaining:null,reset_at:null,exhausted:!1},projects:e.map(n=>({project_label:n.project_label,outcome:"unconfigured",depth:null,detail:`project ${JSON.stringify(n.project_label)} was not counted because this host polls no tracker: ${r}`}))}}async function Cy(e){if(e.projects.length===0)return KO(e.now);if(e.transport.conditionalList)return await zO(e);let t=e.batchSize??Us,r=qO(e.projects,t),n=[],o={remaining:null,reset_at:null,exhausted:!1};for(let s of r){let i=Ty(s,{batchSize:t});try{let a=await e.transport(i.query),l=Py(i,a);n.push(...l.projects),o=Ws(o,l.rate_limit)}catch(a){let l=a instanceof Error?a.message:String(a),d=/rate limit|secondary rate|429/i.test(l);o=Ws(o,{remaining:null,reset_at:null,exhausted:d});for(let c of s)n.push({project_label:c.project_label,outcome:d?"rate-limited":"unreachable",depth:null,detail:`the queue fetch failed before project ${JSON.stringify(c.project_label)} answered: ${l}`})}}return{version:1,fetched_at:e.now,request_count:r.length,project_count:n.length,batch_size:t,rate_limit:o,projects:n}}var VO={key:"redskilled queue poll",budget:"rest"};async function zO(e){fu(e.projects);let t=e.transport.conditionalList,r=[],n={remaining:null,reset_at:null,exhausted:!1},o=0;for(let s of e.projects)try{if(s.poll==null){let l=Ty([s],{batchSize:1}),d=Py(l,await e.transport(l.query));o+=1,r.push(...d.projects),n=Ws(n,d.rate_limit);continue}let i=await t({cacheKey:`queue:${s.project_label}:${JSON.stringify(s.poll)}`,route:"GET /repos/{owner}/{repo}/issues",parameters:{owner:s.poll.owner,repo:s.poll.repo,state:"open",labels:s.poll.labels.join(","),...s.poll.creator==null?{}:{creator:s.poll.creator}},operation:VO});o+=i.requestCount;let a=i.data.filter(l=>!Dy(l.pull_request)).length;n=Ws(n,JO(i.headers)),r.push({project_label:s.project_label,outcome:"counted",depth:a,detail:`project ${JSON.stringify(s.project_label)} has ${a} item(s) matching its selector`})}catch(i){let a=Ps(i);n=Ws(n,{remaining:null,reset_at:null,exhausted:a}),r.push({project_label:s.project_label,outcome:a?"rate-limited":"unreachable",depth:null,detail:`the queue fetch failed before project ${JSON.stringify(s.project_label)} answered: ${i instanceof Error?i.message:String(i)}`})}return{version:1,fetched_at:e.now,request_count:o,project_count:r.length,batch_size:1,rate_limit:n,projects:r}}function fu(e){if(e.length===0)throw new Error("redskilled queue discovery needs at least one registered project");let t=new Set;for(let r of e){if(typeof r.project_label!="string"||r.project_label==="")throw new Error("redskilled queue discovery needs a project label for every registered project");if(typeof r.selector!="string"||r.selector==="")throw new Error(`redskilled queue discovery needs a selector for project ${JSON.stringify(r.project_label)}: a project that names no work has no queue to discover`);if(t.has(r.project_label))throw new Error(`redskilled holds one selector per project, and ${JSON.stringify(r.project_label)} is registered twice`);t.add(r.project_label)}}function Ws(e,t){return{remaining:t.remaining==null?e.remaining:e.remaining==null?t.remaining:Math.min(e.remaining,t.remaining),reset_at:t.reset_at??e.reset_at,exhausted:e.exhausted||t.exhausted}}function JO(e){let t=Sy(e,"x-ratelimit-remaining"),r=Sy(e,"x-ratelimit-reset");return{remaining:t,reset_at:r==null?null:new Date(r*1e3).toISOString(),exhausted:t===0}}function Sy(e,t){let r=e[t];if(typeof r!="string"&&typeof r!="number")return null;let n=Number(r);return Number.isSafeInteger(n)&&n>=0?n:null}function YO(e,t){let r=Hs(e),n=typeof r.remaining=="number"&&Number.isFinite(r.remaining)?r.remaining:null,o=typeof r.resetAt=="string"?r.resetAt:null;return{remaining:n,reset_at:o,exhausted:t.some(Oy)||n===0}}function Oy(e){return e==null?!1:uu(e.type)==="RATE_LIMITED"||/rate limit/i.test(uu(e.message))}function QO(e,t){return Array.isArray(e)&&e.includes(t)}function XO(e){let t=Hs(e);return Number.isInteger(t.issueCount)?t.issueCount:null}function Hs(e){return Dy(e)?e:{}}function Dy(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function uu(e){return typeof e=="string"?e:""}function Fy(e,t,r){let n=e?.rate_limit;if(n==null)return t;if(n.exhausted){let s=n.reset_at==null?Number.NaN:Date.parse(n.reset_at),i=Number.isFinite(s)?s-r+1e3:t*4;return Math.min(ZO,Math.max(t,i))}let o=n.remaining;return o==null?t:o<=eD?Math.max(t,3e4):o<=tD?Math.max(t,2e4):t}var ZO=1e5,eD=250,tD=1e3;var rD={runner:null,model:null,effort:null,origin:null,issue:null,phase:null,step:null,phase_index:null,phase_total:null,failed:!1,heartbeat:null,wait_kind:null,wait_subject:null,wait_pid:null,wait_started_at:null,wait_deadline:null,wait_escalation:null,started_at:null,context:null,eta:null,added:null,removed:null,tokens:null,tools:null,reasoning:null,text:null},nD=["runner","model","effort","origin","issue","phase","step","heartbeat","wait_kind","wait_subject","wait_started_at","wait_deadline","wait_escalation","started_at"],oD=["phase_index","phase_total","wait_pid","context","eta","added","removed","tokens","tools","reasoning","text"];function Iy(e){if(e===null||typeof e!="object"||Array.isArray(e))return null;let t=e,r={...rD};for(let n of nD){let o=t[n];r[n]=typeof o=="string"&&o.trim()!==""?o:null}for(let n of oD){let o=t[n];r[n]=typeof o=="number"&&Number.isFinite(o)?o:null}return r.failed=t.failed===!0,r}import{randomInt as lD}from"node:crypto";import{spawn as dD}from"node:child_process";import{appendFileSync as cD,mkdirSync as uD}from"node:fs";import{dirname as pD}from"node:path";import{delimiter as My,dirname as sD}from"node:path";function iD(e,t=My){return(e??"").split(t).map(r=>r.trim()).filter(r=>r!=="")}function aD(e=process.execPath){let t=(e??"").trim();if(t==="")return null;let r=sD(t);return r===""||r==="."?null:r}function Ly(e,t=process.execPath,r=My){let n=iD(e,r),o=aD(t);return o==null?n.join(r):[o,...n.filter(s=>s!==o)].join(r)}var Mo=class extends Error{constructor(t){super(t),this.name="RedskilledWorkerSpecError"}},Pr=class extends Error{constructor(r,n){super(r);this.admission=n;this.name="RedskilledAdmissionError"}},gu="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",jy=4,fD=gu.length**jy;function mu(e,t=lD){let r=new Set(e);for(let n=0;n<fD;n+=1){let o="h";for(let s=0;s<jy;s+=1)o+=gu[t(gu.length)];if(!r.has(o))return o}throw new Mo("redskilled exhausted the host Worker id space")}function gD(e){if(e==null||e.trim()==="")return{ready:!1};let t=pD(e);try{return uD(t,{recursive:!0}),{ready:!0}}catch(r){let n=r?.code;return{ready:!1,warning:`redskilled could not create the log directory ${JSON.stringify(t)} for ${JSON.stringify(e)}${n==null?"":` (${n})`}: ${hu(r)}. This Worker runs with NO log at all, so nothing but its heartbeat can show what it did`}}}function hD(e,t){let r=(n,o)=>{if(n==null)return;let s="",i=a=>{try{cD(t,Mt().push({at:new Date().toISOString(),kind:o,msg:a}),"utf8")}catch{}};n.on("data",a=>{s+=String(a);let l=s.split(`
94
+ `);s=l.pop()??"";for(let d of l)i(d)}),n.on("end",()=>{s!==""&&i(s)})};r(e.stdout,"worker.stdout"),r(e.stderr,"worker.stderr")}function mD(e){let t=[["project_label",e.project_label],["workspace_path",e.workspace_path],["command",e.command]];for(let[r,n]of t)if(typeof n!="string"||n.trim()==="")throw new Mo(`redskilled worker spec is missing ${r}`);if(e.args!=null&&!Array.isArray(e.args))throw new Mo("redskilled worker spec args must be an array")}function bD(e){if(e==null)throw new Pr("redskilled refused this Worker: no host admission verdict was handed over, and an unjudged birth is an unbudgeted one");if(!e.admitted)throw new Pr(e.reason,e)}function By(e){let{spec:t,admission:r}=e;bD(r),mD(t);let n=e.env??process.env,o=e.clock??(()=>new Date().toISOString()),s=(t.worker_id??e.workerId)?.trim()||mu(e.liveWorkerIds??[]),i=e.probes??py(n),a=nm(t.log_path,{worker_id:s,workspace_path:t.workspace_path}),l=e.openLog===!1?{ready:!1}:gD(a),d=l.ready,c={...t.env??{},...e.forkSha==null||e.forkSha===""?{}:{RED_AFK_FORK_SHA:e.forkSha},PATH:Ly(t.env?.PATH??n.PATH,e.execPath??process.execPath)},u=hy({workerId:s,projectLabel:t.project_label,workspacePath:t.workspace_path,command:t.command,args:t.args,budget:t.budget,...e.memoryCeiling!=null?{memoryCeiling:e.memoryCeiling}:{},target:t.placement,env:c,enabled:e.enabled??fy(n),probes:i,pipeOutput:d}),g=(e.spawnFn??dD)(u.command,u.args,{...u.cwd!=null?{cwd:u.cwd}:{},detached:!0,stdio:d?["ignore","pipe","pipe"]:"ignore",env:u.backend==="transient-unit"?{...n}:{...n,...c,...u.environment}});if(d&&a!=null&&hD(g,a),g.pid==null)throw g.once("error",()=>{}),new Mo(`redskilled could not spawn ${JSON.stringify(u.command)} for worker ${s}`);let f=u.job!=null?yD(u,i,g.pid):null;g.once("error",()=>{}),g.once("exit",(T,$)=>{try{f?.job?.close()}catch{}e.onExit?.(s,T,$)}),g.unref();let k=u.job!=null?f?.job!=null:u.isolated,b=[u.warning,f?.warning,u.budgetWarning,l.warning].filter(T=>T!=null);return{worker:{worker_id:s,project_label:t.project_label,pid:g.pid,started_at:o(),workspace_path:t.workspace_path,...d&&a!=null?{log_path:a}:{},isolated:k,...u.unit!=null?{unit:u.unit}:{},...t.budget!=null?{budget:t.budget}:{},...Object.keys(u.budget).length>0?{applied_budget:u.budget}:{},...u.memoryCeiling!=null?{memory_ceiling:u.memoryCeiling,memory_ceiling_reason:e.memoryCeiling?.reason??"this Worker's ceiling is the budget its client declared"}:{},warnings:b},admission:r,...e.forkSha==null||e.forkSha===""?{}:{fork_sha:e.forkSha},warnings:b,plan:u,child:g,...f?.job!=null?{job:f.job}:{}}}function yD(e,t,r){let n=e.job;if(n==null)return{};let o="the Worker is charged to the daemon's own resource group and the daemon's RSS sampling floor is the only remaining ceiling";if(!t.jobObjects.available)return{warning:`Job Object placement unavailable: ${t.jobObjects.reason}. ${o}`};let s;try{s=t.jobObjects.binding.createJobObject({name:n.name,limits:n.limits})}catch(i){return{warning:`Job Object ${JSON.stringify(n.name)} could not be created: ${hu(i)}. ${o}`}}try{s.assign(r)}catch(i){try{s.close()}catch{}return{warning:`Worker pid ${r} could not be assigned to Job Object ${JSON.stringify(n.name)}: ${hu(i)}. ${o}`}}return{job:s}}function hu(e){return e instanceof Error?e.message:String(e)}import{execFile as kD}from"node:child_process";var wD="refs/heads/red-trunk";function Ma(e,t){return new Promise((r,n)=>{kD("git",[...t],{cwd:e},(o,s,i)=>{if(o!=null){n(new Error(i.trim()||o.message));return}r(s.trim())})})}async function $y(e){await Ma(e.workspace_path,["fetch",e.trunk.remote,e.trunk.branch]);let t=await Ma(e.workspace_path,["rev-parse","--verify","FETCH_HEAD^{commit}"]);if(t==="")throw new Error("the fetched trunk did not resolve to a commit");return await Ma(e.workspace_path,["update-ref",wD,t]),t}async function Gy(e){let t=await Ma(e.workspace_path,["rev-list","--count",`${e.fork_sha}..${e.head_sha}`]),r=Number(t);if(!Number.isInteger(r)||r<0)throw new Error(`git returned an invalid base movement count: ${t}`);return r}import{open as RD,stat as _D}from"node:fs/promises";var xD=16*1024;async function Ny(e,t=xD){let r;try{r=(await _D(e)).size}catch{return null}if(r<=0)return null;let n=Math.min(t,r),o;try{let s=await RD(e,"r");try{let i=Buffer.alloc(n);await s.read(i,0,n,r-n),o=i.toString("utf8")}finally{await s.close()}}catch{return null}return ED(o)}function ED(e){let t=e.split(`
95
+ `);for(let r=t.length-1;r>=0;r-=1){let n=t[r].replace(/\r$/,"");if(n.trim()!=="")return n}return null}import{spawn as $D}from"node:child_process";import{existsSync as GD,readdirSync as ND}from"node:fs";import{dirname as WD,join as Vy,resolve as HD}from"node:path";var vD="<version>";function gn(e,t=[],r){let n=r&&r.trim().length>0?r.trim():vD;return[`npx -y -p ${Mn}@${n}`,e,...t].join(" ")}function sr(e){let t=/^(\d+)\.(\d+)\.(\d+)/.exec(String(e).trim());return t?{major:Number(t[1]),minor:Number(t[2]),patch:Number(t[3])}:null}function bu(e,t){let r=sr(e),n=sr(t);return!r||!n?0:r.major-n.major||r.minor-n.minor||r.patch-n.patch}var xH=4*60*60*1e3;Hr();Hr();import{spawnSync as SD}from"node:child_process";import{mkdir as TD,rm as PD,writeFile as AD}from"node:fs/promises";import{existsSync as CD}from"node:fs";import{homedir as OD}from"node:os";import{dirname as DD,join as yu}from"node:path";var hn="redskilled.service",ku="REDSKILLED_SUPERVISED",FD="https://github.com/reddb-io/red-skills/blob/main/.red/adr/0130-redskilled-host-scoped-execution-daemon.md";function ID(e=process.env){let t=e.XDG_CONFIG_HOME?.trim()||yu(e.HOME?.trim()||OD(),".config");return yu(t,"systemd","user")}function wu(e=process.env){return yu(ID(e),hn)}function Wy(e,t={}){let r=t.env??process.env,n=Zi(t.override??{},t.entryLookup??{}),o=[...n.args,...Fn(e,t.idleMs==null?{}:{idleMs:t.idleMs})];return{unitName:hn,unitPath:wu(r),command:n.command,args:o,text:MD(n.command,o,e)}}function MD(e,t,r){return["[Unit]","Description=redskilled \u2014 the host-scoped execution daemon (ADR 0130)",`Documentation=${FD}`,"","[Service]","Type=simple",`ExecStart=${[e,...t].map(LD).join(" ")}`,"Restart=always","RestartSec=1",`Environment="${ku}=1"`,`Environment="REDSKILLED_SESSION=${Hy(r.sessionKey)}"`,"","[Install]","WantedBy=default.target",""].join(`
96
+ `)}function LD(e){return/[\s"'\\$%]/.test(e)?`"${Hy(e)}"`:e}function Hy(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/%/g,"%%")}async function Uy(e,t={}){let r=t.writeFile??jD,n=t.run??Ru,o=[];return await r(e.unitPath,e.text),o.push({step:"write-unit",ok:!0,detail:e.unitPath}),o.push(La("daemon-reload",n,["systemctl","--user","daemon-reload"])),o.push(La("enable",n,["systemctl","--user","enable","--now",e.unitName])),{unitPath:e.unitPath,installed:o.every(s=>s.ok),steps:o}}async function qy(e={}){let t=e.removeFile??BD,r=e.run??Ru,n=wu(e.env??process.env),o=[La("disable",r,["systemctl","--user","disable","--now",hn])];return await t(n),o.push({step:"remove-unit",ok:!0,detail:n}),o.push(La("daemon-reload",r,["systemctl","--user","daemon-reload"])),{unitPath:n,installed:!1,steps:o}}function Ky(e={}){let t=e.exists??CD,r=e.run??Ru,n=wu(e.env??process.env),o=t(n),s=o&&r(["systemctl","--user","is-enabled",hn]).status===0,i=o&&r(["systemctl","--user","is-active",hn]).status===0,a=s&&!i?[{code:"enabled-but-inactive",evidence:`${hn} is installed and enabled but inactive`,fix:`systemctl --user restart ${hn}`}]:[];return{unitName:hn,unitPath:n,installed:o,enabled:s,active:i,findings:a,floor:"auto-spawn"}}function La(e,t,r){let n=t(r),o=(n.stderr??n.stdout??"").trim();return{step:e,argv:r,ok:n.status===0,...o?{detail:o}:{}}}async function jD(e,t){await TD(DD(e),{recursive:!0}),await AD(e,t,{encoding:"utf8",mode:420})}async function BD(e){await PD(e,{force:!0})}function Ru(e){let t=SD(e[0],[...e.slice(1)],{encoding:"utf8"});return t.error!=null?{status:null,stderr:t.error.message}:{status:t.status,stdout:t.stdout??"",stderr:t.stderr??""}}var zy=75,Yy=9e5,Jy="redskilled-replacement-entry-unresolved",UD="REDSKILLED_NO_REGISTRY_PROBE",Qy="REDSKILLED_BORN_BY_REPLACEMENT";function Xy(e=process.env){return e[Qy]==="1"}function Zy(e){return e===null||typeof e=="string"?{version:e,newest:null}:{version:e.version,newest:e.newest??null}}function e0(e){let t=e.running.trim();if(qs(t))return null;let r=e.newest?.trim()??"",n=sr(r),o=sr(t);return n===null||o===null||n.major<=o.major?null:{version:r,running_major:o.major,held_major:n.major,reason:`redskilled ${r} is published and this daemon runs ${t}; a major version is deliberately never adopted by the background check, because a breaking change must not arrive on a machine that is holding Workers`,action:qD(n.major,e.supervised)}}function qD(e,t){let r=`install the ${e}.x bundle (update this machine's plugin pin), then `;return t?`${r}re-point the unit and restart it: ${gn("red-skills-redskilled",["unit","install"])} && systemctl --user restart redskilled.service`:`${r}stop this daemon \u2014 the next client start resolves the newly installed bundle`}function t0(e){let t=e.running.trim();if(qs(t))return{act:"hold",reason:"local-build"};let r=e.published?.trim()??"";return!r||sr(r)===null?{act:"hold",reason:"published-unknown"}:bu(r,t)<=0?{act:"hold",reason:"no-newer-version"}:{act:"replace",to:r,via:e.supervised?"supervisor-exit":"self-spawn"}}function qs(e){let t=e.trim();return sr(t)===null?!0:/^\d+\.\d+\.\d+[-+]/.test(t)}function r0(e=process.env){return e[ku]==="1"}var _u=class extends Error{code=Jy;searched;constructor(t,r){super(`${Jy}: the published redskilled bundle ${t} exists on no reachable path and the version-pinned dispatch is disabled
98
97
  searched:
99
- ${t.map(n=>` ${n}`).join(`
100
- `)}`),this.name="RedskilledReplacementEntryError",this.searched=[...t]}};function aT(e,r={}){let t=r.env??process.env,n=r.exists??rT,o=r.execPath??process.execPath,s=r.callerEntry===void 0?process.argv[1]:r.callerEntry,i=`redskilled-${e}.bundle.min.mjs`,a=[],l=[[Pg(Eo(t),i),"bundle-cache"]];s&&l.push([Pg(nT(oT(s)),i),"caller-sibling-bundle"]);for(let[d,c]of l)if(a.push(d),n(d))return{command:o,args:[d],version:e,source:c,searched:a};if(t.RED_SKILLS_NO_PINNED_DISPATCH==="1")throw new ul(e,a);return{command:t.RED_SKILLS_NPX||"npx",args:["-y","-p",`@reddb-io/red-skills@${e}`,"red-skills-redskilled"],version:e,source:"pinned-dispatch",searched:a}}function Ng(e,r={}){if(e.via==="supervisor-exit")return{via:e.via,to:e.to};let t=r.resolveEntry??(n=>aT(n,r.env==null?{}:{env:r.env}));return{via:e.via,to:e.to,entry:t(e.to)}}function Mg(e,r,t={}){let n=t.io??{};if(e.via==="supervisor-exit"||e.entry==null)return(n.exit??dT)(Og),{...e,exitCode:Og};let o=[...e.entry.args,...Lr(r,t.idleMs==null?{}:{idleMs:t.idleMs})];return(n.spawnSuccessor??lT(n.env))(e.entry,o),e}function lT(e){return(r,t)=>{let n=eT(r.command,[...t],{detached:!0,stdio:"ignore",env:{...e??process.env,REDSKILLED_DAEMON:"1",[jg]:"1"}});n.on("error",()=>{}),n.unref()}}function dT(e){process.exitCode=e,process.exit(e)}async function Fg(e,r=process.env,t=cT){let n=Ug(r),o=Bg(e,r);if(r[sT]==="1")return{version:o,newest:n};let s=Ie(e)===null?"0.0.0":e;try{let i=await Ic({fetchText:t},s);return{version:i.sameMajor??o,newest:i.newest??n}}catch{return{version:o,newest:n}}}function Wg(e,r=process.env,t){let n=t??pl;return{version:Bg(e,r,n),newest:Ug(r,n)}}function Ug(e=process.env,r=pl){return qg(Hg(e,r))}function Bg(e,r=process.env,t=pl){let n=Ie(e.trim())?.major;return n===void 0?null:qg(Hg(r,t).filter(o=>Ie(o)?.major===n))}function Hg(e,r){let t=[];for(let n of r(Eo(e))){let o=/^redskilled-(.+)\.bundle\.min\.mjs$/.exec(n)?.[1];!o||Ie(o)===null||t.push(o)}return t}function qg(e){let r=null;for(let t of e)(r===null||il(t,r)>0)&&(r=t);return r}function pl(e){try{return tT(e)}catch{return[]}}async function cT(e){let r=await fetch(e,{headers:{accept:"application/json"}});if(!r.ok)throw new Error(`registry read failed with HTTP ${r.status}`);return await r.text()}import{mkdir as uT,readFile as pT,rename as mT,rm as ml,writeFile as Vg}from"node:fs/promises";import{randomUUID as gT}from"node:crypto";import{dirname as fT}from"node:path";var is=class extends Error{constructor(r){super(`redskilled lease ${JSON.stringify(r)} is held by another owner`),this.name="RedskilledLeaseOwnershipError"}};async function Et(e){let r;try{r=await pT(e,"utf8")}catch(n){if(n.code==="ENOENT")return;throw n}let t=hT(r);return yT(t)?t:void 0}var Kg;function zg(){return Kg??={pid:process.pid,startTime:new Date(Date.now()-Math.round(process.uptime()*1e3)).toISOString()},Kg}function Qg(e,r,t={}){let n=t.clock??(()=>new Date().toISOString()),o=t.isPidAlive??re;async function s(){return await Et(e)}async function i(l){let d=`${e}.${l.pid}.${gT()}.tmp`;await Vg(d,Jg(l),{encoding:"utf8",mode:384}),await mT(d,e)}function a(l,d){return{version:1,pid:l.pid,start_time:l.startTime,session_key_hash:r.sessionKeyHash,machine_id_hash:r.machineIdHash,socket_path:r.socketPath,acquired_at:d,renewed_at:d}}return{read:s,async acquire(l){await uT(fT(e),{recursive:!0,mode:448});let d=!1;for(;;){let c=n(),u=a(l,c);try{return await Vg(e,Jg(u),{encoding:"utf8",mode:384,flag:"wx"}),{acquired:!0,reaped:d,lease:u}}catch(f){if(f.code!=="EEXIST")throw f}let m=await s();if(!m){await ml(e,{force:!0}),d=!0;continue}if(gl(m,l))return{acquired:!0,reaped:d,lease:m};if(await o(m.pid))return{acquired:!1,lease:m};await ml(e,{force:!0}),d=!0}},async renew(l){let d=await s();if(!d||!gl(d,l))throw new is(e);let c={...d,renewed_at:n()};return await i(c),c},async release(l){let d=await s();if(!d)return!1;if(!gl(d,l))throw new is(e);return await ml(e,{force:!0}),!0}}}function gl(e,r){return e.pid===r.pid&&e.start_time===r.startTime}function Jg(e){return`${X(e,{keyedMapCollapse:!0})}
101
- `}function hT(e){let r=e.trim();if(!r)return null;try{return JSON.parse(r)}catch{try{return me(r)}catch{return null}}}function yT(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let r=e;if(r.version!==1||!Number.isInteger(r.pid)||r.pid<=0)return!1;for(let t of["start_time","session_key_hash","machine_id_hash","socket_path","acquired_at","renewed_at"])if(typeof r[t]!="string"||r[t].length===0)return!1;return!0}async function Zg(e){let{paths:r}=e,t=e.daemonVersion??"0.0.0-dev",n=e.idleMs??dt,o=e.clock??(()=>new Date().toISOString()),s=e.launch??bg,i=e.refreshTrunk??_g,a=e.countBaseMovement??Rg,l=e.ceiling??Po();e.repositoryActivity!=null&&Pa(e.repositoryActivity.projects,e.repositoryActivity.hostTokenRef);let d=e.owner??zg(),c=e.leaseStore??Qg(r.leasePath,{sessionKeyHash:r.sessionKeyHash,machineIdHash:r.machineIdHash,socketPath:r.socketPath},{clock:o}),u=e.machineOwner??xu(),m={machineIdHash:r.machineIdHash,sessionKeyHash:r.sessionKeyHash,socketPath:r.socketPath},f=e.machineClaimStore??Do(r.machineClaimPath,m,{clock:o});await _T(wT(r.socketPath),{recursive:!0,mode:448});let[h,v]=await Promise.all([c.read().catch(()=>{}),f.read().catch(()=>{})]),k=Date.parse(o()),T=h==null?Number.NaN:Date.parse(h.renewed_at);h!=null&&v!=null&&h.pid===v.pid&&h.start_time===v.start_time&&h.socket_path===r.socketPath&&v.socket_path===r.socketPath&&Number.isFinite(k)&&Number.isFinite(T)&&k-T>=Hc&&await Ai(r.socketPath)==="unowned"&&await c.release({pid:h.pid,startTime:h.start_time}).catch(()=>!1)&&await f.release({pid:v.pid,startTime:v.start_time,uid:v.uid}).catch(()=>!1);let F=await f.claim(u);if(!F.claimed)throw F.claim?.socket_path===r.socketPath?new qe(r.socketPath):new pr(f.claimPath,F.reason,F.claim);let G=await c.acquire(d);if(!G.acquired)throw await f.release(u).catch(()=>{}),new qe(r.socketPath,G.lease);let H;try{H=await zc(r.socketPath,async()=>{let[p,y]=await Promise.all([c.read().catch(()=>{}),f.read().catch(()=>{})]);return p!=null&&p.pid!==d.pid&&re(p.pid)?!0:y!=null&&y.socket_path===r.socketPath&&y.pid!==u.pid&&re(y.pid)})}catch(p){throw await c.release(d).catch(()=>{}),await f.release(u).catch(()=>{}),p}let ee=o(),q=e.eventLane??uu(r.eventLanePath),he=e.registrationIntentStore??Im(r.registrationIntentPath),Er=e.liveness??Zm,Nn=e.livenessGraceMs??Xm,Mn=e.stopWorker??ig,Fn=e.unitInventory??(()=>tg(r.machineClaimPath,Ao({machineIdHash:r.machineIdHash}))?ng():[]),Br=e.unitMainPid??rg,ps=e.treeSampler??im,St=e.readLogTail??wg,Wn=e.sampleMs??Bc,Un=e.leaseRenewMs??Pi,Tt=e.registrationSustainMs??qc,xt=e.publishedVersion??(p=>Fg(p)),Bn=e.replaceCheckMs??Dg,Pt=e.publishedProbeTimeoutMs??Wc,Hn=e.localPublishedEvidence??(p=>Wg(p,e.replacementIO?.env??process.env)),qn=e.bornByReplacement??Lg(),Ot=e.replaceBootCheckMs??Uc,At=e.supervised??Cg(),vr=e.replacementIO??{},be=e.repositoryActivity,Dt=be?.intervalMs??xa,Sr=e.githubBalance,$e=e.queueDiscovery,Hr=$e?.transport??be?.transport,jt=$e?.unconfiguredReason??Kc,Lt=$e?.intervalMs??rl,Gt=e.demandMs??15e3,Vn=e.demandBackoffMs??3e4,C=new Map,ir=new Map,Pe=new Set,Ce=new Map,ar=new Map,qr=[],Tr=[],lr=e.deaths===void 0?void 0:[...e.deaths],_e=await he.read().catch(()=>[]),Vr=Date.parse(ee),U=new Map,oe=new Map;for(let p of _e){let y=Date.parse(p.renew_by);!Number.isFinite(Vr)||!Number.isFinite(y)||y>=Vr?U.set(p.project_label,p):Vr-y<=p.renew_within_ms&&oe.set(p.project_label,p)}let D=new Set,b={},g=null,_=null,R=null,E=!1,x=0,A=null,N="none",V=null,z=null,Ye=null,xr=null,se=null,It=null,Xe=[],Ze=[],ms=new Map((e.orphanedRegistrations??[]).map(p=>[p.project_label,p])),$t=null,Re={},gs=!1,Kr,Ct,Nt,Mt,Ft,Wt,Kn,Ut,Jr,zr,pe=!1,fs=!1,Jn=null,Pl,hs=new Promise(p=>{Pl=p});function Qr(p){Ol(p);let y=Date.parse(p),w=$u(U.values(),y);for(let S of w.lapsed){U.delete(S.project_label);let O=se?.projects.find(L=>L.project_label===S.project_label),j=[...C.values()].some(L=>L.project_label===S.project_label);(O?.outcome==="counted"&&(O.depth??0)>0||j)&&oe.set(S.project_label,S),Wf(S,y)}return w.lapsed.length>0&&Yr(),w.lapsed}function Yr(){let p=new Map(oe);for(let[y,w]of U)p.set(y,w);he.replace([...p.values()]).catch(()=>{})}function Wf(p,y){let w=Number.isFinite(y)?new Date(y).toISOString():p.renew_by;Xe.push({project_label:p.project_label,registered_at:p.registered_at,at:w,renew_by:p.renew_by,renewals:p.renewals,sustains:p.sustains??0,detail:`redskilled dropped the registration for project ${JSON.stringify(p.project_label)}: it stood until ${p.renew_by} and nothing renewed it \u2014 no session spoke for it, and no poll found it work or a Worker to hold it up`}),Xe.length>nn&&Xe.splice(0,Xe.length-nn)}function Ol(p){if(U.size===0)return;let y=Date.parse(p);if(!Number.isFinite(y))return;let w={};for(let L of C.values())w[L.project_label]=(w[L.project_label]??0)+1;let S=se==null?Number.NaN:Date.parse(se.fetched_at),O=new Map((se?.projects??[]).map(L=>[L.project_label,L])),j=!1;for(let L of[...U.values()]){let J=Number.isFinite(S)&&y-S<=L.renew_within_ms?O.get(L.project_label):void 0,Xr=Wi(L,{now:p,...J==null?{}:{queue:{outcome:J.outcome,depth:J.depth}},liveWorkers:w[L.project_label]??0});Xr.registration!==L&&(U.set(L.project_label,Xr.registration),j=!0)}j&&Yr()}function Al(p){if(oe.size===0)return;let y=Date.parse(p);if(!Number.isFinite(y))return;let w=new Map((se?.projects??[]).map(O=>[O.project_label,O])),S=!1;for(let[O,j]of[...oe]){if(y-Date.parse(j.renew_by)>j.renew_within_ms){oe.delete(O),S=!0;continue}let L=w.get(O),Q=Wi(j,{now:p,...L==null?{}:{queue:{outcome:L.outcome,depth:L.depth}},liveWorkers:[...C.values()].filter(J=>J.project_label===O).length});Q.verdict==="open-work"||Q.verdict==="live-worker"?(U.set(O,Q.registration),oe.delete(O),S=!0):Q.verdict==="drained"&&(oe.delete(O),S=!0)}S&&Yr()}function zn(){let p=o();return Qr(p),Lm({now:p,daemonVersion:t,machineIdHash:r.machineIdHash,sessionKeyHash:r.sessionKeyHash,pid:d.pid,startedAt:ee,ceiling:l,scope:Pu(f.claimPath,m,u),workers:[...C.values()],registrations:[...U.values()],demand:It,lapses:Xe,stops:Ze,orphanedRegistrations:[...ms.values()],birthLatches:ku(Re,Date.parse(p)),queue:se,published:{version:_,checkedAt:R,newer:E,replacement:N,newest:V,majorHold:z,checks:x,holdReason:A}})}function Qn(){return _m({hostState:zn(),ceiling:l,rss:b,sampledAt:g,logLines:Object.fromEntries(Ce),displays:Object.fromEntries(ar),now:o(),reattachedWorkerIds:[...Pe],repositoryActivity:Ye,githubBalance:xr,...lr===void 0?{}:{deaths:lr},metrics:nm({observations:qr,outcomes:Tr,now:o()})})}function Uf(p,y){qr=fn([...qr,{worker_id:y,observed_at:p.published_at,tokens:p.display.tokens,tools:p.display.tools,runner:p.display.runner,model:p.display.model}],w=>w.observed_at,{now:o()})}function Bf(p){Tr=fn([...Tr,p],y=>y.ts,{now:o()})}async function ys(){return be==null||be.projects.length===0?null:(Ye=await mm({projects:be.projects,hostTokenRef:be.hostTokenRef,transport:be.transport,closedWindowMs:be.closedWindowMs,now:o()}),Ye)}async function Dl(){return Sr==null?null:(xr=await ka({transport:Sr.transport,now:o()}),xr)}function Hf(){if(pe||Jr!=null||Sr==null)return;let p=()=>{Jr=void 0,Dl().catch(()=>{}).then(()=>{if(pe)return;let y=Sr.intervalMsOverride??Vo(xr??qf(),{now:o()});Jr=setTimeout(p,y),Jr.unref()})};p()}function qf(){return qo(o())}function Vf(){if(!(Hr!=null||$e?.armTransport==null))try{let p=$e.armTransport();if(p.transport!=null){Hr=p.transport;return}p.unconfiguredReason!=null&&(jt=p.unconfiguredReason)}catch(p){jt=`this host could not resolve a tracker credential: ${p instanceof Error?p.message:String(p)}`}}async function jl(){let p=o();Qr(p);let y=Date.parse(p);for(let[j,L]of[...oe])Number.isFinite(y)&&y-Date.parse(L.renew_by)>L.renew_within_ms&&oe.delete(j);let S=[...new Map([...oe,...U]).values()].map(j=>({project_label:j.project_label,selector:j.selector,...j.queue_poll==null?{}:{poll:j.queue_poll}})).sort((j,L)=>j.project_label.localeCompare(L.project_label));if(S.length===0)return null;if(Vf(),Hr==null)return se=cg(S,p,jt),se;se=await ug({projects:S,transport:Hr,now:p,...$e?.batchSize==null?{}:{batchSize:$e.batchSize}});let O=o();return Al(O),Ol(O),se}async function Ll(){let p=o();if(gs)return It??gu(p);gs=!0;try{await bs().catch(()=>{});let y={};for(let $ of C.values())y[$.project_label]=(y[$.project_label]??0)+1;let w={};for(let $ of se?.projects??[])w[$.project_label]=$.depth;let S=Date.parse(p),O=Number.isFinite(S)?S:0;for(let[$,le]of Object.entries(Re)){if(le.probeWorkerId==null)continue;let no=C.get(le.probeWorkerId);no!=null&&O-Date.parse(no.started_at)>=6e4&&(Re[$]=Gi())}let j=mu({projects:[...U.values()].map($=>({project_label:$.project_label,selector:$.selector,argv:$.argv,workspace_path:$.workspace_path,target:$.target})),queue:w,live:y,nowMs:O,backoffUntilMs:$t,birthHealth:Re}),L=[],Q=new Map,J=null;for(let $ of j.births){let le,no=sl(C.keys()),Zr=U.get($.project_label),oo=ju({argv:$.argv,...Zr?.env==null?{}:{env:Zr.env},...Zr?.log_path==null?{}:{log_path:Zr.log_path}},{worker_id:no,slot:$.index,workspace_path:$.workspace_path},{project_label:$.project_label});try{if(Zr?.trunk==null)le=Xn(oo);else{let er={workspace_path:$.workspace_path,trunk:Zr.trunk},Ht=Bt(oo);if(!Ht.admitted)throw new ze(Ht.reason,Ht);let Ql=Fl(er),so=Q.get(Ql);so==null&&(so=ks(er),Q.set(Ql,so)),le=await Wl(oo,er,so,Ht)}}catch(er){J=er instanceof Error?er.message:String(er),er instanceof ze&&er.admission?.verdict==="refused-unreachable-trunk-remote"||($t=(Number.isFinite(S)?S:Date.now())+Vn);break}L.push({project_label:$.project_label,worker_id:le.worker.worker_id,pid:le.worker.pid,...le.fork_sha==null?{}:{fork_sha:le.fork_sha},warnings:oo.log_path==null?[...le.warnings,`project ${JSON.stringify($.project_label)} declared no log path, so no surface can show what Worker ${JSON.stringify(le.worker.worker_id)} logs unless it publishes a line on its heartbeat`]:le.warnings});let Es=Re[$.project_label];Es?.haltUntilMs!=null&&O>=Es.haltUntilMs&&(Re[$.project_label]=yu(Es,le.worker.worker_id))}J==null&&j.births.length>0&&($t=null);let Xr=new Set(L.map($=>$.project_label));for(let $ of j.intents){if($.queue_depth==null||$.queue_depth<=0||$.live>=$.target||Xr.has($.project_label))continue;let le=J!=null&&($.outcome==="asking"||$.outcome==="half-open-probe")?`project ${JSON.stringify($.project_label)} was birth-eligible but the host refused it: ${J}`:$.detail;await q.recordDemandRefusal({ts:p,projectLabel:$.project_label,detail:le}).catch(()=>{})}return It={version:1,at:p,requested:j.births.length,granted:L,shortfall:j.births.length-L.length,refusal:J,retry_after:$t==null?null:new Date($t).toISOString(),projects:j.intents},It}finally{gs=!1}}function Kf(p){return Fr(Qn(),{...B,mode:p?.mode??B.mode,project:p?.project??B.project,maxWorkers:p?.max_workers??B.maxWorkers,maxProjects:p?.max_projects??B.maxProjects,maxWidth:p?.max_width??B.maxWidth,verbose:p?.verbose??B.verbose})}function Jf(p){return _t(Qn(),{mode:p?.mode??Je.mode,project:p?.project??Je.project,maxWidth:p?.max_width??Je.maxWidth,maxRows:p?.max_rows??Je.maxRows})}function Pr(p,y,w){return Mu({op:p,sessionProject:y??null,targetProject:w})}async function zf(p){let y=C.get(p.worker_id),w=Pr(Nu(p.command),p.session_project,y?.project_label??null);if(!w.permitted)throw new Error(w.reason);if(p.command!=="stop")throw new Error(`redskilled does not implement ${p.command}: it owns birth, death and limits, and ${p.command} is a work decision the project's own bundle makes on top of them`);let S=y!=null&&await eh(y,p.detail??"stopped by its own project");return{version:1,command:p.command,worker_id:p.worker_id,applied:S,reach:w,detail:S?`redskilled stopped Worker ${JSON.stringify(p.worker_id)} of project ${JSON.stringify(y.project_label)}`:`redskilled holds no live Worker ${JSON.stringify(p.worker_id)} to stop`}}function Yn(p){C.delete(p),Pe.delete(p),Ce.delete(p),ar.delete(p)}function Gl(p){let y=C.get(p.worker_id),w=Pr("worker-heartbeat",p.session_project,y?.project_label??null);if(!w.permitted)throw new Error(w.reason);if(typeof p.last_log_line!="string")throw new Error("redskilled worker heartbeat last_log_line must be a string");if(y==null)return{version:1,worker_id:p.worker_id,accepted:!1,reach:w,published_at:null,detail:`redskilled holds no live Worker ${JSON.stringify(p.worker_id)} to publish a line for`};let S=o();Ce.set(p.worker_id,{line:p.last_log_line,published_at:S,source:"heartbeat"});let O=p.display===void 0?null:fg(p.display);if(O!=null){let j=ar.get(p.worker_id)?.display,L={display:O,published_at:S};ar.set(p.worker_id,L),Uf(L,p.worker_id),(O.phase!==j?.phase||O.step!==j?.step)&&we("worker-activity",y,null,{phase:O.phase,step:O.step})}return p.mechanical_heal?.heal_kind==="mechanical-regeneration"&&we("worker-heal",y,`${p.mechanical_heal.cause}; cycle ${p.mechanical_heal.cycle}/${p.mechanical_heal.cap}; free=${p.mechanical_heal.free}`,{healKind:p.mechanical_heal.heal_kind}),{version:1,worker_id:p.worker_id,accepted:!0,reach:w,published_at:S,detail:`redskilled stored a line for Worker ${JSON.stringify(p.worker_id)} without reading it`}}async function Qf(p,y,w){let S=`exit code=${y??"null"} signal=${w??"null"}`;if(p.unit!=null&&p.unit!==""&&await Xf(p)){Zf(p,`its launch client ended (${S}) while unit ${JSON.stringify(p.unit)} stayed active, so the daemon holds it by unit name from here on and its death is discovered by asking the host`);return}let O=p.log_path==null?null:Oi(await St(p.log_path).catch(()=>null));Yn(p.worker_id),we("worker-death",p,O==null?S:`session-error: ${O}`,{exitCode:y,signal:w,refusal:O}),te()}function Yf(p,y){if(!Number.isFinite(y)||y<0){Re[p]=an;return}let w=Re[p]??an,S=hu(w,y,Date.parse(o()));Re[p]=S,S.haltUntilMs!=null&&w.haltUntilMs==null&&process.stderr.write(`redskilled: project ${JSON.stringify(p)} lost ${S.shortLifeStreak} Workers in a row inside ${6e4}ms of birth; not asking for another until ${new Date(S.haltUntilMs).toISOString()}
102
- `)}function Il(p,y){let w=Pr("project-reset",y,p);if(!w.permitted)throw new Error(w.reason);let S=Re[p]?.haltUntilMs!=null||Re[p]?.probeWorkerId!=null;return Re[p]=Gi(),{version:1,project_label:p,latch:"project-birth-breaker",reset:S,reach:w,detail:S?`redskilled cleared project ${JSON.stringify(p)}'s birth breaker; the next demand tick may birth normally`:`redskilled found no open birth breaker for project ${JSON.stringify(p)}; nothing changed`}}async function Xf(p){try{return await Er(p)===!0}catch{return!1}}function Zf(p,y){let w=p.unit==null?null:Br(p.unit);C.set(p.worker_id,{...p,...w!=null&&w>0?{pid:w}:{},warnings:[...p.warnings,y]}),Pe.add(p.worker_id),te()}function $l(p,y){let w=Pr("project-register",y,p.project_label);if(!w.permitted)throw new Error(w.reason);let S=o();Qr(S);let O=Lu(p,{now:S,held:U.get(p.project_label)});return U.set(O.project_label,O),Yr(),Ml(O.project_label),te(),{version:1,registration:O,reach:w,detail:`redskilled holds a registration for project ${JSON.stringify(O.project_label)} at a target of ${O.target} until ${O.renew_by}, and has read neither its selector nor its argv`}}function Cl(p,y={}){let w=Pr("project-renew",y.sessionProject,p);if(!w.permitted)throw new Error(w.reason);let S=o();Qr(S);let O=U.get(p);if(O==null){if(ms.has(p))throw new $r(p,{kind:"orphaned"});let L=[...Ze].reverse().find(J=>J.project_label===p);if(L!=null)throw new $r(p,{kind:"stopped",at:L.at});let Q=[...Xe].reverse().find(J=>J.project_label===p);throw Q!=null?new $r(p,{kind:"lapsed",at:Q.at,...Q.registered_at==null?{}:{registered_at:Q.registered_at}}):new $r(p)}let j=Gu(O,{now:S,...y.renewWithinMs==null?{}:{renew_within_ms:y.renewWithinMs},...y.launch==null?{}:{launch:y.launch}});return U.set(j.project_label,j),Yr(),te(),{version:1,registration:j,reach:w,detail:`redskilled renewed the registration for project ${JSON.stringify(j.project_label)}, which now stands until ${j.renew_by} after renewal ${j.renewals}`+(y.launch==null?"":`, carrying launch revision ${j.launch_revision} for its next Worker`)}}function Nl(p,y){let w=Pr("project-deregister",y,p);if(!w.permitted)throw new Error(w.reason);let S=U.get(p)??oe.get(p),O=U.delete(p),j=oe.delete(p),L=O||j;if(S!=null){let Q=`redskilled released the registration for project ${JSON.stringify(p)}`;Ml(p),Ze.push({project_label:p,registered_at:S.registered_at,at:o(),detail:Q}),Ze.length>nn&&Ze.splice(0,Ze.length-nn)}return L&&Yr(),{version:1,project_label:p,released:L,reach:w,detail:L?`redskilled released the registration for project ${JSON.stringify(p)}`:`redskilled held no registration for project ${JSON.stringify(p)}, so there was nothing to release`}}function Ml(p){oe.delete(p);for(let y=Xe.length-1;y>=0;y-=1)Xe[y].project_label===p&&Xe.splice(y,1);for(let y=Ze.length-1;y>=0;y-=1)Ze[y].project_label===p&&Ze.splice(y,1);ms.delete(p)}async function eh(p,y){try{await Mn(p)}catch{}return Yn(p.worker_id),we("worker-death",p,y),te(),!0}function Bt(p){return iu({ceiling:l,workers:[...C.values()],budget:p.budget,projectLabel:p.project_label,...p.reservation==null?{}:{reservation:p.reservation}})}function Fl(p){return`${p.workspace_path}\0${p.trunk.remote}\0${p.trunk.branch}`}function ks(p){let y=Fl(p),w=ir.get(y);if(w!=null)return w;let S=i(p).finally(()=>{ir.get(y)===S&&ir.delete(y)});return ir.set(y,S),S}function rh(p,y,w){let S=w instanceof Error?w.message:String(w);return{...p,admitted:!1,verdict:"refused-unreachable-trunk-remote",reason:`refused-unreachable-trunk-remote: redskilled refused this Worker because trunk remote ${JSON.stringify(y.trunk.remote)} could not refresh branch ${JSON.stringify(y.trunk.branch)}: ${S}`}}async function Wl(p,y,w,S){let O=S??Bt(p);if(!O.admitted)throw new ze(O.reason,O);let j;try{j=await(w??ks(y))}catch(Q){let J=rh(O,y,Q);throw new ze(J.reason,J)}let L=Bt(p);if(!L.admitted)throw new ze(L.reason,L);return Xn(p,{admission:L,forkSha:j})}function Xn(p,y={}){let w=au({ceiling:l,workers:[...C.values()],budget:p.budget}),S=s({spec:p,admission:y.admission??Bt(p),...y.forkSha==null?{}:{forkSha:y.forkSha},memoryCeiling:w,liveWorkerIds:C.keys(),clock:o,onExit:(Q,J,Xr)=>{let $=C.get(Q);if($==null){te();return}Qf($,J,Xr).catch(()=>{})}}),O=y.forkSha??S.fork_sha??S.worker.fork_sha,j=O==null||O===""?S.worker:{...S.worker,fork_sha:O},L={...S,worker:j,...O==null||O===""?{}:{fork_sha:O}};return C.set(j.worker_id,j),we("worker-birth",j,null,{admissionVerdict:y.admission?.verdict??S.admission.verdict}),te(),L}function we(p,y,w,S={}){if(pe)return;let O=o(),j={kind:p,worker:y,ts:O,detail:w,...S};(p==="worker-death"||p==="worker-budget-kill")&&(Bf({worker_id:y.worker_id,ts:O,outcome:p}),Ul(Oo(j),{startedAt:y.started_at,...S.refusal==null?{}:{refusal:S.refusal}}),Yf(y.project_label,Date.parse(O)-Date.parse(y.started_at))),q.recordWorker(j).catch(()=>{})}function Ul(p,y={}){let w=Vc(p,y);if(w==null)return;let S=[w,...(lr??[]).filter(O=>O.kind!==w.kind||O.id!==w.id||O.ts!==w.ts)].sort((O,j)=>Date.parse(O.ts)-Date.parse(j.ts));lr=fn(S,O=>O.ts,{now:o()})}async function bs(){let p=Date.parse(o()),y=[...C.values()].filter(S=>{if(Pe.has(S.worker_id))return!0;let O=Date.parse(S.started_at);return!Number.isFinite(O)||p-O>=Nn});if(y.length===0)return[];let{dead:w}=await Za(y,Er);for(let S of w)Yn(S.worker_id),we("worker-death",S,"the host no longer confirms this Worker");return w.length>0&&te(),w}async function Bl(p,y){let w=C.get(p);if(!w)return!1;try{await Mn(w)}catch{}return Yn(p),we("worker-budget-kill",w,y),te(),!0}async function Hl(){let p=[...C.values()];if(p.length===0)return[];let y;try{y=await ps(p)}catch{return[]}let w=y.rss;b=w,g=o(),th(y.cpu_seconds,g);let{terminations:S}=sm({workers:p,rss:w}),O=[];for(let j of S)await Bl(j.worker_id,j.reason)&&O.push(j);return O}function th(p,y){for(let[w,S]of Object.entries(p)){if(typeof S!="number"||!Number.isFinite(S))continue;let O=C.get(w);O&&C.set(w,{...O,cpu:{cpu_seconds:S,sampled_at:y}})}}async function nh(){try{return Pt<=0?await xt(t):await new Promise(p=>{let y=setTimeout(()=>p(_s()),Pt);y.unref(),xt(t).then(w=>{clearTimeout(y),p(w)},()=>{clearTimeout(y),p(_s())})})}catch{return _s()}}function _s(){try{return Hn(t)}catch{return null}}async function ql(){if(Ln(t))return x+=1,R=o(),A="local-build",{act:"hold",reason:"local-build"};let p=Gg(await nh()),y=p.version;_=y,V=p.newest??null,R=o(),z=Ig({running:t,newest:V,supervised:At});let w=$g({running:t,published:y,supervised:At});return E=w.act==="replace",x+=1,A=w.act==="hold"?w.reason:null,N!=="in-progress"&&(N=w.act==="replace"?"pending":"none"),w}async function Zn(){let p=await ql();if(p.act!=="replace"||N==="in-progress")return p;let y=Ng(p,vr);return N="in-progress",await q.flush().catch(()=>{}),await he.flush().catch(()=>{}),await ro({reason:"replaced"}),Mg(y,r,{...n==null?{}:{idleMs:n},io:vr}),p}function oh(){pe||Wt!=null||Bn<=0||(!qn&&Ot>0&&(Kn=setTimeout(()=>{Zn().catch(()=>{})},Ot),Kn.unref()),Wt=setInterval(()=>{Zn().catch(()=>{})},Bn),Wt.unref())}async function Vl(){return await c.renew(d).catch(()=>null)}function sh(){pe||Nt!=null||Un<=0||(Nt=setInterval(()=>{Vl()},Un),Nt.unref())}function ih(){pe||Mt!=null||Tt<=0||(Mt=setInterval(()=>{Qr(o())},Tt),Mt.unref())}function ah(){pe||Ct!=null||Wn<=0||(Ct=setInterval(()=>{Hl().catch(()=>{})},Wn),Ct.unref())}function lh(){pe||Ut!=null||be==null||be.projects.length===0||Dt<=0||(ys().catch(()=>{}),Ut=setInterval(()=>{ys().catch(()=>{})},Dt),Ut.unref())}function dh(){if(pe||zr!=null||Lt<=0)return;let p=y=>{zr=setTimeout(()=>{zr=void 0,Kl().then(()=>jl()).catch(()=>{}).finally(()=>{if(pe)return;let w=Date.parse(o());p(gg(se,Lt,Number.isFinite(w)?w:Date.now()))})},y),zr.unref()};p(Lt)}async function Kl(){await Promise.allSettled([...U.values()].filter(p=>p.trunk!=null).map(async p=>{let y=await ks({workspace_path:p.workspace_path,trunk:p.trunk}),w=[...C.values()].filter(S=>S.project_label===p.project_label&&S.fork_sha!=null&&S.fork_sha!=="");await Promise.allSettled(w.map(async S=>{let O=await a({workspace_path:p.workspace_path,fork_sha:S.fork_sha,head_sha:y}),j=C.get(S.worker_id);if(j==null||j.fork_sha!==S.fork_sha)return;let L={...j,base_head_sha:y,base_commits_ahead:O};C.set(S.worker_id,L),(j.base_head_sha!==y||j.base_commits_ahead!==O)&&we("worker-drift",L,null,{baseHeadSha:y,baseCommitsAhead:O})}))}))}function ch(){pe||Ft!=null||Gt<=0||(Ft=setInterval(()=>{Ll().catch(()=>{})},Gt),Ft.unref())}function te(){pe||(Kr&&clearTimeout(Kr),Kr=setTimeout(()=>{bs().catch(()=>{}).then(()=>Jl())},n),Kr.unref())}function Jl(){return C.size>0?(te(),"held-by-workers"):(Qr(o()),U.size>0?(te(),"held-by-registrations"):(uh(),"exited"))}async function uh(){if(!Ln(t)){if((await Zn().catch(()=>null))?.act==="replace"||fs||pe)return;if(C.size>0||U.size>0){te();return}}await ro({reason:"idle"})}function eo(p){return _u({reason:p,socketPath:r.socketPath,daemonVersion:t,pid:d.pid,workers:[...C.values()],projects:[...U.keys()]})}function zl(p){if(Jn!=null)return Jn;let y=p.reason??"requested",w=p.note?.trim();return Jn=q.recordDaemonStop({ts:o(),pid:d.pid,socketPath:r.socketPath,reason:y,detail:w==null||w===""?eo(y).detail:`${eo(y).detail} \u2014 ${w}`,...p.signal==null?{}:{signal:p.signal}}).catch(()=>{}),Jn}async function ro(p={}){if(fs)return await hs;fs=!0,await zl(p),pe=!0,Kr&&clearTimeout(Kr),Ct&&clearInterval(Ct),Nt&&clearInterval(Nt),Mt&&clearInterval(Mt),Wt&&clearInterval(Wt),Kn&&clearTimeout(Kn),Ut&&clearInterval(Ut),Jr&&clearTimeout(Jr),zr&&clearTimeout(zr),Ft&&clearInterval(Ft),await q.flush().catch(()=>{}),await he.flush().catch(()=>{}),await c.release(d),await f.release(u),H.close();for(let y of D)y.destroy();return await new Promise(y=>H.once("close",()=>y())),await RT(r.socketPath,{force:!0}),Pl(),await hs}let Rs=await q.read().catch(()=>[]),to=new Map;for(let p of Rs){if(p.event==="worker-birth"){to.set(p.worker_id,p.ts);continue}let y=Oi(p.detail);Ul(p,{...to.get(p.worker_id)==null?{}:{startedAt:to.get(p.worker_id)},...y==null?{}:{refusal:y}}),(p.event==="worker-death"||p.event==="worker-budget-kill")&&to.delete(p.worker_id)}Tr=fn(Rs.filter(p=>p.event==="worker-death"||p.event==="worker-budget-kill").map(p=>({worker_id:p.worker_id,ts:p.ts,outcome:p.event})),p=>p.ts,{now:o()});let ph=pu(Rs),ws=await Za(ph,Er);for(let p of ws.alive){let y=sg(p),w=y.unit==null||re(y.pid)?null:Br(y.unit);C.set(y.worker_id,w!=null&&w>0?{...y,pid:w}:y),Pe.add(y.worker_id)}for(let p of ws.dead)we("worker-death",p,"the Worker ended while no daemon was watching");let mh=og({units:await Promise.resolve(Fn()).catch(()=>[]),held:[...C.values()],mainPid:Br,now:ee});for(let p of mh)C.set(p.worker_id,p),Pe.add(p.worker_id),we("worker-birth",p,"adopted from an active unit with no birth on this lane");Al(o());for(let p of ws.alive){if(p.log_path==null||Ce.has(p.worker_id))continue;let y=await St(p.log_path).catch(()=>null);y==null||y.trim()===""||Ce.set(p.worker_id,{line:y,published_at:o(),source:"rehydrated"})}H.on("connection",p=>{D.add(p),p.once("close",()=>D.delete(p)),te(),Qc(p,async(y,w)=>{te();let S=await gh(y);w(S),y.op==="shutdown"&&setImmediate(()=>void ro({reason:"requested"}).catch(()=>{}))})});async function gh(p){try{if(p.op==="ping")return{id:p.id,ok:!0,value:{pong:!0,protocol_version:es,daemon_version:t,pid:d.pid}};if(p.op==="host-state")return{id:p.id,ok:!0,value:zn()};if(p.op==="statusline-payload")return{id:p.id,ok:!0,value:bm(Qn(),p.extras)};if(p.op==="statusline-string")return{id:p.id,ok:!0,value:Kf(p.render)};if(p.op==="statusline-dashboard")return{id:p.id,ok:!0,value:Jf(p.dashboard)};if(p.op==="worker-heartbeat")return{id:p.id,ok:!0,value:Gl(p.heartbeat)};if(p.op==="project-register"){let w=$l(p.registration,p.session_project);return await he.flush(),{id:p.id,ok:!0,value:w}}if(p.op==="project-renew"){let w=Cl(p.project_label,{...p.session_project==null?{}:{sessionProject:p.session_project},...p.renew_within_ms==null?{}:{renewWithinMs:p.renew_within_ms},...p.launch==null?{}:{launch:p.launch}});return await he.flush(),{id:p.id,ok:!0,value:w}}if(p.op==="project-deregister"){let w=Nl(p.project_label,p.session_project);return await he.flush(),{id:p.id,ok:!0,value:w}}if(p.op==="project-reset")return{id:p.id,ok:!0,value:Il(p.project_label,p.session_project)};if(p.op==="worker-command")return{id:p.id,ok:!0,value:await zf(p.command)};if(p.op==="worker-start"){let w=Pr("worker-start",p.session_project,p.spec.project_label);if(!w.permitted)return{id:p.id,ok:!1,error:w.reason};let S=p.spec.trunk==null?Xn(p.spec):await Wl(p.spec,{workspace_path:p.spec.workspace_path,trunk:p.spec.trunk});return await q.flush().catch(()=>{}),{id:p.id,ok:!0,value:{worker:S.worker,admission:S.admission,fork_sha:S.fork_sha,warnings:S.warnings}}}if(p.op==="shutdown"){let w=eo("requested");return await zl({reason:"requested",...p.detail==null?{}:{note:p.detail}}),{id:p.id,ok:!0,value:w}}let y=p;return{id:y.id??Xg(),ok:!1,error:`unsupported redskilled op: ${y.op??"unknown"}`}}catch(y){return{id:p.id??Xg(),ok:!1,error:y instanceof Error?y.message:String(y)}}}return te(),ah(),sh(),ih(),oh(),lh(),Hf(),dh(),ch(),{socketPath:r.socketPath,lease:G.lease,startedAt:ee,closed:hs,startWorker:Xn,admit:Bt,ceiling:()=>l,killWorkerOverBudget:Bl,sampleMemoryBudgets:Hl,renewLease:Vl,pollRepositoryActivity:ys,pollGithubBalance:Dl,githubBalance:()=>xr,pollQueueDiscovery:jl,queueDiscovery:()=>se,driveDemand:Ll,demand:()=>It,sweepWorkerLiveness:bs,publishWorkerHeartbeat:Gl,reattached:()=>[...Pe].map(p=>C.get(p)).filter(p=>p!=null),flushEvents:()=>q.flush(),trackWorker(p){C.set(p.worker_id,p),we("worker-birth",p,null),te()},releaseWorker(p){let y=C.get(p),w=C.delete(p);return Pe.delete(p),Ce.delete(p),ar.delete(p),y&&we("worker-death",y,"released by the daemon"),te(),w},workerCount:()=>C.size,registerProject:$l,renewProject:Cl,resetProjectBirthBreaker:Il,deregisterProject:Nl,registrations:()=>zn().registrations??[],hostState:zn,refreshRegisteredTrunks:Kl,statuslinePayload:Qn,evaluateIdle:Jl,observePublishedVersion:ql,checkForReplacement:Zn,stopReport:eo,stop:ro}}function fl(e){let r=e.socketPath,t=ET(e);return e.answers?{version:1,kind:"answering",socket_path:r,holder:t,reason:`a redskilled daemon answered on ${JSON.stringify(r)}`,repair:"nothing to repair"}:t!=null?{version:1,kind:"held-unresponsive",socket_path:r,holder:t,reason:`redskilled pid ${t.pid} is alive and has held ${JSON.stringify(r)} since ${t.acquired_at}${t.uptime_ms==null?"":` (up ${ef(t.uptime_ms)})`}, but it did not answer a ping \u2014 this is a daemon that could not be REACHED, not one that is missing.`,repair:`Do not provision: a daemon is already running. Inspect it (\`ps -p ${t.pid}\`), or stop it with \`${Rr("red-skills-redskilled",["stop"])}\` and let the next client start a fresh one.`}:{version:1,kind:"absent",socket_path:r,holder:null,reason:`nothing answered on ${JSON.stringify(r)} and no live process holds its lease`,repair:`Install and start one with \`${Rr("red-skills-redskilled",["provision"])}\` (or \`/red-setup\`), then retry.`}}function hl(e){return`${e.reason} ${e.repair}`}function ET(e){let r=e.lease;return r==null||e.holderAlive!==!0||r.socket_path!==e.socketPath?null:{pid:r.pid,socket_path:r.socket_path,acquired_at:r.acquired_at,renewed_at:r.renewed_at,uptime_ms:vT(r.acquired_at,e.now??new Date().toISOString())}}function vT(e,r){let t=Date.parse(e),n=Date.parse(r);return!Number.isFinite(t)||!Number.isFinite(n)?null:Math.max(0,n-t)}function ef(e){let r=Math.floor(e/1e3),t=Math.floor(r/3600),n=Math.floor(r%3600/60),o=r%60;return t>0?`${t}h${String(n).padStart(2,"0")}m`:n>0?`${n}m${String(o).padStart(2,"0")}s`:`${o}s`}tr();var nf=1e4,Ur=class extends Error{constructor(t,n,o){super(`redskilled daemon is unreachable on ${JSON.stringify(t)}, so no Worker was started: ${n instanceof Error?n.message:String(n)}${o!=null&&o.kind==="held-unresponsive"?`. ${hl(o)}`:""}`);this.socketPath=t;this.cause=n;this.presence=o;this.name="RedskilledUnreachableError"}},yl=class extends Ur{constructor(t,n,o){super(t,o,n);this.presence=n;this.name="RedskilledDaemonHeldError"}},as=class extends Error{constructor(t){super(t);this.refusal=t;this.name="RedskilledRequestRefusedError"}};async function ls(e,r={}){let t=r.answers??await Ve(e.socketPath),n=await Et(e.leasePath).catch(()=>{});return fl({socketPath:e.socketPath,answers:t,lease:n,holderAlive:n!=null&&re(n.pid)})}async function kl(e,r={}){try{return await PT(e,r)}catch(t){if(t instanceof pr||t instanceof Ur)throw t;let n=await ls(e).catch(()=>{});throw new Ur(e.socketPath,t,n)}}async function PT(e,r){if(await TT(xT(e.socketPath),{recursive:!0,mode:448}),await Ve(e.socketPath))return"already-running";await DT(e);let t=await AT(e,r);if(t!=null)return t;let n=await Pc(e.lockPath,{...r.spawnLockMaxAgeMs==null?{}:{maxAgeMs:r.spawnLockMaxAgeMs},onReap:r.onSpawnLockReaped??OT});if(!n.acquired)return await rf(e,r,void 0,n),"joined";try{if(await Ve(e.socketPath))return"already-running";let o=await LT(e,r);return await rf(e,r,o),"spawned"}finally{await Oc(n)}}function OT(e){process.stderr.write(`redskilled: reaped the spawn lock ${JSON.stringify(e.lockPath)} (${e.reason}, ${Math.round(e.ageMs/1e3)}s old, holder ${e.holder==null?"unnamed":`pid ${e.holder.pid}`}) and went on to spawn
103
- `)}async function AT(e,r){let t=await ls(e,{answers:!1}).catch(()=>{});if(t==null||t.kind!=="held-unresponsive")return null;let n=r.readyTimeoutMs??nf,o=Date.now()+n;for(;;){if(await Ve(e.socketPath))return"joined";if(Date.now()>=o)break;await new Promise(i=>setTimeout(i,25))}let s=await ls(e).catch(()=>{});if(s==null||s.kind!=="held-unresponsive")return null;throw new yl(e.socketPath,s,new Error(`it did not answer a ping within ${n}ms, and no second daemon was spawned because pid ${s.holder?.pid??"unknown"} still holds this socket`))}async function DT(e){let t=await Do(e.machineClaimPath,{machineIdHash:e.machineIdHash,sessionKeyHash:e.sessionKeyHash,socketPath:e.socketPath}).read().catch(()=>{});if(t!=null&&t.socket_path!==e.socketPath&&re(t.pid))throw new pr(e.machineClaimPath,"held",t)}async function of(e,r,t={}){await kl(e,t);let n;try{n=await On({socketPath:e.socketPath,timeoutMs:t.requestTimeoutMs??2e3},{...r,id:tf()})}catch(o){throw new Ur(e.socketPath,o,await ls(e).catch(()=>{}))}if(!n.ok)throw new as(n.error);return n.value}async function sf(e,r={},t={}){if(!await Ve(e.socketPath))return Ru(e.socketPath);let n;try{n=await On({socketPath:e.socketPath,timeoutMs:t.requestTimeoutMs??2e3},{id:tf(),op:"shutdown",...r.detail==null?{}:{detail:r.detail}})}catch(i){throw new Ur(e.socketPath,i)}if(!n.ok)throw new as(n.error);if(!Ii(n.value))throw new Error("redskilled daemon returned a malformed stop report");let o=n.value,s=await jT(e,o.pid,r.settleTimeoutMs??5e3);return s.complete?o:{...o,stopped:!1,detail:`${o.detail}; the daemon accepted the stop but did not finish its bounded drain by ${s.deadline}: ${s.pending.join(", ")}`}}async function jT(e,r,t){let n=Date.now()+t;for(;;){let o=[];if(await Ve(e.socketPath)&&o.push(`the socket ${JSON.stringify(e.socketPath)} still answers`),await Et(e.leasePath).catch(()=>{})&&o.push("the session lease is still held"),r!=null&&r!==process.pid&&re(r)&&o.push(`daemon pid ${r} is still alive`),o.length===0)return{complete:!0,deadline:new Date(n).toISOString(),pending:o};if(Date.now()>=n)return{complete:!1,deadline:new Date(n).toISOString(),pending:o};await new Promise(s=>setTimeout(s,25))}}async function af(e,r={}){let t=await of(e,{op:"host-state"},r);if(!Gm(t))throw new Error("redskilled daemon returned a malformed host state");return t}async function lf(e,r={},t){let n=await of(e,{op:"statusline-payload",...r.sessionProject!=null?{session_project:r.sessionProject}:{},...t==null?{}:{extras:t}},r);if(!Oa(n))throw new Error("redskilled daemon returned a malformed statusline payload");return n}async function df(e,r=B,t={}){let n=await lf(e,t,{vitals:!0,logs:r.verbose,display:!0});return Fr(n,r)}async function cf(e,r={},t={}){let n=await lf(e,t,{vitals:!0,logs:!0,display:!0});return _t(n,{...Je,...r})}async function rf(e,r,t,n){let o=Date.now()+(r.readyTimeoutMs??nf);for(;;){if(await Ve(e.socketPath))return;if(t?.failure)throw new Error(`redskilled daemon failed to start from ${JSON.stringify(t.entry.entry??t.entry.command)} (resolved as ${t.entry.source}): ${t.failure.message}`);if(Date.now()>=o){if(n!=null)throw new Error(`no redskilled daemon answered on ${JSON.stringify(e.socketPath)} within the ready window, and ${Ac(n)}`);let s=t?` from ${JSON.stringify(t.entry.entry??t.entry.command)} (resolved as ${t.entry.source})${t.exit?`, which ${t.exit}`:""}`:"";throw new Error(`redskilled daemon did not start on ${JSON.stringify(e.socketPath)}${s}`)}await new Promise(s=>setTimeout(s,25))}}async function LT(e,r){let t=r.serverCommand??(r.serverArgs!=null?process.execPath:void 0),n=await Fc({...t!=null?{serverCommand:t}:{},serverArgs:r.serverArgs},r.entryLookup??{}),o={entry:n},s=[...n.args,...Lr(e,r.idleMs==null?{}:{idleMs:r.idleMs})],i=ST(n.command,s,{detached:!0,stdio:"ignore",env:{...r.env??process.env,REDSKILLED_DAEMON:"1"}});return i.on("error",a=>{o.failure=a}),i.on("exit",(a,l)=>{o.exit=l?`died on ${l}`:`exited with code ${a??-1}`}),i.unref(),o}tr();import{readFile as GT}from"node:fs/promises";import{homedir as IT,totalmem as $T}from"node:os";import{join as CT}from"node:path";var NT="REDSKILLED_IDLE_MS",MT=".red/config.yaml";async function pf(e=IT()){let r=CT(e,MT),t;try{t=await GT(r,"utf8")}catch(n){return n.code==="ENOENT"?{}:(bl(`redskilled: cannot read host config ${JSON.stringify(r)}; using environment and defaults instead: ${uf(n)}`),{})}try{let n=WT(t);return{...ds(n,"plugins.dev.redskilled.worker_ceiling","workerCeiling"),...ds(n,"plugins.dev.redskilled.memory_ceiling","memoryCeiling"),...ds(n,"plugins.dev.redskilled.validation_ceiling","validationCeiling"),...ds(n,"plugins.dev.redskilled.idle_ms","idleMs")}}catch(n){return bl(`redskilled: malformed host config ${JSON.stringify(r)}; using environment and defaults instead: ${uf(n)}`),{}}}function mf(e={}){let r=e.env??process.env,t=e.config??{},n=Po(r,e.totalMemoryBytes??$T(),{flags:e.flags,config:t,...e.availableParallelism==null?{}:{availableParallelism:e.availableParallelism}}),o=FT(e.flags?.idleMs==null?void 0:String(e.flags.idleMs),r[NT],t.idleMs);if(o==null)return{ceiling:n,idleMs:dt,idleMsSource:"derived-default"};let s=Number(o.value);return Number.isSafeInteger(s)&&s>0?{ceiling:n,idleMs:s,idleMsSource:o.source}:(bl(`redskilled: ${HT(o.source)} idle_ms=${JSON.stringify(o.value)} is not a positive integer; using the default ${dt}ms instead.`),{ceiling:n,idleMs:dt,idleMsSource:"derived-default"})}function FT(e,r,t){if(e!==void 0)return{value:e.trim(),source:"flag"};if(r!==void 0)return{value:r.trim(),source:"environment"};if(t!==void 0)return{value:t.trim(),source:"home-config"}}function ds(e,r,t){let n=e[r];return n===void 0?{}:{[t]:n}}function WT(e){let r={},t=[];for(let[n,o]of e.split(/\r?\n/).entries()){let s=UT(o);if(s.trim()==="")continue;let i=s.match(/^ */)?.[0].length??0;if(i%2!==0||/\t/.test(s.slice(0,i)))throw new Error(`line ${n+1} has unsupported indentation`);let a=/^([A-Za-z_][A-Za-z0-9_-]*):(?:\s*(.*))?$/.exec(s.slice(i).trimEnd());if(a==null)throw new Error(`line ${n+1} is not a mapping entry`);let l=i/2;if(l>t.length)throw new Error(`line ${n+1} skips a mapping level`);t.splice(l);let d=a[1],c=a[2]??"";if(c===""){t.push(d);continue}r[[...t,d].join(".")]=BT(c.trim())}return r}function UT(e){let r;for(let t=0;t<e.length;t+=1){let n=e[t];if(r==null&&(n==="'"||n==='"'))r=n;else if(r===n)r=void 0;else if(r==null&&n==="#"&&(t===0||/\s/.test(e[t-1])))return e.slice(0,t).trimEnd()}if(r!=null)throw new Error("unclosed quoted scalar");return e}function BT(e){return e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'")?e.slice(1,-1):e}function HT(e){return e==="flag"?"serve flag":e==="environment"?"environment":e==="home-config"?"home config":"derived default"}function uf(e){return e instanceof Error?e.message:String(e)}function bl(e){process.stderr.write(`${e}
104
- `)}import{chmod as _f,mkdir as wf,readFile as Ef,stat as rx,writeFile as vf}from"node:fs/promises";import{homedir as wl}from"node:os";import{dirname as Sf,join as cs}from"node:path";import{join as qT}from"node:path";var gf=["local","tmp","host"],VT="local",Gn="plugins.dev.workspace.target";var _l=class extends Error{constructor(r){super(r),this.name="WorkspaceConfigError"}};function hf(e){let r=lt(e,Gn),t=zT(r??"").trim();return t===""?void 0:t}function yf(e){let r=(e??"").trim();if(r==="")return{kind:"preset",preset:VT};let t=gf.find(n=>n===r.toLowerCase());if(t)return{kind:"preset",preset:t};if(r.startsWith("/")||r==="~"||r.startsWith("~/"))return{kind:"custom",parentDir:r};throw new _l(`${Gn}: unknown workspace target ${JSON.stringify(r)}. Use one of the presets (${gf.join(", ")}) or an absolute parent directory for Workers.`)}function kf(e,r){return e.kind==="preset"?e.preset==="host":JT(KT(e.parentDir,r),Ue(r))}function KT(e,r){return e==="~"?ff(r):e.startsWith("~/")?qT(r,e.slice(2)):ff(e)}function JT(e,r){return e===r?!0:r==="/"?e.startsWith("/"):e.startsWith(`${r}/`)}function ff(e){let r=e.trim();return r.length>1?r.replace(/\/+$/,""):r}function zT(e){let r=e.trim(),t=/^(["'])(.*)\1$/.exec(r);return t?t[2]:r}tr();import{createHash as QT}from"node:crypto";import{hostname as YT}from"node:os";import{join as In}from"node:path";var vt="redskilled.sock",XT="REDSKILLED_SESSION";function ZT(e={}){let r=e.env??process.env,t=r[XT]?.trim();if(t)return t;let n=r.XDG_RUNTIME_DIR?.trim();return n||`uid:${e.uid??(typeof process.getuid=="function"?process.getuid():"nouid")}`}function ex(e={}){return bf(e.host??YT())}function Qe(e={}){let r=ZT(e),t=e.runtimeDir??Ro({key:`redskilled:${r}`,socketFileName:vt,env:e.env,uid:e.uid}),n=ex(e),o=e.homeDir??e.env?.HOME??(e.runtimeDir==null?process.env.HOME:e.runtimeDir)??t;return{sessionKey:r,sessionKeyHash:bf(r),machineIdHash:n,runtimeDir:t,socketPath:In(t,vt),lockPath:In(t,"redskilled.spawn.lock"),leasePath:In(t,"redskilled.lease.toon"),eventLanePath:In(Ue(o),cu),registrationIntentPath:In(t,"redskilled.registrations.toon"),machineClaimPath:e.machineClaimPath??Ao({env:e.env,machineIdHash:n,platform:e.platform})}}function bf(e){return QT("sha256").update(e).digest("hex").slice(0,12)}var Rl=`run \`/red-setup\` (Section E3 \u2014 execution daemon), or \`${Rr("red-skills-redskilled",["provision"])}\` directly`,tx=`# Host-scoped redskilled policy. This file is never read from a repository.
98
+ ${r.map(n=>` ${n}`).join(`
99
+ `)}`),this.name="RedskilledReplacementEntryError",this.searched=[...r]}};function KD(e,t={}){let r=t.env??process.env,n=t.exists??GD,o=t.execPath??process.execPath,s=t.callerEntry===void 0?process.argv[1]:t.callerEntry,i=`redskilled-${e}.bundle.min.mjs`,a=[],l=[[Vy(Xi(r),i),"bundle-cache"]];s&&l.push([Vy(WD(HD(s)),i),"caller-sibling-bundle"]);for(let[d,c]of l)if(a.push(d),n(d))return{command:o,args:[d],version:e,source:c,searched:a};if(r.RED_SKILLS_NO_PINNED_DISPATCH==="1")throw new _u(e,a);return{command:r.RED_SKILLS_NPX||"npx",args:["-y","-p",`@reddb-io/red-skills@${e}`,"red-skills-redskilled"],version:e,source:"pinned-dispatch",searched:a}}function n0(e,t={}){if(e.via==="supervisor-exit")return{via:e.via,to:e.to};let r=t.resolveEntry??(n=>KD(n,t.env==null?{}:{env:t.env}));return{via:e.via,to:e.to,entry:r(e.to)}}function o0(e,t,r={}){let n=r.io??{};if(e.via==="supervisor-exit"||e.entry==null)return(n.exit??zD)(zy),{...e,exitCode:zy};let o=[...e.entry.args,...Fn(t,r.idleMs==null?{}:{idleMs:r.idleMs})];return(n.spawnSuccessor??VD(n.env))(e.entry,o),e}function VD(e){return(t,r)=>{let n=$D(t.command,[...r],{detached:!0,stdio:"ignore",env:{...e??process.env,REDSKILLED_DAEMON:"1",[Qy]:"1"}});n.on("error",()=>{}),n.unref()}}function zD(e){process.exitCode=e,process.exit(e)}async function s0(e,t=process.env,r=JD){let n=a0(t),o=l0(e,t);if(t[UD]==="1")return{version:o,newest:n};let s=sr(e)===null?"0.0.0":e;try{let i=await Yg({fetchText:r},s);return{version:i.sameMajor??o,newest:i.newest??n}}catch{return{version:o,newest:n}}}function i0(e,t=process.env,r){let n=r??xu;return{version:l0(e,t,n),newest:a0(t,n)}}function a0(e=process.env,t=xu){return c0(d0(e,t))}function l0(e,t=process.env,r=xu){let n=sr(e.trim())?.major;return n===void 0?null:c0(d0(t,r).filter(o=>sr(o)?.major===n))}function d0(e,t){let r=[];for(let n of t(Xi(e))){let o=/^redskilled-(.+)\.bundle\.min\.mjs$/.exec(n)?.[1];!o||sr(o)===null||r.push(o)}return r}function c0(e){let t=null;for(let r of e)(t===null||bu(r,t)>0)&&(t=r);return t}function xu(e){try{return ND(e)}catch{return[]}}async function JD(e){let t=await fetch(e,{headers:{accept:"application/json"}});if(!t.ok)throw new Error(`registry read failed with HTTP ${t.status}`);return await t.text()}import{mkdir as YD,readFile as QD,rename as XD,rm as Eu,writeFile as u0}from"node:fs/promises";import{randomUUID as ZD}from"node:crypto";import{dirname as e1}from"node:path";var ja=class extends Error{constructor(t){super(`redskilled lease ${JSON.stringify(t)} is held by another owner`),this.name="RedskilledLeaseOwnershipError"}};async function Lo(e){let t;try{t=await QD(e,"utf8")}catch(n){if(n.code==="ENOENT")return;throw n}let r=t1(t);return r1(r)?r:void 0}var p0;function g0(){return p0??={pid:process.pid,startTime:new Date(Date.now()-Math.round(process.uptime()*1e3)).toISOString()},p0}function h0(e,t,r={}){let n=r.clock??(()=>new Date().toISOString()),o=r.isPidAlive??lt;async function s(){return await Lo(e)}async function i(l){let d=`${e}.${l.pid}.${ZD()}.tmp`;await u0(d,f0(l),{encoding:"utf8",mode:384}),await XD(d,e)}function a(l,d){return{version:1,pid:l.pid,start_time:l.startTime,session_key_hash:t.sessionKeyHash,machine_id_hash:t.machineIdHash,socket_path:t.socketPath,acquired_at:d,renewed_at:d}}return{read:s,async acquire(l){await YD(e1(e),{recursive:!0,mode:448});let d=!1;for(;;){let c=n(),u=a(l,c);try{return await u0(e,f0(u),{encoding:"utf8",mode:384,flag:"wx"}),{acquired:!0,reaped:d,lease:u}}catch(g){if(g.code!=="EEXIST")throw g}let p=await s();if(!p){await Eu(e,{force:!0}),d=!0;continue}if(vu(p,l))return{acquired:!0,reaped:d,lease:p};if(await o(p.pid))return{acquired:!1,lease:p};await Eu(e,{force:!0}),d=!0}},async renew(l){let d=await s();if(!d||!vu(d,l))throw new ja(e);let c={...d,renewed_at:n()};return await i(c),c},async release(l){let d=await s();if(!d)return!1;if(!vu(d,l))throw new ja(e);return await Eu(e,{force:!0}),!0}}}function vu(e,t){return e.pid===t.pid&&e.start_time===t.startTime}function f0(e){return`${nt(e,{keyedMapCollapse:!0})}
100
+ `}function t1(e){let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{try{return Ct(t)}catch{return null}}}function r1(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let t=e;if(t.version!==1||!Number.isInteger(t.pid)||t.pid<=0)return!1;for(let r of["start_time","session_key_hash","machine_id_hash","socket_path","acquired_at","renewed_at"])if(typeof t[r]!="string"||t[r].length===0)return!1;return!0}async function y0(e){let{paths:t}=e,r=e.daemonVersion??"0.0.0-dev",n=e.idleMs??_o,o=e.clock??(()=>new Date().toISOString()),s=e.launch??By,i=e.refreshTrunk??$y,a=e.countBaseMovement??Gy,l=e.ceiling??na();e.repositoryActivity!=null&&Bc(e.repositoryActivity.projects,e.repositoryActivity.hostTokenRef);let d=e.owner??g0(),c=e.leaseStore??h0(t.leasePath,{sessionKeyHash:t.sessionKeyHash,machineIdHash:t.machineIdHash,socketPath:t.socketPath},{clock:o}),u=e.machineOwner??Zh(),p={machineIdHash:t.machineIdHash,sessionKeyHash:t.sessionKeyHash,socketPath:t.socketPath},g=e.machineClaimStore??ia(t.machineClaimPath,p,{clock:o});await s1(a1(t.socketPath),{recursive:!0,mode:448});let[f,k]=await Promise.all([c.read().catch(()=>{}),g.read().catch(()=>{})]),b=Date.parse(o()),v=f==null?Number.NaN:Date.parse(f.renewed_at);f!=null&&k!=null&&f.pid===k.pid&&f.start_time===k.start_time&&f.socket_path===t.socketPath&&k.socket_path===t.socketPath&&Number.isFinite(b)&&Number.isFinite(v)&&b-v>=sh&&await Gd(t.socketPath)==="unowned"&&await c.release({pid:f.pid,startTime:f.start_time}).catch(()=>!1)&&await g.release({pid:k.pid,startTime:k.start_time,uid:k.uid}).catch(()=>!1);let $=await g.claim(u);if(!$.claimed)throw $.claim?.socket_path===t.socketPath?new Er(t.socketPath):new on(g.claimPath,$.reason,$.claim);let D=await c.acquire(d);if(!D.acquired)throw await g.release(u).catch(()=>{}),new Er(t.socketPath,D.lease);let L;try{L=await ch(t.socketPath,async()=>{let[m,A]=await Promise.all([c.read().catch(()=>{}),g.read().catch(()=>{})]);return m!=null&&m.pid!==d.pid&&lt(m.pid)?!0:A!=null&&A.socket_path===t.socketPath&&A.pid!==u.pid&&lt(A.pid)})}catch(m){throw await c.release(d).catch(()=>{}),await g.release(u).catch(()=>{}),m}let W=o(),K=e.eventLane??jh(t.eventLanePath),H=e.registrationIntentStore??ey(t.registrationIntentPath),I=e.liveness??yy,N=e.livenessGraceMs??by,V=e.stopWorker??vy,ge=e.unitInventory??(()=>Ry(t.machineClaimPath,sa({machineIdHash:t.machineIdHash}))?_y():[]),fe=e.unitMainPid??wy,de=e.treeSampler??vb,te=e.readLogTail??Ny,me=e.sampleMs??oh,Oe=e.leaseRenewMs??Bd,ve=e.registrationSustainMs??ih,ke=e.publishedVersion??(m=>s0(m)),J=e.replaceCheckMs??Yy,ie=e.publishedProbeTimeoutMs??rh,Re=e.localPublishedEvidence??(m=>i0(m,e.replacementIO?.env??process.env)),Ae=e.bornByReplacement??Xy(),Ee=e.replaceBootCheckMs??nh,we=e.supervised??r0(),Se=e.replacementIO??{},ce=e.repositoryActivity,oe=ce?.intervalMs??jc,_e=e.githubBalance,Fe=e.queueDiscovery,it=Fe?.transport??ce?.transport,$t=Fe?.unconfiguredReason??lh,Yr=Fe?.intervalMs??pu,Qr=e.demandMs??15e3,lo=e.demandBackoffMs??3e4,le=new Map,Gt=new Map,ct=new Set,Ze=new Map,wt=new Map,at=[],ut=[],Rt=e.deaths===void 0?void 0:[...e.deaths],_t=await H.read().catch(()=>[]),jr=Date.parse(W),Ce=new Map,Le=new Map;for(let m of _t){let A=Date.parse(m.renew_by);!Number.isFinite(jr)||!Number.isFinite(A)||A>=jr?Ce.set(m.project_label,m):jr-A<=m.renew_within_ms&&Le.set(m.project_label,m)}let Q=new Set,C={},w=null,F=null,M=null,B=!1,U=0,X=null,be="none",je=null,Be=null,Qt=null,hr=null,Ve=null,mr=null,Pt=[],Xt=[],re=new Map((e.orphanedRegistrations??[]).map(m=>[m.project_label,m])),ye=null,Ie={},Nt=!1,At,Wt,Xr,xn,En,vn,Ue,Sn,Zr,Br,et=!1,co=!1,$e=null,Tn,$r=new Promise(m=>{Tn=m});function Gr(m){Qp(m);let A=Date.parse(m),j=lm(Ce.values(),A);for(let G of j.lapsed){Ce.delete(G.project_label);let z=Ve?.projects.find(se=>se.project_label===G.project_label),ne=[...le.values()].some(se=>se.project_label===G.project_label);(z?.outcome==="counted"&&(z.depth??0)>0||ne)&&Le.set(G.project_label,G),B_(G,A)}return j.lapsed.length>0&&uo(),j.lapsed}function uo(){let m=new Map(Le);for(let[A,j]of Ce)m.set(A,j);H.replace([...m.values()]).catch(()=>{})}function B_(m,A){let j=Number.isFinite(A)?new Date(A).toISOString():m.renew_by;Pt.push({project_label:m.project_label,registered_at:m.registered_at,at:j,renew_by:m.renew_by,renewals:m.renewals,sustains:m.sustains??0,detail:`redskilled dropped the registration for project ${JSON.stringify(m.project_label)}: it stood until ${m.renew_by} and nothing renewed it \u2014 no session spoke for it, and no poll found it work or a Worker to hold it up`}),Pt.length>ks&&Pt.splice(0,Pt.length-ks)}function Qp(m){if(Ce.size===0)return;let A=Date.parse(m);if(!Number.isFinite(A))return;let j={};for(let se of le.values())j[se.project_label]=(j[se.project_label]??0)+1;let G=Ve==null?Number.NaN:Date.parse(Ve.fetched_at),z=new Map((Ve?.projects??[]).map(se=>[se.project_label,se])),ne=!1;for(let se of[...Ce.values()]){let Ye=Number.isFinite(G)&&A-G<=se.renew_within_ms?z.get(se.project_label):void 0,po=Xd(se,{now:m,...Ye==null?{}:{queue:{outcome:Ye.outcome,depth:Ye.depth}},liveWorkers:j[se.project_label]??0});po.registration!==se&&(Ce.set(se.project_label,po.registration),ne=!0)}ne&&uo()}function Xp(m){if(Le.size===0)return;let A=Date.parse(m);if(!Number.isFinite(A))return;let j=new Map((Ve?.projects??[]).map(z=>[z.project_label,z])),G=!1;for(let[z,ne]of[...Le]){if(A-Date.parse(ne.renew_by)>ne.renew_within_ms){Le.delete(z),G=!0;continue}let se=j.get(z),tt=Xd(ne,{now:m,...se==null?{}:{queue:{outcome:se.outcome,depth:se.depth}},liveWorkers:[...le.values()].filter(Ye=>Ye.project_label===z).length});tt.verdict==="open-work"||tt.verdict==="live-worker"?(Ce.set(z,tt.registration),Le.delete(z),G=!0):tt.verdict==="drained"&&(Le.delete(z),G=!0)}G&&uo()}function Ei(){let m=o();return Gr(m),Xb({now:m,daemonVersion:r,machineIdHash:t.machineIdHash,sessionKeyHash:t.sessionKeyHash,pid:d.pid,startedAt:W,ceiling:l,scope:em(g.claimPath,p,u),workers:[...le.values()],registrations:[...Ce.values()],demand:mr,lapses:Pt,stops:Xt,orphanedRegistrations:[...re.values()],birthLatches:Uh(Ie,Date.parse(m)),queue:Ve,published:{version:F,checkedAt:M,newer:B,replacement:be,newest:je,majorHold:Be,checks:U,holdReason:X}})}function vi(){return $b({hostState:Ei(),ceiling:l,rss:C,sampledAt:w,logLines:Object.fromEntries(Ze),displays:Object.fromEntries(wt),now:o(),reattachedWorkerIds:[...ct],repositoryActivity:Qt,githubBalance:hr,...Rt===void 0?{}:{deaths:Rt},metrics:kh({observations:at,outcomes:ut,now:o()})})}function $_(m,A){let j=Rh(at,m,A,o());at=j.observations,K.recordWorker(j.record).catch(()=>{})}function G_(m){ut=Ln([...ut,m],A=>A.ts,{now:o()})}async function Ol(){return ce==null||ce.projects.length===0?null:(Qt=await Db({projects:ce.projects,hostTokenRef:ce.hostTokenRef,transport:ce.transport,closedWindowMs:ce.closedWindowMs,now:o()}),Qt)}async function Zp(){return _e==null?null:(hr=await Ac({transport:_e.transport,now:o()}),hr)}function N_(){if(et||Zr!=null||_e==null)return;let m=()=>{Zr=void 0,Zp().catch(()=>{}).then(()=>{if(et)return;let A=_e.intervalMsOverride??Ra(hr??W_(),{now:o()});Zr=setTimeout(m,A),Zr.unref()})};m()}function W_(){return wa(o())}function H_(){if(!(it!=null||Fe?.armTransport==null))try{let m=Fe.armTransport();if(m.transport!=null){it=m.transport;return}m.unconfiguredReason!=null&&($t=m.unconfiguredReason)}catch(m){$t=`this host could not resolve a tracker credential: ${m instanceof Error?m.message:String(m)}`}}async function ef(){let m=o();Gr(m);let A=Date.parse(m);for(let[ne,se]of[...Le])Number.isFinite(A)&&A-Date.parse(se.renew_by)>se.renew_within_ms&&Le.delete(ne);let G=[...new Map([...Le,...Ce]).values()].map(ne=>({project_label:ne.project_label,selector:ne.selector,...ne.queue_poll==null?{}:{poll:ne.queue_poll}})).sort((ne,se)=>ne.project_label.localeCompare(se.project_label));if(G.length===0)return null;if(H_(),it==null)return Ve=Ay(G,m,$t),Ve;Ve=await Cy({projects:G,transport:it,now:m,...Fe?.batchSize==null?{}:{batchSize:Fe.batchSize}});let z=o();return Xp(z),Qp(z),Ve}async function tf(){let m=o();if(Nt)return mr??Gh(m);Nt=!0;try{await Fl().catch(()=>{});let A={};for(let he of le.values())A[he.project_label]=(A[he.project_label]??0)+1;let j={};for(let he of Ve?.projects??[])j[he.project_label]=he.depth;let G=Date.parse(m),z=Number.isFinite(G)?G:0;for(let[he,xt]of Object.entries(Ie)){if(xt.probeWorkerId==null)continue;let Fi=le.get(xt.probeWorkerId);Fi!=null&&z-Date.parse(Fi.started_at)>=6e4&&(Ie[he]=qd())}let ne=$h({projects:[...Ce.values()].map(he=>({project_label:he.project_label,selector:he.selector,argv:he.argv,workspace_path:he.workspace_path,target:he.target})),queue:j,live:A,nowMs:z,backoffUntilMs:ye,birthHealth:Ie}),se=[],tt=new Map,Ye=null;for(let he of ne.births){let xt,Fi=mu(le.keys()),fo=Ce.get(he.project_label),Ii=om({argv:he.argv,...fo?.env==null?{}:{env:fo.env},...fo?.log_path==null?{}:{log_path:fo.log_path}},{worker_id:Fi,slot:he.index,workspace_path:he.workspace_path},{project_label:he.project_label});try{if(fo?.trunk==null)xt=Ti(Ii);else{let Nr={workspace_path:he.workspace_path,trunk:fo.trunk},is=ss(Ii);if(!is.admitted)throw new Pr(is.reason,is);let kf=df(Nr),Mi=tt.get(kf);Mi==null&&(Mi=Dl(Nr),tt.set(kf,Mi)),xt=await cf(Ii,Nr,Mi,is)}}catch(Nr){Ye=Nr instanceof Error?Nr.message:String(Nr),Nr instanceof Pr&&Nr.admission?.verdict==="refused-unreachable-trunk-remote"||(ye=(Number.isFinite(G)?G:Date.now())+lo);break}se.push({project_label:he.project_label,worker_id:xt.worker.worker_id,pid:xt.worker.pid,...xt.fork_sha==null?{}:{fork_sha:xt.fork_sha},warnings:Ii.log_path==null?[...xt.warnings,`project ${JSON.stringify(he.project_label)} declared no log path, so no surface can show what Worker ${JSON.stringify(xt.worker.worker_id)} logs unless it publishes a line on its heartbeat`]:xt.warnings});let Ll=Ie[he.project_label];Ll?.haltUntilMs!=null&&z>=Ll.haltUntilMs&&(Ie[he.project_label]=Hh(Ll,xt.worker.worker_id))}Ye==null&&ne.births.length>0&&(ye=null);let po=new Set(se.map(he=>he.project_label));for(let he of ne.intents){if(he.queue_depth==null||he.queue_depth<=0||he.live>=he.target||po.has(he.project_label))continue;let xt=Ye!=null&&(he.outcome==="asking"||he.outcome==="half-open-probe")?`project ${JSON.stringify(he.project_label)} was birth-eligible but the host refused it: ${Ye}`:he.detail;await K.recordDemandRefusal({ts:m,projectLabel:he.project_label,detail:xt}).catch(()=>{})}return mr={version:1,at:m,requested:ne.births.length,granted:se,shortfall:ne.births.length-se.length,refusal:Ye,retry_after:ye==null?null:new Date(ye).toISOString(),projects:ne.intents},mr}finally{Nt=!1}}function U_(m){return Nn(vi(),{...Ge,mode:m?.mode??Ge.mode,project:m?.project??Ge.project,maxWorkers:m?.max_workers??Ge.maxWorkers,maxProjects:m?.max_projects??Ge.maxProjects,maxWidth:m?.max_width??Ge.maxWidth,verbose:m?.verbose??Ge.verbose})}function q_(m){return Fo(vi(),{mode:m?.mode??jt.mode,project:m?.project??jt.project,maxWidth:m?.max_width??jt.maxWidth,maxRows:m?.max_rows??jt.maxRows,maxHeight:m?.max_height??jt.maxHeight,showDeathDetails:m?.show_death_details??jt.showDeathDetails})}function Pn(m,A,j){return um({op:m,sessionProject:A??null,targetProject:j})}async function K_(m){let A=le.get(m.worker_id),j=Pn(cm(m.command),m.session_project,A?.project_label??null);if(!j.permitted)throw new Error(j.reason);if(m.command!=="stop")throw new Error(`redskilled does not implement ${m.command}: it owns birth, death and limits, and ${m.command} is a work decision the project's own bundle makes on top of them`);let G=A!=null&&await Q_(A,m.detail??"stopped by its own project");return{version:1,command:m.command,worker_id:m.worker_id,applied:G,reach:j,detail:G?`redskilled stopped Worker ${JSON.stringify(m.worker_id)} of project ${JSON.stringify(A.project_label)}`:`redskilled holds no live Worker ${JSON.stringify(m.worker_id)} to stop`}}function Si(m){le.delete(m),ct.delete(m),Ze.delete(m),wt.delete(m)}function rf(m){let A=le.get(m.worker_id),j=Pn("worker-heartbeat",m.session_project,A?.project_label??null);if(!j.permitted)throw new Error(j.reason);if(typeof m.last_log_line!="string")throw new Error("redskilled worker heartbeat last_log_line must be a string");if(A==null)return{version:1,worker_id:m.worker_id,accepted:!1,reach:j,published_at:null,detail:`redskilled holds no live Worker ${JSON.stringify(m.worker_id)} to publish a line for`};let G=o();Ze.set(m.worker_id,{line:m.last_log_line,published_at:G,source:"heartbeat"});let z=m.display===void 0?null:Iy(m.display);if(z!=null){let ne=wt.get(m.worker_id)?.display,se={display:z,published_at:G};wt.set(m.worker_id,se),$_(se,A),(z.phase!==ne?.phase||z.step!==ne?.step)&&Ht("worker-activity",A,null,{phase:z.phase,step:z.step})}return m.mechanical_heal?.heal_kind==="mechanical-regeneration"&&Ht("worker-heal",A,`${m.mechanical_heal.cause}; cycle ${m.mechanical_heal.cycle}/${m.mechanical_heal.cap}; free=${m.mechanical_heal.free}`,{healKind:m.mechanical_heal.heal_kind}),{version:1,worker_id:m.worker_id,accepted:!0,reach:j,published_at:G,detail:`redskilled stored a line for Worker ${JSON.stringify(m.worker_id)} without reading it`}}async function V_(m,A,j){let G=`exit code=${A??"null"} signal=${j??"null"}`;if(m.unit!=null&&m.unit!==""&&await J_(m)){Y_(m,`its launch client ended (${G}) while unit ${JSON.stringify(m.unit)} stayed active, so the daemon holds it by unit name from here on and its death is discovered by asking the host`);return}let z=m.log_path==null?null:$d(await te(m.log_path).catch(()=>null));Si(m.worker_id),Ht("worker-death",m,z==null?G:`session-error: ${z}`,{exitCode:A,signal:j,refusal:z}),pt()}function z_(m,A){if(!Number.isFinite(A)||A<0){Ie[m]=_s;return}let j=Ie[m]??_s,G=Wh(j,A,Date.parse(o()));Ie[m]=G,G.haltUntilMs!=null&&j.haltUntilMs==null&&process.stderr.write(`redskilled: project ${JSON.stringify(m)} lost ${G.shortLifeStreak} Workers in a row inside ${6e4}ms of birth; not asking for another until ${new Date(G.haltUntilMs).toISOString()}
101
+ `)}function nf(m,A){let j=Pn("project-reset",A,m);if(!j.permitted)throw new Error(j.reason);let G=Ie[m]?.haltUntilMs!=null||Ie[m]?.probeWorkerId!=null;return Ie[m]=qd(),{version:1,project_label:m,latch:"project-birth-breaker",reset:G,reach:j,detail:G?`redskilled cleared project ${JSON.stringify(m)}'s birth breaker; the next demand tick may birth normally`:`redskilled found no open birth breaker for project ${JSON.stringify(m)}; nothing changed`}}async function J_(m){try{return await I(m)===!0}catch{return!1}}function Y_(m,A){let j=m.unit==null?null:fe(m.unit);le.set(m.worker_id,{...m,...j!=null&&j>0?{pid:j}:{},warnings:[...m.warnings,A]}),ct.add(m.worker_id),pt()}function of(m,A){let j=Pn("project-register",A,m.project_label);if(!j.permitted)throw new Error(j.reason);let G=o();Gr(G);let z=sm(m,{now:G,held:Ce.get(m.project_label)});return Ce.set(z.project_label,z),uo(),lf(z.project_label),pt(),{version:1,registration:z,reach:j,detail:`redskilled holds a registration for project ${JSON.stringify(z.project_label)} at a target of ${z.target} until ${z.renew_by}, and has read neither its selector nor its argv`}}function sf(m,A={}){let j=Pn("project-renew",A.sessionProject,m);if(!j.permitted)throw new Error(j.reason);let G=o();Gr(G);let z=Ce.get(m);if(z==null){if(re.has(m))throw new jn(m,{kind:"orphaned"});let se=[...Xt].reverse().find(Ye=>Ye.project_label===m);if(se!=null)throw new jn(m,{kind:"stopped",at:se.at});let tt=[...Pt].reverse().find(Ye=>Ye.project_label===m);throw tt!=null?new jn(m,{kind:"lapsed",at:tt.at,...tt.registered_at==null?{}:{registered_at:tt.registered_at}}):new jn(m)}let ne=im(z,{now:G,...A.renewWithinMs==null?{}:{renew_within_ms:A.renewWithinMs},...A.launch==null?{}:{launch:A.launch}});return Ce.set(ne.project_label,ne),uo(),pt(),{version:1,registration:ne,reach:j,detail:`redskilled renewed the registration for project ${JSON.stringify(ne.project_label)}, which now stands until ${ne.renew_by} after renewal ${ne.renewals}`+(A.launch==null?"":`, carrying launch revision ${ne.launch_revision} for its next Worker`)}}function af(m,A){let j=Pn("project-deregister",A,m);if(!j.permitted)throw new Error(j.reason);let G=Ce.get(m)??Le.get(m),z=Ce.delete(m),ne=Le.delete(m),se=z||ne;if(G!=null){let tt=`redskilled released the registration for project ${JSON.stringify(m)}`;lf(m),Xt.push({project_label:m,registered_at:G.registered_at,at:o(),detail:tt}),Xt.length>ks&&Xt.splice(0,Xt.length-ks)}return se&&uo(),{version:1,project_label:m,released:se,reach:j,detail:se?`redskilled released the registration for project ${JSON.stringify(m)}`:`redskilled held no registration for project ${JSON.stringify(m)}, so there was nothing to release`}}function lf(m){Le.delete(m);for(let A=Pt.length-1;A>=0;A-=1)Pt[A].project_label===m&&Pt.splice(A,1);for(let A=Xt.length-1;A>=0;A-=1)Xt[A].project_label===m&&Xt.splice(A,1);re.delete(m)}async function Q_(m,A){try{await V(m)}catch{}return Si(m.worker_id),Ht("worker-death",m,A),pt(),!0}function ss(m){return Dh({ceiling:l,workers:[...le.values()],budget:m.budget,projectLabel:m.project_label,...m.reservation==null?{}:{reservation:m.reservation}})}function df(m){return`${m.workspace_path}\0${m.trunk.remote}\0${m.trunk.branch}`}function Dl(m){let A=df(m),j=Gt.get(A);if(j!=null)return j;let G=i(m).finally(()=>{Gt.get(A)===G&&Gt.delete(A)});return Gt.set(A,G),G}function X_(m,A,j){let G=j instanceof Error?j.message:String(j);return{...m,admitted:!1,verdict:"refused-unreachable-trunk-remote",reason:`refused-unreachable-trunk-remote: redskilled refused this Worker because trunk remote ${JSON.stringify(A.trunk.remote)} could not refresh branch ${JSON.stringify(A.trunk.branch)}: ${G}`}}async function cf(m,A,j,G){let z=G??ss(m);if(!z.admitted)throw new Pr(z.reason,z);let ne;try{ne=await(j??Dl(A))}catch(tt){let Ye=X_(z,A,tt);throw new Pr(Ye.reason,Ye)}let se=ss(m);if(!se.admitted)throw new Pr(se.reason,se);return Ti(m,{admission:se,forkSha:ne})}function Ti(m,A={}){let j=Fh({ceiling:l,workers:[...le.values()],budget:m.budget}),G=s({spec:m,admission:A.admission??ss(m),...A.forkSha==null?{}:{forkSha:A.forkSha},memoryCeiling:j,liveWorkerIds:le.keys(),clock:o,onExit:(tt,Ye,po)=>{let he=le.get(tt);if(he==null){pt();return}V_(he,Ye,po).catch(()=>{})}}),z=A.forkSha??G.fork_sha??G.worker.fork_sha,ne=z==null||z===""?G.worker:{...G.worker,fork_sha:z},se={...G,worker:ne,...z==null||z===""?{}:{fork_sha:z}};return le.set(ne.worker_id,ne),Ht("worker-birth",ne,null,{admissionVerdict:A.admission?.verdict??G.admission.verdict}),pt(),se}function Ht(m,A,j,G={}){if(et)return;let z=o(),ne={kind:m,worker:A,ts:z,detail:j,...G};(m==="worker-death"||m==="worker-budget-kill")&&(G_({worker_id:A.worker_id,ts:z,outcome:m}),uf(oa(ne),{startedAt:A.started_at,...G.refusal==null?{}:{refusal:G.refusal}}),z_(A.project_label,Date.parse(z)-Date.parse(A.started_at))),K.recordWorker(ne).catch(()=>{})}function uf(m,A={}){let j=ah(m,A);if(j==null)return;let G=[j,...(Rt??[]).filter(z=>z.kind!==j.kind||z.id!==j.id||z.ts!==j.ts)].sort((z,ne)=>Date.parse(z.ts)-Date.parse(ne.ts));Rt=Ln(G,z=>z.ts,{now:o()})}async function Fl(){let m=Date.parse(o()),A=[...le.values()].filter(G=>{if(ct.has(G.worker_id))return!0;let z=Date.parse(G.started_at);return!Number.isFinite(z)||m-z>=N});if(A.length===0)return[];let{dead:j}=await cu(A,I);for(let G of j)Si(G.worker_id),Ht("worker-death",G,"the host no longer confirms this Worker");return j.length>0&&pt(),j}async function pf(m,A){let j=le.get(m);if(!j)return!1;try{await V(j)}catch{}return Si(m),Ht("worker-budget-kill",j,A),pt(),!0}async function ff(){let m=[...le.values()];if(m.length===0)return[];let A;try{A=await de(m)}catch{return[]}let j=A.rss;C=j,w=o(),Z_(A.cpu_seconds,w);let{terminations:G}=Eb({workers:m,rss:j}),z=[];for(let ne of G)await pf(ne.worker_id,ne.reason)&&z.push(ne);return z}function Z_(m,A){for(let[j,G]of Object.entries(m)){if(typeof G!="number"||!Number.isFinite(G))continue;let z=le.get(j);z&&le.set(j,{...z,cpu:{cpu_seconds:G,sampled_at:A}})}}async function ex(){try{return ie<=0?await ke(r):await new Promise(m=>{let A=setTimeout(()=>m(Il()),ie);A.unref(),ke(r).then(j=>{clearTimeout(A),m(j)},()=>{clearTimeout(A),m(Il())})})}catch{return Il()}}function Il(){try{return Re(r)}catch{return null}}async function gf(){if(qs(r))return U+=1,M=o(),X="local-build",{act:"hold",reason:"local-build"};let m=Zy(await ex()),A=m.version;F=A,je=m.newest??null,M=o(),Be=e0({running:r,newest:je,supervised:we});let j=t0({running:r,published:A,supervised:we});return B=j.act==="replace",U+=1,X=j.act==="hold"?j.reason:null,be!=="in-progress"&&(be=j.act==="replace"?"pending":"none"),j}async function Pi(){let m=await gf();if(m.act!=="replace"||be==="in-progress")return m;let A=n0(m,Se);return be="in-progress",await K.flush().catch(()=>{}),await H.flush().catch(()=>{}),await Ci({reason:"replaced"}),o0(A,t,{...n==null?{}:{idleMs:n},io:Se}),m}function tx(){et||vn!=null||J<=0||(!Ae&&Ee>0&&(Ue=setTimeout(()=>{Pi().catch(()=>{})},Ee),Ue.unref()),vn=setInterval(()=>{Pi().catch(()=>{})},J),vn.unref())}async function hf(){return await c.renew(d).catch(()=>null)}function rx(){et||Xr!=null||Oe<=0||(Xr=setInterval(()=>{hf()},Oe),Xr.unref())}function nx(){et||xn!=null||ve<=0||(xn=setInterval(()=>{Gr(o())},ve),xn.unref())}function ox(){et||Wt!=null||me<=0||(Wt=setInterval(()=>{ff().catch(()=>{})},me),Wt.unref())}function sx(){et||Sn!=null||ce==null||ce.projects.length===0||oe<=0||(Ol().catch(()=>{}),Sn=setInterval(()=>{Ol().catch(()=>{})},oe),Sn.unref())}function ix(){if(et||Br!=null||Yr<=0)return;let m=A=>{Br=setTimeout(()=>{Br=void 0,mf().then(()=>ef()).catch(()=>{}).finally(()=>{if(et)return;let j=Date.parse(o());m(Fy(Ve,Yr,Number.isFinite(j)?j:Date.now()))})},A),Br.unref()};m(Yr)}async function mf(){await Promise.allSettled([...Ce.values()].filter(m=>m.trunk!=null).map(async m=>{let A=await Dl({workspace_path:m.workspace_path,trunk:m.trunk}),j=[...le.values()].filter(G=>G.project_label===m.project_label&&G.fork_sha!=null&&G.fork_sha!=="");await Promise.allSettled(j.map(async G=>{let z=await a({workspace_path:m.workspace_path,fork_sha:G.fork_sha,head_sha:A}),ne=le.get(G.worker_id);if(ne==null||ne.fork_sha!==G.fork_sha)return;let se={...ne,base_head_sha:A,base_commits_ahead:z};le.set(G.worker_id,se),(ne.base_head_sha!==A||ne.base_commits_ahead!==z)&&Ht("worker-drift",se,null,{baseHeadSha:A,baseCommitsAhead:z})}))}))}function ax(){et||En!=null||Qr<=0||(En=setInterval(()=>{tf().catch(()=>{})},Qr),En.unref())}function pt(){et||(At&&clearTimeout(At),At=setTimeout(()=>{Fl().catch(()=>{}).then(()=>bf())},n),At.unref())}function bf(){return le.size>0?(pt(),"held-by-workers"):(Gr(o()),Ce.size>0?(pt(),"held-by-registrations"):(lx(),"exited"))}async function lx(){if(!qs(r)){if((await Pi().catch(()=>null))?.act==="replace"||co||et)return;if(le.size>0||Ce.size>0){pt();return}}await Ci({reason:"idle"})}function Ai(m){return Kh({reason:m,socketPath:t.socketPath,daemonVersion:r,pid:d.pid,workers:[...le.values()],projects:[...Ce.keys()]})}function yf(m){if($e!=null)return $e;let A=m.reason??"requested",j=m.note?.trim();return $e=K.recordDaemonStop({ts:o(),pid:d.pid,socketPath:t.socketPath,reason:A,detail:j==null||j===""?Ai(A).detail:`${Ai(A).detail} \u2014 ${j}`,...m.signal==null?{}:{signal:m.signal}}).catch(()=>{}),$e}async function Ci(m={}){if(co)return await $r;co=!0,await yf(m),et=!0,At&&clearTimeout(At),Wt&&clearInterval(Wt),Xr&&clearInterval(Xr),xn&&clearInterval(xn),vn&&clearInterval(vn),Ue&&clearTimeout(Ue),Sn&&clearInterval(Sn),Zr&&clearTimeout(Zr),Br&&clearTimeout(Br),En&&clearInterval(En),await K.flush().catch(()=>{}),await H.flush().catch(()=>{}),await c.release(d),await g.release(u),L.close();for(let A of Q)A.destroy();return await new Promise(A=>L.once("close",()=>A())),await i1(t.socketPath,{force:!0}),Tn(),await $r}let Oi=await K.read().catch(()=>[]),Di=new Map;for(let m of Oi){if(m.event==="worker-birth"){Di.set(m.worker_id,m.ts);continue}let A=$d(m.detail);uf(m,{...Di.get(m.worker_id)==null?{}:{startedAt:Di.get(m.worker_id)},...A==null?{}:{refusal:A}}),(m.event==="worker-death"||m.event==="worker-budget-kill")&&Di.delete(m.worker_id)}ut=Ln(Oi.filter(m=>m.event==="worker-death"||m.event==="worker-budget-kill").map(m=>({worker_id:m.worker_id,ts:m.ts,outcome:m.event})),m=>m.ts,{now:o()}),at=_h(Oi,o());let dx=Bh(Oi),Ml=await cu(dx,I);for(let m of Ml.alive){let A=Ey(m),j=A.unit==null||lt(A.pid)?null:fe(A.unit);le.set(A.worker_id,j!=null&&j>0?{...A,pid:j}:A),ct.add(A.worker_id)}for(let m of Ml.dead)Ht("worker-death",m,"the Worker ended while no daemon was watching");let cx=xy({units:await Promise.resolve(ge()).catch(()=>[]),held:[...le.values()],mainPid:fe,now:W});for(let m of cx)le.set(m.worker_id,m),ct.add(m.worker_id),Ht("worker-birth",m,"adopted from an active unit with no birth on this lane");Xp(o());for(let m of Ml.alive){if(m.log_path==null||Ze.has(m.worker_id))continue;let A=await te(m.log_path).catch(()=>null);A==null||A.trim()===""||Ze.set(m.worker_id,{line:A,published_at:o(),source:"rehydrated"})}L.on("connection",m=>{Q.add(m),m.once("close",()=>Q.delete(m)),pt(),uh(m,async(A,j)=>{pt();let G=await ux(A);j(G),A.op==="shutdown"&&setImmediate(()=>void Ci({reason:"requested"}).catch(()=>{}))})});async function ux(m){try{if(m.op==="ping")return{id:m.id,ok:!0,value:{pong:!0,protocol_version:Oa,daemon_version:r,pid:d.pid}};if(m.op==="host-state")return{id:m.id,ok:!0,value:Ei()};if(m.op==="statusline-payload")return{id:m.id,ok:!0,value:Bb(vi(),m.extras)};if(m.op==="statusline-string")return{id:m.id,ok:!0,value:U_(m.render)};if(m.op==="statusline-dashboard")return{id:m.id,ok:!0,value:q_(m.dashboard)};if(m.op==="worker-heartbeat")return{id:m.id,ok:!0,value:rf(m.heartbeat)};if(m.op==="project-register"){let j=of(m.registration,m.session_project);return await H.flush(),{id:m.id,ok:!0,value:j}}if(m.op==="project-renew"){let j=sf(m.project_label,{...m.session_project==null?{}:{sessionProject:m.session_project},...m.renew_within_ms==null?{}:{renewWithinMs:m.renew_within_ms},...m.launch==null?{}:{launch:m.launch}});return await H.flush(),{id:m.id,ok:!0,value:j}}if(m.op==="project-deregister"){let j=af(m.project_label,m.session_project);return await H.flush(),{id:m.id,ok:!0,value:j}}if(m.op==="project-reset")return{id:m.id,ok:!0,value:nf(m.project_label,m.session_project)};if(m.op==="worker-command")return{id:m.id,ok:!0,value:await K_(m.command)};if(m.op==="worker-start"){let j=Pn("worker-start",m.session_project,m.spec.project_label);if(!j.permitted)return{id:m.id,ok:!1,error:j.reason};let G=m.spec.trunk==null?Ti(m.spec):await cf(m.spec,{workspace_path:m.spec.workspace_path,trunk:m.spec.trunk});return await K.flush().catch(()=>{}),{id:m.id,ok:!0,value:{worker:G.worker,admission:G.admission,fork_sha:G.fork_sha,warnings:G.warnings}}}if(m.op==="shutdown"){let j=Ai("requested");return await yf({reason:"requested",...m.detail==null?{}:{note:m.detail}}),{id:m.id,ok:!0,value:j}}let A=m;return{id:A.id??b0(),ok:!1,error:`unsupported redskilled op: ${A.op??"unknown"}`}}catch(A){return{id:m.id??b0(),ok:!1,error:A instanceof Error?A.message:String(A)}}}return pt(),ox(),rx(),nx(),tx(),sx(),N_(),ix(),ax(),{socketPath:t.socketPath,lease:D.lease,startedAt:W,closed:$r,startWorker:Ti,admit:ss,ceiling:()=>l,killWorkerOverBudget:pf,sampleMemoryBudgets:ff,renewLease:hf,pollRepositoryActivity:Ol,pollGithubBalance:Zp,githubBalance:()=>hr,pollQueueDiscovery:ef,queueDiscovery:()=>Ve,driveDemand:tf,demand:()=>mr,sweepWorkerLiveness:Fl,publishWorkerHeartbeat:rf,reattached:()=>[...ct].map(m=>le.get(m)).filter(m=>m!=null),flushEvents:()=>K.flush(),trackWorker(m){le.set(m.worker_id,m),Ht("worker-birth",m,null),pt()},releaseWorker(m){let A=le.get(m),j=le.delete(m);return ct.delete(m),Ze.delete(m),wt.delete(m),A&&Ht("worker-death",A,"released by the daemon"),pt(),j},workerCount:()=>le.size,registerProject:of,renewProject:sf,resetProjectBirthBreaker:nf,deregisterProject:af,registrations:()=>Ei().registrations??[],hostState:Ei,refreshRegisteredTrunks:mf,statuslinePayload:vi,evaluateIdle:bf,observePublishedVersion:gf,checkForReplacement:Pi,stopReport:Ai,stop:Ci}}function Su(e){let t=e.socketPath,r=l1(e);return e.answers?{version:1,kind:"answering",socket_path:t,holder:r,reason:`a redskilled daemon answered on ${JSON.stringify(t)}`,repair:"nothing to repair"}:r!=null?{version:1,kind:"held-unresponsive",socket_path:t,holder:r,reason:`redskilled pid ${r.pid} is alive and has held ${JSON.stringify(t)} since ${r.acquired_at}${r.uptime_ms==null?"":` (up ${k0(r.uptime_ms)})`}, but it did not answer a ping \u2014 this is a daemon that could not be REACHED, not one that is missing.`,repair:`Do not provision: a daemon is already running. Inspect it (\`ps -p ${r.pid}\`), or stop it with \`${gn("red-skills-redskilled",["stop"])}\` and let the next client start a fresh one.`}:{version:1,kind:"absent",socket_path:t,holder:null,reason:`nothing answered on ${JSON.stringify(t)} and no live process holds its lease`,repair:`Install and start one with \`${gn("red-skills-redskilled",["provision"])}\` (or \`/red-setup\`), then retry.`}}function Tu(e){return`${e.reason} ${e.repair}`}function l1(e){let t=e.lease;return t==null||e.holderAlive!==!0||t.socket_path!==e.socketPath?null:{pid:t.pid,socket_path:t.socket_path,acquired_at:t.acquired_at,renewed_at:t.renewed_at,uptime_ms:d1(t.acquired_at,e.now??new Date().toISOString())}}function d1(e,t){let r=Date.parse(e),n=Date.parse(t);return!Number.isFinite(r)||!Number.isFinite(n)?null:Math.max(0,n-r)}function k0(e){let t=Math.floor(e/1e3),r=Math.floor(t/3600),n=Math.floor(t%3600/60),o=t%60;return r>0?`${r}h${String(n).padStart(2,"0")}m`:n>0?`${n}m${String(o).padStart(2,"0")}s`:`${o}s`}Hr();var _0=1e4,Hn=class extends Error{constructor(r,n,o){super(`redskilled daemon is unreachable on ${JSON.stringify(r)}, so no Worker was started: ${n instanceof Error?n.message:String(n)}${o!=null&&o.kind==="held-unresponsive"?`. ${Tu(o)}`:""}`);this.socketPath=r;this.cause=n;this.presence=o;this.name="RedskilledUnreachableError"}},Pu=class extends Hn{constructor(r,n,o){super(r,o,n);this.presence=n;this.name="RedskilledDaemonHeldError"}},Ba=class extends Error{constructor(r){super(r);this.refusal=r;this.name="RedskilledRequestRefusedError"}};async function $a(e,t={}){let r=t.answers??await vr(e.socketPath),n=await Lo(e.leasePath).catch(()=>{});return Su({socketPath:e.socketPath,answers:r,lease:n,holderAlive:n!=null&&lt(n.pid)})}async function Au(e,t={}){try{return await f1(e,t)}catch(r){if(r instanceof on||r instanceof Hn)throw r;let n=await $a(e).catch(()=>{});throw new Hn(e.socketPath,r,n)}}async function f1(e,t){if(await u1(p1(e.socketPath),{recursive:!0,mode:448}),await vr(e.socketPath))return"already-running";await m1(e);let r=await h1(e,t);if(r!=null)return r;let n=await Hg(e.lockPath,{...t.spawnLockMaxAgeMs==null?{}:{maxAgeMs:t.spawnLockMaxAgeMs},onReap:t.onSpawnLockReaped??g1});if(!n.acquired)return await w0(e,t,void 0,n),"joined";try{if(await vr(e.socketPath))return"already-running";let o=await y1(e,t);return await w0(e,t,o),"spawned"}finally{await Ug(n)}}function g1(e){process.stderr.write(`redskilled: reaped the spawn lock ${JSON.stringify(e.lockPath)} (${e.reason}, ${Math.round(e.ageMs/1e3)}s old, holder ${e.holder==null?"unnamed":`pid ${e.holder.pid}`}) and went on to spawn
102
+ `)}async function h1(e,t){let r=await $a(e,{answers:!1}).catch(()=>{});if(r==null||r.kind!=="held-unresponsive")return null;let n=t.readyTimeoutMs??_0,o=Date.now()+n;for(;;){if(await vr(e.socketPath))return"joined";if(Date.now()>=o)break;await new Promise(i=>setTimeout(i,25))}let s=await $a(e).catch(()=>{});if(s==null||s.kind!=="held-unresponsive")return null;throw new Pu(e.socketPath,s,new Error(`it did not answer a ping within ${n}ms, and no second daemon was spawned because pid ${s.holder?.pid??"unknown"} still holds this socket`))}async function m1(e){let r=await ia(e.machineClaimPath,{machineIdHash:e.machineIdHash,sessionKeyHash:e.sessionKeyHash,socketPath:e.socketPath}).read().catch(()=>{});if(r!=null&&r.socket_path!==e.socketPath&&lt(r.pid))throw new on(e.machineClaimPath,"held",r)}async function x0(e,t,r={}){await Au(e,r);let n;try{n=await Ns({socketPath:e.socketPath,timeoutMs:r.requestTimeoutMs??2e3},{...t,id:R0()})}catch(o){throw new Hn(e.socketPath,o,await $a(e).catch(()=>{}))}if(!n.ok)throw new Ba(n.error);return n.value}async function E0(e,t={},r={}){if(!await vr(e.socketPath))return Vh(e.socketPath);let n;try{n=await Ns({socketPath:e.socketPath,timeoutMs:r.requestTimeoutMs??2e3},{id:R0(),op:"shutdown",...t.detail==null?{}:{detail:t.detail}})}catch(i){throw new Hn(e.socketPath,i)}if(!n.ok)throw new Ba(n.error);if(!Kd(n.value))throw new Error("redskilled daemon returned a malformed stop report");let o=n.value,s=await b1(e,o.pid,t.settleTimeoutMs??5e3);return s.complete?o:{...o,stopped:!1,detail:`${o.detail}; the daemon accepted the stop but did not finish its bounded drain by ${s.deadline}: ${s.pending.join(", ")}`}}async function b1(e,t,r){let n=Date.now()+r;for(;;){let o=[];if(await vr(e.socketPath)&&o.push(`the socket ${JSON.stringify(e.socketPath)} still answers`),await Lo(e.leasePath).catch(()=>{})&&o.push("the session lease is still held"),t!=null&&t!==process.pid&&lt(t)&&o.push(`daemon pid ${t} is still alive`),o.length===0)return{complete:!0,deadline:new Date(n).toISOString(),pending:o};if(Date.now()>=n)return{complete:!1,deadline:new Date(n).toISOString(),pending:o};await new Promise(s=>setTimeout(s,25))}}async function v0(e,t={}){let r=await x0(e,{op:"host-state"},t);if(!Zb(r))throw new Error("redskilled daemon returned a malformed host state");return r}async function S0(e,t={},r){let n=await x0(e,{op:"statusline-payload",...t.sessionProject!=null?{session_project:t.sessionProject}:{},...r==null?{}:{extras:r}},t);if(!$c(n))throw new Error("redskilled daemon returned a malformed statusline payload");return n}async function T0(e,t=Ge,r={}){let n=await S0(e,r,{vitals:!0,logs:t.verbose,display:!0});return Nn(n,t)}async function P0(e,t={},r={}){let n=await S0(e,r,{vitals:!0,logs:!0,display:!0});return Fo(n,{...jt,...t})}async function w0(e,t,r,n){let o=Date.now()+(t.readyTimeoutMs??_0);for(;;){if(await vr(e.socketPath))return;if(r?.failure)throw new Error(`redskilled daemon failed to start from ${JSON.stringify(r.entry.entry??r.entry.command)} (resolved as ${r.entry.source}): ${r.failure.message}`);if(Date.now()>=o){if(n!=null)throw new Error(`no redskilled daemon answered on ${JSON.stringify(e.socketPath)} within the ready window, and ${qg(n)}`);let s=r?` from ${JSON.stringify(r.entry.entry??r.entry.command)} (resolved as ${r.entry.source})${r.exit?`, which ${r.exit}`:""}`:"";throw new Error(`redskilled daemon did not start on ${JSON.stringify(e.socketPath)}${s}`)}await new Promise(s=>setTimeout(s,25))}}async function y1(e,t){let r=t.serverCommand??(t.serverArgs!=null?process.execPath:void 0),n=await th({...r!=null?{serverCommand:r}:{},serverArgs:t.serverArgs},t.entryLookup??{}),o={entry:n},s=[...n.args,...Fn(e,t.idleMs==null?{}:{idleMs:t.idleMs})],i=c1(n.command,s,{detached:!0,stdio:"ignore",env:{...t.env??process.env,REDSKILLED_DAEMON:"1"}});return i.on("error",a=>{o.failure=a}),i.on("exit",(a,l)=>{o.exit=l?`died on ${l}`:`exited with code ${a??-1}`}),i.unref(),o}Hr();import{readFile as k1}from"node:fs/promises";import{homedir as w1,totalmem as R1}from"node:os";import{join as _1}from"node:path";var x1="REDSKILLED_IDLE_MS",E1=".red/config.yaml";async function C0(e=w1()){let t=_1(e,E1),r;try{r=await k1(t,"utf8")}catch(n){return n.code==="ENOENT"?{}:(Cu(`redskilled: cannot read host config ${JSON.stringify(t)}; using environment and defaults instead: ${A0(n)}`),{})}try{let n=S1(r);return{...Ga(n,"plugins.dev.redskilled.worker_ceiling","workerCeiling"),...Ga(n,"plugins.dev.redskilled.memory_ceiling","memoryCeiling"),...Ga(n,"plugins.dev.redskilled.validation_ceiling","validationCeiling"),...Ga(n,"plugins.dev.redskilled.idle_ms","idleMs")}}catch(n){return Cu(`redskilled: malformed host config ${JSON.stringify(t)}; using environment and defaults instead: ${A0(n)}`),{}}}function O0(e={}){let t=e.env??process.env,r=e.config??{},n=na(t,e.totalMemoryBytes??R1(),{flags:e.flags,config:r,...e.availableParallelism==null?{}:{availableParallelism:e.availableParallelism}}),o=v1(e.flags?.idleMs==null?void 0:String(e.flags.idleMs),t[x1],r.idleMs);if(o==null)return{ceiling:n,idleMs:_o,idleMsSource:"derived-default"};let s=Number(o.value);return Number.isSafeInteger(s)&&s>0?{ceiling:n,idleMs:s,idleMsSource:o.source}:(Cu(`redskilled: ${A1(o.source)} idle_ms=${JSON.stringify(o.value)} is not a positive integer; using the default ${_o}ms instead.`),{ceiling:n,idleMs:_o,idleMsSource:"derived-default"})}function v1(e,t,r){if(e!==void 0)return{value:e.trim(),source:"flag"};if(t!==void 0)return{value:t.trim(),source:"environment"};if(r!==void 0)return{value:r.trim(),source:"home-config"}}function Ga(e,t,r){let n=e[t];return n===void 0?{}:{[r]:n}}function S1(e){let t={},r=[];for(let[n,o]of e.split(/\r?\n/).entries()){let s=T1(o);if(s.trim()==="")continue;let i=s.match(/^ */)?.[0].length??0;if(i%2!==0||/\t/.test(s.slice(0,i)))throw new Error(`line ${n+1} has unsupported indentation`);let a=/^([A-Za-z_][A-Za-z0-9_-]*):(?:\s*(.*))?$/.exec(s.slice(i).trimEnd());if(a==null)throw new Error(`line ${n+1} is not a mapping entry`);let l=i/2;if(l>r.length)throw new Error(`line ${n+1} skips a mapping level`);r.splice(l);let d=a[1],c=a[2]??"";if(c===""){r.push(d);continue}t[[...r,d].join(".")]=P1(c.trim())}return t}function T1(e){let t;for(let r=0;r<e.length;r+=1){let n=e[r];if(t==null&&(n==="'"||n==='"'))t=n;else if(t===n)t=void 0;else if(t==null&&n==="#"&&(r===0||/\s/.test(e[r-1])))return e.slice(0,r).trimEnd()}if(t!=null)throw new Error("unclosed quoted scalar");return e}function P1(e){return e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'")?e.slice(1,-1):e}function A1(e){return e==="flag"?"serve flag":e==="environment"?"environment":e==="home-config"?"home config":"derived default"}function A0(e){return e instanceof Error?e.message:String(e)}function Cu(e){process.stderr.write(`${e}
103
+ `)}import{chmod as $0,mkdir as N0,readFile as W0,stat as U1,writeFile as H0}from"node:fs/promises";import{homedir as Fu}from"node:os";import{dirname as U0,join as Na}from"node:path";import{join as I1}from"node:path";import{existsSync as C1,readFileSync as P4}from"node:fs";import{dirname as O1,join as D1}from"node:path";function D0(e,t){let r=e;for(let n=0;n<16;n++){let o=D1(r,t);if(C1(o))return o;let s=O1(r);if(s===r)break;r=s}return null}function F1(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function jo(e,t){let r=[];for(let n of e.split(`
104
+ `)){let o=n.replace(/\r$/,""),s=o.trim();if(!s||s.startsWith("#"))continue;let i=o.indexOf(":");if(i<0)continue;let a=o.length-o.trimStart().length,l=o.slice(0,i).trim();if(!l)continue;let d=o.slice(i+1).trim();for(;r.length&&r[r.length-1].indent>=a;)r.pop();if(r.push({indent:a,key:l}),d&&r.map(u=>u.key).join(".")===t)return F1(d)}}var F0=["local","tmp","host"],M1="local",Ks="plugins.dev.workspace.target";var Ou=class extends Error{constructor(t){super(t),this.name="WorkspaceConfigError"}};function M0(e){let t=jo(e,Ks),r=B1(t??"").trim();return r===""?void 0:r}function L0(e){let t=(e??"").trim();if(t==="")return{kind:"preset",preset:M1};let r=F0.find(n=>n===t.toLowerCase());if(r)return{kind:"preset",preset:r};if(t.startsWith("/")||t==="~"||t.startsWith("~/"))return{kind:"custom",parentDir:t};throw new Ou(`${Ks}: unknown workspace target ${JSON.stringify(t)}. Use one of the presets (${F0.join(", ")}) or an absolute parent directory for Workers.`)}function j0(e,t){return e.kind==="preset"?e.preset==="host":j1(L1(e.parentDir,t),Rr(t))}function L1(e,t){return e==="~"?I0(t):e.startsWith("~/")?I1(t,e.slice(2)):I0(e)}function j1(e,t){return e===t?!0:t==="/"?e.startsWith("/"):e.startsWith(`${t}/`)}function I0(e){let t=e.trim();return t.length>1?t.replace(/\/+$/,""):t}function B1(e){let t=e.trim(),r=/^(["'])(.*)\1$/.exec(t);return r?r[2]:t}Hr();import{createHash as $1}from"node:crypto";import{hostname as G1}from"node:os";import{join as Vs}from"node:path";var Bo="redskilled.sock",N1="REDSKILLED_SESSION";function W1(e={}){let t=e.env??process.env,r=t[N1]?.trim();if(r)return r;let n=t.XDG_RUNTIME_DIR?.trim();return n||`uid:${e.uid??(typeof process.getuid=="function"?process.getuid():"nouid")}`}function H1(e={}){return B0(e.host??G1())}function ir(e={}){let t=W1(e),r=e.runtimeDir??Yi({key:`redskilled:${t}`,socketFileName:Bo,env:e.env,uid:e.uid}),n=H1(e),o=e.homeDir??e.env?.HOME??(e.runtimeDir==null?process.env.HOME:e.runtimeDir)??r;return{sessionKey:t,sessionKeyHash:B0(t),machineIdHash:n,runtimeDir:r,socketPath:Vs(r,Bo),lockPath:Vs(r,"redskilled.spawn.lock"),leasePath:Vs(r,"redskilled.lease.toon"),eventLanePath:Vs(Rr(o),Lh),registrationIntentPath:Vs(r,"redskilled.registrations.toon"),machineClaimPath:e.machineClaimPath??sa({env:e.env,machineIdHash:n,platform:e.platform})}}function B0(e){return $1("sha256").update(e).digest("hex").slice(0,12)}var Du=`run \`/red-setup\` (Section E3 \u2014 execution daemon), or \`${gn("red-skills-redskilled",["provision"])}\` directly`,q1=`# Host-scoped redskilled policy. This file is never read from a repository.
105
105
  plugins:
106
106
  dev:
107
107
  redskilled:
@@ -109,8 +109,125 @@ plugins:
109
109
  # memory_ceiling: 8G
110
110
  # validation_ceiling: 2
111
111
  # idle_ms: 300000
112
- `;async function Tf(e=wl()){let r=Ue(e),t=cs(Sf(r),"config.yaml"),n=await vl(r),o=!1,s=!1;n===void 0?(await wf(r,{recursive:!0,mode:rr}),await _f(r,rr),o=!0):n!==rr&&(await _f(r,rr),s=!0);let i=!1;try{await vf(t,tx,{encoding:"utf8",flag:"wx",mode:384}),i=!0}catch(a){if(a.code!=="EEXIST")throw a}return{path:r,created:o,tightened:s,mode:rr,configPath:t,configCreated:i}}var xf={needed:!1,declaredBy:`no ${Gn} in view`};async function El(e={}){let r=e.homeDir??wl(),t=e.declaredTarget?.trim();if(t)return Rf(t,r,"stated on the command line");let n=e.projectRoot?.trim();if(!n)return xf;let o=cs(n,".red","config.yaml"),s=await Ef(o,"utf8").catch(()=>{});if(s===void 0)return{needed:!1,declaredBy:`no ${o}`};let i=hf(s);return i===void 0?{needed:!1,declaredBy:`${o} declares no workspace target (default local)`}:Rf(i,r,o)}function Rf(e,r,t){let n=`${Gn}: ${e} (${t})`;try{return{needed:kf(yf(e),r),declaredBy:n}}catch{return{needed:!1,declaredBy:`${n} \u2014 off-contract, so it names no lane under the home`}}}function Pf(e){let r=[nx(e),ox(e),sx(e),ix(e)],t=r.filter(o=>o.verdict!=="ok");return{verdict:t.some(o=>o.verdict==="missing")?"missing":t.length>0?"degraded":"ok",rows:r,findings:t}}function nx(e){let r=e.homeNeed??xf;if(!e.homePresent)return r.needed?{check:"home",verdict:"missing",evidence:`${e.homePath} does not exist, and it is needed \u2014 ${r.declaredBy}`,fix:Rl}:{check:"home",verdict:"ok",evidence:`${e.homePath} is absent and unneeded \u2014 ${r.declaredBy}; the daemon never reads it`,fix:""};let t=e.homeMode??rr;return t!==rr?{check:"home",verdict:"degraded",evidence:`${e.homePath} is mode ${t.toString(8)}, not owner-only ${rr.toString(8)}`,fix:`${Rl} \u2014 it narrows the home back to owner-only`}:{check:"home",verdict:"ok",evidence:`${e.homePath} (mode ${t.toString(8)})`,fix:""}}function ox(e){return He(e.entry)?{check:"daemon-entry",verdict:"ok",evidence:`${e.entry.entry??e.entry.command} (resolved as ${e.entry.source})`,fix:""}:{check:"daemon-entry",verdict:"missing",evidence:`no published redskilled bundle; probed ${e.entry.searched.join(", ")||"nothing"}`,fix:`install or warm the RedSkills bundle for this host, then re-run \`${Rr("red-skills-redskilled",["provision"])}\``}}function sx(e){return e.reachable?{check:"reach",verdict:"ok",evidence:`daemon answered on ${e.socketPath}`,fix:""}:{check:"reach",verdict:"missing",evidence:`no daemon answered on ${e.socketPath}`,fix:`${Rl} \u2014 it starts the daemon and waits for the socket`}}function ix(e){return{check:"supervisor-unit",verdict:"ok",evidence:e.supervisorUnit==="installed"?"redskilled.service is installed (optional supervision, Restart=always)":e.supervisorUnit==="unsupported"?"optional: this host has no systemd --user session; auto-spawn is the only start path":"optional: not installed; auto-spawn already starts the daemon on first use",fix:""}}async function Of(e={}){let r=e.env??process.env,t=e.homeDir??wl(),n=e.paths??Qe({env:r}),o=Ue(t),[s,i,a]=await Promise.all([vl(o),Ve(n.socketPath),e.homeNeed?Promise.resolve(e.homeNeed):El({homeDir:t,projectRoot:e.projectRoot,declaredTarget:e.declaredTarget})]);return{homePath:o,homePresent:s!==void 0,homeMode:s,homeNeed:a,entry:ur(e.entryOverride??{},{env:r,...e.entryLookup}),socketPath:n.socketPath,reachable:i,supervisorUnit:await lx(dx(e,r,t),r)}}var ax="redskilled.service";function Af(e){return cs(e,"systemd","user",ax)}function Df(e){let r=e.socketPath?` --socket ${e.socketPath}`:"";return["[Unit]","Description=redskilled \u2014 the host-scoped execution daemon (ADR 0130)","","[Service]","Type=simple",`ExecStart=${e.command} serve${r}`,"Restart=always","RestartSec=2","","[Install]","WantedBy=default.target",""].join(`
113
- `)}async function jf(e){let r=Af(e.configHome);return await vl(r)!==void 0?{path:r,status:"already-present"}:(await wf(Sf(r),{recursive:!0}),await vf(r,e.unit,"utf8"),{path:r,status:"installed"})}async function lx(e,r){if(process.platform!=="linux")return"unsupported";try{return await Ef(Af(e),"utf8"),"installed"}catch{return r.XDG_RUNTIME_DIR?"absent":"unsupported"}}function dx(e,r,t){return e.configHome??r.XDG_CONFIG_HOME?.trim()??cs(t,".config")}async function vl(e){try{return(await rx(e)).mode&511}catch{return}}import{readdir as Gf,rm as cx,stat as ux}from"node:fs/promises";import{dirname as px,join as Sl}from"node:path";var mx=5*6e4,gx="redskilled.";function fx(e={}){let r=e.env??process.env,t=i=>px(Ro({key:"redskilled:reclaim-probe",socketFileName:vt,env:i,...e.uid===void 0?{}:{uid:e.uid}})),{XDG_RUNTIME_DIR:n,...o}=r,s=[t(r),t(o)];return[...new Set(s)]}async function If(e={}){let r=e.roots??fx(e),t=e.graceMs??mx,n=e.now??Date.now,o=e.isPidAlive??re,s=e.answers??bx,i=e.dryRun===!0,a=[];for(let l of r){let d;try{d=(await Gf(l,{withFileTypes:!0})).filter(c=>c.isDirectory()).map(c=>c.name)}catch{continue}for(let c of d.sort())a.push(await hx(Sl(l,c),{graceMs:t,now:n,pidAlive:o,answers:s,dryRun:i}))}return{roots:r,scanned:a.length,reclaimed:a.filter(l=>l.verdict==="reclaimed").length,dryRun:i,entries:a}}async function hx(e,r){let t;try{t=(await Gf(e)).sort()}catch(i){return{dir:e,verdict:"failed",reason:$f(i),removed:[]}}let n=t.filter(i=>i.startsWith(gx));if(t.length>0&&n.length===0)return{dir:e,verdict:"foreign",reason:"holds no redskilled files",removed:[]};let o=await yx(Sl(e,"redskilled.lease.toon"));if(o!==void 0)return await r.pidAlive(o.pid)?{dir:e,verdict:"live",reason:`lease pid ${o.pid} is alive`,removed:[]}:await Lf(e,t,`lease pid ${o.pid} is dead`,r);if(t.includes(vt)&&await r.answers(Sl(e,vt)))return{dir:e,verdict:"live",reason:"socket answers with no lease",removed:[]};let s=await kx(e,r.now);return s!==void 0&&s<r.graceMs?{dir:e,verdict:"young",reason:`no lease, modified ${Math.round(s/1e3)}s ago`,removed:[]}:await Lf(e,t,t.length===0?"empty and stale":"no lease and stale",r)}async function Lf(e,r,t,n){if(n.dryRun)return{dir:e,verdict:"reclaimed",reason:`${t} (dry run)`,removed:r};try{await cx(e,{recursive:!0,force:!0})}catch(o){return{dir:e,verdict:"failed",reason:$f(o),removed:[]}}return{dir:e,verdict:"reclaimed",reason:t,removed:r}}async function yx(e){try{return await Et(e)}catch{return}}async function kx(e,r){try{return Math.max(0,r()-(await ux(e)).mtimeMs)}catch{return}}async function bx(e){try{return(await On({socketPath:e,timeoutMs:250},{id:`redskilled-reclaim-${process.pid}`,op:"ping"})).ok}catch{return!1}}function $f(e){return e instanceof Error?e.message:String(e)}var _x="plugins.dev.statusline",Rx="dev.statusline";function wx(e){let r=[],t=a=>{for(let l of[_x,Rx]){let d=`${l}.${a}`,c=lt(e,d)?.trim();if(c!=null&&c!=="")return{key:d,value:c}}},n=t("mode"),o={};n!=null&&(n.value==="local"||n.value==="global"?o.mode=n.value:r.push({...n,reason:"expected `local` or `global`"}));let s=[{leaf:"max_workers",assign:a=>{o.maxWorkers=a}},{leaf:"max_projects",assign:a=>{o.maxProjects=a}},{leaf:"max_width",assign:a=>{o.maxWidth=a}}];for(let a of s){let l=t(a.leaf);if(l==null)continue;let d=Number(l.value);Number.isInteger(d)&&d>=0?a.assign(d):r.push({...l,reason:"expected a whole number of zero or more"})}let i=t("verbose");return i!=null&&(i.value==="true"||i.value==="false"?o.verbose=i.value==="true":r.push({...i,reason:"expected `true` or `false`"})),{config:o,warnings:r}}var Ex={mode:{kind:"value",coerce:e=>e},verbose:{kind:"boolean"},project:{kind:"value",coerce:e=>e},"max-workers":{kind:"value",coerce:e=>e},"max-projects":{kind:"value",coerce:e=>e},"max-width":{kind:"value",coerce:e=>e}};function Tl(e){let{values:r,positionals:t}=cr(e,Ex),n=[],o={},s=r.mode??t.find(a=>a==="global"||a==="local");s!=null&&(s==="local"||s==="global"?o.mode=s:n.push({key:"--mode",value:s,reason:"expected `local` or `global`"})),r.project!=null&&(o.project=r.project),r.verbose!==void 0&&(o.verbose=r.verbose===!0);let i=[{flag:"max-workers",assign:a=>{o.maxWorkers=a}},{flag:"max-projects",assign:a=>{o.maxProjects=a}},{flag:"max-width",assign:a=>{o.maxWidth=a}}];for(let a of i){let l=r[a.flag];if(l==null)continue;let d=Number(l);Number.isInteger(d)&&d>=0?a.assign(d):n.push({key:`--${a.flag}`,value:l,reason:"expected a whole number of zero or more"})}return{flags:o,warnings:n}}function xl(e={}){let r=e.configText==null?{config:{},warnings:[]}:wx(e.configText),t=e.flags??{};return{options:{...B,mode:t.mode??r.config.mode??B.mode,project:t.project!==void 0?t.project:e.project??B.project,maxWorkers:t.maxWorkers??r.config.maxWorkers??B.maxWorkers,maxProjects:t.maxProjects??r.config.maxProjects??B.maxProjects,maxWidth:t.maxWidth??r.config.maxWidth??B.maxWidth,verbose:t.verbose??r.config.verbose??B.verbose},warnings:r.warnings}}var Sx=`Usage: redskilled <command> [options]
112
+ `;async function q0(e=Fu()){let t=Rr(e),r=Na(U0(t),"config.yaml"),n=await Mu(t),o=!1,s=!1;n===void 0?(await N0(t,{recursive:!0,mode:Wr}),await $0(t,Wr),o=!0):n!==Wr&&(await $0(t,Wr),s=!0);let i=!1;try{await H0(r,q1,{encoding:"utf8",flag:"wx",mode:384}),i=!0}catch(a){if(a.code!=="EEXIST")throw a}return{path:t,created:o,tightened:s,mode:Wr,configPath:r,configCreated:i}}var K0={needed:!1,declaredBy:`no ${Ks} in view`};async function Iu(e={}){let t=e.homeDir??Fu(),r=e.declaredTarget?.trim();if(r)return G0(r,t,"stated on the command line");let n=e.projectRoot?.trim();if(!n)return K0;let o=Na(n,".red","config.yaml"),s=await W0(o,"utf8").catch(()=>{});if(s===void 0)return{needed:!1,declaredBy:`no ${o}`};let i=M0(s);return i===void 0?{needed:!1,declaredBy:`${o} declares no workspace target (default local)`}:G0(i,t,o)}function G0(e,t,r){let n=`${Ks}: ${e} (${r})`;try{return{needed:j0(L0(e),t),declaredBy:n}}catch{return{needed:!1,declaredBy:`${n} \u2014 off-contract, so it names no lane under the home`}}}function V0(e){let t=[K1(e),V1(e),z1(e),J1(e)],r=t.filter(o=>o.verdict!=="ok");return{verdict:r.some(o=>o.verdict==="missing")?"missing":r.length>0?"degraded":"ok",rows:t,findings:r}}function K1(e){let t=e.homeNeed??K0;if(!e.homePresent)return t.needed?{check:"home",verdict:"missing",evidence:`${e.homePath} does not exist, and it is needed \u2014 ${t.declaredBy}`,fix:Du}:{check:"home",verdict:"ok",evidence:`${e.homePath} is absent and unneeded \u2014 ${t.declaredBy}; the daemon never reads it`,fix:""};let r=e.homeMode??Wr;return r!==Wr?{check:"home",verdict:"degraded",evidence:`${e.homePath} is mode ${r.toString(8)}, not owner-only ${Wr.toString(8)}`,fix:`${Du} \u2014 it narrows the home back to owner-only`}:{check:"home",verdict:"ok",evidence:`${e.homePath} (mode ${r.toString(8)})`,fix:""}}function V1(e){return xr(e.entry)?{check:"daemon-entry",verdict:"ok",evidence:`${e.entry.entry??e.entry.command} (resolved as ${e.entry.source})`,fix:""}:{check:"daemon-entry",verdict:"missing",evidence:`no published redskilled bundle; probed ${e.entry.searched.join(", ")||"nothing"}`,fix:`install or warm the RedSkills bundle for this host, then re-run \`${gn("red-skills-redskilled",["provision"])}\``}}function z1(e){return e.reachable?{check:"reach",verdict:"ok",evidence:`daemon answered on ${e.socketPath}`,fix:""}:{check:"reach",verdict:"missing",evidence:`no daemon answered on ${e.socketPath}`,fix:`${Du} \u2014 it starts the daemon and waits for the socket`}}function J1(e){return{check:"supervisor-unit",verdict:"ok",evidence:e.supervisorUnit==="installed"?"redskilled.service is installed (optional supervision, Restart=always)":e.supervisorUnit==="unsupported"?"optional: this host has no systemd --user session; auto-spawn is the only start path":"optional: not installed; auto-spawn already starts the daemon on first use",fix:""}}async function z0(e={}){let t=e.env??process.env,r=e.homeDir??Fu(),n=e.paths??ir({env:t}),o=Rr(r),[s,i,a]=await Promise.all([Mu(o),vr(n.socketPath),e.homeNeed?Promise.resolve(e.homeNeed):Iu({homeDir:r,projectRoot:e.projectRoot,declaredTarget:e.declaredTarget})]);return{homePath:o,homePresent:s!==void 0,homeMode:s,homeNeed:a,entry:rn(e.entryOverride??{},{env:t,...e.entryLookup}),socketPath:n.socketPath,reachable:i,supervisorUnit:await Q1(X1(e,t,r),t)}}var Y1="redskilled.service";function J0(e){return Na(e,"systemd","user",Y1)}function Y0(e){let t=e.socketPath?` --socket ${e.socketPath}`:"";return["[Unit]","Description=redskilled \u2014 the host-scoped execution daemon (ADR 0130)","","[Service]","Type=simple",`ExecStart=${e.command} serve${t}`,"Restart=always","RestartSec=2","","[Install]","WantedBy=default.target",""].join(`
113
+ `)}async function Q0(e){let t=J0(e.configHome);return await Mu(t)!==void 0?{path:t,status:"already-present"}:(await N0(U0(t),{recursive:!0}),await H0(t,e.unit,"utf8"),{path:t,status:"installed"})}async function Q1(e,t){if(process.platform!=="linux")return"unsupported";try{return await W0(J0(e),"utf8"),"installed"}catch{return t.XDG_RUNTIME_DIR?"absent":"unsupported"}}function X1(e,t,r){return e.configHome??t.XDG_CONFIG_HOME?.trim()??Na(r,".config")}async function Mu(e){try{return(await U1(e)).mode&511}catch{return}}import{readdir as Z0,rm as Z1,stat as eF}from"node:fs/promises";import{dirname as tF,join as Lu}from"node:path";var rF=5*6e4,nF="redskilled.";function oF(e={}){let t=e.env??process.env,r=i=>tF(Yi({key:"redskilled:reclaim-probe",socketFileName:Bo,env:i,...e.uid===void 0?{}:{uid:e.uid}})),{XDG_RUNTIME_DIR:n,...o}=t,s=[r(t),r(o)];return[...new Set(s)]}async function ek(e={}){let t=e.roots??oF(e),r=e.graceMs??rF,n=e.now??Date.now,o=e.isPidAlive??lt,s=e.answers??lF,i=e.dryRun===!0,a=[];for(let l of t){let d;try{d=(await Z0(l,{withFileTypes:!0})).filter(c=>c.isDirectory()).map(c=>c.name)}catch{continue}for(let c of d.sort())a.push(await sF(Lu(l,c),{graceMs:r,now:n,pidAlive:o,answers:s,dryRun:i}))}return{roots:t,scanned:a.length,reclaimed:a.filter(l=>l.verdict==="reclaimed").length,dryRun:i,entries:a}}async function sF(e,t){let r;try{r=(await Z0(e)).sort()}catch(i){return{dir:e,verdict:"failed",reason:tk(i),removed:[]}}let n=r.filter(i=>i.startsWith(nF));if(r.length>0&&n.length===0)return{dir:e,verdict:"foreign",reason:"holds no redskilled files",removed:[]};let o=await iF(Lu(e,"redskilled.lease.toon"));if(o!==void 0)return await t.pidAlive(o.pid)?{dir:e,verdict:"live",reason:`lease pid ${o.pid} is alive`,removed:[]}:await X0(e,r,`lease pid ${o.pid} is dead`,t);if(r.includes(Bo)&&await t.answers(Lu(e,Bo)))return{dir:e,verdict:"live",reason:"socket answers with no lease",removed:[]};let s=await aF(e,t.now);return s!==void 0&&s<t.graceMs?{dir:e,verdict:"young",reason:`no lease, modified ${Math.round(s/1e3)}s ago`,removed:[]}:await X0(e,r,r.length===0?"empty and stale":"no lease and stale",t)}async function X0(e,t,r,n){if(n.dryRun)return{dir:e,verdict:"reclaimed",reason:`${r} (dry run)`,removed:t};try{await Z1(e,{recursive:!0,force:!0})}catch(o){return{dir:e,verdict:"failed",reason:tk(o),removed:[]}}return{dir:e,verdict:"reclaimed",reason:r,removed:t}}async function iF(e){try{return await Lo(e)}catch{return}}async function aF(e,t){try{return Math.max(0,t()-(await eF(e)).mtimeMs)}catch{return}}async function lF(e){try{return(await Ns({socketPath:e,timeoutMs:250},{id:`redskilled-reclaim-${process.pid}`,op:"ping"})).ok}catch{return!1}}function tk(e){return e instanceof Error?e.message:String(e)}var dF="plugins.dev.statusline",cF="dev.statusline";function uF(e){let t=[],r=a=>{for(let l of[dF,cF]){let d=`${l}.${a}`,c=jo(e,d)?.trim();if(c!=null&&c!=="")return{key:d,value:c}}},n=r("mode"),o={};n!=null&&(n.value==="local"||n.value==="global"?o.mode=n.value:t.push({...n,reason:"expected `local` or `global`"}));let s=[{leaf:"max_workers",assign:a=>{o.maxWorkers=a}},{leaf:"max_projects",assign:a=>{o.maxProjects=a}},{leaf:"max_width",assign:a=>{o.maxWidth=a}}];for(let a of s){let l=r(a.leaf);if(l==null)continue;let d=Number(l.value);Number.isInteger(d)&&d>=0?a.assign(d):t.push({...l,reason:"expected a whole number of zero or more"})}let i=r("verbose");return i!=null&&(i.value==="true"||i.value==="false"?o.verbose=i.value==="true":t.push({...i,reason:"expected `true` or `false`"})),{config:o,warnings:t}}var pF={mode:{kind:"value",coerce:e=>e},verbose:{kind:"boolean"},project:{kind:"value",coerce:e=>e},"max-workers":{kind:"value",coerce:e=>e},"max-projects":{kind:"value",coerce:e=>e},"max-width":{kind:"value",coerce:e=>e}};function Wa(e){let{values:t,positionals:r}=tn(e,pF),n=[],o={},s=t.mode??r.find(a=>a==="global"||a==="local");s!=null&&(s==="local"||s==="global"?o.mode=s:n.push({key:"--mode",value:s,reason:"expected `local` or `global`"})),t.project!=null&&(o.project=t.project),t.verbose!==void 0&&(o.verbose=t.verbose===!0);let i=[{flag:"max-workers",assign:a=>{o.maxWorkers=a}},{flag:"max-projects",assign:a=>{o.maxProjects=a}},{flag:"max-width",assign:a=>{o.maxWidth=a}}];for(let a of i){let l=t[a.flag];if(l==null)continue;let d=Number(l);Number.isInteger(d)&&d>=0?a.assign(d):n.push({key:`--${a.flag}`,value:l,reason:"expected a whole number of zero or more"})}return{flags:o,warnings:n}}function Ha(e={}){let t=e.configText==null?{config:{},warnings:[]}:uF(e.configText),r=e.flags??{};return{options:{...Ge,mode:r.mode??t.config.mode??Ge.mode,project:r.project!==void 0?r.project:e.project??Ge.project,maxWorkers:r.maxWorkers??t.config.maxWorkers??Ge.maxWorkers,maxProjects:r.maxProjects??t.config.maxProjects??Ge.maxProjects,maxWidth:r.maxWidth??t.config.maxWidth??Ge.maxWidth,verbose:r.verbose??t.config.verbose??Ge.verbose},warnings:t.warnings}}var Ua,qa=new Map,fF=256;function sk(){if(Ua!==void 0)return Ua;let e=Intl.Segmenter;return Ua=e?new e(void 0,{granularity:"grapheme"}):null,Ua}function ju(e){return e===8205||e>=768&&e<=879||e>=6832&&e<=6911||e>=7616&&e<=7679||e>=8400&&e<=8447||e>=65024&&e<=65039||e>=65056&&e<=65071||e>=127995&&e<=127999||e>=917536&&e<=917631||e>=917760&&e<=917999}function rk(e){let t=qa.get(e);if(t!==void 0)return t;let r=new RegExp("\\p{M}","u").test(String.fromCodePoint(e));return qa.size>=fF&&qa.clear(),qa.set(e,r),r}function nk(e){return e>=127462&&e<=127487}function ok(e){return e>=4352&&e<=4607||e>=43360&&e<=43391||e>=55216&&e<=55295}function gF(e){return e>=1536&&e<=1541||e===1757||e===1807||e===2192||e===2193||e===2274||e===3406||e===69821||e===69837}function hF(e,t,r){if(rk(t)||gF(t)||ok(t))return!1;let n=e.codePointAt(r);return n===void 0?!0:!(ju(n)||rk(n)||ok(n)||nk(t)&&nk(n)||t===13&&n===10)}function mF(e){let t=[],r=0;for(;r<e.length;){let n=r,o=!1,s=e.codePointAt(r);for(r+=s>65535?2:1;r<e.length;){let i=e.codePointAt(r);if(!o&&!ju(i))break;r+=i>65535?2:1,o=i===8205}t.push({segment:e.slice(n,r),index:n,end:r})}return t}function ik(e){let t=sk();if(!t)return mF(e);let r=[...t.segment(e)];return r.map((n,o)=>({segment:n.segment,index:n.index,end:r[o+1]?.index??e.length}))}function Bu(e,t){if(t<0||t>=e.length)return null;let r=e.codePointAt(t);if(r===void 0)return null;let n=t+(r>65535?2:1);if(hF(e,r,n))return{segment:e.slice(t,n),index:t,end:n};let o=sk();if(o){let a=o.segment(e).containing(t);return a?{segment:a.segment,index:a.index,end:a.index+a.segment.length}:null}let s=n,i=!1;for(;s<e.length;){let a=e.codePointAt(s);if(!i&&!ju(a))break;s+=a>65535?2:1,i=a===8205}return{segment:e.slice(t,s),index:t,end:s}}var $o="\x1B",bF="\x07",f3=`${$o}\\`;function yF(e){return e>=64&&e<=126}function kF(e,t){for(let r=t;r<e.length;r++){if(e[r]===bF)return r+1;if(e[r]===$o&&e[r+1]==="\\")return r+2}return e.length}function Un(e,t){if(e[t]!==$o)return null;let r=e[t+1];if(r===void 0)return{end:t+1,value:$o,kind:"control"};if(r==="["){let n=t+2;for(;n<e.length&&!yF(e.charCodeAt(n));)n++;if(n>=e.length)return{end:e.length,value:e.slice(t),kind:"control"};let o=e.slice(t,n+1),s=/^\x1b\[[0-9:;]*m$/.test(o)?"sgr":"control";return{end:n+1,value:o,kind:s}}if(r==="]"||r==="P"||r==="X"||r==="^"||r==="_"){let n=kF(e,t+2);return{end:n,value:e.slice(t,n),kind:"control"}}return{end:Math.min(e.length,t+2),value:e.slice(t,t+2),kind:"control"}}function ak(e){return e<=31||e>=127&&e<=159}function Go(e){let t="",r=0;for(;r<e.length;){if(e[r]===$o){let o=Un(e,r);if(o){o.kind==="sgr"&&(t+=o.value),r=o.end;continue}}let n=e.charCodeAt(r);(!ak(n)||e[r]===`
114
+ `||e[r]===" ")&&(t+=e[r]),r++}return t}function $u(e){let t="",r=0;for(;r<e.length;){if(e[r]===$o){let o=Un(e,r);if(o){r=o.end;continue}}let n=e.charCodeAt(r);(!ak(n)||e[r]===`
115
+ `||e[r]===" ")&&(t+=e[r]),r++}return t}function lk(e){return $u(e).replace(/[\u0000-\u001f\u007f-\u009f]/g,"")}var ck="\x1B",dk=/^[\x20-\x7e]*$/,Ka=new Map,wF=256;function RF(e){return $u(e)}function xe(e){if(dk.test(e))return e.length;let t=e.codePointAt(0);if(t!==void 0&&e.length===(t>65535?2:1))return uk(t);let r=RF(e);if(dk.test(r))return r.length;let n=0;for(let{segment:o}of ik(r))n+=_F(o);return n}function qn(e,t){if(t<0||t>=e.length)return null;if(e.charCodeAt(t)<=127)return{symbol:e[t],nextIndex:t+1};let n=Bu(e,t);return n?{symbol:n.segment,nextIndex:n.end}:null}function _F(e){if(!e)return 0;let t=[...e].map(o=>o.codePointAt(0)??0);return t.length===1?uk(t[0]):t.every(o=>o<=31||o>=127&&o<=159||pk(o))?0:t.filter(o=>o>=127462&&o<=127487).length>=2||t.includes(65039)||t.includes(8419)||new RegExp("\\p{Extended_Pictographic}","u").test(e)||t.some(fk)?2:1}function uk(e){let t=Ka.get(e);if(t!==void 0)return t;let r;return e<=31||e>=127&&e<=159||pk(e)?r=0:r=fk(e)||new RegExp("\\p{Extended_Pictographic}","u").test(String.fromCodePoint(e))?2:1,Ka.size>=wF&&Ka.clear(),Ka.set(e,r),r}function pk(e){return e>=65024&&e<=65039||e>=917760&&e<=917999||e===8203||e===8204||e===8205||e===8288||e===65279||e>=768&&e<=879||e>=6832&&e<=6911||e>=7616&&e<=7679||e>=65056&&e<=65071||e===173}function fk(e){return e>=19968&&e<=40959||e>=13312&&e<=19903||e>=131072&&e<=173791||e>=173824&&e<=183983||e>=65280&&e<=65376||e>=65504&&e<=65510||e>=12352&&e<=12543||e>=44032&&e<=55203||e>=127744&&e<=129535||e>=129536&&e<=129791||xF(e)}function xF(e){let t=[9986,9989,9992,9993,9994,9995,9996,9997,9999,10002,10004,10006,10024,10035,10036,10052,10055,10060,10062,10067,10068,10069,10071,10083,10084,10133,10134,10135,10145,10160],r=[9728,9729,9730,9731,9732,9742,9745,9748,9749,9752,9757,9760,9762,9763,9766,9770,9774,9775,9784,9785,9786,9792,9794,9800,9801,9802,9803,9804,9805,9806,9807,9808,9809,9810,9811,9823,9824,9827,9829,9830,9832,9851,9854,9855,9874,9875,9876,9877,9878,9879,9881,9883,9884,9889,9898,9899,9904,9905,9917,9918,9924,9925,9934,9940,9962,9970,9971,9973,9978,9981];return t.includes(e)||r.includes(e)}function Js(e,t,r){if(t<=0)return e.split(`
116
+ `);let n=[];for(let o of e.split(`
117
+ `)){if(r==="truncate"||r==="truncate-end"){n.push(zs(o,t,{position:"end",truncationCharacter:"\u2026"}));continue}if(r==="truncate-start"){n.push(zs(o,t,{position:"start",truncationCharacter:"\u2026"}));continue}if(r==="truncate-middle"){n.push(zs(o,t,{position:"middle",truncationCharacter:"\u2026"}));continue}n.push(...EF(o,t))}return n}function EF(e,t){if(xe(e)<=t)return[e];let r=[],n="";for(let o of e.split(" ")){let s=n?`${n} ${o}`:o;if(xe(s)<=t){n=s;continue}if(n&&(r.push(n),n=""),xe(o)<=t){n=o;continue}let i=vF(o,t);r.push(...i.slice(0,-1)),n=i.at(-1)??""}return(n||r.length===0)&&r.push(n),r}function vF(e,t){let r=[],n="",o=0,s=0;for(;s<e.length;){if(e[s]===ck){let l=Un(e,s);if(l){n+=l.value,s=l.end;continue}}let i=qn(e,s);if(!i)break;let a=xe(i.symbol);o>0&&o+a>t&&(r.push(n),n="",o=0),n+=i.symbol,o+=a,s=i.nextIndex}return(n||r.length===0)&&r.push(n),r}function zs(e,t,r={}){let{position:n="end",truncationCharacter:o="...",space:s=!1,preferTruncationOnSpace:i=!1}=r;if(xe(e)<=t)return e;if(t<xe(o))return o.slice(0,t);let l=s?n==="middle"?` ${o} `:n==="start"?`${o} `:` ${o}`:o,d=xe(l);return n==="start"?SF(e,t,l,d,i):n==="middle"?PF(e,t,l,d,i):TF(e,t,l,d,i)}function SF(e,t,r,n,o){let s=t-n,i=No(e,xe(e)-s);if(o){let a=i.indexOf(" ");if(a!==-1&&a<4)return r+i.slice(a+1)}return r+i}function TF(e,t,r,n,o){let s=t-n,i=No(e,0,s);if(o){let a=i.lastIndexOf(" ");if(a!==-1&&i.length-a<4)return i.slice(0,a)+r}return i+r}function PF(e,t,r,n,o){let s=t-n,i=Math.ceil(s/2),a=Math.floor(s/2),l=No(e,0,i),d=No(e,xe(e)-a);if(o){let c=l.lastIndexOf(" ");c!==-1&&l.length-c<4&&(l=l.slice(0,c));let u=d.indexOf(" ");u!==-1&&u<4&&(d=d.slice(u+1))}return l+r+d}function No(e,t,r){let n=Number.isFinite(t)?Math.max(0,Math.trunc(t)):0,o=r===void 0?void 0:Number.isFinite(r)?Math.max(n,Math.trunc(r)):n,s="",i=0,a="",l=0,d=!1;for(;l<e.length&&(o===void 0||i<o);){if(e[l]===ck){let f=Un(e,l);if(f){if(l=f.end,f.kind!=="sgr")continue;a=f.value==="\x1B[0m"?"":a+f.value,i>=n&&(o===void 0||i<o)&&(s+=f.value);continue}}let c=Bu(e,l);if(!c){l++;continue}let u=xe(c.segment),p=i>=n,g=o===void 0||i+u<=o;p&&g&&(s===""&&a&&(s+=a),s+=c.segment,d=!0),i+=u,l=c.end}return a&&d&&(s+="\x1B[0m"),s}function dt(e,t){return e^=t,Math.imul(e,16777619)>>>0}function Ys(e,t){let r=e;for(let n=0;n<t.length;n++)r=dt(r,t.charCodeAt(n));return r}function Gu(e,t,r){if(t===void 0)return dt(e,117);if(t===null)return dt(e,110);switch(typeof t){case"boolean":return dt(dt(e,98),t?49:48);case"number":return Ys(dt(e,100),Object.is(t,-0)?"-0":String(t));case"bigint":return Ys(dt(e,105),t.toString());case"string":return Ys(dt(e,115),t);case"function":return r.ignoreFunctions===!1?dt(e,102):e;case"object":{if(Array.isArray(t)){let i=dt(e,91);for(let a of t)i=Gu(i,a,r),i=dt(i,124);return dt(i,93)}let n=dt(e,123),o=t,s=Object.keys(o).sort();for(let i of s){if(r.ignoreKeys?.has(i))continue;let a=o[i];a!==void 0&&(typeof a=="function"&&r.ignoreFunctions!==!1||(n=Ys(dt(n,107),i),n=dt(n,58),n=Gu(n,a,r),n=dt(n,59)))}return dt(n,125)}default:return Ys(dt(e,63),String(t))}}function Dt(e,t={}){return Gu(2166136261,e,{ignoreFunctions:!0,...t}).toString(16)}import{AsyncLocalStorage as AF}from"node:async_hooks";var Ar=Symbol("tuiuiu.runtime-resource-dispose"),gk=new AF,Va=new Set,CF=1,Wo={id:0,resources:new Map};function hk(){let e={id:CF++,resources:new Map};return Va.add(e),e}function OF(e){Va.delete(e)}function mk(e){if(e!==null&&typeof e=="object"&&Ar in e)try{e[Ar]()}catch(t){console.error("[tuiuiu] Error while disposing a runtime resource:",t)}}function DF(e){let t=[...e.resources.values()].reverse();e.resources.clear();for(let r of t)mk(r)}function Ho(e){OF(e),DF(e)}function qe(e,t){return gk.run(e,t)}function Vr(e,t){return(...r)=>qe(e,()=>t(...r))}function Nu(){return gk.getStore()??null}function Ne(e){if(e)return e;let t=Nu();return t||(Va.size===1?Va.values().next().value??Wo:Wo)}function Cr(){return Wo}function De(e,t,r){let n=Ne(r);return n.resources.has(e)||n.resources.set(e,t()),n.resources.get(e)}function Ft(e,t){return Wo.resources.has(e)||Wo.resources.set(e,t()),Wo.resources.get(e)}function za(e,t){let r=Ne(t),n=r.resources.get(e);r.resources.delete(e),mk(n)}var Pe;(function(e){e[e.NONE=0]="NONE",e[e.CONTENT=1]="CONTENT",e[e.LAYOUT=2]="LAYOUT",e[e.STYLE=4]="STYLE",e[e.CHILDREN=8]="CHILDREN",e[e.FORCE_FULL=16]="FORCE_FULL"})(Pe||(Pe={}));function Wu(){return{layoutReuseCount:0,layoutFreshCount:0,drawReuseCount:0,drawFreshCount:0,invalidationEscalationCount:0,absorbedLayoutDirtyCount:0,forceFullCount:0}}function FF(e){let t=e.props,r=typeof t.width=="number"&&t.width>0&&t.width!==1/0,n=typeof t.height=="number"&&t.height>0&&t.height!==1/0;return!(!r||!n||(t.flexGrow??0)>0||t.width==="fill"||t.height==="fill")}var Hu=class{states=new WeakMap;parents=new WeakMap;renderCache=new Map;maxCacheSize=1e3;globalVersion=0;isDirty=!0;rootNode=null;forceFullFrame=!1;diagnostics=Wu();getState(t){let r=this.states.get(t);return r||(r={dirty:!0,childrenDirty:!1,version:0,flags:Pe.NONE,subtreeFlags:Pe.NONE},this.states.set(t,r)),r}beginFrame(t){this.rootNode=t,this.forceFullFrame=!1,this.diagnostics=Wu()}registerNode(t,r){this.parents.set(t,r),this.getState(t)}bubbleDirtyFlags(t,r){let n=this.parents.get(t)??null,o=r,s=!1;for(;n;){s=!0;let i=this.getState(n);if(i.childrenDirty=!0,i.subtreeFlags|=o,o&Pe.LAYOUT&&FF(n)){this.diagnostics.absorbedLayoutDirtyCount++;break}n=this.parents.get(n)??null}!s&&this.rootNode&&t!==this.rootNode&&(this.diagnostics.invalidationEscalationCount++,this.forceFullFrame=!0)}markDirty(t,r=Pe.CONTENT){let n=this.getState(t);n.dirty=!0,n.flags|=r,n.version++,this.isDirty=!0,this.globalVersion++,r&Pe.FORCE_FULL&&(this.forceFullFrame=!0,this.diagnostics.forceFullCount++),this.bubbleDirtyFlags(t,r)}markClean(t){let r=this.getState(t);r.dirty=!1,r.childrenDirty=!1,r.flags=Pe.NONE,r.subtreeFlags=Pe.NONE}markLayoutClean(t){let r=this.getState(t);r.dirty=!1,r.childrenDirty=!1,r.flags&=~(Pe.LAYOUT|Pe.CHILDREN|Pe.FORCE_FULL),r.subtreeFlags&=~(Pe.LAYOUT|Pe.CHILDREN|Pe.FORCE_FULL)}markChildrenDirty(t,r=Pe.CHILDREN){let n=this.getState(t);n.childrenDirty=!0,n.subtreeFlags|=r,this.isDirty=!0}isDirtyNode(t){let r=this.states.get(t);return r?r.dirty:!0}needsRender(t){let r=this.states.get(t);return r?r.dirty||r.childrenDirty||r.flags!==Pe.NONE||r.subtreeFlags!==Pe.NONE:!0}canReuseSubtree(t){if(this.forceFullFrame)return!1;let r=this.states.get(t);return r?!r.dirty&&!r.childrenDirty&&r.flags===Pe.NONE&&r.subtreeFlags===Pe.NONE:!0}hasChanges(){return this.isDirty||this.forceFullFrame}clearGlobalDirty(){this.isDirty=!1,this.forceFullFrame=!1}getGlobalVersion(){return this.globalVersion}getDiagnostics(){return{...this.diagnostics}}noteReuse(t){if(t==="layout"){this.diagnostics.layoutReuseCount++;return}this.diagnostics.drawReuseCount++}noteFresh(t){if(t==="layout"){this.diagnostics.layoutFreshCount++;return}this.diagnostics.drawFreshCount++}getCachedRender(t,r){let o=`${this.hashNode(t)}:${r}`,s=this.renderCache.get(o);if(s)return s.lastAccess=Date.now(),s}setCachedRender(t,r,n,o){let s=this.hashNode(t),i=`${s}:${r}`;this.renderCache.size>=this.maxCacheSize&&this.evictOldest(),this.renderCache.set(i,{output:n,width:r,height:o,hash:s,lastAccess:Date.now()})}hashNode(t){return Dt({type:t.type,key:t.key,props:t.props??{},children:t.children??[]})}evictOldest(){let t=[...this.renderCache.entries()];t.sort((n,o)=>n[1].lastAccess-o[1].lastAccess);let r=Math.ceil(t.length*.2);for(let n=0;n<r;n++)this.renderCache.delete(t[n][0])}invalidateCache(t){let r=this.hashNode(t);for(let n of this.renderCache.keys())n.startsWith(`${r}:`)&&this.renderCache.delete(n)}clearCache(){this.renderCache.clear()}getCacheStats(){return{size:this.renderCache.size,maxSize:this.maxCacheSize}}reset(){this.states=new WeakMap,this.parents=new WeakMap,this.renderCache.clear(),this.globalVersion=0,this.isDirty=!0,this.rootNode=null,this.forceFullFrame=!1,this.diagnostics=Wu()}},IF=Symbol("tuiuiu.dirty-registry");function Or(e){return De(IF,()=>new Hu,e)}function bk(e){Or().beginFrame(e)}function yk(e,t){Or().registerNode(e,t)}function mn(e,t=Pe.CONTENT){Or().markDirty(e,t)}function kk(e){Or().markLayoutClean(e)}function Qs(e){Or().noteReuse(e)}function Kn(e){Or().noteFresh(e)}function Ja(e){return Or().canReuseSubtree(e)}function wk(){return Or().getDiagnostics()}function Xs(){Or().clearGlobalDirty()}function Uo(e){Or().markClean(e.node);for(let r of e.children)Uo(r)}var Rk=new WeakMap;function yt(e,t){if(e===void 0)return 0;if(!Number.isFinite(e))throw new RangeError(`${t} must be a finite number`);return Math.max(0,Math.floor(e))}function Ya(e,t){if(e===void 0)return 0;if(!Number.isFinite(e)||e<0)throw new RangeError(`${t} must be a finite non-negative number`);return e}var St=e=>e==="auto"?0:yt(e,"margin"),MF=new Set(["layoutRef","__scrollQuery"]),LF=new Set(["display","position","flexDirection","flexWrap","flexGrow","flexShrink","flexBasis","flex","justifyContent","alignItems","alignSelf","alignContent","padding","paddingX","paddingY","paddingTop","paddingBottom","paddingLeft","paddingRight","margin","marginX","marginY","marginTop","marginBottom","marginLeft","marginRight","gap","columnGap","rowGap","width","height","minWidth","minHeight","maxWidth","maxHeight","top","bottom","left","right","borderStyle","borderTop","borderBottom","borderLeft","borderRight","overflow","overflowX","overflowY"]),jF=new Set(["children","wrap"]);function BF(e){return`${e.x}:${e.y}:${e.width}:${e.height}`}function qo(e){let t=e.props??{},r=e.type==="text"?jF:LF,n={};for(let o of r)o in t&&(n[o]=t[o]);return Dt(n,{ignoreKeys:MF})}function $F(e,t){if(e.children.length!==t.length)return!1;for(let r=0;r<t.length;r++)if(e.children[r]!==t[r])return!1;return!0}function GF(e,t){if(!Ja(e)){Kn("layout");return}let r=Rk.get(e);if(!r){Kn("layout");return}if(r.ctxKey!==t){mn(e,Pe.LAYOUT),Kn("layout");return}let n=qo(e);if(r.propsKey!==n||!$F(e,r.childRefs)){mn(e,r.propsKey!==n?Pe.LAYOUT:Pe.CHILDREN),Kn("layout");return}return Qs("layout"),r.layout}function Zs(e,t,r,n){Rk.set(e,{ctxKey:t,propsKey:r,childRefs:[...e.children],layout:n}),kk(e)}function ht(e,t){let r=t.x??e.x,n=t.y??e.y,o=t.width??e.width,s=t.height??e.height;return r===e.x&&n===e.y&&o===e.width&&s===e.height?e:{x:r,y:n,width:o,height:s,node:e.node,children:e.children}}function _k(e,t,r){if(t<=e.height)return ht(e,{height:t});let n=r.flexDirection??"column";if(e.children.length===0||n!=="column"&&n!=="column-reverse")return ht(e,{height:t});let o=t-e.height,s=r.justifyContent??"flex-start",i=e.children;if(s==="center"||s==="flex-end"){let a=s==="center"?Math.floor(o/2):o;i=i.map(l=>ht(l,{y:l.y+a}))}else if(s==="space-between"&&i.length>1)i=i.map((a,l)=>ht(a,{y:a.y+Math.floor(o*l/(i.length-1))}));else if(s==="space-around"){let a=o/(i.length*2);i=i.map((l,d)=>ht(l,{y:l.y+Math.floor(a*(2*d+1))}))}else if(s==="space-evenly"){let a=o/(i.length+1);i=i.map((l,d)=>ht(l,{y:l.y+Math.floor(a*(d+1))}))}return{...e,height:t,children:i}}function It(e,t){e.props.layoutRef?.__update?.({x:t.x,y:t.y,width:t.width,height:t.height})}function xk(e,t=0,r=0){let n=t+e.x,o=r+e.y;It(e.node,{...e,x:n,y:o});let s=e.node.props,i=yt(s.paddingTop??s.paddingY??s.padding,"paddingTop"),a=yt(s.paddingLeft??s.paddingX??s.padding,"paddingLeft"),l=s.borderStyle&&s.borderStyle!=="none"?1:0,d=n+a+l,c=o+i+l;for(let u of e.children)xk(u,d,c)}function Ek(e,t,r=1/0){if(!Number.isFinite(t)||t<0)throw new RangeError("availableWidth must be a finite non-negative number");if(r!==1/0&&(!Number.isFinite(r)||r<0))throw new RangeError("availableHeight must be a non-negative number or Infinity");t=Math.floor(t),r!==1/0&&(r=Math.floor(r)),bk(e);let n=Dr(e,{x:0,y:0,width:t,height:r},null);return xk(n),n}function NF(e,t){let r=e.props.__divider;if(r==="horizontal")return{x:t.x,y:t.y,width:t.width,height:Math.min(1,t.height),node:e,children:[]};if(r==="vertical")return{x:t.x,y:t.y,width:Math.min(1,t.width),height:e.props.__splitDivider?Math.min(1,t.height):t.height,node:e,children:[]};let n=Js(String(e.props.children??""),t.width,e.props.wrap),o=Math.max(0,...n.map(s=>xe(s)));return{x:t.x,y:t.y,width:Math.min(o,t.width),height:Math.min(n.length,t.height),node:e,children:[]}}function WF(e,t){let r=typeof e.props.height=="number"?e.props.height:1;return{x:t.x,y:t.y,width:t.width,height:Math.min(r,t.height),node:e,children:[]}}function HF(e,t){let r=e.props.count??1,n=Number.isSafeInteger(r)&&r>=0?r:0;return{x:t.x,y:t.y,width:0,height:Math.min(n,t.height),node:e,children:[]}}function Dr(e,t,r){yk(e,r);let n=BF(t),o=GF(e,n);if(o)return It(e,o),o;let s;if(e.type==="text")return s=NF(e,t),Zs(e,n,qo(e),s),s;if(e.type==="spacer")return s=WF(e,t),Zs(e,n,qo(e),s),s;if(e.type==="newline")return s=HF(e,t),Zs(e,n,qo(e),s),s;let i=e.props;if(i.display==="none")return s={x:t.x,y:t.y,width:0,height:0,node:e,children:[]},It(e,s),Zs(e,n,qo(e),s),s;let a=yt(i.paddingTop??i.paddingY??i.padding,"paddingTop"),l=yt(i.paddingBottom??i.paddingY??i.padding,"paddingBottom"),d=yt(i.paddingLeft??i.paddingX??i.padding,"paddingLeft"),c=yt(i.paddingRight??i.paddingX??i.padding,"paddingRight"),u=St(i.marginTop??i.marginY??i.margin),p=St(i.marginBottom??i.marginY??i.margin),g=St(i.marginLeft??i.marginX??i.margin),f=St(i.marginRight??i.marginX??i.margin),k=i.borderStyle&&i.borderStyle!=="none"?1:0,b=ei(i.width,t.width),v=ei(i.height,t.height),T=i.width!==void 0&&i.width!=="auto",$=i.height!==void 0&&i.height!=="auto",D=Math.max(0,(T?b:t.width)-d-c-k*2),L=Math.max(0,($?v:t.height)-a-l-k*2),W=e.props.__scrollQuery!==void 0||e.props.__scrollOffsetY!==void 0?1/0:L,K=[],H=i.flexDirection??"column",I=H==="row"||H==="row-reverse",N=H==="row-reverse"||H==="column-reverse",V=yt(I?i.columnGap??i.gap:i.rowGap??i.gap,"gap"),ge=[],fe=[];if(e.children.length>0){for(let oe of e.children)oe.props.position==="absolute"?ge.push(oe):fe.push(oe);let ce=N?[...fe].reverse():fe;I?K.push(...vk(ce,D,W,V,i,$,e)):K.push(...qF(ce,D,W,V,i,e))}let de=0,te=0;if(I)for(let ce of K){let oe=ce.node.props,_e=St(oe.marginRight??oe.marginX??oe.margin),Fe=St(oe.marginBottom??oe.marginY??oe.margin);de=Math.max(de,ce.x+ce.width+_e),te=Math.max(te,ce.y+ce.height+Fe)}else for(let ce of K){let oe=ce.node.props,_e=St(oe.marginBottom??oe.marginY??oe.margin);de=Math.max(de,ce.width),te=Math.max(te,ce.y+ce.height+_e)}let Oe=Ya(i.flexGrow,"flexGrow")>0||i.width==="fill",ve=de+d+c+k*2,ke=T?b:Oe?t.width:ve,J=$?v:te+a+l+k*2,ie=yt(i.minWidth,"minWidth"),Re=yt(i.minHeight,"minHeight");if(ke=Math.max(ke,ie),J=Math.max(J,Re),i.maxWidth!==void 0&&(ke=Math.min(ke,yt(i.maxWidth,"maxWidth"))),i.maxHeight!==void 0&&(J=Math.min(J,yt(i.maxHeight,"maxHeight"))),I&&i.alignItems==="stretch"){let ce=Math.max(0,J-a-l-k*2);for(let oe=0;oe<K.length;oe++){let _e=K[oe],Fe=_e.node.props;Fe.height===void 0&&(K[oe]=_k(_e,Math.max(_e.height,ce),Fe),It(_e.node,K[oe]))}}let Ae=t.x+g,Ee=t.y+u,we=Math.max(0,Math.min(ke,Math.max(0,t.width-g-f))),Se=Math.max(0,Math.min(J,Math.max(0,t.height-u-p)));for(let ce of ge){let oe=ce.props,_e=Dr(ce,{x:0,y:0,width:D,height:W},e),Fe=Ae+d+k,it=Ee+a+k;oe.left!==void 0?Fe=Ae+d+k+oe.left:oe.right!==void 0&&(Fe=Ae+we-c-k-_e.width-oe.right),oe.top!==void 0?it=Ee+a+k+oe.top:oe.bottom!==void 0&&(it=Ee+Se-l-k-_e.height-oe.bottom);let $t=ht(_e,{x:Fe,y:it});It(ce,$t),K.push($t)}return s={x:Ae,y:Ee,width:we,height:Se,node:e,children:K},It(e,s),Zs(e,n,qo(e),s),s}function vk(e,t,r,n,o,s,i){let a=[],l=o.flexWrap??"nowrap";if(l!=="nowrap"&&e.length>0)return UF(e,t,r,n,o,s,i,l);let d=0,c=0,u=[];for(let H of e){let I=H.props,N=I.flexGrow;N===void 0?N=I.width==="fill"||H.type==="spacer"?1:0:N=Ya(N,"flexGrow");let V=yt(I.minWidth,"minWidth"),ge=I.flexBasis==="content"?Dr(H,{x:0,y:0,width:t,height:r},i).width:I.flexBasis===void 0||I.flexBasis==="auto"?V:ei(I.flexBasis,t),fe=I.flexShrink===void 0?1:Ya(I.flexShrink,"flexShrink"),de=St(I.marginLeft??I.marginX??I.margin),te=St(I.marginRight??I.marginX??I.margin);if(N>0)c+=N,d+=ge+de+te,u.push({node:H,flex:N,minWidth:V,basis:ge,shrink:fe,marginLeft:de,marginRight:te});else{let Oe=I.width!==void 0&&I.width!=="auto"&&I.width!=="fill"?ei(I.width,t)+de+te:t,ve=Dr(H,{x:0,y:0,width:Oe,height:r},i);d+=ve.width+de+te,u.push({node:H,flex:0,minWidth:V,basis:ve.width,shrink:fe,marginLeft:de,marginRight:te,layout:ve,measuredCtxWidth:Oe})}}d+=n*Math.max(0,e.length-1);let p=Math.max(0,d-t);if(p>0){let H=u.map(()=>0),I=Math.ceil(p);for(;I>0;){let N=u.map((te,me)=>{let Oe=Math.max(0,Math.floor(te.basis-te.minWidth)),ve=Math.max(0,Oe-H[me]);return{index:me,capacity:ve,maxReduction:Oe,weight:te.shrink*te.basis}}).filter(te=>te.capacity>0&&te.weight>0),V=N.reduce((te,me)=>te+me.weight,0);if(V<=0)break;let ge=N.map(te=>{let me=I*te.weight/V,Oe=Math.min(te.capacity,Math.floor(me));return{...te,exact:me,whole:Oe,fraction:me-Math.floor(me)}}),fe=0;for(let te of ge)te.whole>0&&(H[te.index]+=te.whole,fe+=te.whole);if(I-=fe,I<=0)break;ge.sort((te,me)=>me.fraction-te.fraction||me.weight-te.weight||me.capacity-te.capacity);let de=!1;for(let te of ge){if(I<=0)break;H[te.index]<te.maxReduction&&(H[te.index]+=1,I-=1,de=!0)}if(!de)break}if(H.some(N=>N>0)){for(let N=0;N<u.length;N++){let V=u[N];V.targetWidth=Math.max(V.minWidth,V.basis-H[N])}d=u.reduce((N,V)=>N+(V.targetWidth??V.basis)+V.marginLeft+V.marginRight,n*Math.max(0,e.length-1))}}let g=Math.max(0,t-d),f=c>0?g/c:0,k=0,b=o.justifyContent??"flex-start",v=d+(c>0?g:0),T=t-v,$=0,D=0;c===0&&u.length>0&&(b==="space-between"&&u.length>1?$=T/(u.length-1):b==="space-around"?(D=T/(u.length*2),k=D):b==="space-evenly"?($=T/(u.length+1),k=$):b==="flex-end"?k=T:b==="center"&&(k=T/2));let L=0,W=[];for(let H=0;H<u.length;H++){let I=u[H],V=(I.targetWidth??(I.flex>0?I.basis+Math.floor(f*I.flex):I.basis))+I.marginLeft+I.marginRight,ge=I.layout&&I.measuredCtxWidth===V?ht(I.layout,{x:I.layout.x+k}):Dr(I.node,{x:k,y:0,width:V,height:r},i),fe=I.node.props;L=Math.max(L,ge.height),W.push({layout:ge,style:fe}),k+=I.marginLeft+ge.width+I.marginRight,b==="space-between"&&H<u.length-1?k+=$:b==="space-around"?k+=D*2:b==="space-evenly"?k+=$:k+=n}let K=s?r:L;for(let H of W){let{style:I}=H,{layout:N}=H,V=I.alignSelf,ge=V!=="auto"&&V?V:o.alignItems??"flex-start",fe=N.y,de=N.height;ge==="stretch"?(I.height===void 0&&(de=Math.max(N.height,K)),fe=0):ge==="center"?fe=Math.floor((K-N.height)/2):ge==="flex-end"?fe=K-N.height:ge==="baseline"&&(fe=0),N=_k(N,de,I),N=ht(N,{y:fe}),It(N.node,N),a.push(N)}return a}function UF(e,t,r,n,o,s,i,a){let l=[],d=[],c=0;for(let D of e){let L=D.props,W=St(L.marginLeft??L.marginX??L.margin),K=St(L.marginRight??L.marginX??L.margin),H=Dr(D,{x:0,y:0,width:t,height:r},i),N=(L.flexBasis===void 0||L.flexBasis==="auto"||L.flexBasis==="content"?H.width:ei(L.flexBasis,t))+W+K,V=c+(d.length>0?n:0)+N;d.length>0&&V>t&&(l.push(d),d=[],c=0),d.push(D),c+=(d.length>1?n:0)+N}d.length>0&&l.push(d),a==="wrap-reverse"&&l.reverse();let u=yt(o.rowGap??o.gap,"rowGap"),p=l.map(D=>{let L=vk(D,t,r,n,{...o,flexWrap:"nowrap",alignContent:void 0},!1,i),W=L.reduce((K,H)=>Math.max(K,H.y+H.height),0);return{layouts:L,height:W}}),g=p.reduce((D,L)=>D+L.height,u*Math.max(0,p.length-1)),f=s?Math.max(0,r-g):0,k=o.alignContent??"flex-start",b=0,v=0;k==="flex-end"?b=f:k==="center"?b=Math.floor(f/2):k==="space-between"&&p.length>1?v=f/(p.length-1):k==="space-around"&&p.length>0?(v=f/p.length,b=Math.floor(v/2)):k==="stretch"&&p.length>0&&(v=f/p.length);let T=[],$=b;for(let D of p){for(let L of D.layouts){let W=ht(L,{y:L.y+Math.floor($)});It(W.node,W),T.push(W)}$+=D.height+u+v}return T}function qF(e,t,r,n,o,s){let i=[];if(o.height!==void 0&&o.height!=="auto"){let g=0,f=0,k=[];for(let b of e){let v=b.props,T=St(v.marginTop??v.marginY??v.margin),$=St(v.marginBottom??v.marginY??v.margin),D=v.flexGrow;D===void 0?D=v.height==="fill"||b.type==="spacer"?1:0:D=Ya(D,"flexGrow");let L=yt(v.minHeight,"minHeight"),W=v.maxHeight===void 0?void 0:yt(v.maxHeight,"maxHeight");if(D>0)f+=D,g+=T+$,k.push({node:b,flex:D,minHeight:L,maxHeight:W,marginTop:T,marginBottom:$});else{let K=Dr(b,{x:0,y:0,width:t,height:r},s);g+=K.height+T+$,k.push({node:b,flex:0,minHeight:L,maxHeight:W,marginTop:T,marginBottom:$,layout:K})}}if(g+=n*Math.max(0,e.length-1),f>0){let v=Math.max(0,r-g)/f,T=0;for(let $=0;$<k.length;$++){let D=k[$],W=D.node.props.alignSelf,K=W!=="auto"&&W?W:o.alignItems??"flex-start",H=D.layout;if(D.flex>0){let V=Math.floor(v*D.flex);V=Math.max(D.minHeight,V),D.maxHeight!==void 0&&(V=Math.min(D.maxHeight,V)),H=Dr(D.node,{x:0,y:T,width:t,height:V},s),H=ht(H,{height:V})}H||(H=Dr(D.node,{x:0,y:T,width:t,height:r},s));let I=H.x,N=H.width;K==="center"?I=Math.floor((t-H.width)/2):K==="flex-end"?I=t-H.width:K==="stretch"&&(N=t),H=ht(H,{x:I,y:T,width:N}),It(H.node,H),i.push(H),T+=D.marginTop+H.height+D.marginBottom,$<k.length-1&&(T+=n)}return i}}let l=0;for(let g=0;g<e.length;g++){let f=e[g],k=f.props,b=St(k.marginTop??k.marginY??k.margin),v=St(k.marginBottom??k.marginY??k.margin),T=Dr(f,{x:0,y:l,width:t,height:r-l},s),$=k.alignSelf,D=$!=="auto"&&$?$:o.alignItems??"flex-start",L=T.x,W=T.width;D==="center"?L=Math.floor((t-T.width)/2):D==="flex-end"?L=t-T.width:D==="stretch"&&(W=t);let K=ht(T,{x:L,width:W});It(K.node,K),i.push(K),l+=b+T.height+v,g<e.length-1&&(l+=n)}let d=l,c=o.height!==void 0?r:d,u=Math.max(0,c-d),p=o.justifyContent??"flex-start";if(u>0&&i.length>0){let g=0;if(p==="flex-end")g=u;else if(p==="center")g=Math.floor(u/2);else if(p==="space-between"&&i.length>1){let f=u/(i.length-1);for(let k=0;k<i.length;k++)i[k]=ht(i[k],{y:i[k].y+Math.floor(f*k)}),It(i[k].node,i[k]);return i}else if(p==="space-around"){let f=u/(i.length*2);for(let k=0;k<i.length;k++)i[k]=ht(i[k],{y:i[k].y+Math.floor(f*(2*k+1))}),It(i[k].node,i[k]);return i}else if(p==="space-evenly"){let f=u/(i.length+1);for(let k=0;k<i.length;k++)i[k]=ht(i[k],{y:i[k].y+Math.floor(f*(k+1))}),It(i[k].node,i[k]);return i}if(g>0)for(let f=0;f<i.length;f++)i[f]=ht(i[f],{y:i[f].y+g}),It(i[f].node,i[f])}return i}function ei(e,t){if(e===void 0||e==="auto")return 0;if(e==="fill")return t;if(typeof e=="number"){if(!Number.isFinite(e)||e<0)throw new RangeError("Layout size must be a finite non-negative number");return Math.floor(e)}if(e.endsWith("%")){let n=Number.parseFloat(e);if(!Number.isFinite(n)||n<0)throw new RangeError("Layout percentage must be finite and non-negative");return t===1/0?0:Math.floor(n/100*t)}let r=Number(e);if(!Number.isFinite(r)||r<0)throw new RangeError(`Invalid layout size: ${e}`);return Math.floor(r)}var Sk={background:0,normal:1,modal:2,critical:3};var Tk=new Set;function Ak(e,t){process.env.NODE_ENV==="production"||Tk.has(e)||(Tk.add(e),console.warn(`[tuiuiu] ${t}`))}var KF=Symbol("tuiuiu.hook-runtime-state"),Uu=new WeakMap;function VF(){return{appContext:null,focusManager:null,inputHandlers:[],handlerIdCounter:0,hookState:{state:[],effects:[]},hookIndex:0,isRendering:!1,lastMaxHookIndex:0,renderPhaseMode:"hooks",hookCleanups:new Map,mouseHandlers:[],mouseHandlerIdCounter:0,lastMouseClick:null,pasteHandlers:[],pasteHandlerIdCounter:0}}function Je(e){return De(KF,VF,e)}function qu(e){return Uu.get(e)??null}function Ck(e="hooks"){let t=Je();t.hookIndex=0,t.isRendering=!0,t.renderPhaseMode=e}function Ok(){let e=Je();e.isRendering=!1,e.renderPhaseMode="hooks";let t=e.hookIndex;if(e.lastMaxHookIndex>0&&t!==e.lastMaxHookIndex&&Ak("hook-count-changed",`Hook count changed between renders (${e.lastMaxHookIndex} \u2192 ${t}). A component with internal hooks (Select, Tabs, Menu, ChatList, ScrollList, etc.) was conditionally added or removed from the render tree. FIX: Keep hook-bearing components always rendered \u2014 use height: 0, isActive: false, or display: "none" to hide them instead of removing them with ternaries or When().`),t<e.lastMaxHookIndex)for(let r=t;r<e.lastMaxHookIndex;r++){Ik(r,e);let n=e.hookState.state[r];n&&typeof n=="object"&&"registered"in n&&"handlerId"in n&&n.registered&&n.handlerId!==null&&(ti(n.handlerId),n.handlerId=null,n.registered=!1)}e.hookState.state.length=Math.min(e.hookState.state.length,t),e.lastMaxHookIndex=t}function Dk(){return Je().isRendering}function Fk(){return Je().renderPhaseMode}function ar(e){let t=Je();t.isRendering||Ak("hook-outside-render","A hook (useState, useMemo, useComputed, etc.) was called outside a component render. Hooks must be called inside a component function, not at module scope or in event handlers. Move the hook call inside your component function.");let r=t.hookIndex++;return r>=t.hookState.state.length?(t.hookState.state.push(e),{value:e,isNew:!0}):{value:t.hookState.state[r],isNew:!1}}function lr(e,t){Je().hookState.state[e]=t}function Fr(e){return Je().hookState.state[e]}function Jt(){return Je().hookIndex-1}function Vn(e,t=Jt()){let r=Je(),n=r.hookCleanups.get(t);return n||(n=new Set,r.hookCleanups.set(t,n)),n.add(e),()=>{n?.delete(e),n?.size===0&&r.hookCleanups.delete(t)}}function Ik(e,t){let r=t.hookCleanups.get(e);if(r){t.hookCleanups.delete(e);for(let n of[...r].reverse())try{n()}catch(o){console.error("[tuiuiu] Error during hook cleanup:",o)}}}function Qa(e){let t=Ne(e),r=Je(t);qe(t,()=>{for(let n of[...r.hookCleanups.keys()].sort((o,s)=>s-o))Ik(n,r)});for(let n of r.hookState.effects)n&&n.dispose();r.hookState={state:[],effects:[]},r.hookIndex=0,r.lastMaxHookIndex=0,r.isRendering=!1}function zr(e){return Je(e).appContext}function Ku(e,t){let r=Ne(t),n=Je(r),o=n.appContext;n.appContext=e,o&&o!==e&&Uu.delete(o),e&&Uu.set(e,r)}function Xa(e,t={}){let{priority:r="normal",stopPropagation:n=!1}=t,o=Je(),s=o.handlerIdCounter++,i={handler:e,priorityValue:Sk[r],stopPropagation:n,id:s};return o.inputHandlers.push(i),o.inputHandlers.length>100&&console.warn(`[tuiuiu] High number of input handlers (${o.inputHandlers.length}). This may indicate a memory leak from handlers not being properly removed.`),s}function ti(e){let t=Je(),r=t.inputHandlers.findIndex(n=>n.id===e);return r!==-1?(t.inputHandlers.splice(r,1),!0):!1}function Mk(e,t,r){let o=[...Je().inputHandlers].sort((i,a)=>a.priorityValue!==i.priorityValue?a.priorityValue-i.priorityValue:i.id-a.id),s={input:e,key:t,isPasted:!1,...r};for(let i of o)try{let a=i.handler(e,t,s);if(i.stopPropagation&&a)break}catch(a){console.error("[tuiuiu] Error in input handler:",a)}}function Lk(e){let t=Je(e);t.inputHandlers.length=0,t.handlerIdCounter=0}function Vu(e,t){Je(t).focusManager=e}function jk(e){let t=Je(),r=JF(t,e);for(let n of[...t.mouseHandlers])try{n.handler(r)}catch(o){console.error("[tuiuiu] Error in mouse handler:",o)}}function Bk(e){let t=Je(e);t.mouseHandlers.length=0,t.mouseHandlerIdCounter=0,t.lastMouseClick=null}var zF=300,Pk=2;function JF(e,t){if(t.action!=="click")return t;let r=Date.now(),n=e.lastMouseClick;return n&&n.button===t.button&&r-n.time<zF&&Math.abs(t.x-n.x)<=Pk&&Math.abs(t.y-n.y)<=Pk?(e.lastMouseClick=null,{...t,action:"double-click"}):(e.lastMouseClick={x:t.x,y:t.y,time:r,button:t.button},t)}function $k(e,t){let r=[...Je().pasteHandlers].sort((o,s)=>s.priorityValue!==o.priorityValue?s.priorityValue-o.priorityValue:o.id-s.id),n={text:e,isBracketed:t};for(let o of r)try{let s=o.handler(n);if(o.stopPropagation&&s)break}catch(s){console.error("[tuiuiu] Error in paste handler:",s)}}function Gk(e){let t=Je(e);t.pasteHandlers.length=0,t.pasteHandlerIdCounter=0}var ri=[],el=!1,zu=!1,Za=0,ni=null,oi=null;function Nk(){if(!zu){zu=!0;for(let e=ri.length-1;e>=0;e--)try{ri[e]()}catch{}zu=!1}}function Jr(e){return ri.push(e),()=>{let t=ri.indexOf(e);t!==-1&&ri.splice(t,1)}}function Wk(){Za++,el||(el=!0,ni=()=>{Nk()},oi=()=>{Nk()},process.on("exit",ni),process.on("uncaughtExceptionMonitor",oi));let e=!1;return()=>{e||(e=!0,Za=Math.max(0,Za-1),Za===0&&YF())}}function YF(){el&&(ni&&process.off("exit",ni),oi&&process.off("uncaughtExceptionMonitor",oi),ni=null,oi=null,el=!1)}var Hk=/^\x1b\[<(\d+);(\d+);(\d+);(\d+);(\d+)([Mm])/,Uk=/^\x1b\[<(\d+);(\d+);(\d+)([Mm])/,qk=/^\x1b\[M([\x00-\xff])([\x00-\xff])([\x00-\xff])/,Kk=/^\x1b\[(\d+);(\d+);(\d+)M/;function dr(e){let t=Number.parseInt(e,10);return Number.isSafeInteger(t)?t:null}function tl(e,t,r,n){if(!Number.isSafeInteger(e)||!Number.isSafeInteger(t)||!Number.isSafeInteger(r)||e<0||t<1||r<1)return null;let o=e&3,s=(e&32)!==0,i=(e&64)!==0,a,l;return i?(a=e&1?"scroll-down":"scroll-up",l="click"):(o===0?a="left":o===1?a="middle":o===2?a="right":a="none",s&&o===3?l="move":n||o===3?l="release":s?l="drag":l="click"),{x:t-1,y:r-1,button:a,action:l,modifiers:{shift:(e&4)!==0,alt:(e&8)!==0,ctrl:(e&16)!==0}}}function Vk(e){let t=Hk.exec(e);if(t){let s=dr(t[1]),i=dr(t[2]),a=dr(t[3]),l=dr(t[4]),d=dr(t[5]);if(s===null||i===null||a===null||l===null||d===null||i<0||a<0)return null;let c=tl(s,l,d,t[6]==="m");return c?(c.pixelX=i,c.pixelY=a,{event:c,length:t[0].length}):null}let r=Uk.exec(e);if(r){let s=dr(r[1]),i=dr(r[2]),a=dr(r[3]);if(s===null||i===null||a===null)return null;let l=tl(s,i,a,r[4]==="m");return l?{event:l,length:r[0].length}:null}let n=qk.exec(e);if(n){let s=n[1].charCodeAt(0)-32,i=n[2].charCodeAt(0)-32,a=n[3].charCodeAt(0)-32,l=tl(s,i,a,!1);return l?{event:l,length:n[0].length}:null}let o=Kk.exec(e);if(o){let s=dr(o[1]),i=dr(o[2]),a=dr(o[3]);if(s===null||i===null||a===null)return null;let l=tl(s-32,i,a,!1);return l?{event:l,length:o[0].length}:null}return null}function zk(e){return Hk.test(e)||Uk.test(e)||qk.test(e)||Kk.test(e)}var QF="\x1B[?1000h\x1B[?1002h\x1B[?1006h",Jk="\x1B[?1000l\x1B[?1002l\x1B[?1003l\x1B[?1006l",XF=Symbol("tuiuiu.mouse-runtime-state");function si(e){return De(XF,()=>({trackingEnabled:!1,trackingRefCount:0,outputStream:null,panicRegistered:!1,unregisterPanic:null}),e)}function Ju(e){return zr(e)?.stdout??process.stdout}function Yu(e){return"isTTY"in e&&!!e.isTTY}function ii(e){return Vk(e)}function Qu(e){return zk(e)}function Ko(e){let t=Ne(e),r=si(t);if(r.trackingRefCount++,!r.trackingEnabled){r.trackingEnabled=!0,ZF(t);let n=Ju(t);r.outputStream=n,Yu(n)&&n.write(QF)}}function zn(e){let t=Ne(e),r=si(t);if(r.trackingRefCount=Math.max(0,r.trackingRefCount-1),r.trackingRefCount===0&&r.trackingEnabled){r.trackingEnabled=!1;let n=r.outputStream??Ju(t);Yu(n)&&n.write(Jk),r.outputStream=null}}function rl(e){let t=Ne(e),r=si(t);if(r.trackingRefCount=0,r.trackingEnabled){r.trackingEnabled=!1;let n=r.outputStream??Ju(t);Yu(n)&&n.write(Jk),r.outputStream=null}}function ZF(e){let t=si(e);t.panicRegistered||(t.panicRegistered=!0,t.unregisterPanic=Jr(Vr(e,()=>rl(e))))}function Yk(e){let t=si(e);t.unregisterPanic&&(t.unregisterPanic(),t.unregisterPanic=null),t.panicRegistered=!1}import{deflateSync as rI}from"node:zlib";var We={synchronizedOutput:!1,styledUnderlines:!1,coloredUnderlines:!1,clipboard:!1,notifications:!1,cursorStyleControl:!1,windowTitle:!1,kittyKeyboard:!1,kittyGraphics:!1,sixel:!1,iterm2Graphics:!1,preferredGraphics:!1,hyperlinks:!1,trueColor:!1,mouse:!1,italic:!1,strikethrough:!1,focusEvents:!1,nerdFonts:!1},Ke={mouse:!0,italic:!0,strikethrough:!0},eI={kitty:{id:"kitty",name:"Kitty",gpuAccelerated:!0,knownCaps:{...We,...Ke,synchronizedOutput:!0,styledUnderlines:!0,coloredUnderlines:!0,clipboard:!0,notifications:"osc99",cursorStyleControl:!0,windowTitle:!0,kittyKeyboard:!0,kittyGraphics:!0,preferredGraphics:"kitty",hyperlinks:!0,trueColor:!0,focusEvents:!0}},alacritty:{id:"alacritty",name:"Alacritty",gpuAccelerated:!0,knownCaps:{...We,...Ke,synchronizedOutput:!0,styledUnderlines:!0,coloredUnderlines:!0,cursorStyleControl:!0,windowTitle:!0,preferredGraphics:!1,hyperlinks:!0,trueColor:!0,focusEvents:!0}},ghostty:{id:"ghostty",name:"Ghostty",gpuAccelerated:!0,knownCaps:{...We,...Ke,synchronizedOutput:!0,styledUnderlines:!0,coloredUnderlines:!0,clipboard:!0,notifications:"osc99",cursorStyleControl:!0,windowTitle:!0,kittyKeyboard:!0,kittyGraphics:!0,preferredGraphics:"kitty",hyperlinks:!0,trueColor:!0,focusEvents:!0}},wezterm:{id:"wezterm",name:"WezTerm",gpuAccelerated:!0,knownCaps:{...We,...Ke,synchronizedOutput:!0,styledUnderlines:!0,coloredUnderlines:!0,clipboard:!0,notifications:"osc9",cursorStyleControl:!0,windowTitle:!0,kittyKeyboard:!0,kittyGraphics:!1,sixel:!1,iterm2Graphics:!0,preferredGraphics:"iterm2",hyperlinks:!0,trueColor:!0,focusEvents:!0}},rio:{id:"rio",name:"Rio",gpuAccelerated:!0,knownCaps:{...We,...Ke,synchronizedOutput:!0,styledUnderlines:!0,coloredUnderlines:!0,clipboard:!0,cursorStyleControl:!0,windowTitle:!0,kittyKeyboard:!0,iterm2Graphics:!0,sixel:!1,preferredGraphics:"iterm2",hyperlinks:!0,trueColor:!0,focusEvents:!0}},warp:{id:"warp",name:"Warp",gpuAccelerated:!0,knownCaps:{...We,...Ke,cursorStyleControl:!0,windowTitle:!0,preferredGraphics:!1,hyperlinks:!0,trueColor:!0}},foot:{id:"foot",name:"Foot",gpuAccelerated:!1,knownCaps:{...We,...Ke,synchronizedOutput:!0,styledUnderlines:!0,coloredUnderlines:!0,clipboard:!0,notifications:"osc777",cursorStyleControl:!0,windowTitle:!0,kittyKeyboard:!0,sixel:!0,preferredGraphics:"sixel",hyperlinks:!0,trueColor:!0,focusEvents:!0}},contour:{id:"contour",name:"Contour",gpuAccelerated:!0,knownCaps:{...We,...Ke,synchronizedOutput:!0,styledUnderlines:!0,coloredUnderlines:!0,clipboard:!0,cursorStyleControl:!0,windowTitle:!0,kittyKeyboard:!0,sixel:!1,preferredGraphics:!1,hyperlinks:!0,trueColor:!0,focusEvents:!0}},hyper:{id:"hyper",name:"Hyper",gpuAccelerated:!1,knownCaps:{...We,...Ke,cursorStyleControl:!0,windowTitle:!0,preferredGraphics:!1,hyperlinks:!0,trueColor:!0}},vscode:{id:"vscode",name:"VS Code Terminal",gpuAccelerated:!1,knownCaps:{...We,...Ke,synchronizedOutput:!0,styledUnderlines:!0,coloredUnderlines:!0,cursorStyleControl:!0,windowTitle:!0,preferredGraphics:!1,hyperlinks:!0,trueColor:!0,focusEvents:!0}},iterm2:{id:"iterm2",name:"iTerm2",gpuAccelerated:!1,knownCaps:{...We,...Ke,synchronizedOutput:!0,styledUnderlines:!0,coloredUnderlines:!0,clipboard:!0,notifications:"osc9",cursorStyleControl:!0,windowTitle:!0,iterm2Graphics:!0,preferredGraphics:"iterm2",hyperlinks:!0,trueColor:!0,focusEvents:!0}},"terminal-app":{id:"terminal-app",name:"Terminal.app",gpuAccelerated:!1,knownCaps:{...We,...Ke,cursorStyleControl:!0,windowTitle:!0,preferredGraphics:!1,trueColor:!1}},"windows-terminal":{id:"windows-terminal",name:"Windows Terminal",gpuAccelerated:!0,knownCaps:{...We,...Ke,synchronizedOutput:!0,styledUnderlines:!0,coloredUnderlines:!0,cursorStyleControl:!0,windowTitle:!0,preferredGraphics:!1,hyperlinks:!0,trueColor:!0,focusEvents:!0}},konsole:{id:"konsole",name:"Konsole",gpuAccelerated:!1,knownCaps:{...We,...Ke,synchronizedOutput:!0,styledUnderlines:!0,coloredUnderlines:!0,clipboard:!0,cursorStyleControl:!0,windowTitle:!0,sixel:!1,preferredGraphics:!1,hyperlinks:!0,trueColor:!0,focusEvents:!0}},"gnome-terminal":{id:"gnome-terminal",name:"GNOME Terminal",gpuAccelerated:!1,knownCaps:{...We,...Ke,cursorStyleControl:!0,windowTitle:!0,preferredGraphics:!1,hyperlinks:!0,trueColor:!0}},tilix:{id:"tilix",name:"Tilix",gpuAccelerated:!1,knownCaps:{...We,...Ke,notifications:"osc777",cursorStyleControl:!0,windowTitle:!0,preferredGraphics:!1,hyperlinks:!0,trueColor:!0}},terminology:{id:"terminology",name:"Terminology",gpuAccelerated:!0,knownCaps:{...We,...Ke,cursorStyleControl:!0,windowTitle:!0,preferredGraphics:!1,trueColor:!0}},mlterm:{id:"mlterm",name:"mlterm",gpuAccelerated:!1,knownCaps:{...We,...Ke,cursorStyleControl:!0,windowTitle:!0,sixel:!0,preferredGraphics:"sixel",trueColor:!0}},"black-box":{id:"black-box",name:"Black Box",gpuAccelerated:!1,knownCaps:{...We,...Ke,cursorStyleControl:!0,windowTitle:!0,sixel:!0,preferredGraphics:"sixel",trueColor:!0}},bobcat:{id:"bobcat",name:"Bobcat",gpuAccelerated:!1,knownCaps:{...We,...Ke,cursorStyleControl:!0,windowTitle:!0,iterm2Graphics:!0,sixel:!0,preferredGraphics:"iterm2",trueColor:!0}},st:{id:"st",name:"st (suckless)",gpuAccelerated:!1,knownCaps:{...We,...Ke,cursorStyleControl:!0,preferredGraphics:!1,trueColor:!0}},"rxvt-unicode":{id:"rxvt-unicode",name:"rxvt-unicode",gpuAccelerated:!1,knownCaps:{...We,...Ke,cursorStyleControl:!0,windowTitle:!0,preferredGraphics:!1,trueColor:!1}},unknown:{id:"unknown",name:"Unknown",gpuAccelerated:!1,knownCaps:We}};function tI(e=process.env){let t=e.TERM_PROGRAM||"",r=e.TERM||"";return e.KITTY_WINDOW_ID?"kitty":e.ALACRITTY_WINDOW_ID||e.ALACRITTY_LOG?"alacritty":e.GHOSTTY_RESOURCES_DIR?"ghostty":e.WEZTERM_PANE||t==="WezTerm"?"wezterm":t==="rio"?"rio":e.WARP_IS_LOCAL_SHELL_SESSION?"warp":r.startsWith("foot")||r==="foot"?"foot":e.CONTOUR_TERMINAL_ID?"contour":e.VSCODE_PID||t==="vscode"?"vscode":t==="iTerm.app"?"iterm2":t==="Apple_Terminal"?"terminal-app":e.WT_SESSION?"windows-terminal":e.KONSOLE_VERSION?"konsole":e.VTE_VERSION?e.TILIX_ID?"tilix":"gnome-terminal":t==="Hyper"?"hyper":e.TERMINOLOGY?"terminology":t==="mlterm"?"mlterm":t==="blackbox"||e.BLACKBOX_THEMES_DIR?"black-box":t==="Bobcat"?"bobcat":r.includes("rxvt-unicode")||r.includes("rxvt")?"rxvt-unicode":r.includes("mlterm")?"mlterm":r==="st-256color"||r==="st"?"st":"unknown"}function Qk(e=process.env){return e.TMUX?{type:"tmux",version:e.TMUX?.split(",")[1],needsPassthrough:!0}:e.STY?{type:"screen",version:void 0,needsPassthrough:!0}:e.ZELLIJ?{type:"zellij",version:(e.ZELLIJ_SESSION_NAME,void 0),needsPassthrough:!1}:null}function nl(e=process.env){let t=tI(e),r=eI[t],n;switch(t){case"iterm2":n=e.TERM_PROGRAM_VERSION;break;case"konsole":n=e.KONSOLE_VERSION;break;case"vscode":n=e.TERM_PROGRAM_VERSION;break;case"wezterm":n=e.TERM_PROGRAM_VERSION;break;default:n=void 0}return{...r,version:n}}var nw=Symbol("tuiuiu.graphics-runtime-state");function ow(e){return{detectedProtocol:null,manualOverride:(e.id===0?null:Ft(nw,()=>ow(Cr())))?.manualOverride??null,negotiatedCapabilities:null,activeDetectionPromise:null,nextTerminalImageProtocolStateId:1,nextKittyImageId:1,cellSizeChangeListeners:new Set}}function tp(){let e=Ne();return De(nw,()=>ow(e),e)}var Xk={width:10,height:20};function ol(e){return{width:Math.max(1,Math.round(e?.width??Xk.width)),height:Math.max(1,Math.round(e?.height??Xk.height))}}function nI(){let e=process.env,t=e.TERM?.toLowerCase()||"",r=e.COLORTERM?.toLowerCase()||"",n=e.TERM_PROGRAM?.toLowerCase()||"";return e.FORCE_COLOR==="0"?!1:e.FORCE_COLOR==="2"||e.FORCE_COLOR==="3"?!0:r==="truecolor"||r==="24bit"||t.includes("256color")||t.includes("direct")||n==="iterm.app"||n==="wezterm"||n==="hyper"||!!e.WT_SESSION}function sw(){return nI()?"halfblock":"braille"}function Vo(e){return e==="none"?sw():e}function iw(e){let t=Vo(e);return t==="halfblock"||t==="braille"}function aw(e){let t=Vo(e);return t==="kitty"||t==="iterm2"||t==="sixel"}function Zk(e,t,r){switch(e){case"kitty":return{protocol:"kitty",supportsTransparency:!0,supportsAnimation:!0,detectedBy:t,cellSize:r,supportsQueries:!0,supportsPlacement:!0,supportsClear:!0};case"iterm2":return{protocol:"iterm2",supportsTransparency:!0,supportsAnimation:!1,detectedBy:t,cellSize:r,supportsQueries:!1,supportsPlacement:!1,supportsClear:!1};case"sixel":return{protocol:"sixel",supportsTransparency:!1,supportsAnimation:!1,detectedBy:t,cellSize:r,supportsQueries:!0,supportsPlacement:!1,supportsClear:!1,maxWidth:1024,maxHeight:1024};case"halfblock":return{protocol:"halfblock",supportsTransparency:!1,supportsAnimation:!1,detectedBy:t,cellSize:r,supportsQueries:!1,supportsPlacement:!1,supportsClear:!1};case"braille":return{protocol:"braille",supportsTransparency:!1,supportsAnimation:!1,detectedBy:t,cellSize:r,supportsQueries:!1,supportsPlacement:!1,supportsClear:!1};default:return{protocol:"none",supportsTransparency:!1,supportsAnimation:!1,detectedBy:t,cellSize:r,supportsQueries:!1,supportsPlacement:!1,supportsClear:!1}}}function lw(){let e=process.env.TUIUIU_GRAPHICS?.toLowerCase();return e&&aI(e)?e:null}function dw(){let e=process.env.TERM_PROGRAM?.toLowerCase()||"",t=process.env.KITTY_WINDOW_ID,r=process.env.ITERM_SESSION_ID;return t||e==="kitty"?"kitty":r||e==="iterm.app"?"iterm2":null}function cw(){return nl(process.env).knownCaps.preferredGraphics||null}function uw(){return(process.env.TERM?.toLowerCase()||"").includes("sixel")?"sixel":null}function oI(){let e=lw();if(e)return e;let t=dw();if(t)return t;let r=cw();return r||uw()}function sI(e){return lw()===e||dw()===e?"env":cw()===e?"profile":uw()===e?"env":"fallback"}function zo(){let e=tp();if(e.manualOverride)return Zk(e.manualOverride,"manual",ol(e.negotiatedCapabilities?.cellSize));if(e.negotiatedCapabilities)return e.negotiatedCapabilities;let t=iI();return Zk(t,sI(t),ol())}function iI(){let e=tp();return e.manualOverride?e.manualOverride:e.negotiatedCapabilities?e.negotiatedCapabilities.protocol:(e.detectedProtocol||(e.detectedProtocol=oI()??sw()),e.detectedProtocol)}function aI(e){return["kitty","iterm2","sixel","halfblock","braille","none"].includes(e)}function pw(){let e=tp();if(e.negotiatedCapabilities){let t=e.negotiatedCapabilities.cellSize;e.negotiatedCapabilities={...e.negotiatedCapabilities,cellSize:ol(void 0)};let r=e.negotiatedCapabilities.cellSize;if(t.width!==r.width||t.height!==r.height)for(let n of[...e.cellSizeChangeListeners])n(r)}}function lI(e){let t=2166136261;t^=e.width,t=Math.imul(t,16777619),t^=e.height,t=Math.imul(t,16777619);for(let r=0;r<e.pixels.length;r++)t^=e.pixels[r],t=Math.imul(t,16777619);return(t>>>0).toString(16).padStart(8,"0")}function fw(e){return"desiredColumns"in e&&"desiredRows"in e&&"hash"in e}function li(e){return fw(e)?e:il(e)}function ew(e,t,r){return e<=0||t<=0||r<=0?1:Math.max(1,Math.round(e*(r/t)))}function il(e,t={}){let r=ol(t.cellSize??zo().cellSize);return{pixels:e.pixels,width:e.width,height:e.height,cellSize:r,desiredColumns:Math.max(1,Math.ceil(e.width/r.width)),desiredRows:Math.max(1,Math.ceil(e.height/r.height)),hash:lI(e)}}function di(e,t={}){let r=fw(e)?e:il(e,{cellSize:t.cellSize}),n=t.fit??"contain",o=t.width?Math.max(1,Math.round(t.width)):void 0,s=t.height?Math.max(1,Math.round(t.height)):void 0,i=o??r.desiredColumns,a=s??r.desiredRows,l=r.desiredColumns,d=r.desiredRows,c=r.width,u=r.height,p={x:0,y:0,width:r.width,height:r.height};if(o!==void 0&&s===void 0)l=o,d=ew(r.desiredRows,r.desiredColumns,l),i=l,a=d,c=l*r.cellSize.width,u=d*r.cellSize.height,p={x:0,y:0,width:c,height:u};else if(s!==void 0&&o===void 0)d=s,l=ew(r.desiredColumns,r.desiredRows,d),i=l,a=d,c=l*r.cellSize.width,u=d*r.cellSize.height,p={x:0,y:0,width:c,height:u};else if(o!==void 0&&s!==void 0)switch(i=o,a=s,n){case"fill":l=i,d=a,c=l*r.cellSize.width,u=d*r.cellSize.height,p={x:0,y:0,width:c,height:u};break;case"cover":{let g=Math.max(i/Math.max(1,r.desiredColumns),a/Math.max(1,r.desiredRows)),f=Math.max(1,Math.round(r.desiredColumns*g)),k=Math.max(1,Math.round(r.desiredRows*g));l=i,d=a,c=f*r.cellSize.width,u=k*r.cellSize.height,p={x:Math.max(0,Math.floor((c-i*r.cellSize.width)/2)),y:Math.max(0,Math.floor((u-a*r.cellSize.height)/2)),width:i*r.cellSize.width,height:a*r.cellSize.height};break}case"crop":l=Math.min(r.desiredColumns,i),d=Math.min(r.desiredRows,a),c=r.width,u=r.height,p={x:0,y:0,width:Math.min(r.width,l*r.cellSize.width),height:Math.min(r.height,d*r.cellSize.height)};break;case"none":l=Math.min(r.desiredColumns,i),d=Math.min(r.desiredRows,a),c=r.width,u=r.height,p={x:0,y:0,width:Math.min(r.width,l*r.cellSize.width),height:Math.min(r.height,d*r.cellSize.height)};break;case"contain":default:{let g=Math.min(i/Math.max(1,r.desiredColumns),a/Math.max(1,r.desiredRows));l=Math.max(1,Math.round(r.desiredColumns*g)),d=Math.max(1,Math.round(r.desiredRows*g)),c=l*r.cellSize.width,u=d*r.cellSize.height,p={x:0,y:0,width:c,height:u};break}}else c=r.desiredColumns*r.cellSize.width,u=r.desiredRows*r.cellSize.height,p={x:0,y:0,width:c,height:u};return{fit:n,cellSize:r.cellSize,targetColumns:i,targetRows:a,renderColumns:l,renderRows:d,resizedPixelWidth:c,resizedPixelHeight:u,visiblePixels:p}}var Jo={transmit(e,t={}){let r=li(e),n=di(r,t),o=t.width??n.renderColumns,s=t.height??n.renderRows,i=Number.isInteger(t.imageId)&&t.imageId&&t.imageId>0?`,i=${t.imageId}`:"",a=gI(r),l=gw(a),d=4096,c=[];for(let u=0;u<l.length;u+=d){let p=l.slice(u,u+d),f=u+d>=l.length?0:1;u===0?c.push(`\x1B_Ga=T,f=100,c=${o},r=${s}${i},m=${f};${p}\x1B\\`):c.push(`\x1B_Gm=${f};${p}\x1B\\`)}return c.join("")},display(e,t,r){return`\x1B_Ga=p,i=${e},p=1,X=${t},Y=${r}\x1B\\`},delete(e){return e!==void 0?`\x1B_Ga=d,d=i,i=${e}\x1B\\`:"\x1B_Ga=d,d=A\x1B\\"},clear(){return"\x1B_Ga=d,d=A\x1B\\"}},dI={display(e,t={}){let{pixels:r}=li(e),n=t.width?`width=${t.width}`:"width=auto",o=t.height?`height=${t.height}`:"height=auto",s=gw(r);return`\x1B]1337;File=inline=1;${n};${o}:${s}\x07`},displayFile(e,t={}){let r=t.width?`width=${t.width}`:"width=auto",n=t.height?`height=${t.height}`:"height=auto",o=Buffer.from(e).toString("base64");return`\x1B]1337;File=inline=1;${r};${n}:${o}\x07`}},cI={encode(e,t={}){let r=li(e),n=di(r,t),o=t.width!==void 0||t.height!==void 0?hw({width:r.width,height:r.height,pixels:r.pixels},n.resizedPixelWidth,n.resizedPixelHeight):r,{width:s,height:i,pixels:a}=o,l=hI(a,256),d="\x1BPq";for(let c=0;c<l.length;c++){let[u,p,g]=l[c],f=Math.round(u/255*100),k=Math.round(p/255*100),b=Math.round(g/255*100);d+=`#${c};2;${f};${k};${b}`}for(let c=0;c<i;c+=6){for(let u=0;u<l.length;u++){let p=!1,g=`#${u}`;for(let f=0;f<s;f++){let k=0;for(let b=0;b<6;b++){let v=c+b;if(v>=i)continue;let T=(v*s+f)*4,$=a[T],D=a[T+1],L=a[T+2];mI([$,D,L],l)===u&&(k|=1<<b,p=!0)}g+=String.fromCharCode(63+k)}p&&(d+=g+"$")}d+="-"}return d+="\x1B\\",d}};function tw(e,t,r){if(t<0||t>=e.width||r<0||r>=e.height)return{r:0,g:0,b:0,a:0};let n=(r*e.width+t)*4;return{r:e.pixels[n]??0,g:e.pixels[n+1]??0,b:e.pixels[n+2]??0,a:e.pixels[n+3]??0}}function Xu(e,t){let r=[];return e&&e.a>0&&r.push(`38;2;${e.r};${e.g};${e.b}`),t&&t.a>0&&r.push(`48;2;${t.r};${t.g};${t.b}`),r.length>0?`\x1B[${r.join(";")}m`:void 0}var rw={render(e,t={}){let r=li(e),n=di(r,t),o=Math.max(1,n.renderColumns),s=Math.max(1,n.renderRows*2),i=hw(e,o,s),a=[];for(let l=0;l<s;l+=2){let d="",c;for(let u=0;u<o;u++){let p=tw(i,u,l),g=tw(i,u,l+1),f=" ",k;p.a>0&&g.a>0?(f="\u2580",k=Xu(p,g)):p.a>0?(f="\u2580",k=Xu(p)):g.a>0&&(f="\u2584",k=Xu(g)),k!==c&&(c&&(d+="\x1B[0m"),k&&(d+=k),c=k),d+=f}c&&(d+="\x1B[0m"),a.push(d)}return a.join(`
118
+ `)}},ai=10240,uI={render(e,t={}){let{width:r,height:n,pixels:o}=li(e),s=t.threshold??128,i=t.dither??!1,a=Math.ceil(r/2),l=Math.ceil(n/4),d=new Float32Array(r*n);for(let u=0;u<r*n;u++){let p=o[u*4],g=o[u*4+1],f=o[u*4+2];d[u]=.299*p+.587*g+.114*f}i&&bI(d,r,n);let c=[];for(let u=0;u<l;u++){let p="";for(let g=0;g<a;g++){let f=0,k=[[0,0,0],[0,1,1],[0,2,2],[1,0,3],[1,1,4],[1,2,5],[0,3,6],[1,3,7]];for(let[b,v,T]of k){let $=g*2+b,D=u*4+v;if($<r&&D<n){let L=D*r+$;d[L]<s&&(f|=1<<T)}}p+=String.fromCharCode(ai+f)}c.push(p)}return c.join(`
119
+ `)},invert(e){let t="";for(let r of e){if(r===`
120
+ `){t+=r;continue}let n=r.charCodeAt(0);if(n>=ai&&n<ai+256){let o=ai+(255-(n-ai));t+=String.fromCharCode(o)}else t+=r}return t}};function al(e,t,r={}){switch(Vo(e)){case"kitty":return Jo.transmit(t,r);case"iterm2":return dI.display(t,r);case"sixel":return cI.encode(t,r);case"halfblock":return rw.render(t,r);case"braille":return uI.render(t,r);default:return rw.render(t,r)}}function ll(e){switch(Vo(e)){case"kitty":return Jo.clear();case"iterm2":return"";case"sixel":return"";case"halfblock":case"braille":return"";default:return""}}var Zu=null;function pI(){if(Zu)return Zu;let e=new Uint32Array(256);for(let t=0;t<256;t++){let r=t;for(let n=0;n<8;n++)r=r&1?3988292384^r>>>1:r>>>1;e[t]=r>>>0}return Zu=e,e}function fI(e){let t=pI(),r=4294967295;for(let n=0;n<e.length;n++)r=t[(r^e[n])&255]^r>>>8;return(r^4294967295)>>>0}function sl(e,t,r){e[r]=t>>>24&255,e[r+1]=t>>>16&255,e[r+2]=t>>>8&255,e[r+3]=t&255}function ep(e,t){let r=new Uint8Array(8+t.length+4);sl(r,t.length,0),r[4]=e.charCodeAt(0),r[5]=e.charCodeAt(1),r[6]=e.charCodeAt(2),r[7]=e.charCodeAt(3),r.set(t,8);let n=r.subarray(4,8+t.length);return sl(r,fI(n),8+t.length),r}function gI(e){let{width:t,height:r,pixels:n}=e,o=new Uint8Array([137,80,78,71,13,10,26,10]),s=new Uint8Array(13);sl(s,t,0),sl(s,r,4),s[8]=8,s[9]=6,s[10]=0,s[11]=0,s[12]=0;let i=ep("IHDR",s),a=t*4,l=new Uint8Array((1+a)*r);for(let f=0;f<r;f++){let k=f*a,b=f*(1+a);l[b]=1;for(let v=0;v<a;v++){let T=n[k+v],$=v>=4?n[k+v-4]:0;l[b+1+v]=T-$&255}}let d=rI(Buffer.from(l)),c=ep("IDAT",new Uint8Array(d.buffer,d.byteOffset,d.byteLength)),u=ep("IEND",new Uint8Array(0)),p=new Uint8Array(o.length+i.length+c.length+u.length),g=0;return p.set(o,g),g+=o.length,p.set(i,g),g+=i.length,p.set(c,g),g+=c.length,p.set(u,g),p}function gw(e){return Buffer.from(e).toString("base64")}function hI(e,t){let r=new Map;for(let o=0;o<e.length;o+=4){let s=`${e[o]},${e[o+1]},${e[o+2]}`;r.set(s,(r.get(s)||0)+1)}return Array.from(r.entries()).sort((o,s)=>s[1]-o[1]).slice(0,t).map(([o])=>{let[s,i,a]=o.split(",").map(Number);return[s,i,a]})}function mI(e,t){let r=0,n=1/0;for(let o=0;o<t.length;o++){let[s,i,a]=t[o],l=e[0]-s,d=e[1]-i,c=e[2]-a,u=l*l+d*d+c*c;u<n&&(n=u,r=o)}return r}function bI(e,t,r){for(let n=0;n<r;n++)for(let o=0;o<t;o++){let s=n*t+o,i=e[s],a=i<128?0:255;e[s]=a;let l=i-a;o+1<t&&(e[s+1]+=l*7/16),n+1<r&&(o>0&&(e[s+t-1]+=l*3/16),e[s+t]+=l*5/16,o+1<t&&(e[s+t+1]+=l*1/16))}}function hw(e,t,r){let{width:n,height:o,pixels:s}=e,i=new Uint8Array(t*r*4);for(let a=0;a<r;a++)for(let l=0;l<t;l++){let d=Math.floor(l/t*n),u=(Math.floor(a/r*o)*n+d)*4,p=(a*t+l)*4;i[p]=s[u],i[p+1]=s[u+1],i[p+2]=s[u+2],i[p+3]=s[u+3]}return{pixels:i,width:t,height:r}}function np(e){let t=e.props;return!!(t.onClick||t.onDoubleClick||t.onMouseDown||t.onMouseUp||t.onMouseMove||t.onMouseEnter||t.onMouseLeave||t.onContextMenu||t.onScroll)}function dl(e,t,r=0,n=0,o=null,s){let{node:i,x:a,y:l,width:d,height:c,children:u}=e,p=r+a,g=n+l,f=s?Math.max(p,s.x):p,k=s?Math.max(g,s.y):g,b=s?Math.min(p+d,s.x+s.width):p+d,v=s?Math.min(g+c,s.y+s.height):g+c;b>f&&v>k&&t(i,f,k,b-f,v-k,o);let T=i.props,$=T.paddingTop??T.paddingY??T.padding??0,D=T.paddingLeft??T.paddingX??T.padding??0,L=T.borderStyle&&T.borderStyle!=="none"?1:0,W=p+D+L,K=typeof T.__scrollOffsetY=="number"&&Number.isFinite(T.__scrollOffsetY)?Math.max(0,Math.floor(T.__scrollOffsetY)):0,H=g+$+L-K,I=T.overflow==="hidden"||T.overflowX==="hidden",N=T.overflow==="hidden"||T.overflowY==="hidden",V={x:I?p:s?.x??Number.MIN_SAFE_INTEGER,y:N?g:s?.y??Number.MIN_SAFE_INTEGER,width:I?d:s?.width??Number.MAX_SAFE_INTEGER*2,height:N?c:s?.height??Number.MAX_SAFE_INTEGER*2},ge=I||N?yI(s,V):s;for(let fe of u)dl(fe,t,W,H,i,ge)}function yI(e,t){if(!e)return t;let r=Math.max(e.x,t.x),n=Math.max(e.y,t.y),o=Math.min(e.x+e.width,t.x+t.width),s=Math.min(e.y+e.height,t.y+t.height);return{x:r,y:n,width:Math.max(0,o-r),height:Math.max(0,s-n)}}function mw(e){let t=[],r=0;return dl(e,(n,o,s,i,a)=>{np(n)&&t.push({node:n,x:o,y:s,width:i,height:a,zIndex:r++})}),t}var rp=class{elements=[];boundsByNode=new Map;parentMap=new Map;zCounter=0;hoveredElement=null;lastClickTime=0;lastClickPos={x:-1,y:-1};lastClickButton="none";mouseTrackingEnabled=!1;inputHandler=null;clear(){this.elements=[],this.boundsByNode.clear(),this.parentMap.clear(),this.zCounter=0}register(t,r,n,o,s,i){if(this.parentMap.set(t,i),np(t)){let a={node:t,x:r,y:n,width:o,height:s,zIndex:this.zCounter++};this.elements.push(a),this.boundsByNode.set(t,a)}}registerFromLayout(t,r=0,n=0,o=null){dl(t,(s,i,a,l,d,c)=>{this.register(s,i,a,l,d,c)},r,n,o)}hitTest(t,r){for(let n=this.elements.length-1;n>=0;n--){let o=this.elements[n];if(t>=o.x&&t<o.x+o.width&&r>=o.y&&r<o.y+o.height)return{node:o.node,relativeX:t-o.x,relativeY:r-o.y,absoluteX:t,absoluteY:r}}return null}pixelHitTest(t,r,n){let o=Math.floor(t/n.width),s=Math.floor(r/n.height),i=this.hitTest(o,s);if(!i)return null;let a=this.elements.find(l=>l.node===i.node);return a&&(i.pixelRelativeX=t-a.x*n.width,i.pixelRelativeY=r-a.y*n.height),i}handleMouseEvent(t){let r;if(t.pixelX!=null&&t.pixelY!=null){let d=zo().cellSize;r=this.pixelHitTest(t.pixelX,t.pixelY,d)}else r=this.hitTest(t.x,t.y);let n=Date.now(),o=!1,s=d=>{let c=d?this.boundsByNode.get(d):void 0,u=c?t.x-c.x:r?.relativeX??0,p=c?t.y-c.y:r?.relativeY??0,g={x:u,y:p,absoluteX:t.x,absoluteY:t.y,button:t.button,modifiers:t.modifiers,target:d,stopPropagation:()=>{o=!0}};if(t.pixelX!=null&&t.pixelY!=null&&c){let f=zo().cellSize;g.pixelRelativeX=t.pixelX-c.x*f.width,g.pixelRelativeY=t.pixelY-c.y*f.height}else r?.pixelRelativeX!=null&&(g.pixelRelativeX=r.pixelRelativeX),r?.pixelRelativeY!=null&&(g.pixelRelativeY=r.pixelRelativeY);return g},i=r?.node??null;if(i!==this.hoveredElement){if(this.hoveredElement?.props.onMouseLeave){let d=s(this.hoveredElement);this.hoveredElement.props.onMouseLeave(d)}if(i?.props.onMouseEnter){let d=s(i);i.props.onMouseEnter(d)}this.hoveredElement=i}if(!r)return;let a=s(r.node),l=r.node.props;switch(t.action){case"click":let d=n-this.lastClickTime<300&&Math.abs(t.x-this.lastClickPos.x)<=2&&Math.abs(t.y-this.lastClickPos.y)<=2&&t.button===this.lastClickButton;d&&l.onDoubleClick?l.onDoubleClick(a):t.button==="left"&&l.onClick?l.onClick(a):t.button==="right"&&l.onContextMenu?l.onContextMenu(a):(t.button==="scroll-up"||t.button==="scroll-down")&&l.onScroll&&l.onScroll(a),d?this.lastClickTime=0:(this.lastClickTime=n,this.lastClickPos={x:t.x,y:t.y},this.lastClickButton=t.button),l.onMouseDown&&l.onMouseDown(a);break;case"release":l.onMouseUp&&l.onMouseUp(a);break;case"drag":case"move":l.onMouseMove&&l.onMouseMove(a);break;case"double-click":l.onDoubleClick&&l.onDoubleClick(a);break}o||this.bubbleEvent(r.node,t,a)}bubbleEvent(t,r,n){let o=!1,s=this.parentMap.get(t)??null;for(;s&&!o;){let i=this.boundsByNode.get(s);if(i){let a=i.node.props,l={x:n.absoluteX-i.x,y:n.absoluteY-i.y,absoluteX:n.absoluteX,absoluteY:n.absoluteY,button:n.button,modifiers:n.modifiers,target:i.node,stopPropagation:()=>{o=!0}};r.action==="click"&&r.button==="left"&&a.onClick&&a.onClick(l)}s=this.parentMap.get(s)??null}}enable(t){this.mouseTrackingEnabled||(this.mouseTrackingEnabled=!0,Ko(),this.inputHandler=r=>{let n=ii(r);n&&this.handleMouseEvent(n.event)},t(this.inputHandler))}disable(){this.mouseTrackingEnabled&&(this.mouseTrackingEnabled=!1,zn(),this.inputHandler=null)}hasClickableElements(){return this.elements.length>0}get count(){return this.elements.length}getElements(){return[...this.elements]}},kI=Symbol("tuiuiu.hit-test-registry");function Yo(e){return De(kI,()=>new rp,e)}function op(e,t=0){let r=Yo();if(r.clear(),t===0){r.registerFromLayout(e);return}dl(e,(n,o,s,i,a,l)=>{np(n)&&r.register(n,o,s+t,i,a,l)})}import Yt from"node:path";import{fileURLToPath as ww}from"node:url";var wI=[{code:"signals-inside-component-render",title:"Signals Inside Component Render",anchor:"signals-inside-component-render",summary:"Do not call createSignal() inside a component render. It recreates state every rerender.",whyItBreaks:["Signals created inside the component are replaced every time render runs again.","Input handlers and effects often keep references to the old signal instance.","The UI reads a fresh signal while callbacks mutate an older one, so state appears stuck or resets."],wrongExample:`function App() {
121
+ const [count, setCount] = createSignal(0);
122
+ useHotkeys('up', () => setCount(c => c + 1));
123
+ return Text({}, \`Count: \${count()}\`);
124
+ }`,rightExample:`function App() {
125
+ const [count, setCount] = useState(0);
126
+ useHotkeys('up', () => setCount(c => c + 1));
127
+ return Text({}, \`Count: \${count()}\`);
128
+ }
129
+
130
+ // Or keep createSignal() at module scope.
131
+ const [sharedCount, setSharedCount] = createSignal(0);`},{code:"api-pattern-mismatch",title:"Component API Pattern Mismatch",anchor:"api-pattern-mismatch",summary:"Use the child/content pattern each component expects: variadic, props, render-function, or data-driven.",whyItBreaks:["Props-pattern components like Page/AppShell/Modal do not read variadic children the same way as Box.","Render-function components like ScrollList and Static need a function, not a prebuilt VNode.","Data-driven components like Tabs and Accordion expect content inside item objects, not top-level children."],wrongExample:`Page({ title: 'Home' }, Content())
132
+ ScrollList({ items, children: Text({}, 'Row') })
133
+ Tabs({ tabs, children: Text({}, 'Wrong') })`,rightExample:`Page({ title: 'Home', children: Content() })
134
+ ScrollList({ items, children: (item) => Row({ item }) })
135
+ Tabs({ tabs: [{ key: 'home', label: 'Home', content: Content() }] })`},{code:"arrow-key-empty-input",title:"Arrow Keys Have Empty input String",anchor:"arrow-key-empty-input",summary:"Arrow keys pass an empty string as `input` in useInput. Use the `key` object or prefer useHotkeys.",whyItBreaks:['useInput(input, key) receives input="" for arrow keys, so string checks like input === "ArrowUp" never match.',"Checking input length or treating input as the key name silently does nothing on arrow presses.",'useHotkeys("up", fn) is the simpler and correct alternative for arrow key handling.'],wrongExample:`useInput((input, key) => {
136
+ if (input === 'ArrowUp') moveUp(); // never fires
137
+ if (input === 'ArrowDown') moveDown(); // never fires
138
+ });`,rightExample:`// Option 1: useInput with key object
139
+ useInput((input, key) => {
140
+ if (key.upArrow) moveUp();
141
+ if (key.downArrow) moveDown();
142
+ });
143
+
144
+ // Option 2: useHotkeys (preferred)
145
+ useHotkeys('up', () => moveUp());
146
+ useHotkeys('down', () => moveDown());`},{code:"hooks-called-conditionally",title:"Hooks Called Conditionally",anchor:"hooks-called-conditionally",summary:"Hooks must always be called in the same order on every render. Do not put hooks inside if/else, loops, or after early returns.",whyItBreaks:["Hooks use a global index counter to persist state between renders.","If a hook is skipped (inside an if branch), all subsequent hooks read the wrong slot.","This causes state corruption: useState returns the wrong value, useEffect runs the wrong callback."],wrongExample:`function App() {
147
+ const [show, setShow] = useState(true);
148
+ if (show()) {
149
+ const [name, setName] = useState('Alice'); // WRONG: conditional hook!
150
+ }
151
+ useHotkeys('q', () => exit());
152
+ }`,rightExample:`function App() {
153
+ const [show, setShow] = useState(true);
154
+ const [name, setName] = useState('Alice'); // Always called
155
+ useHotkeys('q', () => exit());
156
+ // Use the value conditionally, not the hook:
157
+ return show() ? Text({}, name()) : Text({}, 'Hidden');
158
+ }`},{code:"hooks-outside-component",title:"Hooks Called Outside Component",anchor:"hooks-outside-component",summary:"Hooks like useState, useMemo, useComputed must be called inside a component function, not at module scope or in event handlers.",whyItBreaks:["Hooks depend on the render cycle to persist state via hook index.","Outside a render cycle there is no hook state array \u2014 data is lost or corrupts other hooks.","Use createSignal() at module scope for global state, not useState()."],wrongExample:`// At module scope \u2014 no render context!
159
+ const [count, setCount] = useState(0); // WRONG
160
+
161
+ function App() {
162
+ return Text({}, \`Count: \${count()}\`);
163
+ }`,rightExample:`// Module scope: use createSignal
164
+ const [count, setCount] = createSignal(0);
165
+
166
+ // Or inside component: use useState
167
+ function App() {
168
+ const [count, setCount] = useState(0);
169
+ return Text({}, \`Count: \${count()}\`);
170
+ }`},{code:"missing-effect-cleanup",title:"Missing Effect Cleanup",anchor:"missing-effect-cleanup",summary:"Effects that create timers, subscriptions, or event listeners must clean them up to prevent memory leaks.",whyItBreaks:["Effects re-run when signal dependencies change. Without cleanup, each re-run adds another timer/listener.","After many signal changes you end up with hundreds of timers running simultaneously.","Use return () => cleanup or onCleanup(() => cleanup) inside the effect."],wrongExample:`useEffect(() => {
171
+ const timer = setInterval(tick, 1000);
172
+ // WRONG: timer never cleared!
173
+ });`,rightExample:`// Option 1: return cleanup
174
+ useEffect(() => {
175
+ const timer = setInterval(tick, 1000);
176
+ return () => clearInterval(timer);
177
+ });
178
+
179
+ // Option 2: onCleanup (can call multiple times)
180
+ useEffect(() => {
181
+ const timer = setInterval(tick, 1000);
182
+ onCleanup(() => clearInterval(timer));
183
+ const socket = connect(url());
184
+ onCleanup(() => socket.close());
185
+ });`},{code:"nested-hooks-in-computed",title:"Nested Hooks Inside Computed/Memo",anchor:"nested-hooks-in-computed",summary:"Do not call hooks (useState, useMemo, ComputedText, etc.) inside a Computed or Memo callback. When the wrapper caches, inner hooks are skipped, changing the hook count.",whyItBreaks:["Computed and Memo skip their callback when the cached result is still valid.","If hooks are inside the skipped callback, those hooks don't run this render.","The hook count changes between renders, corrupting state for all subsequent hooks."],wrongExample:`Computed(() => {
186
+ // WRONG: ComputedText is a hook \u2014 skipped when Computed caches!
187
+ return Box({},
188
+ ComputedText(() => \`Score: \${score()}\`),
189
+ );
190
+ })`,rightExample:"// Keep hooks at the top level of the component\nComputedText(() => `Score: ${score()}`),\nComputed(() => {\n // Only use plain VNode constructors inside Computed\n return Box({}, Text({}, `Lives: ${lives()}`));\n})"}];function RI(e){let t=wI.find(r=>r.code===e);if(!t)throw new Error(`Unknown common mistake: ${e}`);return t}function _I(e){return`docs/resources/common-mistakes.md#${RI(e).anchor}`}function bw(e){return`See ${_I(e)} or tuiuiu://guide/common-mistakes.`}var yw=new Set,Rw=Yt.normalize(ww(import.meta.url)),xI=Yt.dirname(Yt.dirname(Rw)),EI=Yt.dirname(xI),cl=0;function _w(){return process.env.NODE_ENV!=="production"}function kw(e){return e.startsWith("file://")?Yt.normalize(ww(e)):Yt.normalize(e)}function vI(e){let t=Yt.normalize(e);return t.startsWith(EI)?t.includes(`${Yt.sep}src${Yt.sep}`)||t.includes(`${Yt.sep}dist${Yt.sep}`):!1}function SI(e){let t=Yt.relative(process.cwd(),e.filePath),r=t&&!t.startsWith("..")?t:e.filePath;return e.line===void 0?r:`${r}:${e.line}`}function TI(e,t=[]){if(!e)return[];let r=new Set([Rw,...t.map(kw)]),n=e.split(`
191
+ `).slice(1),o=[];for(let s of n){let i=s.trim(),a=i.match(/\((.+):(\d+):(\d+)\)$/)??i.match(/(?:^|\s)at (.+):(\d+):(\d+)$/);if(!a)continue;let l=kw(a[1]);r.has(l)||o.push({filePath:l,line:Number.parseInt(a[2],10),column:Number.parseInt(a[3],10)})}return o}function PI(e,t){!_w()||yw.has(e)||(yw.add(e),console.warn(`[tuiuiu] ${t}`))}function ci(e){cl++;try{return e()}finally{cl=Math.max(0,cl-1)}}function xw(e,t){if(!_w()||cl>0||!Dk()||Fk()!=="component")return;let r=TI(e,[t])[0];if(!r||vI(r.filePath))return;let n=SI(r);PI(`create-signal-in-render:${n}`,`createSignal() was called during component render at ${n}. This recreates state every render. Move it to module scope or use useState(). ${bw("signals-inside-component-render")}`)}var bn=null,pi=new Set,ui=!1,ip=class{_value;_subs=null;constructor(t){this._value=t}get value(){return bn&&bn._trackDep(this),this._value}set value(t){Object.is(this._value,t)||(this._value=t,this._notify())}update(t){this.value=t(this._value)}peek(){return this._value}_addSub(t){if(this._subs===null)this._subs=t;else if(this._subs instanceof yn){if(this._subs===t)return;this._subs=new Set([this._subs,t])}else this._subs.add(t)}_notify(){if(this._subs===null)return;if(this._subs instanceof yn){let r=this._subs;ui?pi.add(r):r.notify();return}let t=[...this._subs];for(let r of t)ui?pi.add(r):r.notify()}unsubscribe(t){if(this._subs!==null){if(this._subs instanceof yn){this._subs===t&&(this._subs=null);return}this._subs.delete(t),this._subs.size===1?this._subs=this._subs.values().next().value:this._subs.size===0&&(this._subs=null)}}},sp=null;var ap=!1,ul=new Set;function AI(e){ul.add(e),ap||(ap=!0,queueMicrotask(CI))}function CI(){ap=!1;let e=[...ul];ul.clear(),Ew(e,t=>t.run())}function Ew(e,t){let r=[];for(let n of e)try{t(n)}catch(o){r.push(o)}if(r.length===1)throw r[0];if(r.length>1)throw new AggregateError(r,"Multiple reactive effects failed")}var yn=class{fn;options;dependencies=new Set;_nextDeps=null;_cleanups=[];_returnCleanup;running=!1;disposed=!1;scheduled=!1;constructor(t,r={}){this.fn=t,this.options=r,this.run()}_trackDep(t){this._nextDeps&&this._nextDeps.add(t)}notify(){if(this.disposed)return;let t=this.options.scheduler;if(t){if(this.scheduled)return;this.scheduled=!0;try{t(()=>{this.run()})}catch(r){throw this.scheduled=!1,r}return}this.options.autoBatch?AI(this):this.run()}run(){if(this.scheduled=!1,!(this.running||this.disposed)){this.running=!0;try{this._runCleanups(),this._nextDeps=new Set;let t=sp;sp=this._cleanups;let r=bn;bn=this;try{let s=this.fn();this._returnCleanup=typeof s=="function"?s:void 0}catch(s){throw this._nextDeps=null,s}finally{bn=r,sp=t}let n=this.dependencies,o=this._nextDeps;if(this._nextDeps=null,!this._samesDeps(n,o)){for(let s of n)o.has(s)||s.unsubscribe(this);for(let s of o)n.has(s)||s._addSub(this);this.dependencies=o}}finally{this.running=!1}}}_samesDeps(t,r){if(t.size!==r.size)return!1;for(let n of t)if(!r.has(n))return!1;return!0}_runCleanups(){let t=[];this._returnCleanup&&(t.push(this._returnCleanup),this._returnCleanup=void 0),t.push(...this._cleanups.splice(0));let r=[];for(let n of t)try{n()}catch(o){r.push(o)}if(r.length===1)throw r[0];if(r.length>1)throw new AggregateError(r,"Multiple reactive cleanups failed")}dispose(){if(this.disposed)return;this.disposed=!0,ul.delete(this),pi.delete(this);let t;try{this._runCleanups()}catch(r){t=r}finally{for(let r of this.dependencies)r.unsubscribe(this);this.dependencies.clear()}if(t!==void 0)throw t}};function cr(e){xw(new Error().stack,import.meta.url);let t=new ip(e);return[()=>t.value,o=>{typeof o=="function"?t.update(o):t.value=o}]}function vw(e,t={}){let r=new yn(e,t);return()=>r.dispose()}function Bt(e){let t=ui;ui=!0;try{e()}finally{if(ui=t,!t){let r=[...pi];pi.clear(),Ew(r,n=>n.notify())}}}function Qo(e){let t=bn;bn=null;try{return e()}finally{bn=t}}var OI=Symbol("tuiuiu.terminal-focus-state");function DI(){let[e,t]=cr(!0);return{read:e,write:t,listeners:new Set}}function lp(e){return De(OI,DI,e)}function ur(e){return lp(e).read()}function dp(e,t){let r=lp(t);if(r.read()!==e){r.write(e);for(let n of r.listeners)n(e)}}function pl(e,t){let r=lp(t);return r.listeners.add(e),()=>{r.listeners.delete(e)}}function cp(e){dp(!0,e)}var Jn={targetFps:60,reducedFps:30,unfocusedFps:10,frameBudgetMs:16.67,recoveryFrames:5,elevatedFrameBudgetFactor:1,criticalFrameBudgetFactor:2},Tw=Symbol("tuiuiu.motion-runtime-state");function Pw(e){let t=e.id===0?null:Ft(Tw,()=>Pw(Cr())),r={config:{...t?.config??Jn},qualityTier:"full",presentationPressure:"normal",onBudgetStreak:0,pressureOnBudgetStreak:0,schedulerTimer:null,cleanupFocusSubscription:null,nextFrameRequestId:1,nextIntervalId:1,lastPresentationAt:0,frameCallbacks:new Map,intervalSubscriptions:new Map,prefersReducedMotion:t?.prefersReducedMotion??!1,scope:e,[Ar](){Cw(r),r.cleanupFocusSubscription?.(),r.cleanupFocusSubscription=null,r.frameCallbacks.clear(),r.intervalSubscriptions.clear()}};return r}function pp(){let e=Ne();return De(Tw,()=>Pw(e),e)}function fl(e,t){return Number.isFinite(e)?Math.max(1,Math.round(e)):t}function up(e,t){return Number.isFinite(e)?Math.max(.1,e):t}function FI(e){switch(e.presentationPressure){case"elevated":return e.config.frameBudgetMs*e.config.elevatedFrameBudgetFactor;case"critical":return e.config.frameBudgetMs*e.config.criticalFrameBudgetFactor;case"normal":default:return 0}}function Aw(e){return e.frameCallbacks.size>0||e.intervalSubscriptions.size>0}function II(e){e.cleanupFocusSubscription||(e.cleanupFocusSubscription=pl(Vr(e.scope,t=>{if(t){let r=Date.now();for(let n of e.intervalSubscriptions.values())n.pauseWhenUnfocused&&(n.lastRunAt=r)}gl(e)})))}function fp(e,t=ur(e.scope)){if(!t)return 1e3/e.config.unfocusedFps;switch(e.qualityTier){case"reduced":return 1e3/e.config.reducedFps;case"skip":return 0;case"full":default:return 1e3/e.config.targetFps}}function Sw(e,t,r,n){return{now:t,deltaMs:n,tier:e.qualityTier,focused:ur(e.scope),budgetMs:e.config.frameBudgetMs,targetFrameMs:r}}function MI(e,t){let r=ur(e.scope),n=Number.POSITIVE_INFINITY;if(e.frameCallbacks.size>0){let o=fp(e,r),s=e.lastPresentationAt===0?0:t-e.lastPresentationAt;n=Math.min(n,Math.max(0,o-s))}for(let o of e.intervalSubscriptions.values()){if(!r&&o.pauseWhenUnfocused)continue;let s=t-o.lastRunAt;n=Math.min(n,Math.max(0,o.intervalMs-s))}return Number.isFinite(n)?Math.ceil(n):null}function Cw(e){e.schedulerTimer&&(clearTimeout(e.schedulerTimer),e.schedulerTimer=null)}function Ow(e){if(e.schedulerTimer||!Aw(e))return;II(e);let t=MI(e,Date.now());t!==null&&(e.schedulerTimer=setTimeout(Vr(e.scope,()=>LI(e)),t))}function LI(e){if(e.schedulerTimer=null,!Aw(e))return;let t=Date.now(),r=ur(e.scope),n=fp(e,r),o=e.lastPresentationAt===0?n:t-e.lastPresentationAt;if(e.frameCallbacks.size>0&&o>=n){e.lastPresentationAt=t;let s=[...e.frameCallbacks.values()];e.frameCallbacks.clear();let i=Sw(e,t,n,n===0?0:Math.max(n,o));for(let a of s)a(i)}for(let s of e.intervalSubscriptions.values()){if(!r&&s.pauseWhenUnfocused)continue;let i=t-s.lastRunAt;i<s.intervalMs||(s.lastRunAt=t,s.callback(Sw(e,t,n,Math.max(s.intervalMs,i))))}Ow(e)}function gl(e){Cw(e),Ow(e)}function Dw(e){let t=pp(),r=fl(e.targetFps??t.config.targetFps,Jn.targetFps),n=fl(e.reducedFps??t.config.reducedFps,Math.max(1,Math.floor(r/2)));t.config={targetFps:r,reducedFps:Math.min(r,n),unfocusedFps:fl(e.unfocusedFps??t.config.unfocusedFps,Jn.unfocusedFps),frameBudgetMs:up(e.frameBudgetMs??t.config.frameBudgetMs,Jn.frameBudgetMs),recoveryFrames:fl(e.recoveryFrames??t.config.recoveryFrames,Jn.recoveryFrames),elevatedFrameBudgetFactor:up(e.elevatedFrameBudgetFactor??t.config.elevatedFrameBudgetFactor,Jn.elevatedFrameBudgetFactor),criticalFrameBudgetFactor:up(e.criticalFrameBudgetFactor??t.config.criticalFrameBudgetFactor,Jn.criticalFrameBudgetFactor)},gl(t)}function hl(){let e=pp();return{config:{...e.config},qualityTier:e.qualityTier,presentationPressure:e.presentationPressure,focused:ur(e.scope),targetFrameMs:fp(e),recommendedPresentationIntervalMs:FI(e),onBudgetStreak:e.onBudgetStreak,pressureOnBudgetStreak:e.pressureOnBudgetStreak}}function jI(e){if(e.pressureOnBudgetStreak=0,e.presentationPressure==="normal"){e.presentationPressure="elevated";return}e.presentationPressure==="elevated"&&(e.presentationPressure="critical")}function BI(e){if(e.presentationPressure==="normal"){e.pressureOnBudgetStreak=0;return}e.pressureOnBudgetStreak++,!(e.pressureOnBudgetStreak<e.config.recoveryFrames)&&(e.presentationPressure==="critical"?e.presentationPressure="elevated":e.presentationPressure="normal",e.pressureOnBudgetStreak=0)}function Fw(e){let t=pp();if(!Number.isFinite(e.totalMs)||e.totalMs<0)return t.qualityTier;let r=e.overBudget??e.totalMs>t.config.frameBudgetMs,n=(e.phaseOverrunCount??0)>0;return r?(t.onBudgetStreak=0,t.qualityTier==="full"?t.qualityTier="reduced":t.qualityTier==="reduced"&&(t.qualityTier="skip"),gl(t)):(t.onBudgetStreak++,t.onBudgetStreak>=t.config.recoveryFrames&&(t.qualityTier==="skip"?(t.qualityTier="reduced",t.onBudgetStreak=0):t.qualityTier==="reduced"&&(t.qualityTier="full",t.onBudgetStreak=0))),r||n?jI(t):BI(t),gl(t),t.qualityTier}function kn(e){return Number.isFinite(e)?Math.max(0,Math.min(1,e)):0}function Iw(e){return!!(e&&typeof e=="object"&&"key"in e&&typeof e.key=="string"&&Array.isArray(e.transforms))}function Mw(e){return e?Dt({key:e.key,transforms:e.transforms}):null}function fi(e){return e.type==="text"?{...e,style:{...e.style},compositorKeys:e.compositorKeys?[...e.compositorKeys]:void 0}:{...e,compositorKeys:e.compositorKeys?[...e.compositorKeys]:void 0}}function $I(e,t){let r=fi(e);return r.x+=Math.round(t.offsetX),r.y+=Math.round(t.offsetY),r}function GI(e,t){let r=kn(t.opacity);if(r<=0)return null;if(e.type!=="text"||r>=.67)return e;let n=fi(e);return n.style={...n.style,dim:!0,bold:r>=.4?n.style.bold:!1},n}function NI(e,t){if(!e)return t;let r=Math.max(e.x,t.x),n=Math.max(e.y,t.y),o=Math.min(e.x+e.width,t.x+t.width),s=Math.min(e.y+e.height,t.y+t.height);return{x:r,y:n,width:Math.max(0,o-r),height:Math.max(0,s-n)}}function WI(e,t,r){let n=kn(t.scale);if(n<=0)return null;if(n>=1)return e;let o=Math.max(0,Math.round(r.width*n)),s=Math.max(0,Math.round(r.height*n));if(o===0||s===0)return null;let i={x:r.x+Math.floor((r.width-o)/2),y:r.y+Math.floor((r.height-s)/2),width:o,height:s},a=fi(e);return a.clip=NI(a.clip,i),a.clip.width>0&&a.clip.height>0?a:null}function HI(e,t,r,n){let o=e.x;return(e.type==="text"?e.x+Math.max(1,e.maxWidth):e.x+Math.max(1,e.width))>r&&o<n&&e.y>=t.y&&e.y<t.y+t.height}function UI(e,t,r){if(e.type!=="text")return e;let n=kn(t.span??.35),o=r.x+Math.round((r.width+Math.max(1,r.width*n))*kn(t.phase))-Math.round(r.width*n),s=o+Math.max(1,Math.round(r.width*n));if(!HI(e,r,o,s))return e;let i=fi(e);return i.style={...i.style,bold:!0,inverse:!0},i}function qI(e,t,r){let n=kn(t.progress);if(n<=0)return null;if(n>=1)return e;let o=fi(e);if(t.direction==="left"||t.direction==="right"){let p=Math.max(0,Math.round(r.width*n));if(p<=0)return null;let g=t.direction==="left"?r.x:r.x+r.width-p,f=g+p;if(o.type==="text"){let $=o.x,D=o.x+Math.max(1,o.maxWidth),L=Math.max($,g),W=Math.min(D,f);if(W<=L)return null;let K=Math.max(0,L-$),H=Math.max(K,W-$);return o.text=No(o.text,K,H),o.x=L,o.maxWidth=Math.max(0,W-L),o.maxWidth>0&&o.text.length>0?o:null}let k=o.x,b=o.x+Math.max(1,o.width),v=Math.max(k,g),T=Math.min(b,f);return T<=v?null:(o.x=v,o.width=Math.max(0,T-v),o.width>0?o:null)}let s=Math.max(0,Math.round(r.height*n));if(s<=0)return null;let i=t.direction==="up"?r.y:r.y+r.height-s,a=i+s;if(o.type==="text")return o.y>=i&&o.y<a?o:null;let l=o.y,d=o.y+Math.max(1,o.height),c=Math.max(l,i),u=Math.min(d,a);return u<=c?null:(o.y=c,o.height=Math.max(0,u-c),o.height>0?o:null)}function KI(e,t,r){let n=hl().qualityTier,o=e;for(let s of t){if(!o)return null;if(n==="skip"){if(s.kind==="fade"&&kn(s.opacity)<=0||s.kind==="scale"&&kn(s.scale)<=0||s.kind==="reveal"&&kn(s.progress)<=0)return null;continue}if(!(n==="reduced"&&s.kind==="shimmer"))switch(s.kind){case"slide":case"spring":o=$I(o,s);break;case"fade":o=GI(o,s);break;case"scale":o=WI(o,s,r);break;case"shimmer":o=UI(o,s,r);break;case"reveal":o=qI(o,s,r);break}}return o}function Lw(e,t){if(e.length===0||t.size===0)return[...e];let r=[];for(let n of e){let o=n.compositorKeys;if(!o||o.length===0){r.push(n);continue}let s=n;for(let i of o){if(!s)break;let a=t.get(i);!a||a.transforms.length===0||(s=KI(s,a.transforms,a.bounds))}s&&r.push(s)}return r}var VI=1,zI=Symbol("tuiuiu.frame-runtime-state");function hp(e){return De(zI,()=>({committedFrameSnapshot:null}),e)}var JI=new Set(["__terminalImage","__compositor"]),YI=new Set(["id","backgroundColor","__fillChar","borderStyle","borderColor","borderTopColor","borderBottomColor","borderLeftColor","borderRightColor","borderDim","borderDimTop","borderDimBottom","borderDimLeft","borderDimRight","borderTop","borderBottom","borderLeft","borderRight","borderText","borderTextAlign","borderTextColor","borderTextBold"]),QI=new Set(["id","children","__divider","__splitDivider","color","backgroundColor","bold","dim","italic","underline","strikethrough","inverse","wrap"]),gp={eagerHitTargets:!0,eagerQueries:!0,eagerWarnings:!0},ml=new WeakMap,Rn=new Map,$w=4096;function wn(){return typeof performance<"u"?performance.now():Date.now()}function XI(e){return{width:e.width,height:e.height,pointer:e.pointer?{...e.pointer}:void 0,scrollDelta:e.scrollDelta?{...e.scrollDelta}:void 0,deltaTimeMs:e.deltaTimeMs}}function ZI(e){return{eagerHitTargets:e?.eagerHitTargets??gp.eagerHitTargets,eagerQueries:e?.eagerQueries??gp.eagerQueries,eagerWarnings:e?.eagerWarnings??gp.eagerWarnings}}function eM(e){let t=new Map,r=(n,o=0,s=0)=>{let{node:i,x:a,y:l,width:d,height:c,children:u}=n,p=o+a,g=s+l,f=i.props,k=typeof f.id=="string"?f.id:void 0;if(k&&k.length>0){let L=t.get(k)??[];L.push({id:k,nodeType:i.type,bounds:{x:p,y:g,width:d,height:c}}),t.set(k,L)}let b=f.paddingTop??f.paddingY??f.padding??0,v=f.paddingLeft??f.paddingX??f.padding??0,T=f.borderStyle&&f.borderStyle!=="none"?1:0,$=p+v+T,D=g+b+T;for(let L of u)r(L,$,D)};return r(e),t}function tM(e){return!!(e&&typeof e=="object"&&typeof e.getViewport=="function"&&typeof e.getContent=="function"&&typeof e.getOffset=="function"&&typeof e.getMaxOffset=="function"&&typeof e.scrollTo=="function"&&typeof e.scrollBy=="function"&&typeof e.scrollToStart=="function"&&typeof e.scrollToEnd=="function")}function rM(e){let t=new Map,r=(n,o=0,s=0)=>{let{node:i,x:a,y:l,width:d,height:c,children:u}=n,p=o+a,g=s+l,f=i.props,k=typeof f.id=="string"?f.id:void 0;if(k&&k.length>0&&tM(f.__scrollQuery)){let L=t.get(k)??[];L.push({id:k,nodeType:i.type,bounds:{x:p,y:g,width:d,height:c},metadata:f.__scrollQuery}),t.set(k,L)}let b=f.paddingTop??f.paddingY??f.padding??0,v=f.paddingLeft??f.paddingX??f.padding??0,T=f.borderStyle&&f.borderStyle!=="none"?1:0,$=p+v+T,D=g+b+T;for(let L of u)r(L,$,D)};return r(e),t}function nM(e){let t=[];for(let[r,n]of e)n.length>1&&t.push({code:"duplicate-id",severity:"warning",id:r,message:`Duplicate explicit id "${r}" was found ${n.length} times in the committed frame.`});return t}function Xo(e,t,r){e.some(o=>o.code===r.code&&o.id===r.id)||(e.push(r),t.structural.warningCount=e.length)}function jw(e,t){let r=e().get(t)??[];if(r.length===0)return{id:t,status:"missing",found:!1,ambiguous:!1};if(r.length>1)return{id:t,status:"ambiguous",found:!1,ambiguous:!0};let[n]=r;return{id:t,status:"found",found:!0,ambiguous:!1,bounds:n.bounds,nodeType:n.nodeType}}function oM(e,t){let r=e().get(t)??[];if(r.length===0)return{id:t,status:"missing",found:!1,ambiguous:!1};if(r.length>1)return{id:t,status:"ambiguous",found:!1,ambiguous:!0};let[n]=r,o=n.metadata.getViewport(),s=n.metadata.getContent(),i=n.metadata.getOffset(),a=n.metadata.getMaxOffset();return{id:t,status:"found",found:!0,ambiguous:!1,nodeType:n.nodeType,viewport:{width:o.width??n.bounds.width,height:o.height??n.bounds.height},content:{width:s.width??o.width??n.bounds.width,height:s.height??o.height??n.bounds.height},offset:i,maxOffset:a,controls:{scrollTo:l=>n.metadata.scrollTo(l),scrollBy:l=>n.metadata.scrollBy(l),scrollToStart:()=>n.metadata.scrollToStart(),scrollToEnd:()=>n.metadata.scrollToEnd()}}}function sM(e,t,r,n,o){return{getElement:s=>{let i=jw(e,s);return i.status==="missing"?Xo(n,o,{code:"query-missing",severity:"warning",id:s,message:`Element query for explicit id "${s}" did not match any committed element in the current frame.`}):i.status==="ambiguous"&&Xo(n,o,{code:"query-ambiguous",severity:"warning",id:s,message:`Element query for explicit id "${s}" matched multiple committed elements in the current frame.`}),i},pointerOver:s=>{if(!r.pointer)return!1;let i=jw(e,s);return!i.found||!i.bounds?(i.status==="missing"?Xo(n,o,{code:"query-missing",severity:"warning",id:s,message:`Pointer-over query for explicit id "${s}" did not match any committed element in the current frame.`}):i.status==="ambiguous"&&Xo(n,o,{code:"query-ambiguous",severity:"warning",id:s,message:`Pointer-over query for explicit id "${s}" matched multiple committed elements in the current frame.`}),!1):r.pointer.x>=i.bounds.x&&r.pointer.x<i.bounds.x+i.bounds.width&&r.pointer.y>=i.bounds.y&&r.pointer.y<i.bounds.y+i.bounds.height},getScrollContainer:s=>{let i=oM(t,s);return i.status==="missing"?Xo(n,o,{code:"scroll-target-missing",severity:"warning",id:s,message:`Scroll-container query for explicit id "${s}" did not match any committed scroll target in the current frame.`}):i.status==="ambiguous"&&Xo(n,o,{code:"query-ambiguous",severity:"warning",id:s,message:`Scroll-container query for explicit id "${s}" matched multiple committed scroll targets in the current frame.`}),i}}}function iM(e,t,r,n=[],o){let s=n.length>0?Dt(n):"",i=o?`${o.x},${o.y},${o.width},${o.height}`:"";return`${e}:${t}:${r??""}:${s}:${i}`}function aM(e,t){if(!e)return t;let r=Math.max(e.x,t.x),n=Math.max(e.y,t.y),o=Math.min(e.x+e.width,t.x+t.width),s=Math.min(e.y+e.height,t.y+t.height);return{x:r,y:n,width:Math.max(0,o-r),height:Math.max(0,s-n)}}function lM(e,t){let r=e.type==="text"?QI:YI,n=e.props,o={};if(n)for(let s of r)s in n&&(o[s]=n[s]);return Dt({type:e.type,props:o,image:t?{protocol:t.protocol,hash:t.source.hash,width:t.width,height:t.height,instanceKey:t.instanceKey,kittyImageId:t.kittyImageId,fit:t.fit,threshold:t.threshold,dither:t.dither,preserveAspectRatio:t.preserveAspectRatio}:null},{ignoreKeys:JI})}function dM(e,t,r,n,o,s){return Dt([t,r,Mw(n)??"",o.length,...o,e.x,e.y,e.width,e.height,s.length,...s])}function cM(e,t,r){if(!Ja(e.node))return;let n=ml.get(e);if(!n)return;if(n.cacheKey!==t){mn(e.node,Pe.LAYOUT);return}let o=r();if(n.fingerprint!==o){mn(e.node,Pe.CONTENT|Pe.STYLE);return}if(n.childRefs.length!==e.node.children.length){mn(e.node,Pe.CHILDREN);return}for(let s=0;s<n.childRefs.length;s++)if(n.childRefs[s]!==e.node.children[s]){mn(e.node,Pe.CHILDREN);return}return n}function Bw(e,t,r,n,o,s){let i={cacheKey:t,fingerprint:r,childRefs:[...e.node.children],commands:n,hasCompositor:o,subtreeSignature:s};return ml.set(e,i),i}function uM(e){return e.map((t,r)=>({...t,order:r}))}function Gw(e,t){return t?`${e}|motion:${hl().qualityTier}`:e}function pM(){let e=Math.max(1,Math.ceil($w*.1)),t=Rn.keys();for(let r=0;r<e;r++){let n=t.next();if(n.done)break;Rn.delete(n.value)}}function fM(e){return Rn.get(e)}function gM(e,t,r){let n=Rn.get(e),o={commands:t,hasCompositor:r,materialized:n?.materialized,materializedSignature:n?.materializedSignature};return!Rn.has(e)&&Rn.size>=$w&&pM(),Rn.set(e,o),o}function hM(e,t,r){let n=Rn.get(e);n&&(n.materialized=t,n.materializedSignature=r)}function mM(e,t){for(let r of t)e.push(r)}function bM(e){return"desiredColumns"in e&&"desiredRows"in e&&"hash"in e}function yM(e){return!!(e&&typeof e=="object"&&"source"in e&&e.source&&typeof e.source=="object")}function Nw(e){let t=e.props;return Iw(t?.__compositor)?t.__compositor:null}function Ww(e,t=new Map){let r=Nw(e.node);r&&t.set(r.key,{...r,bounds:{x:e.x,y:e.y,width:e.width,height:e.height}});for(let n of e.children)Ww(n,t);return t}function kM(e,t,r,n,o,s){if(!yM(s.__terminalImage))return null;let i=s.paddingTop??s.paddingY??s.padding??0,a=s.paddingBottom??s.paddingY??s.padding??0,l=s.paddingLeft??s.paddingX??s.padding??0,d=s.paddingRight??s.paddingX??s.padding??0,c=s.borderStyle&&s.borderStyle!=="none"?1:0,u=t+l+c,p=r+i+c,g=Math.max(0,n-l-d-c*2),f=Math.max(0,o-i-a-c*2);if(g<=0||f<=0)return null;let k=s.__terminalImage,b=zo(),v=bM(k.source)?k.source:il(k.source,{cellSize:b.cellSize}),T=k.options?.protocol??b.protocol,$=Vo(T),D=di(v,{...k.options,width:k.options?.width??g,height:k.options?.height??f}),L=Math.max(0,Math.min(g,D.renderColumns)),W=Math.max(0,Math.min(f,D.renderRows));return L<=0||W<=0?null:{type:"terminal-image",id:typeof s.id=="string"?s.id:void 0,nodeType:e.node.type,x:u,y:p,width:L,height:W,instanceKey:k.protocolState?.instanceKey,kittyImageId:k.protocolState?.kittyImageId,source:v,fit:D.fit,threshold:k.options?.threshold,dither:k.options?.dither,preserveAspectRatio:k.options?.preserveAspectRatio,protocol:$,cellRender:iw($),protocolState:k.protocolState}}function wM(e){return e.flatMap(t=>t.type!=="terminal-image"||t.cellRender||t.clip&&(t.x<t.clip.x||t.y<t.clip.y||t.x+t.width>t.clip.x+t.clip.width||t.y+t.height>t.clip.y+t.clip.height)?[]:[{type:"terminal-image",id:t.id,protocol:t.protocol,x:t.x,y:t.y,width:t.width,height:t.height}])}function Hw(e,t=0,r=0,n,o=[],s){let{node:i,x:a,y:l,width:d,height:c,children:u}=e,p=t+a,g=r+l,f=i.props,k=Nw(i),b=k?[...o,k.key]:[...o],v=k!==null,T=kM(e,p,g,d,c,f),$=T?`:${T.protocol}:${T.source.hash}:${T.width}x${T.height}:${T.fit}:${T.threshold??""}:${T.dither?1:0}:${T.preserveAspectRatio?1:0}`:"",D=iM(t,r,n,b,s)+$,L,W=()=>(L===void 0&&(L=lM(i,T)),L),K=cM(e,D,W);if(K)return Qs("draw"),{commands:K.commands,hasCompositor:K.hasCompositor,subtreeSignature:K.subtreeSignature};let H=W(),I=typeof f.id=="string"?f.id:void 0,N=typeof f.backgroundColor=="string"?f.backgroundColor:void 0,V=[],ge=[],fe=f.paddingTop??f.paddingY??f.padding??0,de=f.paddingLeft??f.paddingX??f.padding??0,te=f.borderStyle&&f.borderStyle!=="none"?1:0,me=p+de+te,Oe=typeof f.__scrollOffsetY=="number"&&Number.isFinite(f.__scrollOffsetY)?Math.max(0,Math.floor(f.__scrollOffsetY)):0,ve=g+fe+te-Oe,ke=N??n,J=f.overflow==="hidden"||f.overflowX==="hidden",ie=f.overflow==="hidden"||f.overflowY==="hidden",Re={x:J?p:s?.x??Number.MIN_SAFE_INTEGER,y:ie?g:s?.y??Number.MIN_SAFE_INTEGER,width:J?d:s?.width??Number.MAX_SAFE_INTEGER*2,height:ie?c:s?.height??Number.MAX_SAFE_INTEGER*2},Ae=J||ie?aM(s,Re):s;for(let oe of u){let _e=Hw(oe,me,ve,ke,b,Ae);V.push(_e),v||=_e.hasCompositor,ge.push(_e.subtreeSignature)}let Ee=dM(e,D,H,k,b,ge),we=fM(Ee);if(we){Qs("draw");let oe=Bw(e,D,H,we.commands,we.hasCompositor,Ee),_e=Gw(Ee,we.hasCompositor);return we.materialized&&we.materializedSignature===_e&&(oe.materialized=we.materialized,oe.materializedSignature=_e),{commands:oe.commands,hasCompositor:oe.hasCompositor,subtreeSignature:Ee}}let Se=[];if(i.type==="box"&&(N||f.__fillChar||f.borderStyle&&f.borderStyle!=="none")){let _e=f.borderTop!==void 0||f.borderBottom!==void 0||f.borderLeft!==void 0||f.borderRight!==void 0?{top:f.borderTop??!0,bottom:f.borderBottom??!0,left:f.borderLeft??!0,right:f.borderRight??!0}:void 0;Se.push({type:"box",id:I,nodeType:i.type,compositorKeys:b.length>0?[...b]:void 0,x:p,y:g,width:d,height:c,backgroundColor:N,fillChar:typeof f.__fillChar=="string"?f.__fillChar:void 0,borderStyle:f.borderStyle,borderColor:typeof f.borderColor=="string"?f.borderColor:void 0,borderSides:_e,borderText:typeof f.borderText=="string"?f.borderText:void 0,borderTextAlign:f.borderTextAlign,borderTextColor:typeof f.borderTextColor=="string"?f.borderTextColor:void 0,borderTextBold:f.borderTextBold===!0,clip:s})}else if(i.type==="text"){let oe=String(f.children??""),_e=Math.max(1,xe(oe)),Fe=f.__splitDivider?[f.__splitDivider.top,...Array.from({length:Math.max(0,Math.floor(c))},()=>oe),f.__splitDivider.bottom].join(`
192
+ `):f.__divider==="horizontal"?oe.repeat(Math.ceil(d/_e)):f.__divider==="vertical"?Array.from({length:Math.max(0,Math.floor(c))},()=>oe).join(`
193
+ `):oe;Se.push({type:"text",id:I,nodeType:i.type,compositorKeys:b.length>0?[...b]:void 0,x:p,y:f.__splitDivider?g-1:g,maxWidth:d,text:Fe,style:{color:f.color,backgroundColor:f.backgroundColor,bold:f.bold,dim:f.dim,italic:f.italic,underline:f.underline,strikethrough:f.strikethrough,inverse:f.inverse,wrap:f.wrap},inheritedBackgroundColor:n,clip:s,...f.__prebuiltAnsi?{prebuiltAnsi:!0}:void 0})}T&&Se.push({...T,compositorKeys:b.length>0?[...b]:void 0,clip:s});for(let oe of V)mM(Se,oe.commands);Kn("draw");let ce=Bw(e,D,H,Se,v,Ee);return gM(Ee,ce.commands,v),{commands:ce.commands,hasCompositor:v,subtreeSignature:Ee}}function RM(e){if(e.type==="text"){let s=Math.round(e.x),i=Math.round(e.y),a=Math.max(0,Math.round(e.maxWidth));return s===e.x&&i===e.y&&a===e.maxWidth?e:{...e,x:s,y:i,maxWidth:a}}let t=Math.round(e.x),r=Math.round(e.y),n=Math.max(0,Math.round(e.width)),o=Math.max(0,Math.round(e.height));return t===e.x&&r===e.y&&n===e.width&&o===e.height?e:{...e,x:t,y:r,width:n,height:o}}function _M(e){let t=null;for(let r=0;r<e.length;r++){let n=e[r],o=RM(n);o!==n&&(t||(t=[...e]),t[r]=o)}return t??e}function xM(e){let t=Hw(e),r=ml.get(e),n=Gw(t.subtreeSignature,t.hasCompositor);if(r?.materialized){if(n===r.materializedSignature)return r.materialized;r.materialized=void 0,r.materializedSignature=void 0}let o=uM(t.commands),s=t.hasCompositor?Lw(o,Ww(e)):o,i=_M(s),a=ml.get(e);return a&&(a.materialized=i,a.materializedSignature=n),hM(t.subtreeSignature,i,n),i}function Uw(e,t,r={}){let n=ZI(r),o=XI(t),s=Date.now(),i=wn(),a=wn(),l=Ek(e,o.width,o.height),d=wn()-a,c=wn(),u=xM(l),p=wM(u),g=wn()-c,f={frameStartAt:s,frameEndAt:Date.now(),totalFrameMs:0,phases:{layoutMs:d,drawCommandMs:g},structural:{drawCommandCount:u.length,hitTargetCount:0,warningCount:0,reservedRegionCount:p.length,patchCount:0,dirtyRectCount:0,diffRectCount:0,outputByteCount:0,layoutReuseCount:0,layoutFreshCount:0,drawReuseCount:0,drawFreshCount:0,invalidationEscalationCount:0,absorbedLayoutDirtyCount:0}},k=wk();f.structural.layoutReuseCount=k.layoutReuseCount,f.structural.layoutFreshCount=k.layoutFreshCount,f.structural.drawReuseCount=k.drawReuseCount,f.structural.drawFreshCount=k.drawFreshCount,f.structural.invalidationEscalationCount=k.invalidationEscalationCount,f.structural.absorbedLayoutDirtyCount=k.absorbedLayoutDirtyCount;let b,v,T,$=[],D=!1,L=()=>(b||(b=eM(l)),b),W=()=>(v||(v=rM(l)),v),K=()=>{if(!T){let fe=wn();T=mw(l),f.phases.hitTargetRegistrationMs=wn()-fe,f.structural.hitTargetCount=T.length}return T},H=()=>(D||($.push(...nM(L())),D=!0,f.structural.warningCount=$.length),$);n.eagerQueries&&(L(),W()),n.eagerWarnings&&H(),n.eagerHitTargets&&K();let I=sM(L,W,o,$,f),N=Date.now(),V=wn()-i;return f.frameEndAt=N,f.totalFrameMs=V,{info:{frameId:VI++,committedAt:N,viewport:{width:o.width,height:o.height}},input:o,root:e,layout:l,drawCommands:u,reservedRegions:p,queries:I,metrics:f,get hitTargets(){return K()},get warnings(){return H()}}}function qw(e,t){hp(t).committedFrameSnapshot=e}function Kw(e){return hp(e).committedFrameSnapshot}function Vw(e){hp(e).committedFrameSnapshot=null}function st(e,t,r){e.metrics.phases[t]=r,e.metrics.frameEndAt=Date.now(),e.metrics.totalFrameMs=Math.max(0,e.metrics.frameEndAt-e.metrics.frameStartAt)}function Tt(e,t,r){e.metrics.structural[t]=r}function zw(e,t,r=Date.now()){e.metrics.runtimeStartAt=t,e.metrics.runtimeEndAt=r,e.metrics.runtimeTotalMs=Math.max(0,r-t),e.metrics.frameEndAt=r}var Yw=Symbol("tuiuiu.progressive-runtime-state");function Jw(){return{nerdFontsEnabled:!1,hyperlinksEnabled:!0,progressiveVersion:0,capabilityOverrides:null}}function EM(e){if(e.id===0)return Jw();let t=Ft(Yw,Jw);return{nerdFontsEnabled:t.nerdFontsEnabled,hyperlinksEnabled:t.hyperlinksEnabled,progressiveVersion:t.progressiveVersion,capabilityOverrides:t.capabilityOverrides?{...t.capabilityOverrides}:null}}function mp(){let e=Ne();return De(Yw,()=>EM(e),e)}function Qw(){return mp().nerdFontsEnabled||process.env.NERD_FONT==="1"||process.env.NERD_FONTS==="1"}function Xw(){return mp().capabilityOverrides}function bp(){return mp().progressiveVersion}function vM(e={}){let t=e.env??process.env,r=t.TERM||"",n=t.COLORTERM||"",o=t.TERM_PROGRAM||"",s=t.TERM_PROGRAM_VERSION||"",i=nl(t),a=Qk(t),l=i.knownCaps,d=!!(t.CI||t.CONTINUOUS_INTEGRATION||t.GITHUB_ACTIONS||t.GITLAB_CI||t.CIRCLECI||t.TRAVIS||t.JENKINS_URL||t.BUILDKITE),c=i.name;i.version&&(c=`${i.name} ${i.version}`),i.id==="unknown"&&(c=o||r||"Unknown");let u=!(r==="linux"||r==="dumb"||r.startsWith("vt")||d),p=16;l.trueColor||n==="truecolor"||n==="24bit"?p="truecolor":(r.includes("256color")||o==="iTerm.app"||o==="Hyper"||t.WT_SESSION)&&(p=256),t.FORCE_COLOR==="0"?p=16:t.FORCE_COLOR==="3"&&(p="truecolor");let g=l.mouse||r.includes("xterm")||r.includes("screen")||r.includes("tmux")||r.includes("rxvt")||r.includes("kitty")||r.includes("alacritty")||o==="iTerm.app"||o==="Hyper"||!!t.WT_SESSION,f=p==="truecolor",k=l.italic||r.includes("xterm")||r.includes("kitty")||r.includes("alacritty")||o==="iTerm.app"||o==="Hyper",b=l.strikethrough||k,v=l.hyperlinks||o==="iTerm.app"||r.includes("kitty")||!!t.WT_SESSION||o==="vscode"&&parseInt(s,10)>=1,T=e.stdout??process.stdout,$=T.columns||80,D=T.rows||24,L=Qw(),W={unicode:u,colors:p,mouse:g,trueColor:f,italic:k,strikethrough:b,hyperlinks:v,terminalName:c,isCI:d,columns:$,rows:D,profile:i,synchronizedOutput:l.synchronizedOutput,styledUnderlines:l.styledUnderlines,coloredUnderlines:l.coloredUnderlines,clipboard:l.clipboard,notifications:l.notifications,multiplexer:a,cursorStyleControl:l.cursorStyleControl,windowTitle:l.windowTitle,gpuAccelerated:i.gpuAccelerated,kittyKeyboard:l.kittyKeyboard,focusEvents:l.focusEvents,nerdFonts:L},K=Xw();return K&&Object.assign(W,K),W}var Zw=Symbol("tuiuiu.capability-runtime-state");function eR(e){let t=e.id===0?"auto":Qo(Ft(Zw,()=>eR(Cr())).renderModeSignal),[r,n]=cr(t),o={renderModeSignal:r,setRenderModeSignal:n,cachedCapabilities:null,cachedProgressiveVersion:-1,source:{},resizeHandlers:new Set,resizeListener:null,scope:e,[Ar](){let s=o.source.stdout??process.stdout;o.resizeListener&&s.off("resize",o.resizeListener),o.resizeListener=null,o.resizeHandlers.clear()}};return o}function gi(e){let t=Ne(e);return De(Zw,()=>eR(t),t)}function tR(e){let t=e.source.stdout??process.stdout;return{columns:t.columns||80,rows:t.rows||24}}function SM(e){return vM({env:e.source.env,stdout:e.source.stdout??process.stdout})}function bl(e){return e.cachedCapabilities=SM(e),e.cachedProgressiveVersion=bp(),e.cachedCapabilities}function rR(e){if(e.resizeListener||e.resizeHandlers.size===0)return;let t=e.source.stdout??process.stdout;e.resizeListener=()=>qe(e.scope,()=>{bl(e);let r=tR(e);for(let n of[...e.resizeHandlers])n(r)}),t.on("resize",e.resizeListener)}function nR(e){let t=gi(),r=t.source.stdout??process.stdout;t.resizeListener&&(r.off("resize",t.resizeListener),t.resizeListener=null),t.source={...e},t.cachedCapabilities=null,t.cachedProgressiveVersion=-1,rR(t)}function Ir(){let e=gi(),t=bp();return(!e.cachedCapabilities||e.cachedProgressiveVersion!==t)&&bl(e),e.cachedCapabilities??bl(e)}function oR(){return bl(gi())}function sR(){return tR(gi())}function iR(e){let t=gi();return t.resizeHandlers.add(e),rR(t),()=>{t.resizeHandlers.delete(e),t.resizeHandlers.size===0&&t.resizeListener&&((t.source.stdout??process.stdout).off("resize",t.resizeListener),t.resizeListener=null)}}var aR={black:0,red:1,green:2,yellow:3,blue:4,magenta:5,cyan:6,white:7,gray:8,grey:8,blackBright:8,redBright:9,greenBright:10,yellowBright:11,blueBright:12,magentaBright:13,cyanBright:14,whiteBright:15},TM={single:"4:1",double:"4:2",curly:"4:3",dotted:"4:4",dashed:"4:5"},PM=512,Yn=new Map,lR=4e6;function Mr(){return{char:" ",attrs:{}}}function kp(e,t){if(e===t)return!0;if(e===void 0||t===void 0)return!1;if(typeof e=="string"&&typeof t=="string")return e===t;if(typeof e=="object"&&typeof t=="object"){if("r"in e&&"r"in t)return e.r===t.r&&e.g===t.g&&e.b===t.b;if("ansi256"in e&&"ansi256"in t)return e.ansi256===t.ansi256}return!1}function AM(e,t){let r=e.underline||!1,n=t.underline||!1;return!!e.bold==!!t.bold&&!!e.dim==!!t.dim&&!!e.italic==!!t.italic&&r===n&&kp(e.underlineColor,t.underlineColor)&&!!e.blink==!!t.blink&&!!e.inverse==!!t.inverse&&!!e.hidden==!!t.hidden&&!!e.strikethrough==!!t.strikethrough}function dR(e,t){return e.char===t.char&&kp(e.fg,t.fg)&&kp(e.bg,t.bg)&&AM(e.attrs,t.attrs)&&!!e.isWide==!!t.isWide}function yl(e){return{char:e.char,fg:e.fg,bg:e.bg,attrs:{...e.attrs},isWide:e.isWide}}var Lr=class{cells;damageRects=[];rowSignatures;width;height;constructor(t,r){if(!Number.isSafeInteger(t)||!Number.isSafeInteger(r)||t<0||r<0||t*r>lR)throw new RangeError(`CellBuffer dimensions must be non-negative safe integers totaling at most ${lR} cells`);this.width=t,this.height=r,this.cells=[],this.rowSignatures=new Array(r).fill(null);for(let n=0;n<r;n++){let o=[];for(let s=0;s<t;s++)o.push(Mr());this.cells.push(o)}}get(t,r){if(Number.isInteger(t)&&Number.isInteger(r)&&t>=0&&t<this.width&&r>=0&&r<this.height)return this.cells[r][t]}set(t,r,n){if(Number.isInteger(t)&&Number.isInteger(r)&&t>=0&&t<this.width&&r>=0&&r<this.height){if(n.isWide){let s=t>0?this.cells[r][t-1]:void 0;if(!s||s.isWide||xe(s.char)<=1){this.clearWideFootprint(t,r),this.cells[r][t]=Mr(),this.invalidateRow(r),this.addDamage(t,r,1,1);return}}let o=n.isWide?1:Math.max(1,xe(n.char));if(n.isWide||this.clearWideFootprint(t,r),!n.isWide&&o>1&&t+o>this.width){this.cells[r][t]=Mr(),this.invalidateRow(r),this.addDamage(t,r,1,1);return}if(this.cells[r][t]=n,this.invalidateRow(r),!n.isWide&&o>1&&t+o<=this.width)for(let s=1;s<o;s++)this.clearWideFootprint(t+s,r),this.cells[r][t+s]={char:"",fg:n.fg,bg:n.bg,attrs:n.attrs,isWide:!0};this.addDamage(t,r,Math.min(o,this.width-t),1)}}clearWideFootprint(t,r){if(!Number.isInteger(t)||!Number.isInteger(r)||t<0||t>=this.width||r<0||r>=this.height)return;let n=this.cells[r][t];if(n.isWide){if(this.cells[r][t]=Mr(),this.invalidateRow(r),this.addDamage(t,r,1,1),t>0){let s=this.cells[r][t-1];!s.isWide&&xe(s.char)>1&&(this.cells[r][t-1]=Mr(),this.addDamage(t-1,r,1,1))}return}let o=xe(n.char);if(!(o<=1)){this.cells[r][t]=Mr(),this.invalidateRow(r),this.addDamage(t,r,1,1);for(let s=1;s<o&&t+s<this.width;s++)this.cells[r][t+s]?.isWide&&(this.cells[r][t+s]=Mr(),this.addDamage(t+s,r,1,1))}}writeChar(t,r,n,o,s,i={}){if(Number.isInteger(t)&&Number.isInteger(r)&&t>=0&&t<this.width&&r>=0&&r<this.height){let a=xe(n);if(a<=0||t+a>this.width)return;for(let l=0;l<a;l++)this.clearWideFootprint(t+l,r);this.cells[r][t]={char:n,fg:o,bg:s,attrs:i},this.invalidateRow(r),this.addDamage(t,r,a,1),a===2&&t+1<this.width&&(this.cells[r][t+1]={char:"",fg:o,bg:s,attrs:i,isWide:!0})}}writeString(t,r,n,o,s,i={}){if(!Number.isInteger(t)||!Number.isInteger(r))return 0;let a=t,l=0;for(;l<n.length;){let d=qn(n,l);if(!d)break;if(l=d.nextIndex,d.symbol===`
194
+ `)continue;if(a>=this.width)break;let c=xe(d.symbol);if(!(c<=0)){if(a+c>this.width)break;this.writeChar(a,r,d.symbol,o,s,i),a+=c}}return a-t}fillRow(t,r,n,o,s,i,a={}){if(!Number.isInteger(t)||!Number.isInteger(r)||!Number.isInteger(n)||r<0||r>=this.height||n<=0)return;if(xe(o)!==1){let c=xe(o);if(c<=0)return;let u=Math.max(0,t),p=Math.min(this.width,t+n);for(let g=u;g+c<=p;g+=c)this.writeChar(g,r,o,s,i,a);return}let l=Math.max(0,t),d=Math.min(this.width,t+n);if(!(d<=l)){for(let c=l;c<d;c++)this.clearWideFootprint(c,r),this.cells[r][c]={char:o,fg:s,bg:i,attrs:a};this.invalidateRow(r),this.addDamage(l,r,d-l,1)}}fill(t,r,n,o,s){if(!Number.isInteger(t)||!Number.isInteger(r)||!Number.isInteger(n)||!Number.isInteger(o))return;let i=Math.max(0,t),a=Math.max(0,r),l=Math.min(this.width,t+n),d=Math.min(this.height,r+o);if(!(l<=i||d<=a)){if(xe(s.char)!==1){for(let c=a;c<d;c++)this.fillRow(i,c,l-i,s.char,s.fg,s.bg,s.attrs);return}for(let c=a;c<d;c++){for(let u=i;u<l;u++)this.clearWideFootprint(u,c),this.cells[c][u]={char:s.char,fg:s.fg,bg:s.bg,attrs:s.attrs};this.invalidateRow(c)}this.addDamage(i,a,l-i,d-a)}}clear(){for(let t=0;t<this.height;t++){for(let r=0;r<this.width;r++)this.cells[t][r]=Mr();this.rowSignatures[t]=null}this.addDamage(0,0,this.width,this.height)}copyFrom(t,r=0,n=0,o=0,s=0,i,a){let l=i??t.width,d=a??t.height;for(let c=0;c<d;c++)for(let u=0;u<l;u++){let p=t.get(r+u,n+c);p&&this.set(o+u,s+c,yl(p))}}addDamage(t,r,n,o){if(!Number.isInteger(t)||!Number.isInteger(r)||!Number.isInteger(n)||!Number.isInteger(o))return;let s=Math.max(0,t),i=Math.max(0,r),a=Math.min(this.width,t+n),l=Math.min(this.height,r+o);a>s&&l>i&&this.damageRects.push({x:s,y:i,width:a-s,height:l-i})}getDamage(){return this.damageRects}clearDamage(){this.damageRects=[]}hasDamage(){return this.damageRects.length>0}consolidateDamage(){if(this.damageRects.length<=1)return this.damageRects;let t=1/0,r=1/0,n=-1/0,o=-1/0;for(let i of this.damageRects)t=Math.min(t,i.x),r=Math.min(r,i.y),n=Math.max(n,i.x+i.width),o=Math.max(o,i.y+i.height);let s={x:t,y:r,width:n-t,height:o-r};return this.damageRects=[s],this.damageRects}diff(t){let r=[],n=Math.min(this.width,t.width),o=Math.min(this.height,t.height);for(let s=0;s<o;s++)if(this.getRowSignature(s)!==t.getRowSignature(s))for(let i=0;i<n;i++){let a=this.cells[s][i],l=t.cells[s][i];dR(a,l)||r.push({x:i,y:s,cell:yl(l)})}return r}diffRects(t,r){let n=[],o=Math.min(this.width,t.width),s=CM(this.width,this.height,t.width,t.height,r);for(let i of s)if(!(i.x1===0&&i.x2>=o&&this.getRowSignature(i.y)===t.getRowSignature(i.y)))for(let l=i.x1;l<i.x2;l++){let d=this.cells[i.y][l],c=t.cells[i.y][l];dR(d,c)||n.push({x:l,y:i.y,cell:yl(c)})}return n}applyPatches(t){for(let r of t)this.set(r.x,r.y,yl(r.cell))}*[Symbol.iterator](){for(let t=0;t<this.height;t++)for(let r=0;r<this.width;r++)yield{x:r,y:t,cell:this.cells[t][r]}}*rows(){for(let t=0;t<this.height;t++)yield{y:t,cells:this.cells[t]}}invalidateRow(t){t>=0&&t<this.height&&(this.rowSignatures[t]=null)}getRowSignature(t){let r=this.rowSignatures[t];if(r!=null)return r;let n=this.cells[t],o="";for(let s=0;s<n.length;s++){let i=n[s];o+=`${i.char.length}:${i.char}${i.isWide?1:0}${uR(i.fg,i.bg,i.attrs)}`}return this.rowSignatures[t]=o,o}};function CM(e,t,r,n,o){let s=Math.min(e,r),i=Math.min(t,n);return o.length<=1||OM(o)?cR(s,i,o):DM(s,i,o)}function OM(e){let t=-1,r=-1;for(let n of e){let o=Math.max(0,n.x),s=Math.max(0,n.y),i=n.y+n.height-1;if(!(n.width<=0||n.height<=0||i<s)){if(s<t||s===t&&o<r)return!1;t=i,r=o}}return!0}function cR(e,t,r){let n=[];for(let o of r){let s=Math.max(0,o.x),i=Math.max(0,o.y),a=Math.min(e,o.x+o.width),l=Math.min(t,o.y+o.height);if(!(a<=s||l<=i))for(let d=i;d<l;d++){let c=n[n.length-1];if(c&&c.y===d&&s<=c.x2){c.x2=Math.max(c.x2,a);continue}n.push({y:d,x1:s,x2:a})}}return n}function DM(e,t,r){let n=new Map;for(let i of r){let a=Math.max(0,i.x),l=Math.max(0,i.y),d=Math.min(e,i.x+i.width),c=Math.min(t,i.y+i.height);if(!(d<=a||c<=l))for(let u=l;u<c;u++){let p=n.get(u);p?p.push({x1:a,x2:d}):n.set(u,[{x1:a,x2:d}])}}let o=[],s=[...n.keys()].sort((i,a)=>i-a);for(let i of s){let a=n.get(i);a.sort((d,c)=>d.x1-c.x1);let l=a[0];for(let d=1;d<a.length;d++){let c=a[d];if(c.x1<=l.x2){l.x2=Math.max(l.x2,c.x2);continue}o.push({y:i,x1:l.x1,x2:l.x2}),l=c}o.push({y:i,x1:l.x1,x2:l.x2})}return o}var hi=class{front;back;width;height;constructor(t,r){this.width=t,this.height=r,this.front=new Lr(t,r),this.back=new Lr(t,r)}getBackBuffer(){return this.back}getFrontBuffer(){return this.front}swap(){let t=this.front.diff(this.back),r=this.front;return this.front=this.back,this.back=r,this.back.clearDamage(),t}swapDirty(t){let r=this.front.diffRects(this.back,t),n=this.front;return this.front=this.back,this.back=n,this.back.clearDamage(),r}resize(t,r){this.width=t,this.height=r,this.front=new Lr(t,r),this.back=new Lr(t,r)}};function wp(e,t){if(!e)return"";let r=t?48:38;if(typeof e=="string"){if(aR[e]!==void 0){let n=t?40:30,o=aR[e];return o<8?`${n+o}`:`${n+o+52}`}if(e.startsWith("#")){let n=e.slice(1),o=parseInt(n.slice(0,2),16),s=parseInt(n.slice(2,4),16),i=parseInt(n.slice(4,6),16);return`${r};2;${o};${s};${i}`}return""}return"r"in e?`${r};2;${e.r};${e.g};${e.b}`:"ansi256"in e?`${r};5;${e.ansi256}`:""}function FM(e){let t=[];if(e.bold&&t.push("1"),e.dim&&t.push("2"),e.italic&&t.push("3"),e.underline&&(typeof e.underline=="string"?t.push(TM[e.underline]||"4"):t.push("4"),e.underlineColor)){let r=IM(e.underlineColor);r&&t.push(r)}return e.blink&&t.push("5"),e.inverse&&t.push("7"),e.hidden&&t.push("8"),e.strikethrough&&t.push("9"),t}function IM(e){let t=wp(e,!1);if(!t)return"";if(t.startsWith("38;"))return`58;${t.slice(3)}`;let r=Number.parseInt(t,10);return Number.isNaN(r)?"":r>=30&&r<=37?`58;5;${r-30}`:r>=90&&r<=97?`58;5;${r-82}`:""}function yp(e){return e?typeof e=="string"?`s:${e}`:"r"in e?`r:${e.r},${e.g},${e.b}`:`a:${e.ansi256}`:""}function uR(e,t,r){return[r.bold?"1":"0",r.dim?"1":"0",r.italic?"1":"0",r.underline===void 0||r.underline===!1?"0":String(r.underline),yp(r.underlineColor),r.blink?"1":"0",r.inverse?"1":"0",r.hidden?"1":"0",r.strikethrough?"1":"0",yp(e),yp(t)].join("|")}function pR(e,t,r){let n=uR(e,t,r),o=Yn.get(n);if(o!==void 0)return o===""?null:o;let s=[];s.push(...FM(r));let i=wp(e,!1),a=wp(t,!0);i&&s.push(i),a&&s.push(a);let l=s.length>0?s.join(";"):"";if(Yn.has(n))Yn.delete(n);else if(Yn.size>=PM){let d=Yn.keys().next();d.done||Yn.delete(d.value)}return Yn.set(n,l),l===""?null:l}function MM(e){return e.length===1&&e.charCodeAt(0)<=127?1:xe(e)}function kl(e,t=!1){let r=[];for(let{cells:n}of e.rows()){let o=[],s="",i=null,a=()=>{s.length>0&&(o.push(s),s="")};for(let l of n){if(l.isWide)continue;let d=pR(l.fg,l.bg,l.attrs);d!==i&&(a(),i!==null&&o.push("\x1B[0m"),d!==null&&o.push(`\x1B[${d}m`),i=d),s+=l.char}a(),i!==null&&o.push("\x1B[0m"),r.push(o.join("").trimEnd())}if(!t)for(;r.length>0&&r[r.length-1]==="";)r.pop();return r.join(`
195
+ `)}function Rp(e,t,r=!1){if(e.length===0)return"";r||e.sort((d,c)=>d.y!==c.y?d.y-c.y:d.x-c.x);let n=[],o=-1,s=-1,i=null,a="",l=()=>{a.length>0&&(n.push(a),a="")};for(let d of e){let{x:c,y:u,cell:p}=d;if(p.isWide||c<0||c>=t||u<0)continue;(u!==s||c!==o+1)&&(l(),n.push(`\x1B[${u+1};${c+1}H`));let g=pR(p.fg,p.bg,p.attrs);g!==i&&(l(),i!==null&&n.push("\x1B[0m"),g!==null&&n.push(`\x1B[${g}m`),i=g),a+=p.char,o=c+(MM(p.char)-1),s=u}return l(),i!==null&&n.push("\x1B[0m"),n.join("")}function wl(e,t){let r=t??Ir().multiplexer;if(!r)return e;switch(r.type){case"tmux":return`\x1BPtmux;${e.replace(/\x1b/g,"\x1B\x1B")}\x1B\\`;case"screen":return`\x1BP${e.replace(/\x1b/g,"\x1B\x1B")}\x1B\\`;case"zellij":return e}}var LM="\x1B[?2026h",jM="\x1B[?2026l";function fR(e){let t=e??Ir();return t.synchronizedOutput?wl(LM,t.multiplexer):""}function gR(e){let t=e??Ir();return t.synchronizedOutput?wl(jM,t.multiplexer):""}var _p={single:{topLeft:"\u250C",topRight:"\u2510",bottomLeft:"\u2514",bottomRight:"\u2518",top:"\u2500",bottom:"\u2500",left:"\u2502",right:"\u2502"},double:{topLeft:"\u2554",topRight:"\u2557",bottomLeft:"\u255A",bottomRight:"\u255D",top:"\u2550",bottom:"\u2550",left:"\u2551",right:"\u2551"},round:{topLeft:"\u256D",topRight:"\u256E",bottomLeft:"\u2570",bottomRight:"\u256F",top:"\u2500",bottom:"\u2500",left:"\u2502",right:"\u2502"},bold:{topLeft:"\u250F",topRight:"\u2513",bottomLeft:"\u2517",bottomRight:"\u251B",top:"\u2501",bottom:"\u2501",left:"\u2503",right:"\u2503"},heavy:{topLeft:"\u250F",topRight:"\u2513",bottomLeft:"\u2517",bottomRight:"\u251B",top:"\u2501",bottom:"\u2501",left:"\u2503",right:"\u2503"},singleDouble:{topLeft:"\u2553",topRight:"\u2556",bottomLeft:"\u2559",bottomRight:"\u255C",top:"\u2500",bottom:"\u2500",left:"\u2551",right:"\u2551"},doubleSingle:{topLeft:"\u2552",topRight:"\u2555",bottomLeft:"\u2558",bottomRight:"\u255B",top:"\u2550",bottom:"\u2550",left:"\u2502",right:"\u2502"},classic:{topLeft:"+",topRight:"+",bottomLeft:"+",bottomRight:"+",top:"-",bottom:"-",left:"|",right:"|"},ascii:{topLeft:"+",topRight:"+",bottomLeft:"+",bottomRight:"+",top:"-",bottom:"-",left:"|",right:"|"},asciiDouble:{topLeft:"+",topRight:"+",bottomLeft:"+",bottomRight:"+",top:"=",bottom:"=",left:"|",right:"|"},markdown:{topLeft:"|",topRight:"|",bottomLeft:"|",bottomRight:"|",top:"-",bottom:"-",left:"|",right:"|"},arrow:{topLeft:"\u2198",topRight:"\u2199",bottomLeft:"\u2197",bottomRight:"\u2196",top:"\u2193",bottom:"\u2191",left:"\u2192",right:"\u2190"},dashed:{topLeft:"\u250C",topRight:"\u2510",bottomLeft:"\u2514",bottomRight:"\u2518",top:"\u254C",bottom:"\u254C",left:"\u254E",right:"\u254E"},dashedHeavy:{topLeft:"\u250F",topRight:"\u2513",bottomLeft:"\u2517",bottomRight:"\u251B",top:"\u254D",bottom:"\u254D",left:"\u254F",right:"\u254F"},heavyHead:{topLeft:"\u250E",topRight:"\u2512",bottomLeft:"\u2514",bottomRight:"\u2518",top:"\u2501",bottom:"\u2500",left:"\u2502",right:"\u2502"},doubleHead:{topLeft:"\u2552",topRight:"\u2555",bottomLeft:"\u2514",bottomRight:"\u2518",top:"\u2550",bottom:"\u2500",left:"\u2502",right:"\u2502"},heavyEdge:{topLeft:"\u250D",topRight:"\u2511",bottomLeft:"\u2515",bottomRight:"\u2519",top:"\u2500",bottom:"\u2500",left:"\u2503",right:"\u2503"},doubleEdge:{topLeft:"\u2553",topRight:"\u2556",bottomLeft:"\u2559",bottomRight:"\u255C",top:"\u2500",bottom:"\u2500",left:"\u2551",right:"\u2551"},minimal:{topLeft:"\u2500",topRight:"\u2500",bottomLeft:"\u2500",bottomRight:"\u2500",top:"\u2500",bottom:"\u2500",left:" ",right:" "},minimalHeavy:{topLeft:"\u2501",topRight:"\u2501",bottomLeft:"\u2501",bottomRight:"\u2501",top:"\u2501",bottom:"\u2501",left:" ",right:" "},minimalDouble:{topLeft:"\u2550",topRight:"\u2550",bottomLeft:"\u2550",bottomRight:"\u2550",top:"\u2550",bottom:"\u2550",left:" ",right:" "},horizontals:{topLeft:" ",topRight:" ",bottomLeft:" ",bottomRight:" ",top:"\u2500",bottom:"\u2500",left:" ",right:" "},inner:{topLeft:"\u2597",topRight:"\u2596",bottomLeft:"\u259D",bottomRight:"\u2598",top:"\u2584",bottom:"\u2580",left:"\u2590",right:"\u258C"},outer:{topLeft:"\u259B",topRight:"\u259C",bottomLeft:"\u2599",bottomRight:"\u259F",top:"\u2580",bottom:"\u2584",left:"\u258C",right:"\u2590"},thick:{topLeft:"\u2588",topRight:"\u2588",bottomLeft:"\u2588",bottomRight:"\u2588",top:"\u2580",bottom:"\u2584",left:"\u2588",right:"\u2588"},block:{topLeft:"\u2584",topRight:"\u2584",bottomLeft:"\u2580",bottomRight:"\u2580",top:"\u2584",bottom:"\u2580",left:"\u2588",right:"\u2588"},hkey:{topLeft:"\u2594",topRight:"\u2594",bottomLeft:"\u2581",bottomRight:"\u2581",top:"\u2594",bottom:"\u2581",left:" ",right:" "},vkey:{topLeft:"\u258F",topRight:"\u2595",bottomLeft:"\u258F",bottomRight:"\u2595",top:" ",bottom:" ",left:"\u258F",right:"\u2595"},tall:{topLeft:"\u258A",topRight:"\u258E",bottomLeft:"\u258A",bottomRight:"\u258E",top:"\u2594",bottom:"\u2581",left:"\u258A",right:"\u258E"},panel:{topLeft:"\u258A",topRight:"\u258E",bottomLeft:"\u258A",bottomRight:"\u258E",top:"\u2588",bottom:"\u2581",left:"\u258A",right:"\u258E"},tab:{topLeft:"\u2581",topRight:"\u2581",bottomLeft:"\u2594",bottomRight:"\u2594",top:"\u2581",bottom:"\u2594",left:"\u258E",right:"\u258A"},wide:{topLeft:"\u2581",topRight:"\u2581",bottomLeft:"\u2594",bottomRight:"\u2594",top:"\u2581",bottom:"\u2594",left:"\u258E",right:"\u258A"},none:{topLeft:" ",topRight:" ",bottomLeft:" ",bottomRight:" ",top:" ",bottom:" ",left:" ",right:" "},hidden:{topLeft:" ",topRight:" ",bottomLeft:" ",bottomRight:" ",top:" ",bottom:" ",left:" ",right:" "},blank:{topLeft:" ",topRight:" ",bottomLeft:" ",bottomRight:" ",top:" ",bottom:" ",left:" ",right:" "}};var mR="\x1B[?25h",BM="\x1B[?25l",Rl=!1,hR=!1,$M=null,xp=null;function Ep(e){return"isTTY"in e&&!!e.isTTY}function GM(){let e=xp??process.stdout;Ep(e)&&Rl&&(e.write(mR),Rl=!1)}function NM(){hR||(hR=!0,$M=Jr(GM))}function Zo(e=process.stdout){Ep(e)&&(xp=e,Rl=!1,e.write(mR))}function es(e=process.stdout){Ep(e)&&(xp=e,NM(),Rl=!0,e.write(BM))}var WM="#ffffff",HM="#000000",UM="transparent",y={50:"#f8fafc",100:"#f1f5f9",200:"#e2e8f0",300:"#cbd5e1",400:"#94a3b8",500:"#64748b",600:"#475569",700:"#334155",800:"#1e293b",900:"#0f172a",950:"#020617"},qM={50:"#f9fafb",100:"#f3f4f6",200:"#e5e7eb",300:"#d1d5db",400:"#9ca3af",500:"#6b7280",600:"#4b5563",700:"#374151",800:"#1f2937",900:"#111827",950:"#030712"},KM={50:"#fafafa",100:"#f4f4f5",200:"#e4e4e7",300:"#d4d4d8",400:"#a1a1aa",500:"#71717a",600:"#52525b",700:"#3f3f46",800:"#27272a",900:"#18181b",950:"#09090b"},h={50:"#fafafa",100:"#f5f5f5",200:"#e5e5e5",300:"#d4d4d4",400:"#a3a3a3",500:"#737373",600:"#525252",700:"#404040",800:"#262626",900:"#171717",950:"#0a0a0a"},He={50:"#fafaf9",100:"#f5f5f4",200:"#e7e5e4",300:"#d6d3d1",400:"#a8a29e",500:"#78716c",600:"#57534e",700:"#44403c",800:"#292524",900:"#1c1917",950:"#0c0a09"},ae={50:"#fef2f2",100:"#fee2e2",200:"#fecaca",300:"#fca5a5",400:"#f87171",500:"#ef4444",600:"#dc2626",700:"#b91c1c",800:"#991b1b",900:"#7f1d1d",950:"#450a0a"},VM={50:"#fff7ed",100:"#ffedd5",200:"#fed7aa",300:"#fdba74",400:"#fb923c",500:"#f97316",600:"#ea580c",700:"#c2410c",800:"#9a3412",900:"#7c2d12",950:"#431407"},ue={50:"#fffbeb",100:"#fef3c7",200:"#fde68a",300:"#fcd34d",400:"#fbbf24",500:"#f59e0b",600:"#d97706",700:"#b45309",800:"#92400e",900:"#78350f",950:"#451a03"},zM={50:"#fefce8",100:"#fef9c3",200:"#fef08a",300:"#fde047",400:"#facc15",500:"#eab308",600:"#ca8a04",700:"#a16207",800:"#854d0e",900:"#713f12",950:"#422006"},JM={50:"#f7fee7",100:"#ecfccb",200:"#d9f99d",300:"#bef264",400:"#a3e635",500:"#84cc16",600:"#65a30d",700:"#4d7c0f",800:"#3f6212",900:"#365314",950:"#1a2e05"},pe={50:"#f0fdf4",100:"#dcfce7",200:"#bbf7d0",300:"#86efac",400:"#4ade80",500:"#22c55e",600:"#16a34a",700:"#15803d",800:"#166534",900:"#14532d",950:"#052e16"},YM={50:"#ecfdf5",100:"#d1fae5",200:"#a7f3d0",300:"#6ee7b7",400:"#34d399",500:"#10b981",600:"#059669",700:"#047857",800:"#065f46",900:"#064e3b",950:"#022c22"},QM={50:"#f0fdfa",100:"#ccfbf1",200:"#99f6e4",300:"#5eead4",400:"#2dd4bf",500:"#14b8a6",600:"#0d9488",700:"#0f766e",800:"#115e59",900:"#134e4a",950:"#042f2e"},Xe={50:"#ecfeff",100:"#cffafe",200:"#a5f3fc",300:"#67e8f9",400:"#22d3ee",500:"#06b6d4",600:"#0891b2",700:"#0e7490",800:"#155e75",900:"#164e63",950:"#083344"},XM={50:"#f0f9ff",100:"#e0f2fe",200:"#bae6fd",300:"#7dd3fc",400:"#38bdf8",500:"#0ea5e9",600:"#0284c7",700:"#0369a1",800:"#075985",900:"#0c4a6e",950:"#082f49"},ee={50:"#eff6ff",100:"#dbeafe",200:"#bfdbfe",300:"#93c5fd",400:"#60a5fa",500:"#3b82f6",600:"#2563eb",700:"#1d4ed8",800:"#1e40af",900:"#1e3a8a",950:"#172554"},ZM={50:"#eef2ff",100:"#e0e7ff",200:"#c7d2fe",300:"#a5b4fc",400:"#818cf8",500:"#6366f1",600:"#4f46e5",700:"#4338ca",800:"#3730a3",900:"#312e81",950:"#1e1b4b"},eL={50:"#f5f3ff",100:"#ede9fe",200:"#ddd6fe",300:"#c4b5fd",400:"#a78bfa",500:"#8b5cf6",600:"#7c3aed",700:"#6d28d9",800:"#5b21b6",900:"#4c1d95",950:"#2e1065"},tL={50:"#faf5ff",100:"#f3e8ff",200:"#e9d5ff",300:"#d8b4fe",400:"#c084fc",500:"#a855f7",600:"#9333ea",700:"#7e22ce",800:"#6b21a8",900:"#581c87",950:"#3b0764"},rL={50:"#fdf4ff",100:"#fae8ff",200:"#f5d0fe",300:"#f0abfc",400:"#e879f9",500:"#d946ef",600:"#c026d3",700:"#a21caf",800:"#86198f",900:"#701a75",950:"#4a044e"},nL={50:"#fdf2f8",100:"#fce7f3",200:"#fbcfe8",300:"#f9a8d4",400:"#f472b6",500:"#ec4899",600:"#db2777",700:"#be185d",800:"#9d174d",900:"#831843",950:"#500724"},oL={50:"#fff1f2",100:"#ffe4e6",200:"#fecdd3",300:"#fda4af",400:"#fb7185",500:"#f43f5e",600:"#e11d48",700:"#be123c",800:"#9f1239",900:"#881337",950:"#4c0519"},bR={white:WM,black:HM,transparent:UM,slate:y,gray:qM,zinc:KM,neutral:h,stone:He,red:ae,orange:VM,amber:ue,yellow:zM,lime:JM,green:pe,emerald:YM,teal:QM,cyan:Xe,sky:XM,blue:ee,indigo:ZM,violet:eL,purple:tL,fuchsia:rL,pink:nL,rose:oL};var Z={primary:{50:ee[50],100:ee[100],200:ee[200],300:ee[300],400:ee[400],500:ee[500],600:ee[600],700:ee[700],800:ee[800],900:ee[900]},secondary:{50:y[50],100:y[100],200:y[200],300:y[300],400:y[400],500:y[500],600:y[600],700:y[700],800:y[800],900:y[900]},success:{50:pe[50],100:pe[100],200:pe[200],300:pe[300],400:pe[400],500:pe[500],600:pe[600],700:pe[700],800:pe[800],900:pe[900]},warning:{50:ue[50],100:ue[100],200:ue[200],300:ue[300],400:ue[400],500:ue[500],600:ue[600],700:ue[700],800:ue[800],900:ue[900]},danger:{50:ae[50],100:ae[100],200:ae[200],300:ae[300],400:ae[400],500:ae[500],600:ae[600],700:ae[700],800:ae[800],900:ae[900]},neutral:{50:y[50],100:y[100],200:y[200],300:y[300],400:y[400],500:y[500],600:y[600],700:y[700],800:y[800],900:y[900]}},vp={name:"dark",mode:"dark",meta:{version:"1.0.0",author:"tuiuiu",description:"Default dark theme with blue primary and slate neutrals"},palette:Z,background:{lowest:y[950],base:y[900],subtle:y[800],surface:y[700],raised:y[600],elevated:y[500],popover:y[800],overlay:"rgba(0, 0, 0, 0.7)"},foreground:{primary:y[50],secondary:y[200],muted:y[400],disabled:y[500],inverse:{base:"#ffffff",soft:"rgba(255, 255, 255, 0.6)",subtle:"rgba(255, 255, 255, 0.35)"}},accents:{positive:Z.success[500],warning:Z.warning[500],critical:Z.danger[500],info:Xe[500],highlight:Z.primary[500]},states:{hover:{bg:"rgba(255, 255, 255, 0.05)",fg:null},active:{bg:"rgba(255, 255, 255, 0.1)"},focus:{border:Z.primary[400],ring:{color:Z.primary[500],width:2}},disabled:{opacity:.4,bg:y[800],fg:y[500]},selected:{bg:Z.primary[700],fg:"#ffffff"}},borders:{default:y[700],subtle:y[800],strong:y[500],accent:Z.primary[500],danger:Z.danger[500]},opacity:{disabled:.4,muted:.7,overlay:.5,ghost:.2},components:{button:{primary:{bg:Z.primary[500],fg:"#ffffff",hoverBg:Z.primary[400],activeBg:Z.primary[600],border:"transparent"},secondary:{bg:y[700],fg:y[50],hoverBg:y[600],activeBg:y[800],border:"transparent"},outline:{bg:"transparent",fg:Z.primary[400],hoverBg:"rgba(255, 255, 255, 0.05)",activeBg:"rgba(255, 255, 255, 0.1)",border:Z.primary[500]},ghost:{bg:"transparent",fg:y[50],hoverBg:"rgba(255, 255, 255, 0.05)",activeBg:"rgba(255, 255, 255, 0.1)",border:"transparent"}},panel:{bg:y[800],headerBg:y[700],footerBg:y[700],border:y[700]},menu:{bg:y[800],border:y[700],item:{fg:y[50],hoverBg:y[700],activeBg:Z.primary[700],selectedBg:Z.primary[600],disabledFg:y[500]}},tabs:{bg:y[800],border:y[700],tab:{fg:y[400],activeFg:y[50],activeBg:y[700],hoverFg:y[200],indicator:Z.primary[500]}},dropdown:{bg:y[800],border:y[700],item:{fg:y[50],hoverBg:y[700],selectedBg:Z.primary[700]}},input:{bg:y[800],fg:y[50],placeholder:y[500],border:y[700],focusBorder:Z.primary[500],invalidBorder:Z.danger[500]},checkbox:{bg:y[800],border:y[600],checkColor:"#ffffff",checkedBg:Z.primary[500]},radio:{bg:y[800],dotColor:Z.primary[500],border:y[600],checkedBorder:Z.primary[500]},tooltip:{bg:y[700],fg:y[50]},modal:{bg:y[800],border:y[700],overlay:"rgba(0, 0, 0, 0.7)"},badge:{default:{bg:y[700],fg:y[50]},success:{bg:Z.success[500],fg:"#ffffff"},warning:{bg:Z.warning[500],fg:y[900]},danger:{bg:Z.danger[500],fg:"#ffffff"}},list:{item:{bg:"transparent",hoverBg:y[800],selectedBg:Z.primary[700],fg:y[50]}},header:{default:{bg:y[800],fg:y[50],titleFg:y[50],subtitleFg:y[400],border:y[700]},primary:{bg:Z.primary[600],fg:"#ffffff",titleFg:"#ffffff",subtitleFg:"rgba(255, 255, 255, 0.8)",border:Z.primary[700]},secondary:{bg:y[700],fg:y[50],titleFg:y[50],subtitleFg:y[400],border:y[600]},success:{bg:Z.success[600],fg:"#ffffff",titleFg:"#ffffff",subtitleFg:"rgba(255, 255, 255, 0.8)",border:Z.success[700]},warning:{bg:Z.warning[500],fg:y[900],titleFg:y[900],subtitleFg:"rgba(0, 0, 0, 0.7)",border:Z.warning[600]},danger:{bg:Z.danger[600],fg:"#ffffff",titleFg:"#ffffff",subtitleFg:"rgba(255, 255, 255, 0.8)",border:Z.danger[700]}},statusbar:{default:{bg:y[800],fg:y[400]},primary:{bg:Z.primary[600],fg:"#ffffff"},info:{bg:Xe[600],fg:"#ffffff"},success:{bg:Z.success[600],fg:"#ffffff"},warning:{bg:Z.warning[500],fg:y[900]},danger:{bg:Z.danger[600],fg:"#ffffff"}},page:{default:{bg:y[900],titleFg:y[50],subtitleFg:y[400],border:y[700]},primary:{bg:y[900],titleFg:Z.primary[400],subtitleFg:y[400],border:Z.primary[700]},secondary:{bg:y[900],titleFg:y[200],subtitleFg:y[500],border:y[700]}},appshell:{bg:y[950],dividerFg:y[700],sidebarBg:y[900],asideBg:y[900]},collapsible:{default:{headerBg:y[800],headerFg:y[50],contentBg:y[900],border:y[700],iconFg:y[400]},primary:{headerBg:Z.primary[700],headerFg:"#ffffff",contentBg:y[900],border:Z.primary[600],iconFg:"rgba(255, 255, 255, 0.8)"},secondary:{headerBg:y[700],headerFg:y[50],contentBg:y[800],border:y[600],iconFg:y[400]}},commandPalette:{bg:y[800],border:y[700],inputBg:y[900],inputFg:y[50],inputPlaceholder:y[500],itemFg:y[50],itemHoverBg:y[700],itemSelectedBg:Z.primary[700],itemSelectedFg:"#ffffff",highlightFg:Z.primary[400],categoryFg:y[500]},splitPanel:{bg:y[900],dividerBg:y[700],dividerHoverBg:y[600],dividerActiveBg:Z.primary[500],border:y[700],titleFg:y[400]},toast:{success:{bg:Z.success[900],fg:Z.success[100],border:Z.success[600],iconFg:Z.success[400]},error:{bg:Z.danger[900],fg:Z.danger[100],border:Z.danger[600],iconFg:Z.danger[400]},warning:{bg:Z.warning[900],fg:Z.warning[100],border:Z.warning[500],iconFg:Z.warning[400]},info:{bg:Xe[900],fg:Xe[100],border:Xe[600],iconFg:Xe[400]}},window:{default:{bg:y[900],fg:y[100],titleBarBg:y[800],titleBarFg:y[100],border:y[700],buttonFg:y[400],closeFg:Z.danger[500]},primary:{bg:y[900],fg:y[100],titleBarBg:Z.primary[600],titleBarFg:"#ffffff",border:Z.primary[700],buttonFg:"rgba(255, 255, 255, 0.8)",closeFg:"#ffffff"},success:{bg:y[900],fg:y[100],titleBarBg:Z.success[600],titleBarFg:"#ffffff",border:Z.success[700],buttonFg:"rgba(255, 255, 255, 0.8)",closeFg:"#ffffff"},warning:{bg:y[900],fg:y[100],titleBarBg:Z.warning[500],titleBarFg:y[900],border:Z.warning[600],buttonFg:y[700],closeFg:y[900]},danger:{bg:y[900],fg:y[100],titleBarBg:Z.danger[600],titleBarFg:"#ffffff",border:Z.danger[700],buttonFg:"rgba(255, 255, 255, 0.8)",closeFg:"#ffffff"}}}};var Y={primary:{50:ee[50],100:ee[100],200:ee[200],300:ee[300],400:ee[400],500:ee[500],600:ee[600],700:ee[700],800:ee[800],900:ee[900]},secondary:{50:y[50],100:y[100],200:y[200],300:y[300],400:y[400],500:y[500],600:y[600],700:y[700],800:y[800],900:y[900]},success:{50:pe[50],100:pe[100],200:pe[200],300:pe[300],400:pe[400],500:pe[500],600:pe[600],700:pe[700],800:pe[800],900:pe[900]},warning:{50:ue[50],100:ue[100],200:ue[200],300:ue[300],400:ue[400],500:ue[500],600:ue[600],700:ue[700],800:ue[800],900:ue[900]},danger:{50:ae[50],100:ae[100],200:ae[200],300:ae[300],400:ae[400],500:ae[500],600:ae[600],700:ae[700],800:ae[800],900:ae[900]},neutral:{50:y[50],100:y[100],200:y[200],300:y[300],400:y[400],500:y[500],600:y[600],700:y[700],800:y[800],900:y[900]}},yR={name:"light",mode:"light",meta:{version:"1.0.0",author:"tuiuiu",description:"Light background theme with blue primary and slate neutrals"},palette:Y,background:{lowest:y[100],base:"#ffffff",subtle:y[50],surface:"#ffffff",raised:y[100],elevated:y[200],popover:"#ffffff",overlay:"rgba(0, 0, 0, 0.5)"},foreground:{primary:y[950],secondary:y[700],muted:y[500],disabled:y[400],inverse:{base:"#ffffff",soft:"rgba(255, 255, 255, 0.8)",subtle:"rgba(255, 255, 255, 0.6)"}},accents:{positive:pe[600],warning:ue[600],critical:ae[600],info:Xe[600],highlight:Y.primary[600]},states:{hover:{bg:"rgba(0, 0, 0, 0.05)",fg:null},active:{bg:"rgba(0, 0, 0, 0.1)"},focus:{border:Y.primary[600],ring:{color:Y.primary[600],width:2}},disabled:{opacity:.4,bg:y[100],fg:y[400]},selected:{bg:Y.primary[100],fg:Y.primary[900]}},borders:{default:y[200],subtle:y[100],strong:y[300],accent:Y.primary[600],danger:Y.danger[600]},opacity:{disabled:.4,muted:.7,overlay:.5,ghost:.2},components:{button:{primary:{bg:Y.primary[600],fg:"#ffffff",hoverBg:Y.primary[700],activeBg:Y.primary[800],border:"transparent"},secondary:{bg:y[100],fg:y[900],hoverBg:y[200],activeBg:y[300],border:"transparent"},outline:{bg:"transparent",fg:Y.primary[600],hoverBg:Y.primary[50],activeBg:Y.primary[100],border:Y.primary[600]},ghost:{bg:"transparent",fg:y[900],hoverBg:"rgba(0, 0, 0, 0.05)",activeBg:"rgba(0, 0, 0, 0.1)",border:"transparent"}},panel:{bg:"#ffffff",headerBg:y[50],footerBg:y[50],border:y[200]},menu:{bg:"#ffffff",border:y[200],item:{fg:y[900],hoverBg:y[100],activeBg:Y.primary[100],selectedBg:Y.primary[50],disabledFg:y[400]}},tabs:{bg:"#ffffff",border:y[200],tab:{fg:y[600],activeFg:y[900],activeBg:"#ffffff",hoverFg:y[900],indicator:Y.primary[600]}},dropdown:{bg:"#ffffff",border:y[200],item:{fg:y[900],hoverBg:y[100],selectedBg:Y.primary[100]}},input:{bg:"#ffffff",fg:y[900],placeholder:y[400],border:y[300],focusBorder:Y.primary[600],invalidBorder:Y.danger[600]},checkbox:{bg:"#ffffff",border:y[300],checkColor:"#ffffff",checkedBg:Y.primary[600]},radio:{bg:"#ffffff",dotColor:Y.primary[600],border:y[300],checkedBorder:Y.primary[600]},tooltip:{bg:y[900],fg:y[50]},modal:{bg:"#ffffff",border:y[200],overlay:"rgba(0, 0, 0, 0.5)"},badge:{default:{bg:y[100],fg:y[700]},success:{bg:Y.success[100],fg:Y.success[800]},warning:{bg:Y.warning[100],fg:Y.warning[800]},danger:{bg:Y.danger[100],fg:Y.danger[800]}},list:{item:{bg:"transparent",hoverBg:y[50],selectedBg:Y.primary[100],fg:y[900]}},header:{default:{bg:y[100],fg:y[900],titleFg:y[900],subtitleFg:y[600],border:y[200]},primary:{bg:Y.primary[600],fg:"#ffffff",titleFg:"#ffffff",subtitleFg:"rgba(255, 255, 255, 0.8)",border:Y.primary[700]},secondary:{bg:y[200],fg:y[800],titleFg:y[800],subtitleFg:y[600],border:y[300]},success:{bg:Y.success[600],fg:"#ffffff",titleFg:"#ffffff",subtitleFg:"rgba(255, 255, 255, 0.8)",border:Y.success[700]},warning:{bg:Y.warning[500],fg:y[900],titleFg:y[900],subtitleFg:"rgba(0, 0, 0, 0.7)",border:Y.warning[600]},danger:{bg:Y.danger[600],fg:"#ffffff",titleFg:"#ffffff",subtitleFg:"rgba(255, 255, 255, 0.8)",border:Y.danger[700]}},statusbar:{default:{bg:y[100],fg:y[600]},primary:{bg:Y.primary[600],fg:"#ffffff"},info:{bg:Xe[600],fg:"#ffffff"},success:{bg:Y.success[600],fg:"#ffffff"},warning:{bg:Y.warning[500],fg:y[900]},danger:{bg:Y.danger[600],fg:"#ffffff"}},page:{default:{bg:"#ffffff",titleFg:y[900],subtitleFg:y[600],border:y[200]},primary:{bg:"#ffffff",titleFg:Y.primary[700],subtitleFg:y[600],border:Y.primary[200]},secondary:{bg:y[50],titleFg:y[700],subtitleFg:y[500],border:y[200]}},appshell:{bg:y[100],dividerFg:y[300],sidebarBg:"#ffffff",asideBg:"#ffffff"},collapsible:{default:{headerBg:y[100],headerFg:y[900],contentBg:"#ffffff",border:y[200],iconFg:y[600]},primary:{headerBg:Y.primary[100],headerFg:Y.primary[900],contentBg:"#ffffff",border:Y.primary[200],iconFg:Y.primary[600]},secondary:{headerBg:y[200],headerFg:y[800],contentBg:y[50],border:y[300],iconFg:y[600]}},commandPalette:{bg:"#ffffff",border:y[200],inputBg:y[50],inputFg:y[900],inputPlaceholder:y[400],itemFg:y[900],itemHoverBg:y[100],itemSelectedBg:Y.primary[100],itemSelectedFg:Y.primary[900],highlightFg:Y.primary[600],categoryFg:y[500]},splitPanel:{bg:"#ffffff",dividerBg:y[200],dividerHoverBg:y[300],dividerActiveBg:Y.primary[500],border:y[200],titleFg:y[600]},toast:{success:{bg:Y.success[50],fg:Y.success[900],border:Y.success[200],iconFg:Y.success[600]},error:{bg:Y.danger[50],fg:Y.danger[900],border:Y.danger[200],iconFg:Y.danger[600]},warning:{bg:Y.warning[50],fg:Y.warning[900],border:Y.warning[200],iconFg:Y.warning[600]},info:{bg:Xe[50],fg:Xe[900],border:Xe[200],iconFg:Xe[600]}},window:{default:{bg:"#ffffff",fg:y[900],titleBarBg:y[100],titleBarFg:y[900],border:y[200],buttonFg:y[600],closeFg:Y.danger[500]},primary:{bg:"#ffffff",fg:y[900],titleBarBg:Y.primary[600],titleBarFg:"#ffffff",border:Y.primary[200],buttonFg:"rgba(255, 255, 255, 0.8)",closeFg:"#ffffff"},success:{bg:"#ffffff",fg:y[900],titleBarBg:Y.success[600],titleBarFg:"#ffffff",border:Y.success[200],buttonFg:"rgba(255, 255, 255, 0.8)",closeFg:"#ffffff"},warning:{bg:"#ffffff",fg:y[900],titleBarBg:Y.warning[500],titleBarFg:y[900],border:Y.warning[200],buttonFg:y[700],closeFg:y[900]},danger:{bg:"#ffffff",fg:y[900],titleBarBg:Y.danger[600],titleBarFg:"#ffffff",border:Y.danger[200],buttonFg:"rgba(255, 255, 255, 0.8)",closeFg:"#ffffff"}}}};var O={background:"#272822",backgroundDark:"#1E1F1C",backgroundLight:"#3E3D32",foreground:"#F8F8F2",comment:"#75715E",green:"#A6E22E",yellow:"#E6DB74",pink:"#F92672",cyan:"#66D9EF",orange:"#FD971F",purple:"#AE81FF"},Qn={primary:{50:"#F7FEE7",100:"#ECFCCB",200:"#D9F99D",300:"#BEF264",400:"#A6E22E",500:"#A6E22E",600:"#84CC16",700:"#65A30D",800:"#4D7C0F",900:"#3F6212"},secondary:{50:He[50],100:He[100],200:He[200],300:He[300],400:He[400],500:He[500],600:He[600],700:He[700],800:He[800],900:He[900]},success:{50:"#F7FEE7",100:"#ECFCCB",200:"#D9F99D",300:"#BEF264",400:"#A6E22E",500:"#A6E22E",600:"#84CC16",700:"#65A30D",800:"#4D7C0F",900:"#3F6212"},warning:{50:"#FEFCE8",100:"#FEF9C3",200:"#FEF08A",300:"#FDE047",400:"#E6DB74",500:"#E6DB74",600:"#CA8A04",700:"#A16207",800:"#854D0E",900:"#713F12"},danger:{50:"#FFF1F2",100:"#FFE4E6",200:"#FECDD3",300:"#FDA4AF",400:"#F92672",500:"#F92672",600:"#E11D48",700:"#BE123C",800:"#9F1239",900:"#881337"},neutral:{50:"#FAFAF9",100:"#F5F5F4",200:"#E7E5E4",300:"#D6D3D1",400:"#A8A29E",500:"#78716C",600:"#57534E",700:"#44403C",800:"#292524",900:"#1C1917"}},kR={name:"monokai",mode:"dark",meta:{version:"1.0.0",author:"tuiuiu",description:"Classic Monokai code editor theme"},palette:Qn,background:{lowest:O.backgroundDark,base:O.background,subtle:O.backgroundLight,surface:"#49483E",raised:"#5B5A4F",elevated:"#6D6C5F",popover:O.backgroundLight,overlay:"rgba(0, 0, 0, 0.7)"},foreground:{primary:O.foreground,secondary:"#E8E8E2",muted:O.comment,disabled:"#5B5A4F",inverse:{base:O.background,soft:"rgba(39, 40, 34, 0.8)",subtle:"rgba(39, 40, 34, 0.6)"}},accents:{positive:O.green,warning:O.yellow,critical:O.pink,info:O.cyan,highlight:O.green},states:{hover:{bg:"rgba(255, 255, 255, 0.1)",fg:null},active:{bg:"rgba(255, 255, 255, 0.2)"},focus:{border:O.green,ring:{color:O.green,width:2}},disabled:{opacity:.4,bg:O.backgroundLight,fg:"#5B5A4F"},selected:{bg:"#49483E",fg:O.foreground}},borders:{default:"#49483E",subtle:O.backgroundLight,strong:O.comment,accent:O.green,danger:O.pink},opacity:{disabled:.4,muted:.7,overlay:.7,ghost:.2},components:{button:{primary:{bg:O.green,fg:O.background,hoverBg:"#B8F040",activeBg:"#8BC922",border:"transparent"},secondary:{bg:"#49483E",fg:O.foreground,hoverBg:"#5B5A4F",activeBg:O.backgroundLight,border:"transparent"},outline:{bg:"transparent",fg:O.green,hoverBg:"rgba(166, 226, 46, 0.1)",activeBg:"rgba(166, 226, 46, 0.2)",border:O.green},ghost:{bg:"transparent",fg:O.foreground,hoverBg:"rgba(255, 255, 255, 0.1)",activeBg:"rgba(255, 255, 255, 0.2)",border:"transparent"}},panel:{bg:O.backgroundLight,headerBg:"#49483E",footerBg:"#49483E",border:"#49483E"},menu:{bg:O.backgroundLight,border:"#49483E",item:{fg:O.foreground,hoverBg:"#49483E",activeBg:"#5B5A4F",selectedBg:"#49483E",disabledFg:"#5B5A4F"}},tabs:{bg:O.backgroundLight,border:"#49483E",tab:{fg:O.comment,activeFg:O.foreground,activeBg:O.background,hoverFg:"#E8E8E2",indicator:O.green}},dropdown:{bg:O.backgroundLight,border:"#49483E",item:{fg:O.foreground,hoverBg:"#49483E",selectedBg:"#5B5A4F"}},input:{bg:O.backgroundLight,fg:O.foreground,placeholder:O.comment,border:"#49483E",focusBorder:O.green,invalidBorder:O.pink},checkbox:{bg:O.backgroundLight,border:"#5B5A4F",checkColor:O.background,checkedBg:O.green},radio:{bg:O.backgroundLight,dotColor:O.green,border:"#5B5A4F",checkedBorder:O.green},tooltip:{bg:"#49483E",fg:O.foreground},modal:{bg:O.backgroundLight,border:"#49483E",overlay:"rgba(0, 0, 0, 0.7)"},badge:{default:{bg:"#49483E",fg:O.foreground},success:{bg:O.green,fg:O.background},warning:{bg:O.yellow,fg:O.background},danger:{bg:O.pink,fg:"#ffffff"}},list:{item:{bg:"transparent",hoverBg:O.backgroundLight,selectedBg:"#49483E",fg:O.foreground}},header:{default:{bg:O.backgroundLight,fg:O.foreground,titleFg:O.foreground,subtitleFg:O.comment,border:"#49483E"},primary:{bg:O.green,fg:O.background,titleFg:O.background,subtitleFg:"rgba(39, 40, 34, 0.8)",border:"#84CC16"},secondary:{bg:"#49483E",fg:O.foreground,titleFg:O.foreground,subtitleFg:O.comment,border:"#5B5A4F"},success:{bg:O.green,fg:O.background,titleFg:O.background,subtitleFg:"rgba(39, 40, 34, 0.8)",border:"#84CC16"},warning:{bg:O.yellow,fg:O.background,titleFg:O.background,subtitleFg:"rgba(39, 40, 34, 0.7)",border:O.orange},danger:{bg:O.pink,fg:"#ffffff",titleFg:"#ffffff",subtitleFg:"rgba(255, 255, 255, 0.8)",border:"#E11D48"}},statusbar:{default:{bg:O.backgroundLight,fg:O.comment},primary:{bg:O.green,fg:O.background},info:{bg:O.cyan,fg:O.background},success:{bg:O.green,fg:O.background},warning:{bg:O.yellow,fg:O.background},danger:{bg:O.pink,fg:"#ffffff"}},page:{default:{bg:O.background,titleFg:O.foreground,subtitleFg:O.comment,border:"#49483E"},primary:{bg:O.background,titleFg:O.green,subtitleFg:O.comment,border:O.green},secondary:{bg:O.background,titleFg:"#E8E8E2",subtitleFg:O.comment,border:"#49483E"}},appshell:{bg:O.backgroundDark,dividerFg:"#49483E",sidebarBg:O.background,asideBg:O.background},collapsible:{default:{headerBg:O.backgroundLight,headerFg:O.foreground,contentBg:O.background,border:"#49483E",iconFg:O.comment},primary:{headerBg:"#49483E",headerFg:O.green,contentBg:O.background,border:O.green,iconFg:O.green},secondary:{headerBg:"#49483E",headerFg:O.foreground,contentBg:O.backgroundLight,border:"#5B5A4F",iconFg:O.comment}},commandPalette:{bg:O.backgroundLight,border:"#49483E",inputBg:O.background,inputFg:O.foreground,inputPlaceholder:O.comment,itemFg:O.foreground,itemHoverBg:"#49483E",itemSelectedBg:"#5B5A4F",itemSelectedFg:O.foreground,highlightFg:O.green,categoryFg:O.comment},splitPanel:{bg:O.background,dividerBg:"#49483E",dividerHoverBg:"#5B5A4F",dividerActiveBg:O.green,border:"#49483E",titleFg:O.comment},toast:{success:{bg:Qn.success[900],fg:Qn.success[100],border:O.green,iconFg:O.green},error:{bg:Qn.danger[900],fg:Qn.danger[100],border:O.pink,iconFg:O.pink},warning:{bg:Qn.warning[900],fg:Qn.warning[100],border:O.yellow,iconFg:O.yellow},info:{bg:"#0E4A5C",fg:"#CFFAFE",border:O.cyan,iconFg:O.cyan}},window:{default:{bg:O.background,fg:O.foreground,titleBarBg:O.backgroundLight,titleBarFg:O.foreground,border:"#49483E",buttonFg:O.comment,closeFg:O.pink},primary:{bg:O.background,fg:O.foreground,titleBarBg:O.green,titleBarFg:O.background,border:"#84CC16",buttonFg:"rgba(39, 40, 34, 0.8)",closeFg:O.background},success:{bg:O.background,fg:O.foreground,titleBarBg:O.green,titleBarFg:O.background,border:"#84CC16",buttonFg:"rgba(39, 40, 34, 0.8)",closeFg:O.background},warning:{bg:O.background,fg:O.foreground,titleBarBg:O.yellow,titleBarFg:O.background,border:O.orange,buttonFg:"rgba(39, 40, 34, 0.8)",closeFg:O.background},danger:{bg:O.background,fg:O.foreground,titleBarBg:O.pink,titleBarFg:"#ffffff",border:"#E11D48",buttonFg:"rgba(255, 255, 255, 0.8)",closeFg:"#ffffff"}}}};var P={background:"#282A36",currentLine:"#44475A",foreground:"#F8F8F2",comment:"#6272A4",cyan:"#8BE9FD",green:"#50FA7B",orange:"#FFB86C",pink:"#FF79C6",purple:"#BD93F9",red:"#FF5555",yellow:"#F1FA8C"},Xn={primary:{50:"#FAF5FF",100:"#F3E8FF",200:"#E9D5FF",300:"#D8B4FE",400:"#BD93F9",500:"#BD93F9",600:"#A78BFA",700:"#8B5CF6",800:"#7C3AED",900:"#6D28D9"},secondary:{50:y[50],100:y[100],200:y[200],300:y[300],400:y[400],500:y[500],600:y[600],700:y[700],800:y[800],900:y[900]},success:{50:"#ECFDF5",100:"#D1FAE5",200:"#A7F3D0",300:"#6EE7B7",400:"#50FA7B",500:"#50FA7B",600:"#059669",700:"#047857",800:"#065F46",900:"#064E3B"},warning:{50:"#FEFCE8",100:"#FEF9C3",200:"#FEF08A",300:"#FDE047",400:"#F1FA8C",500:"#F1FA8C",600:"#CA8A04",700:"#A16207",800:"#854D0E",900:"#713F12"},danger:{50:"#FEF2F2",100:"#FEE2E2",200:"#FECACA",300:"#FCA5A5",400:"#FF5555",500:"#FF5555",600:"#DC2626",700:"#B91C1C",800:"#991B1B",900:"#7F1D1D"},neutral:{50:"#F8FAFC",100:"#F1F5F9",200:"#E2E8F0",300:"#CBD5E1",400:"#94A3B8",500:"#64748B",600:"#475569",700:"#334155",800:"#1E293B",900:"#0F172A"}},wR={name:"dracula",mode:"dark",meta:{version:"1.0.0",author:"tuiuiu",description:"Popular Dracula dark theme with purple accents"},palette:Xn,background:{lowest:"#21222C",base:P.background,subtle:P.currentLine,surface:"#4D4F5F",raised:"#565869",elevated:P.comment,popover:P.currentLine,overlay:"rgba(0, 0, 0, 0.7)"},foreground:{primary:P.foreground,secondary:"#E8E8E2",muted:P.comment,disabled:"#565869",inverse:{base:P.background,soft:"rgba(40, 42, 54, 0.8)",subtle:"rgba(40, 42, 54, 0.6)"}},accents:{positive:P.green,warning:P.yellow,critical:P.red,info:P.cyan,highlight:P.purple},states:{hover:{bg:"rgba(255, 255, 255, 0.1)",fg:null},active:{bg:"rgba(255, 255, 255, 0.2)"},focus:{border:P.purple,ring:{color:P.purple,width:2}},disabled:{opacity:.4,bg:P.currentLine,fg:"#565869"},selected:{bg:P.currentLine,fg:P.foreground}},borders:{default:P.comment,subtle:P.currentLine,strong:P.purple,accent:P.purple,danger:P.red},opacity:{disabled:.4,muted:.7,overlay:.7,ghost:.2},components:{button:{primary:{bg:P.purple,fg:P.foreground,hoverBg:"#CDA4FF",activeBg:"#A77EE8",border:"transparent"},secondary:{bg:P.currentLine,fg:P.foreground,hoverBg:"#565869",activeBg:"#4D4F5F",border:"transparent"},outline:{bg:"transparent",fg:P.purple,hoverBg:"rgba(189, 147, 249, 0.1)",activeBg:"rgba(189, 147, 249, 0.2)",border:P.purple},ghost:{bg:"transparent",fg:P.foreground,hoverBg:"rgba(255, 255, 255, 0.1)",activeBg:"rgba(255, 255, 255, 0.2)",border:"transparent"}},panel:{bg:P.currentLine,headerBg:"#4D4F5F",footerBg:"#4D4F5F",border:P.comment},menu:{bg:P.currentLine,border:P.comment,item:{fg:P.foreground,hoverBg:"#4D4F5F",activeBg:"#565869",selectedBg:"#4D4F5F",disabledFg:"#565869"}},tabs:{bg:P.currentLine,border:P.comment,tab:{fg:P.comment,activeFg:P.foreground,activeBg:P.background,hoverFg:"#E8E8E2",indicator:P.purple}},dropdown:{bg:P.currentLine,border:P.comment,item:{fg:P.foreground,hoverBg:"#4D4F5F",selectedBg:"#565869"}},input:{bg:P.currentLine,fg:P.foreground,placeholder:P.comment,border:P.comment,focusBorder:P.purple,invalidBorder:P.red},checkbox:{bg:P.currentLine,border:P.comment,checkColor:P.foreground,checkedBg:P.purple},radio:{bg:P.currentLine,dotColor:P.purple,border:P.comment,checkedBorder:P.purple},tooltip:{bg:"#4D4F5F",fg:P.foreground},modal:{bg:P.currentLine,border:P.comment,overlay:"rgba(0, 0, 0, 0.7)"},badge:{default:{bg:P.comment,fg:P.foreground},success:{bg:P.green,fg:P.background},warning:{bg:P.yellow,fg:P.background},danger:{bg:P.red,fg:"#ffffff"}},list:{item:{bg:"transparent",hoverBg:P.currentLine,selectedBg:"#4D4F5F",fg:P.foreground}},header:{default:{bg:P.currentLine,fg:P.foreground,titleFg:P.foreground,subtitleFg:P.comment,border:P.comment},primary:{bg:P.purple,fg:P.foreground,titleFg:P.foreground,subtitleFg:"rgba(248, 248, 242, 0.8)",border:"#A78BFA"},secondary:{bg:"#4D4F5F",fg:P.foreground,titleFg:P.foreground,subtitleFg:P.comment,border:"#565869"},success:{bg:P.green,fg:P.background,titleFg:P.background,subtitleFg:"rgba(40, 42, 54, 0.8)",border:"#059669"},warning:{bg:P.yellow,fg:P.background,titleFg:P.background,subtitleFg:"rgba(40, 42, 54, 0.7)",border:P.orange},danger:{bg:P.red,fg:"#ffffff",titleFg:"#ffffff",subtitleFg:"rgba(255, 255, 255, 0.8)",border:"#DC2626"}},statusbar:{default:{bg:P.currentLine,fg:P.comment},primary:{bg:P.purple,fg:P.foreground},info:{bg:P.cyan,fg:P.background},success:{bg:P.green,fg:P.background},warning:{bg:P.yellow,fg:P.background},danger:{bg:P.red,fg:"#ffffff"}},page:{default:{bg:P.background,titleFg:P.foreground,subtitleFg:P.comment,border:P.comment},primary:{bg:P.background,titleFg:P.purple,subtitleFg:P.comment,border:P.purple},secondary:{bg:P.background,titleFg:"#E8E8E2",subtitleFg:P.comment,border:P.currentLine}},appshell:{bg:"#21222C",dividerFg:P.comment,sidebarBg:P.background,asideBg:P.background},collapsible:{default:{headerBg:P.currentLine,headerFg:P.foreground,contentBg:P.background,border:P.comment,iconFg:P.comment},primary:{headerBg:"#4D4F5F",headerFg:P.purple,contentBg:P.background,border:P.purple,iconFg:P.purple},secondary:{headerBg:"#4D4F5F",headerFg:P.foreground,contentBg:P.currentLine,border:"#565869",iconFg:P.comment}},commandPalette:{bg:P.currentLine,border:P.comment,inputBg:P.background,inputFg:P.foreground,inputPlaceholder:P.comment,itemFg:P.foreground,itemHoverBg:"#4D4F5F",itemSelectedBg:"#565869",itemSelectedFg:P.foreground,highlightFg:P.purple,categoryFg:P.comment},splitPanel:{bg:P.background,dividerBg:P.comment,dividerHoverBg:"#4D4F5F",dividerActiveBg:P.purple,border:P.comment,titleFg:P.comment},toast:{success:{bg:Xn.success[900],fg:Xn.success[100],border:P.green,iconFg:P.green},error:{bg:Xn.danger[900],fg:Xn.danger[100],border:P.red,iconFg:P.red},warning:{bg:Xn.warning[900],fg:Xn.warning[100],border:P.yellow,iconFg:P.yellow},info:{bg:"#0E4A5C",fg:"#CFFAFE",border:P.cyan,iconFg:P.cyan}},window:{default:{bg:P.background,fg:P.foreground,titleBarBg:P.currentLine,titleBarFg:P.foreground,border:P.comment,buttonFg:P.comment,closeFg:P.red},primary:{bg:P.background,fg:P.foreground,titleBarBg:P.purple,titleBarFg:P.foreground,border:"#A78BFA",buttonFg:"rgba(248, 248, 242, 0.8)",closeFg:P.foreground},success:{bg:P.background,fg:P.foreground,titleBarBg:P.green,titleBarFg:P.background,border:"#059669",buttonFg:"rgba(40, 42, 54, 0.8)",closeFg:P.background},warning:{bg:P.background,fg:P.foreground,titleBarBg:P.yellow,titleBarFg:P.background,border:P.orange,buttonFg:"rgba(40, 42, 54, 0.8)",closeFg:P.background},danger:{bg:P.background,fg:P.foreground,titleBarBg:P.red,titleBarFg:"#ffffff",border:"#DC2626",buttonFg:"rgba(255, 255, 255, 0.8)",closeFg:"#ffffff"}}}};var x={nord0:"#2E3440",nord1:"#3B4252",nord2:"#434C5E",nord3:"#4C566A",nord4:"#D8DEE9",nord5:"#E5E9F0",nord6:"#ECEFF4",nord7:"#8FBCBB",nord8:"#88C0D0",nord9:"#81A1C1",nord10:"#5E81AC",nord11:"#BF616A",nord12:"#D08770",nord13:"#EBCB8B",nord14:"#A3BE8C",nord15:"#B48EAD"},Zn={primary:{50:"#F0F9FF",100:"#E0F2FE",200:"#BAE6FD",300:x.nord8,400:x.nord8,500:x.nord8,600:x.nord9,700:x.nord10,800:"#1E40AF",900:"#1E3A8A"},secondary:{50:y[50],100:y[100],200:y[200],300:y[300],400:y[400],500:y[500],600:y[600],700:y[700],800:y[800],900:y[900]},success:{50:"#F0FDF4",100:"#DCFCE7",200:"#BBF7D0",300:"#86EFAC",400:x.nord14,500:x.nord14,600:"#16A34A",700:"#15803D",800:"#166534",900:"#14532D"},warning:{50:"#FFFBEB",100:"#FEF3C7",200:"#FDE68A",300:x.nord13,400:x.nord13,500:x.nord13,600:"#D97706",700:"#B45309",800:"#92400E",900:"#78350F"},danger:{50:"#FEF2F2",100:"#FEE2E2",200:"#FECACA",300:"#FCA5A5",400:x.nord11,500:x.nord11,600:"#DC2626",700:"#B91C1C",800:"#991B1B",900:"#7F1D1D"},neutral:{50:x.nord6,100:x.nord5,200:x.nord4,300:"#A3ADB8",400:"#7A8694",500:x.nord3,600:x.nord2,700:x.nord1,800:x.nord0,900:"#242933"}},RR={name:"nord",mode:"dark",meta:{version:"1.0.0",author:"tuiuiu",description:"Arctic, bluish theme inspired by the nordics"},palette:Zn,background:{lowest:"#242933",base:x.nord0,subtle:x.nord1,surface:x.nord2,raised:x.nord3,elevated:"#5E6779",popover:x.nord1,overlay:"rgba(0, 0, 0, 0.6)"},foreground:{primary:x.nord6,secondary:x.nord5,muted:x.nord4,disabled:x.nord3,inverse:{base:x.nord0,soft:"rgba(46, 52, 64, 0.8)",subtle:"rgba(46, 52, 64, 0.6)"}},accents:{positive:x.nord14,warning:x.nord13,critical:x.nord11,info:x.nord9,highlight:x.nord8},states:{hover:{bg:"rgba(255, 255, 255, 0.08)",fg:null},active:{bg:"rgba(255, 255, 255, 0.15)"},focus:{border:x.nord8,ring:{color:x.nord8,width:2}},disabled:{opacity:.4,bg:x.nord1,fg:x.nord3},selected:{bg:x.nord1,fg:x.nord6}},borders:{default:x.nord3,subtle:x.nord1,strong:x.nord4,accent:x.nord8,danger:x.nord11},opacity:{disabled:.4,muted:.7,overlay:.6,ghost:.2},components:{button:{primary:{bg:x.nord8,fg:x.nord0,hoverBg:"#9CD0DF",activeBg:"#6FAFBF",border:"transparent"},secondary:{bg:x.nord2,fg:x.nord6,hoverBg:x.nord3,activeBg:x.nord1,border:"transparent"},outline:{bg:"transparent",fg:x.nord8,hoverBg:"rgba(136, 192, 208, 0.1)",activeBg:"rgba(136, 192, 208, 0.2)",border:x.nord8},ghost:{bg:"transparent",fg:x.nord6,hoverBg:"rgba(255, 255, 255, 0.08)",activeBg:"rgba(255, 255, 255, 0.15)",border:"transparent"}},panel:{bg:x.nord1,headerBg:x.nord2,footerBg:x.nord2,border:x.nord3},menu:{bg:x.nord1,border:x.nord3,item:{fg:x.nord6,hoverBg:x.nord2,activeBg:x.nord3,selectedBg:x.nord2,disabledFg:x.nord3}},tabs:{bg:x.nord1,border:x.nord3,tab:{fg:x.nord4,activeFg:x.nord6,activeBg:x.nord0,hoverFg:x.nord5,indicator:x.nord8}},dropdown:{bg:x.nord1,border:x.nord3,item:{fg:x.nord6,hoverBg:x.nord2,selectedBg:x.nord3}},input:{bg:x.nord1,fg:x.nord6,placeholder:x.nord4,border:x.nord3,focusBorder:x.nord8,invalidBorder:x.nord11},checkbox:{bg:x.nord1,border:x.nord3,checkColor:x.nord0,checkedBg:x.nord8},radio:{bg:x.nord1,dotColor:x.nord8,border:x.nord3,checkedBorder:x.nord8},tooltip:{bg:x.nord2,fg:x.nord6},modal:{bg:x.nord1,border:x.nord3,overlay:"rgba(0, 0, 0, 0.6)"},badge:{default:{bg:x.nord3,fg:x.nord6},success:{bg:x.nord14,fg:x.nord0},warning:{bg:x.nord13,fg:x.nord0},danger:{bg:x.nord11,fg:"#ffffff"}},list:{item:{bg:"transparent",hoverBg:x.nord1,selectedBg:x.nord2,fg:x.nord6}},header:{default:{bg:x.nord1,fg:x.nord6,titleFg:x.nord6,subtitleFg:x.nord4,border:x.nord3},primary:{bg:x.nord8,fg:x.nord0,titleFg:x.nord0,subtitleFg:"rgba(46, 52, 64, 0.8)",border:x.nord9},secondary:{bg:x.nord2,fg:x.nord6,titleFg:x.nord6,subtitleFg:x.nord4,border:x.nord3},success:{bg:x.nord14,fg:x.nord0,titleFg:x.nord0,subtitleFg:"rgba(46, 52, 64, 0.8)",border:"#16A34A"},warning:{bg:x.nord13,fg:x.nord0,titleFg:x.nord0,subtitleFg:"rgba(46, 52, 64, 0.7)",border:x.nord12},danger:{bg:x.nord11,fg:"#ffffff",titleFg:"#ffffff",subtitleFg:"rgba(255, 255, 255, 0.8)",border:"#DC2626"}},statusbar:{default:{bg:x.nord1,fg:x.nord4},primary:{bg:x.nord8,fg:x.nord0},info:{bg:x.nord9,fg:"#ffffff"},success:{bg:x.nord14,fg:x.nord0},warning:{bg:x.nord13,fg:x.nord0},danger:{bg:x.nord11,fg:"#ffffff"}},page:{default:{bg:x.nord0,titleFg:x.nord6,subtitleFg:x.nord4,border:x.nord3},primary:{bg:x.nord0,titleFg:x.nord8,subtitleFg:x.nord4,border:x.nord8},secondary:{bg:x.nord0,titleFg:x.nord5,subtitleFg:x.nord4,border:x.nord1}},appshell:{bg:"#242933",dividerFg:x.nord3,sidebarBg:x.nord0,asideBg:x.nord0},collapsible:{default:{headerBg:x.nord1,headerFg:x.nord6,contentBg:x.nord0,border:x.nord3,iconFg:x.nord4},primary:{headerBg:x.nord2,headerFg:x.nord8,contentBg:x.nord0,border:x.nord8,iconFg:x.nord8},secondary:{headerBg:x.nord2,headerFg:x.nord6,contentBg:x.nord1,border:x.nord3,iconFg:x.nord4}},commandPalette:{bg:x.nord1,border:x.nord3,inputBg:x.nord0,inputFg:x.nord6,inputPlaceholder:x.nord4,itemFg:x.nord6,itemHoverBg:x.nord2,itemSelectedBg:x.nord3,itemSelectedFg:x.nord6,highlightFg:x.nord8,categoryFg:x.nord4},splitPanel:{bg:x.nord0,dividerBg:x.nord3,dividerHoverBg:x.nord2,dividerActiveBg:x.nord8,border:x.nord3,titleFg:x.nord4},toast:{success:{bg:Zn.success[900],fg:Zn.success[100],border:x.nord14,iconFg:x.nord14},error:{bg:Zn.danger[900],fg:Zn.danger[100],border:x.nord11,iconFg:x.nord11},warning:{bg:Zn.warning[900],fg:Zn.warning[100],border:x.nord13,iconFg:x.nord13},info:{bg:"#0C4A6E",fg:"#E0F2FE",border:x.nord9,iconFg:x.nord9}},window:{default:{bg:x.nord0,fg:x.nord6,titleBarBg:x.nord1,titleBarFg:x.nord6,border:x.nord3,buttonFg:x.nord4,closeFg:x.nord11},primary:{bg:x.nord0,fg:x.nord6,titleBarBg:x.nord8,titleBarFg:x.nord0,border:x.nord9,buttonFg:"rgba(46, 52, 64, 0.8)",closeFg:x.nord0},success:{bg:x.nord0,fg:x.nord6,titleBarBg:x.nord14,titleBarFg:x.nord0,border:"#16A34A",buttonFg:"rgba(46, 52, 64, 0.8)",closeFg:x.nord0},warning:{bg:x.nord0,fg:x.nord6,titleBarBg:x.nord13,titleBarFg:x.nord0,border:x.nord12,buttonFg:"rgba(46, 52, 64, 0.8)",closeFg:x.nord0},danger:{bg:x.nord0,fg:x.nord6,titleBarBg:x.nord11,titleBarFg:"#ffffff",border:"#DC2626",buttonFg:"rgba(255, 255, 255, 0.8)",closeFg:"#ffffff"}}}};var S={base03:"#002B36",base02:"#073642",base01:"#586E75",base00:"#657B83",base0:"#839496",base1:"#93A1A1",base2:"#EEE8D5",base3:"#FDF6E3",yellow:"#B58900",orange:"#CB4B16",red:"#DC322F",magenta:"#D33682",violet:"#6C71C4",blue:"#268BD2",cyan:"#2AA198",green:"#859900"},eo={primary:{50:"#F0F9FF",100:"#E0F2FE",200:"#BAE6FD",300:"#7DD3FC",400:S.blue,500:S.blue,600:"#0284C7",700:"#0369A1",800:"#075985",900:"#0C4A6E"},secondary:{50:y[50],100:y[100],200:y[200],300:y[300],400:y[400],500:y[500],600:y[600],700:y[700],800:y[800],900:y[900]},success:{50:"#F7FEE7",100:"#ECFCCB",200:"#D9F99D",300:"#BEF264",400:S.green,500:S.green,600:"#65A30D",700:"#4D7C0F",800:"#3F6212",900:"#365314"},warning:{50:"#FFFBEB",100:"#FEF3C7",200:"#FDE68A",300:"#FCD34D",400:S.yellow,500:S.yellow,600:"#D97706",700:"#B45309",800:"#92400E",900:"#78350F"},danger:{50:"#FEF2F2",100:"#FEE2E2",200:"#FECACA",300:"#FCA5A5",400:S.red,500:S.red,600:"#DC2626",700:"#B91C1C",800:"#991B1B",900:"#7F1D1D"},neutral:{50:S.base3,100:S.base2,200:S.base1,300:S.base0,400:S.base00,500:S.base01,600:"#4A5A60",700:S.base02,800:S.base03,900:"#001E26"}},_R={name:"solarized-dark",mode:"dark",meta:{version:"1.0.0",author:"tuiuiu",description:"Popular Solarized dark theme with blue-tinted background"},palette:eo,background:{lowest:"#001E26",base:S.base03,subtle:S.base02,surface:"#094652",raised:"#0B5A66",elevated:S.base01,popover:S.base02,overlay:"rgba(0, 0, 0, 0.6)"},foreground:{primary:S.base0,secondary:S.base1,muted:S.base00,disabled:S.base01,inverse:{base:S.base3,soft:"rgba(253, 246, 227, 0.8)",subtle:"rgba(253, 246, 227, 0.6)"}},accents:{positive:S.green,warning:S.yellow,critical:S.red,info:S.cyan,highlight:S.blue},states:{hover:{bg:"rgba(255, 255, 255, 0.08)",fg:null},active:{bg:"rgba(255, 255, 255, 0.15)"},focus:{border:S.blue,ring:{color:S.blue,width:2}},disabled:{opacity:.4,bg:S.base02,fg:S.base01},selected:{bg:S.base02,fg:S.base1}},borders:{default:S.base01,subtle:S.base02,strong:S.base0,accent:S.blue,danger:S.red},opacity:{disabled:.4,muted:.7,overlay:.6,ghost:.2},components:{button:{primary:{bg:S.blue,fg:S.base3,hoverBg:"#3A9BE3",activeBg:"#1F7ABF",border:"transparent"},secondary:{bg:S.base02,fg:S.base1,hoverBg:"#094652",activeBg:S.base03,border:"transparent"},outline:{bg:"transparent",fg:S.blue,hoverBg:"rgba(38, 139, 210, 0.1)",activeBg:"rgba(38, 139, 210, 0.2)",border:S.blue},ghost:{bg:"transparent",fg:S.base0,hoverBg:"rgba(255, 255, 255, 0.08)",activeBg:"rgba(255, 255, 255, 0.15)",border:"transparent"}},panel:{bg:S.base02,headerBg:"#094652",footerBg:"#094652",border:S.base01},menu:{bg:S.base02,border:S.base01,item:{fg:S.base0,hoverBg:"#094652",activeBg:"#0B5A66",selectedBg:"#094652",disabledFg:S.base01}},tabs:{bg:S.base02,border:S.base01,tab:{fg:S.base00,activeFg:S.base1,activeBg:S.base03,hoverFg:S.base0,indicator:S.blue}},dropdown:{bg:S.base02,border:S.base01,item:{fg:S.base0,hoverBg:"#094652",selectedBg:"#0B5A66"}},input:{bg:S.base02,fg:S.base0,placeholder:S.base00,border:S.base01,focusBorder:S.blue,invalidBorder:S.red},checkbox:{bg:S.base02,border:S.base01,checkColor:S.base3,checkedBg:S.blue},radio:{bg:S.base02,dotColor:S.blue,border:S.base01,checkedBorder:S.blue},tooltip:{bg:"#094652",fg:S.base1},modal:{bg:S.base02,border:S.base01,overlay:"rgba(0, 0, 0, 0.6)"},badge:{default:{bg:S.base01,fg:S.base1},success:{bg:S.green,fg:S.base3},warning:{bg:S.yellow,fg:S.base03},danger:{bg:S.red,fg:"#ffffff"}},list:{item:{bg:"transparent",hoverBg:S.base02,selectedBg:"#094652",fg:S.base0}},header:{default:{bg:S.base02,fg:S.base0,titleFg:S.base1,subtitleFg:S.base00,border:S.base01},primary:{bg:S.blue,fg:S.base3,titleFg:S.base3,subtitleFg:"rgba(253, 246, 227, 0.8)",border:"#0284C7"},secondary:{bg:"#094652",fg:S.base0,titleFg:S.base1,subtitleFg:S.base00,border:"#0B5A66"},success:{bg:S.green,fg:S.base3,titleFg:S.base3,subtitleFg:"rgba(253, 246, 227, 0.8)",border:"#65A30D"},warning:{bg:S.yellow,fg:S.base03,titleFg:S.base03,subtitleFg:"rgba(0, 43, 54, 0.7)",border:S.orange},danger:{bg:S.red,fg:"#ffffff",titleFg:"#ffffff",subtitleFg:"rgba(255, 255, 255, 0.8)",border:"#DC2626"}},statusbar:{default:{bg:S.base02,fg:S.base00},primary:{bg:S.blue,fg:S.base3},info:{bg:S.cyan,fg:S.base03},success:{bg:S.green,fg:S.base3},warning:{bg:S.yellow,fg:S.base03},danger:{bg:S.red,fg:"#ffffff"}},page:{default:{bg:S.base03,titleFg:S.base1,subtitleFg:S.base00,border:S.base01},primary:{bg:S.base03,titleFg:S.blue,subtitleFg:S.base00,border:S.blue},secondary:{bg:S.base03,titleFg:S.base0,subtitleFg:S.base00,border:S.base02}},appshell:{bg:"#001E26",dividerFg:S.base01,sidebarBg:S.base03,asideBg:S.base03},collapsible:{default:{headerBg:S.base02,headerFg:S.base1,contentBg:S.base03,border:S.base01,iconFg:S.base00},primary:{headerBg:"#094652",headerFg:S.blue,contentBg:S.base03,border:S.blue,iconFg:S.blue},secondary:{headerBg:"#094652",headerFg:S.base1,contentBg:S.base02,border:"#0B5A66",iconFg:S.base00}},commandPalette:{bg:S.base02,border:S.base01,inputBg:S.base03,inputFg:S.base0,inputPlaceholder:S.base00,itemFg:S.base0,itemHoverBg:"#094652",itemSelectedBg:"#0B5A66",itemSelectedFg:S.base1,highlightFg:S.blue,categoryFg:S.base00},splitPanel:{bg:S.base03,dividerBg:S.base01,dividerHoverBg:"#094652",dividerActiveBg:S.blue,border:S.base01,titleFg:S.base00},toast:{success:{bg:eo.success[900],fg:eo.success[100],border:S.green,iconFg:S.green},error:{bg:eo.danger[900],fg:eo.danger[100],border:S.red,iconFg:S.red},warning:{bg:eo.warning[900],fg:eo.warning[100],border:S.yellow,iconFg:S.yellow},info:{bg:"#0C4A6E",fg:"#E0F2FE",border:S.cyan,iconFg:S.cyan}},window:{default:{bg:S.base03,fg:S.base0,titleBarBg:S.base02,titleBarFg:S.base1,border:S.base01,buttonFg:S.base00,closeFg:S.red},primary:{bg:S.base03,fg:S.base0,titleBarBg:S.blue,titleBarFg:S.base3,border:"#0284C7",buttonFg:"rgba(253, 246, 227, 0.8)",closeFg:S.base3},success:{bg:S.base03,fg:S.base0,titleBarBg:S.green,titleBarFg:S.base3,border:"#65A30D",buttonFg:"rgba(253, 246, 227, 0.8)",closeFg:S.base3},warning:{bg:S.base03,fg:S.base0,titleBarBg:S.yellow,titleBarFg:S.base03,border:S.orange,buttonFg:"rgba(0, 43, 54, 0.8)",closeFg:S.base03},danger:{bg:S.base03,fg:S.base0,titleBarBg:S.red,titleBarFg:"#ffffff",border:"#DC2626",buttonFg:"rgba(255, 255, 255, 0.8)",closeFg:"#ffffff"}}}};var R={bg0_h:"#1D2021",bg0:"#282828",bg1:"#3C3836",bg2:"#504945",bg3:"#665C54",bg4:"#7C6F64",fg0:"#FBF1C7",fg1:"#EBDBB2",fg2:"#D5C4A1",fg3:"#BDAE93",fg4:"#A89984",red:"#FB4934",green:"#B8BB26",yellow:"#FABD2F",blue:"#83A598",purple:"#D3869B",aqua:"#8EC07C",orange:"#FE8019",gray:"#928374"},to={primary:{50:"#F7FEE7",100:"#ECFCCB",200:"#D9F99D",300:"#BEF264",400:R.green,500:R.green,600:"#84CC16",700:"#65A30D",800:"#4D7C0F",900:"#3F6212"},secondary:{50:He[50],100:He[100],200:He[200],300:He[300],400:He[400],500:He[500],600:He[600],700:He[700],800:He[800],900:He[900]},success:{50:"#F7FEE7",100:"#ECFCCB",200:"#D9F99D",300:"#BEF264",400:R.green,500:R.green,600:"#84CC16",700:"#65A30D",800:"#4D7C0F",900:"#3F6212"},warning:{50:"#FFFBEB",100:"#FEF3C7",200:"#FDE68A",300:"#FCD34D",400:R.yellow,500:R.yellow,600:"#D97706",700:"#B45309",800:"#92400E",900:"#78350F"},danger:{50:"#FEF2F2",100:"#FEE2E2",200:"#FECACA",300:"#FCA5A5",400:R.red,500:R.red,600:"#DC2626",700:"#B91C1C",800:"#991B1B",900:"#7F1D1D"},neutral:{50:R.fg0,100:R.fg1,200:R.fg2,300:R.fg3,400:R.fg4,500:R.gray,600:R.bg4,700:R.bg3,800:R.bg2,900:R.bg1}},xR={name:"gruvbox",mode:"dark",meta:{version:"1.0.0",author:"tuiuiu",description:"Warm retro Gruvbox theme with earthy colors"},palette:to,background:{lowest:R.bg0_h,base:R.bg0,subtle:R.bg1,surface:R.bg2,raised:R.bg3,elevated:R.bg4,popover:R.bg1,overlay:"rgba(0, 0, 0, 0.65)"},foreground:{primary:R.fg1,secondary:R.fg2,muted:R.gray,disabled:R.bg3,inverse:{base:R.bg0,soft:"rgba(40, 40, 40, 0.8)",subtle:"rgba(40, 40, 40, 0.6)"}},accents:{positive:R.green,warning:R.yellow,critical:R.red,info:R.blue,highlight:R.green},states:{hover:{bg:"rgba(255, 255, 255, 0.08)",fg:null},active:{bg:"rgba(255, 255, 255, 0.15)"},focus:{border:R.green,ring:{color:R.green,width:2}},disabled:{opacity:.4,bg:R.bg1,fg:R.bg3},selected:{bg:R.bg2,fg:R.fg1}},borders:{default:R.bg3,subtle:R.bg2,strong:R.gray,accent:R.green,danger:R.red},opacity:{disabled:.4,muted:.7,overlay:.65,ghost:.2},components:{button:{primary:{bg:R.green,fg:R.bg0,hoverBg:"#C9CC38",activeBg:"#A6A91E",border:"transparent"},secondary:{bg:R.bg2,fg:R.fg1,hoverBg:R.bg3,activeBg:R.bg1,border:"transparent"},outline:{bg:"transparent",fg:R.green,hoverBg:"rgba(184, 187, 38, 0.1)",activeBg:"rgba(184, 187, 38, 0.2)",border:R.green},ghost:{bg:"transparent",fg:R.fg1,hoverBg:"rgba(255, 255, 255, 0.08)",activeBg:"rgba(255, 255, 255, 0.15)",border:"transparent"}},panel:{bg:R.bg1,headerBg:R.bg2,footerBg:R.bg2,border:R.bg3},menu:{bg:R.bg1,border:R.bg3,item:{fg:R.fg1,hoverBg:R.bg2,activeBg:R.bg3,selectedBg:R.bg2,disabledFg:R.bg3}},tabs:{bg:R.bg1,border:R.bg3,tab:{fg:R.gray,activeFg:R.fg1,activeBg:R.bg0,hoverFg:R.fg2,indicator:R.green}},dropdown:{bg:R.bg1,border:R.bg3,item:{fg:R.fg1,hoverBg:R.bg2,selectedBg:R.bg3}},input:{bg:R.bg1,fg:R.fg1,placeholder:R.gray,border:R.bg3,focusBorder:R.green,invalidBorder:R.red},checkbox:{bg:R.bg1,border:R.bg3,checkColor:R.bg0,checkedBg:R.green},radio:{bg:R.bg1,dotColor:R.green,border:R.bg3,checkedBorder:R.green},tooltip:{bg:R.bg2,fg:R.fg1},modal:{bg:R.bg1,border:R.bg3,overlay:"rgba(0, 0, 0, 0.65)"},badge:{default:{bg:R.bg3,fg:R.fg1},success:{bg:R.green,fg:R.bg0},warning:{bg:R.yellow,fg:R.bg0},danger:{bg:R.red,fg:"#ffffff"}},list:{item:{bg:"transparent",hoverBg:R.bg1,selectedBg:R.bg2,fg:R.fg1}},header:{default:{bg:R.bg1,fg:R.fg1,titleFg:R.fg1,subtitleFg:R.gray,border:R.bg3},primary:{bg:R.green,fg:R.bg0,titleFg:R.bg0,subtitleFg:"rgba(40, 40, 40, 0.8)",border:"#84CC16"},secondary:{bg:R.bg2,fg:R.fg1,titleFg:R.fg1,subtitleFg:R.gray,border:R.bg3},success:{bg:R.green,fg:R.bg0,titleFg:R.bg0,subtitleFg:"rgba(40, 40, 40, 0.8)",border:"#84CC16"},warning:{bg:R.yellow,fg:R.bg0,titleFg:R.bg0,subtitleFg:"rgba(40, 40, 40, 0.7)",border:R.orange},danger:{bg:R.red,fg:"#ffffff",titleFg:"#ffffff",subtitleFg:"rgba(255, 255, 255, 0.8)",border:"#DC2626"}},statusbar:{default:{bg:R.bg1,fg:R.gray},primary:{bg:R.green,fg:R.bg0},info:{bg:R.blue,fg:R.bg0},success:{bg:R.green,fg:R.bg0},warning:{bg:R.yellow,fg:R.bg0},danger:{bg:R.red,fg:"#ffffff"}},page:{default:{bg:R.bg0,titleFg:R.fg1,subtitleFg:R.gray,border:R.bg3},primary:{bg:R.bg0,titleFg:R.green,subtitleFg:R.gray,border:R.green},secondary:{bg:R.bg0,titleFg:R.fg2,subtitleFg:R.gray,border:R.bg2}},appshell:{bg:R.bg0_h,dividerFg:R.bg3,sidebarBg:R.bg0,asideBg:R.bg0},collapsible:{default:{headerBg:R.bg1,headerFg:R.fg1,contentBg:R.bg0,border:R.bg3,iconFg:R.gray},primary:{headerBg:R.bg2,headerFg:R.green,contentBg:R.bg0,border:R.green,iconFg:R.green},secondary:{headerBg:R.bg2,headerFg:R.fg1,contentBg:R.bg1,border:R.bg3,iconFg:R.gray}},commandPalette:{bg:R.bg1,border:R.bg3,inputBg:R.bg0,inputFg:R.fg1,inputPlaceholder:R.gray,itemFg:R.fg1,itemHoverBg:R.bg2,itemSelectedBg:R.bg3,itemSelectedFg:R.fg1,highlightFg:R.green,categoryFg:R.gray},splitPanel:{bg:R.bg0,dividerBg:R.bg3,dividerHoverBg:R.bg2,dividerActiveBg:R.green,border:R.bg3,titleFg:R.gray},toast:{success:{bg:to.success[900],fg:to.success[100],border:R.green,iconFg:R.green},error:{bg:to.danger[900],fg:to.danger[100],border:R.red,iconFg:R.red},warning:{bg:to.warning[900],fg:to.warning[100],border:R.yellow,iconFg:R.yellow},info:{bg:"#0C4A6E",fg:"#E0F2FE",border:R.blue,iconFg:R.blue}},window:{default:{bg:R.bg0,fg:R.fg1,titleBarBg:R.bg1,titleBarFg:R.fg1,border:R.bg3,buttonFg:R.gray,closeFg:R.red},primary:{bg:R.bg0,fg:R.fg1,titleBarBg:R.green,titleBarFg:R.bg0,border:"#84CC16",buttonFg:"rgba(40, 40, 40, 0.8)",closeFg:R.bg0},success:{bg:R.bg0,fg:R.fg1,titleBarBg:R.green,titleBarFg:R.bg0,border:"#84CC16",buttonFg:"rgba(40, 40, 40, 0.8)",closeFg:R.bg0},warning:{bg:R.bg0,fg:R.fg1,titleBarBg:R.yellow,titleBarFg:R.bg0,border:R.orange,buttonFg:"rgba(40, 40, 40, 0.8)",closeFg:R.bg0},danger:{bg:R.bg0,fg:R.fg1,titleBarBg:R.red,titleBarFg:"#ffffff",border:"#DC2626",buttonFg:"rgba(255, 255, 255, 0.8)",closeFg:"#ffffff"}}}};var E={bg:"#1A1B26",bgDark:"#16161E",bgHighlight:"#24283B",bgPopup:"#2F3549",fg:"#A9B1D6",fgDark:"#9AA5CE",blue:"#7AA2F7",cyan:"#7DCFFF",green:"#9ECE6A",magenta:"#BB9AF7",orange:"#FF9E64",purple:"#9D7CD8",red:"#F7768E",teal:"#73DACA",yellow:"#E0AF68",comment:"#565F89",dark3:"#414868",dark5:"#737AA2"},ro={primary:{50:"#EFF6FF",100:"#DBEAFE",200:"#BFDBFE",300:"#93C5FD",400:E.blue,500:E.blue,600:"#2563EB",700:"#1D4ED8",800:"#1E40AF",900:"#1E3A8A"},secondary:{50:y[50],100:y[100],200:y[200],300:y[300],400:y[400],500:y[500],600:y[600],700:y[700],800:y[800],900:y[900]},success:{50:"#F7FEE7",100:"#ECFCCB",200:"#D9F99D",300:"#BEF264",400:E.green,500:E.green,600:"#65A30D",700:"#4D7C0F",800:"#3F6212",900:"#365314"},warning:{50:"#FFFBEB",100:"#FEF3C7",200:"#FDE68A",300:"#FCD34D",400:E.yellow,500:E.yellow,600:"#D97706",700:"#B45309",800:"#92400E",900:"#78350F"},danger:{50:"#FFF1F2",100:"#FFE4E6",200:"#FECDD3",300:"#FDA4AF",400:E.red,500:E.red,600:"#E11D48",700:"#BE123C",800:"#9F1239",900:"#881337"},neutral:{50:"#F8FAFC",100:"#F1F5F9",200:"#E2E8F0",300:"#CBD5E1",400:"#94A3B8",500:"#64748B",600:"#475569",700:"#334155",800:"#1E293B",900:"#0F172A"}},ER={name:"tokyo-night",mode:"dark",meta:{version:"1.0.0",author:"tuiuiu",description:"Modern Tokyo Night theme with vibrant colors"},palette:ro,background:{lowest:E.bgDark,base:E.bg,subtle:E.bgHighlight,surface:E.bgPopup,raised:E.dark3,elevated:E.comment,popover:E.bgHighlight,overlay:"rgba(0, 0, 0, 0.7)"},foreground:{primary:E.fg,secondary:E.fgDark,muted:E.comment,disabled:E.dark3,inverse:{base:E.bg,soft:"rgba(26, 27, 38, 0.8)",subtle:"rgba(26, 27, 38, 0.6)"}},accents:{positive:E.green,warning:E.yellow,critical:E.red,info:E.cyan,highlight:E.blue},states:{hover:{bg:"rgba(255, 255, 255, 0.08)",fg:null},active:{bg:"rgba(255, 255, 255, 0.15)"},focus:{border:E.blue,ring:{color:E.blue,width:2}},disabled:{opacity:.4,bg:E.bgHighlight,fg:E.dark3},selected:{bg:E.bgHighlight,fg:E.fg}},borders:{default:E.dark3,subtle:E.bgHighlight,strong:E.comment,accent:E.blue,danger:E.red},opacity:{disabled:.4,muted:.7,overlay:.7,ghost:.2},components:{button:{primary:{bg:E.blue,fg:E.bg,hoverBg:"#8BB3FF",activeBg:"#6691E8",border:"transparent"},secondary:{bg:E.bgHighlight,fg:E.fg,hoverBg:E.bgPopup,activeBg:E.dark3,border:"transparent"},outline:{bg:"transparent",fg:E.blue,hoverBg:"rgba(122, 162, 247, 0.1)",activeBg:"rgba(122, 162, 247, 0.2)",border:E.blue},ghost:{bg:"transparent",fg:E.fg,hoverBg:"rgba(255, 255, 255, 0.08)",activeBg:"rgba(255, 255, 255, 0.15)",border:"transparent"}},panel:{bg:E.bgHighlight,headerBg:E.bgPopup,footerBg:E.bgPopup,border:E.dark3},menu:{bg:E.bgHighlight,border:E.dark3,item:{fg:E.fg,hoverBg:E.bgPopup,activeBg:E.dark3,selectedBg:E.bgPopup,disabledFg:E.dark3}},tabs:{bg:E.bgHighlight,border:E.dark3,tab:{fg:E.comment,activeFg:E.fg,activeBg:E.bg,hoverFg:E.fgDark,indicator:E.blue}},dropdown:{bg:E.bgHighlight,border:E.dark3,item:{fg:E.fg,hoverBg:E.bgPopup,selectedBg:E.dark3}},input:{bg:E.bgHighlight,fg:E.fg,placeholder:E.comment,border:E.dark3,focusBorder:E.blue,invalidBorder:E.red},checkbox:{bg:E.bgHighlight,border:E.dark3,checkColor:E.bg,checkedBg:E.blue},radio:{bg:E.bgHighlight,dotColor:E.blue,border:E.dark3,checkedBorder:E.blue},tooltip:{bg:E.bgPopup,fg:E.fg},modal:{bg:E.bgHighlight,border:E.dark3,overlay:"rgba(0, 0, 0, 0.7)"},badge:{default:{bg:E.dark3,fg:E.fg},success:{bg:E.green,fg:E.bg},warning:{bg:E.yellow,fg:E.bg},danger:{bg:E.red,fg:"#ffffff"}},list:{item:{bg:"transparent",hoverBg:E.bgHighlight,selectedBg:E.bgPopup,fg:E.fg}},header:{default:{bg:E.bgHighlight,fg:E.fg,titleFg:E.fg,subtitleFg:E.comment,border:E.dark3},primary:{bg:E.blue,fg:E.bg,titleFg:E.bg,subtitleFg:"rgba(26, 27, 38, 0.8)",border:"#2563EB"},secondary:{bg:E.bgPopup,fg:E.fg,titleFg:E.fg,subtitleFg:E.comment,border:E.dark3},success:{bg:E.green,fg:E.bg,titleFg:E.bg,subtitleFg:"rgba(26, 27, 38, 0.8)",border:"#65A30D"},warning:{bg:E.yellow,fg:E.bg,titleFg:E.bg,subtitleFg:"rgba(26, 27, 38, 0.7)",border:E.orange},danger:{bg:E.red,fg:"#ffffff",titleFg:"#ffffff",subtitleFg:"rgba(255, 255, 255, 0.8)",border:"#E11D48"}},statusbar:{default:{bg:E.bgHighlight,fg:E.comment},primary:{bg:E.blue,fg:E.bg},info:{bg:E.cyan,fg:E.bg},success:{bg:E.green,fg:E.bg},warning:{bg:E.yellow,fg:E.bg},danger:{bg:E.red,fg:"#ffffff"}},page:{default:{bg:E.bg,titleFg:E.fg,subtitleFg:E.comment,border:E.dark3},primary:{bg:E.bg,titleFg:E.blue,subtitleFg:E.comment,border:E.blue},secondary:{bg:E.bg,titleFg:E.fgDark,subtitleFg:E.comment,border:E.bgHighlight}},appshell:{bg:E.bgDark,dividerFg:E.dark3,sidebarBg:E.bg,asideBg:E.bg},collapsible:{default:{headerBg:E.bgHighlight,headerFg:E.fg,contentBg:E.bg,border:E.dark3,iconFg:E.comment},primary:{headerBg:E.bgPopup,headerFg:E.blue,contentBg:E.bg,border:E.blue,iconFg:E.blue},secondary:{headerBg:E.bgPopup,headerFg:E.fg,contentBg:E.bgHighlight,border:E.dark3,iconFg:E.comment}},commandPalette:{bg:E.bgHighlight,border:E.dark3,inputBg:E.bg,inputFg:E.fg,inputPlaceholder:E.comment,itemFg:E.fg,itemHoverBg:E.bgPopup,itemSelectedBg:E.dark3,itemSelectedFg:E.fg,highlightFg:E.blue,categoryFg:E.comment},splitPanel:{bg:E.bg,dividerBg:E.dark3,dividerHoverBg:E.bgPopup,dividerActiveBg:E.blue,border:E.dark3,titleFg:E.comment},toast:{success:{bg:ro.success[900],fg:ro.success[100],border:E.green,iconFg:E.green},error:{bg:ro.danger[900],fg:ro.danger[100],border:E.red,iconFg:E.red},warning:{bg:ro.warning[900],fg:ro.warning[100],border:E.yellow,iconFg:E.yellow},info:{bg:"#0C4A6E",fg:"#E0F2FE",border:E.cyan,iconFg:E.cyan}},window:{default:{bg:E.bg,fg:E.fg,titleBarBg:E.bgHighlight,titleBarFg:E.fg,border:E.dark3,buttonFg:E.comment,closeFg:E.red},primary:{bg:E.bg,fg:E.fg,titleBarBg:E.blue,titleBarFg:E.bg,border:"#2563EB",buttonFg:"rgba(26, 27, 38, 0.8)",closeFg:E.bg},success:{bg:E.bg,fg:E.fg,titleBarBg:E.green,titleBarFg:E.bg,border:"#65A30D",buttonFg:"rgba(26, 27, 38, 0.8)",closeFg:E.bg},warning:{bg:E.bg,fg:E.fg,titleBarBg:E.yellow,titleBarFg:E.bg,border:E.orange,buttonFg:"rgba(26, 27, 38, 0.8)",closeFg:E.bg},danger:{bg:E.bg,fg:E.fg,titleBarBg:E.red,titleBarFg:"#ffffff",border:"#E11D48",buttonFg:"rgba(255, 255, 255, 0.8)",closeFg:"#ffffff"}}}};var _={base:"#1E1E2E",mantle:"#181825",crust:"#11111B",surface0:"#313244",surface1:"#45475A",surface2:"#585B70",overlay0:"#6C7086",overlay1:"#7F849C",overlay2:"#9399B2",text:"#CDD6F4",subtext1:"#BAC2DE",subtext0:"#A6ADC8",rosewater:"#F5E0DC",flamingo:"#F2CDCD",pink:"#F5C2E7",mauve:"#CBA6F7",red:"#F38BA8",maroon:"#EBA0AC",peach:"#FAB387",yellow:"#F9E2AF",green:"#A6E3A1",teal:"#94E2D5",sky:"#89DCEB",sapphire:"#74C7EC",blue:"#89B4FA",lavender:"#B4BEFE"},no={primary:{50:"#FAF5FF",100:"#F3E8FF",200:"#E9D5FF",300:"#D8B4FE",400:_.mauve,500:_.mauve,600:"#A78BFA",700:"#8B5CF6",800:"#7C3AED",900:"#6D28D9"},secondary:{50:y[50],100:y[100],200:y[200],300:y[300],400:y[400],500:y[500],600:y[600],700:y[700],800:y[800],900:y[900]},success:{50:"#F0FDF4",100:"#DCFCE7",200:"#BBF7D0",300:"#86EFAC",400:_.green,500:_.green,600:"#16A34A",700:"#15803D",800:"#166534",900:"#14532D"},warning:{50:"#FFFBEB",100:"#FEF3C7",200:"#FDE68A",300:"#FCD34D",400:_.yellow,500:_.yellow,600:"#D97706",700:"#B45309",800:"#92400E",900:"#78350F"},danger:{50:"#FFF1F2",100:"#FFE4E6",200:"#FECDD3",300:"#FDA4AF",400:_.red,500:_.red,600:"#E11D48",700:"#BE123C",800:"#9F1239",900:"#881337"},neutral:{50:_.text,100:_.subtext1,200:_.subtext0,300:_.overlay2,400:_.overlay1,500:_.overlay0,600:_.surface2,700:_.surface1,800:_.surface0,900:_.base}},vR={name:"catppuccin",mode:"dark",meta:{version:"1.0.0",author:"tuiuiu",description:"Soothing Catppuccin Mocha pastel theme"},palette:no,background:{lowest:_.crust,base:_.base,subtle:_.surface0,surface:_.surface1,raised:_.surface2,elevated:_.overlay0,popover:_.surface0,overlay:"rgba(0, 0, 0, 0.65)"},foreground:{primary:_.text,secondary:_.subtext1,muted:_.overlay0,disabled:_.surface2,inverse:{base:_.base,soft:"rgba(30, 30, 46, 0.8)",subtle:"rgba(30, 30, 46, 0.6)"}},accents:{positive:_.green,warning:_.yellow,critical:_.red,info:_.sky,highlight:_.mauve},states:{hover:{bg:"rgba(255, 255, 255, 0.08)",fg:null},active:{bg:"rgba(255, 255, 255, 0.15)"},focus:{border:_.mauve,ring:{color:_.mauve,width:2}},disabled:{opacity:.4,bg:_.surface0,fg:_.surface2},selected:{bg:_.surface0,fg:_.text}},borders:{default:_.overlay0,subtle:_.surface1,strong:_.subtext1,accent:_.mauve,danger:_.red},opacity:{disabled:.4,muted:.7,overlay:.65,ghost:.2},components:{button:{primary:{bg:_.mauve,fg:_.base,hoverBg:"#D9B6FF",activeBg:"#B98EE8",border:"transparent"},secondary:{bg:_.surface0,fg:_.text,hoverBg:_.surface1,activeBg:_.surface2,border:"transparent"},outline:{bg:"transparent",fg:_.mauve,hoverBg:"rgba(203, 166, 247, 0.1)",activeBg:"rgba(203, 166, 247, 0.2)",border:_.mauve},ghost:{bg:"transparent",fg:_.text,hoverBg:"rgba(255, 255, 255, 0.08)",activeBg:"rgba(255, 255, 255, 0.15)",border:"transparent"}},panel:{bg:_.surface0,headerBg:_.surface1,footerBg:_.surface1,border:_.overlay0},menu:{bg:_.surface0,border:_.overlay0,item:{fg:_.text,hoverBg:_.surface1,activeBg:_.surface2,selectedBg:_.surface1,disabledFg:_.surface2}},tabs:{bg:_.surface0,border:_.overlay0,tab:{fg:_.overlay0,activeFg:_.text,activeBg:_.base,hoverFg:_.subtext1,indicator:_.mauve}},dropdown:{bg:_.surface0,border:_.overlay0,item:{fg:_.text,hoverBg:_.surface1,selectedBg:_.surface2}},input:{bg:_.surface0,fg:_.text,placeholder:_.overlay0,border:_.overlay0,focusBorder:_.mauve,invalidBorder:_.red},checkbox:{bg:_.surface0,border:_.overlay0,checkColor:_.base,checkedBg:_.mauve},radio:{bg:_.surface0,dotColor:_.mauve,border:_.overlay0,checkedBorder:_.mauve},tooltip:{bg:_.surface1,fg:_.text},modal:{bg:_.surface0,border:_.overlay0,overlay:"rgba(0, 0, 0, 0.65)"},badge:{default:{bg:_.surface2,fg:_.text},success:{bg:_.green,fg:_.base},warning:{bg:_.yellow,fg:_.base},danger:{bg:_.red,fg:"#ffffff"}},list:{item:{bg:"transparent",hoverBg:_.surface0,selectedBg:_.surface1,fg:_.text}},header:{default:{bg:_.surface0,fg:_.text,titleFg:_.text,subtitleFg:_.overlay0,border:_.overlay0},primary:{bg:_.mauve,fg:_.base,titleFg:_.base,subtitleFg:"rgba(30, 30, 46, 0.8)",border:"#A78BFA"},secondary:{bg:_.surface1,fg:_.text,titleFg:_.text,subtitleFg:_.overlay0,border:_.surface2},success:{bg:_.green,fg:_.base,titleFg:_.base,subtitleFg:"rgba(30, 30, 46, 0.8)",border:"#16A34A"},warning:{bg:_.yellow,fg:_.base,titleFg:_.base,subtitleFg:"rgba(30, 30, 46, 0.7)",border:_.peach},danger:{bg:_.red,fg:"#ffffff",titleFg:"#ffffff",subtitleFg:"rgba(255, 255, 255, 0.8)",border:"#E11D48"}},statusbar:{default:{bg:_.surface0,fg:_.overlay0},primary:{bg:_.mauve,fg:_.base},info:{bg:_.sky,fg:_.base},success:{bg:_.green,fg:_.base},warning:{bg:_.yellow,fg:_.base},danger:{bg:_.red,fg:"#ffffff"}},page:{default:{bg:_.base,titleFg:_.text,subtitleFg:_.overlay0,border:_.overlay0},primary:{bg:_.base,titleFg:_.mauve,subtitleFg:_.overlay0,border:_.mauve},secondary:{bg:_.base,titleFg:_.subtext1,subtitleFg:_.overlay0,border:_.surface0}},appshell:{bg:_.crust,dividerFg:_.overlay0,sidebarBg:_.base,asideBg:_.base},collapsible:{default:{headerBg:_.surface0,headerFg:_.text,contentBg:_.base,border:_.overlay0,iconFg:_.overlay0},primary:{headerBg:_.surface1,headerFg:_.mauve,contentBg:_.base,border:_.mauve,iconFg:_.mauve},secondary:{headerBg:_.surface1,headerFg:_.text,contentBg:_.surface0,border:_.surface2,iconFg:_.overlay0}},commandPalette:{bg:_.surface0,border:_.overlay0,inputBg:_.base,inputFg:_.text,inputPlaceholder:_.overlay0,itemFg:_.text,itemHoverBg:_.surface1,itemSelectedBg:_.surface2,itemSelectedFg:_.text,highlightFg:_.mauve,categoryFg:_.overlay0},splitPanel:{bg:_.base,dividerBg:_.overlay0,dividerHoverBg:_.surface1,dividerActiveBg:_.mauve,border:_.overlay0,titleFg:_.overlay0},toast:{success:{bg:no.success[900],fg:no.success[100],border:_.green,iconFg:_.green},error:{bg:no.danger[900],fg:no.danger[100],border:_.red,iconFg:_.red},warning:{bg:no.warning[900],fg:no.warning[100],border:_.yellow,iconFg:_.yellow},info:{bg:"#0C4A6E",fg:"#E0F2FE",border:_.sky,iconFg:_.sky}},window:{default:{bg:_.base,fg:_.text,titleBarBg:_.surface0,titleBarFg:_.text,border:_.overlay0,buttonFg:_.overlay0,closeFg:_.red},primary:{bg:_.base,fg:_.text,titleBarBg:_.mauve,titleBarFg:_.base,border:"#A78BFA",buttonFg:"rgba(30, 30, 46, 0.8)",closeFg:_.base},success:{bg:_.base,fg:_.text,titleBarBg:_.green,titleBarFg:_.base,border:"#16A34A",buttonFg:"rgba(30, 30, 46, 0.8)",closeFg:_.base},warning:{bg:_.base,fg:_.text,titleBarBg:_.yellow,titleBarFg:_.base,border:_.peach,buttonFg:"rgba(30, 30, 46, 0.8)",closeFg:_.base},danger:{bg:_.base,fg:_.text,titleBarBg:_.red,titleBarFg:"#ffffff",border:"#E11D48",buttonFg:"rgba(255, 255, 255, 0.8)",closeFg:"#ffffff"}}}};var oo={primary:{50:ee[50],100:ee[100],200:ee[200],300:ee[300],400:ee[400],500:ee[500],600:ee[600],700:ee[700],800:ee[800],900:ee[900]},secondary:{50:h[50],100:h[100],200:h[200],300:h[300],400:h[400],500:h[500],600:h[600],700:h[700],800:h[800],900:h[900]},success:{50:pe[50],100:pe[100],200:pe[200],300:pe[300],400:pe[400],500:pe[500],600:pe[600],700:pe[700],800:pe[800],900:pe[900]},warning:{50:ue[50],100:ue[100],200:ue[200],300:ue[300],400:ue[400],500:ue[500],600:ue[600],700:ue[700],800:ue[800],900:ue[900]},danger:{50:ae[50],100:ae[100],200:ae[200],300:ae[300],400:ae[400],500:ae[500],600:ae[600],700:ae[700],800:ae[800],900:ae[900]},neutral:{50:h[50],100:h[100],200:h[200],300:h[300],400:h[400],500:h[500],600:h[600],700:h[700],800:h[800],900:h[900]}},SR={name:"high-contrast-dark",mode:"dark",meta:{version:"1.0.0",author:"tuiuiu",description:"Accessibility-focused high contrast dark theme"},palette:oo,background:{lowest:"#000000",base:"#000000",subtle:h[950],surface:h[900],raised:h[800],elevated:h[700],popover:h[950],overlay:"rgba(0, 0, 0, 0.8)"},foreground:{primary:"#ffffff",secondary:h[100],muted:h[300],disabled:h[500],inverse:{base:"#000000",soft:"rgba(0, 0, 0, 0.8)",subtle:"rgba(0, 0, 0, 0.6)"}},accents:{positive:pe[400],warning:ue[400],critical:ae[400],info:Xe[400],highlight:ee[400]},states:{hover:{bg:"rgba(255, 255, 255, 0.15)",fg:null},active:{bg:"rgba(255, 255, 255, 0.25)"},focus:{border:ee[400],ring:{color:ee[400],width:3}},disabled:{opacity:.5,bg:h[900],fg:h[500]},selected:{bg:ee[800],fg:"#ffffff"}},borders:{default:h[500],subtle:h[700],strong:h[300],accent:ee[400],danger:ae[400]},opacity:{disabled:.5,muted:.8,overlay:.8,ghost:.25},components:{button:{primary:{bg:ee[500],fg:"#ffffff",hoverBg:ee[400],activeBg:ee[600],border:ee[300]},secondary:{bg:h[800],fg:"#ffffff",hoverBg:h[700],activeBg:h[900],border:h[500]},outline:{bg:"transparent",fg:ee[400],hoverBg:"rgba(255, 255, 255, 0.1)",activeBg:"rgba(255, 255, 255, 0.2)",border:ee[400]},ghost:{bg:"transparent",fg:"#ffffff",hoverBg:"rgba(255, 255, 255, 0.15)",activeBg:"rgba(255, 255, 255, 0.25)",border:"transparent"}},panel:{bg:h[950],headerBg:h[900],footerBg:h[900],border:h[500]},menu:{bg:h[950],border:h[500],item:{fg:"#ffffff",hoverBg:h[800],activeBg:ee[800],selectedBg:ee[900],disabledFg:h[500]}},tabs:{bg:h[950],border:h[500],tab:{fg:h[300],activeFg:"#ffffff",activeBg:h[800],hoverFg:h[100],indicator:ee[400]}},dropdown:{bg:h[950],border:h[500],item:{fg:"#ffffff",hoverBg:h[800],selectedBg:ee[800]}},input:{bg:"#000000",fg:"#ffffff",placeholder:h[400],border:h[500],focusBorder:ee[400],invalidBorder:ae[400]},checkbox:{bg:"#000000",border:h[400],checkColor:"#000000",checkedBg:ee[400]},radio:{bg:"#000000",dotColor:ee[400],border:h[400],checkedBorder:ee[400]},tooltip:{bg:h[800],fg:"#ffffff"},modal:{bg:h[950],border:h[500],overlay:"rgba(0, 0, 0, 0.8)"},badge:{default:{bg:h[700],fg:"#ffffff"},success:{bg:pe[500],fg:"#000000"},warning:{bg:ue[400],fg:"#000000"},danger:{bg:ae[500],fg:"#ffffff"}},list:{item:{bg:"transparent",hoverBg:h[900],selectedBg:ee[800],fg:"#ffffff"}},header:{default:{bg:h[950],fg:"#ffffff",titleFg:"#ffffff",subtitleFg:h[300],border:h[500]},primary:{bg:ee[500],fg:"#ffffff",titleFg:"#ffffff",subtitleFg:"rgba(255, 255, 255, 0.8)",border:ee[300]},secondary:{bg:h[800],fg:"#ffffff",titleFg:"#ffffff",subtitleFg:h[300],border:h[500]},success:{bg:pe[500],fg:"#000000",titleFg:"#000000",subtitleFg:"rgba(0, 0, 0, 0.7)",border:pe[300]},warning:{bg:ue[400],fg:"#000000",titleFg:"#000000",subtitleFg:"rgba(0, 0, 0, 0.7)",border:ue[600]},danger:{bg:ae[500],fg:"#ffffff",titleFg:"#ffffff",subtitleFg:"rgba(255, 255, 255, 0.8)",border:ae[300]}},statusbar:{default:{bg:h[950],fg:h[300]},primary:{bg:ee[500],fg:"#ffffff"},info:{bg:Xe[500],fg:"#000000"},success:{bg:pe[500],fg:"#000000"},warning:{bg:ue[400],fg:"#000000"},danger:{bg:ae[500],fg:"#ffffff"}},page:{default:{bg:"#000000",titleFg:"#ffffff",subtitleFg:h[300],border:h[500]},primary:{bg:"#000000",titleFg:ee[400],subtitleFg:h[300],border:ee[400]},secondary:{bg:"#000000",titleFg:h[100],subtitleFg:h[400],border:h[700]}},appshell:{bg:"#000000",dividerFg:h[500],sidebarBg:"#000000",asideBg:"#000000"},collapsible:{default:{headerBg:h[950],headerFg:"#ffffff",contentBg:"#000000",border:h[500],iconFg:h[300]},primary:{headerBg:h[900],headerFg:ee[400],contentBg:"#000000",border:ee[400],iconFg:ee[400]},secondary:{headerBg:h[900],headerFg:"#ffffff",contentBg:h[950],border:h[500],iconFg:h[300]}},commandPalette:{bg:h[950],border:h[500],inputBg:"#000000",inputFg:"#ffffff",inputPlaceholder:h[400],itemFg:"#ffffff",itemHoverBg:h[800],itemSelectedBg:ee[800],itemSelectedFg:"#ffffff",highlightFg:ee[400],categoryFg:h[400]},splitPanel:{bg:"#000000",dividerBg:h[500],dividerHoverBg:h[400],dividerActiveBg:ee[400],border:h[500],titleFg:h[300]},toast:{success:{bg:oo.success[900],fg:oo.success[100],border:pe[400],iconFg:pe[400]},error:{bg:oo.danger[900],fg:oo.danger[100],border:ae[400],iconFg:ae[400]},warning:{bg:oo.warning[900],fg:oo.warning[100],border:ue[400],iconFg:ue[400]},info:{bg:"#0C4A6E",fg:"#E0F2FE",border:Xe[400],iconFg:Xe[400]}},window:{default:{bg:"#000000",fg:"#ffffff",titleBarBg:h[950],titleBarFg:"#ffffff",border:h[500],buttonFg:h[300],closeFg:ae[400]},primary:{bg:"#000000",fg:"#ffffff",titleBarBg:ee[500],titleBarFg:"#ffffff",border:ee[300],buttonFg:"rgba(255, 255, 255, 0.8)",closeFg:"#ffffff"},success:{bg:"#000000",fg:"#ffffff",titleBarBg:pe[500],titleBarFg:"#000000",border:pe[300],buttonFg:"rgba(0, 0, 0, 0.8)",closeFg:"#000000"},warning:{bg:"#000000",fg:"#ffffff",titleBarBg:ue[400],titleBarFg:"#000000",border:ue[600],buttonFg:"rgba(0, 0, 0, 0.8)",closeFg:"#000000"},danger:{bg:"#000000",fg:"#ffffff",titleBarBg:ae[500],titleBarFg:"#ffffff",border:ae[300],buttonFg:"rgba(255, 255, 255, 0.8)",closeFg:"#ffffff"}}},borderRadius:"sm"};var sL={primary:{50:h[50],100:h[100],200:h[200],300:h[300],400:h[400],500:h[500],600:h[600],700:h[700],800:h[800],900:h[900]},secondary:{50:h[50],100:h[100],200:h[200],300:h[300],400:h[400],500:h[500],600:h[600],700:h[700],800:h[800],900:h[900]},success:{50:h[50],100:h[100],200:h[200],300:h[300],400:h[400],500:h[500],600:h[600],700:h[700],800:h[800],900:h[900]},warning:{50:h[50],100:h[100],200:h[200],300:h[300],400:h[400],500:h[500],600:h[600],700:h[700],800:h[800],900:h[900]},danger:{50:h[50],100:h[100],200:h[200],300:h[300],400:h[400],500:h[500],600:h[600],700:h[700],800:h[800],900:h[900]},neutral:{50:h[50],100:h[100],200:h[200],300:h[300],400:h[400],500:h[500],600:h[600],700:h[700],800:h[800],900:h[900]}},TR={name:"monochrome",mode:"dark",meta:{version:"1.0.0",author:"tuiuiu",description:"Minimalist grayscale-only monochrome theme"},palette:sL,background:{lowest:h[950],base:h[900],subtle:h[800],surface:h[700],raised:h[600],elevated:h[500],popover:h[800],overlay:"rgba(0, 0, 0, 0.7)"},foreground:{primary:h[50],secondary:h[200],muted:h[400],disabled:h[500],inverse:{base:h[900],soft:"rgba(23, 23, 23, 0.8)",subtle:"rgba(23, 23, 23, 0.6)"}},accents:{positive:h[300],warning:h[400],critical:h[200],info:h[300],highlight:h[300]},states:{hover:{bg:"rgba(255, 255, 255, 0.1)",fg:null},active:{bg:"rgba(255, 255, 255, 0.2)"},focus:{border:h[400],ring:{color:h[400],width:2}},disabled:{opacity:.4,bg:h[800],fg:h[500]},selected:{bg:h[700],fg:h[50]}},borders:{default:h[600],subtle:h[700],strong:h[400],accent:h[400],danger:h[400]},opacity:{disabled:.4,muted:.7,overlay:.7,ghost:.2},components:{button:{primary:{bg:h[300],fg:h[900],hoverBg:h[200],activeBg:h[400],border:"transparent"},secondary:{bg:h[700],fg:h[50],hoverBg:h[600],activeBg:h[800],border:"transparent"},outline:{bg:"transparent",fg:h[300],hoverBg:"rgba(255, 255, 255, 0.1)",activeBg:"rgba(255, 255, 255, 0.2)",border:h[400]},ghost:{bg:"transparent",fg:h[50],hoverBg:"rgba(255, 255, 255, 0.1)",activeBg:"rgba(255, 255, 255, 0.2)",border:"transparent"}},panel:{bg:h[800],headerBg:h[700],footerBg:h[700],border:h[600]},menu:{bg:h[800],border:h[600],item:{fg:h[50],hoverBg:h[700],activeBg:h[600],selectedBg:h[700],disabledFg:h[500]}},tabs:{bg:h[800],border:h[600],tab:{fg:h[400],activeFg:h[50],activeBg:h[700],hoverFg:h[200],indicator:h[300]}},dropdown:{bg:h[800],border:h[600],item:{fg:h[50],hoverBg:h[700],selectedBg:h[600]}},input:{bg:h[800],fg:h[50],placeholder:h[500],border:h[600],focusBorder:h[400],invalidBorder:h[300]},checkbox:{bg:h[800],border:h[500],checkColor:h[900],checkedBg:h[300]},radio:{bg:h[800],dotColor:h[300],border:h[500],checkedBorder:h[300]},tooltip:{bg:h[700],fg:h[50]},modal:{bg:h[800],border:h[600],overlay:"rgba(0, 0, 0, 0.7)"},badge:{default:{bg:h[700],fg:h[50]},success:{bg:h[400],fg:h[900]},warning:{bg:h[500],fg:h[900]},danger:{bg:h[300],fg:h[900]}},list:{item:{bg:"transparent",hoverBg:h[800],selectedBg:h[700],fg:h[50]}},header:{default:{bg:h[800],fg:h[50],titleFg:h[50],subtitleFg:h[400],border:h[600]},primary:{bg:h[300],fg:h[900],titleFg:h[900],subtitleFg:"rgba(23, 23, 23, 0.7)",border:h[400]},secondary:{bg:h[700],fg:h[50],titleFg:h[50],subtitleFg:h[400],border:h[600]},success:{bg:h[400],fg:h[900],titleFg:h[900],subtitleFg:"rgba(23, 23, 23, 0.7)",border:h[500]},warning:{bg:h[500],fg:h[900],titleFg:h[900],subtitleFg:"rgba(23, 23, 23, 0.7)",border:h[600]},danger:{bg:h[300],fg:h[900],titleFg:h[900],subtitleFg:"rgba(23, 23, 23, 0.7)",border:h[400]}},statusbar:{default:{bg:h[800],fg:h[400]},primary:{bg:h[300],fg:h[900]},info:{bg:h[400],fg:h[900]},success:{bg:h[400],fg:h[900]},warning:{bg:h[500],fg:h[900]},danger:{bg:h[300],fg:h[900]}},page:{default:{bg:h[900],titleFg:h[50],subtitleFg:h[400],border:h[600]},primary:{bg:h[900],titleFg:h[200],subtitleFg:h[400],border:h[500]},secondary:{bg:h[900],titleFg:h[300],subtitleFg:h[500],border:h[700]}},appshell:{bg:h[950],dividerFg:h[600],sidebarBg:h[900],asideBg:h[900]},collapsible:{default:{headerBg:h[800],headerFg:h[50],contentBg:h[900],border:h[600],iconFg:h[400]},primary:{headerBg:h[700],headerFg:h[200],contentBg:h[900],border:h[500],iconFg:h[300]},secondary:{headerBg:h[700],headerFg:h[50],contentBg:h[800],border:h[600],iconFg:h[400]}},commandPalette:{bg:h[800],border:h[600],inputBg:h[900],inputFg:h[50],inputPlaceholder:h[500],itemFg:h[50],itemHoverBg:h[700],itemSelectedBg:h[600],itemSelectedFg:h[50],highlightFg:h[200],categoryFg:h[500]},splitPanel:{bg:h[900],dividerBg:h[600],dividerHoverBg:h[500],dividerActiveBg:h[300],border:h[600],titleFg:h[400]},toast:{success:{bg:h[800],fg:h[100],border:h[400],iconFg:h[300]},error:{bg:h[800],fg:h[100],border:h[300],iconFg:h[200]},warning:{bg:h[800],fg:h[100],border:h[500],iconFg:h[400]},info:{bg:h[800],fg:h[100],border:h[400],iconFg:h[300]}},window:{default:{bg:h[900],fg:h[50],titleBarBg:h[800],titleBarFg:h[50],border:h[600],buttonFg:h[400],closeFg:h[300]},primary:{bg:h[900],fg:h[50],titleBarBg:h[300],titleBarFg:h[900],border:h[400],buttonFg:"rgba(23, 23, 23, 0.8)",closeFg:h[900]},success:{bg:h[900],fg:h[50],titleBarBg:h[400],titleBarFg:h[900],border:h[500],buttonFg:"rgba(23, 23, 23, 0.8)",closeFg:h[900]},warning:{bg:h[900],fg:h[50],titleBarBg:h[500],titleBarFg:h[900],border:h[600],buttonFg:"rgba(23, 23, 23, 0.8)",closeFg:h[900]},danger:{bg:h[900],fg:h[50],titleBarBg:h[300],titleBarFg:h[900],border:h[400],buttonFg:"rgba(23, 23, 23, 0.8)",closeFg:h[900]}}},borderRadius:"none"};var AR=Symbol("tuiuiu.theme-runtime-state");function PR(){let[e,t]=cr(vp);return{currentTheme:e,setCurrentTheme:t,themeStack:[]}}function iL(e){if(e.id===0)return PR();let t=Ft(AR,PR),[r,n]=cr(Qo(t.currentTheme));return{currentTheme:r,setCurrentTheme:n,themeStack:[]}}function CR(){let e=Ne();return De(AR,()=>iL(e),e)}function OR(){return Qo(CR().currentTheme)}var aL={dark:vp,light:yR,monokai:kR,dracula:wR,nord:RR,solarizedDark:_R,gruvbox:xR,tokyoNight:ER,catppuccin:vR,highContrastDark:SR,monochrome:TR},g8=Object.keys(aL);function lL(e){let t=e.startsWith("#")?e.slice(1):e;t.length===3&&(t=t[0]+t[0]+t[1]+t[1]+t[2]+t[2]);let r=parseInt(t.slice(0,2),16)/255,n=parseInt(t.slice(2,4),16)/255,o=parseInt(t.slice(4,6),16)/255,s=i=>i<=.03928?i/12.92:Math.pow((i+.055)/1.055,2.4);return .2126*s(r)+.7152*s(n)+.0722*s(o)}function kt(e){let t={black:0,red:.2,green:.35,yellow:.9,blue:.15,magenta:.25,cyan:.6,white:1,gray:.5,grey:.5};return e in t?t[e]>.5?"black":"white":e.startsWith("#")&&lL(e)>.4?"black":"white"}function dL(e,t=500){let r=bR[e];return r?typeof r=="string"?r:r[t]??r[500]:e}var cL={foreground:e=>e.foreground.primary,"foreground-primary":e=>e.foreground.primary,"foreground-secondary":e=>e.foreground.secondary,"foreground-muted":e=>e.foreground.muted,"foreground-disabled":e=>e.foreground.disabled,mutedForeground:e=>e.foreground.muted,"muted-foreground":e=>e.foreground.muted,disabledForeground:e=>e.foreground.disabled,background:e=>e.background.base,"background-base":e=>e.background.base,"background-subtle":e=>e.background.subtle,"background-surface":e=>e.background.surface,"background-raised":e=>e.background.raised,"background-elevated":e=>e.background.elevated,surface:e=>e.background.surface,card:e=>e.background.surface,popover:e=>e.background.popover,overlay:e=>e.background.overlay,primary:e=>e.palette.primary[500],"primary-50":e=>e.palette.primary[50],"primary-100":e=>e.palette.primary[100],"primary-200":e=>e.palette.primary[200],"primary-300":e=>e.palette.primary[300],"primary-400":e=>e.palette.primary[400],"primary-500":e=>e.palette.primary[500],"primary-600":e=>e.palette.primary[600],"primary-700":e=>e.palette.primary[700],"primary-800":e=>e.palette.primary[800],"primary-900":e=>e.palette.primary[900],primaryForeground:e=>kt(e.palette.primary[500]),"primary-foreground":e=>kt(e.palette.primary[500]),secondary:e=>e.palette.secondary[500],"secondary-50":e=>e.palette.secondary[50],"secondary-100":e=>e.palette.secondary[100],"secondary-200":e=>e.palette.secondary[200],"secondary-300":e=>e.palette.secondary[300],"secondary-400":e=>e.palette.secondary[400],"secondary-500":e=>e.palette.secondary[500],"secondary-600":e=>e.palette.secondary[600],"secondary-700":e=>e.palette.secondary[700],"secondary-800":e=>e.palette.secondary[800],"secondary-900":e=>e.palette.secondary[900],secondaryForeground:e=>kt(e.palette.secondary[500]),"secondary-foreground":e=>kt(e.palette.secondary[500]),success:e=>e.accents.positive,"success-50":e=>e.palette.success[50],"success-100":e=>e.palette.success[100],"success-200":e=>e.palette.success[200],"success-300":e=>e.palette.success[300],"success-400":e=>e.palette.success[400],"success-500":e=>e.palette.success[500],"success-600":e=>e.palette.success[600],"success-700":e=>e.palette.success[700],"success-800":e=>e.palette.success[800],"success-900":e=>e.palette.success[900],successForeground:e=>kt(e.accents.positive),"success-foreground":e=>kt(e.accents.positive),warning:e=>e.accents.warning,"warning-50":e=>e.palette.warning[50],"warning-100":e=>e.palette.warning[100],"warning-200":e=>e.palette.warning[200],"warning-300":e=>e.palette.warning[300],"warning-400":e=>e.palette.warning[400],"warning-500":e=>e.palette.warning[500],"warning-600":e=>e.palette.warning[600],"warning-700":e=>e.palette.warning[700],"warning-800":e=>e.palette.warning[800],"warning-900":e=>e.palette.warning[900],warningForeground:e=>kt(e.accents.warning),"warning-foreground":e=>kt(e.accents.warning),danger:e=>e.accents.critical,error:e=>e.accents.critical,destructive:e=>e.accents.critical,"danger-50":e=>e.palette.danger[50],"danger-100":e=>e.palette.danger[100],"danger-200":e=>e.palette.danger[200],"danger-300":e=>e.palette.danger[300],"danger-400":e=>e.palette.danger[400],"danger-500":e=>e.palette.danger[500],"danger-600":e=>e.palette.danger[600],"danger-700":e=>e.palette.danger[700],"danger-800":e=>e.palette.danger[800],"danger-900":e=>e.palette.danger[900],dangerForeground:e=>kt(e.accents.critical),"danger-foreground":e=>kt(e.accents.critical),errorForeground:e=>kt(e.accents.critical),destructiveForeground:e=>kt(e.accents.critical),info:e=>e.accents.info,infoForeground:e=>kt(e.accents.info),"info-foreground":e=>kt(e.accents.info),muted:e=>e.background.subtle,"muted-background":e=>e.background.subtle,accent:e=>e.palette.primary[400],accentForeground:e=>kt(e.palette.primary[400]),"accent-foreground":e=>kt(e.palette.primary[400]),neutral:e=>e.palette.neutral[500],"neutral-50":e=>e.palette.neutral[50],"neutral-100":e=>e.palette.neutral[100],"neutral-200":e=>e.palette.neutral[200],"neutral-300":e=>e.palette.neutral[300],"neutral-400":e=>e.palette.neutral[400],"neutral-500":e=>e.palette.neutral[500],"neutral-600":e=>e.palette.neutral[600],"neutral-700":e=>e.palette.neutral[700],"neutral-800":e=>e.palette.neutral[800],"neutral-900":e=>e.palette.neutral[900],border:e=>e.borders.default,"border-subtle":e=>e.borders.subtle,"border-strong":e=>e.borders.strong,input:e=>e.components.input.border,ring:e=>e.states.focus.ring.color};function DR(e){if(e.startsWith("#")||e.startsWith("rgb"))return e;let t=Qo(CR().currentTheme),r=cL[e];if(r)return r(t);let n=e.match(/^([a-z]+)-(\d+)$/);if(n){let[,o,s]=n,i=parseInt(s,10);return dL(o,i)}return e}var uL={enabled:!0,maxFrames:120,budget:{frameMs:16.67,slowFrameMs:33.34,phases:{}}},FR=Symbol("tuiuiu.perf-inspector-runtime-state");function pL(e){return{enabled:e.enabled,maxFrames:e.maxFrames,budget:{frameMs:e.budget.frameMs,slowFrameMs:e.budget.slowFrameMs,phases:{...e.budget.phases}}}}function IR(e){let t=e.id===0?null:Ft(FR,()=>IR(Cr())),r=pL(t?.config??uL);return{config:r,ring:new Array(r.maxFrames),start:0,count:0,slowFrameListeners:new Set}}function MR(){let e=Ne();return De(FR,()=>IR(e),e)}function fL(e){return e.metrics.runtimeTotalMs??e.metrics.totalFrameMs}function gL(e,t){let r=bL().slice(-t);e.ring=new Array(t),e.start=0,e.count=r.length;for(let n=0;n<r.length;n++)e.ring[n]=r[n]}function hL(e,t){e.ring.length!==e.config.maxFrames&&gL(e,e.config.maxFrames);let r=(e.start+e.count)%e.ring.length;if(e.ring[r]=t,e.count<e.ring.length){e.count++;return}e.start=(e.start+1)%e.ring.length}function mL(e,t){let r={};if(!t)return r;for(let[n,o]of Object.entries(t)){if(!Number.isFinite(o)||o<0)continue;let s=e[n];if(typeof s!="number")continue;let i=s-o;i>0&&(r[n]=i)}return r}function LR(e,t={}){let r=MR(),n=fL(e),o=Math.max(0,n-r.config.budget.frameMs),s=mL(e.metrics.phases,r.config.budget.phases),i=Object.keys(s).length,a=n>=r.config.budget.slowFrameMs;Fw({totalMs:n,overBudget:o>0,phaseOverrunCount:i});let l={frameId:e.info.frameId,committedAt:e.info.committedAt,renderer:t.renderer??(e.metrics.phases.deltaRenderMs!==void 0?"delta":"ansi"),totalMs:n,budgetOverrunMs:o,phaseBudgetOverruns:s,overBudgetPhaseCount:i,slow:a,phases:{...e.metrics.phases},structural:{...e.metrics.structural}};if(!r.config.enabled)return null;if(hL(r,l),a)for(let d of[...r.slowFrameListeners])d(l);return l}function bL(){let e=MR(),t=[];for(let r=0;r<e.count;r++){let n=e.ring[(e.start+r)%e.ring.length];n&&t.push(n)}return t}var yL={eagerHitTargets:!1,eagerQueries:!1,eagerWarnings:!1};function so(e,t){return Uw(e,t,yL)}function Sp(e){qw(e)}function _n(e,t){zw(e,t.runtimeStartAt??e.metrics.runtimeStartAt??e.metrics.frameStartAt),LR(e,{renderer:t.renderer})}var kL=.4,wL=64;function io(){return typeof performance<"u"?performance.now():Date.now()}var jR=new WeakMap;function RL(){let e=OR(),t=jR.get(e);return t||(t=new Map,jR.set(e,t)),t}function _L(e,t){return e.type!==t.type||e.order!==t.order||e.zIndex!==t.zIndex||e.id!==t.id||e.nodeType!==t.nodeType||e.clip?.x!==t.clip?.x||e.clip?.y!==t.clip?.y||e.clip?.width!==t.clip?.width||e.clip?.height!==t.clip?.height?!1:e.type==="box"&&t.type==="box"?e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height&&e.backgroundColor===t.backgroundColor&&e.fillChar===t.fillChar&&e.borderStyle===t.borderStyle&&e.borderColor===t.borderColor&&e.borderText===t.borderText&&e.borderTextAlign===t.borderTextAlign&&e.borderTextColor===t.borderTextColor&&e.borderTextBold===t.borderTextBold&&e.borderSides?.top===t.borderSides?.top&&e.borderSides?.bottom===t.borderSides?.bottom&&e.borderSides?.left===t.borderSides?.left&&e.borderSides?.right===t.borderSides?.right:e.type==="text"&&t.type==="text"?e.x===t.x&&e.y===t.y&&e.maxWidth===t.maxWidth&&e.text===t.text&&e.inheritedBackgroundColor===t.inheritedBackgroundColor&&xL(e.style,t.style):e.type==="terminal-image"&&t.type==="terminal-image"?e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height&&e.protocol===t.protocol&&e.fit===t.fit&&e.threshold===t.threshold&&e.dither===t.dither&&e.preserveAspectRatio===t.preserveAspectRatio&&e.cellRender===t.cellRender&&e.source.hash===t.source.hash:!1}function xL(e,t){let r=Object.keys(e),n=Object.keys(t);if(r.length!==n.length)return!1;for(let o of r)if(e[o]!==t[o])return!1;return!0}function GR(e,t){return!(e.x+e.width<=t.x||t.x+t.width<=e.x||e.y+e.height<=t.y||t.y+t.height<=e.y)}function NR(e,t,r){let n=Math.max(0,e.x),o=Math.max(0,e.y),s=Math.min(t,e.x+e.width),i=Math.min(r,e.y+e.height);return s<=n||i<=o?null:{x:n,y:o,width:s-n,height:i-o}}function EL(e,t,r){let n=e.map(s=>NR(s,t,r)).filter(s=>s!==null).sort((s,i)=>s.y-i.y||s.x-i.x);if(n.length<=1)return n;let o=[];for(let s of n){let i=o[o.length-1];if(!i){o.push({...s});continue}if(!(GR(i,s)||s.y<=i.y+i.height&&s.x<=i.x+i.width)){o.push({...s});continue}let l=Math.min(i.x,s.x),d=Math.min(i.y,s.y),c=Math.max(i.x+i.width,s.x+s.width),u=Math.max(i.y+i.height,s.y+s.height);i.x=l,i.y=d,i.width=c-l,i.height=u-d}return o}function vL(e,t,r){let n=new Map;for(let i of e){let a=NR(i,t,r);if(!a)continue;let l=a.x,d=a.x+a.width,c=a.y+a.height;for(let u=a.y;u<c;u++){let p=n.get(u);p?p.push({x1:l,x2:d}):n.set(u,[{x1:l,x2:d}])}}let o=[...n.keys()].sort((i,a)=>i-a),s=[];for(let i of o){let a=n.get(i);a.sort((d,c)=>d.x1-c.x1);let l=a[0];for(let d=1;d<a.length;d++){let c=a[d];if(c.x1<=l.x2){l.x2=Math.max(l.x2,c.x2);continue}s.push({x:l.x1,y:i,width:l.x2-l.x1,height:1}),l=c}s.push({x:l.x1,y:i,width:l.x2-l.x1,height:1})}return s}function WR(e={}){let{stdout:t=process.stdout,showCursor:r=!1,useDelta:n=!0,debug:o=!1}=e,s=t.columns||80,i=t.rows||24,a=new hi(s,i),l=!0,d=!1,c=null,u=null,p=0,g=0,f=0,k=0;function b(I){K(t.columns||80,t.rows||24);let N=so(I,{width:s,height:i});v(N)}function v(I){K(I.info.viewport.width,I.info.viewport.height),H(I),Uo(I.layout),Xs(),c=I.root,u=I}function T(){l=!0,c?b(c):u&&H(u)}function $(){t.write("\x1B[2J\x1B[3J\x1B[H"),a=new hi(s,i),l=!0}function D(){!r&&d&&(Zo(t),d=!1)}function L(){let I=s*i;return{totalRenders:p,deltaRenders:g,fullRenders:f,lastPatchCount:k,totalCells:I,updatePercentage:I>0?k/I*100:0}}function W(I,N){s=I,i=N,a.resize(s,i),l=!0}function K(I,N){!r&&!d&&(es(t),d=!0),(I!==s||N!==i)&&W(I,N)}function H(I){let N=io(),V=0,ge=0,fe=a.getFrontBuffer(),de=a.getBackBuffer();p++;let te=s*i,me=ML(u,I),Oe=Ir(),ve=fR(Oe),ke=gR(Oe),J=Re=>{let Ae=io();t.write(Re),V+=io()-Ae,ge+=typeof Re=="string"?Buffer.byteLength(Re):Re.byteLength};if(!l&&n&&u){let{renderRects:Re,diffRects:Ae}=TL(u.drawCommands,I.drawCommands,s,i);if(Tt(I,"dirtyRectCount",Re.length),Tt(I,"diffRectCount",Ae.length),Re.length===0){me&&J(me),k=0,Tt(I,"patchCount",0),Tt(I,"outputByteCount",ge),st(I,"outputWriteMs",V),st(I,"deltaRenderMs",Math.max(0,io()-N-V)),_n(I,{renderer:"delta"});return}let Ee=PL(Re);if(!(Re.length>wL||Ee>te*kL)){ve&&J(ve),AL(de,Re),OL(I.drawCommands,Re,de,I.reservedRegions);let Se=fe.diffRects(de,Ae);if(fe.applyPatches(Se),de.clearDamage(),k=Se.length,Tt(I,"patchCount",Se.length),o&&console.error(`[delta-render] dirty-rects: ${Re.length}, patches: ${Se.length}, cells: ${te}`),me&&J(me),Se.length>0){let ce=Rp(Se,s,!0);J(ce),g++}ke&&J(ke),Tt(I,"outputByteCount",ge),st(I,"outputWriteMs",V),st(I,"deltaRenderMs",Math.max(0,io()-N-V)),_n(I,{renderer:"delta"});return}}ve&&J(ve),de.clear(),qR(I.drawCommands,de,I.reservedRegions);let ie=a.swap();if(k=ie.length,Tt(I,"patchCount",ie.length),o&&console.error(`[delta-render] patches: ${ie.length}, cells: ${te}`),l||!n||ie.length>te*.5){let Re=kl(a.getFrontBuffer());me&&J(me),J("\x1B[H"),J(Re),f++,l=!1,ke&&J(ke),Tt(I,"outputByteCount",ge),st(I,"outputWriteMs",V),st(I,"deltaRenderMs",Math.max(0,io()-N-V)),_n(I,{renderer:"delta"});return}if(me&&J(me),ie.length>0){let Re=Rp(ie,s,!0);J(Re),g++}l=!1,ke&&J(ke),Tt(I,"outputByteCount",ge),st(I,"outputWriteMs",V),st(I,"deltaRenderMs",Math.max(0,io()-N-V)),_n(I,{renderer:"delta"})}return{render:b,renderFrame:v,fullRedraw:T,clear:$,cleanup:D,stats:L,resize:W}}function SL(e){if(e.maxWidth<=0||e.text.length===0)return{x:e.x,y:e.y,width:0,height:0};let t=0,r=-1,n=Js(e.text,e.maxWidth,e.style.wrap);for(let o=0;o<n.length;o++){let s=Math.min(e.maxWidth,xe(n[o]));s>0&&(t=Math.max(t,s),r=o)}return{x:e.x,y:e.y,width:t,height:r>=0?r+1:0}}function Tp(e){let t=e.type==="box"||e.type==="terminal-image"?{x:e.x,y:e.y,width:e.width,height:e.height}:SL(e);if(!e.clip)return t;let r=Math.max(t.x,e.clip.x),n=Math.max(t.y,e.clip.y),o=Math.min(t.x+t.width,e.clip.x+e.clip.width),s=Math.min(t.y+t.height,e.clip.y+e.clip.height);return{x:r,y:n,width:Math.max(0,o-r),height:Math.max(0,s-n)}}function TL(e,t,r,n){let o=[],s=Math.max(e.length,t.length);for(let i=0;i<s;i++){let a=e[i],l=t[i];a&&l&&_L(a,l)||(a&&o.push(Tp(a)),l&&o.push(Tp(l)))}return{renderRects:EL(o,r,n),diffRects:vL(o,r,n)}}function PL(e){return e.reduce((t,r)=>t+r.width*r.height,0)}function AL(e,t){let r=Mr();for(let n of t)e.fill(n.x,n.y,n.width,n.height,r)}function HR(e,t,r){return e.some(n=>t>=n.x&&t<n.x+n.width&&r>=n.y&&r<n.y+n.height)}function fr(e,t,r,n,o,s,i,a={},l){let d=Math.max(1,xe(o));for(let c=0;c<d;c++)if(l&&(r+c<l.x||r+c>=l.x+l.width||n<l.y||n>=l.y+l.height)||HR(t,r+c,n))return;e.writeChar(r,n,o,s,i,a)}function CL(e,t,r,n,o,s,i,a,l={},d){for(let c=0;c<o;c++)(!d||r+c>=d.x&&r+c<d.x+d.width&&n>=d.y&&n<d.y+d.height)&&!HR(t,r+c,n)&&e.writeChar(r+c,n,s,i,a,l)}function UR(e,t,r){switch(e.type){case"box":DL(e,t,r);break;case"text":YR(e,t,r);break;case"terminal-image":FL(e,t);break}}function OL(e,t,r,n){for(let o of e){let s=Tp(o);if(!(s.width<=0||s.height<=0)){for(let i of t)if(GR(s,i)){UR(o,r,n);break}}}}function qR(e,t,r){for(let n of e)UR(n,t,r)}function KR(e,t=new Lr(e.info.viewport.width,e.info.viewport.height)){return qR(e.drawCommands,t,e.reservedRegions),t}function DL(e,t,r){let{x:n,y:o,width:s,height:i,backgroundColor:a,fillChar:l=" ",borderStyle:d,borderColor:c,borderSides:u,borderText:p,borderTextAlign:g,borderTextColor:f,borderTextBold:k,clip:b}=e,v=a?ao(a):void 0,T=c?ao(c):void 0,$=f?ao(f):T;if(v||l!==" "){let D=d&&d!=="none"?1:0,L=n+D,W=o+D,K=Math.max(0,s-D*2),H=Math.max(0,i-D*2);for(let I=0;I<H;I++)CL(t,r,L,W+I,K,l,void 0,v,{},b)}if(d&&d!=="none"){let D=_p[d]??_p.single,L={},W=u?.top!==!1,K=u?.bottom!==!1,H=u?.left!==!1,I=u?.right!==!1;if(W){let N=H?D.topLeft:D.top;fr(t,r,n,o,N,T,void 0,L,b);for(let V=1;V<s-1;V++)fr(t,r,n+V,o,D.top,T,void 0,L,b);if(s>1){let V=I?D.topRight:D.top;fr(t,r,n+s-1,o,V,T,void 0,L,b)}if(p&&s>4){let V=s-4,fe=` ${zs(lk(p),V,{truncationCharacter:""})} `,de=xe(fe),te=g??"center",me=te==="left"?n+1:te==="right"?n+Math.max(1,s-1-de):n+Math.max(1,Math.floor((s-de)/2)),Oe=0,ve=me;for(;Oe<fe.length&&ve<n+s-1;){let ke=qn(fe,Oe);if(!ke)break;Oe=ke.nextIndex;let J=xe(ke.symbol);J<=0||ve+J>n+s-1||(fr(t,r,ve,o,ke.symbol,$,void 0,k?{...L,bold:!0}:L,b),ve+=J)}}}for(let N=1;N<i-1;N++)H&&fr(t,r,n,o+N,D.left,T,void 0,L,b),I&&s>1&&fr(t,r,n+s-1,o+N,D.right,T,void 0,L,b);if(K&&i>1){let N=H?D.bottomLeft:D.bottom;fr(t,r,n,o+i-1,N,T,void 0,L,b);for(let V=1;V<s-1;V++)fr(t,r,n+V,o+i-1,D.bottom,T,void 0,L,b);if(s>1){let V=I?D.bottomRight:D.bottom;fr(t,r,n+s-1,o+i-1,V,T,void 0,L,b)}}}}function FL(e,t){e.cellRender&&YR({type:"text",order:e.order,id:e.id,nodeType:e.nodeType,x:e.x,y:e.y,maxWidth:e.width,text:JR(e),style:{},clip:e.clip},t,[])}function VR(e){let t={width:e.width,height:e.height,fit:e.fit,threshold:e.threshold,dither:e.dither,preserveAspectRatio:e.preserveAspectRatio};return e.protocol==="kitty"&&e.kittyImageId?{...t,imageId:e.kittyImageId}:t}function zR(e){let t=VR(e);return e.protocolState?e.protocolState.getCacheKey(e.source,{protocol:e.protocol,...t}):[e.protocol,e.kittyImageId??"",e.id??"",e.source.hash,t.width,t.height,t.fit,t.threshold??"",t.dither?1:0,t.preserveAspectRatio?1:0].join(":")}function mi(e){return e.instanceKey??(e.id?`${e.protocol}:${e.id}`:`${e.protocol}:${zR(e)}:${e.x}:${e.y}`)}function ts(e){return[mi(e),e.x,e.y,zR(e)].join(":")}function JR(e){let t=VR(e);return e.protocolState?e.protocolState.render(e.source,{protocol:e.protocol,...t}).payload:al(e.protocol,e.source,t)}function BR(e){return e?e.drawCommands.filter(t=>t.type==="terminal-image"&&!t.cellRender&&(!t.clip||t.x>=t.clip.x&&t.y>=t.clip.y&&t.x+t.width<=t.clip.x+t.clip.width&&t.y+t.height<=t.clip.y+t.clip.height)):[]}function IL(e,t){let r=new Map(t.filter(s=>s.protocol==="kitty").map(s=>[mi(s),s])),n=new Set,o="";for(let s of e){if(s.protocol!=="kitty")continue;let i=r.get(mi(s));if(!i||ts(s)!==ts(i)){if(s.kittyImageId){if(n.has(s.kittyImageId))continue;n.add(s.kittyImageId),o+="\x1B7\x1B[H",o+=Jo.delete(s.kittyImageId),o+="\x1B8";continue}return`\x1B7\x1B[H${ll("kitty")}\x1B8`}}return o}function ML(e,t){let r=BR(e),n=BR(t),o=r.map(ts).join("|"),s=n.map(ts).join("|");if(e&&o===s)return"";let i=IL(r,n),a=new Map(r.map(l=>[mi(l),l]));for(let l of n){let d=a.get(mi(l));d&&ts(d)===ts(l)||(i+=`\x1B7\x1B[${l.y+1};${l.x+1}H`,i+=JR(l),i+="\x1B8")}return i}function rs(e){if(e===void 0||!/^\d{1,3}$/u.test(e))return null;let t=Number(e);return t>=0&&t<=255?t:null}function LL(e){let t=Number(e[1]),r=e.slice(2).filter(n=>n!=="");if(t===5){let n=rs(r.at(-1));return n===null?null:{ansi256:n}}if(t===2){let n=r.slice(-3).map(rs);return n.length!==3||n.some(o=>o===null)?null:{r:n[0],g:n[1],b:n[2]}}return null}function jL(e,t){let r=Number(e[t+1]);if(r===5)return{color:(()=>{let n=rs(e[t+2]);return n===null?null:{ansi256:n}})(),consumed:2};if(r===2){let n=[rs(e[t+2]),rs(e[t+3]),rs(e[t+4])];return{color:n.some(o=>o===null)?null:{r:n[0],g:n[1],b:n[2]},consumed:4}}return{color:null,consumed:0}}var $R={0:!1,1:"single",2:"double",3:"curly",4:"dotted",5:"dashed"};function BL(e,t,r,n={}){let o=[],s=t,i=r,a={...n},l="",d=0;for(;d<e.length;){if(e[d]==="\x1B"){let c=Un(e,d);if(!c){d++;continue}if(l&&(o.push({text:l,fg:s,bg:i,attrs:{...a}}),l=""),c.kind==="sgr"){let u=c.value.slice(2,-1),p=u===""?["0"]:u.split(";");for(let g=0;g<p.length;g++){let k=p[g].split(":"),b=Number(k[0]||0);if(k.length>1){if(b===4){let v=Number(k[1]||0);v in $R&&(a.underline=$R[v])}else if(b===38||b===48||b===58){let v=LL(k);v&&(b===38?s=v:b===48?i=v:a.underlineColor=v)}continue}if(b===0)s=t,i=r,a={...n};else if(b===1)a.bold=!0;else if(b===2)a.dim=!0;else if(b===3)a.italic=!0;else if(b===4)a.underline=!0;else if(b===5)a.blink=!0;else if(b===7)a.inverse=!0;else if(b===8)a.hidden=!0;else if(b===9)a.strikethrough=!0;else if(b===21)a.underline="double";else if(b===22)a.bold=!1,a.dim=!1;else if(b===23)a.italic=!1;else if(b===24)a.underline=!1;else if(b===25)a.blink=!1;else if(b===27)a.inverse=!1;else if(b===28)a.hidden=!1;else if(b===29)a.strikethrough=!1;else if(b>=30&&b<=37)s=["black","red","green","yellow","blue","magenta","cyan","white"][b-30];else if(b===39)s=t;else if(b>=40&&b<=47)i=["black","red","green","yellow","blue","magenta","cyan","white"][b-40];else if(b===49)i=r;else if(b===59)a.underlineColor=n.underlineColor;else if(b>=90&&b<=97)s=["blackBright","redBright","greenBright","yellowBright","blueBright","magentaBright","cyanBright","whiteBright"][b-90];else if(b>=100&&b<=107)i=["blackBright","redBright","greenBright","yellowBright","blueBright","magentaBright","cyanBright","whiteBright"][b-100];else if(b===38||b===48||b===58){let{color:v,consumed:T}=jL(p,g);v&&(b===38?s=v:b===48?i=v:a.underlineColor=v),g+=T}}}d=c.end;continue}l+=e[d],d++}return l&&o.push({text:l,fg:s,bg:i,attrs:{...a}}),o}function YR(e,t,r){let{x:n,y:o,maxWidth:s,text:i,style:a,inheritedBackgroundColor:l}=e;if(s<=0)return;let d=e.prebuiltAnsi===!0,c=d?void 0:a.color?ao(a.color):void 0,u=d?void 0:a.backgroundColor?ao(a.backgroundColor):l?ao(l):void 0,p=d?{}:{bold:a.bold,dim:a.dim,italic:a.italic,underline:a.underline,underlineColor:a.underlineColor?ao(a.underlineColor):void 0,inverse:a.inverse,strikethrough:a.strikethrough},g=d||i.includes("\x1B"),f=Js(i,s,a.wrap);if(g){let k=BL(f.join(`
196
+ `),c,u,p),b=0,v=0;for(let T of k){let $=0;for(;$<T.text.length;){let D=qn(T.text,$);if(!D)break;let L=D.symbol;if(L===`
197
+ `){v++,b=0,$=D.nextIndex;continue}let W=xe(L);W>0&&(fr(t,r,n+b,o+v,L,T.fg,T.bg,T.attrs,e.clip),b+=W),$=D.nextIndex}}}else for(let k=0;k<f.length;k++){let b=0,v=0;for(;v<f[k].length;){let T=qn(f[k],v);if(!T)break;let $=T.symbol;if(b>=s)break;let D=xe($);D>0&&(fr(t,r,n+b,o+k,$,c,u,p,e.clip),b+=D),v=T.nextIndex}}}function ao(e){let t=RL(),r=t.get(e);if(r)return r;let n=DR(e);return t.set(e,n),n}var I8=Symbol("tuiuiu.delta-renderer-state");function QR(){return typeof performance<"u"?performance.now():Date.now()}function ZR(e){let t=e.y+e.height,r=e.x+e.width;for(let n of e.children){let o=ZR(n);t=Math.max(t,o.maxY),r=Math.max(r,o.maxX)}return{maxY:t,maxX:r}}function $L(e,t){return typeof e=="object"?{width:e.width??process.stdout.columns??80,height:e.height??1e3,fullHeight:e.fullHeight??!1}:{width:e??process.stdout.columns??80,height:t??1e3,fullHeight:!1}}function Ap(e,t={}){let r=QR(),{fullHeight:n=!1,previousFrame:o=null}=t,s=e.layout,i=e.root.props,a=i.marginBottom??i.marginY??i.margin??0,d=ZR(s).maxY+(typeof a=="number"?a:0),c=e.info.viewport.height,u=n&&c<1e3?c:d,p=new Lr(e.info.viewport.width,u);KR(e,p);let g=kl(p,n),f=WL(e,o);return st(e,"ansiRenderMs",QR()-r),f+g}function e_(e,t,r){let n=$L(t,r),s=!(typeof t=="object"?t.height!==void 0:r!==void 0)&&e.props.height==="fill"?process.stdout.rows??24:n.height,i=so(e,{width:n.width,height:s});return Ap(i,{fullHeight:n.fullHeight})}function t_(e){let t={width:e.width,height:e.height,fit:e.fit,threshold:e.threshold,dither:e.dither,preserveAspectRatio:e.preserveAspectRatio};return e.protocol==="kitty"&&e.kittyImageId?{...t,imageId:e.kittyImageId}:t}function r_(e){let t=t_(e);return e.protocolState?e.protocolState.getCacheKey(e.source,{protocol:e.protocol,...t}):[e.protocol,e.kittyImageId??"",e.id??"",e.source.hash,t.width,t.height,t.fit,t.threshold??"",t.dither?1:0,t.preserveAspectRatio?1:0].join(":")}function bi(e){return e.instanceKey??(e.id?`${e.protocol}:${e.id}`:`${e.protocol}:${r_(e)}:${e.x}:${e.y}`)}function ns(e){return[bi(e),e.x,e.y,r_(e)].join(":")}function GL(e){let t=t_(e);return e.protocolState?e.protocolState.render(e.source,{protocol:e.protocol,...t}).payload:al(e.protocol,e.source,t)}function XR(e){return e?e.drawCommands.filter(t=>t.type==="terminal-image"&&!t.cellRender):[]}function Pp(e,t){if(!aw(t))return e;let r=Ir();return r.multiplexer?wl(e,r.multiplexer):e}function NL(e,t){let r=new Map(t.filter(s=>s.protocol==="kitty").map(s=>[bi(s),s])),n=new Set,o="";for(let s of e){if(s.protocol!=="kitty")continue;let i=r.get(bi(s));if(!i||ns(s)!==ns(i)){if(s.kittyImageId){if(n.has(s.kittyImageId))continue;n.add(s.kittyImageId),o+=Pp(`\x1B7\x1B[H${Jo.delete(s.kittyImageId)}\x1B8`,"kitty");continue}return Pp(`\x1B7\x1B[H${ll("kitty")}\x1B8`,"kitty")}}return o}function WL(e,t){let r=XR(e);if(r.length===0&&!t)return"";let n=XR(t),o=n.map(ns).join("|"),s=r.map(ns).join("|");if(t&&o===s)return"";let i=NL(n,r),a=new Map(n.map(l=>[bi(l),l]));for(let l of r){let d=a.get(bi(l));if(d&&ns(d)===ns(l))continue;let c=GL(l);i+=Pp(`\x1B7\x1B[${l.y+1};${l.x+1}H${c}\x1B8`,l.protocol)}return i}function _l(e){let{value:t,isNew:r}=ar(null);if(r||t===null){let n=ci(()=>cr(e)),o=Jt();return lr(o,n),n}return t}function n_(e){let{value:t,isNew:r}=ar(null);if(r||t===null){let n=ci(e);return lr(Jt(),n),n}return t}function yi(e){let{value:t,isNew:r}=ar(null);if(r||t===null){let n=Jt(),o={effect:null,fn:e,dispose:null};lr(n,o);let s=new yn(()=>{let a=Fr(n);if(a)return a.fn()}),i=()=>s.dispose();return o.effect=s,o.dispose=i,Vn(i,n),i}else return t.fn=e,t.dispose}var e9=Symbol("tuiuiu.keyboard-protocol-runtime-state");function o_(e){let t=e.match(/^\x1b\[(?:(\d+)(?::(\d+))?(?::(\d+))?)?(?:;(\d+)(?::(\d+))?)?(?:;(.+))?u$/);if(!t)return null;let r=(f,k)=>{if(f===void 0)return k??null;if(!/^\d+$/u.test(f))return null;let b=Number(f);return Number.isSafeInteger(b)?b:null},n=f=>f>=0&&f<=1114111&&!(f>=55296&&f<=57343),o=r(t[1],0),s=r(t[2]),i=r(t[3]),a=r(t[4],1),l=r(t[5],1),d=t[6];if(o===null||a===null||a<1||l===null||s!==null&&!n(s)||i!==null&&!n(i))return null;let c=a-1,u={shift:!!(c&1),alt:!!(c&2),ctrl:!!(c&4),super:!!(c&8),hyper:!!(c&16),meta:!!(c&32),capsLock:!!(c&64),numLock:!!(c&128)},p="press";l===2?p="repeat":l===3&&(p="release");let g="";if(d){let f=d.split(":").map(k=>r(k));if(f.length===0||f.some(k=>k===null||!n(k)))return null;g=f.map(k=>String.fromCodePoint(k)).join("")}else o>=32&&o<127&&(g=String.fromCharCode(o));return{keyCode:o,baseKey:i??void 0,shiftedKey:s??void 0,text:g,eventType:p,modifiers:u}}var Cp="\x1B[200~",os="\x1B[201~",HL="\x1B[I",UL="\x1B[O";function s_(){return"\x1B[?2004h"}function i_(){return"\x1B[?2004l"}function a_(){return"\x1B[?1004h"}function l_(){return"\x1B[?1004l"}function d_(e){return e===HL?{focused:!0}:e===UL?{focused:!1}:null}function c_(){return"\x1B[?1049h"}function Op(){return"\x1B[?1049l"}var qL={OP:"f1",OQ:"f2",OR:"f3",OS:"f4","[11~":"f1","[12~":"f2","[13~":"f3","[14~":"f4","[[A":"f1","[[B":"f2","[[C":"f3","[[D":"f4","[[E":"f5","[15~":"f5","[17~":"f6","[18~":"f7","[19~":"f8","[20~":"f9","[21~":"f10","[23~":"f11","[24~":"f12","[A":"up","[B":"down","[C":"right","[D":"left","[E":"clear","[F":"end","[H":"home",OA:"up",OB:"down",OC:"right",OD:"left",OE:"clear",OF:"end",OH:"home","[1~":"home","[2~":"insert","[3~":"delete","[4~":"end","[5~":"pageup","[6~":"pagedown","[[5~":"pageup","[[6~":"pagedown","[7~":"home","[8~":"end","[a":"up","[b":"down","[c":"right","[d":"left","[e":"clear","[2$":"insert","[3$":"delete","[5$":"pageup","[6$":"pagedown","[7$":"home","[8$":"end",Oa:"up",Ob:"down",Oc:"right",Od:"left",Oe:"clear","[2^":"insert","[3^":"delete","[5^":"pageup","[6^":"pagedown","[7^":"home","[8^":"end","[Z":"tab"},KL=new Set(["[a","[b","[c","[d","[e","[2$","[3$","[5$","[6$","[7$","[8$","[Z"]),VL=new Set(["Oa","Ob","Oc","Od","Oe","[2^","[3^","[5^","[6^","[7^","[8^"]),zL=/^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/,JL=/^\x1b\[\d+(?::\d*){0,2}(?:;\d+(?::\d+)?)?(?:;[0-9:]+)?u/,YL=/^\x1b\[27;(\d+);(\d+)~/;function QL(e,t){if(!Number.isSafeInteger(t)||t<1||t>16)return!1;let r=t-1;return e.shift=!!(r&1),e.option=!!(r&2),e.ctrl=!!(r&4),e.meta=!!(r&58),!0}function p_(e){return Number.isSafeInteger(e)&&e>=0&&e<=1114111&&!(e>=55296&&e<=57343)}function u_(e,t,r=""){switch(t){case 9:return e.tab=!0,"";case 13:return e.return=!0,"";case 27:return e.escape=!0,"";case 127:return e.backspace=!0,""}return!p_(t)||t>=57344&&t<=63743?"":r||String.fromCodePoint(t)}function XL(e,t){switch(t){case"up":e.upArrow=!0;break;case"down":e.downArrow=!0;break;case"left":e.leftArrow=!0;break;case"right":e.rightArrow=!0;break;case"pageup":e.pageUp=!0;break;case"pagedown":e.pageDown=!0;break;case"home":e.home=!0;break;case"end":e.end=!0;break;case"insert":e.insert=!0;break;case"delete":e.delete=!0;break;case"clear":e.clear=!0;break;case"tab":e.tab=!0;break;case"f1":e.f1=!0;break;case"f2":e.f2=!0;break;case"f3":e.f3=!0;break;case"f4":e.f4=!0;break;case"f5":e.f5=!0;break;case"f6":e.f6=!0;break;case"f7":e.f7=!0;break;case"f8":e.f8=!0;break;case"f9":e.f9=!0;break;case"f10":e.f10=!0;break;case"f11":e.f11=!0;break;case"f12":e.f12=!0;break}}function Dp(e){let t=e.toString();Buffer.isBuffer(e)&&e[0]!==void 0&&e[0]>127&&e[1]===void 0&&(t="\x1B"+String.fromCharCode(e[0]-128));let r={upArrow:!1,downArrow:!1,leftArrow:!1,rightArrow:!1,pageUp:!1,pageDown:!1,home:!1,end:!1,insert:!1,return:!1,escape:!1,tab:!1,backspace:!1,delete:!1,clear:!1,ctrl:!1,shift:!1,meta:!1,option:!1,f1:!1,f2:!1,f3:!1,f4:!1,f5:!1,f6:!1,f7:!1,f8:!1,f9:!1,f10:!1,f11:!1,f12:!1},n="";if(t==="\r")return r.return=!0,{input:n,key:r,length:1};if(t===`
198
+ `)return r.return=!0,{input:n,key:r,length:1};if(t==="\x1B\r"||t===`\x1B
199
+ `)return r.return=!0,r.meta=!0,{input:n,key:r,length:2};if(t==="\x1B\r")return r.return=!0,r.meta=!0,r.ctrl=!0,{input:n,key:r,length:2};if(t===" ")return r.tab=!0,{input:n,key:r,length:1};if(t==="\x7F"||t==="\b")return r.backspace=!0,{input:n,key:r,length:1};if(t==="\x1B\x7F"||t==="\x1B\b")return r.backspace=!0,r.meta=!0,{input:n,key:r,length:2};if(t==="\x1B")return r.escape=!0,{input:n,key:r,length:1};if(t==="\x1B\x1B")return r.escape=!0,r.meta=!0,{input:n,key:r,length:2};if(t===" ")return n=" ",{input:n,key:r,length:1};if(t==="\x1B ")return r.meta=!0,n=" ",{input:n,key:r,length:2};if(t.length>=1&&t.charCodeAt(0)<=26)return r.ctrl=!0,n=String.fromCharCode(t.charCodeAt(0)+97-1),{input:n,key:r,length:1};let o=JL.exec(t);if(o){let d=o_(o[0]);if(d){r.shift=d.modifiers.shift,r.option=d.modifiers.alt,r.ctrl=d.modifiers.ctrl,r.meta=d.modifiers.alt||d.modifiers.super||d.modifiers.hyper||d.modifiers.meta,r.eventType=d.eventType;let c=o[0].split(";").length>=3;return n=u_(r,d.keyCode,c?d.text:""),{input:n,key:r,length:o[0].length}}}let s=YL.exec(t);if(s){let d=Number(s[1]),c=Number(s[2]);if(QL(r,d)&&p_(c))return n=u_(r,c),r.eventType="press",{input:n,key:r,length:s[0].length}}let i=zL.exec(t);if(i&&i.index===0){let d=[...t];d[0]==="\x1B"&&d[1]==="\x1B"&&(r.option=!0);let c=[i[1],i[2],i[4],i[6]].filter(Boolean).join(""),u=(i[3]||i[5]||1)-1;r.ctrl=!!(u&4),r.meta=!!(u&10),r.shift=!!(u&1);let p=qL[c];return p&&XL(r,p),KL.has(c)&&(r.shift=!0),VL.has(c)&&(r.ctrl=!0),{input:n,key:r,length:i[0].length}}let a=/^(?:)([a-zA-Z0-9])/.exec(t);if(a)return r.meta=!0,r.shift=/^[A-Z]$/.test(a[1]),n=a[1].toLowerCase(),{input:n,key:r,length:2};let l=/^[^\x00-\x1f\x7f]+/u.exec(t);if(l){let d=l[0];return d.length===1&&d>="A"&&d<="Z"?(r.shift=!0,n=d.toLowerCase(),{input:n,key:r,length:1}):(n=d,{input:n,key:r,length:d.length})}return{input:n,key:r,length:t.length}}function Fp(e,t={}){let{isActive:r=!0,priority:n="normal",stopPropagation:o=!1}=t,{value:s,isNew:i}=ar(null);if(i||s===null){let c=function(){return Fr(d)},a=(u,p,g)=>{let f=c();if(f&&f.registered)return f.handler(u,p,g)},l={handler:e,wrapper:a,registered:r,handlerId:null,priority:n,stopPropagation:o},d=Jt();lr(d,l),r&&(l.handlerId=Xa(a,{priority:n,stopPropagation:o})),Vn(()=>{l.handlerId!==null&&(ti(l.handlerId),l.handlerId=null),l.registered=!1},d)}else{let a=s.registered;s.handler=e,s.registered=r;let l=s.priority!==n,d=s.stopPropagation!==o;r&&!a?(s.priority=n,s.stopPropagation=o,s.handlerId=Xa(s.wrapper,{priority:n,stopPropagation:o})):!r&&a?s.handlerId!==null&&(ti(s.handlerId),s.handlerId=null):r&&(l||d)&&(s.handlerId!==null&&ti(s.handlerId),s.priority=n,s.stopPropagation=o,s.handlerId=Xa(s.wrapper,{priority:n,stopPropagation:o}))}}function f_(e){return e==null||e===!1||e===!0?[]:Array.isArray(e)?e.flatMap(f_):typeof e=="string"||typeof e=="number"?[ki({children:String(e)})]:[e]}function Ip(e,...t){return{type:"box",props:{...e},children:f_(t.length>0?t:e.children)}}function ki(e,...t){let r=t.filter(o=>o!=null),n=r.length>0?r.join(""):Array.isArray(e.children)?e.children.filter(o=>o!=null).join(""):String(e.children??"");return{type:"text",props:{...e,children:n},children:[]}}function Mp(e={}){let{flex:t=1,minSize:r=0,x:n,y:o}=e;return{type:"spacer",props:{flexGrow:n!==void 0||o!==void 0?0:t,flexShrink:0,minWidth:n??r,minHeight:o??r,width:n,height:o},children:[]}}var ZL=0,g_=Symbol("tuiuiu.focus-zone-manager"),Lp=class e{zones=new Map;stack=[];activeZoneId=null;rootZoneId=null;maxStackDepth=10;listeners=new Set;constructor(){this.createZone({id:"__root__"}),this.rootZoneId="__root__",this.activeZoneId="__root__"}static getInstance(){return De(g_,()=>new e)}static reset(){za(g_)}[Ar](){this.zones.clear(),this.stack=[],this.activeZoneId=null,this.rootZoneId=null,this.listeners.clear()}createZone(t={}){let r=t.id||`zone_${ZL++}`,n={id:r,elements:new Map,order:[],activeId:null,previousActiveId:null,options:{trap:!1,autoFocus:!0,wrap:!0,direction:"vertical",disabled:!1,restoreFocus:!0,...t},parentId:this.activeZoneId,isActive:!1};return this.zones.set(r,n),r}destroyZone(t){t===this.rootZoneId||!this.zones.get(t)||(this.activeZoneId===t&&this.deactivateZone(t),this.stack=this.stack.filter(n=>n.zoneId!==t),this.zones.delete(t))}activateZone(t){let r=this.zones.get(t);if(!r||r.options.disabled)return;let o=this.getActiveZone()?.activeId??null;this.stack.length>=this.maxStackDepth&&console.warn(`Focus stack overflow: ${this.stack.length} zones stacked`),this.activeZoneId&&this.activeZoneId!==t&&this.stack.push({zoneId:this.activeZoneId,previousFocusId:o,previousZoneId:this.activeZoneId,timestamp:Date.now()}),this.activeZoneId=t,r.isActive=!0,r.options.autoFocus&&r.order.length>0&&this.focusElement(r.order[0],t)}deactivateZone(t){let r=this.zones.get(t);if(!r)return;r.isActive=!1;let n=this.stack.pop();n?(this.activeZoneId=n.previousZoneId,r.options.restoreFocus&&n.previousFocusId&&this.zones.get(n.previousZoneId)&&this.focusElement(n.previousFocusId,n.previousZoneId)):this.activeZoneId=this.rootZoneId}getActiveZone(){return this.activeZoneId?this.zones.get(this.activeZoneId)??null:null}getZone(t){return this.zones.get(t)??null}registerElement(t,r=this.activeZoneId||"__root__",n={}){let o=this.zones.get(r);if(!o)return;let s={id:t,order:n.order??o.order.length,isActive:n.isActive??!0,tabIndex:n.tabIndex,onFocus:n.onFocus,node:n.node,group:n.group};o.elements.set(t,s),this.updateOrder(o)}unregisterElement(t,r){let n=r?[this.zones.get(r)]:Array.from(this.zones.values());for(let o of n)if(o&&o.elements.has(t)){o.activeId===t&&this.focusNextInZone(o.id),o.elements.delete(t),this.updateOrder(o);return}}updateElement(t,r,n){let o=n?[this.zones.get(n)]:Array.from(this.zones.values());for(let s of o){if(!s)continue;let i=s.elements.get(t);if(i){Object.assign(i,r),r.order!==void 0&&this.updateOrder(s);return}}}updateOrder(t){let r=Array.from(t.elements.entries()).filter(([,n])=>n.isActive&&n.tabIndex!==-1).sort((n,o)=>n[1].order-o[1].order);t.order=r.map(([n])=>n)}focusElement(t,r){let n=r?this.zones.get(r):this.getActiveZone();if(!n)return!1;let o=n.elements.get(t);if(!o||!o.isActive)return!1;let s=n.activeId;return s&&s!==t&&n.elements.get(s)?.onFocus?.(!1),n.previousActiveId=s,n.activeId=t,o.onFocus?.(!0),this.notifyFocusChange({elementId:t,previousElementId:s,zoneId:n.id,isInitial:s===null}),!0}focusNext(){let t=this.getActiveZone();return t?this.focusNextInZone(t.id):!1}focusPrevious(){let t=this.getActiveZone();return t?this.focusPreviousInZone(t.id):!1}focusNextInZone(t){let r=this.zones.get(t);if(!r||r.order.length===0)return!1;let o=(r.activeId?r.order.indexOf(r.activeId):-1)+1;if(o>=r.order.length)if(r.options.wrap)o=0;else return r.options.trap?!1:r.parentId?this.focusNextInZone(r.parentId):!1;return this.focusElement(r.order[o],t)}focusPreviousInZone(t){let r=this.zones.get(t);if(!r||r.order.length===0)return!1;let o=(r.activeId?r.order.indexOf(r.activeId):r.order.length)-1;if(o<0)if(r.options.wrap)o=r.order.length-1;else return r.options.trap?!1:r.parentId?this.focusPreviousInZone(r.parentId):!1;return this.focusElement(r.order[o],t)}focusFirst(t){let r=t?this.zones.get(t):this.getActiveZone();return!r||r.order.length===0?!1:this.focusElement(r.order[0],r.id)}focusLast(t){let r=t?this.zones.get(t):this.getActiveZone();return!r||r.order.length===0?!1:this.focusElement(r.order[r.order.length-1],r.id)}blur(t){let r=t?this.zones.get(t):this.getActiveZone();if(!r||!r.activeId)return;r.elements.get(r.activeId)?.onFocus?.(!1),r.previousActiveId=r.activeId,r.activeId=null,this.notifyFocusChange({elementId:null,previousElementId:r.previousActiveId,zoneId:r.id,isInitial:!1})}getActiveId(t){return(t?this.zones.get(t):this.getActiveZone())?.activeId??null}getActiveElement(t){let r=t?this.zones.get(t):this.getActiveZone();return r?.activeId?r.elements.get(r.activeId)??null:null}isFocused(t,r){return(r?this.zones.get(r):this.getActiveZone())?.activeId===t}getFocusOrder(t){return(t?this.zones.get(t):this.getActiveZone())?.order??[]}getStackDepth(){return this.stack.length}onFocusChange(t){return this.listeners.add(t),()=>this.listeners.delete(t)}notifyFocusChange(t){for(let r of this.listeners)try{r(t)}catch(n){console.error("Error in focus change listener:",n)}}focusGroup(t,r){let n=r?this.zones.get(r):this.getActiveZone();if(!n)return!1;for(let o of n.order)if(n.elements.get(o)?.group===t)return this.focusElement(o,n.id);return!1}focusNextGroup(t){let r=t?this.zones.get(t):this.getActiveZone();if(!r)return!1;let o=(r.activeId?r.elements.get(r.activeId):null)?.group,s=r.activeId?r.order.indexOf(r.activeId):-1;for(let i=s+1;i<r.order.length;i++)if(r.elements.get(r.order[i])?.group!==o)return this.focusElement(r.order[i],r.id);if(r.options.wrap){for(let i=0;i<=s;i++)if(r.elements.get(r.order[i])?.group!==o)return this.focusElement(r.order[i],r.id)}return!1}};function h_(){return Lp.getInstance()}var wi=class{zoneManager=h_();zoneId;constructor(t="__root__"){this.zoneId=t}register(t,r){this.zoneManager.registerElement(t,this.zoneId,{onFocus:r})}unregister(t){this.zoneManager.unregisterElement(t,this.zoneId)}focus(t){this.zoneManager.focusElement(t,this.zoneId)}focusNext(){this.zoneManager.focusNextInZone(this.zoneId)}focusPrevious(){this.zoneManager.focusPreviousInZone(this.zoneId)}blur(){this.zoneManager.blur(this.zoneId)}getActiveId(){return this.zoneManager.getActiveId(this.zoneId)??void 0}};import{StringDecoder as ej}from"node:string_decoder";function m_(e,t){if(!Number.isSafeInteger(e)||e<1)throw new Error(`[tuiuiu] ${t} must be a positive safe integer`)}function tj(e,t){if(!Number.isSafeInteger(e)||e<0)throw new Error(`[tuiuiu] ${t} must be a non-negative safe integer`)}function rj(e){let t=0;for(;t<e.length;){let r=e.indexOf("\x1B",t);if(r===-1)return-1;if(r+1>=e.length)return r;let n=e[r+1];if(n==="["){let o=r+2;for(;o<e.length;){let s=e.charCodeAt(o);if(s>=64&&s<=126)break;o++}if(o>=e.length)return r;t=o+1;continue}if(n==="]"||n==="P"||n==="^"||n==="_"){let o=r+2,s=!1;for(;o<e.length;){if(n==="]"&&e.charCodeAt(o)===7){o++,s=!0;break}if(e[o]==="\x1B"&&e[o+1]==="\\"){o+=2,s=!0;break}o++}if(!s)return r;t=o;continue}if(n==="O"&&r+2>=e.length)return r;t=Math.min(e.length,r+(n==="O"?3:2))}return-1}function nj(e){let t=rj(e);return t===-1?{complete:e,pending:""}:{complete:e.slice(0,t),pending:e.slice(t)}}function oj(e){let t=Math.min(e.length,os.length-1);for(let r=t;r>0;r--)if(e.endsWith(os.slice(0,r)))return r;return 0}var jp=class{maxPasteBytes;maxPendingEscapeBytes;pasteHeuristicThreshold;decoder=new ej("utf8");pendingInput="";pasteBuffer=null;pasteBufferBytes=0;pasteOverflowed=!1;pasteTerminatorPrefix="";disposed=!1;constructor(t={}){this.maxPasteBytes=t.maxPasteBytes??1024*1024,this.maxPendingEscapeBytes=t.maxPendingEscapeBytes??4096,this.pasteHeuristicThreshold=t.pasteHeuristicThreshold??32,m_(this.maxPasteBytes,"maxPasteBytes"),m_(this.maxPendingEscapeBytes,"maxPendingEscapeBytes"),tj(this.pasteHeuristicThreshold,"pasteHeuristicThreshold")}get status(){return{pendingEscapeBytes:Buffer.byteLength(this.pendingInput,"utf8"),pasteBytes:this.pasteBufferBytes,pasteActive:this.pasteBuffer!==null,pasteOverflowed:this.pasteOverflowed}}push(t){if(this.disposed)return[];let r=typeof t=="string"?t:this.decoder.write(t);if(!r&&!this.pendingInput)return[];let n=this.pendingInput+r;this.pendingInput="";let{complete:o,pending:s}=nj(n),i=o?this.processCompleteInput(o):[];return s&&(Buffer.byteLength(s,"utf8")>this.maxPendingEscapeBytes?i.push(...this.processCompleteInput(s)):this.pendingInput=s),i}flushPendingInput(){if(this.disposed||!this.pendingInput)return[];let t=this.pendingInput;return this.pendingInput="",this.processCompleteInput(t)}abortPaste(){let t=this.pasteBuffer!==null;this.pasteBuffer=null,this.pasteBufferBytes=0,this.pasteOverflowed=!1,this.pasteTerminatorPrefix="",t&&os.startsWith(this.pendingInput)&&(this.pendingInput="")}dispose(){this.disposed||(this.disposed=!0,this.pendingInput="",this.abortPaste(),this.decoder.end())}appendPaste(t){if(this.pasteBuffer===null||this.pasteOverflowed||!t)return;let r=Buffer.byteLength(t,"utf8");if(this.pasteBufferBytes+r>this.maxPasteBytes){this.pasteBuffer="",this.pasteBufferBytes=0,this.pasteOverflowed=!0;return}this.pasteBuffer+=t,this.pasteBufferBytes+=r}consumeActivePaste(t,r){let n=this.pasteTerminatorPrefix+t;this.pasteTerminatorPrefix="";let o=n.indexOf(os);if(o===-1){let s=oj(n),i=n.length-s;return this.appendPaste(n.slice(0,i)),this.pasteTerminatorPrefix=n.slice(i),null}return this.appendPaste(n.slice(0,o)),!this.pasteOverflowed&&this.pasteBuffer!==null&&r.push({type:"paste",text:this.pasteBuffer,bracketed:!0}),this.abortPaste(),n.slice(o+os.length)}processCompleteInput(t){let r=[],n=t;if(this.pasteBuffer!==null){let o=this.consumeActivePaste(n,r);if(o===null||(n=o,!n))return r}for(;n.length>0;){let o=n.indexOf(Cp);if(o!==-1){let s=n.slice(0,o);s&&r.push({type:"input",input:s}),this.pasteBuffer="",this.pasteBufferBytes=0,this.pasteOverflowed=!1,this.pasteTerminatorPrefix="";let i=this.consumeActivePaste(n.slice(o+Cp.length),r);if(i===null)return r;n=i;continue}return n.length>this.pasteHeuristicThreshold&&!n.includes("\x1B")?(Buffer.byteLength(n,"utf8")<=this.maxPasteBytes&&r.push({type:"paste",text:n,bracketed:!1}),r):(r.push({type:"input",input:n}),r)}return r}};function b_(e={}){return new jp(e)}function y_(e){let{stdin:t,stdout:r,focusEvents:n=!1,bracketedPaste:o=!0}=e,s=!!t.isRaw,i=typeof t.isPaused=="function"&&t.isPaused(),a=!!r.isTTY,l=!1,d=!1,c=0,u=k=>{typeof r.write=="function"&&r.write(k)},p=k=>{if(!(d||!t.isTTY||!t.setRawMode)){if(k){c++,c===1&&!s&&t.setRawMode(!0);return}c!==0&&(c--,c===0&&t.setRawMode(s))}};return{stdin:t,stdout:r,get rawModeEnabledCount(){return c},get disposed(){return d},start:()=>{if(d)throw new Error("[tuiuiu] Cannot restart a disposed TerminalSession");l||(l=!0,p(!0),t.resume(),a&&n&&u(a_()),a&&o&&u(s_()))},setRawMode:p,isRawModeEnabled:()=>c>0,dispose:()=>{if(d||(d=!0,!l))return;let k,b=v=>{try{v()}catch(T){k??=T}};if(c=0,b(()=>{t.isTTY&&t.setRawMode&&t.setRawMode(s)}),b(()=>{i&&typeof t.pause=="function"&&t.pause()}),a&&n&&b(()=>u(l_())),a&&o&&b(()=>u(i_())),k)throw k}}}function vl(){let e=zr();if(!e)throw new Error("useApp must be called within a Tuiuiu app");return e}var xl=new WeakSet,El=new WeakSet;function Bp(e,t,r={}){let n=Nu();if(n&&zr(n))throw new Error("[tuiuiu] Cannot initialize a nested app inside an active render runtime.");let{autoTabNavigation:o=!0,exitOnCtrlC:s=!0,exitProcess:i=!1,maxPasteBytes:a=1024*1024,maxPendingEscapeBytes:l=4096,escapeSequenceTimeoutMs:d=25,pasteTimeoutMs:c=3e4}=r;if(!Number.isSafeInteger(a)||a<1)throw new Error("[tuiuiu] maxPasteBytes must be a positive safe integer");if(!Number.isSafeInteger(l)||l<1)throw new Error("[tuiuiu] maxPendingEscapeBytes must be a positive safe integer");if(!Number.isFinite(d)||d<0)throw new Error("[tuiuiu] escapeSequenceTimeoutMs must be a non-negative number");if(!Number.isFinite(c)||c<0)throw new Error("[tuiuiu] pasteTimeoutMs must be a non-negative number");if(xl.has(e)||El.has(t))throw new Error("[tuiuiu] A terminal stream cannot be shared by simultaneous apps. Use distinct stdin/stdout pairs or dispose the current owner first.");let u=hk();xl.add(e),El.add(t);let p="isTTY"in t?!!t.isTTY:!0,g=new Set,f=!1,k,b=!1,v=o,T,$=qe(u,()=>(nR({stdout:t}),!!(e.isTTY&&p&&Ir().focusEvents))),D=y_({stdin:e,stdout:t,focusEvents:$,bracketedPaste:!0}),L=D.setRawMode,W=D.isRawModeEnabled;try{D.start()}catch(J){xl.delete(e),El.delete(t);try{D.dispose()}finally{Ho(u)}throw J}cp(u);let K=qe(u,()=>new wi);Vu(K,u);let H=b_({maxPasteBytes:a,maxPendingEscapeBytes:l}),I=null,N=null,V=()=>{I&&(clearTimeout(I),I=null)},ge=()=>{V(),I=setTimeout(()=>{H.abortPaste(),I=null},Math.max(0,c))},fe=J=>{let ie=J;for(;ie.length>0;){let Re=d_(ie.slice(0,3));if(Re){Bt(()=>{dp(Re.focused)}),ie=ie.slice(3);continue}if(Qu(ie)){let ce=ii(ie);if(ce){Bt(()=>{Yo().handleMouseEvent(ce.event),jk(ce.event)}),ie=ie.slice(ce.length);continue}}let{input:Ae,key:Ee,length:we}=Dp(ie),Se=we>0?we:1;if(ie=ie.slice(Se),s&&Ee.ctrl&&Ae==="c"){ke();return}if(v){if(Ee.tab&&!Ee.shift){Bt(()=>{K.focusNext()});continue}if(Ee.tab&&Ee.shift){Bt(()=>{K.focusPrevious()});continue}if(Ee.escape&&K.getActiveId()!==void 0){Bt(()=>{K.blur()});continue}}Bt(()=>{Mk(Ae,Ee)})}},de=J=>{for(let ie of J){if(b)return;ie.type==="paste"?Bt(()=>{$k(ie.text,ie.bracketed)}):fe(ie.input)}},te=()=>{b||(N&&(clearTimeout(N),N=null),H.status.pendingEscapeBytes>0&&(N=setTimeout(me,Math.max(0,d))),H.status.pasteActive?ge():V())},me=()=>{N=null,!b&&(de(H.flushPendingInput()),te())},Oe=Vr(u,J=>{b||(de(H.push(J)),te())});e.on("data",Oe);let ve=()=>{if(b)return;b=!0;let J=ie=>{try{ie()}catch(Re){console.error("[tuiuiu] Error while disposing app state:",Re)}};try{J(()=>e.off("data",Oe)),N&&(clearTimeout(N),N=null),V(),J(()=>H.dispose()),J(()=>D.dispose()),J(()=>Qa(u)),J(()=>cp(u)),J(()=>Lk(u)),J(()=>Gk(u)),J(()=>Bk(u)),J(()=>rl(u)),J(()=>Yk(u)),J(()=>Vu(null,u)),J(()=>{zr(u)===T&&Ku(null,u)})}finally{xl.delete(e),El.delete(t),g.clear(),Ho(u)}},ke=J=>{if(f)return;f=!0,k=J;let ie=[...g];g.clear(),ve();for(let Re of ie)try{Re(J)}catch(Ae){console.error("[tuiuiu] Error in app exit callback:",Ae)}J&&console.error(J),i&&process.exit(J?1:0)};return T={exit:ke,dispose:ve,stdin:e,stdout:t,writeLine:J=>{let ie=Go(String(J)).replace(/\r\n?/g,`
200
+ `);t.write(`${ie.replace(/\n+$/u,"")}
201
+ `)},onExit:J=>{if(f){try{J(k)}catch(ie){console.error("[tuiuiu] Error in app exit callback:",ie)}return()=>{}}return g.add(J),()=>{g.delete(J)}},autoTabNavigation:v,setAutoTabNavigation:J=>{v=J},setRawMode:L,get rawModeEnabledCount(){return D.rawModeEnabledCount},isRawModeEnabled:W,isTerminalFocused:()=>ur(u),enqueueExternalUpdate:J=>{Bt(()=>{J()})},flushExternalUpdates:()=>{},hasPendingExternalUpdates:()=>!1},Ku(T,u),T}function $p(e){let t=zr();t&&(t.clearScreen=e)}function Sl(e){let t=zr();t&&(t.writeLine=e??(r=>{let n=Go(String(r)).replace(/\r\n?/g,`
202
+ `);t.stdout.write(`${n.replace(/\n+$/u,"")}
203
+ `)}))}function Tl(e){let t=zr();if(t){if(!e){t.enqueueExternalUpdate=r=>{Bt(()=>{r()})},t.flushExternalUpdates=()=>{},t.hasPendingExternalUpdates=()=>!1;return}t.enqueueExternalUpdate=e.enqueue,t.flushExternalUpdates=e.flush,t.hasPendingExternalUpdates=e.isPending}}function Gp(){let[e,t]=n_(()=>cr(sR()));return yi(()=>iR(n=>{t(n)})),e()}function Np(e,t,r={}){let{enabled:n=!0,immediate:o=!1}=r,{value:s,isNew:i}=ar(null);if(i||s===null){let a=Jt(),l={timerId:null,callback:e,delay:t,enabled:n,running:!1,start:()=>{let d=Fr(a);d&&!d.running&&(d.running=!0,d.timerId=setInterval(()=>{let c=Fr(a);c&&c.callback()},d.delay))},stop:()=>{let d=Fr(a);d&&d.running&&(d.timerId!==null&&(clearInterval(d.timerId),d.timerId=null),d.running=!1)},isRunning:()=>Fr(a)?.running??!1};return lr(a,l),Vn(l.stop,a),n&&(o&&e(),l.start()),{start:l.start,stop:l.stop,isRunning:l.isRunning}}else return s.callback=e,s.delay=t,n!==s.enabled&&(s.enabled=n,n?s.start():s.stop()),{start:s.start,stop:s.stop,isRunning:s.isRunning}}var gr="\x1B[",Wp=`${gr}H`,Ri=`${gr}J`,Pl=`${gr}K`,k_=e=>{let t="";for(let r=0;r<e;r++)t+=gr+"2K",r<e-1&&(t+=gr+"1A");return e>0&&(t+="\r"),t},w_=e=>e>0?`${gr}${e}A`:"",sj=`${gr}1E`,ij=`${gr}2K`;function aj(e,t={}){let{showCursor:r=!1,topOffset:n=0}=t,o="",s=0,i=[],a=!1,l=n>0?`${gr}${n+1}H`:Wp,d=c=>{!r&&!a&&(es(e),a=!0);let u=c+`
204
+ `;if(u===o)return;let p=c.split(`
205
+ `),g=p.map(T=>xe(T)),f=p.length,k=[];for(let T=0;T<p.length;T++){let $=p[T],D=g[T],L=i[T]??0;D<L?k.push($+Pl):k.push($)}let b=s-f,v="";if(b>0)for(let T=0;T<b;T++)v+=`
206
+ `+Pl;o=u,s=f,i=g,e.write(l+k.join(`
207
+ `)+v+`
208
+ `+Ri)};return d.clear=()=>{e.write(l+Ri),o="",s=0,i=[]},d.done=()=>{o="",s=0,i=[],!r&&a&&(Zo(e),a=!1)},d.sync=c=>{let u=c.split(`
209
+ `);o=c+`
210
+ `,s=u.length,i=u.map(p=>xe(p))},d}function lj(e,t={}){let{showCursor:r=!1,topOffset:n=0}=t,o=[],s="",i=!1,a=n>0?`${gr}${n+1}H`:Wp,l=d=>{!r&&!i&&(es(e),i=!0);let c=d+`
211
+ `;if(c===s)return;let u=o.length,p=c.split(`
212
+ `),g=p.length,f=g-1;if(c===`
213
+ `||s.length===0){e.write(a+k_(u)+c),s=c,o=p;return}let k=[];g<u?k.push(k_(u-g+1),w_(f)):k.push(w_(u-1));for(let b=0;b<f;b++){if(p[b]===o[b]){k.push(sj);continue}k.push(ij+p[b]+`
214
+ `)}e.write(k.join("")),s=c,o=p};return l.clear=()=>{e.write(a+Ri),s="",o=[]},l.done=()=>{s="",o=[],!r&&i&&(Zo(e),i=!1)},l.sync=d=>{let c=d+`
215
+ `;s=c,o=c.split(`
216
+ `)},l}function dj(e,t={}){let{showCursor:r=!1,topOffset:n=0}=t,o="",s=0,i=!1,a=n>0?`${gr}${n+1}H`:Wp,l=d=>{!r&&!i&&(es(e),i=!0);let c=d;if(c===o)return;let u=c.split(`
217
+ `),p=u.length,g=c;if(g=u.map(k=>k+Pl).join(`
218
+ `),s>p){let k=s-p;for(let b=0;b<k;b++)g+=`
219
+ `+Pl}e.write(a+g+Ri),o=c,s=p};return l.clear=()=>{e.write(a+Ri),o="",s=0},l.done=()=>{o="",s=0,!r&&i&&(Zo(e),i=!1)},l.sync=d=>{o=d,s=d.split(`
220
+ `).length},l}function Hp(e=process.stdout,t={}){let{incremental:r=!0,fullScreen:n=!1}=t;return n?dj(e,t):r?lj(e,t):aj(e,t)}function R_(e,t=200){let r=!1,n=null;return{schedule:()=>{r||(r=!0,n=setTimeout(()=>{r=!1,n=null,e()},t))},flush:()=>{n&&(clearTimeout(n),n=null),r=!1,e()},cancel:()=>{n&&(clearTimeout(n),n=null),r=!1},isPending:()=>r}}var __=Symbol("tuiuiu.overlay-runtime-state");function cj(e){for(let t of e.layers.values())t.dismissTimer&&clearTimeout(t.dismissTimer);e.tooltipTimer&&clearTimeout(e.tooltipTimer),e.tooltipTimer=null}function x_(e){let t=e.id===0?null:Ft(__,()=>x_(Cr())),r={layers:new Map,nextZIndex:100,terminalSize:{width:t?.terminalSize.width??80,height:t?.terminalSize.height??24},idCounter:0,toastQueue:[],activeTooltip:null,tooltipTimer:null,[Ar](){cj(r),r.layers.clear(),r.toastQueue=[],r.activeTooltip=null}};return r}function uj(){let e=Ne();return De(__,()=>x_(e),e)}function Up(e,t){let r=uj();r.terminalSize={width:e,height:t}}function E_(e){return"__reactive"in e}function pj(e){let t=e.__reactive(),r=Dt(t),n=r!==e.__cachedFingerprint;return e.__cachedResult=t,e.__cachedFingerprint=r,e.children=t?[t]:[],n}function v_(e){let t=0,r=n=>{E_(n)&&pj(n)&&t++;for(let o of n.children)r(o)};return r(e),t}function S_(e){let t=new Set,r=n=>{E_(n)&&!t.has(n)&&(t.add(n),n.__dispose?.(),n.__dispose=void 0);for(let o of n.children)r(o)};r(e)}function fj(e){return!!e.props.__static}function gj(e,t){let r=e.props;return r.__staticId?r.__staticId:`static-${t}-${Dt(e.children??[])}`}function hj(e){let t=[];function r(o){if(fj(o))return t.push(o),null;if(o.children&&o.children.length>0){let s=o.children.map(i=>i&&typeof i=="object"&&"type"in i?r(i):i).filter(i=>i!==null);return{...o,children:s}}return o}let n=r(e)??{type:"fragment",props:{},children:[]};return{staticNodes:t,interactiveNode:n}}var qp={clearTerminal:"\x1B[2J\x1B[3J\x1B[H"},mj={inline:{clearOnStart:!1,fullHeight:!1,alternateScreen:!1},fullscreen:{clearOnStart:!0,fullHeight:!0,alternateScreen:!1},alternate:{clearOnStart:!0,fullHeight:!0,alternateScreen:!0}};function Kp(e,t={}){let r=t.screenMode?mj[t.screenMode]:void 0,{stdout:n=process.stdout,stdin:o=process.stdin,debug:s=!1,exitOnCtrlC:i=!0,exitProcess:a=!1,maxPasteBytes:l,maxPendingEscapeBytes:d,escapeSequenceTimeoutMs:c,pasteTimeoutMs:u,maxFps:p=30,showCursor:g=!1,autoTabNavigation:f=!0,useDeltaRenderer:k=!0,fixedStep:b}=t,v=t.clearOnStart??r?.clearOnStart??!0,T=t.fullHeight??r?.fullHeight??!1,$=t.alternateScreen??r?.alternateScreen??!0;if(!Number.isFinite(p)||p<0)throw new Error("[tuiuiu] maxFps must be a finite non-negative number");if(b){if(!Number.isFinite(b.updateFps)||b.updateFps<=0)throw new Error("[tuiuiu] fixedStep.updateFps must be a finite positive number");if(b.maxCatchUpUpdates!==void 0&&(!Number.isSafeInteger(b.maxCatchUpUpdates)||b.maxCatchUpUpdates<1))throw new Error("[tuiuiu] fixedStep.maxCatchUpUpdates must be a positive safe integer")}let D=Bp(o,n,{autoTabNavigation:f,exitOnCtrlC:i,exitProcess:a,maxPasteBytes:l,maxPendingEscapeBytes:d,escapeSequenceTimeoutMs:c,pasteTimeoutMs:u}),L=qu(D);if(!L)throw D.dispose(),new Error("[tuiuiu] Failed to create the app runtime scope");let W=L,K=()=>{},H=[];try{K=Wk(),H.push(Jr(()=>{o.isTTY&&o.setRawMode&&o.setRawMode(!1)})),H.push(Jr(()=>{n.write("\x1B[?1004l")})),H.push(Jr(()=>{n.write("\x1B[?2004l")})),$&&(n.write(c_()),H.push(Jr(()=>{n.write(Op())})))}catch(re){for(let ye of H.splice(0))try{ye()}catch{}try{K()}catch{}throw D.dispose(),Ho(W),re}let I=typeof e=="function"?e:()=>e,N=!1,V=0,ge=0,fe=0,de,te,me=()=>{N=!1,be()},Oe=()=>{V++,V===1&&(ge=0,fe=0)},ve=()=>V===0?{bytes:0,writeMs:0}:(V--,V===0?{bytes:ge,writeMs:fe}:{bytes:0,writeMs:0}),ke=re=>{let ye=V>0?performance.now():0,Ie=n.write(re);return V>0&&(fe+=performance.now()-ye,ge+=typeof re=="string"?Buffer.byteLength(re):re.byteLength),!Ie&&!N&&!we&&(N=!0,n.once("drain",me)),Ie},J={get columns(){return n.columns},get rows(){return n.rows},get isTTY(){return n.isTTY},write(re){return ke(re)},on:n.on.bind(n),off:n.off.bind(n),once:n.once.bind(n),emit:n.emit.bind(n)},ie=Hp(J,{showCursor:g,incremental:!1,fullScreen:T,topOffset:0}),Re=0,Ae=null,Ee="",we=!1,Se=[],ce,oe,_e,Fe=new Set,it=0,$t=()=>{Re=it,ie=Hp(J,{showCursor:g,incremental:!1,fullScreen:T,topOffset:Re}),Ee=""},Yr=()=>{ie.clear(),ke(qp.clearTerminal),Ee="",Fe.clear(),it=0,Se=[],$t()},Qr=re=>{ie.clear(),ke(`${re}
221
+ `),it+=re.split(`
222
+ `).length,$t()};qe(W,()=>$p(Yr)),ce=new Promise((re,ye)=>{oe=re,_e=ye});let lo=D.dispose;D.dispose=()=>{if(we){lo();return}Pt(),oe()};let le=p>0?Math.ceil(1e3/p):0;qe(W,()=>{Dw({targetFps:p>0?p:60,reducedFps:p>0?Math.max(1,Math.floor(p/2)):30,frameBudgetMs:le>0?le:16.67}),Up(n.columns||80,n.rows||24)});let Gt=0,ct=!1,Ze=null,wt=null,at=null,ut=0,Rt=0,_t=0,jr=0,Ce=null,Le=[],Q=!1,C=null;k&&(C=WR({stdout:J,showCursor:g,useDelta:!0})),v&&!s&&ke(qp.clearTerminal);let w=le>0?le:16,M=R_(()=>{Le.length!==0&&Bt(()=>{for(;Le.length>0;){let re=Le;Le=[];for(let ye of re)ye()}})},w);qe(W,()=>Tl({enqueue(re){we||(Le.push(re),M.schedule())},flush(){we||M.flush()},isPending(){return Le.length>0||M.isPending()}}));let B=()=>{let re=performance.now();te=Date.now(),Ck("component");try{Ae=I(),v_(Ae)}finally{Ok(),de=performance.now()-re}},U=()=>qe(W,()=>{B(),mr()});function X(re){we||(wt=re,!N&&be())}function be(){if(ct||we||N||!wt)return;let ye=Date.now()-Gt,Ie=Gt===0||ye>=le?0:le-ye,Nt=()=>{let At=wt;if(wt=null,ct=!1,Ze=null,!we)try{At?.()}catch(Wt){D.exit(Wt instanceof Error?Wt:new Error(String(Wt)))}};if(ct=!0,Ie===0){queueMicrotask(Nt);return}Ze=setTimeout(Nt,Ie)}let je=re=>qe(W,()=>{if(we)return;let ye=Go(String(re)).replace(/\r\n?/g,`
223
+ `).replace(/\n+$/u,"");Se.push(ye),X(mr)});qe(W,()=>Sl(je));function Be(){if(!b||we||(b.pauseWhenUnfocused??!0)&&!ur())return;let ye=1e3/Math.max(1,b.updateFps),Ie=Math.max(0,Math.ceil(ye-ut));at=setTimeout(Qt,Ie)}function Qt(){if(!(!b||we))try{if((b.pauseWhenUnfocused??!0)&&!ur()){at=null,ut=0,Rt=Date.now();return}let ye=1e3/b.updateFps,Ie=b.maxCatchUpUpdates??5,Nt=Date.now();ut+=Nt-Rt,Rt=Nt;let At=0;for(;ut>=ye&&At<Ie;)ut-=ye,_t++,jr+=ye,Bt(()=>{b.onUpdate({deltaTimeMs:ye,step:_t,elapsedMs:jr})}),At++;ut>=ye&&(ut%=ye),Be()}catch(re){at=null,D.exit(re instanceof Error?re:new Error(String(re)))}}let hr=Vr(W,()=>{we||(oR(),Up(n.columns||80,n.rows||24),pw(),X(U))});n.on("resize",hr);let Ve=()=>{};D.onExit(re=>qe(W,()=>{Pt(),Ve(),re?_e(re):oe()}));function mr(){if(we||!Ae)return;Gt=Date.now();let re=te??Date.now(),ye=n.columns||80,Ie=n.rows||24,Nt=hj(Ae),At=()=>{C&&(C.cleanup(),C=null,ke(qp.clearTerminal),Fe.clear(),it=0,$t())};if(Se.length>0){At();let $e=Se;Se=[],Qr($e.join(`
224
+ `))}Nt.staticNodes.length>0&&At();let Wt=Math.max(1,Ie-it);if(C&&!s){let $e=so(Ae,{width:ye,height:Wt});$e.metrics.runtimeStartAt=re,de!==void 0&&st($e,"vnodeEvalMs",de);let Tn=performance.now();Sp($e),op($e.layout,it);let $r=Yo();$r.hasClickableElements()&&!Q?(Ko(),Q=!0):!$r.hasClickableElements()&&Q&&(zn(),Q=!1),st($e,"frameCommitMs",performance.now()-Tn),Tt($e,"reservedRegionCount",$e.reservedRegions.length),C.renderFrame($e),de=void 0,te=void 0;return}let{staticNodes:Xr,interactiveNode:xn}=Nt,En=performance.now();Oe();for(let $e=0;$e<Xr.length;$e++){let Tn=Xr[$e],$r=gj(Tn,$e);if(!Fe.has($r)){let Gr=e_(Tn,ye);Gr.trim()&&(Qr(Gr),Fe.add($r))}}let vn=Kw(),Ue=so(xn,{width:ye,height:Wt});Ue.metrics.runtimeStartAt=re,de!==void 0&&st(Ue,"vnodeEvalMs",de);let Sn=performance.now()-En;st(Ue,"staticRenderMs",Sn);let Zr=performance.now();Sp(Ue),op(Ue.layout,it);let Br=Yo();Br.hasClickableElements()&&!Q?(Ko(),Q=!0):!Br.hasClickableElements()&&Q&&(zn(),Q=!1),st(Ue,"frameCommitMs",performance.now()-Zr),Tt(Ue,"reservedRegionCount",Ue.reservedRegions.length);let et=Ap(Ue,{fullHeight:T,previousFrame:vn});if(et===Ee&&!s){let $e=ve();st(Ue,"outputWriteMs",$e.writeMs),Tt(Ue,"outputByteCount",$e.bytes),_n(Ue,{renderer:"ansi",runtimeStartAt:re}),Uo(Ue.layout),Xs(),de=void 0,te=void 0;return}s?ke(et+`
225
+ `):ie(et);let co=ve();st(Ue,"outputWriteMs",co.writeMs),Tt(Ue,"outputByteCount",co.bytes),_n(Ue,{renderer:"ansi",runtimeStartAt:re}),Uo(Ue.layout),Xs(),Ee=et,de=void 0,te=void 0}function Pt(){return qe(W,Xt)}function Xt(){if(we)return;we=!0;let re=ye=>{try{ye()}catch(Ie){console.error("[tuiuiu] Error while cleaning up the render loop:",Ie)}};Ze&&(clearTimeout(Ze),Ze=null),at&&(clearTimeout(at),at=null),Ce?.(),Ce=null,N=!1,re(()=>n.off("drain",me)),wt=null,ct=!1,M.cancel(),Le=[],Tl(null),Sl(null),Q&&(re(()=>zn()),Q=!1),re(()=>n.off("resize",hr)),re(C?()=>C?.cleanup():()=>ie.done()),$&&re(()=>{n.write(Op())}),N=!1,re(()=>n.off("drain",me)),re(()=>Qa(W)),Ae&&re(()=>S_(Ae)),re(()=>D.dispose());for(let ye of H.splice(0))re(ye);re(K),re(()=>Vw()),re(()=>Ho(W))}try{Ve=qe(W,()=>vw(()=>{U()},{scheduler:X})),qe(W,()=>{b&&(Rt=Date.now(),(b.pauseWhenUnfocused??!0)&&(Ce=pl(re=>{if(!(we||!b)){if(!re){at&&(clearTimeout(at),at=null),ut=0,Rt=Date.now();return}ut=0,Rt=Date.now(),at||Be()}})),Be())})}catch(re){try{Ve()}catch(ye){console.error("[tuiuiu] Error while rolling back the render effect:",ye)}throw Pt(),re}return{rerender:re=>qe(W,()=>{I=()=>re,X(U)}),unmount:()=>qe(W,()=>{Pt(),Ve(),s||ke(`
226
+ `),oe()}),waitUntilExit:()=>ce,clear:()=>qe(W,()=>{s||(Ze&&(clearTimeout(Ze),Ze=null),wt=null,ct=!1,Yr(),N?X(()=>{mr()}):mr())}),writeLine:je}}function bj(e){let t=Math.max(1,Math.floor(e.columns)),r=Math.max(1,Math.floor(e.rows)),n=Math.max(0,r-1),o=`q quit \xB7 r refresh \xB7 v deaths: ${e.showDeathDetails?"details":"summary"} \xB7 live 1s`;return Ip({flexDirection:"column",width:t,height:r,overflow:"hidden"},...e.lines.slice(0,n).map((s,i)=>ki({key:i,wrap:"truncate-end"},s)),Mp({flex:1}),ki({dim:e.noColor!==!0,wrap:"truncate-end"},o))}async function T_(e){let t=!1;function r(){let o=vl(),s=Gp(),[i,a]=_l(["redskilled \xB7 connecting to host\u2026"]),[l,d]=_l(e.initialShowDeathDetails),c=()=>{t||(t=!0,e.readFrame({columns:Math.max(1,s.columns||80),rows:Math.max(1,(s.rows||24)-1),showDeathDetails:l()}).then(a).catch(u=>{a([`redskilled dashboard failed \u2014 ${u instanceof Error?u.message:String(u)}`])}).finally(()=>{t=!1}))};return yi(()=>{let u=setTimeout(c,0);return()=>clearTimeout(u)}),Np(c,e.refreshMs??1e3),Fp((u,p)=>{let g=u.toLowerCase();if(g==="q"||p.escape){o.exit();return}if(g==="r"){c();return}g==="v"&&(d(f=>!f),setTimeout(c,0))}),bj({lines:i(),columns:s.columns||80,rows:s.rows||24,showDeathDetails:l(),noColor:e.noColor})}await Kp(r,{stdin:e.stdin,stdout:e.stdout,screenMode:"alternate",maxFps:10,exitOnCtrlC:!0,exitProcess:!1,showCursor:!1,useDeltaRenderer:!0}).waitUntilExit()}import{execFileSync as Tj}from"node:child_process";import{readFileSync as Pj}from"node:fs";import{dirname as F_,join as Aj}from"node:path";import{createHash as yj}from"node:crypto";var kj="project.name";function A_(e){let t=jo(e,kj)?.trim();return t===void 0||t===""?void 0:t}var wj=8,C_="project";function O_(e){let t=vj(e.gitCommonDir),r=(e.declaredName??"").trim(),n=r!==""?{name:r,source:"declared"}:Rj(e.remoteUrl)??{name:_j(e.checkoutPath,t),source:"basename"},o=Ej(t??Vp(e.checkoutPath));return{name:n.name,slug:`${xj(n.name)}-${o}`,hash:o,source:n.source}}function D_(e){let t=(e??"").trim();if(t==="")return;let r=t.replace(/^[a-zA-Z][a-zA-Z0-9+.-]*:\/\//,""),n=/^[^/]*?:(?!\d)(.+)$/.exec(r),s=(n?n[1]:r.replace(/^[^/]*/,"")).replace(/\.git$/,"").split("/").map(i=>i.trim()).filter(i=>i!=="");if(s.length!==0)return s.slice(-2).join("/")}function Rj(e){let t=D_(e);return t===void 0?void 0:{name:t,source:"remote"}}function _j(e,t){let r=t===void 0?"":P_(Sj(t));if(r!=="")return r;let n=P_(Vp(e));return n===""?C_:n}function xj(e){let r=e.split("/").map(n=>n.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")).filter(n=>n!=="").join("--");return r===""?C_:r}function Ej(e){return yj("sha256").update(e).digest("hex").slice(0,wj)}function vj(e){let t=Vp(e??"");return t===""?void 0:t}function Vp(e){let t=e.trim().replace(/\\/g,"/");return t.length>1?t.replace(/\/+$/,""):t}function P_(e){let t=e.split("/").filter(r=>r!=="");return t[t.length-1]??""}function Sj(e){return e.split("/").filter(r=>r!=="").slice(0,-1).join("/")}var Cj=2e3;function I_(e){return Oj(e).name}function Oj(e){let t=Jp(e),r=zp(e,["rev-parse","--absolute-git-dir"])??zp(e,["rev-parse","--git-common-dir"]),n=zp(e,["remote","get-url","origin"]);return O_({checkoutPath:t.root??e,...r!==void 0?{gitCommonDir:r}:{},...n!==void 0?{remoteUrl:n}:{},...t.name!==void 0?{declaredName:t.name}:{}})}function Jp(e){let t=D0(e,Aj(".red","config.yaml"));if(t==null)return{};let r;try{r=Pj(t,"utf8")}catch{return{}}let n=A_(r),o=F_(F_(t));return{...n===void 0?{}:{name:n},configText:r,root:o}}function zp(e,t){try{let r=Tj("git",[...t],{cwd:e,encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:Cj}).trim();return r===""?void 0:r}catch{return}}function Al(e){let t=Jp(e);return t.configText==null?{label:null}:{configText:t.configText,label:I_(e)}}async function Yp(e,t={}){let r=t.write??(g=>process.stdout.write(g)),n=t.warn??(g=>process.stderr.write(g)),o=Wa(e),s=Al(t.cwd??process.cwd()),i=Ha({...s.configText==null?{}:{configText:s.configText},project:s.label,flags:o.flags});for(let g of[...i.warnings,...o.warnings])n(`redskilled dashboard: ignoring ${g.key}=${g.value} \u2014 ${g.reason}
227
+ `);let a=t.paths??ir(),l=t.readDashboard??P0,d=t.terminal===void 0?process.stdout.isTTY===!0:t.terminal===!0,c=(t.env??process.env).NO_COLOR!==void 0,u={...i.options.project==null?{}:{project:i.options.project},mode:i.options.mode,showDeathDetails:i.options.verbose},p=async(g,f=!0)=>{try{let k=await l(a,g,{...t.client??{},...i.options.project==null?{}:{sessionProject:i.options.project}});return c?k.lines.map(Sa):k.lines}catch(k){let b=k instanceof Error?k.message:String(k);return f&&n(`redskilled dashboard: ${b}
228
+ `),[`redskilled unreachable \u2014 ${b}`]}};if(!d){let g=await p({...u,...i.options.maxWidth==null?{}:{maxWidth:i.options.maxWidth}});return r(`${g.join(`
229
+ `)}
230
+ `),0}return await(t.runTui??T_)({initialShowDeathDetails:i.options.verbose,noColor:c,readFrame:async({columns:g,rows:f,showDeathDetails:k})=>{let b=Math.max(1,Math.min(i.options.maxWidth??g,g)),v=Math.max(1,f);return await p({...u,maxWidth:b,maxHeight:v,maxRows:Math.max(0,v-5),showDeathDetails:k},!1)}}),0}var Fj=`Usage: redskilled <command> [options]
114
231
 
115
232
  Commands:
116
233
  host-state (default) print the host's state as JSON
@@ -124,7 +241,7 @@ Commands:
124
241
 
125
242
  Run \`redskilled <command> --help\` for a command's own usage.
126
243
  \`--version\` (\`-v\`) prints the build stamp; both answer offline.
127
- `,Tx={serve:`Usage: redskilled serve [options]
244
+ `,Ij={serve:`Usage: redskilled serve [options]
128
245
 
129
246
  Runs the daemon in this process. Every path is a flag and none is derived
130
247
  (ADR 0130 rule 3); what is absent falls back to the session derivation.
@@ -158,9 +275,11 @@ decision 1) \u2014 a density argument, never a second renderer.
158
275
 
159
276
  global every project's Workers, each naming its owner
160
277
  --max-width N hard ceiling in characters
278
+ --verbose expand recent death receipts
161
279
 
162
- It always writes something and always exits 0: a dashboard that printed nothing
163
- is indistinguishable from a host with no Workers.`,"github-spend":`Usage: redskilled github-spend [--pool <pool|all>] [--hours <n>]
280
+ In a TTY it refreshes one stable screen and follows resize; in a pipe it writes
281
+ one snapshot. Press q to quit, r to refresh now, or v to toggle death details.
282
+ It always states an unreachable host and exits 0.`,"github-spend":`Usage: redskilled github-spend [--pool <pool|all>] [--hours <n>]
164
283
 
165
284
  Reports what this host observed itself spending from GitHub's API budget,
166
285
  grouped by operation key and Worker. Defaults to the GraphQL pool over the last
@@ -209,28 +328,23 @@ Reports every session runtime dir it looked at and why it kept or removed it.
209
328
 
210
329
  --dry-run the same report with nothing removed
211
330
  --grace-ms <n> how long a dir must be idle before it is reclaimed
212
- `};function xx(e){return e==="--help"||e==="-h"||e==="help"}var Px={socket:{kind:"value",coerce:e=>e},lease:{kind:"value",coerce:e=>e},events:{kind:"value",coerce:e=>e},"session-key-hash":{kind:"value",coerce:e=>e},"machine-id-hash":{kind:"value",coerce:e=>e},"machine-claim":{kind:"value",coerce:e=>e},"worker-ceiling":{kind:"value",coerce:e=>e},"memory-ceiling":{kind:"value",coerce:e=>e},"idle-ms":{kind:"value",coerce:e=>Number(e)},"daemon-version":{kind:"value",coerce:e=>e},"queue-endpoint":{kind:"value",coerce:e=>e},"queue-ms":{kind:"value",coerce:e=>Number(e)},"demand-ms":{kind:"value",coerce:e=>Number(e)}},Nf="REDSKILLED_HOST_TOKEN";function Cn(){try{let r=vx("gh",["auth","token"],{encoding:"utf8",timeout:5e3,stdio:["ignore","pipe","ignore"]}).trim();return r===""?null:r}catch{return null}}function Mf(e=process.env,r=Cn){let t=(e[Nf]??e.GITHUB_TOKEN??e.GH_TOKEN??"").trim();if(t!=="")return{token:t,source:"env"};let n=(r()??"").trim();return n!==""?{token:n,source:"tracker-cli"}:null}function Ox(e,r=process.env,t=Cn,n){return{...e["queue-ms"]==null?{}:{intervalMs:e["queue-ms"]},...Cf(e,r,t,n),armTransport:()=>Cf(e,r,t,n)}}function Ax(e,r=process.env,t=Cn){let n=Mf(r,t);if(n==null)return null;let o=r.GITHUB_API_URL;return{transport:Ea({token:n.token,...o?{origin:o}:{}})}}function Cf(e,r=process.env,t=Cn,n){let o=Mf(r,t);if(o==null)return{unconfiguredReason:`no credential names a tracker for this host: ${Nf}, GITHUB_TOKEN and GH_TOKEN are all unset in the daemon's environment and \`gh auth token\` returned nothing \u2014 so no queue depth is asked for, and no depth is invented either`};let s=e["queue-endpoint"]??r.GITHUB_GRAPHQL_URL;return{transport:hm({token:o.token,...s?{endpoint:s}:{},...n?{attribution:n}:{}})}}async function Dx(e){if(e[0]==="--version"||e[0]==="-v"){let o=qs("redskilled");return process.stdout.write(e.includes("--json")?`${JSON.stringify(o)}
213
- `:`${Id(o)}
214
- `),0}if(xx(e[0]))return process.stdout.write(Sx),0;let{command:r,args:t}=Md(e,{commands:{serve:{},stop:{},"host-state":{},statusline:{},dashboard:{},"github-spend":{},unit:{},provision:{},reclaim:{}},default:"host-state"});if(t.some(o=>o==="--help"||o==="-h"))return process.stdout.write(Tx[r]),0;if(r==="serve"){let{values:o}=cr(t,Px),s=await pf($n()),i=mf({flags:{...o["worker-ceiling"]==null?{}:{workerCeiling:o["worker-ceiling"]},...o["memory-ceiling"]==null?{}:{memoryCeiling:o["memory-ceiling"]},...o["idle-ms"]==null?{}:{idleMs:o["idle-ms"]}},config:s}),a=us(Ue($n()),"state"),l=Go({path:us(a,"github","spend.toonl")}),d=Ox(o,process.env,Cn,l),c=Ax(o),u=sc({stateRoot:a});process.stderr.write(`${ic(u)}
215
- `);let m=ec({lanePath:Yt(a),kind:"daemon",id:`daemon:${process.pid}`,phase:"serving"}),f=await Zg({paths:Hx(o),idleMs:i.idleMs,ceiling:i.ceiling,daemonVersion:o["daemon-version"]??qs("redskilled").version,deaths:u.attributions,queueDiscovery:d,...c==null?{}:{githubBalance:c},...o["demand-ms"]==null?{}:{demandMs:o["demand-ms"]}});for(let h of["SIGTERM","SIGINT"])process.once(h,()=>void f.stop({reason:"signal",signal:h}).catch(()=>{}));return await f.closed,m.phase("closed"),0}if(r==="stop")return await $x(t);if(r==="statusline")return await Nx(t);if(r==="dashboard")return await Vx(t);if(r==="github-spend")return await Lx(t);if(r==="unit")return await Cx(t);if(r==="provision")return await Fx(t);if(r==="reclaim")return await Ux(t);let n=await af(Qe());return process.stdout.write(`${JSON.stringify(n,null,2)}
216
- `),0}var jx={pool:{kind:"value",coerce:e=>e},hours:{kind:"value",coerce:e=>Number(e)}};async function Lx(e,r={}){let{values:t}=cr(e,jx,{unknownFlags:"error"}),n=t.hours??1;if(!Number.isFinite(n)||n<=0)throw new Error(`redskilled github-spend --hours must be a positive number; received ${String(n)}`);let o=t.pool??"graphql",s=o==="all"?void 0:Gx(o),i=(r.now??(()=>new Date().toISOString()))(),a=Date.parse(i);if(!Number.isFinite(a))throw new Error(`redskilled github-spend clock returned an invalid instant: ${i}`);let l=new Date(a-n*60*60*1e3).toISOString(),c=await(r.ledger??Go({path:us(Ue(r.homeDir??$n()),"state","github","spend.toonl")})).report({from:l,to:i,...s===void 0?{}:{pool:s}});return(r.write??(u=>process.stdout.write(u)))(`${X({version:c.version,origin:c.origin,window:{from:c.window.from,to:c.window.to},pool:c.pool,total_count:c.total_count,total_cost:c.total_cost,operations:c.operations.map(u=>({operation_key:u.operation_key,pool:u.pool,...u.actor===void 0?{}:{actor:u.actor},count:u.count,cost:u.cost})),unreadable_records:c.unreadable_records})}
217
- `),0}function Gx(e){if(e==="graphql"||e==="rest"||e==="search")return e;throw new Error(`redskilled github-spend --pool must be graphql, rest, search or all; received ${JSON.stringify(e)}`)}var Ix={reason:{kind:"value",coerce:e=>e},"settle-timeout-ms":{kind:"value",coerce:e=>Number(e)}};async function $x(e,r={}){let t=r.write??(s=>process.stdout.write(s)),{values:n}=cr(e,Ix),o=await sf(r.paths??Qe(),{...n.reason==null?{}:{detail:n.reason},...Number.isFinite(n["settle-timeout-ms"])?{settleTimeoutMs:n["settle-timeout-ms"]}:{}},r.client??{});return t(`${X({running:o.running,stopped:o.stopped,reason:o.reason,socket:o.socket_path,daemon_version:o.daemon_version,pid:o.pid,holding:{workers:o.holding.workers.length,projects:[...o.holding.projects]},surviving:[...o.surviving],workers:o.holding.workers.map(s=>({worker_id:s.worker_id,project_label:s.project_label,pid:s.pid,unit:s.unit,isolated:s.isolated,survives:s.survives})),detail:o.detail})}
218
- `),o.running&&!o.stopped?1:0}async function Cx(e,r={}){let t=r.write??(s=>process.stdout.write(s)),n=r.paths??Qe(),o=e[0]??"status";if(o==="status")return t(`${JSON.stringify(xg(r.unitIO??{}),null,2)}
219
- `),0;if(o==="install"){let s=await Sg(Eg(n),r.unitIO??{});return t(`${JSON.stringify(s,null,2)}
220
- `),s.installed?0:1}if(o==="uninstall")return t(`${JSON.stringify(await Tg(r.unitIO??{}),null,2)}
221
- `),0;throw new Error(`unsupported redskilled unit action ${JSON.stringify(o)}: expected install, uninstall or status`)}async function Nx(e,r={}){let t=r.write??(l=>process.stdout.write(l)),n=r.warn??(l=>process.stderr.write(l)),o=Tl(e),s=Ff(r.cwd??process.cwd()),i=xl({...s.configText==null?{}:{configText:s.configText},project:s.label,flags:o.flags});for(let l of[...i.warnings,...o.warnings])n(`redskilled statusline: ignoring ${l.key}=${l.value} \u2014 ${l.reason}
222
- `);let a;try{a=await df(r.paths??Qe(),i.options,{...r.client??{},...i.options.project==null?{}:{sessionProject:i.options.project}})}catch(l){n(`redskilled statusline: ${l instanceof Error?l.message:String(l)}
223
- `),a=Ka({options:i.options,generated_at:(r.now??(()=>new Date().toISOString()))()})}return t(`${a.lines.join(`
224
- `)}
225
- `),0}var Mx={"no-start":{kind:"boolean"},"install-unit":{kind:"boolean"},check:{kind:"boolean"},project:{kind:"value",coerce:e=>e},workspace:{kind:"value",coerce:e=>e}};async function Fx(e,r={}){let t=r.write??(m=>process.stdout.write(m)),{values:n}=cr(e,Mx),o=r.paths??Qe(),s=r.homeDir??$n(),i=await El({homeDir:s,declaredTarget:n.workspace,projectRoot:n.project??r.projectRoot??process.cwd()}),a=n.check||!i.needed?void 0:await Tf(s),l;if(!n.check&&!n["no-start"])try{await kl(o,r.client??{})}catch(m){l=m instanceof Error?m.message:String(m)}let d=await Of({paths:o,homeNeed:i,...r.homeDir==null?{}:{homeDir:r.homeDir},...r.configHome==null?{}:{configHome:r.configHome},...r.client?.serverCommand==null?{}:{entryOverride:{serverCommand:r.client.serverCommand,serverArgs:r.client.serverArgs}}}),c=n["install-unit"]&&He(d.entry)?await jf({configHome:r.configHome??Bx(),unit:Df({command:[d.entry.command,...d.entry.args].join(" "),socketPath:o.socketPath})}):void 0,u=Pf(d);return t(`${X({verdict:u.verdict,home:{path:a?.path??d.homePath,created:a?.created??!1,tightened:a?.tightened??!1,needed:i.needed,needed_by:i.declaredBy},socket:d.socketPath,...l==null?{}:{start_error:l},...c==null?{}:{unit:{path:c.path,status:c.status}},checks:u.rows.map(m=>({check:m.check,verdict:m.verdict,evidence:m.evidence})),fixes:u.findings.map(m=>({check:m.check,fix:m.fix}))})}
226
- `),u.verdict==="ok"?0:1}var Wx={"dry-run":{kind:"boolean"},"grace-ms":{kind:"value",coerce:e=>Number(e)}};async function Ux(e,r={}){let t=r.write??(s=>process.stdout.write(s)),{values:n}=cr(e,Wx),o=await If({...r.options??{},dryRun:n["dry-run"]===!0,...Number.isFinite(n["grace-ms"])?{graceMs:n["grace-ms"]}:{}});return t(`${X({roots:[...o.roots],scanned:o.scanned,reclaimed:o.reclaimed,dry_run:o.dryRun,entries:o.entries.map(s=>({dir:s.dir,verdict:s.verdict,reason:s.reason,removed:[...s.removed]}))})}
227
- `),o.entries.some(s=>s.verdict==="failed")?1:0}function Bx(){let e=process.env.XDG_CONFIG_HOME?.trim();return e&&e!==""?e:us($n(),".config")}function Ff(e){let r=ci(e);return r.configText==null?{label:null}:{configText:r.configText,label:gc(e)}}function Hx(e){let r=Qe();return{...r,socketPath:e.socket??r.socketPath,leasePath:e.lease??r.leasePath,eventLanePath:e.events??r.eventLanePath,sessionKeyHash:e["session-key-hash"]??r.sessionKeyHash,machineIdHash:e["machine-id-hash"]??r.machineIdHash,machineClaimPath:e["machine-claim"]??r.machineClaimPath}}var qx=process.argv[1]!=null&&import.meta.url===new URL(`file://${process.argv[1]}`).href;if(qx){let e=process.argv.slice(2);Dx(e).then(r=>{e[0]==="serve"&&process.exit(r),process.exitCode=r},r=>{process.stderr.write(`redskilled: ${r instanceof Error?r.message:String(r)}
228
- `),process.exitCode=1})}async function Vx(e,r={}){let t=r.write??(a=>process.stdout.write(a)),n=r.warn??(a=>process.stderr.write(a)),o=Tl(e),s=Ff(r.cwd??process.cwd()),i=xl({...s.configText==null?{}:{configText:s.configText},project:s.label,flags:o.flags});for(let a of[...i.warnings,...o.warnings])n(`redskilled dashboard: ignoring ${a.key}=${a.value} \u2014 ${a.reason}
229
- `);try{let a=await cf(r.paths??Qe(),{...i.options.project==null?{}:{project:i.options.project},mode:i.options.mode,...i.options.maxWidth==null?{}:{maxWidth:i.options.maxWidth}},{...r.client??{},...i.options.project==null?{}:{sessionProject:i.options.project}});t(`${a.lines.join(`
331
+ `};function Mj(e){return e==="--help"||e==="-h"||e==="help"}var Lj={socket:{kind:"value",coerce:e=>e},lease:{kind:"value",coerce:e=>e},events:{kind:"value",coerce:e=>e},"session-key-hash":{kind:"value",coerce:e=>e},"machine-id-hash":{kind:"value",coerce:e=>e},"machine-claim":{kind:"value",coerce:e=>e},"worker-ceiling":{kind:"value",coerce:e=>e},"memory-ceiling":{kind:"value",coerce:e=>e},"idle-ms":{kind:"value",coerce:e=>Number(e)},"daemon-version":{kind:"value",coerce:e=>e},"queue-endpoint":{kind:"value",coerce:e=>e},"queue-ms":{kind:"value",coerce:e=>Number(e)},"demand-ms":{kind:"value",coerce:e=>Number(e)}},L_="REDSKILLED_HOST_TOKEN";function xi(){try{let t=Dj("gh",["auth","token"],{encoding:"utf8",timeout:5e3,stdio:["ignore","pipe","ignore"]}).trim();return t===""?null:t}catch{return null}}function j_(e=process.env,t=xi){let r=(e[L_]??e.GITHUB_TOKEN??e.GH_TOKEN??"").trim();if(r!=="")return{token:r,source:"env"};let n=(t()??"").trim();return n!==""?{token:n,source:"tracker-cli"}:null}function jj(e,t=process.env,r=xi,n){return{...e["queue-ms"]==null?{}:{intervalMs:e["queue-ms"]},...M_(e,t,r,n),armTransport:()=>M_(e,t,r,n)}}function Bj(e,t=process.env,r=xi){let n=j_(t,r);if(n==null)return null;let o=t.GITHUB_API_URL;return{transport:Ic({token:n.token,...o?{origin:o}:{}})}}function M_(e,t=process.env,r=xi,n){let o=j_(t,r);if(o==null)return{unconfiguredReason:`no credential names a tracker for this host: ${L_}, GITHUB_TOKEN and GH_TOKEN are all unset in the daemon's environment and \`gh auth token\` returned nothing \u2014 so no queue depth is asked for, and no depth is invented either`};let s=e["queue-endpoint"]??t.GITHUB_GRAPHQL_URL;return{transport:Mb({token:o.token,...s?{endpoint:s}:{},...n?{attribution:n}:{}})}}async function $j(e){if(e[0]==="--version"||e[0]==="-v"){let o=od("redskilled");return process.stdout.write(e.includes("--json")?`${JSON.stringify(o)}
332
+ `:`${og(o)}
333
+ `),0}if(Mj(e[0]))return process.stdout.write(Fj),0;let{command:t,args:r}=lg(e,{commands:{serve:{},stop:{},"host-state":{},statusline:{},dashboard:{},"github-spend":{},unit:{},provision:{},reclaim:{}},default:"host-state"});if(r.some(o=>o==="--help"||o==="-h"))return process.stdout.write(Ij[t]),0;if(t==="serve"){let{values:o}=tn(r,Lj),s=await C0(_i()),i=O0({flags:{...o["worker-ceiling"]==null?{}:{workerCeiling:o["worker-ceiling"]},...o["memory-ceiling"]==null?{}:{memoryCeiling:o["memory-ceiling"]},...o["idle-ms"]==null?{}:{idleMs:o["idle-ms"]}},config:s}),a=Cl(Rr(_i()),"state"),l=da({path:Cl(a,"github","spend.toonl")}),d=jj(o,process.env,xi,l),c=Bj(o),u=Pg({stateRoot:a});process.stderr.write(`${Ag(u)}
334
+ `);let p=xg({lanePath:fs(a),kind:"daemon",id:`daemon:${process.pid}`,phase:"serving"}),g=await y0({paths:Xj(o),idleMs:i.idleMs,ceiling:i.ceiling,daemonVersion:o["daemon-version"]??od("redskilled").version,deaths:u.attributions,queueDiscovery:d,...c==null?{}:{githubBalance:c},...o["demand-ms"]==null?{}:{demandMs:o["demand-ms"]}});for(let f of["SIGTERM","SIGINT"])process.once(f,()=>void g.stop({reason:"signal",signal:f}).catch(()=>{}));return await g.closed,p.phase("closed"),0}if(t==="stop")return await Uj(r);if(t==="statusline")return await Kj(r);if(t==="dashboard")return await Yp(r);if(t==="github-spend")return await Nj(r);if(t==="unit")return await qj(r);if(t==="provision")return await zj(r);if(t==="reclaim")return await Yj(r);let n=await v0(ir());return process.stdout.write(`${JSON.stringify(n,null,2)}
335
+ `),0}var Gj={pool:{kind:"value",coerce:e=>e},hours:{kind:"value",coerce:e=>Number(e)}};async function Nj(e,t={}){let{values:r}=tn(e,Gj,{unknownFlags:"error"}),n=r.hours??1;if(!Number.isFinite(n)||n<=0)throw new Error(`redskilled github-spend --hours must be a positive number; received ${String(n)}`);let o=r.pool??"graphql",s=o==="all"?void 0:Wj(o),i=(t.now??(()=>new Date().toISOString()))(),a=Date.parse(i);if(!Number.isFinite(a))throw new Error(`redskilled github-spend clock returned an invalid instant: ${i}`);let l=new Date(a-n*60*60*1e3).toISOString(),c=await(t.ledger??da({path:Cl(Rr(t.homeDir??_i()),"state","github","spend.toonl")})).report({from:l,to:i,...s===void 0?{}:{pool:s}});return(t.write??(u=>process.stdout.write(u)))(`${nt({version:c.version,origin:c.origin,window:{from:c.window.from,to:c.window.to},pool:c.pool,total_count:c.total_count,total_cost:c.total_cost,operations:c.operations.map(u=>({operation_key:u.operation_key,pool:u.pool,...u.actor===void 0?{}:{actor:u.actor},count:u.count,cost:u.cost})),unreadable_records:c.unreadable_records})}
336
+ `),0}function Wj(e){if(e==="graphql"||e==="rest"||e==="search")return e;throw new Error(`redskilled github-spend --pool must be graphql, rest, search or all; received ${JSON.stringify(e)}`)}var Hj={reason:{kind:"value",coerce:e=>e},"settle-timeout-ms":{kind:"value",coerce:e=>Number(e)}};async function Uj(e,t={}){let r=t.write??(s=>process.stdout.write(s)),{values:n}=tn(e,Hj),o=await E0(t.paths??ir(),{...n.reason==null?{}:{detail:n.reason},...Number.isFinite(n["settle-timeout-ms"])?{settleTimeoutMs:n["settle-timeout-ms"]}:{}},t.client??{});return r(`${nt({running:o.running,stopped:o.stopped,reason:o.reason,socket:o.socket_path,daemon_version:o.daemon_version,pid:o.pid,holding:{workers:o.holding.workers.length,projects:[...o.holding.projects]},surviving:[...o.surviving],workers:o.holding.workers.map(s=>({worker_id:s.worker_id,project_label:s.project_label,pid:s.pid,unit:s.unit,isolated:s.isolated,survives:s.survives})),detail:o.detail})}
337
+ `),o.running&&!o.stopped?1:0}async function qj(e,t={}){let r=t.write??(s=>process.stdout.write(s)),n=t.paths??ir(),o=e[0]??"status";if(o==="status")return r(`${JSON.stringify(Ky(t.unitIO??{}),null,2)}
338
+ `),0;if(o==="install"){let s=await Uy(Wy(n),t.unitIO??{});return r(`${JSON.stringify(s,null,2)}
339
+ `),s.installed?0:1}if(o==="uninstall")return r(`${JSON.stringify(await qy(t.unitIO??{}),null,2)}
340
+ `),0;throw new Error(`unsupported redskilled unit action ${JSON.stringify(o)}: expected install, uninstall or status`)}async function Kj(e,t={}){let r=t.write??(l=>process.stdout.write(l)),n=t.warn??(l=>process.stderr.write(l)),o=Wa(e),s=Al(t.cwd??process.cwd()),i=Ha({...s.configText==null?{}:{configText:s.configText},project:s.label,flags:o.flags});for(let l of[...i.warnings,...o.warnings])n(`redskilled statusline: ignoring ${l.key}=${l.value} \u2014 ${l.reason}
341
+ `);let a;try{a=await T0(t.paths??ir(),i.options,{...t.client??{},...i.options.project==null?{}:{sessionProject:i.options.project}})}catch(l){n(`redskilled statusline: ${l instanceof Error?l.message:String(l)}
342
+ `),a=ou({options:i.options,generated_at:(t.now??(()=>new Date().toISOString()))()})}return r(`${a.lines.join(`
230
343
  `)}
231
- `)}catch(a){n(`redskilled dashboard: ${a instanceof Error?a.message:String(a)}
232
- `),t(`redskilled unreachable \u2014 the host was not asked, so its Workers are unknown
233
- `)}return 0}export{Nf as REDSKILLED_HOST_TOKEN_ENV,Sx as REDSKILLED_USAGE,Cf as armRedskilledQueueTransport,Mf as resolveRedskilledHostToken,Ax as resolveServeGithubBalance,Ox as resolveServeQueueDiscovery,Vx as runDashboard,Lx as runGithubSpend,Fx as runProvision,Ux as runReclaim,Dx as runRedskilledCli,Nx as runStatusline,$x as runStop,Cx as runUnit};
344
+ `),0}var Vj={"no-start":{kind:"boolean"},"install-unit":{kind:"boolean"},check:{kind:"boolean"},project:{kind:"value",coerce:e=>e},workspace:{kind:"value",coerce:e=>e}};async function zj(e,t={}){let r=t.write??(p=>process.stdout.write(p)),{values:n}=tn(e,Vj),o=t.paths??ir(),s=t.homeDir??_i(),i=await Iu({homeDir:s,declaredTarget:n.workspace,projectRoot:n.project??t.projectRoot??process.cwd()}),a=n.check||!i.needed?void 0:await q0(s),l;if(!n.check&&!n["no-start"])try{await Au(o,t.client??{})}catch(p){l=p instanceof Error?p.message:String(p)}let d=await z0({paths:o,homeNeed:i,...t.homeDir==null?{}:{homeDir:t.homeDir},...t.configHome==null?{}:{configHome:t.configHome},...t.client?.serverCommand==null?{}:{entryOverride:{serverCommand:t.client.serverCommand,serverArgs:t.client.serverArgs}}}),c=n["install-unit"]&&xr(d.entry)?await Q0({configHome:t.configHome??Qj(),unit:Y0({command:[d.entry.command,...d.entry.args].join(" "),socketPath:o.socketPath})}):void 0,u=V0(d);return r(`${nt({verdict:u.verdict,home:{path:a?.path??d.homePath,created:a?.created??!1,tightened:a?.tightened??!1,needed:i.needed,needed_by:i.declaredBy},socket:d.socketPath,...l==null?{}:{start_error:l},...c==null?{}:{unit:{path:c.path,status:c.status}},checks:u.rows.map(p=>({check:p.check,verdict:p.verdict,evidence:p.evidence})),fixes:u.findings.map(p=>({check:p.check,fix:p.fix}))})}
345
+ `),u.verdict==="ok"?0:1}var Jj={"dry-run":{kind:"boolean"},"grace-ms":{kind:"value",coerce:e=>Number(e)}};async function Yj(e,t={}){let r=t.write??(s=>process.stdout.write(s)),{values:n}=tn(e,Jj),o=await ek({...t.options??{},dryRun:n["dry-run"]===!0,...Number.isFinite(n["grace-ms"])?{graceMs:n["grace-ms"]}:{}});return r(`${nt({roots:[...o.roots],scanned:o.scanned,reclaimed:o.reclaimed,dry_run:o.dryRun,entries:o.entries.map(s=>({dir:s.dir,verdict:s.verdict,reason:s.reason,removed:[...s.removed]}))})}
346
+ `),o.entries.some(s=>s.verdict==="failed")?1:0}function Qj(){let e=process.env.XDG_CONFIG_HOME?.trim();return e&&e!==""?e:Cl(_i(),".config")}function Xj(e){let t=ir();return{...t,socketPath:e.socket??t.socketPath,leasePath:e.lease??t.leasePath,eventLanePath:e.events??t.eventLanePath,sessionKeyHash:e["session-key-hash"]??t.sessionKeyHash,machineIdHash:e["machine-id-hash"]??t.machineIdHash,machineClaimPath:e["machine-claim"]??t.machineClaimPath}}var Zj=process.argv[1]!=null&&import.meta.url===new URL(`file://${process.argv[1]}`).href;if(Zj){let e=process.argv.slice(2);$j(e).then(t=>{e[0]==="serve"&&process.exit(t),process.exitCode=t},t=>{process.stderr.write(`redskilled: ${t instanceof Error?t.message:String(t)}
347
+ `),process.exitCode=1})}export{L_ as REDSKILLED_HOST_TOKEN_ENV,Fj as REDSKILLED_USAGE,M_ as armRedskilledQueueTransport,j_ as resolveRedskilledHostToken,Bj as resolveServeGithubBalance,jj as resolveServeQueueDiscovery,Yp as runDashboard,Nj as runGithubSpend,zj as runProvision,Yj as runReclaim,$j as runRedskilledCli,Kj as runStatusline,Uj as runStop,qj as runUnit};
234
348
  /*! Bundled license information:
235
349
 
236
350
  content-type/dist/index.js: