@dmgnr/kuber 2.5.1 → 2.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +3 -3
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -96,7 +96,7 @@ ${t}`,Ov,Iv,Bv=(e,t,r)=>{let o=r===""?"":`with ${r.trim()}() `,n=Tv.bind(null,o,
96
96
  `),s=Math.max(0,i.length-o);if(s===0)return{text:t,wasClipped:!1};let a=0;for(let l=0;l<s;l++)a+=Q(i[l])+1;let c=oe(t,a),u=Pa(c);while(u>o)a++,c=oe(t,a),u=Pa(c);while(a>0){let l=oe(t,a-1);if(Pa(l)>o)break;a--,c=l}return{text:c,wasClipped:a>0}},SE=(e,t)=>{let r=0;for(;r<e.length&&r<t.length;r++)if(e[r]!==t[r])break;let o=e.length-1,n=t.length-1;while(o>=r&&n>=r&&e[o]===t[n])o--,n--;return{start:r,endPrevious:o,endNext:n}},$E=({prevCount:e,start:t,endPrevious:r,endNext:o,nextLines:n,nextWrappedEndsWithNewline:i})=>{let s="",a=e-1,c=t-a;if(c>0)s+=ta(c);if(c<0)s+=zo(-c);s+=ra;let u=Math.max(0,r-t+1);for(let h=0;h<u;h++)if(s+=Cm,h<u-1)s+=ta();if(u>1)s+=zo(u-1);s+=ra;let l=n.slice(t,o+1),f=0;if(l.length>0){let h=l.join(`
97
97
  `),y=i&&o<n.length-1&&!h.endsWith(`
98
98
  `);if(s+=h,f=xE(h)-1,s+=Av,y)s+=`
99
- `,f++}let p=t+f,m=n.length-1-p;if(m>0)s+=ta(m);if(m<0)s+=zo(-m);return s},GR,KR;var Yh=_(()=>{Tm();Qm();ya();ka();Uo();Mo();GR=Xo(Jh.stdout),KR=Xo(Jh.stderr)});function en(e,t,r){if(e.charAt(t)===" ")return t;let o=r?1:-1;for(let n=0;n<=3;n++){let i=t+n*o;if(e.charAt(i)===" ")return i}return t}function kE(e,t,r,o){if(typeof e!=="string")throw TypeError(`Expected \`input\` to be a string, got ${typeof e}`);if(typeof t!=="number")throw TypeError(`Expected \`columns\` to be a number, got ${typeof t}`);if(!Number.isFinite(t))throw TypeError(`Expected \`columns\` to be a finite number, got ${t}`);if(!AE.has(r))throw TypeError(`Expected \`options.position\` to be either \`start\`, \`middle\` or \`end\`, got ${r}`);if(typeof o!=="string")throw TypeError(`Expected \`options.truncationCharacter\` to be a string, got ${typeof o}`)}function Ca(e,t,r={}){let{position:o="end",space:n=!1,preferTruncationOnSpace:i=!1}=r,{truncationCharacter:s="\u2026"}=r;if(kE(e,t,o,s),t<1)return"";let a=Q(e);if(a<=t)return e;if(t===1)return s;let c={ESC:27,LEFT_BRACKET:91,LETTER_M:109},u=(m)=>m>=48&&m<=57||m===59;function l(m){let h=0;while(h+2<m.length&&m.codePointAt(h)===c.ESC&&m.codePointAt(h+1)===c.LEFT_BRACKET){let y=h+2;while(y<m.length&&u(m.codePointAt(y)))y++;if(y<m.length&&m.codePointAt(y)===c.LETTER_M){h=y+1;continue}break}return h}function f(m){let h=m.length;while(h>1&&m.codePointAt(h-1)===c.LETTER_M){let y=h-2;while(y>=0&&u(m.codePointAt(y)))y--;if(y>=1&&m.codePointAt(y-1)===c.ESC&&m.codePointAt(y)===c.LEFT_BRACKET){h=y-1;continue}break}return h}function p(m,h){let y=f(m);if(y===m.length)return m+h;return m.slice(0,y)+h+m.slice(y)}function d(m,h){let y=l(h);if(y===0)return m+h;return h.slice(0,y)+m+h.slice(y)}if(o==="start"){if(i){let h=en(e,a-t+Q(s),!0),y=oe(e,h,a).trim();return d(s,y)}if(n)s+=" ";let m=oe(e,a-t+Q(s),a);return d(s,m)}if(o==="middle"){if(n){if(s=` ${s} `,Q(s)>=t)s=s.trim()}let m=Q(s),h=Math.min(Math.floor(t/2),Math.max(0,t-m));if(i){let y=en(e,h),b=en(e,a-(t-h)+m,!0);return oe(e,0,y)+s+oe(e,b,a).trim()}return oe(e,0,h)+s+oe(e,a-(t-h)+m,a)}if(o==="end"){if(i){let h=en(e,t-Q(s)),y=oe(e,0,h);return p(y,s)}if(n)s=` ${s}`;let m=oe(e,0,t-Q(s));return p(m,s)}}var AE;var Xh=_(()=>{ka();Mo();AE=new Set(["start","middle","end"])});import PE,{setMaxListeners as CE}from"events";import{inspect as RE,styleText as TE}from"util";import{format as OE}from"util";import{EOL as Se}from"os";import{StringDecoder as IE}from"string_decoder";import{Writable as BE}from"stream";import{randomUUID as zE}from"crypto";function VE(e){return!!e&&typeof e==="object"&&typeof e.subscribe==="function"}function UE(e){return!!e&&typeof e==="object"&&e.readable===!0&&typeof e.read==="function"&&typeof e.on==="function"}function ag(){return!!process.env.LISTR_FORCE_UNICODE||process.platform!=="win32"||!!process.env.CI||!!process.env.WT_SESSION||process.env.TERM_PROGRAM==="vscode"||process.env.TERM==="xterm-256color"||process.env.TERM==="alacritty"}function fr(e){return String(e).replace(new RegExp(FE,"gmi"),"").trim()}function rg(e,t){return e.replace(/^(?!\s*$)/gm," ".repeat(t))}function dr(e,...t){return OE(String(e),...t)}function ZE(e){let t=new BE;return t.rows=1/0,t.columns=1/0,t.write=(r)=>(e(r.toString()),!0),t}function QE(e){let t=Math.floor(e/1000),r=Math.floor(t/60),o;if(t===0&&r===0)o=`0.${Math.floor(e/100)}s`;if(t>0)o=`${t%60}s`;if(r>0)o=`${r}m${o}`;return o}function XE(e){return process.stdout.isTTY===!0||e.nonTTY===!0}function tn(e){if(typeof e==="string")return Ra[e]??Ra.default;return typeof e==="function"?e:Ra.default}function eS(e){if(vt(e?.silentRendererCondition))return{renderer:tn("silent"),selection:"SILENT"};let t={renderer:tn(e.renderer),options:e.rendererOptions,selection:"PRIMARY"};if(!XE(t.renderer)||vt(e?.fallbackRendererCondition))return{renderer:tn(e.fallbackRenderer),options:e.fallbackRendererOptions,selection:"SECONDARY"};return t}function vt(e,...t){if(typeof e==="function")return e(...t);else return e}function rS(e){return new Promise((t)=>{setTimeout(t,e)})}var eg,DE,sg=class{emitter=new PE;constructor(){this.emitter.setMaxListeners(0)}emit(e,t){this.emitter.emit(e,t)}on(e,t){if(!t)return;this.emitter.addListener(e,t)}once(e,t){if(!t)return;this.emitter.once(e,t)}off(e,t){if(t)this.emitter.off(e,t);else this.emitter.removeAllListeners(e)}complete(){this.emitter.removeAllListeners()}},NE,tg,LE,FE="(?:\\u001b|\\u009b)\\[[\\=><~/#&.:=?%@~_-]*[0-9]*[\\a-ln-tqyz=><~/#&.:=?%@~_-]+",O,cg,ME,V,rn,ug,on=class{options;process;constructor(e){this.options=e,this.options={useIcons:!0,toStderr:[],...e??{}},this.options.fields??={},this.options.fields.prefix??=[],this.options.fields.suffix??=[],this.process=this.options.processOutput??new jE}log(e,t,r){let o=this.format(e,t,r);if(this.options.toStderr.includes(e)){this.process.toStderr(o);return}this.process.toStdout(o)}toStdout(e,t,r=!0){this.process.toStdout(this.format(null,e,t),r)}toStderr(e,t,r=!0){this.process.toStderr(this.format(null,e,t),r)}wrap(e,t){if(!e)return e;return this.applyFormat(`[${e}]`,t)}splat(...e){let t=e.shift()??"";return e.length===0?t:dr(t,e)}suffix(e,...t){return t.filter(Boolean).forEach((r)=>{if(e+=this.spacing(e),typeof r==="string")e+=this.wrap(r);else if(typeof r==="object"){if(r.args??=[],typeof r.condition==="function"?!r.condition(...r.args):!(r.condition??!0))return e;e+=this.wrap(typeof r.field==="function"?r.field(...r.args):r.field,{format:r?.format(...r.args)})}}),e}prefix(e,...t){return t.filter(Boolean).forEach((r)=>{if(e=this.spacing(e)+e,typeof r==="string")e=this.wrap(r)+e;else if(typeof r==="object"){if(r.args??=[],typeof r.condition==="function"?!r.condition(...r.args):!(r.condition??!0))return e;e=this.wrap(typeof r.field==="function"?r.field(...r.args):r.field,{format:r?.format()})+e}}),e}fields(e,t){if(this.options?.fields?.prefix)e=this.prefix(e,...this.options.fields.prefix);if(t?.prefix)e=this.prefix(e,...t.prefix);if(t?.suffix)e=this.suffix(e,...t.suffix);if(this.options?.fields?.suffix)e=this.suffix(e,...this.options.fields.suffix);return e}icon(e,t){if(!e)return null;if(!t){let o=this.options.icon?.[e];t=typeof o==="function"?o():o}let r=this.options.color?.[e];if(t&&r)t=r(t);return t}format(e,t,r){if(!Array.isArray(t))t=[t];return t=this.splat(t.shift(),...t).toString().split(Se).filter((o)=>!o||o.trim()!=="").map((o)=>this.style(e,this.fields(o,{prefix:Array.isArray(r?.prefix)?r.prefix:[r?.prefix],suffix:Array.isArray(r?.suffix)?r.suffix:[r?.suffix]}))).join(Se),t}style(e,t){if(!e||!t)return t;let r=this.icon(e,!this.options.useIcons&&this.wrap(e));if(r)t=r+" "+t;return t}applyFormat(e,t){if(t?.format)return t.format(e);return e}spacing(e){return typeof e>"u"||e.trim()===""?"":" "}},Ta=class{options;buffer=[];decoder=new IE;constructor(e){this.options=e}get all(){return this.buffer}get last(){return this.buffer.at(-1)}get length(){return this.buffer.length}write(e,...t){let r=t[t.length-1];if(this.buffer.push({time:Date.now(),stream:this.options?.stream,entry:this.decoder.write(typeof e==="string"?Buffer.from(e,typeof t[0]==="string"?t[0]:void 0):Buffer.from(e))}),this.options?.limit)this.buffer=this.buffer.slice(-this.options.limit);if(typeof r==="function")r();return!0}reset(){this.buffer=[]}},og=class{stream;method;buffer;constructor(e){this.stream=e,this.method=e.write,this.buffer=new Ta({stream:e})}get out(){let e=this;return new Proxy(this.stream,{get(t,r,o){if(r==="write")return e.write.bind(e);return Reflect.get(t,r,o)}})}hijack(){this.stream.write=this.buffer.write.bind(this.buffer)}release(){this.stream.write=this.method;let e=[...this.buffer.all];return this.buffer.reset(),e}write(...e){return this.method.apply(this.stream,e)}},jE=class{options;stream;active;constructor(e,t,r){this.options=r,this.stream={stdout:new og(e??process.stdout),stderr:new og(t??process.stderr)},this.options={dump:["stdout","stderr"],leaveEmptyLine:!0,...r}}get stdout(){return this.stream.stdout.out}get stderr(){return this.stream.stderr.out}hijack(){if(this.active)throw Error("ProcessOutput has been already hijacked!");this.stream.stdout.write(eg.CURSOR_HIDE),Object.values(this.stream).forEach((e)=>e.hijack()),this.active=!0}release(){let e=Object.entries(this.stream).map(([t,r])=>({name:t,buffer:r.release()})).filter((t)=>this.options.dump.includes(t.name)).flatMap((t)=>t.buffer).sort((t,r)=>t.time-r.time).map((t)=>({...t,entry:fr(t.entry)})).filter((t)=>t.entry);if(e.length>0){if(this.options.leaveEmptyLine)this.stdout.write(Se);e.forEach((t)=>{(t.stream??this.stdout).write(t.entry+Se)})}this.stream.stdout.write(eg.CURSOR_SHOW),this.active=!1}toStdout(e,t=!0){if(t)e=e+Se;return this.stream.stdout.write(e)}toStderr(e,t=!0){if(t)e=e+Se;return this.stream.stderr.write(e)}},qE=class{spinner=!ag()?["-","\\","|","/"]:["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"];id;spinnerPosition=0;spin(){this.spinnerPosition=++this.spinnerPosition%this.spinner.length}fetch(){return this.spinner[this.spinnerPosition]}isRunning(){return!!this.id}start(e,t=100){this.id=setInterval(()=>{if(this.spin(),e)e()},t)}stop(){clearInterval(this.id),this.id=void 0}},ng,Oa,WE,GE=class{tasks;options;static nonTTY=!0;static rendererOptions;static rendererTaskOptions;constructor(e,t){this.tasks=e,this.options=t}render(){}end(){}},KE,HE=class{options;constructor(e){this.options=e}serialize(e,t,r){return JSON.stringify(this.generate(e,t,r))}generate(e,t,r){let o={event:e,data:t};if(typeof this.options?.task!=="boolean"){let n=Object.fromEntries(this.options.task.map((i)=>{let s=r[i];if(typeof s==="function")return[i,s.call(r)];return[i,s]}));if(Object.keys(r).length>0)o.task=n}return o}},JE,YE,Ra,tS=class{concurrency;count;queue;constructor(e){this.concurrency=e.concurrency,this.count=0,this.queue=new Set}add(e){if(this.count<this.concurrency)return this.run(e);return new Promise((t)=>{let r=()=>t(this.run(e));this.queue.add(r)})}flush(){for(let e of this.queue){if(this.count>=this.concurrency)break;this.queue.delete(e),e()}}run(e){this.count++;let t=e(),r=()=>{this.count--,this.flush()};return t.then(r,()=>{this.queue.clear()}),t}},oS=class{task;constructor(e){this.task=e}get title(){return this.task.title}set title(e){e=Array.isArray(e)?e:[e],this.task.title$=dr(e.shift(),...e)}get output(){return this.task.output}set output(e){if(e===null){this.task.outputReset$=null;return}e=Array.isArray(e)?e:[e],this.task.output$=dr(e.shift(),...e)}set promptOutput(e){this.task.promptOutput$=e}get signal(){return this.task.listr.signal}cancel(){this.task.listr.cancel()}newListr(e,t){let r;if(typeof e==="function")r=e(this);else r=e;return new de(r,t,this.task)}report(e,t){if(this.task.options.collectErrors)this.task.listr.errors?.push(new NE(e,t,this.task));this.task.message$={error:e.message??this.task?.title}}skip(e,...t){if(this.task.state$="SKIPPED",e)this.task.message$={skip:e?dr(e,...t):this.task?.title}}isRetrying(){return this.task.isRetrying()?this.task.retry:{count:0}}prompt(e){if(this.task.prompt)return this.task.prompt;return new e(this.task,this)}stdout(e){return ZE((t)=>{switch(e){case"PROMPT":this.promptOutput=t;break;default:this.output=t}})}run(e){return this.task.run(e,this)}},nS,iS,ig,de=class{task;options;parentTask;tasks=[];errors;ctx;events;path=[];rendererClass;rendererClassOptions;rendererSelection;boundSignalHandler;signal;concurrency;renderer;abortController;startedTasks=[];constructor(e,t,r){if(this.task=e,this.options=t,this.parentTask=r,this.options={concurrent:!1,renderer:"default",fallbackRenderer:"simple",exitOnError:!0,exitAfterRollback:!0,collectErrors:!1,registerSignalListeners:!0,...this.parentTask?.options??{},...t},this.options.concurrent===!0)this.options.concurrent=1/0;else if(typeof this.options.concurrent!=="number")this.options.concurrent=1;if(this.concurrency=new tS({concurrency:this.options.concurrent}),r)this.path=[...r.listr.path,r.title],this.errors=r.listr.errors;else this.errors=this.options.collectErrors?[]:null;if(this.parentTask?.listr.events instanceof ig)this.events=this.parentTask.listr.events;else this.events=new ig;if(this.parentTask?.listr.abortController instanceof AbortController)this.abortController=this.parentTask.listr.abortController;else this.abortController=new AbortController,CE(0,this.abortController.signal);if(this.signal=this.abortController.signal,this.options?.forceTTY||process.env.LISTR_FORCE_TTY)process.stdout.isTTY=!0,process.stderr.isTTY=!0;if(this.options?.forceUnicode)process.env.LISTR_FORCE_UNICODE="1";let o=eS({renderer:this.options.renderer,rendererOptions:this.options.rendererOptions,fallbackRenderer:this.options.fallbackRenderer,fallbackRendererOptions:this.options.fallbackRendererOptions,fallbackRendererCondition:this.options?.fallbackRendererCondition,silentRendererCondition:this.options?.silentRendererCondition});if(this.rendererClass=o.renderer,this.rendererClassOptions=o.options,this.rendererSelection=o.selection,this.add(e??[]),this.options.registerSignalListeners&&this.isRoot())this.boundSignalHandler=this.signalHandler.bind(this),process.on("SIGINT",this.boundSignalHandler).setMaxListeners(0)}isRoot(){return!this.parentTask}isSubtask(){return!!this.parentTask}add(e){this.tasks.push(...this.generate(e))}async run(e){if(!this.renderer)this.renderer=new this.rendererClass(this.tasks,this.rendererClassOptions,this.events);await this.renderer.render(),this.ctx=this.options?.ctx??e??{};let t,r=!1;try{await Promise.all(this.tasks.map((o)=>o.check(this.ctx))),await Promise.all(this.tasks.map((o)=>this.concurrency.add(()=>this.runTask(o))))}catch(o){r=!0,t=o}if(this.signal.aborted){if(await Promise.allSettled(this.startedTasks),this.isRoot())return this.cancelUnfinishedTasks(),this.renderer.end(),this.removeSignalHandler(),process.exit(127),this.ctx;throw t??Error("Interrupted.")}if(r&&this.options.exitOnError!==!1)throw this.renderer.end(t),this.removeSignalHandler(),t;if(!r)this.renderer.end(),this.removeSignalHandler();return this.ctx}cancel(){this.abortController.abort()}generate(e){return e=Array.isArray(e)?e:[e],e.map((t)=>{let r;if(this.rendererSelection==="PRIMARY")r=t.rendererOptions;else if(this.rendererSelection==="SECONDARY")r=t.fallbackRendererOptions;return new iS(this,t,this.options,this.rendererClassOptions,r)})}async runTask(e){if(!await e.check(this.ctx))return;let t=new oS(e).run(this.ctx);return this.startedTasks.push(t),t}signalHandler(){this.abortController.abort()}removeSignalHandler(){if(this.boundSignalHandler)process.removeListener("SIGINT",this.boundSignalHandler)}cancelUnfinishedTasks(e=this.tasks){for(let t of e){if(t.hasSubtasks())this.cancelUnfinishedTasks(t.subtasks);if(t.isEnabled()!==!1&&!t.hasFinalized())t.state$="CANCELLED"}}};var xt=_(()=>{eg={CURSOR_HIDE:"\x1B[?25l",CURSOR_SHOW:"\x1B[?25h"},DE=function(e){return e.WAITING="WAITING",e.STARTED="STARTED",e.COMPLETED="COMPLETED",e.FAILED="FAILED",e.SKIPPED="SKIPPED",e.ROLLING_BACK="ROLLING_BACK",e.ROLLED_BACK="ROLLED_BACK",e.RETRY="RETRY",e.PAUSED="PAUSED",e.PROMPT="PROMPT",e.PROMPT_COMPLETED="PROMPT_COMPLETED",e.PROMPT_FAILED="PROMPT_FAILED",e.CANCELLED="CANCELLED",e}({}),NE=class extends Error{error;type;task;path;constructor(e,t,r){super(e.message);this.error=e,this.type=t,this.task=r,this.name="ListrError",this.path=r.path,this.stack=e?.stack}},tg=class extends Error{},LE=class extends Error{};O=Object.fromEntries(Object.keys(RE.colors).map((e)=>[e,(t)=>TE(e,String(t))]));cg={warning:"\u26A0",cross:"\u2716",arrowDown:"\u2193",tick:"\u2714",arrowRight:"\u2192",pointer:"\u276F",checkboxOn:"\u2612",arrowLeft:"\u2190",squareSmallFilled:"\u25FC",pointerSmall:"\u203A",circleSlash:"\u2298"},ME={...cg,warning:"\u203C",cross:"\xD7",tick:"\u221A",pointer:">",checkboxOn:"[\xD7]",squareSmallFilled:"\u25A0",circleSlash:"\xF8"},V=ag()?cg:ME;rn={icon:{["STARTED"]:V.pointer,["FAILED"]:V.cross,["SKIPPED"]:V.arrowDown,["COMPLETED"]:V.tick,["OUTPUT"]:V.pointerSmall,["TITLE"]:V.arrowRight,["RETRY"]:V.warning,["ROLLBACK"]:V.arrowLeft,["PAUSED"]:V.squareSmallFilled,["CANCELLED"]:V.circleSlash},color:{["STARTED"]:O.yellow,["FAILED"]:O.red,["SKIPPED"]:O.yellow,["COMPLETED"]:O.green,["RETRY"]:O.yellowBright,["ROLLBACK"]:O.redBright,["PAUSED"]:O.yellowBright,["CANCELLED"]:O.red}},ug=["RETRY","ROLLBACK","FAILED"];ng={icon:{["SKIPPED_WITH_COLLAPSE"]:V.arrowDown,["SKIPPED_WITHOUT_COLLAPSE"]:V.warning,["OUTPUT"]:V.pointerSmall,["OUTPUT_WITH_BOTTOMBAR"]:V.pointerSmall,["PENDING"]:V.pointer,["COMPLETED"]:V.tick,["COMPLETED_WITH_FAILED_SUBTASKS"]:V.warning,["COMPLETED_WITH_SISTER_TASKS_FAILED"]:V.squareSmallFilled,["RETRY"]:V.warning,["ROLLING_BACK"]:V.warning,["ROLLED_BACK"]:V.arrowLeft,["FAILED"]:V.cross,["FAILED_WITH_SUBTASKS"]:V.pointer,["WAITING"]:V.squareSmallFilled,["PAUSED"]:V.squareSmallFilled,["CANCELLED"]:V.circleSlash},color:{["SKIPPED_WITH_COLLAPSE"]:O.yellow,["SKIPPED_WITHOUT_COLLAPSE"]:O.yellow,["PENDING"]:O.yellow,["COMPLETED"]:O.green,["COMPLETED_WITH_FAILED_SUBTASKS"]:O.yellow,["COMPLETED_WITH_SISTER_TASKS_FAILED"]:O.red,["RETRY"]:O.yellowBright,["ROLLING_BACK"]:O.redBright,["ROLLED_BACK"]:O.redBright,["FAILED"]:O.red,["FAILED_WITH_SUBTASKS"]:O.red,["WAITING"]:O.dim,["PAUSED"]:O.yellowBright,["CANCELLED"]:O.red}};Oa={condition:!0,field:QE,format:()=>O.dim},WE=class e{tasks;options;events;static nonTTY=!1;static rendererOptions={indentation:2,clearOutput:!1,showSubtasks:!0,collapseSubtasks:!0,collapseSkips:!0,showSkipMessage:!0,suffixSkips:!1,collapseErrors:!0,showErrorMessage:!0,suffixRetries:!0,lazy:!1,removeEmptyLines:!0,formatOutput:"wrap",pausedTimer:{...Oa,format:()=>O.yellowBright}};static rendererTaskOptions={outputBar:!0};prompt;activePrompt;spinner;logger;updater;truncate;wrap;buffer={output:new Map,bottom:new Map};cache={render:new Map,rendererOptions:new Map,rendererTaskOptions:new Map};constructor(t,r,o){this.tasks=t,this.options=r,this.events=o,this.options={...e.rendererOptions,...this.options,icon:{...ng.icon,...r?.icon??{}},color:{...ng.color,...r?.color??{}}},this.spinner=this.options.spinner??new qE,this.logger=this.options.logger??new on({useIcons:!0,toStderr:[]}),this.logger.options.icon=this.options.icon,this.logger.options.color=this.options.color}async render(){await Promise.resolve().then(() => Yh());await Promise.resolve().then(() => Xh());await Promise.resolve().then(() => ya());if(this.updater=Xo(this.logger.process.stdout),this.truncate=Ca,this.wrap=ar,this.logger.process.hijack(),!this.options?.lazy)this.spinner.start(()=>{this.update()});this.events.on("SHOUD_REFRESH_RENDER",this.refresh)}update(){this.updater(this.create())}end(){if(this.spinner.stop(),this.events.off("SHOUD_REFRESH_RENDER",this.refresh),this.updater.clear(),this.updater.done(),!this.options.clearOutput)this.logger.process.toStdout(this.create({prompt:!1}));this.logger.process.release()}create(t){t={tasks:!0,bottomBar:!0,prompt:!0,...t};let r=[],o=this.renderer(this.tasks),n=this.renderBottomBar(),i=this.renderPrompt();if(t.tasks&&o.length>0)r.push(...o);if(t.bottomBar&&n.length>0){if(r.length>0)r.push("");r.push(...n)}if(t.prompt&&i.length>0){if(r.length>0)r.push("");r.push(...i)}return r.join(Se)}style(t,r=!1){let o=this.cache.rendererOptions.get(t.id);if(t.isSkipped()){if(r||o.collapseSkips)return this.logger.icon("SKIPPED_WITH_COLLAPSE");else if(o.collapseSkips===!1)return this.logger.icon("SKIPPED_WITHOUT_COLLAPSE")}if(r){if(this.shouldOutputToBottomBar(t))return this.logger.icon("OUTPUT_WITH_BOTTOMBAR");return this.logger.icon("OUTPUT")}if(t.hasSubtasks()){if(t.isStarted()||t.isPrompt()&&o.showSubtasks!==!1&&!t.subtasks.every((n)=>!n.hasTitle()))return this.logger.icon("PENDING");else if(t.isCompleted()&&t.subtasks.some((n)=>n.hasFailed()))return this.logger.icon("COMPLETED_WITH_FAILED_SUBTASKS");else if(t.hasFailed())return this.logger.icon("FAILED_WITH_SUBTASKS")}if(t.isStarted()||t.isPrompt())return this.logger.icon("PENDING",!this.options?.lazy&&this.spinner.fetch());else if(t.isCompleted())return this.logger.icon("COMPLETED");else if(t.isRetrying())return this.logger.icon("RETRY",!this.options?.lazy&&this.spinner.fetch());else if(t.isRollingBack())return this.logger.icon("ROLLING_BACK",!this.options?.lazy&&this.spinner.fetch());else if(t.hasRolledBack())return this.logger.icon("ROLLED_BACK");else if(t.hasFailed())return this.logger.icon("FAILED");else if(t.isCancelled())return this.logger.icon("CANCELLED");else if(t.isPaused())return this.logger.icon("PAUSED");return this.logger.icon("WAITING")}format(t,r,o){if(t.trim()==="")return[];if(r)t=r+" "+t;let n,i=(this.logger.process.stdout.columns??80)-o*this.options.indentation-2;switch(this.options.formatOutput){case"truncate":n=t.split(Se).map((s,a)=>this.truncate(this.indent(s,a),i));break;case"wrap":n=this.wrap(t,i,{hard:!0,trim:!1}).split(Se).map((s,a)=>this.indent(s,a));break;default:throw new tg("Format option for the renderer is wrong.")}if(this.options.removeEmptyLines)n=n.filter(Boolean);return n.map((s)=>rg(s,o*this.options.indentation))}shouldOutputToOutputBar(t){let r=this.cache.rendererTaskOptions.get(t.id).outputBar;return typeof r==="number"&&r!==0||typeof r==="boolean"&&r!==!1}shouldOutputToBottomBar(t){let r=this.cache.rendererTaskOptions.get(t.id).bottomBar;return typeof r==="number"&&r!==0||typeof r==="boolean"&&r!==!1||!t.hasTitle()}refresh=()=>{this.update()};renderer(t,r=0){return t.flatMap((o)=>{if(!o.isEnabled())return[];if(this.cache.render.has(o.id))return this.cache.render.get(o.id);this.calculate(o),this.setupBuffer(o);let n=this.cache.rendererOptions.get(o.id),i=this.cache.rendererTaskOptions.get(o.id),s=[];if(o.isPrompt()){if(this.activePrompt&&this.activePrompt!==o.id)throw new tg("Only one prompt can be active at the given time, please re-evaluate your task design.");else if(!this.activePrompt)o.on("PROMPT",(a)=>{let c=fr(a);if(c)this.prompt=c}),o.on("STATE",(a)=>{if(a==="PROMPT_COMPLETED"||o.hasFinalized()||o.hasReset())this.prompt=null,this.activePrompt=null,o.off("PROMPT")}),this.activePrompt=o.id}if(o.hasTitle())if(!(t.some((a)=>a.hasFailed())&&!o.hasFailed()&&o.options.exitOnError!==!1&&!(o.isCompleted()||o.isSkipped()||o.isCancelled())))if(o.hasFailed()&&n.collapseErrors)s.push(...this.format(!o.hasSubtasks()&&o.message.error&&n.showErrorMessage?o.message.error:o.title,this.style(o),r));else if(o.isSkipped()&&n.collapseSkips)s.push(...this.format(this.logger.suffix(o.message.skip&&n.showSkipMessage?o.message.skip:o.title,{field:"SKIPPED",condition:n.suffixSkips,format:()=>O.dim}),this.style(o),r));else if(o.isRetrying())s.push(...this.format(this.logger.suffix(o.title,{field:`RETRY:${o.message.retry.count}`,format:()=>O.yellow,condition:n.suffixRetries}),this.style(o),r));else if(o.isCompleted()&&o.hasTitle()&&vt(i.timer?.condition,o.message.duration))s.push(...this.format(this.logger.suffix(o?.title,{...i.timer,args:[o.message.duration]}),this.style(o),r));else if(o.isPaused())s.push(...this.format(this.logger.suffix(o.title,{...n.pausedTimer,args:[o.message.paused-Date.now()]}),this.style(o),r));else s.push(...this.format(o.title,this.style(o),r));else s.push(...this.format(o.title,this.logger.icon("COMPLETED_WITH_SISTER_TASKS_FAILED"),r));if(!o.hasSubtasks()||!n.showSubtasks){if(o.hasFailed()&&n.collapseErrors===!1&&(n.showErrorMessage||!n.showSubtasks))s.push(...this.dump(o,r,"FAILED"));else if(o.isSkipped()&&n.collapseSkips===!1&&(n.showSkipMessage||!n.showSubtasks))s.push(...this.dump(o,r,"SKIPPED"))}if(o.isPending()||i.persistentOutput)s.push(...this.renderOutputBar(o,r));if(n.showSubtasks!==!1&&o.hasSubtasks()&&(o.isPending()||o.hasFinalized()&&!o.hasTitle()||o.isCompleted()&&n.collapseSubtasks===!1&&!o.subtasks.some((a)=>this.cache.rendererOptions.get(a.id)?.collapseSubtasks===!0)||o.subtasks.some((a)=>this.cache.rendererOptions.get(a.id)?.collapseSubtasks===!1)||o.subtasks.some((a)=>a.hasFailed())||o.subtasks.some((a)=>a.hasRolledBack())||o.subtasks.some((a)=>a.isCancelled()))){let a=!o.hasTitle()?r:r+1,c=this.renderer(o.subtasks,a);s.push(...c)}if(o.hasFinalized()){if(!i.persistentOutput)this.buffer.bottom.delete(o.id),this.buffer.output.delete(o.id)}if(o.isClosed())this.cache.render.set(o.id,s),this.reset(o);return s})}renderOutputBar(t,r){let o=this.buffer.output.get(t.id);if(!o)return[];return o.all.flatMap((n)=>this.dump(t,r,"OUTPUT",n.entry))}renderBottomBar(){if(this.buffer.bottom.size===0)return[];return Array.from(this.buffer.bottom.values()).flatMap((t)=>t.all).sort((t,r)=>t.time-r.time).map((t)=>t.entry)}renderPrompt(){if(!this.prompt)return[];return[this.prompt]}calculate(t){if(this.cache.rendererOptions.has(t.id)&&this.cache.rendererTaskOptions.has(t.id))return;let r={...this.options,...t.rendererOptions};this.cache.rendererOptions.set(t.id,r),this.cache.rendererTaskOptions.set(t.id,{...e.rendererTaskOptions,timer:r.timer,...t.rendererTaskOptions})}setupBuffer(t){if(this.buffer.bottom.has(t.id)||this.buffer.output.has(t.id))return;if(t.hasFinalized())return;let r=this.cache.rendererTaskOptions.get(t.id);if(this.shouldOutputToBottomBar(t)&&!this.buffer.bottom.has(t.id))this.buffer.bottom.set(t.id,new Ta({limit:typeof r.bottomBar==="number"?r.bottomBar:1})),t.on("OUTPUT",(o)=>{let n=this.dump(t,-1,"OUTPUT",o);this.buffer.bottom.get(t.id).write(n.join(Se))}),t.on("OUTPUT_RESET",()=>{this.buffer.bottom.get(t.id)?.reset()}),t.on("STATE",(o)=>{if(o==="RETRY"||o==="ROLLING_BACK")this.buffer.bottom.delete(t.id)});else if(this.shouldOutputToOutputBar(t)&&!this.buffer.output.has(t.id))this.buffer.output.set(t.id,new Ta({limit:typeof r.outputBar==="number"?r.outputBar:1})),t.on("OUTPUT",(o)=>{this.buffer.output.get(t.id).write(o)}),t.on("OUTPUT_RESET",()=>{this.buffer.output.get(t.id)?.reset()}),t.on("STATE",(o)=>{if(o==="RETRY"||o==="ROLLING_BACK")this.buffer.output.delete(t.id)})}reset(t){this.cache.rendererOptions.delete(t.id),this.cache.rendererTaskOptions.delete(t.id),this.buffer.output.delete(t.id)}dump(t,r,o="OUTPUT",n){if(!n)switch(o){case"OUTPUT":n=t.output;break;case"SKIPPED":n=t.message.skip;break;case"FAILED":n=t.message.error;break}if(t.hasTitle()&&o==="FAILED"&&n===t.title||typeof n!=="string")return[];if(o==="OUTPUT")n=fr(n);return this.format(n,this.style(t,!0),r+1)}indent(t,r){return r>0?rg(t.trimEnd(),this.options.indentation):t.trimEnd()}},KE=class e{tasks;options;static nonTTY=!0;static rendererOptions={pausedTimer:{...Oa,field:(t)=>`PAUSED:${t}`,format:()=>O.yellowBright}};static rendererTaskOptions={};logger;cache={rendererOptions:new Map,rendererTaskOptions:new Map};constructor(t,r){if(this.tasks=t,this.options=r,this.options={...e.rendererOptions,...r,icon:{...rn.icon,...r?.icon??{}},color:{...rn.color,...r?.color??{}}},this.logger=this.options.logger??new on({useIcons:!0,toStderr:ug}),this.logger.options.icon=this.options.icon,this.logger.options.color=this.options.color,this.options.timestamp)this.logger.options.fields.prefix.unshift(this.options.timestamp)}end(){}render(){this.renderer(this.tasks)}renderer(t){t.forEach((r)=>{this.calculate(r),r.once("CLOSED",()=>{this.reset(r)});let o=this.cache.rendererOptions.get(r.id),n=this.cache.rendererTaskOptions.get(r.id);r.on("SUBTASK",(i)=>{this.renderer(i)}),r.on("STATE",(i)=>{if(!r.hasTitle())return;if(i==="STARTED")this.logger.log("STARTED",r.title);else if(i==="COMPLETED"){let s=n?.timer;this.logger.log("COMPLETED",r.title,s&&{suffix:{...s,condition:!!r.message?.duration&&s.condition,args:[r.message.duration]}})}else if(i==="PROMPT")this.logger.process.hijack(),r.on("PROMPT",(s)=>{this.logger.process.toStderr(s,!1)});else if(i==="PROMPT_COMPLETED")r.off("PROMPT"),this.logger.process.release();else if(i==="CANCELLED")this.logger.log("CANCELLED",r.title)}),r.on("OUTPUT",(i)=>{this.logger.log("OUTPUT",i)}),r.on("MESSAGE",(i)=>{if(i.error)this.logger.log("FAILED",r.title,{suffix:{field:`FAILED: ${i.error}`,format:()=>O.red}});else if(i.skip)this.logger.log("SKIPPED",r.title,{suffix:{field:`SKIPPED: ${i.skip}`,format:()=>O.yellow}});else if(i.rollback)this.logger.log("ROLLBACK",r.title,{suffix:{field:`ROLLBACK: ${i.rollback}`,format:()=>O.red}});else if(i.retry)this.logger.log("RETRY",r.title,{suffix:{field:`RETRY:${i.retry.count}`,format:()=>O.red}});else if(i.paused){let s=o?.pausedTimer;this.logger.log("PAUSED",r.title,s&&{suffix:{...s,condition:!!i?.paused&&s.condition,args:[i.paused-Date.now()]}})}})})}calculate(t){if(this.cache.rendererOptions.has(t.id)&&this.cache.rendererTaskOptions.has(t.id))return;let r={...this.options,...t.rendererOptions};this.cache.rendererOptions.set(t.id,r),this.cache.rendererTaskOptions.set(t.id,{...e.rendererTaskOptions,timer:r.timer,...t.rendererTaskOptions})}reset(t){this.cache.rendererOptions.delete(t.id),this.cache.rendererTaskOptions.delete(t.id)}},JE=class e{tasks;options;static nonTTY=!0;static rendererOptions={subtasks:!0,state:Object.values(DE),output:!0,prompt:!0,title:!0,messages:["skip","error","retry","rollback","paused"],messagesToStderr:["error","rollback","retry"],task:["hasRolledBack","isRollingBack","isCompleted","isSkipped","hasFinalized","hasSubtasks","title","hasReset","hasTitle","isPrompt","isPaused","isPending","isCancelled","isStarted","hasFailed","isEnabled","isRetrying","path"]};static rendererTaskOptions;logger;serializer;constructor(t,r){this.tasks=t,this.options=r,this.options={...e.rendererOptions,...this.options},this.logger=this.options.logger??new on({useIcons:!1}),this.serializer=new HE(this.options)}render(){this.renderer(this.tasks)}end(){}renderer(t){t.forEach((r)=>{if(this.options.subtasks)r.on("SUBTASK",(o)=>{this.renderer(o)});if(this.options.state)r.on("STATE",(o)=>{this.logger.toStdout(this.serializer.serialize("STATE",o,r))});if(this.options.output)r.on("OUTPUT",(o)=>{this.logger.toStdout(this.serializer.serialize("OUTPUT",o,r))});if(this.options.prompt)r.on("PROMPT",(o)=>{this.logger.toStdout(this.serializer.serialize("PROMPT",o,r))});if(this.options.title)r.on("TITLE",(o)=>{this.logger.toStdout(this.serializer.serialize("TITLE",o,r))});r.on("MESSAGE",(o)=>{let n=Object.fromEntries(Object.entries(o).map(([i,s])=>{if(this.options.messages.includes(i))return[i,s]}).filter(Boolean));if(Object.keys(n).length>0){let i=this.serializer.serialize("MESSAGE",n,r);if(this.options.messagesToStderr.some((s)=>Object.keys(n).includes(s)))this.logger.toStderr(i);else this.logger.toStdout(i)}})})}},YE=class e{tasks;options;static nonTTY=!0;static rendererOptions={logTitleChange:!1,pausedTimer:{...Oa,format:()=>O.yellowBright}};static rendererTaskOptions;logger;cache={rendererOptions:new Map,rendererTaskOptions:new Map};constructor(t,r){if(this.tasks=t,this.options=r,this.options={...e.rendererOptions,...this.options,icon:{...rn.icon,...r?.icon??{}},color:{...rn.color,...r?.color??{}}},this.logger=this.options.logger??new on({useIcons:!1,toStderr:ug}),this.logger.options.icon=this.options.icon,this.logger.options.color=this.options.color,this.options.timestamp)this.logger.options.fields.prefix.unshift(this.options.timestamp)}render(){this.renderer(this.tasks)}end(){}renderer(t){t.forEach((r)=>{this.calculate(r),r.once("CLOSED",()=>{this.reset(r)});let o=this.cache.rendererOptions.get(r.id),n=this.cache.rendererTaskOptions.get(r.id);if(r.on("SUBTASK",(i)=>{this.renderer(i)}),r.on("STATE",(i)=>{if(!r.hasTitle())return;if(i==="STARTED")this.logger.log("STARTED",r.title);else if(i==="COMPLETED"){let s=n.timer;this.logger.log("COMPLETED",r.title,s&&{suffix:{...s,condition:!!r.message?.duration&&s.condition,args:[r.message.duration]}})}else if(i==="CANCELLED")this.logger.log("CANCELLED",r.title)}),r.on("OUTPUT",(i)=>{this.logger.log("OUTPUT",i)}),r.on("PROMPT",(i)=>{let s=fr(i);if(s)this.logger.log("PROMPT",s)}),this.options?.logTitleChange!==!1)r.on("TITLE",(i)=>{this.logger.log("TITLE",i)});r.on("MESSAGE",(i)=>{if(i?.error)this.logger.log("FAILED",i.error);else if(i?.skip)this.logger.log("SKIPPED",i.skip);else if(i?.rollback)this.logger.log("ROLLBACK",i.rollback);else if(i?.retry)this.logger.log("RETRY",r.title,{suffix:i.retry.count.toString()});else if(i?.paused){let s=o?.pausedTimer;this.logger.log("PAUSED",r.title,s&&{suffix:{...s,condition:!!i?.paused&&s.condition,args:[i.paused-Date.now()]}})}})})}calculate(t){if(this.cache.rendererOptions.has(t.id)&&this.cache.rendererTaskOptions.has(t.id))return;let r={...this.options,...t.rendererOptions};this.cache.rendererOptions.set(t.id,r),this.cache.rendererTaskOptions.set(t.id,{...e.rendererTaskOptions,timer:r.timer,...t.rendererTaskOptions})}reset(t){this.cache.rendererOptions.delete(t.id),this.cache.rendererTaskOptions.delete(t.id)}},Ra={default:WE,simple:KE,verbose:YE,test:JE,silent:GE};nS=class extends sg{},iS=class extends nS{listr;task;options;rendererOptions;rendererTaskOptions;id=zE();state="WAITING";subtasks;title;initialTitle;output;retry;message={};prompt;parent;enabled;taskFn;closed;constructor(e,t,r,o,n){super();if(this.listr=e,this.task=t,this.options=r,this.rendererOptions=o,this.rendererTaskOptions=n,t.title){let i=Array.isArray(t?.title)?t.title:[t.title];this.title=dr(i.shift(),...i),this.initialTitle=this.title}this.taskFn=t.task,this.parent=e.parentTask}set state$(e){if(this.state=e,this.emit("STATE",e),this.hasSubtasks()&&this.hasFailed()){for(let t of this.subtasks)if(t.state==="STARTED")t.state$="FAILED"}this.listr.events.emit("SHOUD_REFRESH_RENDER")}set output$(e){this.output=e,this.emit("OUTPUT",e),this.listr.events.emit("SHOUD_REFRESH_RENDER")}set outputReset$(e){this.output=e,this.emit("OUTPUT_RESET"),this.listr.events.emit("SHOUD_REFRESH_RENDER")}set promptOutput$(e){if(this.emit("PROMPT",e),fr(e))this.listr.events.emit("SHOUD_REFRESH_RENDER")}set message$(e){this.message={...this.message,...e},this.emit("MESSAGE",e),this.listr.events.emit("SHOUD_REFRESH_RENDER")}set title$(e){this.title=e,this.emit("TITLE",e),this.listr.events.emit("SHOUD_REFRESH_RENDER")}get path(){return[...this.listr.path,this.initialTitle]}async check(e){if(this.state==="WAITING")this.enabled=await vt(this.task?.enabled??!0,e),this.emit("ENABLED",this.enabled),this.listr.events.emit("SHOUD_REFRESH_RENDER");return this.enabled}hasSubtasks(){return this.subtasks?.length>0}hasFinalized(){return this.isCompleted()||this.hasFailed()||this.isSkipped()||this.hasRolledBack()||this.isCancelled()}isPending(){return this.isStarted()||this.isPrompt()||this.hasReset()}isStarted(){return this.state==="STARTED"}isSkipped(){return this.state==="SKIPPED"}isCompleted(){return this.state==="COMPLETED"}hasFailed(){return this.state==="FAILED"}isCancelled(){return this.state==="CANCELLED"}isRollingBack(){return this.state==="ROLLING_BACK"}hasRolledBack(){return this.state==="ROLLED_BACK"}isRetrying(){return this.state==="RETRY"}hasReset(){return this.state==="RETRY"||this.state==="ROLLING_BACK"}isEnabled(){return this.enabled}hasTitle(){return typeof this?.title==="string"}isPrompt(){return this.state==="PROMPT"}isPaused(){return this.state==="PAUSED"}isClosed(){return this.closed}async pause(e){let t=this.state;this.state$="PAUSED",this.message$={paused:Date.now()+e},await rS(e),this.state$=t,this.message$={paused:null}}async run(e,t){let r=(i)=>{if(i instanceof de)i.options={...this.options,...i.options},i.rendererClass=tn("silent"),this.subtasks=i.tasks,i.errors=this.listr.errors,this.emit("SUBTASK",this.subtasks),i=i.run(e);else if(i instanceof Promise)i=i.then(r);else if(UE(i))i=new Promise((s,a)=>{i.on("data",(c)=>{this.output$=c.toString()}),i.on("error",(c)=>a(c)),i.on("end",()=>s(null))});else if(VE(i))i=new Promise((s,a)=>{i.subscribe({next:(c)=>{this.output$=c},error:a,complete:s})});return i},o=Date.now();this.state$="STARTED";let n=await vt(this.task?.skip??!1,e);if(n){if(typeof n==="string")this.message$={skip:n};else if(this.hasTitle())this.message$={skip:this.title};else this.message$={skip:"Skipped task without a title."};this.state$="SKIPPED";return}try{let i=typeof this.task?.retry==="number"&&this.task.retry>0?this.task.retry+1:typeof this.task?.retry==="object"&&this.task.retry.tries>0?this.task.retry.tries+1:1,s=typeof this.task.retry==="object"&&this.task.retry.delay;for(let a=1;a<=i;a++)try{await Promise.race([r(this.taskFn(e,t)),this.whenInterrupted()]);break}catch(c){if(this.listr.signal.aborted)throw c;if(a!==i){if(this.retry={count:a,error:c},this.message$={retry:this.retry},this.title$=this.initialTitle,this.output=void 0,t.report(c,"WILL_RETRY"),this.state$="RETRY",s)await this.pause(s)}else throw c}if(this.isStarted()||this.isRetrying())this.message$={duration:Date.now()-o},this.state$="COMPLETED"}catch(i){if(this.prompt instanceof LE)i=this.prompt;if(this.task?.rollback){t.report(i,"WILL_ROLLBACK");try{this.state$="ROLLING_BACK",await this.task.rollback(e,t),this.message$={rollback:this.title},this.state$="ROLLED_BACK"}catch(s){throw this.state$="FAILED",t.report(s,"HAS_FAILED_TO_ROLLBACK"),this.close(),s}if(this.listr.options?.exitAfterRollback!==!1)throw this.close(),i}else{if(this.listr.signal.aborted)throw this.state$="CANCELLED",i;if(this.state$="FAILED",this.listr.options.exitOnError!==!1&&await vt(this.task?.exitOnError,e)!==!1)throw t.report(i,"HAS_FAILED"),this.close(),i;else if(!this.hasSubtasks())t.report(i,"HAS_FAILED_WITHOUT_ERROR")}}finally{this.close()}}close(){this.emit("CLOSED"),this.listr.events.emit("SHOUD_REFRESH_RENDER"),this.complete()}whenInterrupted(){return new Promise((e,t)=>{let r=()=>{if(!this.hasSubtasks())t(Error("Interrupted."))};if(this.listr.signal.aborted){r();return}this.listr.signal.addEventListener("abort",r,{once:!0})})}},ig=class extends sg{}});function sS(e){return typeof e==="string"&&/^sha256:[a-f0-9]{64}$/.test(e)}function lg(e){if(!sS(e))throw Error(`Invalid SHA-256 digest: ${e}`)}var mr=1;import{AsyncLocalStorage as aS}from"async_hooks";function Ia(e){return e["x-arch"]==="amd64"?"amd64":"arm64"}function pg(e){if(Ia(e)!=="amd64")return{};return{nodeSelector:{"kubernetes.io/arch":"amd64"},tolerations:[{key:"arch",operator:"Equal",value:"amd64",effect:"NoExecute"}]}}var kT;var Ba=_(()=>{kT=new aS});import{execFile as cS,spawn as uS}from"child_process";import{createHash as lS}from"crypto";import{constants as za}from"fs";import{access as pS}from"fs/promises";import{chmod as BT,lstat as dS,mkdir as zT,open as fS,readdir as mg,readlink as mS,realpath as hS,symlink as DT,readFile as gS}from"fs/promises";import{delimiter as yS,dirname as bS,isAbsolute as Na,relative as hr,resolve as Et,sep as gr}from"path";import{promisify as _S}from"util";async function Va(){for(let e of(process.env.PATH??"").split(yS)){if(!e)continue;try{return await pS(Et(e,process.platform==="win32"?"git.exe":"git"),za.X_OK),!0}catch{}}return!1}function Da(e){return`sha256:${lS("sha256").update(e).digest("hex")}`}function hg(e){if(!e||e.includes("\x00")||e.includes("\\")||Na(e)||e.split("/").some((t)=>!t||t==="."||t===".."))throw Error(`Unsafe workspace path: ${JSON.stringify(e)}`)}function dg(e,t){let r=hr(e,t);return r===""||!r.startsWith(`..${gr}`)&&r!==".."&&!Na(r)}async function fg(e,t){let{stdout:r}=await La("git",["-C",e,"ls-files","-z",...t],{encoding:"buffer",maxBuffer:67108864}),o=new TextDecoder("utf-8",{fatal:!0}),n=[],i=0;for(let s=r.indexOf(0);s!==-1;s=r.indexOf(0,i)){if(s>i)n.push(o.decode(r.subarray(i,s)));i=s+1}return n}async function wS(e){let[t,r]=await Promise.all([fg(e,["--cached","--others","--exclude-standard"]),fg(e,["--others","--ignored","--exclude-standard","--",".env*","**/.env*"])]);return[...new Set([...t,...r])].sort((o,n)=>Buffer.from(o).compare(Buffer.from(n)))}async function vS(e){let t=[],r=new Set([".git",".hg",".svn","node_modules","vendor","bower_components",".venv","venv","__pycache__",".tox",".mypy_cache",".pytest_cache",".next",".nuxt",".svelte-kit",".cache",".turbo","dist","build","coverage","target","out","tmp","temp"]),o=/(?:^|[-_.])(?:secrets?|credentials?|configs?)(?:$|[-_.])/i,n=[],i=async(c)=>{try{let u=await gS(Et(c,".gitignore"),"utf8");for(let l of u.split(/\r?\n/)){let f=l.trim();if(!f||f.startsWith("#"))continue;if(f.startsWith("!"))continue;let p=f.replace(/^\//,"");if(p)n.push({base:hr(e,c).split(gr).join("/"),pattern:p.replace(/\/$/,""),directory:f.endsWith("/")})}}catch(u){if(u.code!=="ENOENT")throw u}},s=(c,u)=>{let l=!1;for(let f of n){let p=f.base?`${f.base}/`:"";if(f.base&&c!==f.base&&!c.startsWith(p))continue;let d=f.base&&c.startsWith(p)?c.slice(p.length):c,m=f.pattern.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*\*/g,"__DOUBLESTAR__").replace(/\*/g,"[^/]*").replace(/\?/g,"[^/]").replace(/__DOUBLESTAR__/g,".*"),h=new RegExp(`^(?:${m})(?:/.*)?$`),y=new RegExp(`^(?:${m})$`);if((h.test(d)||d.split("/").some((b)=>y.test(b)))&&(!f.directory||u||d.includes("/")))l=!0}return l},a=async(c)=>{await i(c);for(let u of await mg(c,{withFileTypes:!0})){let l=Et(c,u.name),f=hr(e,l).split(gr).join("/");if(u.isDirectory()){if(r.has(u.name)||o.test(u.name)||s(f,!0))continue;await a(l)}else if(u.isFile()||u.isSymbolicLink()){if(s(f,!1))continue;if(/^\.env/i.test(u.name)||/(?:secret|credential|password|token|private[-_.]?key)/i.test(u.name)||/^(?:id_rsa|id_ed25519|known_hosts|config\.json|\.npmrc|\.pypirc|\.netrc)$/i.test(u.name))continue;t.push(f)}else throw Error(`Special files are not allowed in workspaces: ${hr(e,l).split(gr).join("/")}`)}};return await a(e),t.sort((c,u)=>Buffer.from(c).compare(Buffer.from(u)))}async function xS(e){if(!await Va())return!1;try{return await La("git",["-C",e,"rev-parse","--show-toplevel"]),!0}catch(t){let{code:r,exitCode:o}=t,n=t instanceof Error?t.message:String(t);if(r==="ENOENT")return!1;if(o===128||r===128||/not a git repository/i.test(n))return!1;throw t}}async function ES(e){let t=await La("git",["-C",e,"ls-files","--others","--ignored","--exclude-standard","--directory","-z"],{encoding:"buffer",maxBuffer:67108864}),r=new TextDecoder("utf-8",{fatal:!0}),o=new Set,n=0;for(let m=t.stdout.indexOf(0);m!==-1;m=t.stdout.indexOf(0,n)){if(m>n){let h=r.decode(t.stdout.subarray(n,m));if(h.endsWith("/"))o.add(h.slice(0,-1))}n=m+1}let i=[],s=async(m)=>{for(let h of await mg(m,{withFileTypes:!0})){if(m===e&&h.name===".git")continue;let y=Et(m,h.name),b=hr(e,y).split(gr).join("/");if(h.isDirectory()){if(!o.has(b))await s(y)}else if(!h.isFile()&&!h.isSymbolicLink())i.push(b)}};if(await s(e),i.length===0)return;let a=Buffer.from(`${i.join("\x00")}\x00`),c=uS("git",["-C",e,"check-ignore","--stdin","-z"]),u=[],l=[];c.stdout.on("data",(m)=>u.push(m)),c.stderr.on("data",(m)=>l.push(m));let f=new Promise((m,h)=>{c.once("error",h),c.once("close",(y)=>{if(y===0||y===1)m();else h(Error(Buffer.concat(l).toString("utf8")||`git check-ignore exited with ${y}`))})});c.stdin.end(a),await f;let p=Buffer.concat(u),d=new Set;n=0;for(let m=p.indexOf(0);m!==-1;m=p.indexOf(0,n)){if(m>n)d.add(r.decode(p.subarray(n,m)));n=m+1}for(let m of i){let h=m.slice(m.lastIndexOf("/")+1);if(!d.has(m)||h.startsWith(".env"))throw Error(`Special files are not allowed in workspaces: ${m}`)}}function SS(e){return JSON.stringify({version:e.version,files:e.files.map((t)=>({path:t.path,type:t.type,digest:t.digest,size:t.size,mode:t.mode}))})}function Ua(e){return AS(e),Buffer.from(SS(e))}function $S(e){return Da(Ua(e))}function AS(e){if(e.version!==mr||!Array.isArray(e.files))throw Error("Unsupported workspace manifest");let t="",r=new Set;for(let o of e.files){if(hg(o.path),lg(o.digest),!Number.isSafeInteger(o.size)||o.size<0)throw Error(`Invalid size for ${o.path}`);if(o.type==="file"&&o.mode!==420&&o.mode!==493||o.type==="symlink"&&o.mode!==511)throw Error(`Invalid mode for ${o.path}`);if(o.type!=="file"&&o.type!=="symlink")throw Error(`Invalid entry type for ${o.path}`);if(r.has(o.path))throw Error(`Duplicate workspace path: ${o.path}`);for(let n of o.path.split("/").slice(0,-1).map((i,s,a)=>a.slice(0,s+1).join("/")))if(r.has(n))throw Error(`Workspace entry is used as a directory: ${n}`);if(t&&Buffer.from(t).compare(Buffer.from(o.path))>=0)throw Error("Workspace files must be bytewise sorted");r.add(o.path),t=o.path}}async function nn(e){let t=await hS(e),o=await xS(t)?await(async()=>(await ES(t),wS(t)))():await vS(t),n=[],i=new Map;for(let a of o){hg(a);let c=Et(t,a);if(!dg(t,c))throw Error(`Workspace path escapes root: ${a}`);let u;try{u=await dS(c)}catch(p){if(p.code==="ENOENT")continue;throw p}let l,f;if(u.isSymbolicLink()){let p=await mS(c);if(Na(p)||!dg(t,Et(bS(c),p)))throw Error(`Symlink escapes workspace: ${a} -> ${p}`);l=Buffer.from(p),f={path:a,type:"symlink",digest:Da(l),size:l.byteLength,mode:511}}else if(u.isFile()){let p,d=await fS(c,za.O_RDONLY|za.O_NOFOLLOW);try{let m=await d.stat();if(!m.isFile())throw Error(`Not a regular file: ${a}`);p=m.mode&73?493:420,l=await d.readFile()}finally{await d.close()}f={path:a,type:"file",digest:Da(l),size:l.byteLength,mode:p}}else throw Error(`Special files are not allowed in workspaces: ${a}`);n.push(f),i.set(f.digest,l)}let s={version:mr,files:n};return{manifest:s,digest:$S(s),blobs:[...i].map(([a,c])=>({digest:a,data:c}))}}var La;var Fa=_(()=>{La=_S(cS)});import{randomUUID as kS}from"crypto";import{execFile as PS}from"child_process";import{isAbsolute as CS,relative as wg,resolve as gg,sep as vg}from"path";import{promisify as RS}from"util";class Eg{inflight=0;maxInflight;maxPerSecond;requestStarts=[];waiting=[];rateGate=Promise.resolve();clock;sleep;constructor(e){if(this.maxInflight=e?.maxInflight??zS,this.maxPerSecond=e?.maxPerSecond??DS,!Number.isSafeInteger(this.maxInflight)||this.maxInflight<1)throw RangeError("maxInflight must be a positive integer");if(!Number.isSafeInteger(this.maxPerSecond)||this.maxPerSecond<1)throw RangeError("maxPerSecond must be a positive integer");this.clock=e?.clock??{now:()=>Date.now()},this.sleep=e?.sleep??((t)=>Bun.sleep(t))}get currentInflight(){return this.inflight}get maxConcurrent(){return this.maxInflight}get currentRequestStarts(){return this.pruneOldStarts(),this.requestStarts.length}pruneOldStarts(){let e=this.clock.now()-1000;while(this.requestStarts.length>0&&this.requestStarts[0]<=e)this.requestStarts.shift()}async acquire(){if(this.inflight<this.maxInflight){this.inflight++;return}await new Promise((e)=>{this.waiting.push(e)})}release(){if(this.waiting.length>0)this.waiting.shift()();else this.inflight--}waitForRateLimit(){let e=this.rateGate.then(async()=>{for(;;){if(this.pruneOldStarts(),this.requestStarts.length<this.maxPerSecond){this.requestStarts.push(this.clock.now());return}let t=this.requestStarts[0];await this.sleep(Math.max(1,t+1000-this.clock.now()))}});return this.rateGate=e.catch(()=>{}),e}async run(e){await this.acquire();try{return await this.waitForRateLimit(),await e()}finally{this.release()}}}async function NS(e,t,r){let o=0,n=async()=>{for(;;){let i=o++;if(i>=e.length)return;await r(e[i])}};await Promise.all(Array.from({length:Math.min(t,e.length)},n))}function LS(e,t){return wg(e,t).split(vg).join("/")||"."}function bg(e,t,r,o){let n=wg(e,t);if(n.startsWith(`..${vg}`)||n===".."||CS(n))throw Error(`${r} must stay inside the git repo for service ${o}`);return LS(e,t)}function VS(e){if(!e.build||typeof e.build==="string"||!e.build.args)return[];if(Array.isArray(e.build.args))return[...e.build.args];return Object.entries(e.build.args).filter(([,t])=>t!==null).map(([t,r])=>`${t}=${String(r)}`)}function US(e,t,r,o,n,i){if(!r.build)return;let s=r.build,a=typeof s==="string"?s:s.context??".";if(a.includes("://"))throw Error(`Remote build context is not supported for service ${t}`);if(typeof s!=="string"&&s.dockerfile_inline)throw Error(`dockerfile_inline is not supported for service ${t}`);let c=gg(o,a),u=bg(n,c,"Build context",t),l=typeof s==="string"||!s.dockerfile?void 0:gg(c,s.dockerfile);return{name:t,image:FS(e,t,i),context:u,dockerfile:l?bg(n,l,"Dockerfile",t):void 0,target:typeof s==="string"?void 0:s.target,buildArgs:VS(r)}}function FS(e,t,r=Co){return`${r.replace(/\/+$/,"")}/kuber/${e}-${t}:latest`}async function Ma(e){if(!await Va())return e;try{let{stdout:t}=await TS("git",["-C",e,"rev-parse","--show-toplevel"]);return t.trim()}catch(t){if(t.code==="ENOENT")return e;throw t}}async function MS(e,t,r,o,n){let i=`/blobs/${encodeURIComponent(e)}/uploads`,s=n?`?project=${encodeURIComponent(n)}`:"",a=`${i}${s}`,c=await o.run(()=>r(a,{method:"POST",json:{size:t.byteLength}})),u=c.offset;while(!c.complete&&u<t.byteLength){let l=t.subarray(u,u+OS),f=await o.run(()=>r(a,{method:"PATCH",headers:{"content-type":"application/octet-stream","upload-offset":String(u)},body:l}));if(f.offset<=u)throw Error(`Blob upload for ${e} made no progress`);u=f.offset}if(!c.complete)await o.run(()=>r(`${i}/complete${s}`,{method:"POST",json:{}}))}async function jS(e,t=k,r,o,n){let i=new Map(e.blobs.map((a)=>[a.digest,a.data]));i.set(e.digest,Ua(e.manifest));let s=o??new Eg;for(;;){let a=await s.run(()=>t("/snapshots/negotiate",{method:"POST",json:{workspace:e.digest,...n&&{project:n}}}));if(a.ready)return;if(a.missing.length===0)throw Error("Snapshot negotiation is incomplete but reported no missing blobs");await NS(a.missing,s.maxConcurrent,async(c)=>{let u=i.get(c);if(!u)throw Error(`Server requested unknown workspace blob ${c}`);await r?.progress?.(`Uploading ${c}`),await MS(c,u,t,s,n)})}}async function ZS(e,t,r,o){if(e.type==="status"){if(!r?.has(e.status.state))r?.add(e.status.state),await t?.progress?.(`${o?`${o}: `:""}Build ${e.status.state}`);return 0}if(t?.stream)t.stream.write(o?`[${o}] ${e.message}`:e.message);else await t?.progress?.(`${o?`${o}: `:""}${e.message.trimEnd()}`);return e.sequence}function qS(e){if(!(e instanceof Error)||e.name==="AbortError")return!1;if(e.name==="TimeoutError"||e instanceof TypeError)return!0;let t="code"in e&&typeof e.code==="string"?e.code:e.cause&&typeof e.cause==="object"&&("code"in e.cause)&&typeof e.cause.code==="string"?e.cause.code:void 0;return t==="ECONNABORTED"||t==="ECONNRESET"||t==="ECONNREFUSED"||t==="EAI_AGAIN"||t==="ETIMEDOUT"}async function _g(e,t,r,o,n,i){for(let s=1;s<=yg;s++)try{return i?.throwIfAborted(),await e(t,{...r,signal:i},{timeoutMs:BS})}catch(a){if(!qS(a)||s===yg)throw a;i?.throwIfAborted(),await n(o)}throw Error("Build poll retries exhausted")}async function QS(e,t,r,o,n,i,s,a){let c=i,u=0,l=new Set;for(;;){let f=await _g(t,`/builds/${encodeURIComponent(e)}/events?after=${u}`,void 0,o,n,s);for(let p of f)u=Math.max(u,await ZS(p,r,l,a));if(c.state==="succeeded"||c.state==="failed")return c;if(c=await _g(t,`/builds/${encodeURIComponent(e)}/reconcile`,{method:"POST",json:{}},o,n,s),c.state!=="succeeded"&&c.state!=="failed")s?.throwIfAborted(),await n(o)}}async function sn(e,t,r={}){let o=r.request??k,n=Object.entries(t.services??{}).filter(([,a])=>a.build).map(([a])=>a),i=Array(n.length),s=0;return await Promise.all(Array.from({length:Math.min(xg,n.length)},async()=>{for(;;){let a=s++;if(a>=n.length)return;let c=n[a];r.signal?.throwIfAborted();try{i[a]=(await o("/images/resolve",{method:"POST",json:{project:e,service:c},signal:r.signal})).reference}catch(u){throw Error(`Cannot resolve a published image for service ${c}. Run kuber up to build it.`,{cause:u})}}})),Object.fromEntries(n.map((a,c)=>[a,i[c]]))}async function Sg(e,t,r=process.cwd(),o,n={}){if(!Object.values(t.services??{}).some((b)=>b.build))return{built:[],changed:[],images:{}};let i=n.buildConcurrency??xg;if(!Number.isSafeInteger(i)||i<1)throw RangeError("buildConcurrency must be a positive integer");let s=n.request??k,a=n.workspaceRoot;if(!a&&!n.snapshot)try{a=await Ma(r)}catch(b){a=r}a??=r;let c=n.snapshot??await nn(a),u=Object.entries(t.services??{}).flatMap(([b,S])=>{let x=US(e,b,S,r,a,n.registry??Co);return x?[x]:[]});await jS(c,s,o,n.scheduler,e);let l=Array(u.length),f=0,p,d=!1,m=async()=>{while(!d&&f<u.length){let b=f++,S=u[b];try{n.signal?.throwIfAborted(),await o?.progress?.(`Building ${S.name}`),l[b]=await h(S)}catch(x){if(!d)p=x;d=!0}}},h=async(b)=>{let S=kS(),x={version:mr,id:S,project:e,service:b.name,spec:{architecture:Ia(t),image:b.image,context:b.context,dockerfile:b.dockerfile,target:b.target,buildArgs:b.buildArgs,workspace:c.digest}},A=await s("/builds",{method:"POST",json:x,signal:n.signal},{timeoutMs:300000}),R=await QS(S,s,o,n.pollIntervalMs??IS,n.sleep??((Z)=>Bun.sleep(Z)),A,n.signal,b.name);if(R.state!=="succeeded")throw Error(`Build failed for service ${b.name}: ${R.error??"unknown error"}`);return(await s(`/builds/${encodeURIComponent(S)}/result`,{signal:n.signal})).reference};if(await Promise.all(Array.from({length:Math.min(i,u.length)},m)),d)throw p;let y=Object.fromEntries(u.map((b,S)=>[b.name,l[S]]));return{built:u.map((b)=>b.name),changed:u.map((b)=>b.name),images:y}}var TS,OS=8388608,IS=1000,BS=300000,yg=3,xg=3,zS=20,DS=40;var ja=_(()=>{Ba();q();Ro();Fa();TS=RS(PS)});function $g(e){return WS[e.kind]??999}function Ag(e){return[...e].sort((t,r)=>$g(t)-$g(r))}var WS,tO,rO;var an=_(()=>{Ve();WS={Namespace:0,GarageBucket:1,GarageKey:2,ServiceAccount:3,ClusterRole:4,Role:5,ClusterRoleBinding:6,RoleBinding:7,StorageClass:8,PersistentVolumeClaim:9,Secret:10,ConfigMap:11,Service:12,Deployment:13,HorizontalPodAutoscaler:14,Ingress:15,IngressRoute:16},tO=`app.kubernetes.io/managed-by=${H["app.kubernetes.io/managed-by"]}`,rO=H["app.kubernetes.io/managed-by"]});function JS(e){return`${HS}-${e}`}function Za(e){return encodeURIComponent(e)}function kg(e,t){return`postgresql://${Za(t.username)}:${Za(t.password)}@${qa}:${Qa}/${Za(e.database)}`}function Pg(e){if(!e.startsWith("postgresql:"))return;let t=e.split(":");if(t.length!==2)throw Error(`Invalid postgres volume ${e}. Use postgresql:<name> or postgresql:<user>/<database>.`);let r=t[1]?.trim();if(!r)throw Error(`Invalid postgres volume ${e}. Use postgresql:<name> or postgresql:<user>/<database>.`);let o=r.split("/");if(o.length>2||o.some((s)=>s.trim()===""))throw Error(`Invalid postgres volume ${e}. Use postgresql:<name> or postgresql:<user>/<database>.`);let n=o[0],i=o[1]??n;return{username:n,database:i}}function Cg(e){return typeof e==="string"&&Pg(e)!==void 0}function YS(e,t){let r=t.volumes?.flatMap((o)=>{if(typeof o!=="string")return[];let n=Pg(o);return n?[{...n,service:e,secretName:JS(n.username)}]:[]})??[];if(r.length>1)throw Error(`Service ${e} declares multiple postgres volumes. Only zero or one postgresql:<...> entry is allowed per service.`);return r[0]}function nt(e){let t=Object.entries(e.services??{}).flatMap(([o,n])=>{let i=YS(o,n);return i?[i]:[]}),r=new Map;for(let o of t){let n=r.get(o.database);if(n&&n!==o.username)throw Error(`Database ${o.database} is claimed by both ${n} and ${o.username}. A database can only have one owner.`);r.set(o.database,o.username)}return t}var KS="database",HS="postgres",qa,Qa=5432;var yr=_(()=>{Ve();an();qa=`c.${KS}.svc.cluster.local`});function cn(e,t){if(typeof e!=="object"||e===null||typeof t!=="object"||t===null)return t;let r=Array.isArray(e)?[...e]:{...e};for(let o of Object.keys(t)){let n=r[o],i=t[o];if(Array.isArray(n)&&Array.isArray(i))r[o]=[...n,...i];else if(n&&typeof n==="object"&&i&&typeof i==="object")r[o]=cn(n,i);else r[o]=i}return r}function Rg(e){if(!e.startsWith("s3:"))return;let t=e.split(":");if(t.length!==2)throw Error(`Invalid S3 volume ${e}. Use s3:<name> or s3:<key>/<bucket>.`);let r=t[1]?.trim();if(!r)throw Error(`Invalid S3 volume ${e}. Use s3:<name> or s3:<key>/<bucket>.`);let o=r.split("/");if(o.length>2||o.some((s)=>s.trim()===""))throw Error(`Invalid S3 volume ${e}. Use s3:<name> or s3:<key>/<bucket>.`);let n=o[0],i=o[1]??n;return{key:n,bucket:i}}function Tg(e){return typeof e==="string"&&Rg(e)!==void 0}function XS(e,t){let r=t.volumes?.flatMap((o)=>{if(typeof o!=="string")return[];let n=Rg(o);return n?[{...n,service:e}]:[]})??[];if(r.length>1)throw Error(`Service ${e} declares multiple S3 volumes. Only zero or one s3:<...> entry is allowed per service.`);return r[0]}function it(e){let t=Object.entries(e.services??{}).flatMap(([o,n])=>{let i=XS(o,n);return i?[i]:[]}),r=new Map;for(let o of t){let n=r.get(o.key);if(n&&n!==o.bucket)throw Error(`S3 key ${o.key} is claimed for both ${n} and ${o.bucket}. A managed key can only target one bucket.`);r.set(o.key,o.bucket)}return t}var br=_(()=>{Ve();an()});import{existsSync as Og,readFileSync as e$,realpathSync as Ga,statSync as t$}from"fs";import{dirname as r$,isAbsolute as Ig,normalize as o$,relative as n$,resolve as un,sep as Bg}from"path";function St(e,t){return Object.assign(Error(e),t?{code:t}:{})}function i$(e){if(!e||e.includes("\x00")||e.includes("\\")||e.startsWith("~")||Ig(e))throw St(`Artifact path must be workspace-relative: ${e}`);let t=o$(e);if(t===".."||t.startsWith(`..${Bg}`))throw St(`Artifact path escapes the workspace: ${e}`);return t.replace(/^\.\//,"")}function Ka(e,t){let r=n$(e,t);if(r===".."||r.startsWith(`..${Bg}`)||Ig(r))throw St(`Artifact path escapes the workspace: ${t}`)}function s$(e,t){let r=t;while(!Og(r)){let o=r$(r);if(o===r)break;r=o}Ka(e,Ga(r))}function Wa(e,t){if(t!==void 0&&(!Number.isSafeInteger(t)||t<0))throw Error(`${e} must be a non-negative safe integer`)}class zg{#t;#r=0;#e=0;constructor(e){Wa("maxArtifactCount",e.maxArtifactCount),Wa("maxArtifactBytes",e.maxArtifactBytes),Wa("maxTotalBytes",e.maxTotalBytes),this.#t=e}add(e,t){let r=Buffer.byteLength(t);if(this.#t.maxArtifactBytes!==void 0&&r>this.#t.maxArtifactBytes)throw St(`Artifact ${e} exceeds the ${this.#t.maxArtifactBytes} byte limit`);if(this.#t.maxArtifactCount!==void 0&&this.#r+1>this.#t.maxArtifactCount)throw St(`Artifact count exceeds the ${this.#t.maxArtifactCount} limit`);if(this.#t.maxTotalBytes!==void 0&&this.#e+r>this.#t.maxTotalBytes)throw St(`Artifact bytes exceed the ${this.#t.maxTotalBytes} byte limit`);this.#r+=1,this.#e+=r}}class je{#t;#r;#e;constructor(e){this.#t=e.strict?Ga(e.workspace):un(e.workspace),this.#r=e.strict??!1,this.#e=new zg(e)}#o(e,t){if(!this.#r)return t.expandHome&&e.startsWith("~")?un(process.env.HOME??"",e.slice(1)):un(this.#t,e);let r=un(this.#t,i$(e));return Ka(this.#t,r),s$(this.#t,r),r}isFile(e,t={}){let r=this.#o(e,t);return Og(r)&&t$(r).isFile()}readText(e,t={}){let r=this.#o(e,t);if(this.#r)Ka(this.#t,Ga(r));let o=e$(r,"utf8");return this.#e.add(e,o),o}}var Dg=()=>{};import{createHash as Mg}from"crypto";import{basename as jg}from"path";function Zg(e){if(!e.diskTag&&e.replicaCount===void 0&&!e.dataLocality)return;return{diskTag:e.diskTag?[...e.diskTag].sort():void 0,replicaCount:e.replicaCount,dataLocality:e.dataLocality}}function qg(e){return`kuber-longhorn-${Mg("sha256").update(JSON.stringify(e)).digest("hex").slice(0,12)}`}function st(e){if(typeof e==="number")return e;if(!e||e.includes("-"))return;let t=Number(e);return Number.isInteger(t)?t:void 0}function Ng(e){if(typeof e!=="string"&&typeof e!=="number")return;let t=String(e).trim(),r=a$.exec(t);if(!r)return;let o=Number(r[1]),n=Number(r[2]);if(!Number.isInteger(o)||!Number.isInteger(n))return;if(o<1||n<1)throw Error(`Invalid replica range ${t}. Range bounds must be positive integers.`);if(o>n)throw Error(`Invalid replica range ${t}. Minimum (${o}) cannot exceed maximum (${n}).`);return{kind:"range",min:o,max:n}}function pn(e,t){if(t===void 0||t.trim()==="")return;let r=Number(t);if(!Number.isInteger(r)||r<0)throw Error(`Invalid ${e} value ${JSON.stringify(t)}. Expected a non-negative integer (zero allowed for a fixed replica count), a numeric string, or a "min-max" range.`)}function Lg(e){if(e.scale!==void 0){let t=st(e.scale);if(t!==void 0)return pn("scale",String(e.scale)),t;pn("scale",String(e.scale))}if(e.deploy?.replicas!==void 0){let t=st(e.deploy.replicas);if(t!==void 0)return pn("deploy.replicas",String(e.deploy.replicas)),t;pn("deploy.replicas",String(e.deploy.replicas))}return 1}function Qg(e){let t=Ng(e.scale);if(t)return Vg(t);if(e.scale!==void 0)return{kind:"fixed",value:Lg(e)};let r=Ng(e.deploy?.replicas);if(r)return Vg(r);return{kind:"fixed",value:Lg(e)}}function Vg(e){if(e.min===e.max)return{kind:"fixed",value:e.min};return e}function c$(e){if(e.kind==="range")return e.max>1;return e.value>1}function u$(e,t,r){if(t.build){let o=r[e];if(!o)throw Error(`Missing resolved build image for service ${e}`);return o}return t.image}function Ha(e){return e?.toUpperCase()==="UDP"?"UDP":"TCP"}function dn(e){if(!e)return;return/[a-z]/i.test(e)?e:void 0}function fn(e){return typeof e==="string"?JSON.stringify(e):String(e)}function Ug(e,t){let r=String(e).trim(),o=l$.exec(r);if(!o)throw Error(`Invalid ${t} value ${fn(e)}. Expected a non-negative finite decimal number of CPU cores.`);let n=BigInt(o[1]??"0"),i=o[2]??"",s=n*1000n+(i?BigInt(i.padEnd(3,"0").slice(0,3)):0n);if(i.slice(3).replaceAll("0","")!=="")throw Error(`Invalid ${t} value ${fn(e)}. CPU cores must be representable in whole millicores.`);return s%1000n===0n?String(s/1000n):`${s}m`}function Fg(e,t){let r=e.trim(),o=p$.exec(r);if(!o)throw Error(`Invalid ${t} value ${fn(e)}. Expected a non-negative memory quantity.`);let n=o[1]??"",i=(()=>{switch(n.toLowerCase()){case"b":return"";case"k":case"kb":return"k";case"m":case"mb":return"M";case"g":case"gb":return"G";case"t":case"tb":return"T";case"p":case"pb":return"P";case"e":case"eb":return"E";default:return n}})();if(!["","n","u","m","k","M","G","T","P","E","Ki","Mi","Gi","Ti","Pi","Ei"].includes(i))throw Error(`Invalid ${t} value ${fn(e)}. Expected a valid Kubernetes or Compose memory quantity.`);return`${r.slice(0,r.length-n.length)}${i}`}function d$(e){let t=e.deploy?.resources;if(!t)return;let r={...t.limits?.cpus!==void 0?{cpu:Ug(t.limits.cpus,"deploy.resources.limits.cpus")}:{},...t.limits?.memory!==void 0?{memory:Fg(t.limits.memory,"deploy.resources.limits.memory")}:{}},o={...t.reservations?.cpus!==void 0?{cpu:Ug(t.reservations.cpus,"deploy.resources.reservations.cpus")}:{},...t.reservations?.memory!==void 0?{memory:Fg(t.reservations.memory,"deploy.resources.reservations.memory")}:{}};if(Object.keys(r).length===0&&Object.keys(o).length===0)return;return{...Object.keys(r).length>0?{limits:r}:{},...Object.keys(o).length>0?{requests:o}:{}}}function f$(e){if(typeof e==="boolean")return e;if(!e)return;switch(e.toLowerCase()){case"1":case"true":case"yes":case"on":case"ro":return!0;case"0":case"false":case"no":case"off":case"rw":return!1}}function mn(e){return e.toLowerCase().replace(/[^a-z0-9-]+/g,"-").replace(/^-+|-+$/g,"").slice(0,63)}function Ja(e){if(e===void 0||e===null)return;let t=String(e).trim();if(!t)return;return t}function Wg(e){if(e===void 0||e===null)return;let t=(Array.isArray(e)?e:[e]).flatMap((r)=>String(r).split(",")).map((r)=>r.trim()).filter(Boolean);return t.length>0?[...new Set(t)]:void 0}function Gg(e){if(e===void 0||e===null||e==="")return;let t=Number(e);return Number.isInteger(t)&&t>=1&&t<=20?t:void 0}function m$(e){let[t,r]=e.split(/\s+on\s+/i,2).map((n)=>n?.trim());if(!r)return{requestedStorage:Ja(t)};let o=/^(?:(?<replicas>\d+)\s+)?(?<tags>.+)$/.exec(r);return{requestedStorage:Ja(t),diskTag:Wg(o?.groups?.tags),replicaCount:Gg(o?.groups?.replicas),dataLocality:"none"}}function h$(e){let t=/^(?<name>[^()]+)\((?<size>[^()]+)\)$/.exec(e.trim());if(!t?.groups)return;let r=t.groups.name?.trim(),{requestedStorage:o,diskTag:n,replicaCount:i,dataLocality:s}=m$(t.groups.size??"");if(!r)return;return{source:r,requestedStorage:o,diskTag:n,replicaCount:i,dataLocality:s}}function Kg(e){if(!e||Ya(e))return{source:e};let t=h$(e);if(!t)return{source:e};if(!t.source)throw Error(`Invalid volume source ${e}. Expected name(size).`);return t}function Hg(e){return Ja(e?.["x-size"])}function Jg(e){return Wg(e?.["x-diskTag"])}function Yg(e){return Gg(e?.["x-replicaCount"])}function Xg(e){return e?.["x-dataLocality"]==="none"?"none":void 0}function ey(e){return mn(`bind-${Bun.hash(e).toString(36)}`)}function Ya(e){return e.startsWith(".")||e.startsWith("/")||e.startsWith("~")||e.includes("/")}function ty(e,t){return t.isFile(e,{expandHome:!0})}function g$(e,t,r){if(Cg(e)||Tg(e))return;let o=e.split(":");if(o.length===1)return{name:`volume-${t}`,kind:"volume",target:e};let n=o.at(-1),i=n==="ro"||n==="rw",s=o.at(i?-2:-1),a=o.slice(0,i?-2:-1).join(":");if(!s)return;let{source:c,requestedStorage:u,diskTag:l,replicaCount:f,dataLocality:p}=Kg(a||void 0);return{name:c&&Ya(c)?ey(c):`volume-${t}`,kind:c&&Ya(c)?ty(c,r)?"config-file":"bind":"volume",source:c||void 0,target:s,configKey:c?jg(c):void 0,readOnly:i?n==="ro":void 0,requestedStorage:u,diskTag:l,replicaCount:f,dataLocality:p}}function y$(e,t,r){if(typeof e==="string")return g$(e,t,r);if(!e.target)return;if(e.type!=="bind"&&e.type!=="volume"&&e.type!=="tmpfs")return;let{source:o,requestedStorage:n,diskTag:i,replicaCount:s,dataLocality:a}=Kg(e.source);return{name:o?e.type==="bind"?ey(o):`${e.type}-${mn(o)||t}`:`${e.type}-${t}`,kind:e.type==="bind"&&o&&ty(o,r)?"config-file":e.type,source:o,target:e.target,readOnly:f$(e.read_only),configKey:o?jg(o):void 0,subPath:e.volume?.subpath,sizeLimit:e.type==="tmpfs"&&e.tmpfs?.size!==void 0?String(e.tmpfs.size):void 0,requestedStorage:n??Hg(e.volume),diskTag:i??Jg(e.volume),replicaCount:s??Yg(e.volume),dataLocality:a??Xg(e.volume)}}function b$(e,t){if(!t||!e)return;let r=e[t];return Hg(r)}function _$(e,t){if(!t||!e)return;let r=e[t];return Jg(r)}function w$(e,t){if(!t||!e)return;let r=e[t];return Yg(r)}function v$(e,t){if(!t||!e)return;let r=e[t];return Xg(r)}function hn(e,t,r={}){let o=e.volumes?.flatMap((i,s)=>{let a=y$(i,s,t);if(!a)return[];return[{...a,requestedStorage:a.requestedStorage??b$(r,a.source)??(a.kind==="volume"&&a.source?ln.requestedStorage:void 0),diskTag:a.diskTag??_$(r,a.source)??(a.kind==="volume"&&a.source?ln.diskTag:void 0),replicaCount:a.replicaCount??w$(r,a.source)??(a.kind==="volume"&&a.source?ln.replicaCount:void 0),dataLocality:a.dataLocality??v$(r,a.source)??(a.kind==="volume"&&a.source?ln.dataLocality:void 0)}]})??[],n=(Array.isArray(e.tmpfs)?e.tmpfs:[e.tmpfs]).filter((i)=>Boolean(i)).map((i,s)=>({name:`tmpfs-${o.length+s}`,kind:"tmpfs",target:i}));return[...o,...n]}function x$(e){if(e.length===0)return;return e.map((t)=>({name:t.name,mountPath:t.target,readOnly:t.readOnly,subPath:t.kind==="config-file"?t.configKey:t.subPath}))}function E$(e,t){if(t.length===0)return;return t.map((r)=>{if(r.kind==="config-file")return{name:r.name,configMap:{name:r.name}};if(r.kind==="bind"){if(!r.source)return{name:r.name,emptyDir:{}};return{name:r.name,persistentVolumeClaim:{claimName:r.name}}}if(r.kind==="tmpfs")return{name:r.name,emptyDir:{medium:"Memory",sizeLimit:r.sizeLimit}};if(!r.source)return{name:r.name,emptyDir:{}};return{name:r.name,persistentVolumeClaim:{claimName:mn(`${e}-${r.source}`)}}})}function S$(e){return[...new Set(e.split(",").map((t)=>t.trim()).filter(Boolean).map((t)=>t.startsWith("/")?t:`/${t}`))]}function $$(e){let t=/^(?<portSpec>.+):protected(?:\((?<paths>[^)]*)\))?$/.exec(e);if(!t?.groups)return{portSpec:e};let r=t.groups.portSpec?.trim();if(!r)throw Error(`Invalid protected port syntax ${e}.`);let o=t.groups.paths?.trim();if(o===void 0)return{portSpec:r,routingKind:"ingressroute"};let n=S$(o);if(n.length===0)throw Error(`Invalid protected port syntax ${e}. Expected one or more paths.`);return{portSpec:r,routingKind:"ingressroute",paths:n}}function gn(e){let t=e.ports?.flatMap((o,n)=>{if(typeof o==="number")return[{name:`port-${n}`,containerPort:o,servicePort:o,protocol:"TCP"}];if(typeof o==="string"){let a=/\/(tcp|udp)$/i.exec(o),c=a?o.slice(0,-a[0].length):o,u=a?.[1];if(!c)return[];let{portSpec:l,routingKind:f,paths:p}=$$(c),d=l.split(":"),m=st(d.at(-1));if(!m)return[];let h=st(d.at(-2)),y=h!==void 0?dn(d.at(-3)):dn(d.at(-2));return[{name:`port-${n}`,containerPort:m,servicePort:h??m,hostPort:h,host:y,protocol:Ha(u),routingKind:y?f??"ingress":void 0,paths:p}]}let i=st(o.target);if(!i)return[];let s=st(o.published);return[{name:o.name??`port-${n}`,containerPort:i,servicePort:s??i,hostPort:s,host:dn(o.host_ip),protocol:Ha(o.protocol),routingKind:dn(o.host_ip)?"ingress":void 0}]})??[],r=e.expose?.flatMap((o,n)=>{let[i,s]=String(o).split("/"),a=st(i);if(!a)return[];return[{name:`expose-${n}`,containerPort:a,servicePort:a,protocol:Ha(s)}]})??[];return[...t,...r]}function A$(e){if(e.length===0)return;let t=new Map;for(let r of e)t.set(`${r.containerPort}:${r.protocol}`,{name:r.name,containerPort:r.containerPort,hostPort:r.hostPort,protocol:r.protocol});return[...t.values()]}function k$(e){if(e.length===0)return;let t=new Map;for(let r of e)t.set(`${r.servicePort}:${r.protocol}`,{name:r.name,port:r.servicePort,targetPort:r.containerPort,protocol:r.protocol});return[...t.values()]}function P$(e,t){let r=new Set;return t.flatMap((o)=>{if(!o.host||o.routingKind==="ingressroute"||r.has(o.host))return[];return r.add(o.host),[{host:o.host,http:{paths:[{path:"/",pathType:"Prefix",backend:{service:{name:e,port:{number:o.servicePort}}}}]}}]})}function C$(e,t,r){let o=r.flatMap((n)=>{if(!n.host||n.routingKind!=="ingressroute")return[];return(n.paths&&n.paths.length>0?n.paths.map((s)=>`Host(\`${n.host}\`) && PathPrefix(\`${s}\`)`):[`Host(\`${n.host}\`)`]).map((s)=>({kind:"Rule",match:s,middlewares:[{name:"cf-auth",namespace:"routing"}],services:[{name:t,port:n.servicePort}]}))});if(o.length===0)return;return{apiVersion:"traefik.io/v1alpha1",kind:"IngressRoute",metadata:{name:t,namespace:e,labels:H},spec:{routes:o}}}function R$(e){if(!e)return[];return(Array.isArray(e)?e:[e]).map((r)=>typeof r==="string"?{path:r,required:!0}:{path:r.path,required:r.required!==!1&&r.required!=="false"})}function T$(e){let t={};for(let r of e.split(/\r?\n/)){let o=r.trim();if(!o||o.startsWith("#"))continue;let n=o.indexOf("=");if(n===-1)continue;let i=o.slice(0,n).trim(),s=o.slice(n+1);if(!i)continue;t[i]=s}return t}async function O$(e,t){let r={};for(let o of R$(e))try{let n=t.readText(o.path);Object.assign(r,T$(n))}catch(n){if(!o.required&&n&&typeof n==="object"&&"code"in n&&n.code==="ENOENT")continue;throw n}return r}function I$(e,t,r,o,n=process.cwd(),i={},s={},a={},c=new je({workspace:n}),u={}){let l=hn(o,c,s),f=gn(o),p=Boolean(o.env_file)||Object.keys(i).length>0,d=u.replicaSpec??Qg(o),m=d.kind==="range"?d.min:d.value,h=[cn({name:t,imagePullPolicy:"Always",env:cm(o.environment),image:u$(t,o,a),command:o.command instanceof Array?o.command:o.command?o.command.split(" "):void 0,envFrom:p?[{secretRef:{name:`${t}-env`}}]:void 0,ports:A$(f),resources:d$(o),volumeMounts:x$(l)},o["x-container"]??{})],y={restartPolicy:"Always",...pg(r),volumes:E$(e,l),containers:h};if(c$(d))y.topologySpreadConstraints=[{maxSkew:1,topologyKey:"kubernetes.io/hostname",whenUnsatisfiable:"ScheduleAnyway",labelSelector:{matchLabels:{app:t}}}];return cn({apiVersion:"apps/v1",kind:"Deployment",metadata:{name:t,namespace:e,labels:H},spec:{replicas:m,strategy:{rollingUpdate:{maxSurge:"25%",maxUnavailable:"25%"}},selector:{matchLabels:{app:t}},template:{metadata:{labels:{app:t}},spec:y}}},o["x-deployment"]??{})}function B$(e,t,r){let o=k$(gn(r));if(!o)return;return{apiVersion:"v1",kind:"Service",metadata:{name:t,namespace:e,labels:H},spec:{type:"ClusterIP",selector:{app:t},ports:o}}}function z$(e,t,r){let o=P$(t,gn(r));if(o.length===0)return;return{apiVersion:"networking.k8s.io/v1",kind:"Ingress",metadata:{name:t,namespace:e,labels:H},spec:{rules:o}}}function D$(e,t,r=process.cwd(),o={},n=new je({workspace:r})){let i=new Map;for(let s of hn(t,n,o)){let a=s.kind==="bind"?s.source?s.name:void 0:s.kind==="volume"&&s.source?mn(`${e}-${s.source}`):void 0;if(!a||i.has(a))continue;let c=Zg(s);i.set(a,{apiVersion:"v1",kind:"PersistentVolumeClaim",metadata:{name:a,namespace:e,labels:H},spec:{accessModes:["ReadWriteMany"],storageClassName:c?qg(c):void 0,resources:{requests:{storage:s.requestedStorage??"1Gi"}}}})}return[...i.values()]}function N$(e,t=process.cwd(),r={},o=new je({workspace:t})){let n=new Map;for(let i of hn(e,o,r)){let s=Zg(i);if(!s)continue;let a=qg(s);n.set(a,{apiVersion:"storage.k8s.io/v1",kind:"StorageClass",metadata:{name:a,labels:H},provisioner:"driver.longhorn.io",allowVolumeExpansion:!0,reclaimPolicy:"Delete",volumeBindingMode:"Immediate",parameters:{...s.diskTag?{diskSelector:s.diskTag.join(",")}:{},...s.replicaCount!==void 0?{numberOfReplicas:String(s.replicaCount)}:{},...s.dataLocality?{dataLocality:"disabled"}:{}}})}return[...n.values()]}function L$(e,t,r=process.cwd(),o={},n=new je({workspace:r})){let i=new Map;for(let s of hn(t,n,o)){if(s.kind!=="config-file"||!s.source||!s.configKey)continue;i.set(s.name,{apiVersion:"v1",kind:"ConfigMap",metadata:{name:s.name,namespace:e,labels:H},data:{[s.configKey]:n.readText(s.source,{expandHome:!0})}})}return[...i.values()]}async function V$(e,t,r,o=process.cwd(),n={},i=new je({workspace:o})){let s={...await O$(r.env_file,i),...n};if(Object.keys(s).length===0)return[];return[{apiVersion:"v1",kind:"Secret",metadata:{name:`${t}-env`,namespace:e,labels:H},type:"Opaque",stringData:s}]}function U$(e){let t=Object.entries(e.stringData??{}).sort(([r],[o])=>r.localeCompare(o));return Mg("sha256").update(JSON.stringify(t)).digest("hex")}function F$(e){return{apiVersion:"v1",kind:"Namespace",metadata:{name:e,labels:H}}}function M$(e,t){let r=e.spec?.template.spec?.containers[0];if(!r)return;if(t["x-container"]?.resources?.requests?.cpu!==void 0)return;if(r.resources??={},r.resources.requests??={},r.resources.requests.cpu===void 0)r.resources.requests.cpu="100m"}function j$(e,t,r){return{apiVersion:"autoscaling/v2",kind:"HorizontalPodAutoscaler",metadata:{name:t,namespace:e,labels:H},spec:{scaleTargetRef:{apiVersion:"apps/v1",kind:"Deployment",name:t},minReplicas:r.min,maxReplicas:r.max,metrics:[{type:"Resource",resource:{name:"cpu",target:{type:"Utilization",averageUtilization:80}}}]}}}function $e(e){return`${e.kind}:${e.metadata?.namespace??""}:${e.metadata?.name??""}`}async function yn(e,t,r=process.cwd(),o={},n={},i=new je({workspace:r})){let s=new Map,a=F$(e);s.set($e(a),a);for(let[c,u]of Object.entries(t.services??{})){for(let b of N$(u,r,t.volumes,i))s.set($e(b),b);for(let b of D$(e,u,r,t.volumes,i))s.set($e(b),b);for(let b of L$(e,u,r,t.volumes,i))s.set($e(b),b);let l=await V$(e,c,u,r,o[c]??{},i);for(let b of l)s.set($e(b),b);let f=B$(e,c,u);if(f)s.set($e(f),f);let p=Qg(u),d=I$(e,c,t,u,r,o[c]??{},t.volumes,n,i,{replicaSpec:p}),m=l[0];if(m)d.spec.template.metadata.annotations={...d.spec?.template.metadata?.annotations,"kuber.astrxl.dev/env-checksum":U$(m)};if(s.set($e(d),d),p.kind==="range"){M$(d,u);let b=j$(e,c,p);s.set($e(b),b)}let h=z$(e,c,u);if(h)s.set($e(h),h);let y=C$(e,c,gn(u));if(y)s.set($e(y),y)}return[...s.values()]}var ln,a$,l$,p$;var Xa=_(()=>{Ve();Ba();yr();tt();br();Dg();ln={requestedStorage:"1Gi",diskTag:["fast"],replicaCount:2,dataLocality:"none"};a$=/^\s*(\d+)\s*-\s*(\d+)\s*$/;l$=/^(\d+)(?:\.(\d+))?$/,p$=/^(?:\d+(?:\.\d+)?|\.\d+)([a-zA-Z]*)$/});import{randomUUID as ec}from"crypto";import{isDeepStrictEqual as ry}from"util";function uy(e){return`/workspaces/${encodeURIComponent(e)}/adopt`}function oy(e,t){let r={...e};for(let[o,n]of Object.entries(t))r[o]={...r[o],...n};return r}function G$(e){let{resource:t,phase:r,state:o}=e.data;return`${r==="apply"?"Applied":r==="wait"?"Waited for":"Deleted"} ${t.kind}/${t.name}: ${o}`}function K$(e){if(!e||typeof e!=="object")return!1;let{sequence:t,data:r}=e;if(!Number.isSafeInteger(t)||!r||typeof r!=="object")return!1;let{resource:o,phase:n,state:i}=r;if(!o||typeof o!=="object")return!1;let s=o;return typeof s.apiVersion==="string"&&typeof s.kind==="string"&&typeof s.name==="string"&&(s.namespace===void 0||typeof s.namespace==="string")&&(n==="apply"||n==="wait"||n==="delete")&&(i==="started"||i==="succeeded"||i==="failed"||i==="aborted")}function H$(e,t){return{source:{uri:`cas://${t.digest}`,digest:t.digest},config:{compose:e}}}function J$(e,t){return ry(e.spec?.source,t.source)&&ry(e.spec?.config,t.config)}function ny(e){if(e instanceof we)return e.status===409;if(e instanceof DOMException&&e.name==="AbortError")return!1;if(e instanceof Error&&e.name==="AbortError")return!1;return e instanceof TypeError||e instanceof Error&&e.name==="TimeoutError"}async function Y$(e,t,r,o=k){let n=`/workspaces/${encodeURIComponent(e)}`,i=H$(t,r),s=(u)=>o(n,{method:"PUT",headers:{"if-match":`"${u.metadata.resourceVersion}"`},json:i}),a=async(u)=>{try{let l=await o(n);if(J$(l,i))return l;return await s(l)}catch{throw u}},c;try{c=await o(n)}catch(u){if(!(u instanceof we)||u.status!==404)throw u;try{return await o("/workspaces",{method:"POST",json:{id:e,...i}})}catch(l){if(!ny(l))throw l;return a(l)}}try{return await s(c)}catch(u){if(!ny(u))throw u;return a(u)}}function iy(e){return Object.fromEntries(Object.entries(e).filter(([t,r])=>t!=="operation"&&t!=="operationId"&&r!==null&&typeof r==="object"&&!Array.isArray(r)))}function bn(e,t){let r=t instanceof Error?t.message:String(t);if(!/namespace .* (?:external|different-workspace)/i.test(r))return t instanceof Error?t:Error(r);return Error(`${r}. Safe adoption requires ${cy} ${uy(e)} with namespace UID and ownership preconditions.`,{cause:t})}async function At(e,t,r,o){try{return await t(r,o)}catch(n){throw bn(e,n)}}function X$(e){if(!e||typeof e!=="object")return;let t=e.operationId;return typeof t==="string"&&t?t:void 0}function eA(e){if(!e||typeof e!=="object")return;let t=e.operation?.status;return t&&typeof t==="object"?t:void 0}function sy(e,t){let r=t.error,o=t.state==="cancelled",n=typeof r?.message==="string"?r.message:o?"The operation was cancelled":"The operation failed",i=typeof r?.code==="string"?r.code:o?"OPERATION_CANCELLED":"OPERATION_FAILED";return new we(n,o?409:500,{title:o?"Operation cancelled":"Operation failed",status:o?409:500,code:i,operationId:e})}function tA(e){if(e instanceof we)return W$.has(e.code);if(e instanceof DOMException&&e.name==="AbortError")return!1;if(e instanceof Error&&e.name==="AbortError")return!1;return e instanceof TypeError||e instanceof Error&&e.name==="TimeoutError"}function rA(e){return e.state==="failed"&&e.error?.code==="OPERATION_INTERRUPTED"}function oA(e,t){return e.cursorGap===!0||Number.isSafeInteger(e.retainedFirstSequence)&&e.retainedFirstSequence>t+1}function nA(e,t){return t+Math.max(e,0)+Q$}function ly(e){return e.reason??new DOMException("The operation was aborted","AbortError")}function $t(e){if(e?.aborted)throw ly(e)}function iA(e,t){return $t(t),new Promise((r,o)=>{let n,i=()=>{if(n!==void 0)clearTimeout(n);t?.removeEventListener("abort",a)},s=()=>{i(),r()},a=()=>{i(),o(ly(t))};if(n=setTimeout(s,e),t?.addEventListener("abort",a,{once:!0}),t?.aborted)a()})}async function tc(e,t,r,o,n,i){let s=i.now??Date.now,a=nA(n,s()),c=new Headers(o.headers);c.set("idempotency-key",ec()),c.set("prefer","respond-async");let u={...o,headers:c,signal:i.signal??o.signal},l,f=Z$,p=!1,d=0;for(;;){if($t(i.signal),p&&s()>=a)throw Error("Timed out while reconnecting to resume the operation");try{let y;if(l)y=(await At(e,t,`/operations/${encodeURIComponent(l)}`,{signal:i.signal})).status;else{p=!1;let b=await At(e,t,r,u);l=X$(b),y=eA(b)}if(l)try{let b=await At(e,t,`/operations/${encodeURIComponent(l)}/events?after=${d}`,{signal:i.signal});if(oA(b,d))throw new nc;for(let S of b.items??[]){if(!Number.isSafeInteger(S.sequence)||S.sequence<=d)continue;if(d=S.sequence,!K$(S))continue;i.onEvent?.(S)}}catch(b){if(b instanceof nc)throw b;$t(i.signal)}if(!l||!y||y.state==="succeeded")return;if(rA(y)){if(s()>=a)throw sy(l,y);l=void 0,d=0,p=!0,c.set("idempotency-key",ec()),u={...o,headers:c,signal:i.signal??o.signal}}else if(y.state==="failed"||y.state==="cancelled")throw sy(l,y)}catch(y){if($t(i.signal),y instanceof we&&y.code==="OPERATION_INTERRUPTED"){if(s()>=a)throw bn(e,y);l=void 0,d=0,p=!0,c.set("idempotency-key",ec()),u={...o,headers:c,signal:i.signal??o.signal}}else{if(!tA(y))throw bn(e,y);if(s()>=a)throw bn(e,y)}}let m=a-s();if(m<=0)throw Error("Timed out while reconnecting to resume the operation");let h=Math.min(f,m);if(i.sleep)$t(i.signal),await i.sleep(h),$t(i.signal);else await iA(h,i.signal);f=Math.min(f*2,q$)}}async function sA(e,t,r=k){let o=`/workspaces/${encodeURIComponent(e)}`;return At(e,r,`${o}/resources/plan`,{method:"POST",json:{resources:t}})}function rc(e){let t=e.name??e.metadata?.name;if(!e.apiVersion||!e.kind||!t)return;return{apiVersion:e.apiVersion,kind:e.kind,name:t,namespace:e.namespace??e.metadata?.namespace}}function ay(e){return`${e.apiVersion}\x00${e.kind}\x00${e.namespace??""}\x00${e.name}`}function aA(e,t){return`${e==="apply"?"Apply":e==="wait"?"Wait for":"Delete"} ${t.kind}/${t.name}`}function oc(e,t,r,o,n={}){if(r.length===0)return o(()=>{},e.signal);let i=new Map,s=new Set,a=0;return e.newListr(r.map((c)=>({title:aA(t,c),task:async(u,l)=>{if(i.set(ay(c),l),n.onTaskStarted?.(c,l),a+=1,a!==r.length)return new Promise((f)=>{let p=()=>{e.signal.removeEventListener("abort",p),s.delete(p),f()};if(s.add(p),e.signal.aborted)p();else e.signal.addEventListener("abort",p,{once:!0})});try{await o((f)=>{let p=f.data.resource,d=i.get(ay(p));if(!d)return;d.output=f.data.state,e.output=G$(f)},e.signal)}finally{for(let f of[...s])f()}}})),{concurrent:!0})}async function _r(e,t=k,r={}){let{project:o,compose:n,cwd:i,config:s,hookContext:a}=I(),c=r.trust??await Am(await gt(o,i)),u=t;t=async(p,d={},m)=>{let h=new Headers(d.headers);for(let[y,b]of Object.entries($m(c)))h.set(y,b);return u(p,{...d,headers:h},m)};let l=`/workspaces/${encodeURIComponent(o)}`;return await new de([{title:"Read compose",task:async(p,d)=>{if(p.compose=await n(),e)await s.preBuild?.(p.compose,await a());d.output=`${Object.keys(p.compose.services??{}).length} services`}},{title:"Snapshot workspace",task:async(p,d)=>{let m;try{m=await Ma(i)}catch(h){m=i}p.workspaceRoot=m,p.snapshot=await nn(m),d.output=`${p.snapshot.manifest.files.length} files`}},{title:"Build images",rendererOptions:{outputBar:10,persistentOutput:!0},enabled:async()=>e&&Object.values((await n()).services??{}).some((p)=>p.build),task:async(p,d)=>{let m=await Sg(o,p.compose,i,{progress:(h)=>{d.output=h},stream:d.stdout()},{...s,request:t,snapshot:p.snapshot,workspaceRoot:p.workspaceRoot,signal:d.signal});p.buildImages=m.images,await s.postBuild?.(m,await a()),d.output=`Built ${m.built.length} image${m.built.length===1?"":"s"}`}},{title:"Resolve images",enabled:async()=>!e&&Object.values((await n()).services??{}).some((p)=>p.build),task:async(p,d)=>{p.buildImages=await sn(o,p.compose,{...s,request:t}),d.output=`${Object.keys(p.buildImages).length} images`}},{title:"Update workspace",task:async(p,d)=>{let m=await Y$(o,p.compose,p.snapshot,t),h=await t(uy(o),{method:cy,json:{workspaceUid:m.metadata.uid}});d.output=h.resourcesAdopted?`Adopted ${h.resourcesAdopted} existing resources`:"Workspace ready"}},{title:"Reconcile backing services",task:async(p,d)=>{let m={},h={};await d.newListr([{title:"Reconcile databases",enabled:()=>nt(p.compose).length>0,task:async(y,b)=>{let S=await At(o,t,`${l}/databases`,{method:"POST",json:{compose:p.compose}});m=iy(S),b.output=`${Object.keys(m).length} services`}},{title:"Reconcile S3 storage",enabled:()=>it(p.compose).length>0,task:async(y,b)=>{let S=await At(o,t,`${l}/storage`,{method:"POST",json:{compose:p.compose}});h=iy(S),b.output=`${Object.keys(h).length} services`}}],{concurrent:!0}).run(),p.serviceEnv=oy(oy(p.serviceEnv,m),h)}},{title:"Render manifests",task:async(p,d)=>{p.resources=await yn(o,p.compose,i,p.serviceEnv,p.buildImages),await s.postRender?.(p.resources,await a()),d.output=`${p.resources.length} resources`}},{title:"Reconcile resources",task:async(p,d)=>{p.plan=await sA(o,p.resources,t);let m=p.plan,h=m.desired.map(rc).filter((x)=>Boolean(x)),y=m.desired.filter((x)=>x.kind==="Deployment").map(rc).filter((x)=>Boolean(x)),b=m.stale.map(rc).filter((x)=>Boolean(x)),S=`${l}/resources`;return d.newListr([{title:"Apply resources",task:async(x,A)=>oc(A,"apply",h,(R,Z)=>tc(o,t,`${S}/apply`,{method:"POST",json:{resources:m.desired}},s.rolloutTimeoutMs,{onEvent:R,signal:Z}))},{title:"Run post-apply hook",skip:!s.postApply,task:async()=>s.postApply?.(m.desired,await a())},{title:"Wait for deployments",skip:y.length===0,task:async(x,A)=>oc(A,"wait",y,(R,Z)=>tc(o,t,`${S}/wait`,{method:"POST",json:{deployments:y.map((_e)=>_e.name),timeoutMs:s.rolloutTimeoutMs}},s.rolloutTimeoutMs,{onEvent:R,signal:Z}))},{title:"Delete stale resources",skip:b.length===0,task:async(x,A)=>oc(A,"delete",b,(R,Z)=>tc(o,t,`${S}/delete`,{method:"POST",json:{resources:m.stale}},s.rolloutTimeoutMs,{onEvent:R,signal:Z}))}])}}],{rendererOptions:{collapseErrors:!1}}).run()}var cy="POST",Z$=250,q$=5000,Q$=60000,W$,nc,cA;var _n=_(()=>{M();xt();q();ja();Xa();ee();yr();br();Fa();Bo();W$=new Set(["HTTP_502","HTTP_503","HTTP_504"]);nc=class nc extends Error{constructor(){super("Operation progress history was truncated; refusing to report an incomplete resource stream")}};cA=E({meta:{name:"up",description:"Create and start deployments"},args:{build:{type:"boolean",default:!0,alias:"b",description:"Build images before starting deployments",negativeDescription:"Don't build an image, even if it's policy"}},async run({args:e}){await _r(e.build)}})});function uA(e){let t=e?.trim();if(!t)throw Error("KUBER_API_KEY or --api-key is required for kuber ci");return t}function lA(e){return(t,r={},o={})=>{let n=new Headers(r.headers);return n.set("authorization",`Bearer ${e}`),k(t,{...r,headers:n},{...o,authenticated:!1})}}async function pA(e,t,r,o=lA(r)){let{project:n,cwd:i}=I(),s=await gt(n,i);if(t)await o(`/workspaces/${encodeURIComponent(n)}/trust`,{method:"POST",json:{fingerprint:s.fingerprint}});await _r(e,o,{trust:t?s:void 0})}var dA;var py=_(()=>{M();q();ee();Bo();_n();dA=E({meta:{name:"ci",description:"Deploy using an API key without a session"},args:{apiKey:{type:"string",description:"API key (defaults to KUBER_API_KEY)"},trust:{type:"boolean",description:"Grant current directory trust before deploying"},build:{type:"boolean",default:!0,negativeDescription:"Resolve existing images without building"}},async run({args:e}){await pA(e.build,Boolean(e.trust),uA(e.apiKey??process.env.KUBER_API_KEY))}})});function fA(e,t,r=k){return r(`/workspaces/${encodeURIComponent(e)}/databases/credentials`,{method:"POST",json:{claim:t}})}var mA,hA,gA;var dy=_(()=>{M();q();ee();yr();tt();mA=E({meta:{name:"ls",description:"List managed postgres claims"},async run(){let e=nt(await I().compose());if(e.length===0){console.log("No managed postgres volumes declared");return}console.log(le(e.map((t)=>({service:t.service,username:t.username,database:t.database,secret:t.secretName}))))}}),hA=E({meta:{name:"creds",description:"Print postgres credentials for a service"},async run({args:e}){let t=e._[0];if(!t)throw Error("Service name is required");let r=I(),o=nt(await r.compose()).find((s)=>s.service===t);if(!o)throw Error(`Service ${t} does not declare a managed postgres volume.`);let n=await fA(r.project,o),i=kg(o,n);console.log(le([{service:o.service,username:n.username,database:o.database,host:qa,port:Qa,secret:o.secretName}])),console.log(`DATABASE_URL=${i}`)}}),gA=E({meta:{name:"db",description:"Inspect managed postgres databases"},subCommands:{creds:hA,ls:mA}})});function yA(e,t=!1,r=k){return r(`/workspaces/${encodeURIComponent(e)}/down`,{method:"POST",json:{full:t}})}var bA;var fy=_(()=>{M();xt();q();ee();bA=E({meta:{name:"down",description:"Delete managed resources except ingress and PVCs"},args:{full:{type:"boolean",alias:"f",description:"Also delete ingress, PVCs, and the namespace"}},async run({args:e}){let{project:t}=I();await new de([{title:"Delete resources",task:async(r,o)=>{let n=await yA(t,e.full);o.output=`${n.delete.length} resources queued`}}]).run()}})});async function my(e,t,r=process.cwd(),o={}){let n=[...nt(t).length?["Postgres"]:[],...it(t).length?["S3"]:[]];if(n.length>0)throw Error(`Cannot export without generated ${n.join(" and ")} credentials. Export is side-effect-free; run kuber up or remove managed provider claims.`);let i=await sn(e,t,o);return yn(e,t,r,{},i)}var hy=_(()=>{Xa();yr();br();ja()});import{resolve as _A}from"path";var{YAML:wA}=globalThis.Bun;function vA(e){return`${Ag(e).map((t)=>wA.stringify(t,null,2).trimEnd()).join(`
99
+ `,f++}let p=t+f,m=n.length-1-p;if(m>0)s+=ta(m);if(m<0)s+=zo(-m);return s},GR,KR;var Yh=_(()=>{Tm();Qm();ya();ka();Uo();Mo();GR=Xo(Jh.stdout),KR=Xo(Jh.stderr)});function en(e,t,r){if(e.charAt(t)===" ")return t;let o=r?1:-1;for(let n=0;n<=3;n++){let i=t+n*o;if(e.charAt(i)===" ")return i}return t}function kE(e,t,r,o){if(typeof e!=="string")throw TypeError(`Expected \`input\` to be a string, got ${typeof e}`);if(typeof t!=="number")throw TypeError(`Expected \`columns\` to be a number, got ${typeof t}`);if(!Number.isFinite(t))throw TypeError(`Expected \`columns\` to be a finite number, got ${t}`);if(!AE.has(r))throw TypeError(`Expected \`options.position\` to be either \`start\`, \`middle\` or \`end\`, got ${r}`);if(typeof o!=="string")throw TypeError(`Expected \`options.truncationCharacter\` to be a string, got ${typeof o}`)}function Ca(e,t,r={}){let{position:o="end",space:n=!1,preferTruncationOnSpace:i=!1}=r,{truncationCharacter:s="\u2026"}=r;if(kE(e,t,o,s),t<1)return"";let a=Q(e);if(a<=t)return e;if(t===1)return s;let c={ESC:27,LEFT_BRACKET:91,LETTER_M:109},u=(m)=>m>=48&&m<=57||m===59;function l(m){let h=0;while(h+2<m.length&&m.codePointAt(h)===c.ESC&&m.codePointAt(h+1)===c.LEFT_BRACKET){let y=h+2;while(y<m.length&&u(m.codePointAt(y)))y++;if(y<m.length&&m.codePointAt(y)===c.LETTER_M){h=y+1;continue}break}return h}function f(m){let h=m.length;while(h>1&&m.codePointAt(h-1)===c.LETTER_M){let y=h-2;while(y>=0&&u(m.codePointAt(y)))y--;if(y>=1&&m.codePointAt(y-1)===c.ESC&&m.codePointAt(y)===c.LEFT_BRACKET){h=y-1;continue}break}return h}function p(m,h){let y=f(m);if(y===m.length)return m+h;return m.slice(0,y)+h+m.slice(y)}function d(m,h){let y=l(h);if(y===0)return m+h;return h.slice(0,y)+m+h.slice(y)}if(o==="start"){if(i){let h=en(e,a-t+Q(s),!0),y=oe(e,h,a).trim();return d(s,y)}if(n)s+=" ";let m=oe(e,a-t+Q(s),a);return d(s,m)}if(o==="middle"){if(n){if(s=` ${s} `,Q(s)>=t)s=s.trim()}let m=Q(s),h=Math.min(Math.floor(t/2),Math.max(0,t-m));if(i){let y=en(e,h),b=en(e,a-(t-h)+m,!0);return oe(e,0,y)+s+oe(e,b,a).trim()}return oe(e,0,h)+s+oe(e,a-(t-h)+m,a)}if(o==="end"){if(i){let h=en(e,t-Q(s)),y=oe(e,0,h);return p(y,s)}if(n)s=` ${s}`;let m=oe(e,0,t-Q(s));return p(m,s)}}var AE;var Xh=_(()=>{ka();Mo();AE=new Set(["start","middle","end"])});import PE,{setMaxListeners as CE}from"events";import{inspect as RE,styleText as TE}from"util";import{format as OE}from"util";import{EOL as Se}from"os";import{StringDecoder as IE}from"string_decoder";import{Writable as BE}from"stream";import{randomUUID as zE}from"crypto";function VE(e){return!!e&&typeof e==="object"&&typeof e.subscribe==="function"}function UE(e){return!!e&&typeof e==="object"&&e.readable===!0&&typeof e.read==="function"&&typeof e.on==="function"}function ag(){return!!process.env.LISTR_FORCE_UNICODE||process.platform!=="win32"||!!process.env.CI||!!process.env.WT_SESSION||process.env.TERM_PROGRAM==="vscode"||process.env.TERM==="xterm-256color"||process.env.TERM==="alacritty"}function fr(e){return String(e).replace(new RegExp(FE,"gmi"),"").trim()}function rg(e,t){return e.replace(/^(?!\s*$)/gm," ".repeat(t))}function dr(e,...t){return OE(String(e),...t)}function ZE(e){let t=new BE;return t.rows=1/0,t.columns=1/0,t.write=(r)=>(e(r.toString()),!0),t}function QE(e){let t=Math.floor(e/1000),r=Math.floor(t/60),o;if(t===0&&r===0)o=`0.${Math.floor(e/100)}s`;if(t>0)o=`${t%60}s`;if(r>0)o=`${r}m${o}`;return o}function XE(e){return process.stdout.isTTY===!0||e.nonTTY===!0}function tn(e){if(typeof e==="string")return Ra[e]??Ra.default;return typeof e==="function"?e:Ra.default}function eS(e){if(vt(e?.silentRendererCondition))return{renderer:tn("silent"),selection:"SILENT"};let t={renderer:tn(e.renderer),options:e.rendererOptions,selection:"PRIMARY"};if(!XE(t.renderer)||vt(e?.fallbackRendererCondition))return{renderer:tn(e.fallbackRenderer),options:e.fallbackRendererOptions,selection:"SECONDARY"};return t}function vt(e,...t){if(typeof e==="function")return e(...t);else return e}function rS(e){return new Promise((t)=>{setTimeout(t,e)})}var eg,DE,sg=class{emitter=new PE;constructor(){this.emitter.setMaxListeners(0)}emit(e,t){this.emitter.emit(e,t)}on(e,t){if(!t)return;this.emitter.addListener(e,t)}once(e,t){if(!t)return;this.emitter.once(e,t)}off(e,t){if(t)this.emitter.off(e,t);else this.emitter.removeAllListeners(e)}complete(){this.emitter.removeAllListeners()}},NE,tg,LE,FE="(?:\\u001b|\\u009b)\\[[\\=><~/#&.:=?%@~_-]*[0-9]*[\\a-ln-tqyz=><~/#&.:=?%@~_-]+",O,cg,ME,V,rn,ug,on=class{options;process;constructor(e){this.options=e,this.options={useIcons:!0,toStderr:[],...e??{}},this.options.fields??={},this.options.fields.prefix??=[],this.options.fields.suffix??=[],this.process=this.options.processOutput??new jE}log(e,t,r){let o=this.format(e,t,r);if(this.options.toStderr.includes(e)){this.process.toStderr(o);return}this.process.toStdout(o)}toStdout(e,t,r=!0){this.process.toStdout(this.format(null,e,t),r)}toStderr(e,t,r=!0){this.process.toStderr(this.format(null,e,t),r)}wrap(e,t){if(!e)return e;return this.applyFormat(`[${e}]`,t)}splat(...e){let t=e.shift()??"";return e.length===0?t:dr(t,e)}suffix(e,...t){return t.filter(Boolean).forEach((r)=>{if(e+=this.spacing(e),typeof r==="string")e+=this.wrap(r);else if(typeof r==="object"){if(r.args??=[],typeof r.condition==="function"?!r.condition(...r.args):!(r.condition??!0))return e;e+=this.wrap(typeof r.field==="function"?r.field(...r.args):r.field,{format:r?.format(...r.args)})}}),e}prefix(e,...t){return t.filter(Boolean).forEach((r)=>{if(e=this.spacing(e)+e,typeof r==="string")e=this.wrap(r)+e;else if(typeof r==="object"){if(r.args??=[],typeof r.condition==="function"?!r.condition(...r.args):!(r.condition??!0))return e;e=this.wrap(typeof r.field==="function"?r.field(...r.args):r.field,{format:r?.format()})+e}}),e}fields(e,t){if(this.options?.fields?.prefix)e=this.prefix(e,...this.options.fields.prefix);if(t?.prefix)e=this.prefix(e,...t.prefix);if(t?.suffix)e=this.suffix(e,...t.suffix);if(this.options?.fields?.suffix)e=this.suffix(e,...this.options.fields.suffix);return e}icon(e,t){if(!e)return null;if(!t){let o=this.options.icon?.[e];t=typeof o==="function"?o():o}let r=this.options.color?.[e];if(t&&r)t=r(t);return t}format(e,t,r){if(!Array.isArray(t))t=[t];return t=this.splat(t.shift(),...t).toString().split(Se).filter((o)=>!o||o.trim()!=="").map((o)=>this.style(e,this.fields(o,{prefix:Array.isArray(r?.prefix)?r.prefix:[r?.prefix],suffix:Array.isArray(r?.suffix)?r.suffix:[r?.suffix]}))).join(Se),t}style(e,t){if(!e||!t)return t;let r=this.icon(e,!this.options.useIcons&&this.wrap(e));if(r)t=r+" "+t;return t}applyFormat(e,t){if(t?.format)return t.format(e);return e}spacing(e){return typeof e>"u"||e.trim()===""?"":" "}},Ta=class{options;buffer=[];decoder=new IE;constructor(e){this.options=e}get all(){return this.buffer}get last(){return this.buffer.at(-1)}get length(){return this.buffer.length}write(e,...t){let r=t[t.length-1];if(this.buffer.push({time:Date.now(),stream:this.options?.stream,entry:this.decoder.write(typeof e==="string"?Buffer.from(e,typeof t[0]==="string"?t[0]:void 0):Buffer.from(e))}),this.options?.limit)this.buffer=this.buffer.slice(-this.options.limit);if(typeof r==="function")r();return!0}reset(){this.buffer=[]}},og=class{stream;method;buffer;constructor(e){this.stream=e,this.method=e.write,this.buffer=new Ta({stream:e})}get out(){let e=this;return new Proxy(this.stream,{get(t,r,o){if(r==="write")return e.write.bind(e);return Reflect.get(t,r,o)}})}hijack(){this.stream.write=this.buffer.write.bind(this.buffer)}release(){this.stream.write=this.method;let e=[...this.buffer.all];return this.buffer.reset(),e}write(...e){return this.method.apply(this.stream,e)}},jE=class{options;stream;active;constructor(e,t,r){this.options=r,this.stream={stdout:new og(e??process.stdout),stderr:new og(t??process.stderr)},this.options={dump:["stdout","stderr"],leaveEmptyLine:!0,...r}}get stdout(){return this.stream.stdout.out}get stderr(){return this.stream.stderr.out}hijack(){if(this.active)throw Error("ProcessOutput has been already hijacked!");this.stream.stdout.write(eg.CURSOR_HIDE),Object.values(this.stream).forEach((e)=>e.hijack()),this.active=!0}release(){let e=Object.entries(this.stream).map(([t,r])=>({name:t,buffer:r.release()})).filter((t)=>this.options.dump.includes(t.name)).flatMap((t)=>t.buffer).sort((t,r)=>t.time-r.time).map((t)=>({...t,entry:fr(t.entry)})).filter((t)=>t.entry);if(e.length>0){if(this.options.leaveEmptyLine)this.stdout.write(Se);e.forEach((t)=>{(t.stream??this.stdout).write(t.entry+Se)})}this.stream.stdout.write(eg.CURSOR_SHOW),this.active=!1}toStdout(e,t=!0){if(t)e=e+Se;return this.stream.stdout.write(e)}toStderr(e,t=!0){if(t)e=e+Se;return this.stream.stderr.write(e)}},qE=class{spinner=!ag()?["-","\\","|","/"]:["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"];id;spinnerPosition=0;spin(){this.spinnerPosition=++this.spinnerPosition%this.spinner.length}fetch(){return this.spinner[this.spinnerPosition]}isRunning(){return!!this.id}start(e,t=100){this.id=setInterval(()=>{if(this.spin(),e)e()},t)}stop(){clearInterval(this.id),this.id=void 0}},ng,Oa,WE,GE=class{tasks;options;static nonTTY=!0;static rendererOptions;static rendererTaskOptions;constructor(e,t){this.tasks=e,this.options=t}render(){}end(){}},KE,HE=class{options;constructor(e){this.options=e}serialize(e,t,r){return JSON.stringify(this.generate(e,t,r))}generate(e,t,r){let o={event:e,data:t};if(typeof this.options?.task!=="boolean"){let n=Object.fromEntries(this.options.task.map((i)=>{let s=r[i];if(typeof s==="function")return[i,s.call(r)];return[i,s]}));if(Object.keys(r).length>0)o.task=n}return o}},JE,YE,Ra,tS=class{concurrency;count;queue;constructor(e){this.concurrency=e.concurrency,this.count=0,this.queue=new Set}add(e){if(this.count<this.concurrency)return this.run(e);return new Promise((t)=>{let r=()=>t(this.run(e));this.queue.add(r)})}flush(){for(let e of this.queue){if(this.count>=this.concurrency)break;this.queue.delete(e),e()}}run(e){this.count++;let t=e(),r=()=>{this.count--,this.flush()};return t.then(r,()=>{this.queue.clear()}),t}},oS=class{task;constructor(e){this.task=e}get title(){return this.task.title}set title(e){e=Array.isArray(e)?e:[e],this.task.title$=dr(e.shift(),...e)}get output(){return this.task.output}set output(e){if(e===null){this.task.outputReset$=null;return}e=Array.isArray(e)?e:[e],this.task.output$=dr(e.shift(),...e)}set promptOutput(e){this.task.promptOutput$=e}get signal(){return this.task.listr.signal}cancel(){this.task.listr.cancel()}newListr(e,t){let r;if(typeof e==="function")r=e(this);else r=e;return new de(r,t,this.task)}report(e,t){if(this.task.options.collectErrors)this.task.listr.errors?.push(new NE(e,t,this.task));this.task.message$={error:e.message??this.task?.title}}skip(e,...t){if(this.task.state$="SKIPPED",e)this.task.message$={skip:e?dr(e,...t):this.task?.title}}isRetrying(){return this.task.isRetrying()?this.task.retry:{count:0}}prompt(e){if(this.task.prompt)return this.task.prompt;return new e(this.task,this)}stdout(e){return ZE((t)=>{switch(e){case"PROMPT":this.promptOutput=t;break;default:this.output=t}})}run(e){return this.task.run(e,this)}},nS,iS,ig,de=class{task;options;parentTask;tasks=[];errors;ctx;events;path=[];rendererClass;rendererClassOptions;rendererSelection;boundSignalHandler;signal;concurrency;renderer;abortController;startedTasks=[];constructor(e,t,r){if(this.task=e,this.options=t,this.parentTask=r,this.options={concurrent:!1,renderer:"default",fallbackRenderer:"simple",exitOnError:!0,exitAfterRollback:!0,collectErrors:!1,registerSignalListeners:!0,...this.parentTask?.options??{},...t},this.options.concurrent===!0)this.options.concurrent=1/0;else if(typeof this.options.concurrent!=="number")this.options.concurrent=1;if(this.concurrency=new tS({concurrency:this.options.concurrent}),r)this.path=[...r.listr.path,r.title],this.errors=r.listr.errors;else this.errors=this.options.collectErrors?[]:null;if(this.parentTask?.listr.events instanceof ig)this.events=this.parentTask.listr.events;else this.events=new ig;if(this.parentTask?.listr.abortController instanceof AbortController)this.abortController=this.parentTask.listr.abortController;else this.abortController=new AbortController,CE(0,this.abortController.signal);if(this.signal=this.abortController.signal,this.options?.forceTTY||process.env.LISTR_FORCE_TTY)process.stdout.isTTY=!0,process.stderr.isTTY=!0;if(this.options?.forceUnicode)process.env.LISTR_FORCE_UNICODE="1";let o=eS({renderer:this.options.renderer,rendererOptions:this.options.rendererOptions,fallbackRenderer:this.options.fallbackRenderer,fallbackRendererOptions:this.options.fallbackRendererOptions,fallbackRendererCondition:this.options?.fallbackRendererCondition,silentRendererCondition:this.options?.silentRendererCondition});if(this.rendererClass=o.renderer,this.rendererClassOptions=o.options,this.rendererSelection=o.selection,this.add(e??[]),this.options.registerSignalListeners&&this.isRoot())this.boundSignalHandler=this.signalHandler.bind(this),process.on("SIGINT",this.boundSignalHandler).setMaxListeners(0)}isRoot(){return!this.parentTask}isSubtask(){return!!this.parentTask}add(e){this.tasks.push(...this.generate(e))}async run(e){if(!this.renderer)this.renderer=new this.rendererClass(this.tasks,this.rendererClassOptions,this.events);await this.renderer.render(),this.ctx=this.options?.ctx??e??{};let t,r=!1;try{await Promise.all(this.tasks.map((o)=>o.check(this.ctx))),await Promise.all(this.tasks.map((o)=>this.concurrency.add(()=>this.runTask(o))))}catch(o){r=!0,t=o}if(this.signal.aborted){if(await Promise.allSettled(this.startedTasks),this.isRoot())return this.cancelUnfinishedTasks(),this.renderer.end(),this.removeSignalHandler(),process.exit(127),this.ctx;throw t??Error("Interrupted.")}if(r&&this.options.exitOnError!==!1)throw this.renderer.end(t),this.removeSignalHandler(),t;if(!r)this.renderer.end(),this.removeSignalHandler();return this.ctx}cancel(){this.abortController.abort()}generate(e){return e=Array.isArray(e)?e:[e],e.map((t)=>{let r;if(this.rendererSelection==="PRIMARY")r=t.rendererOptions;else if(this.rendererSelection==="SECONDARY")r=t.fallbackRendererOptions;return new iS(this,t,this.options,this.rendererClassOptions,r)})}async runTask(e){if(!await e.check(this.ctx))return;let t=new oS(e).run(this.ctx);return this.startedTasks.push(t),t}signalHandler(){this.abortController.abort()}removeSignalHandler(){if(this.boundSignalHandler)process.removeListener("SIGINT",this.boundSignalHandler)}cancelUnfinishedTasks(e=this.tasks){for(let t of e){if(t.hasSubtasks())this.cancelUnfinishedTasks(t.subtasks);if(t.isEnabled()!==!1&&!t.hasFinalized())t.state$="CANCELLED"}}};var xt=_(()=>{eg={CURSOR_HIDE:"\x1B[?25l",CURSOR_SHOW:"\x1B[?25h"},DE=function(e){return e.WAITING="WAITING",e.STARTED="STARTED",e.COMPLETED="COMPLETED",e.FAILED="FAILED",e.SKIPPED="SKIPPED",e.ROLLING_BACK="ROLLING_BACK",e.ROLLED_BACK="ROLLED_BACK",e.RETRY="RETRY",e.PAUSED="PAUSED",e.PROMPT="PROMPT",e.PROMPT_COMPLETED="PROMPT_COMPLETED",e.PROMPT_FAILED="PROMPT_FAILED",e.CANCELLED="CANCELLED",e}({}),NE=class extends Error{error;type;task;path;constructor(e,t,r){super(e.message);this.error=e,this.type=t,this.task=r,this.name="ListrError",this.path=r.path,this.stack=e?.stack}},tg=class extends Error{},LE=class extends Error{};O=Object.fromEntries(Object.keys(RE.colors).map((e)=>[e,(t)=>TE(e,String(t))]));cg={warning:"\u26A0",cross:"\u2716",arrowDown:"\u2193",tick:"\u2714",arrowRight:"\u2192",pointer:"\u276F",checkboxOn:"\u2612",arrowLeft:"\u2190",squareSmallFilled:"\u25FC",pointerSmall:"\u203A",circleSlash:"\u2298"},ME={...cg,warning:"\u203C",cross:"\xD7",tick:"\u221A",pointer:">",checkboxOn:"[\xD7]",squareSmallFilled:"\u25A0",circleSlash:"\xF8"},V=ag()?cg:ME;rn={icon:{["STARTED"]:V.pointer,["FAILED"]:V.cross,["SKIPPED"]:V.arrowDown,["COMPLETED"]:V.tick,["OUTPUT"]:V.pointerSmall,["TITLE"]:V.arrowRight,["RETRY"]:V.warning,["ROLLBACK"]:V.arrowLeft,["PAUSED"]:V.squareSmallFilled,["CANCELLED"]:V.circleSlash},color:{["STARTED"]:O.yellow,["FAILED"]:O.red,["SKIPPED"]:O.yellow,["COMPLETED"]:O.green,["RETRY"]:O.yellowBright,["ROLLBACK"]:O.redBright,["PAUSED"]:O.yellowBright,["CANCELLED"]:O.red}},ug=["RETRY","ROLLBACK","FAILED"];ng={icon:{["SKIPPED_WITH_COLLAPSE"]:V.arrowDown,["SKIPPED_WITHOUT_COLLAPSE"]:V.warning,["OUTPUT"]:V.pointerSmall,["OUTPUT_WITH_BOTTOMBAR"]:V.pointerSmall,["PENDING"]:V.pointer,["COMPLETED"]:V.tick,["COMPLETED_WITH_FAILED_SUBTASKS"]:V.warning,["COMPLETED_WITH_SISTER_TASKS_FAILED"]:V.squareSmallFilled,["RETRY"]:V.warning,["ROLLING_BACK"]:V.warning,["ROLLED_BACK"]:V.arrowLeft,["FAILED"]:V.cross,["FAILED_WITH_SUBTASKS"]:V.pointer,["WAITING"]:V.squareSmallFilled,["PAUSED"]:V.squareSmallFilled,["CANCELLED"]:V.circleSlash},color:{["SKIPPED_WITH_COLLAPSE"]:O.yellow,["SKIPPED_WITHOUT_COLLAPSE"]:O.yellow,["PENDING"]:O.yellow,["COMPLETED"]:O.green,["COMPLETED_WITH_FAILED_SUBTASKS"]:O.yellow,["COMPLETED_WITH_SISTER_TASKS_FAILED"]:O.red,["RETRY"]:O.yellowBright,["ROLLING_BACK"]:O.redBright,["ROLLED_BACK"]:O.redBright,["FAILED"]:O.red,["FAILED_WITH_SUBTASKS"]:O.red,["WAITING"]:O.dim,["PAUSED"]:O.yellowBright,["CANCELLED"]:O.red}};Oa={condition:!0,field:QE,format:()=>O.dim},WE=class e{tasks;options;events;static nonTTY=!1;static rendererOptions={indentation:2,clearOutput:!1,showSubtasks:!0,collapseSubtasks:!0,collapseSkips:!0,showSkipMessage:!0,suffixSkips:!1,collapseErrors:!0,showErrorMessage:!0,suffixRetries:!0,lazy:!1,removeEmptyLines:!0,formatOutput:"wrap",pausedTimer:{...Oa,format:()=>O.yellowBright}};static rendererTaskOptions={outputBar:!0};prompt;activePrompt;spinner;logger;updater;truncate;wrap;buffer={output:new Map,bottom:new Map};cache={render:new Map,rendererOptions:new Map,rendererTaskOptions:new Map};constructor(t,r,o){this.tasks=t,this.options=r,this.events=o,this.options={...e.rendererOptions,...this.options,icon:{...ng.icon,...r?.icon??{}},color:{...ng.color,...r?.color??{}}},this.spinner=this.options.spinner??new qE,this.logger=this.options.logger??new on({useIcons:!0,toStderr:[]}),this.logger.options.icon=this.options.icon,this.logger.options.color=this.options.color}async render(){await Promise.resolve().then(() => Yh());await Promise.resolve().then(() => Xh());await Promise.resolve().then(() => ya());if(this.updater=Xo(this.logger.process.stdout),this.truncate=Ca,this.wrap=ar,this.logger.process.hijack(),!this.options?.lazy)this.spinner.start(()=>{this.update()});this.events.on("SHOUD_REFRESH_RENDER",this.refresh)}update(){this.updater(this.create())}end(){if(this.spinner.stop(),this.events.off("SHOUD_REFRESH_RENDER",this.refresh),this.updater.clear(),this.updater.done(),!this.options.clearOutput)this.logger.process.toStdout(this.create({prompt:!1}));this.logger.process.release()}create(t){t={tasks:!0,bottomBar:!0,prompt:!0,...t};let r=[],o=this.renderer(this.tasks),n=this.renderBottomBar(),i=this.renderPrompt();if(t.tasks&&o.length>0)r.push(...o);if(t.bottomBar&&n.length>0){if(r.length>0)r.push("");r.push(...n)}if(t.prompt&&i.length>0){if(r.length>0)r.push("");r.push(...i)}return r.join(Se)}style(t,r=!1){let o=this.cache.rendererOptions.get(t.id);if(t.isSkipped()){if(r||o.collapseSkips)return this.logger.icon("SKIPPED_WITH_COLLAPSE");else if(o.collapseSkips===!1)return this.logger.icon("SKIPPED_WITHOUT_COLLAPSE")}if(r){if(this.shouldOutputToBottomBar(t))return this.logger.icon("OUTPUT_WITH_BOTTOMBAR");return this.logger.icon("OUTPUT")}if(t.hasSubtasks()){if(t.isStarted()||t.isPrompt()&&o.showSubtasks!==!1&&!t.subtasks.every((n)=>!n.hasTitle()))return this.logger.icon("PENDING");else if(t.isCompleted()&&t.subtasks.some((n)=>n.hasFailed()))return this.logger.icon("COMPLETED_WITH_FAILED_SUBTASKS");else if(t.hasFailed())return this.logger.icon("FAILED_WITH_SUBTASKS")}if(t.isStarted()||t.isPrompt())return this.logger.icon("PENDING",!this.options?.lazy&&this.spinner.fetch());else if(t.isCompleted())return this.logger.icon("COMPLETED");else if(t.isRetrying())return this.logger.icon("RETRY",!this.options?.lazy&&this.spinner.fetch());else if(t.isRollingBack())return this.logger.icon("ROLLING_BACK",!this.options?.lazy&&this.spinner.fetch());else if(t.hasRolledBack())return this.logger.icon("ROLLED_BACK");else if(t.hasFailed())return this.logger.icon("FAILED");else if(t.isCancelled())return this.logger.icon("CANCELLED");else if(t.isPaused())return this.logger.icon("PAUSED");return this.logger.icon("WAITING")}format(t,r,o){if(t.trim()==="")return[];if(r)t=r+" "+t;let n,i=(this.logger.process.stdout.columns??80)-o*this.options.indentation-2;switch(this.options.formatOutput){case"truncate":n=t.split(Se).map((s,a)=>this.truncate(this.indent(s,a),i));break;case"wrap":n=this.wrap(t,i,{hard:!0,trim:!1}).split(Se).map((s,a)=>this.indent(s,a));break;default:throw new tg("Format option for the renderer is wrong.")}if(this.options.removeEmptyLines)n=n.filter(Boolean);return n.map((s)=>rg(s,o*this.options.indentation))}shouldOutputToOutputBar(t){let r=this.cache.rendererTaskOptions.get(t.id).outputBar;return typeof r==="number"&&r!==0||typeof r==="boolean"&&r!==!1}shouldOutputToBottomBar(t){let r=this.cache.rendererTaskOptions.get(t.id).bottomBar;return typeof r==="number"&&r!==0||typeof r==="boolean"&&r!==!1||!t.hasTitle()}refresh=()=>{this.update()};renderer(t,r=0){return t.flatMap((o)=>{if(!o.isEnabled())return[];if(this.cache.render.has(o.id))return this.cache.render.get(o.id);this.calculate(o),this.setupBuffer(o);let n=this.cache.rendererOptions.get(o.id),i=this.cache.rendererTaskOptions.get(o.id),s=[];if(o.isPrompt()){if(this.activePrompt&&this.activePrompt!==o.id)throw new tg("Only one prompt can be active at the given time, please re-evaluate your task design.");else if(!this.activePrompt)o.on("PROMPT",(a)=>{let c=fr(a);if(c)this.prompt=c}),o.on("STATE",(a)=>{if(a==="PROMPT_COMPLETED"||o.hasFinalized()||o.hasReset())this.prompt=null,this.activePrompt=null,o.off("PROMPT")}),this.activePrompt=o.id}if(o.hasTitle())if(!(t.some((a)=>a.hasFailed())&&!o.hasFailed()&&o.options.exitOnError!==!1&&!(o.isCompleted()||o.isSkipped()||o.isCancelled())))if(o.hasFailed()&&n.collapseErrors)s.push(...this.format(!o.hasSubtasks()&&o.message.error&&n.showErrorMessage?o.message.error:o.title,this.style(o),r));else if(o.isSkipped()&&n.collapseSkips)s.push(...this.format(this.logger.suffix(o.message.skip&&n.showSkipMessage?o.message.skip:o.title,{field:"SKIPPED",condition:n.suffixSkips,format:()=>O.dim}),this.style(o),r));else if(o.isRetrying())s.push(...this.format(this.logger.suffix(o.title,{field:`RETRY:${o.message.retry.count}`,format:()=>O.yellow,condition:n.suffixRetries}),this.style(o),r));else if(o.isCompleted()&&o.hasTitle()&&vt(i.timer?.condition,o.message.duration))s.push(...this.format(this.logger.suffix(o?.title,{...i.timer,args:[o.message.duration]}),this.style(o),r));else if(o.isPaused())s.push(...this.format(this.logger.suffix(o.title,{...n.pausedTimer,args:[o.message.paused-Date.now()]}),this.style(o),r));else s.push(...this.format(o.title,this.style(o),r));else s.push(...this.format(o.title,this.logger.icon("COMPLETED_WITH_SISTER_TASKS_FAILED"),r));if(!o.hasSubtasks()||!n.showSubtasks){if(o.hasFailed()&&n.collapseErrors===!1&&(n.showErrorMessage||!n.showSubtasks))s.push(...this.dump(o,r,"FAILED"));else if(o.isSkipped()&&n.collapseSkips===!1&&(n.showSkipMessage||!n.showSubtasks))s.push(...this.dump(o,r,"SKIPPED"))}if(o.isPending()||i.persistentOutput)s.push(...this.renderOutputBar(o,r));if(n.showSubtasks!==!1&&o.hasSubtasks()&&(o.isPending()||o.hasFinalized()&&!o.hasTitle()||o.isCompleted()&&n.collapseSubtasks===!1&&!o.subtasks.some((a)=>this.cache.rendererOptions.get(a.id)?.collapseSubtasks===!0)||o.subtasks.some((a)=>this.cache.rendererOptions.get(a.id)?.collapseSubtasks===!1)||o.subtasks.some((a)=>a.hasFailed())||o.subtasks.some((a)=>a.hasRolledBack())||o.subtasks.some((a)=>a.isCancelled()))){let a=!o.hasTitle()?r:r+1,c=this.renderer(o.subtasks,a);s.push(...c)}if(o.hasFinalized()){if(!i.persistentOutput)this.buffer.bottom.delete(o.id),this.buffer.output.delete(o.id)}if(o.isClosed())this.cache.render.set(o.id,s),this.reset(o);return s})}renderOutputBar(t,r){let o=this.buffer.output.get(t.id);if(!o)return[];return o.all.flatMap((n)=>this.dump(t,r,"OUTPUT",n.entry))}renderBottomBar(){if(this.buffer.bottom.size===0)return[];return Array.from(this.buffer.bottom.values()).flatMap((t)=>t.all).sort((t,r)=>t.time-r.time).map((t)=>t.entry)}renderPrompt(){if(!this.prompt)return[];return[this.prompt]}calculate(t){if(this.cache.rendererOptions.has(t.id)&&this.cache.rendererTaskOptions.has(t.id))return;let r={...this.options,...t.rendererOptions};this.cache.rendererOptions.set(t.id,r),this.cache.rendererTaskOptions.set(t.id,{...e.rendererTaskOptions,timer:r.timer,...t.rendererTaskOptions})}setupBuffer(t){if(this.buffer.bottom.has(t.id)||this.buffer.output.has(t.id))return;if(t.hasFinalized())return;let r=this.cache.rendererTaskOptions.get(t.id);if(this.shouldOutputToBottomBar(t)&&!this.buffer.bottom.has(t.id))this.buffer.bottom.set(t.id,new Ta({limit:typeof r.bottomBar==="number"?r.bottomBar:1})),t.on("OUTPUT",(o)=>{let n=this.dump(t,-1,"OUTPUT",o);this.buffer.bottom.get(t.id).write(n.join(Se))}),t.on("OUTPUT_RESET",()=>{this.buffer.bottom.get(t.id)?.reset()}),t.on("STATE",(o)=>{if(o==="RETRY"||o==="ROLLING_BACK")this.buffer.bottom.delete(t.id)});else if(this.shouldOutputToOutputBar(t)&&!this.buffer.output.has(t.id))this.buffer.output.set(t.id,new Ta({limit:typeof r.outputBar==="number"?r.outputBar:1})),t.on("OUTPUT",(o)=>{this.buffer.output.get(t.id).write(o)}),t.on("OUTPUT_RESET",()=>{this.buffer.output.get(t.id)?.reset()}),t.on("STATE",(o)=>{if(o==="RETRY"||o==="ROLLING_BACK")this.buffer.output.delete(t.id)})}reset(t){this.cache.rendererOptions.delete(t.id),this.cache.rendererTaskOptions.delete(t.id),this.buffer.output.delete(t.id)}dump(t,r,o="OUTPUT",n){if(!n)switch(o){case"OUTPUT":n=t.output;break;case"SKIPPED":n=t.message.skip;break;case"FAILED":n=t.message.error;break}if(t.hasTitle()&&o==="FAILED"&&n===t.title||typeof n!=="string")return[];if(o==="OUTPUT")n=fr(n);return this.format(n,this.style(t,!0),r+1)}indent(t,r){return r>0?rg(t.trimEnd(),this.options.indentation):t.trimEnd()}},KE=class e{tasks;options;static nonTTY=!0;static rendererOptions={pausedTimer:{...Oa,field:(t)=>`PAUSED:${t}`,format:()=>O.yellowBright}};static rendererTaskOptions={};logger;cache={rendererOptions:new Map,rendererTaskOptions:new Map};constructor(t,r){if(this.tasks=t,this.options=r,this.options={...e.rendererOptions,...r,icon:{...rn.icon,...r?.icon??{}},color:{...rn.color,...r?.color??{}}},this.logger=this.options.logger??new on({useIcons:!0,toStderr:ug}),this.logger.options.icon=this.options.icon,this.logger.options.color=this.options.color,this.options.timestamp)this.logger.options.fields.prefix.unshift(this.options.timestamp)}end(){}render(){this.renderer(this.tasks)}renderer(t){t.forEach((r)=>{this.calculate(r),r.once("CLOSED",()=>{this.reset(r)});let o=this.cache.rendererOptions.get(r.id),n=this.cache.rendererTaskOptions.get(r.id);r.on("SUBTASK",(i)=>{this.renderer(i)}),r.on("STATE",(i)=>{if(!r.hasTitle())return;if(i==="STARTED")this.logger.log("STARTED",r.title);else if(i==="COMPLETED"){let s=n?.timer;this.logger.log("COMPLETED",r.title,s&&{suffix:{...s,condition:!!r.message?.duration&&s.condition,args:[r.message.duration]}})}else if(i==="PROMPT")this.logger.process.hijack(),r.on("PROMPT",(s)=>{this.logger.process.toStderr(s,!1)});else if(i==="PROMPT_COMPLETED")r.off("PROMPT"),this.logger.process.release();else if(i==="CANCELLED")this.logger.log("CANCELLED",r.title)}),r.on("OUTPUT",(i)=>{this.logger.log("OUTPUT",i)}),r.on("MESSAGE",(i)=>{if(i.error)this.logger.log("FAILED",r.title,{suffix:{field:`FAILED: ${i.error}`,format:()=>O.red}});else if(i.skip)this.logger.log("SKIPPED",r.title,{suffix:{field:`SKIPPED: ${i.skip}`,format:()=>O.yellow}});else if(i.rollback)this.logger.log("ROLLBACK",r.title,{suffix:{field:`ROLLBACK: ${i.rollback}`,format:()=>O.red}});else if(i.retry)this.logger.log("RETRY",r.title,{suffix:{field:`RETRY:${i.retry.count}`,format:()=>O.red}});else if(i.paused){let s=o?.pausedTimer;this.logger.log("PAUSED",r.title,s&&{suffix:{...s,condition:!!i?.paused&&s.condition,args:[i.paused-Date.now()]}})}})})}calculate(t){if(this.cache.rendererOptions.has(t.id)&&this.cache.rendererTaskOptions.has(t.id))return;let r={...this.options,...t.rendererOptions};this.cache.rendererOptions.set(t.id,r),this.cache.rendererTaskOptions.set(t.id,{...e.rendererTaskOptions,timer:r.timer,...t.rendererTaskOptions})}reset(t){this.cache.rendererOptions.delete(t.id),this.cache.rendererTaskOptions.delete(t.id)}},JE=class e{tasks;options;static nonTTY=!0;static rendererOptions={subtasks:!0,state:Object.values(DE),output:!0,prompt:!0,title:!0,messages:["skip","error","retry","rollback","paused"],messagesToStderr:["error","rollback","retry"],task:["hasRolledBack","isRollingBack","isCompleted","isSkipped","hasFinalized","hasSubtasks","title","hasReset","hasTitle","isPrompt","isPaused","isPending","isCancelled","isStarted","hasFailed","isEnabled","isRetrying","path"]};static rendererTaskOptions;logger;serializer;constructor(t,r){this.tasks=t,this.options=r,this.options={...e.rendererOptions,...this.options},this.logger=this.options.logger??new on({useIcons:!1}),this.serializer=new HE(this.options)}render(){this.renderer(this.tasks)}end(){}renderer(t){t.forEach((r)=>{if(this.options.subtasks)r.on("SUBTASK",(o)=>{this.renderer(o)});if(this.options.state)r.on("STATE",(o)=>{this.logger.toStdout(this.serializer.serialize("STATE",o,r))});if(this.options.output)r.on("OUTPUT",(o)=>{this.logger.toStdout(this.serializer.serialize("OUTPUT",o,r))});if(this.options.prompt)r.on("PROMPT",(o)=>{this.logger.toStdout(this.serializer.serialize("PROMPT",o,r))});if(this.options.title)r.on("TITLE",(o)=>{this.logger.toStdout(this.serializer.serialize("TITLE",o,r))});r.on("MESSAGE",(o)=>{let n=Object.fromEntries(Object.entries(o).map(([i,s])=>{if(this.options.messages.includes(i))return[i,s]}).filter(Boolean));if(Object.keys(n).length>0){let i=this.serializer.serialize("MESSAGE",n,r);if(this.options.messagesToStderr.some((s)=>Object.keys(n).includes(s)))this.logger.toStderr(i);else this.logger.toStdout(i)}})})}},YE=class e{tasks;options;static nonTTY=!0;static rendererOptions={logTitleChange:!1,pausedTimer:{...Oa,format:()=>O.yellowBright}};static rendererTaskOptions;logger;cache={rendererOptions:new Map,rendererTaskOptions:new Map};constructor(t,r){if(this.tasks=t,this.options=r,this.options={...e.rendererOptions,...this.options,icon:{...rn.icon,...r?.icon??{}},color:{...rn.color,...r?.color??{}}},this.logger=this.options.logger??new on({useIcons:!1,toStderr:ug}),this.logger.options.icon=this.options.icon,this.logger.options.color=this.options.color,this.options.timestamp)this.logger.options.fields.prefix.unshift(this.options.timestamp)}render(){this.renderer(this.tasks)}end(){}renderer(t){t.forEach((r)=>{this.calculate(r),r.once("CLOSED",()=>{this.reset(r)});let o=this.cache.rendererOptions.get(r.id),n=this.cache.rendererTaskOptions.get(r.id);if(r.on("SUBTASK",(i)=>{this.renderer(i)}),r.on("STATE",(i)=>{if(!r.hasTitle())return;if(i==="STARTED")this.logger.log("STARTED",r.title);else if(i==="COMPLETED"){let s=n.timer;this.logger.log("COMPLETED",r.title,s&&{suffix:{...s,condition:!!r.message?.duration&&s.condition,args:[r.message.duration]}})}else if(i==="CANCELLED")this.logger.log("CANCELLED",r.title)}),r.on("OUTPUT",(i)=>{this.logger.log("OUTPUT",i)}),r.on("PROMPT",(i)=>{let s=fr(i);if(s)this.logger.log("PROMPT",s)}),this.options?.logTitleChange!==!1)r.on("TITLE",(i)=>{this.logger.log("TITLE",i)});r.on("MESSAGE",(i)=>{if(i?.error)this.logger.log("FAILED",i.error);else if(i?.skip)this.logger.log("SKIPPED",i.skip);else if(i?.rollback)this.logger.log("ROLLBACK",i.rollback);else if(i?.retry)this.logger.log("RETRY",r.title,{suffix:i.retry.count.toString()});else if(i?.paused){let s=o?.pausedTimer;this.logger.log("PAUSED",r.title,s&&{suffix:{...s,condition:!!i?.paused&&s.condition,args:[i.paused-Date.now()]}})}})})}calculate(t){if(this.cache.rendererOptions.has(t.id)&&this.cache.rendererTaskOptions.has(t.id))return;let r={...this.options,...t.rendererOptions};this.cache.rendererOptions.set(t.id,r),this.cache.rendererTaskOptions.set(t.id,{...e.rendererTaskOptions,timer:r.timer,...t.rendererTaskOptions})}reset(t){this.cache.rendererOptions.delete(t.id),this.cache.rendererTaskOptions.delete(t.id)}},Ra={default:WE,simple:KE,verbose:YE,test:JE,silent:GE};nS=class extends sg{},iS=class extends nS{listr;task;options;rendererOptions;rendererTaskOptions;id=zE();state="WAITING";subtasks;title;initialTitle;output;retry;message={};prompt;parent;enabled;taskFn;closed;constructor(e,t,r,o,n){super();if(this.listr=e,this.task=t,this.options=r,this.rendererOptions=o,this.rendererTaskOptions=n,t.title){let i=Array.isArray(t?.title)?t.title:[t.title];this.title=dr(i.shift(),...i),this.initialTitle=this.title}this.taskFn=t.task,this.parent=e.parentTask}set state$(e){if(this.state=e,this.emit("STATE",e),this.hasSubtasks()&&this.hasFailed()){for(let t of this.subtasks)if(t.state==="STARTED")t.state$="FAILED"}this.listr.events.emit("SHOUD_REFRESH_RENDER")}set output$(e){this.output=e,this.emit("OUTPUT",e),this.listr.events.emit("SHOUD_REFRESH_RENDER")}set outputReset$(e){this.output=e,this.emit("OUTPUT_RESET"),this.listr.events.emit("SHOUD_REFRESH_RENDER")}set promptOutput$(e){if(this.emit("PROMPT",e),fr(e))this.listr.events.emit("SHOUD_REFRESH_RENDER")}set message$(e){this.message={...this.message,...e},this.emit("MESSAGE",e),this.listr.events.emit("SHOUD_REFRESH_RENDER")}set title$(e){this.title=e,this.emit("TITLE",e),this.listr.events.emit("SHOUD_REFRESH_RENDER")}get path(){return[...this.listr.path,this.initialTitle]}async check(e){if(this.state==="WAITING")this.enabled=await vt(this.task?.enabled??!0,e),this.emit("ENABLED",this.enabled),this.listr.events.emit("SHOUD_REFRESH_RENDER");return this.enabled}hasSubtasks(){return this.subtasks?.length>0}hasFinalized(){return this.isCompleted()||this.hasFailed()||this.isSkipped()||this.hasRolledBack()||this.isCancelled()}isPending(){return this.isStarted()||this.isPrompt()||this.hasReset()}isStarted(){return this.state==="STARTED"}isSkipped(){return this.state==="SKIPPED"}isCompleted(){return this.state==="COMPLETED"}hasFailed(){return this.state==="FAILED"}isCancelled(){return this.state==="CANCELLED"}isRollingBack(){return this.state==="ROLLING_BACK"}hasRolledBack(){return this.state==="ROLLED_BACK"}isRetrying(){return this.state==="RETRY"}hasReset(){return this.state==="RETRY"||this.state==="ROLLING_BACK"}isEnabled(){return this.enabled}hasTitle(){return typeof this?.title==="string"}isPrompt(){return this.state==="PROMPT"}isPaused(){return this.state==="PAUSED"}isClosed(){return this.closed}async pause(e){let t=this.state;this.state$="PAUSED",this.message$={paused:Date.now()+e},await rS(e),this.state$=t,this.message$={paused:null}}async run(e,t){let r=(i)=>{if(i instanceof de)i.options={...this.options,...i.options},i.rendererClass=tn("silent"),this.subtasks=i.tasks,i.errors=this.listr.errors,this.emit("SUBTASK",this.subtasks),i=i.run(e);else if(i instanceof Promise)i=i.then(r);else if(UE(i))i=new Promise((s,a)=>{i.on("data",(c)=>{this.output$=c.toString()}),i.on("error",(c)=>a(c)),i.on("end",()=>s(null))});else if(VE(i))i=new Promise((s,a)=>{i.subscribe({next:(c)=>{this.output$=c},error:a,complete:s})});return i},o=Date.now();this.state$="STARTED";let n=await vt(this.task?.skip??!1,e);if(n){if(typeof n==="string")this.message$={skip:n};else if(this.hasTitle())this.message$={skip:this.title};else this.message$={skip:"Skipped task without a title."};this.state$="SKIPPED";return}try{let i=typeof this.task?.retry==="number"&&this.task.retry>0?this.task.retry+1:typeof this.task?.retry==="object"&&this.task.retry.tries>0?this.task.retry.tries+1:1,s=typeof this.task.retry==="object"&&this.task.retry.delay;for(let a=1;a<=i;a++)try{await Promise.race([r(this.taskFn(e,t)),this.whenInterrupted()]);break}catch(c){if(this.listr.signal.aborted)throw c;if(a!==i){if(this.retry={count:a,error:c},this.message$={retry:this.retry},this.title$=this.initialTitle,this.output=void 0,t.report(c,"WILL_RETRY"),this.state$="RETRY",s)await this.pause(s)}else throw c}if(this.isStarted()||this.isRetrying())this.message$={duration:Date.now()-o},this.state$="COMPLETED"}catch(i){if(this.prompt instanceof LE)i=this.prompt;if(this.task?.rollback){t.report(i,"WILL_ROLLBACK");try{this.state$="ROLLING_BACK",await this.task.rollback(e,t),this.message$={rollback:this.title},this.state$="ROLLED_BACK"}catch(s){throw this.state$="FAILED",t.report(s,"HAS_FAILED_TO_ROLLBACK"),this.close(),s}if(this.listr.options?.exitAfterRollback!==!1)throw this.close(),i}else{if(this.listr.signal.aborted)throw this.state$="CANCELLED",i;if(this.state$="FAILED",this.listr.options.exitOnError!==!1&&await vt(this.task?.exitOnError,e)!==!1)throw t.report(i,"HAS_FAILED"),this.close(),i;else if(!this.hasSubtasks())t.report(i,"HAS_FAILED_WITHOUT_ERROR")}}finally{this.close()}}close(){this.emit("CLOSED"),this.listr.events.emit("SHOUD_REFRESH_RENDER"),this.complete()}whenInterrupted(){return new Promise((e,t)=>{let r=()=>{if(!this.hasSubtasks())t(Error("Interrupted."))};if(this.listr.signal.aborted){r();return}this.listr.signal.addEventListener("abort",r,{once:!0})})}},ig=class extends sg{}});function sS(e){return typeof e==="string"&&/^sha256:[a-f0-9]{64}$/.test(e)}function lg(e){if(!sS(e))throw Error(`Invalid SHA-256 digest: ${e}`)}var mr=1;import{AsyncLocalStorage as aS}from"async_hooks";function Ia(e){return e["x-arch"]==="amd64"?"amd64":"arm64"}function pg(e){if(Ia(e)!=="amd64")return{};return{nodeSelector:{"kubernetes.io/arch":"amd64"},tolerations:[{key:"arch",operator:"Equal",value:"amd64",effect:"NoExecute"}]}}var kT;var Ba=_(()=>{kT=new aS});import{execFile as cS,spawn as uS}from"child_process";import{createHash as lS}from"crypto";import{constants as za}from"fs";import{access as pS}from"fs/promises";import{chmod as BT,lstat as dS,mkdir as zT,open as fS,readdir as mg,readlink as mS,realpath as hS,symlink as DT,readFile as gS}from"fs/promises";import{delimiter as yS,dirname as bS,isAbsolute as Na,relative as hr,resolve as Et,sep as gr}from"path";import{promisify as _S}from"util";async function Va(){for(let e of(process.env.PATH??"").split(yS)){if(!e)continue;try{return await pS(Et(e,process.platform==="win32"?"git.exe":"git"),za.X_OK),!0}catch{}}return!1}function Da(e){return`sha256:${lS("sha256").update(e).digest("hex")}`}function hg(e){if(!e||e.includes("\x00")||e.includes("\\")||Na(e)||e.split("/").some((t)=>!t||t==="."||t===".."))throw Error(`Unsafe workspace path: ${JSON.stringify(e)}`)}function dg(e,t){let r=hr(e,t);return r===""||!r.startsWith(`..${gr}`)&&r!==".."&&!Na(r)}async function fg(e,t){let{stdout:r}=await La("git",["-C",e,"ls-files","-z",...t],{encoding:"buffer",maxBuffer:67108864}),o=new TextDecoder("utf-8",{fatal:!0}),n=[],i=0;for(let s=r.indexOf(0);s!==-1;s=r.indexOf(0,i)){if(s>i)n.push(o.decode(r.subarray(i,s)));i=s+1}return n}async function wS(e){let[t,r]=await Promise.all([fg(e,["--cached","--others","--exclude-standard"]),fg(e,["--others","--ignored","--exclude-standard","--",".env*","**/.env*"])]);return[...new Set([...t,...r])].sort((o,n)=>Buffer.from(o).compare(Buffer.from(n)))}async function vS(e){let t=[],r=new Set([".git",".hg",".svn","node_modules","vendor","bower_components",".venv","venv","__pycache__",".tox",".mypy_cache",".pytest_cache",".next",".nuxt",".svelte-kit",".cache",".turbo","dist","build","coverage","target","out","tmp","temp"]),o=/(?:^|[-_.])(?:secrets?|credentials?|configs?)(?:$|[-_.])/i,n=[],i=async(c)=>{try{let u=await gS(Et(c,".gitignore"),"utf8");for(let l of u.split(/\r?\n/)){let f=l.trim();if(!f||f.startsWith("#"))continue;if(f.startsWith("!"))continue;let p=f.replace(/^\//,"");if(p)n.push({base:hr(e,c).split(gr).join("/"),pattern:p.replace(/\/$/,""),directory:f.endsWith("/")})}}catch(u){if(u.code!=="ENOENT")throw u}},s=(c,u)=>{let l=!1;for(let f of n){let p=f.base?`${f.base}/`:"";if(f.base&&c!==f.base&&!c.startsWith(p))continue;let d=f.base&&c.startsWith(p)?c.slice(p.length):c,m=f.pattern.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*\*/g,"__DOUBLESTAR__").replace(/\*/g,"[^/]*").replace(/\?/g,"[^/]").replace(/__DOUBLESTAR__/g,".*"),h=new RegExp(`^(?:${m})(?:/.*)?$`),y=new RegExp(`^(?:${m})$`);if((h.test(d)||d.split("/").some((b)=>y.test(b)))&&(!f.directory||u||d.includes("/")))l=!0}return l},a=async(c)=>{await i(c);for(let u of await mg(c,{withFileTypes:!0})){let l=Et(c,u.name),f=hr(e,l).split(gr).join("/");if(u.isDirectory()){if(r.has(u.name)||o.test(u.name)||s(f,!0))continue;await a(l)}else if(u.isFile()||u.isSymbolicLink()){if(s(f,!1))continue;if(/^\.env/i.test(u.name)||/(?:secret|credential|password|token|private[-_.]?key)/i.test(u.name)||/^(?:id_rsa|id_ed25519|known_hosts|config\.json|\.npmrc|\.pypirc|\.netrc)$/i.test(u.name))continue;t.push(f)}else throw Error(`Special files are not allowed in workspaces: ${hr(e,l).split(gr).join("/")}`)}};return await a(e),t.sort((c,u)=>Buffer.from(c).compare(Buffer.from(u)))}async function xS(e){if(!await Va())return!1;try{return await La("git",["-C",e,"rev-parse","--show-toplevel"]),!0}catch(t){let{code:r,exitCode:o}=t,n=t instanceof Error?t.message:String(t);if(r==="ENOENT")return!1;if(o===128||r===128||/not a git repository/i.test(n))return!1;throw t}}async function ES(e){let t=await La("git",["-C",e,"ls-files","--others","--ignored","--exclude-standard","--directory","-z"],{encoding:"buffer",maxBuffer:67108864}),r=new TextDecoder("utf-8",{fatal:!0}),o=new Set,n=0;for(let m=t.stdout.indexOf(0);m!==-1;m=t.stdout.indexOf(0,n)){if(m>n){let h=r.decode(t.stdout.subarray(n,m));if(h.endsWith("/"))o.add(h.slice(0,-1))}n=m+1}let i=[],s=async(m)=>{for(let h of await mg(m,{withFileTypes:!0})){if(m===e&&h.name===".git")continue;let y=Et(m,h.name),b=hr(e,y).split(gr).join("/");if(h.isDirectory()){if(!o.has(b))await s(y)}else if(!h.isFile()&&!h.isSymbolicLink())i.push(b)}};if(await s(e),i.length===0)return;let a=Buffer.from(`${i.join("\x00")}\x00`),c=uS("git",["-C",e,"check-ignore","--stdin","-z"]),u=[],l=[];c.stdout.on("data",(m)=>u.push(m)),c.stderr.on("data",(m)=>l.push(m));let f=new Promise((m,h)=>{c.once("error",h),c.once("close",(y)=>{if(y===0||y===1)m();else h(Error(Buffer.concat(l).toString("utf8")||`git check-ignore exited with ${y}`))})});c.stdin.end(a),await f;let p=Buffer.concat(u),d=new Set;n=0;for(let m=p.indexOf(0);m!==-1;m=p.indexOf(0,n)){if(m>n)d.add(r.decode(p.subarray(n,m)));n=m+1}for(let m of i){let h=m.slice(m.lastIndexOf("/")+1);if(!d.has(m)||h.startsWith(".env"))throw Error(`Special files are not allowed in workspaces: ${m}`)}}function SS(e){return JSON.stringify({version:e.version,files:e.files.map((t)=>({path:t.path,type:t.type,digest:t.digest,size:t.size,mode:t.mode}))})}function Ua(e){return AS(e),Buffer.from(SS(e))}function $S(e){return Da(Ua(e))}function AS(e){if(e.version!==mr||!Array.isArray(e.files))throw Error("Unsupported workspace manifest");let t="",r=new Set;for(let o of e.files){if(hg(o.path),lg(o.digest),!Number.isSafeInteger(o.size)||o.size<0)throw Error(`Invalid size for ${o.path}`);if(o.type==="file"&&o.mode!==420&&o.mode!==493||o.type==="symlink"&&o.mode!==511)throw Error(`Invalid mode for ${o.path}`);if(o.type!=="file"&&o.type!=="symlink")throw Error(`Invalid entry type for ${o.path}`);if(r.has(o.path))throw Error(`Duplicate workspace path: ${o.path}`);for(let n of o.path.split("/").slice(0,-1).map((i,s,a)=>a.slice(0,s+1).join("/")))if(r.has(n))throw Error(`Workspace entry is used as a directory: ${n}`);if(t&&Buffer.from(t).compare(Buffer.from(o.path))>=0)throw Error("Workspace files must be bytewise sorted");r.add(o.path),t=o.path}}async function nn(e){let t=await hS(e),o=await xS(t)?await(async()=>(await ES(t),wS(t)))():await vS(t),n=[],i=new Map;for(let a of o){hg(a);let c=Et(t,a);if(!dg(t,c))throw Error(`Workspace path escapes root: ${a}`);let u;try{u=await dS(c)}catch(p){if(p.code==="ENOENT")continue;throw p}let l,f;if(u.isSymbolicLink()){let p=await mS(c);if(Na(p)||!dg(t,Et(bS(c),p)))throw Error(`Symlink escapes workspace: ${a} -> ${p}`);l=Buffer.from(p),f={path:a,type:"symlink",digest:Da(l),size:l.byteLength,mode:511}}else if(u.isFile()){let p,d=await fS(c,za.O_RDONLY|za.O_NOFOLLOW);try{let m=await d.stat();if(!m.isFile())throw Error(`Not a regular file: ${a}`);p=m.mode&73?493:420,l=await d.readFile()}finally{await d.close()}f={path:a,type:"file",digest:Da(l),size:l.byteLength,mode:p}}else throw Error(`Special files are not allowed in workspaces: ${a}`);n.push(f),i.set(f.digest,l)}let s={version:mr,files:n};return{manifest:s,digest:$S(s),blobs:[...i].map(([a,c])=>({digest:a,data:c}))}}var La;var Fa=_(()=>{La=_S(cS)});import{randomUUID as kS}from"crypto";import{execFile as PS}from"child_process";import{isAbsolute as CS,relative as wg,resolve as gg,sep as vg}from"path";import{promisify as RS}from"util";class Eg{inflight=0;maxInflight;maxPerSecond;requestStarts=[];waiting=[];rateGate=Promise.resolve();clock;sleep;constructor(e){if(this.maxInflight=e?.maxInflight??zS,this.maxPerSecond=e?.maxPerSecond??DS,!Number.isSafeInteger(this.maxInflight)||this.maxInflight<1)throw RangeError("maxInflight must be a positive integer");if(!Number.isSafeInteger(this.maxPerSecond)||this.maxPerSecond<1)throw RangeError("maxPerSecond must be a positive integer");this.clock=e?.clock??{now:()=>Date.now()},this.sleep=e?.sleep??((t)=>Bun.sleep(t))}get currentInflight(){return this.inflight}get maxConcurrent(){return this.maxInflight}get currentRequestStarts(){return this.pruneOldStarts(),this.requestStarts.length}pruneOldStarts(){let e=this.clock.now()-1000;while(this.requestStarts.length>0&&this.requestStarts[0]<=e)this.requestStarts.shift()}async acquire(){if(this.inflight<this.maxInflight){this.inflight++;return}await new Promise((e)=>{this.waiting.push(e)})}release(){if(this.waiting.length>0)this.waiting.shift()();else this.inflight--}waitForRateLimit(){let e=this.rateGate.then(async()=>{for(;;){if(this.pruneOldStarts(),this.requestStarts.length<this.maxPerSecond){this.requestStarts.push(this.clock.now());return}let t=this.requestStarts[0];await this.sleep(Math.max(1,t+1000-this.clock.now()))}});return this.rateGate=e.catch(()=>{}),e}async run(e){await this.acquire();try{return await this.waitForRateLimit(),await e()}finally{this.release()}}}async function NS(e,t,r){let o=0,n=async()=>{for(;;){let i=o++;if(i>=e.length)return;await r(e[i])}};await Promise.all(Array.from({length:Math.min(t,e.length)},n))}function LS(e,t){return wg(e,t).split(vg).join("/")||"."}function bg(e,t,r,o){let n=wg(e,t);if(n.startsWith(`..${vg}`)||n===".."||CS(n))throw Error(`${r} must stay inside the git repo for service ${o}`);return LS(e,t)}function VS(e){if(!e.build||typeof e.build==="string"||!e.build.args)return[];if(Array.isArray(e.build.args))return[...e.build.args];return Object.entries(e.build.args).filter(([,t])=>t!==null).map(([t,r])=>`${t}=${String(r)}`)}function US(e,t,r,o,n,i){if(!r.build)return;let s=r.build,a=typeof s==="string"?s:s.context??".";if(a.includes("://"))throw Error(`Remote build context is not supported for service ${t}`);if(typeof s!=="string"&&s.dockerfile_inline)throw Error(`dockerfile_inline is not supported for service ${t}`);let c=gg(o,a),u=bg(n,c,"Build context",t),l=typeof s==="string"||!s.dockerfile?void 0:gg(c,s.dockerfile);return{name:t,image:FS(e,t,i),context:u,dockerfile:l?bg(n,l,"Dockerfile",t):void 0,target:typeof s==="string"?void 0:s.target,buildArgs:VS(r)}}function FS(e,t,r=Co){return`${r.replace(/\/+$/,"")}/kuber/${e}-${t}:latest`}async function Ma(e){if(!await Va())return e;try{let{stdout:t}=await TS("git",["-C",e,"rev-parse","--show-toplevel"]);return t.trim()}catch(t){if(t.code==="ENOENT")return e;throw t}}async function MS(e,t,r,o,n){let i=`/blobs/${encodeURIComponent(e)}/uploads`,s=n?`?project=${encodeURIComponent(n)}`:"",a=`${i}${s}`,c=await o.run(()=>r(a,{method:"POST",json:{size:t.byteLength}})),u=c.offset;while(!c.complete&&u<t.byteLength){let l=t.subarray(u,u+OS),f=await o.run(()=>r(a,{method:"PATCH",headers:{"content-type":"application/octet-stream","upload-offset":String(u)},body:l}));if(f.offset<=u)throw Error(`Blob upload for ${e} made no progress`);u=f.offset}if(!c.complete)await o.run(()=>r(`${i}/complete${s}`,{method:"POST",json:{}}))}async function jS(e,t=k,r,o,n){let i=new Map(e.blobs.map((a)=>[a.digest,a.data]));i.set(e.digest,Ua(e.manifest));let s=o??new Eg;for(;;){let a=await s.run(()=>t("/snapshots/negotiate",{method:"POST",json:{workspace:e.digest,...n&&{project:n}}}));if(a.ready)return;if(a.missing.length===0)throw Error("Snapshot negotiation is incomplete but reported no missing blobs");await NS(a.missing,s.maxConcurrent,async(c)=>{let u=i.get(c);if(!u)throw Error(`Server requested unknown workspace blob ${c}`);await r?.progress?.(`Uploading ${c}`),await MS(c,u,t,s,n)})}}async function ZS(e,t,r,o){if(e.type==="status"){if(!r?.has(e.status.state))r?.add(e.status.state),await t?.progress?.(`${o?`${o}: `:""}Build ${e.status.state}`);return 0}if(t?.stream)t.stream.write(o?`[${o}] ${e.message}`:e.message);else await t?.progress?.(`${o?`${o}: `:""}${e.message.trimEnd()}`);return e.sequence}function qS(e){if(!(e instanceof Error)||e.name==="AbortError")return!1;if(e.name==="TimeoutError"||e instanceof TypeError)return!0;let t="code"in e&&typeof e.code==="string"?e.code:e.cause&&typeof e.cause==="object"&&("code"in e.cause)&&typeof e.cause.code==="string"?e.cause.code:void 0;return t==="ECONNABORTED"||t==="ECONNRESET"||t==="ECONNREFUSED"||t==="EAI_AGAIN"||t==="ETIMEDOUT"}async function _g(e,t,r,o,n,i){for(let s=1;s<=yg;s++)try{return i?.throwIfAborted(),await e(t,{...r,signal:i},{timeoutMs:BS})}catch(a){if(!qS(a)||s===yg)throw a;i?.throwIfAborted(),await n(o)}throw Error("Build poll retries exhausted")}async function QS(e,t,r,o,n,i,s,a){let c=i,u=0,l=new Set;for(;;){let f=await _g(t,`/builds/${encodeURIComponent(e)}/events?after=${u}`,void 0,o,n,s);for(let p of f)u=Math.max(u,await ZS(p,r,l,a));if(c.state==="succeeded"||c.state==="failed")return c;if(c=await _g(t,`/builds/${encodeURIComponent(e)}/reconcile`,{method:"POST",json:{}},o,n,s),c.state!=="succeeded"&&c.state!=="failed")s?.throwIfAborted(),await n(o)}}async function sn(e,t,r={}){let o=r.request??k,n=Object.entries(t.services??{}).filter(([,a])=>a.build).map(([a])=>a),i=Array(n.length),s=0;return await Promise.all(Array.from({length:Math.min(xg,n.length)},async()=>{for(;;){let a=s++;if(a>=n.length)return;let c=n[a];r.signal?.throwIfAborted();try{i[a]=(await o("/images/resolve",{method:"POST",json:{project:e,service:c},signal:r.signal})).reference}catch(u){throw Error(`Cannot resolve a published image for service ${c}. Run kuber up to build it.`,{cause:u})}}})),Object.fromEntries(n.map((a,c)=>[a,i[c]]))}async function Sg(e,t,r=process.cwd(),o,n={}){if(!Object.values(t.services??{}).some((b)=>b.build))return{built:[],changed:[],images:{}};let i=n.buildConcurrency??xg;if(!Number.isSafeInteger(i)||i<1)throw RangeError("buildConcurrency must be a positive integer");let s=n.request??k,a=n.workspaceRoot;if(!a&&!n.snapshot)try{a=await Ma(r)}catch(b){a=r}a??=r;let c=n.snapshot??await nn(a),u=Object.entries(t.services??{}).flatMap(([b,S])=>{let x=US(e,b,S,r,a,n.registry??Co);return x?[x]:[]});await jS(c,s,o,n.scheduler,e);let l=Array(u.length),f=0,p,d=!1,m=async()=>{while(!d&&f<u.length){let b=f++,S=u[b];try{n.signal?.throwIfAborted(),await o?.progress?.(`Building ${S.name}`),l[b]=await h(S)}catch(x){if(!d)p=x;d=!0}}},h=async(b)=>{let S=kS(),x={version:mr,id:S,project:e,service:b.name,spec:{architecture:Ia(t),image:b.image,context:b.context,dockerfile:b.dockerfile,target:b.target,buildArgs:b.buildArgs,workspace:c.digest}},A=await s("/builds",{method:"POST",json:x,signal:n.signal},{timeoutMs:300000}),R=await QS(S,s,o,n.pollIntervalMs??IS,n.sleep??((Z)=>Bun.sleep(Z)),A,n.signal,b.name);if(R.state!=="succeeded")throw Error(`Build failed for service ${b.name}: ${R.error??"unknown error"}`);return(await s(`/builds/${encodeURIComponent(S)}/result`,{signal:n.signal})).reference};if(await Promise.all(Array.from({length:Math.min(i,u.length)},m)),d)throw p;let y=Object.fromEntries(u.map((b,S)=>[b.name,l[S]]));return{built:u.map((b)=>b.name),changed:u.map((b)=>b.name),images:y}}var TS,OS=8388608,IS=1000,BS=300000,yg=3,xg=3,zS=20,DS=40;var ja=_(()=>{Ba();q();Ro();Fa();TS=RS(PS)});function $g(e){return WS[e.kind]??999}function Ag(e){return[...e].sort((t,r)=>$g(t)-$g(r))}var WS,tO,rO;var an=_(()=>{Ve();WS={Namespace:0,GarageBucket:1,GarageKey:2,ServiceAccount:3,ClusterRole:4,Role:5,ClusterRoleBinding:6,RoleBinding:7,StorageClass:8,PersistentVolumeClaim:9,Secret:10,ConfigMap:11,Service:12,Deployment:13,HorizontalPodAutoscaler:14,Ingress:15,IngressRoute:16},tO=`app.kubernetes.io/managed-by=${H["app.kubernetes.io/managed-by"]}`,rO=H["app.kubernetes.io/managed-by"]});function JS(e){return`${HS}-${e}`}function Za(e){return encodeURIComponent(e)}function kg(e,t){return`postgresql://${Za(t.username)}:${Za(t.password)}@${qa}:${Qa}/${Za(e.database)}`}function Pg(e){if(!e.startsWith("postgresql:"))return;let t=e.split(":");if(t.length!==2)throw Error(`Invalid postgres volume ${e}. Use postgresql:<name> or postgresql:<user>/<database>.`);let r=t[1]?.trim();if(!r)throw Error(`Invalid postgres volume ${e}. Use postgresql:<name> or postgresql:<user>/<database>.`);let o=r.split("/");if(o.length>2||o.some((s)=>s.trim()===""))throw Error(`Invalid postgres volume ${e}. Use postgresql:<name> or postgresql:<user>/<database>.`);let n=o[0],i=o[1]??n;return{username:n,database:i}}function Cg(e){return typeof e==="string"&&Pg(e)!==void 0}function YS(e,t){let r=t.volumes?.flatMap((o)=>{if(typeof o!=="string")return[];let n=Pg(o);return n?[{...n,service:e,secretName:JS(n.username)}]:[]})??[];if(r.length>1)throw Error(`Service ${e} declares multiple postgres volumes. Only zero or one postgresql:<...> entry is allowed per service.`);return r[0]}function nt(e){let t=Object.entries(e.services??{}).flatMap(([o,n])=>{let i=YS(o,n);return i?[i]:[]}),r=new Map;for(let o of t){let n=r.get(o.database);if(n&&n!==o.username)throw Error(`Database ${o.database} is claimed by both ${n} and ${o.username}. A database can only have one owner.`);r.set(o.database,o.username)}return t}var KS="database",HS="postgres",qa,Qa=5432;var yr=_(()=>{Ve();an();qa=`c.${KS}.svc.cluster.local`});function cn(e,t){if(typeof e!=="object"||e===null||typeof t!=="object"||t===null)return t;let r=Array.isArray(e)?[...e]:{...e};for(let o of Object.keys(t)){let n=r[o],i=t[o];if(Array.isArray(n)&&Array.isArray(i))r[o]=[...n,...i];else if(n&&typeof n==="object"&&i&&typeof i==="object")r[o]=cn(n,i);else r[o]=i}return r}function Rg(e){if(!e.startsWith("s3:"))return;let t=e.split(":");if(t.length!==2)throw Error(`Invalid S3 volume ${e}. Use s3:<name> or s3:<key>/<bucket>.`);let r=t[1]?.trim();if(!r)throw Error(`Invalid S3 volume ${e}. Use s3:<name> or s3:<key>/<bucket>.`);let o=r.split("/");if(o.length>2||o.some((s)=>s.trim()===""))throw Error(`Invalid S3 volume ${e}. Use s3:<name> or s3:<key>/<bucket>.`);let n=o[0],i=o[1]??n;return{key:n,bucket:i}}function Tg(e){return typeof e==="string"&&Rg(e)!==void 0}function XS(e,t){let r=t.volumes?.flatMap((o)=>{if(typeof o!=="string")return[];let n=Rg(o);return n?[{...n,service:e}]:[]})??[];if(r.length>1)throw Error(`Service ${e} declares multiple S3 volumes. Only zero or one s3:<...> entry is allowed per service.`);return r[0]}function it(e){let t=Object.entries(e.services??{}).flatMap(([o,n])=>{let i=XS(o,n);return i?[i]:[]}),r=new Map;for(let o of t){let n=r.get(o.key);if(n&&n!==o.bucket)throw Error(`S3 key ${o.key} is claimed for both ${n} and ${o.bucket}. A managed key can only target one bucket.`);r.set(o.key,o.bucket)}return t}var br=_(()=>{Ve();an()});import{existsSync as Og,readFileSync as e$,realpathSync as Ga,statSync as t$}from"fs";import{dirname as r$,isAbsolute as Ig,normalize as o$,relative as n$,resolve as un,sep as Bg}from"path";function St(e,t){return Object.assign(Error(e),t?{code:t}:{})}function i$(e){if(!e||e.includes("\x00")||e.includes("\\")||e.startsWith("~")||Ig(e))throw St(`Artifact path must be workspace-relative: ${e}`);let t=o$(e);if(t===".."||t.startsWith(`..${Bg}`))throw St(`Artifact path escapes the workspace: ${e}`);return t.replace(/^\.\//,"")}function Ka(e,t){let r=n$(e,t);if(r===".."||r.startsWith(`..${Bg}`)||Ig(r))throw St(`Artifact path escapes the workspace: ${t}`)}function s$(e,t){let r=t;while(!Og(r)){let o=r$(r);if(o===r)break;r=o}Ka(e,Ga(r))}function Wa(e,t){if(t!==void 0&&(!Number.isSafeInteger(t)||t<0))throw Error(`${e} must be a non-negative safe integer`)}class zg{#t;#r=0;#e=0;constructor(e){Wa("maxArtifactCount",e.maxArtifactCount),Wa("maxArtifactBytes",e.maxArtifactBytes),Wa("maxTotalBytes",e.maxTotalBytes),this.#t=e}add(e,t){let r=Buffer.byteLength(t);if(this.#t.maxArtifactBytes!==void 0&&r>this.#t.maxArtifactBytes)throw St(`Artifact ${e} exceeds the ${this.#t.maxArtifactBytes} byte limit`);if(this.#t.maxArtifactCount!==void 0&&this.#r+1>this.#t.maxArtifactCount)throw St(`Artifact count exceeds the ${this.#t.maxArtifactCount} limit`);if(this.#t.maxTotalBytes!==void 0&&this.#e+r>this.#t.maxTotalBytes)throw St(`Artifact bytes exceed the ${this.#t.maxTotalBytes} byte limit`);this.#r+=1,this.#e+=r}}class je{#t;#r;#e;constructor(e){this.#t=e.strict?Ga(e.workspace):un(e.workspace),this.#r=e.strict??!1,this.#e=new zg(e)}#o(e,t){if(!this.#r)return t.expandHome&&e.startsWith("~")?un(process.env.HOME??"",e.slice(1)):un(this.#t,e);let r=un(this.#t,i$(e));return Ka(this.#t,r),s$(this.#t,r),r}isFile(e,t={}){let r=this.#o(e,t);return Og(r)&&t$(r).isFile()}readText(e,t={}){let r=this.#o(e,t);if(this.#r)Ka(this.#t,Ga(r));let o=e$(r,"utf8");return this.#e.add(e,o),o}}var Dg=()=>{};import{createHash as Mg}from"crypto";import{basename as jg}from"path";function Zg(e){if(!e.diskTag&&e.replicaCount===void 0&&!e.dataLocality)return;return{diskTag:e.diskTag?[...e.diskTag].sort():void 0,replicaCount:e.replicaCount,dataLocality:e.dataLocality}}function qg(e){return`kuber-longhorn-${Mg("sha256").update(JSON.stringify(e)).digest("hex").slice(0,12)}`}function st(e){if(typeof e==="number")return e;if(!e||e.includes("-"))return;let t=Number(e);return Number.isInteger(t)?t:void 0}function Ng(e){if(typeof e!=="string"&&typeof e!=="number")return;let t=String(e).trim(),r=a$.exec(t);if(!r)return;let o=Number(r[1]),n=Number(r[2]);if(!Number.isInteger(o)||!Number.isInteger(n))return;if(o<1||n<1)throw Error(`Invalid replica range ${t}. Range bounds must be positive integers.`);if(o>n)throw Error(`Invalid replica range ${t}. Minimum (${o}) cannot exceed maximum (${n}).`);return{kind:"range",min:o,max:n}}function pn(e,t){if(t===void 0||t.trim()==="")return;let r=Number(t);if(!Number.isInteger(r)||r<0)throw Error(`Invalid ${e} value ${JSON.stringify(t)}. Expected a non-negative integer (zero allowed for a fixed replica count), a numeric string, or a "min-max" range.`)}function Lg(e){if(e.scale!==void 0){let t=st(e.scale);if(t!==void 0)return pn("scale",String(e.scale)),t;pn("scale",String(e.scale))}if(e.deploy?.replicas!==void 0){let t=st(e.deploy.replicas);if(t!==void 0)return pn("deploy.replicas",String(e.deploy.replicas)),t;pn("deploy.replicas",String(e.deploy.replicas))}return 1}function Qg(e){let t=Ng(e.scale);if(t)return Vg(t);if(e.scale!==void 0)return{kind:"fixed",value:Lg(e)};let r=Ng(e.deploy?.replicas);if(r)return Vg(r);return{kind:"fixed",value:Lg(e)}}function Vg(e){if(e.min===e.max)return{kind:"fixed",value:e.min};return e}function c$(e){if(e.kind==="range")return e.max>1;return e.value>1}function u$(e,t,r){if(t.build){let o=r[e];if(!o)throw Error(`Missing resolved build image for service ${e}`);return o}return t.image}function Ha(e){return e?.toUpperCase()==="UDP"?"UDP":"TCP"}function dn(e){if(!e)return;return/[a-z]/i.test(e)?e:void 0}function fn(e){return typeof e==="string"?JSON.stringify(e):String(e)}function Ug(e,t){let r=String(e).trim(),o=l$.exec(r);if(!o)throw Error(`Invalid ${t} value ${fn(e)}. Expected a non-negative finite decimal number of CPU cores.`);let n=BigInt(o[1]??"0"),i=o[2]??"",s=n*1000n+(i?BigInt(i.padEnd(3,"0").slice(0,3)):0n);if(i.slice(3).replaceAll("0","")!=="")throw Error(`Invalid ${t} value ${fn(e)}. CPU cores must be representable in whole millicores.`);return s%1000n===0n?String(s/1000n):`${s}m`}function Fg(e,t){let r=e.trim(),o=p$.exec(r);if(!o)throw Error(`Invalid ${t} value ${fn(e)}. Expected a non-negative memory quantity.`);let n=o[1]??"",i=(()=>{switch(n.toLowerCase()){case"b":return"";case"k":case"kb":return"k";case"m":case"mb":return"M";case"g":case"gb":return"G";case"t":case"tb":return"T";case"p":case"pb":return"P";case"e":case"eb":return"E";default:return n}})();if(!["","n","u","m","k","M","G","T","P","E","Ki","Mi","Gi","Ti","Pi","Ei"].includes(i))throw Error(`Invalid ${t} value ${fn(e)}. Expected a valid Kubernetes or Compose memory quantity.`);return`${r.slice(0,r.length-n.length)}${i}`}function d$(e){let t=e.deploy?.resources;if(!t)return;let r={...t.limits?.cpus!==void 0?{cpu:Ug(t.limits.cpus,"deploy.resources.limits.cpus")}:{},...t.limits?.memory!==void 0?{memory:Fg(t.limits.memory,"deploy.resources.limits.memory")}:{}},o={...t.reservations?.cpus!==void 0?{cpu:Ug(t.reservations.cpus,"deploy.resources.reservations.cpus")}:{},...t.reservations?.memory!==void 0?{memory:Fg(t.reservations.memory,"deploy.resources.reservations.memory")}:{}};if(Object.keys(r).length===0&&Object.keys(o).length===0)return;return{...Object.keys(r).length>0?{limits:r}:{},...Object.keys(o).length>0?{requests:o}:{}}}function f$(e){if(typeof e==="boolean")return e;if(!e)return;switch(e.toLowerCase()){case"1":case"true":case"yes":case"on":case"ro":return!0;case"0":case"false":case"no":case"off":case"rw":return!1}}function mn(e){return e.toLowerCase().replace(/[^a-z0-9-]+/g,"-").replace(/^-+|-+$/g,"").slice(0,63)}function Ja(e){if(e===void 0||e===null)return;let t=String(e).trim();if(!t)return;return t}function Wg(e){if(e===void 0||e===null)return;let t=(Array.isArray(e)?e:[e]).flatMap((r)=>String(r).split(",")).map((r)=>r.trim()).filter(Boolean);return t.length>0?[...new Set(t)]:void 0}function Gg(e){if(e===void 0||e===null||e==="")return;let t=Number(e);return Number.isInteger(t)&&t>=1&&t<=20?t:void 0}function m$(e){let[t,r]=e.split(/\s+on\s+/i,2).map((n)=>n?.trim());if(!r)return{requestedStorage:Ja(t)};let o=/^(?:(?<replicas>\d+)\s+)?(?<tags>.+)$/.exec(r);return{requestedStorage:Ja(t),diskTag:Wg(o?.groups?.tags),replicaCount:Gg(o?.groups?.replicas),dataLocality:"none"}}function h$(e){let t=/^(?<name>[^()]+)\((?<size>[^()]+)\)$/.exec(e.trim());if(!t?.groups)return;let r=t.groups.name?.trim(),{requestedStorage:o,diskTag:n,replicaCount:i,dataLocality:s}=m$(t.groups.size??"");if(!r)return;return{source:r,requestedStorage:o,diskTag:n,replicaCount:i,dataLocality:s}}function Kg(e){if(!e||Ya(e))return{source:e};let t=h$(e);if(!t)return{source:e};if(!t.source)throw Error(`Invalid volume source ${e}. Expected name(size).`);return t}function Hg(e){return Ja(e?.["x-size"])}function Jg(e){return Wg(e?.["x-diskTag"])}function Yg(e){return Gg(e?.["x-replicaCount"])}function Xg(e){return e?.["x-dataLocality"]==="none"?"none":void 0}function ey(e){return mn(`bind-${Bun.hash(e).toString(36)}`)}function Ya(e){return e.startsWith(".")||e.startsWith("/")||e.startsWith("~")||e.includes("/")}function ty(e,t){return t.isFile(e,{expandHome:!0})}function g$(e,t,r){if(Cg(e)||Tg(e))return;let o=e.split(":");if(o.length===1)return{name:`volume-${t}`,kind:"volume",target:e};let n=o.at(-1),i=n==="ro"||n==="rw",s=o.at(i?-2:-1),a=o.slice(0,i?-2:-1).join(":");if(!s)return;let{source:c,requestedStorage:u,diskTag:l,replicaCount:f,dataLocality:p}=Kg(a||void 0);return{name:c&&Ya(c)?ey(c):`volume-${t}`,kind:c&&Ya(c)?ty(c,r)?"config-file":"bind":"volume",source:c||void 0,target:s,configKey:c?jg(c):void 0,readOnly:i?n==="ro":void 0,requestedStorage:u,diskTag:l,replicaCount:f,dataLocality:p}}function y$(e,t,r){if(typeof e==="string")return g$(e,t,r);if(!e.target)return;if(e.type!=="bind"&&e.type!=="volume"&&e.type!=="tmpfs")return;let{source:o,requestedStorage:n,diskTag:i,replicaCount:s,dataLocality:a}=Kg(e.source);return{name:o?e.type==="bind"?ey(o):`${e.type}-${mn(o)||t}`:`${e.type}-${t}`,kind:e.type==="bind"&&o&&ty(o,r)?"config-file":e.type,source:o,target:e.target,readOnly:f$(e.read_only),configKey:o?jg(o):void 0,subPath:e.volume?.subpath,sizeLimit:e.type==="tmpfs"&&e.tmpfs?.size!==void 0?String(e.tmpfs.size):void 0,requestedStorage:n??Hg(e.volume),diskTag:i??Jg(e.volume),replicaCount:s??Yg(e.volume),dataLocality:a??Xg(e.volume)}}function b$(e,t){if(!t||!e)return;let r=e[t];return Hg(r)}function _$(e,t){if(!t||!e)return;let r=e[t];return Jg(r)}function w$(e,t){if(!t||!e)return;let r=e[t];return Yg(r)}function v$(e,t){if(!t||!e)return;let r=e[t];return Xg(r)}function hn(e,t,r={}){let o=e.volumes?.flatMap((i,s)=>{let a=y$(i,s,t);if(!a)return[];return[{...a,requestedStorage:a.requestedStorage??b$(r,a.source)??(a.kind==="volume"&&a.source?ln.requestedStorage:void 0),diskTag:a.diskTag??_$(r,a.source)??(a.kind==="volume"&&a.source?ln.diskTag:void 0),replicaCount:a.replicaCount??w$(r,a.source)??(a.kind==="volume"&&a.source?ln.replicaCount:void 0),dataLocality:a.dataLocality??v$(r,a.source)??(a.kind==="volume"&&a.source?ln.dataLocality:void 0)}]})??[],n=(Array.isArray(e.tmpfs)?e.tmpfs:[e.tmpfs]).filter((i)=>Boolean(i)).map((i,s)=>({name:`tmpfs-${o.length+s}`,kind:"tmpfs",target:i}));return[...o,...n]}function x$(e){if(e.length===0)return;return e.map((t)=>({name:t.name,mountPath:t.target,readOnly:t.readOnly,subPath:t.kind==="config-file"?t.configKey:t.subPath}))}function E$(e,t){if(t.length===0)return;return t.map((r)=>{if(r.kind==="config-file")return{name:r.name,configMap:{name:r.name}};if(r.kind==="bind"){if(!r.source)return{name:r.name,emptyDir:{}};return{name:r.name,persistentVolumeClaim:{claimName:r.name}}}if(r.kind==="tmpfs")return{name:r.name,emptyDir:{medium:"Memory",sizeLimit:r.sizeLimit}};if(!r.source)return{name:r.name,emptyDir:{}};return{name:r.name,persistentVolumeClaim:{claimName:mn(`${e}-${r.source}`)}}})}function S$(e){return[...new Set(e.split(",").map((t)=>t.trim()).filter(Boolean).map((t)=>t.startsWith("/")?t:`/${t}`))]}function $$(e){let t=/^(?<portSpec>.+):protected(?:\((?<paths>[^)]*)\))?$/.exec(e);if(!t?.groups)return{portSpec:e};let r=t.groups.portSpec?.trim();if(!r)throw Error(`Invalid protected port syntax ${e}.`);let o=t.groups.paths?.trim();if(o===void 0)return{portSpec:r,routingKind:"ingressroute"};let n=S$(o);if(n.length===0)throw Error(`Invalid protected port syntax ${e}. Expected one or more paths.`);return{portSpec:r,routingKind:"ingressroute",paths:n}}function gn(e){let t=e.ports?.flatMap((o,n)=>{if(typeof o==="number")return[{name:`port-${n}`,containerPort:o,servicePort:o,protocol:"TCP"}];if(typeof o==="string"){let a=/\/(tcp|udp)$/i.exec(o),c=a?o.slice(0,-a[0].length):o,u=a?.[1];if(!c)return[];let{portSpec:l,routingKind:f,paths:p}=$$(c),d=l.split(":"),m=st(d.at(-1));if(!m)return[];let h=st(d.at(-2)),y=h!==void 0?dn(d.at(-3)):dn(d.at(-2));return[{name:`port-${n}`,containerPort:m,servicePort:h??m,hostPort:h,host:y,protocol:Ha(u),routingKind:y?f??"ingress":void 0,paths:p}]}let i=st(o.target);if(!i)return[];let s=st(o.published);return[{name:o.name??`port-${n}`,containerPort:i,servicePort:s??i,hostPort:s,host:dn(o.host_ip),protocol:Ha(o.protocol),routingKind:dn(o.host_ip)?"ingress":void 0}]})??[],r=e.expose?.flatMap((o,n)=>{let[i,s]=String(o).split("/"),a=st(i);if(!a)return[];return[{name:`expose-${n}`,containerPort:a,servicePort:a,protocol:Ha(s)}]})??[];return[...t,...r]}function A$(e){if(e.length===0)return;let t=new Map;for(let r of e)t.set(`${r.containerPort}:${r.protocol}`,{name:r.name,containerPort:r.containerPort,hostPort:r.hostPort,protocol:r.protocol});return[...t.values()]}function k$(e){if(e.length===0)return;let t=new Map;for(let r of e)t.set(`${r.servicePort}:${r.protocol}`,{name:r.name,port:r.servicePort,targetPort:r.containerPort,protocol:r.protocol});return[...t.values()]}function P$(e,t){let r=new Set;return t.flatMap((o)=>{if(!o.host||o.routingKind==="ingressroute"||r.has(o.host))return[];return r.add(o.host),[{host:o.host,http:{paths:[{path:"/",pathType:"Prefix",backend:{service:{name:e,port:{number:o.servicePort}}}}]}}]})}function C$(e,t,r){let o=r.flatMap((n)=>{if(!n.host||n.routingKind!=="ingressroute")return[];return(n.paths&&n.paths.length>0?n.paths.map((s)=>`Host(\`${n.host}\`) && PathPrefix(\`${s}\`)`):[`Host(\`${n.host}\`)`]).map((s)=>({kind:"Rule",match:s,middlewares:[{name:"cf-auth",namespace:"routing"}],services:[{name:t,port:n.servicePort}]}))});if(o.length===0)return;return{apiVersion:"traefik.io/v1alpha1",kind:"IngressRoute",metadata:{name:t,namespace:e,labels:H},spec:{routes:o}}}function R$(e){if(!e)return[];return(Array.isArray(e)?e:[e]).map((r)=>typeof r==="string"?{path:r,required:!0}:{path:r.path,required:r.required!==!1&&r.required!=="false"})}function T$(e){let t={};for(let r of e.split(/\r?\n/)){let o=r.trim();if(!o||o.startsWith("#"))continue;let n=o.indexOf("=");if(n===-1)continue;let i=o.slice(0,n).trim(),s=o.slice(n+1);if(!i)continue;t[i]=s}return t}async function O$(e,t){let r={};for(let o of R$(e))try{let n=t.readText(o.path);Object.assign(r,T$(n))}catch(n){if(!o.required&&n&&typeof n==="object"&&"code"in n&&n.code==="ENOENT")continue;throw n}return r}function I$(e,t,r,o,n=process.cwd(),i={},s={},a={},c=new je({workspace:n}),u={}){let l=hn(o,c,s),f=gn(o),p=Boolean(o.env_file)||Object.keys(i).length>0,d=u.replicaSpec??Qg(o),m=d.kind==="range"?d.min:d.value,h=[cn({name:t,imagePullPolicy:"Always",env:cm(o.environment),image:u$(t,o,a),command:o.command instanceof Array?o.command:o.command?o.command.split(" "):void 0,envFrom:p?[{secretRef:{name:`${t}-env`}}]:void 0,ports:A$(f),resources:d$(o),volumeMounts:x$(l)},o["x-container"]??{})],y={restartPolicy:"Always",...pg(r),volumes:E$(e,l),containers:h};if(c$(d))y.topologySpreadConstraints=[{maxSkew:1,topologyKey:"kubernetes.io/hostname",whenUnsatisfiable:"ScheduleAnyway",labelSelector:{matchLabels:{app:t}}}];return cn({apiVersion:"apps/v1",kind:"Deployment",metadata:{name:t,namespace:e,labels:H},spec:{replicas:m,strategy:{rollingUpdate:{maxSurge:"25%",maxUnavailable:"25%"}},selector:{matchLabels:{app:t}},template:{metadata:{labels:{app:t}},spec:y}}},o["x-deployment"]??{})}function B$(e,t,r){let o=k$(gn(r));if(!o)return;return{apiVersion:"v1",kind:"Service",metadata:{name:t,namespace:e,labels:H},spec:{type:"ClusterIP",selector:{app:t},ports:o}}}function z$(e,t,r){let o=P$(t,gn(r));if(o.length===0)return;return{apiVersion:"networking.k8s.io/v1",kind:"Ingress",metadata:{name:t,namespace:e,labels:H},spec:{rules:o}}}function D$(e,t,r=process.cwd(),o={},n=new je({workspace:r})){let i=new Map;for(let s of hn(t,n,o)){let a=s.kind==="bind"?s.source?s.name:void 0:s.kind==="volume"&&s.source?mn(`${e}-${s.source}`):void 0;if(!a||i.has(a))continue;let c=Zg(s);i.set(a,{apiVersion:"v1",kind:"PersistentVolumeClaim",metadata:{name:a,namespace:e,labels:H},spec:{accessModes:[c?.replicaCount===1?"ReadWriteOnce":"ReadWriteMany"],storageClassName:c?qg(c):void 0,resources:{requests:{storage:s.requestedStorage??"1Gi"}}}})}return[...i.values()]}function N$(e,t=process.cwd(),r={},o=new je({workspace:t})){let n=new Map;for(let i of hn(e,o,r)){let s=Zg(i);if(!s)continue;let a=qg(s);n.set(a,{apiVersion:"storage.k8s.io/v1",kind:"StorageClass",metadata:{name:a,labels:H},provisioner:"driver.longhorn.io",allowVolumeExpansion:!0,reclaimPolicy:"Delete",volumeBindingMode:"Immediate",parameters:{...s.diskTag?{diskSelector:s.diskTag.join(",")}:{},...s.replicaCount!==void 0?{numberOfReplicas:String(s.replicaCount)}:{},...s.dataLocality?{dataLocality:"disabled"}:{}}})}return[...n.values()]}function L$(e,t,r=process.cwd(),o={},n=new je({workspace:r})){let i=new Map;for(let s of hn(t,n,o)){if(s.kind!=="config-file"||!s.source||!s.configKey)continue;i.set(s.name,{apiVersion:"v1",kind:"ConfigMap",metadata:{name:s.name,namespace:e,labels:H},data:{[s.configKey]:n.readText(s.source,{expandHome:!0})}})}return[...i.values()]}async function V$(e,t,r,o=process.cwd(),n={},i=new je({workspace:o})){let s={...await O$(r.env_file,i),...n};if(Object.keys(s).length===0)return[];return[{apiVersion:"v1",kind:"Secret",metadata:{name:`${t}-env`,namespace:e,labels:H},type:"Opaque",stringData:s}]}function U$(e){let t=Object.entries(e.stringData??{}).sort(([r],[o])=>r.localeCompare(o));return Mg("sha256").update(JSON.stringify(t)).digest("hex")}function F$(e){return{apiVersion:"v1",kind:"Namespace",metadata:{name:e,labels:H}}}function M$(e,t){let r=e.spec?.template.spec?.containers[0];if(!r)return;if(t["x-container"]?.resources?.requests?.cpu!==void 0)return;if(r.resources??={},r.resources.requests??={},r.resources.requests.cpu===void 0)r.resources.requests.cpu="100m"}function j$(e,t,r){return{apiVersion:"autoscaling/v2",kind:"HorizontalPodAutoscaler",metadata:{name:t,namespace:e,labels:H},spec:{scaleTargetRef:{apiVersion:"apps/v1",kind:"Deployment",name:t},minReplicas:r.min,maxReplicas:r.max,metrics:[{type:"Resource",resource:{name:"cpu",target:{type:"Utilization",averageUtilization:80}}}]}}}function $e(e){return`${e.kind}:${e.metadata?.namespace??""}:${e.metadata?.name??""}`}async function yn(e,t,r=process.cwd(),o={},n={},i=new je({workspace:r})){let s=new Map,a=F$(e);s.set($e(a),a);for(let[c,u]of Object.entries(t.services??{})){for(let b of N$(u,r,t.volumes,i))s.set($e(b),b);for(let b of D$(e,u,r,t.volumes,i))s.set($e(b),b);for(let b of L$(e,u,r,t.volumes,i))s.set($e(b),b);let l=await V$(e,c,u,r,o[c]??{},i);for(let b of l)s.set($e(b),b);let f=B$(e,c,u);if(f)s.set($e(f),f);let p=Qg(u),d=I$(e,c,t,u,r,o[c]??{},t.volumes,n,i,{replicaSpec:p}),m=l[0];if(m)d.spec.template.metadata.annotations={...d.spec?.template.metadata?.annotations,"kuber.astrxl.dev/env-checksum":U$(m)};if(s.set($e(d),d),p.kind==="range"){M$(d,u);let b=j$(e,c,p);s.set($e(b),b)}let h=z$(e,c,u);if(h)s.set($e(h),h);let y=C$(e,c,gn(u));if(y)s.set($e(y),y)}return[...s.values()]}var ln,a$,l$,p$;var Xa=_(()=>{Ve();Ba();yr();tt();br();Dg();ln={requestedStorage:"1Gi",diskTag:["fast"],replicaCount:2,dataLocality:"none"};a$=/^\s*(\d+)\s*-\s*(\d+)\s*$/;l$=/^(\d+)(?:\.(\d+))?$/,p$=/^(?:\d+(?:\.\d+)?|\.\d+)([a-zA-Z]*)$/});import{randomUUID as ec}from"crypto";import{isDeepStrictEqual as ry}from"util";function uy(e){return`/workspaces/${encodeURIComponent(e)}/adopt`}function oy(e,t){let r={...e};for(let[o,n]of Object.entries(t))r[o]={...r[o],...n};return r}function G$(e){let{resource:t,phase:r,state:o}=e.data;return`${r==="apply"?"Applied":r==="wait"?"Waited for":"Deleted"} ${t.kind}/${t.name}: ${o}`}function K$(e){if(!e||typeof e!=="object")return!1;let{sequence:t,data:r}=e;if(!Number.isSafeInteger(t)||!r||typeof r!=="object")return!1;let{resource:o,phase:n,state:i}=r;if(!o||typeof o!=="object")return!1;let s=o;return typeof s.apiVersion==="string"&&typeof s.kind==="string"&&typeof s.name==="string"&&(s.namespace===void 0||typeof s.namespace==="string")&&(n==="apply"||n==="wait"||n==="delete")&&(i==="started"||i==="succeeded"||i==="failed"||i==="aborted")}function H$(e,t){return{source:{uri:`cas://${t.digest}`,digest:t.digest},config:{compose:e}}}function J$(e,t){return ry(e.spec?.source,t.source)&&ry(e.spec?.config,t.config)}function ny(e){if(e instanceof we)return e.status===409;if(e instanceof DOMException&&e.name==="AbortError")return!1;if(e instanceof Error&&e.name==="AbortError")return!1;return e instanceof TypeError||e instanceof Error&&e.name==="TimeoutError"}async function Y$(e,t,r,o=k){let n=`/workspaces/${encodeURIComponent(e)}`,i=H$(t,r),s=(u)=>o(n,{method:"PUT",headers:{"if-match":`"${u.metadata.resourceVersion}"`},json:i}),a=async(u)=>{try{let l=await o(n);if(J$(l,i))return l;return await s(l)}catch{throw u}},c;try{c=await o(n)}catch(u){if(!(u instanceof we)||u.status!==404)throw u;try{return await o("/workspaces",{method:"POST",json:{id:e,...i}})}catch(l){if(!ny(l))throw l;return a(l)}}try{return await s(c)}catch(u){if(!ny(u))throw u;return a(u)}}function iy(e){return Object.fromEntries(Object.entries(e).filter(([t,r])=>t!=="operation"&&t!=="operationId"&&r!==null&&typeof r==="object"&&!Array.isArray(r)))}function bn(e,t){let r=t instanceof Error?t.message:String(t);if(!/namespace .* (?:external|different-workspace)/i.test(r))return t instanceof Error?t:Error(r);return Error(`${r}. Safe adoption requires ${cy} ${uy(e)} with namespace UID and ownership preconditions.`,{cause:t})}async function At(e,t,r,o){try{return await t(r,o)}catch(n){throw bn(e,n)}}function X$(e){if(!e||typeof e!=="object")return;let t=e.operationId;return typeof t==="string"&&t?t:void 0}function eA(e){if(!e||typeof e!=="object")return;let t=e.operation?.status;return t&&typeof t==="object"?t:void 0}function sy(e,t){let r=t.error,o=t.state==="cancelled",n=typeof r?.message==="string"?r.message:o?"The operation was cancelled":"The operation failed",i=typeof r?.code==="string"?r.code:o?"OPERATION_CANCELLED":"OPERATION_FAILED";return new we(n,o?409:500,{title:o?"Operation cancelled":"Operation failed",status:o?409:500,code:i,operationId:e})}function tA(e){if(e instanceof we)return W$.has(e.code);if(e instanceof DOMException&&e.name==="AbortError")return!1;if(e instanceof Error&&e.name==="AbortError")return!1;return e instanceof TypeError||e instanceof Error&&e.name==="TimeoutError"}function rA(e){return e.state==="failed"&&e.error?.code==="OPERATION_INTERRUPTED"}function oA(e,t){return e.cursorGap===!0||Number.isSafeInteger(e.retainedFirstSequence)&&e.retainedFirstSequence>t+1}function nA(e,t){return t+Math.max(e,0)+Q$}function ly(e){return e.reason??new DOMException("The operation was aborted","AbortError")}function $t(e){if(e?.aborted)throw ly(e)}function iA(e,t){return $t(t),new Promise((r,o)=>{let n,i=()=>{if(n!==void 0)clearTimeout(n);t?.removeEventListener("abort",a)},s=()=>{i(),r()},a=()=>{i(),o(ly(t))};if(n=setTimeout(s,e),t?.addEventListener("abort",a,{once:!0}),t?.aborted)a()})}async function tc(e,t,r,o,n,i){let s=i.now??Date.now,a=nA(n,s()),c=new Headers(o.headers);c.set("idempotency-key",ec()),c.set("prefer","respond-async");let u={...o,headers:c,signal:i.signal??o.signal},l,f=Z$,p=!1,d=0;for(;;){if($t(i.signal),p&&s()>=a)throw Error("Timed out while reconnecting to resume the operation");try{let y;if(l)y=(await At(e,t,`/operations/${encodeURIComponent(l)}`,{signal:i.signal})).status;else{p=!1;let b=await At(e,t,r,u);l=X$(b),y=eA(b)}if(l)try{let b=await At(e,t,`/operations/${encodeURIComponent(l)}/events?after=${d}`,{signal:i.signal});if(oA(b,d))throw new nc;for(let S of b.items??[]){if(!Number.isSafeInteger(S.sequence)||S.sequence<=d)continue;if(d=S.sequence,!K$(S))continue;i.onEvent?.(S)}}catch(b){if(b instanceof nc)throw b;$t(i.signal)}if(!l||!y||y.state==="succeeded")return;if(rA(y)){if(s()>=a)throw sy(l,y);l=void 0,d=0,p=!0,c.set("idempotency-key",ec()),u={...o,headers:c,signal:i.signal??o.signal}}else if(y.state==="failed"||y.state==="cancelled")throw sy(l,y)}catch(y){if($t(i.signal),y instanceof we&&y.code==="OPERATION_INTERRUPTED"){if(s()>=a)throw bn(e,y);l=void 0,d=0,p=!0,c.set("idempotency-key",ec()),u={...o,headers:c,signal:i.signal??o.signal}}else{if(!tA(y))throw bn(e,y);if(s()>=a)throw bn(e,y)}}let m=a-s();if(m<=0)throw Error("Timed out while reconnecting to resume the operation");let h=Math.min(f,m);if(i.sleep)$t(i.signal),await i.sleep(h),$t(i.signal);else await iA(h,i.signal);f=Math.min(f*2,q$)}}async function sA(e,t,r=k){let o=`/workspaces/${encodeURIComponent(e)}`;return At(e,r,`${o}/resources/plan`,{method:"POST",json:{resources:t}})}function rc(e){let t=e.name??e.metadata?.name;if(!e.apiVersion||!e.kind||!t)return;return{apiVersion:e.apiVersion,kind:e.kind,name:t,namespace:e.namespace??e.metadata?.namespace}}function ay(e){return`${e.apiVersion}\x00${e.kind}\x00${e.namespace??""}\x00${e.name}`}function aA(e,t){return`${e==="apply"?"Apply":e==="wait"?"Wait for":"Delete"} ${t.kind}/${t.name}`}function oc(e,t,r,o,n={}){if(r.length===0)return o(()=>{},e.signal);let i=new Map,s=new Set,a=0;return e.newListr(r.map((c)=>({title:aA(t,c),task:async(u,l)=>{if(i.set(ay(c),l),n.onTaskStarted?.(c,l),a+=1,a!==r.length)return new Promise((f)=>{let p=()=>{e.signal.removeEventListener("abort",p),s.delete(p),f()};if(s.add(p),e.signal.aborted)p();else e.signal.addEventListener("abort",p,{once:!0})});try{await o((f)=>{let p=f.data.resource,d=i.get(ay(p));if(!d)return;d.output=f.data.state,e.output=G$(f)},e.signal)}finally{for(let f of[...s])f()}}})),{concurrent:!0})}async function _r(e,t=k,r={}){let{project:o,compose:n,cwd:i,config:s,hookContext:a}=I(),c=r.trust??await Am(await gt(o,i)),u=t;t=async(p,d={},m)=>{let h=new Headers(d.headers);for(let[y,b]of Object.entries($m(c)))h.set(y,b);return u(p,{...d,headers:h},m)};let l=`/workspaces/${encodeURIComponent(o)}`;return await new de([{title:"Read compose",task:async(p,d)=>{if(p.compose=await n(),e)await s.preBuild?.(p.compose,await a());d.output=`${Object.keys(p.compose.services??{}).length} services`}},{title:"Snapshot workspace",task:async(p,d)=>{let m;try{m=await Ma(i)}catch(h){m=i}p.workspaceRoot=m,p.snapshot=await nn(m),d.output=`${p.snapshot.manifest.files.length} files`}},{title:"Build images",rendererOptions:{outputBar:10,persistentOutput:!0},enabled:async()=>e&&Object.values((await n()).services??{}).some((p)=>p.build),task:async(p,d)=>{let m=await Sg(o,p.compose,i,{progress:(h)=>{d.output=h},stream:d.stdout()},{...s,request:t,snapshot:p.snapshot,workspaceRoot:p.workspaceRoot,signal:d.signal});p.buildImages=m.images,await s.postBuild?.(m,await a()),d.output=`Built ${m.built.length} image${m.built.length===1?"":"s"}`}},{title:"Resolve images",enabled:async()=>!e&&Object.values((await n()).services??{}).some((p)=>p.build),task:async(p,d)=>{p.buildImages=await sn(o,p.compose,{...s,request:t}),d.output=`${Object.keys(p.buildImages).length} images`}},{title:"Update workspace",task:async(p,d)=>{let m=await Y$(o,p.compose,p.snapshot,t),h=await t(uy(o),{method:cy,json:{workspaceUid:m.metadata.uid}});d.output=h.resourcesAdopted?`Adopted ${h.resourcesAdopted} existing resources`:"Workspace ready"}},{title:"Reconcile backing services",task:async(p,d)=>{let m={},h={};await d.newListr([{title:"Reconcile databases",enabled:()=>nt(p.compose).length>0,task:async(y,b)=>{let S=await At(o,t,`${l}/databases`,{method:"POST",json:{compose:p.compose}});m=iy(S),b.output=`${Object.keys(m).length} services`}},{title:"Reconcile S3 storage",enabled:()=>it(p.compose).length>0,task:async(y,b)=>{let S=await At(o,t,`${l}/storage`,{method:"POST",json:{compose:p.compose}});h=iy(S),b.output=`${Object.keys(h).length} services`}}],{concurrent:!0}).run(),p.serviceEnv=oy(oy(p.serviceEnv,m),h)}},{title:"Render manifests",task:async(p,d)=>{p.resources=await yn(o,p.compose,i,p.serviceEnv,p.buildImages),await s.postRender?.(p.resources,await a()),d.output=`${p.resources.length} resources`}},{title:"Reconcile resources",task:async(p,d)=>{p.plan=await sA(o,p.resources,t);let m=p.plan,h=m.desired.map(rc).filter((x)=>Boolean(x)),y=m.desired.filter((x)=>x.kind==="Deployment").map(rc).filter((x)=>Boolean(x)),b=m.stale.map(rc).filter((x)=>Boolean(x)),S=`${l}/resources`;return d.newListr([{title:"Apply resources",task:async(x,A)=>oc(A,"apply",h,(R,Z)=>tc(o,t,`${S}/apply`,{method:"POST",json:{resources:m.desired}},s.rolloutTimeoutMs,{onEvent:R,signal:Z}))},{title:"Run post-apply hook",skip:!s.postApply,task:async()=>s.postApply?.(m.desired,await a())},{title:"Wait for deployments",skip:y.length===0,task:async(x,A)=>oc(A,"wait",y,(R,Z)=>tc(o,t,`${S}/wait`,{method:"POST",json:{deployments:y.map((_e)=>_e.name),timeoutMs:s.rolloutTimeoutMs}},s.rolloutTimeoutMs,{onEvent:R,signal:Z}))},{title:"Delete stale resources",skip:b.length===0,task:async(x,A)=>oc(A,"delete",b,(R,Z)=>tc(o,t,`${S}/delete`,{method:"POST",json:{resources:m.stale}},s.rolloutTimeoutMs,{onEvent:R,signal:Z}))}])}}],{rendererOptions:{collapseErrors:!1}}).run()}var cy="POST",Z$=250,q$=5000,Q$=60000,W$,nc,cA;var _n=_(()=>{M();xt();q();ja();Xa();ee();yr();br();Fa();Bo();W$=new Set(["HTTP_502","HTTP_503","HTTP_504"]);nc=class nc extends Error{constructor(){super("Operation progress history was truncated; refusing to report an incomplete resource stream")}};cA=E({meta:{name:"up",description:"Create and start deployments"},args:{build:{type:"boolean",default:!0,alias:"b",description:"Build images before starting deployments",negativeDescription:"Don't build an image, even if it's policy"}},async run({args:e}){await _r(e.build)}})});function uA(e){let t=e?.trim();if(!t)throw Error("KUBER_API_KEY or --api-key is required for kuber ci");return t}function lA(e){return(t,r={},o={})=>{let n=new Headers(r.headers);return n.set("authorization",`Bearer ${e}`),k(t,{...r,headers:n},{...o,authenticated:!1})}}async function pA(e,t,r,o=lA(r)){let{project:n,cwd:i}=I(),s=await gt(n,i);if(t)await o(`/workspaces/${encodeURIComponent(n)}/trust`,{method:"POST",json:{fingerprint:s.fingerprint}});await _r(e,o,{trust:t?s:void 0})}var dA;var py=_(()=>{M();q();ee();Bo();_n();dA=E({meta:{name:"ci",description:"Deploy using an API key without a session"},args:{apiKey:{type:"string",description:"API key (defaults to KUBER_API_KEY)"},trust:{type:"boolean",description:"Grant current directory trust before deploying"},build:{type:"boolean",default:!0,negativeDescription:"Resolve existing images without building"}},async run({args:e}){await pA(e.build,Boolean(e.trust),uA(e.apiKey??process.env.KUBER_API_KEY))}})});function fA(e,t,r=k){return r(`/workspaces/${encodeURIComponent(e)}/databases/credentials`,{method:"POST",json:{claim:t}})}var mA,hA,gA;var dy=_(()=>{M();q();ee();yr();tt();mA=E({meta:{name:"ls",description:"List managed postgres claims"},async run(){let e=nt(await I().compose());if(e.length===0){console.log("No managed postgres volumes declared");return}console.log(le(e.map((t)=>({service:t.service,username:t.username,database:t.database,secret:t.secretName}))))}}),hA=E({meta:{name:"creds",description:"Print postgres credentials for a service"},async run({args:e}){let t=e._[0];if(!t)throw Error("Service name is required");let r=I(),o=nt(await r.compose()).find((s)=>s.service===t);if(!o)throw Error(`Service ${t} does not declare a managed postgres volume.`);let n=await fA(r.project,o),i=kg(o,n);console.log(le([{service:o.service,username:n.username,database:o.database,host:qa,port:Qa,secret:o.secretName}])),console.log(`DATABASE_URL=${i}`)}}),gA=E({meta:{name:"db",description:"Inspect managed postgres databases"},subCommands:{creds:hA,ls:mA}})});function yA(e,t=!1,r=k){return r(`/workspaces/${encodeURIComponent(e)}/down`,{method:"POST",json:{full:t}})}var bA;var fy=_(()=>{M();xt();q();ee();bA=E({meta:{name:"down",description:"Delete managed resources except ingress and PVCs"},args:{full:{type:"boolean",alias:"f",description:"Also delete ingress, PVCs, and the namespace"}},async run({args:e}){let{project:t}=I();await new de([{title:"Delete resources",task:async(r,o)=>{let n=await yA(t,e.full);o.output=`${n.delete.length} resources queued`}}]).run()}})});async function my(e,t,r=process.cwd(),o={}){let n=[...nt(t).length?["Postgres"]:[],...it(t).length?["S3"]:[]];if(n.length>0)throw Error(`Cannot export without generated ${n.join(" and ")} credentials. Export is side-effect-free; run kuber up or remove managed provider claims.`);let i=await sn(e,t,o);return yn(e,t,r,{},i)}var hy=_(()=>{Xa();yr();br();ja()});import{resolve as _A}from"path";var{YAML:wA}=globalThis.Bun;function vA(e){return`${Ag(e).map((t)=>wA.stringify(t,null,2).trimEnd()).join(`
100
100
  ---
101
101
  `)}
102
102
  `}var xA;var gy=_(()=>{M();an();ee();hy();xA=E({meta:{name:"export",description:"Write rendered manifests to a YAML file"},args:{output:{type:"string",alias:"o",description:"Output YAML file path"}},async run({args:e}){let{project:t,compose:r,cwd:o,config:n,hookContext:i}=I(),s=await my(t,await r(),o,n);await n.postRender?.(s,await i());let a=_A(o,e.output||`${t}.yaml`);await Bun.write(a,vA(s)),console.log(a)}})});function EA(e,t){let r=new URL(`${e}${t}`);return r.protocol=r.protocol==="https:"?"wss:":"ws:",r.toString()}function $A(e){if(typeof e!=="string")throw Error("Exec frame must be JSON text");let t=JSON.parse(e);if(!t||typeof t!=="object"||!("type"in t))throw Error("Invalid exec frame");let r=t;if(r.type==="stdout"||r.type==="stderr"){if(r.encoding!=="base64"||typeof r.data!=="string")throw Error("Invalid exec output frame");return{type:r.type,data:Uint8Array.from(Buffer.from(r.data,"base64"))}}if(r.type==="exit"&&Number.isSafeInteger(r.exitCode))return r;if(r.type==="error"&&typeof r.message==="string")return r;throw Error("Invalid exec frame")}async function yy(e,t,r,o={}){if(r.aborted)throw r.reason??new DOMException("Aborted","AbortError");let n=o.session??await ht();if(!n)throw Error("Not logged in. Run kuber login first.");let i=`/workspaces/${encodeURIComponent(e)}/exec`,s=(o.socketFactory??SA)(EA(o.baseUrl??So,i),{authorization:`Bearer ${n.token}`});s.binaryType="arraybuffer",await new Promise((x,A)=>{let R=()=>{qe(),s.send(JSON.stringify({type:"start",version:1,...t})),x()},Z=(An)=>{qe(),A(An.error??Error("Exec WebSocket connection failed"))},_e=()=>{qe(),A(Error("Exec WebSocket closed before opening"))},Ze=()=>{qe(),s.close(1000,"aborted"),A(r.reason??new DOMException("Aborted","AbortError"))},qe=()=>{s.removeEventListener("open",R),s.removeEventListener("error",Z),s.removeEventListener("close",_e),r.removeEventListener("abort",Ze)};s.addEventListener("open",R),s.addEventListener("error",Z),s.addEventListener("close",_e),r.addEventListener("abort",Ze,{once:!0})});let a=[],c=[],u=!1,l,f=!1,p=[],d=(x)=>{if(u)return;u=!0,l=x,s.removeEventListener("message",m),s.removeEventListener("error",h),s.removeEventListener("close",y),r.removeEventListener("abort",b);for(let A of c.splice(0))if(x)A.reject(x);else A.resolve({done:!0,value:void 0})},m=(x)=>{try{if(!f){f=!0;for(let Z of p.splice(0))s.send(JSON.stringify(Z))}let A=$A(x.data),R=c.shift();if(R)R.resolve({done:!1,value:A});else a.push(A)}catch(A){s.close(1002,"invalid frame"),d(A)}},h=(x)=>d(x.error??Error("Exec WebSocket failed")),y=()=>d(),b=()=>{s.close(1000,"aborted"),d()};s.addEventListener("message",m),s.addEventListener("error",h),s.addEventListener("close",y),r.addEventListener("abort",b,{once:!0});let S=(x)=>{if(u)throw l??Error("Exec session is closed");if(!f){p.push(x);return}s.send(JSON.stringify(x))};return{sendStdin(x,A){S({type:"stdin",data:Buffer.from(x).toString("base64"),encoding:"base64",...A?{eof:!0}:{}})},resize(x,A){S({type:"resize",columns:x,rows:A})},close(){if(!u&&s.readyState===1)S({type:"close"});s.close(1000,"client closed"),d()},[Symbol.asyncIterator](){return{next(){let x=a.shift();if(x)return Promise.resolve({done:!1,value:x});if(l)return Promise.reject(l);if(u)return Promise.resolve({done:!0,value:void 0});return new Promise((A,R)=>c.push({resolve:A,reject:R}))}}}}}var SA=(e,t)=>new WebSocket(e,{headers:t});var by=_(()=>{Ve();Ao()});function _y(){return{columns:process.stdout.columns,rows:process.stdout.rows}}async function AA(e,t,r,o,n=yy,i){if(!t)throw Error("Deployment name is required");if(r.length===0)throw Error("Command is required");let s=Boolean(process.stdin.isTTY&&process.stdout.isTTY&&process.stdin.isRaw),a=await n(e,{deployment:t,command:r,tty:s,...s?_y():{}},o,i),c=(f)=>a.sendStdin(typeof f==="string"?new TextEncoder().encode(f):f),u=()=>a.sendStdin(new Uint8Array,!0),l=()=>{let{columns:f,rows:p}=_y();if(f&&p)a.resize(f,p)};if(process.stdin.on("data",c),process.stdin.once("end",u),s)process.stdout.on("resize",l);try{for await(let f of a)if(f.type==="stdout")process.stdout.write(f.data);else if(f.type==="stderr")process.stderr.write(f.data);else if(f.type==="error")throw Error(f.message);else return f.exitCode;if(o.aborted)return 0;throw Error("Exec connection closed without an exit status")}finally{process.stdin.off("data",c),process.stdin.off("end",u),process.stdout.off("resize",l),a.close()}}var kA;var wy=_(()=>{M();ee();by();kA=E({meta:{name:"exec",description:"Execute a command inside a deployment pod"},async run({args:e}){let[t,...r]=e._;if(!t)throw Error("Deployment name is required");if(r.length===0)throw Error("Command is required");let o=new AbortController,n=()=>o.abort();process.on("SIGINT",n),process.on("SIGTERM",n);let i=Boolean(process.stdin.isTTY);if(i)process.stdin.setRawMode?.(!0),process.stdin.resume();try{let s=await AA(I().project,t,r,o.signal);if(s!==0)process.exitCode=s}catch(s){if(!o.signal.aborted)throw s}finally{if(process.off("SIGINT",n),process.off("SIGTERM",n),i)process.stdin.setRawMode?.(!1),process.stdin.pause()}}})});import{styleText as kt}from"util";var{inspect:vy}=globalThis.Bun;function sc(e){let t=Date.now(),r=xy[ic];ic=(ic+1)%xy.length;function o(i,s){return(a,...c)=>{if(!(i===console?process.stdout.isTTY:process.stderr.isTTY)){let f=`${(e??`${Date.now()-t}ms`).padStart(7)} \u258C${s?"\u258C":" "}`,p=a.reduce((d,m,h)=>d+m+(typeof c[h]==="string"?c[h]:typeof c[h]<"u"?vy(c[h],{colors:!1}):""),"");p=p.split(`
@@ -105,7 +105,7 @@ ${" ".repeat(7)} \u258C${s?"\u258C":" "}`),i.write(`${f}${p}
105
105
  `);return}let l=kt(r,`${(s?kt:(f,p)=>p)("bold",(e??`${Date.now()-t}ms`).padStart(7))} \u258C${s?kt(s,"\u258C"):" "}${a.reduce((f,p,d)=>f+kt(r,p)+(typeof c[d]==="string"?c[d]:typeof c[d]<"u"?vy(c[d],{colors:!0}):""),"").split(`
106
106
  `).map((f,p)=>kt(r,p?`${" ".repeat(7)} \u258C${s?kt(s,"\u258C"):" "}${f}`:f)).join(`
107
107
  `)}
108
- `);i.write(l)}}let n=o(console);return n.error=o(process.stderr,"redBright"),n.warn=o(console,"yellow"),n.debug=o(console,"blue"),n}var xy,ic=0,E1;var Ey=_(()=>{xy=["red","green","yellow","blue","magenta","cyan","white","redBright","greenBright","yellowBright","blueBright","magentaBright","cyanBright","whiteBright"];E1=sc("APP")});function Sy(){let e=new Map;return(t,r,o)=>{let n=e.get(t);if(!n)n=sc(t),e.set(t,n);if(o)n.warn`${r}`;else n`${r}`}}function PA(e){let t=Number(e);if(!/^\d+$/.test(e)||!Number.isSafeInteger(t))throw Error("-n must be a non-negative integer");return t}async function CA(e,t,r,o,n=Qs,i=Sy(),s){if(s!==void 0&&(!Number.isSafeInteger(s)||s<0))throw Error("-n must be a non-negative integer");let a=new URLSearchParams;if(t)a.set("service",t);if(r)a.set("follow","true");if(s!==void 0)a.set("tailLines",String(s));let c=a.size?`?${a}`:"";for await(let u of n(`/workspaces/${encodeURIComponent(e)}/logs${c}`,{signal:o},{timeoutMs:r?0:void 0})){if(u.type==="heartbeat")continue;if(u.type==="error"){i(t??u.pod??e,u.message,!0);continue}i(u.targetName||t||e,u.message,!1)}}var RA;var $y=_(()=>{M();q();ee();Ey();RA=E({meta:{name:"logs",description:"Show deployment logs"},args:{follow:{type:"boolean",alias:"f",description:"Follow log output"},tail:{type:"string",alias:"n",description:"Show the last N lines per container"}},async run({args:e}){let t=e._[0],r=new AbortController,o=()=>r.abort();process.on("SIGINT",o),process.on("SIGTERM",o);try{await CA(I().project,t,Boolean(e.follow),r.signal,Qs,Sy(),e.tail===void 0?void 0:PA(e.tail))}catch(n){if(!r.signal.aborted)throw n}finally{process.off("SIGINT",o),process.off("SIGTERM",o)}}})});import{mkdir as TA,readFile as OA,rm as IA,writeFile as BA}from"fs/promises";import{join as Ay}from"path";async function DA(e){try{let t=JSON.parse(await OA(wn,"utf8"));if(t.host===e&&typeof t.expiresAt==="number"&&t.expiresAt>Date.now())return await IA(wn,{force:!0}),!0}catch{}return await TA(Ay(wn,".."),{recursive:!0,mode:448}),await BA(wn,JSON.stringify({host:e,expiresAt:Date.now()+zA}),{mode:384}),!1}async function NA(e,t=k,r=DA){let o=await t(`/maintenance/${encodeURIComponent(e)}`);if(!await r(o.host))return console.log(`${o.host} maintenance is currently ${o.enabled?"\x1B[31mON\x1B[0m":"\x1B[32mOFF\x1B[0m"}, run this command again to toggle.`),o;let n=await t(`/maintenance/${encodeURIComponent(o.host)}`,{method:"POST",json:{enabled:!o.enabled}});return console.log(`${n.host} maintenance is now ${n.enabled?"\x1B[31mON\x1B[0m":"\x1B[32mOFF\x1B[0m"}`),n}var wn,zA=60000,LA;var ky=_(()=>{M();q();wn=Ay(process.env.XDG_RUNTIME_DIR??"/tmp","kuber","maintenance-confirmation");LA=E({meta:{name:"maintenance",description:"Toggle a global hostname maintenance override"},args:{host:{type:"positional",required:!0,description:"DNS hostname"}},async run({args:e}){await NA(e.host)}})});import{createInterface as VA}from"readline/promises";import{stdin as Ie,stdout as ac}from"process";async function UA(){let e=VA({input:Ie,output:ac});try{return(await e.question("Username: ")).trim()}finally{e.close()}}async function FA(){if(!Ie.isTTY||!Ie.setRawMode)throw Error("Password input requires an interactive terminal");return ac.write("Password: "),Ie.setRawMode(!0),Ie.resume(),new Promise((e,t)=>{let r="",o=()=>{Ie.off("data",n),Ie.setRawMode(!1),Ie.pause(),ac.write(`
108
+ `);i.write(l)}}let n=o(console);return n.error=o(process.stderr,"redBright"),n.warn=o(console,"yellow"),n.debug=o(console,"blue"),n}var xy,ic=0,E1;var Ey=_(()=>{xy=["red","green","yellow","blue","magenta","cyan","white","redBright","greenBright","yellowBright","blueBright","magentaBright","cyanBright","whiteBright"];E1=sc("APP")});function Sy(){let e=new Map;return(t,r,o)=>{let n=e.get(t);if(!n)n=sc(t),e.set(t,n);if(o)n.warn`${r}`;else n`${r}`}}function PA(e){let t=Number(e);if(!/^\d+$/.test(e)||!Number.isSafeInteger(t))throw Error("-n must be a non-negative integer");return t}async function CA(e,t,r,o,n=Qs,i=Sy(),s){if(s!==void 0&&(!Number.isSafeInteger(s)||s<0))throw Error("-n must be a non-negative integer");let a=new URLSearchParams;if(t)a.set("service",t);if(r)a.set("follow","true");if(s!==void 0)a.set("tailLines",String(s));let c=a.size?`?${a}`:"";for await(let u of n(`/workspaces/${encodeURIComponent(e)}/logs${c}`,{signal:o},{timeoutMs:r?0:void 0})){if(u.type==="heartbeat")continue;if(u.type==="error"){i(t??u.pod??e,u.message,!0);continue}i(u.pod||u.targetName||t||e,u.message,!1)}}var RA;var $y=_(()=>{M();q();ee();Ey();RA=E({meta:{name:"logs",description:"Show deployment logs"},args:{follow:{type:"boolean",alias:"f",description:"Follow log output"},tail:{type:"string",alias:"n",description:"Show the last N lines per container"}},async run({args:e}){let t=e._[0],r=new AbortController,o=()=>r.abort();process.on("SIGINT",o),process.on("SIGTERM",o);try{await CA(I().project,t,Boolean(e.follow),r.signal,Qs,Sy(),e.tail===void 0?void 0:PA(e.tail))}catch(n){if(!r.signal.aborted)throw n}finally{process.off("SIGINT",o),process.off("SIGTERM",o)}}})});import{mkdir as TA,readFile as OA,rm as IA,writeFile as BA}from"fs/promises";import{join as Ay}from"path";async function DA(e){try{let t=JSON.parse(await OA(wn,"utf8"));if(t.host===e&&typeof t.expiresAt==="number"&&t.expiresAt>Date.now())return await IA(wn,{force:!0}),!0}catch{}return await TA(Ay(wn,".."),{recursive:!0,mode:448}),await BA(wn,JSON.stringify({host:e,expiresAt:Date.now()+zA}),{mode:384}),!1}async function NA(e,t=k,r=DA){let o=await t(`/maintenance/${encodeURIComponent(e)}`);if(!await r(o.host))return console.log(`${o.host} maintenance is currently ${o.enabled?"\x1B[31mON\x1B[0m":"\x1B[32mOFF\x1B[0m"}, run this command again to toggle.`),o;let n=await t(`/maintenance/${encodeURIComponent(o.host)}`,{method:"POST",json:{enabled:!o.enabled}});return console.log(`${n.host} maintenance is now ${n.enabled?"\x1B[31mON\x1B[0m":"\x1B[32mOFF\x1B[0m"}`),n}var wn,zA=60000,LA;var ky=_(()=>{M();q();wn=Ay(process.env.XDG_RUNTIME_DIR??"/tmp","kuber","maintenance-confirmation");LA=E({meta:{name:"maintenance",description:"Toggle a global hostname maintenance override"},args:{host:{type:"positional",required:!0,description:"DNS hostname"}},async run({args:e}){await NA(e.host)}})});import{createInterface as VA}from"readline/promises";import{stdin as Ie,stdout as ac}from"process";async function UA(){let e=VA({input:Ie,output:ac});try{return(await e.question("Username: ")).trim()}finally{e.close()}}async function FA(){if(!Ie.isTTY||!Ie.setRawMode)throw Error("Password input requires an interactive terminal");return ac.write("Password: "),Ie.setRawMode(!0),Ie.resume(),new Promise((e,t)=>{let r="",o=()=>{Ie.off("data",n),Ie.setRawMode(!1),Ie.pause(),ac.write(`
109
109
  `)},n=(i)=>{let s=i.toString("utf8");if(s==="\x03"){o(),t(Error("Login cancelled"));return}if(s==="\r"||s===`
110
110
  `){o(),e(r);return}if(s==="\x7F"||s==="\b"){r=r.slice(0,-1);return}r+=s};Ie.on("data",n)})}async function MA(e,t,r){let o=await k("/login",{method:"POST",body:JSON.stringify({username:e,password:t,persistent:r})},{authenticated:!1});return await Qf(o,r),o}var jA,ZA,qA;var vn=_(()=>{M();q();Ao();jA=E({meta:{name:"login",description:"Log in to kuber.astrxl.dev"},args:{persist:{type:"boolean",description:"Keep the login across reboots"}},async run({args:e}){let t=String(e._[0]??"").trim()||await UA();if(!t)throw Error("Username is required");let r=await MA(t,await FA(),Boolean(e.persist));console.log(`Logged in as ${r.user.username}`)}}),ZA=E({meta:{name:"logout",description:"Log out of kuber.astrxl.dev"},async run(){let e=await ht();if(e)try{await k("/logout",{method:"POST"},{session:e})}finally{await qs()}else await qs();console.log("Logged out")}}),qA=E({meta:{name:"whoami",description:"Show the current kuber user"},async run(){let e=await k("/me");console.log(`${e.username} (${e.roles.join(", ")})`)}})});function QA(e){return e?`/operations?${new URLSearchParams({workspaceId:e})}`:"/operations"}function Py(e){if(e.length===0)return"No operations";return le(e.map((t)=>({id:t.metadata.name,workspace:t.spec.workspaceId,action:t.spec.action,state:t.status.state,created:t.metadata.creationTimestamp,finished:t.status.finishedAt})))}async function WA(e,t=k){let r=await t(QA(e));return Py(r.items)}async function GA(e,t=k){let r=await t(`/operations/${encodeURIComponent(e)}`),o=[Py([r])];if(r.status.error)o.push(`Error: ${r.status.error.code}: ${r.status.error.message}`);if(r.status.result!==void 0)o.push(`Result: ${JSON.stringify(r.status.result)}`);return o.join(`
111
111
  `)}var KA,HA,JA;var Cy=_(()=>{M();q();tt();KA=E({meta:{name:"ls",description:"List operations"},args:{workspace:{type:"string",alias:"w",description:"Filter by workspace"}},async run({args:e}){console.log(await WA(e.workspace??e._[0]))}}),HA=E({meta:{name:"get",description:"Get an operation"},async run({args:e}){let t=String(e._[0]??"").trim();if(!t)throw Error("Operation ID is required");console.log(await GA(t))}}),JA=E({meta:{name:"operations",description:"Inspect server operations"},subCommands:{get:HA,ls:KA}})});function YA(e){return`${e.level==="good"?Ae.bgGreen:e.level==="bad"?Ae.bgRed:Ae.bgYellow}${Ae.fgBlack} ${e.label} ${Ae.reset}`}function XA(e){let t=e.split("/",1)[0],r=t==="Deployment"?Ae.fgBlue:t==="Service"?Ae.fgPurple:t==="Ingress"?Ae.fgYellow:t==="Pod"?Ae.fgGreen:void 0;return r?`${r}${e}${Ae.reset}`:e}function Ry(e){let t=[],r=(o,n,i)=>{t.push(`${n}${i?"\u2514\u2500 ":"\u251C\u2500 "}${XA(o.id)} ${YA(o.status)}`);let s=n+(i?" ":"\u2502 ");o.children.forEach((a,c)=>{r(a,s,c===o.children.length-1)})};for(let o of e)t.push(o.namespace),o.roots.forEach((n,i)=>{r(n,"",i===o.roots.length-1)}),t.push("");return t.join(`
@@ -915,4 +915,4 @@ Register-ArgumentCompleter -CommandName '${e}' -ScriptBlock $__${r}CompleterBloc
915
915
  `}var fc=_(()=>{dc()});function Gy(e="cli"){if(process.argv.indexOf("--")===-1){let t=`Error: You need to use -- to separate completion arguments.
916
916
  Example: ${e} complete -- <args>`;console.error(t),process.exit(1)}}var Ky=()=>{};async function Fk(e){let t=[],r=[];for(let[o,n]of Object.entries(e))if(n.type==="positional"){let i=n;r.push({name:o,description:i.description,isOptional:!i.required,isVariadic:o.startsWith("[...")||o.startsWith("<...")})}else{let i={name:`--${o}`,description:n.description||"",isRequired:n.required};"alias"in n&&n.alias&&(Array.isArray(n.alias)?n.alias:[n.alias]).forEach((s)=>{t.push({...i,name:`-${s}`})}),t.push(i)}return{options:t,args:r}}async function Hy(e,t=""){let r=await Promise.resolve(e.meta),o=await Promise.resolve(e.subCommands);if(!r||!r.name)throw Error("Command meta or name is missing");let n={name:t?`${t} ${r.name}`:r.name,description:r.description||""};if(e.args){let{options:i,args:s}=await Fk(await Promise.resolve(e.args));i.length>0&&(n.options=i),s.length>0&&(n.args=s)}return o&&(n.subcommands=await Promise.all(Object.entries(o).map(async([i,s])=>Hy(await Promise.resolve(s),n.name)))),n}async function Mk(e){let t=await Hy(e);return JSON.stringify(t,null,2)}function Jy(e){return e.args&&Object.values(e.args).some((t)=>t.type==="positional")}async function Yy(e,t,r){for(let[o,n]of Object.entries(e)){let i=await wr(n),s=await wr(i.meta),a=await wr(i.subCommands),c=r?.[o];if(!s||typeof s?.description!="string")throw Error("Invalid meta or missing description.");let u=Jy(i),l=t?`${t} ${o}`:o,f=Pe.command(l,s.description);if(u&&i.args)for(let[p,d]of Object.entries(i.args)){let m=d;if(m.type==="positional"){let h=m.required===!1,y=c?.args?.[p];y?f.argument(p,y,h):f.argument(p,void 0,h)}}if(a&&await Yy(a,l,c?.subCommands),i.args)for(let[p,d]of Object.entries(i.args)){let m=d,h=typeof m=="object"&&"alias"in m?Array.isArray(m.alias)?m.alias[0]:m.alias:void 0,y=c?.options?.[p];y?h?f.option(p,m.description??"",y,h):f.option(p,m.description??"",y):h?f.option(p,m.description??"",h):f.option(p,m.description??"")}}}async function Xy(e,t){let r=await wr(e.meta);if(!r)throw Error("Invalid meta.");let o=r.name;if(!o)throw Error("Invalid meta or missing name.");let n=await wr(e.subCommands);if(Jy(e)&&e.args)for(let[s,a]of Object.entries(e.args)){let c=a;if(c.type==="positional"){let u=c.required===!1,l=t?.args?.[s];l?Pe.argument(s,l,u):Pe.argument(s,void 0,u)}}if(n&&await Yy(n,void 0,t?.subCommands),e.args)for(let[s,a]of Object.entries(e.args)){let c=a,u=typeof c=="object"&&"alias"in c?Array.isArray(c.alias)?c.alias[0]:c.alias:void 0,l=t?.options?.[s];l?u?Pe.option(s,c.description??"",l,u):Pe.option(s,c.description??"",l):u?Pe.option(s,c.description??"",u):Pe.option(s,c.description??"")}let i=E({meta:{name:"complete",description:"Generate shell completion scripts"},args:{shell:{type:"positional",description:"Shell type (zsh, bash, fish, powershell, fig)",required:!1}},async run(s){let a=s.rawArgs[0];a==="--"&&(a=void 0);let c=o;switch(a){case"zsh":{let u=xn(o,c);console.log(u);break}case"bash":{let u=En(o,c);console.log(u);break}case"fish":{let u=Sn(o,c);console.log(u);break}case"powershell":{let u=$n(o,c);console.log(u);break}case"fig":{let u=await Mk(e);console.log(u);break}default:{Gy(o);let u=s.rawArgs.slice(s.rawArgs.indexOf("--")+1);return Pe.parse(u)}}}});return n?n.complete=i:e.subCommands={complete:i},Pe}async function wr(e){return e instanceof Function?await e():await e}var eb=_(()=>{fc();dc();Ky();M()});M();M();Us();var Vf=Symbol("wrappedCommand");function Fs(e){if(e instanceof $d)return Bc(e);if(e instanceof Error){let t=e.stack?.split(`
917
917
  `).slice(0,3).join(`
918
- `);return t&&t.trim().length>0?t:e.message}try{return JSON.stringify(e,null,2)}catch{return String(e)}}function Dw(e){console.error(Fs(e)),process.exitCode=1}function Xt(e,t=Dw){let r=e;if(r[Vf])return;if(r[Vf]=!0,e.run){let o=e.run;e.run=async(...n)=>{try{return await o(...n)}catch(i){t(i)}}}if(!e.subCommands||typeof e.subCommands!=="object")return;for(let o of Object.values(e.subCommands))if(o&&typeof o==="object")Xt(o,t)}function j(e){let t;return()=>t??=e().then((r)=>{let o=rb(r);return Xt(o),o}).catch((r)=>{throw t=void 0,r})}function rb(e){let t={...e},r=t.subCommands;if(r&&typeof r==="object")t.subCommands=Object.fromEntries(Object.entries(r).map(([o,n])=>[o,n&&typeof n==="object"?rb(n):n]));return t}var Pt=E({meta:{name:"kuber",version:"2.5.1",description:"Docker Compose -> K8s translation layer"},args:{config:{type:"string",description:"Path to a kuber configuration file"}},subCommands:{audit:j(()=>Promise.resolve().then(() => (um(),{})).then((e)=>ev)),ci:j(()=>Promise.resolve().then(() => (py(),{})).then((e)=>dA)),db:j(()=>Promise.resolve().then(() => (dy(),{})).then((e)=>gA)),down:j(()=>Promise.resolve().then(() => (fy(),{})).then((e)=>bA)),export:j(()=>Promise.resolve().then(() => (gy(),{})).then((e)=>xA)),exec:j(()=>Promise.resolve().then(() => (wy(),{})).then((e)=>kA)),logs:j(()=>Promise.resolve().then(() => ($y(),{})).then((e)=>RA)),maintenance:j(()=>Promise.resolve().then(() => (ky(),{})).then((e)=>LA)),login:j(()=>Promise.resolve().then(() => (vn(),{})).then((e)=>jA)),logout:j(()=>Promise.resolve().then(() => (vn(),{})).then((e)=>ZA)),operations:j(()=>Promise.resolve().then(() => (Cy(),{})).then((e)=>JA)),ps:j(()=>Promise.resolve().then(() => (Oy(),{})).then((e)=>tk)),restart:j(()=>Promise.resolve().then(() => (Iy(),{})).then((e)=>ok)),rollback:j(()=>Promise.resolve().then(() => (By(),{})).then((e)=>ik)),s3:j(()=>Promise.resolve().then(() => (Dy(),{})).then((e)=>dk)),start:j(()=>Promise.resolve().then(() => (Ny(),{})).then((e)=>fk)),stop:j(()=>Promise.resolve().then(() => (Ly(),{})).then((e)=>hk)),up:j(()=>Promise.resolve().then(() => (_n(),{})).then((e)=>cA)),users:j(()=>Promise.resolve().then(() => (qy(),{})).then((e)=>Ok)),trust:j(()=>Promise.resolve().then(() => (Qy(),{})).then((e)=>Dk)),whoami:j(()=>Promise.resolve().then(() => (vn(),{})).then((e)=>qA))}}),tb;function ob(){return tb??=(async()=>{let e=Pt.subCommands;if(e&&typeof e!=="function")Pt.subCommands=Object.fromEntries(await Promise.all(Object.entries(e).map(async([r,o])=>[r,typeof o==="function"?await o():await o])));await Promise.resolve().then(() => eb());return Xy(Pt)})(),tb}ee();Ro();async function jk(){let{configPath:e,rawArgs:t}=pm(process.argv.slice(2));if(t[0]==="fuck")t[0]="rollback";if(t.length===0||t[0]==="complete"||t[0]==="--help"||t[0]==="-h")await ob();Xt(Pt);let r=vc(Pt),o=new Set(["login","logout","whoami","maintenance"]);if(t[0]&&o.has(t[0])){await r({rawArgs:t});return}await wm(()=>r({rawArgs:t}),e)}jk().catch((e)=>{console.error(Fs(e)),process.exitCode=1});
918
+ `);return t&&t.trim().length>0?t:e.message}try{return JSON.stringify(e,null,2)}catch{return String(e)}}function Dw(e){console.error(Fs(e)),process.exitCode=1}function Xt(e,t=Dw){let r=e;if(r[Vf])return;if(r[Vf]=!0,e.run){let o=e.run;e.run=async(...n)=>{try{return await o(...n)}catch(i){t(i)}}}if(!e.subCommands||typeof e.subCommands!=="object")return;for(let o of Object.values(e.subCommands))if(o&&typeof o==="object")Xt(o,t)}function j(e){let t;return()=>t??=e().then((r)=>{let o=rb(r);return Xt(o),o}).catch((r)=>{throw t=void 0,r})}function rb(e){let t={...e},r=t.subCommands;if(r&&typeof r==="object")t.subCommands=Object.fromEntries(Object.entries(r).map(([o,n])=>[o,n&&typeof n==="object"?rb(n):n]));return t}var Pt=E({meta:{name:"kuber",version:"2.5.2",description:"Docker Compose -> K8s translation layer"},args:{config:{type:"string",description:"Path to a kuber configuration file"}},subCommands:{audit:j(()=>Promise.resolve().then(() => (um(),{})).then((e)=>ev)),ci:j(()=>Promise.resolve().then(() => (py(),{})).then((e)=>dA)),db:j(()=>Promise.resolve().then(() => (dy(),{})).then((e)=>gA)),down:j(()=>Promise.resolve().then(() => (fy(),{})).then((e)=>bA)),export:j(()=>Promise.resolve().then(() => (gy(),{})).then((e)=>xA)),exec:j(()=>Promise.resolve().then(() => (wy(),{})).then((e)=>kA)),logs:j(()=>Promise.resolve().then(() => ($y(),{})).then((e)=>RA)),maintenance:j(()=>Promise.resolve().then(() => (ky(),{})).then((e)=>LA)),login:j(()=>Promise.resolve().then(() => (vn(),{})).then((e)=>jA)),logout:j(()=>Promise.resolve().then(() => (vn(),{})).then((e)=>ZA)),operations:j(()=>Promise.resolve().then(() => (Cy(),{})).then((e)=>JA)),ps:j(()=>Promise.resolve().then(() => (Oy(),{})).then((e)=>tk)),restart:j(()=>Promise.resolve().then(() => (Iy(),{})).then((e)=>ok)),rollback:j(()=>Promise.resolve().then(() => (By(),{})).then((e)=>ik)),s3:j(()=>Promise.resolve().then(() => (Dy(),{})).then((e)=>dk)),start:j(()=>Promise.resolve().then(() => (Ny(),{})).then((e)=>fk)),stop:j(()=>Promise.resolve().then(() => (Ly(),{})).then((e)=>hk)),up:j(()=>Promise.resolve().then(() => (_n(),{})).then((e)=>cA)),users:j(()=>Promise.resolve().then(() => (qy(),{})).then((e)=>Ok)),trust:j(()=>Promise.resolve().then(() => (Qy(),{})).then((e)=>Dk)),whoami:j(()=>Promise.resolve().then(() => (vn(),{})).then((e)=>qA))}}),tb;function ob(){return tb??=(async()=>{let e=Pt.subCommands;if(e&&typeof e!=="function")Pt.subCommands=Object.fromEntries(await Promise.all(Object.entries(e).map(async([r,o])=>[r,typeof o==="function"?await o():await o])));await Promise.resolve().then(() => eb());return Xy(Pt)})(),tb}ee();Ro();async function jk(){let{configPath:e,rawArgs:t}=pm(process.argv.slice(2));if(t[0]==="fuck")t[0]="rollback";if(t.length===0||t[0]==="complete"||t[0]==="--help"||t[0]==="-h")await ob();Xt(Pt);let r=vc(Pt),o=new Set(["login","logout","whoami","maintenance"]);if(t[0]&&o.has(t[0])){await r({rawArgs:t});return}await wm(()=>r({rawArgs:t}),e)}jk().catch((e)=>{console.error(Fs(e)),process.exitCode=1});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dmgnr/kuber",
3
- "version": "2.5.1",
3
+ "version": "2.5.2",
4
4
  "description": "Docker Compose to Kubernetes translation layer",
5
5
  "bin": {
6
6
  "kuber": "dist/index.js"